Jacob Beningo
Jacob Beningo is an independent consultant and lecturer who specializes in the design of embedded software for resource constrained and low energy mobile devices. He has successfully completed projects across a number of industries including automotive, defense, medical and space. He enjoys developing and teaching real-time and reusable software development techniques using the latest methods and tools. He blogs for DesignNews.com about embedded system design techniques and challenges. Jacob holds Bachelor's degrees in Electrical Engineering, Physics and Mathematics from Central Michigan University and a Master's degree in Space Systems Engineering from the University of Michigan.
Getting Started with Embedded DevOps using Gitlab CI/CD Pipelines
Status: Available NowContinuous Integration and Continuous Delivery (CI/CD) have become critical tools to IoT edge device developers. In this workshop, participants will delve into the fundamentals of Embedded DevOps by designing and implementing their own CI/CD pipeline using Gitlab.
Attendees will gain practical experience in configuring build systems, designing a CI/CD pipeline, and implementing it. (At least as much as can be done in a few hours). We’ll explore how to containerize your build environment in Docker, so that you can easily integrate it into an embedded CI/CD pipeline. You’ll also learn how to use Visual Studio Code to seamlessly integrate your build processes within a single environment.
Attendees will walk away with a basic, but functional CI pipeline that they can easily scale to meet their needs.
Key topics covered in this workshop include:
- The role of DevOps in Edge and embedded system development
- CI/CD pipeline design for embedded systems
- Containerizing your build system in Docker
- Set up and deployment of CI/CD solutions
- Best practices and steps to go further
Rust for Embedded Developers: The Peripheral Access Crate
Status: Available NowThe C programming language has dominated embedded software development for the last 50 years. Despite other languages coming and going, C has withstood the winds of change. The latest language to challenge C’s dominance is Rust. Rust is a system programming language offering modern features, including memory safety.
In this session, we will explore the Rust programming language from an embedded developer’s perspective. We will look at the peripheral access crate (PAC), and examine how to develop low-level drivers. As an example, we’ll look at creating a blinky hello world application and then move on to a serial peripheral driver. Attendees will walk away, understanding the advantages and disadvantages of using Rust in an embedded system.
Topics covered in this talk will include:
- The Peripheral Access Crate (PAC)
- How to create a PAC
- Advantages and Disadvantages of Rust in embedded systems
- Rust fundamentals
- How Rust fits into the industry in the big picture
The Embedded Frontier: Modern Trends and Practices
Status: Available NowEmbedded systems development has dramatically changed over the last decade. Navigating today's trends and where you need to be tomorrow can impact whether you’ll be successful or struggle to deliver your products on time. The latest trends can lead to best practices that help you develop more reliable embedded devices faster and within customer budgets.
In this session, we will explore the current state of the embedded software industry, the trends, and the practices that are helping teams be successful. We will look at the dynamics between C, C++, and Rust adoption. The impact that AI and ML are having on how we develop and debug embedded systems. We’ll look at changes to how systems are architected and the improvements in build systems and lifecycle processes that help teams manage complexity.
Attendees will walk away, understanding where the industry is at today, where it’s going, and the changes they need to make to stay up to date.
Topics covered in this talk will include:
- Programming Language Trends
- AI & ML Development Techniques
- Lifecycle Automation with DevOps and CI/CD
- Build Systems and Configuration
- Testing and simulation
- Modern Software Architectures
Live Q&A - Rust for Embedded Developers: The Peripheral Access Crate
Status: Available NowLive Q&A with Jacob Beningo for the talk titled Rust for Embedded Developers: The Peripheral Access Crate
Rust for C Programmers
Status: Available NowIf you plan to attend and work through the hands-on materials, we recommend that you set up the following tools prior to the class:
1) Visit https://rustup.rs/ and follow the instructions to install Rust
2) Visit https://docs.rust-embedded.
- itmdump
- cargo-binutils
- arm-none-eabi-gdb
- OpenOCD
The C programming language has been a staple of embedded software development for 50 years. Many languages like Ada, C++, and others have attempted to usurp it, only to fail. Rust is a memory-safe systems programming language that has been gaining interest across a wide variety of industries. This workshop will introduce the Rust programming language for experienced C programmers.
The focus will be on highlighting the similarities and differences between the two languages, with an emphasis on showing how Rust can provide improved memory safety and performance without sacrificing the low-level control that C programmers are accustomed to. Attendees will learn the basics of Rust's syntax and standard library, as well as best practices for writing safe and efficient code in Rust. By the end of the workshop, participants will have a solid understanding of Rust and will be able to start using it in their own projects.
Example topics covered in this workshop include:
- Similarities and differences between C and Rust
- An introduction to the Rust toolchain
- Memory mapped I/O
- How to utilize peripheral access crate (PAC) and HAL crate
- Best practices for developing embedded applications in Rust
Examples and code walk throughs will use the STM32F3 Discovery board
Flight Software Design for Lunar Exploration: A Case Study
Status: Available NowA typical satellite flight computer will often directly control its propulsion system. Direct control, while convenient, adds hardware and software complexity to a flight computer system that is often already overburdened with duties. In the CAPSTONE mission to the moon, the Stellar Exploration Inc. propulsion module was used to uniquely decouple propulsive maneuvers from the flight computer to a propulsion controller.
This session will explore the techniques and tools employed to create robust flight software for Capstone's propulsion controller. Attendees will gain insight into modern development processes, tools, and techniques through real-world examples and learn how software architecture was broken down and implemented as a quasi-microservices architecture. Additionally, we will showcase how RTOS task code was modularized and how configuration tools were utilized to manage RTOS tasks automatically.
Topics covered in this talk will include:
- Software architecture best practices
- How to write mission configurable flight software
- Modern development software processes such as unit testing, DevOps, etc
- Flight software quality analysis
- Examples from CAPSTONE, an Artemis mission to Lunar orbit
Revolutionizing Embedded Systems with AI: A Discussion on the Latest Developments
Status: Available NowIn this panel, we will discuss how AI can enhance the design and implementation of embedded systems. Through this discussion, attendees will gain insights into the latest trends and developments in AI, as well as the challenges and opportunities for implementing AI in embedded systems and to assist in developing embedded systems.
The panelists will share their experiences, research findings, and best practices, providing valuable insights for professionals, academics, and researchers alike. Overall, this panel promises to be a thought-provoking and informative discussion on the cutting-edge developments in the intersection of AI and embedded systems.
Getting Started with Zephyr RTOS
Status: Available NowThe 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
Getting Started with Embedded DevOps using Gitlab CI/CD Pipelines
Status: Available NowContinuous Integration and Continuous Delivery (CI/CD) have become critical tools to IoT edge device developers. In this workshop, participants will delve into the fundamentals of Embedded DevOps by designing and implementing their own CI/CD pipeline using Gitlab.
Attendees will gain practical experience in configuring build systems, designing a CI/CD pipeline, and implementing it. (At least as much as can be done in a few hours). We’ll explore how to containerize your build environment in Docker, so that you can easily integrate it into an embedded CI/CD pipeline. You’ll also learn how to use Visual Studio Code to seamlessly integrate your build processes within a single environment.
Attendees will walk away with a basic, but functional CI pipeline that they can easily scale to meet their needs.
Key topics covered in this workshop include:
- The role of DevOps in Edge and embedded system development
- CI/CD pipeline design for embedded systems
- Containerizing your build system in Docker
- Set up and deployment of CI/CD solutions
- Best practices and steps to go further
Successful Embedded Software Design
Status: Available NowThe modern embedded software team has a lot of challenges to overcome to successfully deliver software. Today’s systems are complex and require a careful balance between the software architecture design, development processes, and implementation. Failure to do so results in embedded software projects that are delivered late, over budget, and buggy.
In this session, we will explore modern firmware development techniques and processes that will help you improve how you design, build, and deploy your embedded software.
Topics covered in this session include:
- How to define your embedded software design philosophy
- The software architecture design process
- Software domains
- Application Modeling
- Introduction to the modern embedded software build processes
- The build process
- CI/CD for Embedded Engineers
- Tips and tricks for successful implementation
- Getting process buy-in at all business levels
Attendees will learn critical concepts and processes that they can immediately apply to their own development cycles. Attendees will also see examples on modern build system set ups, CI/CD, and more.
MCU Driver Design Techniques
Status: Available NowDriver design is still a critical need in nearly every system whether it’s to improve access to a microcontroller peripheral or interface to an external chip. Designing drivers that meet performance, scalability, and reuse requirements can be challenging. In this workshop, we will explore various driver design techniques and walk through the design of both “internal and external” drivers on a microcontroller-based system.
Topics covered in this workshop:
- Characteristics of good drivers
- The software stack-up
- API Design
- Peripheral Driver Design and Implementation
- External device driver design and implementation
- C/C++ Driver Techniques
This workshop is designed to be interactive. There will be generic hands-on examples that can be applied to nearly any microcontroller-based development board.
Live Q&A - Successful Embedded Software Design
Status: Available NowLive Q&A with Jacob Beningo for the talk titled Successful Embedded Software Design
The State of the RTOS
Status: Available NowAn awesome discussion between RTOS experts on where are RTOS is today and where it's going into the future.
An opportunity to ask your questions about RTOS application design.
Selecting the Right Microcontroller for your Embedded Application
Status: Available NowSelecting a microcontroller can be an intimidating endeavor. With dozens of chip suppliers and thousands of microcontrollers to choose from, how on Earth is someone supposed to select the one that best fits their application needs?
In this session, we will explore how to winnow down the 73,000+ microcontroller options down to a manageable few and select the microcontroller that best fits your application and business needs. We will examine the process developers should follow to select a microcontroller that goes beyond the hardware capabilities and focuses on picking a platform solution that provides the right hardware, software frameworks and improves development productivity.
Topics Discussed in this Webinar Include:
- The dramatic growth of the microcontroller industry
- Microcontroller hardware architectures
- The role of software in microcontroller selection
- The microcontroller selection process
- Avoiding supply chain constraints
- Tips and tricks for successful microcontroller selection
Building IoT Machine Learning Applications using the Raspberry Pi Pico
Status: Available NowMachine Learning is finding its way into various microcontroller-based IoT devices. Unfortunately, embedded software developers typically aren’t experienced in machine learning, making designing these new device types challenging.
In this workshop, attendees will learn hands-on about machine learning using the inexpensive Raspberry Pi Pico. We will introduce machine learning concepts and how they affect embedded software developers. Attendees will then get the opportunity to collect their dataset, train, and deploy a machine-learning model to their Raspberry Pi Pico.
Topics covered in this session include:
- Introduction to machine learning
- A Raspberry Pi Pico overview
- Hands-on data collection and model training
- Model validation, testing, and deployment
- Next steps
The hands-on portion is optional, but if you wish to participate, the following hardware will be required:
- https://www.digikey.com/en/products/detail/raspberry-pi/SC0915/13624793
- https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/105020012/5973992
- https://www.digikey.com/en/products/detail/seeed-technology-co-ltd/103100142/13688265
- https://www.digikey.com/en/products/detail/te-connectivity-amp-connectors/5-826936-0/2276291
We will discuss several machine learning frameworks and tools, but the hands-on piece will use Edge Impulse Studio.
Best Practices for RTOS Application Design
Status: Available NowReal-time Operating Systems (RTOS) have been finding their way into nearly every embedded system both connected and disconnected. They provide a convenient paradigm for designing flexible and scalable systems, interacting with hardware, scheduling tasks and many other capabilities. The problem though is that RTOS best practices are not well documented and even seasoned developers can run into costly and time-consuming issues that could have been avoided.
In this session, Jacob Beningo will walk attendees through best practices for RTOS application design such as:
- Decomposing an application into tasks
- How to set task priorities
- Analyzing applications data flow
- Useful design patterns handling events, interrupts and initializing tasks
RTOS Design and Debugging Techniques Hands-on
Status: Available NowReal-time operating systems (RTOS) have found their way into nearly every embedded system. The problem though is that an RTOS can often complicate implementation, increase module coupling and make debugging a nightmare.
In this workshop, Jacob Beningo will walk attendees through RTOS implementation and debugging techniques that will help developers accelerate their design cycle and implement more robust and flexible design techniques. Attendees will learn hands-on about topics such as:
- How to initialize tasks
- How to properly set task stack size and monitor for stack overflows
- Decouple application code from the RTOS
- Properly protect shared resources
- Minimize response time for system events
- Perform application tracing and performance analysis
Additional topics and details about specifics boards and RTOS will be provided closer to the conference.
Live Q&A - Best Practices for RTOS Application Design
Status: Available NowLive Q&A with Jacob Beningo for the talk titled Best Practices for RTOS Application Design
Getting Started with Azure RTOS Using STM32 MCUs
Status: Available NowIoT Edge devices need a robust, secure, real-time operating system that simplifies connecting to the cloud. In this webinar, attendees will learn how to leverage Azure RTOS to securely connect to Azure Cloud and view hands-on demonstrations using the STM32L4 Discovery board.
Join us to gain an understanding of:
- Real-time Operating Systems (RTOS)
- Azure RTOS
- Deploying Azure RTOS to the STM32
- Connecting an embedded system to Azure Cloud
- Tracing RTOS applications using Percepio Tracealyzer
Live Q&A with Jacob Beningo and Kristoffer Martinsson - Getting Started with Azure RTOS Using STM32 MCUs
Status: Available NowLive Q&A session with Jacob Beningo and Kristoffer Martinsson following the release of the webinar titled 'Getting Started with Azure RTOS Using STM32 MCUs'
Live Q&A with Jacob Beningo and Kristoffer Martinsson - Getting Started with Azure RTOS Using STM32 MCUs
Status: Available NowLive Q&A session with Jacob Beningo and Kristoffer Martinsson following the release of the webinar titled 'Getting Started with Azure RTOS Using STM32 MCUs'
Tips and Tricks for Designing Real-time IoT Systems
Status: Available NowIoT devices are becoming more complex and compute-intensive with every passing month. Keeping up with customer needs and requirements requires a design that is not just updatable and robust but also scalable and configurable.
In this session, we will explore practical tips and tricks for designing real-time IoT systems. Major topics that we will discuss include:
- Challenges facing IoT Developers
- Software architecture design
- Identifying and leveraging execution domains
- Device security
- Low-power design techniques
Tips and Tricks for Designing Real-time IoT Systems
Status: Available NowIoT devices are becoming more complex and compute-intensive with every passing month. Keeping up with customer needs and requirements requires a design that is not just updatable and robust but also scalable and configurable.
In this session, we will explore practical tips and tricks for designing real-time IoT systems. Major topics that we will discuss include:
- Challenges facing IoT Developers
- Software architecture design
- Identifying and leveraging execution domains
- Device security
Best Practices for Developing Real-time Embedded Systems (2020)
Status: Available NowDevelopment teams are always under pressure to deliver faster and at lower costs, but this is becoming more challenging as system complexity has risen exponentially with features for IoT and Machine Learning. The increased complexity can easily handcuff a development team and lead to not just longer development cycles with higher costs but also lower quality products.
In this session, we will explore best practices for developing real-time embedded systems that will help the modern developer stay on track and produce a quality product within their development cycle. We will explore best practices ranging from how to properly architect a system for scalability, how to manage a development cycle, secure and test a system. We will also discuss best practices for using frameworks and open source software.
Securing the IoT from Chip to Cloud:An Application Guide to Applying Platform Security Architecture (PSA) Principles (2020)
Status: Available NowWith the explosive growth in the Internet of Things (IoT) and the number of devices soaring, security is critical maintain device integrity and protect user privacy.However, designing consistent security across connected devices can be a minefield to navigate and implementation can be costly.Using a smart door lock as an example, in this webinar, attendees will learn how to design security from the ground up using PSA principles and guidelines with a PSoC® 64 secure MCU from Cypress Semiconductor.
Attendees will walk away with the best practices to develop their own security solutions.In addition, the importance of secure device management throughout the IoT products lifecycle will also be reviewed.
Topics Covered in this Webinar Include:
- Developing a threat model and Defining security counter measures
- Maintaining asset security through hardware architecture and security IP
- Implementing trusted boot and Secure application partitioning
- Using Trusted Firmware-M to isolate security critical functionality from non-secure code
- Leveraging the Arm Pelion Secure IoT Device Management Platform for full device lifecycle management (design, onboard, provision, secure, update, manage, etc.)
2020 Embedded Online Conference Teaser (2020)
Status: Available NowThis is it! The 2020 Embedded Online Conference is just around the corner and here's a short teaser.
Developing Reusable Firmware for MCUs (2020)
Status: Available NowOnce upon a time, firmware developers wrote code that was tightly coupled, spaghetti code that was fit for a single purpose and nothing else. That has changed! The ability to reuse embedded software has the potential to decrease time to market, decrease costs and prevent teams from reinventing the wheel.
In this session, we will explore how to develop reusable firmware for microcontroller-based systems. We will explore reusable and portable firmware best practices, software architecture, how to create abstractions and walk through an example.
Mycropython Projects (2020)
Status: Available NowIn this session, embedded systems consultant and author Jacob Beningo discusses MicroPython and how it is being used today to build products. Jacob also provides an overview of his new book MicroPython projects and demonstrates a gesture controller written completely in MicroPython.
Live Discussion - Best Practices for Developing Real-time Embedded Systems (2020)
Status: Available NowCouldn't attend this zoom meeting? No worries, here's a recording.
Best Practices for Designing IoT Edge Devices (2020)
Status: Available NowDevelopment teams are always under pressure to deliver faster and at lower costs, but this is becoming more challenging as system complexity has risen exponentially with features for IoT and Machine Learning. The increased complexity can easily handcuff a development team and lead to not just longer development cycles with higher costs but also lower quality products.
In this session, we will explore best practices for developing real-time embedded systems that will help the modern developer stay on track and produce a quality product within their development cycle. We will explore best practices ranging from how to properly architect a system for scalability, how to manage a development cycle, secure and test a system. We will also discuss best practices for using frameworks and open-source software.