刚开始学习x86驱动,水平有限一直在坛子水下学习,有个困惑一直没找到答案,向各位高人请教,
一个南桥的驱动,我已经知道要操作的对象是哪个管脚,需要通过软件给这个管脚高低电平,
有这个芯片的datasheet.
知道这个管脚的基地址存在哪个寄存器里,和相对于这个基地址的偏移量,
但是我怎么去读这个基地址?
比如说,我要对芯片上的GPIO 15引脚进行读写,因此我需要知道GPIO Base Address,然后用baseadd+0xf,应该就是这个管脚的地址了吧?
不知道我理解的和提问的是否正确,还请各位高人指点。
------解决方案--------------------
如果是裸机运行,大体就是你说的那样。
但是,在LINUX操作系统下(windows下也是如此),操作系统屏蔽了用户与硬件的直接联系。用户为了访问硬件,需要经过硬件驱动程序;
LINUX提供了很多具体的硬件驱动程序。即使针对没有提供的部分,你也需要按照驱动程序的开发步骤,自己开发出驱动程序,而后才能访问相应的硬件。
------解决方案--------------------
楼主理解的没错。
但不同的CPU,具体硬件设计可能不完全相同。
------解决方案--------------------
硬件资源只有操作系统才能访问,所以你必须写一个可加载模块
可以是个简单的字符设备,通过这个字符设备来控制输出高低电平
网上很多资料的,随便找个字符设备模块修改就可以了