当前位置: 首页 > news >正文

rtems 5.3 qemu realview_pbx_a9 环境搭建:生成 rtems arm 工具链

前言

  • rtems 是一款比较优秀的 RTOS,官方网址 https://www.rtems.org/

  • 当前 rtems 最新发布的版本:rtems-5.3 版本, 下载地址 https://ftp.rtems.org/pub/rtems/releases/5/5.3/

  • rtems 支持的 平台也是比较多的,当前支持 STM32F4,也支持 qemu(模拟器)realview_pbx_a9

下载 rtems-5.3

  • 通过下载地址 https://ftp.rtems.org/pub/rtems/releases/5/5.3/ 下载 rtmes-5.3 以及 rtems-source-builder-5.3

在这里插入图片描述

  • rtems-5.3.tar.xz 是 rtems 5.3 版本的源码

  • rtems-source-builder-5.3.tar.xz 是 rtems 5.3 编译工具链的构建源码,用于构建编译 rtems 的编译工具链,比如 ARM gcc 交叉编译工具链

编译 rtems 的工具链

  • rtems bsp realview_pbx_a9,需要使用 ARM gcc 交叉编译工具链,使用 rtems-source-builder-5.3 进行构建

  • 编译平台: ubuntu 20.04

  • 解压下载的 rtems-source-builder-5.3.tar.xztar xf /mnt/hgfs/rtems/5.3/rtems-5.3.tar.xz -C ./

  • 进入 rtems-source-builder-5.3/rtems 目录,运行
    ../source-builder/sb-set-builder --prefix=$HOME/rtems/arm/5.3 config/5/rtems-arm

  • 这里的 --prefix=$HOME/rtems/arm/5.3 表示编译的产物,也就是 rtems arm gcc 交叉编译工具链的存放路径,rtems 默认使用 newlib C 库,因此需要手动编译 rtems arm gcc 交叉编译工具链

  • rtems-source-builder 是一套编译 rtems 工具链的脚本,会自动下载 编译工具链依赖的各个软件包,如 gcc、gdb 等,并编译生成一套编译工具链,可以认为是生成编译工具链的一套脚本。

在这里插入图片描述

  • 当前 rtems 5.3 版本:arm (32位) gcc 交叉编译工具链依赖的软件包清单如下:
$ ls sources/
autoconf-2.69.tar.gz    expat-2.1.0.tar.gz  gmp-6.1.0.tar.bz2   mpfr-3.1.4.tar.bz2
automake-1.12.6.tar.gz  gcc-7.5.0.tar.xz    isl-0.16.1.tar.bz2  newlib-7947581.tar.gz
binutils-2.34.tar.bz2   gdb-9.1.tar.xz      mpc-1.0.3.tar.gz    rtems-tools-5.3.tar.xz
  • 工具链编译过程比较长,如果电脑性能、内存比较小的情况下,如果网速慢,下载各个软件包也需要较长的时间

在这里插入图片描述

  • 【备注】如果某个软件包下载失败导致编译终止,建议手动下载指定的版本,然后放在 rtems-source-builder-5.3/rtems/sources 目录下,再次编译

验证 rtems arm gcc 工具

  • 可以进入 rtems arm gcc 的目录,运行 ./arm-rtems5-gcc -v,也可以把 rtems arm gcc 的路径设置到环境变量中,export PATH=$PATH:/home/zhangsz/rtems/arm/5.3/bin,然后运行 arm-rtems5-gcc -v
zhangsz@zhangsz:~/rtems/arm/5.3$ arm-rtems5-gcc -v
Using built-in specs.
COLLECT_GCC=arm-rtems5-gcc
COLLECT_LTO_WRAPPER=/home/zhangsz/rtems/arm/5.3/libexec/gcc/arm-rtems5/7.5.0/lto-wrapper
Target: arm-rtems5
Configured with: ../gcc-7.5.0/configure --prefix=/home/zhangsz/rtems/arm/5.3 --bindir=/home/zhangsz/rtems/arm/5.3/bin --exec_prefix=/home/zhangsz/rtems/arm/5.3 --includedir=/home/zhangsz/rtems/arm/5.3/include --libdir=/home/zhangsz/rtems/arm/5.3/lib --libexecdir=/home/zhangsz/rtems/arm/5.3/libexec --mandir=/home/zhangsz/rtems/arm/5.3/share/man --infodir=/home/zhangsz/rtems/arm/5.3/share/info --datadir=/home/zhangsz/rtems/arm/5.3/share --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-rtems5 --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --verbose --with-newlib --disable-nls --without-included-gettext --disable-win32-registry --disable-werror --enable-version-specific-runtime-libs --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++,lto
Thread model: rtems
gcc version 7.5.0 20191114 (RTEMS 5, RSB 5.3, Newlib 7947581) (GCC)
  • 当前 rtems 5.3 arm gcc 的版本: gcc version 7.5.0

  • 自此, rtems 5.3 版本 ARM 32位 的 交叉编译工具链生成成功

小结

  • 本篇注意记录 rtems 5.3 版本 arm gcc 交叉编译工具链的生成,使用了 newlib C 库

  • rtems 支持 bsp qemu realview_pbx_a9 ,后续可以在没有硬件的情况下运行、调试 rtems,熟悉 rtems

  • rtems arm gcc 交叉编译工具链还支持其他 arm 系列的平台,比如 rtems 支持的 STM32F4 平台,后续尝试在 STM32 平台上移植适配 rtems


http://www.mrgr.cn/news/25453.html

相关文章:

  • 9月12号作业
  • Day23_0.1基础学习MATLAB学习小技巧总结(23)——句柄图形
  • Java教程:SE进阶【十万字详解】(上)
  • c语言--力扣简单题目(最后一个单词的长度)讲解
  • 人工智能如何改变我们的工作方式
  • 2024软件测试自动化面试题(含答案)
  • 每日OJ_牛客_马戏团(模拟最长上升子序列)
  • 9.12日常记录
  • 文心智能体应用:美国旅游助手的诞生
  • 小米路由器 BE7000 Docker、固件实践心得
  • 反编译app
  • 【hot100】力扣hot100部分题解
  • 测评造假?Mistral首个多模态模型Pixtral 12B发布
  • 基于SpringBoot的点餐平台网站
  • 如何在Word中复制整页内容并保持原有格式不变?
  • Python 从入门到实战15(字符串其它操作)
  • dp+观察,CF 1864 D. Matrix Cascade
  • Python基础语法(1)上
  • 光纤的两种模式
  • margin重叠该怎么解决?