Решено:
Всё прекрасно работает (PCM, DSD, PCM ввод) до того момента, как отправить компьютер в перезагрузку ПРИ проигрывании аудио. Если проигрывание звуков не производится, то всё нормально. Причем если оправлять в перезагрузку в Linux, проявляется всегда, в Windows скорее 50/50, видимо драйвер под Windows хитрее стандартного модуля в Linux. В остальном пока проблем не выявлено.
Что происходит, если посмотреть отладчик:
Виснет (вернее останавливается, с исключенеим ET_ILLEGAL_RESOURCE в процедуре XUD_Manager) при попытке сбросить enpoint путём отсылки сигнала USB_RESET_TOKEN (0x8) через канал (chanend). Регистр r5=0, т.е. инструкция выглядит так: outct res[0], 0x8 - посыл команды через канал другому процессу, без проверки его доступности/существования (не забываем, у нас многопоточный процессор и должно быть перед этим что то вроде chkct, нужно учитывать гонку процессов). Фрагмент функции XUD_Manager взят из lib_usb и по факту может отличаться в libxud_x200.a из комплекта module_xud.
Это проблема происходит при наступлении события XUD_UserResume(), т.е. при попытке "разбудить" USB устройство. Пробовал делать код XUD_UserResume() пустым, ничего не меняется, проблема не в нём. Кстати говоря привычных try/catch в языке xc нет, есть библиотека lib_trycatch, которая условно ловит исключения, в данном случае абсолютно бесполезна.
Описание Outct:
Вся проблема в том, что исходный код lib_usb упакован в модуль module_usb в виде статической библиотеки и парочкой заголовочных файлов, т.е. что то добавить в это место не получится, не переделав эту библиотеку, видимо там они спрятали строчки кода для работы платного MFI, который в принципе не нужен, девайсы для айфона я не планирую делать, да и вообще это хобби. Прикрутить Lib_usb сразу не получается, не переделав тонну кода в module_audio, видимо это сделано не с проста и тянется еще с прошлых версий.
На форумe xcore.com отсылают изучать дебаггер.
Кто делал транспорт на xmos и встречался ли с такой проблемой? Какие возможны пути решения? Плата позже будет перерисована с учетом новых "хотелок".
Не решенные проблемы:
- щелчек при переключении между PCM и DSD.
[свернуть]
Социальные закладки