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
用户377235 2012-5-11 16:07
很好,很实用,正在做这方面的研究
用户1156376 2009-7-17 22:29
用户1156376 2009-7-13 12:16
用户1403864 2008-8-10 20:19