130 likes | 423 Views
Teaching Microprocessor Systems Design Using a SoC and Embedded Linux Platform . Yann-Hang Lee and Aung Oo Computer Science and Engineering Department Arizona State University yhlee@asu.edu. Microprocessor System Course. A typical Computer Engineering course (core)
E N D
Teaching Microprocessor Systems Design Using a SoC and Embedded Linux Platform Yann-Hang Lee and Aung Oo Computer Science and Engineering Department Arizona State University yhlee@asu.edu Real-time Embedded System Lab, ASU
Microprocessor System Course • A typical Computer Engineering course (core) • Organization of microprocessor systems (8 or 16-bit microcontrollers, such as 8051, HC11, HC12, etc.) • Input/Output interfaces and peripherals • Programmable timer • Serial (UART) and parallel ports • Data acquisition (A/D and D/A) • ROM monitor to provide a simple execution and debugging environment • Assembly programming • Single execution thread with ISRs Real-time Embedded System Lab, ASU
SoC-based platforms one or more processor cores memory-address mapped I/O IP blocks Intel PXA, Motorola Dragonball, TI OMAP Abundant I/O interfaces: human interfaces, multimedia, networking, and inter-IC/device communication. 5 JTAG ARM920T 7 USBd ARM9TDMI 4 6 Bootstrap MS/SD UART1 20 8 A/D UART2 Bus Arbiter I Cache D Cache 13 BTA RTC INTC MMU 2 5 CSPI I/O pads Timer I/O pads 6 AHB SSI/I2S WatchDog AIPI#1 AIPI#2 1 2 I2C PWM 14 DMA (11 chnl) CSI 25 LCDC GPIO Bus CTL MMA 6 SIM 92 EIM & SDRAMC 5 DPLLx2 eSRAM (128KB) Emerging Embedded Systems Real-time Embedded System Lab, ASU
Emerging Embedded Systems • I/O programming using high-level languages • For portability, modularity, and readability. • Appropriate use of programming languages and software structures • Operating systems on target boards Real-time Embedded System Lab, ASU
A New Course on Microprocessor Systems • Course Objectives: to develop • an understanding for using a CPU core in system-level design. • the ability to integrate CPU core with various interface units. • the skills for programming and debugging I/O operations to manage peripherals for embedded applications. • Major topics covered: • Introduction and review of ISA and assembly language (4 lectures) • C programming for embedded systems (2 lectures) • Interrupts and I/O multiplexing (2 lectures) • Parallel I/O interface and signal handshaking (1 lecture) • Timers and counters (2 lectures) • Serial communication: UART, SPI, and I2C (4 lectures) • LCD interfaces (3 lectures) • Transducers and sensors, touch panels, A/D-D/A converters (3 lectures) • Memory devices, SRAM, SDRAM, and flash memory(3 lectures) • Buses, access arbitration, timing, and bus protocols (2 lectures) Real-time Embedded System Lab, ASU
Serial port Power Supply Multi-ICE probe BlueTooth RF I/F Memory Extension slot LCD/Touch Panel Camera I/F Development Platforms • Hardware • Freescale’s MXLADS (with Dragonball MXL processor) • Peripherals: • serial mouse, LCD, magnetic card reader, buzzer • EEPROM, digital potentiometer, ADC Real-time Embedded System Lab, ASU
ARM elf gcc cross-compiler GDB debugger Applications GDB Server MontaVista IDE Host PC workstation Target MXLADS Embedded Linux cygwin DB MX1 ADS board support package Windows Development Platforms • Software • ARM SDT 2.02u (assembler, compiler, and ARMulator) • Linux tool chain from MontaVista Real-time Embedded System Lab, ASU
Development Projects • Introduction project • programming environment on a target development board. • Mixed C/C++ and assembly programming, calling conversion, instruction count measurement • Software to manage interfaces and peripherals • IO space as a part of kernel space • programs must run as kernel tasks • Develop loadable kernel modules as device drivers • Invoked by device file calls (open, close, read, write, and ioctl) • Students don’t have much experience with Linux kernel or system programming Real-time Embedded System Lab, ASU
A Pseudo Device Driver • To exercise kernel I/O address space and interrupts Real-time Embedded System Lab, ASU
Sample Projects • Midi file player • a driver to control PWM as a tone generator • a blocking call which returns once the play duration is over (interruptible_sleep_on and timer interrupt) • a main program to parse an input midi file and to invoke the driver for each note (frequency and duration) • Magnetic card reader • a card reader driver (bit streams input from general-purpose IO pins) • the ISR-driven approach for block data transfer (bit banging) and signal handlers • a driver for serial port (ioctl to configure UART) • a main program to read card information and send to serial port Real-time Embedded System Lab, ASU
Evaluation • Survey at the end of Fall 2004 • Summary in 5 categories Real-time Embedded System Lab, ASU
Conclusion • Re-tool the existing microprocessor system course • SoC platform • High-level language programming • IO management as a part of operating system • Didn’t abandon assembly language • to explain processor execution model • to interact with programs of multiple languages • to determine the tradeoffs of selecting a proper language • No textbook, manuals and data sheets are more than 2000 pages Real-time Embedded System Lab, ASU
Acknowledgement • NSF EIA program • Motorola Dragonball University Program • Embedded System Consortium (ASU, Intel, and Motorola) Real-time Embedded System Lab, ASU