Využítí ARM GCC vývojového retezce

| Kategorie: Diplomové, bakalářské práce  | Tento dokument chci!

Předmětem této práce je studium stávajícího vývojového řetězce pro mikroprocesor LPC23xx v předmětu MPOA. Hlavním cílem je zkoumání možností realizace nového vývojového řetězce, postaveného na GCC. Výstupy této práce jsou ukázkové aplikace s mikroprocesorem LPC2378 a GCC. Součástí vysledků jsou i návody pro studenty, jak tyto ukázkové aplikace implementovat. Ukázky zahrnují základní aplikace, RTOS aEthernet.

Vydal: FEKT VUT Brno Autor: Jan Ledvina

Strana 28 z 93

Vámi hledaný text obsahuje tato stránku dokumentu který není autorem určen k veřejnému šíření.

Jak získat tento dokument?






Poznámky redaktora
Výsledný kód potom vypadá takto: Samotná funkce: inline void disable_irq() { long b; __asm__ __volatile__ "MRS %0, CPSR \n\t" "ORR %0, %0, #0xC0 \n\t" "MSR CPSR_c,%0 "=r" (b)); } Prototyp této funkce potom vypadá takto: extern inline void disable_irq (void) __attribute__ ((always_inline)); . případě, přerušení nevypne, dojde vteřině rozsvícení teměř všech diod. Na základě tohoto kódu pak byla vytvářená funkce pro vypnutí přerušení.21 bufferu obdobně jako varianta cvičení. Pro ověření správnosti těchto funkcí byl vytvořen nový program, jeho hlavní část vypadala takto: timer_init(TIME_INTERVAL_ms(1000)); disable_irq(); FIO2PIN 0xf0; while(1); Ve funkci pro obsluhu přerušení časovače byl doplněn následující kód: FIO2PIN 0xef; V případě, tedy funkce disable_irq() skutečně vypne přerušení, rozsvítí pouze horní polovina LED. Pro správné napsání funkce třeba znát následující: − Globální IRQ flagy jsou CPSR (Current Program Status Registr) − Přístup tomuto registru pouze přes speciální instrukce MSR, MRS − Flag IRQ mistě bitu, flag FIQ bitu − Vynulování(vypnutí) provede zápisem logické 1!!! − Pro maximální efektivitu třeba, aby funkce byla In-Line Na základě těchto znalostí výsledný kód vytváří mnohem jednodušeji. Bohužel však chyběla jakákoliv dokumentace těchto úprav. Jelikož byla již načata problematika přerušení systém přerušení byl studován i dříve, bylo rozhodnuto dodělat nové funkce pro možnost zakázání povolení přerušení, pro případ opět řešila podobná problematika. Jelikož všechny tyto informace začátku nebyly, bylo třeba ním postupně dostat. Jak se ukázalo, jde velice jednoduchý úkon, avšak jeho realizace poměrně složitá. Není tedy jasné kdo kdy provedl