我正在为一个学校项目编写一个自定义 Raspberry Pi UART 模块,我认为我的模块与默认的 UART 驱动程序存在某种冲突。每次我使用 fwrite 将某些内容写入 ttyAMA0 时,它都会返回一个等于我写入的数据长度的值,即使我的模块的 write 函数始终返回零。此外,当我使用 mknod 创建一个新的 ttyAMA1 文件并尝试写入该文件时,我的模块会响应,但也会返回数据的长度。 所以,我的问题是如何禁用默认的 RPI UART 驱动程序/模块?
模块和测试应用程序代码(仅传输功能): https://github.com/mixr26/sppurv-projekat
任何帮助将不胜感激!
最佳答案
我找到了问题的解决方案。在 raspi-config 中禁用串行接口(interface)会禁用 Raspbian 驱动程序 (AMBA-PL011),但也会禁用 UART 引脚(GPIO14 和 GPIO15),这就是我的模块无法工作的原因。我必须通过更改模块中的 GPFSEL 寄存器来手动设置 UART 引脚的功能。之后,我可以安全地调用 request_mem_region() 和 register_irq(),没有任何错误。 ——米哈伊洛
关于c - 如何禁用默认的 Raspberry Pi 2 model B UART 驱动程序/模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308797/