u-boot & dnw & linux & tiny210

来源:互联网 发布:映射网络驱动器命令 编辑:程序博客网 时间:2024/05/18 09:30

这里只简单介绍一些过程(经过实地验证,可以保证在tiny210开发板上运行), 并不介绍过多的理论。


总结起来是: 首先用mkimage制做uimage, 然后在开发板上设置bootargs和bootcmd环境变量并保存,再重启开发板并根据提示在下载代码,最后系统自动运行系统。


一、修改uboot & linux代码,以保证支持tiny210开发板

1. 修改uboot的代码, include\config\tiny210.h文件,保证 #define MACH_TYPE_TINY2103466, 保证机器码与内核的设置一致。

2. 修改arch/arm/mach-s5pv210/include/mach/memory.h, 将

#define SECTION_SIZE_BITS    28
#define NODE_MEM_SIZE_BITS    28

修改为

#define SECTION_SIZE_BITS    29
#define NODE_MEM_SIZE_BITS    29 

以支持512M内存。


完成上述修改,分别编译uboot和kernel.


二、 制作u image (以下命令在PC上执行)

1. 从linux工程中拷贝来 zImage和ramdiskimg

2. 编译u-boot,在out\tools目录下找到mkimage这个工具软件。该软件用来生成uImage。

3. 用mkimage制作uzimage和uramdiskimg。方法如下:

$./mkimage -n "Kernel 2.6.35" -A arm -O linux -T kernel -C none -a 20a07fc0 -e 20a08000 -d zImage uzImage     

$mkimage -n "RAMFS" -A arm -O linux -T ramdisk -C none -a 21A00000 -e 21A00040 -d ramdisk.img uramdiskimg

注: 20a07fc0表示uzImage下载到内存中的地址。


三、设置 uboot环境变量,供开机自动运行(以下命令在开发板上执行,通过串口终端等)

在uboot启动后,通过 setenv来设置环境变量,并用saveenv来保存(保存到boot media中)

setenv bootargs root=0x20A00040 console=ttySAC0,115200 init=/linuxrc androidboot.console=s3c2410_serial0
setenv bootcmd 'dnw 0x20a07fc0; dnw 0x21a00000; bootm 0x20a07fc0'

save env

注: bootargs 表示启动参数

bootcmd包含了三个过程, 下载uzImage, 下载uramdiskimg, 最后执行bootm 0x20a07fc0


四、重启开发板(保持开发板用USB线与PC连接)

uboot会让用户有3秒钟(可定制)的时间来退出自动boot,否则自动执行bootcmd

根据提示,在pc上执行$dnw uzImage

再根据提示,在pc上执行$dnw uramdiskimg

接下来系统将自动执行bootm

linux开始启动.....



注: 本文介绍的是用USB来下载镜像,不同于tftp。 这只是个传输手段不同而已,要想让u-boot支持usb dnw, 需要在u-boot中移植usb dnw相关代码。

同时在pc上需要一个dnw工具,笔者是在linux系统下运行,所以需要编译linux下的dnw工具。




原创粉丝点击