微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM 4510开发板移植uclinux手记

ARM 4510开发板移植uclinux手记

时间:10-08 来源:互联网 点击:

elf-gcc等,它们运行在 Linux操作系统之上,而非windows操作系统了。

二、 学用Linux操作系统

因为免费和开源,在科研和开发领域,linux操作系统正在逐渐取代windows操作系统,成为个人计算机的主流操作系统。

1、 为(宿)主机安装linux操作系统

选择内核稳定的高版本linux操作系统,可以保证安装时对硬件设备的自动识别,更可保证以后编译和运行的可靠性。硬盘分区时,必须建立交换分区 (swap),其大小是主机内存的两倍;还要有一个ext3分区挂载在linux系统根目录(\)下,它至少要有3G;条件许可,还可以建立一个100M 大小的分区,挂载在启动目录(\boot)下。选择工作站方式安装linux系统即可。

2、 uclinux与linux的不同

uclinux源自linux,是对后者的裁减、精化,也有一些改动。后者多用于台式机,对硬件设备要求高。前者则多用于嵌入式设备中,毕竟嵌入式设备资源有限。

3、 其它虚拟操作系统

有些建立在windows操作系统之上的或并行的虚拟linux环境,如cygwin,VM等,但它们并不适合初次移植uclinux操作系统到嵌入式设备时选用。如果选用它们,就必须更改uclinux系统源代码中的多份Makefile文件内容,以适应编译时从标准linux操作系统到其仿真环境的变化。

三、 建立交叉编译环境

1、 体系结构的概念

大部分宿主机的cpu都是建立在X86体系结构上的,如intel或赛扬的cpu,也有其它体系结构的,但没有arm体系的,因为arm几乎是嵌入式设备专用的处理器体系结构了。三星4510微控制器是建立在arm体系结构之上的。体系结构的不同,确立了不同的指令系统,就像cpu使用不同的语言一样。无法想象英国人可以读懂俄文小说,同样,为X86体系的cpu编译的程序,也无法运行在arm体系结构的微控制器之中了。

宿主机上运行的linux 操作系统,是建立在X86体系结构上的。在linux操作系统上编译的程序,一般也是建立在X86体系上的。可以编写几个程序,用linux操作系统自带的编译工具gcc编译它们,如果没有语法错误,它们就都可以在宿主机上运行了。但要实现在宿主机上编写程序,编译后程序能在arm体系结构的嵌入式设备上运行,就需要一套特殊的“交叉”编译工具,如arm-elf-gcc等。所以,在linux操作系统的宿主机上编写程序,通过选用交叉编译工具arm- elf-gcc编译后,生成的可执行文件,就可以在arm体系结构的微控制器上运行了。这就是交叉编译的概念。

2、 建立交叉编译环境

通过引入arm-elf-gcc等交叉编译工具,可以在宿主机上建立交叉编译环境。这样,在宿主机上编译的程序,就可以在arm体系结构的嵌入式设备上运行了。恒坚开发板自带的文件arm-elf-tools-20030314.sh,只要在linux环境下执行它,就可以建立起完整的交叉编译环境。

四、 编译和下载uclinux操作系统

uclinux 操作系统已经被成功移植到许多微控制器上,其中也包括三星4510微控制器。移植后的uclinux操作系统源代码中含有微控制器外围电路的设置,如 SDRAM数据线的位数。有些嵌入式设备,同样是使用三星4510微控制器,却用一片现代公司的8Mx16bits的SDRAM,这样微控制器与 SDRAM的数据交换,就只用微控制器的低16位数据线。微控制器中的寄存器EXTDBWTH,用于配置每组(FLASH、SDRAM和外部I/O芯片等)的数据线的宽度。恒坚开发板上是用两块8Mx16bits的SDRAM拼成了32位数据线宽。

恒坚开发板自带一套移植后的和压缩了的 uclinux操作系统源代码文件uClinux-dist-20030522.tar.gz,把它拷贝到宿主机linux操作系统的/home目录下,进入/home目录,并用tar xzvf uClinux-dist-20030522.tar.gz命令解压缩源代码文件,产生/home目录下的 /uClinux-dist子目录,此目录中含有编译uclinux操作系统的全部源文件。把恒坚开发板自带的压缩的补丁文件uClinux-dist- patch.tar.gz拷贝到/uClinux-dist子目录下。进入/uClinux-dist子目录,并用tar xzvf uClinux- dist-patch.tar.gz命令解压缩补丁文件,可释放出两个文件:mkpatch和uClinux-dist-20030522- helloworld.patch,执行./ mkpatch,既可对uclinux操作系统的源代码打补丁。打补丁的根本原因,是为了修正源代码中的硬件参数设置,如原移植源代码是为一片SDRAM、16位数据线宽做的,而恒坚的板子上是两片SDRAM,并通过高、低16位数据线的组合,构成32位的数据线宽度。这就需要改变寄存器EXTDBWTH的赋值。还有原移植源代码是为8M字节的SDRAM作的,而恒坚板上是16M字节的SDRAM,这又要改变寄存器SDRAMCON0的赋值了。

打完补丁后,就可以在/uClinux-dist子目录

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top