【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   
作者:老哥三五瓶


更多資訊,請掃碼關注我們!
   


★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論