Overview
Explore embedded software development techniques using QEmu for rapid prototyping and testing in this conference talk from code::dive 2021. Discover how to bridge the gap between development and target architectures, addressing challenges like toolchain differences, memory usage, and hardware-specific operations. Learn to implement QEmu-based development workflows that closely mimic target hardware, enabling early issue detection and smoother development cycles. Gain insights into running Cortex-M simulations, handling peripherals, implementing interrupt handlers, and utilizing semihosting. Delve into topics such as device communication, nanomessage libraries, and external device interfaces. Understand QEmu's supported architectures, compare with real hardware setups, and explore application structures for efficient embedded development. Benefit from speaker Maciej Nowak's decade of experience in software development, including his work on satellite flight software and involvement with the PW-Sat2 operations team.
Syllabus
Intro
Background
Challenges
Single toolchain
Running cortexm
Problems with cortexm
Problems with peripherals
Peripherals code
Work and interrupt handler
Semihosting
Devices
Communication
Nanomessage
External Device Interface
EDI usage
nanomessage library
nanomessage socket
IO
Messages
CortexM
Running QEmu
Supported architectures
Real hardware
monolithic application
runners
peripherals
application structure
github
outro
Taught by
code::dive conference