|
|
  |
Самопрограммирование ARM, Прошивка FLASH |
|
|
|
Mar 24 2008, 15:32
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970

|
Боже, какие ужасы, господа ....
А что мешает начать запись не с 0-го сектора, где IRQ, а с первого ? и 0-й сектор записывать последним, после всех проверок, на лету исправив RESET вектор на себя ?
В общем-то место расположения загрузчика никакой роли не играет, просто в случае, когда он в конце, проще отлаживатся (для отладчика и компилятора не имеет никакого значения, есть загрузчик или нет ).
|
|
|
|
|
Mar 24 2008, 15:37
|

Местный
  
Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484

|
Цитата(_dem @ Mar 24 2008, 18:32)  Боже, какие ужасы, господа ....
А что мешает начать запись не с 0-го сектора, где IRQ, а с первого ? и 0-й сектор записывать последним, после всех проверок, на лету исправив RESET вектор на себя ? А я и говорю, что если записывать нестандартным образом, то "можно не накрыться", а записывая стандартным можно "накрыться" даже загрузчик в начале.
|
|
|
|
|
Mar 24 2008, 15:39
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970

|
Цитата(meister @ Mar 24 2008, 19:37)  А я и говорю, что если записывать нестандартным образом, то "можно не накрыться", а записывая стандартным можно "накрыться" даже загрузчик в начале. Проясните, пожалуйста, что есть "стандартный" и "нестандартный" способ записи ?
|
|
|
|
|
Mar 24 2008, 15:49
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970

|
Цитата(zltigo @ Mar 24 2008, 19:42)  Для отладчика и компилятора не имеет никакого значения, как компилировать и где отлаживаться. Если хотите городить огород и заниматься нелепыми и не гарантирующими положительный результат действиями - это Ваше дело. Уточните, пожалуйста, где именно действия не гарантируют результат ? reset - на загрузчик, он в конце флеша. Получает прошивку, если необходимо, ложит ее в флеш с первого сектора (0-й в кеше в RAM), после записи и проверки CRC (поблочно и всей прошивки) пишет 0-й сектор с уже исправленным RESET, указывающим на себя.
Сообщение отредактировал _dem - Mar 24 2008, 15:52
|
|
|
|
|
Mar 24 2008, 19:38
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970

|
Ладно, за сим закроем тему по причине, видимо, немного разных целей моего решения и решения для автора топика - мне необходимо обновление прошивки "в поле", причем нужно сохранить возможность работы и прямой отладки прошивки, независимо от наличия бутлоадера. Перенос векторов через "заглушки" бутлоадера или в RAM через REMAP по ряду причин невозможен - поэтому необходима его перезапись.
Да ничем и по этой причине порядок не имеет никакого значения. - я не понимаю, извините, как вероятность порчи нулевого сектора в случаях записи [0....n] и [1..n, 0] может быть одинаковой ....
|
|
|
|
|
Mar 25 2008, 01:43
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 18-03-08
Пользователь №: 36 026

|
Цитата(meister @ Mar 24 2008, 18:04)  И в начале накроется медным тазом. Запишутся первые 512 байт с правильной CRC векторов и CRP - этого уже хватит, чтобы ISP запускал только "приложение". Если "приложение" больше 512 байт - медный таз. Кстати. Если писать в конец и делать нестандартным способом - можно "не накрыться". Я такую проблему решал следующим образом. 1. Перед програмирование первых 512 байт запоминаем первые 64 байта в бувер. 2. заполялняем кодом 0xFF первые 64 байта в буфере програмирования. 3. програмируем блок. После програмирования в сей прошивки програмируем сохранённые 64 байта.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|