nanorobot 6 30 мая, 2018 Опубликовано 30 мая, 2018 (изменено) · Жалоба Считываю UID процессора следующим способом 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 ... Я что то делаю не так? Больше всего смущает компонента равная нулю... Изменено 30 мая, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба В мануале сказано: id[0] - это X и Y координаты чипа на пластине, id[1] - номер пластины в партии и номер партии (в кодировке ASCII), id[2] - продолжение номера партии (в кодировке ASCII). Не оч. понятно, что значит "в кодировке ASCII" (пишите им письма), но вроде бы ничего особо страшного не видно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Я что то делаю не так? Больше всего смущает компонента равная нулю... ID[0] = 0х00350043, 0х00310043, 0х00360043, 0х00220043 очень похожи на BCD-значения координат чипов на подложке. ID[1] = 0х(41)(36)(57).0A = A6W.10 - очень похоже на ACSII-имя партии и номер подложки в партии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба 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 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба ТО есть уникальность есть или ее нет? X и Y могут совпасть, а id[2] == 0 ? У вас все МК с одной пластины. Отличаются X и Y. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба ТО есть уникальность есть или ее нет? Уникальность есть. Во всяком случае, заявленный процесс это гарантирует. Ну а дальше возможен "человечески фактор", контрафакт и т.д., но это другая история. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Уникальность есть. Во всяком случае, заявленный процесс это гарантирует. Ну а дальше возможен "человечески фактор", контрафакт и т.д., но это другая история. согласно последним данным id[2] у всех моих четырех чипов тоже одинаковый и равен 0x20323336 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 30 мая, 2018 Опубликовано 30 мая, 2018 (изменено) · Жалоба Вот мой F429. Это я к тому, что нулей там нет. Но это, видимо, у Вас нормально, мне кажется. Ну нули и нули, что тут такого. Изменено 30 мая, 2018 пользователем Arlleex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 30 мая, 2018 Опубликовано 30 мая, 2018 (изменено) · Жалоба Вот мой F429. Это я к тому, что нулей там нет. Но это, видимо, у Вас нормально, мне кажется. Ну нули и нули, что тут такого. в предыдущем сообщении я уже казал что не нули., а нечто очень пожее на Ваш случай. Нули были из за высокого уровня оптимищзации, компилятор просто отменял считывание третьего слова UID. Изменено 30 мая, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба Нули были из за высокого уровня оптимищзации Все же не из-за оптимизации: volatile const uint32_t* STM32_UID = (uint32_t*)0x1FFFF7AC; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 30 мая, 2018 Опубликовано 30 мая, 2018 · Жалоба в предыдущем сообщении я уже казал что не нули., а нечто очень пожее на Ваш случай. Нули были из за высокого уровня оптимищзации, компилятор просто отменял считывание третьего слова UID. Семён Семёныч! Ну и да, товарищи уже намекнули, что volatile здесь более, чем уместен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба С чего это вдруг компилятор отказался читать non-volatile переменную? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 31 мая, 2018 Опубликовано 31 мая, 2018 · Жалоба С чего это вдруг компилятор отказался читать non-volatile переменную? Он не отказывается ее читать, просто иногда он считает, что имеет полное представление о ее содержимом на стадии компиляции и выкидывает целые куски кода из соображений оптимизации. Однажды включил LTO и многое перестало читаться верно, дикие "volatile const" для некоторых данных пришлось с умом дописывать. Для себя вывел правило, если в переменную заносит значение что-то в обход компилятора, то volatile поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 1 июня, 2018 Опубликовано 1 июня, 2018 · Жалоба Он не отказывается ее читать, просто иногда он считает, что имеет полное представление о ее содержимом на стадии компиляции и выкидывает целые куски кода из соображений оптимизации. Однажды включил LTO и многое перестало читаться верно, дикие "volatile const" для некоторых данных пришлось с умом дописывать. Для себя вывел правило, если в переменную заносит значение что-то в обход компилятора, то volatile поможет. В моем случае, видимо, причина была в том, что данная переменная после получения значения, нигде не использовалась. Поэтому компилятор посчитал себя вправе ее не вычислять... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться