c - 如何禁用默认的 Raspberry Pi 2 model B UART 驱动程序/模块?

标签 c raspberry-pi linux-device-driver uart

我正在为一个学校项目编写一个自定义 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/

相关文章:

python - 我正在尝试让树莓派相机与 opencv 一起工作

c - 503服务暂时不可用

c - 使用 O_SYNC 时 mmap 非常慢

对于 c 中的猜谜游戏,无法获得除 "Too High"之外的结果

c - 错误的数组索引不会导致错误

c - 在结构中初始化一个数组(w/和值数组)

c++ - 检查字符设备

c - 编写 C 头文件

linux - 庆典 : sudo: permission denied

linux - 使用SDK编译模块抛出警告消息: libelf-dev not found