RTEMS Documentation Project
RTEMS User Manual
1. Introduction
1.1. Overview
1.2. Features
1.3. Ecosystem
1.3.1. Rational
1.3.2. Open Source
1.3.3. Deployment
1.4. Real-time Application Systems
1.5. Real-time Executive
2. Quick Start
2.1. Preparation
2.1.1. Host Computer
2.1.2. Selecting a BSP
2.1.3. Selecting a Version of RTEMS
2.2. Choose an Installation Prefix
2.3. Obtain the Sources
2.3.1. Releases
2.3.2. Git
2.3.3. Offline Download
2.4. Install the Tool Suite
2.4.1. Creating a Tool Archive
2.4.2. Need for RTEMS-Specific Cross-Compiler
2.4.3. Project Sandboxing
2.5. Build a Board Support Package (BSP)
2.5.1. RSB BSP Build
2.5.2. Manual BSP Build
2.6. Test a Board Support Package (BSP)
2.7. Build Your Application
2.8. Build an RSB Package
2.8.1. RTEMS Packages
2.8.2. BSP Stack Build
2.8.3. Package Build
2.9. GSoC Getting Started
2.9.1. Installing Dependencies
2.9.2. Choosing an installation prefix
2.9.3. Downloading the Sources
2.9.4. Installing the Tool Suite
2.9.5. Building the Board Support Package
2.9.6. Testing the Board Support Package
2.9.7. Prove You Can Work On RTEMS
2.9.8. Creating and Sending Patches
3. Support and Contributing
3.1. RTEMS Project Support
3.1.1. Users Mailing List
3.1.2. Documentation
3.1.3. All Mailing Lists
3.1.4. Discord
3.2. Report Bugs
3.2.1. Search for Existing Bugs
3.2.2. Not RTEMS Bugs
3.2.3. Creating Good Bug Reports
3.2.4. Nobody Fixes my Bug
3.3. Contributing
3.3.1. How to Contribute?
3.3.2. Preparing and Submitting Merge Requests
3.3.3. Checklist for Merge Requests
3.3.4. Review Process
3.3.5. Updating a Merge Request
3.3.6. Rebasing a Merge Request
3.3.7. Approvers
3.3.8. Why Contribute?
3.3.9. Common Questions and Answers
3.4. Commercial Support Services
4. Host Computer
4.1. Python
4.1.1. Virtual Environment
4.1.2. Symbolic Link
4.1.3. Directly Invoking Python
4.2. Host Operating Systems
4.3. POSIX Hosts
4.3.1. Root Access
4.3.2. Linux
4.3.2.1. ArchLinux
4.3.2.2. CentOS
4.3.2.3. Fedora
4.3.2.4. Raspbian
4.3.2.5. Ubuntu
4.3.2.6. Linux Mint
4.3.2.7. openSUSE
4.3.3. FreeBSD
4.3.4. NetBSD
4.4. Apple macOS
4.4.1. Python
4.4.2. Sonoma
4.4.3. Ventura
4.4.4. Monterey
4.4.5. Catalina
4.4.6. Sierra
4.4.7. Mavericks
4.5. Microsoft Windows
4.5.1. Windows Path Length
4.5.2. Windows Spaces In Paths
4.5.3. Parallel Builds with Make
4.5.4. POSIX Support
4.5.5. Python
4.5.6. MSYS2
4.5.7. Cygwin
5. Deployment
5.1. RSB Deployment
5.1.1. Deployment Repository
5.1.2. Tools Configuration
5.1.3. Tools and Kernel
5.1.4. Tools and Kernel with Config
5.1.5. Tools, Kernel and Packages
5.1.6. Tools, Kernel with Config and Packages
6. Target Hardware
6.1. Targets
6.2. Architectures
6.3. Tiers
7. BSP Build System
7.1. Overview
7.2. Work Flow
7.3. Commands
7.3.1. Help
7.3.2. BSP List
7.3.3. BSP Defaults
7.3.4. Configure
7.3.5. Build, Clean, and Install
7.4. Configuration
7.5. Migration from Autoconf/Automake
8. Board Support Packages
8.1. aarch64 (AArch64)
8.1.1. Qemu A53
8.1.1.1. Boot via ELF
8.1.1.2. Clock Driver
8.1.1.3. Console Driver
8.1.1.4. Running Executables
8.1.2. Qemu A72
8.1.2.1. Boot via ELF
8.1.2.2. Clock Driver
8.1.2.3. Console Driver
8.1.2.4. Running Executables
8.1.3. Qemu Xilinx Versal
8.1.3.1. Boot via ELF
8.1.3.2. Clock Driver
8.1.3.3. Console Driver
8.1.3.4. Running Executables
8.1.4. Xilinx ZynqMP
8.1.4.1. Boot on QEMU
8.1.4.2. Boot on ZynqMP Hardware
8.1.4.3. Hardware Boot Image Generation
8.1.4.4. Example: Booting a RTEMS image on the ZCU102 ZynqMP board
8.1.4.5. Clock Driver
8.1.4.6. Console Driver
8.1.4.7. SDHCI Driver
8.1.4.8. Network Configuration
8.1.4.9. Running Executables on QEMU
8.1.5. Raspberry Pi 4B
8.1.5.1. Build Configuration Options
8.1.5.2. Clock Driver
8.1.5.3. Console Driver
8.1.5.4. GPIO Driver
8.1.5.5. SPI Driver
8.1.5.6. Watchdog Driver
8.1.5.7. Preparing to boot
8.1.5.8. JTAG Setup
8.2. arm (ARM)
8.2.1. altera-cyclone-v (Intel Cyclone V)
8.2.1.1. Boot via U-Boot
8.2.1.2. Clock Driver
8.2.1.3. Console Driver
8.2.1.4. I2C Driver
8.2.1.5. Network Interface Driver
8.2.1.6. MMC/SDCard Driver
8.2.1.7. USB Host Driver
8.2.1.8. Caveats
8.2.2. atsam
8.2.3. beagle
8.2.3.1. Boot via U-Boot
8.2.3.2. Drivers
8.2.3.3. Debugging using libdebugger
8.2.3.4. Debugging Beagle Bone Black using a JTAG debugger and gdb
8.2.3.5. Debugging using a JTAG debugger and gdb without any bootcode
8.2.3.6. Testing
8.2.4. csb336
8.2.5. csb337
8.2.6. edb7312
8.2.7. fvp (Fixed Virtual Platform)
8.2.7.1. Run an Executable
8.2.7.2. Clock Driver
8.2.7.3. Console Driver
8.2.8. gumstix
8.2.9. imx (NXP i.MX)
8.2.9.1. Build Configuration Options
8.2.9.2. Clock settings for different boards
8.2.9.3. Boot via U-Boot
8.2.9.4. Boot via barebox
8.2.9.5. Clock Driver
8.2.9.6. Console Driver
8.2.9.7. I2C Driver
8.2.9.8. SPI Driver
8.2.9.9. Network Interface Driver
8.2.9.10. MMC/SDCard Driver
8.2.9.11. Caveats
8.2.10. imxrt (NXP i.MXRT)
8.2.10.1. Build Configuration Options
8.2.10.2. Adapting to a different board
8.2.10.3. Boot Process of IMXRT1050-EVKB
8.2.10.4. Flash Image
8.2.10.5. FDT
8.2.10.6. Clock Driver
8.2.10.7. IOMUX
8.2.10.8. Console Driver
8.2.10.9. I2C Driver
8.2.10.10. SPI Driver
8.2.10.11. Network Interface Driver
8.2.10.12. NXP SDK files
8.2.10.13. Clocks and SDRAM
8.2.10.14. Caveats
8.2.11. lm3s69xx
8.2.12. lpc176x
8.2.13. lpc24xx (NXP LPC17XX/LPC24XX/LPC40XX)
8.2.13.1. Clock Driver
8.2.13.2. Console Driver
8.2.13.3. I2C Bus Driver
8.2.13.4. SPI Bus Driver
8.2.13.5. Network Interface Driver
8.2.13.6. USB Driver
8.2.13.7. Framebuffer Driver
8.2.13.8. RTC Driver
8.2.14. raspberrypi
8.2.14.1. Setup SD card
8.2.14.2. Kernel image
8.2.14.3. SPI Driver
8.2.14.4. I2C Driver
8.2.14.5. Testing using QEMU
8.2.15. realview-pbx-a9
8.2.16. rtl22xx
8.2.17. smdk2410
8.2.18. stm32f4
8.2.19. stm32h7
8.2.19.1. Clock Driver
8.2.19.2. Console Driver
8.2.19.3. Network Interface Driver
8.2.19.4. USB Host Driver
8.2.19.5. SD/MMC Driver
8.2.19.6. How to run RTEMS on the board
8.2.20. tms570
8.2.21. xen (Xen on ARM)
8.2.21.1. Execution
8.2.21.2. Additional Information
8.2.22. xilinx-zynq
8.2.22.1. Bootloader
8.2.22.2. Clocks
8.2.22.3. Console
8.2.22.4. Network
8.2.22.5. Debugging with xilinx_zynq_a9_qemu
8.2.23. xilinx-zynqmp
8.2.24. Xilinx ZynqMP RPU
8.2.24.1. Clock Driver
8.2.24.2. Console Driver
8.2.24.3. Boot on ZynqMP Hardware
8.2.24.4. Hardware Boot Image Generation
8.2.24.5. Boot on QEMU
8.2.24.6. Running Executables on QEMU
8.2.24.7. Debugging Executables on QEMU
8.3. bfin (Blackfin)
8.3.1. bf537Stamp
8.3.2. eZKit533
8.3.3. TLL6527M
8.4. i386
8.4.1. pc386
8.4.1.1. Build Configuration Options
8.4.1.2. Runtime Options
8.4.1.3. Testing with Qemu
8.4.1.4. Running on a PC hardware
8.4.1.5. Clock Drivers
8.4.1.6. Console Drivers
8.4.1.7. Frame-Buffer Drivers
8.4.1.8. Network Interface Drivers
8.4.1.9. USB Host Drivers
8.4.1.10. RTC Drivers
8.4.1.11. I2C Drivers
8.4.1.12. SPI Drivers
8.4.1.13. Legacy Drivers
8.5. lm32 (LatticeMicro32)
8.5.1. lm32_evr
8.5.2. milkymist
8.6. m68k (Motorola 68000 / ColdFire)
8.6.1. av5282
8.6.2. csb360
8.6.3. gen68340
8.6.4. gen68360
8.6.5. genmcf548x
8.6.6. mcf5206elite
8.6.7. mcf52235
8.6.8. mcf5225x
8.6.9. mcf5235
8.6.10. mcf5329
8.6.10.1. Overview
8.6.11. mrm332
8.6.12. mvme147
8.6.13. mvme147s
8.6.14. mvme162
8.6.14.1. Overview
8.6.14.2. Board Setup
8.6.14.3. Downloading and Executing
8.6.15. mvme167
8.6.16. uC5282
8.7. microblaze (MicroBlaze)
8.7.1. KCU105 QEMU
8.7.1.1. Boot via ELF
8.7.1.2. Clock Driver
8.7.1.3. Console Driver
8.7.1.4. Network Driver
8.7.1.5. QSPI NOR JFFS2 Driver
8.7.1.6. Running Executables
8.7.1.7. Debugging with QEMU
8.7.2. KCU105
8.7.2.1. Clock Driver
8.7.2.2. Console Driver
8.7.2.3. Debugging
8.8. mips (MIPS)
8.8.1. csb350
8.8.2. hurricane
8.8.3. jmr3904
8.8.4. malta
8.8.5. rbtx4925
8.8.6. rbtx4938
8.9. moxie
8.9.1. moxiesim
8.10. nios2 (Nios II)
8.10.1. nios2_iss
8.11. or1k (OpenRISC 1000)
8.11.1. generic_or1k
8.12. powerpc (PowerPC)
8.12.1. beatnik
8.12.2. gen5200
8.12.3. gen83xx
8.12.4. haleakala
8.12.5. motorola_powerpc
8.12.5.1. Boot Image Generation
8.12.6. mpc55xxevb
8.12.7. mpc8260ads
8.12.8. mvme3100
8.12.9. mvme5500
8.12.10. psim
8.12.11. qemuppc
8.12.12. qoriq (QorIQ)
8.12.12.1. Boot via U-Boot
8.12.12.2. Clock Driver
8.12.12.3. Console Driver
8.12.12.4. Network Interface Driver
8.12.12.5. Topaz Hypervisor Guest
8.12.13. ss555
8.12.14. t32mppc
8.12.15. tqm8xx
8.12.16. virtex
8.12.17. virtex4
8.12.18. virtex5
8.13. riscv (RISC-V)
8.13.1. riscv
8.13.1.1. Build Configuration Options
8.13.1.2. Interrupt Controller
8.13.1.3. Clock Driver
8.13.1.4. Console Driver
8.13.1.5. QEMU
8.13.1.6. Spike
8.13.2. Microchip PolarFire SoC
8.13.3. Kendryte K210
8.13.4. BeagleV-Fire
8.13.5. noel
8.13.5.1. Reference Designs
8.13.5.2. Build Configuration Options
8.13.6. griscv
8.13.7. NIOS V
8.13.7.1. Reference Designs
8.13.7.2. Build Configuration Options
8.13.7.3. Building the Cyclone 10 LP BSP
8.13.7.4. Program Cyclone 10 LP Evaluation Board
8.14. sh (SuperH)
8.14.1. gensh1
8.14.2. gensh2
8.14.3. gensh4
8.14.4. shsim
8.15. sparc64 (SPARC V9)
8.15.1. niagara
8.15.2. usiii
8.16. sparc (SPARC / LEON)
8.16.1. erc32
8.16.2. leon2
8.16.3. leon3
8.16.3.1. Driver Manager
8.16.3.2. Build Configuration Options
8.17. v850 (V850)
8.17.1. gdbv850sim
8.18. x86_64
8.18.1. amd64
8.18.1.1. Build Configuration Options
8.18.1.2. Testing with QEMU
8.18.1.3. Using the RTEMS tester
8.18.1.4. Paging
8.18.1.5. Interrupt Setup
8.18.1.6. Clock Driver
8.18.1.7. Console Driver
9. Executables
9.1. RTEMS Executable
9.2. Building an Application
9.2.1. Machine Flags and ABI
9.3. Target Execution
9.4. BSP Initialization
9.5. RTEMS Initialization
9.5.1. System Initialization Handlers
9.6. Dynamic Loader
9.6.1. System Design
9.6.2. Loader Interface
9.6.3. Symbols
9.6.3.1. Base Image Symbols
9.6.3.2. Embedded Symbols
9.6.3.3. Loadable Symbols
9.6.4. Unresolved Symbols
9.6.5. Libraries
9.6.6. Large Memory
9.6.7. Allocator
9.6.8. Languages
9.6.9. Thread Local Storage
9.6.10. Architectures
9.6.10.1. AArch64
9.6.10.2. ARM
9.6.10.3. PowerPC
9.7. Device Tree
9.7.1. Building the DTB
9.7.2. Using Device Tree Overlay
10. Debugging
10.1. Debugging with GDB
10.1.1. Debugging with GDB and QEMU
10.1.1.1. Steps to Set Up Remote Debugging with QEMU
10.1.2. Debugging with GDB and OpenOCD
10.1.3. Debugging with GDB and libdebugger
10.2. Pretty Printing and GDB
10.2.1. Enabling Pretty-printing in RTEMS
11. Testing
11.1. Test Banners
11.2. Test Controls
11.2.1. Expected Test States
11.2.2. Test Configuration
11.3. Test Builds
11.4. Tester Configuration
11.4.1. Defaults
11.4.2. BSP and User Configuration
11.4.3. Configuration Scripts
11.4.3.1. Console
11.4.3.2. Execute
11.4.3.3. GDB
11.4.3.4. TFTP
11.4.3.5. Wait
11.5. Coverage Analysis
11.6. Consoles
11.7. Simulation
11.8. GDB and JTAG
11.9. TFTP and U-Boot
11.9.1. Target Hardware
11.9.1.1. U-Boot Set Up
11.9.2. BSP Configuration
11.9.3. TFTP Sequences
12. Tracing
12.1. Introduction to Tracing
12.1.1. RTEMS Trace Using Trace Buffering
12.1.2. RTEMS Trace Using Printk
12.2. Tracing Examples
12.2.1. Features
12.2.2. Prerequisites
12.2.3. Demonstration
12.3. Capture Engine
12.3.1. Capture Engine Commands
12.3.2. Example
12.4. Trace Linker
12.4.1. Command Line
12.4.2. Configuration (INI) files
12.4.2.1. Tracer Section
12.4.2.2. Options section
12.4.2.3. Trace Section
12.4.2.4. Function Section
12.4.2.5. Generators
12.4.3. Development
12.5. Event Recording
12.5.1. Target System: Configuration and Event Generation
12.5.2. Transfer of Event Records to the Host Computer
12.5.3. Analysis of Event Records on the Host Computer
13. Changing Versions
13.1. RTEMS 5 to RTEMS 6
13.1.1. Update to GCC 10 and Later
13.1.2. No -specs bsp_specs GCC Option
13.1.3. Replacements for Removed APIs
14. Host Tools
14.1. RTEMS Linker
14.2. RTEMS Symbols
14.2.1. Symbol Table
14.2.2. 2-Pass Linking
14.2.3. Command
14.2.4. Examples
14.3. RTEMS Executable Infomation
14.3.1. System Initialisation
14.3.2. Command
14.3.3. Examples
14.4. RTEMS BSP Builder
14.4.1. Developer Workflows
14.4.2. Build Characteristics
14.4.2.1. Profiles
14.4.2.2. Builds
14.4.3. Build Configurations
14.4.4. Performance
14.4.5. Command
14.4.5.1. Examples
14.5. RTEMS Tester and Run
14.5.1. Available BSP testers
14.5.2. Building RTEMS Tests
14.5.3. Running the Tests
14.5.4. Test Status
14.5.4.1. Pass
14.5.4.2. Fail
14.5.4.3. User-input
14.5.4.4. Expected-fail
14.5.4.5. Indeterminate
14.5.4.6. Benchmark
14.5.4.7. Timeout
14.5.4.8. Invalid
14.5.5. Logging
14.5.5.1. All
14.5.5.2. Failures
14.5.5.3. None
14.5.6. Reporting
14.5.7. Running Tests in Parallel
14.5.8. Command Line Help
14.6. RTEMS Boot Image
14.6.1. Boot Loaders
14.6.1.1. U-Boot
14.6.2. Hosts
14.6.2.1. FreeBSD
14.6.2.2. Linux
14.6.2.3. MacOS
14.6.3. Configuration
14.6.4. Command
14.6.5. Examples
14.7. RTEMS TFTP Proxy
14.7.1. Operation
14.7.2. Configuration
14.7.3. Command
14.7.4. Examples
15. Source Builder
15.1. Why Build from Source?
15.2. Project Sets
15.2.1. Bare Metal
15.2.2. RTEMS
15.2.3. Patches
15.2.3.1. Testing a Newlib Patch
15.3. Cross and Canadian Cross Building
15.3.1. Cross Building
15.3.2. Canadian Cross Building
15.4. Third-Party Packages
15.4.1. Vertical Integration
15.4.2. Building
15.4.3. Adding
15.4.4. Host and Build Flags
15.4.5. BSP Support
15.4.6. BSP Configuration
15.5. Configuration
15.5.1. Source and Patches
15.5.1.1. HTTP, HTTPS, and FTP
15.5.1.2. GIT
15.5.2. Macros and Defaults
15.5.2.1. Macro Maps and Files
15.5.2.2. Personal Macros
15.5.3. Configuration Reports
15.5.3.1. Report Mailing
15.5.4. Build Set Files
15.5.5. Configuration Control
15.5.6. Personal Configurations
15.5.7. New Configurations
15.5.7.1. Layering by Including
15.5.7.2. Configuration File Numbering
15.5.7.3. Common Configuration Scripts
15.5.7.4. DTC Example
15.5.7.5. Debugging
15.5.8. Scripting
15.5.8.1. Expanding
15.5.8.2. %prep
15.5.8.3. %build
15.5.8.4. %install
15.5.8.5. %clean
15.5.8.6. %include
15.5.8.7. %name
15.5.8.8. %summary
15.5.8.9. %release
15.5.8.10. %version
15.5.8.11. %buildarch
15.5.8.12. %source
15.5.8.13. %patch
15.5.8.14. %hash
15.5.8.15. %echo
15.5.8.16. %warning
15.5.8.17. %error
15.5.8.18. %select
15.5.8.19. %define
15.5.8.20. %undefine
15.5.8.21. %if
15.5.8.22. %ifn
15.5.8.23. %ifarch
15.5.8.24. %ifnarch
15.5.8.25. %ifos
15.5.8.26. %else
15.5.8.27. %endfi
15.5.8.28. %bconf_with
15.5.8.29. %bconf_without
15.6. Commands
15.6.1. Checker (sb-check)
15.6.2. Defaults (sb-defaults)
15.6.3. Set Builder (sb-set-builder)
15.6.4. Track (sb-track)
15.7. Building and Deploying Tool Binaries
15.8. Bugs, Crashes, and Build Failures
15.8.1. Contributing
15.9. History
16. Rust
16.1. Bare Metal Rust with RTEMS
16.1.1. Build a Container
16.1.2. Build the RTEMS Tools
16.1.3. Build and Install the RTEMS BSPs
16.1.4. Install and Setup Rust Tools
16.1.5. Setup a Rust Project and Create Sources
16.1.6. Build and Run on RISC-V
16.1.7. Build and Run on SPARC
17. Glossary
Index
RTEMS User Manual
6.
Target Hardware
6.
Target Hardware
ΒΆ
6.1. Targets
6.2. Architectures
6.3. Tiers