Полная версия этой страницы:
USB massstorage на SAM9260
Имею плату с SAM9260 и 64М SDRAM. В IAR 4.41 перевел пример usb-device-massstorage (IAR 5.хх).
Win XP нормально определила новое устройство и в Total Com появился значек съемного диска,
но открыть и посмотреть его содержимое оказалось невозможно. При просмотре свойств диска вижу:
емкость 0
занято 0
свободно 0
файловая система RAW.
Может кто подскажет куда рыть в данном случае или где найти информацию о порядке взаимодействия с massstorage.
Dron_Gus
Sep 2 2010, 11:32
Может отформатировать?
Как только запускал форматирование диска Total Com подвисал
на некоторое время (секунд 10) и ничего не делал. Впечатление такое,
что ни одна команда работы с диском не выполняется, хотя USB канал работает.
Цитата(skyv @ Sep 2 2010, 16:07)

Как только запускал форматирование диска Total Com подвисал
на некоторое время (секунд 10) и ничего не делал. Впечатление такое,
что ни одна команда работы с диском не выполняется, хотя USB канал работает.
Вы не передали ёмкость устройства по MS.
Допустим меня форматирование пока не интересует.
Самое интересное это с помощью готового примера от IAR
увидеть новый диск, открыть его и выполнить чтение/запись файла.
Пока удалось только увидеть диск.
Dron_Gus
Sep 2 2010, 13:18
А это все едино. Вы, по сути, предоставляете хосту только пару функций: считать сектор и записать сектор. Плюс некоторую дополнительную информацию - размер сектора, наличие носителя, защита от записи и еще что-то. Пока у Вас три этих запроса не будут нормально функционировать ни записать, ни прочитать файл Вы не сможете. Равно как и отформатировать носитель.
Что у Вас используется в качестве носителя? ОЗУ?
В примере для SAM9260 носителем выступает SDRAM.
Цитата(skyv @ Sep 2 2010, 16:48)

Пока удалось только увидеть диск.
Несогласен. Пока, возможно, вы не передали даже физический размер диска системе.
Хотя скорее всего у вас, банально, нет разделов на диске (0 сектор забит нулями) - тогда берите FDISK или PartitionMagic и создайте разделы (Partition), если эти программы верно определят физическую ёмкость диска созданного в SDRAM.
Форматировать под масдаем можно только диски имеющие 4 физических раздела (640k should be enough for everyone).
Я полагаю, что любые эксперименты все равно приведут к
разбору реализации драйвера MSD для ARM.
Сейчас читаю популярную книгу по MSD в части SCSI
команд и параллельно смотрю код примера.
ALEXANDER082
Sep 3 2010, 14:13
Цитата(skyv @ Sep 3 2010, 11:25)

Я полагаю, что любые эксперименты все равно приведут к
разбору реализации драйвера MSD для ARM.
Сейчас читаю популярную книгу по MSD в части SCSI
команд и параллельно смотрю код примера.
НЕ обрабатываются запросы READ10 или если не записывается то WRITE10.
Нужно читать описание USBMassBulk.pdf - (примерно так) на usb.org.
Пример заработал. Диск форматируется. Пишу и читаю файлы.
Нашел свою ошибку. Пример вставлял в свой шаблонный проект.
Его размер больше чем размер примера, а в main есть define:
/// Maximum code size reserved for running in SDRAM and FLASH
#define CODE_SIZE 30*1024
Всем спасибо за участие.
Всем доброго дня. Есть несколько вопросов по дальнейшему
использованию USB на SAM9260.
1. Хотелось бы теперь попробовать USB - host для флэшки.
2. На плате имеется несколько физических носителей памяти ( SDRAM, microSD, DataFlash, Nand).
Как можно выбрать со стороны PC любой из этих носителей для работы? При этом
программный код для PC не создавать, а только для SAM.
3. В примере от IAR каждый раз надо форматировать диск перед началом работы.
Где взять готовый пример кода для форматирования RAM-диска или иного носителя?
Я понимаю, что возможно эту утилиту написать и самому.
4. Пример USB MSD, на мой взгляд, дает возможность получить простой инструмент для
управления функционированием платы. Для этого нужно что-то вроде самодельного командного
процессора? В USB MSD мне очень нравится то, что для PC ничего создавать не надо.
SergSit
Sep 17 2010, 06:46
Не подскажете? Что за популярная книга по MSD в части SCSI?
Цитата(SergSit @ Sep 17 2010, 10:46)

Не подскажете? Что за популярная книга по MSD в части SCSI?
Я скачал эту книгу - "USB Mass Storage
Designing and Programming
Devices and Embedded Hosts"
Jan Axelson.
У Microchip есть стэк и небольшое описание для USB MSD.
Написал утилиту для форматирования RAM-диска.
Теперь диск создается автоматически при включении питания,
а при подключении USB кабеля имею к нему доступ.
Все хорошо, но есть один вопрос.
Если я заполняю первые три байта загрузочного сектора нулями, то при подключении
USB кабеля диск приходится форматировать. Когда я прописываю эти байты
значениями, которые создаются TotalCom при форматировании, то все ОК.
Почему так происходит? Получается, что код команды перехода должен присутствовать
всегда?
Dron_Gus
Sep 30 2010, 20:20
Там присутствует какая-то сигнатура. Подробней в описании ФС.
В первых трех байтах загрузочного сектора находится "ассемблерная
команда перехода к загрузочному коду "(переписал дословно из книги).
Далее написано, что необходимости в ней нет(кроме загрузочных файловых систем).
Просто теперь возникает вопрос, а что там должно быть если нет загрузочного кода?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.