-
- Делал обновление прошивы через x-modem.. так он последний кусок до
размеры блока добивает фиксированным кодом... POV_(125 знак., 10.06.2020 13:48, )
- Думаю, есть что то такое, добивает нулями до границы кратной 1024 байт. Непонятно, как этим управлять - maleon(10.06.2020 13:59)
- Попробовал hex2bin.exe, на выходе бинарник без избыточных нулей и внутри один байт вместо 0x00 - 0xFF. Возможно какая то дырка между сегментами или строками как и завершение бинарника заполняется Иаром нулями. Как изменять поведение - непонятно - maleon(10.06.2020 13:24)
- Байт ноль у AVR код команды NOP. В некоторых случаях неиспользуемое
но присутствующее адресное пространство (страница flash памяти,
к-рая прошивается и присутствует целиком, кодовый сегмент)
дополняется кодом определенной инструкции из соображений
надежности. Предполагается что инженер сам может выбирать padding
байт (код инструкции). Лучше всего выбрать однобайтовую инструкцию
присутствующую в системе команд микроконтроллера (типа JMP/RST/INT
по фикс.адресу) и по этому RxTx(66 знак., 10.06.2020 10:49)
- Получается, если я зашью в МК бинарник, то прибор будет надёжнее, чем если бы я зашил НЕХ? maleon(53 знак., 10.06.2020 11:05)
- Может быть выбрана опция Fill unused code memory? Также можно
посмотреть Map file линкера, увидеть что он складывает по какому
адресу. dxWAk(1 знак., 10.06.2020 09:20, картинка)
- У меня картинка чуток другая, версия старше. А размер HEX-а
меняется и заканчивается как раз там, где в бинарнике начинаются
нули maleon(1 знак., 10.06.2020 09:55, картинка)
- Можеть посмотреть map файл? - BlackMorda(10.06.2020 10:37)
- Традиционно в конце лежит содержимое переменных, которые
инициализируются при старте. Если способ инициализации --
копирование без всяких сжатий, массив типа "char
foo[1000]={1,2,3};" будет выглядеть как-то так (много нулей). - SciFi(10.06.2020 10:06)
- Я тоже об этом думал, но: почему количество нулей меняется; почему
в НЕХ-се их нет (смотрел пролистыванием и поиском 16 нулевых байт
подряд и около того)? - maleon(10.06.2020 10:19 - 10:23)
- Теперь понятно, почему я всегда испытывал недоверие к bin - VLLV(10.06.2020 11:00)
- А где они есть??? Что ты называешь "бинарником"? ELF? Сырой файл?
Структура hex очень отдалённо напоминает elf: там тоже секции
расположенные по заданным адресам и их содержимое. Если какие-то
адреса не используются, то в hex или elf не будет сегмента
заполненного нулями, а в сыром файле (bin) -- будет. Потому, что
там нельзя сказать, мол эта секция начинася с этого адреса и
занимает столько-то килобайт, потом 32 килобайта пустоты, потом
следующая секция. В сыром файле fk0(98 знак., 10.06.2020 10:26)
- Нули в конце бинарника и размер бинарника не зависит от добавления
кода, в НЕХ-файле их нет и размер зависит от кода - maleon(10.06.2020 10:26 - 10:34)
- Бинарником называю результирующий BIN-файл maleon(1 знак., 10.06.2020 10:29, картинка)
- У тебя если, например, код в бинарнике начинается с адреса 0, а ОЗУ с адреса 0x1000, то пространство между кодом и ОЗУ в бинарнике будет забито нулями. А в hex просто начтётся новый сегмент с заданным адресом 0x1000. Почему у тебя в конце нули не ясно, видимо там какие-то данные (не bss) с нулевым содержанием и из-за них происходит забивка промежутка нулями (в бинарном файле нет возможности не записать в промежуток ничего). - fk0(10.06.2020 14:12)
- Бинарником называю результирующий BIN-файл maleon(1 знак., 10.06.2020 10:29, картинка)
- Нули в конце бинарника и размер бинарника не зависит от добавления
кода, в НЕХ-файле их нет и размер зависит от кода - maleon(10.06.2020 10:26 - 10:34)
- Традиционно есть две секции: bss и data. Ещё text и rodata. В text кладётся код. В rodata -- константы (текстовые строки, например). В data -- инициализирующие значения переменных. В bss -- переменные изначально не инициализированные (инициализированные нулями). И традиционно секция bss в файле отсутствует. Под неё выделяется память в процессе запуска программы и эта память обнуляется. В секции data же сплошного заполнения нулями быть не может (иначе бы оно оказалось fk0(43 знак., 10.06.2020 10:23)
- Может проект создан в более новой версии, там какая то такая опция есть, а я в своей версии её не вижу и изменить не могу, но компилятор её отрабатывает - maleon(10.06.2020 10:22)
- Я тоже об этом думал, но: почему количество нулей меняется; почему
в НЕХ-се их нет (смотрел пролистыванием и поиском 16 нулевых байт
подряд и около того)? - maleon(10.06.2020 10:19 - 10:23)
- У меня картинка чуток другая, версия старше. А размер HEX-а
меняется и заканчивается как раз там, где в бинарнике начинаются
нули maleon(1 знак., 10.06.2020 09:55, картинка)
- map - VLLV(10.06.2020 09:14)
- Делал обновление прошивы через x-modem.. так он последний кусок до
размеры блока добивает фиксированным кодом... POV_(125 знак., 10.06.2020 13:48, )