paskal 1 1 февраля Опубликовано 1 февраля · Жалоба Занимаюсь с квазикитайским армом, AT32F415. Возникла такая проблема. Если подать логическую единицу на ножку BOOT0, то контроллер виснет при вызове прерывания. То есть получается что ножка BOOT0 меняет адрес таблицы прерываний. Можно ли это как то устранить? А то я работаю через бутлодер, мне такой баг сильно мешает. Ранее работал на Миландре, там этой проблемы не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 1 февраля Опубликовано 1 февраля (изменено) · Жалоба А что об этой ножке говорит мануал? А мануал, кстати, говорит вот что: BOOT0 - узкоспециализированная ножка выбора загрузчика, работает только на эту функцию. А коль так, то незачем её дергать в нормальном режиме работы. Если же загрузка происходит из SRAM, то чтобы оная в ней работала и работали прерывания, нужно таблицу этих прерываний перенести в SRAM и в настройках положения таблицы указать именно SRAM (тут я мануал не читал, а пишу по аналогии с STM32). Изменено 1 февраля пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 1 февраля Опубликовано 1 февраля · Жалоба 8 minutes ago, EdgeAligned said: А коль так, то незачем её дергать в нормальном режиме работы. Я не дергаю ее в нормальном режиме работы! Я загружаю программу через бутлодер. И для этого надо ее установить в 1. Потом я загруженную программу запускаю командой бутлодера. И она виснет, потому что при работе с бутлодером BOOT0=1. А дергал ее я для исследования из за чего программа виснет. 13 minutes ago, EdgeAligned said: Если же загрузка происходит из SRAM Загрузка из флеш. Флеш я записываю бутлодером и запускаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 2 февраля Опубликовано 2 февраля · Жалоба Бутлоадер - какой? Который помещается тоже во флеше, предварительно туда залитый? Тогда не нужно BOOT0 переводить в 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 2 февраля Опубликовано 2 февраля · Жалоба Так установите BOOT0 = 0 для номальной работы. Никаких проблем вообще нет. Ещё есть BOOT1. Есть схема от START-F415, там всё нарисовано в деталях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 4 февраля Опубликовано 4 февраля · Жалоба On 2/2/2024 at 7:23 AM, x893 said: Так установите BOOT0 = 0 для номальной работы. Никаких проблем вообще нет. Для работы BOOT0=0, а для программирования BOOT0=1. То что вы предлагаете, это мне при каждой перезаписи программы надо лезть в схему и переключать BOOT0. А раньше я это делал программно. Командой jump из бутлодера запускал программу во флеши. А с этим глюком я не могу запускать программу без перекоммутации ножек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 4 февраля Опубликовано 4 февраля · Жалоба 2 minutes ago, paskal said: Для работы BOOT0=0, а для программирования BOOT0=1. То что вы предлагаете, это мне при каждой перезаписи программы надо лезть в схему и переключать BOOT0. А раньше я это делал программно. Командой jump из бутлодера запускал программу во флеши. А с этим глюком я не могу запускать программу без перекоммутации ножек. Нияего не понял. Я на F415 програмно вызываю system bootloader без boot0 (всегда в 0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 4 февраля Опубликовано 4 февраля · Жалоба Вот что написано в документации на AT32F403/407 (думаю, у F415 будет то же самое), у STM32 все точно так же: Цитата The values on the BOOT pins are latched after reset. Users can set the BOOT1 and BOOT0 pins after reset, to select the required boot mode. The BOOT pins are re-sampled when exiting from the Standby mode. Therefore, they must be kept in the required boot mode configuration in the Standby mode. 1 час назад, paskal сказал: Командой jump из бутлодера запускал программу во флеши. Ну так и настройте правильно таблицу прерываний через VTOR в самом начале вашей программы. И указатель стека заодно тоже из этой же таблицы прерываний правильный в MSP загрузите. И программу собирать надо так, чтобы она располагалась с адреса 0x08000000, а не с 0x00000000 (как обычно делают), потому что c адреса 0x00000000 в вашем случае отражена системная память с загрузчиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dOb 8 5 февраля Опубликовано 5 февраля · Жалоба В 02.02.2024 в 06:08, EdgeAligned сказал: Который помещается тоже во флеше BootLoader в ROM Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 5 февраля Опубликовано 5 февраля · Жалоба Который системный, находящийся в микроконтроллере "от рождения"? Тогда после прошивки и перед перезагрузкой уберите снова ногу BOOT0 в 0. Ну и проверяйте свою программу, возможно, где-то накосячили. Китайский клон, он хоть и клон, но могут быть различия. Сверяйтесь с документацией на него. Ну и имейте ввиду, что все эти "новые китайские друзья" - это такая лажа, если честно, что прям грусть-тоска берет. Не верьте зомбоящику про "прорыв" - это скорее, "возврат в прошлое". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 5 февраля Опубликовано 5 февраля · Жалоба Массово применяем AT32F415CCT7. BOOT0 у меня заведен на землю через резистор 4.7К и также выведен на разъем для программирования. На разъеме для программирования есть SWD и UART чтобы можно было залить bootloader через оба эти интерфейса. По факту производство заливает bootloader через китайские J-Link, купленные на али за 1000 рублей. Последующие обновления прошивки через другой интерфейс UART, который имеет выход во внешний мир. Что у вас означает фраза "виснет" при вызове прерывания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 5 февраля Опубликовано 5 февраля · Жалоба Скорее всего, это означает, что при запросе прерывания не обнаружено действующего кода по нужному вектору и МК либо улетает вникуда (случайное место) с последующей остановкой в hardfault, либо вызывается дефолтный обработчик, который имеет зацикливание на одном месте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 5 февраля Опубликовано 5 февраля · Жалоба 6 hours ago, uriy said: Массово применяем AT32F415CCT7. BOOT0 у меня заведен на землю через резистор 4.7К и также выведен на разъем для программирования. На разъеме для программирования есть SWD и UART чтобы можно было залить bootloader через оба эти интерфейса. По факту производство заливает bootloader через китайские J-Link, купленные на али за 1000 рублей. Последующие обновления прошивки через другой интерфейс UART, который имеет выход во внешний мир. Что у вас означает фраза "виснет" при вызове прерывания? Аналогично. Только и первая прошивка тоже через USB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
paskal 1 5 февраля Опубликовано 5 февраля · Жалоба 20 hours ago, x893 said: Я на F415 програмно вызываю system bootloader без boot0 (всегда в 0) А как вы это делаете? 19 hours ago, Сергей Борщ said: И программу собирать надо так, чтобы она располагалась с адреса 0x08000000 Конечно все это я делаю. Программа же работает нормально при boot0=0. VTOR я для интереса вывел, он равен 0, как и по спецификации. Не вижу что там настраивать, у меня программа в штатном режиме запускается, из флеш. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 53 5 февраля Опубликовано 5 февраля · Жалоба Ну так верните обратно BOOT0 в 0 после перепрошивки. Или VTOR запишите чтобы он был равен реальному адресу таблицы во флеше, а не переназначаемой области. Ну и маны читайте, маны. Раньше, много лет назад, у нас был даже особый обряд с манами. Вот не знаю, как на этом китайском клоне, но по аналогии с проверенным STM32, ножка BOOT0 имеет свойство ремапить диапазон адресов, начинающийся с 0ч00000000. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться