跳轉到內容

嵌入式軟體開發人員的 RTEMS/入門

來自華夏公益教科書

RTEMS 使用 Gnu 工具的修補版本來編譯 RTEMS。本章將涵蓋

  1. 構建 RTEMS 工具集
  2. 構建/使用引導載入程式
  3. 配置 RTEMS
  4. RTEMS Eclipse 外掛
  5. 在硬體模擬器上使用 RTEMS
  6. 在硬體上使用 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 工具集

[編輯 | 編輯原始碼]

要獲取 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 有以下開關

  1. 列出並描述它們

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

[編輯 | 編輯原始碼]

要從原始碼編譯 U-Boot,需要採取的典型步驟類似於free-electrons.com/doc/u-boot.pdf

  1. 在 boards.config 中查詢正確的配置
  2. 使用gmake eb_cpu5282_config為板配置 U-Boot
  3. 使用gmake CROSS_COMPILE=m68k-rtems4.11-為板構建 U-Boot

RTEMS 執行的硬體架構所需的其它引導載入程式

[編輯 | 編輯原始碼]

填寫本節的參考資料是:http://www.rtems.com/wiki/index.php/Building_Grubhttp://www.rtems.org/wiki/index.php/QEMU

(文件將必須先編寫並在另一個網頁上釋出,然後引用,這樣就不會將原創作品放在華夏公益教科書上)為了演示目的,coldfire-m68k 示例可以使用 u-boot。 http://git.denx.de/?p=u-boot/u-boot-coldfire.git

RTEMS Eclipse 外掛

[編輯 | 編輯原始碼]

這是一個存根。涵蓋 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

在硬體模擬器上使用 RTEMS

[編輯 | 編輯原始碼]

構建 QEMU

[編輯 | 編輯原始碼]

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/

在硬體上使用 RTEMS

[編輯 | 編輯原始碼]

這是一個存根。理想情況下,應該涵蓋至少兩個板支援包的載入可執行檔案。同樣,記錄 IDE 支援將是最終目標。

使用 Xilinx 在 LEON3 上使 RTEMS 工作的參考。 http://www.rte.se/blog/blogg-modesty-corex/index

華夏公益教科書