你好!我在寫USB接口打印機驅動,由于打印機的配置描述符過長,使用內部固件會有數據溢出,于是我就根據你們公司提供的外部固件程序的例子編寫了一個外部固件的程序,基本是你們發(fā)給我的那個程序 我只做了一點修改,可是在程序執(zhí)行到控制傳輸的數據階段的時候發(fā)出標識包后,返回的狀態(tài)是錯誤的,程序不能在執(zhí)行下去,數據階段不能夠在進行下去,獲得不了描述符. 下面是獲取描述符的外部固件程序,請幫我看看 到底哪里出錯了,謝謝. unsigned char get_descr_ex() { unsigned char descr_len,x,state,m; unsigned char *p=data_buf; endp7_mode=0x80; toggle_send(); wr_usb_data(8,Req_buf); //do{ state=issue_token(0x0d); if(state==USB_INT_SUCCESS) { endp6_mode=0xc0; toggle_recv(); //break; } else while(1); //}while(1); state=issue_token(0x09); //程序執(zhí)行到這里state=0x2e,不是0x14.請問是什么原因 if(state==USB_INT_SUCCESS) { x=rd_usb_data(p); if(flag_config_2)descr_len=data_buf[2]-x; else descr_len=data_buf[0]-x; while(descr_len>0) { toggle_recv(); p+=x; if((state=issue_token(0x09))==USB_INT_SUCCESS) { m=rd_usb_data(p); descr_len-=m; x+=m; } else while(1); } } else while(1); // printf("data in failed\n"); endp7_mode=0xc0; toggle_send(); wr_usb_data(0,Req_buf); if(issue_token(0x01)==USB_INT_SUCCESS) { return(0x14); } else while(1); //printf("status failed\n"); }
查看: 4226
回復: 0
請hcn大哥幫幫忙
wangxueyou
發(fā)表于: 2006-09-14 08:37:00
熱門產品 :
CH182: 以太網PHY收發(fā)器芯片
請勿發(fā)布廣告和違法內容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯系方式,以便更好更快服務您
只有登錄才能回復,可以選擇微信賬號登錄