Testing of the Raspberry Pi graphic support

Pavel Pisa pisa at cmp.felk.cvut.cz
Tue Jun 30 23:41:00 UTC 2015

Hello Qiao Yang,

I have prepared testing on RPi B+ hardware last days
I have got to test your RTEMS branch


I have tried

  e89884b add memory table entry for frame buffer (try to cover all possibility, may be larger afterward if it's not enough)

and then

  b560cb2 refactor outch scratch

which has been left in my local copy from the previous fetch.

I have been able to build RTEMS as well as graphic libraries.
I have tried to build my standard shell test code and some graphic

My setup

  host system Debian Linux amd64


  tools - local build

  arm-rtems4.11-gcc (GCC) 4.9.2 with newlib newlib-, binutils 2.24
with: ../../../src/gcc-4.9/configure --target=arm-rtems4.11 --prefix=/usr --build=x86_64-pc-linux-gnu --enable-languages=c,c++ --disable-libstdcxx-pch --with-gnu-ld --with-gnu-as --enable-threads --enable-target-optspace --with-system-zlib --verbose --disable-nls --without-included-gettext --disable-win32-registry --with-newlib --enable-plugin --enable-newlib-io-c99-formats --enable-version-specific-runtime-libs --enable-newlib-iconv --disable-lto

  used successfully for LPC4078 and LPC1778 RTEMS


  RTEMS configured

     ../../../git/rtems-yangqiao/configure --target=arm-rtems4.11 --prefix=/opt/rtems4.11 \
  --enable-rtems-inlines --disable-multiprocessing --enable-cxx \
  --enable-rdbg --enable-maintainer-mode --enable-tests=samples \
  --enable-networking --enable-posix --disable-itron --disable-ada \
  --disable-expada --disable-multilib --disable-docs \


  Raspberry Pi direct boot by config.txt options


  generated by

  arm-rtems4.11-objcopy -R -S -O binary "$EXE_NAME" "$EXE_NAME.bin"


  Raspberry Pi boot over U-boot and extlinux/extlinux.conf

  DEFAULT default
  MENU TITLE Boot menu

  LABEL RTEMS appfoo
    LINUX appfoo.img
    FDTDIR .

  Image generated by

  arm-rtems4.11-objcopy -R -S -O binary "$EXE_NAME" "$EXE_NAME.bin" || exit 1
  cat "$EXE_NAME.bin" | gzip -9 >"$EXE_NAME.gz"
  mkimage \
    -A arm -O rtems -T kernel -a 0x00008000 -e 0x00008000 -n "RTEMS" \
    -d "$EXE_NAME.gz" "$EXE_NAME.img"


The monitor resolution has been correctly obtained and printed for all combinations
but then there has been no progress/output on serial port even on HDMI output

Startup log for U-boot case

U-Boot 2015.04-rc2-gc5ec3a2 (Mar 05 2015 - 21:46:11)

DRAM:  448 MiB
WARNING: Caches not enabled
RPI Model B+
MMC:   bcm2835_sdhci: 0
reading uboot.env
In:    serial
Out:   lcd
Err:   lcd
Net:   Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot:  0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found /extlinux/extlinux.conf
Retrieving file: /extlinux/extlinux.conf
reading /extlinux/extlinux.conf
2176 bytes read in 20 ms (105.5 KiB/s)
Boot menu
1:      Linux 3.18.8-rt2+ with Overlay
2:      Linux 3.18.8-rt2+ with Aufs
3:      Linux 3.18.8-rt2+ RW root
4:      Linux 3.18.8-rt2+ NFS BusyBox
5:      Linux 3.18.8-rt2+ NFS Overlay
6:      Linux 3.18.8-rt2+ NFS RW
7:      RTEMS appfoo
8:      RTEMS demo_suitk
9:      Boot by localcmd
Enter choice: 8
8:      RTEMS demo_suitk
Retrieving file: /extlinux/demo_suitk.img
reading /extlinux/demo_suitk.img
375420 bytes read in 89 ms (4 MiB/s)
Retrieving file: /extlinux/./bcm2835-rpi-b-plus.dtb
reading /extlinux/./bcm2835-rpi-b-plus.dtb
4702 bytes read in 28 ms (163.1 KiB/s)
## Booting kernel from Legacy Image at 01000000 ...
   Image Name:   RTEMS
   Image Type:   ARM RTEMS Kernel Image (gzip compressed)
   Data Size:    375356 Bytes = 366.6 KiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Transferring control to RTEMS (at address 00008000) ...
[+] framebuffer initialize
width:1680 height:1050
[+] framebuffer use display resolution 1680*1050
[+] write to mailbox
[+] read mailbox
[#] Done read mailbox, return val: 0
[#]FrameBufferInfo: width : 1680
[#]FrameBufferInfo: height : 1050
[#]FrameBufferInfo: vWidth : 1680
[#]FrameBufferInfo: vHeight : 1050
[#]FrameBufferInfo: pitch : 6720
[#]FrameBufferInfo: bitDepth : 32
[#]FrameBufferInfo: x_offset : 0
[#]FrameBufferInfo: y_offset : 0
[#]FrameBufferInfo: pointer : 0
[#]FrameBufferInfo: size : 0
[#]_RPI_initVideo: maxCol : 210
[#]_RPI_initVideo: maxRow : 65

Please, report more about actual state of your work
and what (which examples, test code) should work or if I have
done some configuration incorrect way.

I suggest to keep console on serial port and allow framebuffer
testing through registered device.

As for Microwindows build for Raspberry Pi, I have to disable
mouse and keyboard build because it doesnot build with micro
input driver (UID) RTEMS driver enabled in my Raspberry Pi config.

diff --git a/src/drivers/Objects.rules b/src/drivers/Objects.rules
index 297826c..5802748 100644
--- a/src/drivers/Objects.rules
+++ b/src/drivers/Objects.rules
@@ -253,8 +253,8 @@ MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/kbd_pipe.o

 ifeq ($(ARCH), RTEMS)
-MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/kbd_rtems.o
-MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_rtems.o
+MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/kbd_null.o
+MW_CORE_OBJS += $(MW_DIR_OBJ)/drivers/mou_null.o
 endif # RTEMS architecture

 ifeq ($(LIRCKBD2), Y)

I would worth to collect somewhere all RTEMS on RPi bare
boot and U-boot options and configurations.
I would suggest to put it into RTEMS Wiki, i.e


if no better name is found.

Best wishes,


More information about the devel mailing list