2009-06-02 16 views
15

Jako przeciwieństwo tego pytania: "Is low-level embedded systems programming hard for software developers" Chciałbym poprosić o poradę dotyczącą przejścia z niskonapięciowych systemów wbudowanych do programowania dla bardziej zaawansowanych systemów z systemem operacyjnym, zwłaszcza z wbudowanym systemem Linux.Jak przejść z mikrokontrolerów do wbudowanego systemu Linux?

Najczęściej pracowałem z małym sprzętem i oprogramowaniem mikrokontrolera, ale teraz robię tylko oprogramowanie. Moje wykształcenie składa się głównie ze sprzętu i osadzonych rzeczy. Nie miałem wielu kursów programowania i nie wiem zbyt wiele na temat projektowania oprogramowania lub kodowania OO.

Teraz mam duży projekt w moich rękach, który będzie wykonany we wbudowanym systemie Linux. Mam poważne problemy z projektowaniem i utrzymywaniem rzeczy w porządku, ponieważ tak naprawdę nie musiałem tego robić wcześniej. Również używanie wielozadaniowości i blokowanie wywołań zamiast uruchamiania zadania "równoległego" z głównej funkcji jest jak inny świat.

Jakie masz doświadczenia z przejścia z programowania niskiego na większe z systemem operacyjnym (Linux)? Co było trudne i jak to rozwiązałeś? Jaki sposób myślenia jest potrzebny?

Czy warto nauczyć się C++ od zera lub kontynuować używanie zwykłego C?

+0

Głosowanie za blisko jako zbyt szerokie. –

Odpowiedz

10

Główne problemy z używaniem jądra systemu Linux do wymiany układów mikrokontrolerów to sterowanie urządzeniami, z którymi się łączysz. W tym celu możesz napisać sterowniki. Powiedziałbym, że trzymać się z C jako języka, ponieważ będziesz chciał, aby przestrzeń użytkownika była jak najbardziej czysta. Zajrzyj do biblioteki , aby uzyskać uproszczoną bibliotekę C.

http://www.uclibc.org/

Można również znaleźć busybox użyteczne. Zapewnia to wiele narzędzi przestrzeni użytkownika jako pojedynczy plik binarny.

http://www.busybox.net/

Wtedy to po prostu kwestia uruchamiania z jakiegoś magazynu do systemu na żywo i działa jakiś kontrolny logiki przez init, który łączy się ze sprzętem. W razie potrzeby można uzyskać dostęp do systemu na żywo i uruchomić narzędzia busybox. Naprawdę, jedyną różnicą jest to, że przestrzeń użytkownika jest dużo szczuplejsza niż w normalnej dystrybucji i będziesz pracował "bliżej" jądra pod względem celów.

Zobacz także w czasie rzeczywistym linux.

http://www.realtimelinuxfoundation.org/

Jeśli potrzebujesz formalnej obietnicy zakończenia zadania. Podejrzewam, że najtrudniejszy będzie rozruch/trwałe przechowywanie i połączenie z twoim sprzętem, jeśli jest on egzotyczny. Jeśli nie jesteś zaznajomiony z Linux uruchamiania następnie

http://www.cromwell-intl.com/unix/linux-boot.html

może pomóc.

Krótko mówiąc, jeśli nie rozwinęliście się na głębokim poziomie dla Linuksa, nie stworzyli własnej dystrybucji lub nie mieli doświadczenia z jądrem, to może się okazać, że programowanie jest trudne -.

http://www.linuxdevices.com/ może również pomóc

Powodzenia

+1

Mam działający sprzęt, przynajmniej na razie. A poza tym próbowałem kodu głównie na komputerze. Faktyczne kodowanie jest w tej chwili największym problemem, ale być może będę potrzebował później. Dzięki. –

+1

Bez obaw! Powodzenia z tym wszystkim. –

2

Niedawno znalazłem się w bardzo podobnej sytuacji. Kupiłem i przeczytałem Embedded Linux Primer i był to bardzo pomocny sposób na przejście do systemu operacyjnego wysokiego poziomu (z perspektywy mikrokontrolera).

Jeśli masz czas, by poświęcić swój czas, możesz oczywiście dokonać przejścia. Ale jeśli chcesz szybko zacząć działać, możesz rozważyć uzyskanie mentora technicznego, który pomoże Ci w prowadzeniu.

1

Może się też przydać praca na Linuksie, zaczynając od ucLinux. Jest to w zasadzie Linux na mikrokontroler. Możesz poczuć jądro bez aspektu pamięci wirtualnej jako przejścia. Sprawdź, czy ucLinux obsługuje mikrokontroler, który już znasz i zobacz, jak kernel współdziała z tą architekturą.

Zgadzam się, że książka Embedded Linux Primer doskonale nadaje się do opanowania twojego mózgu wokół wbudowanego systemu Linux. Lepiej trzymaj się teraz C. C++ może czekać, i jest bardziej przydatne dla aplikacji, a nie kodu sterownika.

Jeśli nie wiesz, jak działa ucLinux, możesz zacząć od normalnego jądra systemu Linux na architekturze mikroprocesora, takiej jak ARM z MMU i pamięcią wirtualną.

Tylko moje dwa centy!

Powiązane problemy