Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 无法使用iowrite()写入虚拟地址_Linux Kernel_Cpu Registers_Virtual Address Space - Fatal编程技术网

Linux kernel 无法使用iowrite()写入虚拟地址

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

我正在尝试在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
输出始终是默认值,而不是我写入的值

我不知道如何解决这个问题,请帮忙,任何想法都会有帮助

提前谢谢你


James

可以肯定的是,寄存器是否位于
UARTBASE+0x20
RW?还有,你在写什么,你得到了什么?根据您的规范,寄存器UARTBASE+0x20的默认值是多少?