MONDAY June 06, 10:30am - 12:00pm | 13AB
Henry Von Bank - Posedge Software, Inc., Rogers, MN
Simon Davidmann - Imperas Software Ltd., Thame, United Kingdom
Key topics: Linux for embedded systems, including SMP Linux. Driver development for Linux, both static and dynamic (Loadable Kernel Modules, or LKMs) drivers. Testing of Linux and drivers.
Linux has become the general purpose operating system of choice for embedded systems, and is almost always supported for high end SoCs developed by the semiconductor vendors. Most vendors use the open source Linux distribution, then build a custom distribution representing the device tree supported for the specific SoC, and including the necessary drivers for the peripherals on the SoC, as well as supporting other customizations and unique features. The operating system is complicated further with multicore processors and symmetric multiprocessor (SMP) Linux. Just because everyone supports Linux, does not make porting and bring up an easy task. To put it another way: Just because you get to the Linux prompt doesn’t mean everything is working.
This tutorial will be presented in three sections. In the first section (by Imagination Technologies), the various components of bringing up Linux on a new platform will be covered. These include the Bootrom, U-boot bootloader, Linus Kernel and Linux Buildroot. A walk-through of bringing up Linux on new hardware will be presented. The walk-through will also introduce the various tools used to assist in completing board bring-up easily.
Driver development is the focus of the second section of the tutorial (Posedge Software). An overview of development of both static and dynamic drivers (Loadable Kernel Modules, or LKMs) will be covered. A virtual platform environment will be used to highlight key points in the development methodology, including co-debug of driver software and peripheral hardware models.
The final section (Imperas) will discuss the development of a robust test environment using the virtual platform technology. The virtual platform provides a complementary approach to porting and bring up on hardware. The benefits of controllability, observability and repeatability for virtual platform use will be covered. Specific OS-aware tools will also be highlighted, plus other tools such as non-intrusive memory monitors and the use of software assertions and code and functional coverage techniques for the operating system and drivers.