Linux 对IO端口的操作方法:
1)直接使用I/O端口操作函数
1。在设备打开或者驱动模块被加载时,申请I/O端口区域;
request_region();
2。之后使用inb()、outb()等函数对I/O端口操作;
3。在设备被关闭或者卸载时,释放I/O端口范围;
release_region();
2)将I/O端口映射成内存进行操作
1。在设备打开或者驱动模块被加载时,申请I/O端口区域并且使用ioport_map()映射到内存;
2。之后使用io函数对i/o端口进行操作;
3。在设备驱动模块被卸载或者release()时,调用ioport_unmap(),和release_region()函数;
3)直接使用I/O内存访问
1。首先调用request_mem_region()申请支援,接着讲寄存器地址通过ioremap()映射到内核空间虚拟地址;
2。之后调用Linux堆设备访问编程接口函数对其操作;
3。最后调用iounmap()将申请的虚拟地址释放,并且调用release_mem_region()函数释放I/O内存资源;