MPS+Ov3


 * ØVELSE 3**


 * Opgave1**

Først findes hvilke IO SYS_LED2 og USER_KEY er forbundet til USER_KEY er forbundet til IO_26 SYS_LED2 er forbundet til GPIO_186
 * A.**

Derefter findes hvilke GPIO banke IO'erne er forbundet til USER_KEY er forbundet til GPIO1 SYS_LED2 er forbundet til GPIO6
 * B.**


 * C.**

Se om GPIO_OE værdierne er korrekte så SYS_LED2 er sat til **output** og USER_KEY er sat til **input**

SYS_LED2 har adressen 0x49058034 hvor vi ser at den har værdien " 0x f f f f f f f f " Dette er forkert da vi skal have den 26 bit til at være et 0 så der kommer til at stå " 0x f b f f f f f f " dette vil gøre den til output

USER_KEY har adressen 0x48310034 hvor vi ser at den har værdien " 0x f f f f f f f f " Dette er det korrekte for at den er et indput.


 * D.**

registeret 0x49058034 sættes til værdien 0 x f f f f f f f 7 dette gør at dioden bliver sat til en udgang. mw.L 0x[adresse] [værdi]
 * E.**

registeret 0x4905803C sættest til 0 x 00000007

dette gør at dioden slukker da dioden er aktiv lav koden til at skrive til registeret er mw.L 0x[adresse] [værdi]


 * Opgave 2**

Vi skal kompilere U-Boot. For at se hvordan dette gøre se mps.iha.dk
 * A.**

Vi skal skrive et program som kan sætte værdien på GpioDOut efter værdien på GpioOE. code unsigned int gpioDIn; unsigned int gpioDOut; unsigned int gpioOE; volatile unsigned long *GpioDIn_ptr = 0x48310038; volatile unsigned long *GpioOE_ptr = 0x49058034; volatile unsigned long *GpioDOut_ptr = 0x4905803c;
 * B**.

gpioOE = (unsigned int)(*GpioOE_ptr); gpioOE &= ~(1<<4);                           // Sætter SYS_LED til at være output.
 * GpioOE_ptr = (unsigned long)(gpioOE);

while(1) {   gpioDIn = (unsigned int)(*GpioDIn_ptr);

if ( gpioDIn & 0x04000000 )                       // Ser om knappens bit er 1 {            gpioDOut = (unsigned int)(*GpioDOut_ptr); gpioDOut |= (1<<4);                       // Tænder lysdioden *GpioDOut_ptr = (unsigned long)(gpioDOut); }   else {            gpioDOut = (unsigned int)(*GpioDOut_ptr); gpioDOut &= ~(1<<4);                                              // Slukker lysdioden *GpioDOut_ptr = (unsigned long)(gpioDOut); } }; code

Programmet skal kompileres; se mps.iha.dk
 * C **.

Overføre programmet til U-Boot; se mps.iha.dk
 * D.**

Loader programmet til en adresse på memory ved at skrive: loady 0x80300000

Efterfølgende køre man programmet ved at skrive: go 0x80300000