gpt4 book ai didi

c - 在内核模块中访问串口

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:39 24 4
gpt4 key购买 nike

我想在我的 linux 机器上访问我的 com 端口的引脚。这可以通过内核函数调用 outb/inb 实现。

我尝试了以下方法:

#define COM1_BASE_ADDRESS 0x3F8

unsigned char reg = inb((unsigned char)(COM1_BASE_ADDRESS + UART_MCR));
printk(KERN_INFO "MCR register: 0x%X\n", reg);

reg = 1;
printk(KERN_INFO "MCR register to write: 0x%X\n", reg);
outb(reg, (unsigned char)(COM1_BASE_ADDRESS + UART_MCR));

reg = inb((unsigned char)(COM1_BASE_ADDRESS + UART_MCR));
printk(KERN_INFO "MCR register: 0x%X\n", reg);

内核模块本身应该可以正常工作,因为我在内核日志 (dmesg) 中收到了内核消息。但出于某种原因,我想写的寄存器没有改变。inb 始终为给定地址返回 0xFF。

我是否需要为我的进程分配 I/O 内存之类的东西?

最佳答案

解决方法是在 inboutb 的参数列表中删除 unsigned char 转换。

关于c - 在内核模块中访问串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com