25 дек. 2010 г.

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

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

8 дек. 2010 г.

Техническое задание на создание системы "Умный дом"

Наконец, я закончил написание техзадания... Предлагаю посмотреть его; разумная критика, замечания и предложения приветствуются.
При написании техзадания использовались следующие ГОСТы:
  • ГОСТ-34.602-89 - "Техническое задание на создание автоматизированной системы"
  • ГОСТ 34.201-89 - "Виды, комплектность и обозначение документов при создании автоматизированных систем"
  • ГОСТ 24.601-86 - "Стадии создания автоматизированных систем"
Внимание! Оформление техзадания не соответствует ГОСТу.

Посмотреть PDF-файл с техзаданием (TR.pdf, 204 Кб)
Скачать исходный LaTeX-файл с техзаданием (TR.tex, 45 Кб)

1 дек. 2010 г.

Использование сенсорных сетей при построении систем "умный дом".

При создании системы "умный дом" рано или поздно придется решать проблему обеспечения устойчивой, надежной и главное недорогой связи между всеми устройствами, входящими в "умный дом". Конечно, можно использовать "по старинке" проводную связь, но даже в случае какого-нибудь 1-Wire, объем прокладываемых проводов может быть значительным. А если какой-нибудь из проводов будет перебит, порван или прокушен домашним животным, то смерть если не всей системы, то хотя бы какой-то ее части будет гарантирована (а если все дублировать, то дом будет напоминать логово паука).
Решение данной проблемы лежит на поверхности - нужно использовать беспроводную связь! Но тут сразу появляется ряд вопросов, требующих разрешения...

23 нояб. 2010 г.

Плагин code_complete для Vim'a - автодополнение и сниппеты

Практически во всех современных средах разработки есть пара удобных возможностей - есть возможность видеть список параметров функции, введя имя этой функции и открывающую скобку, и автодополнение стандартных блоков кода, наподобие if () {} else {} и других.
Естественно, подобная функциональность не могла обойти стороной и текстовый редактор Vim (который, стоит отметить, являет собой нечто большее, чем просто текстовый редактор). Сниппеты и автодополнение параметров функций можно найти во множестве плагинов, лежащих на vim.org.
В своей статье, я хочу рассмотреть один плагин, в котором уже реализованы и сниппеты и автодополнение. Плагин называется code_complete (new update).

21 нояб. 2010 г.

Пишем драйвер ЖКИ для стенда SDK1.1

В стенде SDK1.1 есть жидкокристаллический индикатор (ЖКИ), который можно использовать в качестве устройства вывода информации в своих программах. Вот только производитель не поставляет драйверов к SDK1.1 для этого устройства - нужно самим разбираться во внутреннем устройстве ЖКИ и самим писать для него драйвер.
Я уже успел сделать это и в данной статье будет рассмотрен мой драйвер ЖКИ, а также основные принципы работы с ЖКИ, знание которых позволит заинтересованным людям написать свой драйвер.
В статье не будет рассматриваться программная генерация символов - для вывода информации на экран я буду использовать только те символы, что уже "зашиты" в ПЗУ ЖКИ.

18 нояб. 2010 г.

Shell в отдельном буфере vim'а

Лично мне, кажется весьма удобной возможность работать в консоли (например в том же bash'е) не отвлекаясь от любимого vim'а. Можно одновременно коммитить код или изменять структуру каталогов проекта или делать прочие подобные вещи не выходя из vim'а и не отвлекаясь на другие окна.
Раньше (пару лет назад), я искал плагин, который позволил бы открывать отдельный буфер с каким-нибудь shell'ом, но натыкался на предложения перекомпилировать vim, предварительно применив к его исходникам набор патчей. Естественно, меня не устраивало подобное положение вещей - мне хотелось простого плагина, а не плясок с бубном.
Оказывается, выход есть! Подобный плагин существует и называется Conque Shell.

31 окт. 2010 г.

Литературное программирование в Vim

Недавно, я наткнулся на описание и действующий пример концепции программирования, которая называется литературным или грамотным программированием (literate programming).
Согласно этой концепции программист больше не вынужден мучительно писать код и комментарии к нему. Достаточно написать подробную статью о своей программе, наподобие той, что на IBM developerWorks. После, при помощи специальной утилиты можно получить как готовый файл со статьей, так и исходный код.

2 окт. 2010 г.

Отчет о конференции Russian OpenSource Hardware

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

10 сент. 2010 г.

Отладочная плата SK-AT91SAM9260-SIM300

На днях, мне наконец-то пришла отладочная плата с ARM9 на борту, от магазина StarterKit.ru. Небольшой рассказ о ней, под катом.

26 авг. 2010 г.

Завершено портирование TNKernel на SDK2.0 (основан на чипе LPC2292)

За основу был взят уже имеющийся порт на LPC2106. А учитывая то, что TNKernel изначально разрабатывалась для процессоров архитектуры ARM, работа по портированию была не особо затруднительной.
Вот список изменений:

19 авг. 2010 г.

Пишем Hello-world для микроконтроллера архитектуры ARM7.

В этом посте я опишу как написать и скомпилировать Hello-world для микроконтроллера, входящего в состав SDK2.0 - LPC2292 от NXP Semiconductors. Естественно "Hello world!" будет аппаратный - мы подадим высокий уровень напряжения на одну из ног микроконтроллера.
Мое описание не будет изобиловать сложными техническими подробностями - за ними лучше всего обратиться к полезным ссылкам в конце статьи. Пост подойдет для людей, которые хотят просто взять и написать свою первую программу для ARM7 и, в дальнейшем, радоваться этому событию.

19 июл. 2010 г.

osd-slider - ползунок состояния для tiling WM и box'ов.

В "больших" DE, таких как KDE или GNOME, при изменении уровня яркости или громкости рисуется красивый ползунок, отображающий текущий уровень изменяемой величины:
К сожалению, подобного ползунка, но для какого-нибудь легковесного WM, как правило не предусмотрено. Например, появление в dwm подобного ползунка противоречит всей философии этого оконного менеджера. Но выход все же есть:


1 июл. 2010 г.

Скрипт для расшаривания интернета с одного компьютера на другой

Суть работы скрипта:
Есть компьютер-шлюз, у которого две сетевые карты - одна смотрит в интернет, а вторая в "сеть", состоящую из двух компьютеров - хоста и шлюза. Задача - раздавать интернет с шлюза компьютеру-хосту.

28 июн. 2010 г.

Виджет, отображающий расписание студенческой группы (ИТМО) на текущий день

Иногда (особенно когда плохая память на незначительные мелочи :-) ) бывает полезно постоянно иметь перед глазами расписание своей группы в универе. Ради этого, я написал набор из пары скриптов и конфига к conky, которые выводят на рабочий стол расписание группы на текущий день.

27 мая 2010 г.

Собираем свой кросскомпилятор для ARM.

Для задачи портирования маленькой RT оси на SDK2.0, внутри которого какой-то ARM7, нужно собрать компилятор, который будет собирать исполняемые файлы под архитектуру ARM, работая при этом на машине с x86_64 процессором. К сожалению, в интернете практически отсутствуют руководства по сборке своего кросскомпилятора - в основном, рекомендуется использовать какие-то монстры наподобие Buildroot или crosstool-ng, которые помимо кросскомпилятора собирают еще кучу софта, мне ненужного.
Методом "научного тыка" я похоже набрел на последовательность действий, которая позволила мне наконец-то собрать для себя кросскомпилятор.

21 мая 2010 г.

Использование VIm, как IDE для языка C.

Несмотря на утверждение, что Vim это всего лишь текстовый редактор и использовать его как IDE глупо, я довольно продолжительное время успешно использую Vim как IDE для языка C. В этом мне помогает набор удобных плагинов и периодически улучшаемый мною .vimrc.
К сожалению, я не встречал в Интернете статей, посвященных превращению Vim в IDE для C. Поэтому я решил написать свою :-).

17 апр. 2010 г.

Принципиальная схема стенда SDK1.1

Как и было обещано, в этом посте я рассмотрю принципиальную схему стенда. Желающие ознакомиться с ней прямо сейчас могут найти схему здесь.
В подобных принципиальных схемах в принципе нет ничего сложного - достаточно знать схемотехнику на уровне регистров, триггеров и иметь базовую информацию о том, что такое ПЛИС. Ничего страшного...

13 апр. 2010 г.

Чемоданчик для разработок в области сенсорных сетей - CC2530ZDK

Буквально вчера, в мои когтистые лапы попал весьма интересный набор железок - СС2530 ZigBee Development Kit. Этот набор можно применять для разработки приложений, которые используют возможности сенсорных сетей.
Также, Texas Instruments предоставляет на бесплатной основе стек протоколов Z-Stack, который совместим с ZigBee и который используется в CC2530.
Вначале, я вкратце объясню что такое сенсорные сети, ZigBee и прочие непонятные вещи.

21 мар. 2010 г.

Архитектура стенда SDK1.1

Как и было обещано, в этой статье я опишу архитектуру стенда SDK1.1. Начну со структурного описания, затем приведу характеристики стенда и информацию по отдельным узлам SDK1.1. Также будет дано описание используемой модели памяти и регистров ПЛИС.

16 мар. 2010 г.

Введение в SDK1.1

Я решил начать цикл статей, посвященных стенду SDK-1.1. Думаю, мои записи помогут тем, кому необходимо освоить данный стенд.
Все статьи будут отмечаться тегом sdk, для быстрого доступа ко всем статьям цикла.

15 мар. 2010 г.

Рабочие будни.

Сижу в аудитории, пишу отчет к первой лабораторной по ИУСу.
xmonad, gvim, apvlv (pdf).

14 мар. 2010 г.

Скрипт для быстрой активации двухмониторной конфигурации

Нижеприведенный скрипт предлагает пользователю выбрать какую конфигурацию использовать если будет обнаружено, что к системе подключено два монитора; если же подключен только один монитор, то выводится предупреждающее сообщение и скрипт завершается. Скрипт предназначен для использования в составе acpid'а - он должен вызываться при нажатии на определенную Fn кнопку, в соответствии с правилами acpid'а.
Зависимости: bash, xrandr, Xdialog, xosd.

13 мар. 2010 г.

Hello world!

Это реинкарнация недавно почившего h0rr0rr-drag0n.spb.ru, вследствие смерти хостинга plox.tor.hu
Тематика данного блога ровно такая же - IT и размышления об окружающем.