




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄第1章 EL-ARM-860實驗系統(tǒng)的資源介紹 (1第2章基于linux操作系統(tǒng)的ARM系統(tǒng)實驗 (26實驗一 Linux的實驗環(huán)境的搭建 (26實驗二 BootLoader引導(dǎo)程序 (31實驗三 linux的移植、內(nèi)核、文件系統(tǒng)的生成與下載 (38實驗四 linux驅(qū)動程序的編寫 (49實驗五 linux應(yīng)用程序的編寫 (54實驗六基于linux的鍵盤驅(qū)動程序的編寫 (56實驗七基于linux的基本繪圖應(yīng)用程序的編寫 (59實驗八基于linux的鍵盤應(yīng)用程序的編寫 (62實驗九基于linux的跑馬燈應(yīng)用程序的編寫 (65實驗十 USB播放mp3的實驗 (68實驗十一 MMC/SD卡實驗
2、(70實驗十二 TV OUT實驗 (71第1章 EL-ARM-860實驗系統(tǒng)的資源介紹ARM實驗箱硬件資源概述EL-ARM-860型教學(xué)實驗系統(tǒng)屬于一種綜合的教學(xué)實驗系統(tǒng),該系統(tǒng)采用了目前在國內(nèi)普遍認(rèn)同的CPU:Omap35xx,32位微處理器,實現(xiàn)了多模塊的應(yīng)用實驗。它是集學(xué)習(xí)、應(yīng)用編程、開發(fā)研究于一體ARM實驗教學(xué)系統(tǒng)。用戶可根據(jù)自己的需求選用不同類型的CPU 適配板,兼容ARM7與ARM9及更高CPU,而不需要改變?nèi)魏闻渲?同時,實驗系統(tǒng)上的Tech_V 總線能夠拓展較為豐富的實驗接口板。用戶在了解Tech_V標(biāo)準(zhǔn)后,更能研發(fā)出不同用途的實驗接口板。除此之外,在實驗板上有豐富的外圍擴(kuò)展資
3、源(數(shù)字、模擬信號發(fā)生器,數(shù)字量IO輸入輸出,語音編解碼、人機(jī)接口等單元,可以完成ARM的基礎(chǔ)實驗、算法實驗和數(shù)據(jù)通信實驗、以太網(wǎng)實驗。 圖1-1-1 EL-ARM-860實驗教學(xué)系統(tǒng)的底箱功能框圖1.1 實驗系統(tǒng)的硬件資源總覽CPU單元:Omap35xx(ARM:V7 Cortex-A8;DSP:TMS320C64x+ 430-MHz;動態(tài)存儲器:32位寬度DDR:128MB;海量存儲器:NANDFLASH:256MB; USB單元: 1個主/從USB接口;網(wǎng)絡(luò)單元:標(biāo)準(zhǔn)RJ-45 10M/100M以太網(wǎng)接口,芯片LAN9115;音頻:1路輸入,1路輸出;視頻:LCD輸出,TV輸出;8個輸入
4、按鍵;觸摸屏輸入; 3.3V JTAG仿真接口;主從USB接口;SD/MMC卡接口;UART單元: 2個,最高通信波特率115200bps;語音單元: IIS格式,芯片UDA1341TS,采樣頻率最高48KHz;LCD單元: 8.4吋,65536色,640X480像素;觸摸屏單元:四線電阻屏,640X480,8.4吋;SD卡單元:通信頻率最高25MHz,兼容MMC卡;鍵盤單元: 4X4鍵盤,帶8位LED數(shù)碼管;芯片HD7279A;數(shù)字輸入輸出單元:8個拔碼開關(guān)及8個LED發(fā)光管;A/D轉(zhuǎn)換單元:芯片自帶的8路10位A/D,滿量程2.5V;信號源單元:方波輸出;標(biāo)準(zhǔn)鍵盤及PS2鼠標(biāo)接口;達(dá)盛公司
5、的Tech_V總線接口;達(dá)盛公司的E_Lab總線接口;1個設(shè)備接口,芯片PDIUSBD12;CPLD單元;電源模塊單元。注:帶的功能集成在Omap35xx CPU板上。1.2 omap35xx cpu板介紹說明核心板的資源介紹1.核心板的硬件資源(V7 Cortex-A8核存儲器:64K內(nèi)部SRAM;32位寬度DDR,容量為128MB;256MB的NAND FLASH;功能擴(kuò)展:擴(kuò)展了USB物理層接口,支持USB主、從工作模式;外擴(kuò)語音模塊,一路語音輸入,一路語音輸出;電源:獨立的電源解決方案,外部只需要輸入3.64.5V直流電。板卡原理框圖 Omap35xx CPU板原理框圖2.omap35
6、xx cpu板擴(kuò)展接口介紹本設(shè)計方案采用的是“CPU板+功能板”的設(shè)計。為了增強(qiáng)設(shè)計的可擴(kuò)展性,在CPU 小板上,盡可能的把信號引到了連接座上。這樣在用戶進(jìn)行再次開發(fā)時,便可以根據(jù)自己需要進(jìn)行適當(dāng)?shù)臄U(kuò)展。CPU板和外部的連接采用了兩個100引腳的連接座(如下所示,具體的可以參考原理圖部分。 3.內(nèi)存映射 注意:對于GPMC CS0CS7起地址段范圍為0x00000000 0x3FFFFFFF,而且每一個片選區(qū)間CSx(CS0CS7的地址段可以單獨進(jìn)行配置,具體配置,請參照OMAP35x的TechnicalReference Manual的Memory Subsystem的GMPC部分和樣例程序
7、分配方法(例如鍵盤程序。4.啟動設(shè)置說明Omap35xx可以很多種方式進(jìn)行啟動,這里只介紹本板卡應(yīng)用過程中所用到的啟動設(shè)置(如下表所示: 說明:UART3啟動:該方式一般只在FLASH中沒有燒寫過u-boot時使用。通過設(shè)置為UART3啟動,通過PC機(jī)把u-boot下載到目標(biāo)板的DDR中,然后再利用u-boot的tftp功能把需要燒寫的文件下載到DDR并燒寫到FLASH中;FLASH啟動:大部分情況下板子設(shè)置在此模式下。在FLASH中已經(jīng)燒寫了u-boot后,如果需要再次更新FLASH中的內(nèi)容,在u-boot起來后通過tftp功能更新即可;三、omap35xx 大板介紹說明1.omap35xx
8、 大板原理Omap35xx大板是為了配合Omap35xxCPU板與外設(shè)備的接口而設(shè)計的。其功能包括:添加了各種接口端子(LCD、USB、UART、語音、JTAG等,實現(xiàn)了電平匹配,擴(kuò)展了輸入按鍵,觸摸屏接口,增加了網(wǎng)絡(luò)接口。下圖所示,為板子器件分布示意圖; 2、復(fù)位按鍵RK1、RK2、RK3RK1:系統(tǒng)總電源復(fù)位開關(guān);RK2:系統(tǒng)復(fù)位開關(guān);RK3:CPU電源復(fù)位開關(guān);3.按鍵接口介紹為了簡化,設(shè)計中直接使用GPIO口來讀取按鍵狀態(tài)(具體對應(yīng)關(guān)系可查看原理圖。在驅(qū)動中,K1K8對應(yīng)的鍵值為18; 4.外接端口介紹4.1 USB端口介紹USB的功能模塊全部集成在omap35xx小板上,大板只是增加
9、了一個USB-A接口端子, USB主從工作模式由大板上的R76和R77來控制。 說明:需要工作在主模式:R76不焊;R77=1K需要工作在從模式:R76=1K;R77不焊4.2 MMC/SD端口介紹 平時MMC/SD卡模塊處于關(guān)閉狀態(tài),當(dāng)有卡插入時系統(tǒng)會自動檢測,然后給模塊供電,模塊供電后,板子上的LED2會點亮。4.3 語音端口介紹 語音模塊的功能在omap35xx小板上,大板上只是把信號引到了端子上。其中HEADOUT1為音頻輸出,LINE1為音頻輸入。4.4 UART端口介紹omap35xx大板上用mini-USB端子引出了兩個UART接口,其中P9端子對應(yīng)omap35xx的UART3,
10、P3端子對應(yīng)omap35xx的UART1。 說明:Omap35xx可以從UART3啟動。如果需要利用此啟動方式把把u-boot下載到目標(biāo)板,需要使用公司提供的串口線把P9(UART3和PC機(jī)串口連接起來。UART1一般在調(diào)試中使用,調(diào)試時使用一根公司提供的串口線連接P3(UART1和PC機(jī)。4.5 LCD和觸摸屏接口介紹在大板上,H1(LCD連線座和P8引線座均引出了LCD和觸摸屏的信號線,H1和P8用于滿足不同的場合。LCD數(shù)據(jù)線接口格式為RGB565,使用16bit數(shù)據(jù)深度。觸摸屏使用了TSC2046作為AD轉(zhuǎn)換控制芯片,它具備高達(dá)12位的轉(zhuǎn)換精度。 4.6以太網(wǎng)接口介紹 大板使用了LAN
11、9115作為以太網(wǎng)的接口芯片,它兼容10M和100M以太網(wǎng)傳輸。Omap3530通過EMIF總線接口和LAN9115進(jìn)行連接,以中斷的方式來響應(yīng)數(shù)據(jù)傳輸。8核心CPU板上的外接接口單元在CPU板上有INTERFACE A(對應(yīng)Omap3530-P7、INTERFACE B(對應(yīng)Omap3530-P6、INTERFACE C(對應(yīng)Omap3530-P8,3個外擴(kuò)接口單元,現(xiàn)對這三個接口的引腳加以說明。INTERFACE B:INTERFACE B擴(kuò)展信號是地址、數(shù)據(jù)總線和讀寫、片選信號:見表1-7 INTERFACE C用來擴(kuò)展INTERFACE A、INTERFACE B沒有擴(kuò)展的CPU信號,
12、如AD輸入、液晶、串口等和擴(kuò)展子板間的通訊信號。見表1-9。 表1-91.3 實驗箱底板的資源介紹1. 概述實驗箱底板上的資源豐富,具體的實驗單元有:LCD模塊,觸摸屏模塊,語音單元模塊,串口2模塊,USB設(shè)備模塊,電源模塊,數(shù)字輸入輸出模塊,鍵盤模塊,CPLD燒寫模塊,鍵盤數(shù)碼管模塊,SD(MMC卡模塊,A/D轉(zhuǎn)換模塊,信號源發(fā)生器模塊。以及PS2鼠標(biāo)鍵盤接口, Tech_V總線接口,E_LAB總線接口等等。實驗箱上的底板詳細(xì)具體資源見表1-10。 表1-102. 底板資源的具體介紹1模擬輸入輸出接口單元8bit的數(shù)字量輸入(由八個拔碼開關(guān)產(chǎn)生或插孔,通過SI0-SI7跳線位控制連接至74L
13、S244緩沖;8bit的數(shù)字量輸出通過74LS273鎖存輸出(八個LED燈顯示及插孔。輸入開關(guān)拔至L處,表示輸入一個2進(jìn)制的“0”值,至H處,表示輸入一個2進(jìn)制的“1”值, I0I7為244輸入口,O0O7為273輸出口。2鍵盤數(shù)碼管模塊鍵盤接口是由芯片HD7279A控制的,HD7279A是一片具有串行接口的,可同時驅(qū)動8位共陰式數(shù)碼管或(64只獨立LED的智能顯示驅(qū)動芯片,該芯片同時還可連接多達(dá)64鍵的鍵盤矩陣,單片即可完成LED顯示,鍵盤接口的全部功能。HD7279A內(nèi)部含有譯碼器,可直接接受BCD碼或16進(jìn)制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、
14、段尋址等。HD7279A具有片選信號,可方便地實現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。在該實驗系統(tǒng)中,僅提供了16個鍵。3USB設(shè)備模塊USB設(shè)備模塊,采用了飛利浦的USB設(shè)備控制芯片PDIUSBD12,該芯片遵從USB1.1規(guī)范,最高通信率12Mbps,該單元位于實驗箱的左下角。D3為通信狀態(tài)指示燈。使用外部中斷4來響應(yīng)中斷請求。4串口1模塊串口1模塊,采用了美信的MAX3232CPE芯片,通過它可以把PC的電信號轉(zhuǎn)換成實驗箱可以使用的信號,它的最高串行通信波特率為115200bps.5LCD模塊本實驗系統(tǒng)僅選用了LCD液晶顯示屏,LCD的控制器使用S3C2410的內(nèi)部集成的控制器,LCD
15、屏選用的是8.4吋,6400X480像素,65536色的彩屏。電源操作范圍寬(2.7V to 5.5V;低功耗設(shè)計可滿足產(chǎn)品的省電要求。其中,可調(diào)變位器VR2用于調(diào)節(jié)LCD屏色彩的對比度,產(chǎn)品出廠時,已設(shè)定成在室溫下較好的對比度,當(dāng)因溫度低或高等因素顯示不正常時,可適當(dāng)調(diào)節(jié)VR2到合適的色彩。一般請不要調(diào)整?!癡R2”: 表1-13“LCD_ON/OFF”按鍵,控制著LCD屏的電源,是電源的開關(guān)。10信號源單元信號源單元使用TI公司的TLC2272,是雙通道運算放大器,可以產(chǎn)生方波。11PS2單元PS2單元中S5為復(fù)位鍵,KEYBOARD接口為鍵盤接口,MOUSE為鼠標(biāo)接口。D1為數(shù)據(jù)傳輸指示
16、燈。控制芯片為AT2051。12CPLD單元由于實驗箱上的資源眾多,幾乎每一個設(shè)備資源都要使用片選信號或中斷信號或一些串口的信號,以及一些寄存器的地址等等,這樣一來,OMAP3530的I/O資源是不能滿足的,因此該實驗箱通過加入了一片CPLD芯片,用來完成各資源所需的地址譯碼,片選信號,以及一些高低電平的模擬。CPLD單元使用OMAP3530的片選是B_CS6(GPMC,地址是0x2C0000000x2D000000;由于底板上大多的資源都通過CPLD的地址譯碼,進(jìn)行片選電平的產(chǎn)生,以及模擬高低電平的產(chǎn)生,所以,應(yīng)給CPLD的地址里寫入相應(yīng)的數(shù)據(jù)以產(chǎn)生相應(yīng)的信號。表1-21列出了底板中所需信號
17、的地址。#define clrcs1 (*(volatile unsigned *0x2C000000 = 0x01;#define setcs1 (*(volatile unsigned *0x2C000004 = 0x02;利用宏定義來代替置高、置低;給相應(yīng)的地址里寫1,表示該CPLD的相應(yīng)引腳輸出低電平,給相應(yīng)的地址里寫2,表示該CPLD的相應(yīng)引腳輸出高電平。有的地址需要寫入8位數(shù)據(jù)。 具體的應(yīng)用,請詳見源碼程序。12其它接口說明電源單元:為系統(tǒng)提供+5V、+12V、-12V、+3.3V電源,其中 表1-22。 表1-23 綜上所述,本章介紹了該系統(tǒng)的硬件資源,看完本章內(nèi)容,應(yīng)該對實驗系
18、統(tǒng)有一個基本的了解,在后面的幾章中將會結(jié)合光盤資料給出的實驗程序詳細(xì)介紹每個單元在實驗中的具體應(yīng)用。第2章基于linux操作系統(tǒng)的ARM系統(tǒng)實驗實驗一 Linux的實驗環(huán)境的搭建一、實驗?zāi)康?. 搭建linux操作系統(tǒng)實驗所需的實驗環(huán)境構(gòu)件2.了解 linux的組成,學(xué)會編譯內(nèi)核二、實驗內(nèi)容1. 安裝Linux發(fā)行版為Red Hat Enterprise Linux 5操作系統(tǒng)2.拷貝已移植好的linux操作系統(tǒng)以及正確安裝交叉編譯器3.學(xué)習(xí)linux內(nèi)核組成,編譯過程三、實驗設(shè)備1. PentiumII以上的PC機(jī), EL-ARM860實驗箱,Linux發(fā)行版為Red Hat Enterpr
19、iseLinux 5操作系統(tǒng)四、實驗步驟1.正確安裝Linux發(fā)行版為Red Hat Enterprise Linux 5操作系統(tǒng)。(已安裝,可跳過此步2.當(dāng)安裝完linux操作系統(tǒng)后,接下來要安裝交叉編譯器(arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz。啟動主機(jī),必須以root用戶名登錄,在終端下,進(jìn)入這個編譯器相應(yīng)的目錄,執(zhí)行命令tar xvjf arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz2C /usr/local/arm等待系統(tǒng)安裝完成,將會在根目錄下的/usr/local/arm文
20、件夾內(nèi)生成一個arm-2007q3文件夾,我們所需的交叉編譯庫就在該目錄下。所以,所需的交叉編譯環(huán)境就搭建好了。添加環(huán)境變量方法:kwrite /root/.bashrcexport PATH=/usr/local/arm/arm-2007q3/bin:$PATH 保存后,下次啟動就可以直接用這個編譯器,而不需要輸入其絕對路徑。3.由于linux系統(tǒng)在編譯驅(qū)動程序時,可以用模塊的形式來動態(tài)加載,這樣給實驗、調(diào)試帶來極大的便利,通常的做法是:把編譯好的動態(tài)模塊和應(yīng)用程序放在主機(jī)上的一個共享文件夾內(nèi),啟動主機(jī)的nfs網(wǎng)絡(luò)文件系統(tǒng)服務(wù),關(guān)閉系統(tǒng)的防火墻服務(wù)(如果系統(tǒng)安裝了該項,用交叉以太網(wǎng)線把主機(jī)和
21、實驗系統(tǒng)連接。在終端下啟動minicom,在實驗系統(tǒng)起來之后,利用ifconfig eth0 xxx.xxx.xxx.xxx命令改變實驗系統(tǒng)的IP地址,讓該地址的前三段和主機(jī)的前三段一致,最后的一段,可以選擇和主機(jī)不重復(fù)的小于255的任意值。之后把主機(jī)上的共享文件夾掛載到實驗系統(tǒng)上的一個目錄上。通過相應(yīng)的命令進(jìn)行實驗或調(diào)試。4.配置NFS網(wǎng)絡(luò)文件系統(tǒng),這里介紹一種直接簡單的方法:首先在LINUX 主機(jī)的終端上執(zhí)行setup,彈出菜單界面后,選中: Firewall configuration,回車,進(jìn)入系統(tǒng)服務(wù)選項菜單,選擇NO FIREWALL關(guān)閉防火墻(如果安裝了防火墻。然后退出。但是,s
22、etup里面會照樣顯示防火墻設(shè)置是HIGH的,這個可以不必理會。之后選中: System services,回車,進(jìn)入系統(tǒng)服務(wù)選項菜單,在其中選中 *nfs ,然后按F12鍵退出,再選擇方向鍵,退出setup 界面,返回到命令提示符下。利用編輯器打開 /etc/exports文件,將這個默認(rèn)的空文件修改為只有如下一行內(nèi)容:(注意中間有空格/ (rw/home/nfs (rw然后,保存退出,之后改變目錄到/etc/rc.d/init.d/下,執(zhí)行如下命令: ./nfs start終端內(nèi)輸出:Starting NFS services: 確定 Starting NFS quotas: 確定Star
23、ting NFS daemon: 確定Starting NFS mountd: 確定這樣就一切OK了!主機(jī)linux下的NFS啟動起來。5.用交叉網(wǎng)線把主機(jī)和實驗系統(tǒng)連接。在終端下輸入minicom -s,配置minicom為波特率為115200,無奇偶校驗, 8bit。之后,在minicom下,給系統(tǒng)上電,系統(tǒng)正常起來后,利用ifconfig eth0 xxx.xxx.xxx.xxx來改變實驗系統(tǒng)的IP 地址,讓該地址的前三段和主機(jī)的前三段一致,最后的一段,可以選擇和主機(jī)不重復(fù)的小于255的任意值。例如,主機(jī)是,則實驗系統(tǒng)配置為ifconfig eth0 192.168
24、.0.5,之后,利用ping命令,在實驗系統(tǒng)上ping,看看實驗系統(tǒng)能否和主機(jī)連上。當(dāng)連通后,利用mount命令,掛載主機(jī)的nfs系統(tǒng)下的共享目錄。要mount成功,首先,利用命令chmod 777 /home/nfs 改變/home/nfs文件夾的屬性,讓其變?yōu)榭勺x可寫,如果/home目錄下沒有nfs文件夾,建議創(chuàng)建此文件夾,以后需要掛載的用于調(diào)試的驅(qū)動模塊以及應(yīng)用程序均放在該文件夾內(nèi)。之后,在終端中,輸入mount o nolock :/home/nfs /tmp回車,即可完成把主機(jī)上的/home/nfs下的文件掛載到實驗系統(tǒng)的/tmp目錄下。6
25、.編譯內(nèi)核當(dāng)選擇采用驅(qū)動模塊和應(yīng)用程序利用nfs網(wǎng)絡(luò)文件系統(tǒng)異地調(diào)試時,則不需要重新編譯內(nèi)核,僅需要使用交叉編譯器編譯驅(qū)動模塊和應(yīng)用程序,之后利用mount命令把它們所在的文件目錄加載到文件系統(tǒng)中。然后使用相關(guān)命令進(jìn)行對驅(qū)動模塊的安裝,調(diào)試或卸載。當(dāng)需要把驅(qū)動模塊編譯進(jìn)內(nèi)核,則應(yīng)在終端的內(nèi)核目錄下輸入make menuconfig配置命令,通過選中新加入的驅(qū)動模塊,保存配置,退出,步驟如下,在系統(tǒng)工具的終端下,切換目錄到kernel目錄下,然后輸入命令:make omap3_techv35xx_defconfigmake clean (該命令用于清除以前構(gòu)造內(nèi)核時生成的所有目標(biāo)文件、模塊文件和
26、臨時文件make uImage(編譯內(nèi)核中的文件,生成內(nèi)核若編譯通過則在/arch/arm/boot/目錄下生成內(nèi)核文件uImage。具體的驅(qū)動編寫和加入方法,后面章節(jié)有詳細(xì)介紹。至此,在LINUX 操作系統(tǒng)下,對linux的編譯過程應(yīng)有一個大概的了解。五、實驗說明1. 關(guān)于linux-2.6.28-omap.tar.bz2linux-2.6.28-omap.tar.bz2是linux移植到嵌入式處理器上的操作系統(tǒng)內(nèi)核代碼。一般在每個目錄下,都有一個.depend 文件和一個 Makefile 文件,這兩個文件都是編譯時使用的輔助文件,仔細(xì)閱讀這兩個文件對弄清各個文件這間的聯(lián)系和依托關(guān)系很有幫
27、助;而且,在有的目錄下還有Readme 文件,它是對該目錄下的文件的一些說明,同樣有利于我們對內(nèi)核源碼的理解。Makefile重構(gòu)Linux內(nèi)核可執(zhí)行代碼的make文件Documention有關(guān)Linux內(nèi)核的文檔Arch arch 是內(nèi)核中與具體CPU和系統(tǒng)結(jié)構(gòu)相關(guān)的代碼,具體的CPU 對應(yīng)具體的文件夾下的文件。相關(guān)的.h文件分別放在include/asm中。在每個CPU的子目錄中,又進(jìn)一步分為boot、mm、kernel、lib等子目錄,分別包含與系統(tǒng)引導(dǎo)、內(nèi)存管理、系統(tǒng)調(diào)用等相關(guān)的代碼。Drivers設(shè)備的驅(qū)動程序。放置系統(tǒng)所有的設(shè)備驅(qū)動程序;每種驅(qū)動程序又各占用一個子目錄:如,/blo
28、ck 下為塊設(shè)備驅(qū)動程序,比如ide(ide.c。Fs文件系統(tǒng),每個子目錄分別支持一個特定的文件系統(tǒng),例如fat和 ext2。還有一些共同的源程序則用于虛擬文件系統(tǒng)。Include包含了所有的.h文件。和arch子目錄一樣,其下都有相應(yīng)CPU的子目錄,而通用的子目錄asm則根據(jù)系統(tǒng)的配置“符號連接”到具體的CPU的專用子目錄上。與平臺無關(guān)的頭文件在include/linux子目錄下,與ARM處理器相關(guān)的頭文件在include/asm-arm子目錄下,除此之外,還有通用的子目錄linux,net等。Init Linux內(nèi)核的這個目錄包含核心的初始化代碼(注意:不是系統(tǒng)的引導(dǎo)代碼,包含兩個文件ma
29、in.c和Version.c。Ipc Linux內(nèi)核的進(jìn)程間的通信管理Kernel Linux內(nèi)核的進(jìn)程管理和進(jìn)程調(diào)度。主要的核心代碼,此目錄下的文件實現(xiàn)了大多數(shù)linux系統(tǒng)的內(nèi)核函數(shù),其中最重要的文件是sched.c;同樣,和體系結(jié)構(gòu)相關(guān)的代碼在arch/*/kernel中;Lib此目錄為通用的程序庫。Mm Linux內(nèi)核的內(nèi)存管理。這個目錄包括所有獨立于處理器體系結(jié)構(gòu)的內(nèi)存管理代碼,如頁式存儲管理內(nèi)存的分配和釋放等。Net包含了各種不同網(wǎng)卡和網(wǎng)絡(luò)的驅(qū)動程序。Scripts此目錄包含用于配置核心的腳本文件。2. 關(guān)于arm-2007q3交叉編譯器包arm-2007q3是一個用于嵌入式Lin
30、ux內(nèi)核的交叉編譯器包,它其中包括交叉編譯、匯編、鏈接、二進(jìn)制文件轉(zhuǎn)換工具、所需要的庫函數(shù)等等。所謂交叉編譯器就是一種在Redhat Linux操作系統(tǒng) + X86的體系結(jié)構(gòu)下,編譯經(jīng)過移植的linux操作系統(tǒng),生成內(nèi)核,該內(nèi)核能夠在另外一種軟硬件環(huán)境下運行的編譯工具,如linux操作系統(tǒng) + ARM的體系結(jié)構(gòu)。交叉編譯其實就是在一個平臺上生成能夠在另一個平臺上運行的代碼。注意這里的平臺,實際上包含兩個概念:體系結(jié)構(gòu)(Architecture和操作系統(tǒng)(Operating System。同一個體系結(jié)構(gòu)可以運行不同的操作系統(tǒng);同樣,同一個操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運行。如我們常說的x86
31、Linux平臺實際上是Intel x86體系結(jié)構(gòu)和Linux for x86操作系統(tǒng)的統(tǒng)稱;而x86 WinNT平臺實際上是Intel x86體系結(jié)構(gòu)和Windows NT for x86操作系統(tǒng)的簡稱。由于ARM硬件上無法安裝我們所需的編譯器,只好借助于宿主機(jī),在宿主機(jī)上對即將運行在目標(biāo)機(jī)上的應(yīng)用程序進(jìn)行編譯,生成可在目標(biāo)機(jī)上運行的代碼格式,這就是安裝交叉編譯器真正意義所在。3. 實現(xiàn)基于linux的應(yīng)用系統(tǒng)的開發(fā),建立或擁有一個完備的linux開發(fā)環(huán)境是十分必要的?;趌inux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件系統(tǒng)和宿主PC機(jī)所構(gòu)成。目標(biāo)硬件系統(tǒng)(即本實驗箱用于運行操作系統(tǒng)和系統(tǒng)
32、應(yīng)用軟件,而目標(biāo)硬件系統(tǒng)所用到的操作系統(tǒng)的內(nèi)核編譯、應(yīng)用程序的開發(fā)則需要通過宿主PC機(jī)來編譯完成。雙方之間通過以太網(wǎng)接口建立nfs網(wǎng)絡(luò)文件系統(tǒng)關(guān)系,來調(diào)試編譯好的驅(qū)動或應(yīng)用程序。當(dāng)編譯、調(diào)試通過后,再添加到內(nèi)核中去。實驗二 BootLoader引導(dǎo)程序一、實驗?zāi)康?. 了解bootloader的作用,掌握bootloader的編程思想二、實驗內(nèi)容1. 學(xué)習(xí)x-loader 作用和編譯過程2.學(xué)習(xí)uboot作用和編譯過程3.學(xué)習(xí)bootloader的操作三、實驗設(shè)備1. PentiumII以上的PC機(jī), LINUX操作系統(tǒng)四、BOOTLOADER程序說明在嵌入式系統(tǒng)中,BootLoader的作用
33、與PC機(jī)上的BIOS類似,通過BootlLoader 可以完成對系統(tǒng)板上的主要部件如CPU、SDRAM、Flash、串行口等進(jìn)行初始化,也可以下載文件到系統(tǒng)板上,對Flash進(jìn)行擦除與編程。當(dāng)運行操作系統(tǒng)時,它會在操作系統(tǒng)內(nèi)核運行之前運行,通過它,可以分配內(nèi)存空間的映射,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)準(zhǔn)備好正確的環(huán)境。通常,Boot Loader 是依賴于硬件而實現(xiàn)的,特別是在嵌入式系統(tǒng)中。因此,在嵌入式系統(tǒng)里建立一個通用的 Boot Loader 幾乎是不可能的。但是,仍然可以對 Boot Loader 歸納出一些通用的概念來,以指導(dǎo)用戶特定的Boot Lo
34、ader 設(shè)計與實現(xiàn)。因此,正確建立linux的移植的前提條件是具備一個與linux配套、易于使用的Bootloader,它能夠能夠正確完成硬件系統(tǒng)的初始化和linux 的引導(dǎo)。為能夠?qū)崿F(xiàn)正確引導(dǎo)linux系統(tǒng)的運行,以及當(dāng)編譯完內(nèi)核后,快速的下載內(nèi)核和文件系統(tǒng),uboot通過網(wǎng)口下載內(nèi)核和文件系統(tǒng)。同時,它也具有功能較為完善的命令集,對系統(tǒng)的軟硬件資源進(jìn)行合理的配置與管理。五、各個引導(dǎo)程序的特征及作用介紹1、x-loader是一級引導(dǎo)程序,系統(tǒng)上電后由CPU內(nèi)部ROM自動拷貝內(nèi)部RAM并執(zhí)行。主要作用為初始化CPU,拷貝U-BOOT到內(nèi)存中,然后把控制權(quán)交給U-BOOT2、U-BOOT是二級
35、引導(dǎo)程序,主要用于和用戶進(jìn)行交互,提供映像更新,引導(dǎo)內(nèi)核等功能六、boot-loader的編譯系統(tǒng)所有組成部分的源碼位于光盤的linux/source目錄下,用戶在進(jìn)行開發(fā)前需要把它們解壓到linux系統(tǒng)下tar xvzf x-load.tar.bz2 -C /opttar xvzf u-boot-1.3.3.tar.bz2 -C /optx-load編譯步驟:在打開終端,進(jìn)入/opt/x-load目錄;在終端依次輸入下面的命令:make omap3techv35xx_configmake等待編譯結(jié)束,生成x-load.bin;注意:x-load.bin不能夠直接燒寫到FLASH中,在燒寫之前
36、需要進(jìn)行轉(zhuǎn)化。轉(zhuǎn)化步驟:把編譯得到的x-load.bin拷貝到Linux的/opt/linux_host/目錄下 打開Linux下的終端,輸入下面的指令:./opt/linux_host/signGP /opt/linux_host/x-load.bin執(zhí)行完后在/opt/linux_host/目錄下會生成x-load.bin.ift;說明:x-load.bin.ift為燒寫FLASH時需要的x-load文件;u-boot編譯編譯步驟:在虛擬機(jī)里面打開終端,進(jìn)入/home/u-boot目錄;在終端依次輸入下面的命令:make omap3techv35xx_configmake等待編譯結(jié)束七、b
37、oot-loader燒寫1.u-boot燒寫u-boot的燒寫方法有好幾種,這里介紹我們可能會用到的兩種方法。1、從UART3燒寫u-boot的方法;2、對已經(jīng)燒寫好了u-boot的目標(biāo)板進(jìn)行u-boot更新的方法。1.1 通過UART3燒寫u-boot燒寫步驟:1 2、使用串口線一頭連接板子的P9另一頭連接PC機(jī)的串口1;另一串口線一頭連接板子的P3另一頭連接PC機(jī)的串口2(串口號可以根據(jù)實際情況來更改。使用一根交叉網(wǎng)線連接好板子和PC的網(wǎng)口;3、打開超級終端,選擇端口(和板子的P3端口相連的串口端口號,在這里是com2 設(shè)置相應(yīng)的參數(shù)如下,點確定打開: 4、把光盤中,實驗?zāi)夸浵碌腢artB
38、ootTool目錄拷貝到電腦上,運行應(yīng)用程序/UartBootTool/Utilities/DownloadUtility.exe如下圖 在Transport欄選擇使用的串口號(和板子的P9端口相連的串口端口號,在這里是com1在File欄點擊open,選擇。/UartBootTool/peripheral-boot-images/目錄下的u-boot.bin 文件如下圖: 點擊Download按鈕彈出下圖所示的確定對話框。 5、點擊確定按鈕,同時板子上電;如果正常,會看到下載進(jìn)度條在變動。 下載完后回彈出完成對話框。 6、u-boot.bin下載完后會自動啟動。在剛才打開的超級終端中可以看到
39、u-boot啟動后的信息。 如果是新板子,系統(tǒng)沒有配置過,會自動停止在命令行位置(如上圖;如果以前燒寫過u-boot,由于在FLASH中有配置信息,將會繼續(xù)啟動,需要立即點擊鍵盤使u-boot停下來。八、熟悉u-boot命令setenv ipaddr 57 (板子IP,根據(jù)實際情況設(shè)setenv serverip 66 (虛擬機(jī)的IP,根據(jù)實際情況設(shè)setenv netmask setenv bootdelay 3setenv ethaddr 00:50:c2:7e:8A:1Dsetenv gatewayip 192.168
40、.3.1 (網(wǎng)關(guān),根據(jù)實際情況設(shè)setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存設(shè)置好的參數(shù)實驗三 linux的移植、內(nèi)核、文件系統(tǒng)的生成與下載一、實驗?zāi)康?. 了解linux移植的基本過程,掌握內(nèi)核和文件系統(tǒng)的下載方法二、實驗內(nèi)容1. 學(xué)習(xí)linux移植的基本過程2. 學(xué)習(xí)
41、內(nèi)核和文件系統(tǒng)的生成與下載方法三、實驗設(shè)備1. PentiumII以上的PC機(jī)、EL-ARM860實驗箱四、linux的移植說明本實驗系統(tǒng)運行的linux版本是針對linux-2.6.28進(jìn)行移植的,它存放在/實驗軟件/source_sys/目錄內(nèi)。由于移植內(nèi)核所涉及的內(nèi)容較多,且也較復(fù)雜, 同時,在涉及到的中斷切換、內(nèi)存管理方面的復(fù)雜移植,一般也不必太過關(guān)心,網(wǎng)絡(luò)上有專門的非官方組織在完善該事情。我們所做的大多是把該移植好的內(nèi)核,讓它如何在自己的硬件系統(tǒng)上正常的運轉(zhuǎn)起來。因此,我們所做的移植也偏重于應(yīng)用。圖4-3-14.1. 內(nèi)核的目錄結(jié)構(gòu)Linux內(nèi)核主要由5個子系統(tǒng)組成:進(jìn)程調(diào)度子系統(tǒng)進(jìn)
42、程間通訊子系統(tǒng)內(nèi)存管理子系統(tǒng)虛擬文件系統(tǒng)子系統(tǒng)網(wǎng)絡(luò)接口子系統(tǒng)Linux內(nèi)核非常龐大,包括驅(qū)動程序在內(nèi)有上百兆。2.4.18內(nèi)核結(jié)構(gòu)圖如圖4-3-1。其主要結(jié)構(gòu)目錄:/arch子目錄包含了所有與硬件體系結(jié)構(gòu)相關(guān)的內(nèi)核移植代碼。其中每一個目錄都代表一種硬件平臺,對于每種平臺都應(yīng)該包括:boot: 包括啟動內(nèi)核所使用的部分或全部平臺的相關(guān)代碼。kernel:包括支持體系結(jié)構(gòu)特有的特征代碼lib:包括存放體系結(jié)構(gòu)特有的通用函數(shù)的實現(xiàn)代碼mm:包括存放體系結(jié)構(gòu)特有的內(nèi)存管理程序的實現(xiàn)mach-xxx:包括存放該處理器的移植代碼/Documentation子目錄包含有關(guān)內(nèi)核的許多非常詳細(xì)的文檔。/driv
43、ers子目錄包含內(nèi)核中所有的設(shè)備驅(qū)動程序。/fs 子目錄包含了所有的文件系統(tǒng)的代碼。/include 子目錄包含了建立內(nèi)核代碼時所需的大部分庫文件的頭文件,該模塊利用其他模塊重建內(nèi)核。同時,它也包括不同平臺需要的庫文件。/init子目錄包含了內(nèi)核的初始化代碼,內(nèi)核從此目錄下開始工作。/ipc 子目錄包含了內(nèi)核的進(jìn)程間通訊的代碼。/kernel 子目錄包含了主內(nèi)核的代碼,如進(jìn)程調(diào)度等。/lib 子目錄包含了通用的庫函數(shù)代碼等。/mm 子目錄包含了內(nèi)核的內(nèi)存管理代碼。/net 子目錄包含了內(nèi)核的網(wǎng)絡(luò)相關(guān)的代碼。/scripts 子目錄包含了配置內(nèi)核的一些腳本文件一般在每個目錄下,都有一個.depe
44、nd 文件和一個 Makefile 文件,這兩個文件都是編譯時使用的輔助文件,仔細(xì)閱讀這兩個文件對弄清各個文件這間的聯(lián)系和依托關(guān)系很有幫助;而且,在有的目錄下還有Readme 文件,它是對該目錄下的文件的一些說明,同樣有利于我們對內(nèi)核源碼的理解。因此,移植工作的重點就是移植arch目錄下的文件。4.2 內(nèi)核的移植4.2.1 設(shè)置目標(biāo)平臺和指定交叉編譯器在最上層的根目錄/Makefile文件中,首先要指定所移植的硬件平臺,以及所使用的交叉編譯器。改為如下:ARCH := armCROSS_COMPILE = arm-none-linux-gnueabi-也就是說,所移植的硬件平臺是ARM,所使用
45、的交叉編譯器是存放在目錄/usr/local/arm/arm-2007q3/bin/下的arm-none-linux-gnueabi-xxx等等工具。五、linux的內(nèi)核、文件系統(tǒng)編譯與下載5.1 編譯linux內(nèi)核編譯一份可以運行的linux,首先要對linux 進(jìn)行配置。一般是通過make menuconfig 或者make xconfig 來實現(xiàn)的。我們選擇make menuconfig,為了編譯最后得到的內(nèi)核文件zImage,我們需要如下幾步:make omap3_techv35xx_defconfig #使用默認(rèn)的配置編譯,make clean #這個命令不要每次都用,執(zhí)行后內(nèi)核編譯
46、時間很長(該命令用于清除以前構(gòu)造內(nèi)核時生成的所有目標(biāo)文件、模塊文件和臨時文件make menuconfig #查看配置情況make uImage等待編譯結(jié)束編譯內(nèi)核。編譯通過后,在目錄arch/arm/boot下生成uImage內(nèi)核文件。5.2 制作ubifs文件系統(tǒng)ubifs是新一代的flash文件系統(tǒng),其設(shè)計以及性能都優(yōu)越于YAFFS2,特別是工作在大頁MLC NAND FLASH上面,同時讀寫速度也比yaffs2高出很多,ubifs文件系統(tǒng)的寫入速度約為1.66M/s,讀出速度約為2.27M/s.同時ubhifs系統(tǒng)的高壓縮率也為生產(chǎn)安裝提高效率。在/home目錄下創(chuàng)建一個目錄命名為ub
47、i,找到光盤內(nèi)的rootfs.tar.bz2, mkfs.ubifs, ubinize, ubinize.cfg這四個文件復(fù)制到ubi目錄下解壓rootfs.tar.bz2,在終端下執(zhí)行 tar xvzf rootfs.tar.bz2 在當(dāng)前目錄生成rootfs目錄;在終端輸入下面的命令:./mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 812 -o ubifs.img./ubinize -o ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg等待一會,會建立好名為ubi.img的文件系統(tǒng)。圖4-3-2 圖4-3-2為
48、文件系統(tǒng)的目錄。5.3 內(nèi)核和文件系統(tǒng)的下載在WINDOWS下啟動超級終端,設(shè)置其(115200,8位數(shù)據(jù),1位停止位,無奇偶校驗;用交叉網(wǎng)線連接pc機(jī)和cpu網(wǎng)口用串口線連接實驗系統(tǒng)和PC機(jī)的串口。系統(tǒng)上電,在超級終端下進(jìn)入uboot界面5.3.1、設(shè)置板子的參數(shù):在超級終端下依次輸入下面的指令setenv ipaddr 57 (板子IP,根據(jù)實際情況設(shè)setenv serverip 66 (虛擬機(jī)的IP,根據(jù)實際情況設(shè)setenv netmask setenv bootdelay 3setenv ethaddr 00:5
49、0:c2:7e:8A:1Dsetenv gatewayip (網(wǎng)關(guān),根據(jù)實際情況設(shè)setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存設(shè)置好的參數(shù)5.3.2、在PC機(jī)上打開虛擬機(jī),運行。要求需要燒寫的x-load.bin.ift,u-boot.bin, u
50、Image,ubi.img已經(jīng)拷貝到虛擬機(jī)的/tftpboot目錄下 5.3.3、燒寫x-load,從FLASH啟動u-boot需要這個文件,所以如果是新板子必須燒寫;在超級終端下依次輸入下面的指令:tftpboot 0x81600000 x-load.bin.iftnand unlocknand erase 0 80000nand ecc swnand write.i 81600000 0 $(filesize等待燒寫完成。5.3.4、燒寫u-boot在超級終端下依次輸入下面的指令tftpboot 0x81600000 u-boot.binnand unlocknand erase 8000
51、0 160000nand ecc swnand write.i 81600000 80000 $(filesize等待燒寫完成,斷電。1.2 更新u-boot更新u-boot,是指原來已經(jīng)燒寫過u-boot,現(xiàn)在需要把修改過的u-boot燒寫進(jìn)去的過程。要求,板子還可以從FLASH啟動,否則需要按照1.1介紹的方法進(jìn)行燒寫。步驟: 2、使用串口線一頭連接板子的P3另一頭連接PC機(jī)的串口2(串口號可以根據(jù)實際情況來更改。使用一根交叉網(wǎng)線連接好板子和PC的網(wǎng)口;3、打開超級終端,選擇端口(和板子的P3端口相連的串口端口號,在這里是com2 設(shè)置相應(yīng)的參數(shù)如下,點確定打開: 4、給板子上電,板子自動
52、啟動。按鍵盤使得板子進(jìn)入u-boot的命令行,如下圖: 5、在PC機(jī)上打開虛擬機(jī),運行。要求需要燒寫的x-load.bin.ift,u-boot.bin,uImage,ubi.img已經(jīng)拷貝到虛擬機(jī)的/tftpboot目錄下 6、設(shè)置板子參數(shù)(如果已設(shè)置好,跳過此步在超級終端下依次輸入下面的指令setenv ipaddr 57 (開發(fā)板子IP,根據(jù)實際情況設(shè)setenv serverip 58 (虛擬機(jī)的IP,根據(jù)實際情況設(shè)setenv netmask setenv bootdelay 6setenv ethaddr 00:
53、50:c2:7e:8A:1Dsetenv gatewayip (網(wǎng)關(guān),根據(jù)實際情況設(shè)setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv (保存設(shè)置好的參數(shù)7、在超級終端下依次輸入下面的指令tftpboot 0x81600000 u-boot.binnand un
54、locknand erase 80000 160000nand ecc swnand write.i 81600000 80000 $(filesize等待燒寫完成,斷電。1.3 u-boot 啟動模式設(shè)置設(shè)置8寸屏從FLASH上啟動,進(jìn)入U-boot后輸入:setenv bootargs console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs video=omapfb:mode:8inch_LCDsetenv bootcmd nand read.i 80300000 280000 210000; bootm 80300000saveenv設(shè)置3.5寸屏從FLASH上啟動,進(jìn)入U-boot后輸入:setenv bootargs console=ttyS2,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國串聯(lián)恒功率電伴熱帶數(shù)據(jù)監(jiān)測研究報告
- 統(tǒng)編版二年級語文下冊期中達(dá)標(biāo)測試卷(提升版)(含答案)
- 2025年《義務(wù)教育小學(xué)道德與法治課程標(biāo)準(zhǔn)測試卷2022版》測試題庫及答案
- 2022-2023學(xué)年廣東省廣州市天河區(qū)匯景實驗學(xué)校七年級(下)期中數(shù)學(xué)試卷(含答案)
- 遺產(chǎn)繼承遺囑效力確認(rèn)合同(2篇)
- 采購與施工分包合同(2篇)
- 物流配送路徑優(yōu)化對比表
- 開幕致辭與企業(yè)愿景演講實錄
- 蘇武牧羊的紅色故事征文
- 抵押房產(chǎn)借款合同
- 項目一任務(wù)一《家宴菜單設(shè)計》課件浙教版初中勞動技術(shù)八年級下冊
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗記錄、食品安全事故處置保證食品安全規(guī)章制度
- 車站信號自動控制課件:進(jìn)站信號機(jī)點燈電路
- 瀝青基材料在石油化工設(shè)備熱絕緣中的開發(fā)
- 2024屆中考語文第一輪復(fù)習(xí)《綜合性學(xué)習(xí)》教學(xué)課件
- 2024湖南株洲市天元區(qū)面向社會招聘社區(qū)專職工作者筆試歷年典型考題及考點剖析附答案帶詳解
- 煤層底板采動破裂深度壓水
- 新人教小學(xué)數(shù)學(xué)六年級下冊《成數(shù)》示范課教學(xué)課件
- JTS-304-2019水運工程水工建筑物檢測與評估技術(shù)規(guī)范
- 巖土工程領(lǐng)域的前沿技術(shù)與未來發(fā)展
- CAR-T細(xì)胞療法行業(yè)營銷策略方案
評論
0/150
提交評論