【发布时间】:2019-01-18 18:58:25
【问题描述】:
我正在为一个学校项目编写一个自定义的 Raspberry Pi UART 模块,我认为我的模块与默认的 UART 驱动程序有某种冲突。每次我使用 fwrite 向 ttyAMA0 写入内容时,它都会返回一个等于我写入的数据长度的值,即使我的模块的 write 函数总是返回零。此外,当我使用 mknod 创建一个新的 ttyAMA1 文件并尝试写入它时,我的模块会做出响应,但也会返回数据的长度。 那么,我的问题是如何禁用默认的 RPI UART 驱动程序/模块?
模块和测试应用程序代码(仅传输功能): https://github.com/mixr26/sppurv-projekat
任何帮助将不胜感激!
【问题讨论】:
-
不确定,但这可能是您需要的:raspberrypi.org/forums/viewtopic.php?t=55043
-
Raspi-config 做同样的事情,我试过了,但它不起作用。还是谢谢。
-
你没有任何东西可以从用户空间直接访问你的模块(如果它已经安装的话)。请参阅this article 中的图表。使用系统日志(例如 dmesg 命令)获取有关已安装驱动程序的信息。顺便说一句,您的驱动程序表现不佳,即在使用 ioremap() 之前它没有调用 request_mem_region() “我的问题是如何禁用默认的 RPI UART驱动程序/模块?” -- 你的内核是如何配置的:板文件还是DT?
-
我不认为 request_mem_region() 必须被调用,因为寄存器是内存映射的。读取和写入寄存器正常工作。 Raspbian 是 DT 配置的,至少对于外部接口是这样。
-
“我不认为...” -- 如果你喜欢争论而不是学习,你为什么要征求意见?
标签: c raspberry-pi linux-device-driver uart