Jump to content

    

TOG

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

    354
  • Joined

  • Last visited

Everything posted by TOG


  1. Что за эфемерные биты во Flash ? Можно узнать подробности ?
  2. Друзья, изучаю одно устройство, оно передает в радиоканал пакеты данных. Исходные данные 8 бит, в радиоканал передается пакет 32 бит. 13 бит - фиксированная маска ( обозначил ее "#" ) Сами биты информации 8 штук (обозначил их "1,2,3,4,5,6,7,8") И XOR суммы: A = XOR (8,7,6,5,4,1) B= XOR (7,6,5,4,3) C = XOR (8,7,3,2,1) D = XOR (7,6,2,1) E = XOR (8,7,4) F = XOR (8,5,4,3,1) G = XOR (8,6,5,3,2,1) H = XOR (5,3,2) I = XOR (8,7,6,5,2) J = XOR (7,5,4,2,1) K = XOR (6,4,3,1) Пакет (32-бит) = A B C D E F G # H I 8 7 6 5 # # 1 # # # # # J K # # # # # 4 3 2 Мне вот интересно, эти многократные XOR-суммы могут служить для коррекции ошибок или это только исключительно пригодно для проверки на достоверность данных ?
  3. Друзья, помогите пожалуйста решить один ребус: есть AWG генератор сигналов Siglent SDG5082. Через несколько лет после покупки у него появился глюк: при любой попытке задействовать первый канал он намертво зависал. Пользовались вторым каналом. Потом я подумал, что может быть проблема в прошивке, т.к. вместо серийного номера отображался какой-то мусор. Обновил прошивку. Все заработало, оба канала, все прекрасно. Но через пару дней опять генератор стал зависать при задействовании первого канала. И при очередной перезагрузке он так и остался висеть на заставке (Splash screen). Больше он не загружался, отображает только заставку. В интернете пишут, что повреждение прошивки это очень распространенный дефект на данных генераторах, к сожалению никаких вариантов восстановления прошивки для данной модели производитель не предусмотрел. Поэтому я выпаял чип флэш памяти Spansion S29GL064N90TFI04 и скачал прошивку(в прикрепленных файлах: Firmware original.bin). Вижу такие области: 1. 0x0000 - 0xDBD4 (Видимо распаковщик) 2. 0x0DBD5 - 0xA44B5 (возможно упакованная прошивка для Blackfin'a) 3. 0x100000 - 0x2FFFFF (FPGA DATA) 4. 0x300000 - 0x30FFFF (FOREVER DATA, этой части нет в прошивках распространяемых через сайт производителя) 5. 0x310000 - 0x34FFFF (FOREVER DATA, видимо продублирована для надежности) 6. 0x350000 - 0x7FFFFF (графика, картинки) На плате установлен процессор ADSP BF531 Blackfin, FPGA Lattice LCMXO640C, RAM, FLASH. Если отображается Splash Screen, то какую часть прошивки можно считать исправной ? И на кой там стоит FPGA, на ней собран процессор с линуксом что-ли (судя по времени загрузки (около минуты), когда он еще работал) ? Тот файл обновления прошивки, который производитель распространяет через свой сайт, немного заXORен и требует неких манипуляций. Мне бы хотя бы узнать на какую область обратить больше внимания. SDG5082 Firmware update from internet.zip SDG5082 Firmware original.zip
  4. Ну должны же быть в природе микроконтроллеры с защищенным хранилищем ключей типа как в ATSHA204A. Подскажите если кто знает.
  5. Вопрос пока был чисто теоретический. Ищем способ как-то защитить девайс от клонирования
  6. Друзья, интересует теоретический вопрос: Вот имеем мы к примеру микроконтроллер STM32L051, как пишет производитель он имеет свой уникальный ID (UID 96 bit). Вот прошили мы этот микроконтроллер, защитили его 2-м уровнем и отдали китайцам на вскрытие нашей прошивки. Заплатили $10k. Прошивку они прочитают, это понятно. А смогут ли они прочитать ID микроконтроллера ?
  7. Друзья, есть только hex файл и нужно пройтись отладчиком по некоторым участкам кода. Можно ли в Keil uVision это как-то сделать ? Микроконтроллер ADuc831.
  8. Все, разобрались. Так же через UART подключаться можно к камню в режиме отладки.
  9. Друзья, имеется древнее устройство на микроконтроллере ADuC831, даташит на микроконтроллер ADuC831 сообщает, что у него имеется встроенный загрузчик и отладчик через UART. Загрузчик кода через UART освоили, с помощью ADI'шной программы WSD. Но как быть с отладкой ? Нигде никаких девайсов для отладки под ADuC831 найти не можем. В Keil uVision во вкладке Debug написано, что нужен некий ADI Monitor Driver, что это такое и где это взять ? Подскажите как отладку запустить ?
  10. Друзья, неделю боролись с ужасными глюками программы пока наконец не увеличили размер стека. Но как же узнать о таких проблемах заранее ? И чтобы не наугад ?
  11. Я пробовал много разных вариантов. Компилятор умеет обходить эту таблицу куда бы я ее не разместил, ну в самое начало 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
  12. Друзья, имеется микроконтроллер 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};
  13. Понял, у меня в настройках была галочка "Verify code download" и Keil проверял целостность программы во флеше.
  14. Друзья не могу понять, записываю программу в микроконтроллер 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(); // закрываем
  15. Верно, но трассировать в мусорном коде это тот еще гемор.
  16. да, но этот код будет невозможно анализировать , я уж не говорю про его декомпиляцию в нечто си-подобное. Насколько я помню Exe-cryptor перемешивает машинный код с "мусорным" кодом, заменяет стандартные конструкции создаваемые компилятором на свои (очень сильно замороченные). И если в таком коде будет проверка серийного номера микроконтроллера, то ее найти будет очень не просто. Тоже вариант. Только отправив на тот свет пару девайсов, китайцы наверняка сообразят, что нельзя отсоединять батарейку.
  17. Друзья, давным давно в журнале КиТ видел статью про ручной установщик smd микросхем, совсем простой и соответственно не дорогой. Сейчас по запросу "pick and place" вижу только автоматические установщики. Может кто знает где посмотреть ручной установщик.
  18. Не моем ультразвуком. Уже знаем что при УЗ мойке именно этих чипов кол-во отказов в разы возрастает.
  19. Друзья, я так понимаю, что китайцы с легкостью вскрывают прошивки практически любых микроконтроллеров. Есть ли средства для защиты от дизассемблирования памяти программ ? Вот для windows, была (или есть) такая штука ExeCryptor, превращающая машинный код в адское месиво не пригодное для анализа.
  20. Крутой каталог ! Жаль под наш корпус у них нет сокета
  21. Нам бы какой нибудь сокет на испытательную плату установить, в сокет кладётся испытуемый чип и прижимается к контактам сокета. Покрутили в руках, если сигнал по всем 3-м осям акселерометра есть, можно считать, что чип живой. Потому-что огромное количество отказов это заклинившая одна ось-Х акселерометра. Технологию монтажа не меняли и вдруг брак попер аж 30%.
  22. Люди добрые, очень много попадается бракованных чипов LIS3DH(корпус LGA16 3x3мм). Как бы нам сделать входной контроль ? Может какие готовые приспособы есть на свете ?
  23. Друзья, вот смотрю я даташит на контроллер заряда литиевых батарей BQ40Z50 и есть там такой химический предохранитель (Chemical Fuse). Контроллер может пережечь его при необходимости. Нигде в инете не нашел таких химических предохранителей. Подскажите, может плохо искал. Или чем его заменить можно ?
  24. Товарищи, сейчас мы паяем по 4 платы с помощью такой вот ИК станции. Платы мелкие 40х20мм, запаивается 1 BGA чип. Прогрев очень не равномерный, много брака. Хотим купить печь оплавления припоя, чтобы по 20 плат за раз паять. Посоветуйте пожалуйста что-нибудь годное. (Темы по печкам почитал, смысл понятен - если нужно качество, то Ersa, если жалко денег, то Китай, но придется страдать).