如何防止劫持Beaglebone外围引脚

时间:2018-05-12 15:49:43

标签: debian embedded-linux beagleboneblack gpio u-boot

我已经定制了我的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文件中应该添加一些代码? 提前致谢

1 个答案:

答案 0 :(得分:0)

现在我知道如何完成任务了! 在我写的内核模块中:

...
#include <linux/gpio.h>

gpio_request(4);     // for requesting GPIO0_4
...

加载此LKM会阻止用户导出这些引脚。