本文介绍如何uboot下GPIO的控制方法等,使用触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。
添加uboot配置选项
命令如下:
# 进入sdk目录
$ cd rk3562_linux
# 用文本编辑器打开uboot配置信息
rk3562_linux$ vi ./u-boot/configs/rk3562_defconfig
在rk3562_defconfig配置文件末尾,加入以下配置信息:
CONFIG_CMD_GPIO=y
编译uboot,并将编译生成的uboot.img通过烧录工具烧录进开发板的指定地址
# 编译uboot
rk3562_linux$ ./build.sh uboot
编译生成的uboot.img文件会在sdk的./u-boot目录下:
单独烧录uboot.img到开发板上。
uboot命令行验证GPIO
开发板上电之后,连续按下ctrl+c可使开发板进入uboot命令行,进入uboot命令行输入gpio,如果有打印以下用法则说明gpio控制方法配置成功:
通过在uboot命令行输入以下命令可控制gpio引脚的输出(只是设置高低电平,不会占用),然后执行boot进入系统开机验证。
# 将gpio18号引脚使能为输出高电平
=> gpio set 18 1
=> boot
注意:控制gpio输出引脚之前得先确保gpio不被占用,可通过 cat /sys/kernel/debug/gpio 查看,显示的都是已经使用的gpio下。
实现上电自动配置gpio
修改sdk目录下的./u-boot/common/autoboot.c
# 进入sdk目录
$ cd rk3562_linux
# 通过文本编辑器打开autoboot.c文件
rk3562_linux$ vi ./u-boot/common/autoboot.c
在autoboot.c中找到
void autoboot_command(const char *s)这个函数,在函数中添加执行run_command("gpio set 18 1",0);
run_command("gpio set 18 1",0);函数中有两个参数,第一个是在uboot命令行执行的命令,第二个flag默认写0就可以,如图所示:
修改完重新编译烧录uboot。
最后上板验证:
$ echo 18 > /sys/class/gpio/export
$ cat /sys/class/gpio/gpio18/direction
$ cat /sys/class/gpio/gpio18/value