Вставил в свое ПО на FreeRTOSе файлы из примера VirtualCom(наверное, все знаете его, идет с IAR в комплекте). Отдельно оба ПО работают. Но когда соединил, запустил, то через некоторое время происходит вылет на prefetch_handler. Вот как отследить, откуда и по какой причине происходит этот вылет? может есть какие-то способы, о которых не знаю.. USB работает с приоритетом 1, соот-вно системный тик с приоритетом 0, оба IRQ-прерывания.
И еще. Практически все функции USB в этом примере реализованы внутри прерывания, т.е. по сути времени проц много сидит в этом прерывании, что нежелательно. Подскажите, как лучше организовать работу usb в FreeRTOSе. Что можно вынести в задачу, а что обязательно делать в прерывании? Можно ли сделать так: в прерывании обработать только первую транзакцию(запрос), а ответ на него(данные,статус) отсылать в задаче, но тогда ведь в принципе пройдет много времени и произойдет какой-нибудь таймаут у хоста?
|