天天看點

硬體通路

在Linux系統中,無論是核心程式還是應用程式,都隻能使用虛拟位址,而晶片手冊中給出的硬體

寄存器位址或者RAM位址則是實體位址,無法直接使用,是以,我們讀寫寄存器的第1步就是将

它的實體位址映射為虛拟位址。

所謂動态映射,是指在驅動程式中采用ioremap函數将實體位址映射為虛拟位址。

原型:void * ioremap(physaddr, size)

參數:

Physaddr:待映射的實體位址

Size: 映射的區域長度

傳回值:映射後的虛拟位址

在完成位址映射後,就可以讀寫寄存器了,Linux核心提供了一系列函數,來讀寫寄存器。

unsigned ioread8(void *addr)

unsigned ioread16(void *addr)

unsigned ioread32(void *addr)

unsigned readb(address)

unsigned readw(address)

unsigned readl(address)

void iowrite8(u8 value, void *addr)

void iowrite16(u16 value, void *addr)

void iowrite32(u32 value, void *addr)

void writeb(unsigned value, address)

void writew(unsigned value, address)

void writel(unsigned value, address)