aaarrr
Модератор-
Постов
14 108 -
Зарегистрирован
-
Победитель дней
19
aaarrr стал победителем дня 29 ноября 2023
aaarrr имел наиболее популярный контент!
Репутация
56 Очень хорошийИнформация о aaarrr
- Сейчас Просмотр темы: Считывание кейлом старт прошивки и ее длину
-
Звание
Гуру
Контакты
-
Сайт
Array
-
ICQ
Array
Посетители профиля
-
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Поместили секции файла hash.c в конец региона загрузки. Это атрибуты для переменной, содержащей хеш. В этом случае не обязательно будет укладывать её в отдельный файл. В скрипте линкера: ER_IROM2 +0 { * (hash_section) } -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Угу. Немного не так надо было: 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 не особо нужен, но пусть будет. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Текст ошибки и map файл приведите. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Может, но объявлять нужно именно как volatile const - это важно. Да, к концу. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Его не просто так объявили, это единственный объект в файле hash.c; далее hash.c превратится после компиляции в hash.o, содержимое которого будет расположено в конце загрузочного региона (hash.o (*, +Last)). Можно и не городить отдельный файл, тогда нужно поместить переменную в отдельную секцию через #pragma arm section с соответствующими поправками в .sct -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
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) байт прошивки. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Да, .sct Можно, например, определить массив под хеш и средствами линкера закинуть его в конец загрузочного региона (+LAST). -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Вы правы, посмотрел сейчас - у меня в конце CRC дописывается, поэтому 0. А внутри только длина и номер сборки. Достаточно скрипт линкера поправить таким образом, чтобы в конце загрузочного региона оставалось пространство, достаточное для хранения хеша. И спокойно приклеивать его. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Перетирает. Участвуют. План такой: - Резервируете поле в известном месте прошивки (не обязательно в векторах, просто так удобнее), пишете в него 0 - Считаете CRC прошивки, заменяете 0 на результат В прошивке считаете CRC подряд, убеждаетесь, что на выходе результат 0 В прошивке считаете CRC с нулевым содержимого поля, сравниваете с реальным. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Не разместилось ли что аккурат по тому адресу, где ожидалась добавленная вручную КС. -
Нет, не тянет V3s 60.
-
И что, кто-то их отнимет?
-
Если привыкли писать по пикселю во фреймбуфер, ничего не помешает реализовать тот же подход. Может, Гугл проплатил?
-
В космосе без меня обошлось.
-
Ничего не мешает сделать графику "в стиле бареметал" под линуксом.