Ubuntu16.04安装RTEMS4.12/4.11 RSB及BSP

新手,从0开始,系统:ubuntu 16.04.3 LTS

 

 按照如下教程开始

https://docs.rtems.org/rsb/#_ubuntu

https://docs.rtems.org/rsb/#_setup

一 安装RSB

1.创建文件夹,安装交叉工具链

2.下载git

wangjc@wangjc-Inspiron-3668:~/development/rtems/src$ git clone git://git.rtems.org/rtems-source-builder.git

如果安装4.11,指令为

git clone -b 4.11 https://github.com/rtems/rtems-source-builder.git

 直接下载出现错误,缺少依赖包,安装依赖包时仍出错

按如下命令安装:

sudo gedit /etc/apt/sources.list

修改sources.list文件,

3.使用如下命令中的最后一行,成功:

Some times our systems may not be up-to-date to receive an install so we can update with:

sudo apt-get update --> update package information
sudo apt-get dist-upgrade --> upgrade packages on system
sudo apt-get -f install --> fix broken packages

4.下载git后检查工具包是否完善,报错:

wangjc@wangjc-Inspiron-3668:~/development/rtems/src/rtems-source-builder$ source-builder/sb-check
RTEMS Source Builder - Check, 4.12.not_released
error: exe: not found: (__bison) /usr/bin/bison
error: exe: not found: (__flex) /usr/bin/flex
error: exe: not found: (__makeinfo) /usr/bin/makeinfo
Environment is not correctly set up

丢失了bison等执行文件,运行指令可安装bison和flex

sudo apt-get install bison

安装makeinfo时报错

E: Unable to locate package makeinfo

发现安装texinfo即可,测试后发现环境OK

sudo apt-get install texinfo

5.编译SPARC工具集,需要从internet下载,查看2.4 Building的解释内容

wangjc@wangjc-Inspiron-3668:~/development/rtems/src/rtems-source-builder/rtems$ ../source-builder/sb-set-builder --log=l-sparc.txt --prefix=$HOME/development/rtems/4.12 4.12/rtems-sparc

报错:

building: sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
error: building sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
Build FAILED
  See error report: rsb-report-sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1.txt
error: building sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
Build Set: Time 0:27:01.555189
Build FAILED

查看对应的rsb-report文件后发现,可能是python崩溃导致

可能是需要python的以来开发包python-dev,安装python-dev

wangjc@wangjc-Inspiron-3668:~$ sudo apt-get install python2.7-dev

安装完后再编译,爆出错误为:

../../readline/libreadline.a(terminal.o):/home/wangjc/development/rtems/src/rtems-source-builder/rtems/build/sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1/build/readline/../../gdb-7.12/readline/terminal.c:765: more undefined references to `tputs' follow
collect2: error: ld returned 1 exit status
make[3]: *** [sis] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [all] Error 1
Makefile:8272: recipe for target 'all-sim' failed
make[1]: *** [all-sim] Error 2
make[1]: Leaving directory '/home/wangjc/development/rtems/src/rtems-source-builder/rtems/build/sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1/build'
Makefile:849: recipe for target 'all' failed
make: *** [all] Error 2
shell cmd failed: /bin/sh -ex  /home/wangjc/development/rtems/src/rtems-source-builder/rtems/build/sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1/doit
error: building sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1

尝试更新

$sudo apt-get update 
$ sudo apt-get build-dep binutils gcc g++ gdb unzip

更新后再编译,编译成功

config: tools/rtems-gcc-7.1.0-newlib-2.5.0.20170720-1.cfg
package: sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1
building: sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1
reporting: tools/rtems-gcc-7.1.0-newlib-2.5.0.20170720-1.cfg -> sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gcc-7.1.0-newlib-2.5.0.20170720-1.cfg -> sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1.xml
config: tools/rtems-gdb-7.12-1.cfg
package: sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
building: sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
reporting: tools/rtems-gdb-7.12-1.cfg -> sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1.txt
reporting: tools/rtems-gdb-7.12-1.cfg -> sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1.xml
config: tools/rtems-tools-4.12-1.cfg
package: rtems-tools-HEAD-1
Creating source directory: sources/git
git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: reset: git://git.rtems.org/rtems-tools.git
git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
git: checkout: git://git.rtems.org/rtems-tools.git => HEAD
git: pull: git://git.rtems.org/rtems-tools.git
building: rtems-tools-HEAD-1
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.txt
reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.xml
config: tools/rtems-kernel-4.12.cfg
package: sparc-rtems4.12-kernel-4.12-1
building: sparc-rtems4.12-kernel-4.12-1
reporting: tools/rtems-kernel-4.12.cfg -> sparc-rtems4.12-kernel-4.12-1.txt
reporting: tools/rtems-kernel-4.12.cfg -> sparc-rtems4.12-kernel-4.12-1.xml
installing: expat-2.1.0-x86_64-linux-gnu-1 -> /home/wangjc/development/rtems/4.12
installing: sparc-rtems4.12-binutils-2.29-x86_64-linux-gnu-1 -> /home/wangjc/development/rtems/4.12
installing: sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1 -> /home/wangjc/development/rtems/4.12
installing: sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1 -> /home/wangjc/development/rtems/4.12
installing: rtems-tools-HEAD-1 -> /home/wangjc/development/rtems/4.12
installing: sparc-rtems4.12-kernel-4.12-1 -> /home/wangjc/development/rtems/4.12
cleaning: expat-2.1.0-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-binutils-2.29-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gcc-7.1.0-newlib-2.5.0.20170720-x86_64-linux-gnu-1
cleaning: sparc-rtems4.12-gdb-7.12-x86_64-linux-gnu-1
cleaning: rtems-tools-HEAD-1
cleaning: sparc-rtems4.12-kernel-4.12-1
Build Set: Time 0:28:16.129294
wangjc@wangjc-Inspiron-3668:~/development/rtems/src/rtems-source-builder/rtems$  

  

6.检查gcc版本

wangjc@wangjc-Inspiron-3668:~/development/rtems/4.12/sparc-rtems4.12$ ~/development/rtems/4.12/bin/sparc-rtems4.12-gcc -v
Using built-in specs.
COLLECT_GCC=/home/wangjc/development/rtems/4.12/bin/sparc-rtems4.12-gcc
COLLECT_LTO_WRAPPER=/home/wangjc/development/rtems/4.12/libexec/gcc/sparc-rtems4.12/7.1.0/lto-wrapper
Target: sparc-rtems4.12
Configured with: ../gcc-7.1.0/configure --prefix=/home/wangjc/development/rtems/4.12 --bindir=/home/wangjc/development/rtems/4.12/bin --exec_prefix=/home/wangjc/development/rtems/4.12 --includedir=/home/wangjc/development/rtems/4.12/include --libdir=/home/wangjc/development/rtems/4.12/lib --libexecdir=/home/wangjc/development/rtems/4.12/libexec --mandir=/home/wangjc/development/rtems/4.12/share/man --infodir=/home/wangjc/development/rtems/4.12/share/info --datadir=/home/wangjc/development/rtems/4.12/share --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=sparc-rtems4.12 --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --verbose --with-newlib --disable-nls --without-included-gettext --disable-win32-registry --enable-version-specific-runtime-libs --disable-lto --enable-newlib-io-c99-formats --enable-newlib-iconv --enable-newlib-iconv-encodings=big5,cp775,cp850,cp852,cp855,cp866,euc_jp,euc_kr,euc_tw,iso_8859_1,iso_8859_10,iso_8859_11,iso_8859_13,iso_8859_14,iso_8859_15,iso_8859_2,iso_8859_3,iso_8859_4,iso_8859_5,iso_8859_6,iso_8859_7,iso_8859_8,iso_8859_9,iso_ir_111,koi8_r,koi8_ru,koi8_u,koi8_uni,ucs_2,ucs_2_internal,ucs_2be,ucs_2le,ucs_4,ucs_4_internal,ucs_4be,ucs_4le,us_ascii,utf_16,utf_16be,utf_16le,utf_8,win_1250,win_1251,win_1252,win_1253,win_1254,win_1255,win_1256,win_1257,win_1258 --enable-threads --disable-plugin --enable-libgomp --enable-languages=c,c++
Thread model: rtems
gcc version 7.1.0 20170502 (RTEMS 4.12, RSB 7208ab69e1fc068bdf23edc51e862db2f2a6a189, Newlib 2.5.0.20170720) (GCC) 
wangjc@wangjc-Inspiron-3668:~/development/rtems/4.12/sparc-rtems4.12$ 

 

二 安装BSP

  交叉工具链安装完毕

下载rtems源文件到/home/wangjc/development/rtems/source/rtems-source-builder

$ git clone git://git.rtems.org/rtems.git

添加运行环境变量

$ export PATH=$HOME/development/rtems/4.11/bin:$PATH

引导

$ cd rtems
$ ./bootstrap

新建编译结果文件夹

$ cd ..
$ mkdir rtems-build
$ cd rtems-build

配置bsp,/home前面打两点‘..’时会报错,找不到文件

wangjc@wangjc-Inspiron-3668:~/development/rtems/rtems-build$ /home/wangjc/development/rtems/source/rtems-source-builder/rtems/configure --prefix=`pwd`/../rtems_stm32f4xx --target=arm-rtems4.11 --disable-maintainer-mode --disable-multiprocessing --disable-posix --disable-networking --disable-cxx --disable-tests --disable-rtems-debug --disable-multilib --disable-paravirt --disable-drvmgr --disable-docs --enable-rtemsbsp=stm32f4

编译,make时报错

make

错误代码:

Making all in stm32f4
make[2]: Entering directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c/stm32f4'
make[2]: *** No rule to make target 'all'.  Stop.
make[2]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c/stm32f4'
Makefile:286: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c'
Makefile:410: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

可能原因为我编译的RSB环境时针对sparc,但是 建立BSP时候用的是arm

注意:建立RSB环境需要在原始的rtems RSB文件下建立,否则提示找不到bset文件,建立后会创建一个环境文件夹,若为/rtems/4.11 4.11/rtems-arm则文件夹为4.11,文件夹下颚bin文件有对应平台的gcc编译器

建立bsp需要在新下载的rtems系统源文件上进行

 

按arm来建立bsp时报错:

checking for style of include used by make... GNU
checking for arm-rtems4.11-gcc... no
configure: error: no acceptable cc found in $PATH
Makefile:804: recipe for target 'stm32f4' failed
make[2]: *** [stm32f4] Error 1
make[2]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c'
Makefile:359: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c'
Makefile:483: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

应该是gcc不在环境变量中,增加arm-rtems4.11-gcc所在的文件夹路径 rtems4.11/bin

wangjc@wangjc-Inspiron-3668:~$ sudo gedit /etc/environment
wangjc@wangjc-Inspiron-3668:~$ source /etc/environment

此时再编译,之前的错误问题仍在

Making all in stm32f4
make[2]: Entering directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c/stm32f4'
make[2]: *** No rule to make target 'all'.  Stop.
make[2]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c/stm32f4'
Makefile:359: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/wangjc/development/rtems/rtems-build/arm-rtems4.11/c'
Makefile:483: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

 运行指令,清除原来的makefile

wangjc@wangjc-Inspiron-3668:~/development/rtems/source/rtems-source-builder/rtems$ ./bootstrap -c

运行指令重新编译

wangjc@wangjc-Inspiron-3668:~/development/rtems/source/rtems-source-builder/rtems$ ./bootstrap -p

wangjc@wangjc-Inspiron-3668:~/development/rtems/source/rtems-source-builder/rtems$ /home/wangjc/development/rtems/source/rtems-source-builder/source-builder/sb-
bootstrap

 再来编译bsp

wangjc@wangjc-Inspiron-3668:~/development/rtems$ mkdir rtems-build
wangjc@wangjc-Inspiron-3668:~/development/rtems/rtems-build$ /home/wangjc/development/rtems/source/rtems-source-builder/rtems/configure --prefix=`pwd`/../rtems_stm32f4xx --target=arm-rtems4.11 --disable-maintainer-mode --disable-multiprocessing --disable-posix --disable-networking --disable-cxx --disable-tests --disable-rtems-debug --disable-multilib --disable-paravirt --disable-drvmgr --disable-docs --enable-rtemsbsp=stm32f4
wangjc@wangjc-Inspiron-3668:~/development/rtems/rtems-build$ make

此时不会报错,一定要从./bootstrap -c开始重新来一遍,否则会报错。make成功

 

三 下载编译例程

build$ git clone git://git.rtems.org/examples-v2.git example-v2

建立makefile环境变量

build/example-v2$ export RTEMS_MAKEFILE_PATH=/home/wangjc/development/rtems/sour
ce/rtems-source-builder/rtems_stm32f4xx/arm-rtems4.11/stm32f4

建立arm gcc环境变量,否则会报错

export PATH=$HOME/development/rtems/4.11/bin:$PATH

make后生成了hello.exe文件,所在目录为/home/wangjc/development/rtems/source/rtems-source-builder/arm-build/example-v2/hello/hello_world_c/o-optimize

wangjc@wangjc-Inspiron-3668:~/development/rtems/source/rtems-source-builder/arm-build/example-v2$ make

 fileIO的例子中也有生成,这个生成应该有一个配置文件指定

 

9.为简便,可在home目录下的.bashrc文件中增加上面两条路径(ctrl+H可见),避免编译出错。出处

export PATH=$HOME/development/rtems/4.11/bin:$PATH
export RTEMS_MAKEFILE_PATH=/home/wangjc/development/rtems/source/rtems-source-builder/rtems_stm32f4xx/arm-rtems4.11/stm32f4

 

看来一定要多读文档!!!

 查看支持的bsp:在源码中运行

wangjc@wangjc-Inspiron-3668:~/development/rtems/source/rtems-source-builder/rtems$ ./rtems-bsps

 

  10.修改grub

wangjc@wangjc-Inspiron-3668:~$ sudo gedit /boot/grub/grub.cfg

  插入新启动项

    menuentry 'RTEMS-Hello'{
    multiboot /home/wangjc/development/rtems/source/rtems-source-builder/arm-build/example-v2/hello/hello_world_c/o-optimize/hello.exe    
    }

   不行,无法启动,可能是bsp不对,等原因

 

  安装脚本,可尝试,发现源不对

posted @ 2017-08-15 17:17  Osler  阅读(750)  评论(0编辑  收藏  举报