Testing of the Raspberry Pi graphic support

桥 杨 yangqiao0505 at me.com
Wed Jul 1 23:23:24 UTC 2015



---------------

Qiao YANG

Université de Technologie de Compiègne 
Génie Informatique

> 在 2015年7月2日,00:58,Pavel Pisa <pisa at cmp.felk.cvut.cz> 写道:
> 
> Hello Qiao Yang,
> 
> thanks for status report.
> 
>> On Wednesday 01 of July 2015 23:53:51 QIAO YANG wrote:
>> On Jun 30, 2015, at 12:41 PM, Pavel Pisa <pisa at cmp.felk.cvut.cz> wrote:
>> 
>> Both should work, I've tested before push. BTW, because I've found the way
>> I refactor outch is not as clean as I imagined so I quickly reset and
>> forced updated. Sorry for the conflict, but the problem is not here.
> 
> really no problem, because I am fully aware that work is in the
> active development I have tried to test more versions which I have spotted.
> I archived dead end branch after forced update and reset to main course.
> 
>>> arm-rtems4.11-gcc (GCC) 4.9.2 with newlib newlib-2.2.0.20150423, binutils
>>> 2.24
> 
> OK
> 
>> I'm using exactly the same version
>> 
>>> Configured
>>> 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
>> 
>> Sorry that I'm not sure if these parameters would affect the result while I
>> think probably not. I just use rsb (commit e9dfd95dd Revert "add basic
>> support for OpenBSD ) to build the bset  4.11/rtems-arm  with default
>> configuration.  The rsb fork on my github is the one I used.
> 
> I do not expect problem from there too. This is mainly to document state.
> 
>>> 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 \
>>> --enable-rtemsbsp="raspberrypi"
>> 
>> I tried these configurations to rebuild, it works.
>> My configuration is:
>> ../rtems-git/configure --target=arm-rtems4.11 \
>>            --enable-rtemsbsp=raspberrypi \
>>            --enable-tests=samples \
>>            --enable-networking \
>>            --enable-posix \
>>            --prefix=$HOME/development/rtems/bsps/4.11'
> 
> 
> Seem same and more straightforward, some of mine options
> are accumulated over years with RTEMS on more targets
> and some can be superfluous on actual version.
> 
>> So I don't think the problem comes from here.
>> 
>>> -------------------------------------------------------------
>>> 
>>> Raspberry Pi direct boot by config.txt options
>>> 
>>> kernel=appfoo.bin
>> 
>> I just leave the config empty and videocore will use the default arguments.
>> It does no harm.
>> 
>>> generated by
>>> 
>>> arm-rtems4.11-objcopy -R -S -O binary "$EXE_NAME" "$EXE_NAME.bin"
>> 
>> I used 'arm-rtems4.11-objcopy -O binary --strip-unneeded '.  -R -S should
>> not do harm.
> 
> I have added "--strip-debug" to be sure but binary is exactly the same.
> 
>>> -------------------------------------------------------------
>>> 
>>> Raspberry Pi boot over U-boot and extlinux/extlinux.conf
>>> 
>>> TIMEOUT 100
>>> DEFAULT default
>>> MENU TITLE Boot menu
>>> 
>>> LABEL RTEMS appfoo
>>> MENU LABEL RTEMS appfoo
>>> LINUX appfoo.img
>>> FDTDIR .
>> 
>> Sorry that I've got no idea about extlinux..
> 
> No problem, this is some addon layer to unite Linux configs over different
> loaders. It allows to search for kernel images even over TFTP on RPi,
> but I stayed wit local SD card boot. It is more or less that it can be
> interesting for somebody.
> 
>>> 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"
>> 
>> mkimage -A arm -O rtems -T kernel -a 0x00008000 -e 0x00008000 -n "RTEMS" -C
>> none -d I didn't use compression but should not do harm
> 
> Image seems to extract and start correctly.
> 
>>> ## 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) ...
>> 
>> It seems that the kernel boot successfully with uboot. I've these lines for
>> uboot startup script but I passed nothing from uboot to kernel.:
>> mmc dev 0 
>> fatload mmc 0:1 ${kernel_addr_r} hello.img
>> bootm ${kernel_addr_r}
>> #0x8000
>> 
>>> [+] framebuffer initialize
>>> width:1680 height:1050
>>> [+] framebuffer use display resolution 1680*1050
>> 
>> We havn't passed any parameter of resolution from config.txt and It
>> retrieves resolution correctly. So the mailbox videocore property channel
>> works.
> 
> Yes that seems to work well with different monitors.
> 
>>> [#]FrameBufferInfo: pointer : 0
>>> [#]FrameBufferInfo: size : 0
>> 
>> This means we didn't managed to allocate the frambuffer from the mailbox
>> framebuffer channel.
> 
> Hmm.
> 
> I have tried with and without different memory setup options,
> U-boot reporst change in memory but no luck till now
> 
>  gpu_mem=128
> 
> 
>>> [#]_RPI_initVideo: maxCol : 210
>>> [#]_RPI_initVideo: maxRow : 65
>> 
>> The maxCol and maxRow are calculated from resolution and font size, so it's
>> correct.
>> 
>> So the problem is that it fails to allocate framebuffer with a working
>> mailbox support.
>> 
>> Here are my suggestions:
>> 1. u-boot has implemented the graphic driver and if you connected the pi
>> with display, uboot should display something on the screen. If not, it not
>> the problem of driver, you may refer to this page:
>> http://elinux.org/R-Pi_Troubleshooting#Display
>> I havn't encountered such case, but I think if you've come up with such
>> problem, the troubleshooting may fix it by adding the configuration. But in
>> most cases, the default configuration should work.
> 
> U-boot works correctly and displays it console output.
> When I use direct boot to RTEMS bin file by kernel=ticker.bin
> from config.txt, RTEMS application starts, prints display found
> parameters and display is switched to active mode from
> standby (state when RPi is disconnected or boot is not started ready).
> Display behaves different way (rainbow shown) when there is RTEMS
> application without framebuffer support.
> 
>> 2.  I've read of this post at the begining of research:
>> https://www.raspberrypi.org/forums/viewtopic.php?t=36619&p=306605
>> Since at that time, I didn't decide how to deal with the property tag
>> channel, and the framebuffer channel works well with my qemu and my
>> display, so I didn't use the property tag channel to allocate framebuffer.
>> As there is a possibility that the framebuffer channel is unstable, I'm
>> going to replace it by using property tag channel to allocate the
>> framebuffer. I'll push it a bit later tonight.
> 
> Do not hurry, I look at it next week.
> 
>>> -------------------------------------------------------------
>>> 
>>> 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 didn't create a standard test code into source code. I tested my works
>> with the rki from https://github.com/alanc98/rki.git  commit a52a73e64
>> just lanch the kernel the graphic output should work.
>> On my mmc, i've got  dtb, boot.scr (uboot script), bootcode.bin, start.elf
>> (firmware), uboot.img, rki_img. Nothing special.
>> 
>> Status :
>> I'm now compiling, testing the graphic libraries, and integrate them into
>> rsb with proper patches so that we can build them without the
>> rtems-graphic-tool-kit's script, using rsb instead. About how to refactor
>> some part of reusable code, I may need to consider it carefully. If I've
>> got time I may add more interfaces for mailbox property tags later.  You
>> may also trac my status from the tracking table.
>> 
>>> I suggest to keep console on serial port and allow framebuffer
>>> testing through registered device.
>> 
>> I'm considering to add a "enable-hdmi" macro, just like the "enable-vga"
>> macro for pc386, to enable and disable the graphic output and it's console.
>> Not use the graphic console as primary console, but out put to graphic at
>> the side, so that we can have both graphic(display only) and serial
>> console.
> 
> The final - RTEMS-4.11 intended option for i386 is named video
> 
>  --video=auto|off|1024x768-32
> 
> console selection is controlled by option
> 
>  --console=com1
 I tried to retrieve ATAG cmdline by mailbox property tag  channel, but failed as it cannot asure the string is terminated by certain character('/0') and I didn't fix the implementation of tag structure at that moment. It reminds me that I should take some time back to it, and maybe the freebsd, rasbian's source code can do help. I've just found some posts on arm atags . I'll look into the detail and try to implement it this weekend. 

> 
> So something like --console=uart and fb is reasonable option
> to select console output.
> 
> Best wishes,
> 
>               Pavel



More information about the devel mailing list