Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1343 usb memory
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
segment
Балуюсь с LPC1343. Пофиг что не работает симуляция в Keil, зато хотябы прошивать легко через встроенный USB загрузчик. Нашел в интернете несколько примеров реализации USB MSC, простой disk image на 5-6кб в оперативке, вообщем обычный пример. Загружаю, запускаю, обнаруживается новое устройство, все нормально - это носитель. Но винда предлагает перед использованием форматировать его, чего ей не удается и она отключает диск. Стоит Windows 7, на XP не пробовал. Честно говоря примеры простейшие - не ясно что работает не так, примеры не трогал, компилятся без ошибок.
brunql
Цитата(Сега @ Oct 29 2010, 22:58) *
Нашел в интернете несколько примеров реализации USB MSC

топику явно не хватает ссылок на эти самые примеры
и кстати я тоже с lpc1343 балуюсь, пример из поставки Keil (C:\Keil\ARM\Boards\Keil\MCB1000\USBMem) проверял в XP работает
segment
Проверял из LPC13xx_SampleSoftware, C:\Keil\ARM\Boards\Keil\MCB1000\USBMem. Вот сейчас еще раз открыл проект из поставки Keil MCB1000, еще раз перекомпилил - тоже самое. Предлагает отформатировать, но если попытаться сделать это выдается сообщение "Windows не удалось отформатировать диск", если закрыть окно форматирования, то диск пропадает и все. Я не понимаю почему он не хочет его форматировать, память это RAM, запись и чтение свободные..

2brungl:
Есть возможность проверить на Windows 7? Может это у меня что-то не так...
rezident
А вы уверены, что в примерах полная поддержка FAT реализована?
segment
я НЕ уверен в этом. По логике это просто буффер в RAM на 6Кб. Если там кривое изображение, то почему винда просто не переформатирует его в нормальный вид? Ведь это простое чтение/запись в буффер..
rezident
Я конечно мог заблуждаться, но до сих пор я был уверен, что форматирование "заключается в создании (формировании) структур доступа к данным, например структур файловой системы." Цитата из википедии smile.gif Только лишь одна работа USB и поддержка некоторых команд SCSI не позволяют устройству функционировать как логический диск с файловой системой. А процесс форматирования как раз пытается создать файловую систему.
brunql
> Есть возможность проверить на Windows 7?
забыл уточнить XP в виртулаке запущена была. основная ось ubuntu.
вот мой Memory.hex http://exfile.ru/134462
MD5 ee9630ff725205bf8f09e05174933204 Memory.hex

не уверен, что поможет, но может наведет на какие нить мысли (=
dmesg:
[20868.290143] usb 3-3: new full speed USB device using ohci_hcd and address 4
[20868.482022] usb 3-3: configuration #1 chosen from 1 choice
[20868.500258] scsi20 : SCSI emulation for USB Mass Storage devices
[20868.504719] usb-storage: device found at 4
[20868.504723] usb-storage: waiting for device to settle before scanning
[20873.503634] usb-storage: device scan complete
[20873.510162] scsi 20:0:0:0: Direct-Access Keil LPC13xx Disk 1.0 PQ: 0 ANSI: 0 CCS
[20873.513681] sd 20:0:0:0: Attached scsi generic sg3 type 0
[20873.524627] sd 20:0:0:0: [sdc] 12 512-byte logical blocks: (6.14 kB/6.00 KiB)
[20873.530624] sd 20:0:0:0: [sdc] Write Protect is off
[20873.530631] sd 20:0:0:0: [sdc] Mode Sense: 03 00 00 00
[20873.530636] sd 20:0:0:0: [sdc] Assuming drive cache: write through
[20873.566648] sd 20:0:0:0: [sdc] Assuming drive cache: write through
[20873.566666] sdc:
[20873.624699] sd 20:0:0:0: [sdc] Assuming drive cache: write through
[20873.624720] sd 20:0:0:0: [sdc] Attached SCSI removable disk

можно попробовать драйвер удалить и девайс переподключить, и да в XP не форматируется (не удалось завершить форматирование)

Из www.nxp.com/documents/application_note/AN10904.pdf (AN10904 USB HID with the LPC1300 on-chip driver):
Note: This simple connection does not implement NXP Soft-Connect to allow soft
disconnection and connection to the USB bus nor does it implement USB power.
Because of this, the USB connection must be plugged into the PC after the USB
peripheral is initialized. If the USB port is connected before the LPC USB peripheral is
initialized, the pullup resistor will notify the PC that a USB device is present, yet the
microcontroller’s USB peripheral will not respond because it has not been initialized. This
will trigger Windows to generate an error mentioning a malfunctioning USB device.
Unplug and re-plug the device to dismiss the error.

Схема подключения к USB какая?

у меня подключено как здесь: http://www.microbuilder.eu/projects/LPC134...enceDesign.aspx
klen
насколько я понимаю - флешка - тоесть в нашем случае девайс с рамом - ничего про fat и знат ьне должен - его собачче дело - писать и чиать сектор, это с помощью юсб, а вот фат или еще что там - это драйвер фата самой винды поверх нижнего транспортного протокола(у нас это usb) делает. в флеш должна уметь как я сказал пиать и читать сектор и говорить винде какой у не размер сектора. фсе. у меня ткак пример для lpc2148 работает. ну там несколько команд SCSI это понятно - интерфейс.
segment
2brungle:
Выложи пжл в bin формате



brunql
>2brungle:
i am brunql

>Выложи пжл в bin формате
Что-то я в кейле сходу не нашел, как сгенерить бинарник...
Все, что нашел это HEX2BIN http://www.keil.com/download/docs/7.asp, но с ней проблемы:
ERROR: Invalid record type in HEX record 706.
Status: HEX to BIN conversion was not successful.
Вообщем вот, что мне Keil накомпилил: http://exfile.ru/134535
segment
В инете увидел такую же проблему (но с LPC2148) Вот здесь. Внизу страницы.
Цитата
Now, when i connect my LPC2148 board to PC, i get 'Disk in drive is not formatted. Do you want to format it now?'. And if i say, yes. Then it says, 'Disk in drive can't be formatted'. What is its meaning?

Но ответа так и нет, кроме
Цитата
It means no partition structure (Master Boot Record, boot sector etc.) is assigned on your "disk"

И ссылки на примеры.

Project options -> User
Run 1: fromelf --bin ".\Obj\USBMem.axf" --output ".\Obj\USBMem.bin" <<< Здесь свои названия подставляешь


Да, сейчас форматнул твои объектники в bin, залил - та же самая ошибка. Форматировать типа надо. Каким то боком связано с Windows 7... Только вот встроенный USB Bootloader то работает нормально!
brunql
наверно уже сгенерил по Memory.axf, что я скинул, но если нет, то вот Memory.bin http://exfile.ru/134537

а через UART прошивку заливать пробовал? (я через UART прошиваю)

а всякие таймеры, кнопочки, светодиоды работают?

еще у gcc (в кейле вроде не gcc) есть проблемка с бинарниками, может здесь чтото подобное
http://www.microbuilder.eu/projects/LPC134...43CodeBase.aspx
LPCRC - A command-line utility to correct the checksum value of compiled .bin files. This ensures that the files will not be rejected by the USB bootloader. Windows binary and GNU GCC source included.
segment
Да, я уже по твоей прошивке сгенерил (см обновленный пост выше) -> ошибка осталась.

Через UART нет возможности запустить, плата готовая, без uart.

Цитата(brunql @ Oct 30 2010, 15:37) *
еще у gcc (в кейле вроде не gcc) есть проблемка с бинарниками, может здесь чтото подобное
http://www.microbuilder.eu/projects/LPC134...43CodeBase.aspx
LPCRC - A command-line utility to correct the checksum value of compiled .bin files. This ensures that the files will not be rejected by the USB bootloader. Windows binary and GNU GCC source included.


Да, я в курсе. Это делается второй командой
Run 2: AutoVerifyCode.exe .\Obj\USBMem.bin

Цитата(brunql @ Oct 30 2010, 15:37) *
а всякие таймеры, кнопочки, светодиоды работают?


HID работает, и CDC (соединил пины у микрухи для эхо).
brunql
Цитата
HID работает, и CDC (соединил пины у микрухи для эхо)

Как проверял CDC?
По идее CDC реализует интерфейс UART между приложением PC <-> USB <-> UART (в прошивке)
Какие тут пины можно было соединить? или у тебя трансляция того что приходит c USB в железный UART и обратно?

Насчет USBMem возможно Windows7 работатет с FAT немного не так как XP?
segment
Загрузил прошивку CDC в камень через USB Bootloader, запустил, установил дрова из директории проекта, открыл терминал, посылал символы и получал эхо. Ножки TXD и RXD на микроконтроллере замкнул.
AlexU
Цитата(Сега @ Oct 30 2010, 21:50) *
Загрузил прошивку CDC в камень через USB Bootloader, запустил, установил дрова из директории проекта, открыл терминал, посылал символы и получал эхо. Ножки TXD и RXD на микроконтроллере замкнул.


Выкинул ввод\вывод на UART, перелопатил под свои задачи - LCD, ADC. CDC работает.
segment
Связался с саппортом Keil, они сказали что действительно пример НЕ работает на Windows 7, их команда сейчас работает над поиском и устранением ошибки.
crastin
Я по поиску сюда пришел. Я не понял что вы вообще переделывали для отправки данных через CDC. Пример из Keil? Я такое же нашел в LPCExpresso IDE раньше работало нормально. Сейчас виснет (CDC). Если есть другой пример, Может ли кто-нибудь его выложить?
IgorKossak
CDC виснет при включенной оптимизации. Т. к. все переменные, асинхронно меняемые в прерываниях не объявлены volatile. Объявил как положено - всё заработало.
crastin
А как отключить оптимизацию? Убрать -O из командной строки?

Нашел что такое -O. Но все равно volatile нужно объявлять все переменные в файле с драйвером USB или где? Просто тот же пример у меня работал еще полгода назад. Повторюсь я пишу в lpcexpresso.
IgorKossak
usbhw.c - в функции delay() внутрь цикла вставил __asm__ __volatile__ ("nop"); иначе цикл выкидывался.
usbcore.c и serial.c (и соотв. *.h) - все (чтобы не долго думать) глобальные переменные объявил volatile
Вроде бы больше ничего.
Компилирую в среде Eclipse тулчейном Code Sourcery Lite. Оптимизация -Os
crastin
О_о Все заработало. Большое спасибо.
slawer
Здравствуйте,
столкнулся со следующей непонятной мне ситуацией.

Пример USBCDC для LPC1343 для Keil работает как и положено, то есть при замыкании линий TxD и RxD приходит эхо через виртуальный порт.
Переделываю его немного, следующим образом:

высылаю пакет через UART
отправляю с компа через виртуальный порт пакет и возвращаю его копию назад (задействован только USBCDC)

Таким образом, в моем понимании у меня два независимых порта, по каждому из которых ведется свой опрос, однако при замыкании линий TxD и RxD, наблюдаю как к эхо-пакету по возвращеному через USBCDC присоединяется весь пакет, который я выслал через UART!!!

Пытался разобраться в коде примера, но мало понимаю как работает USBCDC, там инициализируется виртуальный порт. Так может именно это каким то образом и соединяет USB И Serial между собой.

Буду благодарен за любую помощь, спасибо..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.