File tree Expand file tree Collapse file tree 1 file changed +25
-0
lines changed
Expand file tree Collapse file tree 1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -105,13 +105,38 @@ static void OpenAMP_MPU_Config(void)
105105 HAL_MPU_Enable (MPU_PRIVILEGED_DEFAULT);
106106}
107107
108+ #define return_if_not_ok (x ) do { int ret = x ; if (ret != HAL_OK) return ; } while (0 );
109+
110+ static void disableCM4Autoboot () {
111+ FLASH_OBProgramInitTypeDef OBInit;
112+ OBInit.Banks = FLASH_BANK_1;
113+ HAL_FLASHEx_OBGetConfig (&OBInit);
114+ if (OBInit.USERConfig & FLASH_OPTSR_BCM4) {
115+ OBInit.OptionType = OPTIONBYTE_USER;
116+ OBInit.USERType = OB_USER_BCM4;
117+ OBInit.USERConfig = 0 ;
118+ return_if_not_ok (HAL_FLASH_OB_Unlock ());
119+ return_if_not_ok (HAL_FLASH_Unlock ());
120+ return_if_not_ok (HAL_FLASHEx_OBProgram (&OBInit));
121+ return_if_not_ok (HAL_FLASH_OB_Launch ());
122+ return_if_not_ok (HAL_FLASH_OB_Lock ());
123+ return_if_not_ok (HAL_FLASH_Lock ());
124+ printf (" CM4 autoboot disabled\n " );
125+ NVIC_SystemReset ();
126+ return ;
127+ }
128+ }
129+
108130int RPC::begin () {
109131
110132 OpenAMP_MPU_Config ();
111133
112134 // resource_table_load_from_flash();
113135 // HAL_SYSCFG_EnableCM4BOOT();
114136
137+ // Ideally this should execute only once
138+ disableCM4Autoboot ();
139+
115140 eventThread = new rtos::Thread (osPriorityHigh);
116141 eventThread->start (&eventHandler);
117142
You can’t perform that action at this time.
0 commit comments