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

 
 
> Сохранить серийный номер в памяти.
Jenya7
сообщение Jan 29 2015, 07:28
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Мне нужно сохранить серийный номер в памяти.
В data блоке я понятно не могу. В code блоке тоже - данные потеряются при перепрошивке. Но в code блоке имеется SRAM сектор который как мне кажется non-volatile. Я прилепил картинку с памятью. Что вы посоветуете?

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 25)
Сергей Борщ
сообщение Jan 29 2015, 07:51
Сообщение #2


Гуру
******

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



Цитата(Jenya7 @ Jan 29 2015, 09:28) *
В data блоке я понятно не могу. В code блоке тоже - данные потеряются при перепрошивке.
При перепрошивке чем? Если для перепрошивки используется свой загрузчик, то серийный номер может располагаться в том же секторе и быть защищенным от записи вместе с загрузчиком. Любая *RAM хранит данные только пока есть питание.


--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Jan 29 2015, 08:04
Сообщение #3


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Jan 29 2015, 12:51) *
При перепрошивке чем? Если для перепрошивки используется свой загрузчик, то серийный номер может располагаться в том же секторе и быть защищенным от записи вместе с загрузчиком. Любая *RAM хранит данные только пока есть питание.

а как вставить серийник в hex файл?
я прошиваю утилитой SEGGER J-FLASH ARM.

Сообщение отредактировал Jenya7 - Jan 29 2015, 08:12
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 29 2015, 08:25
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Размышляю над тем же. Пока выдаю уникальный номер микронтроллера (32 бита из 96), но эти цифры во-первых, громадные (даже старшие биты не нулевые, не знаю, как они свой номер генерируют), во вторых, не совпадают с номером на задней панели прибора.
У меня есть внешняя SPI-flash память, могу в нее записывать при настройке-регулировке, с помощью настроечных функций, недоступных пользователю. Также можно и внутреннюю память программировать, только задать номер нужно.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 29 2015, 08:35
Сообщение #5


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(ViKo @ Jan 29 2015, 13:25) *
Размышляю над тем же. Пока выдаю уникальный номер микронтроллера (32 бита из 96), но эти цифры во-первых, громадные (даже старшие биты не нулевые, не знаю, как они свой номер генерируют), во вторых, не совпадают с номером на задней панели прибора.
У меня есть внешняя SPI-flash память, могу в нее записывать при настройке-регулировке, с помощью настроечных функций, недоступных пользователю. Также можно и внутреннюю память программировать, только задать номер нужно.

я прошиваю утилитой SEGGER J-FLASH ARM. там есть возможность указать start address и end address. может можно начать не с нулевого адреса а на свободное место прошить серийник?

скажем я начинаю програмировать не с первого сектора а со второго. а в первый я записываю серийник. я понимаю что теряется 512 байт но что делать. селяви.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 29 2015, 08:38
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Утилита srecord вам в помощь.
И прошивайте чем хотите.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
arhiv6
сообщение Jan 29 2015, 08:38
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 633
Регистрация: 21-05-10
Из: Томск
Пользователь №: 57 423



Jenya7, да, можно так делать. Единственный минус - для записи участок памяти надо стереть, стирается она секторами по 4кб. Например, можно использовать последний сектор flash хранения номера. Подробнее тут.

Сообщение отредактировал arhiv6 - Jan 29 2015, 08:40


--------------------
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Jan 29 2015, 08:52
Сообщение #8


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(demiurg_spb @ Jan 29 2015, 13:38) *
Утилита srecord вам в помощь.
И прошивайте чем хотите.

что то не нашел такую.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 29 2015, 08:52
Сообщение #9


Гуру
******

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



Цитата(Jenya7 @ Jan 29 2015, 10:04) *
а как вставить серийник в hex файл?
Можно использовать srecord. Да в конце концов вы же программист - напишите простую консольную программу, которая считывает hex, добавляет в него серийный номер и записывает обратно.


--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Jan 29 2015, 08:52
Сообщение #10


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(arhiv6 @ Jan 29 2015, 13:38) *
Jenya7, да, можно так делать. Единственный минус - для записи участок памяти надо стереть, стирается она секторами по 4кб. Например, можно использовать последний сектор flash хранения номера. Подробнее тут.

проблема в том что запись во флэш нужно будет разместить в коде. и на каждом рестарте будет писаться серийник во флэш.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 29 2015, 08:54
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Осенило. Недавно обсуждалось, как с защитой STM32 работать. Там же есть еще OTP память. И в Кейле для нее свой алгоритм программирования. Осталось только задать серийный номер. Каждый раз компилировать проект... Не сложно, компилируются только измененные файлы.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 29 2015, 08:56
Сообщение #12


Гуру
******

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



Цитата(Jenya7 @ Jan 29 2015, 10:52) *
что то не нашел такую.
Как вам это удается???


Прикрепленное изображение



--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Jan 29 2015, 08:57
Сообщение #13


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Jan 29 2015, 13:52) *
Можно использовать srecord. Да в конце концов вы же программист - напишите простую консольную программу, которая считывает hex, добавляет в него серийный номер и записывает обратно.

когда то давно мы писали такую утилиту, еще на делфи4. но это было давно я все забыл, сейчас начинать вникать в hex формат, парсить его...лучше уж srecord вопрос где его есть? sm.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 29 2015, 08:59
Сообщение #14


Гуру
******

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



Цитата(ViKo @ Jan 29 2015, 10:54) *
Там же есть еще OTP память.
"Если контроллер не указан - значит AVR STM32"? wink.gif У автора, судя по краю надписи на снимке экрана, какой-то другой.


--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Jan 29 2015, 09:02
Сообщение #15


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Jan 29 2015, 13:56) *
Как вам это удается???


Прикрепленное изображение

это у меня гугл заглючил. sm.gif


Цитата(Сергей Борщ @ Jan 29 2015, 13:59) *
"Если контроллер не указан - значит AVR STM32"? wink.gif У автора, судя по краю надписи на снимке экрана, какой-то другой.

у меня EFM32TG842 - всю кровь мне попортил
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 29 2015, 09:08
Сообщение #16


Гуру
******

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



Кстати, на всякий случай, этот пример вставляет 2-байтовый серийный номер 1234 в файл firmware.hex начианая с адреса 0x08000FFE:
Код
srec_cat -address-length=4 '(' firmware.hex -intel -exclude 0x08000FFE 0x08001000 ')' -generate 0x08000FFE 0x08001000 -leconstant 1234 2 -o firmware.hex -intel




--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Jan 29 2015, 09:13
Сообщение #17


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Jan 29 2015, 14:08) *
Кстати, на всякий случай, этот пример вставляет 2-байтовый серийный номер 1234 в файл firmware.hex начианая с адреса 0x08000FFE:
Код
srec_cat -address-length=4 '(' firmware.hex -intel -exclude 0x08000FFE 0x08001000 ')' -generate 0x08000FFE 0x08001000 -leconstant 1234 2 -o firmware.hex -intel

большое спасибо. я думаю это именно то что нужно
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 29 2015, 09:19
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Сергей Борщ @ Jan 29 2015, 11:59) *
У автора, судя по краю надписи на снимке экрана, какой-то другой.

Ага.
А для себя только что нашел в ST-Link Utility
Цитата
When the Memory data zone displays device memory contents, any modification is
automatically applied to the chip. You can modify user Flash memory, RAM memory and
peripherals registers.
For the STM32 F2 and STM32 F4 devices, you can modify the OTP area directly from the
memory data zone.

А еще есть STM32 ST-LINK Utility command line interface (CLI), но что-то пока не получается с ним... пока не время.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 1 2015, 13:04
Сообщение #19


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



вообщем решили так - на производстве будут зашивать серийник в свободный флеш а я по этому адресу буду читать.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Feb 9 2015, 06:26
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



У ST есть программа stvp
Она позволяет при программировании записывать серийник по заданному адресу, автоматически его инкрементировать при каждой прошивке и т.д.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Feb 9 2015, 09:22
Сообщение #21


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



У каждого камня от STM есть свой уникальный серийный номер прошитый на заводе.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 9 2015, 09:32
Сообщение #22


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Vasily_ @ Feb 9 2015, 12:22) *
У каждого камня от STM есть свой уникальный серийный номер прошитый на заводе.


дык автор указал что, у него EFM

и зачем советуют Srecord если JFlash сам умеет ?
Прикрепленное изображение




--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 9 2015, 11:54
Сообщение #23


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(megajohn @ Feb 9 2015, 12:32) *
и зачем советуют Srecord если JFlash сам умеет ?
Каждый кулик своё болото хвалит...
Да и апологетам GNU не с руки советовать всякие "шняги".
Другое деле консоль: make, srecord, openocd, avrdude...
Повторюсь, инструментарий это дело вкуса, ну и ещё, наверное, показатель профессионализма.
Зачем изучать всякие разные тулзы, когда можно изучить хорошо что-то одно и применять это для различных платформ и на различных платформах, что тоже немаловажно.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 9 2015, 12:46
Сообщение #24


Гуру
******

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



Цитата(megajohn @ Feb 9 2015, 11:32) *
зачем советуют Srecord если JFlash сам умеет ?
Если бы не советовали - вопрошавший две недели ждал бы ответа про JFlash. Не часто пользователи JFlash заходят sm.gif


--------------------
На любой вопрос даю любой ответ
"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
Jenya7
сообщение Feb 9 2015, 16:15
Сообщение #25


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Сергей Борщ @ Feb 9 2015, 18:46) *
Если бы не советовали - вопрошавший две недели ждал бы ответа про JFlash. Не часто пользователи JFlash заходят sm.gif

он у меня програмировать не хочет - просить лайсенс. sad.gif
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение Feb 9 2015, 16:38
Сообщение #26


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Jenya7 @ Feb 9 2015, 11:15) *
он у меня програмировать не хочет - просить лайсенс. sad.gif

У меня на него лайсенса нет, но коммандная строка работает.
Не знаю, есть ли там сериал.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

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

 


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


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