TQ2440硬件平台的RTEMS系统BSP的移植--上
前面的实验、记录是关于交叉编译工具链(或叫做开发环境)的构建。当交叉编译工具链搞定以后,接下来就进入到第二个难关,修改适合TQ2440开发板的BSP了。该环节是前文提到的三个环节中最为复杂的一个环节,需要掌握一些Linux方面的基础知识(eg:shell命令、makefile等)、RTEMS的代码结构、硬件S3C2440平台的应用等。当然如果在基础知识有不足,可以到网上参考Etual、雪松、fishOnFly等高手的博客。照着他们的博客基本就可以完成RTEMS在TQ2440上的移植,参照Etual、fishOnFly的笔记,我做的具体步骤有:
1.对libbsp/arm/acinclude.m4文件进行修改,由于我们将要增加TQ2440的BSP,因此在该文件中应当相应的增加一项,具体可参照前面的模板。如
TQ2440 )
AC_CONFIG_SUBDIRS([TQ2440]);;
当然也可以只保留这一项,其余的选项都删除。
2.复制smdk2410目录并改名为TQ2440。
3.将gp32目录下的console、smc、start目录复制过来到TQ2440目录下,gp32/include目录下的文件也复制过来覆盖掉原来的。另外还有一个文件startup/bspstart.c也复制过来。
4.对TQ2440目录下的makefile.am进行修改。凡是有gp32的都修改过来,比如:
include_HEADERS = ../gp32/include/bsp.h改成:
include_HEADERS = include/bsp.h
5.对/make/custom/目录下的文件修改名为TQ2440.cfg。
6.下面就可以对该BSP进行编译了。至于对包含新增BSP的RTEMS源码编译工作有两种方案。一是使用官方镜像中给的build_bsp的脚本,一是自己在shell命令行中敲命令。这里我是采用的第二种方法:
//pre-config
cd rtems-4.10.2(网上下载源码解压后形成的目录)
./bootstrap -c
./bootstrap -p
./bootstrap(等待的时间较长)
//configure
cd ..
mkdir b-TQ2440
cd b-TQ2440
rm -rf ./*
../rtems-4.10.2/configure --target=arm-rtems4.10 --disable-posix --disable-networking --disable-cxx --enable-rtemsbsp=TQ2410(等待的时间较长)
//compile
make(等待的时间较长)
至此编译工作完成,如果编译过不了可以慢慢往上找原因。接下来是修改BSP,然后进行编译的安装,make install。
7.完成以上工作过程中碰到的问题。
7.1我是在官方提供的镜像centos6.2里做以上工作的,该镜像本省给用户提供的是rtems-4.11的版本。由于我之前在这个4.11的版本上按照Etual、fishOnFlay的博客进行TQ2440的RTEMS移植时,始终不能完成移植工作,操作的步骤几乎都一样,然后我抱着试试的想法,准备在rtems-4.10上移植。在4.11的版本上安装autoconf和automake的RPM包始终装不上。
7.2在4.10的版本上安装7个arm的RPM包时,提示缺少文件。这里可以参考Etual大牛的一篇文章(centos平台的RTEMS编译安装)对缺少的几个文件进行安装之后7个包即可正常安装,并且在改版本下autoconf和automake的RPM包也可以正常安装。
7.3进行./bootstrap时提示autoconf没有安装或版本过低。关于这个错误的解决也是有Etual大牛指点后搞定的,工具链放在path的最开头。(这个问题的解决在Etual的RTEMS 4.11工具链安装一文中也有具体解决方法)于是结合Etual大牛的博客做了以下修改搞定问题。