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