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

    

Перенести 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

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


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

Декрементируйте 0x0803FFFC.

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


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

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

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


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

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

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


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

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

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


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

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

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

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация