我正在尝试在 linux 内核中创建一个硬件驱动程序模块。硬件通过 UART 连接到 CPU,因此我试图通过 iowrite() 直接访问 UART 寄存器。但是我发现我永远无法写入寄存器地址。下面是我正在使用的代码:
release_mem_region(UARTBASE_PA, 145);
if(request_mem_region(UARTBASE_PA, 145, "myserial") ==NULL)
printk("iomem request refused\n");
else
UARTBASE =(u32) ioremap_nocache((u32) UARTBASE_PA, 145);
iowrite32((u32) 0x100,(u32) (UARTBASE+0x20));
x=ioread32(UARTBASE+0x20);
printk("%x\ \n", x);
输出printk
始终是默认值,而不是我写给它的那个。
我不知道如何解决这个问题,请帮助,任何想法都会有所帮助。
先感谢您!
詹姆士