畢業三年多,一直從事嵌入式裝置開發,分享一點經驗。
對於應屆生來說,嵌入式開發的經驗不會有太多,所以要求也不會太高。
嵌入式開發常用的是C語言,所以需要你有紮實的功底,這一點很重要,資料結構演算法,指標,函式,網路程式設計。
有了上面的基礎以後,可以考慮下面的:
熟悉如何去構建嵌入式系統,boot loader,kernel,rootfs。
Linux核心,包括網路,檔案系統,程序排程,裝置驅動,系統呼叫,對於作業系統的理解,有助你理解你的軟體是怎麼工作的,即使不專業從事核心的開發,也會有助於寫出高質量的程式碼。
對通用的匯流排以及常用外設有了解,比如PCI,I2C,SPI,NORFLAH,NANDFLASH。
熟悉某一款處理器,比如ARM,彙編指令,cache,MMU,匯流排的概念。
在這個過程中,你還會設計到一些工具,比如cross toolchain(ld,gcc,gdb,objdump…),make, bash。
再往後,你需要能夠知道軟硬體,如何工作的,如何能夠寫出更高效的程式碼(cache對齊,提高cache命中率,SMP多核spinlock影響),對一些複雜的系統問題能夠定位(系統的效能瓶頸分析,定位手段,比如火焰圖)。
再往上發展,可以考慮成為系統架構師,能夠提出軟硬體方案,綜合成本,效能,功能。到這個階段,無論是創業還是打工,都是一個不錯的選擇。
畢業三年多,一直從事嵌入式裝置開發,分享一點經驗。
對於應屆生來說,嵌入式開發的經驗不會有太多,所以要求也不會太高。
嵌入式開發常用的是C語言,所以需要你有紮實的功底,這一點很重要,資料結構演算法,指標,函式,網路程式設計。
有了上面的基礎以後,可以考慮下面的:
熟悉如何去構建嵌入式系統,boot loader,kernel,rootfs。
Linux核心,包括網路,檔案系統,程序排程,裝置驅動,系統呼叫,對於作業系統的理解,有助你理解你的軟體是怎麼工作的,即使不專業從事核心的開發,也會有助於寫出高質量的程式碼。
對通用的匯流排以及常用外設有了解,比如PCI,I2C,SPI,NORFLAH,NANDFLASH。
熟悉某一款處理器,比如ARM,彙編指令,cache,MMU,匯流排的概念。
在這個過程中,你還會設計到一些工具,比如cross toolchain(ld,gcc,gdb,objdump…),make, bash。
再往後,你需要能夠知道軟硬體,如何工作的,如何能夠寫出更高效的程式碼(cache對齊,提高cache命中率,SMP多核spinlock影響),對一些複雜的系統問題能夠定位(系統的效能瓶頸分析,定位手段,比如火焰圖)。
再往上發展,可以考慮成為系統架構師,能夠提出軟硬體方案,綜合成本,效能,功能。到這個階段,無論是創業還是打工,都是一個不錯的選擇。