嵌入式高手修煉之路看完感覺要瘋了_第1頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式高手修煉之路,看完感覺要瘋了第一部分:平臺搭建與環(huán)境認(rèn)識了解linux系統(tǒng);區(qū)別各種版本的linux系統(tǒng),以便于拓展 linux視野。1、linux 簡介;2、linux 系統(tǒng)的主要特點;3、linux 的組成;4、主要的 linux 版本;5、 linux簡介與進(jìn)展其次部分虛擬機(jī)安裝和linux系統(tǒng)安裝1、虛擬機(jī)安裝;2、linux系統(tǒng)的安裝;3、linux系統(tǒng)的常用軟件的安裝;4、linux迅速入門5、 認(rèn)識運用 linux環(huán)境下,常用指令的操作與系統(tǒng)設(shè)置,如常用的 shell;把握基本的 shell 應(yīng)用第三部分:嵌入式linux環(huán)境搭建1、 建立嵌入式 linux開發(fā)環(huán)境2、 認(rèn)

2、識嵌入式開發(fā)平臺3、 嵌入式 linux開發(fā)工具4、 linux下的調(diào)試技巧5、 make工程管理器6、 硬件環(huán)境的搭建;arm-linux-gcc與 gcc安裝配置第四部分: u-boot: 了解 u-boot 的作用及工作流程;了解bootloader 的代碼結(jié)構(gòu)、編譯過程;移植u-boot;把握常用的u-boot指令。1、 bootloader介紹2、 u-boot工程介紹3、 u-boot的編譯用法4、 u-boot源碼分析5、 u-boot資源分配6、 配置編譯u-boot7、 u-boot移植過程8、 u-boot常用指令操作9、 添加u-boot新指令10、設(shè)置u-boot環(huán)境變

3、量11、 u-boot驅(qū)動添加如網(wǎng)卡:dm9000第五部分:linux內(nèi)核移植:認(rèn)識內(nèi)核的原碼結(jié)構(gòu)和kbuild makefile語法;把握和內(nèi)核、驅(qū)動模塊編譯相關(guān)的原理及辦法。1、linux內(nèi)核介紹2、linux內(nèi)核特點3、linux內(nèi)核源代碼結(jié)構(gòu)4、linux內(nèi)核選項解析5、linux內(nèi)核編譯鏈接6、內(nèi)核模塊編譯、用法辦法第六部分:linux根文件系統(tǒng)1、busybox 包移植、編譯2、linux跟文件系統(tǒng)制作過程3、根文件系統(tǒng)介紹4. nfs文件服務(wù)器系統(tǒng)搭建第七部分:linux驅(qū)動開發(fā)驅(qū)動開發(fā)是嵌入式linux開發(fā)難度最高的內(nèi)容,也是目前嵌入式行業(yè)最緊缺的人才之一。本課程介紹嵌入式li

4、nux驅(qū)動開發(fā)相關(guān)概念及開發(fā)流程,了解驅(qū)動開發(fā)的關(guān)鍵技術(shù)點,重點講解嵌入式linux下常用接口驅(qū)動的編寫辦法,包括1、字符型驅(qū)動開發(fā)(gpio口驅(qū)動)2、按鍵驅(qū)動開發(fā)(中斷驅(qū)動,在驅(qū)動中中斷程序的編寫,消息隊列的應(yīng)用3、驅(qū)動開發(fā)4、網(wǎng)卡驅(qū)動開發(fā)5、串口驅(qū)動開發(fā)6、液晶屏(tft彩屏驅(qū)動開發(fā)7、驅(qū)動+tslib(中間插件移植與設(shè)置),8、驅(qū)動開發(fā)+usb無線網(wǎng)卡移植9、iis驅(qū)動開發(fā)+maplay移植與應(yīng)用(mp3播放)+mplayer移植與應(yīng)用(視頻播放mp4/廣告機(jī)等播放)10、sd驅(qū)動開發(fā)11、rtc驅(qū)動開發(fā)12、辦法第八部分:linux應(yīng)用學(xué)習(xí)嵌入式linux應(yīng)用開發(fā)和系統(tǒng)開發(fā)是嵌入式l

5、inux中最重要的一部分,也是企業(yè)人才需求最廣的一部分。主要目標(biāo)是精通嵌入式linux下的程序設(shè)計,嫻熟把握嵌入式linux的開發(fā)環(huán)境、系統(tǒng)編程以及網(wǎng)絡(luò)編程,認(rèn)識c+、qt編程并且深刻體味囫圇嵌入式linux項目開發(fā)流程,強化學(xué)員對linux應(yīng)用開發(fā)的能力.1、linux系統(tǒng)中的進(jìn)程的概念,在應(yīng)用程序中線程與父子進(jìn)程的創(chuàng)建與應(yīng)用2、線程之間、進(jìn)程之間的通信3、進(jìn)程間通信基本概念4、管道(pipe)5、信號(signal)6、內(nèi)存映射(mapped memory)7、消息隊列(message queue)8、信號量(semaphore)9、分享內(nèi)存(share memory)10、tcpip協(xié)議

6、在應(yīng)用程序中的編程開發(fā)(socket套接字編程開發(fā))10.1. iso/osi七層協(xié)議模型與ip網(wǎng)絡(luò)四層模式10.2.tcp/ip協(xié)議簇10.3. 基于嵌入式linux的tcp/ip網(wǎng)絡(luò)結(jié)構(gòu)10.4. 基于嵌入式linux的socket編程10.5.udp與tcp的區(qū)分10.6. udp server-client關(guān)系程11、文件讀寫與存儲第九部分:qt移植與開發(fā)了解嵌入式linux下的幾種常見gui及其特點,重點能把握qt的有關(guān)內(nèi)容,具備qt程序設(shè)計能力。了解嵌入式數(shù)據(jù)庫的配置與開發(fā)1 、嵌入式linux gui介紹2、嵌入式qt開發(fā)包移植3、qt介紹及其信號插槽機(jī)制4、 qt圖形界面編程技

7、術(shù)5、qt應(yīng)用程序與linux驅(qū)動的連接6、 qt在實際項目中詳細(xì)應(yīng)用第十部分:無線通訊應(yīng)用1、無線wifi模塊應(yīng)用2、3g模塊應(yīng)用第十一部分:嵌入式系統(tǒng)應(yīng)用程序,驅(qū)動程序調(diào)試1、linux基本工具調(diào)試用法。gdb,insight調(diào)試等2、linux應(yīng)用程序的編程3、嵌入式產(chǎn)品程序打包與發(fā)布第十二部分:嵌入式項目綜合調(diào)試,產(chǎn)品發(fā)布了解真切項目的開發(fā)流程,把握如何將所學(xué)學(xué)問應(yīng)用到項目開發(fā)中。將模擬真切項目的管理過程,培養(yǎng)學(xué)員項目團(tuán)隊協(xié)同開發(fā)能力,項目文檔編寫能力和新學(xué)問的學(xué)習(xí)能力,為下一步就業(yè)做好學(xué)問上和心理上的充分預(yù)備。嵌入式lininx開發(fā) 3 階段1、嵌入式lininx開發(fā)第一學(xué)習(xí)階段,主

8、要打好基礎(chǔ),學(xué)好c編程,linux系統(tǒng)編程。1、編程基礎(chǔ)2、嵌入式開發(fā)基礎(chǔ):linux概述安裝,shell指令,vim編輯器,gcc,gdb,makefile,交錯開發(fā)環(huán)境構(gòu)建3、嵌入式linux系統(tǒng)編程:shell編程,文件編程,串口編程,進(jìn)程編程,線程編程,網(wǎng)絡(luò)編程4、嵌入式項目開發(fā):數(shù)據(jù)采集控制系統(tǒng),串口服務(wù)器2、嵌入式lininx開發(fā)其次學(xué)習(xí)階段,把握匯編程序設(shè)計,驅(qū)動程序設(shè)計。1、arm體系結(jié)構(gòu):arm體系,arm命令,thumb命令,匯編程序設(shè)計,規(guī)律程序開發(fā)2、linux內(nèi)核移植:bootloader,內(nèi)核配置,文件系統(tǒng)3、驅(qū)動程序開發(fā):驅(qū)動架構(gòu)模型,字符設(shè)備驅(qū)動,塊設(shè)備驅(qū)動,網(wǎng)

9、絡(luò)驅(qū)動4、嵌入式項目開發(fā):智能家居系統(tǒng),系統(tǒng)3、嵌入式lininx開發(fā)第三學(xué)習(xí)階段,把握c+面對對象程序設(shè)計,qt編程。1、c+語言編程基礎(chǔ)2、qt編程開發(fā):qt開發(fā)基礎(chǔ),qt布局與控件,qt繪圖,qt大事,qt網(wǎng)絡(luò)通信,qt數(shù)據(jù)庫,qt移植3、嵌入式項目開發(fā):車載監(jiān)控管理系統(tǒng),工業(yè)能源管理系統(tǒng)嵌入式設(shè)計應(yīng)具備的基本技能1、linux 基礎(chǔ)安裝linux操作系統(tǒng) linux文件系統(tǒng) linux常用指令 linux啟動過程詳解 認(rèn)識linux服務(wù)能夠自立安裝linux操作系統(tǒng) 能夠嫻熟用法linux系統(tǒng)的基本指令 熟悉linux系統(tǒng)的常用服務(wù)安裝linux操作系統(tǒng) linux基本指令實踐 設(shè)置l

10、inux環(huán)境變量 定制linux的服務(wù) shell 編程基礎(chǔ)用法vi編輯文件 用法emacs編輯文件 用法其他編輯器2、shell 編程基礎(chǔ)shell簡介 熟悉后臺程序bash編程認(rèn)識linux系統(tǒng)下的編輯環(huán)境 認(rèn)識linux下的各種shell 嫻熟舉行shell編程認(rèn)識vi基本操作 認(rèn)識emacs的基本操作 比較不同shell的區(qū)分 編寫一個測試服務(wù)器是否連通的shell腳本程序 編寫一個查看進(jìn)程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell腳本程序3、linux 下的 c 編程基礎(chǔ)linux c語言環(huán)境概述 gcc用法辦法 gdb調(diào)試技術(shù) autoconfautomake

11、makefile 代碼優(yōu)化 認(rèn)識linux系統(tǒng)下的開發(fā)環(huán)境 認(rèn)識gcc編譯器 認(rèn)識makefile規(guī)章編寫hello,world程序 用法 make指令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序4、嵌入式系統(tǒng)開發(fā)基礎(chǔ)嵌入式系統(tǒng)概述 交錯編譯 配置tftp服務(wù) 配置nfs服務(wù) 下載bootloader和內(nèi)核 嵌入式linux應(yīng)用軟件開發(fā)流程認(rèn)識嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載u-boot 編譯并下載linux內(nèi)核 編譯并下載linux應(yīng)用程序5、嵌入式系統(tǒng)移植linux內(nèi)核代碼 平臺相關(guān)代碼分析 arm平臺介紹 平臺移植的關(guān)鍵

12、技術(shù) 移植linux內(nèi)核到 arm平臺 了解移植的概念 能夠移植linux內(nèi)核移植linux2.6內(nèi)核到 arm9開發(fā)板6、嵌入式 linux 下串口通信串行i/o的基本概念 嵌入式linux應(yīng)用軟件開發(fā)流程 linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配置超級終端和minicom 能夠認(rèn)識舉行串口通信 認(rèn)識文件i/o 編寫串口通信程序 編寫多串口通信程序7、嵌入式系統(tǒng)中多進(jìn)程程序設(shè)計linux系統(tǒng)進(jìn)程概述 嵌入式系統(tǒng)的進(jìn)程特點 進(jìn)程操作 守護(hù)進(jìn)程 相關(guān)的系統(tǒng)調(diào)用了解linux系統(tǒng)中進(jìn)程的概念 能夠編寫多進(jìn)程程序編寫多進(jìn)程程序 編寫一個守護(hù)進(jìn)程程序 sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信

13、linux任務(wù)概述任務(wù)調(diào)度 管道 信號 分享內(nèi)存 任務(wù)管理 api 了解linux系統(tǒng)任務(wù)管理機(jī)制 認(rèn)識進(jìn)程間通信的幾種方式 認(rèn)識嵌入式linux中的任務(wù)間同步與通信編寫一個容易的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個用法分享內(nèi)存的程序8、嵌入式系統(tǒng)中多線程程序設(shè)計線程的基礎(chǔ)學(xué)問 多線程編程辦法 線程應(yīng)用中的同步問題了解線程的概念 能夠編寫容易的多線程程序編寫一個多線程程序9、嵌入式 linux 網(wǎng)絡(luò)編程網(wǎng)絡(luò)基礎(chǔ)學(xué)問 嵌入式linux中tcp/ip網(wǎng)絡(luò)結(jié)構(gòu) socket 編程 常用 api函數(shù) 分析ping指令的實現(xiàn) 基本udp套接口編程 許可證管理 ppp協(xié)議 gprs 了解嵌入式linux網(wǎng)絡(luò)體系

14、結(jié)構(gòu) 能夠舉行嵌入式linux環(huán)境下的socket 編程 認(rèn)識udp協(xié)議、ppp協(xié)議 認(rèn)識gprs 用法socket 編寫代理服務(wù)器 用法socket 編寫路由器編寫許可證服務(wù)器 指出tcp和udp的優(yōu)缺點 編寫一個web服務(wù)器 編寫一個運行在 arm平臺的網(wǎng)絡(luò)播放器10、gui 程序開發(fā)gui基礎(chǔ) 嵌入式系統(tǒng)gui類型 編譯qt 舉行qt開發(fā)認(rèn)識嵌入式系統(tǒng)常用的gui 能夠舉行qt編程用法qt編寫“hello,world”程序 調(diào)試一個加入信號/槽的實例 通過重載qwidget 類辦法處理大事11、linux 字符設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序基礎(chǔ)學(xué)問 linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs

15、_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ū)動程序 分析一個文件系統(tǒng) 對照linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同12、文件系統(tǒng)虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc

16、文件系統(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)資深大牛有話說:嵌入式編程的復(fù)雜性能從pc機(jī)器編程去看嵌入式問題,那是第一步;學(xué)會用嵌入式編程思想,那是其次步;用pc的思想和嵌入式的思想結(jié)合在一起,應(yīng)用于實際的項目,那是第三步。無數(shù)伴侶都是從pc編程轉(zhuǎn)向嵌入式編程的。在中國,嵌入式編程的伴侶很少是

17、正兒八經(jīng)從計算機(jī)專業(yè)畢業(yè)的,都是從自動控制啊,相關(guān)的專業(yè)畢業(yè)的。這些童鞋們,實踐閱歷雄厚,但是理論學(xué)問缺乏;計算機(jī)專業(yè)畢業(yè)的童鞋很大一部分去弄網(wǎng)游、網(wǎng)頁這些自立于操作系統(tǒng)的更高層的應(yīng)用了。也不太情愿從事嵌入式行業(yè),究竟這條路不好走。他們理論學(xué)問雄厚,但缺乏等相關(guān)的學(xué)問,在嵌入式里學(xué)習(xí)需要再學(xué)習(xí)一些詳細(xì)的學(xué)問,比較難走。雖然沒有做過產(chǎn)業(yè)調(diào)查,但從我所見和所聘請人員,從事嵌入式行業(yè)的工程師,要么缺乏理論學(xué)問,要么缺乏實踐閱歷。很少兩者兼?zhèn)涞?。究其緣由,還是中國的高校教導(dǎo)的問題。這里不探討這個問題,避開口水戰(zhàn)。我想列出我實踐中的幾個例子。引起大家在嵌入式中做項目時對一些問題的關(guān)注。第一個問題同事在u

18、c/os-ii下開發(fā)一個串口的驅(qū)動程序,驅(qū)動和接口在測試中均為發(fā)覺問題。應(yīng)用中開發(fā)了個通訊程序,串口驅(qū)動提供了一個查詢驅(qū)動緩沖區(qū)字符的函數(shù):getrxbuffcharnum()。 高層需要接受一定數(shù)量的字符以后才干對包做解析。一個同事撰寫的代碼,用偽代碼表示如下:bexit = false;do if (getrxbuffcharnum() >= 30)bexit = readrxbuff(buff, getrxbuffcharnum(); while (!bexit);這段代碼推斷當(dāng)前緩沖區(qū)中超過30個字符,就將緩沖區(qū)中所有字符讀到緩沖區(qū)中,直到讀取勝利為止。規(guī)律清晰,思路也清晰。但這

19、段代碼是不能正常工作。假如是在pc機(jī)上,定然是沒有任何問題,工作的異樣正常。但在嵌入式里真的是不得而知了。同事很煩悶,不知道為什么。來請我解決問題,當(dāng)初我看到代碼,就問了他,getrxbuffcharnum()是怎么實現(xiàn)的?打開一看:unsigned getrxbuffcharnum(void)cpu_register reg;unsigned num;reg = interrupt_disable();num = grxbuffcharnum;interrupt_enable(reg);return (num);很顯然,因為在循環(huán)中,interruput_disable()和interrup

20、t_enable()之間是個全局臨界區(qū)域,保證grxbufcharnum的完整性。但是,因為在外層的do while() 循環(huán)中,cpu常見的關(guān)閉中斷,打開中斷,這個時光十分的短。事實上cpu可能不能正常的響應(yīng)uart的中斷。固然這和uart的波特率、硬件緩沖區(qū)的大小還有cpu的速度都有關(guān)系。我們用法的波特率十分高,大約有3mbps。uart起始信號和停止信號占一個比特位。一個字節(jié)需要消耗10個周期。3mbps的波特率大約需要3.3us傳輸一個字節(jié)。3.3us能執(zhí)行多少個cpu命令呢?100mhz的arm,大約能執(zhí)行150條命令左右。結(jié)果關(guān)閉中斷的時光是多長呢?普通arm關(guān)閉中斷都需要4條以上的命令,打開又有4條以上的命令。接收uart中斷的代碼事實上是不止20條命令的。所以,這樣下來,就有可能浮現(xiàn)走

溫馨提示

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

最新文檔

評論

0/150

提交評論