SuperIC社区_
标题: apollo架构中查看mi中GPIO的控制 [打印本页]
作者: Jie2239342693 时间: 2022-5-17 10:22
标题: apollo架构中查看mi中GPIO的控制
以IR LED GPIO为例
1. 查看board.ini的配置
//id对应的值是E_MI_SYS_BOARD_INFO_ID_GPIO_LED_CTL的值,,PAD_NO是GPIO的实际number
BOARD_GPIO_18_ID = 0x326; #E_MI_SYS_BOARD_INFO_ID_GPIO_LED_CTLBoard_GPIO_18_INVERTOR = 0Board_GPIO_18_PAD_NO = 5; #PAD_PWM_PM
2. 加载board.ini
///vendor/mediatek/proprietary_tv/apollo/linux_core/misdk/mi/mi/modules/sys/src/mi_sys_cfg.c
static MI_BOOL _MI_SYS_CfgLoadAndSetBoardInfo(void)
{
....
//加载BOARD_GPIO_SETTING:BOARD_GPIO_NUM
u8GpioNum = _INIPARSER_GET_INT(_pstBoardCfgIni, "BOARD_GPIO_SETTING:BOARD_GPIO_NUM", 0);
//将GPIO的单独配置加载到pstMiConfigData->astGpioColl
for (u8Num = 0; u8Num < u8GpioNum; u8Num++)
{
if (pszKey != NULL)
{
_SNPRINTF((char *)pszKey, MI_SYS_CONFIG_KEYNAME_LEN, "BOARD_GPIO_SETTING:BOARD_GPIO_%d_ID", u8Num);
_pstMiConfigData->astGpioColl[u8Num].eId = _INIPARSER_GET_INT(_pstBoardCfgIni, pszKey, 0);
_SNPRINTF((char *)pszKey, MI_SYS_CONFIG_KEYNAME_LEN, "BOARD_GPIO_SETTING:Board_GPIO_%d_INVERTOR", u8Num);
_pstMiConfigData->astGpioColl[u8Num].u8Invertor = _INIPARSER_GET_INT(_pstBoardCfgIni, pszKey, 0);
_SNPRINTF((char *)pszKey, MI_SYS_CONFIG_KEYNAME_LEN, "BOARD_GPIO_SETTING:Board_GPIO_%d_PAD_NO", u8Num);
_pstMiConfigData->astGpioColl[u8Num].u32PadNo = _INIPARSER_GET_INT(_pstBoardCfgIni, pszKey, 0);
}
}
}
3. 配置NameId
//vendor/mediatek/proprietary_tv/apollo/linux_core/misdk/mi/mi/modules/gpio/src/mi_gpio.c
static MI_RESULT _MI_GPIO_ConfigGpioInfo(void)
{
....
case E_MI_SYS_BOARD_INFO_ID_GPIO_LED_CTL:
_astGpioInfo[u16Count].eNameId = E_MI_GPIO_NAME_LED_CTL;
....
}
4. 实际调用
//vendor/mediatek/proprietary_tv/apollo/linux_core/misdk/mi/mi/modules/dispout/src/mi_dispout.c
//通过step3配置的NameId获取GPIO的配置,所以查找这个NameId就可以看到有哪些调用
mi_gpio_GetGpioNumByName(E_MI_GPIO_NAME_LED_CTL, &(_astPanelInfo[u32PortIndex].u16LedPadNo)))
欢迎光临 SuperIC社区_ (/) |
Powered by Discuz! X3.3 |