不断超越自己,将更强大!
分类: 嵌入式
2016-05-16 21:08:13
最近一直在折腾学习RTEMS,想移植到:STM32F429上,终于在VM 虚拟机:CentOS 6.6上架起了基于STM32F429-Discovery 的RTEMS 4.11 的开发测试环境并成功跑起了RTEMS,虽然只是初步进入,但是,中间还是经历了各种困难,原因就是资料少,英文的资料需要慢慢理解,不断的编译与验证。
因为使用最新的工具链RTEMS 4.12 + 最新的RTEMS内核,STM32F429 的ticker跑不正常,时钟不走,因此,就换成较低的RTEMS 4.11(支持STM32F4系列的)。
原来的官方工具链又太旧,编译出错,找不到正确的解决方法,因此,直接使用官方提供的工具,生成较新的工具链,来验证一下,结果,正常了。helloworld ticker shell 文件系统,都可以正常的运行。
下面为:RTEMS 4.11工具链的编译方式(不是RPM安装,是使用官方提供的工具直接编译)。
开发环境如下:
PC机:windows 7 64bit
VM: CentOS 6.6
RTEMS: RTEMS-4.11
目标:RTEMS工具链:arm-rtems-4.11(用来编译最新的RTEMS 4.11的内核)
其实官方网站ftp上有RTEMS 4.11的工具链,不过gcc等太旧了,也一直没有更新,如果想更新,需要官方提供的RTEMS Source Builder来更新工具链。
开始以为很难,仔细看了一下安装文档,发现命令很容易理解,因此编译了一下,除了编译时间长外,一切正常!!!
通过git下载到最新的RTEMS的内核源码,现在都更新到了:4.12版本了。。。只是没有release,可能还在不断的测试验证中。我用老的官方的工具链是不能正常编译最新的rtems内核源码的,提示错误好像也是工具链方面的。
工欲善其事,必先利其器,如果想编译RTEMS 4.11分支的内核源码,感觉基本稳定,就需要编译配套的工具链。
我这里为:gcc version 4.9.3 20150626 (RTEMS 4.11, RSB no-repo, Newlib 2.2.0.20150423) (GCC)
以下为编译整个流程:
(1)下载 RTEMS Source Builder,可以使用git,或是直接下载安装包。
我这里下载:4.11分支的源码,而不是master最新的4.12的。
(2)根据rtems-source-builder/doc 里的安装提示,我这里为centos ,因此,先安装环境需要的工具软件。命令如下:
CentOS
^^^^^^
The following packages are required on a minimal CentOS 6.3 64bit installation:
-------------------------------------------------------------
# yum install autoconf automake binutils gcc gcc-c++ gdb make patch \
bison flex xz unzip ncurses-devel texinfo zlib-devel -devel git
-------------------------------------------------------------
The minimal CentOS distribution is a specific DVD that installs a minimal
system. If you use a full system some of these packages may have been
installed.
(3) 通过shell进入:rtems-source-builder-4.11/rtems 目录下,
# ../source-builder/sb-check (这里为测试一下环境是否准备好,准备好才能编译并安装rtems 4.11的工具链)
# ../source-builder/sb-set-builder --log=l-arm.txt --prefix=/opt/rtems-4.11 4.11/rtems-arm.bset
即可下载、编译,安装,最终在/opt/rtems-4.11目录下,生成所需要的工具集与gcc库等。
注意安装目录为:/opt/rtems-4.11,如果已经安装过官方的rtems-4.11工具链,最好改个名字。
(如果网速慢:访问国外的网速都很慢,整个过程约为:1~2个小时)
最后,成功后,就可以生成相应的RTEM 4.11的工具链了。
(4)编译成功后,进入:/opt/rtems-4.11/bin/
# ./arm-rtems4.11-gcc -v
官方rpm包安装的应该为:4.8.3左右的,有点老。
(5)可以通过设置环境变量(当然也可以直接全路径)使用arm-rtems4.11-gcc 等工具链,
我这里修改 /etc/profile
添加:
注销再重新登录,永久修改环境变量,可以直接在shell上执行如:arm-rtems-gcc 等命令,不用再输入全路径。
(6)下载RTEMS 4.11的内核源码并编译。(我这里下载rtems4.11分支的源码,而不是master最新的)
然后进入:rtems-4.11 的根目录
# ./bootstrap -c
# ./bootstrap -p
# ./bootstrap(此步骤时间比较长)
# cd ..
#mkdir stm32f4
#cd stm32f4
# ../rtems-4.11/configure --target=arm-rtems4.11 --disable-posix --disable-itron --disable-cxx --disable-networking --enable-rtemsbsp="stm32f4" --prefix=/home/RTEMS/stm32f4
*** BEGIN OF TEST HELLO WORLD ***
Hello World
*** END OF TEST HELLO WORLD ***