Journal influence
Bookmark
Next issue
Developing USB 2.0 device based on dual-core system on a chip К1867ВЦ3АФ
The article was published in issue no. № 3, 2013 [ pp. 205-209 ]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.
Аннотация:В статье кратко рассмотрена архитектура современной системы на кристалле К1867ВЦ3АФ, содержащей два процессорных ядра, память и набор периферийных устройств. Описана коммуникация между персональным компьютером и системой на кристалле посредством интерфейса USB 2.0. Для коммуникации с персональным компьютером реализованы специализированное ПО в соответствии с требованиями стандарта USB 2.0 на языке ассемблера, выполняемое системой на кристалле, пользовательское ПО, работающее в операционной системе Windows, с помощью которого пользователь может инициировать чтение данных с USB-устройства или запись данных в память USB СнК К1867ВЦ3АФ. Реализован также драйвер для операционной системы Windows, позволяющий осуществлять об-мен данными между системой на кристалле и персональным компьютером.
Authors: (mkonarev@mail.ru) - , Russia, Ph.D, () - , Russia | |
Keywords: microcircuit, winusb, digital signal processor, interface usb 2.0, system on a chip |
|
Page views: 10463 |
Print version Full issue in PDF (13.63Mb) Download the cover in 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 Transceiver 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. Установить в программе обработки запроса указатель буфера конечной точки типа 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_Initialize – инициализация 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). |
Permanent link: http://swsys.ru/index.php?page=article&id=3589&lang=&lang=en&like=1 |
Print version Full issue in PDF (13.63Mb) Download the cover in PDF (1.39Мб) |
The article was published in issue no. № 3, 2013 [ pp. 205-209 ] |
Perhaps, you might be interested in the following articles of similar topics:
- Матрично-топологический метод математического и компьютерного моделирования температурных полей в электронных модулях: программный комплекс STF-ElectronMod
- Инъектор сбоев для тестирования микропроцессоров типа система на кристалле к одиночным сбоям
- Проблемы создания высокотемпературных вычислительных систем
- Высокопроизводительный микропроцессор 1890ВМ118 с архитектурой КОМДИВ для создания доверенных систем
Back to the list of articles