gpt4 book ai didi

linux - 如何从linux内核模块(cpu : ARM))写入寄存器

转载 作者:可可西里 更新时间:2023-11-01 11:49:37 26 4
gpt4 key购买 nike

我试图从 Linux 内核写入系统控制寄存器。但结果是段错误:

Unable to handle kernel paging request at virtual address 20050004

来自内核模块的代码:

#define REGBASE 0x20050000

void writeRegister(void){
__raw_writel( 0x00000002, REGBASE + 0x0004 );
}

如何访问系统控制寄存器所在的片上内存?

最佳答案

我猜 REGBASE 是物理地址而不是虚拟地址。你需要让内核把它映射到地址空间,然后才能使用它。大多数时候你会使用 ioremap 来映射它。

例如:

void __iomem *io = ioremap(REGBASE, SZ_4K);
writel(0x00000002, io + 0x0004);

关于linux - 如何从linux内核模块(cpu : ARM))写入寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16935041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com