Jump to content

    

TOG

Участник*
  • Content Count

    349
  • Joined

  • Last visited

Community Reputation

0 Обычный

About TOG

  • Rank
    Местный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2867 profile views
  1. Ну должны же быть в природе микроконтроллеры с защищенным хранилищем ключей типа как в ATSHA204A. Подскажите если кто знает.
  2. Вопрос пока был чисто теоретический. Ищем способ как-то защитить девайс от клонирования
  3. Друзья, интересует теоретический вопрос: Вот имеем мы к примеру микроконтроллер STM32L051, как пишет производитель он имеет свой уникальный ID (UID 96 bit). Вот прошили мы этот микроконтроллер, защитили его 2-м уровнем и отдали китайцам на вскрытие нашей прошивки. Заплатили $10k. Прошивку они прочитают, это понятно. А смогут ли они прочитать ID микроконтроллера ?
  4. Друзья, есть только hex файл и нужно пройтись отладчиком по некоторым участкам кода. Можно ли в Keil uVision это как-то сделать ? Микроконтроллер ADuc831.
  5. Все, разобрались. Так же через UART подключаться можно к камню в режиме отладки.
  6. Друзья, имеется древнее устройство на микроконтроллере ADuC831, даташит на микроконтроллер ADuC831 сообщает, что у него имеется встроенный загрузчик и отладчик через UART. Загрузчик кода через UART освоили, с помощью ADI'шной программы WSD. Но как быть с отладкой ? Нигде никаких девайсов для отладки под ADuC831 найти не можем. В Keil uVision во вкладке Debug написано, что нужен некий ADI Monitor Driver, что это такое и где это взять ? Подскажите как отладку запустить ?
  7. Друзья, неделю боролись с ужасными глюками программы пока наконец не увеличили размер стека. Но как же узнать о таких проблемах заранее ? И чтобы не наугад ?
  8. Я пробовал много разных вариантов. Компилятор умеет обходить эту таблицу куда бы я ее не разместил, ну в самое начало 0x08000000 я ее понятно не ставил. Получается идет код, потом таблица, потом продолжение кода. Я где-то тут встречал тему, где обсуждалось, что дескать плохо если инициализированные переменные оказались ниже самой программы. Но почему это "плохо" я не понял. Там все куда более странно. Hard Fault возникает при чтении инициализированного массива(глобальная переменная). Читаю из функции. uint8_t dat[] = {1,2,3,4,5,6,7,8,9}; // глобальная переменная SimpleFunc(dat, 4, sig); void SimpleFunc(uint8_t* Buf1, signed int Vector1, uint32_t* Sig) { ... Dat2 = Buf1[Vector1 - 1]; // Тут возникает Hard Fault. Если эту строку закомментировать, то Hard Fault возникает дальше на строке if (Vector1 != 1) // тут тоже может возникнуть Hard Fault
  9. Друзья, имеется микроконтроллер STM32L051. Размер встроенного флэша у данного МК 64 кБ. нужно разместить во внутренней флэш памяти большой массив данных - 16 кБ. Я размещаю этот массив ближе к началу флэш памяти, а именно по смещению 2кБ от начала, пробовал и в конце флэш памяти размещать. У меня такое чувство, что я что-то делаю не так. Хотя компилятор ошибок не выдает и все вроде работает, но периодически возникают какие-то чертовски странные сбои - программа может буквально на ровном месте улететь в Hard Fault. #define PageSize 128 #define zDATA_addr 0x08000000 + 16 * PageSize static const uint8_t zDATA[] __attribute__((at(zDATA_addr)))= { 0x40, 0x32, 0xD2, 0x60, 0xF9, 0x23, 0x71, 0x11, 0x06, 0x6E, 0x75, 0x86, 0x3F, 0x7C, 0x76, 0x77, 0x98, 0x03, 0x74, 0x77, 0x37, 0x44, 0x5C, 0x12, 0x23, 0xC4, 0xA3, 0x1B, 0x15, 0x5B, 0x48, 0x35, 0x4B, 0x27, 0xDB, 0x63, 0xA1, 0x73, 0x34, 0x5A, 0x92, 0x39, 0x64, 0x34, 0x23, 0x21, 0x5E, 0x4E, 0x90, 0x91, 0x3A, 0x3C, 0x13, 0x78, 0xAB, 0x06, 0xDF, 0x3B, 0x68, 0x14, 0x65, 0x26, 0x53, 0x42, // 1000 строк по 16 байт... 0x50, 0x51, 0x6A, 0x2C, 0x33, 0x58, 0x6B, 0x76, 0xD3, 0x4B, 0x68, 0x74, 0x75, 0x36, 0x72, 0x30};
  10. Понял, у меня в настройках была галочка "Verify code download" и Keil проверял целостность программы во флеше.
  11. Друзья не могу понять, записываю программу в микроконтроллер STM32L051K8, далее программа стирает одну из последних страниц флэш памяти в которой расположен массив данных и после этого я не могу подключиться в Keil в режиме отладки, выдает "Cannot access target". Через ST-Link Utility все подключается, видно, что страница стерта, но через отладчик Keil подключиться невозможно, только прошивать по новой и после прогона программы опять получаем "Cannot access target". static FLASH_EraseInitTypeDef EraseInitStruct; uint32_t PAGEError = 0; HAL_FLASH_Unlock(); // разлочиваем EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.PageAddress = 0x08008000; // адрес с которого стирать EraseInitStruct.NbPages = 1; // одну страницу 128 байт HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError); // стираем HAL_FLASH_Lock(); // закрываем
  12. Верно, но трассировать в мусорном коде это тот еще гемор.
  13. да, но этот код будет невозможно анализировать , я уж не говорю про его декомпиляцию в нечто си-подобное. Насколько я помню Exe-cryptor перемешивает машинный код с "мусорным" кодом, заменяет стандартные конструкции создаваемые компилятором на свои (очень сильно замороченные). И если в таком коде будет проверка серийного номера микроконтроллера, то ее найти будет очень не просто. Тоже вариант. Только отправив на тот свет пару девайсов, китайцы наверняка сообразят, что нельзя отсоединять батарейку.
  14. Друзья, давным давно в журнале КиТ видел статью про ручной установщик smd микросхем, совсем простой и соответственно не дорогой. Сейчас по запросу "pick and place" вижу только автоматические установщики. Может кто знает где посмотреть ручной установщик.