Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: WinXP, USB, STR912 - как сделать чтоб винда увидела АРМ как дисковый накопитель, файлы которого расположены во флэше
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
s868
Доброго времени суток. В комплекте с отладочной платой IAR STR912-SK шли мощные исходники, один из которых превращал плату в MassStorage - то есть можно было всунуть флэшкарточку в разъем на плате, виндовс через УСБ-порт определял плату как дисковый накопитель (без драйверов) и можно было смотреть-редактировать файлы с карточки. На неискушенного начинающего разработчика это произвело те же впечатления, какие произвело блестящее зеркальце на туземцев с племени Тумба-Юмба!
Дальнейшее изучение громоздкого исходника ввело этого же разработчика в состояние легкой прострации. Задача состоит в написании программки для STR912, которая настроит его следующим образом:
- соединение через УСБ
- виндовс определит дисковый накопитель (появится новый диск)
- на накопителе будет несколько маленьких файлов (размещенные во флэш-памяти АРМа по определенным адресам), эти файлы будут видны в виндовсе и можно просмотреть их содержимое и модифицировать.
Прошу отослать к литературе, которая обьяснит - какой пакет данных АРМ должен отправить через УСБ, чтоб его определили как нужное устройство, с нужным файловым соодержимым.
Спасибо.
Vladimir_T
Прочтите эту книгу:
http://lord-n.narod.ru/walla.html#AgurovPI_PK
и диск с примерами находится рядом.
s868
Vladimir_T, примите запоздалое СПАСИБО)
итак, процессор STR912FAW44

в документации на него - в частности в описании усб контроллера - имеется двоякое трактование структуры Packet buffer areas: на стр.362 показано чередование областей ADDR и COUNT каждой контр.точки
.....................
ADDR0_TX
COUNT0_TX
ADDR0_RX
COUNT0_RX
......................

а в описании на стр.391 указано, что 32-битный регистр USB_ADDRn содержит два 16-битных ADDR, то есть чередование получается
.....................
ADDR0_TX
ADDR0_RX
COUNT0_TX
COUNT0_RX
......................

собственно говоря - вопрос: какова истинная структура Packet buffer areas.
спасибо за внимание.

и еще.
после анализа громоздких исходников, которые шли к ИАРу, была сделана попытка простейшей инициализации усб-контроллера (для отладочной платы STR912-SK) согласно даташиту. то есть лаконично написать все то, что там было размазано


#include <iostr912f.h>
int main ()
{
SCU_PRR0_bit.RST_USB = 0; //USB RESET enable
SCU_PCGR0_bit.USB48M = 0; //1: 48 MHz USB clock stop
SCU_PCGR0_bit.USB = 1; //1: USB peripheral clock running
SCU_PRR0_bit.RST_USB = 1; //USB RESET disable

SCU_PCGR1_bit.GPIO7 = 1; //GPIO7 ON
SCU_PRR1_bit.RST_GPIO7 = 1; //GPIO7 RESET disable
SCU_GPIOOUT7 = 0x5555; // GPIOOUT7
GPIO7_DIR = 0x01; // output

SCU_CLKCNTR_bit.USBSEL = 0x0; //USB 48 MHz Clock Selection 00: fMSTR (default)
USB_CNTR = 1; //1: Force a reset of the USB Peripheral,
SCU_PCGR0_bit.USB48M = 1; //1: 48 MHz USB clock running
GPIO7_DATA = 0xFF; // output

// Init controls endpoints

// Clear USB Reset
USB_CNTR_bit.FRES = 0;
USB_CNTR_bit.ESOFM = 0;
USB_CNTR_bit.RESUME = 0;
USB_CNTR_bit.LP_MODE = 0;
USB_CNTR_bit.FSUSP = 0; // Must be 0

USB_BTABLE = 0x07E8;
USB_DADDR = 0x0080;


*((long*)0x700007E8) = 0x00080000; // установка адресов для двух буферов точки0
*((long*)0x700007EC) = 0x10080008; //установка COUNT для них же
USB_ISTR = 0;
USB_CNTR = 0;



USB_EP0R = 0x3230;
USB_EP1R = 0x00;
USB_EP2R = 0x00;

GPIO7_DATA = 0xFE; // output



m22:
if (USB_ISTR_bit.CTR == 0) goto m22;
for(;;) ;

}
=====================================================================
предполагалось, что в буфер точки0, который расположен в начале Buffer table усб-контроллера, окажется запрос компутера о дескрипторах или статусе устройства (то есть буфер изменит свое содержимое) и будет установлен USB_ISTR_bit.CTR (Correct Transfer: This bit is set by the hardware to indicate that an Endpoint has successfully completed a transaction). но ничего этого не происходит((
чего сделали не так?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.