uboot移植

 1.修改 Makefile
     使其支持smd2440
  2.复制头文件  
     /include/configs/smdk2440.h
  3.复制board文件夹
      /board/smdk2440

  4.时钟的设置

  5.sdram的配置
     位宽 刷新周期。。。

  6.支持 norflash 

       目的              ;   实现用命令擦除,烧写nor flash 

       支持的norflash分类; uboot 1.1.6 默认支持amd_lv400  amd_lv800 或  CFI接口norflash  

                            (其他类型的norflash需要自己写驱动)

        接口函数         ;   amd_lv400  amd_lv800 的接口函数在/board/smdk2440/flash.C  需要添加到 Makefile 里

                             CFI接口norflash的接口函数在/drivers/Cfi_flash.c 中    

    类型选择方式   ;   配置文件(/include/configs/smdk2440.h)中定义

                  CONFIG_AMD_LV400 或 CONFIG_AMD_LV400 或CFG_FLASH_CFI_DRIVER 

                  决定使用哪种 flash
  7.  支持串口xmodem协议 

         目的            使用securecrt工具操作 uboot

         常用的串口协议 xmodem ymodem zmodem

  8.支持网卡cs9000

         网卡属于内存类接口  这配置sdram时 已经将其配置 

         主要检查他的 位宽

         同时配置文件   (/include/configs/smdk2440.h)中做定义

         #define CONFIG_DRIVER_CS8900 1  
         #define CS8900_BASE
         #define CS8900_BUS16  

  9.支持dm9000

        同时配置文件   (/include/configs/smdk2440.h)中做定义

        #define CONFIG_DRIVER_DM9000  1
    #define CONFIG_DM9000_USE_16BIT  1
    #define CONFIG_DM9000_BASE   0x20000000
    #define DM9000_IO     0x20000000  
    #define DM9000_DATA     0x20000004
 10.支持 nandflash

       uboot 对nand的支持有新旧两套代码  /drivers/nand  /drivers/nand_legacy

       配置文件的配置     
             CONFIG_COMMANDS 中添加 CFG_CMD_NAND  

       两套代码的选择

             默认选择   /drivers/nand  当定义CFG_NAND_LEGACY
       一些宏的定义

            #define CFG_NAND_BASE           0  基地址
      #define CFG_MAX_NAND_DEVICE     1 设备个数
            #define NAND_MAX_CHIPS          1  一个设备由几片 nand芯片组成

        nand的初始化函数   nand_init()

            nand_init()
                 -->nand_init_chip
                          --> board_nand_init(这个函数需要自己写)

            在include/s3c24x0.h中添加 nand的结构体   
                  typedef struct {
             S3C24X0_REG32   NFCONF;
             S3C24X0_REG32   NFCONT;
             S3C24X0_REG32   NFCMD;
             S3C24X0_REG32   NFADDR;
             S3C24X0_REG32   NFDATA;
             S3C24X0_REG32   NFMECCD0;
             S3C24X0_REG32   NFMECCD1;
             S3C24X0_REG32   NFSECCD;
             S3C24X0_REG32   NFSTAT;
             S3C24X0_REG32   NFESTAT0;
             S3C24X0_REG32   NFESTAT1;
             S3C24X0_REG32   NFMECC0;
             S3C24X0_REG32   NFMECC1;
             S3C24X0_REG32   NFSECC;
             S3C24X0_REG32   NFSBLK;
             S3C24X0_REG32   NFEBLK;
          } /*__attribute__((__packed__))*/ S3C2440_NAND;

      在include/s3c2410.h中添加 s3c2440_GetBase_NAND 函数

      写board_nand_init()函数在cpu/arm920t/s3c24x0/nand_flash.C

      这里的内容可以参考内核drivers/mtd/nand/s3c2410.c编写 

 11. 支持yaffs根文件系统的烧写 

 12.默认参数的定义 

         配置文件   (/include/configs/smdk2440.h)中做定义
         传给内核
               #define CONFIG_SETUP_MEMORY_TAGS    1
      #define CONFIG_CMDLINE_TAG          1
         在do_bootm_linux里设置tags判断
         启动参数;
         #define CONFIG_BOOTDELAY 2
         #define CONFIG_BOOTARGS     "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0"
       #define CONFIG_BOOTCOMMAND "read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0"
       网洛参数
       #define CONFIG_ETHADDR     08:00:3e:26:0a:5b
       #define CONFIG_NETMASK      255.255.255.0
       #define CONFIG_IPADDR  192.168.7.17
       #define CONFIG_SERVERIP  192.168.7.11
       其他
       #define CFG_PROMPT  "OpenJTAG> " /* Monitor Command Prompt */  命令前缀
          
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章