如何防止Beaglebone外围引脚的劫持

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止Beaglebone外围引脚的劫持相关的知识,希望对你有一定的参考价值。

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

答案

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

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

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

加载此LKM可防止用户导出这些引脚。

以上是关于如何防止Beaglebone外围引脚的劫持的主要内容,如果未能解决你的问题,请参考以下文章

Beaglebone Black–用 UART 连接 ESP8266 (ESP-01 版)

ARM引脚的模式

带有默认地图视图引脚的 Swift Mapview 自定义调出视图

读取某引脚的模拟量串口返回

当通过内核模块访问GPIO2和GPIO3时,为什么我会在Beaglebone Black上出现分段错误?

STM32共用中断线的外部中断引脚的判断