evgeniy1294 (28.02.2019 19:18 - 19:21, просмотров: 327) ответил Vit на Попробовал перейти из софта в стоковый бутлодырь STM32L476. DFU без пина BOOT0 не стартует. Ищу волшебное слово. Аппаратное решение с временным заданием состояния BOOT0 не годится.
Тут дока на бут, судя по ней все должно работать и так. Вы сброс PLL перед переходом делаете? Там целый список требований для успешного перехода. https://www.st.com/content/ccc/resource/technical/document/application_note/b9/9b/16/3a/12/1e/40/0c/CD00167594.pdf/files/CD00167594.pdf/jcr:content/translations/en.CD00167594.pdf
In addition to patterns described above, user can execute bootloader by performing a jump
to system memory from user code. Before jumping to bootloader user must:
• Disable all peripheral clocks
• Disable used PLL
• Disable interrupts
• Clear pending interrupts
System memory boot mode can be exited by getting out from bootloader activation
condition and generating hardware reset or using Go command to execute user code.
Note: If you choose to execute the Go command, the peripheral registers used by the bootloader
are not initialized to their default reset values before jumping to the user application. They
should be reconfigured in the user application if they are used. So, if the IWDG is being
used in the application, the IWDG prescaler value has to be adapted to meet the
requirements of the application (since the prescaler was set to its maximum value).
Note: For STM32 devices having the Dual Bank Boot feature, in order to jump to system memory
from user code, the user has first to remap the System Memory bootloader at address
0x00000000 using SYSCFG register (except for STM32F7 series), then jump to bootloader.
For STM32F7 series, the user has to disable nDBOOT and/or nDBANK features (in option
bytes), then jump to bootloader.
Note: For STM32 devices embedding bootloader using the DFU/CAN interface in which the
external clock source (HSE) is required for DFU/CAN operations, the detection of the HSE
value is done dynamically by the bootloader firmware and is based on the internal oscillator
clock (HSI, MSI).
Thus, when due to temperature or other conditions, the internal oscillator precision is altered
above the tolerance band (1% around the theoretical value), the bootloader might calculate
a wrong HSE frequency value.
In this case, the bootloader DFU/CAN interfaces might dysfunction or might not work at all.