|
進入嵌入式Linux的精彩世界
|
·?Linux的特點、版本演進與發(fā)展方向
·?嵌入式Linux系統(tǒng)組成
·?開發(fā)環(huán)境構(gòu)建
o?安裝設(shè)置ARM工具鏈
o?安裝設(shè)置NFS、SSH、TFTP服務(wù)
·?GNU工具鏈和GDB調(diào)試
|
|
嵌入式Linux構(gòu)建與啟動過程分析
|
·?文件系統(tǒng)組成
·?Busybox編譯與配置
·?加入C庫
·?Linux啟動過程
o?Bootloader
o?內(nèi)核啟動過程
o?用戶空間init
·?嵌入式Linux裁剪
o?內(nèi)核Kconfig和Makefile
o?內(nèi)核源代碼目錄
o?內(nèi)核裁剪
o?文件系統(tǒng)裁剪
|
|
Linux內(nèi)核進程調(diào)度
|
·?task_struct
·?進程調(diào)度算法
·?進程調(diào)度時機
·?實時性
|
|
Linux內(nèi)核內(nèi)存管理
|
·?mm_struct, vma
·?buddy系統(tǒng)
·?slab、kmalloc
·?DMA、NORMAL、HIGHMEM ZONE
·?靜態(tài)內(nèi)存映射
·?連續(xù)內(nèi)存管理,CMA
|
|
Linux內(nèi)核文件系統(tǒng)
|
·?虛擬文件系統(tǒng)
·?inode、dentry、superblock
·?文件系統(tǒng)與block層
·?Flash文件系統(tǒng)
|
|
Linux 內(nèi)核系統(tǒng)調(diào)用
|
·?Linux系統(tǒng)調(diào)用實現(xiàn)原理
·?Linux系統(tǒng)調(diào)用實現(xiàn)
·?增加一個新的系統(tǒng)調(diào)用
|
|
內(nèi)核編程主要API
|
·?同步與并發(fā)
·?等待隊列
·?內(nèi)核延時
·?內(nèi)存申請和釋放
·?定時器
·?中斷頂?shù)装氩?/font>
o?軟中斷
o?tasklet
o?工作隊列
o?threaded_irq
·?Linux內(nèi)核線程
·?IO與內(nèi)存訪問
·?DMA與cache一致性
|
|
Linux內(nèi)核模塊
|
·?內(nèi)核模塊init和exit
·?輸入?yún)?shù)
·?輸出參數(shù)
·?案例部分:4個試驗案例演示模塊各個功能
|
|
Linux內(nèi)核調(diào)試方法
|
·?printk
·?Oops和panic
·?內(nèi)核debug選項
·?gdb、kgdb和kdb
·?使用仿真器
|
|
Linux設(shè)備驅(qū)動模型
|
·?Linux設(shè)備分類
·?Sys,總線,設(shè)備和驅(qū)動
·?熱插拔
·?電源管理
·?udev
|
|
Linux字符設(shè)備驅(qū)動結(jié)構(gòu)
|
·?Linux字符設(shè)備驅(qū)動結(jié)構(gòu)
·?globalmem虛擬設(shè)備實例描述
·?globalmem設(shè)備驅(qū)動
·?globalmem驅(qū)動的編譯與加載
·?globalmem驅(qū)動在用戶空間的驗證
|
|
Linux設(shè)備驅(qū)動中的并發(fā)控制
|
·?并發(fā)控制的概念
·?何時需要并發(fā)控制
·?自旋鎖
·?信號量,mutex
·?增加并發(fā)控制后的globalmem驅(qū)動
|
|
Linux設(shè)備驅(qū)動中的阻塞與非阻塞I/O
|
·?阻塞與非阻塞I/O
·?poll操作的概念
·?何時需要poll操作
·?等待隊列waitqueues
·?Linux poll操作相關(guān)數(shù)據(jù)結(jié)構(gòu)與函數(shù)
·?支持poll操作的globalmem驅(qū)動
|
|
Linux 設(shè)備驅(qū)動中的異步通知
|
·?異步通知的概念
·?何時需要異步通知
·?Linux異步通知相關(guān)數(shù)據(jù)結(jié)構(gòu)與函數(shù)
·?支持異步通知的globalmem驅(qū)動
o?在globalmem驅(qū)動中增加異步通知
o?在用戶空間驗證globalmem的異步通知
|
|
Linux MTD子系統(tǒng)與FLASH驅(qū)動
|
·?Linux MTD子系統(tǒng)結(jié)構(gòu)
·?NOR FLASH驅(qū)動
·?NAND FLASH驅(qū)動
·?FLASH文件系統(tǒng):JFFS2/YAFFS2/UBI
|
|
Linux 網(wǎng)絡(luò)設(shè)備驅(qū)動
|
·?Linux網(wǎng)絡(luò)協(xié)議棧
·?sk_buff
·?Linux網(wǎng)絡(luò)設(shè)備驅(qū)動結(jié)構(gòu)
·?數(shù)據(jù)發(fā)送流程
·?數(shù)據(jù)接收流程
|
|
設(shè)備驅(qū)動的分層?
|
·?設(shè)備驅(qū)動分層框架
·?實例1:input子系統(tǒng)
·?實例2:LCD子系統(tǒng)
|
|
I2C驅(qū)動
|
·?I2C主機驅(qū)動
·?I2C client驅(qū)動
·?I2C驅(qū)動電源管理
·?I2C板文件信息
|
|
SPI驅(qū)動
|
·?SPI主機驅(qū)動
·?SPI client驅(qū)動
·?SPI驅(qū)動電源管理
·?SPI板文件信息
|
|
platform設(shè)備驅(qū)動
|
·?platform驅(qū)動
·?platform設(shè)備
·?platform設(shè)備板級信息
|
|
將Linux移植到一個新的ARM SoC
|
·?early_printk
·?L2 cache
·?OS timer
·?clk tree
·?GPIO
·?pinmux
·?IRQ chip
·?DMA
·?MACH_INIT
·?device tree
·?社區(qū)維護
|
|
Linux調(diào)試與性能優(yōu)化
|
·?strace
·?core dump
·?gdb與多線程
·?常用工具(top/vmstat/iostat/sysctl等)
·?性能優(yōu)化: oprofile, LTTng, gprof
·?開機速度: bootchart
·?功耗:powertop
·?延遲:latencytop
·?內(nèi)存分析: procmem、procrank、smem
·?top, iostat, netstat等
|