1

我正在尝试在 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始终是默认值,而不是我写给它的那个。

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

先感谢您!

詹姆士

4

0 回答 0