第一篇:嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介
嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介 Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務(wù)能夠獨立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命令 認(rèn)識Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng) Linux基本命令實踐 設(shè)置Linux環(huán)境變量 定制Linux的服務(wù) Shell 編程基礎(chǔ)使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器 Shell 編程基礎(chǔ)Shell簡介 認(rèn)識后臺程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區(qū)別 編寫一個測試服務(wù)器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell腳本程序
Linux 下的 C 編程基礎(chǔ)linux C語言環(huán)境概述 Gcc使用方法 Gdb調(diào)試技術(shù) Autoconf Automake Makefile 代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境 熟悉Gcc編譯器 熟悉Makefile規(guī)則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序
嵌入式系統(tǒng)開發(fā)基礎(chǔ)嵌入式系統(tǒng)概述 交叉編譯 配置TFTP服務(wù) 配置NFS服務(wù) 下載Bootloader和內(nèi)核 嵌入式Linux應(yīng)用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot 編譯并下載Linux內(nèi)核 編譯并下載Linux應(yīng)用程序
嵌入式系統(tǒng)移植Linux內(nèi)核代碼平臺相關(guān)代碼分析 ARM平臺介紹平臺移植的關(guān)鍵技術(shù) 移植Linux內(nèi)核到 ARM平臺 了解移植的概念 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板
嵌入式 Linux 下串口通信串行I/O的基本概念 嵌入式Linux應(yīng)用軟件開發(fā)流程 Linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序
嵌入式系統(tǒng)中多進程程序設(shè)計Linux系統(tǒng)進程概述 嵌入式系統(tǒng)的進程特點 進程操作 守護進程 相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信 Linux任務(wù)概述任務(wù)調(diào)度 管道 信號 共享內(nèi)存 任務(wù)管理 API 了解Linux系統(tǒng)任務(wù)管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序
嵌入式系統(tǒng)中多線程程序設(shè)計線程的基礎(chǔ)知識 多線程編程方法 線程應(yīng)用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
嵌入式 Linux 網(wǎng)絡(luò)編程網(wǎng)絡(luò)基礎(chǔ)知識 嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu) socket 編程 常用 API函數(shù) 分析Ping命令的實現(xiàn) 基本UDP套接口編程 許可證管理 PPP協(xié)議 GPRS 了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu) 能夠進行嵌入式Linux環(huán)境下的socket 編程 熟悉UDP協(xié)議、PPP協(xié)議 熟悉GPRS 使用socket 編寫代理服務(wù)器 使用socket 編寫路由器 編寫許可證服務(wù)器 指出TCP和UDP的優(yōu)缺點 編寫一個web服務(wù)器 編寫一個運行在 ARM平臺的網(wǎng)絡(luò)播放器 GUI 程序開發(fā)GUI基礎(chǔ) 嵌入式系統(tǒng)GUI類型 編譯QT 進行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調(diào)試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件
Linux 字符設(shè)備驅(qū)動程序設(shè)備驅(qū)動程序基礎(chǔ)知識 Linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs_operation結(jié)構(gòu) 加載驅(qū)動程序了解設(shè)備驅(qū)動程序的概念 了解Linux字符設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫字符設(shè)備驅(qū)動程序編寫Skull驅(qū)動 編寫鍵盤驅(qū)動 編寫I/O驅(qū)動 分析一個看門狗驅(qū)動程序 對比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動的不同Linux 塊設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序工作原理 典型的塊設(shè)備驅(qū)動程序分析 塊設(shè)備的讀寫請求隊列了解Linux塊設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫簡單的塊設(shè)備驅(qū)動程序比較字符設(shè)備與塊設(shè)備的異同 編寫MMC卡驅(qū)動程序 分析一個文件系統(tǒng) 對比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同 文件系統(tǒng)虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc文件系統(tǒng) devfs 文件系統(tǒng) MTD技術(shù)簡介 MTD塊設(shè)備初始化 MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng) 了解嵌入式Linux的文件系統(tǒng) 了解MTD技術(shù) 能夠編寫簡單的文件系統(tǒng)為 ARM9開發(fā)板添加 MTD支持 移植JFFS2文件系統(tǒng) 通過proc文件系統(tǒng)修改操作系統(tǒng)參數(shù) 分析romfs 文件系統(tǒng)源代碼 創(chuàng)建一個cramfs 文件系統(tǒng)
無論選擇哪一方向,基本的linux的知識是需要具備的,其他還需要掌握的知識有ARM(最常用的一款嵌入式處理器)和C語言編程,每一方面知識的掌握熟練程度都最終決定了個人進行嵌入式linux開發(fā)的綜合能力。
END
第二篇:嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介
嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介 瀏覽:5067 | 更新:2011-06-21 15:56.隨著Linux應(yīng)用的擴展許多朋友開始接觸Linux,根據(jù)學(xué)習(xí)Windwos的經(jīng)驗往往有一些茫然的感覺:不知從何處開始學(xué)起。這里介紹學(xué)習(xí)Linux的一些建議。
嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介
嵌入式Linux系統(tǒng)學(xué)習(xí)步驟簡介
Linux 基礎(chǔ)
安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務(wù)能夠獨立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命令 認(rèn)識Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng) Linux基本命令實踐 設(shè)置Linux環(huán)境變量 定制Linux的服務(wù) Shell 編程基礎(chǔ)使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器
Shell 編程基礎(chǔ)
Shell簡介 認(rèn)識后臺程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區(qū)別 編寫一個測試服務(wù)器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell腳本程序
Linux 下的 C 編程基礎(chǔ)
linux C語言環(huán)境概述 Gcc使用方法 Gdb調(diào)試技術(shù) Autoconf Automake Makefile 代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境 熟悉Gcc編譯器 熟悉Makefile規(guī)則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序
嵌入式系統(tǒng)開發(fā)基礎(chǔ)
嵌入式系統(tǒng)概述 交叉編譯 配置TFTP服務(wù) 配置NFS服務(wù) 下載Bootloader和內(nèi)核 嵌入式Linux應(yīng)用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot 編譯并下載Linux內(nèi)核 編譯并下載Linux應(yīng)用程序
嵌入式系統(tǒng)移植
Linux內(nèi)核代碼平臺相關(guān)代碼分析 ARM平臺介紹平臺移植的關(guān)鍵技術(shù) 移植Linux內(nèi)核到 ARM平臺 了解移植的概念 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板
嵌入式 Linux 下串口通信
串行I/O的基本概念 嵌入式Linux應(yīng)用軟件開發(fā)流程 Linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序
嵌入式系統(tǒng)中多進程程序設(shè)計
Linux系統(tǒng)進程概述 嵌入式系統(tǒng)的進程特點 進程操作 守護進程 相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信 Linux任務(wù)概述任務(wù)調(diào)度 管道 信號 共享內(nèi)存 任務(wù)管理 API 了解Linux系統(tǒng)任務(wù)管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序
嵌入式系統(tǒng)中多線程程序設(shè)計
線程的基礎(chǔ)知識 多線程編程方法 線程應(yīng)用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
嵌入式 Linux 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)基礎(chǔ)知識 嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu) socket 編程 常用 API函數(shù) 分析Ping命令的實現(xiàn) 基本UDP套接口編程 許可證管理 PPP協(xié)議 GPRS 了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu) 能夠進行嵌入式Linux環(huán)境下的socket 編程 熟悉UDP協(xié)議、PPP協(xié)議 熟悉GPRS 使用socket 編寫代理服務(wù)器 使用socket 編寫路由器 編寫許可證服務(wù)器 指出TCP和UDP的優(yōu)缺點 編寫一個web服務(wù)器 編寫一個運行在 ARM平臺的網(wǎng)絡(luò)播放器
GUI 程序開發(fā)
GUI基礎(chǔ) 嵌入式系統(tǒng)GUI類型 編譯QT 進行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調(diào)試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件
Linux 字符設(shè)備驅(qū)動程序
設(shè)備驅(qū)動程序基礎(chǔ)知識 Linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs_operation結(jié)構(gòu) 加載驅(qū)動程序了解設(shè)備驅(qū)動程序的概念 了解Linux字符設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫字符設(shè)備驅(qū)動程序編寫Skull驅(qū)動 編寫鍵盤驅(qū)動 編寫I/O驅(qū)動 分析一個看門狗驅(qū)動程序 對比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動的不同Linux 塊設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序工作原理 典型的塊設(shè)備驅(qū)動程序分析 塊設(shè)備的讀寫請求隊列了解Linux塊設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫簡單的塊設(shè)備驅(qū)動程序比較字符設(shè)備與塊設(shè)備的異同 編寫MMC卡驅(qū)動程序 分析一個文件系統(tǒng) 對比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同
文件系統(tǒng)
虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc文件系統(tǒng) devfs 文件系統(tǒng) MTD技術(shù)簡介 MTD塊設(shè)備初始化 MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng) 了解嵌入式Linux的文件系統(tǒng) 了解MTD技術(shù) 能夠編寫簡單的文件系統(tǒng)為 ARM9開發(fā)板添加 MTD支持 移植JFFS2文件系統(tǒng) 通過proc文件系統(tǒng)修改操作系統(tǒng)參數(shù) 分析romfs 文件系統(tǒng)源代碼 創(chuàng)建一個cramfs 文件系統(tǒng)
無論選擇哪一方向,基本的linux的知識是需要具備的,其他還需要掌握的知識有ARM(最常用的一款嵌入式處理器)和C語言編程,每一方面知識的掌握熟練程度都最終決定了個人進行嵌入式linux開發(fā)的綜合能力。
第三篇:嵌入式linu學(xué)習(xí)心得
嵌入式Linux學(xué)習(xí)心得
1、Linux命令
ls:查看目錄-l以列表方式查看;ls –l 與ll的功能一樣 pwd: 查看當(dāng)前的目錄
cd:改變當(dāng)前操作目錄cd /直接跳到根目錄 cd..回到上一級目錄 cat: 打印顯示當(dāng)前文件的內(nèi)容信息
mkdir:創(chuàng)建目錄
fdisk: 查看硬盤分區(qū)信息,-l以列表方式查看
->代表是鏈接文件,類似window下的快捷方式。
cp: 復(fù)制命令,例子cp 文件名 /home/dir/
mv: 移動或改名,如mv sonf.confsonf.txt(改名)移動:mv sonf.conf / rm:刪除命令,如rm –f test.c;如刪除目錄rm –fr d
man:查看某個命令的幫助,man 命令
2、各系統(tǒng)目錄的功能
drw—r—w--:d代表是目錄,drw代表當(dāng)前用戶的權(quán)限,r代表組用戶的權(quán)限,w代表其它用戶的權(quán)限。x代表有執(zhí)行權(quán)限。
/boot/gruff.conf: 啟動引導(dǎo)程序
/dev:brw—rw--:b代表是塊設(shè)備。Linux設(shè)備有三種,塊設(shè)備(b開頭)、字符設(shè)備(c開頭)、網(wǎng)絡(luò)設(shè)備。had代表第一個硬盤,hdb代表第二個硬盤。Hdb2代表第二塊硬盤的第二個分區(qū)。3,67代表主設(shè)備為3,從設(shè)備為67./etc:存放的是系統(tǒng)的配置文件。Inittab文件存放不同啟動方式下必須啟動的進程。Inittab文件中有6個啟動level,wait中對應(yīng)著6個level的目錄,respawn代表當(dāng)一個進程被意外終止了,但會自動啟動的進程,如守護進程。rc.d目錄中存放了一個rc.sysinit文件,里面存放系統(tǒng)初始化配置信息。/etc還有一個vsftpd里面存放tcp、ftp的配置。
/home : 用戶目錄,存放用戶的文件,/lib:存放庫文件,后綴為so的文件代表動態(tài)鏈接庫。
/lost+found:系統(tǒng)意外終止,存放一些可以找回的文件。
/mnt:掛載外部設(shè)備,如掛載光驅(qū):mount –t /dev/cdrom/mnt/cdrom,如
果在雙系統(tǒng)中,要查看windows中D盤的文件,首先應(yīng)該將D盤的文件映射過來,mount –t /dev/hda2/mnt/windows/d
/opt:用戶安裝的應(yīng)用程序
/proc:是系統(tǒng)運行的映射,比較重要。里面的文件數(shù)字代表進程號。每個進程號目錄下包含進程的基本信息。還有其他信息,如cpuinfo等,內(nèi)核支持的文件系統(tǒng)filesystem等。系統(tǒng)支持的中斷interrupts,iomen代表內(nèi)存分配情況。ioport存放IO端口號。還有分區(qū)信息,modole信息,狀態(tài)信息,版本信息
對于Linux的設(shè)備驅(qū)動程序,有兩種加載模式,一種是直接加載進linux內(nèi)核,一種是以模塊的方式加載到內(nèi)核。
/sbin: 系統(tǒng)管理的一些工具。如poweroff關(guān)機工具。
/usr: 安裝系統(tǒng)時很多文件放在此目錄下面,包含一些更新等,include包含的頭文件,lib 是Linux的庫文件,src包含Linux2.4的內(nèi)核源碼
/var:存放是臨時變量
3、
第四篇:嵌入式linux學(xué)習(xí)步驟
嵌入式linux學(xué)習(xí)步驟
作者:phantom 時間:2009-8-6 文章來源:來自網(wǎng)絡(luò)
1、Linux 基礎(chǔ)
安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務(wù)能夠獨立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命令 認(rèn)識Linux系統(tǒng)的常用服務(wù)安裝Linux操作系統(tǒng) Linux基本命令實踐 設(shè)置Linux環(huán)境變量 定制Linux的服務(wù) Shell 編程基礎(chǔ)使用vi編輯文件 使用Emacs編輯文件 使用其他編輯器
2、Shell 編程基礎(chǔ)
Shell簡介 認(rèn)識后臺程序Bash編程熟悉Linux系統(tǒng)下的編輯環(huán)境 熟悉Linux下的各種Shell 熟練進行shell編程熟悉vi基本操作 熟悉Emacs的基本操作 比較不同shell的區(qū)別 編寫一個測試服務(wù)器是否連通的shell腳本程序 編寫一個查看進程是否存在的shell腳本程序 編寫一個帶有循環(huán)語句的shell腳本程序
3、Linux 下的 C 編程基礎(chǔ)
linux C語言環(huán)境概述 Gcc使用方法 Gdb調(diào)試技術(shù) Autoconf Automake Makefile 代碼優(yōu)化 熟悉Linux系統(tǒng)下的開發(fā)環(huán)境 熟悉Gcc編譯器 熟悉Makefile規(guī)則編寫Hello,World程序 使用 make命令編譯程序 編寫帶有一個循環(huán)的程序 調(diào)試一個有問題的程序
4、嵌入式系統(tǒng)開發(fā)基礎(chǔ)
嵌入式系統(tǒng)概述 交叉編譯 配置TFTP服務(wù) 配置NFS服務(wù) 下載Bootloader和內(nèi)核 嵌入式Linux應(yīng)用軟件開發(fā)流程熟悉嵌入式系統(tǒng)概念以及開發(fā)流程 建立嵌入式系統(tǒng)開發(fā)環(huán)境制作cross_gcc工具鏈 編譯并下載U-boot 編譯并下載Linux內(nèi)核 編譯并下載Linux應(yīng)用程序
4、嵌入式系統(tǒng)移植
Linux內(nèi)核代碼平臺相關(guān)代碼分析 ARM平臺介紹平臺移植的關(guān)鍵技術(shù) 移植Linux內(nèi)核到 ARM平臺 了解移植的概念 能夠移植Linux內(nèi)核移植Linux2.6內(nèi)核到 ARM9開發(fā)板
5、嵌入式 Linux 下串口通信
串行I/O的基本概念 嵌入式Linux應(yīng)用軟件開發(fā)流程 Linux系統(tǒng)的文件和設(shè)備 與文件相關(guān)的系統(tǒng)調(diào)用 配
置超級終端和MiniCOM 能夠熟悉進行串口通信 熟悉文件I/O 編寫串口通信程序 編寫多串口通信程序
6、嵌入式系統(tǒng)中多進程程序設(shè)計
Linux系統(tǒng)進程概述 嵌入式系統(tǒng)的進程特點 進程操作 守護進程 相關(guān)的系統(tǒng)調(diào)用了解Linux系統(tǒng)中進程的概念 能夠編寫多進程程序編寫多進程程序 編寫一個守護進程程序 sleep系統(tǒng)調(diào)用任務(wù)管理、同步與通信 Linux任務(wù)概述任務(wù)調(diào)度 管道 信號 共享內(nèi)存 任務(wù)管理 API 了解Linux系統(tǒng)任務(wù)管理機制 熟悉進程間通信的幾種方式 熟悉嵌入式Linux中的任務(wù)間同步與通信編寫一個簡單的管道程序?qū)崿F(xiàn)文件傳輸 編寫一個使用共享內(nèi)存的程序
7、嵌入式系統(tǒng)中多線程程序設(shè)計
線程的基礎(chǔ)知識 多線程編程方法 線程應(yīng)用中的同步問題了解線程的概念 能夠編寫簡單的多線程程序編寫一個多線程程序
8、嵌入式 Linux 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)基礎(chǔ)知識 嵌入式Linux中TCP/IP網(wǎng)絡(luò)結(jié)構(gòu) socket 編程 常用 API函數(shù) 分析Ping命令的實現(xiàn) 基本UDP套接口編程 許可證管理 PPP協(xié)議 GPRS 了解嵌入式Linux網(wǎng)絡(luò)體系結(jié)構(gòu) 能夠進行嵌入式Linux環(huán)境下的socket 編程 熟悉UDP協(xié)議、PPP協(xié)議 熟悉GPRS 使用socket 編寫代理服務(wù)器 使用socket 編寫路由器 編寫許可證服務(wù)器 指出TCP和UDP的優(yōu)缺點 編寫一個web服務(wù)器 編寫一個運行在 ARM平臺的網(wǎng)絡(luò)播放器
9、GUI 程序開發(fā)
GUI基礎(chǔ) 嵌入式系統(tǒng)GUI類型 編譯QT 進行QT開發(fā)熟悉嵌入式系統(tǒng)常用的GUI 能夠進行QT編程使用QT編寫“Hello,World”程序 調(diào)試一個加入信號/槽的實例 通過重載QWidget 類方法處理事件
10、Linux 字符設(shè)備驅(qū)動程序
設(shè)備驅(qū)動程序基礎(chǔ)知識 Linux系統(tǒng)的模塊 字符設(shè)備驅(qū)動分析 fs_operation結(jié)構(gòu) 加載驅(qū)動程序了解設(shè)備驅(qū)動程序的概念 了解Linux字符設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫字符設(shè)備驅(qū)動程序編寫Skull驅(qū)動 編寫鍵盤驅(qū)動 編寫I/O驅(qū)動 分析一個看門狗驅(qū)動程序 對比Linux2.6內(nèi)核與2.4內(nèi)核中字符設(shè)備驅(qū)動的不同Linux 塊設(shè)備驅(qū)動程序塊設(shè)備驅(qū)動程序工作原理 典型的塊設(shè)備驅(qū)動程序分析 塊設(shè)備的讀寫請求隊列了解Linux塊設(shè)備驅(qū)動程序結(jié)構(gòu) 能夠編寫簡單的塊設(shè)備驅(qū)動程序比較字符設(shè)備與塊設(shè)備的異同 編寫MMC卡驅(qū)動程序 分析一個文件系統(tǒng) 對比Linux2.6內(nèi)核與2.4內(nèi)核中塊設(shè)備驅(qū)動的不同
11、文件系統(tǒng)
虛擬文件系統(tǒng) 文件系統(tǒng)的建立 ramfs內(nèi)存文件系統(tǒng) proc文件系統(tǒng) devfs 文件系統(tǒng) MTD技術(shù)簡介 MTD塊設(shè)備初始化 MTD塊設(shè)備的讀寫操作了解Linux系統(tǒng)的文件系統(tǒng) 了解嵌入式Linux的文件系統(tǒng) 了解MTD技術(shù) 能夠編寫簡單的文件系統(tǒng)為 ARM9開發(fā)板添加 MTD支持 移植JFFS2文件系統(tǒng) 通過proc文件系統(tǒng)修改操作系統(tǒng)參數(shù) 分析romfs 文件系統(tǒng)源代碼 創(chuàng)建一個cramfs 文件系統(tǒng)
第五篇:學(xué)習(xí)嵌入式ARM+Linux_步驟
學(xué)習(xí)嵌入式ARM+Linux 步驟
轉(zhuǎn)載的,寫的非常有指導(dǎo)性,大概步驟就是:
ARM裸機編程—熟悉Linux系統(tǒng)—了解Linux完整運行過程—內(nèi)核移植—驅(qū)動開發(fā)—應(yīng)用程序開發(fā)
---------------
由于很多人總問這個問題,所以這里做一個總結(jié)文檔供大家參考。這里必須先說明,以下的步驟都是針對Linux系統(tǒng)的,并不面向WinCE。也許你會注意 到,現(xiàn)在做嵌入式的人中,做linux研究的人遠(yuǎn)比做WinCE的人多,很多產(chǎn)家提供的資料也是以linux為主。我一直很難理解,其實WinCE的界面 比linux的界面好看多了,使用起來也很方便,更為重要的是,WinCE的開發(fā)和Windows下的開發(fā)基本一樣,學(xué)起來簡單得多,但是學(xué)linux或 者使用linux做嵌入式的人就是遠(yuǎn)比WinCE多。在和很多工作的人交流時我了解到,他們公司從沒考慮使用WinCE,因為成本高,都是使用linux 進行開發(fā)。我讀研究生的的實驗室中也沒有使用WinCE的,大都研究linux,也有少部分項目使用vxwork,但是就沒有聽說過使用WinCE的,原 因就是開源!當(dāng)然現(xiàn)在WinCE6.0聽說也開源,不過在成本和資源上linux已經(jīng)有了無人能擋的優(yōu)勢。與此相對應(yīng)的是,越來越多的電子廠商已經(jīng)開始使 用linux開發(fā)產(chǎn)品。舉個例子,Google近期開發(fā)的智能手機操作系統(tǒng)Android其實就是使用linux-2.6.23內(nèi)核進行改進得到的。
第一,學(xué)習(xí)基本的裸機編程。
對于學(xué)硬件的人而言,必須先對硬件的基本使用方法有感性的認(rèn)識,更必須深刻認(rèn)識該硬件的控制方式,如果一開始就學(xué)linux系統(tǒng)、學(xué)移植那么只會馬上就陷 入一個很深的漩渦。我在剛剛開始學(xué)ARM的時候是選擇ARM7(主意是當(dāng)時ARM9還很貴),學(xué)ARM7的時候還是保持著學(xué)51單片機的思維,使用ADS 去編程,第一個實驗就是控制led。學(xué)過一段時間ARM的人都會笑這樣很笨,實際上也不是,我倒是覺得有這個過程會好很多,因為無論做多復(fù)雜的系統(tǒng)最終都 會落實到這些最底層的硬件控制,因此對這些硬件的控制有了感性的認(rèn)識就好很多了
學(xué)習(xí)裸機的編程的同時要好好理解這個硬件的構(gòu)架、控制原理,這些我稱他為理解硬件。所謂的理解硬件就是說,理解這個硬件是怎么組織這么多資源的,這些資源 又是怎么由cpu、由編程進行控制的。比如說,s3c2410中有AD轉(zhuǎn)換器,有GPIO(通用IO口),還有nandflash控制器,這些東西都有一 些寄存器來控制,這些寄存器都有一個地址,那么這些地址是什么意思?又怎么通過寄存器來控制這些外圍設(shè)備的運轉(zhuǎn)?還有,norflash內(nèi)部的每一個單元 在這個芯片的內(nèi)存中都有一個相應(yīng)的地址單元,那么這些地址與剛剛說的寄存器地址又有什么關(guān)系?他們是一樣的嗎?而與norflash相對應(yīng)的 nandflash內(nèi)部的儲存單元并不是線性排放的,那么s3c2410怎么將nandflash的地址映射在內(nèi)存空間上進行使用?或者簡單地說應(yīng)該怎么 用nandflash?再有,使用ADS進對ARM9行編程時都需要使用到一個初始化的匯編文件,這個文件究竟有什么用?他里面的代碼是什么意思?不要這 個可以嗎?
諸如此類都是對硬件的理解,理解了這些東西就對硬件有很深的理解了,這對以后更深一步的學(xué)習(xí)將有很大的幫助,如果跳過這一步,我相信越往后學(xué)越會覺得迷茫,越覺得這寫東西深不可測。因為,你的根基沒打好。
不過先聲明一下,本人并沒有使用ADS對ARM9進行編程,我是學(xué)完ARM7后直接就使用ARM9學(xué)linux系統(tǒng)的,因此涉及使用ADS對ARM9進行編程的問題我很難回答^_^,自己去研究研究吧。
對于這部分不久將提供一份教程,這個教程中的例程并不是我為我們所代理的板子寫的,是我在我們學(xué)院實驗室拿的,英培特為他們自己的實驗箱寫的,不過很有借鑒意義,可以作為
一份有價值的參考。
第二,使用linux系統(tǒng)進行一些基本的實驗。
在買一套板子的時候一般會提供一些linux的試驗例程,好好做一段時間這個吧,這個過程也是很有意義的,也是為進一步的學(xué)習(xí)積累感性認(rèn)識,你能想象一個 從沒有使用過linux系統(tǒng)的人能學(xué)好linux的編程嗎?好好按照手冊上的例程做一做里面的實驗,雖然有點娃娃學(xué)走路,有點弱智,但是我想很多高手都會 經(jīng)歷這個過程。
在這方面我們深藍(lán)科技目前沒有計劃提供相應(yīng)的例程,主要是開發(fā)板的提供商會提供很豐富的例程,我們不做重復(fù)工作,只提供他們沒有的、最有價值的東西給大家。
第三,研究完整的linux系統(tǒng)的的運行過程。
所謂完整的linux系統(tǒng)包括哪些部分呢?
三部分:bootloader、linux kernel(linux內(nèi)核)、rootfile(根文件系統(tǒng))。
那么這3部分是怎么相互協(xié)作來構(gòu)成這個系統(tǒng)的呢?各自有什么用呢?三者有什么聯(lián)系?怎么聯(lián)系?系統(tǒng)的執(zhí)行流程又是怎么樣的呢?搞清楚這個問題你對整個系統(tǒng) 的運行就很清楚了,對于下一步制作這個linux系統(tǒng)就打下了另一個重要的根基。介紹這方面的資料網(wǎng)上可以挖掘到幾噸,自己好好研究吧。
第四,開始做系統(tǒng)移植。
上面說到完整的linux有3部分,而且你也知道了他們之間的關(guān)系和作用,那么現(xiàn)在你要做的便是自己動手學(xué)會制作這些東西。
當(dāng)然我不可能叫你編寫這些代碼,這不實現(xiàn)。事實上這個3者都能在網(wǎng)下載到相應(yīng)的源代碼,但是這個源代碼不可能下載編譯后就能在你的系統(tǒng)上運行,需要很多的 修改,直到他能運行在你的板子上,這個修改的過程就叫移植。在進行移植的過程中你要學(xué)的東西很多,要懂的相關(guān)知識也很多,等你完成了這個過程你會發(fā)現(xiàn)你已 經(jīng)算是一個初出茅廬的高手了。在這個過程中如果你很有研究精神的話你必然會想到看源代碼。很多書介紹你怎么閱讀linux源代碼,我不提倡無目的地去看linux源代碼,用許三多的話 說,這沒有意義。等你在做移植的時候你覺得你必須去看源代碼時再去找基本好書看看,這里我推薦一本好書倪繼利的《linux內(nèi)核的分析與編程》,這是一本 針對linux-2.6.11內(nèi)核的書,說得很深,建議先提高自己的C語言編程水平再去看。
至于每個部分的移植網(wǎng)上也可以找到好多噸的資料,自己研究研究吧,不過要提醒的是,很多介紹自己經(jīng)驗的東西都或多或少有所保留,你按照他說的去做總有一些 問題,但是他不會告訴你怎么解決,這時就要靠自己,如果自己都靠不住就找我一起研究研究吧,我也不能保證能解決你的問題,因為我未必遇到過你的問題,不過 我相信能給你一點建議,也許有助你解決問題。
這一步的最終目的是,從源代碼的官方主頁上(都是外國的,悲哀)下載標(biāo)準(zhǔn)的源代碼包,然后進行修改,最終運行在板子上。
盜用阿基米德的一句話:“給我一根網(wǎng)線,我能將linux搞定”。
第五,研究linux驅(qū)動程序的編寫。
移植系統(tǒng)并不是最終的目的,最終的目的是開發(fā)產(chǎn)品,做項目,這些都要進行驅(qū)動程序的開發(fā)。
Linux的驅(qū)動程序可以說是五花八門,linux2.4和linux2.6的編寫有相當(dāng)大的區(qū)別,就是同為linux2.6但是不同版本間的驅(qū)動程序也 有區(qū)別,因此編寫linux的驅(qū)動程序變都不是那么容
易的事情,對于最新版本的驅(qū)動程序的編寫甚至還沒有足夠的參考資料。那么我的建議就是使用、移植一個 不算很新的版本內(nèi)核,這樣到時學(xué)驅(qū)動的編程就有足夠的資料了。這部分的推薦書籍可以參考另一篇文章《推薦幾本學(xué)習(xí)嵌入式linux的書籍》。
第六,研究應(yīng)用程序的編寫。
做作品做項目除了編寫驅(qū)動程序,最后還要編寫應(yīng)用程序?,F(xiàn)在的趨勢是圖形應(yīng)用程序的開發(fā),而圖形應(yīng)用程序中用得最多的還是qt/e函數(shù)庫。我一直就使用這 個函數(shù)庫來開發(fā)自己的應(yīng)用程序,不過我希望你能使用國產(chǎn)的MiniGUI函數(shù)庫。盜用周杰倫的廣告詞就是“支持國產(chǎn),支持MiniGUI”。MiniGUI的編程比較相似Windows下的VC編程,比較容易上手,效果應(yīng)該說是相當(dāng)不錯的,我曾使用過來開發(fā)ARM7的程序。不過MiniGUI 最大的不好就是沒有像qtopia這樣的圖形操作平臺,這大大限制了他的推廣,我曾經(jīng)幻想過與北京飛漫公司(就是MiniGUI的版權(quán)擁有者)合作使用 MiniGUI函數(shù)庫開發(fā)像qtopia這樣的圖形操作平臺,不過由于水平有限這只能是幻想了,呵呵。
完成這一步你基本就學(xué)完了嵌入式linux的全部內(nèi)容了。
還有一個小小的經(jīng)驗想和大家分享。我在學(xué)習(xí)嵌入式linux的過程中很少問人,客觀原因是身邊的老師、同學(xué)師兄都沒有這方面的高手,主觀原因是我不喜歡問 人,喜歡自己研究解決問題。這樣做有個好處,就是可以提高自己解決問題的能力,因為做這些東西總有很多問題你難以理解,別人也沒有這方面的經(jīng)驗,也不是所 有問題都有人給你答案,這時必須要自己解決問題,這樣,個人的解決問題能力就顯得非常關(guān)鍵了。因此我的建議就是一般的問題到網(wǎng)上搜索一下,確實找不到答案 了就問問高手,還是不行了就自己去研究,不要一味去等別人幫你解決問題。
記住,問題是學(xué)習(xí)的最好機會。