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