问问题 ,关于QNX ,OUT(), MMAP()对硬件操作

我有一个BSP包,但是不全,这样就需要自己对部分硬件寄存器进行操作.


是不是只要先MAP_DEVICE_IO,然后OUT32(),就可以了吗,谁有没有这方面例子呀,

还有是不是需要ThreadCtl(_NTO_TCTL_IO, 0) 呢, 假如需要,ThreadCtl(_NTO_TCTL_IO, 0)有什么用呢

需要ThreadCtl(),在main()函数里调用一次就可以了。其作用是这样的:因为QNX下所有驱动程序都在用户空间,但驱动程序需要读写硬件,这个函数是用户空间的程序用来取得读写硬件的特权的。(IO特权)

其它的,基本上就是map_device_io(),然后io()/out()了。取决于寄存器是一个字节,两个字节,还是四个字节的,有相应的in8()/in16()/in32() 函数。

另外,有的时候,寄存器里的内容还有Big Endian/Little Endian的区分。所以有相应的in32le()/out32be()等函数可用。