Advertisement

Android开发探索:HAL及驱动开发学习笔记——内存管理

阅读量:

Linux内存管理学习与实践

1、分页机制设计与实现

这段内容略显复杂,暂时难以完全理解,待日后实际应用时再深入探讨其含义。

2、内存分配函数

kmalloc与kfree函数

vmalloc及vfree操作

3、slab

4、内存池

5、I/O端口及I/O内存

1、 访问I/O内存的流程如下:

request_mem_region()-> ioremap() -> ioread8()/iowrite8() -> iounmap()->release_mem_region() 。

此前已提及,IO内存是统一编址机制下的概念。对于采用统一编址方式的系统,IO地址空间被视为物理主存的一部分。然而,在编程过程中,我们只能操作虚拟内存,因此访问的第一步是将设备所在的物理地址映射至虚拟地址。在Linux2.6版本中,这一过程通过ioremap()实现:

void *ioremap(unsigned long offset, unsigned long size);

随后,可以通过指针直接访问这些地址,但也可以借助Linux内核提供的函数组进行读写操作:

ioread8(),iowrite16(), ioread8_rep(), iowrite8_rep()......

2、 访问I/O端口

访问IO

全部评论 (0)

还没有任何评论哟~