|
Odin D.
Član broj: 37292 Poruke: 363 *.dyn.one.at.
|
Pozdrav svima!
Evo naidjoh na malo slobodnog vremena da se javim....
Korak,
u pravu si za potrosnju, linearno raste sa frekvencijom. Ja sam to pomjesao sa naponom napajanja (sa kojim potrosnja raste kvadratno) jer sam malo zbrzao. Umjesto da malo razmislim ja sam se oslonio na nesigurnu memoriju gdje sam odnekud iz sjecanja iscupao formulu P=C*Vdd*f^2, a u stvari je f*C*Vdd^2. Prva verzija se ne slaze ni po dimenzijama, ali eto nisam razmisljao nego se prisjecao, sto bi na neki nacin moglo da se protumaci i da je bolje imati jaci procesor nego vise memorije :) Salim se malo, ali nece mi se valjda zamjeriti.
Sto se tice cijene gore navedenog cipa koja je duplo veca od, kako rece, najjacih 8-bitnih cipova, treba imati u vidu da taj navedeni cip ima 144 pina i 256KB flash-a. To je ono sto dominantno odredjuje cijenu, a ne interni hardver. Tako se 16-bitni mikrokontroleri iz te serije (XC164) ali u pakovanjima od recimo 64 pina nalaze po cijeni izmedju 7 i 8 dolara, i to za jedan komad. Nisam siguran da tome moze da konkurise neki 8-bini mikrokontroler. Drugo, ne znam po cemu si stekao dojam da taj cip ima "skroman" interni hardver. Taj hardver ni po cemu ne zaostaje za onim koji imaju ekvivalentni 16-bitni mikrokontroleri ostalih proizvodjaca u istom cjenovnom rangu, pa recimo i Freescale (Motorola). Moglo bi se reci da mu je taj hardver cak i bolji od vecine procesora na trzistu. Gore je hardver samo izlistan, a da bi se ocjenio kvalitet tog hardvera trebalo bi u najmanju ruku barem procitati data sheet. 103 IO pina pruzaju razne mogucnosti, pogotovo sto taj cip ima i konfigurabilni interni kontroler spoljne magistrale te tako moze da radi odjednom sa vise razlicitihi eksternih memorija u adresnom prostoru do 16MB. Cak se i stack i GPS registri mogu mapirati u toj memoriji. A i svi znamo koliko "okolnog" hardvera mogu da ustede slobodni pinovi na mikrokontroleru, tako da je po meni svaki dodatni IO pin mikrokontrolera vredan svakog placenog centa. Zatim, taj procesor ima i "two-stage instruction fetch pipeline" i "five-stage instruction processing pipeline" pri cemu se vrsi i branch target prediction sa jos nekim optimizacijama za sto brze izvrsavanje programa, sto se bas ne srece cesto kod mikrokontrolera u ovoj klasi.
Ali kao sto vec rekoh, ne vidim sta 5-6 dolara gore ili dolje znaci u svemu tome kad se radi o tom "nasem" trzistu, da ga tako nazovemo. Kad se radi o velikim serijama, npr. neka fabrika hoce da napravi milion jeftinih digitalnih rucnih satova, onda je razumljivo zasto ici na minimalisticki dizajn, i tu je ono gdje se jos uvijek koriste i 4-bitni mikrokontroleri, sa svega par pinova. Ja imam jedan flash development tool od Texas Instrumentsa u formi USB sticka u kome je MSP430 F2013 kontroler sa 14 pinova. Kad se odbiju pinovi za napajanje, oscilator, reset... ostane svega par slobodnih pinova, a 16-bitno jezgro unutra ?! Znaci, sve ima neku svoju primjenu i namjenu, i daleko od toga da sam rekao da je 8-bitnim mikrokontrolerima odzvonilo. To nije ni blizu da se desi ni sa 4-bitnim, a kamoli sa 8-bitnim.
Ja sam samo posmatrao stvari iz perspektive jednog projektanta koji radi sam neke izolovane projekte koji se nece proizvoditi u serijama od vise hiljada. Mislim da takav pojedinac na normalnom trzistu ne treba sebi dozvoliti da se danima nateze da li ce ili nece da ugura svoj program u 16K i kako to da postigne. Pa jos da misli i o tome kako da optimizuje neke djelove koda da bi zadovoljio vremenske zahtjeve, pa da neke dijelove pise u asembleru i tako dalje i tako redom. Tako je nekad bilo, cipovi su bili skupi, hardverski resursi uvijek na granici dovoljnog i sl. Ako razmislimo sta su mikrokontroleri nekad trebali da rade i sta danas trebaju da rade, u biti se nista znacajno nije promjenilo. Proces pranja vesa u ves masini od prije 20 god. je manje vise isti kao i danas. Dizanje i spustanje lifta takodje. Poslovanje salterske sluzbe neke banke je manje vise isto kao i prije 20 god. Samo je promjenjeno to sto su cipovi danas 1000 (ovo je samo stilisticka figura, a ne tacan podatak) puta jaci nego prije 20 god. i kostaju 100 puta manje. Programeri PC aplikacija su to odavno shvatili pa poslovanje banke ne realizuju vise u asembleru nego u Java-i, ili cak nekim specijalizovanim softverskim paketima poput SAP-a, ili kako se vec zove i uopste ih ne brine sto bi se takav program mogao izvrsavati na 20 puta slabijim racunarima, samo da su istu stvar pisali u C-u ili Pascalu. Takav je trend i u embedded sistemima. Zasto uzeti neki cip od 2 dolara i pisati u asembleru program za ves masinu, kad mogu da uzmem od 5 dolara i uzivam u blagodetima visih programskih jezika, pa neka je i taj od 5 dolara 100 puta jaci nego sto treba. Mislim, sta znace ta 3 dolara razlike na cijenu ves masine od 500 evra. Valjda i moje vreme i moj zivot imaju neku vrednost majku mu. Silikona ima u neogranicenim kolicinama u zemljinoj kori, a mene nema bas toliko. Uz evaluation board koji sam dobio od Infineona stigao je i neki program, mislim da se zove DAvE, pomocu koga se moze uz par klikova misem dobiti gotov kod za npr. upravljanje jednosmjernog motora ili step motora, kao i automatsko konfigurisanje svih periferija na chipu. Kao sto rekoh, platiti nekog da to radi ispocetka na nekom skucenom procesoru je mnogo skuplje od ovih par klikova misem i procesora od 15-tak dolara. Realno, za upravljanje jednosmjernim ili step motorom je sasvim dovoljan i 4-bitni mikrokontroler, ali koga je to danas briga. U jednoj realizaciji biblioteke funkcija za rad sa grafickim displejem, neko iscrtavanje na graficki display 128x64, treba neki signal drzati neko vreme na aktivnom nivou, par nekih mikrosekundi ne sjecam se bas tacno sta je bilo, a kolega je to cekanje realizovao petljom u kojoj se ponavlja NOP instrukcija! Pitam ga - zasto tako pobogu kad imamo jos potpuno slobodna 2 tajmera?! Kaze on: ionako ima dovoljno preostalog vremena da se sve ostalo na vreme stigne, bolje je da se grije cip nego moja glava. Mislim donekle da je u pravu, ne treba tjerati mak na konac, pod svaku cijenu. Biblioteku je zavrsio za par sati, od cega je pola vremena proveo zabusavajuci. Da smo radili na nekom kontroleru koji je "taman dovoljan" trebalo bi nas petorica da citavu nedelju brojimo koliko ciklusa traje koja rutina da bi postigli da sve radi u zadatim vremenskim granicama, i da po citav dan analiziramo generisani asemblerski kod i trazimo redudanse. I sve to da bismo ustedjeli par dolara. Pa ja cu se radije odreci dorucka jedan dan, i ustedjeti tih par dolara, nego se muciti 7 dana i jos listati datasheet u krevetu pred spavanje. A koliko bi takav rad tek kostao poslodavca? Sta je smisao ustedjeti par dolara na cipu, pa zbog toga potrositi stotine dolara vise na drugoj strani....
Drugo, cijene 8-bitnih cipova nece jos dugo biti "znatno" jeftinije od 16-bitnih, kao sto je uostalom i sa svim drugim stvarima koje imaju noviju verziju. Ko se malo razumije u rad fabrike za proizvodnju cipova zna da je odrzavanje svake linije proizvodnje prilican posao i trosak i da se cijene starih proizvoda vrlo brzo izjednace sa cijenama novih verzija (odnosno, obicno se desi da cijene novih verzija proizvoda padnu na nivo starih, ili cak i ispod, zbog savremenije tehnologije proizvodnje koja se ulaze u nove proizvode, dok stare ostaju kakve su bile), tako da grcevito drzanje za stare stvari tesko da moze donijeti neke koristi u buducnosti.
Korak, u nekoliko navrata si spomenuo to koliko flasha zauzima u prosjeku programska instrukcija i to spominjao kao bitnu osobinu, ali evo ja da dodam da nikad s tim nisam imao problema i da nisam ni cuo da je to neki "veci" problem u praksi. Jednostavno uzmem kontroler sa onoliko flasha koliko mi treba da uopste o tome ne razmisljam. STM danas ima mikrokontrolere sa preko 800KB flasha. Tesko mi je da zamislim razlog zbog koga ne bih tako radio. Ako mozes, napisi svoja iskustva i sta je tu u pitanju?
Sto se tice ovog programa kojeg je korak predlozio za poredjenje performansi, vec sam ranije naveo da se danas za koliko-toliko prihvatljivo poredjenje smatra jedino koriscenje namjenski projektovanih benchmarkova. Ovakvi mali programi u obliku algoritmova za sortiranje, rjesavanja nekih puzzle-ova, mnozenje matrica i sl. su kod poredjenja performansi poznati kao "toy - programs" i generalno se vec odavno smatraju za pogresan nacin za poredjenje, jednako kao npr. i MIPS-ovi.
Cuveni primjer za to je benchmark program matrix300 SPEC komisije sa kraja 80-tih godina koji je mnozio matrice, a 99% vremena u tom programu se trosilo na jednu jedinu liniju koda. Taj program je sluzio neko vreme dok proizvodjaci kompajlera nisu specijalno optimizovali kompajlere da prepoznaje taj benchmark i da optimizuje prevedeni kod bas za taj slucaj. Neki kompajleri su tako dobijali cak i 9 puta brzi masinski kod, ali samo za taj benchmark, ali ne i ostale programe koje korisnik napise. Zbog toga je taj benchmark kao i njemu slicni 1992 i ukinut kao neadekvatan.
Zbog toga ovaj mali program koji je korak predlozio nece bas mnogo pokazati o performansama. Moguce je da jedan procesor 10 puta brze od jednog slozi taj niz, ali da zato npr. 50 puta sporije uradi nesto drugo. Rezultati ce drasticno ovisiti i o koriscenom kompajleru. Generalno poredjenje u svim oblastima je vrlo tesko, a rijetko se i izvodi. Ako je u nekoj aplikaciji dominantan rad sa prekidnim rutinama poredice se takvim benchmarkom, ako se negdje radi stalno seljakanje podataka po memoriji, onda ce taj benchmark biti relevantan za taj slucaj, a ne npr. neko floating point mnozenje koje se npr. uopste ne koristi u datoj aplikaciji.
Mozda jedino "smisleno" i "opste" poredjenje je donekle moguce ako se uporede statistike koriscenosti nekih arhitektura u nekoj velikoj oblasti, kao npr. autoindustriji. Autoindustrija je poznata kao vrlo zahtjevna po performansama mikrokontrolera jer je to oblast u kojoj oni rade u realnom vremenu, zahtjeva se velika pouzdanost, izdrzljivost, a zbog velikih kolicina, zahtjeva se i dobar odnos cijena/performanse (npr. preko 30% cijene danasnjih kamiona otpada na elektroniku! vjerovali ili ne). U autoindustriji prva tri mjesta po udjelu na trzistu drze Freescale, Infineon i STMicroelectronics (koji pravi derivate Infineonove 166 serije). Dakle, u principu imamo 2 vodece arhitekture mikrokontroleara, u mozda najzahtjevnijem trzistu danasnjice po trazenim performansama i kolicinama.
E sad, problem je iz kog ugla se posmatra sve to. Ako svako od nas posmatra iz svog licnog ugla, onda je nemoguce doci do opsteg zakljucka, a sa druge strane opsti zakljucak mozda i nije od neke koristi. Ako neko zivi i radi u Srbiji, onda je npr. PIC za njega dobar izbor: jefina oprema, lako nabavljiva, besplatni kompajleri i drugi alati itd. Sa druge strane Infineon tesko da cete kupiti u Radio Klubu, skoro da i nema besplatnih kompajlera (bar ne nekih znacajnih), oprema nije jeftina itd.... Ali ako neko hoce da se preseli npr. u Njemacku, lakse ce naci posao ako barata sa Infineonom i imace vecu platu..... Dakle, nista nema nekog smisla dok se ne stavi u neki kontekst.
I evo, na kraju da dodam, da sam stekao utisak da je moguce da neko stekne utisak da ja ili neko drugi, ili svi, odabiramo neku platformu i tvrdimo da je ona iz ovog ili onog razloga bolja od drugih. Taman posla da je tako. Ja mislim da nije bas pametno drzati se samo jedne stvari. Ako mi negdje odgovara 8-bitni kontroler stavicu ga, a gdje mi odgovara 16-bitni stavicu i njega. Ako mi negdje odgovara i drugi proizvodjac, uzecu neki cip od njega. Ne vidim sta je tu problem. U mom slucaju bakcem se Texas Instruments-om i Infineon-om, ali ne mogu da tvrdim da su bolji od ostalih (sa izuzetkom PIC-a), jer ostale i ne poznajem toliko dobro da bih mogao dati neko smisleno poredjenje. Znam da se neki lakse nabavljaju od drugih, da je sa nekima laksi pocetak i tome slicno, ali kad se covjek malo odmakne od tih pocetaka, kasnije je manje-vise sve isto, jer da nije tako prezivjela bi samo firma koja pravi ubjedljivo najbolje mikrokontrolere, a sve bi druge propale. TI mi je zgodan zbog male potrosnje, i idealan je za sve sto ide na baterije. Infineon ima zabavan datasheet i programiranje na njemu je labudova pjesma. A ako u obliznjoj prodavnici trenutno ima samo PIC, pa dobro, moze i on. Sigurno bi bilo dobro imati u vidu i ostale, ali ja jednostavno nemam toliko vremena da kvalitetno pratim i to ostalo. Ne pratim vise ni PIC, ali eto imam nesto alata i sjecanja za njega od ranije, pa bih se snasao. Po mom misljenju treba biti otvoren za sve. Prije ili kasnije ce vam doci sef i reci, e od sutra radimo na tome i tome. A zasto: pa eto, one guzonje od gore tako odlucile, niko ne zna zasto. Ili ako nemate sefa, doci ce musterija koja nema nikakvog pojma o cipovima i traziti da se radi bas sa nekim kontrolerom za koji je on negdje, pitaj boga gdje, cuo da je najbolji, i nema sanse da mu se ta ideja izbije iz glave.
Ili, bolje da kazem kako se to do skora govorilo u bivsoj nam, nekad vecoj otadzbini: "Nista nas ne smije iznenaditi!"
A sto se tice C-a, mislim da je o tome potpuno bespredmetno raspravljati. To je sad standard u embedded industriji i ne moze se ignorisati. Mozda poneko i ima vremena da sam razvija svoj prevodilac po svojim mjerilima, ali za vecinu ostale populacije koja se bavi mikrokontrolerima mislim da je to van svake rasprave. Pionirska vremena kompjutera kada se nesto revolucionarno novo moglo napraviti u garazi u kucnoj radinosti su odavno prosla. Jednostavno, mislim da se pojedinac ne moze takmiciti sa velikim korporacijama koje ulazu ogromne pare u razvoj prevodilaca i svega drugog. Ako neko ima takve aspiracije, mislim da je bolje je da se pridruzi nekom timu ili firmi koja to radi, nego da ide "sam protiv vjetrenjaca".
Drugo, u ovoj grani industrije C nije "samo" jezik kojim se isprogramira neki mikrokontroler da nesto radi i gotovo. C je ovdje isto sto i npr. engleski u politici. Postoje milioni stvari osim pisanja programa za mikrokontroler u ovoj industriji koji su uradjeni na C-u, od trenutka projektovanja cipa, pa do pisanja programa za njega na samom kraju, tu su razno-razne biblioteke za simulaciju hardvera, RTOS-ovi i moduli za testiranje itd... Ti mozes da napravis Paskal kompajler za neki FreeScale mikrokontroler, ali gdje cu ja da nadjem sve ostalo za ovaj posao na Pascalu, npr. biblioteku funkcija za recimo tamo neki GLCD kontroler ili neki RTOS. Znaci, opet sve moram da radim iz pocetka. Moze to biti nekom zabavno i zanimljivo itd. ali to je tako samo dok se time zanimas radi zanimacije, a egzistencija ti je obezbedjena sa neke druge strane. Sta da radim ja koji na takav nacin nikako ne mogu da budem konkurentan na trzistu, ako bi mi i za najobicniji uredjaj trebalo ko zna koliko vremena dok to sve sam uradim, a neki klinac hobista uzme gotove stvari sa interneta i zavrsi to za 1 dan. Tamo kod nas u Srbiji ponekad mozes da radis kako hoces, ali ovdje gdje sam ja sada, pri svakom sklapanju ugovora o izvrsenju nekog posla obavezno ima i clan o placanju penala za svaki dan prekoracenog roka, pa ko misli da moze sebi da dozvoli taj luksuz da 3 dana trazi neki bagic u asembleru, ili da razbija glavu kako da sabije program u 16K, ili da izmislja nanovo toplu vodu, neka samo izvoli. Dakle, kao sto sam vec rekao trziste je jedno, a dobre namjere nesto sasvim drugo. Nikad ranije nije bilo tako stegnuto sto se tice vremenskih rokova nego sada. Prvo sto musterija pita nije vise moze li se nesto napraviti i kako i po kojoj cijeni (zbog velike konkurencije zna se da ta cijena ne moze biti bogzna koliko razlicita od ostalih ponudjaca), nego DO KADA mozes to zavrsiti i na osnovu toga obicno bira koga ce da unajmi. Uredjaj treba da zadovoljava zadate performanse, a da li sam ja elegantno pomocu tajmera zadrzao neki pin odredjeno vreme na nekom nivou ili sam vrtio ukrug NOP instrukcije, to je cesto potpuno van fokusa. E sad, nemojte me pogresno shvatiti pa pomisliti da ja smatram da to tako treba i da je tako u redu. Ne, ne radi se o tome, ja samo govorim kakvo je trenutno stanje i da se sve to treba uzeti u obzir. Kako je Korak primjetio, kvalitet softvera opada na racun dostupnosti sve jaceg hardvera. Danas postoje citave horde "nazovi" embedded programera koji su tu stigli iz desktop programiranja, i koji nemaju pojma npr. sta je tranzistor ili margina suma. Ali eto, postoje alati koji omugucavaju i njima da se bave ovim poslom, i sta mi ostali tu mozemo. Jedno je sigurno: ne treba glavom kroz zid, kao ni protiv vjetrenjaca.
Pozdrav.
|