CPA-C+Øvelse+03


 * Øvelse 1:**
 * A)**
 * USER_KEY = gpio 26
 * SYS_LED2 = gpio 186

SYS_LED2: Bank 6, bit 25 186/32 = 5,8125 - Altså på "bank 6" 0,8125*32 = 26 26 - 1 = "bit 25"
 * B)**

For at vise boot status i terminal skrives følgende command: gtkterm Denne command åbner et nyt terminal, hvor boot status burde blive vist i. Vi havde problemer med at der ikke kom noget i gtkterm når vi bootede Dev8000.
 * C)**

Løsning: Prøv på en anden computer, virker på magisk vis

command: //md "adressen"//

adresserne finder man i spruf98t.pdf side 3348, tryk på det register man vil se adresse på.

1 = input 0 = output

md 0x48310034 (GPIO_OE) Bank 1 bit 26 er sat til "input". Hvilket er fornuftigt, eftersom det er USER_KEY Bank 6 bit 25, SYS_LED2, er sat til ouput

adressen for data-in: md 0x48310038 (GPIO_DIN) Udskriver: 0e00003c, når user_key ikke er trykket ned Udskriver: 0a00003c, når user_key er trykket ned
 * D)**

For at skrive til en adresse: //mw.l "adressen" "værdi"//
 * E)**

For det samme som ved USER_KEY aflæses GPI_OE bank 6 (** 0×49058034 **) til ** fffffaf9 ** vi bliver derfor nødt til at ændre det til **fbfffaf9**
 * mw.l 0x4905803c fbfffaf9**

Vi kan dernæst læse ** 0x4905803C ** til ** 00000506 **. For at slukke dioden skrives:
 * mw.l 0x4905803c 04000506**


 * D)**
 * Først oprettes variabler og pointerer til at pege på de forskellige adresser**

////Oprettelse af pointer til fysisk adresse USER_KEY// volatile unsigned long *GpioUK_ptr = 0x48310034; //Oprettelse af pointer til fysisk adresse SYS_LED2 (OE) //volatile unsigned long *GpioOE_ptr = 0x49058034;// ////Oprettelse af pointer til fysisk adresse SYS_LED2 (DATA OUT)// volatile unsigned long *GpioDOUT_ptr = 0x4905803C; //Oprettelse af variabel til at holde værdi af USER_KEY //unsigned int gpioUK;// ////Sætter SYS_LED2 til at være output//
 * GpioOE_ptr = 0xfbfffa9;

while(1)

while(1) { //User key aktiveret if (*gpioDATAIN_ptr == 0x0a00003c) { //hvis lysdiode tændes if *GpioDATAOUT_ptr = 0x00000506; { //sluk diode gpioDATAOUT_ptr == 0x04000506) } else { //Tænder dioden } }
 * gpioDATAOUT_ptr = 0x00000506;

Bagefter fulgte vi beskrivelsen og fik den compileret så den passede til target, hvorefter vi overførte den til target.