是因为驱动程序的作用!
应用程序访问硬件是通过驱动程序,应用程序运行在用户态,通过read,write,ioctl设备文件即是/dev/devicename,调用相应的驱动程序。具体怎么访问硬件就在驱动程序中了。驱动程序中一般会调用操作系统底层封装好的函数,将物理地址映射到虚拟地址,这样你访问虚拟地址其实就是真实的硬件地址。通过读写这个地址,就能访问到硬件的寄存器。跟基本的51单片机扩展RAM、Flash等芯片访问是一样的。只不过在51中,你是直接访问P0,P1等端口寄存器,而在linux中你就是调用底层函数而已。
|