咨询和请教RDK X5 40PIN驱动开发需求

目前还没开放RDK X5的芯片数据手册等资料,我这边有一个GPIO驱动开发的需求,其目的是通过40PIN GPIO来驱动自动化设备的外围硬件,例如限位开关、步进电机等等。

之前程序都是基于香橙派(全志H3芯片)开发的驱动程序,现在需要官方协助提供相关的芯片数据信息:

// ARISC CPU频率定义(450MHz)
#define ARISC_CPU_FREQ          450000000 // Hz
// ARISC固件在内存中的基地址(对ARM CPU来说是0x00040000)
#define ARISC_FW_BASE           (0x00040000)
// ARISC固件大小定义(48KB = (8+8+32)*1024)
#define ARISC_FW_SIZE           ((8+8+32)*1024)
// 共享内存大小定义(4KB)
#define ARISC_SHM_SIZE          (4096)
// 共享内存基地址(位于固件末尾)
#define ARISC_SHM_BASE          (ARISC_FW_BASE + ARISC_FW_SIZE - ARISC_SHM_SIZE)

// GPIO寄存器基地址
#define GPIO_BASE               0x01c20800
// GPIO-R组寄存器基地址(通常用于电源管理)
#define GPIO_R_BASE             0x01f02c00
// 每个GPIO端口组(bank)的寄存器大小
#define GPIO_BANK_SIZE          0x24

// 最大GPIO端口组数量
#define GPIO_PORTS_MAX_CNT      8
// 每个端口组最大引脚数量
#define GPIO_PINS_MAX_CNT       24

// GPIO端口组枚举定义
enum { PA, PB, PC, PD, PE, PF, PG, PL };  // 定义所有可用的GPIO端口组

// GPIO端口寄存器结构体定义
typedef struct
{
    uint32_t config[4];    // 引脚功能配置寄存器(每个引脚3位配置位)
    uint32_t data;         // 数据寄存器
    uint32_t drive[2];     // 驱动能力配置寄存器
    uint32_t pull[2];      // 上下拉配置寄存器
} _GPIO_PORT_REG_t;

// PWM最大通道数定义
#define PWM_CH_MAX_CNT 16
// PWM计算中浪费的ARISC时钟周期数(160/2)
#define PWM_WASTED_TICKS (160/2)

为方便你们查阅具体配置信息的作用,我下面附上了相应的程序,已经最大化增加了每一行的中文注释,详见附件两个程序源码。

orangepi_h3_gpio.c-
orangepi_h3_gpio.h

你好,请参考X5的GPIO调试指南:https://developer.d-robotics.cc/rdk\_doc/Advanced\_development/linux\_development/driver\_development\_x5/driver\_gpio\_dev

好的,我来试试,看文档应该只是开放了很底层的几个API,和树莓派那种GPIO驱动有一定的区别。