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

aaarrr

Модератор
  • Постов

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

  • Победитель дней

    22

Весь контент aaarrr


  1. hash.c volatile const hash_type_t fw_hash = { 0 }; .sct: LR_IROM1 0x00000000 { ; load region size_region ER_IROM1 0x00000000 { ; load address = execution address *.o (NUC_INIT, +First) *(InRoot$$Sections) .ANY (+RO) hash.o (*, +Last) } RW_RAM1 +0 { ; RW_RAM1 start address is after ER_ROM1 .ANY (+RW +ZI) } } В программе считаем хеш от начала (Load...Base) до &fw_hash, сравниваем с fw_hash. Внешней утилитой перезаписываем последние sizeof(hash_type_t) байт прошивки.
  2. Да, .sct Можно, например, определить массив под хеш и средствами линкера закинуть его в конец загрузочного региона (+LAST).
  3. Вы правы, посмотрел сейчас - у меня в конце CRC дописывается, поэтому 0. А внутри только длина и номер сборки. Достаточно скрипт линкера поправить таким образом, чтобы в конце загрузочного региона оставалось пространство, достаточное для хранения хеша. И спокойно приклеивать его.
  4. Перетирает. Участвуют. План такой: - Резервируете поле в известном месте прошивки (не обязательно в векторах, просто так удобнее), пишете в него 0 - Считаете CRC прошивки, заменяете 0 на результат В прошивке считаете CRC подряд, убеждаетесь, что на выходе результат 0 В прошивке считаете CRC с нулевым содержимого поля, сравниваете с реальным.
  5. Не разместилось ли что аккурат по тому адресу, где ожидалась добавленная вручную КС.
  6. Если привыкли писать по пикселю во фреймбуфер, ничего не помешает реализовать тот же подход. Может, Гугл проплатил?
  7. Ничего не мешает сделать графику "в стиле бареметал" под линуксом.
  8. Не читайте. Многочисленные сказки о том, как все тормозит под Линуксом, от тех, кто этого Линукса и не запускал, несколько утомили. Кроме того, при воспроизведении 1080p процессор нужен примерно никак, только декодеру данные подбрасывать. По SDIO лучше подключить что-нибудь из серии AP62xx или клонов. Работать будет предсказуемо и на нормальной скорости. Под MangoPi MQ1RDW2 в свежем buildroot'е есть готовая конфигурация. Т.е. буквально достаточно написать make mangopi_mq1rdw2_defconfig && make и забрать готовый образ SD-карты.
  9. Скорее затирает после. Это легко проверить, если посмотреть содержимое map-файла.
  10. Так же, как в случае с флеш - просто по указателю. Хорошо. Как была добавлена контрольная сумма? Не получилось ли так, что линкер о ней не в курсе, и затирает её данными программы при старте?
  11. Тут способа не обозначено. Что передается в hashAddr?
  12. Месяцами точно работает. Неужели даже хоткеи не в ходу? Это элементарно быстрее, чем наматывать километры мышкой.
  13. Не сложнее - без преувеличения, собаку съел в свое время на этой ниве, что весьма помогает при работе в т.ч. и с линуксовыми потрохами. Честно говоря, редко приходится в рабочем процессе писать в командной строке что-то длиннее "make". У меня стабильно работает браузер в киоске. И не только у меня - он и в космос летал, что уж. Именно. А никсовая среда для программизмов удобна как никакая другая.
  14. Регион загрузки - это место, откуда берутся данные (в т.ч. и код) для раскидывания по регионам исполнения перед стартом программы. Как правило, для флешового МК код остается на месте (адрес загрузки = адресу исполнения), а данные копируются/распаковываются в ОЗУ.
  15. Сэкономил бы месяцы и годы жизни, потраченные на решение вопросов типа "как растеризовать TTF", "как воспроизвести видео", "как забороть xyzHCI", "как окучить неизвестный контроллер тача", "как быть с MIPI экранами" и т.д. и т.п. Жизнь коротка )
  16. Адрес региона загрузки LR_IROM1. А уж ОЗУ там или что еще - откуда линкеру знать? (это не функция)
  17. Нет: какая может быть опасность, если только не рушить данные и контекст?
  18. https://mcuoneclipse.com/2019/01/20/freertos-how-to-end-and-restart-the-scheduler/
  19. На всяких кортексах запустить поверх не проблема, достаточно снизить приоритет прерываний ОС до нужного уровня. Но всю синхронизацию между ОС и собственным кодом придется городить врукопашную.
×
×
  • Создать...