Ahoj,
kdyby byl zajem mohl bych na pristi meetup prinest svuj `ARMboard' a predvest ho i s vyvojovym prostredim co jsem pro nej vytvoril.
Je to sice jen AT91SAM7S256, takze na sve max frekvenci (55MHz) asi 2* pomalejsi CPU nez ten lpc1343 na svem maximu (72MHz), ale zase ma vetsi RAM (64KB oproti 8KB) i FLASH (256KB oproti 32KB) a jeho periferie maji DMA (na rozdil od lpc1334), takze z hlediska celkove pouzitelnosti je priblizne srovnatelny.
Ta desticka co jsem pro nej udelal vypada jako ponekud sirsi DIL44 a ma na sobe ochranu proti prepolovani napajeciho napeti, stabilizator napeti, operacni zesilovace pro analogove vstupy a spoustu zenerek k ochrane I/O-pinu --- je zamyslena pro bastleni a nesetrne zachazeni. Dale ma vyvedenou DBGU-seriovou linku (RS232), pres kterou se programuje.
Napsal jsem pro to (pro linux) komunikacni program s bootloaderem, linker scripty pro gcc, opravil nekolik chyb v std. knihovnach gccka pro ARM architekturu (spatne implementovane deleni) a napsal post-processor ktery projede vysledny assembler a vyhazi z neho objekty (funkce a staticka inicializovana data) ktere se nikdy nepouziji (tim se obvykle vysledny program nekolikanasobne zmensi, zvlaste pokud pouzivate knihovny).
Cele se to ovlada tak, ze napisete program v Ccku (nebo C++) a pak ho prelozite prikazem
axrun -l program.cc
Kde `axrun' je script, ktery zavola postupne kompilator Ccka, postprocessor, linker a komunikacni program `armtalk', pomoci ktereho se prelozeny program nahraje do RAM ARMboardu. Parametr -l rika ze chci program rovnou i spustit.
Pro vyvoj je vyhodne nahravat program do RAM a nechat ho bezet odtamtud (je to rychlejsi a neopotrebovavate si FLASH zbytecnym mazanim). Pokud se program korektne vrati z funkce main() dostane se ARMboard zpet do vychoziho stavu, kdy je mozno nahrat dalsi program. Pokud se zacykli, nezbyde nez pouzit tlacitko reset (ktere jde pak v produkcni verzi vaseho vynalezu softwarove odpojit nebo ho vyuzivat jen jako vstupni tlacitko).
Pro vetsi programy, ktere se nevejdou do RAM je mozne volat
axrun -m dflash -l program.cc
coz zpusobi naprogramovani kodu do FLASH, ale tak, ze se neprepise bootloader a po korektnim ukonceni main() je ARMboard zase pripraven k programovani (vhodne pro vyvoj, dflash znamena `development flash memory model'). Konecne
axrun -m flash -l program.cc
nahraje do flash program tak, ze bude vzdy spusten po resetu, cili to co ocekavate od finalni verze aplikace. Pomoci programu armtalk je mozne nastavit i `pojistky', takze vas program nepujde z vnejsku precist (ani za pomoci JTAG interfacu).
Pokud chcete ARMboard vratit zpet do puvodniho stavu, staci zkratovat k tomu urceny jumper a zapnout na nekolik vterin napajeni. Tim se obnovi bootloader a pri dalsim startu uz opet muzete pouzit armtalk.
Pak jsem napsal neco cemu rikam `bios', v nem jsou zakladni funkce jako treba print, putc a definice I/O registru hardwaru, funkce pro programovani FLASH pameti, atd.
Nyni mam rozpracovany real-time OS, non-realtime cast je uz prakticky hotova (chybi napriklad jeste ovladac USB a alokator pameti), ale ostatni veci jako treba prepinani procesu, alokovani preruseni, komunikace mezi procesy, obecny DMA server (a z neho odvezny ovladac pro USART a ADC prevodnik) jsou uz hotove a funkcni.
Spolupraci s debuggerem jsem neresil (nepouzivam debugger), nicmene OS, pokud je prelozen s definovanym makrem DEBUG testuje ASSERTy a nektere fatalni chyby (jako treba pristup na nezarovanou adresu, zapis do *NULL a preteceni zasobniku jednotlivych vlaken) a v pripade, ze k nim dojde, zastavi program a na DBGU port (RS232) vypise adresu kde k chybe doslo a jmeno threadu ve kterem se to stalo.
Pomoci scriptu `axdis' pak muzete disassemblovat program.o soubor (abyste videli adresy instrukci) a najit misto kde k chybe doslo.
Neni to moc pohodlne ale na druhou stranu to clovek nepotrebuje casto, vetsine chyb se da predejit pouzivanim makra ASSERT(podminka,vyraz), kde podminka je boolean expression ktere kdyz nebude platit, zastavi se program a na DBGU vypise ktera podminka selhala, na kterem radku ktereho filu to bylo a jaka byla v tu dobu hodnota integer vyrazu `vyraz' a zastavi program.
Puvodne jsem to chtel releasenout az bude OS hotovy, ale jak tak koukam, za rok uz by to nemuselo nikoho zajimat, protoze by mohli uz vsichni pouzivat Cortex-M. Tak jsem se rozhodl riskovat, ze se to nebude libit pro svou nedokoncenost a fakt, ze API OS se jeste bude asi menit (zpetne nekompatibilne) a zverejnit to uz ted. Treba to nekoho zaujme.
Takze piste, kdo by rad videl ukazku.
David
u mna to stroskotalo na tom ze doma pouzivam prevazne linux a ten debuger ma ovladace len pre widle nasiel som navod ako do discovery "nasipat" binarku cez seriovy prevodnik ale u 32bit procaku by som si netrufol vyvijat nieco bez moznosti debugu :-/
pokial dojdes v utorok na meetup radi ti ukazeme lpcxpresso osadene chipom lpc1343 ktory pod tucniakom beha.
pozdrav Sargon
2011/4/13 Vitezslav.Zak vitezslav.zak@mindstore.cz
Tome, diky za nabidku. Nazory na ten board probereme. Co jsem se docetl, tak jsou tam komplikace s vyvojovym prostredim (licence, omezena funkcionalita, atd.) ale parametry vic nez slusne. Cena super. Tak kde je zakopany pes?
@Pavol, pokud to nekomplikuje situaci, tak moji objednavku na stm32 discovery zrus. Pokud uz je pozde, tak nevadi, nekomu se treba bude hodit.
jeste jednou diky panove.
V.
On 13.4.2011 21:43, Tomislav Arnaudov wrote:
Ahoj Vitec
STM32 Discovery mam v Brmlabe este nerozbalene :) tiez som sa ulakomil na jeho cenu ale ma svoje muchy ...
pokial chces ja ti ho pozicam a mozes si ho skusit pokial sa rozhodnes ze to je prave to co chces tak urcite sa bude este z farnellu objednavat a mozes si ho objednat neskor ... zatial budes mat samozrejme k dispozicii ten moj
pozdrav Sargon
2011/4/13 rainbof@gmail.com
ahoj prihod mi tam 2x 1715487 + 2x ten krystal co je na arduinu nemuzu to ted nikde najit.
O.
Dne uživatel Tomas Suchan tsuchan@seznam.cz napsal:
Ahoj,
prihod mi tam prosim:
1x 4745061
Dekuji....
TomSuch
Pavol Rusnak píše v St 13. 04. 2011 v 15:29 +0200:
Ahoj!
Robime mega nakup z Farnellu, ak chcete nieco prihodit do kosika tak
mi
do vecera napiste. Ak to budu drobnosti tak vam to mozno zoberieme
zadarmo, na vacsie veci dohodneme zlavu. Ale do vecera! :)
Brmlab mailing list
Brmlab@brmlab.cz
Brmlab mailing list Brmlab@brmlab.cz http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
Brmlab mailing listBrmlab@brmlab.czhttp://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
Brmlab mailing list Brmlab@brmlab.cz http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
Brmlab mailing list Brmlab@brmlab.cz http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab