linux系统中,硬件访问实质就是对寄存器的访问,或者说是对外部ram的访问。
1、硬件访问的实质
驱动程序控制设备,主要是通过访问设备内的寄存器来达到控制目的,因此我们讨论如何访问硬件,就成了如何访问这些寄存器了。
2、地址映射
在linux系统中,无论是内核程序还是应用程序,都只有使用虚拟地址,而芯片手册中给出的硬件寄存器地址或者RAM地址则是物理地址,无法直接使用,因此,我们读写寄存器的第一步就是将它的物理地址映射为虚拟地址。
2.1动态映射
所谓的动态映射,是指在驱动程序中采用ioremap函数将物理地址映射为虚拟地址。
原型:void * ioremap(physaddr, size)
参数:
Physaddr:待映射的物理地址
Size:映射的区域长度