|
Авто перепрограммирование флешей в устройствах, как бы сделать |
|
|
|
Nov 6 2012, 22:36
|
Гуру
     
Группа: Свой
Сообщений: 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-портом? Как называются?
|
|
|
|
|
Nov 7 2012, 12:39
|

Гуру
     
Группа: Свой
Сообщений: 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 второго и в завмсимости от мастер/слейв активизировать нужный ком. Но блин жалко два компорта под это дело занимать.
|
|
|
|
|
Nov 7 2012, 12:54
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(zombi @ Nov 7 2012, 16:39)  С комом вроде бы всё красиво, но получается что все RX и TX будут соединены. Интерфейс LIN... У меня статья была про микроконтроллеры НЕК, там про этот интерфейс немного написано... Удачи.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 7 2012, 16:08
|

Гуру
     
Группа: Свой
Сообщений: 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 гигабитники
|
|
|
|
|
Nov 7 2012, 18:08
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 8 2012, 07:25
|

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

|
Для такаго варианта самое оно - это использовать драйвер CAN как приемо-передатчик, причем внешний и только для такого программирования, а остальное, да, кнопочка на мастере и вперед... Передачу данных сделать аля широковещательной для одновременного программирования, потом контроллировать только CRC от слэйвов всей области либо кусками. Либо вообще тупо  , соединить ВСЕ RXD и TXD вместе на всех устройствах и между собой в подобие однопроводной шины и настраивать TXD на выход только в моменты ответа конкретного устройства... Ничего внешнего вообще не понадобится, как и предлагалось выше. И подтяжку просто включить на каждом RXD.
--------------------
|
|
|
|
|
Nov 8 2012, 10:28
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|