打印
[ZLG-ARM]

自制廉价的Arm9 开发平台

[复制链接]
1657|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lpc2410|  楼主 | 2009-7-3 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 改造系统的选取
         要动手改造Arm9开发系统,首先要选取一款进行改造的产品。

         现在基于Arm9内核的单片机被广泛的应用于家用路由器和手机当中,因而这两类产品可以作为我们寻找改造对象的范围。但由于手机总体的价格偏高,同时集成度比较高,电路系统复杂,因而不适合作为我们改造的对象。

         而路由器恰恰相反,现在100多元的路由器比比皆是,而且这些路由器基本使用单芯片,该芯片除了具有Arm9核心的控制功能外,还具有硬件上的路由算法支持,因而电路相对简单,便于改造,所以廉价的路由器就是改造Arm9开发板的合适对象。

          经过反复比较以后,最终选择了ipTIME的IP0422。该款路由器的市场价格在100元左右,主芯片为KS8695X,是高度集成化的网络通讯处理器,具有ARM922T内核。同时该路由器还具有2M Flash,8M SDRAM,同时还留有一个SDRAM焊位,可以方便的把SDRAM的容量扩充为16M,为我们运行操作系统提供了足够的空间。

           选择该款路由器的另一个主要原因时主芯片KS8695X提供了完备的开发资料(高度集成化的网络通讯处理器),可以方便的从Micrel公司的FTP上(ftp://www.micrel.com)下载获得(文中所涉及到的芯片相关资料都从该FTP下载)。

           开发资料中包括了供KS8695X DEMO板运行的Linux操作系统的源代码和VxWorks系统的BSP源代码包,虽然KS8695X DEMO与我们进行改造的路由器的硬件配置不同,但只要做少许移植工作,便可以让以上程序支持我们的开发板,大大简化了我们的改造过程。IP0422路由器改造完成的电路板和电路板版本号如图1所示。以下将从硬件改造与软件DEMO移植两方面,详细阐述对IP0422的改造过程。
2 硬件改造
2.1 串口
     串口对一个嵌入式系统是致关重要的,通过串口可以与嵌入式系统进行交互,我们首先进行系统的串口改造:
     
     如图2所示,电路板上原本就将串口以4星条针的形式引出,估计是为了以后方便维修而设置的。

     经过分析发现,为了抗干扰,电路板上将主芯片串口的RX管脚进行了上拉,因而在一般使用中主芯片不会接收到任何的输入信号。所以我们对串口的改造分为两步:
     1)去掉RX管脚上的上拉电阻;
     2)自己搭建一个串口电平转换电路,使串口可以与PC机通信。
2.2 JTAG接口

    JTAG接口是作为开发板必须具备的。我们可以通过JTAG接口对板上的程序进行简单的调试,同时,还可以通过JTAG,将程序下载到板上的SDRAM中,对板上的Flash进行擦写操作。

    对JTAG的改造要比串口困难,因为电路板上并没有为我们引出该接口,我们只有自己想办法做一个引出接口。

    如图6所示,图示位置将电路板的绝缘层用小刀刮掉,露出里面的铜箔,将一个2x10的条形插针一面的9个脚焊在该铜箔上,形成接地,这与我们将要使用的wiggle简易JTAG接口是一致的,同时还可以起到固定整个插座的作用。条针的2脚与串口接口中的3.3V电源端相连,作为简易JTAG接口的电源脚。然后将芯片上的与JTAG相关的各个管脚引出。如图6所示,绿色线一端连条针的第5脚,一端连芯片TDI上拉电阻R27的一端;橙色线一端连条针的第7脚,一端连芯片TMS上接电阻R28的一端;蓝色线一端连条针的第9脚,一端连芯片TCK上拉电阻R29的一端;白线一端连条针的第13脚,一端直接与芯片的TDO(113脚)相连。其中白色线与芯片的TDO(113脚)相连端是焊接的难点,由于芯片管脚太密,直接焊接很容易照成相邻管脚间的短路,所以建议将该管脚翘起来(如图6所示),然后再焊接,操作时要十分小心。


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寄存器的配置才会正确。
3.2 VxWorks BSP包的移植
    Demo程序自带VxWorks的BSP包。根据Demo板的Datasheet[1]和VxWorks说明文档[2]中的说明,我们选择与这块路由板的配置基本相同的KS8695X构建目标进行改造。经过比较两者最大的差别就是在Flash部分,因而需要改写BSP包中与Flash接口的部分。其中包括Flash的初始化、擦写逻辑、程序在Flash中的布局,文件系统与Flash的接口等[3]。
3.3 u-boot和Linux的移植
    开发包中带有供Demo使用的Linux系统,由于Demo板使用的Flash为4M[4],该Linux系统中Linux内核加上文件系统有2M多,路由板上使用的是2M的Flash,而且没有扩充的可能性,显然不能直接使用。经过对Demo板自带的引导程序的分析,发现Demo板在运行Linux前,引导程序将Linux系统整个拷贝到16M的SDRAM中运行。我们的路由板已经扩充为16M的SDRAM,所以我们可以不将Linux系统存储在Flash中,而直接使用网络,将Linux系统下载到SDRAM中然后运行。当然,要将Linux直接下载到SDRAM中运行,还需要有引导程序的帮助。u-boot是Arm系统中广泛使用的引导程序,同时其中已经有使用KS8695芯片的构建目标,目标的配置名称是cm4008,所以我们选择在原来的构建目标上进行改造,将u-boot移植到我们的路由板上。

相关帖子

沙发
qtopia| | 2009-7-4 12:55 | 只看该作者

不错!不过还是搞个专门的板子比较合适

使用特权

评论回复
板凳
lpc2410|  楼主 | 2009-7-6 13:30 | 只看该作者

自制的中吗?

使用特权

评论回复
地板
chun1chun| | 2009-7-7 13:41 | 只看该作者

使用特权

评论回复
5
armqt| | 2009-7-7 13:54 | 只看该作者

使用特权

评论回复
6
tmake| | 2009-7-9 13:10 | 只看该作者

去买一个吧啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

124

帖子

0

粉丝