Реализуем усб стек для uCOS за основу был взят стек из ядра 2.4 заткнулся на ISO INT пакетах
,
1 HCCA.InterruptTable очищаю (as in linux 2.2 2.4 2.6 )
2 записываю ED для INT запроса
Код: Выделить всё
-I- Open keyboard
-I- submitUSBRequest after ED_Submit()
UHP_HccaInterruptTable[0] = ED list
-- 0x20526220 >0x00085083 CRL[ FA:3 EN:1 D:IN S:Full K:SKIP F:GDT MPS:8] TailP:0x20527090 HeadP:0x205262D0 Halted:No Toggle:0 NextEd:0x00000000
->TD Queue
0x205262D0 CRL:[ R:1 DP:2 DI:0 T:2 EC:0 CC:F] CBP:0x20525080 BE:0x20525087 nextTD:0x20527090*skip временно на процесс логирования
далее OHCI отрабатывает и возвращает репорт
Код: Выделить всё
-I- dl_done_list returnUSBR (PIPE_INTERRUPT)
-I- returnUSBR HCCA before ED_Submit()
UHP_HccaInterruptTable[0] =
-D- ED list
-- 0x20526220 >0x00081083 CRL[ FA:3 EN:1 D:IN S:Full K: F:GDT MPS:8] TailP:0x20527090 HeadP:0x20527090 Halted:No Toggle:1 NextEd:0x00000000
-> No TD Queue
-D- hid_irq: report (size 8) (unnumbered) = 00 00 00 00 00 00 00 00зашибись, теперь к этому ED линкуем новый TD для полседующего запроса к функции
Код: Выделить всё
UHP_HccaInterruptTable[0] =
-D- ED list
-- 0x20526220 >0x00085083 CRL[ FA:3 EN:1 D:IN S:Full K:SKIP F:GDT MPS:8] TailP:0x205262D0 HeadP:0x20527090 Halted:No Toggle:1 NextEd:0x00000000
->TD Queue
0x20527090 CRL:[ R:1 DP:2 DI:0 T:0 EC:0 CC:F] CBP:0x20525080 BE:0x20525087 nextTD:0x205262D0*skip временно на процесс логирования
Всё , больше этот ендпоинт дескриптор не обрабатывается , если я добавляю ещё один [1] то он обрабатывается , также один раз..
смотрим UHP_HccaInterruptTable
и видим
Код: Выделить всё
I- HCCAInterrupt
UHP_HccaInterruptTable[0] =
-D- ED list
-- 0x20526220 >0x00081083 CRL[ FA:3 EN:1 D:IN S:Full K: F:GDT MPS:8] TailP:0x205262D0 HeadP:0x20527090 Halted:No Toggle:1 NextEd:0x00000000
->TD Queue
0x20527090 CRL:[ R:1 DP:2 DI:0 T:0 EC:0 CC:F] CBP:0x20525080 BE:0x20525087 nextTD:0x205262D0как стоял так и стоит гад ... не отправляется
всю голову сломал...
вот статус контроллера
Код: Выделить всё
UHP_HcInterruptStatus: 0x00000000
UHP_HcInterruptEnable: 0x80000057 MIE RHSC UE SF WDH SO
UHP_HcInterruptDisable: 0x80000057 MIE RHSC UE SF WDH SO
UHP_HcFmInterval 0x2EDF
UHP_HcPeriodicStart 0x2A2F
hcca frame #00A6ничего уже не понимаю (((( где ошибка моя ?