Keil uVision MDK-Lite, STM32F072B-плата Discovery та Flash Flash


10

Я використовую MDK-Lite версії 5.23 з платою STMicroelectronics STM32F072B-Disco "Відкриття", і я намагаюся використовувати Flash-приклад, наданий зразками Discovery.

Я використовував цю плату та ланцюжок інструментів для інших прикладів, і я зашифрував деякі роботи SPI та GPIO. IDE працює як чемпіон. Однак для цього конкретного проекту я можу створити код та запустити його, завантаживши та скориставшись кнопкою скидання. Я не можу використовувати налагоджувач у проекті, як тільки я використовую процедуру HAL_FLASHEx_Erase (). Після того, як я виконую цю процедуру, IDE спливає діалогове вікно "Не вдається отримати доступ до цілі. Завершення сеансу налагодження."

Для чого це варто, я знаю, що це не помилка програмування, оскільки якщо я завантажую код і потім виконую код, натиснувши кнопку скидання, він буде працювати. Я використовував цей самий налагоджувач із платою TI, і він міг програмувати спалах та виконувати флеш-процедури. Я впевнений, що не стираю частину флеш-пам’ятки, де зберігається код, тому це не так.

Якщо я перейду цей рядок у main.c

if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)

потім він припиняє сеанс налагодження. Якщо я замість цього перейду до того самого рядка, а потім перейду кожен виклик у режимі спалаху спалаху, тоді він спрацює і врешті-решт вийду з розпорядку, і я можу налагодити решту коду.


Не впевнений, але, можливо, USB-бік CMSIS-DAP був зарядженим. Ця плата має досить складний розподіл потужності для зовнішніх компонентів налагодження. Неможливо отримати доступ до цілі, ймовірно, означає, що з'єднання (послідовним проводом) з DAP було порушено.
Шон Хуліхане

Ми говоримо про бортовий ST-LINK / V2 як налагоджувач?
Бенс Каулікс

Якщо ви можете поділитися кодовим зображенням, хтось інший, можливо, зможе перевірити (і виключити проблеми з обладнанням). Тільки маю дошку M7 у мене ...
Шон Хуліхане

Bence Kaulics, його налагоджувач вбудований до плати дискотеки stm32f072B. Це налагоджувач ST-Link, а не відладчик Keil ULINK2, який є ST-LINK / V2. У мене є один з таких налагоджувачів Keil usb, але він підключається до плати стрічковим кабелем. Я використовую міні-роз'єм ST-Link на платі, а не стрічковий кабельний роз'єм. Плата отримує живлення від роз'єму mini-usb, а не окремого джерела живлення.
netskink

1
Щодо зразка коду. Зразок надається репортажем від STMicro. Шлях проекту до репортажу ST - Проекти / STM32F072B-Відкриття / Приклади / FLASH / FLASH_EraseProgram. Я використовую проект MDK-ARM у цьому каталозі. Він провалюється на лінії 108, де це HAL_FLASHEx_Erase ()
netskink

Відповіді:


7

Я здогадуюсь, що це джерело живлення, пов'язані на якомусь рівні. Або зовнішнє живлення, або бортове перемикання силових рейок.

Для уточнення сценарію налагодження справно працює після скидання обладнання, але коли ваша ціль стирає блок спалаху, з'єднання налагодження відміняється?

Налагодження не переймається правильним виконанням коду - ви можете знаходитись у стані блокування, і зупинка налагодження все одно має працювати. Єдине, що на стороні процесора, що блокує налагодження, - це глухий доступ AHB. Це означає, що проблема полягає або в інтерфейсі SWD між STM32F7 і вбудованим інтерфейсом USB-SWD інтерфейсу (також я вважаю, STM32). Цей пристрій має деяке бортове перемикання силової шини, яке мене бентежило в перший раз, коли я використовував плату.

Варто зауважити, що стирання спалаху збільшить поточний злив пристрою - ваш зовнішній блок живлення підходить до роботи, і чи можете ви використовувати альтернативу?

Редагувати: Виходячи з ваших відгуків про те, що перехід коду, про який йде мова, призводить до збоїв налагоджувача, тоді як одноступінчастий не робить, я думаю, ваша проблема пов'язана з цим питанням .

Покрокове виконання здійснюється за допомогою точки перерви (та опитування для стану зупинки), тоді як однокроковий підтримується апаратно. Це все ще не пояснює, чому налагоджувач, здається, плутається, але дозволяє допустити, що налагоджувач намагається отримати доступ до коду (зі спалаху), коли флеш-контролер активний.

На основі цих спостережень я б запропонував вам встановити точку перерви після стирання та спробувати уникнути запуску цього сценарію.


Правильно, це працює добре, але коли я стираю блок, з'єднання usb з відладчиком падає. Я використовував ненадійний usb-концентратор, тому це здавалося логічним; однак, безпосередньо підключення до комп'ютера та використання іншого концентратора дає той же результат.
netskink

Якщо ви користуєтесь кодом, виконуючи флеш-доступ, ви затримаєте AHB на деякий час. Я уявляю, що кроки в цьому сценарії можуть бути безладним. stackoverflow.com/questions/3445598 має більше.
Шон Хуліхане
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.