TOG 0 15 мая Опубликовано 15 мая · Жалоба Товарищи, Вот если я записываю прошивку в микроконтроллер через свой бутлоадер, то бутлоадер по окончании записи вычисляет контрольную сумму всего что записано и сохраняет ее во флэш память МК. А как бы так сделать, чтобы и при прошивке через отладчик, делалось тоже самое ? Пока, что я додумался до того, что надо в проекте разместить какие-нибудь статические данные где-то в конце флэш памяти МК. Модифицировать стандартный Keil'овский проект STM32H7xx_2048(который прошивает МК) и в функции int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf) следить когда будет обращение к этому адресу и тогда можно полагать, что это конец прошивки и можно вычислять и записывать контрольную сумму. Cреда Keil MDK-ARM, микроконтроллер STM32H743. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 15 мая Опубликовано 15 мая · Жалоба 2 часа назад, TOG сказал: Вот если я записываю прошивку в микроконтроллер через свой бутлоадер, то бутлоадер по окончании записи вычисляет контрольную сумму всего что записано и сохраняет ее во флэш память МК. А как бы так сделать, чтобы и при прошивке через отладчик, делалось тоже самое ? А зачем? Ведь через отладчик обычно отлаживают. Зачем для этого контрольная сумма? Но если сильно надо, то можно например где-то хранить флажок "присутствует CRC" и при старте прошивки читать его и, если он не установлен, то самой прошивкой и генерить. Или же делать это если CRC=0 (установленная в исходнике). PS: Вообще-то при отладке логично вообще никакую флешь не шить. Даже прошивкой, не то что её CRC. А отлаживаться в ОЗУ. Коего в вашем МК - как у дурака фантиков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 15 мая Опубликовано 15 мая · Жалоба 59 minutes ago, jcxz said: А зачем? Ведь через отладчик обычно отлаживают. Зачем для этого контрольная сумма? Чтобы бутлоадер не ругался на отсутствие подписи у приложения. 1 hour ago, jcxz said: PS: Вообще-то при отладке логично вообще никакую флешь не шить. Даже прошивкой, не то что её CRC. А отлаживаться в ОЗУ. Коего в вашем МК - как у дурака фантиков. Отлаживать в ОЗУ это имеется ввиду прошивать код программы не во флэш, а в ОЗУ ? Мне и в голову такое не приходило. Скажите пожалуйста зачем так делать ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 15 мая Опубликовано 15 мая · Жалоба 17 минут назад, TOG сказал: Чтобы бутлоадер не ругался на отсутствие подписи у приложения. Не понял... При чём бутлоадер, если речь об отладке? При отладке отлаживаемая программа грузится в память МК отладочным эмулятором. J-Link например. Бутлоадер тут не нужен. 17 минут назад, TOG сказал: Отлаживать в ОЗУ это имеется ввиду прошивать код программы не во флэш, а в ОЗУ ? Мне и в голову такое не приходило. Не "прошивать", а "грузить". 17 минут назад, TOG сказал: Скажите пожалуйста зачем так делать ? Вроде как очевидно: не насиловать лишний раз флешь (ресурс которого не бесконечен), и во-вторых - увеличить скорость работы (так как в ОЗУ грузится часто многократно быстрее). И кроме того: При компиляции и отладке программы в разных режимах, часто вылазят скрытые баги. Которые иначе не были бы замечены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 15 мая Опубликовано 15 мая · Жалоба 42 minutes ago, jcxz said: Не понял... При чём бутлоадер, если речь об отладке? При отладке отлаживаемая программа грузится в память МК отладочным эмулятором. J-Link например. Бутлоадер тут не нужен. Понятно, что грузится программа в память МК Jlink'ом, но весь проект настроен на работу с бутлоадером, поэтому при каждой отладочной сессии сначала стартует бутлоадер. 46 minutes ago, jcxz said: И кроме того: При компиляции и отладке программы в разных режимах, часто вылазят скрытые баги. Которые иначе не были бы замечены. Спасибо, попробую ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 15 мая Опубликовано 15 мая · Жалоба А как бы так сделать, чтобы и при прошивке через отладчик, делалось тоже самое ? Поискать и найти галочку "Verifying", в IAR ARM есть такая: прошивка с проверкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться