📄 osal_nv.lst
字号:
375 {
376 writeWordD( OSAL_NV_IEEE_PAGE, OSAL_NV_IEEE_OFFSET, (uint8 *)(&pgHdr) );
\ ??initNV_17:
\ 000146 ; Setup parameters for call to function writeWordD
\ 000146 85..82 MOV DPL,?XSP + 0
\ 000149 85..83 MOV DPH,?XSP + 1
\ 00014C AC82 MOV R4,DPL
\ 00014E AD83 MOV R5,DPH
\ 000150 7AF8 MOV R2,#-0x8
\ 000152 7B07 MOV R3,#0x7
\ 000154 793F MOV R1,#0x3f
\ 000156 90.... MOV DPTR,#(??writeWordD & 0xffff)
\ 000159 74.. MOV A,#((??writeWordD >> 16) & 0xff)
\ 00015B 12.... LCALL ?BCALL ; Banked call to: DPTR()
377 xBad = FALSE;
\ 00015E 75..00 MOV ?V0 + 0,#0x0
\ 000161 8052 SJMP ??initNV_21
378 }
379 }
380 else
381 {
382 if ( (pgHdr.active == OSAL_NV_ERASED_ID) &&
383 (pgHdr.inUse == OSAL_NV_ERASED_ID) &&
384 (pgHdr.xfer == OSAL_NV_ERASED_ID) &&
385 (pgHdr.spare == OSAL_NV_ERASED_ID) )
\ ??initNV_15:
\ 000163 E0 MOVX A,@DPTR
\ 000164 64FF XRL A,#0xff
\ 000166 7004 JNZ ??initNV_22
\ 000168 A3 INC DPTR
\ 000169 E0 MOVX A,@DPTR
\ 00016A 64FF XRL A,#0xff
\ ??initNV_22:
\ 00016C 7047 JNZ ??initNV_21
\ 00016E 7402 MOV A,#0x2
\ 000170 12.... LCALL ?XSTACK_DISP0_8
\ 000173 E0 MOVX A,@DPTR
\ 000174 64FF XRL A,#0xff
\ 000176 7004 JNZ ??initNV_23
\ 000178 A3 INC DPTR
\ 000179 E0 MOVX A,@DPTR
\ 00017A 64FF XRL A,#0xff
\ ??initNV_23:
\ 00017C 7037 JNZ ??initNV_21
\ 00017E 7404 MOV A,#0x4
\ 000180 12.... LCALL ?XSTACK_DISP0_8
\ 000183 E0 MOVX A,@DPTR
\ 000184 64FF XRL A,#0xff
\ 000186 7004 JNZ ??initNV_24
\ 000188 A3 INC DPTR
\ 000189 E0 MOVX A,@DPTR
\ 00018A 64FF XRL A,#0xff
\ ??initNV_24:
\ 00018C 7027 JNZ ??initNV_21
\ 00018E 7406 MOV A,#0x6
\ 000190 12.... LCALL ?XSTACK_DISP0_8
\ 000193 E0 MOVX A,@DPTR
\ 000194 64FF XRL A,#0xff
\ 000196 7004 JNZ ??initNV_25
\ 000198 A3 INC DPTR
\ 000199 E0 MOVX A,@DPTR
\ 00019A 64FF XRL A,#0xff
\ ??initNV_25:
\ 00019C 7017 JNZ ??initNV_21
386 {
387 writeWordD( pg, OSAL_NV_IEEE_OFFSET, (uint8 *)(&ieee) );
\ 00019E ; Setup parameters for call to function writeWordD
\ 00019E 7408 MOV A,#0x8
\ 0001A0 12.... LCALL ?XSTACK_DISP0_8
\ 0001A3 AC82 MOV R4,DPL
\ 0001A5 AD83 MOV R5,DPH
\ 0001A7 7AF8 MOV R2,#-0x8
\ 0001A9 7B07 MOV R3,#0x7
\ 0001AB EE MOV A,R6
\ 0001AC F9 MOV R1,A
\ 0001AD 90.... MOV DPTR,#(??writeWordD & 0xffff)
\ 0001B0 74.. MOV A,#((??writeWordD >> 16) & 0xff)
\ 0001B2 12.... LCALL ?BCALL ; Banked call to: DPTR()
388 }
389 }
390 } // for ( pg = OSAL_NV_PAGE_BEG; pg <= OSAL_NV_PAGE_END; pg++ )
\ ??initNV_21:
\ 0001B5 0E INC R6
\ 0001B6 EE MOV A,R6
\ 0001B7 C3 CLR C
\ 0001B8 943E SUBB A,#0x3e
\ 0001BA 5003 JNC $+5
\ 0001BC 02.... LJMP ??initNV_7 & 0xFFFF
391
392 /* First the old page is erased, and then the new page is put into use.
393 * So if a transfer was in progress, the new page will always not yet be
394 * marked as in use, since that is the last step to ending a transfer.
395 */
396 if ( newPg != OSAL_NV_PAGE_NULL )
\ 0001BF EF MOV A,R7
\ 0001C0 6023 JZ ??initNV_26
397 {
398 /* If there is already a fallow page reserved, keep it and put the newPg in use.
399 * An unfinished compaction will finish to the new reserve page and the old page
400 * will be erased and reserved.
401 */
402 if ( pgRes != OSAL_NV_PAGE_NULL )
\ 0001C2 90.... MOV DPTR,#??pgRes
\ 0001C5 E0 MOVX A,@DPTR
\ 0001C6 600E JZ ??initNV_27
403 {
404 setPageUse( newPg, TRUE );
\ 0001C8 ; Setup parameters for call to function setPageUse
\ 0001C8 7A01 MOV R2,#0x1
\ 0001CA EF MOV A,R7
\ 0001CB F9 MOV R1,A
\ 0001CC 90.... MOV DPTR,#(??setPageUse & 0xffff)
\ 0001CF 74.. MOV A,#((??setPageUse >> 16) & 0xff)
\ 0001D1 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0001D4 8002 SJMP ??initNV_28
405 }
406 else
407 {
408 pgRes = newPg;
\ ??initNV_27:
\ 0001D6 EF MOV A,R7
\ 0001D7 F0 MOVX @DPTR,A
409 }
410
411 /* If a page compaction was interrupted and the page being compacted is not
412 * yet erased, then there may be items remaining to xfer before erasing.
413 */
414 if ( oldPg != OSAL_NV_PAGE_NULL )
\ ??initNV_28:
\ 0001D8 E5.. MOV A,?V0 + 1
\ 0001DA 6009 JZ ??initNV_26
415 {
416 compactPage( oldPg );
\ 0001DC ; Setup parameters for call to function compactPage
\ 0001DC F9 MOV R1,A
\ 0001DD 90.... MOV DPTR,#(??compactPage & 0xffff)
\ 0001E0 74.. MOV A,#((??compactPage >> 16) & 0xff)
\ 0001E2 12.... LCALL ?BCALL ; Banked call to: DPTR()
417 }
418 }
419
420 return (pgRes != OSAL_NV_PAGE_NULL);
\ ??initNV_26:
\ 0001E5 90.... MOV DPTR,#??pgRes
\ 0001E8 E0 MOVX A,@DPTR
\ 0001E9 6004 JZ ??initNV_29
\ 0001EB 7901 MOV R1,#0x1
\ 0001ED 8002 SJMP ??initNV_30
\ ??initNV_29:
\ 0001EF 7900 MOV R1,#0x0
\ ??initNV_30:
\ 0001F1 7410 MOV A,#0x10
\ 0001F3 REQUIRE ?Subroutine66
\ 0001F3 ; // Fall through to label ?Subroutine66
421 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine66:
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
\ 000003 7F02 MOV R7,#0x2
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
422
423 /*********************************************************************
424 * @fn setPageUse
425 *
426 * @brief Set page header active/inUse state according to 'inUse'.
427 *
428 * @param pg - Valid NV page to verify and init.
429 * @param inUse - Boolean TRUE if inUse, FALSE if only active.
430 *
431 * @return none
432 */
\ In segment BANKED_CODE, align 1, keep-with-next
433 static void setPageUse( uint8 pg, uint8 inUse )
\ ??setPageUse:
434 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 8
\ 000004 74F8 MOV A,#-0x8
\ 000006 12.... LCALL ?ALLOC_XSTACK8
435 osalNvPgHdr_t pgHdr;
436
437 pgHdr.active = OSAL_NV_ZEROED_ID;
\ 000009 85..82 MOV DPL,?XSP + 0
\ 00000C 85..83 MOV DPH,?XSP + 1
\ 00000F E4 CLR A
\ 000010 F0 MOVX @DPTR,A
\ 000011 A3 INC DPTR
\ 000012 F0 MOVX @DPTR,A
438
439 if ( inUse )
\ 000013 EA MOV A,R2
\ 000014 6008 JZ ??setPageUse_1
440 {
441 pgHdr.inUse = OSAL_NV_ZEROED_ID;
\ 000016 7402 MOV A,#0x2
\ 000018 12.... LCALL ?XSTACK_DISP0_8
\ 00001B E4 CLR A
\ 00001C 8007 SJMP ??setPageUse_2
442 }
443 else
444 {
445 pgHdr.inUse = OSAL_NV_ERASED_ID;
\ ??setPageUse_1:
\ 00001E 7402 MOV A,#0x2
\ 000020 12.... LCALL ?XSTACK_DISP0_8
\ 000023 74FF MOV A,#-0x1
\ ??setPageUse_2:
\ 000025 12.... LCALL ??Subroutine29_0 & 0xFFFF
446 }
447
448 writeWord( pg, OSAL_NV_PAGE_HDR_OFFSET, (uint8*)(&pgHdr) );
\ ??CrossCallReturnLabel_81:
\ 000028 7A00 MOV R2,#0x0
\ 00002A 7B00 MOV R3,#0x0
\ 00002C 90.... MOV DPTR,#(??writeWord & 0xffff)
\ 00002F 74.. MOV A,#((??writeWord >> 16) & 0xff)
\ 000031 12.... LCALL ?BCALL ; Banked call to: DPTR()
449 }
\ 000034 7408 MOV A,#0x8
\ 000036 12.... LCALL ?DEALLOC_XSTACK8
\ 000039 REQUIRE ?Subroutine67
\ 000039 ; // Fall through to label ?Subroutine67
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine67:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine29:
\ 000000 85..82 MOV DPL,?XSP + 0
\ 000003 85..83 MOV DPH,?XSP + 1
\ 000006 E4 CLR A
\ ??Subroutine29_0:
\ 000007 F0 MOVX @DPTR,A
\ 000008 A3 INC DPTR
\ ??Subroutine29_1:
\ 000009 F0 MOVX @DPTR,A
\ 00000A ; Setup parameters for call to function writeWordH
\ 00000A ; Setup parameters for call to function writeWord
\ 00000A ; Setup parameters for call to function writeWord
\ 00000A ; Setup parameters for call to function writeWord
\ 00000A 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 AC82 MOV R4,DPL
\ 000012 AD83 MOV R5,DPH
\ 000014 22 RET
450
451 /*********************************************************************
452 * @fn initPage
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -