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 <[email protected]>
> 
> >  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 <[email protected]>
> >
> >> ahoj prihod mi tam 2x 1715487 + 2x ten krystal co je na arduinu nemuzu to
> >> ted nikde najit.
> >>
> >> O.
> >>
> >>
> >> Dne uživatel Tomas Suchan <[email protected]> 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
> >> >
> >> > [email protected]
> >> >
> >> > http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
> >> >
> >>
> >> _______________________________________________
> >> Brmlab mailing list
> >> [email protected]
> >> http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
> >>
> >>
> >
> > _______________________________________________
> > Brmlab mailing 
> > [email protected]http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
> >
> >
> >
> > _______________________________________________
> > Brmlab mailing list
> > [email protected]
> > http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab
> >
> >

> _______________________________________________
> Brmlab mailing list
> [email protected]
> http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab

_______________________________________________
Brmlab mailing list
[email protected]
http://rover.ms.mff.cuni.cz/mailman/listinfo/brmlab

Odpovedet emailem