Embedded Systems Programming
description
Transcript of Embedded Systems Programming
Embedded Systems Programming
Introduction to the course
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, interaction with systems,
debugging
ESP 1st term
• In the first set of lectures and practical sessions I will be covering cross developing code and operating systems onto a single board computer.
• The practical sessions will involve small groups of students installing Linux onto the target hardware. The Puppeteer will be a central part of the system developed as part of the assignment.
Lecture list
• Cross development techniques• Using C and assembler language• ARM and the SA1110• The Puppeteer boards• Using a cross development environment• Extra tools for software development• Embedded OS, real-time executive and monitors• Porting the Linux kernel
The Puppeteer board #1
• The Puppeteer boards are based on the StrongArm SA1110 processor– Intel version of ARM core– 200MHz CPU– MMU support– 4 Serial interfaces– PCMCIA interface
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• Sound interface• 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 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 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– Arm System Developer’s Guide – Sloss,
Symes & Wright– ARM Architecture Reference Manual – D Seal
• Web sites– ARM UK, armlinux, GNU, uClibc,