Forest vs Trees – Our Experience of Teaching Embedded System
Embedded computer systems are changing more often than other computing environments since the scope of their application domain is expanding. In the past, embedded system development was largely focused on 8-bit, standalone systems written directly in assembly language. These systems were characterized by slow CPUs (Central Processing Unit), kilobytes of memory, and limited peripheral devices on the chip. Now they are embracing ever-widening application domains to include not only 8-bit standalone systems but real-time, networked, Operating-System based, wireless systems with megabytes of memory and 32-bit CPUs, with very rich peripheral devices such as I/O ports, timers, PWM (Pulse-Width Modulation), UART (Universal Asynchronous Receiver/Transmitter), SPI(Serial Peripheral Interface), I2C, A/D, D/A, CAN(Controller Area Bus), USB(Universal Serial Bus), Ethernet and on-chip flash memory programming, etc. The datasheet of those CPUs are several hundred pages, or even more than a thousand pages. In the past, the traditional teaching approach was focused on the function illustrations of various peripheral registers such as data register, control registers, status registers, and simple program techniques, etc. However, as there are thousands of peripheral registers on current 32-bit microcontrollers, this approach will not work very well, otherwise you will not see the forest, but only see the details of registers, just like trees in a forest and are overwhelmed by the detailed register functions. In this paper, we shared our experience of teaching embedded system using available industry firmware libraries, industry standards, RTOS (Real-Time Operating System), and RTOS Middleware etc. First, one peripheral (General Purpose Input/Output, for example) is chosen to illustrate some features of the CPU, and then the driver library, industry standard library, operating system, etc. are covered to explain the functions registers, input/output parameters of peripherals, programming techniques using RTOS, etc. This approach not only helps students to see the trees, but also more importantly, it lets them to see the big picture and use them in the embedded system design projects.