Chce to nejaky poriadny flame... Co tak o jednocipoch? ;-)
Jiri Bezstarosti
jiri@bezstarosti.cz
Úterý Červen 10 02:31:00 CEST 2008
Beznejsi 32bity se daji koupit i v kusovce. Napriklad rada AT91SAM7Sxxx
neni problem a neni to ani drahe. Mam je v par vecech s jsem spokojen.
Ale ze mohou jit uvedene osmibity nekam, nelze souhlasit. Zkusim popsat
situaci 8bit a 32bit sveta se zamerenim se spise na nevyhody 32bitu.
Je spousta aplikaci, kde bohate staci a prece jen ty 32bity nebyvaji v
SO8 nebo DIP8 a malokdy se pro 32bit vytocite na jednostranne desce. Kdo
pracuje jen s klasikou, s 32bity si moc neskrtne.
Nektere 32bity maji interne stabilizator napeti pro jadro, jine ne a
musite jej dat externe - stabilizator navic.
V kazdem pripade jsou to low-drop stabilizatory a potrebuji na tom
napeti jadra jeste kapacitu, ne-li dve paralelne. Bum prask a mate kolem
32bit MCU 7 kapacit a to jste ani nezacal. No abych nebyl skarohlid, u
nekterych malych, treba LM3S101 (CORTEX-M3) se da vystacit i se 4mi
kapacitami.
Ted chcete vyssi taktovaci frekvenci a ta se vetsinou dela pomoci PLL -
bum, prask a mame dalsi 2 kodany a kus odporu okolo.
Pak chcete jako u stare aplikace s PIC, budit vysocesvitivou LED
nejakymi 20mA. Ale ouha, ona to u 32bitu vetsinou zadna brana neumi.
Takze jdeme pripojit budic externe. Brany u 32bitu vubec mohou davat
mnohem nizsi proudy, nez na co jsou 8bitaci zvykli.
Napajeni IO byva typicky 3.3V a vstupy jsou casto 5V tolerant. Jenze ony
ty vstupy byvaji po resetu opatreny pull-upy a dokud je zapnuty pull-up,
nesmite tam tech 5V privest. Takze pokud to chcete vyuzit u neceho, co
Vam muze dat 5V na vstup driv, nez se MCU vzpamatuje, musite pouzit
oddelovac a zapnout mu vystupy az v okamziku, kdy uz jsou pull-up
shozeny v programu. Najednou mate dalsiho brouka na desce.
U novejsich typu najednou zjistite, ze se trochu neco nepovedlo. To se
stava i u osmibitu. Jenze treba Luminary utekla dost podstatna vec.
Jadro totiz dostane napeti az po IO, takze IO uz bezi a jadro ne a muze
vzniknout klikanec na IO, proste to vyhodi ven uroven. Takze Vam
doporuci, aby se snizila kapacita na napeti jadra na minimum, kam az to
jde (tady myslim 1M), aby ty klikance byly alespon co nejkratsi. Hezke, ze ?
Nekterym 32bitum se muze o presnosti ADC, jake maji treba PIC, nechat
jen zdat. Je ale pravda, ze zase byvaji rychlejsi.
Obcas narazite na to, ze existuje nejaka periferie s necim navic, oproti
8bitum, jako napriklad HW handshaking na seriove lajne. Jenze v errate
zjistite, ze neni moc k pouziti. Tohle je konkretne pripad AT91SAM7Sxxx.
U mnoha 32bitu najdete uzasnou taktovaci frekvenci a 1 cyklus na
instrukci. Ale zase prijde jenze ;). Zakopany pes je v tom, ze z FLASH
vetsina 32bitu umi bezet do nejakych dejme tomu max. 24 az 30MHz, pak uz
musite zapnout waitstaty, kdyby nekdo netusil, proste se pocet waitstatu
(cyklu) ceka na pamet. Takze pak uz to tak desne rychle nevypada. No
ano, muzete program hodit do SRAM a odtamtud pustit bez onech waitstatu
(cekacich cyklu) a pak opravdu pobezi onen MCU na maximum, ale u
rozsahlejsiho softu to uz take nemusi jit a nebo to chce vyssi typ s
vice SRAM. Pochopitelne mohou ze SRAM bezet i jen kriticke casti kodu a
waitstaty se prepnou vzdycky behem behu v te SRAM.
Mektere MCU maji jednotku (typicky LPC od NXP), ktera vlastne dela CACHE
pamet mezi FLASH a jadrem. Nebavime se ted o typech s pameti SDRAM, kde
je CACHE jasna (i kdyz existuji i typy s SDRAM a bez CACHE pameti, jako
napr. AT91SAM7SE512). Ale ani takove jednotky pochopitelne vec plne
neresi (i kdyz jiste je to fajn), FLASH je proste omezena pristupovymi
casy a tak at vypada 72MHz jak chce dobre, vysledek az tak skvely neni.
Neprijemne muze byt u 32bitu i to, jaka je rezie s obsluhou preruseni.
Smerem k novejsim typum je to lepsi.
Reklo by se, ze muze byt parada, ze mame 32bit najednou a ze si
nastavime treba 20 dratu zaroven. Ale ouha, pokud jde o nejaky mensi
typ, muzete se vsadit, ze periferie kterou k tomu jeste potrebujete,
bude sedet tak blbe, ze mate branu hloupe rozpulenou a tak se prace s
vystupem trochu protahne, protoze musite bity rozstrkat podle potreby.
Problem v tom jiste neni a ani nic neznameho z osmibitu, jen chci
napsat, ze je blahove si predstavovat, ze vezmu maly 32bit a budu si
nastavovat zaroven spodnich 20bitu brany primo necim, jak to je ve 32bit
cisle bez prehazovani bitu. O tom, ze by byly IO serazeny nejak rozumne
a neprolinaly se ruzne brany vedle sebe na pouzdre, o tom si radeji
nechte zdat, jednostranky desky tady nestaci. Navic aby se obsahly ruzne
periferie a sedely na stejnych IO, budete mit u nekterych MCU misto 32
IO na jedne brane, 32 IO, ale klidne na 2 nebo 3 ruznych branach -
jednou ranou je vsechny zaroven nenastavite.
Co je u 32bitu vetsinou velke plus, je DMA prenos. Pustite ADC prevod na
500kSps a nechate to sypat primo do pameti bez ucasti jadra, s vyjimkou
stavu, ze uz je pamet k DMA plna a treba prerusenim se chce dalsi.
Dalsi vyhodou 32bit je mnozstvi pameti, byva ji oproti 8bitum opravdu
vyrazne vice i na "malych" typech.
Samozrejme je vyhoda take onech 32bit, pri slozitejsich matematickych
ulohach je to slusne znat.
Pro 32 bity se da casto kompilovat v GCC, takze mate kompilator C
zdarma, coz u 8bitu az tak obvykle neni. Navic 32bity casto obsahuji
JTAG, kterym muzete programovat a debugovat, pricemz to neni az tak
slozity HW a neni to pro kazdeho vyrobce, nekdy i jen typ, jiny
programator, jak jsme zvykli u 8bitu.
Ono neni zdaleka vsechno zlato co se trpyti a tak v nekterych aplikacich
si reknete, zaplat panbuh za 8 vyvodovy 8bit s jednim kodanem na
napajeni ;). Sice do nej tak pohodlne nenabusite superalgoritmus v C,
ale na druhou stranu, malokdy od nej vubec budete potrebovat i jen float
cisla.
Je pozde v noci, takze pokud zde najdete nejake nesrovnalosti ci
blaboly, prosim, opravte mne a nebo doplnte, taky mi neprijde na mysl
vsechno hned ;).
--
Jiri Bezstarosti
Miroslav Sinko napsal(a):
>Noooo.. na uvedenom zozname vidim Freescale typy tak poskromne. Ako som uz inde pisal, bol som na ich seminari a tam robili prezentacie rodin MCU od vymyslu sveta. od 8-bit az po 32-bit (snad ich neurazam, ze na viac si nepamatam) a pozor! od 1-jadrovych po predpokladane 64-jadrove!! s tym, ze v sucasnosti maju na trhu myslim 4-jadrove. Padla tam otazka, ze naco sa tak daju vyuzit tie 64-jadrove... odpoved bola "to sa mna nepytajte".
>
>Realne dnes vramci periferii na MCU ponukaju klasicke RS232, SPI, I2C, apod... USB slave, ale aj host, radice DRAM a co ja viem co este.. no s PIC-mi a AVR-kami mozme ist kamsi. Ma to vsak aj druhu stranu.. ponukaju nejake vzorky a aj okliestene vyvojove prostredie zdarma. Ale skuste si kupit napr. par 10-tok, 100-viek kusov na maloseriovu vyrobu...
>
>miro
>
>PS: to pisem len tak vramci flame, ziadne skusenosti ani hlbsie vedomosti o zmienovanych MCU nemam, ale ked uz som bol na tom seminari...
>
>
Další informace o konferenci Hw-list