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

Перенести checksum, в начало

Считаю CRC от 0x08000100 до 0x0803FFFC, и checksum в конце ложиться.

Linker:

place at address mem:__ICFEDIT_region_ROM_end__-3 { readonly section .checksum };

Тут считается, все равно и сходится с программный расчетом.

 

Теперь, хочу что бы рассчитанное значение checksum положилось по адресу 0x08000000

(это типа шапка для бутлодера)

Меняю в ликере:

place at address mem:__ICFEDIT_region_ROM_start__ { readonly section .checksum };

И получаю ошибку IAR, о том что диапазон рассчитываемой checksum не делиться на 4 :wacko: а раньше почему делилось ?

ielftool error: The checksum range must be divisable by 4 in order to match the checksum unit size.

Error while running ielftool "--fill" "0xFF;0x8000100-0x803fffc" "--checksum" "__checksum:4,crc32:Li,0xffffffff;0x8000100-0x803fffc" "--verbose" "C:\STM32_project\Workspace\.........

 

Про какой диапазон он ругается ?

Изменено пользователем pokk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А раньше почему, он не ругался ? Ведь я же диапазон не трогал совсем, или он как-то изменился из за того что я изменил секцию .checksum ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А раньше почему, он не ругался ? Ведь я же диапазон не трогал совсем, или он как-то изменился из за того что я изменил секцию .checksum ?

Без понятия. Вы говорите ему использовать CRC32 (он при этом считает 32-битными словами) и в то же время почему-то задаёте диапазон некратный 4 байтам. Так что он всё правильно ругается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы говорите ему использовать CRC32 (он при этом считает 32-битными словами) и в то же время почему-то задаёте диапазон некратный 4 байтам. Так что он всё правильно ругается.

Это что-то новое. CRC-32 считается побайтово. Другое дело, что, например, аппаратный блок CRC32 у STM32 умеет только по 4 байта. В общем, мимо кассы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это что-то новое. CRC-32 считается побайтово. Другое дело, что, например, аппаратный блок CRC32 у STM32 умеет только по 4 байта. В общем, мимо кассы.

Это новое уже лет 10 как, не меньше. :rolleyes:

По-байтно он будет считаться если ему указать это делать по-байтно. А ТС указывает это делать словами по 32 бита.

И вот какой там блок в STM32 - это точно мимо кассы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...