Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137258
  • 博文数量: 35
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-09 12:22
个人简介

http://www.76ku.cn

文章分类

全部博文(35)

文章存档

2011年(1)

2010年(17)

2007年(17)

我的朋友

分类:

2007-06-10 01:38:30

uboot-1.1.6    H9200M(at91rm9200dk)

1.uboot
源代码修改
1
  include/configs/at91rm9200.h
A:
加入 :#define CONFIG_SKIP_LOWLEVEL_INIT(跳过板子的自动初始化,否则死循环
)
B:
根据板子情况修改flashSDRAM的大小定义

    #define PHYS_FLASH_SIZE 0x400000   //4M FLASH
    #define CFG_MAX_FLASH_SECT 71      //71
扇区
    #define PHYS_SDRAM_SIZE 0x2000000  //32M SDRAM
2) board/at91rm9200dk/flash.c
A:
加入flash驱动
     OrgDef OrgMBM29LV320BE[] =
    {
      {   8,  8*1024 }, /*   8*   8 kBytes sectors */
      { 63, 64*1024 },  /* 63 * 64 kBytes sectors */
    };
B:flash
验证信息
    #define RESET 0xF0
    /* Read Reset */
    MEM_FLASH_ADDR1 = FLASH_CODE1;
    MEM_FLASH_ADDR2 = FLASH_CODE2;
    MEM_FLASH_ADDR1 = RESET;
    ...
   
替换:
    /* Vendor type */
    info->flash_id = FUJ_MANUFACT & FLASH_VENDMASK;
    printf("FUJ and AMD\n");
    ...
   
加入:
    else if((device_code & FLASH_TYPEMASK)==(AMD_ID_LV320B & FLASH_TYPEMASK))
    {
    info->flash_id |= AMD_ID_LV320B & FLASH_TYPEMASK;
    printf("MBM29LV320B (32Mbit)\n");
    }
  ...
C:flash
初始化信息
   
在函数 ulong flash_init (void)中加入:
    ...
    else if((flash_info[i].id & FLASH_TYPEMASK==(AMD_ID_LV320B & FLASH_TYPEMASK))
    {
    pOrgDef = OrgMBM29LV320BE;
    flash_nb_blocks = sizeof (OrgMBM29LV320BE) / sizeof (OrgDef);
    }
D:
打印信息
   
在函数 void flash_print_info (flash_info_t * info)中加入:
    ...
    case (FUJ_MANUFACT & FLASH_VENDMASK):
        printf("FUJ");
        break;
    ...
    case (AMD_ID_LV320B & FLASH_TYPEMASK):
        printf("MBM29LV320BE (32Mbit\n)");
        break;
E:
在函数 int flash_erase (flash_info_t * info, int s_first, int s_last)中加入:

    if ((info->flash_id & FLASH_VENDMASK) != (FUJ_MANUFACT & FLASH_VENDMASK))
    {
         return ERR_UNKNOWN_FLASH_VENDOR;
    }
3)board/at91rm9200/config.mk
    TEXT_BASE = 0x21f00000

2.
编译u-boot

    mkdir /home/chen/abc
    export BUILD_DIR=/home/chen/abc  
  //BUILD_DIRmakefile中定义的变量
    make distclean
    make at91rm9200dk_config
    make all
 
   
abc下生成u-boot.bin u-boot u-boot.srec三个文件


3.启动片内 ROM 的程序
     
H9200M的跳线J10023短接,然后复位系统,打开超级终端(1152008、无、1、无),在超级终端会出现  “CCCCCCCC…..” 此时AT91RM9200片内ROM的程序已开始运行.

4.下载 Uboot SDRAM 运行
     
在超级终端,使用Xmodem协议,发送loader.bin文件,然后超级终端会出现下载Uboot的提示,并继续出现“CCCCCCCCC………”
    
继续使用Xmodem协议,发送uboot.bin文件,此时uboot.bin被发送到系统的SDRAM中,显示>U-Boot的提示符.


阅读(758) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:从零开始建设交叉编译工具

给主人留下些什么吧!~~