OpenBmc开发14:gpio管理

本文介绍了GPIO的基本概念,详细阐述了在OpenBMC系统中如何进行GPIO驱动配置、GPIO节点的创建与管理,包括输入输出设置、中断触发模式以及GPIO的脚本控制。主要涉及GPIO初始化、获取gpiobase、创建和删除gpio节点以及设置GPIO的输入输出状态。
摘要由CSDN通过智能技术生成

1 GPIO简介

GPIO(General-purpose input/output),即通用型之输入输出,可以让使用者自由控制。GPIO的PIN脚依可以作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)。GPIO可以用于输入、输出或其他特殊功能,那么就需要对应的寄存器来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。一般在linux下已经有gpiolib提供通用接口来控制,刻个厂家需要提供底层驱动,即寄存器控制,用户既可以通过dts添加驱动进行,在系统下对gpio进行操作。也可以在系统下通过工具(如devmem)直接操作对应的寄存器实现对GPIO的控制。

2 GPIO驱动

aspeed默认配置已经有gpio的驱动(CONFIG_GPIOLIB=y,CONFIG_GPIO_ASPEED=y),如果其他CPU没有需要自己添加。

3 GPIO控制

进入BMC系统后可以看到/sys/class/gpio/下文件,gpiochip804表示的是gpio的base节点,base值是804,创建gpio节点使用“echo <value> > /sys/class/gpio/export”,删除gpio节点使用“echo <value> > /sys/class/gpio/uneexport”,新创建gpio节点的value值需要依据804进行计算得到。

3.1 获取gpiobase

cat /sys/devices/platform/ahb/ahb:apb/1e780000.gpio/gpio/*/base

3.2 创建gpio节点

创建一个GPIOA4的设备节点

echo 810  >  /sys/class/gpio/export 

创建节点后,默认GPIOA6为输出,高电平有效, 并且此时的GPIO输出的高电平。

3.3 设置有效状态

 一般电路做了上拉处理,因此逻辑“1”是低电平,而逻辑“0”是高电平,因此需要设置active_low值为“1”,即低电平有效。

ec
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值