Opgave 1: Brug U-Boot til at tænde/slukke lysdioder på Devkit8000
a) Benyt Devkit8000 schematic (findes på devkit8000 wiki’en) til at finde ud hvilke IOs som følgende er forbundet til?
USER_KEY er forbundet til: ETK_D12/USB2_DIR/IO_26
SYD_LED3 er forbundet til: UART3_CTS_RCTX/GPIO163
b) I user manualen (spruf98c) skal du i afsnittet om ”General Purpose I/O Interface”, CH 25 (spuf98b), finde ud af hvilke GPIO banke (1-6) er førnævnte I/Os forbundet til (se figure ovenfor):
Følgende GPIO banke (1-6) er forbundet tl førnævnte I/Os:
c) Verificer om GPIO_OE værdien for hhv. USER_KEY (input) og SYS_LED3 (output) er korrekte og korriger i fald at det ikke er tilfældet (Benyt md.l [address] [length] og mw).
Nedenstående adresser er aflæst vha. "OMAP manual.pdf":
Vi har adgang til DevKit8000 terminal vha. følgende kommando:screen /dev/ttyUSB0 1152000
I terminalen skriver vi md for at læse på en bestemt adresse:md 0x49058034
Vi får at adressen 0x49058034 = ffffffff.
Da vi ønsker at sætte pin 3 til udgang, skriver vi det om til fffffffb ved at bruge kommandoen mwDette gøres på følgende måde i terminalen:mw 0x49058034 0xfffffffb
d) Læs GPIO_DIN værdien for USER_KEY’s GPIO bank og verificer om en bit skifter værdi når knappen er trykket ned eller ej.
GPIO_DATAIN på bank 1 har adressen: 0x48310038
Vi læser på den andresse.
Når knappen ikke er trykket ned, læses følgende: 1e00003c
Når knappen er trykket ned, læses følgende: 1a00003c
e) Skriv til GPIO_DOUT værdien for SYS_LED3 og verificér at lysdioden tænder/slukker.
- USER_KEY
- SYS_LED3
USER_KEY er forbundet til: ETK_D12/USB2_DIR/IO_26
SYD_LED3 er forbundet til: UART3_CTS_RCTX/GPIO163
b) I user manualen (spruf98c) skal du i afsnittet om ”General Purpose I/O Interface”, CH 25 (spuf98b), finde ud af hvilke GPIO banke (1-6) er førnævnte I/Os forbundet til (se figure ovenfor):
Følgende GPIO banke (1-6) er forbundet tl førnævnte I/Os:
- USER_KEY --> ligger i Bank 1 bit 26
- SYS_LED3 --> ligger i Bank 6 bit 3
c) Verificer om GPIO_OE værdien for hhv. USER_KEY (input) og SYS_LED3 (output) er korrekte og korriger i fald at det ikke er tilfældet (Benyt md.l [address] [length] og mw).
Nedenstående adresser er aflæst vha. "OMAP manual.pdf":
- USER_KEY GPIO_OE bank1 ligger på adressen: 0x48310034
- SYS_LED3 GPIO_OE bank6 ligger på adressen: 0x49058034
Vi har adgang til DevKit8000 terminal vha. følgende kommando:screen /dev/ttyUSB0 1152000
I terminalen skriver vi md for at læse på en bestemt adresse:md 0x49058034
Vi får at adressen 0x49058034 = ffffffff.
Da vi ønsker at sætte pin 3 til udgang, skriver vi det om til fffffffb ved at bruge kommandoen mwDette gøres på følgende måde i terminalen:mw 0x49058034 0xfffffffb
d) Læs GPIO_DIN værdien for USER_KEY’s GPIO bank og verificer om en bit skifter værdi når knappen er trykket ned eller ej.
GPIO_DATAIN på bank 1 har adressen: 0x48310038
Vi læser på den andresse.
Når knappen ikke er trykket ned, læses følgende: 1e00003c
Når knappen er trykket ned, læses følgende: 1a00003c
e) Skriv til GPIO_DOUT værdien for SYS_LED3 og verificér at lysdioden tænder/slukker.
YS_LED3 = LED 2 på boardet.
Af en eller anden grund skal vi ændre på bit 4 og ikke bit 3 for at få SYS_LED3 til at lyse.
GPIO_DATAOUT = 0x4905803C
Vi skal skrive på ben 4.
Først ændre vi på GPIO_OE og sætter bit 4 til udgang: mw 0x49058034 fffffff7
Derefter skriver vi ud på benet for at få LED'en til at lyse: mw 0x4905803C fffffff7
U-Boot er kompileret vha. ovenstående kode.
b) Ændre hello_world.c til at kunne udlæse status af USER_BUTTON og i en efterfølgende iteration benyttes værdien af denne til at sætte værdien af SYS_LED3
Above is our version of the program.
c) Compile program
The compile returned without errors
D) To target
We got the hello_world.bin file on our devkit8000 succsfully using minicom.
Af en eller anden grund skal vi ændre på bit 4 og ikke bit 3 for at få SYS_LED3 til at lyse.
GPIO_DATAOUT = 0x4905803C
Vi skal skrive på ben 4.
Først ændre vi på GPIO_OE og sætter bit 4 til udgang: mw 0x49058034 fffffff7
Derefter skriver vi ud på benet for at få LED'en til at lyse: mw 0x4905803C fffffff7
Opgave 2: Skriv et program til at aktivere lysdioderne
a) U-Boot skal kompileres før vi kan lave vore program i: /home/stud/source/u-boot/ skrives følgende:
Alle registre er direkte memory mappede dvs. at vi kan tilgå deres fysiske adresse direkte. Skal vi gøre dette direkte i et c-program, skal vi huske tilbage på pointere.
$ make CROSS_COMPILE=arm-angstrom-linux-gnueabi- distclean
$ make CROSS_COMPILE=arm-angstrom-linux-gnueabi- devkit8000_config
$ make CROSS_COMPILE=arm-angstrom-linux-gnueabi-
Alle registre er direkte memory mappede dvs. at vi kan tilgå deres fysiske adresse direkte. Skal vi gøre dette direkte i et c-program, skal vi huske tilbage på pointere.
volatile unsigned long *GpioOE_ptr = 0xdeadbeef; // Oprettelse af pointer til
// fysisk adresse 0xdeadbeef
unsigned long gpioOE; // Oprettelse af variabel til
// at holde værdi
gpioOE = *GpioOE_ptr; // Læsning af værdi fra
// fysisk adresse.
*gpioOE_ptr = gpioOE; // Skrivning til fysisk adresse
U-Boot er kompileret vha. ovenstående kode.
b) Ændre hello_world.c til at kunne udlæse status af USER_BUTTON og i en efterfølgende iteration benyttes værdien af denne til at sætte værdien af SYS_LED3
Above is our version of the program.
c) Compile program
The compile returned without errors
D) To target
We got the hello_world.bin file on our devkit8000 succsfully using minicom.
No comments:
Post a Comment