Kérdés:
Hogyan válhat beágyazott szoftverfejlesztővé?
Daniel Grillo
2010-07-08 18:10:54 UTC
view on stackexchange narkive permalink

Szeretnék néhány tippet azoknak, akik jó beágyazott szoftver-fejlesztőkké akarnak válni, vagy fejleszteni szeretnének ezen a területen.

Mit kell tudnom a hardverről, a szoftverről?

Melyik könyv ajánlott leginkább? Blogok?

Végül hogyan válhatnék kezdő hobbistából kiváló szakemberré?

Tíz válaszokat:
Jay Atkinson
2010-07-09 04:28:30 UTC
view on stackexchange narkive permalink

Eddig minden válasz jó volt, de bedobom a két centemet.

Íme néhány tipp, néhány csavarral és extra:

  • Learn C: A hardver alapvető nyelve, amely még mindig hordozható (túl bizonyos mértékig). Ne csak megtanulja, hanem váljon szakértőjévé annak minden funkciójának, például a volatilisnak és annak, hogy miért fontos az eszközillesztők írásához.
  • Kezdjen egy jó fejlesztőkészlettel, például az Arduino-val, de amint azt korábban említettük, tanuljon meg más építészeteket, ha már jól érezte magát. Szerencsére vannak olyan Arduino kompatibilis táblák, amelyeket más processzorokkal építettek, így ugyanazt a rajzot átírhatja egy másik uC-re, és nem ronthatja el az egész tervét, miközben érezhet valami újat. bátran találja ki újra a kereket eszközmeghajtókon vagy más kóddarabokon. Ne csak bedobja valaki másnak a járművezetői kódját odalent. Értékes a kerék újrafeltalálása, amikor tanulsz.
  • Hívd ki magad, hogy hatékonyabban írd újra a kódot a sebesség és a memóriahasználat szempontjából.
  • Ismerkedés a különböző lehetőségekkel a beágyazott rendszerek szoftverarchitektúráinak stílusai. Kezdje az alapvető megszakításvezérelt / háttérhurok-feldolgozással, majd lépjen fel a háttérütemezőkhöz, majd a valós idejű operációs rendszerekhez. Magam jobban szeretem a Mercurial t.
  • Regisztráljon még néhány ingyenes forrásvezérlő tárhelyre, például a Sourceforge.net vagy a Bitbucket.org webhelyre, hogy otthont adjon a projektjének, még akkor is, ha csak te vagy az egyetlen az egyik azon dolgozik. Biztonsági másolatot készítenek a kódról, így nem kell aggódnia az esetleges merevlemez-összeomlás miatt, amely mindent elpusztít! Az elosztott VCS használata hasznos, mert ellenőrizheti a merevlemezen végrehajtott módosításokat, majd készenléti állapotban feltöltheti a gazdagépre.
  • Tanulja meg jól eszközeit bármilyen chiphez! Elengedhetetlen annak ismerete, hogy a fordító hogyan hozza létre az összeszerelést. Éreznie kell a kód hatékonyságát, mert lehet, hogy át kell írnia az összeállításban. A linker fájl használatának ismerete és a memóriatérkép kimenetének értelmezése szintén elengedhetetlen! Honnan tudod másképp, hogy az imént írt rutin a bűnös-e abban, hogy túl sok ROM / Flash-et vesz fel!
  • Tanulj meg új technikákat, és kísérletezz velük a terveid során! Hibakereséskor ne tegyen semmit. Ellenőrizze!
  • Ismerje meg, hogyan kell védekezéssel programozni a hibák elfedésére és a feltételezések ellenőrzésére (például az assert használatával)
  • Hozza létre a hibakeresési információkat a kódba, ahol például megadhatja a memóriafogyasztást vagy profilokat készíthet. kód időzítőkkel vagy tartalék csapok használatával az uC-n az O-hatókörön belüli megszakítási késés váltására és mérésére.

Íme néhány könyv:

Íme néhány webhely:

  • Beágyazott guruk
  • Ganssle Group Jack Ganssle csodálatos történelmi történeteket mesélek el. Olvassa el a cikkeket. Néhány dolgot mégis prédikál.
  • Embedded.com Jó információk a legújabb technikákhoz és tippek Ganssle-től, Barr-tól és más iparági szakértőktől.
@Adam: Imádom azt a könyvet! Pragmatikus programozó! Nem hiszem el, hogy elfelejtettem!
+1 a Mercurial számára. Tetszik, bár van egy olyan érzésem, hogy a git ismerete értékesebb lenne. Az alapok megismerése az SVN használatával meglehetősen fontos, ha más projektekkel szeretne hozzájárulni, vagy más projektekből kíván részt venni, mivel ezt sokan használják.
Toby Jaffey
2010-07-08 18:23:51 UTC
view on stackexchange narkive permalink
  • Ne feledje, "Nincs ezüstgolyó", ne essen abba a csapdába, hogy azt gondolja, hogy egyetlen eszköz, módszertan, nyelv vagy rendszer képes megoldani minden problémát
  • Legyen a C szakértője
    • Tanuljon meg boldogulni malloc () és POSIX nélkül
  • Ne ragaszkodjon egy építészethez , könnyű véletlenül PIC-, AVR- vagy ARM-rajongóvá válni
  • Készítsen cuccokat, javítsa ki azokat, és működjön. A gyakorlat tökéletesít
  • Tanuljon meg legalább egy forrásvezérlő rendszert (SVN / git / stb.), És használja azt
  • Mindig legyen kész arra, hogy tesztelje feltételezéseit. A hiba általában abban rejlik, hogy feltételezed, hogy működik
  • Ne légy túlságosan függő a hibakeresőktől, ezek minden rendszerben különböznek és megbízhatóságuk változó.
  • Gondolj takarékosan. A problémamegoldás során gondoljon a kódnyomtatásra, a RAM-ra és a hardver költségére.

Könyvek esetén azt javaslom, hogy ássa át az előzményeket. A mai beágyazott szoftveres technikák többsége a múlt év véres pereméből származik.

Az összes tanult dolog közül a verziókezelés (jelenleg a felforgatást használom) a legértékesebb dolog a termelékenységem szempontjából. A Microsoftnál volt forrásbiztonságunk, amikor itt kezdtem, ezért rossz megoldást, majd jót használtam.
El nem tudom képzelni az életemet forrásellenőrző rendszer nélkül. Jelenleg SVN-t is használok. Nem tudom, hogy működtek a dolgok, mielőtt ismerem az SVN-t.
+1 a "A hiba általában abban a dologban van, amiről feltételezed, hogy működik"
"Tanulj meg boldogulni malloc nélkül" - Miért? A verem / halom ütközés kockázatának minimalizálása érdekében?
@rzetterberg Sok beágyazott rendszer kerüli a dinamikus memória-allokáció használatát, mivel ez halomtöredékhez és indeterminizmushoz vezethet
Johan
2010-11-26 14:06:00 UTC
view on stackexchange narkive permalink

A többi válasz remek, de a hobbista és a szakember közötti legnagyobb különbségnek a minőségről való gondolkodásmódnak kell lennie. Szóval haladjon végig a projekten, ne hagyja abba, amikor 80% -ban elkészült egy projekttel. Vigye végig, bizonyítsa be, hogy működik, és helyesen dokumentálja.

Ellenőrizze, hogy a kód olvasható és karbantartható-e.

És ne felejts el szórakozni sem :)

stevenvh
2010-11-26 15:37:54 UTC
view on stackexchange narkive permalink

A nyilvánvaló dolgokon kívül, mint például a C megtanulása, és néhány fejlesztői táblával kezdve, érdemes megtanulni olvasni a mikrovezérlő adatlapjait .
A gyártók többet több funkció a mikrovezérlők számára, amelyek ezért egyre összetettebbé válnak. Az adatlap nem csak elektromos jellemzőket közöl (ami az elektronikai mérnök számára érdekesebb, mint a szoftverfejlesztő), hanem a nyilvántartások, a memóriatérképek stb. Részletes leírását is.
Az első adatlap elolvasása ijesztőnek tűnhet, de nem megértésük komolyabb fejfájást okozhat a hibakeresési szakaszban.

JustJeff
2010-07-09 03:42:49 UTC
view on stackexchange narkive permalink

Az 'Embedded' egy kicsit betöltött kifejezés.

Bizonyos szempontból az egyetlen alkalmazás futtatására szolgáló rendszert beágyazott rendszernek lehet nevezni, amennyiben van valamilyen hardver ellenőrzött. Vitathatatlanul hívhat beágyazott rendszernek egy 400 MHz-es, 2 GB RAM-mal rendelkező, java alkalmazást futtató PPC604-et egy linux tetején, ha véletlenül helyi I / O modulokon keresztül irányít egy folyamatot. Másrészt egy arduino, amely csak valamilyen minimális hálózati alkalmazást futtat, nem sok beágyazott rendszer. De valószínűleg a „beágyazott” miatt a legtöbb ember a flash alapú vezérlőkre gondol, csupán néhány száz bájt RAM-mal, nincs operációs rendszer, és rengeteg chip-en működő periféria van.

Ennek ellenére valószínűleg a két legnagyobb akadályt a beágyazatlan programozók általában szembesítik a beágyazott rendszerek tanulásával, az I / O regiszterek és a megszakítások.

A megszakítások a beágyazott programozók számára a két fogalom közül valójában könnyebben kezelhetők, mivel ezek fő kérdéseivel, az egyidejűséggel és az eseményvezérelt programozással gyakran találkozunk a mainstream alkalmazásokban. Ami megszakítja a megszakítást, az a felismerés, hogy a rendszer rendkívül érzékenyen reagál a megszakítás kezelésének minőségére, valamint a hardver kezelésének bonyolultsága a megszakítási állapot törlése és a következőre való felállítás érdekében. A grafikus felhasználói felület segítségével a holtpont csak az alkalmazást megöli. A megszakításkezelővel a holtpont az egész rendszert lezárja.

Úgy tűnik, hogy az I / O eszközök okozzák a legnagyobb nehézséget. Az avatatlanok számára meglepetés lehet felfedezni, hogy ennek a regiszternek az olvasása itt hatással van arra a nyilvántartásra ott . Az 1-es írása a bitek törléséhez. Állapotbitek, amelyek kitisztítják magukat, amikor elolvassuk az adatregisztert, stb. Az I / O hardverekkel annyi lehetőség kínálkozik, hogy nincs általános szabály a kezelésére, csak az eszköz adatlapjainak megkeresésének és értelmezésének megtanulása. Ha soros portra ír egy eszközillesztõt, sokat megtanul az alacsony szintû I / O programozásról.

Ezeknek a dolgoknak a megtanulása valójában nem helyettesítheti, mint az, hogy feltegye az ujját, és programozzon egyenes C és / vagy szerelési nyelv a csupasz fémen. Még a fent említett java alapú beágyazott rendszernek is szüksége van eszközillesztõre az I / O-hoz, és ez azt jelenti, hogy végül néhány C-vel kell foglalkoznunk. A tapasztalat a legjobb tanár. Válasszon egy mikrovezérlőt, legyen az MSP430, TMS320, AVR, ARM, PIC, 68HC11, bármi, keressen egy eval készletet és építsen fel néhány rendszert.

old_timer
2010-07-20 00:36:37 UTC
view on stackexchange narkive permalink

A Sparkfun számos jó $ 50 $ fejlesztői táblával rendelkezik. Látogasson el a Stellaris család TI oldalára is a $ \ $$ 50 - $ \ $$ 100-ban, szintén a Hawkboard -on, amelyet egyelőre a Beagleboard amire érdemes vagy megtanulnod kell, a TI is rendelkezik az MSP430 családdal, és kapnék egy EZ430-at és egy három csomag kiegészítő táblát 10 dollárért. Ha a Sparkfun egy Lillypadot kap az FTDI USB soros / tápellátással, a Lillypad nagyjából megegyezik az Arduino pro mini, de forrasztania kell a pro mini-hez. Nem rajongok a PIC családért, de érdemes eljutnod valamihez történelemóraként, ugyanez vonatkozik a 8051-re is, mindkét család továbbra is népszerű és használatban van, csak nem túl hatékony, és más architektúrák átadták őket. Teljesen megtanulják az ARM-et és a hüvelykujjat, esetleg a MIPS-et (ami egy pic-32, nem szabad összetéveszteni a régebbi eredeti PIC architektúrával). Az ARMmite Pro egy jó belépő szintű ARM tábla, bár a Stellaris is lehet.

Amit itt szeretne megtanulni, az az összeállító különféle platformokhoz. C. C és szerelő kölcsönhatás. Különböző eszközök GCC és nem GCC. Hogyan kell elolvasni az adatlapot / a programozók referenciáját (és rájönni, hogy valamennyien hibásak, vagy félrevezetőek lehetnek, soha ne bízzon bennük, a hardver megnyeri a dokumentumokat), és hogyan kell elolvasni vagy használni a vázlatot. Ezek általában nem bonyolult vázlatok. Számos tábla alkalmas arra, hogy összekapcsolódjanak a projektekben, vagyis nincsen szemetet a táblán, csak közvetlen hozzáférés van az I / O csapokhoz. De ez nem a legjobb a tanuláshoz. Valami olyan, mint egy Stellaris tábla, amely fájdalmas a projektek számára, rengeteg szórakoztató anyagot tartalmaz a fedélzeten, hogy megtanulják a beágyazottakat, és megtanulják kölcsönözni / használni az illesztőprogramokat, vagy megírják sajátjukat az adatlapokból. Az Atmel AVR pillangó szintén jó tábla, ha még rendelkezésre áll, előfordulhat, hogy a saját soros portján kell forrasztani a programozáshoz, vagy csak elakasztani néhány vezetéket a lyukakban. Ez ad néhány perifériát, amelyeket megtanulhat programozni.

Még akkor is, ha beágyazott munkát végez, amely magában foglalja az alkalmazások SDK- vagy API-hívásokat használó linuxon vagy RTOS-on történő írását (soha ne érjen hozzá hardverhez vagy adatlapok elolvasásához). ), a fenti ismeretek továbbra is a többiek elé állítanak.

Cauê Carli
2010-12-03 09:20:57 UTC
view on stackexchange narkive permalink

Ez a cikk (automatikus fordítás portugálról angolra) jó áttekintést nyújt a beágyazott szoftverek fejlesztőjeként folytatott karrier kialakításáról. Megjegyzés: Az eredeti itt található.

Azzal kezdődik, hogy felvázolja azokat az ismeretköröket, amelyeket fejlesztenie kell:

  1. Tudás : Ismernie kell a beágyazott rendszerek elméletét. Ez hardvert és szoftvert jelent. Lehetetlen beágyazott szoftverek kompetens fejlesztője lenni anélkül, hogy megismernénk a működő hardverarchitektúrát.

  2. Képesség: Tapasztalatot kell szereznie a környéken. Gyakorlásra van szüksége. Díszítheti az összes PIC assembler emlékeztetőt, de semmi haszna, ha nem tud ilyen LED-et vezetni.

  3. Attitűd: Mindenekelőtt olyan hozzáállásokra van szükség, amelyek növekedni ezen a területen. Nagyon dinamikus, gyakran változik és fejlődik. Mindig motiváltnak kell lenned (a) autodidaktanak kell lenned, élvezned kell a tanulást, "be kell állítanod" és meg kell értened a dolgok működését. Ilyen hozzáállás nélkül hamarosan megkapja. Mivel ennek a területnek nagyon, nagyon kitartónak kell lennie.

Ezután a következő tippeket adja meg ezeknek a területeknek az elsajátításához (és további szöveggel fejleszti ezeket, ezek csak a címsorok):

  1. Amit meg kell tanulni a hardverhez (legalábbis)
  2. Amit a szoftver megtanulásához kell (legalábbis)
  3. Ezenkívül tanulmányozza az operációs rendszereket
  4. Képzésre van szüksége
  5. Ne hagyja abba, folytassa a tanulást és fejlessze hálózatát!
Köszönöm a linket! Úgy tűnik, hogy a Google fordítása azt jelzi, hogy tökéletesen megfelel erre a kérdésre. Szeretnénk azonban, ha (1) a szöveg angolul lenne ([angol nyelvű közösség] vagyunk (http://blog.stackoverflow.com/2009/07/non-english-question-policy/) , bár sokan közülünk legalább kétnyelvűek) - Automatikus fordítás csak akkor, ha muszáj (2) a válasz tartalmaz egy összefoglalót a cikkről arra az esetre, ha a link elhunyt. Szerkesztettem a hozzászólását, hogy betartsa ezeket az irányelveket, és pozitív szavazatot adtam rá!
Frank
2011-08-03 09:57:02 UTC
view on stackexchange narkive permalink

Gondolja át kétszer, mielőtt beágyazott szoftvermérnökké válna. Voltak szakaszaim a karrierem során. Az első 5 évben fejlesztettem szoftvert, mint az értékesítésre / marketingre költöztem, ezt 15 évig végeztem, 100 + M $ üzletet irányítottam, és most visszatértem a szoftverekhez.

Amikor 15 év után visszatérek a szoftverhez, emlékszem, miért is indultam el. Ez nehéz. Koncentrációra van szükség, több száz sornyi kód érinti egymást, és mindannyian meg kell tartani a memóriában. A beágyazott különösen nehéz.

Meg kell értened önmagadat is. Ha általában okos srác vagy, aprólékos és türelmes, akkor remek mérnök lehetsz belőle. Ha valamelyik hiányzik, akkor legjobb lesz átlagos. Gondolkozzon el rajta. Ha rendkívül okos és nem türelmes, nem ér sokat, mert nem számít, milyen okos vagy, a jó mérnöki munka türelmet és figyelmet igényel a részletekre.

Kényelmesnek kell lennie a kódórák megtekintésére is ideje beszélgetés nélkül. Megfigyelem, hogy a jó szociális képességekkel rendelkező emberek ezt elviselhetetlennek tartják.

Ha mindez igaz, olvassa el azokat a nagyszerű könyveket, hajtsa végre a gyakorlatokat, és remek mérnök lesz belőle. Sok szerencsét

AngryEE
2010-11-25 04:52:06 UTC
view on stackexchange narkive permalink

Mindenki más nagyszerű dolgokat mond. Tehát általános tanácsokat fogok adni: olvasni olvasni olvasni olvasni olvasni olvasni olvasni!

Olvasson el minden cikket a http://embeddedgurus.com oldalon, ha nem ért valamit , kutassa meg. Ha ezeknek a dolgoknak a magyarázatában talál valamit, amit nem ért, olvasson el többet. Beágyazott szoftveres pozícióba készülök, és tapasztalatom az elmúlt évek maroknyi szakmai projektje és sok-sok olvasás. A tapasztalat lehetővé teszi a dolgok kipróbálását, de az olvasás tudatja veled, hogy a kipróbált dolgok korábban megtörténtek-e, talán jobban, mint tudnád. Olyan fogalmakkal ismertet meg, amelyekkel bármilyen körülmények között dolgozhat.

Csak olvassa el!

Dominic Pritham
2011-08-03 00:04:17 UTC
view on stackexchange narkive permalink

Legyen szakértője a CUnderstand Timers és a Serial kommunikációnak. Piszkosítani kellene vele a kezét. Értse meg az RF protokollokat, módosítsa azokat az Ön igényeinek megfelelően. A hibakeresés közben ne csak vakon próbálja ki a kód kombinációit. A Code pontosan azt teszi, amit parancsol. Olvassa el a felhasználói kézikönyvet és az adatlapot, majd hajtson végre változtatásokat, ha valami nem működik. Mindez elmondott és megtett, a szakértővé válás egyetlen igazi módja a gyakorlás. Építsen tovább alkalmazásokat. Hamarosan ez lesz a második természet.



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 2.0 licencért, amely alatt terjesztik.
Loading...