На правах рекламы:
ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Авторитетность издания

ВАК - К1
RSCI, ядро РИНЦ

Добавить в закладки

Следующий номер на сайте

4
Ожидается:
09 Декабря 2024

Создание USB 2.0 периферийного устройства на основе двухпроцессорной системы на кристалле К1867ВЦ3АФ

Developing USB 2.0 device based on dual-core system on a chip К1867ВЦ3АФ
Статья опубликована в выпуске журнала № 3 за 2013 год. [ на стр. 205-209 ]
Аннотация:В статье кратко рассмотрена архитектура современной системы на кристалле К1867ВЦ3АФ, содержащей два процессорных ядра, память и набор периферийных устройств. Описана коммуникация между персональным компьютером и системой на кристалле посредством интерфейса USB 2.0. Для коммуникации с персональным компьютером реализованы специализированное ПО в соответствии с требованиями стандарта USB 2.0 на языке ассемблера, выполняемое системой на кристалле, пользовательское ПО, работающее в операционной системе Windows, с помощью которого пользователь может инициировать чтение данных с USB-устройства или запись данных в память USB СнК К1867ВЦ3АФ. Реализован также драйвер для операционной системы Windows, позволяющий осуществлять об-мен данными между системой на кристалле и персональным компьютером.
Abstract:The architecture of modern system on a chip K1867VTS3AF containing two digital signal processor cores, memory and a set of peripheral devices is considered in the article. Realization of communications between the personal computer and system on a chip using interface USB 2.0 is considered. The special software is developed on the assembler language for the SoC in compliance with requirements of USB 2.0 standard for communications with personal computer.The user software for OS Windows giving the user the opportunity toinitiate data transfers between K1867VTS3AF USB device and PC is developed. The driver of the K1867VTS3AF USB device for OS Windows is also developed.
Авторы: Конарев М.В. (mkonarev@mail.ru) - Воронежская государственная лесотехническая академия, г. Воронеж, Россия, кандидат технических наук, Макеев С.Н. () - Воронежский государственный технический университет (аспирант ), Воронеж, Россия
Ключевые слова: микросхема., winusb, процессор цифровой обработки сигналов, интерфейс usb 2.0, система на кристалле
Keywords: microcircuit, winusb, digital signal processor, interface usb 2.0, system on a chip
Количество просмотров: 10978
Версия для печати
Выпуск в формате PDF (13.63Мб)
Скачать обложку в формате PDF (1.39Мб)

Размер шрифта:       Шрифт:

Двухпроцессорная система на кристалле (СнК) К1867ВЦ3АФ построена на базе сложно-функциональных блоков (СФ-блоков): ядра процессора 1867ВЦ3Ф [1], контроллера Ethernet 10/100, контроллера USB 2.0 Device, контроллера MilStd1553 и контроллера UART 16550 с буфером FIFO на 64 байта. Кроме перечисленных устройств, СнК содержит двухпортовую буферную память объемом 4К´32 бита для контроллеров Ethernet 10/100 и USB 2.0 Device, четыре буфера объемом 4´3К´16 бит для контроллера MilStd1553, а также два блока локальной памяти объемом 32К´32 бита каждый, подключенных к локальным шинам каждого из процессоров.

Разработанная СнК предназначена прежде всего для решения коммуникационных и терминальных задач. Сверхбольшая интегральная схема СнК может выполнять функции универсальной связной машины, вычислительного ядра распределенной системы управления, системы сбора и обработки данных, а также выполнять функции узла сосредоточенной или распределенной мультипроцессорной системы [2].

Наличие стандартных интерфейсов общего назначения дает возможность разработчикам радиоэлектронной аппаратуры адаптировать К1867ВЦ3АФ для применения в системах различного назначения. Данная статья посвящена осуществлению коммуникации между персональным компьютером (ПК) с операционной системой (ОС) Windows XP или Windows 7 и разработанной СнК К1867ВЦ3АФ посредством распространенного интерфейса USB 2.0 [3].

Контроллер USB 2.0 Device реализует Universal Serial Bus интерфейс типа «точка-точка» в соответствии со стандартом [3] и выполняет функции периферийного устройства. Он имеет стандартный интерфейс UTMI (Universal Trans­ceiver Macrocell) [4] для подключения интегральной схемы физического уровня, например, интегральной схемы USB3250 фирмы SMSC [5].

В соответствии со спецификацией USB 2.0 любые операции по передаче данных инициирует USB-хост. Периферийные устройства сами начать обмен данными не могут, они только реагируют на команды хоста. Спецификация USB достаточно жестко определяет набор свойств, которые должны поддерживать любые USB-устройства [3, 6]:

–      конфигурирование – после включения или сброса устройство должно предоставлять нулевой адрес для конфигурирования его портов;

–      адресация – устройство должно устанавливать и отзываться на назначенный ему уникальный адрес, и только на него;

–      передача данных – устройство имеет набор конечных точек для обмена данными с хостом; для конечных точек, допускающих разные типы передач, после конфигурирования доступен только один из них.

Для осуществления обмена данными между ПК и СнК К1867ВЦ3АФ требуется следующее:

–      ПО, работающее на К1867ВЦ3АФ; оно должно проинициализировать интерфейс USB 2.0 на микросхеме, уметь конфигурировать интерфейс, обрабатывать команды, поступающие с USB-хоста на ПК, обрабатывать необходимые прерывания USB;

–      функциональный драйвер нашего USB-уст­ройства, обеспечивающий взаимодействие пользователя с ОС с одной стороны и с системным драйвером с другой;

–      пользовательское ПО, работающее в ОС Windows, с помощью которого пользователь может инициировать чтение данных с USB-устрой­ства или запись данных в память USB СнК К1867ВЦ3АФ.

Программа для работы с функциональным блоком USB 2.0 микросхемы К1867ВЦ3АФ

Ядро процессоров К1867ВЦ3АФ на уровне ассемблера и объектного кода совместимо с процессором цифровой обработки сигналов TMS320C40 фирмы Texas Instuments (TI), что позволяет использовать отладочные средства TI, например Code Composer C4x.

ПО для работы с USB-интерфейсом должно выполнять следующие действия:

–      инициализировать USB-интерфейс и внутренние переменные;

–      производить обмен данными по USB-шине, включая процедуру нумерации и обработку запросов от USB-хоста.

В процессе инициализации USB-интерфейса программа конфигурирует конечные точки. Конечная точка – часть USB-устройства, которая имеет уникальный идентификатор и является получателем или отправителем информации, передаваемой по шине USB. Данные конечной точки могут быть или принятыми, или ожидающими отправки к хосту.

Любое USB-устройство имеет конечную точку с нулевым номером, позволяющую хосту опрашивать устройство для определения его типа и параметров, выполнять инициализацию устройства. Поэтому прежде всего необходимо сконфигу- рировать нулевую конечную точку на управляющие передачи, максимальный размер пакета для USB 2.0 следует задать равным 64. Фрагмент программного кода на языке ассемблера для К1867ВЦ3АФ выглядит так:

;2000840 – Control transfer, MAX_PL_SZ=64

ldhi 200h, AR0

or 0840h, AR0

sti AR0, @EP0_CSR

Описание полей регистров USB, а также ассемблера для процессорного ядра дано в [1].

Управляющие передачи (Control) используются хостом для конфигурирования устройства во время подключения, для управления устройством и получения статусной информации во время работы. Доставка управляющих передач гарантирована протоколом.

Кроме управляющей конечной точки, определим две конечные точки для передачи массивов данных (Bulk), которые используются для гарантированной доставки данных при нефиксированном времени доставки: одну типа IN для передачи данных к хосту на ПК и одну типа OUT для приема данных от хоста:

;6040840 - IN, Bulk, MAX_PL_SZ=64

ldhi 604h, AR0

or 0840h, AR0

sti AR0, @EP1_CSR

;A080A00 - OUT, Bulk, MAX_PL_SZ=512

ldhi 0A08h, AR0

or 0A00h, AR0

sti AR0, @EP2_CSR

Далее в программе необходимо проинициализировать указатели буферных регистров, куда будут помещаться данные, полученные от хоста, и откуда будут считываться данные при запросе их хостом. Следует также разрешить необходимые прерывания:

–      получен управляющий пакет для конечной точки типа Control;

–      отправлен пакет данных для точки типа IN;

–      получен пакет с данными для точки типа OUT.

Фрагмент программы, разрешающей прерывания:

ldhi 040h, AR0 ;Receive Control Packet enable

sti AR0, @EP0_INT

ldhi 4000h, AR0

sti AR0, @EP1_INT ;Transmitted Data Packed enable

ldhi 2000h, AR0

sti AR0, @EP2_INT ;Receive Data Packed enable

Далее в программе запускается функциональный блок USB, после чего процессор ожидает и обрабатывает прерывания.

Каждое USB-устройство имеет набор дескрипторов, то есть структур данных, позволяющих хосту получить описание устройства. Каждый дескриптор содержит информацию либо об устройстве в целом, либо о его части. Устройство должно хранить свои дескрипторы и пересылать их хосту в ответ на его запрос.

Описание различных типов дескрипторов приведено в [3, 6]. Для установки драйвера устройства и обмена данными между ПК и К1867ВЦ3АФ необходимо, чтобы по соответствующему запросу устройство выдавало стандартный дескриптор устройства, дескриптор конфигурации, дескриптор интерфейса, дескрипторы конечных точек, кроме управляющей. К тому же устройство должно устанавливать адрес по запросу хоста. Описание минимально необходимого набора дескрипторов приведено в таблице.

При подключении устройства к ПК в процессе нумерации хост считывает стандартный дескриптор устройства, посылая запрос по адресу 0 для конечной точки номер 0. Затем хост назначает устройству уникальный адрес, посылая соответствующий запрос. Далее хост считывает конфигурацию устройства, включая дескрипторы конфигураций, интерфейсов и конечных точек. Только после получения конфигурации устройства возможны поиск и установка функционального драйвера USB.

Приведем алгоритм обработки запросов хоста.

1.     Создать обработчик прерываний. Получен управляющий пакет для нулевой конечной точки.

2.     Считать код последнего запроса хоста из OUT-буфера нулевой управляющей конечной точки в этом обработчике. В зависимости от кода запроса вызвать соответствующую программу обработки. Коды некоторых запросов: 01000680 – стандартный дескриптор устройства, 02000680 – дескриптор конфигурации, 00010500 – установить адрес 1. Полный список приведен в [3, 6].

3.     Подпись: Некоторые дескрипторы USB-устройства К1867ВЦ3АФ
Поле	Значение	Описание
Стандартный дескриптор устройства: 02000112 40000000 00077007 00000001 00000100
bLength	12h	Размер дескриптора в байтах
bDescriptorType	01h	Тип дескриптора
bcdUSB	0200h	Версия протокола USB
bDeviceClass	00h	Код класса USB
bDeviceSubClass	00h	Код подкласса устройства USB
bDeviceProtocol	00h	Код протокола USB
bMaxPacketSize0	40h	Максимальный размер пакета для нулевой конечной точки
idVendor	7007h	Идентификатор изготовителя устройства
idProduct	0007h	Идентификатор продукта
bcdDevice	0001h	Версия устройства
iManufacturer	00h	Индекс дескриптора строки изготовителя
iProduct	00h	Индекс дескриптора строки продукта
iSerialNumber	00h	Индекс дескриптора строки серийного номера продукта
bNumConfigurations	01h	Количество возможных конфигураций
Дескриптор конфигурации: 00200209  40000101  00000050
bLength	09h	Размер дескриптора в байтах
bDescriptorType	02h	Тип дескриптора
wTotalLength	0020h	Общий объем данных в байтах для данной конфигурации
bNumInterfaces	01h	Количество поддерживаемых интерфейсов
bConfigurationValue	01h	Идентификатор конфигурации
iConfiguration	00h	Индекс дескриптора строки данной конфигурации
bmAttributes	40h	Характеристики
MaxPower	50h	Код потребляемой мощности
Дескриптор интерфейса: 00000409  FFFF0002 00000000
bLength	09h	Размер дескриптора в байтах
bDescriptorType	04h	Тип дескриптора
bInterfaceNumber	00h	Номер данного интерфейса
bAlternateSetting	00h	Альтернативный номер интерфейса
bNumEndpoints	02h	Число конечных точек без учета нулевой
bInterfaceClass	00h	Код класса интерфейса
bInterfaceSubClass	FFh	Код подкласса
bInterfaceProtocol	FFh	Код протокола
iInterface	00h	Индекс дескриптора строки
Дескрипторы конечных точек: 02810507 00000200 (первая конечная точка типа IN), 
02020507 00000200 (вторая конечная точка типа OUT)
bLength	07h	Размер дескриптора в байтах
bDescriptorType	05h	Тип дескриптора
bEndpointAddress	81h / 02h	Код адреса конечной точки
bmAttributes	02h	Атрибуты конечной точки
wMaxPacketSize	0200h	Максимальный размер пакета
bInterval	00h	Интервал опроса
Установить в программе обработки запроса указатель буфера конечной точки типа IN на область памяти USB, где хранится соответствующий дескриптор; размер буфера необходимо задать равным размеру запрашиваемого дескриптора. В отдельных случаях  следует занести значение в регистр USB.

Приведем фрагменты программы анализа типа дескриптора и обработки дескриптора установки адреса:

ReadControl:

RC1 ldi *AR7++, R0 ;R0 – первое слово

ldi *AR7++, R1 ;R1 – второе слово дескриптора

lhu0 R0, R2 ;R2 – младшее полуслово

cmpi 0680h, R2 ;Запрос Device Descriptor

callz DeviceDescr

cmpi 0500h, R2 ;Запрос Set Adress

callz SetAdrDescr

subi 2, R8

bp RC1 ;если больше одного дескриптора

rets

SetAdrDescr;Set Function Adr

lbu2 R0, AR0

sti AR0, @FA

rets

Функциональный USB-драйвер для К1867ВЦ3АФ

Для работы с USB-устройством в ОС Windows необходимо установить драйвер. В комплект ОС входит набор драйверов для работы с устройствами различных классов. Для обмена данными между ПК и микросхемой авторы использовали драйвер WinUSB [7, 8]. С его помощью можно достаточно просто и быстро реализовать пользовательское приложение в ОС Windows для работы с СнК К1867ВЦ3АФ через интерфейс USB. Драйвер состоит из двух частей: функциональный драйвер WinUsb.sys, а также библиотека WinUsb.dll, содержащая набор функций WinUSB API.

Приведем список некоторых функций WinUSB API: GetDevicePath – получение дескриптора устройства с применением его GUID, WinUsb_Initiali­ze – инициализация WinUSB-устройства, WinUsb_ ControlTransfer – передача управляющего пакета, WinUsb_WritePipe – запись данных в указанную конечную точку, WinUsb_ReadPipe – чтение данных из конечной точки (подробнее см. [8]).

Пользовательское приложение может взаимодействовать с драйвером WinUsb.sys через функции WinUSB API. Демонстрационное приложение написано в среде Microsoft Visual Studio .NET 2008 на языке С#.

Следует отметить, что используемый драйвер имеет несколько недостатков: доступ к устройству возможен только со стороны одного приложения, драйвер не поддерживает изохронные передачи данных. Если для пользователя это критично, необходимо написать специальный драйвер, используя Windows Driver Model.

Таким образом, создан аппаратно-програм­мный комплекс, состоящий из СнК К1867ВЦ3АФ, ПК и ПО, позволяющий обмениваться информацией на скорости до 480 Мбит/с.

Литература

1.     Микросхемы интегральные 1867ВЦ3Ф. Техническое описание. URL: www.niiet.ru/product/product.htm (дата обра­щения: 31.07.2012).

2.     Попов С.О., Крюков В.П., Данильченко Н.В. Двухпроцессорная СБИС СнК К1867ВЦ3АФ // МЭС 2011: сб. тр. С. 73–78.

3.     Universal Serial Bus Specification Revision 2.0. URL: www.usb.org (дата обращения: 31.07.2012).

4.     USB 2.0. Transceiver Macrocell Interface (UTMI) Specification. Intel Corp, URL: www.intel.com (дата обращения: 31.07.2012).

5.     USB3250, Data Sheet, SMSC. URL: www.smsc.com (да­та обращения: 31.07.2012).

6.     Айгуров П.В. Интерфейс USB. Практика использования и программирования. СПб, БХВ-Петербург, 2004. 576 с.

7.     Конарев М.В. Опыт создания USB 2.0 устройства на основе системы на кристалле K1867ВЦ3АФ // Современные проблемы информатизации: сб. тр. междунар. открытой науч. конф. Воронеж: Научная книга, 2012. Вып. 17. С. 305–308.

8.     How to Use WinUSB to Communicate with a USB Device., URL: http://www.microsoft.com/whdc/connect/usb/winusb­ howto.mspx (дата обращения: 31.07.2012).

References

1.     1867VTS3F Integrated microcircuits. Technical manual, available at: www.niiet.ru/product/product.htm (accessed 31 July 2013).

2.     Popov S.O., Kryukov V.P., Danilchenko N.V., Sbornic trudov konf. MES 2011 [Proc. of MES 2011 conf.], pp. 73–78.

3.     Universal Serial Bus Specification Revision 2.0, available at: www.usb.org (accessed 31 July 2013).

4.     USB 2.0. Transceiver Macrocell Interface (UTMI) Specification. Intel Corp., available at: www.intel.com (accessed 31 July 2013).

5.     USB3250. Data Sheet. SMSC, available at: www.smsc. com (accessed 31 July 2013).

6.     Aigurov P.V., Interfeys USB. Praktika ispolzovaniya i programmirovaniya [USB interface. Using and programming], SPB, BHV-Peterburg, 2004.

7.     Konarev M.V., Sovremennye problemy informatizatsii: sbornik trudov otkrytoy nauchnoy konf. (Modern problems of informatization: proc. of openscientific conf.), Voronezh, 2012, pp. 305–308.

8.     How to Use WinUSB to Communicate with a USB Device, available at: http://www.microsoft.com/whdc/connect/usb/ winusb_ howto.mspx (accessed 31 July 2013).


Постоянный адрес статьи:
http://swsys.ru/index.php?page=article&id=3589
Версия для печати
Выпуск в формате PDF (13.63Мб)
Скачать обложку в формате PDF (1.39Мб)
Статья опубликована в выпуске журнала № 3 за 2013 год. [ на стр. 205-209 ]

Возможно, Вас заинтересуют следующие статьи схожих тематик: