2020-11-03 11:52 AM
I need to be able to install/upgrade the CoPro from CPU1.
I get the FW for CPU1 and CPU2 by its system-bootloader via SPI from another STM32-MCU. Sadly FUS-commands in the System-bootloader are only supported by USB and UART.
Studying AN5185, this task sounds easy a.f., however i already fail by activating CPU2:
here is my current Workflow on the P-NUCLEO-WB55-Board with FUS v1.1.0 and deleted Stack:
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_RF_Init();
MX_RTC_Init();
MX_USART1_UART_Init();
// AN5185 1.3 How to activate FUS
// Ensure Cortex®-M0+ is activated by setting C2BOOT bit in PWR_CR4 register
SET_BIT(PWR->CR4, PWR_CR4_C2BOOT);
/*
Ensure IPCCDBA (option bytes) points to a valid shared table information structure in SRAM2a (fill correct pointers to device information table and system table)
*/
// struct with 6 ptr see: AN5185 Figure6 Shared table architecture
IPCCDBA_T* pIpccdba;
do {
uint32_t ipccdbaOffset = LL_FLASH_GetIPCCBufferAddr();
pIpccdba = (IPCCDBA_T*)((ipccdbaOffset<<2) + SRAM2A_BASE);
} while(pIpccdba->pDeviceInfoTable->TableState != 0xA94656B9);
ipccdbaOffset = 0 => shared table reference start @ 0x20030000 => OK
i get valid data for the referenced Device-Info-Table @ 0x20030024, but no reference for the System-Table @ 0X2003000C (offset 3)
see:
If I am correct, the system table is set by the CoPro FW (Stack or FUS )?
I get the references when using other BLE-examples, however the longer i go through the examples and Datasheets/Application Notes, the more headache I get.
I need to get the update-process working at startup, independend from the remaining Application (at best without the overhead from wpan, sequencer, shci... )