Разработка драйверов устройств
Для многих электронных устройств, будь то PCI плата или USB девайс, очень часто требуется написание специализированного программного обеспечения и/или драйверов.
Драйвера устройств позволяют пользовательским приложениям получать доступ к функциям оборудования.
Именно драйвера устройств, находясь в ядре операционных систем, выполняют низкоуровневое программирование портов ввода вывода, могут отобразить физическое пространство портов платы в память пользовательсткого процесса, запрограммировать передачу данных по DMA (Direct Memory Access), выполнить обработку прерывания.
Написание драйверов - это трудная задача. Драйвера работают с оборудованием и ошибки в драйверах могут обернуться крахом операционной системы.
Специалисты "Инпро Плюс" имеют богатый опыт по созданию драйверов устройств для операционных систем Windows и Linux.
Мы используем Microsoft WDK, Windows Driver Kit для реализации драйверов для ОС Windows. WDK содержит набор из средств разработки, заголовочных файлов, библиотек, утилит необходимых для написания драйверов.
Для отладки драйверов Windows используется инструмент Microsoft WinDbg. С его помощью можно вести отладку кода ядра и приложений Windows, устанавливать точки останова, смотреть состояния регистров процессора, дамп памяти и многое другое.
Опыт написания драйверов Windows:
- miniport/display/framebuffer,
- audio,
- genpio,
- bus driver.
Написать драйвер для ОС Linux так же не очень просто. Задача усложняется тем, что в различных системах могут использоваться разные версии ядра (kernel) операционной системы и даже разные типы процессоров. Тем не менее, все возможно и все в наших руках.
Наш опыт написания драйверов Linux:
- genpio,
- USB HID,
- использование USBIP,
- video/framebuffer,
- jpeg decoder.
Зачастую, использование Linux для встраиваемых систем не только предпочтительно, но и является единственно возможным и приемлимым решением.
Платы разработчика серии "Марсоход"
- Подробности
- Категория: slide
- Опубликовано 01.08.2013 23:29
- Автор: Super User
- Просмотров: 17129
Компания "Инпро Плюс" разработала, производит и распространяет / продает серию универсальных плат разработчика.
Сейчас существует две платы: первая, более простая, выпускается под названием Марсоход. Она создана на базе CPLD MAX II EPM240T100C5 компании Альтера.
Вторая плата более сложная. Это Марсоход2, на основе FPGA Cyclone III EP3C10E144C8 Альтеры.
Обе платы идеально подходят для изучения технологии FPGA/CPLD, моделирования и проектирования недорогих цифровых устройств. Освоение плат и методов проектирования доступно энтузиастам, студентам вузов, специалистам технологических компаний.
Мы подготовили обучающие материалы по языку описания цифровой аппаратуры Verilog HDL, а так же, по использованию среды проктирования Altera Quartus II.
Большая база данных готовых проектов для плат разработчика позволяет быстрее освоиться с новой технологией начинающим разработчикам.
Более подробные спецификации плат приведены ниже:
Плата Марсоход.
Краткие технические параметры платы:
- CPLD MAX II EPM240T100C5, 240 логическх элементов
- напряжение питания - от +2.5В до +4.6В (VCC)
- всего пользовательских пинов - 22
- из них повышенной мощности (для моторов) - 6
- максимальный ток одного пина - 25 ма
- максимальный ток моторого пина - 250 ма
- входное напряжение на пин от -0.7В до VCC+0.7В
- внутренний генератор ~ 5мГц
- размер - 50х50х12мм
- вес - 13г

Подробнее о плате Марсоход можно узнать на сайте продукта.
Плата Марсоход2
Краткие технические параметры:
- Микросхема ПЛИС Cyclone III EP3C10E144C8 компании Альтера. Она предоставляет разработчику следующие ресурсы:
а) Логических элементов - 10320;
б) Память - 414Кбит;
с) Встроенных умножителей - 23;
д) Количество PLL - 2.
Подробная документация на микросхему:
Altera Cyclone III Device Handbook (6.45 Мбайт)
- Микросхема FTDI FT2232H. Реализует связь платы Марсоход2 и ПЛИС с комьютером через HighSpeed USB 2.0. Микросхема предоставляет 2 независимых интерфейса А и В. Интерфейс А используется для реализации встроенного JTAG программатора MBFTDI. Кроме этого, интерфейс А (JTAG) используется для внутрисхемного захвата и анализа сигналов пользовательских проектов с помощью программы Altera SignalTap. Интерфейс В может использоваться для как виртуальный последовательный порт, скорость передачи 12Мбит/сек.
- Микросхема SDRAM MT48LC4M16A2-75 компании Micron. (
Micron 64Mbit SDRAM 4x1Mx16bit (3.55 Мбайт))
Четыре банка по 1,048,576 шестнадцатиразрядных слова. Итого, 64Мбита (или 8Мбайт, что то же самое). - Микросхема аналогово-цифрового преобразователя ADC1175 (
ADC1175 8-Bit, 20MHz, A/D Converter (487.96 Кбайт)). - Кварцевый генератор 100Мгц.
- Две пользовательские кнопки.
- Четыре пользовательских светодиода.
- Разъем VGA и цифроаналоговые преобразователи на резисторах R2R, реализующий HIGH-COLOR DAC (5 бит красный, 6 бит - зеленый и 5 бит синий).
- Разъемы для установки плат расширения. 16 свободных пользовательских контактов.
Питание платы +5В, производится из разъема USB, установленного на плату.

Подробнее о плате Марсоход2 можно узнать на сайте продукта.
Программатор MBFTDI.
Программатор построен на микросхеме компании FTDI FT2232HL
Программатор может использоваться как переходник из USB в последовательный порт Usb2Com, как программно управляемый параллельный порт в режиме bitbang, как JTAG программатор из среды Altera Quartus II

Наш портал для всего проекта Марсоход: http://marsohod.org
IPCores, Интеллектуальныя собственность
- Подробности
- Опубликовано 21.06.2013 23:22
- Просмотров: 10527
Довольно часто в различных проектах цифровых устройств на базе ПЛИС требуются модули или компоненты выполняющие похожие функции.
В таких случаях целесообразно оформлять функционально законченные модули в так называемые "ядра". IP Core - это и есть "ядро". Это модуль или узел цифровой схемы созданный на языке описания аппаратуры Verilog HDL или VHDL.
Например, разрабатываем плату видеоадаптера и плату видеозахвата для персонального компьютера. В обоих случаях в этих проектах для ПЛИС потребуется модуль контроллера шины PCI.
Следующий пример: для проекта видеоконтроллера и проекта системы на кристалле требуются похожие модули интерфейса к динамической памяти.
Ядро написано один раз, а используется многократно в разных проектах. Ядро, протестированное и отлаженное в одном проекте, пригодится в другом. Ядра-модули, как правило, параметризованы, что позволяет легко адаптировать их к разным проектам. Использование готовых ядер сокращает время разработки и отладки новых проектов.
Спекиалисты ООО "Инпро Плюс" имеют богатый опыт использования IP ядер разных производителей.

Мы использовали в своих проектах мегафункции компании Альтера и свободные модули Opencores.
Компания ООО "Инпро Плюс" так же обладает многими IP Cores собственной разработки. Наши модули использованы в разных проектах и испытаны в реальной аппаратуре.
Наши модули:
- контроллер шины PCI, PCI Master и PCI Slave;
- контроллер шины USB1.1, USB Host и USB Device;
- контроллер динамической памяти SDRAM;
- процессор собственной архитектуры;
- модуль оцифровки видеосигнала;
- модуль распознавания образов (автономеров).
Пример установленного ядра в топ-модуль проекта (фрагмент схемы):

Наши IP модули, IPCores - это наш опыт разработки. IPCores и опыт позволяют нам выполнять новые проекты быстро и качественно.

