你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【RTEMS环境搭建】

[复制链接]
andeyqi 发布时间:2019-1-2 07:43
本帖最后由 andeyqi 于 2019-1-5 19:45 编辑
RTEMS

RTEMS(多处理系统实时可执行体)是一个为嵌入式系统而设计的自由的开源实时操作系统。
在缩写词RTEMS取其现在的含义之前,初始时代表导弹系统实时可执行体,然后变成了军用系统实时可执行体。
RTEMS曾被移殖到多个以不同类型的中央处理器(CPU)为基础的计算机系统上。这些计算机系统所采用的CPU,计有:ARM、i386、m68k、MIPS、PowerPC、SH等多种不同的处理器。RTEMS被设计为支持多种开放的API如POSIX和uITRON。FreeBSD和TCP/IP栈还有多种文件系统也被支持。OAR公司当前在维护和管理RTEMS项目。RTEMS也被一些EPICS站点所使用。
RTEMS是在GPL授权条款下分发,但它允许将RTEMS的目标文件链接至其它文件而不需将整个文件以GPL授权覆盖,这方面有点像LGPL。
RTEMS的源代码下已经支持了stm32f4系列,用户只要配置编译即可运行在f4系列的设备,本实验基于STM32F446 Nucleo开发板,编译成功后会生成如下的开发工具包。

  1. rtems-4.11.3/c/src/lib/libbsp/arm/stm32f4/
  2. ├── aclocal.m4
  3. ├── autom4te.cache
  4. │   ├── output.0
  5. │   ├── output.1
  6. │   ├── requests
  7. │   ├── traces.0
  8. │   └── traces.1
  9. ├── bsp_specs
  10. ├── configure
  11. ├── configure.ac
  12. ├── console
  13. │   ├── console-config.c
  14. │   └── usart.c
  15. ├── i2c
  16. │   ├── i2c.c
  17. │   └── i2c-config.c
  18. ├── include
  19. │   ├── bsp.h
  20. │   ├── bspopts.h.in
  21. │   ├── i2c.h
  22. │   ├── io.h
  23. │   ├── irq.h
  24. │   ├── rcc.h
  25. │   ├── stm32f10xxx_exti.h
  26. │   ├── stm32f10xxx_gpio.h
  27. │   ├── stm32f10xxx_rcc.h
  28. │   ├── stm32f4.h
  29. │   ├── stm32f4xxxx_adc.h
  30. │   ├── stm32f4xxxx_exti.h
  31. │   ├── stm32f4xxxx_flash.h
  32. │   ├── stm32f4xxxx_gpio.h
  33. │   ├── stm32f4xxxx_otgfs.h
  34. │   ├── stm32f4xxxx_pwr.h
  35. │   ├── stm32f4xxxx_rcc.h
  36. │   ├── stm32f4xxxx_syscfg.h
  37. │   ├── stm32f4xxxx_tim.h
  38. │   ├── stm32_i2c.h
  39. │   ├── stm32_usart.h
  40. │   └── usart.h
  41. ├── make
  42. │   └── custom
  43. │       ├── stm32f105rc.cfg
  44. │       ├── stm32f105rc-testsuite.tcfg
  45. │       ├── stm32f4.cfg
  46. │       └── stm32f4-testsuite.tcfg
  47. ├── Makefile.am
  48. ├── Makefile.in
  49. ├── preinstall.am
  50. ├── README
  51. └── startup
  52.     ├── bspreset.c
  53.     ├── bspstart.c
  54.     ├── bspstarthook.c
  55.     ├── io.c
  56.     ├── linkcmds.stm32f105rc
  57.     ├── linkcmds.stm32f4
  58.     ├── rcc.c
  59.     └── start-config-io.c

  60. 7 directories, 51 files
复制代码



一,编译工具链的编译配置。 ①下载rtems-source-builder-4.11.3 编译工具,下载链接如下:
http://ftp.rtems.org/pub/rtems/releases/4.11/4.11.3/rtems-source-builder-4.11.3.tar.xz
②编译配置,ubantu16.04下安装依赖工具包:
  1. -------------------------------------------------------------
  2. $ sudo apt-get build-dep binutils gcc g++ gdb unzip git python2.7-dev
  3. -------------------------------------------------------------
复制代码
检测编译主机(Ubantu 16.04)环境:
  1. $ cd rtems-source-builder
  2. $ source-builder/sb-check
复制代码
Checking 成功后,编译交叉工具链:
  1. $ cd rtems

  2. $ sudo ../source-builder/sb-set-builder --log=l-arm.txt --prefix=/opt/sdk/rtems4.11.3  4.11/rtems-arm.bset
复制代码

编译过程会持续2小时左右,编译成功后会在--prefix=/opt/sdk/rtems4.11.3  路径下安装交叉工具链
  1. /opt/sdk/rtems4.11.3/bin/
  2. ├── aclocal
  3. ├── aclocal-1.12
  4. ├── arm-rtems4.11-addr2line
  5. ├── arm-rtems4.11-ar
  6. ├── arm-rtems4.11-as
  7. ├── arm-rtems4.11-c++
  8. ├── arm-rtems4.11-c++filt
  9. ├── arm-rtems4.11-cpp
  10. ├── arm-rtems4.11-elfedit
  11. ├── arm-rtems4.11-g++
  12. ├── arm-rtems4.11-gcc
  13. ├── arm-rtems4.11-gcc-4.9.3
  14. ├── arm-rtems4.11-gcc-ar
  15. ├── arm-rtems4.11-gcc-nm
  16. ├── arm-rtems4.11-gcc-ranlib
  17. ├── arm-rtems4.11-gcov
  18. ├── arm-rtems4.11-gdb
  19. ├── arm-rtems4.11-gprof
  20. ├── arm-rtems4.11-ld
  21. ├── arm-rtems4.11-ld.bfd
  22. ├── arm-rtems4.11-nm
  23. ├── arm-rtems4.11-objcopy
  24. ├── arm-rtems4.11-objdump
  25. ├── arm-rtems4.11-ranlib
  26. ├── arm-rtems4.11-readelf
  27. ├── arm-rtems4.11-run
  28. ├── arm-rtems4.11-size
  29. ├── arm-rtems4.11-strings
  30. ├── arm-rtems4.11-strip
  31. ├── autoconf
  32. ├── autoheader
  33. ├── autom4te
  34. ├── automake
  35. ├── automake-1.12
  36. ├── autoreconf
  37. ├── autoscan
  38. ├── autoupdate
  39. ├── covoar
  40. ├── ifnames
  41. ├── rtems-ld
  42. ├── rtems-ra
  43. ├── rtems-rap
  44. ├── rtems-syms
  45. ├── rtems-test
  46. ├── rtems-tld
  47. ├── trace-converter
  48. └── xmlwf
复制代码
测试 arm-rtems4.11-gcc 版本如下:
  1. andey@ubuntu:/opt/sdk/rtems4.11.3$ /opt/sdk/rtems4.11.3/bin/arm-rtems4.11-gcc -v
  2. Using built-in specs.
  3. COLLECT_GCC=/opt/sdk/rtems4.11.3/bin/arm-rtems4.11-gcc
  4. COLLECT_LTO_WRAPPER=/opt/sdk/rtems4.11.3/libexec/gcc/arm-rtems4.11/4.9.3/lto-wrapper
  5. Target: arm-rtems4.11
  6. Configured with: ../gcc-4.9.3/configure --prefix=/opt/sdk/rtems4.11.3 --bindir=/opt/sdk/rtems4.11.3/bin --exec_prefix=/opt/sdk/rtems4.11.3 --includedir=/opt/sdk/rtems4.11.3/include --libdir=/opt/sdk/rtems4.11.3/lib --libexecdir=/opt/sdk/rtems4.11.3/libexec --mandir=/opt/sdk/rtems4.11.3/share/man --infodir=/opt/sdk/rtems4.11.3/share/info --datadir=/opt/sdk/rtems4.11.3/share --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-rtems4.11 --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --verbose --with-newlib --with-system-zlib --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-obsolete --enable-libgomp --enable-languages=c,c++
  7. Thread model: rtems
  8. gcc version 4.9.3 20150626 (RTEMS 4.11.3, RSB no-repo, Newlib 2.2.0.20150423) (GCC)
复制代码


二 编译开发SDK:
下载rtems源码,链接如下:http://ftp.rtems.org/pub/rtems/releases/4.11/4.11.3/rtems-4.11.3.tar.xz使用自带的bootstrap 工具配置工程,使用方法如下:
  1. usage()
  2. {
  3.   echo
  4.   echo "usage: ${progname} [-c|-p|-h] [-q][-v]"
  5.   echo
  6.   echo "options:"
  7.   echo "        -c .. clean, remove all aclocal/autoconf/automake generated files"
  8.   echo "        -h .. display this message and exit"
  9.   echo "        -p .. regenerate preinstall.am files"
  10.   echo "        -q .. quiet, don't display directories"
  11.   echo "        -v .. verbose, pass -v to autotools"
  12.   echo
  13.   exit 1
  14. }
复制代码
  1. rtems源码根目录下清除配置文件:
复制代码
配置成功后,编译SDK:
  1.   ../rtems-4.11.3/configure --target=arm-rtems4.11 --disable-itron --disable-cxx --disable-networking --enable-rtemsbsp="stm32f4" --prefix=/home/andey/Download/RTEMS4.11.3/stm32f4
  2.   make
  3.   make install
复制代码
编译成功会在安装目录下生成编译好的测试程序:以下烧写hello测试程序
  1. stm32f4/arm-rtems4.11/c/stm32f4/testsuites/samples/hello
复制代码
  1. 生成bin文件:arm-rtems4.11-objcopy -O binary  hello.exe hello.bin
复制代码
烧写测试程序运行效果如下:

4a4dc231b8910a3c28d2[00-00-00--00-00-08].gif

rtems-docs-4.11.3.zip (13.47 MB, 下载次数: 6)
收藏 1 评论7 发布时间:2019-1-2 07:43

举报

7个回答
huangxuejia-292 回答时间:2019-1-2 08:41:47
能整理一套完整的教程就好了,RTEMS还是很好的,只是中文教程很少很少
andeyqi 回答时间:2019-1-2 09:31:36
huangxuejia-292 发表于 2019-1-2 08:41
能整理一套完整的教程就好了,RTEMS还是很好的,只是中文教程很少很少

嗯,这个资料确实少了些,之前的项目用过,不过都是做的上层应用的开发,对系统还不熟悉,闲来没玩事正好有f4的开发板,就研究了下,中文资料比较少只能慢慢啃光官方的文档了。
MrJiu 回答时间:2019-1-2 09:51:11
了解了一下,好像确实很强大,就编译工具好像有点麻烦。。。怎么使用教程比较少,需要人自己直接读代码!!!
zhdzhd-174422 回答时间:2019-1-2 09:57:40
不错,支持
andeyqi 回答时间:2019-1-2 10:09:32

感谢 支持  
andeyqi 回答时间:2019-1-2 10:15:27
MrJiu 发表于 2019-1-2 09:51
了解了一下,好像确实很强大,就编译工具好像有点麻烦。。。怎么使用教程比较少,需要人自己直接读代码!! ...

嗯  资料少些 还在慢慢消化理解自带的文档。
yxgi5 回答时间:2020-9-25 10:47:31
编译成功后会生成如下的开发工具包。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版