通过设备数配制am335x/BB-B IO口或 led 方法详解

在使用am335x芯片进行程序开发时,往往会需要使用设备树来配制IO口的功能,或者修改用户led的位置,这就需要对其的设备树有一定的了解。

在这里以修改系统led灯的位置为例,使用的源系统为BB-Black C版的debian系统,现在移植到我自己做的板子上,需要将原有led( gpio1_21 ~ gpio1_24 )移到新的位置( gpio3_18 ~ gpio3_21 )。
首先,找到设备树的位置,进入/boot/uboot/dtbs/,这里有很多设备树文件.dtb,找到 am335x-boneblack.dtb,使用dtc命令反编译到设备树源文件:
  1. cp am335x-boneblack.dtb am335x-boneblack.dtb_orig  
  1. dtc -I dtb -O dts am335x-boneblack.dtb > am335x-boneblack.dts 
先备份一下,避免修改失误导致板子无法启动。
打开生成的dts文件: vim  am335x-boneblack.dts
向下找,首先找到 pinmux@44e10800,这是定义了一个引脚复用的入口,向下 在67行的位置,可以找一个 pinmux_userled_pins 的命名函数,这里设置了4个userled的引脚,但是不要激动,这并不是系统led真正控制的位置,虽然它确实是BB-Black上用到的4个led的引脚!实际上这里只是引脚复用的一个配置,即配置这四个脚的输出模式(工作模式、上下拉、输入使能)。
继续向下,进入OCP( Open-Closed Principle ),在第134行的时候,可以看到 gpio@44e07000,这里就是对gpio功能的定义了,其寄存器地址为44e07000,对应 "gpio1",其入口点指针为phandle = <0xa>,接下来依次有三个gpio的定义,实际上就对应了am335x芯片的GPIO_0到GPIO_3,记住分别对应的入口点地址,这里非常重要。
再往下走,一直到891行,终于可以找到我们想要的东西了——  gpio-leds ,到这里就是我们真正要控制的led的位置了,可以看到,在led0里面, gpios = <0x5 0x15 0x0>,这里就不是实指板子上的io了,而是从上面定义的gpio映射过来的,0x5即是上面定义的gpio2的入口点指针,而0x15就是指GPIO2_21脚!
到这里,就万事明朗了,下面只需要修改对应的脚到我想要的位置,就完成了对led修改的工作了!比如我把它改成 gpios = <0x17 0x12 0x0>,就变成了引脚gpio3_18了,其它的功能也是同样的道理了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值