Odin D. Mlađi referent za automatizaciju samoupravljanja
Član broj: 37292 Poruke: 2549
|
@korak
pa dobro, majku mu, ja izgleda uvijek ispadam neki dezurni namcor cim postavim poneko pitanje koje ne ide kud i svi turci. Nije u redu odmah proglasavati nekoga nedobronamjernim i zacaurenim ako nema isto misljenje.
No, da kazem nesto o konkretnim pitanjima sa teme, bez uvijanja forme (ali ipak dobronamjerno):
9-bitna adresa i 9-bitna magistrala su babe i zabe. 9-bitna adresa je logicki pojam, a 9-bitna magistrala je fizicki pojam. Ako je kod PICa ta MAGISTRALA 7-bitna kako kazes, sa dodatna 2 bita kojima se programer zamajava se dobija efektivna 9-bitna ADRESA. Da bi se bez banaka mogla imati 9-bitna adresa, onda bi fizicka magistrala morala biti sa 9 linija, odnosno morao bi chip hardverski da se prosiruje. Posto je PIC 8-bitna masina, da bi mogao da radi sa 9-bitnim adresama fizicki, morao bi znacajno hardverski da se mijenja to jest da bude 9-bitni. Zbog toga se koristi implementacija memorijskog prostora sa bankama da bi se hardverska magistrala zadrzala na nivou procesora, iako se adresni prostor povecava iznad mogucnosti 8-bitne aritmetike.
Dakle, BANKE SE IPAK KORISTE DA BI SE SMANJILA FIZICKA MAGISTRALA u odnosu na ZELJENI ADRESNI PROSTOR koji prevazilazi mogucnosti npr. 8-bitne, 16-bitne itd masine.
A to sto si napisao da se koriste da bi se smanjila duzina koda naredbe koja sadrzi adresiranje memorije, to mozda moze biti samo nus pojava kod nekog procesora, ali u principu nema nikakve veze sa koriscenjem banaka i pravi razlog je onaj sto sam naveo gore.
I opet cu da kazem, da to nema narocito veze sa harvardskom arhitekturom. Sve sto harvardska arhitektura podrazumjeva je odvojen memorijski prostor za program i podatke i to je sve. Niko tu ne spominje nikakve sirine naredbe od 24 bita i sl. Harvardska arhitektura se srece svuda od 4-bitnih mikrokontrolera do specijalizovanih grafickih procesora, PC procesora i superskalarnih procesora, gdje su naredbe siroke od 4 pa do 256, pa cak i vise bita, gdje si ti tu iskopao bas sirinu od 24 bita i kako si dosao do nje kao karakteristicne za harvard arhitekturu to mi nije jasno.
Dalje, sa 9 bita moze da se adresira 512 lokacija, a ne 2K, a memorija za podatke je implementirana kao RAM, pa ne vidim kakve veze to ima sa flash memorijom koju navodis. Flash memorija kod PIC16 je za program i tu postoji 13-bitni PC koji adresira 8K mem. lokacija za program (ako se ne varam te lokacije su 14-bitne, odnosno programska rijec je siroka 14-bita), a banke se odnose na memoriju za podatke.
(Samo da napomenem da se pojam "bank" u svijetu hardvera i u vezi sa adresnom arhitekturom koristi u vise razlicitih konotacija, i iz vise razlicitih razloga, ali za ovaj slucaj koristi se u kontekstu koji sam gore napisao. To navodim za slucaj da ne iskopa neko nesto sto se slucajno zove "bank" (npr. kod vektorskih procesora ili za memory interleaving, pa da ide bez potrebe u off-topic.)
E sad sto se tice tih "dobrih namjera" prema mladjim generacijama, koje izgleda kod tebe igraju neku bitnu ulogu kod ocjene kvaliteta kompajlera, onda mogu i ja da kazem nesto o svojim iskustvima.
Dakle, jednog dana ce ti mladjani ljudi da odrastu i u cilju odrzanja svoje egzistencije ce pokucati na neka vrata i reci "Ja sam dosao povodom oglasa za posao...". Kada ih potencijalni poslodavac priupita sa kojim alatima barataju (posto se jezik podrazumjeva to ih nece ni pitati), mislim da nece bas ostaviti narocit utisak ako kazu "Baratam odlicno sa korakovim Pascal-asemblerom". Bez obzira koliko taj kompajler bio bolji standardi su standardi i sa standardima se radi. To je isto kao da dodjete da trazite posao u Londonu, i kazete: "Ja ne znam engleski, ali znam esperanto, to je znate, mnogo bolje." Mozda i jeste, ali posao ipak necete dobiti. A ako neko savjetuje mladjim generacijama da svoje vreme investiraju u nesto sto se nigdje ne koristi, ne uzimajuci u obzir kakve ce to posljedice kasnije da ima na njihov zivot i zaposlenje, onda su po meni te dobre namjere pogresno procjenjene.
Sledece, osvrnucu se jos i na iluziju o samozaposljavanju, red je da malo popricamo i o tome, posto je to jedina oblast u kojoj se, za sada, moze razgovarati o tom kompajleru. Prvo se, svako od nas moze preispitati koliko ljudi poznaje u svom zivotu. Zatim sracunajte otprilike koliko svi ti ljudi imaju uredjaja u kojima su mikrokontroleri (bice ih sigurno vise hiljada), a onda probajte da izbrojite koliko tih uredjaja je napravio neki usamljeni strelac iz komsiluka, pa sracunajte postotak.
Da biste sa diskutabilnim uspjehom poceli da radite u samostalnoj reziji potrebno je da imate odredjeno iskustvo koje ne mozete steci sa razvojnom plocicom od 99 evra koju ste kupili u obliznjoj prodavnici. Time mozete da se zabavljate, ali da hranite porodicu i sve drugo sta uz to ide, tesko.
Ako krenemo da ozbiljan osciloskop kosta minimum 2000 evra, osrednji razvojni sistem 500, ICE takodje minimum par hiljada, ozbiljan softwer takodje, Logic analyzer circa 1000, programatori, moduli, svi ostali alati i oprema, porezi, registracije, milion drugih stvari itd... onda tom mladom covjeku u startu treba minimum 30-tak hiljada za start. A sve to ne znaci nista ako prethodno nije stekao negdje neko iskustvo. I sve su to mali troskovi kad se uporedi sa troskovima probijanja na trziste (razni market-planovi, reklame itd...). U nasim uslovima, takvih nema mnogo.
Znaci, korak, od 1000 ljudi koji ce se baviti mikrokontrolerima, 999 njih ce poceti kao juniori u nekoj firmi, a ako vi bazirate vase savjete na onom jednom koji ce da radi sam i povremeno napraviti automatsko paljenje svjetla za komsijinu garazu ili pumpu za bunar koja se zaustavi kad voda dodje do nekog nivoa, to je onda druga stvar. Ja ne govorim o tom jednom covjeku.
A i od svih tih ljudi koji rade samostalno, 99% njih je prethodno radilo negdje drugo pa tek onda pocelo svoj biznis, sto je takodje vrlo vazna cinjenica u ovoj prici, ali se izgleda cesto precutkuje.
Jeste lijepa iluzija zamisljati da ce svako od nas da sjedi kod kuce, ustaje kad oce i radi kad oce, ceprka nesto sa mikrokontrolerima i to prodaje za velike pare itd... Medjutim, sto se prije rijesite te iluzije to bolje. Ko od vas ima mp3 player ili bilo sta drugo pravljeno kod nekog privatnika iz komsiluka?
Moze se i desiti da nekom upadne sjekira u med, ali to je izuzetak, a ne pravilo.
U svakom slucaju, put koji vi predlazete je po mom misljenju naopak od realnosti. Da se mladi ljudi u startu zamajavaju pisanjem kompajlera za svoje mikrokontrolere, a pri tom tek sto su poceli da rade sa tim, je isto sto i ohrabrivati covjeka koji je dva puta skocio padobranom da pocne konstruisati avione i to ne bilo kakve nego neke koji ne mogu da slecu ni na jednu poznatu pistu u svijetu, ali pri tom trose manje kerozina!
Vecina ljudi koji posjecuju ovu temu su mladi ljudi koji se interesuju za mikrokontrolere, a na tome ce i ostati ako se ne osposobe da dobiju neki posao u toj struci. A to osposobljavanje podrazumjeva dobro baratanje sa standardnim alatima. Nekad ste mogli lako da se zaposlite u nekoj firmi bez narocitih znanja o tome, pa vam daju neke knjige, pa vi kao citate pola godine o tome, pa zapitkujete starije kolege i tako dok ne naucite. Ta vremena su prosla. Danas tako mozete dobiti posao jedino ako vam je blizak rodjak direktor firme, ili je drzavna firma sa platom cirka 200 evra. Ja sam nedavno bio na jednom razgovoru za posao u firmi gdje se radilo sa opremom sa kojom nemam iskustva, ali bih za 15-tak dana mogao da se presaltam, jer su principske stvari valjda iste. Medjutim, pitanje poslodavca je bilo: "Mozete li vi od sutra da se ukljucite samostalno u projekat?". Ja sam rekao da ne mogu, da mi treba najmanje 10 dana, oni mi se zahvalili na razgovoru i rekli da im je zao, da im treba neko odmah. Medjutim, nije stvar u tih 10 dana, vjerovatno znaju i sami da nece naci nikog za tako kratko vreme, ali mislim da mi nisu povjerovali da uopste znam nesto o tome. Vjerovatno su mislili, evo jednog nema pojma, hoce da nas obmane, misli da ce za 10 dana stici nesto da nauci. Eto, tako je to u realnosti kad odrastete, izvjestaj iz prve ruke.
I na kraju, mene u ovoj raspravi uopste ne interesuju bilo cije subjektivne namjere. Ako vi napravite kompajler koji sabere da je 2+2=5, ja cu da kazem da je los. Cak i ako vi kazete da cete sav prihod od prodaje tog kompajlera pokloniti centru za nezbrinutu djecu, ja cu opet da kazem da je los. Nemojte me prozivati za nikakve namjere, jer me to ne zanima. Za mene je ovo tehnicki forum i ja komentarisem samo tehnicke aspekte proizvoda (a jedan od tih aspekata je i upotrebljivost u prakticnom zivotu) i nista drugo.
@Stojane
ako se radi samo o prosirenju asemblera radi lakse citljivosti onda ok. Ja sam se osvrnuo na optimizaciju koriscenja memorijskih banki jer se nesto o tome pricalo u par postova prije moga. Inace sve ostalo receno je samo po sebi jasno i ne zahtjeva neko dodatno objasnjenje. Ipak, moram jos jednom da napomenem da nisam imao namjeru da komentarisem kvalitet predlozenih rjesenja, samo da ukazem na primjenjivost svega toga u prakticnom zivotu.
Sto se tice ovog primjera koji sam okacio u attachmentu, opet mali nesporazum. To sam i naveo kao primjer koliko mali rezultati optimizacije se postizu cak i prilikom koriscenja slozenijih matematickih aparata i algoritama, a ne obratno, da bih pokazao to kao neki dobar metod optimizacije. U tom smislu irelevantno je koji asemblerski kod se optimizuje (hitec-ov ili neki drugi), jer se prikazuje ustvari poboljsanje te optimizacije nekog automatski generisanog asm koda. Da je optimizovan neki rucno pisan asemblerski kod (kao sto bi bio u slucaju korsicenja ovog korakovog kompajlera) poboljsanja bi sigurno bila zanemarljiva, ako ne i negativna. Time sam samo htjeo da skrenem paznju da mozda nema smisla razmsiljati o toj vrsti optimizacije kod pravljenja ovog kompajlera koji je blizak asembleru. Jedino mozda na neki vizuelni nacin povecati preglednost toga. Ali ne mora ni to biti od nekog znacaja. Ne znam koliko ko ima iskustva sa programiranjem mikrokontroelera, ali asembler se mahom koristi za krace i jednostavnije projekte, a kod programa tog obima programer koji to radi ionako sve to ima manje-vise u glavi, pa mu ni te informacije na ekranu u nekoj vizuelno preglednoj formi ne moraju nuzno biti od velikog znacaja (sto se tice tih memorijskih blokova). Medjutim, preglednost koja se postize pisenjem "if W > 50 then" o odnosu na klasicne asemblerske mneomonike je ipak znacajna, sa tim se bezuslovno slazem.
Sto se tice ukljucivanja funkcija iz vec gotovih biblioteka onako kako ste napisali nema problema, ali je problem sto se te biblioteke skoro nikad ne isporucuju sa izvornim kodom, tako da copy-paste otpada. Moze se iz hex ili iz binarnog coda dobiti asm kod, ali dok bi se on prepravio na ovaj pascal-asembler lakse bi ga bilo ispocetka napisati.
Pozdrav!
|