- PVSM.RU - https://www.pvsm.ru -
Микроконтроллер фирмы Parallax под названием Propeller [1], в сравнении с «классикой» жанра типа PIC или AVR занимает несколько странную нишу. Про первые два можно сказать, что это архитектуры общего назначения. Создатели же Пропеллера подошли к вопросу «с фланга».
Основные отличительные особенности Пропеллера:
Язык Spin разработан для удобного многопроцессорного программирования, и выглядит как нечто среднее между процедурным и объектно-ориентированным языком.
Вот пример кода на Spin, запускающего функцию крутиться на нескольких ядрах. Код реально простой и понятный.
CON
_clkmode = xtal1 + pll16x 'Establish speed
_xinfreq = 5_000_000 '80Mhz
OBJ
led: "E555_LEDEngine.spin" 'Include LED methods object
VAR
byte Counter 'Establish Counter Variable
long stack[90] 'Establish working space
PUB Main
cognew(Twinkle(16,clkfreq/50), @stack[0]) 'start Twinkle cog 1
cognew(Twinkle(19,clkfreq/150), @stack[30]) 'start Twinkle cog 2
cognew(Twinkle(22,clkfreq/100), @stack[60]) 'start Twinkle cog 3
PUB Twinkle(PIN,RATE) 'Method declaration
repeat 'Initiate a master loop
repeat Counter from 0 to 100 'Repeat loop Counter
led.LEDBrightness(Counter, PIN) 'Adjust LED brightness
waitcnt(RATE + cnt) 'Wait a moment
repeat Counter from 100 to 0 'Repeat loop Counter
led.LEDBrightness(Counter,PIN) 'Adjust LED brightness
waitcnt(RATE + cnt) 'Wait a moment
Функция cognew
запускает задачу на трех ядрах, параметризируя каждую своей частотой и стеком.
Упрощенно Пропеллер устроен следующим образом:
Название «Пропеллер» произошло от его модели передачи приоритета на доступ к разделяемым ресурсам. Модуль Hub, контролирующий разделение времени, делает это по кругу, типа крутящегося пропеллера.
Я не хочу в этой статье углубляется в сам Пропеллер, ибо это большая тема. Для интересующихся в конце есть ссылки на книги, в которых можно получить исчерпывающую информацию об этом микроконтроллере.
Но хочу рассказать об одном интересном проекте, который называется "Pocket Mini Computer [3]". Это мини-компьютер на базе Пропеллера (P8X32A), использующий evaluation board «P8X32A QuickStart» как основу.
Выглядит это добро следующим образом (фотография с официального сайта):
Фактически, автор продает [4] evaluation board плюс плату расширения, на которой есть VGA, microSD, PS/2, звук и Wii Gameport. Опционально можно поставить микросхему оперативки SRAM на 32КБ.
Фишка проекта в том, что автор разработал интерпретатор Бейсика, который превращает все это в микро-компьютер а-ля 80-е. Бейсик написан на Spin'e (исходники открыты [5]). Диалект весьма ограничен, например, нет массивов, строковых и вещественных переменных, имена переменных только однобуквенные и т.д. Но тем не менее, дается доступ ко всей периферии, включая SD-карту, и также позволяет запускать чисто двоичные файлы, которые могут быть написаны хоть на том же Spin'e, хоть на С (Parallax имеет версию GCC для Пропеллера), хоть на ассемблере.
Далее несколько фотографий конструктора, чтобы было понятно, что дается в наборе. Как я уже говорил, основа PMC — это готовая плата «P8X32A QuickStart», поэтому спаять надо только плату расширения.
Почти все запаяно.
Бутерброд в сборе.
Вот небольшая демка, чтобы оценить графические возможности.
Не получается назвать его процессором общего назначения. По моему субъективному мнению, для эффективного использования Пропеллера надо очень хорошо понимать свою прикладную задачу. Например, у Пропеллера нет ШИМ, ЦАП/АПЦ, встроенной флеш-памяти, триггеров, понятия прерываний, и создатели предлагают либо реализовывать необходимое программно, используя силу нескольких ядер, либо использовать специализированные внешние микросхемы. В книгах, приведенных в конце, описано множество примеров работы с дополнительными микросхемами.
Интересно другое. Создатели Пропеллера не забоялись отойти от традиционного подхода и попытались вложить в кристалл конкретные прикладные возможности, почти готовые задачи. Может для каких-то проектов это придется очень кстати. Как я понял, Пропеллер очень удобен для создания разного рода игровых автоматов и приставок, например, из-за встроенной возможности генерировать качественный телевизионный и VGA сигнал.
Вывод: интересная архитектура, определенно заслуживающая внимания.
Опять-таки, двоякое ощущение. Вроде работает, но ресурсов Бейсику явно не хватает, особенно памяти. Например, тот же Maximite [6] на базе PIC32 его на голову превосходит. На нем можно запустить хоть RetroBSD [7], хоть Радио-86РК [8]. Да и встроенный MMBasic несравнимо мощнее.
Хотя, за 39 долларов США — это отличная игрушка для тех, кто хочет пощупать Пропеллер, имея уже собранное устройство.
Книги по Пропеллеру, которые я прочитал, что касаемо архитектуры, и проглядел (что касаемо проектов). Все рекомендую.
Getting Started With the Propeller [9]
Programming the Propeller with Spin: A Beginner's Guide to Parallel Processing (Tab Electronics) [11]
Автор: begoon
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/zhelezo/20826
Ссылки в тексте:
[1] Propeller: http://www.parallax.com/propeller/
[2] Image: http://demin.ws/blog/russian/2012/11/22/personal-mini-computer-on-parallax-propeller/propeller-block-large.jpg
[3] Pocket Mini Computer: http://propellerpowered.wikispaces.com/Pocket+Mini+Computer
[4] продает: http://propellerpowered.com/shop/?page_id=234
[5] исходники открыты: https://www.dropbox.com/sh/qwhixzvtlrvp1u1/y-JshwklWj/PropellerBASIC
[6] Maximite: http://demin.ws/blog/russian/2012/01/19/maximite-kit/
[7] RetroBSD: http://demin.ws/blog/russian/2012/05/11/retrobsd-on-maximite/
[8] Радио-86РК: http://demin.ws/blog/russian/2012/08/23/radio86-on-maximite/
[9] Getting Started With the Propeller: http://www.amazon.co.uk/gp/product/B004X6U6II/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B004X6U6II&linkCode=as2
[10] Image: http://www.amazon.co.uk/gp/product/B004X6U6II/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1634&creative=6738&creativeASIN=B004X6U6II&linkCode=as2
[11] Programming the Propeller with Spin: A Beginner's Guide to Parallel Processing (Tab Electronics): http://www.amazon.co.uk/gp/product/B003TQM9Y2/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=1634&creative=6738&creativeASIN=B003TQM9Y2&linkCode=as2
[12] Image: http://www.amazon.co.uk/gp/product/B003TQM9Y2/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=1634&creative=6738&creativeASIN=B003TQM9Y2&linkCode=as2
[13] Источник: http://habrahabr.ru/post/159847/
Нажмите здесь для печати.