phonelong 发表于 2012-7-25 22:56:53

MMU的功能

请教高手,mmu除了能映射存储空间,还能够映射寄存器空间吗?
比如2440的watchdog的控制寄存器是0X53000000的物理地址,那在linux下他的地址是多少,是通过MMU控制的,还是在arm-linux中配置的,如果是在arm-linux中配置的,那是如何配置的?
请高手解答!

Jangel 发表于 2012-7-27 17:07:15

看下这个文件 /linux-2.6.30.4/drivers/watchdog/s3c2410_wdt.c
虚拟地址到物理地址的转换因为是由硬件完成的,所以内核态的虚拟地址一样会自动被转换为物理地址。

summersunboy 发表于 2012-7-28 11:16:48

本帖最后由 summersunboy 于 2012-7-28 14:41 编辑

发表个人观点,欢迎拍砖:
    mmu 既可以映射存储空间,也可以映射寄存器空间。
   在使用寄存器的时候,驱动往往会调用 ioremap获得映射后的地址,然后通过映射后的地址来操作。如 wdt_base = ioremap(res->start, size);,将 res->start (WTCON 0x53000000)这个地址,映射到内核空间(0xC000000以上的地址)处,内核空间的这个地址是由函数get_vm_area(size, VM_IOREMAP);分配的。
页: [1]
查看完整版本: MMU的功能