Hi all,
I'm teaching embedded Linux and I'm using RPi boards. I'm using u-boot to download my own Linux kernel by FTP and its Root FS by FTP too and the DTB file issued from Linux kernel compilation.
With the RPi 3B and RPi 3B+ boards, everything is OK. I have a shell on UART (pins GPIO14 and GPIO15).
I'm trying to do the same with a RPi 4B board.
When, I'm using the Device Tree issued from the RPi firmware (with its own bcm2711-rpi-4-b.dtb Device Tree) and modified by the config.txt file, I can boot my Linux kernel and I have a shell on the UART and telnet access.
This is my config.txt:
When I download the Linux bcm2711-rpi-4-b.dtb file issued from Linux kernel compilation at ${fdt_addr_r} address to replace the RPi Device Tree, the Linux kernel doesn't boot:
Has anyone succeeded to modify the bcm2711-rpi-4-b.dts from Linux source files that works with u-boot to boot the Linux kernel?
Thank you.
I'm teaching embedded Linux and I'm using RPi boards. I'm using u-boot to download my own Linux kernel by FTP and its Root FS by FTP too and the DTB file issued from Linux kernel compilation.
With the RPi 3B and RPi 3B+ boards, everything is OK. I have a shell on UART (pins GPIO14 and GPIO15).
I'm trying to do the same with a RPi 4B board.
When, I'm using the Device Tree issued from the RPi firmware (with its own bcm2711-rpi-4-b.dtb Device Tree) and modified by the config.txt file, I can boot my Linux kernel and I have a shell on the UART and telnet access.
This is my config.txt:
My u-boot environment is:kernel=u-boot.bin
arm_64bit=1
device_tree_address=0x5000000
enable_uart=1
dtoverlay=disable-bt
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on
dtparam=audio=off
The RPi DT is remapped at 0x5000000 (${fdt_addr_r} u-boot variable) with the device_tree_address directive in the config.txt file.setenv bootargs earlycon dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/ram ramdisk_size=131072 rootfstype=ext4 rootwait rw
setenv kernel_addr_r 1000000
setenv fdt_addr_r 5000000
setenv ramdisk_addr_r 5100000
tftp ${kernel_addr_r} Image
tftp ${ramdisk_addr_r} ramdisk.img.gz
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
When I download the Linux bcm2711-rpi-4-b.dtb file issued from Linux kernel compilation at ${fdt_addr_r} address to replace the RPi Device Tree, the Linux kernel doesn't boot:
I have just the trace (no access by telnet too):setenv fdtfile bcm2711-rpi-4-b.dtb
tftp ${fdt_addr_r} $fdtfile
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
I suppose that we must modify the original bcm2711-rpi-4-b.dts file under the arch/arm/boot/dts/broadcom/ directory (I'm using a 6.9.x kernel) to active the right UART as primary port (like directives do in the config.txt file) but I didn't succeed.Starting kernel ...
Has anyone succeeded to modify the bcm2711-rpi-4-b.dts from Linux source files that works with u-boot to boot the Linux kernel?
Thank you.
Statistics: Posted by eddy33 — Mon May 06, 2024 1:00 pm — Replies 0 — Views 14