Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подсчет CRC части кода программы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Kacman
Дано:
IAR AVR ATMEGA328P

Задача:
Есть программа одна из функция которой не подлежит изменению и должна быть закрыта CRC.
Размещаем эту функцию в отдельном сегменте. Никаких вызовов других функций из данной нет.

Проблема.
При изменение остального кода программы меняется CRC данной функции, поскольку компилятор плодит несколько
подпрограмм, размещаемых где придется, и вызывает их из этой функции.

Есть ли какие либо мысли как с этим бороться?
scifi
Если хочется, чтобы кусок кода, выполняющий определённую функцию, не менялся при изменении остального кода, то нужно этот кусок оформить в виде отдельного проекта. Связь с остальным кодом сделать через какой-нибудь доморощенный ABI.
Dog Pawlowa
Цитата(Kacman @ Apr 2 2012, 14:51) *
Проблема.
При изменение остального кода программы меняется CRC данной функции, поскольку компилятор плодит несколько
подпрограмм, размещаемых где придется, и вызывает их из этой функции.

Есть ли какие либо мысли как с этим бороться?

В первую очередь нужно перестать обманывать себя - если закрытая(защищенная) функция вызывает другие, незащищенные функции, то как она может быть закрыта? wink.gif
Kacman
Цитата(Dog Pawlowa @ Apr 2 2012, 22:34) *
В первую очередь нужно перестать обманывать себя - если закрытая(защищенная) функция вызывает другие, незащищенные функции, то как она может быть закрыта? wink.gif


Сама по себе эта функция ничего не вызывает. Компилятор сам создает свои собственные подпрограммы и помещает их за пределами данного сегмента.
Хотелось бы этого избежать. Например разместить их в том же сегменте.
demiurg_spb
Цитата(Kacman @ Apr 3 2012, 09:55) *
Сама по себе эта функция ничего не вызывает. Компилятор сам создает свои собственные подпрограммы и помещает их за пределами данного сегмента.
Хотелось бы этого избежать. Например разместить их в том же сегменте.

Не поможет. Потом выйдет следующая версия компилятора и опять что-нибудь обязательно изменится.
ИМХО тут один лишь путь сбилдить один раз, как уже советовали, в отдельном проекте либу или объектник и линковать ко всем остальным проектам.
scifi
Цитата(demiurg_spb @ Apr 3 2012, 13:06) *
ИМХО тут один лишь путь сбилдить один раз, как уже советовали, в отдельном проекте либу или объектник и линковать ко всем остальным проектам.

Формат объектных файлов тоже может измениться в новой версии. Поэтому я и заговорил про ABI.
demiurg_spb
согласен.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.