Соместимость у Кортексов

На этой неделе EVB проводила семинары, по технологим TI (Texas Instruments). К сожалению, оба семинара проходили в одно и то же время. Пришлось делать нелегкий выбор.

На семинаре по Cortex-ам докладчик привел много аргументов — чем хороши Кортексы. Один из аргументов, мне показался сомнительным. В прочем, этот аргумент регулярно появляется на многих форумах. Поэтому имеет смысл заострить на нем внимание.

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

Хорошо, допустим, что это так. И в самом деле, с теоретической точки зрения получается следующая картина: раз ядро одно и то же, значит и коды команд будут одни и те же. Совместимость программ как у компьютеров PC. Но практически мы имеем совсем иную картину. Понятно, что hex-прошивка от одного проца не будет работать на другом. Но давайте рассмотрим проблему более внимательтно.

Программисты-эмбеддеры в подавляющем большинстве пишут свои проги на С/С++, но никак не на ассемблере. Ассемблер, конечно применяется в проектах, но в очень крошечных дозах. В основном в startup-файлах, ну и там, где нужно что-то сделать очень-очень быстро — в ассемблерных ставках. Весь остальной код пишется на языке высокого уровня. Таким образом, в этом контексте совместимость достигается не столько ядром, сколько спецификой (те есть уровнем) языка программирования. Значит, ядро тут вроде бы как не причем.

Идем дальше. Реальные проекты как правило работают не только с памятью и регистрами ядра процессора. Можно даже утверждать, что значительная часть в проектах (в исходных файлах) отводится работе с периферийными устройствами микроконтроллера — счетиками, ЦАПами, АЦП, SPI- и UART-модулями и т.д. А это всё у каждого производителя микроконтроллеров — своё.

В результате получается, что при переносе проекта с STM32Fxxx на LPC17xxxx придется перелопачивать почти все файлы, входящие в проект. С таким же успехом (с таким же объемом трудностей) можно переносить проект с одного проца на другой, например с ATMega64 на LPC1334. Тогда о какой такой совместимости внутри Кортексов идет речь?

Если речь идет о переносимости ПО между Кортексами внутри одного производителя, то, простите, переносимость ПО внутри группы других процессоров, например — MEGA фирмы ATMEL, будет такая же. И переносимость внутри MSP430F2xxx — тоже будет точно такая же. Тогда в чем заключается прикол относительно переносимости ПО у Кортексов? Я его не вижу!

По моему нужно честно признать, что переносимость программ с одного проца на другой у Кортексов — это надуманная особенность. Эта переносимость существенно ничем не отличается от переносимости ПО у других микроконтроллеров, на других ядрах. Производители и/или маркетологи тут явно лукавят.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s