📄 main.lss
字号:
100558: 1c20 adds r0, r4, #0
10055a: f7ff ff1b bl 100394 <AT91F_USB_SendZlp>
pUDP->UDP_FADDR = (AT91C_UDP_FEN | wValue);
10055e: 2380 movs r3, #128
100560: 005b lsls r3, r3, #1
100562: 4642 mov r2, r8
100564: 4313 orrs r3, r2
100566: 60a3 str r3, [r4, #8]
100568: 2300 movs r3, #0
10056a: 2a00 cmp r2, #0
10056c: d000 beq.n 100570 <AT91F_UDP_IsConfigured+0x19c>
10056e: 2301 movs r3, #1
pUDP->UDP_GLBSTATE = (wValue) ? AT91C_UDP_FADDEN : 0;
100570: 6063 str r3, [r4, #4]
100572: e0c4 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_SET_CONFIGURATION:
pCdc->currentConfiguration = wValue;
100574: 4643 mov r3, r8
100576: 712b strb r3, [r5, #4]
AT91F_USB_SendZlp(pUDP);
100578: 1c20 adds r0, r4, #0
10057a: f7ff ff0b bl 100394 <AT91F_USB_SendZlp>
pUDP->UDP_GLBSTATE = (wValue) ? AT91C_UDP_CONFG : AT91C_UDP_FADDEN;
10057e: 4640 mov r0, r8
100580: 2800 cmp r0, #0
100582: d100 bne.n 100586 <AT91F_UDP_IsConfigured+0x1b2>
100584: e0b5 b.n 1006f2 <AT91F_UDP_IsConfigured+0x31e>
100586: 2302 movs r3, #2
100588: 6063 str r3, [r4, #4]
pUDP->UDP_CSR[1] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_OUT) : 0;
10058a: 2382 movs r3, #130
10058c: 021b lsls r3, r3, #8
10058e: 6363 str r3, [r4, #52]
pUDP->UDP_CSR[2] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_IN) : 0;
100590: 2386 movs r3, #134
100592: 021b lsls r3, r3, #8
100594: 63a3 str r3, [r4, #56]
100596: 2387 movs r3, #135
100598: 021b lsls r3, r3, #8
pUDP->UDP_CSR[3] = (wValue) ? (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_INT_IN) : 0;
10059a: 63e3 str r3, [r4, #60]
10059c: e0af b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_GET_CONFIGURATION:
AT91F_USB_SendData(pUDP, (char *) &(pCdc->currentConfiguration), sizeof(pCdc->currentConfiguration));
10059e: 1d29 adds r1, r5, #4
1005a0: 1c20 adds r0, r4, #0
1005a2: 2201 movs r2, #1
1005a4: f7ff feb8 bl 100318 <AT91F_USB_SendData>
1005a8: e0a9 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_GET_STATUS_ZERO:
wStatus = 0;
1005aa: 4669 mov r1, sp
1005ac: 3102 adds r1, #2
1005ae: 2300 movs r3, #0
1005b0: 800b strh r3, [r1, #0]
AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
1005b2: 1c20 adds r0, r4, #0
1005b4: 2202 movs r2, #2
1005b6: f7ff feaf bl 100318 <AT91F_USB_SendData>
1005ba: e0a0 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_GET_STATUS_INTERFACE:
wStatus = 0;
1005bc: 4669 mov r1, sp
1005be: 3102 adds r1, #2
1005c0: 2300 movs r3, #0
1005c2: 800b strh r3, [r1, #0]
AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
1005c4: 1c20 adds r0, r4, #0
1005c6: 2202 movs r2, #2
1005c8: f7ff fea6 bl 100318 <AT91F_USB_SendData>
1005cc: e097 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_GET_STATUS_ENDPOINT:
wStatus = 0;
1005ce: 4669 mov r1, sp
1005d0: 3102 adds r1, #2
1005d2: 2300 movs r3, #0
1005d4: 800b strh r3, [r1, #0]
wIndex &= 0x0F;
1005d6: 230f movs r3, #15
1005d8: 4662 mov r2, ip
1005da: 401a ands r2, r3
if ((pUDP->UDP_GLBSTATE & AT91C_UDP_CONFG) && (wIndex <= 3)) {
1005dc: 6863 ldr r3, [r4, #4]
1005de: 0798 lsls r0, r3, #30
1005e0: d50d bpl.n 1005fe <AT91F_UDP_IsConfigured+0x22a>
1005e2: 2a03 cmp r2, #3
1005e4: d80b bhi.n 1005fe <AT91F_UDP_IsConfigured+0x22a>
wStatus = (pUDP->UDP_CSR[wIndex] & AT91C_UDP_EPEDS) ? 0 : 1;
1005e6: 0093 lsls r3, r2, #2
1005e8: 191b adds r3, r3, r4
1005ea: 6b1a ldr r2, [r3, #48]
1005ec: 0bd2 lsrs r2, r2, #15
1005ee: 2301 movs r3, #1
1005f0: 4393 bics r3, r2
1005f2: 800b strh r3, [r1, #0]
AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
1005f4: 1c20 adds r0, r4, #0
1005f6: 2202 movs r2, #2
1005f8: f7ff fe8e bl 100318 <AT91F_USB_SendData>
1005fc: e07f b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
}
else if ((pUDP->UDP_GLBSTATE & AT91C_UDP_FADDEN) && (wIndex == 0)) {
1005fe: 6863 ldr r3, [r4, #4]
100600: 2001 movs r0, #1
100602: 4203 tst r3, r0
100604: d00c beq.n 100620 <AT91F_UDP_IsConfigured+0x24c>
100606: 2a00 cmp r2, #0
100608: d10a bne.n 100620 <AT91F_UDP_IsConfigured+0x24c>
wStatus = (pUDP->UDP_CSR[wIndex] & AT91C_UDP_EPEDS) ? 0 : 1;
10060a: 6b23 ldr r3, [r4, #48]
10060c: 4669 mov r1, sp
10060e: 3102 adds r1, #2
100610: 0bdb lsrs r3, r3, #15
100612: 4398 bics r0, r3
100614: 8008 strh r0, [r1, #0]
AT91F_USB_SendData(pUDP, (char *) &wStatus, sizeof(wStatus));
100616: 1c20 adds r0, r4, #0
100618: 2202 movs r2, #2
10061a: f7ff fe7d bl 100318 <AT91F_USB_SendData>
10061e: e06e b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
}
else
AT91F_USB_SendStall(pUDP);
100620: 1c20 adds r0, r4, #0
100622: f7ff fec7 bl 1003b4 <AT91F_USB_SendStall>
100626: e06a b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_SET_FEATURE_ZERO:
AT91F_USB_SendStall(pUDP);
100628: 1c20 adds r0, r4, #0
10062a: f7ff fec3 bl 1003b4 <AT91F_USB_SendStall>
10062e: e066 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_SET_FEATURE_INTERFACE:
AT91F_USB_SendZlp(pUDP);
100630: 1c20 adds r0, r4, #0
100632: f7ff feaf bl 100394 <AT91F_USB_SendZlp>
100636: e062 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_SET_FEATURE_ENDPOINT:
wIndex &= 0x0F;
if ((wValue == 0) && wIndex && (wIndex <= 3)) {
100638: 4642 mov r2, r8
10063a: 2a00 cmp r2, #0
10063c: d10c bne.n 100658 <AT91F_UDP_IsConfigured+0x284>
10063e: 230f movs r3, #15
100640: 4660 mov r0, ip
100642: 4003 ands r3, r0
100644: d008 beq.n 100658 <AT91F_UDP_IsConfigured+0x284>
100646: 2b03 cmp r3, #3
100648: d806 bhi.n 100658 <AT91F_UDP_IsConfigured+0x284>
pUDP->UDP_CSR[wIndex] = 0;
10064a: 009b lsls r3, r3, #2
10064c: 191b adds r3, r3, r4
10064e: 631a str r2, [r3, #48]
AT91F_USB_SendZlp(pUDP);
100650: 1c20 adds r0, r4, #0
100652: f7ff fe9f bl 100394 <AT91F_USB_SendZlp>
100656: e052 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
}
else
AT91F_USB_SendStall(pUDP);
100658: 1c20 adds r0, r4, #0
10065a: f7ff feab bl 1003b4 <AT91F_USB_SendStall>
10065e: e04e b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_CLEAR_FEATURE_ZERO:
AT91F_USB_SendStall(pUDP);
100660: 1c20 adds r0, r4, #0
100662: f7ff fea7 bl 1003b4 <AT91F_USB_SendStall>
100666: e04a b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_CLEAR_FEATURE_INTERFACE:
AT91F_USB_SendZlp(pUDP);
100668: 1c20 adds r0, r4, #0
10066a: f7ff fe93 bl 100394 <AT91F_USB_SendZlp>
10066e: e046 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case STD_CLEAR_FEATURE_ENDPOINT:
wIndex &= 0x0F;
if ((wValue == 0) && wIndex && (wIndex <= 3)) {
100670: 4642 mov r2, r8
100672: 2a00 cmp r2, #0
100674: d11a bne.n 1006ac <AT91F_UDP_IsConfigured+0x2d8>
100676: 230f movs r3, #15
100678: 4660 mov r0, ip
10067a: 4003 ands r3, r0
10067c: d016 beq.n 1006ac <AT91F_UDP_IsConfigured+0x2d8>
10067e: 2b03 cmp r3, #3
100680: d814 bhi.n 1006ac <AT91F_UDP_IsConfigured+0x2d8>
if (wIndex == 1)
100682: 2b01 cmp r3, #1
100684: d103 bne.n 10068e <AT91F_UDP_IsConfigured+0x2ba>
pUDP->UDP_CSR[1] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_OUT);
100686: 2382 movs r3, #130
100688: 021b lsls r3, r3, #8
10068a: 6363 str r3, [r4, #52]
10068c: e00a b.n 1006a4 <AT91F_UDP_IsConfigured+0x2d0>
else if (wIndex == 2)
10068e: 2b02 cmp r3, #2
100690: d103 bne.n 10069a <AT91F_UDP_IsConfigured+0x2c6>
pUDP->UDP_CSR[2] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_BULK_IN);
100692: 2386 movs r3, #134
100694: 021b lsls r3, r3, #8
100696: 63a3 str r3, [r4, #56]
100698: e004 b.n 1006a4 <AT91F_UDP_IsConfigured+0x2d0>
else if (wIndex == 3)
10069a: 2b03 cmp r3, #3
10069c: d102 bne.n 1006a4 <AT91F_UDP_IsConfigured+0x2d0>
pUDP->UDP_CSR[3] = (AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_ISO_IN);
10069e: 2385 movs r3, #133
1006a0: 021b lsls r3, r3, #8
1006a2: 63e3 str r3, [r4, #60]
AT91F_USB_SendZlp(pUDP);
1006a4: 1c20 adds r0, r4, #0
1006a6: f7ff fe75 bl 100394 <AT91F_USB_SendZlp>
1006aa: e028 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
}
else
AT91F_USB_SendStall(pUDP);
1006ac: 1c20 adds r0, r4, #0
1006ae: f7ff fe81 bl 1003b4 <AT91F_USB_SendStall>
1006b2: e024 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
// handle CDC class requests
case SET_LINE_CODING:
while ( !(pUDP->UDP_CSR[0] & AT91C_UDP_RX_DATA_BK0) );
1006b4: 6b23 ldr r3, [r4, #48]
1006b6: 2202 movs r2, #2
1006b8: 4213 tst r3, r2
1006ba: d0fb beq.n 1006b4 <AT91F_UDP_IsConfigured+0x2e0>
pUDP->UDP_CSR[0] &= ~(AT91C_UDP_RX_DATA_BK0);
1006bc: 6b23 ldr r3, [r4, #48]
1006be: 4393 bics r3, r2
1006c0: 6323 str r3, [r4, #48]
AT91F_USB_SendZlp(pUDP);
1006c2: 1c20 adds r0, r4, #0
1006c4: f7ff fe66 bl 100394 <AT91F_USB_SendZlp>
1006c8: e019 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case GET_LINE_CODING:
AT91F_USB_SendData(pUDP, (char *) &line, MIN(sizeof(line), wLength));
1006ca: 2f08 cmp r7, #8
1006cc: d901 bls.n 1006d2 <AT91F_UDP_IsConfigured+0x2fe>
1006ce: 2208 movs r2, #8
1006d0: e000 b.n 1006d4 <AT91F_UDP_IsConfigured+0x300>
1006d2: 1c3a adds r2, r7, #0
1006d4: 4913 ldr r1, [pc, #76] (100724 <.text+0x724>)
1006d6: 1c20 adds r0, r4, #0
1006d8: f7ff fe1e bl 100318 <AT91F_USB_SendData>
1006dc: e00f b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
case SET_CONTROL_LINE_STATE:
pCdc->currentConnection = wValue;
1006de: 4642 mov r2, r8
1006e0: 716a strb r2, [r5, #5]
AT91F_USB_SendZlp(pUDP);
1006e2: 1c20 adds r0, r4, #0
1006e4: f7ff fe56 bl 100394 <AT91F_USB_SendZlp>
1006e8: e009 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
break;
default:
AT91F_USB_SendStall(pUDP);
1006ea: 1c20 adds r0, r4, #0
1006ec: f7ff fe62 bl 1003b4 <AT91F_USB_SendStall>
1006f0: e005 b.n 1006fe <AT91F_UDP_IsConfigured+0x32a>
1006f2: 2301 movs r3, #1
1006f4: 6063 str r3, [r4, #4]
1006f6: 2300 movs r3, #0
1006f8: 6363 str r3, [r4, #52]
1006fa: 63a3 str r3, [r4, #56]
1006fc: e74d b.n 10059a <AT91F_UDP_IsConfigured+0x1c6>
1006fe: 7928 ldrb r0, [r5, #4]
100700: b002 add sp, #8
100702: bc04 pop {r2}
100704: 4690 mov r8, r2
100706: bcf0 pop {r4, r5, r6, r7}
100708: bc02 pop {r1}
10070a: 4708 bx r1
10070c: 0301 lsls r1, r0, #12
10070e: 0000 lsls r0, r0, #0
100710: 0302 lsls r2, r0, #12
100712: 0000 lsls r0, r0, #0
100714: 2021 movs r0, #33
100716: 0000 lsls r0, r0, #0
100718: 21a1 movs r1, #161
10071a: 0000 lsls r0, r0, #0
10071c: 0af0 lsrs r0, r6, #11
10071e: 0010 lsls r0, r2, #0
100720: 0b02 lsrs r2, r0, #12
100722: 0010 lsls r0, r2, #0
100724: 01c8 lsls r0, r1, #7
100726: 0020 lsls r0, r4, #0
00100728 <AT91F_UDP_Write>:
100728: b5f0 push {r4, r5, r6, r7, lr}
10072a: 1c06 adds r6, r0, #0
10072c: 1c0f adds r7, r1, #0
10072e: 6804 ldr r4, [r0, #0]
100730: 1c10 adds r0, r2, #0
100732: 2a40 cmp r2, #64
100734: d900 bls.n 100738 <AT91F_UDP_Write+0x10>
100736: 2040 movs r0, #64
100738: 1a15 subs r5, r2, r0
10073a: 1e41 subs r1, r0, #1
10073c: d306 bcc.n 10074c <AT91F_UDP_Write+0x24>
10073e: 1c3a adds r2, r7, #0
100740: 7813 ldrb r3, [r2, #0]
100742: 65a3 str r3, [r4, #88]
100744: 3201 adds r2, #1
100746: 3901 subs r1, #1
100748: d2fa bcs.n 100740 <AT91F_UDP_Write+0x18>
10074a: 183f adds r7, r7, r0
10074c: 6ba3 ldr r3, [r4, #56]
10074e: 2210 movs r2, #16
100750: 4313 orrs r3, r2
100752: 63a3 str r3, [r4, #56]
100754: 2d00 cmp r5, #0
100756: d029 beq.n 1007ac <AT91F_UDP_Write+0x84>
100758: 1c28 adds r0, r5, #0
10075a: 2d40 cmp r5, #64
10075c: d900 bls.n 100760 <AT91F_UDP_Write+0x38>
10075e: 2040 movs r0, #64
100760: 1a2d subs r5, r5, r0
100762: 1e41 subs r1, r0, #1
100764: d30c bcc.n 100780 <AT91F_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -