PIClist RUS
микроконтроллеры PIC и интерфейсы
техническая документация
статьи и разработки на русском языке

Vinculum VNC1L / VNC1L-1A - описание прошивки VDIF

« назад на главную страницу

Оригинал: Vinculum VNC1L. Firmware - VDIF

Скачать "Vinculum VNC1L (VNC1L-1A) - описание прошивки VDIF" в формате PDF

Перевод с английского © PIClist-RUS (piclist.ru)



Vinculum VNC1L-1A - первый из семейства Vinculum - устройств со встроенной интегральной схемой хост-контроллера USB от FTDI. Он не только способен обрабатывать интерфейс хоста USB и функции передачи данных, но и благодаря встроенному MCU и интегрированной Flash-памяти, Vinculum также может инкапсулировать классы устройств USB. При подключении запоминающих устройств большой ёмкости, таких как flash-накопители USB, Vinculum также прозрачно работает и с файловой структурой FAT, взаимодействуя через UART, параллельный FIFO или SPI интерфейс при помощи простого набора команд. Vinculum представляет собой новое рентабельное решение для реализации хоста USB в изделиях, у которых до этого не было необходимых аппаратных ресурсов.

VNC1L-1A доступен в компактном 48-выводном корпусе LQFP без содержания свинца (совместим с RoHS).

1. Краткий обзор

1.1. Введение

В этом документе описывается VDIF-версия прошивки для Vinculum VNC1L - микросхемы с интерфейсом USB flash-накопителя и диспетчером команд. VDIF использует интерфейсы UART, SPI и параллельный FIFO-интерфейс, либо порт хоста USB в качестве порта диспетчера команд. Интерфейс ввода-вывода настраивается с помощью набора перемычек, которые подтягивают к плюсу или к минусу два интерфейсных вывода VNC1L.

Vinculum VNC1L-1A от FTDI

Технические характеристики интегральной схемы Vinculum VNC1L описаны отдельно в техническом описании, которое доступно на веб-сайте Vinculum: http://www.vinculum.com.

2. Описание прошивки

2.1. VDIF - дисковый интерфейс Vinculum

Прошивка VDIF (Vinculum Disk Interface - дисковый интерфейс Vinculum) позволяет устройству Vinculum VNC1L работать в качестве интерфейса между USB flash-накопителем (или другим устройством класса USB-накопителей), подключенным к USB-порту 2, и интерфейсом ввода-вывода VNC1L, либо подходящим периферийным USB-устройством, подключенным к USB-порту 1. Эта прошивка позволяет извне настраивать интерфейс VNC1L на работу в режиме UART, SPI или параллельного FIFO-интерфейса с помощью внешних перемычек. Устройство, подключенное к интерфейсу ввода-вывода (UART, FIFO, SPI), либо подходящее периферийное USB-устройство может выдавать команды, позволяющие выполнять над USB flash-накопителем различные операции с помощью набора команд, определённого в данном документе. Порт VNC1L, настроенный на приём этих команд, называется "портом диспетчера команд".

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

2.1.1. Работа системы VDIF и выбор порта диспетчера команд

Прошивка VDIF предполагает, что USB flash-накопитель (или другое устройство класса USB-накопителей) будет подключен ко второму порту хоста USB. Первый порт хоста USB, либо порт интерфейса, настраиваемый перемычками на UART, параллельный FIFO, или SPI, работает как порт диспетчера команд.

По умолчанию прошивка настроена на использование в качестве диспетчера команд режима интерфейса ввода-вывода, заданного перемычками на ACBUS5 (вывод 46) и ACBUS6 (вывод 47), то есть интерфейса UART, параллельного FIFO или SPI. Настройка схемы перемычек показана ниже на Рис. 1. По умолчанию, если не установлено ни одной перемычки, эта схема настроена на интерфейс UART. Настройку выводов перемычек для выбора порта см. в Таблице 1.

Структурная схема Vinculum VNC1L

Рис. 1. Схема прошивки VDIF

Таблица 1. Выводы перемычек выбора порта

ACBUS6 (вывод 47)ACBUS5 (вывод 46)Режим
Подтяжка к плюсуПодтяжка к плюсуПоследовательный UART
Подтяжка к плюсуПодтяжка к минусуSPI
Подтяжка к минусуПодтяжка к плюсуПараллельный FIFO
Подтяжка к минусуПодтяжка к минусуПоследовательный UART

Если к USB-порту 1 не подключено никаких устройств, то прошивка по умолчанию настроена на использование интерфейса UART, параллельного FIFO или SPI в качестве порта диспетчера команд. Однако как только USB-устройство будет подключено к первому порту USB и будет обнаружено VNC1L, этот порт автоматически станет портом диспетчера команд. Если USB-устройство отключается от USB-порта 1, VNC1L попытается использовать в качестве диспетчера команд порт интерфейса UART, параллельного FIFO или SPI. Второй порт USB всегда предназначен для подключения только USB flash-накопителей (класса USB-накопителей).

Существует три варианта интерфейса ввода-вывода, использующие порты ADBUS и ACBUS, настраиваемые с помощью перемычек, - последовательный UART, параллельный FIFO и SPI. Выводы устройства VNC1L показаны в Таблице 2.

Таблица 2. Варианты интерфейса ввода/вывода

№ выводаНазваниеТипОписаниеРежим интерфейса
Интерфейс UARTПараллельный интерфейс FIFOВедомый интерфейс SPI
31ADBUS0I/O5В-совместимая двунаправленная шина данных/управления, AD бит 0TXDD0SCLK
32ADBUS1I/O5В-совместимая двунаправленная шина данных/управления, AD бит 1RXDD1SDI
33ADBUS2I/O5В-совместимая двунаправленная шина данных/управления, AD бит 2RTS#D2SDO
34ADBUS3I/O5В-совместимая двунаправленная шина данных/управления, AD бит 3CTS#D3CS
35ADBUS4I/O5В-совместимая двунаправленная шина данных/управления, AD бит 4DTR#D4 
36ADBUS5I/O5В-совместимая двунаправленная шина данных/управления, AD бит 5DSR#D5 
37ADBUS6I/O5В-совместимая двунаправленная шина данных/управления, AD бит 6DCD#D6 
38ADBUS7I/O5В-совместимая двунаправленная шина данных/управления, AD бит 7RI#D7 
41ACBUS0I/O5В-совместимая двунаправленная шина данных/управления, AC бит 0TXDEN#RXF# 
42ACBUS1I/O5В-совместимая двунаправленная шина данных/управления, AC бит 1 TXE# 
43ACBUS2I/O5В-совместимая двунаправленная шина данных/управления, AC бит 2 RD# 
44ACBUS3I/O5В-совместимая двунаправленная шина данных/управления, AC бит 3 WR 

2.2 Настройка интерфейса UART

При использовании в качестве порта диспетчера команд интерфейса UART, VNС1L ожидает, что на его вывод CTS# будет подан низкий уровень. По умолчанию скорость передачи данных, используемая портом UART, составляет 9600 бод, хотя её можно изменить программно с помощью одной из команд порта диспетчера. Стандартный формат данных - 8 битов данных, 1 стартовый бит, 1 стоп-бит, без проверки чётности, с включенным аппаратным подтверждением связи (handshaking) RTS/CTS.

2.3. Стартовая последовательность и прошивка USB

При запуске системы прошивка выдаст на порт диспетчера команд сообщение с номером версии прошивки. Это сообщение имеет следующую форму:

Ver x.xx On-Line:

Где x.xx - это номер версии (может быть длиннее четырёх символов).

Если к USB-порту 2 микросхемы VNC1L подключен USB flash-накопитель, VNC1L просканирует его и выполнит подсчёт свободных секторов. Это может занять некоторое количество секунд в зависимости от точного размера диска. Во время этого процесса при нормальных обстоятельствах светодиод на USB flash-накопителе будет показывать активность. Также прошивка VNC1L выполняет сканирование корневого каталога в поисках файла обновления прошивки. Если файл прошивки не найден, она выведет:

No Upgrade
D:\>

Если же на USB flash-накопителе будет найден подходящий файл обновления прошивки, прошивка VNC1L автоматически обновится.

3. Набор команд прошивки

3.1 Команды порта диспетчера

Система диспетчера команд прошивки VNC1L использует два набора команд: набор расширенных ASCII-команд (расширенный набор), предназначенный для использования с терминалом, и набор сокращённых шестнадцатеричных команд (сокращённый набор), предназначенный для использования микропроцессором.

Таблица 3. Команды порта диспетчера *

Расширенные ASCII-команды для работы с терминаломСокращённые шестнадцатеричные команды для микропроцессораФункция, выполняемая командойОтвет
Переключение между сокращённым и расширенным наборами команд
SCS<cr>$10$0DПереключение на сокращённый набор команд.Вернёт подтверждение >$0D, показывая, что устройство перешло в режим сокращённого набора команд.
ECS<cr>$11$0DПереключение на расширенный набор команд.Вернёт подтверждений D:\>$0D**, показывая, что устройство перешло в режим расширенного набора команд.
E<cr>E$0DЭхо.Вернёт E$0D для целей синхронизации.
e<cr>e$0DЭхо.Вернёт e$0D для целей синхронизации.
Ответы, показывающие, подключен ли диск
<cr>$0DПроверка, подключен ли диск.Вернёт соответствующее подтверждение или сообщение "No disk" для текущего набора команд.
Ответ, показывающий, подключен ли диск, для расширенного режима командДиск не найден.No Disk$0D
Диск найден.D:\>$0D
Ответ, показывающий, подключен ли диск, для сокращённого режима командДиск не найден.ND$0D
Диск найден.>$0D
Работа с каталогами
DIR<cr>$01$0DВывод списка содержимого текущего каталога.Возвращает список имён файлов и каталогов. Каждый элемент завершается символом $0D. У элемента-каталога после имени и перед $0D добавляется <sp>DIR.
DIR<sp><name><cr>$01$20<name>$0D Вывод имени файла с размером файла. Используйте эту команду перед выполнением чтения файла, чтобы узнать, сколько байтов следует ожидать.$0D<name><sp><size in hex(4 bytes) LSB first>$0D
DLD<sp><name><cr>$05$20<name>$0DУдаление каталога.Удаляет подкаталог <name> из текущего каталога. <prompt>$0D
MKD<sp><name><cr>$07$20<name>$0DСоздание каталога.Создаёт новый подкаталог <name> в текущем каталоге. <prompt>$0D
CD<sp><name><cr>$02$20<name>$0DПереход из текущего каталога в каталог <name>.<prompt>$0D
CD<sp>..<cr>$02$20$2E$2E$0DПереход вверх на один уровень каталогов.<prompt>$0D
Работа с файлами
RD<sp><name><cr>$04$20<name>$0DЧтение файла <name>.Выдаёт диспетчеру файл целиком в бинарном виде (прежде необходимо узнать размер файла с помощью команды DIR<sp><name><cr>, чтобы получить ожидаемое число байтов). <prompt>$0D
RDF<sp><size in hex(4 bytes)><cr>$0B$20<size in hex(4 bytes)>$0DЧтение данных размером <size in hex(4 bytes)> из текущего открытого файла.Выдаёт диспетчеру запрашиваемое количество данных. <prompt>$0D
DLF<sp><name><cr>$07$20<name>$0DУдаление файла <name>.Удаляет файл из текущего каталога и освобождает сектора FAT. <prompt>$0D
WRF<sp><size in hex(4 bytes)><cr><data bytes of size><cr>$08$20<size in hex(4 bytes)>$0D$data$0DЗапись данных размером <size in hex(4 bytes)> в конец текущего открытого файла.<prompt>$0D
OPW<sp><name><cr>$09$20<name>$0DОткрытие файла для записи с помощью команды WRF.<prompt>$0D
OPR<sp><name><cr>$0E$20<name>$0DОткрытие файла для чтения командой RDF.<prompt>$0D
CLF<sp><name><cr>$0A$20<name>$0DЗакрытие файла, открытого для записи.<prompt>$0D
REN<sp><orig name><sp><new name><cr>$0C$20<orig name>$20<new name>$0DПереименование файла или каталога.<prompt>$0D
FS<cr>$12$0DПолучение размера свободного места на диске в байтах.<free space in hex(4 bytes) LSB first>$0D
Команды, предназначенные для режима UART диспетчера
SBD<sp><divisor (3 bytes) LSB first><cr>$14$20<divisor (3 bytes) LSB first>$0DУстановка скорости передачи (см. Таблицу 6).<prompt>$0D
Команды управления питанием
SUD<cr>$15$0DПеревод накопителя в режим ожидания для сохранения энергии, если он не используется. Накопитель будет активирован автоматически, как только ему будет послана очередная дисковая команда.<prompt>$0D
WKD<cr>$16$0DАктивация накопителя без помещения его в режим ожидания, когда он не используется.<prompt>$0D
SUM<cr>$17$0DПеревод диспетчера в режим ожидания и остановка тактовых генераторов.<prompt>$0D
Отладочные команды
SD<sp><sector number in ASCII hex><cr>$03$20<sector number in hex>$0DДамп сектора. Эта команда используется для отладочных целей и может быть удалена. Например, SD 0000<cr> выдаст дамп сектора 0000. SD 0010<cr> выдаст дамп сектора 16 (0010h = 16 в десятичном формате). Выдаёт в ответ 512 байтов, преобразованных в ASCII, из сектора с номером, указанным в шестнадцатеричном формате (HEX). После каждых 16 байтов следует $0D. <prompt>$0D
IDD<cr>$0F$0DИдентификация накопителя. Эта команда отобразит информацию о подключенном накопителе.Выдаёт блок данных IDD, а затем <prompt>$0D
FWV<cr>$13$0DПолучение версии прошивки.Выдаёт номера версий основной и перепрограммируемой прошивок в VNC1L
MAIN x.xx$0D
RPRG x.xx$0D
затем <prompt>$0D

* Здесь <cr> обозначает символ возврата каретки ('\r'), его шестнадцатеричный эквивалент - $0D; <sp> обозначает символ пробела, его шестнадцатеричный эквивалент - $20.

** Далее подтверждение обозначается как <prompt>. В режиме сокращённого набора команд <prompt> имеет значение ">", в режиме расширенного набора команд - "D:\>".

Таблица 4. Сообщения об ошибках

ОшибкаРежим командРезультат
Команда не распознанаРасширенный набор командBad Command$0D
 Сокращённый набор командBC$0D
Ошибка выполнения командыРасширенный набор командCommand Failed$0D
 Сокращённый набор командCF$0D

Таблица 5. Формат строк ответа на команду IDD

IDD - результаты идентификации дискового устройства
'USB VID = $', 2 байта в формате ASCII, $0D
'USB PID = $', 2 байта в формате ASCII, $0D
'Vendor Id = ', 8 байтов в формате ASCII, $0D
'Product Id = ', 16 байтов в формате ASCII, $0D
'Revision Level = ', 4 байта в формате ASCII, $0D
'I/F = ','SCSI' или 'ATAPI' в формате ASCII, $0D
'FAT12' или 'FAT16' или 'FAT32' в формате ASCII, $0D
'Bytes/Sector = $', 2 байта в формате ASCII, $0D
'Bytes/Cluster = $', 3 байта в формате ASCII, $0D
'Capacity = $', 4 байта в формате ASCII, $0D
'Free Space = $', 4 байта в формате ASCII, $0D

Таблица 6. Таблица скоростей передачи данных для интерфейса UART (нумерация байтов указана в порядке их передачи в теле команды SBD)

Скорость передачиПервый байтВторой байтТретий байт
300$10$27$00
600$88$13$00
1200$C4$09$00
2400$E2$04$00
4800$71$02$00
9600*$38$41$00
19200$9C$80$00
38400$4E$C0$00
57600$34$C0$00
115200$1A$00$00
230400$0D$00$00
460800$06$40$00
921600$03$80$00
1000000$03$00$00
1500000$02$00$00
2000000$01$00$00
3000000$00$00$00

*9600 бод - значение скорости по умолчанию после сброса



© PIClist-RUS (piclist.ru), 2007 г.

PIClist RUS (piclist.ru) © 2008
все права сохранены. перепечатка статей и переводов с данного сайта запрещена.