2010-03-22 17 views
12

Ukończyłem studia magisterskie z inżynierii komputerowej. Mieliśmy kilka podstawowych kursów elektroniki w zakresie cyfrowego przetwarzania sygnałów, teorii informacji itp., Ale moje główne pole to programowanie.Jakie są warunki wstępne nauki programowania systemów wbudowanych?

Jednak szukałem możliwości programowania w systemie Embedded Systems i nie wiem, jak to zrobić. Jednak bardzo chętnie wchodzę w tę dziedzinę.

Moje pytania:

  • Jakie języki używane do programowania systemów wbudowanych?
  • Czy będę mógł się uczyć bez posiadania podstaw w elektronice?
  • Jakieś inne warunki wstępne, które powinienem znać?
+3

W jaki sposób uzyskałeś stopień naukowy CE bez zajmowania się niską klasą architektury komputerów i elektroniki? W mojej szkole program CE był taki sam jak program EE przez pierwsze 2 lata, prawie cała teoria obwodów. Wówczas program CE wymagał wielu klas w architekturze systemu i systemach wbudowanych, gdzie jako program EE w pola, sygnały, systemy sprzężeń itp. Masz na myśli inżynierię oprogramowania? – Mark

+0

Warunki wstępne? Żaden. Nie ma niczego, czego nie można się nauczyć po raz pierwszy w osadzonym kontekście, jeśli potrafisz zebrać niezbędną wiedzę, gdy się obejrzysz. –

Odpowiedz

2

Poszedłem na to pole, nie wiedząc, jak to się stało, jako świeżo upieczony absolwent i po 1,5 roku zrezygnowałem. Więc to, co powiem, może być trochę zardzewiałe i zdecydowanie nie wyczerpujące.

Język, którego używaliśmy, to C. Ale w tym czasie przestrzeń dyskowa wynosiła 4 MB, a pamięć zajmowała 8 MB na urządzeniach, nad którymi pracowaliśmy i wiem, że C był używany ze względu na niewielkie rozmiary jego bibliotek. Wygląda na to, że wydajność była również kryterium.

Jeśli chodzi o podstawową elektronikę, dla pozycji na poziomie podstawowym prawie żadna nie jest konieczna. Z czasem uzyskasz wymagane informacje i doświadczenie.

Nie jest to warunkiem wstępnym, ale posiadanie doświadczenia w zakresie systemów operacyjnych i rozwoju systemu to zdecydowanie plus.

+0

Wskoczył do niego również z zerową wiedzą. Nie ma problemu. – James

8

Bez wątpienia wymagane jest doświadczenie lub przynajmniej znaczące zrozumienie cyfrowej elektroniki i inżynierii komputerowej na niskim poziomie. Musisz być w stanie odczytać arkusze danych urządzeń i je zrozumieć. Zakresy, multimetry, analizatory logiczne, itp. ... są narzędziami handlu.

C jest używany głównie, ale języki wyższego poziomu skradają się powoli.

+1

I nie można się bać trochę montażu tu i tam! – Earlz

+0

@Earlz, prawda, jeśli nie możesz tego uniknąć. Dobry kompilator C jest całkiem niezły w optymalizacji większości rzeczy. – kenny

+2

Czasami, na przykład na x86, musisz wykonywać operacje zależne od platformy, które nie są możliwe bezpośrednio z C, takie jak czytanie i pisanie do portów. – Earlz

1

Języki: C, Asembler, Processing, Basic i cała gama innych, zależy to od platformy, z której korzystasz.

Możesz uzyskać bardziej szczegółowe informacje, jeśli zadasz to samo pytanie pod numerami ChipHacker lub Electronics Exchange, które są witrynami podobnymi do wymiany stosów, ale są ukierunkowane na elektronikę i "komputery fizyczne".

4

Musisz zaakceptować ograniczenia i móc pracować z nimi:

  • szybkość procesora
  • skąpe pamięć
  • brak urządzeń sieciowych
  • niestandardowe kompilatorów i systemów operacyjnych
  • niestandardowych płyt i sterowniki
  • debugowanie za pomocą analizatora stanów logicznych
  • dziwne praktyki kodowania i testowania
  • ...

Nagroda to głębokie zrozumienie tego, co się dzieje.

1

Będziesz chciał wygodnie korzystać z C i zbudować solidne zrozumienie montażu. W systemach/wbudowanych zwykle pracujesz z niewielką ilością pamięci i wolniejszymi procesorami, więc musisz zrozumieć, jak rozsądnie korzystać z ograniczonych zasobów.

Jeśli zajmujesz się tym jako hobby, podnieś tablicę gumtix lub arduino, te płyty dev da ci setki godzin nauki i zabawy.

Jeśli próbujesz zrobić karierę, znajdź pracę, w której projekty brzmią interesująco i zabrudzą ci ręce. Podejmij każde zadanie, które pojawi się na twojej drodze i zadaj sobie pytanie, jak możesz zrobić lepiej i ucz się na tym zadaniu.

Tak czy inaczej, baw się dobrze i baw się dobrze!

4

VHDL, Verilog i FPGA to także poważni gracze na tej arenie. Z dobrym doświadczeniem w CS, dużym zaangażowaniem i może niektórym MIT OpenCourseware będziesz mógł wyciągnąć coś dobrego. Dobra znajomość architektur procesorów i niektórych ASM również będzie długa.

2

Systemy wbudowane są na ogół programowane w języku C, chociaż na końcu zakresu znajdują się systemy korzystające z asemblera, gdy przestrzeń kodu lub taktowanie są naprawdę ścisłe (lub nie ma przyzwoitego kompilatora C), a na drugim końcu, C++ do .NET compact. Zależy to od tego, co rozumiemy przez systemy wbudowane, pochodzą one od naprawdę małych mikrokontrolerów z kilkoma setkami bajtów pamięci RAM i przestrzeni programowej, aż do urządzenia typu smartphone z pełnym wielozadaniowym systemem operacyjnym i interfejsem użytkownika.

Dostaniesz się dalej w wyższym zakresie tego zakresu bez tła w elektronice, ponieważ jest on mniej związany ze sprzętem i bardziej podobny do programowania pulpitu. Po przejściu przez szereg aplikacji znajomość elektroniki, technologii analogowej i cyfrowej oraz zasilaczy, zagadnień związanych z hałasem, zgodnością, problemami z ciepłem i innymi - wszystko to tworzy naprawdę wymagające środowisko projektowe.

zacząć od czytania niektórych linków here i embedded.com

+0

+1 za uwagę, że dzisiejsze systemy wbudowane to nie tylko 8-bitowe pliki μC – ziggystar

0

Learn C. Naucz się stosować C do wszystkich problemów. Inne języki mogą poczekać. Ostatecznie montaż pomoże i żaden programista nie powinien być bez użycia języka skryptowego.

W zależności od tego, za pomocą wbudowanych obiektów docelowych może występować niewielka różnica między komputerem a obiektem docelowym. Z małym tłem elektroniki to byłby twój najłatwiejszy wpis.

Małe procesory dadzą ci najbardziej stromą krzywą uczenia się, ale dowiesz się więcej o programowaniu wbudowanym. Jednak bez tła elektronicznego może to stanowić dodatkowe problemy, które mogą nie mieć jeszcze umiejętności do rozwiązania.

W końcu będziesz musiał uczyć się elektroniki, jeśli chcesz robić postępy poza podstawami.

2

Jedna rzecz, o której dotąd nie wspomniałem w odpowiedziach, to fakt, że do tej pory prawdopodobnie większość kodu wykonywałeś w kontekście systemu operacyjnego. W wielu (być może najbardziej?) Przypadkach, z oprogramowaniem układowym w przeciwieństwie do oprogramowania, nie będziesz miał wygody i korzyści płynących z kodowania na systemie operacyjnym. Dlatego tak wiele innych odpowiedzi wskazywało, że dobra znajomość elektroniki była krytyczna.

1

Jak wspomniano, wbudowane mogą oznaczać wiele rzeczy. W moim świecie (Aerospace and Defence) pracujemy z systemami operacyjnymi czasu rzeczywistego (VxWorks i Integrity są największymi graczami) i czasami Linux. Programujemy głównie w języku C, chociaż C++ jest również używany, jeśli projekt zdecydował się na programowanie i modelowanie obiektowe.

Tak więc, tak jak w przypadku Pre-Reqs, C na pewno. Naprawdę powinieneś nauczyć się wszystkiego o C, w tym o operacjach BIT, zajmujących się wartościami heksadecymalnymi, wskaźnikami, wszystkimi rzeczami o niskim poziomie. Montażu również, ale używam go tylko do debugowania najtrudniejszych rzeczy w dzisiejszych czasach. Musisz wiedzieć wystarczająco dużo, aby czytać i rozumieć.

Myślę, że An Embedded Software Primer to świetny początek, aby zmienić swoje myślenie na osadzone. Obsługa przerwań, problemów w czasie rzeczywistym, itp ...

Jak wspomniał Mickey, czasami nie masz nawet systemu operacyjnego. W takich przypadkach zazwyczaj piszesz swój własny menedżer zadań, ale zazwyczaj nie jest to coś, z czym początkujący powinien się zapoznać. Powodzenia.

6

Rozpoczęcie pracy w systemach wbudowanych to złożone zadanie samo w sobie, ponieważ jest to bardzo rozległe pole z wieloma opcjami sprzętu i oprogramowania.

Jakie języki są używane do programowania systemów wbudowanych?

Język złożenia, C, C++, Python, C# i inne.

Czy będę w stanie uczyć się bez podstaw w elektronice?

Nauka systemów wbudowanych bez podstawowej wiedzy z zakresu elektroniki nie byłaby dobrym pomysłem. Systemy wbudowane to połączenie sprzętu i oprogramowania. Możesz śledzić podejście do uczenia się, zamiast przechodzić przez długie i szczegółowe książki tekstowe. Aby dowiedzieć się więcej na temat systemów wbudowanych, krok po kroku, zapoznaj się z tematem: this blog . Pomoże Ci zacząć od zera.

Jakieś inne warunki wstępne, które powinienem znać?

Podstawowa elektronika, elektronika cyfrowa, znajomość mikrokontrolerów i programowanie C. Ponieważ jesteś z wykształcenia informatycznego, potrzebujesz karty rozwojowej dowolnego 8-bitowego mikrokontrolera (studenci EE i ECE mają wystarczającą wiedzę i tło, aby zbudować ją na płytce prototypowej lub płytce drukowanej), aby rozpocząć. (Nie preferuj symulatorów na początku, możesz źle zrozumieć swoje koncepcje!).

Powiązane problemy