Download præsentationen
Præsentation er lastning. Vent venligst
1
Embedded SW – C & picoBlaze
2
PicoBlaze – resume/constraints
4
PicoBlaze <> Ardunio Uno
PB 1k instruktioner for PB Atmega8 8kB for kode (minus bootloader) PB scratchpad RAM + 31 dyb call stack Atmega 1kB ram, 512B eeprom Sammenlignelig på kode, faktor 4-10 på RAM - ! so bad PB fylder kun ca 5% af FPGA... ? kan man skohorne flere PB ind på fpga ?
5
PB & C – nogle kommentarer
Der er en række C compilere baseret bla på Hendrics smallC (sdcc) og pbcc (picoBlaze C) De seneste jeg har fået til at køre er at se på kursus WWW SE (eller også 15-1) Hvor compilere er hentet Det hele kører på xp eller med wine på linux/mac wine pccomp.exe <parms>
6
PC C & linux Der er C compilere til PB kørende på linux, men det er “alles inclusive” - man skal selv hente src træ og kompilere op. Ej interessant “Main” dokument pccomp_manual.pdf som er på www
7
Dagens opgave Hent SW Skriv “hello world” C compile it Asm it
Vejen frem
8
Om PB C I Jordens dummeste C compiler !
Ingen kode optimering – du er kode optimator Undgå lokale variable – brug globale Undgå for dybe (rekursive) funktionskald aht call stack Pas på med mixede typer operationer – int/char Kig maskin kode igennem !
9
Om PB C II LÆS MANUAL pccomp_manual.pdf !!! Subset af C (obvious :-)
Datatypes: (no news) char bit unsigned char 8 bit int bit unsigned int 16 bit Arrays – NB (unsigned) char for indexing only Pointers – 1D only
10
Om PB C III Type casting (unsigned)char -> (unsigned)int)
11
“if” as usual “while” as usual Endless loops: No check af asm part
12
Om PB C IV do {} while () switch
13
Datz all :-)
14
næsten
15
interrupts PB har et eksternt interrupt IRQ rutine skal hedde my_irq
Kan aktiveres og deaktiveres online IRQ rutine skal holdes i asm Ved IRQ “end” er default at IRQ igen er aktiveret Kan dog kodes til at afslutte med IRQ disablet
17
IO space Ej testet af mig ...
18
// READ FUNCTION char inchar(char addr){ char x; #asm LOAD TMP , YL ADD TMP , 01 FETCH TMP, (TMP) ; TMP = addr INPUT TMP,(TMP) ; TMP = datain STORE TMP,(YL) ; save in x #endasm return x; } JDN: NOK EN IDE AT LEGE MED AT PAR FUKTIONER OG SE PÅ KODE LAYOUT:
19
_a_fct: LOAD XL, YL INPUT ZL,(XL) SUB YL , 01 OUTPUT ZL,(YL) LOAD ZL,01 INPUT XL,(YL) ADD YL , 01 ADD XL , ZL RETURN _main: LOAD ZL,04 CALL _a_fct OUTPUT XL,_c char c; char a_fct(char cc); // need prototype... char a_fct(char cc) { return cc+1; } void main(void) c = a_fct(4);
20
Nu til kødgryderne... pccomp.exe x.c - kun een C src Resten som #include <x.h> også selvom der er kode i filen Maskine kode i psm fil skal nu assembles \xilinx\13.4\IS_DSE\ISE\sysgen\bin\nt\kcpsm3.exe jdn3.psm .
21
_a_fct: LOAD XL, YL INPUT ZL,(XL) SUB YL , 01 OUTPUT ZL,(YL) LOAD ZL,01 INPUT XL,(YL) ADD YL , 01 ADD XL , ZL RETURN _main: LOAD ZL,04 CALL _a_fct OUTPUT XL,_c NAMEREG sf , XL NAMEREG se , YL NAMEREG sd , ZL NAMEREG sc , XH NAMEREG sa , ZH NAMEREG sb , TMP NAMEREG s9 , SH NAMEREG s8 , SL NAMEREG s7 , KH NAMEREG s6 , KL NAMEREG s5 , TMP2 CONSTANT _c , ff LOAD YL , ff JUMP _main
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.