Teaching Microprocessor Systems Design Using a Soc and Embedded Linux Platform 1

Teaching Microprocessor Systems Design Using a Soc and Embedded Linux Platform 1

Teaching Microprocessor Systems Design Using a SoC and Embedded Linux Platform 1 Yann-Hang Lee and Aung Oo Department of Computer Science & Engineering Arizona State University [email protected], [email protected] system and applications course. In the course, students Abstract develop assembly language programs to control In traditional microprocessor systems design courses, peripherals, handle interrupts, and perform I/O operations. students learn to develop assembly language programs to Then students perform experiments with a target single- control peripherals, handle interrupts, and perform I/O board microprocessor system integrated with typical operations. We adopt a 32-bit StrongARM architecture on interface circuits such as programmable timers, serial the Motorola MX1ADS board with Embedded Linux to ports and parallel ports. Unfortunately, this approach fails present a modern microprocessor system design course. to keep pace with industry technology. This lag is With this new platform, we use a high-level language to prompted by the advent of rapid prototyping development develop projects that accelerate the students’ learning of microelectronic systems that includes: curve. Embedded Linux also provides the necessary a. SoC-based platforms for embedded applications: flexibility and tool set required for students to debug their The system-on-a-chip (SoC) devices have made great own projects. Our students' responded very positively to progress along with the ever-growing number of this change. They were excited about the renewed course transistors that can be integrated on a chip. structure, the updated learning environment, and the b. Abundant I/O interfaces: Besides programmable challenging projects. timers, serial ports, and parallel ports, there are several new I/O standards designed for human interfaces, multimedia, networking, and inter-IC/device 1. Introduction communication. Embedded systems are designed for dedicated c. I/O programming with high-level languages: For applications running in control systems. The unique software portability, modularity, and readability, high- feature of such systems is the capability to perform timely level programming languages have been used in all levels and predictable operations in response to concurrent of software development. An appropriate use of requests arriving from the external environment. To create programming languages and software structures often an effective embedded system one must properly employ leads to reusable embedded software. the appropriate system architecture, hardware/software interfaces, peripheral devices, and software components. Our traditional computer engineering curriculum also Currently, embedded systems companies are facing with a taught relatively outdated techniques in the subjects of shortage of engineers having the appropriate skills to software/hardware integration and interface. The respond to market opportunities [8]. Therefore, embedded “Microprocessor System Design” course emphasizes software engineering has emerged as a key element for assembly language programming and exercises only a curriculums in Computer Science, Computer Engineering, limited number of I/O interfaces. The course falls short in and Electrical Engineering at universities throughout the addressing state-of-the-art interfacing technology and world. emerging applications. To teach the subject of software/hardware integration In our curriculum development project sponsored by and I/O interfaces, undergraduate computer science and the NSF EIA program, we redesigned the microprocessor engineering programs incorporate a microprocessor system design class. Our goals were to provide a learning environment which aligned with emerging technology and improved the effectiveness of instruction. We also 1 This course development project is supported in part by NSF developed a laboratory environment which incorporated Educational Innovation Grant EIA-0122600, the Consortium for cutting-edge programming approaches to manage Embedded and Inter-Networking Technologies (CEINT), and hardware components in SoC platforms. This renewed Motorola University Program. course goes beyond the inclusion of various interfaces and devices. The course focuses on the appropriate software structures using a mixture of high-level and assembly tooth technology, USB, and CMOS sensors were left for language programming, I/O operations in modern more advanced courses in the sequence. operating systems, and reusable software components. Assembly language teaches the students about the In this paper, we will explore the challenges and detailed architecture of the hardware. This gives students successes we encountered in implementing this new an appreciation for high level constructs implemented in microprocessor system design class. The course serves as assembly language [2]. However, implementing all the first of three embedded system courses in our software programs in assembly language neither practical curriculum. Section 2 presents background information on nor desired. In fact, assembly-language programming is the embedded system curriculum at Arizona State no longer the best choice for developing embedded University (ASU). In Section 3, we will present the new systems, due to the availability of excellent compilers and course design followed by the course objectives, the the rising complexity of software projects [6][9]. course material and the setup of the laboratory environment for programming projects. Section 4 will 3. Course Design cover some of our lessons learned and feedback from our 3.1. Course Objectives students. In Section 5 we conclude our discussion. The objectives of the course are to familiarize the 2. Background students with hardware-software interfaces, hardware designs of microprocessor systems and peripheral devices ASU, Motorola, and Intel formed a not-for-profit and their communication protocols. Students work at Consortium for Embedded and Inter-Networking acquiring technical knowledge and applying this Technologies (CEINT) in 2001 [3]. CEINT developed an knowledge to the development of programs for infrastructure to support a strong curriculum in embedded controlling peripheral devices and interfaces. Thus, the systems. The end product was a concentrated path in students learn to analyze and synthesize suitable solutions Computer Systems Engineering, which consisted of an for building integrated hardware/software systems capable Embedded Systems Development, Embedded Systems of interacting with external world. Engineering, and Embedded Systems Capstone course [1]. 3.2. Course Content We wanted to provide students with the opportunity to The revamped course places emphasis on learn practical development techniques using the software/hardware integration and I/O programming, the Embedded Systems Development course. To accomplish incorporation of the state-of-the-art SoC platforms, and this goal, we chose Motorola MX1ADS boards using emerging embedded system development tools. Our plan MontaVista’s HardHat Linux Toolkit. Although we is to gear the integration of hardware modules to construct discussed both assembly level and high level embedded systems and the programming models and programming development, C was the main language characteristics of various I/O interfaces and peripherals. used for developing projects. This particular combination The course syllabus is established as follows: of programming language, development environment, and microcontroller architecture is rare for an introductory Course Syllabus: Microprocessor System Design level embedded systems class. Course Goals: At the same time, the students were challenged to get • quickly up to speed on the fundamentals required to use Develop an understanding for using a CPU core as a the new development environment and tools. Most of the component in system-level design. • students did not have strong backgrounds in developing Develop the ability to integrate the CPU core with software for Linux. To lessen this steep learning curve, various interface units in embedded systems. we provided laboratory demonstrations and walked • Gain the necessary skills for programming and through simple development projects in small groups. debugging I/O operations to manage peripherals for We also provided online tutorials, sample Linux drivers, embedded applications. and low level C code examples for students to study. Major topics covered: In this course, we introduced students to memory • Introduction and review of instruction set and devices, memory controllers, buses, handling interrupts, assembly language programming, instruction DMA, timers, counters, UART, SPI, I2C, parallel I/O, execution cycle and timing (4 lectures) keypad, LCD, touch panels, and A/D - D/A converters. • C programming for embedded systems (2 lectures) The students also developed device drivers for timers, • Interrupts and I/O multiplexing (2 lectures) PWM, UART, gpio, and SPI eeprom as class projects. • Parallel I/O interface and signal handshaking (1 Other available features such as watchdog timer, blue lecture) • Timers and counters (2 lectures) processor with external interface circuits and devices. • Serial communication: UART, SPI, and I2C (4 While discussing LCD and touch panel controllers, the lectures) lectures also encompassed general raster display devices • Keypad and LCD interfaces (3 lectures) and A/D converters. • Transducers and sensors, touch panels, A/D-D/A After discussing the selected peripheral interfaces and converters (3 lectures)

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us