博客网 >

[转]EDB9315A的U-Boot移植
作者:分类:默认分类标签:
1.硬件电路与启动方式
EDB9315A开发板采用的是基于ARM920T的EP9315的芯片;
SDRAM接在nSDCE0上,两块K4S561632E-UC75,总大小为64M;
FLASH接在nCS6上,一块JS28F128-J3D75,总大小为16M,128KB/Block。

EDB9315A采用的是EP9315芯片的片内Boot ROM启动,关于具体的启动方式可参见EDB9315A的《Technical Reference Manual》,我只简单描述Boot ROM中的部分启动方式。

UART Download模式:
启动Cirrus Logic提供的download.exe程序,烧写bin文件;
例:download u-boot.bin
按下S1进入串口下载模式;
接着按下S3,当红灯灭的时候放开S1;
bin文件被下载,并被烧写到Flash的零地址处;
烧写完成后释放S3。

注:关于download程序,Cirrus公司有提供源码,我没有分析过源码,但是从启动方式的描述中得知,这种模式只会从串口接受2KB的数据并存储到MAC的缓冲区启动,所以猜测这段2KB的程序应该是个负责下载和烧写的程序,如果各位有兴趣的,可以自己去研究。

FLASH启动模式:
先检测Flash的0x0地址处是否有CRUS或SURC的ASCII码;
如果有,从Flash的0x4地址处读取代码执行;
如果没有,检测Flash的0x1000处是否有CRUS或SURC的ASCII码;
如果有,从Flash的0x0地址处读取代码执行;

注:Boot ROM中Flash的启动方式为以上两种,Cirrus提供的Redboot采用的是后一种启动方式,在U-Boot中用了前一种启动方式。

2.U-Boot移植过程
移植中首先参考了EP9312的一个Patch,在此Patch的基础上进行了移植。

移植过程
修改board/edb93xx目录下文件:
修改config.mk中的TEXT_BASE地址为0xc3f00000;
修改SDRAM初始化过程,相关代码在memsetup.S和sdramcfg.S两个汇编文件里;
修改edb93xx.c文件中对0x80080018的赋值,Flash在EDB9315A中的位宽为16位;
修改flash.c文件,在EP9312的patch中,此程序是对位宽位32位的Flash(电路上应该是两块16位宽的Flash并联)进行操作,所以并不适用于EDB9315A的开发板,修要对代码进行修改,参考Intel的28F128J3的Datasheet,可了解Flash的一些基本操作过程;
EP9312的Patch对网卡和串口的初始化及操作都没有问题,所以不用修改。

注:修改U-Boot代码的过程中参考了Cirrus Logic提供的Redboot代码,从中得到了许多帮助。

使用方法
#tar -zxf patchfile.tar.gz
#cp patchfile u-boot-1.1.2/
#cd u-boot-1.1.2
#patch -p1 < patchfile
#make edb9315_config
#make
附:
1. EP9312 Patch(本地下载)
原下载地址:http://www.dave-tech.it/download/misc/sw/edb93xx/u-boot-edb93xx-3
2. EDB9315A Patch
3. u-boot.bin(EDB9315A)

补:此uboot引导内核要跑飞,具体原因没有时间找,但可以将uboot引导中效验代码段去掉,直接引导zImage文件,可正常运行。
<< [转][译]ARM Linux的... / [转]GCC交叉编译器的制作 >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

Quby

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档