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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Авто перепрограммирование флешей в устройствах, как бы сделать
zombi
сообщение Nov 6 2012, 22:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Есть N изделий с иксмегами и мс.флеш на борту.
Флэшки 1-2 мегагигабитники.
Надо организовать автоматическиое перепрограммирование флешей (дублирование оригинала на копию/и)
Нужно что бы чел. выбрал одно изделие в качестве оригинала (планирую DIPswich)
а остальные N шт. в качестве подчинённых, нажал кнопку и содержимое флэшки оригинала скопировалось на все подчинёные.
Как бы организовать обмен ??? SPI, TWI, COM ???
Каждое изделие имеет свой ID.
Любое из изделий может быть как мастером так и подчинённым.
У меня идеи есть, но не хочется изобретать велосипед.
Может есть наработки в этом плане?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Nov 6 2012, 22:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zombi @ Nov 7 2012, 00:09) *
Есть N изделий с иксмегами и мс.флеш на борту.
Флэшки 1-2 мегабитники.
Надо организовать автоматическиое перепрограммирование флешей (дублирование оригинала на копию/и)
Нужно что бы чел. выбрал одно изделие в качестве оригинала (планирую DIPswich)
а остальные N шт. в качестве подчинённых, нажал кнопку и содержимое флэшки оригинала скопировалось на все подчинёные.

Слишком мало конкретики: какие флешки, какой у них интерфейс, какая серия?

Цитата(zombi @ Nov 7 2012, 00:09) *
Как бы организовать обмен ??? SPI, TWI, COM ???

Флешки с COM-портом? Как называются?
Go to the top of the page
 
+Quote Post
zombi
сообщение Nov 6 2012, 23:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Nov 7 2012, 02:36) *
Слишком мало конкретики: какие флешки, какой у них интерфейс, какая серия?

Какая разница? проц знает как и что писать.
Цитата(_Артём_ @ Nov 7 2012, 02:36) *
Флешки с COM-портом? Как называются?

biggrin.gif
Надо связать несколько иксмег, передать содержимое флэши одного изделия в другое/ие.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 7 2012, 07:49
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Может достаточно просто кнопки на каждом устройстве? На каком нажал - тот и мастер. Мастер начинает обмен, остальные автоматом становятся слейвами. Я бы делал на UARTe, как самом простом из перечисленных трех.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Nov 7 2012, 11:10
Сообщение #5


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(Сергей Борщ @ Nov 7 2012, 11:49) *
Я бы делал на UARTe, как самом простом из перечисленных трех.

А чем SPI плох, проще уж некуда. А если ему буффер привесить типа MAX13235E и быстро и далеко.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 7 2012, 12:19
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ILYAUL @ Nov 7 2012, 13:10) *
А чем SPI плох, проще уж некуда.
Устройств там N шт. Значит кроме трех линий собственно SPI понадобятся еще провода CS от каждого к каждому, ибо кто будет назначен мастером заранее неизвестно. В случае же UARTа можно обойтись одной линией с подтяжкой, которую все будут слушать и передавать открытым коллектором.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
zombi
сообщение Nov 7 2012, 12:39
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Сергей Борщ @ Nov 7 2012, 11:49) *
Может достаточно просто кнопки на каждом устройстве? На каком нажал - тот и мастер. Мастер начинает обмен, остальные автоматом становятся слейвами.

Это не принципиально.
Цитата(Сергей Борщ @ Nov 7 2012, 11:49) *
Я бы делал на UARTe, как самом простом из перечисленных трех.

То же склоняюсь к такому мнению.

Цитата(Сергей Борщ @ Nov 7 2012, 16:19) *
В случае же UARTа можно обойтись одной линией с подтяжкой, которую все будут слушать и передавать открытым коллектором.

Ну да, линий хочется поменьше.
С комом вроде бы всё красиво, но получается что все RX и TX будут соединены.
Для слейвов всё ок, а вот у мастера нужно наоборот.
Думаю использовать в каждом изделии по два компорта у которых RX первого соединён с TX второго а TX перв. с RX второго и в завмсимости от мастер/слейв активизировать нужный ком.
Но блин жалко два компорта под это дело занимать.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 7 2012, 12:54
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(zombi @ Nov 7 2012, 16:39) *
С комом вроде бы всё красиво, но получается что все RX и TX будут соединены.

Интерфейс LIN...
У меня статья была про микроконтроллеры НЕК, там про этот интерфейс немного написано...
Удачи.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
zombi
сообщение Nov 7 2012, 16:08
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(iosifk @ Nov 7 2012, 15:54) *
Интерфейс LIN...
У меня статья была про микроконтроллеры НЕК, там про этот интерфейс немного написано...
Удачи.

Не пойму что конкретно Вы предлагаете?


Цитата(ILYAUL @ Nov 7 2012, 14:10) *
А чем SPI плох, проще уж некуда. А если ему буффер привесить типа MAX13235E и быстро и далеко.

Ничего дополнительного вешать нельзя (бюджет ограничен).
Покумекал немного и действительно SPI лучше всего, да и на скорости 2 мегабита понадёжнее UARTA будет.
И поскольку в режиме SPI выходы настраиваются вручную, то у всех слейвов MISO всегда будет откр.коллектор и настраиваться на выход только по требованию мастера и не более одного.
Только раньше не делал ничего подобного.
Как думаете получится?

ЗЫ. я в топике чуток ошибся, не 1-2 мегабитники а 1-2 гигабитники biggrin.gif
Go to the top of the page
 
+Quote Post
maksimp
сообщение Nov 7 2012, 18:08
Сообщение #10


Местный
***

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



Цитата(zombi @ Nov 7 2012, 16:39) *
Ну да, линий хочется поменьше.
С комом вроде бы всё красиво, но получается что все RX и TX будут соединены.
Для слейвов всё ок, а вот у мастера нужно наоборот.
Думаю использовать в каждом изделии по два компорта у которых RX первого соединён с TX второго а TX перв. с RX второго и в завмсимости от мастер/слейв активизировать нужный ком.
Но блин жалко два компорта под это дело занимать.

Используйте RS-485. Один UART каждого контроллера, через буфер ADM3485 или аналогичный все на общую шину соединяются, и ещё от контроллеру к буферу ещё одна линия нужна - разрешение передачи. Связь полудуплексная. То есть передаёт в каждый момент только один. Мастер передал команду - один из ведомых ответил. И так далее.
При маленьких расстояниях согласующие резисторы на концах шины RS-485 не обязательны.

Сообщение отредактировал maksimp - Nov 7 2012, 18:18
Go to the top of the page
 
+Quote Post
zombi
сообщение Nov 7 2012, 18:29
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(maksimp @ Nov 7 2012, 22:08) *
Используйте RS-485.

В принципе идея хорошая, если бы это было нужно делать часто.
Но ставить дополнительный чип и в каждое изделие и только лишь для того что бы записать его флеши?
В большинстве случаях это будет делаться один единственный раз при производстве.
Это не наш метод!

ЗЫ. панельку ставить - не предлагать biggrin.gif
Go to the top of the page
 
+Quote Post
maksimp
сообщение Nov 8 2012, 03:49
Сообщение #12


Местный
***

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



Тогда, как предлагалось выше в теме, соединяйте вместе все RX и TX всех контроллеров. И подтяжку на + резистором на всякий случай, что уровень не плавал.
Здесь важно чтобы в каждый момент времени все контроллеры кроме не более чем одного переводили свою TX ногу в третье состояние. Такой вариант на самом деле мало отличается от RS-485. Протокол и логика работы точно такие же.
Go to the top of the page
 
+Quote Post
YAM
сообщение Nov 8 2012, 07:25
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 256
Регистрация: 7-07-04
Из: Ukraine
Пользователь №: 291



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

Либо вообще тупо blink.gif , соединить ВСЕ RXD и TXD вместе на всех устройствах и между собой в подобие однопроводной шины и настраивать TXD на выход только в моменты ответа конкретного устройства... Ничего внешнего вообще не понадобится, как и предлагалось выше. И подтяжку просто включить на каждом RXD.


--------------------
Go to the top of the page
 
+Quote Post
GDI
сообщение Nov 8 2012, 08:31
Сообщение #14


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Про тип флешей нам ничего не известно. Но гигабитники вполне могут иметь на борту JTAG, вывести его на разъем и через него программировать внешним программатором на производстве. Зачем делать замороку с прошиванием через проц?
Второй вариант, если JTAG-а нет. Прошивать в проц специальную прошивку, а потом через любой уже доступный наружу интерфейс с компа заливать прошивку во флешь.
Еще вариант, если флешь подключена по последовательному интерфейсу, то вывести наружу его и, опять же, внешним программатором шить.

Еще непонятна фраза "дублировать оригинал на копию", это что имелось в виду? Что есть одно устройство с некой прошивкой во флешь и ее надо зашить в остальные устройства? Тогда по любому из выше названных вариантов сливаете содержимое флешь на комп и далее прошиваете в остальные.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 8 2012, 10:28
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (YAM @ Nov 8 2012, 09:25) *
Передачу данных сделать аля широковещательной для одновременного программирования, потом контроллировать только CRC от слэйвов всей области либо кусками.
Вот тоже хотел вчера расписать этот вариант. А ОК на выходе предлагал, чтобы после передачи все слейвы могли ответить одновременно. Ответ 0xFF - удалось записать блок, ответ 0x00 - не удалось. И пока мастер получает ответ отличный от 0xFF - он повторяет блок. Получится, что все слейвы получают блок одновременно и пишут его параллельно, таким образом сокращается общее время и обмена и записи. Естественно, посылка блока должна содержать адрес блока и CRC. Слейвы, успешно записавшие блок с последним адресом игнорируют следующие посылки пока не пойдет посылка с новым адресом блока.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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