我已经定制了我的beaglebone的设备树。某些片上外设(如I2C,UART等)以及P8和P9接头上的相应引脚已启用,而其他一些则被禁用。
为了防止用户劫持外围设备所占用的引脚,我需要防止用户导出,导出,更改外设所使用的引脚的方向和值。换句话说,如果用户试图执行
debian@beaglebone:~$ sudo echo 4 > /sys/class/gpio/export
应导致错误(通过设置
在/boot/uENV.txt中启用uboot叠加层时enable_uboot_overlays=1
在提到的文件和评论中
disable_uboot_overlay_video = 1
导出LCD引脚会导致这样的错误。)
然后我写的.dts文件启用了I2C1外设,但允许用户改变SDA和SCL引脚的方向和值。
我将节点添加到am335x-boneblack.dts文件中,如下所示: 节点
pinmux_i2c1_pins {
pinctrl-single,pins = <0x158 0x32 0x15c 0x32>;
linux,phandle = <0xdd>;
phandle = <0xdd>;
};
被添加到“pinmux @ 800”节点,
i2c@4802a000 {
compatible = "ti,omap4-i2c";
#address-cells = <0x1>;
#size-cells = <0x0>;
ti,hwmods = "i2c2";
reg = <0x4802a000 0x1000>;
interrupts = <0x47>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <0xdd>;
clock-frequency = <100000>;
linux,phandle = <0xa0>;
phandle = <0xa0>;
};
被添加到“ocp”节点,最后
i2c1_pins ="/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins";
被添加到“__symbols__”节点。
我应该更改uboot还是.dts文件中应该添加一些代码? 提前致谢
答案 0 :(得分:0)
现在我知道如何完成任务了! 在我写的内核模块中:
...
#include <linux/gpio.h>
gpio_request(4); // for requesting GPIO0_4
...
加载此LKM会阻止用户导出这些引脚。