电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章电子制作电子制作自制廉价的Arm9 开发平台

自制廉价的Arm9 开发平台

10-31 07:03:18 | http://www.5idzw.com | 电子制作 | 人气:100
标签:电子制作网,http://www.5idzw.com 自制廉价的Arm9 开发平台,http://www.5idzw.com

2.3 扩充SDRAM
    路由板上的SDRAM只有8MB,由于Demo板的SDRAM是16MB,为了方便直接运行Demo板的Linux系统,需要为路由板扩充8M SDRAM。板上使用的SDRAM型号为IC42S16400-7TG,在市场中并不常见,根据查看该型号SDRAM的规格书,我们选取与其兼容的HY57V641620HG型号的SDRAM。由于路由板上原来就留有另一片SDRAM的焊接位置,扩充比较容易,只需要在焊接时注意芯片的1脚的位置,不要将芯片焊反了。SDRAM周围缺少的器件也都要焊上,排阻为33欧姆,电容使用0.1uF。由于原来路由器中的程序会检测外围SDRAM的数据宽度,进行SDRAM扩充后,原来程序将自动用32位数据宽度进行访问。所以在扩充SDRAM后,给路由板上电如串口输出正常(如图5所示),则说明扩充成功。
    经过以上步骤,路由板的硬件改造已经完成,接下来就是要编写,移植软件,使路由板成为VxWorks与Linux操作系统的开发平台。

3 软件编写
3.1 Flash烧写软件
    由于扩充了JTAG接口,我们可以自己编写一个程序,对板上的Flash进行擦写。具体原理是在路由板启动后,通过AXD中的命令行,设置KS8695X中的寄存器,将Flash与SDRAM映射到特定的区域,然后将擦写程序下载到SDRAM中运行,对板上的Flash进行编程。关于这方面文章网上已经有很多,同时还提供有源代码,在此就不再赘述。这里只把要点说一下。由于Arm9芯片具有MMU单元,默认的路由板上的原始程序是Linux,默认情况下会把MMU单元打开,使用数据缓存,所以我们在AXD Command窗口中执行内存区域配置时,要先把开着的MMU单元和数据缓存关闭,这样对KS8695寄存器的配置才会正确。对MMU中寄存器的设置如下图所示:
   
图8 AXD中CP15寄存器的设置
    在Command窗口中键入命令obey C:/cfg.ini(假定自己编写的配置文件cfg.ini在C盘根目录下),SDRAM被映射到了0x0—0xFFFFFF区域,Flash被映射到了0x2800000—0x29fffff区域。将Flash烧写程序下到0x0处开始运行,将串口波特率设置为115200,串口输出如图9所示。按“1”键选择烧写Flash,从DNW的“serial port”菜单中选transmit,然后选择发送要烧录的文件就可以对Flash进行擦写了。我的路由板上使用的Flash芯片型号为Spansion公司的S29AL016D70,不同型号的Flash,扇区分布与厂家ID可能不同,擦写协议也有可能不同,要对相应部分的程序做适当的修改。
  
图9 Flash擦写程序串口输出

3.2 VxWorks BSP包的移植
    Demo程序自带VxWorks的BSP包。根据Demo板的Datasheet[1]和VxWorks说明文档[2]中的说明,我们选择与这块路由板的配置基本相同的KS8695X构建目标进行改造。经过比较两者最大的差别就是在Flash部分,因而需要改写BSP包中与Flash接口的部分。其中包括Flash的初始化、擦写逻辑、程序在Flash中的布局,文件系统与Flash的接口等[3]。涉及到的主要文件与实现的功能如表1所示:

文件名 修改说明
Ks8695p.h、config.h 提供路由板相关寄存器设置值
flashFsLib.c 实现FAT文件系统接口
flashDrvLib.c 实现Flash操作接口
flashAmdMem.h、flashAmdMem.c 具体实现S29AL016D70的各种操作
flashMem.h、flashMem.c 提供程序在Flash中存储的位置和系统记录启动参数的接口

上一页  [1] [2] [3] [4]  下一页

,自制廉价的Arm9 开发平台
关于《自制廉价的Arm9 开发平台》的更多文章