本課程內(nèi)容詳細(xì)說明Linux內(nèi)核程序編寫的高并發(fā)、同歩、中斷、計時器、運行內(nèi)存、DMA和cache等難題,融合案例解讀Linux驅(qū)動各種各樣設(shè)備驅(qū)動構(gòu)架、I/O實體模型及其Linux的移殖、設(shè)備樹編碼的撰寫等。
本課程內(nèi)容的合理布局分配是,每日授課約4鐘頭,試驗約2鐘頭。規(guī)定學(xué)生親身在電腦上和電路板上開展試驗。
課程大綱:
*章內(nèi)核程序編寫
熱身運動,了解pcduino主控板
1.主控板詳細(xì)介紹和應(yīng)用
2.Bootloader、kernel、系統(tǒng)文件組成
3.怎么更新木板里的物品
第1節(jié)內(nèi)核程序編寫關(guān)鍵API深層次分析
1同歩與高并發(fā)(atomic,spinlock,mutex,completion深層次了解)
2等候序列
3內(nèi)核廷時
4運行內(nèi)存申請辦理和釋放出來
5作為DMA的運行內(nèi)存
6內(nèi)存屏障與存儲器瀏覽
第二節(jié)計時器
1內(nèi)核計時器tick
2tickless
3高精密計時器hrtimer
第三節(jié)中斷
1中斷頂?shù)紫掳?br> 2軟中斷
3tasklet
4工作中序列
5threaded_irq
6多核中斷affinity及軟中斷三層交換機
第四節(jié)Linux內(nèi)核模塊
1內(nèi)核模塊init和exit
2鍵入主要參數(shù)
3輸出主要參數(shù)
4控制模塊的license與GPL
第5節(jié)Linux內(nèi)核的調(diào)節(jié)
1printk
2Oops和panic
3initcall_debug
4電池管理suspend/resumedebug
5earlyprintk與lowleveldebug
6proc和sys
7grabserial
8soft和hardlockup
9內(nèi)核的源代碼級調(diào)節(jié)
10內(nèi)核模塊的源代碼級調(diào)節(jié)
11ftrace
第二章設(shè)備驅(qū)動
第1節(jié)Linux設(shè)備驅(qū)動實體模型
1Linux設(shè)備歸類
2Sys,系統(tǒng)總線、設(shè)備、驅(qū)動和class
3熱插拔
4電池管理
5udev
第二節(jié)設(shè)備驅(qū)動高并發(fā)操縱與I/O實體模型
1Linux標(biāo)識符設(shè)備驅(qū)動構(gòu)造
2Linux設(shè)備驅(qū)動中的高并發(fā)操縱
3Linux設(shè)備驅(qū)動中的堵塞和非堵塞I/O
4Linux時分復(fù)用I/O
5SignalIO與AIO
6客戶室內(nèi)空間I/O與線程同步設(shè)計原理
第三節(jié)Linux繁雜設(shè)備驅(qū)動
1設(shè)備驅(qū)動層次架構(gòu)
2設(shè)備驅(qū)動的面向?qū)ο缶幊淘O(shè)計方案
3platform驅(qū)動
4根據(jù)I2C/SPI/USB等系統(tǒng)總線的驅(qū)動
5塊設(shè)備驅(qū)動與塊I/O生產(chǎn)調(diào)度
6互聯(lián)網(wǎng)設(shè)備驅(qū)動
經(jīng)典案例
input分系統(tǒng)
LCD分系統(tǒng)
DM9000網(wǎng)口
ADI網(wǎng)口
vmem_disk
第三章Linux移殖和BSP搭建
第1節(jié)將Linux移殖到一個新的SoC或線路板
1OStimer
2L2cache
3early_printk
4clktree
5GPIO
6pinmux
7IRQchip
8DMA
9MACH_INIT
10小區(qū)維護(hù)保養(yǎng)
第二節(jié)設(shè)備樹(DeviceTree)
1用一個假定的簡易線路板從頭至尾搭建一個dts文件
2dts編譯程序為dtb,與dtb反匯編為dts
3Machine級的配對
4driver和device級的配對
5基詳細(xì)地址、中斷、gpio、數(shù)字時鐘、reset、pinmux等基本特性
6dts連接點自定特性
7起動全過程中dtb的載入與進(jìn)行
8i2c,spi子連接點的進(jìn)行
9dts的等級分類與dtsi
10dtbinding文本文檔