linux 内核中物理地址转换为虚拟地址一些不懂的地方,麻烦指点

linux 内核中物理地址转换为虚拟地址一些不懂的地方,麻烦指点,第1张

GPFCON 0X56000050

GPFDAT 0x56000054

GPFUP 0x56000058

Reserved 0x5600005c 

这是四个连续的物理地址,每个长度为4字节,所以是16

2. 在 32位系统上, sizeof(指针) 是4,所以 sizeof(xxxx xxxx *) 总是等于4,由于gpfcon 指向的是被映射后的 0X56000050,  gpfdata 就指向 0x56000054

你不是已经说了区别ioremap是将物理地址转换为虚拟地址mmap是将设备内存线性地址映射到用户地址空间linux的线程只能访问虚拟地址,不管是不是内核,ioremap应用,比如有个寄存器地址是0xe8000000你要用ioremap映射后,才能访问地址0xe8000000。这两个地址是不同的,mmu会帮你搞定,对你是透明的mmap在内核我用过ops中的mmap方法我写过一个例程,见附件。里面还有用户态的测试程序。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9028232.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存