linux开发环境搭建(4)-从SD卡启动uboot

1、superboot烧写程序
前面已经将网卡配置好,也已经可以通过tftp下载程序到nand flash,也可以通过nfs挂载根文件系统,可以说基本的开发环境已经搭建好。

使用过友善开发板的人应该知道,友善对于在第一次空烧程序进nand flash里面的时候提供了一个叫superboot-6410.bin的sd卡启动的uboot,要烧写uboot到nand flash上的时候需要先将友善提供的superboot-6410.bin,可以在这里下载:
http://download.csdn.net/detail/atmega_chen/9782685

使用SD-Flasher.exe这个工具烧进sd卡里面,可以在这里下载:
http://download.csdn.net/detail/atmega_chen/9782681

如下图,表示superboot-6410.bin已经烧写到sd卡
这里写图片描述

然后把sd卡插入到开发板上,并将拨码开关拨到sd卡启动,上电后会打印出下面的菜单
这里写图片描述

从这些选项中可以看到,主要是可以下载uboot,kernel和filesystem,并且这个菜单没有q选项,退出到uboot原始shell命令行,也就是说使用superboot.bin下载文件只能通过dnw使用usb下载,不能使用tftp下载。由于本人的电脑一直装不上dnw的驱动,所以一直无法使用dnw下载程序,一般都是使用tftp下载uboot和kernel。但是友善提供的superboot.bin并没有tftp下载的功能,而且也不提供源码。所以就想移植一个已经有tftp下载功能的uboot,并且内从sd卡启动这个uboot,这样就可以通过从sd卡启动,然后使用tftp功能下载文件。

2、如何从sd卡启动
这里以移植好的tiny6410_uboot作为测试,这个是友善移植好的uboot,支持从sd卡启动,可以在这里下载:
http://download.csdn.net/detail/atmega_chen/9772444

不过官方提供的代码有些问题,主要是nand flash初始化部分,在从nand flash启动的时候没有问题,但是从sd卡启动的时候要稍作修改,否则启动不了。

了解uboot启动流程的都知道,在uboot汇编阶段的时候如果是从nand flash启动,则BL1的代码会从nand flash中把剩余的uboot代码拷贝到内存中。同样,如果要是从sd卡启动,则会把剩余的uboot代码从sd卡拷贝到内存,而三星的sd固件里面就提供了一个在启动阶段将数据从sd卡拷到内存的函数,这个函数是

#define CopyMovitoMem(a,b,c,d,e)    (((int(*)(int, uint, ushort, uint *, int))(*((uint *)(TCM_BASE + 0x8))))(a,b,c,d,e))

五个参数分别为a是使用的sd卡通道0或者1,b为BL2的长度,c为BL2的大小,d为要将BL2拷贝到内存的位置,d一般为0。
使用这个函数就可以把BL2从sd卡拷贝到内存,因为是从sd卡启动,所以只要BL1放对了位置,开机的时候芯片内的固化代码是会自动从sd卡上把BL1的代码拷贝到setupping_stone上,然后运行的,我们需要做的是在BL1里面调用CopyMovitoMem函数把BL2拷贝到内存去。

3、编译uboot从sd卡启动
因为tiny6410_uboot是友善移植好的,支持uboot从sd卡启动,所以我们尝试编译使用这个uboot,之后我们会自己移植,现在是搭建开发环境,先用移植好的。

进入到uboot目录,打开顶层Makefile,搜索mini6410,可以看到有下面几个配置选项,其中
mini6410_nand_config-ram128表示从nand flash启动,RAM大小为128M;
mini6410_sd_config-ram128表示从sd卡启动,RAM大小为128M;
tiny6410_config表示从nand flash启动,RAM大小为256M;
mini6410_sd_config-ram256表示从sd卡启动,RAM大小为256M;
我使用的开发板RAM大小为256M,因为要从sd卡启动,所以选择mini6410_sd_config-ram256。先配置,然后编译
这里写图片描述

#make mini6410_sd_config-ram256
#make ARCH=arm CROSS_COMPILE=arm-linux-

编译出来后可以通过dnw需要将uboot.bin放到sd里面去,下面介绍uboot.bin在sd卡中的位置。

4、uboot在sd卡中位置
由于之前把sd卡做成了superboot.bin的卡,现在要把卡恢复成正常卡,依然是使用SD-Flasher.exe,选择ReFormat,然后再按scan,如果现实Available为no说明sd卡已经恢复正常,如下图
这里写图片描述

要让uboot从sd卡启动,则要正确烧写uboot.bin在sd卡中的位置,这个具体位置可以参看三星的介绍SD卡启动的文档《CHxx_IROM_ApplicationNote_Rev1.00_080801.pdf》,可以在这里下载ÿ

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值