Hello Genode community,
after a lucky find we were able to successfully boot the RPi B+. As expected the boards (RPi B and B+) are more or less equal and therefore work with the same Fiasco.OC/Genode build.
The UART gibberish is presumably caused by a faulty configuration of the UART clock by U-Boot and/or Raspberry PI's boot process.
The working configuration for us is U-Boot by denx in the version v2017.09 and the binary blobs `bootcode.bin` and `start.elf` from [0]. Additionally the `config.txt` file must be configured as follows:
kernel=u-boot.bin enable_uart=1 init_uart_baud=115200 init_uart_clock=3000000 # this line is important
Sorry for the late response, I didn't find the time to answer earlier. Thanks for the suggestions made in the previous correspondence.
Regards, Alexander
[0] https://github.com/raspberrypi/firmware/tree/1.20170811
On 18.05.2017 15:46, rmillo wrote:
Hi Bernhard
Basically the Raspberry PI 1 Model B+ has the same base as Model B, but it has some improvements such as more GPIO Pins. The UART GPIO pins are the same in both models:
https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/README.... https://pinout.xyz/#
But I think they should be some differences between Model B and Model B+, which are not specified in the original datahseet (BCM2835 dated 2012 and Model B+ release on 2014), the same for Model B. As Stefan recommended, check in Linux kernel the addresses the initial configuration of the UART, and the hardware in general.
I do not have in my hands a Model B+ to test, because if there are significant differences it is likely that Fiasco.OC kernel is not completely functional in that model. Try to start compiling Genode for RPi using the base-hw platform (hw_rpi). This will serve as a starting point to put GenodeOS on the Model B+, since the implementation of this is about Genode, and is easier to understand and modify.
When I began to work with Fiasco.OC+GenodeOS on RPi Model B, I used base-hw as start point to test the hardware and its components.
The firmware its not the problem, i have tested Fiasco.OC+GenodeOS with a more recently firmware on Model B.
What kernel_address on config.txt are you using? I use 0x00800000 to load directly the the raw img.
How are you creating the raw img? I use
genode-arm-objcopy -O binary $elf_img $raw_img
Best regards
On 18/05/2017 05:31 AM, Stefan Kalkowski wrote:
Hi Bernhard,
On 05/10/2017 07:24 PM, Bernhard Blieninger wrote:
Hi,
I am currently working to get the raspberry pi b+ working with genode. I started with an raspberry pi uboot and a tftp server where genode.img lies on. The sd card was flashed via dd and the sd card image from here: http://wiki.beyondlogic.org/index.php?title=Compiling_uBoot_RaspberryPi
For the genode image I used the newest version of genode on github and compiled a foc_rpi and an rpi with this command:
./tool/create_builddir foc_rpi BUILD_DIR=buildrpi
or that
./tool/create_builddir rpi BUILD_DIR=./build-rpi
and the command
make run/demo
This is working with the Raspberry Pi B(!) but when i put the sd card in the Raspberry Pi B +(!) it is not even booting.
Therefore i prepared a sd card with raspbian and changed the kernel.img with the newly compiled u-boot.bin from http://git.denx.de/u-boot.git The sd card now boots again and shows u-boot but if I want to load genode.img it does not continue. If genode is loaded, for example by manually triggering it with bootz, the serial connected minicom screen shows encoding problem nonsense. Starting up a linux kernel works. If I start genode.img directly from the sd card it is not working either.
If I try this sd card with the Raspberry Pi B(!) it is not working. What I have tested in a last step is, what happens if I substitute the u-boot.bin with the genode.img while using the sd card image that was provided by beyondlogic in the first place, this is working for the B model but not for the B +. Also tried a fresh sd card format it to fat16 and put all the stuff on it, which is in the boot folder from https://github.com/raspberrypi/firmware , but that is also not working.
So I assume, that either the bootcode.bin and/or start.elf provided by raspberry are too new to use them with genode. I could maybe find older versions but I would just like to ask if this will help, maybe genode was never (meant to) run with some raspberry boot code that is newer then 2013.11 (http://genode.org/documentation/release-notes/13.11#Raspberry_Pi).
Thanks in Advance for your help.
I do not think its a "firmware is too new" issue. I guess it is more a question of how is the firmware configured, and what are the actual differences in between Model 1 B and 1 B+. The first question is, what exactly is not working. If everything stays blank after u-boot started the kernel, then probably Genode does not use the right physical address for the UART's memory mapped I/O registers, either because they've changed in between both board revisions, or because the firmware is configured in a different way than before resp. configures the GPIO pins to connect to a different (serial) device. In that case, you might study the options in config.txt for your specific model. Alternatively, you might somehow find out which UART and base address Linux is using on the device, e.g. in /proc/iomem.
Unfortunately, I do not have such device, and therefore cannot reproduce that problem.
Regards Stefan
Best Regards,
Bernhard.
Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main