Serial Number

Loading thread data ...
Reply to
Roman Gorbunov
12-Oct-03 17:18 Vladimir Vassilevsky wrote to All:

VV> Хочется сделать маленькую сеть с Plug'n' Play конфигурацией. Для этого VV> нужно, чтобы каждое устройство имело уникальный идентификатор типа VV> MAC-адреса или сериального номера. Как это сделать при крупносерийном VV> производстве? VV> Есть ли удобное решение, позволяющее инкрементировать номер при каждой VV> новой прошивке?

VV> PS. Процессор - AVR, шьется по ISP. Сеть - на UART.

Насколько удобное -- не знаю (особенно при крупносерийном производстве), но

avreal -c*sernoN=addr,filename

N - число байт в serno 1..4 addr - hex-число адрес младшего байта serno filename - имя текстового файла, из которого берётся десятичное число - серийный номер, после успешной записи назад пишется увеличенное на 1 значение.

wbr,

Reply to
Oleksandr Redchuk
Reply to
Alexander Torres
Reply to
Maxim Polyanskiy
25-Oct-03 08:47 Kirill Frolov wrote to Oleksandr Redchuk:

OR>> filename - имя текстового файла, из которого берётся десятичное OR>> число - серийный номер, после успешной записи назад пишется OR>> увеличенное на 1 значение.

KF> А что произойдёт, при сбое в момент записи этого filename? Будет сообщение "Сan't write %s\n", serno_filename); По отдельным просьбам трудящихся могу поставить выдачу на экран номера, который должен был писаться в файл.

KF> Это бывает важно... Когда?

wbr,

Reply to
Oleksandr Redchuk
28-Oct-03 13:23 Kirill Frolov wrote to Oleksandr Redchuk:

OR>> "Сan't write %s\n", serno_filename); OR>> По отдельным просьбам трудящихся могу поставить выдачу на экран OR>> номера, который должен был писаться в файл.

KF> Классический уже "баг", вроде переполнения буфера: программа имеет KF> рабочий файл, и в один момент начинает его (именно его) перезаписывать. KF> В результате сбоя (программы, питания... чего угодно) старая запись KF> уничтожена, а новой не записано. В твоём случае -- серийный номер KF> безвозвратно потерян.

OR>> Когда? KF> Когда серийный номер должен быть уникальный. Причём это жутко важно и последствия страшно дороги, но купить для этой задачи УПС (чтобы не было сбоя питания), иметь нормальный винт (чтобы не было его сбоя) - жаба давит?

KF> Программа в любом случае KF> должна находиться в определённом состоянии, и накопитель должен всегда KF> содержать действительную запись в filename. Я не собираюсь делать запись нового серийного номера в отдельный файл, в случае его успешного закрытия переименовывать старый файл в serno_filename.bak, в случае успешного переименования временный файл переименовывать в serno_filename, в случае успешного переименования удалять тот .bak.

wbr, p.s. Кстати, по поводу безвозвратности - можно опросить последний записанный кристалл, можно посчитать прошитые сегодня (а вчерашние должны были быть учтены ещё вчера). Раз такой вопрос возник -- могу его выдать в этом случае на экран, как уже писал выше. Впрочем, это не поможет при сбое моей программы :-) В случае сбоя питания - тоже (где тот экран?). Но делать больше -- не вижу особого смысла. Я просто плохо вижу ту границу, до которой следует "перезакладываться" в программе.

Reply to
Oleksandr Redchuk

OR> Причём это жутко важно и последствия страшно дороги, но купить OR> для этой задачи УПС (чтобы не было сбоя питания), иметь нормальный винт OR> (чтобы не было его сбоя) - жаба давит?

KF> UPS и "нармальный винт" это не решение. *Сбой может быть* и точка. KF> Причина может быть какая угодно, от простого "зависания", до скинутого KF> (случайно!) со стола компутера, к которому программатор и был подключен.

Если сбой/потеря серийного номера так дорого стОит в твоей системе, не используй avreal - ведь дареному коню.... Напиши свой.

KF>> Программа в любом случае должна находиться в определённом состоянии, KF>> и накопитель должен всегда содержать действительную запись в filename.

OR> p.s. Кстати, по поводу безвозвратности - можно опросить последний OR> записанный кристалл, можно посчитать прошитые сегодня (а вчерашние OR> должны были быть учтены ещё вчера).

KF> Можно. С тем рассчётом, что более N штук за день не прошьёшь. Будут KF> "дырки" в номерах.

Кста, мне, как инициатору (просителю) появления этой фичи в avreal важно было иметь возможность заносить не серийный номер как таковой (его значение даже не было важно), а иметь различимые по какому-либо идентификатору устройства, поскольку эти устройства калибруются на установке и нужно автоматом отслеживать замену, чтобы выставить признак "не калибровано". А чего только не предлагали, вплоть до ведения базы данных серийников с запросами через i-net :-)

Reply to
Andy Mozzhevilov
30-Oct-03 20:04 Kirill Frolov wrote to Oleksandr Redchuk:

OR>>>> Когда? KF>>> Когда серийный номер должен быть уникальный. OR>> Причём это жутко важно и последствия страшно дороги, но купить OR>> для этой задачи УПС (чтобы не было сбоя питания), иметь нормальный винт OR>> (чтобы не было его сбоя) - жаба давит?

KF> UPS и "нармальный винт" это не решение. *Сбой может быть* и точка. Ну так прошу предложить действия, которые спасут от "сбой может быть и точка" при *любом* сбое. И что делать *мне* в AVREAL, чтобы при "ненормальном" винте гарантировать тебе сохранность серийного номера. А заодно и сохранность лежащих рядом HEX-файлов.

KF> Причина может быть какая угодно, от простого "зависания", до скинутого KF> (случайно!) со стола компутера, к которому программатор и был подключен. KF>>> Программа в любом случае должна находиться в определённом состоянии, KF>>> и накопитель должен всегда содержать действительную запись в filename. Например, скинутого со стола полным накрыванием винта от удара. ЧТО ДОЛЖЕН ДЕЛАТЬ AVREAL В ЭТОМ СЛУЧАЕ??? Расскажи, пожалуйста. Где та граница, до которой должна распространяться моя паранойя?

Кстати, просьба обратиться к производителям винтов, чтобы при выходе из строя винта от удара или по старости сохранялась вся информация на винте (не "можно восстановить на спецоборудовании", а вот

OR>> p.s. Кстати, по поводу безвозвратности - можно опросить последний OR>> записанный кристалл, можно посчитать прошитые сегодня (а вчерашние OR>> должны были быть учтены ещё вчера).

KF> Можно. С тем рассчётом, что более N штук за день не прошьёшь. Да, не прошьёшь. Ну, может быть, К или L штук, но не больше.

KF> Будут "дырки" в номерах. Откуда дырки? На вчера на конец схемы в рабочем журнале записан номер последнего прошитого кристалла. Сегодня в обед пропал свет и случайно столкнули комп со стола (внимание! avreal в это время находился во вполне определённмо состоянии "не запущен" и диск до падения _содержал_ действительную запись в filename).

Посчитали зашитые сегодня кристаллы и на новом компе (у этого винт накрылся -- при сколь угодно хитрозадумчивых алгоритмах записи serno в avreal нет уже самого файла) из архива восстановили HEX-файлы и записали в файл нужный serno.

Кстати, ты зря молча поскипал перечень того, чего я не собираюсь делать. Я-то всё равно не собираюсь :-), но для выяснения что именно надо делать по твоему мнению -- была опорная точка.

С моей точки зрения вероятность сбоя в момент записи файла avreal'ом при нормальном питании (т.е. то, что я могу как-то откорректировать) гораздо ниже вероятности сбоев за счёт нечаянного вытирания каталога с serno.txt (и hex-файлами).

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

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

wbr,

Reply to
Oleksandr Redchuk
31-Oct-03 04:25 Andy Mozzhevilov wrote to Kirill Frolov:

OR>> Причём это жутко важно и последствия страшно дороги, но купить OR>> для этой задачи УПС (чтобы не было сбоя питания), иметь нормальный винт OR>> (чтобы не было его сбоя) - жаба давит?

KF>> UPS и "нармальный винт" это не решение. *Сбой может быть* и точка. KF>> Причина может быть какая угодно, от простого "зависания", до скинутого KF>> (случайно!) со стола компутера, к которому программатор и был подключен.

AM> Если сбой/потеря серийного номера так дорого стОит в твоей системе, не AM> используй avreal - ведь дареному коню.... AM> Напиши свой. Причём с хранением собственно серийного номера на сервере, прикрученном болтами к полу, чтобы не "скинули (случайно!)". (я так до сих пор и не понял, что нужно добавить в avreal для защиты от случайного скидывания компьютера со стола)

wbr,

Reply to
Oleksandr Redchuk
Reply to
Michael Belousoff

Sun Nov 02 2003 00:08, Oleksandr Redchuk wrote to Andy Mozzhevilov:

AM>> Если сбой/потеря серийного номера так дорого стОит в твоей системе, не AM>> используй avreal - ведь дареному коню.... AM>> Hапиши свой.

OR> Причём с хранением собственно серийного номера на сервере, прикрученном OR> болтами к полу, чтобы не "скинули (случайно!)". OR> (я так до сих пор и не понял, что нужно добавить в avreal для OR> защиты от случайного скидывания компьютера со стола)

:))

Кстати, периодически встречается такая паранойя... :) Вот мне тоже часто бывает интересно, какими такими физическими ресурсами можно обеспечить передачу в программу информации о каком-то аварийном состоянии? Я такие бестолковые требования называю "драйвером nosmoke.drv"... поскольку думай - не думай, а программно отследить выключение из сети ну никак нельзя..

Reply to
Ilia Tarasov
Reply to
Alexander Derazhne

Tue Nov 04 2003 01:44, Alexander Derazhne wrote to Ilia Tarasov:

IT>> ... поскольку думай - не думай, а программно отследить IT>> выключение из сети ну никак нельзя..

AD> Таки можно :-). Сопровождамая мной девайсина успевает отправить трап AD> по эсэнэмпи, пока фильтр стабилизатора садится...

В этом случае - да, поскольку есть физический канал получения информации об отключении (АЦП, компаратор или еще какой-либо датчик). Но я-то писал о случае, когда такого канала _нет_ (а от девайса тем не менее хочется "интеллектуального" поведения). В принципе можно отследить и отказ винчестера (сев на IDE и включив S.M.A.R.T.), и даже падение компа со стола - поставив на его корпус акселерометры... :)))

Reply to
Ilia Tarasov
Reply to
Alexander Derazhne

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.