<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > U-Boot在S3C2410上的移植分析

U-Boot在S3C2410上的移植分析

作者: 時(shí)間:2012-04-19 來(lái)源:網(wǎng)絡(luò ) 收藏

與測試

為了使工作更加快捷,應當選擇當前發(fā)布的最新版本1.1.2 (盡管通過(guò)CVS可以得到1.1.3,但其正在開(kāi)發(fā),尚未發(fā)布,不宜使用) 。因為最新的版本可以提供盡可能多的處理器核及開(kāi)發(fā)板的支持。 對于U-Boot-1.1.2 而言,它不僅提供對ARM- 920T內核的支持,而且直接提供了對于 的板級支持,這使工作量相對減少。

支持ARM- 920T內核的代碼修改

由于U-Boot-1.1.2 提供對ARM-920T 內核的直接支持,所以本步驟不需要做任何工作,本文為了讓讀者了解BootLoder 移植的通用模式,在此只是稍加提示。

配置自己的開(kāi)發(fā)板

建立自己開(kāi)發(fā)板的目錄和相關(guān)文件。

1) 在include/ configs目錄中以smdk2410.h為模板添加頭文件. h(cp smdk2410.h .h) 。 這個(gè)文件是開(kāi)發(fā)板的配置文件,它包括開(kāi)發(fā)板的CPU、系統時(shí)鐘、RAM、Flash系統及其它相關(guān)的配置信息。

2) 在board/目錄下創(chuàng )建S3C2410目錄??截恠mdk2410目錄下所有文件到S3C2410目錄下,共有如下六個(gè)文件:flash.c、 memsetup.c、S3C2410.c、Makefile、U-Boot .lds 和config.mk,根據開(kāi)發(fā)板實(shí)際情況對各個(gè)文件進(jìn)行修改。

◆flash.c.U-Boot讀、寫(xiě)和刪除Flash 設備的源代碼文件。由于不同開(kāi)發(fā)板中Flash 存儲器的種類(lèi)各不相同,所以,修改flash.c時(shí)需參考相應的Flash 芯片手冊。它包括如下幾個(gè)函數:

unsigned long flash-init (void ),Flash初始化;
int flash-erase (flash-info-t *info,ints-first,ints -last),Flash擦除;
volatile static int write- hword (flash-info-t *info,ulongdest , ulong data) ,Flash 寫(xiě)入;
int write-buff (flash-info-t *info,uchar *src ,ulongaddr,ulong cnt),從內存復制數據。

由于本文開(kāi)發(fā)板所用flash芯片為IntelTE28f128,在board/ cmi目錄中有此flash.c,只需對其稍加修改即可使用。

◆memsetup.c.初始化時(shí)鐘、SMC控制器和SDRAM控制器。為了以后能用U-Boot的GO命令執行修改過(guò)的用loadb或tftp下載的U-Boot.在標記符“0:”上加入五句:

mov r3,pc
ldr r4,= 0x3FFF0000
and r3,r3,r4 / /以上三句得到實(shí)際起動(dòng)的內存地址
aad r0,r0,r3 / /用GO 命令調試uboot時(shí),啟動(dòng)地址在RAM
add r2,r2,r3 / /把初始化內存信息的地址,加上實(shí)際起動(dòng)地址

◆S3C2410.C.設置各種總線(xiàn)時(shí)鐘,打開(kāi)數據Cache和指令Cache,并設置相關(guān)內存參數。

◆Makefile.修改:OBJS := S3C2410.o flash.omemsetup.o

◆U-Boot.lds.作如下修改:

.text
{
cpu/ arm920t/ start.o ( .text)
* (.text)
}

◆config.mk.用于設置程序連接的起始地址,因為會(huì )在U-Boot 中增加功能,所以留下6M 的空間,修改33F80000 為33A00000。

實(shí)現網(wǎng)卡的驅動(dòng)程序

在drivers/目錄中以dm9000x.c和dm9000x.h為模板添加網(wǎng)口設備控制程序dm9000.c和dm9000.h,其中dm9000.c主要包括以下函數:

int eth-init (bd-t *bd),初始化網(wǎng)絡(luò )設備;
int eth-send(volatile void *,int),發(fā)送數據包;
int eth-rx(void),接收數據包。
void eth-halt (void),關(guān)閉網(wǎng)絡(luò )設備;

為了方便網(wǎng)絡(luò )設備的數據讀寫(xiě)操作,還定義了如下函數:

static int dm9000-probe (void),搜索DM9000芯片,分配空間并登記之;
static u16 phy-read(int),從Phyxcer寄存器讀取一個(gè)字;
static void phy-write ( int,u16),寫(xiě)一個(gè)字到Phyxcer 寄存器;
static u16 read-srom-word (int),從SROM 讀取一個(gè)字數據;
static u8 DM9000-ior (int),從I/ O 口讀取一個(gè)字節;
static void DM9000-iow(int reg,u8 value),寫(xiě)一個(gè)字節到I/ O 口;
最后在drivers/Makefile中加入dm9000.o。

修改Makefile 文件
在U-Boot-1.1.2/Makefile中ARM92xT Systems注釋下面加入以下兩行:
S3C2410-config :unconfig
  @./ mkconfig $( @:-config = ) arm arm920tS3C2410



關(guān)鍵詞: U-Boot S3C2410 移植 BootLoader

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>