|
課程目標 |
培養學員Linux下開發驅動程序的能力,授課時理論和實踐相結合,突出實驗部分,讓學員通過實踐扎扎實實掌握相關技能。學員可以掌握Linux下字符設備、塊設備、網絡設備、Framebuffer設備、SD卡等設備的驅動程序開發的技巧,以及嵌入式Linux的系統開發和分析方法。 |
入學要求 |
★熟悉Linux操作系統
★熟悉C語言,熟悉指針、結構體等概念;
★了解接口電路和數字電路的知識 |
班級規模及教學環境 |
為嚴控教學質量,讓學員有充分的提問機會,我們堅持超級小班教學,每個班級的人數限定為5人,多余人員安排到下一期。人手一套開發板和實驗用的PC主機。 |
上課時間和上課地點 |
上課地點:【上!浚和瑵髮W(滬西)/新城金郡商務樓(11號線白銀路站) 【深圳分部】:電影大廈(地鐵一號線大劇院站)/深圳大學成教院 【北京分部】:北京中山/福鑫大樓 【南京分部】:金港大廈(和燕路) 【武漢分部】:佳源大廈(高新二路) 【成都分部】:領館區1號(中和大道) 【沈陽分部】:沈陽理工大學/六宅臻品 【鄭州分部】:鄭州大學/錦華大廈 【石家莊分部】:河北科技大學/瑞景大廈 【廣州分部】:廣糧大廈 【西安分部】:協同大廈
近開課時間(周末班/連續班/晚班):Linux驅動開發:即將開課,詳情請咨詢客服。(歡迎您垂詢,視教育質量為生命!) |
學時和費用 |
★課時:
共共一個月
☆注重質量
☆邊講邊練
☆合格學員免費推薦工作
☆合格學員免費頒發相關工程師等資格證書,提升您的職業資質
專注高端培訓17年,曙海提供的課程得到本行業的廣泛認可,學員的能力
得到大家的認同,受到用人單位的廣泛贊譽。
★實驗設備請點擊這兒查看★ |
師資團隊 |
【李冠濤】
金牌講師,具有10年嵌入式技術從業經驗和十多年嵌入式linux驅動開發經驗,對于嵌入式Linux的實現和應用有深入研究,主持開發過多個大型嵌入式項目,涉及網絡,通訊,控制,信息終端等各行各業,例如航天在軌數據采集系統、地震數據采集分析系統、車載MP4設備等。對系統移植有很強的經驗,在X86/ARM/XSCALE/PowerPC/MIPS等各種體系結構平臺上移植Linux內核;對于嵌入式Linux的實時性和uCLinux的特點有深入研究。
【陳亮宇】
著名IT企業硬件工程師,對于硬件產業的發展有詳細的了解,在嵌入式系統的講解和傳授中偏重于嵌入式軟件對硬件的技術支持方面的知識,在行業中能得到廣泛的應用。具有十多年嵌入式開發實戰經驗,6年嵌入式培訓經驗,熟悉ARM/PPC/MIP平臺,對嵌入式Linux、uc/OS、uClinux有深入的研究。目前專攻手機設計和培訓。曾為數個大型企業進行手機開發、Linux開發方面的培訓。在參與的項目中,曾使用了Coldfire、POWERPC、S3C2410、PXA255等多款處理器,完成了平臺移植、Bootloader移植等工作。
★更多師資力量請見曙海師資團隊。 |
課程進度安排 |
|
課程大綱 |
第一講 |
|
通過本課學習,學員可以從用戶設備I/O編程角度深入了解設備驅動的原理;通過了解字符設備驅動框架和具體硬件設備I/O操作,能夠進行字符設備驅動開發;了解linux2.6內核的設備模型及掌握udev的使用。
|
|
1. LINUX字符設備驅動程序開發
1.1 LINUX字符設備驅動基礎
1.2 字符設備驅動程序實現框架與典型驅動分析
1.3 用戶空間與內核空間的數據傳輸
1.4 同步、互斥、阻塞、睡眠機制
1.5 Linux-2.6設備模型與sysfs文件系統
1.6 udev與devfs文件系統
|
|
【實驗】
1、驅動開發編程環境與內核配置、編譯
2、編寫模塊化字符設備驅動程序與測試 |
第二講 |
|
通過本課學習,學員可以掌握在基本字符設備驅動的基礎上增加復雜的內核機制;了解1inux內核中斷子系統的實現原理,掌握linux中斷處理程序編寫方法. |
|
2. 設備驅動中常用的內核機制
2.1 1inux內核中斷子系統
2.2 中斷處理程序編寫
2.3 驅動程序上/下半部處理與延緩執行機制
2.4 內核定時器與延遲機制 |
|
【實驗】
1、按鍵中斷實驗
2、A/D轉換實驗
|
第三講 |
|
通過本課學習,學員可以明白Linux中塊設備驅動的特點及框架,獨立分析Linux中大部分塊設備的驅動方法,并熟悉MTD設備驅動的特點與框架,具備MTD
Nand Flash驅動程序開發的能力。通過實驗,學員還可以掌握IDE、Ramdisk驅動移植方法。
|
|
3. LINUX塊設備驅動程序開發
3.1 塊設備及其驅動的特點
3.2 塊設備驅動程序中兩個關鍵結構體GEN_DISK與REQUEST
3.3 塊設備驅動程序的注冊與請求處理
3.4 MTD設備的特點以及與塊設備的關系
3.5 MTD設備驅動的框架及關鍵結構體分析
3.6 Cortex A8中的NAND FLASH控制器分析
3.7 Cortex A8 NAND FLASH
MTD驅動分析
|
|
【實驗】
1、編寫簡單的塊設備驅動程序
2、實現RAMDISK驅動
3、IDE硬盤的驅動移植
|
第四講 |
|
網絡設備是嵌入式產品開發,特別是基于網絡的產品開發中重要的內容之一。通過本課學習,學員可以深入理解Linux網絡驅動程序中有關套接字(socket)、套接字緩沖區(sk_buff)等概念,了解網絡驅動程序的數據交換過程。通過實際的動手操作,學員將掌握如何移植或編寫具體網卡的驅動程序,并在此基礎上實現更為高級的網絡功能。
|
|
4. LINUX網絡設備驅動程序開發
4.1 OSI網絡參考模型
4.2 套接字(SOCKET)簡介
4.3 套接字緩沖區(SK_BUFF)
4.4 NET_DEVICE結構分析
4.5 數據包傳送與接收
4.6 網絡驅動的中斷處理
4.7 網絡設備驅動程序的基本實現 |
|
【實驗】
1、了解網絡設備驅動中常用的數據結構
2、分析網絡驅動程序結構
3、編寫簡單的虛擬以太網卡驅動程序
4、移植并編寫CS8900A網卡驅動程序
5、移植并編寫DM9000網卡驅動程序
6、配置網絡參數,測試網卡驅動程序行為 |
第五講 |
|
通過本課學習,學員可掌握嵌入式Linux顯示驅動程序的開發方法,理解嵌入式Linux圖形驅動程序實現機制,能夠移植或編寫嵌入式顯示控制器驅動程序,并完成針對各種LCD硬件的定制。
|
|
5. LINUX幀緩沖驅動程序開發
5.1 幀緩沖顯示技術
5.2 幀緩沖驅動程序顯示原理
5.3 幀緩沖驅動程序的數據結構
5.4 幀緩沖驅動程序的API
5.5 幀緩沖驅動程序的基本實現
6.觸摸屏驅動開發
??
6.1?觸摸屏工作原理
??
6.2?S5PC100觸摸屏控制器工作原理
??
6.3?觸摸屏驅動程序編寫
|
|
【實驗】
1、熟悉FRAMEBUFFER驅動的結構
2、熟悉FRAMEBUFFER中的重要數據結構
3、編寫ARM彩色LCD控制器驅動程序
4、熟悉控制屏幕顯示方法
|
第六講 |
|
通過本課學習,學員可以了解MMC/SD卡的物理及電氣特性,熟悉相關的工作協議,并在此基礎上能夠移植或編寫Linux下的MMC/SD控制器的驅動程序。
|
|
7. LINUX下MMC/SD卡驅動開發
7.1 嵌入式系統中幾種常見存儲介質的比較(NOR/NAND
FLASH、CF、MMC/SD)
7.2 MMC/SD卡物理及電氣規范簡介
7.3 MMC/SD卡工作中的關鍵命令及關鍵結構信息
7.4 ARM中MMC/SDHOST控制器分析
7.5 LINUX中MMC/SD存儲卡驅動程序結構分析
7.6 ARM中MMC/SD HOST控制器的驅動實現 |
|
【實驗】
1、MMC/SD協議分析與布線原則
2、在LINUX源碼中加入針對ARM平臺的MMC/SD主控制器驅動的支持
3、以所給的驅動模板為基礎,補充初始化及命令和數據傳輸的關鍵代碼,終可以使用此代碼成功驅動SD存儲卡
|
第七講 |
|
掌握USB通訊規范及拓撲結構中的主機控制器、HUB、USB設備的工作流程;掌握S5PC100 USB device控制器的工作原理;后在FS_S5PC100開發板上編寫usbtransfer固件程序,結合PC機上windows環境下的DNW軟件,實現基于usb的文件下載功能。
通過Linux下USB驅動開發內容的學習,學員將深入理解Linux內核USB子系統,掌握USB驅動程序編寫技術。經過學習后的學員能夠移植或編寫USB主機OHCI和設備驅動程序,后通過對usbtransfer設備的驅動編程,實現在linux環境下的文件下載功能(替換DNW的下載功能)。
|
|
8.LINUX下USB驅動開發基礎
??
8.1?USB規范介紹
??
8.2?USB主機控制器
??
8.3?USB HUB
??
8.4?USB設備狀態
??
8.5?USB描述符
??
8.6?USB請求
??
8.7?USB通訊數據格式
??
8.8?S5CPC100 USB device控制器
??
8.9?編寫usbtransfer固件程序
9.LINUX下USB驅動高級開發
??
9.1?Linux USB驅動層次
??
9.2?Linux USB主機控制器驅動介紹
??
9.3?Linux USB HUB驅動介紹
??
9.4?Linux USB 設備驅動程序
??
9.5?編寫usbtransfer設備驅動程序
??
9.6?編寫usbtransfer設備應用程序 |
|
【實驗】
1、MMC/SD協議分析與布線原則
2、在LINUX源碼中加入針對ARM平臺的MMC/SD主控制器驅動的支持
3、以所給的驅動模板為基礎,補充初始化及命令和數據傳輸的關鍵代碼,終可以使用此代碼成功驅動SD存儲卡
|