Linux kernel 无法使用iowrite()写入虚拟地址
我正在尝试在linux内核中创建一个硬件驱动程序模块。硬件通过UART连接到CPU,因此我试图通过iowrite()直接访问UART寄存器。然而,我发现我永远不能写到注册地址。下面是我正在使用的代码:Linux kernel 无法使用iowrite()写入虚拟地址,linux-kernel,cpu-registers,virtual-address-space,Linux Kernel,Cpu Registers,Virtual Address Space,我正在尝试在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 U
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
输出始终是默认值,而不是我写入的值
我不知道如何解决这个问题,请帮忙,任何想法都会有帮助
提前谢谢你
James可以肯定的是,寄存器是否位于
UARTBASE+0x20
RW?还有,你在写什么,你得到了什么?根据您的规范,寄存器UARTBASE+0x20的默认值是多少?