skyeye下模拟uboot的nand启动(一星期的成果啊!疯掉了!!)

1435阅读 0评论2009-08-21 天海一线
分类:LINUX

环境:fedora 9(内核版本2.6.24.4),arm-linux-gcc-2.95.3,u-boot-1.1.4,skyeye-1.2.6rc1,s3c2410A

1、编译u-boot

首先修复u-boot的几个BUG:

(1)arm-linux-gcc-2.95.4的安装位置必须在/usr/local/arm/2.95.3(可做符号链接),否则会出现cpp0错误;
(2)hello_world.srec错误(make 3.81的bug引起)
可以简单的改一个目录 examples下的Makefile来解决。
将原文件的第58行开始的内容:
SREC    = hello_world.srec
BIN     = hello_world.bin hello_world
改为:
SREC    = hello_world.o
BIN     = hello_world.o hello_world
即可重新编译通过了。
(3)cc1: error: invalid option `abi=apcs-gnu'
    出错的文件是/cpu/arm920t/下的config.mk: 将
    PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
    改成:
    PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu,))
修改以上三处后,
make smdk2410_config
make顺利通过编译。

(4)增加nand支持:
        参见http://blog.csdn.net/zblue78/archive/2008/02/26/2121871.aspx,感谢作者给我们提供的这么宝贵的资料。

2、安装skyeye(略)

3、skyeye的使用方法说明(网上资料太少了,只有错误,错误,还是错误。。。)

(1)对板子资源的情况进行统计:
我的是:Nandflash 64M,SDRAM 64M

(2)明确几点:(非常重要,害我太深!!!!!!!!!!!!!)

        nand.dump文件必须自己生成,直接使用skyeye,执行过程中发现没有 nand.dump会自动生成,但是这个事不能用的,用出现很多bus read error或mem read error,使用mknandflashdump.c,生成a.out(gcc mknandflashdump.c),使用./a.out u-boot.bin nand.dump 0x0即可。

        只能使用u-boot.bin,不能使用u-boot(至少我使用时会出现 N多错误);上面操作的意义是虚拟nandflash,因为nandflash不占有寻址空间(只是前4K缓冲到0x0,然后只能通过时序定位了),经过 操作之后我们的nandflash中(即nand.dump中)才能有我们的u-boot.bin程序,现在skyeye还不能自动的这样操作,它只是分 配了空间,没有填充内容。

         skyeye的书写:
第一段:首4K自己,用于u-boot从nand拷贝到SDRAM,file=u-boot.bin, boot=yes(从0地址启动)--》大于4K亦可;
第二段:0x30000000-0x33ffffff(64M SDRAM
)-------->我们的程序实际运行的空间。

4、模拟运行:

skyeye -c skyeye.config,正常启动。

下一步,启动内核,添加tftpboot,ping命令。

上一篇:没有了
下一篇:linux驱动程序设计环境搭建(升级内核,建立内核源码树)