【发布时间】:2021-07-11 21:00:41
【问题描述】:
我已经使用 buildroot (buildroot-2021.02.1) 创建了一个基本映像,其中包含一些软件,并且还选择了 RPI 固件以使用相机和一些 Raspberry Pi 工具:Target packages --> Hardware handling --> Firmware --> ([x] rpi-firmware) --> Firmware to boot 如上所述 here。
但工具raspistill, vcgencmd, ... 不包括在内。问题是如何包含它们以及为什么不包含它们?
在某个时间点它一定一直在工作,请参阅:RaspberryPi camera with buildroot
更多细节:
在 buildroot 的日志中显示以下几行:
>>> rpi-firmware d016a6eb01c8c7326a89cb42809fed2a21525de5 Installing to target
comm: /home/ich/br/buildroot/output/build/rpi-firmware-d016a6eb01c8c7326a89cb42809fed2a21525de5/.files-list.before: No such file or directory
comm: /home/ich/br/buildroot/output/build/rpi-firmware-d016a6eb01c8c7326a89cb42809fed2a21525de5/.files-list-staging.before: No such file or directory
comm: /home/ich/br/buildroot/output/build/rpi-firmware-d016a6eb01c8c7326a89cb42809fed2a21525de5/.files-list-host.before: No such file or directory
并且在这个包中二进制文件是存在的。它们是从http://sources.buildroot.net/rpi-firmware/ 下载的,其中 tar 包含实际工具。但是它们不会被 buildroot 复制到最终映像中,而只是下载。正如错误消息所指出的那样,可能是因为缺少某些 files-list.txt 文件。也许这些文件将要复制的文件列入白名单。但我找不到有关此的文档。
对于 64 位构建,无法执行(然后手动下载的)tar 文件中的二进制文件,因为它们是 32 位可执行文件:firmware-d016a6eb01c8c7326a89cb42809fed2a21525de5/opt/vc/bin/vcgencmd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.1.9, not stripped;在使用 buildroot 的 32 位构建上,它也不起作用,因为缺少共享库,即使存档中的完整结构已像标准 RPI 映像一样放在 /opt/vc/{bin|lib|...} 下。
我不确定如何处理、诊断和修复问题。
编辑:也许这是两个不同的问题;我再次阅读了链接的 SO 问题,并将构建图像的 boot.vfat 中的文件 fixup.dat 和 start.elf(其中包含使工具工作的 RPI 硬件)与 buildroot/output/build/rpi-firmware-d016a6eb01c8c7326a89cb42809fed2a21525de5/boot 中的图像和文件fixup_x.dat 和start_x.elf 是从那里获取的。根据提到的SO问题也是如此。并且在任何地方都没有表明 Raspberry Pi 的工具已编译。它们仅在此 tar 存档中。也许需要额外编译它们,而这个包并不是为了集成这些工具而设计的。
【问题讨论】:
标签: raspberry-pi camera raspberry-pi3 embedded-linux buildroot