Карась писал(а):Значит это всё из-за особенностей Кортексов
"Кортексы" поминают постоянно, но, строго говоря, это некорректно. Cortex -- это общее название группы процессорных ядер, но они могут сильно различаться между собой. Есть ядра для "обычных" микроконтроллеров -- так называемый M-профиль. Они соответствуют версиям архитектуры ARMv6-M (Cortex-M0) и разным вариантам ARMv7-M (другие ядра Cortex-M). Есть ядра для высокопроизводительных и особо надёжных (ну, так декларировано) микроконтроллеров -- R-профиль (серия Cortex-R), соответствующая версии архитектуры ARMv7-R. Наконец, есть ядра, предназначенные для микропроцессоров, а не микроконтроллеров -- A-профиль (Cortex-A), соответствующий версии ARMv7-A. Так вот, версии ARMv7-R и ARMv7-A, т.е. серии ядер Cortex-R и Cortex-A, являются "истинными" ARMами, имеющими и систему команд ARM, и систему команд Thumb; именно они совместимы снизу вверх со всеми предыдущими версиями (кроме ARMv6-M). Ну а M-профиль -- это уже как бы и не настоящий ARM, поскольку ARMовская система команд у него отсутствует; кроме того, кардинально отличается системная архитектура (обработка прерываний и т.д.). Вот по этой причине поминать "Кортексы" обычно технически некорректно -- в Вашем конкретном случае Вы хотели сказать о М-профиле архитектуры, например, а не о всех современных ядрах от ARM (куда, кстати, входят и 64-разрядные процессоры архитектуры ARMv8).
Кстати говоря, из-за параллельного существования версий архитектуры и названий ядер путаница возникала и раньше. Например, очень популярное ядро ARM7TDMI-S соответствует архитектуре ARMv4T, но ей же соответствует ещё несколько ядер, обозначений коих я не помню.
Разница между версией архитектуры (ARMv4T или ARMv7-M, например) и названием ядра (скажем, ARM7TDMI-S и Cortex-M3) заключается в том, что версия архитектуры может быть общей для многих ядер; она показывает, как ядро выглядит с точки зрения программиста (какие есть регистры, какие команды доступны и т.д. т.п.). Имя же ядра обозначает конкретную реализацию "в железе" (ну или на языке описания аппаратуры -- ARMы сделаны на Verilog, например) той или иной архитектуры. Одна и та же архитектура может быть реализована разными способами, отличающимися сложностью и производительностью, но выглядящими одинаково с точки зрения программиста. Особенно хорошо это заметно на персоналках, где используются процессоры архитектуры IA-32 (это её официальное название; x86 -- принятое в народе обозначение), но и в случае с ARMами имеем, вообще говоря, то же самое.