ARM嵌入式Linux高級驅(qū)動研修班課程介紹
課程背景
嵌入式軟件開發(fā)無疑是當今最熱門的行業(yè),嵌入式軟件工程師的薪資比普通的軟件工程師的薪資平均高50%以上。隨著智能電網(wǎng)、物聯(lián)網(wǎng)的建設(shè),社會對嵌入式人才的需求越來越多。
很多同學或在職人員已經(jīng)意識到了嵌入式開發(fā)的重要性,已經(jīng)開始自學嵌入式開發(fā)技術(shù),但是因為嵌入式開發(fā)不同于普通的純軟件開發(fā),它是綜合了計算機軟、硬件的一門綜合*,涉及模擬電路,數(shù)字電路,C語言、計算機組成原理,微機控制技術(shù),網(wǎng)絡(luò)技術(shù),數(shù)據(jù)結(jié)構(gòu)等課程,很多同學面對嵌入式涉及的這么多課程和知識點,往往不知道從何處下手開始學習嵌入式。
嵌入式Linux開發(fā)主要分為2大部分,即嵌入式Linux應(yīng)用程序開發(fā)和嵌入式Linux底層驅(qū)動程序開發(fā)。嵌入式Linux應(yīng)用程序開發(fā)是指在現(xiàn)有的嵌入式Linux平臺上進行應(yīng)用層程序開發(fā),應(yīng)用程序開發(fā)人員不用關(guān)心底層的硬件平臺和設(shè)備驅(qū)動程序,只是在應(yīng)用層實現(xiàn)相關(guān)的業(yè)務(wù)流程和邏輯即可,從這個角度看,嵌入式Linux應(yīng)用程序開發(fā)和普通的基于桌面版Linux和服務(wù)器Linux的應(yīng)用程序開發(fā)基本類似。 相比嵌入式Linux應(yīng)用程序開發(fā),嵌入式Linux驅(qū)動開發(fā)無論是從技術(shù)的難度,還是對開發(fā)人員的要求都要高一個層次,嵌入式驅(qū)動開發(fā)人員主要為具體硬件設(shè)備開發(fā)相應(yīng)的設(shè)備驅(qū)動程序,構(gòu)建嵌入式底層開發(fā)平臺,這就要求嵌入式驅(qū)動開發(fā)人員不但要懂應(yīng)用的開發(fā),還需要非常理解具體硬件設(shè)備的工作原理以及l(fā)inux系統(tǒng)內(nèi)核的原理,這樣才能開發(fā)出高效,穩(wěn)定的設(shè)備驅(qū)動程序。因此,一個優(yōu)秀的嵌入式系統(tǒng)驅(qū)動工程師非常難找,年薪一般可達15萬 ~ 30萬以上。
本課程即是英貝得嵌入式針對有興趣學習嵌入式Linux系統(tǒng)驅(qū)動開發(fā)又不知道從何處著實開始學習嵌入式Linux開發(fā)的在校學生以及社會在職人員而開設(shè)的。
課程目標
本課程采用理論教學與實驗相結(jié)合的方式,系統(tǒng)地介紹嵌入式Linux系統(tǒng)開發(fā)的流程,嵌入式Linux系統(tǒng)移植的方法,Bootloader的原理,嵌入式Linux下設(shè)備驅(qū)動程序開發(fā)過程。通過本課程的學習,學員可以掌握嵌入式Linux下字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備、LCD顯示屏、觸摸屏,USB設(shè)備等嵌入式硬件的設(shè)備的驅(qū)動開發(fā),同時掌握嵌入式Linux的系統(tǒng)驅(qū)動開發(fā)和分析的一般方法,達到舉一反三,靈活運用的效果。
培養(yǎng)對象
◆ARM嵌入式Linux初學者
◆ARM嵌入式Linux愛好者
◆有志于從事ARM嵌入式Linux系統(tǒng)驅(qū)動程序開發(fā)的工程師
入學要求
學員學習本課程應(yīng)具備下列基礎(chǔ)知識:
◆具備嵌入式linux應(yīng)用程序開發(fā)基礎(chǔ)
◆電子類、計算機類、通信類、自動化類高年級本科生或研究生
培訓教材
◆《ARM嵌入式Linux系統(tǒng)驅(qū)動研發(fā)工程師培訓講義》
◆《ARM嵌入式Linux系統(tǒng)驅(qū)動研發(fā)工程師培訓實驗教程》
學習周期
二個半月,160課時
實驗環(huán)境
為了保證培訓效果,增加互動環(huán)節(jié),我們堅持小班授課,每期報名人數(shù)限15人,多余人員安排到下一期進行。每個學員配備一套嵌入式飛凌ARM9學習開發(fā)板。
課程大綱(2011-02-12更新)
歡迎進入嵌入式Linux高級驅(qū)動討論區(qū),請登錄
時間
課程大綱
*部分 ARM嵌入式Linux設(shè)備驅(qū)動開發(fā)基礎(chǔ)
第 一 天
上午
嵌入式系統(tǒng)的開發(fā)模型
ARM體系架構(gòu)及編程基礎(chǔ)
ADS開發(fā)工具的使用
S3C2440微處理器介紹及接口設(shè)計
S3C2440的地址空間、時鐘系統(tǒng)、中斷系統(tǒng)及GPIO編程
FL2440開發(fā)板電路原理圖介紹
下午
實驗?zāi)康模?
練習裸機環(huán)境下ARM9的中斷及GPIO編程
任務(wù)描述:
當用戶按下某一個按鍵時,對應(yīng)的LED燈亮,再次按下該按鍵時,對應(yīng)的LED燈滅。要求不使用操作系統(tǒng),按鍵采用中斷機制實現(xiàn)。
第 二 天
上午
Bootloader的概念及功能
UBOOT的結(jié)構(gòu)及源碼組織
UBOOT的配置、編譯及連接過程
UBOOT加載內(nèi)核過程源碼分析
UBOOT的常用命令
UBOOT的移植
下午
實驗?zāi)康模?
練習UBOOT的使用及移植
任務(wù)描述:
移植UBOOT的FL2440開發(fā)板上,F(xiàn)L2440開發(fā)板上電后,UBOOT能正常運行并能正常引導(dǎo)啟動linux內(nèi)核。
第 三 天
上午
Linux2.6內(nèi)核的內(nèi)存管理機制
Linux系統(tǒng)的內(nèi)核空間和用戶空間
Linux內(nèi)核的虛擬地址和物理地址
Linux虛擬內(nèi)存到物理內(nèi)存的映射機制
ARM存儲管理單元MMU,頁表介紹,段頁式存儲管理
Linux內(nèi)核編程常用存儲管理函數(shù)介紹
下午
實驗?zāi)康模?
練習如何建立頁表,深入理解MMU,,頁表是如何完成虛擬地址到物理地址的映射過程。
任務(wù)描述:
在裸機環(huán)境下建立一個頁表,啟用MMU,將不同的虛擬地址空間映射到同一個物理地址空間(LED的物理地址),映射完成后,在應(yīng)用程序中操作2個虛擬地址,都可以來操作該LED.。
第 四 天
上午
Linux內(nèi)核中斷管理系統(tǒng)
Linux內(nèi)核中斷響應(yīng)流程分析
Linux內(nèi)核中斷管理相關(guān)函數(shù)解析
Linux中斷處理的上半部分和下半部分
Linux定時器管理
Linux硬件定時器及軟件定時器的使用
下午
實驗?zāi)康模?
練習linux系統(tǒng)下的中斷編程及硬件定時器編程
任務(wù)描述:
編寫一個硬件定時器驅(qū)動程序,在其中一個PIN腳上周期性輸出PWM波形,應(yīng)用程序可以啟動,停止PWM波形的輸出,同時可以改變PWM波的頻率和占空比。
第 五 天
上午
Linux2.6 設(shè)備驅(qū)動模型
Linux2.6 總線、設(shè)備及設(shè)備驅(qū)動的概念及關(guān)系
Linux2.6 sysfs文件系統(tǒng)
Linux2.6 設(shè)備及設(shè)備驅(qū)動程序架構(gòu)
下午
實驗?zāi)康模?
練習基于Linux2.6 的設(shè)備驅(qū)動模型開發(fā)設(shè)備驅(qū)動;
任務(wù)描述:
基于Linux2.6的platform設(shè)備驅(qū)動模型重寫LED字符設(shè)備驅(qū)動。
第 六 天
上午
Linux設(shè)備驅(qū)動程序中的并發(fā)控制、信號量;
Linux設(shè)備驅(qū)動程序中的阻塞與非阻塞IO
Linux設(shè)備驅(qū)動程序中的輪詢操作
Linux設(shè)備驅(qū)動程序中的異步通知和異步IO;
下午
實驗?zāi)康模?
練習在Linux設(shè)備驅(qū)動程序中使用并發(fā)控制、阻塞和非阻塞、輪詢和異步通知
任務(wù)描述:
在Linux LED驅(qū)動中增加并發(fā)控制
在Linux globlemem驅(qū)動中增加阻塞和非阻塞,并支持輪詢操作;
在Linux 按鍵驅(qū)動中增加異步通知
第二部分 ARM嵌入式Linux設(shè)備驅(qū)動程序開發(fā)
第 七 天
上午
LCD屏設(shè)備驅(qū)動程序設(shè)計
TFT LCD屏硬件工作原理分析
S3C2440 LCD接口控制信號及相關(guān)寄存器分析
TFT LCD控制信號時序分析
下午
實驗?zāi)康模?
練習S3C2440 LCD接口的硬件編程
任務(wù)描述:
裸機環(huán)境下編寫LCD驅(qū)動程序,在LCD屏上顯示一幅給定的圖片
第 八 天
上午
嵌入式Linux下LCD屏驅(qū)動程序框架
嵌入式Linux下LCD屏驅(qū)動源碼分析
嵌入式Linux下LCD屏驅(qū)動的移植
下午
實驗?zāi)康模?
深入理解嵌入式Linux LCD屏設(shè)備驅(qū)動,練習嵌入式Linux LCD屏設(shè)備驅(qū)動的移植與開發(fā);
任務(wù)描述:
在移植的Linux內(nèi)核上增加對LCD屏驅(qū)動的支持.
讀Linux內(nèi)核LCD屏驅(qū)動源碼,完成LCD屏驅(qū)動源碼分析筆記
第 九 天
上午
嵌入式Linux網(wǎng)卡驅(qū)動程序設(shè)計
S3C2440與網(wǎng)絡(luò)芯片DM9000的接口電路分析
網(wǎng)絡(luò)芯片DM9000的硬件工作原理
下午
實驗?zāi)康模?
深入理解S3C2440與DM9000的接口電路及DM9000的硬件工作原理,練習DM9000的硬件編程。
任務(wù)描述:
裸機環(huán)境下完成DM9000驅(qū)動程序,完成ARP報文的收發(fā)。
第 十 天
上午
嵌入式Linux下網(wǎng)卡驅(qū)動程序框架
Linux下網(wǎng)絡(luò)協(xié)議棧分析
嵌入式Linux網(wǎng)絡(luò)驅(qū)動源碼分析
嵌入式Linux網(wǎng)卡驅(qū)動移植
下午
實驗?zāi)康模?
深入理解嵌入式Linux網(wǎng)卡驅(qū)動框架,練習嵌入式linux環(huán)境下網(wǎng)卡驅(qū)動的移植
任務(wù)描述:
在移植的Linux內(nèi)核上增加對DM9000網(wǎng)卡驅(qū)動的支持。
讀linux DM9000網(wǎng)卡驅(qū)動源碼,完成源碼分析理解筆記;
第十一天
上午
嵌入式Linux Nor Flash驅(qū)動程序設(shè)計
嵌入式Linux Nor Flash硬件工作原理及電路原理圖分析
嵌入式Linux MTD子系統(tǒng)框架及源碼分析
嵌入式Linux Nor Flash驅(qū)動程序源碼分析
下午
實驗?zāi)康模?
深入理解嵌入式Linux環(huán)境下MTD子系統(tǒng)的工作原理,練習嵌入式Linux環(huán)境下NorFlash驅(qū)動編程。
任務(wù)描述:
在移植的Linux內(nèi)核上增加對NOR FLASH驅(qū)動的支持;
讀Linux NorFlash驅(qū)動源碼,完成源碼分析理解筆記
第十二天
上午
嵌入式Linux NAND FLASH驅(qū)動程序設(shè)計
NAND FLASH硬件工作原理及NAND FLASH操作流程
S3C2440 NAND FLASH控制器接口及電路原理圖分析
NAND FLASH讀寫時序分析
下午
實驗?zāi)康模?
深入理解NAND FLASH的操作流程,練習NAND FLASH硬件編程
任務(wù)描述:
裸機環(huán)境下完成FL2440上NAND FLASH驅(qū)動程序,實現(xiàn)對NAND FLASH的讀、寫、擦除操作。
第十三天
上午
嵌入式Linux NAND FLASH驅(qū)動程序框架
嵌入式Linux NAND FLASH驅(qū)動程序源碼組織
嵌入式Linux NAND FLASH驅(qū)動程序源碼分析
嵌入式Linux NAND FLASH 函數(shù)調(diào)用流程
下午
實驗?zāi)康模?
深入理解嵌入式Linux NAND FLASH驅(qū)動框架,練習嵌入式Linux下NAND FLASH驅(qū)動程序開發(fā)
任務(wù)描述:
在移植的Linux內(nèi)核上增加對NAND FLASH的支持;
讀Linux nand flash驅(qū)動源碼,完成源碼分析理解筆記
第十四天
上午
嵌入式Linux 觸摸屏驅(qū)動程序設(shè)計
電阻式觸摸屏硬件工作原理
S3C2440觸摸屏接口電路原理圖分析
嵌入式Linux觸摸屏驅(qū)動程序框架
下午
實驗?zāi)康模?
深入理解觸摸屏硬件工作流程,練習S3C2440下觸摸屏硬件工作編程
任務(wù)描述:
裸機環(huán)境下完成基于S3C2440的觸摸屏驅(qū)動程序,實現(xiàn)對觸摸上位置坐標的測量
第十五天
上午
嵌入式Linux觸摸屏驅(qū)動程序源碼分析
嵌入式Linux輸入子系統(tǒng)框架
嵌入式Linux輸入子系統(tǒng)工作原理
嵌入式Linux輸入子系統(tǒng)源碼分析
下午
實驗?zāi)康模?
深入理解嵌入式Linux觸摸屏、輸入子系統(tǒng)程序框架,練習嵌入式Linux下觸摸屏及其他輸入設(shè)備的驅(qū)動程序開發(fā)。
任務(wù)描述:
在移植的Linux內(nèi)核上增加對觸摸屏驅(qū)動的支持
讀Linux觸摸屏驅(qū)動源碼,完成源碼分析筆記
第十六天
上午
嵌入式Linux I2C總線驅(qū)動程序設(shè)計
I2C總線硬件工作原理及電路原理圖分析
I2C總線時序分析
S3C2440 I2C總線控制器工作原理
下午
實驗?zāi)康模?
深入理解I2C總線硬件工作原理,練習I2C總線硬件編程
任務(wù)描述:
裸機環(huán)境下完成S3C2440 I2C總線硬件編程,通過I2C總線驅(qū)動讀寫EEPROM AT24C02
第十七天
上午
嵌入式Linux I2C總線驅(qū)動程序框架及源碼組織
嵌入式Linux I2C 控制器驅(qū)動
嵌入式Linux I2C 核心
嵌入式 Linux I2C 設(shè)備驅(qū)動程序源碼分析
下午
實驗?zāi)康模?
深入理解嵌入式Linux I2C總線驅(qū)動程序框架,練習嵌入式Linux下I2C設(shè)備驅(qū)動程序的開發(fā)
任務(wù)描述:
在移植的linux內(nèi)核上增加對I2C設(shè)備AT24C02的驅(qū)動支持
讀I2C總線驅(qū)動源碼,完成I2C總線設(shè)備驅(qū)動源碼分析筆記
第十八天
上午
USB設(shè)備基本概念,USB設(shè)備,接口,端口,傳輸模式
USB主控制器,USB設(shè)備,
S3C2440 USB主控制器介紹及USB主控制器接口
USB總線控制器驅(qū)動框架
下午
USB主控制器源碼分析
第十九天
上午
USB設(shè)備驅(qū)動程序框架及源碼組織
USB核心子系統(tǒng)
USB設(shè)備驅(qū)動程序開發(fā)一般方法
USB請求塊
下午
EZ-USB Cy7c68013a-56 USB2.0 開發(fā)板介紹及原理
EZ-USB Cy7c68013a-56 USB2.0 開發(fā)板的使用
第二十天
實驗?zāi)康模?
深入理解linux下USB設(shè)備驅(qū)動框架,練習嵌入式Linux下USB設(shè)備驅(qū)動程序開發(fā)。
任務(wù)描述:
開發(fā)EZ-USB Cy7c68013a-56 USB2.0 開發(fā)板的嵌入式Linux設(shè)備驅(qū)動程序,在FL2440開發(fā)板上通過USB接口控制EZ-USB Cy7c68013a-56 USB2.0 開發(fā)板的LED燈。
讀Linux USB設(shè)備驅(qū)動源碼,完成源碼分析筆記