LINUX.ORG.RU

Сообщения Zubok

 

Свободное ПО в электронике - 2

Этот скрин - продолжение старой темы Свободное ПО в электронике..

Скрин очередной раз демонстрирует использование СПО в области разработки электроники. На экране проект контроллера торгового автомата (Vending Machine Controller), работу по которому меня попросили сделать. Проект реальный, никакое не хобби, за это платятся деньги. Что это за автомат, я рассказать не могу, так как, наверное, нельзя пока что. :)

В мою задачу входит сделать контроллер, который подключается к хост-компьютеру по USB. Контроллер управляет матрицей моторов, задвижками, принимает сигналы с концевиков, оптических датчиков и энкодера. Также этот контроллер работает с купюро- и монетоприемником (на фотографии) по последовательному протоколу MDB (физически это «токовая петля»), а также осуществляет обмен с хост-компьютером по протоколу (пока что) Modbus RTU. На хост-компьютере будет стоять Debian GNU/Linux по моей инициативе (уже поставил). Он-то и взаимодействует с пользователем. Будет удаленный доступ к автомату, возможность менять не только ПО, но и прошивку контроллера дистанционно.

Разработка велась по привычке в gEDA (gschem, pcb). Очередной раз не рекомендую пользоваться gEDA людям со слабыми нервами. Вообще, у меня накопились претензии к этому пакету. Посмотрим на перспективу их преодоления потом, так как в процессе работы не было времени читать рассылку. :)

Какие еще интересности. Пишу прошивку и параллельно делаю симулятор автомата на базе проекта simavr. Это открытый симулятор микроконтроллеров семейства AVR, написанный на Си. Симулятор в итоге предоставляет библиотеку libsimavr.so Случано его нашел. По-моему, тут брал: http://gitorious.org/simavr. Однако с документацией там плохо, поэтому пришлось кучу времени потратить, чтобы понять, как он работает по нескольким примерам в examples и исходному коду. Я к нему прилепил симуляцию всей периферии: микросхемы драйверов моторов, драйверы для реле, датчики, движение лифта и стола в реальном времени, срабатывание концевиков, задвижек, оптических датчиков в реальном времени, микроволновая печь и прочее, симулировал протокол купюро- и монетоприемника, энкодер. Все это уже написал сам. Сейчас еще сижу и дорабатываю, хочу посмотреть на перспективу сделать автоматизированное тестирование прошивок. Пока же смотрю логи с временными отметками глазами, а надо бы эти логи как-то скриптами покромсать. Также эмулируется хост-компьютер, но сделаю так, чтобы реальное пользовательское приложение могло работать с моделью как с реальным автоматом. Зато к железу можно не прикасаться вообще. Причем доступна отладка через avr-gdb напрямую из симулятора, а еще в этом симуляторе есть генерация временных диаграмм в формате VCD, которые можно смотреть в gtkwave, но у меня эта возможность не задействована. Моделирую аварийные ситуации, ошибки протоколов.

Извините за качество фото - дома только древняя мыльница.

>>> Просмотр (2568x2056, 1251 Kb)

 , gschem, , ,

Zubok
()

Операционная система GNU Emacs завоевывает десктоп! :)

Операционная система GNU Emacs получила новые возможности! Собрал волю в кулак и написал библиотеку, которая практически полностью реализует протокол X11. Библиотека незамысловато называется x11 и написана на чистом Emacs Lisp, но пока имеет статус technical preview, хотя в принципе уже можно писать что-то реальное. За основу пока взяты описания протокола на XML из проекта XCB, которые разворачиваются в реализацию. В результате имеем практически все расширения. Работа с протоколом осуществляется в асинхронном стиле подобно XCB. Чего пока нет:

  • MIT-SHM. Запросы реализованы, но работать через разделяемую память из операционной системы Emacs мы пока не можем, поэтому Будем через сокет закидывать. Тем более, что разница в скорости, говорят (видел где-то в инете замеры), не такая сумасшедшая.
  • XKB. Просто забыл реализовать пару конструкций XML, используемых для описания этого расширения. Это я скоро реализую, поэтому расширение будет работать в полном объеме.
  • Big-requests. Тоже будет реализовано. Расширение содержит всего один запрос. Он реализован. Но именно для этого расширения надо несколько перелопатить процедуры формирования запросов к серверу X, так как подсчет размеров запросов изменяется с этим расширением.
  • GLX. Огромнейший пласт. За него возьмусь сильно позже. Тут же еще надо полностью сгенерировать протокол GL, а он очень обширный.

Остальные расширения вроде бы должны работать, если их описания правильные и если я что-то не упустил принципиального. Я работу всех расширений даже не проверил, так как очень спешу радостью поделиться. :)

(размер экрана уменьшил до 1024x768, чтобы скриншот поменьше был)

На скриншоте сверху робкая демонстрашка в стиле LSD основного протокола X11 (Core protocol). Ну с arcs, rectangles и core fonts все и так понятно. А вот как выведены фотографии? Я пока не настолько крут, чтобы писать растеризацию jpg и png на Emacs Lisp. Пораскинув мозгами, пошел смотреть, чем может помочь ImageMagick. Оказалось, есть там возможность получить дамп картинки в нужном формате. Так и сделал: надо отобразить картинку - дергаем stream, она нам отдает дамп в буфер, мы его отсылаем в сервер X. «Привет, Isden» написана мышкой. Демка отслеживает событие motion-notify и рисует маленький квадратик под указателем. По кнопке «q» - выход (отслеживается событие key-press)

На скриншоте снизу робкая и неумелая демонстрашка расширения XRender. Тоже в стиле LSD. На ней мы видим linear gradient, radial gradient, треугольник и отрисовку сглаженных окружностей. Окружности состоят из трапезоидов. Алгоритм рассечения (tessellation) я применил первый, какой мне пришел в голову - горизонтальными трапециями. Какая есть проблема? Сглаженный текст! Что-то мне писать растеризацию TrueType или Type1 на Emacs Lisp не улыбается. Есть идея написать программку на Си с помощью Xft, которую я буду что-то просить растеризовать, а она результат будет отдавать в Emacs. То есть примерно как и с ImageMagick поступить.

Надо хорошенько переобдумать API библиотеки, чтобы его заморозить. При этом надо учесть потенциальные и вероятные будущие новшества в Emacs и в библиотеке, чтобы людям не пришлось переписывать то, что написано ранее. Есть недостатки в Emacs, которые реально мешают и раздражают. Преодолимы, конечно, но это будут костыли. Если интересно, то потом поясню, а то уже и так много воды налил.

Так что есть потенциальная возможность воплотить мечту atoku в жизнь. :)

Традиционная ссылка на обоину: #888888. Старую удалил, так как она надоела, а новую еще не искал. Этот серый цвет реально бесит. :)

>>> Просмотр (1024x1536, 254 Kb)

 , ,

Zubok
()

Свободное ПО в электронике.

Многое хочется написать. Во-первых, про разрешение 800х600 скажу, чтобы сразу не придирались. У меня сейчас стоит карта S3 Trio64V2, для которой я дорабатываю драйвер для Xorg. Так что низкое разрешение -- это рабочий момент.

На экране изображена моя текущая деятельность -- разработка инфракрасного датчика. Весь фетиш в том, что я, проявив героизм против фраз "Да что ты мучаешься! Поставь OrCAD! Делать тебе нечего?", использовал исключительно свободное ПО. Схему я создавал в gschem (проект gEDA). Трассировка ручками осуществлялась в PCB. Просмотр результатов перед передачей в производство -- gerbv. И вот результат труда вы видите на экране: экспериментальная партия однослойных печатных плат (25 шт.) с маской и шелкографией, изготовленная в Зеленограде. Проект передавался в производство в формате Gerber RS-274X, файл для сверлильного станка в формате NC drill/Excellon. У технолога не возникло ни единого вопроса, кроме способа разделки плат (фрезерование или скрайбирование).

Дистрибутив Debian. Разработка начиналась в пакетах, которые идут с дистрибутивом (последние стабильные срезы), но потом я перешел на версии CVS (только опакетил для Etch), так как предполагаю помогать проекту. Там огромнейший фронт работ по недостаткам, глюкам и фичам. В планах также написание русскоязычного руководства по использованию пакета программ: от проекта до производства. Но когда это буду делать, я еще не знаю. Поймите, времени очень мало.

Резюме: свободное ПО (с соотв. трудностями) можно использовать при производстве электроники. Предлагать переходить на это ПО людям, сто лет сидящим на ворованном OrCAD, PCAD и пр., я не советую. Пока к людям не придет осознание (либо приказ сверху), что использовать ворованный, дорогой продукт -- это очень плохо и опасно, то изменить что-то не получится. Поскольку я сам для себя хозяин в данном вопросе, и ко мне в мастерскую никакая сволочь с советами не лезет, то мне проще.

>>> Просмотр (800x600, 262 Kb)

Zubok
()

RSS подписка на новые темы