реклама на сайте
подробности

 
 
> Cortex-M0, от миландра
wedmeed
сообщение Dec 6 2011, 07:18
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 5-04-11
Из: г.Саратов
Пользователь №: 64 137



На работе собираются взяться за камни на Cortex-M0 (от "Миландр"). Cortex-M3 изучил и суть уже понимаю. Расскажите, пожалуйста, чем отличается M3 и M0?
И еще - если кто имел дело с миландровскими камнями, на какие проблемы натыкались?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SII
сообщение Dec 10 2011, 08:48
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Cortex-M0 -- это архитектура ARMv6-M, имеющая только систему команд Thumb, а Cortex-M3 (как и -М4) -- это архитектура ARMv7-M, у которой используется Thumb-2. Последняя по своим функциональным возможностям почти соответствует "родной" АРМовской (которая у Cortex-M отсутствует вообще). В частности, любые операции могут выполняться с почти любыми регистрами, в то время как в Thumb свободно можно использовать лишь R0-R7, а остальные -- лишь в нескольких командах. Результат этого ограничения сильно зависит от компилятора. GCC, например, очень плохо следит за регистрами, из-за чего ему их всегда не хватает, и код прилично раздувается лишними сохранениями-восстановлениями в стеке, что приводит ещё и к тормозам (иногда -- очень приличным; у меня знакомый с этим столкнулся на LPC2478: при компиляции в код Thumb скорость падала в несколько раз по сравнению с кодом ARM, поскольку начинались сплошные обращения к стеку, который находился во внешней памяти вместе с видеобуфером -- ну, процессор и вынужден был стоять, когда к памяти обращался дисплейный контроллер; при коде ARM, в котором свободно использовались все регистры, число сохранений-восстановлений в стеке резко уменьшилось).

Реализация обработки прерываний одинакова, разница лишь количественная (большее число линий и т.п. у Cortex-M3). Правда, насколько помню, в ARMv7-M при возврате из прерывания выполняются дополнительные проверки, в то время как ARMv6-M игнорирует некоторые ошибки, из-за чего некий код, работающий на Cortex-M0, может оказаться неработоспособным на Cortex-M3 (другое дело, что этот код изначально является неправильным).

Сообщение отредактировал SII - Dec 10 2011, 08:52
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016