📄 bsp_os.lst
字号:
\ 00000020 3800 MOVS R0,R7
\ 00000022 ........ BL OSEventNameSet
159 #endif
160
161
162 return (DEF_OK);
\ 00000026 0120 MOVS R0,#+1
\ ??BSP_OS_SemCreate_1:
\ 00000028 F2BD POP {R1,R4-R7,PC} ;; return
163 }
164
165
166 /*
167 *********************************************************************************************************
168 * BSP_OS_SemWait()
169 *
170 * Description : Wait on a semaphore to become available
171 *
172 * Argument(s) : p_sem Pointer to the sempahore handler.
173 *
174 * dly_ms delay in miliseconds to wait on the semaphore
175 *
176 * Return(s) : error code return DEF_OK if the semaphore was acquire
177 * DEF_FAIL if the sempahore could not be acquire
178 *
179 * Caller(s) : Application.
180 *
181 * Note(s) : none.
182 *********************************************************************************************************
183 */
184
\ In section .text, align 2, keep-with-next
185 CPU_BOOLEAN BSP_OS_SemWait (BSP_OS_SEM *p_sem,
186 CPU_INT32U dly_ms)
187 {
\ BSP_OS_SemWait:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 82B0 SUB SP,SP,#+8
\ 00000004 0400 MOVS R4,R0
\ 00000006 0D00 MOVS R5,R1
188 CPU_INT08U err;
189 CPU_INT32U dly_ticks;
190
191
192 dly_ticks = ((dly_ms * DEF_TIME_NBR_mS_PER_SEC) / OS_TICKS_PER_SEC);
\ 00000008 4FF47A70 MOV R0,#+1000
\ 0000000C 00FB05F0 MUL R0,R0,R5
\ 00000010 4FF47A71 MOV R1,#+1000
\ 00000014 B0FBF1F0 UDIV R0,R0,R1
\ 00000018 0600 MOVS R6,R0
193
194 OSSemPend((OS_EVENT *)*p_sem,
195 (CPU_INT32U )dly_ticks,
196 (CPU_INT08U *)&err);
\ 0000001A 00AA ADD R2,SP,#+0
\ 0000001C 3100 MOVS R1,R6
\ 0000001E 2068 LDR R0,[R4, #+0]
\ 00000020 ........ BL OSSemPend
197
198 if (err != OS_ERR_NONE) {
\ 00000024 9DF80000 LDRB R0,[SP, #+0]
\ 00000028 0028 CMP R0,#+0
\ 0000002A 01D0 BEQ.N ??BSP_OS_SemWait_0
199 return (DEF_FAIL);
\ 0000002C 0020 MOVS R0,#+0
\ 0000002E 00E0 B.N ??BSP_OS_SemWait_1
200 }
201
202 return (DEF_OK);
\ ??BSP_OS_SemWait_0:
\ 00000030 0120 MOVS R0,#+1
\ ??BSP_OS_SemWait_1:
\ 00000032 76BD POP {R1,R2,R4-R6,PC} ;; return
203 }
204
205 /*
206 *********************************************************************************************************
207 * BSP_OS_SemCreate()
208 *
209 * Description : Post a semaphore
210 *
211 * Argument(s) : p_sem Pointer to the Semaphore handler.
212 *
213 * Return(s) : error code return DEF_OK if the semaphore was posted.
214 * DEF_FAIL if the sempahore could not be posted.
215 *
216 * Caller(s) : Application.
217 *
218 * Note(s) : none.
219 *********************************************************************************************************
220 */
221
\ In section .text, align 2, keep-with-next
222 CPU_BOOLEAN BSP_OS_SemPost (BSP_OS_SEM * p_sem)
223 {
\ BSP_OS_SemPost:
\ 00000000 38B5 PUSH {R3-R5,LR}
\ 00000002 0400 MOVS R4,R0
224 CPU_INT08U err;
225
226
227 err = OSSemPost((OS_EVENT *)*p_sem);
\ 00000004 2068 LDR R0,[R4, #+0]
\ 00000006 ........ BL OSSemPost
\ 0000000A 0500 MOVS R5,R0
228
229 if (err != OS_ERR_NONE) {
\ 0000000C EDB2 UXTB R5,R5 ;; ZeroExt R5,R5,#+24,#+24
\ 0000000E 002D CMP R5,#+0
\ 00000010 01D0 BEQ.N ??BSP_OS_SemPost_0
230 return (DEF_FAIL);
\ 00000012 0020 MOVS R0,#+0
\ 00000014 00E0 B.N ??BSP_OS_SemPost_1
231 }
232
233 return (DEF_OK);
\ ??BSP_OS_SemPost_0:
\ 00000016 0120 MOVS R0,#+1
\ ??BSP_OS_SemPost_1:
\ 00000018 32BD POP {R1,R4,R5,PC} ;; return
234 }
235
236
237
238 /*
239 *********************************************************************************************************
240 *********************************************************************************************************
241 ** uC/OS-II TIMER FUNCTIONS
242 *********************************************************************************************************
243 *********************************************************************************************************
244 */
245
246 /*
247 *********************************************************************************************************
248 * BSP_TimeDlyMs()
249 *
250 * Description : This function delay the exceution for specifi amount of miliseconds
251 *
252 * Argument(s) : dly_ms Delay in miliseconds
253 *
254 * Return(s) : none.
255 *
256 * Caller(s) : Application
257 *
258 * Note(s) : none.
259 *
260 *********************************************************************************************************
261 */
262
\ In section .text, align 2, keep-with-next
263 void BSP_OS_TimeDlyMs (CPU_INT32U dly_ms)
264 {
\ BSP_OS_TimeDlyMs:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 0400 MOVS R4,R0
265 CPU_INT16U os_ms;
266 CPU_INT08U os_sec;
267
268
269 if (dly_ms > 10000) { /* Limit delays to 10 seconds. */
\ 00000004 42F21170 MOVW R0,#+10001
\ 00000008 8442 CMP R4,R0
\ 0000000A 02D3 BCC.N ??BSP_OS_TimeDlyMs_0
270 dly_ms = 10000;
\ 0000000C 42F21070 MOVW R0,#+10000
\ 00000010 0400 MOVS R4,R0
271 }
272
273 os_sec = dly_ms / 1000;
\ ??BSP_OS_TimeDlyMs_0:
\ 00000012 4FF47A70 MOV R0,#+1000
\ 00000016 B4FBF0F0 UDIV R0,R4,R0
\ 0000001A 0600 MOVS R6,R0
274 os_ms = dly_ms % 1000;
\ 0000001C 4FF47A70 MOV R0,#+1000
\ 00000020 B4FBF0F1 UDIV R1,R4,R0
\ 00000024 00FB1140 MLS R0,R0,R1,R4
\ 00000028 0500 MOVS R5,R0
275
276 OSTimeDlyHMSM(0, 0, os_sec, os_ms);
\ 0000002A 2B00 MOVS R3,R5
\ 0000002C 9BB2 UXTH R3,R3 ;; ZeroExt R3,R3,#+16,#+16
\ 0000002E 3200 MOVS R2,R6
\ 00000030 D2B2 UXTB R2,R2 ;; ZeroExt R2,R2,#+24,#+24
\ 00000032 0021 MOVS R1,#+0
\ 00000034 0020 MOVS R0,#+0
\ 00000036 ........ BL OSTimeDlyHMSM
277 }
\ 0000003A 70BD POP {R4-R6,PC} ;; return
278
Maximum stack usage in bytes:
Function .cstack
-------- -------
BSP_OS_SemCreate 24
BSP_OS_SemPost 16
BSP_OS_SemWait 24
BSP_OS_TimeDlyMs 16
Section sizes:
Function/Label Bytes
-------------- -----
BSP_OS_SemCreate 42
BSP_OS_SemWait 52
BSP_OS_SemPost 26
BSP_OS_TimeDlyMs 60
180 bytes in section .text
180 bytes of CODE memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -