Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cortex-m3 assembler - что значит этот warning?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Нортон
Здравствуйте.

Такой вопрос - что означает эта ошибка "A1581W: Added 2 bytes of padding at address 0xb2"?

У меня МК STM32, компилятор keil, если это поможет.

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

google ответил - http://infocenter.arm.com/help/index.jsp?t...c/CACHCBBJ.html, но я ничего не понял:

Added <no_padbytes> bytes of padding at address <address>

The assembler warns by default when padding bytes are added to the generated code. This occurs whenever an instruction/directive is used at an address that requires a higher alignment, for example, to ensure ARM instructions start on a four-byte boundary after some Thumb instructions, or where there is a DCB followed by DCD.

For example:
AREA Test, CODE, READONLY
THUMB
ThumbCode
MOVS r0, #1
ADR r1, ARMProg
BX r1
; ALIGN ; <<< add to avoid the first warning
ARM
ARMProg
ADD r0,r0,#1
BX LR
DCB 0xFF
DCD 0x1234
END

Results in the warnings: A1581W: Added 2 bytes of padding at address 0x6

The warning can also occur when using ADR in Thumb-only code. The ADR Thumb pseudo-instruction can only load addresses that are word aligned, but a label within Thumb code might not be word aligned. Use ALIGN to ensure four-byte alignment of an address within Thumb code.
jcxz
А Вы вообще понимаете что делаете???
Какие ARM и THUMB если у Вас Cortex?? Он имеет только Thumb2 и ничего более.
Нортон
Цитата(jcxz @ Aug 1 2014, 12:48) *
А Вы вообще понимаете что делаете???
Какие ARM и THUMB если у Вас Cortex?? Он имеет только Thumb2 и ничего более.


Этот участок кода:

Цитата(jcxz @ Aug 1 2014, 12:48) *
For example:
AREA Test, CODE, READONLY
THUMB
ThumbCode
MOVS r0, #1
ADR r1, ARMProg
BX r1
; ALIGN ; <<< add to avoid the first warning
ARM
ARMProg
ADD r0,r0,#1
BX LR
DCB 0xFF
DCD 0x1234
END


он не мой, это из примера, который приведен на http://infocenter.arm.com/help/index.jsp?t...c/CACHCBBJ.html к данному warning.

А мой код если надо, я тоже могу сбросить - это ассемблерная часть TNKernel, я хотел сделать простейший планировщик и убрать, то что у меня не используется - но этот warning меня смущает.
ViKo
Разве это ошибка? предупреждение, что добавлено два дополнительных байта, видимо, для выравнивания членов структуры, или, скорее, в вашем случае, кода.
Нортон
Цитата(ViKo @ Aug 1 2014, 13:17) *
Разве это ошибка? предупреждение, что добавлено два дополнительных байта, видимо, для выравнивания членов структуры, или, скорее, в вашем случае, кода.


Спасибо за пояснение.
Я просто именно этого и не мог понять - думал что-то важное, что может повлиять на работу. Теперь буду знать.

Да не ошибка, а warning - я там выше не правильно написал.
Сергей Борщ
Практически любое предупреждение - указание на потенциальные грабли. Если оно появилось, значит была попытка чесать левое ухо правой ногой, которую компилятор/ассемблер/линкер может неправильно понять исхдя их своего чувства прекрасного. Покажите свой код. Если вылезло предупреждение - значит что-то в коде не так, даже если сейчас все работает как задумано. И лучше устранить причину этого предупреждения сразу, ибо через какое-то время вы либо утонете в подобных предупреждениях не заметив какое-либо критически важное, либо же из-за изменения положения звезд на небе эта конструкция таки начнет работать неправильно, и в этом случае инструментарий будет абсолютно не виноват - он честно предупреждал.
Forger
Цитата(Сергей Борщ @ Aug 1 2014, 13:37) *
... и в этом случае инструментарий будет абсолютно не виноват - он честно предупреждал.

Я полностью вас поддерживаю, но в данном случае это все тщетно - ТС должен самостоятельно наступить на кучу граблей, которые сам же себе и расставляет....
Остается только посочувствовать, но вмешиваться нельзя sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.