Garbage UART output on RPI 4 with upstream kernel DTB

Stefan Wahren stefan.wahren at i2se.com
Wed Dec 25 14:55:40 CET 2019


Am 24.12.19 um 13:38 schrieb Matthias Brugger:
>
> On 24/12/2019 12:56, Stefan Wahren wrote:
>> Hi Matthias,
>>
>> Am 23.12.19 um 21:20 schrieb Matthias Brugger:
>>> Hi Stefan,
>>>
>>> On 23/12/2019 19:51, Stefan Wahren wrote:
>>>> Am 20.12.19 um 14:58 schrieb Stefan Wahren:
>>>>> Hi,
>>>>>
>>>>> i tried to run current U-Boot (rpi_4_32b_defconfig) on my RPi 4 with
>>>>> bcm2711-rpi-4-b.dtb from the upstream kernel. Unfortunately i only see
>>>>> garbage on the debug UART (pin 14 & 15). Using the DTB from the
>>>>> downstream kernel has a proper UART output. The config.txt contains
>>>>> debug_uart=1
>>>>>
>>>>> I compared both and identified an offending Linux commit:
>>>>> ARM: dts: bcm283x: Remove brcm,bcm2835-pl011 compatible
>>>>>
>>>>> Unfortunately reverting this patch still doesn't fix the issue. Any ideas?
>>>> After hours of playing with the DTB, i finally found the reason why the
>>>> upstream kernel DTB doesn't work with U-Boot on RPI 4. The DTS must be
>>>> compiled with flag "-@".
>>>>
>>>> It isn't clear to me, why this is necessary but it would be nice to make
>>>> U-Boot work without this.
>>>>
>>> Can you provide the exact command you are using?
>> i didn't call dtc directly via command line. I just added this Makefile
>> hack [1] to the Linux upstream tree. This will add a __symbols__ section
>> to the DTB which is required for overlays. You can verify this with dtdiff.
>>
>> Since the upstream kernel boots without the __symbols__ section, i think
>> this garbage output issue could be fixed in u-boot.
>>
> Little by little I grasp what you are doing. So you compile the DTB in the
> kernel, then pass the blob to u-boot and add it with OF_EMBED? Is that correct?

I use a recent Raspbian image, replace the bcm2711 DTB with the upstream
kernel ones (yes build with make dtbs) and kernel7.img with u-boot.bin
(renamed all the other kernel binaries to make sure kernel7.img is
really used). Also use a boot.scr from here, but not sure this have an
influence [1]. I used the rpi_4_32b_defconfig without any modifications
like OF_EMBED. I assume u-boot uses the FDT image passed by the
Raspberry Pi bootloader.

[1] - https://andrei.gherzan.ro/linux/uboot-on-rpi/

>
> Regards,
> Matthias



More information about the U-Boot mailing list