无法更改gpio值

时间:2014-08-05 13:34:47

标签: linux-kernel gpio systemd sysv

目前我正试图在2.6.39 linux内核上使用systemd检查Tixi板的启动时间。为此,我创建了一个调用bash脚本的服务文件,该脚本设置并使用gpio。问题是我的系统不允许我改变gpio的值。我可以成功地导出它,改变它的方向,但不是价值。我已经连接了一台示波器来检查硬件中的值是否发生了变化,但是在某些论坛中没有按照文件中的建议进行更新,但它是一样的:值不会改变! 我还应该指出,如果我使用系统V,同样的脚本正在工作,内核,busybox和文件系统具有完全相同的配置。

这非常具有讽刺意味,因为我已经是系统的根,但即使更改文件的权限,也不允许我更改其值。内核也没有反馈说该操作是不可能的,但它看起来好像是可能的,但是当我检查该值时,它与以前一样。

我还尝试在Raspbian中使用3.12(我更改为systemd)运行它,实际上可以这样做,只是以用户空间的正常方式。

如果您有任何想法,我会很感激哦,因为我已经没有想法,所以可能会出现什么问题。

由于

PS:这是应该在bash行上运行的代码:

echo 0 > /sys/class/gpio/gpio104/value
more /sys/class/gpio/gpio104/value
// I get 1 not 0 as I requested

然而,如果我使用systemV,同一板上的相同代码行有效,但如果我使用systemd则不行;

2 个答案:

答案 0 :(得分:1)

可能是因为新设置中缺少udev会改变/ sys / class中gpio的权限。您可能只想放回udev以查看它是否能解决您的问题。

我不知道您的图像设置,但每个gpio引脚需要在使用前导出。你在做它还是自动完成?如果您有omap mux内核切换,则执行以下操作:

echo 0x104 > /sys/kernel/debug/omap_mux/cam_d5 (set mode 4 as stipulate in TI Sitara TRM)
echo 104 > /sys/class/gpio/export (export the pin)
echo out > /sys/class/gpio/gpio104/direction (set the pin as output)

也做dmesg | grep gpio并查看gpio mux是否存在任何初始化问题。

答案 1 :(得分:0)

实际上我遇到了类似于你的问题,即无法手动更改gpio pin的值

最后获得的结果是,即使该引脚的名称是gpio,它只能用于输入(DM3730 gpiO_114和gpio_115)。

所以请参考数据表并确认它可以用于I / O操作..