PIC vs ATMEL #2
VF
vf at elte.hu
Tue Feb 10 20:13:50 CET 2004
Thus spake Nagy Endre <gumo at lucifer.kgt.bme.hu>:
> A problema ott van, hogy asm-ben irtak eredetileg. Ha C-ben irtak volna,
> most nem kellene atirni.
Az biztos, mert nem is lett volna termek az elozo verziobol sohasem.
A 80C552 verzio 16 masodpercig gyujtott adatot (szabvany) kb 10 masodpercig
analizal. C-ben percek lennenek, de valoszinu hogy bele sem fert volna a
64k-ba. Illetve igy sem fert bele, de szet lehetett vagni 3 olyan reszre,
melyek egyenkent mar belefertek. Ha nem fer bele, lapozgatni kell, az meg
kegyetlenebb... Most 1sec alatt van, ezert meg fogjuk csinalni a holter
uzemmodot is, mert ez a proci igy elbirja azt is.
>> A teszteleshez korulbelul 2000db 128k-s adatcsomagon kell vegigfuttatni
>> a progit, egyen sem szabad megbuknia. Akkor nagy baj valoszinuleg nincs.
>> A C eddig legalabb nehany adatcsomagon rosszul mukodott, a hibat sohasem
>> talaltak meg.
>
> Ezek szerint dokumentalva sincs rendesen. Ezzel nem kene dicsekedni.
Kuldhetek mintat. Kivaloan dokumentalva van. (Mibol gondoltad hogy nincs???)
Valamint a fejleszto is elerheto, epp most beszeltem vele telefonon.
Ennek ellenere nem sikerult meg senkinek. Ismetlem, tobb 10000 sor.
Mar egyszer atforditottak cross-compilerrel, mukodott.
Most en is atforditottam, ez is mukodik.
Kezzel atirni eleg remenytelen...
> Ebben az esetben persze, ha adott egy dokumentalatlan, jo nagy asm,
> nyilvan nem marad tul nagy mozgaster.
Mas esetekben is hasznos az asm. Tudom, a ledvillogtatot is sokan
valami embedded linuxos kartyaval csinalnak... Jo dragan.
Abbol sohasem lesz termek.
>> Asm-ben optimalizalt digitalis szuro. Biztos lehetne C-ben is, de minek?
>
> Hogy rovid, szemleletes es hordozhato legyen. Egyebkent ha eletbevago egy
> adott asm felhasznalasa, beteheted egy file-ba, a linker majd elintezi. Vagy
> beteheted egy libbe is.
En inkabb forditva probaltam, asm-bol akartam C-t hivni.
Nem mukodik, bar meg lehetne oldani ha nagyon kene...
>> Irhattam volna C-ben is, de akkor ezen a procin egyaltalan nem ment
>> volna (ez tuti), dragabb procit kene megvetetni a felhasznaloval, valamint
>
> ???
>
> Csak egyszer probalj ki egy jol megirt algoritmust C-ben,
> optimalizacioval, es nezd meg az asm outputot. (gcc-vel: gcc -O2 -S)
> Egy atlagos asm programozot porig alaz meretben es futasidoben is, sot asm
> guru is maradt mar csondben a latvanytol. Es minel nagyobb egy program,
> annal jobban no a forditoprogram elonye.
Valoban, 32 bites procikra neha egesz jol optimalizal.
Azert a kezi optimalizaciot nem tudja utolerni.
Es amig nem talaljak fel a mesterseges intelligenciaval mukodo
forditokat, erre nincs is semmi esely.
(Remelem ezt nem vitatod, mert trivialis)
A 8 bites procikra mind nagyon rosszul forditanak.
Nezzem meg leforditott kodot? M68k-n rengeteget lattam, AVR-en is megneztem.
Irtam is a listara, probaltam kideriteni hogy hogyan kell atadni a
parametereket a C fuggvenynek ha asm-bol hivom. Meglepo modon ez az
optimalizacio szintjetol is fugg. (ha kikapcsolom az optimalizaciot,
regiszterben varja, ha bekapcsolom, a memoriaban, erdekes...)
A generalt kodot barmikor erolkodes nelkul megverem, ennel mindig sokkal
jobbat szoktam irni.
De ha mar annyira jonak tartod a C forditokat, irj legyszives egy 24 bites
koefficiensekkel es nodeokkal es 48 bites akkumulatorral dolgozo masodrendu
IIR savzaro szurot, es hasonlitsuk ossze a teljesitmenyet az asm
verzioval. De akar lehet 16/32 bites is, az elso verziom nekem is olyan
volt, nem akarlak nagyon mexivatni a 24 bittel, mert mire azt C-ben
lekodolod, en 3x megirom assemblyben.
Meg valami: most egy projecthez kellenek kriptografiai algoritmusok.
Kb minden forras elerheto, termeszetesen C-ben.
(Azert a lenyeget megtalaltam AVR forrasban is :)
Teljesen termeszetes, hogy az algoritmus bizonyos reszei tobb procira
meg vannak irva, es a masik forrast forditva 30% teljesitmeny novekedes
illetve csokkenes merheto! Mind a ketto C forras. Latatlanban is biztos
vagyok benne, hogy asm-be atirva meg nagyobb teljesitmeny lenne elerheto.
Es ha mar amugy is minden procira mas C forras kell, nem sok ertelme van...
Annyi, hogy elso verzionak jo, valahogy lefut, de igen gyengen.
Ha hasznalni/eladni is akarja az ember, muszaj megoptimalizalni.
Akar assemblyben is...
Ha a forditok valoban olyan jo kodot tudnanak generalni, hogy azon
lenyegesen mar nem lehetne optimalizalni, akkor en is magasszintu
nyelvben programoznek mindig...
>> a keszulekben mondjuk ketszer gyakrabban cserelni elemet a nagyobb
>> fogyasztas miatt. (Ez majd akkor lesz elhanyagolhato, ha a keszulekben nem
>
> Ez csak eloitelet.
Nem az. A proci amikor nem dolgozik, megy aludni. Normal mukodes kozben
20mA korul zabal, ha alszik <10uA. A tobbi periferia elhanyagolhato, <1mA
illetve ha a kijelzo be van kapcsolva, az eszik ~15mA-t.
Ha 10% a CPU-terheles, az atlagfogyasztas 2mA+periferiak, ha 20%, akkor
4mA+periferiak. Ez nem eloitelet.
A valodi sebessegeket pedig azonnal osszehasonlitjuk, amint kesz a C-ben
irt szurod. En sajnos nem fogom tudni futtatni, mert a C verzio biztos nem
lesz kesz a szuro idoablakaban, de majd valami JTAG emulatorral :) kimerjuk.
Feltetelezem hogy az Atmeles fiuk jobban ertenek a C/asm progizashoz, mint
mi itt a listan, es ok is asm-ben csinaltak. Talan nem veletlenul.
A C kb arra lenne jo, hogy sprintf()-el irogassak a kijelzore.
Sajna kicsit mexaladt a kezem a billentyuzeten, veletlenul kicsuszott egy
asm sprintf, ugyhogy a C innentol erdektelen szamomra, a munkamat nem
segitene, csak feleslegesen lassu.
Illetve az egyutthatok szamitasahoz a fordito jo volt :)
>> Egyaltalan nem vagyok hive a gagyi gyartasnak.
>
> Szerinted nem asm = gagyi?
Nem. Viszont van egy olyan szint, amikor vagy megcsinalod asm-ben,
vagy egy kategoriaval feljebb kell lepni cpu-teljesitmenyben, es
ezzel osszefuggesben arban is. Ez pedig azt jelenti, hogy a
versenytarsak, akik nem felnek egy kis assemblyvel beszennyezni a
kezuket, elonybe kerulnek.
Nyilvan majdnem mindent meg lehet csinalni C-ben, ha eleg eros
vasat teszel ala, es azt meg tudod vetetni a felhasznaloval.
> Az ujabb procik egyre magasabb szintu nyelvekkel tudnak hatekonyak
> lenni. Ezt figyelmen kivul hagyod.
:)))))) Ez hulyeseg!! Az, hogy C-hez optimalizalt felepites, ket
dolgot jelent. Egyreszt valamivel hatekonyabban forditanak ra a C
forditok, mint egy C-hez nem optimalizalt felepitesu procira.
Masreszt marketingszoveg, ertelem nelkul.
(Designed for Windows 95, etc...)
Amit meg lehet csinalni C-ben, azt legalabb olyan jol, vagy jobban
meg lehet csinalni asm-ben is. Forditva nem igaz, amit meg lehet
csinalni asm-ben, azt vagy meg lehet csinalni C-ben, vagy nem, de ha
meg is lehet, maximum ugyanolyan jol, jobban nem.
(Pontosabban a forditok fejlodesevel aszimptotikusan kozelit a C-bol
forditott kod minosege a tiszta, optimalizalt asm-hez, de azt soha
el nem fogja erni)
Aggaszto hogy ilyen tevhitek terjednek a listan, egyesek mar nem is
tudjak hogy egyaltalan mi az hogy assembler...
>> En is kepes vagyok. A megrendelo es a vevok nem... Pedig milyen jo lenne
>> azt mondani, hogy ez a ket borond az akku, a szellozot pedig ne takarjak
>> le, mert felrobban az egesz, es akkor hasznalhatnek tetszoleges
>> teljesitmenyu, akarmilyen nyelven elegendo sebessegu procit.
>
> Effele kompromisszumok nelkul is hasznalhatnal hordozhatobb, tomorebb
> programnyelvet.
Ez mar egy altalanosabb, igy nehezebben cafolhato kijelentes :)
Pontosan milyen nyelvre gondoltal?
En a makrokat hasznalom ilyen celra, csinaltam magamnak egy egyszeru
kis nyelvecsket, melyben ugyanugy minden kenyelmi szolgaltatast igenybe
tudok venni mint a C programozok, ugyanakkor megmarad az assembler
szabad stilusa, rugalmassaga es hatekonysaga.
(Meg m68k-ra irtam, es csak egy reszet irtam at AVR-re, folyamatosan
mindig amire szuksegem van)
Itt jegyeznem meg, hogy az AVR procik furcsasagai es kellemetlen
meglepetesei, ha ugyanarra gondolunk, mind egy-egy nehany soros
makroval egyszeruen es tokeletesen eltuntethetok...
(Erdekes hogy erre csak en jottem ra)
>> Termeszetesen. Pl az AVR-t C-ben vagy Java-ban programozod, a PIC-et
>> assemblerben, ugyesen optimalizalva.
>> Az eredmeny nem ketseges.
>
> Nem bizony. Csak nem abba az iranyba, ahogy elkepzeled.
Merjuk ossze az eronket. Mivel ti hivtatok ki, en valasztok fegyvernemet :)
Legyen a FIR/IIR szuro. Szoljatok ha kesz a megoldasotok, kirakjuk
valahova a webre az enyemmel egyutt, aztan lehet nezegetni.
(Lesz nagy rohoges... Az enyemben ugyanis egyetlen felesleges utasitas
sincs, a sorrend pedig ezeken a procikon nem szamit :))
> Gumo
--
Valenta Ferenc <vf at elte.hu> Visit me at http://ludens.elte.h u/~vf/
"Talpig becsuletes, afelett nem garantaljuk"
More information about the Elektro
mailing list