понеділок, 12 листопада 2012 р.

Вступ до технології CUDA

7 листопада 2011 року, рік тому, я розповідав про CUDA на семінарі нашого інституту, присвяченому суперкомп'ютерним обчисленням. Однак, з того часу ніяк не вдавалося зібратися запостити розповідь тут. Цього року під час того ж семінару, знову повернувся до теми CUDA, акцентуючи увагу на готових рішеннях -- бібліотеках. Паралельно усвідомив, що відтягувати далі не варто.

Презентація доповіді 2011-го року можна скачати тут. Звичайно, з того часу вона встигла вже дещо застаріти. Нова, яка містить скорочений та оновлений варіант попередньої доповіді, плюс розповідь, із прикладами, про деякі бібліотеки CUDA -- тут. І одна і друга містить певну кількість помилок та неточностей. Побачите їх -- пишіть мені!

Ліцензія, як і всіх матеріалів у цьому блозі, якщо не сказано іншого -- Creative Commons Attribution ShareAlike.

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

неділя, 11 листопада 2012 р.

Марсіанські хроніки -- Curiosity, перший квартал

Автопортрет.
(c) NASA / JPL / MSSS / LOLspeak by Emily Lakdawalla
Якось, після успішної посадки, (як після складного екзамену, тиждень не вірилося, що вже все, та ще й успішно!) та перших фото, не було можливості активно писати про роботу марсохода. Однак слідкувати за ним продовжував. Спробуємо підвести підсумок перших трьох місяців роботи.

Увага -- дуже багато фото та відео!

Якщо під фото пише "Клікабельно" -- варто таки клікнути і подивитися у більшому варіанті, якщо ж "КЛІКАБЕЛЬНО", то подивитися слід обов'язково -- зменшена версія (зазвичай -- найбільша, яку вдалося запхати) просто не передає необхідних вражень. 

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