File tree 1 file changed +25
-0
lines changed
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)
105
105
HAL_MPU_Enable (MPU_PRIVILEGED_DEFAULT);
106
106
}
107
107
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
+
108
130
int RPC::begin () {
109
131
110
132
OpenAMP_MPU_Config ();
111
133
112
134
// resource_table_load_from_flash();
113
135
// HAL_SYSCFG_EnableCM4BOOT();
114
136
137
+ // Ideally this should execute only once
138
+ disableCM4Autoboot ();
139
+
115
140
eventThread = new rtos::Thread (osPriorityHigh);
116
141
eventThread->start (&eventHandler);
117
142
You can’t perform that action at this time.
0 commit comments