середа, 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-х), тощо.

понеділок, 6 серпня 2012 р.

MSL Curiosity -- перші фото!

"Примарсився" успішно!

Спостерігав за трансляцією з центру керування. Вражень -- безліч, писати про них не вмію. Цікаво було спостерігати, як після підтвердження успішної посадки, хтось, (можливо -- керівник), регулярно нагадував працівникам, щоб від радості про свої пульти не забували, бо роботу ще не завершено. 

Скрін-шот першого thumbnail-а з "живої трансляції" (клікабельно, можна роздивитися всілякі цікаві подробиці):


та скріншот (звідтіля ж) першої отриманої в повній роздільній здатності фотографії:


Задня HazCam (про камери марсохода "Допитлива" див. попередню нотатку). Якщо я правильно зрозумів, це зображення отримано скрізь захисний ковпак, який відстрілюється аж після того, як піднята посадкою пилюка осяде. Видно колесо, згідно слів операторів, виглядають справними, значить може і їздити зможе :-)

Про всяк випадок, хто ще не зауважив чи не усвідомив: оце, абсолютно непоказне фото вище -- перший погляд на краєвид ще одного місця чужого світу, іншої планети.

Ніколи раніше така складна машина не сідала на поверхню іншого світу. Ніколи ні один спускний апарат не виконував такої складної процедури посадку. (Чому вона така складна, див. попередню нотатку.)

Вітання розробникам та науковцям!
Вітання JPL/NASA!
Вітання MSL "Curiosity"!

Та й всім небайдужим, не залежно від місця розташування та роду занять  -- теж вітання :-)


пʼятниця, 3 серпня 2012 р.

Марс - MSL Curiosity

(c) NASA
Є дуже серйозний привід відволіктися від розмов про древні міжпланетні місії.  Дуже скоро, 6 серпня 2012, 5:31 UTC (*1), завершиться чергова спроба посадити на Марс зонд землян, марсохід -- Mars Scientific Laboratory (MSL) "Curiosity" ("Допитливість" або "Допитливий" чи "Допитлива" -- всі космічні апарати, в англомовних країнах, традиційно,  жіночого роду). 

Момент напружений -- Марс угробив більше половини своїх  автоматичних дослідників. Марсохід великий,  дуже дорогий (2.5 мільярди доларів), містить безліч цікавих приладів, експериментів, як їх називають розробники. Для посадки використовується доволі складна система. Простіші, якими користувалися попередні успішні марсіанські місії, ("Вікінги", "Pathfinder/Sojourner", Mars Exploration Rovers (MER) "Spirit" та "Opportunity", "Phoenix"), не підходять -- він важкий та великий.  Якщо з ним щось станеться (а статися може безліч речей, хоча розробники постаралися передбачити максимальну кількість капостей), наступного чекатимемо довго. Десятиліття і більше. Можливо, дуже довго -- через кризу бюджет НАСА і так постійно урізається, аварія такого дорогого проекту може простимулювати подальші скорочення фінансування міжпланетних досліджень.

Як не смішно, я теж хвилююся. Ось і вирішив написати, яке чудо, (в тому чи іншому стані -- на шести колесах, у вигляді кратера, чи якомусь проміжному), буде на Марсі всього через кілька днів.
Curiosity на поверхні Марса. Малюнок. Сподіваюся, в реальності він теж справиться. (c) NASA
(Для лінивих -- можна почати з останнього відео, внизу поста, а вже тоді повернутися до тексту :)

вівторок, 31 липня 2012 р.

Робота з EEPROM пам'яттю 24CXX -- Soft, AVR8

Відповідність пінів Ардуїно Mega2560 пінам
його контролера, ATmega2560.
  Клікабельно -- без того нічого не видно.
Взято з офіційного сайта, там же
таблиця відповідності.
В попередній нотатці працювалося із шиною I2C чисто програмно, але засобами Wiring -- бібліотек Ардуїно. Робити так не дуже елегантно і не дуже ефективно, хоча і просто.

На цей раз працюватимемо з I2C програмно, використовуючи безпосередньо засоби контролера (і трішки avr-libc, стандартної бібліотеки компілятора AVR-GCC).

неділя, 29 липня 2012 р.

Робота з EEPROM пам'яттю 24CXX -- Software, Arduino

А це ніжки, за які смикати ;-)
Мухоловка.
Щоб краще відчути "дух" I2C, реалізуємо його чисто програмно, самостійно смикаючи контролер за ніжки. Для початку, з використанням засобів Ардуіно ("мови" Wiring -- фактично С із "ардуїноспецифічними" бібліотеками).

В якій послідовності це слід робити, описано раніше: теорія та простенька практика.

субота, 28 липня 2012 р.

Робота з EEPROM пам'яттю 24CXX -- Arduino Wire

Спробуємо скористатися описаною теорією та попрацювати з мікросхемками EEPROM пам'яті на практиці. Для простоти почнемо із бібліотеки Wire для Arduino, яка енкапсулює більшість технічних подробиць роботи із апаратурою. 

Працюватимемо із (єдиним наявним в мене :) Arduino Mega 2560 rev3. Суттєвих відмінностей для більш поширеного у нас Arduino Uno, крім як номерів пінів, до яких підключатися, немає.

Орієнтуватимемося на Arduino IDE 1 (1.0.1, якщо строго, але думаю це несуттєво). Надалі вважатиметься, що проблем з тим, щоб скачати оболонку, запустити її, під'єднати до комп'ютера Arduino, встановити відповідні драйвери, і заливати хоча б найпростіші прошивки, немає.