| 
 進入嵌入式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等 
 |