Перейти к содержанию
    

TOG

Свой
  • Постов

    503
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о TOG

  • Звание
    Знающий
    Знающий

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

4 821 просмотр профиля
  1. Не так уж это и очевидно. Я немного поэкспериментировал с размещением RO-данных в прошивке. Например делаю размещение данных ближе к концу флэш памяти и вот как компилятор создает HEX-файл: :020000040801F1 :1068000004133443000000000000000000000000FD :020000040801F1 :106810000408010F0000000000000000000000006E :020000040801F1 :106820000429000000000000000000000000000036 :020000040801F1 :10683000A0D202F9A377C00000000000000000003F Хоть фактически данные размещаются непрерывно (0x08016800, 0x08016810, 0x08016820, 0x08016830), но компилятор дополнительно снабдил их все адресом сегмента 0x0801 (хоть сегмент и не меняется). А если разместить RO-данные ближе к началу флэш памяти, то HEX-файл представляет единый монолит: Вначале объявлен адрес сегмента и дальше все данные идут по порядку до самого конца.
  2. Товарищи, делаю бутлоадер и немного затупил с форматом HEX-файла. После первой строки с адресом сегмента (сегмент 0x1000 в данном примере), обязательно ли компилятор размещает данные в HEX-файле непрерывно в пределах одного сегмента памяти ? Тут в примере данные размещены непрерывно по адресам: 0x1000C200 (16 байт данных E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD) 0x1000C210 (16 байт данных FFFFF6F50EFE4B66F2FA0CFEF2F40EFE) 0x1000C220 (16 байт данных F04EF05FF06CF07DCA0050C2F086F097) 0x1000C230 (16 байт данных F04AF054BCF5204830592D02E018BB03) А мог бы он скажем после адреса 0x1000C210 вместо адреса 0x1000C220 поставить какой-то другой адрес(например 0x1000D000) ? Мало ли как там программист разместил RO-данные в программе. Или при появлении разрыва в данных в HEX-файле обязательно появится запись с объявлением сегмента (типа :020000021000EC) ? :020000021000EC :10C20000E0A5E6F6FDFFE0AEE00FE6FCFDFFE6FD93 :10C21000FFFFF6F50EFE4B66F2FA0CFEF2F40EFE90 :10C22000F04EF05FF06CF07DCA0050C2F086F097DF :10C23000F04AF054BCF5204830592D02E018BB03F9 :00000001FF
  3. Сделал. Почитал Джозефа Ю. Загрузил в стек нужные значения: 0xFFFFFFF9 (EXC_RETURN), 0x00000000 (R0), 0x00000000 (R1), 0x00000000 (R2), 0x00000000 (R3), 0x00000000 (R12), 0xFFFFFFFF (LR), AppAdr+1 (PC) (Адрес приложения), 0x010000000 (xPSR.ThreadMode = 1) и далее команда POP {PC} делает все остальное.
  4. Немного я затупил. Когда я делаю переход из обработчика прерывания в другое приложение, то флаг в "Interrupt Active Bit Register" остается висеть "Active". Получается, что я НЕ вышел из обработчика прерывания. И как результат, после перехода в другое приложение прерывание таймера не срабатывает, т.к. процессор думает, что мы из обработчика еще не вышли. Я не понимаю как процессор узнает, что мы выходим из обработчика прерывания ? Объясните пожалуйста на пальцах для тупого.
  5. Кто-нибудь уже успел поработать с Амуром ? Как ощущения ?
  6. Все получилось, jcxz ! Из прерывания таймера прекрасно все работает.
  7. Это я знаю. Бутлоадер делать умею. И по такому же принципу хотел запустить другое приложение. (Сброс тактирования, установка VTOR, MSP и переход на новый адрес). Как из под контроля FreeRTOS выбраться, ? вот вопрос.
  8. Надо запустить другое приложение. Типа как бутлоадер запускает основное приложение. PC меняется, VTOR тоже, а MSP не меняется(выше мне объяснили почему). Может из оси можно выйти ? Типа завершить работу, попасть снова в main и от туда уже передать управление другому приложению ?
  9. Товарищи, Проект на STM32H743, FreeRTOS. Ось похоже отслеживает состояние регистра MSP и из задачи не удается изменить содержимое MSP. Значение не меняется. (До запуска оси регистр MSP из программы меняется спокойно). Подскажите пожалуйста, что, где покрутить ?
  10. Еще есть методика с глитчем по питанию в момент когда встроенный бутлоадер проверяет ROP. У кого нибудь на "Rev. A" получилось ? Или ST эту прореху тоже исправили ?
  11. Уважаемые форумчане. Чисто из академического интереса, не корысти ради спрашиваю. Есть в интернете известные методики считывания прошивок из защищенных первым уровнем МК STM32F1xx. Через FPB очень лихо все получается. На ревизии Z прекрасно все считывается. Но в ревизии "A", ST исправили эту уязвимость и методика FPB не срабатывает. Может кто что подскажет ?
  12. На вебинаре сказали, что к концу 2024 года сделают вторую версию с 2 Мб флэш и 1 Мб оперативки.
  13. Если в следующей версии они сделают защиту прошивки, то может и зайдет.
  14. А как защитить прошивку от хацкеров смогли придумать ?
×
×
  • Создать...