用户中心

资讯 > 嵌入式系统

Clinux在MIPS上的移植

作者:马草飞2006.04.19阅读 2499

摘    要:本文描述了将Clinux移植到基于MIPS R3K处理器的目标板上的方法和过程,说明了如何搭建移植环境,并着重讨论了移植中需要注意的问题。

关键词:Clinux;MIPS;移植;ROMFS;BootLoader


引言
Clinux是标准Linux的一个分支,它继承了Linux的大部分优点,并能够实现对没有MMU的处理器的支持CONTROL ENGINEERING China版权所有,所以被广泛地应用于嵌入式领域。本文将其移植到了基于MIPS R3K处理器的目标板上,处理器的工作频率为100MHz。目标板上的其它主要资源还包括:2个串口(16550A),波特率9600;网卡(RTL8019AS);512K  ROM(AM29F040),以及64M SDRAM。开发板与主机的连接如图1所示。

Clinux在MIPS上的移植如图


图1  开发板与主机的连接示意图

Clinux的移植
交叉编译环境的建立

   嵌入式开发环境一般由宿主PC和目标系统构成。宿主PC上先要建立开发编译工具CONTROL ENGINEERING China版权所有,如binutils、gcc、glibc等。目

标板是运行和调试的平台。宿主PC和目标板利用网络和串口建立连接,系统在目标板上运行时通过串口来反馈信息,并在宿主PC的超级终端上显示出来。

BootLoader的设计
    BootLoader的作用类似于PC中的BIOS,它在系统启动时对硬件进行初始化操作,负责与宿主PC建立连接并引导操作系统启动。它必须被固化在目标板上,当系统启动时, MIPS处理器的CPU会从0xbfc0 0000中取出第一条指令执行,而虚拟地址0xbfc0 0000对应的物理地址就是ROM的起始地址00000,所以只需要把BootLoader程序烧写在ROM上就可以了。

    在BootLoader中,首先要设置CPU的工作状态,包括Little Endian方式、使用CPU的ICache(16KB, 32/line)、DCache(8KBCONTROL ENGINEERING China版权所有, 16/line)等,并设置异常及中断向量表。针对CPU的BEV位,异常有不同的入口地址。BEV=0主要用于当CPU的Cache、SDRAM初始化后,如果系统发生异常和中断时,其异常、中断入口地址可以通过Cache来访问,这样就加快了响应时间。在Clinux中操作系统的异常和中断处理的入口地址也要遵循这样的方式。

memcpy((void *)(KSEG0 + 0x80), &except_vec1_generic, 0x80);
memcpy((void *)(KSEG0 + 0x100), &except_vec2_generic, 0x80);
 memcpy((void *)(KSEG0 + 0x180), &except_vec3_generic, 0x80);

    其次,因为C代码中的变量(register类型除外)在调用函数时使用的堆栈指针SP等都需要使用可读写的存储介质SDRAM,因此需要对SDRAM进行初始化。在初始化SDRAM之前的代码都必须用汇编语言编写,初始化完成之后,就可以使用C语言来编写目标板上其他设备的相应初始化程序了。

    最后,对串口、网络控制芯片进行初始化,然后等待宿主PC上发出命令进行相应的操作。
宿主PC编译好内核代码后,即会通过串口发出命令通知目标板准备接收,目标板在收到命令后就准备接收主机发送的数据,并将接收到的数据放到SDRAM相应的位置上。数据通过网络传输,传输协议使用的是TFTP协议。宿主PC上通过串口发送命令tftp 192.168.1.231 PUT d: \uClinux\linux,其中的192.168.1.231是目标板的IP地址,linux是编译生成的二进制文件。

内核代码的修改
    由于不同的目标板上使用的CPU不同控制工程网版权所有,所具有的板上设备也不同,因此,内核代码需要作一定的修改,改动主要集中在对异常、中断号,及其入口地址及设备地址的修改上。

    首先,建立针对自己目标板的目录:D:\uc-linux\linux-2.4.19\arch\mipsnommu\r3k、

D:\uc-linux\linux-2.4.19\include\asm-mipsnommu\r3k,并放入目标板的相应代码。同时要修改

Makefile,将这两个目录里的文件编译进内核www.cechina.cn,去掉不必要的针对其他目标板、处理器目录的编译。
在D:\uc-linux\lin










版权声明:版权归控制工程网所有,转载请注明出处!

频道推荐

关于我们

控制工程网 & CONTROL ENGINEERING China 全球工业控制、自动化和仪器仪表领域的先锋媒体

CE全球

联系我们

商务及广告合作
任小姐(北京)                 夏小姐(上海)
电话:010-82053688      电话:18616877918
rendongxue@cechina.cn      xiashuxian@cechina.cn
新闻投稿:王小姐

关注我们的微信

关于我们 | 网站地图 | 联系我们
© 2003-2020    经营许可编号:京ICP证120335号
公安机关备案号:110102002318  服务热线:010-82053688