Building the RTEMS toolset on Ubuntu 11.04

        最近开始摸索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包的问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值