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