豬哥的嵌入式linux公房菜1參考模板_第1頁
豬哥的嵌入式linux公房菜1參考模板_第2頁
豬哥的嵌入式linux公房菜1參考模板_第3頁
豬哥的嵌入式linux公房菜1參考模板_第4頁
豬哥的嵌入式linux公房菜1參考模板_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、豬哥的嵌入式linux公房菜豬哥的嵌入式linux公房菜, 是中文領(lǐng)域第一篇針對嵌入式linux入門方面的技術(shù)資料。該文檔從技術(shù)層面,學習方法,學習策略等角度,從一個初學者的需求出發(fā),闡述了基本的概念群,提供了學習規(guī)劃方面的指導,網(wǎng)絡資源,環(huán)境配置的方法,shell基礎(chǔ),及l(fā)inux系統(tǒng)相關(guān)知識學習規(guī)劃及指引1、嵌入式linux入門學習規(guī)劃ARM+LINUX路線,主攻嵌入式Linux操作系統(tǒng)及其上應用軟件開發(fā)目標: (1) 掌握主流嵌入式微處理器的結(jié)構(gòu)與原理(初步定為arm9) (2) 必須掌握一個嵌入式操作系統(tǒng) (初步定為uclinux或li

2、nux,版本待定) (3) 必須熟悉嵌入式軟件開發(fā)流程并至少做一個嵌入式軟件項目。 從事嵌入式軟件開發(fā)的好處是: (1)目前國內(nèi)外這方面的人都很稀缺。這一領(lǐng)域入門門檻較高,所以非專業(yè)IT人員很難切入這一領(lǐng)域;另一方面,是因為這一領(lǐng)域較新,目前發(fā)展太快,大多數(shù)人無條件接觸。 (2)與企業(yè)計算等應用軟件不同,嵌入式領(lǐng)域人才的工作強度通常低一些(但收入不低)。 (3)哪天若想創(chuàng)業(yè),搞自已的產(chǎn)品,嵌入式不像應用軟件那樣容易被盜版。硬件設(shè)計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設(shè)計軟件就變成自己的產(chǎn)品了。&#

3、160;(4)興趣所在,這是最主要的。 從事嵌入式軟件開發(fā)的缺點是: (1)入門起點較高,所用到的技術(shù)往往都有一定難度,若軟硬件基礎(chǔ)不好,特別是操作系統(tǒng)級軟件功底不深,則可能不適于此行。 (2)這方面的企業(yè)數(shù)量要遠少于企業(yè)計算類企業(yè)。 (3)有少數(shù)公司經(jīng)常要碩士以上的人搞嵌入式,主要是基于嵌入式的難度。但大多數(shù)公司也并無此要求,只要有經(jīng)驗即可。 (4)平臺依托強,換平臺比較辛苦。 興趣的由來: 1、成功觀念不同,不虛度此生,就是我的成功。 2、喜歡思考,挑戰(zhàn)邏輯思維。 3、喜歡C C是一種能發(fā)揮

4、思維極限的語言。關(guān)于C的精神的一些方面可以被概述成短句如下: 相信程序員。 不要阻止程序員做那些需要去做的。 保持語言短小精干。 一種方法做一個操作。 使得它運行的夠快,盡管它并不能保證將是可移植的。 4、喜歡底層開發(fā),討厭vb類開發(fā)工具(并不是說vb不好)。 5、發(fā)展前景好,適合創(chuàng)業(yè),不想自己要死了的時候還是一個工程師。 2 / 36方法步驟: 1、基礎(chǔ)知識: 目的:能看懂硬件工作原理,但重點在嵌入式軟件,特別是操作系統(tǒng)級軟件,那將是我的優(yōu)勢。 科目:數(shù)字電路、計算機組成原理、嵌入式

5、微處理器結(jié)構(gòu)。 匯編語言、C/C+、編譯原理、離散數(shù)學。 數(shù)據(jù)結(jié)構(gòu)和算法、操作系統(tǒng)、軟件工程、網(wǎng)絡、數(shù)據(jù)庫。 方法:雖科目眾多,但都是較簡單的基礎(chǔ),且大部分已掌握。不一定全學,可根據(jù)需要選修。 主攻書籍:the c+ programming language(一直沒時間讀)、數(shù)據(jù)結(jié)構(gòu)-C2。 2、學習linux: 目的:深入掌握linux系統(tǒng)。 方法:使用linuxlinxu系統(tǒng)編程開發(fā)驅(qū)動開發(fā)和分析linux內(nèi)核。先看深,那主講原理。看幾遍后,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖

6、析則是0.11版,適合學習。最后深入代碼。 主攻書籍:linux內(nèi)核完全剖析、unix環(huán)境高級編程、深入理解linux內(nèi)核、情景分析和源代。 3、學習嵌入式linux: 目的:掌握嵌入式處理器其及系統(tǒng)。 方法:(1)嵌入式微處理器結(jié)構(gòu)與應用:直接arm原理及匯編即可,不要重復x86。 (2)嵌入式操作系統(tǒng)類:ucOS/II簡單,開源,可供入門。而后深入研究uClinux。 (3)必須有塊開發(fā)板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。 主攻書籍:毛德操的嵌入式系統(tǒng)及其他arm9手冊與arm匯編指令等。

7、60;4、深入學習: A、數(shù)字圖像壓縮技術(shù):主要是應掌握MPEG、mp3等編解碼算法和技術(shù)。 B、通信協(xié)議及編程技術(shù):TCP/IP協(xié)議、802.11,Bluetooth,GPRS、GSM、CDMA等。 C、網(wǎng)絡與信息安全技術(shù):如加密技術(shù),數(shù)字證書CA等。 D、DSP技術(shù):Digital Signal Process,DSP處理器通過硬件實現(xiàn)數(shù)字信號處理算法。  說明:太多細節(jié)未說明,可根據(jù)實際情況調(diào)整。重點在于1、3,不必完全按照順序作。對于學習c+,理由是c+不只是一種語言,一種工具,她還是一 種藝術(shù),一種文化,一種哲學理

8、念、但不是拿來炫耀得東西。對于linux內(nèi)核,學習編程,讀一些優(yōu)秀代碼也是有必要的。 注意:要學會舉一反多,有強大的基礎(chǔ),很多東西簡單看看就能會。想成為合格的程序員,前提是必須熟練至少一種編程語言,并具有良好的邏輯思維。一定要理論結(jié)合實踐。 不要一味鉆研技術(shù),雖然擠出時間是很難做到的,但還是要留點余地去完善其他的愛好,比如宇宙,素描、機械、管理,心理學、游戲、科幻電影。還有一些不愿意做但必須要做的! 技術(shù)是通過編程編程在編程編出來的。永遠不要夢想一步登天,不要做浮躁的人,不要覺得路途漫上。而是要編程編程在編程,完了在編程,在編程!等機會來了在創(chuàng)業(yè)(不要相信有奇跡發(fā)

9、生,盲目創(chuàng)業(yè)很難成功,即便成功了發(fā)展空間也不一定很大)。 嵌入式書籍推薦 Linux基礎(chǔ) 1、Linux與Unix Shell 編程指南 C語言基礎(chǔ) 1、C Primer Plus,5th Edition【美】Stephen Prata著 2、The C Programming Language, 2nd Edition【美】Brian W. Kernighan David M.

10、0;Rithie(K & R)著 3、Advanced Programming in the UNIX Environment,2nd Edition(APUE) 4、嵌入式Linux應用程序開發(fā)詳解 Linux內(nèi)核 1、深入理解Linux內(nèi)核(第三版) 2、Linux內(nèi)核源代碼情景分析毛德操 胡希明著 研發(fā)方向 1、UNIX Network Programming(UNP) 2、TCP/IP詳解&

11、#160;3、Linux內(nèi)核編程 4、Linux設(shè)備驅(qū)動開發(fā)(LDD) 5、Linux高級程序設(shè)計 楊宗德著硬件基礎(chǔ) 1、ARM體系結(jié)構(gòu)與編程杜春雷著 2、S3C2410 Datasheet 英語基礎(chǔ) 1、計算機與通信專業(yè)英語 系統(tǒng)教程 1、嵌入式系統(tǒng)體系結(jié)構(gòu)、編程與設(shè)計 2、嵌入式系統(tǒng)采用公開源代碼和StrongARM/Xscale處理器毛德操 胡希明著 3、Building Embedded Linux Systems4、嵌入式AR

12、M系統(tǒng)原理與實例開發(fā) 楊宗德著理論基礎(chǔ) 1、算法導論 2、數(shù)據(jù)結(jié)構(gòu)(C語言版) 3、計算機組織與體系結(jié)構(gòu)?性能分析 4、深入理解計算機系統(tǒng)【美】Randal E. Bryant David O''Hallaron著 5、操作系統(tǒng):精髓與設(shè)計原理 6、編譯原理 7、數(shù)據(jù)通信與計算機網(wǎng)絡 8、數(shù)據(jù)壓縮原理與應用 C語言書籍推薦 1. The C programming language 

13、;程序設(shè)計語言 2. Pointers on C 和指針 3. C traps and pitfalls 陷阱與缺陷 4. Expert C Lanuage 專家編程 5. Writing Clean Code -Microsoft Techiniques for Developing Bug-free C Programs&#

14、160;編程精粹-Microsoft 編寫優(yōu)質(zhì)無錯程序秘訣 6. Programming Embedded Systems in C and C+ 嵌入式系統(tǒng)編程 7.C語言嵌入式系統(tǒng)編程修煉 8.高質(zhì)量C+/C編程指南林銳 盡可能多的編碼,要學好C,不能只注重C本身。算法,架構(gòu)方式等都很重要。嵌入式linux入門學習內(nèi)容指南1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務能夠獨立安裝Li

15、nux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命令 認識Linux系統(tǒng)的常用服務安裝Linux操作系統(tǒng) Linux基本命令實踐 設(shè)置Linux環(huán)境變量 定制Linux的服務 Shell 編程基礎(chǔ)使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器2、Shell 編程基礎(chǔ)Shell簡介 認識后臺程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區(qū)別 編寫一個測試服務器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell

16、腳本程序3、Linux 下的 C 編程基礎(chǔ)linux C語言環(huán)境概述 Gcc使用方法 Gdb調(diào)試技術(shù) Autoconf Automake Makefile 代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境 熟悉Gcc編譯器 熟悉Makefile規(guī)則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序4、嵌入式系統(tǒng)開發(fā)基礎(chǔ)嵌入式系統(tǒng)概述 交叉編譯 配置TFTP服務 配置NFS服務 下載Bootloader和內(nèi)核 嵌入式Linux應用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot 編

17、譯并下載Linux內(nèi)核 編譯并下載Linux應用程序4、嵌入式系統(tǒng)移植Linux內(nèi)核代碼 平臺相關(guān)代碼分析 ARM平臺介紹 平臺移植的關(guān)鍵技術(shù) 移植Linux內(nèi)核到 ARM平臺 了解移植的概念 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板5、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux應用軟件開發(fā)流程 Linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序6、嵌入式系統(tǒng)中多進程程序設(shè)計Linux系統(tǒng)進程概述 嵌入式系統(tǒng)的進程特點 進程操作 守護進程 相

18、關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統(tǒng)調(diào)用任務管理、同步與通信 Linux任務概述任務調(diào)度 管道 信號 共享內(nèi)存 任務管理 API 了解Linux系統(tǒng)任務管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序7、嵌入式系統(tǒng)中多線程程序設(shè)計線程的基礎(chǔ)知識 多線程編程方法 線程應用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序8、嵌入式 Linux 網(wǎng)絡編程網(wǎng)絡基礎(chǔ)知識 嵌入式Linux中TCP/IP網(wǎng)絡結(jié)構(gòu) soc

19、ket 編程 常用 API函數(shù) 分析Ping命令的實現(xiàn) 基本UDP套接口編程 許可證管理 PPP協(xié)議 GPRS 了解嵌入式Linux網(wǎng)絡體系結(jié)構(gòu) 能夠進行嵌入式Linux環(huán)境下的socket 編程 熟悉UDP協(xié)議、PPP協(xié)議 熟悉GPRS 使用socket 編寫代理服務器 使用socket 編寫路由器 編寫許可證服務器 指出TCP和UDP的優(yōu)缺點 編寫一個web服務器 編寫一個運行在 ARM平臺的網(wǎng)絡播放器9、GUI 程序開發(fā)GUI基礎(chǔ) 嵌入式系統(tǒng)GUI類型 編譯QT 進行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調(diào)試一個加入信號/槽的實例

20、 通過重載QWidget 類方法處理事件10、Linux 字符設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序基礎(chǔ)知識 Linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs_operation結(jié)構(gòu) 加載驅(qū)動程序了解設(shè)備驅(qū)動程序的概念 了解Linux字符設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫字符設(shè)備驅(qū)動程序編寫Skull驅(qū)動 編寫鍵盤驅(qū)動 編寫I/O驅(qū)動 分析一個看門狗驅(qū)動程序 對比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動的不同Linux 塊設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序工作原理 典型的塊設(shè)備驅(qū)動程序分析 塊設(shè)備的讀寫請求隊列了解Linux塊設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫簡單的塊設(shè)備驅(qū)動程序比較字符設(shè)備與塊設(shè)備的異同 編寫MMC卡驅(qū)動程序

21、分析一個文件系統(tǒng) 對比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同11、文件系統(tǒng)虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc文件系統(tǒng) devfs 文件系統(tǒng) MTD技術(shù)簡介 MTD塊設(shè)備初始化 MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng) 了解嵌入式Linux的文件系統(tǒng) 了解MTD技術(shù) 能夠編寫簡單的文件系統(tǒng)為 ARM9開發(fā)板添加 MTD支持 移植JFFS2文件系統(tǒng) 通過proc文件系統(tǒng)修改操作系統(tǒng)參數(shù) 分析romfs 文件系統(tǒng)源代碼 創(chuàng)建一個cramfs 文件系統(tǒng)嵌入式系統(tǒng)知識體系、學習誤區(qū)及建議1 嵌入式系統(tǒng)的知識體系嵌入式系統(tǒng)的應用范圍可以粗略分為兩大類:電子

22、系統(tǒng)的智能化(工業(yè) 控制、現(xiàn)代農(nóng)業(yè)、家用電器、汽車電子、測控系統(tǒng)、數(shù)據(jù)采集等),計算機應用的延伸(MP3、手機、通信、網(wǎng)絡、計算機外圍設(shè)備等)。從這些應用可以看出, 要完成一個以MCU為核心的嵌入式系統(tǒng)應用產(chǎn)品設(shè)計,需要硬件、軟件及行業(yè)領(lǐng)域相關(guān)知識。硬件主要有MCU的硬件最小系統(tǒng)、輸入輸出外圍電路、人機接口 設(shè)計。軟件設(shè)計有固化軟件的設(shè)計,也可能含PC機軟件的設(shè)計。行業(yè)知識需要通過協(xié)作、交流與總結(jié)獲得。概括地說,學習以MCU為核心的嵌入式系統(tǒng),需要以下軟硬件基礎(chǔ)知識與實踐訓練:硬件最小系統(tǒng)(電源、晶振、復位、寫入調(diào)試接口);通用IO(開關(guān)量輸入輸出,涉及各種二值量檢測與控制);模數(shù)轉(zhuǎn)換(各種傳

23、感器信號的采集與處理,如紅外、溫度、光敏、超聲波、方向等);數(shù)模轉(zhuǎn)換(對模擬量設(shè)備利用數(shù)字進行控制);通信(串行通信接口SCI、串行外設(shè)接口SPI、集成電路互聯(lián)總線I2C、CAN、USB、嵌入式以太網(wǎng)、ZigBee技術(shù)等);顯示(LED、LCD等);控制(控制各種設(shè)備,包括PWM等控制技術(shù));數(shù)據(jù)處理(圖形、圖像、語音、視頻等的處理或識別);各種具體應用。萬變不離其宗,任何應用都可以歸入這幾類。而應用中的硬件設(shè)計、軟件設(shè)計、測試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統(tǒng)知識體系的有機組成部分,只不過它融于具體項目的開發(fā)過程之中。 以上實踐訓練涉及硬件基

24、礎(chǔ)、軟件基礎(chǔ)及相關(guān)領(lǐng)域知識。計算機語言、操作系統(tǒng)、開發(fā)環(huán)境等均是達到這些目的的工具。有些初學者,容易把工具的使用與所要達 到的真正目的相混淆。例如,有的學習者學了很長時間的嵌入式操作系統(tǒng)移植,而不進行實際嵌入式系統(tǒng)產(chǎn)品的開發(fā),到最后也做不好一個嵌入式系統(tǒng)小產(chǎn)品,偏離 了學習目標,甚至放棄嵌入式系統(tǒng)領(lǐng)域。這就是進入了嵌入式系統(tǒng)學習誤區(qū),下面對此作一些分析。2 嵌入式系統(tǒng)的學習誤區(qū) 關(guān)于嵌入式系統(tǒng)的學習方法,因?qū)W習經(jīng)歷、學習環(huán)境、學習目的、已有的知識基礎(chǔ)等不同,可能在學習順序、內(nèi)容選擇、實踐方式等方面有所不同。但是,應該明 確哪些是必備的基礎(chǔ)知識,哪些應該先學,哪些應該后學;哪些必須通過實踐才能獲

25、得;哪些是與具體芯片無關(guān)的通用知識,哪些是與具體芯片或開發(fā)環(huán)境相關(guān)的知 識。由于微處理器與微控制器種類繁多,也可能由于不同公司、機構(gòu)出于自身的利益,給出一些誤導性宣傳,特別是我國嵌入式微控制器制造技 術(shù)落后,使得人們對微控制器的發(fā)展,在認識與理解上存在差異,導致一些初學者進入嵌入式系統(tǒng)的學習誤區(qū),浪費了寶貴的學習時間。下面分析可能存在的幾個誤 區(qū)。21 操作系統(tǒng)的困惑如果說,學習嵌入式系統(tǒng)不是為了開發(fā)其應用產(chǎn)品,那 就沒有具體目標,諸如學習方法這樣的問題也就不必談了。實際上,這正是許多人想學,又不知從何開始學習的關(guān)鍵問題所在,不知道自己學習的具體目標。于是, 看了一些培訓廣告,看了書店中種類繁

26、多的嵌入式系統(tǒng)書籍,或上網(wǎng)以“嵌入式系統(tǒng)”為關(guān)鍵詞進行查詢,就參加培訓或看書,開始“學習起來”。對于有計算機閱 歷的人,往往選擇一個嵌入式操作系統(tǒng)就開始學習了。這有點像“瞎子摸大象”,只了解其一個側(cè)面。這樣如何能對嵌入式產(chǎn)品的開發(fā)過程有全面了解呢?針對許多 初學者選擇“XXX嵌入式操作系統(tǒng)+XXX處理器”的嵌入式系統(tǒng)入門學習模式,筆者認為是不合適的。筆者的建議是:首先把嵌入式系統(tǒng)軟件與硬件基礎(chǔ)打好 了,再根據(jù)實際需要,選擇一種實時操作系統(tǒng)(RTOS)進行學習實踐。要記住:RTOS是開發(fā)某些類嵌入式產(chǎn)品的輔助工具,是手段,不是目的;許多類嵌入 式產(chǎn)品,并不需要RTOS。所以,一開始就學習RTOS

27、,并不符合“由淺入深、循序漸進”的學習規(guī)律。RTOS本身由于種類繁多,實際 使用何種RTOS,一般需要由工作單位確定。基礎(chǔ)階段主要學習RTOS的基本原理與RTOS上的軟件開發(fā)方法,而不是學習如何設(shè)計RTOS。以開發(fā)實際嵌 入式產(chǎn)品為目標的學習者,不要把過多的精力花在設(shè)計或移植RTOS上面。正如很多人使用Windows操作系統(tǒng),而設(shè)計 Windows操作系統(tǒng)的只有Microsoft。許多人“研究”Linux,但不使用它,浪費了時間。人的精力是有限的,學習必須有所選擇。22 硬件與軟件的困惑 以MCU為核心的嵌入式技術(shù)的知識體系必須通過具體的MCU來體現(xiàn)、實踐。但是,選擇任何型號的MCU,其芯片相

28、關(guān)的知識只占知識體系的20左 右,80左右是通用的軟件硬件及相關(guān)知識。80的通用知識,必須通過具體實踐才能獲得,所以學習嵌入式技術(shù)一般要選擇一個系列的MCU。 系統(tǒng)含有硬件與軟件兩大部分,它們之間的關(guān)系如何?有些學者,僅從電子的角度認識嵌入式系統(tǒng)。認為“嵌入式系統(tǒng)=MCU硬件系統(tǒng)+小程序”。這些學者大 多具有良好的電子技術(shù)基礎(chǔ)知識。實際情況是,早期MCU內(nèi)部RAM小,程序存儲器外接,需要外擴各種IO,沒有像USB、嵌入式以太網(wǎng)等這樣較復雜的接 口。因此,程序占總設(shè)計量比例小于50,使人們認為嵌入式系統(tǒng)(單片機)是“電子系統(tǒng)”,以硬件為主,程序為輔。但是,隨著MCU制造技術(shù)的發(fā)展,不 僅MCU內(nèi)

29、部RAM越來越大,F(xiàn)lash進入MCU內(nèi)部改變了傳統(tǒng)的嵌入式系統(tǒng)開發(fā)與調(diào)試方式,固件程序可以更方便地調(diào)試與在線升級,許多情況下與開發(fā) PC機程序的方便程度相差無幾,只不過開發(fā)環(huán)境與運行環(huán)境不是同一載體而已。這使得嵌入式系統(tǒng)的軟件硬件設(shè)計方法發(fā)生了根本變化。 有些學者,僅從軟件開發(fā)角度認識嵌入式系統(tǒng),甚至僅從嵌入式操作系統(tǒng)認識嵌入式系統(tǒng)。這些學者大多具有良好的計算機軟件開發(fā)基礎(chǔ)知識,認為硬件是生產(chǎn)廠 商的事。他們沒有認識到,嵌入式系統(tǒng)產(chǎn)品的軟件與硬件均是需要開發(fā)者設(shè)計的。筆者常常接到一些關(guān)于嵌入式產(chǎn)品穩(wěn)定性的咨詢,發(fā)現(xiàn)大多數(shù)是由于軟件開發(fā)者對 底層硬件的基本原理不理解。特別是有些功能軟件開發(fā)者,

30、過分依賴于底層硬件的驅(qū)動軟件,自己對底層驅(qū)動原理知之甚少。實際上,一些功能軟件開發(fā)者,名義上 在做嵌入式軟件,其實僅僅是使用嵌入式編輯、編譯環(huán)境而已,本質(zhì)與開發(fā)通用PC機軟件沒有兩樣。而底層硬件驅(qū)動軟件的開發(fā),若不全面考慮高層功能軟件對底 層硬件的可能調(diào)用,也會使封裝或參數(shù)設(shè)計得不合理或不完備,導致高層功能軟件調(diào)用困難。可以看出,若把嵌入式系統(tǒng)的開發(fā)孤立地分為硬件設(shè)計、底層硬件驅(qū)動 軟件設(shè)計、高層功能軟件設(shè)計,那么一旦出現(xiàn)問題,就可能難以定位。實際上,嵌入式系統(tǒng)設(shè)計是一個軟件、硬件協(xié)同設(shè)計工程,不能像通用計算機那樣,軟件、硬 件完全分開來看,而要在一個大的框架內(nèi)協(xié)調(diào)工作。 學習嵌入式

31、系統(tǒng)是以軟件為主還是以硬件為主,或者如何選擇切入點,如何在軟件與 硬件之間取得平衡?對于這個困惑的建議是:要想成為一名真正的嵌入式系統(tǒng)設(shè)計師,在初學階段,必須打好嵌入式系統(tǒng)的硬件與軟件基礎(chǔ)。以下是從事嵌入式系統(tǒng) 設(shè)計二十多年的美國學者JohnCatsoulis在Designing Embedded Hardware一書中關(guān)于這個問題的總結(jié):嵌入式系統(tǒng) 與硬件緊密相關(guān),是軟件與硬件的綜合體,沒有對硬件的理解就不可能寫好嵌入式軟件;同樣,沒有對軟件的理解也不可能設(shè)計好嵌入式硬件。 23 片面認識嵌入式系統(tǒng)  嵌入式系統(tǒng)產(chǎn)品種類繁多,應用領(lǐng)域各異。在

32、第1部分中,把嵌入式系統(tǒng)的應用范圍粗略分為電子系統(tǒng)的智能化與計算機應用的延伸兩大類。從初學者角度,可能 存在分別從這兩個角度片面認識嵌入式系統(tǒng)的問題。因此,一些從電子系統(tǒng)智能化角度認識嵌入式系統(tǒng)的學習者,可能會忽視編程結(jié)構(gòu)、編程規(guī)范、軟件工程的要 求、操作系統(tǒng)等知識的積累。另一些從計算機應用的延伸角度認識嵌入式系統(tǒng)的學習者,可能會把通用計算機學習過程中的概念與方法生搬硬套到嵌入式系統(tǒng)的實踐 中,忽視嵌入式系統(tǒng)與通用計算機的差異。 實際上,在嵌入式系統(tǒng)學習與實踐的初始階段,應該充分了解嵌入式系統(tǒng)的特點,根據(jù)自身的 已有知識結(jié)構(gòu),制定適合自身情況的學習計劃。目標應該是打好嵌入式系統(tǒng)的硬件

33、與軟件基礎(chǔ),通過實踐,為成為良好的嵌入式系統(tǒng)設(shè)計師建立起基本知識結(jié)構(gòu)。學 習過程中,具體應用系統(tǒng)可為實踐載體,但不能拘泥于具體系統(tǒng),應該有一定的抽象與歸納。例如,初學者開發(fā)實際控制系統(tǒng)時沒有使用實時操作系統(tǒng),但不要認為 實時操作系統(tǒng)不需要學習。又例如,初學者可以一個帶有實時操作系統(tǒng)的樣例為藍本進行學習,但不要認為任何嵌入式系統(tǒng)都需要實時操作系統(tǒng),甚至為一個十分簡 明的實際系統(tǒng)加上不必要的實時操作系統(tǒng)。因此,片面認識嵌入式系統(tǒng),可能導致學習困惑。應該根據(jù)實際項目需要,鍛煉自己分析實際問題、解決問題的能力。這 是一個長期的學習與實踐過程,不能期望通過短期培訓完成整體知識體系的建立,應該重視自身實踐

34、,全面地理解嵌入式系統(tǒng)的知識體系。 24 入門芯片選擇的困惑 嵌入式系統(tǒng)的大部分初學者需要選擇一個微控制器(MCU)進行入門級學習,面對眾多廠家生產(chǎn)的微控制器系列,往往不知如何是好。  首先是關(guān)于位數(shù)問題,目前主要有8位、16位和32位MCU。不同位數(shù)的MCU各有應用領(lǐng)域,這一點與通用微機有很大不同。例如做一個遙控器,不需要使 用 32位MCU,否則MCU芯片價格就已經(jīng)超過遙控器價格需求。對于首次接觸嵌入式系統(tǒng)的學習者,可以根據(jù)自己的知識基礎(chǔ)選擇入門芯片的位數(shù)。建議大多 數(shù)初學者選擇8位MCU作為快速入門芯片,了解一些匯編與底層硬件知識,之后再

35、選16位或32位芯片進行學習實踐。 關(guān)于芯片選擇 的另一個誤區(qū)是認為有“主流芯片”存在,嵌入式系統(tǒng)也可以形成芯片壟斷。這完全是一種誤解,是套用通用計算機系統(tǒng)的思維模式,而忽視了嵌入式系統(tǒng)應用的多 樣性。關(guān)于學習芯片選擇還有一個誤區(qū),即誤認為選擇工作頻率高的芯片進行入門學習,更先進。實際上,工作頻率高可能給初學者帶來不少困難。   實際嵌入式系統(tǒng)設(shè)計不是追求芯片位數(shù)、工作頻率、操作系統(tǒng)等因素,而是追求穩(wěn)定可靠、維護、升級、功耗、價格等指標。初學者選擇入門芯片,是通過某 一: MCU作為藍本,獲得嵌入式系統(tǒng)知識體系的通用基礎(chǔ)。其基本原則是:入門時間較短、硬件

36、成本較低,知識要素較多,學習難度較低。 3 基礎(chǔ)階段的學習建議 基于以上討論,下面對廣大渴望學習嵌入式系統(tǒng)的學子提出幾點基礎(chǔ)階段的學習建議:  嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟硬件基礎(chǔ)。其實,只要找到正確的方法,加上努力,任何理工科學生,甚至非理工科學生,都能學好嵌入式系統(tǒng)。  選擇一個芯片及硬件評估板(入門芯片最好簡單一點,例如8位MCU)、選擇一本好書(最好有規(guī)范的例子)、找一位好老師(最好是有經(jīng)驗且熱心的)。硬 件評估板的價格一定要在1000元以下,不要太貴,最好能有自己動手的空間。不花一分硬件錢想要學好嵌入式系統(tǒng)不實際,因為這是

37、實踐性很強的學科。好書, 可以讓人少走彎路,不被誤導。好老師也可以是做過一些實際項目的學長(一定要找做過幾個成功項目的學長或老師做指導,否則經(jīng)驗不足也可能誤導),有教師指 導,學習進程會加快(人工智能學科里有個術(shù)語叫無教師指導學習模式與有教師指導學習模式,無教師指導學習模式比有教師指導學習模式復雜許多。  許多人怕硬件,其實嵌入式系統(tǒng)硬件比電子線路好學多了。只要深入理解:MCU的硬件最小系統(tǒng),對IO口、串行通信、鍵盤、LED、LCD、 SPI、 I2C、PWM、AD(包括一些傳感器)、DA等逐個實驗理解,逐步實踐,再通過動手做一個實際的小系統(tǒng),底層硬件基礎(chǔ)就有了。各個硬件模

38、 塊驅(qū)動程序的編寫是嵌入式系統(tǒng)的必備基礎(chǔ)。學習嵌入式系統(tǒng)的初期,這個過程是必須的。  至于嵌入式實時操作系統(tǒng)RTOS,一定不 要一開始就學,這樣會走很多彎路,也會使你對嵌入式系統(tǒng)感到畏懼。等你軟件硬件基礎(chǔ)打好了,再學習就感到容易理解。實際上,許多嵌入式應用并不需要操作系 統(tǒng)。也可以根據(jù)實際項目需要,再學習特定的RTOS。不要被一些嵌入式實時操作系統(tǒng)培訓班的宣傳所誤導,而忽視實際嵌入式系統(tǒng)軟硬件基礎(chǔ)知識的學習。  要避免片面地單純從“電子”或“計算機軟件”角度認識嵌入式系統(tǒng)。前面說過,嵌入式系統(tǒng)是軟件與硬件的綜合體。因此,要逐步從MCU的最小系統(tǒng)開始, 一點一點理解硬件原理及

39、底層硬件驅(qū)動編程方法。要通過規(guī)范的例子,理解軟件工程封裝、可復用等思想。通過規(guī)范編程,積累底層構(gòu)件(component), 也就是一個一個模塊;但是要封裝得比較好,可復用。  注重實驗與實踐。這里說的實驗主要指通過重復來驗證他人的工作,目的是學習基礎(chǔ)知識,這個過程一定要經(jīng)歷。實踐是自己設(shè)計,有具體的“產(chǎn)品”目標。如果花500元左右,自己做一個具有一定功能的小產(chǎn)品,且能穩(wěn)定運行1年以上,就可以說接近入門了。  關(guān)于入門芯片的選擇。不要選太復雜的微控制器作為入門芯片,不能超越學習過程。不要一下子學習幾種芯片。可以通過一個芯片入門,并具有一個實踐經(jīng)驗 后,根據(jù)實際需要選擇芯片開發(fā)

40、實際產(chǎn)品。注意,不要把微處理器(MPU與微控制器(MCU)概念相混淆,微處理器只是微控制器的內(nèi)核。  關(guān)于嵌入式操作系統(tǒng)的選擇。可以等到具有一定實踐基礎(chǔ)后,選擇一個簡單、容易理解原理的嵌入式操作系統(tǒng)進行學習。不要一開始就學習幾種操作系統(tǒng),理解了基本原理,實踐中確有實際需要再學習也不遲。人總是要不斷學習的。  關(guān)于匯編語言與C語言的取舍。隨著:MCU對C編譯的優(yōu)化支持,對于匯編語言可以只了解幾個必要的語句,而直接使用C語言編程。但必須通過第一個程序 理解芯片初始化過程、中斷機制、程序存儲情況等,區(qū)別于PC機程序的內(nèi)容。另外,為了測試的需要,最好掌握一門PC機編程語言。

41、0; 要明確自己的學習目的,并注意學習方法。要明確學習目的是打基礎(chǔ),還是為了適應工作需要而進行的短訓。學習方法方面,要根據(jù)學習目的選擇合適的學習途 徑,注意理論學習與實踐、通用知識與芯片相關(guān)知識、硬件知識與軟件知識的平衡,要在理解軟件工程基本原理基礎(chǔ)上理解硬件構(gòu)件與軟件構(gòu)件等基本概念。 以上建議,僅供初學者參考。當然,以上只是基礎(chǔ)階段的學習建議。要成為良好的嵌入式系統(tǒng)設(shè)計師,還需要在實際項目中鍛煉,并不斷學習與積累經(jīng)驗。嵌入式Linux學前指導(初學者必讀)目前,Linux作為嵌入式系統(tǒng)的主力軍,廣泛應用于消費類電子、工業(yè)控 制、軍工電子、電信/網(wǎng)絡/通訊、航空航天、汽車電子、醫(yī)療設(shè)

42、備、儀器儀表等相關(guān)行業(yè)。隨著嵌入式行業(yè)的迅猛發(fā)展,嵌入式Linux憑借其系統(tǒng)發(fā)展的成熟 度、市場應用的高份額也受到更多工程師朋友的青睞,越來越多的企業(yè)和研發(fā)機構(gòu)都轉(zhuǎn)向嵌入式Linux的開發(fā)和研究,這使得嵌入式Linux在新興的嵌入式 操作系統(tǒng)領(lǐng)域內(nèi)也獲得了飛速發(fā)展和廣泛應用。而對于那些希望盡快進入嵌入式行業(yè)從事產(chǎn)品研發(fā)的朋友們,選擇嵌入式Linux方向作為切入點無疑是最好的途 徑之一。近期,有許多面臨畢業(yè)、找工作的大學生來網(wǎng)站咨詢了解 有關(guān)嵌入式Linux方向的學習安排。在與他們交流溝通的過程中,被問到最多的幾個問題就是“如何做好嵌入式Linux學習前的準備?”,“學習嵌入式 Linux需要補

43、習哪些基礎(chǔ)課程?”,“嵌入式Linux開發(fā)跟普通軟件開發(fā)在學習方法上有什么不同?”,“項目實戰(zhàn)環(huán)節(jié)多嗎?”,“有專業(yè)人員帶領(lǐng) 嗎?”,相信這些也是很多準備入行的初學者都會關(guān)心的問題,為了幫助大家做好嵌入式Linux的學前準備,我們對這些常見的問題逐一進行解答,提供給大家 參考,希望能夠有所幫助。1、如何做好嵌入式Linux學習前的準備?要成為一名合格的嵌入式Linux工程師,就需要系統(tǒng)的學習軟、硬件相關(guān)領(lǐng) 域內(nèi)的知識,需要在最開始就掌握開發(fā)的規(guī)范和原則,養(yǎng)成良好的工作習慣。為了確保學習的效果,這就要求準 備參加嵌入式Linux就業(yè)課程學習的同學要調(diào)整好自己的時間,務必要確保在4個多月的學習時間

44、內(nèi)能夠高度集中精力。在整個集中學習過程中,既要保證課上認真聽講、實戰(zhàn)演練的時間,也要保證課下繼續(xù)實戰(zhàn)演練、查閱資料的時間。只有經(jīng)過這種高強度的、實戰(zhàn)為主的訓練,才能夠在比較短的時間內(nèi)掌握規(guī)范的嵌入式開發(fā)工作流程,讓自己符合嵌入式企業(yè)對應崗位的需求。除了在學習時間上要做好充分的準備之外,在學習的心態(tài)和方法的調(diào)整上也要做 好準備。許多朋友只了解嵌入式Linux方向美好的發(fā)展前景,只關(guān)注高收入、就業(yè)機會多等熱點,卻忽略了學習過程本身。為了能夠讓集中培訓的效果發(fā)揮到最 佳,建議大家在學習開始前更多地去了解嵌入式產(chǎn)品研發(fā)的特點、所需要掌握的技術(shù)規(guī)范和工作要點,關(guān)注需具備基礎(chǔ)的補充和學習,從而為后續(xù)的強化

45、學習過程做 好心態(tài)上的準備,畢竟態(tài)度往往決定了最后做事的結(jié)果。2、學習嵌入式Linux需要補習哪些基礎(chǔ)課程?嵌入式Linux工程師的學習需要具備一定的C語言基礎(chǔ),因此面對許多朋友 只是在大一或者大二學習過C(還不一定認真學了,呵呵!),之后基本就不再用過的情況,建議大家學習之前先復習一下C語言基礎(chǔ)這塊。要提醒大 家的是,復習時不能只關(guān)注基本語法,對于常用的數(shù)據(jù)存儲及處理方式,例如:數(shù)組、結(jié)構(gòu)體等也要關(guān)注,有條件的話一定在機器上親自敲敲代碼、分析理解一下具 體案例代碼編寫的思路,讓自己慢慢進入一名嵌入式開發(fā)人員的狀態(tài)。此外,在時間允許的情況下,建議大家看一下有關(guān)計算機操作系統(tǒng)工作原理以及 計算機

46、組成原理等方面的專業(yè)書籍。對于進程、線程、任務調(diào)度、總線、I/O等基本概念及工作原理有一個初步的了解和掌握,這部分知識的準備對于后續(xù)更好地 學習嵌入式Linux系統(tǒng)開發(fā)將會起到很好的幫助作用。3、嵌入式Linux開發(fā)跟普通軟件開發(fā)在學習方法上有什么不同?要成為一名成功的嵌入式軟件開發(fā)人員,程序的設(shè)計能力是首要技能,這一點與 普通的軟件開發(fā)人員的要求是一樣的。但是作為“軟硬兼施”的嵌入式開發(fā),則要求大家不僅要了解較底層軟件的工作過程和工作原理(例如操作系統(tǒng)級、驅(qū)動程序 級軟件),在軟件開發(fā)的專業(yè)水平上也需要充分考慮軟件設(shè)計的時間和空間效率,這樣才能設(shè)計出高性能嵌入式程序。因此面對相對復雜的嵌入式

47、系統(tǒng)的研發(fā)過程,在學習的過程中需要更多關(guān)注完整的知識體系結(jié)構(gòu)的建立。特別是對于原理性知識的掌握程度則相對普通的軟件開發(fā)人員提出了更高的要求。因此在學習的過程中,“要知其然,更要知其所以然”。記住貫穿始終的是:要知道為什么學?要知道學的是什么?要知道怎么學?要知道學了如何用?最后還要知道用的時候出了問題該如何解決?相信以這些問題為線索的學習過程一定可以幫助大家快速成為一名優(yōu)秀的嵌入式開發(fā)工程師。嵌入式系統(tǒng)Linux內(nèi)核開發(fā)學習指導框圖嵌入式設(shè)計應具備的基本技能1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動

48、過程詳解 熟悉Linux服務能夠獨立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命令 認識Linux系統(tǒng)的常用服務安裝Linux操作系統(tǒng)Linux基本命令實踐 設(shè)置Linux環(huán)境變量 定制Linux的服務 Shell 編程基礎(chǔ)使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器2、Shell 編程基礎(chǔ)Shell簡介 認識后臺程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作

49、0;熟悉Emacs的基本操作 比較不同shell的區(qū)別 編寫一個測試服務器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell腳本程序3、Linux 下的 C 編程基礎(chǔ)linux C語言環(huán)境概述 Gcc使用方法 Gdb調(diào)試技術(shù) Autoconf Automake Makefile 代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境 熟悉Gcc編譯器 熟悉Makefile規(guī)則編寫Hello,World程序

50、0;使用 make命令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序4、嵌入式系統(tǒng)開發(fā)基礎(chǔ)嵌入式系統(tǒng)概述 交叉編譯 配置TFTP服務 配置NFS服務 下載Bootloader和內(nèi)核 嵌入式Linux應用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot 編譯并下載Linux內(nèi)核 編譯并下載Linux應用程序4、嵌入式系統(tǒng)移植Linux內(nèi)核代碼 平臺相關(guān)代碼分析 ARM平臺介紹

51、60;平臺移植的關(guān)鍵技術(shù) 移植Linux內(nèi)核到 ARM平臺 了解移植的概念 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板5、嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux應用軟件開發(fā)流程 Linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序6、嵌入式系統(tǒng)中多進程程序設(shè)計Linux系統(tǒng)進程概述 嵌

52、入式系統(tǒng)的進程特點 進程操作 守護進程 相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統(tǒng)調(diào)用任務管理、同步與通信Linux任務概述任務調(diào)度 管道 信號 共享內(nèi)存 任務管理 API 了解Linux系統(tǒng)任務管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序7、嵌入式系統(tǒng)中多線程程序設(shè)計線程的基礎(chǔ)知

53、識 多線程編程方法 線程應用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序8、嵌入式 Linux 網(wǎng)絡編程網(wǎng)絡基礎(chǔ)知識 嵌入式Linux中TCP/IP網(wǎng)絡結(jié)構(gòu) socket 編程 常用 API函數(shù) 分析Ping命令的實現(xiàn) 基本UDP套接口編程 許可證管理 PPP協(xié)議 GPRS 了解嵌入式Linux網(wǎng)絡體系結(jié)構(gòu) 能夠進行嵌入式Linux環(huán)境下的socket 編程 熟悉UDP協(xié)議、PPP

54、協(xié)議 熟悉GPRS 使用socket 編寫代理服務器 使用socket 編寫路由器 編寫許可證服務器 指出TCP和UDP的優(yōu)缺點 編寫一個web服務器 編寫一個運行在 ARM平臺的網(wǎng)絡播放器9、GUI 程序開發(fā)GUI基礎(chǔ) 嵌入式系統(tǒng)GUI類型 編譯QT 進行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調(diào)試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件

55、10、Linux 字符設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序基礎(chǔ)知識 Linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs_operation結(jié)構(gòu) 加載驅(qū)動程序了解設(shè)備驅(qū)動程序的概念 了解Linux字符設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫字符設(shè)備驅(qū)動程序編寫Skull驅(qū)動 編寫鍵盤驅(qū)動編寫I/O驅(qū)動 分析一個看門狗驅(qū)動程序 對比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動的不同Linux 塊設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序工作原理 典型的塊設(shè)備驅(qū)動程序分析 塊設(shè)備的讀寫請求隊列了解Linux塊設(shè)備驅(qū)動

56、程序結(jié)構(gòu) 能夠編寫簡單的塊設(shè)備驅(qū)動程序比較字符設(shè)備與塊設(shè)備的異同 編寫MMC卡驅(qū)動程序 分析一個文件系統(tǒng) 對比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同11、文件系統(tǒng)虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc文件系統(tǒng) devfs 文件系統(tǒng) MTD技術(shù)簡介 MTD塊設(shè)備初始化 MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng) 了解嵌入式Linux的文件系統(tǒng) 了解MTD技術(shù) 能夠編寫簡單的文件系統(tǒng)為 ARM9開

57、發(fā)板添加 MTD支持 移植JFFS2文件系統(tǒng) 通過proc文件系統(tǒng)修改操作系統(tǒng)參數(shù) 分析romfs 文件系統(tǒng)源代碼 創(chuàng)建一個cramfs 文件系統(tǒng) 簡單地總結(jié)一下硬件開發(fā)的基本過程:    1、明確硬件總體需求情況,如CPU處理能力、存儲容量及速度、I/O端口的分配、接口要求、電平要求、特殊電路要求等等。    2、根據(jù)需求分析制定硬件總體方案,尋求關(guān)鍵器件及相關(guān)技術(shù)資料、技術(shù)途徑和技術(shù)支持,充分考慮技術(shù)可行性、可靠性和成本控制,并對開發(fā)調(diào)試工具提出明確要

58、求。關(guān)鍵器件可試著去索取樣品。    3、總體方案確定后,做硬件和軟件的詳細設(shè)計,包括繪制硬件原理圖、軟件功能框圖、PCB設(shè)計、同時完成開發(fā)元器件清單。    4、做好PCB板后,對原理設(shè)計中的各個功能單元進行焊接調(diào)試,必要時修改原理圖并作記錄。    5、軟硬件系統(tǒng)聯(lián)調(diào)。一般情況下,經(jīng)過調(diào)試后原理及PCB設(shè)計上有所調(diào)整,需要二次投板。    6、可靠性測試、穩(wěn)定性測試,通過驗收,項目完成!  硬件工程師應具備的基本技能:   

59、; (1)由需求分析至總體方案、詳細設(shè)計的規(guī)劃創(chuàng)造能力;    (2)熟練運用設(shè)計工具,設(shè)計原理圖、PCB板的能力;    (3)熟練運用單片機、DSP、PLD、FPGA等進行軟硬件開發(fā)調(diào)試的能力;    (4)熟練運用仿真工具、示波器、信號發(fā)生器、邏輯分析儀等調(diào)測硬件的能力;    (5)掌握常用的標準電路的設(shè)計能力,如復位電路、常用濾波器電路、功放電路、高速信號傳輸線的匹配電路等;   

60、60;(6)故障定位、解決問題的能力;    (7)設(shè)計文檔的組織編寫技能。     嵌入式書籍推薦 Linux基礎(chǔ) 1、Linux與Unix Shell 編程指南 C語言基礎(chǔ) 1、C Primer Plus,5th Edition【美】Stephen Prata著 2、The C Programming Language, 2nd Edition

61、【美】Brian W. Kernighan David M. Rithie(K & R)著 3、Advanced Programming in the UNIX Environment,2nd Edition(APUE) 4、嵌入式Linux應用程序開發(fā)詳解 Linux內(nèi)核 1、深入理解Linux內(nèi)核(第三版) 2、Linux內(nèi)核源代碼情景分析毛德操 胡希明著 研發(fā)方向 1、UN

62、IX Network Programming(UNP) 2、TCP/IP詳解 3、Linux內(nèi)核編程 4、Linux設(shè)備驅(qū)動開發(fā)(LDD) 5、Linux高級程序設(shè)計 楊宗德著硬件基礎(chǔ) 1、ARM體系結(jié)構(gòu)與編程杜春雷著 2、S3C2410 Datasheet 英語基礎(chǔ) 1、計算機與通信專業(yè)英語 系統(tǒng)教程 1、嵌入式系統(tǒng)體系結(jié)構(gòu)、編程與設(shè)計 2、嵌入式系統(tǒng)采用公開源代碼和StrongARM/Xscale處理器毛德操 胡希明著 3

63、、Building Embedded Linux Systems4、嵌入式ARM系統(tǒng)原理與實例開發(fā) 楊宗德著理論基礎(chǔ) 1、算法導論 2、數(shù)據(jù)結(jié)構(gòu)(C語言版) 3、計算機組織與體系結(jié)構(gòu)?性能分析 4、深入理解計算機系統(tǒng)【美】Randal E. Bryant David O''Hallaron著 5、操作系統(tǒng):精髓與設(shè)計原理 6、編譯原理 7、數(shù)據(jù)通信與計算機網(wǎng)絡 8、數(shù)據(jù)壓縮原理與應用 C語言書籍推薦 1. The&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論