zoukankan      html  css  js  c++  java
  • 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不对,等原因

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

  • 相关阅读:
    SpringCloud-Hystrix Dashboard 之 Unable to connect to Command Metric Stream
    try() catch{}
    git使用和操作
    外部服务器使用jedis操作redis数据库
    Tomcat部署spring boot项目
    java成神之路截图
    innodb 死锁分析之相关表结构说明
    mysql 死锁案例及分析过程
    Head First设计模式之观察者(Observer)模式(二)
    Head First设计模式之策略模式(Strategy)
  • 原文地址:https://www.cnblogs.com/Osler/p/7366106.html
Copyright © 2011-2022 走看看