<html>
<head>
<meta content="text/html; charset=iso-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Assembler pro ARM je opravdu hardcore,
asi nikdo nepredpoklada, ze nekdo bude v assembleru psat vic nez 2
stranky startup kodu ;-) Proste cista RISC architektura.<br>
Pak zrejme doslo k poznani vychoziho omylu a vznikla sada THUMB,
ktera uz je trosku normalni. Trosku je taky blbe, ze kazda verze
jadra ma ruzne rozsireni instrukcni sady.<br>
Registry a jejich pouziti je taky dost narocne na pochopeni,
PC,SP,LR, ruzne mody...<br>
Preruseni je kapitola sama pro sebe, kazda verze si dela ruzne
akce, ukladani registru, stavu FPU ... <br>
Ale ma to neco do sebe, kdyz se nad tim zamyslite, koncepce, ze
kazda instrukce ma 32b, trva stejne (az na vyjimky) a muze byt
podminena neni tak spatna.<br>
Kazdopadne bych asi presel k normalnimu GNU prekladaci.<br>
Obecne plati, ze je potreba prostuduvat extra popis jadra a extra
popis celeho okoli, kde zas neni zadna informace o jadru... A
preruseni se treba vetsinou nejak konfiguruje jak v jadru, tak v
nejake jednotce okolo.<br>
<br>
Dne 23. 12. 2014 v 19:48 Pavel Hudeček napsal(a):<br>
</div>
<blockquote cite="mid:24U9.1Ro7.7ZeoPKOje1M.1KcRa8@seznam.cz"
type="cite">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 <a class="moz-txt-link-rfc2396E" href="mailto:ok1ced@nagano.cz"><ok1ced@nagano.cz></a><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>
>
<a class="moz-txt-link-rfc2396E" href="http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/791/3000.trivial_2D00_a8.zip"><http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/791/3000.trivial_2D00_a8.zip></a><br>
> odkazovaném zde:<br>
>
<a class="moz-txt-link-freetext" href="http://e2e.ti.com/support/arm/sitara_arm/f/791/p/360758/1268334#1268334">http://e2e.ti.com/support/arm/sitara_arm/f/791/p/360758/1268334#1268334</a><br>
><br>
> stejně je to i v start.S v io-irq.tar.gz<br>
>
<a class="moz-txt-link-rfc2396E" href="http://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/io_2D00_irq.tar.gz"><http://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/791/io_2D00_irq.tar.gz></a>
odkazovaném zde:<br>
>
<a class="moz-txt-link-freetext" href="http://e2e.ti.com/support/arm/sitara_arm/f/791/p/389752/1376393#1376393">http://e2e.ti.com/support/arm/sitara_arm/f/791/p/389752/1376393#1376393</a><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. <a class="moz-txt-link-rfc2396E" href="mailto:milan@bastl.sk"><milan@bastl.sk></a><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>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<br>
<br /><br />
<hr style='border:none; color:#909090; background-color:#B0B0B0; height: 1px; width: 99%;' />
<table style='border-collapse:collapse;border:none;'>
<tr>
<td style='border:none;padding:0px 15px 0px 8px'>
<a href="http://www.avast.com/">
<img border=0 src="http://static.avast.com/emails/avast-mail-stamp.png" />
</a>
</td>
<td>
<p style='color:#3d4d5a; font-family:"Calibri","Verdana","Arial","Helvetica"; font-size:12pt;'>
This email has been checked for viruses by Avast antivirus software.
<br><a href="http://www.avast.com/">www.avast.com</a>
</p>
</td>
</tr>
</table>
<br />
</body>
</html>