嵌入式Linux開發(fā)基礎(chǔ)及實驗_第1頁
嵌入式Linux開發(fā)基礎(chǔ)及實驗_第2頁
嵌入式Linux開發(fā)基礎(chǔ)及實驗_第3頁
嵌入式Linux開發(fā)基礎(chǔ)及實驗_第4頁
嵌入式Linux開發(fā)基礎(chǔ)及實驗_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、嵌入式Linux開發(fā)基礎(chǔ),一、Linux操作系統(tǒng)基礎(chǔ),1.1 Linux的起源與版本 1.2 Linux的特性和功能 1.3 Linux的內(nèi)核體系結(jié)構(gòu) 1.4 Linux常用命令 1.5 vi編輯器的使用,1.1.1 LINUX的起源,Linux最早是Linus Torvalds (李納斯托沃茲 )于1991年在芬蘭赫爾辛基大學原創(chuàng)開發(fā)的。 Linux是一種類Unix的操作系統(tǒng),是一個完全免費的操作系統(tǒng)。,1.1.2 LINUX的版本,Linux內(nèi)核版本有兩種:穩(wěn)定版和開發(fā)版。 Linux內(nèi)核的命名機制:內(nèi)核版本由3部分數(shù)字構(gòu)成的(主版本號.次版本號. 修訂版本號,例如:2 . 4 . 18

2、) 如果次版本號是偶數(shù),那么該內(nèi)核就是穩(wěn)定版;若是奇數(shù),則是開發(fā)版。 *查看內(nèi)核版本命令:cat /proc/version 或 cat /etc/issue 或 uname -a,國內(nèi)外主要發(fā)行版本,國外: 1Red Hat Linux (fedora Linux) 2Ubuntu Linux 3SuSE Linux 4Mandrake Linux 5. Gentoo Linux,國內(nèi): 1紅旗 Linux 2中標普華 Linux 3共創(chuàng) Linux 4沖浪 Linux 5. 藍點 Linux,1.2 Linux的特性,1多任務、多用戶 2支持多種文件系統(tǒng) 3采用虛擬內(nèi)存管理技術(shù) 4良好的可

3、移植性 5豐富的網(wǎng)絡(luò)功能 6提供全部源代碼,1.3 Linux的內(nèi)核體系結(jié)構(gòu),Linux系統(tǒng)大致可分為3層: 靠近硬件的底層是常駐內(nèi)存的內(nèi)核 中間層是內(nèi)核之外的系統(tǒng)程序(Shell) 最高層是應用層即用戶程序,1.4 Linux常用命令,1.4.1 Shell 簡介: shell是用戶和Linux操作系統(tǒng)之間的接口,Linux中有多種shell,其中缺省使用的是bash。 Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼為用戶提供使用操作系統(tǒng)的接口。它是一個命令語言解釋器,擁有自己內(nèi)建的shell命令集。 Linux命令行的一般格式為: 命令名 選擇項 參數(shù) (字母大小寫敏感),1.4.1 啟動登

4、錄命令,系統(tǒng)啟動成功后 (屏幕顯示localhost login: ) 輸入超級用戶名“root” 然后鍵入回車鍵; (屏幕顯示Password:) 輸入口令,口令不會在屏幕上顯示出來; 重新啟動系統(tǒng)命令:reboot 關(guān)閉系統(tǒng)命令:shutdown,1.4.2 文件目錄操作命令,ls 列出文件目錄命令:相當于dos下的dir。常用的參數(shù):-a(顯示所有文件,包括隱藏的) -l (以詳細格式列出文件內(nèi)容) pwd顯示用戶當前工作路徑; cd 進出目錄命令: 與dos下一樣使用。 mkdir 建立新的目錄命令:mkdir new rmdir 刪除已存在的空目錄命令:rmdir new cp 復制

5、命令:相當于dos下的copy。 cp r 源文件 目的文件 (參數(shù)r 是指連同源文件中的子目錄一同拷貝),文件目錄操作命令,rm刪除文件命令:rm -rf test (選項r是指連子目錄一塊刪除;f是指不經(jīng)確認強制刪除) mv移動目錄或文件命令:mv /home/a.tar /root ;也有重命名功能 mv old.tar new.tar cat文件顯示命令:顯示或連結(jié)一般的ascii文本文件。cat file1 顯示file1這個文件的內(nèi)容;cat file1 file2 順序顯示file1,file2 的內(nèi)容;cat file1 file2file3 把file1,file2連接再重定

6、向到file3。 more顯示一般文本文件命令:一般用于分頁顯示,1.4.3 用戶管理命令,useradd:創(chuàng)建一個新的用戶帳號; useradd newuser p 123456 指定密碼 userdel:刪除一個已存在的帳號; passwd:改變口令命令; su:切換用戶(超級用戶切換不需要密碼); su newuser,1.4.4 進程及任務管理命令,ps進程查看命令。 常用選項:-e顯示所有進程-f全格式-l長格式。 top顯示系統(tǒng)當前的進程和其他狀況。 執(zhí)行過程中可以使用交互命令: 立即刷新顯示;h或者?顯示幫助;m 切換顯示內(nèi)存信息;t 切換顯示進程和CPU狀態(tài)信息;c 切換顯示命

7、令名稱和完整命令行;M 根據(jù)駐留內(nèi)存大小進行排序;P 根據(jù)CPU使用百分比大小進行排序;q 退出。 kill終止進程命令。 格式:kill -s 信號 進程號 例如:kill 123 命令將終止PID(進程號)為123的進程,1.4.5 磁盤及文件系統(tǒng)管理命令,df 顯示各分區(qū)磁盤空間使用情況。 mount 掛載文件系統(tǒng)命令。 格式:mount 選項 設(shè)備 目錄 - a 把/etc/fstab中列出的文件系統(tǒng)都掛載上。 umount 卸載文件系統(tǒng)命令。 格式: umount 選項 目錄 -f 強制執(zhí)行卸載操作,可能會造成數(shù)據(jù)丟失。 gzip文件壓縮命令。 格式: gzip 選項 壓縮(解壓縮)

8、的文件名 gzip ramdisk gunzip ramdisk.gz,1.4.6 軟件安裝命令,tar 文件壓縮和軟件包解壓命令。 格式:tar 選項 文件名.tar.gz -z采用壓縮方式;-x解壓軟件包內(nèi)容;-v顯示過程信息;-f指定軟件包名稱;-t查看軟件包內(nèi)容;-c創(chuàng)建一個軟件包; 例如:tar xzvf abc.tar.gz將軟件包解壓到當前路徑中。 rpm 軟件包功能命令。 -i安裝軟件包:rpm -i abc.rpm ; -U升級軟件包:rpm U abc.rpm ; -qa查看已安裝的全部軟件包:rpm -qa | grep abc ;( grep 是文件內(nèi)容查找命令) -e

9、刪除已安裝的軟件包:rpm -e abc 。,1.4.7 網(wǎng)絡(luò)配置命令,ping查看網(wǎng)絡(luò)主機是否工作。ping 選項 主機名/IP地址 ifconfig查看和配置網(wǎng)卡命令。 格式:ifconfig 選項 interface address netmask address up|down -a查看所有網(wǎng)卡狀態(tài);-V查看該命令版本信息;-s查看統(tǒng)計信息; 例如:ifconfig eth0 up,1.5 vi編輯器的使用,Vi是一個高級文本編輯器。它可以執(zhí)行輸出、刪除、查找、替換等眾多文本操作而且用戶可以根據(jù)自己的需要對其進行定制,這是其他編輯程序所沒有的。 Vi有三種基本工

10、作模式:命令行模式,文本輸入模式,末行模式。,1.5.1 Vi三種工作模式,命令行模式:不管處于何種模式,只要按一下ESC鍵即可使vi進入命令行模式;此時從鍵盤上輸入的任何字符都被當作編輯命令來解釋。 文本輸入模式:在命令模式下輸入插入命令i等都可以進入文本輸入模式;在該模式下輸入的任何字符都被當做文件內(nèi)容保存起來。 末行模式:在命令模式下按“: ”鍵即可進入末行模式;此時會在顯示窗口的末行顯示一個冒號作為末行模式的提示符,等待用戶輸入命令。,1.5.2 vi的進入與退出,進入vi:在shell模式下鍵入vi及需要編輯的文件名即可。例如:vi example.txt 退出vi:首先按ESC鍵進

11、入命令模式,然后輸入:進入末行模式,末行模式下輸入q直接退出;wq(或x)保存后退出;q!不保存強制退出。,二、嵌入式Linux開發(fā)基礎(chǔ),2.1 嵌入式Linux簡介 2.2 Linux與uC/OS-II的區(qū)別 2.3 Linux交叉開發(fā)模式 2.4 Linux開發(fā)環(huán)境的建立 2.5 Linux 編譯環(huán)境和源代碼的安裝,2.1 嵌入式Linux簡介,Linux原本被設(shè)計為桌面系統(tǒng),現(xiàn)在廣泛應用于服務器領(lǐng)域。而更大的影響在于它正逐漸應用于嵌入式設(shè)備。最早的嵌入式Linux發(fā)行版本是為沒有MMU的處理器而設(shè)計的,進而發(fā)展了一個完整的開發(fā)平臺,包括編譯、調(diào)試等工具。 具有大量的開源的linux應用程

12、序和驅(qū)動程序,并可以方便地移植到各種平臺,包括ARM平臺。,2.2 Linux與uC/OS-II的區(qū)別,1.功能性 Linux包含一整套的編譯、調(diào)試等開發(fā)工具、內(nèi)核源代碼、各種文件系統(tǒng)、圖形接口、各種協(xié)議、驅(qū)動程序以及豐富的應用程序。 而uC/OS-II確切的來說只是一個微內(nèi)核,僅僅包含多任務調(diào)度、簡單內(nèi)存管理等基本的多任務操作系統(tǒng)元素,且多任務調(diào)度算法和內(nèi)存管理等都比較簡單。對于想實現(xiàn)GUI、協(xié)議等都必須另外購買或者移植,對于設(shè)備驅(qū)動程序沒有提供專門統(tǒng)一的接口。,Linux與uC/OS-II的區(qū)別,2.開發(fā)工具 Linux發(fā)布中包含了編譯器和調(diào)試器等工具,它們都采用GCC編譯器,匯編語法一致

13、。 uC/OS-II沒有指定編譯器,在不同的平臺下使用不同的編譯器,而各個編譯器,其匯編語法不同,因此,在不同類型平臺下,匯編程序不一致。,Linux與uC/OS-II的區(qū)別,3.開發(fā)資源 在開發(fā)上,Linux采用統(tǒng)一的API調(diào)用,接口文檔齊全,書籍、網(wǎng)上資源也比較多。 uC/OS-II雖沒有標準的API接口,但是其內(nèi)核非常簡單、簡潔,且書籍、網(wǎng)上資源也非常豐富。,Linux與uC/OS-II的區(qū)別,4.移植性 Linux發(fā)布中包含了多種平臺下的移植,可以通過配置內(nèi)核選擇體系結(jié)構(gòu)和裁剪內(nèi)核。 uC/OS-II的不同平臺下的移植通過不同的移植代碼獨立發(fā)布,沒有一個統(tǒng)一的界面,通過宏定義進行內(nèi)核裁

14、剪。,Linux與uC/OS-II的區(qū)別,5.實時性 Linux內(nèi)核不關(guān)心實時性問題,可以通過和RTLinux配合來實現(xiàn)實時。 RTLinux處理實時任務,非實時任務由linux完成 RTLinux是為linux提供實時性的方法,同樣也適用于Linux。通過RTLinux的patch,可以滿足Linux對實時性的需求 uC/OS-II采用搶占式內(nèi)核,實時性好。,2.3 Linux交叉開發(fā)模式,Linux交叉開發(fā)采用宿主機和目標機的模式進行。宿主機是一臺運行Linux(如RedHat)的PC機,目標機即JXARM9-2410教學實驗系統(tǒng)。 開發(fā)時使用宿主機上的交叉編譯、匯編及連接工具形成可執(zhí)行的

15、二進制代碼,這種代碼并不能在宿主機上執(zhí)行,而只能在目標機上執(zhí)行。然后把可執(zhí)行文件下載到目標機上運行。文件下載,可以使用串口,以太網(wǎng)口等。,GNU交叉編譯器,Linux采用GNU交叉編譯器 GNU的交叉編譯器,包括以下組件: 1.Gcc交叉編譯器,即在宿主機上開發(fā)、編譯 目標機上可運行的二進制文件; 2.Binutils輔助工具,包括objdump、objcopy等; 3.Gdb調(diào)試器。 對于ARM可以采用如下兩個版本的編譯器: arm-elf- 和 arm-linux-,2.3.1 Linux內(nèi)核的開發(fā),Linux交叉開發(fā)包括Linux內(nèi)核的開發(fā)和Linux應用程序的開發(fā)。 Linux內(nèi)核的開

16、發(fā):在主機的RedHat Linux操作系統(tǒng)下安裝Linux發(fā)行包以及交叉編譯器arm-linux-gcc。然后對Linux進行配置(make menuconfig) ,然后編譯生成Linux映像文件zImage。最后通過u-boot的tftp命令將該文件下載到目標板并執(zhí)行。,Linux內(nèi)核開發(fā)流程,2.3.2 Linux應用程序的開發(fā),Linux應用程序的開發(fā)在宿主機一端的操作與內(nèi)核開發(fā)類似,都使用arm-linux-gcc編譯器編譯應用程序,所不同的是,編譯生成的是elf格式的文件,而不是Linux映像文件。 編譯生成的應用程序可以通過多種方式進行調(diào)試;如下:,常用的調(diào)試方式,1、Linu

17、x應用程序以文件的方式直接將elf格式的文件加入到文件系統(tǒng)中,更新整個文件系統(tǒng),然后運行目標機Linux系統(tǒng)并運行應用程序。 2、運行目標機Linux系統(tǒng),然后在目標機Linux系統(tǒng)中通過一些工具軟件將宿主機中的應用程序通過以太網(wǎng)下載到目標機,如NFS、FTP、TFTP等。 3、在宿主機端將Linux應用程序拷貝到U盤,然后運行目標機Linux系統(tǒng),然后在目標機Linux系統(tǒng)中通過掛載U盤,在U盤上運行應用程序。,2.4 Linux開發(fā)環(huán)境建立,單機模式(一臺計算機) 1. Linux環(huán)境,推薦RedHat 9.0 2. Windows環(huán)境 + VMWare虛擬機(安裝RedHat 9.0)

18、雙機模式(兩臺計算機) Windows + Linux,在linux環(huán)境下進行Linux開發(fā),Linux的程序編輯、編譯、調(diào)試都在Linux環(huán)境進行。 調(diào)試信息的打印可以通過串口完成,使用linux下的minicom超級終端程序,接收并顯示目標板傳送的打印信息(在windows下可以使用超級終端或DNW)。 Linux串口驅(qū)動完成后,可以通過內(nèi)核打印函數(shù)printk向串口打印信息,這是Linux內(nèi)核調(diào)試過程中最有效的手段,在Windows+VMWare虛擬機環(huán)境下進行Linux開發(fā),VMWare是運行于Windows中的一個應用程序,是一個虛擬機,可以在其上安裝多個操作系統(tǒng),相當于在Windo

19、ws上安裝一個虛擬的操作系統(tǒng)。 如果需要使用在Windows環(huán)境下調(diào)試的調(diào)試器,可通過在VMWare中安裝linux虛擬機,在虛擬機中進行編輯、編譯Linux,然后通過網(wǎng)絡(luò)(ftp、nfs、ssh)等手段傳送到Windows中,進行調(diào)試,這樣編譯和調(diào)試可以分別在linux和windows環(huán)境下但是是在一臺電腦中完成。 也可以在兩臺電腦中分別安裝linux和windows,分別實現(xiàn)編譯和調(diào)試。,安裝Redhat 9.0 Linux,嵌入式開發(fā)通常要求宿主機配置有網(wǎng)絡(luò),支持NFS(為Linux應用程序開發(fā)時使用),支持TFTP 服務器(為內(nèi)核下載和燒寫使用)。 在安裝之前必須準備一定的空間給Lin

20、ux,先用分區(qū)軟件劃分出至少4G空間。 安裝時請選擇完全安裝,即選擇Custom定制安裝,在配置Firewall 時請選擇No Firewall,在選擇軟件Package時選擇最后一項everything,即完全安裝。,配置以太網(wǎng),本實驗箱中均假設(shè)宿主機的IP地址為80;$ifconfig eth0 80 。 驗證網(wǎng)絡(luò)是否配置成功: 1. 首先將宿主機使用普通網(wǎng)線接入局域網(wǎng)或者使用直連網(wǎng)線與另外一臺計算機進行連接。 2. 在局域網(wǎng)內(nèi)另外一臺計算機上,保證其IP地址在同一網(wǎng)段。192.168.1.xxx 3. ping 80 測試

21、連通。,配置TFTP服務器,檢查宿主機端的TFTP(簡單文件傳輸協(xié)議)服務是否已經(jīng)開通,此步驟只在第一次時使用,以后可忽略。 開通宿主機上的TFTP服務,對于Redhat 9.0, 執(zhí)行: $setup 選擇System services 將其中的tftp一項選中,并去掉ipchains和iptables兩項服務(防火墻相關(guān)服務)。然后還要選擇Firewall configuration,選中No firewall。,選擇System services,選中tftp一項,選擇Firewall configuration,選中No firewall,退出setup,執(zhí)行如下命令以啟動TFTP服務

22、:$service xinetd restart 。 配置完成后,簡單測試一下TFTP服務器是否可用,即自己tftp自己。 $cp /home/cvtech/jx2410/images/zImage /tftpboot/ $tftp 80 tftpget zImage,正確的結(jié)果如下圖所示:,配置NFS服務器,可以通過主機系統(tǒng)的圖形界面來配置NFS(網(wǎng)絡(luò)文件系統(tǒng))服務。 也可以通過命令行配置: 編輯/etc/exports文件 $vi /etc/exports添加如下行/tftpboot 192.168.1.* (rw) 其中“/tftpboot”是共享的目錄,也是目標系

23、統(tǒng)的根文件系統(tǒng)目錄;“192.168.1.*”表示該服務提供給所有的主機和網(wǎng)絡(luò)。,要注意的是,在使用nfs服務時請確認防火墻沒有限制nfs服務,并且,在系統(tǒng)服務中portmap服務是啟動運行的。 測試nfs服務:首先在80上建立目錄/home/tmp,然后用超級用戶執(zhí)行下列命令 $mount 80:/tftpboot /home/tmp 查看目錄“/home/tmp”的內(nèi)容與“/tftpboot”里面完全一樣,則確定NFS服務可用。,2.5 Linux 編譯環(huán)境和源代碼的安裝,復制JXARM9-2410光盤上linux文件夾到PC機中 進入linux

24、目錄 $cd linux ;然后執(zhí)行腳本文件linuxinstall,該程序?qū)⒆詣影惭b編譯器,和Linux源代碼等。$./linuxinstall 在安裝之前請確保已經(jīng)建立cvtech用戶名,并保證以root登陸。,三、嵌入式Linux實驗,3.1 U-BOOT基礎(chǔ) 3.2 Linux文件系統(tǒng) 3.3 Linux內(nèi)核目錄結(jié)構(gòu) 3.4 Linux內(nèi)核配置 3.5 Linux內(nèi)核編譯 3.6 Linux映像下載并運行,3.1 U-BOOT基礎(chǔ),Bootloader是系統(tǒng)加電后運行的第一段代碼。(功能類似于PC中的BIOS) Bootloader有兩種不同的操作模式:自主模式(加載操作系統(tǒng),正常工作

25、模式)和下載模式(先下載后加載,用于開發(fā)和更新階段) U-boot 是一款優(yōu)秀的Bootloader,支持多種嵌入式處理器和多種系統(tǒng)的引導。,U-BOOT常用命令,md存儲區(qū)顯示 該命令以16進制和ASCII碼方式顯示存儲區(qū),支持數(shù)據(jù)寬度擴展。 mm存儲區(qū)修改 提供了一種交互式地修改存儲器內(nèi)容的方式,支持數(shù)據(jù)寬度擴展。 erase 擦除flash存儲器 扇區(qū)是一次擦除的最小單位,扇區(qū)編號從0開始;bank是連接到CPU的同一片選信號的一個或者多個FLASH芯片組成的flash存儲器區(qū)域, bank編號從1開始。 示例:era 40040000 402fffff(兩個地址必須是扇區(qū)的起始地址)e

26、ra 1:6-8 (擦除bank1中的6到8扇區(qū)),U-BOOT常用命令,cmp 存儲區(qū)比較; 用來測試兩個存儲器區(qū)域是否相同 可按不同寬度來訪問存儲器:32位 cmp.l或 cmp(默認32位);16位 cmp.w;8位 cmp.b 示例: cmp 100000 40000000 400 ; md 100000 C ; md 40000000 C cp存儲區(qū)復制; 用于存儲器復制,同樣也支持數(shù)據(jù)寬度擴展。 示例:cp 40000000 100000 10000,U-BOOT常用命令,3.下載運行命令 loadb 經(jīng)由串口線加載二進制文件; 示例:# loadb 100000 Kermit s

27、end /bin/tftpboot/zImage Kermit connect tftp 經(jīng)由網(wǎng)線加載映像文件(TFTP協(xié)議); 示例: tftp 30008000 zImage go 從某地址處開始運行 示例:go 30008000,U-BOOT常用命令,4. 環(huán)境變量操作 printenv 打印環(huán)境變量; setenv 設(shè)置環(huán)境變量; 示例: setenv ipaddr 80 saveenv 保存環(huán)境變量; run 運行環(huán)境變量中的命令。 示例:run bootlinux,3.2 Linux文件系統(tǒng),文件系統(tǒng)指文件存在的物理空間。在Linux系統(tǒng)中,每個分區(qū)都是一個文件系統(tǒng),都有自己的目錄層次結(jié)構(gòu)。 Virtual File System(虛擬文件系統(tǒng))使得Linux可以支持多個不同的文件系統(tǒng)。由于系統(tǒng)已將Linux文件系統(tǒng)的所有細節(jié)進行了轉(zhuǎn)換,所以Linux核心的其它部分及系統(tǒng)中運行的程序?qū)⒖吹浇y(tǒng)一的文件系統(tǒng)。 Linux的虛擬文件系統(tǒng)允許用戶同時能透明地安裝許多不同的文件系統(tǒng)。虛擬文件系統(tǒng)是為Linux用戶提供快速且高效的文件訪問服務而設(shè)計的。,常用Linux文件系統(tǒng),Linux系統(tǒng)核心可以支持十多種

溫馨提示

  • 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

提交評論