📄 usb_regs.txt
字号:
|L50.24|
000018 40005c50 DCD 0x40005c50
|L50.28|
00001c 40006000 DCD 0x40006000
AREA ||i.SetEPDblBuffCount||, CODE, READONLY, ALIGN=2
SetEPDblBuffCount PROC
;;;630 void SetEPDblBuffCount(u8 bEpNum, u8 bDir, u16 wCount)
;;;631 {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 f8dfe09c LDR lr,|L51.164|
;;;632 _SetEPDblBuffCount(bEpNum, bDir, wCount);
000008 2901 CMP r1,#1
00000a d12f BNE |L51.108|
00000c f8de3c50 LDR r3,[lr,#0xc50]
000010 4925 LDR r1,|L51.168|
000012 b29b UXTH r3,r3
000014 eb0303c0 ADD r3,r3,r0,LSL #3
000018 eb010743 ADD r7,r1,r3,LSL #1
00001c 0953 LSRS r3,r2,#5
00001e 0851 LSRS r1,r2,#1
000020 1e5e SUBS r6,r3,#1
000022 1c4c ADDS r4,r1,#1
000024 f44f4c00 MOV r12,#0x8000
000028 2a3e CMP r2,#0x3e
00002a d907 BLS |L51.60|
00002c 461d MOV r5,r3
00002e ea5f68c2 LSLS r8,r2,#27
000032 d100 BNE |L51.54|
000034 b2b5 UXTH r5,r6
|L51.54|
000036 ea4c2585 ORR r5,r12,r5,LSL #10
00003a e005 B |L51.72|
|L51.60|
00003c 460d MOV r5,r1
00003e ea5f78c2 LSLS r8,r2,#31
000042 d000 BEQ |L51.70|
000044 b2a5 UXTH r5,r4
|L51.70|
000046 02ad LSLS r5,r5,#10
|L51.72|
000048 603d STR r5,[r7,#0]
00004a f8de7c50 LDR r7,[lr,#0xc50]
00004e 4d16 LDR r5,|L51.168|
000050 b2bf UXTH r7,r7
000052 3508 ADDS r5,r5,#8
000054 eb0700c0 ADD r0,r7,r0,LSL #3
000058 eb050040 ADD r0,r5,r0,LSL #1
00005c 2a3e CMP r2,#0x3e
00005e d91b BLS |L51.152|
000060 06d1 LSLS r1,r2,#27
000062 d100 BNE |L51.102|
000064 b2b3 UXTH r3,r6
|L51.102|
000066 ea4c2183 ORR r1,r12,r3,LSL #10
00006a e019 B |L51.160|
|L51.108|
00006c 2902 CMP r1,#2
00006e d111 BNE |L51.148|
000070 f8de3c50 LDR r3,[lr,#0xc50]
000074 490c LDR r1,|L51.168|
000076 b29b UXTH r3,r3
000078 1f09 SUBS r1,r1,#4
00007a eb0303c0 ADD r3,r3,r0,LSL #3
00007e eb010343 ADD r3,r1,r3,LSL #1
000082 605a STR r2,[r3,#4]
000084 f8de3c50 LDR r3,[lr,#0xc50]
000088 b29b UXTH r3,r3
00008a eb0300c0 ADD r0,r3,r0,LSL #3
00008e eb010040 ADD r0,r1,r0,LSL #1
000092 60c2 STR r2,[r0,#0xc]
|L51.148|
;;;633 }
000094 e8bd81f0 POP {r4-r8,pc}
|L51.152|
000098 07d2 LSLS r2,r2,#31 ;632
00009a d000 BEQ |L51.158|
00009c b2a1 UXTH r1,r4 ;632
|L51.158|
00009e 0289 LSLS r1,r1,#10 ;632
|L51.160|
0000a0 6001 STR r1,[r0,#0] ;632
0000a2 e7f7 B |L51.148|
;;;634 /*******************************************************************************
ENDP
|L51.164|
0000a4 40005000 DCD 0x40005000
|L51.168|
0000a8 40006004 DCD 0x40006004
AREA ||i.SetEPDblBuf0Count||, CODE, READONLY, ALIGN=2
SetEPDblBuf0Count PROC
;;;642 void SetEPDblBuf0Count(u8 bEpNum, u8 bDir, u16 wCount)
;;;643 {
000000 4b15 LDR r3,|L52.88|
;;;644 _SetEPDblBuf0Count(bEpNum, bDir, wCount);
000002 2901 CMP r1,#1
000004 d11b BNE |L52.62|
000006 f8d31c50 LDR r1,[r3,#0xc50]
00000a 4b14 LDR r3,|L52.92|
00000c b289 UXTH r1,r1
00000e eb0100c0 ADD r0,r1,r0,LSL #3
000012 eb030140 ADD r1,r3,r0,LSL #1
000016 2a3e CMP r2,#0x3e
000018 d909 BLS |L52.46|
00001a 0950 LSRS r0,r2,#5
00001c 06d2 LSLS r2,r2,#27
00001e d101 BNE |L52.36|
000020 1e40 SUBS r0,r0,#1
000022 b280 UXTH r0,r0
|L52.36|
000024 f44f4200 MOV r2,#0x8000
000028 ea422080 ORR r0,r2,r0,LSL #10
00002c e005 B |L52.58|
|L52.46|
00002e 0850 LSRS r0,r2,#1
000030 07d2 LSLS r2,r2,#31
000032 d001 BEQ |L52.56|
000034 1c40 ADDS r0,r0,#1
000036 b280 UXTH r0,r0
|L52.56|
000038 0280 LSLS r0,r0,#10
|L52.58|
00003a 6008 STR r0,[r1,#0]
|L52.60|
;;;645 }
00003c 4770 BX lr
|L52.62|
00003e 2902 CMP r1,#2 ;644
000040 d1fc BNE |L52.60|
000042 f8d31c50 LDR r1,[r3,#0xc50] ;644
000046 4b05 LDR r3,|L52.92|
000048 b289 UXTH r1,r1 ;644
00004a 1f1b SUBS r3,r3,#4 ;644
00004c eb0100c0 ADD r0,r1,r0,LSL #3 ;644
000050 eb030040 ADD r0,r3,r0,LSL #1 ;644
000054 6042 STR r2,[r0,#4] ;644
000056 4770 BX lr
;;;646 /*******************************************************************************
ENDP
|L52.88|
000058 40005000 DCD 0x40005000
|L52.92|
00005c 40006004 DCD 0x40006004
AREA ||i.SetEPDblBuf1Count||, CODE, READONLY, ALIGN=2
SetEPDblBuf1Count PROC
;;;654 void SetEPDblBuf1Count(u8 bEpNum, u8 bDir, u16 wCount)
;;;655 {
000000 4b15 LDR r3,|L53.88|
;;;656 _SetEPDblBuf1Count(bEpNum, bDir, wCount);
000002 2901 CMP r1,#1
000004 d11b BNE |L53.62|
000006 f8d31c50 LDR r1,[r3,#0xc50]
00000a 4b14 LDR r3,|L53.92|
00000c b289 UXTH r1,r1
00000e eb0100c0 ADD r0,r1,r0,LSL #3
000012 eb030140 ADD r1,r3,r0,LSL #1
000016 2a3e CMP r2,#0x3e
000018 d909 BLS |L53.46|
00001a 0950 LSRS r0,r2,#5
00001c 06d2 LSLS r2,r2,#27
00001e d101 BNE |L53.36|
000020 1e40 SUBS r0,r0,#1
000022 b280 UXTH r0,r0
|L53.36|
000024 f44f4200 MOV r2,#0x8000
000028 ea422080 ORR r0,r2,r0,LSL #10
00002c e005 B |L53.58|
|L53.46|
00002e 0850 LSRS r0,r2,#1
000030 07d2 LSLS r2,r2,#31
000032 d001 BEQ |L53.56|
000034 1c40 ADDS r0,r0,#1
000036 b280 UXTH r0,r0
|L53.56|
000038 0280 LSLS r0,r0,#10
|L53.58|
00003a 6008 STR r0,[r1,#0]
|L53.60|
;;;657 }
00003c 4770 BX lr
|L53.62|
00003e 2902 CMP r1,#2 ;656
000040 d1fc BNE |L53.60|
000042 f8d31c50 LDR r1,[r3,#0xc50] ;656
000046 4b05 LDR r3,|L53.92|
000048 b289 UXTH r1,r1 ;656
00004a 3b0c SUBS r3,r3,#0xc ;656
00004c eb0100c0 ADD r0,r1,r0,LSL #3 ;656
000050 eb030040 ADD r0,r3,r0,LSL #1 ;656
000054 60c2 STR r2,[r0,#0xc] ;656
000056 4770 BX lr
;;;658 /*******************************************************************************
ENDP
|L53.88|
000058 40005000 DCD 0x40005000
|L53.92|
00005c 4000600c DCD 0x4000600c
AREA ||i.GetEPDblBuf0Count||, CODE, READONLY, ALIGN=2
GetEPDblBuf0Count PROC
;;;666 u16 GetEPDblBuf0Count(u8 bEpNum)
;;;667 {
000000 4905 LDR r1,|L54.24|
;;;668 return(_GetEPDblBuf0Count(bEpNum));
000002 6809 LDR r1,[r1,#0]
000004 b289 UXTH r1,r1
000006 eb0100c0 ADD r0,r1,r0,LSL #3
00000a 4904 LDR r1,|L54.28|
00000c eb010040 ADD r0,r1,r0,LSL #1
000010 6840 LDR r0,[r0,#4]
000012 f3c00009 UBFX r0,r0,#0,#10
;;;669 }
000016 4770 BX lr
;;;670 /*******************************************************************************
ENDP
|L54.24|
000018 40005c50 DCD 0x40005c50
|L54.28|
00001c 40006000 DCD 0x40006000
AREA ||i.GetEPDblBuf1Count||, CODE, READONLY, ALIGN=2
GetEPDblBuf1Count PROC
;;;678 u16 GetEPDblBuf1Count(u8 bEpNum)
;;;679 {
000000 4905 LDR r1,|L55.24|
;;;680 return(_GetEPDblBuf1Count(bEpNum));
000002 6809 LDR r1,[r1,#0]
000004 b289 UXTH r1,r1
000006 eb0100c0 ADD r0,r1,r0,LSL #3
00000a 4904 LDR r1,|L55.28|
00000c eb010040 ADD r0,r1,r0,LSL #1
000010 68c0 LDR r0,[r0,#0xc]
000012 f3c00009 UBFX r0,r0,#0,#10
;;;681 }
000016 4770 BX lr
;;;682 /*******************************************************************************
ENDP
|L55.24|
000018 40005c50 DCD 0x40005c50
|L55.28|
00001c 40006000 DCD 0x40006000
AREA ||i.GetEPDblBufDir||, CODE, READONLY, ALIGN=2
GetEPDblBufDir PROC
;;;691 {
;;;692 if ((u16)(*_pEPRxCount(bEpNum) & 0xFC00) != 0)
000000 4a0d LDR r2,|L56.56|
000002 f8d23c50 LDR r3,[r2,#0xc50]
000006 490d LDR r1,|L56.60|
000008 b29b UXTH r3,r3
00000a eb0303c0 ADD r3,r3,r0,LSL #3
00000e eb010343 ADD r3,r1,r3,LSL #1
000012 68db LDR r3,[r3,#0xc]
000014 f4134f7c TST r3,#0xfc00
000018 d001 BEQ |L56.30|
;;;693 return(EP_DBUF_OUT);
00001a 2001 MOVS r0,#1
|L56.28|
;;;694 else if (((u16)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0)
;;;695 return(EP_DBUF_IN);
;;;696 else
;;;697 return(EP_DBUF_ERR);
;;;698 }
00001c 4770 BX lr
|L56.30|
00001e f8d22c50 LDR r2,[r2,#0xc50] ;694
000022 b292 UXTH r2,r2 ;694
000024 eb0200c0 ADD r0,r2,r0,LSL #3 ;694
000028 eb010040 ADD r0,r1,r0,LSL #1 ;694
00002c 6840 LDR r0,[r0,#4] ;694
00002e 0580 LSLS r0,r0,#22 ;694
000030 d0f4 BEQ |L56.28|
000032 2002 MOVS r0,#2 ;695
000034 4770 BX lr
;;;699 /*******************************************************************************
ENDP
000036 0000 DCW 0x0000
|L56.56|
000038 40005000 DCD 0x40005000
|L56.60|
00003c 40006000 DCD 0x40006000
AREA ||i.FreeUserBuffer||, CODE, READONLY, ALIGN=2
FreeUserBuffer PROC
;;;707 void FreeUserBuffer(u8 bEpNum, u8 bDir)
;;;708 {
000000 4b0c LDR r3,|L57.52|
000002 f648728f MOV r2,#0x8f8f
000006 eb030080 ADD r0,r3,r0,LSL #2
;;;709 if (bDir == EP_DBUF_OUT)
00000a 2901 CMP r1,#1
00000c d106 BNE |L57.28|
;;;710 { /* OUT double buffered endpoint */
;;;711 _ToggleDTOG_TX(bEpNum);
00000e f8d01c00 LDR r1,[r0,#0xc00]
000012 b289 UXTH r1,r1
000014 4011 ANDS r1,r1,r2
000016 f0410140 ORR r1,r1,#0x40
00001a e007 B |L57.44|
|L57.28|
;;;712 }
;;;713 else if (bDir == EP_DBUF_IN)
00001c 2902 CMP r1,#2
00001e d107 BNE |L57.48|
;;;714 { /* IN double buffered endpoint */
;;;715 _ToggleDTOG_RX(bEpNum);
000020 f8d01c00 LDR r1,[r0,#0xc00]
000024 b289 UXTH r1,r1
000026 4011 ANDS r1,r1,r2
000028 f4414180 ORR r1,r1,#0x4000
|L57.44|
00002c f8c01c00 STR r1,[r0,#0xc00] ;711
|L57.48|
;;;716 }
;;;717 }
000030 4770 BX lr
;;;718
ENDP
000032 0000 DCW 0x0000
|L57.52|
000034 40005000 DCD 0x40005000
AREA ||i.ToWord||, CODE, READONLY, ALIGN=1
ToWord PROC
;;;728 u16 wRet;
;;;729 wRet = (u16)bl | ((u16)bh << 8);
000000 ea412000 ORR r0,r1,r0,LSL #8
;;;730 return(wRet);
;;;731 }
000004 4770 BX lr
;;;732 /*******************************************************************************
ENDP
AREA ||i.ByteSwap||, CODE, READONLY, ALIGN=1
ByteSwap PROC
;;;742 u16 wRet;
;;;743 bTemp = (u8)(wSwW & 0xff);
000000 b2c1 UXTB r1,r0
;;;744 wRet = (wSwW >> 8) | ((u16)bTemp << 8);
000002 0a00 LSRS r0,r0,#8
000004 ea402001 ORR r0,r0,r1,LSL #8
;;;745 return(wRet);
;;;746 }
000008 4770 BX lr
;;;747
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -