<html><body>Vlastně ani nevím, jsem z toho jelen... <br><br>Už jen ten prasáckej asm. Ještě jsem dokázal pochopit, že asm pro AVR má místo MOV několik různých LDx a STx, že když to začalo jako práce nějakého studenta, tak si asi chtěl ušetřit práci, aby překaldač nemusel analyzovat operandy. Poněkud mě ovšem šokovalo, že stejně je na tom ARM, resp. hůř, neboť má místo MOV celekem asi 16 různých názvů pro různé kombinace operandů.<br><br>Zatím jsem např. nepřišel na to, jak zapíšu obsah banální proměnné do R0.<br><br>Na x86 bych použil MOV a překladač by to vyřešil.<br><br>Takže: V CCS 550 jsem vytvořil "hello world" projekt, k němu přidal include s různými #define na adresy registrů a makrem HWREG. Následně jsem z té odkazované asm ukázky vykoukal nastavení všech registrů ohledně GPIO a přerušení. Pak jsem přidal ještě interrupt.h a interrupt.c ze Starterwaru a použil IntAINTCInit(); a IntRegister(SYS_INT_GPIOINT2A, pokusIsr); Ale stále to nefungovalo. LEDky blikaly, jak jim velela smyčka na konci mainu, když jsem udělal, aby se daly přímo ovládat tlačítky přes čtení portu tlačítek, tak to fungovalo, ale přerušení prostě nic...<br><br>Nakonec jsem zjisitil, že:<br>- V tom interrupt.h/c je pole fnRAMVectors, kam se reistrujou přerušení, ale není tam nic, co by řeklo procesoru, že tady je ta tabulka vektorů.<br>- Odkaz na to fnRAMVectors se vyskytuje i v system.lib z dema ve Starterwaru, což jednak samo o sobě nefunguje bez nastavení tuny dalších věcí a jednak je to monstrum, který bych do svého projektu nerad dával. A nenašel jsem od toho zdroják. Stejne tak není od libc.a, co je v tom hello world projektu.<br><br>PH<br><br>Od: Josef Štengl <ok1ced@nagano.cz><br><blockquote>A překládáte to arm-none-eabi kompilátorem?<br><br>Abych řekl pravdu, Keilem se budu zabývat jen když mě za to budou platit.<br><br>Mimochodem všiml jste si, že ty ... tentonoc používají stejnou příponu pro C a header a ASM (.h)?<br><br>A ještě mám dojem, že to napsáno v THUMB2. Nikdy jsem THUMB2 kód neměl odvahu spustit v přerušení, protože je řečeno, že <br>se přepíná do ARM. Ale to je u R ka, u A jsem se to asi nepřepíná, pokud si matně vzpomínám z vašeho předchozího dotazu.<br><br>Dne 23.12.2014 v 18:56 Pavel Hudeček napsal(a):<br>> Díky, nějak mi časem vypadla. Teď už to zas hlásí původní chybu:<br>> [E0004] Coprocessor information field must be an absolute constant<br>> a to hned 2x za sebou<br>><br>> Jenže takhle přesně jsem to zkpíroval ze souboru init.S, který je v 3000.trivial-a8.zip<br>> <http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/791/3000.trivial_2D00_a8.zip><br>> odkazovaném zde:<br>> http://e2e.ti.com/support/arm/sitara_arm/f/791/p/360758/1268334#1268334<br>><br>> stejně je to i v start.S v io-irq.tar.gz<br>> <http://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/io_2D00_irq.tar.gz> odkazovaném zde:<br>> http://e2e.ti.com/support/arm/sitara_arm/f/791/p/389752/1376393#1376393<br>><br>> jen mi zcela uniká, proč nikde před tím nevidím vložení adresy vektorů do R0. Tam je pro mě navíc naprosou záhadou celá<br>> syntaxe, např. to, že je všechno deklarováno stylem "let main() -> void" wtf?<br>><br>> Od: Milan B. <milan@bastl.sk><br>><br>>     On 23. 12. 2014 18:08, Pavel Hudeček wrote:<br>>      > 3. Co dělám špatně, když mi překladač nepřeloží "MCR p15, 0 r0, c12, c0"?<br>>      > Píše: [E0003] Unexpected trailing operand(s)<br>><br>>     Nechyba tam ciarka?<br></blockquote></body></html>