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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Программирование по JATG, не могу разобраться
sensor_ua
сообщение Apr 1 2007, 21:07
Сообщение #16


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Проошивку серийного номера, удобно зашивать в EEPROM средствами программы МК, по штатным протоколам вашего устройства, а не через JTAG...

IMHO, серийный номер утройства не имеет никакого отношения к самой программе и очень в редких случаях может храниться в EEPROM - ему место только во FLASH (если хватает места и нет других супер вычурных пожеланий). Штатный протокол просто должен запросить у "программы" то, что она знает, где это оно лежит. Существет, правда, такое понятие, как серийный (как ни может показаться странным) номер программы и он никакого отношения к номеру устройства не имеет - храните где придётся.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 1 2007, 23:46
Сообщение #17


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(sensor_ua @ Apr 1 2007, 20:07) *
IMHO, серийный номер утройства не имеет никакого отношения к самой программе.

Согласен.

Цитата
и очень в редких случаях может храниться в EEPROM - ему место только во FLASH (если хватает места и нет других супер вычурных пожеланий). Штатный протокол просто должен запросить у "программы" то, что она знает, где это оно лежит.

А вот тут все с точностью до наоборот.
Номер устройства, это номер конкретного экземпляра устройства, с одной и той же прошивкой. Для того чтобы задать этот номер не нужно перекомпилировать программу. Поэтому он должен размещаться в памяти, которая не перетирается при смене прошивки - или в EEPROM или в области бутлоадера. Если его размещать в области бутлоадера, то
1. и программировать чип придется будлоадером во избежание стирания этого номера;
2. Бутлоадер придется править перекомпилировать или перелинковывать столько раз сколько всего серийных номеров устройств.

С eeprom будет гораздо меньше мороки, т.к. достаточно просто запрограммировать фуз EESAVE.

Цитата
Существет, правда, такое понятие, как серийный (как ни может показаться странным) номер программы и он никакого отношения к номеру устройства не имеет - храните где придётся.

А вот номер или правильней сказать "версия" программы - вшивается в код программы и соответсвенно размещается во FLASH.
Go to the top of the page
 
+Quote Post
AVR
сообщение Apr 2 2007, 00:26
Сообщение #18


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(defunct @ Apr 1 2007, 20:43) *
Ошибка записи вероятно..
...

Я пишу в EEPROM при программировании, проверяю - всё записано правильно. Но в процессе эксплуатации слетает то что записалось, хотя в программе я только читаю содержимое EEPROM. Но за совет спасибо, интересный метод, буду применять smile.gif


--------------------
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Apr 2 2007, 00:58
Сообщение #19


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



2defunct
Да не переворачивайте всё с ног на голову.
Если девайс перешивается (наладчиком, например, каким-нибудь) то чхать на все изыски насчёт размещения серийного номера - оно без системы учёта на предприятии глубоко до фени. Прекладывать этот вопрос на программиста, нихрена не должного знать сколько девайсов и за какими номерами когда БУДЕТ выпущено, - полный бред. Механизмы прозрачны и действительно они требуют восстановления номера после стирания, но это производственный вопрос. У меня девайсы тестируются на одной программе - ТЕСТОВОЙ, а выпускаются в свет с конкретной, согласно заказу. И это НОРМАЛЬНО. А повредить ячейку в EEPROM завсегда проще прямо из тела выполняемой программы, тем более стираетcя оно также легко, как FLASH. И какого хрена запрещать программисту полноценно пользоваться EEPROM только из-за пожеланий "начальника транспортного цеха"???
Цитата
А вот номер или правильней сказать "версия" программы - вшивается в код программы и соответсвенно размещается во FLASH.

Это действительно предпочтительнее, но в некоторых случаях не есть удобно, например, если программа де-факто имеет серьёзные настройки работы, укладываемые в EEPROM при выпуске, а идентификация версии (охват контрольными суммами в том числе) может быть только с этими самиыми настройками - вопрос о номере тогда становится более философским, но формально по идентификации эти версии разные


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 2 2007, 01:30
Сообщение #20


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(sensor_ua @ Apr 1 2007, 23:58) *
2defunct
Да не переворачивайте всё с ног на голову. Если девайс перешивается (наладчиком, например, каким-нибудь) то чхать на все изыски насчёт размещения серийного номера - оно без системы учёта на предприятии глубоко до фени. Прекладывать этот вопрос на программиста, нихрена не должного знать сколько девайсов и за какими номерами когда БУДЕТ выпущено, - полный бред.

Причем тут программист? Программист пишет функциональность устройства по ТЗ, если в ТЗ входит соответвующая функциональность по работе с S/N, то задачей программиста будет внести функцию для записи/чтения S/N... Естественно ему будет фиолетово кто и как будет пользоваться функцией.

Цитата
Механизмы прозрачны и действительно они требуют восстановления номера после стирания, но это производственный вопрос.

Это не производственный вопрос, а вопрос стадии проектирования. Либо гравируем номер намертво либо рисуем карандашем, а потом думаем куда он делся.. (утрирую).

Цитата
У меня девайсы тестируются на одной программе - ТЕСТОВОЙ,

Тут согласен. Проверяется обычно комплексными тестами полная функциональность устройства, а к заказчику идет та же самая программа, только с обрезанной функциональностью. В обратном направлении такое тестирование невозможно.

Цитата
А повредить ячейку в EEPROM завсегда проще прямо из тела выполняемой программы, тем более стираетcя оно также легко, как FLASH.

Перечитайте мой предыдущий пост. Почему неудобно S/N хранить во FLASH я написал там. Могу повторить другими словами:
Для хранения во флеш программу придеться перекомпилировать/перелинковывать столько раз сколько серийных номеров, плюс при обновлении прошивки S/N сотрется.

Цитата
И какого хрена запрещать программисту полноценно пользоваться EEPROM только из-за пожеланий "начальника транспортного цеха"???
Мотивация непонятная. Причем тут начальник транспортного цеха? И кто мешает программисту использовать eeprom так как ему нравится? Если S/N нужны только начальнику транспортного цеха, тогда маркировать надо плату или корпус устройства. Желательно снаружи жирным красным шрифтом. Но ведь порой этот номер нужен для других целей, например для автоактивации каких-то встроенных функций, когда заказчик за них заплатит.

Цитата
Это действительно предпочтительнее, но в некоторых случаях не есть удобно, например, если программа де-факто имеет серьёзные настройки работы,

Причем тут настройки программы к версии прошивки? Вы никогда не добавляете новую функциональность? И никогда не случалось видеть баги в прошивке?

Цитата
укладываемые в EEPROM при выпуске, а идентификация версии (охват контрольными суммами в том числе) может быть только с этими самиыми настройками - вопрос о номере тогда становится более философским, но формально по идентификации эти версии разные

Так можно говорить только тогда, когда проект относительно не большой, код полностью отточен, вылизан и отлажен, де-факто в прошивке нет ни одного бага и не предвидится расширение функциональности... sad.gif

Надеюсь, что насчет последнего я ошибаюсь.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Apr 2 2007, 02:09
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Хотя не совсем по теме топика, но хранение серийных номеров и версий для меня очень интересна. Забавно, но разные люди приходят к одним и тем же решениям. Иногда по разным мотивам. smile.gif

Я пока не остановился на конкретном способе и с любопытством слежу за вашим спором. smile.gif Я, как правило поступаю так как defunct. Версию проги всегда размещена во флэш.(Идёт в тексте программы) Даже когда она никак не выдаётся наружу. Серийный номер обычно размещаю в EEPROM. Ещё одна причина, кроме названных defunct - CRC код программы. Таким образом он не модифицируется.

Хотя я размещал и во флэш. А специальная программа сразу вставляла серийный номер прямо в HEX прошивку. При этом не требовалось ни перекомпиляции, ни задания конкретного адреса. Она искала строку "s/n #" (пересчитывалась и менялась также и CRC флэш). Таким образом на эту программу не влияла версия прошивки. Впоследствии я всётаки перешёл на EEPROM и занесение серийного номера с помощью внешней программы в готовое устр-во с помощью недокументированных команд.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Apr 2 2007, 09:45
Сообщение #22


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

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Я обычно размещаю серийник устройства во FLASH и зашивается он при прошивке бутлоадера. В "защищённой" - выделенной - области FLASH (обычно хватает одной станицы записи выше крыши) укладывается посредством бутлоадера CRC программы и флаг необходимости эту самую CRC проверять. Серийник прораммы, а также прочая текстовая инфа обычно генерируется с помощью асмовых макросов в специальный файл, который прилинковывается к программе автоматом. Программа знает только адрес, по которому должен быть номер девайса и он контрольной суммой программы не охватывается.
Цитата
Для хранения во флеш программу придеться перекомпилировать/перелинковывать столько раз сколько серийных номеров, плюс при обновлении прошивки S/N сотрется.

Как склеивать программу и прочая перед прошивкой в случае отсутствия загрузчика - маленький технический вопрос - HEX2BIN, склейка BIN, затем BIN2HEX.
У меня номера-то есть, а у поклонников EEPROM при использовании камней без EEPROM - полное отсутствие области определенияwink.gif))
Цитата
Если S/N нужны только начальнику транспортного цеха, тогда маркировать надо плату или корпус устройства.
Если вааще нужно получать удалённо и/или не раскрывая девайс инфу о нём, то серийники нужны. Так вот я утверждаю, что серийный номер девайса вписывается на производстве (например, даже, на заводике за тридевять земель), а не в программистской кандейке. Но при этом производству плевать где серийник девайса лежит - лишь бы было. А вот программисту не плевать, если ему кристалл дают, но говорят, что эту, эту и эту ячейки EEPROM трогать нельзя, да и вааще лучше не пользоваться этой самой EEPROM;))
Цитата
Причем тут настройки программы к версии прошивки? Вы никогда не добавляете новую функциональность? И никогда не случалось видеть баги в прошивке?
Как только способ идентификации программы учитывает уникальность по контрольной сумме, то при любом изменении содержимого, охватываемого этой самой контрольной суммой, появляется новая уникальная версия (со своей контрольной суммой). Если такое утверждение не принимается, то все сериализации - филькина грамота и нужны для очковтирательства.
Цитата
А специальная программа сразу вставляла серийный номер прямо в HEX прошивку. При этом не требовалось ни перекомпиляции, ни задания конкретного адреса. Она искала строку "s/n #" (пересчитывалась и менялась также и CRC флэш).

Спасибо за идею насчёт замены CRC - попробую обязательно.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th August 2025 - 08:18
Рейтинг@Mail.ru


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