![]() | ![]() |
![]() |
| ![]() |
| |||||||||||||
Sagu nastavljate sami
Bez obzira na to što najnovije embedded platforme, bazirane na višejezgarnim procesorima najnovijih ARM generacija, pružaju dovoljno snage za veliki broj poslova nekada rezervisan za moćne radne stanice, veliki broj namenskih sistema ima vrlo ograničene hardverske resurse. S obzirom na to da se uređaji za industriju, saobraćaj, medicinu i slično prave tako da funkcionišu dosta duže od prosečnog PC računara, realno je sretati se sa sistemima starim pet i više godina koje treba popravljati i nadograđivati, i samim tim poznavati njihova ograničenja. Sitno, sitnije
Dok se na „velikim” računarima apsolutno ne preporučuje korišćenje administratorskog naloga osim za poslove administracije, na embedded distribucijama „root” je najčešće jedini nalog u upotrebi. Embedded sistemi u eksploataciji koriste ograničen skup programa kojima je često potreban pun pristup hardverskim resursima, bez interakcije sa korisnikom i bez rada više korisnika u isto vreme, pa nema poente softverski braniti pristup bilo kome (osim ako specifičan scenario ne nalaže drugačije). Standardna C biblioteka u malom Standardna GNU C biblioteka (Glibc), koju direktno ili indirektno koriste gotovo svi programi ili njihovi interpreteri, može biti prevelika ili previše memorijskih zahtevna gledano iz perspektive arhitekte sistema ekstremno ograničenih resursa. Na primer, standardna implementacija funkcije printf alocira memoriju koristeći malloc, prosleđene argumente obrađuje koristeći varijabilnu listu argumenata (zaglavlje „stdarg.h”) i slično, što može rezultovati prevelikim trošenjem memorije i procesorskih ciklusa u „knap” uslovima. Osim toga, GNU C biblioteka uključuje razne podbiblioteke koje najčešće nisu potrebne u embedded okruženju (libNSS za šifrovanje u mrežnim protokolima, libDB za upravljanje bazom podataka itd.), i povrh svega čuva binarnu kompatibilnost sa prethodnim verzijama, tako da je moguće izvršavati programe dinamički linkovane sa prastarim verzijama Glibc. Postoji više minimalističkih implementacija standardne C biblioteke, kao što su eglibc, µClibc i Bionic (specifična za Android), a programi povezani sa njima mogu biti deset do sto puta manji nego kada se povežu sa standardnom. Kao minus stoji redukcija funkcionalnosti i gubljenje binarne kompatibilnosti unazad, što u ovakvom okruženju nije bitno jer se cela distribucija najčešće formira od programa i biblioteka linkovanih sa istom verzijom C biblioteke (npr. onom koja se isporučuje uz toolchain), umesto da se ubacuju gotovi izvršni programi pokupljeni iz raznih izvora na internetu. Pandorina kutija O projektu BusyBox pisali smo u SK 11/2012. Najkraće rečeno, radi se o programu koji u sebi objedinjuje brojne Linux i Unix komande (ponajviše iz paketa „GNU Coreutils”), spakovane u jedan izvršni fajl. Taj fajl se automatski ponaša kao odgovarajuća komanda ako se zove isto kao ona, ili ako je pokrenut preko prečice koja nosi odgovarajući naziv. Na primer, pokretanjem izvršnog fajla busybox putem prečice nazvane cp koja ukazuje na njega dobićete funkcionalnost standardnog Unix alata za kopiranje fajlova. Proučavanjem strukture tipične embedded Linux distribucije uočavamo da najveći broj komandi u sistemskim folderima zapravo predstavlja simboličke linkove na isti izvršni fajl (busybox), što otvara mogućnost da se specifična Linux distribucija u ekstremnom slučaju „skreše” na jednocifreni broj megabajta. Zbog toga, BusyBox čini okosnicu embedded distribucija jer nudi ogroman broj komandi „konsolidovanih” u jedan fajl, uz smanjenje potrošnje na skladišnom uređaju (eliminisanjem suvišnog programskog kôda ili izbacivanjem retko korišćenih opcija u okviru komandi) i smanjenje upotrebe RAM (ako se više komandi izvršava istovremeno, samo jedna kopija BusyBox će se nalaziti u memoriji). „Sirovi” fleš Iako se embedded sistemi polako, ali sigurno, distanciraju od upotrebe „sirovih” fleš čipova, na starijim uređajima se oni gotovo bez izuzetka koriste kao „storidž” sa koga se podiže Linux. Ovakvi čipovi se vezuju direktno na memorijski kontroler sistema-na-čipu, pa od njegovih karakteristika i drajvera operativnog sistema zavisi koji će tipovi biti podržani (širina magistrale, sinhron/asinhron pristup, veličina stranice i „erase” bloka, jačina ECC kôda u zavisnosti od količine rezervnih bajtova po stranici itd). Ako konkretan čip jednog dana nestane sa tržišta, često je potreban redizajn hardvera i nadogradnja softvera, od čega se i inženjerima i klijentima diže kosa na glavi, jer redizajn unosi rizik u rad do tada proverenog rešenja. Da problem bude veći, uobičajeni fajl-sistemi koji se koriste za hard-diskove, SSD-ove i USB fleš drajvove ne vode računa o problemu znanom kao „wear-out”, odnosno ograničenom broju upisa u memorijske stranice u čipu. Hardverski kontroleri unutar USB i Solid State drajvova, na koje su takođe povezani ovakvi fleš čipovi, sami vode računa o tome i ravnomerno eksploatišu celokupan kapacitet diska (tzv. „wear leveling”) bez potrebe za posebnim angažmanom korisnika ili operativnog sistema (SK 03/2014). Kod fleš čipova zakačenih direktno na memorijski kontroler SoC (System on Chip), to bi možda trebalo da bude posao drajvera za kontroler, ali on to ne obezbeđuje. Zbog toga se poseže za rešenjem na sloju iznad. Linux kernel nudi apstrakciju zvanu MTD device i odgovarajuće fajl-sisteme koji se na nju oslanjaju, a pored brige o čitanju i upisu u fajlove, vode računa i o „wear levelingu”. Najkorišćeniji su JFFS2 i UBIFS, gde je UBIFS (Slika 1) po svojim karakteristikama napredniji pošto, između ostalog, podržava kompresiju pri upisu i vrši „wear leveling” po celom kapacitetu čipa umesto samo u okviru logičke particije. Nedostatak (uslovno rečeno) je nešto komplikovanije inicijalno podešavanje. Zbog svega ovoga, u novim hardverskim dizajnima sve više se sreću eMMC čipovi (suštinski, isto što i SD kartica, samo spakovano u čip i povezano na standardni SD/MMC interfejs) koji se tretiraju praktično kao hard-diskovi, pa se bez bojazni mogu formatirati u ext3/4 uz sve blagodeti koje oni nude. Ušrafiš i ne misliš Nadamo se da smo ovim serijalom zainteresovali naprednije korisnike Linuxa na PC-u koji bi voleli da se upoznaju sa nečim relativno novim (ali zasigurno divljim). Ako vas je ova tematika privukla, kao polaznu tačku možemo preporučiti platforme kao što su Raspberry Pi i BeagleBone (Slika 2), koje se uz pomoć velike korisničke zajednice i brojnih dodataka mogu pretvoriti u uređaje najrazličitijih funkcija. Ako ste student elektronike ili računarske tehnike, sistemi zasnovani na Linuxu mogu značajno olakšati i ubrzati realizaciju složenih ideja, naročito ako ste prethodno radili samo sa mikrokontrolerskim sistemima. Čak i ako vam ovo nije struka, uz elementarno poznavanje arhitekture računara i bogatstvo gotovog softvera koji postoji za Linux i Android, samo nebo je granica. Srećno hakovanje! Ivan TODOROVIĆ |
| |||||||||||||||
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |