当前位置: 技术问答>linux和unix
请教:往外设寄存器写数据遇到的麻烦
来源: 互联网 发布时间:2016-05-26
本文导语: [size=18px] 我在没有操作系统的情况下就可以正确往外设寄存器里读写数据,比如写入1234,那么会读出1234. 可是我在linux下写了个驱动,用驱动映射后来读写的时候,写入1234,读出的确是1212,写入5678,读出的是5656. 用不带操作...
[size=18px]
我在没有操作系统的情况下就可以正确往外设寄存器里读写数据,比如写入1234,那么会读出1234.
可是我在linux下写了个驱动,用驱动映射后来读写的时候,写入1234,读出的确是1212,写入5678,读出的是5656.
用不带操作系统和带操作系统交叉调试的时候,不带操作系统写进去一个数据1234,然后加上操作系统读可以读出1234; 加操作系统写入1234,不带操作系统读,读出的是1212,这就说明带操作系统的时候写入出了问题,这是什么原因引起的啊?有哪些朋友遇到过啊?
工作平台:arm+linux at91rm9200 linux2.4[/size]
我在没有操作系统的情况下就可以正确往外设寄存器里读写数据,比如写入1234,那么会读出1234.
可是我在linux下写了个驱动,用驱动映射后来读写的时候,写入1234,读出的确是1212,写入5678,读出的是5656.
用不带操作系统和带操作系统交叉调试的时候,不带操作系统写进去一个数据1234,然后加上操作系统读可以读出1234; 加操作系统写入1234,不带操作系统读,读出的是1212,这就说明带操作系统的时候写入出了问题,这是什么原因引起的啊?有哪些朋友遇到过啊?
工作平台:arm+linux at91rm9200 linux2.4[/size]
|
在代码中间插内存屏障mb(),barrier()这里函数试试
|
这个得看看 寄存器是如何定义的啦。
有些寄存器写1后会自动清零的(当写1所要的功能在硬件动作完成后)。
有些寄存器写1后会自动清零的(当写1所要的功能在硬件动作完成后)。