rust-embedded/rust-raspberrypi-OS-tutorials

"arm_64bit=1" needed in config.txt?

smuehlst opened this issue · 1 comments

First of all thanks for this tutorial, it's a great start for programming a Raspberry Pi with embedded Rust!

Now to my problem: I am working on Windows 10, and I managed to build the 06_drivers_gpio_uart example kernel without the supplied Makefile. I verified that the kernel8.img runs in QEMU, but then I had problems to boot it on a real Raspberry Pi 3 B+.

The instructions in the 06_drivers_gpio_uart/README.md say this:

  1. On the card, generate a file named config.txt with the following contents:
    init_uart_clock=48000000

But with such a config.txt file the kernel doesn't boot for me.

After looking at some other bare metal kernel examples for the Raspberry Pi I found the arm_64bit option, and with that the kernel boots on my Raspberry Pi 3 B+. This is the config.txt file that works for me:

arm_64bit=1
init_uart_clock=48000000
kernel=kernel8.img

Is this an omission in the documentation of the 06_drivers_gpio_uart example, or might I have made some mistake that caused the proposed config.txt to fail in my case?

Hmm, interesting. I just double checked, my RPi 3 B+ v1.2 definitely does not need it.

Contents on the SD card:

bootcode.bin config.txt  fixup.dat  kernel8.img  start.elf

Content of config.txt:

init_uart_clock=48000000

But it would not be the first time that my device behaves differently than somebody else's, see #48 for example.
I guess there is a good chance that firmware on the Raspberrys varies quite a bit with different revisions.

Anyways, both my Pi3 and Pi4 still work with the arm_64bit=1 set.

Thanks for reporting this!