嵌入式BootLoader移植实验三Word文件下载.doc

上传人:wj 文档编号:1491305 上传时间:2023-04-30 格式:DOC 页数:17 大小:3.20MB
下载 相关 举报
嵌入式BootLoader移植实验三Word文件下载.doc_第1页
第1页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第2页
第2页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第3页
第3页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第4页
第4页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第5页
第5页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第6页
第6页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第7页
第7页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第8页
第8页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第9页
第9页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第10页
第10页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第11页
第11页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第12页
第12页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第13页
第13页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第14页
第14页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第15页
第15页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第16页
第16页 / 共17页
嵌入式BootLoader移植实验三Word文件下载.doc_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式BootLoader移植实验三Word文件下载.doc

《嵌入式BootLoader移植实验三Word文件下载.doc》由会员分享,可在线阅读,更多相关《嵌入式BootLoader移植实验三Word文件下载.doc(17页珍藏版)》请在冰点文库上搜索。

嵌入式BootLoader移植实验三Word文件下载.doc

S3C2440

SDRAM:

64M1

NorFlash:

2M

NandFlash:

256M

网卡:

DM9000EP

四、实验过程

1、建立Micro2440配置

(1)按下图所示命令解压u-boot-2011.03-micro2440.tar压缩包

(2)输入命令:

geditboards.cfg打开boards.cfg文件。

在boards.cfg中添加一行:

micro2440armarm920t-samsungs3c24x0语句。

(3)创建板级支持文件

输入命令:

cp-rboard/samsung/smdk2410board/samsung/micro2440

cdboard/samsung/micro2440/

mvsmdk2410.cmicro2440.c

geditMakefile

将COBJS:

=smdk2410.oflash.o改为COBJS:

=micro2440.oflash.o

cd../../..

cpinclude/configs/smdk2410.hinclude/configs/micro2440.h

geditinclude/configs/micro2440.h

修改内容一:

#defineCONFIG_SYS_PROMPT"

[Micro2440]#"

/*MonitorCommandPrompt*/

修改内容二:

#defineCONFIG_SYS_SDRAM_BASEPHYS_SDRAM_1

#defineCONFIG_SYS_INIT_SP_ADDR(CONFIG_SYS_SDRAM_BASE+0x1000-GENERATED_GBL_DATA_SIZE)

(4)测试编译环境

输入命令:

makemicro2440_config

出现:

Configuringformicro2440board...

输入命令:

make

Generatinginclude/autoconf.mk

Generatinginclude/autoconf.mk.dep

......

arm-linux-objcopy-Osrecu-bootu-boot.srec

arm-linux-objcopy--gap-fill=0xff-Obinaryu-bootu-boot.bin

2、在RAM中运行

(1)在根目录下进入include/configs文件夹

输入命令:

geditmicro2440.h,打开micro2440.h文件。

(2)在micro2440.h中

删除:

#defineCONFIG_S3C24101/*specificallyaSAMSUNGS3C2410SoC*/

#defineCONFIG_SMDK24101/*onaSAMSUNGSMDK2410Board*/

添加:

#defineCONFIG_S3C24401/*specificallyaSAMSUNGS3C2440SoC*/

#defineCONFIG_MICRO2440

#defineCONFIG_SKIP_LOWLEVEL_INIT

(3)在根目录下进入arch/arm/cpu/arm920t文件夹

geditstart.S

按下图所示进行修改部分内容:

(4)在根目录board/samsung/micro2440下中输入geditmicro2440.c命令

(5)测试

在根目录下输入命令:

make

编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。

3、支持DM900

(1)在根目录下打开include/configs文件夹,执行geditmicro2440.h命令

删除:

#defineCONFIG_CS8900/*wehaveaCS8900on-board*/

#defineCONFIG_NETMASK255.255.255.0

#defineCONFIG_IPADDR10.0.0.110

#defineCONFIG_SERVERIP10.0.0.1

#defineCONFIG_CMD_NET

#defineCONFIG_DRIVER_DM90001

#defineCONFIG_DM9000_NO_SROM1

#defineCONFIG_DM9000_BASE0x20000300

#defineDM9000_IOCONFIG_DM9000_BASE

#defineDM9000_DATA(CONFIG_DM9000_BASE+4)

#defineCONFIG_CMD_PING

#defineCONFIG_ETHADDR08:

00:

3e:

26:

0a:

5b//开发板MAC地址

#defineCONFIG_NETMASK255.255.255.0

#defineCONFIG_IPADDR192.168.10.126//开发板IP地址

#defineCONFIG_SERVERIP192.168.10.124//主机IP地址

(2)在根目录下进入board/samsung/micro2440文件夹执行geditmicro2440.c命令

(3)在根目录下进入arch/arm/lib文件夹执行gediteabi_compat.c命令

(4)在根目录下进入drivers/net文件夹执行geditdm9000x.c命令

在修改staticintdm9000_init(structeth_device*dev,bd_t*bd)函数中内容,如下图所示:

(5)测试

在根目录下输入命令:

编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。

测试结果如下图所示:

4、支持内核启动

(1)在根目录下进入include/configs文件夹执行geditmicro2440.h命令

#defineCONFIG_SETUP_MEMORY_TAGS1//如果没有定义这个参数,则uboot参数必须加入men=内存大小

(2)在根目录下进入arch/arm/lib文件夹执行geditbootm.c命令

在staticvoidannounce_and_cleanup(void)函数中添加:

#ifndefCONFIG_MICRO2440

cleanup_before_linux();

#endif

(3)自动启动内核

如果要自动启动内核,需要include/conskfigs/micro2440.h定义CONFIG_BOOTCOMMAND,类似如下内容:

#defineCONFIG_BOOTCOMMAND"

nandread0x300080000x600000x300000;

bootm0x30008000"

(4)测试

编译完成后将u-boot.bin下载到SDRAM的0x33f80000地址处,u-boot已经能在RAM中运行。

5、支持NandFlash

(1)添加s3c2440_nand.c文件

在根目录下输入touchdrivers/mtd/nand/s3c2440_nand.c指令进行文件的创建,

在根目录下输入geditdrivers/mtd/nand/s3c2440_nand.c命令打开文件。

在DEBUGN("

board_nand_init()/n"

);

下面修改如图所示的三句内容:

(2)在根目录下进入drivers/mtd/nand文件夹中执行geditMakefile命令

#COBJS-$(CONFIG_NAND_S3C2440)+=s3c2440_nand.o如下图所示:

(3)在根目录下进入include/conskfigs文件夹打开micro2440.h文件

#defineCONFIG_MTD_DEVICE

#defineCONFIG_NAND_S3C2440

#defineCONFIG_CMD_NAND

#ifdefined(CONFIG_CMD_NAND)

#defineCONFIG_SYS_NAND_BASE0x4E000000//Nand配置寄存器基地址

#defineCONFIG_SYS_MAX_NAND_DEVICE1

#defineCONFIG_MTD_NAND_VERIFY_WRITE1

#endif

#defineCONFIG_ENV_IS_IN_NAND1

#defineCONFIG_ENV_OFFSET0x40000//将环境变量保存到nand中的0x40000位置

#defineCONFIG_ENV_SIZE0x10000/*TotalSizeofEnvironmentSector*/

6、支持yaffs下载

(1)在根目录下进入include/conskfigs文件夹执行geditmicro2440.h命令

#defineCONFIG_CMD_NAND_YAFFS

(2)在根目录下进入drivers/mtd/nand文件夹打开nand_util.c文件

修改部分内容:

if(!

need_skip&

&

!

withoob){……}

ops.mode=MTD_OOB_RAW

rval=nand->

write_oob(nand,offset,&

ops);

if(rval)

break;

(3)下载yaffs镜像

下载yaffs镜像的时候要注意分区的第一块不能写,比如友善之臂的默认分区如下:

Numberofpartitions:

4

name:

offsetsizeflag

------------------------------------------------------------

vivi:

0x000000000x000400000

param:

0x000400000x000200000

kernel:

0x000600000x005000000

root:

0x005600000x3fa800000

也就是说yaffs镜像所在分区的起始地址在0x560000,因此使用nandwrite.yaffs命令下载yaffs时要写的地址为

0x560000+0x20000(NandFlash每块的大小)=0x580000,即下载命令类似如下:

tftp0x30008000uImage

nandwrite.yaffs0x300080000x5800000x300000

7、支持NandFlash启动

(1)创建nand_read.c

在根目录下执行touchboard/samsung/micro2440/nand_read.c命令,

在根目录下执行geditboard/samsung/micro2440/nand_read.c命令,

将下列内容复制到nand_read.c文件中

#definerNFCONF(*(volatileunsigned*)0x4E000000)

#definerNFCONT(*(volatileunsigned*)0x4E000004)

#definerNFCMD(*(volatileunsigned*)0x4E000008)

#definerNFADDR(*(volatileunsigned*)0x4E00000C)

#definerNFDATA8(*(volatileunsignedchar*)0x4E000010)

#definerNFSTAT(*(volatileunsigned*)0x4E000020)

#defineCMD_READ10x00/*页读命令周期1*/

#defineCMD_READ20x30/*页读命令周期2*/

#defineCMD_RESET0xFF/*复位*/

#defineNF_CMD(cmd){rNFCMD=(cmd);

}/*写命令*/

#defineNF_ADDR(addr){rNFADDR=(addr);

}/*写地址*/

#defineNF_RDDATA8()(rNFDATA8)/*读8位数据*/

#defineNF_nFCE_L(){rNFCONT&

=~(1<

<

1);

}/*片选使能*/

#defineNF_nFCE_H(){rNFCONT|=(1<

}/*片选禁用*/

#defineNF_WAITRB(){while(!

(rNFSTAT&

(1<

1)));

}/*等待就绪*/

#defineNF_CLEAR_RB(){rNFSTAT|=(1<

2);

}/*清除就绪/忙位*/

#defineNF_DETECT_RB(){while(!

2)));

#defineTACLS1

#defineTWRPH02

#defineTWRPH11

voiddelay(inti)

{

while(i-->

0);

}

voidNand_Init(void)

rNFCONF=(TACLS<

12)|(TWRPH0<

8)|(TWRPH1<

4)|(0<

rNFCONT=(1<

4)|(1<

1)|(1<

staticvoidNand_Reset(void)

NF_nFCE_L();

/*片选使能*/

NF_CLEAR_RB();

/*清除就绪/忙位*/

NF_CMD(CMD_RESET);

/*写复位命令*/

NF_DETECT_RB();

/*等待就绪*/

NF_nFCE_H();

/*片选禁用*/

unsignedcharNand_ReadPage(constintpage,unsignedchar*constbuffer)

inti;

Nand_Reset();

NF_CMD(CMD_READ1);

NF_ADDR(0x0);

NF_ADDR(page&

0xff);

NF_ADDR((page>

>

8)&

16)&

NF_CMD(CMD_READ2);

for(i=0;

i<

2048;

i++)

buffer[i]=NF_RDDATA8();

intnand_read(intstart_page,intread_pages,unsignedchar*buffer)

Nand_Init();

for(i=0;

i<

read_pages;

Nand_ReadPage(start_page,buffer+2048*i);

start_page++;

return0;

(2)在根目录下进入board/samsung/micro2440文件夹执行geditMakefile命令

修改COBJS:

=micro2440.oflash.onand_read.o

(3)在根目录下执行geditarch/arm/cpu/arm920t/u-boot.lds命令

修改:

.text:

{

arch/arm/cpu/arm920t/start.o(.text)

board/samsung/micro2440/libmicro2440.o(.text)

*(.text)

}

(4)在根目录下执行geditarch/arm/cpu/arm920t/start.S命令

添加下面蓝色字体的内容,黑色字体用于定位

#ifndefCONFIG_SKIP_LOWLEVEL_INIT

blcpu_init_crit

#endif

#ifdefCONFIG_S3C2440_NAND_BOOT

ldrsp,=0x30008000

ldrr0,=0x0;

ldrr1,_end_ofs

movr1,r1,LSR#11

addr1,r1,#1

ldrr2,=(CONFIG_SYS_TEXT_BASE)

blnand_read

ldrpc,=relocations

......

copy_loop:

ldmiar0!

{r9-r10}/*copyfromsourceaddress[r0]*/

stmiar1!

{r9-r10}/*copytotargetaddress[r1]*/

cmpr0,r2/*untilsourceendaddress[r2]*/

blocopy_loop

relocations:

ldrr6,=CONFIG_SYS_TEXT_BASE

#ifndefCONFIG_PRELOADER

/*

*fix.rel.dynrelocations

*/

clbss_l:

strr2,[r0]/*clearloop...*/

addr0,r0,#4

cmpr0,r1

bneclbss_l

blcoloured_LED_init

blred_LED_on

#endif

#ifdefCONFIG_S3C2440_NAND

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2