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