Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Аппаратные Средства    >>    usb4pas
   
 
 USB Support for Turbo-Pascal [TP7]   Dieter R. Pawelczak 25.01.99

Модуль для работы с внешним USB устройством. В архив дополнительно входит модуль доступа к PCI устройствам и тестовая программа.
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).



13k 
 

******************************************************* * * * 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.