我想在我的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内存?
答案 0 :(得分:0)
解决方法是删除unsigned char
和inb
参数列表中的outb
广告。