新闻  |   论坛  |   博客  |   在线研讨会
u-boot 1.3.4 移植到 FS2410 摘记
mayer | 2009-07-12 13:02:10    阅读:1728   发布文章

u-boot 1.3.4 移植到 FS2410 摘记
    最近开始在FS2410上移植u-boot1.3.4, 经过两天的程序准备, 利用这个周六在家调试了一天, 总算可以看到基本的信息了, 现将一些基本的内容记录如下, 以便日后查找同时也希望可以给同行一些帮助. 文中很多内容来自网络, 但是并非照抄一家, 在此不能一一谢过, 文中如有侵权内容, 请通知我, 我会删去!

1. Linux命令小结
    编译u-boot, 离不开linux. 我习惯在windows上编写程序, 之后送到Linux下编译. 这里常用的linux命令主要就是解压与打包:
 tar -jxvf   解压tar.bz2文件
 tar -jcvf name.tar.bz2 dirname 创建tar.bz2文件
    其他的特殊命令暂时没有遇到, 真有的话可以网上查查.

2. 交叉编译环境
    编译u-boot需要arm-linux-gcc, 如果自己生成的话既麻烦费时, 也不容易成功. 幸好好多开发板厂商给了现成的, 同时网络上也有下载, 我用的是优龙提供的3.3.2版本的工具链.
    首先将cross-3.3.2.tar.bz2解压到/usr/local/arm-linux文件夹.
    然后修改环境变量PATH, 在linux下编辑/etc/profile文件, 在文件的最后一行加入如下内容:
 PATH=$PATH:/usr/local/arm-linux/3.3.2/bin
    最后命令行输入 source /etc/profile, 使新的环境变量生效, 可以通过env查看.
    关于vi编辑器的使用方法, 可以查看我的日志: http://blog.ednchina.com/zhurunping/239630/message.aspx

    以上为编译准备工作, 下面开始u-boot的移植.

3. 板级相关文件的创建与修改
    对于2410, 我们以smdk2410为模板. 这里我的名称为net2410e.
    在board文件夹下, 拷贝smdk2410为net2410e. 然后修改文件夹下如下文件:
     smdk2410.c改名为net2410e.c, 同时作如下修改:
  [0] 时钟设置: 在board_init()函数中首先利用如下语句设置总线为异步总线模式.
   __asm__ ("mrc p15,0,r1,c1,c0,0\n"
              "orr r1,r1,#0xc0000000\n"
              "mcr p15,0,r1,c1,c0,0\n"
              :::"r1"
          );
 lowlevel_init.S中修改SDRAM的配置如下:
  这里主要修改 BANK6 部分, 也就是SDRAM.
   => B6_BWSCON= DW32 32bit
   => B6_MT  = 0x3 SDRAM
   => REFCNT  = 1268 (HCLK=100M)
 Makefile作如下修改:
  COBJS   := smdk2410.o flash.o 修改为:
  COBJS   := net2410e.o flash.o
 flash.c为flash驱动程序, 原为AMD flash, 需要改为SST flash, 具体文件我已在附件中给出, 请参考.

    在include/configs文件夹下复制smdk2410.h为net2410e.h, 同时修改net2410e.h:
 AMD flash相关配置均可删除, 加入如下内容:

  #define CONFIG_SST_39VF1601 1   // SST39VF1601

  // SST39VF1601 配置
  #ifdef CONFIG_SST_39VF1601
  #define PHYS_FLASH_SIZE  0x00200000  // FLASH大小: 2M
  #define CFG_MAX_FLASH_SECT 512   // 扇区数目
  #define CFG_ENV_ADDR  (CFG_FLASH_BASE+0x40000)// 环境变量地址
  #endif
 同时对命令提示符作出修改:
  #define CFG_PROMPT  "NET2410_E # "
 该文件附件中可以下载.

4. 全局Makefile修改
    修改u-boot-1.3.4下Makefile:
 在
  smdk2410_config :   unconfig
   @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
 后添加:
  net2410e_config :   unconfig
   @$(MKCONFIG) $(@:_config=) arm arm920t net2410e NULL s3c24x0

5. 至此基本部分已经编写完毕, 将文件通过网络存入linux下, 通过如下命令编译:
 make distclean
 make net2410e_config
 make
    没有问题的话可以生成u-boot.bin, 之后烧入NOR flash启动即可看到信息.

6. 调试中遇到的问题
    [1] flash启动中读到的ID为FLASH中存储的数据, 解决方法如下:
      1). 查看flash操作地址是否定义为16bit指针.
      2). 查看flash操作地址是否正确, 仔细核对数据手册.
      3). 查看flash操作命令是否正确.
    [2] u-boot命令提示符未作修改, 仍然是SMDK2410, 检查发现是net2410e.h文件中CFG_PROMPT未作修改.

    至此u-boot移植第一步基本完成, 暂时记录在此, 后续工作仍将继续, 欢迎大家指教!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客
站长统计