Свободное ПО в электронике - 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)