加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-device-driver – 如何在linux内核3.17上编辑BeagleBone B

发布时间:2020-12-14 01:58:01 所属栏目:Linux 来源:网络整理
导读:我可以看看/sys/kernel/debug/pinctrl/44e10800.pinmux/pins,看看我感兴趣的引脚: pin 38 (44e10898.0) 00000037 pinctrl-single 这对应于GPIO [2] 4或P8.10. 我正在使用Fedora 21,内核为3.17.7-300.fc21.armv7hl. 我想将多路复用器更改为0x27.总之,这会将
我可以看看/sys/kernel/debug/pinctrl/44e10800.pinmux/pins,看看我感兴趣的引脚:

pin 38 (44e10898.0) 00000037 pinctrl-single

这对应于GPIO [2] 4或P8.10.

我正在使用Fedora 21,内核为3.17.7-300.fc21.armv7hl.

我想将多路复用器更改为0x27.总之,这会将引脚配置为具??有内部下拉电阻(之前,它是上拉电阻).

期望的输出是:

pin 38 (44e10898.0) 00000027 pinctrl-single

可以做些什么?

注意:没有/sys/devices/bone_capemgr.*,因为这不在Angstrom上.典型的DTO方法通过修改开普管理器来导出更改.这不是一个选择.

编辑:经过tad思路的探索,我做到了:
dtc -I dtb -O dts -o~ / am335x-boneblack.dts /boot/dtb-3.17.7-300.fc21.armv7hl/am335x-boneblack.dtb.我编辑了这个文件:

...
    pinmux@44e10800 {
        ...

        example { 
            pinctrl-single,pins = <0x898 0x27>;
        };
    };
...

然后,我用dtc再次编译它,将其粘贴在/boot/dtb-3.17.7-300.fc21.armv7hl/中,然后重新启动.然而,没有任何改变.发生了什么?

编辑:

正如Charles Steinkuehler所指出的,需要从偏移中减去0x800,并且“某些东西”需要引用“示例”.

如果我将0x098 0x27添加到user_leds_s0的条目中,则会观察到所需的行为:

...
    user_leds_s0 {
        pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7 0x60 0x170 0x098 0x27>;
        linux,phandle = <0x3f>;
        phandle = <0x3f>;
    };
...

现在,这一切都很好,让我到达我需要去的地方.但是,该引脚实际上并不是user_led.它应该属于某种单独的领域.那么,为了让“示例”字段或类似字段工作,我需要做些什么呢?

解决方法

我相信海角管理员的东西还没有被移植到3.8内核之外.不确定是否计划,但同时,您可以编辑平面设备树.我找到的最简单的方法(我仍然在寻找最好的方法)就是抓住存储库

https://github.com/RobertCNelson/dtb-rebuilder

在src / arm目录中,编辑am335x-bone-common-pinmux.dtsi文件.在其中,您可以搜索“P8_10_default_pin:”.本节告诉pinmux使用0x37作为其默认设置.将其更改为0x27并保存.

现在,通过运行make来构建新的已编译设备树(.dtb)文件.在ubuntu上,“make install”将所有文件放在正确的位置.我不确定他们去哪里的fedora,但在/ boot /中挖掘应该证明是有趣的.在ubuntu上,正确的位置是

/boot/dtbs/`uname -r`/

就我而言,我正在运行3.14.26-ti-r43.重启后(并导出引脚),上述更改启用接收器上的下拉,打开状态(值)读为0.

root@arm:~# grep 898 /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
pin 38 (44e10898.0) 00000027 pinctrl-single 

root@arm:~# echo 36 > /sys/class/gpio/export
root@arm:~# cat /sys/class/gpio/gpio36/value 
0

我确信有一种更优雅的方式来实现目标,但这对我有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读