静态映射:
内核移植时, 以代码的形式硬编码, 如果需要更改, 必须改源码并重新编译内核
在内核启动时建立静态映射表, 到内核关闭时销毁.
除非更改并重新编译, 否则只要内核启动, 静态映射表就一直存在且不发生变化
动态映射: 驱动程序根据需要随时动态的建立, 使用, 销毁映射.
动态映射是随机的, 临时的, 每一次建立都可能不一样
选择虚拟地址映射的方法:
1, 两种映射可以同时使用. 就如: 去学校可以选择有多种路线, 但指向的最终目的地都是一个
2, 静态映射类似于 C 语言中的全局变量 (一旦分配作用周期就是内核运行的全过程),
动态映射类似于 C 语言中的 malloc 堆内存 (用到就分配, 用完就释放,)
3, 静态映射的好处是执行效率高, 坏处是始终占用虚拟地址空间;
动态映射的好处是按需使用虚拟地址空间,
坏处是每次使用前后都需要代码去建立 && 销毁映射动态映射的建立:(1).request_mem_region,// 向内核申请需要的内存资源
(2).ioremap,// 真正实现映射, 传给他物理地址返回一个对应的虚拟地址销毁动态映射 (1).iounmap
来源: http://www.bubuko.com/infodetail-3108723.html