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

 
 
 
Reply to this topicStart new topic
> Удаленная прошивка At91Sam9
wmakc
сообщение Feb 20 2013, 12:42
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



Хочу реализовать прошивку контролера по uart, используя свой протокол. Проблема в том, что считать старую прошивку из камеры получается, а загрузить новую никак.
То есть функция AT45_Read работает. После выполняется AT45_Erase. На ней вот все и останавливается. Если стирать часть памяти, не задействованную под прошивку, то все нормально.
Использую стандартный загрузчик AtBootstrap. Прошивка по адресу 0x8400.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 20 2013, 12:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(wmakc @ Feb 20 2013, 15:42) *
То есть функция AT45_Read работает. После выполняется AT45_Erase. На ней вот все и останавливается.

Напишите свои функции, а не используйте совершенно ненужные в данном случае "черные ящики". Разместите их в ОЗУ и оттуда вызывайте, тогда можно стереть все, что угодно. Именно так я и делал ... Еще вариант - предусмотрите в прошивке сектор, который не подлежит обновлению, т.е. некий загрузчик, и разместите ваши функции в этом секторе. так я тоже делал, вполне работоспособный вариант ...
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Feb 20 2013, 14:07
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(wmakc @ Feb 20 2013, 15:42) *
То есть функция AT45_Read работает. После выполняется AT45_Erase. На ней вот все и останавливается. Если стирать часть памяти, не задействованную под прошивку, то все нормально.


Надо подобрать время паузы после подачи команды на стирание или проверять бит готовности флеши.




Цитата(kovigor @ Feb 20 2013, 15:48) *
Напишите свои функции, а не используйте совершенно ненужные в данном случае "черные ящики". Разместите их в ОЗУ и оттуда вызывайте, тогда можно стереть все, что угодно.


А где ещё можно разместить функции в SAM9 у которого прошивка в AT45xxx?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 20 2013, 14:24
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(_4afc_ @ Feb 20 2013, 17:07) *
А где ещё можно разместить функции в SAM9 у которого прошивка в AT45xxx?

В внутренней флэш, конечно же, если таковая имеется sm.gif
Go to the top of the page
 
+Quote Post
wmakc
сообщение Feb 21 2013, 04:41
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 111
Регистрация: 2-03-10
Пользователь №: 55 768



Внутренней флеш нет. Просто я думал, что может есть какая-то защита от записи, стирания прошивки из флеш.
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Feb 21 2013, 13:03
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(wmakc @ Feb 21 2013, 07:41) *
Внутренней флеш нет. Просто я думал, что может есть какая-то защита от записи, стирания прошивки из флеш.


У микросхемы AT45 есть защита от записи - включается и выключается командами.
Ещё почему-то на AT45DB321 первые 90 секторов шьются проcто, а вот дальше идут пляски с бубном...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 24 2013, 09:31
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Использовал AT45DB321 в нескольких проектах. Бубен не использовал sm.gif
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Feb 25 2013, 09:03
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(jcxz @ Feb 24 2013, 12:31) *
Использовал AT45DB321 в нескольких проектах. Бубен не использовал sm.gif


А мы вот на SAM9 впаяли вместо них AT45DB161 - и программа перепрошивки (написанная студентами в ИАРе) стала глючить - тайминги дескать другие. Получилась версия для 161 или 321. Унификация не удалась.

В итоге плюнули на неё и запаяли везде 321 со старой версией.

А вот на Blackfin у меня дальше 90 сектора запись не идёт. Почему - не разбирался ибо код более 30к пока родить не удалось.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 26 2013, 01:50
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_4afc_ @ Feb 25 2013, 15:03) *
(написанная студентами в ИАРе)
- Может в этом и есть проблема? rolleyes.gif
У нас в устройстве может быть впаяна одна AT45DB321 или две AT45DB161 и ПО определяет автоматически, что впаяно и сколько сигналов CS использовать.
Работает в любом варианте без проблем со всем размером флеш в произвольном постраничном доступе.

Цитата(_4afc_ @ Feb 25 2013, 15:03) *
стала глючить - тайминги дескать другие.
Какие тайминги??? По всем частотам эти чипы вроде идентичны.
Если-же студенты, вместо использования регистра статуса делают задержки, то нужно было им сразу мозги вправить wink.gif
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Feb 26 2013, 09:50
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(jcxz @ Feb 26 2013, 04:50) *
Какие тайминги??? По всем частотам эти чипы вроде идентичны.
Если-же студенты, вместо использования регистра статуса делают задержки, то нужно было им сразу мозги вправить wink.gif


Конечно они использовали задержки. Тому было две причины.

1. В функциях AT45_Read и т.д. не было проверок статуса, там проверяется не занят ли блок SPI у SAM9.
2. Статус всегда показывал готовность, но флешки не писались sad.gif

Вот прямо сейчас проверил:

Стёр,записал нулями,считал страницу N100 - после каждой операции статуc=0хВ9. Страница содержит 0xFF
Стёр,записал нулями,считал страницу N88 - после каждой операции статуc=0хВ9. Страница содержит 0x00

Стираю командой 0х81. Пишу - 0х82. Читаю - 0хЕ8.

Вот такие чудеса в течении нескольких лет sm.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 27 2013, 01:49
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_4afc_ @ Feb 26 2013, 15:50) *
1. В функциях AT45_Read и т.д. не было проверок статуса, там проверяется не занят ли блок SPI у SAM9.
2. Статус всегда показывал готовность, но флешки не писались sad.gif
Читаем мануал на AT45DB321 и видим что запись - не обязательная причина установки занятости:
Код
There are several operations that can cause the device to be in a
busy state: Main Memory Page to Buffer Transfer, Main Memory Page to Buffer Compare, Buf-
fer to Main Memory Page Program, Main Memory Page Program through Buffer, Page Erase,
Block Erase, Sector Erase, Chip Erase and Auto Page Rewrite.


Цитата(_4afc_ @ Feb 26 2013, 15:50) *
Вот прямо сейчас проверил:
И...? Вы будете спорить с мануалом? Тогда чудеса Вам обеспечены ещё много лет... wink.gif

Цитата(_4afc_ @ Feb 26 2013, 15:50) *
Стёр,записал нулями,считал страницу N100 - после каждой операции статуc=0хВ9. Страница содержит 0xFF
Стёр,записал нулями,считал страницу N88 - после каждой операции статуc=0хВ9. Страница содержит 0x00
Вот такие чудеса в течении нескольких лет sm.gif
Ещё бы не чудеса! Ведь Вы даже и не AT45DB321D читаете/пишете, а нечто другое biggrin.gif
AT45DB321D не может возвращать такого статуса!
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Feb 27 2013, 10:25
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(jcxz @ Feb 27 2013, 04:49) *
Читаем мануал на AT45DB321 и видим что запись - не обязательная причина установки занятости:
Код
There are several operations that can cause the device to be in a
busy state: Main Memory Page to Buffer Transfer, Main Memory Page to Buffer Compare, Buf-
fer to Main Memory Page Program, Main Memory Page Program through Buffer, Page Erase,
Block Erase, Sector Erase, Chip Erase and Auto Page Rewrite.


И...? Вы будете спорить с мануалом? Тогда чудеса Вам обеспечены ещё много лет... wink.gif


Я вижу в этом английском, что команды Page Erase (0х81) и Main Memory Page Program through Buffer (0х82) вызывают busy state, что, как я понимаю должно отражаться в соответствующем регистре. Где фраза: запись - не обязательная причина установки занятости ?

Цитата(jcxz @ Feb 27 2013, 04:49) *
Ещё бы не чудеса! Ведь Вы даже и не AT45DB321D читаете/пишете, а нечто другое biggrin.gif
AT45DB321D не может возвращать такого статуса!


Что-то я вчера со-слепу не то увидел - 0xB5 он возвращает. 0х35 я никогда не видел.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 09:30
Рейтинг@Mail.ru


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