середу, 31 жовтня 2012 р.

CooCox CoIDE

Про оболонку CoIDE від CooCox вже згадувалося у попередньому пості. Вона проста та зручна, і вартує уваги, особливо для початківців у роботі з контролерами ARM Cortex-M. Поміж недоліків -- "Windows only", відсутність підтримки C++ "з коробки", при чому останнє легко виправити (хоча б частково).

Думаю, варто розповісти про неї детальніше. Щоправда, базові аспекти роботи, з одного боку, менш-більш інтуїтивні, з іншого, описані:
  • Частина статті "STM32: Урок 1 - Настраиваем IDE" від Robocraft. В основному вона про підготовку власного середовища на базі Eclipse, але зачіпає і роботу з CoIDE. Навіть якщо поки що самостійно "збирати" середовище не планується, варто її прочитати, щоб краще розуміти механізми роботи IDE, їх взаємодію з компілятором та програматорами
  • "Необходимый софт" від EasySTM32 -- налаштування і робота з CoIDE. Створення проекту, компіляція, прошивка
Тому нижче зосереджуся на деяких нюансах -- прикручування підтримки С++, робота із репозиторієм,  всілякі дрібні потенційні "граблі". Розглядаю CoIDE останньої,  на момент написання, версії, 1.5.1.

[Update від листопаду 2015 року. Частина, присвячена С (Newlib) та С++ runtime містить багато неточностей та помилок. Існує більш детальний та точний варіант: "Стандартна бібліотека C та SemiHosting (на прикладі STM32 і CoIDE)" і "C++ із ARM GCC + STM32 (+ CoIDE)", відповідно. Крім того, див. пост про нову версію CoIDE, 2.0.3 beta: "CoIDE 2".]

понеділок, 15 жовтня 2012 р.

Огляд STM32 (ARM Cortex-M від STMicroelectronics)

STM32VLDiscovery
Планував я написати наступний пост про роботу з атмелівським апартним TWI (I2C), але поки доступу до AVR не маю, зате маю STM32VLDiscovery, тому поговоримо поки про ARM-мікроконтролери від STMicroelectronics

ARM -- архітектура популярна (згідно вікіпедії, найбільш поширені 32-бітні процесори). Детально про неї не писатиму, принаймні не зараз, згадаю лише кілька важливих для подальшого розуміння фактів: 

По-перше, фірма-розробник, ARM Holding, процесорів не випускає. Вона розробляє лише архітектуру і систему команд та ліцензує її іншим фірмам. Виробники можуть виготовляти процесори або мікроконтролери (System on Chip), що базуються на ядрі ARM, доповнених різними периферійними компонентами, пам'яттю, сопроцесорами, тощо, або розробляти власні архітектур на базі системи команд та архітектурних рішень ARM. Тому під абревіатурою ARM можуть ховатися зовсім різні процесори! Звичайно, у всіх пристроях сімейства багато спільного, але все рівно завжди варто конкретизувати, про який саме ARM мова.

По-друге, існує багато "версій" ядра ARM, які грубо можна поділити на три групи:
  • ARM Cortex-A -- "звичайні" процесори, їх, наприклад, можна зустріти в ноутбуках і планшетах
  • ARM Cortex-R -- процесори для систем реального часу
  • ARM Cortex-M -- мікроконтролери на базі архітектури ARM
Надалі мова йтиме лише про "мікроконтролерні" варіанти ARM, Cortex-M. Важливо усвідомлювати, що хоча в світі мікроконтролерів вони виділяються великою потужністю, однак все ж це саме мікроконтролери і "звичайним" процесорам ARM серії A вони дуже і дуже поступаються -- це просто пристрої різного класу, як мопед і мікроавтобус. Крім того, так як для мікроконтролерів критичним є розмір програм, "Кортекси" підтримують лише "урізані" системи команд -- thumb (виключно 16-бітні команди) і thumb-2 (як 16-бітні, так і 32-бітні). Досягнуто це урізання та "запаковування" у 16 біт зменшенням кількості дозволених комбінацій операндів, перетворення частини операндів на неявні (з ніжністю згадуємо різноманітні div-и та mul-и x86-х), тощо.