韋東山視訊教程視訊的章節和要點
第一部分 ARM體系結構與裸機實驗 |
韋東山Linux視訊第1期 |
第01課 環境搭建及工具、概念介紹 |
第1部分的細化,以後就在Linux上工作了,環境必須先建好 |
第02課 GPIO實驗 |
寫出第1個裸板程式,掌握幾條彙編指令,彙編怎麼呼叫C |
知道怎麼操作GPIO,瞭解2440的啟動過程 |
|
寫出第1個Makefile, |
|
第03課 儲存管理器實驗 |
掌握SDRAM的初始化方法 |
掌握位置無關指令,相對跳轉、絕對跳轉 |
|
掌握程式碼重定位 |
|
第04課 MMU實驗 |
大概瞭解ARM裡虛擬地址、實體地址的概念 |
瞭解記憶體對映的基理 |
|
掌握連結指令碼的寫法 |
|
感覺有難度的就跨過 |
|
第05課 NAND FLASH控制器 |
掌握第1個協議類介面:NAND的操作原理 |
掌握把NAND中的程式重定位的方法 |
|
第06課 中斷控制器 |
掌握ARM架構的中斷處理過程 |
第07課 系統時鐘和UART實驗 |
掌握提高系統時鐘的方法,掌握串列埠的操作 |
第08課 LCD實驗 |
掌握LCD的操作方法,掌握時序設定(建議同時看第2期LCD驅動) |
再次深入瞭解連結指令碼,為何要清BSS段 |
|
第09課 U-BOOT分析 |
結合<嵌入式Linux應用開發完全手冊>瞭解u-boot的執行流程 |
理解u-boot的命令實現方法,能自己新增一個命令 |
|
瞭解u-boot怎麼傳引數給核心,怎樣啟動核心 |
|
第10課 核心啟動流程分析 |
掌握Linux核心的啟動流程:u-boot傳入的機器ID的處理 |
u-boot傳入的其他引數的處理 |
|
核心怎麼去啟動第1個應用程式 |
|
第11課 構建根檔案系統 |
第1個程序的作用 |
根檔案系統的構成 |
|
製作檔案系統映象檔案、燒寫 |
|
第12課節 字元裝置驅動程式 |
簡單的字元裝置驅動:框架、查詢方式、中斷方式、poll、 |
非同步通知、同步互斥等基本概念 |
|
第二部分 高階驅動程式及除錯 |
韋東山Linux視訊第2期 |
第13課 輸入子系統 |
第12課裡的驅動程式碼基本上都是自己寫的, |
第13課分析核心自帶的驅動,理解後再新增自己的硬體支援 |
|
輸入子系統是很重要的,觸控式螢幕、鍵盤、滑鼠等都是這套框架 |
|
第14課 驅動程式分層分離概念_匯流排驅動裝置模型 |
核心裡大量使用所謂的平臺驅動、平臺裝置,這只是一個技巧 |
第15課 LCD驅動程式 |
掌握frame buffer這套自帶驅動 |
掌握LCD的操作原理、時序設定 |
|
掌握編寫硬體相關的LCD底層驅動 |
|
第16課 觸控式螢幕驅動程式 |
掌握電阻式觸控式螢幕的操作原理 |
掌握輸入子系統的第2個驅動(第1個驅動是第13課) |
|
第17課 USB驅動程式 |
掌握USB驅動程式的框架:USB主機控制器驅動、USB裝置驅動 |
掌握USB裝置驅動的編寫方法 |
|
掌握USB資料的讀寫方法 |
|
第18課 塊裝置驅動程式 |
瞭解塊裝置驅動程式的框架,為何引入塊裝置驅動 |
掌握第1個最簡單的塊裝置驅動程式:用記憶體模擬硬碟 |
|
第19課 NAND FLASH驅動程式 |
MTD裝置的分層 |
NAND FLASH的操作原理 |
|
NAND FLASH的時序設定 |
|
NAND FALSH底層硬體驅動的設計 |
|
劃分分割槽 |
|
第20課 NOR FLASH驅動程式 |
MTD裝置的分層 |
NOR FLASH的操作原理 |
|
NOR FLASH的時序設定 |
|
NOR FALSH底層硬體驅動的設計 |
|
劃分分割槽 |
|
第21課 網絡卡驅動程式 |
瞭解第3類驅動:網絡卡驅動的框架 |
編寫一個虛擬網絡卡驅動來加深瞭解 |
|
第22課 網絡卡驅動程式 |
記憶體類介面晶片的操作方法:確定基址、設定時序 |
移植:編譯、出錯、解決錯誤、再編譯 |
|
第23課 I2C裝置裸板程式 |
掌握I2C協議,掌握在S3C2440上怎麼操作I2C |
第24課 I2C驅動程式 |
掌握I2C裝置驅動程式的框架及編寫方法 |
第25課 字元裝置驅動程式概念糾正之另一種寫法 |
egister_chrdev之外的第2中寫法:cdev |
第26課 OSS模型音效卡驅動的框架及UDA1341、WM9876驅動移植 |
|
第27課 DMA |
在核心下怎麼使用DMA |
第28課 熱撥插機制(hotplug)和mdev的使用 |
結合核心程式碼瞭解裝置節點的自動建立及刪除 |
掌握mdev的使用方法 |
|
實現熱撥插動作,比如讓U盤自動掛載 |
|
第29課 裸板除錯 |
點燈、列印、用JTAG工具進行原始碼級(gdb,eclipse)的除錯 |
進行原始碼級(gdb,eclipse)除錯的前提條件 |
|
第30課 驅動程式除錯 |
printk列印,借用proc檔案系統、分析oops資訊、棧資訊回溯 |
自制工具──暫存器編輯器 |
|
第31課 從系統的角度進行應用程式除錯 |
用strace命令跟蹤系統呼叫 |
用gdb和gdbserver除錯 |
|
自制系統呼叫 |
|
編寫輸入模擬器 |
|
第32課 新核心下的I2C驅動程式 |
新核心下的I2C驅動程式框架 |
編寫I2C裝置驅動程式 |
|
不寫驅動程式,從使用者態直接訪問 |
|
編寫I2C匯流排驅動程式 |
|
畢業班第1課 自己寫bootloader |
這是第3部分裸板的整合:啟動程式碼、重定位、NAND操作、 |
傳引數給核心、啟動核心 |
|
從這個簡單的程式,你可以理解u-boot的最重要功能 |
|
畢業班第2課 移植最新u-boot |
這也是第3部分裸板的實際應用 |
畢業班第3課 移植3.4.2核心,構造根檔案系統 |
|
畢業班第4課 移植驅動到3.4.2核心 |
有人說2.6.22.6核心太老了,你看了這一課就會發現 |
使用老核心可以讓你學到更多,並且把驅動移到新核心很簡單 |
|
第三部分 實戰專案 |
韋東山Linux視訊第3期 |
第1個專案 |
數碼相框 |
第1課_數碼相框之系統框架 |
總體講述這個專案所涉及的框架,所需要的知識 |
第2課第1節_字元的編碼方式 |
講解怎樣在LCD上顯示文字, 從最簡單的點限顯示講起, |
第2課第2節_字元的點陣顯示 |
|
第2課第3.1節_freetype理論介紹 |
|
第2課第3.2節_在PC上測試freetype |
|
第2課第3.3節_在LCD上顯示一個向量字型 |
|
第2課第3.4節_在LCD上顯示多行文字 |
|
第3課第1節_額外專案_電子書之效果及框架 |
額外專案1,實現了在LCD上顯示閱讀文字 以面向對像的方法編寫的程式很容易擴充套件, 這是一個示例 |
第3課第2節_額外專案_電子書之程式碼閱讀及編寫 |
|
第3課第3節_額外專案_電子書之指標的操作 |
|
第3課第4節_額外專案_電子書之連結串列的操作 |
|
第3課第5節_額外專案_電子書之在PC上顯示 |
|
第4課_編寫通用的Makefile |
從零寫出一個複雜的Makefile,工作中可以把它用於所有專案 |
第5課第1節_使用多種方法支援多輸入_框架及輪詢方式 |
以多種方式實現了輸入事件的讀取 |
第5課第2節_使用多種方法支援多輸入_select方式 |
|
第5課第3節_使用多種方法支援多輸入_多執行緒 |
|
第6課第1節_一小時學會網路程式設計_兩個簡單例子_tcp_udp |
掌握網路程式設計,掌握遠端列印(實際產品一般沒有串列埠供你操作) |
第6課第2節_修改電子書原始碼支援遠端列印1 |
|
第6課第2節_修改電子書原始碼支援遠端列印2 |
|
第7課_libjpeg的使用 |
使用開源庫顯示JPG圖片 |
第8課第1節_數碼相框功能及程式框架 |
這一節實現了數碼相框的架構設計, 串講了其他頁面的程式碼, |
第8課第2節_數碼相框程式編寫_先寫框架 |
|
第8課第3.1節_數碼相框程式編寫_圖示顯示之bmp資料提取 |
|
第8課第3.2節_數碼相框程式編寫_圖示顯示之縮放 |
|
第8課第3.3節_數碼相框程式編寫_圖示顯示之測試 |
|
第8課第4.1節_數碼相框程式GUI編寫_MainPage視訊記憶體管理 |
|
第8課第4.3節_數碼相框程式GUI編寫_MainPage輸入功能 |
|
第8課第4.4節_數碼相框GUI程式編寫_MainPage測試 |
|
第8課第5.1節_數碼相框效果演示及編譯使用方法 |
|
第8課第5.2節_數碼相框完整程式碼的講解 |
|
第8課第5.3節_數碼相框改進效能_支援中文 |
|
第8課第5.4節_數碼相框課後作業及思路 |
|
第2個專案 |
遠端視訊監控 |
第1課第1節_攝像頭驅動_V4L2框架分析 |
虛擬驅動程式忽略了複雜的硬體操作, |
第1課第2節_攝像頭驅動_虛擬驅動vivi的測試 |
|
第1課第3節_攝像頭驅動_虛擬驅動vivi徹底分析 |
|
第1課第4節_攝像頭驅動_從零寫一個虛擬驅動 |
|
第2課第1節_攝像頭驅動_USB攝像頭驅動框架分析 |
工作中我們不一定要自己寫攝像頭驅動, |
第2課第2節_攝像頭驅動_從零寫USB攝像頭驅動之分析描述符 |
|
第2課第3節_攝像頭驅動_從零寫USB攝像頭驅動之實現資料傳輸_框架 |
|
第2課第4節_攝像頭驅動_從零寫USB攝像頭驅動之實現資料傳輸_簡單函式 |
|
第2課第5節_攝像頭驅動_從零寫USB攝像頭驅動之實現資料傳輸_設定引數 |
|
第2課第6節_攝像頭驅動_從零寫USB攝像頭驅動之實現資料傳輸_URB |
|
第2課第7節_攝像頭驅動_從零寫USB攝像頭驅動之實現資料傳輸_除錯 |
|
第2課第8節_攝像頭驅動_從零寫USB攝像頭驅動之設定屬性 |
|
第3課第1節_自制USB攝像頭硬體的驅動編寫_修改UVC |
我們開發了一款USB、CMOS介面二合一的攝像頭, |
第3課第2節_自制USB攝像頭硬體的驅動編寫_修改MYUVC |
|
第4課第1節_在LCD上顯示攝像頭影象_效果_框架_準備工作 |
衍生專案: |
第4課第2節_在LCD上顯示攝像頭影象_實現攝像頭模組 |
|
第4課第3節_在LCD上顯示攝像頭影象_實現轉換模組 |
|
第4課第4節_在LCD上顯示攝像頭影象_整合程式碼 |
|
第4課第5節_在LCD上顯示攝像頭影象_除錯測試 |
|
第4課第6節_在LCD上顯示攝像頭影象_在PC上顯示 |
|
第5課第1節_CMOS攝像頭之硬體原理 |
根據V4L2的規範,從零實現了CMOS攝像頭驅動程式 |
第5課第2節_從零寫CMOS攝像頭驅動1_畫框架 |
|
第5課第3節_從零寫CMOS攝像頭驅動2_編寫驅動程式框架 |
|
第5課第4節_從零寫CMOS攝像頭驅動3_初始化攝像頭模組 |
|
第5課第5節_從零寫CMOS攝像頭驅動4.1_逐個講解並設定攝像頭控制器的暫存器 |
|
第5課第6節_從零寫CMOS攝像頭驅動4.2_逐個講解並設定攝像頭控制器的暫存器 |
|
第5課第7節_從零寫CMOS攝像頭驅動4.3_逐個講解並設定攝像頭控制器的暫存器 |
|
第5課第8節_從零寫CMOS攝像頭驅動5_編譯除錯 |
|
第6課第1節_額外專案2_行動式無線監控1_效果演示 |
衍生專案:把USB攝像頭接到無線路由器上,使用手冊連線無線路由器,在手機上觀看攝像頭影象 |
第6課第2節_額外專案2_行動式無線監控2_實現過程(上) |
|
第6課第3節_額外專案2_行動式無線監控3_實現過程(下) |
|
第7課第1節_使用WIFI網絡卡_準備工作及配置核心 |
介紹使用WIFI時的若干概念, |
第7課第2節_使用WIFI網絡卡_概念及工具iw(STA模式) |
|
第7課第3節_使用WIFI網絡卡_工具wpa_supplicant(STA模式) |
|
第7課第4節_使用WIFI網絡卡_工具dhcp及全自動使用wifi |
|
第7課第5節_使用WIFI網絡卡_AP模式 |
|
第7課第6節_使用WIFI網絡卡_仿手機寫wifi操作程式 |
|
第8課第1節_3G上網絡卡_工具及使用 |
使用開源工具使用3G上網絡卡,並仿照開源工具程式設計使用它 |
第8課第2節_3G上網絡卡_程式設計自動切換模式 |
|
第8課第3節_3G上網絡卡_程式設計自動確認撥號埠 |
|
第9課第02節_ALSA音效卡_裸板之編寫程式_P |
先寫出音效卡的裸板程式,這使得我們可以掌握音效卡的硬體操作過程; 再分析ALSA驅動程式的框架及呼叫過程, 然後從零寫出一個ALSA音效卡驅動,這使得我們可以徹底掌握ALSA驅動。 雖然工作中我們很可能只是移植廠家提供的驅動,但是前提是我們要對驅動框架有深入的理解,而最好的學習方法就是從零寫出來。 作為移植的示例,我們還移植了WM8976的音效卡驅動。 最後,簡單地寫了一個ALSA應用程式。 |
第9課第03節_ALSA音效卡_裸板之編譯和測試1 |
|
第9課第04節_ALSA音效卡_ALSA驅動框架 |
|
第9課第05節_ALSA音效卡_ASoC驅動框架 |
|
第9課第06節_ALSA音效卡_體驗音效卡 |
|
第9課第07節_ALSA音效卡_分析呼叫過程 |
|
第9課第08節_ALSA音效卡_從零編寫之框架 |
|
第9課第09節_ALSA音效卡_從零編寫之引數設定 |
|
第9課第10節_ALSA音效卡_從零編寫之資料傳輸 |
|
第9課第11節_ALSA音效卡_從零編寫之除錯 |
|
第9課第12節_ALSA音效卡_從零編寫之新增音量控制 |
|
第9課第13節_ALSA音效卡_從零編寫之WM8976 |
|
第9課第14節_ALSA音效卡_移植原廠WM8976驅動 |
|
第9課第15節_ALSA音效卡_修改核心音效卡BUG |
|
第9課第16節_ALSA音效卡_編寫ALSA音效卡應用程式 |
|
第10課第1節_講解mjpg-streamer_移植_效果演示 |
我們使用開源工具mjpg-streamer來作為伺服器端以傳輸視訊,這本課程裡,先分析它的原始碼;然後寫一個PC客戶端程式以接收視訊並顯示出來。 |
第10課第2節_講解mjpg-streamer_框架 |
|
第10課第3節_講解mjpg-streamer_原始碼分析(上)_主程序 |
|
第10課第4節_講解mjpg-streamer_原始碼分析(中)_輸入通道_視訊採集過程 |
|
第10課第5節_講解mjpg-streamer_原始碼分析(下)_輸出通道_視訊傳輸過程 |
|
第10課第6節_講解mjpg-streamer_自己寫客服端(上) |
|
第10課第7節_講解mjpg-streamer_自己寫客服端(下) |
|
第10課第8節_講解mjpg-streamer_自己寫客服端_編譯除錯 |
|
第1課第1節_電源管理概述 | |
第2課第1節_在uboot實現電源管理_編寫休眠功能 | |
第2課第2節_在uboot實現電源管理_編寫喚醒功能 | |
第2課第3節_在uboot實現電源管理_除錯 | |
第3課第1節_系統睡眠模型_Linux的suspend流程 | |
第3課第2節_系統睡眠模型_修改核心或驅動以使用suspend功能 | |
第3課第3節_系統睡眠模型_給驅動程式新增電源管理功能 | |
第4課第1節_runtime_PM框架第3課第3節_系統睡眠模型_給驅動程式新增電源管理功能 | |
第4課第2節_runtime_PM修改驅動程式和使用 | |
第5課第1節_regulator系統的概念並編寫程式碼 | |
第5課第2節_regulator系統之編譯測試 | |
第6課第1節_APP_修改數碼相框以支援自動關閉LCD | |
第6課第2節_APP_編寫支援開關機(suspend)的應用程式 | |
第7課_從系統角度考慮電源管理,我們要學習更多 |