嵌入式Linux知識塊與知識點_第1頁
嵌入式Linux知識塊與知識點_第2頁
嵌入式Linux知識塊與知識點_第3頁
免費預覽已結(jié)束,剩余47頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基礎(chǔ)安裝 Linux 系統(tǒng)( 1) 語言選擇: 簡體中文( 2)鍵盤配置: 美國英語式( 3)鼠標配置: 3 鍵鼠標( PS/2 )( 4)選擇安裝還是升級: 新安裝( 5) 安裝類型個人桌面:工作站:服務(wù)器:定制:(6)磁盤分區(qū)設(shè)置自動分區(qū):手工分區(qū):( 7)為系統(tǒng)分區(qū): 顯示當前分區(qū),下一步(8)添加分區(qū):掛載點固定大小指定空間大小使用全部可用空間強制為主分區(qū)檢查磁盤壞塊(9)引導裝載程序配置:選擇引導裝載程序: GRUB選擇要引導的操作系統(tǒng)引導裝載程序是否使用口令配置高級引導裝載程序選項10)網(wǎng)絡(luò)配置:編輯網(wǎng)絡(luò)設(shè)備是否引導時激活設(shè)備名IP/ 子網(wǎng)掩碼設(shè)置主機名通過 DHCP 自動設(shè)置手工

2、設(shè)置其他設(shè)置網(wǎng)關(guān)次要第三(11)防火墻配置: 選擇安全級別高級中級 無防火墻選擇防火墻規(guī)則默認定制信任的設(shè)備容許進入其他端口( 12 )語言支持的選擇:Chinese (P.R. of china)( 13 )時區(qū)配置:亞洲 /上海(14)設(shè)置根口令(15)選擇軟件包組:(16)準備安裝:應(yīng)該看到一個安裝 Red Hat Linux 做準備的屏幕。 當你重新引導系統(tǒng)后,一份完整的安裝日志可在 /root/install.log 中找到,以備今后參考。要取消安裝進程,按計算機的重新啟動按鈕,或者使用 Control-Alt-Delete 組合鍵來重啟計算機。(17)安裝軟件包:(18)創(chuàng)建引導盤

3、: ( 19 )視頻卡配置: 自動檢測,若檢測不到,請手工配置 ( 20 )配置顯示器: 自動檢測,若檢測不到,請手工配置21)定制配置:色彩深度:真色 24 位屏幕分辨率:1024 X768(22)安裝完成基本使用登錄和注銷 啟動和關(guān)機 顯示屬性的設(shè)置 改變桌面背景顯示設(shè)置分辨率色彩深度配置日期和時間光盤的使用(1)在文件管理器中使用光盤(2)在終端提示下使用光盤用戶還可以手工地在 shell 提示下掛載和卸載光盤。在光盤驅(qū)動器內(nèi)插入一張光盤,打開 終端,然后鍵入以下命令:# mount /mnt/cdrom 這樣,光盤就會被掛載,便可以用文件管理器來使用它了。還可以通過點擊桌面上的主目 錄

4、圖標,并在位置欄內(nèi)鍵入 “/mnt/cdrom ”來訪問光盤。光盤上工作完畢后,在把它從驅(qū)動 器內(nèi)彈出之前必須卸載它。 關(guān)閉所有使用光盤的應(yīng)用程序或文件管理器, 然后在終端提示下 鍵入以下命令:# umount /mnt/cdrom 現(xiàn)在,便可以安全地按光盤驅(qū)動器上的彈出按鈕來取出光盤。打印機的安裝與設(shè)置 使用 RPM 來管理軟件包 RPM 的設(shè)計目標可升級性強大的查詢功能系統(tǒng)校驗純凈源碼RPM 基本操作模式安裝 RPM 包rpm -vh RPM包的全路徑文件名刪除 RPM 包rpm -e RPM 包名稱升級 RPM 包rpm -U RPM 包的全路徑文件名查詢 RPM 包rpm -q校驗已安

5、裝的軟件包rpm -V命令及相關(guān)概念 命令的使用方式 在 Linux 系統(tǒng)中打開終端的方式有以下兩種:種是在桌面上依次單擊主程序t系統(tǒng)工具t終端”可打開如圖2-1的終端窗口;另一種是在Linux 桌面上單擊鼠標右鍵,從彈出的快捷菜單中選擇 “終端 ”命令,也可打開終端窗口 鍵盤上大多數(shù)字符是普通打印字符, 它們沒有特殊含義。 只有少數(shù)特殊字符指示計算機做專 門的操作。其中最常見的特殊字符是回車鍵 RETURN ,它表示輸入行結(jié)束;系統(tǒng)收到回車 信息便認為輸入的當前行結(jié)束,系統(tǒng)的響應(yīng)是讓屏幕光標回到下一行行首。回車符只是控制符的一個例子。 控制符是指控制終端工作方式的非顯示字符。 輸入一般 控制

6、符必須先按下控制鍵,或稱作 CTRL 鍵,然后再按所對應(yīng)的字符鍵。例如,輸入回車 符可以直接按回車鍵,也可以先按控制鍵,再按 m 鍵。 CONTROL-m 或 CTL-m 也是回車 符。一些常用的控制符有: CTL-d ,它表示終端的輸入結(jié)束; CTL-g 控制終端響鈴; CTL-h 稱為退格鍵,用于改正輸入的錯誤 .此外還有兩個特殊鍵,一個是 DELETE 鍵,另一個是 BREAK 鍵。大多數(shù) LINUX 系統(tǒng) 中,DELETE鍵表示立即終止程序。 在有些系統(tǒng)里,也用CTL-c終止程序。一般說來,BREAK 鍵與 DELETE 鍵、 CTL-c 的功能基本相同。另外, 在終端上還有一個命令補

7、齊 (Command-Line Completion) 的操作技巧, 所謂命令補齊 是指當鍵入的字符足以確定目錄中一個唯一的文件時, 只須按 Tab 鍵就可以自動補齊該文 件名的剩下部分,例如要把目錄 /freesoft 下的文件 gcc-2.8.1.tar.gz 解包,當鍵入到 tar xvfz /freesoft/g 時,如果此文件是該目錄下唯一以 g 開頭的文件,這時就可以按下 Tab 鍵,這時命令會被自動補齊為: tar xvfz /freesoft/gcc-2.8.1.tar.gz ,非常方便文件概念及操作命令 ls 選項 文件目錄列表 文件類型-:常規(guī)文件? d :目錄? b :塊

8、特殊設(shè)備? c:字符特殊設(shè)備? p:有名管道? s :信號燈? m :共享存儲器文件類型的字符表示文件的權(quán)限, 權(quán)限由三個字符串組成, 這三個字符串分別表示: 該文件所有者的權(quán)限、 組中其他人的權(quán)限和系統(tǒng)中其人的權(quán)限; 每個字符串又由三個字符組成, 次表示對文件的讀(用字符 r 表示)、寫(用字符 W 表示)和執(zhí)行權(quán)限(用字符 x 表示) 當用戶沒有相應(yīng)的權(quán)限時,該權(quán)限的對應(yīng)位置用短線“-”來表示。#find 目錄列表 匹配標準 cat 選項 文件列表grep 選項 匹配字符串 文件列表 sort 選項 文件diff 參數(shù) 原文件 目標文件 cp 選項 源文件 目標文件 rm 選項 文件列表m

9、v -f -i 文件 1 文件 2安裝和登錄命令: login 、 shutdown 、 halt、 reboot、 mount 、 umount、 chsh 文件處理命令: file 、 mkdir 、 dd 、 mv、ln系統(tǒng)管理相關(guān)命令: df、 top、 free、 quota、 at、 lp、 adduser、 groupadd kill 、 crontab、 tar 、 unzip 、gunzip 、 last網(wǎng)絡(luò)操作命令: ifconfig 、ip、ping、netstat、telnet、ftp、route、rlogin rcp 、finger、mail 、nslookup 系統(tǒng)

10、安全相關(guān)命令: passwd、 su、umask、 chgrp 、 chmod、 chown 、 chattr、 sudo、 pswhoShell 編程建立嵌入式開發(fā)環(huán)境軟件開發(fā)環(huán)境建立交叉開發(fā)工具鏈 使用現(xiàn)有的交叉開發(fā)工具鏈 建立交叉開發(fā)工具鏈1. 從 ARM Linux 站點得到 cross-3.3.2.tar.bz22. 對 cross-3.3.2.tar.bz2 解壓$ tar - jxvf cross-3.3.2.tar.bz23. 通過相關(guān)文檔得到具體安裝路徑$ ./3.3.2/bin/arm-linux-gcc- v-prefix=/usr/local/arm/3.3.24. 建

11、立相關(guān)目錄,并將解壓后的文件移到此相關(guān)目錄$ mkdir - p /usr/local/arm$ mv ./2.95.3 /usr/loca/arm/5. 在環(huán)境變量 PATH 中添加路徑$ export PATH=$PATH:/usr/local/arm/3.3.2/bin3.3.2因為 GCC 編譯器的運行是依賴于其他工具和庫,通常不能把這些工具放在任意目錄下。只 好向下載的站點求教,一般通過相關(guān)的 README 或者說明文檔可以得到具體的安裝路徑。Arm-linuxBinEtcIncludeInfoLibLibexecSbinShareSys-includeusrBinIncludeIn

12、foLibLibexecMantmp3.4.1因為 GCC 編譯器的運行是依賴于其他工具和庫,通常不能把這些工具放在任意目錄下。只 好向下載的站點求教,一般通過相關(guān)的 README 或者說明文檔可以得到具體的安裝路徑。Arm-linuxBinEtcIncludeInfoLibLibexecSbinShareSys-includeusrBinIncludeInfoLibLibexecMantmp手工制作交叉開發(fā)工具鏈編譯 binutils$ tar -jxf ./source/binutils-2.14.tar.bz2$ cd binutils-2.14$ mkdir build-arm-lin

13、ux$ cd build-arm-linux$ ./configure -target=arm-linux -prefix=/usr/local/arm/3.3.2$ make$ make install編譯 GCC 的輔助編譯器 編譯生成 glibc 庫 編譯生成完整的 GCC 編譯器 制作交叉調(diào)試器 使用交叉開發(fā)工具鏈 編輯器 vi 二進制工具 編譯器 gcc 調(diào)試器 gdb 工程管理器 make配置 TFTP 服務(wù)配置 NFS 服務(wù)配置超級終端 /minicom硬件開發(fā)環(huán)境串口KermitMinicomwindows 超級終端以太網(wǎng)簡單的文件傳輸協(xié)議 TFTP網(wǎng)絡(luò)文件系統(tǒng) NFS動態(tài)主機

14、配置協(xié)議( DHCPUSBJTAG綜合以上熟悉開發(fā)流程部署 Linux 系統(tǒng)移植 U-Boot理解嵌入式 linux 引導程序的原理, 掌握如何在 FS2410 硬件平臺上 移植 u-boot2.1 Bootloader 介紹2.2 u-boot 工程介紹2.3 u-boot 的編譯使用2.4 u-boot 源碼分析2.5 u-boot 資源分配2.6 u-boot 移植過程【實驗】(1) u-boot 常用命令(2) 添加 u-boot 新命令設(shè)置u-boot環(huán)境變量(4) 配置編譯 u-boot(5) 移植 FS2410 的 u-boot-1.3.4 支持網(wǎng)卡、串口功能 支持從 nor、n

15、andflash 啟動支持 nor、nandflash 燒寫 支持 yaffs2、jffs2 文件系統(tǒng)燒寫 支持 u 盤文件讀取定制 uboot安裝 uboot裁剪內(nèi)核 /usr/src/linux-x.y-z 內(nèi)核源碼樹driversarch makefilearch=armCROSS_COMPILE=.config.config 文件被處理生成一個 C 語言頭文件 autoconf.h輸出文件 system.map vmlinux 鏈接器腳本文件 mlinux.ldsarch/arm/kernel/head.o arch/arm/kernel/init-atask.oinitkernelm

16、mfsipcsecuritylib/lib.aarch/arm/liblibdriversnet配置編譯 Linux 內(nèi)核目標:熟悉內(nèi)核的原碼結(jié)構(gòu)和 kbuild Makefile 語法;掌握和內(nèi)核、驅(qū)動模塊編譯相關(guān)的原理及方法。3.1 Linux 內(nèi)核介紹3.2 Linux 內(nèi)核特點3.3 Linux 內(nèi)核源代碼結(jié)構(gòu)3.4 Linux 內(nèi)核選項解析3.5 Linux 內(nèi)核編譯鏈接3.6 內(nèi)核模塊編譯、使用方法【實驗】(1) 配置交叉開發(fā)環(huán)境(2) 熟悉菜單配置文件的組織結(jié)構(gòu)(3) 熟悉內(nèi)核配置過程選項(4) 加入 Kconfig 新選項(5) 編譯交叉開發(fā)環(huán)境所需要的內(nèi)核(6) 在內(nèi)核中加入

17、自己的字符設(shè)備程序移植 Linux 內(nèi)核源碼 目標:通過今天課程的學習,學員能夠熟悉內(nèi)核啟動流程、掌握內(nèi)核移植的一般方法、分析平臺相關(guān)代碼 結(jié)構(gòu),并能夠自己動手移植高版本內(nèi)核支持 FS2410 開發(fā)板。4.1 Linux 內(nèi)核移植介紹4.2 Linux 內(nèi)核移植平臺相關(guān)代碼分析4.3 動手修改 Linux 內(nèi)核源代碼4.4 分析編譯過程錯誤和宏定義的關(guān)系4.5 Linux 啟動過程源代碼分析4.6 2.6 內(nèi)核平臺設(shè)備結(jié)構(gòu)介紹【實驗】(1) 配置編譯高版本的 Linux 內(nèi)核(2) 移植高版本( linux-2.6.26 )內(nèi)核支持 FS2410 板 網(wǎng)卡驅(qū)動移植 mtd 支持及 flash

18、分區(qū)方法 yaffs2 文件系統(tǒng)移植 sd 卡驅(qū)動 液晶支持u 盤功能(3) 分析解決編譯過程中的錯誤調(diào)試 Linux 內(nèi)核及優(yōu)化 linux 內(nèi)核目標:掌握內(nèi)核調(diào)試的常用方法、內(nèi)核優(yōu)化的方法策略。6.1 Linux 內(nèi)核調(diào)試概述6.2 Linux 內(nèi)核的打印函數(shù)6.3 Linux 內(nèi)核啟動過程錯誤分析6.4 解析 oops 信息6.5 常用調(diào)試方法和工具6.6 基本的驅(qū)動程序分析6.7 系統(tǒng)啟動時間優(yōu)化6.8 電源管理方法 動態(tài)、靜態(tài)功耗介紹 嵌入式處理器對電源管理的支持 嵌入式 linux 電源管理結(jié)構(gòu) 用戶層電源管理策略 設(shè)備驅(qū)動層電源管理策略【實驗】(1) 通過基本調(diào)試手段解決內(nèi)核啟動

19、過程錯誤(2) 分析、處理 oops 錯誤(3) 優(yōu)化系統(tǒng),加快系統(tǒng)啟動速度(4) 優(yōu)化系統(tǒng),降低系統(tǒng)功耗定制內(nèi)核映像安裝內(nèi)核映像Linux 內(nèi)核修煉1) 全面認識和了解 Linux 內(nèi)核的框架 ,并以此為基礎(chǔ)掌握學習 Linux 內(nèi)核、分析閱讀 Linux 內(nèi)核源碼的方法,真正地邁過那道無形的門坎。2)掌握、分析、鉆研某個子系統(tǒng)在Linux 內(nèi)核中實現(xiàn)機制的方法 ,并了解 Linux 內(nèi)核中的進程管理、內(nèi)存管理、文件系統(tǒng)。3)了解如何參與 Linux 內(nèi)核的開發(fā)和測試,以及一些常用的調(diào)試手段和工具。4)掌握 Linux 設(shè)備驅(qū)動的開發(fā)方法。5)掌握 Android 運行所需要的 Linux

20、內(nèi)核開發(fā)和技巧。全面認識和了解 Linux 內(nèi)核的框架,掌握學習 Linux 內(nèi)核、分析閱讀 Linux 內(nèi)核源碼的方法。第1章 Linux 內(nèi)核的基本面1.1 Linux 內(nèi)核成長史1.2 多變的 Linux 內(nèi)核版本號1.3 獲取 Linux 內(nèi)核的源代碼1.4 ALinux 內(nèi)核與那些發(fā)行版1.5 Linux 內(nèi)核是如何工作的Linux虛擬機”系統(tǒng)調(diào)用臺前文件系統(tǒng).幕后進程調(diào)度幕后一一內(nèi)存管理模塊化的Kernel第2章 Linux 內(nèi)核的按需配置與編譯2.1 按需配置 Linux 內(nèi)核配置方式的多種選擇認識常見的配置選項-重視config文件2.2 為 Linux 內(nèi)核打補丁2.3 編譯

21、 Linux 內(nèi)核認識一些與編譯有關(guān)的目錄與文件構(gòu)建編譯環(huán)境備份是重要得編譯步驟一些實用的小技巧2.4 Linux 內(nèi)核的文檔及編譯2.5 【實驗】配置、編譯 Linux 2.6 內(nèi)核 第3章 瀏覽 Linux 內(nèi)核源碼3.1 所需的技術(shù)基礎(chǔ)3.2 Linux 內(nèi)核的體系結(jié)構(gòu)3.3 Linux 內(nèi)核源碼樹3.4 使用 vim+cscope+ctags3.5 Linux 內(nèi)核代碼的特點gcc 擴展的使用內(nèi)嵌匯編3.6 Linux 內(nèi)核中的鏈表3.7 代碼樣例3.7 【實驗】配置 vim 瀏覽內(nèi)核源碼第4 章 如何分析 Linux 內(nèi)核源碼4.1 Linux 內(nèi)核學習的心理問題4.2 kernel

22、 地圖: Kconfig 與 Makefile看懂Kconfig 與 Makefile利用Kconfig與Makefile定位目標代碼4.3 分析 Linux 內(nèi)核源碼如何入手分析README分析Kconfig 與 Makefile態(tài)度決定一切:從初始化函數(shù)開始4.4 【實驗】定位并分析某個子系統(tǒng)或模塊在內(nèi)核中的實現(xiàn) 掌握分析鉆研某個子系統(tǒng)在內(nèi)核中實現(xiàn)機制的方法,了解內(nèi)核中的進程管理、內(nèi)存管理、文件系統(tǒng) 第5 章 開始之前 Before we begin5.1 系統(tǒng)初始化5.2 Linux 內(nèi)核中的時間5.3 系統(tǒng)調(diào)用5.4 中斷與中斷處理5.5 Linux 內(nèi)核中的同步第6 章 子系統(tǒng)的初始

23、化6.1 Linux 內(nèi)核選項解析Linux 內(nèi)核選項注冊Linux內(nèi)核選項兩次解析6.2 那些入口函數(shù).initcall.init 節(jié)do_initcalls()函數(shù)6.3 以 PCI 子系統(tǒng)為例6.4 【實驗】分析某個子系統(tǒng)的初始化過程第7 章 進程管理與調(diào)度7.1 Linux 中的進程7.2 進程的來源: fork 和 clone7.3 所有美好的事物都會結(jié)束:進程退出7.4 內(nèi)核線程7.5 進程調(diào)度O(1)調(diào)度CFS調(diào)度7.6 不確定的 Multi-thread第8 章 內(nèi)存管理8.1 物理地址、邏輯地址與虛擬地址8.2 分頁8.3 內(nèi)存在內(nèi)核中的分配8.4 進程的內(nèi)存組織8.5 內(nèi)存

24、映射 mmap8.6 頁面緩存第9 章 虛擬文件系統(tǒng) VFS9.1 VFS 的體系結(jié)構(gòu)9.2 理解 VFS 的那些數(shù)據(jù)結(jié)構(gòu)9.3 VFS 的緩存機制9.4 文件系統(tǒng)的注冊與安裝9.5 文件系統(tǒng)的日志管理了解如何參與 Linux 內(nèi)核的開發(fā)和測試,以及一些常用的調(diào)試手段和工具 第 10 章 Intent Receiver10.1 工具鏈及其生成10.2 Linux 內(nèi)核中的 Makefile10.3 嚴格遵守 Linux 內(nèi)核的編碼風格10.4 添加代碼到 Linux 內(nèi)核10.5 為什么 Linux 內(nèi)核沒有穩(wěn)定的 API ?10.6 如何提交補丁10.7 學會使用 Git10.8 【實驗】安

25、裝 Git 并用它來來獲取最新的 Linux 內(nèi)核源碼第 11 章 一些最上鏡的 Linux 內(nèi)核調(diào)試手段與工具11.1 Linux 內(nèi)核對調(diào)試的支持11.2 二分法與 printk11.3 獲取 Linux 內(nèi)核信息11.4 調(diào)試福音之 oops11.5 神奇的 SysRq11.6 調(diào)試利器之 GDB11.7 調(diào)試利器之 Systemtap11.8 Linux 內(nèi)核崩潰轉(zhuǎn)儲11.9 利用模擬器11.10 【實驗】分析一個 oops11.11 【實驗】配置 GDB 調(diào)試環(huán)境并調(diào)試 Linux 內(nèi)核第 12 章 子系統(tǒng)的初始化12.1 Linux 內(nèi)核測試的 4 個階段12.2 性能分析與調(diào)優(yōu)工

26、具CPU性能分析與調(diào)優(yōu)Memory性能分析與調(diào)優(yōu)IO性能分析與調(diào)優(yōu)Network性能分析與調(diào)優(yōu)12.3 oprofile12.4 啟動速度調(diào)優(yōu)12.5 【實驗】 Linux 內(nèi)核性能測試并提交 Linux 內(nèi)核測試報告 掌握驅(qū)動的開發(fā)方法,掌握 Android 運行所需要的 Linux 內(nèi)核開發(fā)和技巧 第 13 章 驅(qū)動開發(fā)的方法論13.1 模塊化的 Linux 內(nèi)核13.2 第一個模塊 “Hello World! ”13.3 重中之重:設(shè)備模型總線、設(shè)備和驅(qū)動在USB子系統(tǒng)上的投影13.4 驅(qū)動開發(fā)三件寶: spec 、 datasheet 與 Linux 內(nèi)核源碼13.5 sysfs13.

27、6 【實驗】結(jié)合設(shè)備模型分析一個 Linux 內(nèi)核中現(xiàn)有的驅(qū)動13.7 【實驗】編寫一個簡單的模塊第 14 章 Android 環(huán)境的相關(guān)介紹14.1 Android 的歷史和介紹14.2 Android 和 Linux 的扯不清理還亂的關(guān)系14.3 取得 Android 的源代碼和編譯生成可執(zhí)行環(huán)境14.4 Android 源代碼構(gòu)成和運行原理14.5 加入新的處理器支持到 Android 框架第 15 章 移植 Android 所需要的 Linux 內(nèi)核15.1 Android 運行所需要對 Linux 內(nèi)核作的修改15.2 Android 對現(xiàn)有驅(qū)動所必須做的修改鍵盤、鼠標驅(qū)動和鍵值映射

28、顯示驅(qū)動audio馬驅(qū)動15.3 編譯和拓展 Android 的啟動分區(qū) boot.img15.4 Android 的啟動過程分析和調(diào)試技術(shù)15.5 【實驗】生成一個可供 Android 啟動的 Linux 內(nèi)核15.6 【實驗】制作和生成一個可運行的 boot.img第 16 章 實現(xiàn) Android 的硬件抽象層16.1 Android 的硬件抽象層的原理和構(gòu)成16.2 實現(xiàn) ril ,完成 Android 的移動網(wǎng)絡(luò)功能支持16.3 libhardware_legacy 接口16.4 libhardware 接口16.5 藍牙支持16.6 【實驗】將一個 wifi 驅(qū)動加入 Androi

29、d 硬件抽象層構(gòu)建文件系統(tǒng)集成部署 Linux 系統(tǒng)u-boot目標:理解嵌入式 linux 引導程序的原理,掌握如何在 FS2410 硬件平臺上移植5.1 Linux 文件系統(tǒng)制作5.2 Linux 系統(tǒng)集成測試5.3 文件系統(tǒng)和存儲設(shè)備的選擇5.4 部署 Ramdisk 文件系統(tǒng)的過程5.5 部署 JFFS2 文件系統(tǒng)的過程5.6 部署 Yaffs2 文件系統(tǒng)的過程【實驗】(1) 制作最小的文件系統(tǒng)(2) 添加 udev 支持(3) 部署 ramdisk 文件系統(tǒng)(4) 部署 cramfs 文件系統(tǒng)(5) 部署 jffs2 文件系統(tǒng)(6) 部署 yaffs2 文件系統(tǒng)(7) 配置 u-bo

30、ot 使系統(tǒng)獨立運行定制文件系統(tǒng)裁減文件系統(tǒng)安裝文件系統(tǒng)理解啟動過程內(nèi)核引導 (u-Boot)目標板硬件初始化初始化內(nèi)存等硬件把壓縮的內(nèi)核映像 加載 到內(nèi)存在嵌入式 Linux 開發(fā)中,經(jīng)常用到網(wǎng)絡(luò)加載的方式,就是通過 TFTP 協(xié)議把內(nèi)核映像加載到 目標板內(nèi)存。那么目標板的Bootloader還應(yīng)該能夠驅(qū)動網(wǎng)絡(luò)接口,配置IP地址。不同的Bootloader 還有一系列命令進行配置跳轉(zhuǎn)到內(nèi)核映像入口執(zhí)行解壓內(nèi)核映像完成自解壓或者重定位跳轉(zhuǎn)到解壓后的內(nèi)核代碼入口跳轉(zhuǎn)到內(nèi)核映像入口 head.o 內(nèi)核啟動 main.c start_kernel Setup_arch 參數(shù)為指向內(nèi)核命令行的指針初始

31、化設(shè)備驅(qū)動 掛接根文件系統(tǒng) 從文件系統(tǒng)的目錄下找到init程序,啟動init進程在交叉開發(fā)環(huán)境中,通常采用 NFS文件系統(tǒng)。在內(nèi)核啟動過程可以掛接 NFS根文件系統(tǒng)。 這種方式將極大地方便嵌入式 Linux 交叉開發(fā)。使目標板掛接 NFS 根文件系統(tǒng)在主機端配置相應(yīng)的網(wǎng)絡(luò)服務(wù)TFTPDHCPNFS配置目標板的內(nèi)核選項配置相應(yīng)的網(wǎng)絡(luò)驅(qū)動程序“Network device support ”配置內(nèi)核啟動命令行參數(shù)配置內(nèi)核掛接 NFS 根文件系統(tǒng)應(yīng)用程序啟動完成系統(tǒng)初始化啟動相關(guān)服務(wù)管理用戶登錄程序開發(fā)驅(qū)動程序開發(fā)LINUX 字符設(shè)備驅(qū)動程序開發(fā)從用戶設(shè)備 I/O 編程角度深入了解設(shè)備驅(qū)動的原理;通

32、過了解字符設(shè)備驅(qū)動框架和具體硬件設(shè)備I/O 操作,能夠進行字符設(shè)備驅(qū)動開發(fā);了解 linux2.6 內(nèi)核的設(shè)備模型及掌握 udev 的使用1.1 LINUX 字符設(shè)備驅(qū)動基礎(chǔ)1.2 字符設(shè)備驅(qū)動程序?qū)崿F(xiàn)框架與典型驅(qū)動分析1.3 用戶空間與內(nèi)核空間的數(shù)據(jù)傳輸1.4 同步、互斥、阻塞、睡眠機制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ū)動程序與測試3 、如何為內(nèi)核程序傳遞參數(shù)4 、在驅(qū)動代碼中加入創(chuàng)建 proc 結(jié)點方法5 、蜂鳴器驅(qū)動程序編寫與測試6 、編寫驅(qū)動實現(xiàn)包

33、含等待隊列、信號量、 fifo 等功能7 、學會利用 udev 和 sysfs 文件系統(tǒng)動態(tài)創(chuàng)建設(shè)備結(jié)點設(shè)備驅(qū)動中常用的內(nèi)核機制掌握在基本字符設(shè)備驅(qū)動的基礎(chǔ)上增加復雜的內(nèi)核機制; 了解 1inux 內(nèi)核中斷子系統(tǒng)的實現(xiàn)原理, 掌握 linux 中斷處理程序編寫方法;掌握內(nèi)核延時機制及內(nèi)存管理機制2.1 Poll 和 select 操作2.2 異步通知機制2.3 1inux 內(nèi)核中斷子系統(tǒng)2.4 中斷處理程序編寫2.5 驅(qū)動程序上 / 下半部處理與延緩執(zhí)行機制2.6 內(nèi)核定時器與延遲機制2.7 內(nèi)核內(nèi)存管理機制【實驗】1 、編寫驅(qū)動實現(xiàn)包含等待隊列、信號量、 fifo 等功能2 、編寫驅(qū)動實現(xiàn)包

34、含 poll 功能3 、編寫驅(qū)動實現(xiàn)包含異步通知功能4 、編寫秒表字符設(shè)備,掌握定時器用法5、編寫驅(qū)動實現(xiàn) tasklet 功能6 、編寫驅(qū)動實現(xiàn)工作隊列功能7 、按鍵中斷實驗8、 A/D 轉(zhuǎn)換實驗LINUX 塊設(shè)備驅(qū)動程序開發(fā)明白 Linux 中塊設(shè)備驅(qū)動的特點及框架, 獨立分析 Linux 中大部分塊設(shè)備的驅(qū)動方法, 并熟悉 MTD 設(shè)備驅(qū) 動的特點與框架,具備 MTD Nand Flash 驅(qū)動程序開發(fā)的能力。通過實驗,學員還可以掌握IDE、 Ramdisk驅(qū)動移植方法。3.1 塊設(shè)備及其驅(qū)動的特點3.2 塊設(shè)備驅(qū)動程序中兩個關(guān)鍵結(jié)構(gòu)體 GEN_DISK 與 REQUEST3.3 塊設(shè)備

35、驅(qū)動程序的注冊與請求處理3.4 MTD 設(shè)備的特點以及與塊設(shè)備的關(guān)系3.5 MTD 設(shè)備驅(qū)動的框架及關(guān)鍵結(jié)構(gòu)體分析3.6 S3C2410 (S3C2440)中的 NAND FLASH 控制器分析3.7 S3C2410 (S3C2440) NAND FLASH MTD 驅(qū)動分析【實驗】1 、編寫簡單的塊設(shè)備驅(qū)動程序2、實現(xiàn) RAMDISK 驅(qū)動3、IDE 硬盤的驅(qū)動移植4、移植 S3C2410 閃存控制器驅(qū)動5 、配置 MTD 內(nèi)核選項6、移植嵌入式文件系統(tǒng)LINUX 網(wǎng)絡(luò)設(shè)備驅(qū)動程序開發(fā)網(wǎng)絡(luò)設(shè)備是嵌入式產(chǎn)品開發(fā),特別是基于網(wǎng)絡(luò)的產(chǎn)品開發(fā)中最重要的內(nèi)容之一。通過本課學習,學員可以深入理解Linu

36、x網(wǎng)絡(luò)驅(qū)動程序中有關(guān)套接字(socket)、套接字緩沖區(qū)(sk_buff)等概念,了解網(wǎng)絡(luò)驅(qū)動程 序的數(shù)據(jù)交換過程。通過實際的動手操作,學員將掌握如何移植或編寫具體網(wǎng)卡的驅(qū)動程序,并在此基礎(chǔ) 上實現(xiàn)更為高級的網(wǎng)絡(luò)功能。 了解 MMC/SD 卡的物理及電氣特性, 熟悉相關(guān)的工作協(xié)議, 并在此基礎(chǔ)上能 夠移植或編寫 Linux 下的 MMC/SD 控制器的驅(qū)動程序。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

37、.7 網(wǎng)絡(luò)設(shè)備驅(qū)動程序的基本實現(xiàn)5. LINUX 下 MMC/SD 卡驅(qū)動開發(fā)5.1 嵌入式系統(tǒng)中幾種常見存儲介質(zhì)的比較( NOR/NAND FLASH 、 CF、 MMC/SD )5.2 MMC/SD 卡物理及電氣規(guī)范簡介5.3 MMC/SD 卡工作中的關(guān)鍵命令及關(guān)鍵結(jié)構(gòu)信息5.4 S3C2410( S3C2440)中 MMC/SDHOST 控制器分析5.5 LINUX 中 MMC/SD 存儲卡驅(qū)動程序結(jié)構(gòu)分析5.6 S3C2410( S3C2440)中 MMC/SD HOST 控制器的驅(qū)動實現(xiàn)【實驗】1 、編寫簡單的虛擬以太網(wǎng)卡驅(qū)動程序2、移植并編寫 CS8900A 網(wǎng)卡驅(qū)動程序3、移植并

38、編寫 DM9000 網(wǎng)卡驅(qū)動程序4、配置網(wǎng)絡(luò)參數(shù),測試網(wǎng)卡驅(qū)動程序行為5、MMC/SD 協(xié)議分析6、在 LINUX 源碼中加入針對 ARM 平臺的 MMC/SD 主控制器驅(qū)動的支持LINUX 幀緩沖驅(qū)動程序開發(fā)掌握嵌入式 Linux 顯示驅(qū)動程序的開發(fā)方法,理解嵌入式 Linux 圖形驅(qū)動程序?qū)崿F(xiàn)機制,能夠移植或編寫 嵌入式顯示控制器驅(qū)動程序,并完成針對各種 LCD 硬件的定制。6. LINUX 幀緩沖驅(qū)動程序開發(fā)6.1 幀緩沖顯示技術(shù)6.2 幀緩沖驅(qū)動程序顯示原理6.3 幀緩沖驅(qū)動程序的數(shù)據(jù)結(jié)構(gòu)6.4 幀緩沖驅(qū)動程序的 API6.5 幀緩沖驅(qū)動程序的基本實現(xiàn)6.6 使用高級圖形庫7. 觸摸屏

39、驅(qū)動開發(fā)7.1 觸摸屏工作原理7.2 S3C2410 觸摸屏控制器工作原理7.3 觸摸屏驅(qū)動程序編寫【實驗】1 、熟悉 FRAMEBUFFER 驅(qū)動的結(jié)構(gòu)2 、熟悉 FRAMEBUFFER 中的重要數(shù)據(jù)結(jié)構(gòu)3 、編寫 S3C2410 彩色 LCD 控制器驅(qū)動程序4 、編寫測試程序控制屏幕顯示5 、編譯高級圖形庫例子,顯示圖形6 、熟悉觸屏驅(qū)動程序7 、寫觸屏測試代碼LINUX 下 USB 驅(qū)動開發(fā)基礎(chǔ)掌握 USB 通訊規(guī)范及拓撲結(jié)構(gòu)中的主機控制器、 HUB 、USB 設(shè)備的工作流程;掌握 S3C2410 USB device 控制器的工作原理;最后在 S3C2410 開發(fā)板上編寫 usbtra

40、nsfer 固件程序,結(jié)合 PC 機上 windows 環(huán)境下的 DNW 軟件,實現(xiàn)基于 usb 的文件下載功能。 通過 Linux 下 USB 驅(qū)動開發(fā)內(nèi)容的學習, 學員將深入理解 Linux 內(nèi)核 USB 子系統(tǒng),掌握 USB 驅(qū)動程序編寫技術(shù)。經(jīng)過學習后的學員能夠移植或編寫 USB 主機 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 主機控制器8.3 USB HUB8.4 USB 設(shè)備狀態(tài)8.5 USB

41、 描述符8.6 USB 請求8.7 USB 通訊數(shù)據(jù)格式8.8 S3C2410 USB device 控制器8.9 編寫 usbtransfer 固件程序9. LINUX 下 USB 驅(qū)動高級開發(fā)9.1 Linux USB 驅(qū)動層次9.2 Linux USB 主機控制器驅(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 、在開發(fā)板上燒寫并測試 USB 固件程序2、 usbtransfer 固件程序分析與編寫3 、使用 usbview 工具觀察

42、 USB 設(shè)備4 、使用 sysfs 分析 USB 層次結(jié)構(gòu)5、LINUX 下編寫 usbtransfer 設(shè)備驅(qū)動實現(xiàn) USB 下載步驟register_chrdev ( register_chrdev ) 選擇主設(shè)備號動態(tài)分配定義設(shè)備名稱定義一組文件操作標記化格式聲明 file_operation 結(jié)構(gòu)應(yīng)用程序開發(fā)文件 I/O 編程基于文件描述符 不帶緩存不帶緩存是指每一個函數(shù)都只調(diào)用系統(tǒng)中的一個函數(shù)函數(shù)說明openreadwritelseekclose基于流緩沖3 種類型的緩沖存儲全緩沖行緩沖不帶緩沖函數(shù)說明OpenFILE * fopen(const char * path,const char * mode)FILE * fdopen(int fd,const char * mode)FILE * freopen(const char *path,const char * mode,FILE * stream) int fclose (FILE * stream)size_t fread (void * ptr,size_t size,size_t nmemb,F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論