第5章 嵌入式Linux開發(fā)環(huán)境的搭建ppt課件_第1頁
第5章 嵌入式Linux開發(fā)環(huán)境的搭建ppt課件_第2頁
第5章 嵌入式Linux開發(fā)環(huán)境的搭建ppt課件_第3頁
第5章 嵌入式Linux開發(fā)環(huán)境的搭建ppt課件_第4頁
第5章 嵌入式Linux開發(fā)環(huán)境的搭建ppt課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第5章 嵌入式Linux開發(fā)環(huán)境的搭建嵌入式開發(fā)環(huán)境的搭建U-Boot嵌入式交叉編譯環(huán)境的搭建 交叉開發(fā)概念模型minicomtftp 主機(jī)目的板下載內(nèi)核映像各種銜接方式掛接NFS文件系統(tǒng) Linux系統(tǒng)Cross-Tools-ChainLinux內(nèi)核網(wǎng)線串口線并口線USB電纜JTAG電纜minicom根文件系統(tǒng)BootLoaderMinicomLinux下的Minicom很像Windows下面的超級終端,利用Minicom 作為被開發(fā)目的板的終端,實(shí)現(xiàn)目的板相關(guān)信息的顯示與交互,適于在Linux經(jīng)過超級終端對嵌入式設(shè)備的管理以及對嵌入操作系統(tǒng)的晉級。 tftp效力tftp是用來下載遠(yuǎn)程文件的

2、最簡單網(wǎng)絡(luò)協(xié)議,它基于UDP協(xié)議而實(shí)現(xiàn)。嵌入式Linux的tftp開發(fā)環(huán)境包括兩個(gè)方面:一是嵌入式Linux宿主機(jī)的tftp-server支持二是嵌入式linux目的機(jī)的tftp-client支持。配置宿主機(jī)上的tftp效力,主要為以后下載相應(yīng)的內(nèi)核映像和文件系統(tǒng)做預(yù)備。在嵌入式Linux的開發(fā)過程中,開發(fā)者需求在Linux效力器上進(jìn)展一切的軟件開發(fā),交叉編譯后,通用tftp方式將可執(zhí)行文件下載到嵌入式系統(tǒng)運(yùn)轉(zhuǎn)。 DHCP效力目的板的Bootloader或者內(nèi)核都需求分配IP地址。這可以經(jīng)過動態(tài)主機(jī)配置協(xié)議DHCP Dynamic Host Configuration Protocol或者BO

3、OTP協(xié)議實(shí)現(xiàn)。BOOTP協(xié)議可以給計(jì)算機(jī)分配IP地址并且經(jīng)過網(wǎng)絡(luò)獲取映像文件的途徑;DHCP那么是向后兼容BOOTP的協(xié)議拓展。Linux操作系統(tǒng)的主機(jī)普通包含dhcpd的軟件包,可以配置DHCP效力。配置效力的操作需求root用戶的權(quán)限。busyboxbusybox是構(gòu)造文件系統(tǒng)最常用的軟件工具包,它被非常籠統(tǒng)地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀,由于它將許多常用的Linux命令和工具結(jié)合到了一個(gè)單獨(dú)的可執(zhí)行程序busybox中。雖然與相應(yīng)的GNU工具比較起來,busybox所提供的功能和參數(shù)略少,但在比較小的系統(tǒng)例如啟動盤或者嵌入式系統(tǒng)中曾經(jīng)足夠了。busybox在設(shè)計(jì)上就充分思索了

4、硬件資源受限的特殊任務(wù)環(huán)境。它采用一種很巧妙的方法減少本人的體積:一切的命令都經(jīng)過“插件的方式集中到一個(gè)可執(zhí)行文件中,在實(shí)踐運(yùn)用過程中經(jīng)過不同的符號鏈接來確定究竟要執(zhí)行哪個(gè)操作。采用單一執(zhí)行文件的方式最大限制地共享了程序代碼,甚至連文件頭、內(nèi)存中的程序控制塊等其他系統(tǒng)資源都共享了,對于資源比較緊張的系統(tǒng)來說,真是最適宜不過了。在busybox的編譯過程中,可以非常方便地加減它的“插件,最后的符號鏈接也可以由編譯系統(tǒng)自動生成。 NFS文件系統(tǒng)1 NFS為Network File System的簡稱,最早是由Sun公司提出開展起來的,其目的就是讓不同的機(jī)器、不同的操作系統(tǒng)之間經(jīng)過網(wǎng)絡(luò)可以彼此共享文

5、件。NFS可以讓不同的主機(jī)經(jīng)過網(wǎng)絡(luò)將遠(yuǎn)端的NFS效力器共享出來的文件安裝到本人的系統(tǒng)中,從客戶端看來,運(yùn)用NFS的遠(yuǎn)端文件就像是運(yùn)用本地文件一樣。在嵌入式中運(yùn)用NFS會使運(yùn)用程序的開發(fā)變得非常方便,并且不用反復(fù)地進(jìn)展燒寫映像文件。NFS的運(yùn)用分為效力端和客戶端,其中效力端是提供要共享的文件而客戶端那么經(jīng)過掛載“mount這一動作來實(shí)現(xiàn)對共享文件的訪問操作。下面主要引見NFS效力端的運(yùn)用。在嵌入式開發(fā)中,通常NFS效力端在宿主機(jī)上運(yùn)轉(zhuǎn),而客戶端在目的板上運(yùn)轉(zhuǎn)。NFS文件系統(tǒng)2NFS效力端是經(jīng)過讀入它的配置文件“/etc/exports來決議所共享的文件目錄的。在這個(gè)配置文件中,每一行都代表一項(xiàng)要

6、共享的文件目錄以及所指定的客戶端對它的操作權(quán)限??蛻舳丝梢愿鶕?jù)相應(yīng)的權(quán)限,對該目錄下的一切目錄文件進(jìn)展訪問。 共享的目錄 客戶端主機(jī)稱號或IP 參數(shù)1,參數(shù)2在這里,主機(jī)名或IP是可供共享的客戶端主機(jī)名或IP,假設(shè)對一切的IP都可以訪問,那么可用“*表示。這里的參數(shù)有很多種組合方式 U-BootLinux啟動過程自解壓、跳到入口、初始化硬件、數(shù)據(jù)構(gòu)造、驅(qū)動程序、掛接根文件系統(tǒng)。從inittab獲取運(yùn)轉(zhuǎn)級別,檢測與初始化系統(tǒng)環(huán)境,啟動與級別相應(yīng)的效力項(xiàng)、啟動終端等待用戶登錄;祖先進(jìn)程,控制其他進(jìn)程。嵌入式系統(tǒng)由Bootloader完成從預(yù)定地址執(zhí)行(0 xFFFF0000),硬件初始化,跳到啟動

7、盤第一扇區(qū)將Linux內(nèi)核映像裝入內(nèi)存,跳到內(nèi)核映像入口。Bootloader的概念Boot Loader 就是在操作系統(tǒng)內(nèi)核運(yùn)轉(zhuǎn)之前運(yùn)轉(zhuǎn)的一段小程序。經(jīng)過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)適宜的形狀,以便為最終調(diào)用操作系統(tǒng)內(nèi)核預(yù)備好正確的環(huán)境。通常,Boot Loader 是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的Boot Loader 幾乎是不能夠的。雖然如此,我們依然可以對Boot Loader 歸納出一些通用的概念來,以指點(diǎn)用戶特定的Boot Loader 設(shè)計(jì)與實(shí)現(xiàn)。Bootloader的概

8、念Bootloader是一段可執(zhí)行程序,完成的主要功能是將可執(zhí)行文件普通是操作系統(tǒng)搬移到內(nèi)存中,然后將控制權(quán)交給這段可執(zhí)行文件操作系統(tǒng)。cpuloaderflashOSmemoryOSBootloader的任務(wù)方式一下載方式對研發(fā)人員來說,Bootloader普通需求任務(wù)在這種方式下,特別是調(diào)試內(nèi)核或者Bootloader本身的時(shí)候。經(jīng)過串口終端與Bootloader進(jìn)展交互,可以操作系統(tǒng)硬件。比如經(jīng)過網(wǎng)口或者串口下載內(nèi)核,燒寫Flash等等。Bootloader的任務(wù)方式二啟動加載方式嵌入式產(chǎn)品發(fā)布的時(shí)候,Bootloader必需任務(wù)在該方式下。這種情況下,Bootloader必需完成硬件自

9、檢、配置,并從Flash中將內(nèi)核拷貝到SDRAM中,并跳轉(zhuǎn)到內(nèi)核入口,實(shí)現(xiàn)自啟動,而不需求人為的干涉。Bootloader的安裝媒介系統(tǒng)上電時(shí)或復(fù)位以后,都從芯片廠商預(yù)先安排的一個(gè)地址處取第一條指令執(zhí)行對S3C2410芯片,從0 x0處開場。由于上電或復(fù)位需求運(yùn)轉(zhuǎn)的第一段程序就是Bootloader,故必需把Bootloader放入該地址。將Bootloader寫入固態(tài)存儲設(shè)備,永久保管,系統(tǒng)上電后將自動執(zhí)行Bootloader。Bootloader的燒寫B(tài)ootloader可以配置系統(tǒng)。沒有Bootloader,系統(tǒng)就不能啟動。Bootloader可以實(shí)現(xiàn)自燒寫。但是系統(tǒng)中沒有還沒有Boot

10、loader的時(shí)候,怎樣啟動?JTAG燒寫。典型的Flash存儲空間分配圖bootloader啟動參數(shù)內(nèi)核根文件系統(tǒng)BootloaderMonitor描 述X86ARMPowerPCLILO否Linux磁盤引導(dǎo)程序是否否GRUB否GNU的LILO替代程序是否否Loadlin否從DOS引導(dǎo)Linux是否否ROLO否從ROM引導(dǎo)Linux而不需要BIOS是否否Etherboot否通過以太網(wǎng)卡啟動Linux系統(tǒng)的固件是否否LinuxBIOS否完全替代BUIS的Linux引導(dǎo)程序是否否BLOB是LART等硬件平臺的引導(dǎo)程序否是否U-Boot是通用引導(dǎo)程序是是是RedBoot是基于eCos的引導(dǎo)程序是是

11、是Vivi是Mizi公司針對SAMSUNG的ARM CPU設(shè)計(jì)的引導(dǎo)程序否是否提供較多命令接口U-Boot簡介 1999年由德國DENX軟件工程中心的Wolfgang Denk發(fā)起,全稱Universal Bootloader。特點(diǎn):支持多種硬件構(gòu)架:包括ARM、x86、PPC、MIPS、m68k、NIOS、Blackfin支持多種操作系統(tǒng):包括Linux、VxWorks、NETBSD、QNX、RTEMS、ARTOS、LynxOS支持多達(dá)216種以上的開發(fā)板開放源代碼,遵照GPL條款易于移植、調(diào)試官方網(wǎng)站:denx.de/wiki/U-Boot/WebHomeU-Boot目錄構(gòu)造board 目

12、的板相關(guān)文件,主要包含硬件初始化、SDRAM初始化common 獨(dú)立于處置器體系構(gòu)造的通用代碼 cpu與處置器相關(guān)的文件,包含cpu初始化、串口初始化、中斷初始化等代碼doc U-Boot的闡明文檔drivers 設(shè)備驅(qū)動代碼,如Flash驅(qū)動、網(wǎng)卡驅(qū)動、串口驅(qū)動等net 網(wǎng)絡(luò)功能的上層文件,實(shí)現(xiàn)各種協(xié)議,如nfs、tftp、arp等U-Boot目錄構(gòu)造fs U-Boot支持的文件系統(tǒng)的實(shí)現(xiàn),如cramfs、fat、ext2、jffs2等include U-Boot運(yùn)用的頭文件,包括不同硬件構(gòu)架的頭文件lib_xxx 處置器相關(guān)文件,如我們要運(yùn)用的lib_arm,與arm體系構(gòu)造相關(guān)的文件大多

13、數(shù)引導(dǎo)系統(tǒng)都分為 stage1 和 stage2 兩大部分。依賴于處置器體系構(gòu)造和板級初始化的代碼通常都放在 stage1 中,用匯編實(shí)現(xiàn);而 stage2 那么通常用C言語來實(shí)現(xiàn),這樣可以實(shí)現(xiàn)更復(fù)雜的功能,同時(shí)代碼具有更好的可讀性和可移植性。 18引導(dǎo)系統(tǒng)的 stage1:1硬件設(shè)備初始化。2為加載引導(dǎo)系統(tǒng)的 stage2 預(yù)備 RAM 空間。3拷貝引導(dǎo)系統(tǒng)的 stage2 到 RAM 空間中。4設(shè)置好堆棧。5跳轉(zhuǎn)到 stage2 的 C 入口點(diǎn)引導(dǎo)系統(tǒng)的 stage2 :1初始化本階段要用到的硬件設(shè)備。2檢測系統(tǒng)內(nèi)存映射(memory map)。3將內(nèi)核映像和根文件系統(tǒng)映像從 flash

14、上讀到 RAM 空間中。4為內(nèi)核設(shè)置啟動參數(shù)。5調(diào)用內(nèi)核。U-Boot啟動可分為兩個(gè)階段U-Boot啟動流程之stage1第一階段的代碼位于cpu/arm920t/start.S中,依次完成以下功能:1、系統(tǒng)上電,進(jìn)入svc方式2、封鎖看門狗,制止一切中斷3、進(jìn)展初級硬件初始化4、將本身代碼拷貝到SDRAM中5、設(shè)置堆棧6、清空bss段7、跳轉(zhuǎn)到C言語實(shí)現(xiàn)的stage2中從NAND Flash啟動經(jīng)典2410實(shí)驗(yàn)箱不帶NOR Flash, 只能從NAND Flash啟動。由硬件實(shí)現(xiàn) 選擇從NAND啟動。系統(tǒng)上電或者復(fù) 位時(shí)NAND Flash控制器自動將NAND Flash的前4KB拷貝到一段

15、內(nèi)置RAM,并將這段RAM映射到0 x00000000處。NOR Flash與NAND Flash比較NOR FlashNAND Flash接口時(shí)序同SRAM,易使用地址數(shù)據(jù)線復(fù)用,數(shù)據(jù)位較窄讀取速度較快讀取速度較慢擦除速度慢,以64128KB的塊為單位擦除速度快,以832KB的塊為單位寫入速度慢(因?yàn)橐话阋炔脸懭胨俣瓤祀S機(jī)存取速度較快,支持XIP,適用于代碼存儲。在嵌入式系統(tǒng)中,常用于存放引導(dǎo)程序、根文件系統(tǒng)等。順序讀取速度較快,隨機(jī)存取速度慢,適用于數(shù)據(jù)存儲(如大容量的多媒體應(yīng)用)。在嵌入式系統(tǒng)中,常用于存放用戶文件系統(tǒng)等。單片容量較小,132MB單片容量較大,8128MB,提高了單

16、元密度最大擦寫次數(shù)10萬次最大擦寫次數(shù)100萬次進(jìn)入SVC方式start_code:/* set the cpu to SVC32 mode*/mrs r0,cpsrbic r0,r0,#0 x1forr r0,r0,#0 xd3msr cpsr,r0看門狗和中斷處置ldr r0, =pWTCONmov r1, #0 x0str r1, r0/* mask all IRQs by setting all bits in the INTMR - default*/mov r1, #0 xffffffffldr r0, =INTMSKstr r1, r0ldr r1, =0 x3ffldr r0,

17、 =INTSUBMSKstr r1, r0copy_myself的實(shí)現(xiàn)copy_myself:.ldr r0, =UBOOT_RAM_BASE; 0 x33f80000mov r1, #0 x0mov r2, #0 x30000bl nand_read_wholetst r0, #0 x0beq ok_nand_read1: b 1bnand_read_whole用C言語實(shí)現(xiàn),根據(jù)ARM過程調(diào)用規(guī)范AAPCS,參數(shù)傳送如下:R0C程序的第一個(gè)參數(shù),在函數(shù)中被定義為讀取的目的地址R1C程序的第二個(gè)參數(shù),在函數(shù)中被定義為讀取的源地址R2C程序的第三個(gè)參數(shù),在函數(shù)中被定義為讀取數(shù)據(jù)塊的大小nand_

18、read_whole的原型如下,在board/up2410/nand.c中實(shí)現(xiàn):int nand_read_whole(unsigned char *buf, unsigned long start_addr, int size)假設(shè)讀取勝利,函數(shù)前往0,否那么前往1。根據(jù)AAPCS,前往結(jié)果放在r0中。nand_read_wholeint nand_read_whole(unsigned char *buf, unsigned long start_addr, int size).while(i 9) & 0 xff;rNFADDR = (i 17) & 0 xff;rNFADDR = (i

19、 25) & 0 xff;NF_WAITRB();for(j=0; j bd = (bd_t*)(char*)gd - sizeof(bd_t);memset (gd-bd, 0, sizeof (bd_t);gd是全局變量的一個(gè)指針,一直保管在r8中。global_data的成員大多是開發(fā)板的根本設(shè)置,如串口波特率、設(shè)備序列號、mac地址、啟動參數(shù)存儲地址等。U-Boot啟動流程之stage2調(diào)用初始化序列:init_fnc_t *init_sequence = board_init,/ board/up2410/up2410.c,GPIO、PLL及 內(nèi)核啟動參數(shù)存放地址設(shè)置interrup

20、t_init,/cpu/arm920t/s3c24x0/interrupts.c,初始化時(shí)鐘中斷env_init,/common/env_nand.c,設(shè)置缺省環(huán)境變量init_baudrate,/lib_arm/board.c,設(shè)置串口波特率serial_init, /common/serial.c,初始化串口硬件層面display_banner, /lib_arm/board.c,打印U-Boot信息dram_init, / board/up2410/up2410.c,初始化SDRAM;U-Boot啟動流程之stage2進(jìn)入無限循環(huán):for (;) main_loop ();main_lo

21、op在common/main.c中實(shí)現(xiàn)。它經(jīng)過串口和U-Boot進(jìn)展交互,以便引導(dǎo)內(nèi)核或進(jìn)展其他參數(shù)的修正、設(shè)置。U-Boot啟動Linux內(nèi)核1/3ARM Linux Kernel Boot Requirements :設(shè)置machine type number定義在include/asm-arm/mach-types.h中#define MACH_TYPE_SMDK2410 193賦值gd-bd-bi_arch_number = MACH_TYPE_SMDK2410;把該值設(shè)置到環(huán)境變量中。得到該值bd_t *bd = gd-bd;int machid = bd-bi_arch_numbe

22、r;U-Boot啟動Linux內(nèi)核2/3do_boot_linux函數(shù),在lib_arm/armlinux.c中實(shí)現(xiàn)。設(shè)置內(nèi)核啟動參數(shù):setup_start_tag (bd);setup_serial_tag (¶ms);setup_revision_tag (¶ms);setup_memory_tags (bd);setup_commandline_tag (bd, commandline);setup_videolfb_tag (gd_t *) gd);setup_end_tag (bd);內(nèi)核啟動參數(shù)存放地址:0 x30000100,在board/up2410/up24

23、10.h中設(shè)置。tag構(gòu)造體struct tag struct tag_header hdr;union struct tag_corecore;struct tag_mem32mem;struct tag_videotextvideotext;struct tag_ramdiskramdisk;struct tag_initrdinitrd;struct tag_serialnrserialnr;struct tag_revisionrevision;struct tag_videolfbvideolfb;struct tag_cmdlinecmdline;struct tag_memclk

24、memclk; u;struct tag_header u32 size;u32 tag;tag_headerstruct tag_header u32 size;u32 tag;size是tag_header加上后面的u結(jié)合體的字的大小而不是字節(jié)大小tag的定義如右邊所示。tag_header中tag的定義:#define ATAG_CORE 0 x54410001#define ATAG_NONE 0 x00000000#define ATAG_MEM 0 x54410002#define ATAG_RAMDISK 0 x54410004#define ATAG_INITRD 0 x544

25、10005#define ATAG_INITRD2 0 x54420005#define ATAG_SERIAL 0 x54410006#define ATAG_CMDLINE 0 x54410009Bootloader和內(nèi)核中的定義是一致的,以實(shí)現(xiàn)參數(shù)傳送。為內(nèi)核設(shè)置taglistparams是一個(gè)指向tag構(gòu)造體的指針:static void setup_start_tag (bd_t *bd)params = (struct tag *) bd-bi_boot_params;params-hdr.tag = ATAG_CORE;params-hdr.size = tag_size (ta

26、g_core);params-u.core.flags = 0;params-u.core.pagesize = 0;params-u.core.rootdev = 0;params = tag_next (params);#define tag_next(t)(struct tag *)(u32 *)(t) + (t)-hdr.size)為內(nèi)核設(shè)置tagliststatic void setup_memory_tags (bd_t *bd)int i;for (i = 0; i hdr.tag = ATAG_MEM;params-hdr.size = tag_size (tag_mem32)

27、;params-u.mem.start = bd-bi_drami.start;params-u.mem.size = bd-bi_drami.size;params = tag_next (params);.U-Boot啟動Linux內(nèi)核3/3theKernel函數(shù)指針:聲明:void (*theKernel)(int zero, int arch, uint params);賦值:theKernel = (void (*)(int, int, uint)ntohl(hdr-ih_ep);關(guān)于入口地址mkimag中,對入口地址進(jìn)展設(shè)置:case e:ep = strtoul (*+argv,

28、 (char *)&ptr, 16);if (!eflag) ep = addr;/* If XIP, entry point must be after the U-Boot header */if (xflag)ep += sizeof(image_header_t);hdr-ih_ep = htonl(ep);跳轉(zhuǎn)到內(nèi)核入口處前面曾經(jīng)從環(huán)境變量中讀出了machine type number,設(shè)置好了內(nèi)核啟動所需參數(shù),只需求跳轉(zhuǎn)到內(nèi)核入口處就可以了:theKernel (0, machid, bd-bi_boot_params);根據(jù)AAPCS,r0、r1和r2中分別放置了0、machid

29、和啟動參數(shù)的地址。U-Boot的運(yùn)用1/31、printenv 打印環(huán)境變量打印U-Boot的環(huán)境變量,包括串口波特率、ip地址、mac地址、內(nèi)核啟動參數(shù)、效力器ip地址等等。2、setenv 設(shè)置環(huán)境變量對環(huán)境變量的值進(jìn)展設(shè)置,保管在SDRAM中,但不寫入Flash。這樣系統(tǒng)掉電以后設(shè)置的環(huán)境變量就不存在了。3、saveenv 保管環(huán)境變量將環(huán)境變量寫入Flash,永久保管。掉電以后不消逝。U-Boot的運(yùn)用2/34、ping 測試網(wǎng)絡(luò)命令ping命令用于測試目的板的網(wǎng)絡(luò)能否通暢。格式:ping + ipaddr5、tftp 經(jīng)過tftp協(xié)議下載文件至SDRAM將tftp效力器上的文件下載到

30、指定的地址,速度快。格式:tftp + 存放地址 + 文件名6、loadb 經(jīng)過串口下載二進(jìn)制文件在目的板不具備網(wǎng)絡(luò)功能的時(shí)候,可以配合超級終端下載二進(jìn)制文件至內(nèi)存中。缺陷是速度慢。格式:loadb + 存放地址U-Boot的運(yùn)用3/37、bootm 引導(dǎo)內(nèi)核先將內(nèi)核下載到SDRAM中經(jīng)過tftp命令或者loadb命令,然后執(zhí)行bootm命令引導(dǎo)內(nèi)核。格式:bootm + 內(nèi)核地址8、help或者? 查看U-Boot支持的命令及其作用。用U-Boot啟動Linux內(nèi)核經(jīng)典2410開發(fā)板SDRAM空間分布0 x30000000參數(shù)0 x30000100內(nèi)核0 x30008000u-boot.bi

31、n0 x33f80000uboot內(nèi)存空間0 x30008040用U-Boot啟動Linux內(nèi)核1、下載u-boot.bin到SDRAM的0 x30008000處tftp 0 x30008000 uImage2、啟動內(nèi)核bootm 0 x30008000U-Boot移植平臺移植部分串口、Flash、網(wǎng)絡(luò)接口等硬件U-Boot 源代碼移植任務(wù)部分用戶運(yùn)用接口交叉編譯U-Boot移植主要步驟建立本人的開發(fā)板類型 Makefile 修正程序鏈接地址 board/s3c2410/config.mk 修正中斷制止的部分 /cpu/arm920t/start.S 由于在fs2410開發(fā)板啟動時(shí)是直接從na

32、nd flash加載代碼,所以應(yīng)該啟動代碼 /cpu/arm920t/start.S 修正內(nèi)存配置board/fs2410/lowlevel_init.S 參與nand flash讀函數(shù)board/fs2410/nand_read.c 參與nand flash的初始化函數(shù)board/fs2410/fs2410.c 修正外設(shè)控制器相關(guān)宏board/fs2410/fs2410.c 提供nand flash相關(guān)宏定義include/configs/fs2410.h 參與nand flash設(shè)備include/linux/mtd/nand_ids.h 設(shè)置nand flash環(huán)境common/env_

33、nand.c vivi1. vivi簡介vivi是由韓國mizi公司為ARM處置器系列設(shè)計(jì)的一個(gè)bootloader。它同樣支持啟動加載方式和下載任務(wù)方式。在下載方式下,vivi為用戶提供一個(gè)命令行人機(jī)接口,經(jīng)過這個(gè)人機(jī)接口可以運(yùn)用vivi提供的一些命令。假設(shè)嵌入式系統(tǒng)沒有鍵盤和顯示,那么可以利用vivi中的串口,將其和宿主機(jī)銜接起來,利用宿主機(jī)中的串口軟件 如windows中的超級終端或者Linux中的minicom來控制。 vivi文件構(gòu)造代碼包括arch,init,lib,drivers和include等幾個(gè)目錄,共200多條文件vivi的配置和編譯 #make distclean。去除一些早先生成的無用的目的文件。#make menuconfig。然后可以根據(jù)菜單中的信息進(jìn)展配置。make命令開場編譯 vivivivi3. vivi的配置和編譯v

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論