[ zorrome @ 21.08.2009. 13:53 ] @
Radim kao programer u C#. Pitao me kolega da li bi mogao u C# napraviti program koji bi nešto radio s ATMEL-ovim mikrokontrolerom. Skinuo sam .NET Micro Framework, sve to malo proučio i zapeo na slijedećem pitanju. Što mi treba da bi u C#-u s .NET Micro Frameworkom napisao bilo kakav program, za početak neka napiše neko slovo?
Ako sam u pravu strojni kod dobiven u C# je robusniji i možda sporiji nego u C/C++? Koju tu prednost imaju programeri koji to rade u C/C++ pošto im je broj built-in funkcija puno manji? U C# se isto može pisati unmanaged kod, pa dal bi to bila alternativa?
Znam da iskusnima ovo pitanje djeluje početnički, možda i je, ali imamo obojica bar nekog znanja za početak :)
Hvala!
[ barum @ 21.08.2009. 22:14 ] @
dot net framework je sandbox u kome se izvršava c# bajtkod i ne postoji verzija za bilo koji mikrokontroler. Mikrokontroleri uglavnom imaju Harvard arhitekturu. Svaki pokušaj izvršavanja bajtkoda na ne Von Nojmanovoj mašini svodi se na puko interpretiranje.

Citat:
Koju tu prednost imaju programeri koji to rade u C/C++ pošto im je broj built-in funkcija puno manji?

C i C++ na svu sreću imaju samo jednu ugrađenu funkciju: main.
Sa smanjenjem broja ugrađenih funkcija povećavaju se prednosti.

[ Odin D. @ 23.08.2009. 07:13 ] @
.net Micro je, koliko ja znam o tome (a ne znam puno), trenutno podrzan samo na ARM i Blackfin procesorima. Dakle, treba prvo da nabavite neki ATMEL-ov mikrokontroler sa ARM jezgrom (vjerovatno ARM7 ili ARM9). AVR i ostale verzije koje nisu ARM otpadaju.
[ zorrome @ 25.08.2009. 15:20 ] @
Ok. Pogledao sam neke primjer napisane u C-u za paljenje/gašenje LEDice. Ako se C# prevodi u strojni kod, zašto se ne bi mogao napisati program u C# (npr. ovaj isti) i takav "pustiti" na mikrokontroler? Da nije možda do library koji dolazi s kompajlerima za mikrokontrolere?
[ Odin D. @ 25.08.2009. 17:35 ] @
Nije do library nego do kompajlera. Treba da imas kompajler koji bi tvoj C# kod prevodio u masinski jezik konkretnog mikrokontrolera. Masinski kod nije univerzalan nego se razlikuje za svaki pojedinacni tip jezgra (vrsta procesora koja se nalazi u mikrokontroleru) i ako nemas kompajler bas za taj procesor (mikrokontroler) koji te zanima, nikakve biblioteke ti nece pomoci.

[ barum @ 25.08.2009. 21:10 ] @
Da, C# se prevodi u mašinski kod ali vrlo je bitno shvatiti o kojoj mašini se ovde radi. To je jedna unificirana virtuelna mašina koja je jednaka za sve platforme sa dot net-om bez obzira na realni hardver i njegov set instrukcija, takoreći emulator.

C# je izrazito jezik visokog nivoa i uopšte nije podesan za mikrokontrolere. Čak ni C++ jezik, iako može da se kompajlira direktno u AVR set instrukcija, nije prihvatljiv zbog obilnog korišćenja VMT tabela koje žderu memoriju i cikluse pri najobičnijem pozivu funkcije.

Moja preporuka za početnike je da blinkanje LED diode na mikrokontroleru i slično počnu od asemblera zbog sticanja pravog osećaja neophodnog za bilo koji ozbiljniji dalji rad.
[ branko_g @ 26.08.2009. 11:03 ] @
Složio bih se sa barumom.
Između onoga što sada radiš(C# na "Vindousu"?) i programiranja mikrokontrolera leže svetovi.
Probaj da tim dvema(različitim) stvarima priđeš sa "prave" strane, i sa programiranjem mikrokontrolera
počneš sa nekim čistim C kompajlerom, naravno sve bez operativnog sistema.
Ako bi tačno napisao šta je tvoja namera, pomogao bi time sebi da dobiješ neki konkretan odgovor ili savet.

Pozdrav.