Загрузка данных


M33 imx_system_manager(console command to reboot m7 with vector):
int32_t sm_m7_vector_reboot(uint32_t lm_id, uint32_t cpu_id, uint32_t boot_vector)
{
    lmm_rst_rec_t rstRec = {0};
    int32_t status = SM_ERR_SUCCESS;

    /* 1. Check the validity of the machine index */
    if (lm_id >= SM_NUM_LM)
    {
        printf("Invalid use lm_id=%d\n",lm_id);
        return SM_ERR_INVALID_PARAMETERS;
    }

    /* 2. Reset the RPC context to avoid SCMI communication channels hanging
    * between U-Boot/Linux and M33 during kernel restart. */
    status = LMM_RpcReset(lm_id);
    if (status != SM_ERR_SUCCESS)
    {
        printf("Error LMM_RpcReset status=%d\n",status);
        return status;
    }

    /* 3. Write the new startup vector to the hardware registers.*/
    status = LMM_CpuResetVectorSet(lm_id, cpu_id, boot_vector, true, true, false, true);
    if (status != SM_ERR_SUCCESS)
    {
        printf("Error DEV_SM_CpuResetVectorSet status=%d\n",status);
        return status;
    }
    status = LMM_SystemLmReset(0U, 0U, lm_id, true, false, &rstRec);
    printf("LMM_SystemLmReset status=%d\n",status);
    return status;
}


Uboot:
setenv image bootloader_cm7.bin
setenv serverip 192.168.0.193
setenv ipaddr 192.168.0.200
tftpboot ${loadaddr} ${image}
cp.b ${loadaddr} 0x203c0000 ${filesize}

После выполения reboot_m7 c вектором старта 0 - иногда приложение bootloader на M7 ничего даже не печатает в консоль. Особенно при холодном старте. Если загружать стандартное приложение hello_world - то всё вроде бы нормально. Но если словить такое зависание после загрузки bootloader - то потом перестаёт работать и приложение hello_world. Оба приложения выполняются из ТСM памяти. При этом приложения, которые выполняются из DDR, я могу стартовать с помощью reboot_m7 0x80000000 - и они успешно стартуют. В основной загрузчик в container зашито приложение, которое стартует из DDR