Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 IWDG мешает загрузке программы через openocd
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
viakon
Стоит включить IWDG в программе, openocd не может прогрузить программу.

monitor soft_reset_halt
requesting target halt and executing a soft reset
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x01000000 pc: 0x08000074 msp: 0x20000800
load
Loading section .bload, size 0xc50 lma 0x8000000
Loading section .bwr, size 0x1ac lma 0x8000e00
Loading section .isr_vector, size 0x1d0 lma 0x8001000
Loading section .text, size 0x741c lma 0x80011d0
Loading section .data, size 0x34 lma 0x80085ec
Loading section .scrc, size 0x2 lma 0x801cffe
Loading section .config, size 0x10d0 lma 0x801d000
Error finishing flash operation

если ручками стереть, выключить/включить девайс, тогда 1 раз грузится. Судя по всему не успевает прогрузиться за время до сброса IWDG. Пробовал командами mww увеличивать время работы IWDG, не помогло.
vlad_new
Если это STM32F2XX , то в доке написано, что при операциях с записью во флеш рекомендуется отключать сторожевики, т.к. время стирания может превышать максимальное время на которое возможно запрограммировать стороживик.
Ну или что то в этом роде. Думаю что для STM32F4XX это то же актуально.
viakon
STM32F100
причем длина таймаута IWDG не важена, грузит 8802 байта и ломается. Придется на время отладки отключать его.
John Silver
А дебаг режим не поможет в этом случае?
Код
DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);

UPD
Отвечу сам себе. Не поможет, ведь эта команда в програмном коде, а код еще даже не начал исполняться.

Возникает другой вопрос, IAR (IAR Eclipse plugin) предпринимает какие-то действия для предотвращения перезагрузки?
Потому как, у меня таких проблем пока не возникало.
viakon
победил проблему перед load нужно вставить

monitor mww 0x40003000 0xaaaa
monitor mww 0x40003000 0x5555
monitor mww 0x40003004 7
monitor mww 0x40003000 0x5555
monitor mww 0x40003008 0x0fff
monitor mww 0x40003000 0xaaaa
load


В этом случае таймер замедляется и загрузка проходит
Сергей Борщ
QUOTE (viakon @ Apr 12 2013, 12:40) *
победил проблему перед load нужно вставить
Это можно вставить в скрипт openocd примерно так (у меня мешал DMA, вы тоже можете добавить его запрет в свой скрипт, лишним не будет):
CODE
$_TARGETNAME configure -event gdb-flash-erase-start {
    halt
    #disable interrupts
    reg 19 1
    #save cached register value
    step
    #stop DMA
    mww 0x40020008 0x00000000
    mww 0x4002001C 0x00000000
    mww 0x40020030 0x00000000
    mww 0x40020044 0x00000000
    mww 0x40020058 0x00000000
    mww 0x4002006C 0x00000000
    mww 0x40020080 0x00000000
    mww 0x40020094 0x00000000
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.