CEC – Writing Portable and Robust Firmware in C

Course Overview:

The software development cycle is always a mad dash to the launch date. Firmware developers have their hands full architecture, design, implementation and testing. Starting from scratch is a herculean effort that is time consuming and no longer possible in today’s market places. This course will demonstrate how to write portable and robust C code that can decrease cost and time to market. Attendees will gain an understanding of portable C and robust firmware concepts along with detailed examples of how to implement critical tools such as Doxygen, PC-Lint and assertions.

CECDay 1 – Portable C Concepts
This session will introduce a subset of the C language and design techniques that are suitable for writing portable code. An STM32 Nucleo development kit utilizing a Cortex-M0+ will be used for example code. Attendees will walk away from this session with the knowledge of how to design software that can be reused through APIs and HALs.

Registration and Playback located here (May require login to access)

Day 2 – Doxygen and PC-Lint
There is a lot that goes on behind the scenes to ensure that a project is properly documented and that the code is checked for errors. In a fast paced environment these details are often ignored but are absolutely critical to robust product design. This session will examine how to use Doxygen to document code and also generate the code documentation for the developer. PC-Lint configuration and utilization will also be examined. Attendees will walk away with a deep understanding of how to use these two crucial development tools.

Registration and Playback located here (May require login to access)

Day 3 – UART Driver and STM32CubeMx
This session will examine how to create a UART driver that will be used in later sessions with printf and assert. Driver development can be greatly accelerated by using available vendor tools such as the STM32CubeMx toolset. The tool will be examined in detailed as part of the driver development exercise. Attendees will walk away with software examples on how to create a UART driver and an understanding of the STM32CubeMx tool.

Registration and Playback located here (May require login to access)

Day 4 – ASSERT and printf
The ASSERT macro is a critical component of embedded software development but an often under implemented and misunderstood tool. Using printf has also held a stigma that often leaves devlopers confused and hesitant. This session will walk attendees through how to setup these two tools and use them properly to help improve the reliability of their embedded system.

Registration and Playback located here (May require login to access)

Day 5 – Robust Firmware Concepts
There are many concepts that can be used to help increase the robustness of embedded software. This session will review a wide variety of them. An in depth look at watchdog design, stack monitoring and memory management will be explored. Attendees will walk away with the ability to implement a reliable watchdog and perform essential checks such as RAM and ROM testing.

Registration and Playback located here (May require login to access)

Course Resourses

  • Sign-Up for the Embedded Bytes Newsletter here
  • Embedded Software Design Techniques – An API Standard for MCU’s here
  • Embedded Software Design Techniques – API Standard Doxygen Templates here
  • Doxygen C Templates Download can be here
  • Course Source Code can be found here
  • EDN Blog Articles can be found here

Leave a Reply

Your email address will not be published. Required fields are marked *