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

aaarrr

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

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

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

    19

aaarrr стал победителем дня 29 ноября 2023

aaarrr имел наиболее популярный контент!

Репутация

56 Очень хороший

Контакты

  • Сайт
    Array
  • ICQ
    Array

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

17 528 просмотров профиля
  1. Угу. Немного не так надо было: LR_IROM1 0x00000000 { ; load region size_region ER_IROM1 0x00000000 { ; load address = execution address *.o (NUC_INIT, +First) *(InRoot$$Sections) .ANY (+RO) } RW_RAM1 +0 { ; RW_RAM1 start address is after ER_ROM1 (было + 0 в оригинале) .ANY (+RW +ZI) } ER_IROM2 +0 { hash.o (*, +Last) } } Тут уже и +Last не особо нужен, но пусть будет.
  2. Может, но объявлять нужно именно как volatile const - это важно. Да, к концу.
  3. Его не просто так объявили, это единственный объект в файле hash.c; далее hash.c превратится после компиляции в hash.o, содержимое которого будет расположено в конце загрузочного региона (hash.o (*, +Last)). Можно и не городить отдельный файл, тогда нужно поместить переменную в отдельную секцию через #pragma arm section с соответствующими поправками в .sct
  4. 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) байт прошивки.
  5. Да, .sct Можно, например, определить массив под хеш и средствами линкера закинуть его в конец загрузочного региона (+LAST).
  6. Вы правы, посмотрел сейчас - у меня в конце CRC дописывается, поэтому 0. А внутри только длина и номер сборки. Достаточно скрипт линкера поправить таким образом, чтобы в конце загрузочного региона оставалось пространство, достаточное для хранения хеша. И спокойно приклеивать его.
  7. Перетирает. Участвуют. План такой: - Резервируете поле в известном месте прошивки (не обязательно в векторах, просто так удобнее), пишете в него 0 - Считаете CRC прошивки, заменяете 0 на результат В прошивке считаете CRC подряд, убеждаетесь, что на выходе результат 0 В прошивке считаете CRC с нулевым содержимого поля, сравниваете с реальным.
  8. Не разместилось ли что аккурат по тому адресу, где ожидалась добавленная вручную КС.
  9. Если привыкли писать по пикселю во фреймбуфер, ничего не помешает реализовать тот же подход. Может, Гугл проплатил?
  10. Ничего не мешает сделать графику "в стиле бареметал" под линуксом.
×
×
  • Создать...