*******************************************************
* *
* U S B - Support for Turbo-Pascal *
* *
* *
* (c) 1998 by Dieter R. Pawelczak <dieterpbigfoot.de> *
* *
*******************************************************
User Serial Bus (USB) представляется хорошим решением для обмена
данными со встроенными системами, поскольку поддерживает высокую
скорость передачи кадров (до 1 ms), что вполне достаточно для
многих задач управления приложениями с обратной связью.
Небольшая проблема состоит лишь в том, что USB поддерживается
только в системах начиная с Windows 98.
Использование USB во встроенной системе позволяет значительно
повысить эффективность работы с ней, поскольку после установления
связи USB контроллер может работать в фоновом режиме за счет
использования DMA и 1-миллисекундной синхронизации.
Я разработал для себя простое устройство для управления скоростью
работы двигателя на базе микроконтроллера USBN9602 фирмы National
Semiconductors. Для проверки работоспособности своего устройства
я написал базовые функции для управления USB контроллером и
провел несколько экспериментов по передаче данных по шине USB.
Прилагаемые модули осуществляют инициализацию и управление
контроллером USB. В качестве примера доступа и конфигурации USB
устройства, я прилагаю программу HUBDISCO, которая инициализирует
и конфигурирует 4-х портовый хаб на базе TUSB2040 от Texas
Instruments, и переключает потоки через порты.
Приведенный пример работает в реальном режиме поскольку для него
требуется соответствие физического адреса линейному адресу в
памяти.
Модули были написаны исключительно в целях тестирования, и не
претендуют на роль всеобъемлющего инструмента для работы с USB.
Программы тестировались на нескольких разных материнских платах и
разных процессорах.
Хотя модули разрабатывались для Turbo Pascal 7.0, они с
незначительными изменениями могут быть использованы и для Turbo
Pascal 6.0. Вкрапления инлайновых ассемблерных инструкций - это,
в основном, команды доступа к 32-разрядным портам, которые не
поддерживаются Turbo Pascal.
USB.PAS: basic USB routines
PCI.PAS: access of PCI devices
DUTILS.PAS: utility unit
HUBDISCO.PAS: example program
USB.PAS: основные подпрограммы для работы с USB
PCI.PAS: доступ к PCI устройствам
DUTILS.PAS: сервисный модуль
HUBDISCO.PAS: тестовая программа
Принцип работы модулей основан на спецификации USB v1.1 и
документации Intel UHCI.
Литература
Спецификация USB, Версия 1.1., см. http://www.usb.org
Документация Intel UHCI, Intel PIIX4, см. http://www.intel.com
P.S.
Поскольку я не собираюсь далее работать с USB, это последний
релиз данных модулей.
*******************************************************
* *
* U S B - Support for Turbo-Pascal *
* *
* *
* (c) 1998 by Dieter R. Pawelczak <dieterpbigfoot.de> *
* *
*******************************************************
For many embedded systems USB seems to be a good solution for
data acquisition modules - as USB supports a frame rate of 1 ms
which is fast enough for many feedback control applications. The
problem now is that USB is currently only supported by Windows 98
and updates of Windows 95. The design of the USB host controller
again emphasizes the possibilities using USB in an embedded
System: Once the USB communication is established, the host
controller can work in the background using DMA-memory transfers
- accompanied with a synchronous interrupt every millisecond, a
real time feedback control system is easily established.
For a simple motor velocity control I developped a
microcontroller board with the USBN9602 controller by National
Semiconductors. For a simple test environment I created some
basic routines to access the USB host controller and did some
experiments on the USB transfers. The following Turbo-Pascal
units allow the initialization and the control of the USB host
controller. As an example how to access and configure a USB
device, I added the example program HUBDISCO, which enables and
configures a 4-port HUB (using TUSB2040 from TI) and switches
through its downstream ports.
The example must be run in real mode environment as it needs the
fact:
physical address == linear address.
These units have been created for testing purpose only and don't
present a complete USB environment. It has been tested on several
different main boards and processor types (Intel PIIX4,PIIX3).
The units are created for Turbo-Pascal 7.0, but should run with
some minor changes with Turbo-Pascal 6.0. The strange looking
inline asm instructions are mainly 32 bit port access commands,
which are not supported by Turbo Pascal.
USB.PAS: basic USB routines
PCI.PAS: access of PCI devices
DUTILS.PAS: utility unit
HUBDISCO.PAS: example program
The units are based on the USB specification Version 1.1 and the
Intel UHCI documentation.
Literature
USB-Spec., Version 1.1., see http://www.usb.org
Intel UHCI, Intel PIIX4 documentation, see http://www.intel.com
Dieter R. Pawelczak, January 1999
As I don't work on the USB-sector any longer, this is a final
release of the units.
|