阅读:4033回复:27
请sunkai关注:Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题
看过您的帖子,一定做过EZ_USB 2131Q
而且有liuxf66的推荐,一定得帮个忙! |
|
最新喜欢:jinghu...
|
沙发#
发布于:2002-07-19 19:18
请问是什么问题?我用ezusb时没有遇到的问题都跟驱动无关,cypress提供的驱动很好用,EZ-USB General Purpose Driver Spec.pdf解释了这个驱动的接口.
|
|
板凳#
发布于:2002-07-19 19:36
看了一下你前几次的帖子,弄不清你的意思,有EZ-USB Contents and Tutorial.pdf在做测试时可以参考.
|
|
地板#
发布于:2002-07-20 16:25
Ez_USB/AN2131QC/IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST问题
这个问题是关于EzMr.exe的 Ez_USB开发板有EZ-USB Control Panel的源代码就是EzMr.exe 这想必您是知道的了 其中在下载HEX文件时 下面的记录提示有VENDOR REQUEST的调用 跟踪程序执行发现 bRequest=0xA3 传输的结构是 typedef struct _VENDOR_OR_CLASS_REQUEST_CONTROL { UCHAR direction; UCHAR requestType; UCHAR recepient; UCHAR requestTypeReservedBits; UCHAR request; USHORT value; USHORT index; }VENDOR_OR_CLASS_REQUEST_CONTROL,*PVENDOR_OR_CLASS_REQUEST_CONTROL; 调用语句是: VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; \\\\... bResult = DeviceIoControl(hDevice, IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST, &myRequest, sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL), buffer, pTh->length, (unsigned long *)&nBytes, NULL); 程序EzMr.exe可以顺利的完成这条命令 而我自己编写的程序到这条命令程序停止我必须拔掉USB线 才可以使程序继续执行 我可以保证在myRequest中添加的参数是正确无误的 不知道还有什么问题我没有注意到 |
|
|
地下室#
发布于:2002-07-20 16:26
另外您说的
EZ-USB Contents and Tutorial.pdf 在哪里可以找到,谢谢! |
|
|
5楼#
发布于:2002-07-21 00:23
到cypress去下载ezusb的开发包,里面什么都有,几乎可以万事不求人,你帖子多处说到开发板,我想你应该有了,那就好好看看里面的文档.既然开发板的ezmr能做,你完全照搬一定不会错,用debug一步步看自己漏掉了什么.时间长了我也忘得差不多,如果没有记错的话,手动下载前要做8051_HOLD,完成后要8051_RESET.
|
|
6楼#
发布于:2002-07-21 00:28
做手动下载的话,这个文件也没有用处,从download的消息响应函数单步跟下去试试.
|
|
7楼#
发布于:2002-07-22 01:55
其中在下载HEX文件时
下面的记录提示有VENDOR REQUEST的调用 --------------------------- 实在没有理解你的原意,从上面猜测你想手动下载hex,翻箱倒柜总算找到一点代码,基本是从ezmr中挖出来的,但简洁得多,可以参照分析. case IDC_ANCHOR_DOWNLOAD: { int numread = 0; USHORT Offset; unsigned char* buffer; Offset = (USHORT) pInParam->dldOffset; buffer = (unsigned char*) pInBuffer; numread = pInParam->length; Do8051HOLD (pInParam); // Open the driver OpenDriver if (OpenDriver (&hDevice, pcDriverName) != TRUE) { hDevice = NULL; } if (hDevice != NULL) { PUSB_out->hDevice = hDevice; rc = DeviceIoControl (hDevice, IOCTL_EZUSB_ANCHOR_DOWNLOAD, &Offset, sizeof(USHORT), buffer, numread, (unsigned long *)&nBytes, NULL); CloseHandle (hDevice); // Close the handle PUSB_out->bufferLength = numread; Do8051RUN (pInParam); } } break; ------------------------------------------------- BOOL Do8051HOLD (InParam* pInParam) { BOOL rc=FALSE; int nBytes = 0; VENDOR_REQUEST_IN myRequest; HANDLE hDevice = NULL; char* pcDriverName = (LPTSTR)(LPCTSTR)pInParam->strpcDriverName; // Open the driver if (OpenDriver (&hDevice, pcDriverName) != TRUE) { hDevice = NULL; } myRequest.bRequest = 0xA0; if(pInParam->bFX2) myRequest.wValue = 0xE600; // using CPUCS.0 in FX2 else myRequest.wValue = 0x7F92; myRequest.wIndex = 0x00; myRequest.wLength = 0x01; myRequest.bData =1; myRequest.direction = 0x00; if (hDevice != NULL) {// Perform the Get-Descriptor IOCTL rc = DeviceIoControl (hDevice, IOCTL_Ezusb_VENDOR_REQUEST, &myRequest, sizeof(VENDOR_REQUEST_IN), NULL, 0, (unsigned long *)&nBytes, NULL); if(rc) CloseHandle (hDevice);// Close the handle }/* if valid driver handle */ return rc; } --------------------------------------------------- BOOL Do8051RUN (InParam* pInParam) { BOOL rc=FALSE; int nBytes = 0; VENDOR_REQUEST_IN myRequest; HANDLE hDevice = NULL; char* pcDriverName = (LPTSTR)(LPCTSTR)pInParam->strpcDriverName; // Open the driver if (OpenDriver (&hDevice, pcDriverName) != TRUE) { hDevice = NULL; } myRequest.bRequest = 0xA0; if(pInParam->bFX2) myRequest.wValue = 0xE600; // using CPUCS.0 in FX2 else myRequest.wValue = 0x7F92; myRequest.wIndex = 0x00; myRequest.wLength = 0x01; myRequest.bData = 0; myRequest.direction = 0x00; if (hDevice != NULL) {// Perform the Get-Descriptor IOCTL rc = DeviceIoControl (hDevice, IOCTL_Ezusb_VENDOR_REQUEST, &myRequest, sizeof(VENDOR_REQUEST_IN), NULL, 0, (unsigned long *)&nBytes, NULL); if(rc) CloseHandle (hDevice);// Close the handle }/* if valid driver handle */ return rc; } ------------------ pInParam参数的类型是如下结构,其他参数不难理解: struct InParam-----------类似ezmr中的CThreadInfo { UINT message; WPARAM wParam; LPARAM lParam; int OpIndex; int m_hOpPended; int length; int pipeNum; UINT data; int interfaceNum; int alternateSetting; int packets; int bufCount; int pakPer; DWORD dldOffset; DWORD request; DWORD value; DWORD index; int direction; int bFX2; char * strpcDriverName; }; [编辑 - 7/22/02 by sunkai] |
|
8楼#
发布于:2002-07-23 10:22
我也贴上我的代码,开发工具C++Builder
void __fastcall TIsoForm::ButtonDownloadClick(TObject *Sender) { AnsiString CurrFile=ExtractFilePath(Application->ExeName)+ \"bulktest.hex\"; if(!FileExists(CurrFile)){ ShowMessage(CurrFile+\" 不存在!\"); return; } bRun=false; Sleep(200); CloseHandle(hDevice); if (bOpenDriver(&hDevice,DriverName.c_str())==true){ OutputMemo->Lines->Add(\"Opened Driver Successfully\"); } else{ OutputMemo->Lines->Add(\"Failed to Open Driver\"); hDevice = NULL; } unsigned char* pbuf = new char[MAX_FILE_SIZE]; unsigned char* pVenbuf = new char[MAX_FILE_SIZE]; AnsiString strDldFile=CurrFile.LowerCase(); // 文件名 if(strDldFile.Pos(\".hex\")){ FILE *fp = fopen(strDldFile.c_str(), \"rb\"); if(fp){ char endianConversion = 0; // Mask for endian conversion DWORD offset = 0; // Offset -- set to -1 to get offset from srec or hex file m_MemCache.pImg = &m_MemImg; intel_in(fp, &m_MemCache, offset, endianConversion, FALSE); fclose(fp); for(int k=0; k<m_MemCache.nSeg; k++){ //check for high mem first; load loader first if necessary if(m_MemCache.pSeg[k].TAddr >= 0x2000){ Ezusb_DownloadIntelHex(Vend_Ax); break; } } ButtonRUNClick(ButtonRUN); for(int i=0; i<m_MemCache.nSeg; i++){ if(m_MemCache.pSeg.TAddr >= 0x2000){ CRecalcInfo mTh; memcpy(pVenbuf,m_MemCache.pSeg.pData,m_MemCache.pSeg.Size); mTh.pBuf=pVenbuf; mTh.length=m_MemCache.pSeg.Size; mTh.direction=0; mTh.request=0xA3; mTh.value=m_MemCache.pSeg.TAddr; mTh.index=0xBEEF; VendRequest(&mTh); } //if((((CEzMrFrame*)GetParentFrame())->m_nOpsPending ) >= theApp.m_nMaxOpsPending) // break; } ButtonRUNClick(ButtonHOLD); ButtonRUNClick(ButtonRUN); for(int j=0; j<m_MemCache.nSeg; j++){ if(m_MemCache.pSeg[j].TAddr < 0x2000){ CRecalcInfo mTh; memcpy(pbuf,m_MemCache.pSeg[j].pData,m_MemCache.pSeg[j].Size); mTh.length=m_MemCache.pSeg[j].Size; mTh.dldOffset=m_MemCache.pSeg[j].TAddr; mTh.pBuf=pbuf; AnchorDownload(&mTh); } //if((((CEzMrFrame*)GetParentFrame())->m_nOpsPending ) >= theApp.m_nMaxOpsPending) // break; } ButtonRUNClick(ButtonRUN); } else OutputMemo->Lines->Add(\"Error opening Input file.\"); } else OutputMemo->Lines->Add(\"Please select .hex to download.\"); delete []pbuf; delete []pVenbuf; CloseHandle(hDevice); if (bOpenDriver(&hDevice,DriverName.c_str())==true){ OutputMemo->Lines->Add(\"Opened Driver Successfully\"); } else{ OutputMemo->Lines->Add(\"Failed to Open Driver\"); hDevice = NULL; } Sleep(3000); ButtonStopIsoClick(NULL); } //--------------------------------------------------------------------------- bool __fastcall TIsoForm::VendRequest(CRecalcInfo* pTh) { bOpenDriver(&hDevice,DriverName.c_str()); VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; char *buffer; OutputMemo->Lines->Add(\"Vendor Request\"); myRequest.request = (UCHAR)(pTh->request); myRequest.value = (USHORT)(pTh->value); myRequest.index = (USHORT)(pTh->index); myRequest.direction = pTh->direction; buffer = (char *)(pTh->pBuf); myRequest.requestType=2; myRequest.recepient=0; myRequest.requestTypeReservedBits=130; if(hDevice == NULL)return false; bResult = DeviceIoControl(hDevice, IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST, &myRequest, sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL), buffer, pTh->length, (unsigned long *)&nBytes, NULL); Sleep(500); CloseHandle(hDevice); if(!bResult){ OutputMemo->Lines->Add(\"Vendor Request failed\"); return false; } return true; } //--------------------------------------------------------------------------- void __fastcall TIsoForm::Ezusb_DownloadIntelHex(PMY_INTEL_HEX_RECORD pHexRecord) { PMY_INTEL_HEX_RECORD ptr = pHexRecord; unsigned char* pbuf = new char[MAX_FILE_SIZE]; unsigned char* ptmp = NULL; CRecalcInfo mTh; ButtonRUNClick(ButtonHOLD); ButtonRUNClick(ButtonRUN); while(ptr->Type == 0){ if((ptmp != NULL)&& (m_dldOffset+m_DldLen == DWORD(ptr->Address)) && ((m_DldLen+ptr->Length) <= MAX_EP0_XFER_SIZE)){ memcpy(ptmp, ptr->Data, ptr->Length); m_DldLen += ptr->Length; ptmp += ptr->Length; } else{ if(ptmp != NULL){ AnchorDownload(&mTh); break; } ptmp = pbuf; memcpy(ptmp, ptr->Data, ptr->Length); mTh.length=ptr->Length; mTh.dldOffset=ptr->Address; ptmp += ptr->Length; mTh.pBuf=ptmp; } ptr++; } if(ptmp!= NULL)AnchorDownload(&mTh); ButtonRUNClick(ButtonRUN); delete []pbuf; } //--------------------------------------------------------------------------- void __fastcall TIsoForm::ButtonRUNClick(TObject *Sender) { TButton *pButton=(TButton*)Sender; VENDOR_REQUEST_IN myRequest; (pButton==ButtonRUN)? OutputMemo->Lines->Add(\"RUN ! 8051 Reset\"): OutputMemo->Lines->Add(\"HOLD! 8051 Reset\"); myRequest.bRequest = 0xA0; myRequest.wValue = 0x7F92;//if is FX2 = 0xE600 myRequest.wIndex = 0x00; myRequest.wLength = 0x01; myRequest.bData = ((pButton==ButtonRUN)?0:1); myRequest.direction = 0x00; if(hDevice == NULL)return; bResult = DeviceIoControl (hDevice, IOCTL_Ezusb_VENDOR_REQUEST, &myRequest, sizeof(VENDOR_REQUEST_IN), NULL, 0, (unsigned long *)&nBytes, NULL); if(!bResult)OutputMemo->Lines->Add(\"Reset Failed\"); } //--------------------------------------------------------------------------- bool __fastcall TIsoForm::AnchorDownload(CRecalcInfo* pTh) { char temp[64] = \"\"; ANCHOR_DOWNLOAD_CONTROL downloadControl; unsigned char* buffer; downloadControl.Offset = (USHORT) pTh->dldOffset; buffer = (unsigned char*)(pTh->pBuf); wsprintf(temp,\"Anchor Download %d bytes: addr=%x\",pTh->length, downloadControl.Offset); OutputMemo->Lines->Add(temp); if(hDevice == NULL)return false; if(pTh->dldOffset < 0x2000){ bResult = DeviceIoControl (hDevice, IOCTL_EZUSB_ANCHOR_DOWNLOAD, &downloadControl, sizeof(ANCHOR_DOWNLOAD_CONTROL), buffer, pTh->length, (unsigned long *)&nBytes, NULL); if(!bResult){ OutputMemo->Lines->Add(\"Anchor Download failed\"); return false; } } else{ VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; myRequest.request = (BYTE) 0xA3; myRequest.value = (WORD) pTh->dldOffset; myRequest.index = (WORD) 0x00; myRequest.direction = 0; myRequest.requestType = 2; myRequest.recepient = 0; bResult = DeviceIoControl(hDevice, IOCTL_EZUSB_VENDOR_OR_CLASS_REQUEST, &myRequest, sizeof(VENDOR_OR_CLASS_REQUEST_CONTROL), pTh->pBuf, pTh->length, (unsigned long *)&nBytes, NULL); if(!bResult){ OutputMemo->Lines->Add(\"Vendor Request failed\"); return false; } } return true; } //--------------------------------------------------------------------------- #define MAXSTR 256 // Maximum length of Intel Hex file string int __fastcall TIsoForm::intel_in(FILE * fpIn,CMemCache* pMemCache,DWORD & ioOffset,char endianFlags,bool spaces) { int i; char str[MAXSTR]; unsigned byte; int curSeg = 0; // current seg record int recType; unsigned addr; int cnt; unsigned int totalRead = 0; int CNTFIELD ; int ADDRFIELD; int RECFIELD ; int DATAFIELD; // offsets of fields within record -- may change later due to \"spaces\" setting CNTFIELD = 1; ADDRFIELD = 3; RECFIELD = 7; DATAFIELD = 9; if(!fpIn)return(0); addr = 0; pMemCache->nSeg = 0; while(fgets(str,MAXSTR,fpIn)){ if(str[0]!=\':\'){//每一行第一个字符为:\":\" return(-1); } /* get the record type */ if (spaces || str[1] == \' \'){//有空格的情况 CNTFIELD = 1 + 1; ADDRFIELD = 3 + 2; RECFIELD = 7 + 3; DATAFIELD = 9 + 4; } sscanf(str+RECFIELD,\"%2x\",&recType); PCHAR ptr = (PCHAR)pMemCache->pImg; switch(recType){ case 2: /*seg record*/ sscanf(str+DATAFIELD,\"%4x\",&curSeg); curSeg *= 0x10; break; case 0: /*data record*/ sscanf(str+CNTFIELD,\"%2x\",&cnt); sscanf(str+ADDRFIELD,\"%4x\",&addr); if(addr >= TGT_IMG_SIZE){ return(totalRead); } ptr += addr; // get pointer to location in image if(pMemCache->nSeg && (pMemCache->pSeg[pMemCache->nSeg-1].TAddr == addr - pMemCache->pSeg[pMemCache->nSeg-1].Size) && (pMemCache->pSeg[pMemCache->nSeg-1].Size + cnt <= MAX_EP0_XFER_SIZE) ) { // if the segment is contiguous to the last segment, and it\'s not too big yet pMemCache->pSeg[pMemCache->nSeg-1].Size += cnt; // append to previous segment } else{ // start a new segment pMemCache->pSeg[pMemCache->nSeg].TAddr = addr; pMemCache->pSeg[pMemCache->nSeg].Size = cnt; pMemCache->pSeg[pMemCache->nSeg].pData = ptr; pMemCache->nSeg++; } for(i=0; i<cnt; i++){ sscanf(str+DATAFIELD+i*2,\"%2x\",&byte); *(ptr + i) = byte; totalRead++; } break; case 1: /*end record*/ return(totalRead); default: break; } } return(-1); } //--------------------------------------------------------------------------- bool bOpenDriver(HANDLE *phDeviceHandle, PCHAR devname) { if(*phDeviceHandle)CloseHandle(*phDeviceHandle); char completeDeviceName[64] = \"\"; strcat(completeDeviceName,\"\\\\\\\\.\\\\\"); strcat(completeDeviceName,devname); *phDeviceHandle =CreateFile(completeDeviceName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); if(*phDeviceHandle == INVALID_HANDLE_VALUE)return false; else return true; } //--------------------------------------------------------------------------- 我对CRecalcInfo作了如下修改: struct CRecalcInfo { char* pBuf; int length; DWORD dldOffset; DWORD request; DWORD value; DWORD index; int direction; int bFX2; }; //--------------------------------------------------------------------------- 下载的bulktest.hex就是开发板提供的,使用EZ-USB Control Panel可以正确下载 [编辑 - 7/23/02 by CuiMing_73] |
|
|
9楼#
发布于:2002-07-23 10:28
其他函数都运行的很好
如:AnchorDownload也是下载的 只要一涉及到 VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; 就不能正常运行 |
|
|
10楼#
发布于:2002-07-23 11:48
先放下具体代码,你究竟要用这段代码实现什么?越说清楚越好
|
|
11楼#
发布于:2002-07-23 11:59
我认为没有必要研究手动下载,自己做的firmware能用ezmr下载到板子上正确运行就够了,最终还是要做上电自动下载firmware.必须要从vc转到c++builder的话,耐心一步步跟吧,我恐怕不能帮你了,出差在外,手头没有设备,想debug都不行.
[编辑 - 7/23/02 by sunkai] |
|
12楼#
发布于:2002-07-23 12:20
最简单我使用EZ-USB Control Pabel下载dev_io.hex
显示如下: Toggle 8051 Reset Anchor Download 3376 bytes: addr=0 0000 02 0C DE AA AA AA AA AA AA AA AA AA AA AA AA AA 0010 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 0020 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 0030 AA AA AA 02 0D 02 AA AA AA AA AA AA AA AA AA AA 0040 AA AA AA 02 09 00 AA AA AA AA AA 02 07 0B AA AA 0050 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 0060 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 0070 AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA AA 0080 90 7F E9 E0 70 03 02 02 14 14 70 03 02 02 90 24 0090 FE 70 03 02 03 07 24 FB 70 03 02 02 0E 14 70 03 00A0 02 02 08 14 70 03 02 01 FC 14 70 03 02 02 02 24 00B0 05 60 03 02 03 5B 12 0D 0A 40 03 02 03 67 90 7F 00C0 EB E0 24 FE 60 19 14 60 45 24 02 60 03 02 01 F2 00D0 E5 08 90 7F D4 F0 E5 09 90 7F D5 F0 02 03 67 90 00E0 7F EA E0 FF 12 0A 3C AA 06 A9 07 7B 01 8B 31 8A 00F0 32 89 33 EA 49 60 0D EE 90 7F D4 F0 EF 90 7F D5 0100 F0 02 03 67 90 7F B4 E0 44 01 F0 02 03 67 90 7F 0110 EA E0 FF 12 0B 4F AA 06 A9 07 7B 01 8B 31 8A 32 0120 89 33 EA 49 70 03 02 01 E8 AB 31 8B 38 8A 39 89 0130 3A 12 08 13 F5 3B 90 7F EE E0 FF E5 3B D3 9F 40 0140 03 E0 F5 3B E5 3B 70 03 02 01 DA E4 F5 37 F5 36 0150 F5 35 F5 34 E5 3B C3 94 40 50 04 AF 3B 80 02 7F 0160 40 E4 FC FD FE AB 37 AA 36 A9 35 A8 34 C3 12 08 0170 7B 50 36 E5 3A 25 37 F5 82 E5 39 35 36 F5 83 E0 0180 FF 74 00 25 37 F5 82 E4 34 7F F5 83 EF F0 E4 FA 0190 F9 F8 E5 37 24 01 F5 37 EA 35 36 F5 36 E9 35 35 01A0 F5 35 E8 35 34 F5 34 80 AB E5 3B C3 94 40 50 04 01B0 AF 3B 80 02 7F 40 90 7F B5 EF F0 E5 3B C3 94 40 01C0 50 04 AF 3B 80 02 7F 40 C3 E5 3B 9F F5 3B 90 7F 01D0 B4 E0 20 E2 03 02 01 44 80 F4 E4 90 7F B5 F0 90 01E0 7F B4 74 02 F0 02 03 67 90 7F B4 E0 44 01 F0 02 01F0 03 67 90 7F B4 E0 44 01 F0 02 03 67 12 0C D0 02 0200 03 67 12 0C F2 02 03 67 12 0C EA 02 03 67 12 0C 0210 C2 02 03 67 12 0D 0C 40 03 02 03 67 90 7F E8 E0 0220 24 7F 60 24 14 60 31 24 02 70 5B A2 00 E4 33 FF 0230 25 E0 FF A2 02 E4 33 4F 90 7F 00 F0 E4 A3 F0 90 0240 7F B5 74 02 F0 02 03 67 E4 90 7F 00 F0 A3 F0 90 0250 7F B5 74 02 F0 02 03 67 90 7F EC E0 F4 54 80 FF 0260 C4 54 0F FF E0 54 07 2F 25 E0 24 B4 F5 82 E4 34 0270 7F F5 83 E0 54 01 90 7F 00 F0 E4 A3 F0 90 7F B5 0280 74 02 F0 02 03 67 90 7F B4 E0 44 01 F0 02 03 67 0290 12 0D 0E 40 03 02 03 67 90 7F E8 E0 24 FE 60 1D 02A0 24 02 60 03 02 03 67 90 7F EA E0 B4 01 05 C2 00 02B0 02 03 67 90 7F B4 E0 44 01 F0 02 03 67 90 7F EA 02C0 E0 70 3B 90 7F EC E0 F4 54 80 FF C4 54 0F FF E0 02D0 54 07 2F 25 E0 24 B4 F5 82 E4 34 7F F5 83 E4 F0 02E0 90 7F EC E0 54 80 FF 13 13 13 54 1F FF E0 54 07 02F0 2F 90 7F D7 F0 E4 F5 38 E0 44 20 F0 80 69 90 7F 0300 B4 E0 44 01 F0 80 60 12 0D 10 50 5B 90 7F E8 E0 0310 24 FE 60 18 24 02 70 4F 90 7F EA E0 B4 01 04 D2 0320 00 80 44 90 7F B4 E0 44 01 F0 80 3B 90 7F EA E0 0330 70 20 90 7F EC E0 F4 54 80 FF C4 54 0F FF E0 54 0340 07 2F 25 E0 24 B4 F5 82 E4 34 7F F5 83 74 01 F0 0350 80 15 90 7F B4 E0 44 01 F0 80 0C 12 03 6F 50 07 0360 90 7F B4 E0 44 01 F0 90 7F B4 E0 44 02 F0 22 90 0370 7F A5 E0 54 10 FF C4 54 0F 44 50 F5 15 54 01 24 0380 FF E4 33 F5 17 90 7F E9 E0 24 5E B4 08 00 40 03 0390 02 05 AC 90 03 9A F8 28 28 73 02 04 2B 02 04 2B 03A0 02 03 FA 02 03 B2 02 03 C8 02 03 E4 02 04 03 02 03B0 04 25 90 7F 00 E5 17 F0 90 7F B5 74 01 F0 90 7F 03C0 B4 E0 44 02 F0 02 05 AC 90 7F 92 E0 FF C4 54 0F 03D0 90 7F 00 F0 90 7F B5 74 01 F0 90 7F B4 E0 44 02 03E0 F0 02 05 AC 90 7F 00 74 0F F0 90 7F B5 74 01 F0 03F0 90 7F B4 E0 44 02 F0 02 05 AC 90 7F EA E0 F5 15 0400 02 05 AC 90 7F 00 74 07 F0 90 7F B5 74 01 F0 90 0410 7F B4 E0 44 02 F0 7F E8 7E 03 12 0C AB D2 04 12 0420 09 58 02 05 AC 75 17 01 43 15 01 90 7F EA E0 75 0430 3C 00 F5 3D A3 E0 FE E4 EE 42 3C 90 7F EE E0 75 0440 3E 00 F5 3F A3 E0 FE E4 EE 42 3E 90 7F E8 E0 64 0450 C0 60 03 02 05 18 E5 3F 45 3E 70 03 02 05 AC C3 0460 E5 3F 94 40 E5 3E 94 00 50 08 85 3E 40 85 3F 41 0470 80 06 75 40 00 75 41 40 90 7F E9 E0 B4 A3 35 E4 0480 F5 42 F5 43 C3 E5 43 95 41 E5 42 95 40 50 60 E5 0490 3D 25 43 F5 82 E5 3C 35 42 F5 83 E0 FF 74 00 25 04A0 43 F5 82 E4 34 7F F5 83 EF F0 05 43 E5 43 70 D4 04B0 05 42 80 D0 E4 F5 42 F5 43 C3 E5 43 95 41 E5 42 04C0 95 40 50 18 74 00 25 43 F5 82 E4 34 7F F5 83 74 04D0 CD F0 05 43 E5 43 70 E1 05 42 80 DD AD 41 7A 7F 04E0 79 00 7E 7F 7F 00 AB 07 AF 3D AE 3C 12 09 A9 90 04F0 7F B5 E5 41 F0 25 3D F5 3D E5 40 35 3C F5 3C C3 0500 E5 3F 95 41 F5 3F E5 3E 95 40 F5 3E 90 7F B4 E0 0510 20 E2 03 02 04 56 80 F4 90 7F E8 E0 64 40 60 03 0520 02 05 AC E5 3F 45 3E 70 03 02 05 AC E4 90 7F C5 0530 F0 90 7F B4 E0 20 E3 F9 90 7F C5 E0 75 40 00 F5 0540 41 90 7F E9 E0 B4 A3 35 E4 F5 42 F5 43 C3 E5 43 0550 95 41 E5 42 95 40 50 38 74 C0 25 43 F5 82 E4 34 0560 7E F5 83 E0 FF E5 3D 25 43 F5 82 E5 3C 35 42 F5 0570 83 EF F0 05 43 E5 43 70 D4 05 42 80 D0 AD 41 7A 0580 7E 79 C0 7E 7E 7F C0 AB 07 AF 3D AE 3C 12 0A B4 0590 E5 41 25 3D F5 3D E5 40 35 3C F5 3C C3 E5 3F 95 05A0 41 F5 3F E5 3E 95 40 F5 3E 02 05 23 C3 22 E4 F5 05B0 2C F5 2B F5 2A F5 29 C2 03 C2 00 C2 02 C2 01 12 05C0 08 FA 7E 08 7F 8C 8E 08 8F 09 75 0A 08 75 0B 9E 05D0 75 0C 08 75 0D BE EE 54 E0 70 03 02 06 C2 75 2D 05E0 00 75 2E 80 8E 2F 8F 30 C3 74 F8 9F FF 74 08 9E 05F0 CF 24 02 CF 34 00 FE E4 8F 28 8E 27 F5 26 F5 25 0600 F5 24 F5 23 F5 22 F5 21 AF 28 AE 27 AD 26 AC 25 0610 AB 24 AA 23 A9 22 A8 21 C3 12 08 7B 50 2A E5 2E 0620 25 24 F5 82 E5 2D 35 23 F5 83 74 CD F0 E4 FA F9 0630 F8 E5 24 24 01 F5 24 EA 35 23 F5 23 E9 35 22 F5 0640 22 E8 35 21 F5 21 80 C0 E4 F5 24 F5 23 F5 22 F5 0650 21 AF 28 AE 27 AD 26 AC 25 AB 24 AA 23 A9 22 A8 0660 21 C3 12 08 7B 50 35 AE 23 AF 24 E5 30 2F F5 82 0670 E5 2F 3E F5 83 E0 FD E5 2E 2F F5 82 E5 2D 3E F5 0680 83 ED F0 E4 FA F9 F8 EF 24 01 F5 24 EA 3E F5 23 0690 E9 35 22 F5 22 E8 35 21 F5 21 80 B5 85 2D 08 85 06A0 2E 09 74 8C 24 80 FF 74 08 34 FF FE C3 E5 0B 9F 06B0 F5 0B E5 0A 9E F5 0A C3 E5 0D 9F F5 0D E5 0C 9E 06C0 F5 0C D2 E8 43 D8 20 90 7F 95 E0 44 C0 F0 90 7F 06D0 AF E0 44 01 F0 90 7F AE E0 44 1D F0 D2 AF 53 8E 06E0 F8 30 01 05 12 00 80 C2 01 30 03 1A 12 0D 06 50 06F0 15 C2 03 12 0C 38 20 00 07 90 7F D6 E0 20 E7 F3 0700 12 0C 91 12 0D 08 12 08 FF 80 D6 C0 E0 C0 83 C0 0710 82 C0 85 C0 84 C0 86 75 86 00 C0 D0 75 D0 00 C0 0720 00 C0 01 C0 02 C0 03 C0 06 C0 07 90 7F A5 E0 30 0730 E2 06 75 13 06 02 07 F5 90 7F A5 E0 20 E1 0C E5 0740 13 64 02 60 06 75 13 07 02 07 F5 E5 13 24 FE 60 0750 5F 14 60 36 24 FE 70 03 02 07 E6 24 FC 70 03 02 0760 07 F2 24 08 60 03 02 07 F5 AB 0F AA 10 A9 11 AF 0770 12 05 12 8F 82 75 83 00 12 08 2C 90 7F A6 F0 E5 0780 12 65 0E 70 70 75 13 05 80 6B 90 7F A6 E0 AB 0F 0790 AA 10 A9 11 AE 12 8E 82 75 83 00 12 08 59 75 13 07A0 02 E5 0E 64 01 70 4E 90 7F A5 E0 44 20 F0 80 45 07B0 E5 0E 24 FE B5 12 07 90 7F A5 E0 44 20 F0 E5 0E 07C0 14 B5 12 0A 90 7F A5 E0 44 40 F0 75 13 00 90 7F 07D0 A6 E0 AB 0F AA 10 A9 11 AE 12 8E 82 75 83 00 12 07E0 08 59 05 12 80 0F 90 7F A5 E0 44 40 F0 75 13 00 07F0 80 03 75 13 00 53 91 DF D0 07 D0 06 D0 03 D0 02 0800 D0 01 D0 00 D0 D0 D0 86 D0 84 D0 85 D0 82 D0 83 0810 D0 E0 32 BB 01 06 89 82 8A 83 E0 22 50 02 E7 22 0820 BB FE 02 E3 22 89 82 8A 83 E4 93 22 BB 01 0C E5 0830 82 29 F5 82 E5 83 3A F5 83 E0 22 50 06 E9 25 82 0840 F8 E6 22 BB FE 06 E9 25 82 F8 E2 22 E5 82 29 F5 0850 82 E5 83 3A F5 83 E4 93 22 F8 BB 01 0D E5 82 29 0860 F5 82 E5 83 3A F5 83 E8 F0 22 50 06 E9 25 82 C8 0870 F6 22 BB FE 05 E9 25 82 C8 F2 22 EB 9F F5 F0 EA 0880 9E 42 F0 E9 9D 42 F0 E8 9C 45 F0 22 12 01 00 01 0890 00 00 00 40 47 05 02 10 01 00 01 02 00 01 09 02 08A0 20 00 01 01 00 A0 00 09 04 00 00 02 FF 00 00 00 08B0 07 05 82 02 40 00 00 07 05 02 02 40 00 00 04 03 08C0 09 04 1A 03 41 00 6E 00 63 00 68 00 6F 00 72 00 08D0 20 00 43 00 68 00 69 00 70 00 73 00 1C 03 45 00 08E0 5A 00 2D 00 55 00 53 00 42 00 20 00 44 00 65 00 08F0 76 00 69 00 63 00 65 00 00 00 D2 00 02 0C FA 22 0900 02 0B 7B 00 02 0B EE 00 02 0B C9 00 02 0B A2 00 0910 02 0C 13 00 02 0D 12 00 02 0D 13 00 02 0D 14 00 0920 02 0D 15 00 02 0D 16 00 02 0D 17 00 02 0D 18 00 0930 02 0D 19 00 02 0D 1A 00 02 0D 1B 00 02 0D 1C 00 0940 02 0D 1D 00 02 0D 1E 00 02 0D 1F 00 02 0D 20 00 0950 02 0D 21 00 02 0D 22 00 90 7F D6 E0 44 08 F0 E4 0960 F5 44 E0 54 FB F0 E4 F5 44 E0 44 08 F0 30 04 04 0970 E0 44 02 F0 7F DC 7E 05 12 0C AB 90 7F 92 E0 30 0980 E3 07 7F DC 7E 05 12 0C AB 90 7F AB 74 FF F0 90 0990 7F A9 F0 90 7F AA F0 53 91 EF 90 7F D6 E0 54 F7 09A0 F0 E4 F5 44 E0 44 04 F0 22 8E 44 8F 45 8D 46 8A 09B0 47 8B 48 E4 FD F5 49 E5 17 60 12 E5 44 FF 7E 00 09C0 0D EE 24 00 F5 82 E4 34 0E F5 83 EF F0 E5 45 AE 09D0 05 0D 74 00 2E F5 82 E4 34 0E F5 83 E5 45 F0 7A 09E0 0E 7B 00 AF 15 12 0C 75 AB 48 AA 47 AD 46 AF 15 09F0 02 0C 59 AB 07 AA 06 AC 05 E4 FD E5 17 60 10 EA 0A00 7E 00 0D EE 24 00 F5 82 E4 34 0E F5 83 EA F0 EB 0A10 AE 05 0D 74 00 2E F5 82 E4 34 0E F5 83 EB F0 AF 0A20 05 0D 74 00 2F F5 82 E4 34 0E F5 83 EC F0 7A 0E 0A30 7B 00 AF 15 12 0C 75 AF 15 02 0A 7E E4 FE AC 0A 0A40 AD 0B 8D 82 8C 83 A3 E0 64 02 70 2D AB 06 0E EB 0A50 B5 07 05 AF 05 AE 04 22 8D 82 8C 83 A3 A3 E0 F5 0A60 3C A3 E0 F5 3D 62 3C E5 3C 62 3D E5 3D 62 3C 2D 0A70 FB E5 3C 3C FC AD 03 80 C9 7E 00 7F 00 22 90 7F 0A80 A5 E0 20 E6 F9 C2 E9 90 7F A5 E0 44 80 F0 EF 25 0A90 E0 90 7F A6 F0 90 7F A5 E0 30 E0 F9 90 7F A5 E0 0AA0 44 40 F0 90 7F A5 E0 20 E6 F9 90 7F A5 E0 30 E1 0AB0 D6 D2 E9 22 8E 44 8F 45 8D 46 8A 47 8B 48 E4 F5 0AC0 49 E5 49 C3 95 46 50 20 05 45 E5 45 AE 44 70 02 0AD0 05 44 14 FF E5 48 25 49 F5 82 E4 35 47 F5 83 E0 0AE0 FD 12 09 F3 05 49 80 D9 22 A9 07 90 7F A5 E0 20 0AF0 E6 F9 E5 13 70 25 90 7F A5 E0 44 80 F0 E9 25 E0 0B00 44 01 90 7F A6 F0 8D 0E AF 03 A9 07 75 0F 01 8A 0B10 10 89 11 E4 F5 12 75 13 03 D3 22 C3 22 A9 07 90 0B20 7F A5 E0 20 E6 F9 E5 13 70 23 90 7F A5 E0 44 80 0B30 F0 E9 25 E0 90 7F A6 F0 8D 0E AF 03 A9 07 75 0F 0B40 01 8A 10 89 11 E4 F5 12 75 13 01 D3 22 C3 22 A9 0B50 07 AE 0C AF 0D 8F 82 8E 83 A3 E0 64 03 70 17 AD 0B60 01 19 ED 70 01 22 8F 82 8E 83 E0 7C 00 2F FD EC 0B70 3E FE AF 05 80 DF 7E 00 7F 00 22 C0 E0 C0 83 C0 0B80 82 C0 85 C0 84 C0 86 75 86 00 D2 01 53 91 EF 90 0B90 7F AB 74 01 F0 D0 86 D0 84 D0 85 D0 82 D0 83 D0 0BA0 E0 32 C0 E0 C0 83 C0 82 C0 85 C0 84 C0 86 75 86 0BB0 00 D2 03 53 91 EF 90 7F AB 74 08 F0 D0 86 D0 84 0BC0 D0 85 D0 82 D0 83 D0 E0 32 C0 E0 C0 83 C0 82 C0 0BD0 85 C0 84 C0 86 75 86 00 53 91 EF 90 7F AB 74 04 0BE0 F0 D0 86 D0 84 D0 85 D0 82 D0 83 D0 E0 32 C0 E0 0BF0 C0 83 C0 82 C0 85 C0 84 C0 86 75 86 00 53 91 EF 0C00 90 7F AB 74 02 F0 D0 86 D0 84 D0 85 D0 82 D0 83 0C10 D0 E0 32 C0 E0 C0 83 C0 82 C0 85 C0 84 C0 86 75 0C20 86 00 53 91 EF 90 7F AB 74 10 F0 D0 86 D0 84 D0 0C30 85 D0 82 D0 83 D0 E0 32 90 7F D6 E0 44 80 F0 43 0C40 87 01 00 00 00 00 00 22 74 00 F5 86 90 FD A5 7C 0C50 05 A3 E5 82 45 83 70 F9 22 12 0A E9 E5 13 24 FA 0C60 60 0E 14 60 06 24 07 70 F3 D3 22 E4 F5 13 D3 22 0C70 E4 F5 13 D3 22 12 0B 1D E5 13 24 FA 60 0E 14 60 0C80 06 24 07 70 F3 D3 22 E4 F5 13 D3 22 E4 F5 13 D3 0C90 22 90 7F D6 E0 30 E7 12 E0 44 01 F0 7F 14 7E 00 0CA0 12 0C AB 90 7F D6 E0 54 FE F0 22 8E 45 8F 46 E5 0CB0 46 15 46 AE 45 70 02 15 45 4E 60 05 12 0C 48 80 0CC0 EE 22 90 7F 00 E5 16 F0 90 7F B5 74 01 F0 D3 22 0CD0 90 7F 00 E5 14 F0 90 7F B5 74 01 F0 D3 22 78 7F 0CE0 E4 F6 D8 FD 75 81 49 02 05 AE 90 7F EA E0 F5 16 0CF0 D3 22 90 7F EA E0 F5 14 D3 22 E4 F5 13 D2 E9 D2 0D00 AF 22 53 D8 EF 32 D3 22 D3 22 D3 22 D3 22 D3 22 0D10 D3 22 32 32 32 32 32 32 32 32 32 32 32 32 32 32 0D20 32 32 32 AA AA AA AA AA AA AA AA AA AA AA AA AA Toggle 8051 Reset Vendor Request 0000 50 50 00 C0 F9 A4 B0 99 92 82 F8 80 98 88 83 C6 0010 A1 86 8E Vendor Request 0000 E4 F5 0E 75 0F FF 75 10 01 12 43 60 7A 50 7B 10 0010 7D 01 7F 20 12 43 14 90 50 10 E0 FF 65 0F FE 8F 0020 0F E4 FF EE 60 4D 30 E0 43 E5 0F A8 07 08 80 02 0030 C3 13 D8 FC 20 E0 32 EF 60 27 24 FE 60 15 14 60 0040 25 24 02 70 24 15 0E E5 0E D3 94 0F 40 1B 75 0E 0050 0F 80 16 05 0E E5 0E D3 94 0F 40 0D E4 F5 0E 80 0060 08 E4 F5 0E 80 03 75 0E 0F 75 10 01 EE C3 13 FE 0070 0F 80 B0 E5 10 60 95 74 00 25 0E F5 82 E4 34 50 0080 AB 82 FA 7D 01 7F 21 12 43 30 7F 21 12 42 78 E4 0090 F5 10 02 41 14 Vendor Request 0000 E4 F5 0D D2 E9 D2 AF 22 Vendor Request 0000 90 7F A5 E0 20 E6 F9 C2 E9 90 7F A5 E0 44 80 F0 0010 EF 25 E0 90 7F A6 F0 90 7F A5 E0 30 E0 F9 90 7F 0020 A5 E0 44 40 F0 90 7F A5 E0 20 E6 F9 90 7F A5 E0 0030 30 E1 D6 D2 E9 22 Vendor Request 0000 A9 07 90 7F A5 E0 20 E6 F9 E5 0D 70 23 90 7F A5 0010 E0 44 80 F0 E9 25 E0 90 7F A6 F0 8D 08 AF 03 A9 0020 07 75 09 01 8A 0A 89 0B E4 F5 0C 75 0D 01 D3 22 0030 C3 22 Vendor Request 0000 A9 07 90 7F A5 E0 20 E6 F9 E5 0D 70 25 90 7F A5 0010 E0 44 80 F0 E9 25 E0 44 01 90 7F A6 F0 8D 08 AF 0020 03 A9 07 75 09 01 8A 0A 89 0B E4 F5 0C 75 0D 03 0030 D3 22 C3 22 Vendor Request 0000 C0 E0 C0 83 C0 82 C0 85 C0 84 C0 86 75 86 00 C0 0010 D0 75 D0 00 C0 00 C0 01 C0 02 C0 03 C0 06 C0 07 0020 90 7F A5 E0 30 E2 06 75 0D 06 02 40 EA 90 7F A5 0030 E0 20 E1 0C E5 0D 64 02 60 06 75 0D 07 02 40 EA 0040 E5 0D 24 FE 60 5F 14 60 36 24 FE 70 03 02 40 DB 0050 24 FC 70 03 02 40 E7 24 08 60 03 02 40 EA AB 09 0060 AA 0A A9 0B AF 0C 05 0C 8F 82 75 83 00 12 42 29 0070 90 7F A6 F0 E5 0C 65 08 70 70 75 0D 05 80 6B 90 0080 7F A6 E0 AB 09 AA 0A A9 0B AE 0C 8E 82 75 83 00 0090 12 42 56 75 0D 02 E5 08 64 01 70 4E 90 7F A5 E0 00A0 44 20 F0 80 45 E5 08 24 FE B5 0C 07 90 7F A5 E0 00B0 44 20 F0 E5 08 14 B5 0C 0A 90 7F A5 E0 44 40 F0 00C0 75 0D 00 90 7F A6 E0 AB 09 AA 0A A9 0B AE 0C 8E 00D0 82 75 83 00 12 42 56 05 0C 80 0F 90 7F A5 E0 44 00E0 40 F0 75 0D 00 80 03 75 0D 00 53 91 DF D0 07 D0 00F0 06 D0 03 D0 02 D0 01 D0 00 D0 D0 D0 86 D0 84 D0 0100 85 D0 82 D0 83 D0 E0 32 Vendor Request 0000 12 42 AE E5 0D 24 FA 60 0E 14 60 06 24 07 70 F3 0010 D3 22 E4 F5 0D D3 22 E4 F5 0D D3 22 12 42 E2 E5 0020 0D 24 FA 60 0E 14 60 06 24 07 70 F3 D3 22 E4 F5 0030 0D D3 22 E4 F5 0D D3 22 Vendor Request 0000 78 7F E4 F6 D8 FD 75 81 10 02 41 E4 Vendor Request 0000 BB 01 0C E5 82 29 F5 82 E5 83 3A F5 83 E0 22 50 0010 06 E9 25 82 F8 E6 22 BB FE 06 E9 25 82 F8 E2 22 0020 E5 82 29 F5 82 E5 83 3A F5 83 E4 93 22 F8 BB 01 0030 0D E5 82 29 F5 82 E5 83 3A F5 83 E8 F0 22 50 06 0040 E9 25 82 C8 F6 22 BB FE 05 E9 25 82 C8 F2 22 Vendor Request 0000 02 41 08 E4 93 A3 F8 E4 93 A3 40 03 F6 80 01 F2 0010 08 DF F4 80 29 E4 93 A3 F8 54 07 24 0C C8 C3 33 0020 C4 54 0F 44 20 C8 83 40 04 F4 56 80 01 46 F6 DF 0030 E4 80 0B 01 02 04 08 10 20 40 80 90 43 4C E4 7E 0040 01 93 60 BC A3 FF 54 3F 30 E5 09 54 1F FE E4 93 0050 A3 60 01 0E CF 54 C0 25 E0 60 A8 40 B8 E4 93 A3 0060 FA E4 93 A3 F8 E4 93 A3 C8 C5 82 C8 CA C5 83 CA 0070 F0 A3 C8 C5 82 C8 CA C5 83 CA DF E9 DE E7 80 BE Vendor Request 0000 00 Toggle 8051 Reset Anchor Download 3 bytes: addr=4b 0000 02 40 00 Anchor Download 3 bytes: addr=0 0000 02 41 9D Toggle 8051 Reset |
|
|
13楼#
发布于:2002-07-23 12:32
其中跟踪显示:
长的一段是Ezusb_DownloadIntelHex(Vend_Ax); 标示为:Vendor Request的因为满足 if(m_MemCache.pSeg.TAddr >= 0x2000) 则是要调用VendRequest(&mTh); [编辑 - 7/23/02 by CuiMing_73] |
|
|
14楼#
发布于:2002-07-23 17:38
看着头晕,贴那些东西出来有什么用啊?大哥,用hex2c处理一下hex就能看到以上一大堆看着也白看的x进制码.一步步跟ezmr,不就知道为什么它是好的,C++builder写的为什么出错啦.
|
|
15楼#
发布于:2002-07-23 17:53
贴出来是为了说明
有:Vendor Request 的调用 而且我也跟踪了ezmr 确实要到 case IDC_VEND_REQUEST:这一步 我也再次保证我对 VENDOR_OR_CLASS_REQUEST_CONTROL myRequest; 各参数的填写是正确无误的 |
|
|
16楼#
发布于:2002-07-23 18:14
参数一样,那岂不是驱动不一视同仁?
如其在这里花时间,还不如绕过它,先在开发板上验证firmware的正确,build进驱动中,做成上电下载,如何? 你想自己做下载的目的也不外乎方便调试firmware,不会一直用应用程序下载吧?暂时用ezmr下载,自己的应用程序检验功能,有空再来做好了 |
|
17楼#
发布于:2002-07-24 08:44
老兄 全让你猜着了 我对“build进驱动中,做成上电下载” 不会所以才出此下策 现在的方案确实是“一直用应用程序下载” 我也想写入EPROM但硬件方面希望尽可能的小 万望老兄帮忙! |
|
|
18楼#
发布于:2002-07-24 10:16
build进驱动其实很简单,照cypress的葫芦画你的瓢就行了,有文档说明,没有什么需要你自己操心的.只要硬件上有一个eeprom,第一个字节是BO,后面6个字节是vid pid did,B0 load方式就能做到上电自动下载.首先要做的是做好firmware,怎么做下载那是下一步的事,调试firmware时用ezmr下载和用你自己的代码下载还不是一样的么?写入eeprom用B2 load,就更应该最后考虑了,只有做发行版本时才有必要搞它,用应用程序下载我认为只适合做做研究,不象是做产品设计,不保密不安全,B0 load是最简单的通行做法.24LC00/24LC01不是很大吧?8个脚的片子而已.
|
|
19楼#
发布于:2002-07-24 14:22
我的firmware 8051_asm代码
您看有问题吗? ;----------------------------------------------------------------- $NOMOD51 ; disable predefined 8051 registers $nolist $include (C:\\Cypress\\USB\\Target\\inc\\ezregs.inc) ; EZ-USB register assignments $list ; NAME eziso ; CSEG AT 0 mov dptr,#IN8ADDR ; set the FIFO start for EP8 to 0 mov a,#0 movx @dptr,a mov a,#0xFF mov dptr,#OEC movx @dptr,a mov dptr,#OEB movx @dptr,a mov dptr,#OEA movx @dptr,a ljmp loop ; ------------------------------------------------- org 100h ; ------------------------------------------------- loop: mov dptr,#USBIRQ ; wait for SOF IRQ bit movx a,@dptr jb acc.1,IsoIn mov dptr,#OUT2CS ; EP2OUT Control & Status reg movx a,@dptr jb acc.1,loop ; busy-keep checking ; service_OUT2: mov dptr,#OUT2BUF movx a,@dptr mov r7,a inc dptr movx a,@dptr mov r6,a inc dptr movx a,@dptr mov dptr,#OUTA movx @dptr,a mov a,r6 mov dptr,#OUTB movx @dptr,a mov a,r7 mov dptr,#OUTC movx @dptr,a mov dptr,#OUT2BC ; load anything to byte count to re-arm mov a,#1 ; any value movx @dptr,a sjmp loop ; IsoIn: mov a,#00000010b ; SOFIR bit movx @dptr,a ; writing 1 clears the SOF IRQ bit ; mov dptr,#USBFRAMEH ; put the frame number into first two EP8IN bytes movx a,@dptr mov dptr,#IN8DATA ; \"IN8DATA\" is a FIFO inside the EZ-USB chip movx @dptr,a ; byte 0 mov dptr,#USBFRAMEL movx a,@dptr mov dptr,#IN8DATA movx @dptr,a ; byte 1 ; mov r2,#24 loop_cm: mov dptr,#PINSC ; read PORTC pins movx a,@dptr mov dptr,#IN8DATA movx @dptr,a mov a,#0 movx @dptr,a djnz r2,loop_cm ; sjmp loop ; END 这个代码用您说的方法下载没有问题 也可以完成我在另一个主体中说的1000 ISO IN 200 BULK OUT 但不能长时间稳定运行 另外,ISO 之前为什么要 IOCTL_Ezusb_RESETPIPE 然后 IOCTL_EZUSB_START_ISO_STREAM |
|
|
上一页
下一页