時間 |
課程大綱 |
第一部分 |
學習目標 |
通過本課學習,學員可以:從用戶設備I/O編程角度深入了解設備驅動的原理;通過了解字符設備驅動框架和具體硬件設備I/O操作,能夠進行字符設備驅動開發(fā);了解內(nèi)核的設備模型及、linux3.14內(nèi)核設備樹模型及掌握udev的使用。 |
|
1.LINUX字符設備驅動程序開發(fā)
??
1.1?LINUX字符設備驅動基礎
??
1.2?字符設備驅動程序實現(xiàn)框架與典型驅動分析
??
1.3?用戶空間與內(nèi)核空間的數(shù)據(jù)傳輸
??
1.4?同步、互斥、阻塞、睡眠機制
??
1.5?Linux設備模型與sysfs文件系統(tǒng)
??
1.6?Linux-3.14 設備樹模型
??
1.7?udev與devfs文件系統(tǒng) |
|
實驗:
?? 1、驅動開發(fā)編程環(huán)境與內(nèi)核配置、編譯
??
2、編寫模塊化字符設備驅動程序與測試
??
3、如何為內(nèi)核程序傳遞參數(shù)
??
4、在驅動代碼中加入創(chuàng)建proc結點方法
??
5、蜂鳴器驅動程序編寫與測試
??
6、編寫驅動實現(xiàn)包含等待隊列、信號量、fifo等功能
??
7、學會利用udev和sysfs文件系統(tǒng)動態(tài)創(chuàng)建設備結點 |
第二部分 |
學習目標 |
通過本課習,學員可以掌握在基本字符設備驅動的基礎上增加復雜的內(nèi)核機制;了解1inux內(nèi)核中斷子系統(tǒng)的實現(xiàn)原理,掌握linux中斷處理程序編寫方法;掌握內(nèi)核延時機制及內(nèi)存管理機制。熟悉基于Cortex-A9 4核處理器的FS4412平臺。 |
|
2.設備驅動中常用的內(nèi)核機制
??
2.1?Poll和select操作
??
2.2?異步通知機制
??
2.3?1inux內(nèi)核中斷子系統(tǒng)
??
2.4?中斷處理程序編寫
??
2.5?驅動程序上/下半部處理與延緩執(zhí)行機制
??
2.6?內(nèi)核定時器與延遲機制
??
2.7?內(nèi)核內(nèi)存管理機制 |
|
實驗:
?? 1、編寫驅動實現(xiàn)包含poll功能
??
2、編寫驅動實現(xiàn)包含異步通知功能
??
3、編寫秒表字符設備,掌握定時器用法
??
4、編寫驅動實現(xiàn)tasklet功能
??
5、編寫驅動實現(xiàn)工作隊列功能
??
6、FS4412平臺上按鍵中斷實驗
??
7、FS4412平臺上A/D轉換實驗 |
第三部分 |
學習目標 |
通過本課學習,學員可以:明白Linux中塊設備驅動的特點及框架,獨立分析Linux中大部分塊設備的驅動方法,并熟悉eMMC設備驅動的特點與框架,具備eMMC驅動程序開發(fā)的能力。通過實驗,學員還可以掌握IDE、Ramdisk驅動移植方法。 |
|
3.LINUX塊設備驅動程序開發(fā)
??
3.1?塊設備及其驅動的特點
??
3.2?兩個關鍵結構體GEN_DISK與REQUEST
??
3.3?塊設備驅動程序的注冊與請求處理
??
3.4?EXYNOS4412上的eMMC控制器簡介 |
|
實驗:
?? 1、編寫簡單的塊設備驅動程序
??
2、實現(xiàn)RAMDISK驅動
??
3、FS4412上完成eMMC驅動 |
第四部分 |
學習目標 |
學員可以:深入理解Linux網(wǎng)絡驅動程序中有關套接字(socket)、套接字緩沖區(qū)(sk_buff)等概念,了解網(wǎng)絡驅動程序的數(shù)據(jù)交換過程。通過實際的動手操作,學員將掌握如何移植或編寫具體網(wǎng)卡的驅動程序,并在此基礎上實現(xiàn)更為高級的網(wǎng)絡功能。 |
|
4.LINUX網(wǎng)絡設備驅動程序開發(fā)
??
4.1?OSI網(wǎng)絡參考模型
??
4.2?套接字(SOCKET)簡介
??
4.3?套接字緩沖區(qū)(SK_BUFF)
??
4.4?NET_DEVICE結構分析
??
4.5?數(shù)據(jù)包傳送與接收
??
4.6?網(wǎng)絡驅動的中斷處理
??
4.7?網(wǎng)絡設備驅動程序的基本實現(xiàn)
5. I2C驅動子系統(tǒng)開發(fā)
6. SPI驅動子系統(tǒng)開發(fā)
|
|
實驗:
?? 1、編寫簡單的虛擬以太網(wǎng)卡驅動程序
??
2、移植并編寫DM9000網(wǎng)卡驅動程序
??
3、配置網(wǎng)絡參數(shù),測試網(wǎng)卡驅動程序行為 |
第五部分 |
學習目標 |
通過對Linux幀緩沖內(nèi)容的學習,學員可掌握嵌入式Linux顯示驅動程序的開發(fā)方法,理解嵌入式Linux圖形驅動程序實現(xiàn)機制,能夠移植或編寫嵌入式顯示控制器驅動程序,并完成針對各種LCD硬件的定制。
掌握電容觸摸屏工作原理,能夠移植或編寫觸摸屏驅動程序。 |
|
7.LINUX幀緩沖驅動程序開發(fā)
??
7.1?幀緩沖顯示技術
??
7.2?幀緩沖驅動程序顯示原理
??
7.3?幀緩沖驅動程序的數(shù)據(jù)結構
??
7.4?幀緩沖驅動程序的API
??
7.5?幀緩沖驅動程序的基本實現(xiàn)
??
7.6?使用高級圖形庫
8.電容觸摸屏驅動開發(fā)
??
8.1?電容觸摸屏驅動程序編寫 |
|
實驗:
??
1、熟悉FRAMEBUFFER驅動的結構
??
2、熟悉FRAMEBUFFER中的重要數(shù)據(jù)結構
??
3、編寫EXYNOS4412彩色LCD控制器驅動程序
??
4、編寫測試程序控制屏幕顯示
??
5、編譯高級圖形庫例子,顯示圖形
??
6、熟悉觸屏驅動程序
??
7、編寫觸屏測試代碼 |
第六部分 |
學習目標 |
掌握USB通訊規(guī)范及拓撲結構中的主機控制器、HUB、USB設備的工作流程;掌握EXYNOS4412 USB device控制器的工作原理。
通過Linux下USB Host驅動和USB Gadget開發(fā)內(nèi)容的學習,學員將深入理解Linux內(nèi)核USB子系統(tǒng),掌握USB驅動程序編寫技術。經(jīng)過學習后的學員能夠移植或編寫USB Host和USB Gadget設備驅動程序。 |
|
9.LINUX下USB驅動開發(fā)基礎
??
9.1?USB規(guī)范介紹
??
9.2?USB主機控制器
??
9.3?USB HUB
??
9.4?USB設備狀態(tài)
??
9.5?USB描述符
??
9.6?USB請求
??
9.7?USB通訊數(shù)據(jù)格式
??
9.8?EXYNOS4412 USB device控制器
??
9.9?編寫usbtransfer固件程序
10.LINUX下USB驅動高級開發(fā)
??
10.1?Linux USB驅動層次
??
10.2?Linux USB主機控制器驅動介紹
??
10.3?Linux USB HUB驅動介紹
??
10.4?Linux USB 設備驅動程序
??
10.5?Linux USB Host設備驅動程序
??
10.6?Linux USB Gadget設備驅動程序
11.Linux下其它高級設備驅動簡單介紹
??
11.1?PCI/PCIE設備驅動介紹
??
11.2?V4L2攝像頭驅動介紹
??
11.3?MTD Flash驅動介紹 |
|
實驗:
??
1、使用usbview工具觀察USB設備
??
2、使用sysfs分析USB層次結構
??
3、LINUX下編寫USB Host設備驅動
??
4、LINUX下編寫USB Gadget設備驅動 |