Re: Začínám s PIC
jiri@bezstarosti.cz
jiri@bezstarosti.cz
Středa Březen 30 14:26:14 CEST 2005
>- programova pamat v kilowattoch :-) s premenlivou hodnotou wattu
>(sposobuje to problemy pri konverziach napalovanych suborov, dalej
>tabulky konstant treba previest na retlw, dalej je urcitym sposobom
>"nekala reklama" inzerovat, ze PIC ma xxx kB programovej pamati)
Ale no tak, jine 8b CPU/MCU nepouzivaji pro jednu instrukci vice nez 1B ? No
a tady to hodili na tak sirokou sbernici, jak je potreba. Takze kdyz jedna
instrukce zabere prumerne u 8b CPU/MCU dejme tomu 1.5B (placnu, nedelal jsem
si statistiku), tak uvadeni velikosti pameti v bajtech prece jen nebude
zadnou nekalou reklamou :).
>- RAM sa "volne prelina" s IO/SFR
No a ? Cemu to vadi ? I jine MCU maji SFR v pameti dat ci programu, pokud je
to totez a protoze neexistuje jen jedna pravda, stejne neexistuje i jen
jedna spravna architektura a tak at uz je cokoli cimkoli, nelze rici co je
spravne, jen co je pro jake zpracovani ci postaveni celeho HW chipu
vhodnejsi, rychlejsi ci mene narocne :).
>- zufalo maly adresny priestor a z toho vyplyvajuce takmer nevyhnutelne
>bankovanie
Jo vono je potreba pro vsechny aplikace mit obrovsky linearni prostor datove
pameti bez bankovani? No hlavne ze je na tom x51 v originale pametove lepe,
specialne pro male aplikace bez externi pameti :).
>- kriminalne rieseny stack
Nesmysl. Bohate staci k tomu, k cemu ty MCU jsou urceny a u vyssich typu jej
vyrobite v pripade potreby i softem a nemusi byt zdaleka jen jeden. Cestina
ma take nektere vety reseny naprosto nelogicky, spousta spojeni nedava po
doslovnem pochopeni smysl a presto jsme schopni se ji domluvit. Proste se
pro to musi umet psat a ne hlasat, ze tohle melo takovyhle stack, tohle ho
ma takhle, tak je to urcite spatne. Kritizujete anglictinu za to, ze je
jina, nez jak se mluvi u Vas doma ?
>- nie je myslene na externe pamati (programu ci dat)
Jo vono je 2MB u 8b MCU malo ? Tak to jo. Je to proste o tom, ze kdyz chci
pouzit 8mi vyvodovy broucek, po externi pameti asi netouzim a pokud touzim,
vezmu neco s vice nohama a jeji podporou. Proste si mohu vybrat a to je
duvod, proc nemam potrebu porovnavat jeden konkretni typ PIC s necim jinym,
co ma zase jine vybaveni a uz vubec to nedelam, pokud nemam prehled o tom co
existuje a co ne :).
>- chyba indexovane nepriame adresovanie. Aj ked nie je nevyhnutne, ale
>tu je aj alternativne riesenie (ratanie pointra) utrpenim (s ohladom na
>bankovanie). Toto (a nielen toto) je nasledok zuriveho presadzovania
>jedineho specialneho pracovneho registra.
RISC je o tom, ze vice instrukci dela totez, co jedna u CISC. Co je na tom
divneho ? Architektura PIC byla predpokladam postavena tak, aby to bylo co
nejsnazeji proveditelne ci vyrobitelne a pritom davalo nevice moznosti.
Proste jakysi kompromis. Ano, musi se neco odlozit, abych mohl udelat neco
jineho a to jeste nekolika instrukcemi (treba si pricitat k pointeru a
odkladat si jej atp.), ale to ve vysledku musim u CPU/MCU zalozeneho na
pracovnich registrech nakonec vzdy, kdyz aplikace preroste urcite meze. A
zase jsme u toho, co se puvodne tim PIC myslelo.
>- neintuitivna, zlozita mnemonika - dokazom je pseudo-51 jazyk
To neni dukaz niceho jineho, nez ze lidsky mozek je zoufale omezeny. Kdyz si
nekdo neni schopen zapamatovat ani par instrukci, zvlaste kdyz kazda ma u
PIC ekvivalentni slovni spojeni co znamena (nic neobvykleho ani jinde, ze),
asi by mel delat neco jineho, kde to potrebovat nebude. Proboha, vzdyt to se
vazne vsude musi jmenovat vsechny instrukce stejne i kdyby vyjadrovaly hure
o co jde ?
>- malo instrukcii, navyse zle zvolenych - dokazom je mnozstvo
>"standardnych makier" (typicky priklad su podmienene skoky)
Mohl bych prosim videt nejaky lepsi navrh jak volit instrukce pro takovouto
architekturu ? Predstavme si, ze nejaky MCU udela jednu instrukci a 3x sahne
do pameti. Tenhle 3x sahne a udela 3. Vysledek je stejny, jen tady se kazde
sahnuti nejak jmenuje, kdezto ve druhem pripade se vsechny 3 sahnuti jmenuji
jako jedna instrukce a nelze ji delit.
- akumulator sa vola W
No a co ? To necemu vadi ?
>- do mnemoniky je na ukor citatelnosti prenesena vlastnost riadenia toku
>dat okolo ALU - destination. Nikdy mi nebolo jasne, kde vysledok skonci,
>bez toho, aby som cumel do tabulky.
Kdykoli je to ovsem soucast instrukce, takze nejak se to do ni zapsat musi
:).
>- niektore features sa realizuju bud ako register alebo ako instrukcia
>zrejme podla nalady navrharov (napr. OPTION)
Nikoli, realizuje se to podle jadra a ta starsi pouzivala treba nastaveni
smeru brany instrukci, novejsi nastavenim bitu v SFR.
>Bohuzial, velka cast z tohoto je dedictvo minulosti; takto sa riesili
>problemy navrhu pred 40 rokmi u strojov skladanych zo 74xx.
Stroj na kterem jste to psal trpi z duvodu zpetne kompatibility take :).
>Argument ze cast z tohoto je _nejako_ osetrena v 18-tkovej rade dufam ze
>vytahovat nechcete, aby sme zase neriesili Kostove "lepenie h** na h**"...
Modularni architektura je proste neco, s cim se pocita i do budoucna. Prece
nemuzete vyrabet z duvodu ruznych periferii nekolik naprosto rozdilnych MCU,
jen aby se dokonale zaintegrovalo vsechno do architektury. Proste
architektura je jedna a pak se na to lepi co lze jak lze nejlepe a bohuzel
ne se vsim co kdy zakaznik bude chtit se da pocitat. Kdyz si od Vas nekdo
objedna peknych par vagonu chipu, vy mu ke stavajici architekture
neprilepite jak jen to lze nejlepe co si preje, kdyz se s tim puvodne
nepocitalo ? Kdo z nas je vedma ?
>>je problem sa v nich zorientovat - aj v architekture, aj v sortimente.
To je jen Vas problem. Clovek ktery si neumi nakoupit v supermarketu jen
proto, ze maji kazde zbozi v desitkach typu take bude rikat, ze to ze drive
bylo jen jedno mliko a jeden chleba bylo lepsi a oznacovat co je za chaos.
Tohle je proste argument, za ktery bych se ja propadl hambou.
A ted muj posledni a asi nejdrsnejsi argument. Kolik z Vas navrhlo vlastni
CPU ? Kdyby se totiz takove debaty zucastnili jen lide, kteri na vlastni
kuzi zkusili co co obnasi, asi by se psalo uplne jinak. Argument, ze proc to
delat, kdyz je MCU dost neberu, protoze kdyz chci o necem psat, mel bych
tomu nejprve take rozumet a sam si to zkusit, abych vedel, co je kdy za co.
Placnout, ze proc se tady nenastavuje C u tehle instrukce umi kazdy, ale dat
si do souvislosti vsechna proc, to uz je jina a chce to vice nez placnout po
jednom pohledu do PDF.
Na zaver: Zakaznikovi je naprosto fuk, co si programator o CPU/MCU mysli,
dulezita je pro nej funkcnost, spolehlivost a cena.
--
Jiri Bezstarosti
Další informace o konferenci Hw-list