嵌入式開發應該具備的基本素質
1、Linux 基礎安裝Linux作業系統 Linux檔案系統 Linux常用命令 Linux啟動過程詳解熟悉Linux服務能夠獨立安裝Linux作業系統能夠熟練使用Linux系統的基本命令認識Linux系統的常用服務安裝Linux作業系統 Linux基本命令實踐設定Linux環境變數定製Linux的服務 Shell 程式設計基礎使用vi編輯檔案使用Emacs編輯檔案使用其他編輯器2、Shell 程式設計基礎Shell簡介認識後臺程式Bash程式設計熟悉Linux系統下的編輯環境熟悉Linux下的各種Shell 熟練進行shell程式設計熟悉vi基本操作熟悉Emacs的基本操作比較不同shell
linux C語言環境概述 Gcc使用方法 Gdb除錯技術 Autoconf Automake Makefile 程式碼優化熟悉Linux系統下的開發環境熟悉Gcc編譯器熟悉Makefile規則編寫Hello,World程式使用 make命令編譯程式編寫帶有一個迴圈的程式除錯一個有問題的程式4、嵌入式系統開發基礎嵌入式系統概述交叉編譯配置TFTP服務配置NFS服務下載Bootloader和核心嵌入式Linux應用軟體開發流程熟悉嵌入式系統概念以及開發流程
Linux核心程式碼平臺相關程式碼分析 ARM平臺介紹平臺移植的關鍵技術移植Linux核心到 ARM平臺瞭解移植的概念能夠移植Linux核心移植Linux2.6核心到 ARM9開發板5、嵌入式 Linux 下串列埠通訊序列I/O的基本概念嵌入式Linux應用軟體開發流程 Linux系統的檔案和裝置與檔案相關的系統呼叫配置超級終端和MiniCOM 能夠熟悉進行串列埠通訊熟悉檔案I/O 編寫串列埠通訊程式編寫多串列埠通訊程式6、嵌入式系統中多程序程式設計
Linux
GUI基礎嵌入式系統GUI型別編譯QT 進行QT開發熟悉嵌入式系統常用的GUI 能夠進行QT程式設計使用QT編寫“Hello,World”程式除錯一個加入訊號/槽的例項通過過載QWidget 類方法處理事件10、Linux 字元裝置驅動程式裝置驅動程式基礎知識 Linux系統的模組字元裝置驅動分析 fs_operation結構載入驅動程式瞭解裝置驅動程式的概念瞭解Linux字元裝置驅動程式結構能夠編寫字元裝置驅動程式編寫Skull驅動編寫鍵盤驅動編寫I/O驅動分析一個看門狗驅動程式對比Linux2.6核心與2.4核心中字元裝置驅動的不同Linux 塊裝置驅動程式塊裝置驅動程式工作原理典型的塊裝置驅動程式分析塊裝置的讀寫請求隊列了解Linux塊裝置驅動程式結構能夠編寫簡單的塊裝置驅動程式比較字元裝置與塊裝置的異同編寫MMC卡驅動程式分析一個檔案系統對比Linux2.6核心與2.4核心中塊裝置驅動的不同11、檔案系統虛擬檔案系統檔案系統的建立 ramfs記憶體檔案系統 proc檔案系統 devfs 檔案系統 MTD技術簡介 MTD塊裝置初始化 MTD塊裝置的讀寫操作了解Linux系統的檔案系統瞭解嵌入式Linux的檔案系統瞭解MTD技術能夠編寫簡單的檔案系統為 ARM9開發板新增 MTD支援移植JFFS2檔案系統通過proc檔案系統修改作業系統引數分析romfs 檔案系統原始碼建立一個cramfs 檔案系統
簡單地總結一下硬體開發的基本過程:
1、明確硬體總體需求情況,如CPU處理能力、儲存容量及速度、I/O埠的分配、介面要求、電平要求、特殊電路要求等等。
2、根據需求分析制定硬體總體方案,尋求關鍵器件及相關技術資料、技術途徑和技術支援,充分考慮技術可行性、可靠性和成本控制,並對開發除錯工具提出明確要求。關鍵器件可試著去索取樣品。
3、總體方案確定後,做硬體和軟體的詳細設計,包括繪製硬體原理圖、軟體功能框圖、PCB設計、同時完成開發元器件清單。
4、做好PCB板後,對原理設計中的各個功能單元進行焊接除錯,必要時修改原理圖並作記錄。
5、軟硬體系統聯調。一般情況下,經過除錯後原理及PCB設計上有所調整,需要二次投板。
6、可靠性測試、穩定性測試,通過驗收,專案完成!
硬體工程師應具備的基本技能:(1)由需求分析至總體方案、詳細設計的規劃創造能力;(2)熟練運用設計工具,設計原理圖、PCB板的能力;(3)熟練運用微控制器、DSP、PLD、FPGA等進行軟硬體開發除錯的能力;(4)熟練運用模擬工具、示波器、訊號發生器、邏輯分析儀等調測硬體的能力;(5)掌握常用的標準電路的設計能力,如復位電路、常用濾波器電路、功放電路、高速訊號傳輸線的匹配電路等;(6)故障定位、解決問題的能力;(7)設計文件的組織編寫技能。
嵌入式書籍推薦Linux基礎1、《Linux與Unix Shell 程式設計指南》C語言基礎1、《C Primer Plus,5th Edition》【美】Stephen Prata著2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)4、《嵌入式Linux應用程式開發詳解》Linux核心1、《深入理解Linux核心》(第三版)2、《Linux核心原始碼情景分析》毛德操胡希明著 研發方向1、《UNIX Network Programming》(UNP)2、《TCP/IP詳解》3、《Linux核心程式設計》4、《Linux裝置驅動開發》(LDD) 5、《Linux高階程式設計》楊宗德著 硬體基礎1、《ARM體系結構與程式設計》杜春雷著2、S3C2410 Datasheet
英語基礎1、《計算機與通訊專業英語》 系統教程1、《嵌入式系統――體系結構、程式設計與設計》2、《嵌入式系統――採用公開原始碼和StrongARM/Xscale處理器》毛德操胡希明著3、《Building Embedded Linux Systems》 4、《嵌入式ARM系統原理與例項開發》楊宗德著 理論基礎1、《演算法導論》2、《資料結構(C語言版)》3、《計算機組織與體系結構?效能分析》4、《深入理解計算機系統》【美】Randal E. Bryant David O''Hallaron著5、《作業系統:精髓與設計原理》6、《編譯原理》7、《資料通訊與計算機網路》8、《資料壓縮原理與應用》C語言書籍推薦1. The C programming language 《C程式設計語言》2. Pointers on C 《C和指標》3. C traps and pitfalls 《C陷阱與缺陷》4. Expert C Lanuage 《專家C程式設計》5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《程式設計精粹--Microsoft 編寫優質無錯C程式祕訣》6. Programming Embedded Systems in C and C++ 《嵌入式系統程式設計》7.《C語言嵌入式系統程式設計修煉》8.《高質量C++/C程式設計指南》林銳 儘可能多的編碼,要學好C,不能只注重C本身。演算法,架構方式等都很重要。