原创 u-boot 1.3.4 移植到 FS2410 摘记

2009-7-11 23:56 2848 9 11 分类: MCU/ 嵌入式

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移植第一步基本完成, 暂时记录在此, 后续工作仍将继续, 欢迎大家指教!


https://static.assets-stash.eet-china.com/album/old-resources/2009/7/11/631cbe8e-b7e0-4f3f-93e7-86fb66107370.rar

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户377235 2012-5-11 16:07

很好,很实用,正在做这方面的研究

用户1156376 2009-7-17 22:29

NAND flash启动的问题已经解决,有兴趣的请转到下面页面: http://blog.ednchina.com/zhurunping/244367/message.aspx

用户1156376 2009-7-13 12:16

调试问题:bad CRC请参下文: usl:http://blog.ednchina.com/zhurunping/243095/message.aspx# NAND flash的支持工作正在进行中。

用户1403864 2008-8-10 20:19

正在研究sip协议! 感觉还是sip好
相关推荐阅读
用户1156376 2014-08-18 17:23
[博客大赛]MDK下代码的分段管理 续3
继续写点分段管理的问题。 设计思想主要是设计一个通用的BSP,固化后只需要修改APP代码就可以,这适用于远程升级的系统或是进行二次开发的系统。 考虑到编译器链接的时候会把没有使用的代码段(...
用户1156376 2014-02-27 18:14
Freescale MCU SPI
Freescale S12 SPI: 0. 以下所述为查询模式使用SPI 1. SPI控制器有两个中断, 数据发送(SPTEF)和数据接收(SPIF) 2. 数据发送(SPTEF)标志...
用户1156376 2014-02-26 09:17
Freescale MCU摘记
仅用于记录Freescale的点滴记录: 1. 把AD口用作IO口的方法: 除了正常的设置外,还需要把 ATDDIEN 寄存器写为0xFF, 这样使能了数字IO。否则默认为AD输入。 ...
用户1156376 2013-12-14 11:33
[STM32]MDK下代码的分段管理 续2
前文所述的代码分段,限定比较大,对于使用 #pragma arm section code=".ARM.__at_0x8100000" 固定地址的方式,每个文件都需要指定不同的地址以区别。...
用户1156376 2013-12-09 18:12
[STM32]MDK下代码的分段管理
编译大型的程序时,可能某一段代码固定之后不再改变(比如BSP),而应用部分经常修改。在这种情况下,如果使用在线升级或是Bootloader的方式升级程序时,你就觉得每次升级的代码有一部分是重复的(...
用户1156376 2012-10-14 09:10
【uCOS-III移植笔记】OS启动过程
(1) 关闭系统中断 (2) CPU_Init(); 初始化CPU服务(时间戳、中断时间测量、CPU信息初始化等) (3) OSInit(); 初始化系统(系统变量、系统任务...
EE直播间
更多
我要评论
2
9
关闭 站长推荐上一条 /3 下一条