Introduction to the course. Embedded Systems Programming. Embedded System - aims. This course aims to introduce you to embedded systems programming What are embedded systems? Small systems Low power Portable Part of large system Real-time features. Embedded System - features.
Introduction to the course Embedded Systems Programming
Embedded System - aims • This course aims to introduce you to embedded systems programming • What are embedded systems? • Small systems • Low power • Portable • Part of large system • Real-time features
Embedded System - features • Embedded software has different characteristics than more mainstream software • Speed, size, interface, • Embedded software development is very different from ‘normal’ software development • Use of tools, system initialisation, interaction with systems, debugging
ESP practicals • In the first set of lectures and practical we will look at cross development, ARM architecture, and linking C and Assembler. • In the second term we will focus on porting Linux onto the Puppeteer boards, building the kernel, root file system and applications, as well as porting the Ethernet driver. We may port an application to run on the board.
Lecture list • Cross development techniques • Using a cross development environment • Extra tools for software development • Using C and assembler language • Linking issues • ARM and the SA1110 • RISC • The Puppeteer board • Serial port programming • Porting the Linux kernel • Embedded OS, real-time executive and monitors
The Puppeteer board #1 • The Puppeteer boards are based on the StrongArm SA1110 processor • Intel version of ARM core • 200MHz CPU • MMU support • 2 Serial interfaces • PCMCIA interface • Ethernet
The Puppeteer board #2 • The board was originally developed for cable set top boxes, but has a large number of potential usages • Has 2 serial interfaces – + irda • Audio codec – Toshiba TS35143 • Ethernet support SMCS LAN91C96 • 8 Mb of boot block flash • 32 Mb of DRAM • Altera 6k FPGA • Xilinx CPLD • Small EEPROM • I2C support • JTAG interface
The ARM CPU • We will explore ARM's CPU and look at low powered and RISC CPU through the StrongARM. • We will also look at the types of boards and interfaces and the software that can run on them. • We will do some simple ARM assembly language programming.
The Linux kernel • The kernel we will be porting will be a standard 2.4.18 with the ARM patches • We will need to port to the specifics of the board • Initialisation code need porting • Some of the serial port code will need modifying • The Ethernet chip needs porting • MTD (flash) system need configuring
The Linux system • Although we will examine various distributions we will create our own Linux system using • uClibc • Busybox • Tinylogin • Netkit • NFS • GDB version 6 • MTD support and tools
Development environment • We will be using a GNU cross compiler kit • The version of gcc is 2.95.3 • We will also use binutils • Plus various conversion and download utilities • elf2bin – to convert elf binaries to MSbin format • eloadsvr – to download images to the Puppeteer board
Lab organisation • The first few weeks will be small scale programming of the boards • When we start to install Linux the labs will be broken into groups • Each group will have user space on kenny to keep their kernel and Linux systems • You must learn to save space! • You will be guided into porting the kernel onto a board
Literature and information sources • Some books • Building Embedded Linux Systems – K Yaghmour • Embedded Linux – C Hollabaugh • Embedded Linux Primer – C Hallinhan • Arm System Developer’s Guide – Sloss, Symes & Wright • ARM Architecture Reference Manual – D Seal
Useful web sites • My homes pages • cems.uwe.ac.uk/~cduffy, kenny.netlabs.cems.uwe.ac.uk/~cduffy • Web sites • ARM UK, armlinux, GNU, uClibc, • IBM developerworks • Linux Journal • Kernel newbies • Linux from scratch • The Linux Documentation Project (LDP)