X-LOAD从nand flash启动

 

                                                                                 X-LOAD从nand flash启动

1.前沿

        刚拿到TI公司免费的开发板,发现它默认从SD卡启动,而我们产品没有SD卡,只能从NAND启动,还没有拿到产品,就用开发板来做,为以后做准备了。

2.准备

      a,安装交叉编译环境:

        Sourcery G++ For ARM GUN/LINUX Spring 2009 安装包如下:

         arm-2009q1-203-arm-none-linux-gnueabi.bin(TI给的光盘,大家可以从CODESOURCERY官网下载)

      b.安装ti-sdk-am3517-evm

         安装完后相关目录如下:psp(镜像和源码包),filesystem

3.SD卡启动盘制作

    为了保留TI的SD卡,找了个新4GSD卡,就用它重新做个SD卡启动盘,步骤:

     a.初始化SD卡位FAT32格式

        在windows下直接格式位FAT32。

     b.为SD卡建立FAT32和EXT3双分区

        1> fdisk -l找到设备节点,这里是/dev/sdb

        2> 分区:先删除原来分区,然后创建第一个主分区,再设定分区类型(命令t),输入分区类型(c表示FAT32),激活这个分区(命令a);

                         创建第二个分区ext3,这个分区为了放置文件系统,最后保存分区(命令w);

        3> 格式化

                 mkfs.msdos -F 32 /dev/sdb1 -n boot

                 mkfs.ext3 /dev/sdb2 -L EXT3

4.  复制MLO和u-boot.bin到SD卡第一个分区boot,注意必须选复制MLO(x-load.bin.ift)

    cp MLO /mnt/

    cp u-boot.bin /mnt

5.讲拨码开关跳到MMC启动方式,插入SD卡,启动。。。。

二、移植开发板从NAND 启动

1.x-load移植

   a. 在配置文件中关闭MMC

    #define CONFIG_MMC               1(注释掉)
   #if defined(CONFIG_MMC)
     #define CFG_CMD_MMC              1
    #define CFG_CMD_FAT              1
    #endif

   b.关闭NANDECC效验,(不关闭它,加载U-BOOT是总是提示ECC错误)

    #define ECC_HW_ENABLE(注释掉)可以参考以下代码:

   #ifdef CFG_PRINTF
                   printf("Booting from nand . . .\n");
   #endif
              for (i = NAND_UBOOT_START; i < NAND_UBOOT_END; i+= NAND_BLOCK_SIZE){
                             if (!nand_read_block(buf, i))(重点在这个函数里进行ECC效验,报错)
                                  buf += NAND_BLOCK_SIZE; /* advance buf ptr */
      }
  }

2.编译X-LOAD

   make am3517evm_config

   make

3. 生成TI ROMCODE识别格式文件x-load.bin.ift

    ./signGP x-load.bin

 

三、烧写x-load.bin.ift和u-boot.bin

    1.烧写x-load.bin.ift

      参照配置文件中nand分区表:(也可以自己定义)

 *0x00000000 - 0x0007FFFF  Booting Image    X-LOADER
 * 0x00080000 - 0x0023FFFF  U-Boot Image
 * 0x00240000 - 0x0027FFFF  U-Boot Env Data (X-loader doesn't care)
 * 0x00280000 - 0x0077FFFF  Kernel Image
 * 0x00780000 - 0x08000000  depends on application

      mmc init

     nand erase 0 80000

     loadb 80000000   (用串口下载x-load.bin.ift,这里没有从MMC中读fatload)

     nandecc hw

     nand write.i 80000000 0 80000

 2.烧写U-BOOT

     nand erase  80000 240000

     loadb 80000000   (用串口下载u-boot.bin,这里没有从MMC中读fatload)

     nandecc sw

     nand write.i 80000000  80000 240000

四、nand启动

   选择拨码开关为NAND启动。取出SD卡,如下:

Texas Instruments X-Loader 1.51 (Nov  1 2011 - 23:30:10)
Booting from nand . . .
Starting OS Bootloader...


U-Boot 2009.11 (Jan 22 2011 - 01:45:10)

OMAP34xx/35xx-GP ES1.0, CPU-OPP2 L3-165MHz
AM3517EVM Board + LPDDR/NAND
I2C:   ready
DRAM:  256 MB
NAND:  512 MiB
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial
Die ID #3854000100000000015da3961500d00b
Net:   davinci_emac_initialize
Ethernet PHY: GENERIC @ 0x00
DaVinci EMAC
Hit any key to stop autoboot:  0

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值