Home > Speakers >

Mohammed Billoo

Mohammed Billoo is Founder of MAB Labs, LLC. He has over 12 years of experience architecting, designing, implementing, and testing embedded software, with a core focus on embedded Linux. This includes custom board bring-up, writing custom device drivers, and writing application code. Mohammed also contributes to the Linux kernel and is an active participant in numerous open-source efforts. He is also an Adjunct Professor of Electrical Engineering at The Cooper Union for the Advancement of Science and Art, where he teaches courses in Digital Logic Design, Computer Architecture, and Advanced Computer Architecture. Mohammed received both his Bachelor's and Master's of Electrical Enginering from the same institution.

Hands-on With CUDA-C on a Nvidia Jetson Nano GPU

Available in 15 days, 0 hours and 20 minutes

The explosion of silicon density in the past decade has resulted in increased massive compute capabilities of modern-day microprocessors in power-efficient packages. Processors supporting trillions of floating point operations (TFLOPS) are now becoming widely available in smaller form factors. Software paradigms have also been created to leverage the underlying hardware. In this talk, Mohammed Billoo will introduce Nvidia's CUDA framework, targeting a variant of the C programming language. Care needs to be taken when implementing applications using CUDA-C. The underlying hardware, specifically the memory architecture and layout, need to be considered to ensure that the final implementation is performant. Mohammed will cover the following topics in this talk:

  • Architectural differences between GPUs and CPUs
  • Relevant applications for GPUs
  • CUDA-C overview and build process
  • CUDA-C code structure

Mohammed will conclude the talk with a hands-on demonstration of an image processing algorithm implemented in CUDA-C on a Nvidia Jetson Nano development kit. He will compare the performance of the CUDA-C implementation on the GPU against a naive implementation on a CPU.

Go to Session

An Introduction to The Zephyr Project RTOS

Status: Available Now

A Realtime Operating System (RTOS) is a staple of most embedded systems. The Zephyr Project RTOS is relatively young and borrows certain elements and paradigms from Linux that may stump experienced embedded software developers, who are accustomed to a more "traditional" RTOS.

This talk will introduce The Zephyr Project RTOS, demonstrating the similarities and differences between Zephyr and a traditional RTOS. The focus will be on how to use the data structures and paradigms offered by Zephyr to accomplish tasks common to most embedded systems. This talk will also highlight key differences that seasoned embedded software developers will need to keep in mind when incorporating Zephyr into their projects.

Topics Covered:

  • Navigating The Zephyr Project RTOS code base
  • Creating tasks 
  • Synchronizing data across tasks
  • Creating interrupt handlers
  • Incorporating peripherals
  • User space vs kernel space

Go to Session

Live Q&A - An Introduction to The Zephyr Project RTOS

Status: Available Now

Live Q&A with Mohammed Billoo for the talk titled An Introduction to The Zephyr Project RTOS

Go to Session

Getting Started with Zephyr RTOS

Status: Available Now

The Zephyr Project is rapidly emerging as a leading real-time operating system (RTOS). Commonly referred to as “Zephyr”, its vision is to be the premier RTOS for connected, resource-constrained devices. Zephyr integreates both open-source and security best practices to ensure a vendor-neutral, secure and reliable platform.

In this webinar, we delve into an introductory exploration of The Zephyr Project RTOS.  Attendees will gain insight into the fundamental elements of an RTOS and Zephyr’s implementation stands out. We will unpack the key components of Zephyr and offer a roadmap for getting comfortable navigating its codebase.

The session will discuss the intricacies of a Zephyr application, guiding attendees on how to craft their own application, using a “Hello World” application as a demonstration. Finally, we will discuss advanced topics, including how to gain in-depth insights into our firmware using the Memfault framework, which is built right into Zephyr.

Topics covered in this talk will include:

  • RTOS overview and review
  • The Zephyr Project architecture
  • The elements of a Zephyr application
  • Advanced “Hello World” demonstration
  • Firmware insights

Go to Session

Using QEMU to Get Started with Embedded Linux

Status: Available Now

Getting started with embedded Linux can be a daunting task due to the inherent complexity of the Linux kernel; it can also be costly, since generally any sort of driver development and testing requires hardware. QEMU can serve as an alternative to allow engineers to get started with embedded Linux with minimal cost.

In this workshop, Mohammed Billoo will walk through what QEMU is and the different workflows that it enables, with hands-on demonstrations that attendees can follow along. Demonstrations will include setting up QEMU to emulate an ARM-based machine on a x86-based host PC and launching into a terminal, using QEMU to step through the Linux kernel, and developing and testing a simple device driver with device emulation in QEMU.

This workshop has the following prerequisites:

  1. Install Ubuntu >= 18.04 on your PC (either on bare-metal or as a VM):
  2. Install qemu-system-arm (sudo apt-get install qemu-system-arm)
  3. Install your favorite text editor (e.g. nano, vim)
  4. Clone the buildroot repository on your Ubuntu installation by executing the following from the command line:    $> git clone git://git.buildroot.net/buildroot
  5. Clone the qemu repository on your Ubuntu installation by executing the following from the command line: $> git clone --depth 1 --branch v6.2.0 https://github.com/qemu/qemu.git
  6. Clone the Linux kernel repository on your Ubuntu installation by executing the following from the command line:  $> git clone --depth 1 --branch v5.17 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Go to Session

Using Visual Trace Diagnostics to Evaluate Linux User space and Kernel space Implementations

Status: Available Now

Developing performant implementations for Linux-based embedded systems can be difficult, due to the sheer complexity of the Linux kernel and the volume of processes and applications that generally exist on a Linux-based embedded system. For kernel space implementations, such as kernel modules, it is important to leverage the appropriate interfaces to the kernel and pay careful attention to the hardware interface. For user space applications, performance is key to ensure that the application can scale without substantial rework.

Software tracing can be an invaluable tool to ensure that an implementation is performant. It enables a developer to identify any anomalies that may exist while the system is running. While there exist numerous open-source utilities that can provide textual cues towards the performance of the implementation, they are generally not amenable to quickly identify any clear issues, due to the way the human brain operates.

Visual trace diagnostics can significantly reduce the time to identify anomalies in a Linux-based implementation. It leverages software tracing, but presents data in a manner that is easily consumed by the human brain. This results in quickly identifying and rectifying anomalies in an implementation.

Join Mohammed Billoo as he explores the different facets of visual trace diagnostics. His talk will consist of hands-on demonstrations that show the different elements of capturing and analyzing software traces on a Linux-based embedded system, in both user space and kernel space.

Go to Session

Live Q&A - Using Visual Trace Diagnostics to Evaluate Linux User space and Kernel space Implementations

Status: Available Now

Live Q&A with Mohammed Billoo for the theatre talk titled Using Visual Trace Diagnostics to Evaluate Linux User space and Kernel space Implementations

Go to Session

Yocto Project Hands-On with Toradex

Status: Available Now

If you don't already have an account on the Embedded Online Conference platform, you can register here and gain free access to this webinar.

It may be difficult for novice to intermediate Linux users and developers to get a fundamental understanding of the "Yocto Project", as it doesn't necessarily follow the same paradigms as traditional software development. Additionally, System on Module (SoM) vendors, such as Toradex, may apply their own customizations to the Yocto Project as part of their Board Support Package (BSP) that may require some additional understanding. 

In this webinar, we will take a hands-on look at the Yocto Project and how to get a BSP up and running.

Attendees will learn:

- The paradigm of the Yocto project

- The mindset that an engineer should have when working with a BSP based on Yocto

- The organization and structure of the BSP provided by Toradex. 

- Best practices engineers should follow when customizing a vendor-provided BSP to fit their custom hardware

This webinar will focus heavily on demos and examples targeting a Toradex Verdin iMX8M Mini on a Dahlia carrier board.

Go to Session

Live Q&A with Mohammed Billoo - Yocto Project Hands-On with Toradex

Status: Available Now

Live Q&A with Mohammed Billoo about the free webinar titled 'Yocto Project Hands-On with Toradex'

Go to Session

Getting Linux To Run On Your Custom Board (2020)

Status: Available Now

The ability of silicon vendors to pack more components and capability into a single silicon die has allowed these System On Chips (SoCs) to support Linux. In turn, developers have been able to quickly migrate their application to be deployed "to the edge" without significant rework. The main objective of this session is to provide embedded systems engineers an overview on the steps necessary to get Linux running on a custom board, issues they may face, and how to debug these issues. This session will provide an introduction to Linux and its value in embedded systems, and how it differs from "traditional" Linux that runs on desktops. This session will also discuss how Linux differs from other embedded software paradigms, such as "bare-metal" and RTOS-based application development.

Go to Session