嵌入式软件开发人员的 RTEMS/入门
RTEMS 使用 Gnu 工具的修补版本来编译 RTEMS。本章将涵盖
- 构建 RTEMS 工具集
- 构建/使用引导加载程序
- 配置 RTEMS
- RTEMS Eclipse 插件
- 在硬件模拟器上使用 RTEMS
- 在硬件上使用 RTEMS
虽然有些平台可以安装预构建的工具,但一些开发者可能希望在不同的平台上安装 RTEMS 工具集,或者在他们的机器上安装更新或更成熟版本的 RTEMS 工具集。
RTEMS 应用程序旨在运行在与开发进行的系统不同的操作系统(RTEMS 而不是 Windows、Mac 或 Linux)和不同的硬件上(例如 Sparc、Arm 或 m68k 而不是 x86-64)。工具集是 binutils、newlib 和 gcc 的特殊修补和配置版本。由于这是一本教科书,因此这些材料将以冗长的解释方式呈现——如何在 RTEMS 网站上找到。
首先,平台必须支持修补代码,从 configure.ac 元脚本编写配置脚本,从 Makefile.ams 生成 Makefile,以及编译交叉编译器。不同的平台需要不同的流程才能实现此目标。理想情况下,本文最终将包括如何在 Windows、Mac 和 Linux 上构建工具集。
要获取 RTEMS 工具集,请按照http://www.rtems.org/wiki/index.php/RTEMS_Development_Hosts上的说明进行操作。
更多相关主题可以在以下位置找到:
如何从头开始构建工具 http://www.rtems.org/wiki/index.php/Building_the_RTEMS_toolset_on_Ubuntu
Windows 安装程序的想法:使用 NSIS:请参阅 http://git.rtems.org/rtems/tree/contrib/mingw处的 rtems/contrib/mingw
RTEMS 有以下开关
- 列出并描述它们
RTEMS 可以同时为多个架构构建。对于我们的 m68k 示例,我们选择 Coldfire 架构(因为这是 QEMU 模拟的 m68k 架构),以及 sim68000(因为这是 RTEMS-GDB 运行的架构)。
../rtems/configure --target=m68k-rtems4.11 --enable-tests=samples --enable-rtemsbsps=all gmake RTEMS_BSP="av5282 uC5282" gmake CC=/opt/rtems-4.11/bin/m68k-rtems4.11-gcc install
这是一个存根。涵盖引导加载程序的原因是为了告知新开发者如何在不进行二进制修改的情况下使他们的代码在板上运行。需要一个表格,其中列出 RTEMS 已移植到的硬件以及与之配合使用的引导加载程序。可能的参考资料
http://en.wikipedia.org/wiki/Comparison_of_boot_loaders.
可以在 Debian 安装程序手册中找到不同架构的引导加载程序的一些参考资料
http://wiki.debian.org/BootLoader
本小节涵盖
针对各种硬件的引导加载程序...
参考资料:http://www.rtems.org/wiki/index.php/MicroMonitor
http://www.microcross.com/html/micromonitor.html
插入有关通用引导加载程序 (U-Boot) 的信息。
要从源代码编译 U-Boot,需要采取的典型步骤类似于free-electrons.com/doc/u-boot.pdf
- 在 boards.config 中查找正确的配置
- 使用gmake eb_cpu5282_config为板配置 U-Boot
- 使用gmake CROSS_COMPILE=m68k-rtems4.11-为板构建 U-Boot
填写本节的参考资料是:http://www.rtems.com/wiki/index.php/Building_Grub和http://www.rtems.org/wiki/index.php/QEMU
(文档将必须先编写并在另一个网页上发布,然后引用,这样就不会将原创作品放在维基教科书上)为了演示目的,coldfire-m68k 示例可以使用 u-boot。 http://git.denx.de/?p=u-boot/u-boot-coldfire.git
这是一个存根。涵盖 RTEMS Eclipse 插件的原因是确保本书中的材料具有前瞻性。其他 RTOS 使用集成开发环境,新的 RTEMS 开发人员可能会发现使用 Eclipse 会提高他们的生产力。要填写本节,请参考
http://www.rtems.org/wiki/index.php/RTEMS_Eclipse_Plug-in .
http://www.rtems.org/wiki/index.php/RTEMS_Eclipse_Information .
http://www.fogel.ca/2008/10/02/getting-eclipse-and-java-working-on-debian/ .
http://stackoverflow.com/questions/6044138/remote-debugging-in-eclipse-cdt
Qemu 使用 zlib 压缩库和 sdl 库,必须在构建 QEMU 之前安装这两个库。要构建 QEMU,这是一个存根。参考从中获取有关为什么使用 Qemu 的想法
lwn.net/images/conf/rtlws11/papers/proc/p09.pdf
覆盖硬件模拟器的目的是因为一些 RTEMS 开发人员无法持续访问实际硬件。要完成本节内容,请参考:http://www.rtems.org/wiki/index.php/QEMU(如果可能,将 Qemu 从 Eclipse 中运行的步骤应记录在其他地方,例如 RTEMS wiki,并引用,以避免在 Wikibooks 上重复原始工作,并且包含在本节中)。
1. 从 Eclipse 运行 Qemu http://www.codeconfidence.com/technote-0002.shtml
2. 从 Eclipse 运行 GDB 和 DDD
引导读者使用 DDD 调试 RTEMS。
使用 DDD 调试原生 C 程序的示例
http://www.youtube.com/watch?v=CkJRruFzwLM&feature=fvwrel
使用 GDB 在命令行上调试 Qemu 上的 Uboot 的幻灯片
files.meetup.com/1590495/debugging-with-qemu.pdf
解释如何在 QEMU 上将 U-boot 作为独立程序运行的帖子 http://old.nabble.com/can-u-boot-run-standalone-in-qemu%28qemu-system-arm%29-without-kernel-image%28for-mainstone-II%29-td17534853.html
如何使 Eclipse 构建 uboot 并启动调试会话... http://www.at91.com/forum/viewtopic.php/t%2c20216/
这是一个存根。理想情况下,应该涵盖至少两个板支持包的加载可执行文件。同样,记录 IDE 支持将是最终目标。
使用 Xilinx 在 LEON3 上使 RTEMS 工作的参考。 http://www.rte.se/blog/blogg-modesty-corex/index