V_M_Luck 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Камень STM32F103RCT6. Есть проект с загрузчиком. Загрузчик располагается по младшим адресам FLASH (16 первых страниц). На старте загрузчик проверяет и в случае необходимости выставляет ReadProtect bit в FLASH_OBR. Возникла необходимость перезашить загрузчик. Оказалось, что при выставлении ReadProtect bit первые две страницы автоматически становятся write-protected. Что бы снять защиту от записи, необходимо запуститься из ОЗУ, снять ReadProtect, полностью сотрется весь FLASH, перезапуститься. Запуск контроллера произойдет опять из FLASH, а там прошивки уже нет никакой. Дергать ножками BOOT нет возможности. Возможно как-то можно обойтись без перезапуска всего? Или как-то еще можно разрулить эту проблему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YAM 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Ну так создайте приложение, в составе которого будет образ нового загрузчика, после запуска снимите защиту и перепрошейте новый загрузчик. не забудьте в приложении так-же сделать проверку на загруженность нового загрузчика, иначе все будет крутиться колесом. И, естественно, если что-то произойдет во время записи нового загрузчика, то ой... :) Фух, сколько букаф написал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_M_Luck 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Ну так создайте приложение, в составе которого будет образ нового загрузчика, после запуска снимите защиту и перепрошейте новый загрузчик. Проблема не в алгоритме обновления загрузчика. Это все и ежу понятно. Повторяю, проблема в том, как снять Read protect, write protect и после этого продолжить процедуру обновления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба В чем проблема то? Хочется "снять" прошивку по умному? ... снятие Read protect со стиранием, ... иначе через ОЗУ доступ к Flash и к прошивке. А кому этого хочется? Вот в STM и закрыли эту дверку. Может у вас другая задача? ...поясните. Проблема не в алгоритме обновления загрузчика. Это все и ежу понятно. Повторяю, проблема в том, как снять Read protect, write protect и после этого продолжить процедуру обновления. таким образом никак. Ну так создайте приложение, в составе которого будет образ нового загрузчика, после запуска снимите защиту и перепрошейте новый загрузчик. не забудьте в приложении так-же сделать проверку на загруженность нового загрузчика, иначе все будет крутиться колесом. И, естественно, если что-то произойдет во время записи нового загрузчика, то ой... :) Фух, сколько букаф написал... да обходиться все это просто, что вы народ пугаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_M_Luck 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Уважаемые! Я не понимаю ваших ответов. У меня вполне конкретный вопрос, никаких "снятий" прошивок мне не нужно. При проектировании загрузчика в нашем устройстве были допущены неточности. Загрузчик нужно обновить. Если все так просто, поясните как. Если ничего конкретного по теме нет - не флудите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 3 5 ноября, 2012 Опубликовано 5 ноября, 2012 · Жалоба Причем тут флуд? На ваш вопрос конкретный ответ. >Повторяю, проблема в том, как снять Read protect, write protect и после этого продолжить процедуру обновления. таким образом никак. Переписывайте загрузчик, устраняйте ошибки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LEVENVORF 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 (изменено) · Жалоба У high-density чипов при активации Read Out Protect автоматически защищаются от записи адреса 0x08000000 - 0x08001000 (4 кб). У меня в этом диапазоне лежала прошивка и обновить ее так и не удалось, потому что похоже единственный способ разлочить эту область памяти это отключить Read Out Protect (из-за этого запуститься процедура полного стирания флэша). И все бы хорошо, но для завершения разлочивания необходимо после стирания выполнить PowerOnReset. И тут появляется проблема: откуда стартовать программе обновления прошивки??? Флэш чистый, ОЗУ тоже... Дергать ножками BOOT тоже не могу... Проблема по-прежнему актуальна. Очень хотелось бы найти решение Изменено 5 ноября, 2012 пользователем LEVENVORF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_M_Luck 0 5 ноября, 2012 Опубликовано 5 ноября, 2012 (изменено) · Жалоба Причем тут флуд? На ваш вопрос конкретный ответ. >Повторяю, проблема в том, как снять Read protect, write protect и после этого продолжить процедуру обновления. таким образом никак. Переписывайте загрузчик, устраняйте ошибки. Понятно. Спасибо. Все-таки я уточню. Возможно меня не так поняли. Снимать read protect мне не нужно. Просто без снятия этого бита нельзя снять защиту от записи двух первых страниц - а там и расположен мой загрузчик. Получается, что обновить загрузчик на уже прошитых устройствах можно только при помощи jtag... Изменено 5 ноября, 2012 пользователем V_M_Luck Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 6 ноября, 2012 Опубликовано 6 ноября, 2012 · Жалоба Понятно. Спасибо. Все-таки я уточню. Возможно меня не так поняли. Снимать read protect мне не нужно. Просто без снятия этого бита нельзя снять защиту от записи двух первых страниц - а там и расположен мой загрузчик. Получается, что обновить загрузчик на уже прошитых устройствах можно только при помощи jtag... Мож я чего не понял, хотя у меня тоже кучка есть программ со своими загрузчиками. А разве нельзя загрузчик положить немного повыше этих 4 кило, ну или вообще отправить его в конец флеша. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться