Проблема в Rpi4-8gb Когда я пытаюсь изменить bcm2711-rpi-4-b.dtb в Debian-12 64 бита

neuberfran@raspberrypi:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 12 (bookworm)
Release:    12
Codename:   bookworm
neuberfran@raspberrypi:~$ arch
aarch64
neuberfran@raspberrypi:~$ uname -a
Linux raspberrypi 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux
neuberfran@raspberrypi:~$ uname -m
aarch64

U-Boot> printenv bootcmd
bootcmd=fatload mmc 0 ${kernel_addr_r} kernel8.img;fatload mmc 0 ${fdt_addr} ${fdtfile}; booti ${kernel_addr_r} - ${fdt_addr}

У меня есть rpi4 с Debian 12 (как указано выше), и я пытаюсь изменить bcm2711-rpi-4-b.dtb, начиная с команд ниже:

mkdir rasp_arm64
cd rasp_arm64/
git clone --depth=1 https://github.com/raspberrypi/linux
sudo apt-get install qemu-system-arm
sudo apt-get install lzop
sudo apt-get install gcc-aarch64-linux-gnu
cd linux/
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- dtbs
ls -lha arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb
-rw-rw-r-- 1 neuuberfran neuuberfran 55K Jul 12 13:02 arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb

config.txt (file) 
enable_uart=1
kernel=u-boot.bin
arm_64bit=1

git branch 
  master
* my6.6.20

У меня возникла проблема прямо в U-boot, описанная ниже:

2024.04-rc4-0004

0-gbd0aedde3e-dirty (Mar 23 2024 - 10:37:01 -0300)

DRAM: 948 MiB (effective 7.9 GiB)
RPI 4 Model B (0xd03115)
Core: 210 devices, 15 uclasses, devicetree: board
MMC:  mmcnr@7e300000: 1, mmc@7e340000: 0
Loading Environment from FAT... OK
In:  serial,usbkbd
Out:  serial,vidconsole
Err:  serial,vidconsole
Net:  eth0: ethernet@7d580000
starting USB...
No working controllers found
Hit any key to stop autoboot: 0 
9259827 bytes read in 413 ms (21.4 MiB/s)
Failed to load 'broadcom/bcm2711-rpi-4-b.dtb'
  Uncompressing Kernel Image to 0
Moving Image from 0x80000 to 0x200000, end=1b60000
ERROR: Did not find a cmdline Flattened Device Tree
Could not find a valid device tree

Примечание.: https://forums.raspberrypi.com/viewtopic.php?t=314845 Аналогичная проблема, но в модуле CM4

Может кто-нибудь мне помочь?

Итак, очевидно, что у вас есть исходный код ядра на каком-то неопределенном хосте разработки и RPi. Вы собираете образ ядра и .dtb (на неопределенном хосте разработки), а затем пытаетесь загрузить RPi с SD-карты. Да! Какие файлы вы скопировали на SD карту??? Что находится на SD-карте при попытке загрузки??? Это важная информация, которую вы не предоставляете! Проверка работоспособности: размер вашего вновь созданного образа ядра составляет ровно 9259827 байт?

sawdust 14.07.2024 00:41

@sawdust На SD-карте только один образ = ОС Raspberry Pi (64-битная), которую я взял с этого официального сайта =raspberrypi.com/software/operating-systems Я только что вынул SD-карту rpi4, вставляю мой компьютер, удалите прилагаемый к нему файл bcm2711-rpi-b.dtb и вставьте новый DTB (который я скомпилировал, как указано выше), который имеет почти такой же размер. Я вставил SD-карту обратно в rpi4 и получил ошибку. С SD-картой все в порядке. Как я уже говорил выше в теме, с оригинальным DTB работает нормально.

neuberfran 14.07.2024 00:46

Еще раз: Что на SD-карте? Не ваше краткое описание, а полный список каталогов. Скорее всего, вам не хватает подкаталога broadcom.

sawdust 14.07.2024 00:50

@sawdust Спасибо. Вы можете скачать его здесь: github.com/neuberfran/stackoverflow2

neuberfran 14.07.2024 01:11

"Я просто... удаляю прилагаемый к нему bcm2711-rpi-b.dtb и вставляю новый DTB" - Так на какой файловой системе вы выполняли эти операции? Почему вы показываете нам содержимое файловой системы ext4? Согласно опубликованной вами переменной U-Boot bootcmd, файл dtb считывается из файловой системы FAT. Возможно, я не совсем ясно выразился, но разве первый раздел SD-карты, содержащий FAT, не является файловой системой, представляющей интерес при загрузке??? Сообщение об ошибке, которое вы получаете, не является сложной проблемой. Эта ошибка произошла из-за невнимательности.

sawdust 14.07.2024 02:43

@sawdust Всегда поясняю, что правильный вариант — bcm2711-rpi-4-b.dtb. Ошибка действительно очевидна = Не удалось найти допустимое дерево устройств. forums.raspberrypi.com/viewtopic.php?p=2236483#p2236483 Я не вижу другого решения, кроме как попробовать эти шаги на rpi4 (возможно, на rpi5) и посмотреть, появится ли ошибка.

neuberfran 14.07.2024 03:04

Похоже, вы читаете только последнюю строку журнала U-Boot. Вместо этого вам нужно сосредоточиться на первом сообщении об ошибке (до того, как ошибка распространится), а именно Failed to load 'broadcom/bcm2711-rpi-4-b.dtb'. Это ясное и простое указание на то, что вы сделали неправильно. Нет необходимости «чтобы кто-то попробовал эти шаги», поскольку решение состоит в том, чтобы просто скопировать файл .dtb в то же место, которое вы указали в переменной среды fdtfile. Еще раз: скорее всего, вам не хватает подкаталога broadcom. Если бы вы выполнили команду U-Boot fatls, ​​это было бы очевидно.

sawdust 14.07.2024 10:54

@sawdust Тот же файл DTB в /boot/firmware находится в загрузочном разделе (fat32) на SD-карте. Я монтирую в /mnt. Я восстанавливаю свою SD-карту

neuberfran 14.07.2024 21:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
192
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, чтобы решить проблему, я воссоздал образ (с SSH, Wi-Fi и т. д.) для моего rpi4 8 ГБ с помощью приложения Imager (версия 1.8.5) в Ubuntu 20.04:

https://hechao.li/2021/12/20/Boot-Raspberry-Pi-4-Using-uboot-and-Initramfs/

  1. Затем на основе вышеуказанного веб-сайта я создал U-boot 2024.04 и boot.scr (в частности), как показано ниже:

кот << EOF > boot_cmd.txt fatload mmc 0:1 ${kernel_addr_r} Изображение setenv bootargs "8250.nr_uarts=1 console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait rw" booti ${kernel_addr_r} - ${fdt_addr} ЭОФ

~/u-boot/tools/mkimage -A Arm64 -O linux -T скрипт -C нет -d boot_cmd.txt boot.scr

  1. config.txt (больше cmdline.txt мне не нужен, я его удаляю)

    1.enable_uart=1 2.arm_64bit=1 3.kernel=u-boot.bin 4.#dtoverlay=disable-bt

  2. В раздел bootfs кладу файлы: config.txt, bcm2711-rpi-4-b.dtb (уже с необходимыми изменениями для RPMsg), Image, boot.scr и u-boot.bin.

  3. Я вставляю SD-карту в rpi4 8 ГБ и получаю к ней доступ с помощью sudo picocom -b 115200 /dev/ttyUSB0:

Другие вопросы по теме