Building the RTEMS toolset on Ubuntu 11.04

来源:互联网 发布:万德数据库 价格 编辑:程序博客网 时间:2024/06/05 20:22

        最近开始摸索rtems系统,之所以选择它作为我心目中理想的RTOS还是看中它是开源、可靠性非常好、资料齐全、功能也能满足要求。关注了很久以后于是乎决定自己尝试动手移植到我的STM32板子上,不过千里之行始于足下,当然要从最基础的做起。不想一开始就在部署开发环境上耽误了许久,这篇bolg就记录了部署开发环境的整个过程。

        1、环境的准备

              一直是ubuntu的爱好者所以很自然的选择了最新的ubuntu 11.04,这是个在U盘上部署的linux,主要是方便,可以随便找台电脑来启动我的系统。rtems自然也会部署到这里。由于ubuntu对权限管理的很死,安装时如果频繁输入sudo很痛苦,而且使用root用户也为以后带来诸多不变,这里我干脆将rtems的安装目录放到了home/llemmx下。整个编译过程是参考官方wiki上的一遍文章。http://www.rtems.com/wiki/index.php/Building_the_RTEMS_toolset_on_Ubuntu

              安装系统支持包

      sudo aptitude install m4 patch  build-essential texinfo cvs \      libncurses5-dev libgmp3-dev libmpfr-dev libmpc-dev autoconf \      autotools-dev automake

        2、编译目录与安装包准备

              从http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/上下载rtems工具链的源代码主要有:

              http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/binutils-2.21.1.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-core-4.6.1.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-core-4.6.1-rtems4.11-20110825.diff
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gcc-g++-4.6.1.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gdb-7.3.1.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gdb-7.3.1-rtems4.11-20110905.diff
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/gmp-4.3.2.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/mpc-0.8.1.tar.gz
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/mpfr-2.4.2.tar.bz2
      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/newlib-1.19.0.tar.gz

      http://www.rtems.org/ftp/pub/rtems/SOURCES/4.11/newlib-1.19.0-rtems4.11-20110826.diff
      在/home/llemmx/下建立rtems-4.11与rtems-bsp目录,建立这么特殊的目录方便频繁替换。


        3、解压缩源代码

      tar xjf ../rtems/binutils-2.21.1.tar.bz2      tar xjf ../rtems/gcc-core-4.6.1.tar.bz2      tar xjf ../rtems/gcc-g++-4.6.1.tar.bz2       tar xzf ../rtems/newlib-1.19.0.tar.gz      tar xjf ../rtems/gdb-7.3.1.tar.bz2      tar xjf ../rtems/gmp-4.3.2.tar.bz2      tar xjf ../rtems/mpc-0.8.1.tar.gz      tar xjf ../rtems/mpfr-2.4.2.tar.bz2            
      cd binutils-2.21/      cat ../../rtems-src/binutils-2.21-rtems4.11-20110107.diff | patch -p1      cd ../gcc-4.6.1/      cat ../../rtems-src/gcc-core-4.6.1-rtems4.11-20110825.diff | patch -p1      cd ../newlib-1.19.0/      cat ../../rtems-src/newlib-1.19.0-rtems4.11-20110826.diff | patch -p1      cd ../gdb-7.3.1/      cat ../../rtems-src/gdb-7.3.1-rtems4.11-20110905.diff | patch -p1      cd ..

        4、编译源代码与相关问题解决

      mkdir b-binutils      cd b-binutils      ../binutils-2.21/configure --target=arm-rtemseabi --prefix=/home/llemmx/rtems-4.11      make all      make info      sudo make install      cd ..      export PATH=/home/llemmx/rtems-4.11/bin:${PATH}

      在编译binutils时遇到了语法错误后修改其中一个结构体的初始化才解决问题,这个问题比较简单。


      cd gcc-4.6.1/      ln -s ../newlib-1.19.0/newlib .      cd ..      mkdir b-gcc      cd b-gcc/      ../gcc-4.6.1/configure --target=arm-rtemseabi --with-gnu-as --with-newlib --verbose --enable-threads \      --enable-languages="c,c++" --prefix=/home/llemmx/rtems-4.11      make all      make info      sudo make install      cd ..

      这里遇到的问题比较棘手, 主要的错误集中在mpfr库的路径上,一直查到最后才发现原来ubuntu使用的mpfr库版本以及改变,这里偷懒使用 ln -sf libmpfr.so.4.0.0 libmpfr.so.1终于解决问题。 另外因为目标器件是STM32所以MCU编译的选择是arm-rtemseabi支持最新的arm指令集。
      在编译最新的gcc-4.8.0时遇到了奇怪的[s-automata] error 137错误的字样,后来确认是内存不足引起。      类似gdb还有其它软件包暂时可以不需要,这里编译掠过。      下面准备写一下编译BSP包的问题。