otazky okolo ARMu AT91SAM7Sxx

Jiri Bezstarosti jiri@bezstarosti.cz
Sobota Srpen 11 13:11:46 CEST 2007


Nejsem uzivatelem ARMu nijak zavratnou dobu a co napisu berte tak, ze si 
to tak sam vysvetluji, tedy naprosto bez naroku na presnost. Pokud si to 
myslim spatne, prosim, nekdo mne opravte. Tohle pisi jen proto, ze jak 
se zda, se zatim nenasel nikdo povolanejsi, kdo by odpovedel a jiste 
budu rad, kdyz se budu moci na nektere veci sam nekoho zdatnejsiho 
zeptat, protoze samostudiem ke spatnemu pochopeni jiste nekdy dojit muze.

Jde o ARM7TDMI, tedy ma jak 32bit tak 16bit instrukcni sadu. Pouzivat 
budete spise tu 16bit instrukcni sadu (THUMB), protoze setri pamet vice, 
nez ubira vykonu.

A ted se dostanu k tomu problemu. Pamet FLASH nelze pouzit na vice nez 
30MHz, ale je organizovana po 32bitech. Aby mohl ARM bezet s tou pameti 
rychleji nez na 30MHz, musi vkladat "waitstaty", tedy vzdy na tu pamet 
pockat. S tou organizaci pameti ale muze ARM cist 32bitu zaroven, takze 
si muze nacist 2 16bit instrukce zaroven a tedy ARM ma co provadet i 
behem jednoho cekaciho cyklu na pamet, protoze cte-ceka-cte-ceka... a 
provadi-provadi-provadi-provadi... Jediny problem nastane, kdyz program 
nebude linearni (skoky). Pak se dostatane do situace, ze to co nacetl je 
mu na houby a tim se pribrzdi, ale to je bezne u vsech CPU/MCU, ktere 
behem provadeni instrukce nacitaji dalsi (a nebo i nekolik dalsich).

Tedy zbrzdeni v THUMB modu nebude tak podstatne, jak by se mohlo pri 
pouziti wait state zdat. Nejlepe to pochopite, kdyz si stahnete demo 
program s benchmarkem (nejaky jsem na webu videl) a vyzkousite co to udela.

Pri pouziti AT91SAM7S64 a vyssich (proste tech s USB) doporucuji pouzit 
krystal 18.432MHz, tedy alespon v zacatcich. S nim lze totiz pouzit 
bootovani pres USB. U seriaku je to myslim jedno, ale spousta demo 
programu, ktere najdete na webu bude nejspise pocitat s timhle 
krystalem. Ne ze by bylo tezke v tech demech v Ccku to zmenit, ale pro 
zacatek je o kazdou zmenu mene jedine lepe ;).

Jinak program muzete spustit jak z FLASH tak z RAM. Klidne muzete 
J-TAGem nalit program do RAM a pak ho spustit. Ovsem musite to napsat 
linkeru, ze to budete spoustet z RAM. Zkousenim si jen v RAM si 
neosoupete FLASH, ale bez J-TAGu se asi neobejdete. Ovsem stejne je 
J-TAG prvni vec, kterou byste si mel poridit/postavit/vyhrabat ;).

Pridam par linku, zajimavych pro uzivatele Windows:

http://winarm.scienceprog.com/winarm-tools/quick-start-using-winarm.html
Staci stahnout:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/WinARM-20060606.zip 

(link je i na te predchozi strance) a nasledovat kroky v popisu.

A jeste J-TAG:
http://www.hjtag.com/
http://www.hjtag.com/download.html

--
Jiri Bezstarosti


Jookie napsal(a):

>Este ma napada: Aka je maximalna frekvencia, na ktorej to dokaze bezat?
>Na jednom mieste sa pise:
>
>     Fully Static Operation: Up to 55 MHz at 1.65V and 85°C Worst Case  
>Conditions
>
>a na druhom mieste sa pise:
>
>     Internal High-speed Flash:
>       ? Single Cycle Access at Up to 30 MHz in Worst Case Conditions
>
>Ked mam teda program vo Flashi, tak mi to z nej sosa len 30 MHz, i ked mam  
>napr. 50 MHz krystal? Alebo ako teda? Ci sa to loadne do SRAM a tam sa to  
>vykonava? Vsimol som si v manuali cosi o Von Neumanovej architekture  
>(narozdiel od AVR s Harwardskou)...
>
>  
>




Další informace o konferenci Hw-list