Thank you for the guidance!
I just finished RTEMS Boot on BeagleBone Black.
During the process of bringing up RTEMS on the BeagleBone Black (BBB), I encountered an issue where the board failed to boot and no serial output was observed. After systematic debugging, I identified the root cause and successfully booted RTEMS. The debugging process and conclusions are summarized below.
1. Serial Debug Setup
To monitor the boot process, I used a USB-to-TTL serial adapter (FTDI-based, 3.3V). The connection was made via the BBB J1 debug header:
- GND → J1 pin 1
- TX (adapter) → J1 pin 4 (BBB RX)
- RX (adapter) → J1 pin 5 (BBB TX)
On macOS, the serial interface was identified and accessed using:
ls /dev/cu.*
screen /dev/cu.usbserial-XXXX 115200
This setup was verified by successfully observing Linux boot logs when no SD card was inserted.
2. Initial Problem
When inserting the SD card containing the RTEMS boot files and powering on the board, the following behavior was observed:
- No serial output
- No normal BBB board LED activity
- System appeared to be stalled during early boot
This suggested that the boot process was failing before reaching U-Boot or RTEMS execution.
3. Root Cause Analysis
Initially, I attempted to boot from the SD card by pressing the S2 (BOOT) button during power-up. However, this approach corresponds to a different boot mode:
- Pressing S2 forces pure SD card boot
- This mode requires additional bootloader files:
- MLO
- u-boot.img
In my setup, the SD card only contained:
- rtems-app.img
- am335x-boneblack.dtb
- uEnv.txt
These files are intended for a different boot method:
- Using the U-Boot already stored on the onboard eMMC
- U-Boot reads uEnv.txt from the SD card and executes the boot commands
Because the SD card did not include MLO and u-boot.img, forcing SD boot caused the board to fail very early, resulting in no serial output.
4. Correct Boot Method
The correct procedure for this setup is:
- Power off the BBB
- Insert the SD card
- Open the serial terminal
- Power on the board without pressing the S2 button
In this mode:
- The onboard eMMC U-Boot runs first
- U-Boot detects and loads uEnv.txt from the SD card
- The RTEMS image is loaded using fatload and started with bootm
5. Result
After using the correct boot procedure:
- Serial output appeared as expected
- RTEMS booted successfully
- The system executed the RTEMS application correctly
This confirmed that:
- The SD card contents were correct
- The uEnv.txt configuration was valid
- The DTB (am335x-boneblack.dtb) was appropriate
- The issue was purely related to incorrect boot mode selection
6. Key Takeaways
- There are two distinct SD boot paths on BBB:
- eMMC U-Boot + SD (uEnv.txt method) → does NOT require S2 button
- Pure SD boot (ROM boot) → requires MLO and u-boot.img
- Pressing the BOOT button without proper bootloader files leads to silent boot failure
- Serial debugging via J1 is essential for diagnosing early boot issues
- Correct understanding of the BBB boot flow is critical for RTEMS bring-up
7. Next Steps
- Compare Linux CAN (c_can driver) behavior with RTEMS CAN stack
This debugging process significantly improved my understanding of the BBB boot sequence and RTEMS integration, and will help guide further development work.
I have completed a draft of my proposal. I would greatly appreciate any feedback or suggestions to help improve it. Here is the link of my draft proposal.

