正如Lundin所說,這個問題對許多不同的答案是開放的。您可以使用小型電池供電的內存限制裸機嵌入式設備運行更復雜的Linux系統。
首先,做一個靈活的開發者是非常重要的。您需要儘可能快地適應變化。您可能需要在短短几周內用以前從未使用的語言來做一個概念驗證原型,或者開始在遺留項目中工作以快速修復錯誤。
瞭解軟件體系結構概念,RTOS,事件驅動系統(嵌入式系統本質上是反應性的)和建模(UML)非常重要。也許是測試驅動開發(TDD)。這些都是語言不可知的,並且會幫助您從頭開始開發良好的固件。
關於語言,我認爲C既適用於小型系統也適用於大型系統,因此在C語言中擁有良好的背景是必須的。這裏我不是在討論新手級的c編程。我正在談論知道處理器和編譯器在幕後做了什麼。根據你所提到的,你可能有這些技能。這對於小型系統非常有用,RAM和ROM的每個字節都是計數的。瞭解關於MISRA-C規則的一些信息將幫助您開發更安全的C代碼。
可能您需要一些腳本編程來執行自動化測試,數據處理,代碼生成工具等。我使用Python來處理所有這些事情,還有一些Linux shell腳本。
能夠設計基於PC的應用程序對於創建測試夾具來測試生產線中的嵌入式設備或可能是因爲嵌入式設備只需要PC軟件即可工作,如基於USB的示波器。在這種情況下,我使用Qt,因爲它是跨平臺的,但如果您只想在Windows中工作,則可以使用Visual Studio和C#。
對於嵌入式系統,如果您擁有堅實的硬件背景,則會更好。另外,您需要能夠使用示波器,邏輯分析儀,信號發生器等。有時您需要用軟件解決硬件問題。 :)
這裏是一個圖書小單子,我覺得非常有用:
- 實用UML狀態圖中的C/C++。
- UML蒸餾水。
- 製作嵌入式系統。
- 計算機作爲組件。
- 嵌入式軟件入門。
- 更好的嵌入式系統軟件。
我希望它有幫助。
費爾南多
你的問題太寬泛了,所以它會被關閉。無論如何,作爲一個經驗法則,越接近您獲得的硬件,您將獲得的更一般和廣泛的知識。如果您瞭解Linux內核或Android內核,您仍然可以在應用程序級別上工作,並且您將成爲某些特定應用程序的專家。如果您瞭解通用的,與硬件相關的C語言編程,某種任何類型的彙編程序以及電子技術,那麼您就擁有了無論應用程序的性質如何都可以使用的核心競爭力。 – Lundin
對不起,但本網站是針對具有特定答案的技術問題,而不是職業建議或徵求開放式結果列表的問題。 –
直接使用寄存器之前,您不知道嵌入:) –