Кросс-компиляция для ARM 64Bit

Я пытаюсь скомпилировать U-Boot с поддержкой TPM и следовал этому руководству: https://github.com/joholl/rpi4-uboot-tpm . Я использовал виртуальную машину с сервером Ubuntu 20.04.1 LTS для кросс-компиляции. Это работает нормально, но когда я добавляю дополнительную опцию во время make menuconfig (Интерфейс командной строки → Информационные команды → процессор), которая добавляет команду cpu в U-Boot, компиляция завершается с ошибкой со следующим:

aarch64-linux-gnu-ld.bfd: cmd/built-in.o: in function `print_cpu_list':
/home/user/u-boot/cmd/cpu.c:34: undefined reference to `cpu_get_desc'
aarch64-linux-gnu-ld.bfd: /home/user/u-boot/cmd/cpu.c:39: undefined reference to `cpu_get_info'
Segmentation fault (core dumped)
make: *** [Makefile:1757: u-boot] Error 139
make: *** Deleting file 'u-boot'

Я попробовал 32-битный кросс-компилятор, а также попытался скомпилировать напрямую на raspberry pi, но все равно не получилось.

Может кто-нибудь предложить, что я могу сделать, чтобы решить эту проблему?


person gryz    schedule 04.11.2020    source источник


Ответы (1)


CONFIG_CMD_CPU зависит от CONFIG_CPU. К сожалению, эта зависимость отсутствует в cmd/Kconfig. С CONFIG_CPU=y ваша ошибка компиляции устранена. Я создал патч для этого:

[ИСПРАВЛЕНИЕ 1/1] cmd: CMD_CPU зависит от процессора
https://lists.denx.de/pipermail/u-boot/2020-November/431952.html

CMD_CPU требует, чтобы драйвер обеспечивал любой вывод. Нет подходящего драйвера для процессора Raspberry Pi. Таким образом, вы не получите никакого вывода через «список процессоров» и «детали процессора».

Я думаю, что можно было бы написать общий драйвер, который анализирует дерево устройств и сможет сказать вам, что у вас 4 * arm,cortex-a72. Но, наверное, вы уже знаете об этом.

person Xypron    schedule 04.11.2020
comment
Спасибо за помощь! Могу ли я попросить вас указать мне какое-нибудь руководство, как я могу начать разработку драйвера, о котором вы говорите? - person gryz; 05.11.2020
comment
Вы можете использовать в качестве шаблона drivers/cpu/riscv_cpu.c. Создайте новый файл в том же каталоге. Добавьте новую запись в drivers/cpu/Kconfig. Добавьте новый драйвер в drivers/cpu/Makefile. Создайте патч. Проверьте это с помощью scripts/checkpactch.pl. Отправьте патч на все адреса, возвращаемые scripts/get_maintainer.pl. - person Xypron; 06.11.2020