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

 
 
 
Reply to this topicStart new topic
> STM32F051C8T6 96 битный уникальный ID
nanorobot
сообщение May 30 2018, 16:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 29-02-08
Пользователь №: 35 503



Считываю UID процессора следующим способом

CODE
uint32_t id[3];
const uint32_t* STM32_UID = (uint32_t*)0x1FFFF7AC;
id[0] = STM32_UID[0];
id[1] = STM32_UID[1];
id[2] = STM32_UID[2];

константа 0x1FFFF7AC из документации. получаю id[2] всегда равно 0. id[1] одинаково для всех чипов(4 штуки) и равно 0х4136570A. И лишь id[0] слегка отличаются, причем большая
часть битов равна 0. Например 0х00350043, 0х00310043, 0х00360043б 0х00220043 ... Я что то делаю не так? Больше всего смущает компонента равная нулю...

Сообщение отредактировал nanorobot - May 30 2018, 16:58
Go to the top of the page
 
+Quote Post
scifi
сообщение May 30 2018, 17:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 919
Регистрация: 7-02-07
Пользователь №: 25 136



В мануале сказано: id[0] - это X и Y координаты чипа на пластине, id[1] - номер пластины в партии и номер партии (в кодировке ASCII), id[2] - продолжение номера партии (в кодировке ASCII). Не оч. понятно, что значит "в кодировке ASCII" (пишите им письма), но вроде бы ничего особо страшного не видно.
Go to the top of the page
 
+Quote Post
adnega
сообщение May 30 2018, 17:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 608
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(nanorobot @ May 30 2018, 19:55) *
Я что то делаю не так? Больше всего смущает компонента равная нулю...

ID[0] = 0х00350043, 0х00310043, 0х00360043, 0х00220043 очень похожи на BCD-значения координат чипов на подложке.
ID[1] = 0х(41)(36)(57).0A = A6W.10 - очень похоже на ACSII-имя партии и номер подложки в партии.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение May 30 2018, 18:22
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(adnega @ May 30 2018, 22:35) *
ID[0] = 0х00350043, 0х00310043, 0х00360043, 0х00220043 очень похожи на BCD-значения координат чипов на подложке.
ID[1] = 0х(41)(36)(57).0A = A6W.10 - очень похоже на ACSII-имя партии и номер подложки в партии.

ТО есть уникальность есть или ее нет? X и Y могут совпасть, а id[2] == 0 ?
Go to the top of the page
 
+Quote Post
adnega
сообщение May 30 2018, 18:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 608
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(nanorobot @ May 30 2018, 21:22) *
ТО есть уникальность есть или ее нет? X и Y могут совпасть, а id[2] == 0 ?

У вас все МК с одной пластины. Отличаются X и Y.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 30 2018, 18:37
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 919
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(nanorobot @ May 30 2018, 21:22) *
ТО есть уникальность есть или ее нет?

Уникальность есть. Во всяком случае, заявленный процесс это гарантирует. Ну а дальше возможен "человечески фактор", контрафакт и т.д., но это другая история.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение May 30 2018, 19:36
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(scifi @ May 30 2018, 23:37) *
Уникальность есть. Во всяком случае, заявленный процесс это гарантирует. Ну а дальше возможен "человечески фактор", контрафакт и т.д., но это другая история.


согласно последним данным id[2] у всех моих четырех чипов тоже одинаковый и равен 0x20323336
Go to the top of the page
 
+Quote Post
Arlleex
сообщение May 30 2018, 20:04
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 306
Регистрация: 12-11-11
Пользователь №: 68 264



Вот мой F429. Это я к тому, что нулей там нет. Но это, видимо, у Вас нормально, мне кажется. Ну нули и нули, что тут такого.


Сообщение отредактировал Arlleex - May 30 2018, 20:11
Go to the top of the page
 
+Quote Post
nanorobot
сообщение May 30 2018, 20:25
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(Arlleex @ May 31 2018, 01:04) *
Вот мой F429. Это я к тому, что нулей там нет. Но это, видимо, у Вас нормально, мне кажется. Ну нули и нули, что тут такого.

в предыдущем сообщении я уже казал что не нули., а нечто очень пожее на Ваш случай. Нули были из за высокого уровня оптимищзации, компилятор просто отменял считывание третьего слова UID.

Сообщение отредактировал nanorobot - May 30 2018, 20:27
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 30 2018, 20:31
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 535
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(nanorobot @ May 30 2018, 23:25) *
Нули были из за высокого уровня оптимищзации

Все же не из-за оптимизации:
Цитата
volatile const uint32_t* STM32_UID = (uint32_t*)0x1FFFF7AC;
Go to the top of the page
 
+Quote Post
scifi
сообщение May 30 2018, 20:45
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 919
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(nanorobot @ May 30 2018, 23:25) *
в предыдущем сообщении я уже казал что не нули., а нечто очень пожее на Ваш случай. Нули были из за высокого уровня оптимищзации, компилятор просто отменял считывание третьего слова UID.

Семён Семёныч! Ну и да, товарищи уже намекнули, что volatile здесь более, чем уместен.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 31 2018, 04:25
Сообщение #12


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

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



С чего это вдруг компилятор отказался читать non-volatile переменную?
Go to the top of the page
 
+Quote Post
adnega
сообщение May 31 2018, 05:01
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 608
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(ViKo @ May 31 2018, 07:25) *
С чего это вдруг компилятор отказался читать non-volatile переменную?

Он не отказывается ее читать, просто иногда он считает, что имеет полное представление о ее содержимом на стадии компиляции
и выкидывает целые куски кода из соображений оптимизации. Однажды включил LTO и многое перестало читаться верно,
дикие "volatile const" для некоторых данных пришлось с умом дописывать. Для себя вывел правило, если в переменную заносит
значение что-то в обход компилятора, то volatile поможет.
Go to the top of the page
 
+Quote Post
nanorobot
сообщение Jun 1 2018, 00:30
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 29-02-08
Пользователь №: 35 503



Цитата(adnega @ May 31 2018, 10:01) *
Он не отказывается ее читать, просто иногда он считает, что имеет полное представление о ее содержимом на стадии компиляции
и выкидывает целые куски кода из соображений оптимизации. Однажды включил LTO и многое перестало читаться верно,
дикие "volatile const" для некоторых данных пришлось с умом дописывать. Для себя вывел правило, если в переменную заносит
значение что-то в обход компилятора, то volatile поможет.

В моем случае, видимо, причина была в том, что данная переменная после получения значения, нигде не использовалась.
Поэтому компилятор посчитал себя вправе ее не вычислять...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2018 - 11:58
Рейтинг@Mail.ru


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