|
|
  |
STM32F051C8T6 96 битный уникальный ID |
|
|
|
May 30 2018, 16:55
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 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
|
|
|
|
|
May 30 2018, 18:22
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 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 ?
|
|
|
|
|
May 30 2018, 19:36
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(scifi @ May 30 2018, 23:37)  Уникальность есть. Во всяком случае, заявленный процесс это гарантирует. Ну а дальше возможен "человечески фактор", контрафакт и т.д., но это другая история. согласно последним данным id[2] у всех моих четырех чипов тоже одинаковый и равен 0x20323336
|
|
|
|
|
May 30 2018, 20:25
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

|
Цитата(Arlleex @ May 31 2018, 01:04)  Вот мой F429. Это я к тому, что нулей там нет. Но это, видимо, у Вас нормально, мне кажется. Ну нули и нули, что тут такого.  в предыдущем сообщении я уже казал что не нули., а нечто очень пожее на Ваш случай. Нули были из за высокого уровня оптимищзации, компилятор просто отменял считывание третьего слова UID.
Сообщение отредактировал nanorobot - May 30 2018, 20:27
|
|
|
|
|
May 31 2018, 05:01
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(ViKo @ May 31 2018, 07:25)  С чего это вдруг компилятор отказался читать non-volatile переменную? Он не отказывается ее читать, просто иногда он считает, что имеет полное представление о ее содержимом на стадии компиляции и выкидывает целые куски кода из соображений оптимизации. Однажды включил LTO и многое перестало читаться верно, дикие "volatile const" для некоторых данных пришлось с умом дописывать. Для себя вывел правило, если в переменную заносит значение что-то в обход компилятора, то volatile поможет.
|
|
|
|
|
Jun 1 2018, 00:30
|
Местный
  
Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503

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