Chinaunix首页 | 论坛 | 博客
  • 博客访问: 409260
  • 博文数量: 118
  • 博客积分: 294
  • 博客等级: 二等列兵
  • 技术积分: 667
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 20:31
文章分类

全部博文(118)

文章存档

2014年(3)

2012年(25)

2011年(90)

分类: LINUX

2011-04-03 18:20:51

从SDRAM启动U-Boot
    U-Boot提供了一个go命令,可以用来启动操作系统的内核或者其他应用程序。当U-Boot还没有实现网络功能时,常常需要调试,而每次都用JTAG把u-boot.bin烧写到Flash是一件费时费力的事情,因此调试的时候最好让U-Boot从SDRAM里启动。
 
    如果不出差错,一般情况下,只要U-Boot跑起来了,它的loadb命令就是可用的。因此我们可以通过串口下载需要调试的u-boot.bin到SDRAM中,直接跳转到SDRAM中执行,这样就避免了反复烧写Flash。loadb命令和超级终端配合使用,可以方便的下载文件到SDRAM中。并且,u-boot.bin往往不像内核那么大,一般就100多K,用串口只需要花10多20秒就可以下载完毕;而内核比较大,1M多的内核用串口下载要好几分钟。
   
    下面介绍一个实现U-Boot从SDRAM启动的方法。
 
    需要注意几个地方:
 
    1、配置头文件的修改
    添加如下两行
   

   #define CONFIG_SKIP_LOWLEVEL_INIT
   #define CONFIG_SKIP_RELOCATE_UBOOT

    这两行使U-Boot不执行汇编代码段的cpu_init_crit 和relocate 代码段。

    2、修改config.mk文件

    config.mk文件中定义了一个TEXT_BASE,指定程序的入口地址。在博创的经典pxa270开发板上,我做的如下的定义:

    TEXT_BASE = 0x32000000

     表示U-Boot在RAM中的程序入口地址。U-Boot启动以后,在RAM中就运行在这个地址往上的空间。这样定义的U-Boot,将它烧写到Flash中。

     然后,在调试用的U-Boot中做如下设定:

    TEXT_BASE = 0x32000000

      这样,调试用的U-Boot就运行在RAM中从0xa3f00000往上的地址,两个U-Boot空间互不干扰。

      编译完调试用的U-Boot,执行如下命令:

U-Boot 1.2.0-utulinux_s3c2440_bootloader (Aug 16 2007 - 20:58:56)

DRAM:  64 MB
Flash:  0 kB
NAND:  Bad block table not found for chip 0
Bad block table not found for chip 0
64 MiB
In:    serial
Out:   serial
Err:   serial
Hit any key to stop autoboot:  0 
utu-bootloader=>>>
utu-bootloader=>>>loadb 0x32000000
## Ready for binary (kermit) download to 0x32000000 at 115200 bps...

(Back at liuxin)
----------------------------------------------------
(/home/liuxin/) C-Kermit>send /home/liuxin/u-boot.bin 
(/home/liuxin/) C-Kermit>c
Connecting to /dev/ttyUSB0, speed 115200
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------
## Total Size      = 0x000288cc = 166092 Bytes
## Start Addr      = 0x32000000
utu-bootloader=>>>go 0x32000000
## Starting application at 0x32000000 ...


U-Boot 1.3.1 (Apr  3 2011 - 17:03:30)

DRAM:  64 MB
Flash:  1 MB
NAND:    64 MB
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial

阅读(1124) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~