Посоны выручайти, stm32 в цикле пишу во флеш, сектор 256К, предварительно очищен, пишет 0x280 байт и вешает контроллер. в чем может быть дело? режимы 8\16\32\64 бита не влияют на ситуацию FLASH->CR &= CR_PSIZE_MASK; FLASH->CR |= FLASH_PSIZE_BYTE; FLASH->CR |= FLASH_CR_PG; *(__IO uint16_t*)(ADDR) = DATA; пишу так

Комментарии: 26

  1. Anton

    1) Должны быть отключены все перывания 2) Код обязательно должен исполняться из ОЗУ 3) Контроллер должен тактироваться от внутреннего генератора LSI

    • Nikita

      3 не канает - проверял а как его исполнять из ОЗУ?

      • Anton

        Я писал свой бут для stm32 и без 3его варианта не работает :)

        • Nikita

          а понял в странно почему тогда хотя бы немного пишет а если нет LSI? только HSI ой, LSE HSE и все

          • Anton

            брр... я и имел ввиду HSI.... stm32 без HSI? это как?

            • Nikita

              HSI имеется щас еще раз попробую про код из памяти точно видел пример где этого нет и прошивка так же обновлялась уверен что обязательное условие?

              • Anton

                да, т.к. стм исполняет инструкции напрямую с флешки, если будет одновременно исполнение инструкций и запись на флеху, скорее всего все повиснет...

                • Nikita

                  есть же read while write лан попробуем а то уже весь день туплю) спасибо большое

      • Cyberzx

        похачить LinkerScript.ld /* The program code and other data into ROM memory */ .text : { . = ALIGN(4); *(.text) /* .text sections (code) */ *(.text*) /* .text* sections (code) */ *(.glue_7) /* glue arm to thumb code */ *(.glue_7t) /* glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ } >ROM вот тут ROM внизу поменять на RAM

        • Anton

          Ну в этом случае такое не прокатит, для отладки еще можно, тут надо стартануть с флеша, а потом выполнить кусок кода из ОЗУ....

          • Cyberzx

            думаю можно отдельные функции положить в RAM

            • Nikita

              да проще скопировать прямо на ходу и запустить

              • Anton

                Да оно и надо

                • Nikita

                  еще момент обнаружил когда запускаю стирание сектора отладчик кейл отваливается почему так? по той же причине? доступ к памяти блокируется? кстати этого прикола с "неписанием" во флеш нет на более дешевом МК, на нем пишет ок более дешевый это stm32f103c8t6

                  • Anton

                    я писал для 107 и 407, везде работает одинаково...

                    • Nikita

                      ну на 103 у меня кварца нет

    • Fedor

      2 пункт нужен только для перезаписи того, что начинает грузится первым. 3 пункт вообще не нужен.

      • Anton

        Вы сами бутлодер писали? Я говорю о результатах поулченных на практике, в частных случаях может оно и не надо....

        • Fedor

          У меня тоже бутлоадер копируется в ОЗУ и обновляет прошивку Еще какой писал И для f4 и для h7

          • Anton

            я писал для f1 и f4, без 3его пункта не завелось....

            • Fedor

              Так же есть эмуляция eeprom на встроенном flash. С чередованием двух секторов. Никакого переключения тактмрованич и тем более исполнения из озу не требуется А причем же тут тактирование? Это по сути переферия, ее настроил и оно работает Отвалы дебагера могут быть, но точно не помню причин. Вообще там главное - соблюсти последовательность

              • Anton

                у флешки есть настройки, точно сейчас не вспомню как называются, меняются в зависимости от тактовой частоты ядра для стабильной её работы... возможно в них было дело, но я предпочел наиболее надежное и простое решение :)

                • Fedor

                  Возможно. Хотя я бы не назвал смену источника тактирования надежным решением. Это все же костыль

                  • Anton

                    а что не надежного в смене тактирования?

                    • Fedor

                      Если есть проблемы со стиранием, могут быть и проблемы с чтением/исполнением Дело не конкретно в смене. Это устранение симптома

                      • Anton

                        хм, но если на высокой частоте перезапись флешки сбоит, то я считаю это менее нажедным :) тише едешь, дальше будешь :)

Не нашли ответ?

Вам также может быть интересно

Может и бокс, может и север на компе. Или как там эта хрень называется. У меня бокс регулярно отваливается, практически привык.... Читать далее