If you don’t have that much time to debug, you may try this bcm2835 qemu
https://github.com/Torlus/qemu/tree/rpi 
<https://github.com/Torlus/qemu/tree/rpi>

you can use it to run the kernel elf directly.

> On Jul 1, 2015, at 11:53 PM, QIAO YANG <yangqiao0...@me.com> wrote:
> 
> On Jun 30, 2015, at 12:41 PM, Pavel Pisa <p...@cmp.felk.cvut.cz 
> <mailto:p...@cmp.felk.cvut.cz>> wrote:
> 
>> Hello Qiao Yang,
>> 
>> I have prepared testing on RPi B+ hardware last days
>> I have got to test your RTEMS branch
>> 
>> https://github.com/yangqiao/rtems <https://github.com/yangqiao/rtems>
>> 
>> 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
>  
> 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.
> 
>> 
>> 
>> 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
>> test.
>> 
>> My setup
>> 
>> host system Debian Linux amd64
>> 
>> -------------------------------------------------------------
>> 
>> tools - local build
>> 
>> arm-rtems4.11-gcc (GCC) 4.9.2 with newlib newlib-2.2.0.20150423, binutils 
>> 2.24
> 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.
> 
> 
>> 
>> 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 \
>> --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' 
> 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. 
> 
>> 
>> 
>> -------------------------------------------------------------
>> 
>> 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..
> 
> 
>> 
>> 
>> 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 
> 
>> 
>> 
>> -------------------------------------------------------------
>> 
>> 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) ...
> 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.
> 
>> 
>> [+] 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
> This means we didn't managed to allocate the frambuffer from the mailbox 
> framebuffer channel. 
> 
> 
>> 
>> [#]_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 
> <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.
> 
> 2.  I've read of this post at the begining of research:  
> https://www.raspberrypi.org/forums/viewtopic.php?t=36619&p=306605 
> <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.
> 
>> 
>> -------------------------------------------------------------
>> 
>> 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 <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.
> 
> 
>> 
>> 
>> 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
>> endif
>> 
>> 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'm working with the nxlib at the moment, It helps me a lot. Thanks! 
> 
>> 
>> 
>> 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
>> 
>> https://devel.rtems.org/wiki/TBR/BSP/RaspberryPi <>
>> 
>> if no better name is found.
>> 
>> Best wishes,
>> 
>> Pavel
>> 
>> 
>  
> Best wishes,
> 
> YANG Qiao
> 
> _______________________________________________
> devel mailing list
> devel@rtems.org
> http://lists.rtems.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to