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