我使用 Zynq SoC 和 Ubuntu 16.04.03 以及python CGIHTTPServer 模块来托管网页在按钮提交时,它运行一个带有写入/ dev / mem的python脚本(我有一个内存映射的自定义PWM硬件外设,我想通过电路板提供的页面设置一个寄存器值)。
index.html (片段):
<iframe name="dummy" style="display:none;"></iframe>
<form action="cgi-bin/textinput.py" method="POST" target="dummy">
<input type="text" size="10" name="data" value=""><br>
<input type="submit" value="Submit">
</form>
textinput.py (片段)
with open ("/dev/mem", "r+b") as f:
mem = mmap(f.fileno(), pwm_size, offset=pwm_offset)
当Web服务器尝试在HTTP帖子后运行脚本时,我收到错误:
不允许操作.. / dev / mem
我已经找到了很多关于这个主题的主题,到目前为止已经实现了以下&#34;解决方案&#34;,从预期到#34;绝望的措施&#34;。
1)我的用户名是该组的一部分&#34; gpio&#34;
2)我的用户名启动&#34; python -m CGIHTTPServer 8000&#34;在/ var / www / html中index.html所在的位置
3)textinput.py位于/ var / www / html / cgi-bin
4)/ var / www(及其内容)已经被#ch; gpio&#34;和chmod g + rw
5)同样,/ dev / mem已被授予gpio组访问权限
5)我&#;;&#34; sudo visudo&#34;并输入&#34; gpio ALL =(ALL:ALL)ALL&#34;
无论如何,我无法让python网络服务器在 CGI-bin 文件夹中运行 testinput .py而不会抱怨权限。
毋庸置疑,我能够通过&#34; sudo python testinput.py&#34; 成功运行脚本,并且我能够/ dev / mem没有问题。但这没用,因为我需要Web服务器来启动脚本本身。
所以我已经没有想法了。 任何人都想指出我错过了什么?
我应该进一步澄清我在Raspberry Pi上不而不是Raspbian发行版(我在Ubuntu 16.04上),所以我没有/ dev / gpiomem可以使用。