From imx8qxxp.
I'm going to write uart3 i2c1 on linux.
scfw board.c function board_system_config
static const sc_rsrc_t rsrc_list[10U] =
{
SC_R_SYSTEM,
SC_R_IRQSTR_M4_0,
SC_R_MU_5B,
SC_R_MU_8B,
SC_R_GPT_4,
RM_RANGE(SC_R_CAN_0, SC_R_CAN_2),
SC_R_I2C_1,
SC_R_FSPI_0,
SC_R_SECO_MU_4
};
/* List of pads */
static const sc_pad_t pad_list[8U] =
{
RM_RANGE(SC_P_ADC_IN1, SC_P_ADC_IN2),
RM_RANGE(SC_P_FLEXCAN0_RX, SC_P_FLEXCAN2_TX),
SC_P_USB_SS3_TC1,
SC_P_USB_SS3_TC3,
RM_RANGE(SC_P_QSPI0A_DATA0, SC_P_COMP_CTL_GPIO_1V8_3V3_QSPI0B)
};
Here, SC_R_I2C_1, SC_P_USB_SS3_TC1, and SC_P_USB_SS3_TC3 are, I2C1 crashes on Linux.
SC_R_CAN_2, SC_P_FLEXCAN2_RX, and SC_P_FLEXCAN2_TX collide with uart3 in linux.
static const sc_rsrc_t rsrc_list[10U] =
{
SC_R_SYSTEM,
SC_R_IRQSTR_M4_0,
SC_R_MU_5B,
SC_R_MU_8B,
SC_R_GPT_4,
// RM_RANGE(SC_R_CAN_0, SC_R_CAN_2),
// SC_R_I2C_1,
SC_R_FSPI_0,
SC_R_SECO_MU_4
};
/* List of pads */
static const sc_pad_t pad_list[8U] =
{
RM_RANGE(SC_P_ADC_IN1, SC_P_ADC_IN2),
RM_RANGE(SC_P_FLEXCAN0_RX, SC_P_FLEXCAN2_TX),
// SC_P_USB_SS3_TC1,
// SC_P_USB_SS3_TC3,
RM_RANGE(SC_P_QSPI0A_DATA0, SC_P_COMP_CTL_GPIO_1V8_3V3_QSPI0B)
};
When scfw.bin is created and executed in this way, uart3 tx does not work and i2c1 does not call peri pre-empted in the device tree, so it does not work.
Please help me.
Attach the partition table(partition.txt)