CPA-C Lesson 01 Introduction to Embedded Systems 1
Dagens Menu 8:00 8:25 9:00 9:40 Hvad er et embedded system? Kursets indhold og motivation Pause (10 min) Processor? Pause (10 min) Devkit8000? Repetition: Endianess og HW for SW folk! Øvelse Endianess 12:00 Frokost! 2
MP3 Afspilleren I 1981 søger Kane Kramer patent på sin Digital Audio Player 8MB Bubble Memory, 3½ min audio Vist på Messe i 1986 og gav ordrer på 60.000.000 Mistede dog patentet og ordrene Ideen blev public domain 3
MP3 Afspilleren General Processing Løsning Dedikeret Hardware Løsning MP3 dekoder ASIC gør strømforbruget lavt og dermed en batteridrevet løsning mulig 4
MP3 Afspilleren 1998: Rio PMP300 32MB, 12 Sange (128Kbit/s) 8-12 timers spilletid på et AA-batteri Parallel Port Interface $200 Solgte 200.000 stk Solgte sw rettigheder til Sigmatel I 2005 og stoppede produktion 5
IPod 2001: First Generation IPod 5GB Harddisk 10 timers batteritid FireWire Interface $399 260.000.000 IPods solgt pr april 2010! 6
IPhone 3G Inside Op mod 7 ARM processorer! Nu er MP3 en bi-egenskab. Mange, mange nye features! 7
MP3 Opsummeret Dedikeret hardware muliggør nye anvendelsesområder Dedikeret hardware kan optimeres mht pris / strømforbrug / driftssikkerhed Dedikeret Hardware er typisk indlejret (=embedded) hardware 8
Standard kurset Vi kunne have lavet et kursus om: Processor arkitektur, eller Embedded hardware, eller Linux device drivers 9
Bastard Kurset + CPA-C er omhandler det hele! 10
Formål med CPA-C Når kurset er slut skulle du gerne: Have en forståelse af en CPU s interne opbygning Forstå hvordan programmering påvirker performance og hvilke begrænsninger hw kan give. Kunne læse et diagram Forstå hvordan et system med bootloader og OS virker Kende til typiske embeddede interfaces Kunne skrive Linux drivers til hardware som endnu ikke er understøttet. Have lyst til at kaste dig ud i embeddede projekter! 11
Læringsmål Beskrive de grundlæggende elementer i 32-bit processor arkitektur. Beskrive processor busser, interconnect og memory Redegøre for CPU eksterne interface: I2C / SPI / UART mm. Tilegne sig nødvendig viden om konfiguration af enheder gennem selvstændigt studie af disses datablade Redegøre for boot processen af et Linux system Redegøre for Linux kerne moduler og hvordan driver systemet er opbygget Udforme Linux Character drivers Redegøre for interrupts og deres håndtering i Linux 12
Eksamen Mundtlig eksamen, 20 minutter Udgangspunkt i teori og med reference til øvelser Godkendelse af øvelsesblog/wiki 13
CPA-C Oversigt LESSON 1: EMBEDDED COMPUTERS INTRO LESSON 2: BUSSES LESSON 3: BOOTING LINUX LESSON 4: LINUX KERNEL MODULES LESSON 5: LINUX CHAR DRIVERS LESSON 6: EXCEPTIONS / INTERRUPTS LESSON 7: SPI INTERFACE LESSON 8: LINUX DRIVER EXTRAS LESSON 9: PROCESSOR CORE FUNDAMENTALS LESSON 10: PROCESSOR MEMORY LESSON 11: EXTERNAL MEMORY LESSON 12: EXTERNAL SERIAL INTERFACES 14
Processoren 15
John Von Neumann Definerede i 1928 grundarkitekturen for en computer Instruktioner hentes sekventielt fra et lager Afvikles på separate funktionelle enheder Tidligere var al funktionalitet hardwired 16
CISC Complex Instruction Set Computer. Går tilbage til 60 erne Mange og komplekse instruktioner som udfører store opgaver En enkelt instruktion kan tage mange clock cycles Giver mindre programkode og kræver mindre af compiler, da komplekse ting sker run-time Vigtigt i 60-70 erne pga lav memory hastighed Giver komplekse processorer som har et højt effektforbrug. Princip bibeholdt pga bagudkompabilitet, men ikke videreudviklet af samme årsag Eks: Intel x86, Motorola 68k 17
RISC IBM projekt inspirerede i 1980 David Patterson til at undersøge en simpel arkitektur, RISC Nyt design, ingen bagud kompabilitet Enkle instruktioner som kunne afvikles på én clk cycle. Reduced Instruction Set Computer Bruger flere instruktioner for at udføre en opgave end CISC, men kun én clk cycle pr instruktion Hurtigere RAM teknologi medførte i 1980 erne at RISC blev mere effektiv end CISC Kræver en mere avanceret kompiler, for at nedbryde til simple instruktioner Eks: ARM, MIPS, PowerPC 18
Harvard / Von Neumann Von Neumann Architecture Harvard Architecture Harvard arkitekturen er et subset af Von Neumann Separat data- og program memory giver øget båndbredde Forskellig busbredde mulig Kræver separat instruktions- og data cache Benyttes oftest i en modificeret udgave med D- / I-cache, men med fælles ekstern memory 19
Hvad var det nye ved Von Neumanns arkitektur? Hvad er hurtigst: RISC / CISC? Hvad er forskellen: RISC / CISC? Harvard / Von Neumann? http://www.iha.dk/job-og-studiejob-6199.aspx 20
Microprocessor Microprocessor er rå regnekraft Kun få eksterne interfaces: Memory Bridges RISC/CISC Benyttes til: PC Server Processing farms 21
Microcontroller Microcontroller er en microprocessor med eksterne interfaces: GPIO, I2C, UART Typisk RISC Benyttes til: Industri Automotive Consumer 22
SoC System on Chip kan have flere indbyggede processorer og specialfunktioner Benyttes til: Smartphones Multimedia Industri? 99% RISC Blander begreberne 23
Moores Law Wikipedea Antal transistorer fordobles hvert andet år 24
CPU Frequency Scaling I 2004 droppede Intel efterfølgerne til Pentium 4 pga effektforbug. Frekvensskalering er herefter ikke længere brugt til at øge beregningsbåndbredde 25
Amdahl s Law Memory Software Hardware.org/wiki/Parallel_computing http://en.wikipedia. Speedup er proportional med procentdel af tiden som forbedringen kan benyttes. 2 x clockfrekvens 2 x speedup, hvis ikke memory kan følge med. 2 x CPU 2 x speedup, hvis ikke SW kan følge med 90% parallelisering af prg => max x10 speedup 26
Hvad kendetegner Microprocessor, Microcontroller og SoC? Hvad er idag den begrænsende faktor for CPU performance? http://www.iha.dk/job-og-studiejob-6199.aspx Hvordan maksimerer vi performance? 27
DevKit8000 Introduktion 28
Devkit8000 Hardware DevKit8000 er en klon af Beagle Board. 29
Beagleboard Se beagleboard.org Community / TI drevet ~ DKK 1250,- 30
Add-On Board RS-232 x 3 GPIO (3V3) CPLD TDM, SPI EEPROM TEMP ADC / DAC GPIO (5V) CPLD JTAG IHA Homebrew! Se http://devkit8000addon.wikispaces.com/ 31
OMAP3530 ARM Cortex-A8 DM64x DSP SGX Video Accelerator Camera Input Processor Digital Display subsystem USB OTG Hvilken Arkitektur? Systemtype? 32
ARM Cortex A8 ARM v7 kerne < 300mW for 2000 Dhrystone MIPS! NEON Multimedia unit Jazelle. Java JIT L1 + L2 Cache Brugt i: IPod Touch 3G, S.E. Satio, Nokia N900, Samsung I8910 33
Repetition Endianess Byte- / Word- / Double Alignment 34
Endianess Little-endian: x86 Configurable: ARM PowerPC MIPS Big-endian: 68K 35
Atomic Size Big Endian increasing addresses... 0A h 0B h 0C h 0D h... Little Endian increasing addresses... 0D h 0C h 0B h 0A h... With 8-bit atomic element size increasing addresses... 0A0B h 0C0D h... increasing addresses... 0C0D h 0A0B h... With 16-bit atomic element size Afhængig af memory type, kan denne tilgås som 8- /16-/32-/64-bit. 36
Memory Map OMAP3 DevKit8000 # md.b 0x80300000 50 80300000: 27 05 19 56 4a dc 69 2c 4c 49 f3 3b 00 1e 66 bc '..VJ.i,LI.;..f. 80300010: 80 00 80 00 80 00 80 00 af fd 30 4f 05 02 02 00...0O... 80300020: 4c 69 6e 75 78 2d 32 2e 36 2e 32 38 2d 72 63 39 Linux-2.6.28-rc9 80300030: 2d 6f 6d 61 70 31 00 00 00 00 00 00 00 00 00 00 -omap1... 80300040: 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1 00 00 a0 e1... OMAP3 DevKit8000 # md.w 0x80300000 28 80300000: 0527 5619 dc4a 2c69 494c 3bf3 1e00 bc66 '..VJ.i,LI.;..f. 80300010: 0080 0080 0080 0080 fdaf 4f30 0205 0002...0O... 80300020: 694c 756e 2d78 2e32 2e36 3832 722d 3963 Linux-2.6.28-rc9 80300030: 6f2d 616d 3170 0000 0000 0000 0000 0000 -omap1... 80300040: 0000 e1a0 0000 e1a0 0000 e1a0 0000 e1a0... OMAP3 DevKit8000 # md.l 0x80300000 14 80300000: 56190527 2c69dc4a 3bf3494c bc661e00 '..VJ.i,LI.;..f. 80300010: 00800080 00800080 4f30fdaf 00020205...0O... 80300020: 756e694c 2e322d78 38322e36 3963722d Linux-2.6.28-rc9 80300030: 616d6f2d 00003170 00000000 00000000 -omap1... 80300040: e1a00000 e1a00000 e1a00000 e1a00000... 37
Network Endianess.. 78 54 00 (0045)87302000 Historisk benytter telecom Big-Endian, således at det mest betydende ciffer (område) bruges som det første til at switche på TCP/IP Bruger Big-Endian. En little-endian CPU vil være ueffektiv i en router/switch 38
Bit Endianess LSB 0 MSB 0 VHDL: data(7 downto 0) VHDL: data(0 to 7) De fleste CPU er benytter LSB 0 notation (minus Freescale). Transparent for SW, men vigtig for HW (bus bit nummering). Serielle data (RS-232, Ethernet, ect) benytter LSB0, dvs LSB bit sendes først (misses 1. bit betyder det ikke meget). (http://www.linuxjournal.com/article/6788) 39
HW for SW folk 1:2 Chip pakker, hvor er ben 1? Gates, AND, NOR, NAND, hvordan tegnes de? Hvordan virker de? Power / Ground symboler Afkoblingskondensatorer Tri-state drivers D-Flip Flop Timing Diagrammer Setup- / Hold 40
http://devkit8000addon.wikispaces.com/schematic HW for SW folk 2:2 41
Næste lektion Omhandler busser IKKE bybusser eller langtursbusser Bruges til at forbinde en processor med eksterne enheder Vigtigt at forstå hvad en bus er, for at kunne læse et diagram og søge information om relevante komponenter. Dette er igen vigtigt for at kunne skrive sw til et embedded system. 42