Метценгерштейн
Свой-
Постов
1 582 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Метценгерштейн
-
Звание
Профессионал
- День рождения 07.05.1978
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
Посетители профиля
6 166 просмотров профиля
-
да, в конце: вот он уже в мап файле разместился после RAM сектора Тогда в принципе, да, отлично. Еще раз спасибо всем!
-
не решает задачу. RO становится, но массив все равно не в конце бин файла расположен.
-
можете уточнить? в скатере? вот сейчас он такой: LR_IROM1 0x00000000 { ; load region size_region ER_IROM1 0x00000000 { ; load address = execution address *.o (NUC_INIT, +First) *(InRoot$$Sections) .ANY (+RO) *.o (hash_section, +last) } RW_RAM1 +0 { ; RW_RAM1 start address is after ER_ROM1 (было + 0 в оригинале) .ANY (+RW +ZI) } }
-
-
Почему? Кто знает что там хеш? Там конст массив. Он для программы не изменяется. Volatile не нужен программе
-
объявление выше привел. Оно const. Что делаем? убрать этот volatile?
-
надо так инициализировать: const volatile unsigned char fw_hash[32]; static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94}; 94- это '^' вот где этот массив. А хочу в самый низ. По идее, это последний массив. По мап файлу. Но почему RAM область лезет в бинарь прошивки?
-
пока вопрос простой- я разве не могу const массив сразу значениями инитить? Вроде можно Паддинг и добавляется. Уже есть. Это меня и смущает. Пока хочу в тексте редактора визуально видеть размещение массива. надо так инициализировать: const volatile unsigned char fw_hash[32]; static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)) = {94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94}; 94- это '^' вот где этот массив. А хочу в самый низ.
-
const volatile unsigned char fw_hash[32] = {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45}; static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)); Как инициализировать чем-то этот конст массив? давайте его '-' заинитим, покажу конец прошивального бинарника, увидим, что эти черточки не в самом конце файла будут
-
const volatile unsigned char fw_hash[32]; static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)); это без обрамления в структуру. И мап: 0x0001dff4 0x0001dff4 0x00000030 Data RO 1202 Region$$Table anon$$obj.o 0x0001e024 0x0001e024 0x00000020 Data RW 683 hash_section hash.o Execution Region RW_RAM1 (Exec base: 0x0001e044, Load base: 0x0001e044, Size: 0x00075014, Max: 0xffffffff, ABSOLUTE, COMPRESSED[0x0000016c]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x0001e044 COMPRESSED 0x00000018 Data RW 3 .data heap_2.o 0x0001e05c COMPRESSED 0x00000004 Data RW 55 .data port.o к 0x0001e024 прибавить размер 0x20- нашего массива, как раз получаемначало 0x0001e044 Другми словами, работает. Спасибо, парни! В принципе, если рекомендаций нет больше, то все) с прошивкой не то все равно еще. Ее размер не заканчивается на 0x0001e044, а размер прошивки 0x0001E1B0. и последняя строчка бинарника прошивки Я к тому, что в конец разместили массив, но он почти в конце, не в самом.
-
что-то на ровном месте static struct hash_type_t const volatile fw_hash __attribute__((section("hash_section"), used)); это не испорт же итог? const volatile unsigned char fw_hash[32]; static unsigned char const volatile fw_hash[32] __attribute__((section("hash_section"), used)); не оборачивая в структуру, т.о. можно использовать тоже?
-
Все, понял. Делаю отдельный файл, там volatile const unsigned char fw_hash[32] = { 0 }; и скатер добавляю ER_IROM2 +0 { hash.o (*, +Last) } надежно и понятно. Спасибо. Отпишусь если что вдруг пойдет не так ) 0x0001df5b 0x0001df5b 0x00000001 PAD 0x0001df5c 0x0001df5c 0x00000095 Data RO 434 .conststring support.o 0x0001dff1 0x0001dff1 0x00000003 PAD 0x0001dff4 0x0001dff4 0x00000040 Data RO 1200 Region$$Table anon$$obj.o Execution Region RW_RAM1 (Exec base: 0x0001e034, Load base: 0x0001e034, Size: 0x00075024, Max: 0xffffffff, ABSOLUTE, COMPRESSED[0x00000170]) Exec Addr Load Addr Size Type Attr Idx E Section Name Object 0x0001e034 COMPRESSED 0x00000018 Data RW 3 .data heap_2.o 0x0001e04c COMPRESSED 0x00000004 Data RW 55 .data port.o что-то не пояился в мапе наш hash.o файл может не сработала строчка в скатере? Может пойти по пути, что Arlleex предложил? Или не знаю
-
вот пока массив в файле hash.c volatile const unsigned char fw_hash[32] = { 0 }; Вы предлагаете как его дополнить? hash_type_t const volatile fw_hash __attribute__((section(hash_section), used)); это куда дописать? Дико извиняюсь за свою безграмотность, не сталкивался никогда с этими скатерами и секциями. А сам скаттер оставить как коллега aaarrr предложил? это что за галка?
-
так скомпилировалось. Можете проговорить что сделали? делаем в коде или оставить как есть пока? с полуслова не понимаю. Разверните полностью мысль пож-ста )
-
Можете проговорить? Почему угу? ) Я вижу, что есть прошивка опред. размера. Я вижу, что по мапу она короче на 0x170 байт почему- то. И сразу в тот регион лезет РАМ данные. Больше сложно мне понять