Chciałbym uzyskać wskazówki dla tych, którzy chcą zostać dobrym programistą oprogramowania wbudowanego lub chcą ulepszyć tę dziedzinę.
Czego powinienem nauczyć się o sprzęcie, oprogramowaniu?
Które książki są najbardziej polecane? Blogi?
W końcu, jak mogłem przejść od początkującego hobbysty do doskonałego profesjonalisty?
W przypadku książek polecam przeglądanie historii. Większość współczesnych technik oprogramowania wbudowanego pochodzi z przełomowej przeszłości.
Jak wszystko, ćwicz codziennie.
źródło
Inne odpowiedzi są świetne, ale największą różnicą między hobbystą a profesjonalistą powinno być nastawienie na jakość. Niech więc Twój projekt zostanie ukończony, nie przestawaj, gdy skończysz w 80% projekt. Weź to na całość, udowodnij, że działa i poprawnie udokumentuj.
Upewnij się, że Twój kod jest czytelny i łatwy do utrzymania.
I nie zapomnij też dobrze się bawić :)
źródło
Oprócz oczywistych rzeczy, takich jak nauka języka C i rozpoczęcie pracy z płytą programistyczną, musisz nauczyć się czytać arkusze danych mikrokontrolera .
Producenci dodają coraz więcej funkcji do mikrokontrolerów, które stają się coraz bardziej złożone. Arkusz danych zawiera nie tylko charakterystykę elektryczną (co jest bardziej interesujące dla inżyniera elektroniki niż twórcy oprogramowania), ale także szczegółowy opis rejestrów, map pamięci itp.
Przy pierwszym czytaniu arkusz danych może wyglądać zniechęcająco, ale go nie rozumie może powodować silniejszy ból głowy w fazie debugowania.
źródło
„Embedded” to trochę załadowany termin.
Pod pewnymi względami każdy system przeznaczony do uruchamiania jednej aplikacji można nazwać systemem wbudowanym, o ile istnieje pewien sprzęt do kontrolowania. Prawdopodobnie możesz zadzwonić na PPC604 400 MHz z 2 GB pamięci RAM, na której działa aplikacja java na Linuksie, w systemie osadzonym, jeśli zdarza się, że kontroluje proces za pośrednictwem lokalnych modułów I / O. Z drugiej strony, arduino z uruchomioną jakąś minimalną aplikacją sieciową nie byłoby zbytnio systemem osadzonym. Ale prawdopodobnie „wbudowane” sprawia, że większość ludzi myśli o kontrolerach opartych na pamięci flash z zaledwie kilkuset bajtami pamięci RAM, bez systemu operacyjnego, o których mowa, i mnóstwem urządzeń peryferyjnych na chipie.
To powiedziawszy, prawdopodobnie dwie największe przeszkody, które nie są wbudowane w programistów, zwykle napotykają uczenie się systemów wbudowanych, to rejestry I / O i przerwania.
Przerwania mogą być łatwiejsze do opanowania z dwóch koncepcji dla niewbudowanych programistów, ponieważ główne problemy z nimi, programowanie współbieżne i oparte na zdarzeniach, często występują w aplikacjach głównego nurtu. To, co sprawia, że przerwanie jest uciążliwe, to uświadomienie sobie niezwykłej wrażliwości systemu na jakość obsługi przerwań oraz zawiłości w radzeniu sobie ze sprzętem w celu usunięcia stanu przerwania i skonfigurowania go na następny. Dzięki GUI impas zabija tylko aplikację. W przypadku obsługi przerwań zakleszczenie powoduje zablokowanie całego systemu.
Urządzenia I / O wydają się być obszarem, który powoduje najwięcej trudności. Dla niewtajemniczonych może być zaskoczeniem odkrycie, że czytanie tego rejestru tutaj ma wpływ na ten rejestr tam . Zapisywanie 1 w celu wyczyszczenia bitów. Bity statusu, które same się usuwają podczas odczytywania rejestru danych itp. Sprzęt I / O ma tak wiele możliwości, że nie ma ogólnej zasady radzenia sobie z nim, z wyjątkiem uczenia się, jak znaleźć i interpretować arkusze danych urządzenia. Napisanie sterownika urządzenia dla portu szeregowego nauczy Cię wiele na temat programowania niskiego poziomu we / wy.
Naprawdę nie ma substytutu dla uczenia się tych rzeczy niż zwijanie rękawów i programowanie prostego języka C i / lub asemblera na gołym metalu. Nawet wyżej wspomniany system osadzony oparty na Javie ostatecznie potrzebuje sterownika urządzenia dla I / O, a to ostatecznie oznacza radzenie sobie z niektórymi C. Doświadczenie jest najlepszym nauczycielem. Wybierz mikrokontroler, czy to MSP430, TMS320, AVR, ARM, PIC, 68HC11, cokolwiek, znajdź zestaw ewaluacyjny i zbuduj kilka systemów.
źródło
To, czego chcesz się tutaj nauczyć, to asembler dla różnych platform. C. C i interakcja asemblera. Różne narzędzia GCC i inne niż GCC. Jak czytać zestawienie danych / programistów (i zdać sobie sprawę, że wszystkie mają pewne błędy lub mogą wprowadzać w błąd, nigdy nie ufaj im, sprzęt wygrywa nad dokumentami) i jak czytać lub używać schematu. Nie są to zwykle skomplikowane schematy. Wiele kart nadaje się do współpracy w projektach, co oznacza, że nie mają na sobie śmieci, tylko bezpośredni dostęp do styków we / wy. Ale to nie jest najlepsze do nauki. Coś jak StellarisNa pokładzie, który jest bolesny dla projektów, znajduje się mnóstwo zabawnych rzeczy do nauki osadzania i uczenia się pożyczania / używania sterowników lub pisania własnych z kart danych. Motyl Atmel AVR jest również dobrą płytą, jeśli nadal jest dostępny, może wymagać lutowania na własnym porcie szeregowym, aby go zaprogramować lub po prostu zablokować niektóre przewody w otworach. Daje ci to kilka urządzeń peryferyjnych, których możesz nauczyć się programować.
Nawet jeśli zakończysz pracę osadzoną, która polega na pisaniu aplikacji przy użyciu wywołań SDK lub API w systemie Linux lub RTOS (nigdy nie dotykając sprzętu ani nie czytając kart danych), powyższa wiedza wciąż będzie Cię wyprzedzać.
źródło
Ten artykuł (automatycznie przetłumaczony z portugalskiego na angielski) zawiera dobry przegląd rozwoju kariery jako programisty oprogramowania wbudowanego. Uwaga: oryginał jest tutaj .
Zaczyna się od nakreślenia obszarów wiedzy, które musisz rozwinąć:
Następnie podaje następujące wskazówki dotyczące opanowania tych obszarów (i rozwija je z dalszym tekstem, to tylko nagłówki):
źródło
Zastanów się dwa razy, zanim zostaniesz inżynierem oprogramowania wbudowanego. W swojej karierze miałem fazy. Przez pierwsze 5 lat tworzyłem oprogramowanie, potem przeniosłem się do działu sprzedaży / marketingu, robiłem to przez 15 lat, zarządzałem biznesem o wartości ponad 100 mln USD i teraz wróciłem do oprogramowania.
Kiedy wracam do oprogramowania po 15 latach, pamiętam, dlaczego w ogóle odszedłem. To jest trudne. Wymaga koncentracji, kilkuset linii kodu, które stykają się ze sobą, i wszyscy musicie zachować go w pamięci. Osadzony jest szczególnie trudny.
Musisz także zrozumieć siebie. Jeśli jesteś ogólnie mądrym facetem, skrupulatnym i cierpliwym, zrobiłbyś z tego świetnego inżyniera. Jeśli brakuje jednego z nich, będziesz w najlepszym razie średni. Pomyśl o tym. Jeśli jesteś bardzo inteligentny i nie cierpliwy, nie ma wiele, bo bez względu na to, jak jesteś inteligentny, dobra inżynieria wymaga cierpliwości i dbałości o szczegóły.
Musisz także czuć się komfortowo, patrząc na godziny kodu bez rozmowy. Zauważam, że ludzie o dobrych umiejętnościach społecznych uważają to za nie do zniesienia.
Jeśli to wszystko się sprawdzi, przeczytaj wszystkie te wspaniałe książki, zrób ćwiczenia, a staniesz się świetnym inżynierem. Powodzenia
źródło
Wszyscy inni mówią wspaniałe rzeczy. Więc dam ci ogólną radę: czytaj czytaj czytaj czytaj czytaj czytaj czytaj czytaj!
Przeczytaj każdy artykuł na stronie http://embeddedgurus.com. Jeśli czegoś nie rozumiesz, sprawdź to. Jeśli w wyjaśnieniu tych rzeczy znajdziesz coś, czego nie rozumiesz, przeczytaj więcej. Mam zamiar zająć pozycję oprogramowania wbudowanego, a moje doświadczenie to garść profesjonalnych projektów z ostatnich kilku lat i dużo czytania. Doświadczenie pozwala ci wypróbować różne rzeczy, ale czytanie pozwala dowiedzieć się, czy rzeczy, które próbowałeś zrobić, były wcześniej robione, może lepiej niż możesz. Wprowadza Cię w koncepcje, z którymi możesz pracować w każdych okolicznościach.
Po prostu czytaj!
źródło
Zostań ekspertem w dziedzinie Zrozumienie timerów i komunikacji szeregowej. Powinieneś go zabrudzić. Poznaj protokoły RF, dostosuj je do swoich wymagań. Nie próbuj na ślepo kombinacji kodu podczas debugowania. Kod robi dokładnie to, co mu każesz. Przeczytaj instrukcję obsługi i arkusz danych, a następnie wprowadź zmiany, jeśli coś nie działa. Wszystko, co zostało powiedziane i zrobione, jedynym prawdziwym sposobem na zostanie ekspertem jest ćwiczenie. Kontynuuj tworzenie aplikacji. Wkrótce stanie się drugą naturą.
źródło