开源改变世界

配置依赖于 RPi 架构的包含和库 #643

推推 grbl 3年前 (2023-01-29) 144次浏览
关闭
BsAtHome 开启了这个问题 2019 年 9 月 6 日 · 2 条评论
关闭

配置依赖于 RPi 架构的包含和库#643

BsAtHome 开启了这个问题 2019 年 9 月 6 日 · 2 条评论

注释

配置依赖于 RPi 架构的包含和库 #643
贡献者
在家 评论了 2019 年 9 月 6 日  

hm2驱动的Raspberry Pi端口目前通过解析/proc/cpuinfo,通过非移植方式检测RPi硬件版本。raspbian 的 arm64 端口丢失了一些依赖的信息,随后将导致 LCNC 无法运行。

测试的唯一原因是为不同版本的 RPi 正确设置硬件 IO 基地址和大小。有一种更好的(官方)方法可以使用 bcm_host_get_peripheral_address() 和 bcm_host_get_peripheral_size() 来执行此操作(参见https://www.raspberrypi.org/documentation/hardware/raspberrypi/peripheral_addresses.md)。

但是,这些函数位于库 /opt/vc/lib/libbcm_host.so 中,相关标头位于 /opt/vc/include/bcm_host.h(来自 libraspberrypi 包)。这些文件对于 RPi 非常特定,并且位于一个不寻常的位置。

对于可移植性,由此产生了一些问题:

  • 路径 /opt/vc/lib 和 /opt/vc/include 应该永久添加到配置中还是必须设计测试?如果必须设计测试,如何做到这一点?否则,应该在哪里以及如何添加它们?
  • 在 configure.ac 中测试 libbcm_host.so 的正确方法是什么(使用函数 bcm_host_get_peripheral_address())?configure.ac 中似乎有很多“手动”测试,我不确定从可移植性的角度来看默认的 autoconf 结构是否足够好。
  • 这些测试应该仅限于 RPi 吗?如果是,我们如何可靠地检测平台?


问候 Bertho

配置依赖于 RPi 架构的包含和库 #643
贡献者作者

我已提交修复 RPi arm64 (buster) 问题,即 /proc/cpuinfo 中不再有信息。有关更改,请参阅https://github.com/BsAtHome/linuxcnc/tree/hm2_rpspi

代码现在读取 /proc/device-tree/soc/ranges,这与 bcm_host_get_peripheral_address() 使用的方法相同。然而,重新实现回避了需要摆弄 configure.ac 的问题,并且应该在所有平台上编译。此外,libraspberrypi-dev 包缺少 pkg-config 支持,这已经是很长一段时间的错误。它在源代码中,但不包含在 debian 软件包中。

如果您愿意,请尝试一下,看看它是否真的有效。

配置依赖于 RPi 架构的包含和库 #643
贡献者作者

这已通过 pull-request #649解决。