diff --git a/Debug/SubGHz_Phy/App/app_subghz_phy.o b/Debug/SubGHz_Phy/App/app_subghz_phy.o index 2fe3030..9aab928 100644 Binary files a/Debug/SubGHz_Phy/App/app_subghz_phy.o and b/Debug/SubGHz_Phy/App/app_subghz_phy.o differ diff --git a/Debug/SubGHz_Phy/App/subghz_phy_app.cyclo b/Debug/SubGHz_Phy/App/subghz_phy_app.cyclo index 589a017..0b2bd0e 100644 --- a/Debug/SubGHz_Phy/App/subghz_phy_app.cyclo +++ b/Debug/SubGHz_Phy/App/subghz_phy_app.cyclo @@ -1,38 +1,40 @@ ../SubGHz_Phy/App/subghz_phy_app.c:125:6:SubghzApp_Init 2 -../SubGHz_Phy/App/subghz_phy_app.c:151:6:SubghzApp_Process 1 -../SubGHz_Phy/App/subghz_phy_app.c:160:13:App_ProcessRadioEvents 10 -../SubGHz_Phy/App/subghz_phy_app.c:211:13:App_ProcessUartPacketizer 5 -../SubGHz_Phy/App/subghz_phy_app.c:228:13:App_ProcessEscape 8 -../SubGHz_Phy/App/subghz_phy_app.c:257:13:App_StartNextTxIfPossible 4 -../SubGHz_Phy/App/subghz_phy_app.c:269:13:App_ApplyConfig 2 -../SubGHz_Phy/App/subghz_phy_app.c:280:13:App_RadioApplyConfig 1 -../SubGHz_Phy/App/subghz_phy_app.c:286:13:App_RadioConfigureRx 2 -../SubGHz_Phy/App/subghz_phy_app.c:316:13:App_RadioConfigureTx 2 -../SubGHz_Phy/App/subghz_phy_app.c:342:13:App_RadioEnterRx 1 -../SubGHz_Phy/App/subghz_phy_app.c:348:13:App_EnterConfigMode 2 -../SubGHz_Phy/App/subghz_phy_app.c:364:13:App_ExitConfigMode 1 -../SubGHz_Phy/App/subghz_phy_app.c:373:13:App_ResetDataPath 1 -../SubGHz_Phy/App/subghz_phy_app.c:383:13:App_DataModeFeedByte 3 -../SubGHz_Phy/App/subghz_phy_app.c:403:13:App_DataModeFlushBuilder 3 -../SubGHz_Phy/App/subghz_phy_app.c:417:16:App_QueuePush 4 -../SubGHz_Phy/App/subghz_phy_app.c:431:13:App_QueuePop 2 -../SubGHz_Phy/App/subghz_phy_app.c:442:13:UartRxByteCallback 13 -../SubGHz_Phy/App/subghz_phy_app.c:505:13:App_ConfigFeedByte 9 -../SubGHz_Phy/App/subghz_phy_app.c:537:13:App_ConfigExecuteLine 34 -../SubGHz_Phy/App/subghz_phy_app.c:699:13:App_PrintConfigPrompt 2 -../SubGHz_Phy/App/subghz_phy_app.c:707:13:App_PrintHelp 1 -../SubGHz_Phy/App/subghz_phy_app.c:726:13:App_PrintStatus 2 -../SubGHz_Phy/App/subghz_phy_app.c:748:13:App_Printf 3 -../SubGHz_Phy/App/subghz_phy_app.c:771:13:App_Write 3 -../SubGHz_Phy/App/subghz_phy_app.c:781:13:App_ReconfigureUart 5 -../SubGHz_Phy/App/subghz_phy_app.c:807:16:App_ParseHexSyncWord 11 -../SubGHz_Phy/App/subghz_phy_app.c:855:14:App_SkipSpaces 4 -../SubGHz_Phy/App/subghz_phy_app.c:864:13:App_LedTxPulse 1 -../SubGHz_Phy/App/subghz_phy_app.c:871:13:App_LedRxPulse 1 -../SubGHz_Phy/App/subghz_phy_app.c:878:13:App_LedErrPulse 1 -../SubGHz_Phy/App/subghz_phy_app.c:885:13:App_ProcessLeds 7 -../SubGHz_Phy/App/subghz_phy_app.c:909:13:OnTxDone 1 -../SubGHz_Phy/App/subghz_phy_app.c:914:13:OnRxDone 2 -../SubGHz_Phy/App/subghz_phy_app.c:929:13:OnTxTimeout 1 -../SubGHz_Phy/App/subghz_phy_app.c:934:13:OnRxTimeout 1 -../SubGHz_Phy/App/subghz_phy_app.c:939:13:OnRxError 1 +../SubGHz_Phy/App/subghz_phy_app.c:159:6:SubghzApp_Process 1 +../SubGHz_Phy/App/subghz_phy_app.c:167:13:App_ProcessRadioEvents 10 +../SubGHz_Phy/App/subghz_phy_app.c:218:13:App_ProcessUartPacketizer 5 +../SubGHz_Phy/App/subghz_phy_app.c:235:13:App_ProcessEscape 8 +../SubGHz_Phy/App/subghz_phy_app.c:264:13:App_StartNextTxIfPossible 4 +../SubGHz_Phy/App/subghz_phy_app.c:276:13:App_ApplyConfig 2 +../SubGHz_Phy/App/subghz_phy_app.c:287:13:App_RadioApplyConfig 1 +../SubGHz_Phy/App/subghz_phy_app.c:293:13:App_RadioConfigureRx 2 +../SubGHz_Phy/App/subghz_phy_app.c:323:13:App_RadioConfigureTx 2 +../SubGHz_Phy/App/subghz_phy_app.c:349:13:App_RadioEnterRx 1 +../SubGHz_Phy/App/subghz_phy_app.c:355:13:App_EnterConfigMode 2 +../SubGHz_Phy/App/subghz_phy_app.c:371:13:App_ExitConfigMode 1 +../SubGHz_Phy/App/subghz_phy_app.c:380:13:App_ResetDataPath 1 +../SubGHz_Phy/App/subghz_phy_app.c:390:13:App_DataModeFeedByte 3 +../SubGHz_Phy/App/subghz_phy_app.c:410:13:App_DataModeFlushBuilder 3 +../SubGHz_Phy/App/subghz_phy_app.c:424:16:App_QueuePush 4 +../SubGHz_Phy/App/subghz_phy_app.c:438:13:App_QueuePop 2 +../SubGHz_Phy/App/subghz_phy_app.c:449:13:UartRxByteCallback 13 +../SubGHz_Phy/App/subghz_phy_app.c:512:13:App_ConfigFeedByte 9 +../SubGHz_Phy/App/subghz_phy_app.c:544:13:App_ConfigExecuteLine 34 +../SubGHz_Phy/App/subghz_phy_app.c:706:13:App_PrintConfigPrompt 2 +../SubGHz_Phy/App/subghz_phy_app.c:714:13:App_PrintHelp 1 +../SubGHz_Phy/App/subghz_phy_app.c:733:13:App_PrintStatus 2 +../SubGHz_Phy/App/subghz_phy_app.c:755:13:App_Printf 3 +../SubGHz_Phy/App/subghz_phy_app.c:778:13:App_Write 3 +../SubGHz_Phy/App/subghz_phy_app.c:788:13:App_ReconfigureUart 5 +../SubGHz_Phy/App/subghz_phy_app.c:814:16:App_ParseHexSyncWord 11 +../SubGHz_Phy/App/subghz_phy_app.c:862:14:App_SkipSpaces 4 +../SubGHz_Phy/App/subghz_phy_app.c:870:13:App_LedTxPulse 1 +../SubGHz_Phy/App/subghz_phy_app.c:878:13:App_LedRxPulse 1 +../SubGHz_Phy/App/subghz_phy_app.c:886:13:App_LedErrPulse 1 +../SubGHz_Phy/App/subghz_phy_app.c:893:13:OnTxDone 1 +../SubGHz_Phy/App/subghz_phy_app.c:898:13:App_LedTxOff 1 +../SubGHz_Phy/App/subghz_phy_app.c:904:13:App_LedRxOff 1 +../SubGHz_Phy/App/subghz_phy_app.c:910:13:App_LedErrOff 1 +../SubGHz_Phy/App/subghz_phy_app.c:917:13:OnRxDone 2 +../SubGHz_Phy/App/subghz_phy_app.c:932:13:OnTxTimeout 1 +../SubGHz_Phy/App/subghz_phy_app.c:937:13:OnRxTimeout 1 +../SubGHz_Phy/App/subghz_phy_app.c:942:13:OnRxError 1 diff --git a/Debug/SubGHz_Phy/App/subghz_phy_app.d b/Debug/SubGHz_Phy/App/subghz_phy_app.d index 6b7b056..5590043 100644 --- a/Debug/SubGHz_Phy/App/subghz_phy_app.d +++ b/Debug/SubGHz_Phy/App/subghz_phy_app.d @@ -52,7 +52,8 @@ SubGHz_Phy/App/subghz_phy_app.o: ../SubGHz_Phy/App/subghz_phy_app.c \ ../Core/Inc/utilities_conf.h ../Drivers/CMSIS/Include/cmsis_compiler.h \ ../Utilities/misc/stm32_mem.h ../Utilities/misc/stm32_tiny_vsnprintf.h \ ../Core/Inc/utilities_def.h ../Core/Inc/usart.h ../Core/Inc/dma.h \ - ../Core/Inc/usart.h ../Core/Inc/main.h \ + ../Core/Inc/usart.h ../Core/Inc/main.h ../SubGHz_Phy/Target/timer.h \ + ../Utilities/timer/stm32_timer.h \ ../SubGHz_Phy/App/config/config_consts.h \ ../SubGHz_Phy/App/config/config_types.h \ ../SubGHz_Phy/App/config/config_consts.h \ @@ -119,6 +120,8 @@ SubGHz_Phy/App/subghz_phy_app.o: ../SubGHz_Phy/App/subghz_phy_app.c \ ../Core/Inc/dma.h: ../Core/Inc/usart.h: ../Core/Inc/main.h: +../SubGHz_Phy/Target/timer.h: +../Utilities/timer/stm32_timer.h: ../SubGHz_Phy/App/config/config_consts.h: ../SubGHz_Phy/App/config/config_types.h: ../SubGHz_Phy/App/config/config_consts.h: diff --git a/Debug/SubGHz_Phy/App/subghz_phy_app.o b/Debug/SubGHz_Phy/App/subghz_phy_app.o index 94b3790..6a2aa73 100644 Binary files a/Debug/SubGHz_Phy/App/subghz_phy_app.o and b/Debug/SubGHz_Phy/App/subghz_phy_app.o differ diff --git a/Debug/SubGHz_Phy/App/subghz_phy_app.su b/Debug/SubGHz_Phy/App/subghz_phy_app.su index 8ed3db8..cbbc81d 100644 --- a/Debug/SubGHz_Phy/App/subghz_phy_app.su +++ b/Debug/SubGHz_Phy/App/subghz_phy_app.su @@ -1,38 +1,40 @@ -../SubGHz_Phy/App/subghz_phy_app.c:125:6:SubghzApp_Init 8 static -../SubGHz_Phy/App/subghz_phy_app.c:151:6:SubghzApp_Process 8 static -../SubGHz_Phy/App/subghz_phy_app.c:160:13:App_ProcessRadioEvents 8 static -../SubGHz_Phy/App/subghz_phy_app.c:211:13:App_ProcessUartPacketizer 16 static -../SubGHz_Phy/App/subghz_phy_app.c:228:13:App_ProcessEscape 16 static -../SubGHz_Phy/App/subghz_phy_app.c:257:13:App_StartNextTxIfPossible 16 static -../SubGHz_Phy/App/subghz_phy_app.c:269:13:App_ApplyConfig 8 static -../SubGHz_Phy/App/subghz_phy_app.c:280:13:App_RadioApplyConfig 8 static -../SubGHz_Phy/App/subghz_phy_app.c:286:13:App_RadioConfigureRx 72 static -../SubGHz_Phy/App/subghz_phy_app.c:316:13:App_RadioConfigureTx 48 static -../SubGHz_Phy/App/subghz_phy_app.c:342:13:App_RadioEnterRx 8 static -../SubGHz_Phy/App/subghz_phy_app.c:348:13:App_EnterConfigMode 8 static -../SubGHz_Phy/App/subghz_phy_app.c:364:13:App_ExitConfigMode 8 static -../SubGHz_Phy/App/subghz_phy_app.c:373:13:App_ResetDataPath 4 static -../SubGHz_Phy/App/subghz_phy_app.c:383:13:App_DataModeFeedByte 16 static -../SubGHz_Phy/App/subghz_phy_app.c:403:13:App_DataModeFlushBuilder 8 static -../SubGHz_Phy/App/subghz_phy_app.c:417:16:App_QueuePush 16 static -../SubGHz_Phy/App/subghz_phy_app.c:431:13:App_QueuePop 4 static -../SubGHz_Phy/App/subghz_phy_app.c:442:13:UartRxByteCallback 24 static -../SubGHz_Phy/App/subghz_phy_app.c:505:13:App_ConfigFeedByte 16 static -../SubGHz_Phy/App/subghz_phy_app.c:537:13:App_ConfigExecuteLine 32 static -../SubGHz_Phy/App/subghz_phy_app.c:699:13:App_PrintConfigPrompt 8 static -../SubGHz_Phy/App/subghz_phy_app.c:707:13:App_PrintHelp 8 static -../SubGHz_Phy/App/subghz_phy_app.c:726:13:App_PrintStatus 8 static -../SubGHz_Phy/App/subghz_phy_app.c:748:13:App_Printf 208 static -../SubGHz_Phy/App/subghz_phy_app.c:771:13:App_Write 16 static -../SubGHz_Phy/App/subghz_phy_app.c:781:13:App_ReconfigureUart 16 static -../SubGHz_Phy/App/subghz_phy_app.c:807:16:App_ParseHexSyncWord 40 static -../SubGHz_Phy/App/subghz_phy_app.c:855:14:App_SkipSpaces 16 static -../SubGHz_Phy/App/subghz_phy_app.c:864:13:App_LedTxPulse 8 static -../SubGHz_Phy/App/subghz_phy_app.c:871:13:App_LedRxPulse 8 static -../SubGHz_Phy/App/subghz_phy_app.c:878:13:App_LedErrPulse 8 static -../SubGHz_Phy/App/subghz_phy_app.c:885:13:App_ProcessLeds 16 static -../SubGHz_Phy/App/subghz_phy_app.c:909:13:OnTxDone 4 static -../SubGHz_Phy/App/subghz_phy_app.c:914:13:OnRxDone 24 static -../SubGHz_Phy/App/subghz_phy_app.c:929:13:OnTxTimeout 4 static -../SubGHz_Phy/App/subghz_phy_app.c:934:13:OnRxTimeout 4 static -../SubGHz_Phy/App/subghz_phy_app.c:939:13:OnRxError 4 static +../SubGHz_Phy/App/subghz_phy_app.c:125:6:SubghzApp_Init 16 static +../SubGHz_Phy/App/subghz_phy_app.c:159:6:SubghzApp_Process 8 static +../SubGHz_Phy/App/subghz_phy_app.c:167:13:App_ProcessRadioEvents 8 static +../SubGHz_Phy/App/subghz_phy_app.c:218:13:App_ProcessUartPacketizer 16 static +../SubGHz_Phy/App/subghz_phy_app.c:235:13:App_ProcessEscape 16 static +../SubGHz_Phy/App/subghz_phy_app.c:264:13:App_StartNextTxIfPossible 16 static +../SubGHz_Phy/App/subghz_phy_app.c:276:13:App_ApplyConfig 8 static +../SubGHz_Phy/App/subghz_phy_app.c:287:13:App_RadioApplyConfig 8 static +../SubGHz_Phy/App/subghz_phy_app.c:293:13:App_RadioConfigureRx 72 static +../SubGHz_Phy/App/subghz_phy_app.c:323:13:App_RadioConfigureTx 48 static +../SubGHz_Phy/App/subghz_phy_app.c:349:13:App_RadioEnterRx 8 static +../SubGHz_Phy/App/subghz_phy_app.c:355:13:App_EnterConfigMode 8 static +../SubGHz_Phy/App/subghz_phy_app.c:371:13:App_ExitConfigMode 8 static +../SubGHz_Phy/App/subghz_phy_app.c:380:13:App_ResetDataPath 4 static +../SubGHz_Phy/App/subghz_phy_app.c:390:13:App_DataModeFeedByte 16 static +../SubGHz_Phy/App/subghz_phy_app.c:410:13:App_DataModeFlushBuilder 8 static +../SubGHz_Phy/App/subghz_phy_app.c:424:16:App_QueuePush 16 static +../SubGHz_Phy/App/subghz_phy_app.c:438:13:App_QueuePop 4 static +../SubGHz_Phy/App/subghz_phy_app.c:449:13:UartRxByteCallback 24 static +../SubGHz_Phy/App/subghz_phy_app.c:512:13:App_ConfigFeedByte 16 static +../SubGHz_Phy/App/subghz_phy_app.c:544:13:App_ConfigExecuteLine 32 static +../SubGHz_Phy/App/subghz_phy_app.c:706:13:App_PrintConfigPrompt 8 static +../SubGHz_Phy/App/subghz_phy_app.c:714:13:App_PrintHelp 8 static +../SubGHz_Phy/App/subghz_phy_app.c:733:13:App_PrintStatus 8 static +../SubGHz_Phy/App/subghz_phy_app.c:755:13:App_Printf 208 static +../SubGHz_Phy/App/subghz_phy_app.c:778:13:App_Write 16 static +../SubGHz_Phy/App/subghz_phy_app.c:788:13:App_ReconfigureUart 16 static +../SubGHz_Phy/App/subghz_phy_app.c:814:16:App_ParseHexSyncWord 40 static +../SubGHz_Phy/App/subghz_phy_app.c:862:14:App_SkipSpaces 16 static +../SubGHz_Phy/App/subghz_phy_app.c:870:13:App_LedTxPulse 8 static +../SubGHz_Phy/App/subghz_phy_app.c:878:13:App_LedRxPulse 8 static +../SubGHz_Phy/App/subghz_phy_app.c:886:13:App_LedErrPulse 8 static +../SubGHz_Phy/App/subghz_phy_app.c:893:13:OnTxDone 4 static +../SubGHz_Phy/App/subghz_phy_app.c:898:13:App_LedTxOff 16 static +../SubGHz_Phy/App/subghz_phy_app.c:904:13:App_LedRxOff 16 static +../SubGHz_Phy/App/subghz_phy_app.c:910:13:App_LedErrOff 16 static +../SubGHz_Phy/App/subghz_phy_app.c:917:13:OnRxDone 24 static +../SubGHz_Phy/App/subghz_phy_app.c:932:13:OnTxTimeout 4 static +../SubGHz_Phy/App/subghz_phy_app.c:937:13:OnRxTimeout 4 static +../SubGHz_Phy/App/subghz_phy_app.c:942:13:OnRxError 4 static diff --git a/Debug/suffix.elf b/Debug/suffix.elf index 4d80b90..8702d4c 100755 Binary files a/Debug/suffix.elf and b/Debug/suffix.elf differ diff --git a/Debug/suffix.list b/Debug/suffix.list index 33ec935..0d7870c 100644 --- a/Debug/suffix.list +++ b/Debug/suffix.list @@ -5,47 +5,47 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 00000138 08000000 08000000 00001000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 0000f744 08000140 08000140 00001140 2**4 + 1 .text 0000f76c 08000140 08000140 00001140 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00000dc8 0800f884 0800f884 00010884 2**2 + 2 .rodata 00000dc8 0800f8ac 0800f8ac 000108ac 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM.extab 00000000 0801064c 0801064c 0001206c 2**0 + 3 .ARM.extab 00000000 08010674 08010674 0001206c 2**0 CONTENTS, READONLY - 4 .ARM 00000008 0801064c 0801064c 0001164c 2**2 + 4 .ARM 00000008 08010674 08010674 00011674 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 5 .preinit_array 00000000 08010654 08010654 0001206c 2**0 + 5 .preinit_array 00000000 0801067c 0801067c 0001206c 2**0 CONTENTS, ALLOC, LOAD, DATA - 6 .init_array 00000004 08010654 08010654 00011654 2**2 + 6 .init_array 00000004 0801067c 0801067c 0001167c 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 7 .fini_array 00000004 08010658 08010658 00011658 2**2 + 7 .fini_array 00000004 08010680 08010680 00011680 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 8 .data 0000006c 20000000 0801065c 00012000 2**2 + 8 .data 0000006c 20000000 08010684 00012000 2**2 CONTENTS, ALLOC, LOAD, DATA - 9 .bss 00001028 2000006c 080106c8 0001206c 2**2 + 9 .bss 00001060 2000006c 080106f0 0001206c 2**2 ALLOC - 10 ._user_heap_stack 00000a04 20001094 080106c8 00012094 2**0 + 10 ._user_heap_stack 00000a04 200010cc 080106f0 000120cc 2**0 ALLOC 11 .ARM.attributes 0000002a 00000000 00000000 0001206c 2**0 CONTENTS, READONLY - 12 .debug_info 00025c8e 00000000 00000000 00012096 2**0 + 12 .debug_info 00025e14 00000000 00000000 00012096 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 13 .debug_abbrev 000068c7 00000000 00000000 00037d24 2**0 + 13 .debug_abbrev 000068c7 00000000 00000000 00037eaa 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 14 .debug_aranges 00002340 00000000 00000000 0003e5f0 2**3 + 14 .debug_aranges 00002350 00000000 00000000 0003e778 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_rnglists 00001a7a 00000000 00000000 00040930 2**0 + 15 .debug_rnglists 00001a85 00000000 00000000 00040ac8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_macro 0002436a 00000000 00000000 000423aa 2**0 + 16 .debug_macro 00024387 00000000 00000000 0004254d 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .debug_line 000258f8 00000000 00000000 00066714 2**0 + 17 .debug_line 000258f0 00000000 00000000 000668d4 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 18 .debug_str 000c7293 00000000 00000000 0008c00c 2**0 + 18 .debug_str 000c7281 00000000 00000000 0008c1c4 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .comment 00000043 00000000 00000000 0015329f 2**0 + 19 .comment 00000043 00000000 00000000 00153445 2**0 CONTENTS, READONLY - 20 .debug_frame 00009470 00000000 00000000 001532e4 2**2 + 20 .debug_frame 000094c0 00000000 00000000 00153488 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS - 21 .debug_line_str 0000004a 00000000 00000000 0015c754 2**0 + 21 .debug_line_str 0000004a 00000000 00000000 0015c948 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -64,7 +64,7 @@ Disassembly of section .text: 8000156: bd10 pop {r4, pc} 8000158: 2000006c .word 0x2000006c 800015c: 00000000 .word 0x00000000 - 8000160: 0800f86c .word 0x0800f86c + 8000160: 0800f894 .word 0x0800f894 08000164 : 8000164: b508 push {r3, lr} @@ -76,7 +76,7 @@ Disassembly of section .text: 8000172: bd08 pop {r3, pc} 8000174: 00000000 .word 0x00000000 8000178: 20000070 .word 0x20000070 - 800017c: 0800f86c .word 0x0800f86c + 800017c: 0800f894 .word 0x0800f894 08000180 : 8000180: f810 2b01 ldrb.w r2, [r0], #1 @@ -779,7 +779,7 @@ void SystemClock_Config(void) 800072a: 2248 movs r2, #72 @ 0x48 800072c: 2100 movs r1, #0 800072e: 4618 mov r0, r3 - 8000730: f00e fc0c bl 800ef4c + 8000730: f00e fc20 bl 800ef74 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; 8000734: 1d3b adds r3, r7, #4 8000736: 2200 movs r2, #0 @@ -989,7 +989,7 @@ void MX_RTC_Init(void) 8000834: 222c movs r2, #44 @ 0x2c 8000836: 2100 movs r1, #0 8000838: 4618 mov r0, r3 - 800083a: f00e fb87 bl 800ef4c + 800083a: f00e fb9b bl 800ef74 /* USER CODE END RTC_Init 1 */ @@ -1108,7 +1108,7 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) 80008dc: 2238 movs r2, #56 @ 0x38 80008de: 2100 movs r1, #0 80008e0: 4618 mov r0, r3 - 80008e2: f00e fb33 bl 800ef4c + 80008e2: f00e fb47 bl 800ef74 if(rtcHandle->Instance==RTC) 80008e6: 687b ldr r3, [r7, #4] 80008e8: 681b ldr r3, [r3, #0] @@ -1845,7 +1845,7 @@ void SystemApp_Init(void) /*Initialize timer and RTC*/ UTIL_TIMER_Init(); - 8000b5e: f00d fb99 bl 800e294 + 8000b5e: f00d fbad bl 800e2bc SYS_TimerInitialisedFlag = 1; 8000b62: 4b0c ldr r3, [pc, #48] @ (8000b94 ) 8000b64: 2201 movs r2, #1 @@ -1856,31 +1856,31 @@ void SystemApp_Init(void) /*Initialize the terminal */ UTIL_ADV_TRACE_Init(); - 8000b6c: f00d fe22 bl 800e7b4 + 8000b6c: f00d fe36 bl 800e7dc UTIL_ADV_TRACE_RegisterTimeStampFunction(TimestampNow); 8000b70: 4809 ldr r0, [pc, #36] @ (8000b98 ) - 8000b72: f00d febb bl 800e8ec + 8000b72: f00d fecf bl 800e914 /*Set verbose LEVEL*/ UTIL_ADV_TRACE_SetVerboseLevel(VERBOSE_LEVEL); 8000b76: 2002 movs r0, #2 - 8000b78: f00d fec6 bl 800e908 + 8000b78: f00d feda bl 800e930 /*Init low power manager*/ UTIL_LPM_Init(); - 8000b7c: f00c fe92 bl 800d8a4 + 8000b7c: f00c fea6 bl 800d8cc /* Disable Stand-by mode */ UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE); 8000b80: 2101 movs r1, #1 8000b82: 2001 movs r0, #1 - 8000b84: f00c fece bl 800d924 + 8000b84: f00c fee2 bl 800d94c #if defined (LOW_POWER_DISABLE) && (LOW_POWER_DISABLE == 1) /* Disable Stop Mode */ UTIL_LPM_SetStopMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE); 8000b88: 2101 movs r1, #1 8000b8a: 2001 movs r0, #1 - 8000b8c: f00c fe9a bl 800d8c4 + 8000b8c: f00c feae bl 800d8ec #endif /* LOW_POWER_DISABLE */ /* USER CODE BEGIN SystemApp_Init_2 */ @@ -1905,7 +1905,7 @@ void UTIL_SEQ_Idle(void) /* USER CODE END UTIL_SEQ_Idle_1 */ UTIL_LPM_EnterLowPower(); - 8000ba0: f00c fef0 bl 800d984 + 8000ba0: f00c ff04 bl 800d9ac /* USER CODE BEGIN UTIL_SEQ_Idle_2 */ /* USER CODE END UTIL_SEQ_Idle_2 */ @@ -1931,7 +1931,7 @@ static void TimestampNow(uint8_t *buff, uint16_t *size) SysTime_t curtime = SysTimeGet(); 8000bb2: f107 0308 add.w r3, r7, #8 8000bb6: 4618 mov r0, r3 - 8000bb8: f00c ff8e bl 800dad8 + 8000bb8: f00c ffa2 bl 800db00 tiny_snprintf_like((char *)buff, MAX_TS_SIZE, "%ds%03d:", curtime.Seconds, curtime.SubSeconds); 8000bbc: 68bb ldr r3, [r7, #8] 8000bbe: f9b7 200c ldrsh.w r2, [r7, #12] @@ -1955,7 +1955,7 @@ static void TimestampNow(uint8_t *buff, uint16_t *size) 8000bde: 3710 adds r7, #16 8000be0: 46bd mov sp, r7 8000be2: bd80 pop {r7, pc} - 8000be4: 0800f884 .word 0x0800f884 + 8000be4: 0800f8ac .word 0x0800f8ac 08000be8 : @@ -1970,7 +1970,7 @@ void UTIL_ADV_TRACE_PreSendHook(void) UTIL_LPM_SetStopMode((1 << CFG_LPM_UART_TX_Id), UTIL_LPM_DISABLE); 8000bec: 2101 movs r1, #1 8000bee: 2002 movs r0, #2 - 8000bf0: f00c fe68 bl 800d8c4 + 8000bf0: f00c fe7c bl 800d8ec /* USER CODE BEGIN UTIL_ADV_TRACE_PreSendHook_2 */ /* USER CODE END UTIL_ADV_TRACE_PreSendHook_2 */ @@ -1990,7 +1990,7 @@ void UTIL_ADV_TRACE_PostSendHook(void) UTIL_LPM_SetStopMode((1 << CFG_LPM_UART_TX_Id), UTIL_LPM_ENABLE); 8000bfc: 2100 movs r1, #0 8000bfe: 2002 movs r0, #2 - 8000c00: f00c fe60 bl 800d8c4 + 8000c00: f00c fe74 bl 800d8ec /* USER CODE BEGIN UTIL_LPM_SetStopMode_2 */ /* USER CODE END UTIL_LPM_SetStopMode_2 */ @@ -2020,7 +2020,7 @@ static void tiny_snprintf_like(char *buf, uint32_t maxsize, const char *strForma 8000c1c: 68fb ldr r3, [r7, #12] 8000c1e: 69ba ldr r2, [r7, #24] 8000c20: 6878 ldr r0, [r7, #4] - 8000c22: f00d f8a5 bl 800dd70 + 8000c22: f00d f8b9 bl 800dd98 va_end(vaArgs); /* USER CODE BEGIN tiny_snprintf_like_2 */ @@ -2332,7 +2332,7 @@ void *_sbrk(ptrdiff_t incr) 8000d92: d207 bcs.n 8000da4 <_sbrk+0x40> { errno = ENOMEM; - 8000d94: f00e f8f4 bl 800ef80 <__errno> + 8000d94: f00e f908 bl 800efa8 <__errno> 8000d98: 4603 mov r3, r0 8000d9a: 220c movs r2, #12 8000d9c: 601a str r2, [r3, #0] @@ -2363,7 +2363,7 @@ void *_sbrk(ptrdiff_t incr) 8000dc0: 20010000 .word 0x20010000 8000dc4: 00000800 .word 0x00000800 8000dc8: 200000d0 .word 0x200000d0 - 8000dcc: 20001098 .word 0x20001098 + 8000dcc: 200010d0 .word 0x200010d0 08000dd0 : * @brief Setup the microcontroller system. @@ -2506,7 +2506,7 @@ UTIL_TIMER_Status_t TIMER_IF_StartTimer(uint32_t timeout) 8000e6a: 222c movs r2, #44 @ 0x2c 8000e6c: 2100 movs r1, #0 8000e6e: 4618 mov r0, r3 - 8000e70: f00e f86c bl 800ef4c + 8000e70: f00e f880 bl 800ef74 /*Stop timer if one is already started*/ TIMER_IF_StopTimer(); 8000e74: f000 f828 bl 8000ec8 @@ -2910,7 +2910,7 @@ void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc) /* USER CODE END HAL_RTC_AlarmAEventCallback */ UTIL_TIMER_IRQ_MAP_PROCESS(); - 800109e: f00d fa47 bl 800e530 + 800109e: f00d fa5b bl 800e558 /* USER CODE BEGIN HAL_RTC_AlarmAEventCallback_Last */ /* USER CODE END HAL_RTC_AlarmAEventCallback_Last */ @@ -3458,7 +3458,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) 8001390: 2238 movs r2, #56 @ 0x38 8001392: 2100 movs r1, #0 8001394: 4618 mov r0, r3 - 8001396: f00d fdd9 bl 800ef4c + 8001396: f00d fded bl 800ef74 if(uartHandle->Instance==USART2) 800139a: 687b ldr r3, [r7, #4] 800139c: 681b ldr r3, [r3, #0] @@ -4137,7 +4137,7 @@ LoopFillZerobss: /* Call static constructors */ bl __libc_init_array - 8001702: f00d fc43 bl 800ef8c <__libc_init_array> + 8001702: f00d fc57 bl 800efb4 <__libc_init_array> /* Call the application's entry point.*/ bl main 8001706: f7fe fffe bl 8000706
@@ -4154,11 +4154,11 @@ LoopForever: ldr r1, =_edata 8001714: 2000006c .word 0x2000006c ldr r2, =_sidata - 8001718: 0801065c .word 0x0801065c + 8001718: 08010684 .word 0x08010684 ldr r2, =_sbss 800171c: 2000006c .word 0x2000006c ldr r4, =_ebss - 8001720: 20001094 .word 0x20001094 + 8001720: 200010cc .word 0x200010cc 08001724 : * @retval : None @@ -11414,7 +11414,7 @@ uint32_t HAL_RCC_GetSysClockFreq(void) 8003eda: 371c adds r7, #28 8003edc: 46bd mov sp, r7 8003ede: bd90 pop {r4, r7, pc} - 8003ee0: 0801030c .word 0x0801030c + 8003ee0: 08010334 .word 0x08010334 8003ee4: 00f42400 .word 0x00f42400 8003ee8: 01e84800 .word 0x01e84800 @@ -11441,7 +11441,7 @@ uint32_t HAL_RCC_GetHCLKFreq(void) } 8003f0c: 4618 mov r0, r3 8003f0e: bd98 pop {r3, r4, r7, pc} - 8003f10: 080102ac .word 0x080102ac + 8003f10: 080102d4 .word 0x080102d4 08003f14 : /** @@ -11465,7 +11465,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void) } 8003f30: 4618 mov r0, r3 8003f32: bd98 pop {r3, r4, r7, pc} - 8003f34: 080102ec .word 0x080102ec + 8003f34: 08010314 .word 0x08010314 08003f38 : /** @@ -11489,7 +11489,7 @@ uint32_t HAL_RCC_GetPCLK2Freq(void) } 8003f54: 4618 mov r0, r3 8003f56: bd98 pop {r3, r4, r7, pc} - 8003f58: 080102ec .word 0x080102ec + 8003f58: 08010314 .word 0x08010314 08003f5c : voltage range. @@ -11540,8 +11540,8 @@ static HAL_StatusTypeDef RCC_SetFlashLatencyFromMSIRange(uint32_t MSI_Range) 8003faa: 3714 adds r7, #20 8003fac: 46bd mov sp, r7 8003fae: bd90 pop {r4, r7, pc} - 8003fb0: 0801030c .word 0x0801030c - 8003fb4: 080102ac .word 0x080102ac + 8003fb0: 08010334 .word 0x08010334 + 8003fb4: 080102d4 .word 0x080102d4 8003fb8: 431bde83 .word 0x431bde83 08003fbc : @@ -11712,9 +11712,9 @@ static HAL_StatusTypeDef RCC_SetFlashLatency(uint32_t Flash_ClkSrcFreq, uint32_t 80040aa: 46bd mov sp, r7 80040ac: bd80 pop {r7, pc} 80040ae: bf00 nop - 80040b0: 0800f890 .word 0x0800f890 - 80040b4: 0800f898 .word 0x0800f898 - 80040b8: 0800f8a0 .word 0x0800f8a0 + 80040b0: 0800f8b8 .word 0x0800f8b8 + 80040b4: 0800f8c0 .word 0x0800f8c0 + 80040b8: 0800f8c8 .word 0x0800f8c8 80040bc: 58004000 .word 0x58004000 080040c0 : @@ -18035,7 +18035,7 @@ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) 80063f8: 40013800 .word 0x40013800 80063fc: 40004400 .word 0x40004400 8006400: 00f42400 .word 0x00f42400 - 8006404: 0801039c .word 0x0801039c + 8006404: 080103c4 .word 0x080103c4 } else { @@ -18374,7 +18374,7 @@ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) 8006648: 46bd mov sp, r7 800664a: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} 800664e: bf00 nop - 8006650: 0801039c .word 0x0801039c + 8006650: 080103c4 .word 0x080103c4 8006654: 00f42400 .word 0x00f42400 08006658 : @@ -22099,8 +22099,8 @@ static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) 8007cb2: 46bd mov sp, r7 8007cb4: bc80 pop {r7} 8007cb6: 4770 bx lr - 8007cb8: 080103b4 .word 0x080103b4 - 8007cbc: 080103bc .word 0x080103bc + 8007cb8: 080103dc .word 0x080103dc + 8007cbc: 080103e4 .word 0x080103e4 08007cc0 : * @arg @ref LL_GPIO_PIN_15 @@ -22228,7 +22228,7 @@ static void RadioInit( RadioEvents_t *events ) 8007d5c: 2200 movs r2, #0 8007d5e: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff 8007d62: 480f ldr r0, [pc, #60] @ (8007da0 ) - 8007d64: f006 faa6 bl 800e2b4 + 8007d64: f006 faba bl 800e2dc TimerInit( &RxTimeoutTimer, RadioOnRxTimeoutIrq ); 8007d68: 2300 movs r3, #0 8007d6a: 9300 str r3, [sp, #0] @@ -22236,13 +22236,13 @@ static void RadioInit( RadioEvents_t *events ) 8007d6e: 2200 movs r2, #0 8007d70: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff 8007d74: 480c ldr r0, [pc, #48] @ (8007da8 ) - 8007d76: f006 fa9d bl 800e2b4 + 8007d76: f006 fab1 bl 800e2dc TimerStop( &TxTimeoutTimer ); 8007d7a: 4809 ldr r0, [pc, #36] @ (8007da0 ) - 8007d7c: f006 fb3e bl 800e3fc + 8007d7c: f006 fb52 bl 800e424 TimerStop( &RxTimeoutTimer ); 8007d80: 4809 ldr r0, [pc, #36] @ (8007da8 ) - 8007d82: f006 fb3b bl 800e3fc + 8007d82: f006 fb4f bl 800e424 } 8007d86: bf00 nop 8007d88: 3708 adds r7, #8 @@ -22516,7 +22516,7 @@ static bool RadioIsChannelFree( uint32_t freq, uint32_t rxBandwidth, int16_t rss 8007f1a: f7f8 fea9 bl 8000c70 carrierSenseTime = TimerGetCurrentTime( ); - 8007f1e: f006 fb87 bl 800e630 + 8007f1e: f006 fb9b bl 800e658 8007f22: 6138 str r0, [r7, #16] // Perform carrier sense for maxCarrierSenseTime @@ -22542,7 +22542,7 @@ static bool RadioIsChannelFree( uint32_t freq, uint32_t rxBandwidth, int16_t rss 8007f40: e006 b.n 8007f50 while( TimerGetElapsedTime( carrierSenseTime ) < maxCarrierSenseTime ) 8007f42: 6938 ldr r0, [r7, #16] - 8007f44: f006 fb86 bl 800e654 + 8007f44: f006 fb9a bl 800e67c 8007f48: 4602 mov r2, r0 8007f4a: 683b ldr r3, [r7, #0] 8007f4c: 4293 cmp r3, r2 @@ -22983,9 +22983,9 @@ static uint32_t RadioRandom( void ) 8008284: 20000008 .word 0x20000008 8008288: 20000330 .word 0x20000330 800828c: 20000306 .word 0x20000306 - 8008290: 0800f8ac .word 0x0800f8ac - 8008294: 0800f8b4 .word 0x0800f8b4 - 8008298: 08010450 .word 0x08010450 + 8008290: 0800f8d4 .word 0x0800f8d4 + 8008294: 0800f8dc .word 0x0800f8dc + 8008298: 08010478 .word 0x08010478 SubgRf.ModulationParams.Params.LoRa.LowDatarateOptimize = 0x00; 800829c: 4b3b ldr r3, [pc, #236] @ (800838c ) 800829e: 2200 movs r2, #0 @@ -23408,8 +23408,8 @@ static void RadioSetTxConfig( RadioModems_t modem, int8_t power, uint32_t fdev, 80085a8: 200002f8 .word 0x200002f8 80085ac: 20000330 .word 0x20000330 80085b0: 20000306 .word 0x20000306 - 80085b4: 0800f8b4 .word 0x0800f8b4 - 80085b8: 08010450 .word 0x08010450 + 80085b4: 0800f8dc .word 0x0800f8dc + 80085b8: 08010478 .word 0x08010478 80085bc: 20000008 .word 0x20000008 080085c0 : @@ -23881,7 +23881,7 @@ static uint32_t RadioTimeOnAir( RadioModems_t modem, uint32_t bandwidth, 800887e: 46bd mov sp, r7 8008880: bd80 pop {r7, pc} 8008882: bf00 nop - 8008884: 08010450 .word 0x08010450 + 8008884: 08010478 .word 0x08010478 08008888 : @@ -24031,7 +24031,7 @@ static radio_status_t RadioSend( uint8_t *buffer, uint8_t size ) 800897c: 2201 movs r2, #1 800897e: 2100 movs r1, #0 8008980: 2002 movs r0, #2 - 8008982: f005 ff33 bl 800e7ec + 8008982: f005 ff47 bl 800e814 return RADIO_STATUS_ERROR; 8008986: 2303 movs r3, #3 8008988: e073 b.n 8008a72 @@ -24177,10 +24177,10 @@ static radio_status_t RadioSend( uint8_t *buffer, uint8_t size ) 8008a60: 685b ldr r3, [r3, #4] 8008a62: 4619 mov r1, r3 8008a64: 480a ldr r0, [pc, #40] @ (8008a90 ) - 8008a66: f005 fd39 bl 800e4dc + 8008a66: f005 fd4d bl 800e504 TimerStart( &TxTimeoutTimer ); 8008a6a: 4809 ldr r0, [pc, #36] @ (8008a90 ) - 8008a6c: f005 fc58 bl 800e320 + 8008a6c: f005 fc6c bl 800e348 } return RADIO_STATUS_OK; @@ -24194,7 +24194,7 @@ static radio_status_t RadioSend( uint8_t *buffer, uint8_t size ) 8008a7c: 48000400 .word 0x48000400 8008a80: 200002f8 .word 0x200002f8 8008a84: 20000306 .word 0x20000306 - 8008a88: 0800f8bc .word 0x0800f8bc + 8008a88: 0800f8e4 .word 0x0800f8e4 8008a8c: 200001f4 .word 0x200001f4 8008a90: 20000354 .word 0x20000354 @@ -24283,10 +24283,10 @@ static void RadioRx( uint32_t timeout ) TimerSetValue( &RxTimeoutTimer, timeout ); 8008af6: 6879 ldr r1, [r7, #4] 8008af8: 4813 ldr r0, [pc, #76] @ (8008b48 ) - 8008afa: f005 fcef bl 800e4dc + 8008afa: f005 fd03 bl 800e504 TimerStart( &RxTimeoutTimer ); 8008afe: 4812 ldr r0, [pc, #72] @ (8008b48 ) - 8008b00: f005 fc0e bl 800e320 + 8008b00: f005 fc22 bl 800e348 } /* switch off RxDcPreambleDetect See STM32WL Errata: RadioSetRxDutyCycle*/ SubgRf.RxDcPreambleDetectTimeout = 0; @@ -24380,10 +24380,10 @@ static void RadioRxBoosted( uint32_t timeout ) TimerSetValue( &RxTimeoutTimer, timeout ); 8008b82: 6879 ldr r1, [r7, #4] 8008b84: 4813 ldr r0, [pc, #76] @ (8008bd4 ) - 8008b86: f005 fca9 bl 800e4dc + 8008b86: f005 fcbd bl 800e504 TimerStart( &RxTimeoutTimer ); 8008b8a: 4812 ldr r0, [pc, #72] @ (8008bd4 ) - 8008b8c: f005 fbc8 bl 800e320 + 8008b8c: f005 fbdc bl 800e348 } /* switch off RxDcPreambleDetect See STM32WL Errata: RadioSetRxDutyCycle*/ SubgRf.RxDcPreambleDetectTimeout = 0; @@ -24562,10 +24562,10 @@ static void RadioSetTxContinuousWave( uint32_t freq, int8_t power, uint16_t time TimerSetValue( &TxTimeoutTimer, timeout ); 8008ca0: 68f9 ldr r1, [r7, #12] 8008ca2: 4805 ldr r0, [pc, #20] @ (8008cb8 ) - 8008ca4: f005 fc1a bl 800e4dc + 8008ca4: f005 fc2e bl 800e504 TimerStart( &TxTimeoutTimer ); 8008ca8: 4803 ldr r0, [pc, #12] @ (8008cb8 ) - 8008caa: f005 fb39 bl 800e320 + 8008caa: f005 fb4d bl 800e348 } 8008cae: bf00 nop 8008cb0: 3710 adds r7, #16 @@ -25027,7 +25027,7 @@ static void RadioIrqProcess( void ) 8008fc2: f7fe fe8a bl 8007cda TimerStop( &TxTimeoutTimer ); 8008fc6: 487d ldr r0, [pc, #500] @ (80091bc ) - 8008fc8: f005 fa18 bl 800e3fc + 8008fc8: f005 fa2c bl 800e424 SUBGRF_SetStandby( STDBY_RC ); 8008fcc: 2000 movs r0, #0 8008fce: f001 f835 bl 800a03c @@ -25061,7 +25061,7 @@ static void RadioIrqProcess( void ) 8009006: f7fe fe68 bl 8007cda TimerStop( &RxTimeoutTimer ); 800900a: 486e ldr r0, [pc, #440] @ (80091c4 ) - 800900c: f005 f9f6 bl 800e3fc + 800900c: f005 fa0a bl 800e424 if( SubgRf.RxContinuous == false ) 8009010: 4b68 ldr r3, [pc, #416] @ (80091b4 ) 8009012: 785b ldrb r3, [r3, #1] @@ -25202,7 +25202,7 @@ static void RadioIrqProcess( void ) 8009128: 2201 movs r2, #1 800912a: 2100 movs r1, #0 800912c: 2002 movs r0, #2 - 800912e: f005 fb5d bl 800e7ec + 800912e: f005 fb71 bl 800e814 if( SUBGRF_GetOperatingMode( ) == MODE_TX ) 8009132: f000 fe37 bl 8009da4 8009136: 4603 mov r3, r0 @@ -25214,7 +25214,7 @@ static void RadioIrqProcess( void ) 8009142: f7fe fdca bl 8007cda TimerStop( &TxTimeoutTimer ); 8009146: 481d ldr r0, [pc, #116] @ (80091bc ) - 8009148: f005 f958 bl 800e3fc + 8009148: f005 f96c bl 800e424 SUBGRF_SetStandby( STDBY_RC ); 800914c: 2000 movs r0, #0 800914e: f000 ff75 bl 800a03c @@ -25246,7 +25246,7 @@ static void RadioIrqProcess( void ) 8009184: f7fe fda9 bl 8007cda TimerStop( &RxTimeoutTimer ); 8009188: 480e ldr r0, [pc, #56] @ (80091c4 ) - 800918a: f005 f937 bl 800e3fc + 800918a: f005 f94b bl 800e424 SUBGRF_SetStandby( STDBY_RC ); 800918e: 2000 movs r0, #0 8009190: f000 ff54 bl 800a03c @@ -25275,13 +25275,13 @@ static void RadioIrqProcess( void ) 80091c8: 200001f4 .word 0x200001f4 80091cc: 2000031c .word 0x2000031c 80091d0: 10624dd3 .word 0x10624dd3 - 80091d4: 0800f8d4 .word 0x0800f8d4 + 80091d4: 0800f8fc .word 0x0800f8fc MW_LOG( TS_ON, VLEVEL_M, "PRE OK\r\n" ); 80091d8: 4b54 ldr r3, [pc, #336] @ (800932c ) 80091da: 2201 movs r2, #1 80091dc: 2100 movs r1, #0 80091de: 2002 movs r0, #2 - 80091e0: f005 fb04 bl 800e7ec + 80091e0: f005 fb18 bl 800e814 if( SubgRf.RxDcPreambleDetectTimeout != 0 ) 80091e4: 4b52 ldr r3, [pc, #328] @ (8009330 ) 80091e6: 6d9b ldr r3, [r3, #88] @ 0x58 @@ -25341,7 +25341,7 @@ static void RadioIrqProcess( void ) 8009256: 2201 movs r2, #1 8009258: 2100 movs r1, #0 800925a: 2002 movs r0, #2 - 800925c: f005 fac6 bl 800e7ec + 800925c: f005 fada bl 800e814 if( 1UL == RFW_Is_Init( ) ) 8009260: f002 f9ec bl 800b63c 8009264: 4603 mov r3, r0 @@ -25356,12 +25356,12 @@ static void RadioIrqProcess( void ) 8009272: 2201 movs r2, #1 8009274: 2100 movs r1, #0 8009276: 2002 movs r0, #2 - 8009278: f005 fab8 bl 800e7ec + 8009278: f005 facc bl 800e814 break; 800927c: e051 b.n 8009322 TimerStop( &RxTimeoutTimer ); 800927e: 4831 ldr r0, [pc, #196] @ (8009344 ) - 8009280: f005 f8bc bl 800e3fc + 8009280: f005 f8d0 bl 800e424 if( SubgRf.RxContinuous == false ) 8009284: 4b2a ldr r3, [pc, #168] @ (8009330 ) 8009286: 785b ldrb r3, [r3, #1] @@ -25392,7 +25392,7 @@ static void RadioIrqProcess( void ) 80092b4: 2201 movs r2, #1 80092b6: 2100 movs r1, #0 80092b8: 2002 movs r0, #2 - 80092ba: f005 fa97 bl 800e7ec + 80092ba: f005 faab bl 800e814 break; 80092be: e02d b.n 800931c MW_LOG( TS_ON, VLEVEL_M, "IRQ_CRC_ERROR\r\n" ); @@ -25400,7 +25400,7 @@ static void RadioIrqProcess( void ) 80092c2: 2201 movs r2, #1 80092c4: 2100 movs r1, #0 80092c6: 2002 movs r0, #2 - 80092c8: f005 fa90 bl 800e7ec + 80092c8: f005 faa4 bl 800e814 if( SubgRf.RxContinuous == false ) 80092cc: 4b18 ldr r3, [pc, #96] @ (8009330 ) 80092ce: 785b ldrb r3, [r3, #1] @@ -25464,16 +25464,16 @@ static void RadioIrqProcess( void ) 8009326: 46bd mov sp, r7 8009328: bdb0 pop {r4, r5, r7, pc} 800932a: bf00 nop - 800932c: 0800f8e8 .word 0x0800f8e8 + 800932c: 0800f910 .word 0x0800f910 8009330: 200002f8 .word 0x200002f8 8009334: 08008cd5 .word 0x08008cd5 8009338: 08008cf9 .word 0x08008cf9 - 800933c: 0800f8f4 .word 0x0800f8f4 - 8009340: 0800f900 .word 0x0800f900 + 800933c: 0800f91c .word 0x0800f91c + 8009340: 0800f928 .word 0x0800f928 8009344: 2000036c .word 0x2000036c 8009348: 200002f4 .word 0x200002f4 - 800934c: 0800f90c .word 0x0800f90c - 8009350: 0800f918 .word 0x0800f918 + 800934c: 0800f934 .word 0x0800f934 + 8009350: 0800f940 .word 0x0800f940 08009354 : @@ -25803,7 +25803,7 @@ static int32_t RadioSetRxGenericConfig( GenericModems_t modem, RxConfigGeneric_t 800955e: 461a mov r2, r3 8009560: f107 0320 add.w r3, r7, #32 8009564: 4618 mov r0, r3 - 8009566: f004 fa43 bl 800d9f0 + 8009566: f004 fa57 bl 800da18 SUBGRF_SetStopRxTimerOnPreambleDetect( ( config->fsk.StopTimerOnPreambleDetect == 0 ) ? false : true ); 800956a: 68bb ldr r3, [r7, #8] 800956c: 681b ldr r3, [r3, #0] @@ -26255,7 +26255,7 @@ static int32_t RadioSetTxGenericConfig( GenericModems_t modem, TxConfigGeneric_t 80098ca: 461a mov r2, r3 80098cc: f107 032c add.w r3, r7, #44 @ 0x2c 80098d0: 4618 mov r0, r3 - 80098d2: f004 f88d bl 800d9f0 + 80098d2: f004 f8a1 bl 800da18 } if( ( config->msk.BitRate == 0 ) ) 80098d6: 68bb ldr r3, [r7, #8] @@ -26505,7 +26505,7 @@ static int32_t RadioSetTxGenericConfig( GenericModems_t modem, TxConfigGeneric_t 8009a4c: 461a mov r2, r3 8009a4e: f107 032c add.w r3, r7, #44 @ 0x2c 8009a52: 4618 mov r0, r3 - 8009a54: f003 ffcc bl 800d9f0 + 8009a54: f003 ffe0 bl 800da18 } SubgRf.ModulationParams.PacketType = PACKET_TYPE_GFSK; 8009a58: 4b40 ldr r3, [pc, #256] @ (8009b5c ) @@ -26991,7 +26991,7 @@ void SUBGRF_Init( DioIrqHandler dioIrq ) // Initialize TCXO control if (1U == RBI_IsTCXO() ) - 8009d3e: f003 fd95 bl 800d86c + 8009d3e: f003 fda9 bl 800d894 8009d42: 4603 mov r3, r0 8009d44: 2b01 cmp r3, #1 8009d46: d10e bne.n 8009d66 @@ -27035,7 +27035,7 @@ void SUBGRF_Init( DioIrqHandler dioIrq ) /* Init RF Switch */ RBI_Init(); - 8009d84: f003 fd56 bl 800d834 + 8009d84: f003 fd6a bl 800d85c OperatingMode = MODE_STDBY_RC; 8009d88: 4b05 ldr r3, [pc, #20] @ (8009da0 ) @@ -27429,7 +27429,7 @@ void SUBGRF_SetSleep( SleepParams_t sleepConfig ) /* switch the antenna OFF by SW */ RBI_ConfigRFSwitch(RBI_SWITCH_OFF); 8009fdc: 2000 movs r0, #0 - 8009fde: f003 fc30 bl 800d842 + 8009fde: f003 fc44 bl 800d86a Radio_SMPS_Set(SMPS_DRIVE_SETTING_DEFAULT); 8009fe2: 2002 movs r0, #2 @@ -27866,7 +27866,7 @@ void SUBGRF_SetRegulatorMode( void ) RadioRegulatorMode_t mode; if ( ( 1UL == RBI_IsDCDC() ) && ( 1UL == DCDC_ENABLE ) ) - 800a256: f003 fb10 bl 800d87a + 800a256: f003 fb24 bl 800d8a2 800a25a: 4603 mov r3, r0 800a25c: 2b01 cmp r3, #1 800a25e: d102 bne.n 800a266 @@ -28415,7 +28415,7 @@ void SUBGRF_SetTxParams( uint8_t paSelect, int8_t power, RadioRampTimes_t rampTi { max_power = RBI_GetRFOMaxPowerConfig(RBI_RFO_LP_MAXPOWER); 800a598: 2000 movs r0, #0 - 800a59a: f003 f975 bl 800d888 + 800a59a: f003 f989 bl 800d8b0 800a59e: 60f8 str r0, [r7, #12] if (power > max_power) 800a5a0: f997 3006 ldrsb.w r3, [r7, #6] @@ -28519,7 +28519,7 @@ void SUBGRF_SetTxParams( uint8_t paSelect, int8_t power, RadioRampTimes_t rampTi /* WORKAROUND END*/ max_power = RBI_GetRFOMaxPowerConfig(RBI_RFO_HP_MAXPOWER); 800a646: 2001 movs r0, #1 - 800a648: f003 f91e bl 800d888 + 800a648: f003 f932 bl 800d8b0 800a64c: 60f8 str r0, [r7, #12] if (power > max_power) 800a64e: f997 3006 ldrsb.w r3, [r7, #6] @@ -29322,7 +29322,7 @@ void SUBGRF_GetPacketStatus( PacketStatus_t *pktStatus ) 800ab26: 2214 movs r2, #20 800ab28: 2100 movs r1, #0 800ab2a: 6878 ldr r0, [r7, #4] - 800ab2c: f002 ff7f bl 800da2e + 800ab2c: f002 ff93 bl 800da56 pktStatus->packetType = PACKET_TYPE_NONE; 800ab30: 687b ldr r3, [r7, #4] 800ab32: 220f movs r2, #15 @@ -29760,7 +29760,7 @@ void SUBGRF_SetSwitch( uint8_t paSelect, RFState_t rxtx ) RBI_ConfigRFSwitch(state); 800ada0: 7bfb ldrb r3, [r7, #15] 800ada2: 4618 mov r0, r3 - 800ada4: f002 fd4d bl 800d842 + 800ada4: f002 fd61 bl 800d86a } 800ada8: bf00 nop 800adaa: 3710 adds r7, #16 @@ -29781,7 +29781,7 @@ uint8_t SUBGRF_SetRfTxPower( int8_t power ) 800adbc: 73fb strb r3, [r7, #15] int32_t TxConfig = RBI_GetTxConfig(); - 800adbe: f002 fd4e bl 800d85e + 800adbe: f002 fd62 bl 800d886 800adc2: 60b8 str r0, [r7, #8] switch (TxConfig) @@ -30101,7 +30101,7 @@ static void Radio_SMPS_Set(uint8_t level) 800af6e: 4603 mov r3, r0 800af70: 71fb strb r3, [r7, #7] if ( 1U == RBI_IsDCDC() ) - 800af72: f002 fc82 bl 800d87a + 800af72: f002 fc96 bl 800d8a2 800af76: 4603 mov r3, r0 800af78: 2b01 cmp r3, #1 800af7a: d112 bne.n 800afa2 @@ -30191,7 +30191,7 @@ uint8_t SUBGRF_GetFskBandwidthRegValue( uint32_t bandwidth ) 800aff2: 46bd mov sp, r7 800aff4: bc80 pop {r7} 800aff6: 4770 bx lr - 800aff8: 08010454 .word 0x08010454 + 800aff8: 0801047c .word 0x0801047c 0800affc : void SUBGRF_GetCFO( uint32_t bitRate, int32_t *cfo) @@ -30404,7 +30404,7 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b15c: 2201 movs r2, #1 800b15e: 2100 movs r1, #0 800b160: 2002 movs r0, #2 - 800b162: f003 fb43 bl 800e7ec + 800b162: f003 fb57 bl 800e814 if( ( TxLongPacketGetNextChunkCb == NULL ) || 800b166: 687b ldr r3, [r7, #4] @@ -30625,7 +30625,7 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b2a0: f897 202b ldrb.w r2, [r7, #43] @ 0x2b 800b2a4: b292 uxth r2, r2 800b2a6: 4618 mov r0, r3 - 800b2a8: f002 fba2 bl 800d9f0 + 800b2a8: f002 fbb6 bl 800da18 if( RFWPacket.Init.CrcEnable == 1 ) 800b2ac: 4b56 ldr r3, [pc, #344] @ (800b408 ) @@ -30662,7 +30662,7 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b2e8: b292 uxth r2, r2 800b2ea: f107 0114 add.w r1, r7, #20 800b2ee: 4618 mov r0, r3 - 800b2f0: f002 fb7e bl 800d9f0 + 800b2f0: f002 fb92 bl 800da18 } /* Init whitening at beginning of the packet*/ RFW_WhiteSetState( &RFWPacket ); @@ -30734,7 +30734,7 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b376: 2201 movs r2, #1 800b378: 2100 movs r1, #0 800b37a: 2002 movs r0, #2 - 800b37c: f003 fa36 bl 800e7ec + 800b37c: f003 fa4a bl 800e814 TimerInit( &RFWPacket.Timer, RFW_TransmitLongPacket_NewTxChunkTimerEvent ); 800b380: 2300 movs r3, #0 800b382: 9300 str r3, [sp, #0] @@ -30742,14 +30742,14 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b386: 2200 movs r2, #0 800b388: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff 800b38c: 4824 ldr r0, [pc, #144] @ (800b420 ) - 800b38e: f002 ff91 bl 800e2b4 + 800b38e: f002 ffa5 bl 800e2dc TimerSetValue( &RFWPacket.Timer, chunk_timeout ); 800b392: 6a39 ldr r1, [r7, #32] 800b394: 4822 ldr r0, [pc, #136] @ (800b420 ) - 800b396: f003 f8a1 bl 800e4dc + 800b396: f003 f8b5 bl 800e504 TimerStart( &RFWPacket.Timer ); 800b39a: 4821 ldr r0, [pc, #132] @ (800b420 ) - 800b39c: f002 ffc0 bl 800e320 + 800b39c: f002 ffd4 bl 800e348 /*Write bit infinite_sequence = 1, required for long packet*/ uint8_t reg = SUBGRF_ReadRegister( SUBGHZ_GPKTCTL1AR ); 800b3a0: f44f 60d7 mov.w r0, #1720 @ 0x6b8 @@ -30769,12 +30769,12 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b3c0: 6cdb ldr r3, [r3, #76] @ 0x4c 800b3c2: 68b9 ldr r1, [r7, #8] 800b3c4: 4618 mov r0, r3 - 800b3c6: f003 f889 bl 800e4dc + 800b3c6: f003 f89d bl 800e504 TimerStart( RFWPacket.RxTimeoutTimer ); 800b3ca: 4b0f ldr r3, [pc, #60] @ (800b408 ) 800b3cc: 6cdb ldr r3, [r3, #76] @ 0x4c 800b3ce: 4618 mov r0, r3 - 800b3d0: f002 ffa6 bl 800e320 + 800b3d0: f002 ffba bl 800e348 else { /* error*/ @@ -30835,10 +30835,10 @@ int32_t RFW_TransmitLongPacket( uint16_t payload_size, uint32_t timeout, 800b404: bd80 pop {r7, pc} 800b406: bf00 nop 800b408: 20000394 .word 0x20000394 - 800b40c: 0800f928 .word 0x0800f928 + 800b40c: 0800f950 .word 0x0800f950 800b410: 48000400 .word 0x48000400 800b414: 200003e8 .word 0x200003e8 - 800b418: 0800f938 .word 0x0800f938 + 800b418: 0800f960 .word 0x0800f960 800b41c: 0800b919 .word 0x0800b919 800b420: 200003b0 .word 0x200003b0 @@ -30934,12 +30934,12 @@ int32_t RFW_ReceiveLongPacket( uint8_t boosted_mode, uint32_t timeout, 800b4a6: 6cdb ldr r3, [r3, #76] @ 0x4c 800b4a8: 68b9 ldr r1, [r7, #8] 800b4aa: 4618 mov r0, r3 - 800b4ac: f003 f816 bl 800e4dc + 800b4ac: f003 f82a bl 800e504 TimerStart( RFWPacket.RxTimeoutTimer ); 800b4b0: 4b0d ldr r3, [pc, #52] @ (800b4e8 ) 800b4b2: 6cdb ldr r3, [r3, #76] @ 0x4c 800b4b4: 4618 mov r0, r3 - 800b4b6: f002 ff33 bl 800e320 + 800b4b6: f002 ff47 bl 800e348 } DBG_GPIO_RADIO_RX( SET ); 800b4ba: f44f 5180 mov.w r1, #4096 @ 0x1000 @@ -31184,7 +31184,7 @@ int32_t RFW_Init( ConfigGeneric_t *config, RadioEvents_t *RadioEvents, TimerEven 800b600: 2200 movs r2, #0 800b602: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff 800b606: 4806 ldr r0, [pc, #24] @ (800b620 ) - 800b608: f002 fe54 bl 800e2b4 + 800b608: f002 fe68 bl 800e2dc return 0; 800b60c: 2300 movs r3, #0 #else @@ -31315,7 +31315,7 @@ int32_t RFW_TransmitInit( uint8_t *inOutBuffer, uint8_t size, uint8_t *outSize ) 800b6ac: 2201 movs r2, #1 800b6ae: 2100 movs r1, #0 800b6b0: 2002 movs r0, #2 - 800b6b2: f003 f89b bl 800e7ec + 800b6b2: f003 f8af bl 800e814 status = -1; 800b6b6: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff 800b6ba: 617b str r3, [r7, #20] @@ -31334,7 +31334,7 @@ int32_t RFW_TransmitInit( uint8_t *inOutBuffer, uint8_t size, uint8_t *outSize ) 800b6ca: b292 uxth r2, r2 800b6cc: 68f9 ldr r1, [r7, #12] 800b6ce: 4618 mov r0, r3 - 800b6d0: f002 f98e bl 800d9f0 + 800b6d0: f002 f9a2 bl 800da18 /* Calculate the crc on */ /* Payload Size without the packet length field nor the CRC */ /* Prepend payload size before Payload*/ @@ -31394,7 +31394,7 @@ int32_t RFW_TransmitInit( uint8_t *inOutBuffer, uint8_t size, uint8_t *outSize ) 800b722: 78d2 ldrb r2, [r2, #3] 800b724: f107 0110 add.w r1, r7, #16 800b728: 4618 mov r0, r3 - 800b72a: f002 f961 bl 800d9f0 + 800b72a: f002 f975 bl 800da18 } /*init whitening at beginning of the packet*/ RFW_WhiteSetState( &RFWPacket ); @@ -31433,7 +31433,7 @@ int32_t RFW_TransmitInit( uint8_t *inOutBuffer, uint8_t size, uint8_t *outSize ) 800b766: 461a mov r2, r3 800b768: 4908 ldr r1, [pc, #32] @ (800b78c ) 800b76a: 68f8 ldr r0, [r7, #12] - 800b76c: f002 f940 bl 800d9f0 + 800b76c: f002 f954 bl 800da18 RFWPacket.LongPacketModeEnable = 0; 800b770: 4b04 ldr r3, [pc, #16] @ (800b784 ) @@ -31453,7 +31453,7 @@ int32_t RFW_TransmitInit( uint8_t *inOutBuffer, uint8_t size, uint8_t *outSize ) 800b780: 46bd mov sp, r7 800b782: bd80 pop {r7, pc} 800b784: 20000394 .word 0x20000394 - 800b788: 0800f948 .word 0x0800f948 + 800b788: 0800f970 .word 0x0800f970 800b78c: 200003e8 .word 0x200003e8 0800b790 : @@ -31628,7 +31628,7 @@ void RFW_ReceivePayload( void ) 800b880: 2201 movs r2, #1 800b882: 2100 movs r1, #0 800b884: 2002 movs r0, #2 - 800b886: f002 ffb1 bl 800e7ec + 800b886: f002 ffc5 bl 800e814 800b88a: e01c b.n 800b8c6 } @@ -31671,10 +31671,10 @@ void RFW_ReceivePayload( void ) TimerSetValue( &RFWPacket.Timer, timeout ); 800b8c6: 68f9 ldr r1, [r7, #12] 800b8c8: 480a ldr r0, [pc, #40] @ (800b8f4 ) - 800b8ca: f002 fe07 bl 800e4dc + 800b8ca: f002 fe1b bl 800e504 TimerStart( &RFWPacket.Timer ); 800b8ce: 4809 ldr r0, [pc, #36] @ (800b8f4 ) - 800b8d0: f002 fd26 bl 800e320 + 800b8d0: f002 fd3a bl 800e348 800b8d4: e006 b.n 800b8e4 } else @@ -31696,7 +31696,7 @@ void RFW_ReceivePayload( void ) 800b8e8: bd80 pop {r7, pc} 800b8ea: bf00 nop 800b8ec: 20000394 .word 0x20000394 - 800b8f0: 0800f960 .word 0x0800f960 + 800b8f0: 0800f988 .word 0x0800f988 800b8f4: 200003b0 .word 0x200003b0 0800b8f8 : @@ -31819,7 +31819,7 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) 800b9a4: 2201 movs r2, #1 800b9a6: 2100 movs r1, #0 800b9a8: 2002 movs r0, #2 - 800b9aa: f002 ff1f bl 800e7ec + 800b9aa: f002 ff33 bl 800e814 read_ptr, write_ptr, bytes_sent, bytes_loaded, RFWPacket.LongPacketRemainingBytes ); if( RFWPacket.LongPacketRemainingBytes > 256 ) 800b9ae: 4b4e ldr r3, [pc, #312] @ (800bae8 ) @@ -31875,10 +31875,10 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) TimerSetValue( &RFWPacket.Timer, timeout ); 800b9fc: 68f9 ldr r1, [r7, #12] 800b9fe: 483c ldr r0, [pc, #240] @ (800baf0 ) - 800ba00: f002 fd6c bl 800e4dc + 800ba00: f002 fd80 bl 800e504 TimerStart( &RFWPacket.Timer ); 800ba04: 483a ldr r0, [pc, #232] @ (800baf0 ) - 800ba06: f002 fc8b bl 800e320 + 800ba06: f002 fc9f bl 800e348 800ba0a: e015 b.n 800ba38 } else @@ -31943,7 +31943,7 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) 800ba58: b29b uxth r3, r3 800ba5a: 461a mov r2, r3 800ba5c: 4825 ldr r0, [pc, #148] @ (800baf4 ) - 800ba5e: f001 ffc7 bl 800d9f0 + 800ba5e: f001 ffdb bl 800da18 if( RFWPacket.Init.CrcEnable == 1 ) 800ba62: 4b21 ldr r3, [pc, #132] @ (800bae8 ) 800ba64: 789b ldrb r3, [r3, #2] @@ -31971,7 +31971,7 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) 800ba88: b292 uxth r2, r2 800ba8a: 1d39 adds r1, r7, #4 800ba8c: 4618 mov r0, r3 - 800ba8e: f001 ffaf bl 800d9f0 + 800ba8e: f001 ffc3 bl 800da18 } /* Run the whitening calculation on payload length, payload and crc*/ RFW_WhiteRun( &RFWPacket, ChunkBuffer, chunk_size ); @@ -32015,7 +32015,7 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) 800bad6: 2201 movs r2, #1 800bad8: 2100 movs r1, #0 800bada: 2002 movs r0, #2 - 800badc: f002 fe86 bl 800e7ec + 800badc: f002 fe9a bl 800e814 ( uint8_t )( chunk_size + crc_size + write_ptr ) ); } 800bae0: bf00 nop @@ -32023,10 +32023,10 @@ static void RFW_TransmitLongPacket_TxChunkProcess( void ) 800bae4: 46bd mov sp, r7 800bae6: bd90 pop {r4, r7, pc} 800bae8: 20000394 .word 0x20000394 - 800baec: 0800f978 .word 0x0800f978 + 800baec: 0800f9a0 .word 0x0800f9a0 800baf0: 200003b0 .word 0x200003b0 800baf4: 200003e8 .word 0x200003e8 - 800baf8: 0800f9cc .word 0x0800f9cc + 800baf8: 0800f9f4 .word 0x0800f9f4 0800bafc : #endif /* RFW_LONGPACKET_ENABLE == 1 */ @@ -32403,7 +32403,7 @@ static int32_t RFW_PollRxBytes( uint32_t bytes ) 800bd0c: af00 add r7, sp, #0 800bd0e: 6078 str r0, [r7, #4] uint32_t now = TimerGetCurrentTime( ); - 800bd10: f002 fc8e bl 800e630 + 800bd10: f002 fca2 bl 800e658 800bd14: 6138 str r0, [r7, #16] uint8_t reg_buff_ptr_ref = SUBGRF_ReadRegister( SUBGHZ_RXADRPTR ); 800bd16: f640 0003 movw r0, #2051 @ 0x803 @@ -32437,7 +32437,7 @@ static int32_t RFW_PollRxBytes( uint32_t bytes ) 800bd4e: 75fb strb r3, [r7, #23] if( TimerGetElapsedTime( now ) > timeout ) 800bd50: 6938 ldr r0, [r7, #16] - 800bd52: f002 fc7f bl 800e654 + 800bd52: f002 fc93 bl 800e67c 800bd56: 4602 mov r2, r0 800bd58: 68bb ldr r3, [r7, #8] 800bd5a: 4293 cmp r3, r2 @@ -32561,7 +32561,7 @@ static int32_t RFW_GetPacketLength( uint16_t *PayloadLength ) 800be0a: 2201 movs r2, #1 800be0c: 2100 movs r1, #0 800be0e: 2002 movs r0, #2 - 800be10: f002 fcec bl 800e7ec + 800be10: f002 fd00 bl 800e814 return 0; 800be14: 2300 movs r3, #0 } @@ -32572,7 +32572,7 @@ static int32_t RFW_GetPacketLength( uint16_t *PayloadLength ) 800be1e: bf00 nop 800be20: 20000394 .word 0x20000394 800be24: 200003e8 .word 0x200003e8 - 800be28: 0800f9f4 .word 0x0800f9f4 + 800be28: 0800fa1c .word 0x0800fa1c 0800be2c : @@ -32639,7 +32639,7 @@ static void RFW_GetPayloadProcess( void ) 800be8a: 2201 movs r2, #1 800be8c: 2100 movs r1, #0 800be8e: 2002 movs r0, #2 - 800be90: f002 fcac bl 800e7ec + 800be90: f002 fcc0 bl 800e814 RFW_MW_LOG( TS_ON, VLEVEL_M, "RxAddrPtr=0x%02X,\r\n", read_ptr ); 800be94: 78fb ldrb r3, [r7, #3] 800be96: 9300 str r3, [sp, #0] @@ -32647,7 +32647,7 @@ static void RFW_GetPayloadProcess( void ) 800be9a: 2201 movs r2, #1 800be9c: 2100 movs r1, #0 800be9e: 2002 movs r0, #2 - 800bea0: f002 fca4 bl 800e7ec + 800bea0: f002 fcb8 bl 800e814 RFW_MW_LOG( TS_ON, VLEVEL_M, "offset= %d, size=%d, remaining=%d,\r\n", RFWPacket.RadioBufferOffset, size, 800bea4: 4b6e ldr r3, [pc, #440] @ (800c060 ) 800bea6: f893 3036 ldrb.w r3, [r3, #54] @ 0x36 @@ -32662,7 +32662,7 @@ static void RFW_GetPayloadProcess( void ) 800beba: 2201 movs r2, #1 800bebc: 2100 movs r1, #0 800bebe: 2002 movs r0, #2 - 800bec0: f002 fc94 bl 800e7ec + 800bec0: f002 fca8 bl 800e814 RFWPacket.LongPacketRemainingBytes ); /*update pld length so that not reached*/ SUBGRF_WriteRegister( SUBGHZ_GRTXPLDLEN, read_ptr - 1 ); @@ -32758,7 +32758,7 @@ static void RFW_GetPayloadProcess( void ) 800bf58: b292 uxth r2, r2 800bf5a: 4945 ldr r1, [pc, #276] @ (800c070 ) 800bf5c: 4618 mov r0, r3 - 800bf5e: f001 fd47 bl 800d9f0 + 800bf5e: f001 fd5b bl 800da18 RFWPacket.RxPayloadOffset += size; 800bf62: 4b3f ldr r3, [pc, #252] @ (800c060 ) 800bf64: 8f1a ldrh r2, [r3, #56] @ 0x38 @@ -32854,10 +32854,10 @@ static void RFW_GetPayloadProcess( void ) TimerSetValue( &RFWPacket.Timer, Timeout ); 800bff6: 6879 ldr r1, [r7, #4] 800bff8: 481f ldr r0, [pc, #124] @ (800c078 ) - 800bffa: f002 fa6f bl 800e4dc + 800bffa: f002 fa83 bl 800e504 TimerStart( &RFWPacket.Timer ); 800bffe: 481e ldr r0, [pc, #120] @ (800c078 ) - 800c000: f002 f98e bl 800e320 + 800c000: f002 f9a2 bl 800e348 800c004: e028 b.n 800c058 } else @@ -32893,7 +32893,7 @@ static void RFW_GetPayloadProcess( void ) 800c032: 2201 movs r2, #1 800c034: 2100 movs r1, #0 800c036: 2002 movs r0, #2 - 800c038: f002 fbd8 bl 800e7ec + 800c038: f002 fbec bl 800e814 RFWPacket.LongPacketRemainingBytes ); size = RFWPacket.LongPacketRemainingBytes; 800c03c: 4b08 ldr r3, [pc, #32] @ (800c060 ) @@ -32919,13 +32919,13 @@ static void RFW_GetPayloadProcess( void ) 800c05c: bd80 pop {r7, pc} 800c05e: bf00 nop 800c060: 20000394 .word 0x20000394 - 800c064: 0800fa08 .word 0x0800fa08 - 800c068: 0800fa20 .word 0x0800fa20 - 800c06c: 0800fa34 .word 0x0800fa34 + 800c064: 0800fa30 .word 0x0800fa30 + 800c068: 0800fa48 .word 0x0800fa48 + 800c06c: 0800fa5c .word 0x0800fa5c 800c070: 200003e8 .word 0x200003e8 800c074: 200004e8 .word 0x200004e8 800c078: 200003b0 .word 0x200003b0 - 800c07c: 0800fa5c .word 0x0800fa5c + 800c07c: 0800fa84 .word 0x0800fa84 0800c080 : @@ -33024,7 +33024,7 @@ static void RFW_GetPayload( uint8_t Offset, uint8_t Length ) 800c112: b29b uxth r3, r3 800c114: 461a mov r2, r3 800c116: 493b ldr r1, [pc, #236] @ (800c204 ) - 800c118: f001 fc6a bl 800d9f0 + 800c118: f001 fc7e bl 800da18 RFWPacket.RxPayloadOffset += Length - RFWPacket.Init.CrcFieldSize; 800c11c: 4b3a ldr r3, [pc, #232] @ (800c208 ) 800c11e: 8f1a ldrh r2, [r3, #56] @ 0x38 @@ -33056,7 +33056,7 @@ static void RFW_GetPayload( uint8_t Offset, uint8_t Length ) 800c140: 4b31 ldr r3, [pc, #196] @ (800c208 ) 800c142: 6cdb ldr r3, [r3, #76] @ 0x4c 800c144: 4618 mov r0, r3 - 800c146: f002 f959 bl 800e3fc + 800c146: f002 f96d bl 800e424 /* CRC check*/ RFW_MW_LOG( TS_ON, VLEVEL_M, "crc_result= 0x%02X%02X, crc_payload=0x%02X%02X\r\n", crc_result[0], crc_result[1], 800c14a: 7b3b ldrb r3, [r7, #12] @@ -33080,7 +33080,7 @@ static void RFW_GetPayload( uint8_t Offset, uint8_t Length ) 800c16e: 2201 movs r2, #1 800c170: 2100 movs r1, #0 800c172: 2002 movs r0, #2 - 800c174: f002 fb3a bl 800e7ec + 800c174: f002 fb4e bl 800e814 ChunkBuffer[Length - 2], ChunkBuffer[Length - 1] ); if( ( ( crc_result[0] == ChunkBuffer[Length - 2] ) && 800c178: 7b3a ldrb r2, [r7, #12] @@ -33173,7 +33173,7 @@ static void RFW_GetPayload( uint8_t Offset, uint8_t Length ) 800c204: 200003e8 .word 0x200003e8 800c208: 20000394 .word 0x20000394 800c20c: 200004e8 .word 0x200004e8 - 800c210: 0800fa8c .word 0x0800fa8c + 800c210: 0800fab4 .word 0x0800fab4 800c214: 10624dd3 .word 0x10624dd3 800c218: 48000400 .word 0x48000400 @@ -33201,10 +33201,10 @@ void MX_SubGHz_Phy_Process(void) 800c22c: b580 push {r7, lr} 800c22e: af00 add r7, sp, #0 SubghzApp_Process(); - 800c230: f000 f858 bl 800c2e4 + 800c230: f000 f896 bl 800c360 UTIL_SEQ_Run(UTIL_SEQ_DEFAULT); 800c234: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800c238: f001 feec bl 800e014 + 800c238: f001 ff00 bl 800e03c } 800c23c: bf00 nop 800c23e: bd80 pop {r7, pc} @@ -33217,8498 +33217,8509 @@ static char *App_SkipSpaces(char *s); void SubghzApp_Init(void) { 800c240: b580 push {r7, lr} - 800c242: af00 add r7, sp, #0 + 800c242: b082 sub sp, #8 + 800c244: af02 add r7, sp, #8 if (!Config_Load(&g_cfg)) - 800c244: 481b ldr r0, [pc, #108] @ (800c2b4 ) - 800c246: f001 fa51 bl 800d6ec - 800c24a: 4603 mov r3, r0 - 800c24c: f083 0301 eor.w r3, r3, #1 - 800c250: b2db uxtb r3, r3 - 800c252: 2b00 cmp r3, #0 - 800c254: d002 beq.n 800c25c + 800c246: 4833 ldr r0, [pc, #204] @ (800c314 ) + 800c248: f001 fa64 bl 800d714 + 800c24c: 4603 mov r3, r0 + 800c24e: f083 0301 eor.w r3, r3, #1 + 800c252: b2db uxtb r3, r3 + 800c254: 2b00 cmp r3, #0 + 800c256: d002 beq.n 800c25e { Config_LoadDefaults(&g_cfg); - 800c256: 4817 ldr r0, [pc, #92] @ (800c2b4 ) - 800c258: f001 f9f4 bl 800d644 + 800c258: 482e ldr r0, [pc, #184] @ (800c314 ) + 800c25a: f001 fa07 bl 800d66c } RadioEvents.TxDone = OnTxDone; - 800c25c: 4b16 ldr r3, [pc, #88] @ (800c2b8 ) - 800c25e: 4a17 ldr r2, [pc, #92] @ (800c2bc ) - 800c260: 601a str r2, [r3, #0] + 800c25e: 4b2e ldr r3, [pc, #184] @ (800c318 ) + 800c260: 4a2e ldr r2, [pc, #184] @ (800c31c ) + 800c262: 601a str r2, [r3, #0] RadioEvents.RxDone = OnRxDone; - 800c262: 4b15 ldr r3, [pc, #84] @ (800c2b8 ) - 800c264: 4a16 ldr r2, [pc, #88] @ (800c2c0 ) - 800c266: 609a str r2, [r3, #8] + 800c264: 4b2c ldr r3, [pc, #176] @ (800c318 ) + 800c266: 4a2e ldr r2, [pc, #184] @ (800c320 ) + 800c268: 609a str r2, [r3, #8] RadioEvents.TxTimeout = OnTxTimeout; - 800c268: 4b13 ldr r3, [pc, #76] @ (800c2b8 ) - 800c26a: 4a16 ldr r2, [pc, #88] @ (800c2c4 ) - 800c26c: 605a str r2, [r3, #4] + 800c26a: 4b2b ldr r3, [pc, #172] @ (800c318 ) + 800c26c: 4a2d ldr r2, [pc, #180] @ (800c324 ) + 800c26e: 605a str r2, [r3, #4] RadioEvents.RxTimeout = OnRxTimeout; - 800c26e: 4b12 ldr r3, [pc, #72] @ (800c2b8 ) - 800c270: 4a15 ldr r2, [pc, #84] @ (800c2c8 ) - 800c272: 60da str r2, [r3, #12] + 800c270: 4b29 ldr r3, [pc, #164] @ (800c318 ) + 800c272: 4a2d ldr r2, [pc, #180] @ (800c328 ) + 800c274: 60da str r2, [r3, #12] RadioEvents.RxError = OnRxError; - 800c274: 4b10 ldr r3, [pc, #64] @ (800c2b8 ) - 800c276: 4a15 ldr r2, [pc, #84] @ (800c2cc ) - 800c278: 611a str r2, [r3, #16] + 800c276: 4b28 ldr r3, [pc, #160] @ (800c318 ) + 800c278: 4a2c ldr r2, [pc, #176] @ (800c32c ) + 800c27a: 611a str r2, [r3, #16] Radio.Init(&RadioEvents); - 800c27a: 4b15 ldr r3, [pc, #84] @ (800c2d0 ) - 800c27c: 681b ldr r3, [r3, #0] - 800c27e: 480e ldr r0, [pc, #56] @ (800c2b8 ) - 800c280: 4798 blx r3 + 800c27c: 4b2c ldr r3, [pc, #176] @ (800c330 ) + 800c27e: 681b ldr r3, [r3, #0] + 800c280: 4825 ldr r0, [pc, #148] @ (800c318 ) + 800c282: 4798 blx r3 + + TimerInit(&g_led_tx_timer, App_LedTxOff); + 800c284: 2300 movs r3, #0 + 800c286: 9300 str r3, [sp, #0] + 800c288: 4b2a ldr r3, [pc, #168] @ (800c334 ) + 800c28a: 2200 movs r2, #0 + 800c28c: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 800c290: 4829 ldr r0, [pc, #164] @ (800c338 ) + 800c292: f002 f823 bl 800e2dc + TimerInit(&g_led_rx_timer, App_LedRxOff); + 800c296: 2300 movs r3, #0 + 800c298: 9300 str r3, [sp, #0] + 800c29a: 4b28 ldr r3, [pc, #160] @ (800c33c ) + 800c29c: 2200 movs r2, #0 + 800c29e: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 800c2a2: 4827 ldr r0, [pc, #156] @ (800c340 ) + 800c2a4: f002 f81a bl 800e2dc + TimerInit(&g_led_err_timer, App_LedErrOff); + 800c2a8: 2300 movs r3, #0 + 800c2aa: 9300 str r3, [sp, #0] + 800c2ac: 4b25 ldr r3, [pc, #148] @ (800c344 ) + 800c2ae: 2200 movs r2, #0 + 800c2b0: f04f 31ff mov.w r1, #4294967295 @ 0xffffffff + 800c2b4: 4824 ldr r0, [pc, #144] @ (800c348 ) + 800c2b6: f002 f811 bl 800e2dc App_RadioApplyConfig(); - 800c282: f000 f9a7 bl 800c5d4 + 800c2ba: f000 f9c7 bl 800c64c App_ReconfigureUart(g_cfg.uart_baudrate); - 800c286: 4b0b ldr r3, [pc, #44] @ (800c2b4 ) - 800c288: 69db ldr r3, [r3, #28] - 800c28a: 4618 mov r0, r3 - 800c28c: f001 f808 bl 800d2a0 + 800c2be: 4b15 ldr r3, [pc, #84] @ (800c314 ) + 800c2c0: 69db ldr r3, [r3, #28] + 800c2c2: 4618 mov r0, r3 + 800c2c4: f001 f828 bl 800d318 App_RadioEnterRx(); - 800c290: f000 fa54 bl 800c73c + 800c2c8: f000 fa74 bl 800c7b4 + + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + 800c2cc: 2200 movs r2, #0 + 800c2ce: f44f 4100 mov.w r1, #32768 @ 0x8000 + 800c2d2: 481e ldr r0, [pc, #120] @ (800c34c ) + 800c2d4: f7f6 fcf8 bl 8002cc8 + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); + 800c2d8: 2200 movs r2, #0 + 800c2da: f44f 7100 mov.w r1, #512 @ 0x200 + 800c2de: 481b ldr r0, [pc, #108] @ (800c34c ) + 800c2e0: f7f6 fcf2 bl 8002cc8 + HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); + 800c2e4: 2200 movs r2, #0 + 800c2e6: f44f 6100 mov.w r1, #2048 @ 0x800 + 800c2ea: 4818 ldr r0, [pc, #96] @ (800c34c ) + 800c2ec: f7f6 fcec bl 8002cc8 g_uart_last_data_tick = HAL_GetTick(); - 800c294: f7f4 fcd8 bl 8000c48 - 800c298: 4603 mov r3, r0 - 800c29a: 4a0e ldr r2, [pc, #56] @ (800c2d4 ) - 800c29c: 6013 str r3, [r2, #0] + 800c2f0: f7f4 fcaa bl 8000c48 + 800c2f4: 4603 mov r3, r0 + 800c2f6: 4a16 ldr r2, [pc, #88] @ (800c350 ) + 800c2f8: 6013 str r3, [r2, #0] (void)vcom_ReceiveInit(UartRxByteCallback); - 800c29e: 480e ldr r0, [pc, #56] @ (800c2d8 ) - 800c2a0: f7f5 f984 bl 80015ac + 800c2fa: 4816 ldr r0, [pc, #88] @ (800c354 ) + 800c2fc: f7f5 f956 bl 80015ac App_Printf("\r\nSTM32WL UART<->SUBGHZ bridge started\r\n"); - 800c2a4: 480d ldr r0, [pc, #52] @ (800c2dc ) - 800c2a6: f000 ffb5 bl 800d214 + 800c300: 4815 ldr r0, [pc, #84] @ (800c358 ) + 800c302: f000 ffc3 bl 800d28c App_Printf("DATA mode, escape sequence: silence 800 ms + +++ + silence 800 ms\r\n"); - 800c2aa: 480d ldr r0, [pc, #52] @ (800c2e0 ) - 800c2ac: f000 ffb2 bl 800d214 + 800c306: 4815 ldr r0, [pc, #84] @ (800c35c ) + 800c308: f000 ffc0 bl 800d28c } - 800c2b0: bf00 nop - 800c2b2: bd80 pop {r7, pc} - 800c2b4: 20000604 .word 0x20000604 - 800c2b8: 200005e8 .word 0x200005e8 - 800c2bc: 0800d581 .word 0x0800d581 - 800c2c0: 0800d599 .word 0x0800d599 - 800c2c4: 0800d5fd .word 0x0800d5fd - 800c2c8: 0800d615 .word 0x0800d615 - 800c2cc: 0800d62d .word 0x0800d62d - 800c2d0: 080103c4 .word 0x080103c4 - 800c2d4: 20000b7c .word 0x20000b7c - 800c2d8: 0800c9b9 .word 0x0800c9b9 - 800c2dc: 0800fac0 .word 0x0800fac0 - 800c2e0: 0800faec .word 0x0800faec + 800c30c: bf00 nop + 800c30e: 46bd mov sp, r7 + 800c310: bd80 pop {r7, pc} + 800c312: bf00 nop + 800c314: 20000604 .word 0x20000604 + 800c318: 200005e8 .word 0x200005e8 + 800c31c: 0800d549 .word 0x0800d549 + 800c320: 0800d5c1 .word 0x0800d5c1 + 800c324: 0800d625 .word 0x0800d625 + 800c328: 0800d63d .word 0x0800d63d + 800c32c: 0800d655 .word 0x0800d655 + 800c330: 080103ec .word 0x080103ec + 800c334: 0800d561 .word 0x0800d561 + 800c338: 20000630 .word 0x20000630 + 800c33c: 0800d581 .word 0x0800d581 + 800c340: 20000648 .word 0x20000648 + 800c344: 0800d5a1 .word 0x0800d5a1 + 800c348: 20000660 .word 0x20000660 + 800c34c: 48000400 .word 0x48000400 + 800c350: 20000bb4 .word 0x20000bb4 + 800c354: 0800ca31 .word 0x0800ca31 + 800c358: 0800fae8 .word 0x0800fae8 + 800c35c: 0800fb14 .word 0x0800fb14 -0800c2e4 : +0800c360 : void SubghzApp_Process(void) { - 800c2e4: b580 push {r7, lr} - 800c2e6: af00 add r7, sp, #0 + 800c360: b580 push {r7, lr} + 800c362: af00 add r7, sp, #0 App_ProcessEscape(); - 800c2e8: f000 f8ce bl 800c488 + 800c364: f000 f8cc bl 800c500 App_ProcessUartPacketizer(); - 800c2ec: f000 f8a0 bl 800c430 + 800c368: f000 f89e bl 800c4a8 App_ProcessRadioEvents(); - 800c2f0: f000 f806 bl 800c300 + 800c36c: f000 f804 bl 800c378 App_StartNextTxIfPossible(); - 800c2f4: f000 f918 bl 800c528 - App_ProcessLeds(); - 800c2f8: f001 f8f0 bl 800d4dc + 800c370: f000 f916 bl 800c5a0 } - 800c2fc: bf00 nop - 800c2fe: bd80 pop {r7, pc} + 800c374: bf00 nop + 800c376: bd80 pop {r7, pc} -0800c300 : +0800c378 : static void App_ProcessRadioEvents(void) { - 800c300: b580 push {r7, lr} - 800c302: af00 add r7, sp, #0 + 800c378: b580 push {r7, lr} + 800c37a: af00 add r7, sp, #0 if (g_radio_tx_done != 0U) - 800c304: 4b3b ldr r3, [pc, #236] @ (800c3f4 ) - 800c306: 781b ldrb r3, [r3, #0] - 800c308: b2db uxtb r3, r3 - 800c30a: 2b00 cmp r3, #0 - 800c30c: d00f beq.n 800c32e + 800c37c: 4b3b ldr r3, [pc, #236] @ (800c46c ) + 800c37e: 781b ldrb r3, [r3, #0] + 800c380: b2db uxtb r3, r3 + 800c382: 2b00 cmp r3, #0 + 800c384: d00f beq.n 800c3a6 { g_radio_tx_done = 0U; - 800c30e: 4b39 ldr r3, [pc, #228] @ (800c3f4 ) - 800c310: 2200 movs r2, #0 - 800c312: 701a strb r2, [r3, #0] + 800c386: 4b39 ldr r3, [pc, #228] @ (800c46c ) + 800c388: 2200 movs r2, #0 + 800c38a: 701a strb r2, [r3, #0] g_radio_busy = 0U; - 800c314: 4b38 ldr r3, [pc, #224] @ (800c3f8 ) - 800c316: 2200 movs r2, #0 - 800c318: 701a strb r2, [r3, #0] + 800c38c: 4b38 ldr r3, [pc, #224] @ (800c470 ) + 800c38e: 2200 movs r2, #0 + 800c390: 701a strb r2, [r3, #0] g_stat_uart_packets_tx++; - 800c31a: 4b38 ldr r3, [pc, #224] @ (800c3fc ) - 800c31c: 681b ldr r3, [r3, #0] - 800c31e: 3301 adds r3, #1 - 800c320: 4a36 ldr r2, [pc, #216] @ (800c3fc ) - 800c322: 6013 str r3, [r2, #0] + 800c392: 4b38 ldr r3, [pc, #224] @ (800c474 ) + 800c394: 681b ldr r3, [r3, #0] + 800c396: 3301 adds r3, #1 + 800c398: 4a36 ldr r2, [pc, #216] @ (800c474 ) + 800c39a: 6013 str r3, [r2, #0] App_QueuePop(); - 800c324: f000 fb2a bl 800c97c + 800c39c: f000 fb2a bl 800c9f4 g_radio_needs_rx_restart = 1U; - 800c328: 4b35 ldr r3, [pc, #212] @ (800c400 ) - 800c32a: 2201 movs r2, #1 - 800c32c: 701a strb r2, [r3, #0] + 800c3a0: 4b35 ldr r3, [pc, #212] @ (800c478 ) + 800c3a2: 2201 movs r2, #1 + 800c3a4: 701a strb r2, [r3, #0] } if (g_radio_tx_timeout != 0U) - 800c32e: 4b35 ldr r3, [pc, #212] @ (800c404 ) - 800c330: 781b ldrb r3, [r3, #0] - 800c332: b2db uxtb r3, r3 - 800c334: 2b00 cmp r3, #0 - 800c336: d00f beq.n 800c358 + 800c3a6: 4b35 ldr r3, [pc, #212] @ (800c47c ) + 800c3a8: 781b ldrb r3, [r3, #0] + 800c3aa: b2db uxtb r3, r3 + 800c3ac: 2b00 cmp r3, #0 + 800c3ae: d00f beq.n 800c3d0 { g_radio_tx_timeout = 0U; - 800c338: 4b32 ldr r3, [pc, #200] @ (800c404 ) - 800c33a: 2200 movs r2, #0 - 800c33c: 701a strb r2, [r3, #0] + 800c3b0: 4b32 ldr r3, [pc, #200] @ (800c47c ) + 800c3b2: 2200 movs r2, #0 + 800c3b4: 701a strb r2, [r3, #0] g_radio_busy = 0U; - 800c33e: 4b2e ldr r3, [pc, #184] @ (800c3f8 ) - 800c340: 2200 movs r2, #0 - 800c342: 701a strb r2, [r3, #0] + 800c3b6: 4b2e ldr r3, [pc, #184] @ (800c470 ) + 800c3b8: 2200 movs r2, #0 + 800c3ba: 701a strb r2, [r3, #0] App_LedErrPulse(); - 800c344: f001 f8b0 bl 800d4a8 + 800c3bc: f001 f8ac bl 800d518 App_QueuePop(); - 800c348: f000 fb18 bl 800c97c + 800c3c0: f000 fb18 bl 800c9f4 App_Printf("\r\n[WARN] radio tx timeout\r\n"); - 800c34c: 482e ldr r0, [pc, #184] @ (800c408 ) - 800c34e: f000 ff61 bl 800d214 + 800c3c4: 482e ldr r0, [pc, #184] @ (800c480 ) + 800c3c6: f000 ff61 bl 800d28c g_radio_needs_rx_restart = 1U; - 800c352: 4b2b ldr r3, [pc, #172] @ (800c400 ) - 800c354: 2201 movs r2, #1 - 800c356: 701a strb r2, [r3, #0] + 800c3ca: 4b2b ldr r3, [pc, #172] @ (800c478 ) + 800c3cc: 2201 movs r2, #1 + 800c3ce: 701a strb r2, [r3, #0] } if (g_radio_rx_done != 0U) - 800c358: 4b2c ldr r3, [pc, #176] @ (800c40c ) - 800c35a: 781b ldrb r3, [r3, #0] - 800c35c: b2db uxtb r3, r3 - 800c35e: 2b00 cmp r3, #0 - 800c360: d01e beq.n 800c3a0 + 800c3d0: 4b2c ldr r3, [pc, #176] @ (800c484 ) + 800c3d2: 781b ldrb r3, [r3, #0] + 800c3d4: b2db uxtb r3, r3 + 800c3d6: 2b00 cmp r3, #0 + 800c3d8: d01e beq.n 800c418 { g_radio_rx_done = 0U; - 800c362: 4b2a ldr r3, [pc, #168] @ (800c40c ) - 800c364: 2200 movs r2, #0 - 800c366: 701a strb r2, [r3, #0] + 800c3da: 4b2a ldr r3, [pc, #168] @ (800c484 ) + 800c3dc: 2200 movs r2, #0 + 800c3de: 701a strb r2, [r3, #0] App_LedRxPulse(); - 800c368: f001 f884 bl 800d474 + 800c3e0: f001 f882 bl 800d4e8 g_stat_radio_packets_rx++; - 800c36c: 4b28 ldr r3, [pc, #160] @ (800c410 ) - 800c36e: 681b ldr r3, [r3, #0] - 800c370: 3301 adds r3, #1 - 800c372: 4a27 ldr r2, [pc, #156] @ (800c410 ) - 800c374: 6013 str r3, [r2, #0] + 800c3e4: 4b28 ldr r3, [pc, #160] @ (800c488 ) + 800c3e6: 681b ldr r3, [r3, #0] + 800c3e8: 3301 adds r3, #1 + 800c3ea: 4a27 ldr r2, [pc, #156] @ (800c488 ) + 800c3ec: 6013 str r3, [r2, #0] g_stat_radio_bytes_rx += g_rx_payload_len; - 800c376: 4b27 ldr r3, [pc, #156] @ (800c414 ) - 800c378: 881b ldrh r3, [r3, #0] - 800c37a: 461a mov r2, r3 - 800c37c: 4b26 ldr r3, [pc, #152] @ (800c418 ) - 800c37e: 681b ldr r3, [r3, #0] - 800c380: 4413 add r3, r2 - 800c382: 4a25 ldr r2, [pc, #148] @ (800c418 ) - 800c384: 6013 str r3, [r2, #0] + 800c3ee: 4b27 ldr r3, [pc, #156] @ (800c48c ) + 800c3f0: 881b ldrh r3, [r3, #0] + 800c3f2: 461a mov r2, r3 + 800c3f4: 4b26 ldr r3, [pc, #152] @ (800c490 ) + 800c3f6: 681b ldr r3, [r3, #0] + 800c3f8: 4413 add r3, r2 + 800c3fa: 4a25 ldr r2, [pc, #148] @ (800c490 ) + 800c3fc: 6013 str r3, [r2, #0] if (g_mode == APP_MODE_DATA) - 800c386: 4b25 ldr r3, [pc, #148] @ (800c41c ) - 800c388: 781b ldrb r3, [r3, #0] - 800c38a: 2b00 cmp r3, #0 - 800c38c: d105 bne.n 800c39a + 800c3fe: 4b25 ldr r3, [pc, #148] @ (800c494 ) + 800c400: 781b ldrb r3, [r3, #0] + 800c402: 2b00 cmp r3, #0 + 800c404: d105 bne.n 800c412 { App_Write(g_rx_payload, g_rx_payload_len); - 800c38e: 4b21 ldr r3, [pc, #132] @ (800c414 ) - 800c390: 881b ldrh r3, [r3, #0] - 800c392: 4619 mov r1, r3 - 800c394: 4822 ldr r0, [pc, #136] @ (800c420 ) - 800c396: f000 ff69 bl 800d26c + 800c406: 4b21 ldr r3, [pc, #132] @ (800c48c ) + 800c408: 881b ldrh r3, [r3, #0] + 800c40a: 4619 mov r1, r3 + 800c40c: 4822 ldr r0, [pc, #136] @ (800c498 ) + 800c40e: f000 ff69 bl 800d2e4 } g_radio_needs_rx_restart = 1U; - 800c39a: 4b19 ldr r3, [pc, #100] @ (800c400 ) - 800c39c: 2201 movs r2, #1 - 800c39e: 701a strb r2, [r3, #0] + 800c412: 4b19 ldr r3, [pc, #100] @ (800c478 ) + 800c414: 2201 movs r2, #1 + 800c416: 701a strb r2, [r3, #0] } if ((g_radio_rx_timeout != 0U) || (g_radio_rx_error != 0U)) - 800c3a0: 4b20 ldr r3, [pc, #128] @ (800c424 ) - 800c3a2: 781b ldrb r3, [r3, #0] - 800c3a4: b2db uxtb r3, r3 - 800c3a6: 2b00 cmp r3, #0 - 800c3a8: d104 bne.n 800c3b4 - 800c3aa: 4b1f ldr r3, [pc, #124] @ (800c428 ) - 800c3ac: 781b ldrb r3, [r3, #0] - 800c3ae: b2db uxtb r3, r3 - 800c3b0: 2b00 cmp r3, #0 - 800c3b2: d00a beq.n 800c3ca + 800c418: 4b20 ldr r3, [pc, #128] @ (800c49c ) + 800c41a: 781b ldrb r3, [r3, #0] + 800c41c: b2db uxtb r3, r3 + 800c41e: 2b00 cmp r3, #0 + 800c420: d104 bne.n 800c42c + 800c422: 4b1f ldr r3, [pc, #124] @ (800c4a0 ) + 800c424: 781b ldrb r3, [r3, #0] + 800c426: b2db uxtb r3, r3 + 800c428: 2b00 cmp r3, #0 + 800c42a: d00a beq.n 800c442 { g_radio_rx_timeout = 0U; - 800c3b4: 4b1b ldr r3, [pc, #108] @ (800c424 ) - 800c3b6: 2200 movs r2, #0 - 800c3b8: 701a strb r2, [r3, #0] + 800c42c: 4b1b ldr r3, [pc, #108] @ (800c49c ) + 800c42e: 2200 movs r2, #0 + 800c430: 701a strb r2, [r3, #0] g_radio_rx_error = 0U; - 800c3ba: 4b1b ldr r3, [pc, #108] @ (800c428 ) - 800c3bc: 2200 movs r2, #0 - 800c3be: 701a strb r2, [r3, #0] + 800c432: 4b1b ldr r3, [pc, #108] @ (800c4a0 ) + 800c434: 2200 movs r2, #0 + 800c436: 701a strb r2, [r3, #0] App_LedErrPulse(); - 800c3c0: f001 f872 bl 800d4a8 + 800c438: f001 f86e bl 800d518 g_radio_needs_rx_restart = 1U; - 800c3c4: 4b0e ldr r3, [pc, #56] @ (800c400 ) - 800c3c6: 2201 movs r2, #1 - 800c3c8: 701a strb r2, [r3, #0] + 800c43c: 4b0e ldr r3, [pc, #56] @ (800c478 ) + 800c43e: 2201 movs r2, #1 + 800c440: 701a strb r2, [r3, #0] } if ((g_radio_needs_rx_restart != 0U) && (g_radio_busy == 0U) && (g_tx_q_count == 0U)) - 800c3ca: 4b0d ldr r3, [pc, #52] @ (800c400 ) - 800c3cc: 781b ldrb r3, [r3, #0] - 800c3ce: b2db uxtb r3, r3 - 800c3d0: 2b00 cmp r3, #0 - 800c3d2: d00d beq.n 800c3f0 - 800c3d4: 4b08 ldr r3, [pc, #32] @ (800c3f8 ) - 800c3d6: 781b ldrb r3, [r3, #0] - 800c3d8: b2db uxtb r3, r3 - 800c3da: 2b00 cmp r3, #0 - 800c3dc: d108 bne.n 800c3f0 - 800c3de: 4b13 ldr r3, [pc, #76] @ (800c42c ) - 800c3e0: 781b ldrb r3, [r3, #0] - 800c3e2: 2b00 cmp r3, #0 - 800c3e4: d104 bne.n 800c3f0 + 800c442: 4b0d ldr r3, [pc, #52] @ (800c478 ) + 800c444: 781b ldrb r3, [r3, #0] + 800c446: b2db uxtb r3, r3 + 800c448: 2b00 cmp r3, #0 + 800c44a: d00d beq.n 800c468 + 800c44c: 4b08 ldr r3, [pc, #32] @ (800c470 ) + 800c44e: 781b ldrb r3, [r3, #0] + 800c450: b2db uxtb r3, r3 + 800c452: 2b00 cmp r3, #0 + 800c454: d108 bne.n 800c468 + 800c456: 4b13 ldr r3, [pc, #76] @ (800c4a4 ) + 800c458: 781b ldrb r3, [r3, #0] + 800c45a: 2b00 cmp r3, #0 + 800c45c: d104 bne.n 800c468 { g_radio_needs_rx_restart = 0U; - 800c3e6: 4b06 ldr r3, [pc, #24] @ (800c400 ) - 800c3e8: 2200 movs r2, #0 - 800c3ea: 701a strb r2, [r3, #0] + 800c45e: 4b06 ldr r3, [pc, #24] @ (800c478 ) + 800c460: 2200 movs r2, #0 + 800c462: 701a strb r2, [r3, #0] App_RadioEnterRx(); - 800c3ec: f000 f9a6 bl 800c73c + 800c464: f000 f9a6 bl 800c7b4 } } - 800c3f0: bf00 nop - 800c3f2: bd80 pop {r7, pc} - 800c3f4: 20000624 .word 0x20000624 - 800c3f8: 2000063f .word 0x2000063f - 800c3fc: 20000bf8 .word 0x20000bf8 - 800c400: 20000640 .word 0x20000640 - 800c404: 20000625 .word 0x20000625 - 800c408: 0800fb30 .word 0x0800fb30 - 800c40c: 20000626 .word 0x20000626 - 800c410: 20000c00 .word 0x20000c00 - 800c414: 20000720 .word 0x20000720 - 800c418: 20000c04 .word 0x20000c04 - 800c41c: 20000b90 .word 0x20000b90 - 800c420: 20000644 .word 0x20000644 - 800c424: 20000627 .word 0x20000627 - 800c428: 20000628 .word 0x20000628 - 800c42c: 20000a9a .word 0x20000a9a + 800c468: bf00 nop + 800c46a: bd80 pop {r7, pc} + 800c46c: 20000624 .word 0x20000624 + 800c470: 20000678 .word 0x20000678 + 800c474: 20000c30 .word 0x20000c30 + 800c478: 20000679 .word 0x20000679 + 800c47c: 20000625 .word 0x20000625 + 800c480: 0800fb58 .word 0x0800fb58 + 800c484: 20000626 .word 0x20000626 + 800c488: 20000c38 .word 0x20000c38 + 800c48c: 20000758 .word 0x20000758 + 800c490: 20000c3c .word 0x20000c3c + 800c494: 20000bc8 .word 0x20000bc8 + 800c498: 2000067c .word 0x2000067c + 800c49c: 20000627 .word 0x20000627 + 800c4a0: 20000628 .word 0x20000628 + 800c4a4: 20000ad2 .word 0x20000ad2 -0800c430 : +0800c4a8 : static void App_ProcessUartPacketizer(void) { - 800c430: b580 push {r7, lr} - 800c432: b082 sub sp, #8 - 800c434: af00 add r7, sp, #0 + 800c4a8: b580 push {r7, lr} + 800c4aa: b082 sub sp, #8 + 800c4ac: af00 add r7, sp, #0 uint32_t now = HAL_GetTick(); - 800c436: f7f4 fc07 bl 8000c48 - 800c43a: 6078 str r0, [r7, #4] + 800c4ae: f7f4 fbcb bl 8000c48 + 800c4b2: 6078 str r0, [r7, #4] if (g_mode != APP_MODE_DATA) - 800c43c: 4b0d ldr r3, [pc, #52] @ (800c474 ) - 800c43e: 781b ldrb r3, [r3, #0] - 800c440: 2b00 cmp r3, #0 - 800c442: d112 bne.n 800c46a + 800c4b4: 4b0d ldr r3, [pc, #52] @ (800c4ec ) + 800c4b6: 781b ldrb r3, [r3, #0] + 800c4b8: 2b00 cmp r3, #0 + 800c4ba: d112 bne.n 800c4e2 { return; } if ((g_uart_build_len > 0U) && - 800c444: 4b0c ldr r3, [pc, #48] @ (800c478 ) - 800c446: 881b ldrh r3, [r3, #0] - 800c448: 2b00 cmp r3, #0 - 800c44a: d00f beq.n 800c46c + 800c4bc: 4b0c ldr r3, [pc, #48] @ (800c4f0 ) + 800c4be: 881b ldrh r3, [r3, #0] + 800c4c0: 2b00 cmp r3, #0 + 800c4c2: d00f beq.n 800c4e4 ((now - g_uart_last_data_tick) >= g_cfg.uart_packet_timeout_ms) && - 800c44c: 4b0b ldr r3, [pc, #44] @ (800c47c ) - 800c44e: 681b ldr r3, [r3, #0] - 800c450: 687a ldr r2, [r7, #4] - 800c452: 1ad3 subs r3, r2, r3 - 800c454: 4a0a ldr r2, [pc, #40] @ (800c480 ) - 800c456: 8b52 ldrh r2, [r2, #26] + 800c4c4: 4b0b ldr r3, [pc, #44] @ (800c4f4 ) + 800c4c6: 681b ldr r3, [r3, #0] + 800c4c8: 687a ldr r2, [r7, #4] + 800c4ca: 1ad3 subs r3, r2, r3 + 800c4cc: 4a0a ldr r2, [pc, #40] @ (800c4f8 ) + 800c4ce: 8b52 ldrh r2, [r2, #26] if ((g_uart_build_len > 0U) && - 800c458: 4293 cmp r3, r2 - 800c45a: d307 bcc.n 800c46c + 800c4d0: 4293 cmp r3, r2 + 800c4d2: d307 bcc.n 800c4e4 (g_escape.active == 0U)) - 800c45c: 4b09 ldr r3, [pc, #36] @ (800c484 ) - 800c45e: 781b ldrb r3, [r3, #0] + 800c4d4: 4b09 ldr r3, [pc, #36] @ (800c4fc ) + 800c4d6: 781b ldrb r3, [r3, #0] ((now - g_uart_last_data_tick) >= g_cfg.uart_packet_timeout_ms) && - 800c460: 2b00 cmp r3, #0 - 800c462: d103 bne.n 800c46c + 800c4d8: 2b00 cmp r3, #0 + 800c4da: d103 bne.n 800c4e4 { App_DataModeFlushBuilder(); - 800c464: f000 fa24 bl 800c8b0 - 800c468: e000 b.n 800c46c + 800c4dc: f000 fa24 bl 800c928 + 800c4e0: e000 b.n 800c4e4 return; - 800c46a: bf00 nop + 800c4e2: bf00 nop } } - 800c46c: 3708 adds r7, #8 - 800c46e: 46bd mov sp, r7 - 800c470: bd80 pop {r7, pc} - 800c472: bf00 nop - 800c474: 20000b90 .word 0x20000b90 - 800c478: 20000b78 .word 0x20000b78 - 800c47c: 20000b7c .word 0x20000b7c - 800c480: 20000604 .word 0x20000604 - 800c484: 20000b80 .word 0x20000b80 + 800c4e4: 3708 adds r7, #8 + 800c4e6: 46bd mov sp, r7 + 800c4e8: bd80 pop {r7, pc} + 800c4ea: bf00 nop + 800c4ec: 20000bc8 .word 0x20000bc8 + 800c4f0: 20000bb0 .word 0x20000bb0 + 800c4f4: 20000bb4 .word 0x20000bb4 + 800c4f8: 20000604 .word 0x20000604 + 800c4fc: 20000bb8 .word 0x20000bb8 -0800c488 : +0800c500 : static void App_ProcessEscape(void) { - 800c488: b580 push {r7, lr} - 800c48a: b082 sub sp, #8 - 800c48c: af00 add r7, sp, #0 + 800c500: b580 push {r7, lr} + 800c502: b082 sub sp, #8 + 800c504: af00 add r7, sp, #0 uint32_t now = HAL_GetTick(); - 800c48e: f7f4 fbdb bl 8000c48 - 800c492: 6038 str r0, [r7, #0] + 800c506: f7f4 fb9f bl 8000c48 + 800c50a: 6038 str r0, [r7, #0] uint8_t i; if ((g_mode != APP_MODE_DATA) || (g_escape.active == 0U)) - 800c494: 4b22 ldr r3, [pc, #136] @ (800c520 ) - 800c496: 781b ldrb r3, [r3, #0] - 800c498: 2b00 cmp r3, #0 - 800c49a: d13c bne.n 800c516 - 800c49c: 4b21 ldr r3, [pc, #132] @ (800c524 ) - 800c49e: 781b ldrb r3, [r3, #0] - 800c4a0: 2b00 cmp r3, #0 - 800c4a2: d038 beq.n 800c516 + 800c50c: 4b22 ldr r3, [pc, #136] @ (800c598 ) + 800c50e: 781b ldrb r3, [r3, #0] + 800c510: 2b00 cmp r3, #0 + 800c512: d13c bne.n 800c58e + 800c514: 4b21 ldr r3, [pc, #132] @ (800c59c ) + 800c516: 781b ldrb r3, [r3, #0] + 800c518: 2b00 cmp r3, #0 + 800c51a: d038 beq.n 800c58e { return; } if ((g_escape.count == 3U) && ((now - g_escape.last_tick) >= CONFIG_ESCAPE_GUARD_MS)) - 800c4a4: 4b1f ldr r3, [pc, #124] @ (800c524 ) - 800c4a6: 785b ldrb r3, [r3, #1] - 800c4a8: 2b03 cmp r3, #3 - 800c4aa: d10f bne.n 800c4cc - 800c4ac: 4b1d ldr r3, [pc, #116] @ (800c524 ) - 800c4ae: 68db ldr r3, [r3, #12] - 800c4b0: 683a ldr r2, [r7, #0] - 800c4b2: 1ad3 subs r3, r2, r3 - 800c4b4: f5b3 7f48 cmp.w r3, #800 @ 0x320 - 800c4b8: d308 bcc.n 800c4cc + 800c51c: 4b1f ldr r3, [pc, #124] @ (800c59c ) + 800c51e: 785b ldrb r3, [r3, #1] + 800c520: 2b03 cmp r3, #3 + 800c522: d10f bne.n 800c544 + 800c524: 4b1d ldr r3, [pc, #116] @ (800c59c ) + 800c526: 68db ldr r3, [r3, #12] + 800c528: 683a ldr r2, [r7, #0] + 800c52a: 1ad3 subs r3, r2, r3 + 800c52c: f5b3 7f48 cmp.w r3, #800 @ 0x320 + 800c530: d308 bcc.n 800c544 { g_escape.active = 0U; - 800c4ba: 4b1a ldr r3, [pc, #104] @ (800c524 ) - 800c4bc: 2200 movs r2, #0 - 800c4be: 701a strb r2, [r3, #0] + 800c532: 4b1a ldr r3, [pc, #104] @ (800c59c ) + 800c534: 2200 movs r2, #0 + 800c536: 701a strb r2, [r3, #0] g_escape.count = 0U; - 800c4c0: 4b18 ldr r3, [pc, #96] @ (800c524 ) - 800c4c2: 2200 movs r2, #0 - 800c4c4: 705a strb r2, [r3, #1] + 800c538: 4b18 ldr r3, [pc, #96] @ (800c59c ) + 800c53a: 2200 movs r2, #0 + 800c53c: 705a strb r2, [r3, #1] App_EnterConfigMode(); - 800c4c6: f000 f945 bl 800c754 + 800c53e: f000 f945 bl 800c7cc return; - 800c4ca: e025 b.n 800c518 + 800c542: e025 b.n 800c590 } if ((g_escape.count < 3U) && ((now - g_escape.last_tick) >= CONFIG_ESCAPE_GUARD_MS)) - 800c4cc: 4b15 ldr r3, [pc, #84] @ (800c524 ) - 800c4ce: 785b ldrb r3, [r3, #1] - 800c4d0: 2b02 cmp r3, #2 - 800c4d2: d821 bhi.n 800c518 - 800c4d4: 4b13 ldr r3, [pc, #76] @ (800c524 ) - 800c4d6: 68db ldr r3, [r3, #12] - 800c4d8: 683a ldr r2, [r7, #0] - 800c4da: 1ad3 subs r3, r2, r3 - 800c4dc: f5b3 7f48 cmp.w r3, #800 @ 0x320 - 800c4e0: d31a bcc.n 800c518 + 800c544: 4b15 ldr r3, [pc, #84] @ (800c59c ) + 800c546: 785b ldrb r3, [r3, #1] + 800c548: 2b02 cmp r3, #2 + 800c54a: d821 bhi.n 800c590 + 800c54c: 4b13 ldr r3, [pc, #76] @ (800c59c ) + 800c54e: 68db ldr r3, [r3, #12] + 800c550: 683a ldr r2, [r7, #0] + 800c552: 1ad3 subs r3, r2, r3 + 800c554: f5b3 7f48 cmp.w r3, #800 @ 0x320 + 800c558: d31a bcc.n 800c590 { for (i = 0U; i < g_escape.count; i++) - 800c4e2: 2300 movs r3, #0 - 800c4e4: 71fb strb r3, [r7, #7] - 800c4e6: e00a b.n 800c4fe + 800c55a: 2300 movs r3, #0 + 800c55c: 71fb strb r3, [r7, #7] + 800c55e: e00a b.n 800c576 { App_DataModeFeedByte(g_escape.bytes[i], now); - 800c4e8: 79fb ldrb r3, [r7, #7] - 800c4ea: 4a0e ldr r2, [pc, #56] @ (800c524 ) - 800c4ec: 4413 add r3, r2 - 800c4ee: 789b ldrb r3, [r3, #2] - 800c4f0: 6839 ldr r1, [r7, #0] - 800c4f2: 4618 mov r0, r3 - 800c4f4: f000 f99a bl 800c82c + 800c560: 79fb ldrb r3, [r7, #7] + 800c562: 4a0e ldr r2, [pc, #56] @ (800c59c ) + 800c564: 4413 add r3, r2 + 800c566: 789b ldrb r3, [r3, #2] + 800c568: 6839 ldr r1, [r7, #0] + 800c56a: 4618 mov r0, r3 + 800c56c: f000 f99a bl 800c8a4 for (i = 0U; i < g_escape.count; i++) - 800c4f8: 79fb ldrb r3, [r7, #7] - 800c4fa: 3301 adds r3, #1 - 800c4fc: 71fb strb r3, [r7, #7] - 800c4fe: 4b09 ldr r3, [pc, #36] @ (800c524 ) - 800c500: 785b ldrb r3, [r3, #1] - 800c502: 79fa ldrb r2, [r7, #7] - 800c504: 429a cmp r2, r3 - 800c506: d3ef bcc.n 800c4e8 + 800c570: 79fb ldrb r3, [r7, #7] + 800c572: 3301 adds r3, #1 + 800c574: 71fb strb r3, [r7, #7] + 800c576: 4b09 ldr r3, [pc, #36] @ (800c59c ) + 800c578: 785b ldrb r3, [r3, #1] + 800c57a: 79fa ldrb r2, [r7, #7] + 800c57c: 429a cmp r2, r3 + 800c57e: d3ef bcc.n 800c560 } g_escape.active = 0U; - 800c508: 4b06 ldr r3, [pc, #24] @ (800c524 ) - 800c50a: 2200 movs r2, #0 - 800c50c: 701a strb r2, [r3, #0] + 800c580: 4b06 ldr r3, [pc, #24] @ (800c59c ) + 800c582: 2200 movs r2, #0 + 800c584: 701a strb r2, [r3, #0] g_escape.count = 0U; - 800c50e: 4b05 ldr r3, [pc, #20] @ (800c524 ) - 800c510: 2200 movs r2, #0 - 800c512: 705a strb r2, [r3, #1] - 800c514: e000 b.n 800c518 + 800c586: 4b05 ldr r3, [pc, #20] @ (800c59c ) + 800c588: 2200 movs r2, #0 + 800c58a: 705a strb r2, [r3, #1] + 800c58c: e000 b.n 800c590 return; - 800c516: bf00 nop + 800c58e: bf00 nop } } - 800c518: 3708 adds r7, #8 - 800c51a: 46bd mov sp, r7 - 800c51c: bd80 pop {r7, pc} - 800c51e: bf00 nop - 800c520: 20000b90 .word 0x20000b90 - 800c524: 20000b80 .word 0x20000b80 + 800c590: 3708 adds r7, #8 + 800c592: 46bd mov sp, r7 + 800c594: bd80 pop {r7, pc} + 800c596: bf00 nop + 800c598: 20000bc8 .word 0x20000bc8 + 800c59c: 20000bb8 .word 0x20000bb8 -0800c528 : +0800c5a0 : static void App_StartNextTxIfPossible(void) { - 800c528: b598 push {r3, r4, r7, lr} - 800c52a: af00 add r7, sp, #0 + 800c5a0: b598 push {r3, r4, r7, lr} + 800c5a2: af00 add r7, sp, #0 if ((g_mode != APP_MODE_DATA) || (g_radio_busy != 0U) || (g_tx_q_count == 0U)) - 800c52c: 4b16 ldr r3, [pc, #88] @ (800c588 ) - 800c52e: 781b ldrb r3, [r3, #0] - 800c530: 2b00 cmp r3, #0 - 800c532: d126 bne.n 800c582 - 800c534: 4b15 ldr r3, [pc, #84] @ (800c58c ) - 800c536: 781b ldrb r3, [r3, #0] - 800c538: b2db uxtb r3, r3 - 800c53a: 2b00 cmp r3, #0 - 800c53c: d121 bne.n 800c582 - 800c53e: 4b14 ldr r3, [pc, #80] @ (800c590 ) - 800c540: 781b ldrb r3, [r3, #0] - 800c542: 2b00 cmp r3, #0 - 800c544: d01d beq.n 800c582 + 800c5a4: 4b16 ldr r3, [pc, #88] @ (800c600 ) + 800c5a6: 781b ldrb r3, [r3, #0] + 800c5a8: 2b00 cmp r3, #0 + 800c5aa: d126 bne.n 800c5fa + 800c5ac: 4b15 ldr r3, [pc, #84] @ (800c604 ) + 800c5ae: 781b ldrb r3, [r3, #0] + 800c5b0: b2db uxtb r3, r3 + 800c5b2: 2b00 cmp r3, #0 + 800c5b4: d121 bne.n 800c5fa + 800c5b6: 4b14 ldr r3, [pc, #80] @ (800c608 ) + 800c5b8: 781b ldrb r3, [r3, #0] + 800c5ba: 2b00 cmp r3, #0 + 800c5bc: d01d beq.n 800c5fa { return; } App_RadioConfigureTx(); - 800c546: f000 f8ad bl 800c6a4 + 800c5be: f000 f8ad bl 800c71c g_radio_busy = 1U; - 800c54a: 4b10 ldr r3, [pc, #64] @ (800c58c ) - 800c54c: 2201 movs r2, #1 - 800c54e: 701a strb r2, [r3, #0] + 800c5c2: 4b10 ldr r3, [pc, #64] @ (800c604 ) + 800c5c4: 2201 movs r2, #1 + 800c5c6: 701a strb r2, [r3, #0] App_LedTxPulse(); - 800c550: f000 ff76 bl 800d440 + 800c5c8: f000 ff76 bl 800d4b8 (void)Radio.Send(g_tx_queue[g_tx_q_head].data, g_tx_queue[g_tx_q_head].len); - 800c554: 4b0f ldr r3, [pc, #60] @ (800c594 ) - 800c556: 6a9b ldr r3, [r3, #40] @ 0x28 - 800c558: 4a0f ldr r2, [pc, #60] @ (800c598 ) - 800c55a: 7812 ldrb r2, [r2, #0] - 800c55c: 4611 mov r1, r2 - 800c55e: 22dd movs r2, #221 @ 0xdd - 800c560: fb01 f202 mul.w r2, r1, r2 - 800c564: 490d ldr r1, [pc, #52] @ (800c59c ) - 800c566: 1850 adds r0, r2, r1 - 800c568: 4a0b ldr r2, [pc, #44] @ (800c598 ) - 800c56a: 7812 ldrb r2, [r2, #0] - 800c56c: 4614 mov r4, r2 - 800c56e: 490b ldr r1, [pc, #44] @ (800c59c ) - 800c570: 22dd movs r2, #221 @ 0xdd - 800c572: fb04 f202 mul.w r2, r4, r2 - 800c576: 440a add r2, r1 - 800c578: 32dc adds r2, #220 @ 0xdc - 800c57a: 7812 ldrb r2, [r2, #0] - 800c57c: 4611 mov r1, r2 - 800c57e: 4798 blx r3 - 800c580: e000 b.n 800c584 + 800c5cc: 4b0f ldr r3, [pc, #60] @ (800c60c ) + 800c5ce: 6a9b ldr r3, [r3, #40] @ 0x28 + 800c5d0: 4a0f ldr r2, [pc, #60] @ (800c610 ) + 800c5d2: 7812 ldrb r2, [r2, #0] + 800c5d4: 4611 mov r1, r2 + 800c5d6: 22dd movs r2, #221 @ 0xdd + 800c5d8: fb01 f202 mul.w r2, r1, r2 + 800c5dc: 490d ldr r1, [pc, #52] @ (800c614 ) + 800c5de: 1850 adds r0, r2, r1 + 800c5e0: 4a0b ldr r2, [pc, #44] @ (800c610 ) + 800c5e2: 7812 ldrb r2, [r2, #0] + 800c5e4: 4614 mov r4, r2 + 800c5e6: 490b ldr r1, [pc, #44] @ (800c614 ) + 800c5e8: 22dd movs r2, #221 @ 0xdd + 800c5ea: fb04 f202 mul.w r2, r4, r2 + 800c5ee: 440a add r2, r1 + 800c5f0: 32dc adds r2, #220 @ 0xdc + 800c5f2: 7812 ldrb r2, [r2, #0] + 800c5f4: 4611 mov r1, r2 + 800c5f6: 4798 blx r3 + 800c5f8: e000 b.n 800c5fc return; - 800c582: bf00 nop + 800c5fa: bf00 nop } - 800c584: bd98 pop {r3, r4, r7, pc} - 800c586: bf00 nop - 800c588: 20000b90 .word 0x20000b90 - 800c58c: 2000063f .word 0x2000063f - 800c590: 20000a9a .word 0x20000a9a - 800c594: 080103c4 .word 0x080103c4 - 800c598: 20000a98 .word 0x20000a98 - 800c59c: 20000724 .word 0x20000724 + 800c5fc: bd98 pop {r3, r4, r7, pc} + 800c5fe: bf00 nop + 800c600: 20000bc8 .word 0x20000bc8 + 800c604: 20000678 .word 0x20000678 + 800c608: 20000ad2 .word 0x20000ad2 + 800c60c: 080103ec .word 0x080103ec + 800c610: 20000ad0 .word 0x20000ad0 + 800c614: 2000075c .word 0x2000075c -0800c5a0 : +0800c618 : static void App_ApplyConfig(void) { - 800c5a0: b580 push {r7, lr} - 800c5a2: af00 add r7, sp, #0 + 800c618: b580 push {r7, lr} + 800c61a: af00 add r7, sp, #0 App_RadioApplyConfig(); - 800c5a4: f000 f816 bl 800c5d4 + 800c61c: f000 f816 bl 800c64c App_RadioConfigureRx(); - 800c5a8: f000 f828 bl 800c5fc + 800c620: f000 f828 bl 800c674 App_RadioConfigureTx(); - 800c5ac: f000 f87a bl 800c6a4 + 800c624: f000 f87a bl 800c71c if (!Config_Save(&g_cfg)) { - 800c5b0: 4806 ldr r0, [pc, #24] @ (800c5cc ) - 800c5b2: f001 f8cb bl 800d74c - 800c5b6: 4603 mov r3, r0 - 800c5b8: f083 0301 eor.w r3, r3, #1 - 800c5bc: b2db uxtb r3, r3 - 800c5be: 2b00 cmp r3, #0 - 800c5c0: d002 beq.n 800c5c8 + 800c628: 4806 ldr r0, [pc, #24] @ (800c644 ) + 800c62a: f001 f8a3 bl 800d774 + 800c62e: 4603 mov r3, r0 + 800c630: f083 0301 eor.w r3, r3, #1 + 800c634: b2db uxtb r3, r3 + 800c636: 2b00 cmp r3, #0 + 800c638: d002 beq.n 800c640 App_Printf("Error while saving cnf\r\n"); - 800c5c2: 4803 ldr r0, [pc, #12] @ (800c5d0 ) - 800c5c4: f000 fe26 bl 800d214 + 800c63a: 4803 ldr r0, [pc, #12] @ (800c648 ) + 800c63c: f000 fe26 bl 800d28c } } - 800c5c8: bf00 nop - 800c5ca: bd80 pop {r7, pc} - 800c5cc: 20000604 .word 0x20000604 - 800c5d0: 0800fb4c .word 0x0800fb4c + 800c640: bf00 nop + 800c642: bd80 pop {r7, pc} + 800c644: 20000604 .word 0x20000604 + 800c648: 0800fb74 .word 0x0800fb74 -0800c5d4 : +0800c64c : static void App_RadioApplyConfig(void) { - 800c5d4: b580 push {r7, lr} - 800c5d6: af00 add r7, sp, #0 + 800c64c: b580 push {r7, lr} + 800c64e: af00 add r7, sp, #0 Radio.SetChannel(g_cfg.rf_frequency); - 800c5d8: 4b05 ldr r3, [pc, #20] @ (800c5f0 ) - 800c5da: 68db ldr r3, [r3, #12] - 800c5dc: 4a05 ldr r2, [pc, #20] @ (800c5f4 ) - 800c5de: 6812 ldr r2, [r2, #0] - 800c5e0: 4610 mov r0, r2 - 800c5e2: 4798 blx r3 + 800c650: 4b05 ldr r3, [pc, #20] @ (800c668 ) + 800c652: 68db ldr r3, [r3, #12] + 800c654: 4a05 ldr r2, [pc, #20] @ (800c66c ) + 800c656: 6812 ldr r2, [r2, #0] + 800c658: 4610 mov r0, r2 + 800c65a: 4798 blx r3 g_radio_needs_rx_restart = 1U; - 800c5e4: 4b04 ldr r3, [pc, #16] @ (800c5f8 ) - 800c5e6: 2201 movs r2, #1 - 800c5e8: 701a strb r2, [r3, #0] + 800c65c: 4b04 ldr r3, [pc, #16] @ (800c670 ) + 800c65e: 2201 movs r2, #1 + 800c660: 701a strb r2, [r3, #0] } - 800c5ea: bf00 nop - 800c5ec: bd80 pop {r7, pc} - 800c5ee: bf00 nop - 800c5f0: 080103c4 .word 0x080103c4 - 800c5f4: 20000604 .word 0x20000604 - 800c5f8: 20000640 .word 0x20000640 + 800c662: bf00 nop + 800c664: bd80 pop {r7, pc} + 800c666: bf00 nop + 800c668: 080103ec .word 0x080103ec + 800c66c: 20000604 .word 0x20000604 + 800c670: 20000679 .word 0x20000679 -0800c5fc : +0800c674 : static void App_RadioConfigureRx(void) { - 800c5fc: b590 push {r4, r7, lr} - 800c5fe: b08f sub sp, #60 @ 0x3c - 800c600: af00 add r7, sp, #0 + 800c674: b590 push {r4, r7, lr} + 800c676: b08f sub sp, #60 @ 0x3c + 800c678: af00 add r7, sp, #0 RxConfigGeneric_t rx = {0}; - 800c602: 463b mov r3, r7 - 800c604: 2238 movs r2, #56 @ 0x38 - 800c606: 2100 movs r1, #0 - 800c608: 4618 mov r0, r3 - 800c60a: f002 fc9f bl 800ef4c + 800c67a: 463b mov r3, r7 + 800c67c: 2238 movs r2, #56 @ 0x38 + 800c67e: 2100 movs r1, #0 + 800c680: 4618 mov r0, r3 + 800c682: f002 fc77 bl 800ef74 Radio.SetChannel(g_cfg.rf_frequency); - 800c60e: 4b22 ldr r3, [pc, #136] @ (800c698 ) - 800c610: 68db ldr r3, [r3, #12] - 800c612: 4a22 ldr r2, [pc, #136] @ (800c69c ) - 800c614: 6812 ldr r2, [r2, #0] - 800c616: 4610 mov r0, r2 - 800c618: 4798 blx r3 + 800c686: 4b22 ldr r3, [pc, #136] @ (800c710 ) + 800c688: 68db ldr r3, [r3, #12] + 800c68a: 4a22 ldr r2, [pc, #136] @ (800c714 ) + 800c68c: 6812 ldr r2, [r2, #0] + 800c68e: 4610 mov r0, r2 + 800c690: 4798 blx r3 rx.fsk.ModulationShaping = RADIO_FSK_MOD_SHAPING_G_BT_05; - 800c61a: 2309 movs r3, #9 - 800c61c: f887 3020 strb.w r3, [r7, #32] + 800c692: 2309 movs r3, #9 + 800c694: f887 3020 strb.w r3, [r7, #32] rx.fsk.Bandwidth = g_cfg.fsk_bandwidth; - 800c620: 4b1e ldr r3, [pc, #120] @ (800c69c ) - 800c622: 68db ldr r3, [r3, #12] - 800c624: 607b str r3, [r7, #4] + 800c698: 4b1e ldr r3, [pc, #120] @ (800c714 ) + 800c69a: 68db ldr r3, [r3, #12] + 800c69c: 607b str r3, [r7, #4] rx.fsk.BitRate = g_cfg.fsk_bitrate; - 800c626: 4b1d ldr r3, [pc, #116] @ (800c69c ) - 800c628: 689b ldr r3, [r3, #8] - 800c62a: 60bb str r3, [r7, #8] + 800c69e: 4b1d ldr r3, [pc, #116] @ (800c714 ) + 800c6a0: 689b ldr r3, [r3, #8] + 800c6a2: 60bb str r3, [r7, #8] rx.fsk.PreambleLen = g_cfg.fsk_preamble_len; - 800c62c: 4b1b ldr r3, [pc, #108] @ (800c69c ) - 800c62e: 8a9b ldrh r3, [r3, #20] - 800c630: 60fb str r3, [r7, #12] + 800c6a4: 4b1b ldr r3, [pc, #108] @ (800c714 ) + 800c6a6: 8a9b ldrh r3, [r3, #20] + 800c6a8: 60fb str r3, [r7, #12] rx.fsk.SyncWordLength = RADIO_SYNCWORD_LEN; - 800c632: 2303 movs r3, #3 - 800c634: 77bb strb r3, [r7, #30] + 800c6aa: 2303 movs r3, #3 + 800c6ac: 77bb strb r3, [r7, #30] rx.fsk.PreambleMinDetect = RADIO_FSK_PREAMBLE_DETECTOR_08_BITS; - 800c636: 2304 movs r3, #4 - 800c638: 77fb strb r3, [r7, #31] + 800c6ae: 2304 movs r3, #4 + 800c6b0: 77fb strb r3, [r7, #31] rx.fsk.SyncWord = g_cfg.syncword; - 800c63a: 4b19 ldr r3, [pc, #100] @ (800c6a0 ) - 800c63c: 613b str r3, [r7, #16] + 800c6b2: 4b19 ldr r3, [pc, #100] @ (800c718 ) + 800c6b4: 613b str r3, [r7, #16] rx.fsk.whiteSeed = RADIO_WHITENING_SEED; - 800c63e: f240 13ff movw r3, #511 @ 0x1ff - 800c642: 83bb strh r3, [r7, #28] + 800c6b6: f240 13ff movw r3, #511 @ 0x1ff + 800c6ba: 83bb strh r3, [r7, #28] rx.fsk.LengthMode = RADIO_FSK_PACKET_VARIABLE_LENGTH; - 800c644: 2301 movs r3, #1 - 800c646: f887 3022 strb.w r3, [r7, #34] @ 0x22 + 800c6bc: 2301 movs r3, #1 + 800c6be: f887 3022 strb.w r3, [r7, #34] @ 0x22 rx.fsk.CrcLength = RADIO_FSK_CRC_2_BYTES_IBM; - 800c64a: 23f1 movs r3, #241 @ 0xf1 - 800c64c: f887 3023 strb.w r3, [r7, #35] @ 0x23 + 800c6c2: 23f1 movs r3, #241 @ 0xf1 + 800c6c4: f887 3023 strb.w r3, [r7, #35] @ 0x23 rx.fsk.CrcPolynomial = RADIO_CRC_POLY; - 800c650: f248 0305 movw r3, #32773 @ 0x8005 - 800c654: 833b strh r3, [r7, #24] + 800c6c8: f248 0305 movw r3, #32773 @ 0x8005 + 800c6cc: 833b strh r3, [r7, #24] rx.fsk.CrcSeed = RADIO_CRC_SEED; - 800c656: f64f 73ff movw r3, #65535 @ 0xffff - 800c65a: 837b strh r3, [r7, #26] + 800c6ce: f64f 73ff movw r3, #65535 @ 0xffff + 800c6d2: 837b strh r3, [r7, #26] rx.fsk.Whitening = RADIO_FSK_DC_FREEWHITENING; - 800c65c: 2301 movs r3, #1 - 800c65e: f887 3024 strb.w r3, [r7, #36] @ 0x24 + 800c6d4: 2301 movs r3, #1 + 800c6d6: f887 3024 strb.w r3, [r7, #36] @ 0x24 rx.fsk.MaxPayloadLength = RADIO_MAX_PAYLOAD_SIZE; - 800c662: 23dc movs r3, #220 @ 0xdc - 800c664: 617b str r3, [r7, #20] + 800c6da: 23dc movs r3, #220 @ 0xdc + 800c6dc: 617b str r3, [r7, #20] rx.fsk.StopTimerOnPreambleDetect = 0; - 800c666: 2300 movs r3, #0 - 800c668: 603b str r3, [r7, #0] + 800c6de: 2300 movs r3, #0 + 800c6e0: 603b str r3, [r7, #0] rx.fsk.AddrComp = RADIO_FSK_ADDRESSCOMP_FILT_OFF; - 800c66a: 2300 movs r3, #0 - 800c66c: f887 3021 strb.w r3, [r7, #33] @ 0x21 + 800c6e2: 2300 movs r3, #0 + 800c6e4: f887 3021 strb.w r3, [r7, #33] @ 0x21 Radio.Standby(); - 800c670: 4b09 ldr r3, [pc, #36] @ (800c698 ) - 800c672: 6b1b ldr r3, [r3, #48] @ 0x30 - 800c674: 4798 blx r3 + 800c6e8: 4b09 ldr r3, [pc, #36] @ (800c710 ) + 800c6ea: 6b1b ldr r3, [r3, #48] @ 0x30 + 800c6ec: 4798 blx r3 if (0UL != Radio.RadioSetRxGenericConfig(GENERIC_FSK, &rx, RX_CONTINUOUS_ON, 0U)) - 800c676: 4b08 ldr r3, [pc, #32] @ (800c698 ) - 800c678: 6f5c ldr r4, [r3, #116] @ 0x74 - 800c67a: 4639 mov r1, r7 - 800c67c: 2300 movs r3, #0 - 800c67e: 2201 movs r2, #1 - 800c680: 2000 movs r0, #0 - 800c682: 47a0 blx r4 - 800c684: 4603 mov r3, r0 - 800c686: 2b00 cmp r3, #0 - 800c688: d001 beq.n 800c68e + 800c6ee: 4b08 ldr r3, [pc, #32] @ (800c710 ) + 800c6f0: 6f5c ldr r4, [r3, #116] @ 0x74 + 800c6f2: 4639 mov r1, r7 + 800c6f4: 2300 movs r3, #0 + 800c6f6: 2201 movs r2, #1 + 800c6f8: 2000 movs r0, #0 + 800c6fa: 47a0 blx r4 + 800c6fc: 4603 mov r3, r0 + 800c6fe: 2b00 cmp r3, #0 + 800c700: d001 beq.n 800c706 { Error_Handler(); - 800c68a: f7f4 f8a1 bl 80007d0 + 800c702: f7f4 f865 bl 80007d0 } } - 800c68e: bf00 nop - 800c690: 373c adds r7, #60 @ 0x3c - 800c692: 46bd mov sp, r7 - 800c694: bd90 pop {r4, r7, pc} - 800c696: bf00 nop - 800c698: 080103c4 .word 0x080103c4 - 800c69c: 20000604 .word 0x20000604 - 800c6a0: 2000061a .word 0x2000061a + 800c706: bf00 nop + 800c708: 373c adds r7, #60 @ 0x3c + 800c70a: 46bd mov sp, r7 + 800c70c: bd90 pop {r4, r7, pc} + 800c70e: bf00 nop + 800c710: 080103ec .word 0x080103ec + 800c714: 20000604 .word 0x20000604 + 800c718: 2000061a .word 0x2000061a -0800c6a4 : +0800c71c : static void App_RadioConfigureTx(void) { - 800c6a4: b590 push {r4, r7, lr} - 800c6a6: b089 sub sp, #36 @ 0x24 - 800c6a8: af00 add r7, sp, #0 + 800c71c: b590 push {r4, r7, lr} + 800c71e: b089 sub sp, #36 @ 0x24 + 800c720: af00 add r7, sp, #0 TxConfigGeneric_t tx = {0}; - 800c6aa: 1d3b adds r3, r7, #4 - 800c6ac: 2200 movs r2, #0 - 800c6ae: 601a str r2, [r3, #0] - 800c6b0: 605a str r2, [r3, #4] - 800c6b2: 609a str r2, [r3, #8] - 800c6b4: 60da str r2, [r3, #12] - 800c6b6: 611a str r2, [r3, #16] - 800c6b8: 615a str r2, [r3, #20] - 800c6ba: 619a str r2, [r3, #24] + 800c722: 1d3b adds r3, r7, #4 + 800c724: 2200 movs r2, #0 + 800c726: 601a str r2, [r3, #0] + 800c728: 605a str r2, [r3, #4] + 800c72a: 609a str r2, [r3, #8] + 800c72c: 60da str r2, [r3, #12] + 800c72e: 611a str r2, [r3, #16] + 800c730: 615a str r2, [r3, #20] + 800c732: 619a str r2, [r3, #24] Radio.SetChannel(g_cfg.rf_frequency); - 800c6bc: 4b1c ldr r3, [pc, #112] @ (800c730 ) - 800c6be: 68db ldr r3, [r3, #12] - 800c6c0: 4a1c ldr r2, [pc, #112] @ (800c734 ) - 800c6c2: 6812 ldr r2, [r2, #0] - 800c6c4: 4610 mov r0, r2 - 800c6c6: 4798 blx r3 + 800c734: 4b1c ldr r3, [pc, #112] @ (800c7a8 ) + 800c736: 68db ldr r3, [r3, #12] + 800c738: 4a1c ldr r2, [pc, #112] @ (800c7ac ) + 800c73a: 6812 ldr r2, [r2, #0] + 800c73c: 4610 mov r0, r2 + 800c73e: 4798 blx r3 tx.fsk.ModulationShaping = RADIO_FSK_MOD_SHAPING_G_BT_05; - 800c6c8: 2309 movs r3, #9 - 800c6ca: 75fb strb r3, [r7, #23] + 800c740: 2309 movs r3, #9 + 800c742: 75fb strb r3, [r7, #23] tx.fsk.FrequencyDeviation = g_cfg.fsk_fdev; - 800c6cc: 4b19 ldr r3, [pc, #100] @ (800c734 ) - 800c6ce: 691b ldr r3, [r3, #16] - 800c6d0: 61fb str r3, [r7, #28] + 800c744: 4b19 ldr r3, [pc, #100] @ (800c7ac ) + 800c746: 691b ldr r3, [r3, #16] + 800c748: 61fb str r3, [r7, #28] tx.fsk.BitRate = g_cfg.fsk_bitrate; - 800c6d2: 4b18 ldr r3, [pc, #96] @ (800c734 ) - 800c6d4: 689b ldr r3, [r3, #8] - 800c6d6: 607b str r3, [r7, #4] + 800c74a: 4b18 ldr r3, [pc, #96] @ (800c7ac ) + 800c74c: 689b ldr r3, [r3, #8] + 800c74e: 607b str r3, [r7, #4] tx.fsk.PreambleLen = g_cfg.fsk_preamble_len; - 800c6d8: 4b16 ldr r3, [pc, #88] @ (800c734 ) - 800c6da: 8a9b ldrh r3, [r3, #20] - 800c6dc: 60bb str r3, [r7, #8] + 800c750: 4b16 ldr r3, [pc, #88] @ (800c7ac ) + 800c752: 8a9b ldrh r3, [r3, #20] + 800c754: 60bb str r3, [r7, #8] tx.fsk.SyncWordLength = RADIO_SYNCWORD_LEN; - 800c6de: 2303 movs r3, #3 - 800c6e0: 75bb strb r3, [r7, #22] + 800c756: 2303 movs r3, #3 + 800c758: 75bb strb r3, [r7, #22] tx.fsk.SyncWord = g_cfg.syncword; - 800c6e2: 4b15 ldr r3, [pc, #84] @ (800c738 ) - 800c6e4: 60fb str r3, [r7, #12] + 800c75a: 4b15 ldr r3, [pc, #84] @ (800c7b0 ) + 800c75c: 60fb str r3, [r7, #12] tx.fsk.whiteSeed = RADIO_WHITENING_SEED; - 800c6e6: f240 13ff movw r3, #511 @ 0x1ff - 800c6ea: 82bb strh r3, [r7, #20] + 800c75e: f240 13ff movw r3, #511 @ 0x1ff + 800c762: 82bb strh r3, [r7, #20] tx.fsk.HeaderType = RADIO_FSK_PACKET_VARIABLE_LENGTH; - 800c6ec: 2301 movs r3, #1 - 800c6ee: 763b strb r3, [r7, #24] + 800c764: 2301 movs r3, #1 + 800c766: 763b strb r3, [r7, #24] tx.fsk.CrcLength = RADIO_FSK_CRC_2_BYTES_IBM; - 800c6f0: 23f1 movs r3, #241 @ 0xf1 - 800c6f2: 767b strb r3, [r7, #25] + 800c768: 23f1 movs r3, #241 @ 0xf1 + 800c76a: 767b strb r3, [r7, #25] tx.fsk.CrcPolynomial = RADIO_CRC_POLY; - 800c6f4: f248 0305 movw r3, #32773 @ 0x8005 - 800c6f8: 823b strh r3, [r7, #16] + 800c76c: f248 0305 movw r3, #32773 @ 0x8005 + 800c770: 823b strh r3, [r7, #16] tx.fsk.CrcSeed = RADIO_CRC_SEED; - 800c6fa: f64f 73ff movw r3, #65535 @ 0xffff - 800c6fe: 827b strh r3, [r7, #18] + 800c772: f64f 73ff movw r3, #65535 @ 0xffff + 800c776: 827b strh r3, [r7, #18] tx.fsk.Whitening = RADIO_FSK_DC_FREEWHITENING; - 800c700: 2301 movs r3, #1 - 800c702: 76bb strb r3, [r7, #26] + 800c778: 2301 movs r3, #1 + 800c77a: 76bb strb r3, [r7, #26] Radio.Standby(); - 800c704: 4b0a ldr r3, [pc, #40] @ (800c730 ) - 800c706: 6b1b ldr r3, [r3, #48] @ 0x30 - 800c708: 4798 blx r3 + 800c77c: 4b0a ldr r3, [pc, #40] @ (800c7a8 ) + 800c77e: 6b1b ldr r3, [r3, #48] @ 0x30 + 800c780: 4798 blx r3 if (0UL != Radio.RadioSetTxGenericConfig(GENERIC_FSK, &tx, g_cfg.tx_power, TX_TIMEOUT_VALUE_MS)) - 800c70a: 4b09 ldr r3, [pc, #36] @ (800c730 ) - 800c70c: 6f9c ldr r4, [r3, #120] @ 0x78 - 800c70e: 4b09 ldr r3, [pc, #36] @ (800c734 ) - 800c710: f993 2004 ldrsb.w r2, [r3, #4] - 800c714: 1d39 adds r1, r7, #4 - 800c716: f640 33b8 movw r3, #3000 @ 0xbb8 - 800c71a: 2000 movs r0, #0 - 800c71c: 47a0 blx r4 - 800c71e: 4603 mov r3, r0 - 800c720: 2b00 cmp r3, #0 - 800c722: d001 beq.n 800c728 + 800c782: 4b09 ldr r3, [pc, #36] @ (800c7a8 ) + 800c784: 6f9c ldr r4, [r3, #120] @ 0x78 + 800c786: 4b09 ldr r3, [pc, #36] @ (800c7ac ) + 800c788: f993 2004 ldrsb.w r2, [r3, #4] + 800c78c: 1d39 adds r1, r7, #4 + 800c78e: f640 33b8 movw r3, #3000 @ 0xbb8 + 800c792: 2000 movs r0, #0 + 800c794: 47a0 blx r4 + 800c796: 4603 mov r3, r0 + 800c798: 2b00 cmp r3, #0 + 800c79a: d001 beq.n 800c7a0 { Error_Handler(); - 800c724: f7f4 f854 bl 80007d0 + 800c79c: f7f4 f818 bl 80007d0 } } - 800c728: bf00 nop - 800c72a: 3724 adds r7, #36 @ 0x24 - 800c72c: 46bd mov sp, r7 - 800c72e: bd90 pop {r4, r7, pc} - 800c730: 080103c4 .word 0x080103c4 - 800c734: 20000604 .word 0x20000604 - 800c738: 2000061a .word 0x2000061a + 800c7a0: bf00 nop + 800c7a2: 3724 adds r7, #36 @ 0x24 + 800c7a4: 46bd mov sp, r7 + 800c7a6: bd90 pop {r4, r7, pc} + 800c7a8: 080103ec .word 0x080103ec + 800c7ac: 20000604 .word 0x20000604 + 800c7b0: 2000061a .word 0x2000061a -0800c73c : +0800c7b4 : static void App_RadioEnterRx(void) { - 800c73c: b580 push {r7, lr} - 800c73e: af00 add r7, sp, #0 + 800c7b4: b580 push {r7, lr} + 800c7b6: af00 add r7, sp, #0 App_RadioConfigureRx(); - 800c740: f7ff ff5c bl 800c5fc + 800c7b8: f7ff ff5c bl 800c674 Radio.Rx(RX_TIMEOUT_VALUE_MS); - 800c744: 4b02 ldr r3, [pc, #8] @ (800c750 ) - 800c746: 6b5b ldr r3, [r3, #52] @ 0x34 - 800c748: 2000 movs r0, #0 - 800c74a: 4798 blx r3 + 800c7bc: 4b02 ldr r3, [pc, #8] @ (800c7c8 ) + 800c7be: 6b5b ldr r3, [r3, #52] @ 0x34 + 800c7c0: 2000 movs r0, #0 + 800c7c2: 4798 blx r3 } - 800c74c: bf00 nop - 800c74e: bd80 pop {r7, pc} - 800c750: 080103c4 .word 0x080103c4 + 800c7c4: bf00 nop + 800c7c6: bd80 pop {r7, pc} + 800c7c8: 080103ec .word 0x080103ec -0800c754 : +0800c7cc : static void App_EnterConfigMode(void) { - 800c754: b580 push {r7, lr} - 800c756: af00 add r7, sp, #0 + 800c7cc: b580 push {r7, lr} + 800c7ce: af00 add r7, sp, #0 App_ResetDataPath(); - 800c758: f000 f846 bl 800c7e8 + 800c7d0: f000 f846 bl 800c860 g_mode = APP_MODE_CONFIG; - 800c75c: 4b0f ldr r3, [pc, #60] @ (800c79c ) - 800c75e: 2201 movs r2, #1 - 800c760: 701a strb r2, [r3, #0] + 800c7d4: 4b0f ldr r3, [pc, #60] @ (800c814 ) + 800c7d6: 2201 movs r2, #1 + 800c7d8: 701a strb r2, [r3, #0] App_Printf("\r\n\r\n[CONFIG MODE]\r\n"); - 800c762: 480f ldr r0, [pc, #60] @ (800c7a0 ) - 800c764: f000 fd56 bl 800d214 + 800c7da: 480f ldr r0, [pc, #60] @ (800c818 ) + 800c7dc: f000 fd56 bl 800d28c App_Printf("type 'help' for commands\r\n"); - 800c768: 480e ldr r0, [pc, #56] @ (800c7a4 ) - 800c76a: f000 fd53 bl 800d214 + 800c7e0: 480e ldr r0, [pc, #56] @ (800c81c ) + 800c7e2: f000 fd53 bl 800d28c if (!Config_Load(&g_cfg)) - 800c76e: 480e ldr r0, [pc, #56] @ (800c7a8 ) - 800c770: f000 ffbc bl 800d6ec - 800c774: 4603 mov r3, r0 - 800c776: f083 0301 eor.w r3, r3, #1 - 800c77a: b2db uxtb r3, r3 - 800c77c: 2b00 cmp r3, #0 - 800c77e: d008 beq.n 800c792 + 800c7e6: 480e ldr r0, [pc, #56] @ (800c820 ) + 800c7e8: f000 ff94 bl 800d714 + 800c7ec: 4603 mov r3, r0 + 800c7ee: f083 0301 eor.w r3, r3, #1 + 800c7f2: b2db uxtb r3, r3 + 800c7f4: 2b00 cmp r3, #0 + 800c7f6: d008 beq.n 800c80a { App_Printf("Error while loading cnf\r\n"); - 800c780: 480a ldr r0, [pc, #40] @ (800c7ac ) - 800c782: f000 fd47 bl 800d214 + 800c7f8: 480a ldr r0, [pc, #40] @ (800c824 ) + 800c7fa: f000 fd47 bl 800d28c App_Printf("Cnf was reset to defaults\r\n"); - 800c786: 480a ldr r0, [pc, #40] @ (800c7b0 ) - 800c788: f000 fd44 bl 800d214 + 800c7fe: 480a ldr r0, [pc, #40] @ (800c828 ) + 800c800: f000 fd44 bl 800d28c Config_LoadDefaults(&g_cfg); - 800c78c: 4806 ldr r0, [pc, #24] @ (800c7a8 ) - 800c78e: f000 ff59 bl 800d644 + 800c804: 4806 ldr r0, [pc, #24] @ (800c820 ) + 800c806: f000 ff31 bl 800d66c } App_PrintConfigPrompt(); - 800c792: f000 fc25 bl 800cfe0 + 800c80a: f000 fc25 bl 800d058 } - 800c796: bf00 nop - 800c798: bd80 pop {r7, pc} - 800c79a: bf00 nop - 800c79c: 20000b90 .word 0x20000b90 - 800c7a0: 0800fb68 .word 0x0800fb68 - 800c7a4: 0800fb7c .word 0x0800fb7c - 800c7a8: 20000604 .word 0x20000604 - 800c7ac: 0800fb98 .word 0x0800fb98 - 800c7b0: 0800fbb4 .word 0x0800fbb4 + 800c80e: bf00 nop + 800c810: bd80 pop {r7, pc} + 800c812: bf00 nop + 800c814: 20000bc8 .word 0x20000bc8 + 800c818: 0800fb90 .word 0x0800fb90 + 800c81c: 0800fba4 .word 0x0800fba4 + 800c820: 20000604 .word 0x20000604 + 800c824: 0800fbc0 .word 0x0800fbc0 + 800c828: 0800fbdc .word 0x0800fbdc -0800c7b4 : +0800c82c : static void App_ExitConfigMode(void) { - 800c7b4: b580 push {r7, lr} - 800c7b6: af00 add r7, sp, #0 + 800c82c: b580 push {r7, lr} + 800c82e: af00 add r7, sp, #0 g_cfg_line_len = 0U; - 800c7b8: 4b07 ldr r3, [pc, #28] @ (800c7d8 ) - 800c7ba: 2200 movs r2, #0 - 800c7bc: 801a strh r2, [r3, #0] + 800c830: 4b07 ldr r3, [pc, #28] @ (800c850 ) + 800c832: 2200 movs r2, #0 + 800c834: 801a strh r2, [r3, #0] App_ResetDataPath(); - 800c7be: f000 f813 bl 800c7e8 + 800c836: f000 f813 bl 800c860 g_mode = APP_MODE_DATA; - 800c7c2: 4b06 ldr r3, [pc, #24] @ (800c7dc ) - 800c7c4: 2200 movs r2, #0 - 800c7c6: 701a strb r2, [r3, #0] + 800c83a: 4b06 ldr r3, [pc, #24] @ (800c854 ) + 800c83c: 2200 movs r2, #0 + 800c83e: 701a strb r2, [r3, #0] App_Printf("\r\n[DATA MODE]\r\n"); - 800c7c8: 4805 ldr r0, [pc, #20] @ (800c7e0 ) - 800c7ca: f000 fd23 bl 800d214 + 800c840: 4805 ldr r0, [pc, #20] @ (800c858 ) + 800c842: f000 fd23 bl 800d28c g_radio_needs_rx_restart = 1U; - 800c7ce: 4b05 ldr r3, [pc, #20] @ (800c7e4 ) - 800c7d0: 2201 movs r2, #1 - 800c7d2: 701a strb r2, [r3, #0] + 800c846: 4b05 ldr r3, [pc, #20] @ (800c85c ) + 800c848: 2201 movs r2, #1 + 800c84a: 701a strb r2, [r3, #0] } - 800c7d4: bf00 nop - 800c7d6: bd80 pop {r7, pc} - 800c7d8: 20000bf4 .word 0x20000bf4 - 800c7dc: 20000b90 .word 0x20000b90 - 800c7e0: 0800fbd0 .word 0x0800fbd0 - 800c7e4: 20000640 .word 0x20000640 + 800c84c: bf00 nop + 800c84e: bd80 pop {r7, pc} + 800c850: 20000c2c .word 0x20000c2c + 800c854: 20000bc8 .word 0x20000bc8 + 800c858: 0800fbf8 .word 0x0800fbf8 + 800c85c: 20000679 .word 0x20000679 -0800c7e8 : +0800c860 : static void App_ResetDataPath(void) { - 800c7e8: b480 push {r7} - 800c7ea: af00 add r7, sp, #0 + 800c860: b480 push {r7} + 800c862: af00 add r7, sp, #0 g_uart_build_len = 0U; - 800c7ec: 4b0a ldr r3, [pc, #40] @ (800c818 ) - 800c7ee: 2200 movs r2, #0 - 800c7f0: 801a strh r2, [r3, #0] + 800c864: 4b0a ldr r3, [pc, #40] @ (800c890 ) + 800c866: 2200 movs r2, #0 + 800c868: 801a strh r2, [r3, #0] g_escape.active = 0U; - 800c7f2: 4b0a ldr r3, [pc, #40] @ (800c81c ) - 800c7f4: 2200 movs r2, #0 - 800c7f6: 701a strb r2, [r3, #0] + 800c86a: 4b0a ldr r3, [pc, #40] @ (800c894 ) + 800c86c: 2200 movs r2, #0 + 800c86e: 701a strb r2, [r3, #0] g_escape.count = 0U; - 800c7f8: 4b08 ldr r3, [pc, #32] @ (800c81c ) - 800c7fa: 2200 movs r2, #0 - 800c7fc: 705a strb r2, [r3, #1] + 800c870: 4b08 ldr r3, [pc, #32] @ (800c894 ) + 800c872: 2200 movs r2, #0 + 800c874: 705a strb r2, [r3, #1] g_tx_q_head = 0U; - 800c7fe: 4b08 ldr r3, [pc, #32] @ (800c820 ) - 800c800: 2200 movs r2, #0 - 800c802: 701a strb r2, [r3, #0] + 800c876: 4b08 ldr r3, [pc, #32] @ (800c898 ) + 800c878: 2200 movs r2, #0 + 800c87a: 701a strb r2, [r3, #0] g_tx_q_tail = 0U; - 800c804: 4b07 ldr r3, [pc, #28] @ (800c824 ) - 800c806: 2200 movs r2, #0 - 800c808: 701a strb r2, [r3, #0] + 800c87c: 4b07 ldr r3, [pc, #28] @ (800c89c ) + 800c87e: 2200 movs r2, #0 + 800c880: 701a strb r2, [r3, #0] g_tx_q_count = 0U; - 800c80a: 4b07 ldr r3, [pc, #28] @ (800c828 ) - 800c80c: 2200 movs r2, #0 - 800c80e: 701a strb r2, [r3, #0] + 800c882: 4b07 ldr r3, [pc, #28] @ (800c8a0 ) + 800c884: 2200 movs r2, #0 + 800c886: 701a strb r2, [r3, #0] } - 800c810: bf00 nop - 800c812: 46bd mov sp, r7 - 800c814: bc80 pop {r7} - 800c816: 4770 bx lr - 800c818: 20000b78 .word 0x20000b78 - 800c81c: 20000b80 .word 0x20000b80 - 800c820: 20000a98 .word 0x20000a98 - 800c824: 20000a99 .word 0x20000a99 - 800c828: 20000a9a .word 0x20000a9a + 800c888: bf00 nop + 800c88a: 46bd mov sp, r7 + 800c88c: bc80 pop {r7} + 800c88e: 4770 bx lr + 800c890: 20000bb0 .word 0x20000bb0 + 800c894: 20000bb8 .word 0x20000bb8 + 800c898: 20000ad0 .word 0x20000ad0 + 800c89c: 20000ad1 .word 0x20000ad1 + 800c8a0: 20000ad2 .word 0x20000ad2 -0800c82c : +0800c8a4 : static void App_DataModeFeedByte(uint8_t ch, uint32_t now) { - 800c82c: b580 push {r7, lr} - 800c82e: b082 sub sp, #8 - 800c830: af00 add r7, sp, #0 - 800c832: 4603 mov r3, r0 - 800c834: 6039 str r1, [r7, #0] - 800c836: 71fb strb r3, [r7, #7] + 800c8a4: b580 push {r7, lr} + 800c8a6: b082 sub sp, #8 + 800c8a8: af00 add r7, sp, #0 + 800c8aa: 4603 mov r3, r0 + 800c8ac: 6039 str r1, [r7, #0] + 800c8ae: 71fb strb r3, [r7, #7] if (g_uart_build_len < UART_DATA_BUFFER_SIZE) - 800c838: 4b19 ldr r3, [pc, #100] @ (800c8a0 ) - 800c83a: 881b ldrh r3, [r3, #0] - 800c83c: 2bdb cmp r3, #219 @ 0xdb - 800c83e: d812 bhi.n 800c866 + 800c8b0: 4b19 ldr r3, [pc, #100] @ (800c918 ) + 800c8b2: 881b ldrh r3, [r3, #0] + 800c8b4: 2bdb cmp r3, #219 @ 0xdb + 800c8b6: d812 bhi.n 800c8de { g_uart_build_buf[g_uart_build_len++] = ch; - 800c840: 4b17 ldr r3, [pc, #92] @ (800c8a0 ) - 800c842: 881b ldrh r3, [r3, #0] - 800c844: 1c5a adds r2, r3, #1 - 800c846: b291 uxth r1, r2 - 800c848: 4a15 ldr r2, [pc, #84] @ (800c8a0 ) - 800c84a: 8011 strh r1, [r2, #0] - 800c84c: 4619 mov r1, r3 - 800c84e: 4a15 ldr r2, [pc, #84] @ (800c8a4 ) - 800c850: 79fb ldrb r3, [r7, #7] - 800c852: 5453 strb r3, [r2, r1] + 800c8b8: 4b17 ldr r3, [pc, #92] @ (800c918 ) + 800c8ba: 881b ldrh r3, [r3, #0] + 800c8bc: 1c5a adds r2, r3, #1 + 800c8be: b291 uxth r1, r2 + 800c8c0: 4a15 ldr r2, [pc, #84] @ (800c918 ) + 800c8c2: 8011 strh r1, [r2, #0] + 800c8c4: 4619 mov r1, r3 + 800c8c6: 4a15 ldr r2, [pc, #84] @ (800c91c ) + 800c8c8: 79fb ldrb r3, [r7, #7] + 800c8ca: 5453 strb r3, [r2, r1] g_uart_last_data_tick = now; - 800c854: 4a14 ldr r2, [pc, #80] @ (800c8a8 ) - 800c856: 683b ldr r3, [r7, #0] - 800c858: 6013 str r3, [r2, #0] + 800c8cc: 4a14 ldr r2, [pc, #80] @ (800c920 ) + 800c8ce: 683b ldr r3, [r7, #0] + 800c8d0: 6013 str r3, [r2, #0] g_stat_uart_bytes_tx++; - 800c85a: 4b14 ldr r3, [pc, #80] @ (800c8ac ) - 800c85c: 681b ldr r3, [r3, #0] - 800c85e: 3301 adds r3, #1 - 800c860: 4a12 ldr r2, [pc, #72] @ (800c8ac ) - 800c862: 6013 str r3, [r2, #0] + 800c8d2: 4b14 ldr r3, [pc, #80] @ (800c924 ) + 800c8d4: 681b ldr r3, [r3, #0] + 800c8d6: 3301 adds r3, #1 + 800c8d8: 4a12 ldr r2, [pc, #72] @ (800c924 ) + 800c8da: 6013 str r3, [r2, #0] g_uart_build_buf[g_uart_build_len++] = ch; g_uart_last_data_tick = now; g_stat_uart_bytes_tx++; } } } - 800c864: e017 b.n 800c896 + 800c8dc: e017 b.n 800c90e App_DataModeFlushBuilder(); - 800c866: f000 f823 bl 800c8b0 + 800c8de: f000 f823 bl 800c928 if (g_uart_build_len < UART_DATA_BUFFER_SIZE) - 800c86a: 4b0d ldr r3, [pc, #52] @ (800c8a0 ) - 800c86c: 881b ldrh r3, [r3, #0] - 800c86e: 2bdb cmp r3, #219 @ 0xdb - 800c870: d811 bhi.n 800c896 + 800c8e2: 4b0d ldr r3, [pc, #52] @ (800c918 ) + 800c8e4: 881b ldrh r3, [r3, #0] + 800c8e6: 2bdb cmp r3, #219 @ 0xdb + 800c8e8: d811 bhi.n 800c90e g_uart_build_buf[g_uart_build_len++] = ch; - 800c872: 4b0b ldr r3, [pc, #44] @ (800c8a0 ) - 800c874: 881b ldrh r3, [r3, #0] - 800c876: 1c5a adds r2, r3, #1 - 800c878: b291 uxth r1, r2 - 800c87a: 4a09 ldr r2, [pc, #36] @ (800c8a0 ) - 800c87c: 8011 strh r1, [r2, #0] - 800c87e: 4619 mov r1, r3 - 800c880: 4a08 ldr r2, [pc, #32] @ (800c8a4 ) - 800c882: 79fb ldrb r3, [r7, #7] - 800c884: 5453 strb r3, [r2, r1] + 800c8ea: 4b0b ldr r3, [pc, #44] @ (800c918 ) + 800c8ec: 881b ldrh r3, [r3, #0] + 800c8ee: 1c5a adds r2, r3, #1 + 800c8f0: b291 uxth r1, r2 + 800c8f2: 4a09 ldr r2, [pc, #36] @ (800c918 ) + 800c8f4: 8011 strh r1, [r2, #0] + 800c8f6: 4619 mov r1, r3 + 800c8f8: 4a08 ldr r2, [pc, #32] @ (800c91c ) + 800c8fa: 79fb ldrb r3, [r7, #7] + 800c8fc: 5453 strb r3, [r2, r1] g_uart_last_data_tick = now; - 800c886: 4a08 ldr r2, [pc, #32] @ (800c8a8 ) - 800c888: 683b ldr r3, [r7, #0] - 800c88a: 6013 str r3, [r2, #0] + 800c8fe: 4a08 ldr r2, [pc, #32] @ (800c920 ) + 800c900: 683b ldr r3, [r7, #0] + 800c902: 6013 str r3, [r2, #0] g_stat_uart_bytes_tx++; - 800c88c: 4b07 ldr r3, [pc, #28] @ (800c8ac ) - 800c88e: 681b ldr r3, [r3, #0] - 800c890: 3301 adds r3, #1 - 800c892: 4a06 ldr r2, [pc, #24] @ (800c8ac ) - 800c894: 6013 str r3, [r2, #0] + 800c904: 4b07 ldr r3, [pc, #28] @ (800c924 ) + 800c906: 681b ldr r3, [r3, #0] + 800c908: 3301 adds r3, #1 + 800c90a: 4a06 ldr r2, [pc, #24] @ (800c924 ) + 800c90c: 6013 str r3, [r2, #0] } - 800c896: bf00 nop - 800c898: 3708 adds r7, #8 - 800c89a: 46bd mov sp, r7 - 800c89c: bd80 pop {r7, pc} - 800c89e: bf00 nop - 800c8a0: 20000b78 .word 0x20000b78 - 800c8a4: 20000a9c .word 0x20000a9c - 800c8a8: 20000b7c .word 0x20000b7c - 800c8ac: 20000bfc .word 0x20000bfc + 800c90e: bf00 nop + 800c910: 3708 adds r7, #8 + 800c912: 46bd mov sp, r7 + 800c914: bd80 pop {r7, pc} + 800c916: bf00 nop + 800c918: 20000bb0 .word 0x20000bb0 + 800c91c: 20000ad4 .word 0x20000ad4 + 800c920: 20000bb4 .word 0x20000bb4 + 800c924: 20000c34 .word 0x20000c34 -0800c8b0 : +0800c928 : static void App_DataModeFlushBuilder(void) { - 800c8b0: b580 push {r7, lr} - 800c8b2: af00 add r7, sp, #0 + 800c928: b580 push {r7, lr} + 800c92a: af00 add r7, sp, #0 if (g_uart_build_len == 0U) - 800c8b4: 4b0b ldr r3, [pc, #44] @ (800c8e4 ) - 800c8b6: 881b ldrh r3, [r3, #0] - 800c8b8: 2b00 cmp r3, #0 - 800c8ba: d011 beq.n 800c8e0 + 800c92c: 4b0b ldr r3, [pc, #44] @ (800c95c ) + 800c92e: 881b ldrh r3, [r3, #0] + 800c930: 2b00 cmp r3, #0 + 800c932: d011 beq.n 800c958 { return; } if (App_QueuePush(g_uart_build_buf, g_uart_build_len) == 0U) - 800c8bc: 4b09 ldr r3, [pc, #36] @ (800c8e4 ) - 800c8be: 881b ldrh r3, [r3, #0] - 800c8c0: 4619 mov r1, r3 - 800c8c2: 4809 ldr r0, [pc, #36] @ (800c8e8 ) - 800c8c4: f000 f814 bl 800c8f0 - 800c8c8: 4603 mov r3, r0 - 800c8ca: 2b00 cmp r3, #0 - 800c8cc: d104 bne.n 800c8d8 + 800c934: 4b09 ldr r3, [pc, #36] @ (800c95c ) + 800c936: 881b ldrh r3, [r3, #0] + 800c938: 4619 mov r1, r3 + 800c93a: 4809 ldr r0, [pc, #36] @ (800c960 ) + 800c93c: f000 f814 bl 800c968 + 800c940: 4603 mov r3, r0 + 800c942: 2b00 cmp r3, #0 + 800c944: d104 bne.n 800c950 { g_stat_queue_overflow++; - 800c8ce: 4b07 ldr r3, [pc, #28] @ (800c8ec ) - 800c8d0: 681b ldr r3, [r3, #0] - 800c8d2: 3301 adds r3, #1 - 800c8d4: 4a05 ldr r2, [pc, #20] @ (800c8ec ) - 800c8d6: 6013 str r3, [r2, #0] + 800c946: 4b07 ldr r3, [pc, #28] @ (800c964 ) + 800c948: 681b ldr r3, [r3, #0] + 800c94a: 3301 adds r3, #1 + 800c94c: 4a05 ldr r2, [pc, #20] @ (800c964 ) + 800c94e: 6013 str r3, [r2, #0] } g_uart_build_len = 0U; - 800c8d8: 4b02 ldr r3, [pc, #8] @ (800c8e4 ) - 800c8da: 2200 movs r2, #0 - 800c8dc: 801a strh r2, [r3, #0] - 800c8de: e000 b.n 800c8e2 + 800c950: 4b02 ldr r3, [pc, #8] @ (800c95c ) + 800c952: 2200 movs r2, #0 + 800c954: 801a strh r2, [r3, #0] + 800c956: e000 b.n 800c95a return; - 800c8e0: bf00 nop + 800c958: bf00 nop } - 800c8e2: bd80 pop {r7, pc} - 800c8e4: 20000b78 .word 0x20000b78 - 800c8e8: 20000a9c .word 0x20000a9c - 800c8ec: 20000c08 .word 0x20000c08 + 800c95a: bd80 pop {r7, pc} + 800c95c: 20000bb0 .word 0x20000bb0 + 800c960: 20000ad4 .word 0x20000ad4 + 800c964: 20000c40 .word 0x20000c40 -0800c8f0 : +0800c968 : static uint8_t App_QueuePush(const uint8_t *data, uint16_t len) { - 800c8f0: b580 push {r7, lr} - 800c8f2: b082 sub sp, #8 - 800c8f4: af00 add r7, sp, #0 - 800c8f6: 6078 str r0, [r7, #4] - 800c8f8: 460b mov r3, r1 - 800c8fa: 807b strh r3, [r7, #2] + 800c968: b580 push {r7, lr} + 800c96a: b082 sub sp, #8 + 800c96c: af00 add r7, sp, #0 + 800c96e: 6078 str r0, [r7, #4] + 800c970: 460b mov r3, r1 + 800c972: 807b strh r3, [r7, #2] if ((len == 0U) || (len > RADIO_MAX_PAYLOAD_SIZE) || (g_tx_q_count >= TX_QUEUE_DEPTH)) - 800c8fc: 887b ldrh r3, [r7, #2] - 800c8fe: 2b00 cmp r3, #0 - 800c900: d006 beq.n 800c910 - 800c902: 887b ldrh r3, [r7, #2] - 800c904: 2bdc cmp r3, #220 @ 0xdc - 800c906: d803 bhi.n 800c910 - 800c908: 4b19 ldr r3, [pc, #100] @ (800c970 ) - 800c90a: 781b ldrb r3, [r3, #0] - 800c90c: 2b03 cmp r3, #3 - 800c90e: d901 bls.n 800c914 + 800c974: 887b ldrh r3, [r7, #2] + 800c976: 2b00 cmp r3, #0 + 800c978: d006 beq.n 800c988 + 800c97a: 887b ldrh r3, [r7, #2] + 800c97c: 2bdc cmp r3, #220 @ 0xdc + 800c97e: d803 bhi.n 800c988 + 800c980: 4b19 ldr r3, [pc, #100] @ (800c9e8 ) + 800c982: 781b ldrb r3, [r3, #0] + 800c984: 2b03 cmp r3, #3 + 800c986: d901 bls.n 800c98c { return 0U; - 800c910: 2300 movs r3, #0 - 800c912: e029 b.n 800c968 + 800c988: 2300 movs r3, #0 + 800c98a: e029 b.n 800c9e0 } memcpy(g_tx_queue[g_tx_q_tail].data, data, len); - 800c914: 4b17 ldr r3, [pc, #92] @ (800c974 ) - 800c916: 781b ldrb r3, [r3, #0] - 800c918: 461a mov r2, r3 - 800c91a: 23dd movs r3, #221 @ 0xdd - 800c91c: fb02 f303 mul.w r3, r2, r3 - 800c920: 4a15 ldr r2, [pc, #84] @ (800c978 ) - 800c922: 4413 add r3, r2 - 800c924: 887a ldrh r2, [r7, #2] - 800c926: 6879 ldr r1, [r7, #4] - 800c928: 4618 mov r0, r3 - 800c92a: f002 fb55 bl 800efd8 + 800c98c: 4b17 ldr r3, [pc, #92] @ (800c9ec ) + 800c98e: 781b ldrb r3, [r3, #0] + 800c990: 461a mov r2, r3 + 800c992: 23dd movs r3, #221 @ 0xdd + 800c994: fb02 f303 mul.w r3, r2, r3 + 800c998: 4a15 ldr r2, [pc, #84] @ (800c9f0 ) + 800c99a: 4413 add r3, r2 + 800c99c: 887a ldrh r2, [r7, #2] + 800c99e: 6879 ldr r1, [r7, #4] + 800c9a0: 4618 mov r0, r3 + 800c9a2: f002 fb2d bl 800f000 g_tx_queue[g_tx_q_tail].len = (uint8_t)len; - 800c92e: 4b11 ldr r3, [pc, #68] @ (800c974 ) - 800c930: 781b ldrb r3, [r3, #0] - 800c932: 4618 mov r0, r3 - 800c934: 887b ldrh r3, [r7, #2] - 800c936: b2d9 uxtb r1, r3 - 800c938: 4a0f ldr r2, [pc, #60] @ (800c978 ) - 800c93a: 23dd movs r3, #221 @ 0xdd - 800c93c: fb00 f303 mul.w r3, r0, r3 - 800c940: 4413 add r3, r2 - 800c942: 33dc adds r3, #220 @ 0xdc - 800c944: 460a mov r2, r1 - 800c946: 701a strb r2, [r3, #0] + 800c9a6: 4b11 ldr r3, [pc, #68] @ (800c9ec ) + 800c9a8: 781b ldrb r3, [r3, #0] + 800c9aa: 4618 mov r0, r3 + 800c9ac: 887b ldrh r3, [r7, #2] + 800c9ae: b2d9 uxtb r1, r3 + 800c9b0: 4a0f ldr r2, [pc, #60] @ (800c9f0 ) + 800c9b2: 23dd movs r3, #221 @ 0xdd + 800c9b4: fb00 f303 mul.w r3, r0, r3 + 800c9b8: 4413 add r3, r2 + 800c9ba: 33dc adds r3, #220 @ 0xdc + 800c9bc: 460a mov r2, r1 + 800c9be: 701a strb r2, [r3, #0] g_tx_q_tail = (uint8_t)((g_tx_q_tail + 1U) % TX_QUEUE_DEPTH); - 800c948: 4b0a ldr r3, [pc, #40] @ (800c974 ) - 800c94a: 781b ldrb r3, [r3, #0] - 800c94c: 3301 adds r3, #1 - 800c94e: b2db uxtb r3, r3 - 800c950: f003 0303 and.w r3, r3, #3 - 800c954: b2da uxtb r2, r3 - 800c956: 4b07 ldr r3, [pc, #28] @ (800c974 ) - 800c958: 701a strb r2, [r3, #0] + 800c9c0: 4b0a ldr r3, [pc, #40] @ (800c9ec ) + 800c9c2: 781b ldrb r3, [r3, #0] + 800c9c4: 3301 adds r3, #1 + 800c9c6: b2db uxtb r3, r3 + 800c9c8: f003 0303 and.w r3, r3, #3 + 800c9cc: b2da uxtb r2, r3 + 800c9ce: 4b07 ldr r3, [pc, #28] @ (800c9ec ) + 800c9d0: 701a strb r2, [r3, #0] g_tx_q_count++; - 800c95a: 4b05 ldr r3, [pc, #20] @ (800c970 ) - 800c95c: 781b ldrb r3, [r3, #0] - 800c95e: 3301 adds r3, #1 - 800c960: b2da uxtb r2, r3 - 800c962: 4b03 ldr r3, [pc, #12] @ (800c970 ) - 800c964: 701a strb r2, [r3, #0] + 800c9d2: 4b05 ldr r3, [pc, #20] @ (800c9e8 ) + 800c9d4: 781b ldrb r3, [r3, #0] + 800c9d6: 3301 adds r3, #1 + 800c9d8: b2da uxtb r2, r3 + 800c9da: 4b03 ldr r3, [pc, #12] @ (800c9e8 ) + 800c9dc: 701a strb r2, [r3, #0] return 1U; - 800c966: 2301 movs r3, #1 + 800c9de: 2301 movs r3, #1 } - 800c968: 4618 mov r0, r3 - 800c96a: 3708 adds r7, #8 - 800c96c: 46bd mov sp, r7 - 800c96e: bd80 pop {r7, pc} - 800c970: 20000a9a .word 0x20000a9a - 800c974: 20000a99 .word 0x20000a99 - 800c978: 20000724 .word 0x20000724 + 800c9e0: 4618 mov r0, r3 + 800c9e2: 3708 adds r7, #8 + 800c9e4: 46bd mov sp, r7 + 800c9e6: bd80 pop {r7, pc} + 800c9e8: 20000ad2 .word 0x20000ad2 + 800c9ec: 20000ad1 .word 0x20000ad1 + 800c9f0: 2000075c .word 0x2000075c -0800c97c : +0800c9f4 : static void App_QueuePop(void) { - 800c97c: b480 push {r7} - 800c97e: af00 add r7, sp, #0 + 800c9f4: b480 push {r7} + 800c9f6: af00 add r7, sp, #0 if (g_tx_q_count == 0U) - 800c980: 4b0b ldr r3, [pc, #44] @ (800c9b0 ) - 800c982: 781b ldrb r3, [r3, #0] - 800c984: 2b00 cmp r3, #0 - 800c986: d00f beq.n 800c9a8 + 800c9f8: 4b0b ldr r3, [pc, #44] @ (800ca28 ) + 800c9fa: 781b ldrb r3, [r3, #0] + 800c9fc: 2b00 cmp r3, #0 + 800c9fe: d00f beq.n 800ca20 { return; } g_tx_q_head = (uint8_t)((g_tx_q_head + 1U) % TX_QUEUE_DEPTH); - 800c988: 4b0a ldr r3, [pc, #40] @ (800c9b4 ) - 800c98a: 781b ldrb r3, [r3, #0] - 800c98c: 3301 adds r3, #1 - 800c98e: b2db uxtb r3, r3 - 800c990: f003 0303 and.w r3, r3, #3 - 800c994: b2da uxtb r2, r3 - 800c996: 4b07 ldr r3, [pc, #28] @ (800c9b4 ) - 800c998: 701a strb r2, [r3, #0] + 800ca00: 4b0a ldr r3, [pc, #40] @ (800ca2c ) + 800ca02: 781b ldrb r3, [r3, #0] + 800ca04: 3301 adds r3, #1 + 800ca06: b2db uxtb r3, r3 + 800ca08: f003 0303 and.w r3, r3, #3 + 800ca0c: b2da uxtb r2, r3 + 800ca0e: 4b07 ldr r3, [pc, #28] @ (800ca2c ) + 800ca10: 701a strb r2, [r3, #0] g_tx_q_count--; - 800c99a: 4b05 ldr r3, [pc, #20] @ (800c9b0 ) - 800c99c: 781b ldrb r3, [r3, #0] - 800c99e: 3b01 subs r3, #1 - 800c9a0: b2da uxtb r2, r3 - 800c9a2: 4b03 ldr r3, [pc, #12] @ (800c9b0 ) - 800c9a4: 701a strb r2, [r3, #0] - 800c9a6: e000 b.n 800c9aa + 800ca12: 4b05 ldr r3, [pc, #20] @ (800ca28 ) + 800ca14: 781b ldrb r3, [r3, #0] + 800ca16: 3b01 subs r3, #1 + 800ca18: b2da uxtb r2, r3 + 800ca1a: 4b03 ldr r3, [pc, #12] @ (800ca28 ) + 800ca1c: 701a strb r2, [r3, #0] + 800ca1e: e000 b.n 800ca22 return; - 800c9a8: bf00 nop + 800ca20: bf00 nop } - 800c9aa: 46bd mov sp, r7 - 800c9ac: bc80 pop {r7} - 800c9ae: 4770 bx lr - 800c9b0: 20000a9a .word 0x20000a9a - 800c9b4: 20000a98 .word 0x20000a98 + 800ca22: 46bd mov sp, r7 + 800ca24: bc80 pop {r7} + 800ca26: 4770 bx lr + 800ca28: 20000ad2 .word 0x20000ad2 + 800ca2c: 20000ad0 .word 0x20000ad0 -0800c9b8 : +0800ca30 : static void UartRxByteCallback(uint8_t *rxChar, uint16_t size, uint8_t error) { - 800c9b8: b580 push {r7, lr} - 800c9ba: b084 sub sp, #16 - 800c9bc: af00 add r7, sp, #0 - 800c9be: 6078 str r0, [r7, #4] - 800c9c0: 460b mov r3, r1 - 800c9c2: 807b strh r3, [r7, #2] - 800c9c4: 4613 mov r3, r2 - 800c9c6: 707b strb r3, [r7, #1] + 800ca30: b580 push {r7, lr} + 800ca32: b084 sub sp, #16 + 800ca34: af00 add r7, sp, #0 + 800ca36: 6078 str r0, [r7, #4] + 800ca38: 460b mov r3, r1 + 800ca3a: 807b strh r3, [r7, #2] + 800ca3c: 4613 mov r3, r2 + 800ca3e: 707b strb r3, [r7, #1] uint8_t ch; uint32_t now; uint8_t i; if ((error != 0U) || (size == 0U) || (rxChar == NULL)) - 800c9c8: 787b ldrb r3, [r7, #1] - 800c9ca: 2b00 cmp r3, #0 - 800c9cc: f040 808a bne.w 800cae4 - 800c9d0: 887b ldrh r3, [r7, #2] - 800c9d2: 2b00 cmp r3, #0 - 800c9d4: f000 8086 beq.w 800cae4 - 800c9d8: 687b ldr r3, [r7, #4] - 800c9da: 2b00 cmp r3, #0 - 800c9dc: f000 8082 beq.w 800cae4 + 800ca40: 787b ldrb r3, [r7, #1] + 800ca42: 2b00 cmp r3, #0 + 800ca44: f040 808a bne.w 800cb5c + 800ca48: 887b ldrh r3, [r7, #2] + 800ca4a: 2b00 cmp r3, #0 + 800ca4c: f000 8086 beq.w 800cb5c + 800ca50: 687b ldr r3, [r7, #4] + 800ca52: 2b00 cmp r3, #0 + 800ca54: f000 8082 beq.w 800cb5c { return; } ch = rxChar[0]; - 800c9e0: 687b ldr r3, [r7, #4] - 800c9e2: 781b ldrb r3, [r3, #0] - 800c9e4: 73bb strb r3, [r7, #14] + 800ca58: 687b ldr r3, [r7, #4] + 800ca5a: 781b ldrb r3, [r3, #0] + 800ca5c: 73bb strb r3, [r7, #14] now = HAL_GetTick(); - 800c9e6: f7f4 f92f bl 8000c48 - 800c9ea: 60b8 str r0, [r7, #8] + 800ca5e: f7f4 f8f3 bl 8000c48 + 800ca62: 60b8 str r0, [r7, #8] if (g_mode == APP_MODE_CONFIG) - 800c9ec: 4b3f ldr r3, [pc, #252] @ (800caec ) - 800c9ee: 781b ldrb r3, [r3, #0] - 800c9f0: 2b01 cmp r3, #1 - 800c9f2: d104 bne.n 800c9fe + 800ca64: 4b3f ldr r3, [pc, #252] @ (800cb64 ) + 800ca66: 781b ldrb r3, [r3, #0] + 800ca68: 2b01 cmp r3, #1 + 800ca6a: d104 bne.n 800ca76 { App_ConfigFeedByte(ch); - 800c9f4: 7bbb ldrb r3, [r7, #14] - 800c9f6: 4618 mov r0, r3 - 800c9f8: f000 f87e bl 800caf8 + 800ca6c: 7bbb ldrb r3, [r7, #14] + 800ca6e: 4618 mov r0, r3 + 800ca70: f000 f87e bl 800cb70 return; - 800c9fc: e073 b.n 800cae6 + 800ca74: e073 b.n 800cb5e } if (g_escape.active == 0U) - 800c9fe: 4b3c ldr r3, [pc, #240] @ (800caf0 ) - 800ca00: 781b ldrb r3, [r3, #0] - 800ca02: 2b00 cmp r3, #0 - 800ca04: d11f bne.n 800ca46 + 800ca76: 4b3c ldr r3, [pc, #240] @ (800cb68 ) + 800ca78: 781b ldrb r3, [r3, #0] + 800ca7a: 2b00 cmp r3, #0 + 800ca7c: d11f bne.n 800cabe { if (((now - g_uart_last_data_tick) >= CONFIG_ESCAPE_GUARD_MS) && (ch == '+')) - 800ca06: 4b3b ldr r3, [pc, #236] @ (800caf4 ) - 800ca08: 681b ldr r3, [r3, #0] - 800ca0a: 68ba ldr r2, [r7, #8] - 800ca0c: 1ad3 subs r3, r2, r3 - 800ca0e: f5b3 7f48 cmp.w r3, #800 @ 0x320 - 800ca12: d312 bcc.n 800ca3a - 800ca14: 7bbb ldrb r3, [r7, #14] - 800ca16: 2b2b cmp r3, #43 @ 0x2b - 800ca18: d10f bne.n 800ca3a + 800ca7e: 4b3b ldr r3, [pc, #236] @ (800cb6c ) + 800ca80: 681b ldr r3, [r3, #0] + 800ca82: 68ba ldr r2, [r7, #8] + 800ca84: 1ad3 subs r3, r2, r3 + 800ca86: f5b3 7f48 cmp.w r3, #800 @ 0x320 + 800ca8a: d312 bcc.n 800cab2 + 800ca8c: 7bbb ldrb r3, [r7, #14] + 800ca8e: 2b2b cmp r3, #43 @ 0x2b + 800ca90: d10f bne.n 800cab2 { g_escape.active = 1U; - 800ca1a: 4b35 ldr r3, [pc, #212] @ (800caf0 ) - 800ca1c: 2201 movs r2, #1 - 800ca1e: 701a strb r2, [r3, #0] + 800ca92: 4b35 ldr r3, [pc, #212] @ (800cb68 ) + 800ca94: 2201 movs r2, #1 + 800ca96: 701a strb r2, [r3, #0] g_escape.count = 1U; - 800ca20: 4b33 ldr r3, [pc, #204] @ (800caf0 ) - 800ca22: 2201 movs r2, #1 - 800ca24: 705a strb r2, [r3, #1] + 800ca98: 4b33 ldr r3, [pc, #204] @ (800cb68 ) + 800ca9a: 2201 movs r2, #1 + 800ca9c: 705a strb r2, [r3, #1] g_escape.bytes[0] = ch; - 800ca26: 4a32 ldr r2, [pc, #200] @ (800caf0 ) - 800ca28: 7bbb ldrb r3, [r7, #14] - 800ca2a: 7093 strb r3, [r2, #2] + 800ca9e: 4a32 ldr r2, [pc, #200] @ (800cb68 ) + 800caa0: 7bbb ldrb r3, [r7, #14] + 800caa2: 7093 strb r3, [r2, #2] g_escape.start_tick = now; - 800ca2c: 4a30 ldr r2, [pc, #192] @ (800caf0 ) - 800ca2e: 68bb ldr r3, [r7, #8] - 800ca30: 6093 str r3, [r2, #8] + 800caa4: 4a30 ldr r2, [pc, #192] @ (800cb68 ) + 800caa6: 68bb ldr r3, [r7, #8] + 800caa8: 6093 str r3, [r2, #8] g_escape.last_tick = now; - 800ca32: 4a2f ldr r2, [pc, #188] @ (800caf0 ) - 800ca34: 68bb ldr r3, [r7, #8] - 800ca36: 60d3 str r3, [r2, #12] + 800caaa: 4a2f ldr r2, [pc, #188] @ (800cb68 ) + 800caac: 68bb ldr r3, [r7, #8] + 800caae: 60d3 str r3, [r2, #12] return; - 800ca38: e055 b.n 800cae6 + 800cab0: e055 b.n 800cb5e } App_DataModeFeedByte(ch, now); - 800ca3a: 7bbb ldrb r3, [r7, #14] - 800ca3c: 68b9 ldr r1, [r7, #8] - 800ca3e: 4618 mov r0, r3 - 800ca40: f7ff fef4 bl 800c82c + 800cab2: 7bbb ldrb r3, [r7, #14] + 800cab4: 68b9 ldr r1, [r7, #8] + 800cab6: 4618 mov r0, r3 + 800cab8: f7ff fef4 bl 800c8a4 return; - 800ca44: e04f b.n 800cae6 + 800cabc: e04f b.n 800cb5e } if ((ch == '+') && (g_escape.count < 3U)) - 800ca46: 7bbb ldrb r3, [r7, #14] - 800ca48: 2b2b cmp r3, #43 @ 0x2b - 800ca4a: d112 bne.n 800ca72 - 800ca4c: 4b28 ldr r3, [pc, #160] @ (800caf0 ) - 800ca4e: 785b ldrb r3, [r3, #1] - 800ca50: 2b02 cmp r3, #2 - 800ca52: d80e bhi.n 800ca72 + 800cabe: 7bbb ldrb r3, [r7, #14] + 800cac0: 2b2b cmp r3, #43 @ 0x2b + 800cac2: d112 bne.n 800caea + 800cac4: 4b28 ldr r3, [pc, #160] @ (800cb68 ) + 800cac6: 785b ldrb r3, [r3, #1] + 800cac8: 2b02 cmp r3, #2 + 800caca: d80e bhi.n 800caea { g_escape.bytes[g_escape.count++] = ch; - 800ca54: 4b26 ldr r3, [pc, #152] @ (800caf0 ) - 800ca56: 785b ldrb r3, [r3, #1] - 800ca58: 1c5a adds r2, r3, #1 - 800ca5a: b2d1 uxtb r1, r2 - 800ca5c: 4a24 ldr r2, [pc, #144] @ (800caf0 ) - 800ca5e: 7051 strb r1, [r2, #1] - 800ca60: 461a mov r2, r3 - 800ca62: 4b23 ldr r3, [pc, #140] @ (800caf0 ) - 800ca64: 4413 add r3, r2 - 800ca66: 7bba ldrb r2, [r7, #14] - 800ca68: 709a strb r2, [r3, #2] + 800cacc: 4b26 ldr r3, [pc, #152] @ (800cb68 ) + 800cace: 785b ldrb r3, [r3, #1] + 800cad0: 1c5a adds r2, r3, #1 + 800cad2: b2d1 uxtb r1, r2 + 800cad4: 4a24 ldr r2, [pc, #144] @ (800cb68 ) + 800cad6: 7051 strb r1, [r2, #1] + 800cad8: 461a mov r2, r3 + 800cada: 4b23 ldr r3, [pc, #140] @ (800cb68 ) + 800cadc: 4413 add r3, r2 + 800cade: 7bba ldrb r2, [r7, #14] + 800cae0: 709a strb r2, [r3, #2] g_escape.last_tick = now; - 800ca6a: 4a21 ldr r2, [pc, #132] @ (800caf0 ) - 800ca6c: 68bb ldr r3, [r7, #8] - 800ca6e: 60d3 str r3, [r2, #12] + 800cae2: 4a21 ldr r2, [pc, #132] @ (800cb68 ) + 800cae4: 68bb ldr r3, [r7, #8] + 800cae6: 60d3 str r3, [r2, #12] return; - 800ca70: e039 b.n 800cae6 + 800cae8: e039 b.n 800cb5e } for (i = 0U; i < g_escape.count; i++) - 800ca72: 2300 movs r3, #0 - 800ca74: 73fb strb r3, [r7, #15] - 800ca76: e00a b.n 800ca8e + 800caea: 2300 movs r3, #0 + 800caec: 73fb strb r3, [r7, #15] + 800caee: e00a b.n 800cb06 { App_DataModeFeedByte(g_escape.bytes[i], now); - 800ca78: 7bfb ldrb r3, [r7, #15] - 800ca7a: 4a1d ldr r2, [pc, #116] @ (800caf0 ) - 800ca7c: 4413 add r3, r2 - 800ca7e: 789b ldrb r3, [r3, #2] - 800ca80: 68b9 ldr r1, [r7, #8] - 800ca82: 4618 mov r0, r3 - 800ca84: f7ff fed2 bl 800c82c + 800caf0: 7bfb ldrb r3, [r7, #15] + 800caf2: 4a1d ldr r2, [pc, #116] @ (800cb68 ) + 800caf4: 4413 add r3, r2 + 800caf6: 789b ldrb r3, [r3, #2] + 800caf8: 68b9 ldr r1, [r7, #8] + 800cafa: 4618 mov r0, r3 + 800cafc: f7ff fed2 bl 800c8a4 for (i = 0U; i < g_escape.count; i++) - 800ca88: 7bfb ldrb r3, [r7, #15] - 800ca8a: 3301 adds r3, #1 - 800ca8c: 73fb strb r3, [r7, #15] - 800ca8e: 4b18 ldr r3, [pc, #96] @ (800caf0 ) - 800ca90: 785b ldrb r3, [r3, #1] - 800ca92: 7bfa ldrb r2, [r7, #15] - 800ca94: 429a cmp r2, r3 - 800ca96: d3ef bcc.n 800ca78 + 800cb00: 7bfb ldrb r3, [r7, #15] + 800cb02: 3301 adds r3, #1 + 800cb04: 73fb strb r3, [r7, #15] + 800cb06: 4b18 ldr r3, [pc, #96] @ (800cb68 ) + 800cb08: 785b ldrb r3, [r3, #1] + 800cb0a: 7bfa ldrb r2, [r7, #15] + 800cb0c: 429a cmp r2, r3 + 800cb0e: d3ef bcc.n 800caf0 } g_escape.active = 0U; - 800ca98: 4b15 ldr r3, [pc, #84] @ (800caf0 ) - 800ca9a: 2200 movs r2, #0 - 800ca9c: 701a strb r2, [r3, #0] + 800cb10: 4b15 ldr r3, [pc, #84] @ (800cb68 ) + 800cb12: 2200 movs r2, #0 + 800cb14: 701a strb r2, [r3, #0] g_escape.count = 0U; - 800ca9e: 4b14 ldr r3, [pc, #80] @ (800caf0 ) - 800caa0: 2200 movs r2, #0 - 800caa2: 705a strb r2, [r3, #1] + 800cb16: 4b14 ldr r3, [pc, #80] @ (800cb68 ) + 800cb18: 2200 movs r2, #0 + 800cb1a: 705a strb r2, [r3, #1] if (((now - g_uart_last_data_tick) >= CONFIG_ESCAPE_GUARD_MS) && (ch == '+')) - 800caa4: 4b13 ldr r3, [pc, #76] @ (800caf4 ) - 800caa6: 681b ldr r3, [r3, #0] - 800caa8: 68ba ldr r2, [r7, #8] - 800caaa: 1ad3 subs r3, r2, r3 - 800caac: f5b3 7f48 cmp.w r3, #800 @ 0x320 - 800cab0: d312 bcc.n 800cad8 - 800cab2: 7bbb ldrb r3, [r7, #14] - 800cab4: 2b2b cmp r3, #43 @ 0x2b - 800cab6: d10f bne.n 800cad8 + 800cb1c: 4b13 ldr r3, [pc, #76] @ (800cb6c ) + 800cb1e: 681b ldr r3, [r3, #0] + 800cb20: 68ba ldr r2, [r7, #8] + 800cb22: 1ad3 subs r3, r2, r3 + 800cb24: f5b3 7f48 cmp.w r3, #800 @ 0x320 + 800cb28: d312 bcc.n 800cb50 + 800cb2a: 7bbb ldrb r3, [r7, #14] + 800cb2c: 2b2b cmp r3, #43 @ 0x2b + 800cb2e: d10f bne.n 800cb50 { g_escape.active = 1U; - 800cab8: 4b0d ldr r3, [pc, #52] @ (800caf0 ) - 800caba: 2201 movs r2, #1 - 800cabc: 701a strb r2, [r3, #0] + 800cb30: 4b0d ldr r3, [pc, #52] @ (800cb68 ) + 800cb32: 2201 movs r2, #1 + 800cb34: 701a strb r2, [r3, #0] g_escape.count = 1U; - 800cabe: 4b0c ldr r3, [pc, #48] @ (800caf0 ) - 800cac0: 2201 movs r2, #1 - 800cac2: 705a strb r2, [r3, #1] + 800cb36: 4b0c ldr r3, [pc, #48] @ (800cb68 ) + 800cb38: 2201 movs r2, #1 + 800cb3a: 705a strb r2, [r3, #1] g_escape.bytes[0] = ch; - 800cac4: 4a0a ldr r2, [pc, #40] @ (800caf0 ) - 800cac6: 7bbb ldrb r3, [r7, #14] - 800cac8: 7093 strb r3, [r2, #2] + 800cb3c: 4a0a ldr r2, [pc, #40] @ (800cb68 ) + 800cb3e: 7bbb ldrb r3, [r7, #14] + 800cb40: 7093 strb r3, [r2, #2] g_escape.start_tick = now; - 800caca: 4a09 ldr r2, [pc, #36] @ (800caf0 ) - 800cacc: 68bb ldr r3, [r7, #8] - 800cace: 6093 str r3, [r2, #8] + 800cb42: 4a09 ldr r2, [pc, #36] @ (800cb68 ) + 800cb44: 68bb ldr r3, [r7, #8] + 800cb46: 6093 str r3, [r2, #8] g_escape.last_tick = now; - 800cad0: 4a07 ldr r2, [pc, #28] @ (800caf0 ) - 800cad2: 68bb ldr r3, [r7, #8] - 800cad4: 60d3 str r3, [r2, #12] + 800cb48: 4a07 ldr r2, [pc, #28] @ (800cb68 ) + 800cb4a: 68bb ldr r3, [r7, #8] + 800cb4c: 60d3 str r3, [r2, #12] return; - 800cad6: e006 b.n 800cae6 + 800cb4e: e006 b.n 800cb5e } App_DataModeFeedByte(ch, now); - 800cad8: 7bbb ldrb r3, [r7, #14] - 800cada: 68b9 ldr r1, [r7, #8] - 800cadc: 4618 mov r0, r3 - 800cade: f7ff fea5 bl 800c82c - 800cae2: e000 b.n 800cae6 + 800cb50: 7bbb ldrb r3, [r7, #14] + 800cb52: 68b9 ldr r1, [r7, #8] + 800cb54: 4618 mov r0, r3 + 800cb56: f7ff fea5 bl 800c8a4 + 800cb5a: e000 b.n 800cb5e return; - 800cae4: bf00 nop + 800cb5c: bf00 nop } - 800cae6: 3710 adds r7, #16 - 800cae8: 46bd mov sp, r7 - 800caea: bd80 pop {r7, pc} - 800caec: 20000b90 .word 0x20000b90 - 800caf0: 20000b80 .word 0x20000b80 - 800caf4: 20000b7c .word 0x20000b7c + 800cb5e: 3710 adds r7, #16 + 800cb60: 46bd mov sp, r7 + 800cb62: bd80 pop {r7, pc} + 800cb64: 20000bc8 .word 0x20000bc8 + 800cb68: 20000bb8 .word 0x20000bb8 + 800cb6c: 20000bb4 .word 0x20000bb4 -0800caf8 : +0800cb70 : static void App_ConfigFeedByte(uint8_t ch) { - 800caf8: b580 push {r7, lr} - 800cafa: b082 sub sp, #8 - 800cafc: af00 add r7, sp, #0 - 800cafe: 4603 mov r3, r0 - 800cb00: 71fb strb r3, [r7, #7] + 800cb70: b580 push {r7, lr} + 800cb72: b082 sub sp, #8 + 800cb74: af00 add r7, sp, #0 + 800cb76: 4603 mov r3, r0 + 800cb78: 71fb strb r3, [r7, #7] if ((ch == '\r') || (ch == '\n')) - 800cb02: 79fb ldrb r3, [r7, #7] - 800cb04: 2b0d cmp r3, #13 - 800cb06: d002 beq.n 800cb0e - 800cb08: 79fb ldrb r3, [r7, #7] - 800cb0a: 2b0a cmp r3, #10 - 800cb0c: d115 bne.n 800cb3a + 800cb7a: 79fb ldrb r3, [r7, #7] + 800cb7c: 2b0d cmp r3, #13 + 800cb7e: d002 beq.n 800cb86 + 800cb80: 79fb ldrb r3, [r7, #7] + 800cb82: 2b0a cmp r3, #10 + 800cb84: d115 bne.n 800cbb2 { if (g_cfg_line_len > 0U) - 800cb0e: 4b26 ldr r3, [pc, #152] @ (800cba8 ) - 800cb10: 881b ldrh r3, [r3, #0] - 800cb12: 2b00 cmp r3, #0 - 800cb14: d00e beq.n 800cb34 + 800cb86: 4b26 ldr r3, [pc, #152] @ (800cc20 ) + 800cb88: 881b ldrh r3, [r3, #0] + 800cb8a: 2b00 cmp r3, #0 + 800cb8c: d00e beq.n 800cbac { g_cfg_line[g_cfg_line_len] = '\0'; - 800cb16: 4b24 ldr r3, [pc, #144] @ (800cba8 ) - 800cb18: 881b ldrh r3, [r3, #0] - 800cb1a: 461a mov r2, r3 - 800cb1c: 4b23 ldr r3, [pc, #140] @ (800cbac ) - 800cb1e: 2100 movs r1, #0 - 800cb20: 5499 strb r1, [r3, r2] + 800cb8e: 4b24 ldr r3, [pc, #144] @ (800cc20 ) + 800cb90: 881b ldrh r3, [r3, #0] + 800cb92: 461a mov r2, r3 + 800cb94: 4b23 ldr r3, [pc, #140] @ (800cc24 ) + 800cb96: 2100 movs r1, #0 + 800cb98: 5499 strb r1, [r3, r2] App_Printf("\r\n"); - 800cb22: 4823 ldr r0, [pc, #140] @ (800cbb0 ) - 800cb24: f000 fb76 bl 800d214 + 800cb9a: 4823 ldr r0, [pc, #140] @ (800cc28 ) + 800cb9c: f000 fb76 bl 800d28c App_ConfigExecuteLine(g_cfg_line); - 800cb28: 4820 ldr r0, [pc, #128] @ (800cbac ) - 800cb2a: f000 f847 bl 800cbbc + 800cba0: 4820 ldr r0, [pc, #128] @ (800cc24 ) + 800cba2: f000 f847 bl 800cc34 g_cfg_line_len = 0U; - 800cb2e: 4b1e ldr r3, [pc, #120] @ (800cba8 ) - 800cb30: 2200 movs r2, #0 - 800cb32: 801a strh r2, [r3, #0] + 800cba6: 4b1e ldr r3, [pc, #120] @ (800cc20 ) + 800cba8: 2200 movs r2, #0 + 800cbaa: 801a strh r2, [r3, #0] } App_PrintConfigPrompt(); - 800cb34: f000 fa54 bl 800cfe0 + 800cbac: f000 fa54 bl 800d058 return; - 800cb38: e032 b.n 800cba0 + 800cbb0: e032 b.n 800cc18 } if ((ch == 0x08U) || (ch == 0x7FU)) - 800cb3a: 79fb ldrb r3, [r7, #7] - 800cb3c: 2b08 cmp r3, #8 - 800cb3e: d002 beq.n 800cb46 - 800cb40: 79fb ldrb r3, [r7, #7] - 800cb42: 2b7f cmp r3, #127 @ 0x7f - 800cb44: d10e bne.n 800cb64 + 800cbb2: 79fb ldrb r3, [r7, #7] + 800cbb4: 2b08 cmp r3, #8 + 800cbb6: d002 beq.n 800cbbe + 800cbb8: 79fb ldrb r3, [r7, #7] + 800cbba: 2b7f cmp r3, #127 @ 0x7f + 800cbbc: d10e bne.n 800cbdc { if (g_cfg_line_len > 0U) - 800cb46: 4b18 ldr r3, [pc, #96] @ (800cba8 ) - 800cb48: 881b ldrh r3, [r3, #0] - 800cb4a: 2b00 cmp r3, #0 - 800cb4c: d027 beq.n 800cb9e + 800cbbe: 4b18 ldr r3, [pc, #96] @ (800cc20 ) + 800cbc0: 881b ldrh r3, [r3, #0] + 800cbc2: 2b00 cmp r3, #0 + 800cbc4: d027 beq.n 800cc16 { g_cfg_line_len--; - 800cb4e: 4b16 ldr r3, [pc, #88] @ (800cba8 ) - 800cb50: 881b ldrh r3, [r3, #0] - 800cb52: 3b01 subs r3, #1 - 800cb54: b29a uxth r2, r3 - 800cb56: 4b14 ldr r3, [pc, #80] @ (800cba8 ) - 800cb58: 801a strh r2, [r3, #0] + 800cbc6: 4b16 ldr r3, [pc, #88] @ (800cc20 ) + 800cbc8: 881b ldrh r3, [r3, #0] + 800cbca: 3b01 subs r3, #1 + 800cbcc: b29a uxth r2, r3 + 800cbce: 4b14 ldr r3, [pc, #80] @ (800cc20 ) + 800cbd0: 801a strh r2, [r3, #0] App_Write((const uint8_t *)"\b \b", 3U); - 800cb5a: 2103 movs r1, #3 - 800cb5c: 4815 ldr r0, [pc, #84] @ (800cbb4 ) - 800cb5e: f000 fb85 bl 800d26c + 800cbd2: 2103 movs r1, #3 + 800cbd4: 4815 ldr r0, [pc, #84] @ (800cc2c ) + 800cbd6: f000 fb85 bl 800d2e4 } return; - 800cb62: e01c b.n 800cb9e + 800cbda: e01c b.n 800cc16 } if ((isprint(ch) != 0) && (g_cfg_line_len < (CONFIG_LINE_SIZE - 1U))) - 800cb64: 79fb ldrb r3, [r7, #7] - 800cb66: 3301 adds r3, #1 - 800cb68: 4a13 ldr r2, [pc, #76] @ (800cbb8 ) - 800cb6a: 4413 add r3, r2 - 800cb6c: 781b ldrb r3, [r3, #0] - 800cb6e: f003 0397 and.w r3, r3, #151 @ 0x97 - 800cb72: 2b00 cmp r3, #0 - 800cb74: d014 beq.n 800cba0 - 800cb76: 4b0c ldr r3, [pc, #48] @ (800cba8 ) - 800cb78: 881b ldrh r3, [r3, #0] - 800cb7a: 2b5e cmp r3, #94 @ 0x5e - 800cb7c: d810 bhi.n 800cba0 + 800cbdc: 79fb ldrb r3, [r7, #7] + 800cbde: 3301 adds r3, #1 + 800cbe0: 4a13 ldr r2, [pc, #76] @ (800cc30 ) + 800cbe2: 4413 add r3, r2 + 800cbe4: 781b ldrb r3, [r3, #0] + 800cbe6: f003 0397 and.w r3, r3, #151 @ 0x97 + 800cbea: 2b00 cmp r3, #0 + 800cbec: d014 beq.n 800cc18 + 800cbee: 4b0c ldr r3, [pc, #48] @ (800cc20 ) + 800cbf0: 881b ldrh r3, [r3, #0] + 800cbf2: 2b5e cmp r3, #94 @ 0x5e + 800cbf4: d810 bhi.n 800cc18 { g_cfg_line[g_cfg_line_len++] = (char)ch; - 800cb7e: 4b0a ldr r3, [pc, #40] @ (800cba8 ) - 800cb80: 881b ldrh r3, [r3, #0] - 800cb82: 1c5a adds r2, r3, #1 - 800cb84: b291 uxth r1, r2 - 800cb86: 4a08 ldr r2, [pc, #32] @ (800cba8 ) - 800cb88: 8011 strh r1, [r2, #0] - 800cb8a: 461a mov r2, r3 - 800cb8c: 79f9 ldrb r1, [r7, #7] - 800cb8e: 4b07 ldr r3, [pc, #28] @ (800cbac ) - 800cb90: 5499 strb r1, [r3, r2] + 800cbf6: 4b0a ldr r3, [pc, #40] @ (800cc20 ) + 800cbf8: 881b ldrh r3, [r3, #0] + 800cbfa: 1c5a adds r2, r3, #1 + 800cbfc: b291 uxth r1, r2 + 800cbfe: 4a08 ldr r2, [pc, #32] @ (800cc20 ) + 800cc00: 8011 strh r1, [r2, #0] + 800cc02: 461a mov r2, r3 + 800cc04: 79f9 ldrb r1, [r7, #7] + 800cc06: 4b07 ldr r3, [pc, #28] @ (800cc24 ) + 800cc08: 5499 strb r1, [r3, r2] App_Write(&ch, 1U); - 800cb92: 1dfb adds r3, r7, #7 - 800cb94: 2101 movs r1, #1 - 800cb96: 4618 mov r0, r3 - 800cb98: f000 fb68 bl 800d26c - 800cb9c: e000 b.n 800cba0 + 800cc0a: 1dfb adds r3, r7, #7 + 800cc0c: 2101 movs r1, #1 + 800cc0e: 4618 mov r0, r3 + 800cc10: f000 fb68 bl 800d2e4 + 800cc14: e000 b.n 800cc18 return; - 800cb9e: bf00 nop + 800cc16: bf00 nop } } - 800cba0: 3708 adds r7, #8 - 800cba2: 46bd mov sp, r7 - 800cba4: bd80 pop {r7, pc} - 800cba6: bf00 nop - 800cba8: 20000bf4 .word 0x20000bf4 - 800cbac: 20000b94 .word 0x20000b94 - 800cbb0: 0800fbe0 .word 0x0800fbe0 - 800cbb4: 0800fbe4 .word 0x0800fbe4 - 800cbb8: 08010518 .word 0x08010518 + 800cc18: 3708 adds r7, #8 + 800cc1a: 46bd mov sp, r7 + 800cc1c: bd80 pop {r7, pc} + 800cc1e: bf00 nop + 800cc20: 20000c2c .word 0x20000c2c + 800cc24: 20000bcc .word 0x20000bcc + 800cc28: 0800fc08 .word 0x0800fc08 + 800cc2c: 0800fc0c .word 0x0800fc0c + 800cc30: 08010540 .word 0x08010540 -0800cbbc : +0800cc34 : static void App_ConfigExecuteLine(char *line) { - 800cbbc: b580 push {r7, lr} - 800cbbe: b086 sub sp, #24 - 800cbc0: af00 add r7, sp, #0 - 800cbc2: 6078 str r0, [r7, #4] + 800cc34: b580 push {r7, lr} + 800cc36: b086 sub sp, #24 + 800cc38: af00 add r7, sp, #0 + 800cc3a: 6078 str r0, [r7, #4] char *arg; uint32_t u32; uint8_t sync[3]; line = App_SkipSpaces(line); - 800cbc4: 6878 ldr r0, [r7, #4] - 800cbc6: f000 fc19 bl 800d3fc - 800cbca: 6078 str r0, [r7, #4] + 800cc3c: 6878 ldr r0, [r7, #4] + 800cc3e: f000 fc19 bl 800d474 + 800cc42: 6078 str r0, [r7, #4] if (*line == '\0') - 800cbcc: 687b ldr r3, [r7, #4] - 800cbce: 781b ldrb r3, [r3, #0] - 800cbd0: 2b00 cmp r3, #0 - 800cbd2: f000 81ef beq.w 800cfb4 + 800cc44: 687b ldr r3, [r7, #4] + 800cc46: 781b ldrb r3, [r3, #0] + 800cc48: 2b00 cmp r3, #0 + 800cc4a: f000 81ef beq.w 800d02c { return; } if ((strcmp(line, "help") == 0) || (strcmp(line, "?") == 0)) - 800cbd6: 49a0 ldr r1, [pc, #640] @ (800ce58 ) - 800cbd8: 6878 ldr r0, [r7, #4] - 800cbda: f7f3 fad1 bl 8000180 - 800cbde: 4603 mov r3, r0 - 800cbe0: 2b00 cmp r3, #0 - 800cbe2: d006 beq.n 800cbf2 - 800cbe4: 499d ldr r1, [pc, #628] @ (800ce5c ) - 800cbe6: 6878 ldr r0, [r7, #4] - 800cbe8: f7f3 faca bl 8000180 - 800cbec: 4603 mov r3, r0 - 800cbee: 2b00 cmp r3, #0 - 800cbf0: d102 bne.n 800cbf8 + 800cc4e: 49a0 ldr r1, [pc, #640] @ (800ced0 ) + 800cc50: 6878 ldr r0, [r7, #4] + 800cc52: f7f3 fa95 bl 8000180 + 800cc56: 4603 mov r3, r0 + 800cc58: 2b00 cmp r3, #0 + 800cc5a: d006 beq.n 800cc6a + 800cc5c: 499d ldr r1, [pc, #628] @ (800ced4 ) + 800cc5e: 6878 ldr r0, [r7, #4] + 800cc60: f7f3 fa8e bl 8000180 + 800cc64: 4603 mov r3, r0 + 800cc66: 2b00 cmp r3, #0 + 800cc68: d102 bne.n 800cc70 { App_PrintHelp(); - 800cbf2: f000 fa05 bl 800d000 + 800cc6a: f000 fa05 bl 800d078 return; - 800cbf6: e1de b.n 800cfb6 + 800cc6e: e1de b.n 800d02e } if ((strcmp(line, "show") == 0) || (strcmp(line, "status") == 0)) - 800cbf8: 4999 ldr r1, [pc, #612] @ (800ce60 ) - 800cbfa: 6878 ldr r0, [r7, #4] - 800cbfc: f7f3 fac0 bl 8000180 - 800cc00: 4603 mov r3, r0 - 800cc02: 2b00 cmp r3, #0 - 800cc04: d006 beq.n 800cc14 - 800cc06: 4997 ldr r1, [pc, #604] @ (800ce64 ) - 800cc08: 6878 ldr r0, [r7, #4] - 800cc0a: f7f3 fab9 bl 8000180 - 800cc0e: 4603 mov r3, r0 - 800cc10: 2b00 cmp r3, #0 - 800cc12: d102 bne.n 800cc1a + 800cc70: 4999 ldr r1, [pc, #612] @ (800ced8 ) + 800cc72: 6878 ldr r0, [r7, #4] + 800cc74: f7f3 fa84 bl 8000180 + 800cc78: 4603 mov r3, r0 + 800cc7a: 2b00 cmp r3, #0 + 800cc7c: d006 beq.n 800cc8c + 800cc7e: 4997 ldr r1, [pc, #604] @ (800cedc ) + 800cc80: 6878 ldr r0, [r7, #4] + 800cc82: f7f3 fa7d bl 8000180 + 800cc86: 4603 mov r3, r0 + 800cc88: 2b00 cmp r3, #0 + 800cc8a: d102 bne.n 800cc92 { App_PrintStatus(); - 800cc14: f000 fa44 bl 800d0a0 + 800cc8c: f000 fa44 bl 800d118 return; - 800cc18: e1cd b.n 800cfb6 + 800cc90: e1cd b.n 800d02e } if (strcmp(line, "exit") == 0) - 800cc1a: 4993 ldr r1, [pc, #588] @ (800ce68 ) - 800cc1c: 6878 ldr r0, [r7, #4] - 800cc1e: f7f3 faaf bl 8000180 - 800cc22: 4603 mov r3, r0 - 800cc24: 2b00 cmp r3, #0 - 800cc26: d102 bne.n 800cc2e + 800cc92: 4993 ldr r1, [pc, #588] @ (800cee0 ) + 800cc94: 6878 ldr r0, [r7, #4] + 800cc96: f7f3 fa73 bl 8000180 + 800cc9a: 4603 mov r3, r0 + 800cc9c: 2b00 cmp r3, #0 + 800cc9e: d102 bne.n 800cca6 { App_ExitConfigMode(); - 800cc28: f7ff fdc4 bl 800c7b4 + 800cca0: f7ff fdc4 bl 800c82c return; - 800cc2c: e1c3 b.n 800cfb6 + 800cca4: e1c3 b.n 800d02e } if (strcmp(line, "save") == 0) - 800cc2e: 498f ldr r1, [pc, #572] @ (800ce6c ) - 800cc30: 6878 ldr r0, [r7, #4] - 800cc32: f7f3 faa5 bl 8000180 - 800cc36: 4603 mov r3, r0 - 800cc38: 2b00 cmp r3, #0 - 800cc3a: d102 bne.n 800cc42 + 800cca6: 498f ldr r1, [pc, #572] @ (800cee4 ) + 800cca8: 6878 ldr r0, [r7, #4] + 800ccaa: f7f3 fa69 bl 8000180 + 800ccae: 4603 mov r3, r0 + 800ccb0: 2b00 cmp r3, #0 + 800ccb2: d102 bne.n 800ccba { App_ApplyConfig(); - 800cc3c: f7ff fcb0 bl 800c5a0 + 800ccb4: f7ff fcb0 bl 800c618 return; - 800cc40: e1b9 b.n 800cfb6 + 800ccb8: e1b9 b.n 800d02e } if (strcmp(line, "defaults") == 0) - 800cc42: 498b ldr r1, [pc, #556] @ (800ce70 ) - 800cc44: 6878 ldr r0, [r7, #4] - 800cc46: f7f3 fa9b bl 8000180 - 800cc4a: 4603 mov r3, r0 - 800cc4c: 2b00 cmp r3, #0 - 800cc4e: d106 bne.n 800cc5e + 800ccba: 498b ldr r1, [pc, #556] @ (800cee8 ) + 800ccbc: 6878 ldr r0, [r7, #4] + 800ccbe: f7f3 fa5f bl 8000180 + 800ccc2: 4603 mov r3, r0 + 800ccc4: 2b00 cmp r3, #0 + 800ccc6: d106 bne.n 800ccd6 { Config_LoadDefaults(&g_cfg); - 800cc50: 4888 ldr r0, [pc, #544] @ (800ce74 ) - 800cc52: f000 fcf7 bl 800d644 + 800ccc8: 4888 ldr r0, [pc, #544] @ (800ceec ) + 800ccca: f000 fccf bl 800d66c App_Printf("defaults restored\r\n"); - 800cc56: 4888 ldr r0, [pc, #544] @ (800ce78 ) - 800cc58: f000 fadc bl 800d214 + 800ccce: 4888 ldr r0, [pc, #544] @ (800cef0 ) + 800ccd0: f000 fadc bl 800d28c return; - 800cc5c: e1ab b.n 800cfb6 + 800ccd4: e1ab b.n 800d02e } if (strncmp(line, "freq ", 5) == 0) - 800cc5e: 2205 movs r2, #5 - 800cc60: 4986 ldr r1, [pc, #536] @ (800ce7c ) - 800cc62: 6878 ldr r0, [r7, #4] - 800cc64: f002 f97a bl 800ef5c - 800cc68: 4603 mov r3, r0 - 800cc6a: 2b00 cmp r3, #0 - 800cc6c: d11d bne.n 800ccaa + 800ccd6: 2205 movs r2, #5 + 800ccd8: 4986 ldr r1, [pc, #536] @ (800cef4 ) + 800ccda: 6878 ldr r0, [r7, #4] + 800ccdc: f002 f952 bl 800ef84 + 800cce0: 4603 mov r3, r0 + 800cce2: 2b00 cmp r3, #0 + 800cce4: d11d bne.n 800cd22 { u32 = strtoul(&line[5], NULL, 10); - 800cc6e: 687b ldr r3, [r7, #4] - 800cc70: 3305 adds r3, #5 - 800cc72: 220a movs r2, #10 - 800cc74: 2100 movs r1, #0 - 800cc76: 4618 mov r0, r3 - 800cc78: f002 f922 bl 800eec0 - 800cc7c: 6138 str r0, [r7, #16] + 800cce6: 687b ldr r3, [r7, #4] + 800cce8: 3305 adds r3, #5 + 800ccea: 220a movs r2, #10 + 800ccec: 2100 movs r1, #0 + 800ccee: 4618 mov r0, r3 + 800ccf0: f002 f8fa bl 800eee8 + 800ccf4: 6138 str r0, [r7, #16] if (u32 < 150000000UL || u32 > 960000000UL) - 800cc7e: 693b ldr r3, [r7, #16] - 800cc80: 4a7f ldr r2, [pc, #508] @ (800ce80 ) - 800cc82: 4293 cmp r3, r2 - 800cc84: d903 bls.n 800cc8e - 800cc86: 693b ldr r3, [r7, #16] - 800cc88: 4a7e ldr r2, [pc, #504] @ (800ce84 ) - 800cc8a: 4293 cmp r3, r2 - 800cc8c: d903 bls.n 800cc96 + 800ccf6: 693b ldr r3, [r7, #16] + 800ccf8: 4a7f ldr r2, [pc, #508] @ (800cef8 ) + 800ccfa: 4293 cmp r3, r2 + 800ccfc: d903 bls.n 800cd06 + 800ccfe: 693b ldr r3, [r7, #16] + 800cd00: 4a7e ldr r2, [pc, #504] @ (800cefc ) + 800cd02: 4293 cmp r3, r2 + 800cd04: d903 bls.n 800cd0e { App_Printf("bad frequency\r\n"); - 800cc8e: 487e ldr r0, [pc, #504] @ (800ce88 ) - 800cc90: f000 fac0 bl 800d214 + 800cd06: 487e ldr r0, [pc, #504] @ (800cf00 ) + 800cd08: f000 fac0 bl 800d28c return; - 800cc94: e18f b.n 800cfb6 + 800cd0c: e18f b.n 800d02e } g_cfg.rf_frequency = u32; - 800cc96: 4a77 ldr r2, [pc, #476] @ (800ce74 ) - 800cc98: 693b ldr r3, [r7, #16] - 800cc9a: 6013 str r3, [r2, #0] + 800cd0e: 4a77 ldr r2, [pc, #476] @ (800ceec ) + 800cd10: 693b ldr r3, [r7, #16] + 800cd12: 6013 str r3, [r2, #0] App_Printf("freq=%lu\r\n", (unsigned long)g_cfg.rf_frequency); - 800cc9c: 4b75 ldr r3, [pc, #468] @ (800ce74 ) - 800cc9e: 681b ldr r3, [r3, #0] - 800cca0: 4619 mov r1, r3 - 800cca2: 487a ldr r0, [pc, #488] @ (800ce8c ) - 800cca4: f000 fab6 bl 800d214 + 800cd14: 4b75 ldr r3, [pc, #468] @ (800ceec ) + 800cd16: 681b ldr r3, [r3, #0] + 800cd18: 4619 mov r1, r3 + 800cd1a: 487a ldr r0, [pc, #488] @ (800cf04 ) + 800cd1c: f000 fab6 bl 800d28c return; - 800cca8: e185 b.n 800cfb6 + 800cd20: e185 b.n 800d02e } if (strncmp(line, "power ", 6) == 0) - 800ccaa: 2206 movs r2, #6 - 800ccac: 4978 ldr r1, [pc, #480] @ (800ce90 ) - 800ccae: 6878 ldr r0, [r7, #4] - 800ccb0: f002 f954 bl 800ef5c - 800ccb4: 4603 mov r3, r0 - 800ccb6: 2b00 cmp r3, #0 - 800ccb8: d11e bne.n 800ccf8 + 800cd22: 2206 movs r2, #6 + 800cd24: 4978 ldr r1, [pc, #480] @ (800cf08 ) + 800cd26: 6878 ldr r0, [r7, #4] + 800cd28: f002 f92c bl 800ef84 + 800cd2c: 4603 mov r3, r0 + 800cd2e: 2b00 cmp r3, #0 + 800cd30: d11e bne.n 800cd70 { long pwr = strtol(&line[6], NULL, 10); - 800ccba: 687b ldr r3, [r7, #4] - 800ccbc: 3306 adds r3, #6 - 800ccbe: 220a movs r2, #10 - 800ccc0: 2100 movs r1, #0 - 800ccc2: 4618 mov r0, r3 - 800ccc4: f002 f884 bl 800edd0 - 800ccc8: 60f8 str r0, [r7, #12] + 800cd32: 687b ldr r3, [r7, #4] + 800cd34: 3306 adds r3, #6 + 800cd36: 220a movs r2, #10 + 800cd38: 2100 movs r1, #0 + 800cd3a: 4618 mov r0, r3 + 800cd3c: f002 f85c bl 800edf8 + 800cd40: 60f8 str r0, [r7, #12] if ((pwr < -9L) || (pwr > 22L)) - 800ccca: 68fb ldr r3, [r7, #12] - 800cccc: f113 0f09 cmn.w r3, #9 - 800ccd0: db02 blt.n 800ccd8 - 800ccd2: 68fb ldr r3, [r7, #12] - 800ccd4: 2b16 cmp r3, #22 - 800ccd6: dd03 ble.n 800cce0 + 800cd42: 68fb ldr r3, [r7, #12] + 800cd44: f113 0f09 cmn.w r3, #9 + 800cd48: db02 blt.n 800cd50 + 800cd4a: 68fb ldr r3, [r7, #12] + 800cd4c: 2b16 cmp r3, #22 + 800cd4e: dd03 ble.n 800cd58 { App_Printf("bad power\r\n"); - 800ccd8: 486e ldr r0, [pc, #440] @ (800ce94 ) - 800ccda: f000 fa9b bl 800d214 + 800cd50: 486e ldr r0, [pc, #440] @ (800cf0c ) + 800cd52: f000 fa9b bl 800d28c return; - 800ccde: e16a b.n 800cfb6 + 800cd56: e16a b.n 800d02e } g_cfg.tx_power = (int8_t)pwr; - 800cce0: 68fb ldr r3, [r7, #12] - 800cce2: b25a sxtb r2, r3 - 800cce4: 4b63 ldr r3, [pc, #396] @ (800ce74 ) - 800cce6: 711a strb r2, [r3, #4] + 800cd58: 68fb ldr r3, [r7, #12] + 800cd5a: b25a sxtb r2, r3 + 800cd5c: 4b63 ldr r3, [pc, #396] @ (800ceec ) + 800cd5e: 711a strb r2, [r3, #4] App_Printf("power=%d\r\n", g_cfg.tx_power); - 800cce8: 4b62 ldr r3, [pc, #392] @ (800ce74 ) - 800ccea: f993 3004 ldrsb.w r3, [r3, #4] - 800ccee: 4619 mov r1, r3 - 800ccf0: 4869 ldr r0, [pc, #420] @ (800ce98 ) - 800ccf2: f000 fa8f bl 800d214 + 800cd60: 4b62 ldr r3, [pc, #392] @ (800ceec ) + 800cd62: f993 3004 ldrsb.w r3, [r3, #4] + 800cd66: 4619 mov r1, r3 + 800cd68: 4869 ldr r0, [pc, #420] @ (800cf10 ) + 800cd6a: f000 fa8f bl 800d28c return; - 800ccf6: e15e b.n 800cfb6 + 800cd6e: e15e b.n 800d02e } if (strncmp(line, "bitrate ", 8) == 0) - 800ccf8: 2208 movs r2, #8 - 800ccfa: 4968 ldr r1, [pc, #416] @ (800ce9c ) - 800ccfc: 6878 ldr r0, [r7, #4] - 800ccfe: f002 f92d bl 800ef5c - 800cd02: 4603 mov r3, r0 - 800cd04: 2b00 cmp r3, #0 - 800cd06: d11d bne.n 800cd44 + 800cd70: 2208 movs r2, #8 + 800cd72: 4968 ldr r1, [pc, #416] @ (800cf14 ) + 800cd74: 6878 ldr r0, [r7, #4] + 800cd76: f002 f905 bl 800ef84 + 800cd7a: 4603 mov r3, r0 + 800cd7c: 2b00 cmp r3, #0 + 800cd7e: d11d bne.n 800cdbc { u32 = strtoul(&line[8], NULL, 10); - 800cd08: 687b ldr r3, [r7, #4] - 800cd0a: 3308 adds r3, #8 - 800cd0c: 220a movs r2, #10 - 800cd0e: 2100 movs r1, #0 - 800cd10: 4618 mov r0, r3 - 800cd12: f002 f8d5 bl 800eec0 - 800cd16: 6138 str r0, [r7, #16] + 800cd80: 687b ldr r3, [r7, #4] + 800cd82: 3308 adds r3, #8 + 800cd84: 220a movs r2, #10 + 800cd86: 2100 movs r1, #0 + 800cd88: 4618 mov r0, r3 + 800cd8a: f002 f8ad bl 800eee8 + 800cd8e: 6138 str r0, [r7, #16] if ((u32 < 600UL) || (u32 > 300000UL)) - 800cd18: 693b ldr r3, [r7, #16] - 800cd1a: f5b3 7f16 cmp.w r3, #600 @ 0x258 - 800cd1e: d303 bcc.n 800cd28 - 800cd20: 693b ldr r3, [r7, #16] - 800cd22: 4a5f ldr r2, [pc, #380] @ (800cea0 ) - 800cd24: 4293 cmp r3, r2 - 800cd26: d903 bls.n 800cd30 + 800cd90: 693b ldr r3, [r7, #16] + 800cd92: f5b3 7f16 cmp.w r3, #600 @ 0x258 + 800cd96: d303 bcc.n 800cda0 + 800cd98: 693b ldr r3, [r7, #16] + 800cd9a: 4a5f ldr r2, [pc, #380] @ (800cf18 ) + 800cd9c: 4293 cmp r3, r2 + 800cd9e: d903 bls.n 800cda8 { App_Printf("bad bitrate\r\n"); - 800cd28: 485e ldr r0, [pc, #376] @ (800cea4 ) - 800cd2a: f000 fa73 bl 800d214 + 800cda0: 485e ldr r0, [pc, #376] @ (800cf1c ) + 800cda2: f000 fa73 bl 800d28c return; - 800cd2e: e142 b.n 800cfb6 + 800cda6: e142 b.n 800d02e } g_cfg.fsk_bitrate = u32; - 800cd30: 4a50 ldr r2, [pc, #320] @ (800ce74 ) - 800cd32: 693b ldr r3, [r7, #16] - 800cd34: 6093 str r3, [r2, #8] + 800cda8: 4a50 ldr r2, [pc, #320] @ (800ceec ) + 800cdaa: 693b ldr r3, [r7, #16] + 800cdac: 6093 str r3, [r2, #8] App_Printf("bitrate=%lu\r\n", (unsigned long)g_cfg.fsk_bitrate); - 800cd36: 4b4f ldr r3, [pc, #316] @ (800ce74 ) - 800cd38: 689b ldr r3, [r3, #8] - 800cd3a: 4619 mov r1, r3 - 800cd3c: 485a ldr r0, [pc, #360] @ (800cea8 ) - 800cd3e: f000 fa69 bl 800d214 + 800cdae: 4b4f ldr r3, [pc, #316] @ (800ceec ) + 800cdb0: 689b ldr r3, [r3, #8] + 800cdb2: 4619 mov r1, r3 + 800cdb4: 485a ldr r0, [pc, #360] @ (800cf20 ) + 800cdb6: f000 fa69 bl 800d28c return; - 800cd42: e138 b.n 800cfb6 + 800cdba: e138 b.n 800d02e } if (strncmp(line, "bandwidth ", 10) == 0) - 800cd44: 220a movs r2, #10 - 800cd46: 4959 ldr r1, [pc, #356] @ (800ceac ) - 800cd48: 6878 ldr r0, [r7, #4] - 800cd4a: f002 f907 bl 800ef5c - 800cd4e: 4603 mov r3, r0 - 800cd50: 2b00 cmp r3, #0 - 800cd52: d11e bne.n 800cd92 + 800cdbc: 220a movs r2, #10 + 800cdbe: 4959 ldr r1, [pc, #356] @ (800cf24 ) + 800cdc0: 6878 ldr r0, [r7, #4] + 800cdc2: f002 f8df bl 800ef84 + 800cdc6: 4603 mov r3, r0 + 800cdc8: 2b00 cmp r3, #0 + 800cdca: d11e bne.n 800ce0a { u32 = strtoul(&line[10], NULL, 10); - 800cd54: 687b ldr r3, [r7, #4] - 800cd56: 330a adds r3, #10 - 800cd58: 220a movs r2, #10 - 800cd5a: 2100 movs r1, #0 - 800cd5c: 4618 mov r0, r3 - 800cd5e: f002 f8af bl 800eec0 - 800cd62: 6138 str r0, [r7, #16] + 800cdcc: 687b ldr r3, [r7, #4] + 800cdce: 330a adds r3, #10 + 800cdd0: 220a movs r2, #10 + 800cdd2: 2100 movs r1, #0 + 800cdd4: 4618 mov r0, r3 + 800cdd6: f002 f887 bl 800eee8 + 800cdda: 6138 str r0, [r7, #16] if ((u32 < 2600UL) || (u32 > 250000UL)) - 800cd64: 693b ldr r3, [r7, #16] - 800cd66: f640 2227 movw r2, #2599 @ 0xa27 - 800cd6a: 4293 cmp r3, r2 - 800cd6c: d903 bls.n 800cd76 - 800cd6e: 693b ldr r3, [r7, #16] - 800cd70: 4a4f ldr r2, [pc, #316] @ (800ceb0 ) - 800cd72: 4293 cmp r3, r2 - 800cd74: d903 bls.n 800cd7e + 800cddc: 693b ldr r3, [r7, #16] + 800cdde: f640 2227 movw r2, #2599 @ 0xa27 + 800cde2: 4293 cmp r3, r2 + 800cde4: d903 bls.n 800cdee + 800cde6: 693b ldr r3, [r7, #16] + 800cde8: 4a4f ldr r2, [pc, #316] @ (800cf28 ) + 800cdea: 4293 cmp r3, r2 + 800cdec: d903 bls.n 800cdf6 { App_Printf("bad bandwidth\r\n"); - 800cd76: 484f ldr r0, [pc, #316] @ (800ceb4 ) - 800cd78: f000 fa4c bl 800d214 + 800cdee: 484f ldr r0, [pc, #316] @ (800cf2c ) + 800cdf0: f000 fa4c bl 800d28c return; - 800cd7c: e11b b.n 800cfb6 + 800cdf4: e11b b.n 800d02e } g_cfg.fsk_bandwidth = u32; - 800cd7e: 4a3d ldr r2, [pc, #244] @ (800ce74 ) - 800cd80: 693b ldr r3, [r7, #16] - 800cd82: 60d3 str r3, [r2, #12] + 800cdf6: 4a3d ldr r2, [pc, #244] @ (800ceec ) + 800cdf8: 693b ldr r3, [r7, #16] + 800cdfa: 60d3 str r3, [r2, #12] App_Printf("bandwidth=%lu\r\n", (unsigned long)g_cfg.fsk_bandwidth); - 800cd84: 4b3b ldr r3, [pc, #236] @ (800ce74 ) - 800cd86: 68db ldr r3, [r3, #12] - 800cd88: 4619 mov r1, r3 - 800cd8a: 484b ldr r0, [pc, #300] @ (800ceb8 ) - 800cd8c: f000 fa42 bl 800d214 + 800cdfc: 4b3b ldr r3, [pc, #236] @ (800ceec ) + 800cdfe: 68db ldr r3, [r3, #12] + 800ce00: 4619 mov r1, r3 + 800ce02: 484b ldr r0, [pc, #300] @ (800cf30 ) + 800ce04: f000 fa42 bl 800d28c return; - 800cd90: e111 b.n 800cfb6 + 800ce08: e111 b.n 800d02e } if (strncmp(line, "fdev ", 5) == 0) - 800cd92: 2205 movs r2, #5 - 800cd94: 4949 ldr r1, [pc, #292] @ (800cebc ) - 800cd96: 6878 ldr r0, [r7, #4] - 800cd98: f002 f8e0 bl 800ef5c - 800cd9c: 4603 mov r3, r0 - 800cd9e: 2b00 cmp r3, #0 - 800cda0: d119 bne.n 800cdd6 + 800ce0a: 2205 movs r2, #5 + 800ce0c: 4949 ldr r1, [pc, #292] @ (800cf34 ) + 800ce0e: 6878 ldr r0, [r7, #4] + 800ce10: f002 f8b8 bl 800ef84 + 800ce14: 4603 mov r3, r0 + 800ce16: 2b00 cmp r3, #0 + 800ce18: d119 bne.n 800ce4e { u32 = strtoul(&line[5], NULL, 10); - 800cda2: 687b ldr r3, [r7, #4] - 800cda4: 3305 adds r3, #5 - 800cda6: 220a movs r2, #10 - 800cda8: 2100 movs r1, #0 - 800cdaa: 4618 mov r0, r3 - 800cdac: f002 f888 bl 800eec0 - 800cdb0: 6138 str r0, [r7, #16] + 800ce1a: 687b ldr r3, [r7, #4] + 800ce1c: 3305 adds r3, #5 + 800ce1e: 220a movs r2, #10 + 800ce20: 2100 movs r1, #0 + 800ce22: 4618 mov r0, r3 + 800ce24: f002 f860 bl 800eee8 + 800ce28: 6138 str r0, [r7, #16] if (u32 > 200000UL) - 800cdb2: 693b ldr r3, [r7, #16] - 800cdb4: 4a42 ldr r2, [pc, #264] @ (800cec0 ) - 800cdb6: 4293 cmp r3, r2 - 800cdb8: d903 bls.n 800cdc2 + 800ce2a: 693b ldr r3, [r7, #16] + 800ce2c: 4a42 ldr r2, [pc, #264] @ (800cf38 ) + 800ce2e: 4293 cmp r3, r2 + 800ce30: d903 bls.n 800ce3a { App_Printf("bad fdev\r\n"); - 800cdba: 4842 ldr r0, [pc, #264] @ (800cec4 ) - 800cdbc: f000 fa2a bl 800d214 + 800ce32: 4842 ldr r0, [pc, #264] @ (800cf3c ) + 800ce34: f000 fa2a bl 800d28c return; - 800cdc0: e0f9 b.n 800cfb6 + 800ce38: e0f9 b.n 800d02e } g_cfg.fsk_fdev = u32; - 800cdc2: 4a2c ldr r2, [pc, #176] @ (800ce74 ) - 800cdc4: 693b ldr r3, [r7, #16] - 800cdc6: 6113 str r3, [r2, #16] + 800ce3a: 4a2c ldr r2, [pc, #176] @ (800ceec ) + 800ce3c: 693b ldr r3, [r7, #16] + 800ce3e: 6113 str r3, [r2, #16] App_Printf("fdev=%lu\r\n", (unsigned long)g_cfg.fsk_fdev); - 800cdc8: 4b2a ldr r3, [pc, #168] @ (800ce74 ) - 800cdca: 691b ldr r3, [r3, #16] - 800cdcc: 4619 mov r1, r3 - 800cdce: 483e ldr r0, [pc, #248] @ (800cec8 ) - 800cdd0: f000 fa20 bl 800d214 + 800ce40: 4b2a ldr r3, [pc, #168] @ (800ceec ) + 800ce42: 691b ldr r3, [r3, #16] + 800ce44: 4619 mov r1, r3 + 800ce46: 483e ldr r0, [pc, #248] @ (800cf40 ) + 800ce48: f000 fa20 bl 800d28c return; - 800cdd4: e0ef b.n 800cfb6 + 800ce4c: e0ef b.n 800d02e } if (strncmp(line, "preamble ", 9) == 0) - 800cdd6: 2209 movs r2, #9 - 800cdd8: 493c ldr r1, [pc, #240] @ (800cecc ) - 800cdda: 6878 ldr r0, [r7, #4] - 800cddc: f002 f8be bl 800ef5c - 800cde0: 4603 mov r3, r0 - 800cde2: 2b00 cmp r3, #0 - 800cde4: d11d bne.n 800ce22 + 800ce4e: 2209 movs r2, #9 + 800ce50: 493c ldr r1, [pc, #240] @ (800cf44 ) + 800ce52: 6878 ldr r0, [r7, #4] + 800ce54: f002 f896 bl 800ef84 + 800ce58: 4603 mov r3, r0 + 800ce5a: 2b00 cmp r3, #0 + 800ce5c: d11d bne.n 800ce9a { u32 = strtoul(&line[9], NULL, 10); - 800cde6: 687b ldr r3, [r7, #4] - 800cde8: 3309 adds r3, #9 - 800cdea: 220a movs r2, #10 - 800cdec: 2100 movs r1, #0 - 800cdee: 4618 mov r0, r3 - 800cdf0: f002 f866 bl 800eec0 - 800cdf4: 6138 str r0, [r7, #16] + 800ce5e: 687b ldr r3, [r7, #4] + 800ce60: 3309 adds r3, #9 + 800ce62: 220a movs r2, #10 + 800ce64: 2100 movs r1, #0 + 800ce66: 4618 mov r0, r3 + 800ce68: f002 f83e bl 800eee8 + 800ce6c: 6138 str r0, [r7, #16] if ((u32 < 2UL) || (u32 > 65535UL)) - 800cdf6: 693b ldr r3, [r7, #16] - 800cdf8: 2b01 cmp r3, #1 - 800cdfa: d903 bls.n 800ce04 - 800cdfc: 693b ldr r3, [r7, #16] - 800cdfe: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800ce02: d303 bcc.n 800ce0c + 800ce6e: 693b ldr r3, [r7, #16] + 800ce70: 2b01 cmp r3, #1 + 800ce72: d903 bls.n 800ce7c + 800ce74: 693b ldr r3, [r7, #16] + 800ce76: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 800ce7a: d303 bcc.n 800ce84 { App_Printf("bad preamble\r\n"); - 800ce04: 4832 ldr r0, [pc, #200] @ (800ced0 ) - 800ce06: f000 fa05 bl 800d214 + 800ce7c: 4832 ldr r0, [pc, #200] @ (800cf48 ) + 800ce7e: f000 fa05 bl 800d28c return; - 800ce0a: e0d4 b.n 800cfb6 + 800ce82: e0d4 b.n 800d02e } g_cfg.fsk_preamble_len = (uint16_t)u32; - 800ce0c: 693b ldr r3, [r7, #16] - 800ce0e: b29a uxth r2, r3 - 800ce10: 4b18 ldr r3, [pc, #96] @ (800ce74 ) - 800ce12: 829a strh r2, [r3, #20] + 800ce84: 693b ldr r3, [r7, #16] + 800ce86: b29a uxth r2, r3 + 800ce88: 4b18 ldr r3, [pc, #96] @ (800ceec ) + 800ce8a: 829a strh r2, [r3, #20] App_Printf("preamble=%u\r\n", g_cfg.fsk_preamble_len); - 800ce14: 4b17 ldr r3, [pc, #92] @ (800ce74 ) - 800ce16: 8a9b ldrh r3, [r3, #20] - 800ce18: 4619 mov r1, r3 - 800ce1a: 482e ldr r0, [pc, #184] @ (800ced4 ) - 800ce1c: f000 f9fa bl 800d214 + 800ce8c: 4b17 ldr r3, [pc, #92] @ (800ceec ) + 800ce8e: 8a9b ldrh r3, [r3, #20] + 800ce90: 4619 mov r1, r3 + 800ce92: 482e ldr r0, [pc, #184] @ (800cf4c ) + 800ce94: f000 f9fa bl 800d28c return; - 800ce20: e0c9 b.n 800cfb6 + 800ce98: e0c9 b.n 800d02e } if (strncmp(line, "timeout ", 8) == 0) - 800ce22: 2208 movs r2, #8 - 800ce24: 492c ldr r1, [pc, #176] @ (800ced8 ) - 800ce26: 6878 ldr r0, [r7, #4] - 800ce28: f002 f898 bl 800ef5c - 800ce2c: 4603 mov r3, r0 - 800ce2e: 2b00 cmp r3, #0 - 800ce30: d161 bne.n 800cef6 + 800ce9a: 2208 movs r2, #8 + 800ce9c: 492c ldr r1, [pc, #176] @ (800cf50 ) + 800ce9e: 6878 ldr r0, [r7, #4] + 800cea0: f002 f870 bl 800ef84 + 800cea4: 4603 mov r3, r0 + 800cea6: 2b00 cmp r3, #0 + 800cea8: d161 bne.n 800cf6e { u32 = strtoul(&line[8], NULL, 10); - 800ce32: 687b ldr r3, [r7, #4] - 800ce34: 3308 adds r3, #8 - 800ce36: 220a movs r2, #10 - 800ce38: 2100 movs r1, #0 - 800ce3a: 4618 mov r0, r3 - 800ce3c: f002 f840 bl 800eec0 - 800ce40: 6138 str r0, [r7, #16] + 800ceaa: 687b ldr r3, [r7, #4] + 800ceac: 3308 adds r3, #8 + 800ceae: 220a movs r2, #10 + 800ceb0: 2100 movs r1, #0 + 800ceb2: 4618 mov r0, r3 + 800ceb4: f002 f818 bl 800eee8 + 800ceb8: 6138 str r0, [r7, #16] if ((u32 < 1UL) || (u32 > 1000UL)) - 800ce42: 693b ldr r3, [r7, #16] - 800ce44: 2b00 cmp r3, #0 - 800ce46: d003 beq.n 800ce50 - 800ce48: 693b ldr r3, [r7, #16] - 800ce4a: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 800ce4e: d947 bls.n 800cee0 + 800ceba: 693b ldr r3, [r7, #16] + 800cebc: 2b00 cmp r3, #0 + 800cebe: d003 beq.n 800cec8 + 800cec0: 693b ldr r3, [r7, #16] + 800cec2: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 800cec6: d947 bls.n 800cf58 { App_Printf("bad timeout\r\n"); - 800ce50: 4822 ldr r0, [pc, #136] @ (800cedc ) - 800ce52: f000 f9df bl 800d214 + 800cec8: 4822 ldr r0, [pc, #136] @ (800cf54 ) + 800ceca: f000 f9df bl 800d28c return; - 800ce56: e0ae b.n 800cfb6 - 800ce58: 0800fbe8 .word 0x0800fbe8 - 800ce5c: 0800fbf0 .word 0x0800fbf0 - 800ce60: 0800fbf4 .word 0x0800fbf4 - 800ce64: 0800fbfc .word 0x0800fbfc - 800ce68: 0800fc04 .word 0x0800fc04 - 800ce6c: 0800fc0c .word 0x0800fc0c - 800ce70: 0800fc14 .word 0x0800fc14 - 800ce74: 20000604 .word 0x20000604 - 800ce78: 0800fc20 .word 0x0800fc20 - 800ce7c: 0800fc34 .word 0x0800fc34 - 800ce80: 08f0d17f .word 0x08f0d17f - 800ce84: 39387000 .word 0x39387000 - 800ce88: 0800fc3c .word 0x0800fc3c - 800ce8c: 0800fc4c .word 0x0800fc4c - 800ce90: 0800fc58 .word 0x0800fc58 - 800ce94: 0800fc60 .word 0x0800fc60 - 800ce98: 0800fc6c .word 0x0800fc6c - 800ce9c: 0800fc78 .word 0x0800fc78 - 800cea0: 000493e0 .word 0x000493e0 - 800cea4: 0800fc84 .word 0x0800fc84 - 800cea8: 0800fc94 .word 0x0800fc94 - 800ceac: 0800fca4 .word 0x0800fca4 - 800ceb0: 0003d090 .word 0x0003d090 - 800ceb4: 0800fcb0 .word 0x0800fcb0 - 800ceb8: 0800fcc0 .word 0x0800fcc0 - 800cebc: 0800fcd0 .word 0x0800fcd0 - 800cec0: 00030d40 .word 0x00030d40 - 800cec4: 0800fcd8 .word 0x0800fcd8 - 800cec8: 0800fce4 .word 0x0800fce4 - 800cecc: 0800fcf0 .word 0x0800fcf0 - 800ced0: 0800fcfc .word 0x0800fcfc - 800ced4: 0800fd0c .word 0x0800fd0c - 800ced8: 0800fd1c .word 0x0800fd1c - 800cedc: 0800fd28 .word 0x0800fd28 + 800cece: e0ae b.n 800d02e + 800ced0: 0800fc10 .word 0x0800fc10 + 800ced4: 0800fc18 .word 0x0800fc18 + 800ced8: 0800fc1c .word 0x0800fc1c + 800cedc: 0800fc24 .word 0x0800fc24 + 800cee0: 0800fc2c .word 0x0800fc2c + 800cee4: 0800fc34 .word 0x0800fc34 + 800cee8: 0800fc3c .word 0x0800fc3c + 800ceec: 20000604 .word 0x20000604 + 800cef0: 0800fc48 .word 0x0800fc48 + 800cef4: 0800fc5c .word 0x0800fc5c + 800cef8: 08f0d17f .word 0x08f0d17f + 800cefc: 39387000 .word 0x39387000 + 800cf00: 0800fc64 .word 0x0800fc64 + 800cf04: 0800fc74 .word 0x0800fc74 + 800cf08: 0800fc80 .word 0x0800fc80 + 800cf0c: 0800fc88 .word 0x0800fc88 + 800cf10: 0800fc94 .word 0x0800fc94 + 800cf14: 0800fca0 .word 0x0800fca0 + 800cf18: 000493e0 .word 0x000493e0 + 800cf1c: 0800fcac .word 0x0800fcac + 800cf20: 0800fcbc .word 0x0800fcbc + 800cf24: 0800fccc .word 0x0800fccc + 800cf28: 0003d090 .word 0x0003d090 + 800cf2c: 0800fcd8 .word 0x0800fcd8 + 800cf30: 0800fce8 .word 0x0800fce8 + 800cf34: 0800fcf8 .word 0x0800fcf8 + 800cf38: 00030d40 .word 0x00030d40 + 800cf3c: 0800fd00 .word 0x0800fd00 + 800cf40: 0800fd0c .word 0x0800fd0c + 800cf44: 0800fd18 .word 0x0800fd18 + 800cf48: 0800fd24 .word 0x0800fd24 + 800cf4c: 0800fd34 .word 0x0800fd34 + 800cf50: 0800fd44 .word 0x0800fd44 + 800cf54: 0800fd50 .word 0x0800fd50 } g_cfg.uart_packet_timeout_ms = (uint16_t)u32; - 800cee0: 693b ldr r3, [r7, #16] - 800cee2: b29a uxth r2, r3 - 800cee4: 4b35 ldr r3, [pc, #212] @ (800cfbc ) - 800cee6: 835a strh r2, [r3, #26] + 800cf58: 693b ldr r3, [r7, #16] + 800cf5a: b29a uxth r2, r3 + 800cf5c: 4b35 ldr r3, [pc, #212] @ (800d034 ) + 800cf5e: 835a strh r2, [r3, #26] App_Printf("timeout=%u\r\n", g_cfg.uart_packet_timeout_ms); - 800cee8: 4b34 ldr r3, [pc, #208] @ (800cfbc ) - 800ceea: 8b5b ldrh r3, [r3, #26] - 800ceec: 4619 mov r1, r3 - 800ceee: 4834 ldr r0, [pc, #208] @ (800cfc0 ) - 800cef0: f000 f990 bl 800d214 + 800cf60: 4b34 ldr r3, [pc, #208] @ (800d034 ) + 800cf62: 8b5b ldrh r3, [r3, #26] + 800cf64: 4619 mov r1, r3 + 800cf66: 4834 ldr r0, [pc, #208] @ (800d038 ) + 800cf68: f000 f990 bl 800d28c return; - 800cef4: e05f b.n 800cfb6 + 800cf6c: e05f b.n 800d02e } if (strncmp(line, "uart ", 5) == 0) - 800cef6: 2205 movs r2, #5 - 800cef8: 4932 ldr r1, [pc, #200] @ (800cfc4 ) - 800cefa: 6878 ldr r0, [r7, #4] - 800cefc: f002 f82e bl 800ef5c - 800cf00: 4603 mov r3, r0 - 800cf02: 2b00 cmp r3, #0 - 800cf04: d122 bne.n 800cf4c + 800cf6e: 2205 movs r2, #5 + 800cf70: 4932 ldr r1, [pc, #200] @ (800d03c ) + 800cf72: 6878 ldr r0, [r7, #4] + 800cf74: f002 f806 bl 800ef84 + 800cf78: 4603 mov r3, r0 + 800cf7a: 2b00 cmp r3, #0 + 800cf7c: d122 bne.n 800cfc4 { u32 = strtoul(&line[5], NULL, 10); - 800cf06: 687b ldr r3, [r7, #4] - 800cf08: 3305 adds r3, #5 - 800cf0a: 220a movs r2, #10 - 800cf0c: 2100 movs r1, #0 - 800cf0e: 4618 mov r0, r3 - 800cf10: f001 ffd6 bl 800eec0 - 800cf14: 6138 str r0, [r7, #16] + 800cf7e: 687b ldr r3, [r7, #4] + 800cf80: 3305 adds r3, #5 + 800cf82: 220a movs r2, #10 + 800cf84: 2100 movs r1, #0 + 800cf86: 4618 mov r0, r3 + 800cf88: f001 ffae bl 800eee8 + 800cf8c: 6138 str r0, [r7, #16] if ((u32 < 1200UL) || (u32 > 921600UL)) - 800cf16: 693b ldr r3, [r7, #16] - 800cf18: f5b3 6f96 cmp.w r3, #1200 @ 0x4b0 - 800cf1c: d303 bcc.n 800cf26 - 800cf1e: 693b ldr r3, [r7, #16] - 800cf20: f5b3 2f61 cmp.w r3, #921600 @ 0xe1000 - 800cf24: d903 bls.n 800cf2e + 800cf8e: 693b ldr r3, [r7, #16] + 800cf90: f5b3 6f96 cmp.w r3, #1200 @ 0x4b0 + 800cf94: d303 bcc.n 800cf9e + 800cf96: 693b ldr r3, [r7, #16] + 800cf98: f5b3 2f61 cmp.w r3, #921600 @ 0xe1000 + 800cf9c: d903 bls.n 800cfa6 { App_Printf("bad uart baudrate\r\n"); - 800cf26: 4828 ldr r0, [pc, #160] @ (800cfc8 ) - 800cf28: f000 f974 bl 800d214 + 800cf9e: 4828 ldr r0, [pc, #160] @ (800d040 ) + 800cfa0: f000 f974 bl 800d28c return; - 800cf2c: e043 b.n 800cfb6 + 800cfa4: e043 b.n 800d02e } g_cfg.uart_baudrate = u32; - 800cf2e: 4a23 ldr r2, [pc, #140] @ (800cfbc ) - 800cf30: 693b ldr r3, [r7, #16] - 800cf32: 61d3 str r3, [r2, #28] + 800cfa6: 4a23 ldr r2, [pc, #140] @ (800d034 ) + 800cfa8: 693b ldr r3, [r7, #16] + 800cfaa: 61d3 str r3, [r2, #28] App_Printf("switching uart to %lu baud\r\n", (unsigned long)g_cfg.uart_baudrate); - 800cf34: 4b21 ldr r3, [pc, #132] @ (800cfbc ) - 800cf36: 69db ldr r3, [r3, #28] - 800cf38: 4619 mov r1, r3 - 800cf3a: 4824 ldr r0, [pc, #144] @ (800cfcc ) - 800cf3c: f000 f96a bl 800d214 + 800cfac: 4b21 ldr r3, [pc, #132] @ (800d034 ) + 800cfae: 69db ldr r3, [r3, #28] + 800cfb0: 4619 mov r1, r3 + 800cfb2: 4824 ldr r0, [pc, #144] @ (800d044 ) + 800cfb4: f000 f96a bl 800d28c App_ReconfigureUart(g_cfg.uart_baudrate); - 800cf40: 4b1e ldr r3, [pc, #120] @ (800cfbc ) - 800cf42: 69db ldr r3, [r3, #28] - 800cf44: 4618 mov r0, r3 - 800cf46: f000 f9ab bl 800d2a0 + 800cfb8: 4b1e ldr r3, [pc, #120] @ (800d034 ) + 800cfba: 69db ldr r3, [r3, #28] + 800cfbc: 4618 mov r0, r3 + 800cfbe: f000 f9ab bl 800d318 return; - 800cf4a: e034 b.n 800cfb6 + 800cfc2: e034 b.n 800d02e } if (strncmp(line, "sync ", 5) == 0) - 800cf4c: 2205 movs r2, #5 - 800cf4e: 4920 ldr r1, [pc, #128] @ (800cfd0 ) - 800cf50: 6878 ldr r0, [r7, #4] - 800cf52: f002 f803 bl 800ef5c - 800cf56: 4603 mov r3, r0 - 800cf58: 2b00 cmp r3, #0 - 800cf5a: d126 bne.n 800cfaa + 800cfc4: 2205 movs r2, #5 + 800cfc6: 4920 ldr r1, [pc, #128] @ (800d048 ) + 800cfc8: 6878 ldr r0, [r7, #4] + 800cfca: f001 ffdb bl 800ef84 + 800cfce: 4603 mov r3, r0 + 800cfd0: 2b00 cmp r3, #0 + 800cfd2: d126 bne.n 800d022 { arg = App_SkipSpaces(&line[5]); - 800cf5c: 687b ldr r3, [r7, #4] - 800cf5e: 3305 adds r3, #5 - 800cf60: 4618 mov r0, r3 - 800cf62: f000 fa4b bl 800d3fc - 800cf66: 6178 str r0, [r7, #20] + 800cfd4: 687b ldr r3, [r7, #4] + 800cfd6: 3305 adds r3, #5 + 800cfd8: 4618 mov r0, r3 + 800cfda: f000 fa4b bl 800d474 + 800cfde: 6178 str r0, [r7, #20] if (App_ParseHexSyncWord(arg, sync) == 0U) - 800cf68: f107 0308 add.w r3, r7, #8 - 800cf6c: 4619 mov r1, r3 - 800cf6e: 6978 ldr r0, [r7, #20] - 800cf70: f000 f9ce bl 800d310 - 800cf74: 4603 mov r3, r0 - 800cf76: 2b00 cmp r3, #0 - 800cf78: d103 bne.n 800cf82 + 800cfe0: f107 0308 add.w r3, r7, #8 + 800cfe4: 4619 mov r1, r3 + 800cfe6: 6978 ldr r0, [r7, #20] + 800cfe8: f000 f9ce bl 800d388 + 800cfec: 4603 mov r3, r0 + 800cfee: 2b00 cmp r3, #0 + 800cff0: d103 bne.n 800cffa { App_Printf("bad sync, use 6 hex chars, e.g. C194C1\r\n"); - 800cf7a: 4816 ldr r0, [pc, #88] @ (800cfd4 ) - 800cf7c: f000 f94a bl 800d214 + 800cff2: 4816 ldr r0, [pc, #88] @ (800d04c ) + 800cff4: f000 f94a bl 800d28c return; - 800cf80: e019 b.n 800cfb6 + 800cff8: e019 b.n 800d02e } memcpy(g_cfg.syncword, sync, sizeof(sync)); - 800cf82: 4b0e ldr r3, [pc, #56] @ (800cfbc ) - 800cf84: 3316 adds r3, #22 - 800cf86: f107 0208 add.w r2, r7, #8 - 800cf8a: 8811 ldrh r1, [r2, #0] - 800cf8c: 7892 ldrb r2, [r2, #2] - 800cf8e: 8019 strh r1, [r3, #0] - 800cf90: 709a strb r2, [r3, #2] + 800cffa: 4b0e ldr r3, [pc, #56] @ (800d034 ) + 800cffc: 3316 adds r3, #22 + 800cffe: f107 0208 add.w r2, r7, #8 + 800d002: 8811 ldrh r1, [r2, #0] + 800d004: 7892 ldrb r2, [r2, #2] + 800d006: 8019 strh r1, [r3, #0] + 800d008: 709a strb r2, [r3, #2] App_Printf("sync=%02X%02X%02X\r\n", g_cfg.syncword[0], g_cfg.syncword[1], g_cfg.syncword[2]); - 800cf92: 4b0a ldr r3, [pc, #40] @ (800cfbc ) - 800cf94: 7d9b ldrb r3, [r3, #22] - 800cf96: 4619 mov r1, r3 - 800cf98: 4b08 ldr r3, [pc, #32] @ (800cfbc ) - 800cf9a: 7ddb ldrb r3, [r3, #23] - 800cf9c: 461a mov r2, r3 - 800cf9e: 4b07 ldr r3, [pc, #28] @ (800cfbc ) - 800cfa0: 7e1b ldrb r3, [r3, #24] - 800cfa2: 480d ldr r0, [pc, #52] @ (800cfd8 ) - 800cfa4: f000 f936 bl 800d214 + 800d00a: 4b0a ldr r3, [pc, #40] @ (800d034 ) + 800d00c: 7d9b ldrb r3, [r3, #22] + 800d00e: 4619 mov r1, r3 + 800d010: 4b08 ldr r3, [pc, #32] @ (800d034 ) + 800d012: 7ddb ldrb r3, [r3, #23] + 800d014: 461a mov r2, r3 + 800d016: 4b07 ldr r3, [pc, #28] @ (800d034 ) + 800d018: 7e1b ldrb r3, [r3, #24] + 800d01a: 480d ldr r0, [pc, #52] @ (800d050 ) + 800d01c: f000 f936 bl 800d28c return; - 800cfa8: e005 b.n 800cfb6 + 800d020: e005 b.n 800d02e } App_Printf("unknown command: %s\r\n", line); - 800cfaa: 6879 ldr r1, [r7, #4] - 800cfac: 480b ldr r0, [pc, #44] @ (800cfdc ) - 800cfae: f000 f931 bl 800d214 - 800cfb2: e000 b.n 800cfb6 + 800d022: 6879 ldr r1, [r7, #4] + 800d024: 480b ldr r0, [pc, #44] @ (800d054 ) + 800d026: f000 f931 bl 800d28c + 800d02a: e000 b.n 800d02e return; - 800cfb4: bf00 nop + 800d02c: bf00 nop } - 800cfb6: 3718 adds r7, #24 - 800cfb8: 46bd mov sp, r7 - 800cfba: bd80 pop {r7, pc} - 800cfbc: 20000604 .word 0x20000604 - 800cfc0: 0800fd38 .word 0x0800fd38 - 800cfc4: 0800fd48 .word 0x0800fd48 - 800cfc8: 0800fd50 .word 0x0800fd50 - 800cfcc: 0800fd64 .word 0x0800fd64 - 800cfd0: 0800fd84 .word 0x0800fd84 - 800cfd4: 0800fd8c .word 0x0800fd8c - 800cfd8: 0800fdb8 .word 0x0800fdb8 - 800cfdc: 0800fdcc .word 0x0800fdcc + 800d02e: 3718 adds r7, #24 + 800d030: 46bd mov sp, r7 + 800d032: bd80 pop {r7, pc} + 800d034: 20000604 .word 0x20000604 + 800d038: 0800fd60 .word 0x0800fd60 + 800d03c: 0800fd70 .word 0x0800fd70 + 800d040: 0800fd78 .word 0x0800fd78 + 800d044: 0800fd8c .word 0x0800fd8c + 800d048: 0800fdac .word 0x0800fdac + 800d04c: 0800fdb4 .word 0x0800fdb4 + 800d050: 0800fde0 .word 0x0800fde0 + 800d054: 0800fdf4 .word 0x0800fdf4 -0800cfe0 : +0800d058 : static void App_PrintConfigPrompt(void) { - 800cfe0: b580 push {r7, lr} - 800cfe2: af00 add r7, sp, #0 + 800d058: b580 push {r7, lr} + 800d05a: af00 add r7, sp, #0 if (g_mode == APP_MODE_CONFIG) - 800cfe4: 4b04 ldr r3, [pc, #16] @ (800cff8 ) - 800cfe6: 781b ldrb r3, [r3, #0] - 800cfe8: 2b01 cmp r3, #1 - 800cfea: d102 bne.n 800cff2 + 800d05c: 4b04 ldr r3, [pc, #16] @ (800d070 ) + 800d05e: 781b ldrb r3, [r3, #0] + 800d060: 2b01 cmp r3, #1 + 800d062: d102 bne.n 800d06a { App_Printf("cfg> "); - 800cfec: 4803 ldr r0, [pc, #12] @ (800cffc ) - 800cfee: f000 f911 bl 800d214 + 800d064: 4803 ldr r0, [pc, #12] @ (800d074 ) + 800d066: f000 f911 bl 800d28c } } - 800cff2: bf00 nop - 800cff4: bd80 pop {r7, pc} - 800cff6: bf00 nop - 800cff8: 20000b90 .word 0x20000b90 - 800cffc: 0800fde4 .word 0x0800fde4 + 800d06a: bf00 nop + 800d06c: bd80 pop {r7, pc} + 800d06e: bf00 nop + 800d070: 20000bc8 .word 0x20000bc8 + 800d074: 0800fe0c .word 0x0800fe0c -0800d000 : +0800d078 : static void App_PrintHelp(void) { - 800d000: b580 push {r7, lr} - 800d002: af00 add r7, sp, #0 + 800d078: b580 push {r7, lr} + 800d07a: af00 add r7, sp, #0 App_Printf("commands:\r\n"); - 800d004: 4817 ldr r0, [pc, #92] @ (800d064 ) - 800d006: f000 f905 bl 800d214 + 800d07c: 4817 ldr r0, [pc, #92] @ (800d0dc ) + 800d07e: f000 f905 bl 800d28c App_Printf(" help - this help\r\n"); - 800d00a: 4817 ldr r0, [pc, #92] @ (800d068 ) - 800d00c: f000 f902 bl 800d214 + 800d082: 4817 ldr r0, [pc, #92] @ (800d0e0 ) + 800d084: f000 f902 bl 800d28c App_Printf(" show - current config and counters\r\n"); - 800d010: 4816 ldr r0, [pc, #88] @ (800d06c ) - 800d012: f000 f8ff bl 800d214 + 800d088: 4816 ldr r0, [pc, #88] @ (800d0e4 ) + 800d08a: f000 f8ff bl 800d28c App_Printf(" freq - rf frequency\r\n"); - 800d016: 4816 ldr r0, [pc, #88] @ (800d070 ) - 800d018: f000 f8fc bl 800d214 + 800d08e: 4816 ldr r0, [pc, #88] @ (800d0e8 ) + 800d090: f000 f8fc bl 800d28c App_Printf(" power - tx power (-9..22)\r\n"); - 800d01c: 4815 ldr r0, [pc, #84] @ (800d074 ) - 800d01e: f000 f8f9 bl 800d214 + 800d094: 4815 ldr r0, [pc, #84] @ (800d0ec ) + 800d096: f000 f8f9 bl 800d28c App_Printf(" bitrate - fsk bitrate\r\n"); - 800d022: 4815 ldr r0, [pc, #84] @ (800d078 ) - 800d024: f000 f8f6 bl 800d214 + 800d09a: 4815 ldr r0, [pc, #84] @ (800d0f0 ) + 800d09c: f000 f8f6 bl 800d28c App_Printf(" bandwidth - fsk rx bandwidth\r\n"); - 800d028: 4814 ldr r0, [pc, #80] @ (800d07c ) - 800d02a: f000 f8f3 bl 800d214 + 800d0a0: 4814 ldr r0, [pc, #80] @ (800d0f4 ) + 800d0a2: f000 f8f3 bl 800d28c App_Printf(" fdev - fsk frequency deviation\r\n"); - 800d02e: 4814 ldr r0, [pc, #80] @ (800d080 ) - 800d030: f000 f8f0 bl 800d214 + 800d0a6: 4814 ldr r0, [pc, #80] @ (800d0f8 ) + 800d0a8: f000 f8f0 bl 800d28c App_Printf(" preamble - fsk preamble length\r\n"); - 800d034: 4813 ldr r0, [pc, #76] @ (800d084 ) - 800d036: f000 f8ed bl 800d214 + 800d0ac: 4813 ldr r0, [pc, #76] @ (800d0fc ) + 800d0ae: f000 f8ed bl 800d28c App_Printf(" sync - 3-byte syncword, example C194C1\r\n"); - 800d03a: 4813 ldr r0, [pc, #76] @ (800d088 ) - 800d03c: f000 f8ea bl 800d214 + 800d0b2: 4813 ldr r0, [pc, #76] @ (800d100 ) + 800d0b4: f000 f8ea bl 800d28c App_Printf(" timeout - uart silence before rf packet send\r\n"); - 800d040: 4812 ldr r0, [pc, #72] @ (800d08c ) - 800d042: f000 f8e7 bl 800d214 + 800d0b8: 4812 ldr r0, [pc, #72] @ (800d104 ) + 800d0ba: f000 f8e7 bl 800d28c App_Printf(" uart - change uart baudrate\r\n"); - 800d046: 4812 ldr r0, [pc, #72] @ (800d090 ) - 800d048: f000 f8e4 bl 800d214 + 800d0be: 4812 ldr r0, [pc, #72] @ (800d108 ) + 800d0c0: f000 f8e4 bl 800d28c App_Printf(" save - save and apply changes\r\n"); - 800d04c: 4811 ldr r0, [pc, #68] @ (800d094 ) - 800d04e: f000 f8e1 bl 800d214 + 800d0c4: 4811 ldr r0, [pc, #68] @ (800d10c ) + 800d0c6: f000 f8e1 bl 800d28c App_Printf(" defaults - restore default config\r\n"); - 800d052: 4811 ldr r0, [pc, #68] @ (800d098 ) - 800d054: f000 f8de bl 800d214 + 800d0ca: 4811 ldr r0, [pc, #68] @ (800d110 ) + 800d0cc: f000 f8de bl 800d28c App_Printf(" exit - return to transparent bridge mode\r\n"); - 800d058: 4810 ldr r0, [pc, #64] @ (800d09c ) - 800d05a: f000 f8db bl 800d214 + 800d0d0: 4810 ldr r0, [pc, #64] @ (800d114 ) + 800d0d2: f000 f8db bl 800d28c } - 800d05e: bf00 nop - 800d060: bd80 pop {r7, pc} - 800d062: bf00 nop - 800d064: 0800fdec .word 0x0800fdec - 800d068: 0800fdf8 .word 0x0800fdf8 - 800d06c: 0800fe20 .word 0x0800fe20 - 800d070: 0800fe58 .word 0x0800fe58 - 800d074: 0800fe80 .word 0x0800fe80 - 800d078: 0800feb0 .word 0x0800feb0 - 800d07c: 0800fed8 .word 0x0800fed8 - 800d080: 0800ff04 .word 0x0800ff04 - 800d084: 0800ff38 .word 0x0800ff38 - 800d088: 0800ff68 .word 0x0800ff68 - 800d08c: 0800ffa4 .word 0x0800ffa4 - 800d090: 0800ffe4 .word 0x0800ffe4 - 800d094: 08010014 .word 0x08010014 - 800d098: 08010048 .word 0x08010048 - 800d09c: 0801007c .word 0x0801007c + 800d0d6: bf00 nop + 800d0d8: bd80 pop {r7, pc} + 800d0da: bf00 nop + 800d0dc: 0800fe14 .word 0x0800fe14 + 800d0e0: 0800fe20 .word 0x0800fe20 + 800d0e4: 0800fe48 .word 0x0800fe48 + 800d0e8: 0800fe80 .word 0x0800fe80 + 800d0ec: 0800fea8 .word 0x0800fea8 + 800d0f0: 0800fed8 .word 0x0800fed8 + 800d0f4: 0800ff00 .word 0x0800ff00 + 800d0f8: 0800ff2c .word 0x0800ff2c + 800d0fc: 0800ff60 .word 0x0800ff60 + 800d100: 0800ff90 .word 0x0800ff90 + 800d104: 0800ffcc .word 0x0800ffcc + 800d108: 0801000c .word 0x0801000c + 800d10c: 0801003c .word 0x0801003c + 800d110: 08010070 .word 0x08010070 + 800d114: 080100a4 .word 0x080100a4 -0800d0a0 : +0800d118 : static void App_PrintStatus(void) { - 800d0a0: b580 push {r7, lr} - 800d0a2: af00 add r7, sp, #0 + 800d118: b580 push {r7, lr} + 800d11a: af00 add r7, sp, #0 App_Printf("mode=%s\r\n", (g_mode == APP_MODE_CONFIG) ? "config" : "data"); - 800d0a4: 4b3d ldr r3, [pc, #244] @ (800d19c ) - 800d0a6: 781b ldrb r3, [r3, #0] - 800d0a8: 2b01 cmp r3, #1 - 800d0aa: d101 bne.n 800d0b0 - 800d0ac: 4b3c ldr r3, [pc, #240] @ (800d1a0 ) - 800d0ae: e000 b.n 800d0b2 - 800d0b0: 4b3c ldr r3, [pc, #240] @ (800d1a4 ) - 800d0b2: 4619 mov r1, r3 - 800d0b4: 483c ldr r0, [pc, #240] @ (800d1a8 ) - 800d0b6: f000 f8ad bl 800d214 - App_Printf("freq=%lu Hz\r\n", (unsigned long)g_cfg.rf_frequency); - 800d0ba: 4b3c ldr r3, [pc, #240] @ (800d1ac ) - 800d0bc: 681b ldr r3, [r3, #0] - 800d0be: 4619 mov r1, r3 - 800d0c0: 483b ldr r0, [pc, #236] @ (800d1b0 ) - 800d0c2: f000 f8a7 bl 800d214 - App_Printf("power=%d dBm\r\n", g_cfg.tx_power); - 800d0c6: 4b39 ldr r3, [pc, #228] @ (800d1ac ) - 800d0c8: f993 3004 ldrsb.w r3, [r3, #4] - 800d0cc: 4619 mov r1, r3 - 800d0ce: 4839 ldr r0, [pc, #228] @ (800d1b4 ) - 800d0d0: f000 f8a0 bl 800d214 - App_Printf("bitrate=%lu bps\r\n", (unsigned long)g_cfg.fsk_bitrate); - 800d0d4: 4b35 ldr r3, [pc, #212] @ (800d1ac ) - 800d0d6: 689b ldr r3, [r3, #8] - 800d0d8: 4619 mov r1, r3 - 800d0da: 4837 ldr r0, [pc, #220] @ (800d1b8 ) - 800d0dc: f000 f89a bl 800d214 - App_Printf("bandwidth=%lu Hz\r\n", (unsigned long)g_cfg.fsk_bandwidth); - 800d0e0: 4b32 ldr r3, [pc, #200] @ (800d1ac ) - 800d0e2: 68db ldr r3, [r3, #12] - 800d0e4: 4619 mov r1, r3 - 800d0e6: 4835 ldr r0, [pc, #212] @ (800d1bc ) - 800d0e8: f000 f894 bl 800d214 - App_Printf("fdev=%lu Hz\r\n", (unsigned long)g_cfg.fsk_fdev); - 800d0ec: 4b2f ldr r3, [pc, #188] @ (800d1ac ) - 800d0ee: 691b ldr r3, [r3, #16] - 800d0f0: 4619 mov r1, r3 - 800d0f2: 4833 ldr r0, [pc, #204] @ (800d1c0 ) - 800d0f4: f000 f88e bl 800d214 - App_Printf("preamble=%u bytes\r\n", g_cfg.fsk_preamble_len); - 800d0f8: 4b2c ldr r3, [pc, #176] @ (800d1ac ) - 800d0fa: 8a9b ldrh r3, [r3, #20] - 800d0fc: 4619 mov r1, r3 - 800d0fe: 4831 ldr r0, [pc, #196] @ (800d1c4 ) - 800d100: f000 f888 bl 800d214 - App_Printf("sync=%02X%02X%02X\r\n", g_cfg.syncword[0], g_cfg.syncword[1], g_cfg.syncword[2]); - 800d104: 4b29 ldr r3, [pc, #164] @ (800d1ac ) - 800d106: 7d9b ldrb r3, [r3, #22] - 800d108: 4619 mov r1, r3 - 800d10a: 4b28 ldr r3, [pc, #160] @ (800d1ac ) - 800d10c: 7ddb ldrb r3, [r3, #23] - 800d10e: 461a mov r2, r3 - 800d110: 4b26 ldr r3, [pc, #152] @ (800d1ac ) - 800d112: 7e1b ldrb r3, [r3, #24] - 800d114: 482c ldr r0, [pc, #176] @ (800d1c8 ) - 800d116: f000 f87d bl 800d214 - App_Printf("uart_baud=%lu\r\n", (unsigned long)g_cfg.uart_baudrate); - 800d11a: 4b24 ldr r3, [pc, #144] @ (800d1ac ) - 800d11c: 69db ldr r3, [r3, #28] - 800d11e: 4619 mov r1, r3 - 800d120: 482a ldr r0, [pc, #168] @ (800d1cc ) - 800d122: f000 f877 bl 800d214 - App_Printf("uart_pkt_timeout=%u ms\r\n", g_cfg.uart_packet_timeout_ms); - 800d126: 4b21 ldr r3, [pc, #132] @ (800d1ac ) - 800d128: 8b5b ldrh r3, [r3, #26] + 800d11c: 4b3d ldr r3, [pc, #244] @ (800d214 ) + 800d11e: 781b ldrb r3, [r3, #0] + 800d120: 2b01 cmp r3, #1 + 800d122: d101 bne.n 800d128 + 800d124: 4b3c ldr r3, [pc, #240] @ (800d218 ) + 800d126: e000 b.n 800d12a + 800d128: 4b3c ldr r3, [pc, #240] @ (800d21c ) 800d12a: 4619 mov r1, r3 - 800d12c: 4828 ldr r0, [pc, #160] @ (800d1d0 ) - 800d12e: f000 f871 bl 800d214 + 800d12c: 483c ldr r0, [pc, #240] @ (800d220 ) + 800d12e: f000 f8ad bl 800d28c + App_Printf("freq=%lu Hz\r\n", (unsigned long)g_cfg.rf_frequency); + 800d132: 4b3c ldr r3, [pc, #240] @ (800d224 ) + 800d134: 681b ldr r3, [r3, #0] + 800d136: 4619 mov r1, r3 + 800d138: 483b ldr r0, [pc, #236] @ (800d228 ) + 800d13a: f000 f8a7 bl 800d28c + App_Printf("power=%d dBm\r\n", g_cfg.tx_power); + 800d13e: 4b39 ldr r3, [pc, #228] @ (800d224 ) + 800d140: f993 3004 ldrsb.w r3, [r3, #4] + 800d144: 4619 mov r1, r3 + 800d146: 4839 ldr r0, [pc, #228] @ (800d22c ) + 800d148: f000 f8a0 bl 800d28c + App_Printf("bitrate=%lu bps\r\n", (unsigned long)g_cfg.fsk_bitrate); + 800d14c: 4b35 ldr r3, [pc, #212] @ (800d224 ) + 800d14e: 689b ldr r3, [r3, #8] + 800d150: 4619 mov r1, r3 + 800d152: 4837 ldr r0, [pc, #220] @ (800d230 ) + 800d154: f000 f89a bl 800d28c + App_Printf("bandwidth=%lu Hz\r\n", (unsigned long)g_cfg.fsk_bandwidth); + 800d158: 4b32 ldr r3, [pc, #200] @ (800d224 ) + 800d15a: 68db ldr r3, [r3, #12] + 800d15c: 4619 mov r1, r3 + 800d15e: 4835 ldr r0, [pc, #212] @ (800d234 ) + 800d160: f000 f894 bl 800d28c + App_Printf("fdev=%lu Hz\r\n", (unsigned long)g_cfg.fsk_fdev); + 800d164: 4b2f ldr r3, [pc, #188] @ (800d224 ) + 800d166: 691b ldr r3, [r3, #16] + 800d168: 4619 mov r1, r3 + 800d16a: 4833 ldr r0, [pc, #204] @ (800d238 ) + 800d16c: f000 f88e bl 800d28c + App_Printf("preamble=%u bytes\r\n", g_cfg.fsk_preamble_len); + 800d170: 4b2c ldr r3, [pc, #176] @ (800d224 ) + 800d172: 8a9b ldrh r3, [r3, #20] + 800d174: 4619 mov r1, r3 + 800d176: 4831 ldr r0, [pc, #196] @ (800d23c ) + 800d178: f000 f888 bl 800d28c + App_Printf("sync=%02X%02X%02X\r\n", g_cfg.syncword[0], g_cfg.syncword[1], g_cfg.syncword[2]); + 800d17c: 4b29 ldr r3, [pc, #164] @ (800d224 ) + 800d17e: 7d9b ldrb r3, [r3, #22] + 800d180: 4619 mov r1, r3 + 800d182: 4b28 ldr r3, [pc, #160] @ (800d224 ) + 800d184: 7ddb ldrb r3, [r3, #23] + 800d186: 461a mov r2, r3 + 800d188: 4b26 ldr r3, [pc, #152] @ (800d224 ) + 800d18a: 7e1b ldrb r3, [r3, #24] + 800d18c: 482c ldr r0, [pc, #176] @ (800d240 ) + 800d18e: f000 f87d bl 800d28c + App_Printf("uart_baud=%lu\r\n", (unsigned long)g_cfg.uart_baudrate); + 800d192: 4b24 ldr r3, [pc, #144] @ (800d224 ) + 800d194: 69db ldr r3, [r3, #28] + 800d196: 4619 mov r1, r3 + 800d198: 482a ldr r0, [pc, #168] @ (800d244 ) + 800d19a: f000 f877 bl 800d28c + App_Printf("uart_pkt_timeout=%u ms\r\n", g_cfg.uart_packet_timeout_ms); + 800d19e: 4b21 ldr r3, [pc, #132] @ (800d224 ) + 800d1a0: 8b5b ldrh r3, [r3, #26] + 800d1a2: 4619 mov r1, r3 + 800d1a4: 4828 ldr r0, [pc, #160] @ (800d248 ) + 800d1a6: f000 f871 bl 800d28c App_Printf("tx_queue=%u/%u\r\n", g_tx_q_count, TX_QUEUE_DEPTH); - 800d132: 4b28 ldr r3, [pc, #160] @ (800d1d4 ) - 800d134: 781b ldrb r3, [r3, #0] - 800d136: 2204 movs r2, #4 - 800d138: 4619 mov r1, r3 - 800d13a: 4827 ldr r0, [pc, #156] @ (800d1d8 ) - 800d13c: f000 f86a bl 800d214 + 800d1aa: 4b28 ldr r3, [pc, #160] @ (800d24c ) + 800d1ac: 781b ldrb r3, [r3, #0] + 800d1ae: 2204 movs r2, #4 + 800d1b0: 4619 mov r1, r3 + 800d1b2: 4827 ldr r0, [pc, #156] @ (800d250 ) + 800d1b4: f000 f86a bl 800d28c App_Printf("last_rx_rssi=%d dBm\r\n", (int)g_last_rx_rssi); - 800d140: 4b26 ldr r3, [pc, #152] @ (800d1dc ) - 800d142: 881b ldrh r3, [r3, #0] - 800d144: b21b sxth r3, r3 - 800d146: 4619 mov r1, r3 - 800d148: 4825 ldr r0, [pc, #148] @ (800d1e0 ) - 800d14a: f000 f863 bl 800d214 + 800d1b8: 4b26 ldr r3, [pc, #152] @ (800d254 ) + 800d1ba: 881b ldrh r3, [r3, #0] + 800d1bc: b21b sxth r3, r3 + 800d1be: 4619 mov r1, r3 + 800d1c0: 4825 ldr r0, [pc, #148] @ (800d258 ) + 800d1c2: f000 f863 bl 800d28c App_Printf("last_rx_cfo=%d\r\n", (int)g_last_rx_cfo); - 800d14e: 4b25 ldr r3, [pc, #148] @ (800d1e4 ) - 800d150: 781b ldrb r3, [r3, #0] - 800d152: b25b sxtb r3, r3 - 800d154: 4619 mov r1, r3 - 800d156: 4824 ldr r0, [pc, #144] @ (800d1e8 ) - 800d158: f000 f85c bl 800d214 + 800d1c6: 4b25 ldr r3, [pc, #148] @ (800d25c ) + 800d1c8: 781b ldrb r3, [r3, #0] + 800d1ca: b25b sxtb r3, r3 + 800d1cc: 4619 mov r1, r3 + 800d1ce: 4824 ldr r0, [pc, #144] @ (800d260 ) + 800d1d0: f000 f85c bl 800d28c App_Printf("stat_uart_packets_tx=%lu\r\n", (unsigned long)g_stat_uart_packets_tx); - 800d15c: 4b23 ldr r3, [pc, #140] @ (800d1ec ) - 800d15e: 681b ldr r3, [r3, #0] - 800d160: 4619 mov r1, r3 - 800d162: 4823 ldr r0, [pc, #140] @ (800d1f0 ) - 800d164: f000 f856 bl 800d214 + 800d1d4: 4b23 ldr r3, [pc, #140] @ (800d264 ) + 800d1d6: 681b ldr r3, [r3, #0] + 800d1d8: 4619 mov r1, r3 + 800d1da: 4823 ldr r0, [pc, #140] @ (800d268 ) + 800d1dc: f000 f856 bl 800d28c App_Printf("stat_uart_bytes_tx=%lu\r\n", (unsigned long)g_stat_uart_bytes_tx); - 800d168: 4b22 ldr r3, [pc, #136] @ (800d1f4 ) - 800d16a: 681b ldr r3, [r3, #0] - 800d16c: 4619 mov r1, r3 - 800d16e: 4822 ldr r0, [pc, #136] @ (800d1f8 ) - 800d170: f000 f850 bl 800d214 + 800d1e0: 4b22 ldr r3, [pc, #136] @ (800d26c ) + 800d1e2: 681b ldr r3, [r3, #0] + 800d1e4: 4619 mov r1, r3 + 800d1e6: 4822 ldr r0, [pc, #136] @ (800d270 ) + 800d1e8: f000 f850 bl 800d28c App_Printf("stat_radio_packets_rx=%lu\r\n", (unsigned long)g_stat_radio_packets_rx); - 800d174: 4b21 ldr r3, [pc, #132] @ (800d1fc ) - 800d176: 681b ldr r3, [r3, #0] - 800d178: 4619 mov r1, r3 - 800d17a: 4821 ldr r0, [pc, #132] @ (800d200 ) - 800d17c: f000 f84a bl 800d214 + 800d1ec: 4b21 ldr r3, [pc, #132] @ (800d274 ) + 800d1ee: 681b ldr r3, [r3, #0] + 800d1f0: 4619 mov r1, r3 + 800d1f2: 4821 ldr r0, [pc, #132] @ (800d278 ) + 800d1f4: f000 f84a bl 800d28c App_Printf("stat_radio_bytes_rx=%lu\r\n", (unsigned long)g_stat_radio_bytes_rx); - 800d180: 4b20 ldr r3, [pc, #128] @ (800d204 ) - 800d182: 681b ldr r3, [r3, #0] - 800d184: 4619 mov r1, r3 - 800d186: 4820 ldr r0, [pc, #128] @ (800d208 ) - 800d188: f000 f844 bl 800d214 + 800d1f8: 4b20 ldr r3, [pc, #128] @ (800d27c ) + 800d1fa: 681b ldr r3, [r3, #0] + 800d1fc: 4619 mov r1, r3 + 800d1fe: 4820 ldr r0, [pc, #128] @ (800d280 ) + 800d200: f000 f844 bl 800d28c App_Printf("stat_queue_overflow=%lu\r\n", (unsigned long)g_stat_queue_overflow); - 800d18c: 4b1f ldr r3, [pc, #124] @ (800d20c ) - 800d18e: 681b ldr r3, [r3, #0] - 800d190: 4619 mov r1, r3 - 800d192: 481f ldr r0, [pc, #124] @ (800d210 ) - 800d194: f000 f83e bl 800d214 + 800d204: 4b1f ldr r3, [pc, #124] @ (800d284 ) + 800d206: 681b ldr r3, [r3, #0] + 800d208: 4619 mov r1, r3 + 800d20a: 481f ldr r0, [pc, #124] @ (800d288 ) + 800d20c: f000 f83e bl 800d28c } - 800d198: bf00 nop - 800d19a: bd80 pop {r7, pc} - 800d19c: 20000b90 .word 0x20000b90 - 800d1a0: 080100bc .word 0x080100bc - 800d1a4: 080100c4 .word 0x080100c4 - 800d1a8: 080100cc .word 0x080100cc - 800d1ac: 20000604 .word 0x20000604 - 800d1b0: 080100d8 .word 0x080100d8 - 800d1b4: 080100e8 .word 0x080100e8 - 800d1b8: 080100f8 .word 0x080100f8 - 800d1bc: 0801010c .word 0x0801010c - 800d1c0: 08010120 .word 0x08010120 - 800d1c4: 08010130 .word 0x08010130 - 800d1c8: 0800fdb8 .word 0x0800fdb8 - 800d1cc: 08010144 .word 0x08010144 - 800d1d0: 08010154 .word 0x08010154 - 800d1d4: 20000a9a .word 0x20000a9a - 800d1d8: 08010170 .word 0x08010170 - 800d1dc: 2000062a .word 0x2000062a - 800d1e0: 08010184 .word 0x08010184 - 800d1e4: 2000062c .word 0x2000062c - 800d1e8: 0801019c .word 0x0801019c - 800d1ec: 20000bf8 .word 0x20000bf8 - 800d1f0: 080101b0 .word 0x080101b0 - 800d1f4: 20000bfc .word 0x20000bfc - 800d1f8: 080101cc .word 0x080101cc - 800d1fc: 20000c00 .word 0x20000c00 - 800d200: 080101e8 .word 0x080101e8 - 800d204: 20000c04 .word 0x20000c04 - 800d208: 08010204 .word 0x08010204 - 800d20c: 20000c08 .word 0x20000c08 - 800d210: 08010220 .word 0x08010220 + 800d210: bf00 nop + 800d212: bd80 pop {r7, pc} + 800d214: 20000bc8 .word 0x20000bc8 + 800d218: 080100e4 .word 0x080100e4 + 800d21c: 080100ec .word 0x080100ec + 800d220: 080100f4 .word 0x080100f4 + 800d224: 20000604 .word 0x20000604 + 800d228: 08010100 .word 0x08010100 + 800d22c: 08010110 .word 0x08010110 + 800d230: 08010120 .word 0x08010120 + 800d234: 08010134 .word 0x08010134 + 800d238: 08010148 .word 0x08010148 + 800d23c: 08010158 .word 0x08010158 + 800d240: 0800fde0 .word 0x0800fde0 + 800d244: 0801016c .word 0x0801016c + 800d248: 0801017c .word 0x0801017c + 800d24c: 20000ad2 .word 0x20000ad2 + 800d250: 08010198 .word 0x08010198 + 800d254: 2000062a .word 0x2000062a + 800d258: 080101ac .word 0x080101ac + 800d25c: 2000062c .word 0x2000062c + 800d260: 080101c4 .word 0x080101c4 + 800d264: 20000c30 .word 0x20000c30 + 800d268: 080101d8 .word 0x080101d8 + 800d26c: 20000c34 .word 0x20000c34 + 800d270: 080101f4 .word 0x080101f4 + 800d274: 20000c38 .word 0x20000c38 + 800d278: 08010210 .word 0x08010210 + 800d27c: 20000c3c .word 0x20000c3c + 800d280: 0801022c .word 0x0801022c + 800d284: 20000c40 .word 0x20000c40 + 800d288: 08010248 .word 0x08010248 -0800d214 : +0800d28c : static void App_Printf(const char *fmt, ...) { - 800d214: b40f push {r0, r1, r2, r3} - 800d216: b580 push {r7, lr} - 800d218: b0b2 sub sp, #200 @ 0xc8 - 800d21a: af00 add r7, sp, #0 + 800d28c: b40f push {r0, r1, r2, r3} + 800d28e: b580 push {r7, lr} + 800d290: b0b2 sub sp, #200 @ 0xc8 + 800d292: af00 add r7, sp, #0 char buffer[192]; va_list ap; int len; va_start(ap, fmt); - 800d21c: f107 03d4 add.w r3, r7, #212 @ 0xd4 - 800d220: 603b str r3, [r7, #0] + 800d294: f107 03d4 add.w r3, r7, #212 @ 0xd4 + 800d298: 603b str r3, [r7, #0] len = vsnprintf(buffer, sizeof(buffer), fmt, ap); - 800d222: 1d38 adds r0, r7, #4 - 800d224: 683b ldr r3, [r7, #0] - 800d226: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 - 800d22a: 21c0 movs r1, #192 @ 0xc0 - 800d22c: f001 fe80 bl 800ef30 - 800d230: f8c7 00c4 str.w r0, [r7, #196] @ 0xc4 + 800d29a: 1d38 adds r0, r7, #4 + 800d29c: 683b ldr r3, [r7, #0] + 800d29e: f8d7 20d0 ldr.w r2, [r7, #208] @ 0xd0 + 800d2a2: 21c0 movs r1, #192 @ 0xc0 + 800d2a4: f001 fe58 bl 800ef58 + 800d2a8: f8c7 00c4 str.w r0, [r7, #196] @ 0xc4 va_end(ap); if (len <= 0) - 800d234: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 800d238: 2b00 cmp r3, #0 - 800d23a: dd0f ble.n 800d25c + 800d2ac: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 800d2b0: 2b00 cmp r3, #0 + 800d2b2: dd0f ble.n 800d2d4 { return; } if ((size_t)len >= sizeof(buffer)) - 800d23c: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 800d240: 2bbf cmp r3, #191 @ 0xbf - 800d242: d902 bls.n 800d24a + 800d2b4: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 800d2b8: 2bbf cmp r3, #191 @ 0xbf + 800d2ba: d902 bls.n 800d2c2 { len = (int)(sizeof(buffer) - 1U); - 800d244: 23bf movs r3, #191 @ 0xbf - 800d246: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 + 800d2bc: 23bf movs r3, #191 @ 0xbf + 800d2be: f8c7 30c4 str.w r3, [r7, #196] @ 0xc4 } App_Write((const uint8_t *)buffer, (uint16_t)len); - 800d24a: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 - 800d24e: b29a uxth r2, r3 - 800d250: 1d3b adds r3, r7, #4 - 800d252: 4611 mov r1, r2 - 800d254: 4618 mov r0, r3 - 800d256: f000 f809 bl 800d26c - 800d25a: e000 b.n 800d25e + 800d2c2: f8d7 30c4 ldr.w r3, [r7, #196] @ 0xc4 + 800d2c6: b29a uxth r2, r3 + 800d2c8: 1d3b adds r3, r7, #4 + 800d2ca: 4611 mov r1, r2 + 800d2cc: 4618 mov r0, r3 + 800d2ce: f000 f809 bl 800d2e4 + 800d2d2: e000 b.n 800d2d6 return; - 800d25c: bf00 nop + 800d2d4: bf00 nop } - 800d25e: 37c8 adds r7, #200 @ 0xc8 - 800d260: 46bd mov sp, r7 - 800d262: e8bd 4080 ldmia.w sp!, {r7, lr} - 800d266: b004 add sp, #16 - 800d268: 4770 bx lr + 800d2d6: 37c8 adds r7, #200 @ 0xc8 + 800d2d8: 46bd mov sp, r7 + 800d2da: e8bd 4080 ldmia.w sp!, {r7, lr} + 800d2de: b004 add sp, #16 + 800d2e0: 4770 bx lr ... -0800d26c : +0800d2e4 : static void App_Write(const uint8_t *data, uint16_t len) { - 800d26c: b580 push {r7, lr} - 800d26e: b082 sub sp, #8 - 800d270: af00 add r7, sp, #0 - 800d272: 6078 str r0, [r7, #4] - 800d274: 460b mov r3, r1 - 800d276: 807b strh r3, [r7, #2] + 800d2e4: b580 push {r7, lr} + 800d2e6: b082 sub sp, #8 + 800d2e8: af00 add r7, sp, #0 + 800d2ea: 6078 str r0, [r7, #4] + 800d2ec: 460b mov r3, r1 + 800d2ee: 807b strh r3, [r7, #2] if ((data == NULL) || (len == 0U)) - 800d278: 687b ldr r3, [r7, #4] - 800d27a: 2b00 cmp r3, #0 - 800d27c: d00a beq.n 800d294 - 800d27e: 887b ldrh r3, [r7, #2] - 800d280: 2b00 cmp r3, #0 - 800d282: d007 beq.n 800d294 + 800d2f0: 687b ldr r3, [r7, #4] + 800d2f2: 2b00 cmp r3, #0 + 800d2f4: d00a beq.n 800d30c + 800d2f6: 887b ldrh r3, [r7, #2] + 800d2f8: 2b00 cmp r3, #0 + 800d2fa: d007 beq.n 800d30c { return; } (void)HAL_UART_Transmit(&huart2, (uint8_t *)data, len, 1000U); - 800d284: 887a ldrh r2, [r7, #2] - 800d286: f44f 737a mov.w r3, #1000 @ 0x3e8 - 800d28a: 6879 ldr r1, [r7, #4] - 800d28c: 4803 ldr r0, [pc, #12] @ (800d29c ) - 800d28e: f7f8 f9f8 bl 8005682 - 800d292: e000 b.n 800d296 + 800d2fc: 887a ldrh r2, [r7, #2] + 800d2fe: f44f 737a mov.w r3, #1000 @ 0x3e8 + 800d302: 6879 ldr r1, [r7, #4] + 800d304: 4803 ldr r0, [pc, #12] @ (800d314 ) + 800d306: f7f8 f9bc bl 8005682 + 800d30a: e000 b.n 800d30e return; - 800d294: bf00 nop + 800d30c: bf00 nop } - 800d296: 3708 adds r7, #8 - 800d298: 46bd mov sp, r7 - 800d29a: bd80 pop {r7, pc} - 800d29c: 200000dc .word 0x200000dc + 800d30e: 3708 adds r7, #8 + 800d310: 46bd mov sp, r7 + 800d312: bd80 pop {r7, pc} + 800d314: 200000dc .word 0x200000dc -0800d2a0 : +0800d318 : static void App_ReconfigureUart(uint32_t baudrate) { - 800d2a0: b580 push {r7, lr} - 800d2a2: b082 sub sp, #8 - 800d2a4: af00 add r7, sp, #0 - 800d2a6: 6078 str r0, [r7, #4] + 800d318: b580 push {r7, lr} + 800d31a: b082 sub sp, #8 + 800d31c: af00 add r7, sp, #0 + 800d31e: 6078 str r0, [r7, #4] huart2.Init.BaudRate = baudrate; - 800d2a8: 4a17 ldr r2, [pc, #92] @ (800d308 ) - 800d2aa: 687b ldr r3, [r7, #4] - 800d2ac: 6053 str r3, [r2, #4] + 800d320: 4a17 ldr r2, [pc, #92] @ (800d380 ) + 800d322: 687b ldr r3, [r7, #4] + 800d324: 6053 str r3, [r2, #4] (void)HAL_UART_AbortReceive(&huart2); - 800d2ae: 4816 ldr r0, [pc, #88] @ (800d308 ) - 800d2b0: f7f8 fb4c bl 800594c + 800d326: 4816 ldr r0, [pc, #88] @ (800d380 ) + 800d328: f7f8 fb10 bl 800594c if (HAL_UART_Init(&huart2) != HAL_OK) - 800d2b4: 4814 ldr r0, [pc, #80] @ (800d308 ) - 800d2b6: f7f8 f994 bl 80055e2 - 800d2ba: 4603 mov r3, r0 - 800d2bc: 2b00 cmp r3, #0 - 800d2be: d001 beq.n 800d2c4 + 800d32c: 4814 ldr r0, [pc, #80] @ (800d380 ) + 800d32e: f7f8 f958 bl 80055e2 + 800d332: 4603 mov r3, r0 + 800d334: 2b00 cmp r3, #0 + 800d336: d001 beq.n 800d33c { Error_Handler(); - 800d2c0: f7f3 fa86 bl 80007d0 + 800d338: f7f3 fa4a bl 80007d0 } if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 800d2c4: 2100 movs r1, #0 - 800d2c6: 4810 ldr r0, [pc, #64] @ (800d308 ) - 800d2c8: f7fa fc0f bl 8007aea - 800d2cc: 4603 mov r3, r0 - 800d2ce: 2b00 cmp r3, #0 - 800d2d0: d001 beq.n 800d2d6 + 800d33c: 2100 movs r1, #0 + 800d33e: 4810 ldr r0, [pc, #64] @ (800d380 ) + 800d340: f7fa fbd3 bl 8007aea + 800d344: 4603 mov r3, r0 + 800d346: 2b00 cmp r3, #0 + 800d348: d001 beq.n 800d34e { Error_Handler(); - 800d2d2: f7f3 fa7d bl 80007d0 + 800d34a: f7f3 fa41 bl 80007d0 } if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 800d2d6: 2100 movs r1, #0 - 800d2d8: 480b ldr r0, [pc, #44] @ (800d308 ) - 800d2da: f7fa fc44 bl 8007b66 - 800d2de: 4603 mov r3, r0 - 800d2e0: 2b00 cmp r3, #0 - 800d2e2: d001 beq.n 800d2e8 + 800d34e: 2100 movs r1, #0 + 800d350: 480b ldr r0, [pc, #44] @ (800d380 ) + 800d352: f7fa fc08 bl 8007b66 + 800d356: 4603 mov r3, r0 + 800d358: 2b00 cmp r3, #0 + 800d35a: d001 beq.n 800d360 { Error_Handler(); - 800d2e4: f7f3 fa74 bl 80007d0 + 800d35c: f7f3 fa38 bl 80007d0 } if (HAL_UARTEx_EnableFifoMode(&huart2) != HAL_OK) - 800d2e8: 4807 ldr r0, [pc, #28] @ (800d308 ) - 800d2ea: f7fa fbc3 bl 8007a74 - 800d2ee: 4603 mov r3, r0 - 800d2f0: 2b00 cmp r3, #0 - 800d2f2: d001 beq.n 800d2f8 + 800d360: 4807 ldr r0, [pc, #28] @ (800d380 ) + 800d362: f7fa fb87 bl 8007a74 + 800d366: 4603 mov r3, r0 + 800d368: 2b00 cmp r3, #0 + 800d36a: d001 beq.n 800d370 { Error_Handler(); - 800d2f4: f7f3 fa6c bl 80007d0 + 800d36c: f7f3 fa30 bl 80007d0 } (void)vcom_ReceiveInit(UartRxByteCallback); - 800d2f8: 4804 ldr r0, [pc, #16] @ (800d30c ) - 800d2fa: f7f4 f957 bl 80015ac + 800d370: 4804 ldr r0, [pc, #16] @ (800d384 ) + 800d372: f7f4 f91b bl 80015ac } - 800d2fe: bf00 nop - 800d300: 3708 adds r7, #8 - 800d302: 46bd mov sp, r7 - 800d304: bd80 pop {r7, pc} - 800d306: bf00 nop - 800d308: 200000dc .word 0x200000dc - 800d30c: 0800c9b9 .word 0x0800c9b9 + 800d376: bf00 nop + 800d378: 3708 adds r7, #8 + 800d37a: 46bd mov sp, r7 + 800d37c: bd80 pop {r7, pc} + 800d37e: bf00 nop + 800d380: 200000dc .word 0x200000dc + 800d384: 0800ca31 .word 0x0800ca31 -0800d310 : +0800d388 : static uint8_t App_ParseHexSyncWord(const char *text, uint8_t out[3]) { - 800d310: b580 push {r7, lr} - 800d312: b088 sub sp, #32 - 800d314: af00 add r7, sp, #0 - 800d316: 6078 str r0, [r7, #4] - 800d318: 6039 str r1, [r7, #0] + 800d388: b580 push {r7, lr} + 800d38a: b088 sub sp, #32 + 800d38c: af00 add r7, sp, #0 + 800d38e: 6078 str r0, [r7, #4] + 800d390: 6039 str r1, [r7, #0] char buf[7]; char *endptr; unsigned long value; size_t i; size_t n = 0U; - 800d31a: 2300 movs r3, #0 - 800d31c: 61bb str r3, [r7, #24] + 800d392: 2300 movs r3, #0 + 800d394: 61bb str r3, [r7, #24] if ((text == NULL) || (out == NULL)) - 800d31e: 687b ldr r3, [r7, #4] - 800d320: 2b00 cmp r3, #0 - 800d322: d002 beq.n 800d32a - 800d324: 683b ldr r3, [r7, #0] - 800d326: 2b00 cmp r3, #0 - 800d328: d117 bne.n 800d35a + 800d396: 687b ldr r3, [r7, #4] + 800d398: 2b00 cmp r3, #0 + 800d39a: d002 beq.n 800d3a2 + 800d39c: 683b ldr r3, [r7, #0] + 800d39e: 2b00 cmp r3, #0 + 800d3a0: d117 bne.n 800d3d2 { return 0U; - 800d32a: 2300 movs r3, #0 - 800d32c: e05f b.n 800d3ee + 800d3a2: 2300 movs r3, #0 + 800d3a4: e05f b.n 800d466 } while ((*text != '\0') && (n < 6U)) { if (isxdigit((unsigned char)*text) != 0) - 800d32e: 687b ldr r3, [r7, #4] - 800d330: 781b ldrb r3, [r3, #0] - 800d332: 3301 adds r3, #1 - 800d334: 4a30 ldr r2, [pc, #192] @ (800d3f8 ) - 800d336: 4413 add r3, r2 - 800d338: 781b ldrb r3, [r3, #0] - 800d33a: f003 0344 and.w r3, r3, #68 @ 0x44 - 800d33e: 2b00 cmp r3, #0 - 800d340: d008 beq.n 800d354 + 800d3a6: 687b ldr r3, [r7, #4] + 800d3a8: 781b ldrb r3, [r3, #0] + 800d3aa: 3301 adds r3, #1 + 800d3ac: 4a30 ldr r2, [pc, #192] @ (800d470 ) + 800d3ae: 4413 add r3, r2 + 800d3b0: 781b ldrb r3, [r3, #0] + 800d3b2: f003 0344 and.w r3, r3, #68 @ 0x44 + 800d3b6: 2b00 cmp r3, #0 + 800d3b8: d008 beq.n 800d3cc { buf[n++] = *text; - 800d342: 69bb ldr r3, [r7, #24] - 800d344: 1c5a adds r2, r3, #1 - 800d346: 61ba str r2, [r7, #24] - 800d348: 687a ldr r2, [r7, #4] - 800d34a: 7812 ldrb r2, [r2, #0] - 800d34c: 3320 adds r3, #32 - 800d34e: 443b add r3, r7 - 800d350: f803 2c14 strb.w r2, [r3, #-20] + 800d3ba: 69bb ldr r3, [r7, #24] + 800d3bc: 1c5a adds r2, r3, #1 + 800d3be: 61ba str r2, [r7, #24] + 800d3c0: 687a ldr r2, [r7, #4] + 800d3c2: 7812 ldrb r2, [r2, #0] + 800d3c4: 3320 adds r3, #32 + 800d3c6: 443b add r3, r7 + 800d3c8: f803 2c14 strb.w r2, [r3, #-20] } text++; - 800d354: 687b ldr r3, [r7, #4] - 800d356: 3301 adds r3, #1 - 800d358: 607b str r3, [r7, #4] + 800d3cc: 687b ldr r3, [r7, #4] + 800d3ce: 3301 adds r3, #1 + 800d3d0: 607b str r3, [r7, #4] while ((*text != '\0') && (n < 6U)) - 800d35a: 687b ldr r3, [r7, #4] - 800d35c: 781b ldrb r3, [r3, #0] - 800d35e: 2b00 cmp r3, #0 - 800d360: d002 beq.n 800d368 - 800d362: 69bb ldr r3, [r7, #24] - 800d364: 2b05 cmp r3, #5 - 800d366: d9e2 bls.n 800d32e + 800d3d2: 687b ldr r3, [r7, #4] + 800d3d4: 781b ldrb r3, [r3, #0] + 800d3d6: 2b00 cmp r3, #0 + 800d3d8: d002 beq.n 800d3e0 + 800d3da: 69bb ldr r3, [r7, #24] + 800d3dc: 2b05 cmp r3, #5 + 800d3de: d9e2 bls.n 800d3a6 } if (n != 6U) - 800d368: 69bb ldr r3, [r7, #24] - 800d36a: 2b06 cmp r3, #6 - 800d36c: d001 beq.n 800d372 + 800d3e0: 69bb ldr r3, [r7, #24] + 800d3e2: 2b06 cmp r3, #6 + 800d3e4: d001 beq.n 800d3ea { return 0U; - 800d36e: 2300 movs r3, #0 - 800d370: e03d b.n 800d3ee + 800d3e6: 2300 movs r3, #0 + 800d3e8: e03d b.n 800d466 } for (i = 0U; i < n; i++) - 800d372: 2300 movs r3, #0 - 800d374: 61fb str r3, [r7, #28] - 800d376: e011 b.n 800d39c + 800d3ea: 2300 movs r3, #0 + 800d3ec: 61fb str r3, [r7, #28] + 800d3ee: e011 b.n 800d414 { if (isxdigit((unsigned char)buf[i]) == 0) - 800d378: f107 020c add.w r2, r7, #12 - 800d37c: 69fb ldr r3, [r7, #28] - 800d37e: 4413 add r3, r2 - 800d380: 781b ldrb r3, [r3, #0] - 800d382: 3301 adds r3, #1 - 800d384: 4a1c ldr r2, [pc, #112] @ (800d3f8 ) - 800d386: 4413 add r3, r2 - 800d388: 781b ldrb r3, [r3, #0] - 800d38a: f003 0344 and.w r3, r3, #68 @ 0x44 - 800d38e: 2b00 cmp r3, #0 - 800d390: d101 bne.n 800d396 + 800d3f0: f107 020c add.w r2, r7, #12 + 800d3f4: 69fb ldr r3, [r7, #28] + 800d3f6: 4413 add r3, r2 + 800d3f8: 781b ldrb r3, [r3, #0] + 800d3fa: 3301 adds r3, #1 + 800d3fc: 4a1c ldr r2, [pc, #112] @ (800d470 ) + 800d3fe: 4413 add r3, r2 + 800d400: 781b ldrb r3, [r3, #0] + 800d402: f003 0344 and.w r3, r3, #68 @ 0x44 + 800d406: 2b00 cmp r3, #0 + 800d408: d101 bne.n 800d40e { return 0U; - 800d392: 2300 movs r3, #0 - 800d394: e02b b.n 800d3ee + 800d40a: 2300 movs r3, #0 + 800d40c: e02b b.n 800d466 for (i = 0U; i < n; i++) - 800d396: 69fb ldr r3, [r7, #28] - 800d398: 3301 adds r3, #1 - 800d39a: 61fb str r3, [r7, #28] - 800d39c: 69fa ldr r2, [r7, #28] - 800d39e: 69bb ldr r3, [r7, #24] - 800d3a0: 429a cmp r2, r3 - 800d3a2: d3e9 bcc.n 800d378 + 800d40e: 69fb ldr r3, [r7, #28] + 800d410: 3301 adds r3, #1 + 800d412: 61fb str r3, [r7, #28] + 800d414: 69fa ldr r2, [r7, #28] + 800d416: 69bb ldr r3, [r7, #24] + 800d418: 429a cmp r2, r3 + 800d41a: d3e9 bcc.n 800d3f0 } } buf[6] = '\0'; - 800d3a4: 2300 movs r3, #0 - 800d3a6: 74bb strb r3, [r7, #18] + 800d41c: 2300 movs r3, #0 + 800d41e: 74bb strb r3, [r7, #18] value = strtoul(buf, &endptr, 16); - 800d3a8: f107 0108 add.w r1, r7, #8 - 800d3ac: f107 030c add.w r3, r7, #12 - 800d3b0: 2210 movs r2, #16 - 800d3b2: 4618 mov r0, r3 - 800d3b4: f001 fd84 bl 800eec0 - 800d3b8: 6178 str r0, [r7, #20] + 800d420: f107 0108 add.w r1, r7, #8 + 800d424: f107 030c add.w r3, r7, #12 + 800d428: 2210 movs r2, #16 + 800d42a: 4618 mov r0, r3 + 800d42c: f001 fd5c bl 800eee8 + 800d430: 6178 str r0, [r7, #20] if ((endptr == NULL) || (*endptr != '\0')) - 800d3ba: 68bb ldr r3, [r7, #8] - 800d3bc: 2b00 cmp r3, #0 - 800d3be: d003 beq.n 800d3c8 - 800d3c0: 68bb ldr r3, [r7, #8] - 800d3c2: 781b ldrb r3, [r3, #0] - 800d3c4: 2b00 cmp r3, #0 - 800d3c6: d001 beq.n 800d3cc + 800d432: 68bb ldr r3, [r7, #8] + 800d434: 2b00 cmp r3, #0 + 800d436: d003 beq.n 800d440 + 800d438: 68bb ldr r3, [r7, #8] + 800d43a: 781b ldrb r3, [r3, #0] + 800d43c: 2b00 cmp r3, #0 + 800d43e: d001 beq.n 800d444 { return 0U; - 800d3c8: 2300 movs r3, #0 - 800d3ca: e010 b.n 800d3ee + 800d440: 2300 movs r3, #0 + 800d442: e010 b.n 800d466 } out[0] = (uint8_t)((value >> 16) & 0xFFU); - 800d3cc: 697b ldr r3, [r7, #20] - 800d3ce: 0c1b lsrs r3, r3, #16 - 800d3d0: b2da uxtb r2, r3 - 800d3d2: 683b ldr r3, [r7, #0] - 800d3d4: 701a strb r2, [r3, #0] + 800d444: 697b ldr r3, [r7, #20] + 800d446: 0c1b lsrs r3, r3, #16 + 800d448: b2da uxtb r2, r3 + 800d44a: 683b ldr r3, [r7, #0] + 800d44c: 701a strb r2, [r3, #0] out[1] = (uint8_t)((value >> 8) & 0xFFU); - 800d3d6: 697b ldr r3, [r7, #20] - 800d3d8: 0a1a lsrs r2, r3, #8 - 800d3da: 683b ldr r3, [r7, #0] - 800d3dc: 3301 adds r3, #1 - 800d3de: b2d2 uxtb r2, r2 - 800d3e0: 701a strb r2, [r3, #0] + 800d44e: 697b ldr r3, [r7, #20] + 800d450: 0a1a lsrs r2, r3, #8 + 800d452: 683b ldr r3, [r7, #0] + 800d454: 3301 adds r3, #1 + 800d456: b2d2 uxtb r2, r2 + 800d458: 701a strb r2, [r3, #0] out[2] = (uint8_t)(value & 0xFFU); - 800d3e2: 683b ldr r3, [r7, #0] - 800d3e4: 3302 adds r3, #2 - 800d3e6: 697a ldr r2, [r7, #20] - 800d3e8: b2d2 uxtb r2, r2 - 800d3ea: 701a strb r2, [r3, #0] + 800d45a: 683b ldr r3, [r7, #0] + 800d45c: 3302 adds r3, #2 + 800d45e: 697a ldr r2, [r7, #20] + 800d460: b2d2 uxtb r2, r2 + 800d462: 701a strb r2, [r3, #0] return 1U; - 800d3ec: 2301 movs r3, #1 + 800d464: 2301 movs r3, #1 } - 800d3ee: 4618 mov r0, r3 - 800d3f0: 3720 adds r7, #32 - 800d3f2: 46bd mov sp, r7 - 800d3f4: bd80 pop {r7, pc} - 800d3f6: bf00 nop - 800d3f8: 08010518 .word 0x08010518 + 800d466: 4618 mov r0, r3 + 800d468: 3720 adds r7, #32 + 800d46a: 46bd mov sp, r7 + 800d46c: bd80 pop {r7, pc} + 800d46e: bf00 nop + 800d470: 08010540 .word 0x08010540 -0800d3fc : +0800d474 : static char *App_SkipSpaces(char *s) { - 800d3fc: b480 push {r7} - 800d3fe: b083 sub sp, #12 - 800d400: af00 add r7, sp, #0 - 800d402: 6078 str r0, [r7, #4] + 800d474: b480 push {r7} + 800d476: b083 sub sp, #12 + 800d478: af00 add r7, sp, #0 + 800d47a: 6078 str r0, [r7, #4] while ((s != NULL) && (*s != '\0') && isspace((unsigned char)*s)) - 800d404: e002 b.n 800d40c + 800d47c: e002 b.n 800d484 { s++; - 800d406: 687b ldr r3, [r7, #4] - 800d408: 3301 adds r3, #1 - 800d40a: 607b str r3, [r7, #4] + 800d47e: 687b ldr r3, [r7, #4] + 800d480: 3301 adds r3, #1 + 800d482: 607b str r3, [r7, #4] while ((s != NULL) && (*s != '\0') && isspace((unsigned char)*s)) - 800d40c: 687b ldr r3, [r7, #4] - 800d40e: 2b00 cmp r3, #0 - 800d410: d00d beq.n 800d42e - 800d412: 687b ldr r3, [r7, #4] - 800d414: 781b ldrb r3, [r3, #0] - 800d416: 2b00 cmp r3, #0 - 800d418: d009 beq.n 800d42e - 800d41a: 687b ldr r3, [r7, #4] - 800d41c: 781b ldrb r3, [r3, #0] - 800d41e: 3301 adds r3, #1 - 800d420: 4a06 ldr r2, [pc, #24] @ (800d43c ) - 800d422: 4413 add r3, r2 - 800d424: 781b ldrb r3, [r3, #0] - 800d426: f003 0308 and.w r3, r3, #8 - 800d42a: 2b00 cmp r3, #0 - 800d42c: d1eb bne.n 800d406 + 800d484: 687b ldr r3, [r7, #4] + 800d486: 2b00 cmp r3, #0 + 800d488: d00d beq.n 800d4a6 + 800d48a: 687b ldr r3, [r7, #4] + 800d48c: 781b ldrb r3, [r3, #0] + 800d48e: 2b00 cmp r3, #0 + 800d490: d009 beq.n 800d4a6 + 800d492: 687b ldr r3, [r7, #4] + 800d494: 781b ldrb r3, [r3, #0] + 800d496: 3301 adds r3, #1 + 800d498: 4a06 ldr r2, [pc, #24] @ (800d4b4 ) + 800d49a: 4413 add r3, r2 + 800d49c: 781b ldrb r3, [r3, #0] + 800d49e: f003 0308 and.w r3, r3, #8 + 800d4a2: 2b00 cmp r3, #0 + 800d4a4: d1eb bne.n 800d47e } return s; - 800d42e: 687b ldr r3, [r7, #4] + 800d4a6: 687b ldr r3, [r7, #4] } - 800d430: 4618 mov r0, r3 - 800d432: 370c adds r7, #12 - 800d434: 46bd mov sp, r7 - 800d436: bc80 pop {r7} - 800d438: 4770 bx lr - 800d43a: bf00 nop - 800d43c: 08010518 .word 0x08010518 - -0800d440 : + 800d4a8: 4618 mov r0, r3 + 800d4aa: 370c adds r7, #12 + 800d4ac: 46bd mov sp, r7 + 800d4ae: bc80 pop {r7} + 800d4b0: 4770 bx lr + 800d4b2: bf00 nop + 800d4b4: 08010540 .word 0x08010540 +0800d4b8 : static void App_LedTxPulse(void) { - 800d440: b580 push {r7, lr} - 800d442: af00 add r7, sp, #0 + 800d4b8: b580 push {r7, lr} + 800d4ba: af00 add r7, sp, #0 + TimerStop(&g_led_tx_timer); + 800d4bc: 4808 ldr r0, [pc, #32] @ (800d4e0 ) + 800d4be: f000 ffb1 bl 800e424 HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); - 800d444: 2201 movs r2, #1 - 800d446: f44f 4100 mov.w r1, #32768 @ 0x8000 - 800d44a: 4807 ldr r0, [pc, #28] @ (800d468 ) - 800d44c: f7f5 fc3c bl 8002cc8 - g_led_tx_until = HAL_GetTick() + LED_PULSE_MS; - 800d450: f7f3 fbfa bl 8000c48 - 800d454: 4603 mov r3, r0 - 800d456: 3332 adds r3, #50 @ 0x32 - 800d458: 4a04 ldr r2, [pc, #16] @ (800d46c ) - 800d45a: 6013 str r3, [r2, #0] - g_led_tx_active = 1U; - 800d45c: 4b04 ldr r3, [pc, #16] @ (800d470 ) - 800d45e: 2201 movs r2, #1 - 800d460: 701a strb r2, [r3, #0] + 800d4c2: 2201 movs r2, #1 + 800d4c4: f44f 4100 mov.w r1, #32768 @ 0x8000 + 800d4c8: 4806 ldr r0, [pc, #24] @ (800d4e4 ) + 800d4ca: f7f5 fbfd bl 8002cc8 + TimerSetValue(&g_led_tx_timer, LED_PULSE_MS); + 800d4ce: 2132 movs r1, #50 @ 0x32 + 800d4d0: 4803 ldr r0, [pc, #12] @ (800d4e0 ) + 800d4d2: f001 f817 bl 800e504 + TimerStart(&g_led_tx_timer); + 800d4d6: 4802 ldr r0, [pc, #8] @ (800d4e0 ) + 800d4d8: f000 ff36 bl 800e348 } - 800d462: bf00 nop - 800d464: bd80 pop {r7, pc} - 800d466: bf00 nop - 800d468: 48000400 .word 0x48000400 - 800d46c: 20000630 .word 0x20000630 - 800d470: 2000063c .word 0x2000063c + 800d4dc: bf00 nop + 800d4de: bd80 pop {r7, pc} + 800d4e0: 20000630 .word 0x20000630 + 800d4e4: 48000400 .word 0x48000400 -0800d474 : +0800d4e8 : static void App_LedRxPulse(void) { - 800d474: b580 push {r7, lr} - 800d476: af00 add r7, sp, #0 + 800d4e8: b580 push {r7, lr} + 800d4ea: af00 add r7, sp, #0 + TimerStop(&g_led_rx_timer); + 800d4ec: 4808 ldr r0, [pc, #32] @ (800d510 ) + 800d4ee: f000 ff99 bl 800e424 HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); - 800d478: 2201 movs r2, #1 - 800d47a: f44f 7100 mov.w r1, #512 @ 0x200 - 800d47e: 4807 ldr r0, [pc, #28] @ (800d49c ) - 800d480: f7f5 fc22 bl 8002cc8 - g_led_rx_until = HAL_GetTick() + LED_PULSE_MS; - 800d484: f7f3 fbe0 bl 8000c48 - 800d488: 4603 mov r3, r0 - 800d48a: 3332 adds r3, #50 @ 0x32 - 800d48c: 4a04 ldr r2, [pc, #16] @ (800d4a0 ) - 800d48e: 6013 str r3, [r2, #0] - g_led_rx_active = 1U; - 800d490: 4b04 ldr r3, [pc, #16] @ (800d4a4 ) - 800d492: 2201 movs r2, #1 - 800d494: 701a strb r2, [r3, #0] + 800d4f2: 2201 movs r2, #1 + 800d4f4: f44f 7100 mov.w r1, #512 @ 0x200 + 800d4f8: 4806 ldr r0, [pc, #24] @ (800d514 ) + 800d4fa: f7f5 fbe5 bl 8002cc8 + TimerSetValue(&g_led_rx_timer, LED_PULSE_MS); + 800d4fe: 2132 movs r1, #50 @ 0x32 + 800d500: 4803 ldr r0, [pc, #12] @ (800d510 ) + 800d502: f000 ffff bl 800e504 + TimerStart(&g_led_rx_timer); + 800d506: 4802 ldr r0, [pc, #8] @ (800d510 ) + 800d508: f000 ff1e bl 800e348 } - 800d496: bf00 nop - 800d498: bd80 pop {r7, pc} - 800d49a: bf00 nop - 800d49c: 48000400 .word 0x48000400 - 800d4a0: 20000634 .word 0x20000634 - 800d4a4: 2000063d .word 0x2000063d + 800d50c: bf00 nop + 800d50e: bd80 pop {r7, pc} + 800d510: 20000648 .word 0x20000648 + 800d514: 48000400 .word 0x48000400 -0800d4a8 : +0800d518 : static void App_LedErrPulse(void) { - 800d4a8: b580 push {r7, lr} - 800d4aa: af00 add r7, sp, #0 + 800d518: b580 push {r7, lr} + 800d51a: af00 add r7, sp, #0 + TimerStop(&g_led_err_timer); + 800d51c: 4808 ldr r0, [pc, #32] @ (800d540 ) + 800d51e: f000 ff81 bl 800e424 HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET); - 800d4ac: 2201 movs r2, #1 - 800d4ae: f44f 6100 mov.w r1, #2048 @ 0x800 - 800d4b2: 4807 ldr r0, [pc, #28] @ (800d4d0 ) - 800d4b4: f7f5 fc08 bl 8002cc8 - g_led_err_until = HAL_GetTick() + LED_PULSE_MS; - 800d4b8: f7f3 fbc6 bl 8000c48 - 800d4bc: 4603 mov r3, r0 - 800d4be: 3332 adds r3, #50 @ 0x32 - 800d4c0: 4a04 ldr r2, [pc, #16] @ (800d4d4 ) - 800d4c2: 6013 str r3, [r2, #0] - g_led_err_active = 1U; - 800d4c4: 4b04 ldr r3, [pc, #16] @ (800d4d8 ) - 800d4c6: 2201 movs r2, #1 - 800d4c8: 701a strb r2, [r3, #0] -} - 800d4ca: bf00 nop - 800d4cc: bd80 pop {r7, pc} - 800d4ce: bf00 nop - 800d4d0: 48000400 .word 0x48000400 - 800d4d4: 20000638 .word 0x20000638 - 800d4d8: 2000063e .word 0x2000063e - -0800d4dc : - -static void App_ProcessLeds(void) -{ - 800d4dc: b580 push {r7, lr} - 800d4de: b082 sub sp, #8 - 800d4e0: af00 add r7, sp, #0 - uint32_t now = HAL_GetTick(); - 800d4e2: f7f3 fbb1 bl 8000c48 - 800d4e6: 6078 str r0, [r7, #4] - - if (g_led_tx_active && ((int32_t)(now - g_led_tx_until) >= 0)) - 800d4e8: 4b1e ldr r3, [pc, #120] @ (800d564 ) - 800d4ea: 781b ldrb r3, [r3, #0] - 800d4ec: 2b00 cmp r3, #0 - 800d4ee: d00e beq.n 800d50e - 800d4f0: 4b1d ldr r3, [pc, #116] @ (800d568 ) - 800d4f2: 681b ldr r3, [r3, #0] - 800d4f4: 687a ldr r2, [r7, #4] - 800d4f6: 1ad3 subs r3, r2, r3 - 800d4f8: 2b00 cmp r3, #0 - 800d4fa: db08 blt.n 800d50e - { - HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); - 800d4fc: 2200 movs r2, #0 - 800d4fe: f44f 4100 mov.w r1, #32768 @ 0x8000 - 800d502: 481a ldr r0, [pc, #104] @ (800d56c ) - 800d504: f7f5 fbe0 bl 8002cc8 - g_led_tx_active = 0U; - 800d508: 4b16 ldr r3, [pc, #88] @ (800d564 ) - 800d50a: 2200 movs r2, #0 - 800d50c: 701a strb r2, [r3, #0] - } - - if (g_led_rx_active && ((int32_t)(now - g_led_rx_until) >= 0)) - 800d50e: 4b18 ldr r3, [pc, #96] @ (800d570 ) - 800d510: 781b ldrb r3, [r3, #0] - 800d512: 2b00 cmp r3, #0 - 800d514: d00e beq.n 800d534 - 800d516: 4b17 ldr r3, [pc, #92] @ (800d574 ) - 800d518: 681b ldr r3, [r3, #0] - 800d51a: 687a ldr r2, [r7, #4] - 800d51c: 1ad3 subs r3, r2, r3 - 800d51e: 2b00 cmp r3, #0 - 800d520: db08 blt.n 800d534 - { - HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); - 800d522: 2200 movs r2, #0 - 800d524: f44f 7100 mov.w r1, #512 @ 0x200 - 800d528: 4810 ldr r0, [pc, #64] @ (800d56c ) + 800d522: 2201 movs r2, #1 + 800d524: f44f 6100 mov.w r1, #2048 @ 0x800 + 800d528: 4806 ldr r0, [pc, #24] @ (800d544 ) 800d52a: f7f5 fbcd bl 8002cc8 - g_led_rx_active = 0U; - 800d52e: 4b10 ldr r3, [pc, #64] @ (800d570 ) - 800d530: 2200 movs r2, #0 - 800d532: 701a strb r2, [r3, #0] - } - - if (g_led_err_active && ((int32_t)(now - g_led_err_until) >= 0)) - 800d534: 4b10 ldr r3, [pc, #64] @ (800d578 ) - 800d536: 781b ldrb r3, [r3, #0] - 800d538: 2b00 cmp r3, #0 - 800d53a: d00e beq.n 800d55a - 800d53c: 4b0f ldr r3, [pc, #60] @ (800d57c ) - 800d53e: 681b ldr r3, [r3, #0] - 800d540: 687a ldr r2, [r7, #4] - 800d542: 1ad3 subs r3, r2, r3 - 800d544: 2b00 cmp r3, #0 - 800d546: db08 blt.n 800d55a - { - HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); - 800d548: 2200 movs r2, #0 - 800d54a: f44f 6100 mov.w r1, #2048 @ 0x800 - 800d54e: 4807 ldr r0, [pc, #28] @ (800d56c ) - 800d550: f7f5 fbba bl 8002cc8 - g_led_err_active = 0U; - 800d554: 4b08 ldr r3, [pc, #32] @ (800d578 ) - 800d556: 2200 movs r2, #0 - 800d558: 701a strb r2, [r3, #0] - } + TimerSetValue(&g_led_err_timer, LED_PULSE_MS); + 800d52e: 2132 movs r1, #50 @ 0x32 + 800d530: 4803 ldr r0, [pc, #12] @ (800d540 ) + 800d532: f000 ffe7 bl 800e504 + TimerStart(&g_led_err_timer); + 800d536: 4802 ldr r0, [pc, #8] @ (800d540 ) + 800d538: f000 ff06 bl 800e348 } - 800d55a: bf00 nop - 800d55c: 3708 adds r7, #8 - 800d55e: 46bd mov sp, r7 - 800d560: bd80 pop {r7, pc} - 800d562: bf00 nop - 800d564: 2000063c .word 0x2000063c - 800d568: 20000630 .word 0x20000630 - 800d56c: 48000400 .word 0x48000400 - 800d570: 2000063d .word 0x2000063d - 800d574: 20000634 .word 0x20000634 - 800d578: 2000063e .word 0x2000063e - 800d57c: 20000638 .word 0x20000638 - -0800d580 : - + 800d53c: bf00 nop + 800d53e: bd80 pop {r7, pc} + 800d540: 20000660 .word 0x20000660 + 800d544: 48000400 .word 0x48000400 +0800d548 : static void OnTxDone(void) { - 800d580: b480 push {r7} - 800d582: af00 add r7, sp, #0 + 800d548: b480 push {r7} + 800d54a: af00 add r7, sp, #0 g_radio_tx_done = 1U; - 800d584: 4b03 ldr r3, [pc, #12] @ (800d594 ) - 800d586: 2201 movs r2, #1 - 800d588: 701a strb r2, [r3, #0] + 800d54c: 4b03 ldr r3, [pc, #12] @ (800d55c ) + 800d54e: 2201 movs r2, #1 + 800d550: 701a strb r2, [r3, #0] } - 800d58a: bf00 nop - 800d58c: 46bd mov sp, r7 - 800d58e: bc80 pop {r7} - 800d590: 4770 bx lr - 800d592: bf00 nop - 800d594: 20000624 .word 0x20000624 + 800d552: bf00 nop + 800d554: 46bd mov sp, r7 + 800d556: bc80 pop {r7} + 800d558: 4770 bx lr + 800d55a: bf00 nop + 800d55c: 20000624 .word 0x20000624 + +0800d560 : + +static void App_LedTxOff(void *context) +{ + 800d560: b580 push {r7, lr} + 800d562: b082 sub sp, #8 + 800d564: af00 add r7, sp, #0 + 800d566: 6078 str r0, [r7, #4] + (void)context; + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); + 800d568: 2200 movs r2, #0 + 800d56a: f44f 4100 mov.w r1, #32768 @ 0x8000 + 800d56e: 4803 ldr r0, [pc, #12] @ (800d57c ) + 800d570: f7f5 fbaa bl 8002cc8 +} + 800d574: bf00 nop + 800d576: 3708 adds r7, #8 + 800d578: 46bd mov sp, r7 + 800d57a: bd80 pop {r7, pc} + 800d57c: 48000400 .word 0x48000400 + +0800d580 : + +static void App_LedRxOff(void *context) +{ + 800d580: b580 push {r7, lr} + 800d582: b082 sub sp, #8 + 800d584: af00 add r7, sp, #0 + 800d586: 6078 str r0, [r7, #4] + (void)context; + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); + 800d588: 2200 movs r2, #0 + 800d58a: f44f 7100 mov.w r1, #512 @ 0x200 + 800d58e: 4803 ldr r0, [pc, #12] @ (800d59c ) + 800d590: f7f5 fb9a bl 8002cc8 +} + 800d594: bf00 nop + 800d596: 3708 adds r7, #8 + 800d598: 46bd mov sp, r7 + 800d59a: bd80 pop {r7, pc} + 800d59c: 48000400 .word 0x48000400 + +0800d5a0 : + +static void App_LedErrOff(void *context) +{ + 800d5a0: b580 push {r7, lr} + 800d5a2: b082 sub sp, #8 + 800d5a4: af00 add r7, sp, #0 + 800d5a6: 6078 str r0, [r7, #4] + (void)context; + HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); + 800d5a8: 2200 movs r2, #0 + 800d5aa: f44f 6100 mov.w r1, #2048 @ 0x800 + 800d5ae: 4803 ldr r0, [pc, #12] @ (800d5bc ) + 800d5b0: f7f5 fb8a bl 8002cc8 +} + 800d5b4: bf00 nop + 800d5b6: 3708 adds r7, #8 + 800d5b8: 46bd mov sp, r7 + 800d5ba: bd80 pop {r7, pc} + 800d5bc: 48000400 .word 0x48000400 + +0800d5c0 : -0800d598 : static void OnRxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t cfo) { - 800d598: b580 push {r7, lr} - 800d59a: b084 sub sp, #16 - 800d59c: af00 add r7, sp, #0 - 800d59e: 60f8 str r0, [r7, #12] - 800d5a0: 4608 mov r0, r1 - 800d5a2: 4611 mov r1, r2 - 800d5a4: 461a mov r2, r3 - 800d5a6: 4603 mov r3, r0 - 800d5a8: 817b strh r3, [r7, #10] - 800d5aa: 460b mov r3, r1 - 800d5ac: 813b strh r3, [r7, #8] - 800d5ae: 4613 mov r3, r2 - 800d5b0: 71fb strb r3, [r7, #7] + 800d5c0: b580 push {r7, lr} + 800d5c2: b084 sub sp, #16 + 800d5c4: af00 add r7, sp, #0 + 800d5c6: 60f8 str r0, [r7, #12] + 800d5c8: 4608 mov r0, r1 + 800d5ca: 4611 mov r1, r2 + 800d5cc: 461a mov r2, r3 + 800d5ce: 4603 mov r3, r0 + 800d5d0: 817b strh r3, [r7, #10] + 800d5d2: 460b mov r3, r1 + 800d5d4: 813b strh r3, [r7, #8] + 800d5d6: 4613 mov r3, r2 + 800d5d8: 71fb strb r3, [r7, #7] g_last_rx_rssi = rssi; - 800d5b2: 4a0d ldr r2, [pc, #52] @ (800d5e8 ) - 800d5b4: 893b ldrh r3, [r7, #8] - 800d5b6: 8013 strh r3, [r2, #0] + 800d5da: 4a0d ldr r2, [pc, #52] @ (800d610 ) + 800d5dc: 893b ldrh r3, [r7, #8] + 800d5de: 8013 strh r3, [r2, #0] g_last_rx_cfo = cfo; - 800d5b8: 4a0c ldr r2, [pc, #48] @ (800d5ec ) - 800d5ba: 79fb ldrb r3, [r7, #7] - 800d5bc: 7013 strb r3, [r2, #0] + 800d5e0: 4a0c ldr r2, [pc, #48] @ (800d614 ) + 800d5e2: 79fb ldrb r3, [r7, #7] + 800d5e4: 7013 strb r3, [r2, #0] if (size > RADIO_MAX_PAYLOAD_SIZE) - 800d5be: 897b ldrh r3, [r7, #10] - 800d5c0: 2bdc cmp r3, #220 @ 0xdc - 800d5c2: d901 bls.n 800d5c8 + 800d5e6: 897b ldrh r3, [r7, #10] + 800d5e8: 2bdc cmp r3, #220 @ 0xdc + 800d5ea: d901 bls.n 800d5f0 { size = RADIO_MAX_PAYLOAD_SIZE; - 800d5c4: 23dc movs r3, #220 @ 0xdc - 800d5c6: 817b strh r3, [r7, #10] + 800d5ec: 23dc movs r3, #220 @ 0xdc + 800d5ee: 817b strh r3, [r7, #10] } memcpy(g_rx_payload, payload, size); - 800d5c8: 897b ldrh r3, [r7, #10] - 800d5ca: 461a mov r2, r3 - 800d5cc: 68f9 ldr r1, [r7, #12] - 800d5ce: 4808 ldr r0, [pc, #32] @ (800d5f0 ) - 800d5d0: f001 fd02 bl 800efd8 + 800d5f0: 897b ldrh r3, [r7, #10] + 800d5f2: 461a mov r2, r3 + 800d5f4: 68f9 ldr r1, [r7, #12] + 800d5f6: 4808 ldr r0, [pc, #32] @ (800d618 ) + 800d5f8: f001 fd02 bl 800f000 g_rx_payload_len = size; - 800d5d4: 4a07 ldr r2, [pc, #28] @ (800d5f4 ) - 800d5d6: 897b ldrh r3, [r7, #10] - 800d5d8: 8013 strh r3, [r2, #0] + 800d5fc: 4a07 ldr r2, [pc, #28] @ (800d61c ) + 800d5fe: 897b ldrh r3, [r7, #10] + 800d600: 8013 strh r3, [r2, #0] g_radio_rx_done = 1U; - 800d5da: 4b07 ldr r3, [pc, #28] @ (800d5f8 ) - 800d5dc: 2201 movs r2, #1 - 800d5de: 701a strb r2, [r3, #0] + 800d602: 4b07 ldr r3, [pc, #28] @ (800d620 ) + 800d604: 2201 movs r2, #1 + 800d606: 701a strb r2, [r3, #0] } - 800d5e0: bf00 nop - 800d5e2: 3710 adds r7, #16 - 800d5e4: 46bd mov sp, r7 - 800d5e6: bd80 pop {r7, pc} - 800d5e8: 2000062a .word 0x2000062a - 800d5ec: 2000062c .word 0x2000062c - 800d5f0: 20000644 .word 0x20000644 - 800d5f4: 20000720 .word 0x20000720 - 800d5f8: 20000626 .word 0x20000626 + 800d608: bf00 nop + 800d60a: 3710 adds r7, #16 + 800d60c: 46bd mov sp, r7 + 800d60e: bd80 pop {r7, pc} + 800d610: 2000062a .word 0x2000062a + 800d614: 2000062c .word 0x2000062c + 800d618: 2000067c .word 0x2000067c + 800d61c: 20000758 .word 0x20000758 + 800d620: 20000626 .word 0x20000626 -0800d5fc : +0800d624 : static void OnTxTimeout(void) { - 800d5fc: b480 push {r7} - 800d5fe: af00 add r7, sp, #0 + 800d624: b480 push {r7} + 800d626: af00 add r7, sp, #0 g_radio_tx_timeout = 1U; - 800d600: 4b03 ldr r3, [pc, #12] @ (800d610 ) - 800d602: 2201 movs r2, #1 - 800d604: 701a strb r2, [r3, #0] + 800d628: 4b03 ldr r3, [pc, #12] @ (800d638 ) + 800d62a: 2201 movs r2, #1 + 800d62c: 701a strb r2, [r3, #0] } - 800d606: bf00 nop - 800d608: 46bd mov sp, r7 - 800d60a: bc80 pop {r7} - 800d60c: 4770 bx lr - 800d60e: bf00 nop - 800d610: 20000625 .word 0x20000625 + 800d62e: bf00 nop + 800d630: 46bd mov sp, r7 + 800d632: bc80 pop {r7} + 800d634: 4770 bx lr + 800d636: bf00 nop + 800d638: 20000625 .word 0x20000625 -0800d614 : +0800d63c : static void OnRxTimeout(void) { - 800d614: b480 push {r7} - 800d616: af00 add r7, sp, #0 + 800d63c: b480 push {r7} + 800d63e: af00 add r7, sp, #0 g_radio_rx_timeout = 1U; - 800d618: 4b03 ldr r3, [pc, #12] @ (800d628 ) - 800d61a: 2201 movs r2, #1 - 800d61c: 701a strb r2, [r3, #0] + 800d640: 4b03 ldr r3, [pc, #12] @ (800d650 ) + 800d642: 2201 movs r2, #1 + 800d644: 701a strb r2, [r3, #0] } - 800d61e: bf00 nop - 800d620: 46bd mov sp, r7 - 800d622: bc80 pop {r7} - 800d624: 4770 bx lr - 800d626: bf00 nop - 800d628: 20000627 .word 0x20000627 + 800d646: bf00 nop + 800d648: 46bd mov sp, r7 + 800d64a: bc80 pop {r7} + 800d64c: 4770 bx lr + 800d64e: bf00 nop + 800d650: 20000627 .word 0x20000627 -0800d62c : +0800d654 : static void OnRxError(void) { - 800d62c: b480 push {r7} - 800d62e: af00 add r7, sp, #0 + 800d654: b480 push {r7} + 800d656: af00 add r7, sp, #0 g_radio_rx_error = 1U; - 800d630: 4b03 ldr r3, [pc, #12] @ (800d640 ) - 800d632: 2201 movs r2, #1 - 800d634: 701a strb r2, [r3, #0] + 800d658: 4b03 ldr r3, [pc, #12] @ (800d668 ) + 800d65a: 2201 movs r2, #1 + 800d65c: 701a strb r2, [r3, #0] } - 800d636: bf00 nop - 800d638: 46bd mov sp, r7 - 800d63a: bc80 pop {r7} - 800d63c: 4770 bx lr - 800d63e: bf00 nop - 800d640: 20000628 .word 0x20000628 + 800d65e: bf00 nop + 800d660: 46bd mov sp, r7 + 800d662: bc80 pop {r7} + 800d664: 4770 bx lr + 800d666: bf00 nop + 800d668: 20000628 .word 0x20000628 -0800d644 : +0800d66c : #include "config_defaults.h" #include void Config_LoadDefaults(BridgeConfig_t *cfg) { - 800d644: b480 push {r7} - 800d646: b083 sub sp, #12 - 800d648: af00 add r7, sp, #0 - 800d64a: 6078 str r0, [r7, #4] + 800d66c: b480 push {r7} + 800d66e: b083 sub sp, #12 + 800d670: af00 add r7, sp, #0 + 800d672: 6078 str r0, [r7, #4] if (cfg == 0) - 800d64c: 687b ldr r3, [r7, #4] - 800d64e: 2b00 cmp r3, #0 - 800d650: d023 beq.n 800d69a + 800d674: 687b ldr r3, [r7, #4] + 800d676: 2b00 cmp r3, #0 + 800d678: d023 beq.n 800d6c2 { return; } cfg->rf_frequency = DEFAULT_RF_FREQUENCY; - 800d652: 687b ldr r3, [r7, #4] - 800d654: 4a13 ldr r2, [pc, #76] @ (800d6a4 ) - 800d656: 601a str r2, [r3, #0] + 800d67a: 687b ldr r3, [r7, #4] + 800d67c: 4a13 ldr r2, [pc, #76] @ (800d6cc ) + 800d67e: 601a str r2, [r3, #0] cfg->tx_power = DEFAULT_TX_OUTPUT_POWER; - 800d658: 687b ldr r3, [r7, #4] - 800d65a: 220e movs r2, #14 - 800d65c: 711a strb r2, [r3, #4] + 800d680: 687b ldr r3, [r7, #4] + 800d682: 220e movs r2, #14 + 800d684: 711a strb r2, [r3, #4] cfg->fsk_bitrate = DEFAULT_FSK_BITRATE; - 800d65e: 687b ldr r3, [r7, #4] - 800d660: f24c 3250 movw r2, #50000 @ 0xc350 - 800d664: 609a str r2, [r3, #8] + 800d686: 687b ldr r3, [r7, #4] + 800d688: f24c 3250 movw r2, #50000 @ 0xc350 + 800d68c: 609a str r2, [r3, #8] cfg->fsk_bandwidth = DEFAULT_FSK_BANDWIDTH; - 800d666: 687b ldr r3, [r7, #4] - 800d668: f24c 3250 movw r2, #50000 @ 0xc350 - 800d66c: 60da str r2, [r3, #12] + 800d68e: 687b ldr r3, [r7, #4] + 800d690: f24c 3250 movw r2, #50000 @ 0xc350 + 800d694: 60da str r2, [r3, #12] cfg->fsk_fdev = DEFAULT_FSK_FDEV; - 800d66e: 687b ldr r3, [r7, #4] - 800d670: f246 12a8 movw r2, #25000 @ 0x61a8 - 800d674: 611a str r2, [r3, #16] + 800d696: 687b ldr r3, [r7, #4] + 800d698: f246 12a8 movw r2, #25000 @ 0x61a8 + 800d69c: 611a str r2, [r3, #16] cfg->fsk_preamble_len = DEFAULT_FSK_PREAMBLE_LENGTH; - 800d676: 687b ldr r3, [r7, #4] - 800d678: 2204 movs r2, #4 - 800d67a: 829a strh r2, [r3, #20] + 800d69e: 687b ldr r3, [r7, #4] + 800d6a0: 2204 movs r2, #4 + 800d6a2: 829a strh r2, [r3, #20] static const uint8_t default_syncword[3] = DEFAULT_SYNCWORD; memcpy(cfg->syncword, default_syncword, sizeof(cfg->syncword)); - 800d67c: 687b ldr r3, [r7, #4] - 800d67e: 3316 adds r3, #22 - 800d680: 4a09 ldr r2, [pc, #36] @ (800d6a8 ) - 800d682: 8811 ldrh r1, [r2, #0] - 800d684: 7892 ldrb r2, [r2, #2] - 800d686: 8019 strh r1, [r3, #0] - 800d688: 709a strb r2, [r3, #2] + 800d6a4: 687b ldr r3, [r7, #4] + 800d6a6: 3316 adds r3, #22 + 800d6a8: 4a09 ldr r2, [pc, #36] @ (800d6d0 ) + 800d6aa: 8811 ldrh r1, [r2, #0] + 800d6ac: 7892 ldrb r2, [r2, #2] + 800d6ae: 8019 strh r1, [r3, #0] + 800d6b0: 709a strb r2, [r3, #2] cfg->uart_packet_timeout_ms = DEFAULT_UART_PACKET_TIMEOUT_MS; - 800d68a: 687b ldr r3, [r7, #4] - 800d68c: 2214 movs r2, #20 - 800d68e: 835a strh r2, [r3, #26] + 800d6b2: 687b ldr r3, [r7, #4] + 800d6b4: 2214 movs r2, #20 + 800d6b6: 835a strh r2, [r3, #26] cfg->uart_baudrate = DEFAULT_UART_BAUDRATE; - 800d690: 687b ldr r3, [r7, #4] - 800d692: f44f 32e1 mov.w r2, #115200 @ 0x1c200 - 800d696: 61da str r2, [r3, #28] - 800d698: e000 b.n 800d69c + 800d6b8: 687b ldr r3, [r7, #4] + 800d6ba: f44f 32e1 mov.w r2, #115200 @ 0x1c200 + 800d6be: 61da str r2, [r3, #28] + 800d6c0: e000 b.n 800d6c4 return; - 800d69a: bf00 nop - 800d69c: 370c adds r7, #12 - 800d69e: 46bd mov sp, r7 - 800d6a0: bc80 pop {r7} - 800d6a2: 4770 bx lr - 800d6a4: 19d094e0 .word 0x19d094e0 - 800d6a8: 08010504 .word 0x08010504 + 800d6c2: bf00 nop + 800d6c4: 370c adds r7, #12 + 800d6c6: 46bd mov sp, r7 + 800d6c8: bc80 pop {r7} + 800d6ca: 4770 bx lr + 800d6cc: 19d094e0 .word 0x19d094e0 + 800d6d0: 0801052c .word 0x0801052c -0800d6ac : +0800d6d4 : uint32_t checksum; BridgeConfig_t cfg; } FlashConfig_t; static uint32_t Config_CalcChecksum(const uint8_t *data, uint32_t len) { - 800d6ac: b480 push {r7} - 800d6ae: b085 sub sp, #20 - 800d6b0: af00 add r7, sp, #0 - 800d6b2: 6078 str r0, [r7, #4] - 800d6b4: 6039 str r1, [r7, #0] + 800d6d4: b480 push {r7} + 800d6d6: b085 sub sp, #20 + 800d6d8: af00 add r7, sp, #0 + 800d6da: 6078 str r0, [r7, #4] + 800d6dc: 6039 str r1, [r7, #0] uint32_t sum = 0; - 800d6b6: 2300 movs r3, #0 - 800d6b8: 60fb str r3, [r7, #12] + 800d6de: 2300 movs r3, #0 + 800d6e0: 60fb str r3, [r7, #12] uint32_t i; for (i = 0; i < len; i++) - 800d6ba: 2300 movs r3, #0 - 800d6bc: 60bb str r3, [r7, #8] - 800d6be: e00a b.n 800d6d6 + 800d6e2: 2300 movs r3, #0 + 800d6e4: 60bb str r3, [r7, #8] + 800d6e6: e00a b.n 800d6fe { sum += data[i]; - 800d6c0: 687a ldr r2, [r7, #4] - 800d6c2: 68bb ldr r3, [r7, #8] - 800d6c4: 4413 add r3, r2 - 800d6c6: 781b ldrb r3, [r3, #0] - 800d6c8: 461a mov r2, r3 - 800d6ca: 68fb ldr r3, [r7, #12] - 800d6cc: 4413 add r3, r2 - 800d6ce: 60fb str r3, [r7, #12] + 800d6e8: 687a ldr r2, [r7, #4] + 800d6ea: 68bb ldr r3, [r7, #8] + 800d6ec: 4413 add r3, r2 + 800d6ee: 781b ldrb r3, [r3, #0] + 800d6f0: 461a mov r2, r3 + 800d6f2: 68fb ldr r3, [r7, #12] + 800d6f4: 4413 add r3, r2 + 800d6f6: 60fb str r3, [r7, #12] for (i = 0; i < len; i++) - 800d6d0: 68bb ldr r3, [r7, #8] - 800d6d2: 3301 adds r3, #1 - 800d6d4: 60bb str r3, [r7, #8] - 800d6d6: 68ba ldr r2, [r7, #8] - 800d6d8: 683b ldr r3, [r7, #0] - 800d6da: 429a cmp r2, r3 - 800d6dc: d3f0 bcc.n 800d6c0 + 800d6f8: 68bb ldr r3, [r7, #8] + 800d6fa: 3301 adds r3, #1 + 800d6fc: 60bb str r3, [r7, #8] + 800d6fe: 68ba ldr r2, [r7, #8] + 800d700: 683b ldr r3, [r7, #0] + 800d702: 429a cmp r2, r3 + 800d704: d3f0 bcc.n 800d6e8 } return sum; - 800d6de: 68fb ldr r3, [r7, #12] + 800d706: 68fb ldr r3, [r7, #12] } - 800d6e0: 4618 mov r0, r3 - 800d6e2: 3714 adds r7, #20 - 800d6e4: 46bd mov sp, r7 - 800d6e6: bc80 pop {r7} - 800d6e8: 4770 bx lr + 800d708: 4618 mov r0, r3 + 800d70a: 3714 adds r7, #20 + 800d70c: 46bd mov sp, r7 + 800d70e: bc80 pop {r7} + 800d710: 4770 bx lr ... -0800d6ec : +0800d714 : bool Config_Load(BridgeConfig_t *cfg) { - 800d6ec: b580 push {r7, lr} - 800d6ee: b084 sub sp, #16 - 800d6f0: af00 add r7, sp, #0 - 800d6f2: 6078 str r0, [r7, #4] + 800d714: b580 push {r7, lr} + 800d716: b084 sub sp, #16 + 800d718: af00 add r7, sp, #0 + 800d71a: 6078 str r0, [r7, #4] const FlashConfig_t *stored; uint32_t calc; if (cfg == 0) - 800d6f4: 687b ldr r3, [r7, #4] - 800d6f6: 2b00 cmp r3, #0 - 800d6f8: d101 bne.n 800d6fe + 800d71c: 687b ldr r3, [r7, #4] + 800d71e: 2b00 cmp r3, #0 + 800d720: d101 bne.n 800d726 { return false; - 800d6fa: 2300 movs r3, #0 - 800d6fc: e01e b.n 800d73c + 800d722: 2300 movs r3, #0 + 800d724: e01e b.n 800d764 } stored = (const FlashConfig_t *)CONFIG_FLASH_ADDR; - 800d6fe: 4b11 ldr r3, [pc, #68] @ (800d744 ) - 800d700: 60fb str r3, [r7, #12] + 800d726: 4b11 ldr r3, [pc, #68] @ (800d76c ) + 800d728: 60fb str r3, [r7, #12] if (stored->magic != CONFIG_MAGIC) - 800d702: 68fb ldr r3, [r7, #12] - 800d704: 681b ldr r3, [r3, #0] - 800d706: 4a10 ldr r2, [pc, #64] @ (800d748 ) - 800d708: 4293 cmp r3, r2 - 800d70a: d001 beq.n 800d710 + 800d72a: 68fb ldr r3, [r7, #12] + 800d72c: 681b ldr r3, [r3, #0] + 800d72e: 4a10 ldr r2, [pc, #64] @ (800d770 ) + 800d730: 4293 cmp r3, r2 + 800d732: d001 beq.n 800d738 { return false; - 800d70c: 2300 movs r3, #0 - 800d70e: e015 b.n 800d73c + 800d734: 2300 movs r3, #0 + 800d736: e015 b.n 800d764 } calc = Config_CalcChecksum((const uint8_t *)&stored->cfg, sizeof(BridgeConfig_t)); - 800d710: 68fb ldr r3, [r7, #12] - 800d712: 3308 adds r3, #8 - 800d714: 2120 movs r1, #32 - 800d716: 4618 mov r0, r3 - 800d718: f7ff ffc8 bl 800d6ac - 800d71c: 60b8 str r0, [r7, #8] + 800d738: 68fb ldr r3, [r7, #12] + 800d73a: 3308 adds r3, #8 + 800d73c: 2120 movs r1, #32 + 800d73e: 4618 mov r0, r3 + 800d740: f7ff ffc8 bl 800d6d4 + 800d744: 60b8 str r0, [r7, #8] if (calc != stored->checksum) - 800d71e: 68fb ldr r3, [r7, #12] - 800d720: 685b ldr r3, [r3, #4] - 800d722: 68ba ldr r2, [r7, #8] - 800d724: 429a cmp r2, r3 - 800d726: d001 beq.n 800d72c + 800d746: 68fb ldr r3, [r7, #12] + 800d748: 685b ldr r3, [r3, #4] + 800d74a: 68ba ldr r2, [r7, #8] + 800d74c: 429a cmp r2, r3 + 800d74e: d001 beq.n 800d754 { return false; - 800d728: 2300 movs r3, #0 - 800d72a: e007 b.n 800d73c + 800d750: 2300 movs r3, #0 + 800d752: e007 b.n 800d764 } memcpy(cfg, &stored->cfg, sizeof(BridgeConfig_t)); - 800d72c: 68fb ldr r3, [r7, #12] - 800d72e: 3308 adds r3, #8 - 800d730: 2220 movs r2, #32 - 800d732: 4619 mov r1, r3 - 800d734: 6878 ldr r0, [r7, #4] - 800d736: f001 fc4f bl 800efd8 + 800d754: 68fb ldr r3, [r7, #12] + 800d756: 3308 adds r3, #8 + 800d758: 2220 movs r2, #32 + 800d75a: 4619 mov r1, r3 + 800d75c: 6878 ldr r0, [r7, #4] + 800d75e: f001 fc4f bl 800f000 return true; - 800d73a: 2301 movs r3, #1 + 800d762: 2301 movs r3, #1 } - 800d73c: 4618 mov r0, r3 - 800d73e: 3710 adds r7, #16 - 800d740: 46bd mov sp, r7 - 800d742: bd80 pop {r7, pc} - 800d744: 0803f800 .word 0x0803f800 - 800d748: 43464731 .word 0x43464731 + 800d764: 4618 mov r0, r3 + 800d766: 3710 adds r7, #16 + 800d768: 46bd mov sp, r7 + 800d76a: bd80 pop {r7, pc} + 800d76c: 0803f800 .word 0x0803f800 + 800d770: 43464731 .word 0x43464731 -0800d74c : +0800d774 : bool Config_Save(const BridgeConfig_t *cfg) { - 800d74c: b580 push {r7, lr} - 800d74e: b094 sub sp, #80 @ 0x50 - 800d750: af00 add r7, sp, #0 - 800d752: 6078 str r0, [r7, #4] + 800d774: b580 push {r7, lr} + 800d776: b094 sub sp, #80 @ 0x50 + 800d778: af00 add r7, sp, #0 + 800d77a: 6078 str r0, [r7, #4] FlashConfig_t temp; FLASH_EraseInitTypeDef erase; uint32_t page_error = 0; - 800d754: 2300 movs r3, #0 - 800d756: 60bb str r3, [r7, #8] + 800d77c: 2300 movs r3, #0 + 800d77e: 60bb str r3, [r7, #8] uint32_t addr; uint32_t i; const uint64_t *src64; uint32_t words64_count; if (cfg == 0) - 800d758: 687b ldr r3, [r7, #4] - 800d75a: 2b00 cmp r3, #0 - 800d75c: d101 bne.n 800d762 + 800d780: 687b ldr r3, [r7, #4] + 800d782: 2b00 cmp r3, #0 + 800d784: d101 bne.n 800d78a { return false; - 800d75e: 2300 movs r3, #0 - 800d760: e05f b.n 800d822 + 800d786: 2300 movs r3, #0 + 800d788: e05f b.n 800d84a } memset(&temp, 0xFF, sizeof(temp)); - 800d762: f107 0318 add.w r3, r7, #24 - 800d766: 2228 movs r2, #40 @ 0x28 - 800d768: 21ff movs r1, #255 @ 0xff - 800d76a: 4618 mov r0, r3 - 800d76c: f001 fbee bl 800ef4c + 800d78a: f107 0318 add.w r3, r7, #24 + 800d78e: 2228 movs r2, #40 @ 0x28 + 800d790: 21ff movs r1, #255 @ 0xff + 800d792: 4618 mov r0, r3 + 800d794: f001 fbee bl 800ef74 temp.magic = CONFIG_MAGIC; - 800d770: 4b2e ldr r3, [pc, #184] @ (800d82c ) - 800d772: 61bb str r3, [r7, #24] + 800d798: 4b2e ldr r3, [pc, #184] @ (800d854 ) + 800d79a: 61bb str r3, [r7, #24] memcpy(&temp.cfg, cfg, sizeof(BridgeConfig_t)); - 800d774: f107 0318 add.w r3, r7, #24 - 800d778: 3308 adds r3, #8 - 800d77a: 2220 movs r2, #32 - 800d77c: 6879 ldr r1, [r7, #4] - 800d77e: 4618 mov r0, r3 - 800d780: f001 fc2a bl 800efd8 + 800d79c: f107 0318 add.w r3, r7, #24 + 800d7a0: 3308 adds r3, #8 + 800d7a2: 2220 movs r2, #32 + 800d7a4: 6879 ldr r1, [r7, #4] + 800d7a6: 4618 mov r0, r3 + 800d7a8: f001 fc2a bl 800f000 temp.checksum = Config_CalcChecksum((const uint8_t *)&temp.cfg, sizeof(BridgeConfig_t)); - 800d784: f107 0318 add.w r3, r7, #24 - 800d788: 3308 adds r3, #8 - 800d78a: 2120 movs r1, #32 - 800d78c: 4618 mov r0, r3 - 800d78e: f7ff ff8d bl 800d6ac - 800d792: 4603 mov r3, r0 - 800d794: 61fb str r3, [r7, #28] + 800d7ac: f107 0318 add.w r3, r7, #24 + 800d7b0: 3308 adds r3, #8 + 800d7b2: 2120 movs r1, #32 + 800d7b4: 4618 mov r0, r3 + 800d7b6: f7ff ff8d bl 800d6d4 + 800d7ba: 4603 mov r3, r0 + 800d7bc: 61fb str r3, [r7, #28] HAL_FLASH_Unlock(); - 800d796: f7f4 fe91 bl 80024bc + 800d7be: f7f4 fe7d bl 80024bc memset(&erase, 0, sizeof(erase)); - 800d79a: f107 030c add.w r3, r7, #12 - 800d79e: 220c movs r2, #12 - 800d7a0: 2100 movs r1, #0 - 800d7a2: 4618 mov r0, r3 - 800d7a4: f001 fbd2 bl 800ef4c + 800d7c2: f107 030c add.w r3, r7, #12 + 800d7c6: 220c movs r2, #12 + 800d7c8: 2100 movs r1, #0 + 800d7ca: 4618 mov r0, r3 + 800d7cc: f001 fbd2 bl 800ef74 erase.TypeErase = FLASH_TYPEERASE_PAGES; - 800d7a8: 2302 movs r3, #2 - 800d7aa: 60fb str r3, [r7, #12] + 800d7d0: 2302 movs r3, #2 + 800d7d2: 60fb str r3, [r7, #12] erase.Page = (CONFIG_FLASH_ADDR - FLASH_BASE_ADDR) / FLASH_PAGE_SIZE; - 800d7ac: 237f movs r3, #127 @ 0x7f - 800d7ae: 613b str r3, [r7, #16] + 800d7d4: 237f movs r3, #127 @ 0x7f + 800d7d6: 613b str r3, [r7, #16] erase.NbPages = 1; - 800d7b0: 2301 movs r3, #1 - 800d7b2: 617b str r3, [r7, #20] + 800d7d8: 2301 movs r3, #1 + 800d7da: 617b str r3, [r7, #20] if (HAL_FLASHEx_Erase(&erase, &page_error) != HAL_OK) - 800d7b4: f107 0208 add.w r2, r7, #8 - 800d7b8: f107 030c add.w r3, r7, #12 - 800d7bc: 4611 mov r1, r2 - 800d7be: 4618 mov r0, r3 - 800d7c0: f7f4 ff7e bl 80026c0 - 800d7c4: 4603 mov r3, r0 - 800d7c6: 2b00 cmp r3, #0 - 800d7c8: d003 beq.n 800d7d2 + 800d7dc: f107 0208 add.w r2, r7, #8 + 800d7e0: f107 030c add.w r3, r7, #12 + 800d7e4: 4611 mov r1, r2 + 800d7e6: 4618 mov r0, r3 + 800d7e8: f7f4 ff6a bl 80026c0 + 800d7ec: 4603 mov r3, r0 + 800d7ee: 2b00 cmp r3, #0 + 800d7f0: d003 beq.n 800d7fa { HAL_FLASH_Lock(); - 800d7ca: f7f4 fe99 bl 8002500 + 800d7f2: f7f4 fe85 bl 8002500 return false; - 800d7ce: 2300 movs r3, #0 - 800d7d0: e027 b.n 800d822 + 800d7f6: 2300 movs r3, #0 + 800d7f8: e027 b.n 800d84a } addr = CONFIG_FLASH_ADDR; - 800d7d2: 4b17 ldr r3, [pc, #92] @ (800d830 ) - 800d7d4: 64fb str r3, [r7, #76] @ 0x4c + 800d7fa: 4b17 ldr r3, [pc, #92] @ (800d858 ) + 800d7fc: 64fb str r3, [r7, #76] @ 0x4c src64 = (const uint64_t *)&temp; - 800d7d6: f107 0318 add.w r3, r7, #24 - 800d7da: 647b str r3, [r7, #68] @ 0x44 + 800d7fe: f107 0318 add.w r3, r7, #24 + 800d802: 647b str r3, [r7, #68] @ 0x44 words64_count = (sizeof(FlashConfig_t) + 7U) / 8U; - 800d7dc: 2305 movs r3, #5 - 800d7de: 643b str r3, [r7, #64] @ 0x40 + 800d804: 2305 movs r3, #5 + 800d806: 643b str r3, [r7, #64] @ 0x40 for (i = 0; i < words64_count; i++) - 800d7e0: 2300 movs r3, #0 - 800d7e2: 64bb str r3, [r7, #72] @ 0x48 - 800d7e4: e016 b.n 800d814 + 800d808: 2300 movs r3, #0 + 800d80a: 64bb str r3, [r7, #72] @ 0x48 + 800d80c: e016 b.n 800d83c { if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, addr, src64[i]) != HAL_OK) - 800d7e6: 6cbb ldr r3, [r7, #72] @ 0x48 - 800d7e8: 00db lsls r3, r3, #3 - 800d7ea: 6c7a ldr r2, [r7, #68] @ 0x44 - 800d7ec: 4413 add r3, r2 - 800d7ee: e9d3 2300 ldrd r2, r3, [r3] - 800d7f2: 6cf9 ldr r1, [r7, #76] @ 0x4c - 800d7f4: 2001 movs r0, #1 - 800d7f6: f7f4 fe1d bl 8002434 - 800d7fa: 4603 mov r3, r0 - 800d7fc: 2b00 cmp r3, #0 - 800d7fe: d003 beq.n 800d808 + 800d80e: 6cbb ldr r3, [r7, #72] @ 0x48 + 800d810: 00db lsls r3, r3, #3 + 800d812: 6c7a ldr r2, [r7, #68] @ 0x44 + 800d814: 4413 add r3, r2 + 800d816: e9d3 2300 ldrd r2, r3, [r3] + 800d81a: 6cf9 ldr r1, [r7, #76] @ 0x4c + 800d81c: 2001 movs r0, #1 + 800d81e: f7f4 fe09 bl 8002434 + 800d822: 4603 mov r3, r0 + 800d824: 2b00 cmp r3, #0 + 800d826: d003 beq.n 800d830 { HAL_FLASH_Lock(); - 800d800: f7f4 fe7e bl 8002500 + 800d828: f7f4 fe6a bl 8002500 return false; - 800d804: 2300 movs r3, #0 - 800d806: e00c b.n 800d822 + 800d82c: 2300 movs r3, #0 + 800d82e: e00c b.n 800d84a } addr += 8U; - 800d808: 6cfb ldr r3, [r7, #76] @ 0x4c - 800d80a: 3308 adds r3, #8 - 800d80c: 64fb str r3, [r7, #76] @ 0x4c + 800d830: 6cfb ldr r3, [r7, #76] @ 0x4c + 800d832: 3308 adds r3, #8 + 800d834: 64fb str r3, [r7, #76] @ 0x4c for (i = 0; i < words64_count; i++) - 800d80e: 6cbb ldr r3, [r7, #72] @ 0x48 - 800d810: 3301 adds r3, #1 - 800d812: 64bb str r3, [r7, #72] @ 0x48 - 800d814: 6cba ldr r2, [r7, #72] @ 0x48 - 800d816: 6c3b ldr r3, [r7, #64] @ 0x40 - 800d818: 429a cmp r2, r3 - 800d81a: d3e4 bcc.n 800d7e6 + 800d836: 6cbb ldr r3, [r7, #72] @ 0x48 + 800d838: 3301 adds r3, #1 + 800d83a: 64bb str r3, [r7, #72] @ 0x48 + 800d83c: 6cba ldr r2, [r7, #72] @ 0x48 + 800d83e: 6c3b ldr r3, [r7, #64] @ 0x40 + 800d840: 429a cmp r2, r3 + 800d842: d3e4 bcc.n 800d80e } HAL_FLASH_Lock(); - 800d81c: f7f4 fe70 bl 8002500 + 800d844: f7f4 fe5c bl 8002500 return true; - 800d820: 2301 movs r3, #1 + 800d848: 2301 movs r3, #1 } - 800d822: 4618 mov r0, r3 - 800d824: 3750 adds r7, #80 @ 0x50 - 800d826: 46bd mov sp, r7 - 800d828: bd80 pop {r7, pc} - 800d82a: bf00 nop - 800d82c: 43464731 .word 0x43464731 - 800d830: 0803f800 .word 0x0803f800 + 800d84a: 4618 mov r0, r3 + 800d84c: 3750 adds r7, #80 @ 0x50 + 800d84e: 46bd mov sp, r7 + 800d850: bd80 pop {r7, pc} + 800d852: bf00 nop + 800d854: 43464731 .word 0x43464731 + 800d858: 0803f800 .word 0x0803f800 -0800d834 : +0800d85c : /* USER CODE END PFP */ /* Exported functions --------------------------------------------------------*/ int32_t RBI_Init(void) { - 800d834: b580 push {r7, lr} - 800d836: af00 add r7, sp, #0 + 800d85c: b580 push {r7, lr} + 800d85e: af00 add r7, sp, #0 * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_Init(); - 800d838: f7f3 ff8e bl 8001758 - 800d83c: 4603 mov r3, r0 + 800d860: f7f3 ff7a bl 8001758 + 800d864: 4603 mov r3, r0 /* USER CODE BEGIN RBI_Init_2 */ #warning user to provide its board code or to call his board driver functions /* USER CODE END RBI_Init_2 */ return retcode; #endif /* USE_BSP_DRIVER */ } - 800d83e: 4618 mov r0, r3 - 800d840: bd80 pop {r7, pc} + 800d866: 4618 mov r0, r3 + 800d868: bd80 pop {r7, pc} -0800d842 : +0800d86a : return retcode; #endif /* USE_BSP_DRIVER */ } int32_t RBI_ConfigRFSwitch(RBI_Switch_TypeDef Config) { - 800d842: b580 push {r7, lr} - 800d844: b082 sub sp, #8 - 800d846: af00 add r7, sp, #0 - 800d848: 4603 mov r3, r0 - 800d84a: 71fb strb r3, [r7, #7] + 800d86a: b580 push {r7, lr} + 800d86c: b082 sub sp, #8 + 800d86e: af00 add r7, sp, #0 + 800d870: 4603 mov r3, r0 + 800d872: 71fb strb r3, [r7, #7] * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_ConfigRFSwitch((BSP_RADIO_Switch_TypeDef) Config); - 800d84c: 79fb ldrb r3, [r7, #7] - 800d84e: 4618 mov r0, r3 - 800d850: f7f3 ffc0 bl 80017d4 - 800d854: 4603 mov r3, r0 + 800d874: 79fb ldrb r3, [r7, #7] + 800d876: 4618 mov r0, r3 + 800d878: f7f3 ffac bl 80017d4 + 800d87c: 4603 mov r3, r0 /* USER CODE BEGIN RBI_ConfigRFSwitch_2 */ #warning user to provide its board code or to call his board driver functions /* USER CODE END RBI_ConfigRFSwitch_2 */ return retcode; #endif /* USE_BSP_DRIVER */ } - 800d856: 4618 mov r0, r3 - 800d858: 3708 adds r7, #8 - 800d85a: 46bd mov sp, r7 - 800d85c: bd80 pop {r7, pc} + 800d87e: 4618 mov r0, r3 + 800d880: 3708 adds r7, #8 + 800d882: 46bd mov sp, r7 + 800d884: bd80 pop {r7, pc} -0800d85e : +0800d886 : int32_t RBI_GetTxConfig(void) { - 800d85e: b580 push {r7, lr} - 800d860: af00 add r7, sp, #0 + 800d886: b580 push {r7, lr} + 800d888: af00 add r7, sp, #0 * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_GetTxConfig(); - 800d862: f7f4 f813 bl 800188c - 800d866: 4603 mov r3, r0 + 800d88a: f7f3 ffff bl 800188c + 800d88e: 4603 mov r3, r0 /* USER CODE BEGIN RBI_GetTxConfig_2 */ #warning user to provide its board code or to call his board driver functions /* USER CODE END RBI_GetTxConfig_2 */ return retcode; #endif /* USE_BSP_DRIVER */ } - 800d868: 4618 mov r0, r3 - 800d86a: bd80 pop {r7, pc} + 800d890: 4618 mov r0, r3 + 800d892: bd80 pop {r7, pc} -0800d86c : +0800d894 : int32_t RBI_IsTCXO(void) { - 800d86c: b580 push {r7, lr} - 800d86e: af00 add r7, sp, #0 + 800d894: b580 push {r7, lr} + 800d896: af00 add r7, sp, #0 * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_IsTCXO(); - 800d870: f7f4 f813 bl 800189a - 800d874: 4603 mov r3, r0 + 800d898: f7f3 ffff bl 800189a + 800d89c: 4603 mov r3, r0 /* USER CODE BEGIN RBI_IsTCXO_2 */ #warning user to provide its board code or to call his board driver functions /* USER CODE END RBI_IsTCXO_2 */ return retcode; #endif /* USE_BSP_DRIVER */ } - 800d876: 4618 mov r0, r3 - 800d878: bd80 pop {r7, pc} + 800d89e: 4618 mov r0, r3 + 800d8a0: bd80 pop {r7, pc} -0800d87a : +0800d8a2 : int32_t RBI_IsDCDC(void) { - 800d87a: b580 push {r7, lr} - 800d87c: af00 add r7, sp, #0 + 800d8a2: b580 push {r7, lr} + 800d8a4: af00 add r7, sp, #0 * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_IsDCDC(); - 800d87e: f7f4 f813 bl 80018a8 - 800d882: 4603 mov r3, r0 + 800d8a6: f7f3 ffff bl 80018a8 + 800d8aa: 4603 mov r3, r0 /* USER CODE BEGIN RBI_IsDCDC_2 */ #warning user to provide its board code or to call his board driver functions /* USER CODE END RBI_IsDCDC_2 */ return retcode; #endif /* USE_BSP_DRIVER */ } - 800d884: 4618 mov r0, r3 - 800d886: bd80 pop {r7, pc} + 800d8ac: 4618 mov r0, r3 + 800d8ae: bd80 pop {r7, pc} -0800d888 : +0800d8b0 : int32_t RBI_GetRFOMaxPowerConfig(RBI_RFOMaxPowerConfig_TypeDef Config) { - 800d888: b580 push {r7, lr} - 800d88a: b082 sub sp, #8 - 800d88c: af00 add r7, sp, #0 - 800d88e: 4603 mov r3, r0 - 800d890: 71fb strb r3, [r7, #7] + 800d8b0: b580 push {r7, lr} + 800d8b2: b082 sub sp, #8 + 800d8b4: af00 add r7, sp, #0 + 800d8b6: 4603 mov r3, r0 + 800d8b8: 71fb strb r3, [r7, #7] * 1/ For User boards, the BSP/STM32WLxx_Nucleo/ directory can be copied and replaced in the project. The copy must then be updated depending: * on board RF switch configuration (pin control, number of port etc) * on TCXO configuration * on DC/DC configuration * on maximum output power that the board can deliver*/ return BSP_RADIO_GetRFOMaxPowerConfig((BSP_RADIO_RFOMaxPowerConfig_TypeDef) Config); - 800d892: 79fb ldrb r3, [r7, #7] - 800d894: 4618 mov r0, r3 - 800d896: f7f4 f80e bl 80018b6 - 800d89a: 4603 mov r3, r0 + 800d8ba: 79fb ldrb r3, [r7, #7] + 800d8bc: 4618 mov r0, r3 + 800d8be: f7f3 fffa bl 80018b6 + 800d8c2: 4603 mov r3, r0 ret = 22; /*dBm*/ } /* USER CODE END RBI_GetRFOMaxPowerConfig_2 */ return ret; #endif /* USE_BSP_DRIVER */ } - 800d89c: 4618 mov r0, r3 - 800d89e: 3708 adds r7, #8 - 800d8a0: 46bd mov sp, r7 - 800d8a2: bd80 pop {r7, pc} + 800d8c4: 4618 mov r0, r3 + 800d8c6: 3708 adds r7, #8 + 800d8c8: 46bd mov sp, r7 + 800d8ca: bd80 pop {r7, pc} -0800d8a4 : +0800d8cc : /** @addtogroup TINY_LPM_Exported_function * @{ */ void UTIL_LPM_Init( void ) { - 800d8a4: b480 push {r7} - 800d8a6: af00 add r7, sp, #0 + 800d8cc: b480 push {r7} + 800d8ce: af00 add r7, sp, #0 StopModeDisable = UTIL_LPM_NO_BIT_SET; - 800d8a8: 4b04 ldr r3, [pc, #16] @ (800d8bc ) - 800d8aa: 2200 movs r2, #0 - 800d8ac: 601a str r2, [r3, #0] + 800d8d0: 4b04 ldr r3, [pc, #16] @ (800d8e4 ) + 800d8d2: 2200 movs r2, #0 + 800d8d4: 601a str r2, [r3, #0] OffModeDisable = UTIL_LPM_NO_BIT_SET; - 800d8ae: 4b04 ldr r3, [pc, #16] @ (800d8c0 ) - 800d8b0: 2200 movs r2, #0 - 800d8b2: 601a str r2, [r3, #0] + 800d8d6: 4b04 ldr r3, [pc, #16] @ (800d8e8 ) + 800d8d8: 2200 movs r2, #0 + 800d8da: 601a str r2, [r3, #0] UTIL_LPM_INIT_CRITICAL_SECTION( ); } - 800d8b4: bf00 nop - 800d8b6: 46bd mov sp, r7 - 800d8b8: bc80 pop {r7} - 800d8ba: 4770 bx lr - 800d8bc: 20000c0c .word 0x20000c0c - 800d8c0: 20000c10 .word 0x20000c10 + 800d8dc: bf00 nop + 800d8de: 46bd mov sp, r7 + 800d8e0: bc80 pop {r7} + 800d8e2: 4770 bx lr + 800d8e4: 20000c44 .word 0x20000c44 + 800d8e8: 20000c48 .word 0x20000c48 -0800d8c4 : +0800d8ec : void UTIL_LPM_DeInit( void ) { } void UTIL_LPM_SetStopMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state ) { - 800d8c4: b480 push {r7} - 800d8c6: b087 sub sp, #28 - 800d8c8: af00 add r7, sp, #0 - 800d8ca: 6078 str r0, [r7, #4] - 800d8cc: 460b mov r3, r1 - 800d8ce: 70fb strb r3, [r7, #3] + 800d8ec: b480 push {r7} + 800d8ee: b087 sub sp, #28 + 800d8f0: af00 add r7, sp, #0 + 800d8f2: 6078 str r0, [r7, #4] + 800d8f4: 460b mov r3, r1 + 800d8f6: 70fb strb r3, [r7, #3] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800d8d0: f3ef 8310 mrs r3, PRIMASK - 800d8d4: 613b str r3, [r7, #16] + 800d8f8: f3ef 8310 mrs r3, PRIMASK + 800d8fc: 613b str r3, [r7, #16] return(result); - 800d8d6: 693b ldr r3, [r7, #16] + 800d8fe: 693b ldr r3, [r7, #16] UTIL_LPM_ENTER_CRITICAL_SECTION( ); - 800d8d8: 617b str r3, [r7, #20] + 800d900: 617b str r3, [r7, #20] __ASM volatile ("cpsid i" : : : "memory"); - 800d8da: b672 cpsid i + 800d902: b672 cpsid i } - 800d8dc: bf00 nop + 800d904: bf00 nop switch( state ) - 800d8de: 78fb ldrb r3, [r7, #3] - 800d8e0: 2b00 cmp r3, #0 - 800d8e2: d008 beq.n 800d8f6 - 800d8e4: 2b01 cmp r3, #1 - 800d8e6: d10e bne.n 800d906 + 800d906: 78fb ldrb r3, [r7, #3] + 800d908: 2b00 cmp r3, #0 + 800d90a: d008 beq.n 800d91e + 800d90c: 2b01 cmp r3, #1 + 800d90e: d10e bne.n 800d92e { case UTIL_LPM_DISABLE: { StopModeDisable |= lpm_id_bm; - 800d8e8: 4b0d ldr r3, [pc, #52] @ (800d920 ) - 800d8ea: 681a ldr r2, [r3, #0] - 800d8ec: 687b ldr r3, [r7, #4] - 800d8ee: 4313 orrs r3, r2 - 800d8f0: 4a0b ldr r2, [pc, #44] @ (800d920 ) - 800d8f2: 6013 str r3, [r2, #0] + 800d910: 4b0d ldr r3, [pc, #52] @ (800d948 ) + 800d912: 681a ldr r2, [r3, #0] + 800d914: 687b ldr r3, [r7, #4] + 800d916: 4313 orrs r3, r2 + 800d918: 4a0b ldr r2, [pc, #44] @ (800d948 ) + 800d91a: 6013 str r3, [r2, #0] break; - 800d8f4: e008 b.n 800d908 + 800d91c: e008 b.n 800d930 } case UTIL_LPM_ENABLE: { StopModeDisable &= ( ~lpm_id_bm ); - 800d8f6: 687b ldr r3, [r7, #4] - 800d8f8: 43da mvns r2, r3 - 800d8fa: 4b09 ldr r3, [pc, #36] @ (800d920 ) - 800d8fc: 681b ldr r3, [r3, #0] - 800d8fe: 4013 ands r3, r2 - 800d900: 4a07 ldr r2, [pc, #28] @ (800d920 ) - 800d902: 6013 str r3, [r2, #0] + 800d91e: 687b ldr r3, [r7, #4] + 800d920: 43da mvns r2, r3 + 800d922: 4b09 ldr r3, [pc, #36] @ (800d948 ) + 800d924: 681b ldr r3, [r3, #0] + 800d926: 4013 ands r3, r2 + 800d928: 4a07 ldr r2, [pc, #28] @ (800d948 ) + 800d92a: 6013 str r3, [r2, #0] break; - 800d904: e000 b.n 800d908 + 800d92c: e000 b.n 800d930 } default : { break; - 800d906: bf00 nop - 800d908: 697b ldr r3, [r7, #20] - 800d90a: 60fb str r3, [r7, #12] + 800d92e: bf00 nop + 800d930: 697b ldr r3, [r7, #20] + 800d932: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800d90c: 68fb ldr r3, [r7, #12] - 800d90e: f383 8810 msr PRIMASK, r3 + 800d934: 68fb ldr r3, [r7, #12] + 800d936: f383 8810 msr PRIMASK, r3 } - 800d912: bf00 nop + 800d93a: bf00 nop } } UTIL_LPM_EXIT_CRITICAL_SECTION( ); } - 800d914: bf00 nop - 800d916: 371c adds r7, #28 - 800d918: 46bd mov sp, r7 - 800d91a: bc80 pop {r7} - 800d91c: 4770 bx lr - 800d91e: bf00 nop - 800d920: 20000c0c .word 0x20000c0c + 800d93c: bf00 nop + 800d93e: 371c adds r7, #28 + 800d940: 46bd mov sp, r7 + 800d942: bc80 pop {r7} + 800d944: 4770 bx lr + 800d946: bf00 nop + 800d948: 20000c44 .word 0x20000c44 -0800d924 : +0800d94c : void UTIL_LPM_SetOffMode( UTIL_LPM_bm_t lpm_id_bm, UTIL_LPM_State_t state ) { - 800d924: b480 push {r7} - 800d926: b087 sub sp, #28 - 800d928: af00 add r7, sp, #0 - 800d92a: 6078 str r0, [r7, #4] - 800d92c: 460b mov r3, r1 - 800d92e: 70fb strb r3, [r7, #3] + 800d94c: b480 push {r7} + 800d94e: b087 sub sp, #28 + 800d950: af00 add r7, sp, #0 + 800d952: 6078 str r0, [r7, #4] + 800d954: 460b mov r3, r1 + 800d956: 70fb strb r3, [r7, #3] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800d930: f3ef 8310 mrs r3, PRIMASK - 800d934: 613b str r3, [r7, #16] + 800d958: f3ef 8310 mrs r3, PRIMASK + 800d95c: 613b str r3, [r7, #16] return(result); - 800d936: 693b ldr r3, [r7, #16] + 800d95e: 693b ldr r3, [r7, #16] UTIL_LPM_ENTER_CRITICAL_SECTION( ); - 800d938: 617b str r3, [r7, #20] + 800d960: 617b str r3, [r7, #20] __ASM volatile ("cpsid i" : : : "memory"); - 800d93a: b672 cpsid i + 800d962: b672 cpsid i } - 800d93c: bf00 nop + 800d964: bf00 nop switch(state) - 800d93e: 78fb ldrb r3, [r7, #3] - 800d940: 2b00 cmp r3, #0 - 800d942: d008 beq.n 800d956 - 800d944: 2b01 cmp r3, #1 - 800d946: d10e bne.n 800d966 + 800d966: 78fb ldrb r3, [r7, #3] + 800d968: 2b00 cmp r3, #0 + 800d96a: d008 beq.n 800d97e + 800d96c: 2b01 cmp r3, #1 + 800d96e: d10e bne.n 800d98e { case UTIL_LPM_DISABLE: { OffModeDisable |= lpm_id_bm; - 800d948: 4b0d ldr r3, [pc, #52] @ (800d980 ) - 800d94a: 681a ldr r2, [r3, #0] - 800d94c: 687b ldr r3, [r7, #4] - 800d94e: 4313 orrs r3, r2 - 800d950: 4a0b ldr r2, [pc, #44] @ (800d980 ) - 800d952: 6013 str r3, [r2, #0] + 800d970: 4b0d ldr r3, [pc, #52] @ (800d9a8 ) + 800d972: 681a ldr r2, [r3, #0] + 800d974: 687b ldr r3, [r7, #4] + 800d976: 4313 orrs r3, r2 + 800d978: 4a0b ldr r2, [pc, #44] @ (800d9a8 ) + 800d97a: 6013 str r3, [r2, #0] break; - 800d954: e008 b.n 800d968 + 800d97c: e008 b.n 800d990 } case UTIL_LPM_ENABLE: { OffModeDisable &= ( ~lpm_id_bm ); - 800d956: 687b ldr r3, [r7, #4] - 800d958: 43da mvns r2, r3 - 800d95a: 4b09 ldr r3, [pc, #36] @ (800d980 ) - 800d95c: 681b ldr r3, [r3, #0] - 800d95e: 4013 ands r3, r2 - 800d960: 4a07 ldr r2, [pc, #28] @ (800d980 ) - 800d962: 6013 str r3, [r2, #0] + 800d97e: 687b ldr r3, [r7, #4] + 800d980: 43da mvns r2, r3 + 800d982: 4b09 ldr r3, [pc, #36] @ (800d9a8 ) + 800d984: 681b ldr r3, [r3, #0] + 800d986: 4013 ands r3, r2 + 800d988: 4a07 ldr r2, [pc, #28] @ (800d9a8 ) + 800d98a: 6013 str r3, [r2, #0] break; - 800d964: e000 b.n 800d968 + 800d98c: e000 b.n 800d990 } default : { break; - 800d966: bf00 nop - 800d968: 697b ldr r3, [r7, #20] - 800d96a: 60fb str r3, [r7, #12] + 800d98e: bf00 nop + 800d990: 697b ldr r3, [r7, #20] + 800d992: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800d96c: 68fb ldr r3, [r7, #12] - 800d96e: f383 8810 msr PRIMASK, r3 + 800d994: 68fb ldr r3, [r7, #12] + 800d996: f383 8810 msr PRIMASK, r3 } - 800d972: bf00 nop + 800d99a: bf00 nop } } UTIL_LPM_EXIT_CRITICAL_SECTION( ); } - 800d974: bf00 nop - 800d976: 371c adds r7, #28 - 800d978: 46bd mov sp, r7 - 800d97a: bc80 pop {r7} - 800d97c: 4770 bx lr - 800d97e: bf00 nop - 800d980: 20000c10 .word 0x20000c10 + 800d99c: bf00 nop + 800d99e: 371c adds r7, #28 + 800d9a0: 46bd mov sp, r7 + 800d9a2: bc80 pop {r7} + 800d9a4: 4770 bx lr + 800d9a6: bf00 nop + 800d9a8: 20000c48 .word 0x20000c48 -0800d984 : +0800d9ac : return mode_selected; } void UTIL_LPM_EnterLowPower( void ) { - 800d984: b580 push {r7, lr} - 800d986: b084 sub sp, #16 - 800d988: af00 add r7, sp, #0 + 800d9ac: b580 push {r7, lr} + 800d9ae: b084 sub sp, #16 + 800d9b0: af00 add r7, sp, #0 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800d98a: f3ef 8310 mrs r3, PRIMASK - 800d98e: 60bb str r3, [r7, #8] + 800d9b2: f3ef 8310 mrs r3, PRIMASK + 800d9b6: 60bb str r3, [r7, #8] return(result); - 800d990: 68bb ldr r3, [r7, #8] + 800d9b8: 68bb ldr r3, [r7, #8] UTIL_LPM_ENTER_CRITICAL_SECTION_ELP( ); - 800d992: 60fb str r3, [r7, #12] + 800d9ba: 60fb str r3, [r7, #12] __ASM volatile ("cpsid i" : : : "memory"); - 800d994: b672 cpsid i + 800d9bc: b672 cpsid i } - 800d996: bf00 nop + 800d9be: bf00 nop if( StopModeDisable != UTIL_LPM_NO_BIT_SET ) - 800d998: 4b12 ldr r3, [pc, #72] @ (800d9e4 ) - 800d99a: 681b ldr r3, [r3, #0] - 800d99c: 2b00 cmp r3, #0 - 800d99e: d006 beq.n 800d9ae + 800d9c0: 4b12 ldr r3, [pc, #72] @ (800da0c ) + 800d9c2: 681b ldr r3, [r3, #0] + 800d9c4: 2b00 cmp r3, #0 + 800d9c6: d006 beq.n 800d9d6 { /** * At least one user disallows Stop Mode * SLEEP mode is required */ UTIL_PowerDriver.EnterSleepMode( ); - 800d9a0: 4b11 ldr r3, [pc, #68] @ (800d9e8 ) - 800d9a2: 681b ldr r3, [r3, #0] - 800d9a4: 4798 blx r3 + 800d9c8: 4b11 ldr r3, [pc, #68] @ (800da10 ) + 800d9ca: 681b ldr r3, [r3, #0] + 800d9cc: 4798 blx r3 UTIL_PowerDriver.ExitSleepMode( ); - 800d9a6: 4b10 ldr r3, [pc, #64] @ (800d9e8 ) - 800d9a8: 685b ldr r3, [r3, #4] - 800d9aa: 4798 blx r3 - 800d9ac: e010 b.n 800d9d0 + 800d9ce: 4b10 ldr r3, [pc, #64] @ (800da10 ) + 800d9d0: 685b ldr r3, [r3, #4] + 800d9d2: 4798 blx r3 + 800d9d4: e010 b.n 800d9f8 } else { if( OffModeDisable != UTIL_LPM_NO_BIT_SET ) - 800d9ae: 4b0f ldr r3, [pc, #60] @ (800d9ec ) - 800d9b0: 681b ldr r3, [r3, #0] - 800d9b2: 2b00 cmp r3, #0 - 800d9b4: d006 beq.n 800d9c4 + 800d9d6: 4b0f ldr r3, [pc, #60] @ (800da14 ) + 800d9d8: 681b ldr r3, [r3, #0] + 800d9da: 2b00 cmp r3, #0 + 800d9dc: d006 beq.n 800d9ec { /** * At least one user disallows Off Mode * STOP mode is required */ UTIL_PowerDriver.EnterStopMode( ); - 800d9b6: 4b0c ldr r3, [pc, #48] @ (800d9e8 ) - 800d9b8: 689b ldr r3, [r3, #8] - 800d9ba: 4798 blx r3 + 800d9de: 4b0c ldr r3, [pc, #48] @ (800da10 ) + 800d9e0: 689b ldr r3, [r3, #8] + 800d9e2: 4798 blx r3 UTIL_PowerDriver.ExitStopMode( ); - 800d9bc: 4b0a ldr r3, [pc, #40] @ (800d9e8 ) - 800d9be: 68db ldr r3, [r3, #12] - 800d9c0: 4798 blx r3 - 800d9c2: e005 b.n 800d9d0 + 800d9e4: 4b0a ldr r3, [pc, #40] @ (800da10 ) + 800d9e6: 68db ldr r3, [r3, #12] + 800d9e8: 4798 blx r3 + 800d9ea: e005 b.n 800d9f8 else { /** * OFF mode is required */ UTIL_PowerDriver.EnterOffMode( ); - 800d9c4: 4b08 ldr r3, [pc, #32] @ (800d9e8 ) - 800d9c6: 691b ldr r3, [r3, #16] - 800d9c8: 4798 blx r3 + 800d9ec: 4b08 ldr r3, [pc, #32] @ (800da10 ) + 800d9ee: 691b ldr r3, [r3, #16] + 800d9f0: 4798 blx r3 UTIL_PowerDriver.ExitOffMode( ); - 800d9ca: 4b07 ldr r3, [pc, #28] @ (800d9e8 ) - 800d9cc: 695b ldr r3, [r3, #20] - 800d9ce: 4798 blx r3 - 800d9d0: 68fb ldr r3, [r7, #12] - 800d9d2: 607b str r3, [r7, #4] + 800d9f2: 4b07 ldr r3, [pc, #28] @ (800da10 ) + 800d9f4: 695b ldr r3, [r3, #20] + 800d9f6: 4798 blx r3 + 800d9f8: 68fb ldr r3, [r7, #12] + 800d9fa: 607b str r3, [r7, #4] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800d9d4: 687b ldr r3, [r7, #4] - 800d9d6: f383 8810 msr PRIMASK, r3 + 800d9fc: 687b ldr r3, [r7, #4] + 800d9fe: f383 8810 msr PRIMASK, r3 } - 800d9da: bf00 nop + 800da02: bf00 nop } } UTIL_LPM_EXIT_CRITICAL_SECTION_ELP( ); } - 800d9dc: bf00 nop - 800d9de: 3710 adds r7, #16 - 800d9e0: 46bd mov sp, r7 - 800d9e2: bd80 pop {r7, pc} - 800d9e4: 20000c0c .word 0x20000c0c - 800d9e8: 08010294 .word 0x08010294 - 800d9ec: 20000c10 .word 0x20000c10 + 800da04: bf00 nop + 800da06: 3710 adds r7, #16 + 800da08: 46bd mov sp, r7 + 800da0a: bd80 pop {r7, pc} + 800da0c: 20000c44 .word 0x20000c44 + 800da10: 080102bc .word 0x080102bc + 800da14: 20000c48 .word 0x20000c48 -0800d9f0 : +0800da18 : /* Global variables ----------------------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/ /* Functions Definition ------------------------------------------------------*/ void UTIL_MEM_cpy_8( void *dst, const void *src, uint16_t size ) { - 800d9f0: b480 push {r7} - 800d9f2: b087 sub sp, #28 - 800d9f4: af00 add r7, sp, #0 - 800d9f6: 60f8 str r0, [r7, #12] - 800d9f8: 60b9 str r1, [r7, #8] - 800d9fa: 4613 mov r3, r2 - 800d9fc: 80fb strh r3, [r7, #6] + 800da18: b480 push {r7} + 800da1a: b087 sub sp, #28 + 800da1c: af00 add r7, sp, #0 + 800da1e: 60f8 str r0, [r7, #12] + 800da20: 60b9 str r1, [r7, #8] + 800da22: 4613 mov r3, r2 + 800da24: 80fb strh r3, [r7, #6] uint8_t* dst8= (uint8_t *) dst; - 800d9fe: 68fb ldr r3, [r7, #12] - 800da00: 617b str r3, [r7, #20] + 800da26: 68fb ldr r3, [r7, #12] + 800da28: 617b str r3, [r7, #20] uint8_t* src8= (uint8_t *) src; - 800da02: 68bb ldr r3, [r7, #8] - 800da04: 613b str r3, [r7, #16] + 800da2a: 68bb ldr r3, [r7, #8] + 800da2c: 613b str r3, [r7, #16] while( size-- ) - 800da06: e007 b.n 800da18 + 800da2e: e007 b.n 800da40 { *dst8++ = *src8++; - 800da08: 693a ldr r2, [r7, #16] - 800da0a: 1c53 adds r3, r2, #1 - 800da0c: 613b str r3, [r7, #16] - 800da0e: 697b ldr r3, [r7, #20] - 800da10: 1c59 adds r1, r3, #1 - 800da12: 6179 str r1, [r7, #20] - 800da14: 7812 ldrb r2, [r2, #0] - 800da16: 701a strb r2, [r3, #0] + 800da30: 693a ldr r2, [r7, #16] + 800da32: 1c53 adds r3, r2, #1 + 800da34: 613b str r3, [r7, #16] + 800da36: 697b ldr r3, [r7, #20] + 800da38: 1c59 adds r1, r3, #1 + 800da3a: 6179 str r1, [r7, #20] + 800da3c: 7812 ldrb r2, [r2, #0] + 800da3e: 701a strb r2, [r3, #0] while( size-- ) - 800da18: 88fb ldrh r3, [r7, #6] - 800da1a: 1e5a subs r2, r3, #1 - 800da1c: 80fa strh r2, [r7, #6] - 800da1e: 2b00 cmp r3, #0 - 800da20: d1f2 bne.n 800da08 + 800da40: 88fb ldrh r3, [r7, #6] + 800da42: 1e5a subs r2, r3, #1 + 800da44: 80fa strh r2, [r7, #6] + 800da46: 2b00 cmp r3, #0 + 800da48: d1f2 bne.n 800da30 } } - 800da22: bf00 nop - 800da24: bf00 nop - 800da26: 371c adds r7, #28 - 800da28: 46bd mov sp, r7 - 800da2a: bc80 pop {r7} - 800da2c: 4770 bx lr + 800da4a: bf00 nop + 800da4c: bf00 nop + 800da4e: 371c adds r7, #28 + 800da50: 46bd mov sp, r7 + 800da52: bc80 pop {r7} + 800da54: 4770 bx lr -0800da2e : +0800da56 : *dst8-- = *src8++; } } void UTIL_MEM_set_8( void *dst, uint8_t value, uint16_t size ) { - 800da2e: b480 push {r7} - 800da30: b085 sub sp, #20 - 800da32: af00 add r7, sp, #0 - 800da34: 6078 str r0, [r7, #4] - 800da36: 460b mov r3, r1 - 800da38: 70fb strb r3, [r7, #3] - 800da3a: 4613 mov r3, r2 - 800da3c: 803b strh r3, [r7, #0] + 800da56: b480 push {r7} + 800da58: b085 sub sp, #20 + 800da5a: af00 add r7, sp, #0 + 800da5c: 6078 str r0, [r7, #4] + 800da5e: 460b mov r3, r1 + 800da60: 70fb strb r3, [r7, #3] + 800da62: 4613 mov r3, r2 + 800da64: 803b strh r3, [r7, #0] uint8_t* dst8= (uint8_t *) dst; - 800da3e: 687b ldr r3, [r7, #4] - 800da40: 60fb str r3, [r7, #12] + 800da66: 687b ldr r3, [r7, #4] + 800da68: 60fb str r3, [r7, #12] while( size-- ) - 800da42: e004 b.n 800da4e + 800da6a: e004 b.n 800da76 { *dst8++ = value; - 800da44: 68fb ldr r3, [r7, #12] - 800da46: 1c5a adds r2, r3, #1 - 800da48: 60fa str r2, [r7, #12] - 800da4a: 78fa ldrb r2, [r7, #3] - 800da4c: 701a strb r2, [r3, #0] + 800da6c: 68fb ldr r3, [r7, #12] + 800da6e: 1c5a adds r2, r3, #1 + 800da70: 60fa str r2, [r7, #12] + 800da72: 78fa ldrb r2, [r7, #3] + 800da74: 701a strb r2, [r3, #0] while( size-- ) - 800da4e: 883b ldrh r3, [r7, #0] - 800da50: 1e5a subs r2, r3, #1 - 800da52: 803a strh r2, [r7, #0] - 800da54: 2b00 cmp r3, #0 - 800da56: d1f5 bne.n 800da44 + 800da76: 883b ldrh r3, [r7, #0] + 800da78: 1e5a subs r2, r3, #1 + 800da7a: 803a strh r2, [r7, #0] + 800da7c: 2b00 cmp r3, #0 + 800da7e: d1f5 bne.n 800da6c } } - 800da58: bf00 nop - 800da5a: bf00 nop - 800da5c: 3714 adds r7, #20 - 800da5e: 46bd mov sp, r7 - 800da60: bc80 pop {r7} - 800da62: 4770 bx lr + 800da80: bf00 nop + 800da82: bf00 nop + 800da84: 3714 adds r7, #20 + 800da86: 46bd mov sp, r7 + 800da88: bc80 pop {r7} + 800da8a: 4770 bx lr -0800da64 : +0800da8c : * @addtogroup SYSTIME_exported_function * @{ */ SysTime_t SysTimeAdd( SysTime_t a, SysTime_t b ) { - 800da64: b082 sub sp, #8 - 800da66: b480 push {r7} - 800da68: b087 sub sp, #28 - 800da6a: af00 add r7, sp, #0 - 800da6c: 60f8 str r0, [r7, #12] - 800da6e: 1d38 adds r0, r7, #4 - 800da70: e880 0006 stmia.w r0, {r1, r2} - 800da74: 627b str r3, [r7, #36] @ 0x24 + 800da8c: b082 sub sp, #8 + 800da8e: b480 push {r7} + 800da90: b087 sub sp, #28 + 800da92: af00 add r7, sp, #0 + 800da94: 60f8 str r0, [r7, #12] + 800da96: 1d38 adds r0, r7, #4 + 800da98: e880 0006 stmia.w r0, {r1, r2} + 800da9c: 627b str r3, [r7, #36] @ 0x24 SysTime_t c = { .Seconds = 0, .SubSeconds = 0 }; - 800da76: 2300 movs r3, #0 - 800da78: 613b str r3, [r7, #16] - 800da7a: 2300 movs r3, #0 - 800da7c: 82bb strh r3, [r7, #20] + 800da9e: 2300 movs r3, #0 + 800daa0: 613b str r3, [r7, #16] + 800daa2: 2300 movs r3, #0 + 800daa4: 82bb strh r3, [r7, #20] c.Seconds = a.Seconds + b.Seconds; - 800da7e: 687a ldr r2, [r7, #4] - 800da80: 6a7b ldr r3, [r7, #36] @ 0x24 - 800da82: 4413 add r3, r2 - 800da84: 613b str r3, [r7, #16] + 800daa6: 687a ldr r2, [r7, #4] + 800daa8: 6a7b ldr r3, [r7, #36] @ 0x24 + 800daaa: 4413 add r3, r2 + 800daac: 613b str r3, [r7, #16] c.SubSeconds = a.SubSeconds + b.SubSeconds; - 800da86: f9b7 3008 ldrsh.w r3, [r7, #8] - 800da8a: b29a uxth r2, r3 - 800da8c: f9b7 3028 ldrsh.w r3, [r7, #40] @ 0x28 - 800da90: b29b uxth r3, r3 - 800da92: 4413 add r3, r2 - 800da94: b29b uxth r3, r3 - 800da96: b21b sxth r3, r3 - 800da98: 82bb strh r3, [r7, #20] + 800daae: f9b7 3008 ldrsh.w r3, [r7, #8] + 800dab2: b29a uxth r2, r3 + 800dab4: f9b7 3028 ldrsh.w r3, [r7, #40] @ 0x28 + 800dab8: b29b uxth r3, r3 + 800daba: 4413 add r3, r2 + 800dabc: b29b uxth r3, r3 + 800dabe: b21b sxth r3, r3 + 800dac0: 82bb strh r3, [r7, #20] if( c.SubSeconds >= 1000 ) - 800da9a: f9b7 3014 ldrsh.w r3, [r7, #20] - 800da9e: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 - 800daa2: db0a blt.n 800daba + 800dac2: f9b7 3014 ldrsh.w r3, [r7, #20] + 800dac6: f5b3 7f7a cmp.w r3, #1000 @ 0x3e8 + 800daca: db0a blt.n 800dae2 { c.Seconds++; - 800daa4: 693b ldr r3, [r7, #16] - 800daa6: 3301 adds r3, #1 - 800daa8: 613b str r3, [r7, #16] + 800dacc: 693b ldr r3, [r7, #16] + 800dace: 3301 adds r3, #1 + 800dad0: 613b str r3, [r7, #16] c.SubSeconds -= 1000; - 800daaa: f9b7 3014 ldrsh.w r3, [r7, #20] - 800daae: b29b uxth r3, r3 - 800dab0: f5a3 737a sub.w r3, r3, #1000 @ 0x3e8 - 800dab4: b29b uxth r3, r3 - 800dab6: b21b sxth r3, r3 - 800dab8: 82bb strh r3, [r7, #20] + 800dad2: f9b7 3014 ldrsh.w r3, [r7, #20] + 800dad6: b29b uxth r3, r3 + 800dad8: f5a3 737a sub.w r3, r3, #1000 @ 0x3e8 + 800dadc: b29b uxth r3, r3 + 800dade: b21b sxth r3, r3 + 800dae0: 82bb strh r3, [r7, #20] } return c; - 800daba: 68fb ldr r3, [r7, #12] - 800dabc: 461a mov r2, r3 - 800dabe: f107 0310 add.w r3, r7, #16 - 800dac2: e893 0003 ldmia.w r3, {r0, r1} - 800dac6: e882 0003 stmia.w r2, {r0, r1} + 800dae2: 68fb ldr r3, [r7, #12] + 800dae4: 461a mov r2, r3 + 800dae6: f107 0310 add.w r3, r7, #16 + 800daea: e893 0003 ldmia.w r3, {r0, r1} + 800daee: e882 0003 stmia.w r2, {r0, r1} } - 800daca: 68f8 ldr r0, [r7, #12] - 800dacc: 371c adds r7, #28 - 800dace: 46bd mov sp, r7 - 800dad0: bc80 pop {r7} - 800dad2: b002 add sp, #8 - 800dad4: 4770 bx lr + 800daf2: 68f8 ldr r0, [r7, #12] + 800daf4: 371c adds r7, #28 + 800daf6: 46bd mov sp, r7 + 800daf8: bc80 pop {r7} + 800dafa: b002 add sp, #8 + 800dafc: 4770 bx lr ... -0800dad8 : +0800db00 : UTIL_SYSTIMDriver.BKUPWrite_Seconds( DeltaTime.Seconds ); UTIL_SYSTIMDriver.BKUPWrite_SubSeconds( ( uint32_t ) DeltaTime.SubSeconds ); } SysTime_t SysTimeGet( void ) { - 800dad8: b580 push {r7, lr} - 800dada: b08a sub sp, #40 @ 0x28 - 800dadc: af02 add r7, sp, #8 - 800dade: 6078 str r0, [r7, #4] + 800db00: b580 push {r7, lr} + 800db02: b08a sub sp, #40 @ 0x28 + 800db04: af02 add r7, sp, #8 + 800db06: 6078 str r0, [r7, #4] SysTime_t calendarTime = { .Seconds = 0, .SubSeconds = 0 }; - 800dae0: 2300 movs r3, #0 - 800dae2: 61bb str r3, [r7, #24] - 800dae4: 2300 movs r3, #0 - 800dae6: 83bb strh r3, [r7, #28] + 800db08: 2300 movs r3, #0 + 800db0a: 61bb str r3, [r7, #24] + 800db0c: 2300 movs r3, #0 + 800db0e: 83bb strh r3, [r7, #28] SysTime_t sysTime = { .Seconds = 0, .SubSeconds = 0 }; - 800dae8: 2300 movs r3, #0 - 800daea: 613b str r3, [r7, #16] - 800daec: 2300 movs r3, #0 - 800daee: 82bb strh r3, [r7, #20] + 800db10: 2300 movs r3, #0 + 800db12: 613b str r3, [r7, #16] + 800db14: 2300 movs r3, #0 + 800db16: 82bb strh r3, [r7, #20] SysTime_t DeltaTime; calendarTime.Seconds = UTIL_SYSTIMDriver.GetCalendarTime( ( uint16_t* )&calendarTime.SubSeconds ); - 800daf0: 4b14 ldr r3, [pc, #80] @ (800db44 ) - 800daf2: 691b ldr r3, [r3, #16] - 800daf4: f107 0218 add.w r2, r7, #24 - 800daf8: 3204 adds r2, #4 - 800dafa: 4610 mov r0, r2 - 800dafc: 4798 blx r3 - 800dafe: 4603 mov r3, r0 - 800db00: 61bb str r3, [r7, #24] + 800db18: 4b14 ldr r3, [pc, #80] @ (800db6c ) + 800db1a: 691b ldr r3, [r3, #16] + 800db1c: f107 0218 add.w r2, r7, #24 + 800db20: 3204 adds r2, #4 + 800db22: 4610 mov r0, r2 + 800db24: 4798 blx r3 + 800db26: 4603 mov r3, r0 + 800db28: 61bb str r3, [r7, #24] DeltaTime.SubSeconds = (int16_t)UTIL_SYSTIMDriver.BKUPRead_SubSeconds(); - 800db02: 4b10 ldr r3, [pc, #64] @ (800db44 ) - 800db04: 68db ldr r3, [r3, #12] - 800db06: 4798 blx r3 - 800db08: 4603 mov r3, r0 - 800db0a: b21b sxth r3, r3 - 800db0c: 81bb strh r3, [r7, #12] + 800db2a: 4b10 ldr r3, [pc, #64] @ (800db6c ) + 800db2c: 68db ldr r3, [r3, #12] + 800db2e: 4798 blx r3 + 800db30: 4603 mov r3, r0 + 800db32: b21b sxth r3, r3 + 800db34: 81bb strh r3, [r7, #12] DeltaTime.Seconds = UTIL_SYSTIMDriver.BKUPRead_Seconds(); - 800db0e: 4b0d ldr r3, [pc, #52] @ (800db44 ) - 800db10: 685b ldr r3, [r3, #4] - 800db12: 4798 blx r3 - 800db14: 4603 mov r3, r0 - 800db16: 60bb str r3, [r7, #8] + 800db36: 4b0d ldr r3, [pc, #52] @ (800db6c ) + 800db38: 685b ldr r3, [r3, #4] + 800db3a: 4798 blx r3 + 800db3c: 4603 mov r3, r0 + 800db3e: 60bb str r3, [r7, #8] sysTime = SysTimeAdd( DeltaTime, calendarTime ); - 800db18: f107 0010 add.w r0, r7, #16 - 800db1c: 69fb ldr r3, [r7, #28] - 800db1e: 9300 str r3, [sp, #0] - 800db20: 69bb ldr r3, [r7, #24] - 800db22: f107 0208 add.w r2, r7, #8 - 800db26: ca06 ldmia r2, {r1, r2} - 800db28: f7ff ff9c bl 800da64 + 800db40: f107 0010 add.w r0, r7, #16 + 800db44: 69fb ldr r3, [r7, #28] + 800db46: 9300 str r3, [sp, #0] + 800db48: 69bb ldr r3, [r7, #24] + 800db4a: f107 0208 add.w r2, r7, #8 + 800db4e: ca06 ldmia r2, {r1, r2} + 800db50: f7ff ff9c bl 800da8c return sysTime; - 800db2c: 687b ldr r3, [r7, #4] - 800db2e: 461a mov r2, r3 - 800db30: f107 0310 add.w r3, r7, #16 - 800db34: e893 0003 ldmia.w r3, {r0, r1} - 800db38: e882 0003 stmia.w r2, {r0, r1} + 800db54: 687b ldr r3, [r7, #4] + 800db56: 461a mov r2, r3 + 800db58: f107 0310 add.w r3, r7, #16 + 800db5c: e893 0003 ldmia.w r3, {r0, r1} + 800db60: e882 0003 stmia.w r2, {r0, r1} } - 800db3c: 6878 ldr r0, [r7, #4] - 800db3e: 3720 adds r7, #32 - 800db40: 46bd mov sp, r7 - 800db42: bd80 pop {r7, pc} - 800db44: 08010378 .word 0x08010378 + 800db64: 6878 ldr r0, [r7, #4] + 800db66: 3720 adds r7, #32 + 800db68: 46bd mov sp, r7 + 800db6a: bd80 pop {r7, pc} + 800db6c: 080103a0 .word 0x080103a0 -0800db48 : +0800db70 : return sc - s; } #endif static int ee_skip_atoi(const char **s) { - 800db48: b480 push {r7} - 800db4a: b085 sub sp, #20 - 800db4c: af00 add r7, sp, #0 - 800db4e: 6078 str r0, [r7, #4] + 800db70: b480 push {r7} + 800db72: b085 sub sp, #20 + 800db74: af00 add r7, sp, #0 + 800db76: 6078 str r0, [r7, #4] int i = 0; - 800db50: 2300 movs r3, #0 - 800db52: 60fb str r3, [r7, #12] + 800db78: 2300 movs r3, #0 + 800db7a: 60fb str r3, [r7, #12] while (is_digit(**s)) i = i*10 + *((*s)++) - '0'; - 800db54: e00e b.n 800db74 - 800db56: 68fa ldr r2, [r7, #12] - 800db58: 4613 mov r3, r2 - 800db5a: 009b lsls r3, r3, #2 - 800db5c: 4413 add r3, r2 - 800db5e: 005b lsls r3, r3, #1 - 800db60: 4618 mov r0, r3 - 800db62: 687b ldr r3, [r7, #4] - 800db64: 681b ldr r3, [r3, #0] - 800db66: 1c59 adds r1, r3, #1 - 800db68: 687a ldr r2, [r7, #4] - 800db6a: 6011 str r1, [r2, #0] - 800db6c: 781b ldrb r3, [r3, #0] - 800db6e: 4403 add r3, r0 - 800db70: 3b30 subs r3, #48 @ 0x30 - 800db72: 60fb str r3, [r7, #12] - 800db74: 687b ldr r3, [r7, #4] - 800db76: 681b ldr r3, [r3, #0] - 800db78: 781b ldrb r3, [r3, #0] - 800db7a: 2b2f cmp r3, #47 @ 0x2f - 800db7c: d904 bls.n 800db88 - 800db7e: 687b ldr r3, [r7, #4] - 800db80: 681b ldr r3, [r3, #0] - 800db82: 781b ldrb r3, [r3, #0] - 800db84: 2b39 cmp r3, #57 @ 0x39 - 800db86: d9e6 bls.n 800db56 + 800db7c: e00e b.n 800db9c + 800db7e: 68fa ldr r2, [r7, #12] + 800db80: 4613 mov r3, r2 + 800db82: 009b lsls r3, r3, #2 + 800db84: 4413 add r3, r2 + 800db86: 005b lsls r3, r3, #1 + 800db88: 4618 mov r0, r3 + 800db8a: 687b ldr r3, [r7, #4] + 800db8c: 681b ldr r3, [r3, #0] + 800db8e: 1c59 adds r1, r3, #1 + 800db90: 687a ldr r2, [r7, #4] + 800db92: 6011 str r1, [r2, #0] + 800db94: 781b ldrb r3, [r3, #0] + 800db96: 4403 add r3, r0 + 800db98: 3b30 subs r3, #48 @ 0x30 + 800db9a: 60fb str r3, [r7, #12] + 800db9c: 687b ldr r3, [r7, #4] + 800db9e: 681b ldr r3, [r3, #0] + 800dba0: 781b ldrb r3, [r3, #0] + 800dba2: 2b2f cmp r3, #47 @ 0x2f + 800dba4: d904 bls.n 800dbb0 + 800dba6: 687b ldr r3, [r7, #4] + 800dba8: 681b ldr r3, [r3, #0] + 800dbaa: 781b ldrb r3, [r3, #0] + 800dbac: 2b39 cmp r3, #57 @ 0x39 + 800dbae: d9e6 bls.n 800db7e return i; - 800db88: 68fb ldr r3, [r7, #12] + 800dbb0: 68fb ldr r3, [r7, #12] } - 800db8a: 4618 mov r0, r3 - 800db8c: 3714 adds r7, #20 - 800db8e: 46bd mov sp, r7 - 800db90: bc80 pop {r7} - 800db92: 4770 bx lr + 800dbb2: 4618 mov r0, r3 + 800dbb4: 3714 adds r7, #20 + 800dbb6: 46bd mov sp, r7 + 800dbb8: bc80 pop {r7} + 800dbba: 4770 bx lr -0800db94 : +0800dbbc : #define ASSIGN_STR(_c) do { *str++ = (_c); max_size--; if (max_size == 0) return str; } while (0) static char *ee_number(char *str, int max_size, long num, int base, int size, int precision, int type) { - 800db94: b480 push {r7} - 800db96: b099 sub sp, #100 @ 0x64 - 800db98: af00 add r7, sp, #0 - 800db9a: 60f8 str r0, [r7, #12] - 800db9c: 60b9 str r1, [r7, #8] - 800db9e: 607a str r2, [r7, #4] - 800dba0: 603b str r3, [r7, #0] + 800dbbc: b480 push {r7} + 800dbbe: b099 sub sp, #100 @ 0x64 + 800dbc0: af00 add r7, sp, #0 + 800dbc2: 60f8 str r0, [r7, #12] + 800dbc4: 60b9 str r1, [r7, #8] + 800dbc6: 607a str r2, [r7, #4] + 800dbc8: 603b str r3, [r7, #0] char c; char sign, tmp[66]; char *dig = lower_digits; - 800dba2: 4b71 ldr r3, [pc, #452] @ (800dd68 ) - 800dba4: 681b ldr r3, [r3, #0] - 800dba6: 65bb str r3, [r7, #88] @ 0x58 + 800dbca: 4b71 ldr r3, [pc, #452] @ (800dd90 ) + 800dbcc: 681b ldr r3, [r3, #0] + 800dbce: 65bb str r3, [r7, #88] @ 0x58 int i; if (type & UPPERCASE) dig = upper_digits; - 800dba8: 6f3b ldr r3, [r7, #112] @ 0x70 - 800dbaa: f003 0340 and.w r3, r3, #64 @ 0x40 - 800dbae: 2b00 cmp r3, #0 - 800dbb0: d002 beq.n 800dbb8 - 800dbb2: 4b6e ldr r3, [pc, #440] @ (800dd6c ) - 800dbb4: 681b ldr r3, [r3, #0] - 800dbb6: 65bb str r3, [r7, #88] @ 0x58 + 800dbd0: 6f3b ldr r3, [r7, #112] @ 0x70 + 800dbd2: f003 0340 and.w r3, r3, #64 @ 0x40 + 800dbd6: 2b00 cmp r3, #0 + 800dbd8: d002 beq.n 800dbe0 + 800dbda: 4b6e ldr r3, [pc, #440] @ (800dd94 ) + 800dbdc: 681b ldr r3, [r3, #0] + 800dbde: 65bb str r3, [r7, #88] @ 0x58 #ifdef TINY_PRINTF #else if (type & LEFT) type &= ~ZEROPAD; #endif if (base < 2 || base > 36) return 0; - 800dbb8: 683b ldr r3, [r7, #0] - 800dbba: 2b01 cmp r3, #1 - 800dbbc: dd02 ble.n 800dbc4 - 800dbbe: 683b ldr r3, [r7, #0] - 800dbc0: 2b24 cmp r3, #36 @ 0x24 - 800dbc2: dd01 ble.n 800dbc8 - 800dbc4: 2300 movs r3, #0 - 800dbc6: e0ca b.n 800dd5e + 800dbe0: 683b ldr r3, [r7, #0] + 800dbe2: 2b01 cmp r3, #1 + 800dbe4: dd02 ble.n 800dbec + 800dbe6: 683b ldr r3, [r7, #0] + 800dbe8: 2b24 cmp r3, #36 @ 0x24 + 800dbea: dd01 ble.n 800dbf0 + 800dbec: 2300 movs r3, #0 + 800dbee: e0ca b.n 800dd86 c = (type & ZEROPAD) ? '0' : ' '; - 800dbc8: 6f3b ldr r3, [r7, #112] @ 0x70 - 800dbca: f003 0301 and.w r3, r3, #1 - 800dbce: 2b00 cmp r3, #0 - 800dbd0: d001 beq.n 800dbd6 - 800dbd2: 2330 movs r3, #48 @ 0x30 - 800dbd4: e000 b.n 800dbd8 - 800dbd6: 2320 movs r3, #32 - 800dbd8: f887 3053 strb.w r3, [r7, #83] @ 0x53 + 800dbf0: 6f3b ldr r3, [r7, #112] @ 0x70 + 800dbf2: f003 0301 and.w r3, r3, #1 + 800dbf6: 2b00 cmp r3, #0 + 800dbf8: d001 beq.n 800dbfe + 800dbfa: 2330 movs r3, #48 @ 0x30 + 800dbfc: e000 b.n 800dc00 + 800dbfe: 2320 movs r3, #32 + 800dc00: f887 3053 strb.w r3, [r7, #83] @ 0x53 sign = 0; - 800dbdc: 2300 movs r3, #0 - 800dbde: f887 305f strb.w r3, [r7, #95] @ 0x5f + 800dc04: 2300 movs r3, #0 + 800dc06: f887 305f strb.w r3, [r7, #95] @ 0x5f if (type & SIGN) - 800dbe2: 6f3b ldr r3, [r7, #112] @ 0x70 - 800dbe4: f003 0302 and.w r3, r3, #2 - 800dbe8: 2b00 cmp r3, #0 - 800dbea: d00b beq.n 800dc04 + 800dc0a: 6f3b ldr r3, [r7, #112] @ 0x70 + 800dc0c: f003 0302 and.w r3, r3, #2 + 800dc10: 2b00 cmp r3, #0 + 800dc12: d00b beq.n 800dc2c { if (num < 0) - 800dbec: 687b ldr r3, [r7, #4] - 800dbee: 2b00 cmp r3, #0 - 800dbf0: da08 bge.n 800dc04 + 800dc14: 687b ldr r3, [r7, #4] + 800dc16: 2b00 cmp r3, #0 + 800dc18: da08 bge.n 800dc2c { sign = '-'; - 800dbf2: 232d movs r3, #45 @ 0x2d - 800dbf4: f887 305f strb.w r3, [r7, #95] @ 0x5f + 800dc1a: 232d movs r3, #45 @ 0x2d + 800dc1c: f887 305f strb.w r3, [r7, #95] @ 0x5f num = -num; - 800dbf8: 687b ldr r3, [r7, #4] - 800dbfa: 425b negs r3, r3 - 800dbfc: 607b str r3, [r7, #4] + 800dc20: 687b ldr r3, [r7, #4] + 800dc22: 425b negs r3, r3 + 800dc24: 607b str r3, [r7, #4] size--; - 800dbfe: 6ebb ldr r3, [r7, #104] @ 0x68 - 800dc00: 3b01 subs r3, #1 - 800dc02: 66bb str r3, [r7, #104] @ 0x68 + 800dc26: 6ebb ldr r3, [r7, #104] @ 0x68 + 800dc28: 3b01 subs r3, #1 + 800dc2a: 66bb str r3, [r7, #104] @ 0x68 else if (base == 8) size--; } #endif i = 0; - 800dc04: 2300 movs r3, #0 - 800dc06: 657b str r3, [r7, #84] @ 0x54 + 800dc2c: 2300 movs r3, #0 + 800dc2e: 657b str r3, [r7, #84] @ 0x54 if (num == 0) - 800dc08: 687b ldr r3, [r7, #4] - 800dc0a: 2b00 cmp r3, #0 - 800dc0c: d11e bne.n 800dc4c + 800dc30: 687b ldr r3, [r7, #4] + 800dc32: 2b00 cmp r3, #0 + 800dc34: d11e bne.n 800dc74 tmp[i++] = '0'; - 800dc0e: 6d7b ldr r3, [r7, #84] @ 0x54 - 800dc10: 1c5a adds r2, r3, #1 - 800dc12: 657a str r2, [r7, #84] @ 0x54 - 800dc14: 3360 adds r3, #96 @ 0x60 - 800dc16: 443b add r3, r7 - 800dc18: 2230 movs r2, #48 @ 0x30 - 800dc1a: f803 2c50 strb.w r2, [r3, #-80] - 800dc1e: e018 b.n 800dc52 + 800dc36: 6d7b ldr r3, [r7, #84] @ 0x54 + 800dc38: 1c5a adds r2, r3, #1 + 800dc3a: 657a str r2, [r7, #84] @ 0x54 + 800dc3c: 3360 adds r3, #96 @ 0x60 + 800dc3e: 443b add r3, r7 + 800dc40: 2230 movs r2, #48 @ 0x30 + 800dc42: f803 2c50 strb.w r2, [r3, #-80] + 800dc46: e018 b.n 800dc7a else { while (num != 0) { tmp[i++] = dig[((unsigned long) num) % (unsigned) base]; - 800dc20: 687b ldr r3, [r7, #4] - 800dc22: 683a ldr r2, [r7, #0] - 800dc24: fbb3 f1f2 udiv r1, r3, r2 - 800dc28: fb01 f202 mul.w r2, r1, r2 - 800dc2c: 1a9b subs r3, r3, r2 - 800dc2e: 6dba ldr r2, [r7, #88] @ 0x58 - 800dc30: 441a add r2, r3 - 800dc32: 6d7b ldr r3, [r7, #84] @ 0x54 - 800dc34: 1c59 adds r1, r3, #1 - 800dc36: 6579 str r1, [r7, #84] @ 0x54 - 800dc38: 7812 ldrb r2, [r2, #0] - 800dc3a: 3360 adds r3, #96 @ 0x60 - 800dc3c: 443b add r3, r7 - 800dc3e: f803 2c50 strb.w r2, [r3, #-80] + 800dc48: 687b ldr r3, [r7, #4] + 800dc4a: 683a ldr r2, [r7, #0] + 800dc4c: fbb3 f1f2 udiv r1, r3, r2 + 800dc50: fb01 f202 mul.w r2, r1, r2 + 800dc54: 1a9b subs r3, r3, r2 + 800dc56: 6dba ldr r2, [r7, #88] @ 0x58 + 800dc58: 441a add r2, r3 + 800dc5a: 6d7b ldr r3, [r7, #84] @ 0x54 + 800dc5c: 1c59 adds r1, r3, #1 + 800dc5e: 6579 str r1, [r7, #84] @ 0x54 + 800dc60: 7812 ldrb r2, [r2, #0] + 800dc62: 3360 adds r3, #96 @ 0x60 + 800dc64: 443b add r3, r7 + 800dc66: f803 2c50 strb.w r2, [r3, #-80] num = ((unsigned long) num) / (unsigned) base; - 800dc42: 687a ldr r2, [r7, #4] - 800dc44: 683b ldr r3, [r7, #0] - 800dc46: fbb2 f3f3 udiv r3, r2, r3 - 800dc4a: 607b str r3, [r7, #4] + 800dc6a: 687a ldr r2, [r7, #4] + 800dc6c: 683b ldr r3, [r7, #0] + 800dc6e: fbb2 f3f3 udiv r3, r2, r3 + 800dc72: 607b str r3, [r7, #4] while (num != 0) - 800dc4c: 687b ldr r3, [r7, #4] - 800dc4e: 2b00 cmp r3, #0 - 800dc50: d1e6 bne.n 800dc20 + 800dc74: 687b ldr r3, [r7, #4] + 800dc76: 2b00 cmp r3, #0 + 800dc78: d1e6 bne.n 800dc48 } } if (i > precision) precision = i; - 800dc52: 6d7a ldr r2, [r7, #84] @ 0x54 - 800dc54: 6efb ldr r3, [r7, #108] @ 0x6c - 800dc56: 429a cmp r2, r3 - 800dc58: dd01 ble.n 800dc5e - 800dc5a: 6d7b ldr r3, [r7, #84] @ 0x54 - 800dc5c: 66fb str r3, [r7, #108] @ 0x6c + 800dc7a: 6d7a ldr r2, [r7, #84] @ 0x54 + 800dc7c: 6efb ldr r3, [r7, #108] @ 0x6c + 800dc7e: 429a cmp r2, r3 + 800dc80: dd01 ble.n 800dc86 + 800dc82: 6d7b ldr r3, [r7, #84] @ 0x54 + 800dc84: 66fb str r3, [r7, #108] @ 0x6c size -= precision; - 800dc5e: 6eba ldr r2, [r7, #104] @ 0x68 - 800dc60: 6efb ldr r3, [r7, #108] @ 0x6c - 800dc62: 1ad3 subs r3, r2, r3 - 800dc64: 66bb str r3, [r7, #104] @ 0x68 + 800dc86: 6eba ldr r2, [r7, #104] @ 0x68 + 800dc88: 6efb ldr r3, [r7, #108] @ 0x6c + 800dc8a: 1ad3 subs r3, r2, r3 + 800dc8c: 66bb str r3, [r7, #104] @ 0x68 if (!(type & (ZEROPAD /* TINY option | LEFT */))) while (size-- > 0) ASSIGN_STR(' '); - 800dc66: 6f3b ldr r3, [r7, #112] @ 0x70 - 800dc68: f003 0301 and.w r3, r3, #1 - 800dc6c: 2b00 cmp r3, #0 - 800dc6e: d112 bne.n 800dc96 - 800dc70: e00c b.n 800dc8c - 800dc72: 68fb ldr r3, [r7, #12] - 800dc74: 1c5a adds r2, r3, #1 - 800dc76: 60fa str r2, [r7, #12] - 800dc78: 2220 movs r2, #32 - 800dc7a: 701a strb r2, [r3, #0] - 800dc7c: 68bb ldr r3, [r7, #8] - 800dc7e: 3b01 subs r3, #1 - 800dc80: 60bb str r3, [r7, #8] - 800dc82: 68bb ldr r3, [r7, #8] - 800dc84: 2b00 cmp r3, #0 - 800dc86: d101 bne.n 800dc8c - 800dc88: 68fb ldr r3, [r7, #12] - 800dc8a: e068 b.n 800dd5e - 800dc8c: 6ebb ldr r3, [r7, #104] @ 0x68 - 800dc8e: 1e5a subs r2, r3, #1 - 800dc90: 66ba str r2, [r7, #104] @ 0x68 - 800dc92: 2b00 cmp r3, #0 - 800dc94: dced bgt.n 800dc72 - if (sign) ASSIGN_STR(sign); - 800dc96: f897 305f ldrb.w r3, [r7, #95] @ 0x5f - 800dc9a: 2b00 cmp r3, #0 - 800dc9c: d01b beq.n 800dcd6 - 800dc9e: 68fb ldr r3, [r7, #12] - 800dca0: 1c5a adds r2, r3, #1 - 800dca2: 60fa str r2, [r7, #12] - 800dca4: f897 205f ldrb.w r2, [r7, #95] @ 0x5f - 800dca8: 701a strb r2, [r3, #0] + 800dc8e: 6f3b ldr r3, [r7, #112] @ 0x70 + 800dc90: f003 0301 and.w r3, r3, #1 + 800dc94: 2b00 cmp r3, #0 + 800dc96: d112 bne.n 800dcbe + 800dc98: e00c b.n 800dcb4 + 800dc9a: 68fb ldr r3, [r7, #12] + 800dc9c: 1c5a adds r2, r3, #1 + 800dc9e: 60fa str r2, [r7, #12] + 800dca0: 2220 movs r2, #32 + 800dca2: 701a strb r2, [r3, #0] + 800dca4: 68bb ldr r3, [r7, #8] + 800dca6: 3b01 subs r3, #1 + 800dca8: 60bb str r3, [r7, #8] 800dcaa: 68bb ldr r3, [r7, #8] - 800dcac: 3b01 subs r3, #1 - 800dcae: 60bb str r3, [r7, #8] - 800dcb0: 68bb ldr r3, [r7, #8] - 800dcb2: 2b00 cmp r3, #0 - 800dcb4: d10f bne.n 800dcd6 - 800dcb6: 68fb ldr r3, [r7, #12] - 800dcb8: e051 b.n 800dd5e + 800dcac: 2b00 cmp r3, #0 + 800dcae: d101 bne.n 800dcb4 + 800dcb0: 68fb ldr r3, [r7, #12] + 800dcb2: e068 b.n 800dd86 + 800dcb4: 6ebb ldr r3, [r7, #104] @ 0x68 + 800dcb6: 1e5a subs r2, r3, #1 + 800dcb8: 66ba str r2, [r7, #104] @ 0x68 + 800dcba: 2b00 cmp r3, #0 + 800dcbc: dced bgt.n 800dc9a + if (sign) ASSIGN_STR(sign); + 800dcbe: f897 305f ldrb.w r3, [r7, #95] @ 0x5f + 800dcc2: 2b00 cmp r3, #0 + 800dcc4: d01b beq.n 800dcfe + 800dcc6: 68fb ldr r3, [r7, #12] + 800dcc8: 1c5a adds r2, r3, #1 + 800dcca: 60fa str r2, [r7, #12] + 800dccc: f897 205f ldrb.w r2, [r7, #95] @ 0x5f + 800dcd0: 701a strb r2, [r3, #0] + 800dcd2: 68bb ldr r3, [r7, #8] + 800dcd4: 3b01 subs r3, #1 + 800dcd6: 60bb str r3, [r7, #8] + 800dcd8: 68bb ldr r3, [r7, #8] + 800dcda: 2b00 cmp r3, #0 + 800dcdc: d10f bne.n 800dcfe + 800dcde: 68fb ldr r3, [r7, #12] + 800dce0: e051 b.n 800dd86 } } #endif #ifdef TINY_PRINTF while (size-- > 0) ASSIGN_STR(c); - 800dcba: 68fb ldr r3, [r7, #12] - 800dcbc: 1c5a adds r2, r3, #1 - 800dcbe: 60fa str r2, [r7, #12] - 800dcc0: f897 2053 ldrb.w r2, [r7, #83] @ 0x53 - 800dcc4: 701a strb r2, [r3, #0] - 800dcc6: 68bb ldr r3, [r7, #8] - 800dcc8: 3b01 subs r3, #1 - 800dcca: 60bb str r3, [r7, #8] - 800dccc: 68bb ldr r3, [r7, #8] - 800dcce: 2b00 cmp r3, #0 - 800dcd0: d101 bne.n 800dcd6 - 800dcd2: 68fb ldr r3, [r7, #12] - 800dcd4: e043 b.n 800dd5e - 800dcd6: 6ebb ldr r3, [r7, #104] @ 0x68 - 800dcd8: 1e5a subs r2, r3, #1 - 800dcda: 66ba str r2, [r7, #104] @ 0x68 - 800dcdc: 2b00 cmp r3, #0 - 800dcde: dcec bgt.n 800dcba + 800dce2: 68fb ldr r3, [r7, #12] + 800dce4: 1c5a adds r2, r3, #1 + 800dce6: 60fa str r2, [r7, #12] + 800dce8: f897 2053 ldrb.w r2, [r7, #83] @ 0x53 + 800dcec: 701a strb r2, [r3, #0] + 800dcee: 68bb ldr r3, [r7, #8] + 800dcf0: 3b01 subs r3, #1 + 800dcf2: 60bb str r3, [r7, #8] + 800dcf4: 68bb ldr r3, [r7, #8] + 800dcf6: 2b00 cmp r3, #0 + 800dcf8: d101 bne.n 800dcfe + 800dcfa: 68fb ldr r3, [r7, #12] + 800dcfc: e043 b.n 800dd86 + 800dcfe: 6ebb ldr r3, [r7, #104] @ 0x68 + 800dd00: 1e5a subs r2, r3, #1 + 800dd02: 66ba str r2, [r7, #104] @ 0x68 + 800dd04: 2b00 cmp r3, #0 + 800dd06: dcec bgt.n 800dce2 #else if (!(type & LEFT)) while (size-- > 0) ASSIGN_STR(c); #endif while (i < precision--) ASSIGN_STR('0'); - 800dce0: e00c b.n 800dcfc - 800dce2: 68fb ldr r3, [r7, #12] - 800dce4: 1c5a adds r2, r3, #1 - 800dce6: 60fa str r2, [r7, #12] - 800dce8: 2230 movs r2, #48 @ 0x30 - 800dcea: 701a strb r2, [r3, #0] - 800dcec: 68bb ldr r3, [r7, #8] - 800dcee: 3b01 subs r3, #1 - 800dcf0: 60bb str r3, [r7, #8] - 800dcf2: 68bb ldr r3, [r7, #8] - 800dcf4: 2b00 cmp r3, #0 - 800dcf6: d101 bne.n 800dcfc - 800dcf8: 68fb ldr r3, [r7, #12] - 800dcfa: e030 b.n 800dd5e - 800dcfc: 6efb ldr r3, [r7, #108] @ 0x6c - 800dcfe: 1e5a subs r2, r3, #1 - 800dd00: 66fa str r2, [r7, #108] @ 0x6c - 800dd02: 6d7a ldr r2, [r7, #84] @ 0x54 - 800dd04: 429a cmp r2, r3 - 800dd06: dbec blt.n 800dce2 - while (i-- > 0) ASSIGN_STR(tmp[i]); - 800dd08: e010 b.n 800dd2c + 800dd08: e00c b.n 800dd24 800dd0a: 68fb ldr r3, [r7, #12] 800dd0c: 1c5a adds r2, r3, #1 800dd0e: 60fa str r2, [r7, #12] - 800dd10: f107 0110 add.w r1, r7, #16 - 800dd14: 6d7a ldr r2, [r7, #84] @ 0x54 - 800dd16: 440a add r2, r1 - 800dd18: 7812 ldrb r2, [r2, #0] - 800dd1a: 701a strb r2, [r3, #0] - 800dd1c: 68bb ldr r3, [r7, #8] - 800dd1e: 3b01 subs r3, #1 - 800dd20: 60bb str r3, [r7, #8] - 800dd22: 68bb ldr r3, [r7, #8] - 800dd24: 2b00 cmp r3, #0 - 800dd26: d101 bne.n 800dd2c - 800dd28: 68fb ldr r3, [r7, #12] - 800dd2a: e018 b.n 800dd5e - 800dd2c: 6d7b ldr r3, [r7, #84] @ 0x54 - 800dd2e: 1e5a subs r2, r3, #1 - 800dd30: 657a str r2, [r7, #84] @ 0x54 - 800dd32: 2b00 cmp r3, #0 - 800dd34: dce9 bgt.n 800dd0a + 800dd10: 2230 movs r2, #48 @ 0x30 + 800dd12: 701a strb r2, [r3, #0] + 800dd14: 68bb ldr r3, [r7, #8] + 800dd16: 3b01 subs r3, #1 + 800dd18: 60bb str r3, [r7, #8] + 800dd1a: 68bb ldr r3, [r7, #8] + 800dd1c: 2b00 cmp r3, #0 + 800dd1e: d101 bne.n 800dd24 + 800dd20: 68fb ldr r3, [r7, #12] + 800dd22: e030 b.n 800dd86 + 800dd24: 6efb ldr r3, [r7, #108] @ 0x6c + 800dd26: 1e5a subs r2, r3, #1 + 800dd28: 66fa str r2, [r7, #108] @ 0x6c + 800dd2a: 6d7a ldr r2, [r7, #84] @ 0x54 + 800dd2c: 429a cmp r2, r3 + 800dd2e: dbec blt.n 800dd0a + while (i-- > 0) ASSIGN_STR(tmp[i]); + 800dd30: e010 b.n 800dd54 + 800dd32: 68fb ldr r3, [r7, #12] + 800dd34: 1c5a adds r2, r3, #1 + 800dd36: 60fa str r2, [r7, #12] + 800dd38: f107 0110 add.w r1, r7, #16 + 800dd3c: 6d7a ldr r2, [r7, #84] @ 0x54 + 800dd3e: 440a add r2, r1 + 800dd40: 7812 ldrb r2, [r2, #0] + 800dd42: 701a strb r2, [r3, #0] + 800dd44: 68bb ldr r3, [r7, #8] + 800dd46: 3b01 subs r3, #1 + 800dd48: 60bb str r3, [r7, #8] + 800dd4a: 68bb ldr r3, [r7, #8] + 800dd4c: 2b00 cmp r3, #0 + 800dd4e: d101 bne.n 800dd54 + 800dd50: 68fb ldr r3, [r7, #12] + 800dd52: e018 b.n 800dd86 + 800dd54: 6d7b ldr r3, [r7, #84] @ 0x54 + 800dd56: 1e5a subs r2, r3, #1 + 800dd58: 657a str r2, [r7, #84] @ 0x54 + 800dd5a: 2b00 cmp r3, #0 + 800dd5c: dce9 bgt.n 800dd32 while (size-- > 0) ASSIGN_STR(' '); - 800dd36: e00c b.n 800dd52 - 800dd38: 68fb ldr r3, [r7, #12] - 800dd3a: 1c5a adds r2, r3, #1 - 800dd3c: 60fa str r2, [r7, #12] - 800dd3e: 2220 movs r2, #32 - 800dd40: 701a strb r2, [r3, #0] - 800dd42: 68bb ldr r3, [r7, #8] - 800dd44: 3b01 subs r3, #1 - 800dd46: 60bb str r3, [r7, #8] - 800dd48: 68bb ldr r3, [r7, #8] - 800dd4a: 2b00 cmp r3, #0 - 800dd4c: d101 bne.n 800dd52 - 800dd4e: 68fb ldr r3, [r7, #12] - 800dd50: e005 b.n 800dd5e - 800dd52: 6ebb ldr r3, [r7, #104] @ 0x68 - 800dd54: 1e5a subs r2, r3, #1 - 800dd56: 66ba str r2, [r7, #104] @ 0x68 - 800dd58: 2b00 cmp r3, #0 - 800dd5a: dced bgt.n 800dd38 + 800dd5e: e00c b.n 800dd7a + 800dd60: 68fb ldr r3, [r7, #12] + 800dd62: 1c5a adds r2, r3, #1 + 800dd64: 60fa str r2, [r7, #12] + 800dd66: 2220 movs r2, #32 + 800dd68: 701a strb r2, [r3, #0] + 800dd6a: 68bb ldr r3, [r7, #8] + 800dd6c: 3b01 subs r3, #1 + 800dd6e: 60bb str r3, [r7, #8] + 800dd70: 68bb ldr r3, [r7, #8] + 800dd72: 2b00 cmp r3, #0 + 800dd74: d101 bne.n 800dd7a + 800dd76: 68fb ldr r3, [r7, #12] + 800dd78: e005 b.n 800dd86 + 800dd7a: 6ebb ldr r3, [r7, #104] @ 0x68 + 800dd7c: 1e5a subs r2, r3, #1 + 800dd7e: 66ba str r2, [r7, #104] @ 0x68 + 800dd80: 2b00 cmp r3, #0 + 800dd82: dced bgt.n 800dd60 return str; - 800dd5c: 68fb ldr r3, [r7, #12] + 800dd84: 68fb ldr r3, [r7, #12] } - 800dd5e: 4618 mov r0, r3 - 800dd60: 3764 adds r7, #100 @ 0x64 - 800dd62: 46bd mov sp, r7 - 800dd64: bc80 pop {r7} - 800dd66: 4770 bx lr - 800dd68: 2000000c .word 0x2000000c - 800dd6c: 20000010 .word 0x20000010 + 800dd86: 4618 mov r0, r3 + 800dd88: 3764 adds r7, #100 @ 0x64 + 800dd8a: 46bd mov sp, r7 + 800dd8c: bc80 pop {r7} + 800dd8e: 4770 bx lr + 800dd90: 2000000c .word 0x2000000c + 800dd94: 20000010 .word 0x20000010 -0800dd70 : +0800dd98 : #define CHECK_STR_SIZE(_buf, _str, _size) \ if ((((_str) - (_buf)) >= ((_size)-1))) { break; } int tiny_vsnprintf_like(char *buf, const int size, const char *fmt, va_list args) { - 800dd70: b580 push {r7, lr} - 800dd72: b092 sub sp, #72 @ 0x48 - 800dd74: af04 add r7, sp, #16 - 800dd76: 60f8 str r0, [r7, #12] - 800dd78: 60b9 str r1, [r7, #8] - 800dd7a: 607a str r2, [r7, #4] - 800dd7c: 603b str r3, [r7, #0] + 800dd98: b580 push {r7, lr} + 800dd9a: b092 sub sp, #72 @ 0x48 + 800dd9c: af04 add r7, sp, #16 + 800dd9e: 60f8 str r0, [r7, #12] + 800dda0: 60b9 str r1, [r7, #8] + 800dda2: 607a str r2, [r7, #4] + 800dda4: 603b str r3, [r7, #0] int field_width; // Width of output field int precision; // Min. # of digits for integers; max number of chars for from string int qualifier; // 'h', 'l', or 'L' for integer fields if (size <= 0) - 800dd7e: 68bb ldr r3, [r7, #8] - 800dd80: 2b00 cmp r3, #0 - 800dd82: dc01 bgt.n 800dd88 + 800dda6: 68bb ldr r3, [r7, #8] + 800dda8: 2b00 cmp r3, #0 + 800ddaa: dc01 bgt.n 800ddb0 { return 0; - 800dd84: 2300 movs r3, #0 - 800dd86: e13e b.n 800e006 + 800ddac: 2300 movs r3, #0 + 800ddae: e13e b.n 800e02e } for (str = buf; *fmt || ((str - buf) >= size-1); fmt++) - 800dd88: 68fb ldr r3, [r7, #12] - 800dd8a: 62fb str r3, [r7, #44] @ 0x2c - 800dd8c: e128 b.n 800dfe0 + 800ddb0: 68fb ldr r3, [r7, #12] + 800ddb2: 62fb str r3, [r7, #44] @ 0x2c + 800ddb4: e128 b.n 800e008 { CHECK_STR_SIZE(buf, str, size); - 800dd8e: 6afa ldr r2, [r7, #44] @ 0x2c - 800dd90: 68fb ldr r3, [r7, #12] - 800dd92: 1ad2 subs r2, r2, r3 - 800dd94: 68bb ldr r3, [r7, #8] - 800dd96: 3b01 subs r3, #1 - 800dd98: 429a cmp r2, r3 - 800dd9a: f280 812e bge.w 800dffa + 800ddb6: 6afa ldr r2, [r7, #44] @ 0x2c + 800ddb8: 68fb ldr r3, [r7, #12] + 800ddba: 1ad2 subs r2, r2, r3 + 800ddbc: 68bb ldr r3, [r7, #8] + 800ddbe: 3b01 subs r3, #1 + 800ddc0: 429a cmp r2, r3 + 800ddc2: f280 812e bge.w 800e022 if (*fmt != '%') - 800dd9e: 687b ldr r3, [r7, #4] - 800dda0: 781b ldrb r3, [r3, #0] - 800dda2: 2b25 cmp r3, #37 @ 0x25 - 800dda4: d006 beq.n 800ddb4 + 800ddc6: 687b ldr r3, [r7, #4] + 800ddc8: 781b ldrb r3, [r3, #0] + 800ddca: 2b25 cmp r3, #37 @ 0x25 + 800ddcc: d006 beq.n 800dddc { *str++ = *fmt; - 800dda6: 687a ldr r2, [r7, #4] - 800dda8: 6afb ldr r3, [r7, #44] @ 0x2c - 800ddaa: 1c59 adds r1, r3, #1 - 800ddac: 62f9 str r1, [r7, #44] @ 0x2c - 800ddae: 7812 ldrb r2, [r2, #0] - 800ddb0: 701a strb r2, [r3, #0] + 800ddce: 687a ldr r2, [r7, #4] + 800ddd0: 6afb ldr r3, [r7, #44] @ 0x2c + 800ddd2: 1c59 adds r1, r3, #1 + 800ddd4: 62f9 str r1, [r7, #44] @ 0x2c + 800ddd6: 7812 ldrb r2, [r2, #0] + 800ddd8: 701a strb r2, [r3, #0] continue; - 800ddb2: e112 b.n 800dfda + 800ddda: e112 b.n 800e002 } // Process flags flags = 0; - 800ddb4: 2300 movs r3, #0 - 800ddb6: 623b str r3, [r7, #32] + 800dddc: 2300 movs r3, #0 + 800ddde: 623b str r3, [r7, #32] #ifdef TINY_PRINTF /* Support %0, but not %-, %+, %space and %# */ fmt++; - 800ddb8: 687b ldr r3, [r7, #4] - 800ddba: 3301 adds r3, #1 - 800ddbc: 607b str r3, [r7, #4] + 800dde0: 687b ldr r3, [r7, #4] + 800dde2: 3301 adds r3, #1 + 800dde4: 607b str r3, [r7, #4] if (*fmt == '0') - 800ddbe: 687b ldr r3, [r7, #4] - 800ddc0: 781b ldrb r3, [r3, #0] - 800ddc2: 2b30 cmp r3, #48 @ 0x30 - 800ddc4: d103 bne.n 800ddce + 800dde6: 687b ldr r3, [r7, #4] + 800dde8: 781b ldrb r3, [r3, #0] + 800ddea: 2b30 cmp r3, #48 @ 0x30 + 800ddec: d103 bne.n 800ddf6 { flags |= ZEROPAD; - 800ddc6: 6a3b ldr r3, [r7, #32] - 800ddc8: f043 0301 orr.w r3, r3, #1 - 800ddcc: 623b str r3, [r7, #32] + 800ddee: 6a3b ldr r3, [r7, #32] + 800ddf0: f043 0301 orr.w r3, r3, #1 + 800ddf4: 623b str r3, [r7, #32] case '0': flags |= ZEROPAD; goto repeat; } #endif // Get field width field_width = -1; - 800ddce: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff - 800ddd2: 61fb str r3, [r7, #28] + 800ddf6: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff + 800ddfa: 61fb str r3, [r7, #28] if (is_digit(*fmt)) - 800ddd4: 687b ldr r3, [r7, #4] - 800ddd6: 781b ldrb r3, [r3, #0] - 800ddd8: 2b2f cmp r3, #47 @ 0x2f - 800ddda: d908 bls.n 800ddee - 800dddc: 687b ldr r3, [r7, #4] - 800ddde: 781b ldrb r3, [r3, #0] - 800dde0: 2b39 cmp r3, #57 @ 0x39 - 800dde2: d804 bhi.n 800ddee + 800ddfc: 687b ldr r3, [r7, #4] + 800ddfe: 781b ldrb r3, [r3, #0] + 800de00: 2b2f cmp r3, #47 @ 0x2f + 800de02: d908 bls.n 800de16 + 800de04: 687b ldr r3, [r7, #4] + 800de06: 781b ldrb r3, [r3, #0] + 800de08: 2b39 cmp r3, #57 @ 0x39 + 800de0a: d804 bhi.n 800de16 field_width = ee_skip_atoi(&fmt); - 800dde4: 1d3b adds r3, r7, #4 - 800dde6: 4618 mov r0, r3 - 800dde8: f7ff feae bl 800db48 - 800ddec: 61f8 str r0, [r7, #28] + 800de0c: 1d3b adds r3, r7, #4 + 800de0e: 4618 mov r0, r3 + 800de10: f7ff feae bl 800db70 + 800de14: 61f8 str r0, [r7, #28] } } #endif // Get the precision precision = -1; - 800ddee: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff - 800ddf2: 61bb str r3, [r7, #24] + 800de16: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff + 800de1a: 61bb str r3, [r7, #24] if (precision < 0) precision = 0; } #endif // Get the conversion qualifier qualifier = -1; - 800ddf4: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff - 800ddf8: 617b str r3, [r7, #20] + 800de1c: f04f 33ff mov.w r3, #4294967295 @ 0xffffffff + 800de20: 617b str r3, [r7, #20] fmt++; } #endif // Default base base = 10; - 800ddfa: 230a movs r3, #10 - 800ddfc: 633b str r3, [r7, #48] @ 0x30 + 800de22: 230a movs r3, #10 + 800de24: 633b str r3, [r7, #48] @ 0x30 switch (*fmt) - 800ddfe: 687b ldr r3, [r7, #4] - 800de00: 781b ldrb r3, [r3, #0] - 800de02: 3b58 subs r3, #88 @ 0x58 - 800de04: 2b20 cmp r3, #32 - 800de06: f200 8094 bhi.w 800df32 - 800de0a: a201 add r2, pc, #4 @ (adr r2, 800de10 ) - 800de0c: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 800de10: 0800df1b .word 0x0800df1b - 800de14: 0800df33 .word 0x0800df33 - 800de18: 0800df33 .word 0x0800df33 - 800de1c: 0800df33 .word 0x0800df33 - 800de20: 0800df33 .word 0x0800df33 - 800de24: 0800df33 .word 0x0800df33 - 800de28: 0800df33 .word 0x0800df33 - 800de2c: 0800df33 .word 0x0800df33 - 800de30: 0800df33 .word 0x0800df33 - 800de34: 0800df33 .word 0x0800df33 - 800de38: 0800df33 .word 0x0800df33 - 800de3c: 0800de9f .word 0x0800de9f - 800de40: 0800df29 .word 0x0800df29 - 800de44: 0800df33 .word 0x0800df33 - 800de48: 0800df33 .word 0x0800df33 - 800de4c: 0800df33 .word 0x0800df33 - 800de50: 0800df33 .word 0x0800df33 - 800de54: 0800df29 .word 0x0800df29 - 800de58: 0800df33 .word 0x0800df33 - 800de5c: 0800df33 .word 0x0800df33 - 800de60: 0800df33 .word 0x0800df33 - 800de64: 0800df33 .word 0x0800df33 - 800de68: 0800df33 .word 0x0800df33 - 800de6c: 0800df33 .word 0x0800df33 - 800de70: 0800df33 .word 0x0800df33 - 800de74: 0800df33 .word 0x0800df33 - 800de78: 0800df33 .word 0x0800df33 - 800de7c: 0800debf .word 0x0800debf - 800de80: 0800df33 .word 0x0800df33 - 800de84: 0800df7f .word 0x0800df7f - 800de88: 0800df33 .word 0x0800df33 - 800de8c: 0800df33 .word 0x0800df33 - 800de90: 0800df23 .word 0x0800df23 + 800de26: 687b ldr r3, [r7, #4] + 800de28: 781b ldrb r3, [r3, #0] + 800de2a: 3b58 subs r3, #88 @ 0x58 + 800de2c: 2b20 cmp r3, #32 + 800de2e: f200 8094 bhi.w 800df5a + 800de32: a201 add r2, pc, #4 @ (adr r2, 800de38 ) + 800de34: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800de38: 0800df43 .word 0x0800df43 + 800de3c: 0800df5b .word 0x0800df5b + 800de40: 0800df5b .word 0x0800df5b + 800de44: 0800df5b .word 0x0800df5b + 800de48: 0800df5b .word 0x0800df5b + 800de4c: 0800df5b .word 0x0800df5b + 800de50: 0800df5b .word 0x0800df5b + 800de54: 0800df5b .word 0x0800df5b + 800de58: 0800df5b .word 0x0800df5b + 800de5c: 0800df5b .word 0x0800df5b + 800de60: 0800df5b .word 0x0800df5b + 800de64: 0800dec7 .word 0x0800dec7 + 800de68: 0800df51 .word 0x0800df51 + 800de6c: 0800df5b .word 0x0800df5b + 800de70: 0800df5b .word 0x0800df5b + 800de74: 0800df5b .word 0x0800df5b + 800de78: 0800df5b .word 0x0800df5b + 800de7c: 0800df51 .word 0x0800df51 + 800de80: 0800df5b .word 0x0800df5b + 800de84: 0800df5b .word 0x0800df5b + 800de88: 0800df5b .word 0x0800df5b + 800de8c: 0800df5b .word 0x0800df5b + 800de90: 0800df5b .word 0x0800df5b + 800de94: 0800df5b .word 0x0800df5b + 800de98: 0800df5b .word 0x0800df5b + 800de9c: 0800df5b .word 0x0800df5b + 800dea0: 0800df5b .word 0x0800df5b + 800dea4: 0800dee7 .word 0x0800dee7 + 800dea8: 0800df5b .word 0x0800df5b + 800deac: 0800dfa7 .word 0x0800dfa7 + 800deb0: 0800df5b .word 0x0800df5b + 800deb4: 0800df5b .word 0x0800df5b + 800deb8: 0800df4b .word 0x0800df4b case 'c': #ifdef TINY_PRINTF #else if (!(flags & LEFT)) #endif while (--field_width > 0) *str++ = ' '; - 800de94: 6afb ldr r3, [r7, #44] @ 0x2c - 800de96: 1c5a adds r2, r3, #1 - 800de98: 62fa str r2, [r7, #44] @ 0x2c - 800de9a: 2220 movs r2, #32 - 800de9c: 701a strb r2, [r3, #0] - 800de9e: 69fb ldr r3, [r7, #28] - 800dea0: 3b01 subs r3, #1 - 800dea2: 61fb str r3, [r7, #28] - 800dea4: 69fb ldr r3, [r7, #28] - 800dea6: 2b00 cmp r3, #0 - 800dea8: dcf4 bgt.n 800de94 + 800debc: 6afb ldr r3, [r7, #44] @ 0x2c + 800debe: 1c5a adds r2, r3, #1 + 800dec0: 62fa str r2, [r7, #44] @ 0x2c + 800dec2: 2220 movs r2, #32 + 800dec4: 701a strb r2, [r3, #0] + 800dec6: 69fb ldr r3, [r7, #28] + 800dec8: 3b01 subs r3, #1 + 800deca: 61fb str r3, [r7, #28] + 800decc: 69fb ldr r3, [r7, #28] + 800dece: 2b00 cmp r3, #0 + 800ded0: dcf4 bgt.n 800debc *str++ = (unsigned char) va_arg(args, int); - 800deaa: 683b ldr r3, [r7, #0] - 800deac: 1d1a adds r2, r3, #4 - 800deae: 603a str r2, [r7, #0] - 800deb0: 6819 ldr r1, [r3, #0] - 800deb2: 6afb ldr r3, [r7, #44] @ 0x2c - 800deb4: 1c5a adds r2, r3, #1 - 800deb6: 62fa str r2, [r7, #44] @ 0x2c - 800deb8: b2ca uxtb r2, r1 - 800deba: 701a strb r2, [r3, #0] + 800ded2: 683b ldr r3, [r7, #0] + 800ded4: 1d1a adds r2, r3, #4 + 800ded6: 603a str r2, [r7, #0] + 800ded8: 6819 ldr r1, [r3, #0] + 800deda: 6afb ldr r3, [r7, #44] @ 0x2c + 800dedc: 1c5a adds r2, r3, #1 + 800dede: 62fa str r2, [r7, #44] @ 0x2c + 800dee0: b2ca uxtb r2, r1 + 800dee2: 701a strb r2, [r3, #0] #ifdef TINY_PRINTF #else while (--field_width > 0) *str++ = ' '; #endif continue; - 800debc: e08d b.n 800dfda + 800dee4: e08d b.n 800e002 case 's': s = va_arg(args, char *); - 800debe: 683b ldr r3, [r7, #0] - 800dec0: 1d1a adds r2, r3, #4 - 800dec2: 603a str r2, [r7, #0] - 800dec4: 681b ldr r3, [r3, #0] - 800dec6: 627b str r3, [r7, #36] @ 0x24 + 800dee6: 683b ldr r3, [r7, #0] + 800dee8: 1d1a adds r2, r3, #4 + 800deea: 603a str r2, [r7, #0] + 800deec: 681b ldr r3, [r3, #0] + 800deee: 627b str r3, [r7, #36] @ 0x24 if (!s) s = ""; - 800dec8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800deca: 2b00 cmp r3, #0 - 800decc: d101 bne.n 800ded2 - 800dece: 4b50 ldr r3, [pc, #320] @ (800e010 ) - 800ded0: 627b str r3, [r7, #36] @ 0x24 + 800def0: 6a7b ldr r3, [r7, #36] @ 0x24 + 800def2: 2b00 cmp r3, #0 + 800def4: d101 bne.n 800defa + 800def6: 4b50 ldr r3, [pc, #320] @ (800e038 ) + 800def8: 627b str r3, [r7, #36] @ 0x24 #ifdef TINY_PRINTF len = strlen(s); - 800ded2: 6a78 ldr r0, [r7, #36] @ 0x24 - 800ded4: f7f2 f95e bl 8000194 - 800ded8: 4603 mov r3, r0 - 800deda: 613b str r3, [r7, #16] + 800defa: 6a78 ldr r0, [r7, #36] @ 0x24 + 800defc: f7f2 f94a bl 8000194 + 800df00: 4603 mov r3, r0 + 800df02: 613b str r3, [r7, #16] #else len = strnlen(s, precision); if (!(flags & LEFT)) #endif while (len < field_width--) *str++ = ' '; - 800dedc: e004 b.n 800dee8 - 800dede: 6afb ldr r3, [r7, #44] @ 0x2c - 800dee0: 1c5a adds r2, r3, #1 - 800dee2: 62fa str r2, [r7, #44] @ 0x2c - 800dee4: 2220 movs r2, #32 - 800dee6: 701a strb r2, [r3, #0] - 800dee8: 69fb ldr r3, [r7, #28] - 800deea: 1e5a subs r2, r3, #1 - 800deec: 61fa str r2, [r7, #28] - 800deee: 693a ldr r2, [r7, #16] - 800def0: 429a cmp r2, r3 - 800def2: dbf4 blt.n 800dede + 800df04: e004 b.n 800df10 + 800df06: 6afb ldr r3, [r7, #44] @ 0x2c + 800df08: 1c5a adds r2, r3, #1 + 800df0a: 62fa str r2, [r7, #44] @ 0x2c + 800df0c: 2220 movs r2, #32 + 800df0e: 701a strb r2, [r3, #0] + 800df10: 69fb ldr r3, [r7, #28] + 800df12: 1e5a subs r2, r3, #1 + 800df14: 61fa str r2, [r7, #28] + 800df16: 693a ldr r2, [r7, #16] + 800df18: 429a cmp r2, r3 + 800df1a: dbf4 blt.n 800df06 for (i = 0; i < len; ++i) *str++ = *s++; - 800def4: 2300 movs r3, #0 - 800def6: 62bb str r3, [r7, #40] @ 0x28 - 800def8: e00a b.n 800df10 - 800defa: 6a7a ldr r2, [r7, #36] @ 0x24 - 800defc: 1c53 adds r3, r2, #1 - 800defe: 627b str r3, [r7, #36] @ 0x24 - 800df00: 6afb ldr r3, [r7, #44] @ 0x2c - 800df02: 1c59 adds r1, r3, #1 - 800df04: 62f9 str r1, [r7, #44] @ 0x2c - 800df06: 7812 ldrb r2, [r2, #0] - 800df08: 701a strb r2, [r3, #0] - 800df0a: 6abb ldr r3, [r7, #40] @ 0x28 - 800df0c: 3301 adds r3, #1 - 800df0e: 62bb str r3, [r7, #40] @ 0x28 - 800df10: 6aba ldr r2, [r7, #40] @ 0x28 - 800df12: 693b ldr r3, [r7, #16] - 800df14: 429a cmp r2, r3 - 800df16: dbf0 blt.n 800defa + 800df1c: 2300 movs r3, #0 + 800df1e: 62bb str r3, [r7, #40] @ 0x28 + 800df20: e00a b.n 800df38 + 800df22: 6a7a ldr r2, [r7, #36] @ 0x24 + 800df24: 1c53 adds r3, r2, #1 + 800df26: 627b str r3, [r7, #36] @ 0x24 + 800df28: 6afb ldr r3, [r7, #44] @ 0x2c + 800df2a: 1c59 adds r1, r3, #1 + 800df2c: 62f9 str r1, [r7, #44] @ 0x2c + 800df2e: 7812 ldrb r2, [r2, #0] + 800df30: 701a strb r2, [r3, #0] + 800df32: 6abb ldr r3, [r7, #40] @ 0x28 + 800df34: 3301 adds r3, #1 + 800df36: 62bb str r3, [r7, #40] @ 0x28 + 800df38: 6aba ldr r2, [r7, #40] @ 0x28 + 800df3a: 693b ldr r3, [r7, #16] + 800df3c: 429a cmp r2, r3 + 800df3e: dbf0 blt.n 800df22 #ifdef TINY_PRINTF #else while (len < field_width--) *str++ = ' '; #endif continue; - 800df18: e05f b.n 800dfda + 800df40: e05f b.n 800e002 base = 8; break; #endif case 'X': flags |= UPPERCASE; - 800df1a: 6a3b ldr r3, [r7, #32] - 800df1c: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800df20: 623b str r3, [r7, #32] + 800df42: 6a3b ldr r3, [r7, #32] + 800df44: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800df48: 623b str r3, [r7, #32] case 'x': base = 16; - 800df22: 2310 movs r3, #16 - 800df24: 633b str r3, [r7, #48] @ 0x30 + 800df4a: 2310 movs r3, #16 + 800df4c: 633b str r3, [r7, #48] @ 0x30 break; - 800df26: e02b b.n 800df80 + 800df4e: e02b b.n 800dfa8 case 'd': case 'i': flags |= SIGN; - 800df28: 6a3b ldr r3, [r7, #32] - 800df2a: f043 0302 orr.w r3, r3, #2 - 800df2e: 623b str r3, [r7, #32] + 800df50: 6a3b ldr r3, [r7, #32] + 800df52: f043 0302 orr.w r3, r3, #2 + 800df56: 623b str r3, [r7, #32] case 'u': break; - 800df30: e025 b.n 800df7e + 800df58: e025 b.n 800dfa6 continue; #endif default: if (*fmt != '%') *str++ = '%'; - 800df32: 687b ldr r3, [r7, #4] - 800df34: 781b ldrb r3, [r3, #0] - 800df36: 2b25 cmp r3, #37 @ 0x25 - 800df38: d004 beq.n 800df44 - 800df3a: 6afb ldr r3, [r7, #44] @ 0x2c - 800df3c: 1c5a adds r2, r3, #1 - 800df3e: 62fa str r2, [r7, #44] @ 0x2c - 800df40: 2225 movs r2, #37 @ 0x25 - 800df42: 701a strb r2, [r3, #0] + 800df5a: 687b ldr r3, [r7, #4] + 800df5c: 781b ldrb r3, [r3, #0] + 800df5e: 2b25 cmp r3, #37 @ 0x25 + 800df60: d004 beq.n 800df6c + 800df62: 6afb ldr r3, [r7, #44] @ 0x2c + 800df64: 1c5a adds r2, r3, #1 + 800df66: 62fa str r2, [r7, #44] @ 0x2c + 800df68: 2225 movs r2, #37 @ 0x25 + 800df6a: 701a strb r2, [r3, #0] CHECK_STR_SIZE(buf, str, size); - 800df44: 6afa ldr r2, [r7, #44] @ 0x2c - 800df46: 68fb ldr r3, [r7, #12] - 800df48: 1ad2 subs r2, r2, r3 - 800df4a: 68bb ldr r3, [r7, #8] - 800df4c: 3b01 subs r3, #1 - 800df4e: 429a cmp r2, r3 - 800df50: da16 bge.n 800df80 + 800df6c: 6afa ldr r2, [r7, #44] @ 0x2c + 800df6e: 68fb ldr r3, [r7, #12] + 800df70: 1ad2 subs r2, r2, r3 + 800df72: 68bb ldr r3, [r7, #8] + 800df74: 3b01 subs r3, #1 + 800df76: 429a cmp r2, r3 + 800df78: da16 bge.n 800dfa8 if (*fmt) - 800df52: 687b ldr r3, [r7, #4] - 800df54: 781b ldrb r3, [r3, #0] - 800df56: 2b00 cmp r3, #0 - 800df58: d006 beq.n 800df68 + 800df7a: 687b ldr r3, [r7, #4] + 800df7c: 781b ldrb r3, [r3, #0] + 800df7e: 2b00 cmp r3, #0 + 800df80: d006 beq.n 800df90 *str++ = *fmt; - 800df5a: 687a ldr r2, [r7, #4] - 800df5c: 6afb ldr r3, [r7, #44] @ 0x2c - 800df5e: 1c59 adds r1, r3, #1 - 800df60: 62f9 str r1, [r7, #44] @ 0x2c - 800df62: 7812 ldrb r2, [r2, #0] - 800df64: 701a strb r2, [r3, #0] - 800df66: e002 b.n 800df6e + 800df82: 687a ldr r2, [r7, #4] + 800df84: 6afb ldr r3, [r7, #44] @ 0x2c + 800df86: 1c59 adds r1, r3, #1 + 800df88: 62f9 str r1, [r7, #44] @ 0x2c + 800df8a: 7812 ldrb r2, [r2, #0] + 800df8c: 701a strb r2, [r3, #0] + 800df8e: e002 b.n 800df96 else --fmt; - 800df68: 687b ldr r3, [r7, #4] - 800df6a: 3b01 subs r3, #1 - 800df6c: 607b str r3, [r7, #4] + 800df90: 687b ldr r3, [r7, #4] + 800df92: 3b01 subs r3, #1 + 800df94: 607b str r3, [r7, #4] CHECK_STR_SIZE(buf, str, size); - 800df6e: 6afa ldr r2, [r7, #44] @ 0x2c - 800df70: 68fb ldr r3, [r7, #12] - 800df72: 1ad2 subs r2, r2, r3 - 800df74: 68bb ldr r3, [r7, #8] - 800df76: 3b01 subs r3, #1 - 800df78: 429a cmp r2, r3 - 800df7a: db2d blt.n 800dfd8 - 800df7c: e000 b.n 800df80 + 800df96: 6afa ldr r2, [r7, #44] @ 0x2c + 800df98: 68fb ldr r3, [r7, #12] + 800df9a: 1ad2 subs r2, r2, r3 + 800df9c: 68bb ldr r3, [r7, #8] + 800df9e: 3b01 subs r3, #1 + 800dfa0: 429a cmp r2, r3 + 800dfa2: db2d blt.n 800e000 + 800dfa4: e000 b.n 800dfa8 break; - 800df7e: bf00 nop + 800dfa6: bf00 nop continue; } if (qualifier == 'l') - 800df80: 697b ldr r3, [r7, #20] - 800df82: 2b6c cmp r3, #108 @ 0x6c - 800df84: d105 bne.n 800df92 + 800dfa8: 697b ldr r3, [r7, #20] + 800dfaa: 2b6c cmp r3, #108 @ 0x6c + 800dfac: d105 bne.n 800dfba num = va_arg(args, unsigned long); - 800df86: 683b ldr r3, [r7, #0] - 800df88: 1d1a adds r2, r3, #4 - 800df8a: 603a str r2, [r7, #0] - 800df8c: 681b ldr r3, [r3, #0] - 800df8e: 637b str r3, [r7, #52] @ 0x34 - 800df90: e00f b.n 800dfb2 + 800dfae: 683b ldr r3, [r7, #0] + 800dfb0: 1d1a adds r2, r3, #4 + 800dfb2: 603a str r2, [r7, #0] + 800dfb4: 681b ldr r3, [r3, #0] + 800dfb6: 637b str r3, [r7, #52] @ 0x34 + 800dfb8: e00f b.n 800dfda else if (flags & SIGN) - 800df92: 6a3b ldr r3, [r7, #32] - 800df94: f003 0302 and.w r3, r3, #2 - 800df98: 2b00 cmp r3, #0 - 800df9a: d005 beq.n 800dfa8 + 800dfba: 6a3b ldr r3, [r7, #32] + 800dfbc: f003 0302 and.w r3, r3, #2 + 800dfc0: 2b00 cmp r3, #0 + 800dfc2: d005 beq.n 800dfd0 num = va_arg(args, int); - 800df9c: 683b ldr r3, [r7, #0] - 800df9e: 1d1a adds r2, r3, #4 - 800dfa0: 603a str r2, [r7, #0] - 800dfa2: 681b ldr r3, [r3, #0] - 800dfa4: 637b str r3, [r7, #52] @ 0x34 - 800dfa6: e004 b.n 800dfb2 + 800dfc4: 683b ldr r3, [r7, #0] + 800dfc6: 1d1a adds r2, r3, #4 + 800dfc8: 603a str r2, [r7, #0] + 800dfca: 681b ldr r3, [r3, #0] + 800dfcc: 637b str r3, [r7, #52] @ 0x34 + 800dfce: e004 b.n 800dfda else num = va_arg(args, unsigned int); - 800dfa8: 683b ldr r3, [r7, #0] - 800dfaa: 1d1a adds r2, r3, #4 - 800dfac: 603a str r2, [r7, #0] - 800dfae: 681b ldr r3, [r3, #0] - 800dfb0: 637b str r3, [r7, #52] @ 0x34 + 800dfd0: 683b ldr r3, [r7, #0] + 800dfd2: 1d1a adds r2, r3, #4 + 800dfd4: 603a str r2, [r7, #0] + 800dfd6: 681b ldr r3, [r3, #0] + 800dfd8: 637b str r3, [r7, #52] @ 0x34 str = ee_number(str, ((size - 1) - (str - buf)), num, base, field_width, precision, flags); - 800dfb2: 68bb ldr r3, [r7, #8] - 800dfb4: 1e5a subs r2, r3, #1 - 800dfb6: 6af9 ldr r1, [r7, #44] @ 0x2c - 800dfb8: 68fb ldr r3, [r7, #12] - 800dfba: 1acb subs r3, r1, r3 - 800dfbc: 1ad1 subs r1, r2, r3 - 800dfbe: 6b7a ldr r2, [r7, #52] @ 0x34 - 800dfc0: 6a3b ldr r3, [r7, #32] - 800dfc2: 9302 str r3, [sp, #8] - 800dfc4: 69bb ldr r3, [r7, #24] - 800dfc6: 9301 str r3, [sp, #4] - 800dfc8: 69fb ldr r3, [r7, #28] - 800dfca: 9300 str r3, [sp, #0] - 800dfcc: 6b3b ldr r3, [r7, #48] @ 0x30 - 800dfce: 6af8 ldr r0, [r7, #44] @ 0x2c - 800dfd0: f7ff fde0 bl 800db94 - 800dfd4: 62f8 str r0, [r7, #44] @ 0x2c - 800dfd6: e000 b.n 800dfda + 800dfda: 68bb ldr r3, [r7, #8] + 800dfdc: 1e5a subs r2, r3, #1 + 800dfde: 6af9 ldr r1, [r7, #44] @ 0x2c + 800dfe0: 68fb ldr r3, [r7, #12] + 800dfe2: 1acb subs r3, r1, r3 + 800dfe4: 1ad1 subs r1, r2, r3 + 800dfe6: 6b7a ldr r2, [r7, #52] @ 0x34 + 800dfe8: 6a3b ldr r3, [r7, #32] + 800dfea: 9302 str r3, [sp, #8] + 800dfec: 69bb ldr r3, [r7, #24] + 800dfee: 9301 str r3, [sp, #4] + 800dff0: 69fb ldr r3, [r7, #28] + 800dff2: 9300 str r3, [sp, #0] + 800dff4: 6b3b ldr r3, [r7, #48] @ 0x30 + 800dff6: 6af8 ldr r0, [r7, #44] @ 0x2c + 800dff8: f7ff fde0 bl 800dbbc + 800dffc: 62f8 str r0, [r7, #44] @ 0x2c + 800dffe: e000 b.n 800e002 continue; - 800dfd8: bf00 nop + 800e000: bf00 nop for (str = buf; *fmt || ((str - buf) >= size-1); fmt++) - 800dfda: 687b ldr r3, [r7, #4] - 800dfdc: 3301 adds r3, #1 - 800dfde: 607b str r3, [r7, #4] - 800dfe0: 687b ldr r3, [r7, #4] - 800dfe2: 781b ldrb r3, [r3, #0] - 800dfe4: 2b00 cmp r3, #0 - 800dfe6: f47f aed2 bne.w 800dd8e - 800dfea: 6afa ldr r2, [r7, #44] @ 0x2c - 800dfec: 68fb ldr r3, [r7, #12] - 800dfee: 1ad2 subs r2, r2, r3 - 800dff0: 68bb ldr r3, [r7, #8] - 800dff2: 3b01 subs r3, #1 - 800dff4: 429a cmp r2, r3 - 800dff6: f6bf aeca bge.w 800dd8e + 800e002: 687b ldr r3, [r7, #4] + 800e004: 3301 adds r3, #1 + 800e006: 607b str r3, [r7, #4] + 800e008: 687b ldr r3, [r7, #4] + 800e00a: 781b ldrb r3, [r3, #0] + 800e00c: 2b00 cmp r3, #0 + 800e00e: f47f aed2 bne.w 800ddb6 + 800e012: 6afa ldr r2, [r7, #44] @ 0x2c + 800e014: 68fb ldr r3, [r7, #12] + 800e016: 1ad2 subs r2, r2, r3 + 800e018: 68bb ldr r3, [r7, #8] + 800e01a: 3b01 subs r3, #1 + 800e01c: 429a cmp r2, r3 + 800e01e: f6bf aeca bge.w 800ddb6 } *str = '\0'; - 800dffa: 6afb ldr r3, [r7, #44] @ 0x2c - 800dffc: 2200 movs r2, #0 - 800dffe: 701a strb r2, [r3, #0] + 800e022: 6afb ldr r3, [r7, #44] @ 0x2c + 800e024: 2200 movs r2, #0 + 800e026: 701a strb r2, [r3, #0] return str - buf; - 800e000: 6afa ldr r2, [r7, #44] @ 0x2c - 800e002: 68fb ldr r3, [r7, #12] - 800e004: 1ad3 subs r3, r2, r3 + 800e028: 6afa ldr r2, [r7, #44] @ 0x2c + 800e02a: 68fb ldr r3, [r7, #12] + 800e02c: 1ad3 subs r3, r2, r3 } - 800e006: 4618 mov r0, r3 - 800e008: 3738 adds r7, #56 @ 0x38 - 800e00a: 46bd mov sp, r7 - 800e00c: bd80 pop {r7, pc} - 800e00e: bf00 nop - 800e010: 0801028c .word 0x0801028c + 800e02e: 4618 mov r0, r3 + 800e030: 3738 adds r7, #56 @ 0x38 + 800e032: 46bd mov sp, r7 + 800e034: bd80 pop {r7, pc} + 800e036: bf00 nop + 800e038: 080102b4 .word 0x080102b4 -0800e014 : +0800e03c : * That is the reason why many variables that are used only in that function are declared static. * Note: These variables could have been declared static in the function. * */ void UTIL_SEQ_Run( UTIL_SEQ_bm_t Mask_bm ) { - 800e014: b580 push {r7, lr} - 800e016: b090 sub sp, #64 @ 0x40 - 800e018: af00 add r7, sp, #0 - 800e01a: 6078 str r0, [r7, #4] + 800e03c: b580 push {r7, lr} + 800e03e: b090 sub sp, #64 @ 0x40 + 800e040: af00 add r7, sp, #0 + 800e042: 6078 str r0, [r7, #4] /* * When this function is nested, the mask to be applied cannot be larger than the first call * The mask is always getting smaller and smaller * A copy is made of the mask set by UTIL_SEQ_Run() in case it is called again in the task */ super_mask_backup = SuperMask; - 800e01c: 4b73 ldr r3, [pc, #460] @ (800e1ec ) - 800e01e: 681b ldr r3, [r3, #0] - 800e020: 62bb str r3, [r7, #40] @ 0x28 + 800e044: 4b73 ldr r3, [pc, #460] @ (800e214 ) + 800e046: 681b ldr r3, [r3, #0] + 800e048: 62bb str r3, [r7, #40] @ 0x28 SuperMask &= Mask_bm; - 800e022: 4b72 ldr r3, [pc, #456] @ (800e1ec ) - 800e024: 681a ldr r2, [r3, #0] - 800e026: 687b ldr r3, [r7, #4] - 800e028: 4013 ands r3, r2 - 800e02a: 4a70 ldr r2, [pc, #448] @ (800e1ec ) - 800e02c: 6013 str r3, [r2, #0] + 800e04a: 4b72 ldr r3, [pc, #456] @ (800e214 ) + 800e04c: 681a ldr r2, [r3, #0] + 800e04e: 687b ldr r3, [r7, #4] + 800e050: 4013 ands r3, r2 + 800e052: 4a70 ldr r2, [pc, #448] @ (800e214 ) + 800e054: 6013 str r3, [r2, #0] * TaskMask that comes from UTIL_SEQ_PauseTask() / UTIL_SEQ_ResumeTask * SuperMask that comes from UTIL_SEQ_Run * If the waited event is there, exit from UTIL_SEQ_Run() to return to the * waiting task */ local_taskset = TaskSet; - 800e02e: 4b70 ldr r3, [pc, #448] @ (800e1f0 ) - 800e030: 681b ldr r3, [r3, #0] - 800e032: 63bb str r3, [r7, #56] @ 0x38 + 800e056: 4b70 ldr r3, [pc, #448] @ (800e218 ) + 800e058: 681b ldr r3, [r3, #0] + 800e05a: 63bb str r3, [r7, #56] @ 0x38 local_evtset = EvtSet; - 800e034: 4b6f ldr r3, [pc, #444] @ (800e1f4 ) - 800e036: 681b ldr r3, [r3, #0] - 800e038: 637b str r3, [r7, #52] @ 0x34 + 800e05c: 4b6f ldr r3, [pc, #444] @ (800e21c ) + 800e05e: 681b ldr r3, [r3, #0] + 800e060: 637b str r3, [r7, #52] @ 0x34 local_taskmask = TaskMask; - 800e03a: 4b6f ldr r3, [pc, #444] @ (800e1f8 ) - 800e03c: 681b ldr r3, [r3, #0] - 800e03e: 633b str r3, [r7, #48] @ 0x30 + 800e062: 4b6f ldr r3, [pc, #444] @ (800e220 ) + 800e064: 681b ldr r3, [r3, #0] + 800e066: 633b str r3, [r7, #48] @ 0x30 local_evtwaited = EvtWaited; - 800e040: 4b6e ldr r3, [pc, #440] @ (800e1fc ) - 800e042: 681b ldr r3, [r3, #0] - 800e044: 62fb str r3, [r7, #44] @ 0x2c + 800e068: 4b6e ldr r3, [pc, #440] @ (800e224 ) + 800e06a: 681b ldr r3, [r3, #0] + 800e06c: 62fb str r3, [r7, #44] @ 0x2c while(((local_taskset & local_taskmask & SuperMask) != 0U) && ((local_evtset & local_evtwaited)==0U)) - 800e046: e08d b.n 800e164 + 800e06e: e08d b.n 800e18c { counter = 0U; - 800e048: 2300 movs r3, #0 - 800e04a: 63fb str r3, [r7, #60] @ 0x3c + 800e070: 2300 movs r3, #0 + 800e072: 63fb str r3, [r7, #60] @ 0x3c /* * When a flag is set, the associated bit is set in TaskPrio[counter].priority mask depending * on the priority parameter given from UTIL_SEQ_SetTask() * The while loop is looking for a flag set from the highest priority maskr to the lower */ while((TaskPrio[counter].priority & local_taskmask & SuperMask)== 0U) - 800e04c: e002 b.n 800e054 + 800e074: e002 b.n 800e07c { counter++; - 800e04e: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e050: 3301 adds r3, #1 - 800e052: 63fb str r3, [r7, #60] @ 0x3c + 800e076: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e078: 3301 adds r3, #1 + 800e07a: 63fb str r3, [r7, #60] @ 0x3c while((TaskPrio[counter].priority & local_taskmask & SuperMask)== 0U) - 800e054: 4a6a ldr r2, [pc, #424] @ (800e200 ) - 800e056: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e058: f852 2033 ldr.w r2, [r2, r3, lsl #3] - 800e05c: 6b3b ldr r3, [r7, #48] @ 0x30 - 800e05e: 401a ands r2, r3 - 800e060: 4b62 ldr r3, [pc, #392] @ (800e1ec ) - 800e062: 681b ldr r3, [r3, #0] - 800e064: 4013 ands r3, r2 - 800e066: 2b00 cmp r3, #0 - 800e068: d0f1 beq.n 800e04e + 800e07c: 4a6a ldr r2, [pc, #424] @ (800e228 ) + 800e07e: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e080: f852 2033 ldr.w r2, [r2, r3, lsl #3] + 800e084: 6b3b ldr r3, [r7, #48] @ 0x30 + 800e086: 401a ands r2, r3 + 800e088: 4b62 ldr r3, [pc, #392] @ (800e214 ) + 800e08a: 681b ldr r3, [r3, #0] + 800e08c: 4013 ands r3, r2 + 800e08e: 2b00 cmp r3, #0 + 800e090: d0f1 beq.n 800e076 } current_task_set = TaskPrio[counter].priority & local_taskmask & SuperMask; - 800e06a: 4a65 ldr r2, [pc, #404] @ (800e200 ) - 800e06c: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e06e: f852 2033 ldr.w r2, [r2, r3, lsl #3] - 800e072: 6b3b ldr r3, [r7, #48] @ 0x30 - 800e074: 401a ands r2, r3 - 800e076: 4b5d ldr r3, [pc, #372] @ (800e1ec ) - 800e078: 681b ldr r3, [r3, #0] - 800e07a: 4013 ands r3, r2 - 800e07c: 627b str r3, [r7, #36] @ 0x24 + 800e092: 4a65 ldr r2, [pc, #404] @ (800e228 ) + 800e094: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e096: f852 2033 ldr.w r2, [r2, r3, lsl #3] + 800e09a: 6b3b ldr r3, [r7, #48] @ 0x30 + 800e09c: 401a ands r2, r3 + 800e09e: 4b5d ldr r3, [pc, #372] @ (800e214 ) + 800e0a0: 681b ldr r3, [r3, #0] + 800e0a2: 4013 ands r3, r2 + 800e0a4: 627b str r3, [r7, #36] @ 0x24 * so that the second one can be executed. * Note that the first flag is not removed from the list of pending task but just masked by the round_robin mask * * In the check below, the round_robin mask is reinitialize in case all pending tasks haven been executed at least once */ if ((TaskPrio[counter].round_robin & current_task_set) == 0U) - 800e07e: 4a60 ldr r2, [pc, #384] @ (800e200 ) - 800e080: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e082: 00db lsls r3, r3, #3 - 800e084: 4413 add r3, r2 - 800e086: 685a ldr r2, [r3, #4] - 800e088: 6a7b ldr r3, [r7, #36] @ 0x24 - 800e08a: 4013 ands r3, r2 - 800e08c: 2b00 cmp r3, #0 - 800e08e: d106 bne.n 800e09e + 800e0a6: 4a60 ldr r2, [pc, #384] @ (800e228 ) + 800e0a8: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e0aa: 00db lsls r3, r3, #3 + 800e0ac: 4413 add r3, r2 + 800e0ae: 685a ldr r2, [r3, #4] + 800e0b0: 6a7b ldr r3, [r7, #36] @ 0x24 + 800e0b2: 4013 ands r3, r2 + 800e0b4: 2b00 cmp r3, #0 + 800e0b6: d106 bne.n 800e0c6 { TaskPrio[counter].round_robin = UTIL_SEQ_ALL_BIT_SET; - 800e090: 4a5b ldr r2, [pc, #364] @ (800e200 ) - 800e092: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e094: 00db lsls r3, r3, #3 - 800e096: 4413 add r3, r2 - 800e098: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 800e09c: 605a str r2, [r3, #4] + 800e0b8: 4a5b ldr r2, [pc, #364] @ (800e228 ) + 800e0ba: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e0bc: 00db lsls r3, r3, #3 + 800e0be: 4413 add r3, r2 + 800e0c0: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800e0c4: 605a str r2, [r3, #4] /* * Read the flag index of the task to be executed * Once the index is read, the associated task will be executed even though a higher priority stack is requested * before task execution. */ CurrentTaskIdx = (SEQ_BitPosition(current_task_set & TaskPrio[counter].round_robin)); - 800e09e: 4a58 ldr r2, [pc, #352] @ (800e200 ) - 800e0a0: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e0a2: 00db lsls r3, r3, #3 - 800e0a4: 4413 add r3, r2 - 800e0a6: 685a ldr r2, [r3, #4] - 800e0a8: 6a7b ldr r3, [r7, #36] @ 0x24 - 800e0aa: 4013 ands r3, r2 - 800e0ac: 4618 mov r0, r3 - 800e0ae: f000 f8b9 bl 800e224 - 800e0b2: 4603 mov r3, r0 - 800e0b4: 461a mov r2, r3 - 800e0b6: 4b53 ldr r3, [pc, #332] @ (800e204 ) - 800e0b8: 601a str r2, [r3, #0] + 800e0c6: 4a58 ldr r2, [pc, #352] @ (800e228 ) + 800e0c8: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e0ca: 00db lsls r3, r3, #3 + 800e0cc: 4413 add r3, r2 + 800e0ce: 685a ldr r2, [r3, #4] + 800e0d0: 6a7b ldr r3, [r7, #36] @ 0x24 + 800e0d2: 4013 ands r3, r2 + 800e0d4: 4618 mov r0, r3 + 800e0d6: f000 f8b9 bl 800e24c + 800e0da: 4603 mov r3, r0 + 800e0dc: 461a mov r2, r3 + 800e0de: 4b53 ldr r3, [pc, #332] @ (800e22c ) + 800e0e0: 601a str r2, [r3, #0] /* * remove from the roun_robin mask the task that has been selected to be executed */ TaskPrio[counter].round_robin &= ~(1U << CurrentTaskIdx); - 800e0ba: 4a51 ldr r2, [pc, #324] @ (800e200 ) - 800e0bc: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e0be: 00db lsls r3, r3, #3 - 800e0c0: 4413 add r3, r2 - 800e0c2: 685a ldr r2, [r3, #4] - 800e0c4: 4b4f ldr r3, [pc, #316] @ (800e204 ) - 800e0c6: 681b ldr r3, [r3, #0] - 800e0c8: 2101 movs r1, #1 - 800e0ca: fa01 f303 lsl.w r3, r1, r3 - 800e0ce: 43db mvns r3, r3 - 800e0d0: 401a ands r2, r3 - 800e0d2: 494b ldr r1, [pc, #300] @ (800e200 ) - 800e0d4: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e0d6: 00db lsls r3, r3, #3 - 800e0d8: 440b add r3, r1 - 800e0da: 605a str r2, [r3, #4] + 800e0e2: 4a51 ldr r2, [pc, #324] @ (800e228 ) + 800e0e4: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e0e6: 00db lsls r3, r3, #3 + 800e0e8: 4413 add r3, r2 + 800e0ea: 685a ldr r2, [r3, #4] + 800e0ec: 4b4f ldr r3, [pc, #316] @ (800e22c ) + 800e0ee: 681b ldr r3, [r3, #0] + 800e0f0: 2101 movs r1, #1 + 800e0f2: fa01 f303 lsl.w r3, r1, r3 + 800e0f6: 43db mvns r3, r3 + 800e0f8: 401a ands r2, r3 + 800e0fa: 494b ldr r1, [pc, #300] @ (800e228 ) + 800e0fc: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e0fe: 00db lsls r3, r3, #3 + 800e100: 440b add r3, r1 + 800e102: 605a str r2, [r3, #4] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e0dc: f3ef 8310 mrs r3, PRIMASK - 800e0e0: 61bb str r3, [r7, #24] + 800e104: f3ef 8310 mrs r3, PRIMASK + 800e108: 61bb str r3, [r7, #24] return(result); - 800e0e2: 69bb ldr r3, [r7, #24] + 800e10a: 69bb ldr r3, [r7, #24] UTIL_SEQ_ENTER_CRITICAL_SECTION( ); - 800e0e4: 623b str r3, [r7, #32] + 800e10c: 623b str r3, [r7, #32] __ASM volatile ("cpsid i" : : : "memory"); - 800e0e6: b672 cpsid i + 800e10e: b672 cpsid i } - 800e0e8: bf00 nop + 800e110: bf00 nop /* remove from the list or pending task the one that has been selected to be executed */ TaskSet &= ~(1U << CurrentTaskIdx); - 800e0ea: 4b46 ldr r3, [pc, #280] @ (800e204 ) - 800e0ec: 681b ldr r3, [r3, #0] - 800e0ee: 2201 movs r2, #1 - 800e0f0: fa02 f303 lsl.w r3, r2, r3 - 800e0f4: 43da mvns r2, r3 - 800e0f6: 4b3e ldr r3, [pc, #248] @ (800e1f0 ) - 800e0f8: 681b ldr r3, [r3, #0] - 800e0fa: 4013 ands r3, r2 - 800e0fc: 4a3c ldr r2, [pc, #240] @ (800e1f0 ) - 800e0fe: 6013 str r3, [r2, #0] + 800e112: 4b46 ldr r3, [pc, #280] @ (800e22c ) + 800e114: 681b ldr r3, [r3, #0] + 800e116: 2201 movs r2, #1 + 800e118: fa02 f303 lsl.w r3, r2, r3 + 800e11c: 43da mvns r2, r3 + 800e11e: 4b3e ldr r3, [pc, #248] @ (800e218 ) + 800e120: 681b ldr r3, [r3, #0] + 800e122: 4013 ands r3, r2 + 800e124: 4a3c ldr r2, [pc, #240] @ (800e218 ) + 800e126: 6013 str r3, [r2, #0] /* remove from all priority mask the task that has been selected to be executed */ for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--) - 800e100: 2301 movs r3, #1 - 800e102: 63fb str r3, [r7, #60] @ 0x3c - 800e104: e013 b.n 800e12e + 800e128: 2301 movs r3, #1 + 800e12a: 63fb str r3, [r7, #60] @ 0x3c + 800e12c: e013 b.n 800e156 { TaskPrio[counter - 1U].priority &= ~(1U << CurrentTaskIdx); - 800e106: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e108: 3b01 subs r3, #1 - 800e10a: 4a3d ldr r2, [pc, #244] @ (800e200 ) - 800e10c: f852 1033 ldr.w r1, [r2, r3, lsl #3] - 800e110: 4b3c ldr r3, [pc, #240] @ (800e204 ) - 800e112: 681b ldr r3, [r3, #0] - 800e114: 2201 movs r2, #1 - 800e116: fa02 f303 lsl.w r3, r2, r3 - 800e11a: 43da mvns r2, r3 - 800e11c: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e11e: 3b01 subs r3, #1 - 800e120: 400a ands r2, r1 - 800e122: 4937 ldr r1, [pc, #220] @ (800e200 ) - 800e124: f841 2033 str.w r2, [r1, r3, lsl #3] - for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--) - 800e128: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e12a: 3b01 subs r3, #1 - 800e12c: 63fb str r3, [r7, #60] @ 0x3c 800e12e: 6bfb ldr r3, [r7, #60] @ 0x3c - 800e130: 2b00 cmp r3, #0 - 800e132: d1e8 bne.n 800e106 - 800e134: 6a3b ldr r3, [r7, #32] - 800e136: 617b str r3, [r7, #20] + 800e130: 3b01 subs r3, #1 + 800e132: 4a3d ldr r2, [pc, #244] @ (800e228 ) + 800e134: f852 1033 ldr.w r1, [r2, r3, lsl #3] + 800e138: 4b3c ldr r3, [pc, #240] @ (800e22c ) + 800e13a: 681b ldr r3, [r3, #0] + 800e13c: 2201 movs r2, #1 + 800e13e: fa02 f303 lsl.w r3, r2, r3 + 800e142: 43da mvns r2, r3 + 800e144: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e146: 3b01 subs r3, #1 + 800e148: 400a ands r2, r1 + 800e14a: 4937 ldr r1, [pc, #220] @ (800e228 ) + 800e14c: f841 2033 str.w r2, [r1, r3, lsl #3] + for (counter = UTIL_SEQ_CONF_PRIO_NBR; counter != 0U; counter--) + 800e150: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e152: 3b01 subs r3, #1 + 800e154: 63fb str r3, [r7, #60] @ 0x3c + 800e156: 6bfb ldr r3, [r7, #60] @ 0x3c + 800e158: 2b00 cmp r3, #0 + 800e15a: d1e8 bne.n 800e12e + 800e15c: 6a3b ldr r3, [r7, #32] + 800e15e: 617b str r3, [r7, #20] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e138: 697b ldr r3, [r7, #20] - 800e13a: f383 8810 msr PRIMASK, r3 + 800e160: 697b ldr r3, [r7, #20] + 800e162: f383 8810 msr PRIMASK, r3 } - 800e13e: bf00 nop + 800e166: bf00 nop } UTIL_SEQ_EXIT_CRITICAL_SECTION( ); /* Execute the task */ TaskCb[CurrentTaskIdx]( ); - 800e140: 4b30 ldr r3, [pc, #192] @ (800e204 ) - 800e142: 681b ldr r3, [r3, #0] - 800e144: 4a30 ldr r2, [pc, #192] @ (800e208 ) - 800e146: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 800e14a: 4798 blx r3 + 800e168: 4b30 ldr r3, [pc, #192] @ (800e22c ) + 800e16a: 681b ldr r3, [r3, #0] + 800e16c: 4a30 ldr r2, [pc, #192] @ (800e230 ) + 800e16e: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 800e172: 4798 blx r3 local_taskset = TaskSet; - 800e14c: 4b28 ldr r3, [pc, #160] @ (800e1f0 ) - 800e14e: 681b ldr r3, [r3, #0] - 800e150: 63bb str r3, [r7, #56] @ 0x38 + 800e174: 4b28 ldr r3, [pc, #160] @ (800e218 ) + 800e176: 681b ldr r3, [r3, #0] + 800e178: 63bb str r3, [r7, #56] @ 0x38 local_evtset = EvtSet; - 800e152: 4b28 ldr r3, [pc, #160] @ (800e1f4 ) - 800e154: 681b ldr r3, [r3, #0] - 800e156: 637b str r3, [r7, #52] @ 0x34 + 800e17a: 4b28 ldr r3, [pc, #160] @ (800e21c ) + 800e17c: 681b ldr r3, [r3, #0] + 800e17e: 637b str r3, [r7, #52] @ 0x34 local_taskmask = TaskMask; - 800e158: 4b27 ldr r3, [pc, #156] @ (800e1f8 ) - 800e15a: 681b ldr r3, [r3, #0] - 800e15c: 633b str r3, [r7, #48] @ 0x30 + 800e180: 4b27 ldr r3, [pc, #156] @ (800e220 ) + 800e182: 681b ldr r3, [r3, #0] + 800e184: 633b str r3, [r7, #48] @ 0x30 local_evtwaited = EvtWaited; - 800e15e: 4b27 ldr r3, [pc, #156] @ (800e1fc ) - 800e160: 681b ldr r3, [r3, #0] - 800e162: 62fb str r3, [r7, #44] @ 0x2c + 800e186: 4b27 ldr r3, [pc, #156] @ (800e224 ) + 800e188: 681b ldr r3, [r3, #0] + 800e18a: 62fb str r3, [r7, #44] @ 0x2c while(((local_taskset & local_taskmask & SuperMask) != 0U) && ((local_evtset & local_evtwaited)==0U)) - 800e164: 6bba ldr r2, [r7, #56] @ 0x38 - 800e166: 6b3b ldr r3, [r7, #48] @ 0x30 - 800e168: 401a ands r2, r3 - 800e16a: 4b20 ldr r3, [pc, #128] @ (800e1ec ) - 800e16c: 681b ldr r3, [r3, #0] - 800e16e: 4013 ands r3, r2 - 800e170: 2b00 cmp r3, #0 - 800e172: d005 beq.n 800e180 - 800e174: 6b7a ldr r2, [r7, #52] @ 0x34 - 800e176: 6afb ldr r3, [r7, #44] @ 0x2c - 800e178: 4013 ands r3, r2 - 800e17a: 2b00 cmp r3, #0 - 800e17c: f43f af64 beq.w 800e048 + 800e18c: 6bba ldr r2, [r7, #56] @ 0x38 + 800e18e: 6b3b ldr r3, [r7, #48] @ 0x30 + 800e190: 401a ands r2, r3 + 800e192: 4b20 ldr r3, [pc, #128] @ (800e214 ) + 800e194: 681b ldr r3, [r3, #0] + 800e196: 4013 ands r3, r2 + 800e198: 2b00 cmp r3, #0 + 800e19a: d005 beq.n 800e1a8 + 800e19c: 6b7a ldr r2, [r7, #52] @ 0x34 + 800e19e: 6afb ldr r3, [r7, #44] @ 0x2c + 800e1a0: 4013 ands r3, r2 + 800e1a2: 2b00 cmp r3, #0 + 800e1a4: f43f af64 beq.w 800e070 } /* the set of CurrentTaskIdx to no task running allows to call WaitEvt in the Pre/Post ilde context */ CurrentTaskIdx = UTIL_SEQ_NOTASKRUNNING; - 800e180: 4b20 ldr r3, [pc, #128] @ (800e204 ) - 800e182: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 800e186: 601a str r2, [r3, #0] + 800e1a8: 4b20 ldr r3, [pc, #128] @ (800e22c ) + 800e1aa: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800e1ae: 601a str r2, [r3, #0] UTIL_SEQ_PreIdle( ); - 800e188: f000 f840 bl 800e20c + 800e1b0: f000 f840 bl 800e234 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e18c: f3ef 8310 mrs r3, PRIMASK - 800e190: 613b str r3, [r7, #16] + 800e1b4: f3ef 8310 mrs r3, PRIMASK + 800e1b8: 613b str r3, [r7, #16] return(result); - 800e192: 693b ldr r3, [r7, #16] + 800e1ba: 693b ldr r3, [r7, #16] UTIL_SEQ_ENTER_CRITICAL_SECTION_IDLE( ); - 800e194: 61fb str r3, [r7, #28] + 800e1bc: 61fb str r3, [r7, #28] __ASM volatile ("cpsid i" : : : "memory"); - 800e196: b672 cpsid i + 800e1be: b672 cpsid i } - 800e198: bf00 nop + 800e1c0: bf00 nop local_taskset = TaskSet; - 800e19a: 4b15 ldr r3, [pc, #84] @ (800e1f0 ) - 800e19c: 681b ldr r3, [r3, #0] - 800e19e: 63bb str r3, [r7, #56] @ 0x38 + 800e1c2: 4b15 ldr r3, [pc, #84] @ (800e218 ) + 800e1c4: 681b ldr r3, [r3, #0] + 800e1c6: 63bb str r3, [r7, #56] @ 0x38 local_evtset = EvtSet; - 800e1a0: 4b14 ldr r3, [pc, #80] @ (800e1f4 ) - 800e1a2: 681b ldr r3, [r3, #0] - 800e1a4: 637b str r3, [r7, #52] @ 0x34 + 800e1c8: 4b14 ldr r3, [pc, #80] @ (800e21c ) + 800e1ca: 681b ldr r3, [r3, #0] + 800e1cc: 637b str r3, [r7, #52] @ 0x34 local_taskmask = TaskMask; - 800e1a6: 4b14 ldr r3, [pc, #80] @ (800e1f8 ) - 800e1a8: 681b ldr r3, [r3, #0] - 800e1aa: 633b str r3, [r7, #48] @ 0x30 + 800e1ce: 4b14 ldr r3, [pc, #80] @ (800e220 ) + 800e1d0: 681b ldr r3, [r3, #0] + 800e1d2: 633b str r3, [r7, #48] @ 0x30 if ((local_taskset & local_taskmask & SuperMask) == 0U) - 800e1ac: 6bba ldr r2, [r7, #56] @ 0x38 - 800e1ae: 6b3b ldr r3, [r7, #48] @ 0x30 - 800e1b0: 401a ands r2, r3 - 800e1b2: 4b0e ldr r3, [pc, #56] @ (800e1ec ) - 800e1b4: 681b ldr r3, [r3, #0] - 800e1b6: 4013 ands r3, r2 - 800e1b8: 2b00 cmp r3, #0 - 800e1ba: d107 bne.n 800e1cc + 800e1d4: 6bba ldr r2, [r7, #56] @ 0x38 + 800e1d6: 6b3b ldr r3, [r7, #48] @ 0x30 + 800e1d8: 401a ands r2, r3 + 800e1da: 4b0e ldr r3, [pc, #56] @ (800e214 ) + 800e1dc: 681b ldr r3, [r3, #0] + 800e1de: 4013 ands r3, r2 + 800e1e0: 2b00 cmp r3, #0 + 800e1e2: d107 bne.n 800e1f4 { if ((local_evtset & EvtWaited)== 0U) - 800e1bc: 4b0f ldr r3, [pc, #60] @ (800e1fc ) - 800e1be: 681a ldr r2, [r3, #0] - 800e1c0: 6b7b ldr r3, [r7, #52] @ 0x34 - 800e1c2: 4013 ands r3, r2 - 800e1c4: 2b00 cmp r3, #0 - 800e1c6: d101 bne.n 800e1cc + 800e1e4: 4b0f ldr r3, [pc, #60] @ (800e224 ) + 800e1e6: 681a ldr r2, [r3, #0] + 800e1e8: 6b7b ldr r3, [r7, #52] @ 0x34 + 800e1ea: 4013 ands r3, r2 + 800e1ec: 2b00 cmp r3, #0 + 800e1ee: d101 bne.n 800e1f4 { UTIL_SEQ_Idle( ); - 800e1c8: f7f2 fce8 bl 8000b9c - 800e1cc: 69fb ldr r3, [r7, #28] - 800e1ce: 60fb str r3, [r7, #12] + 800e1f0: f7f2 fcd4 bl 8000b9c + 800e1f4: 69fb ldr r3, [r7, #28] + 800e1f6: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e1d0: 68fb ldr r3, [r7, #12] - 800e1d2: f383 8810 msr PRIMASK, r3 + 800e1f8: 68fb ldr r3, [r7, #12] + 800e1fa: f383 8810 msr PRIMASK, r3 } - 800e1d6: bf00 nop + 800e1fe: bf00 nop } } UTIL_SEQ_EXIT_CRITICAL_SECTION_IDLE( ); UTIL_SEQ_PostIdle( ); - 800e1d8: f000 f81e bl 800e218 + 800e200: f000 f81e bl 800e240 /* restore the mask from UTIL_SEQ_Run() */ SuperMask = super_mask_backup; - 800e1dc: 4a03 ldr r2, [pc, #12] @ (800e1ec ) - 800e1de: 6abb ldr r3, [r7, #40] @ 0x28 - 800e1e0: 6013 str r3, [r2, #0] + 800e204: 4a03 ldr r2, [pc, #12] @ (800e214 ) + 800e206: 6abb ldr r3, [r7, #40] @ 0x28 + 800e208: 6013 str r3, [r2, #0] return; - 800e1e2: bf00 nop + 800e20a: bf00 nop } - 800e1e4: 3740 adds r7, #64 @ 0x40 - 800e1e6: 46bd mov sp, r7 - 800e1e8: bd80 pop {r7, pc} - 800e1ea: bf00 nop - 800e1ec: 20000018 .word 0x20000018 - 800e1f0: 20000c14 .word 0x20000c14 - 800e1f4: 20000c18 .word 0x20000c18 - 800e1f8: 20000014 .word 0x20000014 - 800e1fc: 20000c1c .word 0x20000c1c - 800e200: 20000c28 .word 0x20000c28 - 800e204: 20000c20 .word 0x20000c20 - 800e208: 20000c24 .word 0x20000c24 + 800e20c: 3740 adds r7, #64 @ 0x40 + 800e20e: 46bd mov sp, r7 + 800e210: bd80 pop {r7, pc} + 800e212: bf00 nop + 800e214: 20000018 .word 0x20000018 + 800e218: 20000c4c .word 0x20000c4c + 800e21c: 20000c50 .word 0x20000c50 + 800e220: 20000014 .word 0x20000014 + 800e224: 20000c54 .word 0x20000c54 + 800e228: 20000c60 .word 0x20000c60 + 800e22c: 20000c58 .word 0x20000c58 + 800e230: 20000c5c .word 0x20000c5c -0800e20c : +0800e234 : { return; } __WEAK void UTIL_SEQ_PreIdle( void ) { - 800e20c: b480 push {r7} - 800e20e: af00 add r7, sp, #0 + 800e234: b480 push {r7} + 800e236: af00 add r7, sp, #0 /* * Unless specified by the application, there is nothing to be done */ return; - 800e210: bf00 nop + 800e238: bf00 nop } - 800e212: 46bd mov sp, r7 - 800e214: bc80 pop {r7} - 800e216: 4770 bx lr + 800e23a: 46bd mov sp, r7 + 800e23c: bc80 pop {r7} + 800e23e: 4770 bx lr -0800e218 : +0800e240 : __WEAK void UTIL_SEQ_PostIdle( void ) { - 800e218: b480 push {r7} - 800e21a: af00 add r7, sp, #0 + 800e240: b480 push {r7} + 800e242: af00 add r7, sp, #0 /* * Unless specified by the application, there is nothing to be done */ return; - 800e21c: bf00 nop + 800e244: bf00 nop } - 800e21e: 46bd mov sp, r7 - 800e220: bc80 pop {r7} - 800e222: 4770 bx lr + 800e246: 46bd mov sp, r7 + 800e248: bc80 pop {r7} + 800e24a: 4770 bx lr -0800e224 : +0800e24c : * @brief return the position of the first bit set to 1 * @param Value 32 bit value * @retval bit position */ uint8_t SEQ_BitPosition(uint32_t Value) { - 800e224: b480 push {r7} - 800e226: b085 sub sp, #20 - 800e228: af00 add r7, sp, #0 - 800e22a: 6078 str r0, [r7, #4] + 800e24c: b480 push {r7} + 800e24e: b085 sub sp, #20 + 800e250: af00 add r7, sp, #0 + 800e252: 6078 str r0, [r7, #4] uint8_t n = 0U; - 800e22c: 2300 movs r3, #0 - 800e22e: 73fb strb r3, [r7, #15] + 800e254: 2300 movs r3, #0 + 800e256: 73fb strb r3, [r7, #15] uint32_t lvalue = Value; - 800e230: 687b ldr r3, [r7, #4] - 800e232: 60bb str r3, [r7, #8] + 800e258: 687b ldr r3, [r7, #4] + 800e25a: 60bb str r3, [r7, #8] if ((lvalue & 0xFFFF0000U) == 0U) { n = 16U; lvalue <<= 16U; } - 800e234: 68bb ldr r3, [r7, #8] - 800e236: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 - 800e23a: d204 bcs.n 800e246 - 800e23c: 2310 movs r3, #16 - 800e23e: 73fb strb r3, [r7, #15] - 800e240: 68bb ldr r3, [r7, #8] - 800e242: 041b lsls r3, r3, #16 - 800e244: 60bb str r3, [r7, #8] - if ((lvalue & 0xFF000000U) == 0U) { n += 8U; lvalue <<= 8U; } - 800e246: 68bb ldr r3, [r7, #8] - 800e248: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 - 800e24c: d205 bcs.n 800e25a - 800e24e: 7bfb ldrb r3, [r7, #15] - 800e250: 3308 adds r3, #8 - 800e252: 73fb strb r3, [r7, #15] - 800e254: 68bb ldr r3, [r7, #8] - 800e256: 021b lsls r3, r3, #8 - 800e258: 60bb str r3, [r7, #8] - if ((lvalue & 0xF0000000U) == 0U) { n += 4U; lvalue <<= 4U; } - 800e25a: 68bb ldr r3, [r7, #8] - 800e25c: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 - 800e260: d205 bcs.n 800e26e - 800e262: 7bfb ldrb r3, [r7, #15] - 800e264: 3304 adds r3, #4 + 800e25c: 68bb ldr r3, [r7, #8] + 800e25e: f5b3 3f80 cmp.w r3, #65536 @ 0x10000 + 800e262: d204 bcs.n 800e26e + 800e264: 2310 movs r3, #16 800e266: 73fb strb r3, [r7, #15] 800e268: 68bb ldr r3, [r7, #8] - 800e26a: 011b lsls r3, r3, #4 + 800e26a: 041b lsls r3, r3, #16 800e26c: 60bb str r3, [r7, #8] + if ((lvalue & 0xFF000000U) == 0U) { n += 8U; lvalue <<= 8U; } + 800e26e: 68bb ldr r3, [r7, #8] + 800e270: f1b3 7f80 cmp.w r3, #16777216 @ 0x1000000 + 800e274: d205 bcs.n 800e282 + 800e276: 7bfb ldrb r3, [r7, #15] + 800e278: 3308 adds r3, #8 + 800e27a: 73fb strb r3, [r7, #15] + 800e27c: 68bb ldr r3, [r7, #8] + 800e27e: 021b lsls r3, r3, #8 + 800e280: 60bb str r3, [r7, #8] + if ((lvalue & 0xF0000000U) == 0U) { n += 4U; lvalue <<= 4U; } + 800e282: 68bb ldr r3, [r7, #8] + 800e284: f1b3 5f80 cmp.w r3, #268435456 @ 0x10000000 + 800e288: d205 bcs.n 800e296 + 800e28a: 7bfb ldrb r3, [r7, #15] + 800e28c: 3304 adds r3, #4 + 800e28e: 73fb strb r3, [r7, #15] + 800e290: 68bb ldr r3, [r7, #8] + 800e292: 011b lsls r3, r3, #4 + 800e294: 60bb str r3, [r7, #8] n += SEQ_clz_table_4bit[lvalue >> (32-4)]; - 800e26e: 68bb ldr r3, [r7, #8] - 800e270: 0f1b lsrs r3, r3, #28 - 800e272: 4a07 ldr r2, [pc, #28] @ (800e290 ) - 800e274: 5cd2 ldrb r2, [r2, r3] - 800e276: 7bfb ldrb r3, [r7, #15] - 800e278: 4413 add r3, r2 - 800e27a: 73fb strb r3, [r7, #15] + 800e296: 68bb ldr r3, [r7, #8] + 800e298: 0f1b lsrs r3, r3, #28 + 800e29a: 4a07 ldr r2, [pc, #28] @ (800e2b8 ) + 800e29c: 5cd2 ldrb r2, [r2, r3] + 800e29e: 7bfb ldrb r3, [r7, #15] + 800e2a0: 4413 add r3, r2 + 800e2a2: 73fb strb r3, [r7, #15] return (uint8_t)(31U-n); - 800e27c: 7bfb ldrb r3, [r7, #15] - 800e27e: f1c3 031f rsb r3, r3, #31 - 800e282: b2db uxtb r3, r3 + 800e2a4: 7bfb ldrb r3, [r7, #15] + 800e2a6: f1c3 031f rsb r3, r3, #31 + 800e2aa: b2db uxtb r3, r3 } - 800e284: 4618 mov r0, r3 - 800e286: 3714 adds r7, #20 - 800e288: 46bd mov sp, r7 - 800e28a: bc80 pop {r7} - 800e28c: 4770 bx lr - 800e28e: bf00 nop - 800e290: 08010508 .word 0x08010508 + 800e2ac: 4618 mov r0, r3 + 800e2ae: 3714 adds r7, #20 + 800e2b0: 46bd mov sp, r7 + 800e2b2: bc80 pop {r7} + 800e2b4: 4770 bx lr + 800e2b6: bf00 nop + 800e2b8: 08010530 .word 0x08010530 -0800e294 : +0800e2bc : * @addtogroup TIMER_SERVER_exported_function * @{ */ UTIL_TIMER_Status_t UTIL_TIMER_Init(void) { - 800e294: b580 push {r7, lr} - 800e296: af00 add r7, sp, #0 + 800e2bc: b580 push {r7, lr} + 800e2be: af00 add r7, sp, #0 UTIL_TIMER_INIT_CRITICAL_SECTION(); TimerListHead = NULL; - 800e298: 4b04 ldr r3, [pc, #16] @ (800e2ac ) - 800e29a: 2200 movs r2, #0 - 800e29c: 601a str r2, [r3, #0] + 800e2c0: 4b04 ldr r3, [pc, #16] @ (800e2d4 ) + 800e2c2: 2200 movs r2, #0 + 800e2c4: 601a str r2, [r3, #0] return UTIL_TimerDriver.InitTimer(); - 800e29e: 4b04 ldr r3, [pc, #16] @ (800e2b0 ) - 800e2a0: 681b ldr r3, [r3, #0] - 800e2a2: 4798 blx r3 - 800e2a4: 4603 mov r3, r0 + 800e2c6: 4b04 ldr r3, [pc, #16] @ (800e2d8 ) + 800e2c8: 681b ldr r3, [r3, #0] + 800e2ca: 4798 blx r3 + 800e2cc: 4603 mov r3, r0 } - 800e2a6: 4618 mov r0, r3 - 800e2a8: bd80 pop {r7, pc} - 800e2aa: bf00 nop - 800e2ac: 20000c30 .word 0x20000c30 - 800e2b0: 0801034c .word 0x0801034c + 800e2ce: 4618 mov r0, r3 + 800e2d0: bd80 pop {r7, pc} + 800e2d2: bf00 nop + 800e2d4: 20000c68 .word 0x20000c68 + 800e2d8: 08010374 .word 0x08010374 -0800e2b4 : +0800e2dc : { return UTIL_TimerDriver.DeInitTimer(); } UTIL_TIMER_Status_t UTIL_TIMER_Create( UTIL_TIMER_Object_t *TimerObject, uint32_t PeriodValue, UTIL_TIMER_Mode_t Mode, void ( *Callback )( void *), void *Argument) { - 800e2b4: b580 push {r7, lr} - 800e2b6: b084 sub sp, #16 - 800e2b8: af00 add r7, sp, #0 - 800e2ba: 60f8 str r0, [r7, #12] - 800e2bc: 60b9 str r1, [r7, #8] - 800e2be: 603b str r3, [r7, #0] - 800e2c0: 4613 mov r3, r2 - 800e2c2: 71fb strb r3, [r7, #7] + 800e2dc: b580 push {r7, lr} + 800e2de: b084 sub sp, #16 + 800e2e0: af00 add r7, sp, #0 + 800e2e2: 60f8 str r0, [r7, #12] + 800e2e4: 60b9 str r1, [r7, #8] + 800e2e6: 603b str r3, [r7, #0] + 800e2e8: 4613 mov r3, r2 + 800e2ea: 71fb strb r3, [r7, #7] if((TimerObject != NULL) && (Callback != NULL)) - 800e2c4: 68fb ldr r3, [r7, #12] - 800e2c6: 2b00 cmp r3, #0 - 800e2c8: d023 beq.n 800e312 - 800e2ca: 683b ldr r3, [r7, #0] - 800e2cc: 2b00 cmp r3, #0 - 800e2ce: d020 beq.n 800e312 + 800e2ec: 68fb ldr r3, [r7, #12] + 800e2ee: 2b00 cmp r3, #0 + 800e2f0: d023 beq.n 800e33a + 800e2f2: 683b ldr r3, [r7, #0] + 800e2f4: 2b00 cmp r3, #0 + 800e2f6: d020 beq.n 800e33a { TimerObject->Timestamp = 0U; - 800e2d0: 68fb ldr r3, [r7, #12] - 800e2d2: 2200 movs r2, #0 - 800e2d4: 601a str r2, [r3, #0] + 800e2f8: 68fb ldr r3, [r7, #12] + 800e2fa: 2200 movs r2, #0 + 800e2fc: 601a str r2, [r3, #0] TimerObject->ReloadValue = UTIL_TimerDriver.ms2Tick(PeriodValue); - 800e2d6: 4b11 ldr r3, [pc, #68] @ (800e31c ) - 800e2d8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e2da: 68b8 ldr r0, [r7, #8] - 800e2dc: 4798 blx r3 - 800e2de: 4602 mov r2, r0 - 800e2e0: 68fb ldr r3, [r7, #12] - 800e2e2: 605a str r2, [r3, #4] - TimerObject->IsPending = 0U; - 800e2e4: 68fb ldr r3, [r7, #12] - 800e2e6: 2200 movs r2, #0 - 800e2e8: 721a strb r2, [r3, #8] - TimerObject->IsRunning = 0U; - 800e2ea: 68fb ldr r3, [r7, #12] - 800e2ec: 2200 movs r2, #0 - 800e2ee: 725a strb r2, [r3, #9] - TimerObject->IsReloadStopped = 0U; - 800e2f0: 68fb ldr r3, [r7, #12] - 800e2f2: 2200 movs r2, #0 - 800e2f4: 729a strb r2, [r3, #10] - TimerObject->Callback = Callback; - 800e2f6: 68fb ldr r3, [r7, #12] - 800e2f8: 683a ldr r2, [r7, #0] - 800e2fa: 60da str r2, [r3, #12] - TimerObject->argument = Argument; - 800e2fc: 68fb ldr r3, [r7, #12] - 800e2fe: 69ba ldr r2, [r7, #24] - 800e300: 611a str r2, [r3, #16] - TimerObject->Mode = Mode; - 800e302: 68fb ldr r3, [r7, #12] - 800e304: 79fa ldrb r2, [r7, #7] - 800e306: 72da strb r2, [r3, #11] - TimerObject->Next = NULL; + 800e2fe: 4b11 ldr r3, [pc, #68] @ (800e344 ) + 800e300: 6a5b ldr r3, [r3, #36] @ 0x24 + 800e302: 68b8 ldr r0, [r7, #8] + 800e304: 4798 blx r3 + 800e306: 4602 mov r2, r0 800e308: 68fb ldr r3, [r7, #12] - 800e30a: 2200 movs r2, #0 - 800e30c: 615a str r2, [r3, #20] + 800e30a: 605a str r2, [r3, #4] + TimerObject->IsPending = 0U; + 800e30c: 68fb ldr r3, [r7, #12] + 800e30e: 2200 movs r2, #0 + 800e310: 721a strb r2, [r3, #8] + TimerObject->IsRunning = 0U; + 800e312: 68fb ldr r3, [r7, #12] + 800e314: 2200 movs r2, #0 + 800e316: 725a strb r2, [r3, #9] + TimerObject->IsReloadStopped = 0U; + 800e318: 68fb ldr r3, [r7, #12] + 800e31a: 2200 movs r2, #0 + 800e31c: 729a strb r2, [r3, #10] + TimerObject->Callback = Callback; + 800e31e: 68fb ldr r3, [r7, #12] + 800e320: 683a ldr r2, [r7, #0] + 800e322: 60da str r2, [r3, #12] + TimerObject->argument = Argument; + 800e324: 68fb ldr r3, [r7, #12] + 800e326: 69ba ldr r2, [r7, #24] + 800e328: 611a str r2, [r3, #16] + TimerObject->Mode = Mode; + 800e32a: 68fb ldr r3, [r7, #12] + 800e32c: 79fa ldrb r2, [r7, #7] + 800e32e: 72da strb r2, [r3, #11] + TimerObject->Next = NULL; + 800e330: 68fb ldr r3, [r7, #12] + 800e332: 2200 movs r2, #0 + 800e334: 615a str r2, [r3, #20] return UTIL_TIMER_OK; - 800e30e: 2300 movs r3, #0 - 800e310: e000 b.n 800e314 + 800e336: 2300 movs r3, #0 + 800e338: e000 b.n 800e33c } else { return UTIL_TIMER_INVALID_PARAM; - 800e312: 2301 movs r3, #1 + 800e33a: 2301 movs r3, #1 } } - 800e314: 4618 mov r0, r3 - 800e316: 3710 adds r7, #16 - 800e318: 46bd mov sp, r7 - 800e31a: bd80 pop {r7, pc} - 800e31c: 0801034c .word 0x0801034c + 800e33c: 4618 mov r0, r3 + 800e33e: 3710 adds r7, #16 + 800e340: 46bd mov sp, r7 + 800e342: bd80 pop {r7, pc} + 800e344: 08010374 .word 0x08010374 -0800e320 : +0800e348 : UTIL_TIMER_Status_t UTIL_TIMER_Start( UTIL_TIMER_Object_t *TimerObject) { - 800e320: b580 push {r7, lr} - 800e322: b08a sub sp, #40 @ 0x28 - 800e324: af00 add r7, sp, #0 - 800e326: 6078 str r0, [r7, #4] + 800e348: b580 push {r7, lr} + 800e34a: b08a sub sp, #40 @ 0x28 + 800e34c: af00 add r7, sp, #0 + 800e34e: 6078 str r0, [r7, #4] UTIL_TIMER_Status_t ret = UTIL_TIMER_OK; - 800e328: 2300 movs r3, #0 - 800e32a: f887 3027 strb.w r3, [r7, #39] @ 0x27 + 800e350: 2300 movs r3, #0 + 800e352: f887 3027 strb.w r3, [r7, #39] @ 0x27 uint32_t elapsedTime; uint32_t minValue; uint32_t ticks; if(( TimerObject != NULL ) && ( TimerExists( TimerObject ) == false ) && (TimerObject->IsRunning == 0U)) - 800e32e: 687b ldr r3, [r7, #4] - 800e330: 2b00 cmp r3, #0 - 800e332: d056 beq.n 800e3e2 - 800e334: 6878 ldr r0, [r7, #4] - 800e336: f000 f9a9 bl 800e68c - 800e33a: 4603 mov r3, r0 - 800e33c: f083 0301 eor.w r3, r3, #1 - 800e340: b2db uxtb r3, r3 - 800e342: 2b00 cmp r3, #0 - 800e344: d04d beq.n 800e3e2 - 800e346: 687b ldr r3, [r7, #4] - 800e348: 7a5b ldrb r3, [r3, #9] - 800e34a: 2b00 cmp r3, #0 - 800e34c: d149 bne.n 800e3e2 + 800e356: 687b ldr r3, [r7, #4] + 800e358: 2b00 cmp r3, #0 + 800e35a: d056 beq.n 800e40a + 800e35c: 6878 ldr r0, [r7, #4] + 800e35e: f000 f9a9 bl 800e6b4 + 800e362: 4603 mov r3, r0 + 800e364: f083 0301 eor.w r3, r3, #1 + 800e368: b2db uxtb r3, r3 + 800e36a: 2b00 cmp r3, #0 + 800e36c: d04d beq.n 800e40a + 800e36e: 687b ldr r3, [r7, #4] + 800e370: 7a5b ldrb r3, [r3, #9] + 800e372: 2b00 cmp r3, #0 + 800e374: d149 bne.n 800e40a __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e34e: f3ef 8310 mrs r3, PRIMASK - 800e352: 613b str r3, [r7, #16] + 800e376: f3ef 8310 mrs r3, PRIMASK + 800e37a: 613b str r3, [r7, #16] return(result); - 800e354: 693b ldr r3, [r7, #16] + 800e37c: 693b ldr r3, [r7, #16] { UTIL_TIMER_ENTER_CRITICAL_SECTION(); - 800e356: 61fb str r3, [r7, #28] + 800e37e: 61fb str r3, [r7, #28] __ASM volatile ("cpsid i" : : : "memory"); - 800e358: b672 cpsid i + 800e380: b672 cpsid i } - 800e35a: bf00 nop + 800e382: bf00 nop ticks = TimerObject->ReloadValue; - 800e35c: 687b ldr r3, [r7, #4] - 800e35e: 685b ldr r3, [r3, #4] - 800e360: 623b str r3, [r7, #32] + 800e384: 687b ldr r3, [r7, #4] + 800e386: 685b ldr r3, [r3, #4] + 800e388: 623b str r3, [r7, #32] minValue = UTIL_TimerDriver.GetMinimumTimeout( ); - 800e362: 4b24 ldr r3, [pc, #144] @ (800e3f4 ) - 800e364: 6a1b ldr r3, [r3, #32] - 800e366: 4798 blx r3 - 800e368: 61b8 str r0, [r7, #24] + 800e38a: 4b24 ldr r3, [pc, #144] @ (800e41c ) + 800e38c: 6a1b ldr r3, [r3, #32] + 800e38e: 4798 blx r3 + 800e390: 61b8 str r0, [r7, #24] if( ticks < minValue ) - 800e36a: 6a3a ldr r2, [r7, #32] - 800e36c: 69bb ldr r3, [r7, #24] - 800e36e: 429a cmp r2, r3 - 800e370: d201 bcs.n 800e376 + 800e392: 6a3a ldr r2, [r7, #32] + 800e394: 69bb ldr r3, [r7, #24] + 800e396: 429a cmp r2, r3 + 800e398: d201 bcs.n 800e39e { ticks = minValue; - 800e372: 69bb ldr r3, [r7, #24] - 800e374: 623b str r3, [r7, #32] + 800e39a: 69bb ldr r3, [r7, #24] + 800e39c: 623b str r3, [r7, #32] } TimerObject->Timestamp = ticks; - 800e376: 687b ldr r3, [r7, #4] - 800e378: 6a3a ldr r2, [r7, #32] - 800e37a: 601a str r2, [r3, #0] + 800e39e: 687b ldr r3, [r7, #4] + 800e3a0: 6a3a ldr r2, [r7, #32] + 800e3a2: 601a str r2, [r3, #0] TimerObject->IsPending = 0U; - 800e37c: 687b ldr r3, [r7, #4] - 800e37e: 2200 movs r2, #0 - 800e380: 721a strb r2, [r3, #8] + 800e3a4: 687b ldr r3, [r7, #4] + 800e3a6: 2200 movs r2, #0 + 800e3a8: 721a strb r2, [r3, #8] TimerObject->IsRunning = 1U; - 800e382: 687b ldr r3, [r7, #4] - 800e384: 2201 movs r2, #1 - 800e386: 725a strb r2, [r3, #9] + 800e3aa: 687b ldr r3, [r7, #4] + 800e3ac: 2201 movs r2, #1 + 800e3ae: 725a strb r2, [r3, #9] TimerObject->IsReloadStopped = 0U; - 800e388: 687b ldr r3, [r7, #4] - 800e38a: 2200 movs r2, #0 - 800e38c: 729a strb r2, [r3, #10] + 800e3b0: 687b ldr r3, [r7, #4] + 800e3b2: 2200 movs r2, #0 + 800e3b4: 729a strb r2, [r3, #10] if( TimerListHead == NULL ) - 800e38e: 4b1a ldr r3, [pc, #104] @ (800e3f8 ) - 800e390: 681b ldr r3, [r3, #0] - 800e392: 2b00 cmp r3, #0 - 800e394: d106 bne.n 800e3a4 + 800e3b6: 4b1a ldr r3, [pc, #104] @ (800e420 ) + 800e3b8: 681b ldr r3, [r3, #0] + 800e3ba: 2b00 cmp r3, #0 + 800e3bc: d106 bne.n 800e3cc { UTIL_TimerDriver.SetTimerContext(); - 800e396: 4b17 ldr r3, [pc, #92] @ (800e3f4 ) - 800e398: 691b ldr r3, [r3, #16] - 800e39a: 4798 blx r3 + 800e3be: 4b17 ldr r3, [pc, #92] @ (800e41c ) + 800e3c0: 691b ldr r3, [r3, #16] + 800e3c2: 4798 blx r3 TimerInsertNewHeadTimer( TimerObject ); /* insert a timeout at now+obj->Timestamp */ - 800e39c: 6878 ldr r0, [r7, #4] - 800e39e: f000 f9eb bl 800e778 - 800e3a2: e017 b.n 800e3d4 + 800e3c4: 6878 ldr r0, [r7, #4] + 800e3c6: f000 f9eb bl 800e7a0 + 800e3ca: e017 b.n 800e3fc } else { elapsedTime = UTIL_TimerDriver.GetTimerElapsedTime( ); - 800e3a4: 4b13 ldr r3, [pc, #76] @ (800e3f4 ) - 800e3a6: 699b ldr r3, [r3, #24] - 800e3a8: 4798 blx r3 - 800e3aa: 6178 str r0, [r7, #20] + 800e3cc: 4b13 ldr r3, [pc, #76] @ (800e41c ) + 800e3ce: 699b ldr r3, [r3, #24] + 800e3d0: 4798 blx r3 + 800e3d2: 6178 str r0, [r7, #20] TimerObject->Timestamp += elapsedTime; - 800e3ac: 687b ldr r3, [r7, #4] - 800e3ae: 681a ldr r2, [r3, #0] - 800e3b0: 697b ldr r3, [r7, #20] - 800e3b2: 441a add r2, r3 - 800e3b4: 687b ldr r3, [r7, #4] - 800e3b6: 601a str r2, [r3, #0] + 800e3d4: 687b ldr r3, [r7, #4] + 800e3d6: 681a ldr r2, [r3, #0] + 800e3d8: 697b ldr r3, [r7, #20] + 800e3da: 441a add r2, r3 + 800e3dc: 687b ldr r3, [r7, #4] + 800e3de: 601a str r2, [r3, #0] if( TimerObject->Timestamp < TimerListHead->Timestamp ) - 800e3b8: 687b ldr r3, [r7, #4] - 800e3ba: 681a ldr r2, [r3, #0] - 800e3bc: 4b0e ldr r3, [pc, #56] @ (800e3f8 ) - 800e3be: 681b ldr r3, [r3, #0] - 800e3c0: 681b ldr r3, [r3, #0] - 800e3c2: 429a cmp r2, r3 - 800e3c4: d203 bcs.n 800e3ce + 800e3e0: 687b ldr r3, [r7, #4] + 800e3e2: 681a ldr r2, [r3, #0] + 800e3e4: 4b0e ldr r3, [pc, #56] @ (800e420 ) + 800e3e6: 681b ldr r3, [r3, #0] + 800e3e8: 681b ldr r3, [r3, #0] + 800e3ea: 429a cmp r2, r3 + 800e3ec: d203 bcs.n 800e3f6 { TimerInsertNewHeadTimer( TimerObject); - 800e3c6: 6878 ldr r0, [r7, #4] - 800e3c8: f000 f9d6 bl 800e778 - 800e3cc: e002 b.n 800e3d4 + 800e3ee: 6878 ldr r0, [r7, #4] + 800e3f0: f000 f9d6 bl 800e7a0 + 800e3f4: e002 b.n 800e3fc } else { TimerInsertTimer( TimerObject); - 800e3ce: 6878 ldr r0, [r7, #4] - 800e3d0: f000 f9a2 bl 800e718 - 800e3d4: 69fb ldr r3, [r7, #28] - 800e3d6: 60fb str r3, [r7, #12] + 800e3f6: 6878 ldr r0, [r7, #4] + 800e3f8: f000 f9a2 bl 800e740 + 800e3fc: 69fb ldr r3, [r7, #28] + 800e3fe: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e3d8: 68fb ldr r3, [r7, #12] - 800e3da: f383 8810 msr PRIMASK, r3 + 800e400: 68fb ldr r3, [r7, #12] + 800e402: f383 8810 msr PRIMASK, r3 } - 800e3de: bf00 nop + 800e406: bf00 nop { - 800e3e0: e002 b.n 800e3e8 + 800e408: e002 b.n 800e410 } UTIL_TIMER_EXIT_CRITICAL_SECTION(); } else { ret = UTIL_TIMER_INVALID_PARAM; - 800e3e2: 2301 movs r3, #1 - 800e3e4: f887 3027 strb.w r3, [r7, #39] @ 0x27 + 800e40a: 2301 movs r3, #1 + 800e40c: f887 3027 strb.w r3, [r7, #39] @ 0x27 } return ret; - 800e3e8: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 + 800e410: f897 3027 ldrb.w r3, [r7, #39] @ 0x27 } - 800e3ec: 4618 mov r0, r3 - 800e3ee: 3728 adds r7, #40 @ 0x28 - 800e3f0: 46bd mov sp, r7 - 800e3f2: bd80 pop {r7, pc} - 800e3f4: 0801034c .word 0x0801034c - 800e3f8: 20000c30 .word 0x20000c30 + 800e414: 4618 mov r0, r3 + 800e416: 3728 adds r7, #40 @ 0x28 + 800e418: 46bd mov sp, r7 + 800e41a: bd80 pop {r7, pc} + 800e41c: 08010374 .word 0x08010374 + 800e420: 20000c68 .word 0x20000c68 -0800e3fc : +0800e424 : } return ret; } UTIL_TIMER_Status_t UTIL_TIMER_Stop( UTIL_TIMER_Object_t *TimerObject ) { - 800e3fc: b580 push {r7, lr} - 800e3fe: b088 sub sp, #32 - 800e400: af00 add r7, sp, #0 - 800e402: 6078 str r0, [r7, #4] + 800e424: b580 push {r7, lr} + 800e426: b088 sub sp, #32 + 800e428: af00 add r7, sp, #0 + 800e42a: 6078 str r0, [r7, #4] UTIL_TIMER_Status_t ret = UTIL_TIMER_OK; - 800e404: 2300 movs r3, #0 - 800e406: 77fb strb r3, [r7, #31] + 800e42c: 2300 movs r3, #0 + 800e42e: 77fb strb r3, [r7, #31] if (NULL != TimerObject) - 800e408: 687b ldr r3, [r7, #4] - 800e40a: 2b00 cmp r3, #0 - 800e40c: d05b beq.n 800e4c6 + 800e430: 687b ldr r3, [r7, #4] + 800e432: 2b00 cmp r3, #0 + 800e434: d05b beq.n 800e4ee __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e40e: f3ef 8310 mrs r3, PRIMASK - 800e412: 60fb str r3, [r7, #12] + 800e436: f3ef 8310 mrs r3, PRIMASK + 800e43a: 60fb str r3, [r7, #12] return(result); - 800e414: 68fb ldr r3, [r7, #12] + 800e43c: 68fb ldr r3, [r7, #12] { UTIL_TIMER_ENTER_CRITICAL_SECTION(); - 800e416: 613b str r3, [r7, #16] + 800e43e: 613b str r3, [r7, #16] __ASM volatile ("cpsid i" : : : "memory"); - 800e418: b672 cpsid i + 800e440: b672 cpsid i } - 800e41a: bf00 nop + 800e442: bf00 nop UTIL_TIMER_Object_t* prev = TimerListHead; - 800e41c: 4b2d ldr r3, [pc, #180] @ (800e4d4 ) - 800e41e: 681b ldr r3, [r3, #0] - 800e420: 61bb str r3, [r7, #24] + 800e444: 4b2d ldr r3, [pc, #180] @ (800e4fc ) + 800e446: 681b ldr r3, [r3, #0] + 800e448: 61bb str r3, [r7, #24] UTIL_TIMER_Object_t* cur = TimerListHead; - 800e422: 4b2c ldr r3, [pc, #176] @ (800e4d4 ) - 800e424: 681b ldr r3, [r3, #0] - 800e426: 617b str r3, [r7, #20] + 800e44a: 4b2c ldr r3, [pc, #176] @ (800e4fc ) + 800e44c: 681b ldr r3, [r3, #0] + 800e44e: 617b str r3, [r7, #20] TimerObject->IsReloadStopped = 1U; - 800e428: 687b ldr r3, [r7, #4] - 800e42a: 2201 movs r2, #1 - 800e42c: 729a strb r2, [r3, #10] + 800e450: 687b ldr r3, [r7, #4] + 800e452: 2201 movs r2, #1 + 800e454: 729a strb r2, [r3, #10] /* List is empty or the Obj to stop does not exist */ if(NULL != TimerListHead) - 800e42e: 4b29 ldr r3, [pc, #164] @ (800e4d4 ) - 800e430: 681b ldr r3, [r3, #0] - 800e432: 2b00 cmp r3, #0 - 800e434: d041 beq.n 800e4ba + 800e456: 4b29 ldr r3, [pc, #164] @ (800e4fc ) + 800e458: 681b ldr r3, [r3, #0] + 800e45a: 2b00 cmp r3, #0 + 800e45c: d041 beq.n 800e4e2 { TimerObject->IsRunning = 0U; - 800e436: 687b ldr r3, [r7, #4] - 800e438: 2200 movs r2, #0 - 800e43a: 725a strb r2, [r3, #9] + 800e45e: 687b ldr r3, [r7, #4] + 800e460: 2200 movs r2, #0 + 800e462: 725a strb r2, [r3, #9] if( TimerListHead == TimerObject ) /* Stop the Head */ - 800e43c: 4b25 ldr r3, [pc, #148] @ (800e4d4 ) - 800e43e: 681b ldr r3, [r3, #0] - 800e440: 687a ldr r2, [r7, #4] - 800e442: 429a cmp r2, r3 - 800e444: d134 bne.n 800e4b0 + 800e464: 4b25 ldr r3, [pc, #148] @ (800e4fc ) + 800e466: 681b ldr r3, [r3, #0] + 800e468: 687a ldr r2, [r7, #4] + 800e46a: 429a cmp r2, r3 + 800e46c: d134 bne.n 800e4d8 { TimerListHead->IsPending = 0; - 800e446: 4b23 ldr r3, [pc, #140] @ (800e4d4 ) - 800e448: 681b ldr r3, [r3, #0] - 800e44a: 2200 movs r2, #0 - 800e44c: 721a strb r2, [r3, #8] + 800e46e: 4b23 ldr r3, [pc, #140] @ (800e4fc ) + 800e470: 681b ldr r3, [r3, #0] + 800e472: 2200 movs r2, #0 + 800e474: 721a strb r2, [r3, #8] if( TimerListHead->Next != NULL ) - 800e44e: 4b21 ldr r3, [pc, #132] @ (800e4d4 ) - 800e450: 681b ldr r3, [r3, #0] - 800e452: 695b ldr r3, [r3, #20] - 800e454: 2b00 cmp r3, #0 - 800e456: d00a beq.n 800e46e + 800e476: 4b21 ldr r3, [pc, #132] @ (800e4fc ) + 800e478: 681b ldr r3, [r3, #0] + 800e47a: 695b ldr r3, [r3, #20] + 800e47c: 2b00 cmp r3, #0 + 800e47e: d00a beq.n 800e496 { TimerListHead = TimerListHead->Next; - 800e458: 4b1e ldr r3, [pc, #120] @ (800e4d4 ) - 800e45a: 681b ldr r3, [r3, #0] - 800e45c: 695b ldr r3, [r3, #20] - 800e45e: 4a1d ldr r2, [pc, #116] @ (800e4d4 ) - 800e460: 6013 str r3, [r2, #0] + 800e480: 4b1e ldr r3, [pc, #120] @ (800e4fc ) + 800e482: 681b ldr r3, [r3, #0] + 800e484: 695b ldr r3, [r3, #20] + 800e486: 4a1d ldr r2, [pc, #116] @ (800e4fc ) + 800e488: 6013 str r3, [r2, #0] TimerSetTimeout( TimerListHead ); - 800e462: 4b1c ldr r3, [pc, #112] @ (800e4d4 ) - 800e464: 681b ldr r3, [r3, #0] - 800e466: 4618 mov r0, r3 - 800e468: f000 f92c bl 800e6c4 - 800e46c: e023 b.n 800e4b6 + 800e48a: 4b1c ldr r3, [pc, #112] @ (800e4fc ) + 800e48c: 681b ldr r3, [r3, #0] + 800e48e: 4618 mov r0, r3 + 800e490: f000 f92c bl 800e6ec + 800e494: e023 b.n 800e4de } else { UTIL_TimerDriver.StopTimerEvt( ); - 800e46e: 4b1a ldr r3, [pc, #104] @ (800e4d8 ) - 800e470: 68db ldr r3, [r3, #12] - 800e472: 4798 blx r3 + 800e496: 4b1a ldr r3, [pc, #104] @ (800e500 ) + 800e498: 68db ldr r3, [r3, #12] + 800e49a: 4798 blx r3 TimerListHead = NULL; - 800e474: 4b17 ldr r3, [pc, #92] @ (800e4d4 ) - 800e476: 2200 movs r2, #0 - 800e478: 601a str r2, [r3, #0] - 800e47a: e01c b.n 800e4b6 + 800e49c: 4b17 ldr r3, [pc, #92] @ (800e4fc ) + 800e49e: 2200 movs r2, #0 + 800e4a0: 601a str r2, [r3, #0] + 800e4a2: e01c b.n 800e4de } else /* Stop an object within the list */ { while( cur != NULL ) { if( cur == TimerObject ) - 800e47c: 697a ldr r2, [r7, #20] - 800e47e: 687b ldr r3, [r7, #4] - 800e480: 429a cmp r2, r3 - 800e482: d110 bne.n 800e4a6 + 800e4a4: 697a ldr r2, [r7, #20] + 800e4a6: 687b ldr r3, [r7, #4] + 800e4a8: 429a cmp r2, r3 + 800e4aa: d110 bne.n 800e4ce { if( cur->Next != NULL ) - 800e484: 697b ldr r3, [r7, #20] - 800e486: 695b ldr r3, [r3, #20] - 800e488: 2b00 cmp r3, #0 - 800e48a: d006 beq.n 800e49a + 800e4ac: 697b ldr r3, [r7, #20] + 800e4ae: 695b ldr r3, [r3, #20] + 800e4b0: 2b00 cmp r3, #0 + 800e4b2: d006 beq.n 800e4c2 { cur = cur->Next; - 800e48c: 697b ldr r3, [r7, #20] - 800e48e: 695b ldr r3, [r3, #20] - 800e490: 617b str r3, [r7, #20] + 800e4b4: 697b ldr r3, [r7, #20] + 800e4b6: 695b ldr r3, [r3, #20] + 800e4b8: 617b str r3, [r7, #20] prev->Next = cur; - 800e492: 69bb ldr r3, [r7, #24] - 800e494: 697a ldr r2, [r7, #20] - 800e496: 615a str r2, [r3, #20] + 800e4ba: 69bb ldr r3, [r7, #24] + 800e4bc: 697a ldr r2, [r7, #20] + 800e4be: 615a str r2, [r3, #20] else { cur = NULL; prev->Next = cur; } break; - 800e498: e00d b.n 800e4b6 + 800e4c0: e00d b.n 800e4de cur = NULL; - 800e49a: 2300 movs r3, #0 - 800e49c: 617b str r3, [r7, #20] + 800e4c2: 2300 movs r3, #0 + 800e4c4: 617b str r3, [r7, #20] prev->Next = cur; - 800e49e: 69bb ldr r3, [r7, #24] - 800e4a0: 697a ldr r2, [r7, #20] - 800e4a2: 615a str r2, [r3, #20] + 800e4c6: 69bb ldr r3, [r7, #24] + 800e4c8: 697a ldr r2, [r7, #20] + 800e4ca: 615a str r2, [r3, #20] break; - 800e4a4: e007 b.n 800e4b6 + 800e4cc: e007 b.n 800e4de } else { prev = cur; - 800e4a6: 697b ldr r3, [r7, #20] - 800e4a8: 61bb str r3, [r7, #24] + 800e4ce: 697b ldr r3, [r7, #20] + 800e4d0: 61bb str r3, [r7, #24] cur = cur->Next; - 800e4aa: 697b ldr r3, [r7, #20] - 800e4ac: 695b ldr r3, [r3, #20] - 800e4ae: 617b str r3, [r7, #20] + 800e4d2: 697b ldr r3, [r7, #20] + 800e4d4: 695b ldr r3, [r3, #20] + 800e4d6: 617b str r3, [r7, #20] while( cur != NULL ) - 800e4b0: 697b ldr r3, [r7, #20] - 800e4b2: 2b00 cmp r3, #0 - 800e4b4: d1e2 bne.n 800e47c + 800e4d8: 697b ldr r3, [r7, #20] + 800e4da: 2b00 cmp r3, #0 + 800e4dc: d1e2 bne.n 800e4a4 } } } ret = UTIL_TIMER_OK; - 800e4b6: 2300 movs r3, #0 - 800e4b8: 77fb strb r3, [r7, #31] - 800e4ba: 693b ldr r3, [r7, #16] - 800e4bc: 60bb str r3, [r7, #8] + 800e4de: 2300 movs r3, #0 + 800e4e0: 77fb strb r3, [r7, #31] + 800e4e2: 693b ldr r3, [r7, #16] + 800e4e4: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e4be: 68bb ldr r3, [r7, #8] - 800e4c0: f383 8810 msr PRIMASK, r3 + 800e4e6: 68bb ldr r3, [r7, #8] + 800e4e8: f383 8810 msr PRIMASK, r3 } - 800e4c4: e001 b.n 800e4ca + 800e4ec: e001 b.n 800e4f2 } UTIL_TIMER_EXIT_CRITICAL_SECTION(); } else { ret = UTIL_TIMER_INVALID_PARAM; - 800e4c6: 2301 movs r3, #1 - 800e4c8: 77fb strb r3, [r7, #31] + 800e4ee: 2301 movs r3, #1 + 800e4f0: 77fb strb r3, [r7, #31] } return ret; - 800e4ca: 7ffb ldrb r3, [r7, #31] + 800e4f2: 7ffb ldrb r3, [r7, #31] } - 800e4cc: 4618 mov r0, r3 - 800e4ce: 3720 adds r7, #32 - 800e4d0: 46bd mov sp, r7 - 800e4d2: bd80 pop {r7, pc} - 800e4d4: 20000c30 .word 0x20000c30 - 800e4d8: 0801034c .word 0x0801034c + 800e4f4: 4618 mov r0, r3 + 800e4f6: 3720 adds r7, #32 + 800e4f8: 46bd mov sp, r7 + 800e4fa: bd80 pop {r7, pc} + 800e4fc: 20000c68 .word 0x20000c68 + 800e500: 08010374 .word 0x08010374 -0800e4dc : +0800e504 : UTIL_TIMER_Status_t UTIL_TIMER_SetPeriod(UTIL_TIMER_Object_t *TimerObject, uint32_t NewPeriodValue) { - 800e4dc: b580 push {r7, lr} - 800e4de: b084 sub sp, #16 - 800e4e0: af00 add r7, sp, #0 - 800e4e2: 6078 str r0, [r7, #4] - 800e4e4: 6039 str r1, [r7, #0] + 800e504: b580 push {r7, lr} + 800e506: b084 sub sp, #16 + 800e508: af00 add r7, sp, #0 + 800e50a: 6078 str r0, [r7, #4] + 800e50c: 6039 str r1, [r7, #0] UTIL_TIMER_Status_t ret = UTIL_TIMER_OK; - 800e4e6: 2300 movs r3, #0 - 800e4e8: 73fb strb r3, [r7, #15] + 800e50e: 2300 movs r3, #0 + 800e510: 73fb strb r3, [r7, #15] if(NULL == TimerObject) - 800e4ea: 687b ldr r3, [r7, #4] - 800e4ec: 2b00 cmp r3, #0 - 800e4ee: d102 bne.n 800e4f6 + 800e512: 687b ldr r3, [r7, #4] + 800e514: 2b00 cmp r3, #0 + 800e516: d102 bne.n 800e51e { ret = UTIL_TIMER_INVALID_PARAM; - 800e4f0: 2301 movs r3, #1 - 800e4f2: 73fb strb r3, [r7, #15] - 800e4f4: e014 b.n 800e520 + 800e518: 2301 movs r3, #1 + 800e51a: 73fb strb r3, [r7, #15] + 800e51c: e014 b.n 800e548 } else { TimerObject->ReloadValue = UTIL_TimerDriver.ms2Tick(NewPeriodValue); - 800e4f6: 4b0d ldr r3, [pc, #52] @ (800e52c ) - 800e4f8: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e4fa: 6838 ldr r0, [r7, #0] - 800e4fc: 4798 blx r3 - 800e4fe: 4602 mov r2, r0 - 800e500: 687b ldr r3, [r7, #4] - 800e502: 605a str r2, [r3, #4] + 800e51e: 4b0d ldr r3, [pc, #52] @ (800e554 ) + 800e520: 6a5b ldr r3, [r3, #36] @ 0x24 + 800e522: 6838 ldr r0, [r7, #0] + 800e524: 4798 blx r3 + 800e526: 4602 mov r2, r0 + 800e528: 687b ldr r3, [r7, #4] + 800e52a: 605a str r2, [r3, #4] if(TimerExists(TimerObject)) - 800e504: 6878 ldr r0, [r7, #4] - 800e506: f000 f8c1 bl 800e68c - 800e50a: 4603 mov r3, r0 - 800e50c: 2b00 cmp r3, #0 - 800e50e: d007 beq.n 800e520 + 800e52c: 6878 ldr r0, [r7, #4] + 800e52e: f000 f8c1 bl 800e6b4 + 800e532: 4603 mov r3, r0 + 800e534: 2b00 cmp r3, #0 + 800e536: d007 beq.n 800e548 { (void)UTIL_TIMER_Stop(TimerObject); - 800e510: 6878 ldr r0, [r7, #4] - 800e512: f7ff ff73 bl 800e3fc + 800e538: 6878 ldr r0, [r7, #4] + 800e53a: f7ff ff73 bl 800e424 ret = UTIL_TIMER_Start(TimerObject); - 800e516: 6878 ldr r0, [r7, #4] - 800e518: f7ff ff02 bl 800e320 - 800e51c: 4603 mov r3, r0 - 800e51e: 73fb strb r3, [r7, #15] + 800e53e: 6878 ldr r0, [r7, #4] + 800e540: f7ff ff02 bl 800e348 + 800e544: 4603 mov r3, r0 + 800e546: 73fb strb r3, [r7, #15] } } return ret; - 800e520: 7bfb ldrb r3, [r7, #15] + 800e548: 7bfb ldrb r3, [r7, #15] } - 800e522: 4618 mov r0, r3 - 800e524: 3710 adds r7, #16 - 800e526: 46bd mov sp, r7 - 800e528: bd80 pop {r7, pc} - 800e52a: bf00 nop - 800e52c: 0801034c .word 0x0801034c + 800e54a: 4618 mov r0, r3 + 800e54c: 3710 adds r7, #16 + 800e54e: 46bd mov sp, r7 + 800e550: bd80 pop {r7, pc} + 800e552: bf00 nop + 800e554: 08010374 .word 0x08010374 -0800e530 : +0800e558 : } return NextTimer; } void UTIL_TIMER_IRQ_Handler( void ) { - 800e530: b590 push {r4, r7, lr} - 800e532: b089 sub sp, #36 @ 0x24 - 800e534: af00 add r7, sp, #0 + 800e558: b590 push {r4, r7, lr} + 800e55a: b089 sub sp, #36 @ 0x24 + 800e55c: af00 add r7, sp, #0 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e536: f3ef 8310 mrs r3, PRIMASK - 800e53a: 60bb str r3, [r7, #8] + 800e55e: f3ef 8310 mrs r3, PRIMASK + 800e562: 60bb str r3, [r7, #8] return(result); - 800e53c: 68bb ldr r3, [r7, #8] + 800e564: 68bb ldr r3, [r7, #8] UTIL_TIMER_Object_t* cur; uint32_t old, now, DeltaContext; UTIL_TIMER_ENTER_CRITICAL_SECTION(); - 800e53e: 61bb str r3, [r7, #24] + 800e566: 61bb str r3, [r7, #24] __ASM volatile ("cpsid i" : : : "memory"); - 800e540: b672 cpsid i + 800e568: b672 cpsid i } - 800e542: bf00 nop + 800e56a: bf00 nop old = UTIL_TimerDriver.GetTimerContext( ); - 800e544: 4b38 ldr r3, [pc, #224] @ (800e628 ) - 800e546: 695b ldr r3, [r3, #20] - 800e548: 4798 blx r3 - 800e54a: 6178 str r0, [r7, #20] + 800e56c: 4b38 ldr r3, [pc, #224] @ (800e650 ) + 800e56e: 695b ldr r3, [r3, #20] + 800e570: 4798 blx r3 + 800e572: 6178 str r0, [r7, #20] now = UTIL_TimerDriver.SetTimerContext( ); - 800e54c: 4b36 ldr r3, [pc, #216] @ (800e628 ) - 800e54e: 691b ldr r3, [r3, #16] - 800e550: 4798 blx r3 - 800e552: 6138 str r0, [r7, #16] + 800e574: 4b36 ldr r3, [pc, #216] @ (800e650 ) + 800e576: 691b ldr r3, [r3, #16] + 800e578: 4798 blx r3 + 800e57a: 6138 str r0, [r7, #16] DeltaContext = now - old; /*intentional wrap around */ - 800e554: 693a ldr r2, [r7, #16] - 800e556: 697b ldr r3, [r7, #20] - 800e558: 1ad3 subs r3, r2, r3 - 800e55a: 60fb str r3, [r7, #12] + 800e57c: 693a ldr r2, [r7, #16] + 800e57e: 697b ldr r3, [r7, #20] + 800e580: 1ad3 subs r3, r2, r3 + 800e582: 60fb str r3, [r7, #12] /* update timeStamp based upon new Time Reference*/ /* because delta context should never exceed 2^32*/ if ( TimerListHead != NULL ) - 800e55c: 4b33 ldr r3, [pc, #204] @ (800e62c ) - 800e55e: 681b ldr r3, [r3, #0] - 800e560: 2b00 cmp r3, #0 - 800e562: d037 beq.n 800e5d4 + 800e584: 4b33 ldr r3, [pc, #204] @ (800e654 ) + 800e586: 681b ldr r3, [r3, #0] + 800e588: 2b00 cmp r3, #0 + 800e58a: d037 beq.n 800e5fc { cur = TimerListHead; - 800e564: 4b31 ldr r3, [pc, #196] @ (800e62c ) - 800e566: 681b ldr r3, [r3, #0] - 800e568: 61fb str r3, [r7, #28] + 800e58c: 4b31 ldr r3, [pc, #196] @ (800e654 ) + 800e58e: 681b ldr r3, [r3, #0] + 800e590: 61fb str r3, [r7, #28] do { if (cur->Timestamp > DeltaContext) - 800e56a: 69fb ldr r3, [r7, #28] - 800e56c: 681b ldr r3, [r3, #0] - 800e56e: 68fa ldr r2, [r7, #12] - 800e570: 429a cmp r2, r3 - 800e572: d206 bcs.n 800e582 + 800e592: 69fb ldr r3, [r7, #28] + 800e594: 681b ldr r3, [r3, #0] + 800e596: 68fa ldr r2, [r7, #12] + 800e598: 429a cmp r2, r3 + 800e59a: d206 bcs.n 800e5aa { cur->Timestamp -= DeltaContext; - 800e574: 69fb ldr r3, [r7, #28] - 800e576: 681a ldr r2, [r3, #0] - 800e578: 68fb ldr r3, [r7, #12] - 800e57a: 1ad2 subs r2, r2, r3 - 800e57c: 69fb ldr r3, [r7, #28] - 800e57e: 601a str r2, [r3, #0] - 800e580: e002 b.n 800e588 + 800e59c: 69fb ldr r3, [r7, #28] + 800e59e: 681a ldr r2, [r3, #0] + 800e5a0: 68fb ldr r3, [r7, #12] + 800e5a2: 1ad2 subs r2, r2, r3 + 800e5a4: 69fb ldr r3, [r7, #28] + 800e5a6: 601a str r2, [r3, #0] + 800e5a8: e002 b.n 800e5b0 } else { cur->Timestamp = 0; - 800e582: 69fb ldr r3, [r7, #28] - 800e584: 2200 movs r2, #0 - 800e586: 601a str r2, [r3, #0] + 800e5aa: 69fb ldr r3, [r7, #28] + 800e5ac: 2200 movs r2, #0 + 800e5ae: 601a str r2, [r3, #0] } cur = cur->Next; - 800e588: 69fb ldr r3, [r7, #28] - 800e58a: 695b ldr r3, [r3, #20] - 800e58c: 61fb str r3, [r7, #28] + 800e5b0: 69fb ldr r3, [r7, #28] + 800e5b2: 695b ldr r3, [r3, #20] + 800e5b4: 61fb str r3, [r7, #28] } while(cur != NULL); - 800e58e: 69fb ldr r3, [r7, #28] - 800e590: 2b00 cmp r3, #0 - 800e592: d1ea bne.n 800e56a + 800e5b6: 69fb ldr r3, [r7, #28] + 800e5b8: 2b00 cmp r3, #0 + 800e5ba: d1ea bne.n 800e592 } /* Execute expired timer and update the list */ while ((TimerListHead != NULL) && ((TimerListHead->Timestamp == 0U) || (TimerListHead->Timestamp < UTIL_TimerDriver.GetTimerElapsedTime( )))) - 800e594: e01e b.n 800e5d4 + 800e5bc: e01e b.n 800e5fc { cur = TimerListHead; - 800e596: 4b25 ldr r3, [pc, #148] @ (800e62c ) - 800e598: 681b ldr r3, [r3, #0] - 800e59a: 61fb str r3, [r7, #28] + 800e5be: 4b25 ldr r3, [pc, #148] @ (800e654 ) + 800e5c0: 681b ldr r3, [r3, #0] + 800e5c2: 61fb str r3, [r7, #28] TimerListHead = TimerListHead->Next; - 800e59c: 4b23 ldr r3, [pc, #140] @ (800e62c ) - 800e59e: 681b ldr r3, [r3, #0] - 800e5a0: 695b ldr r3, [r3, #20] - 800e5a2: 4a22 ldr r2, [pc, #136] @ (800e62c ) - 800e5a4: 6013 str r3, [r2, #0] + 800e5c4: 4b23 ldr r3, [pc, #140] @ (800e654 ) + 800e5c6: 681b ldr r3, [r3, #0] + 800e5c8: 695b ldr r3, [r3, #20] + 800e5ca: 4a22 ldr r2, [pc, #136] @ (800e654 ) + 800e5cc: 6013 str r3, [r2, #0] cur->IsPending = 0; - 800e5a6: 69fb ldr r3, [r7, #28] - 800e5a8: 2200 movs r2, #0 - 800e5aa: 721a strb r2, [r3, #8] + 800e5ce: 69fb ldr r3, [r7, #28] + 800e5d0: 2200 movs r2, #0 + 800e5d2: 721a strb r2, [r3, #8] cur->IsRunning = 0; - 800e5ac: 69fb ldr r3, [r7, #28] - 800e5ae: 2200 movs r2, #0 - 800e5b0: 725a strb r2, [r3, #9] + 800e5d4: 69fb ldr r3, [r7, #28] + 800e5d6: 2200 movs r2, #0 + 800e5d8: 725a strb r2, [r3, #9] cur->Callback(cur->argument); - 800e5b2: 69fb ldr r3, [r7, #28] - 800e5b4: 68db ldr r3, [r3, #12] - 800e5b6: 69fa ldr r2, [r7, #28] - 800e5b8: 6912 ldr r2, [r2, #16] - 800e5ba: 4610 mov r0, r2 - 800e5bc: 4798 blx r3 + 800e5da: 69fb ldr r3, [r7, #28] + 800e5dc: 68db ldr r3, [r3, #12] + 800e5de: 69fa ldr r2, [r7, #28] + 800e5e0: 6912 ldr r2, [r2, #16] + 800e5e2: 4610 mov r0, r2 + 800e5e4: 4798 blx r3 if(( cur->Mode == UTIL_TIMER_PERIODIC) && (cur->IsReloadStopped == 0U)) - 800e5be: 69fb ldr r3, [r7, #28] - 800e5c0: 7adb ldrb r3, [r3, #11] - 800e5c2: 2b01 cmp r3, #1 - 800e5c4: d106 bne.n 800e5d4 - 800e5c6: 69fb ldr r3, [r7, #28] - 800e5c8: 7a9b ldrb r3, [r3, #10] - 800e5ca: 2b00 cmp r3, #0 - 800e5cc: d102 bne.n 800e5d4 + 800e5e6: 69fb ldr r3, [r7, #28] + 800e5e8: 7adb ldrb r3, [r3, #11] + 800e5ea: 2b01 cmp r3, #1 + 800e5ec: d106 bne.n 800e5fc + 800e5ee: 69fb ldr r3, [r7, #28] + 800e5f0: 7a9b ldrb r3, [r3, #10] + 800e5f2: 2b00 cmp r3, #0 + 800e5f4: d102 bne.n 800e5fc { (void)UTIL_TIMER_Start(cur); - 800e5ce: 69f8 ldr r0, [r7, #28] - 800e5d0: f7ff fea6 bl 800e320 + 800e5f6: 69f8 ldr r0, [r7, #28] + 800e5f8: f7ff fea6 bl 800e348 while ((TimerListHead != NULL) && ((TimerListHead->Timestamp == 0U) || (TimerListHead->Timestamp < UTIL_TimerDriver.GetTimerElapsedTime( )))) - 800e5d4: 4b15 ldr r3, [pc, #84] @ (800e62c ) - 800e5d6: 681b ldr r3, [r3, #0] - 800e5d8: 2b00 cmp r3, #0 - 800e5da: d00d beq.n 800e5f8 - 800e5dc: 4b13 ldr r3, [pc, #76] @ (800e62c ) - 800e5de: 681b ldr r3, [r3, #0] - 800e5e0: 681b ldr r3, [r3, #0] - 800e5e2: 2b00 cmp r3, #0 - 800e5e4: d0d7 beq.n 800e596 - 800e5e6: 4b11 ldr r3, [pc, #68] @ (800e62c ) - 800e5e8: 681b ldr r3, [r3, #0] - 800e5ea: 681c ldr r4, [r3, #0] - 800e5ec: 4b0e ldr r3, [pc, #56] @ (800e628 ) - 800e5ee: 699b ldr r3, [r3, #24] - 800e5f0: 4798 blx r3 - 800e5f2: 4603 mov r3, r0 - 800e5f4: 429c cmp r4, r3 - 800e5f6: d3ce bcc.n 800e596 + 800e5fc: 4b15 ldr r3, [pc, #84] @ (800e654 ) + 800e5fe: 681b ldr r3, [r3, #0] + 800e600: 2b00 cmp r3, #0 + 800e602: d00d beq.n 800e620 + 800e604: 4b13 ldr r3, [pc, #76] @ (800e654 ) + 800e606: 681b ldr r3, [r3, #0] + 800e608: 681b ldr r3, [r3, #0] + 800e60a: 2b00 cmp r3, #0 + 800e60c: d0d7 beq.n 800e5be + 800e60e: 4b11 ldr r3, [pc, #68] @ (800e654 ) + 800e610: 681b ldr r3, [r3, #0] + 800e612: 681c ldr r4, [r3, #0] + 800e614: 4b0e ldr r3, [pc, #56] @ (800e650 ) + 800e616: 699b ldr r3, [r3, #24] + 800e618: 4798 blx r3 + 800e61a: 4603 mov r3, r0 + 800e61c: 429c cmp r4, r3 + 800e61e: d3ce bcc.n 800e5be } } /* start the next TimerListHead if it exists and it is not pending*/ if(( TimerListHead != NULL ) && (TimerListHead->IsPending == 0U)) - 800e5f8: 4b0c ldr r3, [pc, #48] @ (800e62c ) - 800e5fa: 681b ldr r3, [r3, #0] - 800e5fc: 2b00 cmp r3, #0 - 800e5fe: d009 beq.n 800e614 - 800e600: 4b0a ldr r3, [pc, #40] @ (800e62c ) - 800e602: 681b ldr r3, [r3, #0] - 800e604: 7a1b ldrb r3, [r3, #8] - 800e606: 2b00 cmp r3, #0 - 800e608: d104 bne.n 800e614 + 800e620: 4b0c ldr r3, [pc, #48] @ (800e654 ) + 800e622: 681b ldr r3, [r3, #0] + 800e624: 2b00 cmp r3, #0 + 800e626: d009 beq.n 800e63c + 800e628: 4b0a ldr r3, [pc, #40] @ (800e654 ) + 800e62a: 681b ldr r3, [r3, #0] + 800e62c: 7a1b ldrb r3, [r3, #8] + 800e62e: 2b00 cmp r3, #0 + 800e630: d104 bne.n 800e63c { TimerSetTimeout( TimerListHead ); - 800e60a: 4b08 ldr r3, [pc, #32] @ (800e62c ) - 800e60c: 681b ldr r3, [r3, #0] - 800e60e: 4618 mov r0, r3 - 800e610: f000 f858 bl 800e6c4 - 800e614: 69bb ldr r3, [r7, #24] - 800e616: 607b str r3, [r7, #4] + 800e632: 4b08 ldr r3, [pc, #32] @ (800e654 ) + 800e634: 681b ldr r3, [r3, #0] + 800e636: 4618 mov r0, r3 + 800e638: f000 f858 bl 800e6ec + 800e63c: 69bb ldr r3, [r7, #24] + 800e63e: 607b str r3, [r7, #4] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e618: 687b ldr r3, [r7, #4] - 800e61a: f383 8810 msr PRIMASK, r3 + 800e640: 687b ldr r3, [r7, #4] + 800e642: f383 8810 msr PRIMASK, r3 } - 800e61e: bf00 nop + 800e646: bf00 nop } UTIL_TIMER_EXIT_CRITICAL_SECTION(); } - 800e620: bf00 nop - 800e622: 3724 adds r7, #36 @ 0x24 - 800e624: 46bd mov sp, r7 - 800e626: bd90 pop {r4, r7, pc} - 800e628: 0801034c .word 0x0801034c - 800e62c: 20000c30 .word 0x20000c30 + 800e648: bf00 nop + 800e64a: 3724 adds r7, #36 @ 0x24 + 800e64c: 46bd mov sp, r7 + 800e64e: bd90 pop {r4, r7, pc} + 800e650: 08010374 .word 0x08010374 + 800e654: 20000c68 .word 0x20000c68 -0800e630 : +0800e658 : UTIL_TIMER_Time_t UTIL_TIMER_GetCurrentTime(void) { - 800e630: b580 push {r7, lr} - 800e632: b082 sub sp, #8 - 800e634: af00 add r7, sp, #0 + 800e658: b580 push {r7, lr} + 800e65a: b082 sub sp, #8 + 800e65c: af00 add r7, sp, #0 uint32_t now = UTIL_TimerDriver.GetTimerValue( ); - 800e636: 4b06 ldr r3, [pc, #24] @ (800e650 ) - 800e638: 69db ldr r3, [r3, #28] - 800e63a: 4798 blx r3 - 800e63c: 6078 str r0, [r7, #4] + 800e65e: 4b06 ldr r3, [pc, #24] @ (800e678 ) + 800e660: 69db ldr r3, [r3, #28] + 800e662: 4798 blx r3 + 800e664: 6078 str r0, [r7, #4] return UTIL_TimerDriver.Tick2ms(now); - 800e63e: 4b04 ldr r3, [pc, #16] @ (800e650 ) - 800e640: 6a9b ldr r3, [r3, #40] @ 0x28 - 800e642: 6878 ldr r0, [r7, #4] - 800e644: 4798 blx r3 - 800e646: 4603 mov r3, r0 + 800e666: 4b04 ldr r3, [pc, #16] @ (800e678 ) + 800e668: 6a9b ldr r3, [r3, #40] @ 0x28 + 800e66a: 6878 ldr r0, [r7, #4] + 800e66c: 4798 blx r3 + 800e66e: 4603 mov r3, r0 } - 800e648: 4618 mov r0, r3 - 800e64a: 3708 adds r7, #8 - 800e64c: 46bd mov sp, r7 - 800e64e: bd80 pop {r7, pc} - 800e650: 0801034c .word 0x0801034c + 800e670: 4618 mov r0, r3 + 800e672: 3708 adds r7, #8 + 800e674: 46bd mov sp, r7 + 800e676: bd80 pop {r7, pc} + 800e678: 08010374 .word 0x08010374 -0800e654 : +0800e67c : UTIL_TIMER_Time_t UTIL_TIMER_GetElapsedTime(UTIL_TIMER_Time_t past ) { - 800e654: b580 push {r7, lr} - 800e656: b084 sub sp, #16 - 800e658: af00 add r7, sp, #0 - 800e65a: 6078 str r0, [r7, #4] + 800e67c: b580 push {r7, lr} + 800e67e: b084 sub sp, #16 + 800e680: af00 add r7, sp, #0 + 800e682: 6078 str r0, [r7, #4] uint32_t nowInTicks = UTIL_TimerDriver.GetTimerValue( ); - 800e65c: 4b0a ldr r3, [pc, #40] @ (800e688 ) - 800e65e: 69db ldr r3, [r3, #28] - 800e660: 4798 blx r3 - 800e662: 60f8 str r0, [r7, #12] + 800e684: 4b0a ldr r3, [pc, #40] @ (800e6b0 ) + 800e686: 69db ldr r3, [r3, #28] + 800e688: 4798 blx r3 + 800e68a: 60f8 str r0, [r7, #12] uint32_t pastInTicks = UTIL_TimerDriver.ms2Tick( past ); - 800e664: 4b08 ldr r3, [pc, #32] @ (800e688 ) - 800e666: 6a5b ldr r3, [r3, #36] @ 0x24 - 800e668: 6878 ldr r0, [r7, #4] - 800e66a: 4798 blx r3 - 800e66c: 60b8 str r0, [r7, #8] + 800e68c: 4b08 ldr r3, [pc, #32] @ (800e6b0 ) + 800e68e: 6a5b ldr r3, [r3, #36] @ 0x24 + 800e690: 6878 ldr r0, [r7, #4] + 800e692: 4798 blx r3 + 800e694: 60b8 str r0, [r7, #8] /* intentional wrap around. Works Ok if tick duation below 1ms */ return UTIL_TimerDriver.Tick2ms( nowInTicks- pastInTicks ); - 800e66e: 4b06 ldr r3, [pc, #24] @ (800e688 ) - 800e670: 6a9b ldr r3, [r3, #40] @ 0x28 - 800e672: 68f9 ldr r1, [r7, #12] - 800e674: 68ba ldr r2, [r7, #8] - 800e676: 1a8a subs r2, r1, r2 - 800e678: 4610 mov r0, r2 - 800e67a: 4798 blx r3 - 800e67c: 4603 mov r3, r0 + 800e696: 4b06 ldr r3, [pc, #24] @ (800e6b0 ) + 800e698: 6a9b ldr r3, [r3, #40] @ 0x28 + 800e69a: 68f9 ldr r1, [r7, #12] + 800e69c: 68ba ldr r2, [r7, #8] + 800e69e: 1a8a subs r2, r1, r2 + 800e6a0: 4610 mov r0, r2 + 800e6a2: 4798 blx r3 + 800e6a4: 4603 mov r3, r0 } - 800e67e: 4618 mov r0, r3 - 800e680: 3710 adds r7, #16 - 800e682: 46bd mov sp, r7 - 800e684: bd80 pop {r7, pc} - 800e686: bf00 nop - 800e688: 0801034c .word 0x0801034c + 800e6a6: 4618 mov r0, r3 + 800e6a8: 3710 adds r7, #16 + 800e6aa: 46bd mov sp, r7 + 800e6ac: bd80 pop {r7, pc} + 800e6ae: bf00 nop + 800e6b0: 08010374 .word 0x08010374 -0800e68c : +0800e6b4 : * * @param TimerObject Structure containing the timer object parameters * @retval 1 (the object is already in the list) or 0 */ bool TimerExists( UTIL_TIMER_Object_t *TimerObject ) { - 800e68c: b480 push {r7} - 800e68e: b085 sub sp, #20 - 800e690: af00 add r7, sp, #0 - 800e692: 6078 str r0, [r7, #4] + 800e6b4: b480 push {r7} + 800e6b6: b085 sub sp, #20 + 800e6b8: af00 add r7, sp, #0 + 800e6ba: 6078 str r0, [r7, #4] UTIL_TIMER_Object_t* cur = TimerListHead; - 800e694: 4b0a ldr r3, [pc, #40] @ (800e6c0 ) - 800e696: 681b ldr r3, [r3, #0] - 800e698: 60fb str r3, [r7, #12] + 800e6bc: 4b0a ldr r3, [pc, #40] @ (800e6e8 ) + 800e6be: 681b ldr r3, [r3, #0] + 800e6c0: 60fb str r3, [r7, #12] while( cur != NULL ) - 800e69a: e008 b.n 800e6ae + 800e6c2: e008 b.n 800e6d6 { if( cur == TimerObject ) - 800e69c: 68fa ldr r2, [r7, #12] - 800e69e: 687b ldr r3, [r7, #4] - 800e6a0: 429a cmp r2, r3 - 800e6a2: d101 bne.n 800e6a8 + 800e6c4: 68fa ldr r2, [r7, #12] + 800e6c6: 687b ldr r3, [r7, #4] + 800e6c8: 429a cmp r2, r3 + 800e6ca: d101 bne.n 800e6d0 { return true; - 800e6a4: 2301 movs r3, #1 - 800e6a6: e006 b.n 800e6b6 + 800e6cc: 2301 movs r3, #1 + 800e6ce: e006 b.n 800e6de } cur = cur->Next; - 800e6a8: 68fb ldr r3, [r7, #12] - 800e6aa: 695b ldr r3, [r3, #20] - 800e6ac: 60fb str r3, [r7, #12] + 800e6d0: 68fb ldr r3, [r7, #12] + 800e6d2: 695b ldr r3, [r3, #20] + 800e6d4: 60fb str r3, [r7, #12] while( cur != NULL ) - 800e6ae: 68fb ldr r3, [r7, #12] - 800e6b0: 2b00 cmp r3, #0 - 800e6b2: d1f3 bne.n 800e69c + 800e6d6: 68fb ldr r3, [r7, #12] + 800e6d8: 2b00 cmp r3, #0 + 800e6da: d1f3 bne.n 800e6c4 } return false; - 800e6b4: 2300 movs r3, #0 + 800e6dc: 2300 movs r3, #0 } - 800e6b6: 4618 mov r0, r3 - 800e6b8: 3714 adds r7, #20 - 800e6ba: 46bd mov sp, r7 - 800e6bc: bc80 pop {r7} - 800e6be: 4770 bx lr - 800e6c0: 20000c30 .word 0x20000c30 + 800e6de: 4618 mov r0, r3 + 800e6e0: 3714 adds r7, #20 + 800e6e2: 46bd mov sp, r7 + 800e6e4: bc80 pop {r7} + 800e6e6: 4770 bx lr + 800e6e8: 20000c68 .word 0x20000c68 -0800e6c4 : +0800e6ec : * @brief Sets a timeout with the duration "timestamp" * * @param TimerObject Structure containing the timer object parameters */ void TimerSetTimeout( UTIL_TIMER_Object_t *TimerObject ) { - 800e6c4: b590 push {r4, r7, lr} - 800e6c6: b085 sub sp, #20 - 800e6c8: af00 add r7, sp, #0 - 800e6ca: 6078 str r0, [r7, #4] + 800e6ec: b590 push {r4, r7, lr} + 800e6ee: b085 sub sp, #20 + 800e6f0: af00 add r7, sp, #0 + 800e6f2: 6078 str r0, [r7, #4] uint32_t minTicks= UTIL_TimerDriver.GetMinimumTimeout( ); - 800e6cc: 4b11 ldr r3, [pc, #68] @ (800e714 ) - 800e6ce: 6a1b ldr r3, [r3, #32] - 800e6d0: 4798 blx r3 - 800e6d2: 60f8 str r0, [r7, #12] + 800e6f4: 4b11 ldr r3, [pc, #68] @ (800e73c ) + 800e6f6: 6a1b ldr r3, [r3, #32] + 800e6f8: 4798 blx r3 + 800e6fa: 60f8 str r0, [r7, #12] TimerObject->IsPending = 1; - 800e6d4: 687b ldr r3, [r7, #4] - 800e6d6: 2201 movs r2, #1 - 800e6d8: 721a strb r2, [r3, #8] + 800e6fc: 687b ldr r3, [r7, #4] + 800e6fe: 2201 movs r2, #1 + 800e700: 721a strb r2, [r3, #8] /* In case deadline too soon */ if(TimerObject->Timestamp < (UTIL_TimerDriver.GetTimerElapsedTime( ) + minTicks) ) - 800e6da: 687b ldr r3, [r7, #4] - 800e6dc: 681c ldr r4, [r3, #0] - 800e6de: 4b0d ldr r3, [pc, #52] @ (800e714 ) - 800e6e0: 699b ldr r3, [r3, #24] - 800e6e2: 4798 blx r3 - 800e6e4: 4602 mov r2, r0 - 800e6e6: 68fb ldr r3, [r7, #12] - 800e6e8: 4413 add r3, r2 - 800e6ea: 429c cmp r4, r3 - 800e6ec: d207 bcs.n 800e6fe + 800e702: 687b ldr r3, [r7, #4] + 800e704: 681c ldr r4, [r3, #0] + 800e706: 4b0d ldr r3, [pc, #52] @ (800e73c ) + 800e708: 699b ldr r3, [r3, #24] + 800e70a: 4798 blx r3 + 800e70c: 4602 mov r2, r0 + 800e70e: 68fb ldr r3, [r7, #12] + 800e710: 4413 add r3, r2 + 800e712: 429c cmp r4, r3 + 800e714: d207 bcs.n 800e726 { TimerObject->Timestamp = UTIL_TimerDriver.GetTimerElapsedTime( ) + minTicks; - 800e6ee: 4b09 ldr r3, [pc, #36] @ (800e714 ) - 800e6f0: 699b ldr r3, [r3, #24] - 800e6f2: 4798 blx r3 - 800e6f4: 4602 mov r2, r0 - 800e6f6: 68fb ldr r3, [r7, #12] - 800e6f8: 441a add r2, r3 - 800e6fa: 687b ldr r3, [r7, #4] - 800e6fc: 601a str r2, [r3, #0] + 800e716: 4b09 ldr r3, [pc, #36] @ (800e73c ) + 800e718: 699b ldr r3, [r3, #24] + 800e71a: 4798 blx r3 + 800e71c: 4602 mov r2, r0 + 800e71e: 68fb ldr r3, [r7, #12] + 800e720: 441a add r2, r3 + 800e722: 687b ldr r3, [r7, #4] + 800e724: 601a str r2, [r3, #0] } UTIL_TimerDriver.StartTimerEvt( TimerObject->Timestamp ); - 800e6fe: 4b05 ldr r3, [pc, #20] @ (800e714 ) - 800e700: 689b ldr r3, [r3, #8] - 800e702: 687a ldr r2, [r7, #4] - 800e704: 6812 ldr r2, [r2, #0] - 800e706: 4610 mov r0, r2 - 800e708: 4798 blx r3 + 800e726: 4b05 ldr r3, [pc, #20] @ (800e73c ) + 800e728: 689b ldr r3, [r3, #8] + 800e72a: 687a ldr r2, [r7, #4] + 800e72c: 6812 ldr r2, [r2, #0] + 800e72e: 4610 mov r0, r2 + 800e730: 4798 blx r3 } - 800e70a: bf00 nop - 800e70c: 3714 adds r7, #20 - 800e70e: 46bd mov sp, r7 - 800e710: bd90 pop {r4, r7, pc} - 800e712: bf00 nop - 800e714: 0801034c .word 0x0801034c + 800e732: bf00 nop + 800e734: 3714 adds r7, #20 + 800e736: 46bd mov sp, r7 + 800e738: bd90 pop {r4, r7, pc} + 800e73a: bf00 nop + 800e73c: 08010374 .word 0x08010374 -0800e718 : +0800e740 : * next timer to expire. * * @param TimerObject Structure containing the timer object parameters */ void TimerInsertTimer( UTIL_TIMER_Object_t *TimerObject) { - 800e718: b480 push {r7} - 800e71a: b085 sub sp, #20 - 800e71c: af00 add r7, sp, #0 - 800e71e: 6078 str r0, [r7, #4] + 800e740: b480 push {r7} + 800e742: b085 sub sp, #20 + 800e744: af00 add r7, sp, #0 + 800e746: 6078 str r0, [r7, #4] UTIL_TIMER_Object_t* cur = TimerListHead; - 800e720: 4b14 ldr r3, [pc, #80] @ (800e774 ) - 800e722: 681b ldr r3, [r3, #0] - 800e724: 60fb str r3, [r7, #12] + 800e748: 4b14 ldr r3, [pc, #80] @ (800e79c ) + 800e74a: 681b ldr r3, [r3, #0] + 800e74c: 60fb str r3, [r7, #12] UTIL_TIMER_Object_t* next = TimerListHead->Next; - 800e726: 4b13 ldr r3, [pc, #76] @ (800e774 ) - 800e728: 681b ldr r3, [r3, #0] - 800e72a: 695b ldr r3, [r3, #20] - 800e72c: 60bb str r3, [r7, #8] + 800e74e: 4b13 ldr r3, [pc, #76] @ (800e79c ) + 800e750: 681b ldr r3, [r3, #0] + 800e752: 695b ldr r3, [r3, #20] + 800e754: 60bb str r3, [r7, #8] while (cur->Next != NULL ) - 800e72e: e012 b.n 800e756 + 800e756: e012 b.n 800e77e { if( TimerObject->Timestamp > next->Timestamp ) - 800e730: 687b ldr r3, [r7, #4] - 800e732: 681a ldr r2, [r3, #0] - 800e734: 68bb ldr r3, [r7, #8] - 800e736: 681b ldr r3, [r3, #0] - 800e738: 429a cmp r2, r3 - 800e73a: d905 bls.n 800e748 + 800e758: 687b ldr r3, [r7, #4] + 800e75a: 681a ldr r2, [r3, #0] + 800e75c: 68bb ldr r3, [r7, #8] + 800e75e: 681b ldr r3, [r3, #0] + 800e760: 429a cmp r2, r3 + 800e762: d905 bls.n 800e770 { cur = next; - 800e73c: 68bb ldr r3, [r7, #8] - 800e73e: 60fb str r3, [r7, #12] + 800e764: 68bb ldr r3, [r7, #8] + 800e766: 60fb str r3, [r7, #12] next = next->Next; - 800e740: 68bb ldr r3, [r7, #8] - 800e742: 695b ldr r3, [r3, #20] - 800e744: 60bb str r3, [r7, #8] - 800e746: e006 b.n 800e756 + 800e768: 68bb ldr r3, [r7, #8] + 800e76a: 695b ldr r3, [r3, #20] + 800e76c: 60bb str r3, [r7, #8] + 800e76e: e006 b.n 800e77e } else { cur->Next = TimerObject; - 800e748: 68fb ldr r3, [r7, #12] - 800e74a: 687a ldr r2, [r7, #4] - 800e74c: 615a str r2, [r3, #20] + 800e770: 68fb ldr r3, [r7, #12] + 800e772: 687a ldr r2, [r7, #4] + 800e774: 615a str r2, [r3, #20] TimerObject->Next = next; - 800e74e: 687b ldr r3, [r7, #4] - 800e750: 68ba ldr r2, [r7, #8] - 800e752: 615a str r2, [r3, #20] + 800e776: 687b ldr r3, [r7, #4] + 800e778: 68ba ldr r2, [r7, #8] + 800e77a: 615a str r2, [r3, #20] return; - 800e754: e009 b.n 800e76a + 800e77c: e009 b.n 800e792 while (cur->Next != NULL ) - 800e756: 68fb ldr r3, [r7, #12] - 800e758: 695b ldr r3, [r3, #20] - 800e75a: 2b00 cmp r3, #0 - 800e75c: d1e8 bne.n 800e730 + 800e77e: 68fb ldr r3, [r7, #12] + 800e780: 695b ldr r3, [r3, #20] + 800e782: 2b00 cmp r3, #0 + 800e784: d1e8 bne.n 800e758 } } cur->Next = TimerObject; - 800e75e: 68fb ldr r3, [r7, #12] - 800e760: 687a ldr r2, [r7, #4] - 800e762: 615a str r2, [r3, #20] + 800e786: 68fb ldr r3, [r7, #12] + 800e788: 687a ldr r2, [r7, #4] + 800e78a: 615a str r2, [r3, #20] TimerObject->Next = NULL; - 800e764: 687b ldr r3, [r7, #4] - 800e766: 2200 movs r2, #0 - 800e768: 615a str r2, [r3, #20] + 800e78c: 687b ldr r3, [r7, #4] + 800e78e: 2200 movs r2, #0 + 800e790: 615a str r2, [r3, #20] } - 800e76a: 3714 adds r7, #20 - 800e76c: 46bd mov sp, r7 - 800e76e: bc80 pop {r7} - 800e770: 4770 bx lr - 800e772: bf00 nop - 800e774: 20000c30 .word 0x20000c30 + 800e792: 3714 adds r7, #20 + 800e794: 46bd mov sp, r7 + 800e796: bc80 pop {r7} + 800e798: 4770 bx lr + 800e79a: bf00 nop + 800e79c: 20000c68 .word 0x20000c68 -0800e778 : +0800e7a0 : * * @remark The list is automatically sorted. The list head always contains the * next timer to expire. */ void TimerInsertNewHeadTimer( UTIL_TIMER_Object_t *TimerObject ) { - 800e778: b580 push {r7, lr} - 800e77a: b084 sub sp, #16 - 800e77c: af00 add r7, sp, #0 - 800e77e: 6078 str r0, [r7, #4] + 800e7a0: b580 push {r7, lr} + 800e7a2: b084 sub sp, #16 + 800e7a4: af00 add r7, sp, #0 + 800e7a6: 6078 str r0, [r7, #4] UTIL_TIMER_Object_t* cur = TimerListHead; - 800e780: 4b0b ldr r3, [pc, #44] @ (800e7b0 ) - 800e782: 681b ldr r3, [r3, #0] - 800e784: 60fb str r3, [r7, #12] + 800e7a8: 4b0b ldr r3, [pc, #44] @ (800e7d8 ) + 800e7aa: 681b ldr r3, [r3, #0] + 800e7ac: 60fb str r3, [r7, #12] if( cur != NULL ) - 800e786: 68fb ldr r3, [r7, #12] - 800e788: 2b00 cmp r3, #0 - 800e78a: d002 beq.n 800e792 + 800e7ae: 68fb ldr r3, [r7, #12] + 800e7b0: 2b00 cmp r3, #0 + 800e7b2: d002 beq.n 800e7ba { cur->IsPending = 0; - 800e78c: 68fb ldr r3, [r7, #12] - 800e78e: 2200 movs r2, #0 - 800e790: 721a strb r2, [r3, #8] + 800e7b4: 68fb ldr r3, [r7, #12] + 800e7b6: 2200 movs r2, #0 + 800e7b8: 721a strb r2, [r3, #8] } TimerObject->Next = cur; - 800e792: 687b ldr r3, [r7, #4] - 800e794: 68fa ldr r2, [r7, #12] - 800e796: 615a str r2, [r3, #20] + 800e7ba: 687b ldr r3, [r7, #4] + 800e7bc: 68fa ldr r2, [r7, #12] + 800e7be: 615a str r2, [r3, #20] TimerListHead = TimerObject; - 800e798: 4a05 ldr r2, [pc, #20] @ (800e7b0 ) - 800e79a: 687b ldr r3, [r7, #4] - 800e79c: 6013 str r3, [r2, #0] + 800e7c0: 4a05 ldr r2, [pc, #20] @ (800e7d8 ) + 800e7c2: 687b ldr r3, [r7, #4] + 800e7c4: 6013 str r3, [r2, #0] TimerSetTimeout( TimerListHead ); - 800e79e: 4b04 ldr r3, [pc, #16] @ (800e7b0 ) - 800e7a0: 681b ldr r3, [r3, #0] - 800e7a2: 4618 mov r0, r3 - 800e7a4: f7ff ff8e bl 800e6c4 + 800e7c6: 4b04 ldr r3, [pc, #16] @ (800e7d8 ) + 800e7c8: 681b ldr r3, [r3, #0] + 800e7ca: 4618 mov r0, r3 + 800e7cc: f7ff ff8e bl 800e6ec } - 800e7a8: bf00 nop - 800e7aa: 3710 adds r7, #16 - 800e7ac: 46bd mov sp, r7 - 800e7ae: bd80 pop {r7, pc} - 800e7b0: 20000c30 .word 0x20000c30 + 800e7d0: bf00 nop + 800e7d2: 3710 adds r7, #16 + 800e7d4: 46bd mov sp, r7 + 800e7d6: bd80 pop {r7, pc} + 800e7d8: 20000c68 .word 0x20000c68 -0800e7b4 : +0800e7dc : /** @addtogroup ADV_TRACE_exported_function * @{ */ UTIL_ADV_TRACE_Status_t UTIL_ADV_TRACE_Init(void) { - 800e7b4: b580 push {r7, lr} - 800e7b6: af00 add r7, sp, #0 + 800e7dc: b580 push {r7, lr} + 800e7de: af00 add r7, sp, #0 /* initialize the Ptr for Read/Write */ (void)UTIL_ADV_TRACE_MEMSET8(&ADV_TRACE_Ctx, 0x0, sizeof(ADV_TRACE_Context)); - 800e7b8: 2218 movs r2, #24 - 800e7ba: 2100 movs r1, #0 - 800e7bc: 4807 ldr r0, [pc, #28] @ (800e7dc ) - 800e7be: f7ff f936 bl 800da2e + 800e7e0: 2218 movs r2, #24 + 800e7e2: 2100 movs r1, #0 + 800e7e4: 4807 ldr r0, [pc, #28] @ (800e804 ) + 800e7e6: f7ff f936 bl 800da56 (void)UTIL_ADV_TRACE_MEMSET8(&ADV_TRACE_Buffer, 0x0, sizeof(ADV_TRACE_Buffer)); - 800e7c2: f44f 7200 mov.w r2, #512 @ 0x200 - 800e7c6: 2100 movs r1, #0 - 800e7c8: 4805 ldr r0, [pc, #20] @ (800e7e0 ) - 800e7ca: f7ff f930 bl 800da2e + 800e7ea: f44f 7200 mov.w r2, #512 @ 0x200 + 800e7ee: 2100 movs r1, #0 + 800e7f0: 4805 ldr r0, [pc, #20] @ (800e808 ) + 800e7f2: f7ff f930 bl 800da56 #endif /* Allocate Lock resource */ UTIL_ADV_TRACE_INIT_CRITICAL_SECTION(); /* Initialize the Low Level interface */ return UTIL_TraceDriver.Init(TRACE_TxCpltCallback); - 800e7ce: 4b05 ldr r3, [pc, #20] @ (800e7e4 ) - 800e7d0: 681b ldr r3, [r3, #0] - 800e7d2: 4805 ldr r0, [pc, #20] @ (800e7e8 ) - 800e7d4: 4798 blx r3 - 800e7d6: 4603 mov r3, r0 + 800e7f6: 4b05 ldr r3, [pc, #20] @ (800e80c ) + 800e7f8: 681b ldr r3, [r3, #0] + 800e7fa: 4805 ldr r0, [pc, #20] @ (800e810 ) + 800e7fc: 4798 blx r3 + 800e7fe: 4603 mov r3, r0 } - 800e7d8: 4618 mov r0, r3 - 800e7da: bd80 pop {r7, pc} - 800e7dc: 20000c34 .word 0x20000c34 - 800e7e0: 20000c4c .word 0x20000c4c - 800e7e4: 0801038c .word 0x0801038c - 800e7e8: 0800ea31 .word 0x0800ea31 + 800e800: 4618 mov r0, r3 + 800e802: bd80 pop {r7, pc} + 800e804: 20000c6c .word 0x20000c6c + 800e808: 20000c84 .word 0x20000c84 + 800e80c: 080103b4 .word 0x080103b4 + 800e810: 0800ea59 .word 0x0800ea59 -0800e7ec : +0800e814 : return UTIL_TraceDriver.StartRx(UserCallback); } #if defined(UTIL_ADV_TRACE_CONDITIONNAL) UTIL_ADV_TRACE_Status_t UTIL_ADV_TRACE_COND_FSend(uint32_t VerboseLevel, uint32_t Region, uint32_t TimeStampState, const char *strFormat, ...) { - 800e7ec: b408 push {r3} - 800e7ee: b580 push {r7, lr} - 800e7f0: b08d sub sp, #52 @ 0x34 - 800e7f2: af00 add r7, sp, #0 - 800e7f4: 60f8 str r0, [r7, #12] - 800e7f6: 60b9 str r1, [r7, #8] - 800e7f8: 607a str r2, [r7, #4] + 800e814: b408 push {r3} + 800e816: b580 push {r7, lr} + 800e818: b08d sub sp, #52 @ 0x34 + 800e81a: af00 add r7, sp, #0 + 800e81c: 60f8 str r0, [r7, #12] + 800e81e: 60b9 str r1, [r7, #8] + 800e820: 607a str r2, [r7, #4] va_list vaArgs; #if defined(UTIL_ADV_TRACE_UNCHUNK_MODE) uint8_t buf[UTIL_ADV_TRACE_TMP_MAX_TIMESTMAP_SIZE]; uint16_t timestamp_size = 0u; - 800e7fa: 2300 movs r3, #0 - 800e7fc: 82fb strh r3, [r7, #22] + 800e822: 2300 movs r3, #0 + 800e824: 82fb strh r3, [r7, #22] uint16_t writepos; uint16_t idx; #else uint8_t buf[UTIL_ADV_TRACE_TMP_BUF_SIZE+UTIL_ADV_TRACE_TMP_MAX_TIMESTMAP_SIZE]; #endif uint16_t buff_size = 0u; - 800e7fe: 2300 movs r3, #0 - 800e800: 85bb strh r3, [r7, #44] @ 0x2c + 800e826: 2300 movs r3, #0 + 800e828: 85bb strh r3, [r7, #44] @ 0x2c /* check verbose level */ if(!(ADV_TRACE_Ctx.CurrentVerboseLevel >= VerboseLevel)) - 800e802: 4b37 ldr r3, [pc, #220] @ (800e8e0 ) - 800e804: 7a1b ldrb r3, [r3, #8] - 800e806: 461a mov r2, r3 - 800e808: 68fb ldr r3, [r7, #12] - 800e80a: 4293 cmp r3, r2 - 800e80c: d902 bls.n 800e814 + 800e82a: 4b37 ldr r3, [pc, #220] @ (800e908 ) + 800e82c: 7a1b ldrb r3, [r3, #8] + 800e82e: 461a mov r2, r3 + 800e830: 68fb ldr r3, [r7, #12] + 800e832: 4293 cmp r3, r2 + 800e834: d902 bls.n 800e83c { return UTIL_ADV_TRACE_GIVEUP; - 800e80e: f06f 0304 mvn.w r3, #4 - 800e812: e05e b.n 800e8d2 + 800e836: f06f 0304 mvn.w r3, #4 + 800e83a: e05e b.n 800e8fa } if((Region & ADV_TRACE_Ctx.RegionMask) != Region) - 800e814: 4b32 ldr r3, [pc, #200] @ (800e8e0 ) - 800e816: 68da ldr r2, [r3, #12] - 800e818: 68bb ldr r3, [r7, #8] - 800e81a: 4013 ands r3, r2 - 800e81c: 68ba ldr r2, [r7, #8] - 800e81e: 429a cmp r2, r3 - 800e820: d002 beq.n 800e828 + 800e83c: 4b32 ldr r3, [pc, #200] @ (800e908 ) + 800e83e: 68da ldr r2, [r3, #12] + 800e840: 68bb ldr r3, [r7, #8] + 800e842: 4013 ands r3, r2 + 800e844: 68ba ldr r2, [r7, #8] + 800e846: 429a cmp r2, r3 + 800e848: d002 beq.n 800e850 { return UTIL_ADV_TRACE_REGIONMASKED; - 800e822: f06f 0305 mvn.w r3, #5 - 800e826: e054 b.n 800e8d2 + 800e84a: f06f 0305 mvn.w r3, #5 + 800e84e: e054 b.n 800e8fa } #if defined(UTIL_ADV_TRACE_UNCHUNK_MODE) if((ADV_TRACE_Ctx.timestamp_func != NULL) && (TimeStampState != 0u)) - 800e828: 4b2d ldr r3, [pc, #180] @ (800e8e0 ) - 800e82a: 685b ldr r3, [r3, #4] - 800e82c: 2b00 cmp r3, #0 - 800e82e: d00a beq.n 800e846 - 800e830: 687b ldr r3, [r7, #4] - 800e832: 2b00 cmp r3, #0 - 800e834: d007 beq.n 800e846 + 800e850: 4b2d ldr r3, [pc, #180] @ (800e908 ) + 800e852: 685b ldr r3, [r3, #4] + 800e854: 2b00 cmp r3, #0 + 800e856: d00a beq.n 800e86e + 800e858: 687b ldr r3, [r7, #4] + 800e85a: 2b00 cmp r3, #0 + 800e85c: d007 beq.n 800e86e { ADV_TRACE_Ctx.timestamp_func(buf,×tamp_size); - 800e836: 4b2a ldr r3, [pc, #168] @ (800e8e0 ) - 800e838: 685b ldr r3, [r3, #4] - 800e83a: f107 0116 add.w r1, r7, #22 - 800e83e: f107 0218 add.w r2, r7, #24 - 800e842: 4610 mov r0, r2 - 800e844: 4798 blx r3 + 800e85e: 4b2a ldr r3, [pc, #168] @ (800e908 ) + 800e860: 685b ldr r3, [r3, #4] + 800e862: f107 0116 add.w r1, r7, #22 + 800e866: f107 0218 add.w r2, r7, #24 + 800e86a: 4610 mov r0, r2 + 800e86c: 4798 blx r3 } va_start( vaArgs, strFormat); - 800e846: f107 0340 add.w r3, r7, #64 @ 0x40 - 800e84a: 62bb str r3, [r7, #40] @ 0x28 + 800e86e: f107 0340 add.w r3, r7, #64 @ 0x40 + 800e872: 62bb str r3, [r7, #40] @ 0x28 buff_size =(uint16_t)UTIL_ADV_TRACE_VSNPRINTF((char *)sztmp,UTIL_ADV_TRACE_TMP_BUF_SIZE, strFormat, vaArgs); - 800e84c: 6abb ldr r3, [r7, #40] @ 0x28 - 800e84e: 6bfa ldr r2, [r7, #60] @ 0x3c - 800e850: f44f 7180 mov.w r1, #256 @ 0x100 - 800e854: 4823 ldr r0, [pc, #140] @ (800e8e4 ) - 800e856: f7ff fa8b bl 800dd70 - 800e85a: 4603 mov r3, r0 - 800e85c: 85bb strh r3, [r7, #44] @ 0x2c + 800e874: 6abb ldr r3, [r7, #40] @ 0x28 + 800e876: 6bfa ldr r2, [r7, #60] @ 0x3c + 800e878: f44f 7180 mov.w r1, #256 @ 0x100 + 800e87c: 4823 ldr r0, [pc, #140] @ (800e90c ) + 800e87e: f7ff fa8b bl 800dd98 + 800e882: 4603 mov r3, r0 + 800e884: 85bb strh r3, [r7, #44] @ 0x2c TRACE_Lock(); - 800e85e: f000 f9f1 bl 800ec44 + 800e886: f000 f9f1 bl 800ec6c /* if allocation is ok, write data into the buffer */ if (TRACE_AllocateBufer((buff_size+timestamp_size),&writepos) != -1) - 800e862: 8afa ldrh r2, [r7, #22] - 800e864: 8dbb ldrh r3, [r7, #44] @ 0x2c - 800e866: 4413 add r3, r2 - 800e868: b29b uxth r3, r3 - 800e86a: f107 0214 add.w r2, r7, #20 - 800e86e: 4611 mov r1, r2 - 800e870: 4618 mov r0, r3 - 800e872: f000 f969 bl 800eb48 - 800e876: 4603 mov r3, r0 - 800e878: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff - 800e87c: d025 beq.n 800e8ca + 800e88a: 8afa ldrh r2, [r7, #22] + 800e88c: 8dbb ldrh r3, [r7, #44] @ 0x2c + 800e88e: 4413 add r3, r2 + 800e890: b29b uxth r3, r3 + 800e892: f107 0214 add.w r2, r7, #20 + 800e896: 4611 mov r1, r2 + 800e898: 4618 mov r0, r3 + 800e89a: f000 f969 bl 800eb70 + 800e89e: 4603 mov r3, r0 + 800e8a0: f1b3 3fff cmp.w r3, #4294967295 @ 0xffffffff + 800e8a4: d025 beq.n 800e8f2 } UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); #endif /* copy the timestamp */ for (idx = 0u; idx < timestamp_size; idx++) - 800e87e: 2300 movs r3, #0 - 800e880: 85fb strh r3, [r7, #46] @ 0x2e - 800e882: e00e b.n 800e8a2 + 800e8a6: 2300 movs r3, #0 + 800e8a8: 85fb strh r3, [r7, #46] @ 0x2e + 800e8aa: e00e b.n 800e8ca { ADV_TRACE_Buffer[writepos] = buf[idx]; - 800e884: 8dfb ldrh r3, [r7, #46] @ 0x2e - 800e886: 8aba ldrh r2, [r7, #20] - 800e888: 3330 adds r3, #48 @ 0x30 - 800e88a: 443b add r3, r7 - 800e88c: f813 1c18 ldrb.w r1, [r3, #-24] - 800e890: 4b15 ldr r3, [pc, #84] @ (800e8e8 ) - 800e892: 5499 strb r1, [r3, r2] + 800e8ac: 8dfb ldrh r3, [r7, #46] @ 0x2e + 800e8ae: 8aba ldrh r2, [r7, #20] + 800e8b0: 3330 adds r3, #48 @ 0x30 + 800e8b2: 443b add r3, r7 + 800e8b4: f813 1c18 ldrb.w r1, [r3, #-24] + 800e8b8: 4b15 ldr r3, [pc, #84] @ (800e910 ) + 800e8ba: 5499 strb r1, [r3, r2] writepos = writepos + 1u; - 800e894: 8abb ldrh r3, [r7, #20] - 800e896: 3301 adds r3, #1 - 800e898: b29b uxth r3, r3 - 800e89a: 82bb strh r3, [r7, #20] + 800e8bc: 8abb ldrh r3, [r7, #20] + 800e8be: 3301 adds r3, #1 + 800e8c0: b29b uxth r3, r3 + 800e8c2: 82bb strh r3, [r7, #20] for (idx = 0u; idx < timestamp_size; idx++) - 800e89c: 8dfb ldrh r3, [r7, #46] @ 0x2e - 800e89e: 3301 adds r3, #1 - 800e8a0: 85fb strh r3, [r7, #46] @ 0x2e - 800e8a2: 8afb ldrh r3, [r7, #22] - 800e8a4: 8dfa ldrh r2, [r7, #46] @ 0x2e - 800e8a6: 429a cmp r2, r3 - 800e8a8: d3ec bcc.n 800e884 + 800e8c4: 8dfb ldrh r3, [r7, #46] @ 0x2e + 800e8c6: 3301 adds r3, #1 + 800e8c8: 85fb strh r3, [r7, #46] @ 0x2e + 800e8ca: 8afb ldrh r3, [r7, #22] + 800e8cc: 8dfa ldrh r2, [r7, #46] @ 0x2e + 800e8ce: 429a cmp r2, r3 + 800e8d0: d3ec bcc.n 800e8ac } /* copy the data */ (void)UTIL_ADV_TRACE_VSNPRINTF((char *)(&ADV_TRACE_Buffer[writepos]), UTIL_ADV_TRACE_TMP_BUF_SIZE, strFormat, vaArgs); - 800e8aa: 8abb ldrh r3, [r7, #20] - 800e8ac: 461a mov r2, r3 - 800e8ae: 4b0e ldr r3, [pc, #56] @ (800e8e8 ) - 800e8b0: 18d0 adds r0, r2, r3 - 800e8b2: 6abb ldr r3, [r7, #40] @ 0x28 - 800e8b4: 6bfa ldr r2, [r7, #60] @ 0x3c - 800e8b6: f44f 7180 mov.w r1, #256 @ 0x100 - 800e8ba: f7ff fa59 bl 800dd70 + 800e8d2: 8abb ldrh r3, [r7, #20] + 800e8d4: 461a mov r2, r3 + 800e8d6: 4b0e ldr r3, [pc, #56] @ (800e910 ) + 800e8d8: 18d0 adds r0, r2, r3 + 800e8da: 6abb ldr r3, [r7, #40] @ 0x28 + 800e8dc: 6bfa ldr r2, [r7, #60] @ 0x3c + 800e8de: f44f 7180 mov.w r1, #256 @ 0x100 + 800e8e2: f7ff fa59 bl 800dd98 va_end(vaArgs); TRACE_UnLock(); - 800e8be: f000 f9df bl 800ec80 + 800e8e6: f000 f9df bl 800eca8 return TRACE_Send(); - 800e8c2: f000 f831 bl 800e928 - 800e8c6: 4603 mov r3, r0 - 800e8c8: e003 b.n 800e8d2 + 800e8ea: f000 f831 bl 800e950 + 800e8ee: 4603 mov r3, r0 + 800e8f0: e003 b.n 800e8fa } va_end(vaArgs); TRACE_UnLock(); - 800e8ca: f000 f9d9 bl 800ec80 + 800e8f2: f000 f9d9 bl 800eca8 ADV_TRACE_Ctx.OverRunStatus = TRACE_OVERRUN_INDICATION; } UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); #endif return UTIL_ADV_TRACE_MEM_FULL; - 800e8ce: f06f 0302 mvn.w r3, #2 + 800e8f6: f06f 0302 mvn.w r3, #2 buff_size += (uint16_t) UTIL_ADV_TRACE_VSNPRINTF((char* )(buf + buff_size), UTIL_ADV_TRACE_TMP_BUF_SIZE, strFormat, vaArgs); va_end(vaArgs); return UTIL_ADV_TRACE_Send(buf, buff_size); #endif } - 800e8d2: 4618 mov r0, r3 - 800e8d4: 3734 adds r7, #52 @ 0x34 - 800e8d6: 46bd mov sp, r7 - 800e8d8: e8bd 4080 ldmia.w sp!, {r7, lr} - 800e8dc: b001 add sp, #4 - 800e8de: 4770 bx lr - 800e8e0: 20000c34 .word 0x20000c34 - 800e8e4: 20000e4c .word 0x20000e4c - 800e8e8: 20000c4c .word 0x20000c4c + 800e8fa: 4618 mov r0, r3 + 800e8fc: 3734 adds r7, #52 @ 0x34 + 800e8fe: 46bd mov sp, r7 + 800e900: e8bd 4080 ldmia.w sp!, {r7, lr} + 800e904: b001 add sp, #4 + 800e906: 4770 bx lr + 800e908: 20000c6c .word 0x20000c6c + 800e90c: 20000e84 .word 0x20000e84 + 800e910: 20000c84 .word 0x20000c84 -0800e8ec : +0800e914 : } #endif #if defined(UTIL_ADV_TRACE_CONDITIONNAL) void UTIL_ADV_TRACE_RegisterTimeStampFunction(cb_timestamp *cb) { - 800e8ec: b480 push {r7} - 800e8ee: b083 sub sp, #12 - 800e8f0: af00 add r7, sp, #0 - 800e8f2: 6078 str r0, [r7, #4] + 800e914: b480 push {r7} + 800e916: b083 sub sp, #12 + 800e918: af00 add r7, sp, #0 + 800e91a: 6078 str r0, [r7, #4] ADV_TRACE_Ctx.timestamp_func = *cb; - 800e8f4: 4a03 ldr r2, [pc, #12] @ (800e904 ) - 800e8f6: 687b ldr r3, [r7, #4] - 800e8f8: 6053 str r3, [r2, #4] + 800e91c: 4a03 ldr r2, [pc, #12] @ (800e92c ) + 800e91e: 687b ldr r3, [r7, #4] + 800e920: 6053 str r3, [r2, #4] } - 800e8fa: bf00 nop - 800e8fc: 370c adds r7, #12 - 800e8fe: 46bd mov sp, r7 - 800e900: bc80 pop {r7} - 800e902: 4770 bx lr - 800e904: 20000c34 .word 0x20000c34 + 800e922: bf00 nop + 800e924: 370c adds r7, #12 + 800e926: 46bd mov sp, r7 + 800e928: bc80 pop {r7} + 800e92a: 4770 bx lr + 800e92c: 20000c6c .word 0x20000c6c -0800e908 : +0800e930 : void UTIL_ADV_TRACE_SetVerboseLevel(uint8_t Level) { - 800e908: b480 push {r7} - 800e90a: b083 sub sp, #12 - 800e90c: af00 add r7, sp, #0 - 800e90e: 4603 mov r3, r0 - 800e910: 71fb strb r3, [r7, #7] + 800e930: b480 push {r7} + 800e932: b083 sub sp, #12 + 800e934: af00 add r7, sp, #0 + 800e936: 4603 mov r3, r0 + 800e938: 71fb strb r3, [r7, #7] ADV_TRACE_Ctx.CurrentVerboseLevel = Level; - 800e912: 4a04 ldr r2, [pc, #16] @ (800e924 ) - 800e914: 79fb ldrb r3, [r7, #7] - 800e916: 7213 strb r3, [r2, #8] + 800e93a: 4a04 ldr r2, [pc, #16] @ (800e94c ) + 800e93c: 79fb ldrb r3, [r7, #7] + 800e93e: 7213 strb r3, [r2, #8] } - 800e918: bf00 nop - 800e91a: 370c adds r7, #12 - 800e91c: 46bd mov sp, r7 - 800e91e: bc80 pop {r7} - 800e920: 4770 bx lr - 800e922: bf00 nop - 800e924: 20000c34 .word 0x20000c34 + 800e940: bf00 nop + 800e942: 370c adds r7, #12 + 800e944: 46bd mov sp, r7 + 800e946: bc80 pop {r7} + 800e948: 4770 bx lr + 800e94a: bf00 nop + 800e94c: 20000c6c .word 0x20000c6c -0800e928 : +0800e950 : /** * @brief send the data of the trace to low layer * @retval Status based on @ref UTIL_ADV_TRACE_Status_t */ static UTIL_ADV_TRACE_Status_t TRACE_Send(void) { - 800e928: b580 push {r7, lr} - 800e92a: b088 sub sp, #32 - 800e92c: af00 add r7, sp, #0 + 800e950: b580 push {r7, lr} + 800e952: b088 sub sp, #32 + 800e954: af00 add r7, sp, #0 UTIL_ADV_TRACE_Status_t ret = UTIL_ADV_TRACE_OK; - 800e92e: 2300 movs r3, #0 - 800e930: 77fb strb r3, [r7, #31] + 800e956: 2300 movs r3, #0 + 800e958: 77fb strb r3, [r7, #31] uint8_t *ptr = NULL; - 800e932: 2300 movs r3, #0 - 800e934: 61bb str r3, [r7, #24] + 800e95a: 2300 movs r3, #0 + 800e95c: 61bb str r3, [r7, #24] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800e936: f3ef 8310 mrs r3, PRIMASK - 800e93a: 613b str r3, [r7, #16] + 800e95e: f3ef 8310 mrs r3, PRIMASK + 800e962: 613b str r3, [r7, #16] return(result); - 800e93c: 693b ldr r3, [r7, #16] + 800e964: 693b ldr r3, [r7, #16] UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); - 800e93e: 617b str r3, [r7, #20] + 800e966: 617b str r3, [r7, #20] __ASM volatile ("cpsid i" : : : "memory"); - 800e940: b672 cpsid i + 800e968: b672 cpsid i } - 800e942: bf00 nop + 800e96a: bf00 nop if(TRACE_IsLocked() == 0u) - 800e944: f000 f9ba bl 800ecbc - 800e948: 4603 mov r3, r0 - 800e94a: 2b00 cmp r3, #0 - 800e94c: d15d bne.n 800ea0a + 800e96c: f000 f9ba bl 800ece4 + 800e970: 4603 mov r3, r0 + 800e972: 2b00 cmp r3, #0 + 800e974: d15d bne.n 800ea32 { TRACE_Lock(); - 800e94e: f000 f979 bl 800ec44 + 800e976: f000 f979 bl 800ec6c if(ADV_TRACE_Ctx.TraceRdPtr != ADV_TRACE_Ctx.TraceWrPtr) - 800e952: 4b34 ldr r3, [pc, #208] @ (800ea24 ) - 800e954: 8a1a ldrh r2, [r3, #16] - 800e956: 4b33 ldr r3, [pc, #204] @ (800ea24 ) - 800e958: 8a5b ldrh r3, [r3, #18] - 800e95a: 429a cmp r2, r3 - 800e95c: d04d beq.n 800e9fa + 800e97a: 4b34 ldr r3, [pc, #208] @ (800ea4c ) + 800e97c: 8a1a ldrh r2, [r3, #16] + 800e97e: 4b33 ldr r3, [pc, #204] @ (800ea4c ) + 800e980: 8a5b ldrh r3, [r3, #18] + 800e982: 429a cmp r2, r3 + 800e984: d04d beq.n 800ea22 { #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE if(TRACE_UNCHUNK_DETECTED == ADV_TRACE_Ctx.unchunk_status) - 800e95e: 4b31 ldr r3, [pc, #196] @ (800ea24 ) - 800e960: 789b ldrb r3, [r3, #2] - 800e962: 2b01 cmp r3, #1 - 800e964: d117 bne.n 800e996 + 800e986: 4b31 ldr r3, [pc, #196] @ (800ea4c ) + 800e988: 789b ldrb r3, [r3, #2] + 800e98a: 2b01 cmp r3, #1 + 800e98c: d117 bne.n 800e9be { ADV_TRACE_Ctx.TraceSentSize = (uint16_t) (ADV_TRACE_Ctx.unchunk_enabled - ADV_TRACE_Ctx.TraceRdPtr); - 800e966: 4b2f ldr r3, [pc, #188] @ (800ea24 ) - 800e968: 881a ldrh r2, [r3, #0] - 800e96a: 4b2e ldr r3, [pc, #184] @ (800ea24 ) - 800e96c: 8a1b ldrh r3, [r3, #16] - 800e96e: 1ad3 subs r3, r2, r3 - 800e970: b29a uxth r2, r3 - 800e972: 4b2c ldr r3, [pc, #176] @ (800ea24 ) - 800e974: 829a strh r2, [r3, #20] + 800e98e: 4b2f ldr r3, [pc, #188] @ (800ea4c ) + 800e990: 881a ldrh r2, [r3, #0] + 800e992: 4b2e ldr r3, [pc, #184] @ (800ea4c ) + 800e994: 8a1b ldrh r3, [r3, #16] + 800e996: 1ad3 subs r3, r2, r3 + 800e998: b29a uxth r2, r3 + 800e99a: 4b2c ldr r3, [pc, #176] @ (800ea4c ) + 800e99c: 829a strh r2, [r3, #20] ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_TRANSFER; - 800e976: 4b2b ldr r3, [pc, #172] @ (800ea24 ) - 800e978: 2202 movs r2, #2 - 800e97a: 709a strb r2, [r3, #2] + 800e99e: 4b2b ldr r3, [pc, #172] @ (800ea4c ) + 800e9a0: 2202 movs r2, #2 + 800e9a2: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.unchunk_enabled = 0; - 800e97c: 4b29 ldr r3, [pc, #164] @ (800ea24 ) - 800e97e: 2200 movs r2, #0 - 800e980: 801a strh r2, [r3, #0] + 800e9a4: 4b29 ldr r3, [pc, #164] @ (800ea4c ) + 800e9a6: 2200 movs r2, #0 + 800e9a8: 801a strh r2, [r3, #0] UTIL_ADV_TRACE_DEBUG("\nTRACE_TxCpltCallback::unchunk start(%d,%d)\n", ADV_TRACE_Ctx.unchunk_enabled, ADV_TRACE_Ctx.TraceRdPtr); if(0u == ADV_TRACE_Ctx.TraceSentSize) - 800e982: 4b28 ldr r3, [pc, #160] @ (800ea24 ) - 800e984: 8a9b ldrh r3, [r3, #20] - 800e986: 2b00 cmp r3, #0 - 800e988: d105 bne.n 800e996 + 800e9aa: 4b28 ldr r3, [pc, #160] @ (800ea4c ) + 800e9ac: 8a9b ldrh r3, [r3, #20] + 800e9ae: 2b00 cmp r3, #0 + 800e9b0: d105 bne.n 800e9be { ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; - 800e98a: 4b26 ldr r3, [pc, #152] @ (800ea24 ) - 800e98c: 2200 movs r2, #0 - 800e98e: 709a strb r2, [r3, #2] + 800e9b2: 4b26 ldr r3, [pc, #152] @ (800ea4c ) + 800e9b4: 2200 movs r2, #0 + 800e9b6: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.TraceRdPtr = 0; - 800e990: 4b24 ldr r3, [pc, #144] @ (800ea24 ) - 800e992: 2200 movs r2, #0 - 800e994: 821a strh r2, [r3, #16] + 800e9b8: 4b24 ldr r3, [pc, #144] @ (800ea4c ) + 800e9ba: 2200 movs r2, #0 + 800e9bc: 821a strh r2, [r3, #16] } } if(TRACE_UNCHUNK_NONE == ADV_TRACE_Ctx.unchunk_status) - 800e996: 4b23 ldr r3, [pc, #140] @ (800ea24 ) - 800e998: 789b ldrb r3, [r3, #2] - 800e99a: 2b00 cmp r3, #0 - 800e99c: d115 bne.n 800e9ca + 800e9be: 4b23 ldr r3, [pc, #140] @ (800ea4c ) + 800e9c0: 789b ldrb r3, [r3, #2] + 800e9c2: 2b00 cmp r3, #0 + 800e9c4: d115 bne.n 800e9f2 { #endif if(ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) - 800e99e: 4b21 ldr r3, [pc, #132] @ (800ea24 ) - 800e9a0: 8a5a ldrh r2, [r3, #18] - 800e9a2: 4b20 ldr r3, [pc, #128] @ (800ea24 ) - 800e9a4: 8a1b ldrh r3, [r3, #16] - 800e9a6: 429a cmp r2, r3 - 800e9a8: d908 bls.n 800e9bc + 800e9c6: 4b21 ldr r3, [pc, #132] @ (800ea4c ) + 800e9c8: 8a5a ldrh r2, [r3, #18] + 800e9ca: 4b20 ldr r3, [pc, #128] @ (800ea4c ) + 800e9cc: 8a1b ldrh r3, [r3, #16] + 800e9ce: 429a cmp r2, r3 + 800e9d0: d908 bls.n 800e9e4 { ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.TraceWrPtr - ADV_TRACE_Ctx.TraceRdPtr; - 800e9aa: 4b1e ldr r3, [pc, #120] @ (800ea24 ) - 800e9ac: 8a5a ldrh r2, [r3, #18] - 800e9ae: 4b1d ldr r3, [pc, #116] @ (800ea24 ) - 800e9b0: 8a1b ldrh r3, [r3, #16] - 800e9b2: 1ad3 subs r3, r2, r3 - 800e9b4: b29a uxth r2, r3 - 800e9b6: 4b1b ldr r3, [pc, #108] @ (800ea24 ) - 800e9b8: 829a strh r2, [r3, #20] - 800e9ba: e006 b.n 800e9ca + 800e9d2: 4b1e ldr r3, [pc, #120] @ (800ea4c ) + 800e9d4: 8a5a ldrh r2, [r3, #18] + 800e9d6: 4b1d ldr r3, [pc, #116] @ (800ea4c ) + 800e9d8: 8a1b ldrh r3, [r3, #16] + 800e9da: 1ad3 subs r3, r2, r3 + 800e9dc: b29a uxth r2, r3 + 800e9de: 4b1b ldr r3, [pc, #108] @ (800ea4c ) + 800e9e0: 829a strh r2, [r3, #20] + 800e9e2: e006 b.n 800e9f2 } else /* TraceRdPtr > TraceWrPtr */ { ADV_TRACE_Ctx.TraceSentSize = UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceRdPtr; - 800e9bc: 4b19 ldr r3, [pc, #100] @ (800ea24 ) - 800e9be: 8a1b ldrh r3, [r3, #16] - 800e9c0: f5c3 7300 rsb r3, r3, #512 @ 0x200 - 800e9c4: b29a uxth r2, r3 - 800e9c6: 4b17 ldr r3, [pc, #92] @ (800ea24 ) - 800e9c8: 829a strh r2, [r3, #20] + 800e9e4: 4b19 ldr r3, [pc, #100] @ (800ea4c ) + 800e9e6: 8a1b ldrh r3, [r3, #16] + 800e9e8: f5c3 7300 rsb r3, r3, #512 @ 0x200 + 800e9ec: b29a uxth r2, r3 + 800e9ee: 4b17 ldr r3, [pc, #92] @ (800ea4c ) + 800e9f0: 829a strh r2, [r3, #20] } #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE } #endif ptr = &ADV_TRACE_Buffer[ADV_TRACE_Ctx.TraceRdPtr]; - 800e9ca: 4b16 ldr r3, [pc, #88] @ (800ea24 ) - 800e9cc: 8a1b ldrh r3, [r3, #16] - 800e9ce: 461a mov r2, r3 - 800e9d0: 4b15 ldr r3, [pc, #84] @ (800ea28 ) - 800e9d2: 4413 add r3, r2 - 800e9d4: 61bb str r3, [r7, #24] - 800e9d6: 697b ldr r3, [r7, #20] - 800e9d8: 60fb str r3, [r7, #12] + 800e9f2: 4b16 ldr r3, [pc, #88] @ (800ea4c ) + 800e9f4: 8a1b ldrh r3, [r3, #16] + 800e9f6: 461a mov r2, r3 + 800e9f8: 4b15 ldr r3, [pc, #84] @ (800ea50 ) + 800e9fa: 4413 add r3, r2 + 800e9fc: 61bb str r3, [r7, #24] + 800e9fe: 697b ldr r3, [r7, #20] + 800ea00: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800e9da: 68fb ldr r3, [r7, #12] - 800e9dc: f383 8810 msr PRIMASK, r3 + 800ea02: 68fb ldr r3, [r7, #12] + 800ea04: f383 8810 msr PRIMASK, r3 } - 800e9e0: bf00 nop + 800ea08: bf00 nop UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); UTIL_ADV_TRACE_PreSendHook(); - 800e9e2: f7f2 f901 bl 8000be8 + 800ea0a: f7f2 f8ed bl 8000be8 UTIL_ADV_TRACE_DEBUG("\n--TRACE_Send(%d-%d)--\n", ADV_TRACE_Ctx.TraceRdPtr, ADV_TRACE_Ctx.TraceSentSize); ret = UTIL_TraceDriver.Send(ptr, ADV_TRACE_Ctx.TraceSentSize); - 800e9e6: 4b11 ldr r3, [pc, #68] @ (800ea2c ) - 800e9e8: 68db ldr r3, [r3, #12] - 800e9ea: 4a0e ldr r2, [pc, #56] @ (800ea24 ) - 800e9ec: 8a92 ldrh r2, [r2, #20] - 800e9ee: 4611 mov r1, r2 - 800e9f0: 69b8 ldr r0, [r7, #24] - 800e9f2: 4798 blx r3 - 800e9f4: 4603 mov r3, r0 - 800e9f6: 77fb strb r3, [r7, #31] - 800e9f8: e00d b.n 800ea16 + 800ea0e: 4b11 ldr r3, [pc, #68] @ (800ea54 ) + 800ea10: 68db ldr r3, [r3, #12] + 800ea12: 4a0e ldr r2, [pc, #56] @ (800ea4c ) + 800ea14: 8a92 ldrh r2, [r2, #20] + 800ea16: 4611 mov r1, r2 + 800ea18: 69b8 ldr r0, [r7, #24] + 800ea1a: 4798 blx r3 + 800ea1c: 4603 mov r3, r0 + 800ea1e: 77fb strb r3, [r7, #31] + 800ea20: e00d b.n 800ea3e } else { TRACE_UnLock(); - 800e9fa: f000 f941 bl 800ec80 - 800e9fe: 697b ldr r3, [r7, #20] - 800ea00: 60bb str r3, [r7, #8] + 800ea22: f000 f941 bl 800eca8 + 800ea26: 697b ldr r3, [r7, #20] + 800ea28: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800ea02: 68bb ldr r3, [r7, #8] - 800ea04: f383 8810 msr PRIMASK, r3 + 800ea2a: 68bb ldr r3, [r7, #8] + 800ea2c: f383 8810 msr PRIMASK, r3 } - 800ea08: e005 b.n 800ea16 - 800ea0a: 697b ldr r3, [r7, #20] - 800ea0c: 607b str r3, [r7, #4] + 800ea30: e005 b.n 800ea3e + 800ea32: 697b ldr r3, [r7, #20] + 800ea34: 607b str r3, [r7, #4] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800ea0e: 687b ldr r3, [r7, #4] - 800ea10: f383 8810 msr PRIMASK, r3 + 800ea36: 687b ldr r3, [r7, #4] + 800ea38: f383 8810 msr PRIMASK, r3 } - 800ea14: bf00 nop + 800ea3c: bf00 nop else { UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); } return ret; - 800ea16: f997 301f ldrsb.w r3, [r7, #31] + 800ea3e: f997 301f ldrsb.w r3, [r7, #31] } - 800ea1a: 4618 mov r0, r3 - 800ea1c: 3720 adds r7, #32 - 800ea1e: 46bd mov sp, r7 - 800ea20: bd80 pop {r7, pc} - 800ea22: bf00 nop - 800ea24: 20000c34 .word 0x20000c34 - 800ea28: 20000c4c .word 0x20000c4c - 800ea2c: 0801038c .word 0x0801038c + 800ea42: 4618 mov r0, r3 + 800ea44: 3720 adds r7, #32 + 800ea46: 46bd mov sp, r7 + 800ea48: bd80 pop {r7, pc} + 800ea4a: bf00 nop + 800ea4c: 20000c6c .word 0x20000c6c + 800ea50: 20000c84 .word 0x20000c84 + 800ea54: 080103b4 .word 0x080103b4 -0800ea30 : +0800ea58 : * @brief Tx callback called by the low layer level to inform a transfer complete * @param Ptr pointer not used only for HAL compatibility * @retval none */ static void TRACE_TxCpltCallback(void *Ptr) { - 800ea30: b580 push {r7, lr} - 800ea32: b088 sub sp, #32 - 800ea34: af00 add r7, sp, #0 - 800ea36: 6078 str r0, [r7, #4] + 800ea58: b580 push {r7, lr} + 800ea5a: b088 sub sp, #32 + 800ea5c: af00 add r7, sp, #0 + 800ea5e: 6078 str r0, [r7, #4] uint8_t *ptr = NULL; - 800ea38: 2300 movs r3, #0 - 800ea3a: 61fb str r3, [r7, #28] + 800ea60: 2300 movs r3, #0 + 800ea62: 61fb str r3, [r7, #28] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800ea3c: f3ef 8310 mrs r3, PRIMASK - 800ea40: 617b str r3, [r7, #20] + 800ea64: f3ef 8310 mrs r3, PRIMASK + 800ea68: 617b str r3, [r7, #20] return(result); - 800ea42: 697b ldr r3, [r7, #20] + 800ea6a: 697b ldr r3, [r7, #20] UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); - 800ea44: 61bb str r3, [r7, #24] + 800ea6c: 61bb str r3, [r7, #24] __ASM volatile ("cpsid i" : : : "memory"); - 800ea46: b672 cpsid i + 800ea6e: b672 cpsid i } - 800ea48: bf00 nop + 800ea70: bf00 nop ADV_TRACE_Ctx.TraceSentSize = 0u; } #endif #if defined(UTIL_ADV_TRACE_UNCHUNK_MODE) if(TRACE_UNCHUNK_TRANSFER == ADV_TRACE_Ctx.unchunk_status) - 800ea4a: 4b3c ldr r3, [pc, #240] @ (800eb3c ) - 800ea4c: 789b ldrb r3, [r3, #2] - 800ea4e: 2b02 cmp r3, #2 - 800ea50: d106 bne.n 800ea60 + 800ea72: 4b3c ldr r3, [pc, #240] @ (800eb64 ) + 800ea74: 789b ldrb r3, [r3, #2] + 800ea76: 2b02 cmp r3, #2 + 800ea78: d106 bne.n 800ea88 { ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; - 800ea52: 4b3a ldr r3, [pc, #232] @ (800eb3c ) - 800ea54: 2200 movs r2, #0 - 800ea56: 709a strb r2, [r3, #2] + 800ea7a: 4b3a ldr r3, [pc, #232] @ (800eb64 ) + 800ea7c: 2200 movs r2, #0 + 800ea7e: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.TraceRdPtr = 0; - 800ea58: 4b38 ldr r3, [pc, #224] @ (800eb3c ) - 800ea5a: 2200 movs r2, #0 - 800ea5c: 821a strh r2, [r3, #16] - 800ea5e: e00a b.n 800ea76 + 800ea80: 4b38 ldr r3, [pc, #224] @ (800eb64 ) + 800ea82: 2200 movs r2, #0 + 800ea84: 821a strh r2, [r3, #16] + 800ea86: e00a b.n 800ea9e UTIL_ADV_TRACE_DEBUG("\nTRACE_TxCpltCallback::unchunk complete\n"); } else { ADV_TRACE_Ctx.TraceRdPtr = (ADV_TRACE_Ctx.TraceRdPtr + ADV_TRACE_Ctx.TraceSentSize) % UTIL_ADV_TRACE_FIFO_SIZE; - 800ea60: 4b36 ldr r3, [pc, #216] @ (800eb3c ) - 800ea62: 8a1a ldrh r2, [r3, #16] - 800ea64: 4b35 ldr r3, [pc, #212] @ (800eb3c ) - 800ea66: 8a9b ldrh r3, [r3, #20] - 800ea68: 4413 add r3, r2 - 800ea6a: b29b uxth r3, r3 - 800ea6c: f3c3 0308 ubfx r3, r3, #0, #9 - 800ea70: b29a uxth r2, r3 - 800ea72: 4b32 ldr r3, [pc, #200] @ (800eb3c ) - 800ea74: 821a strh r2, [r3, #16] + 800ea88: 4b36 ldr r3, [pc, #216] @ (800eb64 ) + 800ea8a: 8a1a ldrh r2, [r3, #16] + 800ea8c: 4b35 ldr r3, [pc, #212] @ (800eb64 ) + 800ea8e: 8a9b ldrh r3, [r3, #20] + 800ea90: 4413 add r3, r2 + 800ea92: b29b uxth r3, r3 + 800ea94: f3c3 0308 ubfx r3, r3, #0, #9 + 800ea98: b29a uxth r2, r3 + 800ea9a: 4b32 ldr r3, [pc, #200] @ (800eb64 ) + 800ea9c: 821a strh r2, [r3, #16] UTIL_TraceDriver.Send(ptr, ADV_TRACE_Ctx.TraceSentSize); return; } #endif if((ADV_TRACE_Ctx.TraceRdPtr != ADV_TRACE_Ctx.TraceWrPtr) && (1u == ADV_TRACE_Ctx.TraceLock)) - 800ea76: 4b31 ldr r3, [pc, #196] @ (800eb3c ) - 800ea78: 8a1a ldrh r2, [r3, #16] - 800ea7a: 4b30 ldr r3, [pc, #192] @ (800eb3c ) - 800ea7c: 8a5b ldrh r3, [r3, #18] - 800ea7e: 429a cmp r2, r3 - 800ea80: d04d beq.n 800eb1e - 800ea82: 4b2e ldr r3, [pc, #184] @ (800eb3c ) - 800ea84: 8adb ldrh r3, [r3, #22] - 800ea86: 2b01 cmp r3, #1 - 800ea88: d149 bne.n 800eb1e + 800ea9e: 4b31 ldr r3, [pc, #196] @ (800eb64 ) + 800eaa0: 8a1a ldrh r2, [r3, #16] + 800eaa2: 4b30 ldr r3, [pc, #192] @ (800eb64 ) + 800eaa4: 8a5b ldrh r3, [r3, #18] + 800eaa6: 429a cmp r2, r3 + 800eaa8: d04d beq.n 800eb46 + 800eaaa: 4b2e ldr r3, [pc, #184] @ (800eb64 ) + 800eaac: 8adb ldrh r3, [r3, #22] + 800eaae: 2b01 cmp r3, #1 + 800eab0: d149 bne.n 800eb46 { #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE if(TRACE_UNCHUNK_DETECTED == ADV_TRACE_Ctx.unchunk_status) - 800ea8a: 4b2c ldr r3, [pc, #176] @ (800eb3c ) - 800ea8c: 789b ldrb r3, [r3, #2] - 800ea8e: 2b01 cmp r3, #1 - 800ea90: d117 bne.n 800eac2 + 800eab2: 4b2c ldr r3, [pc, #176] @ (800eb64 ) + 800eab4: 789b ldrb r3, [r3, #2] + 800eab6: 2b01 cmp r3, #1 + 800eab8: d117 bne.n 800eaea { ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.unchunk_enabled - ADV_TRACE_Ctx.TraceRdPtr; - 800ea92: 4b2a ldr r3, [pc, #168] @ (800eb3c ) - 800ea94: 881a ldrh r2, [r3, #0] - 800ea96: 4b29 ldr r3, [pc, #164] @ (800eb3c ) - 800ea98: 8a1b ldrh r3, [r3, #16] - 800ea9a: 1ad3 subs r3, r2, r3 - 800ea9c: b29a uxth r2, r3 - 800ea9e: 4b27 ldr r3, [pc, #156] @ (800eb3c ) - 800eaa0: 829a strh r2, [r3, #20] + 800eaba: 4b2a ldr r3, [pc, #168] @ (800eb64 ) + 800eabc: 881a ldrh r2, [r3, #0] + 800eabe: 4b29 ldr r3, [pc, #164] @ (800eb64 ) + 800eac0: 8a1b ldrh r3, [r3, #16] + 800eac2: 1ad3 subs r3, r2, r3 + 800eac4: b29a uxth r2, r3 + 800eac6: 4b27 ldr r3, [pc, #156] @ (800eb64 ) + 800eac8: 829a strh r2, [r3, #20] ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_TRANSFER; - 800eaa2: 4b26 ldr r3, [pc, #152] @ (800eb3c ) - 800eaa4: 2202 movs r2, #2 - 800eaa6: 709a strb r2, [r3, #2] + 800eaca: 4b26 ldr r3, [pc, #152] @ (800eb64 ) + 800eacc: 2202 movs r2, #2 + 800eace: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.unchunk_enabled = 0; - 800eaa8: 4b24 ldr r3, [pc, #144] @ (800eb3c ) - 800eaaa: 2200 movs r2, #0 - 800eaac: 801a strh r2, [r3, #0] + 800ead0: 4b24 ldr r3, [pc, #144] @ (800eb64 ) + 800ead2: 2200 movs r2, #0 + 800ead4: 801a strh r2, [r3, #0] UTIL_ADV_TRACE_DEBUG("\nTRACE_TxCpltCallback::unchunk start(%d,%d)\n", ADV_TRACE_Ctx.unchunk_enabled, ADV_TRACE_Ctx.TraceRdPtr); if(0u == ADV_TRACE_Ctx.TraceSentSize) - 800eaae: 4b23 ldr r3, [pc, #140] @ (800eb3c ) - 800eab0: 8a9b ldrh r3, [r3, #20] - 800eab2: 2b00 cmp r3, #0 - 800eab4: d105 bne.n 800eac2 + 800ead6: 4b23 ldr r3, [pc, #140] @ (800eb64 ) + 800ead8: 8a9b ldrh r3, [r3, #20] + 800eada: 2b00 cmp r3, #0 + 800eadc: d105 bne.n 800eaea { /* this case occurs when an ongoing write aligned the Rd position with chunk position */ /* in that case the unchunk is forgot */ ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_NONE; - 800eab6: 4b21 ldr r3, [pc, #132] @ (800eb3c ) - 800eab8: 2200 movs r2, #0 - 800eaba: 709a strb r2, [r3, #2] + 800eade: 4b21 ldr r3, [pc, #132] @ (800eb64 ) + 800eae0: 2200 movs r2, #0 + 800eae2: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.TraceRdPtr = 0; - 800eabc: 4b1f ldr r3, [pc, #124] @ (800eb3c ) - 800eabe: 2200 movs r2, #0 - 800eac0: 821a strh r2, [r3, #16] + 800eae4: 4b1f ldr r3, [pc, #124] @ (800eb64 ) + 800eae6: 2200 movs r2, #0 + 800eae8: 821a strh r2, [r3, #16] } } if(TRACE_UNCHUNK_NONE == ADV_TRACE_Ctx.unchunk_status) - 800eac2: 4b1e ldr r3, [pc, #120] @ (800eb3c ) - 800eac4: 789b ldrb r3, [r3, #2] - 800eac6: 2b00 cmp r3, #0 - 800eac8: d115 bne.n 800eaf6 + 800eaea: 4b1e ldr r3, [pc, #120] @ (800eb64 ) + 800eaec: 789b ldrb r3, [r3, #2] + 800eaee: 2b00 cmp r3, #0 + 800eaf0: d115 bne.n 800eb1e { #endif if(ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) - 800eaca: 4b1c ldr r3, [pc, #112] @ (800eb3c ) - 800eacc: 8a5a ldrh r2, [r3, #18] - 800eace: 4b1b ldr r3, [pc, #108] @ (800eb3c ) - 800ead0: 8a1b ldrh r3, [r3, #16] - 800ead2: 429a cmp r2, r3 - 800ead4: d908 bls.n 800eae8 + 800eaf2: 4b1c ldr r3, [pc, #112] @ (800eb64 ) + 800eaf4: 8a5a ldrh r2, [r3, #18] + 800eaf6: 4b1b ldr r3, [pc, #108] @ (800eb64 ) + 800eaf8: 8a1b ldrh r3, [r3, #16] + 800eafa: 429a cmp r2, r3 + 800eafc: d908 bls.n 800eb10 { ADV_TRACE_Ctx.TraceSentSize = ADV_TRACE_Ctx.TraceWrPtr - ADV_TRACE_Ctx.TraceRdPtr; - 800ead6: 4b19 ldr r3, [pc, #100] @ (800eb3c ) - 800ead8: 8a5a ldrh r2, [r3, #18] - 800eada: 4b18 ldr r3, [pc, #96] @ (800eb3c ) - 800eadc: 8a1b ldrh r3, [r3, #16] - 800eade: 1ad3 subs r3, r2, r3 - 800eae0: b29a uxth r2, r3 - 800eae2: 4b16 ldr r3, [pc, #88] @ (800eb3c ) - 800eae4: 829a strh r2, [r3, #20] - 800eae6: e006 b.n 800eaf6 + 800eafe: 4b19 ldr r3, [pc, #100] @ (800eb64 ) + 800eb00: 8a5a ldrh r2, [r3, #18] + 800eb02: 4b18 ldr r3, [pc, #96] @ (800eb64 ) + 800eb04: 8a1b ldrh r3, [r3, #16] + 800eb06: 1ad3 subs r3, r2, r3 + 800eb08: b29a uxth r2, r3 + 800eb0a: 4b16 ldr r3, [pc, #88] @ (800eb64 ) + 800eb0c: 829a strh r2, [r3, #20] + 800eb0e: e006 b.n 800eb1e } else /* TraceRdPtr > TraceWrPtr */ { ADV_TRACE_Ctx.TraceSentSize = UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceRdPtr; - 800eae8: 4b14 ldr r3, [pc, #80] @ (800eb3c ) - 800eaea: 8a1b ldrh r3, [r3, #16] - 800eaec: f5c3 7300 rsb r3, r3, #512 @ 0x200 - 800eaf0: b29a uxth r2, r3 - 800eaf2: 4b12 ldr r3, [pc, #72] @ (800eb3c ) - 800eaf4: 829a strh r2, [r3, #20] + 800eb10: 4b14 ldr r3, [pc, #80] @ (800eb64 ) + 800eb12: 8a1b ldrh r3, [r3, #16] + 800eb14: f5c3 7300 rsb r3, r3, #512 @ 0x200 + 800eb18: b29a uxth r2, r3 + 800eb1a: 4b12 ldr r3, [pc, #72] @ (800eb64 ) + 800eb1c: 829a strh r2, [r3, #20] } #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE } #endif ptr = &ADV_TRACE_Buffer[ADV_TRACE_Ctx.TraceRdPtr]; - 800eaf6: 4b11 ldr r3, [pc, #68] @ (800eb3c ) - 800eaf8: 8a1b ldrh r3, [r3, #16] - 800eafa: 461a mov r2, r3 - 800eafc: 4b10 ldr r3, [pc, #64] @ (800eb40 ) - 800eafe: 4413 add r3, r2 - 800eb00: 61fb str r3, [r7, #28] - 800eb02: 69bb ldr r3, [r7, #24] - 800eb04: 613b str r3, [r7, #16] + 800eb1e: 4b11 ldr r3, [pc, #68] @ (800eb64 ) + 800eb20: 8a1b ldrh r3, [r3, #16] + 800eb22: 461a mov r2, r3 + 800eb24: 4b10 ldr r3, [pc, #64] @ (800eb68 ) + 800eb26: 4413 add r3, r2 + 800eb28: 61fb str r3, [r7, #28] + 800eb2a: 69bb ldr r3, [r7, #24] + 800eb2c: 613b str r3, [r7, #16] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800eb06: 693b ldr r3, [r7, #16] - 800eb08: f383 8810 msr PRIMASK, r3 + 800eb2e: 693b ldr r3, [r7, #16] + 800eb30: f383 8810 msr PRIMASK, r3 } - 800eb0c: bf00 nop + 800eb34: bf00 nop UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); UTIL_ADV_TRACE_DEBUG("\n--TRACE_Send(%d-%d)--\n", ADV_TRACE_Ctx.TraceRdPtr, ADV_TRACE_Ctx.TraceSentSize); UTIL_TraceDriver.Send(ptr, ADV_TRACE_Ctx.TraceSentSize); - 800eb0e: 4b0d ldr r3, [pc, #52] @ (800eb44 ) - 800eb10: 68db ldr r3, [r3, #12] - 800eb12: 4a0a ldr r2, [pc, #40] @ (800eb3c ) - 800eb14: 8a92 ldrh r2, [r2, #20] - 800eb16: 4611 mov r1, r2 - 800eb18: 69f8 ldr r0, [r7, #28] - 800eb1a: 4798 blx r3 - 800eb1c: e00a b.n 800eb34 - 800eb1e: 69bb ldr r3, [r7, #24] - 800eb20: 60fb str r3, [r7, #12] + 800eb36: 4b0d ldr r3, [pc, #52] @ (800eb6c ) + 800eb38: 68db ldr r3, [r3, #12] + 800eb3a: 4a0a ldr r2, [pc, #40] @ (800eb64 ) + 800eb3c: 8a92 ldrh r2, [r2, #20] + 800eb3e: 4611 mov r1, r2 + 800eb40: 69f8 ldr r0, [r7, #28] + 800eb42: 4798 blx r3 + 800eb44: e00a b.n 800eb5c + 800eb46: 69bb ldr r3, [r7, #24] + 800eb48: 60fb str r3, [r7, #12] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800eb22: 68fb ldr r3, [r7, #12] - 800eb24: f383 8810 msr PRIMASK, r3 + 800eb4a: 68fb ldr r3, [r7, #12] + 800eb4c: f383 8810 msr PRIMASK, r3 } - 800eb28: bf00 nop + 800eb50: bf00 nop } else { UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); UTIL_ADV_TRACE_PostSendHook(); - 800eb2a: f7f2 f865 bl 8000bf8 + 800eb52: f7f2 f851 bl 8000bf8 TRACE_UnLock(); - 800eb2e: f000 f8a7 bl 800ec80 + 800eb56: f000 f8a7 bl 800eca8 } } - 800eb32: bf00 nop - 800eb34: bf00 nop - 800eb36: 3720 adds r7, #32 - 800eb38: 46bd mov sp, r7 - 800eb3a: bd80 pop {r7, pc} - 800eb3c: 20000c34 .word 0x20000c34 - 800eb40: 20000c4c .word 0x20000c4c - 800eb44: 0801038c .word 0x0801038c + 800eb5a: bf00 nop + 800eb5c: bf00 nop + 800eb5e: 3720 adds r7, #32 + 800eb60: 46bd mov sp, r7 + 800eb62: bd80 pop {r7, pc} + 800eb64: 20000c6c .word 0x20000c6c + 800eb68: 20000c84 .word 0x20000c84 + 800eb6c: 080103b4 .word 0x080103b4 -0800eb48 : +0800eb70 : * @param Size to allocate within fifo * @param Pos position within the fifo * @retval write position inside the buffer is -1 no space available. */ static int16_t TRACE_AllocateBufer(uint16_t Size, uint16_t *Pos) { - 800eb48: b480 push {r7} - 800eb4a: b087 sub sp, #28 - 800eb4c: af00 add r7, sp, #0 - 800eb4e: 4603 mov r3, r0 - 800eb50: 6039 str r1, [r7, #0] - 800eb52: 80fb strh r3, [r7, #6] + 800eb70: b480 push {r7} + 800eb72: b087 sub sp, #28 + 800eb74: af00 add r7, sp, #0 + 800eb76: 4603 mov r3, r0 + 800eb78: 6039 str r1, [r7, #0] + 800eb7a: 80fb strh r3, [r7, #6] uint16_t freesize; int16_t ret = -1; - 800eb54: f64f 73ff movw r3, #65535 @ 0xffff - 800eb58: 82bb strh r3, [r7, #20] + 800eb7c: f64f 73ff movw r3, #65535 @ 0xffff + 800eb80: 82bb strh r3, [r7, #20] __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800eb5a: f3ef 8310 mrs r3, PRIMASK - 800eb5e: 60fb str r3, [r7, #12] + 800eb82: f3ef 8310 mrs r3, PRIMASK + 800eb86: 60fb str r3, [r7, #12] return(result); - 800eb60: 68fb ldr r3, [r7, #12] + 800eb88: 68fb ldr r3, [r7, #12] UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); - 800eb62: 613b str r3, [r7, #16] + 800eb8a: 613b str r3, [r7, #16] __ASM volatile ("cpsid i" : : : "memory"); - 800eb64: b672 cpsid i + 800eb8c: b672 cpsid i } - 800eb66: bf00 nop + 800eb8e: bf00 nop if(ADV_TRACE_Ctx.TraceWrPtr == ADV_TRACE_Ctx.TraceRdPtr) - 800eb68: 4b35 ldr r3, [pc, #212] @ (800ec40 ) - 800eb6a: 8a5a ldrh r2, [r3, #18] - 800eb6c: 4b34 ldr r3, [pc, #208] @ (800ec40 ) - 800eb6e: 8a1b ldrh r3, [r3, #16] - 800eb70: 429a cmp r2, r3 - 800eb72: d11b bne.n 800ebac + 800eb90: 4b35 ldr r3, [pc, #212] @ (800ec68 ) + 800eb92: 8a5a ldrh r2, [r3, #18] + 800eb94: 4b34 ldr r3, [pc, #208] @ (800ec68 ) + 800eb96: 8a1b ldrh r3, [r3, #16] + 800eb98: 429a cmp r2, r3 + 800eb9a: d11b bne.n 800ebd4 { #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE freesize = (uint16_t)(UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceWrPtr); - 800eb74: 4b32 ldr r3, [pc, #200] @ (800ec40 ) - 800eb76: 8a5b ldrh r3, [r3, #18] - 800eb78: f5c3 7300 rsb r3, r3, #512 @ 0x200 - 800eb7c: 82fb strh r3, [r7, #22] + 800eb9c: 4b32 ldr r3, [pc, #200] @ (800ec68 ) + 800eb9e: 8a5b ldrh r3, [r3, #18] + 800eba0: f5c3 7300 rsb r3, r3, #512 @ 0x200 + 800eba4: 82fb strh r3, [r7, #22] if((Size >= freesize) && (ADV_TRACE_Ctx.TraceRdPtr > Size)) - 800eb7e: 88fa ldrh r2, [r7, #6] - 800eb80: 8afb ldrh r3, [r7, #22] - 800eb82: 429a cmp r2, r3 - 800eb84: d33a bcc.n 800ebfc - 800eb86: 4b2e ldr r3, [pc, #184] @ (800ec40 ) - 800eb88: 8a1b ldrh r3, [r3, #16] - 800eb8a: 88fa ldrh r2, [r7, #6] - 800eb8c: 429a cmp r2, r3 - 800eb8e: d235 bcs.n 800ebfc + 800eba6: 88fa ldrh r2, [r7, #6] + 800eba8: 8afb ldrh r3, [r7, #22] + 800ebaa: 429a cmp r2, r3 + 800ebac: d33a bcc.n 800ec24 + 800ebae: 4b2e ldr r3, [pc, #184] @ (800ec68 ) + 800ebb0: 8a1b ldrh r3, [r3, #16] + 800ebb2: 88fa ldrh r2, [r7, #6] + 800ebb4: 429a cmp r2, r3 + 800ebb6: d235 bcs.n 800ec24 { ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_DETECTED; - 800eb90: 4b2b ldr r3, [pc, #172] @ (800ec40 ) - 800eb92: 2201 movs r2, #1 - 800eb94: 709a strb r2, [r3, #2] + 800ebb8: 4b2b ldr r3, [pc, #172] @ (800ec68 ) + 800ebba: 2201 movs r2, #1 + 800ebbc: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.unchunk_enabled = ADV_TRACE_Ctx.TraceWrPtr; - 800eb96: 4b2a ldr r3, [pc, #168] @ (800ec40 ) - 800eb98: 8a5a ldrh r2, [r3, #18] - 800eb9a: 4b29 ldr r3, [pc, #164] @ (800ec40 ) - 800eb9c: 801a strh r2, [r3, #0] + 800ebbe: 4b2a ldr r3, [pc, #168] @ (800ec68 ) + 800ebc0: 8a5a ldrh r2, [r3, #18] + 800ebc2: 4b29 ldr r3, [pc, #164] @ (800ec68 ) + 800ebc4: 801a strh r2, [r3, #0] freesize = ADV_TRACE_Ctx.TraceRdPtr; - 800eb9e: 4b28 ldr r3, [pc, #160] @ (800ec40 ) - 800eba0: 8a1b ldrh r3, [r3, #16] - 800eba2: 82fb strh r3, [r7, #22] + 800ebc6: 4b28 ldr r3, [pc, #160] @ (800ec68 ) + 800ebc8: 8a1b ldrh r3, [r3, #16] + 800ebca: 82fb strh r3, [r7, #22] ADV_TRACE_Ctx.TraceWrPtr = 0; - 800eba4: 4b26 ldr r3, [pc, #152] @ (800ec40 ) - 800eba6: 2200 movs r2, #0 - 800eba8: 825a strh r2, [r3, #18] - 800ebaa: e027 b.n 800ebfc + 800ebcc: 4b26 ldr r3, [pc, #152] @ (800ec68 ) + 800ebce: 2200 movs r2, #0 + 800ebd0: 825a strh r2, [r3, #18] + 800ebd2: e027 b.n 800ec24 #endif } else { #ifdef UTIL_ADV_TRACE_UNCHUNK_MODE if (ADV_TRACE_Ctx.TraceWrPtr > ADV_TRACE_Ctx.TraceRdPtr) - 800ebac: 4b24 ldr r3, [pc, #144] @ (800ec40 ) - 800ebae: 8a5a ldrh r2, [r3, #18] - 800ebb0: 4b23 ldr r3, [pc, #140] @ (800ec40 ) - 800ebb2: 8a1b ldrh r3, [r3, #16] - 800ebb4: 429a cmp r2, r3 - 800ebb6: d91b bls.n 800ebf0 + 800ebd4: 4b24 ldr r3, [pc, #144] @ (800ec68 ) + 800ebd6: 8a5a ldrh r2, [r3, #18] + 800ebd8: 4b23 ldr r3, [pc, #140] @ (800ec68 ) + 800ebda: 8a1b ldrh r3, [r3, #16] + 800ebdc: 429a cmp r2, r3 + 800ebde: d91b bls.n 800ec18 { freesize = (uint16_t)(UTIL_ADV_TRACE_FIFO_SIZE - ADV_TRACE_Ctx.TraceWrPtr); - 800ebb8: 4b21 ldr r3, [pc, #132] @ (800ec40 ) - 800ebba: 8a5b ldrh r3, [r3, #18] - 800ebbc: f5c3 7300 rsb r3, r3, #512 @ 0x200 - 800ebc0: 82fb strh r3, [r7, #22] + 800ebe0: 4b21 ldr r3, [pc, #132] @ (800ec68 ) + 800ebe2: 8a5b ldrh r3, [r3, #18] + 800ebe4: f5c3 7300 rsb r3, r3, #512 @ 0x200 + 800ebe8: 82fb strh r3, [r7, #22] if((Size >= freesize) && (ADV_TRACE_Ctx.TraceRdPtr > Size)) - 800ebc2: 88fa ldrh r2, [r7, #6] - 800ebc4: 8afb ldrh r3, [r7, #22] - 800ebc6: 429a cmp r2, r3 - 800ebc8: d318 bcc.n 800ebfc - 800ebca: 4b1d ldr r3, [pc, #116] @ (800ec40 ) - 800ebcc: 8a1b ldrh r3, [r3, #16] - 800ebce: 88fa ldrh r2, [r7, #6] - 800ebd0: 429a cmp r2, r3 - 800ebd2: d213 bcs.n 800ebfc + 800ebea: 88fa ldrh r2, [r7, #6] + 800ebec: 8afb ldrh r3, [r7, #22] + 800ebee: 429a cmp r2, r3 + 800ebf0: d318 bcc.n 800ec24 + 800ebf2: 4b1d ldr r3, [pc, #116] @ (800ec68 ) + 800ebf4: 8a1b ldrh r3, [r3, #16] + 800ebf6: 88fa ldrh r2, [r7, #6] + 800ebf8: 429a cmp r2, r3 + 800ebfa: d213 bcs.n 800ec24 { ADV_TRACE_Ctx.unchunk_status = TRACE_UNCHUNK_DETECTED; - 800ebd4: 4b1a ldr r3, [pc, #104] @ (800ec40 ) - 800ebd6: 2201 movs r2, #1 - 800ebd8: 709a strb r2, [r3, #2] + 800ebfc: 4b1a ldr r3, [pc, #104] @ (800ec68 ) + 800ebfe: 2201 movs r2, #1 + 800ec00: 709a strb r2, [r3, #2] ADV_TRACE_Ctx.unchunk_enabled = ADV_TRACE_Ctx.TraceWrPtr; - 800ebda: 4b19 ldr r3, [pc, #100] @ (800ec40 ) - 800ebdc: 8a5a ldrh r2, [r3, #18] - 800ebde: 4b18 ldr r3, [pc, #96] @ (800ec40 ) - 800ebe0: 801a strh r2, [r3, #0] + 800ec02: 4b19 ldr r3, [pc, #100] @ (800ec68 ) + 800ec04: 8a5a ldrh r2, [r3, #18] + 800ec06: 4b18 ldr r3, [pc, #96] @ (800ec68 ) + 800ec08: 801a strh r2, [r3, #0] freesize = ADV_TRACE_Ctx.TraceRdPtr; - 800ebe2: 4b17 ldr r3, [pc, #92] @ (800ec40 ) - 800ebe4: 8a1b ldrh r3, [r3, #16] - 800ebe6: 82fb strh r3, [r7, #22] + 800ec0a: 4b17 ldr r3, [pc, #92] @ (800ec68 ) + 800ec0c: 8a1b ldrh r3, [r3, #16] + 800ec0e: 82fb strh r3, [r7, #22] ADV_TRACE_Ctx.TraceWrPtr = 0; - 800ebe8: 4b15 ldr r3, [pc, #84] @ (800ec40 ) - 800ebea: 2200 movs r2, #0 - 800ebec: 825a strh r2, [r3, #18] - 800ebee: e005 b.n 800ebfc + 800ec10: 4b15 ldr r3, [pc, #84] @ (800ec68 ) + 800ec12: 2200 movs r2, #0 + 800ec14: 825a strh r2, [r3, #18] + 800ec16: e005 b.n 800ec24 } } else { freesize = (uint16_t)(ADV_TRACE_Ctx.TraceRdPtr - ADV_TRACE_Ctx.TraceWrPtr); - 800ebf0: 4b13 ldr r3, [pc, #76] @ (800ec40 ) - 800ebf2: 8a1a ldrh r2, [r3, #16] - 800ebf4: 4b12 ldr r3, [pc, #72] @ (800ec40 ) - 800ebf6: 8a5b ldrh r3, [r3, #18] - 800ebf8: 1ad3 subs r3, r2, r3 - 800ebfa: 82fb strh r3, [r7, #22] + 800ec18: 4b13 ldr r3, [pc, #76] @ (800ec68 ) + 800ec1a: 8a1a ldrh r2, [r3, #16] + 800ec1c: 4b12 ldr r3, [pc, #72] @ (800ec68 ) + 800ec1e: 8a5b ldrh r3, [r3, #18] + 800ec20: 1ad3 subs r3, r2, r3 + 800ec22: 82fb strh r3, [r7, #22] freesize = ADV_TRACE_Ctx.TraceRdPtr - ADV_TRACE_Ctx.TraceWrPtr; } #endif } if(freesize > Size) - 800ebfc: 8afa ldrh r2, [r7, #22] - 800ebfe: 88fb ldrh r3, [r7, #6] - 800ec00: 429a cmp r2, r3 - 800ec02: d90f bls.n 800ec24 + 800ec24: 8afa ldrh r2, [r7, #22] + 800ec26: 88fb ldrh r3, [r7, #6] + 800ec28: 429a cmp r2, r3 + 800ec2a: d90f bls.n 800ec4c { *Pos = ADV_TRACE_Ctx.TraceWrPtr; - 800ec04: 4b0e ldr r3, [pc, #56] @ (800ec40 ) - 800ec06: 8a5a ldrh r2, [r3, #18] - 800ec08: 683b ldr r3, [r7, #0] - 800ec0a: 801a strh r2, [r3, #0] + 800ec2c: 4b0e ldr r3, [pc, #56] @ (800ec68 ) + 800ec2e: 8a5a ldrh r2, [r3, #18] + 800ec30: 683b ldr r3, [r7, #0] + 800ec32: 801a strh r2, [r3, #0] ADV_TRACE_Ctx.TraceWrPtr = (ADV_TRACE_Ctx.TraceWrPtr + Size) % UTIL_ADV_TRACE_FIFO_SIZE; - 800ec0c: 4b0c ldr r3, [pc, #48] @ (800ec40 ) - 800ec0e: 8a5a ldrh r2, [r3, #18] - 800ec10: 88fb ldrh r3, [r7, #6] - 800ec12: 4413 add r3, r2 - 800ec14: b29b uxth r3, r3 - 800ec16: f3c3 0308 ubfx r3, r3, #0, #9 - 800ec1a: b29a uxth r2, r3 - 800ec1c: 4b08 ldr r3, [pc, #32] @ (800ec40 ) - 800ec1e: 825a strh r2, [r3, #18] + 800ec34: 4b0c ldr r3, [pc, #48] @ (800ec68 ) + 800ec36: 8a5a ldrh r2, [r3, #18] + 800ec38: 88fb ldrh r3, [r7, #6] + 800ec3a: 4413 add r3, r2 + 800ec3c: b29b uxth r3, r3 + 800ec3e: f3c3 0308 ubfx r3, r3, #0, #9 + 800ec42: b29a uxth r2, r3 + 800ec44: 4b08 ldr r3, [pc, #32] @ (800ec68 ) + 800ec46: 825a strh r2, [r3, #18] ret = 0; - 800ec20: 2300 movs r3, #0 - 800ec22: 82bb strh r3, [r7, #20] - 800ec24: 693b ldr r3, [r7, #16] - 800ec26: 60bb str r3, [r7, #8] + 800ec48: 2300 movs r3, #0 + 800ec4a: 82bb strh r3, [r7, #20] + 800ec4c: 693b ldr r3, [r7, #16] + 800ec4e: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800ec28: 68bb ldr r3, [r7, #8] - 800ec2a: f383 8810 msr PRIMASK, r3 + 800ec50: 68bb ldr r3, [r7, #8] + 800ec52: f383 8810 msr PRIMASK, r3 } - 800ec2e: bf00 nop + 800ec56: bf00 nop } } #endif UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); return ret; - 800ec30: f9b7 3014 ldrsh.w r3, [r7, #20] + 800ec58: f9b7 3014 ldrsh.w r3, [r7, #20] } - 800ec34: 4618 mov r0, r3 - 800ec36: 371c adds r7, #28 - 800ec38: 46bd mov sp, r7 - 800ec3a: bc80 pop {r7} - 800ec3c: 4770 bx lr - 800ec3e: bf00 nop - 800ec40: 20000c34 .word 0x20000c34 + 800ec5c: 4618 mov r0, r3 + 800ec5e: 371c adds r7, #28 + 800ec60: 46bd mov sp, r7 + 800ec62: bc80 pop {r7} + 800ec64: 4770 bx lr + 800ec66: bf00 nop + 800ec68: 20000c6c .word 0x20000c6c -0800ec44 : +0800ec6c : /** * @brief Lock the trace buffer. * @retval None. */ static void TRACE_Lock(void) { - 800ec44: b480 push {r7} - 800ec46: b085 sub sp, #20 - 800ec48: af00 add r7, sp, #0 + 800ec6c: b480 push {r7} + 800ec6e: b085 sub sp, #20 + 800ec70: af00 add r7, sp, #0 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800ec4a: f3ef 8310 mrs r3, PRIMASK - 800ec4e: 607b str r3, [r7, #4] + 800ec72: f3ef 8310 mrs r3, PRIMASK + 800ec76: 607b str r3, [r7, #4] return(result); - 800ec50: 687b ldr r3, [r7, #4] + 800ec78: 687b ldr r3, [r7, #4] UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); - 800ec52: 60fb str r3, [r7, #12] + 800ec7a: 60fb str r3, [r7, #12] __ASM volatile ("cpsid i" : : : "memory"); - 800ec54: b672 cpsid i + 800ec7c: b672 cpsid i } - 800ec56: bf00 nop + 800ec7e: bf00 nop ADV_TRACE_Ctx.TraceLock++; - 800ec58: 4b08 ldr r3, [pc, #32] @ (800ec7c ) - 800ec5a: 8adb ldrh r3, [r3, #22] - 800ec5c: 3301 adds r3, #1 - 800ec5e: b29a uxth r2, r3 - 800ec60: 4b06 ldr r3, [pc, #24] @ (800ec7c ) - 800ec62: 82da strh r2, [r3, #22] - 800ec64: 68fb ldr r3, [r7, #12] - 800ec66: 60bb str r3, [r7, #8] + 800ec80: 4b08 ldr r3, [pc, #32] @ (800eca4 ) + 800ec82: 8adb ldrh r3, [r3, #22] + 800ec84: 3301 adds r3, #1 + 800ec86: b29a uxth r2, r3 + 800ec88: 4b06 ldr r3, [pc, #24] @ (800eca4 ) + 800ec8a: 82da strh r2, [r3, #22] + 800ec8c: 68fb ldr r3, [r7, #12] + 800ec8e: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800ec68: 68bb ldr r3, [r7, #8] - 800ec6a: f383 8810 msr PRIMASK, r3 + 800ec90: 68bb ldr r3, [r7, #8] + 800ec92: f383 8810 msr PRIMASK, r3 } - 800ec6e: bf00 nop + 800ec96: bf00 nop UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); } - 800ec70: bf00 nop - 800ec72: 3714 adds r7, #20 - 800ec74: 46bd mov sp, r7 - 800ec76: bc80 pop {r7} - 800ec78: 4770 bx lr - 800ec7a: bf00 nop - 800ec7c: 20000c34 .word 0x20000c34 + 800ec98: bf00 nop + 800ec9a: 3714 adds r7, #20 + 800ec9c: 46bd mov sp, r7 + 800ec9e: bc80 pop {r7} + 800eca0: 4770 bx lr + 800eca2: bf00 nop + 800eca4: 20000c6c .word 0x20000c6c -0800ec80 : +0800eca8 : /** * @brief UnLock the trace buffer. * @retval None. */ static void TRACE_UnLock(void) { - 800ec80: b480 push {r7} - 800ec82: b085 sub sp, #20 - 800ec84: af00 add r7, sp, #0 + 800eca8: b480 push {r7} + 800ecaa: b085 sub sp, #20 + 800ecac: af00 add r7, sp, #0 __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); - 800ec86: f3ef 8310 mrs r3, PRIMASK - 800ec8a: 607b str r3, [r7, #4] + 800ecae: f3ef 8310 mrs r3, PRIMASK + 800ecb2: 607b str r3, [r7, #4] return(result); - 800ec8c: 687b ldr r3, [r7, #4] + 800ecb4: 687b ldr r3, [r7, #4] UTIL_ADV_TRACE_ENTER_CRITICAL_SECTION(); - 800ec8e: 60fb str r3, [r7, #12] + 800ecb6: 60fb str r3, [r7, #12] __ASM volatile ("cpsid i" : : : "memory"); - 800ec90: b672 cpsid i + 800ecb8: b672 cpsid i } - 800ec92: bf00 nop + 800ecba: bf00 nop ADV_TRACE_Ctx.TraceLock--; - 800ec94: 4b08 ldr r3, [pc, #32] @ (800ecb8 ) - 800ec96: 8adb ldrh r3, [r3, #22] - 800ec98: 3b01 subs r3, #1 - 800ec9a: b29a uxth r2, r3 - 800ec9c: 4b06 ldr r3, [pc, #24] @ (800ecb8 ) - 800ec9e: 82da strh r2, [r3, #22] - 800eca0: 68fb ldr r3, [r7, #12] - 800eca2: 60bb str r3, [r7, #8] + 800ecbc: 4b08 ldr r3, [pc, #32] @ (800ece0 ) + 800ecbe: 8adb ldrh r3, [r3, #22] + 800ecc0: 3b01 subs r3, #1 + 800ecc2: b29a uxth r2, r3 + 800ecc4: 4b06 ldr r3, [pc, #24] @ (800ece0 ) + 800ecc6: 82da strh r2, [r3, #22] + 800ecc8: 68fb ldr r3, [r7, #12] + 800ecca: 60bb str r3, [r7, #8] __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); - 800eca4: 68bb ldr r3, [r7, #8] - 800eca6: f383 8810 msr PRIMASK, r3 + 800eccc: 68bb ldr r3, [r7, #8] + 800ecce: f383 8810 msr PRIMASK, r3 } - 800ecaa: bf00 nop + 800ecd2: bf00 nop UTIL_ADV_TRACE_EXIT_CRITICAL_SECTION(); } - 800ecac: bf00 nop - 800ecae: 3714 adds r7, #20 - 800ecb0: 46bd mov sp, r7 - 800ecb2: bc80 pop {r7} - 800ecb4: 4770 bx lr - 800ecb6: bf00 nop - 800ecb8: 20000c34 .word 0x20000c34 + 800ecd4: bf00 nop + 800ecd6: 3714 adds r7, #20 + 800ecd8: 46bd mov sp, r7 + 800ecda: bc80 pop {r7} + 800ecdc: 4770 bx lr + 800ecde: bf00 nop + 800ece0: 20000c6c .word 0x20000c6c -0800ecbc : +0800ece4 : /** * @brief UnLock the trace buffer. * @retval None. */ static uint32_t TRACE_IsLocked(void) { - 800ecbc: b480 push {r7} - 800ecbe: af00 add r7, sp, #0 + 800ece4: b480 push {r7} + 800ece6: af00 add r7, sp, #0 return (ADV_TRACE_Ctx.TraceLock == 0u? 0u: 1u); - 800ecc0: 4b05 ldr r3, [pc, #20] @ (800ecd8 ) - 800ecc2: 8adb ldrh r3, [r3, #22] - 800ecc4: 2b00 cmp r3, #0 - 800ecc6: bf14 ite ne - 800ecc8: 2301 movne r3, #1 - 800ecca: 2300 moveq r3, #0 - 800eccc: b2db uxtb r3, r3 + 800ece8: 4b05 ldr r3, [pc, #20] @ (800ed00 ) + 800ecea: 8adb ldrh r3, [r3, #22] + 800ecec: 2b00 cmp r3, #0 + 800ecee: bf14 ite ne + 800ecf0: 2301 movne r3, #1 + 800ecf2: 2300 moveq r3, #0 + 800ecf4: b2db uxtb r3, r3 } - 800ecce: 4618 mov r0, r3 - 800ecd0: 46bd mov sp, r7 - 800ecd2: bc80 pop {r7} - 800ecd4: 4770 bx lr - 800ecd6: bf00 nop - 800ecd8: 20000c34 .word 0x20000c34 + 800ecf6: 4618 mov r0, r3 + 800ecf8: 46bd mov sp, r7 + 800ecfa: bc80 pop {r7} + 800ecfc: 4770 bx lr + 800ecfe: bf00 nop + 800ed00: 20000c6c .word 0x20000c6c -0800ecdc <_strtol_l.isra.0>: - 800ecdc: 2b24 cmp r3, #36 @ 0x24 - 800ecde: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800ece2: 4686 mov lr, r0 - 800ece4: 4690 mov r8, r2 - 800ece6: d801 bhi.n 800ecec <_strtol_l.isra.0+0x10> - 800ece8: 2b01 cmp r3, #1 - 800ecea: d106 bne.n 800ecfa <_strtol_l.isra.0+0x1e> - 800ecec: f000 f948 bl 800ef80 <__errno> - 800ecf0: 2316 movs r3, #22 - 800ecf2: 6003 str r3, [r0, #0] - 800ecf4: 2000 movs r0, #0 - 800ecf6: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800ecfa: 4834 ldr r0, [pc, #208] @ (800edcc <_strtol_l.isra.0+0xf0>) - 800ecfc: 460d mov r5, r1 - 800ecfe: 462a mov r2, r5 - 800ed00: f815 4b01 ldrb.w r4, [r5], #1 - 800ed04: 5d06 ldrb r6, [r0, r4] - 800ed06: f016 0608 ands.w r6, r6, #8 - 800ed0a: d1f8 bne.n 800ecfe <_strtol_l.isra.0+0x22> - 800ed0c: 2c2d cmp r4, #45 @ 0x2d - 800ed0e: d110 bne.n 800ed32 <_strtol_l.isra.0+0x56> - 800ed10: 782c ldrb r4, [r5, #0] - 800ed12: 2601 movs r6, #1 - 800ed14: 1c95 adds r5, r2, #2 - 800ed16: f033 0210 bics.w r2, r3, #16 - 800ed1a: d115 bne.n 800ed48 <_strtol_l.isra.0+0x6c> - 800ed1c: 2c30 cmp r4, #48 @ 0x30 - 800ed1e: d10d bne.n 800ed3c <_strtol_l.isra.0+0x60> - 800ed20: 782a ldrb r2, [r5, #0] - 800ed22: f002 02df and.w r2, r2, #223 @ 0xdf - 800ed26: 2a58 cmp r2, #88 @ 0x58 - 800ed28: d108 bne.n 800ed3c <_strtol_l.isra.0+0x60> - 800ed2a: 786c ldrb r4, [r5, #1] - 800ed2c: 3502 adds r5, #2 - 800ed2e: 2310 movs r3, #16 - 800ed30: e00a b.n 800ed48 <_strtol_l.isra.0+0x6c> - 800ed32: 2c2b cmp r4, #43 @ 0x2b - 800ed34: bf04 itt eq - 800ed36: 782c ldrbeq r4, [r5, #0] - 800ed38: 1c95 addeq r5, r2, #2 - 800ed3a: e7ec b.n 800ed16 <_strtol_l.isra.0+0x3a> - 800ed3c: 2b00 cmp r3, #0 - 800ed3e: d1f6 bne.n 800ed2e <_strtol_l.isra.0+0x52> - 800ed40: 2c30 cmp r4, #48 @ 0x30 - 800ed42: bf14 ite ne - 800ed44: 230a movne r3, #10 - 800ed46: 2308 moveq r3, #8 - 800ed48: f106 4c00 add.w ip, r6, #2147483648 @ 0x80000000 - 800ed4c: f10c 3cff add.w ip, ip, #4294967295 @ 0xffffffff - 800ed50: 2200 movs r2, #0 - 800ed52: fbbc f9f3 udiv r9, ip, r3 - 800ed56: 4610 mov r0, r2 - 800ed58: fb03 ca19 mls sl, r3, r9, ip - 800ed5c: f1a4 0730 sub.w r7, r4, #48 @ 0x30 - 800ed60: 2f09 cmp r7, #9 - 800ed62: d80f bhi.n 800ed84 <_strtol_l.isra.0+0xa8> - 800ed64: 463c mov r4, r7 - 800ed66: 42a3 cmp r3, r4 - 800ed68: dd1b ble.n 800eda2 <_strtol_l.isra.0+0xc6> - 800ed6a: 1c57 adds r7, r2, #1 - 800ed6c: d007 beq.n 800ed7e <_strtol_l.isra.0+0xa2> - 800ed6e: 4581 cmp r9, r0 - 800ed70: d314 bcc.n 800ed9c <_strtol_l.isra.0+0xc0> - 800ed72: d101 bne.n 800ed78 <_strtol_l.isra.0+0x9c> - 800ed74: 45a2 cmp sl, r4 - 800ed76: db11 blt.n 800ed9c <_strtol_l.isra.0+0xc0> - 800ed78: fb00 4003 mla r0, r0, r3, r4 - 800ed7c: 2201 movs r2, #1 - 800ed7e: f815 4b01 ldrb.w r4, [r5], #1 - 800ed82: e7eb b.n 800ed5c <_strtol_l.isra.0+0x80> - 800ed84: f1a4 0741 sub.w r7, r4, #65 @ 0x41 - 800ed88: 2f19 cmp r7, #25 - 800ed8a: d801 bhi.n 800ed90 <_strtol_l.isra.0+0xb4> - 800ed8c: 3c37 subs r4, #55 @ 0x37 - 800ed8e: e7ea b.n 800ed66 <_strtol_l.isra.0+0x8a> - 800ed90: f1a4 0761 sub.w r7, r4, #97 @ 0x61 - 800ed94: 2f19 cmp r7, #25 - 800ed96: d804 bhi.n 800eda2 <_strtol_l.isra.0+0xc6> - 800ed98: 3c57 subs r4, #87 @ 0x57 - 800ed9a: e7e4 b.n 800ed66 <_strtol_l.isra.0+0x8a> - 800ed9c: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 800eda0: e7ed b.n 800ed7e <_strtol_l.isra.0+0xa2> - 800eda2: 1c53 adds r3, r2, #1 - 800eda4: d108 bne.n 800edb8 <_strtol_l.isra.0+0xdc> - 800eda6: 2322 movs r3, #34 @ 0x22 - 800eda8: f8ce 3000 str.w r3, [lr] - 800edac: 4660 mov r0, ip - 800edae: f1b8 0f00 cmp.w r8, #0 - 800edb2: d0a0 beq.n 800ecf6 <_strtol_l.isra.0+0x1a> - 800edb4: 1e69 subs r1, r5, #1 - 800edb6: e006 b.n 800edc6 <_strtol_l.isra.0+0xea> - 800edb8: b106 cbz r6, 800edbc <_strtol_l.isra.0+0xe0> - 800edba: 4240 negs r0, r0 - 800edbc: f1b8 0f00 cmp.w r8, #0 - 800edc0: d099 beq.n 800ecf6 <_strtol_l.isra.0+0x1a> - 800edc2: 2a00 cmp r2, #0 - 800edc4: d1f6 bne.n 800edb4 <_strtol_l.isra.0+0xd8> - 800edc6: f8c8 1000 str.w r1, [r8] - 800edca: e794 b.n 800ecf6 <_strtol_l.isra.0+0x1a> - 800edcc: 08010519 .word 0x08010519 +0800ed04 <_strtol_l.isra.0>: + 800ed04: 2b24 cmp r3, #36 @ 0x24 + 800ed06: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800ed0a: 4686 mov lr, r0 + 800ed0c: 4690 mov r8, r2 + 800ed0e: d801 bhi.n 800ed14 <_strtol_l.isra.0+0x10> + 800ed10: 2b01 cmp r3, #1 + 800ed12: d106 bne.n 800ed22 <_strtol_l.isra.0+0x1e> + 800ed14: f000 f948 bl 800efa8 <__errno> + 800ed18: 2316 movs r3, #22 + 800ed1a: 6003 str r3, [r0, #0] + 800ed1c: 2000 movs r0, #0 + 800ed1e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800ed22: 4834 ldr r0, [pc, #208] @ (800edf4 <_strtol_l.isra.0+0xf0>) + 800ed24: 460d mov r5, r1 + 800ed26: 462a mov r2, r5 + 800ed28: f815 4b01 ldrb.w r4, [r5], #1 + 800ed2c: 5d06 ldrb r6, [r0, r4] + 800ed2e: f016 0608 ands.w r6, r6, #8 + 800ed32: d1f8 bne.n 800ed26 <_strtol_l.isra.0+0x22> + 800ed34: 2c2d cmp r4, #45 @ 0x2d + 800ed36: d110 bne.n 800ed5a <_strtol_l.isra.0+0x56> + 800ed38: 782c ldrb r4, [r5, #0] + 800ed3a: 2601 movs r6, #1 + 800ed3c: 1c95 adds r5, r2, #2 + 800ed3e: f033 0210 bics.w r2, r3, #16 + 800ed42: d115 bne.n 800ed70 <_strtol_l.isra.0+0x6c> + 800ed44: 2c30 cmp r4, #48 @ 0x30 + 800ed46: d10d bne.n 800ed64 <_strtol_l.isra.0+0x60> + 800ed48: 782a ldrb r2, [r5, #0] + 800ed4a: f002 02df and.w r2, r2, #223 @ 0xdf + 800ed4e: 2a58 cmp r2, #88 @ 0x58 + 800ed50: d108 bne.n 800ed64 <_strtol_l.isra.0+0x60> + 800ed52: 786c ldrb r4, [r5, #1] + 800ed54: 3502 adds r5, #2 + 800ed56: 2310 movs r3, #16 + 800ed58: e00a b.n 800ed70 <_strtol_l.isra.0+0x6c> + 800ed5a: 2c2b cmp r4, #43 @ 0x2b + 800ed5c: bf04 itt eq + 800ed5e: 782c ldrbeq r4, [r5, #0] + 800ed60: 1c95 addeq r5, r2, #2 + 800ed62: e7ec b.n 800ed3e <_strtol_l.isra.0+0x3a> + 800ed64: 2b00 cmp r3, #0 + 800ed66: d1f6 bne.n 800ed56 <_strtol_l.isra.0+0x52> + 800ed68: 2c30 cmp r4, #48 @ 0x30 + 800ed6a: bf14 ite ne + 800ed6c: 230a movne r3, #10 + 800ed6e: 2308 moveq r3, #8 + 800ed70: f106 4c00 add.w ip, r6, #2147483648 @ 0x80000000 + 800ed74: f10c 3cff add.w ip, ip, #4294967295 @ 0xffffffff + 800ed78: 2200 movs r2, #0 + 800ed7a: fbbc f9f3 udiv r9, ip, r3 + 800ed7e: 4610 mov r0, r2 + 800ed80: fb03 ca19 mls sl, r3, r9, ip + 800ed84: f1a4 0730 sub.w r7, r4, #48 @ 0x30 + 800ed88: 2f09 cmp r7, #9 + 800ed8a: d80f bhi.n 800edac <_strtol_l.isra.0+0xa8> + 800ed8c: 463c mov r4, r7 + 800ed8e: 42a3 cmp r3, r4 + 800ed90: dd1b ble.n 800edca <_strtol_l.isra.0+0xc6> + 800ed92: 1c57 adds r7, r2, #1 + 800ed94: d007 beq.n 800eda6 <_strtol_l.isra.0+0xa2> + 800ed96: 4581 cmp r9, r0 + 800ed98: d314 bcc.n 800edc4 <_strtol_l.isra.0+0xc0> + 800ed9a: d101 bne.n 800eda0 <_strtol_l.isra.0+0x9c> + 800ed9c: 45a2 cmp sl, r4 + 800ed9e: db11 blt.n 800edc4 <_strtol_l.isra.0+0xc0> + 800eda0: fb00 4003 mla r0, r0, r3, r4 + 800eda4: 2201 movs r2, #1 + 800eda6: f815 4b01 ldrb.w r4, [r5], #1 + 800edaa: e7eb b.n 800ed84 <_strtol_l.isra.0+0x80> + 800edac: f1a4 0741 sub.w r7, r4, #65 @ 0x41 + 800edb0: 2f19 cmp r7, #25 + 800edb2: d801 bhi.n 800edb8 <_strtol_l.isra.0+0xb4> + 800edb4: 3c37 subs r4, #55 @ 0x37 + 800edb6: e7ea b.n 800ed8e <_strtol_l.isra.0+0x8a> + 800edb8: f1a4 0761 sub.w r7, r4, #97 @ 0x61 + 800edbc: 2f19 cmp r7, #25 + 800edbe: d804 bhi.n 800edca <_strtol_l.isra.0+0xc6> + 800edc0: 3c57 subs r4, #87 @ 0x57 + 800edc2: e7e4 b.n 800ed8e <_strtol_l.isra.0+0x8a> + 800edc4: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800edc8: e7ed b.n 800eda6 <_strtol_l.isra.0+0xa2> + 800edca: 1c53 adds r3, r2, #1 + 800edcc: d108 bne.n 800ede0 <_strtol_l.isra.0+0xdc> + 800edce: 2322 movs r3, #34 @ 0x22 + 800edd0: f8ce 3000 str.w r3, [lr] + 800edd4: 4660 mov r0, ip + 800edd6: f1b8 0f00 cmp.w r8, #0 + 800edda: d0a0 beq.n 800ed1e <_strtol_l.isra.0+0x1a> + 800eddc: 1e69 subs r1, r5, #1 + 800edde: e006 b.n 800edee <_strtol_l.isra.0+0xea> + 800ede0: b106 cbz r6, 800ede4 <_strtol_l.isra.0+0xe0> + 800ede2: 4240 negs r0, r0 + 800ede4: f1b8 0f00 cmp.w r8, #0 + 800ede8: d099 beq.n 800ed1e <_strtol_l.isra.0+0x1a> + 800edea: 2a00 cmp r2, #0 + 800edec: d1f6 bne.n 800eddc <_strtol_l.isra.0+0xd8> + 800edee: f8c8 1000 str.w r1, [r8] + 800edf2: e794 b.n 800ed1e <_strtol_l.isra.0+0x1a> + 800edf4: 08010541 .word 0x08010541 -0800edd0 : - 800edd0: 4613 mov r3, r2 - 800edd2: 460a mov r2, r1 - 800edd4: 4601 mov r1, r0 - 800edd6: 4802 ldr r0, [pc, #8] @ (800ede0 ) - 800edd8: 6800 ldr r0, [r0, #0] - 800edda: f7ff bf7f b.w 800ecdc <_strtol_l.isra.0> - 800edde: bf00 nop - 800ede0: 2000001c .word 0x2000001c +0800edf8 : + 800edf8: 4613 mov r3, r2 + 800edfa: 460a mov r2, r1 + 800edfc: 4601 mov r1, r0 + 800edfe: 4802 ldr r0, [pc, #8] @ (800ee08 ) + 800ee00: 6800 ldr r0, [r0, #0] + 800ee02: f7ff bf7f b.w 800ed04 <_strtol_l.isra.0> + 800ee06: bf00 nop + 800ee08: 2000001c .word 0x2000001c -0800ede4 <_strtoul_l.isra.0>: - 800ede4: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} - 800ede8: 4e34 ldr r6, [pc, #208] @ (800eebc <_strtoul_l.isra.0+0xd8>) - 800edea: 4686 mov lr, r0 - 800edec: 460d mov r5, r1 - 800edee: 4628 mov r0, r5 - 800edf0: f815 4b01 ldrb.w r4, [r5], #1 - 800edf4: 5d37 ldrb r7, [r6, r4] - 800edf6: f017 0708 ands.w r7, r7, #8 - 800edfa: d1f8 bne.n 800edee <_strtoul_l.isra.0+0xa> - 800edfc: 2c2d cmp r4, #45 @ 0x2d - 800edfe: d110 bne.n 800ee22 <_strtoul_l.isra.0+0x3e> - 800ee00: 782c ldrb r4, [r5, #0] - 800ee02: 2701 movs r7, #1 - 800ee04: 1c85 adds r5, r0, #2 - 800ee06: f033 0010 bics.w r0, r3, #16 - 800ee0a: d115 bne.n 800ee38 <_strtoul_l.isra.0+0x54> - 800ee0c: 2c30 cmp r4, #48 @ 0x30 - 800ee0e: d10d bne.n 800ee2c <_strtoul_l.isra.0+0x48> - 800ee10: 7828 ldrb r0, [r5, #0] - 800ee12: f000 00df and.w r0, r0, #223 @ 0xdf - 800ee16: 2858 cmp r0, #88 @ 0x58 - 800ee18: d108 bne.n 800ee2c <_strtoul_l.isra.0+0x48> - 800ee1a: 786c ldrb r4, [r5, #1] - 800ee1c: 3502 adds r5, #2 - 800ee1e: 2310 movs r3, #16 - 800ee20: e00a b.n 800ee38 <_strtoul_l.isra.0+0x54> - 800ee22: 2c2b cmp r4, #43 @ 0x2b - 800ee24: bf04 itt eq - 800ee26: 782c ldrbeq r4, [r5, #0] - 800ee28: 1c85 addeq r5, r0, #2 - 800ee2a: e7ec b.n 800ee06 <_strtoul_l.isra.0+0x22> - 800ee2c: 2b00 cmp r3, #0 - 800ee2e: d1f6 bne.n 800ee1e <_strtoul_l.isra.0+0x3a> - 800ee30: 2c30 cmp r4, #48 @ 0x30 - 800ee32: bf14 ite ne - 800ee34: 230a movne r3, #10 - 800ee36: 2308 moveq r3, #8 - 800ee38: f04f 38ff mov.w r8, #4294967295 @ 0xffffffff - 800ee3c: 2600 movs r6, #0 - 800ee3e: fbb8 f8f3 udiv r8, r8, r3 - 800ee42: fb03 f908 mul.w r9, r3, r8 - 800ee46: ea6f 0909 mvn.w r9, r9 - 800ee4a: 4630 mov r0, r6 - 800ee4c: f1a4 0c30 sub.w ip, r4, #48 @ 0x30 - 800ee50: f1bc 0f09 cmp.w ip, #9 - 800ee54: d810 bhi.n 800ee78 <_strtoul_l.isra.0+0x94> - 800ee56: 4664 mov r4, ip - 800ee58: 42a3 cmp r3, r4 - 800ee5a: dd1e ble.n 800ee9a <_strtoul_l.isra.0+0xb6> - 800ee5c: f1b6 3fff cmp.w r6, #4294967295 @ 0xffffffff - 800ee60: d007 beq.n 800ee72 <_strtoul_l.isra.0+0x8e> - 800ee62: 4580 cmp r8, r0 - 800ee64: d316 bcc.n 800ee94 <_strtoul_l.isra.0+0xb0> - 800ee66: d101 bne.n 800ee6c <_strtoul_l.isra.0+0x88> - 800ee68: 45a1 cmp r9, r4 - 800ee6a: db13 blt.n 800ee94 <_strtoul_l.isra.0+0xb0> - 800ee6c: fb00 4003 mla r0, r0, r3, r4 - 800ee70: 2601 movs r6, #1 - 800ee72: f815 4b01 ldrb.w r4, [r5], #1 - 800ee76: e7e9 b.n 800ee4c <_strtoul_l.isra.0+0x68> - 800ee78: f1a4 0c41 sub.w ip, r4, #65 @ 0x41 - 800ee7c: f1bc 0f19 cmp.w ip, #25 - 800ee80: d801 bhi.n 800ee86 <_strtoul_l.isra.0+0xa2> - 800ee82: 3c37 subs r4, #55 @ 0x37 - 800ee84: e7e8 b.n 800ee58 <_strtoul_l.isra.0+0x74> - 800ee86: f1a4 0c61 sub.w ip, r4, #97 @ 0x61 - 800ee8a: f1bc 0f19 cmp.w ip, #25 - 800ee8e: d804 bhi.n 800ee9a <_strtoul_l.isra.0+0xb6> - 800ee90: 3c57 subs r4, #87 @ 0x57 - 800ee92: e7e1 b.n 800ee58 <_strtoul_l.isra.0+0x74> - 800ee94: f04f 36ff mov.w r6, #4294967295 @ 0xffffffff - 800ee98: e7eb b.n 800ee72 <_strtoul_l.isra.0+0x8e> - 800ee9a: 1c73 adds r3, r6, #1 - 800ee9c: d106 bne.n 800eeac <_strtoul_l.isra.0+0xc8> - 800ee9e: 2322 movs r3, #34 @ 0x22 - 800eea0: f8ce 3000 str.w r3, [lr] - 800eea4: 4630 mov r0, r6 - 800eea6: b932 cbnz r2, 800eeb6 <_strtoul_l.isra.0+0xd2> - 800eea8: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} - 800eeac: b107 cbz r7, 800eeb0 <_strtoul_l.isra.0+0xcc> - 800eeae: 4240 negs r0, r0 - 800eeb0: 2a00 cmp r2, #0 - 800eeb2: d0f9 beq.n 800eea8 <_strtoul_l.isra.0+0xc4> - 800eeb4: b106 cbz r6, 800eeb8 <_strtoul_l.isra.0+0xd4> - 800eeb6: 1e69 subs r1, r5, #1 - 800eeb8: 6011 str r1, [r2, #0] - 800eeba: e7f5 b.n 800eea8 <_strtoul_l.isra.0+0xc4> - 800eebc: 08010519 .word 0x08010519 +0800ee0c <_strtoul_l.isra.0>: + 800ee0c: e92d 43f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, lr} + 800ee10: 4e34 ldr r6, [pc, #208] @ (800eee4 <_strtoul_l.isra.0+0xd8>) + 800ee12: 4686 mov lr, r0 + 800ee14: 460d mov r5, r1 + 800ee16: 4628 mov r0, r5 + 800ee18: f815 4b01 ldrb.w r4, [r5], #1 + 800ee1c: 5d37 ldrb r7, [r6, r4] + 800ee1e: f017 0708 ands.w r7, r7, #8 + 800ee22: d1f8 bne.n 800ee16 <_strtoul_l.isra.0+0xa> + 800ee24: 2c2d cmp r4, #45 @ 0x2d + 800ee26: d110 bne.n 800ee4a <_strtoul_l.isra.0+0x3e> + 800ee28: 782c ldrb r4, [r5, #0] + 800ee2a: 2701 movs r7, #1 + 800ee2c: 1c85 adds r5, r0, #2 + 800ee2e: f033 0010 bics.w r0, r3, #16 + 800ee32: d115 bne.n 800ee60 <_strtoul_l.isra.0+0x54> + 800ee34: 2c30 cmp r4, #48 @ 0x30 + 800ee36: d10d bne.n 800ee54 <_strtoul_l.isra.0+0x48> + 800ee38: 7828 ldrb r0, [r5, #0] + 800ee3a: f000 00df and.w r0, r0, #223 @ 0xdf + 800ee3e: 2858 cmp r0, #88 @ 0x58 + 800ee40: d108 bne.n 800ee54 <_strtoul_l.isra.0+0x48> + 800ee42: 786c ldrb r4, [r5, #1] + 800ee44: 3502 adds r5, #2 + 800ee46: 2310 movs r3, #16 + 800ee48: e00a b.n 800ee60 <_strtoul_l.isra.0+0x54> + 800ee4a: 2c2b cmp r4, #43 @ 0x2b + 800ee4c: bf04 itt eq + 800ee4e: 782c ldrbeq r4, [r5, #0] + 800ee50: 1c85 addeq r5, r0, #2 + 800ee52: e7ec b.n 800ee2e <_strtoul_l.isra.0+0x22> + 800ee54: 2b00 cmp r3, #0 + 800ee56: d1f6 bne.n 800ee46 <_strtoul_l.isra.0+0x3a> + 800ee58: 2c30 cmp r4, #48 @ 0x30 + 800ee5a: bf14 ite ne + 800ee5c: 230a movne r3, #10 + 800ee5e: 2308 moveq r3, #8 + 800ee60: f04f 38ff mov.w r8, #4294967295 @ 0xffffffff + 800ee64: 2600 movs r6, #0 + 800ee66: fbb8 f8f3 udiv r8, r8, r3 + 800ee6a: fb03 f908 mul.w r9, r3, r8 + 800ee6e: ea6f 0909 mvn.w r9, r9 + 800ee72: 4630 mov r0, r6 + 800ee74: f1a4 0c30 sub.w ip, r4, #48 @ 0x30 + 800ee78: f1bc 0f09 cmp.w ip, #9 + 800ee7c: d810 bhi.n 800eea0 <_strtoul_l.isra.0+0x94> + 800ee7e: 4664 mov r4, ip + 800ee80: 42a3 cmp r3, r4 + 800ee82: dd1e ble.n 800eec2 <_strtoul_l.isra.0+0xb6> + 800ee84: f1b6 3fff cmp.w r6, #4294967295 @ 0xffffffff + 800ee88: d007 beq.n 800ee9a <_strtoul_l.isra.0+0x8e> + 800ee8a: 4580 cmp r8, r0 + 800ee8c: d316 bcc.n 800eebc <_strtoul_l.isra.0+0xb0> + 800ee8e: d101 bne.n 800ee94 <_strtoul_l.isra.0+0x88> + 800ee90: 45a1 cmp r9, r4 + 800ee92: db13 blt.n 800eebc <_strtoul_l.isra.0+0xb0> + 800ee94: fb00 4003 mla r0, r0, r3, r4 + 800ee98: 2601 movs r6, #1 + 800ee9a: f815 4b01 ldrb.w r4, [r5], #1 + 800ee9e: e7e9 b.n 800ee74 <_strtoul_l.isra.0+0x68> + 800eea0: f1a4 0c41 sub.w ip, r4, #65 @ 0x41 + 800eea4: f1bc 0f19 cmp.w ip, #25 + 800eea8: d801 bhi.n 800eeae <_strtoul_l.isra.0+0xa2> + 800eeaa: 3c37 subs r4, #55 @ 0x37 + 800eeac: e7e8 b.n 800ee80 <_strtoul_l.isra.0+0x74> + 800eeae: f1a4 0c61 sub.w ip, r4, #97 @ 0x61 + 800eeb2: f1bc 0f19 cmp.w ip, #25 + 800eeb6: d804 bhi.n 800eec2 <_strtoul_l.isra.0+0xb6> + 800eeb8: 3c57 subs r4, #87 @ 0x57 + 800eeba: e7e1 b.n 800ee80 <_strtoul_l.isra.0+0x74> + 800eebc: f04f 36ff mov.w r6, #4294967295 @ 0xffffffff + 800eec0: e7eb b.n 800ee9a <_strtoul_l.isra.0+0x8e> + 800eec2: 1c73 adds r3, r6, #1 + 800eec4: d106 bne.n 800eed4 <_strtoul_l.isra.0+0xc8> + 800eec6: 2322 movs r3, #34 @ 0x22 + 800eec8: f8ce 3000 str.w r3, [lr] + 800eecc: 4630 mov r0, r6 + 800eece: b932 cbnz r2, 800eede <_strtoul_l.isra.0+0xd2> + 800eed0: e8bd 83f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc} + 800eed4: b107 cbz r7, 800eed8 <_strtoul_l.isra.0+0xcc> + 800eed6: 4240 negs r0, r0 + 800eed8: 2a00 cmp r2, #0 + 800eeda: d0f9 beq.n 800eed0 <_strtoul_l.isra.0+0xc4> + 800eedc: b106 cbz r6, 800eee0 <_strtoul_l.isra.0+0xd4> + 800eede: 1e69 subs r1, r5, #1 + 800eee0: 6011 str r1, [r2, #0] + 800eee2: e7f5 b.n 800eed0 <_strtoul_l.isra.0+0xc4> + 800eee4: 08010541 .word 0x08010541 -0800eec0 : - 800eec0: 4613 mov r3, r2 - 800eec2: 460a mov r2, r1 - 800eec4: 4601 mov r1, r0 - 800eec6: 4802 ldr r0, [pc, #8] @ (800eed0 ) - 800eec8: 6800 ldr r0, [r0, #0] - 800eeca: f7ff bf8b b.w 800ede4 <_strtoul_l.isra.0> - 800eece: bf00 nop - 800eed0: 2000001c .word 0x2000001c +0800eee8 : + 800eee8: 4613 mov r3, r2 + 800eeea: 460a mov r2, r1 + 800eeec: 4601 mov r1, r0 + 800eeee: 4802 ldr r0, [pc, #8] @ (800eef8 ) + 800eef0: 6800 ldr r0, [r0, #0] + 800eef2: f7ff bf8b b.w 800ee0c <_strtoul_l.isra.0> + 800eef6: bf00 nop + 800eef8: 2000001c .word 0x2000001c -0800eed4 <_vsniprintf_r>: - 800eed4: b530 push {r4, r5, lr} - 800eed6: 4614 mov r4, r2 - 800eed8: 2c00 cmp r4, #0 - 800eeda: b09b sub sp, #108 @ 0x6c - 800eedc: 4605 mov r5, r0 - 800eede: 461a mov r2, r3 - 800eee0: da05 bge.n 800eeee <_vsniprintf_r+0x1a> - 800eee2: 238b movs r3, #139 @ 0x8b - 800eee4: 6003 str r3, [r0, #0] - 800eee6: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800eeea: b01b add sp, #108 @ 0x6c - 800eeec: bd30 pop {r4, r5, pc} - 800eeee: f44f 7302 mov.w r3, #520 @ 0x208 - 800eef2: f8ad 300c strh.w r3, [sp, #12] - 800eef6: f04f 0300 mov.w r3, #0 - 800eefa: 9319 str r3, [sp, #100] @ 0x64 - 800eefc: bf14 ite ne - 800eefe: f104 33ff addne.w r3, r4, #4294967295 @ 0xffffffff - 800ef02: 4623 moveq r3, r4 - 800ef04: 9302 str r3, [sp, #8] - 800ef06: 9305 str r3, [sp, #20] - 800ef08: f64f 73ff movw r3, #65535 @ 0xffff - 800ef0c: 9100 str r1, [sp, #0] - 800ef0e: 9104 str r1, [sp, #16] - 800ef10: f8ad 300e strh.w r3, [sp, #14] - 800ef14: 4669 mov r1, sp - 800ef16: 9b1e ldr r3, [sp, #120] @ 0x78 - 800ef18: f000 f9c0 bl 800f29c <_svfiprintf_r> - 800ef1c: 1c43 adds r3, r0, #1 - 800ef1e: bfbc itt lt - 800ef20: 238b movlt r3, #139 @ 0x8b - 800ef22: 602b strlt r3, [r5, #0] - 800ef24: 2c00 cmp r4, #0 - 800ef26: d0e0 beq.n 800eeea <_vsniprintf_r+0x16> - 800ef28: 9b00 ldr r3, [sp, #0] - 800ef2a: 2200 movs r2, #0 - 800ef2c: 701a strb r2, [r3, #0] - 800ef2e: e7dc b.n 800eeea <_vsniprintf_r+0x16> +0800eefc <_vsniprintf_r>: + 800eefc: b530 push {r4, r5, lr} + 800eefe: 4614 mov r4, r2 + 800ef00: 2c00 cmp r4, #0 + 800ef02: b09b sub sp, #108 @ 0x6c + 800ef04: 4605 mov r5, r0 + 800ef06: 461a mov r2, r3 + 800ef08: da05 bge.n 800ef16 <_vsniprintf_r+0x1a> + 800ef0a: 238b movs r3, #139 @ 0x8b + 800ef0c: 6003 str r3, [r0, #0] + 800ef0e: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800ef12: b01b add sp, #108 @ 0x6c + 800ef14: bd30 pop {r4, r5, pc} + 800ef16: f44f 7302 mov.w r3, #520 @ 0x208 + 800ef1a: f8ad 300c strh.w r3, [sp, #12] + 800ef1e: f04f 0300 mov.w r3, #0 + 800ef22: 9319 str r3, [sp, #100] @ 0x64 + 800ef24: bf14 ite ne + 800ef26: f104 33ff addne.w r3, r4, #4294967295 @ 0xffffffff + 800ef2a: 4623 moveq r3, r4 + 800ef2c: 9302 str r3, [sp, #8] + 800ef2e: 9305 str r3, [sp, #20] + 800ef30: f64f 73ff movw r3, #65535 @ 0xffff + 800ef34: 9100 str r1, [sp, #0] + 800ef36: 9104 str r1, [sp, #16] + 800ef38: f8ad 300e strh.w r3, [sp, #14] + 800ef3c: 4669 mov r1, sp + 800ef3e: 9b1e ldr r3, [sp, #120] @ 0x78 + 800ef40: f000 f9c0 bl 800f2c4 <_svfiprintf_r> + 800ef44: 1c43 adds r3, r0, #1 + 800ef46: bfbc itt lt + 800ef48: 238b movlt r3, #139 @ 0x8b + 800ef4a: 602b strlt r3, [r5, #0] + 800ef4c: 2c00 cmp r4, #0 + 800ef4e: d0e0 beq.n 800ef12 <_vsniprintf_r+0x16> + 800ef50: 9b00 ldr r3, [sp, #0] + 800ef52: 2200 movs r2, #0 + 800ef54: 701a strb r2, [r3, #0] + 800ef56: e7dc b.n 800ef12 <_vsniprintf_r+0x16> -0800ef30 : - 800ef30: b507 push {r0, r1, r2, lr} - 800ef32: 9300 str r3, [sp, #0] - 800ef34: 4613 mov r3, r2 - 800ef36: 460a mov r2, r1 - 800ef38: 4601 mov r1, r0 - 800ef3a: 4803 ldr r0, [pc, #12] @ (800ef48 ) - 800ef3c: 6800 ldr r0, [r0, #0] - 800ef3e: f7ff ffc9 bl 800eed4 <_vsniprintf_r> - 800ef42: b003 add sp, #12 - 800ef44: f85d fb04 ldr.w pc, [sp], #4 - 800ef48: 2000001c .word 0x2000001c +0800ef58 : + 800ef58: b507 push {r0, r1, r2, lr} + 800ef5a: 9300 str r3, [sp, #0] + 800ef5c: 4613 mov r3, r2 + 800ef5e: 460a mov r2, r1 + 800ef60: 4601 mov r1, r0 + 800ef62: 4803 ldr r0, [pc, #12] @ (800ef70 ) + 800ef64: 6800 ldr r0, [r0, #0] + 800ef66: f7ff ffc9 bl 800eefc <_vsniprintf_r> + 800ef6a: b003 add sp, #12 + 800ef6c: f85d fb04 ldr.w pc, [sp], #4 + 800ef70: 2000001c .word 0x2000001c -0800ef4c : - 800ef4c: 4402 add r2, r0 - 800ef4e: 4603 mov r3, r0 - 800ef50: 4293 cmp r3, r2 - 800ef52: d100 bne.n 800ef56 - 800ef54: 4770 bx lr - 800ef56: f803 1b01 strb.w r1, [r3], #1 - 800ef5a: e7f9 b.n 800ef50 +0800ef74 : + 800ef74: 4402 add r2, r0 + 800ef76: 4603 mov r3, r0 + 800ef78: 4293 cmp r3, r2 + 800ef7a: d100 bne.n 800ef7e + 800ef7c: 4770 bx lr + 800ef7e: f803 1b01 strb.w r1, [r3], #1 + 800ef82: e7f9 b.n 800ef78 -0800ef5c : - 800ef5c: b510 push {r4, lr} - 800ef5e: b16a cbz r2, 800ef7c - 800ef60: 3901 subs r1, #1 - 800ef62: 1884 adds r4, r0, r2 - 800ef64: f810 2b01 ldrb.w r2, [r0], #1 - 800ef68: f811 3f01 ldrb.w r3, [r1, #1]! - 800ef6c: 429a cmp r2, r3 - 800ef6e: d103 bne.n 800ef78 - 800ef70: 42a0 cmp r0, r4 - 800ef72: d001 beq.n 800ef78 - 800ef74: 2a00 cmp r2, #0 - 800ef76: d1f5 bne.n 800ef64 - 800ef78: 1ad0 subs r0, r2, r3 - 800ef7a: bd10 pop {r4, pc} - 800ef7c: 4610 mov r0, r2 - 800ef7e: e7fc b.n 800ef7a +0800ef84 : + 800ef84: b510 push {r4, lr} + 800ef86: b16a cbz r2, 800efa4 + 800ef88: 3901 subs r1, #1 + 800ef8a: 1884 adds r4, r0, r2 + 800ef8c: f810 2b01 ldrb.w r2, [r0], #1 + 800ef90: f811 3f01 ldrb.w r3, [r1, #1]! + 800ef94: 429a cmp r2, r3 + 800ef96: d103 bne.n 800efa0 + 800ef98: 42a0 cmp r0, r4 + 800ef9a: d001 beq.n 800efa0 + 800ef9c: 2a00 cmp r2, #0 + 800ef9e: d1f5 bne.n 800ef8c + 800efa0: 1ad0 subs r0, r2, r3 + 800efa2: bd10 pop {r4, pc} + 800efa4: 4610 mov r0, r2 + 800efa6: e7fc b.n 800efa2 -0800ef80 <__errno>: - 800ef80: 4b01 ldr r3, [pc, #4] @ (800ef88 <__errno+0x8>) - 800ef82: 6818 ldr r0, [r3, #0] - 800ef84: 4770 bx lr - 800ef86: bf00 nop - 800ef88: 2000001c .word 0x2000001c +0800efa8 <__errno>: + 800efa8: 4b01 ldr r3, [pc, #4] @ (800efb0 <__errno+0x8>) + 800efaa: 6818 ldr r0, [r3, #0] + 800efac: 4770 bx lr + 800efae: bf00 nop + 800efb0: 2000001c .word 0x2000001c -0800ef8c <__libc_init_array>: - 800ef8c: b570 push {r4, r5, r6, lr} - 800ef8e: 4d0d ldr r5, [pc, #52] @ (800efc4 <__libc_init_array+0x38>) - 800ef90: 4c0d ldr r4, [pc, #52] @ (800efc8 <__libc_init_array+0x3c>) - 800ef92: 1b64 subs r4, r4, r5 - 800ef94: 10a4 asrs r4, r4, #2 - 800ef96: 2600 movs r6, #0 - 800ef98: 42a6 cmp r6, r4 - 800ef9a: d109 bne.n 800efb0 <__libc_init_array+0x24> - 800ef9c: 4d0b ldr r5, [pc, #44] @ (800efcc <__libc_init_array+0x40>) - 800ef9e: 4c0c ldr r4, [pc, #48] @ (800efd0 <__libc_init_array+0x44>) - 800efa0: f000 fc64 bl 800f86c <_init> - 800efa4: 1b64 subs r4, r4, r5 - 800efa6: 10a4 asrs r4, r4, #2 - 800efa8: 2600 movs r6, #0 - 800efaa: 42a6 cmp r6, r4 - 800efac: d105 bne.n 800efba <__libc_init_array+0x2e> - 800efae: bd70 pop {r4, r5, r6, pc} - 800efb0: f855 3b04 ldr.w r3, [r5], #4 - 800efb4: 4798 blx r3 - 800efb6: 3601 adds r6, #1 - 800efb8: e7ee b.n 800ef98 <__libc_init_array+0xc> - 800efba: f855 3b04 ldr.w r3, [r5], #4 - 800efbe: 4798 blx r3 - 800efc0: 3601 adds r6, #1 - 800efc2: e7f2 b.n 800efaa <__libc_init_array+0x1e> - 800efc4: 08010654 .word 0x08010654 - 800efc8: 08010654 .word 0x08010654 - 800efcc: 08010654 .word 0x08010654 - 800efd0: 08010658 .word 0x08010658 +0800efb4 <__libc_init_array>: + 800efb4: b570 push {r4, r5, r6, lr} + 800efb6: 4d0d ldr r5, [pc, #52] @ (800efec <__libc_init_array+0x38>) + 800efb8: 4c0d ldr r4, [pc, #52] @ (800eff0 <__libc_init_array+0x3c>) + 800efba: 1b64 subs r4, r4, r5 + 800efbc: 10a4 asrs r4, r4, #2 + 800efbe: 2600 movs r6, #0 + 800efc0: 42a6 cmp r6, r4 + 800efc2: d109 bne.n 800efd8 <__libc_init_array+0x24> + 800efc4: 4d0b ldr r5, [pc, #44] @ (800eff4 <__libc_init_array+0x40>) + 800efc6: 4c0c ldr r4, [pc, #48] @ (800eff8 <__libc_init_array+0x44>) + 800efc8: f000 fc64 bl 800f894 <_init> + 800efcc: 1b64 subs r4, r4, r5 + 800efce: 10a4 asrs r4, r4, #2 + 800efd0: 2600 movs r6, #0 + 800efd2: 42a6 cmp r6, r4 + 800efd4: d105 bne.n 800efe2 <__libc_init_array+0x2e> + 800efd6: bd70 pop {r4, r5, r6, pc} + 800efd8: f855 3b04 ldr.w r3, [r5], #4 + 800efdc: 4798 blx r3 + 800efde: 3601 adds r6, #1 + 800efe0: e7ee b.n 800efc0 <__libc_init_array+0xc> + 800efe2: f855 3b04 ldr.w r3, [r5], #4 + 800efe6: 4798 blx r3 + 800efe8: 3601 adds r6, #1 + 800efea: e7f2 b.n 800efd2 <__libc_init_array+0x1e> + 800efec: 0801067c .word 0x0801067c + 800eff0: 0801067c .word 0x0801067c + 800eff4: 0801067c .word 0x0801067c + 800eff8: 08010680 .word 0x08010680 -0800efd4 <__retarget_lock_acquire_recursive>: - 800efd4: 4770 bx lr +0800effc <__retarget_lock_acquire_recursive>: + 800effc: 4770 bx lr -0800efd6 <__retarget_lock_release_recursive>: - 800efd6: 4770 bx lr +0800effe <__retarget_lock_release_recursive>: + 800effe: 4770 bx lr -0800efd8 : - 800efd8: 440a add r2, r1 - 800efda: 4291 cmp r1, r2 - 800efdc: f100 33ff add.w r3, r0, #4294967295 @ 0xffffffff - 800efe0: d100 bne.n 800efe4 - 800efe2: 4770 bx lr - 800efe4: b510 push {r4, lr} - 800efe6: f811 4b01 ldrb.w r4, [r1], #1 - 800efea: f803 4f01 strb.w r4, [r3, #1]! - 800efee: 4291 cmp r1, r2 - 800eff0: d1f9 bne.n 800efe6 - 800eff2: bd10 pop {r4, pc} +0800f000 : + 800f000: 440a add r2, r1 + 800f002: 4291 cmp r1, r2 + 800f004: f100 33ff add.w r3, r0, #4294967295 @ 0xffffffff + 800f008: d100 bne.n 800f00c + 800f00a: 4770 bx lr + 800f00c: b510 push {r4, lr} + 800f00e: f811 4b01 ldrb.w r4, [r1], #1 + 800f012: f803 4f01 strb.w r4, [r3, #1]! + 800f016: 4291 cmp r1, r2 + 800f018: d1f9 bne.n 800f00e + 800f01a: bd10 pop {r4, pc} -0800eff4 <_free_r>: - 800eff4: b538 push {r3, r4, r5, lr} - 800eff6: 4605 mov r5, r0 - 800eff8: 2900 cmp r1, #0 - 800effa: d041 beq.n 800f080 <_free_r+0x8c> - 800effc: f851 3c04 ldr.w r3, [r1, #-4] - 800f000: 1f0c subs r4, r1, #4 - 800f002: 2b00 cmp r3, #0 - 800f004: bfb8 it lt - 800f006: 18e4 addlt r4, r4, r3 - 800f008: f000 f8e0 bl 800f1cc <__malloc_lock> - 800f00c: 4a1d ldr r2, [pc, #116] @ (800f084 <_free_r+0x90>) - 800f00e: 6813 ldr r3, [r2, #0] - 800f010: b933 cbnz r3, 800f020 <_free_r+0x2c> - 800f012: 6063 str r3, [r4, #4] - 800f014: 6014 str r4, [r2, #0] - 800f016: 4628 mov r0, r5 - 800f018: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 800f01c: f000 b8dc b.w 800f1d8 <__malloc_unlock> - 800f020: 42a3 cmp r3, r4 - 800f022: d908 bls.n 800f036 <_free_r+0x42> - 800f024: 6820 ldr r0, [r4, #0] - 800f026: 1821 adds r1, r4, r0 - 800f028: 428b cmp r3, r1 - 800f02a: bf01 itttt eq - 800f02c: 6819 ldreq r1, [r3, #0] - 800f02e: 685b ldreq r3, [r3, #4] - 800f030: 1809 addeq r1, r1, r0 - 800f032: 6021 streq r1, [r4, #0] - 800f034: e7ed b.n 800f012 <_free_r+0x1e> - 800f036: 461a mov r2, r3 - 800f038: 685b ldr r3, [r3, #4] - 800f03a: b10b cbz r3, 800f040 <_free_r+0x4c> - 800f03c: 42a3 cmp r3, r4 - 800f03e: d9fa bls.n 800f036 <_free_r+0x42> - 800f040: 6811 ldr r1, [r2, #0] - 800f042: 1850 adds r0, r2, r1 - 800f044: 42a0 cmp r0, r4 - 800f046: d10b bne.n 800f060 <_free_r+0x6c> - 800f048: 6820 ldr r0, [r4, #0] - 800f04a: 4401 add r1, r0 - 800f04c: 1850 adds r0, r2, r1 - 800f04e: 4283 cmp r3, r0 - 800f050: 6011 str r1, [r2, #0] - 800f052: d1e0 bne.n 800f016 <_free_r+0x22> - 800f054: 6818 ldr r0, [r3, #0] - 800f056: 685b ldr r3, [r3, #4] - 800f058: 6053 str r3, [r2, #4] - 800f05a: 4408 add r0, r1 - 800f05c: 6010 str r0, [r2, #0] - 800f05e: e7da b.n 800f016 <_free_r+0x22> - 800f060: d902 bls.n 800f068 <_free_r+0x74> - 800f062: 230c movs r3, #12 - 800f064: 602b str r3, [r5, #0] - 800f066: e7d6 b.n 800f016 <_free_r+0x22> - 800f068: 6820 ldr r0, [r4, #0] - 800f06a: 1821 adds r1, r4, r0 - 800f06c: 428b cmp r3, r1 - 800f06e: bf04 itt eq - 800f070: 6819 ldreq r1, [r3, #0] - 800f072: 685b ldreq r3, [r3, #4] - 800f074: 6063 str r3, [r4, #4] - 800f076: bf04 itt eq - 800f078: 1809 addeq r1, r1, r0 - 800f07a: 6021 streq r1, [r4, #0] - 800f07c: 6054 str r4, [r2, #4] - 800f07e: e7ca b.n 800f016 <_free_r+0x22> - 800f080: bd38 pop {r3, r4, r5, pc} - 800f082: bf00 nop - 800f084: 20001090 .word 0x20001090 +0800f01c <_free_r>: + 800f01c: b538 push {r3, r4, r5, lr} + 800f01e: 4605 mov r5, r0 + 800f020: 2900 cmp r1, #0 + 800f022: d041 beq.n 800f0a8 <_free_r+0x8c> + 800f024: f851 3c04 ldr.w r3, [r1, #-4] + 800f028: 1f0c subs r4, r1, #4 + 800f02a: 2b00 cmp r3, #0 + 800f02c: bfb8 it lt + 800f02e: 18e4 addlt r4, r4, r3 + 800f030: f000 f8e0 bl 800f1f4 <__malloc_lock> + 800f034: 4a1d ldr r2, [pc, #116] @ (800f0ac <_free_r+0x90>) + 800f036: 6813 ldr r3, [r2, #0] + 800f038: b933 cbnz r3, 800f048 <_free_r+0x2c> + 800f03a: 6063 str r3, [r4, #4] + 800f03c: 6014 str r4, [r2, #0] + 800f03e: 4628 mov r0, r5 + 800f040: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 800f044: f000 b8dc b.w 800f200 <__malloc_unlock> + 800f048: 42a3 cmp r3, r4 + 800f04a: d908 bls.n 800f05e <_free_r+0x42> + 800f04c: 6820 ldr r0, [r4, #0] + 800f04e: 1821 adds r1, r4, r0 + 800f050: 428b cmp r3, r1 + 800f052: bf01 itttt eq + 800f054: 6819 ldreq r1, [r3, #0] + 800f056: 685b ldreq r3, [r3, #4] + 800f058: 1809 addeq r1, r1, r0 + 800f05a: 6021 streq r1, [r4, #0] + 800f05c: e7ed b.n 800f03a <_free_r+0x1e> + 800f05e: 461a mov r2, r3 + 800f060: 685b ldr r3, [r3, #4] + 800f062: b10b cbz r3, 800f068 <_free_r+0x4c> + 800f064: 42a3 cmp r3, r4 + 800f066: d9fa bls.n 800f05e <_free_r+0x42> + 800f068: 6811 ldr r1, [r2, #0] + 800f06a: 1850 adds r0, r2, r1 + 800f06c: 42a0 cmp r0, r4 + 800f06e: d10b bne.n 800f088 <_free_r+0x6c> + 800f070: 6820 ldr r0, [r4, #0] + 800f072: 4401 add r1, r0 + 800f074: 1850 adds r0, r2, r1 + 800f076: 4283 cmp r3, r0 + 800f078: 6011 str r1, [r2, #0] + 800f07a: d1e0 bne.n 800f03e <_free_r+0x22> + 800f07c: 6818 ldr r0, [r3, #0] + 800f07e: 685b ldr r3, [r3, #4] + 800f080: 6053 str r3, [r2, #4] + 800f082: 4408 add r0, r1 + 800f084: 6010 str r0, [r2, #0] + 800f086: e7da b.n 800f03e <_free_r+0x22> + 800f088: d902 bls.n 800f090 <_free_r+0x74> + 800f08a: 230c movs r3, #12 + 800f08c: 602b str r3, [r5, #0] + 800f08e: e7d6 b.n 800f03e <_free_r+0x22> + 800f090: 6820 ldr r0, [r4, #0] + 800f092: 1821 adds r1, r4, r0 + 800f094: 428b cmp r3, r1 + 800f096: bf04 itt eq + 800f098: 6819 ldreq r1, [r3, #0] + 800f09a: 685b ldreq r3, [r3, #4] + 800f09c: 6063 str r3, [r4, #4] + 800f09e: bf04 itt eq + 800f0a0: 1809 addeq r1, r1, r0 + 800f0a2: 6021 streq r1, [r4, #0] + 800f0a4: 6054 str r4, [r2, #4] + 800f0a6: e7ca b.n 800f03e <_free_r+0x22> + 800f0a8: bd38 pop {r3, r4, r5, pc} + 800f0aa: bf00 nop + 800f0ac: 200010c8 .word 0x200010c8 -0800f088 : - 800f088: b570 push {r4, r5, r6, lr} - 800f08a: 4e0f ldr r6, [pc, #60] @ (800f0c8 ) - 800f08c: 460c mov r4, r1 - 800f08e: 6831 ldr r1, [r6, #0] - 800f090: 4605 mov r5, r0 - 800f092: b911 cbnz r1, 800f09a - 800f094: f000 fba4 bl 800f7e0 <_sbrk_r> - 800f098: 6030 str r0, [r6, #0] - 800f09a: 4621 mov r1, r4 - 800f09c: 4628 mov r0, r5 - 800f09e: f000 fb9f bl 800f7e0 <_sbrk_r> - 800f0a2: 1c43 adds r3, r0, #1 - 800f0a4: d103 bne.n 800f0ae - 800f0a6: f04f 34ff mov.w r4, #4294967295 @ 0xffffffff - 800f0aa: 4620 mov r0, r4 - 800f0ac: bd70 pop {r4, r5, r6, pc} - 800f0ae: 1cc4 adds r4, r0, #3 - 800f0b0: f024 0403 bic.w r4, r4, #3 - 800f0b4: 42a0 cmp r0, r4 - 800f0b6: d0f8 beq.n 800f0aa - 800f0b8: 1a21 subs r1, r4, r0 - 800f0ba: 4628 mov r0, r5 - 800f0bc: f000 fb90 bl 800f7e0 <_sbrk_r> - 800f0c0: 3001 adds r0, #1 - 800f0c2: d1f2 bne.n 800f0aa - 800f0c4: e7ef b.n 800f0a6 - 800f0c6: bf00 nop - 800f0c8: 2000108c .word 0x2000108c +0800f0b0 : + 800f0b0: b570 push {r4, r5, r6, lr} + 800f0b2: 4e0f ldr r6, [pc, #60] @ (800f0f0 ) + 800f0b4: 460c mov r4, r1 + 800f0b6: 6831 ldr r1, [r6, #0] + 800f0b8: 4605 mov r5, r0 + 800f0ba: b911 cbnz r1, 800f0c2 + 800f0bc: f000 fba4 bl 800f808 <_sbrk_r> + 800f0c0: 6030 str r0, [r6, #0] + 800f0c2: 4621 mov r1, r4 + 800f0c4: 4628 mov r0, r5 + 800f0c6: f000 fb9f bl 800f808 <_sbrk_r> + 800f0ca: 1c43 adds r3, r0, #1 + 800f0cc: d103 bne.n 800f0d6 + 800f0ce: f04f 34ff mov.w r4, #4294967295 @ 0xffffffff + 800f0d2: 4620 mov r0, r4 + 800f0d4: bd70 pop {r4, r5, r6, pc} + 800f0d6: 1cc4 adds r4, r0, #3 + 800f0d8: f024 0403 bic.w r4, r4, #3 + 800f0dc: 42a0 cmp r0, r4 + 800f0de: d0f8 beq.n 800f0d2 + 800f0e0: 1a21 subs r1, r4, r0 + 800f0e2: 4628 mov r0, r5 + 800f0e4: f000 fb90 bl 800f808 <_sbrk_r> + 800f0e8: 3001 adds r0, #1 + 800f0ea: d1f2 bne.n 800f0d2 + 800f0ec: e7ef b.n 800f0ce + 800f0ee: bf00 nop + 800f0f0: 200010c4 .word 0x200010c4 -0800f0cc <_malloc_r>: - 800f0cc: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 800f0d0: 1ccd adds r5, r1, #3 - 800f0d2: f025 0503 bic.w r5, r5, #3 - 800f0d6: 3508 adds r5, #8 - 800f0d8: 2d0c cmp r5, #12 - 800f0da: bf38 it cc - 800f0dc: 250c movcc r5, #12 - 800f0de: 2d00 cmp r5, #0 - 800f0e0: 4606 mov r6, r0 - 800f0e2: db01 blt.n 800f0e8 <_malloc_r+0x1c> - 800f0e4: 42a9 cmp r1, r5 - 800f0e6: d904 bls.n 800f0f2 <_malloc_r+0x26> - 800f0e8: 230c movs r3, #12 - 800f0ea: 6033 str r3, [r6, #0] - 800f0ec: 2000 movs r0, #0 - 800f0ee: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 800f0f2: f8df 80d4 ldr.w r8, [pc, #212] @ 800f1c8 <_malloc_r+0xfc> - 800f0f6: f000 f869 bl 800f1cc <__malloc_lock> - 800f0fa: f8d8 3000 ldr.w r3, [r8] - 800f0fe: 461c mov r4, r3 - 800f100: bb44 cbnz r4, 800f154 <_malloc_r+0x88> - 800f102: 4629 mov r1, r5 - 800f104: 4630 mov r0, r6 - 800f106: f7ff ffbf bl 800f088 - 800f10a: 1c43 adds r3, r0, #1 - 800f10c: 4604 mov r4, r0 - 800f10e: d158 bne.n 800f1c2 <_malloc_r+0xf6> - 800f110: f8d8 4000 ldr.w r4, [r8] - 800f114: 4627 mov r7, r4 - 800f116: 2f00 cmp r7, #0 - 800f118: d143 bne.n 800f1a2 <_malloc_r+0xd6> - 800f11a: 2c00 cmp r4, #0 - 800f11c: d04b beq.n 800f1b6 <_malloc_r+0xea> - 800f11e: 6823 ldr r3, [r4, #0] - 800f120: 4639 mov r1, r7 - 800f122: 4630 mov r0, r6 - 800f124: eb04 0903 add.w r9, r4, r3 - 800f128: f000 fb5a bl 800f7e0 <_sbrk_r> - 800f12c: 4581 cmp r9, r0 - 800f12e: d142 bne.n 800f1b6 <_malloc_r+0xea> - 800f130: 6821 ldr r1, [r4, #0] - 800f132: 1a6d subs r5, r5, r1 - 800f134: 4629 mov r1, r5 - 800f136: 4630 mov r0, r6 - 800f138: f7ff ffa6 bl 800f088 - 800f13c: 3001 adds r0, #1 - 800f13e: d03a beq.n 800f1b6 <_malloc_r+0xea> - 800f140: 6823 ldr r3, [r4, #0] - 800f142: 442b add r3, r5 - 800f144: 6023 str r3, [r4, #0] - 800f146: f8d8 3000 ldr.w r3, [r8] - 800f14a: 685a ldr r2, [r3, #4] - 800f14c: bb62 cbnz r2, 800f1a8 <_malloc_r+0xdc> - 800f14e: f8c8 7000 str.w r7, [r8] - 800f152: e00f b.n 800f174 <_malloc_r+0xa8> - 800f154: 6822 ldr r2, [r4, #0] - 800f156: 1b52 subs r2, r2, r5 - 800f158: d420 bmi.n 800f19c <_malloc_r+0xd0> - 800f15a: 2a0b cmp r2, #11 - 800f15c: d917 bls.n 800f18e <_malloc_r+0xc2> - 800f15e: 1961 adds r1, r4, r5 - 800f160: 42a3 cmp r3, r4 - 800f162: 6025 str r5, [r4, #0] - 800f164: bf18 it ne - 800f166: 6059 strne r1, [r3, #4] - 800f168: 6863 ldr r3, [r4, #4] - 800f16a: bf08 it eq - 800f16c: f8c8 1000 streq.w r1, [r8] - 800f170: 5162 str r2, [r4, r5] - 800f172: 604b str r3, [r1, #4] - 800f174: 4630 mov r0, r6 - 800f176: f000 f82f bl 800f1d8 <__malloc_unlock> - 800f17a: f104 000b add.w r0, r4, #11 - 800f17e: 1d23 adds r3, r4, #4 - 800f180: f020 0007 bic.w r0, r0, #7 - 800f184: 1ac2 subs r2, r0, r3 - 800f186: bf1c itt ne - 800f188: 1a1b subne r3, r3, r0 - 800f18a: 50a3 strne r3, [r4, r2] - 800f18c: e7af b.n 800f0ee <_malloc_r+0x22> - 800f18e: 6862 ldr r2, [r4, #4] - 800f190: 42a3 cmp r3, r4 - 800f192: bf0c ite eq - 800f194: f8c8 2000 streq.w r2, [r8] - 800f198: 605a strne r2, [r3, #4] - 800f19a: e7eb b.n 800f174 <_malloc_r+0xa8> - 800f19c: 4623 mov r3, r4 - 800f19e: 6864 ldr r4, [r4, #4] - 800f1a0: e7ae b.n 800f100 <_malloc_r+0x34> - 800f1a2: 463c mov r4, r7 - 800f1a4: 687f ldr r7, [r7, #4] - 800f1a6: e7b6 b.n 800f116 <_malloc_r+0x4a> - 800f1a8: 461a mov r2, r3 - 800f1aa: 685b ldr r3, [r3, #4] - 800f1ac: 42a3 cmp r3, r4 - 800f1ae: d1fb bne.n 800f1a8 <_malloc_r+0xdc> - 800f1b0: 2300 movs r3, #0 - 800f1b2: 6053 str r3, [r2, #4] - 800f1b4: e7de b.n 800f174 <_malloc_r+0xa8> - 800f1b6: 230c movs r3, #12 - 800f1b8: 6033 str r3, [r6, #0] - 800f1ba: 4630 mov r0, r6 - 800f1bc: f000 f80c bl 800f1d8 <__malloc_unlock> - 800f1c0: e794 b.n 800f0ec <_malloc_r+0x20> - 800f1c2: 6005 str r5, [r0, #0] - 800f1c4: e7d6 b.n 800f174 <_malloc_r+0xa8> - 800f1c6: bf00 nop - 800f1c8: 20001090 .word 0x20001090 +0800f0f4 <_malloc_r>: + 800f0f4: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 800f0f8: 1ccd adds r5, r1, #3 + 800f0fa: f025 0503 bic.w r5, r5, #3 + 800f0fe: 3508 adds r5, #8 + 800f100: 2d0c cmp r5, #12 + 800f102: bf38 it cc + 800f104: 250c movcc r5, #12 + 800f106: 2d00 cmp r5, #0 + 800f108: 4606 mov r6, r0 + 800f10a: db01 blt.n 800f110 <_malloc_r+0x1c> + 800f10c: 42a9 cmp r1, r5 + 800f10e: d904 bls.n 800f11a <_malloc_r+0x26> + 800f110: 230c movs r3, #12 + 800f112: 6033 str r3, [r6, #0] + 800f114: 2000 movs r0, #0 + 800f116: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 800f11a: f8df 80d4 ldr.w r8, [pc, #212] @ 800f1f0 <_malloc_r+0xfc> + 800f11e: f000 f869 bl 800f1f4 <__malloc_lock> + 800f122: f8d8 3000 ldr.w r3, [r8] + 800f126: 461c mov r4, r3 + 800f128: bb44 cbnz r4, 800f17c <_malloc_r+0x88> + 800f12a: 4629 mov r1, r5 + 800f12c: 4630 mov r0, r6 + 800f12e: f7ff ffbf bl 800f0b0 + 800f132: 1c43 adds r3, r0, #1 + 800f134: 4604 mov r4, r0 + 800f136: d158 bne.n 800f1ea <_malloc_r+0xf6> + 800f138: f8d8 4000 ldr.w r4, [r8] + 800f13c: 4627 mov r7, r4 + 800f13e: 2f00 cmp r7, #0 + 800f140: d143 bne.n 800f1ca <_malloc_r+0xd6> + 800f142: 2c00 cmp r4, #0 + 800f144: d04b beq.n 800f1de <_malloc_r+0xea> + 800f146: 6823 ldr r3, [r4, #0] + 800f148: 4639 mov r1, r7 + 800f14a: 4630 mov r0, r6 + 800f14c: eb04 0903 add.w r9, r4, r3 + 800f150: f000 fb5a bl 800f808 <_sbrk_r> + 800f154: 4581 cmp r9, r0 + 800f156: d142 bne.n 800f1de <_malloc_r+0xea> + 800f158: 6821 ldr r1, [r4, #0] + 800f15a: 1a6d subs r5, r5, r1 + 800f15c: 4629 mov r1, r5 + 800f15e: 4630 mov r0, r6 + 800f160: f7ff ffa6 bl 800f0b0 + 800f164: 3001 adds r0, #1 + 800f166: d03a beq.n 800f1de <_malloc_r+0xea> + 800f168: 6823 ldr r3, [r4, #0] + 800f16a: 442b add r3, r5 + 800f16c: 6023 str r3, [r4, #0] + 800f16e: f8d8 3000 ldr.w r3, [r8] + 800f172: 685a ldr r2, [r3, #4] + 800f174: bb62 cbnz r2, 800f1d0 <_malloc_r+0xdc> + 800f176: f8c8 7000 str.w r7, [r8] + 800f17a: e00f b.n 800f19c <_malloc_r+0xa8> + 800f17c: 6822 ldr r2, [r4, #0] + 800f17e: 1b52 subs r2, r2, r5 + 800f180: d420 bmi.n 800f1c4 <_malloc_r+0xd0> + 800f182: 2a0b cmp r2, #11 + 800f184: d917 bls.n 800f1b6 <_malloc_r+0xc2> + 800f186: 1961 adds r1, r4, r5 + 800f188: 42a3 cmp r3, r4 + 800f18a: 6025 str r5, [r4, #0] + 800f18c: bf18 it ne + 800f18e: 6059 strne r1, [r3, #4] + 800f190: 6863 ldr r3, [r4, #4] + 800f192: bf08 it eq + 800f194: f8c8 1000 streq.w r1, [r8] + 800f198: 5162 str r2, [r4, r5] + 800f19a: 604b str r3, [r1, #4] + 800f19c: 4630 mov r0, r6 + 800f19e: f000 f82f bl 800f200 <__malloc_unlock> + 800f1a2: f104 000b add.w r0, r4, #11 + 800f1a6: 1d23 adds r3, r4, #4 + 800f1a8: f020 0007 bic.w r0, r0, #7 + 800f1ac: 1ac2 subs r2, r0, r3 + 800f1ae: bf1c itt ne + 800f1b0: 1a1b subne r3, r3, r0 + 800f1b2: 50a3 strne r3, [r4, r2] + 800f1b4: e7af b.n 800f116 <_malloc_r+0x22> + 800f1b6: 6862 ldr r2, [r4, #4] + 800f1b8: 42a3 cmp r3, r4 + 800f1ba: bf0c ite eq + 800f1bc: f8c8 2000 streq.w r2, [r8] + 800f1c0: 605a strne r2, [r3, #4] + 800f1c2: e7eb b.n 800f19c <_malloc_r+0xa8> + 800f1c4: 4623 mov r3, r4 + 800f1c6: 6864 ldr r4, [r4, #4] + 800f1c8: e7ae b.n 800f128 <_malloc_r+0x34> + 800f1ca: 463c mov r4, r7 + 800f1cc: 687f ldr r7, [r7, #4] + 800f1ce: e7b6 b.n 800f13e <_malloc_r+0x4a> + 800f1d0: 461a mov r2, r3 + 800f1d2: 685b ldr r3, [r3, #4] + 800f1d4: 42a3 cmp r3, r4 + 800f1d6: d1fb bne.n 800f1d0 <_malloc_r+0xdc> + 800f1d8: 2300 movs r3, #0 + 800f1da: 6053 str r3, [r2, #4] + 800f1dc: e7de b.n 800f19c <_malloc_r+0xa8> + 800f1de: 230c movs r3, #12 + 800f1e0: 6033 str r3, [r6, #0] + 800f1e2: 4630 mov r0, r6 + 800f1e4: f000 f80c bl 800f200 <__malloc_unlock> + 800f1e8: e794 b.n 800f114 <_malloc_r+0x20> + 800f1ea: 6005 str r5, [r0, #0] + 800f1ec: e7d6 b.n 800f19c <_malloc_r+0xa8> + 800f1ee: bf00 nop + 800f1f0: 200010c8 .word 0x200010c8 -0800f1cc <__malloc_lock>: - 800f1cc: 4801 ldr r0, [pc, #4] @ (800f1d4 <__malloc_lock+0x8>) - 800f1ce: f7ff bf01 b.w 800efd4 <__retarget_lock_acquire_recursive> - 800f1d2: bf00 nop - 800f1d4: 20001088 .word 0x20001088 +0800f1f4 <__malloc_lock>: + 800f1f4: 4801 ldr r0, [pc, #4] @ (800f1fc <__malloc_lock+0x8>) + 800f1f6: f7ff bf01 b.w 800effc <__retarget_lock_acquire_recursive> + 800f1fa: bf00 nop + 800f1fc: 200010c0 .word 0x200010c0 -0800f1d8 <__malloc_unlock>: - 800f1d8: 4801 ldr r0, [pc, #4] @ (800f1e0 <__malloc_unlock+0x8>) - 800f1da: f7ff befc b.w 800efd6 <__retarget_lock_release_recursive> - 800f1de: bf00 nop - 800f1e0: 20001088 .word 0x20001088 +0800f200 <__malloc_unlock>: + 800f200: 4801 ldr r0, [pc, #4] @ (800f208 <__malloc_unlock+0x8>) + 800f202: f7ff befc b.w 800effe <__retarget_lock_release_recursive> + 800f206: bf00 nop + 800f208: 200010c0 .word 0x200010c0 -0800f1e4 <__ssputs_r>: - 800f1e4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800f1e8: 688e ldr r6, [r1, #8] - 800f1ea: 461f mov r7, r3 - 800f1ec: 42be cmp r6, r7 - 800f1ee: 680b ldr r3, [r1, #0] - 800f1f0: 4682 mov sl, r0 - 800f1f2: 460c mov r4, r1 - 800f1f4: 4690 mov r8, r2 - 800f1f6: d82d bhi.n 800f254 <__ssputs_r+0x70> - 800f1f8: f9b1 200c ldrsh.w r2, [r1, #12] - 800f1fc: f412 6f90 tst.w r2, #1152 @ 0x480 - 800f200: d026 beq.n 800f250 <__ssputs_r+0x6c> - 800f202: 6965 ldr r5, [r4, #20] - 800f204: 6909 ldr r1, [r1, #16] - 800f206: eb05 0545 add.w r5, r5, r5, lsl #1 - 800f20a: eba3 0901 sub.w r9, r3, r1 - 800f20e: eb05 75d5 add.w r5, r5, r5, lsr #31 - 800f212: 1c7b adds r3, r7, #1 - 800f214: 444b add r3, r9 - 800f216: 106d asrs r5, r5, #1 - 800f218: 429d cmp r5, r3 - 800f21a: bf38 it cc - 800f21c: 461d movcc r5, r3 - 800f21e: 0553 lsls r3, r2, #21 - 800f220: d527 bpl.n 800f272 <__ssputs_r+0x8e> - 800f222: 4629 mov r1, r5 - 800f224: f7ff ff52 bl 800f0cc <_malloc_r> - 800f228: 4606 mov r6, r0 - 800f22a: b360 cbz r0, 800f286 <__ssputs_r+0xa2> - 800f22c: 6921 ldr r1, [r4, #16] - 800f22e: 464a mov r2, r9 - 800f230: f7ff fed2 bl 800efd8 - 800f234: 89a3 ldrh r3, [r4, #12] - 800f236: f423 6390 bic.w r3, r3, #1152 @ 0x480 - 800f23a: f043 0380 orr.w r3, r3, #128 @ 0x80 - 800f23e: 81a3 strh r3, [r4, #12] - 800f240: 6126 str r6, [r4, #16] - 800f242: 6165 str r5, [r4, #20] - 800f244: 444e add r6, r9 - 800f246: eba5 0509 sub.w r5, r5, r9 - 800f24a: 6026 str r6, [r4, #0] - 800f24c: 60a5 str r5, [r4, #8] - 800f24e: 463e mov r6, r7 - 800f250: 42be cmp r6, r7 - 800f252: d900 bls.n 800f256 <__ssputs_r+0x72> - 800f254: 463e mov r6, r7 - 800f256: 6820 ldr r0, [r4, #0] - 800f258: 4632 mov r2, r6 - 800f25a: 4641 mov r1, r8 - 800f25c: f000 faa6 bl 800f7ac - 800f260: 68a3 ldr r3, [r4, #8] - 800f262: 1b9b subs r3, r3, r6 - 800f264: 60a3 str r3, [r4, #8] - 800f266: 6823 ldr r3, [r4, #0] - 800f268: 4433 add r3, r6 - 800f26a: 6023 str r3, [r4, #0] - 800f26c: 2000 movs r0, #0 - 800f26e: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800f272: 462a mov r2, r5 - 800f274: f000 fac4 bl 800f800 <_realloc_r> - 800f278: 4606 mov r6, r0 - 800f27a: 2800 cmp r0, #0 - 800f27c: d1e0 bne.n 800f240 <__ssputs_r+0x5c> - 800f27e: 6921 ldr r1, [r4, #16] - 800f280: 4650 mov r0, sl - 800f282: f7ff feb7 bl 800eff4 <_free_r> - 800f286: 230c movs r3, #12 - 800f288: f8ca 3000 str.w r3, [sl] - 800f28c: 89a3 ldrh r3, [r4, #12] - 800f28e: f043 0340 orr.w r3, r3, #64 @ 0x40 - 800f292: 81a3 strh r3, [r4, #12] - 800f294: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800f298: e7e9 b.n 800f26e <__ssputs_r+0x8a> +0800f20c <__ssputs_r>: + 800f20c: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800f210: 688e ldr r6, [r1, #8] + 800f212: 461f mov r7, r3 + 800f214: 42be cmp r6, r7 + 800f216: 680b ldr r3, [r1, #0] + 800f218: 4682 mov sl, r0 + 800f21a: 460c mov r4, r1 + 800f21c: 4690 mov r8, r2 + 800f21e: d82d bhi.n 800f27c <__ssputs_r+0x70> + 800f220: f9b1 200c ldrsh.w r2, [r1, #12] + 800f224: f412 6f90 tst.w r2, #1152 @ 0x480 + 800f228: d026 beq.n 800f278 <__ssputs_r+0x6c> + 800f22a: 6965 ldr r5, [r4, #20] + 800f22c: 6909 ldr r1, [r1, #16] + 800f22e: eb05 0545 add.w r5, r5, r5, lsl #1 + 800f232: eba3 0901 sub.w r9, r3, r1 + 800f236: eb05 75d5 add.w r5, r5, r5, lsr #31 + 800f23a: 1c7b adds r3, r7, #1 + 800f23c: 444b add r3, r9 + 800f23e: 106d asrs r5, r5, #1 + 800f240: 429d cmp r5, r3 + 800f242: bf38 it cc + 800f244: 461d movcc r5, r3 + 800f246: 0553 lsls r3, r2, #21 + 800f248: d527 bpl.n 800f29a <__ssputs_r+0x8e> + 800f24a: 4629 mov r1, r5 + 800f24c: f7ff ff52 bl 800f0f4 <_malloc_r> + 800f250: 4606 mov r6, r0 + 800f252: b360 cbz r0, 800f2ae <__ssputs_r+0xa2> + 800f254: 6921 ldr r1, [r4, #16] + 800f256: 464a mov r2, r9 + 800f258: f7ff fed2 bl 800f000 + 800f25c: 89a3 ldrh r3, [r4, #12] + 800f25e: f423 6390 bic.w r3, r3, #1152 @ 0x480 + 800f262: f043 0380 orr.w r3, r3, #128 @ 0x80 + 800f266: 81a3 strh r3, [r4, #12] + 800f268: 6126 str r6, [r4, #16] + 800f26a: 6165 str r5, [r4, #20] + 800f26c: 444e add r6, r9 + 800f26e: eba5 0509 sub.w r5, r5, r9 + 800f272: 6026 str r6, [r4, #0] + 800f274: 60a5 str r5, [r4, #8] + 800f276: 463e mov r6, r7 + 800f278: 42be cmp r6, r7 + 800f27a: d900 bls.n 800f27e <__ssputs_r+0x72> + 800f27c: 463e mov r6, r7 + 800f27e: 6820 ldr r0, [r4, #0] + 800f280: 4632 mov r2, r6 + 800f282: 4641 mov r1, r8 + 800f284: f000 faa6 bl 800f7d4 + 800f288: 68a3 ldr r3, [r4, #8] + 800f28a: 1b9b subs r3, r3, r6 + 800f28c: 60a3 str r3, [r4, #8] + 800f28e: 6823 ldr r3, [r4, #0] + 800f290: 4433 add r3, r6 + 800f292: 6023 str r3, [r4, #0] + 800f294: 2000 movs r0, #0 + 800f296: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800f29a: 462a mov r2, r5 + 800f29c: f000 fac4 bl 800f828 <_realloc_r> + 800f2a0: 4606 mov r6, r0 + 800f2a2: 2800 cmp r0, #0 + 800f2a4: d1e0 bne.n 800f268 <__ssputs_r+0x5c> + 800f2a6: 6921 ldr r1, [r4, #16] + 800f2a8: 4650 mov r0, sl + 800f2aa: f7ff feb7 bl 800f01c <_free_r> + 800f2ae: 230c movs r3, #12 + 800f2b0: f8ca 3000 str.w r3, [sl] + 800f2b4: 89a3 ldrh r3, [r4, #12] + 800f2b6: f043 0340 orr.w r3, r3, #64 @ 0x40 + 800f2ba: 81a3 strh r3, [r4, #12] + 800f2bc: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800f2c0: e7e9 b.n 800f296 <__ssputs_r+0x8a> ... -0800f29c <_svfiprintf_r>: - 800f29c: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 800f2a0: 4698 mov r8, r3 - 800f2a2: 898b ldrh r3, [r1, #12] - 800f2a4: 061b lsls r3, r3, #24 - 800f2a6: b09d sub sp, #116 @ 0x74 - 800f2a8: 4607 mov r7, r0 - 800f2aa: 460d mov r5, r1 - 800f2ac: 4614 mov r4, r2 - 800f2ae: d510 bpl.n 800f2d2 <_svfiprintf_r+0x36> - 800f2b0: 690b ldr r3, [r1, #16] - 800f2b2: b973 cbnz r3, 800f2d2 <_svfiprintf_r+0x36> - 800f2b4: 2140 movs r1, #64 @ 0x40 - 800f2b6: f7ff ff09 bl 800f0cc <_malloc_r> - 800f2ba: 6028 str r0, [r5, #0] - 800f2bc: 6128 str r0, [r5, #16] - 800f2be: b930 cbnz r0, 800f2ce <_svfiprintf_r+0x32> - 800f2c0: 230c movs r3, #12 - 800f2c2: 603b str r3, [r7, #0] - 800f2c4: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800f2c8: b01d add sp, #116 @ 0x74 - 800f2ca: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 800f2ce: 2340 movs r3, #64 @ 0x40 - 800f2d0: 616b str r3, [r5, #20] - 800f2d2: 2300 movs r3, #0 - 800f2d4: 9309 str r3, [sp, #36] @ 0x24 - 800f2d6: 2320 movs r3, #32 - 800f2d8: f88d 3029 strb.w r3, [sp, #41] @ 0x29 - 800f2dc: f8cd 800c str.w r8, [sp, #12] - 800f2e0: 2330 movs r3, #48 @ 0x30 - 800f2e2: f8df 819c ldr.w r8, [pc, #412] @ 800f480 <_svfiprintf_r+0x1e4> - 800f2e6: f88d 302a strb.w r3, [sp, #42] @ 0x2a - 800f2ea: f04f 0901 mov.w r9, #1 - 800f2ee: 4623 mov r3, r4 - 800f2f0: 469a mov sl, r3 - 800f2f2: f813 2b01 ldrb.w r2, [r3], #1 - 800f2f6: b10a cbz r2, 800f2fc <_svfiprintf_r+0x60> - 800f2f8: 2a25 cmp r2, #37 @ 0x25 - 800f2fa: d1f9 bne.n 800f2f0 <_svfiprintf_r+0x54> - 800f2fc: ebba 0b04 subs.w fp, sl, r4 - 800f300: d00b beq.n 800f31a <_svfiprintf_r+0x7e> - 800f302: 465b mov r3, fp - 800f304: 4622 mov r2, r4 - 800f306: 4629 mov r1, r5 - 800f308: 4638 mov r0, r7 - 800f30a: f7ff ff6b bl 800f1e4 <__ssputs_r> - 800f30e: 3001 adds r0, #1 - 800f310: f000 80a7 beq.w 800f462 <_svfiprintf_r+0x1c6> - 800f314: 9a09 ldr r2, [sp, #36] @ 0x24 - 800f316: 445a add r2, fp - 800f318: 9209 str r2, [sp, #36] @ 0x24 - 800f31a: f89a 3000 ldrb.w r3, [sl] - 800f31e: 2b00 cmp r3, #0 - 800f320: f000 809f beq.w 800f462 <_svfiprintf_r+0x1c6> - 800f324: 2300 movs r3, #0 - 800f326: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff - 800f32a: e9cd 2305 strd r2, r3, [sp, #20] - 800f32e: f10a 0a01 add.w sl, sl, #1 - 800f332: 9304 str r3, [sp, #16] - 800f334: 9307 str r3, [sp, #28] - 800f336: f88d 3053 strb.w r3, [sp, #83] @ 0x53 - 800f33a: 931a str r3, [sp, #104] @ 0x68 - 800f33c: 4654 mov r4, sl - 800f33e: 2205 movs r2, #5 - 800f340: f814 1b01 ldrb.w r1, [r4], #1 - 800f344: 484e ldr r0, [pc, #312] @ (800f480 <_svfiprintf_r+0x1e4>) - 800f346: f7f0 ff33 bl 80001b0 - 800f34a: 9a04 ldr r2, [sp, #16] - 800f34c: b9d8 cbnz r0, 800f386 <_svfiprintf_r+0xea> - 800f34e: 06d0 lsls r0, r2, #27 - 800f350: bf44 itt mi - 800f352: 2320 movmi r3, #32 - 800f354: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800f358: 0711 lsls r1, r2, #28 - 800f35a: bf44 itt mi - 800f35c: 232b movmi r3, #43 @ 0x2b - 800f35e: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 - 800f362: f89a 3000 ldrb.w r3, [sl] - 800f366: 2b2a cmp r3, #42 @ 0x2a - 800f368: d015 beq.n 800f396 <_svfiprintf_r+0xfa> - 800f36a: 9a07 ldr r2, [sp, #28] - 800f36c: 4654 mov r4, sl - 800f36e: 2000 movs r0, #0 - 800f370: f04f 0c0a mov.w ip, #10 - 800f374: 4621 mov r1, r4 - 800f376: f811 3b01 ldrb.w r3, [r1], #1 - 800f37a: 3b30 subs r3, #48 @ 0x30 - 800f37c: 2b09 cmp r3, #9 - 800f37e: d94b bls.n 800f418 <_svfiprintf_r+0x17c> - 800f380: b1b0 cbz r0, 800f3b0 <_svfiprintf_r+0x114> - 800f382: 9207 str r2, [sp, #28] - 800f384: e014 b.n 800f3b0 <_svfiprintf_r+0x114> - 800f386: eba0 0308 sub.w r3, r0, r8 - 800f38a: fa09 f303 lsl.w r3, r9, r3 - 800f38e: 4313 orrs r3, r2 - 800f390: 9304 str r3, [sp, #16] - 800f392: 46a2 mov sl, r4 - 800f394: e7d2 b.n 800f33c <_svfiprintf_r+0xa0> - 800f396: 9b03 ldr r3, [sp, #12] - 800f398: 1d19 adds r1, r3, #4 - 800f39a: 681b ldr r3, [r3, #0] - 800f39c: 9103 str r1, [sp, #12] - 800f39e: 2b00 cmp r3, #0 - 800f3a0: bfbb ittet lt - 800f3a2: 425b neglt r3, r3 - 800f3a4: f042 0202 orrlt.w r2, r2, #2 - 800f3a8: 9307 strge r3, [sp, #28] - 800f3aa: 9307 strlt r3, [sp, #28] - 800f3ac: bfb8 it lt - 800f3ae: 9204 strlt r2, [sp, #16] - 800f3b0: 7823 ldrb r3, [r4, #0] - 800f3b2: 2b2e cmp r3, #46 @ 0x2e - 800f3b4: d10a bne.n 800f3cc <_svfiprintf_r+0x130> - 800f3b6: 7863 ldrb r3, [r4, #1] - 800f3b8: 2b2a cmp r3, #42 @ 0x2a - 800f3ba: d132 bne.n 800f422 <_svfiprintf_r+0x186> - 800f3bc: 9b03 ldr r3, [sp, #12] - 800f3be: 1d1a adds r2, r3, #4 - 800f3c0: 681b ldr r3, [r3, #0] - 800f3c2: 9203 str r2, [sp, #12] - 800f3c4: ea43 73e3 orr.w r3, r3, r3, asr #31 - 800f3c8: 3402 adds r4, #2 - 800f3ca: 9305 str r3, [sp, #20] - 800f3cc: f8df a0b4 ldr.w sl, [pc, #180] @ 800f484 <_svfiprintf_r+0x1e8> - 800f3d0: 7821 ldrb r1, [r4, #0] - 800f3d2: 2203 movs r2, #3 - 800f3d4: 4650 mov r0, sl - 800f3d6: f7f0 feeb bl 80001b0 - 800f3da: b138 cbz r0, 800f3ec <_svfiprintf_r+0x150> - 800f3dc: 9b04 ldr r3, [sp, #16] - 800f3de: eba0 000a sub.w r0, r0, sl - 800f3e2: 2240 movs r2, #64 @ 0x40 - 800f3e4: 4082 lsls r2, r0 - 800f3e6: 4313 orrs r3, r2 - 800f3e8: 3401 adds r4, #1 - 800f3ea: 9304 str r3, [sp, #16] - 800f3ec: f814 1b01 ldrb.w r1, [r4], #1 - 800f3f0: 4825 ldr r0, [pc, #148] @ (800f488 <_svfiprintf_r+0x1ec>) - 800f3f2: f88d 1028 strb.w r1, [sp, #40] @ 0x28 - 800f3f6: 2206 movs r2, #6 - 800f3f8: f7f0 feda bl 80001b0 - 800f3fc: 2800 cmp r0, #0 - 800f3fe: d036 beq.n 800f46e <_svfiprintf_r+0x1d2> - 800f400: 4b22 ldr r3, [pc, #136] @ (800f48c <_svfiprintf_r+0x1f0>) - 800f402: bb1b cbnz r3, 800f44c <_svfiprintf_r+0x1b0> - 800f404: 9b03 ldr r3, [sp, #12] - 800f406: 3307 adds r3, #7 - 800f408: f023 0307 bic.w r3, r3, #7 - 800f40c: 3308 adds r3, #8 - 800f40e: 9303 str r3, [sp, #12] - 800f410: 9b09 ldr r3, [sp, #36] @ 0x24 - 800f412: 4433 add r3, r6 - 800f414: 9309 str r3, [sp, #36] @ 0x24 - 800f416: e76a b.n 800f2ee <_svfiprintf_r+0x52> - 800f418: fb0c 3202 mla r2, ip, r2, r3 - 800f41c: 460c mov r4, r1 - 800f41e: 2001 movs r0, #1 - 800f420: e7a8 b.n 800f374 <_svfiprintf_r+0xd8> - 800f422: 2300 movs r3, #0 - 800f424: 3401 adds r4, #1 - 800f426: 9305 str r3, [sp, #20] - 800f428: 4619 mov r1, r3 - 800f42a: f04f 0c0a mov.w ip, #10 - 800f42e: 4620 mov r0, r4 - 800f430: f810 2b01 ldrb.w r2, [r0], #1 - 800f434: 3a30 subs r2, #48 @ 0x30 - 800f436: 2a09 cmp r2, #9 - 800f438: d903 bls.n 800f442 <_svfiprintf_r+0x1a6> - 800f43a: 2b00 cmp r3, #0 - 800f43c: d0c6 beq.n 800f3cc <_svfiprintf_r+0x130> - 800f43e: 9105 str r1, [sp, #20] - 800f440: e7c4 b.n 800f3cc <_svfiprintf_r+0x130> - 800f442: fb0c 2101 mla r1, ip, r1, r2 - 800f446: 4604 mov r4, r0 - 800f448: 2301 movs r3, #1 - 800f44a: e7f0 b.n 800f42e <_svfiprintf_r+0x192> - 800f44c: ab03 add r3, sp, #12 - 800f44e: 9300 str r3, [sp, #0] - 800f450: 462a mov r2, r5 - 800f452: 4b0f ldr r3, [pc, #60] @ (800f490 <_svfiprintf_r+0x1f4>) - 800f454: a904 add r1, sp, #16 - 800f456: 4638 mov r0, r7 - 800f458: f3af 8000 nop.w - 800f45c: 1c42 adds r2, r0, #1 - 800f45e: 4606 mov r6, r0 - 800f460: d1d6 bne.n 800f410 <_svfiprintf_r+0x174> - 800f462: 89ab ldrh r3, [r5, #12] - 800f464: 065b lsls r3, r3, #25 - 800f466: f53f af2d bmi.w 800f2c4 <_svfiprintf_r+0x28> - 800f46a: 9809 ldr r0, [sp, #36] @ 0x24 - 800f46c: e72c b.n 800f2c8 <_svfiprintf_r+0x2c> - 800f46e: ab03 add r3, sp, #12 - 800f470: 9300 str r3, [sp, #0] - 800f472: 462a mov r2, r5 - 800f474: 4b06 ldr r3, [pc, #24] @ (800f490 <_svfiprintf_r+0x1f4>) - 800f476: a904 add r1, sp, #16 - 800f478: 4638 mov r0, r7 - 800f47a: f000 f879 bl 800f570 <_printf_i> - 800f47e: e7ed b.n 800f45c <_svfiprintf_r+0x1c0> - 800f480: 08010619 .word 0x08010619 - 800f484: 0801061f .word 0x0801061f - 800f488: 08010623 .word 0x08010623 - 800f48c: 00000000 .word 0x00000000 - 800f490: 0800f1e5 .word 0x0800f1e5 +0800f2c4 <_svfiprintf_r>: + 800f2c4: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 800f2c8: 4698 mov r8, r3 + 800f2ca: 898b ldrh r3, [r1, #12] + 800f2cc: 061b lsls r3, r3, #24 + 800f2ce: b09d sub sp, #116 @ 0x74 + 800f2d0: 4607 mov r7, r0 + 800f2d2: 460d mov r5, r1 + 800f2d4: 4614 mov r4, r2 + 800f2d6: d510 bpl.n 800f2fa <_svfiprintf_r+0x36> + 800f2d8: 690b ldr r3, [r1, #16] + 800f2da: b973 cbnz r3, 800f2fa <_svfiprintf_r+0x36> + 800f2dc: 2140 movs r1, #64 @ 0x40 + 800f2de: f7ff ff09 bl 800f0f4 <_malloc_r> + 800f2e2: 6028 str r0, [r5, #0] + 800f2e4: 6128 str r0, [r5, #16] + 800f2e6: b930 cbnz r0, 800f2f6 <_svfiprintf_r+0x32> + 800f2e8: 230c movs r3, #12 + 800f2ea: 603b str r3, [r7, #0] + 800f2ec: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800f2f0: b01d add sp, #116 @ 0x74 + 800f2f2: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 800f2f6: 2340 movs r3, #64 @ 0x40 + 800f2f8: 616b str r3, [r5, #20] + 800f2fa: 2300 movs r3, #0 + 800f2fc: 9309 str r3, [sp, #36] @ 0x24 + 800f2fe: 2320 movs r3, #32 + 800f300: f88d 3029 strb.w r3, [sp, #41] @ 0x29 + 800f304: f8cd 800c str.w r8, [sp, #12] + 800f308: 2330 movs r3, #48 @ 0x30 + 800f30a: f8df 819c ldr.w r8, [pc, #412] @ 800f4a8 <_svfiprintf_r+0x1e4> + 800f30e: f88d 302a strb.w r3, [sp, #42] @ 0x2a + 800f312: f04f 0901 mov.w r9, #1 + 800f316: 4623 mov r3, r4 + 800f318: 469a mov sl, r3 + 800f31a: f813 2b01 ldrb.w r2, [r3], #1 + 800f31e: b10a cbz r2, 800f324 <_svfiprintf_r+0x60> + 800f320: 2a25 cmp r2, #37 @ 0x25 + 800f322: d1f9 bne.n 800f318 <_svfiprintf_r+0x54> + 800f324: ebba 0b04 subs.w fp, sl, r4 + 800f328: d00b beq.n 800f342 <_svfiprintf_r+0x7e> + 800f32a: 465b mov r3, fp + 800f32c: 4622 mov r2, r4 + 800f32e: 4629 mov r1, r5 + 800f330: 4638 mov r0, r7 + 800f332: f7ff ff6b bl 800f20c <__ssputs_r> + 800f336: 3001 adds r0, #1 + 800f338: f000 80a7 beq.w 800f48a <_svfiprintf_r+0x1c6> + 800f33c: 9a09 ldr r2, [sp, #36] @ 0x24 + 800f33e: 445a add r2, fp + 800f340: 9209 str r2, [sp, #36] @ 0x24 + 800f342: f89a 3000 ldrb.w r3, [sl] + 800f346: 2b00 cmp r3, #0 + 800f348: f000 809f beq.w 800f48a <_svfiprintf_r+0x1c6> + 800f34c: 2300 movs r3, #0 + 800f34e: f04f 32ff mov.w r2, #4294967295 @ 0xffffffff + 800f352: e9cd 2305 strd r2, r3, [sp, #20] + 800f356: f10a 0a01 add.w sl, sl, #1 + 800f35a: 9304 str r3, [sp, #16] + 800f35c: 9307 str r3, [sp, #28] + 800f35e: f88d 3053 strb.w r3, [sp, #83] @ 0x53 + 800f362: 931a str r3, [sp, #104] @ 0x68 + 800f364: 4654 mov r4, sl + 800f366: 2205 movs r2, #5 + 800f368: f814 1b01 ldrb.w r1, [r4], #1 + 800f36c: 484e ldr r0, [pc, #312] @ (800f4a8 <_svfiprintf_r+0x1e4>) + 800f36e: f7f0 ff1f bl 80001b0 + 800f372: 9a04 ldr r2, [sp, #16] + 800f374: b9d8 cbnz r0, 800f3ae <_svfiprintf_r+0xea> + 800f376: 06d0 lsls r0, r2, #27 + 800f378: bf44 itt mi + 800f37a: 2320 movmi r3, #32 + 800f37c: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 800f380: 0711 lsls r1, r2, #28 + 800f382: bf44 itt mi + 800f384: 232b movmi r3, #43 @ 0x2b + 800f386: f88d 3053 strbmi.w r3, [sp, #83] @ 0x53 + 800f38a: f89a 3000 ldrb.w r3, [sl] + 800f38e: 2b2a cmp r3, #42 @ 0x2a + 800f390: d015 beq.n 800f3be <_svfiprintf_r+0xfa> + 800f392: 9a07 ldr r2, [sp, #28] + 800f394: 4654 mov r4, sl + 800f396: 2000 movs r0, #0 + 800f398: f04f 0c0a mov.w ip, #10 + 800f39c: 4621 mov r1, r4 + 800f39e: f811 3b01 ldrb.w r3, [r1], #1 + 800f3a2: 3b30 subs r3, #48 @ 0x30 + 800f3a4: 2b09 cmp r3, #9 + 800f3a6: d94b bls.n 800f440 <_svfiprintf_r+0x17c> + 800f3a8: b1b0 cbz r0, 800f3d8 <_svfiprintf_r+0x114> + 800f3aa: 9207 str r2, [sp, #28] + 800f3ac: e014 b.n 800f3d8 <_svfiprintf_r+0x114> + 800f3ae: eba0 0308 sub.w r3, r0, r8 + 800f3b2: fa09 f303 lsl.w r3, r9, r3 + 800f3b6: 4313 orrs r3, r2 + 800f3b8: 9304 str r3, [sp, #16] + 800f3ba: 46a2 mov sl, r4 + 800f3bc: e7d2 b.n 800f364 <_svfiprintf_r+0xa0> + 800f3be: 9b03 ldr r3, [sp, #12] + 800f3c0: 1d19 adds r1, r3, #4 + 800f3c2: 681b ldr r3, [r3, #0] + 800f3c4: 9103 str r1, [sp, #12] + 800f3c6: 2b00 cmp r3, #0 + 800f3c8: bfbb ittet lt + 800f3ca: 425b neglt r3, r3 + 800f3cc: f042 0202 orrlt.w r2, r2, #2 + 800f3d0: 9307 strge r3, [sp, #28] + 800f3d2: 9307 strlt r3, [sp, #28] + 800f3d4: bfb8 it lt + 800f3d6: 9204 strlt r2, [sp, #16] + 800f3d8: 7823 ldrb r3, [r4, #0] + 800f3da: 2b2e cmp r3, #46 @ 0x2e + 800f3dc: d10a bne.n 800f3f4 <_svfiprintf_r+0x130> + 800f3de: 7863 ldrb r3, [r4, #1] + 800f3e0: 2b2a cmp r3, #42 @ 0x2a + 800f3e2: d132 bne.n 800f44a <_svfiprintf_r+0x186> + 800f3e4: 9b03 ldr r3, [sp, #12] + 800f3e6: 1d1a adds r2, r3, #4 + 800f3e8: 681b ldr r3, [r3, #0] + 800f3ea: 9203 str r2, [sp, #12] + 800f3ec: ea43 73e3 orr.w r3, r3, r3, asr #31 + 800f3f0: 3402 adds r4, #2 + 800f3f2: 9305 str r3, [sp, #20] + 800f3f4: f8df a0b4 ldr.w sl, [pc, #180] @ 800f4ac <_svfiprintf_r+0x1e8> + 800f3f8: 7821 ldrb r1, [r4, #0] + 800f3fa: 2203 movs r2, #3 + 800f3fc: 4650 mov r0, sl + 800f3fe: f7f0 fed7 bl 80001b0 + 800f402: b138 cbz r0, 800f414 <_svfiprintf_r+0x150> + 800f404: 9b04 ldr r3, [sp, #16] + 800f406: eba0 000a sub.w r0, r0, sl + 800f40a: 2240 movs r2, #64 @ 0x40 + 800f40c: 4082 lsls r2, r0 + 800f40e: 4313 orrs r3, r2 + 800f410: 3401 adds r4, #1 + 800f412: 9304 str r3, [sp, #16] + 800f414: f814 1b01 ldrb.w r1, [r4], #1 + 800f418: 4825 ldr r0, [pc, #148] @ (800f4b0 <_svfiprintf_r+0x1ec>) + 800f41a: f88d 1028 strb.w r1, [sp, #40] @ 0x28 + 800f41e: 2206 movs r2, #6 + 800f420: f7f0 fec6 bl 80001b0 + 800f424: 2800 cmp r0, #0 + 800f426: d036 beq.n 800f496 <_svfiprintf_r+0x1d2> + 800f428: 4b22 ldr r3, [pc, #136] @ (800f4b4 <_svfiprintf_r+0x1f0>) + 800f42a: bb1b cbnz r3, 800f474 <_svfiprintf_r+0x1b0> + 800f42c: 9b03 ldr r3, [sp, #12] + 800f42e: 3307 adds r3, #7 + 800f430: f023 0307 bic.w r3, r3, #7 + 800f434: 3308 adds r3, #8 + 800f436: 9303 str r3, [sp, #12] + 800f438: 9b09 ldr r3, [sp, #36] @ 0x24 + 800f43a: 4433 add r3, r6 + 800f43c: 9309 str r3, [sp, #36] @ 0x24 + 800f43e: e76a b.n 800f316 <_svfiprintf_r+0x52> + 800f440: fb0c 3202 mla r2, ip, r2, r3 + 800f444: 460c mov r4, r1 + 800f446: 2001 movs r0, #1 + 800f448: e7a8 b.n 800f39c <_svfiprintf_r+0xd8> + 800f44a: 2300 movs r3, #0 + 800f44c: 3401 adds r4, #1 + 800f44e: 9305 str r3, [sp, #20] + 800f450: 4619 mov r1, r3 + 800f452: f04f 0c0a mov.w ip, #10 + 800f456: 4620 mov r0, r4 + 800f458: f810 2b01 ldrb.w r2, [r0], #1 + 800f45c: 3a30 subs r2, #48 @ 0x30 + 800f45e: 2a09 cmp r2, #9 + 800f460: d903 bls.n 800f46a <_svfiprintf_r+0x1a6> + 800f462: 2b00 cmp r3, #0 + 800f464: d0c6 beq.n 800f3f4 <_svfiprintf_r+0x130> + 800f466: 9105 str r1, [sp, #20] + 800f468: e7c4 b.n 800f3f4 <_svfiprintf_r+0x130> + 800f46a: fb0c 2101 mla r1, ip, r1, r2 + 800f46e: 4604 mov r4, r0 + 800f470: 2301 movs r3, #1 + 800f472: e7f0 b.n 800f456 <_svfiprintf_r+0x192> + 800f474: ab03 add r3, sp, #12 + 800f476: 9300 str r3, [sp, #0] + 800f478: 462a mov r2, r5 + 800f47a: 4b0f ldr r3, [pc, #60] @ (800f4b8 <_svfiprintf_r+0x1f4>) + 800f47c: a904 add r1, sp, #16 + 800f47e: 4638 mov r0, r7 + 800f480: f3af 8000 nop.w + 800f484: 1c42 adds r2, r0, #1 + 800f486: 4606 mov r6, r0 + 800f488: d1d6 bne.n 800f438 <_svfiprintf_r+0x174> + 800f48a: 89ab ldrh r3, [r5, #12] + 800f48c: 065b lsls r3, r3, #25 + 800f48e: f53f af2d bmi.w 800f2ec <_svfiprintf_r+0x28> + 800f492: 9809 ldr r0, [sp, #36] @ 0x24 + 800f494: e72c b.n 800f2f0 <_svfiprintf_r+0x2c> + 800f496: ab03 add r3, sp, #12 + 800f498: 9300 str r3, [sp, #0] + 800f49a: 462a mov r2, r5 + 800f49c: 4b06 ldr r3, [pc, #24] @ (800f4b8 <_svfiprintf_r+0x1f4>) + 800f49e: a904 add r1, sp, #16 + 800f4a0: 4638 mov r0, r7 + 800f4a2: f000 f879 bl 800f598 <_printf_i> + 800f4a6: e7ed b.n 800f484 <_svfiprintf_r+0x1c0> + 800f4a8: 08010641 .word 0x08010641 + 800f4ac: 08010647 .word 0x08010647 + 800f4b0: 0801064b .word 0x0801064b + 800f4b4: 00000000 .word 0x00000000 + 800f4b8: 0800f20d .word 0x0800f20d -0800f494 <_printf_common>: - 800f494: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 800f498: 4616 mov r6, r2 - 800f49a: 4698 mov r8, r3 - 800f49c: 688a ldr r2, [r1, #8] - 800f49e: 690b ldr r3, [r1, #16] - 800f4a0: f8dd 9020 ldr.w r9, [sp, #32] - 800f4a4: 4293 cmp r3, r2 - 800f4a6: bfb8 it lt - 800f4a8: 4613 movlt r3, r2 - 800f4aa: 6033 str r3, [r6, #0] - 800f4ac: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 - 800f4b0: 4607 mov r7, r0 - 800f4b2: 460c mov r4, r1 - 800f4b4: b10a cbz r2, 800f4ba <_printf_common+0x26> - 800f4b6: 3301 adds r3, #1 - 800f4b8: 6033 str r3, [r6, #0] - 800f4ba: 6823 ldr r3, [r4, #0] - 800f4bc: 0699 lsls r1, r3, #26 - 800f4be: bf42 ittt mi - 800f4c0: 6833 ldrmi r3, [r6, #0] - 800f4c2: 3302 addmi r3, #2 - 800f4c4: 6033 strmi r3, [r6, #0] - 800f4c6: 6825 ldr r5, [r4, #0] - 800f4c8: f015 0506 ands.w r5, r5, #6 - 800f4cc: d106 bne.n 800f4dc <_printf_common+0x48> - 800f4ce: f104 0a19 add.w sl, r4, #25 - 800f4d2: 68e3 ldr r3, [r4, #12] - 800f4d4: 6832 ldr r2, [r6, #0] - 800f4d6: 1a9b subs r3, r3, r2 - 800f4d8: 42ab cmp r3, r5 - 800f4da: dc26 bgt.n 800f52a <_printf_common+0x96> - 800f4dc: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 - 800f4e0: 6822 ldr r2, [r4, #0] - 800f4e2: 3b00 subs r3, #0 - 800f4e4: bf18 it ne - 800f4e6: 2301 movne r3, #1 - 800f4e8: 0692 lsls r2, r2, #26 - 800f4ea: d42b bmi.n 800f544 <_printf_common+0xb0> - 800f4ec: f104 0243 add.w r2, r4, #67 @ 0x43 - 800f4f0: 4641 mov r1, r8 - 800f4f2: 4638 mov r0, r7 - 800f4f4: 47c8 blx r9 - 800f4f6: 3001 adds r0, #1 - 800f4f8: d01e beq.n 800f538 <_printf_common+0xa4> - 800f4fa: 6823 ldr r3, [r4, #0] - 800f4fc: 6922 ldr r2, [r4, #16] - 800f4fe: f003 0306 and.w r3, r3, #6 - 800f502: 2b04 cmp r3, #4 - 800f504: bf02 ittt eq - 800f506: 68e5 ldreq r5, [r4, #12] - 800f508: 6833 ldreq r3, [r6, #0] - 800f50a: 1aed subeq r5, r5, r3 - 800f50c: 68a3 ldr r3, [r4, #8] - 800f50e: bf0c ite eq - 800f510: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 800f514: 2500 movne r5, #0 - 800f516: 4293 cmp r3, r2 - 800f518: bfc4 itt gt - 800f51a: 1a9b subgt r3, r3, r2 - 800f51c: 18ed addgt r5, r5, r3 - 800f51e: 2600 movs r6, #0 - 800f520: 341a adds r4, #26 - 800f522: 42b5 cmp r5, r6 - 800f524: d11a bne.n 800f55c <_printf_common+0xc8> - 800f526: 2000 movs r0, #0 - 800f528: e008 b.n 800f53c <_printf_common+0xa8> - 800f52a: 2301 movs r3, #1 - 800f52c: 4652 mov r2, sl - 800f52e: 4641 mov r1, r8 - 800f530: 4638 mov r0, r7 - 800f532: 47c8 blx r9 - 800f534: 3001 adds r0, #1 - 800f536: d103 bne.n 800f540 <_printf_common+0xac> - 800f538: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800f53c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800f540: 3501 adds r5, #1 - 800f542: e7c6 b.n 800f4d2 <_printf_common+0x3e> - 800f544: 18e1 adds r1, r4, r3 - 800f546: 1c5a adds r2, r3, #1 - 800f548: 2030 movs r0, #48 @ 0x30 - 800f54a: f881 0043 strb.w r0, [r1, #67] @ 0x43 - 800f54e: 4422 add r2, r4 - 800f550: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 - 800f554: f882 1043 strb.w r1, [r2, #67] @ 0x43 - 800f558: 3302 adds r3, #2 - 800f55a: e7c7 b.n 800f4ec <_printf_common+0x58> - 800f55c: 2301 movs r3, #1 - 800f55e: 4622 mov r2, r4 - 800f560: 4641 mov r1, r8 - 800f562: 4638 mov r0, r7 - 800f564: 47c8 blx r9 - 800f566: 3001 adds r0, #1 - 800f568: d0e6 beq.n 800f538 <_printf_common+0xa4> - 800f56a: 3601 adds r6, #1 - 800f56c: e7d9 b.n 800f522 <_printf_common+0x8e> +0800f4bc <_printf_common>: + 800f4bc: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 800f4c0: 4616 mov r6, r2 + 800f4c2: 4698 mov r8, r3 + 800f4c4: 688a ldr r2, [r1, #8] + 800f4c6: 690b ldr r3, [r1, #16] + 800f4c8: f8dd 9020 ldr.w r9, [sp, #32] + 800f4cc: 4293 cmp r3, r2 + 800f4ce: bfb8 it lt + 800f4d0: 4613 movlt r3, r2 + 800f4d2: 6033 str r3, [r6, #0] + 800f4d4: f891 2043 ldrb.w r2, [r1, #67] @ 0x43 + 800f4d8: 4607 mov r7, r0 + 800f4da: 460c mov r4, r1 + 800f4dc: b10a cbz r2, 800f4e2 <_printf_common+0x26> + 800f4de: 3301 adds r3, #1 + 800f4e0: 6033 str r3, [r6, #0] + 800f4e2: 6823 ldr r3, [r4, #0] + 800f4e4: 0699 lsls r1, r3, #26 + 800f4e6: bf42 ittt mi + 800f4e8: 6833 ldrmi r3, [r6, #0] + 800f4ea: 3302 addmi r3, #2 + 800f4ec: 6033 strmi r3, [r6, #0] + 800f4ee: 6825 ldr r5, [r4, #0] + 800f4f0: f015 0506 ands.w r5, r5, #6 + 800f4f4: d106 bne.n 800f504 <_printf_common+0x48> + 800f4f6: f104 0a19 add.w sl, r4, #25 + 800f4fa: 68e3 ldr r3, [r4, #12] + 800f4fc: 6832 ldr r2, [r6, #0] + 800f4fe: 1a9b subs r3, r3, r2 + 800f500: 42ab cmp r3, r5 + 800f502: dc26 bgt.n 800f552 <_printf_common+0x96> + 800f504: f894 3043 ldrb.w r3, [r4, #67] @ 0x43 + 800f508: 6822 ldr r2, [r4, #0] + 800f50a: 3b00 subs r3, #0 + 800f50c: bf18 it ne + 800f50e: 2301 movne r3, #1 + 800f510: 0692 lsls r2, r2, #26 + 800f512: d42b bmi.n 800f56c <_printf_common+0xb0> + 800f514: f104 0243 add.w r2, r4, #67 @ 0x43 + 800f518: 4641 mov r1, r8 + 800f51a: 4638 mov r0, r7 + 800f51c: 47c8 blx r9 + 800f51e: 3001 adds r0, #1 + 800f520: d01e beq.n 800f560 <_printf_common+0xa4> + 800f522: 6823 ldr r3, [r4, #0] + 800f524: 6922 ldr r2, [r4, #16] + 800f526: f003 0306 and.w r3, r3, #6 + 800f52a: 2b04 cmp r3, #4 + 800f52c: bf02 ittt eq + 800f52e: 68e5 ldreq r5, [r4, #12] + 800f530: 6833 ldreq r3, [r6, #0] + 800f532: 1aed subeq r5, r5, r3 + 800f534: 68a3 ldr r3, [r4, #8] + 800f536: bf0c ite eq + 800f538: ea25 75e5 biceq.w r5, r5, r5, asr #31 + 800f53c: 2500 movne r5, #0 + 800f53e: 4293 cmp r3, r2 + 800f540: bfc4 itt gt + 800f542: 1a9b subgt r3, r3, r2 + 800f544: 18ed addgt r5, r5, r3 + 800f546: 2600 movs r6, #0 + 800f548: 341a adds r4, #26 + 800f54a: 42b5 cmp r5, r6 + 800f54c: d11a bne.n 800f584 <_printf_common+0xc8> + 800f54e: 2000 movs r0, #0 + 800f550: e008 b.n 800f564 <_printf_common+0xa8> + 800f552: 2301 movs r3, #1 + 800f554: 4652 mov r2, sl + 800f556: 4641 mov r1, r8 + 800f558: 4638 mov r0, r7 + 800f55a: 47c8 blx r9 + 800f55c: 3001 adds r0, #1 + 800f55e: d103 bne.n 800f568 <_printf_common+0xac> + 800f560: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800f564: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800f568: 3501 adds r5, #1 + 800f56a: e7c6 b.n 800f4fa <_printf_common+0x3e> + 800f56c: 18e1 adds r1, r4, r3 + 800f56e: 1c5a adds r2, r3, #1 + 800f570: 2030 movs r0, #48 @ 0x30 + 800f572: f881 0043 strb.w r0, [r1, #67] @ 0x43 + 800f576: 4422 add r2, r4 + 800f578: f894 1045 ldrb.w r1, [r4, #69] @ 0x45 + 800f57c: f882 1043 strb.w r1, [r2, #67] @ 0x43 + 800f580: 3302 adds r3, #2 + 800f582: e7c7 b.n 800f514 <_printf_common+0x58> + 800f584: 2301 movs r3, #1 + 800f586: 4622 mov r2, r4 + 800f588: 4641 mov r1, r8 + 800f58a: 4638 mov r0, r7 + 800f58c: 47c8 blx r9 + 800f58e: 3001 adds r0, #1 + 800f590: d0e6 beq.n 800f560 <_printf_common+0xa4> + 800f592: 3601 adds r6, #1 + 800f594: e7d9 b.n 800f54a <_printf_common+0x8e> ... -0800f570 <_printf_i>: - 800f570: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 800f574: 7e0f ldrb r7, [r1, #24] - 800f576: 9e0c ldr r6, [sp, #48] @ 0x30 - 800f578: 2f78 cmp r7, #120 @ 0x78 - 800f57a: 4691 mov r9, r2 - 800f57c: 4680 mov r8, r0 - 800f57e: 460c mov r4, r1 - 800f580: 469a mov sl, r3 - 800f582: f101 0243 add.w r2, r1, #67 @ 0x43 - 800f586: d807 bhi.n 800f598 <_printf_i+0x28> - 800f588: 2f62 cmp r7, #98 @ 0x62 - 800f58a: d80a bhi.n 800f5a2 <_printf_i+0x32> - 800f58c: 2f00 cmp r7, #0 - 800f58e: f000 80d1 beq.w 800f734 <_printf_i+0x1c4> - 800f592: 2f58 cmp r7, #88 @ 0x58 - 800f594: f000 80b8 beq.w 800f708 <_printf_i+0x198> - 800f598: f104 0642 add.w r6, r4, #66 @ 0x42 - 800f59c: f884 7042 strb.w r7, [r4, #66] @ 0x42 - 800f5a0: e03a b.n 800f618 <_printf_i+0xa8> - 800f5a2: f1a7 0363 sub.w r3, r7, #99 @ 0x63 - 800f5a6: 2b15 cmp r3, #21 - 800f5a8: d8f6 bhi.n 800f598 <_printf_i+0x28> - 800f5aa: a101 add r1, pc, #4 @ (adr r1, 800f5b0 <_printf_i+0x40>) - 800f5ac: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 800f5b0: 0800f609 .word 0x0800f609 - 800f5b4: 0800f61d .word 0x0800f61d - 800f5b8: 0800f599 .word 0x0800f599 - 800f5bc: 0800f599 .word 0x0800f599 - 800f5c0: 0800f599 .word 0x0800f599 - 800f5c4: 0800f599 .word 0x0800f599 - 800f5c8: 0800f61d .word 0x0800f61d - 800f5cc: 0800f599 .word 0x0800f599 - 800f5d0: 0800f599 .word 0x0800f599 - 800f5d4: 0800f599 .word 0x0800f599 - 800f5d8: 0800f599 .word 0x0800f599 - 800f5dc: 0800f71b .word 0x0800f71b - 800f5e0: 0800f647 .word 0x0800f647 - 800f5e4: 0800f6d5 .word 0x0800f6d5 - 800f5e8: 0800f599 .word 0x0800f599 - 800f5ec: 0800f599 .word 0x0800f599 - 800f5f0: 0800f73d .word 0x0800f73d - 800f5f4: 0800f599 .word 0x0800f599 - 800f5f8: 0800f647 .word 0x0800f647 - 800f5fc: 0800f599 .word 0x0800f599 - 800f600: 0800f599 .word 0x0800f599 - 800f604: 0800f6dd .word 0x0800f6dd - 800f608: 6833 ldr r3, [r6, #0] - 800f60a: 1d1a adds r2, r3, #4 - 800f60c: 681b ldr r3, [r3, #0] - 800f60e: 6032 str r2, [r6, #0] - 800f610: f104 0642 add.w r6, r4, #66 @ 0x42 - 800f614: f884 3042 strb.w r3, [r4, #66] @ 0x42 - 800f618: 2301 movs r3, #1 - 800f61a: e09c b.n 800f756 <_printf_i+0x1e6> - 800f61c: 6833 ldr r3, [r6, #0] - 800f61e: 6820 ldr r0, [r4, #0] - 800f620: 1d19 adds r1, r3, #4 - 800f622: 6031 str r1, [r6, #0] - 800f624: 0606 lsls r6, r0, #24 - 800f626: d501 bpl.n 800f62c <_printf_i+0xbc> - 800f628: 681d ldr r5, [r3, #0] - 800f62a: e003 b.n 800f634 <_printf_i+0xc4> - 800f62c: 0645 lsls r5, r0, #25 - 800f62e: d5fb bpl.n 800f628 <_printf_i+0xb8> - 800f630: f9b3 5000 ldrsh.w r5, [r3] - 800f634: 2d00 cmp r5, #0 - 800f636: da03 bge.n 800f640 <_printf_i+0xd0> - 800f638: 232d movs r3, #45 @ 0x2d - 800f63a: 426d negs r5, r5 - 800f63c: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800f640: 4858 ldr r0, [pc, #352] @ (800f7a4 <_printf_i+0x234>) - 800f642: 230a movs r3, #10 - 800f644: e011 b.n 800f66a <_printf_i+0xfa> - 800f646: 6821 ldr r1, [r4, #0] - 800f648: 6833 ldr r3, [r6, #0] - 800f64a: 0608 lsls r0, r1, #24 - 800f64c: f853 5b04 ldr.w r5, [r3], #4 - 800f650: d402 bmi.n 800f658 <_printf_i+0xe8> - 800f652: 0649 lsls r1, r1, #25 - 800f654: bf48 it mi - 800f656: b2ad uxthmi r5, r5 - 800f658: 2f6f cmp r7, #111 @ 0x6f - 800f65a: 4852 ldr r0, [pc, #328] @ (800f7a4 <_printf_i+0x234>) - 800f65c: 6033 str r3, [r6, #0] - 800f65e: bf14 ite ne - 800f660: 230a movne r3, #10 - 800f662: 2308 moveq r3, #8 - 800f664: 2100 movs r1, #0 - 800f666: f884 1043 strb.w r1, [r4, #67] @ 0x43 - 800f66a: 6866 ldr r6, [r4, #4] - 800f66c: 60a6 str r6, [r4, #8] - 800f66e: 2e00 cmp r6, #0 - 800f670: db05 blt.n 800f67e <_printf_i+0x10e> - 800f672: 6821 ldr r1, [r4, #0] - 800f674: 432e orrs r6, r5 - 800f676: f021 0104 bic.w r1, r1, #4 - 800f67a: 6021 str r1, [r4, #0] - 800f67c: d04b beq.n 800f716 <_printf_i+0x1a6> - 800f67e: 4616 mov r6, r2 - 800f680: fbb5 f1f3 udiv r1, r5, r3 - 800f684: fb03 5711 mls r7, r3, r1, r5 - 800f688: 5dc7 ldrb r7, [r0, r7] - 800f68a: f806 7d01 strb.w r7, [r6, #-1]! - 800f68e: 462f mov r7, r5 - 800f690: 42bb cmp r3, r7 - 800f692: 460d mov r5, r1 - 800f694: d9f4 bls.n 800f680 <_printf_i+0x110> - 800f696: 2b08 cmp r3, #8 - 800f698: d10b bne.n 800f6b2 <_printf_i+0x142> - 800f69a: 6823 ldr r3, [r4, #0] - 800f69c: 07df lsls r7, r3, #31 - 800f69e: d508 bpl.n 800f6b2 <_printf_i+0x142> - 800f6a0: 6923 ldr r3, [r4, #16] - 800f6a2: 6861 ldr r1, [r4, #4] - 800f6a4: 4299 cmp r1, r3 - 800f6a6: bfde ittt le - 800f6a8: 2330 movle r3, #48 @ 0x30 - 800f6aa: f806 3c01 strble.w r3, [r6, #-1] - 800f6ae: f106 36ff addle.w r6, r6, #4294967295 @ 0xffffffff - 800f6b2: 1b92 subs r2, r2, r6 - 800f6b4: 6122 str r2, [r4, #16] - 800f6b6: f8cd a000 str.w sl, [sp] - 800f6ba: 464b mov r3, r9 - 800f6bc: aa03 add r2, sp, #12 - 800f6be: 4621 mov r1, r4 - 800f6c0: 4640 mov r0, r8 - 800f6c2: f7ff fee7 bl 800f494 <_printf_common> - 800f6c6: 3001 adds r0, #1 - 800f6c8: d14a bne.n 800f760 <_printf_i+0x1f0> - 800f6ca: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff - 800f6ce: b004 add sp, #16 - 800f6d0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 800f6d4: 6823 ldr r3, [r4, #0] - 800f6d6: f043 0320 orr.w r3, r3, #32 - 800f6da: 6023 str r3, [r4, #0] - 800f6dc: 4832 ldr r0, [pc, #200] @ (800f7a8 <_printf_i+0x238>) - 800f6de: 2778 movs r7, #120 @ 0x78 - 800f6e0: f884 7045 strb.w r7, [r4, #69] @ 0x45 - 800f6e4: 6823 ldr r3, [r4, #0] - 800f6e6: 6831 ldr r1, [r6, #0] - 800f6e8: 061f lsls r7, r3, #24 - 800f6ea: f851 5b04 ldr.w r5, [r1], #4 - 800f6ee: d402 bmi.n 800f6f6 <_printf_i+0x186> - 800f6f0: 065f lsls r7, r3, #25 - 800f6f2: bf48 it mi - 800f6f4: b2ad uxthmi r5, r5 - 800f6f6: 6031 str r1, [r6, #0] - 800f6f8: 07d9 lsls r1, r3, #31 - 800f6fa: bf44 itt mi - 800f6fc: f043 0320 orrmi.w r3, r3, #32 - 800f700: 6023 strmi r3, [r4, #0] - 800f702: b11d cbz r5, 800f70c <_printf_i+0x19c> - 800f704: 2310 movs r3, #16 - 800f706: e7ad b.n 800f664 <_printf_i+0xf4> - 800f708: 4826 ldr r0, [pc, #152] @ (800f7a4 <_printf_i+0x234>) - 800f70a: e7e9 b.n 800f6e0 <_printf_i+0x170> +0800f598 <_printf_i>: + 800f598: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 800f59c: 7e0f ldrb r7, [r1, #24] + 800f59e: 9e0c ldr r6, [sp, #48] @ 0x30 + 800f5a0: 2f78 cmp r7, #120 @ 0x78 + 800f5a2: 4691 mov r9, r2 + 800f5a4: 4680 mov r8, r0 + 800f5a6: 460c mov r4, r1 + 800f5a8: 469a mov sl, r3 + 800f5aa: f101 0243 add.w r2, r1, #67 @ 0x43 + 800f5ae: d807 bhi.n 800f5c0 <_printf_i+0x28> + 800f5b0: 2f62 cmp r7, #98 @ 0x62 + 800f5b2: d80a bhi.n 800f5ca <_printf_i+0x32> + 800f5b4: 2f00 cmp r7, #0 + 800f5b6: f000 80d1 beq.w 800f75c <_printf_i+0x1c4> + 800f5ba: 2f58 cmp r7, #88 @ 0x58 + 800f5bc: f000 80b8 beq.w 800f730 <_printf_i+0x198> + 800f5c0: f104 0642 add.w r6, r4, #66 @ 0x42 + 800f5c4: f884 7042 strb.w r7, [r4, #66] @ 0x42 + 800f5c8: e03a b.n 800f640 <_printf_i+0xa8> + 800f5ca: f1a7 0363 sub.w r3, r7, #99 @ 0x63 + 800f5ce: 2b15 cmp r3, #21 + 800f5d0: d8f6 bhi.n 800f5c0 <_printf_i+0x28> + 800f5d2: a101 add r1, pc, #4 @ (adr r1, 800f5d8 <_printf_i+0x40>) + 800f5d4: f851 f023 ldr.w pc, [r1, r3, lsl #2] + 800f5d8: 0800f631 .word 0x0800f631 + 800f5dc: 0800f645 .word 0x0800f645 + 800f5e0: 0800f5c1 .word 0x0800f5c1 + 800f5e4: 0800f5c1 .word 0x0800f5c1 + 800f5e8: 0800f5c1 .word 0x0800f5c1 + 800f5ec: 0800f5c1 .word 0x0800f5c1 + 800f5f0: 0800f645 .word 0x0800f645 + 800f5f4: 0800f5c1 .word 0x0800f5c1 + 800f5f8: 0800f5c1 .word 0x0800f5c1 + 800f5fc: 0800f5c1 .word 0x0800f5c1 + 800f600: 0800f5c1 .word 0x0800f5c1 + 800f604: 0800f743 .word 0x0800f743 + 800f608: 0800f66f .word 0x0800f66f + 800f60c: 0800f6fd .word 0x0800f6fd + 800f610: 0800f5c1 .word 0x0800f5c1 + 800f614: 0800f5c1 .word 0x0800f5c1 + 800f618: 0800f765 .word 0x0800f765 + 800f61c: 0800f5c1 .word 0x0800f5c1 + 800f620: 0800f66f .word 0x0800f66f + 800f624: 0800f5c1 .word 0x0800f5c1 + 800f628: 0800f5c1 .word 0x0800f5c1 + 800f62c: 0800f705 .word 0x0800f705 + 800f630: 6833 ldr r3, [r6, #0] + 800f632: 1d1a adds r2, r3, #4 + 800f634: 681b ldr r3, [r3, #0] + 800f636: 6032 str r2, [r6, #0] + 800f638: f104 0642 add.w r6, r4, #66 @ 0x42 + 800f63c: f884 3042 strb.w r3, [r4, #66] @ 0x42 + 800f640: 2301 movs r3, #1 + 800f642: e09c b.n 800f77e <_printf_i+0x1e6> + 800f644: 6833 ldr r3, [r6, #0] + 800f646: 6820 ldr r0, [r4, #0] + 800f648: 1d19 adds r1, r3, #4 + 800f64a: 6031 str r1, [r6, #0] + 800f64c: 0606 lsls r6, r0, #24 + 800f64e: d501 bpl.n 800f654 <_printf_i+0xbc> + 800f650: 681d ldr r5, [r3, #0] + 800f652: e003 b.n 800f65c <_printf_i+0xc4> + 800f654: 0645 lsls r5, r0, #25 + 800f656: d5fb bpl.n 800f650 <_printf_i+0xb8> + 800f658: f9b3 5000 ldrsh.w r5, [r3] + 800f65c: 2d00 cmp r5, #0 + 800f65e: da03 bge.n 800f668 <_printf_i+0xd0> + 800f660: 232d movs r3, #45 @ 0x2d + 800f662: 426d negs r5, r5 + 800f664: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800f668: 4858 ldr r0, [pc, #352] @ (800f7cc <_printf_i+0x234>) + 800f66a: 230a movs r3, #10 + 800f66c: e011 b.n 800f692 <_printf_i+0xfa> + 800f66e: 6821 ldr r1, [r4, #0] + 800f670: 6833 ldr r3, [r6, #0] + 800f672: 0608 lsls r0, r1, #24 + 800f674: f853 5b04 ldr.w r5, [r3], #4 + 800f678: d402 bmi.n 800f680 <_printf_i+0xe8> + 800f67a: 0649 lsls r1, r1, #25 + 800f67c: bf48 it mi + 800f67e: b2ad uxthmi r5, r5 + 800f680: 2f6f cmp r7, #111 @ 0x6f + 800f682: 4852 ldr r0, [pc, #328] @ (800f7cc <_printf_i+0x234>) + 800f684: 6033 str r3, [r6, #0] + 800f686: bf14 ite ne + 800f688: 230a movne r3, #10 + 800f68a: 2308 moveq r3, #8 + 800f68c: 2100 movs r1, #0 + 800f68e: f884 1043 strb.w r1, [r4, #67] @ 0x43 + 800f692: 6866 ldr r6, [r4, #4] + 800f694: 60a6 str r6, [r4, #8] + 800f696: 2e00 cmp r6, #0 + 800f698: db05 blt.n 800f6a6 <_printf_i+0x10e> + 800f69a: 6821 ldr r1, [r4, #0] + 800f69c: 432e orrs r6, r5 + 800f69e: f021 0104 bic.w r1, r1, #4 + 800f6a2: 6021 str r1, [r4, #0] + 800f6a4: d04b beq.n 800f73e <_printf_i+0x1a6> + 800f6a6: 4616 mov r6, r2 + 800f6a8: fbb5 f1f3 udiv r1, r5, r3 + 800f6ac: fb03 5711 mls r7, r3, r1, r5 + 800f6b0: 5dc7 ldrb r7, [r0, r7] + 800f6b2: f806 7d01 strb.w r7, [r6, #-1]! + 800f6b6: 462f mov r7, r5 + 800f6b8: 42bb cmp r3, r7 + 800f6ba: 460d mov r5, r1 + 800f6bc: d9f4 bls.n 800f6a8 <_printf_i+0x110> + 800f6be: 2b08 cmp r3, #8 + 800f6c0: d10b bne.n 800f6da <_printf_i+0x142> + 800f6c2: 6823 ldr r3, [r4, #0] + 800f6c4: 07df lsls r7, r3, #31 + 800f6c6: d508 bpl.n 800f6da <_printf_i+0x142> + 800f6c8: 6923 ldr r3, [r4, #16] + 800f6ca: 6861 ldr r1, [r4, #4] + 800f6cc: 4299 cmp r1, r3 + 800f6ce: bfde ittt le + 800f6d0: 2330 movle r3, #48 @ 0x30 + 800f6d2: f806 3c01 strble.w r3, [r6, #-1] + 800f6d6: f106 36ff addle.w r6, r6, #4294967295 @ 0xffffffff + 800f6da: 1b92 subs r2, r2, r6 + 800f6dc: 6122 str r2, [r4, #16] + 800f6de: f8cd a000 str.w sl, [sp] + 800f6e2: 464b mov r3, r9 + 800f6e4: aa03 add r2, sp, #12 + 800f6e6: 4621 mov r1, r4 + 800f6e8: 4640 mov r0, r8 + 800f6ea: f7ff fee7 bl 800f4bc <_printf_common> + 800f6ee: 3001 adds r0, #1 + 800f6f0: d14a bne.n 800f788 <_printf_i+0x1f0> + 800f6f2: f04f 30ff mov.w r0, #4294967295 @ 0xffffffff + 800f6f6: b004 add sp, #16 + 800f6f8: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 800f6fc: 6823 ldr r3, [r4, #0] + 800f6fe: f043 0320 orr.w r3, r3, #32 + 800f702: 6023 str r3, [r4, #0] + 800f704: 4832 ldr r0, [pc, #200] @ (800f7d0 <_printf_i+0x238>) + 800f706: 2778 movs r7, #120 @ 0x78 + 800f708: f884 7045 strb.w r7, [r4, #69] @ 0x45 800f70c: 6823 ldr r3, [r4, #0] - 800f70e: f023 0320 bic.w r3, r3, #32 - 800f712: 6023 str r3, [r4, #0] - 800f714: e7f6 b.n 800f704 <_printf_i+0x194> - 800f716: 4616 mov r6, r2 - 800f718: e7bd b.n 800f696 <_printf_i+0x126> - 800f71a: 6833 ldr r3, [r6, #0] - 800f71c: 6825 ldr r5, [r4, #0] - 800f71e: 6961 ldr r1, [r4, #20] - 800f720: 1d18 adds r0, r3, #4 - 800f722: 6030 str r0, [r6, #0] - 800f724: 062e lsls r6, r5, #24 - 800f726: 681b ldr r3, [r3, #0] - 800f728: d501 bpl.n 800f72e <_printf_i+0x1be> - 800f72a: 6019 str r1, [r3, #0] - 800f72c: e002 b.n 800f734 <_printf_i+0x1c4> - 800f72e: 0668 lsls r0, r5, #25 - 800f730: d5fb bpl.n 800f72a <_printf_i+0x1ba> - 800f732: 8019 strh r1, [r3, #0] - 800f734: 2300 movs r3, #0 - 800f736: 6123 str r3, [r4, #16] - 800f738: 4616 mov r6, r2 - 800f73a: e7bc b.n 800f6b6 <_printf_i+0x146> - 800f73c: 6833 ldr r3, [r6, #0] - 800f73e: 1d1a adds r2, r3, #4 - 800f740: 6032 str r2, [r6, #0] - 800f742: 681e ldr r6, [r3, #0] - 800f744: 6862 ldr r2, [r4, #4] - 800f746: 2100 movs r1, #0 - 800f748: 4630 mov r0, r6 - 800f74a: f7f0 fd31 bl 80001b0 - 800f74e: b108 cbz r0, 800f754 <_printf_i+0x1e4> - 800f750: 1b80 subs r0, r0, r6 - 800f752: 6060 str r0, [r4, #4] - 800f754: 6863 ldr r3, [r4, #4] - 800f756: 6123 str r3, [r4, #16] - 800f758: 2300 movs r3, #0 - 800f75a: f884 3043 strb.w r3, [r4, #67] @ 0x43 - 800f75e: e7aa b.n 800f6b6 <_printf_i+0x146> - 800f760: 6923 ldr r3, [r4, #16] - 800f762: 4632 mov r2, r6 - 800f764: 4649 mov r1, r9 - 800f766: 4640 mov r0, r8 - 800f768: 47d0 blx sl - 800f76a: 3001 adds r0, #1 - 800f76c: d0ad beq.n 800f6ca <_printf_i+0x15a> - 800f76e: 6823 ldr r3, [r4, #0] - 800f770: 079b lsls r3, r3, #30 - 800f772: d413 bmi.n 800f79c <_printf_i+0x22c> - 800f774: 68e0 ldr r0, [r4, #12] - 800f776: 9b03 ldr r3, [sp, #12] - 800f778: 4298 cmp r0, r3 - 800f77a: bfb8 it lt - 800f77c: 4618 movlt r0, r3 - 800f77e: e7a6 b.n 800f6ce <_printf_i+0x15e> - 800f780: 2301 movs r3, #1 - 800f782: 4632 mov r2, r6 - 800f784: 4649 mov r1, r9 - 800f786: 4640 mov r0, r8 - 800f788: 47d0 blx sl - 800f78a: 3001 adds r0, #1 - 800f78c: d09d beq.n 800f6ca <_printf_i+0x15a> - 800f78e: 3501 adds r5, #1 - 800f790: 68e3 ldr r3, [r4, #12] - 800f792: 9903 ldr r1, [sp, #12] - 800f794: 1a5b subs r3, r3, r1 - 800f796: 42ab cmp r3, r5 - 800f798: dcf2 bgt.n 800f780 <_printf_i+0x210> - 800f79a: e7eb b.n 800f774 <_printf_i+0x204> - 800f79c: 2500 movs r5, #0 - 800f79e: f104 0619 add.w r6, r4, #25 - 800f7a2: e7f5 b.n 800f790 <_printf_i+0x220> - 800f7a4: 0801062a .word 0x0801062a - 800f7a8: 0801063b .word 0x0801063b + 800f70e: 6831 ldr r1, [r6, #0] + 800f710: 061f lsls r7, r3, #24 + 800f712: f851 5b04 ldr.w r5, [r1], #4 + 800f716: d402 bmi.n 800f71e <_printf_i+0x186> + 800f718: 065f lsls r7, r3, #25 + 800f71a: bf48 it mi + 800f71c: b2ad uxthmi r5, r5 + 800f71e: 6031 str r1, [r6, #0] + 800f720: 07d9 lsls r1, r3, #31 + 800f722: bf44 itt mi + 800f724: f043 0320 orrmi.w r3, r3, #32 + 800f728: 6023 strmi r3, [r4, #0] + 800f72a: b11d cbz r5, 800f734 <_printf_i+0x19c> + 800f72c: 2310 movs r3, #16 + 800f72e: e7ad b.n 800f68c <_printf_i+0xf4> + 800f730: 4826 ldr r0, [pc, #152] @ (800f7cc <_printf_i+0x234>) + 800f732: e7e9 b.n 800f708 <_printf_i+0x170> + 800f734: 6823 ldr r3, [r4, #0] + 800f736: f023 0320 bic.w r3, r3, #32 + 800f73a: 6023 str r3, [r4, #0] + 800f73c: e7f6 b.n 800f72c <_printf_i+0x194> + 800f73e: 4616 mov r6, r2 + 800f740: e7bd b.n 800f6be <_printf_i+0x126> + 800f742: 6833 ldr r3, [r6, #0] + 800f744: 6825 ldr r5, [r4, #0] + 800f746: 6961 ldr r1, [r4, #20] + 800f748: 1d18 adds r0, r3, #4 + 800f74a: 6030 str r0, [r6, #0] + 800f74c: 062e lsls r6, r5, #24 + 800f74e: 681b ldr r3, [r3, #0] + 800f750: d501 bpl.n 800f756 <_printf_i+0x1be> + 800f752: 6019 str r1, [r3, #0] + 800f754: e002 b.n 800f75c <_printf_i+0x1c4> + 800f756: 0668 lsls r0, r5, #25 + 800f758: d5fb bpl.n 800f752 <_printf_i+0x1ba> + 800f75a: 8019 strh r1, [r3, #0] + 800f75c: 2300 movs r3, #0 + 800f75e: 6123 str r3, [r4, #16] + 800f760: 4616 mov r6, r2 + 800f762: e7bc b.n 800f6de <_printf_i+0x146> + 800f764: 6833 ldr r3, [r6, #0] + 800f766: 1d1a adds r2, r3, #4 + 800f768: 6032 str r2, [r6, #0] + 800f76a: 681e ldr r6, [r3, #0] + 800f76c: 6862 ldr r2, [r4, #4] + 800f76e: 2100 movs r1, #0 + 800f770: 4630 mov r0, r6 + 800f772: f7f0 fd1d bl 80001b0 + 800f776: b108 cbz r0, 800f77c <_printf_i+0x1e4> + 800f778: 1b80 subs r0, r0, r6 + 800f77a: 6060 str r0, [r4, #4] + 800f77c: 6863 ldr r3, [r4, #4] + 800f77e: 6123 str r3, [r4, #16] + 800f780: 2300 movs r3, #0 + 800f782: f884 3043 strb.w r3, [r4, #67] @ 0x43 + 800f786: e7aa b.n 800f6de <_printf_i+0x146> + 800f788: 6923 ldr r3, [r4, #16] + 800f78a: 4632 mov r2, r6 + 800f78c: 4649 mov r1, r9 + 800f78e: 4640 mov r0, r8 + 800f790: 47d0 blx sl + 800f792: 3001 adds r0, #1 + 800f794: d0ad beq.n 800f6f2 <_printf_i+0x15a> + 800f796: 6823 ldr r3, [r4, #0] + 800f798: 079b lsls r3, r3, #30 + 800f79a: d413 bmi.n 800f7c4 <_printf_i+0x22c> + 800f79c: 68e0 ldr r0, [r4, #12] + 800f79e: 9b03 ldr r3, [sp, #12] + 800f7a0: 4298 cmp r0, r3 + 800f7a2: bfb8 it lt + 800f7a4: 4618 movlt r0, r3 + 800f7a6: e7a6 b.n 800f6f6 <_printf_i+0x15e> + 800f7a8: 2301 movs r3, #1 + 800f7aa: 4632 mov r2, r6 + 800f7ac: 4649 mov r1, r9 + 800f7ae: 4640 mov r0, r8 + 800f7b0: 47d0 blx sl + 800f7b2: 3001 adds r0, #1 + 800f7b4: d09d beq.n 800f6f2 <_printf_i+0x15a> + 800f7b6: 3501 adds r5, #1 + 800f7b8: 68e3 ldr r3, [r4, #12] + 800f7ba: 9903 ldr r1, [sp, #12] + 800f7bc: 1a5b subs r3, r3, r1 + 800f7be: 42ab cmp r3, r5 + 800f7c0: dcf2 bgt.n 800f7a8 <_printf_i+0x210> + 800f7c2: e7eb b.n 800f79c <_printf_i+0x204> + 800f7c4: 2500 movs r5, #0 + 800f7c6: f104 0619 add.w r6, r4, #25 + 800f7ca: e7f5 b.n 800f7b8 <_printf_i+0x220> + 800f7cc: 08010652 .word 0x08010652 + 800f7d0: 08010663 .word 0x08010663 -0800f7ac : - 800f7ac: 4288 cmp r0, r1 - 800f7ae: b510 push {r4, lr} - 800f7b0: eb01 0402 add.w r4, r1, r2 - 800f7b4: d902 bls.n 800f7bc - 800f7b6: 4284 cmp r4, r0 - 800f7b8: 4623 mov r3, r4 - 800f7ba: d807 bhi.n 800f7cc - 800f7bc: 1e43 subs r3, r0, #1 - 800f7be: 42a1 cmp r1, r4 - 800f7c0: d008 beq.n 800f7d4 - 800f7c2: f811 2b01 ldrb.w r2, [r1], #1 - 800f7c6: f803 2f01 strb.w r2, [r3, #1]! - 800f7ca: e7f8 b.n 800f7be - 800f7cc: 4402 add r2, r0 - 800f7ce: 4601 mov r1, r0 - 800f7d0: 428a cmp r2, r1 - 800f7d2: d100 bne.n 800f7d6 - 800f7d4: bd10 pop {r4, pc} - 800f7d6: f813 4d01 ldrb.w r4, [r3, #-1]! - 800f7da: f802 4d01 strb.w r4, [r2, #-1]! - 800f7de: e7f7 b.n 800f7d0 +0800f7d4 : + 800f7d4: 4288 cmp r0, r1 + 800f7d6: b510 push {r4, lr} + 800f7d8: eb01 0402 add.w r4, r1, r2 + 800f7dc: d902 bls.n 800f7e4 + 800f7de: 4284 cmp r4, r0 + 800f7e0: 4623 mov r3, r4 + 800f7e2: d807 bhi.n 800f7f4 + 800f7e4: 1e43 subs r3, r0, #1 + 800f7e6: 42a1 cmp r1, r4 + 800f7e8: d008 beq.n 800f7fc + 800f7ea: f811 2b01 ldrb.w r2, [r1], #1 + 800f7ee: f803 2f01 strb.w r2, [r3, #1]! + 800f7f2: e7f8 b.n 800f7e6 + 800f7f4: 4402 add r2, r0 + 800f7f6: 4601 mov r1, r0 + 800f7f8: 428a cmp r2, r1 + 800f7fa: d100 bne.n 800f7fe + 800f7fc: bd10 pop {r4, pc} + 800f7fe: f813 4d01 ldrb.w r4, [r3, #-1]! + 800f802: f802 4d01 strb.w r4, [r2, #-1]! + 800f806: e7f7 b.n 800f7f8 -0800f7e0 <_sbrk_r>: - 800f7e0: b538 push {r3, r4, r5, lr} - 800f7e2: 4d06 ldr r5, [pc, #24] @ (800f7fc <_sbrk_r+0x1c>) - 800f7e4: 2300 movs r3, #0 - 800f7e6: 4604 mov r4, r0 - 800f7e8: 4608 mov r0, r1 - 800f7ea: 602b str r3, [r5, #0] - 800f7ec: f7f1 faba bl 8000d64 <_sbrk> - 800f7f0: 1c43 adds r3, r0, #1 - 800f7f2: d102 bne.n 800f7fa <_sbrk_r+0x1a> - 800f7f4: 682b ldr r3, [r5, #0] - 800f7f6: b103 cbz r3, 800f7fa <_sbrk_r+0x1a> - 800f7f8: 6023 str r3, [r4, #0] - 800f7fa: bd38 pop {r3, r4, r5, pc} - 800f7fc: 20001084 .word 0x20001084 +0800f808 <_sbrk_r>: + 800f808: b538 push {r3, r4, r5, lr} + 800f80a: 4d06 ldr r5, [pc, #24] @ (800f824 <_sbrk_r+0x1c>) + 800f80c: 2300 movs r3, #0 + 800f80e: 4604 mov r4, r0 + 800f810: 4608 mov r0, r1 + 800f812: 602b str r3, [r5, #0] + 800f814: f7f1 faa6 bl 8000d64 <_sbrk> + 800f818: 1c43 adds r3, r0, #1 + 800f81a: d102 bne.n 800f822 <_sbrk_r+0x1a> + 800f81c: 682b ldr r3, [r5, #0] + 800f81e: b103 cbz r3, 800f822 <_sbrk_r+0x1a> + 800f820: 6023 str r3, [r4, #0] + 800f822: bd38 pop {r3, r4, r5, pc} + 800f824: 200010bc .word 0x200010bc -0800f800 <_realloc_r>: - 800f800: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 800f804: 4607 mov r7, r0 - 800f806: 4614 mov r4, r2 - 800f808: 460d mov r5, r1 - 800f80a: b921 cbnz r1, 800f816 <_realloc_r+0x16> - 800f80c: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 800f810: 4611 mov r1, r2 - 800f812: f7ff bc5b b.w 800f0cc <_malloc_r> - 800f816: b92a cbnz r2, 800f824 <_realloc_r+0x24> - 800f818: f7ff fbec bl 800eff4 <_free_r> - 800f81c: 4625 mov r5, r4 - 800f81e: 4628 mov r0, r5 - 800f820: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 800f824: f000 f81a bl 800f85c <_malloc_usable_size_r> - 800f828: 4284 cmp r4, r0 - 800f82a: 4606 mov r6, r0 - 800f82c: d802 bhi.n 800f834 <_realloc_r+0x34> - 800f82e: ebb4 0f50 cmp.w r4, r0, lsr #1 - 800f832: d8f4 bhi.n 800f81e <_realloc_r+0x1e> - 800f834: 4621 mov r1, r4 - 800f836: 4638 mov r0, r7 - 800f838: f7ff fc48 bl 800f0cc <_malloc_r> - 800f83c: 4680 mov r8, r0 - 800f83e: b908 cbnz r0, 800f844 <_realloc_r+0x44> - 800f840: 4645 mov r5, r8 - 800f842: e7ec b.n 800f81e <_realloc_r+0x1e> - 800f844: 42b4 cmp r4, r6 - 800f846: 4622 mov r2, r4 - 800f848: 4629 mov r1, r5 - 800f84a: bf28 it cs - 800f84c: 4632 movcs r2, r6 - 800f84e: f7ff fbc3 bl 800efd8 - 800f852: 4629 mov r1, r5 - 800f854: 4638 mov r0, r7 - 800f856: f7ff fbcd bl 800eff4 <_free_r> - 800f85a: e7f1 b.n 800f840 <_realloc_r+0x40> +0800f828 <_realloc_r>: + 800f828: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 800f82c: 4607 mov r7, r0 + 800f82e: 4614 mov r4, r2 + 800f830: 460d mov r5, r1 + 800f832: b921 cbnz r1, 800f83e <_realloc_r+0x16> + 800f834: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 800f838: 4611 mov r1, r2 + 800f83a: f7ff bc5b b.w 800f0f4 <_malloc_r> + 800f83e: b92a cbnz r2, 800f84c <_realloc_r+0x24> + 800f840: f7ff fbec bl 800f01c <_free_r> + 800f844: 4625 mov r5, r4 + 800f846: 4628 mov r0, r5 + 800f848: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 800f84c: f000 f81a bl 800f884 <_malloc_usable_size_r> + 800f850: 4284 cmp r4, r0 + 800f852: 4606 mov r6, r0 + 800f854: d802 bhi.n 800f85c <_realloc_r+0x34> + 800f856: ebb4 0f50 cmp.w r4, r0, lsr #1 + 800f85a: d8f4 bhi.n 800f846 <_realloc_r+0x1e> + 800f85c: 4621 mov r1, r4 + 800f85e: 4638 mov r0, r7 + 800f860: f7ff fc48 bl 800f0f4 <_malloc_r> + 800f864: 4680 mov r8, r0 + 800f866: b908 cbnz r0, 800f86c <_realloc_r+0x44> + 800f868: 4645 mov r5, r8 + 800f86a: e7ec b.n 800f846 <_realloc_r+0x1e> + 800f86c: 42b4 cmp r4, r6 + 800f86e: 4622 mov r2, r4 + 800f870: 4629 mov r1, r5 + 800f872: bf28 it cs + 800f874: 4632 movcs r2, r6 + 800f876: f7ff fbc3 bl 800f000 + 800f87a: 4629 mov r1, r5 + 800f87c: 4638 mov r0, r7 + 800f87e: f7ff fbcd bl 800f01c <_free_r> + 800f882: e7f1 b.n 800f868 <_realloc_r+0x40> -0800f85c <_malloc_usable_size_r>: - 800f85c: f851 3c04 ldr.w r3, [r1, #-4] - 800f860: 1f18 subs r0, r3, #4 - 800f862: 2b00 cmp r3, #0 - 800f864: bfbc itt lt - 800f866: 580b ldrlt r3, [r1, r0] - 800f868: 18c0 addlt r0, r0, r3 - 800f86a: 4770 bx lr +0800f884 <_malloc_usable_size_r>: + 800f884: f851 3c04 ldr.w r3, [r1, #-4] + 800f888: 1f18 subs r0, r3, #4 + 800f88a: 2b00 cmp r3, #0 + 800f88c: bfbc itt lt + 800f88e: 580b ldrlt r3, [r1, r0] + 800f890: 18c0 addlt r0, r0, r3 + 800f892: 4770 bx lr -0800f86c <_init>: - 800f86c: b5f8 push {r3, r4, r5, r6, r7, lr} - 800f86e: bf00 nop - 800f870: bcf8 pop {r3, r4, r5, r6, r7} - 800f872: bc08 pop {r3} - 800f874: 469e mov lr, r3 - 800f876: 4770 bx lr +0800f894 <_init>: + 800f894: b5f8 push {r3, r4, r5, r6, r7, lr} + 800f896: bf00 nop + 800f898: bcf8 pop {r3, r4, r5, r6, r7} + 800f89a: bc08 pop {r3} + 800f89c: 469e mov lr, r3 + 800f89e: 4770 bx lr -0800f878 <_fini>: - 800f878: b5f8 push {r3, r4, r5, r6, r7, lr} - 800f87a: bf00 nop - 800f87c: bcf8 pop {r3, r4, r5, r6, r7} - 800f87e: bc08 pop {r3} - 800f880: 469e mov lr, r3 - 800f882: 4770 bx lr +0800f8a0 <_fini>: + 800f8a0: b5f8 push {r3, r4, r5, r6, r7, lr} + 800f8a2: bf00 nop + 800f8a4: bcf8 pop {r3, r4, r5, r6, r7} + 800f8a6: bc08 pop {r3} + 800f8a8: 469e mov lr, r3 + 800f8aa: 4770 bx lr diff --git a/Debug/suffix.map b/Debug/suffix.map index b86243e..d332eb0 100644 --- a/Debug/suffix.map +++ b/Debug/suffix.map @@ -5843,6 +5843,7 @@ Discarded input sections .group 0x00000000 0xc ./SubGHz_Phy/App/subghz_phy_app.o .group 0x00000000 0xc ./SubGHz_Phy/App/subghz_phy_app.o .group 0x00000000 0xc ./SubGHz_Phy/App/subghz_phy_app.o + .group 0x00000000 0xc ./SubGHz_Phy/App/subghz_phy_app.o .text 0x00000000 0x0 ./SubGHz_Phy/App/subghz_phy_app.o .data 0x00000000 0x0 ./SubGHz_Phy/App/subghz_phy_app.o .bss 0x00000000 0x0 ./SubGHz_Phy/App/subghz_phy_app.o @@ -5925,6 +5926,7 @@ Discarded input sections .debug_macro 0x00000000 0x3c ./SubGHz_Phy/App/subghz_phy_app.o .debug_macro 0x00000000 0x20 ./SubGHz_Phy/App/subghz_phy_app.o .debug_macro 0x00000000 0xcc ./SubGHz_Phy/App/subghz_phy_app.o + .debug_macro 0x00000000 0x3a ./SubGHz_Phy/App/subghz_phy_app.o .debug_macro 0x00000000 0x1c ./SubGHz_Phy/App/subghz_phy_app.o .debug_macro 0x00000000 0x16 ./SubGHz_Phy/App/subghz_phy_app.o .debug_macro 0x00000000 0x146 ./SubGHz_Phy/App/subghz_phy_app.o @@ -7212,7 +7214,7 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g 0x08000000 g_pfnVectors 0x08000138 . = ALIGN (0x4) -.text 0x08000140 0xf744 +.text 0x08000140 0xf76c 0x08000140 . = ALIGN (0x4) *(.text) .text 0x08000140 0x40 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o @@ -8414,431 +8416,435 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g 0x0800c22c 0x14 ./SubGHz_Phy/App/app_subghz_phy.o 0x0800c22c MX_SubGHz_Phy_Process .text.SubghzApp_Init - 0x0800c240 0xa4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c240 0x120 ./SubGHz_Phy/App/subghz_phy_app.o 0x0800c240 SubghzApp_Init .text.SubghzApp_Process - 0x0800c2e4 0x1c ./SubGHz_Phy/App/subghz_phy_app.o - 0x0800c2e4 SubghzApp_Process + 0x0800c360 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c360 SubghzApp_Process .text.App_ProcessRadioEvents - 0x0800c300 0x130 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c378 0x130 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ProcessUartPacketizer - 0x0800c430 0x58 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c4a8 0x58 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ProcessEscape - 0x0800c488 0xa0 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c500 0xa0 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_StartNextTxIfPossible - 0x0800c528 0x78 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c5a0 0x78 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ApplyConfig - 0x0800c5a0 0x34 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c618 0x34 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_RadioApplyConfig - 0x0800c5d4 0x28 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c64c 0x28 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_RadioConfigureRx - 0x0800c5fc 0xa8 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c674 0xa8 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_RadioConfigureTx - 0x0800c6a4 0x98 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c71c 0x98 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_RadioEnterRx - 0x0800c73c 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c7b4 0x18 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_EnterConfigMode - 0x0800c754 0x60 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c7cc 0x60 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ExitConfigMode - 0x0800c7b4 0x34 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c82c 0x34 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ResetDataPath - 0x0800c7e8 0x44 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c860 0x44 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_DataModeFeedByte - 0x0800c82c 0x84 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c8a4 0x84 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_DataModeFlushBuilder - 0x0800c8b0 0x40 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c928 0x40 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_QueuePush - 0x0800c8f0 0x8c ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c968 0x8c ./SubGHz_Phy/App/subghz_phy_app.o .text.App_QueuePop - 0x0800c97c 0x3c ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800c9f4 0x3c ./SubGHz_Phy/App/subghz_phy_app.o .text.UartRxByteCallback - 0x0800c9b8 0x140 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800ca30 0x140 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ConfigFeedByte - 0x0800caf8 0xc4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800cb70 0xc4 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ConfigExecuteLine - 0x0800cbbc 0x424 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800cc34 0x424 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_PrintConfigPrompt - 0x0800cfe0 0x20 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d058 0x20 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_PrintHelp - 0x0800d000 0xa0 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d078 0xa0 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_PrintStatus - 0x0800d0a0 0x174 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d118 0x174 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_Printf - 0x0800d214 0x56 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x0800d26a 0x2 + 0x0800d28c 0x56 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x0800d2e2 0x2 .text.App_Write - 0x0800d26c 0x34 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d2e4 0x34 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ReconfigureUart - 0x0800d2a0 0x70 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d318 0x70 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_ParseHexSyncWord - 0x0800d310 0xec ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d388 0xec ./SubGHz_Phy/App/subghz_phy_app.o .text.App_SkipSpaces - 0x0800d3fc 0x44 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d474 0x44 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_LedTxPulse - 0x0800d440 0x34 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d4b8 0x30 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_LedRxPulse - 0x0800d474 0x34 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d4e8 0x30 ./SubGHz_Phy/App/subghz_phy_app.o .text.App_LedErrPulse - 0x0800d4a8 0x34 ./SubGHz_Phy/App/subghz_phy_app.o - .text.App_ProcessLeds - 0x0800d4dc 0xa4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d518 0x30 ./SubGHz_Phy/App/subghz_phy_app.o .text.OnTxDone - 0x0800d580 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d548 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + .text.App_LedTxOff + 0x0800d560 0x20 ./SubGHz_Phy/App/subghz_phy_app.o + .text.App_LedRxOff + 0x0800d580 0x20 ./SubGHz_Phy/App/subghz_phy_app.o + .text.App_LedErrOff + 0x0800d5a0 0x20 ./SubGHz_Phy/App/subghz_phy_app.o .text.OnRxDone - 0x0800d598 0x64 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d5c0 0x64 ./SubGHz_Phy/App/subghz_phy_app.o .text.OnTxTimeout - 0x0800d5fc 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d624 0x18 ./SubGHz_Phy/App/subghz_phy_app.o .text.OnRxTimeout - 0x0800d614 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d63c 0x18 ./SubGHz_Phy/App/subghz_phy_app.o .text.OnRxError - 0x0800d62c 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + 0x0800d654 0x18 ./SubGHz_Phy/App/subghz_phy_app.o .text.Config_LoadDefaults - 0x0800d644 0x68 ./SubGHz_Phy/App/config/config_defaults.o - 0x0800d644 Config_LoadDefaults + 0x0800d66c 0x68 ./SubGHz_Phy/App/config/config_defaults.o + 0x0800d66c Config_LoadDefaults .text.Config_CalcChecksum - 0x0800d6ac 0x3e ./SubGHz_Phy/App/config/config_store.o - *fill* 0x0800d6ea 0x2 + 0x0800d6d4 0x3e ./SubGHz_Phy/App/config/config_store.o + *fill* 0x0800d712 0x2 .text.Config_Load - 0x0800d6ec 0x60 ./SubGHz_Phy/App/config/config_store.o - 0x0800d6ec Config_Load + 0x0800d714 0x60 ./SubGHz_Phy/App/config/config_store.o + 0x0800d714 Config_Load .text.Config_Save - 0x0800d74c 0xe8 ./SubGHz_Phy/App/config/config_store.o - 0x0800d74c Config_Save + 0x0800d774 0xe8 ./SubGHz_Phy/App/config/config_store.o + 0x0800d774 Config_Save .text.RBI_Init - 0x0800d834 0xe ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d834 RBI_Init + 0x0800d85c 0xe ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d85c RBI_Init .text.RBI_ConfigRFSwitch - 0x0800d842 0x1c ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d842 RBI_ConfigRFSwitch + 0x0800d86a 0x1c ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d86a RBI_ConfigRFSwitch .text.RBI_GetTxConfig - 0x0800d85e 0xe ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d85e RBI_GetTxConfig + 0x0800d886 0xe ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d886 RBI_GetTxConfig .text.RBI_IsTCXO - 0x0800d86c 0xe ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d86c RBI_IsTCXO + 0x0800d894 0xe ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d894 RBI_IsTCXO .text.RBI_IsDCDC - 0x0800d87a 0xe ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d87a RBI_IsDCDC + 0x0800d8a2 0xe ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d8a2 RBI_IsDCDC .text.RBI_GetRFOMaxPowerConfig - 0x0800d888 0x1c ./SubGHz_Phy/Target/radio_board_if.o - 0x0800d888 RBI_GetRFOMaxPowerConfig + 0x0800d8b0 0x1c ./SubGHz_Phy/Target/radio_board_if.o + 0x0800d8b0 RBI_GetRFOMaxPowerConfig .text.UTIL_LPM_Init - 0x0800d8a4 0x20 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - 0x0800d8a4 UTIL_LPM_Init + 0x0800d8cc 0x20 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x0800d8cc UTIL_LPM_Init .text.UTIL_LPM_SetStopMode - 0x0800d8c4 0x60 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - 0x0800d8c4 UTIL_LPM_SetStopMode + 0x0800d8ec 0x60 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x0800d8ec UTIL_LPM_SetStopMode .text.UTIL_LPM_SetOffMode - 0x0800d924 0x60 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - 0x0800d924 UTIL_LPM_SetOffMode + 0x0800d94c 0x60 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x0800d94c UTIL_LPM_SetOffMode .text.UTIL_LPM_EnterLowPower - 0x0800d984 0x6c ./Utilities/lpm/tiny_lpm/stm32_lpm.o - 0x0800d984 UTIL_LPM_EnterLowPower + 0x0800d9ac 0x6c ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x0800d9ac UTIL_LPM_EnterLowPower .text.UTIL_MEM_cpy_8 - 0x0800d9f0 0x3e ./Utilities/misc/stm32_mem.o - 0x0800d9f0 UTIL_MEM_cpy_8 + 0x0800da18 0x3e ./Utilities/misc/stm32_mem.o + 0x0800da18 UTIL_MEM_cpy_8 .text.UTIL_MEM_set_8 - 0x0800da2e 0x36 ./Utilities/misc/stm32_mem.o - 0x0800da2e UTIL_MEM_set_8 + 0x0800da56 0x36 ./Utilities/misc/stm32_mem.o + 0x0800da56 UTIL_MEM_set_8 .text.SysTimeAdd - 0x0800da64 0x72 ./Utilities/misc/stm32_systime.o - 0x0800da64 SysTimeAdd - *fill* 0x0800dad6 0x2 + 0x0800da8c 0x72 ./Utilities/misc/stm32_systime.o + 0x0800da8c SysTimeAdd + *fill* 0x0800dafe 0x2 .text.SysTimeGet - 0x0800dad8 0x70 ./Utilities/misc/stm32_systime.o - 0x0800dad8 SysTimeGet + 0x0800db00 0x70 ./Utilities/misc/stm32_systime.o + 0x0800db00 SysTimeGet .text.ee_skip_atoi - 0x0800db48 0x4c ./Utilities/misc/stm32_tiny_vsnprintf.o + 0x0800db70 0x4c ./Utilities/misc/stm32_tiny_vsnprintf.o .text.ee_number - 0x0800db94 0x1dc ./Utilities/misc/stm32_tiny_vsnprintf.o + 0x0800dbbc 0x1dc ./Utilities/misc/stm32_tiny_vsnprintf.o .text.tiny_vsnprintf_like - 0x0800dd70 0x2a4 ./Utilities/misc/stm32_tiny_vsnprintf.o - 0x0800dd70 tiny_vsnprintf_like + 0x0800dd98 0x2a4 ./Utilities/misc/stm32_tiny_vsnprintf.o + 0x0800dd98 tiny_vsnprintf_like .text.UTIL_SEQ_Run - 0x0800e014 0x1f8 ./Utilities/sequencer/stm32_seq.o - 0x0800e014 UTIL_SEQ_Run + 0x0800e03c 0x1f8 ./Utilities/sequencer/stm32_seq.o + 0x0800e03c UTIL_SEQ_Run .text.UTIL_SEQ_PreIdle - 0x0800e20c 0xc ./Utilities/sequencer/stm32_seq.o - 0x0800e20c UTIL_SEQ_PreIdle + 0x0800e234 0xc ./Utilities/sequencer/stm32_seq.o + 0x0800e234 UTIL_SEQ_PreIdle .text.UTIL_SEQ_PostIdle - 0x0800e218 0xc ./Utilities/sequencer/stm32_seq.o - 0x0800e218 UTIL_SEQ_PostIdle + 0x0800e240 0xc ./Utilities/sequencer/stm32_seq.o + 0x0800e240 UTIL_SEQ_PostIdle .text.SEQ_BitPosition - 0x0800e224 0x70 ./Utilities/sequencer/stm32_seq.o - 0x0800e224 SEQ_BitPosition + 0x0800e24c 0x70 ./Utilities/sequencer/stm32_seq.o + 0x0800e24c SEQ_BitPosition .text.UTIL_TIMER_Init - 0x0800e294 0x20 ./Utilities/timer/stm32_timer.o - 0x0800e294 UTIL_TIMER_Init + 0x0800e2bc 0x20 ./Utilities/timer/stm32_timer.o + 0x0800e2bc UTIL_TIMER_Init .text.UTIL_TIMER_Create - 0x0800e2b4 0x6c ./Utilities/timer/stm32_timer.o - 0x0800e2b4 UTIL_TIMER_Create + 0x0800e2dc 0x6c ./Utilities/timer/stm32_timer.o + 0x0800e2dc UTIL_TIMER_Create .text.UTIL_TIMER_Start - 0x0800e320 0xdc ./Utilities/timer/stm32_timer.o - 0x0800e320 UTIL_TIMER_Start + 0x0800e348 0xdc ./Utilities/timer/stm32_timer.o + 0x0800e348 UTIL_TIMER_Start .text.UTIL_TIMER_Stop - 0x0800e3fc 0xe0 ./Utilities/timer/stm32_timer.o - 0x0800e3fc UTIL_TIMER_Stop + 0x0800e424 0xe0 ./Utilities/timer/stm32_timer.o + 0x0800e424 UTIL_TIMER_Stop .text.UTIL_TIMER_SetPeriod - 0x0800e4dc 0x54 ./Utilities/timer/stm32_timer.o - 0x0800e4dc UTIL_TIMER_SetPeriod + 0x0800e504 0x54 ./Utilities/timer/stm32_timer.o + 0x0800e504 UTIL_TIMER_SetPeriod .text.UTIL_TIMER_IRQ_Handler - 0x0800e530 0x100 ./Utilities/timer/stm32_timer.o - 0x0800e530 UTIL_TIMER_IRQ_Handler + 0x0800e558 0x100 ./Utilities/timer/stm32_timer.o + 0x0800e558 UTIL_TIMER_IRQ_Handler .text.UTIL_TIMER_GetCurrentTime - 0x0800e630 0x24 ./Utilities/timer/stm32_timer.o - 0x0800e630 UTIL_TIMER_GetCurrentTime + 0x0800e658 0x24 ./Utilities/timer/stm32_timer.o + 0x0800e658 UTIL_TIMER_GetCurrentTime .text.UTIL_TIMER_GetElapsedTime - 0x0800e654 0x38 ./Utilities/timer/stm32_timer.o - 0x0800e654 UTIL_TIMER_GetElapsedTime + 0x0800e67c 0x38 ./Utilities/timer/stm32_timer.o + 0x0800e67c UTIL_TIMER_GetElapsedTime .text.TimerExists - 0x0800e68c 0x38 ./Utilities/timer/stm32_timer.o - 0x0800e68c TimerExists + 0x0800e6b4 0x38 ./Utilities/timer/stm32_timer.o + 0x0800e6b4 TimerExists .text.TimerSetTimeout - 0x0800e6c4 0x54 ./Utilities/timer/stm32_timer.o - 0x0800e6c4 TimerSetTimeout + 0x0800e6ec 0x54 ./Utilities/timer/stm32_timer.o + 0x0800e6ec TimerSetTimeout .text.TimerInsertTimer - 0x0800e718 0x60 ./Utilities/timer/stm32_timer.o - 0x0800e718 TimerInsertTimer + 0x0800e740 0x60 ./Utilities/timer/stm32_timer.o + 0x0800e740 TimerInsertTimer .text.TimerInsertNewHeadTimer - 0x0800e778 0x3c ./Utilities/timer/stm32_timer.o - 0x0800e778 TimerInsertNewHeadTimer + 0x0800e7a0 0x3c ./Utilities/timer/stm32_timer.o + 0x0800e7a0 TimerInsertNewHeadTimer .text.UTIL_ADV_TRACE_Init - 0x0800e7b4 0x38 ./Utilities/trace/adv_trace/stm32_adv_trace.o - 0x0800e7b4 UTIL_ADV_TRACE_Init + 0x0800e7dc 0x38 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800e7dc UTIL_ADV_TRACE_Init .text.UTIL_ADV_TRACE_COND_FSend - 0x0800e7ec 0x100 ./Utilities/trace/adv_trace/stm32_adv_trace.o - 0x0800e7ec UTIL_ADV_TRACE_COND_FSend + 0x0800e814 0x100 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800e814 UTIL_ADV_TRACE_COND_FSend .text.UTIL_ADV_TRACE_RegisterTimeStampFunction - 0x0800e8ec 0x1c ./Utilities/trace/adv_trace/stm32_adv_trace.o - 0x0800e8ec UTIL_ADV_TRACE_RegisterTimeStampFunction + 0x0800e914 0x1c ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800e914 UTIL_ADV_TRACE_RegisterTimeStampFunction .text.UTIL_ADV_TRACE_SetVerboseLevel - 0x0800e908 0x20 ./Utilities/trace/adv_trace/stm32_adv_trace.o - 0x0800e908 UTIL_ADV_TRACE_SetVerboseLevel + 0x0800e930 0x20 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800e930 UTIL_ADV_TRACE_SetVerboseLevel .text.TRACE_Send - 0x0800e928 0x108 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800e950 0x108 ./Utilities/trace/adv_trace/stm32_adv_trace.o .text.TRACE_TxCpltCallback - 0x0800ea30 0x118 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800ea58 0x118 ./Utilities/trace/adv_trace/stm32_adv_trace.o .text.TRACE_AllocateBufer - 0x0800eb48 0xfc ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800eb70 0xfc ./Utilities/trace/adv_trace/stm32_adv_trace.o .text.TRACE_Lock - 0x0800ec44 0x3c ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800ec6c 0x3c ./Utilities/trace/adv_trace/stm32_adv_trace.o .text.TRACE_UnLock - 0x0800ec80 0x3c ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800eca8 0x3c ./Utilities/trace/adv_trace/stm32_adv_trace.o .text.TRACE_IsLocked - 0x0800ecbc 0x20 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x0800ece4 0x20 ./Utilities/trace/adv_trace/stm32_adv_trace.o .text._strtol_l.isra.0 - 0x0800ecdc 0xf4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) - .text.strtol 0x0800edd0 0x14 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) - 0x0800edd0 strtol + 0x0800ed04 0xf4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) + .text.strtol 0x0800edf8 0x14 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) + 0x0800edf8 strtol .text._strtoul_l.isra.0 - 0x0800ede4 0xdc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) - .text.strtoul 0x0800eec0 0x14 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) - 0x0800eec0 strtoul + 0x0800ee0c 0xdc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) + .text.strtoul 0x0800eee8 0x14 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) + 0x0800eee8 strtoul .text._vsnprintf_r - 0x0800eed4 0x5c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) - 0x0800eed4 _vsnprintf_r - 0x0800eed4 _vsniprintf_r + 0x0800eefc 0x5c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) + 0x0800eefc _vsnprintf_r + 0x0800eefc _vsniprintf_r .text.vsnprintf - 0x0800ef30 0x1c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) - 0x0800ef30 vsnprintf - 0x0800ef30 vsniprintf - .text.memset 0x0800ef4c 0x10 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memset.o) - 0x0800ef4c memset - .text.strncmp 0x0800ef5c 0x24 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strncmp.o) - 0x0800ef5c strncmp - .text.__errno 0x0800ef80 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-errno.o) - 0x0800ef80 __errno + 0x0800ef58 0x1c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) + 0x0800ef58 vsnprintf + 0x0800ef58 vsniprintf + .text.memset 0x0800ef74 0x10 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memset.o) + 0x0800ef74 memset + .text.strncmp 0x0800ef84 0x24 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strncmp.o) + 0x0800ef84 strncmp + .text.__errno 0x0800efa8 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-errno.o) + 0x0800efa8 __errno .text.__libc_init_array - 0x0800ef8c 0x48 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-init.o) - 0x0800ef8c __libc_init_array + 0x0800efb4 0x48 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-init.o) + 0x0800efb4 __libc_init_array .text.__retarget_lock_acquire_recursive - 0x0800efd4 0x2 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) - 0x0800efd4 __retarget_lock_acquire_recursive + 0x0800effc 0x2 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) + 0x0800effc __retarget_lock_acquire_recursive .text.__retarget_lock_release_recursive - 0x0800efd6 0x2 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) - 0x0800efd6 __retarget_lock_release_recursive - .text.memcpy 0x0800efd8 0x1c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memcpy-stub.o) - 0x0800efd8 memcpy - .text._free_r 0x0800eff4 0x94 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-freer.o) - 0x0800eff4 _free_r + 0x0800effe 0x2 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) + 0x0800effe __retarget_lock_release_recursive + .text.memcpy 0x0800f000 0x1c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memcpy-stub.o) + 0x0800f000 memcpy + .text._free_r 0x0800f01c 0x94 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-freer.o) + 0x0800f01c _free_r .text.sbrk_aligned - 0x0800f088 0x44 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) + 0x0800f0b0 0x44 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) .text._malloc_r - 0x0800f0cc 0x100 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) - 0x0800f0cc _malloc_r + 0x0800f0f4 0x100 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) + 0x0800f0f4 _malloc_r .text.__malloc_lock - 0x0800f1cc 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) - 0x0800f1cc __malloc_lock + 0x0800f1f4 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) + 0x0800f1f4 __malloc_lock .text.__malloc_unlock - 0x0800f1d8 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) - 0x0800f1d8 __malloc_unlock + 0x0800f200 0xc /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) + 0x0800f200 __malloc_unlock .text.__ssputs_r - 0x0800f1e4 0xb6 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) - 0x0800f1e4 __ssputs_r - *fill* 0x0800f29a 0x2 + 0x0800f20c 0xb6 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) + 0x0800f20c __ssputs_r + *fill* 0x0800f2c2 0x2 .text._svfprintf_r - 0x0800f29c 0x1f8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) - 0x0800f29c _svfprintf_r - 0x0800f29c _svfiprintf_r + 0x0800f2c4 0x1f8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) + 0x0800f2c4 _svfprintf_r + 0x0800f2c4 _svfiprintf_r .text._printf_common - 0x0800f494 0xda /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800f494 _printf_common - *fill* 0x0800f56e 0x2 + 0x0800f4bc 0xda /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800f4bc _printf_common + *fill* 0x0800f596 0x2 .text._printf_i - 0x0800f570 0x23c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) - 0x0800f570 _printf_i - .text.memmove 0x0800f7ac 0x34 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memmove.o) - 0x0800f7ac memmove - .text._sbrk_r 0x0800f7e0 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-sbrkr.o) - 0x0800f7e0 _sbrk_r + 0x0800f598 0x23c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x0800f598 _printf_i + .text.memmove 0x0800f7d4 0x34 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memmove.o) + 0x0800f7d4 memmove + .text._sbrk_r 0x0800f808 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-sbrkr.o) + 0x0800f808 _sbrk_r .text._realloc_r - 0x0800f800 0x5c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reallocr.o) - 0x0800f800 _realloc_r + 0x0800f828 0x5c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reallocr.o) + 0x0800f828 _realloc_r .text._malloc_usable_size_r - 0x0800f85c 0x10 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-msizer.o) - 0x0800f85c _malloc_usable_size_r + 0x0800f884 0x10 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-msizer.o) + 0x0800f884 _malloc_usable_size_r *(.glue_7) - .glue_7 0x0800f86c 0x0 linker stubs + .glue_7 0x0800f894 0x0 linker stubs *(.glue_7t) - .glue_7t 0x0800f86c 0x0 linker stubs + .glue_7t 0x0800f894 0x0 linker stubs *(.eh_frame) - .eh_frame 0x0800f86c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o + .eh_frame 0x0800f894 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o *(.init) - .init 0x0800f86c 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crti.o - 0x0800f86c _init - .init 0x0800f870 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtn.o + .init 0x0800f894 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crti.o + 0x0800f894 _init + .init 0x0800f898 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtn.o *(.fini) - .fini 0x0800f878 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crti.o - 0x0800f878 _fini - .fini 0x0800f87c 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtn.o - 0x0800f884 . = ALIGN (0x4) - 0x0800f884 _etext = . + .fini 0x0800f8a0 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crti.o + 0x0800f8a0 _fini + .fini 0x0800f8a4 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtn.o + 0x0800f8ac . = ALIGN (0x4) + 0x0800f8ac _etext = . -.vfp11_veneer 0x0800f884 0x0 - .vfp11_veneer 0x0800f884 0x0 linker stubs +.vfp11_veneer 0x0800f8ac 0x0 + .vfp11_veneer 0x0800f8ac 0x0 linker stubs -.v4_bx 0x0800f884 0x0 - .v4_bx 0x0800f884 0x0 linker stubs +.v4_bx 0x0800f8ac 0x0 + .v4_bx 0x0800f8ac 0x0 linker stubs -.iplt 0x0800f884 0x0 - .iplt 0x0800f884 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o +.iplt 0x0800f8ac 0x0 + .iplt 0x0800f8ac 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o -.rodata 0x0800f884 0xdc8 - 0x0800f884 . = ALIGN (0x4) +.rodata 0x0800f8ac 0xdc8 + 0x0800f8ac . = ALIGN (0x4) *(.rodata) - .rodata 0x0800f884 0x9 ./Core/Src/sys_app.o - *fill* 0x0800f88d 0x3 - .rodata 0x0800f890 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o - .rodata 0x0800f8ac 0x7c ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o - .rodata 0x0800f928 0x195 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o - *fill* 0x0800fabd 0x3 - .rodata 0x0800fac0 0x77a ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x0801023a 0x2 - .rodata 0x0801023c 0x57 ./Utilities/misc/stm32_tiny_vsnprintf.o + .rodata 0x0800f8ac 0x9 ./Core/Src/sys_app.o + *fill* 0x0800f8b5 0x3 + .rodata 0x0800f8b8 0x1c ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .rodata 0x0800f8d4 0x7c ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o + .rodata 0x0800f950 0x195 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o + *fill* 0x0800fae5 0x3 + .rodata 0x0800fae8 0x77a ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x08010262 0x2 + .rodata 0x08010264 0x57 ./Utilities/misc/stm32_tiny_vsnprintf.o *(.rodata*) - *fill* 0x08010293 0x1 + *fill* 0x080102bb 0x1 .rodata.UTIL_PowerDriver - 0x08010294 0x18 ./Core/Src/stm32_lpm_if.o - 0x08010294 UTIL_PowerDriver + 0x080102bc 0x18 ./Core/Src/stm32_lpm_if.o + 0x080102bc UTIL_PowerDriver .rodata.AHBPrescTable - 0x080102ac 0x40 ./Core/Src/system_stm32wlxx.o - 0x080102ac AHBPrescTable + 0x080102d4 0x40 ./Core/Src/system_stm32wlxx.o + 0x080102d4 AHBPrescTable .rodata.APBPrescTable - 0x080102ec 0x20 ./Core/Src/system_stm32wlxx.o - 0x080102ec APBPrescTable + 0x08010314 0x20 ./Core/Src/system_stm32wlxx.o + 0x08010314 APBPrescTable .rodata.MSIRangeTable - 0x0801030c 0x40 ./Core/Src/system_stm32wlxx.o - 0x0801030c MSIRangeTable + 0x08010334 0x40 ./Core/Src/system_stm32wlxx.o + 0x08010334 MSIRangeTable .rodata.UTIL_TimerDriver - 0x0801034c 0x2c ./Core/Src/timer_if.o - 0x0801034c UTIL_TimerDriver + 0x08010374 0x2c ./Core/Src/timer_if.o + 0x08010374 UTIL_TimerDriver .rodata.UTIL_SYSTIMDriver - 0x08010378 0x14 ./Core/Src/timer_if.o - 0x08010378 UTIL_SYSTIMDriver + 0x080103a0 0x14 ./Core/Src/timer_if.o + 0x080103a0 UTIL_SYSTIMDriver .rodata.UTIL_TraceDriver - 0x0801038c 0x10 ./Core/Src/usart_if.o - 0x0801038c UTIL_TraceDriver + 0x080103b4 0x10 ./Core/Src/usart_if.o + 0x080103b4 UTIL_TraceDriver .rodata.UARTPrescTable - 0x0801039c 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o - 0x0801039c UARTPrescTable + 0x080103c4 0x18 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + 0x080103c4 UARTPrescTable .rodata.numerator.1 - 0x080103b4 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + 0x080103dc 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o .rodata.denominator.0 - 0x080103bc 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o - .rodata.Radio 0x080103c4 0x8c ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o - 0x080103c4 Radio + 0x080103e4 0x8 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + .rodata.Radio 0x080103ec 0x8c ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o + 0x080103ec Radio .rodata.Bandwidths - 0x08010450 0x3 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o - 0x08010450 Bandwidths - *fill* 0x08010453 0x1 + 0x08010478 0x3 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o + 0x08010478 Bandwidths + *fill* 0x0801047b 0x1 .rodata.FskBandwidths - 0x08010454 0xb0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o + 0x0801047c 0xb0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o .rodata.default_syncword.0 - 0x08010504 0x3 ./SubGHz_Phy/App/config/config_defaults.o - *fill* 0x08010507 0x1 + 0x0801052c 0x3 ./SubGHz_Phy/App/config/config_defaults.o + *fill* 0x0801052f 0x1 .rodata.SEQ_clz_table_4bit - 0x08010508 0x10 ./Utilities/sequencer/stm32_seq.o - 0x08010508 SEQ_clz_table_4bit + 0x08010530 0x10 ./Utilities/sequencer/stm32_seq.o + 0x08010530 SEQ_clz_table_4bit .rodata._ctype_ - 0x08010518 0x101 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-ctype_.o) - 0x08010518 _ctype_ + 0x08010540 0x101 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-ctype_.o) + 0x08010540 _ctype_ .rodata._svfprintf_r.str1.1 - 0x08010619 0x33 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) + 0x08010641 0x33 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) 0x11 (size before relaxing) .rodata._printf_i.str1.1 - 0x0801064c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) + 0x08010674 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) 0x22 (size before relaxing) - 0x0801064c . = ALIGN (0x4) + 0x08010674 . = ALIGN (0x4) -.ARM.extab 0x0801064c 0x0 - 0x0801064c . = ALIGN (0x4) +.ARM.extab 0x08010674 0x0 + 0x08010674 . = ALIGN (0x4) *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x0801064c . = ALIGN (0x4) + 0x08010674 . = ALIGN (0x4) -.ARM 0x0801064c 0x8 - 0x0801064c . = ALIGN (0x4) - 0x0801064c __exidx_start = . +.ARM 0x08010674 0x8 + 0x08010674 . = ALIGN (0x4) + 0x08010674 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x0801064c 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strcmp.o) - .ARM.exidx 0x08010654 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strlen.o) + .ARM.exidx 0x08010674 0x8 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strcmp.o) + .ARM.exidx 0x0801067c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strlen.o) 0x8 (size before relaxing) - .ARM.exidx 0x08010654 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memchr.o) + .ARM.exidx 0x0801067c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memchr.o) 0x8 (size before relaxing) - .ARM.exidx 0x08010654 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_udivmoddi4.o) + .ARM.exidx 0x0801067c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_udivmoddi4.o) 0x8 (size before relaxing) - 0x08010654 __exidx_end = . - 0x08010654 . = ALIGN (0x4) + 0x0801067c __exidx_end = . + 0x0801067c . = ALIGN (0x4) -.preinit_array 0x08010654 0x0 - 0x08010654 . = ALIGN (0x4) - 0x08010654 PROVIDE (__preinit_array_start = .) +.preinit_array 0x0801067c 0x0 + 0x0801067c . = ALIGN (0x4) + 0x0801067c PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x08010654 PROVIDE (__preinit_array_end = .) - 0x08010654 . = ALIGN (0x4) + 0x0801067c PROVIDE (__preinit_array_end = .) + 0x0801067c . = ALIGN (0x4) -.init_array 0x08010654 0x4 - 0x08010654 . = ALIGN (0x4) - 0x08010654 PROVIDE (__init_array_start = .) +.init_array 0x0801067c 0x4 + 0x0801067c . = ALIGN (0x4) + 0x0801067c PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x08010654 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o - 0x08010658 PROVIDE (__init_array_end = .) - 0x08010658 . = ALIGN (0x4) + .init_array 0x0801067c 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o + 0x08010680 PROVIDE (__init_array_end = .) + 0x08010680 . = ALIGN (0x4) -.fini_array 0x08010658 0x4 - 0x08010658 . = ALIGN (0x4) +.fini_array 0x08010680 0x4 + 0x08010680 . = ALIGN (0x4) [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x08010658 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o + .fini_array 0x08010680 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x0801065c . = ALIGN (0x4) - 0x0801065c _sidata = LOADADDR (.data) + 0x08010684 . = ALIGN (0x4) + 0x08010684 _sidata = LOADADDR (.data) -.rel.dyn 0x0801065c 0x0 - .rel.iplt 0x0801065c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o +.rel.dyn 0x08010684 0x0 + .rel.iplt 0x08010684 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o -.data 0x20000000 0x6c load address 0x0801065c +.data 0x20000000 0x6c load address 0x08010684 0x20000000 . = ALIGN (0x4) 0x20000000 _sdata = . *(.data) @@ -8871,11 +8877,11 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g 0x2000006c . = ALIGN (0x4) 0x2000006c _edata = . -.igot.plt 0x2000006c 0x0 load address 0x080106c8 +.igot.plt 0x2000006c 0x0 load address 0x080106f0 .igot.plt 0x2000006c 0x0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/crtbegin.o 0x2000006c . = ALIGN (0x4) -.bss 0x2000006c 0x1028 load address 0x080106c8 +.bss 0x2000006c 0x1060 load address 0x080106f0 0x2000006c _sbss = . 0x2000006c __bss_start__ = _sbss *(.bss) @@ -8963,111 +8969,105 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .bss.g_last_rx_cfo 0x2000062c 0x1 ./SubGHz_Phy/App/subghz_phy_app.o *fill* 0x2000062d 0x3 - .bss.g_led_tx_until - 0x20000630 0x4 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_led_rx_until - 0x20000634 0x4 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_led_err_until - 0x20000638 0x4 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_led_tx_active - 0x2000063c 0x1 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_led_rx_active - 0x2000063d 0x1 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_led_err_active - 0x2000063e 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + .bss.g_led_tx_timer + 0x20000630 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + .bss.g_led_rx_timer + 0x20000648 0x18 ./SubGHz_Phy/App/subghz_phy_app.o + .bss.g_led_err_timer + 0x20000660 0x18 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_radio_busy - 0x2000063f 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000678 0x1 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_radio_needs_rx_restart - 0x20000640 0x1 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000641 0x3 + 0x20000679 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x2000067a 0x2 .bss.g_rx_payload - 0x20000644 0xdc ./SubGHz_Phy/App/subghz_phy_app.o + 0x2000067c 0xdc ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_rx_payload_len - 0x20000720 0x2 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000722 0x2 + 0x20000758 0x2 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x2000075a 0x2 .bss.g_tx_queue - 0x20000724 0x374 ./SubGHz_Phy/App/subghz_phy_app.o + 0x2000075c 0x374 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_tx_q_head - 0x20000a98 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000ad0 0x1 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_tx_q_tail - 0x20000a99 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000ad1 0x1 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_tx_q_count - 0x20000a9a 0x1 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000a9b 0x1 + 0x20000ad2 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x20000ad3 0x1 .bss.g_uart_build_buf - 0x20000a9c 0xdc ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000ad4 0xdc ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_uart_build_len - 0x20000b78 0x2 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000b7a 0x2 + 0x20000bb0 0x2 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x20000bb2 0x2 .bss.g_uart_last_data_tick - 0x20000b7c 0x4 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_escape 0x20000b80 0x10 ./SubGHz_Phy/App/subghz_phy_app.o - .bss.g_mode 0x20000b90 0x1 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000b91 0x3 + 0x20000bb4 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + .bss.g_escape 0x20000bb8 0x10 ./SubGHz_Phy/App/subghz_phy_app.o + .bss.g_mode 0x20000bc8 0x1 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x20000bc9 0x3 .bss.g_cfg_line - 0x20000b94 0x60 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000bcc 0x60 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_cfg_line_len - 0x20000bf4 0x2 ./SubGHz_Phy/App/subghz_phy_app.o - *fill* 0x20000bf6 0x2 + 0x20000c2c 0x2 ./SubGHz_Phy/App/subghz_phy_app.o + *fill* 0x20000c2e 0x2 .bss.g_stat_uart_packets_tx - 0x20000bf8 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000c30 0x4 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_stat_uart_bytes_tx - 0x20000bfc 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000c34 0x4 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_stat_radio_packets_rx - 0x20000c00 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000c38 0x4 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_stat_radio_bytes_rx - 0x20000c04 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000c3c 0x4 ./SubGHz_Phy/App/subghz_phy_app.o .bss.g_stat_queue_overflow - 0x20000c08 0x4 ./SubGHz_Phy/App/subghz_phy_app.o + 0x20000c40 0x4 ./SubGHz_Phy/App/subghz_phy_app.o .bss.StopModeDisable - 0x20000c0c 0x4 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x20000c44 0x4 ./Utilities/lpm/tiny_lpm/stm32_lpm.o .bss.OffModeDisable - 0x20000c10 0x4 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - .bss.TaskSet 0x20000c14 0x4 ./Utilities/sequencer/stm32_seq.o - .bss.EvtSet 0x20000c18 0x4 ./Utilities/sequencer/stm32_seq.o + 0x20000c48 0x4 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .bss.TaskSet 0x20000c4c 0x4 ./Utilities/sequencer/stm32_seq.o + .bss.EvtSet 0x20000c50 0x4 ./Utilities/sequencer/stm32_seq.o .bss.EvtWaited - 0x20000c1c 0x4 ./Utilities/sequencer/stm32_seq.o + 0x20000c54 0x4 ./Utilities/sequencer/stm32_seq.o .bss.CurrentTaskIdx - 0x20000c20 0x4 ./Utilities/sequencer/stm32_seq.o - .bss.TaskCb 0x20000c24 0x4 ./Utilities/sequencer/stm32_seq.o - .bss.TaskPrio 0x20000c28 0x8 ./Utilities/sequencer/stm32_seq.o + 0x20000c58 0x4 ./Utilities/sequencer/stm32_seq.o + .bss.TaskCb 0x20000c5c 0x4 ./Utilities/sequencer/stm32_seq.o + .bss.TaskPrio 0x20000c60 0x8 ./Utilities/sequencer/stm32_seq.o .bss.TimerListHead - 0x20000c30 0x4 ./Utilities/timer/stm32_timer.o + 0x20000c68 0x4 ./Utilities/timer/stm32_timer.o .bss.ADV_TRACE_Ctx - 0x20000c34 0x18 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x20000c6c 0x18 ./Utilities/trace/adv_trace/stm32_adv_trace.o .bss.ADV_TRACE_Buffer - 0x20000c4c 0x200 ./Utilities/trace/adv_trace/stm32_adv_trace.o - .bss.sztmp 0x20000e4c 0x100 ./Utilities/trace/adv_trace/stm32_adv_trace.o - .bss.__sf 0x20000f4c 0x138 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-findfp.o) - 0x20000f4c __sf - .bss.errno 0x20001084 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reent.o) - 0x20001084 errno + 0x20000c84 0x200 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .bss.sztmp 0x20000e84 0x100 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .bss.__sf 0x20000f84 0x138 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-findfp.o) + 0x20000f84 __sf + .bss.errno 0x200010bc 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reent.o) + 0x200010bc errno .bss.__lock___malloc_recursive_mutex - 0x20001088 0x1 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) - 0x20001088 __lock___malloc_recursive_mutex - *fill* 0x20001089 0x3 + 0x200010c0 0x1 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) + 0x200010c0 __lock___malloc_recursive_mutex + *fill* 0x200010c1 0x3 .bss.__malloc_sbrk_start - 0x2000108c 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) - 0x2000108c __malloc_sbrk_start + 0x200010c4 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) + 0x200010c4 __malloc_sbrk_start .bss.__malloc_free_list - 0x20001090 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) - 0x20001090 __malloc_free_list + 0x200010c8 0x4 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) + 0x200010c8 __malloc_free_list *(COMMON) - 0x20001094 . = ALIGN (0x4) - 0x20001094 _ebss = . - 0x20001094 __bss_end__ = _ebss + 0x200010cc . = ALIGN (0x4) + 0x200010cc _ebss = . + 0x200010cc __bss_end__ = _ebss ._user_heap_stack - 0x20001094 0xa04 load address 0x080106c8 - 0x20001098 . = ALIGN (0x8) - *fill* 0x20001094 0x4 + 0x200010cc 0xa04 load address 0x080106f0 + 0x200010d0 . = ALIGN (0x8) + *fill* 0x200010cc 0x4 [!provide] PROVIDE (end = .) - 0x20001098 PROVIDE (_end = .) - 0x20001298 . = (. + _Min_Heap_Size) - *fill* 0x20001098 0x200 - 0x20001a98 . = (. + _Min_Stack_Size) - *fill* 0x20001298 0x800 - 0x20001a98 . = ALIGN (0x8) + 0x200010d0 PROVIDE (_end = .) + 0x200012d0 . = (. + _Min_Heap_Size) + *fill* 0x200010d0 0x200 + 0x20001ad0 . = (. + _Min_Stack_Size) + *fill* 0x200012d0 0x800 + 0x20001ad0 . = ALIGN (0x8) /DISCARD/ libc.a(*) @@ -9239,7 +9239,7 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a -.debug_info 0x00000000 0x25c8e +.debug_info 0x00000000 0x25e14 .debug_info 0x00000000 0x642 ./Core/Src/dma.o .debug_info 0x00000642 0x7cf ./Core/Src/gpio.o .debug_info 0x00000e11 0x8a2 ./Core/Src/main.o @@ -9276,17 +9276,17 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_info 0x0001c49b 0x22ae ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o .debug_info 0x0001e749 0x19c5 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o .debug_info 0x0002010e 0xea ./SubGHz_Phy/App/app_subghz_phy.o - .debug_info 0x000201f8 0x24c4 ./SubGHz_Phy/App/subghz_phy_app.o - .debug_info 0x000226bc 0x1c7 ./SubGHz_Phy/App/config/config_defaults.o - .debug_info 0x00022883 0x46c ./SubGHz_Phy/App/config/config_store.o - .debug_info 0x00022cef 0x288 ./SubGHz_Phy/Target/radio_board_if.o - .debug_info 0x00022f77 0x3b8 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - .debug_info 0x0002332f 0x1bd ./Utilities/misc/stm32_mem.o - .debug_info 0x000234ec 0x69f ./Utilities/misc/stm32_systime.o - .debug_info 0x00023b8b 0x2ea ./Utilities/misc/stm32_tiny_vsnprintf.o - .debug_info 0x00023e75 0x9af ./Utilities/sequencer/stm32_seq.o - .debug_info 0x00024824 0x883 ./Utilities/timer/stm32_timer.o - .debug_info 0x000250a7 0xbe7 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .debug_info 0x000201f8 0x264a ./SubGHz_Phy/App/subghz_phy_app.o + .debug_info 0x00022842 0x1c7 ./SubGHz_Phy/App/config/config_defaults.o + .debug_info 0x00022a09 0x46c ./SubGHz_Phy/App/config/config_store.o + .debug_info 0x00022e75 0x288 ./SubGHz_Phy/Target/radio_board_if.o + .debug_info 0x000230fd 0x3b8 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .debug_info 0x000234b5 0x1bd ./Utilities/misc/stm32_mem.o + .debug_info 0x00023672 0x69f ./Utilities/misc/stm32_systime.o + .debug_info 0x00023d11 0x2ea ./Utilities/misc/stm32_tiny_vsnprintf.o + .debug_info 0x00023ffb 0x9af ./Utilities/sequencer/stm32_seq.o + .debug_info 0x000249aa 0x883 ./Utilities/timer/stm32_timer.o + .debug_info 0x0002522d 0xbe7 ./Utilities/trace/adv_trace/stm32_adv_trace.o .debug_abbrev 0x00000000 0x68c7 .debug_abbrev 0x00000000 0x156 ./Core/Src/dma.o @@ -9337,7 +9337,7 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_abbrev 0x00006207 0x2f4 ./Utilities/timer/stm32_timer.o .debug_abbrev 0x000064fb 0x3cc ./Utilities/trace/adv_trace/stm32_adv_trace.o -.debug_aranges 0x00000000 0x2340 +.debug_aranges 0x00000000 0x2350 .debug_aranges 0x00000000 0x28 ./Core/Src/dma.o .debug_aranges @@ -9411,30 +9411,30 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_aranges 0x00001dc8 0x28 ./SubGHz_Phy/App/app_subghz_phy.o .debug_aranges - 0x00001df0 0x148 ./SubGHz_Phy/App/subghz_phy_app.o + 0x00001df0 0x158 ./SubGHz_Phy/App/subghz_phy_app.o .debug_aranges - 0x00001f38 0x20 ./SubGHz_Phy/App/config/config_defaults.o + 0x00001f48 0x20 ./SubGHz_Phy/App/config/config_defaults.o .debug_aranges - 0x00001f58 0x30 ./SubGHz_Phy/App/config/config_store.o + 0x00001f68 0x30 ./SubGHz_Phy/App/config/config_store.o .debug_aranges - 0x00001f88 0x50 ./SubGHz_Phy/Target/radio_board_if.o + 0x00001f98 0x50 ./SubGHz_Phy/Target/radio_board_if.o .debug_aranges - 0x00001fd8 0x48 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x00001fe8 0x48 ./Utilities/lpm/tiny_lpm/stm32_lpm.o .debug_aranges - 0x00002020 0x30 ./Utilities/misc/stm32_mem.o + 0x00002030 0x30 ./Utilities/misc/stm32_mem.o .debug_aranges - 0x00002050 0x80 ./Utilities/misc/stm32_systime.o + 0x00002060 0x80 ./Utilities/misc/stm32_systime.o .debug_aranges - 0x000020d0 0x30 ./Utilities/misc/stm32_tiny_vsnprintf.o + 0x000020e0 0x30 ./Utilities/misc/stm32_tiny_vsnprintf.o .debug_aranges - 0x00002100 0xa8 ./Utilities/sequencer/stm32_seq.o + 0x00002110 0xa8 ./Utilities/sequencer/stm32_seq.o .debug_aranges - 0x000021a8 0xb0 ./Utilities/timer/stm32_timer.o + 0x000021b8 0xb0 ./Utilities/timer/stm32_timer.o .debug_aranges - 0x00002258 0xe8 ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x00002268 0xe8 ./Utilities/trace/adv_trace/stm32_adv_trace.o .debug_rnglists - 0x00000000 0x1a7a + 0x00000000 0x1a85 .debug_rnglists 0x00000000 0x19 ./Core/Src/dma.o .debug_rnglists @@ -9508,29 +9508,29 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_rnglists 0x0000167b 0x19 ./SubGHz_Phy/App/app_subghz_phy.o .debug_rnglists - 0x00001694 0xff ./SubGHz_Phy/App/subghz_phy_app.o + 0x00001694 0x10a ./SubGHz_Phy/App/subghz_phy_app.o .debug_rnglists - 0x00001793 0x13 ./SubGHz_Phy/App/config/config_defaults.o + 0x0000179e 0x13 ./SubGHz_Phy/App/config/config_defaults.o .debug_rnglists - 0x000017a6 0x20 ./SubGHz_Phy/App/config/config_store.o + 0x000017b1 0x20 ./SubGHz_Phy/App/config/config_store.o .debug_rnglists - 0x000017c6 0x37 ./SubGHz_Phy/Target/radio_board_if.o + 0x000017d1 0x37 ./SubGHz_Phy/Target/radio_board_if.o .debug_rnglists - 0x000017fd 0x31 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + 0x00001808 0x31 ./Utilities/lpm/tiny_lpm/stm32_lpm.o .debug_rnglists - 0x0000182e 0x1f ./Utilities/misc/stm32_mem.o + 0x00001839 0x1f ./Utilities/misc/stm32_mem.o .debug_rnglists - 0x0000184d 0x5f ./Utilities/misc/stm32_systime.o + 0x00001858 0x5f ./Utilities/misc/stm32_systime.o .debug_rnglists - 0x000018ac 0x21 ./Utilities/misc/stm32_tiny_vsnprintf.o + 0x000018b7 0x21 ./Utilities/misc/stm32_tiny_vsnprintf.o .debug_rnglists - 0x000018cd 0x7c ./Utilities/sequencer/stm32_seq.o + 0x000018d8 0x7c ./Utilities/sequencer/stm32_seq.o .debug_rnglists - 0x00001949 0x82 ./Utilities/timer/stm32_timer.o + 0x00001954 0x82 ./Utilities/timer/stm32_timer.o .debug_rnglists - 0x000019cb 0xaf ./Utilities/trace/adv_trace/stm32_adv_trace.o + 0x000019d6 0xaf ./Utilities/trace/adv_trace/stm32_adv_trace.o -.debug_macro 0x00000000 0x2436a +.debug_macro 0x00000000 0x24387 .debug_macro 0x00000000 0x250 ./Core/Src/dma.o .debug_macro 0x00000250 0xad2 ./Core/Src/dma.o .debug_macro 0x00000d22 0x12a ./Core/Src/dma.o @@ -9684,24 +9684,24 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_macro 0x000220b5 0x474 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o .debug_macro 0x00022529 0x292 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o .debug_macro 0x000227bb 0x1cb ./SubGHz_Phy/App/app_subghz_phy.o - .debug_macro 0x00022986 0x48c ./SubGHz_Phy/App/subghz_phy_app.o - .debug_macro 0x00022e12 0xac ./SubGHz_Phy/App/subghz_phy_app.o - .debug_macro 0x00022ebe 0x1c ./SubGHz_Phy/App/subghz_phy_app.o - .debug_macro 0x00022eda 0x11f ./SubGHz_Phy/App/subghz_phy_app.o - .debug_macro 0x00022ff9 0x153 ./SubGHz_Phy/App/config/config_defaults.o - .debug_macro 0x0002314c 0x335 ./SubGHz_Phy/App/config/config_store.o - .debug_macro 0x00023481 0x294 ./SubGHz_Phy/Target/radio_board_if.o - .debug_macro 0x00023715 0x16 ./SubGHz_Phy/Target/radio_board_if.o - .debug_macro 0x0002372b 0x1ba ./Utilities/lpm/tiny_lpm/stm32_lpm.o - .debug_macro 0x000238e5 0x18c ./Utilities/misc/stm32_mem.o - .debug_macro 0x00023a71 0x26b ./Utilities/misc/stm32_systime.o - .debug_macro 0x00023cdc 0x143 ./Utilities/misc/stm32_tiny_vsnprintf.o - .debug_macro 0x00023e1f 0x1b9 ./Utilities/sequencer/stm32_seq.o - .debug_macro 0x00023fd8 0x1c ./Utilities/sequencer/stm32_seq.o - .debug_macro 0x00023ff4 0x1b5 ./Utilities/timer/stm32_timer.o - .debug_macro 0x000241a9 0x1c1 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .debug_macro 0x00022986 0x4a9 ./SubGHz_Phy/App/subghz_phy_app.o + .debug_macro 0x00022e2f 0xac ./SubGHz_Phy/App/subghz_phy_app.o + .debug_macro 0x00022edb 0x1c ./SubGHz_Phy/App/subghz_phy_app.o + .debug_macro 0x00022ef7 0x11f ./SubGHz_Phy/App/subghz_phy_app.o + .debug_macro 0x00023016 0x153 ./SubGHz_Phy/App/config/config_defaults.o + .debug_macro 0x00023169 0x335 ./SubGHz_Phy/App/config/config_store.o + .debug_macro 0x0002349e 0x294 ./SubGHz_Phy/Target/radio_board_if.o + .debug_macro 0x00023732 0x16 ./SubGHz_Phy/Target/radio_board_if.o + .debug_macro 0x00023748 0x1ba ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .debug_macro 0x00023902 0x18c ./Utilities/misc/stm32_mem.o + .debug_macro 0x00023a8e 0x26b ./Utilities/misc/stm32_systime.o + .debug_macro 0x00023cf9 0x143 ./Utilities/misc/stm32_tiny_vsnprintf.o + .debug_macro 0x00023e3c 0x1b9 ./Utilities/sequencer/stm32_seq.o + .debug_macro 0x00023ff5 0x1c ./Utilities/sequencer/stm32_seq.o + .debug_macro 0x00024011 0x1b5 ./Utilities/timer/stm32_timer.o + .debug_macro 0x000241c6 0x1c1 ./Utilities/trace/adv_trace/stm32_adv_trace.o -.debug_line 0x00000000 0x258f8 +.debug_line 0x00000000 0x258f0 .debug_line 0x00000000 0x77a ./Core/Src/dma.o .debug_line 0x0000077a 0x7b3 ./Core/Src/gpio.o .debug_line 0x00000f2d 0x81b ./Core/Src/main.o @@ -9738,112 +9738,112 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_line 0x0001b661 0x1939 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o .debug_line 0x0001cf9a 0x138e ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o .debug_line 0x0001e328 0x628 ./SubGHz_Phy/App/app_subghz_phy.o - .debug_line 0x0001e950 0x1725 ./SubGHz_Phy/App/subghz_phy_app.o - .debug_line 0x00020075 0x525 ./SubGHz_Phy/App/config/config_defaults.o - .debug_line 0x0002059a 0x9e7 ./SubGHz_Phy/App/config/config_store.o - .debug_line 0x00020f81 0x8da ./SubGHz_Phy/Target/radio_board_if.o - .debug_line 0x0002185b 0x717 ./Utilities/lpm/tiny_lpm/stm32_lpm.o - .debug_line 0x00021f72 0x5cc ./Utilities/misc/stm32_mem.o - .debug_line 0x0002253e 0x93d ./Utilities/misc/stm32_systime.o - .debug_line 0x00022e7b 0x80c ./Utilities/misc/stm32_tiny_vsnprintf.o - .debug_line 0x00023687 0xb0d ./Utilities/sequencer/stm32_seq.o - .debug_line 0x00024194 0xaab ./Utilities/timer/stm32_timer.o - .debug_line 0x00024c3f 0xcb9 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .debug_line 0x0001e950 0x171d ./SubGHz_Phy/App/subghz_phy_app.o + .debug_line 0x0002006d 0x525 ./SubGHz_Phy/App/config/config_defaults.o + .debug_line 0x00020592 0x9e7 ./SubGHz_Phy/App/config/config_store.o + .debug_line 0x00020f79 0x8da ./SubGHz_Phy/Target/radio_board_if.o + .debug_line 0x00021853 0x717 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .debug_line 0x00021f6a 0x5cc ./Utilities/misc/stm32_mem.o + .debug_line 0x00022536 0x93d ./Utilities/misc/stm32_systime.o + .debug_line 0x00022e73 0x80c ./Utilities/misc/stm32_tiny_vsnprintf.o + .debug_line 0x0002367f 0xb0d ./Utilities/sequencer/stm32_seq.o + .debug_line 0x0002418c 0xaab ./Utilities/timer/stm32_timer.o + .debug_line 0x00024c37 0xcb9 ./Utilities/trace/adv_trace/stm32_adv_trace.o -.debug_str 0x00000000 0xc7293 - .debug_str 0x00000000 0xc7293 ./Core/Src/dma.o +.debug_str 0x00000000 0xc7281 + .debug_str 0x00000000 0xc7281 ./Core/Src/dma.o 0xb0ef2 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/gpio.o + .debug_str 0x000c7281 0x0 ./Core/Src/gpio.o 0xb0fc0 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/main.o + .debug_str 0x000c7281 0x0 ./Core/Src/main.o 0xb0d97 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/rtc.o + .debug_str 0x000c7281 0x0 ./Core/Src/rtc.o 0xb1421 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/stm32_lpm_if.o + .debug_str 0x000c7281 0x0 ./Core/Src/stm32_lpm_if.o 0xb5a73 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/stm32wlxx_hal_msp.o + .debug_str 0x000c7281 0x0 ./Core/Src/stm32wlxx_hal_msp.o 0xb087c (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/stm32wlxx_it.o + .debug_str 0x000c7281 0x0 ./Core/Src/stm32wlxx_it.o 0xb1277 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/subghz.o + .debug_str 0x000c7281 0x0 ./Core/Src/subghz.o 0xb10be (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/sys_app.o + .debug_str 0x000c7281 0x0 ./Core/Src/sys_app.o 0xb7998 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/sys_debug.o + .debug_str 0x000c7281 0x0 ./Core/Src/sys_debug.o 0xb26af (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/sysmem.o + .debug_str 0x000c7281 0x0 ./Core/Src/sysmem.o 0x771d (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/system_stm32wlxx.o + .debug_str 0x000c7281 0x0 ./Core/Src/system_stm32wlxx.o 0xb08a2 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/timer_if.o + .debug_str 0x000c7281 0x0 ./Core/Src/timer_if.o 0xb7e0c (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/usart.o + .debug_str 0x000c7281 0x0 ./Core/Src/usart.o 0xb17ac (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Src/usart_if.o + .debug_str 0x000c7281 0x0 ./Core/Src/usart_if.o 0xb50c6 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Core/Startup/startup_stm32wl55jcix.o + .debug_str 0x000c7281 0x0 ./Core/Startup/startup_stm32wl55jcix.o 0x66 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/BSP/STM32WLxx_Nucleo/stm32wlxx_nucleo_radio.o + .debug_str 0x000c7281 0x0 ./Drivers/BSP/STM32WLxx_Nucleo/stm32wlxx_nucleo_radio.o 0xb110d (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal.o 0xb168a (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_cortex.o 0xb0fc0 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_dma.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_dma.o 0xb0c57 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_flash.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_flash.o 0xb09b8 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_flash_ex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_flash_ex.o 0xb0da6 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_gpio.o 0xb08fb (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr.o 0xb0cfa (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_pwr_ex.o 0xb105a (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc.o 0xb166e (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rcc_ex.o 0xb11c9 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rtc.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rtc.o 0xb0d59 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rtc_ex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_rtc_ex.o 0xb1293 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_subghz.o 0xb13a3 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart.o 0xb18e0 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o + .debug_str 0x000c7281 0x0 ./Drivers/STM32WLxx_HAL_Driver/Src/stm32wlxx_hal_uart_ex.o 0xb0fd9 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o + .debug_str 0x000c7281 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio.o 0xb9f4b (size before relaxing) - .debug_str 0x000c7293 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o + .debug_str 0x000c7281 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o 0xb8640 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o + .debug_str 0x000c7281 0x0 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o 0xb8a53 (size before relaxing) - .debug_str 0x000c7293 0x0 ./SubGHz_Phy/App/app_subghz_phy.o + .debug_str 0x000c7281 0x0 ./SubGHz_Phy/App/app_subghz_phy.o 0x871c (size before relaxing) - .debug_str 0x000c7293 0x0 ./SubGHz_Phy/App/subghz_phy_app.o - 0xb8a96 (size before relaxing) - .debug_str 0x000c7293 0x0 ./SubGHz_Phy/App/config/config_defaults.o + .debug_str 0x000c7281 0x0 ./SubGHz_Phy/App/subghz_phy_app.o + 0xb8dfd (size before relaxing) + .debug_str 0x000c7281 0x0 ./SubGHz_Phy/App/config/config_defaults.o 0x76e3 (size before relaxing) - .debug_str 0x000c7293 0x0 ./SubGHz_Phy/App/config/config_store.o + .debug_str 0x000c7281 0x0 ./SubGHz_Phy/App/config/config_store.o 0xb3d76 (size before relaxing) - .debug_str 0x000c7293 0x0 ./SubGHz_Phy/Target/radio_board_if.o + .debug_str 0x000c7281 0x0 ./SubGHz_Phy/Target/radio_board_if.o 0xb225e (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .debug_str 0x000c7281 0x0 ./Utilities/lpm/tiny_lpm/stm32_lpm.o 0x8571 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/misc/stm32_mem.o + .debug_str 0x000c7281 0x0 ./Utilities/misc/stm32_mem.o 0x8273 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/misc/stm32_systime.o + .debug_str 0x000c7281 0x0 ./Utilities/misc/stm32_systime.o 0x8c66 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/misc/stm32_tiny_vsnprintf.o + .debug_str 0x000c7281 0x0 ./Utilities/misc/stm32_tiny_vsnprintf.o 0x6aa3 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/sequencer/stm32_seq.o + .debug_str 0x000c7281 0x0 ./Utilities/sequencer/stm32_seq.o 0x8807 (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/timer/stm32_timer.o + .debug_str 0x000c7281 0x0 ./Utilities/timer/stm32_timer.o 0x87bb (size before relaxing) - .debug_str 0x000c7293 0x0 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .debug_str 0x000c7281 0x0 ./Utilities/trace/adv_trace/stm32_adv_trace.o 0x8e73 (size before relaxing) .comment 0x00000000 0x43 @@ -9940,7 +9940,7 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .comment 0x00000043 0x0 ./Utilities/trace/adv_trace/stm32_adv_trace.o 0x44 (size before relaxing) -.debug_frame 0x00000000 0x9470 +.debug_frame 0x00000000 0x94c0 .debug_frame 0x00000000 0x54 ./Core/Src/dma.o .debug_frame 0x00000054 0x5c ./Core/Src/gpio.o .debug_frame 0x000000b0 0x90 ./Core/Src/main.o @@ -9976,40 +9976,40 @@ LOAD /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.g .debug_frame 0x00006b78 0x9b8 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_driver.o .debug_frame 0x00007530 0x454 ./Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver/radio_fw.o .debug_frame 0x00007984 0x48 ./SubGHz_Phy/App/app_subghz_phy.o - .debug_frame 0x000079cc 0x4fc ./SubGHz_Phy/App/subghz_phy_app.o - .debug_frame 0x00007ec8 0x38 ./SubGHz_Phy/App/config/config_defaults.o - .debug_frame 0x00007f00 0x80 ./SubGHz_Phy/App/config/config_store.o - .debug_frame 0x00007f80 0xe4 ./SubGHz_Phy/Target/radio_board_if.o - .debug_frame 0x00008064 0xec ./Utilities/lpm/tiny_lpm/stm32_lpm.o - .debug_frame 0x00008150 0x88 ./Utilities/misc/stm32_mem.o - .debug_frame 0x000081d8 0x20c ./Utilities/misc/stm32_systime.o - .debug_frame 0x000083e4 0x88 ./Utilities/misc/stm32_tiny_vsnprintf.o - .debug_frame 0x0000846c 0x2ac ./Utilities/sequencer/stm32_seq.o - .debug_frame 0x00008718 0x2c0 ./Utilities/timer/stm32_timer.o - .debug_frame 0x000089d8 0x3c4 ./Utilities/trace/adv_trace/stm32_adv_trace.o - .debug_frame 0x00008d9c 0x64 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) - .debug_frame 0x00008e00 0x64 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) - .debug_frame 0x00008e64 0x144 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-findfp.o) - .debug_frame 0x00008fa8 0x4c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) - .debug_frame 0x00008ff4 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memset.o) - .debug_frame 0x00009014 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strncmp.o) - .debug_frame 0x0000903c 0x38 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reent.o) - .debug_frame 0x00009074 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-errno.o) - .debug_frame 0x00009094 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-init.o) - .debug_frame 0x000090c0 0xb0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) - .debug_frame 0x00009170 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strcmp.o) - .debug_frame 0x00009190 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memcpy-stub.o) - .debug_frame 0x000091b8 0x38 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-freer.o) - .debug_frame 0x000091f0 0x50 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) - .debug_frame 0x00009240 0x30 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) - .debug_frame 0x00009270 0x90 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) - .debug_frame 0x00009300 0x60 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) - .debug_frame 0x00009360 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memmove.o) - .debug_frame 0x00009388 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-sbrkr.o) - .debug_frame 0x000093b4 0x3c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reallocr.o) - .debug_frame 0x000093f0 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-msizer.o) - .debug_frame 0x00009410 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_aeabi_uldivmod.o) - .debug_frame 0x0000943c 0x34 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_udivmoddi4.o) + .debug_frame 0x000079cc 0x54c ./SubGHz_Phy/App/subghz_phy_app.o + .debug_frame 0x00007f18 0x38 ./SubGHz_Phy/App/config/config_defaults.o + .debug_frame 0x00007f50 0x80 ./SubGHz_Phy/App/config/config_store.o + .debug_frame 0x00007fd0 0xe4 ./SubGHz_Phy/Target/radio_board_if.o + .debug_frame 0x000080b4 0xec ./Utilities/lpm/tiny_lpm/stm32_lpm.o + .debug_frame 0x000081a0 0x88 ./Utilities/misc/stm32_mem.o + .debug_frame 0x00008228 0x20c ./Utilities/misc/stm32_systime.o + .debug_frame 0x00008434 0x88 ./Utilities/misc/stm32_tiny_vsnprintf.o + .debug_frame 0x000084bc 0x2ac ./Utilities/sequencer/stm32_seq.o + .debug_frame 0x00008768 0x2c0 ./Utilities/timer/stm32_timer.o + .debug_frame 0x00008a28 0x3c4 ./Utilities/trace/adv_trace/stm32_adv_trace.o + .debug_frame 0x00008dec 0x64 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtol.o) + .debug_frame 0x00008e50 0x64 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strtoul.o) + .debug_frame 0x00008eb4 0x144 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-findfp.o) + .debug_frame 0x00008ff8 0x4c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-vsnprintf.o) + .debug_frame 0x00009044 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memset.o) + .debug_frame 0x00009064 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strncmp.o) + .debug_frame 0x0000908c 0x38 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reent.o) + .debug_frame 0x000090c4 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-errno.o) + .debug_frame 0x000090e4 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-init.o) + .debug_frame 0x00009110 0xb0 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-lock.o) + .debug_frame 0x000091c0 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-strcmp.o) + .debug_frame 0x000091e0 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memcpy-stub.o) + .debug_frame 0x00009208 0x38 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-freer.o) + .debug_frame 0x00009240 0x50 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mallocr.o) + .debug_frame 0x00009290 0x30 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-mlock.o) + .debug_frame 0x000092c0 0x90 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-svfprintf.o) + .debug_frame 0x00009350 0x60 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-nano-vfprintf_i.o) + .debug_frame 0x000093b0 0x28 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-memmove.o) + .debug_frame 0x000093d8 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-sbrkr.o) + .debug_frame 0x00009404 0x3c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-reallocr.o) + .debug_frame 0x00009440 0x20 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a(libc_a-msizer.o) + .debug_frame 0x00009460 0x2c /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_aeabi_uldivmod.o) + .debug_frame 0x0000948c 0x34 /opt/st/stm32cubeide_2.0.0/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.linux64_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/thumb/v7e-m/nofp/libgcc.a(_udivmoddi4.o) .debug_line_str 0x00000000 0x4a diff --git a/SubGHz_Phy/App/subghz_phy_app.c b/SubGHz_Phy/App/subghz_phy_app.c index 439cca8..104a0df 100644 --- a/SubGHz_Phy/App/subghz_phy_app.c +++ b/SubGHz_Phy/App/subghz_phy_app.c @@ -4,6 +4,7 @@ #include "usart_if.h" #include "usart.h" #include "main.h" +#include "timer.h" #include "config/config_consts.h" #include "config/config_types.h" @@ -49,9 +50,9 @@ static volatile uint8_t g_radio_rx_error = 0; static volatile int16_t g_last_rx_rssi = 0; static volatile int8_t g_last_rx_cfo = 0; -static volatile uint8_t g_led_tx_ticks = 0U; -static volatile uint8_t g_led_rx_ticks = 0U; -static volatile uint8_t g_led_err_ticks = 0U; +static TimerEvent_t g_led_tx_timer; +static TimerEvent_t g_led_rx_timer; +static TimerEvent_t g_led_err_timer; static volatile uint8_t g_radio_busy = 0; static volatile uint8_t g_radio_needs_rx_restart = 0; @@ -90,6 +91,10 @@ static void App_LedTxPulse(void); static void App_LedRxPulse(void); static void App_LedErrPulse(void); +static void App_LedTxOff(void *context); +static void App_LedRxOff(void *context); +static void App_LedErrOff(void *context); + static void UartRxByteCallback(uint8_t *rxChar, uint16_t size, uint8_t error); static void App_ProcessRadioEvents(void); static void App_ProcessUartPacketizer(void); @@ -132,6 +137,10 @@ void SubghzApp_Init(void) Radio.Init(&RadioEvents); + TimerInit(&g_led_tx_timer, App_LedTxOff); + TimerInit(&g_led_rx_timer, App_LedRxOff); + TimerInit(&g_led_err_timer, App_LedErrOff); + App_RadioApplyConfig(); App_ReconfigureUart(g_cfg.uart_baudrate); App_RadioEnterRx(); @@ -140,10 +149,6 @@ void SubghzApp_Init(void) HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); - g_led_tx_ticks = 0U; - g_led_rx_ticks = 0U; - g_led_err_ticks = 0U; - g_uart_last_data_tick = HAL_GetTick(); (void)vcom_ReceiveInit(UartRxByteCallback); @@ -862,67 +867,53 @@ static char *App_SkipSpaces(char *s) } return s; } -void SubghzApp_Timer1msIrq(void) -{ - if (g_led_tx_ticks > 0U) - { - g_led_tx_ticks--; - if (g_led_tx_ticks == 0U) - { - HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); - } - } - - if (g_led_rx_ticks > 0U) - { - g_led_rx_ticks--; - if (g_led_rx_ticks == 0U) - { - HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); - } - } - - if (g_led_err_ticks > 0U) - { - g_led_err_ticks--; - if (g_led_err_ticks == 0U) - { - HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); - } - } -} - -void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) -{ - if (htim->Instance == TIM2) // замени на свой таймер - { - SubghzApp_Timer1msIrq(); - } -} - static void App_LedTxPulse(void) { + TimerStop(&g_led_tx_timer); HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET); - g_led_tx_ticks = LED_PULSE_MS; + TimerSetValue(&g_led_tx_timer, LED_PULSE_MS); + TimerStart(&g_led_tx_timer); } static void App_LedRxPulse(void) { + TimerStop(&g_led_rx_timer); HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET); - g_led_rx_ticks = LED_PULSE_MS; + TimerSetValue(&g_led_rx_timer, LED_PULSE_MS); + TimerStart(&g_led_rx_timer); } static void App_LedErrPulse(void) { + TimerStop(&g_led_err_timer); HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET); - g_led_err_ticks = LED_PULSE_MS; + TimerSetValue(&g_led_err_timer, LED_PULSE_MS); + TimerStart(&g_led_err_timer); } - static void OnTxDone(void) { g_radio_tx_done = 1U; } +static void App_LedTxOff(void *context) +{ + (void)context; + HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET); +} + +static void App_LedRxOff(void *context) +{ + (void)context; + HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET); +} + +static void App_LedErrOff(void *context) +{ + (void)context; + HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET); +} + + static void OnRxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t cfo) { g_last_rx_rssi = rssi;