Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Embedded SW – C & picoBlaze

Lignende præsentationer


Præsentationer af emnet: "Embedded SW – C & picoBlaze"— Præsentationens transcript:

1 Embedded SW – C & picoBlaze

2 PicoBlaze – resume/constraints

3

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

16

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


Download ppt "Embedded SW – C & picoBlaze"

Lignende præsentationer


Annoncer fra Google