| 论坛注册| 加入收藏 | 设为首页| RSS
Google
您当前的位置:首页 > Linux频道 > Linux开发区 > 嵌入应用

u-boot移植44b0的详细步骤

时间:2007-08-16 14:19:11  来源:Linux联盟收集整理  作者:
一:建立工程文件HdKLinux联盟
1.修改/board/dave/B2为/board/dave/ULong44b0HdKLinux联盟
2.修改/board/dave/ULong44b0/B2.c为ULong44b0.cHdKLinux联盟
3.修改/board/dave/ULong44b0/Makefile中B2.o为ULong44b0.oHdKLinux联盟
4.修改/include/configs/B2.h为ULong44b0.h
 
5.修改/MakefileHdKLinux联盟
  B2_config       :       unconfigHdKLinux联盟
          @./mkconfig $(@:_config=) arm s3c44b0 B2 daveHdKLinux联盟
  为HdKLinux联盟
  ULong44b0_config       :       unconfigHdKLinux联盟
          @./mkconfig $(@:_config=) arm s3c44b0 ULong44b0 dave
 
二:详细修改HdKLinux联盟
1. /include/configs/ULong44b0.h
  #define CONFIG_B2   1 /* on an B2 Board      */HdKLinux联盟
  修改为HdKLinux联盟
  #define CONFIG_ULong44b0        1     /* on an tti44b Board      */
 
  #define CONFIG_S3C44B0_CLOCK_SPEED 75 /* we have a 75Mhz S3C44B0*/HdKLinux联盟
  修改为HdKLinux联盟
  #define CONFIG_S3C44B0_CLOCK_SPEED 60 /* we have a 60 Mhz S3C44B0*/
 
  #define CONFIG_DRIVER_ LAN91C96   HdKLinux联盟
  #define CONFIG_LAN91C96_BASE  0x04000300 /* base address         */HdKLinux联盟
  修改为HdKLinux联盟
  #define CONFIG_DRIVER_RTL8019   //we have a RTL8019AS chipHdKLinux联盟
  #define RTL8019_BASE 0x6000000
 
  //修改 原值为0c700000HdKLinux联盟
  //#define CFG_LOAD_ADDR  0x0c800000 /* default load address */HdKLinux联盟
  //这是uclinux加载的地址,将uclinux内核下载到sdram后运行的地址
HdKLinux联盟
  修改HdKLinux联盟
  //sdram和Nor flash的参数地址和大小,修改为自己开发办上相应的值。HdKLinux联盟
  /* Physical Memory Map*/HdKLinux联盟
  #define CONFIG_NR_DRAM_BANKS 1    /* we have 1 banks of DRAM */HdKLinux联盟
  #define PHYS_SDRAM_1  0x0c000000 /* SDRAM Bank #1 */HdKLinux联盟
  #define PHYS_SDRAM_1_SIZE 0x00800000 /* 8 MB */
  #define PHYS_FLASH_1  0x00000000 /* Flash Bank #1 */HdKLinux联盟
  #define PHYS_FLASH_SIZE  0x00200000 /* 2MB */
  #define CFG_FLASH_BASE  PHYS_FLASH_1
HdKLinux联盟
2. /cpu/s3c44b0/serial.c
  #if CONFIG_S3C44B0_CLOCK_SPEED==60 HdKLinux联盟
  divisor = 32;
 
3. cpu/s3c44b0/start.S:
  ldr r1, =PLLCON
  #if CONFIG_S3C44B0_CLOCK_SPEED==60 HdKLinux联盟
  ldr r0, = 0x88042HdKLinux联盟
  #elif CONFIG_S3C44B0_CLOCK_SPEED==75 HdKLinux联盟
  ldr r0, =0x610c1 /*B2: Xtal=20mhz Fclk=75MHz */ HdKLinux联盟
  #elif CONFIG_S3C44B0_CLOCK_SPEED==64 HdKLinux联盟
  ldr r0, =((M_DIV<<12)+(P_DIV<<4)+S_DIV) //Fin=8MHz,Fout=64MHz HdKLinux联盟
  #else HdKLinux联盟
  #error CONFIG_S3C44B0_CLOCK_SPEED undefined HdKLinux联盟
  #endif
 
  中断向量表部分:HdKLinux联盟
  add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
 add pc, pc, #0x0c000000HdKLinux联盟
  修改为:HdKLinux联盟
        LDR PC, Undefined_Addr HdKLinux联盟
        LDR PC, SWI_Addr HdKLinux联盟
        LDR PC, Prefetch_Addr HdKLinux联盟
        LDR PC, Abort_Addr HdKLinux联盟
        LDR PC,RESERVE_Addr HdKLinux联盟
        LDR PC, IRQ_Addr HdKLinux联盟
        /* subs pc,lr,#4*/ HdKLinux联盟
        LDR PC, IRQ_Addr HdKLinux联盟
        /* subs pc,lr,#4*/
        Undefined_Addr: HdKLinux联盟
        .word 0x0c000004 HdKLinux联盟
        SWI_Addr: HdKLinux联盟
        .word 0x0c000008 HdKLinux联盟
        Prefetch_Addr: HdKLinux联盟
        .word 0x0c00000C HdKLinux联盟
        Abort_Addr: HdKLinux联盟
        .word 0x0c000010 HdKLinux联盟
        RESERVE_Addr: HdKLinux联盟
        .word 0x0c000014 HdKLinux联盟
        IRQ_Addr: HdKLinux联盟
        .word 0x0c000018 HdKLinux联盟
        FIQ_Addr: HdKLinux联盟
        .word 0x0c00001C
HdKLinux联盟
4. /board/dave/common/flash.c
  flash_get_offsets函数中的flash芯片块的大小如下HdKLinux联盟
  /* set up sector start address table */HdKLinux联盟
   if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||HdKLinux联盟
       ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {HdKLinux联盟
       for (i = 0; i < info->sector_count; i++)HdKLinux联盟
          info->start[i] = base + (i * 0x00008000);//39VF1601 每块大小为32K
  flash_get_size函数中增加flash芯片信息HdKLinux联盟
    case (CFG_FLASH_WORD_SIZE)SST_ID_xF1601://增加VF1601的判断语句HdKLinux联盟
    info->flash_id += FLASH_SST160A;HdKLinux联盟
    info->sector_count = 64;//总共2M,每块32k,共64HdKLinux联盟
    info->size = 0x00200000;HdKLinux联盟
    break;    /* => 2 MB  */
 
  文件中B2全修改为ULong44b0
 
5. /drivers/rtl8019.h
  36 #define ETH_ADDR_SFT (8) HdKLinux联盟
  37 #define EI_SHIFT(x) ((x)<<ETH_ADDR_SFT) HdKLinux联盟
  38 HdKLinux联盟
  39 #define RTL8019_REG_00 (RTL8019_BASE + EI_SHIFT(0x00)) HdKLinux联盟
  40 #define RTL8019_REG_01 (RTL8019_BASE + EI_SHIFT(0x01))
     #define RTL8019_REG_02  ...HdKLinux联盟
      ...
HdKLinux联盟
6. /board/dave/ULong44b0/lowlevel_init.S
  MEMORY_CONFIG: HdKLinux联盟
  .long 0x11010102 HdKLinux联盟
  .long 0x600 HdKLinux联盟
  .long 0x7ffc HdKLinux联盟
  .long 0x7ffc HdKLinux联盟
  .long 0x7ffc HdKLinux联盟
  .long 0x7ffc HdKLinux联盟
  .long 0x2610 HdKLinux联盟
  .long 0x18000 HdKLinux联盟
  .long 0x18000 HdKLinux联盟
  .long 0x960459 HdKLinux联盟
  .long 0x10 HdKLinux联盟
  .long 0x20 HdKLinux联盟
  .long 0x20
7. /include/configs/ULong44b0.h
  79 #define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \ HdKLinux联盟
  80 CFG_CMD_DATE | \ HdKLinux联盟
  81 CFG_CMD_ELF | \ HdKLinux联盟
  82 CFG_CMD_NET | \ HdKLinux联盟
     CFG_CMD_PING | \HdKLinux联盟
  83 CFG_CMD_ENV|CFG_CMD_FLASH ) HdKLinux联盟
  173 #define CFG_ENV_IS_IN_FLASH HdKLinux联盟
  174 #undef CFG_ENV_IS_NOWHERE HdKLinux联盟
  175 HdKLinux联盟
  176 #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x20000) /* environment start address */ HdKLinux联盟
  177 #define CFG_ENV_SECT_SIZE 0x10000 /* Total Size of Environment Sector */
 
  增加宏HdKLinux联盟
  #define CFG_MONITOR_BASE PHYS_SDRAM_1HdKLinux联盟
  HdKLinux联盟
三:编译出错后的修改
HdKLinux联盟
  /cpu/s3c44b0/下的config.mk:HdKLinux联盟
  PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)HdKLinux联盟
  改成:HdKLinux联盟
  PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),)HdKLinux联盟
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
    无相关信息
栏目更新
栏目热门