Особенности ARM Cortex-M3
Чтобы получить максимальную отдачу от компилятора mikroPascal PRO для ARM, пользователь должен быть знаком с определенными аспектами MCM ARM Cortex-M3. Это знание не имеет существенного значения, но оно может обеспечить лучшее понимание возможностей и ограничений ARM, а также их влияние на запись кода.
Эффективность типов
Прежде всего, пользователь должен знать, что ALU ARM, который выполняет арифметические операции, оптимизирован для работы с 32-битными типами. Кроме того, он выполняет аппаратное умножение и деление на целочисленном уровне,
поэтому плавающее умножение и деление медленнее и потребляет больше памяти, сравнивая его с целым числом.
ARM поддерживает 64-битные типы данных, но они менее эффективны. Они обеспечивают более высокую точность, но не имеют размера кода и исполнения.
Ограничения вложенных вызовов
Ограничений вложенных вызовов нет, кроме размера ОЗУ. Вложенный вызов представляет собой вызов функции внутри тела функции, либо к себе (рекурсивным вызовам), либо к другой функции.
Рекурсивные вызовы, как форма перекрестных вызовов, поддерживаются mikroPascal PRO для ARM, но их следует использовать очень осторожно. Разрешается также вызов функций из прерывания.
Разрешена функция вызова от прерывания и основного потока. Будьте осторожны, потому что этот метод программирования может вызвать непредсказуемые результаты, если общие ресурсы используются как для основного, так и для прерывания.
Выравнивание переменных, констант и процедур
Простые переменные типа, размер которых равен 2 байтам, устанавливаются в выравнивание 2, те, размер которых составляет 4 байта и более, устанавливаются в выравнивание 4.
Агрегированные типы выравниваются в соответствии с максимальным выравниванием его члена. Регуляции всегда устанавливаются на выравнивание 4.
Bit-Banding
Эта операция бит-диапазона значительно упрощает манипуляции с битами. Вместо того, чтобы читать слово, и в соответствующем бите, а затем записывая слово обратно, бит-banding выполняет это с помощью одной инструкции магазина.
Но эта единственная инструкция имеет другое преимущество: это атомная операция, выполняемая как одна команда.
Example of Bit-Banding
Бит-полоса использует адресное пространство, которое псевдонизирует периферийное или адресное пространство SRAM, позволяя управлять одним битом внутри слова ссылкой с байтом на псевдонимом адресе.
Например, запись на адрес 0x20000000 изменяет 32-битное слово SRAM в этом месте, но запись в 0x28000000 изменяет только бит 0 по адресу 0x20000000.
При использовании предшествующего метода манипулирования битами с последовательными инструкциями, выполняющими операции чтения-изменения-записи, может произойти прерывание, которое потенциально может изменить бит в этой ячейке памяти.
После возврата прерывания в хранилище могут записываться поврежденные данные обратно в эту ячейку памяти. Атомная природа операций бит-диапазона устраняет эту проблему.
Невыравненный доступ к памяти
ARM Cortex-M3 позволяет получить доступ к невыравненной памяти, но с потерей производительности. Каждый невыравненный доступ вызывает множественный доступ к шине, что приведет к снижению производительности.