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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Сохранить серийный номер в памяти.
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
Сергей Борщ
сообщение 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

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:49
Рейтинг@Mail.ru


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