aaarrr
Модератор-
Постов
14 112 -
Зарегистрирован
-
Победитель дней
19
aaarrr стал победителем дня 29 ноября 2023
aaarrr имел наиболее популярный контент!
Репутация
56 Очень хорошийИнформация о aaarrr
-
Звание
Гуру
Контакты
-
Сайт
Array
-
ICQ
Array
Посетители профиля
-
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
В том-то и дело, что компилятор считает его неизменным, и вправе провести оптимизацию на основании своих представлений о содержимом. Это тот случай, когда volatile нужен. Верните hash_section в конец региона загрузки. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Тогда нельзя будет пользоваться содержимым хеша из программы. -
Считывание кейлом старт прошивки и ее длину
aaarrr ответил Метценгерштейн тема в ARM
Потому что содержимое hash.o волшебным образом превратилось в RW. Смешно, но это оно на volatile так реагирует. -
Линия автоматического монтажа
aaarrr ответил inmatened тема в Пайка и монтаж
Хорошие реле, надо брать. -
Считывание кейлом старт прошивки и ее длину
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.