Linux 为什么我不能使用/dev/mem修改BBB的一些寄存器?

Linux 为什么我不能使用/dev/mem修改BBB的一些寄存器?,linux,mmap,beagleboneblack,Linux,Mmap,Beagleboneblack,我从TRM知道,要修改控制寄存器中的值,我需要特权模式,这可以通过Linux中的内核模块来完成 然而,尽管在TRM中没有特别提到,但如果我尝试使用/dev/mem执行这些操作,那么为ADC启用时钟和为EPWM配置时基时钟总是失败的 为什么我不能在用户空间中使用/dev/mem执行这些操作?因为,正如您已经注意到的,这些寄存器只能在特权模式下修改。用户空间应用程序没有特权-只有在内核中运行的代码(如内核模块)才有特权。谢谢您的回答。但据我所知,只有控制模块寄存器(TRM的9.1)需要特权模式。例如

我从TRM知道,要修改控制寄存器中的值,我需要特权模式,这可以通过Linux中的内核模块来完成

然而,尽管在TRM中没有特别提到,但如果我尝试使用/dev/mem执行这些操作,那么为ADC启用时钟和为EPWM配置时基时钟总是失败的


为什么我不能在用户空间中使用/dev/mem执行这些操作?

因为,正如您已经注意到的,这些寄存器只能在特权模式下修改。用户空间应用程序没有特权-只有在内核中运行的代码(如内核模块)才有特权。

谢谢您的回答。但据我所知,只有控制模块寄存器(TRM的9.1)需要特权模式。例如,在ADC情况下,寄存器上的其他操作使用mmap'ed/dev/mem,只有时钟启用不起作用。这就是我问这个问题的原因。