访问内核模块中的串口

时间:2016-05-20 09:26:10

标签: c linux linux-kernel serial-port

我想在我的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内存?

1 个答案:

答案 0 :(得分:0)

解决方法是删除unsigned charinb参数列表中的outb广告。