📄 dbgu.lst
字号:
\ 00000002 0968 LDR R1,[R1, #+0]
\ 00000004 C907 LSL R1,R1,#+31
\ 00000006 01D4 BMI ??AT91F_US_Get_0
76 {
77 return( FALSE );
\ 00000008 0020 MOV R0,#+0
\ 0000000A 03E0 B ??AT91F_US_Get_1
78 }
79 else
80 {
81 *val= AT91F_US_GetChar((AT91PS_USART)AT91C_BASE_DBGU);
\ ??AT91F_US_Get_0:
\ 0000000C .... LDR R1,??DataTable3 ;; 0xfffff218
\ 0000000E 0968 LDR R1,[R1, #+0]
\ 00000010 0170 STRB R1,[R0, #+0]
82 return( TRUE );
\ 00000012 0120 MOV R0,#+1
\ ??AT91F_US_Get_1:
\ 00000014 00B0 ADD SP,#+0
\ 00000016 7047 BX LR ;; return
83 }
84 }
85 //----------------------------------------------------------------------------
86 // \fn AT91F_DBGU_scanf
87 // \brief Get a string to USART manage Blackspace and echo
88 //----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
89 void AT91F_DBGU_scanf(char * val)
90 {
\ AT91F_DBGU_scanf:
\ 00000000 3FB5 PUSH {R0-R5,LR}
91 unsigned int read = 0;
92 unsigned int i;
93 char buff[13]; // Size of char for a file name 8+3+1+'\0 // BFSA_MAX_FILENAME_LEN
94 unsigned int nb_read =0;
\ 00000002 0021 MOV R1,#+0
\ 00000004 0022 MOV R2,#+0
\ 00000006 07E0 B ??AT91F_DBGU_scanf_0
95
96 while( (read != 0x0D) & (nb_read != sizeof(buff)) )
97 {
98 // wait the USART Ready for reception
99 while( (AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_RXRDY) == 0 )
100 {}
101 // Get a char
102 read = AT91C_BASE_DBGU->DBGU_RHR ;
103 buff[nb_read]= (char)read;
104 // Manage Blackspace
105 while( (AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY) ==0 )
106 {}
107 if ((char)read == 0x08)
108 {
109 if ( nb_read != 0 )
\ ??AT91F_DBGU_scanf_1:
\ 00000008 002A CMP R2,#+0
\ 0000000A 01D0 BEQ ??AT91F_DBGU_scanf_2
110 {
111 nb_read--;
\ 0000000C 521E SUB R2,R2,#+1
112 AT91C_BASE_DBGU->DBGU_THR = read;
\ 0000000E 1C60 STR R4,[R3, #+0]
113 }
114 }
\ ??AT91F_DBGU_scanf_2:
\ 00000010 0D2C CMP R4,#+13
\ 00000012 15D0 BEQ ??AT91F_DBGU_scanf_3
\ 00000014 0D2A CMP R2,#+13
\ 00000016 13D0 BEQ ??AT91F_DBGU_scanf_3
\ ??AT91F_DBGU_scanf_0:
\ 00000018 .... LDR R3,??DataTable2 ;; 0xfffff214
\ 0000001A 1C68 LDR R4,[R3, #+0]
\ 0000001C E407 LSL R4,R4,#+31
\ 0000001E FBD5 BPL ??AT91F_DBGU_scanf_0
\ 00000020 .... LDR R4,??DataTable3 ;; 0xfffff218
\ 00000022 2468 LDR R4,[R4, #+0]
\ 00000024 6D46 MOV R5,SP
\ 00000026 AC54 STRB R4,[R5, R2]
\ ??AT91F_DBGU_scanf_4:
\ 00000028 1D68 LDR R5,[R3, #+0]
\ 0000002A AD07 LSL R5,R5,#+30
\ 0000002C FCD5 BPL ??AT91F_DBGU_scanf_4
\ 0000002E 0B4B LDR R3,??AT91F_DBGU_scanf_5 ;; 0xfffff21c
\ 00000030 2506 LSL R5,R4,#+24
\ 00000032 2D0E LSR R5,R5,#+24
\ 00000034 082D CMP R5,#+8
\ 00000036 E7D0 BEQ ??AT91F_DBGU_scanf_1
115 else
116 {
117 // echo
118 AT91C_BASE_DBGU->DBGU_THR = read;
\ 00000038 1C60 STR R4,[R3, #+0]
119 nb_read++;
\ 0000003A 521C ADD R2,R2,#+1
\ 0000003C E8E7 B ??AT91F_DBGU_scanf_2
120 }
121 }
122
123 // sscanf(buff,type,val);
124 for( i=0; i < nb_read; i++ )
\ ??AT91F_DBGU_scanf_6:
\ 0000003E 491C ADD R1,R1,#+1
\ ??AT91F_DBGU_scanf_3:
\ 00000040 9142 CMP R1,R2
\ 00000042 07D2 BCS ??AT91F_DBGU_scanf_7
125 {
126 val[i] = buff[i];
\ 00000044 6B46 MOV R3,SP
\ 00000046 5B5C LDRB R3,[R3, R1]
\ 00000048 4418 ADD R4,R0,R1
\ 0000004A 2370 STRB R3,[R4, #+0]
127 if( buff[i] == 0x0D )
\ 0000004C 0D2B CMP R3,#+13
\ 0000004E F6D1 BNE ??AT91F_DBGU_scanf_6
128 {
129 val[i] = '\0';
\ 00000050 0020 MOV R0,#+0
\ 00000052 2070 STRB R0,[R4, #+0]
130 break;
131 }
132 }
133 }
\ ??AT91F_DBGU_scanf_7:
\ 00000054 3FBC POP {R0-R5}
\ 00000056 01BC POP {R0}
\ 00000058 0047 BX R0 ;; return
\ 0000005A C046 NOP
\ ??AT91F_DBGU_scanf_5:
\ 0000005C 1CF2FFFF DC32 0xfffff21c
\ In segment CODE, align 4, keep-with-next
\ ??DataTable2:
\ 00000000 14F2FFFF DC32 0xfffff214
\ In segment CODE, align 4, keep-with-next
\ ??DataTable3:
\ 00000000 18F2FFFF DC32 0xfffff218
134
Maximum stack usage in bytes:
Function CSTACK
-------- ------
AT91F_DBGU_scanf 32
AT91F_LED_init 12
AT91F_US_Get 4
Segment part sizes:
Function/Label Bytes
-------------- -----
countLed 1
AT91F_LED_init 80
AT91F_US_Get 24
AT91F_DBGU_scanf 96
??DataTable2 4
??DataTable3 4
Others 36
232 bytes in segment CODE
1 byte in segment DATA_Z
12 bytes in segment INITTAB
208 bytes of CODE memory (+ 36 bytes shared)
1 byte of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -