210 likes | 415 Views
Department of Mathematics, Statistics, and Computer Science. An Experimental Laboratory Environment for Teaching Embedded Hardware Systems. Dennis Brylow. Hardware Systems. What makes a good intro Hardware Systems course? Hands-on experience with hardware
E N D
Department of Mathematics, Statistics, and Computer Science An Experimental Laboratory Environment for Teaching Embedded Hardware Systems Dennis Brylow
Hardware Systems • What makes a good intro Hardware Systems course? • Hands-on experience with hardware • Hands-on experience with lowest levels of software • Focus on how hardware and software concerns are • interrelated. • Integration with rest of curriculum • There is no magic in the box!
Experimental Labs What goes into a good experimental computer systems laboratory environment? • Purdue XINU Laboratory: • Consoles • Booting • Rebooting
... • sread: .word 0 ! sectors read of current track • head: .word 0 ! current head • track: .word 0 ! current track • read_it: • mov al,setup_sects • inc al • mov sread,al • mov ax,es • test ax,#0x0fff • die: jne die ! es must be at 64kB boundary • xor bx,bx ! bx is starting address within segment • rp_read: • #ifdef __BIG_KERNEL__ • #define CALL_HIGHLOAD_KLUDGE .word 0x1eff,0x220 ! call far * bootsect_kludge • ! NOTE: as86 can't assemble this • CALL_HIGHLOAD_KLUDGE ! this is within setup.S • #else • mov ax,es • sub ax,#SYSSEG • #endif • cmp ax,syssize ! have we loaded all yet? • ... [Code GPLed under Linux]
The Solution • Need a coherent strategy to drive hands-on laboratory • work in Hardware Systems, Operating Systems, • perhaps extending to Embedded Systems, • Networking and Internetworking, Compilers, etc. • Flexible • Extensible • Hands-on • Modern • Challenging • Interesting • Inexpensive • Duplicable
Broadcom 5352 [Diagram courtesy Broadcom]
Programming Environment Standard C Language execution environment Obeys MIPS calling convention Buffered I/O getchar(), putchar(), printf() Starter I/O functions getInt(), printInt() Memory allocation malloc() and free() Also sleep() and halt(), process management, and interrupt facilities available.
Course Objectives • Principles • Major hardware components • Solve problems in Assembler • Platform-specific knowledge for later courses in O/S, networking, etc. • Development environment
Course Topics • Digital Logic, combinational and sequential • Data Representation • Processors and Pipelines • Instruction Sets, both RISC and CISC • Assembly and addressing modes • Activation Records • Memory and Storage, virtual memory and caching • I/O and busses • Interrupts
Assignments • Basic Assembler Operations • I/O maniulation • Functions and calling conventions • Recursion and Activation Records • Pointers and Memory • Device I/O • Interrupts
Future Work: • Embedded Systems Course, • Internetworking Course, • IP telephony • Real-time constructs, • Provable guarantees, • World Conquest...