Best Practices for Developing Real-time Embedded Systems
Presented by Jacob Beningo
Development 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.
Operating Systems for Embedded Applications
Presented by Colin Walls
Most modern embedded applications employ and operating system of some sort. We will look at how operating systems work - the scheduler and various services provided by an OS to the application code - and at the options open for OS selection. We will also compare the use of commercial, open source and in-house products.
Modern Embedded Software Goes Beyond the RTOS
Presented by Miro Samek
Some of the most difficult problems with real-time and embedded programing are related to concurrent code execution as well as code organization, which all too often degenerates into "spaghetti code". These problems are usually intermittent, subtle, hard-to-reproduce, hard-to-isolate, hard-to-debug, and hard-to-remove. They pose the highest risk to the project schedule.
This session presents a set of best practices of concurrent programming, which are collectively known as the active object (or actor) design pattern. In this pattern, applications are built from event-driven, non-blocking, asynchronous, encapsulated threads (active objects), with the internal behavior of each active object controlled by a state machine.
While active objects can be implemented manually on top of a traditional RTOS, a better way is to use an active object framework. You will see how this leads to inversion of control, enables architectural reuse, and allows the framework to automatically enforce the best practices.
In the second part, the session will introduce modern hierarchical state machines as the powerful "spaghetti reducers". You will see how state machines complement active objects and enable graphical modeling and automatic code generation.
The session will utilize hands-on demonstrations using EFM32 Pearl-Gecko ARM Cortex-M4 board, the QP/C real-time embedded framework and the QM modeling and code-generation tool.
Implementing a Simultaneous Localization and Mapping (SLAM) system for Robotics/Unmanned Vehicles
Presented by Mike Anderson
As robotics and unmanned vehicles like drones start to proliferate, many developers find that they need a means of fixing the device to a specific location and then have the device navigate to a destination while avoiding obstacles. In addition, we frequently want the device to create a map of the surrounding area for future reference. In order to most efficiently accomplish these goals, we need to create a SLAM for the device. In this session, we will discuss the various approaches and requirements for 3D SLAMs and how they are constructed. We will address implementations ranging from autonomous cars down to robots based on platforms such as the Raspberry Pi.
Developing embedded real-time applications with heterogeneous multiprocessing systems
Presented by Sergio Prado
There are a lot of embedded applications that have conflicting requirements like high throughput and data processing, responsive user interface, low-latency operations and determinism to handle hard real-time events. It is very hard (and most of the times impossible) to meet all these requirements with just a single processor.
A common approach to meet these conflicting requirements is using multiple heterogeneous processors, where a high-end processor takes care of general computing like network communication, user interface and data processing, and a low-end processor is responsible to handle low-latency and real-time events. This type of system is called Heterogeneous Multiprocessing System or HMP.
In this session, we will learn all the theory behind the development of embedded applications using heterogeneous multiprocessing systems and put into practice with hands-on demonstrations based on a board with a heterogeneous multicore SoC containing both a Cortex-A and a Cortex-M processor, capable of running multiple operating systems on the different cores.
In the hands-on demonstration, we will learn how to run an RTOS (FreeRTOS) in the Cortex-M processor to handle deterministic and real-time events and report them back to a full-featured OS (GNU/Linux) running on the Cortex-A. We will study how the communication between the cores works and use an implementation of the OpenAMP standard in the hands-on.
In this session, the attendees will understand how a heterogeneous multiprocessing system works and when to use it. They will also learn how to use a heterogeneous multicore SoC and run multiple operating systems on it, understanding how the communication between the cores are implemented in the hardware level, and learning how this communication is abstracted at the software level with the OpenAMP standard.
How Agile is Changing the Face of Embedded Software Development
Presented by Niall Cooling
This presentation is ideal for anyone who is either new to Agile, considering using Agile or even has experience in working with Agile methodologies and practices with embedded software or firmware developments.
It will clarify the Agile landscape, covering both process based aspects, such as Scrum and various techniques, including Test Driven Development (TDD) and some of the underlying foundation principles, such as Continuous Integration (CI).
As part of the discussion, we shall look at some of the modern-day tools that help apply Agile techniques(e.g. Docker) and finally look ahead to the current gaps and where embedded systems offer particular challenges to the use of Agile techniques.
Flexible and Layered Embedded Firmware through Test Driven Development (TDD)
Presented by Alexopoulos Ilias
Recent years the software industry has developed different methodologies with camps to support them many of them claiming better quality of work and speed. Embedded real-time firmware due to it's challenges makes adoption of these tools more difficult as we need to test systems interacting with the hardware that have timing constraints. Not all methods work well or there is often the question if the effort is worth the benefit.
In this session we will discuss the application of TDD,
- what is TDD and the difference with unit testing,
- example application of the method,
- how we can model the hardware registers transparently,
- how to tackle challenges porting to different architectures,
- using object oriented techniques for configurability
- the benefits and pitfalls of the method,
The session will be based on actual application of the method on real medium scale bare-bones systems projects.
Getting Linux To Run On Your Custom Board
Presented by Mohammed Billoo
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.
Practical Approach for High-End Embedded System Design
Presented by Khalil Rashid
Embedded system design is very challenging as it requires multi-disciplinary expertise in Hardware, Firmware and Software. Most of embedded systems developments ends up as a failed project or not delivering performance as planned initially.
This can be address by proper planning and selection of suitable hardware and software components. Also design goals and parameters to consider a very important to be evaluated before starting project like:
- Hardware Complexity
- Software Complexity
- Time to Market
- Development Cost
- Functional Safety and Security
- Feasible Solution
In this seminar, we will learn how to plan a complex Embedded System from hardware, firmware and software point of view. Furthermore, we will see how actually each part will be developed by utilizing Standard off the shelf components available. This makes design simple, cost effective, feature rich and most feasible for particular market.
Test-Driven Development for Embedded Software
Presented by James Grenning
You've heard about Test-Driven Development but have never tried it or don't quite get it. Test-Driven Development is an important design and problem solving technique that helps software developers improve product quality and the quality of their life. How? By preventing defects, protecting your code from unintended consequences, and giving you warning when your design starts to deteriorate.
In this presentation James describes the problems addressed by TDD. He will define TDD and show you a short example of TDD. He'll tell you some of the benefits you can expect from TDD as well as the challenges of applying TDD to embedded C and C++.
James Grenning is inviting you to a scheduled Zoom meeting.
Topic: TDD for Embedded Happy Hour Embedded Online Conference
Time: May 20, 2020 03:00 PM Eastern Time (US and Canada)
Every day, 2 occurrence(s)
May 20, 2020 03:00 PM
May 21, 2020 03:00 PM
Please download and import the following iCalendar (.ics) files to your calendar system.
Meeting ID: 824 6418 8187
One tap mobile
Dial by your location
+1 301 715 8592 US (Germantown)
+1 312 626 6799 US (Chicago)
+1 646 558 8656 US (New York)
+1 253 215 8782 US (Tacoma)
+1 346 248 7799 US (Houston)
+1 669 900 6833 US (San Jose)
Meeting ID: 824 6418 8187
Find your local number: https://us02web.zoom.us/u/
Tips and Tricks for Avoiding and Fixing Real-Time Issues
Presented by Olaf Schmidt
Today embedded systems are made up of a large number of hardware parts, SoC, CPU and networks. On the software side many layers of large software stacks, API and applications are used. The complexity of the systems is ever increasing. Most people set their focus on getting the multitude of functional requirements done. Functional requirements are what the customers sees in the first line.
But, hey, there are also temporal requirements in many use cases. Users expect a certain reaction time of their system. They don't care about complexity, well defined interfaces or big amounts of data being transferred. Press a button and immediately see a light switch on. In an autonomous vehicle the required time from recognizing an obstacle to making the decision to turning the steering wheel is only milliseconds. The requirements describe end-to-end timing in many cases. Data coming from an input has to be at output within a certain time. We call the data flow "event chain".
This talk will take you on a journey through a model-based approach. Using a model to design the system and its timing behavior has the big advantage, that it can be used in simulation. The simulation runs the model and shows the timing behavior of all components, busses, scheduling, end-to-end timing and so on. It is possible to try out different scenarios quickly and find the best configuration. In the talk we will look at both the system view and the device view. They have to be synchronized and contribute to the overall user experience. On the way timing requirements are formalized, evaluated and violation is reported. Timing requirements for individual parts of the systems like cores and software components can be derived from the model and simulation.
After determining the best configuration teams will spread out and start the implementation. Trace files, that contain the timing of the implementation are taken. The traces are tested against the timing requirements already defined in the design step. The adherence to all timing requirements can be check upon every step in the projects. Upcoming problems are found early.
Join me in the exciting journey of flashing the light of a car within the expected time.
How to avoid end of life from NAND correctable errors
Presented by Thom Denholm
Presented by TUXERA
Flash media is fabulous for most use cases, but heavy reads can cause correctable errors. Linux flash file systems actually shorten the life of the media when dealing with these errors. How does this change with multiple bits per cell, including recent QLC NAND? What other sorts of media management can help get the most lifetime out of your flash media based device?
This talk will cover these sorts of problems and impacts in detail, from flash file systems to SSDs and other NAND flash-based media. While we can't speak to what the firmware in your devices are doing, we have an excellent knowledge of what they should be doing, and also detail the sorts of conversations a system designer should have with their flash media vendors.
Voice-enabled IoT devices, everywhere
Presented by Brian Clinton
Presented by Arm
Following the success of Voice Assistant over Smart Speaker, a new breed of voice-enable devices are services are being developed which will enable massive dissemination of voice activation services, everywhere. Smart home, smart health and Industrial applications are some of the first that will benefit with deployment through smart home appliances, health assistants and smart manufacturing. This talk goes through a case study of a constrained IoT voice assistant implementation on an ultra low power, lost cost device. It describes the hardware and software functional blocks that is needed in order to perform voice recognition in harsh audio environments. It shows the benchmarks of analog front end processing and Keyword Spotting in the system. It explains the communication and security services integration, from the root of trust to cloud communication. Finally, it analyses what the future of voice and accompanying services and devices will look like what solutions will be needed.
Presented by Karim Yaghmour
Android's use in the automotive industry has been silently increasing over the past few years. While Android's use in a car inherits quite a few things from classic Embedded Android, there are several automotive-related additions to the Android Open Source Project (AOSP) that are worth a closer look. This session will cover the Car System Service, the internal Car system APIs, the built-in Car Apps, the car-related HIDLs and car-related specific features such as Exterior View System, Vehicle Properties, Audio, Power Management, wear leveling and boot time optimizations.
How to get started with Arm Cortex-M55 software development
Presented by Christopher Seidl
Presented by Arm
IoT and embedded developers can take advantage of an unprecedented uplift in energy-efficient machine learning and signal processing performance for next-generation voice, vision or vibration use cases with Arm's latest endpoint AI technologies; The Cortex-M55 processor, Arm's most AI-capable Cortex-M processor and the Ethos-U55, the industry's first micro neural microprocessor (microNPU) that's designed to work with Cortex-M processors.
These technologies can be developed in a unified software toolchain for the simplest and fastest development path for AI. Join this talk to be one the first to get started today to write optimized code for the exciting features these processors bring.
This talk will be a hands-on demo of the development flow available with Arm tools and will cover:
- New architectural features of the Cortex-M55 processor
- How to benchmark an application using Cycle Model
- How to run the application on an FPGA prototyping board
- How to optimize your code with Keil MDK debug features
How to Rapidly Develop IoT devices with Arm and AWS
Presented by Reinhard Keil
Presented by Arm
Arm Cortex-M processors have been shipped in more than 45 billion chips for a vast range of applications, from industrial sensors to wearables. This growth has exploded more so in the last few years due to the significant rise in connected products for diverse markets. AWS IoT provides broad and deep functionality, spanning the edge to the cloud, so customers can build IoT solutions for virtually any use case across a wide range of devices. With designers of IoT applications under extraordinary pressure to build innovative solutions quickly, affordably, and satisfy many design requirements, how can the IoT continue to scale across a growing number of use cases? The talk provides a tour of a simple path to developing secure Cortex-M based IoT devices with Arm and AWS, and how together, the collaboration provides choice and scalability for IoT developers.
Integrating NFC into your application: What you need to know
Presented by Dan Merino
Presented by STMicroelectronics
In this session we will show you how to overcome the most common design challenges in NFC integration to achieve optimal performance and fast time-to-market.
Near Field Communication (NFC) is a technology that uses magnetic field induction to enable contact-less data exchange between two compatible devices moved within close proximity to one another. While simple in concept, implementing a robust and high-performing NFC design can be daunting, as developers must first consider things like passing certifications, interoperability, shrinking size requirements, low power consumption, and development time.
In the session, we will start by exploring the most common NFC reader applications in today's fast-growing NFC market. We will discuss the principle design challenges faced by engineers, and how to resolve them using the ST25R3916 high-performance NFC universal reader.
This industry-leading device boasts a unique set of features including dynamic power output, automatic antenna tuning, noise suppression receiver, and low power wake up, which make it ideal for robust and efficient designs over a wide range of consumer and industrial NFC applications.
You will learn:
- the main challenges of designing an NFC reader and how to overcome them
- about the ST25R3916 high-performance NFC universal reader device
- how to exploit the device's unique features to design a best-in-class solution
Bridging the Gap of UI Design & Development
Presented by Antti Aaltonen
Presented by The QT Company
Demand to design and develop Interactive products is raising as they are coming more and more ubiquitous.
The presentation discusses what are the common pitfalls in product development and how to enable rapid, iterative product design while ensuring great user experience.
- Designing look AND feel of the product
- Validating and iterating the designs with real hardware
- Speeding up the development process and reducing the need for writing specifications
Why MISRA Matters!
Presented by Andrew Banks
Presented by LDRA
In this talk, Andrew Banks will discuss the importance of the static analysis in general, and the MISRA C/C++ Guidelines in particular, within Verification and Validation ("V&V") activities.
It will showcase common pitfalls that MISRA seeks to help avoid, and rationale behind some of the guidelines, while introducing the recent Amendment 2 to MISRA C:2012.
The presentation will also highlight why it is important to analyse and release "production" code.
Enabling Motor Control Across a Range of NXP MCUs with MCUXpresso and FreeMASTER Visualization Tools
Presented by Jaroslav Lepka
Presented by NXP
Join this session to explore the latest NXP motor control solutions, tools, and expert advice for creating cost-effective and energy-efficient motor control designs using NXP MCUs.
Deliver rich graphical UX without blowing your hardware costs
Presented by Aurindam Jana
Presented by The QT Company
Microcontrollers (MCUs) are ubiquitous in electronic appliances in consumer electronics, industrial automation, healthcare and the automotive industry, but the user experience of the user interfaces has been lagging behind. Users and operators expect smartphone-like user experiences with every screen they interact - a huge challenge for manufacturers to achieve. The desire to maintain existing supply chains and keeping the bill of materials low requires manufacturers to both improve the performance of their user interfaces while overcoming performance bottlenecks. Now, the most popular C++ development framework, Qt, is expanding its offering for the MCU market, with a new and lightweight implementation which enables the creation of high-performance user interfaces for the most low-end hardware.
What will you learn during this session?
- Display Resolutions supported by MCUs
- Key considerations for graphics on MCUs
- Deliver a smartphone-like User Interface with Qt
- Memory footprint and performance indicators