999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

U-Boot在S5PV210上的分析及移植

2016-09-20 08:14:28馮寶祥鄧人銘
現(xiàn)代計(jì)算機(jī) 2016年21期
關(guān)鍵詞:嵌入式

馮寶祥,鄧人銘

(廣州粵嵌通信科技股份有限公司,廣州 510663)

U-Boot在S5PV210上的分析及移植

馮寶祥,鄧人銘

(廣州粵嵌通信科技股份有限公司,廣州 510663)

U-Boot是一種在嵌入式平臺上使用非常廣泛的Bootloader,而S5PV210微處理器的啟動(dòng)過程比較復(fù)雜。以GEC210為實(shí)驗(yàn)平臺,分析U-Boot的啟動(dòng)過程,并提出在GEC210平臺上的移植方法。應(yīng)用結(jié)果表明,U-Boot在GEC210開發(fā)板上運(yùn)行良好,可以成功地引導(dǎo)Linux2.6.35.7內(nèi)核。

U-Boot;S5PV210;GEC210;移植

0 引言

U-Boot是一種通用的Bootloader,是遵循GPL條款的開放源碼項(xiàng)目,由德國DENX小組開發(fā)。U-Boot支持多種架構(gòu)的CPU,如X86、ARM、PowerPC、MIPS等;也支持Linux、VxWorks、WinCE等多種嵌入式操作系統(tǒng)。U-Boot代碼開源、穩(wěn)定、可配置性及可移植性強(qiáng),所以在嵌入式平臺中是一種應(yīng)用比較廣泛的啟動(dòng)代碼。

1 GEC210啟動(dòng)過程概述

GEC210是廣州粵嵌通信科技股份有限公司開發(fā)的一款基于ARM架構(gòu)Cortex-A8內(nèi)核的開發(fā)平臺,該硬件平臺采用三星公司的S5PV210微處理器作為主控芯片,S5PV210是一款高效率、高性能、低功耗的32位RISC微處理器,主頻可以工作在1GHz,而且?guī)в胸S富的外圍接口。GEC210開發(fā)板的硬件框架見圖1。

在GEC210平臺上加載啟動(dòng)嵌入式Linux系統(tǒng)主要分成5個(gè)步驟:

①上電自啟動(dòng)執(zhí)行S5PV210芯片內(nèi)部iROM中固化的BL0引導(dǎo)程序;

②BL0將Nand Flash中U-Boot的第一階段代碼BL1拷貝到S5PV210內(nèi)部的iRAM中,并跳轉(zhuǎn)到iRAM中執(zhí)行BL1,BL1初始化了DDR2內(nèi)存;

③BL1將Nand Flash中的U-Boot第二階段代碼BL2拷貝到DDR2內(nèi)存中,并跳轉(zhuǎn)到DDR2內(nèi)存中執(zhí)行BL2;

④BL2將Nand Flash中的Linux內(nèi)核映像拷貝到DDR2內(nèi)存中,并在DDR2內(nèi)存中解壓及啟動(dòng)內(nèi)核;

⑤內(nèi)核加載完畢后,掛載根文件系統(tǒng),并啟動(dòng)執(zhí)行默認(rèn)的Linux應(yīng)用程序。

圖1 GEC210開發(fā)板的框架圖

2 S5PV210內(nèi)部BL0的啟動(dòng)過程

S5PV210 CPU內(nèi)部自帶一個(gè)64KB的iROM和一個(gè)96KB的iRAM,芯片出廠時(shí)在iROM中已經(jīng)固化了一個(gè)基本的啟動(dòng)代碼,即BL0,BL0不需要用戶修改。S5PV210支持多種啟動(dòng)方式,如:Nor Flash、Nand Flash、One Nand,Uart、USB、SD卡等。啟動(dòng)方式通過S5PV210的外部引腳設(shè)定,本文講述的U-Boot移植和分析選擇Nand Flash啟動(dòng)方式。S5PV210上電啟動(dòng)時(shí)運(yùn)行BL0,并由BL0判斷啟動(dòng)方式。BL0的主要工作內(nèi)容如下:

①關(guān)閉看門狗定時(shí)器(watchdog timer)。

②初始化I cache(Instruction cache)。

③初始化iRAM中的棧和堆,注冊異常向量表等。

④初始化系統(tǒng)時(shí)鐘PLL。

⑤判斷啟動(dòng)設(shè)備。

⑥檢查BL1的校驗(yàn)和,如果正確,就從Nand Flash中拷貝U-Boot前16kB的BL1到iRAM中。

⑦執(zhí)行iRAM中的BL1代碼。

3 U-Boot的第一階段代碼BL1

U-Boot代碼一般分成兩個(gè)部分,分別為stage1,即BL1和 stage2即 BL2。其中 BL1源碼文件為/cpu/ s5pc11x/start.S和/board/samsung/smdkc110/lowlevel_init. S。BL1是使用ARM匯編語言編寫的源代碼,主要完成CPU級的初始化工作,如:

①關(guān)閉看門狗和中斷。②初始化系統(tǒng)時(shí)鐘。

③初始化DDR2內(nèi)存。

④初始化DDR2內(nèi)存中的stack。⑤初始化串口。⑥將BSS段清0。

⑦將Nand Flash中的BL2拷貝到DDR2內(nèi)存。

⑧跳轉(zhuǎn)到DDR2內(nèi)存中,執(zhí)行BL2中的start_armboot()函數(shù)。

將BL2拷貝到DDR2內(nèi)存后,在/cpu/s5pc11x/start. S源文件中調(diào)用start_armboot()函數(shù),進(jìn)入U(xiǎn)-Boot的第二階段。BL1跳轉(zhuǎn)到BL2的代碼如下:

ldr pc,_start_armboot_start_armboot:.word start_armboot

4 U-Boot第二階段代碼BL2

BL2代碼的源文件是/lib_arm/board.c,start_armboot()函數(shù)是BL2的入口。主要完成板級的初始化,如:

①初始化U-Boot的兩個(gè)結(jié)構(gòu)體gd_t和bd_t,用來存放U-Boot的全局信息和GEC210開發(fā)板信息。

②初始化網(wǎng)卡。

③初始化LCD顯示屏。

④初始化I2C總線接口。

⑤進(jìn)入main_loop()循環(huán),接收用戶輸入U(xiǎn)-Boot命令,并根據(jù)命令進(jìn)行相應(yīng)的處理。

⑥用戶不輸入U(xiǎn)-Boot命令,則在默認(rèn)計(jì)時(shí)等待時(shí)刻到來后執(zhí)行bootcmd命令,將Linux內(nèi)核映像uImage 從Nand Flash拷貝到DDR2內(nèi)存,并解壓啟動(dòng)內(nèi)核。

在include/configs/smdkv210single.h頭文件中,設(shè)置U-Boot的默認(rèn)啟動(dòng)命令bootcmd:

#define CONFIG_BOOTCOMMAND "nand read 0x30008000 0x600000 0x500000;bootm 0x30008000"

該bootcmd命令的主要作用是將Nand Flash中0x600000地址開始的uImage(大小不超過5M Byte)拷貝到DDR2內(nèi)存的0x30008000地址,并啟動(dòng)該地址上的uImage。在U-Boot源碼的main_loop()循環(huán)中,獲取bootcmd命令參數(shù)并執(zhí)行,最后啟動(dòng)uImage。代碼如下:

s=getenv("bootcmd");//讀取啟動(dòng)命令

run_command(s,0);//執(zhí)行bootcmd

5 U-Boot的移植過程

針對GEC210開發(fā)板的U-Boot移植采用三星官方提供的SMDKV210開發(fā)平臺源碼包,移植過程的主要方法是比較GEC210和SMDKV210平臺之間的差異,對源代碼進(jìn)行修改。

5.1 配置U-Boot源碼

修改U-Boot源碼頂層的Makefile文件,設(shè)置CPU的架構(gòu)和交叉工具鏈:

ifeq($(ARCH),arm)

CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/armnone-linux-gnueabi-

使用三星公司的默認(rèn)配置文件,對U-Boot源碼進(jìn)行配置:

#make smdkv210single_config

5.2 U-Boot源代碼移植

修改include/configs/smdkv210single.h文件:

(1)更改串口控制臺

#define CONFIG_SERIAL1 1

(2)更改DDR2內(nèi)存配置

GEC210開發(fā)板設(shè)計(jì)內(nèi)存時(shí),采用4片16bits的DDR2 SDRAM,其中每2片并聯(lián)在一起,分別接到DDR2控制器的通道0和通道1上。內(nèi)存的配置方法如下:

#define MEMORY_BASE_ADDRESS 0x30000000

#define MEMORY_BASE_ADDRESS1 0x40000000

#define DMC0_MEMCONTROL 0x00202400

#define DMC0_MEMCONFIG_0 0x30F00313

#define DMC0_MEMCONFIG_1 0x00F00313

#define DMC1_MEMCONTROL 0x00202400

#define DMC1_MEMCONFIG_0 0x40F00313

#define DMC1_MEMCONFIG_1 0x00F00313

#define SDRAM_BANK_SIZE 0x10000000

#define PHYS_SDRAM_2 (MEMORY_BASE_ADDRESS1)

修改DDR2內(nèi)存的基地址,在board/samsung/smdkc110/smdkc110.c源文件中,將 0x20000000改為0x30000000。

(3)修改DM9000網(wǎng)卡的基地址

#define CONFIG_DM9000_BASE(0x88000000)

#define DM9000_DATA (0x88000000+8)

(4)屏蔽PMIC、SRAM和Nor Flash初始化代碼

在GEC210開發(fā)板上,并沒有使用PMIC、SRAM和Nor Flash等外設(shè)芯片,所以將 board/samsung/smdkc110/lowlevel_init.S文件中的 PMIC、SRAM和 Nor Flash的初始化代碼屏蔽掉。

5.3 U-boot 編譯

在U-Boot的源碼目錄下執(zhí)行make,編譯完成后得到u-boot.bin文件,該文件是uboot的可執(zhí)行文件。

5.4 U-Boot 測試

首 先 將 u-boot.bin燒 寫 到 Nand Flash的0x00000000地址,啟動(dòng)GEC210平臺后,在串口調(diào)試終端上會顯示U-Boot正常啟動(dòng)信息。U-Boot會根據(jù)默認(rèn)配置的bootcmd參數(shù)加載并啟動(dòng)Linux內(nèi)核。

6 結(jié)語

U-Boot是一種開源的Bootloader,支持多種架構(gòu)的CPU,并且可以啟動(dòng)多種操作系統(tǒng),功能強(qiáng)大、應(yīng)用廣泛。本文主要講述了U-Boot在S5PV210上的啟動(dòng)分析和移植過程,該分析方法和移植過程在其他嵌入式平臺上也有一定的借鑒性。

[1]Samsung Electronics Co.,Ltd.S5PV210 RISC Microprocessor User's Manual V1.10.http://samsungsemi.com,2010.

[2]Samsung Electronics Co.,Ltd.S5PV210 iROM Application Note V0.3.http://samsungsemi.com,2009(11).

[3]李洪亮,邵長彬.基于S3C2410的U-Boot移植[J].電子技術(shù),2012(1):12-14.

[4]許倫輝,齊寶嶺,黃艷國.U-Boot源碼分析及在S3C2440的移植過程[J].科技廣場,2009(7):172-174.

Analysis and Transplanting of U-Boot on S5PV210

FENG Bao-xiang,DENG Ren-ming
(Guangzhou Yueqian Communication Technology Co.,Ltd.,Guangzhou 510663)

U-Boot is a kind of Bootloader which is widely used on the embedded platform,but the startup process of S5PV210 microprocessor is more complex.Describes the startup process of U-Boot and the transplanting methods on GEC210 in details.The application result shows that the transplanted U-Boot runs well on the GEC210 development board,and can lead Linux2.6.35.7 kernel successfully.

U-Boot;S5PV210;GEC210;Transplanting

1007-1423(2016)21-0068-04

10.3969/j.issn.1007-1423.2016.21.016

馮寶祥(1978-),男,遼寧沈陽人,碩士研究生,工程師,研究方向?yàn)榍度胧絃inux技術(shù)、物聯(lián)網(wǎng)應(yīng)用、自動(dòng)控制應(yīng)用鄧人銘(1985-),男,廣東湛江人,本科,助理工程師,研究方向?yàn)榍度胧较到y(tǒng)、智能硬件設(shè)計(jì)、物聯(lián)網(wǎng)通信開發(fā)

2016-05-06

2016-07-15

猜你喜歡
嵌入式
Focal&Naim同框發(fā)布1000系列嵌入式揚(yáng)聲器及全新Uniti Atmos流媒體一體機(jī)
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
電子制作(2019年7期)2019-04-25 13:17:14
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:16
嵌入式PLC的設(shè)計(jì)與研究
電子制作(2018年16期)2018-09-26 03:27:18
搭建基于Qt的嵌入式開發(fā)平臺
基于嵌入式系統(tǒng)Windows CE的應(yīng)用程序開發(fā)
嵌入式單片機(jī)在電機(jī)控制系統(tǒng)中的應(yīng)用探討
電子制作(2017年8期)2017-06-05 09:36:15
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
主站蜘蛛池模板: 亚洲动漫h| 九九九精品视频| 久久综合色88| 国产成人a毛片在线| 亚洲中文字幕精品| 亚洲国产欧美自拍| 亚洲中文字幕在线观看| 欧美另类视频一区二区三区| 日韩精品一区二区三区免费| 免费一极毛片| 亚洲第一av网站| 午夜视频免费一区二区在线看| 日本道综合一本久久久88| 波多野结衣国产精品| 97精品久久久大香线焦| 亚洲另类国产欧美一区二区| 亚洲视屏在线观看| 国产人成乱码视频免费观看| 国产亚洲精品自在久久不卡| 日本高清成本人视频一区| 国产精品第一区| 国产精品亚洲va在线观看 | 国产精品视频a| 欧美日韩福利| 国产丝袜丝视频在线观看| 成人免费网站久久久| 国产又黄又硬又粗| 亚洲另类第一页| 成人在线观看不卡| 亚洲精品国产精品乱码不卞| AV不卡在线永久免费观看| 亚洲男人的天堂在线| 亚洲欧美另类视频| 国产超碰在线观看| 亚洲国产一成久久精品国产成人综合| 伊人色综合久久天天| 久久美女精品| 亚洲女人在线| 国产精品55夜色66夜色| 欧美特黄一级大黄录像| 国产在线观看91精品亚瑟| 无码精品福利一区二区三区| 亚洲av成人无码网站在线观看| swag国产精品| 亚洲人人视频| 97视频在线精品国自产拍| 欧美亚洲国产精品久久蜜芽| 久久中文字幕不卡一二区| 成人噜噜噜视频在线观看| 日韩欧美综合在线制服| 九九香蕉视频| 日韩无码黄色| 中文字幕乱码二三区免费| 日本一区二区三区精品视频| 在线国产91| 国产色伊人| 久久久久久尹人网香蕉| 91精品国产情侣高潮露脸| 亚洲激情区| 91成人在线观看| 国产乱子伦手机在线| 无码'专区第一页| 国产九九精品视频| 欧洲成人免费视频| 91啦中文字幕| 天堂在线www网亚洲| 亚洲国产欧美国产综合久久| 91麻豆国产在线| 国产精品一区不卡| 在线a视频免费观看| 久久香蕉国产线看精品| 国国产a国产片免费麻豆| 久久精品视频亚洲| 成人免费视频一区| 国产成人综合久久精品尤物| 国产在线自乱拍播放| 国产精品成人观看视频国产 | 88av在线| 九九热精品免费视频| 999国产精品永久免费视频精品久久| 91麻豆精品国产91久久久久| 亚洲手机在线|