作者:不必在乎外貌涝 | 来源:互联网 | 2023-09-25 20:01
将一个复杂的工程分解为多个小的目标或模块是一个明智的选择。上文我们提到移植RTEMS到S3C2440上有三个技术难关,第一个便是交叉编译工具的安装。这里我们先攻这第一
将一个复杂的工程分解为多个小的目标或模块是一个明智的选择。上文我们提到移植RTEMS到S3C2440上有三个技术难关,第一个便是交叉编译工具的安装。这里我们先攻这第一个难关,解决交叉编译工具的安装有两种方案可供实验:1.使用官方提供的工具源码一个一个的编译生成所需的工具链。2.下载现成的RPM安装包。编译官方的工具源码相对来说比较高大上,难度比使用RPM包复杂一些。安装的工具、顺序、版本等都有可能造成最终不能生成正确能用的交叉工具链。由于对该系统和开发环境还不是太熟悉的,因此此次我们尝试使用官方提供的RPM包,下载地址由QQ群RTEMS爱好者之家(253222959)的Kunkka兄提供。地址为:http://www.rtems.org/ftp/pub/rtems/linux/。
那么使用官方提供的RPM包来生产交叉编译工具需要做哪些具体的工作了?主要分为四个步骤:
1.选择宿主机运行的OS,可以使用几种不同的方案,如使用官方提供的Linux镜像然后用Virtual Box或VMware运行;不使用官方的Linux系统镜像的话可以在虚拟机或PC上自己安装一个Linux系统;当然还可以在Windows下使用Cygwin。当然作为初学者的我使用了最简便的方法,直接使用官方提供的Linux镜像在Virtual Box中跑。官方提供了许多可供下载的Linux镜像,我以前使用的是Fedora14,这次由于下载了7个RPM包是Fedora20的在以前的Fedora14中安装起来有问题,具体问题忘了,好像从安装gdb工具的时候就报错。所幸的是我以前还下载了cetos6.2版本的Linux,这次正好就可以派上用场了。在Virtual Box中导入下载的cetos6.2版本的Linux,然后安装下载的7个RPM包,当然另外还有autoconf和automake这两个RPM包。
2.安装刚刚下载的这些工具链的RPM包,使用的命令式rpm -ivh xxx。安装完前面的5个包时完全没有问题,在安装gcc工具是报错了,提示安装这个gcc工具少一个其所依赖的文件libmpc.so.2。自己在百度上下了一个libmpc-0.8-3.el6.src.rpm,没敢用,咨询了大牛Etual,他让我用yum先试试。试了不成功,他给哥们一个文件libmpc-0.8-3.el6.i686.rpm,安装是报一个警告,没管这个警告,继续安装gcc工具,成功了。至此,我们的7个工具的包都安装成功了,听说还要装autoconf和automake的RPM包,至于这两个包有什么作用我也不太清楚。kunkka兄弟说autoconfig是配置内核的,automake是自动编译。不管他吧,我先装了试试,然而发现安装的时候报错,说是什么有文件冲突,看了半天不知道啥意思。kunkka兄弟说,冲突就正常了,有些包是相互依赖的。我认为是不是官方已经给装了什么了呀。
3.针对于你所使用的嵌入式微控制器选择BSP,并进行配置、编译和安装。
$:cd /home/rtems/rtems-4.11-work
$:export PATH=/opt/rtems-4.11/bin:$PATH
$:chmod 777 build_bsp
$:./build_bsp arm smdk2410
$:cd b-smdk2410
$:make install
上面这几步,其本质是执行的一个build_bsp的脚本文件。当然你也可以不执行这个脚本,而在命令终端中自己敲命令。
我选择了使用build_bsp的脚本进行系统的编译,最后完成了针对2410的RTEMS的编译。当然这里我们要清楚如果我要移植到自己特定的S3C2440的平台上,还需要对BSP进行修改。下面就可以编译应用程序来测试验证我们制作的工具链及编译的系统是否可用了。
4.编译应用程序。将应用程序下载到某一个目录下,然后使用make进行编译。如我首先测试的是HELLO WORLD这一测试程序。第一次编译是发生了错误,说有两个文件/Makefile.ine和/make/leaf.cfg找不到。记得以前也在PC104上测试时也碰到过,当时的解决办法比较笨,就是在系统镜像里找到这两个文件,然后拷贝到相关位置。这次有了群里道兄弟的文档,发现其实是一个环境变量没有设置。设好这个环境变量就OK了。具体做法:
export RTEMS_MAKEFILE_PATH=/home/rtems/rtems-4.11-work/bsp-install/arm-rtems4.11/smdk2410。然后一切搞定,使用make clean和make命令便可以在o-optimize目录下得到所要编译生成的文件了。接下来就可以将编译生成的文件下载到开发板上进行测试了。编译生成的文件如下:
使用命令将.exe文件转化成.bin文件,arm-rtems4.9-objcopy -O binary -S hello.exe hello.bin。
注:编译工具选择gcc,链接工具选择binutils包中的ld和as。还没有搞清的问题是autoconf和automake的作用是什么。