u-boot & dnw & linux & tiny210
2012-08-10 10:16
453 查看
这里只简单介绍一些过程(经过实地验证,可以保证在tiny210开发板上运行), 并不介绍过多的理论。
总结起来是: 首先用mkimage制做uimage, 然后在开发板上设置bootargs和bootcmd环境变量并保存,再重启开发板并根据提示在下载代码,最后系统自动运行系统。
一、修改uboot & linux代码,以保证支持tiny210开发板
1. 修改uboot的代码, include\config\tiny210.h文件,保证 #define MACH_TYPE_TINY210
3466, 保证机器码与内核的设置一致。
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工具。
总结起来是: 首先用mkimage制做uimage, 然后在开发板上设置bootargs和bootcmd环境变量并保存,再重启开发板并根据提示在下载代码,最后系统自动运行系统。
一、修改uboot & linux代码,以保证支持tiny210开发板
1. 修改uboot的代码, include\config\tiny210.h文件,保证 #define MACH_TYPE_TINY210
3466, 保证机器码与内核的设置一致。
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工具。
相关文章推荐
- 修改u-boot编译选项以便支持使用arm-linux-gnueabihf-编译器编译(soft-float & VFP hard)
- Tiny210(S5PV210) U-BOOT(一)----启动过程
- Tiny210(S5PV210) U-BOOT(七)----SDRAM工作时序与原理
- 向Tiny210移植Debian Linux
- 搭建fedora16->tiny210 Qt交叉编译环境 总结
- tiny210(S5PV210)uboot的顶层Makefile的连接命令理解——记tiny210之uboot移植
- QT210 -> u-boot-samsung-dev中的mkconfig文件注释
- TINY210 UBOOT(一)启动过程
- [Guide] Mac OS X Lion: How To Boot A Linux Live System From An USB Drive & How To Update Any OCZ SSD
- linux开发板Tiny210添加执行文件到自启动项中
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(三)
- linux tftp设置 + uboot下tftp下载…
- linux /boot/grub/menu.ls
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——移植NAND FLASH
- Tiny210(S5PV210) U-BOOT(一)----启动过程
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——配置过程(二)
- Linux 0.11内核bootsect.s和loader.s的移植为AT&T汇编
- tiny210(s5pv210)移植u-boot(基于 2014.4 版本)——命令补全和历史命令
- Linux-world-2012-January->14(移植uboot-1.3.4到mini2440-256M NAND)
- 在ZC702上运行Linux(4)-编译和使用U-Boot & Linux