【SemiDrive G9 系列软件开发】 G9 PTG 5.0 基于 sysfs 接口访问 GPIO

一、测试环境

        近期在回复客户疑问时,遇到在 ap1 侧基于 sysfs 接口访问 GPIO,log 提示 value 为 1,而实际引脚电平不能拉高的问题。使用G9H参考板复现问题并调整配置后,使得电平变化符合预期。

下面结合文档《SemiDrive_9 系列_IO&PinCtrl_使用手册》进行说明。

硬件:SemiDrive G9H ref A02 图一

软件:G9 PTG 5.0

       软件环境搭建以及 G9H Ref A02 操作方法参考:《SD_G9_Quick_Start_Rev2.4.pdf》

图一 G9H 参考板

图一 G9H 参考板

 二、处理过程

        1. 问题描述:

        客户用 SDconfigTool 更改了管脚的配置,重新生成新的配置工程,后/target/refence_g9q/port_cfg.h、/projects/default/system_config.bin、/projects/default/g9q_default.zprj          这 3 个文件考到 Buildsystem 工程里。然后编译新的工程,给 gpio119 echo 成 out、1 后,value 是 1 了,但是电平信号没有拉高。

提示客户在safety侧使用 get_pin_info 检查引脚配置。如图:

图二 检查引脚配置



图二 检查引脚配置
 

       这里不难发现 GPIO controller: GPIO5,而 linux 使用的控制器为 controller: GPIO4,需要使用 SDconfigTool 修正 controller 到对应配置。然后在 linux 内基于 sysfs 接口访问GPIO,通过设备文件使操作特定引脚的电平。

2. 操作过程

2.1 GPIO 以及 Domain 资源说明

典型的 包括 ap1、ap2、safety、secure 以及 mp 等。controller 和 core 的对应关系如下:

  • GPIO_SAFETY = PIN_CONTROLLER1
  • GPIO_SECURE = PIN_CONTROLLER2
  • GPIO_MP = PIN_CONTROLLER3
  • GPIO_AP1 = PIN_CONTROLLER4
  • GPIO_AP2 = PIN_CONTROLLER5


       2.2 配置启动流程

       safety domain 在系统启动过程会读取 system_config.bin 的配置信息并将其写入到寄存器中 生效。当 Linux 内核运行起来后之前的配置信息已经生效,所以内核初始化过程中主要就是解析 DTS 中设置的 GPIO 信息并进行初始化设置,之后根据各个进程需求在驱动中得到调用。
 

2.3 SDconfigTool 配置

第一部分是 PinCtrl,其中关注点:功能复用为 GPIO 功能;

第二部分是 General PAD Config,其中主要关注点: 参照 2.1 配置,GPIO Controller:GPIO 控制器选择 4,

图三 SDconfigTool

图三 SDconfigTool

2.3 DTS相关说明

.dtsi 配置:初始化各项信息,处于 disabled 状态,如图:

图四 默认dtsi配置

图四 默认dtsi配置
 

gpio4 下面有五个 port,每个 port 有 32 个 gpio,即 Linux GPIO 号为 0-159 依次对应从 4a 到 4e 五个组。

2.4 相关信息入口

       内核启动过程中,针对 GPIO 部分在 sysfs 和 debugfs 下设置了相关的信息节点,通过这些节点可以验证 和了解当前平台中关于 GPIO 部分的内容。


       2.4.1 基于 sysfs 接口访问 GPIO,属性说明:

  • 针对 GPIO 类,可以看到有五个 gpiochip,即五个组,名字是 gpiochip%d ,  %d 用的是对应组的 起始 gpio 编号。
  • 一个 export 和一个 unexport 节点,此处用于导出和取消导出对应的 GPIO。

图五 sysfs 接口

图五 sysfs 接口

图六 调试命令一

图六 调试命令一
 

2.4.2 debugfs下 GPIO 节点

debugfs下相关的节点则可以看到关于 GPIO 总体的信息。

        一共有五个 gpiochip,每个占用 32 个 GPIO,号码从 0 到 159。 各个组中已经申请了的 GPIO 信息,包括 GPIO 号、名字、输入输出以及高低、是否用作了中断 等。

图七 调试命令二

图七 调试命令二

2.5 测试对照

以上两种调试都配合万用表进行了引脚测量(如图),结果显示符合预期。
 

图八 引脚原理图

图八 引脚原理图

三、参考文献

  1. 《SemiDrive_9 系列_IO&PinCtrl_使用手册》
  2. 《SemiDrive_Linux_BSP_User_Manual_Rev1.1》

欢迎在博文下方留言评论,我们会及时回复您的问题。

如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com   
作者:老哥三五瓶

更多资讯,请扫码关注我们!   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值