реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Самопрограммирование ARM, Прошивка FLASH
meister
сообщение Mar 24 2008, 15:30
Сообщение #16


Местный
***

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



Цитата(zltigo @ Mar 24 2008, 18:15) *
Повторяю последний раз по буквам - ОН НЕ ПЕРЕЗАПИСЫВАЕТСЯ и по этой причине ему везет всегда.


А первый раз? Возмут пустой МК, программатор и начнут шить, после записи первых 512 байт у программатора сядут батарейки или 220 выключится или что-то зависнет. Поэтому я от CRP3 решил отказаться. Если что на CRP2 все стирать и снова.
Go to the top of the page
 
+Quote Post
_dem
сообщение Mar 24 2008, 15:32
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Боже, какие ужасы, господа ....

А что мешает начать запись не с 0-го сектора, где IRQ, а с первого ?
и 0-й сектор записывать последним, после всех проверок, на лету исправив RESET вектор на себя ?

В общем-то место расположения загрузчика никакой роли не играет, просто в случае, когда он в конце, проще отлаживатся (для отладчика и компилятора не имеет никакого значения, есть загрузчик или нет ).
Go to the top of the page
 
+Quote Post
meister
сообщение Mar 24 2008, 15:37
Сообщение #18


Местный
***

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



Цитата(_dem @ Mar 24 2008, 18:32) *
Боже, какие ужасы, господа ....

А что мешает начать запись не с 0-го сектора, где IRQ, а с первого ?
и 0-й сектор записывать последним, после всех проверок, на лету исправив RESET вектор на себя ?


А я и говорю, что если записывать нестандартным образом, то "можно не накрыться", а записывая стандартным можно "накрыться" даже загрузчик в начале.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 15:39
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(meister @ Mar 24 2008, 18:30) *
А первый раз?

Пытайтесь неуклюже выкручиваться? Хоть перавя прошивка bootloader в нулевой сектор, хоть первая прошивка приложения туда-же абсолютно одинаково "опасны".


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_dem
сообщение Mar 24 2008, 15:39
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Цитата(meister @ Mar 24 2008, 19:37) *
А я и говорю, что если записывать нестандартным образом, то "можно не накрыться", а записывая стандартным можно "накрыться" даже загрузчик в начале.


Проясните, пожалуйста, что есть "стандартный" и "нестандартный" способ записи ?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 15:42
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_dem @ Mar 24 2008, 18:32) *
для отладчика и компилятора не имеет никакого значения, есть загрузчик или нет ).

Для отладчика и компилятора не имеет никакого значения, как компилировать и где отлаживаться. Если хотите городить огород и заниматься нелепыми и не гарантирующими положительный результат действиями - это Ваше дело.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
meister
сообщение Mar 24 2008, 15:43
Сообщение #22


Местный
***

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



Цитата(_dem @ Mar 24 2008, 18:39) *
Проясните, пожалуйста, что есть "стандартный" и "нестандартный" способ записи ?


Стандартный - по нарастанию адресов, нестандартные - все остальные smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 15:47
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(meister @ Mar 24 2008, 18:37) *
А я и говорю..

Это ошибочные утверждения.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_dem
сообщение Mar 24 2008, 15:49
Сообщение #24


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 16:06
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_dem @ Mar 24 2008, 18:49) *
пишет 0-й сектор с уже исправленным RESET, указывающим на себя.

Вот когда он после стирания не запишется, то и будет "оболом". И совершенно не имеет значения есть остальные сектора, нет их...
Как следствие, уж совсем никакого значения не имеет порядок записи секторов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_dem
сообщение Mar 24 2008, 18:13
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



хм. А чем вероятность незаписи 0-го сектора отличается от вероятности незаписи любого другого ? Мне кажется, что в случае, когда 0 сектор пишем последним, более вероятно то (примерно в SectorCount раз), что ошибка возникнет в процессе записи предыдущих секторов, о чем немедленно будет сообщено хосту, раздающему прошивку. В таком случае мы в наибольшем количестве случаев корректно отработаем сбойную ситуацию и сообщим персоналу.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 18:43
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_dem @ Mar 24 2008, 21:13) *
хм. А чем вероятность незаписи 0-го сектора отличается от вероятности незаписи любого другого ?

Да ничем и по этой причине порядок не имеет никакого значения. Посему в условиях эксплуатации 0 сектор вообще писать незачем - загрузчик целиком будет рабочим и персонал сможет загружать основную прошивку или читать собщения загрузчика и осмысленно жаловаться.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_dem
сообщение Mar 24 2008, 19:38
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Ладно, за сим закроем тему по причине, видимо, немного разных целей моего решения и решения для автора топика - мне необходимо обновление прошивки "в поле", причем нужно сохранить возможность работы и прямой отладки прошивки, независимо от наличия бутлоадера.
Перенос векторов через "заглушки" бутлоадера или в RAM через REMAP по ряду причин невозможен - поэтому необходима его перезапись.

Да ничем и по этой причине порядок не имеет никакого значения. - я не понимаю, извините, как вероятность порчи нулевого сектора в случаях записи [0....n] и [1..n, 0] может быть одинаковой ....
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2008, 19:51
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(_dem @ Mar 24 2008, 22:38) *
Перенос векторов через "заглушки" бутлоадера или в RAM через REMAP по ряду причин невозможен - поэтому необходима его перезапись.

Уже писал - ни заглушки (для IRQ/FIQ ) ни переноc векторов RAM в принципе не нужны. Для SWI можно четко послать сразу на приложение, ибо bootloader-у они едва-ли нужны. Обработчики исключений в bооader ничем не хуже могут работать, чем в любом другом месте. С отладкой проблем тоже нет. Никаких особых причин, тем более "ряда причин", честно говоря придумать не могу.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Александр_С
сообщение Mar 25 2008, 01:43
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 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 байта.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 16:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01532 секунд с 7
ELECTRONIX ©2004-2016