Линейная сборка STM32F4

Я работаю с микроконтроллером STM32F4 и не могу использовать встроенную сборку, которую пытаюсь перенести с другого процессора ARM. Я понятия не имею, с чего начать, пытаясь выяснить проблему


person onion    schedule 09.08.2013    source источник


Ответы (2)


Что ж, обычно я бы сказал, что вы должны опубликовать свой код, но в этом конкретном случае я бы посоветовал вам всегда делать небольшую домашнюю работу по архитектуре процессора при работе с микроконтроллерами.

STM32F4 (архитектура процессора Cortex M4) не использует типичные наборы инструкций для рук и большого пальца, как ARM7 или многие другие процессоры ARM. Процессоры Cortex M4 работают в режиме Thumb2, который включает в себя подмножества наборов инструкций ARM и THUMB, не требуя переключателей «рука-> большой палец» или «большой палец-> рука» (или инструкций).

person bunkerdive    schedule 09.08.2013

Есть простой способ. Вы можете использовать ключевое слово asm.

asm("НЕП"); например, будет ждать один тактовый цикл и продолжится. Вы можете расширить результаты.

person TGG    schedule 29.10.2014
comment
К вашему сведению: ARM явно заявляет этот NOP предназначен для заполнения, а не для синхронизации. Это может занять цикл, но реализация вашего поставщика может удалить его из конвейера до того, как он будет выполнен. Я видел, как STM32F4 выполнял подобные оптимизации. - person Andy Brown; 29.10.2014