2013-07-04 4 views
0

У меня нет опыта встроенных USB-стеков, так что мой вопрос: могу ли я запустить его без ОС?USB во встроенной системе без RTOS

Конечно, должно быть возможно работать без ОС, но все будет намного проще, если у меня его есть?

Я хочу использовать его для сохранения данных на подключенном запоминающем устройстве USB.

+0

Какое устройство USB вы хотите подключить? Это имеет значение, если вы хотите добавить USB к серийному, массовому устройству или аудиоустройству. – jeb

+0

Вы также можете выбрать SD-карты в качестве массового устройства? Поскольку они почти тривиальны для доступа с небольшим размером кода и баром – jeb

+0

Является ли USB-контроллер на вашем процессоре? Если да, то какой процессор. – Clifford

ответ

2

Если ваше устройство USB встроено в чип, у вашего поставщика чипов почти наверняка будет примерный код для USB, который может включать массовое хранение. Вам не понадобится ОС, но потребуется обработка прерываний и файловая система.

Ваш USB-контроллер будет нуждаться в функции хоста или OTG - если это только устройство, то вы не можете подключиться к другому USB-устройству, только к хосту.

Преимущества ОС - или, по крайней мере, простого ядра RTOS - это то, что вы можете планировать активность файловой системы одновременно с другими задачами обработки. ОС в этом случае не обязательно упростит работу, но это может сделать вашу систему более восприимчивой к критическим задачам и событиям.

+0

Мой контроллер - это устройство STM32F4 с возможностью хоста. Я попробовал код примера из ST и поместил его в свою запланированную систему. Затем у меня возникли проблемы времени. Запись файла заняла слишком много времени, поэтому другие задачи не выполнялись вовремя. – user2479653

+0

RTOS может решить эту проблему, если у вас достаточно памяти для буферизации, поэтому фактическая запись может выполняться в задаче с низким приоритетом. Производительность передачи данных USB на запоминающее устройство может быть ограничена самим устройством хранения. – Clifford

+1

Очень часто такие операции будут иметь максимальную скорость, над которой они будут останавливаться, но не имеют минимальной скорости, поэтому что-то, что вы можете сделать, это реорганизовать код USB/файловой системы, чтобы только немного увеличить процесс каждый раз с помощью основного или каждый раз, когда он запланирован. В любое время, когда он будет ждать периода времени или при условии, что он должен дать/вернуть, а затем в следующем прогоне, проверьте, соблюден ли тайм-аут/условие. –

0

Я использовал стеки usb в прошлом с микроконтроллерами PIC18F2550 (8 бит) и LPC1343 (32 бит ARM-Cortex M3) без каких-либо проблем.

Смежные вопросы