|
Вопрос о программировании Flash STM32F405 |
|
|
|
Jun 13 2018, 11:02
|
Знающий
   
Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073

|
Здравствуйте, уважаемые коллеги, может кто-либо сталкивался с такой ситуацией. Процессор STM32F405 отлично программируется посредством BootLoader, но мне необходимо сделать доработки в программе и отладку новой версии. Как я не бьюсь, но по SWD не удается запрограммировать FLash, из среды Keil, при ее программировании получаю сообщение: истек таймаут при обращении к Flash-памяти. Никакие ключи для защиты Flash-памяти в BootLoader не устанавливал. Заметил, что когда процессор был чистым, он поддерживал SWD, но стоило один раз запрограммировать его через BootLoader, он перестал программироваться через SWD. Keil процессор на SWD-интерфейсе обнаруживает, но запрограммировать на может из-за таймаута. Такое подозрение, что автоматически установилась защита Flash-памяти, но я не устанавливал защиту. Уважаемые, коллеги, если кто-то знает в чем тут дело, подскажите, пожалуйста. В литературе и мануалах, не нашел ответа на свой вопрос, к сожалению. Заранее благодарен.
|
|
|
|
|
Jun 13 2018, 11:27
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(HardEgor @ Jun 13 2018, 14:20)  Программа может переопределять выводы SWD. +1 Нужен аналог такого CODE GPIOA->MODER = 0 | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN0) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN1) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN2) | (GPIO_MODE_ANALOG << GPIO_MODER_PIN5) | (GPIO_MODE_ANALOG << GPIO_MODER_PIN6) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN7) | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN8) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN9) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN10) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN13) // ! | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN14) // ! | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN15);
GPIOA->AFR[0] = 0 | (AF_PA0_TIM5_CH1 << GPIO_AFR0_PIN0) | (AF_PA1_ETH_RMII_REF_CLK << GPIO_AFR0_PIN1) | (AF_PA2_ETH_MDIO << GPIO_AFR0_PIN2) | (AF_PA7_ETH_RMII_CRS_DV << GPIO_AFR0_PIN7);
GPIOA->AFR[1] = 0 | (AF_PA9_USART1_TX << GPIO_AFR1_PIN9) | (AF_PA10_USART1_RX << GPIO_AFR1_PIN10) | (AF_PA13_SWDIO << GPIO_AFR1_PIN13) // ! | (AF_PA14_SWCLK << GPIO_AFR1_PIN14); // !
|
|
|
|
|
Jun 13 2018, 11:57
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Сеанс коллективного гадания  Я ставлю на слетевшие настройки Flash Download в настройках отладчика. Это если верить в "кейл процессор обнаруживает" и не верить в "сломалось сразу после первой прошивки". А вообще - больше информации надо. Отладчик такой-то, выводит то-то (дословно!), другие программы (segger, st-link, что-там-ещё) выводят то-то...
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Jun 13 2018, 12:44
|
Знающий
   
Группа: Свой
Сообщений: 517
Регистрация: 7-02-06
Пользователь №: 14 073

|
Цитата(Vladimir_T @ Jun 13 2018, 14:55)  Действительно, этот момент нужно тщательнее просмотреть! Проверил, все выводы настроены по умолчанию, на SWD. Цитата(esaulenka @ Jun 13 2018, 14:57)  Сеанс коллективного гадания  Я ставлю на слетевшие настройки Flash Download в настройках отладчика. Это если верить в "кейл процессор обнаруживает" и не верить в "сломалось сразу после первой прошивки". А вообще - больше информации надо. Отладчик такой-то, выводит то-то (дословно!), другие программы (segger, st-link, что-там-ещё) выводят то-то... SDK Keil, программатор Ulink 2 (фирменный), сообщение при загрузки: ULINK: Flash Timeout.Reset Target and try it again. uVision: Error.Flash DownLoaded Error Подключил программатор JLink 7, тот же самое - не программируется. Пробовал найти на сайте Segger утилиту JFasher, но для JLink 7 не нашел.
|
|
|
|
|
Jun 14 2018, 20:24
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Цитата(Vladimir_T @ Jun 14 2018, 14:25)  Подскажите, пожалуйста, сигнал NRST сброса процессора обязательно нужно задействовать при использовании SWD? Или можно без него, т.е. обойтись минимально возможным количеством сигналов: SWDIO, SWCLK, GND? Вопрос возник из-за того, что часто от Keil имею ошибку доступа в Flash/ Нет, не обязательно. Но наличие сброса существенно облегчает жизнь: прислали как-то устройство прошитое, и проц в спячке, когда запитан; не коннектится и всё тут - пришлось тоненький ПЭВ кидать к сбросу у qfp100. Потом узнал (когда без надобности уже было), что просыпался проц по "0" на каком-то выводе. Тем более, что коннект под сбросом это способность STM32.
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Jun 15 2018, 04:00
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(Vladimir_T @ Jun 14 2018, 18:25)  Подскажите, пожалуйста, сигнал NRST сброса процессора обязательно нужно задействовать при использовании SWD? Или можно без него, т.е. обойтись минимально возможным количеством сигналов: SWDIO, SWCLK, GND? Вопрос возник из-за того, что часто от Keil имею ошибку доступа в Flash/ Ошибка доступа из-за высокой скорости SWD или длинных проводов. RESET как раз полезен, если переопределяются выводы SWD или как написали про спячку - отладчик сбрасывает процессор, и пока он не успел переопределить, можно подключиться. Еще желателен вывод VCC -тот же STLink V2 требует его наличия, чтобы выдавать соответствующие уровни напряжения для процессора.
|
|
|
|
|
Jun 15 2018, 08:20
|
Частый гость
 
Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612

|
Цитата(Vladimir_T @ Jun 15 2018, 11:03)  С сигналом NRST стал процессор программироваться всегда, но отладчик не стартует, дает такое сообщение Keil: Конечно глупая версия, но может после программирования и перед отладкой надо снять NRST? Такое может быть, если вы его формируете вручную. Опыт был, программирую всегда с поддержкой NRST, никаких проблем не возникало.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|