文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>u-boot移植44b0的详细步骤

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

时间:2007-05-02  来源:whut10

一:建立工程文件
1.修改/board/dave/B2为/board/dave/ULong44b0
2.修改/board/dave/ULong44b0/B2.c为ULong44b0.c
3.修改/board/dave/ULong44b0/Makefile中B2.o为ULong44b0.o
4.修改/include/configs/B2.h为ULong44b0.h
  5.修改/Makefile
  B2_config       :       unconfig
          @./mkconfig $(@:_config=) arm s3c44b0 B2 dave
  为
  ULong44b0_config       :       unconfig
          @./mkconfig $(@:_config=) arm s3c44b0 ULong44b0 dave
  二:详细修改
1. /include/configs/ULong44b0.h
  #define CONFIG_B2   1 /* on an B2 Board      */
  修改为
  #define CONFIG_ULong44b0        1     /* on an tti44b Board      */
    #define CONFIG_S3C44B0_CLOCK_SPEED 75 /* we have a 75Mhz S3C44B0*/
  修改为
  #define CONFIG_S3C44B0_CLOCK_SPEED 60 /* we have a 60 Mhz S3C44B0*/
    #define CONFIG_DRIVER_ LAN91C96   
  #define CONFIG_LAN91C96_BASE  0x04000300 /* base address         */
  修改为
  #define CONFIG_DRIVER_RTL8019   //we have a RTL8019AS chip
  #define RTL8019_BASE 0x6000000
    //修改 原值为0c700000
  //#define CFG_LOAD_ADDR  0x0c800000 /* default load address */
  //这是uclinux加载的地址,将uclinux内核下载到sdram后运行的地址

  修改
  //sdram和Nor flash的参数地址和大小,修改为自己开发办上相应的值。
  /* Physical Memory Map*/
  #define CONFIG_NR_DRAM_BANKS 1    /* we have 1 banks of DRAM */
  #define PHYS_SDRAM_1  0x0c000000 /* SDRAM Bank #1 */
  #define PHYS_SDRAM_1_SIZE 0x00800000 /* 8 MB */
  #define PHYS_FLASH_1  0x00000000 /* Flash Bank #1 */
  #define PHYS_FLASH_SIZE  0x00200000 /* 2MB */
  #define CFG_FLASH_BASE  PHYS_FLASH_1
2. /cpu/s3c44b0/serial.c
  #if CONFIG_S3C44B0_CLOCK_SPEED==60
  divisor = 32;
  3. cpu/s3c44b0/start.S:   ldr r1, =PLLCON   #if CONFIG_S3C44B0_CLOCK_SPEED==60
  ldr r0, = 0x88042
  #elif CONFIG_S3C44B0_CLOCK_SPEED==75
  ldr r0, =0x610c1 /*B2: Xtal=20mhz Fclk=75MHz */
  #elif CONFIG_S3C44B0_CLOCK_SPEED==64
  ldr r0, =((M_DIV<<12)+(P_DIV<<4)+S_DIV) //Fin=8MHz,Fout=64MHz
  #else
  #error CONFIG_S3C44B0_CLOCK_SPEED undefined
  #endif
    中断向量表部分:
  add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
 add pc, pc, #0x0c000000
  修改为:
        LDR PC, Undefined_Addr
        LDR PC, SWI_Addr
        LDR PC, Prefetch_Addr
        LDR PC, Abort_Addr
        LDR PC,RESERVE_Addr
        LDR PC, IRQ_Addr
        /* subs pc,lr,#4*/
        LDR PC, IRQ_Addr
        /* subs pc,lr,#4*/
        Undefined_Addr:
        .word 0x0c000004
        SWI_Addr:
        .word 0x0c000008
        Prefetch_Addr:
        .word 0x0c00000C
        Abort_Addr:
        .word 0x0c000010
        RESERVE_Addr:
        .word 0x0c000014
        IRQ_Addr:
        .word 0x0c000018
        FIQ_Addr:
        .word 0x0c00001C

4. /board/dave/common/flash.c
  flash_get_offsets函数中的flash芯片块的大小如下
  /* set up sector start address table */
   if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
       ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
       for (i = 0; i < info->sector_count; i++)
          info->start[i] = base + (i * 0x00008000);//39VF1601 每块大小为32K
  flash_get_size函数中增加flash芯片信息
    case (CFG_FLASH_WORD_SIZE)SST_ID_xF1601://增加VF1601的判断语句
    info->flash_id += FLASH_SST160A;
    info->sector_count = 64;//总共2M,每块32k,共64
    info->size = 0x00200000;
    break;    /* => 2 MB  */
    文件中B2全修改为ULong44b0   5. /drivers/rtl8019.h   36 #define ETH_ADDR_SFT (8)
  37 #define EI_SHIFT(x) ((x)<<ETH_ADDR_SFT)
  38
  39 #define RTL8019_REG_00 (RTL8019_BASE + EI_SHIFT(0x00))
  40 #define RTL8019_REG_01 (RTL8019_BASE + EI_SHIFT(0x01))
     #define RTL8019_REG_02  ...
      ...

6. /board/dave/ULong44b0/lowlevel_init.S
  MEMORY_CONFIG:
  .long 0x11010102
  .long 0x600
  .long 0x7ffc
  .long 0x7ffc
  .long 0x7ffc
  .long 0x7ffc
  .long 0x2610
  .long 0x18000
  .long 0x18000
  .long 0x960459
  .long 0x10
  .long 0x20
  .long 0x20
7. /include/configs/ULong44b0.h   79 #define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \
  80 CFG_CMD_DATE | \
  81 CFG_CMD_ELF | \
  82 CFG_CMD_NET | \
     CFG_CMD_PING | \
  83 CFG_CMD_ENV|CFG_CMD_FLASH )
  173 #define CFG_ENV_IS_IN_FLASH
  174 #undef CFG_ENV_IS_NOWHERE
  175
  176 #define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x20000) /* environment start address */
  177 #define CFG_ENV_SECT_SIZE 0x10000 /* Total Size of Environment Sector */
    增加宏
  #define CFG_MONITOR_BASE PHYS_SDRAM_1
 
三:编译出错后的修改

  /cpu/s3c44b0/下的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),)
 
 
 
 
相关阅读 更多 +
排行榜 更多 +
追漫大师兄

追漫大师兄

浏览阅读 下载
手画攀爬者

手画攀爬者

休闲益智 下载
共享亿客

共享亿客

购物比价 下载