Программируем STM32VLDiscovery в Linux и только в Linux!

Подобно многим любителям садистски потыкать раскаленным паяльником в нежные внутренности электронных девайсов я не избежал увлечения микроконтроллерами серии STM32 от STMicroelectronics, за их небольшую цену прозванные "убийцами" 8/16-битных микроконтроллеров, таких как AVR. Поскольку основной операционной системой на моем компьютере является Линукс, а альтернативных операционных систем на нем нет и не предвидится, то встал вполне естественный вопрос - чем собирать программы под STM32 и чем их прошивать в имеющуюся у меня STM32VLDiscovery? Иначе говоря передо мной встал вопрос инструментального обеспечения.

23.08.2011

Простенький клиент для Jamendo на Clojure

В рамках осваивания Clojure, который олицетворяет для меня не только новый язык, но и новую парадигму программирования, я написал простейший клиент для Jamendo — интернет-сообщества музыкантов, использующих свободные лицензии. Это моя первая программа на Clojure.

Клиент имеет относительно скромные возможности. Он умеет выполнять поиск альбомов в Jamendo по ключевому слову, выводить список песен в выбранном альмобе, а также URL’ы потоков с этими песнями. Клиент полностью консольный, интерфейса у него в принципе нет — вся работа с ним осуществляется через ключи командной строки. Обусловлено это тем, что клиент планируется использовать в различных shell-скриптах.

Как уже думаю некоторые догадались, музыку он воспроизводить не умеет — я решил, что не стоит плодить сущности и наращивать сложность программы. Пусть музыку воспроизводит MPlayer или любая подобная программа, которая получит список URL’ов с песнями через какой-нибудь xargs или из файла, куда они были записаны моим клиентом.

Поскольку это моя первая программа на Clojure, буду рад разнообразным замечаниям по ее коду.

Ссылка на проект на GitHub’е: https://github.com/eugeneandrienko/jamendo-client

Ссылка на ещё один git репозиторий: git.eugene-andrienko.com/jamendo-client/log.html

14.08.2011

Простой и быстрый способ начать использовать SLIME и Emacs для разработки приложений на Clojure

В качестве IDE для Clojure я, в свое время, пытался использовать NetBeans и Eclipse. Но к сожалению (а может и к счастью), отношения у меня не сложились ни с той, ни с другой IDE.

Создание системы автоматической генерации HDL-кода

Protected the diploma

Сегодня утром я защитил диплом, нет не от захватчиков, а перед ГАКом. Защитил на отлично, теперь у меня научная степень бакалавра!

Тема диплома вынесена в название поста и касается системы "кремниевой компиляции" предложенной товарищем Рюкзаком в своем блоге.

В двух словах об этой системе. Разрабатываемая нашей студенческой научной группой система высокоуровневого синтеза облегчает для разработчика создание новых СнК, обеспечивающих реальное время. Ему (разработчику) достаточно лишь описать желаемое поведение системы на языке высокого уровня и на выходе он получает готовую железку, а точнее ее HDL-описание.

Моя задача во всем этом проекте — сделать систему HDL-синтеза, которая будет генерить описание целевой системы из данных, получаемых с верхних уровней инструментальной цепочки. Это набор неких стандартных и/или написанных пользователем системы функциональных блоков и описание взаимосвязей между ними, называемое описанием инфраструктуры стрелочного вычислителя.

Чтобы упростить разрабатываемую нами инструментальную цепочку, а также облегчить введение новых синтезируемых HDL, я ввел дополнительный уровень трансляции в виде специализированного языка описания аппаратуры Vericlo. Это что-то вроде verilisp’а, только на Clojure, как и вся наша инструментальная цепочка, и не мертвое.

Теперь, сначала описание инфраструктуры стрелочного вычислителя транслируется в Vericlo (планируется для этого описания использовать свой DSL, выполненный в виде еще одного этажа над Vericlo, который сам является надстройкой над Clojure). Ну а затем из Vericlo, все это транслируется в какой-нибудь синтезируемый HDL, на первых порах это будет Verilog.

Кто хочет узнать об этом подробнее:

К сожалению, полностью раскрыть всю информацию по инструментальной цепочке я не могу потому что мне тогда сломают ноги из соображений секретности.

P.S. Забавно, казалось бы только недавно спорил с товарищем udpn’ом на тему актуальности использования всяких ФП во встраиваемых системах и теперь я внезапно сам всем этим занимаюсь О_о. Жизнь иногда выкидывает абсолютно удивительные штуки…​

23.06.2011

Org-mode - вся твоя жизнь в plain-text формате!

Сегодня я собираюсь написать об одном расширении Emacs'а, которое способно изменить ваш распорядок жизни раз и навсегда. Эта небольшая программа, написанная на EmacsLisp'е, называется org-mode. Она создана, чтобы сделать человеческую жизнь организованной, чтобы не растрачивать зря драгоценные секунды и минуты...

11.04.2011

Управление своим временем

Этот пост будет несколько необычным - он не будет посвящен встраиваемым системам, линуксу и прочим штукам. Он будет посвящен тому, как я планирую свое время, что я для этого применяю и какую выгоду получаю от этого. Сравнивая свою производительность до и после я могу сказать только одно - она повысилась как минимум на порядок, я стал успевать делать гораздо больше разных полезных вещей, чем раньше. Возможно, мой опыт окажется кому-нибудь полезен.

Огромные изменения в разработке ядра компонентов "умного дома"

На днях я поговорил со своим научным руководителем о своих "достижениях" по "умному дому". Результатом разговора стало понимание того, что все, что я делал и придумывал раньше - ошибочно и не подлежит использованию в реальном проекте.

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-3

Потерпев неудачу с ATtiny2313 (по причине отсутствия поддержки нужного мне режима работы SPI) я решил использовать что-нибудь столь же недорогое и простое - например восьмую ATmeg'у.

xv6 - учебная операционная система для курса 6.828 в MIT

В MIT'шном курсе "Разработка операционных систем" (Operating System Engineering) используется простая, учебная операционная система, названная xv6. На нее я наткнулся, читая пост "Примеры хорошого кода" в блоге "Программирование — это просто!".

24.02.2011

Разрабатываем ядро для компонентов исполнительного уровня "умного дома"-2

С тех пор, как я написал предыдущий пост на эту же тему, в проекте произошли большие изменения, о которых я сейчас и расскажу.