2013-06-20 63 views
10

我想列出一些需要學習的東西,這對我的職業很有價值。你認爲什麼技能對嵌入式開發人員來說至關重要,現在和未來都是如此?嵌入式開發人員,什麼技能很重要

通過與嵌入式Linux內核一起工作,我已經非常熟練地使用C和ARM彙編程序,而且我正在深入Linux驅動程序。然而,我不禁認爲我可能會縮小我的技能。我希望將來能夠繼續與嵌入式系統合作,但您永遠不知道就業市場(我會被派外包給中國和印度的偏執狂)。

我覺得我目前在C++和Java方面相當薄弱,我還想在未來學習Android內核。我也不知道任何腳本語言。

任何與嵌入式系統工作一段時間的人都可以提供一些他們認爲對於嵌入式開發人員至關重要的技能/語言的輸入嗎?我應該繼續磨練我的C技能還是應該學習新的東西。

+3

你的問題太寬泛了,所以它會被關閉。無論如何,作爲一個經驗法則,越接近您獲得的硬件,您將獲得的更一般和廣泛的知識。如果您瞭解Linux內核或Android內核,您仍然可以在應用程序級別上工作,並且您將成爲某些特定應用程序的專家。如果您瞭解通用的,與硬件相關的C語言編程,某種任何類型的彙編程序以及電子技術,那麼您就擁有了無論應用程序的性質如何都可以使用的核心競爭力。 – Lundin

+0

對不起,但本網站是針對具有特定答案的技術問題,而不是職業建議或徵求開放式結果列表的問題。 –

+0

直接使用寄存器之前,您不知道嵌入:) –

回答

29

這裏是我的名單:

  • Ç要領
  • OOP/C++ - 類,封裝,多態,重載/替換,模板
  • 算法 - 搜索,排序,B-樹木
  • 設計模式 - 工廠,觀察員,單身人士等
  • 實時操作系統MS - 基元(信號量,互斥),調度技術,用戶/內核空間
  • Linux的基礎知識,驅動寫入,外殼
  • 微處理器基本面 - 中斷處理,寄存器,彙編代碼,等等
  • 微控制器基本面 - ADC, DAC,定時器,PWM,DMA,看門狗等
  • 存儲器 - NOR,NAND,SRAM,DRAM,損耗均衡
  • 基本協議 - I2C,SPI,UART,LIN
  • 高級協議 - SATA,PCIE, USB,CAN,MOST
  • Co當前/並行編程 - 用於SMP的MPI等。
  • UML - 類圖,組件圖,狀態圖,序列圖
  • 用於腳本的Perl或Python,例如修改簡單的文本文件。
  • 爪哇和Android
  • 基本電子 - 原理圖閱讀,使用示波器,萬用表,烙鐵用於例如嵌入式編程
  • 專業技術去抖動開關,電阻式梯形開關,旋轉編碼器等。
  • 軟件工程 - SDLC,CMMI,敏捷方法SCRUM,版本控制(ClearCase中,混帳,SVN),缺陷跟蹤(?JIRA),靜態代​​碼檢查,林特,單元測試,持續集成
  • 構建環境 - 的makefile,cmake的
  • 基本FPGA/ASIC設計,基本DSP
+0

這正是我所期待的!謝謝,看來我有很多要學習:) – MrGigu

2

無論您想要選擇哪個域,不僅需要了解C編程,還應該熟悉硬件。

你正在使用哪個域(linux,vlsi,arm ....)並不重要。但重要的是你的代碼在硬件上的運行效率如何。

如果你真的想在嵌入式世界工作,你會找到自己的方式。

6

正如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蒸餾水。
  • 製作嵌入式系統。
  • 計算機作爲組件。
  • 嵌入式軟件入門。
  • 更好的嵌入式系統軟件。

我希望它有幫助。

費爾南多

+0

感謝您的輸入!非常好的建議! – MrGigu

+0

1.學習如何做代碼對齊 - 我在過去20年看到的大多數嵌入式開發人員都不知道如何去做。 – zzz777

相關問題