Serial Number

Do you have a question? Post it now! No Registration Necessary

Threaded View
Hi All,

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

Организовать сеть как token ring и присваивать таймслоты - не получится.
Ставить далласовский номер - дорого.
По первому включению устройства генерить случайное число - непонятно,
откуда взять случайную информацию.

VLV

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

"There is no business other than show business" (c)


Serial Number
                             Hello Vladimir!


12 Oct 03 18:18, Vladimir Vassilevsky wrote to All:


Quoted text here. Click to load it

Кстати, о птичках. А если б это было до появления фичи в avreal-e :) как бы
обходились без командной строки ???

Quoted text here. Click to load it

avreal.exe -? на предмет расширенного синтаксиса ключей -c -d. Только свежую
версию возьми.

Roman

... Nice story... Tell it to Reader's Digest!!!

Re: Serial Number
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,

--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: Serial Number
Привет Oleksandr!

Sunday October 12 2003 21:23, Oleksandr Redchuk wrote to "Vladimir
Vassilevsky":

 OR>
 OR> 12-Oct-03 17:18 Vladimir Vassilevsky wrote to All:
 OR>
 VV>> Хочется сделать маленькую сеть с Plug'n' Play конфигурацией. Для этого
 VV>> нужно, чтобы каждое устройство имело уникальный идентификатор типа
 VV>> MAC-адреса или сериального номера. Как это сделать при крупносерийном
 VV>> производстве?
 VV>> Есть ли удобное решение, позволяющее инкрементировать номер при каждой
 VV>> новой прошивке?
 OR>
 VV>> PS. Процессор - AVR, шьется по ISP. Сеть - на UART.
 OR>
 OR>  Hасколько удобное -- не знаю (особенно при крупносерийном
 OR> производстве), но
 OR>
 OR> avreal -c*sernoN=addr,filename
 OR>
 OR> N - число байт в serno 1..4
 OR> addr - hex-число адрес младшего байта serno
 OR> filename - имя текстового файла, из которого берётся десятичное
 OR> число - серийный номер, после успешной записи назад пишется
 OR> увеличенное на 1 значение.

Это весьма разумно.


    Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28
    aka snipped-for-privacy@yahoo.com
    http://www.altor.tk , http://altor.sytes.net , ftp://altor.sytes.net



Serial Number
    Hello, Vladimir!

Вcк Окт 12 2003, Vladimir Vassilevsky писал к All по  поводу "Serial Number."
 VV> Хочется сделать маленькую сеть с Plug'n' Play конфигурацией. Для этого
 VV>  нужно, чтобы каждое устройство имело уникальный идентификатор типа
 VV>  MAC-адреса или сериального номера. Как это сделать при крупносерийном
 VV>  производстве? Есть ли удобное решение, позволяющее инкрементировать
 VV> номер при каждой новой прошивке?
Пишешь свой софт для ISP-шной прошивки, к нему файл, где хранится серийник -
счетчик, при каждой удачной записи - инкремент либо некое другое действие по
желаемому закону... Полчаса работы. Хотя с далласом решение более красивое.
 VV> VLV
 VV> PS. Процессор - AVR, шьется по ISP. Сеть - на UART.
  WBR!  Maxim Polyanskiy.


Re: Serial Number
Hемедленно нажми на RESET, Oleksandr Redchuk!


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

    А что произойдёт, при сбое в момент записи этого filename?
Это бывает важно...


Re: Serial Number
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,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: Serial Number
Hемедленно нажми на RESET, Oleksandr Redchuk!


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

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

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

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



Re: Serial Number
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. Кстати, по поводу безвозвратности - можно опросить последний записанный
кристалл, можно посчитать прошитые сегодня (а вчерашние должны были
быть учтены ещё вчера).
Раз такой вопрос возник -- могу его выдать в этом случае на
экран, как уже писал выше.
Впрочем, это не поможет при сбое моей программы :-)
В случае сбоя питания - тоже (где тот экран?).
Но делать больше -- не вижу особого смысла.
Я просто плохо вижу ту границу, до которой следует "перезакладываться"
в программе.

--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: Serial Number
Hемедленно нажми на RESET, Oleksandr Redchuk!


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

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

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

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

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


Re[2]: Serial Number
Hello Kirill,


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

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

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

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

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

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

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


--
С уважением,
 Andy




We've slightly trimmed the long signature. Click to see the full one.
Re: Serial Number
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,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: Re[2]: Serial Number
31-Oct-03 04:25 Andy Mozzhevilov wrote to Kirill Frolov:

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

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

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

wbr,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: Re[2]: Serial Number
Sun Nov 02 2003 00:08, Oleksandr Redchuk wrote to Andy Mozzhevilov:

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

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

:))

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


Re: Serial Number
Hello, Ilia!
You wrote to Oleksandr Redchuk on Mon, 3 Nov 2003 21:14:34 +0000 (UTC):

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

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

With best regards,
            Alexander Derazhne.



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

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

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

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


Site Timeline