diff --git a/Core/BASE/Src/MSP/msp_K1061DC.c b/Core/BASE/Src/MSP/msp_K1061DC.c index 8334c1b..03b5012 100644 --- a/Core/BASE/Src/MSP/msp_K1061DC.c +++ b/Core/BASE/Src/MSP/msp_K1061DC.c @@ -66,6 +66,7 @@ static void decode_K1061DC(uint8_t *buffer, uint16_t length) float pressure_value = (current_uA - 12000) / 80.0; if (pressure != NULL) { *pressure = pressure_value; + *pressure = *pressure +1;//补偿开机默认值(-1左右) } // 可选: 更新硬件错误状态(通信成功) HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, "K1061DC", 1); diff --git a/Core/BASE/Src/MSP/msp_TL720D.c b/Core/BASE/Src/MSP/msp_TL720D.c index 6eecccc..c029ae9 100644 --- a/Core/BASE/Src/MSP/msp_TL720D.c +++ b/Core/BASE/Src/MSP/msp_TL720D.c @@ -193,7 +193,9 @@ static void decode_TL720D(uint8_t *buffer, uint16_t length) // *RobotAngle = SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll; //水平向左为0°,转换为竖直向上为0°; - *RobotAngle = changeAngle_LeftZerotoUpZero(SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll); + *RobotAngle = changeAngle_LeftZerotoUpZero(SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll);//1号机器人 + //水平向右左为0°,转换为竖直向上为0°; + *RobotAngle = *RobotAngle * -1;// 2号 //Is_TL720_Updating_Flag=true; HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"TL720D",1); diff --git a/Debug/Core/BASE/Src/MSP/msp_K1061DC.o b/Debug/Core/BASE/Src/MSP/msp_K1061DC.o index 7f1a30d..b03fc2a 100644 Binary files a/Debug/Core/BASE/Src/MSP/msp_K1061DC.o and b/Debug/Core/BASE/Src/MSP/msp_K1061DC.o differ diff --git a/Debug/Core/BASE/Src/MSP/msp_K1061DC.su b/Debug/Core/BASE/Src/MSP/msp_K1061DC.su index c98d665..d7caca9 100644 --- a/Debug/Core/BASE/Src/MSP/msp_K1061DC.su +++ b/Debug/Core/BASE/Src/MSP/msp_K1061DC.su @@ -1,3 +1,3 @@ ../Core/BASE/Src/MSP/msp_K1061DC.c:32:6:K1061DC_intialize 24 static ../Core/BASE/Src/MSP/msp_K1061DC.c:48:13:decode_K1061DC 40 static -../Core/BASE/Src/MSP/msp_K1061DC.c:80:13:reading_K1061DC_Task 24 static +../Core/BASE/Src/MSP/msp_K1061DC.c:81:13:reading_K1061DC_Task 24 static diff --git a/Debug/Core/BASE/Src/MSP/msp_TL720D.o b/Debug/Core/BASE/Src/MSP/msp_TL720D.o index e2a4450..69c1001 100644 Binary files a/Debug/Core/BASE/Src/MSP/msp_TL720D.o and b/Debug/Core/BASE/Src/MSP/msp_TL720D.o differ diff --git a/Debug/Core/BASE/Src/MSP/msp_TL720D.su b/Debug/Core/BASE/Src/MSP/msp_TL720D.su index 805f432..a93859a 100644 --- a/Debug/Core/BASE/Src/MSP/msp_TL720D.su +++ b/Debug/Core/BASE/Src/MSP/msp_TL720D.su @@ -3,5 +3,5 @@ ../Core/BASE/Src/MSP/msp_TL720D.c:97:13:reading_Task_DDM360B 32 static ../Core/BASE/Src/MSP/msp_TL720D.c:124:13:reading_Task_TL720D 32 static ../Core/BASE/Src/MSP/msp_TL720D.c:163:13:decode_TL720D 48 static -../Core/BASE/Src/MSP/msp_TL720D.c:210:12:changeAngle_LeftZerotoUpZero 24 static -../Core/BASE/Src/MSP/msp_TL720D.c:223:16:getDeci 32 static +../Core/BASE/Src/MSP/msp_TL720D.c:211:12:changeAngle_LeftZerotoUpZero 24 static +../Core/BASE/Src/MSP/msp_TL720D.c:224:16:getDeci 32 static diff --git a/Debug/Negative_Pressure_UDP_1.1.bin b/Debug/Negative_Pressure_UDP_1.1.bin index ce4240f..ca6be62 100644 Binary files a/Debug/Negative_Pressure_UDP_1.1.bin and b/Debug/Negative_Pressure_UDP_1.1.bin differ diff --git a/Debug/Negative_Pressure_UDP_1.1.elf b/Debug/Negative_Pressure_UDP_1.1.elf index 303703d..52b15b3 100644 Binary files a/Debug/Negative_Pressure_UDP_1.1.elf and b/Debug/Negative_Pressure_UDP_1.1.elf differ diff --git a/Debug/Negative_Pressure_UDP_1.1.list b/Debug/Negative_Pressure_UDP_1.1.list index f677843..07cffdd 100644 --- a/Debug/Negative_Pressure_UDP_1.1.list +++ b/Debug/Negative_Pressure_UDP_1.1.list @@ -5,23 +5,23 @@ Sections: Idx Name Size VMA LMA File off Algn 0 .isr_vector 00000298 08020000 08020000 00010000 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA - 1 .text 00029360 080202a0 080202a0 000102a0 2**4 + 1 .text 000293a0 080202a0 080202a0 000102a0 2**4 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .rodata 00004058 08049600 08049600 00039600 2**3 + 2 .rodata 00004058 08049640 08049640 00039640 2**3 CONTENTS, ALLOC, LOAD, READONLY, DATA - 3 .ARM 00000008 0804d658 0804d658 0003d658 2**2 + 3 .ARM 00000008 0804d698 0804d698 0003d698 2**2 CONTENTS, ALLOC, LOAD, READONLY, DATA - 4 .init_array 00000004 0804d660 0804d660 0003d660 2**2 + 4 .init_array 00000004 0804d6a0 0804d6a0 0003d6a0 2**2 CONTENTS, ALLOC, LOAD, DATA - 5 .fini_array 00000004 0804d664 0804d664 0003d664 2**2 + 5 .fini_array 00000004 0804d6a4 0804d6a4 0003d6a4 2**2 CONTENTS, ALLOC, LOAD, DATA - 6 .data 000001ac 24000000 0804d668 00040000 2**2 + 6 .data 000001ac 24000000 0804d6a8 00040000 2**2 CONTENTS, ALLOC, LOAD, DATA - 7 .bss 0000eaa4 240001b0 0804d814 000401b0 2**3 + 7 .bss 0000eaa4 240001b0 0804d854 000401b0 2**3 ALLOC - 8 ._user_heap_stack 00002804 2400ec54 0804d814 0004ec54 2**0 + 8 ._user_heap_stack 00002804 2400ec54 0804d854 0004ec54 2**0 ALLOC - 9 .lwip_sec 00040260 30000000 0804d814 00050000 2**2 + 9 .lwip_sec 00040260 30000000 0804d854 00050000 2**2 ALLOC 10 .ARM.attributes 0000002e 00000000 00000000 000401ac 2**0 CONTENTS, READONLY @@ -33,15 +33,15 @@ Idx Name Size VMA LMA File off Algn CONTENTS, READONLY, DEBUGGING, OCTETS 14 .debug_macro 0006025c 00000000 00000000 000b6ed8 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 15 .debug_line 000755dd 00000000 00000000 00117134 2**0 + 15 .debug_line 00075601 00000000 00000000 00117134 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 16 .debug_str 001b13bd 00000000 00000000 0018c711 2**0 + 16 .debug_str 001b13bd 00000000 00000000 0018c735 2**0 CONTENTS, READONLY, DEBUGGING, OCTETS - 17 .comment 00000050 00000000 00000000 0033dace 2**0 + 17 .comment 00000050 00000000 00000000 0033daf2 2**0 CONTENTS, READONLY - 18 .debug_ranges 000033e0 00000000 00000000 0033db20 2**3 + 18 .debug_ranges 000033e0 00000000 00000000 0033db48 2**3 CONTENTS, READONLY, DEBUGGING, OCTETS - 19 .debug_frame 0000eb7c 00000000 00000000 00340f00 2**2 + 19 .debug_frame 0000eb7c 00000000 00000000 00340f28 2**2 CONTENTS, READONLY, DEBUGGING, OCTETS Disassembly of section .text: @@ -60,7 +60,7 @@ Disassembly of section .text: 80202b6: bd10 pop {r4, pc} 80202b8: 240001b0 .word 0x240001b0 80202bc: 00000000 .word 0x00000000 - 80202c0: 080495e8 .word 0x080495e8 + 80202c0: 08049628 .word 0x08049628 080202c4 : 80202c4: b508 push {r3, lr} @@ -72,7 +72,7 @@ Disassembly of section .text: 80202d2: bd08 pop {r3, pc} 80202d4: 00000000 .word 0x00000000 80202d8: 240001b4 .word 0x240001b4 - 80202dc: 080495e8 .word 0x080495e8 + 80202dc: 08049628 .word 0x08049628 080202e0 : 80202e0: f810 2b01 ldrb.w r2, [r0], #1 @@ -764,7 +764,7 @@ void DLT_LowLevelReceiveDmaToIdle(uint8_t *rxBuf, uint16_t Size) 802089e: 887a ldrh r2, [r7, #2] 80208a0: 4619 mov r1, r3 80208a2: 6878 ldr r0, [r7, #4] - 80208a4: f027 fa6e bl 8047d84 + 80208a4: f027 fa8e bl 8047dc4 } 80208a8: bf00 nop @@ -826,7 +826,7 @@ void DltInjectDataRcvd(uint32_t AppId, uint32_t ConId, uint32_t ServId, 802090c: 46bd mov sp, r7 802090e: bd80 pop {r7, pc} 8020910: 24009aac .word 0x24009aac - 8020914: 08049600 .word 0x08049600 + 8020914: 08049640 .word 0x08049640 08020918 : @@ -835,7 +835,7 @@ uint32_t GetSysTime(void) 8020918: b580 push {r7, lr} 802091a: af00 add r7, sp, #0 return HAL_GetTick(); - 802091c: f00c fb3a bl 802cf94 + 802091c: f00c fb5a bl 802cfd4 8020920: 4603 mov r3, r0 } 8020922: 4618 mov r0, r3 @@ -889,7 +889,7 @@ void bsp_InitI2C(void) 8020950: 1d3b adds r3, r7, #4 8020952: 4619 mov r1, r3 8020954: 4808 ldr r0, [pc, #32] ; (8020978 ) - 8020956: f012 ffa7 bl 80338a8 + 8020956: f012 ffc7 bl 80338e8 gpio_init.Pin = I2C_SDA_PIN; 802095a: f44f 5300 mov.w r3, #8192 ; 0x2000 @@ -898,7 +898,7 @@ void bsp_InitI2C(void) 8020960: 1d3b adds r3, r7, #4 8020962: 4619 mov r1, r3 8020964: 4804 ldr r0, [pc, #16] ; (8020978 ) - 8020966: f012 ff9f bl 80338a8 + 8020966: f012 ffbf bl 80338e8 /* 给一个停止信号, 复位I2C总线上的所有设备到待机模式 */ i2c_Stop(); @@ -1773,7 +1773,7 @@ CV_struct_define GF_BSP_EEPROM_Get_CV(void) 8020dd2: 22d8 movs r2, #216 ; 0xd8 8020dd4: 2100 movs r1, #0 8020dd6: 4618 mov r0, r3 - 8020dd8: f026 fffc bl 8047dd4 + 8020dd8: f027 f81c bl 8047e14 //char buffer[sizeof(CV_struct_define)]; GF_BSP_EEPROM_ReadBytes( 8020ddc: f107 0308 add.w r3, r7, #8 @@ -1790,7 +1790,7 @@ CV_struct_define GF_BSP_EEPROM_Get_CV(void) 8020dee: f107 0308 add.w r3, r7, #8 8020df2: 22d8 movs r2, #216 ; 0xd8 8020df4: 4619 mov r1, r3 - 8020df6: f026 ffc5 bl 8047d84 + 8020df6: f026 ffe5 bl 8047dc4 } 8020dfa: 6878 ldr r0, [r7, #4] @@ -1896,7 +1896,7 @@ void Error_Detect_Intialzie(uint16_t DispacherPeriod) 8020e94: 80fb strh r3, [r7, #6] HardWareErrorController = (HardWareController*) malloc( 8020e96: 2018 movs r0, #24 - 8020e98: f026 ff54 bl 8047d44 + 8020e98: f026 ff74 bl 8047d84 8020e9c: 4603 mov r3, r0 8020e9e: 461a mov r2, r3 8020ea0: 4b10 ldr r3, [pc, #64] ; (8020ee4 ) @@ -1996,7 +1996,7 @@ void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, 8020f32: d101 bne.n 8020f38 { MX_FDCAN1_Init(); - 8020f34: f009 fa9e bl 802a474 + 8020f34: f009 fabe bl 802a4b4 } if (hfdcan->Instance == FDCAN2) 8020f38: 687b ldr r3, [r7, #4] @@ -2006,7 +2006,7 @@ void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, 8020f40: d101 bne.n 8020f46 { MX_FDCAN2_Init(); - 8020f42: f009 fafb bl 802a53c + 8020f42: f009 fb1b bl 802a57c } } 8020f46: bf00 nop @@ -2038,7 +2038,7 @@ void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) 8020f6e: 4a31 ldr r2, [pc, #196] ; (8021034 ) 8020f70: 2140 movs r1, #64 ; 0x40 8020f72: 6878 ldr r0, [r7, #4] - 8020f74: f011 fea6 bl 8032cc4 + 8020f74: f011 fec6 bl 8032d04 8020f78: 4603 mov r3, r0 8020f7a: 2b00 cmp r3, #0 8020f7c: d152 bne.n 8021024 @@ -2106,7 +2106,7 @@ void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) 8020fd0: 4a18 ldr r2, [pc, #96] ; (8021034 ) 8020fd2: 2140 movs r1, #64 ; 0x40 8020fd4: 6878 ldr r0, [r7, #4] - 8020fd6: f011 fe75 bl 8032cc4 + 8020fd6: f011 fe95 bl 8032d04 8020fda: 4603 mov r3, r0 8020fdc: 2b00 cmp r3, #0 8020fde: d121 bne.n 8021024 @@ -2206,7 +2206,7 @@ void GF_BSP_GPIO_SetIO(uint8_t IO_Index,uint8_t Level) 8021092: 461a mov r2, r3 8021094: 2104 movs r1, #4 8021096: 4812 ldr r0, [pc, #72] ; (80210e0 ) - 8021098: f012 fdb6 bl 8033c08 + 8021098: f012 fdd6 bl 8033c48 break; 802109c: e01b b.n 80210d6 case 1: @@ -2215,7 +2215,7 @@ void GF_BSP_GPIO_SetIO(uint8_t IO_Index,uint8_t Level) 80210a0: 461a mov r2, r3 80210a2: 2108 movs r1, #8 80210a4: 480e ldr r0, [pc, #56] ; (80210e0 ) - 80210a6: f012 fdaf bl 8033c08 + 80210a6: f012 fdcf bl 8033c48 break; 80210aa: e014 b.n 80210d6 case 2: @@ -2224,7 +2224,7 @@ void GF_BSP_GPIO_SetIO(uint8_t IO_Index,uint8_t Level) 80210ae: 461a mov r2, r3 80210b0: 2101 movs r1, #1 80210b2: 480c ldr r0, [pc, #48] ; (80210e4 ) - 80210b4: f012 fda8 bl 8033c08 + 80210b4: f012 fdc8 bl 8033c48 break; 80210b8: e00d b.n 80210d6 case 3: @@ -2233,7 +2233,7 @@ void GF_BSP_GPIO_SetIO(uint8_t IO_Index,uint8_t Level) 80210bc: 461a mov r2, r3 80210be: 2108 movs r1, #8 80210c0: 4808 ldr r0, [pc, #32] ; (80210e4 ) - 80210c2: f012 fda1 bl 8033c08 + 80210c2: f012 fdc1 bl 8033c48 break; 80210c6: e006 b.n 80210d6 case 4: @@ -2242,7 +2242,7 @@ void GF_BSP_GPIO_SetIO(uint8_t IO_Index,uint8_t Level) 80210ca: 461a mov r2, r3 80210cc: 2110 movs r1, #16 80210ce: 4805 ldr r0, [pc, #20] ; (80210e4 ) - 80210d0: f012 fd9a bl 8033c08 + 80210d0: f012 fdba bl 8033c48 break; 80210d4: bf00 nop // case 5: @@ -2461,8 +2461,8 @@ uint16_t MB_CRC16(uint8_t *pushMsg, uint16_t usDataLen) 8021224: 46bd mov sp, r7 8021226: f85d 7b04 ldr.w r7, [sp], #4 802122a: 4770 bx lr - 802122c: 0804d0bc .word 0x0804d0bc - 8021230: 0804d1bc .word 0x0804d1bc + 802122c: 0804d0fc .word 0x0804d0fc + 8021230: 0804d1fc .word 0x0804d1fc 08021234 : * 返 回 值: 无 @@ -2732,10 +2732,10 @@ uint8_t GF_BSP_TIMER_Init() 80213ca: af00 add r7, sp, #0 HAL_TIM_Base_Start_IT(&htim1); 80213cc: 4804 ldr r0, [pc, #16] ; (80213e0 ) - 80213ce: f017 f98b bl 80386e8 + 80213ce: f017 f9ab bl 8038728 HAL_TIM_Base_Start_IT(&htim8); 80213d2: 4804 ldr r0, [pc, #16] ; (80213e4 ) - 80213d4: f017 f988 bl 80386e8 + 80213d4: f017 f9a8 bl 8038728 return 1; 80213d8: 2301 movs r3, #1 } @@ -2775,7 +2775,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) 8021408: d104 bne.n 8021414 { MX_LWIP_Process(); - 802140a: f01b f9e3 bl 803c7d4 + 802140a: f01b fa03 bl 803c814 GF_BSP_Interrupt_Run_CallBack(DF_BSP_InterCall_TIM8_2ms_PeriodElapsedCallback); 802140e: 200a movs r0, #10 8021410: f7ff fea8 bl 8021164 @@ -2971,7 +2971,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 8021532: 2201 movs r2, #1 8021534: 4930 ldr r1, [pc, #192] ; (80215f8 ) 8021536: 4618 mov r0, r3 - 8021538: f018 fbd8 bl 8039cec + 8021538: f018 fbf8 bl 8039d2c (uint8_t*) &E28_SBUS_UART_Handler.tmp_Rx_Buf, 1); @@ -2981,7 +2981,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 8021540: 2201 movs r2, #1 8021542: 492e ldr r1, [pc, #184] ; (80215fc ) 8021544: 4618 mov r0, r3 - 8021546: f018 fbd1 bl 8039cec + 8021546: f018 fbf1 bl 8039d2c (uint8_t*) &InterCall_DEBUG_UART_Handler.tmp_Rx_Buf, 1); HAL_UART_Receive_IT((RS_485_1_UART_Handler.uart), 802154a: 4b1e ldr r3, [pc, #120] ; (80215c4 ) @@ -2989,7 +2989,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 802154e: 2201 movs r2, #1 8021550: 492b ldr r1, [pc, #172] ; (8021600 ) 8021552: 4618 mov r0, r3 - 8021554: f018 fbca bl 8039cec + 8021554: f018 fbea bl 8039d2c (uint8_t*) &RS_485_1_UART_Handler.tmp_Rx_Buf, 1); HAL_UART_Receive_IT((RS_485_2_UART_Handler.uart), @@ -2998,7 +2998,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 802155c: 2201 movs r2, #1 802155e: 4929 ldr r1, [pc, #164] ; (8021604 ) 8021560: 4618 mov r0, r3 - 8021562: f018 fbc3 bl 8039cec + 8021562: f018 fbe3 bl 8039d2c (uint8_t*) &RS_485_2_UART_Handler.tmp_Rx_Buf, 1); HAL_UART_Receive_IT((RS_485_3_UART_Handler.uart), @@ -3007,7 +3007,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 802156a: 2201 movs r2, #1 802156c: 4926 ldr r1, [pc, #152] ; (8021608 ) 802156e: 4618 mov r0, r3 - 8021570: f018 fbbc bl 8039cec + 8021570: f018 fbdc bl 8039d2c (uint8_t*) &RS_485_3_UART_Handler.tmp_Rx_Buf, 1); HAL_UART_Receive_IT((RS_485_4_UART_Handler.uart), @@ -3016,7 +3016,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 8021578: 2201 movs r2, #1 802157a: 4924 ldr r1, [pc, #144] ; (802160c ) 802157c: 4618 mov r0, r3 - 802157e: f018 fbb5 bl 8039cec + 802157e: f018 fbd5 bl 8039d2c (uint8_t*) &RS_485_4_UART_Handler.tmp_Rx_Buf, 1); HAL_UART_Receive_IT((LTE_7S0_Serial_UART_Handler.uart), @@ -3025,7 +3025,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 8021586: 2201 movs r2, #1 8021588: 4921 ldr r1, [pc, #132] ; (8021610 ) 802158a: 4618 mov r0, r3 - 802158c: f018 fbae bl 8039cec + 802158c: f018 fbce bl 8039d2c @@ -3045,7 +3045,7 @@ void GF_BSP_TIMER_DelayUS(uint32_t n) 80215a4: 2201 movs r2, #1 80215a6: 491d ldr r1, [pc, #116] ; (802161c ) 80215a8: 4618 mov r0, r3 - 80215aa: f018 fb9f bl 8039cec + 80215aa: f018 fbbf bl 8039d2c (uint8_t*) &LPUART1_UART_Handler.tmp_Rx_Buf, 1); #endif @@ -3157,7 +3157,7 @@ void UARTHandlerAddTxList(struct UARTHandler *uartHandler, uint8_t *data, //临时指针2用于逐个申请内存 pTmp = (UARTSendHandler*) malloc(sizeof(UARTSendHandler)); 8021690: f44f 7001 mov.w r0, #516 ; 0x204 - 8021694: f026 fb56 bl 8047d44 + 8021694: f026 fb76 bl 8047d84 8021698: 4603 mov r3, r0 802169a: 617b str r3, [r7, #20] memcpy(pTmp->Tx_Buf, data, length); @@ -3166,7 +3166,7 @@ void UARTHandlerAddTxList(struct UARTHandler *uartHandler, uint8_t *data, 80216a0: 88fa ldrh r2, [r7, #6] 80216a2: 68b9 ldr r1, [r7, #8] 80216a4: 4618 mov r0, r3 - 80216a6: f026 fb6d bl 8047d84 + 80216a6: f026 fb8d bl 8047dc4 pTmp->pNext = NULL; 80216aa: 697b ldr r3, [r7, #20] 80216ac: 2200 movs r2, #0 @@ -3321,7 +3321,7 @@ void UARTHandlerTx(struct UARTHandler *uartHandler) 802179c: f503 5380 add.w r3, r3, #4096 ; 0x1000 80217a0: 8c5a ldrh r2, [r3, #34] ; 0x22 80217a2: 2364 movs r3, #100 ; 0x64 - 80217a4: f018 fa0c bl 8039bc0 + 80217a4: f018 fa2c bl 8039c00 80217a8: e075 b.n 8021896 uartHandler->TxCount,100); }else @@ -3350,7 +3350,7 @@ void UARTHandlerTx(struct UARTHandler *uartHandler) 80217c2: 2201 movs r2, #1 80217c4: f44f 6180 mov.w r1, #1024 ; 0x400 80217c8: 4859 ldr r0, [pc, #356] ; (8021930 ) - 80217ca: f012 fa1d bl 8033c08 + 80217ca: f012 fa3d bl 8033c48 80217ce: e02b b.n 8021828 } else if (uartHandler->uart->Instance == USART3) //**RS485_2 @@ -3366,7 +3366,7 @@ void UARTHandlerTx(struct UARTHandler *uartHandler) 80217dc: 2201 movs r2, #1 80217de: f44f 6100 mov.w r1, #2048 ; 0x800 80217e2: 4853 ldr r0, [pc, #332] ; (8021930 ) - 80217e4: f012 fa10 bl 8033c08 + 80217e4: f012 fa30 bl 8033c48 80217e8: e01e b.n 8021828 } else if (uartHandler->uart->Instance == USART6) //**RS485_3 @@ -3382,7 +3382,7 @@ void UARTHandlerTx(struct UARTHandler *uartHandler) 80217f6: 2201 movs r2, #1 80217f8: f44f 7180 mov.w r1, #256 ; 0x100 80217fc: 484f ldr r0, [pc, #316] ; (802193c ) - 80217fe: f012 fa03 bl 8033c08 + 80217fe: f012 fa23 bl 8033c48 8021802: e011 b.n 8021828 } else if (uartHandler->uart->Instance == UART7) //**RS485_4 @@ -3397,7 +3397,7 @@ void UARTHandlerTx(struct UARTHandler *uartHandler) 8021810: 2201 movs r2, #1 8021812: f44f 7100 mov.w r1, #512 ; 0x200 8021816: 4849 ldr r0, [pc, #292] ; (802193c ) - 8021818: f012 f9f6 bl 8033c08 + 8021818: f012 fa16 bl 8033c48 802181c: e004 b.n 8021828 } else if (uartHandler->uart->Instance == USART2)//**E22 // External serial port @@ -3492,7 +3492,7 @@ __STATIC_FORCEINLINE void __DSB(void) 802188a: f503 5380 add.w r3, r3, #4096 ; 0x1000 802188e: 8c5b ldrh r3, [r3, #34] ; 0x22 8021890: 461a mov r2, r3 - 8021892: f018 fa81 bl 8039d98 + 8021892: f018 faa1 bl 8039dd8 #if defined (hlpuart1Exit) } #endif @@ -3517,7 +3517,7 @@ __STATIC_FORCEINLINE void __DSB(void) 80218aa: 2200 movs r2, #0 80218ac: f44f 6180 mov.w r1, #1024 ; 0x400 80218b0: 481f ldr r0, [pc, #124] ; (8021930 ) - 80218b2: f012 f9a9 bl 8033c08 + 80218b2: f012 f9c9 bl 8033c48 80218b6: e029 b.n 802190c GPIO_PIN_RESET); } else if (uartHandler->uart == USART3) //**RS485_2 @@ -3531,7 +3531,7 @@ __STATIC_FORCEINLINE void __DSB(void) 80218c2: 2200 movs r2, #0 80218c4: f44f 6100 mov.w r1, #2048 ; 0x800 80218c8: 4819 ldr r0, [pc, #100] ; (8021930 ) - 80218ca: f012 f99d bl 8033c08 + 80218ca: f012 f9bd bl 8033c48 80218ce: e01d b.n 802190c GPIO_PIN_RESET); } else if (uartHandler->uart == USART6) //**RS485_3 @@ -3545,7 +3545,7 @@ __STATIC_FORCEINLINE void __DSB(void) 80218da: 2200 movs r2, #0 80218dc: f44f 7180 mov.w r1, #256 ; 0x100 80218e0: 4816 ldr r0, [pc, #88] ; (802193c ) - 80218e2: f012 f991 bl 8033c08 + 80218e2: f012 f9b1 bl 8033c48 80218e6: e011 b.n 802190c RS485_3_DIR_Pin, GPIO_PIN_RESET); } else if (uartHandler->uart == UART7) //**RS485_4 @@ -3559,7 +3559,7 @@ __STATIC_FORCEINLINE void __DSB(void) 80218f2: 2200 movs r2, #0 80218f4: f44f 7100 mov.w r1, #512 ; 0x200 80218f8: 4810 ldr r0, [pc, #64] ; (802193c ) - 80218fa: f012 f985 bl 8033c08 + 80218fa: f012 f9a5 bl 8033c48 80218fe: e005 b.n 802190c RS485_4_DIR_Pin, GPIO_PIN_RESET); } else if (uartHandler->uart == USART2) //**E22 // External serial port @@ -3581,9 +3581,9 @@ __STATIC_FORCEINLINE void __DSB(void) 8021910: bd80 pop {r7, pc} 8021912: bf00 nop 8021914: 24009aac .word 0x24009aac - 8021918: 0804d2bc .word 0x0804d2bc - 802191c: 08049680 .word 0x08049680 - 8021920: 0804962c .word 0x0804962c + 8021918: 0804d2fc .word 0x0804d2fc + 802191c: 080496c0 .word 0x080496c0 + 8021920: 0804966c .word 0x0804966c 8021924: 58000c00 .word 0x58000c00 8021928: 40004c00 .word 0x40004c00 802192c: 40011000 .word 0x40011000 @@ -3647,7 +3647,7 @@ void UARTHandlerRX(struct UARTHandler *uartHandler) 802199c: 3303 adds r3, #3 802199e: 2201 movs r2, #1 80219a0: 4619 mov r1, r3 - 80219a2: f018 f9a3 bl 8039cec + 80219a2: f018 f9c3 bl 8039d2c uartHandler->Wait_Time_Count = 0; 80219a6: 687b ldr r3, [r7, #4] @@ -3719,7 +3719,7 @@ void IntializeUARTHandler(struct UARTHandler *uartHandler, uartHandler->dispacherController = (DispacherController*) malloc( 8021a10: 2018 movs r0, #24 - 8021a12: f026 f997 bl 8047d44 + 8021a12: f026 f9b7 bl 8047d84 8021a16: 4603 mov r3, r0 8021a18: 461a mov r2, r3 8021a1a: 68fb ldr r3, [r7, #12] @@ -4082,7 +4082,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 8021c70: 2200 movs r2, #0 8021c72: f44f 6180 mov.w r1, #1024 ; 0x400 8021c76: 481a ldr r0, [pc, #104] ; (8021ce0 ) - 8021c78: f011 ffc6 bl 8033c08 + 8021c78: f011 ffe6 bl 8033c48 } else if (huart->Instance == UART5) //**E28 // SBUS { @@ -4100,7 +4100,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 8021c88: 2200 movs r2, #0 8021c8a: f44f 6100 mov.w r1, #2048 ; 0x800 8021c8e: 4814 ldr r0, [pc, #80] ; (8021ce0 ) - 8021c90: f011 ffba bl 8033c08 + 8021c90: f011 ffda bl 8033c48 } 8021c94: e01b b.n 8021cce } else if (huart->Instance == USART6) //**RS485_3 @@ -4113,7 +4113,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 8021ca0: 2200 movs r2, #0 8021ca2: f44f 7180 mov.w r1, #256 ; 0x100 8021ca6: 4811 ldr r0, [pc, #68] ; (8021cec ) - 8021ca8: f011 ffae bl 8033c08 + 8021ca8: f011 ffce bl 8033c48 } 8021cac: e00f b.n 8021cce } else if (huart->Instance == UART7) //**RS485_4 @@ -4126,7 +4126,7 @@ void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) 8021cb8: 2200 movs r2, #0 8021cba: f44f 7100 mov.w r1, #512 ; 0x200 8021cbe: 480b ldr r0, [pc, #44] ; (8021cec ) - 8021cc0: f011 ffa2 bl 8033c08 + 8021cc0: f011 ffc2 bl 8033c48 } 8021cc4: e003 b.n 8021cce } else if (huart->Instance == USART2) //**E22 // External serial port @@ -4213,7 +4213,7 @@ void GF_UART_Send_List_Send(struct UARTHandler *handler) 8021d52: 881b ldrh r3, [r3, #0] memcpy(handler->Tx_Buf, handler->pCurrentUARTSendHadler->Tx_Buf, 8021d54: 461a mov r2, r3 - 8021d56: f026 f815 bl 8047d84 + 8021d56: f026 f835 bl 8047dc4 handler->SendList_Period = handler->pCurrentUARTSendHadler->SendListTimePeriod; 8021d5a: 687b ldr r3, [r7, #4] @@ -4269,7 +4269,7 @@ void GF_UART_Send_List_Send(struct UARTHandler *handler) 8021dbc: f503 5380 add.w r3, r3, #4096 ; 0x1000 8021dc0: 6b5b ldr r3, [r3, #52] ; 0x34 8021dc2: 4618 mov r0, r3 - 8021dc4: f025 ffc6 bl 8047d54 + 8021dc4: f025 ffe6 bl 8047d94 handler->pCurrentUARTSendHadler = temp; 8021dc8: 687b ldr r3, [r7, #4] 8021dca: f503 5380 add.w r3, r3, #4096 ; 0x1000 @@ -4288,7 +4288,7 @@ void GF_UART_Send_List_Send(struct UARTHandler *handler) 8021dd8: f503 5380 add.w r3, r3, #4096 ; 0x1000 8021ddc: 6b5b ldr r3, [r3, #52] ; 0x34 8021dde: 4618 mov r0, r3 - 8021de0: f025 ffb8 bl 8047d54 + 8021de0: f025 ffd8 bl 8047d94 handler->pCurrentUARTSendHadler = NULL; 8021de4: 687b ldr r3, [r7, #4] 8021de6: f503 5380 add.w r3, r3, #4096 ; 0x1000 @@ -4333,7 +4333,7 @@ static void udp_receive_callback(void *arg, struct udp_pcb *upcb, 8021e1c: 895b ldrh r3, [r3, #10] 8021e1e: 461a mov r2, r3 8021e20: 4881 ldr r0, [pc, #516] ; (8022028 ) - 8021e22: f025 ffaf bl 8047d84 + 8021e22: f025 ffcf bl 8047dc4 if (upcb->local_port == UDP_DLT_LOCAL_PORT) 8021e26: 69bb ldr r3, [r7, #24] @@ -4543,7 +4543,7 @@ static void udp_receive_callback(void *arg, struct udp_pcb *upcb, 8021f84: f107 0324 add.w r3, r7, #36 ; 0x24 8021f88: 2248 movs r2, #72 ; 0x48 8021f8a: 4619 mov r1, r3 - 8021f8c: f025 fefa bl 8047d84 + 8021f8c: f025 ff1a bl 8047dc4 if (Is_All_Button_Reset == 0) 8021f90: 4b2c ldr r3, [pc, #176] ; (8022044 ) @@ -4626,7 +4626,7 @@ static void udp_receive_callback(void *arg, struct udp_pcb *upcb, } pbuf_free(p); 802200a: 6978 ldr r0, [r7, #20] - 802200c: f01c fc10 bl 803e830 + 802200c: f01c fc30 bl 803e870 8022010: e006 b.n 8022020 if (p == NULL) return; 8022012: bf00 nop @@ -4649,13 +4649,13 @@ static void udp_receive_callback(void *arg, struct udp_pcb *upcb, 802202c: 240091c4 .word 0x240091c4 8022030: 24008dba .word 0x24008dba 8022034: 24008dbc .word 0x24008dbc - 8022038: 0804cb64 .word 0x0804cb64 + 8022038: 0804cba4 .word 0x0804cba4 802203c: 24000500 .word 0x24000500 8022040: 2400ad24 .word 0x2400ad24 8022044: 2400ad20 .word 0x2400ad20 8022048: 2400055c .word 0x2400055c - 802204c: 080496a0 .word 0x080496a0 - 8022050: 080496b0 .word 0x080496b0 + 802204c: 080496e0 .word 0x080496e0 + 8022050: 080496f0 .word 0x080496f0 08022054 : @@ -4677,7 +4677,7 @@ void udp_dlt_send_back(char *pData, uint16_t Size) 8022062: f44f 7220 mov.w r2, #640 ; 0x280 8022066: 4619 mov r1, r3 8022068: 2036 movs r0, #54 ; 0x36 - 802206a: f01c f8fd bl 803e268 + 802206a: f01c f91d bl 803e2a8 802206e: 60f8 str r0, [r7, #12] if (p != NULL) 8022070: 68fb ldr r3, [r7, #12] @@ -4690,7 +4690,7 @@ void udp_dlt_send_back(char *pData, uint16_t Size) 8022078: 461a mov r2, r3 802207a: 6879 ldr r1, [r7, #4] 802207c: 68f8 ldr r0, [r7, #12] - 802207e: f01c fe43 bl 803ed08 + 802207e: f01c fe63 bl 803ed48 /* 发送udp数据 */ @@ -4701,14 +4701,14 @@ void udp_dlt_send_back(char *pData, uint16_t Size) 8022086: f242 3328 movw r3, #9000 ; 0x2328 802208a: 4a07 ldr r2, [pc, #28] ; (80220a8 ) 802208c: 68f9 ldr r1, [r7, #12] - 802208e: f022 fff3 bl 8045078 + 802208e: f023 f813 bl 80450b8 8022092: 4603 mov r3, r0 8022094: 72fb strb r3, [r7, #11] UDP_REMOTE_DLT_PORT); /* 释放缓冲区空间 */ pbuf_free(p); 8022096: 68f8 ldr r0, [r7, #12] - 8022098: f01c fbca bl 803e830 + 8022098: f01c fbea bl 803e870 } } 802209c: bf00 nop @@ -4735,7 +4735,7 @@ void udp_cmd_send_back(char *pData, uint16_t Size) 80220ba: f44f 7220 mov.w r2, #640 ; 0x280 80220be: 4619 mov r1, r3 80220c0: 2036 movs r0, #54 ; 0x36 - 80220c2: f01c f8d1 bl 803e268 + 80220c2: f01c f8f1 bl 803e2a8 80220c6: 60f8 str r0, [r7, #12] if (p != NULL) @@ -4749,7 +4749,7 @@ void udp_cmd_send_back(char *pData, uint16_t Size) 80220d0: 461a mov r2, r3 80220d2: 6879 ldr r1, [r7, #4] 80220d4: 68f8 ldr r0, [r7, #12] - 80220d6: f01c fe17 bl 803ed08 + 80220d6: f01c fe37 bl 803ed48 /* 发送udp数据 */ err_t err = udp_send(upcb_Tx_Cmd, p); @@ -4757,7 +4757,7 @@ void udp_cmd_send_back(char *pData, uint16_t Size) 80220dc: 681b ldr r3, [r3, #0] 80220de: 68f9 ldr r1, [r7, #12] 80220e0: 4618 mov r0, r3 - 80220e2: f022 ff95 bl 8045010 + 80220e2: f022 ffb5 bl 8045050 80220e6: 4603 mov r3, r0 80220e8: 72fb strb r3, [r7, #11] if (err != ERR_OK) @@ -4770,12 +4770,12 @@ void udp_cmd_send_back(char *pData, uint16_t Size) 80220f2: f997 300b ldrsb.w r3, [r7, #11] 80220f6: 4619 mov r1, r3 80220f8: 4805 ldr r0, [pc, #20] ; (8022110 ) - 80220fa: f025 ff53 bl 8047fa4 + 80220fa: f025 ff73 bl 8047fe4 } /* 释放缓冲区空间 */ pbuf_free(p); 80220fe: 68f8 ldr r0, [r7, #12] - 8022100: f01c fb96 bl 803e830 + 8022100: f01c fbb6 bl 803e870 } } 8022104: bf00 nop @@ -4783,7 +4783,7 @@ void udp_cmd_send_back(char *pData, uint16_t Size) 8022108: 46bd mov sp, r7 802210a: bd80 pop {r7, pc} 802210c: 240091b0 .word 0x240091b0 - 8022110: 080496bc .word 0x080496bc + 8022110: 080496fc .word 0x080496fc 08022114 : @@ -4803,7 +4803,7 @@ void udp_cmd_send_GV(char *pData, uint16_t Size) 8022122: f44f 7220 mov.w r2, #640 ; 0x280 8022126: 4619 mov r1, r3 8022128: 2036 movs r0, #54 ; 0x36 - 802212a: f01c f89d bl 803e268 + 802212a: f01c f8bd bl 803e2a8 802212e: 60f8 str r0, [r7, #12] if (p != NULL) @@ -4817,7 +4817,7 @@ void udp_cmd_send_GV(char *pData, uint16_t Size) 8022138: 461a mov r2, r3 802213a: 6879 ldr r1, [r7, #4] 802213c: 68f8 ldr r0, [r7, #12] - 802213e: f01c fde3 bl 803ed08 + 802213e: f01c fe03 bl 803ed48 /* 发送udp数据 */ err_t err = udp_send(upcb_Tx_GV, p); @@ -4825,7 +4825,7 @@ void udp_cmd_send_GV(char *pData, uint16_t Size) 8022144: 681b ldr r3, [r3, #0] 8022146: 68f9 ldr r1, [r7, #12] 8022148: 4618 mov r0, r3 - 802214a: f022 ff61 bl 8045010 + 802214a: f022 ff81 bl 8045050 802214e: 4603 mov r3, r0 8022150: 72fb strb r3, [r7, #11] { @@ -4835,7 +4835,7 @@ void udp_cmd_send_GV(char *pData, uint16_t Size) /* 释放缓冲区空间 */ pbuf_free(p); 8022152: 68f8 ldr r0, [r7, #12] - 8022154: f01c fb6c bl 803e830 + 8022154: f01c fb8c bl 803e870 } } 8022158: bf00 nop @@ -4863,7 +4863,7 @@ void udp_send_by_pcb(struct udp_pcb *upcb, char *pData, uint16_t Size) 8022174: f44f 7220 mov.w r2, #640 ; 0x280 8022178: 4619 mov r1, r3 802217a: 2036 movs r0, #54 ; 0x36 - 802217c: f01c f874 bl 803e268 + 802217c: f01c f894 bl 803e2a8 8022180: 6178 str r0, [r7, #20] if (p != NULL) @@ -4877,13 +4877,13 @@ void udp_send_by_pcb(struct udp_pcb *upcb, char *pData, uint16_t Size) 802218a: 461a mov r2, r3 802218c: 68b9 ldr r1, [r7, #8] 802218e: 6978 ldr r0, [r7, #20] - 8022190: f01c fdba bl 803ed08 + 8022190: f01c fdda bl 803ed48 /* 发送udp数据 */ err_t err = udp_send(upcb, p); 8022194: 6979 ldr r1, [r7, #20] 8022196: 68f8 ldr r0, [r7, #12] - 8022198: f022 ff3a bl 8045010 + 8022198: f022 ff5a bl 8045050 802219c: 4603 mov r3, r0 802219e: 74fb strb r3, [r7, #19] { @@ -4893,7 +4893,7 @@ void udp_send_by_pcb(struct udp_pcb *upcb, char *pData, uint16_t Size) /* 释放缓冲区空间 */ pbuf_free(p); 80221a0: 6978 ldr r0, [r7, #20] - 80221a2: f01c fb45 bl 803e830 + 80221a2: f01c fb65 bl 803e870 } } 80221a6: bf00 nop @@ -4938,7 +4938,7 @@ void udp_client_init(void) /* 创建udp控制块 */ upcb_Rx_DLT = udp_new(); - 80221d2: f023 fa5f bl 8045694 + 80221d2: f023 fa7f bl 80456d4 80221d6: 4603 mov r3, r0 80221d8: 4a87 ldr r2, [pc, #540] ; (80223f8 ) 80221da: 6013 str r3, [r2, #0] @@ -4959,7 +4959,7 @@ void udp_client_init(void) 80221e8: f44f 52fa mov.w r2, #8000 ; 0x1f40 80221ec: 4983 ldr r1, [pc, #524] ; (80223fc ) 80221ee: 4618 mov r0, r3 - 80221f0: f023 f8f8 bl 80453e4 + 80221f0: f023 f918 bl 8045424 80221f4: 4603 mov r3, r0 80221f6: 71fb strb r3, [r7, #7] if (err == ERR_OK)//绑定成功 @@ -4975,7 +4975,7 @@ void udp_client_init(void) 8022204: 2200 movs r2, #0 8022206: 497e ldr r1, [pc, #504] ; (8022400 ) 8022208: 4618 mov r0, r3 - 802220a: f023 f9e1 bl 80455d0 + 802220a: f023 fa01 bl 8045610 802220e: e004 b.n 802221a } else @@ -4984,13 +4984,13 @@ void udp_client_init(void) 8022210: 4b79 ldr r3, [pc, #484] ; (80223f8 ) 8022212: 681b ldr r3, [r3, #0] 8022214: 4618 mov r0, r3 - 8022216: f023 f9fb bl 8045610 + 8022216: f023 fa1b bl 8045650 } } upcb_Rx_From_Android = udp_new(); - 802221a: f023 fa3b bl 8045694 + 802221a: f023 fa5b bl 80456d4 802221e: 4603 mov r3, r0 8022220: 4a78 ldr r2, [pc, #480] ; (8022404 ) 8022222: 6013 str r3, [r2, #0] @@ -5011,7 +5011,7 @@ void udp_client_init(void) 8022230: f641 7246 movw r2, #8006 ; 0x1f46 8022234: 4971 ldr r1, [pc, #452] ; (80223fc ) 8022236: 4618 mov r0, r3 - 8022238: f023 f8d4 bl 80453e4 + 8022238: f023 f8f4 bl 8045424 802223c: 4603 mov r3, r0 802223e: 71fb strb r3, [r7, #7] UDP_CMD_LOCAL_Android_Listen_PORT); @@ -5028,7 +5028,7 @@ void udp_client_init(void) 802224c: 2200 movs r2, #0 802224e: 496c ldr r1, [pc, #432] ; (8022400 ) 8022250: 4618 mov r0, r3 - 8022252: f023 f9bd bl 80455d0 + 8022252: f023 f9dd bl 8045610 HardWareErrorController->Add_PCOMHardWare(HardWareErrorController, 8022256: 4b6c ldr r3, [pc, #432] ; (8022408 ) @@ -5060,13 +5060,13 @@ void udp_client_init(void) 802227c: 4b61 ldr r3, [pc, #388] ; (8022404 ) 802227e: 681b ldr r3, [r3, #0] 8022280: 4618 mov r0, r3 - 8022282: f023 f9c5 bl 8045610 + 8022282: f023 f9e5 bl 8045650 } } upcb_Rx_Cmd = udp_new(); - 8022286: f023 fa05 bl 8045694 + 8022286: f023 fa25 bl 80456d4 802228a: 4603 mov r3, r0 802228c: 4a61 ldr r2, [pc, #388] ; (8022414 ) 802228e: 6013 str r3, [r2, #0] @@ -5087,7 +5087,7 @@ void udp_client_init(void) 802229c: f641 7242 movw r2, #8002 ; 0x1f42 80222a0: 4956 ldr r1, [pc, #344] ; (80223fc ) 80222a2: 4618 mov r0, r3 - 80222a4: f023 f89e bl 80453e4 + 80222a4: f023 f8be bl 8045424 80222a8: 4603 mov r3, r0 80222aa: 71fb strb r3, [r7, #7] if (err == ERR_OK) @@ -5102,7 +5102,7 @@ void udp_client_init(void) 80222b8: 2200 movs r2, #0 80222ba: 4951 ldr r1, [pc, #324] ; (8022400 ) 80222bc: 4618 mov r0, r3 - 80222be: f023 f987 bl 80455d0 + 80222be: f023 f9a7 bl 8045610 80222c2: e004 b.n 80222ce } else @@ -5111,12 +5111,12 @@ void udp_client_init(void) 80222c4: 4b53 ldr r3, [pc, #332] ; (8022414 ) 80222c6: 681b ldr r3, [r3, #0] 80222c8: 4618 mov r0, r3 - 80222ca: f023 f9a1 bl 8045610 + 80222ca: f023 f9c1 bl 8045650 } } upcb_Tx_Cmd = udp_new(); - 80222ce: f023 f9e1 bl 8045694 + 80222ce: f023 fa01 bl 80456d4 80222d2: 4603 mov r3, r0 80222d4: 4a50 ldr r2, [pc, #320] ; (8022418 ) 80222d6: 6013 str r3, [r2, #0] @@ -5142,7 +5142,7 @@ void udp_client_init(void) 80222ee: f242 322a movw r2, #9002 ; 0x232a 80222f2: 493d ldr r1, [pc, #244] ; (80223e8 ) 80222f4: 4618 mov r0, r3 - 80222f6: f023 f8fd bl 80454f4 + 80222f6: f023 f91d bl 8045534 80222fa: 4603 mov r3, r0 80222fc: 71fb strb r3, [r7, #7] @@ -5159,11 +5159,11 @@ void udp_client_init(void) 8022306: 4b44 ldr r3, [pc, #272] ; (8022418 ) 8022308: 681b ldr r3, [r3, #0] 802230a: 4618 mov r0, r3 - 802230c: f023 f980 bl 8045610 + 802230c: f023 f9a0 bl 8045650 } } upcb_Tx_DLT = udp_new(); - 8022310: f023 f9c0 bl 8045694 + 8022310: f023 f9e0 bl 80456d4 8022314: 4603 mov r3, r0 8022316: 4a41 ldr r2, [pc, #260] ; (802241c ) 8022318: 6013 str r3, [r2, #0] @@ -5188,7 +5188,7 @@ void udp_client_init(void) 8022330: f242 3228 movw r2, #9000 ; 0x2328 8022334: 492c ldr r1, [pc, #176] ; (80223e8 ) 8022336: 4618 mov r0, r3 - 8022338: f023 f8dc bl 80454f4 + 8022338: f023 f8fc bl 8045534 802233c: 4603 mov r3, r0 802233e: 71fb strb r3, [r7, #7] @@ -5205,12 +5205,12 @@ void udp_client_init(void) 8022348: 4b34 ldr r3, [pc, #208] ; (802241c ) 802234a: 681b ldr r3, [r3, #0] 802234c: 4618 mov r0, r3 - 802234e: f023 f95f bl 8045610 + 802234e: f023 f97f bl 8045650 } } upcb_Tx_GV = udp_new(); - 8022352: f023 f99f bl 8045694 + 8022352: f023 f9bf bl 80456d4 8022356: 4603 mov r3, r0 8022358: 4a31 ldr r2, [pc, #196] ; (8022420 ) 802235a: 6013 str r3, [r2, #0] @@ -5235,7 +5235,7 @@ void udp_client_init(void) 8022372: f242 322c movw r2, #9004 ; 0x232c 8022376: 491c ldr r1, [pc, #112] ; (80223e8 ) 8022378: 4618 mov r0, r3 - 802237a: f023 f8bb bl 80454f4 + 802237a: f023 f8db bl 8045534 802237e: 4603 mov r3, r0 8022380: 71fb strb r3, [r7, #7] @@ -5252,12 +5252,12 @@ void udp_client_init(void) 802238a: 4b25 ldr r3, [pc, #148] ; (8022420 ) 802238c: 681b ldr r3, [r3, #0] 802238e: 4618 mov r0, r3 - 8022390: f023 f93e bl 8045610 + 8022390: f023 f95e bl 8045650 } } upcb_Tx_Android = udp_new(); - 8022394: f023 f97e bl 8045694 + 8022394: f023 f99e bl 80456d4 8022398: 4603 mov r3, r0 802239a: 4a22 ldr r2, [pc, #136] ; (8022424 ) 802239c: 6013 str r3, [r2, #0] @@ -5282,7 +5282,7 @@ void udp_client_init(void) 80223b4: f242 322e movw r2, #9006 ; 0x232e 80223b8: 490d ldr r1, [pc, #52] ; (80223f0 ) 80223ba: 4618 mov r0, r3 - 80223bc: f023 f89a bl 80454f4 + 80223bc: f023 f8ba bl 8045534 80223c0: 4603 mov r3, r0 80223c2: 71fb strb r3, [r7, #7] UDP_REMOTE_Android_PORT); @@ -5300,7 +5300,7 @@ void udp_client_init(void) 80223cc: 4b15 ldr r3, [pc, #84] ; (8022424 ) 80223ce: 681b ldr r3, [r3, #0] 80223d0: 4618 mov r0, r3 - 80223d2: f023 f91d bl 8045610 + 80223d2: f023 f93d bl 8045650 } } @@ -5317,12 +5317,12 @@ void udp_client_init(void) 80223f0: 240091c0 .word 0x240091c0 80223f4: 1490a8c0 .word 0x1490a8c0 80223f8: 240091a0 .word 0x240091a0 - 80223fc: 0804d488 .word 0x0804d488 + 80223fc: 0804d4c8 .word 0x0804d4c8 8022400: 08021e01 .word 0x08021e01 8022404: 240091a8 .word 0x240091a8 8022408: 2400055c .word 0x2400055c - 802240c: 080496a0 .word 0x080496a0 - 8022410: 080496b0 .word 0x080496b0 + 802240c: 080496e0 .word 0x080496e0 + 8022410: 080496f0 .word 0x080496f0 8022414: 240091a4 .word 0x240091a4 8022418: 240091b0 .word 0x240091b0 802241c: 240091ac .word 0x240091ac @@ -5423,7 +5423,7 @@ void UDP_GV_Dispatch() 80224d8: 240091c8 .word 0x240091c8 80224dc: 24008db4 .word 0x24008db4 80224e0: 240002b0 .word 0x240002b0 - 80224e4: 0804cdc8 .word 0x0804cdc8 + 80224e4: 0804ce08 .word 0x0804ce08 080224e8 : //现在是每一百ms执行一次 @@ -5539,7 +5539,7 @@ void UDP_IV_Dispatch() 80225da: bd80 pop {r7, pc} 80225dc: 240091cc .word 0x240091cc 80225e0: 24000528 .word 0x24000528 - 80225e4: 0804ce64 .word 0x0804ce64 + 80225e4: 0804cea4 .word 0x0804cea4 80225e8: 240091b8 .word 0x240091b8 080225ec : @@ -5635,7 +5635,7 @@ void client_setting_intialize(struct UARTHandler *Handler) 8022688: 240091dc .word 0x240091dc 802268c: 08022699 .word 0x08022699 8022690: 24009aac .word 0x24009aac - 8022694: 080496dc .word 0x080496dc + 8022694: 0804971c .word 0x0804971c 08022698 : @@ -5740,7 +5740,7 @@ void UpdateIV() 8022746: bf00 nop 8022748: 240091d8 .word 0x240091d8 802274c: 24000528 .word 0x24000528 - 8022750: 0804ce64 .word 0x0804ce64 + 8022750: 0804cea4 .word 0x0804cea4 08022754 : @@ -5765,7 +5765,7 @@ void decode_received_data_from_client(uint8_t *buffer, uint16_t length) 802276a: f107 0328 add.w r3, r7, #40 ; 0x28 802276e: 6979 ldr r1, [r7, #20] 8022770: 4618 mov r0, r3 - 8022772: f025 fb07 bl 8047d84 + 8022772: f025 fb27 bl 8047dc4 //if (*buffer == 0x55 && *(buffer + 1) == 0x55 && length >= 4) if (buffer[0] == 0x55 && buffer[1] == 0x55 && length >= 4) @@ -5936,11 +5936,11 @@ void decode_received_data_from_client(uint8_t *buffer, uint16_t length) 8022888: bd90 pop {r4, r7, pc} 802288a: bf00 nop 802288c: 24000500 .word 0x24000500 - 8022890: 0804ce9c .word 0x0804ce9c + 8022890: 0804cedc .word 0x0804cedc 8022894: 24009aac .word 0x24009aac - 8022898: 0804d2cc .word 0x0804d2cc - 802289c: 08049730 .word 0x08049730 - 80228a0: 080496f8 .word 0x080496f8 + 8022898: 0804d30c .word 0x0804d30c + 802289c: 08049770 .word 0x08049770 + 80228a0: 08049738 .word 0x08049738 080228a4 : #include @@ -6059,7 +6059,7 @@ void Dispatcher_List_Add_t(DispacherController *uartHandler, { uartHandler->pHead = uartHandler->pTail = (Dispatcher*) malloc( 8022934: 2008 movs r0, #8 - 8022936: f025 fa05 bl 8047d44 + 8022936: f025 fa25 bl 8047d84 802293a: 4603 mov r3, r0 802293c: 461a mov r2, r3 802293e: 687b ldr r3, [r7, #4] @@ -6108,7 +6108,7 @@ void Dispatcher_List_Add_t(DispacherController *uartHandler, //临时指针2用于逐个申请内存 pTmp = (Dispatcher*) malloc(sizeof(Dispatcher)); 802297c: 2008 movs r0, #8 - 802297e: f025 f9e1 bl 8047d44 + 802297e: f025 fa01 bl 8047d84 8022982: 4603 mov r3, r0 8022984: 60fb str r3, [r7, #12] pTmp->dispache = dispache; @@ -6179,7 +6179,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, uartHandler->pComHWHead = uartHandler->pComHWTail = (ComHardWare*) malloc(sizeof(ComHardWare)); 80229dc: 203c movs r0, #60 ; 0x3c - 80229de: f025 f9b1 bl 8047d44 + 80229de: f025 f9d1 bl 8047d84 80229e2: 4603 mov r3, r0 80229e4: 461a mov r2, r3 uartHandler->pComHWHead = uartHandler->pComHWTail = @@ -6196,7 +6196,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, 80229f6: 2232 movs r2, #50 ; 0x32 80229f8: 2100 movs r1, #0 80229fa: 4618 mov r0, r3 - 80229fc: f025 f9ea bl 8047dd4 + 80229fc: f025 fa0a bl 8047e14 sizeof(uartHandler->pComHWHead->Name)); memcpy(uartHandler->pComHWHead->Name, name, strlen(name)); 8022a00: 68fb ldr r3, [r7, #12] @@ -6208,7 +6208,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, 8022a0e: 461a mov r2, r3 8022a10: 68b9 ldr r1, [r7, #8] 8022a12: 4620 mov r0, r4 - 8022a14: f025 f9b6 bl 8047d84 + 8022a14: f025 f9d6 bl 8047dc4 uartHandler->pComHWHead->IsOnline = value; 8022a18: 68fb ldr r3, [r7, #12] 8022a1a: 681b ldr r3, [r3, #0] @@ -6230,7 +6230,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, pTmp = (ComHardWare*) malloc(sizeof(ComHardWare)); 8022a34: 203c movs r0, #60 ; 0x3c - 8022a36: f025 f985 bl 8047d44 + 8022a36: f025 f9a5 bl 8047d84 8022a3a: 4603 mov r3, r0 8022a3c: 617b str r3, [r7, #20] memset(pTmp->Name, '\0', sizeof(pTmp->Name)); @@ -6238,7 +6238,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, 8022a40: 2232 movs r2, #50 ; 0x32 8022a42: 2100 movs r1, #0 8022a44: 4618 mov r0, r3 - 8022a46: f025 f9c5 bl 8047dd4 + 8022a46: f025 f9e5 bl 8047e14 memcpy(pTmp->Name, name, strlen(name)); 8022a4a: 697c ldr r4, [r7, #20] 8022a4c: 68b8 ldr r0, [r7, #8] @@ -6247,7 +6247,7 @@ void ComHardWare_List_Add_t(HardWareController *uartHandler, char *name, 8022a54: 461a mov r2, r3 8022a56: 68b9 ldr r1, [r7, #8] 8022a58: 4620 mov r0, r4 - 8022a5a: f025 f993 bl 8047d84 + 8022a5a: f025 f9b3 bl 8047dc4 pTmp->BitFlag = bitFlag; 8022a5e: 697b ldr r3, [r7, #20] @@ -6418,7 +6418,7 @@ void PCOMHardWare_Check_t(HardWareController *uartHandler) 8022b2a: 2232 movs r2, #50 ; 0x32 8022b2c: 2100 movs r1, #0 8022b2e: 4830 ldr r0, [pc, #192] ; (8022bf0 ) - 8022b30: f025 f950 bl 8047dd4 + 8022b30: f025 f970 bl 8047e14 memcpy(str1, ptr->Name, strlen(ptr->Name)); 8022b34: 68fc ldr r4, [r7, #12] 8022b36: 68fb ldr r3, [r7, #12] @@ -6428,7 +6428,7 @@ void PCOMHardWare_Check_t(HardWareController *uartHandler) 8022b40: 461a mov r2, r3 8022b42: 4621 mov r1, r4 8022b44: 482a ldr r0, [pc, #168] ; (8022bf0 ) - 8022b46: f025 f91d bl 8047d84 + 8022b46: f025 f93d bl 8047dc4 LOGFF(DL_ERROR, "connecting Error %s", ptr->Name); 8022b4a: 4b2a ldr r3, [pc, #168] ; (8022bf4 ) 8022b4c: 781b ldrb r3, [r3, #0] @@ -6533,9 +6533,9 @@ void PCOMHardWare_Check_t(HardWareController *uartHandler) 8022bee: bf00 nop 8022bf0: 240091e0 .word 0x240091e0 8022bf4: 24009aac .word 0x24009aac - 8022bf8: 0804d2f0 .word 0x0804d2f0 - 8022bfc: 08049790 .word 0x08049790 - 8022c00: 0804975c .word 0x0804975c + 8022bf8: 0804d330 .word 0x0804d330 + 8022bfc: 080497d0 .word 0x080497d0 + 8022c00: 0804979c .word 0x0804979c 8022c04: 240001d0 .word 0x240001d0 08022c08 <__NVIC_SystemReset>: @@ -6598,7 +6598,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022c70: f44f 727a mov.w r2, #1000 ; 0x3e8 8022c74: 2100 movs r1, #0 8022c76: 4618 mov r0, r3 - 8022c78: f025 f8ac bl 8047dd4 + 8022c78: f025 f8cc bl 8047e14 memcpy(array, buffer, length); 8022c7c: f607 1328 addw r3, r7, #2344 ; 0x928 8022c80: f6a3 0336 subw r3, r3, #2102 ; 0x836 @@ -6607,7 +6607,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022c8a: f6a3 0334 subw r3, r3, #2100 ; 0x834 8022c8e: f507 60a8 add.w r0, r7, #1344 ; 0x540 8022c92: 6819 ldr r1, [r3, #0] - 8022c94: f025 f876 bl 8047d84 + 8022c94: f025 f896 bl 8047dc4 if (length >= 1) 8022c98: f607 1328 addw r3, r7, #2344 ; 0x928 @@ -6657,7 +6657,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, memcpy(&decoded_Cmd.Buff_Data, 8022d00: 4619 mov r1, r3 8022d02: 48ab ldr r0, [pc, #684] ; (8022fb0 ) - 8022d04: f025 f83e bl 8047d84 + 8022d04: f025 f85e bl 8047dc4 switch (decoded_Cmd.CommadNum) 8022d08: 4ba7 ldr r3, [pc, #668] ; (8022fa8 ) @@ -6715,7 +6715,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022d82: 4619 mov r1, r3 8022d84: 23d8 movs r3, #216 ; 0xd8 8022d86: 461a mov r2, r3 - 8022d88: f024 fffc bl 8047d84 + 8022d88: f025 f81c bl 8047dc4 is_upper_computer_take_over_control = 0; 8022d8c: 4b8a ldr r3, [pc, #552] ; (8022fb8 ) 8022d8e: 2200 movs r2, #0 @@ -6740,13 +6740,13 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022dbc: f104 0310 add.w r3, r4, #16 8022dc0: f44f 7203 mov.w r2, #524 ; 0x20c 8022dc4: 4619 mov r1, r3 - 8022dc6: f024 ffdd bl 8047d84 + 8022dc6: f024 fffd bl 8047dc4 8022dca: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022dce: f000 fe03 bl 80239d8 fsm_state_set(¤t_robot_move_state, 8022dd2: 497c ldr r1, [pc, #496] ; (8022fc4 ) 8022dd4: 487c ldr r0, [pc, #496] ; (8022fc8 ) - 8022dd6: f006 fb8f bl 80294f8 + 8022dd6: f006 fbaf bl 8029538 break; 8022dda: e03b b.n 8022e54 is_upper_computer_take_over_control = 1; @@ -6773,17 +6773,17 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022e0c: f104 0310 add.w r3, r4, #16 8022e10: f44f 7203 mov.w r2, #524 ; 0x20c 8022e14: 4619 mov r1, r3 - 8022e16: f024 ffb5 bl 8047d84 + 8022e16: f024 ffd5 bl 8047dc4 8022e1a: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022e1e: f000 fddb bl 80239d8 fsm_state_set(¤t_motor_power_state, 8022e22: 496b ldr r1, [pc, #428] ; (8022fd0 ) 8022e24: 486b ldr r0, [pc, #428] ; (8022fd4 ) - 8022e26: f006 fb67 bl 80294f8 + 8022e26: f006 fb87 bl 8029538 fsm_state_set(¤t_robot_move_state, 8022e2a: 4966 ldr r1, [pc, #408] ; (8022fc4 ) 8022e2c: 4866 ldr r0, [pc, #408] ; (8022fc8 ) - 8022e2e: f006 fb63 bl 80294f8 + 8022e2e: f006 fb83 bl 8029538 GV.Robot_Move_Speed = 1000; 8022e32: 4b69 ldr r3, [pc, #420] ; (8022fd8 ) 8022e34: f44f 727a mov.w r2, #1000 ; 0x3e8 @@ -6845,7 +6845,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022ea6: f104 0310 add.w r3, r4, #16 8022eaa: f44f 7203 mov.w r2, #524 ; 0x20c 8022eae: 4619 mov r1, r3 - 8022eb0: f024 ff68 bl 8047d84 + 8022eb0: f024 ff88 bl 8047dc4 8022eb4: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022eb8: f000 fd8e bl 80239d8 "manual control halt success", sendWay, @@ -6853,7 +6853,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, 8022ebc: 4941 ldr r1, [pc, #260] ; (8022fc4 ) 8022ebe: 4842 ldr r0, [pc, #264] ; (8022fc8 ) - 8022ec0: f006 fb1a bl 80294f8 + 8022ec0: f006 fb3a bl 8029538 &robot_halt_state); break; 8022ec4: e0c0 b.n 8023048 @@ -6880,7 +6880,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022ef0: f104 0310 add.w r3, r4, #16 8022ef4: f44f 7203 mov.w r2, #524 ; 0x20c 8022ef8: 4619 mov r1, r3 - 8022efa: f024 ff43 bl 8047d84 + 8022efa: f024 ff63 bl 8047dc4 8022efe: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022f02: f000 fd69 bl 80239d8 "manual control forward success", sendWay, @@ -6888,7 +6888,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, 8022f06: 4938 ldr r1, [pc, #224] ; (8022fe8 ) 8022f08: 482f ldr r0, [pc, #188] ; (8022fc8 ) - 8022f0a: f006 faf5 bl 80294f8 + 8022f0a: f006 fb15 bl 8029538 &robot_forwards_state); break; 8022f0e: e09b b.n 8023048 @@ -6915,7 +6915,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022f3a: f104 0310 add.w r3, r4, #16 8022f3e: f44f 7203 mov.w r2, #524 ; 0x20c 8022f42: 4619 mov r1, r3 - 8022f44: f024 ff1e bl 8047d84 + 8022f44: f024 ff3e bl 8047dc4 8022f48: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022f4c: f000 fd44 bl 80239d8 "manual control backward success", sendWay, @@ -6923,7 +6923,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, 8022f50: 4927 ldr r1, [pc, #156] ; (8022ff0 ) 8022f52: 481d ldr r0, [pc, #116] ; (8022fc8 ) - 8022f54: f006 fad0 bl 80294f8 + 8022f54: f006 faf0 bl 8029538 &robot_backwards_state); break; 8022f58: e076 b.n 8023048 @@ -6950,7 +6950,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8022f84: f104 0310 add.w r3, r4, #16 8022f88: f44f 7203 mov.w r2, #524 ; 0x20c 8022f8c: 4619 mov r1, r3 - 8022f8e: f024 fef9 bl 8047d84 + 8022f8e: f024 ff19 bl 8047dc4 8022f92: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8022f96: f000 fd1f bl 80239d8 "manual control turn left success", sendWay, @@ -6958,31 +6958,31 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, 8022f9a: 4917 ldr r1, [pc, #92] ; (8022ff8 ) 8022f9c: 480a ldr r0, [pc, #40] ; (8022fc8 ) - 8022f9e: f006 faab bl 80294f8 + 8022f9e: f006 facb bl 8029538 &robot_turn_left_state); break; 8022fa2: e051 b.n 8023048 8022fa4: 2400964c .word 0x2400964c 8022fa8: 24009214 .word 0x24009214 - 8022fac: 0804ccac .word 0x0804ccac + 8022fac: 0804ccec .word 0x0804ccec 8022fb0: 24009230 .word 0x24009230 8022fb4: 240001d8 .word 0x240001d8 8022fb8: 2400aecc .word 0x2400aecc 8022fbc: 24009430 .word 0x24009430 - 8022fc0: 080497b8 .word 0x080497b8 + 8022fc0: 080497f8 .word 0x080497f8 8022fc4: 24000068 .word 0x24000068 8022fc8: 2400aedc .word 0x2400aedc - 8022fcc: 080497e8 .word 0x080497e8 + 8022fcc: 08049828 .word 0x08049828 8022fd0: 24000058 .word 0x24000058 8022fd4: 2400aed8 .word 0x2400aed8 8022fd8: 240002b0 .word 0x240002b0 8022fdc: 3ff00000 .word 0x3ff00000 - 8022fe0: 08049800 .word 0x08049800 - 8022fe4: 0804981c .word 0x0804981c + 8022fe0: 08049840 .word 0x08049840 + 8022fe4: 0804985c .word 0x0804985c 8022fe8: 24000078 .word 0x24000078 - 8022fec: 0804983c .word 0x0804983c + 8022fec: 0804987c .word 0x0804987c 8022ff0: 24000088 .word 0x24000088 - 8022ff4: 0804985c .word 0x0804985c + 8022ff4: 0804989c .word 0x0804989c 8022ff8: 24000098 .word 0x24000098 } case 4: @@ -7007,7 +7007,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8023026: f104 0310 add.w r3, r4, #16 802302a: f44f 7203 mov.w r2, #524 ; 0x20c 802302e: 4619 mov r1, r3 - 8023030: f024 fea8 bl 8047d84 + 8023030: f024 fec8 bl 8047dc4 8023034: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8023038: f000 fcce bl 80239d8 "manual control turn right success", sendWay, @@ -7015,7 +7015,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, 802303c: 49a6 ldr r1, [pc, #664] ; (80232d8 ) 802303e: 48a7 ldr r0, [pc, #668] ; (80232dc ) - 8023040: f006 fa5a bl 80294f8 + 8023040: f006 fa7a bl 8029538 &robot_turn_right_state); break; 8023044: e000 b.n 8023048 @@ -7097,7 +7097,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80230d2: f104 0310 add.w r3, r4, #16 80230d6: f44f 7203 mov.w r2, #524 ; 0x20c 80230da: 4619 mov r1, r3 - 80230dc: f024 fe52 bl 8047d84 + 80230dc: f024 fe72 bl 8047dc4 80230e0: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80230e4: f000 fb9a bl 802381c @@ -7132,7 +7132,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802311a: f104 0310 add.w r3, r4, #16 802311e: f44f 7203 mov.w r2, #524 ; 0x20c 8023122: 4619 mov r1, r3 - 8023124: f024 fe2e bl 8047d84 + 8023124: f024 fe4e bl 8047dc4 8023128: e894 000f ldmia.w r4, {r0, r1, r2, r3} 802312c: f000 fc54 bl 80239d8 "disable periodical call of serialports and can", @@ -7217,7 +7217,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, fsm_state_set(¤t_robot_move_state, &robot_halt_state); 80231ae: 495b ldr r1, [pc, #364] ; (802331c ) 80231b0: 484a ldr r0, [pc, #296] ; (80232dc ) - 80231b2: f006 f9a1 bl 80294f8 + 80231b2: f006 f9c1 bl 8029538 break; 80231b6: e31e b.n 80237f6 @@ -7261,7 +7261,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80231fc: f104 0310 add.w r3, r4, #16 8023200: f44f 7203 mov.w r2, #524 ; 0x20c 8023204: 4619 mov r1, r3 - 8023206: f024 fdbd bl 8047d84 + 8023206: f024 fddd bl 8047dc4 802320a: e894 000f ldmia.w r4, {r0, r1, r2, r3} 802320e: f000 fbe3 bl 80239d8 "disable send GV", sendWay, send_Handler); @@ -7309,7 +7309,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802325e: f104 0310 add.w r3, r4, #16 8023262: f44f 7203 mov.w r2, #524 ; 0x20c 8023266: 4619 mov r1, r3 - 8023268: f024 fd8c bl 8047d84 + 8023268: f024 fdac bl 8047dc4 802326c: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8023270: f000 fbb2 bl 80239d8 "enable send GV", sendWay, send_Handler); @@ -7346,7 +7346,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80232a6: f104 0310 add.w r3, r4, #16 80232aa: f44f 7203 mov.w r2, #524 ; 0x20c 80232ae: 4619 mov r1, r3 - 80232b0: f024 fd68 bl 8047d84 + 80232b0: f024 fd88 bl 8047dc4 80232b4: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80232b8: f000 fb8e bl 80239d8 sendWay, send_Handler); @@ -7363,18 +7363,18 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, Send_WH_LTE_7S0_Data(decoded_Cmd.Buff_Data, 80232c4: 4619 mov r1, r3 80232c6: 481a ldr r0, [pc, #104] ; (8023330 ) - 80232c8: f005 f9e0 bl 802868c + 80232c8: f005 f9fe bl 80286c8 break; 80232cc: e293 b.n 80237f6 80232ce: bf00 nop 80232d0: 24009430 .word 0x24009430 - 80232d4: 08049880 .word 0x08049880 + 80232d4: 080498c0 .word 0x080498c0 80232d8: 240000a8 .word 0x240000a8 80232dc: 2400aedc .word 0x2400aedc 80232e0: 24000408 .word 0x24000408 - 80232e4: 0804ccd8 .word 0x0804ccd8 + 80232e4: 0804cd18 .word 0x0804cd18 80232e8: 2400ae34 .word 0x2400ae34 - 80232ec: 080498a4 .word 0x080498a4 + 80232ec: 080498e4 .word 0x080498e4 80232f0: 24000000 .word 0x24000000 80232f4: 24009aac .word 0x24009aac 80232f8: 24000bb4 .word 0x24000bb4 @@ -7388,9 +7388,9 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8023318: 24008db4 .word 0x24008db4 802331c: 24000068 .word 0x24000068 8023320: 24009214 .word 0x24009214 - 8023324: 080498d4 .word 0x080498d4 - 8023328: 080498e4 .word 0x080498e4 - 802332c: 080498f4 .word 0x080498f4 + 8023324: 08049914 .word 0x08049914 + 8023328: 08049924 .word 0x08049924 + 802332c: 08049934 .word 0x08049934 8023330: 24009230 .word 0x24009230 } case 10: //擦除flash @@ -7415,7 +7415,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802335e: f104 0310 add.w r3, r4, #16 8023362: f44f 7203 mov.w r2, #524 ; 0x20c 8023366: 4619 mov r1, r3 - 8023368: f024 fd0c bl 8047d84 + 8023368: f024 fd2c bl 8047dc4 802336c: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8023370: f000 fb32 bl 80239d8 "start erasing flash ", sendWay, send_Handler); @@ -7445,7 +7445,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80233a8: f104 0310 add.w r3, r4, #16 80233ac: f44f 7203 mov.w r2, #524 ; 0x20c 80233b0: 4619 mov r1, r3 - 80233b2: f024 fce7 bl 8047d84 + 80233b2: f024 fd07 bl 8047dc4 80233b6: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80233ba: f000 fb0d bl 80239d8 "erase flash success", sendWay, send_Handler); @@ -7473,7 +7473,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, memcpy(ReceivedData, 80233e2: 4619 mov r1, r3 80233e4: 487f ldr r0, [pc, #508] ; (80235e4 ) - 80233e6: f024 fccd bl 8047d84 + 80233e6: f024 fced bl 8047dc4 calbriation = MB_CRC16(&ReceivedData, decoded_Cmd.Buff_Data_Length); @@ -7557,7 +7557,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8023478: f104 0310 add.w r3, r4, #16 802347c: f44f 7203 mov.w r2, #524 ; 0x20c 8023480: 4619 mov r1, r3 - 8023482: f024 fc7f bl 8047d84 + 8023482: f024 fc9f bl 8047dc4 8023486: e894 000f ldmia.w r4, {r0, r1, r2, r3} 802348a: f000 faa5 bl 80239d8 802348e: e02b b.n 80234e8 @@ -7598,7 +7598,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80234d2: f104 0310 add.w r3, r4, #16 80234d6: f44f 7203 mov.w r2, #524 ; 0x20c 80234da: 4619 mov r1, r3 - 80234dc: f024 fc52 bl 8047d84 + 80234dc: f024 fc72 bl 8047dc4 80234e0: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80234e4: f000 fa78 bl 80239d8 "downloadCount!=Parameter3", sendWay, @@ -7631,7 +7631,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802351c: f104 0310 add.w r3, r4, #16 8023520: f44f 7203 mov.w r2, #524 ; 0x20c 8023524: 4619 mov r1, r3 - 8023526: f024 fc2d bl 8047d84 + 8023526: f024 fc4d bl 8047dc4 802352a: e894 000f ldmia.w r4, {r0, r1, r2, r3} 802352e: f000 fa53 bl 80239d8 "download new software sucess", sendWay, @@ -7704,24 +7704,24 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80235b8: f104 0310 add.w r3, r4, #16 80235bc: f44f 7203 mov.w r2, #524 ; 0x20c 80235c0: 4619 mov r1, r3 - 80235c2: f024 fbdf bl 8047d84 + 80235c2: f024 fbff bl 8047dc4 80235c6: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80235ca: f000 fa05 bl 80239d8 break; 80235ce: e111 b.n 80237f4 80235d0: 24009430 .word 0x24009430 - 80235d4: 08049904 .word 0x08049904 + 80235d4: 08049944 .word 0x08049944 80235d8: 24009660 .word 0x24009660 - 80235dc: 0804991c .word 0x0804991c + 80235dc: 0804995c .word 0x0804995c 80235e0: 24009214 .word 0x24009214 80235e4: 24009664 .word 0x24009664 80235e8: 24009a64 .word 0x24009a64 80235ec: 24009230 .word 0x24009230 - 80235f0: 08049930 .word 0x08049930 - 80235f4: 08049944 .word 0x08049944 - 80235f8: 08049960 .word 0x08049960 + 80235f0: 08049970 .word 0x08049970 + 80235f4: 08049984 .word 0x08049984 + 80235f8: 080499a0 .word 0x080499a0 80235fc: 2400965c .word 0x2400965c - 8023600: 08049980 .word 0x08049980 + 8023600: 080499c0 .word 0x080499c0 break; } //定义 3 上位机设定CV值 @@ -7734,7 +7734,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802360e: 23d8 movs r3, #216 ; 0xd8 8023610: 461a mov r2, r3 8023612: 2100 movs r1, #0 - 8023614: f024 fbde bl 8047dd4 + 8023614: f024 fbfe bl 8047e14 pb_istream_t i_cv_stream = 8023618: f607 1328 addw r3, r7, #2344 ; 0x928 802361c: f2a3 431c subw r3, r3, #1052 ; 0x41c @@ -7776,7 +7776,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802366c: f104 0310 add.w r3, r4, #16 8023670: 22c8 movs r2, #200 ; 0xc8 8023672: 4619 mov r1, r3 - 8023674: f024 fb86 bl 8047d84 + 8023674: f024 fba6 bl 8047dc4 8023678: e894 000f ldmia.w r4, {r0, r1, r2, r3} 802367c: f7fd fbc1 bl 8020e02 CV = decoded_CV; @@ -7787,7 +7787,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 802368c: 4619 mov r1, r3 802368e: 23d8 movs r3, #216 ; 0xd8 8023690: 461a mov r2, r3 - 8023692: f024 fb77 bl 8047d84 + 8023692: f024 fb97 bl 8047dc4 send_Cmd.Parameter3 = length; 8023696: f607 1328 addw r3, r7, #2344 ; 0x928 802369a: f6a3 0336 subw r3, r3, #2102 ; 0x836 @@ -7814,12 +7814,12 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80236ce: f104 0310 add.w r3, r4, #16 80236d2: f44f 7203 mov.w r2, #524 ; 0x20c 80236d6: 4619 mov r1, r3 - 80236d8: f024 fb54 bl 8047d84 + 80236d8: f024 fb74 bl 8047dc4 80236dc: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80236e0: f000 f97a bl 80239d8 "Set CV succeeded", sendWay, send_Handler); CV_GV_Init(); - 80236e4: f007 fbe4 bl 802aeb0 + 80236e4: f007 fc04 bl 802aef0 break; 80236e8: e085 b.n 80237f6 } @@ -7838,7 +7838,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80236fe: 4619 mov r1, r3 8023700: 23d8 movs r3, #216 ; 0xd8 8023702: 461a mov r2, r3 - 8023704: f024 fb3e bl 8047d84 + 8023704: f024 fb5e bl 8047dc4 pb_ostream_t CV_o_stream = 8023708: f607 1328 addw r3, r7, #2344 ; 0x928 802370c: f5a3 6386 sub.w r3, r3, #1072 ; 0x430 @@ -7902,7 +7902,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 8023790: f104 0310 add.w r3, r4, #16 8023794: f44f 7203 mov.w r2, #524 ; 0x20c 8023798: 4619 mov r1, r3 - 802379a: f024 faf3 bl 8047d84 + 802379a: f024 fb13 bl 8047dc4 802379e: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80237a2: f000 f83b bl 802381c @@ -7930,7 +7930,7 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80237d4: f104 0310 add.w r3, r4, #16 80237d8: f44f 7203 mov.w r2, #524 ; 0x20c 80237dc: 4619 mov r1, r3 - 80237de: f024 fad1 bl 8047d84 + 80237de: f024 faf1 bl 8047dc4 80237e2: e894 000f ldmia.w r4, {r0, r1, r2, r3} 80237e6: f000 f8f7 bl 80239d8 "Not the right command", sendWay, send_Handler); @@ -7956,11 +7956,11 @@ void decode_command_and_feedback(uint8_t *buffer, uint16_t length, char sendWay, 80237fe: bdb0 pop {r4, r5, r7, pc} 8023800: 24009214 .word 0x24009214 8023804: 24009230 .word 0x24009230 - 8023808: 0804cc4c .word 0x0804cc4c + 8023808: 0804cc8c .word 0x0804cc8c 802380c: 240001d8 .word 0x240001d8 8023810: 24009430 .word 0x24009430 - 8023814: 080499a0 .word 0x080499a0 - 8023818: 080499b4 .word 0x080499b4 + 8023814: 080499e0 .word 0x080499e0 + 8023818: 080499f4 .word 0x080499f4 0802381c : void WrapInCmdAndSend(ReCmd send_Cmd, uint8_t *buf, int8_t sendWay, @@ -7979,7 +7979,7 @@ void WrapInCmdAndSend(ReCmd send_Cmd, uint8_t *buf, int8_t sendWay, 8023834: f607 035c addw r3, r7, #2140 ; 0x85c 8023838: f8d7 1a5c ldr.w r1, [r7, #2652] ; 0xa5c 802383c: 4618 mov r0, r3 - 802383e: f024 faa1 bl 8047d84 + 802383e: f024 fac1 bl 8047dc4 pb_ostream_t ReCmd_out_stream = 8023842: f607 031c addw r3, r7, #2076 ; 0x81c 8023846: 2200 movs r2, #0 @@ -8151,7 +8151,7 @@ void WrapInCmdAndSend(ReCmd send_Cmd, uint8_t *buf, int8_t sendWay, 80239cc: e8bd 40b0 ldmia.w sp!, {r4, r5, r7, lr} 80239d0: b004 add sp, #16 80239d2: 4770 bx lr - 80239d4: 0804cefc .word 0x0804cefc + 80239d4: 0804cf3c .word 0x0804cf3c 080239d8 : //send_Cmd.databuf 存的是相关信息,可以通过ACII转成string; @@ -8192,7 +8192,7 @@ void WrapInCmdAndSendMessage(ReCmd send_Cmd, int8_t functionNum, 8023a1a: f107 0318 add.w r3, r7, #24 8023a1e: f44f 7203 mov.w r2, #524 ; 0x20c 8023a22: 4619 mov r1, r3 - 8023a24: f024 f9ae bl 8047d84 + 8023a24: f024 f9ce bl 8047dc4 8023a28: f107 0308 add.w r3, r7, #8 8023a2c: cb0f ldmia r3, {r0, r1, r2, r3} 8023a2e: f7ff fef5 bl 802381c @@ -8236,7 +8236,7 @@ void send_received_data_to_upper_computer(uint8_t *buffer, uint16_t length) 8023a6c: f104 0310 add.w r3, r4, #16 8023a70: f44f 7203 mov.w r2, #524 ; 0x20c 8023a74: 4619 mov r1, r3 - 8023a76: f024 f985 bl 8047d84 + 8023a76: f024 f9a5 bl 8047dc4 8023a7a: e894 000f ldmia.w r4, {r0, r1, r2, r3} 8023a7e: f7ff fecd bl 802381c @@ -8265,7 +8265,7 @@ static uint8_t QSPI_W25Qx_AutoPollingMemRead(uint32_t Timeout) 8023aa0: 2238 movs r2, #56 ; 0x38 8023aa2: 2100 movs r1, #0 8023aa4: 4618 mov r0, r3 - 8023aa6: f024 f995 bl 8047dd4 + 8023aa6: f024 f9b5 bl 8047e14 QSPI_AutoPollingTypeDef s_config={0}; 8023aaa: f107 0308 add.w r3, r7, #8 8023aae: 2200 movs r2, #0 @@ -8336,7 +8336,7 @@ static uint8_t QSPI_W25Qx_AutoPollingMemRead(uint32_t Timeout) 8023b08: f107 0120 add.w r1, r7, #32 8023b0c: 687b ldr r3, [r7, #4] 8023b0e: 4807 ldr r0, [pc, #28] ; (8023b2c ) - 8023b10: f011 f9de bl 8034ed0 + 8023b10: f011 f9fe bl 8034f10 8023b14: 4603 mov r3, r0 8023b16: 2b00 cmp r3, #0 8023b18: d003 beq.n 8023b22 @@ -8356,7 +8356,7 @@ static uint8_t QSPI_W25Qx_AutoPollingMemRead(uint32_t Timeout) 8023b28: 46bd mov sp, r7 8023b2a: bd80 pop {r7, pc} 8023b2c: 2400b0e8 .word 0x2400b0e8 - 8023b30: 080499cc .word 0x080499cc + 8023b30: 08049a0c .word 0x08049a0c 08023b34 : * 说明: @@ -8374,7 +8374,7 @@ static void QSPI_W25Qx_Write_Enable(QSPI_HandleTypeDef *hqspi) 8023b40: 2238 movs r2, #56 ; 0x38 8023b42: 2100 movs r1, #0 8023b44: 4618 mov r0, r3 - 8023b46: f024 f945 bl 8047dd4 + 8023b46: f024 f965 bl 8047e14 QSPI_AutoPollingTypeDef s_config={0}; 8023b4a: f107 0308 add.w r3, r7, #8 8023b4e: 2200 movs r2, #0 @@ -8426,7 +8426,7 @@ static void QSPI_W25Qx_Write_Enable(QSPI_HandleTypeDef *hqspi) 8023b8a: f241 3288 movw r2, #5000 ; 0x1388 8023b8e: 4619 mov r1, r3 8023b90: 6878 ldr r0, [r7, #4] - 8023b92: f011 f8ad bl 8034cf0 + 8023b92: f011 f8cd bl 8034d30 8023b96: 4603 mov r3, r0 8023b98: 2b00 cmp r3, #0 8023b9a: d003 beq.n 8023ba4 @@ -8472,7 +8472,7 @@ static void QSPI_W25Qx_Write_Enable(QSPI_HandleTypeDef *hqspi) 8023bd0: f107 0120 add.w r1, r7, #32 8023bd4: f241 3388 movw r3, #5000 ; 0x1388 8023bd8: 6878 ldr r0, [r7, #4] - 8023bda: f011 f979 bl 8034ed0 + 8023bda: f011 f999 bl 8034f10 8023bde: 4603 mov r3, r0 8023be0: 2b00 cmp r3, #0 8023be2: d003 beq.n 8023bec @@ -8488,7 +8488,7 @@ static void QSPI_W25Qx_Write_Enable(QSPI_HandleTypeDef *hqspi) 8023bee: 3758 adds r7, #88 ; 0x58 8023bf0: 46bd mov sp, r7 8023bf2: bd80 pop {r7, pc} - 8023bf4: 080499cc .word 0x080499cc + 8023bf4: 08049a0c .word 0x08049a0c 08023bf8 : * 说明: @@ -8506,7 +8506,7 @@ void QSPI_W25Qx_EraseSector(uint32_t _SectorAddr) 8023c04: 2238 movs r2, #56 ; 0x38 8023c06: 2100 movs r1, #0 8023c08: 4618 mov r0, r3 - 8023c0a: f024 f8e3 bl 8047dd4 + 8023c0a: f024 f903 bl 8047e14 /* 写使能 */ QSPI_W25Qx_Write_Enable(&hqspi); @@ -8556,7 +8556,7 @@ void QSPI_W25Qx_EraseSector(uint32_t _SectorAddr) 8023c4a: f241 3288 movw r2, #5000 ; 0x1388 8023c4e: 4619 mov r1, r3 8023c50: 480c ldr r0, [pc, #48] ; (8023c84 ) - 8023c52: f011 f84d bl 8034cf0 + 8023c52: f011 f86d bl 8034d30 8023c56: 4603 mov r3, r0 8023c58: 2b00 cmp r3, #0 8023c5a: d003 beq.n 8023c64 @@ -8588,7 +8588,7 @@ void QSPI_W25Qx_EraseSector(uint32_t _SectorAddr) 8023c80: bd80 pop {r7, pc} 8023c82: bf00 nop 8023c84: 2400b0e8 .word 0x2400b0e8 - 8023c88: 080499cc .word 0x080499cc + 8023c88: 08049a0c .word 0x08049a0c 08023c8c : * 返回值: 无 @@ -8609,7 +8609,7 @@ uint8_t QSPI_W25Qx_Write_Buffer(uint8_t *_pBuf,uint32_t _write_Addr,uint16_t _wr 8023c9e: 2238 movs r2, #56 ; 0x38 8023ca0: 2100 movs r1, #0 8023ca2: 4618 mov r0, r3 - 8023ca4: f024 f896 bl 8047dd4 + 8023ca4: f024 f8b6 bl 8047e14 /* 防止写入的大小超过256字节 */ if(_write_Size > W25Q128FV_PAGE_SIZE) @@ -8674,7 +8674,7 @@ uint8_t QSPI_W25Qx_Write_Buffer(uint8_t *_pBuf,uint32_t _write_Addr,uint16_t _wr 8023cfa: f241 3288 movw r2, #5000 ; 0x1388 8023cfe: 4619 mov r1, r3 8023d00: 4815 ldr r0, [pc, #84] ; (8023d58 ) - 8023d02: f010 fff5 bl 8034cf0 + 8023d02: f011 f815 bl 8034d30 8023d06: 4603 mov r3, r0 8023d08: 2b00 cmp r3, #0 8023d0a: d004 beq.n 8023d16 @@ -8690,7 +8690,7 @@ uint8_t QSPI_W25Qx_Write_Buffer(uint8_t *_pBuf,uint32_t _write_Addr,uint16_t _wr 8023d16: f241 3288 movw r2, #5000 ; 0x1388 8023d1a: 68f9 ldr r1, [r7, #12] 8023d1c: 480e ldr r0, [pc, #56] ; (8023d58 ) - 8023d1e: f011 f845 bl 8034dac + 8023d1e: f011 f865 bl 8034dec 8023d22: 4603 mov r3, r0 8023d24: 2b00 cmp r3, #0 8023d26: d004 beq.n 8023d32 @@ -8722,7 +8722,7 @@ uint8_t QSPI_W25Qx_Write_Buffer(uint8_t *_pBuf,uint32_t _write_Addr,uint16_t _wr 8023d4e: 3748 adds r7, #72 ; 0x48 8023d50: 46bd mov sp, r7 8023d52: bd80 pop {r7, pc} - 8023d54: 080499cc .word 0x080499cc + 8023d54: 08049a0c .word 0x08049a0c 8023d58: 2400b0e8 .word 0x2400b0e8 08023d5c : @@ -8741,7 +8741,7 @@ void user_Assert(char *file,uint32_t line) 8023d66: 683a ldr r2, [r7, #0] 8023d68: 6879 ldr r1, [r7, #4] 8023d6a: 4805 ldr r0, [pc, #20] ; (8023d80 ) - 8023d6c: f024 f91a bl 8047fa4 + 8023d6c: f024 f93a bl 8047fe4 /* 这是一个死循环,断言失败时程序会卡此处死机,以便于用户差错 */ if(line == 0) @@ -8762,7 +8762,7 @@ void user_Assert(char *file,uint32_t line) 8023d7a: 3708 adds r7, #8 8023d7c: 46bd mov sp, r7 8023d7e: bd80 pop {r7, pc} - 8023d80: 080499f4 .word 0x080499f4 + 8023d80: 08049a34 .word 0x08049a34 08023d84 : * @@ -9399,7 +9399,7 @@ bool pb_field_iter_begin(pb_field_iter_t *iter, const pb_msgdesc_t *desc, void * 8024160: 2228 movs r2, #40 ; 0x28 8024162: 2100 movs r1, #0 8024164: 68f8 ldr r0, [r7, #12] - 8024166: f023 fe35 bl 8047dd4 + 8024166: f023 fe55 bl 8047e14 iter->descriptor = desc; 802416a: 68fb ldr r3, [r7, #12] @@ -9916,7 +9916,7 @@ static bool checkreturn buf_read(pb_istream_t *stream, pb_byte_t *buf, size_t co 8024416: 687a ldr r2, [r7, #4] 8024418: 6979 ldr r1, [r7, #20] 802441a: 68b8 ldr r0, [r7, #8] - 802441c: f023 fcb2 bl 8047d84 + 802441c: f023 fcd2 bl 8047dc4 } return true; @@ -10078,8 +10078,8 @@ bool checkreturn pb_read(pb_istream_t *stream, pb_byte_t *buf, size_t count) 8024508: bd80 pop {r7, pc} 802450a: bf00 nop 802450c: 080243f3 .word 0x080243f3 - 8024510: 08049a24 .word 0x08049a24 - 8024514: 08049a34 .word 0x08049a34 + 8024510: 08049a64 .word 0x08049a64 + 8024514: 08049a74 .word 0x08049a74 08024518 : @@ -10157,8 +10157,8 @@ static bool checkreturn pb_readbyte(pb_istream_t *stream, pb_byte_t *buf) 8024582: 46bd mov sp, r7 8024584: bd80 pop {r7, pc} 8024586: bf00 nop - 8024588: 08049a24 .word 0x08049a24 - 802458c: 08049a34 .word 0x08049a34 + 8024588: 08049a64 .word 0x08049a64 + 802458c: 08049a74 .word 0x08049a74 08024590 : @@ -10432,7 +10432,7 @@ static bool checkreturn pb_decode_varint32_eof(pb_istream_t *stream, uint32_t *d 8024716: 46bd mov sp, r7 8024718: bd80 pop {r7, pc} 802471a: bf00 nop - 802471c: 08049a40 .word 0x08049a40 + 802471c: 08049a80 .word 0x08049a80 08024720 : @@ -10557,7 +10557,7 @@ bool checkreturn pb_decode_varint(pb_istream_t *stream, uint64_t *dest) 8024800: 46bd mov sp, r7 8024802: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} 8024806: bf00 nop - 8024808: 08049a40 .word 0x08049a40 + 8024808: 08049a80 .word 0x08049a80 0802480c : #endif @@ -10766,7 +10766,7 @@ bool checkreturn pb_skip_field(pb_istream_t *stream, pb_wire_type_t wire_type) 8024956: 46bd mov sp, r7 8024958: bd80 pop {r7, pc} 802495a: bf00 nop - 802495c: 08049a50 .word 0x08049a50 + 802495c: 08049a90 .word 0x08049a90 08024960 : @@ -10906,8 +10906,8 @@ static bool checkreturn read_raw_value(pb_istream_t *stream, pb_wire_type_t wire 8024a2a: 46bd mov sp, r7 8024a2c: bd80 pop {r7, pc} 8024a2e: bf00 nop - 8024a30: 08049a40 .word 0x08049a40 - 8024a34: 08049a50 .word 0x08049a50 + 8024a30: 08049a80 .word 0x08049a80 + 8024a34: 08049a90 .word 0x08049a90 08024a38 : @@ -10980,7 +10980,7 @@ bool checkreturn pb_make_string_substream(pb_istream_t *stream, pb_istream_t *su 8024aa2: 3714 adds r7, #20 8024aa4: 46bd mov sp, r7 8024aa6: bd90 pop {r4, r7, pc} - 8024aa8: 08049a64 .word 0x08049a64 + 8024aa8: 08049aa4 .word 0x08049aa4 08024aac : @@ -11323,8 +11323,8 @@ static bool checkreturn decode_basic_field(pb_istream_t *stream, pb_wire_type_t 8024cd6: 46bd mov sp, r7 8024cd8: bd80 pop {r7, pc} 8024cda: bf00 nop - 8024cdc: 08049a7c .word 0x08049a7c - 8024ce0: 08049a8c .word 0x08049a8c + 8024cdc: 08049abc .word 0x08049abc + 8024ce0: 08049acc .word 0x08049acc 08024ce4 : @@ -11603,7 +11603,7 @@ static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t 8024eb0: 8a5b ldrh r3, [r3, #18] 8024eb2: 461a mov r2, r3 8024eb4: 2100 movs r1, #0 - 8024eb6: f022 ff8d bl 8047dd4 + 8024eb6: f022 ffad bl 8047e14 /* Set default values for the submessage fields. */ if (field->submsg_desc->default_value != NULL || @@ -11701,9 +11701,9 @@ static bool checkreturn decode_static_field(pb_istream_t *stream, pb_wire_type_t 8024f52: 3758 adds r7, #88 ; 0x58 8024f54: 46bd mov sp, r7 8024f56: bd80 pop {r7, pc} - 8024f58: 08049aa0 .word 0x08049aa0 - 8024f5c: 08049ab0 .word 0x08049ab0 - 8024f60: 08049a8c .word 0x08049a8c + 8024f58: 08049ae0 .word 0x08049ae0 + 8024f5c: 08049af0 .word 0x08049af0 + 8024f60: 08049acc .word 0x08049acc 08024f64 : } @@ -11745,7 +11745,7 @@ static bool checkreturn decode_pointer_field(pb_istream_t *stream, pb_wire_type_ 8024f8c: 46bd mov sp, r7 8024f8e: f85d 7b04 ldr.w r7, [sp], #4 8024f92: 4770 bx lr - 8024f94: 08049ac8 .word 0x08049ac8 + 8024f94: 08049b08 .word 0x08049b08 08024f98 : @@ -11908,7 +11908,7 @@ static bool checkreturn decode_callback_field(pb_istream_t *stream, pb_wire_type 80250a2: 375c adds r7, #92 ; 0x5c 80250a4: 46bd mov sp, r7 80250a6: bd90 pop {r4, r7, pc} - 80250a8: 08049adc .word 0x08049adc + 80250a8: 08049b1c .word 0x08049b1c 080250ac : @@ -11990,7 +11990,7 @@ static bool checkreturn decode_field(pb_istream_t *stream, pb_wire_type_t wire_t 802511e: 46bd mov sp, r7 8025120: bd80 pop {r7, pc} 8025122: bf00 nop - 8025124: 08049a8c .word 0x08049a8c + 8025124: 08049acc .word 0x08049acc 08025128 : /* Default handler for extension fields. Expects to have a pb_msgdesc_t @@ -12061,7 +12061,7 @@ static bool checkreturn default_extension_decoder(pb_istream_t *stream, 8025192: 3738 adds r7, #56 ; 0x38 8025194: 46bd mov sp, r7 8025196: bd80 pop {r7, pc} - 8025198: 08049aec .word 0x08049aec + 8025198: 08049b2c .word 0x08049b2c 0802519c : @@ -12346,7 +12346,7 @@ static bool pb_field_set_to_default(pb_field_iter_t *field) 8025348: 8a5b ldrh r3, [r3, #18] 802534a: 461a mov r2, r3 802534c: 2100 movs r1, #0 - 802534e: f022 fd41 bl 8047dd4 + 802534e: f022 fd61 bl 8047e14 8025352: e01b b.n 802538c } } @@ -12994,10 +12994,10 @@ static bool checkreturn pb_decode_inner(pb_istream_t *stream, const pb_msgdesc_t 8025772: 2300 movs r3, #0 8025774: e03f b.n 80257f6 8025776: bf00 nop - 8025778: 08049ab0 .word 0x08049ab0 - 802577c: 08049b00 .word 0x08049b00 - 8025780: 08049b0c .word 0x08049b0c - 8025784: 08049b30 .word 0x08049b30 + 8025778: 08049af0 .word 0x08049af0 + 802577c: 08049b40 .word 0x08049b40 + 8025780: 08049b4c .word 0x08049b4c + 8025784: 08049b70 .word 0x08049b70 for (i = 0; i < (req_field_count >> 5); i++) 8025788: f8b7 3058 ldrh.w r3, [r7, #88] ; 0x58 802578c: 3301 adds r3, #1 @@ -13065,7 +13065,7 @@ static bool checkreturn pb_decode_inner(pb_istream_t *stream, const pb_msgdesc_t 80257fa: 46bd mov sp, r7 80257fc: bd80 pop {r7, pc} 80257fe: bf00 nop - 8025800: 08049b30 .word 0x08049b30 + 8025800: 08049b70 .word 0x08049b70 08025804 : @@ -13648,8 +13648,8 @@ static bool checkreturn pb_dec_varint(pb_istream_t *stream, const pb_field_iter_ 8025bcc: 46bd mov sp, r7 8025bce: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} 8025bd2: bf00 nop - 8025bd4: 08049b48 .word 0x08049b48 - 8025bd8: 08049b5c .word 0x08049b5c + 8025bd4: 08049b88 .word 0x08049b88 + 8025bd8: 08049b9c .word 0x08049b9c 08025bdc : @@ -13790,9 +13790,9 @@ static bool checkreturn pb_dec_bytes(pb_istream_t *stream, const pb_field_iter_t 8025cb2: 46bd mov sp, r7 8025cb4: bd80 pop {r7, pc} 8025cb6: bf00 nop - 8025cb8: 08049b70 .word 0x08049b70 - 8025cbc: 08049b80 .word 0x08049b80 - 8025cc0: 08049ac8 .word 0x08049ac8 + 8025cb8: 08049bb0 .word 0x08049bb0 + 8025cbc: 08049bc0 .word 0x08049bc0 + 8025cc0: 08049b08 .word 0x08049b08 08025cc4 : @@ -13949,9 +13949,9 @@ static bool checkreturn pb_dec_string(pb_istream_t *stream, const pb_field_iter_ 8025daa: 46bd mov sp, r7 8025dac: bd80 pop {r7, pc} 8025dae: bf00 nop - 8025db0: 08049b80 .word 0x08049b80 - 8025db4: 08049ac8 .word 0x08049ac8 - 8025db8: 08049b90 .word 0x08049b90 + 8025db0: 08049bc0 .word 0x08049bc0 + 8025db4: 08049b08 .word 0x08049b08 + 8025db8: 08049bd0 .word 0x08049bd0 08025dbc : @@ -14122,7 +14122,7 @@ static bool checkreturn pb_dec_submessage(pb_istream_t *stream, const pb_field_i 8025ec6: 46bd mov sp, r7 8025ec8: bd80 pop {r7, pc} 8025eca: bf00 nop - 8025ecc: 08049ba0 .word 0x08049ba0 + 8025ecc: 08049be0 .word 0x08049be0 08025ed0 : @@ -14180,7 +14180,7 @@ static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb 8025f22: 8a5b ldrh r3, [r3, #18] 8025f24: 461a mov r2, r3 8025f26: 2100 movs r1, #0 - 8025f28: f021 ff54 bl 8047dd4 + 8025f28: f021 ff74 bl 8047e14 return true; 8025f2c: 2301 movs r3, #1 8025f2e: e01a b.n 8025f66 @@ -14222,8 +14222,8 @@ static bool checkreturn pb_dec_fixed_length_bytes(pb_istream_t *stream, const pb 8025f6a: 46bd mov sp, r7 8025f6c: bd80 pop {r7, pc} 8025f6e: bf00 nop - 8025f70: 08049b70 .word 0x08049b70 - 8025f74: 08049bbc .word 0x08049bbc + 8025f70: 08049bb0 .word 0x08049bb0 + 8025f74: 08049bfc .word 0x08049bfc 08025f78 : /******************************* @@ -14253,7 +14253,7 @@ static bool checkreturn buf_write(pb_ostream_t *stream, const pb_byte_t *buf, si 8025f94: 687a ldr r2, [r7, #4] 8025f96: 68b9 ldr r1, [r7, #8] 8025f98: 6978 ldr r0, [r7, #20] - 8025f9a: f021 fef3 bl 8047d84 + 8025f9a: f021 ff13 bl 8047dc4 return true; 8025f9e: 2301 movs r3, #1 @@ -14412,8 +14412,8 @@ bool checkreturn pb_write(pb_ostream_t *stream, const pb_byte_t *buf, size_t cou 802607a: 3710 adds r7, #16 802607c: 46bd mov sp, r7 802607e: bd80 pop {r7, pc} - 8026080: 08049be0 .word 0x08049be0 - 8026084: 08049bec .word 0x08049bec + 8026080: 08049c20 .word 0x08049c20 + 8026084: 08049c2c .word 0x08049c2c 08026088 : /* Read a bool value without causing undefined behavior even if the value @@ -14883,8 +14883,8 @@ static bool checkreturn encode_array(pb_ostream_t *stream, pb_field_iter_t *fiel 802635e: 3730 adds r7, #48 ; 0x30 8026360: 46bd mov sp, r7 8026362: bdb0 pop {r4, r5, r7, pc} - 8026364: 08049bf8 .word 0x08049bf8 - 8026368: 08049c10 .word 0x08049c10 + 8026364: 08049c38 .word 0x08049c38 + 8026368: 08049c50 .word 0x08049c50 0802636c : @@ -15380,7 +15380,7 @@ static bool checkreturn encode_basic_field(pb_ostream_t *stream, const pb_field_ 8026686: 46bd mov sp, r7 8026688: bd80 pop {r7, pc} 802668a: bf00 nop - 802668c: 08049c18 .word 0x08049c18 + 802668c: 08049c58 .word 0x08049c58 08026690 : @@ -15434,7 +15434,7 @@ static bool checkreturn encode_callback_field(pb_ostream_t *stream, const pb_fie 80266da: 3708 adds r7, #8 80266dc: 46bd mov sp, r7 80266de: bd80 pop {r7, pc} - 80266e0: 08049c2c .word 0x08049c2c + 80266e0: 08049c6c .word 0x08049c6c 080266e4 : @@ -15593,7 +15593,7 @@ static bool checkreturn encode_field(pb_ostream_t *stream, pb_field_iter_t *fiel 80267c2: 3708 adds r7, #8 80267c4: 46bd mov sp, r7 80267c6: bd80 pop {r7, pc} - 80267c8: 08049c3c .word 0x08049c3c + 80267c8: 08049c7c .word 0x08049c7c 080267cc : @@ -15644,7 +15644,7 @@ static bool checkreturn default_extension_encoder(pb_ostream_t *stream, const pb 8026816: 3730 adds r7, #48 ; 0x30 8026818: 46bd mov sp, r7 802681a: bd80 pop {r7, pc} - 802681c: 08049c54 .word 0x08049c54 + 802681c: 08049c94 .word 0x08049c94 08026820 : @@ -16237,7 +16237,7 @@ bool pb_encode_tag_for_field ( pb_ostream_t* stream, const pb_field_iter_t* fiel 8026bca: 46bd mov sp, r7 8026bcc: bd80 pop {r7, pc} 8026bce: bf00 nop - 8026bd0: 08049c18 .word 0x08049c18 + 8026bd0: 08049c58 .word 0x08049c58 08026bd4 : @@ -16458,8 +16458,8 @@ bool checkreturn pb_encode_submessage(pb_ostream_t *stream, const pb_msgdesc_t * 8026d26: 3730 adds r7, #48 ; 0x30 8026d28: 46bd mov sp, r7 8026d2a: bdb0 pop {r4, r5, r7, pc} - 8026d2c: 08049be0 .word 0x08049be0 - 8026d30: 08049c68 .word 0x08049c68 + 8026d2c: 08049c20 .word 0x08049c20 + 8026d30: 08049ca8 .word 0x08049ca8 08026d34 : @@ -16706,7 +16706,7 @@ static bool checkreturn pb_enc_varint(pb_ostream_t *stream, const pb_field_iter_ 8026ee0: 46bd mov sp, r7 8026ee2: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} 8026ee6: bf00 nop - 8026ee8: 08049c7c .word 0x08049c7c + 8026ee8: 08049cbc .word 0x08049cbc 08026eec : @@ -16774,7 +16774,7 @@ static bool checkreturn pb_enc_fixed(pb_ostream_t *stream, const pb_field_iter_t 8026f3e: 3708 adds r7, #8 8026f40: 46bd mov sp, r7 8026f42: bd80 pop {r7, pc} - 8026f44: 08049c7c .word 0x08049c7c + 8026f44: 08049cbc .word 0x08049cbc 08026f48 : @@ -16856,7 +16856,7 @@ static bool checkreturn pb_enc_bytes(pb_ostream_t *stream, const pb_field_iter_t 8026fba: 46bd mov sp, r7 8026fbc: bd80 pop {r7, pc} 8026fbe: bf00 nop - 8026fc0: 08049c90 .word 0x08049c90 + 8026fc0: 08049cd0 .word 0x08049cd0 08026fc4 : @@ -16994,8 +16994,8 @@ static bool checkreturn pb_enc_string(pb_ostream_t *stream, const pb_field_iter_ 8027072: 3718 adds r7, #24 8027074: 46bd mov sp, r7 8027076: bd80 pop {r7, pc} - 8027078: 08049ca4 .word 0x08049ca4 - 802707c: 08049cb8 .word 0x08049cb8 + 8027078: 08049ce4 .word 0x08049ce4 + 802707c: 08049cf8 .word 0x08049cf8 08027080 : @@ -17082,7 +17082,7 @@ static bool checkreturn pb_enc_submessage(pb_ostream_t *stream, const pb_field_i 8027102: 46bd mov sp, r7 8027104: bd80 pop {r7, pc} 8027106: bf00 nop - 8027108: 08049ccc .word 0x08049ccc + 8027108: 08049d0c .word 0x08049d0c 0802710c : @@ -17145,7 +17145,7 @@ void tcp_send_to_all_clients(const char *data, uint16_t len) 8027158: 887a ldrh r2, [r7, #2] 802715a: 2301 movs r3, #1 802715c: 6879 ldr r1, [r7, #4] - 802715e: f01b feeb bl 8042f38 + 802715e: f01b ff0b bl 8042f78 8027162: 4603 mov r3, r0 8027164: 72fb strb r3, [r7, #11] TCP_WRITE_FLAG_COPY); @@ -17159,7 +17159,7 @@ void tcp_send_to_all_clients(const char *data, uint16_t len) 8027170: 68fb ldr r3, [r7, #12] 8027172: f852 3033 ldr.w r3, [r2, r3, lsl #3] 8027176: 4618 mov r0, r3 - 8027178: f01c fcc8 bl 8043b0c + 8027178: f01c fce8 bl 8043b4c for (int i = 0; i < MAX_CLIENTS; i++) 802717c: 68fb ldr r3, [r7, #12] 802717e: 3301 adds r3, #1 @@ -18195,11 +18195,11 @@ void DLTuc_RawDataReceiveDone(uint16_t Size) 80277c0: 24009ab4 .word 0x24009ab4 80277c4: 24009ab8 .word 0x24009ab8 80277c8: 24009aac .word 0x24009aac - 80277cc: 08049ce8 .word 0x08049ce8 - 80277d0: 08049d30 .word 0x08049d30 - 80277d4: 08049d54 .word 0x08049d54 - 80277d8: 08049d78 .word 0x08049d78 - 80277dc: 08049d8c .word 0x08049d8c + 80277cc: 08049d28 .word 0x08049d28 + 80277d0: 08049d70 .word 0x08049d70 + 80277d4: 08049d94 .word 0x08049d94 + 80277d8: 08049db8 .word 0x08049db8 + 80277dc: 08049dcc .word 0x08049dcc 080277e0 : @@ -18501,7 +18501,7 @@ void DLTuc_LogOutVarArgs(DltLogLevel_t Level, uint32_t AppId, uint32_t ContextId 8027994: 693a ldr r2, [r7, #16] 8027996: 6af9 ldr r1, [r7, #44] ; 0x2c 8027998: 4618 mov r0, r3 - 802799a: f020 fb91 bl 80480c0 + 802799a: f020 fbb1 bl 8048100 802799e: 4603 mov r3, r0 80279a0: 83fb strh r3, [r7, #30] va_end(ap); @@ -18797,7 +18797,7 @@ void speedModeRun_485(uint8_t slaveAddr, int32_t speed, struct UARTHandler *Hand 8027b76: 371c adds r7, #28 8027b78: 46bd mov sp, r7 8027b7a: bd90 pop {r4, r7, pc} - 8027b7c: 08029b2d .word 0x08029b2d + 8027b7c: 08029b6d .word 0x08029b6d 08027b80 : @@ -18958,11 +18958,11 @@ void K1061DC_intialize(struct UARTHandler *Handler) 8027c72: bf00 nop 8027c74: 2400ad18 .word 0x2400ad18 8027c78: 2400ad1c .word 0x2400ad1c - 8027c7c: 08027e31 .word 0x08027e31 + 8027c7c: 08027e51 .word 0x08027e51 8027c80: 2400055c .word 0x2400055c - 8027c84: 08049da4 .word 0x08049da4 + 8027c84: 08049de4 .word 0x08049de4 8027c88: 24009aac .word 0x24009aac - 8027c8c: 08049dac .word 0x08049dac + 8027c8c: 08049dec .word 0x08049dec 08027c90 : @@ -18983,10 +18983,10 @@ static void decode_K1061DC(uint8_t *buffer, uint16_t length) 8027ca4: 2b06 cmp r3, #6 8027ca6: d826 bhi.n 8027cf6 LOGFF(DL_ERROR, "K1061DC decode: invalid length %d", length); - 8027ca8: 4b57 ldr r3, [pc, #348] ; (8027e08 ) + 8027ca8: 4b5f ldr r3, [pc, #380] ; (8027e28 ) 8027caa: 781b ldrb r3, [r3, #0] 8027cac: 2b01 cmp r3, #1 - 8027cae: f240 80a3 bls.w 8027df8 + 8027cae: f240 80b0 bls.w 8027e12 8027cb2: 2330 movs r3, #48 ; 0x30 8027cb4: 061a lsls r2, r3, #24 8027cb6: 2330 movs r3, #48 ; 0x30 @@ -19009,17 +19009,17 @@ static void decode_K1061DC(uint8_t *buffer, uint16_t length) 8027cda: 431a orrs r2, r3 8027cdc: 887b ldrh r3, [r7, #2] 8027cde: 9303 str r3, [sp, #12] - 8027ce0: 4b4a ldr r3, [pc, #296] ; (8027e0c ) + 8027ce0: 4b52 ldr r3, [pc, #328] ; (8027e2c ) 8027ce2: 9302 str r3, [sp, #8] 8027ce4: 2333 movs r3, #51 ; 0x33 8027ce6: 9301 str r3, [sp, #4] - 8027ce8: 4b49 ldr r3, [pc, #292] ; (8027e10 ) + 8027ce8: 4b51 ldr r3, [pc, #324] ; (8027e30 ) 8027cea: 9300 str r3, [sp, #0] - 8027cec: 4b49 ldr r3, [pc, #292] ; (8027e14 ) + 8027cec: 4b51 ldr r3, [pc, #324] ; (8027e34 ) 8027cee: 2002 movs r0, #2 8027cf0: f7ff fe2a bl 8027948 return; - 8027cf4: e080 b.n 8027df8 + 8027cf4: e08d b.n 8027e12 } // // K1061DC: 帧长0x(字节), 地址0x @@ -19027,4491 +19027,4486 @@ static void decode_K1061DC(uint8_t *buffer, uint16_t length) 8027cf6: 687b ldr r3, [r7, #4] 8027cf8: 781b ldrb r3, [r3, #0] 8027cfa: 2b01 cmp r3, #1 - 8027cfc: d17d bne.n 8027dfa + 8027cfc: f040 808a bne.w 8027e14 { uint16_t current_uA = 0; - 8027cfe: 2300 movs r3, #0 - 8027d00: 817b strh r3, [r7, #10] + 8027d00: 2300 movs r3, #0 + 8027d02: 817b strh r3, [r7, #10] // 使用 Modbus 库"bsp_MB_host.c"的解码函数 if (MB_Decode_HoldingRegs(buffer, length, 1, ¤t_uA) == 1) - 8027d02: f107 030a add.w r3, r7, #10 - 8027d06: 8879 ldrh r1, [r7, #2] - 8027d08: 2201 movs r2, #1 - 8027d0a: 6878 ldr r0, [r7, #4] - 8027d0c: f7f9 fb0a bl 8021324 - 8027d10: 4603 mov r3, r0 - 8027d12: 2b01 cmp r3, #1 - 8027d14: d14c bne.n 8027db0 + 8027d04: f107 030a add.w r3, r7, #10 + 8027d08: 8879 ldrh r1, [r7, #2] + 8027d0a: 2201 movs r2, #1 + 8027d0c: 6878 ldr r0, [r7, #4] + 8027d0e: f7f9 fb09 bl 8021324 + 8027d12: 4603 mov r3, r0 + 8027d14: 2b01 cmp r3, #1 + 8027d16: d158 bne.n 8027dca { if (current_uA < 4000) current_uA = 4000; - 8027d16: 897b ldrh r3, [r7, #10] - 8027d18: f5b3 6f7a cmp.w r3, #4000 ; 0xfa0 - 8027d1c: d202 bcs.n 8027d24 - 8027d1e: f44f 637a mov.w r3, #4000 ; 0xfa0 - 8027d22: 817b strh r3, [r7, #10] + 8027d18: 897b ldrh r3, [r7, #10] + 8027d1a: f5b3 6f7a cmp.w r3, #4000 ; 0xfa0 + 8027d1e: d202 bcs.n 8027d26 + 8027d20: f44f 637a mov.w r3, #4000 ; 0xfa0 + 8027d24: 817b strh r3, [r7, #10] if (current_uA > 20000) current_uA = 20000; - 8027d24: 897b ldrh r3, [r7, #10] - 8027d26: f644 6220 movw r2, #20000 ; 0x4e20 - 8027d2a: 4293 cmp r3, r2 - 8027d2c: d902 bls.n 8027d34 - 8027d2e: f644 6320 movw r3, #20000 ; 0x4e20 - 8027d32: 817b strh r3, [r7, #10] + 8027d26: 897b ldrh r3, [r7, #10] + 8027d28: f644 6220 movw r2, #20000 ; 0x4e20 + 8027d2c: 4293 cmp r3, r2 + 8027d2e: d902 bls.n 8027d36 + 8027d30: f644 6320 movw r3, #20000 ; 0x4e20 + 8027d34: 817b strh r3, [r7, #10] // 线性映射 // float pressure_value = ((int)((current_uA - 12000) / 8))/10.0;//输出范围是 -100 ~ 100 Kpa(对应 -1.00 ~ 1.00 Bar) float pressure_value = (current_uA - 12000) / 80.0; - 8027d34: 897b ldrh r3, [r7, #10] - 8027d36: 461a mov r2, r3 - 8027d38: 4b37 ldr r3, [pc, #220] ; (8027e18 ) - 8027d3a: 4413 add r3, r2 - 8027d3c: ee07 3a90 vmov s15, r3 - 8027d40: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8027d44: ed9f 5b2e vldr d5, [pc, #184] ; 8027e00 - 8027d48: ee86 7b05 vdiv.f64 d7, d6, d5 - 8027d4c: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8027d50: edc7 7a03 vstr s15, [r7, #12] + 8027d36: 897b ldrh r3, [r7, #10] + 8027d38: 461a mov r2, r3 + 8027d3a: 4b3f ldr r3, [pc, #252] ; (8027e38 ) + 8027d3c: 4413 add r3, r2 + 8027d3e: ee07 3a90 vmov s15, r3 + 8027d42: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8027d46: ed9f 5b36 vldr d5, [pc, #216] ; 8027e20 + 8027d4a: ee86 7b05 vdiv.f64 d7, d6, d5 + 8027d4e: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8027d52: edc7 7a03 vstr s15, [r7, #12] if (pressure != NULL) { - 8027d54: 4b31 ldr r3, [pc, #196] ; (8027e1c ) - 8027d56: 681b ldr r3, [r3, #0] - 8027d58: 2b00 cmp r3, #0 - 8027d5a: d003 beq.n 8027d64 + 8027d56: 4b39 ldr r3, [pc, #228] ; (8027e3c ) + 8027d58: 681b ldr r3, [r3, #0] + 8027d5a: 2b00 cmp r3, #0 + 8027d5c: d00f beq.n 8027d7e *pressure = pressure_value; - 8027d5c: 4b2f ldr r3, [pc, #188] ; (8027e1c ) - 8027d5e: 681b ldr r3, [r3, #0] - 8027d60: 68fa ldr r2, [r7, #12] - 8027d62: 601a str r2, [r3, #0] + 8027d5e: 4b37 ldr r3, [pc, #220] ; (8027e3c ) + 8027d60: 681b ldr r3, [r3, #0] + 8027d62: 68fa ldr r2, [r7, #12] + 8027d64: 601a str r2, [r3, #0] + *pressure = *pressure +1; + 8027d66: 4b35 ldr r3, [pc, #212] ; (8027e3c ) + 8027d68: 681b ldr r3, [r3, #0] + 8027d6a: edd3 7a00 vldr s15, [r3] + 8027d6e: 4b33 ldr r3, [pc, #204] ; (8027e3c ) + 8027d70: 681b ldr r3, [r3, #0] + 8027d72: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8027d76: ee77 7a87 vadd.f32 s15, s15, s14 + 8027d7a: edc3 7a00 vstr s15, [r3] } // 可选: 更新硬件错误状态(通信成功) HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, "K1061DC", 1); - 8027d64: 4b2e ldr r3, [pc, #184] ; (8027e20 ) - 8027d66: 681b ldr r3, [r3, #0] - 8027d68: 695b ldr r3, [r3, #20] - 8027d6a: 4a2d ldr r2, [pc, #180] ; (8027e20 ) - 8027d6c: 6810 ldr r0, [r2, #0] - 8027d6e: 2201 movs r2, #1 - 8027d70: 492c ldr r1, [pc, #176] ; (8027e24 ) - 8027d72: 4798 blx r3 + 8027d7e: 4b30 ldr r3, [pc, #192] ; (8027e40 ) + 8027d80: 681b ldr r3, [r3, #0] + 8027d82: 695b ldr r3, [r3, #20] + 8027d84: 4a2e ldr r2, [pc, #184] ; (8027e40 ) + 8027d86: 6810 ldr r0, [r2, #0] + 8027d88: 2201 movs r2, #1 + 8027d8a: 492e ldr r1, [pc, #184] ; (8027e44 ) + 8027d8c: 4798 blx r3 LOG("K1061DC decoding succeeded"); - 8027d74: 4b24 ldr r3, [pc, #144] ; (8027e08 ) - 8027d76: 781b ldrb r3, [r3, #0] - 8027d78: 2b03 cmp r3, #3 - 8027d7a: d93e bls.n 8027dfa - 8027d7c: 2330 movs r3, #48 ; 0x30 - 8027d7e: 061a lsls r2, r3, #24 - 8027d80: 2330 movs r3, #48 ; 0x30 - 8027d82: 041b lsls r3, r3, #16 - 8027d84: 431a orrs r2, r3 - 8027d86: 2330 movs r3, #48 ; 0x30 - 8027d88: 021b lsls r3, r3, #8 - 8027d8a: 4313 orrs r3, r2 - 8027d8c: 2230 movs r2, #48 ; 0x30 - 8027d8e: ea43 0102 orr.w r1, r3, r2 - 8027d92: 2344 movs r3, #68 ; 0x44 - 8027d94: 061a lsls r2, r3, #24 - 8027d96: 2346 movs r3, #70 ; 0x46 - 8027d98: 041b lsls r3, r3, #16 - 8027d9a: 431a orrs r2, r3 - 8027d9c: 234c movs r3, #76 ; 0x4c - 8027d9e: 021b lsls r3, r3, #8 - 8027da0: 4313 orrs r3, r2 - 8027da2: 2254 movs r2, #84 ; 0x54 - 8027da4: 431a orrs r2, r3 - 8027da6: 4b20 ldr r3, [pc, #128] ; (8027e28 ) - 8027da8: 2004 movs r0, #4 - 8027daa: f7ff fdcd bl 8027948 - 8027dae: e024 b.n 8027dfa + 8027d8e: 4b26 ldr r3, [pc, #152] ; (8027e28 ) + 8027d90: 781b ldrb r3, [r3, #0] + 8027d92: 2b03 cmp r3, #3 + 8027d94: d93e bls.n 8027e14 + 8027d96: 2330 movs r3, #48 ; 0x30 + 8027d98: 061a lsls r2, r3, #24 + 8027d9a: 2330 movs r3, #48 ; 0x30 + 8027d9c: 041b lsls r3, r3, #16 + 8027d9e: 431a orrs r2, r3 + 8027da0: 2330 movs r3, #48 ; 0x30 + 8027da2: 021b lsls r3, r3, #8 + 8027da4: 4313 orrs r3, r2 + 8027da6: 2230 movs r2, #48 ; 0x30 + 8027da8: ea43 0102 orr.w r1, r3, r2 + 8027dac: 2344 movs r3, #68 ; 0x44 + 8027dae: 061a lsls r2, r3, #24 + 8027db0: 2346 movs r3, #70 ; 0x46 + 8027db2: 041b lsls r3, r3, #16 + 8027db4: 431a orrs r2, r3 + 8027db6: 234c movs r3, #76 ; 0x4c + 8027db8: 021b lsls r3, r3, #8 + 8027dba: 4313 orrs r3, r2 + 8027dbc: 2254 movs r2, #84 ; 0x54 + 8027dbe: 431a orrs r2, r3 + 8027dc0: 4b21 ldr r3, [pc, #132] ; (8027e48 ) + 8027dc2: 2004 movs r0, #4 + 8027dc4: f7ff fdc0 bl 8027948 + 8027dc8: e024 b.n 8027e14 } else { LOGFF(DL_ERROR,"K1061DC decoding failed"); - 8027db0: 4b15 ldr r3, [pc, #84] ; (8027e08 ) - 8027db2: 781b ldrb r3, [r3, #0] - 8027db4: 2b01 cmp r3, #1 - 8027db6: d920 bls.n 8027dfa - 8027db8: 2330 movs r3, #48 ; 0x30 - 8027dba: 061a lsls r2, r3, #24 - 8027dbc: 2330 movs r3, #48 ; 0x30 - 8027dbe: 041b lsls r3, r3, #16 - 8027dc0: 431a orrs r2, r3 - 8027dc2: 2330 movs r3, #48 ; 0x30 - 8027dc4: 021b lsls r3, r3, #8 - 8027dc6: 4313 orrs r3, r2 - 8027dc8: 2230 movs r2, #48 ; 0x30 - 8027dca: ea43 0102 orr.w r1, r3, r2 - 8027dce: 2344 movs r3, #68 ; 0x44 - 8027dd0: 061a lsls r2, r3, #24 - 8027dd2: 2346 movs r3, #70 ; 0x46 - 8027dd4: 041b lsls r3, r3, #16 - 8027dd6: 431a orrs r2, r3 - 8027dd8: 234c movs r3, #76 ; 0x4c - 8027dda: 021b lsls r3, r3, #8 - 8027ddc: 4313 orrs r3, r2 - 8027dde: 2254 movs r2, #84 ; 0x54 - 8027de0: 431a orrs r2, r3 - 8027de2: 4b0a ldr r3, [pc, #40] ; (8027e0c ) - 8027de4: 9302 str r3, [sp, #8] - 8027de6: 234a movs r3, #74 ; 0x4a - 8027de8: 9301 str r3, [sp, #4] - 8027dea: 4b09 ldr r3, [pc, #36] ; (8027e10 ) - 8027dec: 9300 str r3, [sp, #0] - 8027dee: 4b0f ldr r3, [pc, #60] ; (8027e2c ) - 8027df0: 2002 movs r0, #2 - 8027df2: f7ff fda9 bl 8027948 - 8027df6: e000 b.n 8027dfa + 8027dca: 4b17 ldr r3, [pc, #92] ; (8027e28 ) + 8027dcc: 781b ldrb r3, [r3, #0] + 8027dce: 2b01 cmp r3, #1 + 8027dd0: d920 bls.n 8027e14 + 8027dd2: 2330 movs r3, #48 ; 0x30 + 8027dd4: 061a lsls r2, r3, #24 + 8027dd6: 2330 movs r3, #48 ; 0x30 + 8027dd8: 041b lsls r3, r3, #16 + 8027dda: 431a orrs r2, r3 + 8027ddc: 2330 movs r3, #48 ; 0x30 + 8027dde: 021b lsls r3, r3, #8 + 8027de0: 4313 orrs r3, r2 + 8027de2: 2230 movs r2, #48 ; 0x30 + 8027de4: ea43 0102 orr.w r1, r3, r2 + 8027de8: 2344 movs r3, #68 ; 0x44 + 8027dea: 061a lsls r2, r3, #24 + 8027dec: 2346 movs r3, #70 ; 0x46 + 8027dee: 041b lsls r3, r3, #16 + 8027df0: 431a orrs r2, r3 + 8027df2: 234c movs r3, #76 ; 0x4c + 8027df4: 021b lsls r3, r3, #8 + 8027df6: 4313 orrs r3, r2 + 8027df8: 2254 movs r2, #84 ; 0x54 + 8027dfa: 431a orrs r2, r3 + 8027dfc: 4b0b ldr r3, [pc, #44] ; (8027e2c ) + 8027dfe: 9302 str r3, [sp, #8] + 8027e00: 234b movs r3, #75 ; 0x4b + 8027e02: 9301 str r3, [sp, #4] + 8027e04: 4b0a ldr r3, [pc, #40] ; (8027e30 ) + 8027e06: 9300 str r3, [sp, #0] + 8027e08: 4b10 ldr r3, [pc, #64] ; (8027e4c ) + 8027e0a: 2002 movs r0, #2 + 8027e0c: f7ff fd9c bl 8027948 + 8027e10: e000 b.n 8027e14 return; - 8027df8: bf00 nop + 8027e12: bf00 nop } } } - 8027dfa: 3710 adds r7, #16 - 8027dfc: 46bd mov sp, r7 - 8027dfe: bd80 pop {r7, pc} - 8027e00: 00000000 .word 0x00000000 - 8027e04: 40540000 .word 0x40540000 - 8027e08: 24009aac .word 0x24009aac - 8027e0c: 0804d308 .word 0x0804d308 - 8027e10: 08049e08 .word 0x08049e08 - 8027e14: 08049dc8 .word 0x08049dc8 - 8027e18: ffffd120 .word 0xffffd120 - 8027e1c: 2400ad14 .word 0x2400ad14 - 8027e20: 2400055c .word 0x2400055c - 8027e24: 08049da4 .word 0x08049da4 - 8027e28: 08049e2c .word 0x08049e2c - 8027e2c: 08049e48 .word 0x08049e48 - -08027e30 : + 8027e14: 3710 adds r7, #16 + 8027e16: 46bd mov sp, r7 + 8027e18: bd80 pop {r7, pc} + 8027e1a: bf00 nop + 8027e1c: f3af 8000 nop.w + 8027e20: 00000000 .word 0x00000000 + 8027e24: 40540000 .word 0x40540000 + 8027e28: 24009aac .word 0x24009aac + 8027e2c: 0804d348 .word 0x0804d348 + 8027e30: 08049e48 .word 0x08049e48 + 8027e34: 08049e08 .word 0x08049e08 + 8027e38: ffffd120 .word 0xffffd120 + 8027e3c: 2400ad14 .word 0x2400ad14 + 8027e40: 2400055c .word 0x2400055c + 8027e44: 08049de4 .word 0x08049de4 + 8027e48: 08049e6c .word 0x08049e6c + 8027e4c: 08049e88 .word 0x08049e88 + +08027e50 : //发送:01 03 00 1A 00 01 A5 CD //接收:01 03 02 高位 地位 CRC(4000~20000对应4~20mA) static void reading_K1061DC_Task(void) { - 8027e30: b590 push {r4, r7, lr} - 8027e32: b083 sub sp, #12 - 8027e34: af02 add r7, sp, #8 + 8027e50: b590 push {r4, r7, lr} + 8027e52: b083 sub sp, #12 + 8027e54: af02 add r7, sp, #8 // 使用 Modbus 库"bsp_MB_host.c"的读保持寄存器函数 MB_ReadHoldingReg(K1061DC_UART_Handler->Tx_Buf, &K1061DC_UART_Handler->TxCount, - 8027e36: 4b22 ldr r3, [pc, #136] ; (8027ec0 ) - 8027e38: 681b ldr r3, [r3, #0] - 8027e3a: f603 0021 addw r0, r3, #2081 ; 0x821 - 8027e3e: 4b20 ldr r3, [pc, #128] ; (8027ec0 ) - 8027e40: 681b ldr r3, [r3, #0] - 8027e42: f241 0122 movw r1, #4130 ; 0x1022 - 8027e46: 4419 add r1, r3 - 8027e48: 2301 movs r3, #1 - 8027e4a: 9300 str r3, [sp, #0] - 8027e4c: 231a movs r3, #26 - 8027e4e: 2201 movs r2, #1 - 8027e50: f7f9 f9f0 bl 8021234 + 8027e56: 4b22 ldr r3, [pc, #136] ; (8027ee0 ) + 8027e58: 681b ldr r3, [r3, #0] + 8027e5a: f603 0021 addw r0, r3, #2081 ; 0x821 + 8027e5e: 4b20 ldr r3, [pc, #128] ; (8027ee0 ) + 8027e60: 681b ldr r3, [r3, #0] + 8027e62: f241 0122 movw r1, #4130 ; 0x1022 + 8027e66: 4419 add r1, r3 + 8027e68: 2301 movs r3, #1 + 8027e6a: 9300 str r3, [sp, #0] + 8027e6c: 231a movs r3, #26 + 8027e6e: 2201 movs r2, #1 + 8027e70: f7f9 f9e0 bl 8021234 addr_K1061DC, REG_CURRENT_A, 1);//addr reg num K1061DC_UART_Handler->AddSendList( - 8027e54: 4b1a ldr r3, [pc, #104] ; (8027ec0 ) - 8027e56: 681b ldr r3, [r3, #0] - 8027e58: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8027e5c: 6b9c ldr r4, [r3, #56] ; 0x38 - 8027e5e: 4b18 ldr r3, [pc, #96] ; (8027ec0 ) - 8027e60: 6818 ldr r0, [r3, #0] + 8027e74: 4b1a ldr r3, [pc, #104] ; (8027ee0 ) + 8027e76: 681b ldr r3, [r3, #0] + 8027e78: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8027e7c: 6b9c ldr r4, [r3, #56] ; 0x38 + 8027e7e: 4b18 ldr r3, [pc, #96] ; (8027ee0 ) + 8027e80: 6818 ldr r0, [r3, #0] K1061DC_UART_Handler, K1061DC_UART_Handler->Tx_Buf, - 8027e62: 4b17 ldr r3, [pc, #92] ; (8027ec0 ) - 8027e64: 681b ldr r3, [r3, #0] - 8027e66: f603 0121 addw r1, r3, #2081 ; 0x821 + 8027e82: 4b17 ldr r3, [pc, #92] ; (8027ee0 ) + 8027e84: 681b ldr r3, [r3, #0] + 8027e86: f603 0121 addw r1, r3, #2081 ; 0x821 K1061DC_UART_Handler->TxCount, - 8027e6a: 4b15 ldr r3, [pc, #84] ; (8027ec0 ) - 8027e6c: 681b ldr r3, [r3, #0] + 8027e8a: 4b15 ldr r3, [pc, #84] ; (8027ee0 ) + 8027e8c: 681b ldr r3, [r3, #0] K1061DC_UART_Handler->AddSendList( - 8027e6e: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8027e72: 8c5a ldrh r2, [r3, #34] ; 0x22 - 8027e74: 4b13 ldr r3, [pc, #76] ; (8027ec4 ) - 8027e76: 9300 str r3, [sp, #0] - 8027e78: 2314 movs r3, #20 - 8027e7a: 47a0 blx r4 + 8027e8e: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8027e92: 8c5a ldrh r2, [r3, #34] ; 0x22 + 8027e94: 4b13 ldr r3, [pc, #76] ; (8027ee4 ) + 8027e96: 9300 str r3, [sp, #0] + 8027e98: 2314 movs r3, #20 + 8027e9a: 47a0 blx r4 20, //总发送周期= 20 + (DispacherCallTime = 100) = 120 decode_K1061DC); // K1061DC_UART_Handler->UART_Tx(K1061DC_UART_Handler); LOG("read data from K1061DC"); - 8027e7c: 4b12 ldr r3, [pc, #72] ; (8027ec8 ) - 8027e7e: 781b ldrb r3, [r3, #0] - 8027e80: 2b03 cmp r3, #3 - 8027e82: d918 bls.n 8027eb6 - 8027e84: 2330 movs r3, #48 ; 0x30 - 8027e86: 061a lsls r2, r3, #24 - 8027e88: 2330 movs r3, #48 ; 0x30 - 8027e8a: 041b lsls r3, r3, #16 - 8027e8c: 431a orrs r2, r3 - 8027e8e: 2330 movs r3, #48 ; 0x30 - 8027e90: 021b lsls r3, r3, #8 - 8027e92: 4313 orrs r3, r2 - 8027e94: 2230 movs r2, #48 ; 0x30 - 8027e96: ea43 0102 orr.w r1, r3, r2 - 8027e9a: 2344 movs r3, #68 ; 0x44 - 8027e9c: 061a lsls r2, r3, #24 - 8027e9e: 2346 movs r3, #70 ; 0x46 - 8027ea0: 041b lsls r3, r3, #16 - 8027ea2: 431a orrs r2, r3 - 8027ea4: 234c movs r3, #76 ; 0x4c - 8027ea6: 021b lsls r3, r3, #8 - 8027ea8: 4313 orrs r3, r2 - 8027eaa: 2254 movs r2, #84 ; 0x54 + 8027e9c: 4b12 ldr r3, [pc, #72] ; (8027ee8 ) + 8027e9e: 781b ldrb r3, [r3, #0] + 8027ea0: 2b03 cmp r3, #3 + 8027ea2: d918 bls.n 8027ed6 + 8027ea4: 2330 movs r3, #48 ; 0x30 + 8027ea6: 061a lsls r2, r3, #24 + 8027ea8: 2330 movs r3, #48 ; 0x30 + 8027eaa: 041b lsls r3, r3, #16 8027eac: 431a orrs r2, r3 - 8027eae: 4b07 ldr r3, [pc, #28] ; (8027ecc ) - 8027eb0: 2004 movs r0, #4 - 8027eb2: f7ff fd49 bl 8027948 -} - 8027eb6: bf00 nop - 8027eb8: 3704 adds r7, #4 - 8027eba: 46bd mov sp, r7 - 8027ebc: bd90 pop {r4, r7, pc} - 8027ebe: bf00 nop - 8027ec0: 2400ad18 .word 0x2400ad18 - 8027ec4: 08027c91 .word 0x08027c91 - 8027ec8: 24009aac .word 0x24009aac - 8027ecc: 08049e80 .word 0x08049e80 - -08027ed0 : + 8027eae: 2330 movs r3, #48 ; 0x30 + 8027eb0: 021b lsls r3, r3, #8 + 8027eb2: 4313 orrs r3, r2 + 8027eb4: 2230 movs r2, #48 ; 0x30 + 8027eb6: ea43 0102 orr.w r1, r3, r2 + 8027eba: 2344 movs r3, #68 ; 0x44 + 8027ebc: 061a lsls r2, r3, #24 + 8027ebe: 2346 movs r3, #70 ; 0x46 + 8027ec0: 041b lsls r3, r3, #16 + 8027ec2: 431a orrs r2, r3 + 8027ec4: 234c movs r3, #76 ; 0x4c + 8027ec6: 021b lsls r3, r3, #8 + 8027ec8: 4313 orrs r3, r2 + 8027eca: 2254 movs r2, #84 ; 0x54 + 8027ecc: 431a orrs r2, r3 + 8027ece: 4b07 ldr r3, [pc, #28] ; (8027eec ) + 8027ed0: 2004 movs r0, #4 + 8027ed2: f7ff fd39 bl 8027948 +} + 8027ed6: bf00 nop + 8027ed8: 3704 adds r7, #4 + 8027eda: 46bd mov sp, r7 + 8027edc: bd90 pop {r4, r7, pc} + 8027ede: bf00 nop + 8027ee0: 2400ad18 .word 0x2400ad18 + 8027ee4: 08027c91 .word 0x08027c91 + 8027ee8: 24009aac .word 0x24009aac + 8027eec: 08049ec0 .word 0x08049ec0 + +08027ef0 : * TargetAngle :0.01度 * MaxValue :0.1rpm * */ double Angle_Tune_PID(double CurrentAngle, double TargetAngle, double Position_KP, double Position_KI, double Position_KD, double MaxValue) { - 8027ed0: b480 push {r7} - 8027ed2: b08d sub sp, #52 ; 0x34 - 8027ed4: af00 add r7, sp, #0 - 8027ed6: ed87 0b0a vstr d0, [r7, #40] ; 0x28 - 8027eda: ed87 1b08 vstr d1, [r7, #32] - 8027ede: ed87 2b06 vstr d2, [r7, #24] - 8027ee2: ed87 3b04 vstr d3, [r7, #16] - 8027ee6: ed87 4b02 vstr d4, [r7, #8] - 8027eea: ed87 5b00 vstr d5, [r7] + 8027ef0: b480 push {r7} + 8027ef2: b08d sub sp, #52 ; 0x34 + 8027ef4: af00 add r7, sp, #0 + 8027ef6: ed87 0b0a vstr d0, [r7, #40] ; 0x28 + 8027efa: ed87 1b08 vstr d1, [r7, #32] + 8027efe: ed87 2b06 vstr d2, [r7, #24] + 8027f02: ed87 3b04 vstr d3, [r7, #16] + 8027f06: ed87 4b02 vstr d4, [r7, #8] + 8027f0a: ed87 5b00 vstr d5, [r7] { Bias = TargetValue - CurrentValue + 360; } */ Bias = CurrentAngle - TargetAngle; - 8027eee: ed97 6b0a vldr d6, [r7, #40] ; 0x28 - 8027ef2: ed97 7b08 vldr d7, [r7, #32] - 8027ef6: ee36 7b47 vsub.f64 d7, d6, d7 - 8027efa: 4b31 ldr r3, [pc, #196] ; (8027fc0 ) - 8027efc: ed83 7b00 vstr d7, [r3] + 8027f0e: ed97 6b0a vldr d6, [r7, #40] ; 0x28 + 8027f12: ed97 7b08 vldr d7, [r7, #32] + 8027f16: ee36 7b47 vsub.f64 d7, d6, d7 + 8027f1a: 4b31 ldr r3, [pc, #196] ; (8027fe0 ) + 8027f1c: ed83 7b00 vstr d7, [r3] Integral_bias += Bias; - 8027f00: 4b30 ldr r3, [pc, #192] ; (8027fc4 ) - 8027f02: ed93 6b00 vldr d6, [r3] - 8027f06: 4b2e ldr r3, [pc, #184] ; (8027fc0 ) - 8027f08: ed93 7b00 vldr d7, [r3] - 8027f0c: ee36 7b07 vadd.f64 d7, d6, d7 - 8027f10: 4b2c ldr r3, [pc, #176] ; (8027fc4 ) - 8027f12: ed83 7b00 vstr d7, [r3] + 8027f20: 4b30 ldr r3, [pc, #192] ; (8027fe4 ) + 8027f22: ed93 6b00 vldr d6, [r3] + 8027f26: 4b2e ldr r3, [pc, #184] ; (8027fe0 ) + 8027f28: ed93 7b00 vldr d7, [r3] + 8027f2c: ee36 7b07 vadd.f64 d7, d6, d7 + 8027f30: 4b2c ldr r3, [pc, #176] ; (8027fe4 ) + 8027f32: ed83 7b00 vstr d7, [r3] delta_Speed = Position_KP * Bias + Position_KI * Integral_bias - 8027f16: 4b2a ldr r3, [pc, #168] ; (8027fc0 ) - 8027f18: ed93 6b00 vldr d6, [r3] - 8027f1c: ed97 7b06 vldr d7, [r7, #24] - 8027f20: ee26 6b07 vmul.f64 d6, d6, d7 - 8027f24: 4b27 ldr r3, [pc, #156] ; (8027fc4 ) - 8027f26: ed93 5b00 vldr d5, [r3] - 8027f2a: ed97 7b04 vldr d7, [r7, #16] - 8027f2e: ee25 7b07 vmul.f64 d7, d5, d7 - 8027f32: ee36 6b07 vadd.f64 d6, d6, d7 + 8027f36: 4b2a ldr r3, [pc, #168] ; (8027fe0 ) + 8027f38: ed93 6b00 vldr d6, [r3] + 8027f3c: ed97 7b06 vldr d7, [r7, #24] + 8027f40: ee26 6b07 vmul.f64 d6, d6, d7 + 8027f44: 4b27 ldr r3, [pc, #156] ; (8027fe4 ) + 8027f46: ed93 5b00 vldr d5, [r3] + 8027f4a: ed97 7b04 vldr d7, [r7, #16] + 8027f4e: ee25 7b07 vmul.f64 d7, d5, d7 + 8027f52: ee36 6b07 vadd.f64 d6, d6, d7 + Position_KD * (Bias - Last_Bias); - 8027f36: 4b22 ldr r3, [pc, #136] ; (8027fc0 ) - 8027f38: ed93 5b00 vldr d5, [r3] - 8027f3c: 4b22 ldr r3, [pc, #136] ; (8027fc8 ) - 8027f3e: ed93 7b00 vldr d7, [r3] - 8027f42: ee35 5b47 vsub.f64 d5, d5, d7 - 8027f46: ed97 7b02 vldr d7, [r7, #8] - 8027f4a: ee25 7b07 vmul.f64 d7, d5, d7 - 8027f4e: ee36 7b07 vadd.f64 d7, d6, d7 + 8027f56: 4b22 ldr r3, [pc, #136] ; (8027fe0 ) + 8027f58: ed93 5b00 vldr d5, [r3] + 8027f5c: 4b22 ldr r3, [pc, #136] ; (8027fe8 ) + 8027f5e: ed93 7b00 vldr d7, [r3] + 8027f62: ee35 5b47 vsub.f64 d5, d5, d7 + 8027f66: ed97 7b02 vldr d7, [r7, #8] + 8027f6a: ee25 7b07 vmul.f64 d7, d5, d7 + 8027f6e: ee36 7b07 vadd.f64 d7, d6, d7 delta_Speed = Position_KP * Bias + Position_KI * Integral_bias - 8027f52: 4b1e ldr r3, [pc, #120] ; (8027fcc ) - 8027f54: ed83 7b00 vstr d7, [r3] + 8027f72: 4b1e ldr r3, [pc, #120] ; (8027fec ) + 8027f74: ed83 7b00 vstr d7, [r3] Last_Bias = Bias; - 8027f58: 4b19 ldr r3, [pc, #100] ; (8027fc0 ) - 8027f5a: e9d3 2300 ldrd r2, r3, [r3] - 8027f5e: 491a ldr r1, [pc, #104] ; (8027fc8 ) - 8027f60: e9c1 2300 strd r2, r3, [r1] + 8027f78: 4b19 ldr r3, [pc, #100] ; (8027fe0 ) + 8027f7a: e9d3 2300 ldrd r2, r3, [r3] + 8027f7e: 491a ldr r1, [pc, #104] ; (8027fe8 ) + 8027f80: e9c1 2300 strd r2, r3, [r1] if (delta_Speed >= MaxValue) - 8027f64: 4b19 ldr r3, [pc, #100] ; (8027fcc ) - 8027f66: ed93 7b00 vldr d7, [r3] - 8027f6a: ed97 6b00 vldr d6, [r7] - 8027f6e: eeb4 6bc7 vcmpe.f64 d6, d7 - 8027f72: eef1 fa10 vmrs APSR_nzcv, fpscr - 8027f76: d804 bhi.n 8027f82 + 8027f84: 4b19 ldr r3, [pc, #100] ; (8027fec ) + 8027f86: ed93 7b00 vldr d7, [r3] + 8027f8a: ed97 6b00 vldr d6, [r7] + 8027f8e: eeb4 6bc7 vcmpe.f64 d6, d7 + 8027f92: eef1 fa10 vmrs APSR_nzcv, fpscr + 8027f96: d804 bhi.n 8027fa2 { delta_Speed = MaxValue; - 8027f78: 4914 ldr r1, [pc, #80] ; (8027fcc ) - 8027f7a: e9d7 2300 ldrd r2, r3, [r7] - 8027f7e: e9c1 2300 strd r2, r3, [r1] + 8027f98: 4914 ldr r1, [pc, #80] ; (8027fec ) + 8027f9a: e9d7 2300 ldrd r2, r3, [r7] + 8027f9e: e9c1 2300 strd r2, r3, [r1] } if (delta_Speed <= -MaxValue) - 8027f82: ed97 7b00 vldr d7, [r7] - 8027f86: eeb1 6b47 vneg.f64 d6, d7 - 8027f8a: 4b10 ldr r3, [pc, #64] ; (8027fcc ) - 8027f8c: ed93 7b00 vldr d7, [r3] - 8027f90: eeb4 6bc7 vcmpe.f64 d6, d7 - 8027f94: eef1 fa10 vmrs APSR_nzcv, fpscr - 8027f98: db06 blt.n 8027fa8 + 8027fa2: ed97 7b00 vldr d7, [r7] + 8027fa6: eeb1 6b47 vneg.f64 d6, d7 + 8027faa: 4b10 ldr r3, [pc, #64] ; (8027fec ) + 8027fac: ed93 7b00 vldr d7, [r3] + 8027fb0: eeb4 6bc7 vcmpe.f64 d6, d7 + 8027fb4: eef1 fa10 vmrs APSR_nzcv, fpscr + 8027fb8: db06 blt.n 8027fc8 { delta_Speed = -MaxValue; - 8027f9a: ed97 7b00 vldr d7, [r7] - 8027f9e: eeb1 7b47 vneg.f64 d7, d7 - 8027fa2: 4b0a ldr r3, [pc, #40] ; (8027fcc ) - 8027fa4: ed83 7b00 vstr d7, [r3] + 8027fba: ed97 7b00 vldr d7, [r7] + 8027fbe: eeb1 7b47 vneg.f64 d7, d7 + 8027fc2: 4b0a ldr r3, [pc, #40] ; (8027fec ) + 8027fc4: ed83 7b00 vstr d7, [r3] } // return (int) delta_Speed; return delta_Speed; - 8027fa8: 4b08 ldr r3, [pc, #32] ; (8027fcc ) - 8027faa: e9d3 2300 ldrd r2, r3, [r3] - 8027fae: ec43 2b17 vmov d7, r2, r3 -} - 8027fb2: eeb0 0b47 vmov.f64 d0, d7 - 8027fb6: 3734 adds r7, #52 ; 0x34 - 8027fb8: 46bd mov sp, r7 - 8027fba: f85d 7b04 ldr.w r7, [sp], #4 - 8027fbe: 4770 bx lr - 8027fc0: 2400ad28 .word 0x2400ad28 - 8027fc4: 2400ad30 .word 0x2400ad30 - 8027fc8: 2400ad38 .word 0x2400ad38 - 8027fcc: 2400ad40 .word 0x2400ad40 - -08027fd0 : + 8027fc8: 4b08 ldr r3, [pc, #32] ; (8027fec ) + 8027fca: e9d3 2300 ldrd r2, r3, [r3] + 8027fce: ec43 2b17 vmov d7, r2, r3 +} + 8027fd2: eeb0 0b47 vmov.f64 d0, d7 + 8027fd6: 3734 adds r7, #52 ; 0x34 + 8027fd8: 46bd mov sp, r7 + 8027fda: f85d 7b04 ldr.w r7, [sp], #4 + 8027fde: 4770 bx lr + 8027fe0: 2400ad28 .word 0x2400ad28 + 8027fe4: 2400ad30 .word 0x2400ad30 + 8027fe8: 2400ad38 .word 0x2400ad38 + 8027fec: 2400ad40 .word 0x2400ad40 + +08027ff0 : static void reading_Task_TL720D(void); static void reading_Task_DDM360B(void); void TL720D_intialize(struct UARTHandler *Handler) { - 8027fd0: b590 push {r4, r7, lr} - 8027fd2: b083 sub sp, #12 - 8027fd4: af00 add r7, sp, #0 - 8027fd6: 6078 str r0, [r7, #4] + 8027ff0: b590 push {r4, r7, lr} + 8027ff2: b083 sub sp, #12 + 8027ff4: af00 add r7, sp, #0 + 8027ff6: 6078 str r0, [r7, #4] //TL720D_UART_Handler->UART_Decode = NULL; TL720D_UART_Handler = Handler; - 8027fd8: 4a3a ldr r2, [pc, #232] ; (80280c4 ) - 8027fda: 687b ldr r3, [r7, #4] - 8027fdc: 6013 str r3, [r2, #0] + 8027ff8: 4a3a ldr r2, [pc, #232] ; (80280e4 ) + 8027ffa: 687b ldr r3, [r7, #4] + 8027ffc: 6013 str r3, [r2, #0] TL720D_UART_Handler->Wait_time = 8; - 8027fde: 4b39 ldr r3, [pc, #228] ; (80280c4 ) - 8027fe0: 681b ldr r3, [r3, #0] - 8027fe2: 2208 movs r2, #8 - 8027fe4: 609a str r2, [r3, #8] + 8027ffe: 4b39 ldr r3, [pc, #228] ; (80280e4 ) + 8028000: 681b ldr r3, [r3, #0] + 8028002: 2208 movs r2, #8 + 8028004: 609a str r2, [r3, #8] // TL720D_UART_Handler->UART_Decode = decode_TL720D;//收到数据时调用decode_TL720D函数进行处理 // TL720D_UART_Handler->UART_Decode = decode_DDM360B; TL720D_DispacherController = Handler->dispacherController; - 8027fe6: 687b ldr r3, [r7, #4] - 8027fe8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8027fec: 6bdb ldr r3, [r3, #60] ; 0x3c - 8027fee: 4a36 ldr r2, [pc, #216] ; (80280c8 ) - 8027ff0: 6013 str r3, [r2, #0] + 8028006: 687b ldr r3, [r7, #4] + 8028008: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 802800c: 6bdb ldr r3, [r3, #60] ; 0x3c + 802800e: 4a36 ldr r2, [pc, #216] ; (80280e8 ) + 8028010: 6013 str r3, [r2, #0] TL720D_DispacherController->Dispacher_Enable = 1; //不周期性发送 - 8027ff2: 4b35 ldr r3, [pc, #212] ; (80280c8 ) - 8027ff4: 681b ldr r3, [r3, #0] - 8027ff6: 2201 movs r2, #1 - 8027ff8: 81da strh r2, [r3, #14] + 8028012: 4b35 ldr r3, [pc, #212] ; (80280e8 ) + 8028014: 681b ldr r3, [r3, #0] + 8028016: 2201 movs r2, #1 + 8028018: 81da strh r2, [r3, #14] // TL720D_DispacherController->DispacherCallTime = 40;// TL720D_DispacherController->DispacherCallTime = 0;// - 8027ffa: 4b33 ldr r3, [pc, #204] ; (80280c8 ) - 8027ffc: 681b ldr r3, [r3, #0] - 8027ffe: 2200 movs r2, #0 - 8028000: 815a strh r2, [r3, #10] + 802801a: 4b33 ldr r3, [pc, #204] ; (80280e8 ) + 802801c: 681b ldr r3, [r3, #0] + 802801e: 2200 movs r2, #0 + 8028020: 815a strh r2, [r3, #10] TL720D_DispacherController->Add_Dispatcher_List(TL720D_DispacherController, reading_Task_TL720D); - 8028002: 4b31 ldr r3, [pc, #196] ; (80280c8 ) - 8028004: 681b ldr r3, [r3, #0] - 8028006: 691b ldr r3, [r3, #16] - 8028008: 4a2f ldr r2, [pc, #188] ; (80280c8 ) - 802800a: 6812 ldr r2, [r2, #0] - 802800c: 492f ldr r1, [pc, #188] ; (80280cc ) - 802800e: 4610 mov r0, r2 - 8028010: 4798 blx r3 + 8028022: 4b31 ldr r3, [pc, #196] ; (80280e8 ) + 8028024: 681b ldr r3, [r3, #0] + 8028026: 691b ldr r3, [r3, #16] + 8028028: 4a2f ldr r2, [pc, #188] ; (80280e8 ) + 802802a: 6812 ldr r2, [r2, #0] + 802802c: 492f ldr r1, [pc, #188] ; (80280ec ) + 802802e: 4610 mov r0, r2 + 8028030: 4798 blx r3 TL720D_DispacherController->Add_Dispatcher_List(TL720D_DispacherController, reading_Task_DDM360B); - 8028012: 4b2d ldr r3, [pc, #180] ; (80280c8 ) - 8028014: 681b ldr r3, [r3, #0] - 8028016: 691b ldr r3, [r3, #16] - 8028018: 4a2b ldr r2, [pc, #172] ; (80280c8 ) - 802801a: 6812 ldr r2, [r2, #0] - 802801c: 492c ldr r1, [pc, #176] ; (80280d0 ) - 802801e: 4610 mov r0, r2 - 8028020: 4798 blx r3 + 8028032: 4b2d ldr r3, [pc, #180] ; (80280e8 ) + 8028034: 681b ldr r3, [r3, #0] + 8028036: 691b ldr r3, [r3, #16] + 8028038: 4a2b ldr r2, [pc, #172] ; (80280e8 ) + 802803a: 6812 ldr r2, [r2, #0] + 802803c: 492c ldr r1, [pc, #176] ; (80280f0 ) + 802803e: 4610 mov r0, r2 + 8028040: 4798 blx r3 HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"TL720D",0,ComError_TL720D);//注册硬件错误处理 - 8028022: 4b2c ldr r3, [pc, #176] ; (80280d4 ) - 8028024: 681b ldr r3, [r3, #0] - 8028026: 68dc ldr r4, [r3, #12] - 8028028: 4b2a ldr r3, [pc, #168] ; (80280d4 ) - 802802a: 6818 ldr r0, [r3, #0] - 802802c: 2301 movs r3, #1 - 802802e: 2200 movs r2, #0 - 8028030: 4929 ldr r1, [pc, #164] ; (80280d8 ) - 8028032: 47a0 blx r4 + 8028042: 4b2c ldr r3, [pc, #176] ; (80280f4 ) + 8028044: 681b ldr r3, [r3, #0] + 8028046: 68dc ldr r4, [r3, #12] + 8028048: 4b2a ldr r3, [pc, #168] ; (80280f4 ) + 802804a: 6818 ldr r0, [r3, #0] + 802804c: 2301 movs r3, #1 + 802804e: 2200 movs r2, #0 + 8028050: 4929 ldr r1, [pc, #164] ; (80280f8 ) + 8028052: 47a0 blx r4 HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"DDM360B",0,ComError_DDM360B); - 8028034: 4b27 ldr r3, [pc, #156] ; (80280d4 ) - 8028036: 681b ldr r3, [r3, #0] - 8028038: 68dc ldr r4, [r3, #12] - 802803a: 4b26 ldr r3, [pc, #152] ; (80280d4 ) - 802803c: 6818 ldr r0, [r3, #0] - 802803e: 2306 movs r3, #6 - 8028040: 2200 movs r2, #0 - 8028042: 4926 ldr r1, [pc, #152] ; (80280dc ) - 8028044: 47a0 blx r4 + 8028054: 4b27 ldr r3, [pc, #156] ; (80280f4 ) + 8028056: 681b ldr r3, [r3, #0] + 8028058: 68dc ldr r4, [r3, #12] + 802805a: 4b26 ldr r3, [pc, #152] ; (80280f4 ) + 802805c: 6818 ldr r0, [r3, #0] + 802805e: 2306 movs r3, #6 + 8028060: 2200 movs r2, #0 + 8028062: 4926 ldr r1, [pc, #152] ; (80280fc ) + 8028064: 47a0 blx r4 //log_info("TL720D_intialize"); LOG("TL720D initialized success");//记录初始化日志 - 8028046: 4b26 ldr r3, [pc, #152] ; (80280e0 ) - 8028048: 781b ldrb r3, [r3, #0] - 802804a: 2b03 cmp r3, #3 - 802804c: d918 bls.n 8028080 - 802804e: 2330 movs r3, #48 ; 0x30 - 8028050: 061a lsls r2, r3, #24 - 8028052: 2330 movs r3, #48 ; 0x30 - 8028054: 041b lsls r3, r3, #16 - 8028056: 431a orrs r2, r3 - 8028058: 2330 movs r3, #48 ; 0x30 - 802805a: 021b lsls r3, r3, #8 - 802805c: 4313 orrs r3, r2 - 802805e: 2230 movs r2, #48 ; 0x30 - 8028060: ea43 0102 orr.w r1, r3, r2 - 8028064: 2344 movs r3, #68 ; 0x44 - 8028066: 061a lsls r2, r3, #24 - 8028068: 2346 movs r3, #70 ; 0x46 - 802806a: 041b lsls r3, r3, #16 - 802806c: 431a orrs r2, r3 - 802806e: 234c movs r3, #76 ; 0x4c - 8028070: 021b lsls r3, r3, #8 - 8028072: 4313 orrs r3, r2 - 8028074: 2254 movs r2, #84 ; 0x54 + 8028066: 4b26 ldr r3, [pc, #152] ; (8028100 ) + 8028068: 781b ldrb r3, [r3, #0] + 802806a: 2b03 cmp r3, #3 + 802806c: d918 bls.n 80280a0 + 802806e: 2330 movs r3, #48 ; 0x30 + 8028070: 061a lsls r2, r3, #24 + 8028072: 2330 movs r3, #48 ; 0x30 + 8028074: 041b lsls r3, r3, #16 8028076: 431a orrs r2, r3 - 8028078: 4b1a ldr r3, [pc, #104] ; (80280e4 ) - 802807a: 2004 movs r0, #4 - 802807c: f7ff fc64 bl 8027948 + 8028078: 2330 movs r3, #48 ; 0x30 + 802807a: 021b lsls r3, r3, #8 + 802807c: 4313 orrs r3, r2 + 802807e: 2230 movs r2, #48 ; 0x30 + 8028080: ea43 0102 orr.w r1, r3, r2 + 8028084: 2344 movs r3, #68 ; 0x44 + 8028086: 061a lsls r2, r3, #24 + 8028088: 2346 movs r3, #70 ; 0x46 + 802808a: 041b lsls r3, r3, #16 + 802808c: 431a orrs r2, r3 + 802808e: 234c movs r3, #76 ; 0x4c + 8028090: 021b lsls r3, r3, #8 + 8028092: 4313 orrs r3, r2 + 8028094: 2254 movs r2, #84 ; 0x54 + 8028096: 431a orrs r2, r3 + 8028098: 4b1a ldr r3, [pc, #104] ; (8028104 ) + 802809a: 2004 movs r0, #4 + 802809c: f7ff fc54 bl 8027948 LOG("DDM360B initialized success"); - 8028080: 4b17 ldr r3, [pc, #92] ; (80280e0 ) - 8028082: 781b ldrb r3, [r3, #0] - 8028084: 2b03 cmp r3, #3 - 8028086: d918 bls.n 80280ba - 8028088: 2330 movs r3, #48 ; 0x30 - 802808a: 061a lsls r2, r3, #24 - 802808c: 2330 movs r3, #48 ; 0x30 - 802808e: 041b lsls r3, r3, #16 - 8028090: 431a orrs r2, r3 - 8028092: 2330 movs r3, #48 ; 0x30 - 8028094: 021b lsls r3, r3, #8 - 8028096: 4313 orrs r3, r2 - 8028098: 2230 movs r2, #48 ; 0x30 - 802809a: ea43 0102 orr.w r1, r3, r2 - 802809e: 2344 movs r3, #68 ; 0x44 - 80280a0: 061a lsls r2, r3, #24 - 80280a2: 2346 movs r3, #70 ; 0x46 - 80280a4: 041b lsls r3, r3, #16 - 80280a6: 431a orrs r2, r3 - 80280a8: 234c movs r3, #76 ; 0x4c - 80280aa: 021b lsls r3, r3, #8 - 80280ac: 4313 orrs r3, r2 - 80280ae: 2254 movs r2, #84 ; 0x54 + 80280a0: 4b17 ldr r3, [pc, #92] ; (8028100 ) + 80280a2: 781b ldrb r3, [r3, #0] + 80280a4: 2b03 cmp r3, #3 + 80280a6: d918 bls.n 80280da + 80280a8: 2330 movs r3, #48 ; 0x30 + 80280aa: 061a lsls r2, r3, #24 + 80280ac: 2330 movs r3, #48 ; 0x30 + 80280ae: 041b lsls r3, r3, #16 80280b0: 431a orrs r2, r3 - 80280b2: 4b0d ldr r3, [pc, #52] ; (80280e8 ) - 80280b4: 2004 movs r0, #4 - 80280b6: f7ff fc47 bl 8027948 -} - 80280ba: bf00 nop - 80280bc: 370c adds r7, #12 - 80280be: 46bd mov sp, r7 - 80280c0: bd90 pop {r4, r7, pc} - 80280c2: bf00 nop - 80280c4: 2400ad50 .word 0x2400ad50 - 80280c8: 2400ad54 .word 0x2400ad54 - 80280cc: 08028305 .word 0x08028305 - 80280d0: 0802827d .word 0x0802827d - 80280d4: 2400055c .word 0x2400055c - 80280d8: 08049e98 .word 0x08049e98 - 80280dc: 08049ea0 .word 0x08049ea0 - 80280e0: 24009aac .word 0x24009aac - 80280e4: 08049ea8 .word 0x08049ea8 - 80280e8: 08049ec4 .word 0x08049ec4 - -080280ec : + 80280b2: 2330 movs r3, #48 ; 0x30 + 80280b4: 021b lsls r3, r3, #8 + 80280b6: 4313 orrs r3, r2 + 80280b8: 2230 movs r2, #48 ; 0x30 + 80280ba: ea43 0102 orr.w r1, r3, r2 + 80280be: 2344 movs r3, #68 ; 0x44 + 80280c0: 061a lsls r2, r3, #24 + 80280c2: 2346 movs r3, #70 ; 0x46 + 80280c4: 041b lsls r3, r3, #16 + 80280c6: 431a orrs r2, r3 + 80280c8: 234c movs r3, #76 ; 0x4c + 80280ca: 021b lsls r3, r3, #8 + 80280cc: 4313 orrs r3, r2 + 80280ce: 2254 movs r2, #84 ; 0x54 + 80280d0: 431a orrs r2, r3 + 80280d2: 4b0d ldr r3, [pc, #52] ; (8028108 ) + 80280d4: 2004 movs r0, #4 + 80280d6: f7ff fc37 bl 8027948 +} + 80280da: bf00 nop + 80280dc: 370c adds r7, #12 + 80280de: 46bd mov sp, r7 + 80280e0: bd90 pop {r4, r7, pc} + 80280e2: bf00 nop + 80280e4: 2400ad50 .word 0x2400ad50 + 80280e8: 2400ad54 .word 0x2400ad54 + 80280ec: 08028325 .word 0x08028325 + 80280f0: 0802829d .word 0x0802829d + 80280f4: 2400055c .word 0x2400055c + 80280f8: 08049ed8 .word 0x08049ed8 + 80280fc: 08049ee0 .word 0x08049ee0 + 8028100: 24009aac .word 0x24009aac + 8028104: 08049ee8 .word 0x08049ee8 + 8028108: 08049f04 .word 0x08049f04 + +0802810c : uint8_t Buffer_DDM360B[100];//调试用 uint8_t Length_DDM360B = 0;//调试用 static void decode_DDM360B(uint8_t *buffer, uint16_t length) { - 80280ec: b590 push {r4, r7, lr} - 80280ee: b089 sub sp, #36 ; 0x24 - 80280f0: af04 add r7, sp, #16 - 80280f2: 6078 str r0, [r7, #4] - 80280f4: 460b mov r3, r1 - 80280f6: 807b strh r3, [r7, #2] + 802810c: b590 push {r4, r7, lr} + 802810e: b089 sub sp, #36 ; 0x24 + 8028110: af04 add r7, sp, #16 + 8028112: 6078 str r0, [r7, #4] + 8028114: 460b mov r3, r1 + 8028116: 807b strh r3, [r7, #2] if(length < 100){ - 80280f8: 887b ldrh r3, [r7, #2] - 80280fa: 2b63 cmp r3, #99 ; 0x63 - 80280fc: d809 bhi.n 8028112 + 8028118: 887b ldrh r3, [r7, #2] + 802811a: 2b63 cmp r3, #99 ; 0x63 + 802811c: d809 bhi.n 8028132 Length_DDM360B = length; - 80280fe: 887b ldrh r3, [r7, #2] - 8028100: b2da uxtb r2, r3 - 8028102: 4b53 ldr r3, [pc, #332] ; (8028250 ) - 8028104: 701a strb r2, [r3, #0] + 802811e: 887b ldrh r3, [r7, #2] + 8028120: b2da uxtb r2, r3 + 8028122: 4b53 ldr r3, [pc, #332] ; (8028270 ) + 8028124: 701a strb r2, [r3, #0] memcpy(Buffer_DDM360B, buffer, length);//调试用 - 8028106: 887b ldrh r3, [r7, #2] - 8028108: 461a mov r2, r3 - 802810a: 6879 ldr r1, [r7, #4] - 802810c: 4851 ldr r0, [pc, #324] ; (8028254 ) - 802810e: f01f fe39 bl 8047d84 + 8028126: 887b ldrh r3, [r7, #2] + 8028128: 461a mov r2, r3 + 802812a: 6879 ldr r1, [r7, #4] + 802812c: 4851 ldr r0, [pc, #324] ; (8028274 ) + 802812e: f01f fe49 bl 8047dc4 } // // DDM360B: 帧长0x0D(13字节), 地址0x02 if (buffer[0] == 0x68 && buffer[1] == 0x0D && buffer[2] == 0x02 - 8028112: 687b ldr r3, [r7, #4] - 8028114: 781b ldrb r3, [r3, #0] - 8028116: 2b68 cmp r3, #104 ; 0x68 - 8028118: d170 bne.n 80281fc - 802811a: 687b ldr r3, [r7, #4] - 802811c: 3301 adds r3, #1 - 802811e: 781b ldrb r3, [r3, #0] - 8028120: 2b0d cmp r3, #13 - 8028122: d16b bne.n 80281fc - 8028124: 687b ldr r3, [r7, #4] - 8028126: 3302 adds r3, #2 - 8028128: 781b ldrb r3, [r3, #0] - 802812a: 2b02 cmp r3, #2 - 802812c: d166 bne.n 80281fc + 8028132: 687b ldr r3, [r7, #4] + 8028134: 781b ldrb r3, [r3, #0] + 8028136: 2b68 cmp r3, #104 ; 0x68 + 8028138: d170 bne.n 802821c + 802813a: 687b ldr r3, [r7, #4] + 802813c: 3301 adds r3, #1 + 802813e: 781b ldrb r3, [r3, #0] + 8028140: 2b0d cmp r3, #13 + 8028142: d16b bne.n 802821c + 8028144: 687b ldr r3, [r7, #4] + 8028146: 3302 adds r3, #2 + 8028148: 781b ldrb r3, [r3, #0] + 802814a: 2b02 cmp r3, #2 + 802814c: d166 bne.n 802821c && buffer[3] == 0x84 && length == 14) - 802812e: 687b ldr r3, [r7, #4] - 8028130: 3303 adds r3, #3 - 8028132: 781b ldrb r3, [r3, #0] - 8028134: 2b84 cmp r3, #132 ; 0x84 - 8028136: d161 bne.n 80281fc - 8028138: 887b ldrh r3, [r7, #2] - 802813a: 2b0e cmp r3, #14 - 802813c: d15e bne.n 80281fc + 802814e: 687b ldr r3, [r7, #4] + 8028150: 3303 adds r3, #3 + 8028152: 781b ldrb r3, [r3, #0] + 8028154: 2b84 cmp r3, #132 ; 0x84 + 8028156: d161 bne.n 802821c + 8028158: 887b ldrh r3, [r7, #2] + 802815a: 2b0e cmp r3, #14 + 802815c: d15e bne.n 802821c { // 验证校验和(不含字头) uint8_t calc_checksum = 0; - 802813e: 2300 movs r3, #0 - 8028140: 73fb strb r3, [r7, #15] + 802815e: 2300 movs r3, #0 + 8028160: 73fb strb r3, [r7, #15] for (int i = 1; i < (14-1); i++) { - 8028142: 2301 movs r3, #1 - 8028144: 60bb str r3, [r7, #8] - 8028146: e009 b.n 802815c + 8028162: 2301 movs r3, #1 + 8028164: 60bb str r3, [r7, #8] + 8028166: e009 b.n 802817c calc_checksum += buffer[i]; - 8028148: 68bb ldr r3, [r7, #8] - 802814a: 687a ldr r2, [r7, #4] - 802814c: 4413 add r3, r2 - 802814e: 781a ldrb r2, [r3, #0] - 8028150: 7bfb ldrb r3, [r7, #15] - 8028152: 4413 add r3, r2 - 8028154: 73fb strb r3, [r7, #15] + 8028168: 68bb ldr r3, [r7, #8] + 802816a: 687a ldr r2, [r7, #4] + 802816c: 4413 add r3, r2 + 802816e: 781a ldrb r2, [r3, #0] + 8028170: 7bfb ldrb r3, [r7, #15] + 8028172: 4413 add r3, r2 + 8028174: 73fb strb r3, [r7, #15] for (int i = 1; i < (14-1); i++) { - 8028156: 68bb ldr r3, [r7, #8] - 8028158: 3301 adds r3, #1 - 802815a: 60bb str r3, [r7, #8] - 802815c: 68bb ldr r3, [r7, #8] - 802815e: 2b0c cmp r3, #12 - 8028160: ddf2 ble.n 8028148 + 8028176: 68bb ldr r3, [r7, #8] + 8028178: 3301 adds r3, #1 + 802817a: 60bb str r3, [r7, #8] + 802817c: 68bb ldr r3, [r7, #8] + 802817e: 2b0c cmp r3, #12 + 8028180: ddf2 ble.n 8028168 } if (calc_checksum != buffer[14-1]) { - 8028162: 687b ldr r3, [r7, #4] - 8028164: 330d adds r3, #13 - 8028166: 781b ldrb r3, [r3, #0] - 8028168: 7bfa ldrb r2, [r7, #15] - 802816a: 429a cmp r2, r3 - 802816c: d16a bne.n 8028244 + 8028182: 687b ldr r3, [r7, #4] + 8028184: 330d adds r3, #13 + 8028186: 781b ldrb r3, [r3, #0] + 8028188: 7bfa ldrb r2, [r7, #15] + 802818a: 429a cmp r2, r3 + 802818c: d16a bne.n 8028264 return; } MSP_DDM360B_Parameters_In->RF_Angle_Roll = getDeci(&buffer[4]); - 802816e: 687b ldr r3, [r7, #4] - 8028170: 3304 adds r3, #4 - 8028172: 4a39 ldr r2, [pc, #228] ; (8028258 ) - 8028174: 6814 ldr r4, [r2, #0] - 8028176: 4618 mov r0, r3 - 8028178: f000 fa2c bl 80285d4 - 802817c: 4603 mov r3, r0 - 802817e: 6023 str r3, [r4, #0] + 802818e: 687b ldr r3, [r7, #4] + 8028190: 3304 adds r3, #4 + 8028192: 4a39 ldr r2, [pc, #228] ; (8028278 ) + 8028194: 6814 ldr r4, [r2, #0] + 8028196: 4618 mov r0, r3 + 8028198: f000 fa3a bl 8028610 + 802819c: 4603 mov r3, r0 + 802819e: 6023 str r3, [r4, #0] MSP_DDM360B_Parameters_In->RF_Angle_Pitch = getDeci(&buffer[7]); - 8028180: 687b ldr r3, [r7, #4] - 8028182: 3307 adds r3, #7 - 8028184: 4a34 ldr r2, [pc, #208] ; (8028258 ) - 8028186: 6814 ldr r4, [r2, #0] - 8028188: 4618 mov r0, r3 - 802818a: f000 fa23 bl 80285d4 - 802818e: 4603 mov r3, r0 - 8028190: 6063 str r3, [r4, #4] + 80281a0: 687b ldr r3, [r7, #4] + 80281a2: 3307 adds r3, #7 + 80281a4: 4a34 ldr r2, [pc, #208] ; (8028278 ) + 80281a6: 6814 ldr r4, [r2, #0] + 80281a8: 4618 mov r0, r3 + 80281aa: f000 fa31 bl 8028610 + 80281ae: 4603 mov r3, r0 + 80281b0: 6063 str r3, [r4, #4] MSP_DDM360B_Parameters_In->RF_Angle_Yaw = getDeci(&buffer[10]); - 8028192: 687b ldr r3, [r7, #4] - 8028194: 330a adds r3, #10 - 8028196: 4a30 ldr r2, [pc, #192] ; (8028258 ) - 8028198: 6814 ldr r4, [r2, #0] - 802819a: 4618 mov r0, r3 - 802819c: f000 fa1a bl 80285d4 - 80281a0: 4603 mov r3, r0 - 80281a2: 60a3 str r3, [r4, #8] + 80281b2: 687b ldr r3, [r7, #4] + 80281b4: 330a adds r3, #10 + 80281b6: 4a30 ldr r2, [pc, #192] ; (8028278 ) + 80281b8: 6814 ldr r4, [r2, #0] + 80281ba: 4618 mov r0, r3 + 80281bc: f000 fa28 bl 8028610 + 80281c0: 4603 mov r3, r0 + 80281c2: 60a3 str r3, [r4, #8] *RobotAngle_DDM = MSP_DDM360B_Parameters_In->RF_Angle_Yaw; - 80281a4: 4b2c ldr r3, [pc, #176] ; (8028258 ) - 80281a6: 681a ldr r2, [r3, #0] - 80281a8: 4b2c ldr r3, [pc, #176] ; (802825c ) - 80281aa: 681b ldr r3, [r3, #0] - 80281ac: 6892 ldr r2, [r2, #8] - 80281ae: 601a str r2, [r3, #0] + 80281c4: 4b2c ldr r3, [pc, #176] ; (8028278 ) + 80281c6: 681a ldr r2, [r3, #0] + 80281c8: 4b2c ldr r3, [pc, #176] ; (802827c ) + 80281ca: 681b ldr r3, [r3, #0] + 80281cc: 6892 ldr r2, [r2, #8] + 80281ce: 601a str r2, [r3, #0] HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"DDM360B",1); - 80281b0: 4b2b ldr r3, [pc, #172] ; (8028260 ) - 80281b2: 681b ldr r3, [r3, #0] - 80281b4: 695b ldr r3, [r3, #20] - 80281b6: 4a2a ldr r2, [pc, #168] ; (8028260 ) - 80281b8: 6810 ldr r0, [r2, #0] - 80281ba: 2201 movs r2, #1 - 80281bc: 4929 ldr r1, [pc, #164] ; (8028264 ) - 80281be: 4798 blx r3 + 80281d0: 4b2b ldr r3, [pc, #172] ; (8028280 ) + 80281d2: 681b ldr r3, [r3, #0] + 80281d4: 695b ldr r3, [r3, #20] + 80281d6: 4a2a ldr r2, [pc, #168] ; (8028280 ) + 80281d8: 6810 ldr r0, [r2, #0] + 80281da: 2201 movs r2, #1 + 80281dc: 4929 ldr r1, [pc, #164] ; (8028284 ) + 80281de: 4798 blx r3 LOG("DDM360B decoding succeeded"); - 80281c0: 4b29 ldr r3, [pc, #164] ; (8028268 ) - 80281c2: 781b ldrb r3, [r3, #0] - 80281c4: 2b03 cmp r3, #3 - 80281c6: d93f bls.n 8028248 - 80281c8: 2330 movs r3, #48 ; 0x30 - 80281ca: 061a lsls r2, r3, #24 - 80281cc: 2330 movs r3, #48 ; 0x30 - 80281ce: 041b lsls r3, r3, #16 - 80281d0: 431a orrs r2, r3 - 80281d2: 2330 movs r3, #48 ; 0x30 - 80281d4: 021b lsls r3, r3, #8 - 80281d6: 4313 orrs r3, r2 - 80281d8: 2230 movs r2, #48 ; 0x30 - 80281da: ea43 0102 orr.w r1, r3, r2 - 80281de: 2344 movs r3, #68 ; 0x44 - 80281e0: 061a lsls r2, r3, #24 - 80281e2: 2346 movs r3, #70 ; 0x46 - 80281e4: 041b lsls r3, r3, #16 - 80281e6: 431a orrs r2, r3 - 80281e8: 234c movs r3, #76 ; 0x4c - 80281ea: 021b lsls r3, r3, #8 - 80281ec: 4313 orrs r3, r2 - 80281ee: 2254 movs r2, #84 ; 0x54 + 80281e0: 4b29 ldr r3, [pc, #164] ; (8028288 ) + 80281e2: 781b ldrb r3, [r3, #0] + 80281e4: 2b03 cmp r3, #3 + 80281e6: d93f bls.n 8028268 + 80281e8: 2330 movs r3, #48 ; 0x30 + 80281ea: 061a lsls r2, r3, #24 + 80281ec: 2330 movs r3, #48 ; 0x30 + 80281ee: 041b lsls r3, r3, #16 80281f0: 431a orrs r2, r3 - 80281f2: 4b1e ldr r3, [pc, #120] ; (802826c ) - 80281f4: 2004 movs r0, #4 - 80281f6: f7ff fba7 bl 8027948 + 80281f2: 2330 movs r3, #48 ; 0x30 + 80281f4: 021b lsls r3, r3, #8 + 80281f6: 4313 orrs r3, r2 + 80281f8: 2230 movs r2, #48 ; 0x30 + 80281fa: ea43 0102 orr.w r1, r3, r2 + 80281fe: 2344 movs r3, #68 ; 0x44 + 8028200: 061a lsls r2, r3, #24 + 8028202: 2346 movs r3, #70 ; 0x46 + 8028204: 041b lsls r3, r3, #16 + 8028206: 431a orrs r2, r3 + 8028208: 234c movs r3, #76 ; 0x4c + 802820a: 021b lsls r3, r3, #8 + 802820c: 4313 orrs r3, r2 + 802820e: 2254 movs r2, #84 ; 0x54 + 8028210: 431a orrs r2, r3 + 8028212: 4b1e ldr r3, [pc, #120] ; (802828c ) + 8028214: 2004 movs r0, #4 + 8028216: f7ff fb97 bl 8027948 { - 80281fa: e025 b.n 8028248 + 802821a: e025 b.n 8028268 }else { //log_error("TL720D decoding failed"); LOGFF(DL_ERROR,"DDM360B decoding failed"); - 80281fc: 4b1a ldr r3, [pc, #104] ; (8028268 ) - 80281fe: 781b ldrb r3, [r3, #0] - 8028200: 2b01 cmp r3, #1 - 8028202: d922 bls.n 802824a - 8028204: 2330 movs r3, #48 ; 0x30 - 8028206: 061a lsls r2, r3, #24 - 8028208: 2330 movs r3, #48 ; 0x30 - 802820a: 041b lsls r3, r3, #16 - 802820c: 431a orrs r2, r3 - 802820e: 2330 movs r3, #48 ; 0x30 - 8028210: 021b lsls r3, r3, #8 - 8028212: 4313 orrs r3, r2 - 8028214: 2230 movs r2, #48 ; 0x30 - 8028216: ea43 0102 orr.w r1, r3, r2 - 802821a: 2344 movs r3, #68 ; 0x44 - 802821c: 061a lsls r2, r3, #24 - 802821e: 2346 movs r3, #70 ; 0x46 - 8028220: 041b lsls r3, r3, #16 - 8028222: 431a orrs r2, r3 - 8028224: 234c movs r3, #76 ; 0x4c - 8028226: 021b lsls r3, r3, #8 - 8028228: 4313 orrs r3, r2 - 802822a: 2254 movs r2, #84 ; 0x54 + 802821c: 4b1a ldr r3, [pc, #104] ; (8028288 ) + 802821e: 781b ldrb r3, [r3, #0] + 8028220: 2b01 cmp r3, #1 + 8028222: d922 bls.n 802826a + 8028224: 2330 movs r3, #48 ; 0x30 + 8028226: 061a lsls r2, r3, #24 + 8028228: 2330 movs r3, #48 ; 0x30 + 802822a: 041b lsls r3, r3, #16 802822c: 431a orrs r2, r3 - 802822e: 4b10 ldr r3, [pc, #64] ; (8028270 ) - 8028230: 9302 str r3, [sp, #8] - 8028232: 235d movs r3, #93 ; 0x5d - 8028234: 9301 str r3, [sp, #4] - 8028236: 4b0f ldr r3, [pc, #60] ; (8028274 ) - 8028238: 9300 str r3, [sp, #0] - 802823a: 4b0f ldr r3, [pc, #60] ; (8028278 ) - 802823c: 2002 movs r0, #2 - 802823e: f7ff fb83 bl 8027948 - 8028242: e002 b.n 802824a + 802822e: 2330 movs r3, #48 ; 0x30 + 8028230: 021b lsls r3, r3, #8 + 8028232: 4313 orrs r3, r2 + 8028234: 2230 movs r2, #48 ; 0x30 + 8028236: ea43 0102 orr.w r1, r3, r2 + 802823a: 2344 movs r3, #68 ; 0x44 + 802823c: 061a lsls r2, r3, #24 + 802823e: 2346 movs r3, #70 ; 0x46 + 8028240: 041b lsls r3, r3, #16 + 8028242: 431a orrs r2, r3 + 8028244: 234c movs r3, #76 ; 0x4c + 8028246: 021b lsls r3, r3, #8 + 8028248: 4313 orrs r3, r2 + 802824a: 2254 movs r2, #84 ; 0x54 + 802824c: 431a orrs r2, r3 + 802824e: 4b10 ldr r3, [pc, #64] ; (8028290 ) + 8028250: 9302 str r3, [sp, #8] + 8028252: 235d movs r3, #93 ; 0x5d + 8028254: 9301 str r3, [sp, #4] + 8028256: 4b0f ldr r3, [pc, #60] ; (8028294 ) + 8028258: 9300 str r3, [sp, #0] + 802825a: 4b0f ldr r3, [pc, #60] ; (8028298 ) + 802825c: 2002 movs r0, #2 + 802825e: f7ff fb73 bl 8027948 + 8028262: e002 b.n 802826a return; - 8028244: bf00 nop - 8028246: e000 b.n 802824a + 8028264: bf00 nop + 8028266: e000 b.n 802826a { - 8028248: bf00 nop + 8028268: bf00 nop } } - 802824a: 3714 adds r7, #20 - 802824c: 46bd mov sp, r7 - 802824e: bd90 pop {r4, r7, pc} - 8028250: 2400adc4 .word 0x2400adc4 - 8028254: 2400ad60 .word 0x2400ad60 - 8028258: 2400ad5c .word 0x2400ad5c - 802825c: 2400ad4c .word 0x2400ad4c - 8028260: 2400055c .word 0x2400055c - 8028264: 08049ea0 .word 0x08049ea0 - 8028268: 24009aac .word 0x24009aac - 802826c: 08049ee0 .word 0x08049ee0 - 8028270: 0804d318 .word 0x0804d318 - 8028274: 08049f34 .word 0x08049f34 - 8028278: 08049efc .word 0x08049efc - -0802827c : + 802826a: 3714 adds r7, #20 + 802826c: 46bd mov sp, r7 + 802826e: bd90 pop {r4, r7, pc} + 8028270: 2400adc4 .word 0x2400adc4 + 8028274: 2400ad60 .word 0x2400ad60 + 8028278: 2400ad5c .word 0x2400ad5c + 802827c: 2400ad4c .word 0x2400ad4c + 8028280: 2400055c .word 0x2400055c + 8028284: 08049ee0 .word 0x08049ee0 + 8028288: 24009aac .word 0x24009aac + 802828c: 08049f20 .word 0x08049f20 + 8028290: 0804d358 .word 0x0804d358 + 8028294: 08049f74 .word 0x08049f74 + 8028298: 08049f3c .word 0x08049f3c + +0802829c : static void reading_Task_DDM360B(void) { - 802827c: b590 push {r4, r7, lr} - 802827e: b085 sub sp, #20 - 8028280: af02 add r7, sp, #8 + 802829c: b590 push {r4, r7, lr} + 802829e: b085 sub sp, #20 + 80282a0: af02 add r7, sp, #8 uint8_t addr = addr_DDM360B; - 8028282: 2302 movs r3, #2 - 8028284: 71fb strb r3, [r7, #7] + 80282a2: 2302 movs r3, #2 + 80282a4: 71fb strb r3, [r7, #7] uint8_t cmd[5]; uint8_t checksum = 0; - 8028286: 2300 movs r3, #0 - 8028288: 71bb strb r3, [r7, #6] + 80282a6: 2300 movs r3, #0 + 80282a8: 71bb strb r3, [r7, #6] cmd[0] = 0x68; // 帧头 - 802828a: 2368 movs r3, #104 ; 0x68 - 802828c: 703b strb r3, [r7, #0] + 80282aa: 2368 movs r3, #104 ; 0x68 + 80282ac: 703b strb r3, [r7, #0] cmd[1] = 0x04; // 数据长度 - 802828e: 2304 movs r3, #4 - 8028290: 707b strb r3, [r7, #1] + 80282ae: 2304 movs r3, #4 + 80282b0: 707b strb r3, [r7, #1] cmd[2] = addr; // 地址码 - 8028292: 79fb ldrb r3, [r7, #7] - 8028294: 70bb strb r3, [r7, #2] + 80282b2: 79fb ldrb r3, [r7, #7] + 80282b4: 70bb strb r3, [r7, #2] cmd[3] = 0x04; // 命令字(读取角度) - 8028296: 2304 movs r3, #4 - 8028298: 70fb strb r3, [r7, #3] + 80282b6: 2304 movs r3, #4 + 80282b8: 70fb strb r3, [r7, #3] // 校验和 = 数据长度 + 地址码 + 命令字 checksum = cmd[1] + cmd[2] + cmd[3]; - 802829a: 787a ldrb r2, [r7, #1] - 802829c: 78bb ldrb r3, [r7, #2] - 802829e: 4413 add r3, r2 - 80282a0: b2da uxtb r2, r3 - 80282a2: 78fb ldrb r3, [r7, #3] - 80282a4: 4413 add r3, r2 - 80282a6: 71bb strb r3, [r7, #6] + 80282ba: 787a ldrb r2, [r7, #1] + 80282bc: 78bb ldrb r3, [r7, #2] + 80282be: 4413 add r3, r2 + 80282c0: b2da uxtb r2, r3 + 80282c2: 78fb ldrb r3, [r7, #3] + 80282c4: 4413 add r3, r2 + 80282c6: 71bb strb r3, [r7, #6] cmd[4] = checksum; - 80282a8: 79bb ldrb r3, [r7, #6] - 80282aa: 713b strb r3, [r7, #4] + 80282c8: 79bb ldrb r3, [r7, #6] + 80282ca: 713b strb r3, [r7, #4] memcpy(TL720D_UART_Handler->Tx_Buf, cmd, 5); - 80282ac: 4b13 ldr r3, [pc, #76] ; (80282fc ) - 80282ae: 681b ldr r3, [r3, #0] - 80282b0: f603 0321 addw r3, r3, #2081 ; 0x821 - 80282b4: 461a mov r2, r3 - 80282b6: 463b mov r3, r7 - 80282b8: 6818 ldr r0, [r3, #0] - 80282ba: 6010 str r0, [r2, #0] - 80282bc: 791b ldrb r3, [r3, #4] - 80282be: 7113 strb r3, [r2, #4] + 80282cc: 4b13 ldr r3, [pc, #76] ; (802831c ) + 80282ce: 681b ldr r3, [r3, #0] + 80282d0: f603 0321 addw r3, r3, #2081 ; 0x821 + 80282d4: 461a mov r2, r3 + 80282d6: 463b mov r3, r7 + 80282d8: 6818 ldr r0, [r3, #0] + 80282da: 6010 str r0, [r2, #0] + 80282dc: 791b ldrb r3, [r3, #4] + 80282de: 7113 strb r3, [r2, #4] TL720D_UART_Handler->TxCount = 5; - 80282c0: 4b0e ldr r3, [pc, #56] ; (80282fc ) - 80282c2: 681b ldr r3, [r3, #0] - 80282c4: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80282c8: 2205 movs r2, #5 - 80282ca: 845a strh r2, [r3, #34] ; 0x22 + 80282e0: 4b0e ldr r3, [pc, #56] ; (802831c ) + 80282e2: 681b ldr r3, [r3, #0] + 80282e4: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80282e8: 2205 movs r2, #5 + 80282ea: 845a strh r2, [r3, #34] ; 0x22 TL720D_UART_Handler->AddSendList( - 80282cc: 4b0b ldr r3, [pc, #44] ; (80282fc ) - 80282ce: 681b ldr r3, [r3, #0] - 80282d0: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80282d4: 6b9c ldr r4, [r3, #56] ; 0x38 - 80282d6: 4b09 ldr r3, [pc, #36] ; (80282fc ) - 80282d8: 6818 ldr r0, [r3, #0] + 80282ec: 4b0b ldr r3, [pc, #44] ; (802831c ) + 80282ee: 681b ldr r3, [r3, #0] + 80282f0: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80282f4: 6b9c ldr r4, [r3, #56] ; 0x38 + 80282f6: 4b09 ldr r3, [pc, #36] ; (802831c ) + 80282f8: 6818 ldr r0, [r3, #0] TL720D_UART_Handler, TL720D_UART_Handler->Tx_Buf, - 80282da: 4b08 ldr r3, [pc, #32] ; (80282fc ) - 80282dc: 681b ldr r3, [r3, #0] - 80282de: f603 0121 addw r1, r3, #2081 ; 0x821 + 80282fa: 4b08 ldr r3, [pc, #32] ; (802831c ) + 80282fc: 681b ldr r3, [r3, #0] + 80282fe: f603 0121 addw r1, r3, #2081 ; 0x821 TL720D_UART_Handler->TxCount, - 80282e2: 4b06 ldr r3, [pc, #24] ; (80282fc ) - 80282e4: 681b ldr r3, [r3, #0] + 8028302: 4b06 ldr r3, [pc, #24] ; (802831c ) + 8028304: 681b ldr r3, [r3, #0] TL720D_UART_Handler->AddSendList( - 80282e6: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80282ea: 8c5a ldrh r2, [r3, #34] ; 0x22 - 80282ec: 4b04 ldr r3, [pc, #16] ; (8028300 ) - 80282ee: 9300 str r3, [sp, #0] - 80282f0: 2314 movs r3, #20 - 80282f2: 47a0 blx r4 + 8028306: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 802830a: 8c5a ldrh r2, [r3, #34] ; 0x22 + 802830c: 4b04 ldr r3, [pc, #16] ; (8028320 ) + 802830e: 9300 str r3, [sp, #0] + 8028310: 2314 movs r3, #20 + 8028312: 47a0 blx r4 20, decode_DDM360B); // TL720D_UART_Handler->UART_Tx(TL720D_UART_Handler); } - 80282f4: bf00 nop - 80282f6: 370c adds r7, #12 - 80282f8: 46bd mov sp, r7 - 80282fa: bd90 pop {r4, r7, pc} - 80282fc: 2400ad50 .word 0x2400ad50 - 8028300: 080280ed .word 0x080280ed + 8028314: bf00 nop + 8028316: 370c adds r7, #12 + 8028318: 46bd mov sp, r7 + 802831a: bd90 pop {r4, r7, pc} + 802831c: 2400ad50 .word 0x2400ad50 + 8028320: 0802810d .word 0x0802810d -08028304 : +08028324 : static void reading_Task_TL720D(void) { - 8028304: b590 push {r4, r7, lr} - 8028306: b085 sub sp, #20 - 8028308: af02 add r7, sp, #8 + 8028324: b590 push {r4, r7, lr} + 8028326: b085 sub sp, #20 + 8028328: af02 add r7, sp, #8 // } // else // { // Send_Query_Command(addr_DDM360B); // 查询DDM360B(地址0x02) // } uint8_t addr = addr_TL720D; - 802830a: 2300 movs r3, #0 - 802830c: 71fb strb r3, [r7, #7] + 802832a: 2300 movs r3, #0 + 802832c: 71fb strb r3, [r7, #7] uint8_t cmd[5]; uint8_t checksum = 0; - 802830e: 2300 movs r3, #0 - 8028310: 71bb strb r3, [r7, #6] + 802832e: 2300 movs r3, #0 + 8028330: 71bb strb r3, [r7, #6] cmd[0] = 0x68; // 帧头 - 8028312: 2368 movs r3, #104 ; 0x68 - 8028314: 703b strb r3, [r7, #0] + 8028332: 2368 movs r3, #104 ; 0x68 + 8028334: 703b strb r3, [r7, #0] cmd[1] = 0x04; // 数据长度 - 8028316: 2304 movs r3, #4 - 8028318: 707b strb r3, [r7, #1] + 8028336: 2304 movs r3, #4 + 8028338: 707b strb r3, [r7, #1] cmd[2] = addr; // 地址码 - 802831a: 79fb ldrb r3, [r7, #7] - 802831c: 70bb strb r3, [r7, #2] + 802833a: 79fb ldrb r3, [r7, #7] + 802833c: 70bb strb r3, [r7, #2] cmd[3] = 0x04; // 命令字(读取角度) - 802831e: 2304 movs r3, #4 - 8028320: 70fb strb r3, [r7, #3] + 802833e: 2304 movs r3, #4 + 8028340: 70fb strb r3, [r7, #3] // 校验和 = 数据长度 + 地址码 + 命令字 checksum = cmd[1] + cmd[2] + cmd[3]; - 8028322: 787a ldrb r2, [r7, #1] - 8028324: 78bb ldrb r3, [r7, #2] - 8028326: 4413 add r3, r2 - 8028328: b2da uxtb r2, r3 - 802832a: 78fb ldrb r3, [r7, #3] - 802832c: 4413 add r3, r2 - 802832e: 71bb strb r3, [r7, #6] + 8028342: 787a ldrb r2, [r7, #1] + 8028344: 78bb ldrb r3, [r7, #2] + 8028346: 4413 add r3, r2 + 8028348: b2da uxtb r2, r3 + 802834a: 78fb ldrb r3, [r7, #3] + 802834c: 4413 add r3, r2 + 802834e: 71bb strb r3, [r7, #6] cmd[4] = checksum; - 8028330: 79bb ldrb r3, [r7, #6] - 8028332: 713b strb r3, [r7, #4] + 8028350: 79bb ldrb r3, [r7, #6] + 8028352: 713b strb r3, [r7, #4] memcpy(TL720D_UART_Handler->Tx_Buf, cmd, 5); - 8028334: 4b13 ldr r3, [pc, #76] ; (8028384 ) - 8028336: 681b ldr r3, [r3, #0] - 8028338: f603 0321 addw r3, r3, #2081 ; 0x821 - 802833c: 461a mov r2, r3 - 802833e: 463b mov r3, r7 - 8028340: 6818 ldr r0, [r3, #0] - 8028342: 6010 str r0, [r2, #0] - 8028344: 791b ldrb r3, [r3, #4] - 8028346: 7113 strb r3, [r2, #4] + 8028354: 4b13 ldr r3, [pc, #76] ; (80283a4 ) + 8028356: 681b ldr r3, [r3, #0] + 8028358: f603 0321 addw r3, r3, #2081 ; 0x821 + 802835c: 461a mov r2, r3 + 802835e: 463b mov r3, r7 + 8028360: 6818 ldr r0, [r3, #0] + 8028362: 6010 str r0, [r2, #0] + 8028364: 791b ldrb r3, [r3, #4] + 8028366: 7113 strb r3, [r2, #4] TL720D_UART_Handler->TxCount = 5; - 8028348: 4b0e ldr r3, [pc, #56] ; (8028384 ) - 802834a: 681b ldr r3, [r3, #0] - 802834c: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8028350: 2205 movs r2, #5 - 8028352: 845a strh r2, [r3, #34] ; 0x22 + 8028368: 4b0e ldr r3, [pc, #56] ; (80283a4 ) + 802836a: 681b ldr r3, [r3, #0] + 802836c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8028370: 2205 movs r2, #5 + 8028372: 845a strh r2, [r3, #34] ; 0x22 TL720D_UART_Handler->AddSendList( - 8028354: 4b0b ldr r3, [pc, #44] ; (8028384 ) - 8028356: 681b ldr r3, [r3, #0] - 8028358: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 802835c: 6b9c ldr r4, [r3, #56] ; 0x38 - 802835e: 4b09 ldr r3, [pc, #36] ; (8028384 ) - 8028360: 6818 ldr r0, [r3, #0] + 8028374: 4b0b ldr r3, [pc, #44] ; (80283a4 ) + 8028376: 681b ldr r3, [r3, #0] + 8028378: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 802837c: 6b9c ldr r4, [r3, #56] ; 0x38 + 802837e: 4b09 ldr r3, [pc, #36] ; (80283a4 ) + 8028380: 6818 ldr r0, [r3, #0] TL720D_UART_Handler, TL720D_UART_Handler->Tx_Buf, - 8028362: 4b08 ldr r3, [pc, #32] ; (8028384 ) - 8028364: 681b ldr r3, [r3, #0] - 8028366: f603 0121 addw r1, r3, #2081 ; 0x821 + 8028382: 4b08 ldr r3, [pc, #32] ; (80283a4 ) + 8028384: 681b ldr r3, [r3, #0] + 8028386: f603 0121 addw r1, r3, #2081 ; 0x821 TL720D_UART_Handler->TxCount, - 802836a: 4b06 ldr r3, [pc, #24] ; (8028384 ) - 802836c: 681b ldr r3, [r3, #0] + 802838a: 4b06 ldr r3, [pc, #24] ; (80283a4 ) + 802838c: 681b ldr r3, [r3, #0] TL720D_UART_Handler->AddSendList( - 802836e: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8028372: 8c5a ldrh r2, [r3, #34] ; 0x22 - 8028374: 4b04 ldr r3, [pc, #16] ; (8028388 ) - 8028376: 9300 str r3, [sp, #0] - 8028378: 2314 movs r3, #20 - 802837a: 47a0 blx r4 + 802838e: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8028392: 8c5a ldrh r2, [r3, #34] ; 0x22 + 8028394: 4b04 ldr r3, [pc, #16] ; (80283a8 ) + 8028396: 9300 str r3, [sp, #0] + 8028398: 2314 movs r3, #20 + 802839a: 47a0 blx r4 20, decode_TL720D); } - 802837c: bf00 nop - 802837e: 370c adds r7, #12 - 8028380: 46bd mov sp, r7 - 8028382: bd90 pop {r4, r7, pc} - 8028384: 2400ad50 .word 0x2400ad50 - 8028388: 0802838d .word 0x0802838d + 802839c: bf00 nop + 802839e: 370c adds r7, #12 + 80283a0: 46bd mov sp, r7 + 80283a2: bd90 pop {r4, r7, pc} + 80283a4: 2400ad50 .word 0x2400ad50 + 80283a8: 080283ad .word 0x080283ad -0802838c : +080283ac : uint8_t Buffer_TL720D[100];//调试用 uint8_t Length_TL720D = 0;//调试用 static void decode_TL720D(uint8_t *buffer, uint16_t length) { - 802838c: b590 push {r4, r7, lr} - 802838e: b089 sub sp, #36 ; 0x24 - 8028390: af04 add r7, sp, #16 - 8028392: 6078 str r0, [r7, #4] - 8028394: 460b mov r3, r1 - 8028396: 807b strh r3, [r7, #2] + 80283ac: b590 push {r4, r7, lr} + 80283ae: b089 sub sp, #36 ; 0x24 + 80283b0: af04 add r7, sp, #16 + 80283b2: 6078 str r0, [r7, #4] + 80283b4: 460b mov r3, r1 + 80283b6: 807b strh r3, [r7, #2] if(length < 100){ - 8028398: 887b ldrh r3, [r7, #2] - 802839a: 2b63 cmp r3, #99 ; 0x63 - 802839c: d809 bhi.n 80283b2 + 80283b8: 887b ldrh r3, [r7, #2] + 80283ba: 2b63 cmp r3, #99 ; 0x63 + 80283bc: d809 bhi.n 80283d2 Length_TL720D = length; - 802839e: 887b ldrh r3, [r7, #2] - 80283a0: b2da uxtb r2, r3 - 80283a2: 4b73 ldr r3, [pc, #460] ; (8028570 ) - 80283a4: 701a strb r2, [r3, #0] + 80283be: 887b ldrh r3, [r7, #2] + 80283c0: b2da uxtb r2, r3 + 80283c2: 4b7a ldr r3, [pc, #488] ; (80285ac ) + 80283c4: 701a strb r2, [r3, #0] memcpy(Buffer_TL720D, buffer, length);//调试用 - 80283a6: 887b ldrh r3, [r7, #2] - 80283a8: 461a mov r2, r3 - 80283aa: 6879 ldr r1, [r7, #4] - 80283ac: 4871 ldr r0, [pc, #452] ; (8028574 ) - 80283ae: f01f fce9 bl 8047d84 + 80283c6: 887b ldrh r3, [r7, #2] + 80283c8: 461a mov r2, r3 + 80283ca: 6879 ldr r1, [r7, #4] + 80283cc: 4878 ldr r0, [pc, #480] ; (80285b0 ) + 80283ce: f01f fcf9 bl 8047dc4 } // // TL720D: 帧长0x1F(31字节), 地址0x00 if (buffer[0] == 0x68 && buffer[1] == 0x1F && buffer[2] == 0x00 - 80283b2: 687b ldr r3, [r7, #4] - 80283b4: 781b ldrb r3, [r3, #0] - 80283b6: 2b68 cmp r3, #104 ; 0x68 - 80283b8: f040 80b0 bne.w 802851c - 80283bc: 687b ldr r3, [r7, #4] - 80283be: 3301 adds r3, #1 - 80283c0: 781b ldrb r3, [r3, #0] - 80283c2: 2b1f cmp r3, #31 - 80283c4: f040 80aa bne.w 802851c - 80283c8: 687b ldr r3, [r7, #4] - 80283ca: 3302 adds r3, #2 - 80283cc: 781b ldrb r3, [r3, #0] - 80283ce: 2b00 cmp r3, #0 - 80283d0: f040 80a4 bne.w 802851c + 80283d2: 687b ldr r3, [r7, #4] + 80283d4: 781b ldrb r3, [r3, #0] + 80283d6: 2b68 cmp r3, #104 ; 0x68 + 80283d8: f040 80bd bne.w 8028556 + 80283dc: 687b ldr r3, [r7, #4] + 80283de: 3301 adds r3, #1 + 80283e0: 781b ldrb r3, [r3, #0] + 80283e2: 2b1f cmp r3, #31 + 80283e4: f040 80b7 bne.w 8028556 + 80283e8: 687b ldr r3, [r7, #4] + 80283ea: 3302 adds r3, #2 + 80283ec: 781b ldrb r3, [r3, #0] + 80283ee: 2b00 cmp r3, #0 + 80283f0: f040 80b1 bne.w 8028556 && buffer[3] == 0x84 && length ==32) - 80283d4: 687b ldr r3, [r7, #4] - 80283d6: 3303 adds r3, #3 - 80283d8: 781b ldrb r3, [r3, #0] - 80283da: 2b84 cmp r3, #132 ; 0x84 - 80283dc: f040 809e bne.w 802851c - 80283e0: 887b ldrh r3, [r7, #2] - 80283e2: 2b20 cmp r3, #32 - 80283e4: f040 809a bne.w 802851c + 80283f4: 687b ldr r3, [r7, #4] + 80283f6: 3303 adds r3, #3 + 80283f8: 781b ldrb r3, [r3, #0] + 80283fa: 2b84 cmp r3, #132 ; 0x84 + 80283fc: f040 80ab bne.w 8028556 + 8028400: 887b ldrh r3, [r7, #2] + 8028402: 2b20 cmp r3, #32 + 8028404: f040 80a7 bne.w 8028556 { // 验证校验和(不含字头) uint8_t calc_checksum = 0; - 80283e8: 2300 movs r3, #0 - 80283ea: 73fb strb r3, [r7, #15] + 8028408: 2300 movs r3, #0 + 802840a: 73fb strb r3, [r7, #15] for (int i = 1; i < (32-1); i++) { - 80283ec: 2301 movs r3, #1 - 80283ee: 60bb str r3, [r7, #8] - 80283f0: e009 b.n 8028406 + 802840c: 2301 movs r3, #1 + 802840e: 60bb str r3, [r7, #8] + 8028410: e009 b.n 8028426 calc_checksum += buffer[i]; - 80283f2: 68bb ldr r3, [r7, #8] - 80283f4: 687a ldr r2, [r7, #4] - 80283f6: 4413 add r3, r2 - 80283f8: 781a ldrb r2, [r3, #0] - 80283fa: 7bfb ldrb r3, [r7, #15] - 80283fc: 4413 add r3, r2 - 80283fe: 73fb strb r3, [r7, #15] + 8028412: 68bb ldr r3, [r7, #8] + 8028414: 687a ldr r2, [r7, #4] + 8028416: 4413 add r3, r2 + 8028418: 781a ldrb r2, [r3, #0] + 802841a: 7bfb ldrb r3, [r7, #15] + 802841c: 4413 add r3, r2 + 802841e: 73fb strb r3, [r7, #15] for (int i = 1; i < (32-1); i++) { - 8028400: 68bb ldr r3, [r7, #8] - 8028402: 3301 adds r3, #1 - 8028404: 60bb str r3, [r7, #8] - 8028406: 68bb ldr r3, [r7, #8] - 8028408: 2b1e cmp r3, #30 - 802840a: ddf2 ble.n 80283f2 + 8028420: 68bb ldr r3, [r7, #8] + 8028422: 3301 adds r3, #1 + 8028424: 60bb str r3, [r7, #8] + 8028426: 68bb ldr r3, [r7, #8] + 8028428: 2b1e cmp r3, #30 + 802842a: ddf2 ble.n 8028412 } if (calc_checksum != buffer[32-1]) { - 802840c: 687b ldr r3, [r7, #4] - 802840e: 331f adds r3, #31 - 8028410: 781b ldrb r3, [r3, #0] - 8028412: 7bfa ldrb r2, [r7, #15] - 8028414: 429a cmp r2, r3 - 8028416: f040 80a5 bne.w 8028564 + 802842c: 687b ldr r3, [r7, #4] + 802842e: 331f adds r3, #31 + 8028430: 781b ldrb r3, [r3, #0] + 8028432: 7bfa ldrb r2, [r7, #15] + 8028434: 429a cmp r2, r3 + 8028436: f040 80b2 bne.w 802859e return; // 校验失败,直接返回 } //SP_MSP_RF_TL720D_Parameters_In. SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll = getDeci(&buffer[4]); - 802841a: 687b ldr r3, [r7, #4] - 802841c: 3304 adds r3, #4 - 802841e: 4a56 ldr r2, [pc, #344] ; (8028578 ) - 8028420: 6814 ldr r4, [r2, #0] - 8028422: 4618 mov r0, r3 - 8028424: f000 f8d6 bl 80285d4 - 8028428: 4603 mov r3, r0 - 802842a: 6023 str r3, [r4, #0] + 802843a: 687b ldr r3, [r7, #4] + 802843c: 3304 adds r3, #4 + 802843e: 4a5d ldr r2, [pc, #372] ; (80285b4 ) + 8028440: 6814 ldr r4, [r2, #0] + 8028442: 4618 mov r0, r3 + 8028444: f000 f8e4 bl 8028610 + 8028448: 4603 mov r3, r0 + 802844a: 6023 str r3, [r4, #0] SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Pitch = getDeci(&buffer[7]); - 802842c: 687b ldr r3, [r7, #4] - 802842e: 3307 adds r3, #7 - 8028430: 4a51 ldr r2, [pc, #324] ; (8028578 ) - 8028432: 6814 ldr r4, [r2, #0] - 8028434: 4618 mov r0, r3 - 8028436: f000 f8cd bl 80285d4 - 802843a: 4603 mov r3, r0 - 802843c: 6063 str r3, [r4, #4] + 802844c: 687b ldr r3, [r7, #4] + 802844e: 3307 adds r3, #7 + 8028450: 4a58 ldr r2, [pc, #352] ; (80285b4 ) + 8028452: 6814 ldr r4, [r2, #0] + 8028454: 4618 mov r0, r3 + 8028456: f000 f8db bl 8028610 + 802845a: 4603 mov r3, r0 + 802845c: 6063 str r3, [r4, #4] SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Yaw = getDeci(&buffer[10]); - 802843e: 687b ldr r3, [r7, #4] - 8028440: 330a adds r3, #10 - 8028442: 4a4d ldr r2, [pc, #308] ; (8028578 ) - 8028444: 6814 ldr r4, [r2, #0] - 8028446: 4618 mov r0, r3 - 8028448: f000 f8c4 bl 80285d4 - 802844c: 4603 mov r3, r0 - 802844e: 60a3 str r3, [r4, #8] + 802845e: 687b ldr r3, [r7, #4] + 8028460: 330a adds r3, #10 + 8028462: 4a54 ldr r2, [pc, #336] ; (80285b4 ) + 8028464: 6814 ldr r4, [r2, #0] + 8028466: 4618 mov r0, r3 + 8028468: f000 f8d2 bl 8028610 + 802846c: 4603 mov r3, r0 + 802846e: 60a3 str r3, [r4, #8] SP_MSP_RF_TL720D_Parameters_In->RF_Acc_X = getDeci(&buffer[13]); - 8028450: 687b ldr r3, [r7, #4] - 8028452: 330d adds r3, #13 - 8028454: 4a48 ldr r2, [pc, #288] ; (8028578 ) - 8028456: 6814 ldr r4, [r2, #0] - 8028458: 4618 mov r0, r3 - 802845a: f000 f8bb bl 80285d4 - 802845e: 4603 mov r3, r0 - 8028460: 60e3 str r3, [r4, #12] + 8028470: 687b ldr r3, [r7, #4] + 8028472: 330d adds r3, #13 + 8028474: 4a4f ldr r2, [pc, #316] ; (80285b4 ) + 8028476: 6814 ldr r4, [r2, #0] + 8028478: 4618 mov r0, r3 + 802847a: f000 f8c9 bl 8028610 + 802847e: 4603 mov r3, r0 + 8028480: 60e3 str r3, [r4, #12] SP_MSP_RF_TL720D_Parameters_In->RF_Acc_Y = getDeci(&buffer[16]); - 8028462: 687b ldr r3, [r7, #4] - 8028464: 3310 adds r3, #16 - 8028466: 4a44 ldr r2, [pc, #272] ; (8028578 ) - 8028468: 6814 ldr r4, [r2, #0] - 802846a: 4618 mov r0, r3 - 802846c: f000 f8b2 bl 80285d4 - 8028470: 4603 mov r3, r0 - 8028472: 6123 str r3, [r4, #16] + 8028482: 687b ldr r3, [r7, #4] + 8028484: 3310 adds r3, #16 + 8028486: 4a4b ldr r2, [pc, #300] ; (80285b4 ) + 8028488: 6814 ldr r4, [r2, #0] + 802848a: 4618 mov r0, r3 + 802848c: f000 f8c0 bl 8028610 + 8028490: 4603 mov r3, r0 + 8028492: 6123 str r3, [r4, #16] SP_MSP_RF_TL720D_Parameters_In->RF_Acc_Z = getDeci(&buffer[19]); - 8028474: 687b ldr r3, [r7, #4] - 8028476: 3313 adds r3, #19 - 8028478: 4a3f ldr r2, [pc, #252] ; (8028578 ) - 802847a: 6814 ldr r4, [r2, #0] - 802847c: 4618 mov r0, r3 - 802847e: f000 f8a9 bl 80285d4 - 8028482: 4603 mov r3, r0 - 8028484: 6163 str r3, [r4, #20] + 8028494: 687b ldr r3, [r7, #4] + 8028496: 3313 adds r3, #19 + 8028498: 4a46 ldr r2, [pc, #280] ; (80285b4 ) + 802849a: 6814 ldr r4, [r2, #0] + 802849c: 4618 mov r0, r3 + 802849e: f000 f8b7 bl 8028610 + 80284a2: 4603 mov r3, r0 + 80284a4: 6163 str r3, [r4, #20] SP_MSP_RF_TL720D_Parameters_In->RF_Gro_X = getDeci(&buffer[22]); - 8028486: 687b ldr r3, [r7, #4] - 8028488: 3316 adds r3, #22 - 802848a: 4a3b ldr r2, [pc, #236] ; (8028578 ) - 802848c: 6814 ldr r4, [r2, #0] - 802848e: 4618 mov r0, r3 - 8028490: f000 f8a0 bl 80285d4 - 8028494: 4603 mov r3, r0 - 8028496: 61a3 str r3, [r4, #24] + 80284a6: 687b ldr r3, [r7, #4] + 80284a8: 3316 adds r3, #22 + 80284aa: 4a42 ldr r2, [pc, #264] ; (80285b4 ) + 80284ac: 6814 ldr r4, [r2, #0] + 80284ae: 4618 mov r0, r3 + 80284b0: f000 f8ae bl 8028610 + 80284b4: 4603 mov r3, r0 + 80284b6: 61a3 str r3, [r4, #24] SP_MSP_RF_TL720D_Parameters_In->RF_Gro_Y = getDeci(&buffer[25]); - 8028498: 687b ldr r3, [r7, #4] - 802849a: 3319 adds r3, #25 - 802849c: 4a36 ldr r2, [pc, #216] ; (8028578 ) - 802849e: 6814 ldr r4, [r2, #0] - 80284a0: 4618 mov r0, r3 - 80284a2: f000 f897 bl 80285d4 - 80284a6: 4603 mov r3, r0 - 80284a8: 61e3 str r3, [r4, #28] + 80284b8: 687b ldr r3, [r7, #4] + 80284ba: 3319 adds r3, #25 + 80284bc: 4a3d ldr r2, [pc, #244] ; (80285b4 ) + 80284be: 6814 ldr r4, [r2, #0] + 80284c0: 4618 mov r0, r3 + 80284c2: f000 f8a5 bl 8028610 + 80284c6: 4603 mov r3, r0 + 80284c8: 61e3 str r3, [r4, #28] SP_MSP_RF_TL720D_Parameters_In->RF_Gro_Z = getDeci(&buffer[28]); - 80284aa: 687b ldr r3, [r7, #4] - 80284ac: 331c adds r3, #28 - 80284ae: 4a32 ldr r2, [pc, #200] ; (8028578 ) - 80284b0: 6814 ldr r4, [r2, #0] - 80284b2: 4618 mov r0, r3 - 80284b4: f000 f88e bl 80285d4 - 80284b8: 4603 mov r3, r0 - 80284ba: 6223 str r3, [r4, #32] - -// *RobotAngle = SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll; + 80284ca: 687b ldr r3, [r7, #4] + 80284cc: 331c adds r3, #28 + 80284ce: 4a39 ldr r2, [pc, #228] ; (80285b4 ) + 80284d0: 6814 ldr r4, [r2, #0] + 80284d2: 4618 mov r0, r3 + 80284d4: f000 f89c bl 8028610 + 80284d8: 4603 mov r3, r0 + 80284da: 6223 str r3, [r4, #32] + + *RobotAngle = SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll; + 80284dc: 4b35 ldr r3, [pc, #212] ; (80285b4 ) + 80284de: 681a ldr r2, [r3, #0] + 80284e0: 4b35 ldr r3, [pc, #212] ; (80285b8 ) + 80284e2: 681b ldr r3, [r3, #0] + 80284e4: 6812 ldr r2, [r2, #0] + 80284e6: 601a str r2, [r3, #0] //水平向左为0°,转换为竖直向上为0°; - *RobotAngle = changeAngle_LeftZerotoUpZero(SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll); - 80284bc: 4b2e ldr r3, [pc, #184] ; (8028578 ) - 80284be: 681b ldr r3, [r3, #0] - 80284c0: 681b ldr r3, [r3, #0] - 80284c2: 4a2e ldr r2, [pc, #184] ; (802857c ) - 80284c4: 6814 ldr r4, [r2, #0] - 80284c6: 4618 mov r0, r3 - 80284c8: f000 f868 bl 802859c - 80284cc: 4603 mov r3, r0 - 80284ce: 6023 str r3, [r4, #0] + *RobotAngle = changeAngle_LeftZerotoUpZero(SP_MSP_RF_TL720D_Parameters_In->RF_Angle_Roll);//1号机器人 + 80284e8: 4b32 ldr r3, [pc, #200] ; (80285b4 ) + 80284ea: 681b ldr r3, [r3, #0] + 80284ec: 681b ldr r3, [r3, #0] + 80284ee: 4a32 ldr r2, [pc, #200] ; (80285b8 ) + 80284f0: 6814 ldr r4, [r2, #0] + 80284f2: 4618 mov r0, r3 + 80284f4: f000 f870 bl 80285d8 + 80284f8: 4603 mov r3, r0 + 80284fa: 6023 str r3, [r4, #0] + *RobotAngle = *RobotAngle * -1;// 2号 + 80284fc: 4b2e ldr r3, [pc, #184] ; (80285b8 ) + 80284fe: 681b ldr r3, [r3, #0] + 8028500: 681a ldr r2, [r3, #0] + 8028502: 4b2d ldr r3, [pc, #180] ; (80285b8 ) + 8028504: 681b ldr r3, [r3, #0] + 8028506: 4252 negs r2, r2 + 8028508: 601a str r2, [r3, #0] //Is_TL720_Updating_Flag=true; HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"TL720D",1); - 80284d0: 4b2b ldr r3, [pc, #172] ; (8028580 ) - 80284d2: 681b ldr r3, [r3, #0] - 80284d4: 695b ldr r3, [r3, #20] - 80284d6: 4a2a ldr r2, [pc, #168] ; (8028580 ) - 80284d8: 6810 ldr r0, [r2, #0] - 80284da: 2201 movs r2, #1 - 80284dc: 4929 ldr r1, [pc, #164] ; (8028584 ) - 80284de: 4798 blx r3 + 802850a: 4b2c ldr r3, [pc, #176] ; (80285bc ) + 802850c: 681b ldr r3, [r3, #0] + 802850e: 695b ldr r3, [r3, #20] + 8028510: 4a2a ldr r2, [pc, #168] ; (80285bc ) + 8028512: 6810 ldr r0, [r2, #0] + 8028514: 2201 movs r2, #1 + 8028516: 492a ldr r1, [pc, #168] ; (80285c0 ) + 8028518: 4798 blx r3 LOG("TL720D decoding succeeded"); - 80284e0: 4b29 ldr r3, [pc, #164] ; (8028588 ) - 80284e2: 781b ldrb r3, [r3, #0] - 80284e4: 2b03 cmp r3, #3 - 80284e6: d93f bls.n 8028568 - 80284e8: 2330 movs r3, #48 ; 0x30 - 80284ea: 061a lsls r2, r3, #24 - 80284ec: 2330 movs r3, #48 ; 0x30 - 80284ee: 041b lsls r3, r3, #16 - 80284f0: 431a orrs r2, r3 - 80284f2: 2330 movs r3, #48 ; 0x30 - 80284f4: 021b lsls r3, r3, #8 - 80284f6: 4313 orrs r3, r2 - 80284f8: 2230 movs r2, #48 ; 0x30 - 80284fa: ea43 0102 orr.w r1, r3, r2 - 80284fe: 2344 movs r3, #68 ; 0x44 - 8028500: 061a lsls r2, r3, #24 - 8028502: 2346 movs r3, #70 ; 0x46 - 8028504: 041b lsls r3, r3, #16 - 8028506: 431a orrs r2, r3 - 8028508: 234c movs r3, #76 ; 0x4c - 802850a: 021b lsls r3, r3, #8 - 802850c: 4313 orrs r3, r2 - 802850e: 2254 movs r2, #84 ; 0x54 - 8028510: 431a orrs r2, r3 - 8028512: 4b1e ldr r3, [pc, #120] ; (802858c ) - 8028514: 2004 movs r0, #4 - 8028516: f7ff fa17 bl 8027948 + 802851a: 4b2a ldr r3, [pc, #168] ; (80285c4 ) + 802851c: 781b ldrb r3, [r3, #0] + 802851e: 2b03 cmp r3, #3 + 8028520: d93f bls.n 80285a2 + 8028522: 2330 movs r3, #48 ; 0x30 + 8028524: 061a lsls r2, r3, #24 + 8028526: 2330 movs r3, #48 ; 0x30 + 8028528: 041b lsls r3, r3, #16 + 802852a: 431a orrs r2, r3 + 802852c: 2330 movs r3, #48 ; 0x30 + 802852e: 021b lsls r3, r3, #8 + 8028530: 4313 orrs r3, r2 + 8028532: 2230 movs r2, #48 ; 0x30 + 8028534: ea43 0102 orr.w r1, r3, r2 + 8028538: 2344 movs r3, #68 ; 0x44 + 802853a: 061a lsls r2, r3, #24 + 802853c: 2346 movs r3, #70 ; 0x46 + 802853e: 041b lsls r3, r3, #16 + 8028540: 431a orrs r2, r3 + 8028542: 234c movs r3, #76 ; 0x4c + 8028544: 021b lsls r3, r3, #8 + 8028546: 4313 orrs r3, r2 + 8028548: 2254 movs r2, #84 ; 0x54 + 802854a: 431a orrs r2, r3 + 802854c: 4b1e ldr r3, [pc, #120] ; (80285c8 ) + 802854e: 2004 movs r0, #4 + 8028550: f7ff f9fa bl 8027948 { - 802851a: e025 b.n 8028568 + 8028554: e025 b.n 80285a2 } else { //log_error("TL720D decoding failed"); LOGFF(DL_ERROR,"TL720D decoding failed"); - 802851c: 4b1a ldr r3, [pc, #104] ; (8028588 ) - 802851e: 781b ldrb r3, [r3, #0] - 8028520: 2b01 cmp r3, #1 - 8028522: d922 bls.n 802856a - 8028524: 2330 movs r3, #48 ; 0x30 - 8028526: 061a lsls r2, r3, #24 - 8028528: 2330 movs r3, #48 ; 0x30 - 802852a: 041b lsls r3, r3, #16 - 802852c: 431a orrs r2, r3 - 802852e: 2330 movs r3, #48 ; 0x30 - 8028530: 021b lsls r3, r3, #8 - 8028532: 4313 orrs r3, r2 - 8028534: 2230 movs r2, #48 ; 0x30 - 8028536: ea43 0102 orr.w r1, r3, r2 - 802853a: 2344 movs r3, #68 ; 0x44 - 802853c: 061a lsls r2, r3, #24 - 802853e: 2346 movs r3, #70 ; 0x46 - 8028540: 041b lsls r3, r3, #16 - 8028542: 431a orrs r2, r3 - 8028544: 234c movs r3, #76 ; 0x4c - 8028546: 021b lsls r3, r3, #8 - 8028548: 4313 orrs r3, r2 - 802854a: 2254 movs r2, #84 ; 0x54 - 802854c: 431a orrs r2, r3 - 802854e: 4b10 ldr r3, [pc, #64] ; (8028590 ) - 8028550: 9302 str r3, [sp, #8] - 8028552: 23cc movs r3, #204 ; 0xcc - 8028554: 9301 str r3, [sp, #4] - 8028556: 4b0f ldr r3, [pc, #60] ; (8028594 ) - 8028558: 9300 str r3, [sp, #0] - 802855a: 4b0f ldr r3, [pc, #60] ; (8028598 ) - 802855c: 2002 movs r0, #2 - 802855e: f7ff f9f3 bl 8027948 - 8028562: e002 b.n 802856a + 8028556: 4b1b ldr r3, [pc, #108] ; (80285c4 ) + 8028558: 781b ldrb r3, [r3, #0] + 802855a: 2b01 cmp r3, #1 + 802855c: d922 bls.n 80285a4 + 802855e: 2330 movs r3, #48 ; 0x30 + 8028560: 061a lsls r2, r3, #24 + 8028562: 2330 movs r3, #48 ; 0x30 + 8028564: 041b lsls r3, r3, #16 + 8028566: 431a orrs r2, r3 + 8028568: 2330 movs r3, #48 ; 0x30 + 802856a: 021b lsls r3, r3, #8 + 802856c: 4313 orrs r3, r2 + 802856e: 2230 movs r2, #48 ; 0x30 + 8028570: ea43 0102 orr.w r1, r3, r2 + 8028574: 2344 movs r3, #68 ; 0x44 + 8028576: 061a lsls r2, r3, #24 + 8028578: 2346 movs r3, #70 ; 0x46 + 802857a: 041b lsls r3, r3, #16 + 802857c: 431a orrs r2, r3 + 802857e: 234c movs r3, #76 ; 0x4c + 8028580: 021b lsls r3, r3, #8 + 8028582: 4313 orrs r3, r2 + 8028584: 2254 movs r2, #84 ; 0x54 + 8028586: 431a orrs r2, r3 + 8028588: 4b10 ldr r3, [pc, #64] ; (80285cc ) + 802858a: 9302 str r3, [sp, #8] + 802858c: 23cd movs r3, #205 ; 0xcd + 802858e: 9301 str r3, [sp, #4] + 8028590: 4b0f ldr r3, [pc, #60] ; (80285d0 ) + 8028592: 9300 str r3, [sp, #0] + 8028594: 4b0f ldr r3, [pc, #60] ; (80285d4 ) + 8028596: 2002 movs r0, #2 + 8028598: f7ff f9d6 bl 8027948 + 802859c: e002 b.n 80285a4 return; // 校验失败,直接返回 - 8028564: bf00 nop - 8028566: e000 b.n 802856a + 802859e: bf00 nop + 80285a0: e000 b.n 80285a4 { - 8028568: bf00 nop + 80285a2: bf00 nop } } - 802856a: 3714 adds r7, #20 - 802856c: 46bd mov sp, r7 - 802856e: bd90 pop {r4, r7, pc} - 8028570: 2400ae2c .word 0x2400ae2c - 8028574: 2400adc8 .word 0x2400adc8 - 8028578: 2400ad58 .word 0x2400ad58 - 802857c: 2400ad48 .word 0x2400ad48 - 8028580: 2400055c .word 0x2400055c - 8028584: 08049e98 .word 0x08049e98 - 8028588: 24009aac .word 0x24009aac - 802858c: 08049f58 .word 0x08049f58 - 8028590: 0804d328 .word 0x0804d328 - 8028594: 08049f34 .word 0x08049f34 - 8028598: 08049f74 .word 0x08049f74 - -0802859c : + 80285a4: 3714 adds r7, #20 + 80285a6: 46bd mov sp, r7 + 80285a8: bd90 pop {r4, r7, pc} + 80285aa: bf00 nop + 80285ac: 2400ae2c .word 0x2400ae2c + 80285b0: 2400adc8 .word 0x2400adc8 + 80285b4: 2400ad58 .word 0x2400ad58 + 80285b8: 2400ad48 .word 0x2400ad48 + 80285bc: 2400055c .word 0x2400055c + 80285c0: 08049ed8 .word 0x08049ed8 + 80285c4: 24009aac .word 0x24009aac + 80285c8: 08049f98 .word 0x08049f98 + 80285cc: 0804d368 .word 0x0804d368 + 80285d0: 08049f74 .word 0x08049f74 + 80285d4: 08049fb4 .word 0x08049fb4 + +080285d8 : //水平向左为0°,转换为竖直向上为0°; static int changeAngle_LeftZerotoUpZero(int angle) { - 802859c: b480 push {r7} - 802859e: b085 sub sp, #20 - 80285a0: af00 add r7, sp, #0 - 80285a2: 6078 str r0, [r7, #4] + 80285d8: b480 push {r7} + 80285da: b085 sub sp, #20 + 80285dc: af00 add r7, sp, #0 + 80285de: 6078 str r0, [r7, #4] int32_t RobotAngle_2 = angle -90*100; - 80285a4: 687a ldr r2, [r7, #4] - 80285a6: 4b09 ldr r3, [pc, #36] ; (80285cc ) - 80285a8: 4413 add r3, r2 - 80285aa: 60fb str r3, [r7, #12] + 80285e0: 687a ldr r2, [r7, #4] + 80285e2: 4b09 ldr r3, [pc, #36] ; (8028608 ) + 80285e4: 4413 add r3, r2 + 80285e6: 60fb str r3, [r7, #12] if(RobotAngle_2 < -180*100) - 80285ac: 68fb ldr r3, [r7, #12] - 80285ae: 4a08 ldr r2, [pc, #32] ; (80285d0 ) - 80285b0: 4293 cmp r3, r2 - 80285b2: da04 bge.n 80285be + 80285e8: 68fb ldr r3, [r7, #12] + 80285ea: 4a08 ldr r2, [pc, #32] ; (802860c ) + 80285ec: 4293 cmp r3, r2 + 80285ee: da04 bge.n 80285fa { RobotAngle_2 = RobotAngle_2 + 360*100; - 80285b4: 68fa ldr r2, [r7, #12] - 80285b6: f648 43a0 movw r3, #36000 ; 0x8ca0 - 80285ba: 4413 add r3, r2 - 80285bc: 60fb str r3, [r7, #12] + 80285f0: 68fa ldr r2, [r7, #12] + 80285f2: f648 43a0 movw r3, #36000 ; 0x8ca0 + 80285f6: 4413 add r3, r2 + 80285f8: 60fb str r3, [r7, #12] } return RobotAngle_2; - 80285be: 68fb ldr r3, [r7, #12] + 80285fa: 68fb ldr r3, [r7, #12] } - 80285c0: 4618 mov r0, r3 - 80285c2: 3714 adds r7, #20 - 80285c4: 46bd mov sp, r7 - 80285c6: f85d 7b04 ldr.w r7, [sp], #4 - 80285ca: 4770 bx lr - 80285cc: ffffdcd8 .word 0xffffdcd8 - 80285d0: ffffb9b0 .word 0xffffb9b0 + 80285fc: 4618 mov r0, r3 + 80285fe: 3714 adds r7, #20 + 8028600: 46bd mov sp, r7 + 8028602: f85d 7b04 ldr.w r7, [sp], #4 + 8028606: 4770 bx lr + 8028608: ffffdcd8 .word 0xffffdcd8 + 802860c: ffffb9b0 .word 0xffffb9b0 -080285d4 : +08028610 : /* 数值计算 * data: 数据地址 * return: 单位: 0.01 * */ static int32_t getDeci(uint8_t *data)//int16_t不满足0° ~ 360.00°范围 { - 80285d4: b480 push {r7} - 80285d6: b087 sub sp, #28 - 80285d8: af00 add r7, sp, #0 - 80285da: 6078 str r0, [r7, #4] + 8028610: b480 push {r7} + 8028612: b087 sub sp, #28 + 8028614: af00 add r7, sp, #0 + 8028616: 6078 str r0, [r7, #4] char isNegative = 0; - 80285dc: 2300 movs r3, #0 - 80285de: 75fb strb r3, [r7, #23] + 8028618: 2300 movs r3, #0 + 802861a: 75fb strb r3, [r7, #23] if (*data >> 4) - 80285e0: 687b ldr r3, [r7, #4] - 80285e2: 781b ldrb r3, [r3, #0] - 80285e4: 091b lsrs r3, r3, #4 - 80285e6: b2db uxtb r3, r3 - 80285e8: 2b00 cmp r3, #0 - 80285ea: d002 beq.n 80285f2 + 802861c: 687b ldr r3, [r7, #4] + 802861e: 781b ldrb r3, [r3, #0] + 8028620: 091b lsrs r3, r3, #4 + 8028622: b2db uxtb r3, r3 + 8028624: 2b00 cmp r3, #0 + 8028626: d002 beq.n 802862e { isNegative = 1; - 80285ec: 2301 movs r3, #1 - 80285ee: 75fb strb r3, [r7, #23] - 80285f0: e001 b.n 80285f6 + 8028628: 2301 movs r3, #1 + 802862a: 75fb strb r3, [r7, #23] + 802862c: e001 b.n 8028632 } else { isNegative = 0; - 80285f2: 2300 movs r3, #0 - 80285f4: 75fb strb r3, [r7, #23] + 802862e: 2300 movs r3, #0 + 8028630: 75fb strb r3, [r7, #23] } int32_t data_value = 0; - 80285f6: 2300 movs r3, #0 - 80285f8: 613b str r3, [r7, #16] + 8028632: 2300 movs r3, #0 + 8028634: 613b str r3, [r7, #16] data_value = ((*data) & 0x0f) * 10000; - 80285fa: 687b ldr r3, [r7, #4] - 80285fc: 781b ldrb r3, [r3, #0] - 80285fe: f003 030f and.w r3, r3, #15 - 8028602: f242 7210 movw r2, #10000 ; 0x2710 - 8028606: fb02 f303 mul.w r3, r2, r3 - 802860a: 613b str r3, [r7, #16] + 8028636: 687b ldr r3, [r7, #4] + 8028638: 781b ldrb r3, [r3, #0] + 802863a: f003 030f and.w r3, r3, #15 + 802863e: f242 7210 movw r2, #10000 ; 0x2710 + 8028642: fb02 f303 mul.w r3, r2, r3 + 8028646: 613b str r3, [r7, #16] data++; - 802860c: 687b ldr r3, [r7, #4] - 802860e: 3301 adds r3, #1 - 8028610: 607b str r3, [r7, #4] + 8028648: 687b ldr r3, [r7, #4] + 802864a: 3301 adds r3, #1 + 802864c: 607b str r3, [r7, #4] data_value += (*data >> 4) * 1000; - 8028612: 687b ldr r3, [r7, #4] - 8028614: 781b ldrb r3, [r3, #0] - 8028616: 091b lsrs r3, r3, #4 - 8028618: b2db uxtb r3, r3 - 802861a: 461a mov r2, r3 - 802861c: f44f 737a mov.w r3, #1000 ; 0x3e8 - 8028620: fb02 f303 mul.w r3, r2, r3 - 8028624: 693a ldr r2, [r7, #16] - 8028626: 4413 add r3, r2 - 8028628: 613b str r3, [r7, #16] + 802864e: 687b ldr r3, [r7, #4] + 8028650: 781b ldrb r3, [r3, #0] + 8028652: 091b lsrs r3, r3, #4 + 8028654: b2db uxtb r3, r3 + 8028656: 461a mov r2, r3 + 8028658: f44f 737a mov.w r3, #1000 ; 0x3e8 + 802865c: fb02 f303 mul.w r3, r2, r3 + 8028660: 693a ldr r2, [r7, #16] + 8028662: 4413 add r3, r2 + 8028664: 613b str r3, [r7, #16] data_value += ((*data) & 0x0f) * 100; - 802862a: 687b ldr r3, [r7, #4] - 802862c: 781b ldrb r3, [r3, #0] - 802862e: f003 030f and.w r3, r3, #15 - 8028632: 2264 movs r2, #100 ; 0x64 - 8028634: fb02 f303 mul.w r3, r2, r3 - 8028638: 693a ldr r2, [r7, #16] - 802863a: 4413 add r3, r2 - 802863c: 613b str r3, [r7, #16] + 8028666: 687b ldr r3, [r7, #4] + 8028668: 781b ldrb r3, [r3, #0] + 802866a: f003 030f and.w r3, r3, #15 + 802866e: 2264 movs r2, #100 ; 0x64 + 8028670: fb02 f303 mul.w r3, r2, r3 + 8028674: 693a ldr r2, [r7, #16] + 8028676: 4413 add r3, r2 + 8028678: 613b str r3, [r7, #16] data++; - 802863e: 687b ldr r3, [r7, #4] - 8028640: 3301 adds r3, #1 - 8028642: 607b str r3, [r7, #4] + 802867a: 687b ldr r3, [r7, #4] + 802867c: 3301 adds r3, #1 + 802867e: 607b str r3, [r7, #4] int32_t xiaoshu = 0; - 8028644: 2300 movs r3, #0 - 8028646: 60fb str r3, [r7, #12] + 8028680: 2300 movs r3, #0 + 8028682: 60fb str r3, [r7, #12] xiaoshu = (*data >> 4) * 10; - 8028648: 687b ldr r3, [r7, #4] - 802864a: 781b ldrb r3, [r3, #0] - 802864c: 091b lsrs r3, r3, #4 - 802864e: b2db uxtb r3, r3 - 8028650: 461a mov r2, r3 - 8028652: 4613 mov r3, r2 - 8028654: 009b lsls r3, r3, #2 - 8028656: 4413 add r3, r2 - 8028658: 005b lsls r3, r3, #1 - 802865a: 60fb str r3, [r7, #12] + 8028684: 687b ldr r3, [r7, #4] + 8028686: 781b ldrb r3, [r3, #0] + 8028688: 091b lsrs r3, r3, #4 + 802868a: b2db uxtb r3, r3 + 802868c: 461a mov r2, r3 + 802868e: 4613 mov r3, r2 + 8028690: 009b lsls r3, r3, #2 + 8028692: 4413 add r3, r2 + 8028694: 005b lsls r3, r3, #1 + 8028696: 60fb str r3, [r7, #12] xiaoshu += (*data) & 0x0f; - 802865c: 687b ldr r3, [r7, #4] - 802865e: 781b ldrb r3, [r3, #0] - 8028660: f003 030f and.w r3, r3, #15 - 8028664: 68fa ldr r2, [r7, #12] - 8028666: 4413 add r3, r2 - 8028668: 60fb str r3, [r7, #12] + 8028698: 687b ldr r3, [r7, #4] + 802869a: 781b ldrb r3, [r3, #0] + 802869c: f003 030f and.w r3, r3, #15 + 80286a0: 68fa ldr r2, [r7, #12] + 80286a2: 4413 add r3, r2 + 80286a4: 60fb str r3, [r7, #12] if (isNegative) - 802866a: 7dfb ldrb r3, [r7, #23] - 802866c: 2b00 cmp r3, #0 - 802866e: d004 beq.n 802867a + 80286a6: 7dfb ldrb r3, [r7, #23] + 80286a8: 2b00 cmp r3, #0 + 80286aa: d004 beq.n 80286b6 { return -(data_value + xiaoshu); - 8028670: 693a ldr r2, [r7, #16] - 8028672: 68fb ldr r3, [r7, #12] - 8028674: 4413 add r3, r2 - 8028676: 425b negs r3, r3 - 8028678: e002 b.n 8028680 + 80286ac: 693a ldr r2, [r7, #16] + 80286ae: 68fb ldr r3, [r7, #12] + 80286b0: 4413 add r3, r2 + 80286b2: 425b negs r3, r3 + 80286b4: e002 b.n 80286bc } else { return (data_value + xiaoshu); - 802867a: 693a ldr r2, [r7, #16] - 802867c: 68fb ldr r3, [r7, #12] - 802867e: 4413 add r3, r2 + 80286b6: 693a ldr r2, [r7, #16] + 80286b8: 68fb ldr r3, [r7, #12] + 80286ba: 4413 add r3, r2 } } - 8028680: 4618 mov r0, r3 - 8028682: 371c adds r7, #28 - 8028684: 46bd mov sp, r7 - 8028686: f85d 7b04 ldr.w r7, [sp], #4 - 802868a: 4770 bx lr + 80286bc: 4618 mov r0, r3 + 80286be: 371c adds r7, #28 + 80286c0: 46bd mov sp, r7 + 80286c2: f85d 7b04 ldr.w r7, [sp], #4 + 80286c6: 4770 bx lr -0802868c : +080286c8 : wh_LTE_7S0_Handler->UART_Decode = decode_received_data_from_computer; //indicate that there is no need to listen } void Send_WH_LTE_7S0_Data(uint8_t *data, int length) { - 802868c: b580 push {r7, lr} - 802868e: b09c sub sp, #112 ; 0x70 - 8028690: af00 add r7, sp, #0 - 8028692: 6078 str r0, [r7, #4] - 8028694: 6039 str r1, [r7, #0] + 80286c8: b580 push {r7, lr} + 80286ca: b09c sub sp, #112 ; 0x70 + 80286cc: af00 add r7, sp, #0 + 80286ce: 6078 str r0, [r7, #4] + 80286d0: 6039 str r1, [r7, #0] char datass[100]; memcpy(datass, data, length); - 8028696: 683a ldr r2, [r7, #0] - 8028698: f107 030c add.w r3, r7, #12 - 802869c: 6879 ldr r1, [r7, #4] - 802869e: 4618 mov r0, r3 - 80286a0: f01f fb70 bl 8047d84 + 80286d2: 683a ldr r2, [r7, #0] + 80286d4: f107 030c add.w r3, r7, #12 + 80286d8: 6879 ldr r1, [r7, #4] + 80286da: 4618 mov r0, r3 + 80286dc: f01f fb72 bl 8047dc4 wh_LTE_7S0_Handler->UART_Decode = decode_received_data_from_computer; - 80286a4: 4b11 ldr r3, [pc, #68] ; (80286ec ) - 80286a6: 681b ldr r3, [r3, #0] - 80286a8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80286ac: 461a mov r2, r3 - 80286ae: 4b10 ldr r3, [pc, #64] ; (80286f0 ) - 80286b0: 6313 str r3, [r2, #48] ; 0x30 + 80286e0: 4b11 ldr r3, [pc, #68] ; (8028728 ) + 80286e2: 681b ldr r3, [r3, #0] + 80286e4: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80286e8: 461a mov r2, r3 + 80286ea: 4b10 ldr r3, [pc, #64] ; (802872c ) + 80286ec: 6313 str r3, [r2, #48] ; 0x30 memcpy(wh_LTE_7S0_Handler->Tx_Buf, data, length); - 80286b2: 4b0e ldr r3, [pc, #56] ; (80286ec ) - 80286b4: 681b ldr r3, [r3, #0] - 80286b6: f603 0321 addw r3, r3, #2081 ; 0x821 - 80286ba: 683a ldr r2, [r7, #0] - 80286bc: 6879 ldr r1, [r7, #4] - 80286be: 4618 mov r0, r3 - 80286c0: f01f fb60 bl 8047d84 + 80286ee: 4b0e ldr r3, [pc, #56] ; (8028728 ) + 80286f0: 681b ldr r3, [r3, #0] + 80286f2: f603 0321 addw r3, r3, #2081 ; 0x821 + 80286f6: 683a ldr r2, [r7, #0] + 80286f8: 6879 ldr r1, [r7, #4] + 80286fa: 4618 mov r0, r3 + 80286fc: f01f fb62 bl 8047dc4 wh_LTE_7S0_Handler->TxCount = length; - 80286c4: 4b09 ldr r3, [pc, #36] ; (80286ec ) - 80286c6: 681b ldr r3, [r3, #0] - 80286c8: 683a ldr r2, [r7, #0] - 80286ca: b292 uxth r2, r2 - 80286cc: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80286d0: 845a strh r2, [r3, #34] ; 0x22 + 8028700: 4b09 ldr r3, [pc, #36] ; (8028728 ) + 8028702: 681b ldr r3, [r3, #0] + 8028704: 683a ldr r2, [r7, #0] + 8028706: b292 uxth r2, r2 + 8028708: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 802870c: 845a strh r2, [r3, #34] ; 0x22 wh_LTE_7S0_Handler->UART_Tx(wh_LTE_7S0_Handler); - 80286d2: 4b06 ldr r3, [pc, #24] ; (80286ec ) - 80286d4: 681b ldr r3, [r3, #0] - 80286d6: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80286da: 6a9b ldr r3, [r3, #40] ; 0x28 - 80286dc: 4a03 ldr r2, [pc, #12] ; (80286ec ) - 80286de: 6812 ldr r2, [r2, #0] - 80286e0: 4610 mov r0, r2 - 80286e2: 4798 blx r3 - -} - 80286e4: bf00 nop - 80286e6: 3770 adds r7, #112 ; 0x70 - 80286e8: 46bd mov sp, r7 - 80286ea: bd80 pop {r7, pc} - 80286ec: 2400ae38 .word 0x2400ae38 - 80286f0: 080286f5 .word 0x080286f5 - -080286f4 : + 802870e: 4b06 ldr r3, [pc, #24] ; (8028728 ) + 8028710: 681b ldr r3, [r3, #0] + 8028712: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8028716: 6a9b ldr r3, [r3, #40] ; 0x28 + 8028718: 4a03 ldr r2, [pc, #12] ; (8028728 ) + 802871a: 6812 ldr r2, [r2, #0] + 802871c: 4610 mov r0, r2 + 802871e: 4798 blx r3 + +} + 8028720: bf00 nop + 8028722: 3770 adds r7, #112 ; 0x70 + 8028724: 46bd mov sp, r7 + 8028726: bd80 pop {r7, pc} + 8028728: 2400ae38 .word 0x2400ae38 + 802872c: 08028731 .word 0x08028731 + +08028730 : wh_LTE_7S0_Handler->TxCount = GV_o_stream.bytes_written+2; wh_LTE_7S0_Handler->UART_Tx(wh_LTE_7S0_Handler); } void decode_received_data_from_computer(uint8_t *buffer, uint16_t length) { - 80286f4: b580 push {r7, lr} - 80286f6: f5ad 6d81 sub.w sp, sp, #1032 ; 0x408 - 80286fa: af00 add r7, sp, #0 - 80286fc: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028700: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 8028704: 6018 str r0, [r3, #0] - 8028706: 460a mov r2, r1 - 8028708: f507 6381 add.w r3, r7, #1032 ; 0x408 - 802870c: f2a3 4306 subw r3, r3, #1030 ; 0x406 - 8028710: 801a strh r2, [r3, #0] + 8028730: b580 push {r7, lr} + 8028732: f5ad 6d81 sub.w sp, sp, #1032 ; 0x408 + 8028736: af00 add r7, sp, #0 + 8028738: f507 6381 add.w r3, r7, #1032 ; 0x408 + 802873c: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 8028740: 6018 str r0, [r3, #0] + 8028742: 460a mov r2, r1 + 8028744: f507 6381 add.w r3, r7, #1032 ; 0x408 + 8028748: f2a3 4306 subw r3, r3, #1030 ; 0x406 + 802874c: 801a strh r2, [r3, #0] char buf[1024]; memcpy(buf, buffer, length); - 8028712: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028716: f2a3 4306 subw r3, r3, #1030 ; 0x406 - 802871a: 881a ldrh r2, [r3, #0] - 802871c: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028720: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 8028724: f107 0008 add.w r0, r7, #8 - 8028728: 6819 ldr r1, [r3, #0] - 802872a: f01f fb2b bl 8047d84 + 802874e: f507 6381 add.w r3, r7, #1032 ; 0x408 + 8028752: f2a3 4306 subw r3, r3, #1030 ; 0x406 + 8028756: 881a ldrh r2, [r3, #0] + 8028758: f507 6381 add.w r3, r7, #1032 ; 0x408 + 802875c: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 8028760: f107 0008 add.w r0, r7, #8 + 8028764: 6819 ldr r1, [r3, #0] + 8028766: f01f fb2d bl 8047dc4 if(buffer[0]=='2'&&buffer[1]==',') - 802872e: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028732: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 8028736: 681b ldr r3, [r3, #0] - 8028738: 781b ldrb r3, [r3, #0] - 802873a: 2b32 cmp r3, #50 ; 0x32 - 802873c: d11a bne.n 8028774 - 802873e: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028742: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 8028746: 681b ldr r3, [r3, #0] - 8028748: 3301 adds r3, #1 - 802874a: 781b ldrb r3, [r3, #0] - 802874c: 2b2c cmp r3, #44 ; 0x2c - 802874e: d111 bne.n 8028774 + 802876a: f507 6381 add.w r3, r7, #1032 ; 0x408 + 802876e: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 8028772: 681b ldr r3, [r3, #0] + 8028774: 781b ldrb r3, [r3, #0] + 8028776: 2b32 cmp r3, #50 ; 0x32 + 8028778: d11a bne.n 80287b0 + 802877a: f507 6381 add.w r3, r7, #1032 ; 0x408 + 802877e: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 8028782: 681b ldr r3, [r3, #0] + 8028784: 3301 adds r3, #1 + 8028786: 781b ldrb r3, [r3, #0] + 8028788: 2b2c cmp r3, #44 ; 0x2c + 802878a: d111 bne.n 80287b0 { //Decode protobuf //decode_command_from_computer(buffer+2,length-2); decode_command_and_feedback(buffer+2,length-2,1,wh_LTE_7S0_Handler); - 8028750: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028754: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 8028758: 681b ldr r3, [r3, #0] - 802875a: 1c98 adds r0, r3, #2 - 802875c: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028760: f2a3 4306 subw r3, r3, #1030 ; 0x406 - 8028764: 881b ldrh r3, [r3, #0] - 8028766: 3b02 subs r3, #2 - 8028768: b299 uxth r1, r3 - 802876a: 4b0d ldr r3, [pc, #52] ; (80287a0 ) - 802876c: 681b ldr r3, [r3, #0] - 802876e: 2201 movs r2, #1 - 8028770: f7fa fa60 bl 8022c34 + 802878c: f507 6381 add.w r3, r7, #1032 ; 0x408 + 8028790: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 8028794: 681b ldr r3, [r3, #0] + 8028796: 1c98 adds r0, r3, #2 + 8028798: f507 6381 add.w r3, r7, #1032 ; 0x408 + 802879c: f2a3 4306 subw r3, r3, #1030 ; 0x406 + 80287a0: 881b ldrh r3, [r3, #0] + 80287a2: 3b02 subs r3, #2 + 80287a4: b299 uxth r1, r3 + 80287a6: 4b0d ldr r3, [pc, #52] ; (80287dc ) + 80287a8: 681b ldr r3, [r3, #0] + 80287aa: 2201 movs r2, #1 + 80287ac: f7fa fa42 bl 8022c34 } if(NeedToFeedBackToComputer==1) - 8028774: 4b0b ldr r3, [pc, #44] ; (80287a4 ) - 8028776: 781b ldrb r3, [r3, #0] - 8028778: 2b01 cmp r3, #1 - 802877a: d10c bne.n 8028796 + 80287b0: 4b0b ldr r3, [pc, #44] ; (80287e0 ) + 80287b2: 781b ldrb r3, [r3, #0] + 80287b4: 2b01 cmp r3, #1 + 80287b6: d10c bne.n 80287d2 { send_received_data_to_upper_computer(buffer, length); - 802877c: f507 6381 add.w r3, r7, #1032 ; 0x408 - 8028780: f2a3 4306 subw r3, r3, #1030 ; 0x406 - 8028784: 881a ldrh r2, [r3, #0] - 8028786: f507 6381 add.w r3, r7, #1032 ; 0x408 - 802878a: f2a3 4304 subw r3, r3, #1028 ; 0x404 - 802878e: 4611 mov r1, r2 - 8028790: 6818 ldr r0, [r3, #0] - 8028792: f7fb f955 bl 8023a40 + 80287b8: f507 6381 add.w r3, r7, #1032 ; 0x408 + 80287bc: f2a3 4306 subw r3, r3, #1030 ; 0x406 + 80287c0: 881a ldrh r2, [r3, #0] + 80287c2: f507 6381 add.w r3, r7, #1032 ; 0x408 + 80287c6: f2a3 4304 subw r3, r3, #1028 ; 0x404 + 80287ca: 4611 mov r1, r2 + 80287cc: 6818 ldr r0, [r3, #0] + 80287ce: f7fb f937 bl 8023a40 } } - 8028796: bf00 nop - 8028798: f507 6781 add.w r7, r7, #1032 ; 0x408 - 802879c: 46bd mov sp, r7 - 802879e: bd80 pop {r7, pc} - 80287a0: 2400ae38 .word 0x2400ae38 - 80287a4: 2400ae34 .word 0x2400ae34 + 80287d2: bf00 nop + 80287d4: f507 6781 add.w r7, r7, #1032 ; 0x408 + 80287d8: 46bd mov sp, r7 + 80287da: bd80 pop {r7, pc} + 80287dc: 2400ae38 .word 0x2400ae38 + 80287e0: 2400ae34 .word 0x2400ae34 -080287a8 : +080287e4 : static void reading_Task_wire_sensor(void); static void writing_Task_wire_motor(void); void wire_sensor_intialize(struct UARTHandler* Handler) { - 80287a8: b590 push {r4, r7, lr} - 80287aa: b083 sub sp, #12 - 80287ac: af00 add r7, sp, #0 - 80287ae: 6078 str r0, [r7, #4] + 80287e4: b590 push {r4, r7, lr} + 80287e6: b083 sub sp, #12 + 80287e8: af00 add r7, sp, #0 + 80287ea: 6078 str r0, [r7, #4] wire_sensor_UART_Handler = Handler; - 80287b0: 4a31 ldr r2, [pc, #196] ; (8028878 ) - 80287b2: 687b ldr r3, [r7, #4] - 80287b4: 6013 str r3, [r2, #0] + 80287ec: 4a31 ldr r2, [pc, #196] ; (80288b4 ) + 80287ee: 687b ldr r3, [r7, #4] + 80287f0: 6013 str r3, [r2, #0] wire_sensor_UART_Handler->Wait_time = 10; //等待10ms 最低不要低于4; - 80287b6: 4b30 ldr r3, [pc, #192] ; (8028878 ) - 80287b8: 681b ldr r3, [r3, #0] - 80287ba: 220a movs r2, #10 - 80287bc: 609a str r2, [r3, #8] + 80287f2: 4b30 ldr r3, [pc, #192] ; (80288b4 ) + 80287f4: 681b ldr r3, [r3, #0] + 80287f6: 220a movs r2, #10 + 80287f8: 609a str r2, [r3, #8] // wire_sensor_UART_Handler->UART_Decode = decode_wire_sensor;//收到数据时调用decode函数进行处理 wire_sensor_DispacherController = Handler->dispacherController; - 80287be: 687b ldr r3, [r7, #4] - 80287c0: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80287c4: 6bdb ldr r3, [r3, #60] ; 0x3c - 80287c6: 4a2d ldr r2, [pc, #180] ; (802887c ) - 80287c8: 6013 str r3, [r2, #0] + 80287fa: 687b ldr r3, [r7, #4] + 80287fc: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8028800: 6bdb ldr r3, [r3, #60] ; 0x3c + 8028802: 4a2d ldr r2, [pc, #180] ; (80288b8 ) + 8028804: 6013 str r3, [r2, #0] wire_sensor_DispacherController->Dispacher_Enable = 1; //不周期性发送 - 80287ca: 4b2c ldr r3, [pc, #176] ; (802887c ) - 80287cc: 681b ldr r3, [r3, #0] - 80287ce: 2201 movs r2, #1 - 80287d0: 81da strh r2, [r3, #14] + 8028806: 4b2c ldr r3, [pc, #176] ; (80288b8 ) + 8028808: 681b ldr r3, [r3, #0] + 802880a: 2201 movs r2, #1 + 802880c: 81da strh r2, [r3, #14] wire_sensor_DispacherController->DispacherCallTime = 0;// - 80287d2: 4b2a ldr r3, [pc, #168] ; (802887c ) - 80287d4: 681b ldr r3, [r3, #0] - 80287d6: 2200 movs r2, #0 - 80287d8: 815a strh r2, [r3, #10] + 802880e: 4b2a ldr r3, [pc, #168] ; (80288b8 ) + 8028810: 681b ldr r3, [r3, #0] + 8028812: 2200 movs r2, #0 + 8028814: 815a strh r2, [r3, #10] wire_sensor_DispacherController->Add_Dispatcher_List(wire_sensor_DispacherController, reading_Task_wire_sensor); - 80287da: 4b28 ldr r3, [pc, #160] ; (802887c ) - 80287dc: 681b ldr r3, [r3, #0] - 80287de: 691b ldr r3, [r3, #16] - 80287e0: 4a26 ldr r2, [pc, #152] ; (802887c ) - 80287e2: 6812 ldr r2, [r2, #0] - 80287e4: 4926 ldr r1, [pc, #152] ; (8028880 ) - 80287e6: 4610 mov r0, r2 - 80287e8: 4798 blx r3 + 8028816: 4b28 ldr r3, [pc, #160] ; (80288b8 ) + 8028818: 681b ldr r3, [r3, #0] + 802881a: 691b ldr r3, [r3, #16] + 802881c: 4a26 ldr r2, [pc, #152] ; (80288b8 ) + 802881e: 6812 ldr r2, [r2, #0] + 8028820: 4926 ldr r1, [pc, #152] ; (80288bc ) + 8028822: 4610 mov r0, r2 + 8028824: 4798 blx r3 // wire_sensor_DispacherController->Add_Dispatcher_List(wire_sensor_DispacherController, writing_Task_wire_motor);//改为串口 HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"wire_sensor", 0, ComError_wire_sensor);//注册硬件错误处理 - 80287ea: 4b26 ldr r3, [pc, #152] ; (8028884 ) - 80287ec: 681b ldr r3, [r3, #0] - 80287ee: 68dc ldr r4, [r3, #12] - 80287f0: 4b24 ldr r3, [pc, #144] ; (8028884 ) - 80287f2: 6818 ldr r0, [r3, #0] - 80287f4: 2308 movs r3, #8 - 80287f6: 2200 movs r2, #0 - 80287f8: 4923 ldr r1, [pc, #140] ; (8028888 ) - 80287fa: 47a0 blx r4 + 8028826: 4b26 ldr r3, [pc, #152] ; (80288c0 ) + 8028828: 681b ldr r3, [r3, #0] + 802882a: 68dc ldr r4, [r3, #12] + 802882c: 4b24 ldr r3, [pc, #144] ; (80288c0 ) + 802882e: 6818 ldr r0, [r3, #0] + 8028830: 2308 movs r3, #8 + 8028832: 2200 movs r2, #0 + 8028834: 4923 ldr r1, [pc, #140] ; (80288c4 ) + 8028836: 47a0 blx r4 // HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"wire_motor", 0, ComError_wire_motor); LOG("wire_sensor initialized success");//记录初始化日志 - 80287fc: 4b23 ldr r3, [pc, #140] ; (802888c ) - 80287fe: 781b ldrb r3, [r3, #0] - 8028800: 2b03 cmp r3, #3 - 8028802: d918 bls.n 8028836 - 8028804: 2330 movs r3, #48 ; 0x30 - 8028806: 061a lsls r2, r3, #24 - 8028808: 2330 movs r3, #48 ; 0x30 - 802880a: 041b lsls r3, r3, #16 - 802880c: 431a orrs r2, r3 - 802880e: 2330 movs r3, #48 ; 0x30 - 8028810: 021b lsls r3, r3, #8 - 8028812: 4313 orrs r3, r2 - 8028814: 2230 movs r2, #48 ; 0x30 - 8028816: ea43 0102 orr.w r1, r3, r2 - 802881a: 2344 movs r3, #68 ; 0x44 - 802881c: 061a lsls r2, r3, #24 - 802881e: 2346 movs r3, #70 ; 0x46 - 8028820: 041b lsls r3, r3, #16 - 8028822: 431a orrs r2, r3 - 8028824: 234c movs r3, #76 ; 0x4c - 8028826: 021b lsls r3, r3, #8 - 8028828: 4313 orrs r3, r2 - 802882a: 2254 movs r2, #84 ; 0x54 - 802882c: 431a orrs r2, r3 - 802882e: 4b18 ldr r3, [pc, #96] ; (8028890 ) - 8028830: 2004 movs r0, #4 - 8028832: f7ff f889 bl 8027948 + 8028838: 4b23 ldr r3, [pc, #140] ; (80288c8 ) + 802883a: 781b ldrb r3, [r3, #0] + 802883c: 2b03 cmp r3, #3 + 802883e: d918 bls.n 8028872 + 8028840: 2330 movs r3, #48 ; 0x30 + 8028842: 061a lsls r2, r3, #24 + 8028844: 2330 movs r3, #48 ; 0x30 + 8028846: 041b lsls r3, r3, #16 + 8028848: 431a orrs r2, r3 + 802884a: 2330 movs r3, #48 ; 0x30 + 802884c: 021b lsls r3, r3, #8 + 802884e: 4313 orrs r3, r2 + 8028850: 2230 movs r2, #48 ; 0x30 + 8028852: ea43 0102 orr.w r1, r3, r2 + 8028856: 2344 movs r3, #68 ; 0x44 + 8028858: 061a lsls r2, r3, #24 + 802885a: 2346 movs r3, #70 ; 0x46 + 802885c: 041b lsls r3, r3, #16 + 802885e: 431a orrs r2, r3 + 8028860: 234c movs r3, #76 ; 0x4c + 8028862: 021b lsls r3, r3, #8 + 8028864: 4313 orrs r3, r2 + 8028866: 2254 movs r2, #84 ; 0x54 + 8028868: 431a orrs r2, r3 + 802886a: 4b18 ldr r3, [pc, #96] ; (80288cc ) + 802886c: 2004 movs r0, #4 + 802886e: f7ff f86b bl 8027948 LOG("wire_motor initialized success"); - 8028836: 4b15 ldr r3, [pc, #84] ; (802888c ) - 8028838: 781b ldrb r3, [r3, #0] - 802883a: 2b03 cmp r3, #3 - 802883c: d918 bls.n 8028870 - 802883e: 2330 movs r3, #48 ; 0x30 - 8028840: 061a lsls r2, r3, #24 - 8028842: 2330 movs r3, #48 ; 0x30 - 8028844: 041b lsls r3, r3, #16 - 8028846: 431a orrs r2, r3 - 8028848: 2330 movs r3, #48 ; 0x30 - 802884a: 021b lsls r3, r3, #8 - 802884c: 4313 orrs r3, r2 - 802884e: 2230 movs r2, #48 ; 0x30 - 8028850: ea43 0102 orr.w r1, r3, r2 - 8028854: 2344 movs r3, #68 ; 0x44 - 8028856: 061a lsls r2, r3, #24 - 8028858: 2346 movs r3, #70 ; 0x46 - 802885a: 041b lsls r3, r3, #16 - 802885c: 431a orrs r2, r3 - 802885e: 234c movs r3, #76 ; 0x4c - 8028860: 021b lsls r3, r3, #8 - 8028862: 4313 orrs r3, r2 - 8028864: 2254 movs r2, #84 ; 0x54 - 8028866: 431a orrs r2, r3 - 8028868: 4b0a ldr r3, [pc, #40] ; (8028894 ) - 802886a: 2004 movs r0, #4 - 802886c: f7ff f86c bl 8027948 -} - 8028870: bf00 nop - 8028872: 370c adds r7, #12 - 8028874: 46bd mov sp, r7 - 8028876: bd90 pop {r4, r7, pc} - 8028878: 2400ae44 .word 0x2400ae44 - 802887c: 2400ae48 .word 0x2400ae48 - 8028880: 08028899 .word 0x08028899 - 8028884: 2400055c .word 0x2400055c - 8028888: 08049fa8 .word 0x08049fa8 - 802888c: 24009aac .word 0x24009aac - 8028890: 08049fb4 .word 0x08049fb4 - 8028894: 08049fd4 .word 0x08049fd4 - -08028898 : + 8028872: 4b15 ldr r3, [pc, #84] ; (80288c8 ) + 8028874: 781b ldrb r3, [r3, #0] + 8028876: 2b03 cmp r3, #3 + 8028878: d918 bls.n 80288ac + 802887a: 2330 movs r3, #48 ; 0x30 + 802887c: 061a lsls r2, r3, #24 + 802887e: 2330 movs r3, #48 ; 0x30 + 8028880: 041b lsls r3, r3, #16 + 8028882: 431a orrs r2, r3 + 8028884: 2330 movs r3, #48 ; 0x30 + 8028886: 021b lsls r3, r3, #8 + 8028888: 4313 orrs r3, r2 + 802888a: 2230 movs r2, #48 ; 0x30 + 802888c: ea43 0102 orr.w r1, r3, r2 + 8028890: 2344 movs r3, #68 ; 0x44 + 8028892: 061a lsls r2, r3, #24 + 8028894: 2346 movs r3, #70 ; 0x46 + 8028896: 041b lsls r3, r3, #16 + 8028898: 431a orrs r2, r3 + 802889a: 234c movs r3, #76 ; 0x4c + 802889c: 021b lsls r3, r3, #8 + 802889e: 4313 orrs r3, r2 + 80288a0: 2254 movs r2, #84 ; 0x54 + 80288a2: 431a orrs r2, r3 + 80288a4: 4b0a ldr r3, [pc, #40] ; (80288d0 ) + 80288a6: 2004 movs r0, #4 + 80288a8: f7ff f84e bl 8027948 +} + 80288ac: bf00 nop + 80288ae: 370c adds r7, #12 + 80288b0: 46bd mov sp, r7 + 80288b2: bd90 pop {r4, r7, pc} + 80288b4: 2400ae44 .word 0x2400ae44 + 80288b8: 2400ae48 .word 0x2400ae48 + 80288bc: 080288d5 .word 0x080288d5 + 80288c0: 2400055c .word 0x2400055c + 80288c4: 08049fe8 .word 0x08049fe8 + 80288c8: 24009aac .word 0x24009aac + 80288cc: 08049ff4 .word 0x08049ff4 + 80288d0: 0804a014 .word 0x0804a014 + +080288d4 : static void reading_Task_wire_sensor(void) { - 8028898: b590 push {r4, r7, lr} - 802889a: b085 sub sp, #20 - 802889c: af02 add r7, sp, #8 + 80288d4: b590 push {r4, r7, lr} + 80288d6: b085 sub sp, #20 + 80288d8: af02 add r7, sp, #8 //查询 拉线传感器 // 02 03 00 00 00 02 C4 38 uint8_t addr = addr_wire_sensor; - 802889e: 2302 movs r3, #2 - 80288a0: 71fb strb r3, [r7, #7] + 80288da: 2302 movs r3, #2 + 80288dc: 71fb strb r3, [r7, #7] MB_ReadHoldingReg(wire_sensor_UART_Handler->Tx_Buf, - 80288a2: 4b13 ldr r3, [pc, #76] ; (80288f0 ) - 80288a4: 681b ldr r3, [r3, #0] - 80288a6: f603 0021 addw r0, r3, #2081 ; 0x821 + 80288de: 4b13 ldr r3, [pc, #76] ; (802892c ) + 80288e0: 681b ldr r3, [r3, #0] + 80288e2: f603 0021 addw r0, r3, #2081 ; 0x821 &wire_sensor_UART_Handler->TxCount, addr, 0, 2); //read from the data; - 80288aa: 4b11 ldr r3, [pc, #68] ; (80288f0 ) - 80288ac: 681b ldr r3, [r3, #0] + 80288e6: 4b11 ldr r3, [pc, #68] ; (802892c ) + 80288e8: 681b ldr r3, [r3, #0] MB_ReadHoldingReg(wire_sensor_UART_Handler->Tx_Buf, - 80288ae: f241 0122 movw r1, #4130 ; 0x1022 - 80288b2: 4419 add r1, r3 - 80288b4: 79fa ldrb r2, [r7, #7] - 80288b6: 2302 movs r3, #2 - 80288b8: 9300 str r3, [sp, #0] - 80288ba: 2300 movs r3, #0 - 80288bc: f7f8 fcba bl 8021234 + 80288ea: f241 0122 movw r1, #4130 ; 0x1022 + 80288ee: 4419 add r1, r3 + 80288f0: 79fa ldrb r2, [r7, #7] + 80288f2: 2302 movs r3, #2 + 80288f4: 9300 str r3, [sp, #0] + 80288f6: 2300 movs r3, #0 + 80288f8: f7f8 fc9c bl 8021234 wire_sensor_UART_Handler->AddSendList( - 80288c0: 4b0b ldr r3, [pc, #44] ; (80288f0 ) - 80288c2: 681b ldr r3, [r3, #0] - 80288c4: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80288c8: 6b9c ldr r4, [r3, #56] ; 0x38 - 80288ca: 4b09 ldr r3, [pc, #36] ; (80288f0 ) - 80288cc: 6818 ldr r0, [r3, #0] + 80288fc: 4b0b ldr r3, [pc, #44] ; (802892c ) + 80288fe: 681b ldr r3, [r3, #0] + 8028900: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8028904: 6b9c ldr r4, [r3, #56] ; 0x38 + 8028906: 4b09 ldr r3, [pc, #36] ; (802892c ) + 8028908: 6818 ldr r0, [r3, #0] wire_sensor_UART_Handler, wire_sensor_UART_Handler->Tx_Buf, - 80288ce: 4b08 ldr r3, [pc, #32] ; (80288f0 ) - 80288d0: 681b ldr r3, [r3, #0] - 80288d2: f603 0121 addw r1, r3, #2081 ; 0x821 + 802890a: 4b08 ldr r3, [pc, #32] ; (802892c ) + 802890c: 681b ldr r3, [r3, #0] + 802890e: f603 0121 addw r1, r3, #2081 ; 0x821 wire_sensor_UART_Handler->TxCount, - 80288d6: 4b06 ldr r3, [pc, #24] ; (80288f0 ) - 80288d8: 681b ldr r3, [r3, #0] + 8028912: 4b06 ldr r3, [pc, #24] ; (802892c ) + 8028914: 681b ldr r3, [r3, #0] wire_sensor_UART_Handler->AddSendList( - 80288da: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80288de: 8c5a ldrh r2, [r3, #34] ; 0x22 - 80288e0: 4b04 ldr r3, [pc, #16] ; (80288f4 ) - 80288e2: 9300 str r3, [sp, #0] - 80288e4: 2332 movs r3, #50 ; 0x32 - 80288e6: 47a0 blx r4 + 8028916: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 802891a: 8c5a ldrh r2, [r3, #34] ; 0x22 + 802891c: 4b04 ldr r3, [pc, #16] ; (8028930 ) + 802891e: 9300 str r3, [sp, #0] + 8028920: 2332 movs r3, #50 ; 0x32 + 8028922: 47a0 blx r4 50, decode_wire_sensor); } - 80288e8: bf00 nop - 80288ea: 370c adds r7, #12 - 80288ec: 46bd mov sp, r7 - 80288ee: bd90 pop {r4, r7, pc} - 80288f0: 2400ae44 .word 0x2400ae44 - 80288f4: 080288f9 .word 0x080288f9 + 8028924: bf00 nop + 8028926: 370c adds r7, #12 + 8028928: 46bd mov sp, r7 + 802892a: bd90 pop {r4, r7, pc} + 802892c: 2400ae44 .word 0x2400ae44 + 8028930: 08028939 .word 0x08028939 + 8028934: 00000000 .word 0x00000000 -080288f8 : +08028938 : } uint8_t Buffer_wire_sensor[100];//调试用 uint8_t Length_wire_sensor = 0;//调试用 static void decode_wire_sensor(uint8_t *buffer, uint16_t length) { - 80288f8: b580 push {r7, lr} - 80288fa: b088 sub sp, #32 - 80288fc: af04 add r7, sp, #16 - 80288fe: 6078 str r0, [r7, #4] - 8028900: 460b mov r3, r1 - 8028902: 807b strh r3, [r7, #2] + 8028938: b580 push {r7, lr} + 802893a: b088 sub sp, #32 + 802893c: af04 add r7, sp, #16 + 802893e: 6078 str r0, [r7, #4] + 8028940: 460b mov r3, r1 + 8028942: 807b strh r3, [r7, #2] if(length < 100){ - 8028904: 887b ldrh r3, [r7, #2] - 8028906: 2b63 cmp r3, #99 ; 0x63 - 8028908: d809 bhi.n 802891e + 8028944: 887b ldrh r3, [r7, #2] + 8028946: 2b63 cmp r3, #99 ; 0x63 + 8028948: d809 bhi.n 802895e Length_wire_sensor = length; - 802890a: 887b ldrh r3, [r7, #2] - 802890c: b2da uxtb r2, r3 - 802890e: 4b5a ldr r3, [pc, #360] ; (8028a78 ) - 8028910: 701a strb r2, [r3, #0] + 802894a: 887b ldrh r3, [r7, #2] + 802894c: b2da uxtb r2, r3 + 802894e: 4b5a ldr r3, [pc, #360] ; (8028ab8 ) + 8028950: 701a strb r2, [r3, #0] memcpy(Buffer_wire_sensor, buffer, length);//调试用 - 8028912: 887b ldrh r3, [r7, #2] - 8028914: 461a mov r2, r3 - 8028916: 6879 ldr r1, [r7, #4] - 8028918: 4858 ldr r0, [pc, #352] ; (8028a7c ) - 802891a: f01f fa33 bl 8047d84 + 8028952: 887b ldrh r3, [r7, #2] + 8028954: 461a mov r2, r3 + 8028956: 6879 ldr r1, [r7, #4] + 8028958: 4858 ldr r0, [pc, #352] ; (8028abc ) + 802895a: f01f fa33 bl 8047dc4 } // 回复报文:02 03 04 01020304 CRC // 01 02 03 04:4字节数据,前2字节为整数部分mm,后2字节为小数部分 // // wire_sensor: 帧长0x(字节), 地址0x if (buffer[0] == addr_wire_sensor && length == 9) - 802891e: 687b ldr r3, [r7, #4] - 8028920: 781b ldrb r3, [r3, #0] - 8028922: 2b02 cmp r3, #2 - 8028924: f040 809e bne.w 8028a64 - 8028928: 887b ldrh r3, [r7, #2] - 802892a: 2b09 cmp r3, #9 - 802892c: f040 809a bne.w 8028a64 + 802895e: 687b ldr r3, [r7, #4] + 8028960: 781b ldrb r3, [r3, #0] + 8028962: 2b02 cmp r3, #2 + 8028964: f040 809e bne.w 8028aa4 + 8028968: 887b ldrh r3, [r7, #2] + 802896a: 2b09 cmp r3, #9 + 802896c: f040 809a bne.w 8028aa4 { /* CRC 校验 */ uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]); - 8028930: 887b ldrh r3, [r7, #2] - 8028932: 3b01 subs r3, #1 - 8028934: 687a ldr r2, [r7, #4] - 8028936: 4413 add r3, r2 - 8028938: 781b ldrb r3, [r3, #0] - 802893a: 021b lsls r3, r3, #8 - 802893c: b21a sxth r2, r3 - 802893e: 887b ldrh r3, [r7, #2] - 8028940: 3b02 subs r3, #2 - 8028942: 6879 ldr r1, [r7, #4] - 8028944: 440b add r3, r1 - 8028946: 781b ldrb r3, [r3, #0] - 8028948: b21b sxth r3, r3 - 802894a: 4313 orrs r3, r2 - 802894c: b21b sxth r3, r3 - 802894e: 81fb strh r3, [r7, #14] + 8028970: 887b ldrh r3, [r7, #2] + 8028972: 3b01 subs r3, #1 + 8028974: 687a ldr r2, [r7, #4] + 8028976: 4413 add r3, r2 + 8028978: 781b ldrb r3, [r3, #0] + 802897a: 021b lsls r3, r3, #8 + 802897c: b21a sxth r2, r3 + 802897e: 887b ldrh r3, [r7, #2] + 8028980: 3b02 subs r3, #2 + 8028982: 6879 ldr r1, [r7, #4] + 8028984: 440b add r3, r1 + 8028986: 781b ldrb r3, [r3, #0] + 8028988: b21b sxth r3, r3 + 802898a: 4313 orrs r3, r2 + 802898c: b21b sxth r3, r3 + 802898e: 81fb strh r3, [r7, #14] /* CRC 校验正确 */ if (crc_check == MB_CRC16(buffer, length - 2)) - 8028950: 887b ldrh r3, [r7, #2] - 8028952: 3b02 subs r3, #2 - 8028954: b29b uxth r3, r3 - 8028956: 4619 mov r1, r3 - 8028958: 6878 ldr r0, [r7, #4] - 802895a: f7f8 fc37 bl 80211cc - 802895e: 4603 mov r3, r0 - 8028960: 461a mov r2, r3 - 8028962: 89fb ldrh r3, [r7, #14] - 8028964: 4293 cmp r3, r2 - 8028966: d15a bne.n 8028a1e + 8028990: 887b ldrh r3, [r7, #2] + 8028992: 3b02 subs r3, #2 + 8028994: b29b uxth r3, r3 + 8028996: 4619 mov r1, r3 + 8028998: 6878 ldr r0, [r7, #4] + 802899a: f7f8 fc17 bl 80211cc + 802899e: 4603 mov r3, r0 + 80289a0: 461a mov r2, r3 + 80289a2: 89fb ldrh r3, [r7, #14] + 80289a4: 4293 cmp r3, r2 + 80289a6: d15a bne.n 8028a5e { // *wire_length = (buffer[3] << 8) | buffer[4]; uint16_t current_wire_length = ( (buffer[3] << 8) | buffer[4] )/10;//mm to cm - 8028968: 687b ldr r3, [r7, #4] - 802896a: 3303 adds r3, #3 - 802896c: 781b ldrb r3, [r3, #0] - 802896e: 021b lsls r3, r3, #8 - 8028970: 687a ldr r2, [r7, #4] - 8028972: 3204 adds r2, #4 - 8028974: 7812 ldrb r2, [r2, #0] - 8028976: 4313 orrs r3, r2 - 8028978: 4a41 ldr r2, [pc, #260] ; (8028a80 ) - 802897a: fb82 1203 smull r1, r2, r2, r3 - 802897e: 1092 asrs r2, r2, #2 - 8028980: 17db asrs r3, r3, #31 - 8028982: 1ad3 subs r3, r2, r3 - 8028984: 81bb strh r3, [r7, #12] + 80289a8: 687b ldr r3, [r7, #4] + 80289aa: 3303 adds r3, #3 + 80289ac: 781b ldrb r3, [r3, #0] + 80289ae: 021b lsls r3, r3, #8 + 80289b0: 687a ldr r2, [r7, #4] + 80289b2: 3204 adds r2, #4 + 80289b4: 7812 ldrb r2, [r2, #0] + 80289b6: 4313 orrs r3, r2 + 80289b8: 4a41 ldr r2, [pc, #260] ; (8028ac0 ) + 80289ba: fb82 1203 smull r1, r2, r2, r3 + 80289be: 1092 asrs r2, r2, #2 + 80289c0: 17db asrs r3, r3, #31 + 80289c2: 1ad3 subs r3, r2, r3 + 80289c4: 81bb strh r3, [r7, #12] uint16_t Radius = GV.PV.Radius_Storage * 100;// m to cm - 8028986: 4b3f ldr r3, [pc, #252] ; (8028a84 ) - 8028988: ed93 7b62 vldr d7, [r3, #392] ; 0x188 - 802898c: ed9f 6b38 vldr d6, [pc, #224] ; 8028a70 - 8028990: ee27 7b06 vmul.f64 d7, d7, d6 - 8028994: eefc 7bc7 vcvt.u32.f64 s15, d7 - 8028998: ee17 3a90 vmov r3, s15 - 802899c: 817b strh r3, [r7, #10] + 80289c6: 4b3f ldr r3, [pc, #252] ; (8028ac4 ) + 80289c8: ed93 7b62 vldr d7, [r3, #392] ; 0x188 + 80289cc: ed9f 6b38 vldr d6, [pc, #224] ; 8028ab0 + 80289d0: ee27 7b06 vmul.f64 d7, d7, d6 + 80289d4: eefc 7bc7 vcvt.u32.f64 s15, d7 + 80289d8: ee17 3a90 vmov r3, s15 + 80289dc: 817b strh r3, [r7, #10] *wire_length = sqrt(current_wire_length*current_wire_length - Radius*Radius);//换算高度,罐半径为5m - 802899e: 89bb ldrh r3, [r7, #12] - 80289a0: 89ba ldrh r2, [r7, #12] - 80289a2: fb03 f202 mul.w r2, r3, r2 - 80289a6: 897b ldrh r3, [r7, #10] - 80289a8: 8979 ldrh r1, [r7, #10] - 80289aa: fb01 f303 mul.w r3, r1, r3 - 80289ae: 1ad3 subs r3, r2, r3 - 80289b0: ee07 3a90 vmov s15, r3 - 80289b4: eeb8 7be7 vcvt.f64.s32 d7, s15 - 80289b8: eeb0 0b47 vmov.f64 d0, d7 - 80289bc: f020 fc28 bl 8049210 - 80289c0: eeb0 7b40 vmov.f64 d7, d0 - 80289c4: 4b30 ldr r3, [pc, #192] ; (8028a88 ) - 80289c6: 681b ldr r3, [r3, #0] - 80289c8: eefc 7bc7 vcvt.u32.f64 s15, d7 - 80289cc: ee17 2a90 vmov r2, s15 - 80289d0: 601a str r2, [r3, #0] + 80289de: 89bb ldrh r3, [r7, #12] + 80289e0: 89ba ldrh r2, [r7, #12] + 80289e2: fb03 f202 mul.w r2, r3, r2 + 80289e6: 897b ldrh r3, [r7, #10] + 80289e8: 8979 ldrh r1, [r7, #10] + 80289ea: fb01 f303 mul.w r3, r1, r3 + 80289ee: 1ad3 subs r3, r2, r3 + 80289f0: ee07 3a90 vmov s15, r3 + 80289f4: eeb8 7be7 vcvt.f64.s32 d7, s15 + 80289f8: eeb0 0b47 vmov.f64 d0, d7 + 80289fc: f020 fc28 bl 8049250 + 8028a00: eeb0 7b40 vmov.f64 d7, d0 + 8028a04: 4b30 ldr r3, [pc, #192] ; (8028ac8 ) + 8028a06: 681b ldr r3, [r3, #0] + 8028a08: eefc 7bc7 vcvt.u32.f64 s15, d7 + 8028a0c: ee17 2a90 vmov r2, s15 + 8028a10: 601a str r2, [r3, #0] HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"wire_sensor",1); - 80289d2: 4b2e ldr r3, [pc, #184] ; (8028a8c ) - 80289d4: 681b ldr r3, [r3, #0] - 80289d6: 695b ldr r3, [r3, #20] - 80289d8: 4a2c ldr r2, [pc, #176] ; (8028a8c ) - 80289da: 6810 ldr r0, [r2, #0] - 80289dc: 2201 movs r2, #1 - 80289de: 492c ldr r1, [pc, #176] ; (8028a90 ) - 80289e0: 4798 blx r3 + 8028a12: 4b2e ldr r3, [pc, #184] ; (8028acc ) + 8028a14: 681b ldr r3, [r3, #0] + 8028a16: 695b ldr r3, [r3, #20] + 8028a18: 4a2c ldr r2, [pc, #176] ; (8028acc ) + 8028a1a: 6810 ldr r0, [r2, #0] + 8028a1c: 2201 movs r2, #1 + 8028a1e: 492c ldr r1, [pc, #176] ; (8028ad0 ) + 8028a20: 4798 blx r3 LOG("wire_sensor decoding succeeded"); - 80289e2: 4b2c ldr r3, [pc, #176] ; (8028a94 ) - 80289e4: 781b ldrb r3, [r3, #0] - 80289e6: 2b03 cmp r3, #3 - 80289e8: d93c bls.n 8028a64 - 80289ea: 2330 movs r3, #48 ; 0x30 - 80289ec: 061a lsls r2, r3, #24 - 80289ee: 2330 movs r3, #48 ; 0x30 - 80289f0: 041b lsls r3, r3, #16 - 80289f2: 431a orrs r2, r3 - 80289f4: 2330 movs r3, #48 ; 0x30 - 80289f6: 021b lsls r3, r3, #8 - 80289f8: 4313 orrs r3, r2 - 80289fa: 2230 movs r2, #48 ; 0x30 - 80289fc: ea43 0102 orr.w r1, r3, r2 - 8028a00: 2344 movs r3, #68 ; 0x44 - 8028a02: 061a lsls r2, r3, #24 - 8028a04: 2346 movs r3, #70 ; 0x46 - 8028a06: 041b lsls r3, r3, #16 - 8028a08: 431a orrs r2, r3 - 8028a0a: 234c movs r3, #76 ; 0x4c - 8028a0c: 021b lsls r3, r3, #8 - 8028a0e: 4313 orrs r3, r2 - 8028a10: 2254 movs r2, #84 ; 0x54 - 8028a12: 431a orrs r2, r3 - 8028a14: 4b20 ldr r3, [pc, #128] ; (8028a98 ) - 8028a16: 2004 movs r0, #4 - 8028a18: f7fe ff96 bl 8027948 + 8028a22: 4b2c ldr r3, [pc, #176] ; (8028ad4 ) + 8028a24: 781b ldrb r3, [r3, #0] + 8028a26: 2b03 cmp r3, #3 + 8028a28: d93c bls.n 8028aa4 + 8028a2a: 2330 movs r3, #48 ; 0x30 + 8028a2c: 061a lsls r2, r3, #24 + 8028a2e: 2330 movs r3, #48 ; 0x30 + 8028a30: 041b lsls r3, r3, #16 + 8028a32: 431a orrs r2, r3 + 8028a34: 2330 movs r3, #48 ; 0x30 + 8028a36: 021b lsls r3, r3, #8 + 8028a38: 4313 orrs r3, r2 + 8028a3a: 2230 movs r2, #48 ; 0x30 + 8028a3c: ea43 0102 orr.w r1, r3, r2 + 8028a40: 2344 movs r3, #68 ; 0x44 + 8028a42: 061a lsls r2, r3, #24 + 8028a44: 2346 movs r3, #70 ; 0x46 + 8028a46: 041b lsls r3, r3, #16 + 8028a48: 431a orrs r2, r3 + 8028a4a: 234c movs r3, #76 ; 0x4c + 8028a4c: 021b lsls r3, r3, #8 + 8028a4e: 4313 orrs r3, r2 + 8028a50: 2254 movs r2, #84 ; 0x54 + 8028a52: 431a orrs r2, r3 + 8028a54: 4b20 ldr r3, [pc, #128] ; (8028ad8 ) + 8028a56: 2004 movs r0, #4 + 8028a58: f7fe ff76 bl 8027948 //log_error("wire sensor decoding failed"); LOGFF(DL_ERROR,"wire sensor decoding failed"); } } } - 8028a1c: e022 b.n 8028a64 + 8028a5c: e022 b.n 8028aa4 LOGFF(DL_ERROR,"wire sensor decoding failed"); - 8028a1e: 4b1d ldr r3, [pc, #116] ; (8028a94 ) - 8028a20: 781b ldrb r3, [r3, #0] - 8028a22: 2b01 cmp r3, #1 - 8028a24: d91e bls.n 8028a64 - 8028a26: 2330 movs r3, #48 ; 0x30 - 8028a28: 061a lsls r2, r3, #24 - 8028a2a: 2330 movs r3, #48 ; 0x30 - 8028a2c: 041b lsls r3, r3, #16 - 8028a2e: 431a orrs r2, r3 - 8028a30: 2330 movs r3, #48 ; 0x30 - 8028a32: 021b lsls r3, r3, #8 - 8028a34: 4313 orrs r3, r2 - 8028a36: 2230 movs r2, #48 ; 0x30 - 8028a38: ea43 0102 orr.w r1, r3, r2 - 8028a3c: 2344 movs r3, #68 ; 0x44 - 8028a3e: 061a lsls r2, r3, #24 - 8028a40: 2346 movs r3, #70 ; 0x46 - 8028a42: 041b lsls r3, r3, #16 - 8028a44: 431a orrs r2, r3 - 8028a46: 234c movs r3, #76 ; 0x4c - 8028a48: 021b lsls r3, r3, #8 - 8028a4a: 4313 orrs r3, r2 - 8028a4c: 2254 movs r2, #84 ; 0x54 - 8028a4e: 431a orrs r2, r3 - 8028a50: 4b12 ldr r3, [pc, #72] ; (8028a9c ) - 8028a52: 9302 str r3, [sp, #8] - 8028a54: 2369 movs r3, #105 ; 0x69 - 8028a56: 9301 str r3, [sp, #4] - 8028a58: 4b11 ldr r3, [pc, #68] ; (8028aa0 ) - 8028a5a: 9300 str r3, [sp, #0] - 8028a5c: 4b11 ldr r3, [pc, #68] ; (8028aa4 ) - 8028a5e: 2002 movs r0, #2 - 8028a60: f7fe ff72 bl 8027948 -} - 8028a64: bf00 nop - 8028a66: 3710 adds r7, #16 - 8028a68: 46bd mov sp, r7 - 8028a6a: bd80 pop {r7, pc} - 8028a6c: f3af 8000 nop.w - 8028a70: 00000000 .word 0x00000000 - 8028a74: 40590000 .word 0x40590000 - 8028a78: 2400aeb0 .word 0x2400aeb0 - 8028a7c: 2400ae4c .word 0x2400ae4c - 8028a80: 66666667 .word 0x66666667 - 8028a84: 240002b0 .word 0x240002b0 - 8028a88: 2400ae40 .word 0x2400ae40 - 8028a8c: 2400055c .word 0x2400055c - 8028a90: 08049fa8 .word 0x08049fa8 - 8028a94: 24009aac .word 0x24009aac - 8028a98: 08049ff4 .word 0x08049ff4 - 8028a9c: 0804d338 .word 0x0804d338 - 8028aa0: 0804a050 .word 0x0804a050 - 8028aa4: 0804a014 .word 0x0804a014 - -08028aa8 : + 8028a5e: 4b1d ldr r3, [pc, #116] ; (8028ad4 ) + 8028a60: 781b ldrb r3, [r3, #0] + 8028a62: 2b01 cmp r3, #1 + 8028a64: d91e bls.n 8028aa4 + 8028a66: 2330 movs r3, #48 ; 0x30 + 8028a68: 061a lsls r2, r3, #24 + 8028a6a: 2330 movs r3, #48 ; 0x30 + 8028a6c: 041b lsls r3, r3, #16 + 8028a6e: 431a orrs r2, r3 + 8028a70: 2330 movs r3, #48 ; 0x30 + 8028a72: 021b lsls r3, r3, #8 + 8028a74: 4313 orrs r3, r2 + 8028a76: 2230 movs r2, #48 ; 0x30 + 8028a78: ea43 0102 orr.w r1, r3, r2 + 8028a7c: 2344 movs r3, #68 ; 0x44 + 8028a7e: 061a lsls r2, r3, #24 + 8028a80: 2346 movs r3, #70 ; 0x46 + 8028a82: 041b lsls r3, r3, #16 + 8028a84: 431a orrs r2, r3 + 8028a86: 234c movs r3, #76 ; 0x4c + 8028a88: 021b lsls r3, r3, #8 + 8028a8a: 4313 orrs r3, r2 + 8028a8c: 2254 movs r2, #84 ; 0x54 + 8028a8e: 431a orrs r2, r3 + 8028a90: 4b12 ldr r3, [pc, #72] ; (8028adc ) + 8028a92: 9302 str r3, [sp, #8] + 8028a94: 2369 movs r3, #105 ; 0x69 + 8028a96: 9301 str r3, [sp, #4] + 8028a98: 4b11 ldr r3, [pc, #68] ; (8028ae0 ) + 8028a9a: 9300 str r3, [sp, #0] + 8028a9c: 4b11 ldr r3, [pc, #68] ; (8028ae4 ) + 8028a9e: 2002 movs r0, #2 + 8028aa0: f7fe ff52 bl 8027948 +} + 8028aa4: bf00 nop + 8028aa6: 3710 adds r7, #16 + 8028aa8: 46bd mov sp, r7 + 8028aaa: bd80 pop {r7, pc} + 8028aac: f3af 8000 nop.w + 8028ab0: 00000000 .word 0x00000000 + 8028ab4: 40590000 .word 0x40590000 + 8028ab8: 2400aeb0 .word 0x2400aeb0 + 8028abc: 2400ae4c .word 0x2400ae4c + 8028ac0: 66666667 .word 0x66666667 + 8028ac4: 240002b0 .word 0x240002b0 + 8028ac8: 2400ae40 .word 0x2400ae40 + 8028acc: 2400055c .word 0x2400055c + 8028ad0: 08049fe8 .word 0x08049fe8 + 8028ad4: 24009aac .word 0x24009aac + 8028ad8: 0804a034 .word 0x0804a034 + 8028adc: 0804d378 .word 0x0804d378 + 8028ae0: 0804a090 .word 0x0804a090 + 8028ae4: 0804a054 .word 0x0804a054 + +08028ae8 : * 1.根据电子罗盘状态,经历东南西北4个方向状态 判断为一圈作业循环 * 2.走完一圈执行 换道(换道完重置方向状态) * 3.根据罐体高度和拉线长度,判断是否到达圆罐底部,作业完成 */ void Automatic_task_Control() { - 8028aa8: b580 push {r7, lr} - 8028aaa: af00 add r7, sp, #0 + 8028ae8: b580 push {r7, lr} + 8028aea: af00 add r7, sp, #0 height_storage = GV.PV.Height_Storage * 100; - 8028aac: 4b40 ldr r3, [pc, #256] ; (8028bb0 ) - 8028aae: ed93 7b60 vldr d7, [r3, #384] ; 0x180 - 8028ab2: ed9f 6b3b vldr d6, [pc, #236] ; 8028ba0 - 8028ab6: ee27 7b06 vmul.f64 d7, d7, d6 - 8028aba: eefc 7bc7 vcvt.u32.f64 s15, d7 - 8028abe: ee17 2a90 vmov r2, s15 - 8028ac2: 4b3c ldr r3, [pc, #240] ; (8028bb4 ) - 8028ac4: 601a str r2, [r3, #0] + 8028aec: 4b40 ldr r3, [pc, #256] ; (8028bf0 ) + 8028aee: ed93 7b60 vldr d7, [r3, #384] ; 0x180 + 8028af2: ed9f 6b3b vldr d6, [pc, #236] ; 8028be0 + 8028af6: ee27 7b06 vmul.f64 d7, d7, d6 + 8028afa: eefc 7bc7 vcvt.u32.f64 s15, d7 + 8028afe: ee17 2a90 vmov r2, s15 + 8028b02: 4b3c ldr r3, [pc, #240] ; (8028bf4 ) + 8028b04: 601a str r2, [r3, #0] if (Get_BIT(SystemErrorCode, ComError_TL720D) == DISCONNECTED - 8028ac6: 4b3c ldr r3, [pc, #240] ; (8028bb8 ) - 8028ac8: 681b ldr r3, [r3, #0] - 8028aca: 2101 movs r1, #1 - 8028acc: 4618 mov r0, r3 - 8028ace: f7f7 fe1a bl 8020706 - 8028ad2: 4603 mov r3, r0 - 8028ad4: 2b01 cmp r3, #1 - 8028ad6: d011 beq.n 8028afc + 8028b06: 4b3c ldr r3, [pc, #240] ; (8028bf8 ) + 8028b08: 681b ldr r3, [r3, #0] + 8028b0a: 2101 movs r1, #1 + 8028b0c: 4618 mov r0, r3 + 8028b0e: f7f7 fdfa bl 8020706 + 8028b12: 4603 mov r3, r0 + 8028b14: 2b01 cmp r3, #1 + 8028b16: d011 beq.n 8028b3c ||Get_BIT(SystemErrorCode, ComError_DDM360B) == DISCONNECTED - 8028ad8: 4b37 ldr r3, [pc, #220] ; (8028bb8 ) - 8028ada: 681b ldr r3, [r3, #0] - 8028adc: 2106 movs r1, #6 - 8028ade: 4618 mov r0, r3 - 8028ae0: f7f7 fe11 bl 8020706 - 8028ae4: 4603 mov r3, r0 - 8028ae6: 2b01 cmp r3, #1 - 8028ae8: d008 beq.n 8028afc + 8028b18: 4b37 ldr r3, [pc, #220] ; (8028bf8 ) + 8028b1a: 681b ldr r3, [r3, #0] + 8028b1c: 2106 movs r1, #6 + 8028b1e: 4618 mov r0, r3 + 8028b20: f7f7 fdf1 bl 8020706 + 8028b24: 4603 mov r3, r0 + 8028b26: 2b01 cmp r3, #1 + 8028b28: d008 beq.n 8028b3c ||Get_BIT(SystemErrorCode, ComError_wire_sensor) == DISCONNECTED) - 8028aea: 4b33 ldr r3, [pc, #204] ; (8028bb8 ) - 8028aec: 681b ldr r3, [r3, #0] - 8028aee: 2108 movs r1, #8 - 8028af0: 4618 mov r0, r3 - 8028af2: f7f7 fe08 bl 8020706 - 8028af6: 4603 mov r3, r0 - 8028af8: 2b01 cmp r3, #1 - 8028afa: d104 bne.n 8028b06 + 8028b2a: 4b33 ldr r3, [pc, #204] ; (8028bf8 ) + 8028b2c: 681b ldr r3, [r3, #0] + 8028b2e: 2108 movs r1, #8 + 8028b30: 4618 mov r0, r3 + 8028b32: f7f7 fde8 bl 8020706 + 8028b36: 4603 mov r3, r0 + 8028b38: 2b01 cmp r3, #1 + 8028b3a: d104 bne.n 8028b46 { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028afc: 492f ldr r1, [pc, #188] ; (8028bbc ) - 8028afe: 4830 ldr r0, [pc, #192] ; (8028bc0 ) - 8028b00: f000 fcfa bl 80294f8 + 8028b3c: 492f ldr r1, [pc, #188] ; (8028bfc ) + 8028b3e: 4830 ldr r0, [pc, #192] ; (8028c00 ) + 8028b40: f000 fcfa bl 8029538 return;//安卓屏幕 模式选择错误 - 8028b04: e04a b.n 8028b9c + 8028b44: e04a b.n 8028bdc } if (GV.PV.RunMode == Move_Manual) - 8028b06: 4b2a ldr r3, [pc, #168] ; (8028bb0 ) - 8028b08: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 8028b0c: 2b01 cmp r3, #1 - 8028b0e: d104 bne.n 8028b1a + 8028b46: 4b2a ldr r3, [pc, #168] ; (8028bf0 ) + 8028b48: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 8028b4c: 2b01 cmp r3, #1 + 8028b4e: d104 bne.n 8028b5a { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028b10: 492a ldr r1, [pc, #168] ; (8028bbc ) - 8028b12: 482b ldr r0, [pc, #172] ; (8028bc0 ) - 8028b14: f000 fcf0 bl 80294f8 + 8028b50: 492a ldr r1, [pc, #168] ; (8028bfc ) + 8028b52: 482b ldr r0, [pc, #172] ; (8028c00 ) + 8028b54: f000 fcf0 bl 8029538 return; - 8028b18: e040 b.n 8028b9c + 8028b58: e040 b.n 8028bdc } if( GV.Wire_lenth > (height_storage - height_ending))//到达底部 - 8028b1a: 4b25 ldr r3, [pc, #148] ; (8028bb0 ) - 8028b1c: f8d3 21fc ldr.w r2, [r3, #508] ; 0x1fc - 8028b20: 4b24 ldr r3, [pc, #144] ; (8028bb4 ) - 8028b22: 681b ldr r3, [r3, #0] - 8028b24: 2164 movs r1, #100 ; 0x64 - 8028b26: 1a5b subs r3, r3, r1 - 8028b28: 429a cmp r2, r3 - 8028b2a: d904 bls.n 8028b36 + 8028b5a: 4b25 ldr r3, [pc, #148] ; (8028bf0 ) + 8028b5c: f8d3 21fc ldr.w r2, [r3, #508] ; 0x1fc + 8028b60: 4b24 ldr r3, [pc, #144] ; (8028bf4 ) + 8028b62: 681b ldr r3, [r3, #0] + 8028b64: 2164 movs r1, #100 ; 0x64 + 8028b66: 1a5b subs r3, r3, r1 + 8028b68: 429a cmp r2, r3 + 8028b6a: d904 bls.n 8028b76 { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028b2c: 4923 ldr r1, [pc, #140] ; (8028bbc ) - 8028b2e: 4824 ldr r0, [pc, #144] ; (8028bc0 ) - 8028b30: f000 fce2 bl 80294f8 + 8028b6c: 4923 ldr r1, [pc, #140] ; (8028bfc ) + 8028b6e: 4824 ldr r0, [pc, #144] ; (8028c00 ) + 8028b70: f000 fce2 bl 8029538 return; - 8028b34: e032 b.n 8028b9c + 8028b74: e032 b.n 8028bdc } if(current_state_DDM !=0) {last_state_DDM = current_state_DDM;}// 只有上次状态有效时才保存 - 8028b36: 4b23 ldr r3, [pc, #140] ; (8028bc4 ) - 8028b38: 781b ldrb r3, [r3, #0] - 8028b3a: 2b00 cmp r3, #0 - 8028b3c: d003 beq.n 8028b46 - 8028b3e: 4b21 ldr r3, [pc, #132] ; (8028bc4 ) - 8028b40: 781a ldrb r2, [r3, #0] - 8028b42: 4b21 ldr r3, [pc, #132] ; (8028bc8 ) - 8028b44: 701a strb r2, [r3, #0] + 8028b76: 4b23 ldr r3, [pc, #140] ; (8028c04 ) + 8028b78: 781b ldrb r3, [r3, #0] + 8028b7a: 2b00 cmp r3, #0 + 8028b7c: d003 beq.n 8028b86 + 8028b7e: 4b21 ldr r3, [pc, #132] ; (8028c04 ) + 8028b80: 781a ldrb r2, [r3, #0] + 8028b82: 4b21 ldr r3, [pc, #132] ; (8028c08 ) + 8028b84: 701a strb r2, [r3, #0] current_state_DDM = get_state_DDM();// 更新状态 - 8028b46: f000 f843 bl 8028bd0 - 8028b4a: 4603 mov r3, r0 - 8028b4c: b2da uxtb r2, r3 - 8028b4e: 4b1d ldr r3, [pc, #116] ; (8028bc4 ) - 8028b50: 701a strb r2, [r3, #0] + 8028b86: f000 f843 bl 8028c10 + 8028b8a: 4603 mov r3, r0 + 8028b8c: b2da uxtb r2, r3 + 8028b8e: 4b1d ldr r3, [pc, #116] ; (8028c04 ) + 8028b90: 701a strb r2, [r3, #0] if(current_state_DDM != last_state_DDM) {count_DDM ++;} // 状态变化时计数 - 8028b52: 4b1c ldr r3, [pc, #112] ; (8028bc4 ) - 8028b54: 781a ldrb r2, [r3, #0] - 8028b56: 4b1c ldr r3, [pc, #112] ; (8028bc8 ) - 8028b58: 781b ldrb r3, [r3, #0] - 8028b5a: 429a cmp r2, r3 - 8028b5c: d005 beq.n 8028b6a - 8028b5e: 4b1b ldr r3, [pc, #108] ; (8028bcc ) - 8028b60: 781b ldrb r3, [r3, #0] - 8028b62: 3301 adds r3, #1 - 8028b64: b2da uxtb r2, r3 - 8028b66: 4b19 ldr r3, [pc, #100] ; (8028bcc ) - 8028b68: 701a strb r2, [r3, #0] + 8028b92: 4b1c ldr r3, [pc, #112] ; (8028c04 ) + 8028b94: 781a ldrb r2, [r3, #0] + 8028b96: 4b1c ldr r3, [pc, #112] ; (8028c08 ) + 8028b98: 781b ldrb r3, [r3, #0] + 8028b9a: 429a cmp r2, r3 + 8028b9c: d005 beq.n 8028baa + 8028b9e: 4b1b ldr r3, [pc, #108] ; (8028c0c ) + 8028ba0: 781b ldrb r3, [r3, #0] + 8028ba2: 3301 adds r3, #1 + 8028ba4: b2da uxtb r2, r3 + 8028ba6: 4b19 ldr r3, [pc, #100] ; (8028c0c ) + 8028ba8: 701a strb r2, [r3, #0] if(count_DDM >= 5)//换道 - 8028b6a: 4b18 ldr r3, [pc, #96] ; (8028bcc ) - 8028b6c: 781b ldrb r3, [r3, #0] - 8028b6e: 2b04 cmp r3, #4 - 8028b70: d903 bls.n 8028b7a + 8028baa: 4b18 ldr r3, [pc, #96] ; (8028c0c ) + 8028bac: 781b ldrb r3, [r3, #0] + 8028bae: 2b04 cmp r3, #4 + 8028bb0: d903 bls.n 8028bba { Auto_ChangeLine_Control(0); - 8028b72: 2000 movs r0, #0 - 8028b74: f000 f88c bl 8028c90 - 8028b78: e010 b.n 8028b9c + 8028bb2: 2000 movs r0, #0 + 8028bb4: f000 f88c bl 8028cd0 + 8028bb8: e010 b.n 8028bdc } else//绕圈 { Auto_steer_moveforward_do(-90 + GV.PV.Vertical_Calibration/100);//垂直校准,正抬头,负低头 - 8028b7a: 4b0d ldr r3, [pc, #52] ; (8028bb0 ) - 8028b7c: ed93 6b5e vldr d6, [r3, #376] ; 0x178 - 8028b80: ed9f 5b07 vldr d5, [pc, #28] ; 8028ba0 - 8028b84: ee86 7b05 vdiv.f64 d7, d6, d5 - 8028b88: ed9f 6b07 vldr d6, [pc, #28] ; 8028ba8 - 8028b8c: ee37 7b46 vsub.f64 d7, d7, d6 - 8028b90: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8028b94: eeb0 0a67 vmov.f32 s0, s15 - 8028b98: f000 f96e bl 8028e78 + 8028bba: 4b0d ldr r3, [pc, #52] ; (8028bf0 ) + 8028bbc: ed93 6b5e vldr d6, [r3, #376] ; 0x178 + 8028bc0: ed9f 5b07 vldr d5, [pc, #28] ; 8028be0 + 8028bc4: ee86 7b05 vdiv.f64 d7, d6, d5 + 8028bc8: ed9f 6b07 vldr d6, [pc, #28] ; 8028be8 + 8028bcc: ee37 7b46 vsub.f64 d7, d7, d6 + 8028bd0: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8028bd4: eeb0 0a67 vmov.f32 s0, s15 + 8028bd8: f000 f96e bl 8028eb8 } } - 8028b9c: bd80 pop {r7, pc} - 8028b9e: bf00 nop - 8028ba0: 00000000 .word 0x00000000 - 8028ba4: 40590000 .word 0x40590000 - 8028ba8: 00000000 .word 0x00000000 - 8028bac: 40568000 .word 0x40568000 - 8028bb0: 240002b0 .word 0x240002b0 - 8028bb4: 2400aeb4 .word 0x2400aeb4 - 8028bb8: 240001d0 .word 0x240001d0 - 8028bbc: 24000068 .word 0x24000068 - 8028bc0: 2400aedc .word 0x2400aedc - 8028bc4: 2400aeb9 .word 0x2400aeb9 - 8028bc8: 2400aeb8 .word 0x2400aeb8 - 8028bcc: 2400aeba .word 0x2400aeba - -08028bd0 : + 8028bdc: bd80 pop {r7, pc} + 8028bde: bf00 nop + 8028be0: 00000000 .word 0x00000000 + 8028be4: 40590000 .word 0x40590000 + 8028be8: 00000000 .word 0x00000000 + 8028bec: 40568000 .word 0x40568000 + 8028bf0: 240002b0 .word 0x240002b0 + 8028bf4: 2400aeb4 .word 0x2400aeb4 + 8028bf8: 240001d0 .word 0x240001d0 + 8028bfc: 24000068 .word 0x24000068 + 8028c00: 2400aedc .word 0x2400aedc + 8028c04: 2400aeb9 .word 0x2400aeb9 + 8028c08: 2400aeb8 .word 0x2400aeb8 + 8028c0c: 2400aeba .word 0x2400aeba + +08028c10 : //电子罗盘 北东南西 对应4个状态 static int get_state_DDM() { - 8028bd0: b480 push {r7} - 8028bd2: af00 add r7, sp, #0 + 8028c10: b480 push {r7} + 8028c12: af00 add r7, sp, #0 if(GV.RobotAngle_DDM >5*100 && GV.RobotAngle_DDM <90*100) //[5,90] - 8028bd4: 4b22 ldr r3, [pc, #136] ; (8028c60 ) - 8028bd6: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028bda: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 - 8028bde: dd08 ble.n 8028bf2 - 8028be0: 4b1f ldr r3, [pc, #124] ; (8028c60 ) - 8028be2: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028be6: f242 3227 movw r2, #8999 ; 0x2327 - 8028bea: 4293 cmp r3, r2 - 8028bec: dc01 bgt.n 8028bf2 - {return 1;} - 8028bee: 2301 movs r3, #1 - 8028bf0: e030 b.n 8028c54 - else if(GV.RobotAngle_DDM >95*100 && GV.RobotAngle_DDM <180*100) //[95,180] - 8028bf2: 4b1b ldr r3, [pc, #108] ; (8028c60 ) - 8028bf4: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028bf8: f242 521c movw r2, #9500 ; 0x251c - 8028bfc: 4293 cmp r3, r2 - 8028bfe: dd08 ble.n 8028c12 - 8028c00: 4b17 ldr r3, [pc, #92] ; (8028c60 ) - 8028c02: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028c06: f244 624f movw r2, #17999 ; 0x464f - 8028c0a: 4293 cmp r3, r2 - 8028c0c: dc01 bgt.n 8028c12 - {return 2;} - 8028c0e: 2302 movs r3, #2 - 8028c10: e020 b.n 8028c54 - else if(GV.RobotAngle_DDM >185*100 && GV.RobotAngle_DDM <270*100) //[185,270] - 8028c12: 4b13 ldr r3, [pc, #76] ; (8028c60 ) - 8028c14: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028c18: f644 0244 movw r2, #18500 ; 0x4844 - 8028c1c: 4293 cmp r3, r2 - 8028c1e: dd08 ble.n 8028c32 - 8028c20: 4b0f ldr r3, [pc, #60] ; (8028c60 ) + 8028c14: 4b22 ldr r3, [pc, #136] ; (8028ca0 ) + 8028c16: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8028c1a: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 + 8028c1e: dd08 ble.n 8028c32 + 8028c20: 4b1f ldr r3, [pc, #124] ; (8028ca0 ) 8028c22: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028c26: f646 1277 movw r2, #26999 ; 0x6977 + 8028c26: f242 3227 movw r2, #8999 ; 0x2327 8028c2a: 4293 cmp r3, r2 - 8028c2c: dc01 bgt.n 8028c32 - {return 3;} - 8028c2e: 2303 movs r3, #3 - 8028c30: e010 b.n 8028c54 - else if(GV.RobotAngle_DDM >275*100 && GV.RobotAngle_DDM <360*100) //[275,360] - 8028c32: 4b0b ldr r3, [pc, #44] ; (8028c60 ) + 8028c2c: dc01 bgt.n 8028c32 + {return 1;} + 8028c2e: 2301 movs r3, #1 + 8028c30: e030 b.n 8028c94 + else if(GV.RobotAngle_DDM >95*100 && GV.RobotAngle_DDM <180*100) //[95,180] + 8028c32: 4b1b ldr r3, [pc, #108] ; (8028ca0 ) 8028c34: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028c38: f646 326c movw r2, #27500 ; 0x6b6c + 8028c38: f242 521c movw r2, #9500 ; 0x251c 8028c3c: 4293 cmp r3, r2 - 8028c3e: dd08 ble.n 8028c52 - 8028c40: 4b07 ldr r3, [pc, #28] ; (8028c60 ) + 8028c3e: dd08 ble.n 8028c52 + 8028c40: 4b17 ldr r3, [pc, #92] ; (8028ca0 ) 8028c42: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 8028c46: f648 429f movw r2, #35999 ; 0x8c9f + 8028c46: f244 624f movw r2, #17999 ; 0x464f 8028c4a: 4293 cmp r3, r2 - 8028c4c: dc01 bgt.n 8028c52 + 8028c4c: dc01 bgt.n 8028c52 + {return 2;} + 8028c4e: 2302 movs r3, #2 + 8028c50: e020 b.n 8028c94 + else if(GV.RobotAngle_DDM >185*100 && GV.RobotAngle_DDM <270*100) //[185,270] + 8028c52: 4b13 ldr r3, [pc, #76] ; (8028ca0 ) + 8028c54: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8028c58: f644 0244 movw r2, #18500 ; 0x4844 + 8028c5c: 4293 cmp r3, r2 + 8028c5e: dd08 ble.n 8028c72 + 8028c60: 4b0f ldr r3, [pc, #60] ; (8028ca0 ) + 8028c62: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8028c66: f646 1277 movw r2, #26999 ; 0x6977 + 8028c6a: 4293 cmp r3, r2 + 8028c6c: dc01 bgt.n 8028c72 + {return 3;} + 8028c6e: 2303 movs r3, #3 + 8028c70: e010 b.n 8028c94 + else if(GV.RobotAngle_DDM >275*100 && GV.RobotAngle_DDM <360*100) //[275,360] + 8028c72: 4b0b ldr r3, [pc, #44] ; (8028ca0 ) + 8028c74: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8028c78: f646 326c movw r2, #27500 ; 0x6b6c + 8028c7c: 4293 cmp r3, r2 + 8028c7e: dd08 ble.n 8028c92 + 8028c80: 4b07 ldr r3, [pc, #28] ; (8028ca0 ) + 8028c82: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8028c86: f648 429f movw r2, #35999 ; 0x8c9f + 8028c8a: 4293 cmp r3, r2 + 8028c8c: dc01 bgt.n 8028c92 {return 4;} - 8028c4e: 2304 movs r3, #4 - 8028c50: e000 b.n 8028c54 + 8028c8e: 2304 movs r3, #4 + 8028c90: e000 b.n 8028c94 return 0; - 8028c52: 2300 movs r3, #0 + 8028c92: 2300 movs r3, #0 } - 8028c54: 4618 mov r0, r3 - 8028c56: 46bd mov sp, r7 - 8028c58: f85d 7b04 ldr.w r7, [sp], #4 - 8028c5c: 4770 bx lr - 8028c5e: bf00 nop - 8028c60: 240002b0 .word 0x240002b0 + 8028c94: 4618 mov r0, r3 + 8028c96: 46bd mov sp, r7 + 8028c98: f85d 7b04 ldr.w r7, [sp], #4 + 8028c9c: 4770 bx lr + 8028c9e: bf00 nop + 8028ca0: 240002b0 .word 0x240002b0 -08028c64 : +08028ca4 : void Refresh_MK32_State() { - 8028c64: b480 push {r7} - 8028c66: af00 add r7, sp, #0 + 8028ca4: b480 push {r7} + 8028ca6: af00 add r7, sp, #0 if (P_MK32->CH4_SA == 0)//更新换道状态 - 8028c68: 4b06 ldr r3, [pc, #24] ; (8028c84 ) - 8028c6a: 681b ldr r3, [r3, #0] - 8028c6c: 695b ldr r3, [r3, #20] - 8028c6e: 2b00 cmp r3, #0 - 8028c70: d103 bne.n 8028c7a + 8028ca8: 4b06 ldr r3, [pc, #24] ; (8028cc4 ) + 8028caa: 681b ldr r3, [r3, #0] + 8028cac: 695b ldr r3, [r3, #20] + 8028cae: 2b00 cmp r3, #0 + 8028cb0: d103 bne.n 8028cba { HorizontalLaneChangeState = Lane_Change_Start;//准备开始换道 - 8028c72: 4b05 ldr r3, [pc, #20] ; (8028c88 ) - 8028c74: 2201 movs r2, #1 - 8028c76: 701a strb r2, [r3, #0] + 8028cb2: 4b05 ldr r3, [pc, #20] ; (8028cc8 ) + 8028cb4: 2201 movs r2, #1 + 8028cb6: 701a strb r2, [r3, #0] return; - 8028c78: bf00 nop + 8028cb8: bf00 nop } } - 8028c7a: 46bd mov sp, r7 - 8028c7c: f85d 7b04 ldr.w r7, [sp], #4 - 8028c80: 4770 bx lr - 8028c82: bf00 nop - 8028c84: 2400ad24 .word 0x2400ad24 - 8028c88: 2400aec0 .word 0x2400aec0 - 8028c8c: 00000000 .word 0x00000000 + 8028cba: 46bd mov sp, r7 + 8028cbc: f85d 7b04 ldr.w r7, [sp], #4 + 8028cc0: 4770 bx lr + 8028cc2: bf00 nop + 8028cc4: 2400ad24 .word 0x2400ad24 + 8028cc8: 2400aec0 .word 0x2400aec0 + 8028ccc: 00000000 .word 0x00000000 -08028c90 : +08028cd0 : * 2.距离差大于2小于5,慢速后退 * 3.调整方向至90° */ // 0-自动作业换道; 1-手动拨杆换道 void Auto_ChangeLine_Control(int flag)//换道(后退) { - 8028c90: b580 push {r7, lr} - 8028c92: b086 sub sp, #24 - 8028c94: af00 add r7, sp, #0 - 8028c96: 6078 str r0, [r7, #4] + 8028cd0: b580 push {r7, lr} + 8028cd2: b086 sub sp, #24 + 8028cd4: af00 add r7, sp, #0 + 8028cd6: 6078 str r0, [r7, #4] if (Get_BIT(SystemErrorCode, ComError_TL720D) == DISCONNECTED - 8028c98: 4b6b ldr r3, [pc, #428] ; (8028e48 ) - 8028c9a: 681b ldr r3, [r3, #0] - 8028c9c: 2101 movs r1, #1 - 8028c9e: 4618 mov r0, r3 - 8028ca0: f7f7 fd31 bl 8020706 - 8028ca4: 4603 mov r3, r0 - 8028ca6: 2b01 cmp r3, #1 - 8028ca8: d008 beq.n 8028cbc + 8028cd8: 4b6b ldr r3, [pc, #428] ; (8028e88 ) + 8028cda: 681b ldr r3, [r3, #0] + 8028cdc: 2101 movs r1, #1 + 8028cde: 4618 mov r0, r3 + 8028ce0: f7f7 fd11 bl 8020706 + 8028ce4: 4603 mov r3, r0 + 8028ce6: 2b01 cmp r3, #1 + 8028ce8: d008 beq.n 8028cfc ||Get_BIT(SystemErrorCode, ComError_wire_sensor) == DISCONNECTED) - 8028caa: 4b67 ldr r3, [pc, #412] ; (8028e48 ) - 8028cac: 681b ldr r3, [r3, #0] - 8028cae: 2108 movs r1, #8 - 8028cb0: 4618 mov r0, r3 - 8028cb2: f7f7 fd28 bl 8020706 - 8028cb6: 4603 mov r3, r0 - 8028cb8: 2b01 cmp r3, #1 - 8028cba: d104 bne.n 8028cc6 + 8028cea: 4b67 ldr r3, [pc, #412] ; (8028e88 ) + 8028cec: 681b ldr r3, [r3, #0] + 8028cee: 2108 movs r1, #8 + 8028cf0: 4618 mov r0, r3 + 8028cf2: f7f7 fd08 bl 8020706 + 8028cf6: 4603 mov r3, r0 + 8028cf8: 2b01 cmp r3, #1 + 8028cfa: d104 bne.n 8028d06 { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028cbc: 4963 ldr r1, [pc, #396] ; (8028e4c ) - 8028cbe: 4864 ldr r0, [pc, #400] ; (8028e50 ) - 8028cc0: f000 fc1a bl 80294f8 + 8028cfc: 4963 ldr r1, [pc, #396] ; (8028e8c ) + 8028cfe: 4864 ldr r0, [pc, #400] ; (8028e90 ) + 8028d00: f000 fc1a bl 8029538 return;//安卓屏幕 模式选择错误 - 8028cc4: e0b9 b.n 8028e3a + 8028d04: e0b9 b.n 8028e7a } if (GV.PV.RunMode == Move_Manual) - 8028cc6: 4b63 ldr r3, [pc, #396] ; (8028e54 ) - 8028cc8: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 8028ccc: 2b01 cmp r3, #1 - 8028cce: d104 bne.n 8028cda + 8028d06: 4b63 ldr r3, [pc, #396] ; (8028e94 ) + 8028d08: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 8028d0c: 2b01 cmp r3, #1 + 8028d0e: d104 bne.n 8028d1a { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028cd0: 495e ldr r1, [pc, #376] ; (8028e4c ) - 8028cd2: 485f ldr r0, [pc, #380] ; (8028e50 ) - 8028cd4: f000 fc10 bl 80294f8 + 8028d10: 495e ldr r1, [pc, #376] ; (8028e8c ) + 8028d12: 485f ldr r0, [pc, #380] ; (8028e90 ) + 8028d14: f000 fc10 bl 8029538 return;//安卓屏幕 模式选择错误 - 8028cd8: e0af b.n 8028e3a + 8028d18: e0af b.n 8028e7a } if (flag == 1) - 8028cda: 687b ldr r3, [r7, #4] - 8028cdc: 2b01 cmp r3, #1 - 8028cde: d108 bne.n 8028cf2 + 8028d1a: 687b ldr r3, [r7, #4] + 8028d1c: 2b01 cmp r3, #1 + 8028d1e: d108 bne.n 8028d32 { if (HorizontalLaneChangeState != Lane_Change_Start) - 8028ce0: 4b5d ldr r3, [pc, #372] ; (8028e58 ) - 8028ce2: 781b ldrb r3, [r3, #0] - 8028ce4: 2b01 cmp r3, #1 - 8028ce6: d004 beq.n 8028cf2 + 8028d20: 4b5d ldr r3, [pc, #372] ; (8028e98 ) + 8028d22: 781b ldrb r3, [r3, #0] + 8028d24: 2b01 cmp r3, #1 + 8028d26: d004 beq.n 8028d32 { fsm_state_set(¤t_robot_move_state, &robot_halt_state); - 8028ce8: 4958 ldr r1, [pc, #352] ; (8028e4c ) - 8028cea: 4859 ldr r0, [pc, #356] ; (8028e50 ) - 8028cec: f000 fc04 bl 80294f8 + 8028d28: 4958 ldr r1, [pc, #352] ; (8028e8c ) + 8028d2a: 4859 ldr r0, [pc, #356] ; (8028e90 ) + 8028d2c: f000 fc04 bl 8029538 return;//换道完 拨杆未复位 - 8028cf0: e0a3 b.n 8028e3a + 8028d30: e0a3 b.n 8028e7a } } height_storage = GV.PV.Height_Storage * 100; - 8028cf2: 4b58 ldr r3, [pc, #352] ; (8028e54 ) - 8028cf4: ed93 7b60 vldr d7, [r3, #384] ; 0x180 - 8028cf8: ed9f 6b51 vldr d6, [pc, #324] ; 8028e40 - 8028cfc: ee27 7b06 vmul.f64 d7, d7, d6 - 8028d00: eefc 7bc7 vcvt.u32.f64 s15, d7 - 8028d04: ee17 2a90 vmov r2, s15 - 8028d08: 4b54 ldr r3, [pc, #336] ; (8028e5c ) - 8028d0a: 601a str r2, [r3, #0] + 8028d32: 4b58 ldr r3, [pc, #352] ; (8028e94 ) + 8028d34: ed93 7b60 vldr d7, [r3, #384] ; 0x180 + 8028d38: ed9f 6b51 vldr d6, [pc, #324] ; 8028e80 + 8028d3c: ee27 7b06 vmul.f64 d7, d7, d6 + 8028d40: eefc 7bc7 vcvt.u32.f64 s15, d7 + 8028d44: ee17 2a90 vmov r2, s15 + 8028d48: 4b54 ldr r3, [pc, #336] ; (8028e9c ) + 8028d4a: 601a str r2, [r3, #0] float current_pos = height_storage - GV.Wire_lenth;//当前实时高度 - 8028d0c: 4b53 ldr r3, [pc, #332] ; (8028e5c ) - 8028d0e: 681a ldr r2, [r3, #0] - 8028d10: 4b50 ldr r3, [pc, #320] ; (8028e54 ) - 8028d12: f8d3 31fc ldr.w r3, [r3, #508] ; 0x1fc - 8028d16: 1ad3 subs r3, r2, r3 - 8028d18: ee07 3a90 vmov s15, r3 - 8028d1c: eef8 7a67 vcvt.f32.u32 s15, s15 - 8028d20: edc7 7a05 vstr s15, [r7, #20] + 8028d4c: 4b53 ldr r3, [pc, #332] ; (8028e9c ) + 8028d4e: 681a ldr r2, [r3, #0] + 8028d50: 4b50 ldr r3, [pc, #320] ; (8028e94 ) + 8028d52: f8d3 31fc ldr.w r3, [r3, #508] ; 0x1fc + 8028d56: 1ad3 subs r3, r2, r3 + 8028d58: ee07 3a90 vmov s15, r3 + 8028d5c: eef8 7a67 vcvt.f32.u32 s15, s15 + 8028d60: edc7 7a05 vstr s15, [r7, #20] if(flag == 1 && flag_ChangeLine_complete == 0)//手动拨杆换道时,上一个自动换道未完成 - 8028d24: 687b ldr r3, [r7, #4] - 8028d26: 2b01 cmp r3, #1 - 8028d28: d109 bne.n 8028d3e - 8028d2a: 4b4d ldr r3, [pc, #308] ; (8028e60 ) - 8028d2c: 781b ldrb r3, [r3, #0] - 8028d2e: 2b00 cmp r3, #0 - 8028d30: d105 bne.n 8028d3e + 8028d64: 687b ldr r3, [r7, #4] + 8028d66: 2b01 cmp r3, #1 + 8028d68: d109 bne.n 8028d7e + 8028d6a: 4b4d ldr r3, [pc, #308] ; (8028ea0 ) + 8028d6c: 781b ldrb r3, [r3, #0] + 8028d6e: 2b00 cmp r3, #0 + 8028d70: d105 bne.n 8028d7e { flag_ChangeLine_complete = 2; - 8028d32: 4b4b ldr r3, [pc, #300] ; (8028e60 ) - 8028d34: 2202 movs r2, #2 - 8028d36: 701a strb r2, [r3, #0] + 8028d72: 4b4b ldr r3, [pc, #300] ; (8028ea0 ) + 8028d74: 2202 movs r2, #2 + 8028d76: 701a strb r2, [r3, #0] current_level = current_pos; - 8028d38: 4a4a ldr r2, [pc, #296] ; (8028e64 ) - 8028d3a: 697b ldr r3, [r7, #20] - 8028d3c: 6013 str r3, [r2, #0] + 8028d78: 4a4a ldr r2, [pc, #296] ; (8028ea4 ) + 8028d7a: 697b ldr r3, [r7, #20] + 8028d7c: 6013 str r3, [r2, #0] } if(flag == 0 && flag_ChangeLine_complete == 2)//自动作业换道时,上一个手动拨杆换道未完成 - 8028d3e: 687b ldr r3, [r7, #4] - 8028d40: 2b00 cmp r3, #0 - 8028d42: d109 bne.n 8028d58 - 8028d44: 4b46 ldr r3, [pc, #280] ; (8028e60 ) - 8028d46: 781b ldrb r3, [r3, #0] - 8028d48: 2b02 cmp r3, #2 - 8028d4a: d105 bne.n 8028d58 + 8028d7e: 687b ldr r3, [r7, #4] + 8028d80: 2b00 cmp r3, #0 + 8028d82: d109 bne.n 8028d98 + 8028d84: 4b46 ldr r3, [pc, #280] ; (8028ea0 ) + 8028d86: 781b ldrb r3, [r3, #0] + 8028d88: 2b02 cmp r3, #2 + 8028d8a: d105 bne.n 8028d98 { flag_ChangeLine_complete = 0; - 8028d4c: 4b44 ldr r3, [pc, #272] ; (8028e60 ) - 8028d4e: 2200 movs r2, #0 - 8028d50: 701a strb r2, [r3, #0] + 8028d8c: 4b44 ldr r3, [pc, #272] ; (8028ea0 ) + 8028d8e: 2200 movs r2, #0 + 8028d90: 701a strb r2, [r3, #0] current_level = current_pos; - 8028d52: 4a44 ldr r2, [pc, #272] ; (8028e64 ) - 8028d54: 697b ldr r3, [r7, #20] - 8028d56: 6013 str r3, [r2, #0] + 8028d92: 4a44 ldr r2, [pc, #272] ; (8028ea4 ) + 8028d94: 697b ldr r3, [r7, #20] + 8028d96: 6013 str r3, [r2, #0] } if(flag_ChangeLine_complete == 1)//上一个换道完成 - 8028d58: 4b41 ldr r3, [pc, #260] ; (8028e60 ) - 8028d5a: 781b ldrb r3, [r3, #0] - 8028d5c: 2b01 cmp r3, #1 - 8028d5e: d105 bne.n 8028d6c + 8028d98: 4b41 ldr r3, [pc, #260] ; (8028ea0 ) + 8028d9a: 781b ldrb r3, [r3, #0] + 8028d9c: 2b01 cmp r3, #1 + 8028d9e: d105 bne.n 8028dac { flag_ChangeLine_complete = 0; - 8028d60: 4b3f ldr r3, [pc, #252] ; (8028e60 ) - 8028d62: 2200 movs r2, #0 - 8028d64: 701a strb r2, [r3, #0] + 8028da0: 4b3f ldr r3, [pc, #252] ; (8028ea0 ) + 8028da2: 2200 movs r2, #0 + 8028da4: 701a strb r2, [r3, #0] current_level = current_pos;//只记录一次,当前作业高度 - 8028d66: 4a3f ldr r2, [pc, #252] ; (8028e64 ) - 8028d68: 697b ldr r3, [r7, #20] - 8028d6a: 6013 str r3, [r2, #0] + 8028da6: 4a3f ldr r2, [pc, #252] ; (8028ea4 ) + 8028da8: 697b ldr r3, [r7, #20] + 8028daa: 6013 str r3, [r2, #0] } float Target_pos = current_level - GV.LaneChangeDistance;// 目标后退高度 - 8028d6c: 4b3d ldr r3, [pc, #244] ; (8028e64 ) - 8028d6e: ed93 7a00 vldr s14, [r3] - 8028d72: 4b38 ldr r3, [pc, #224] ; (8028e54 ) - 8028d74: 699b ldr r3, [r3, #24] - 8028d76: ee07 3a90 vmov s15, r3 - 8028d7a: eef8 7ae7 vcvt.f32.s32 s15, s15 - 8028d7e: ee77 7a67 vsub.f32 s15, s14, s15 - 8028d82: edc7 7a04 vstr s15, [r7, #16] + 8028dac: 4b3d ldr r3, [pc, #244] ; (8028ea4 ) + 8028dae: ed93 7a00 vldr s14, [r3] + 8028db2: 4b38 ldr r3, [pc, #224] ; (8028e94 ) + 8028db4: 699b ldr r3, [r3, #24] + 8028db6: ee07 3a90 vmov s15, r3 + 8028dba: eef8 7ae7 vcvt.f32.s32 s15, s15 + 8028dbe: ee77 7a67 vsub.f32 s15, s14, s15 + 8028dc2: edc7 7a04 vstr s15, [r7, #16] float delta_pos = current_pos - Target_pos; - 8028d86: ed97 7a05 vldr s14, [r7, #20] - 8028d8a: edd7 7a04 vldr s15, [r7, #16] - 8028d8e: ee77 7a67 vsub.f32 s15, s14, s15 - 8028d92: edc7 7a03 vstr s15, [r7, #12] + 8028dc6: ed97 7a05 vldr s14, [r7, #20] + 8028dca: edd7 7a04 vldr s15, [r7, #16] + 8028dce: ee77 7a67 vsub.f32 s15, s14, s15 + 8028dd2: edc7 7a03 vstr s15, [r7, #12] if(delta_pos > 5)//1.大差距,先调整方向再后退 - 8028d96: edd7 7a03 vldr s15, [r7, #12] - 8028d9a: eeb1 7a04 vmov.f32 s14, #20 ; 0x40a00000 5.0 - 8028d9e: eef4 7ac7 vcmpe.f32 s15, s14 - 8028da2: eef1 fa10 vmrs APSR_nzcv, fpscr - 8028da6: dd04 ble.n 8028db2 + 8028dd6: edd7 7a03 vldr s15, [r7, #12] + 8028dda: eeb1 7a04 vmov.f32 s14, #20 ; 0x40a00000 5.0 + 8028dde: eef4 7ac7 vcmpe.f32 s15, s14 + 8028de2: eef1 fa10 vmrs APSR_nzcv, fpscr + 8028de6: dd04 ble.n 8028df2 { Auto_steer_moveback_do(0); - 8028da8: ed9f 0a2f vldr s0, [pc, #188] ; 8028e68 - 8028dac: f000 f900 bl 8028fb0 - 8028db0: e043 b.n 8028e3a + 8028de8: ed9f 0a2f vldr s0, [pc, #188] ; 8028ea8 + 8028dec: f000 f900 bl 8028ff0 + 8028df0: e043 b.n 8028e7a } else if(delta_pos > 2 && delta_pos <= 5)//2.慢速后退 - 8028db2: edd7 7a03 vldr s15, [r7, #12] - 8028db6: eeb0 7a00 vmov.f32 s14, #0 ; 0x40000000 2.0 - 8028dba: eef4 7ac7 vcmpe.f32 s15, s14 - 8028dbe: eef1 fa10 vmrs APSR_nzcv, fpscr - 8028dc2: dd24 ble.n 8028e0e - 8028dc4: edd7 7a03 vldr s15, [r7, #12] - 8028dc8: eeb1 7a04 vmov.f32 s14, #20 ; 0x40a00000 5.0 - 8028dcc: eef4 7ac7 vcmpe.f32 s15, s14 - 8028dd0: eef1 fa10 vmrs APSR_nzcv, fpscr - 8028dd4: d81b bhi.n 8028e0e + 8028df2: edd7 7a03 vldr s15, [r7, #12] + 8028df6: eeb0 7a00 vmov.f32 s14, #0 ; 0x40000000 2.0 + 8028dfa: eef4 7ac7 vcmpe.f32 s15, s14 + 8028dfe: eef1 fa10 vmrs APSR_nzcv, fpscr + 8028e02: dd24 ble.n 8028e4e + 8028e04: edd7 7a03 vldr s15, [r7, #12] + 8028e08: eeb1 7a04 vmov.f32 s14, #20 ; 0x40a00000 5.0 + 8028e0c: eef4 7ac7 vcmpe.f32 s15, s14 + 8028e10: eef1 fa10 vmrs APSR_nzcv, fpscr + 8028e14: d81b bhi.n 8028e4e { GV.LeftMotor.Target_Velcity = -GV.Robot_Move_Speed/2 ; - 8028dd6: 4b1f ldr r3, [pc, #124] ; (8028e54 ) - 8028dd8: 691b ldr r3, [r3, #16] - 8028dda: 425b negs r3, r3 - 8028ddc: 2b00 cmp r3, #0 - 8028dde: da00 bge.n 8028de2 - 8028de0: 3301 adds r3, #1 - 8028de2: 105b asrs r3, r3, #1 - 8028de4: ee07 3a90 vmov s15, r3 - 8028de8: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8028dec: 4b19 ldr r3, [pc, #100] ; (8028e54 ) - 8028dee: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 8028e16: 4b1f ldr r3, [pc, #124] ; (8028e94 ) + 8028e18: 691b ldr r3, [r3, #16] + 8028e1a: 425b negs r3, r3 + 8028e1c: 2b00 cmp r3, #0 + 8028e1e: da00 bge.n 8028e22 + 8028e20: 3301 adds r3, #1 + 8028e22: 105b asrs r3, r3, #1 + 8028e24: ee07 3a90 vmov s15, r3 + 8028e28: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8028e2c: 4b19 ldr r3, [pc, #100] ; (8028e94 ) + 8028e2e: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = GV.Robot_Move_Speed/2 ; - 8028df2: 4b18 ldr r3, [pc, #96] ; (8028e54 ) - 8028df4: 691b ldr r3, [r3, #16] - 8028df6: 2b00 cmp r3, #0 - 8028df8: da00 bge.n 8028dfc - 8028dfa: 3301 adds r3, #1 - 8028dfc: 105b asrs r3, r3, #1 - 8028dfe: ee07 3a90 vmov s15, r3 - 8028e02: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8028e06: 4b13 ldr r3, [pc, #76] ; (8028e54 ) - 8028e08: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 - 8028e0c: e015 b.n 8028e3a + 8028e32: 4b18 ldr r3, [pc, #96] ; (8028e94 ) + 8028e34: 691b ldr r3, [r3, #16] + 8028e36: 2b00 cmp r3, #0 + 8028e38: da00 bge.n 8028e3c + 8028e3a: 3301 adds r3, #1 + 8028e3c: 105b asrs r3, r3, #1 + 8028e3e: ee07 3a90 vmov s15, r3 + 8028e42: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8028e46: 4b13 ldr r3, [pc, #76] ; (8028e94 ) + 8028e48: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 8028e4c: e015 b.n 8028e7a } else//3.调整方向 { static uint32_t timeout_count = 0; if( Auto_steer_do(-90) == 1 ) - 8028e0e: ed9f 0a17 vldr s0, [pc, #92] ; 8028e6c - 8028e12: f000 f96b bl 80290ec - 8028e16: 4603 mov r3, r0 - 8028e18: 2b01 cmp r3, #1 - 8028e1a: d10e bne.n 8028e3a + 8028e4e: ed9f 0a17 vldr s0, [pc, #92] ; 8028eac + 8028e52: f000 f96b bl 802912c + 8028e56: 4603 mov r3, r0 + 8028e58: 2b01 cmp r3, #1 + 8028e5a: d10e bne.n 8028e7a { if(flag == 1) - 8028e1c: 687b ldr r3, [r7, #4] - 8028e1e: 2b01 cmp r3, #1 - 8028e20: d102 bne.n 8028e28 + 8028e5c: 687b ldr r3, [r7, #4] + 8028e5e: 2b01 cmp r3, #1 + 8028e60: d102 bne.n 8028e68 { HorizontalLaneChangeState = Lane_Change_Stop; - 8028e22: 4b0d ldr r3, [pc, #52] ; (8028e58 ) - 8028e24: 2200 movs r2, #0 - 8028e26: 701a strb r2, [r3, #0] + 8028e62: 4b0d ldr r3, [pc, #52] ; (8028e98 ) + 8028e64: 2200 movs r2, #0 + 8028e66: 701a strb r2, [r3, #0] } count_DDM = 0; - 8028e28: 4b11 ldr r3, [pc, #68] ; (8028e70 ) - 8028e2a: 2200 movs r2, #0 - 8028e2c: 701a strb r2, [r3, #0] + 8028e68: 4b11 ldr r3, [pc, #68] ; (8028eb0 ) + 8028e6a: 2200 movs r2, #0 + 8028e6c: 701a strb r2, [r3, #0] flag_ChangeLine_complete = 1; - 8028e2e: 4b0c ldr r3, [pc, #48] ; (8028e60 ) - 8028e30: 2201 movs r2, #1 - 8028e32: 701a strb r2, [r3, #0] + 8028e6e: 4b0c ldr r3, [pc, #48] ; (8028ea0 ) + 8028e70: 2201 movs r2, #1 + 8028e72: 701a strb r2, [r3, #0] timeout_count = 0; - 8028e34: 4b0f ldr r3, [pc, #60] ; (8028e74 ) - 8028e36: 2200 movs r2, #0 - 8028e38: 601a str r2, [r3, #0] + 8028e74: 4b0f ldr r3, [pc, #60] ; (8028eb4 ) + 8028e76: 2200 movs r2, #0 + 8028e78: 601a str r2, [r3, #0] // count_DDM = 0; // flag_ChangeLine_complete = 1; // timeout_count = 0; // } } } - 8028e3a: 3718 adds r7, #24 - 8028e3c: 46bd mov sp, r7 - 8028e3e: bd80 pop {r7, pc} - 8028e40: 00000000 .word 0x00000000 - 8028e44: 40590000 .word 0x40590000 - 8028e48: 240001d0 .word 0x240001d0 - 8028e4c: 24000068 .word 0x24000068 - 8028e50: 2400aedc .word 0x2400aedc - 8028e54: 240002b0 .word 0x240002b0 - 8028e58: 2400aec0 .word 0x2400aec0 - 8028e5c: 2400aeb4 .word 0x2400aeb4 - 8028e60: 24000037 .word 0x24000037 - 8028e64: 2400aebc .word 0x2400aebc - 8028e68: 00000000 .word 0x00000000 - 8028e6c: c2b40000 .word 0xc2b40000 - 8028e70: 2400aeba .word 0x2400aeba - 8028e74: 2400aec4 .word 0x2400aec4 - -08028e78 : + 8028e7a: 3718 adds r7, #24 + 8028e7c: 46bd mov sp, r7 + 8028e7e: bd80 pop {r7, pc} + 8028e80: 00000000 .word 0x00000000 + 8028e84: 40590000 .word 0x40590000 + 8028e88: 240001d0 .word 0x240001d0 + 8028e8c: 24000068 .word 0x24000068 + 8028e90: 2400aedc .word 0x2400aedc + 8028e94: 240002b0 .word 0x240002b0 + 8028e98: 2400aec0 .word 0x2400aec0 + 8028e9c: 2400aeb4 .word 0x2400aeb4 + 8028ea0: 24000037 .word 0x24000037 + 8028ea4: 2400aebc .word 0x2400aebc + 8028ea8: 00000000 .word 0x00000000 + 8028eac: c2b40000 .word 0xc2b40000 + 8028eb0: 2400aeba .word 0x2400aeba + 8028eb4: 2400aec4 .word 0x2400aec4 + +08028eb8 : //先原地转向,再前进// 目标角度 1° void Auto_steer_moveforward_do(float TargetAngle)//1° { - 8028e78: b580 push {r7, lr} - 8028e7a: b088 sub sp, #32 - 8028e7c: af00 add r7, sp, #0 - 8028e7e: ed87 0a01 vstr s0, [r7, #4] + 8028eb8: b580 push {r7, lr} + 8028eba: b088 sub sp, #32 + 8028ebc: af00 add r7, sp, #0 + 8028ebe: ed87 0a01 vstr s0, [r7, #4] float Target_Angle = TargetAngle * 100;//0.01° - 8028e82: edd7 7a01 vldr s15, [r7, #4] - 8028e86: ed9f 7a46 vldr s14, [pc, #280] ; 8028fa0 - 8028e8a: ee67 7a87 vmul.f32 s15, s15, s14 - 8028e8e: edc7 7a07 vstr s15, [r7, #28] + 8028ec2: edd7 7a01 vldr s15, [r7, #4] + 8028ec6: ed9f 7a46 vldr s14, [pc, #280] ; 8028fe0 + 8028eca: ee67 7a87 vmul.f32 s15, s15, s14 + 8028ece: edc7 7a07 vstr s15, [r7, #28] float current_Angle = GV.Robot_Angle; - 8028e92: 4b44 ldr r3, [pc, #272] ; (8028fa4 ) - 8028e94: 68db ldr r3, [r3, #12] - 8028e96: ee07 3a90 vmov s15, r3 - 8028e9a: eef8 7ae7 vcvt.f32.s32 s15, s15 - 8028e9e: edc7 7a06 vstr s15, [r7, #24] + 8028ed2: 4b44 ldr r3, [pc, #272] ; (8028fe4 ) + 8028ed4: 68db ldr r3, [r3, #12] + 8028ed6: ee07 3a90 vmov s15, r3 + 8028eda: eef8 7ae7 vcvt.f32.s32 s15, s15 + 8028ede: edc7 7a06 vstr s15, [r7, #24] float delta_Angle = current_Angle - Target_Angle; - 8028ea2: ed97 7a06 vldr s14, [r7, #24] - 8028ea6: edd7 7a07 vldr s15, [r7, #28] - 8028eaa: ee77 7a67 vsub.f32 s15, s14, s15 - 8028eae: edc7 7a05 vstr s15, [r7, #20] + 8028ee2: ed97 7a06 vldr s14, [r7, #24] + 8028ee6: edd7 7a07 vldr s15, [r7, #28] + 8028eea: ee77 7a67 vsub.f32 s15, s14, s15 + 8028eee: edc7 7a05 vstr s15, [r7, #20] double dletSpeed = Angle_Tune_PID( current_Angle, Target_Angle, 0.01, 0, 0.01, 2); - 8028eb2: edd7 7a06 vldr s15, [r7, #24] - 8028eb6: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 8028eba: edd7 6a07 vldr s13, [r7, #28] - 8028ebe: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8028ec2: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 8028ec6: ed9f 4b32 vldr d4, [pc, #200] ; 8028f90 - 8028eca: ed9f 3b33 vldr d3, [pc, #204] ; 8028f98 - 8028ece: ed9f 2b30 vldr d2, [pc, #192] ; 8028f90 - 8028ed2: eeb0 1b46 vmov.f64 d1, d6 - 8028ed6: eeb0 0b47 vmov.f64 d0, d7 - 8028eda: f7fe fff9 bl 8027ed0 - 8028ede: ed87 0b02 vstr d0, [r7, #8] + 8028ef2: edd7 7a06 vldr s15, [r7, #24] + 8028ef6: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 8028efa: edd7 6a07 vldr s13, [r7, #28] + 8028efe: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8028f02: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 8028f06: ed9f 4b32 vldr d4, [pc, #200] ; 8028fd0 + 8028f0a: ed9f 3b33 vldr d3, [pc, #204] ; 8028fd8 + 8028f0e: ed9f 2b30 vldr d2, [pc, #192] ; 8028fd0 + 8028f12: eeb0 1b46 vmov.f64 d1, d6 + 8028f16: eeb0 0b47 vmov.f64 d0, d7 + 8028f1a: f7fe ffe9 bl 8027ef0 + 8028f1e: ed87 0b02 vstr d0, [r7, #8] if(abs(delta_Angle) > 2*100) - 8028ee2: edd7 7a05 vldr s15, [r7, #20] - 8028ee6: eefd 7ae7 vcvt.s32.f32 s15, s15 - 8028eea: ee17 3a90 vmov r3, s15 - 8028eee: 2b00 cmp r3, #0 - 8028ef0: bfb8 it lt - 8028ef2: 425b neglt r3, r3 - 8028ef4: 2bc8 cmp r3, #200 ; 0xc8 - 8028ef6: dd28 ble.n 8028f4a + 8028f22: edd7 7a05 vldr s15, [r7, #20] + 8028f26: eefd 7ae7 vcvt.s32.f32 s15, s15 + 8028f2a: ee17 3a90 vmov r3, s15 + 8028f2e: 2b00 cmp r3, #0 + 8028f30: bfb8 it lt + 8028f32: 425b neglt r3, r3 + 8028f34: 2bc8 cmp r3, #200 ; 0xc8 + 8028f36: dd28 ble.n 8028f8a { //double copysign(double x, double y); //结果具有x绝对值大小和y的符号 GV.LeftMotor.Target_Velcity = -1*copysign(CV.LeftTurnSpeed, delta_Angle); - 8028ef8: 4b2b ldr r3, [pc, #172] ; (8028fa8 ) - 8028efa: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 8028efe: edd7 6a05 vldr s13, [r7, #20] - 8028f02: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8028f06: eeb0 1b46 vmov.f64 d1, d6 - 8028f0a: eeb0 0b47 vmov.f64 d0, d7 - 8028f0e: f01f f89f bl 8048050 - 8028f12: eeb0 7b40 vmov.f64 d7, d0 - 8028f16: eeb1 7b47 vneg.f64 d7, d7 - 8028f1a: 4b22 ldr r3, [pc, #136] ; (8028fa4 ) - 8028f1c: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 8028f38: 4b2b ldr r3, [pc, #172] ; (8028fe8 ) + 8028f3a: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 8028f3e: edd7 6a05 vldr s13, [r7, #20] + 8028f42: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8028f46: eeb0 1b46 vmov.f64 d1, d6 + 8028f4a: eeb0 0b47 vmov.f64 d0, d7 + 8028f4e: f01f f89f bl 8048090 + 8028f52: eeb0 7b40 vmov.f64 d7, d0 + 8028f56: eeb1 7b47 vneg.f64 d7, d7 + 8028f5a: 4b22 ldr r3, [pc, #136] ; (8028fe4 ) + 8028f5c: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -1*copysign(CV.RightTurnSpeed, delta_Angle); - 8028f20: 4b21 ldr r3, [pc, #132] ; (8028fa8 ) - 8028f22: ed93 7b20 vldr d7, [r3, #128] ; 0x80 - 8028f26: edd7 6a05 vldr s13, [r7, #20] - 8028f2a: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8028f2e: eeb0 1b46 vmov.f64 d1, d6 - 8028f32: eeb0 0b47 vmov.f64 d0, d7 - 8028f36: f01f f88b bl 8048050 - 8028f3a: eeb0 7b40 vmov.f64 d7, d0 - 8028f3e: eeb1 7b47 vneg.f64 d7, d7 - 8028f42: 4b18 ldr r3, [pc, #96] ; (8028fa4 ) - 8028f44: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 8028f60: 4b21 ldr r3, [pc, #132] ; (8028fe8 ) + 8028f62: ed93 7b20 vldr d7, [r3, #128] ; 0x80 + 8028f66: edd7 6a05 vldr s13, [r7, #20] + 8028f6a: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8028f6e: eeb0 1b46 vmov.f64 d1, d6 + 8028f72: eeb0 0b47 vmov.f64 d0, d7 + 8028f76: f01f f88b bl 8048090 + 8028f7a: eeb0 7b40 vmov.f64 d7, d0 + 8028f7e: eeb1 7b47 vneg.f64 d7, d7 + 8028f82: 4b18 ldr r3, [pc, #96] ; (8028fe4 ) + 8028f84: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 { GV.LeftMotor.Target_Velcity = (GV.Robot_Move_Speed - dletSpeed*1); GV.RightMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletSpeed*1); } } - 8028f48: e01b b.n 8028f82 + 8028f88: e01b b.n 8028fc2 GV.LeftMotor.Target_Velcity = (GV.Robot_Move_Speed - dletSpeed*1); - 8028f4a: 4b16 ldr r3, [pc, #88] ; (8028fa4 ) - 8028f4c: 691b ldr r3, [r3, #16] - 8028f4e: ee07 3a90 vmov s15, r3 - 8028f52: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8028f56: ed97 7b02 vldr d7, [r7, #8] - 8028f5a: ee36 7b47 vsub.f64 d7, d6, d7 - 8028f5e: 4b11 ldr r3, [pc, #68] ; (8028fa4 ) - 8028f60: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 8028f8a: 4b16 ldr r3, [pc, #88] ; (8028fe4 ) + 8028f8c: 691b ldr r3, [r3, #16] + 8028f8e: ee07 3a90 vmov s15, r3 + 8028f92: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8028f96: ed97 7b02 vldr d7, [r7, #8] + 8028f9a: ee36 7b47 vsub.f64 d7, d6, d7 + 8028f9e: 4b11 ldr r3, [pc, #68] ; (8028fe4 ) + 8028fa0: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletSpeed*1); - 8028f64: 4b0f ldr r3, [pc, #60] ; (8028fa4 ) - 8028f66: 691b ldr r3, [r3, #16] - 8028f68: ee07 3a90 vmov s15, r3 - 8028f6c: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8028f70: ed97 7b02 vldr d7, [r7, #8] - 8028f74: ee36 7b07 vadd.f64 d7, d6, d7 - 8028f78: eeb1 7b47 vneg.f64 d7, d7 - 8028f7c: 4b09 ldr r3, [pc, #36] ; (8028fa4 ) - 8028f7e: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 -} - 8028f82: bf00 nop - 8028f84: 3720 adds r7, #32 - 8028f86: 46bd mov sp, r7 - 8028f88: bd80 pop {r7, pc} - 8028f8a: bf00 nop - 8028f8c: f3af 8000 nop.w - 8028f90: 47ae147b .word 0x47ae147b - 8028f94: 3f847ae1 .word 0x3f847ae1 + 8028fa4: 4b0f ldr r3, [pc, #60] ; (8028fe4 ) + 8028fa6: 691b ldr r3, [r3, #16] + 8028fa8: ee07 3a90 vmov s15, r3 + 8028fac: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8028fb0: ed97 7b02 vldr d7, [r7, #8] + 8028fb4: ee36 7b07 vadd.f64 d7, d6, d7 + 8028fb8: eeb1 7b47 vneg.f64 d7, d7 + 8028fbc: 4b09 ldr r3, [pc, #36] ; (8028fe4 ) + 8028fbe: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 +} + 8028fc2: bf00 nop + 8028fc4: 3720 adds r7, #32 + 8028fc6: 46bd mov sp, r7 + 8028fc8: bd80 pop {r7, pc} + 8028fca: bf00 nop + 8028fcc: f3af 8000 nop.w + 8028fd0: 47ae147b .word 0x47ae147b + 8028fd4: 3f847ae1 .word 0x3f847ae1 ... - 8028fa0: 42c80000 .word 0x42c80000 - 8028fa4: 240002b0 .word 0x240002b0 - 8028fa8: 240001d8 .word 0x240001d8 - 8028fac: 00000000 .word 0x00000000 + 8028fe0: 42c80000 .word 0x42c80000 + 8028fe4: 240002b0 .word 0x240002b0 + 8028fe8: 240001d8 .word 0x240001d8 + 8028fec: 00000000 .word 0x00000000 -08028fb0 : +08028ff0 : //先原地转向,再后退// 目标角度 1° void Auto_steer_moveback_do(float TargetAngle)//1° { - 8028fb0: b580 push {r7, lr} - 8028fb2: b088 sub sp, #32 - 8028fb4: af00 add r7, sp, #0 - 8028fb6: ed87 0a01 vstr s0, [r7, #4] + 8028ff0: b580 push {r7, lr} + 8028ff2: b088 sub sp, #32 + 8028ff4: af00 add r7, sp, #0 + 8028ff6: ed87 0a01 vstr s0, [r7, #4] float Target_Angle = TargetAngle *100;//0.01° - 8028fba: edd7 7a01 vldr s15, [r7, #4] - 8028fbe: ed9f 7a48 vldr s14, [pc, #288] ; 80290e0 - 8028fc2: ee67 7a87 vmul.f32 s15, s15, s14 - 8028fc6: edc7 7a07 vstr s15, [r7, #28] + 8028ffa: edd7 7a01 vldr s15, [r7, #4] + 8028ffe: ed9f 7a48 vldr s14, [pc, #288] ; 8029120 + 8029002: ee67 7a87 vmul.f32 s15, s15, s14 + 8029006: edc7 7a07 vstr s15, [r7, #28] float current_Angle = GV.Robot_Angle; - 8028fca: 4b46 ldr r3, [pc, #280] ; (80290e4 ) - 8028fcc: 68db ldr r3, [r3, #12] - 8028fce: ee07 3a90 vmov s15, r3 - 8028fd2: eef8 7ae7 vcvt.f32.s32 s15, s15 - 8028fd6: edc7 7a06 vstr s15, [r7, #24] + 802900a: 4b46 ldr r3, [pc, #280] ; (8029124 ) + 802900c: 68db ldr r3, [r3, #12] + 802900e: ee07 3a90 vmov s15, r3 + 8029012: eef8 7ae7 vcvt.f32.s32 s15, s15 + 8029016: edc7 7a06 vstr s15, [r7, #24] float delta_Angle = current_Angle - Target_Angle; - 8028fda: ed97 7a06 vldr s14, [r7, #24] - 8028fde: edd7 7a07 vldr s15, [r7, #28] - 8028fe2: ee77 7a67 vsub.f32 s15, s14, s15 - 8028fe6: edc7 7a05 vstr s15, [r7, #20] + 802901a: ed97 7a06 vldr s14, [r7, #24] + 802901e: edd7 7a07 vldr s15, [r7, #28] + 8029022: ee77 7a67 vsub.f32 s15, s14, s15 + 8029026: edc7 7a05 vstr s15, [r7, #20] double dletSpeed = Angle_Tune_PID( current_Angle, Target_Angle, 0.02, 0, 0.01, 2); - 8028fea: edd7 7a06 vldr s15, [r7, #24] - 8028fee: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 8028ff2: edd7 6a07 vldr s13, [r7, #28] - 8028ff6: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8028ffa: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 8028ffe: ed9f 4b32 vldr d4, [pc, #200] ; 80290c8 - 8029002: ed9f 3b33 vldr d3, [pc, #204] ; 80290d0 - 8029006: ed9f 2b34 vldr d2, [pc, #208] ; 80290d8 - 802900a: eeb0 1b46 vmov.f64 d1, d6 - 802900e: eeb0 0b47 vmov.f64 d0, d7 - 8029012: f7fe ff5d bl 8027ed0 - 8029016: ed87 0b02 vstr d0, [r7, #8] + 802902a: edd7 7a06 vldr s15, [r7, #24] + 802902e: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 8029032: edd7 6a07 vldr s13, [r7, #28] + 8029036: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 802903a: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 802903e: ed9f 4b32 vldr d4, [pc, #200] ; 8029108 + 8029042: ed9f 3b33 vldr d3, [pc, #204] ; 8029110 + 8029046: ed9f 2b34 vldr d2, [pc, #208] ; 8029118 + 802904a: eeb0 1b46 vmov.f64 d1, d6 + 802904e: eeb0 0b47 vmov.f64 d0, d7 + 8029052: f7fe ff4d bl 8027ef0 + 8029056: ed87 0b02 vstr d0, [r7, #8] if(abs(delta_Angle) > 5*100) - 802901a: edd7 7a05 vldr s15, [r7, #20] - 802901e: eefd 7ae7 vcvt.s32.f32 s15, s15 - 8029022: ee17 3a90 vmov r3, s15 - 8029026: 2b00 cmp r3, #0 - 8029028: bfb8 it lt - 802902a: 425b neglt r3, r3 - 802902c: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 - 8029030: dd28 ble.n 8029084 + 802905a: edd7 7a05 vldr s15, [r7, #20] + 802905e: eefd 7ae7 vcvt.s32.f32 s15, s15 + 8029062: ee17 3a90 vmov r3, s15 + 8029066: 2b00 cmp r3, #0 + 8029068: bfb8 it lt + 802906a: 425b neglt r3, r3 + 802906c: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 + 8029070: dd28 ble.n 80290c4 { //double copysign(double x, double y); //结果具有x绝对值大小和y的符号 GV.LeftMotor.Target_Velcity = -1*copysign(CV.LeftTurnSpeed, delta_Angle); - 8029032: 4b2d ldr r3, [pc, #180] ; (80290e8 ) - 8029034: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 8029038: edd7 6a05 vldr s13, [r7, #20] - 802903c: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8029040: eeb0 1b46 vmov.f64 d1, d6 - 8029044: eeb0 0b47 vmov.f64 d0, d7 - 8029048: f01f f802 bl 8048050 - 802904c: eeb0 7b40 vmov.f64 d7, d0 - 8029050: eeb1 7b47 vneg.f64 d7, d7 - 8029054: 4b23 ldr r3, [pc, #140] ; (80290e4 ) - 8029056: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 8029072: 4b2d ldr r3, [pc, #180] ; (8029128 ) + 8029074: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 8029078: edd7 6a05 vldr s13, [r7, #20] + 802907c: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8029080: eeb0 1b46 vmov.f64 d1, d6 + 8029084: eeb0 0b47 vmov.f64 d0, d7 + 8029088: f01f f802 bl 8048090 + 802908c: eeb0 7b40 vmov.f64 d7, d0 + 8029090: eeb1 7b47 vneg.f64 d7, d7 + 8029094: 4b23 ldr r3, [pc, #140] ; (8029124 ) + 8029096: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -1*copysign(CV.RightTurnSpeed, delta_Angle); - 802905a: 4b23 ldr r3, [pc, #140] ; (80290e8 ) - 802905c: ed93 7b20 vldr d7, [r3, #128] ; 0x80 - 8029060: edd7 6a05 vldr s13, [r7, #20] - 8029064: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8029068: eeb0 1b46 vmov.f64 d1, d6 - 802906c: eeb0 0b47 vmov.f64 d0, d7 - 8029070: f01e ffee bl 8048050 - 8029074: eeb0 7b40 vmov.f64 d7, d0 - 8029078: eeb1 7b47 vneg.f64 d7, d7 - 802907c: 4b19 ldr r3, [pc, #100] ; (80290e4 ) - 802907e: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 802909a: 4b23 ldr r3, [pc, #140] ; (8029128 ) + 802909c: ed93 7b20 vldr d7, [r3, #128] ; 0x80 + 80290a0: edd7 6a05 vldr s13, [r7, #20] + 80290a4: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 80290a8: eeb0 1b46 vmov.f64 d1, d6 + 80290ac: eeb0 0b47 vmov.f64 d0, d7 + 80290b0: f01e ffee bl 8048090 + 80290b4: eeb0 7b40 vmov.f64 d7, d0 + 80290b8: eeb1 7b47 vneg.f64 d7, d7 + 80290bc: 4b19 ldr r3, [pc, #100] ; (8029124 ) + 80290be: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 { GV.LeftMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletSpeed*1); GV.RightMotor.Target_Velcity = GV.Robot_Move_Speed - dletSpeed*1; } } - 8029082: e01b b.n 80290bc + 80290c2: e01b b.n 80290fc GV.LeftMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletSpeed*1); - 8029084: 4b17 ldr r3, [pc, #92] ; (80290e4 ) - 8029086: 691b ldr r3, [r3, #16] - 8029088: ee07 3a90 vmov s15, r3 - 802908c: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029090: ed97 7b02 vldr d7, [r7, #8] - 8029094: ee36 7b07 vadd.f64 d7, d6, d7 - 8029098: eeb1 7b47 vneg.f64 d7, d7 - 802909c: 4b11 ldr r3, [pc, #68] ; (80290e4 ) - 802909e: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 80290c4: 4b17 ldr r3, [pc, #92] ; (8029124 ) + 80290c6: 691b ldr r3, [r3, #16] + 80290c8: ee07 3a90 vmov s15, r3 + 80290cc: eeb8 6be7 vcvt.f64.s32 d6, s15 + 80290d0: ed97 7b02 vldr d7, [r7, #8] + 80290d4: ee36 7b07 vadd.f64 d7, d6, d7 + 80290d8: eeb1 7b47 vneg.f64 d7, d7 + 80290dc: 4b11 ldr r3, [pc, #68] ; (8029124 ) + 80290de: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = GV.Robot_Move_Speed - dletSpeed*1; - 80290a2: 4b10 ldr r3, [pc, #64] ; (80290e4 ) - 80290a4: 691b ldr r3, [r3, #16] - 80290a6: ee07 3a90 vmov s15, r3 - 80290aa: eeb8 6be7 vcvt.f64.s32 d6, s15 - 80290ae: ed97 7b02 vldr d7, [r7, #8] - 80290b2: ee36 7b47 vsub.f64 d7, d6, d7 - 80290b6: 4b0b ldr r3, [pc, #44] ; (80290e4 ) - 80290b8: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 -} - 80290bc: bf00 nop - 80290be: 3720 adds r7, #32 - 80290c0: 46bd mov sp, r7 - 80290c2: bd80 pop {r7, pc} - 80290c4: f3af 8000 nop.w - 80290c8: 47ae147b .word 0x47ae147b - 80290cc: 3f847ae1 .word 0x3f847ae1 + 80290e2: 4b10 ldr r3, [pc, #64] ; (8029124 ) + 80290e4: 691b ldr r3, [r3, #16] + 80290e6: ee07 3a90 vmov s15, r3 + 80290ea: eeb8 6be7 vcvt.f64.s32 d6, s15 + 80290ee: ed97 7b02 vldr d7, [r7, #8] + 80290f2: ee36 7b47 vsub.f64 d7, d6, d7 + 80290f6: 4b0b ldr r3, [pc, #44] ; (8029124 ) + 80290f8: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 +} + 80290fc: bf00 nop + 80290fe: 3720 adds r7, #32 + 8029100: 46bd mov sp, r7 + 8029102: bd80 pop {r7, pc} + 8029104: f3af 8000 nop.w + 8029108: 47ae147b .word 0x47ae147b + 802910c: 3f847ae1 .word 0x3f847ae1 ... - 80290d8: 47ae147b .word 0x47ae147b - 80290dc: 3f947ae1 .word 0x3f947ae1 - 80290e0: 42c80000 .word 0x42c80000 - 80290e4: 240002b0 .word 0x240002b0 - 80290e8: 240001d8 .word 0x240001d8 + 8029118: 47ae147b .word 0x47ae147b + 802911c: 3f947ae1 .word 0x3f947ae1 + 8029120: 42c80000 .word 0x42c80000 + 8029124: 240002b0 .word 0x240002b0 + 8029128: 240001d8 .word 0x240001d8 -080290ec : +0802912c : //原地转向// 目标角度 1° static int Auto_steer_do(float TargetAngle)//1° { - 80290ec: b580 push {r7, lr} - 80290ee: b086 sub sp, #24 - 80290f0: af00 add r7, sp, #0 - 80290f2: ed87 0a01 vstr s0, [r7, #4] + 802912c: b580 push {r7, lr} + 802912e: b086 sub sp, #24 + 8029130: af00 add r7, sp, #0 + 8029132: ed87 0a01 vstr s0, [r7, #4] float Target_Angle = TargetAngle *100; - 80290f6: edd7 7a01 vldr s15, [r7, #4] - 80290fa: ed9f 7a4e vldr s14, [pc, #312] ; 8029234 - 80290fe: ee67 7a87 vmul.f32 s15, s15, s14 - 8029102: edc7 7a05 vstr s15, [r7, #20] + 8029136: edd7 7a01 vldr s15, [r7, #4] + 802913a: ed9f 7a4e vldr s14, [pc, #312] ; 8029274 + 802913e: ee67 7a87 vmul.f32 s15, s15, s14 + 8029142: edc7 7a05 vstr s15, [r7, #20] float current_Angle = GV.Robot_Angle; - 8029106: 4b4c ldr r3, [pc, #304] ; (8029238 ) - 8029108: 68db ldr r3, [r3, #12] - 802910a: ee07 3a90 vmov s15, r3 - 802910e: eef8 7ae7 vcvt.f32.s32 s15, s15 - 8029112: edc7 7a04 vstr s15, [r7, #16] + 8029146: 4b4c ldr r3, [pc, #304] ; (8029278 ) + 8029148: 68db ldr r3, [r3, #12] + 802914a: ee07 3a90 vmov s15, r3 + 802914e: eef8 7ae7 vcvt.f32.s32 s15, s15 + 8029152: edc7 7a04 vstr s15, [r7, #16] float delta_Angle = current_Angle - Target_Angle; - 8029116: ed97 7a04 vldr s14, [r7, #16] - 802911a: edd7 7a05 vldr s15, [r7, #20] - 802911e: ee77 7a67 vsub.f32 s15, s14, s15 - 8029122: edc7 7a03 vstr s15, [r7, #12] + 8029156: ed97 7a04 vldr s14, [r7, #16] + 802915a: edd7 7a05 vldr s15, [r7, #20] + 802915e: ee77 7a67 vsub.f32 s15, s14, s15 + 8029162: edc7 7a03 vstr s15, [r7, #12] if(abs(delta_Angle) > 10*100) //大角度快速转 - 8029126: edd7 7a03 vldr s15, [r7, #12] - 802912a: eefd 7ae7 vcvt.s32.f32 s15, s15 - 802912e: ee17 3a90 vmov r3, s15 - 8029132: 2b00 cmp r3, #0 - 8029134: bfb8 it lt - 8029136: 425b neglt r3, r3 - 8029138: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 802913c: dd28 ble.n 8029190 + 8029166: edd7 7a03 vldr s15, [r7, #12] + 802916a: eefd 7ae7 vcvt.s32.f32 s15, s15 + 802916e: ee17 3a90 vmov r3, s15 + 8029172: 2b00 cmp r3, #0 + 8029174: bfb8 it lt + 8029176: 425b neglt r3, r3 + 8029178: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 802917c: dd28 ble.n 80291d0 { //double copysign(double x, double y); //结果具有x绝对值大小和y的符号 GV.LeftMotor.Target_Velcity = -1*copysign(CV.LeftTurnSpeed, delta_Angle); - 802913e: 4b3f ldr r3, [pc, #252] ; (802923c ) - 8029140: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 8029144: edd7 6a03 vldr s13, [r7, #12] - 8029148: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 802914c: eeb0 1b46 vmov.f64 d1, d6 - 8029150: eeb0 0b47 vmov.f64 d0, d7 - 8029154: f01e ff7c bl 8048050 - 8029158: eeb0 7b40 vmov.f64 d7, d0 - 802915c: eeb1 7b47 vneg.f64 d7, d7 - 8029160: 4b35 ldr r3, [pc, #212] ; (8029238 ) - 8029162: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 802917e: 4b3f ldr r3, [pc, #252] ; (802927c ) + 8029180: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 8029184: edd7 6a03 vldr s13, [r7, #12] + 8029188: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 802918c: eeb0 1b46 vmov.f64 d1, d6 + 8029190: eeb0 0b47 vmov.f64 d0, d7 + 8029194: f01e ff7c bl 8048090 + 8029198: eeb0 7b40 vmov.f64 d7, d0 + 802919c: eeb1 7b47 vneg.f64 d7, d7 + 80291a0: 4b35 ldr r3, [pc, #212] ; (8029278 ) + 80291a2: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -1*copysign(CV.RightTurnSpeed, delta_Angle); - 8029166: 4b35 ldr r3, [pc, #212] ; (802923c ) - 8029168: ed93 7b20 vldr d7, [r3, #128] ; 0x80 - 802916c: edd7 6a03 vldr s13, [r7, #12] - 8029170: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8029174: eeb0 1b46 vmov.f64 d1, d6 - 8029178: eeb0 0b47 vmov.f64 d0, d7 - 802917c: f01e ff68 bl 8048050 - 8029180: eeb0 7b40 vmov.f64 d7, d0 - 8029184: eeb1 7b47 vneg.f64 d7, d7 - 8029188: 4b2b ldr r3, [pc, #172] ; (8029238 ) - 802918a: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 - 802918e: e04b b.n 8029228 + 80291a6: 4b35 ldr r3, [pc, #212] ; (802927c ) + 80291a8: ed93 7b20 vldr d7, [r3, #128] ; 0x80 + 80291ac: edd7 6a03 vldr s13, [r7, #12] + 80291b0: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 80291b4: eeb0 1b46 vmov.f64 d1, d6 + 80291b8: eeb0 0b47 vmov.f64 d0, d7 + 80291bc: f01e ff68 bl 8048090 + 80291c0: eeb0 7b40 vmov.f64 d7, d0 + 80291c4: eeb1 7b47 vneg.f64 d7, d7 + 80291c8: 4b2b ldr r3, [pc, #172] ; (8029278 ) + 80291ca: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 80291ce: e04b b.n 8029268 } else if(abs(delta_Angle) > 2*100)//小角度慢速转 - 8029190: edd7 7a03 vldr s15, [r7, #12] - 8029194: eefd 7ae7 vcvt.s32.f32 s15, s15 - 8029198: ee17 3a90 vmov r3, s15 - 802919c: 2b00 cmp r3, #0 - 802919e: bfb8 it lt - 80291a0: 425b neglt r3, r3 - 80291a2: 2bc8 cmp r3, #200 ; 0xc8 - 80291a4: dd30 ble.n 8029208 + 80291d0: edd7 7a03 vldr s15, [r7, #12] + 80291d4: eefd 7ae7 vcvt.s32.f32 s15, s15 + 80291d8: ee17 3a90 vmov r3, s15 + 80291dc: 2b00 cmp r3, #0 + 80291de: bfb8 it lt + 80291e0: 425b neglt r3, r3 + 80291e2: 2bc8 cmp r3, #200 ; 0xc8 + 80291e4: dd30 ble.n 8029248 { GV.LeftMotor.Target_Velcity = -1*copysign(CV.LeftTurnSpeed/2, delta_Angle); - 80291a6: 4b25 ldr r3, [pc, #148] ; (802923c ) - 80291a8: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 80291ac: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 80291b0: ee87 6b05 vdiv.f64 d6, d7, d5 - 80291b4: edd7 7a03 vldr s15, [r7, #12] - 80291b8: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 80291bc: eeb0 1b47 vmov.f64 d1, d7 - 80291c0: eeb0 0b46 vmov.f64 d0, d6 - 80291c4: f01e ff44 bl 8048050 - 80291c8: eeb0 7b40 vmov.f64 d7, d0 - 80291cc: eeb1 7b47 vneg.f64 d7, d7 - 80291d0: 4b19 ldr r3, [pc, #100] ; (8029238 ) - 80291d2: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 80291e6: 4b25 ldr r3, [pc, #148] ; (802927c ) + 80291e8: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 80291ec: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 80291f0: ee87 6b05 vdiv.f64 d6, d7, d5 + 80291f4: edd7 7a03 vldr s15, [r7, #12] + 80291f8: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 80291fc: eeb0 1b47 vmov.f64 d1, d7 + 8029200: eeb0 0b46 vmov.f64 d0, d6 + 8029204: f01e ff44 bl 8048090 + 8029208: eeb0 7b40 vmov.f64 d7, d0 + 802920c: eeb1 7b47 vneg.f64 d7, d7 + 8029210: 4b19 ldr r3, [pc, #100] ; (8029278 ) + 8029212: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -1*copysign(CV.RightTurnSpeed/2, delta_Angle); - 80291d6: 4b19 ldr r3, [pc, #100] ; (802923c ) - 80291d8: ed93 7b20 vldr d7, [r3, #128] ; 0x80 - 80291dc: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 80291e0: ee87 6b05 vdiv.f64 d6, d7, d5 - 80291e4: edd7 7a03 vldr s15, [r7, #12] - 80291e8: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 80291ec: eeb0 1b47 vmov.f64 d1, d7 - 80291f0: eeb0 0b46 vmov.f64 d0, d6 - 80291f4: f01e ff2c bl 8048050 - 80291f8: eeb0 7b40 vmov.f64 d7, d0 - 80291fc: eeb1 7b47 vneg.f64 d7, d7 - 8029200: 4b0d ldr r3, [pc, #52] ; (8029238 ) - 8029202: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 - 8029206: e00f b.n 8029228 + 8029216: 4b19 ldr r3, [pc, #100] ; (802927c ) + 8029218: ed93 7b20 vldr d7, [r3, #128] ; 0x80 + 802921c: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 8029220: ee87 6b05 vdiv.f64 d6, d7, d5 + 8029224: edd7 7a03 vldr s15, [r7, #12] + 8029228: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 802922c: eeb0 1b47 vmov.f64 d1, d7 + 8029230: eeb0 0b46 vmov.f64 d0, d6 + 8029234: f01e ff2c bl 8048090 + 8029238: eeb0 7b40 vmov.f64 d7, d0 + 802923c: eeb1 7b47 vneg.f64 d7, d7 + 8029240: 4b0d ldr r3, [pc, #52] ; (8029278 ) + 8029242: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 8029246: e00f b.n 8029268 } else // <小角度,停止 { GV.LeftMotor.Target_Velcity = 0; - 8029208: 490b ldr r1, [pc, #44] ; (8029238 ) - 802920a: f04f 0200 mov.w r2, #0 - 802920e: f04f 0300 mov.w r3, #0 - 8029212: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 + 8029248: 490b ldr r1, [pc, #44] ; (8029278 ) + 802924a: f04f 0200 mov.w r2, #0 + 802924e: f04f 0300 mov.w r3, #0 + 8029252: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 GV.RightMotor.Target_Velcity = 0; - 8029216: 4908 ldr r1, [pc, #32] ; (8029238 ) - 8029218: f04f 0200 mov.w r2, #0 - 802921c: f04f 0300 mov.w r3, #0 - 8029220: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 + 8029256: 4908 ldr r1, [pc, #32] ; (8029278 ) + 8029258: f04f 0200 mov.w r2, #0 + 802925c: f04f 0300 mov.w r3, #0 + 8029260: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 return 1; - 8029224: 2301 movs r3, #1 - 8029226: e000 b.n 802922a + 8029264: 2301 movs r3, #1 + 8029266: e000 b.n 802926a } return 0; - 8029228: 2300 movs r3, #0 + 8029268: 2300 movs r3, #0 } - 802922a: 4618 mov r0, r3 - 802922c: 3718 adds r7, #24 - 802922e: 46bd mov sp, r7 - 8029230: bd80 pop {r7, pc} - 8029232: bf00 nop - 8029234: 42c80000 .word 0x42c80000 - 8029238: 240002b0 .word 0x240002b0 - 802923c: 240001d8 .word 0x240001d8 + 802926a: 4618 mov r0, r3 + 802926c: 3718 adds r7, #24 + 802926e: 46bd mov sp, r7 + 8029270: bd80 pop {r7, pc} + 8029272: bf00 nop + 8029274: 42c80000 .word 0x42c80000 + 8029278: 240002b0 .word 0x240002b0 + 802927c: 240001d8 .word 0x240001d8 -08029240 : +08029280 : uint8_t blowers_pwm_last = 0; int SetPWM_Auto()// { - 8029240: b580 push {r7, lr} - 8029242: b08a sub sp, #40 ; 0x28 - 8029244: af00 add r7, sp, #0 + 8029280: b580 push {r7, lr} + 8029282: b08a sub sp, #40 ; 0x28 + 8029284: af00 add r7, sp, #0 uint8_t blowers_pwm_base = 0;//旋钮pwm,增加默认值,否则遥控连接之前,获取旋钮速度输出为50 - 8029246: 2300 movs r3, #0 - 8029248: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 8029286: 2300 movs r3, #0 + 8029288: f887 3027 strb.w r3, [r7, #39] ; 0x27 int8_t blowers_pwm_PID = 0;//自动pwm - 802924c: 2300 movs r3, #0 - 802924e: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 802928c: 2300 movs r3, #0 + 802928e: f887 3026 strb.w r3, [r7, #38] ; 0x26 if (P_MK32->CH6_SC == -1000)//自动调整风速 - 8029252: 4b6d ldr r3, [pc, #436] ; (8029408 ) - 8029254: 681b ldr r3, [r3, #0] - 8029256: 69db ldr r3, [r3, #28] - 8029258: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 802925c: f040 8094 bne.w 8029388 + 8029292: 4b6d ldr r3, [pc, #436] ; (8029448 ) + 8029294: 681b ldr r3, [r3, #0] + 8029296: 69db ldr r3, [r3, #28] + 8029298: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 802929c: f040 8094 bne.w 80293c8 { //根据压强大小 线性调整PWM,风机转速 //压强数值输出范围是 -100 ~ 100 Kpa,//压强减小,blowers_pwm_Kp增大(>0) float Target_force = 3.2; - 8029260: 4b6a ldr r3, [pc, #424] ; (802940c ) - 8029262: 61fb str r3, [r7, #28] + 80292a0: 4b6a ldr r3, [pc, #424] ; (802944c ) + 80292a2: 61fb str r3, [r7, #28] uint8_t base_pwm = 41;// 41对应3.2;45对应3.8Kpa; - 8029264: 2329 movs r3, #41 ; 0x29 - 8029266: 76fb strb r3, [r7, #27] + 80292a4: 2329 movs r3, #41 ; 0x29 + 80292a6: 76fb strb r3, [r7, #27] float current_force = -1*GV.ForceValue ; - 8029268: 4b69 ldr r3, [pc, #420] ; (8029410 ) - 802926a: edd3 7a05 vldr s15, [r3, #20] - 802926e: eef1 7a67 vneg.f32 s15, s15 - 8029272: edc7 7a05 vstr s15, [r7, #20] + 80292a8: 4b69 ldr r3, [pc, #420] ; (8029450 ) + 80292aa: edd3 7a05 vldr s15, [r3, #20] + 80292ae: eef1 7a67 vneg.f32 s15, s15 + 80292b2: edc7 7a05 vstr s15, [r7, #20] float deltForce = current_force - Target_force; - 8029276: ed97 7a05 vldr s14, [r7, #20] - 802927a: edd7 7a07 vldr s15, [r7, #28] - 802927e: ee77 7a67 vsub.f32 s15, s14, s15 - 8029282: edc7 7a04 vstr s15, [r7, #16] + 80292b6: ed97 7a05 vldr s14, [r7, #20] + 80292ba: edd7 7a07 vldr s15, [r7, #28] + 80292be: ee77 7a67 vsub.f32 s15, s14, s15 + 80292c2: edc7 7a04 vstr s15, [r7, #16] int detapwm = 0; - 8029286: 2300 movs r3, #0 - 8029288: 623b str r3, [r7, #32] + 80292c6: 2300 movs r3, #0 + 80292c8: 623b str r3, [r7, #32] if(deltForce < 0) - 802928a: edd7 7a04 vldr s15, [r7, #16] - 802928e: eef5 7ac0 vcmpe.f32 s15, #0.0 - 8029292: eef1 fa10 vmrs APSR_nzcv, fpscr - 8029296: d51d bpl.n 80292d4 + 80292ca: edd7 7a04 vldr s15, [r7, #16] + 80292ce: eef5 7ac0 vcmpe.f32 s15, #0.0 + 80292d2: eef1 fa10 vmrs APSR_nzcv, fpscr + 80292d6: d51d bpl.n 8029314 { detapwm = Angle_Tune_PID( current_force, Target_force, 20, 0, 16, 100); - 8029298: edd7 7a05 vldr s15, [r7, #20] - 802929c: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 80292a0: edd7 6a07 vldr s13, [r7, #28] - 80292a4: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 80292a8: ed9f 5b53 vldr d5, [pc, #332] ; 80293f8 - 80292ac: eeb3 4b00 vmov.f64 d4, #48 ; 0x41800000 16.0 - 80292b0: ed9f 3b53 vldr d3, [pc, #332] ; 8029400 - 80292b4: eeb3 2b04 vmov.f64 d2, #52 ; 0x41a00000 20.0 - 80292b8: eeb0 1b46 vmov.f64 d1, d6 - 80292bc: eeb0 0b47 vmov.f64 d0, d7 - 80292c0: f7fe fe06 bl 8027ed0 - 80292c4: eeb0 7b40 vmov.f64 d7, d0 - 80292c8: eefd 7bc7 vcvt.s32.f64 s15, d7 - 80292cc: ee17 3a90 vmov r3, s15 - 80292d0: 623b str r3, [r7, #32] - 80292d2: e043 b.n 802935c + 80292d8: edd7 7a05 vldr s15, [r7, #20] + 80292dc: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 80292e0: edd7 6a07 vldr s13, [r7, #28] + 80292e4: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 80292e8: ed9f 5b53 vldr d5, [pc, #332] ; 8029438 + 80292ec: eeb3 4b00 vmov.f64 d4, #48 ; 0x41800000 16.0 + 80292f0: ed9f 3b53 vldr d3, [pc, #332] ; 8029440 + 80292f4: eeb3 2b04 vmov.f64 d2, #52 ; 0x41a00000 20.0 + 80292f8: eeb0 1b46 vmov.f64 d1, d6 + 80292fc: eeb0 0b47 vmov.f64 d0, d7 + 8029300: f7fe fdf6 bl 8027ef0 + 8029304: eeb0 7b40 vmov.f64 d7, d0 + 8029308: eefd 7bc7 vcvt.s32.f64 s15, d7 + 802930c: ee17 3a90 vmov r3, s15 + 8029310: 623b str r3, [r7, #32] + 8029312: e043 b.n 802939c } else if(deltForce < 0.5) - 80292d4: edd7 7a04 vldr s15, [r7, #16] - 80292d8: eeb6 7a00 vmov.f32 s14, #96 ; 0x3f000000 0.5 - 80292dc: eef4 7ac7 vcmpe.f32 s15, s14 - 80292e0: eef1 fa10 vmrs APSR_nzcv, fpscr - 80292e4: d51d bpl.n 8029322 + 8029314: edd7 7a04 vldr s15, [r7, #16] + 8029318: eeb6 7a00 vmov.f32 s14, #96 ; 0x3f000000 0.5 + 802931c: eef4 7ac7 vcmpe.f32 s15, s14 + 8029320: eef1 fa10 vmrs APSR_nzcv, fpscr + 8029324: d51d bpl.n 8029362 { detapwm = Angle_Tune_PID( current_force, Target_force, 6, 0, 10, 100);// - 80292e6: edd7 7a05 vldr s15, [r7, #20] - 80292ea: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 80292ee: edd7 6a07 vldr s13, [r7, #28] - 80292f2: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 80292f6: ed9f 5b40 vldr d5, [pc, #256] ; 80293f8 - 80292fa: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 - 80292fe: ed9f 3b40 vldr d3, [pc, #256] ; 8029400 - 8029302: eeb1 2b08 vmov.f64 d2, #24 ; 0x40c00000 6.0 - 8029306: eeb0 1b46 vmov.f64 d1, d6 - 802930a: eeb0 0b47 vmov.f64 d0, d7 - 802930e: f7fe fddf bl 8027ed0 - 8029312: eeb0 7b40 vmov.f64 d7, d0 - 8029316: eefd 7bc7 vcvt.s32.f64 s15, d7 - 802931a: ee17 3a90 vmov r3, s15 - 802931e: 623b str r3, [r7, #32] - 8029320: e01c b.n 802935c + 8029326: edd7 7a05 vldr s15, [r7, #20] + 802932a: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 802932e: edd7 6a07 vldr s13, [r7, #28] + 8029332: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8029336: ed9f 5b40 vldr d5, [pc, #256] ; 8029438 + 802933a: eeb2 4b04 vmov.f64 d4, #36 ; 0x41200000 10.0 + 802933e: ed9f 3b40 vldr d3, [pc, #256] ; 8029440 + 8029342: eeb1 2b08 vmov.f64 d2, #24 ; 0x40c00000 6.0 + 8029346: eeb0 1b46 vmov.f64 d1, d6 + 802934a: eeb0 0b47 vmov.f64 d0, d7 + 802934e: f7fe fdcf bl 8027ef0 + 8029352: eeb0 7b40 vmov.f64 d7, d0 + 8029356: eefd 7bc7 vcvt.s32.f64 s15, d7 + 802935a: ee17 3a90 vmov r3, s15 + 802935e: 623b str r3, [r7, #32] + 8029360: e01c b.n 802939c } else { detapwm = Angle_Tune_PID( current_force, Target_force, 10, 0, 8, 100); - 8029322: edd7 7a05 vldr s15, [r7, #20] - 8029326: eeb7 7ae7 vcvt.f64.f32 d7, s15 - 802932a: edd7 6a07 vldr s13, [r7, #28] - 802932e: eeb7 6ae6 vcvt.f64.f32 d6, s13 - 8029332: ed9f 5b31 vldr d5, [pc, #196] ; 80293f8 - 8029336: eeb2 4b00 vmov.f64 d4, #32 ; 0x41000000 8.0 - 802933a: ed9f 3b31 vldr d3, [pc, #196] ; 8029400 - 802933e: eeb2 2b04 vmov.f64 d2, #36 ; 0x41200000 10.0 - 8029342: eeb0 1b46 vmov.f64 d1, d6 - 8029346: eeb0 0b47 vmov.f64 d0, d7 - 802934a: f7fe fdc1 bl 8027ed0 - 802934e: eeb0 7b40 vmov.f64 d7, d0 - 8029352: eefd 7bc7 vcvt.s32.f64 s15, d7 - 8029356: ee17 3a90 vmov r3, s15 - 802935a: 623b str r3, [r7, #32] + 8029362: edd7 7a05 vldr s15, [r7, #20] + 8029366: eeb7 7ae7 vcvt.f64.f32 d7, s15 + 802936a: edd7 6a07 vldr s13, [r7, #28] + 802936e: eeb7 6ae6 vcvt.f64.f32 d6, s13 + 8029372: ed9f 5b31 vldr d5, [pc, #196] ; 8029438 + 8029376: eeb2 4b00 vmov.f64 d4, #32 ; 0x41000000 8.0 + 802937a: ed9f 3b31 vldr d3, [pc, #196] ; 8029440 + 802937e: eeb2 2b04 vmov.f64 d2, #36 ; 0x41200000 10.0 + 8029382: eeb0 1b46 vmov.f64 d1, d6 + 8029386: eeb0 0b47 vmov.f64 d0, d7 + 802938a: f7fe fdb1 bl 8027ef0 + 802938e: eeb0 7b40 vmov.f64 d7, d0 + 8029392: eefd 7bc7 vcvt.s32.f64 s15, d7 + 8029396: ee17 3a90 vmov r3, s15 + 802939a: 623b str r3, [r7, #32] } blowers_pwm_PID = base_pwm - detapwm; - 802935c: 6a3b ldr r3, [r7, #32] - 802935e: b2db uxtb r3, r3 - 8029360: 7efa ldrb r2, [r7, #27] - 8029362: 1ad3 subs r3, r2, r3 - 8029364: b2db uxtb r3, r3 - 8029366: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 802939c: 6a3b ldr r3, [r7, #32] + 802939e: b2db uxtb r3, r3 + 80293a0: 7efa ldrb r2, [r7, #27] + 80293a2: 1ad3 subs r3, r2, r3 + 80293a4: b2db uxtb r3, r3 + 80293a6: f887 3026 strb.w r3, [r7, #38] ; 0x26 if(blowers_pwm_PID < 40) {blowers_pwm_PID = 40;}//下限 - 802936a: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 - 802936e: 2b27 cmp r3, #39 ; 0x27 - 8029370: dc02 bgt.n 8029378 - 8029372: 2328 movs r3, #40 ; 0x28 - 8029374: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 80293aa: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 + 80293ae: 2b27 cmp r3, #39 ; 0x27 + 80293b0: dc02 bgt.n 80293b8 + 80293b2: 2328 movs r3, #40 ; 0x28 + 80293b4: f887 3026 strb.w r3, [r7, #38] ; 0x26 if(blowers_pwm_PID > 100) {blowers_pwm_PID = 100;}//上限 - 8029378: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 - 802937c: 2b64 cmp r3, #100 ; 0x64 - 802937e: dd30 ble.n 80293e2 - 8029380: 2364 movs r3, #100 ; 0x64 - 8029382: f887 3026 strb.w r3, [r7, #38] ; 0x26 - 8029386: e02c b.n 80293e2 + 80293b8: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 + 80293bc: 2b64 cmp r3, #100 ; 0x64 + 80293be: dd30 ble.n 8029422 + 80293c0: 2364 movs r3, #100 ; 0x64 + 80293c2: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 80293c6: e02c b.n 8029422 // blowers_pwm_base = 0; } else//手动调节 { if(Get_BIT(SystemErrorCode, ComError_MK32_SBus) == CONNECTED) - 8029388: 4b22 ldr r3, [pc, #136] ; (8029414 ) - 802938a: 681b ldr r3, [r3, #0] - 802938c: 2100 movs r1, #0 - 802938e: 4618 mov r0, r3 - 8029390: f7f7 f9b9 bl 8020706 - 8029394: 4603 mov r3, r0 - 8029396: 2b00 cmp r3, #0 - 8029398: d11f bne.n 80293da + 80293c8: 4b22 ldr r3, [pc, #136] ; (8029454 ) + 80293ca: 681b ldr r3, [r3, #0] + 80293cc: 2100 movs r1, #0 + 80293ce: 4618 mov r0, r3 + 80293d0: f7f7 f999 bl 8020706 + 80293d4: 4603 mov r3, r0 + 80293d6: 2b00 cmp r3, #0 + 80293d8: d11f bne.n 802941a { blowers_pwm_base = (uint8_t)(abs(P_MK32->CH10_LD1 + 1000) / 200.0f * 10);//0-100/*获取旋钮速度*/ - 802939a: 4b1b ldr r3, [pc, #108] ; (8029408 ) - 802939c: 681b ldr r3, [r3, #0] - 802939e: 6adb ldr r3, [r3, #44] ; 0x2c - 80293a0: f503 737a add.w r3, r3, #1000 ; 0x3e8 - 80293a4: 2b00 cmp r3, #0 - 80293a6: bfb8 it lt - 80293a8: 425b neglt r3, r3 - 80293aa: ee07 3a90 vmov s15, r3 - 80293ae: eeb8 7ae7 vcvt.f32.s32 s14, s15 - 80293b2: eddf 6a19 vldr s13, [pc, #100] ; 8029418 - 80293b6: eec7 7a26 vdiv.f32 s15, s14, s13 - 80293ba: eeb2 7a04 vmov.f32 s14, #36 ; 0x41200000 10.0 - 80293be: ee67 7a87 vmul.f32 s15, s15, s14 - 80293c2: eefc 7ae7 vcvt.u32.f32 s15, s15 - 80293c6: edc7 7a01 vstr s15, [r7, #4] - 80293ca: 793b ldrb r3, [r7, #4] - 80293cc: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 80293da: 4b1b ldr r3, [pc, #108] ; (8029448 ) + 80293dc: 681b ldr r3, [r3, #0] + 80293de: 6adb ldr r3, [r3, #44] ; 0x2c + 80293e0: f503 737a add.w r3, r3, #1000 ; 0x3e8 + 80293e4: 2b00 cmp r3, #0 + 80293e6: bfb8 it lt + 80293e8: 425b neglt r3, r3 + 80293ea: ee07 3a90 vmov s15, r3 + 80293ee: eeb8 7ae7 vcvt.f32.s32 s14, s15 + 80293f2: eddf 6a19 vldr s13, [pc, #100] ; 8029458 + 80293f6: eec7 7a26 vdiv.f32 s15, s14, s13 + 80293fa: eeb2 7a04 vmov.f32 s14, #36 ; 0x41200000 10.0 + 80293fe: ee67 7a87 vmul.f32 s15, s15, s14 + 8029402: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8029406: edc7 7a01 vstr s15, [r7, #4] + 802940a: 793b ldrb r3, [r7, #4] + 802940c: f887 3027 strb.w r3, [r7, #39] ; 0x27 // blowers_pwm_PID = 0; blowers_pwm_last = blowers_pwm_base; - 80293d0: 4a12 ldr r2, [pc, #72] ; (802941c ) - 80293d2: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 80293d6: 7013 strb r3, [r2, #0] - 80293d8: e003 b.n 80293e2 + 8029410: 4a12 ldr r2, [pc, #72] ; (802945c ) + 8029412: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 8029416: 7013 strb r3, [r2, #0] + 8029418: e003 b.n 8029422 } else//遥控通讯中断,风机不能停 { blowers_pwm_base = blowers_pwm_last; - 80293da: 4b10 ldr r3, [pc, #64] ; (802941c ) - 80293dc: 781b ldrb r3, [r3, #0] - 80293de: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 802941a: 4b10 ldr r3, [pc, #64] ; (802945c ) + 802941c: 781b ldrb r3, [r3, #0] + 802941e: f887 3027 strb.w r3, [r7, #39] ; 0x27 } } int blowers_pwm_total = blowers_pwm_base + blowers_pwm_PID; - 80293e2: f897 2027 ldrb.w r2, [r7, #39] ; 0x27 - 80293e6: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 - 80293ea: 4413 add r3, r2 - 80293ec: 60fb str r3, [r7, #12] + 8029422: f897 2027 ldrb.w r2, [r7, #39] ; 0x27 + 8029426: f997 3026 ldrsb.w r3, [r7, #38] ; 0x26 + 802942a: 4413 add r3, r2 + 802942c: 60fb str r3, [r7, #12] return (blowers_pwm_total);//pwm > 90, 风速最大 - 80293ee: 68fb ldr r3, [r7, #12] -} - 80293f0: 4618 mov r0, r3 - 80293f2: 3728 adds r7, #40 ; 0x28 - 80293f4: 46bd mov sp, r7 - 80293f6: bd80 pop {r7, pc} - 80293f8: 00000000 .word 0x00000000 - 80293fc: 40590000 .word 0x40590000 + 802942e: 68fb ldr r3, [r7, #12] +} + 8029430: 4618 mov r0, r3 + 8029432: 3728 adds r7, #40 ; 0x28 + 8029434: 46bd mov sp, r7 + 8029436: bd80 pop {r7, pc} + 8029438: 00000000 .word 0x00000000 + 802943c: 40590000 .word 0x40590000 ... - 8029408: 2400ad24 .word 0x2400ad24 - 802940c: 404ccccd .word 0x404ccccd - 8029410: 240002b0 .word 0x240002b0 - 8029414: 240001d0 .word 0x240001d0 - 8029418: 43480000 .word 0x43480000 - 802941c: 2400aec1 .word 0x2400aec1 - -08029420 : + 8029448: 2400ad24 .word 0x2400ad24 + 802944c: 404ccccd .word 0x404ccccd + 8029450: 240002b0 .word 0x240002b0 + 8029454: 240001d0 .word 0x240001d0 + 8029458: 43480000 .word 0x43480000 + 802945c: 2400aec1 .word 0x2400aec1 + +08029460 : transition_state_t blowers_on_state = {NULL, Blowers_On_Do, NULL}; transition_state_t blowers_off_state= {NULL, Blowers_Off_Do,NULL}; static void Blowers_On_Do(transition_t *p_this) { - 8029420: b580 push {r7, lr} - 8029422: b082 sub sp, #8 - 8029424: af00 add r7, sp, #0 - 8029426: 6078 str r0, [r7, #4] + 8029460: b580 push {r7, lr} + 8029462: b082 sub sp, #8 + 8029464: af00 add r7, sp, #0 + 8029466: 6078 str r0, [r7, #4] setBlowersSpeed(GV.speed_blowers_pwm); - 8029428: 4b05 ldr r3, [pc, #20] ; (8029440 ) - 802942a: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 - 802942e: b2db uxtb r3, r3 - 8029430: 4618 mov r0, r3 - 8029432: f000 f813 bl 802945c + 8029468: 4b05 ldr r3, [pc, #20] ; (8029480 ) + 802946a: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 + 802946e: b2db uxtb r3, r3 + 8029470: 4618 mov r0, r3 + 8029472: f000 f813 bl 802949c } - 8029436: bf00 nop - 8029438: 3708 adds r7, #8 - 802943a: 46bd mov sp, r7 - 802943c: bd80 pop {r7, pc} - 802943e: bf00 nop - 8029440: 240002b0 .word 0x240002b0 + 8029476: bf00 nop + 8029478: 3708 adds r7, #8 + 802947a: 46bd mov sp, r7 + 802947c: bd80 pop {r7, pc} + 802947e: bf00 nop + 8029480: 240002b0 .word 0x240002b0 -08029444 : +08029484 : static void Blowers_Off_Do(transition_t *p_this) { - 8029444: b580 push {r7, lr} - 8029446: b082 sub sp, #8 - 8029448: af00 add r7, sp, #0 - 802944a: 6078 str r0, [r7, #4] + 8029484: b580 push {r7, lr} + 8029486: b082 sub sp, #8 + 8029488: af00 add r7, sp, #0 + 802948a: 6078 str r0, [r7, #4] setBlowersSpeed(0); - 802944c: 2000 movs r0, #0 - 802944e: f000 f805 bl 802945c + 802948c: 2000 movs r0, #0 + 802948e: f000 f805 bl 802949c } - 8029452: bf00 nop - 8029454: 3708 adds r7, #8 - 8029456: 46bd mov sp, r7 - 8029458: bd80 pop {r7, pc} + 8029492: bf00 nop + 8029494: 3708 adds r7, #8 + 8029496: 46bd mov sp, r7 + 8029498: bd80 pop {r7, pc} ... -0802945c : +0802949c : // 风机转速百分比控制 (0~100) // 0%: 停止, 10%: 最低速, 90%: 最高速 static void setBlowersSpeed(uint8_t percent) { - 802945c: b480 push {r7} - 802945e: b085 sub sp, #20 - 8029460: af00 add r7, sp, #0 - 8029462: 4603 mov r3, r0 - 8029464: 71fb strb r3, [r7, #7] + 802949c: b480 push {r7} + 802949e: b085 sub sp, #20 + 80294a0: af00 add r7, sp, #0 + 80294a2: 4603 mov r3, r0 + 80294a4: 71fb strb r3, [r7, #7] uint32_t pulse; if (percent <= 0) - 8029466: 79fb ldrb r3, [r7, #7] - 8029468: 2b00 cmp r3, #0 - 802946a: d102 bne.n 8029472 + 80294a6: 79fb ldrb r3, [r7, #7] + 80294a8: 2b00 cmp r3, #0 + 80294aa: d102 bne.n 80294b2 { pulse = 0; // 停止 (占空比 <10%) - 802946c: 2300 movs r3, #0 - 802946e: 60fb str r3, [r7, #12] - 8029470: e015 b.n 802949e + 80294ac: 2300 movs r3, #0 + 80294ae: 60fb str r3, [r7, #12] + 80294b0: e015 b.n 80294de } else if (percent < 10) - 8029472: 79fb ldrb r3, [r7, #7] - 8029474: 2b09 cmp r3, #9 - 8029476: d802 bhi.n 802947e + 80294b2: 79fb ldrb r3, [r7, #7] + 80294b4: 2b09 cmp r3, #9 + 80294b6: d802 bhi.n 80294be { pulse = 100; // 最低速 (占空比 10%) - 8029478: 2364 movs r3, #100 ; 0x64 - 802947a: 60fb str r3, [r7, #12] - 802947c: e00f b.n 802949e + 80294b8: 2364 movs r3, #100 ; 0x64 + 80294ba: 60fb str r3, [r7, #12] + 80294bc: e00f b.n 80294de } else if (percent > 90) - 802947e: 79fb ldrb r3, [r7, #7] - 8029480: 2b5a cmp r3, #90 ; 0x5a - 8029482: d903 bls.n 802948c + 80294be: 79fb ldrb r3, [r7, #7] + 80294c0: 2b5a cmp r3, #90 ; 0x5a + 80294c2: d903 bls.n 80294cc { pulse = 900; // 最高速 (占空比 90%) - 8029484: f44f 7361 mov.w r3, #900 ; 0x384 - 8029488: 60fb str r3, [r7, #12] - 802948a: e008 b.n 802949e + 80294c4: f44f 7361 mov.w r3, #900 ; 0x384 + 80294c8: 60fb str r3, [r7, #12] + 80294ca: e008 b.n 80294de } else { pulse = 100 + (percent - 10) * 10;// 线性映射 10%~90% → 100~900 - 802948c: 79fb ldrb r3, [r7, #7] - 802948e: f1a3 020a sub.w r2, r3, #10 - 8029492: 4613 mov r3, r2 - 8029494: 009b lsls r3, r3, #2 - 8029496: 4413 add r3, r2 - 8029498: 005b lsls r3, r3, #1 - 802949a: 3364 adds r3, #100 ; 0x64 - 802949c: 60fb str r3, [r7, #12] + 80294cc: 79fb ldrb r3, [r7, #7] + 80294ce: f1a3 020a sub.w r2, r3, #10 + 80294d2: 4613 mov r3, r2 + 80294d4: 009b lsls r3, r3, #2 + 80294d6: 4413 add r3, r2 + 80294d8: 005b lsls r3, r3, #1 + 80294da: 3364 adds r3, #100 ; 0x64 + 80294dc: 60fb str r3, [r7, #12] } __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse); - 802949e: 4b05 ldr r3, [pc, #20] ; (80294b4 ) - 80294a0: 681b ldr r3, [r3, #0] - 80294a2: 68fa ldr r2, [r7, #12] - 80294a4: 635a str r2, [r3, #52] ; 0x34 + 80294de: 4b05 ldr r3, [pc, #20] ; (80294f4 ) + 80294e0: 681b ldr r3, [r3, #0] + 80294e2: 68fa ldr r2, [r7, #12] + 80294e4: 635a str r2, [r3, #52] ; 0x34 } - 80294a6: bf00 nop - 80294a8: 3714 adds r7, #20 - 80294aa: 46bd mov sp, r7 - 80294ac: f85d 7b04 ldr.w r7, [sp], #4 - 80294b0: 4770 bx lr - 80294b2: bf00 nop - 80294b4: 2400b184 .word 0x2400b184 + 80294e6: bf00 nop + 80294e8: 3714 adds r7, #20 + 80294ea: 46bd mov sp, r7 + 80294ec: f85d 7b04 ldr.w r7, [sp], #4 + 80294f0: 4770 bx lr + 80294f2: bf00 nop + 80294f4: 2400b184 .word 0x2400b184 -080294b8 : +080294f8 : // 风机控制初始化 (在 初始化 中调用) void blowers_Control_Init(void) { - 80294b8: b580 push {r7, lr} - 80294ba: af00 add r7, sp, #0 + 80294f8: b580 push {r7, lr} + 80294fa: af00 add r7, sp, #0 // 启动 TIM2 PWM 输出 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); - 80294bc: 2100 movs r1, #0 - 80294be: 4804 ldr r0, [pc, #16] ; (80294d0 ) - 80294c0: f00f f9ec bl 803889c + 80294fc: 2100 movs r1, #0 + 80294fe: 4804 ldr r0, [pc, #16] ; (8029510 ) + 8029500: f00f f9ec bl 80388dc // 初始设置为停止 setBlowersSpeed(0); - 80294c4: 2000 movs r0, #0 - 80294c6: f7ff ffc9 bl 802945c + 8029504: 2000 movs r0, #0 + 8029506: f7ff ffc9 bl 802949c } - 80294ca: bf00 nop - 80294cc: bd80 pop {r7, pc} - 80294ce: bf00 nop - 80294d0: 2400b184 .word 0x2400b184 + 802950a: bf00 nop + 802950c: bd80 pop {r7, pc} + 802950e: bf00 nop + 8029510: 2400b184 .word 0x2400b184 -080294d4 : +08029514 : void fsm_state_run(transition_t* p_this) //执行状态机当前状态 { - 80294d4: b580 push {r7, lr} - 80294d6: b082 sub sp, #8 - 80294d8: af00 add r7, sp, #0 - 80294da: 6078 str r0, [r7, #4] + 8029514: b580 push {r7, lr} + 8029516: b082 sub sp, #8 + 8029518: af00 add r7, sp, #0 + 802951a: 6078 str r0, [r7, #4] // turnstile_pass(&turnstile) if (p_this->p_state->robotRun!= NULL) - 80294dc: 687b ldr r3, [r7, #4] - 80294de: 681b ldr r3, [r3, #0] - 80294e0: 685b ldr r3, [r3, #4] - 80294e2: 2b00 cmp r3, #0 - 80294e4: d004 beq.n 80294f0 + 802951c: 687b ldr r3, [r7, #4] + 802951e: 681b ldr r3, [r3, #0] + 8029520: 685b ldr r3, [r3, #4] + 8029522: 2b00 cmp r3, #0 + 8029524: d004 beq.n 8029530 { p_this->p_state->robotRun(p_this); - 80294e6: 687b ldr r3, [r7, #4] - 80294e8: 681b ldr r3, [r3, #0] - 80294ea: 685b ldr r3, [r3, #4] - 80294ec: 6878 ldr r0, [r7, #4] - 80294ee: 4798 blx r3 + 8029526: 687b ldr r3, [r7, #4] + 8029528: 681b ldr r3, [r3, #0] + 802952a: 685b ldr r3, [r3, #4] + 802952c: 6878 ldr r0, [r7, #4] + 802952e: 4798 blx r3 } } - 80294f0: bf00 nop - 80294f2: 3708 adds r7, #8 - 80294f4: 46bd mov sp, r7 - 80294f6: bd80 pop {r7, pc} + 8029530: bf00 nop + 8029532: 3708 adds r7, #8 + 8029534: 46bd mov sp, r7 + 8029536: bd80 pop {r7, pc} -080294f8 : +08029538 : //修改状态机状态,若状态机修改后,则查看是否有enter 和 exit命令进行运动 void fsm_state_set(transition_t* p_this, transition_state_t* p_new_state) { - 80294f8: b580 push {r7, lr} - 80294fa: b082 sub sp, #8 - 80294fc: af00 add r7, sp, #0 - 80294fe: 6078 str r0, [r7, #4] - 8029500: 6039 str r1, [r7, #0] + 8029538: b580 push {r7, lr} + 802953a: b082 sub sp, #8 + 802953c: af00 add r7, sp, #0 + 802953e: 6078 str r0, [r7, #4] + 8029540: 6039 str r1, [r7, #0] if(p_this==NULL){return;} - 8029502: 687b ldr r3, [r7, #4] - 8029504: 2b00 cmp r3, #0 - 8029506: d01c beq.n 8029542 + 8029542: 687b ldr r3, [r7, #4] + 8029544: 2b00 cmp r3, #0 + 8029546: d01c beq.n 8029582 // turnstile_pass(&turnstile) if (p_this->p_state!= p_new_state) /* 状态不等 */ - 8029508: 687b ldr r3, [r7, #4] - 802950a: 681b ldr r3, [r3, #0] - 802950c: 683a ldr r2, [r7, #0] - 802950e: 429a cmp r2, r3 - 8029510: d018 beq.n 8029544 + 8029548: 687b ldr r3, [r7, #4] + 802954a: 681b ldr r3, [r3, #0] + 802954c: 683a ldr r2, [r7, #0] + 802954e: 429a cmp r2, r3 + 8029550: d018 beq.n 8029584 { if (p_this->p_state->robotExit!=NULL) - 8029512: 687b ldr r3, [r7, #4] - 8029514: 681b ldr r3, [r3, #0] - 8029516: 689b ldr r3, [r3, #8] - 8029518: 2b00 cmp r3, #0 - 802951a: d004 beq.n 8029526 + 8029552: 687b ldr r3, [r7, #4] + 8029554: 681b ldr r3, [r3, #0] + 8029556: 689b ldr r3, [r3, #8] + 8029558: 2b00 cmp r3, #0 + 802955a: d004 beq.n 8029566 { p_this->p_state->robotExit(p_this); // 1、执行旧状态的退出函数 - 802951c: 687b ldr r3, [r7, #4] - 802951e: 681b ldr r3, [r3, #0] - 8029520: 689b ldr r3, [r3, #8] - 8029522: 6878 ldr r0, [r7, #4] - 8029524: 4798 blx r3 + 802955c: 687b ldr r3, [r7, #4] + 802955e: 681b ldr r3, [r3, #0] + 8029560: 689b ldr r3, [r3, #8] + 8029562: 6878 ldr r0, [r7, #4] + 8029564: 4798 blx r3 } p_this->p_state = p_new_state; // 2、切换状态指针 - 8029526: 687b ldr r3, [r7, #4] - 8029528: 683a ldr r2, [r7, #0] - 802952a: 601a str r2, [r3, #0] + 8029566: 687b ldr r3, [r7, #4] + 8029568: 683a ldr r2, [r7, #0] + 802956a: 601a str r2, [r3, #0] if (p_this->p_state->robotEnter != NULL) - 802952c: 687b ldr r3, [r7, #4] - 802952e: 681b ldr r3, [r3, #0] - 8029530: 681b ldr r3, [r3, #0] - 8029532: 2b00 cmp r3, #0 - 8029534: d006 beq.n 8029544 + 802956c: 687b ldr r3, [r7, #4] + 802956e: 681b ldr r3, [r3, #0] + 8029570: 681b ldr r3, [r3, #0] + 8029572: 2b00 cmp r3, #0 + 8029574: d006 beq.n 8029584 { p_this->p_state->robotEnter(p_this); //3、执行新状态的进入函数 - 8029536: 687b ldr r3, [r7, #4] - 8029538: 681b ldr r3, [r3, #0] - 802953a: 681b ldr r3, [r3, #0] - 802953c: 6878 ldr r0, [r7, #4] - 802953e: 4798 blx r3 - 8029540: e000 b.n 8029544 + 8029576: 687b ldr r3, [r7, #4] + 8029578: 681b ldr r3, [r3, #0] + 802957a: 681b ldr r3, [r3, #0] + 802957c: 6878 ldr r0, [r7, #4] + 802957e: 4798 blx r3 + 8029580: e000 b.n 8029584 if(p_this==NULL){return;} - 8029542: bf00 nop + 8029582: bf00 nop } //exit } } - 8029544: 3708 adds r7, #8 - 8029546: 46bd mov sp, r7 - 8029548: bd80 pop {r7, pc} + 8029584: 3708 adds r7, #8 + 8029586: 46bd mov sp, r7 + 8029588: bd80 pop {r7, pc} -0802954a : +0802958a : //状态机初始化设定 void fsm_state_init(transition_t* p_this,transition_state_t* inti_state) { - 802954a: b480 push {r7} - 802954c: b083 sub sp, #12 - 802954e: af00 add r7, sp, #0 - 8029550: 6078 str r0, [r7, #4] - 8029552: 6039 str r1, [r7, #0] + 802958a: b480 push {r7} + 802958c: b083 sub sp, #12 + 802958e: af00 add r7, sp, #0 + 8029590: 6078 str r0, [r7, #4] + 8029592: 6039 str r1, [r7, #0] p_this->p_state =inti_state; - 8029554: 687b ldr r3, [r7, #4] - 8029556: 683a ldr r2, [r7, #0] - 8029558: 601a str r2, [r3, #0] -} - 802955a: bf00 nop - 802955c: 370c adds r7, #12 - 802955e: 46bd mov sp, r7 - 8029560: f85d 7b04 ldr.w r7, [sp], #4 - 8029564: 4770 bx lr + 8029594: 687b ldr r3, [r7, #4] + 8029596: 683a ldr r2, [r7, #0] + 8029598: 601a str r2, [r3, #0] +} + 802959a: bf00 nop + 802959c: 370c adds r7, #12 + 802959e: 46bd mov sp, r7 + 80295a0: f85d 7b04 ldr.w r7, [sp], #4 + 80295a4: 4770 bx lr ... -08029568 : +080295a8 : char is_upper_computer_take_over_control=0; int CH13_S2_Value ; void Fsm_Init() { - 8029568: b580 push {r7, lr} - 802956a: af00 add r7, sp, #0 + 80295a8: b580 push {r7, lr} + 80295aa: af00 add r7, sp, #0 blowers_Control_Init(); // 风机 - 802956c: f7ff ffa4 bl 80294b8 + 80295ac: f7ff ffa4 bl 80294f8 //机器人运动状态初始化 fsm_state_init(¤t_robot_move_state, &robot_halt_state); - 8029570: 4906 ldr r1, [pc, #24] ; (802958c ) - 8029572: 4807 ldr r0, [pc, #28] ; (8029590 ) - 8029574: f7ff ffe9 bl 802954a + 80295b0: 4906 ldr r1, [pc, #24] ; (80295cc ) + 80295b2: 4807 ldr r0, [pc, #28] ; (80295d0 ) + 80295b4: f7ff ffe9 bl 802958a // fsm_state_init(¤t_paintgun_state, &paintgun_off_state); // //机器人推杆供电状态初始化(IO-0、推杆) // fsm_state_init(¤t_motor_power_state, &motor_power_off_state); // 风机PWM初始化 fsm_state_init(¤t_blowers_state, &blowers_off_state);// 风机 - 8029578: 4906 ldr r1, [pc, #24] ; (8029594 ) - 802957a: 4807 ldr r0, [pc, #28] ; (8029598 ) - 802957c: f7ff ffe5 bl 802954a + 80295b8: 4906 ldr r1, [pc, #24] ; (80295d4 ) + 80295ba: 4807 ldr r0, [pc, #28] ; (80295d8 ) + 80295bc: f7ff ffe5 bl 802958a GF_BSP_Interrupt_Add_CallBack( - 8029580: 4906 ldr r1, [pc, #24] ; (802959c ) - 8029582: 200a movs r0, #10 - 8029584: f7f7 fdb0 bl 80210e8 + 80295c0: 4906 ldr r1, [pc, #24] ; (80295dc ) + 80295c2: 200a movs r0, #10 + 80295c4: f7f7 fd90 bl 80210e8 DF_BSP_InterCall_TIM8_2ms_PeriodElapsedCallback, GF_Dispatch); } - 8029588: bf00 nop - 802958a: bd80 pop {r7, pc} - 802958c: 24000068 .word 0x24000068 - 8029590: 2400aedc .word 0x2400aedc - 8029594: 24000048 .word 0x24000048 - 8029598: 2400aec8 .word 0x2400aec8 - 802959c: 080295a1 .word 0x080295a1 + 80295c8: bf00 nop + 80295ca: bd80 pop {r7, pc} + 80295cc: 24000068 .word 0x24000068 + 80295d0: 2400aedc .word 0x2400aedc + 80295d4: 24000048 .word 0x24000048 + 80295d8: 2400aec8 .word 0x2400aec8 + 80295dc: 080295e1 .word 0x080295e1 -080295a0 : +080295e0 : /* * 主逻辑函数 * */ void GF_Dispatch() { - 80295a0: b580 push {r7, lr} - 80295a2: af00 add r7, sp, #0 + 80295e0: b580 push {r7, lr} + 80295e2: af00 add r7, sp, #0 fsm_state_run(¤t_robot_move_state); - 80295a4: 480a ldr r0, [pc, #40] ; (80295d0 ) - 80295a6: f7ff ff95 bl 80294d4 + 80295e4: 480a ldr r0, [pc, #40] ; (8029610 ) + 80295e6: f7ff ff95 bl 8029514 fsm_state_run(¤t_blowers_state);// 风机 - 80295aa: 480a ldr r0, [pc, #40] ; (80295d4 ) - 80295ac: f7ff ff92 bl 80294d4 + 80295ea: 480a ldr r0, [pc, #40] ; (8029614 ) + 80295ec: f7ff ff92 bl 8029514 // if (current_robot_move_state.p_state != &robot_halt_state) // { // IsRobotHaltSateChangedFlag = 1; //机器人动了就是1(用于先停喷枪再停车) // } PV_Data_Reading(); //PV数据更新//按钮复位时 app数据生效 - 80295b0: f000 f9c4 bl 802993c + 80295f0: f000 f9c4 bl 802997c GV.LaneChangeDistance = GV.PV.LaneChangeDistance; - 80295b4: 4b08 ldr r3, [pc, #32] ; (80295d8 ) - 80295b6: f8d3 3170 ldr.w r3, [r3, #368] ; 0x170 - 80295ba: 4a07 ldr r2, [pc, #28] ; (80295d8 ) - 80295bc: 6193 str r3, [r2, #24] + 80295f4: 4b08 ldr r3, [pc, #32] ; (8029618 ) + 80295f6: f8d3 3170 ldr.w r3, [r3, #368] ; 0x170 + 80295fa: 4a07 ldr r2, [pc, #28] ; (8029618 ) + 80295fc: 6193 str r3, [r2, #24] IV_control(); //IV数据更新//串口发送到遥控数据 - 80295be: f000 f9e5 bl 802998c + 80295fe: f000 f9e5 bl 80299cc // if(Move_Halt_AngleError()==1) // { // return; // } MoveControl(); - 80295c2: f000 f82b bl 802961c + 8029602: f000 f82b bl 802965c BlowersControl(); //风机 - 80295c6: f000 f809 bl 80295dc + 8029606: f000 f809 bl 802961c // WireMotorControl(); //卷线电机 } - 80295ca: bf00 nop - 80295cc: bd80 pop {r7, pc} - 80295ce: bf00 nop - 80295d0: 2400aedc .word 0x2400aedc - 80295d4: 2400aec8 .word 0x2400aec8 - 80295d8: 240002b0 .word 0x240002b0 + 802960a: bf00 nop + 802960c: bd80 pop {r7, pc} + 802960e: bf00 nop + 8029610: 2400aedc .word 0x2400aedc + 8029614: 2400aec8 .word 0x2400aec8 + 8029618: 240002b0 .word 0x240002b0 -080295dc : +0802961c : } //uint8_t blowers_pwm_base = 0;//风机调试用 /* 风机运动状态调度 */ void BlowersControl()// 风机 { - 80295dc: b580 push {r7, lr} - 80295de: af00 add r7, sp, #0 + 802961c: b580 push {r7, lr} + 802961e: af00 add r7, sp, #0 // { // blowers_pwm_base = (uint8_t)(abs(P_MK32->CH10_LD1 + 1000) / 200.0f * 10);//0-100/*获取旋钮速度*/ // } // GV.speed_blowers_pwm = blowers_pwm_base;//pwm > 90, 风速最大 GV.speed_blowers_pwm = SetPWM_Auto(); - 80295e0: f7ff fe2e bl 8029240 - 80295e4: 4603 mov r3, r0 - 80295e6: 4a09 ldr r2, [pc, #36] ; (802960c ) - 80295e8: f8c2 3204 str.w r3, [r2, #516] ; 0x204 + 8029620: f7ff fe2e bl 8029280 + 8029624: 4603 mov r3, r0 + 8029626: 4a09 ldr r2, [pc, #36] ; (802964c ) + 8029628: f8c2 3204 str.w r3, [r2, #516] ; 0x204 // 根据转速切换状态机 if (GV.speed_blowers_pwm < 10)//<10就停 - 80295ec: 4b07 ldr r3, [pc, #28] ; (802960c ) - 80295ee: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 - 80295f2: 2b09 cmp r3, #9 - 80295f4: dc04 bgt.n 8029600 + 802962c: 4b07 ldr r3, [pc, #28] ; (802964c ) + 802962e: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 + 8029632: 2b09 cmp r3, #9 + 8029634: dc04 bgt.n 8029640 { fsm_state_set(¤t_blowers_state, &blowers_off_state); - 80295f6: 4906 ldr r1, [pc, #24] ; (8029610 ) - 80295f8: 4806 ldr r0, [pc, #24] ; (8029614 ) - 80295fa: f7ff ff7d bl 80294f8 + 8029636: 4906 ldr r1, [pc, #24] ; (8029650 ) + 8029638: 4806 ldr r0, [pc, #24] ; (8029654 ) + 802963a: f7ff ff7d bl 8029538 } else { fsm_state_set(¤t_blowers_state, &blowers_on_state); } } - 80295fe: e003 b.n 8029608 + 802963e: e003 b.n 8029648 fsm_state_set(¤t_blowers_state, &blowers_on_state); - 8029600: 4905 ldr r1, [pc, #20] ; (8029618 ) - 8029602: 4804 ldr r0, [pc, #16] ; (8029614 ) - 8029604: f7ff ff78 bl 80294f8 -} - 8029608: bf00 nop - 802960a: bd80 pop {r7, pc} - 802960c: 240002b0 .word 0x240002b0 - 8029610: 24000048 .word 0x24000048 - 8029614: 2400aec8 .word 0x2400aec8 - 8029618: 24000038 .word 0x24000038 + 8029640: 4905 ldr r1, [pc, #20] ; (8029658 ) + 8029642: 4804 ldr r0, [pc, #16] ; (8029654 ) + 8029644: f7ff ff78 bl 8029538 +} + 8029648: bf00 nop + 802964a: bd80 pop {r7, pc} + 802964c: 240002b0 .word 0x240002b0 + 8029650: 24000048 .word 0x24000048 + 8029654: 2400aec8 .word 0x2400aec8 + 8029658: 24000038 .word 0x24000038 -0802961c : +0802965c : //int8_t speed_selection = 0;//电机速度调试用 /* 机器人运动状态调度 */ void MoveControl() { - 802961c: b580 push {r7, lr} - 802961e: b084 sub sp, #16 - 8029620: af00 add r7, sp, #0 + 802965c: b580 push {r7, lr} + 802965e: b084 sub sp, #16 + 8029660: af00 add r7, sp, #0 // { // fsm_state_set(¤t_robot_move_state, &robot_halt_state); /*停止机器人*/ // return; // } /* 遥控通讯中断*/ if (Get_BIT(SystemErrorCode, ComError_MK32_SBus) == DISCONNECTED) - 8029622: 4b43 ldr r3, [pc, #268] ; (8029730 ) - 8029624: 681b ldr r3, [r3, #0] - 8029626: 2100 movs r1, #0 - 8029628: 4618 mov r0, r3 - 802962a: f7f7 f86c bl 8020706 - 802962e: 4603 mov r3, r0 - 8029630: 2b01 cmp r3, #1 - 8029632: d104 bne.n 802963e + 8029662: 4b43 ldr r3, [pc, #268] ; (8029770 ) + 8029664: 681b ldr r3, [r3, #0] + 8029666: 2100 movs r1, #0 + 8029668: 4618 mov r0, r3 + 802966a: f7f7 f84c bl 8020706 + 802966e: 4603 mov r3, r0 + 8029670: 2b01 cmp r3, #1 + 8029672: d104 bne.n 802967e { // P_MK32->IsOnline = 0;//GV.P_MK32.IsOnline = 0; fsm_state_set(¤t_robot_move_state, &robot_halt_state); /*停止机器人*/ - 8029634: 493f ldr r1, [pc, #252] ; (8029734 ) - 8029636: 4840 ldr r0, [pc, #256] ; (8029738 ) - 8029638: f7ff ff5e bl 80294f8 + 8029674: 493f ldr r1, [pc, #252] ; (8029774 ) + 8029676: 4840 ldr r0, [pc, #256] ; (8029778 ) + 8029678: f7ff ff5e bl 8029538 return; - 802963c: e074 b.n 8029728 + 802967c: e074 b.n 8029768 } /* 速度选择索引 */ uint8_t speed_selection = (uint8_t)(abs(P_MK32->CH11_RD1 + 1000) / 200.0f * 1);//0-10/*获取旋钮速度*/ - 802963e: 4b3f ldr r3, [pc, #252] ; (802973c ) - 8029640: 681b ldr r3, [r3, #0] - 8029642: 6b1b ldr r3, [r3, #48] ; 0x30 - 8029644: f503 737a add.w r3, r3, #1000 ; 0x3e8 - 8029648: 2b00 cmp r3, #0 - 802964a: bfb8 it lt - 802964c: 425b neglt r3, r3 - 802964e: ee07 3a90 vmov s15, r3 - 8029652: eeb8 7ae7 vcvt.f32.s32 s14, s15 - 8029656: eddf 6a3a vldr s13, [pc, #232] ; 8029740 - 802965a: eec7 7a26 vdiv.f32 s15, s14, s13 - 802965e: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8029662: edc7 7a01 vstr s15, [r7, #4] - 8029666: 793b ldrb r3, [r7, #4] - 8029668: 73fb strb r3, [r7, #15] + 802967e: 4b3f ldr r3, [pc, #252] ; (802977c ) + 8029680: 681b ldr r3, [r3, #0] + 8029682: 6b1b ldr r3, [r3, #48] ; 0x30 + 8029684: f503 737a add.w r3, r3, #1000 ; 0x3e8 + 8029688: 2b00 cmp r3, #0 + 802968a: bfb8 it lt + 802968c: 425b neglt r3, r3 + 802968e: ee07 3a90 vmov s15, r3 + 8029692: eeb8 7ae7 vcvt.f32.s32 s14, s15 + 8029696: eddf 6a3a vldr s13, [pc, #232] ; 8029780 + 802969a: eec7 7a26 vdiv.f32 s15, s14, s13 + 802969e: eefc 7ae7 vcvt.u32.f32 s15, s15 + 80296a2: edc7 7a01 vstr s15, [r7, #4] + 80296a6: 793b ldrb r3, [r7, #4] + 80296a8: 73fb strb r3, [r7, #15] GV.Robot_Move_Speed = speed_selection; - 802966a: 7bfb ldrb r3, [r7, #15] - 802966c: 4a35 ldr r2, [pc, #212] ; (8029744 ) - 802966e: 6113 str r3, [r2, #16] + 80296aa: 7bfb ldrb r3, [r7, #15] + 80296ac: 4a35 ldr r2, [pc, #212] ; (8029784 ) + 80296ae: 6113 str r3, [r2, #16] // GV.Robot_Move_Speed = speed_mpmin_to_rpmin(speed_selection);/*换算速度脉冲*/ CV.LeftTurnSpeed = GV.Robot_Move_Speed/2.0; - 8029670: 4b34 ldr r3, [pc, #208] ; (8029744 ) - 8029672: 691b ldr r3, [r3, #16] - 8029674: ee07 3a90 vmov s15, r3 - 8029678: eeb8 6be7 vcvt.f64.s32 d6, s15 - 802967c: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 8029680: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029684: 4b30 ldr r3, [pc, #192] ; (8029748 ) - 8029686: ed83 7b1e vstr d7, [r3, #120] ; 0x78 + 80296b0: 4b34 ldr r3, [pc, #208] ; (8029784 ) + 80296b2: 691b ldr r3, [r3, #16] + 80296b4: ee07 3a90 vmov s15, r3 + 80296b8: eeb8 6be7 vcvt.f64.s32 d6, s15 + 80296bc: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 80296c0: ee86 7b05 vdiv.f64 d7, d6, d5 + 80296c4: 4b30 ldr r3, [pc, #192] ; (8029788 ) + 80296c6: ed83 7b1e vstr d7, [r3, #120] ; 0x78 CV.RightTurnSpeed = GV.Robot_Move_Speed/2.0; - 802968a: 4b2e ldr r3, [pc, #184] ; (8029744 ) - 802968c: 691b ldr r3, [r3, #16] - 802968e: ee07 3a90 vmov s15, r3 - 8029692: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029696: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 802969a: ee86 7b05 vdiv.f64 d7, d6, d5 - 802969e: 4b2a ldr r3, [pc, #168] ; (8029748 ) - 80296a0: ed83 7b20 vstr d7, [r3, #128] ; 0x80 + 80296ca: 4b2e ldr r3, [pc, #184] ; (8029784 ) + 80296cc: 691b ldr r3, [r3, #16] + 80296ce: ee07 3a90 vmov s15, r3 + 80296d2: eeb8 6be7 vcvt.f64.s32 d6, s15 + 80296d6: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 80296da: ee86 7b05 vdiv.f64 d7, d6, d5 + 80296de: 4b2a ldr r3, [pc, #168] ; (8029788 ) + 80296e0: ed83 7b20 vstr d7, [r3, #128] ; 0x80 // if (LaneChangeControl_Paint() == 1) // { // return; // } if (P_MK32->CH8_SE == -1000 && P_MK32->CH9_SF == -1000 )//急停 - 80296a4: 4b25 ldr r3, [pc, #148] ; (802973c ) - 80296a6: 681b ldr r3, [r3, #0] - 80296a8: 6a5b ldr r3, [r3, #36] ; 0x24 - 80296aa: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 80296ae: d10a bne.n 80296c6 - 80296b0: 4b22 ldr r3, [pc, #136] ; (802973c ) - 80296b2: 681b ldr r3, [r3, #0] - 80296b4: 6a9b ldr r3, [r3, #40] ; 0x28 - 80296b6: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 80296ba: d104 bne.n 80296c6 + 80296e4: 4b25 ldr r3, [pc, #148] ; (802977c ) + 80296e6: 681b ldr r3, [r3, #0] + 80296e8: 6a5b ldr r3, [r3, #36] ; 0x24 + 80296ea: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 80296ee: d10a bne.n 8029706 + 80296f0: 4b22 ldr r3, [pc, #136] ; (802977c ) + 80296f2: 681b ldr r3, [r3, #0] + 80296f4: 6a9b ldr r3, [r3, #40] ; 0x28 + 80296f6: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 80296fa: d104 bne.n 8029706 { fsm_state_set(¤t_robot_move_state, &robot_halt_state); /*停止机器人*/ - 80296bc: 491d ldr r1, [pc, #116] ; (8029734 ) - 80296be: 481e ldr r0, [pc, #120] ; (8029738 ) - 80296c0: f7ff ff1a bl 80294f8 + 80296fc: 491d ldr r1, [pc, #116] ; (8029774 ) + 80296fe: 481e ldr r0, [pc, #120] ; (8029778 ) + 8029700: f7ff ff1a bl 8029538 return; - 80296c4: e030 b.n 8029728 + 8029704: e030 b.n 8029768 } if (P_MK32->CH7_SD == -1000)//自动作业 - 80296c6: 4b1d ldr r3, [pc, #116] ; (802973c ) - 80296c8: 681b ldr r3, [r3, #0] - 80296ca: 6a1b ldr r3, [r3, #32] - 80296cc: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 80296d0: d104 bne.n 80296dc + 8029706: 4b1d ldr r3, [pc, #116] ; (802977c ) + 8029708: 681b ldr r3, [r3, #0] + 802970a: 6a1b ldr r3, [r3, #32] + 802970c: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 8029710: d104 bne.n 802971c { // Automatic_task_Control(); fsm_state_set(¤t_robot_move_state, &robot_Automatic_task_state); /*自动作业*/ - 80296d2: 491e ldr r1, [pc, #120] ; (802974c ) - 80296d4: 4818 ldr r0, [pc, #96] ; (8029738 ) - 80296d6: f7ff ff0f bl 80294f8 + 8029712: 491e ldr r1, [pc, #120] ; (802978c ) + 8029714: 4818 ldr r0, [pc, #96] ; (8029778 ) + 8029716: f7ff ff0f bl 8029538 return; - 80296da: e025 b.n 8029728 + 802971a: e025 b.n 8029768 } if (P_MK32->CH4_SA == -1000)//换道(后退) - 80296dc: 4b17 ldr r3, [pc, #92] ; (802973c ) - 80296de: 681b ldr r3, [r3, #0] - 80296e0: 695b ldr r3, [r3, #20] - 80296e2: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 80296e6: d104 bne.n 80296f2 + 802971c: 4b17 ldr r3, [pc, #92] ; (802977c ) + 802971e: 681b ldr r3, [r3, #0] + 8029720: 695b ldr r3, [r3, #20] + 8029722: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 8029726: d104 bne.n 8029732 { // Auto_ChangeLine_Control(1); fsm_state_set(¤t_robot_move_state, &robot_Auto_ChangeLine_state); /*换道*/ - 80296e8: 4919 ldr r1, [pc, #100] ; (8029750 ) - 80296ea: 4813 ldr r0, [pc, #76] ; (8029738 ) - 80296ec: f7ff ff04 bl 80294f8 + 8029728: 4919 ldr r1, [pc, #100] ; (8029790 ) + 802972a: 4813 ldr r0, [pc, #76] ; (8029778 ) + 802972c: f7ff ff04 bl 8029538 return; - 80296f0: e01a b.n 8029728 + 8029730: e01a b.n 8029768 } if (P_MK32->CH4_SA == 0)//停止换道 - 80296f2: 4b12 ldr r3, [pc, #72] ; (802973c ) - 80296f4: 681b ldr r3, [r3, #0] - 80296f6: 695b ldr r3, [r3, #20] - 80296f8: 2b00 cmp r3, #0 - 80296fa: d101 bne.n 8029700 + 8029732: 4b12 ldr r3, [pc, #72] ; (802977c ) + 8029734: 681b ldr r3, [r3, #0] + 8029736: 695b ldr r3, [r3, #20] + 8029738: 2b00 cmp r3, #0 + 802973a: d101 bne.n 8029740 { Refresh_MK32_State();//刷新换道状态 - 80296fc: f7ff fab2 bl 8028c64 + 802973c: f7ff fab2 bl 8028ca4 } if (P_MK32->CH5_SB == -1000) //自动巡航前进模式 不是换道和自动就能用 - 8029700: 4b0e ldr r3, [pc, #56] ; (802973c ) - 8029702: 681b ldr r3, [r3, #0] - 8029704: 699b ldr r3, [r3, #24] - 8029706: f513 7f7a cmn.w r3, #1000 ; 0x3e8 - 802970a: d102 bne.n 8029712 + 8029740: 4b0e ldr r3, [pc, #56] ; (802977c ) + 8029742: 681b ldr r3, [r3, #0] + 8029744: 699b ldr r3, [r3, #24] + 8029746: f513 7f7a cmn.w r3, #1000 ; 0x3e8 + 802974a: d102 bne.n 8029752 { paintrobot_forwards(); - 802970c: f000 f822 bl 8029754 + 802974c: f000 f822 bl 8029794 return; - 8029710: e00a b.n 8029728 + 8029750: e00a b.n 8029768 } if (P_MK32->CH5_SB == 1000) //自动巡航后退模式,根据app,模式自动选择纠偏与否 - 8029712: 4b0a ldr r3, [pc, #40] ; (802973c ) - 8029714: 681b ldr r3, [r3, #0] - 8029716: 699b ldr r3, [r3, #24] - 8029718: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 802971c: d102 bne.n 8029724 + 8029752: 4b0a ldr r3, [pc, #40] ; (802977c ) + 8029754: 681b ldr r3, [r3, #0] + 8029756: 699b ldr r3, [r3, #24] + 8029758: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 802975c: d102 bne.n 8029764 { paintrobot_backwards(); - 802971e: f000 f83f bl 80297a0 + 802975e: f000 f83f bl 80297e0 return; - 8029722: e001 b.n 8029728 + 8029762: e001 b.n 8029768 } paint_joysticker_manual_control(); //摇杆手动控制 - 8029724: f000 f864 bl 80297f0 -} - 8029728: 3710 adds r7, #16 - 802972a: 46bd mov sp, r7 - 802972c: bd80 pop {r7, pc} - 802972e: bf00 nop - 8029730: 240001d0 .word 0x240001d0 - 8029734: 24000068 .word 0x24000068 - 8029738: 2400aedc .word 0x2400aedc - 802973c: 2400ad24 .word 0x2400ad24 - 8029740: 43480000 .word 0x43480000 - 8029744: 240002b0 .word 0x240002b0 - 8029748: 240001d8 .word 0x240001d8 - 802974c: 240000d8 .word 0x240000d8 - 8029750: 240000e8 .word 0x240000e8 - -08029754 : + 8029764: f000 f864 bl 8029830 +} + 8029768: 3710 adds r7, #16 + 802976a: 46bd mov sp, r7 + 802976c: bd80 pop {r7, pc} + 802976e: bf00 nop + 8029770: 240001d0 .word 0x240001d0 + 8029774: 24000068 .word 0x24000068 + 8029778: 2400aedc .word 0x2400aedc + 802977c: 2400ad24 .word 0x2400ad24 + 8029780: 43480000 .word 0x43480000 + 8029784: 240002b0 .word 0x240002b0 + 8029788: 240001d8 .word 0x240001d8 + 802978c: 240000d8 .word 0x240000d8 + 8029790: 240000e8 .word 0x240000e8 + +08029794 : * @function 前进 * @param 无 * @retval 无 */ void paintrobot_forwards() { - 8029754: b580 push {r7, lr} - 8029756: af00 add r7, sp, #0 + 8029794: b580 push {r7, lr} + 8029796: af00 add r7, sp, #0 /* 竖直向左 向右 */ if (GV.PV.RunMode == Move_Vertical_Move_To_Left ) - 8029758: 4b0c ldr r3, [pc, #48] ; (802978c ) - 802975a: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 802975e: 2b02 cmp r3, #2 - 8029760: d104 bne.n 802976c + 8029798: 4b0c ldr r3, [pc, #48] ; (80297cc ) + 802979a: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 802979e: 2b02 cmp r3, #2 + 80297a0: d104 bne.n 80297ac { fsm_state_set(¤t_robot_move_state, &robot_move_vertical_task_forwards_state);/* 前进纠偏 */ - 8029762: 490b ldr r1, [pc, #44] ; (8029790 ) - 8029764: 480b ldr r0, [pc, #44] ; (8029794 ) - 8029766: f7ff fec7 bl 80294f8 + 80297a2: 490b ldr r1, [pc, #44] ; (80297d0 ) + 80297a4: 480b ldr r0, [pc, #44] ; (80297d4 ) + 80297a6: f7ff fec7 bl 8029538 return; - 802976a: e00e b.n 802978a + 80297aa: e00e b.n 80297ca } /* 水平 */ if (GV.PV.RunMode == Move_Vertical_Move_To_Right) - 802976c: 4b07 ldr r3, [pc, #28] ; (802978c ) - 802976e: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 8029772: 2b03 cmp r3, #3 - 8029774: d104 bne.n 8029780 + 80297ac: 4b07 ldr r3, [pc, #28] ; (80297cc ) + 80297ae: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 80297b2: 2b03 cmp r3, #3 + 80297b4: d104 bne.n 80297c0 { fsm_state_set(¤t_robot_move_state, &robot_move_horizontal_task_forwards_state);/* 前进纠偏 */ - 8029776: 4908 ldr r1, [pc, #32] ; (8029798 ) - 8029778: 4806 ldr r0, [pc, #24] ; (8029794 ) - 802977a: f7ff febd bl 80294f8 + 80297b6: 4908 ldr r1, [pc, #32] ; (80297d8 ) + 80297b8: 4806 ldr r0, [pc, #24] ; (80297d4 ) + 80297ba: f7ff febd bl 8029538 return; - 802977e: e004 b.n 802978a + 80297be: e004 b.n 80297ca } fsm_state_set(¤t_robot_move_state, &robot_forwards_state);/* app 无 前进纠偏 */ - 8029780: 4906 ldr r1, [pc, #24] ; (802979c ) - 8029782: 4804 ldr r0, [pc, #16] ; (8029794 ) - 8029784: f7ff feb8 bl 80294f8 + 80297c0: 4906 ldr r1, [pc, #24] ; (80297dc ) + 80297c2: 4804 ldr r0, [pc, #16] ; (80297d4 ) + 80297c4: f7ff feb8 bl 8029538 return; - 8029788: bf00 nop + 80297c8: bf00 nop } - 802978a: bd80 pop {r7, pc} - 802978c: 240002b0 .word 0x240002b0 - 8029790: 240000b8 .word 0x240000b8 - 8029794: 2400aedc .word 0x2400aedc - 8029798: 240000f8 .word 0x240000f8 - 802979c: 24000078 .word 0x24000078 + 80297ca: bd80 pop {r7, pc} + 80297cc: 240002b0 .word 0x240002b0 + 80297d0: 240000b8 .word 0x240000b8 + 80297d4: 2400aedc .word 0x2400aedc + 80297d8: 240000f8 .word 0x240000f8 + 80297dc: 24000078 .word 0x24000078 -080297a0 : +080297e0 : * @function 自动后退: 竖直模式下 * @param 无 * @retval 无 */ void paintrobot_backwards() { - 80297a0: b580 push {r7, lr} - 80297a2: af00 add r7, sp, #0 + 80297e0: b580 push {r7, lr} + 80297e2: af00 add r7, sp, #0 /*竖直*/ if (GV.PV.RunMode == Move_Vertical_Move_To_Left) - 80297a4: 4b0c ldr r3, [pc, #48] ; (80297d8 ) - 80297a6: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 80297aa: 2b02 cmp r3, #2 - 80297ac: d104 bne.n 80297b8 + 80297e4: 4b0c ldr r3, [pc, #48] ; (8029818 ) + 80297e6: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 80297ea: 2b02 cmp r3, #2 + 80297ec: d104 bne.n 80297f8 { fsm_state_set(¤t_robot_move_state, &robot_move_vertical_task_backwards_state);/* 后退纠偏 */ - 80297ae: 490b ldr r1, [pc, #44] ; (80297dc ) - 80297b0: 480b ldr r0, [pc, #44] ; (80297e0 ) - 80297b2: f7ff fea1 bl 80294f8 + 80297ee: 490b ldr r1, [pc, #44] ; (802981c ) + 80297f0: 480b ldr r0, [pc, #44] ; (8029820 ) + 80297f2: f7ff fea1 bl 8029538 return; - 80297b6: e00e b.n 80297d6 + 80297f6: e00e b.n 8029816 } /* 水平 */ if (GV.PV.RunMode == Move_Vertical_Move_To_Right) - 80297b8: 4b07 ldr r3, [pc, #28] ; (80297d8 ) - 80297ba: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 - 80297be: 2b03 cmp r3, #3 - 80297c0: d104 bne.n 80297cc + 80297f8: 4b07 ldr r3, [pc, #28] ; (8029818 ) + 80297fa: f8d3 3168 ldr.w r3, [r3, #360] ; 0x168 + 80297fe: 2b03 cmp r3, #3 + 8029800: d104 bne.n 802980c { fsm_state_set(¤t_robot_move_state, &robot_move_horizontal_task_backwards_state);/* 后退纠偏 */ - 80297c2: 4908 ldr r1, [pc, #32] ; (80297e4 ) - 80297c4: 4806 ldr r0, [pc, #24] ; (80297e0 ) - 80297c6: f7ff fe97 bl 80294f8 + 8029802: 4908 ldr r1, [pc, #32] ; (8029824 ) + 8029804: 4806 ldr r0, [pc, #24] ; (8029820 ) + 8029806: f7ff fe97 bl 8029538 return; - 80297ca: e004 b.n 80297d6 + 802980a: e004 b.n 8029816 } fsm_state_set(¤t_robot_move_state, &robot_backwards_state);/* 后退 */ - 80297cc: 4906 ldr r1, [pc, #24] ; (80297e8 ) - 80297ce: 4804 ldr r0, [pc, #16] ; (80297e0 ) - 80297d0: f7ff fe92 bl 80294f8 + 802980c: 4906 ldr r1, [pc, #24] ; (8029828 ) + 802980e: 4804 ldr r0, [pc, #16] ; (8029820 ) + 8029810: f7ff fe92 bl 8029538 return; - 80297d4: bf00 nop + 8029814: bf00 nop } - 80297d6: bd80 pop {r7, pc} - 80297d8: 240002b0 .word 0x240002b0 - 80297dc: 240000c8 .word 0x240000c8 - 80297e0: 2400aedc .word 0x2400aedc - 80297e4: 24000108 .word 0x24000108 - 80297e8: 24000088 .word 0x24000088 - 80297ec: 00000000 .word 0x00000000 + 8029816: bd80 pop {r7, pc} + 8029818: 240002b0 .word 0x240002b0 + 802981c: 240000c8 .word 0x240000c8 + 8029820: 2400aedc .word 0x2400aedc + 8029824: 24000108 .word 0x24000108 + 8029828: 24000088 .word 0x24000088 + 802982c: 00000000 .word 0x00000000 -080297f0 : +08029830 : /** * @brief 手动模式下运动,根据左侧控制按钮的值进行控制 * @detail 前进,后退;水平模式下的前进后退,需要有校准,竖直的前进后退也需要有校准 */ void paint_joysticker_manual_control() { - 80297f0: b580 push {r7, lr} - 80297f2: b082 sub sp, #8 - 80297f4: af00 add r7, sp, #0 + 8029830: b580 push {r7, lr} + 8029832: b082 sub sp, #8 + 8029834: af00 add r7, sp, #0 // paintrobot_forwards();//调试用 // return;//调试用 /*停止*/ if (abs(P_MK32->CH2_LY_V) <= CV.Joy_Sticker_Value_Allowance && abs(P_MK32->CH3_LY_H) <= CV.Joy_Sticker_Value_Allowance) - 80297f6: 4b4a ldr r3, [pc, #296] ; (8029920 ) - 80297f8: 681b ldr r3, [r3, #0] - 80297fa: 68db ldr r3, [r3, #12] - 80297fc: ea83 72e3 eor.w r2, r3, r3, asr #31 - 8029800: eba2 72e3 sub.w r2, r2, r3, asr #31 - 8029804: 4b47 ldr r3, [pc, #284] ; (8029924 ) - 8029806: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 802980a: 429a cmp r2, r3 - 802980c: dc13 bgt.n 8029836 - 802980e: 4b44 ldr r3, [pc, #272] ; (8029920 ) - 8029810: 681b ldr r3, [r3, #0] - 8029812: 691b ldr r3, [r3, #16] - 8029814: ea83 72e3 eor.w r2, r3, r3, asr #31 - 8029818: eba2 72e3 sub.w r2, r2, r3, asr #31 - 802981c: 4b41 ldr r3, [pc, #260] ; (8029924 ) - 802981e: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8029822: 429a cmp r2, r3 - 8029824: dc07 bgt.n 8029836 + 8029836: 4b4a ldr r3, [pc, #296] ; (8029960 ) + 8029838: 681b ldr r3, [r3, #0] + 802983a: 68db ldr r3, [r3, #12] + 802983c: ea83 72e3 eor.w r2, r3, r3, asr #31 + 8029840: eba2 72e3 sub.w r2, r2, r3, asr #31 + 8029844: 4b47 ldr r3, [pc, #284] ; (8029964 ) + 8029846: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 802984a: 429a cmp r2, r3 + 802984c: dc13 bgt.n 8029876 + 802984e: 4b44 ldr r3, [pc, #272] ; (8029960 ) + 8029850: 681b ldr r3, [r3, #0] + 8029852: 691b ldr r3, [r3, #16] + 8029854: ea83 72e3 eor.w r2, r3, r3, asr #31 + 8029858: eba2 72e3 sub.w r2, r2, r3, asr #31 + 802985c: 4b41 ldr r3, [pc, #260] ; (8029964 ) + 802985e: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8029862: 429a cmp r2, r3 + 8029864: dc07 bgt.n 8029876 { Index_Joy = 1; - 8029826: 4b40 ldr r3, [pc, #256] ; (8029928 ) - 8029828: 2201 movs r2, #1 - 802982a: 701a strb r2, [r3, #0] + 8029866: 4b40 ldr r3, [pc, #256] ; (8029968 ) + 8029868: 2201 movs r2, #1 + 802986a: 701a strb r2, [r3, #0] fsm_state_set(¤t_robot_move_state, &robot_halt_state); /*停止机器人*/ - 802982c: 493f ldr r1, [pc, #252] ; (802992c ) - 802982e: 4840 ldr r0, [pc, #256] ; (8029930 ) - 8029830: f7ff fe62 bl 80294f8 + 802986c: 493f ldr r1, [pc, #252] ; (802996c ) + 802986e: 4840 ldr r0, [pc, #256] ; (8029970 ) + 8029870: f7ff fe62 bl 8029538 return; - 8029834: e069 b.n 802990a + 8029874: e069 b.n 802994a } //double atan2(double y, double x) //返回以弧度表示的 y/x 的反正切(-pi,pi) int angle = atan2(P_MK32->CH2_LY_V, P_MK32->CH3_LY_H) * 180 / M_PI; - 8029836: 4b3a ldr r3, [pc, #232] ; (8029920 ) - 8029838: 681b ldr r3, [r3, #0] - 802983a: 68db ldr r3, [r3, #12] - 802983c: ee07 3a90 vmov s15, r3 - 8029840: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029844: 4b36 ldr r3, [pc, #216] ; (8029920 ) - 8029846: 681b ldr r3, [r3, #0] - 8029848: 691b ldr r3, [r3, #16] - 802984a: ee06 3a90 vmov s13, r3 - 802984e: eeb8 6be6 vcvt.f64.s32 d6, s13 - 8029852: eeb0 1b46 vmov.f64 d1, d6 - 8029856: eeb0 0b47 vmov.f64 d0, d7 - 802985a: f01f fcd7 bl 804920c - 802985e: eeb0 7b40 vmov.f64 d7, d0 - 8029862: ed9f 6b2b vldr d6, [pc, #172] ; 8029910 - 8029866: ee27 6b06 vmul.f64 d6, d7, d6 - 802986a: ed9f 5b2b vldr d5, [pc, #172] ; 8029918 - 802986e: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029872: eefd 7bc7 vcvt.s32.f64 s15, d7 - 8029876: ee17 3a90 vmov r3, s15 - 802987a: 607b str r3, [r7, #4] + 8029876: 4b3a ldr r3, [pc, #232] ; (8029960 ) + 8029878: 681b ldr r3, [r3, #0] + 802987a: 68db ldr r3, [r3, #12] + 802987c: ee07 3a90 vmov s15, r3 + 8029880: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029884: 4b36 ldr r3, [pc, #216] ; (8029960 ) + 8029886: 681b ldr r3, [r3, #0] + 8029888: 691b ldr r3, [r3, #16] + 802988a: ee06 3a90 vmov s13, r3 + 802988e: eeb8 6be6 vcvt.f64.s32 d6, s13 + 8029892: eeb0 1b46 vmov.f64 d1, d6 + 8029896: eeb0 0b47 vmov.f64 d0, d7 + 802989a: f01f fcd7 bl 804924c + 802989e: eeb0 7b40 vmov.f64 d7, d0 + 80298a2: ed9f 6b2b vldr d6, [pc, #172] ; 8029950 + 80298a6: ee27 6b06 vmul.f64 d6, d7, d6 + 80298aa: ed9f 5b2b vldr d5, [pc, #172] ; 8029958 + 80298ae: ee86 7b05 vdiv.f64 d7, d6, d5 + 80298b2: eefd 7bc7 vcvt.s32.f64 s15, d7 + 80298b6: ee17 3a90 vmov r3, s15 + 80298ba: 607b str r3, [r7, #4] //anangle = angle; /*前进*/ if (abs(angle - 90) <= CV.Joy_Sticker_Angle_Allowance) - 802987c: 687b ldr r3, [r7, #4] - 802987e: 3b5a subs r3, #90 ; 0x5a - 8029880: ea83 72e3 eor.w r2, r3, r3, asr #31 - 8029884: eba2 72e3 sub.w r2, r2, r3, asr #31 - 8029888: 4b26 ldr r3, [pc, #152] ; (8029924 ) - 802988a: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 802988e: 429a cmp r2, r3 - 8029890: dc05 bgt.n 802989e + 80298bc: 687b ldr r3, [r7, #4] + 80298be: 3b5a subs r3, #90 ; 0x5a + 80298c0: ea83 72e3 eor.w r2, r3, r3, asr #31 + 80298c4: eba2 72e3 sub.w r2, r2, r3, asr #31 + 80298c8: 4b26 ldr r3, [pc, #152] ; (8029964 ) + 80298ca: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 80298ce: 429a cmp r2, r3 + 80298d0: dc05 bgt.n 80298de { Index_Joy = 2; - 8029892: 4b25 ldr r3, [pc, #148] ; (8029928 ) - 8029894: 2202 movs r2, #2 - 8029896: 701a strb r2, [r3, #0] + 80298d2: 4b25 ldr r3, [pc, #148] ; (8029968 ) + 80298d4: 2202 movs r2, #2 + 80298d6: 701a strb r2, [r3, #0] paintrobot_forwards(); //根据app模式选择纠偏与不纠偏 - 8029898: f7ff ff5c bl 8029754 + 80298d8: f7ff ff5c bl 8029794 return; - 802989c: e035 b.n 802990a + 80298dc: e035 b.n 802994a } /*后退*/ if (abs(angle - (-90)) <= CV.Joy_Sticker_Angle_Allowance) - 802989e: 687b ldr r3, [r7, #4] - 80298a0: 335a adds r3, #90 ; 0x5a - 80298a2: ea83 72e3 eor.w r2, r3, r3, asr #31 - 80298a6: eba2 72e3 sub.w r2, r2, r3, asr #31 - 80298aa: 4b1e ldr r3, [pc, #120] ; (8029924 ) - 80298ac: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 80298b0: 429a cmp r2, r3 - 80298b2: dc05 bgt.n 80298c0 + 80298de: 687b ldr r3, [r7, #4] + 80298e0: 335a adds r3, #90 ; 0x5a + 80298e2: ea83 72e3 eor.w r2, r3, r3, asr #31 + 80298e6: eba2 72e3 sub.w r2, r2, r3, asr #31 + 80298ea: 4b1e ldr r3, [pc, #120] ; (8029964 ) + 80298ec: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 80298f0: 429a cmp r2, r3 + 80298f2: dc05 bgt.n 8029900 { Index_Joy = 3; - 80298b4: 4b1c ldr r3, [pc, #112] ; (8029928 ) - 80298b6: 2203 movs r2, #3 - 80298b8: 701a strb r2, [r3, #0] + 80298f4: 4b1c ldr r3, [pc, #112] ; (8029968 ) + 80298f6: 2203 movs r2, #3 + 80298f8: 701a strb r2, [r3, #0] paintrobot_backwards(); - 80298ba: f7ff ff71 bl 80297a0 + 80298fa: f7ff ff71 bl 80297e0 return; - 80298be: e024 b.n 802990a + 80298fe: e024 b.n 802994a } /*右转*/ if (abs(angle - 0) <= CV.Joy_Sticker_Angle_Allowance) - 80298c0: 687b ldr r3, [r7, #4] - 80298c2: ea83 72e3 eor.w r2, r3, r3, asr #31 - 80298c6: eba2 72e3 sub.w r2, r2, r3, asr #31 - 80298ca: 4b16 ldr r3, [pc, #88] ; (8029924 ) - 80298cc: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 80298d0: 429a cmp r2, r3 - 80298d2: dc07 bgt.n 80298e4 + 8029900: 687b ldr r3, [r7, #4] + 8029902: ea83 72e3 eor.w r2, r3, r3, asr #31 + 8029906: eba2 72e3 sub.w r2, r2, r3, asr #31 + 802990a: 4b16 ldr r3, [pc, #88] ; (8029964 ) + 802990c: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 8029910: 429a cmp r2, r3 + 8029912: dc07 bgt.n 8029924 { Index_Joy = 4; - 80298d4: 4b14 ldr r3, [pc, #80] ; (8029928 ) - 80298d6: 2204 movs r2, #4 - 80298d8: 701a strb r2, [r3, #0] + 8029914: 4b14 ldr r3, [pc, #80] ; (8029968 ) + 8029916: 2204 movs r2, #4 + 8029918: 701a strb r2, [r3, #0] fsm_state_set(¤t_robot_move_state, &robot_turn_right_state); /*右转*/ - 80298da: 4916 ldr r1, [pc, #88] ; (8029934 ) - 80298dc: 4814 ldr r0, [pc, #80] ; (8029930 ) - 80298de: f7ff fe0b bl 80294f8 + 802991a: 4916 ldr r1, [pc, #88] ; (8029974 ) + 802991c: 4814 ldr r0, [pc, #80] ; (8029970 ) + 802991e: f7ff fe0b bl 8029538 return; - 80298e2: e012 b.n 802990a + 8029922: e012 b.n 802994a } /*左转*/ //if (abs(angle - 180) <= CV.Joy_Sticker_Angle_Allowance || abs(angle - (-180)) <= CV.Joy_Sticker_Angle_Allowance) if (180 - abs(angle) <= CV.Joy_Sticker_Angle_Allowance) - 80298e4: 687b ldr r3, [r7, #4] - 80298e6: 2b00 cmp r3, #0 - 80298e8: bfb8 it lt - 80298ea: 425b neglt r3, r3 - 80298ec: f1c3 02b4 rsb r2, r3, #180 ; 0xb4 - 80298f0: 4b0c ldr r3, [pc, #48] ; (8029924 ) - 80298f2: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 80298f6: 429a cmp r2, r3 - 80298f8: dc07 bgt.n 802990a + 8029924: 687b ldr r3, [r7, #4] + 8029926: 2b00 cmp r3, #0 + 8029928: bfb8 it lt + 802992a: 425b neglt r3, r3 + 802992c: f1c3 02b4 rsb r2, r3, #180 ; 0xb4 + 8029930: 4b0c ldr r3, [pc, #48] ; (8029964 ) + 8029932: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 8029936: 429a cmp r2, r3 + 8029938: dc07 bgt.n 802994a { Index_Joy = 5; - 80298fa: 4b0b ldr r3, [pc, #44] ; (8029928 ) - 80298fc: 2205 movs r2, #5 - 80298fe: 701a strb r2, [r3, #0] + 802993a: 4b0b ldr r3, [pc, #44] ; (8029968 ) + 802993c: 2205 movs r2, #5 + 802993e: 701a strb r2, [r3, #0] fsm_state_set(¤t_robot_move_state, &robot_turn_left_state); /*左转*/ - 8029900: 490d ldr r1, [pc, #52] ; (8029938 ) - 8029902: 480b ldr r0, [pc, #44] ; (8029930 ) - 8029904: f7ff fdf8 bl 80294f8 + 8029940: 490d ldr r1, [pc, #52] ; (8029978 ) + 8029942: 480b ldr r0, [pc, #44] ; (8029970 ) + 8029944: f7ff fdf8 bl 8029538 return; - 8029908: bf00 nop + 8029948: bf00 nop } } - 802990a: 3708 adds r7, #8 - 802990c: 46bd mov sp, r7 - 802990e: bd80 pop {r7, pc} - 8029910: 00000000 .word 0x00000000 - 8029914: 40668000 .word 0x40668000 - 8029918: 54442d18 .word 0x54442d18 - 802991c: 400921fb .word 0x400921fb - 8029920: 2400ad24 .word 0x2400ad24 - 8029924: 240001d8 .word 0x240001d8 - 8029928: 2400aecd .word 0x2400aecd - 802992c: 24000068 .word 0x24000068 - 8029930: 2400aedc .word 0x2400aedc - 8029934: 240000a8 .word 0x240000a8 - 8029938: 24000098 .word 0x24000098 + 802994a: 3708 adds r7, #8 + 802994c: 46bd mov sp, r7 + 802994e: bd80 pop {r7, pc} + 8029950: 00000000 .word 0x00000000 + 8029954: 40668000 .word 0x40668000 + 8029958: 54442d18 .word 0x54442d18 + 802995c: 400921fb .word 0x400921fb + 8029960: 2400ad24 .word 0x2400ad24 + 8029964: 240001d8 .word 0x240001d8 + 8029968: 2400aecd .word 0x2400aecd + 802996c: 24000068 .word 0x24000068 + 8029970: 2400aedc .word 0x2400aedc + 8029974: 240000a8 .word 0x240000a8 + 8029978: 24000098 .word 0x24000098 -0802993c : +0802997c : } /* 暂存App传输的PV数据,用于在业务执行过程中进行数据隔离 */ void PV_Data_Reading() //按钮复位时 app数据生效 { - 802993c: b4b0 push {r4, r5, r7} - 802993e: af00 add r7, sp, #0 + 802997c: b4b0 push {r4, r5, r7} + 802997e: af00 add r7, sp, #0 if (P_MK32->CH4_SA == 0 && P_MK32->CH5_SB == 0 && P_MK32->CH7_SD == 0) - 8029940: 4b0f ldr r3, [pc, #60] ; (8029980 ) - 8029942: 681b ldr r3, [r3, #0] - 8029944: 695b ldr r3, [r3, #20] - 8029946: 2b00 cmp r3, #0 - 8029948: d116 bne.n 8029978 - 802994a: 4b0d ldr r3, [pc, #52] ; (8029980 ) - 802994c: 681b ldr r3, [r3, #0] - 802994e: 699b ldr r3, [r3, #24] - 8029950: 2b00 cmp r3, #0 - 8029952: d111 bne.n 8029978 - 8029954: 4b0a ldr r3, [pc, #40] ; (8029980 ) - 8029956: 681b ldr r3, [r3, #0] - 8029958: 6a1b ldr r3, [r3, #32] - 802995a: 2b00 cmp r3, #0 - 802995c: d10c bne.n 8029978 + 8029980: 4b0f ldr r3, [pc, #60] ; (80299c0 ) + 8029982: 681b ldr r3, [r3, #0] + 8029984: 695b ldr r3, [r3, #20] + 8029986: 2b00 cmp r3, #0 + 8029988: d116 bne.n 80299b8 + 802998a: 4b0d ldr r3, [pc, #52] ; (80299c0 ) + 802998c: 681b ldr r3, [r3, #0] + 802998e: 699b ldr r3, [r3, #24] + 8029990: 2b00 cmp r3, #0 + 8029992: d111 bne.n 80299b8 + 8029994: 4b0a ldr r3, [pc, #40] ; (80299c0 ) + 8029996: 681b ldr r3, [r3, #0] + 8029998: 6a1b ldr r3, [r3, #32] + 802999a: 2b00 cmp r3, #0 + 802999c: d10c bne.n 80299b8 { //只有在所有指定按钮都释放时,才更新过程变量 GV.PV = decoded_PV;//通过串口从遥控接收数据 - 802995e: 4b09 ldr r3, [pc, #36] ; (8029984 ) - 8029960: 4a09 ldr r2, [pc, #36] ; (8029988 ) - 8029962: f503 74b4 add.w r4, r3, #360 ; 0x168 - 8029966: 4615 mov r5, r2 - 8029968: cd0f ldmia r5!, {r0, r1, r2, r3} - 802996a: c40f stmia r4!, {r0, r1, r2, r3} - 802996c: cd0f ldmia r5!, {r0, r1, r2, r3} - 802996e: c40f stmia r4!, {r0, r1, r2, r3} - 8029970: e895 0003 ldmia.w r5, {r0, r1} - 8029974: e884 0003 stmia.w r4, {r0, r1} + 802999e: 4b09 ldr r3, [pc, #36] ; (80299c4 ) + 80299a0: 4a09 ldr r2, [pc, #36] ; (80299c8 ) + 80299a2: f503 74b4 add.w r4, r3, #360 ; 0x168 + 80299a6: 4615 mov r5, r2 + 80299a8: cd0f ldmia r5!, {r0, r1, r2, r3} + 80299aa: c40f stmia r4!, {r0, r1, r2, r3} + 80299ac: cd0f ldmia r5!, {r0, r1, r2, r3} + 80299ae: c40f stmia r4!, {r0, r1, r2, r3} + 80299b0: e895 0003 ldmia.w r5, {r0, r1} + 80299b4: e884 0003 stmia.w r4, {r0, r1} } } - 8029978: bf00 nop - 802997a: 46bd mov sp, r7 - 802997c: bcb0 pop {r4, r5, r7} - 802997e: 4770 bx lr - 8029980: 2400ad24 .word 0x2400ad24 - 8029984: 240002b0 .word 0x240002b0 - 8029988: 24000500 .word 0x24000500 + 80299b8: bf00 nop + 80299ba: 46bd mov sp, r7 + 80299bc: bcb0 pop {r4, r5, r7} + 80299be: 4770 bx lr + 80299c0: 2400ad24 .word 0x2400ad24 + 80299c4: 240002b0 .word 0x240002b0 + 80299c8: 24000500 .word 0x24000500 -0802998c : +080299cc : /* IV 更新 */ void IV_control() { - 802998c: b480 push {r7} - 802998e: af00 add r7, sp, #0 + 80299cc: b480 push {r7} + 80299ce: af00 add r7, sp, #0 IV.CurrentAngle = GV.Robot_Angle; - 8029990: 4b19 ldr r3, [pc, #100] ; (80299f8 ) - 8029992: 68db ldr r3, [r3, #12] - 8029994: 4a19 ldr r2, [pc, #100] ; (80299fc ) - 8029996: 6013 str r3, [r2, #0] + 80299d0: 4b19 ldr r3, [pc, #100] ; (8029a38 ) + 80299d2: 68db ldr r3, [r3, #12] + 80299d4: 4a19 ldr r2, [pc, #100] ; (8029a3c ) + 80299d6: 6013 str r3, [r2, #0] IV.RobotMoveSpeed = GV.Robot_Move_Speed;//GV.Robot_Move_Speed; - 8029998: 4b17 ldr r3, [pc, #92] ; (80299f8 ) - 802999a: 691b ldr r3, [r3, #16] - 802999c: 4a17 ldr r2, [pc, #92] ; (80299fc ) - 802999e: 6053 str r3, [r2, #4] + 80299d8: 4b17 ldr r3, [pc, #92] ; (8029a38 ) + 80299da: 691b ldr r3, [r3, #16] + 80299dc: 4a17 ldr r2, [pc, #92] ; (8029a3c ) + 80299de: 6053 str r3, [r2, #4] IV.SBUS_State = GV.P_MK32.IsOnline;//P_MK32->IsOnline is But_Value[17] - 80299a0: 4b15 ldr r3, [pc, #84] ; (80299f8 ) - 80299a2: 6e5b ldr r3, [r3, #100] ; 0x64 - 80299a4: 4a15 ldr r2, [pc, #84] ; (80299fc ) - 80299a6: 6093 str r3, [r2, #8] + 80299e0: 4b15 ldr r3, [pc, #84] ; (8029a38 ) + 80299e2: 6e5b ldr r3, [r3, #100] ; 0x64 + 80299e4: 4a15 ldr r2, [pc, #84] ; (8029a3c ) + 80299e6: 6093 str r3, [r2, #8] IV.SystemError = GV.SystemErrorData.Com_Error_Code; /* SystemErrorCode = &GV.SystemErrorData.Com_Error_Code; */ - 80299a8: 4b13 ldr r3, [pc, #76] ; (80299f8 ) - 80299aa: f8d3 3158 ldr.w r3, [r3, #344] ; 0x158 - 80299ae: 4a13 ldr r2, [pc, #76] ; (80299fc ) - 80299b0: 60d3 str r3, [r2, #12] + 80299e8: 4b13 ldr r3, [pc, #76] ; (8029a38 ) + 80299ea: f8d3 3158 ldr.w r3, [r3, #344] ; 0x158 + 80299ee: 4a13 ldr r2, [pc, #76] ; (8029a3c ) + 80299f0: 60d3 str r3, [r2, #12] IV.Left_Motor_Err = GV.LeftMotor.ERROR_Flag; - 80299b2: 4b11 ldr r3, [pc, #68] ; (80299f8 ) - 80299b4: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 - 80299b8: 4a10 ldr r2, [pc, #64] ; (80299fc ) - 80299ba: 6113 str r3, [r2, #16] + 80299f2: 4b11 ldr r3, [pc, #68] ; (8029a38 ) + 80299f4: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 + 80299f8: 4a10 ldr r2, [pc, #64] ; (8029a3c ) + 80299fa: 6113 str r3, [r2, #16] IV.Right_Motor_Err = GV.RightMotor.ERROR_Flag; - 80299bc: 4b0e ldr r3, [pc, #56] ; (80299f8 ) - 80299be: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 80299c2: 4a0e ldr r2, [pc, #56] ; (80299fc ) - 80299c4: 6153 str r3, [r2, #20] + 80299fc: 4b0e ldr r3, [pc, #56] ; (8029a38 ) + 80299fe: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 8029a02: 4a0e ldr r2, [pc, #56] ; (8029a3c ) + 8029a04: 6153 str r3, [r2, #20] // IV.IsWorking = ; IV.blowers_pwm = GV.speed_blowers_pwm; - 80299c6: 4b0c ldr r3, [pc, #48] ; (80299f8 ) - 80299c8: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 - 80299cc: 4a0b ldr r2, [pc, #44] ; (80299fc ) - 80299ce: 61d3 str r3, [r2, #28] + 8029a06: 4b0c ldr r3, [pc, #48] ; (8029a38 ) + 8029a08: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 + 8029a0c: 4a0b ldr r2, [pc, #44] ; (8029a3c ) + 8029a0e: 61d3 str r3, [r2, #28] IV.ForceValue = GV.ForceValue; - 80299d0: 4b09 ldr r3, [pc, #36] ; (80299f8 ) - 80299d2: 695b ldr r3, [r3, #20] - 80299d4: 4a09 ldr r2, [pc, #36] ; (80299fc ) - 80299d6: 6213 str r3, [r2, #32] + 8029a10: 4b09 ldr r3, [pc, #36] ; (8029a38 ) + 8029a12: 695b ldr r3, [r3, #20] + 8029a14: 4a09 ldr r2, [pc, #36] ; (8029a3c ) + 8029a16: 6213 str r3, [r2, #32] IV.CurrentDirection = GV.RobotAngle_DDM; - 80299d8: 4b07 ldr r3, [pc, #28] ; (80299f8 ) - 80299da: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 - 80299de: 4a07 ldr r2, [pc, #28] ; (80299fc ) - 80299e0: 6253 str r3, [r2, #36] ; 0x24 + 8029a18: 4b07 ldr r3, [pc, #28] ; (8029a38 ) + 8029a1a: f8d3 31f8 ldr.w r3, [r3, #504] ; 0x1f8 + 8029a1e: 4a07 ldr r2, [pc, #28] ; (8029a3c ) + 8029a20: 6253 str r3, [r2, #36] ; 0x24 IV.CurrentHeight = GV.Wire_lenth; - 80299e2: 4b05 ldr r3, [pc, #20] ; (80299f8 ) - 80299e4: f8d3 31fc ldr.w r3, [r3, #508] ; 0x1fc - 80299e8: 461a mov r2, r3 - 80299ea: 4b04 ldr r3, [pc, #16] ; (80299fc ) - 80299ec: 629a str r2, [r3, #40] ; 0x28 + 8029a22: 4b05 ldr r3, [pc, #20] ; (8029a38 ) + 8029a24: f8d3 31fc ldr.w r3, [r3, #508] ; 0x1fc + 8029a28: 461a mov r2, r3 + 8029a2a: 4b04 ldr r3, [pc, #16] ; (8029a3c ) + 8029a2c: 629a str r2, [r3, #40] ; 0x28 } - 80299ee: bf00 nop - 80299f0: 46bd mov sp, r7 - 80299f2: f85d 7b04 ldr.w r7, [sp], #4 - 80299f6: 4770 bx lr - 80299f8: 240002b0 .word 0x240002b0 - 80299fc: 24000528 .word 0x24000528 + 8029a2e: bf00 nop + 8029a30: 46bd mov sp, r7 + 8029a32: f85d 7b04 ldr.w r7, [sp], #4 + 8029a36: 4770 bx lr + 8029a38: 240002b0 .word 0x240002b0 + 8029a3c: 24000528 .word 0x24000528 -08029a00 : +08029a40 : void MotorCommandsLoop(); void Motor_485_Decode(uint8_t *buffer, uint16_t length); int32_t speed_mpmin_to_rpmin(double speed_m_per_min); void Motor_Controller_intialize(struct UARTHandler *Handler)//485 { - 8029a00: b590 push {r4, r7, lr} - 8029a02: b083 sub sp, #12 - 8029a04: af00 add r7, sp, #0 - 8029a06: 6078 str r0, [r7, #4] + 8029a40: b590 push {r4, r7, lr} + 8029a42: b083 sub sp, #12 + 8029a44: af00 add r7, sp, #0 + 8029a46: 6078 str r0, [r7, #4] //初始化 Motor_485_Controller = Handler; - 8029a08: 4a27 ldr r2, [pc, #156] ; (8029aa8 ) - 8029a0a: 687b ldr r3, [r7, #4] - 8029a0c: 6013 str r3, [r2, #0] + 8029a48: 4a27 ldr r2, [pc, #156] ; (8029ae8 ) + 8029a4a: 687b ldr r3, [r7, #4] + 8029a4c: 6013 str r3, [r2, #0] // Motor_485_Controller->UART_Decode = Motor_485_Decode; Motor_485_Controller->Wait_time = 6; //等待10ms 最低不要低于4; - 8029a0e: 4b26 ldr r3, [pc, #152] ; (8029aa8 ) - 8029a10: 681b ldr r3, [r3, #0] - 8029a12: 2206 movs r2, #6 - 8029a14: 609a str r2, [r3, #8] + 8029a4e: 4b26 ldr r3, [pc, #152] ; (8029ae8 ) + 8029a50: 681b ldr r3, [r3, #0] + 8029a52: 2206 movs r2, #6 + 8029a54: 609a str r2, [r3, #8] Motor_485_DispacherController = Handler->dispacherController; - 8029a16: 687b ldr r3, [r7, #4] - 8029a18: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8029a1c: 6bdb ldr r3, [r3, #60] ; 0x3c - 8029a1e: 4a23 ldr r2, [pc, #140] ; (8029aac ) - 8029a20: 6013 str r3, [r2, #0] + 8029a56: 687b ldr r3, [r7, #4] + 8029a58: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8029a5c: 6bdb ldr r3, [r3, #60] ; 0x3c + 8029a5e: 4a23 ldr r2, [pc, #140] ; (8029aec ) + 8029a60: 6013 str r3, [r2, #0] Motor_485_DispacherController->Dispacher_Enable = 1;//不周期性发送 - 8029a22: 4b22 ldr r3, [pc, #136] ; (8029aac ) - 8029a24: 681b ldr r3, [r3, #0] - 8029a26: 2201 movs r2, #1 - 8029a28: 81da strh r2, [r3, #14] + 8029a62: 4b22 ldr r3, [pc, #136] ; (8029aec ) + 8029a64: 681b ldr r3, [r3, #0] + 8029a66: 2201 movs r2, #1 + 8029a68: 81da strh r2, [r3, #14] Motor_485_DispacherController->DispacherCallTime = 100; - 8029a2a: 4b20 ldr r3, [pc, #128] ; (8029aac ) - 8029a2c: 681b ldr r3, [r3, #0] - 8029a2e: 2264 movs r2, #100 ; 0x64 - 8029a30: 815a strh r2, [r3, #10] + 8029a6a: 4b20 ldr r3, [pc, #128] ; (8029aec ) + 8029a6c: 681b ldr r3, [r3, #0] + 8029a6e: 2264 movs r2, #100 ; 0x64 + 8029a70: 815a strh r2, [r3, #10] // Motor_485_DispacherController->DispacherCallTime = 0; Motor_485_DispacherController->Add_Dispatcher_List(Motor_485_DispacherController, - 8029a32: 4b1e ldr r3, [pc, #120] ; (8029aac ) - 8029a34: 681b ldr r3, [r3, #0] - 8029a36: 691b ldr r3, [r3, #16] - 8029a38: 4a1c ldr r2, [pc, #112] ; (8029aac ) - 8029a3a: 6812 ldr r2, [r2, #0] - 8029a3c: 491c ldr r1, [pc, #112] ; (8029ab0 ) - 8029a3e: 4610 mov r0, r2 - 8029a40: 4798 blx r3 + 8029a72: 4b1e ldr r3, [pc, #120] ; (8029aec ) + 8029a74: 681b ldr r3, [r3, #0] + 8029a76: 691b ldr r3, [r3, #16] + 8029a78: 4a1c ldr r2, [pc, #112] ; (8029aec ) + 8029a7a: 6812 ldr r2, [r2, #0] + 8029a7c: 491c ldr r1, [pc, #112] ; (8029af0 ) + 8029a7e: 4610 mov r0, r2 + 8029a80: 4798 blx r3 MotorCommandsLoop); //将 MotorCommandsLoop 函数注册到分发控制器dispacherController中,使其按照设定的周期被自动调用 HardWareErrorController->Add_PCOMHardWare(HardWareErrorController, "Motor_485_1", - 8029a42: 4b1c ldr r3, [pc, #112] ; (8029ab4 ) - 8029a44: 681b ldr r3, [r3, #0] - 8029a46: 68dc ldr r4, [r3, #12] - 8029a48: 4b1a ldr r3, [pc, #104] ; (8029ab4 ) - 8029a4a: 6818 ldr r0, [r3, #0] - 8029a4c: 2302 movs r3, #2 - 8029a4e: 2200 movs r2, #0 - 8029a50: 4919 ldr r1, [pc, #100] ; (8029ab8 ) - 8029a52: 47a0 blx r4 + 8029a82: 4b1c ldr r3, [pc, #112] ; (8029af4 ) + 8029a84: 681b ldr r3, [r3, #0] + 8029a86: 68dc ldr r4, [r3, #12] + 8029a88: 4b1a ldr r3, [pc, #104] ; (8029af4 ) + 8029a8a: 6818 ldr r0, [r3, #0] + 8029a8c: 2302 movs r3, #2 + 8029a8e: 2200 movs r2, #0 + 8029a90: 4919 ldr r1, [pc, #100] ; (8029af8 ) + 8029a92: 47a0 blx r4 0, ComError_LS_LeftMotor); HardWareErrorController->Add_PCOMHardWare(HardWareErrorController, "Motor_485_2", - 8029a54: 4b17 ldr r3, [pc, #92] ; (8029ab4 ) - 8029a56: 681b ldr r3, [r3, #0] - 8029a58: 68dc ldr r4, [r3, #12] - 8029a5a: 4b16 ldr r3, [pc, #88] ; (8029ab4 ) - 8029a5c: 6818 ldr r0, [r3, #0] - 8029a5e: 2303 movs r3, #3 - 8029a60: 2200 movs r2, #0 - 8029a62: 4916 ldr r1, [pc, #88] ; (8029abc ) - 8029a64: 47a0 blx r4 + 8029a94: 4b17 ldr r3, [pc, #92] ; (8029af4 ) + 8029a96: 681b ldr r3, [r3, #0] + 8029a98: 68dc ldr r4, [r3, #12] + 8029a9a: 4b16 ldr r3, [pc, #88] ; (8029af4 ) + 8029a9c: 6818 ldr r0, [r3, #0] + 8029a9e: 2303 movs r3, #3 + 8029aa0: 2200 movs r2, #0 + 8029aa2: 4916 ldr r1, [pc, #88] ; (8029afc ) + 8029aa4: 47a0 blx r4 0, ComError_LS_RightMotor); LOG("Motor_485 initialized success"); - 8029a66: 4b16 ldr r3, [pc, #88] ; (8029ac0 ) - 8029a68: 781b ldrb r3, [r3, #0] - 8029a6a: 2b03 cmp r3, #3 - 8029a6c: d918 bls.n 8029aa0 - 8029a6e: 2330 movs r3, #48 ; 0x30 - 8029a70: 061a lsls r2, r3, #24 - 8029a72: 2330 movs r3, #48 ; 0x30 - 8029a74: 041b lsls r3, r3, #16 - 8029a76: 431a orrs r2, r3 - 8029a78: 2330 movs r3, #48 ; 0x30 - 8029a7a: 021b lsls r3, r3, #8 - 8029a7c: 4313 orrs r3, r2 - 8029a7e: 2230 movs r2, #48 ; 0x30 - 8029a80: ea43 0102 orr.w r1, r3, r2 - 8029a84: 2344 movs r3, #68 ; 0x44 - 8029a86: 061a lsls r2, r3, #24 - 8029a88: 2346 movs r3, #70 ; 0x46 - 8029a8a: 041b lsls r3, r3, #16 - 8029a8c: 431a orrs r2, r3 - 8029a8e: 234c movs r3, #76 ; 0x4c - 8029a90: 021b lsls r3, r3, #8 - 8029a92: 4313 orrs r3, r2 - 8029a94: 2254 movs r2, #84 ; 0x54 - 8029a96: 431a orrs r2, r3 - 8029a98: 4b0a ldr r3, [pc, #40] ; (8029ac4 ) - 8029a9a: 2004 movs r0, #4 - 8029a9c: f7fd ff54 bl 8027948 + 8029aa6: 4b16 ldr r3, [pc, #88] ; (8029b00 ) + 8029aa8: 781b ldrb r3, [r3, #0] + 8029aaa: 2b03 cmp r3, #3 + 8029aac: d918 bls.n 8029ae0 + 8029aae: 2330 movs r3, #48 ; 0x30 + 8029ab0: 061a lsls r2, r3, #24 + 8029ab2: 2330 movs r3, #48 ; 0x30 + 8029ab4: 041b lsls r3, r3, #16 + 8029ab6: 431a orrs r2, r3 + 8029ab8: 2330 movs r3, #48 ; 0x30 + 8029aba: 021b lsls r3, r3, #8 + 8029abc: 4313 orrs r3, r2 + 8029abe: 2230 movs r2, #48 ; 0x30 + 8029ac0: ea43 0102 orr.w r1, r3, r2 + 8029ac4: 2344 movs r3, #68 ; 0x44 + 8029ac6: 061a lsls r2, r3, #24 + 8029ac8: 2346 movs r3, #70 ; 0x46 + 8029aca: 041b lsls r3, r3, #16 + 8029acc: 431a orrs r2, r3 + 8029ace: 234c movs r3, #76 ; 0x4c + 8029ad0: 021b lsls r3, r3, #8 + 8029ad2: 4313 orrs r3, r2 + 8029ad4: 2254 movs r2, #84 ; 0x54 + 8029ad6: 431a orrs r2, r3 + 8029ad8: 4b0a ldr r3, [pc, #40] ; (8029b04 ) + 8029ada: 2004 movs r0, #4 + 8029adc: f7fd ff34 bl 8027948 // // Motor_ClearFault(i, Motor_485_Controller, 4); // //Motor_SetVelocityModeAndTargetVelocity(i,Motor[i]->Target_Velcity); // } } - 8029aa0: bf00 nop - 8029aa2: 370c adds r7, #12 - 8029aa4: 46bd mov sp, r7 - 8029aa6: bd90 pop {r4, r7, pc} - 8029aa8: 2400aed0 .word 0x2400aed0 - 8029aac: 2400aed4 .word 0x2400aed4 - 8029ab0: 08029ac9 .word 0x08029ac9 - 8029ab4: 2400055c .word 0x2400055c - 8029ab8: 0804a078 .word 0x0804a078 - 8029abc: 0804a084 .word 0x0804a084 - 8029ac0: 24009aac .word 0x24009aac - 8029ac4: 0804a090 .word 0x0804a090 - -08029ac8 : + 8029ae0: bf00 nop + 8029ae2: 370c adds r7, #12 + 8029ae4: 46bd mov sp, r7 + 8029ae6: bd90 pop {r4, r7, pc} + 8029ae8: 2400aed0 .word 0x2400aed0 + 8029aec: 2400aed4 .word 0x2400aed4 + 8029af0: 08029b09 .word 0x08029b09 + 8029af4: 2400055c .word 0x2400055c + 8029af8: 0804a0b8 .word 0x0804a0b8 + 8029afc: 0804a0c4 .word 0x0804a0c4 + 8029b00: 24009aac .word 0x24009aac + 8029b04: 0804a0d0 .word 0x0804a0d0 + +08029b08 : void MotorCommandsLoop() { - 8029ac8: b580 push {r7, lr} - 8029aca: b082 sub sp, #8 - 8029acc: af00 add r7, sp, #0 + 8029b08: b580 push {r7, lr} + 8029b0a: b082 sub sp, #8 + 8029b0c: af00 add r7, sp, #0 int32_t Target_Velcity_Left = speed_mpmin_to_rpmin(Motor485[1]->Target_Velcity); - 8029ace: 4b15 ldr r3, [pc, #84] ; (8029b24 ) - 8029ad0: 685b ldr r3, [r3, #4] - 8029ad2: ed93 7b06 vldr d7, [r3, #24] - 8029ad6: eeb0 0b47 vmov.f64 d0, d7 - 8029ada: f000 f859 bl 8029b90 - 8029ade: 6078 str r0, [r7, #4] + 8029b0e: 4b15 ldr r3, [pc, #84] ; (8029b64 ) + 8029b10: 685b ldr r3, [r3, #4] + 8029b12: ed93 7b06 vldr d7, [r3, #24] + 8029b16: eeb0 0b47 vmov.f64 d0, d7 + 8029b1a: f000 f859 bl 8029bd0 + 8029b1e: 6078 str r0, [r7, #4] int32_t Target_Velcity_Right = speed_mpmin_to_rpmin(Motor485[2]->Target_Velcity); - 8029ae0: 4b10 ldr r3, [pc, #64] ; (8029b24 ) - 8029ae2: 689b ldr r3, [r3, #8] - 8029ae4: ed93 7b06 vldr d7, [r3, #24] - 8029ae8: eeb0 0b47 vmov.f64 d0, d7 - 8029aec: f000 f850 bl 8029b90 - 8029af0: 6038 str r0, [r7, #0] + 8029b20: 4b10 ldr r3, [pc, #64] ; (8029b64 ) + 8029b22: 689b ldr r3, [r3, #8] + 8029b24: ed93 7b06 vldr d7, [r3, #24] + 8029b28: eeb0 0b47 vmov.f64 d0, d7 + 8029b2c: f000 f850 bl 8029bd0 + 8029b30: 6038 str r0, [r7, #0] speedModeRun_485(Motor485[1]->MotorID, Target_Velcity_Left, Motor_485_Controller); //从机地址,速度, - 8029af2: 4b0c ldr r3, [pc, #48] ; (8029b24 ) - 8029af4: 685b ldr r3, [r3, #4] - 8029af6: 681b ldr r3, [r3, #0] - 8029af8: b2db uxtb r3, r3 - 8029afa: 4a0b ldr r2, [pc, #44] ; (8029b28 ) - 8029afc: 6812 ldr r2, [r2, #0] - 8029afe: 6879 ldr r1, [r7, #4] - 8029b00: 4618 mov r0, r3 - 8029b02: f7fd ffcd bl 8027aa0 + 8029b32: 4b0c ldr r3, [pc, #48] ; (8029b64 ) + 8029b34: 685b ldr r3, [r3, #4] + 8029b36: 681b ldr r3, [r3, #0] + 8029b38: b2db uxtb r3, r3 + 8029b3a: 4a0b ldr r2, [pc, #44] ; (8029b68 ) + 8029b3c: 6812 ldr r2, [r2, #0] + 8029b3e: 6879 ldr r1, [r7, #4] + 8029b40: 4618 mov r0, r3 + 8029b42: f7fd ffad bl 8027aa0 speedModeRun_485(Motor485[2]->MotorID, Target_Velcity_Right, Motor_485_Controller); //从机地址,速度, - 8029b06: 4b07 ldr r3, [pc, #28] ; (8029b24 ) - 8029b08: 689b ldr r3, [r3, #8] - 8029b0a: 681b ldr r3, [r3, #0] - 8029b0c: b2db uxtb r3, r3 - 8029b0e: 4a06 ldr r2, [pc, #24] ; (8029b28 ) - 8029b10: 6812 ldr r2, [r2, #0] - 8029b12: 6839 ldr r1, [r7, #0] - 8029b14: 4618 mov r0, r3 - 8029b16: f7fd ffc3 bl 8027aa0 - -} - 8029b1a: bf00 nop - 8029b1c: 3708 adds r7, #8 - 8029b1e: 46bd mov sp, r7 - 8029b20: bd80 pop {r7, pc} - 8029b22: bf00 nop - 8029b24: 2400ad08 .word 0x2400ad08 - 8029b28: 2400aed0 .word 0x2400aed0 - -08029b2c : + 8029b46: 4b07 ldr r3, [pc, #28] ; (8029b64 ) + 8029b48: 689b ldr r3, [r3, #8] + 8029b4a: 681b ldr r3, [r3, #0] + 8029b4c: b2db uxtb r3, r3 + 8029b4e: 4a06 ldr r2, [pc, #24] ; (8029b68 ) + 8029b50: 6812 ldr r2, [r2, #0] + 8029b52: 6839 ldr r1, [r7, #0] + 8029b54: 4618 mov r0, r3 + 8029b56: f7fd ffa3 bl 8027aa0 + +} + 8029b5a: bf00 nop + 8029b5c: 3708 adds r7, #8 + 8029b5e: 46bd mov sp, r7 + 8029b60: bd80 pop {r7, pc} + 8029b62: bf00 nop + 8029b64: 2400ad08 .word 0x2400ad08 + 8029b68: 2400aed0 .word 0x2400aed0 + +08029b6c : void Motor_485_Decode(uint8_t *buffer, uint16_t length) { - 8029b2c: b580 push {r7, lr} - 8029b2e: b084 sub sp, #16 - 8029b30: af00 add r7, sp, #0 - 8029b32: 6078 str r0, [r7, #4] - 8029b34: 460b mov r3, r1 - 8029b36: 807b strh r3, [r7, #2] + 8029b6c: b580 push {r7, lr} + 8029b6e: b084 sub sp, #16 + 8029b70: af00 add r7, sp, #0 + 8029b72: 6078 str r0, [r7, #4] + 8029b74: 460b mov r3, r1 + 8029b76: 807b strh r3, [r7, #2] uint8_t canID = buffer[1]; - 8029b38: 687b ldr r3, [r7, #4] - 8029b3a: 785b ldrb r3, [r3, #1] - 8029b3c: 73fb strb r3, [r7, #15] + 8029b78: 687b ldr r3, [r7, #4] + 8029b7a: 785b ldrb r3, [r3, #1] + 8029b7c: 73fb strb r3, [r7, #15] switch (canID) - 8029b3e: 7bfb ldrb r3, [r7, #15] - 8029b40: 2b01 cmp r3, #1 - 8029b42: d002 beq.n 8029b4a - 8029b44: 2b02 cmp r3, #2 - 8029b46: d009 beq.n 8029b5c - 8029b48: e011 b.n 8029b6e + 8029b7e: 7bfb ldrb r3, [r7, #15] + 8029b80: 2b01 cmp r3, #1 + 8029b82: d002 beq.n 8029b8a + 8029b84: 2b02 cmp r3, #2 + 8029b86: d009 beq.n 8029b9c + 8029b88: e011 b.n 8029bae { case 1: { HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, - 8029b4a: 4b0d ldr r3, [pc, #52] ; (8029b80 ) - 8029b4c: 681b ldr r3, [r3, #0] - 8029b4e: 695b ldr r3, [r3, #20] - 8029b50: 4a0b ldr r2, [pc, #44] ; (8029b80 ) - 8029b52: 6810 ldr r0, [r2, #0] - 8029b54: 2201 movs r2, #1 - 8029b56: 490b ldr r1, [pc, #44] ; (8029b84 ) - 8029b58: 4798 blx r3 + 8029b8a: 4b0d ldr r3, [pc, #52] ; (8029bc0 ) + 8029b8c: 681b ldr r3, [r3, #0] + 8029b8e: 695b ldr r3, [r3, #20] + 8029b90: 4a0b ldr r2, [pc, #44] ; (8029bc0 ) + 8029b92: 6810 ldr r0, [r2, #0] + 8029b94: 2201 movs r2, #1 + 8029b96: 490b ldr r1, [pc, #44] ; (8029bc4 ) + 8029b98: 4798 blx r3 "Motor_485_1", 1); } break; - 8029b5a: e008 b.n 8029b6e + 8029b9a: e008 b.n 8029bae case 2: { HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, - 8029b5c: 4b08 ldr r3, [pc, #32] ; (8029b80 ) - 8029b5e: 681b ldr r3, [r3, #0] - 8029b60: 695b ldr r3, [r3, #20] - 8029b62: 4a07 ldr r2, [pc, #28] ; (8029b80 ) - 8029b64: 6810 ldr r0, [r2, #0] - 8029b66: 2201 movs r2, #1 - 8029b68: 4907 ldr r1, [pc, #28] ; (8029b88 ) - 8029b6a: 4798 blx r3 + 8029b9c: 4b08 ldr r3, [pc, #32] ; (8029bc0 ) + 8029b9e: 681b ldr r3, [r3, #0] + 8029ba0: 695b ldr r3, [r3, #20] + 8029ba2: 4a07 ldr r2, [pc, #28] ; (8029bc0 ) + 8029ba4: 6810 ldr r0, [r2, #0] + 8029ba6: 2201 movs r2, #1 + 8029ba8: 4907 ldr r1, [pc, #28] ; (8029bc8 ) + 8029baa: 4798 blx r3 "Motor_485_2", 1); } break; - 8029b6c: bf00 nop + 8029bac: bf00 nop } Decode485Motor(buffer, length); - 8029b6e: 887b ldrh r3, [r7, #2] - 8029b70: 4619 mov r1, r3 - 8029b72: 6878 ldr r0, [r7, #4] - 8029b74: f7fe f826 bl 8027bc4 -} - 8029b78: bf00 nop - 8029b7a: 3710 adds r7, #16 - 8029b7c: 46bd mov sp, r7 - 8029b7e: bd80 pop {r7, pc} - 8029b80: 2400055c .word 0x2400055c - 8029b84: 0804a078 .word 0x0804a078 - 8029b88: 0804a084 .word 0x0804a084 - 8029b8c: 00000000 .word 0x00000000 - -08029b90 : + 8029bae: 887b ldrh r3, [r7, #2] + 8029bb0: 4619 mov r1, r3 + 8029bb2: 6878 ldr r0, [r7, #4] + 8029bb4: f7fe f806 bl 8027bc4 +} + 8029bb8: bf00 nop + 8029bba: 3710 adds r7, #16 + 8029bbc: 46bd mov sp, r7 + 8029bbe: bd80 pop {r7, pc} + 8029bc0: 2400055c .word 0x2400055c + 8029bc4: 0804a0b8 .word 0x0804a0b8 + 8029bc8: 0804a0c4 .word 0x0804a0c4 + 8029bcc: 00000000 .word 0x00000000 + +08029bd0 : int32_t speed_mpmin_to_rpmin(double speed_m_per_min) { - 8029b90: b480 push {r7} - 8029b92: b083 sub sp, #12 - 8029b94: af00 add r7, sp, #0 - 8029b96: ed87 0b00 vstr d0, [r7] + 8029bd0: b480 push {r7} + 8029bd2: b083 sub sp, #12 + 8029bd4: af00 add r7, sp, #0 + 8029bd6: ed87 0b00 vstr d0, [r7] return (int32_t) (speed_m_per_min * CV.wheel_Reduction_Ratio - 8029b9a: 4b11 ldr r3, [pc, #68] ; (8029be0 ) - 8029b9c: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 - 8029ba0: ee07 3a90 vmov s15, r3 - 8029ba4: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029ba8: ed97 7b00 vldr d7, [r7] - 8029bac: ee26 5b07 vmul.f64 d5, d6, d7 + 8029bda: 4b11 ldr r3, [pc, #68] ; (8029c20 ) + 8029bdc: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 + 8029be0: ee07 3a90 vmov s15, r3 + 8029be4: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8029be8: ed97 7b00 vldr d7, [r7] + 8029bec: ee26 5b07 vmul.f64 d5, d6, d7 / (3.14159f * CV.wheel_Diameter_m)); - 8029bb0: 4b0b ldr r3, [pc, #44] ; (8029be0 ) - 8029bb2: ed93 7b34 vldr d7, [r3, #208] ; 0xd0 - 8029bb6: ed9f 6b08 vldr d6, [pc, #32] ; 8029bd8 - 8029bba: ee27 6b06 vmul.f64 d6, d7, d6 - 8029bbe: ee85 7b06 vdiv.f64 d7, d5, d6 + 8029bf0: 4b0b ldr r3, [pc, #44] ; (8029c20 ) + 8029bf2: ed93 7b34 vldr d7, [r3, #208] ; 0xd0 + 8029bf6: ed9f 6b08 vldr d6, [pc, #32] ; 8029c18 + 8029bfa: ee27 6b06 vmul.f64 d6, d7, d6 + 8029bfe: ee85 7b06 vdiv.f64 d7, d5, d6 return (int32_t) (speed_m_per_min * CV.wheel_Reduction_Ratio - 8029bc2: eefd 7bc7 vcvt.s32.f64 s15, d7 - 8029bc6: ee17 3a90 vmov r3, s15 + 8029c02: eefd 7bc7 vcvt.s32.f64 s15, d7 + 8029c06: ee17 3a90 vmov r3, s15 //speed_m_per_min=10 对应 796 RPM } - 8029bca: 4618 mov r0, r3 - 8029bcc: 370c adds r7, #12 - 8029bce: 46bd mov sp, r7 - 8029bd0: f85d 7b04 ldr.w r7, [sp], #4 - 8029bd4: 4770 bx lr - 8029bd6: bf00 nop - 8029bd8: 00000000 .word 0x00000000 - 8029bdc: 400921fa .word 0x400921fa - 8029be0: 240001d8 .word 0x240001d8 - -08029be4 : + 8029c0a: 4618 mov r0, r3 + 8029c0c: 370c adds r7, #12 + 8029c0e: 46bd mov sp, r7 + 8029c10: f85d 7b04 ldr.w r7, [sp], #4 + 8029c14: 4770 bx lr + 8029c16: bf00 nop + 8029c18: 00000000 .word 0x00000000 + 8029c1c: 400921fa .word 0x400921fa + 8029c20: 240001d8 .word 0x240001d8 + +08029c24 : transition_state_t motor_power_off_state={NULL,Motors_Power_Off_Do,NULL}; void Motors_Power_On_Do(transition_t *p_this) { - 8029be4: b580 push {r7, lr} - 8029be6: b082 sub sp, #8 - 8029be8: af00 add r7, sp, #0 - 8029bea: 6078 str r0, [r7, #4] + 8029c24: b580 push {r7, lr} + 8029c26: b082 sub sp, #8 + 8029c28: af00 add r7, sp, #0 + 8029c2a: 6078 str r0, [r7, #4] GF_BSP_GPIO_SetIO(Motor_Power_IO_CTL, K_ON_Motor); - 8029bec: 2100 movs r1, #0 - 8029bee: 2000 movs r0, #0 - 8029bf0: f7f7 fa2e bl 8021050 + 8029c2c: 2100 movs r1, #0 + 8029c2e: 2000 movs r0, #0 + 8029c30: f7f7 fa0e bl 8021050 } - 8029bf4: bf00 nop - 8029bf6: 3708 adds r7, #8 - 8029bf8: 46bd mov sp, r7 - 8029bfa: bd80 pop {r7, pc} + 8029c34: bf00 nop + 8029c36: 3708 adds r7, #8 + 8029c38: 46bd mov sp, r7 + 8029c3a: bd80 pop {r7, pc} -08029bfc : +08029c3c : { GF_BSP_GPIO_SetIO(Motor_Power_IO_CTL, K_OFF_Motor); } void Motors_Power_On_Enter(transition_t *p_this) { - 8029bfc: b480 push {r7} - 8029bfe: b083 sub sp, #12 - 8029c00: af00 add r7, sp, #0 - 8029c02: 6078 str r0, [r7, #4] + 8029c3c: b480 push {r7} + 8029c3e: b083 sub sp, #12 + 8029c40: af00 add r7, sp, #0 + 8029c42: 6078 str r0, [r7, #4] // LS_Motor_Need_To_Activate=1; } - 8029c04: bf00 nop - 8029c06: 370c adds r7, #12 - 8029c08: 46bd mov sp, r7 - 8029c0a: f85d 7b04 ldr.w r7, [sp], #4 - 8029c0e: 4770 bx lr + 8029c44: bf00 nop + 8029c46: 370c adds r7, #12 + 8029c48: 46bd mov sp, r7 + 8029c4a: f85d 7b04 ldr.w r7, [sp], #4 + 8029c4e: 4770 bx lr -08029c10 : +08029c50 : void Motors_Power_On_Exit(transition_t *p_this) { - 8029c10: b480 push {r7} - 8029c12: b083 sub sp, #12 - 8029c14: af00 add r7, sp, #0 - 8029c16: 6078 str r0, [r7, #4] + 8029c50: b480 push {r7} + 8029c52: b083 sub sp, #12 + 8029c54: af00 add r7, sp, #0 + 8029c56: 6078 str r0, [r7, #4] } - 8029c18: bf00 nop - 8029c1a: 370c adds r7, #12 - 8029c1c: 46bd mov sp, r7 - 8029c1e: f85d 7b04 ldr.w r7, [sp], #4 - 8029c22: 4770 bx lr + 8029c58: bf00 nop + 8029c5a: 370c adds r7, #12 + 8029c5c: 46bd mov sp, r7 + 8029c5e: f85d 7b04 ldr.w r7, [sp], #4 + 8029c62: 4770 bx lr -08029c24 : +08029c64 : char IsRobotHaltSateChangedFlag = 0; void Move_Automatic_task_Do(transition_t *p_this) { - 8029c24: b580 push {r7, lr} - 8029c26: b082 sub sp, #8 - 8029c28: af00 add r7, sp, #0 - 8029c2a: 6078 str r0, [r7, #4] + 8029c64: b580 push {r7, lr} + 8029c66: b082 sub sp, #8 + 8029c68: af00 add r7, sp, #0 + 8029c6a: 6078 str r0, [r7, #4] Automatic_task_Control(); - 8029c2c: f7fe ff3c bl 8028aa8 + 8029c6c: f7fe ff3c bl 8028ae8 } - 8029c30: bf00 nop - 8029c32: 3708 adds r7, #8 - 8029c34: 46bd mov sp, r7 - 8029c36: bd80 pop {r7, pc} + 8029c70: bf00 nop + 8029c72: 3708 adds r7, #8 + 8029c74: 46bd mov sp, r7 + 8029c76: bd80 pop {r7, pc} -08029c38 : +08029c78 : void Move_Auto_ChangeLine_Do(transition_t *p_this) { - 8029c38: b580 push {r7, lr} - 8029c3a: b082 sub sp, #8 - 8029c3c: af00 add r7, sp, #0 - 8029c3e: 6078 str r0, [r7, #4] + 8029c78: b580 push {r7, lr} + 8029c7a: b082 sub sp, #8 + 8029c7c: af00 add r7, sp, #0 + 8029c7e: 6078 str r0, [r7, #4] Auto_ChangeLine_Control(1); - 8029c40: 2001 movs r0, #1 - 8029c42: f7ff f825 bl 8028c90 + 8029c80: 2001 movs r0, #1 + 8029c82: f7ff f825 bl 8028cd0 } - 8029c46: bf00 nop - 8029c48: 3708 adds r7, #8 - 8029c4a: 46bd mov sp, r7 - 8029c4c: bd80 pop {r7, pc} + 8029c86: bf00 nop + 8029c88: 3708 adds r7, #8 + 8029c8a: 46bd mov sp, r7 + 8029c8c: bd80 pop {r7, pc} ... -08029c50 : +08029c90 : void Move_Horizontal_Task_Forwards_Do(transition_t *p_this) { - 8029c50: b580 push {r7, lr} - 8029c52: b082 sub sp, #8 - 8029c54: af00 add r7, sp, #0 - 8029c56: 6078 str r0, [r7, #4] + 8029c90: b580 push {r7, lr} + 8029c92: b082 sub sp, #8 + 8029c94: af00 add r7, sp, #0 + 8029c96: 6078 str r0, [r7, #4] if(GV.Robot_Angle >= 0)//头朝右 - 8029c58: 4b19 ldr r3, [pc, #100] ; (8029cc0 ) - 8029c5a: 68db ldr r3, [r3, #12] - 8029c5c: 2b00 cmp r3, #0 - 8029c5e: db11 blt.n 8029c84 + 8029c98: 4b19 ldr r3, [pc, #100] ; (8029d00 ) + 8029c9a: 68db ldr r3, [r3, #12] + 8029c9c: 2b00 cmp r3, #0 + 8029c9e: db11 blt.n 8029cc4 { Auto_steer_moveforward_do(90 - GV.PV.Vertical_Calibration/100); - 8029c60: 4b17 ldr r3, [pc, #92] ; (8029cc0 ) - 8029c62: ed93 6b5e vldr d6, [r3, #376] ; 0x178 - 8029c66: ed9f 5b12 vldr d5, [pc, #72] ; 8029cb0 - 8029c6a: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029c6e: ed9f 6b12 vldr d6, [pc, #72] ; 8029cb8 - 8029c72: ee36 7b47 vsub.f64 d7, d6, d7 - 8029c76: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8029c7a: eeb0 0a67 vmov.f32 s0, s15 - 8029c7e: f7ff f8fb bl 8028e78 + 8029ca0: 4b17 ldr r3, [pc, #92] ; (8029d00 ) + 8029ca2: ed93 6b5e vldr d6, [r3, #376] ; 0x178 + 8029ca6: ed9f 5b12 vldr d5, [pc, #72] ; 8029cf0 + 8029caa: ee86 7b05 vdiv.f64 d7, d6, d5 + 8029cae: ed9f 6b12 vldr d6, [pc, #72] ; 8029cf8 + 8029cb2: ee36 7b47 vsub.f64 d7, d6, d7 + 8029cb6: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8029cba: eeb0 0a67 vmov.f32 s0, s15 + 8029cbe: f7ff f8fb bl 8028eb8 else//头朝左 { Auto_steer_moveforward_do(-90 + GV.PV.Vertical_Calibration/100); } } - 8029c82: e010 b.n 8029ca6 + 8029cc2: e010 b.n 8029ce6 Auto_steer_moveforward_do(-90 + GV.PV.Vertical_Calibration/100); - 8029c84: 4b0e ldr r3, [pc, #56] ; (8029cc0 ) - 8029c86: ed93 6b5e vldr d6, [r3, #376] ; 0x178 - 8029c8a: ed9f 5b09 vldr d5, [pc, #36] ; 8029cb0 - 8029c8e: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029c92: ed9f 6b09 vldr d6, [pc, #36] ; 8029cb8 - 8029c96: ee37 7b46 vsub.f64 d7, d7, d6 - 8029c9a: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8029c9e: eeb0 0a67 vmov.f32 s0, s15 - 8029ca2: f7ff f8e9 bl 8028e78 -} - 8029ca6: bf00 nop - 8029ca8: 3708 adds r7, #8 - 8029caa: 46bd mov sp, r7 - 8029cac: bd80 pop {r7, pc} - 8029cae: bf00 nop - 8029cb0: 00000000 .word 0x00000000 - 8029cb4: 40590000 .word 0x40590000 - 8029cb8: 00000000 .word 0x00000000 - 8029cbc: 40568000 .word 0x40568000 - 8029cc0: 240002b0 .word 0x240002b0 - 8029cc4: 00000000 .word 0x00000000 - -08029cc8 : + 8029cc4: 4b0e ldr r3, [pc, #56] ; (8029d00 ) + 8029cc6: ed93 6b5e vldr d6, [r3, #376] ; 0x178 + 8029cca: ed9f 5b09 vldr d5, [pc, #36] ; 8029cf0 + 8029cce: ee86 7b05 vdiv.f64 d7, d6, d5 + 8029cd2: ed9f 6b09 vldr d6, [pc, #36] ; 8029cf8 + 8029cd6: ee37 7b46 vsub.f64 d7, d7, d6 + 8029cda: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8029cde: eeb0 0a67 vmov.f32 s0, s15 + 8029ce2: f7ff f8e9 bl 8028eb8 +} + 8029ce6: bf00 nop + 8029ce8: 3708 adds r7, #8 + 8029cea: 46bd mov sp, r7 + 8029cec: bd80 pop {r7, pc} + 8029cee: bf00 nop + 8029cf0: 00000000 .word 0x00000000 + 8029cf4: 40590000 .word 0x40590000 + 8029cf8: 00000000 .word 0x00000000 + 8029cfc: 40568000 .word 0x40568000 + 8029d00: 240002b0 .word 0x240002b0 + 8029d04: 00000000 .word 0x00000000 + +08029d08 : void Move_Horizontal_Task_Backwards_Do(transition_t *p_this) { - 8029cc8: b580 push {r7, lr} - 8029cca: b082 sub sp, #8 - 8029ccc: af00 add r7, sp, #0 - 8029cce: 6078 str r0, [r7, #4] + 8029d08: b580 push {r7, lr} + 8029d0a: b082 sub sp, #8 + 8029d0c: af00 add r7, sp, #0 + 8029d0e: 6078 str r0, [r7, #4] if(GV.Robot_Angle >= 0)//头朝右 - 8029cd0: 4b1b ldr r3, [pc, #108] ; (8029d40 ) - 8029cd2: 68db ldr r3, [r3, #12] - 8029cd4: 2b00 cmp r3, #0 - 8029cd6: db11 blt.n 8029cfc + 8029d10: 4b1b ldr r3, [pc, #108] ; (8029d80 ) + 8029d12: 68db ldr r3, [r3, #12] + 8029d14: 2b00 cmp r3, #0 + 8029d16: db11 blt.n 8029d3c { Auto_steer_moveback_do(90 + GV.PV.Vertical_Calibration/100); - 8029cd8: 4b19 ldr r3, [pc, #100] ; (8029d40 ) - 8029cda: ed93 6b5e vldr d6, [r3, #376] ; 0x178 - 8029cde: ed9f 5b12 vldr d5, [pc, #72] ; 8029d28 - 8029ce2: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029ce6: ed9f 6b12 vldr d6, [pc, #72] ; 8029d30 - 8029cea: ee37 7b06 vadd.f64 d7, d7, d6 - 8029cee: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8029cf2: eeb0 0a67 vmov.f32 s0, s15 - 8029cf6: f7ff f95b bl 8028fb0 + 8029d18: 4b19 ldr r3, [pc, #100] ; (8029d80 ) + 8029d1a: ed93 6b5e vldr d6, [r3, #376] ; 0x178 + 8029d1e: ed9f 5b12 vldr d5, [pc, #72] ; 8029d68 + 8029d22: ee86 7b05 vdiv.f64 d7, d6, d5 + 8029d26: ed9f 6b12 vldr d6, [pc, #72] ; 8029d70 + 8029d2a: ee37 7b06 vadd.f64 d7, d7, d6 + 8029d2e: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8029d32: eeb0 0a67 vmov.f32 s0, s15 + 8029d36: f7ff f95b bl 8028ff0 } else//头朝左 { Auto_steer_moveback_do(-90 - GV.PV.Vertical_Calibration/100); } } - 8029cfa: e010 b.n 8029d1e + 8029d3a: e010 b.n 8029d5e Auto_steer_moveback_do(-90 - GV.PV.Vertical_Calibration/100); - 8029cfc: 4b10 ldr r3, [pc, #64] ; (8029d40 ) - 8029cfe: ed93 6b5e vldr d6, [r3, #376] ; 0x178 - 8029d02: ed9f 5b09 vldr d5, [pc, #36] ; 8029d28 - 8029d06: ee86 7b05 vdiv.f64 d7, d6, d5 - 8029d0a: ed9f 6b0b vldr d6, [pc, #44] ; 8029d38 - 8029d0e: ee36 7b47 vsub.f64 d7, d6, d7 - 8029d12: eef7 7bc7 vcvt.f32.f64 s15, d7 - 8029d16: eeb0 0a67 vmov.f32 s0, s15 - 8029d1a: f7ff f949 bl 8028fb0 -} - 8029d1e: bf00 nop - 8029d20: 3708 adds r7, #8 - 8029d22: 46bd mov sp, r7 - 8029d24: bd80 pop {r7, pc} - 8029d26: bf00 nop - 8029d28: 00000000 .word 0x00000000 - 8029d2c: 40590000 .word 0x40590000 - 8029d30: 00000000 .word 0x00000000 - 8029d34: 40568000 .word 0x40568000 - 8029d38: 00000000 .word 0x00000000 - 8029d3c: c0568000 .word 0xc0568000 - 8029d40: 240002b0 .word 0x240002b0 - -08029d44 : - -void Forwards_State_Do(transition_t *p_this) -{ - 8029d44: b480 push {r7} - 8029d46: b083 sub sp, #12 - 8029d48: af00 add r7, sp, #0 - 8029d4a: 6078 str r0, [r7, #4] - GV.LeftMotor.Target_Velcity = GV.Robot_Move_Speed; - 8029d4c: 4b0c ldr r3, [pc, #48] ; (8029d80 ) - 8029d4e: 691b ldr r3, [r3, #16] - 8029d50: ee07 3a90 vmov s15, r3 - 8029d54: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029d58: 4b09 ldr r3, [pc, #36] ; (8029d80 ) - 8029d5a: ed83 7b22 vstr d7, [r3, #136] ; 0x88 - GV.RightMotor.Target_Velcity = -GV.Robot_Move_Speed; - 8029d5e: 4b08 ldr r3, [pc, #32] ; (8029d80 ) - 8029d60: 691b ldr r3, [r3, #16] - 8029d62: 425b negs r3, r3 - 8029d64: ee07 3a90 vmov s15, r3 - 8029d68: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029d6c: 4b04 ldr r3, [pc, #16] ; (8029d80 ) - 8029d6e: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 -} - 8029d72: bf00 nop - 8029d74: 370c adds r7, #12 - 8029d76: 46bd mov sp, r7 - 8029d78: f85d 7b04 ldr.w r7, [sp], #4 - 8029d7c: 4770 bx lr - 8029d7e: bf00 nop + 8029d3c: 4b10 ldr r3, [pc, #64] ; (8029d80 ) + 8029d3e: ed93 6b5e vldr d6, [r3, #376] ; 0x178 + 8029d42: ed9f 5b09 vldr d5, [pc, #36] ; 8029d68 + 8029d46: ee86 7b05 vdiv.f64 d7, d6, d5 + 8029d4a: ed9f 6b0b vldr d6, [pc, #44] ; 8029d78 + 8029d4e: ee36 7b47 vsub.f64 d7, d6, d7 + 8029d52: eef7 7bc7 vcvt.f32.f64 s15, d7 + 8029d56: eeb0 0a67 vmov.f32 s0, s15 + 8029d5a: f7ff f949 bl 8028ff0 +} + 8029d5e: bf00 nop + 8029d60: 3708 adds r7, #8 + 8029d62: 46bd mov sp, r7 + 8029d64: bd80 pop {r7, pc} + 8029d66: bf00 nop + 8029d68: 00000000 .word 0x00000000 + 8029d6c: 40590000 .word 0x40590000 + 8029d70: 00000000 .word 0x00000000 + 8029d74: 40568000 .word 0x40568000 + 8029d78: 00000000 .word 0x00000000 + 8029d7c: c0568000 .word 0xc0568000 8029d80: 240002b0 .word 0x240002b0 -08029d84 : +08029d84 : -void Backwards_State_Do(transition_t *p_this) +void Forwards_State_Do(transition_t *p_this) { 8029d84: b480 push {r7} 8029d86: b083 sub sp, #12 8029d88: af00 add r7, sp, #0 8029d8a: 6078 str r0, [r7, #4] - GV.LeftMotor.Target_Velcity = -GV.Robot_Move_Speed; - 8029d8c: 4b0c ldr r3, [pc, #48] ; (8029dc0 ) + GV.LeftMotor.Target_Velcity = GV.Robot_Move_Speed; + 8029d8c: 4b0c ldr r3, [pc, #48] ; (8029dc0 ) 8029d8e: 691b ldr r3, [r3, #16] - 8029d90: 425b negs r3, r3 - 8029d92: ee07 3a90 vmov s15, r3 - 8029d96: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029d9a: 4b09 ldr r3, [pc, #36] ; (8029dc0 ) - 8029d9c: ed83 7b22 vstr d7, [r3, #136] ; 0x88 - GV.RightMotor.Target_Velcity = GV.Robot_Move_Speed; - 8029da0: 4b07 ldr r3, [pc, #28] ; (8029dc0 ) - 8029da2: 691b ldr r3, [r3, #16] + 8029d90: ee07 3a90 vmov s15, r3 + 8029d94: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029d98: 4b09 ldr r3, [pc, #36] ; (8029dc0 ) + 8029d9a: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + GV.RightMotor.Target_Velcity = -GV.Robot_Move_Speed; + 8029d9e: 4b08 ldr r3, [pc, #32] ; (8029dc0 ) + 8029da0: 691b ldr r3, [r3, #16] + 8029da2: 425b negs r3, r3 8029da4: ee07 3a90 vmov s15, r3 8029da8: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029dac: 4b04 ldr r3, [pc, #16] ; (8029dc0 ) + 8029dac: 4b04 ldr r3, [pc, #16] ; (8029dc0 ) 8029dae: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 } 8029db2: bf00 nop @@ -23522,9725 +23517,9725 @@ void Backwards_State_Do(transition_t *p_this) 8029dbe: bf00 nop 8029dc0: 240002b0 .word 0x240002b0 -08029dc4 : -/* 向左转 */ -void TurnLeft_State_Do(transition_t *p_this) +08029dc4 : + +void Backwards_State_Do(transition_t *p_this) { 8029dc4: b480 push {r7} 8029dc6: b083 sub sp, #12 8029dc8: af00 add r7, sp, #0 8029dca: 6078 str r0, [r7, #4] + GV.LeftMotor.Target_Velcity = -GV.Robot_Move_Speed; + 8029dcc: 4b0c ldr r3, [pc, #48] ; (8029e00 ) + 8029dce: 691b ldr r3, [r3, #16] + 8029dd0: 425b negs r3, r3 + 8029dd2: ee07 3a90 vmov s15, r3 + 8029dd6: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029dda: 4b09 ldr r3, [pc, #36] ; (8029e00 ) + 8029ddc: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + GV.RightMotor.Target_Velcity = GV.Robot_Move_Speed; + 8029de0: 4b07 ldr r3, [pc, #28] ; (8029e00 ) + 8029de2: 691b ldr r3, [r3, #16] + 8029de4: ee07 3a90 vmov s15, r3 + 8029de8: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029dec: 4b04 ldr r3, [pc, #16] ; (8029e00 ) + 8029dee: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 +} + 8029df2: bf00 nop + 8029df4: 370c adds r7, #12 + 8029df6: 46bd mov sp, r7 + 8029df8: f85d 7b04 ldr.w r7, [sp], #4 + 8029dfc: 4770 bx lr + 8029dfe: bf00 nop + 8029e00: 240002b0 .word 0x240002b0 + +08029e04 : +/* 向左转 */ +void TurnLeft_State_Do(transition_t *p_this) +{ + 8029e04: b480 push {r7} + 8029e06: b083 sub sp, #12 + 8029e08: af00 add r7, sp, #0 + 8029e0a: 6078 str r0, [r7, #4] GV.LeftMotor.Target_Velcity = -CV.LeftTurnSpeed; - 8029dcc: 4b0a ldr r3, [pc, #40] ; (8029df8 ) - 8029dce: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 8029dd2: eeb1 7b47 vneg.f64 d7, d7 - 8029dd6: 4b09 ldr r3, [pc, #36] ; (8029dfc ) - 8029dd8: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 8029e0c: 4b0a ldr r3, [pc, #40] ; (8029e38 ) + 8029e0e: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 8029e12: eeb1 7b47 vneg.f64 d7, d7 + 8029e16: 4b09 ldr r3, [pc, #36] ; (8029e3c ) + 8029e18: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -CV.LeftTurnSpeed; - 8029ddc: 4b06 ldr r3, [pc, #24] ; (8029df8 ) - 8029dde: ed93 7b1e vldr d7, [r3, #120] ; 0x78 - 8029de2: eeb1 7b47 vneg.f64 d7, d7 - 8029de6: 4b05 ldr r3, [pc, #20] ; (8029dfc ) - 8029de8: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 -} - 8029dec: bf00 nop - 8029dee: 370c adds r7, #12 - 8029df0: 46bd mov sp, r7 - 8029df2: f85d 7b04 ldr.w r7, [sp], #4 - 8029df6: 4770 bx lr - 8029df8: 240001d8 .word 0x240001d8 - 8029dfc: 240002b0 .word 0x240002b0 - -08029e00 : + 8029e1c: 4b06 ldr r3, [pc, #24] ; (8029e38 ) + 8029e1e: ed93 7b1e vldr d7, [r3, #120] ; 0x78 + 8029e22: eeb1 7b47 vneg.f64 d7, d7 + 8029e26: 4b05 ldr r3, [pc, #20] ; (8029e3c ) + 8029e28: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 +} + 8029e2c: bf00 nop + 8029e2e: 370c adds r7, #12 + 8029e30: 46bd mov sp, r7 + 8029e32: f85d 7b04 ldr.w r7, [sp], #4 + 8029e36: 4770 bx lr + 8029e38: 240001d8 .word 0x240001d8 + 8029e3c: 240002b0 .word 0x240002b0 + +08029e40 : /* 向右转 */ void TurnRight_State_Do(transition_t *p_this) { - 8029e00: b480 push {r7} - 8029e02: b083 sub sp, #12 - 8029e04: af00 add r7, sp, #0 - 8029e06: 6078 str r0, [r7, #4] + 8029e40: b480 push {r7} + 8029e42: b083 sub sp, #12 + 8029e44: af00 add r7, sp, #0 + 8029e46: 6078 str r0, [r7, #4] GV.LeftMotor.Target_Velcity =CV.RightTurnSpeed; - 8029e08: 4b08 ldr r3, [pc, #32] ; (8029e2c ) - 8029e0a: e9d3 2320 ldrd r2, r3, [r3, #128] ; 0x80 - 8029e0e: 4908 ldr r1, [pc, #32] ; (8029e30 ) - 8029e10: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 + 8029e48: 4b08 ldr r3, [pc, #32] ; (8029e6c ) + 8029e4a: e9d3 2320 ldrd r2, r3, [r3, #128] ; 0x80 + 8029e4e: 4908 ldr r1, [pc, #32] ; (8029e70 ) + 8029e50: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 GV.RightMotor.Target_Velcity = CV.RightTurnSpeed; - 8029e14: 4b05 ldr r3, [pc, #20] ; (8029e2c ) - 8029e16: e9d3 2320 ldrd r2, r3, [r3, #128] ; 0x80 - 8029e1a: 4905 ldr r1, [pc, #20] ; (8029e30 ) - 8029e1c: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 + 8029e54: 4b05 ldr r3, [pc, #20] ; (8029e6c ) + 8029e56: e9d3 2320 ldrd r2, r3, [r3, #128] ; 0x80 + 8029e5a: 4905 ldr r1, [pc, #20] ; (8029e70 ) + 8029e5c: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 } - 8029e20: bf00 nop - 8029e22: 370c adds r7, #12 - 8029e24: 46bd mov sp, r7 - 8029e26: f85d 7b04 ldr.w r7, [sp], #4 - 8029e2a: 4770 bx lr - 8029e2c: 240001d8 .word 0x240001d8 - 8029e30: 240002b0 .word 0x240002b0 + 8029e60: bf00 nop + 8029e62: 370c adds r7, #12 + 8029e64: 46bd mov sp, r7 + 8029e66: f85d 7b04 ldr.w r7, [sp], #4 + 8029e6a: 4770 bx lr + 8029e6c: 240001d8 .word 0x240001d8 + 8029e70: 240002b0 .word 0x240002b0 -08029e34 : +08029e74 : /* 停止 * 零速停止,不关闭抱闸 * */ void HALT_State_Do(transition_t *p_this) { - 8029e34: b480 push {r7} - 8029e36: b083 sub sp, #12 - 8029e38: af00 add r7, sp, #0 - 8029e3a: 6078 str r0, [r7, #4] + 8029e74: b480 push {r7} + 8029e76: b083 sub sp, #12 + 8029e78: af00 add r7, sp, #0 + 8029e7a: 6078 str r0, [r7, #4] GV.LeftMotor.Target_Velcity = 0; - 8029e3c: 4909 ldr r1, [pc, #36] ; (8029e64 ) - 8029e3e: f04f 0200 mov.w r2, #0 - 8029e42: f04f 0300 mov.w r3, #0 - 8029e46: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 + 8029e7c: 4909 ldr r1, [pc, #36] ; (8029ea4 ) + 8029e7e: f04f 0200 mov.w r2, #0 + 8029e82: f04f 0300 mov.w r3, #0 + 8029e86: e9c1 2322 strd r2, r3, [r1, #136] ; 0x88 GV.RightMotor.Target_Velcity = 0; - 8029e4a: 4906 ldr r1, [pc, #24] ; (8029e64 ) - 8029e4c: f04f 0200 mov.w r2, #0 - 8029e50: f04f 0300 mov.w r3, #0 - 8029e54: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 + 8029e8a: 4906 ldr r1, [pc, #24] ; (8029ea4 ) + 8029e8c: f04f 0200 mov.w r2, #0 + 8029e90: f04f 0300 mov.w r3, #0 + 8029e94: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 // { // GV.LeftMotor.Target_Velcity = 0; // GV.RightMotor.Target_Velcity = 0; // IsRobotHaltSateChangedFlag=0; // } } - 8029e58: bf00 nop - 8029e5a: 370c adds r7, #12 - 8029e5c: 46bd mov sp, r7 - 8029e5e: f85d 7b04 ldr.w r7, [sp], #4 - 8029e62: 4770 bx lr - 8029e64: 240002b0 .word 0x240002b0 + 8029e98: bf00 nop + 8029e9a: 370c adds r7, #12 + 8029e9c: 46bd mov sp, r7 + 8029e9e: f85d 7b04 ldr.w r7, [sp], #4 + 8029ea2: 4770 bx lr + 8029ea4: 240002b0 .word 0x240002b0 -08029e68 : +08029ea8 : /* 竖直前进,保持目标角度 CV.RobotUpAngleValue * Target_Angle: 0.01度 * */ void Move_Vertical_Task_Forwards_Do(transition_t *p_this) { - 8029e68: b580 push {r7, lr} - 8029e6a: b082 sub sp, #8 - 8029e6c: af00 add r7, sp, #0 - 8029e6e: 6078 str r0, [r7, #4] + 8029ea8: b580 push {r7, lr} + 8029eaa: b082 sub sp, #8 + 8029eac: af00 add r7, sp, #0 + 8029eae: 6078 str r0, [r7, #4] Move_Forwards_Do(CV.RobotUpAngleValue + GV.PV.Vertical_Calibration); - 8029e70: 4b0a ldr r3, [pc, #40] ; (8029e9c ) - 8029e72: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8029e76: ee07 3a90 vmov s15, r3 - 8029e7a: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029e7e: 4b08 ldr r3, [pc, #32] ; (8029ea0 ) - 8029e80: ed93 7b5e vldr d7, [r3, #376] ; 0x178 - 8029e84: ee36 7b07 vadd.f64 d7, d6, d7 - 8029e88: eefd 7bc7 vcvt.s32.f64 s15, d7 - 8029e8c: ee17 0a90 vmov r0, s15 - 8029e90: f000 f83a bl 8029f08 -} - 8029e94: bf00 nop - 8029e96: 3708 adds r7, #8 - 8029e98: 46bd mov sp, r7 - 8029e9a: bd80 pop {r7, pc} - 8029e9c: 240001d8 .word 0x240001d8 - 8029ea0: 240002b0 .word 0x240002b0 - -08029ea4 : + 8029eb0: 4b0a ldr r3, [pc, #40] ; (8029edc ) + 8029eb2: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8029eb6: ee07 3a90 vmov s15, r3 + 8029eba: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8029ebe: 4b08 ldr r3, [pc, #32] ; (8029ee0 ) + 8029ec0: ed93 7b5e vldr d7, [r3, #376] ; 0x178 + 8029ec4: ee36 7b07 vadd.f64 d7, d6, d7 + 8029ec8: eefd 7bc7 vcvt.s32.f64 s15, d7 + 8029ecc: ee17 0a90 vmov r0, s15 + 8029ed0: f000 f83a bl 8029f48 +} + 8029ed4: bf00 nop + 8029ed6: 3708 adds r7, #8 + 8029ed8: 46bd mov sp, r7 + 8029eda: bd80 pop {r7, pc} + 8029edc: 240001d8 .word 0x240001d8 + 8029ee0: 240002b0 .word 0x240002b0 + +08029ee4 : /* 竖直后退,保持目标角度 CV.RobotUpAngleValue * Target_Angle: 0.01度 * */ void Move_Vertical_Task_Backwards_Do(transition_t *p_this) { - 8029ea4: b580 push {r7, lr} - 8029ea6: b082 sub sp, #8 - 8029ea8: af00 add r7, sp, #0 - 8029eaa: 6078 str r0, [r7, #4] + 8029ee4: b580 push {r7, lr} + 8029ee6: b082 sub sp, #8 + 8029ee8: af00 add r7, sp, #0 + 8029eea: 6078 str r0, [r7, #4] Move_Backwards_Do(CV.RobotUpAngleValue + GV.PV.Vertical_Calibration); - 8029eac: 4b0a ldr r3, [pc, #40] ; (8029ed8 ) - 8029eae: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8029eb2: ee07 3a90 vmov s15, r3 - 8029eb6: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029eba: 4b08 ldr r3, [pc, #32] ; (8029edc ) - 8029ebc: ed93 7b5e vldr d7, [r3, #376] ; 0x178 - 8029ec0: ee36 7b07 vadd.f64 d7, d6, d7 - 8029ec4: eefd 7bc7 vcvt.s32.f64 s15, d7 - 8029ec8: ee17 0a90 vmov r0, s15 - 8029ecc: f000 f8e8 bl 802a0a0 -} - 8029ed0: bf00 nop - 8029ed2: 3708 adds r7, #8 - 8029ed4: 46bd mov sp, r7 - 8029ed6: bd80 pop {r7, pc} - 8029ed8: 240001d8 .word 0x240001d8 - 8029edc: 240002b0 .word 0x240002b0 - -08029ee0 : + 8029eec: 4b0a ldr r3, [pc, #40] ; (8029f18 ) + 8029eee: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8029ef2: ee07 3a90 vmov s15, r3 + 8029ef6: eeb8 6be7 vcvt.f64.s32 d6, s15 + 8029efa: 4b08 ldr r3, [pc, #32] ; (8029f1c ) + 8029efc: ed93 7b5e vldr d7, [r3, #376] ; 0x178 + 8029f00: ee36 7b07 vadd.f64 d7, d6, d7 + 8029f04: eefd 7bc7 vcvt.s32.f64 s15, d7 + 8029f08: ee17 0a90 vmov r0, s15 + 8029f0c: f000 f8e8 bl 802a0e0 +} + 8029f10: bf00 nop + 8029f12: 3708 adds r7, #8 + 8029f14: 46bd mov sp, r7 + 8029f16: bd80 pop {r7, pc} + 8029f18: 240001d8 .word 0x240001d8 + 8029f1c: 240002b0 .word 0x240002b0 + +08029f20 : void HALT_State_Enter(transition_t *p_this) { - 8029ee0: b480 push {r7} - 8029ee2: b083 sub sp, #12 - 8029ee4: af00 add r7, sp, #0 - 8029ee6: 6078 str r0, [r7, #4] + 8029f20: b480 push {r7} + 8029f22: b083 sub sp, #12 + 8029f24: af00 add r7, sp, #0 + 8029f26: 6078 str r0, [r7, #4] } - 8029ee8: bf00 nop - 8029eea: 370c adds r7, #12 - 8029eec: 46bd mov sp, r7 - 8029eee: f85d 7b04 ldr.w r7, [sp], #4 - 8029ef2: 4770 bx lr + 8029f28: bf00 nop + 8029f2a: 370c adds r7, #12 + 8029f2c: 46bd mov sp, r7 + 8029f2e: f85d 7b04 ldr.w r7, [sp], #4 + 8029f32: 4770 bx lr -08029ef4 : +08029f34 : void HALT_State_Exit(transition_t *p_this) { - 8029ef4: b480 push {r7} - 8029ef6: b083 sub sp, #12 - 8029ef8: af00 add r7, sp, #0 - 8029efa: 6078 str r0, [r7, #4] + 8029f34: b480 push {r7} + 8029f36: b083 sub sp, #12 + 8029f38: af00 add r7, sp, #0 + 8029f3a: 6078 str r0, [r7, #4] } - 8029efc: bf00 nop - 8029efe: 370c adds r7, #12 - 8029f00: 46bd mov sp, r7 - 8029f02: f85d 7b04 ldr.w r7, [sp], #4 - 8029f06: 4770 bx lr + 8029f3c: bf00 nop + 8029f3e: 370c adds r7, #12 + 8029f40: 46bd mov sp, r7 + 8029f42: f85d 7b04 ldr.w r7, [sp], #4 + 8029f46: 4770 bx lr -08029f08 : +08029f48 : /* * 底层前进,保持目标角度 纠偏 被调用 * Target_Angle: 0.01度 * */ void Move_Forwards_Do(int32_t Target_Angle) { - 8029f08: b580 push {r7, lr} - 8029f0a: b082 sub sp, #8 - 8029f0c: af00 add r7, sp, #0 - 8029f0e: 6078 str r0, [r7, #4] + 8029f48: b580 push {r7, lr} + 8029f4a: b082 sub sp, #8 + 8029f4c: af00 add r7, sp, #0 + 8029f4e: 6078 str r0, [r7, #4] if (abs(GV.Robot_Angle - Target_Angle) <= 400) //// 误差在正负4度内,行进中校正 - 8029f10: 4b5f ldr r3, [pc, #380] ; (802a090 ) - 8029f12: 68da ldr r2, [r3, #12] - 8029f14: 687b ldr r3, [r7, #4] - 8029f16: 1ad3 subs r3, r2, r3 - 8029f18: f513 7fc8 cmn.w r3, #400 ; 0x190 - 8029f1c: db6f blt.n 8029ffe - 8029f1e: 4b5c ldr r3, [pc, #368] ; (802a090 ) - 8029f20: 68da ldr r2, [r3, #12] - 8029f22: 687b ldr r3, [r7, #4] - 8029f24: 1ad3 subs r3, r2, r3 - 8029f26: f5b3 7fc8 cmp.w r3, #400 ; 0x190 - 8029f2a: dc68 bgt.n 8029ffe + 8029f50: 4b5f ldr r3, [pc, #380] ; (802a0d0 ) + 8029f52: 68da ldr r2, [r3, #12] + 8029f54: 687b ldr r3, [r7, #4] + 8029f56: 1ad3 subs r3, r2, r3 + 8029f58: f513 7fc8 cmn.w r3, #400 ; 0x190 + 8029f5c: db6f blt.n 802a03e + 8029f5e: 4b5c ldr r3, [pc, #368] ; (802a0d0 ) + 8029f60: 68da ldr r2, [r3, #12] + 8029f62: 687b ldr r3, [r7, #4] + 8029f64: 1ad3 subs r3, r2, r3 + 8029f66: f5b3 7fc8 cmp.w r3, #400 ; 0x190 + 8029f6a: dc68 bgt.n 802a03e { if (abs(GV.Robot_Angle - Target_Angle) < 100) //// 误差在正负1度内 - 8029f2c: 4b58 ldr r3, [pc, #352] ; (802a090 ) - 8029f2e: 68da ldr r2, [r3, #12] - 8029f30: 687b ldr r3, [r7, #4] - 8029f32: 1ad3 subs r3, r2, r3 - 8029f34: f113 0f63 cmn.w r3, #99 ; 0x63 - 8029f38: db24 blt.n 8029f84 - 8029f3a: 4b55 ldr r3, [pc, #340] ; (802a090 ) - 8029f3c: 68da ldr r2, [r3, #12] - 8029f3e: 687b ldr r3, [r7, #4] - 8029f40: 1ad3 subs r3, r2, r3 - 8029f42: 2b63 cmp r3, #99 ; 0x63 - 8029f44: dc1e bgt.n 8029f84 + 8029f6c: 4b58 ldr r3, [pc, #352] ; (802a0d0 ) + 8029f6e: 68da ldr r2, [r3, #12] + 8029f70: 687b ldr r3, [r7, #4] + 8029f72: 1ad3 subs r3, r2, r3 + 8029f74: f113 0f63 cmn.w r3, #99 ; 0x63 + 8029f78: db24 blt.n 8029fc4 + 8029f7a: 4b55 ldr r3, [pc, #340] ; (802a0d0 ) + 8029f7c: 68da ldr r2, [r3, #12] + 8029f7e: 687b ldr r3, [r7, #4] + 8029f80: 1ad3 subs r3, r2, r3 + 8029f82: 2b63 cmp r3, #99 ; 0x63 + 8029f84: dc1e bgt.n 8029fc4 { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.02, 0, 0.01, 2); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.01, 0, 0.01, 1); - 8029f46: 4b52 ldr r3, [pc, #328] ; (802a090 ) - 8029f48: 68db ldr r3, [r3, #12] - 8029f4a: ee07 3a90 vmov s15, r3 - 8029f4e: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029f52: 687b ldr r3, [r7, #4] - 8029f54: ee06 3a90 vmov s13, r3 - 8029f58: eeb8 6be6 vcvt.f64.s32 d6, s13 - 8029f5c: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 - 8029f60: ed9f 4b43 vldr d4, [pc, #268] ; 802a070 - 8029f64: ed9f 3b44 vldr d3, [pc, #272] ; 802a078 - 8029f68: ed9f 2b41 vldr d2, [pc, #260] ; 802a070 - 8029f6c: eeb0 1b46 vmov.f64 d1, d6 - 8029f70: eeb0 0b47 vmov.f64 d0, d7 - 8029f74: f7fd ffac bl 8027ed0 - 8029f78: eeb0 7b40 vmov.f64 d7, d0 - 8029f7c: 4b45 ldr r3, [pc, #276] ; (802a094 ) - 8029f7e: ed83 7b00 vstr d7, [r3] - 8029f82: e01d b.n 8029fc0 + 8029f86: 4b52 ldr r3, [pc, #328] ; (802a0d0 ) + 8029f88: 68db ldr r3, [r3, #12] + 8029f8a: ee07 3a90 vmov s15, r3 + 8029f8e: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029f92: 687b ldr r3, [r7, #4] + 8029f94: ee06 3a90 vmov s13, r3 + 8029f98: eeb8 6be6 vcvt.f64.s32 d6, s13 + 8029f9c: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 + 8029fa0: ed9f 4b43 vldr d4, [pc, #268] ; 802a0b0 + 8029fa4: ed9f 3b44 vldr d3, [pc, #272] ; 802a0b8 + 8029fa8: ed9f 2b41 vldr d2, [pc, #260] ; 802a0b0 + 8029fac: eeb0 1b46 vmov.f64 d1, d6 + 8029fb0: eeb0 0b47 vmov.f64 d0, d7 + 8029fb4: f7fd ff9c bl 8027ef0 + 8029fb8: eeb0 7b40 vmov.f64 d7, d0 + 8029fbc: 4b45 ldr r3, [pc, #276] ; (802a0d4 ) + 8029fbe: ed83 7b00 vstr d7, [r3] + 8029fc2: e01d b.n 802a000 } else //1-4° { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.04, 0, 0.01, 4); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.02, 0, 0.01, 2); - 8029f84: 4b42 ldr r3, [pc, #264] ; (802a090 ) - 8029f86: 68db ldr r3, [r3, #12] - 8029f88: ee07 3a90 vmov s15, r3 - 8029f8c: eeb8 7be7 vcvt.f64.s32 d7, s15 - 8029f90: 687b ldr r3, [r7, #4] - 8029f92: ee06 3a90 vmov s13, r3 - 8029f96: eeb8 6be6 vcvt.f64.s32 d6, s13 - 8029f9a: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 8029f9e: ed9f 4b34 vldr d4, [pc, #208] ; 802a070 - 8029fa2: ed9f 3b35 vldr d3, [pc, #212] ; 802a078 - 8029fa6: ed9f 2b36 vldr d2, [pc, #216] ; 802a080 - 8029faa: eeb0 1b46 vmov.f64 d1, d6 - 8029fae: eeb0 0b47 vmov.f64 d0, d7 - 8029fb2: f7fd ff8d bl 8027ed0 - 8029fb6: eeb0 7b40 vmov.f64 d7, d0 - 8029fba: 4b36 ldr r3, [pc, #216] ; (802a094 ) - 8029fbc: ed83 7b00 vstr d7, [r3] + 8029fc4: 4b42 ldr r3, [pc, #264] ; (802a0d0 ) + 8029fc6: 68db ldr r3, [r3, #12] + 8029fc8: ee07 3a90 vmov s15, r3 + 8029fcc: eeb8 7be7 vcvt.f64.s32 d7, s15 + 8029fd0: 687b ldr r3, [r7, #4] + 8029fd2: ee06 3a90 vmov s13, r3 + 8029fd6: eeb8 6be6 vcvt.f64.s32 d6, s13 + 8029fda: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 8029fde: ed9f 4b34 vldr d4, [pc, #208] ; 802a0b0 + 8029fe2: ed9f 3b35 vldr d3, [pc, #212] ; 802a0b8 + 8029fe6: ed9f 2b36 vldr d2, [pc, #216] ; 802a0c0 + 8029fea: eeb0 1b46 vmov.f64 d1, d6 + 8029fee: eeb0 0b47 vmov.f64 d0, d7 + 8029ff2: f7fd ff7d bl 8027ef0 + 8029ff6: eeb0 7b40 vmov.f64 d7, d0 + 8029ffa: 4b36 ldr r3, [pc, #216] ; (802a0d4 ) + 8029ffc: ed83 7b00 vstr d7, [r3] } GV.LeftMotor.Target_Velcity = GV.Robot_Move_Speed - dletAngle ; - 8029fc0: 4b33 ldr r3, [pc, #204] ; (802a090 ) - 8029fc2: 691b ldr r3, [r3, #16] - 8029fc4: ee07 3a90 vmov s15, r3 - 8029fc8: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029fcc: 4b31 ldr r3, [pc, #196] ; (802a094 ) - 8029fce: ed93 7b00 vldr d7, [r3] - 8029fd2: ee36 7b47 vsub.f64 d7, d6, d7 - 8029fd6: 4b2e ldr r3, [pc, #184] ; (802a090 ) - 8029fd8: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 802a000: 4b33 ldr r3, [pc, #204] ; (802a0d0 ) + 802a002: 691b ldr r3, [r3, #16] + 802a004: ee07 3a90 vmov s15, r3 + 802a008: eeb8 6be7 vcvt.f64.s32 d6, s15 + 802a00c: 4b31 ldr r3, [pc, #196] ; (802a0d4 ) + 802a00e: ed93 7b00 vldr d7, [r3] + 802a012: ee36 7b47 vsub.f64 d7, d6, d7 + 802a016: 4b2e ldr r3, [pc, #184] ; (802a0d0 ) + 802a018: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletAngle) ;//注意电机方向 - 8029fdc: 4b2c ldr r3, [pc, #176] ; (802a090 ) - 8029fde: 691b ldr r3, [r3, #16] - 8029fe0: ee07 3a90 vmov s15, r3 - 8029fe4: eeb8 6be7 vcvt.f64.s32 d6, s15 - 8029fe8: 4b2a ldr r3, [pc, #168] ; (802a094 ) - 8029fea: ed93 7b00 vldr d7, [r3] - 8029fee: ee36 7b07 vadd.f64 d7, d6, d7 - 8029ff2: eeb1 7b47 vneg.f64 d7, d7 - 8029ff6: 4b26 ldr r3, [pc, #152] ; (802a090 ) - 8029ff8: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 - 8029ffc: e02d b.n 802a05a + 802a01c: 4b2c ldr r3, [pc, #176] ; (802a0d0 ) + 802a01e: 691b ldr r3, [r3, #16] + 802a020: ee07 3a90 vmov s15, r3 + 802a024: eeb8 6be7 vcvt.f64.s32 d6, s15 + 802a028: 4b2a ldr r3, [pc, #168] ; (802a0d4 ) + 802a02a: ed93 7b00 vldr d7, [r3] + 802a02e: ee36 7b07 vadd.f64 d7, d6, d7 + 802a032: eeb1 7b47 vneg.f64 d7, d7 + 802a036: 4b26 ldr r3, [pc, #152] ; (802a0d0 ) + 802a038: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 802a03c: e02d b.n 802a09a } else //大于4°,原地转向校正 { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.06, 0, 0.01, 6); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.03, 0, 0.01, 3); - 8029ffe: 4b24 ldr r3, [pc, #144] ; (802a090 ) - 802a000: 68db ldr r3, [r3, #12] - 802a002: ee07 3a90 vmov s15, r3 - 802a006: eeb8 7be7 vcvt.f64.s32 d7, s15 - 802a00a: 687b ldr r3, [r7, #4] - 802a00c: ee06 3a90 vmov s13, r3 - 802a010: eeb8 6be6 vcvt.f64.s32 d6, s13 - 802a014: eeb0 5b08 vmov.f64 d5, #8 ; 0x40400000 3.0 - 802a018: ed9f 4b15 vldr d4, [pc, #84] ; 802a070 - 802a01c: ed9f 3b16 vldr d3, [pc, #88] ; 802a078 - 802a020: ed9f 2b19 vldr d2, [pc, #100] ; 802a088 - 802a024: eeb0 1b46 vmov.f64 d1, d6 - 802a028: eeb0 0b47 vmov.f64 d0, d7 - 802a02c: f7fd ff50 bl 8027ed0 - 802a030: eeb0 7b40 vmov.f64 d7, d0 - 802a034: 4b17 ldr r3, [pc, #92] ; (802a094 ) - 802a036: ed83 7b00 vstr d7, [r3] + 802a03e: 4b24 ldr r3, [pc, #144] ; (802a0d0 ) + 802a040: 68db ldr r3, [r3, #12] + 802a042: ee07 3a90 vmov s15, r3 + 802a046: eeb8 7be7 vcvt.f64.s32 d7, s15 + 802a04a: 687b ldr r3, [r7, #4] + 802a04c: ee06 3a90 vmov s13, r3 + 802a050: eeb8 6be6 vcvt.f64.s32 d6, s13 + 802a054: eeb0 5b08 vmov.f64 d5, #8 ; 0x40400000 3.0 + 802a058: ed9f 4b15 vldr d4, [pc, #84] ; 802a0b0 + 802a05c: ed9f 3b16 vldr d3, [pc, #88] ; 802a0b8 + 802a060: ed9f 2b19 vldr d2, [pc, #100] ; 802a0c8 + 802a064: eeb0 1b46 vmov.f64 d1, d6 + 802a068: eeb0 0b47 vmov.f64 d0, d7 + 802a06c: f7fd ff40 bl 8027ef0 + 802a070: eeb0 7b40 vmov.f64 d7, d0 + 802a074: 4b17 ldr r3, [pc, #92] ; (802a0d4 ) + 802a076: ed83 7b00 vstr d7, [r3] GV.LeftMotor.Target_Velcity = -dletAngle ; - 802a03a: 4b16 ldr r3, [pc, #88] ; (802a094 ) - 802a03c: ed93 7b00 vldr d7, [r3] - 802a040: eeb1 7b47 vneg.f64 d7, d7 - 802a044: 4b12 ldr r3, [pc, #72] ; (802a090 ) - 802a046: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 802a07a: 4b16 ldr r3, [pc, #88] ; (802a0d4 ) + 802a07c: ed93 7b00 vldr d7, [r3] + 802a080: eeb1 7b47 vneg.f64 d7, d7 + 802a084: 4b12 ldr r3, [pc, #72] ; (802a0d0 ) + 802a086: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -(dletAngle) ;//注意电机方向 - 802a04a: 4b12 ldr r3, [pc, #72] ; (802a094 ) - 802a04c: ed93 7b00 vldr d7, [r3] - 802a050: eeb1 7b47 vneg.f64 d7, d7 - 802a054: 4b0e ldr r3, [pc, #56] ; (802a090 ) - 802a056: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 802a08a: 4b12 ldr r3, [pc, #72] ; (802a0d4 ) + 802a08c: ed93 7b00 vldr d7, [r3] + 802a090: eeb1 7b47 vneg.f64 d7, d7 + 802a094: 4b0e ldr r3, [pc, #56] ; (802a0d0 ) + 802a096: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 } delt=dletAngle; - 802a05a: 4b0e ldr r3, [pc, #56] ; (802a094 ) - 802a05c: e9d3 2300 ldrd r2, r3, [r3] - 802a060: 490d ldr r1, [pc, #52] ; (802a098 ) - 802a062: e9c1 2300 strd r2, r3, [r1] -} - 802a066: bf00 nop - 802a068: 3708 adds r7, #8 - 802a06a: 46bd mov sp, r7 - 802a06c: bd80 pop {r7, pc} - 802a06e: bf00 nop - 802a070: 47ae147b .word 0x47ae147b - 802a074: 3f847ae1 .word 0x3f847ae1 + 802a09a: 4b0e ldr r3, [pc, #56] ; (802a0d4 ) + 802a09c: e9d3 2300 ldrd r2, r3, [r3] + 802a0a0: 490d ldr r1, [pc, #52] ; (802a0d8 ) + 802a0a2: e9c1 2300 strd r2, r3, [r1] +} + 802a0a6: bf00 nop + 802a0a8: 3708 adds r7, #8 + 802a0aa: 46bd mov sp, r7 + 802a0ac: bd80 pop {r7, pc} + 802a0ae: bf00 nop + 802a0b0: 47ae147b .word 0x47ae147b + 802a0b4: 3f847ae1 .word 0x3f847ae1 ... - 802a080: 47ae147b .word 0x47ae147b - 802a084: 3f947ae1 .word 0x3f947ae1 - 802a088: eb851eb8 .word 0xeb851eb8 - 802a08c: 3f9eb851 .word 0x3f9eb851 - 802a090: 240002b0 .word 0x240002b0 - 802a094: 2400aee0 .word 0x2400aee0 - 802a098: 2400aee8 .word 0x2400aee8 - 802a09c: 00000000 .word 0x00000000 + 802a0c0: 47ae147b .word 0x47ae147b + 802a0c4: 3f947ae1 .word 0x3f947ae1 + 802a0c8: eb851eb8 .word 0xeb851eb8 + 802a0cc: 3f9eb851 .word 0x3f9eb851 + 802a0d0: 240002b0 .word 0x240002b0 + 802a0d4: 2400aee0 .word 0x2400aee0 + 802a0d8: 2400aee8 .word 0x2400aee8 + 802a0dc: 00000000 .word 0x00000000 -0802a0a0 : +0802a0e0 : /* 后退,保持目标角度 纠偏 * Target_Angle: 0.01度 * */ void Move_Backwards_Do(int32_t Target_Angle) { - 802a0a0: b580 push {r7, lr} - 802a0a2: b082 sub sp, #8 - 802a0a4: af00 add r7, sp, #0 - 802a0a6: 6078 str r0, [r7, #4] + 802a0e0: b580 push {r7, lr} + 802a0e2: b082 sub sp, #8 + 802a0e4: af00 add r7, sp, #0 + 802a0e6: 6078 str r0, [r7, #4] if (abs(GV.Robot_Angle - Target_Angle) <= 400) //// 误差在正负4度内 - 802a0a8: 4b5d ldr r3, [pc, #372] ; (802a220 ) - 802a0aa: 68da ldr r2, [r3, #12] - 802a0ac: 687b ldr r3, [r7, #4] - 802a0ae: 1ad3 subs r3, r2, r3 - 802a0b0: f513 7fc8 cmn.w r3, #400 ; 0x190 - 802a0b4: db6f blt.n 802a196 - 802a0b6: 4b5a ldr r3, [pc, #360] ; (802a220 ) - 802a0b8: 68da ldr r2, [r3, #12] - 802a0ba: 687b ldr r3, [r7, #4] - 802a0bc: 1ad3 subs r3, r2, r3 - 802a0be: f5b3 7fc8 cmp.w r3, #400 ; 0x190 - 802a0c2: dc68 bgt.n 802a196 + 802a0e8: 4b5d ldr r3, [pc, #372] ; (802a260 ) + 802a0ea: 68da ldr r2, [r3, #12] + 802a0ec: 687b ldr r3, [r7, #4] + 802a0ee: 1ad3 subs r3, r2, r3 + 802a0f0: f513 7fc8 cmn.w r3, #400 ; 0x190 + 802a0f4: db6f blt.n 802a1d6 + 802a0f6: 4b5a ldr r3, [pc, #360] ; (802a260 ) + 802a0f8: 68da ldr r2, [r3, #12] + 802a0fa: 687b ldr r3, [r7, #4] + 802a0fc: 1ad3 subs r3, r2, r3 + 802a0fe: f5b3 7fc8 cmp.w r3, #400 ; 0x190 + 802a102: dc68 bgt.n 802a1d6 { if (abs(GV.Robot_Angle - Target_Angle) < 100) //// 误差在正负1度内 - 802a0c4: 4b56 ldr r3, [pc, #344] ; (802a220 ) - 802a0c6: 68da ldr r2, [r3, #12] - 802a0c8: 687b ldr r3, [r7, #4] - 802a0ca: 1ad3 subs r3, r2, r3 - 802a0cc: f113 0f63 cmn.w r3, #99 ; 0x63 - 802a0d0: db24 blt.n 802a11c - 802a0d2: 4b53 ldr r3, [pc, #332] ; (802a220 ) - 802a0d4: 68da ldr r2, [r3, #12] - 802a0d6: 687b ldr r3, [r7, #4] - 802a0d8: 1ad3 subs r3, r2, r3 - 802a0da: 2b63 cmp r3, #99 ; 0x63 - 802a0dc: dc1e bgt.n 802a11c + 802a104: 4b56 ldr r3, [pc, #344] ; (802a260 ) + 802a106: 68da ldr r2, [r3, #12] + 802a108: 687b ldr r3, [r7, #4] + 802a10a: 1ad3 subs r3, r2, r3 + 802a10c: f113 0f63 cmn.w r3, #99 ; 0x63 + 802a110: db24 blt.n 802a15c + 802a112: 4b53 ldr r3, [pc, #332] ; (802a260 ) + 802a114: 68da ldr r2, [r3, #12] + 802a116: 687b ldr r3, [r7, #4] + 802a118: 1ad3 subs r3, r2, r3 + 802a11a: 2b63 cmp r3, #99 ; 0x63 + 802a11c: dc1e bgt.n 802a15c { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.02, 0, 0.01, 2); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.01, 0, 0.01, 1); - 802a0de: 4b50 ldr r3, [pc, #320] ; (802a220 ) - 802a0e0: 68db ldr r3, [r3, #12] - 802a0e2: ee07 3a90 vmov s15, r3 - 802a0e6: eeb8 7be7 vcvt.f64.s32 d7, s15 - 802a0ea: 687b ldr r3, [r7, #4] - 802a0ec: ee06 3a90 vmov s13, r3 - 802a0f0: eeb8 6be6 vcvt.f64.s32 d6, s13 - 802a0f4: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 - 802a0f8: ed9f 4b41 vldr d4, [pc, #260] ; 802a200 - 802a0fc: ed9f 3b42 vldr d3, [pc, #264] ; 802a208 - 802a100: ed9f 2b3f vldr d2, [pc, #252] ; 802a200 - 802a104: eeb0 1b46 vmov.f64 d1, d6 - 802a108: eeb0 0b47 vmov.f64 d0, d7 - 802a10c: f7fd fee0 bl 8027ed0 - 802a110: eeb0 7b40 vmov.f64 d7, d0 - 802a114: 4b43 ldr r3, [pc, #268] ; (802a224 ) - 802a116: ed83 7b00 vstr d7, [r3] - 802a11a: e01d b.n 802a158 + 802a11e: 4b50 ldr r3, [pc, #320] ; (802a260 ) + 802a120: 68db ldr r3, [r3, #12] + 802a122: ee07 3a90 vmov s15, r3 + 802a126: eeb8 7be7 vcvt.f64.s32 d7, s15 + 802a12a: 687b ldr r3, [r7, #4] + 802a12c: ee06 3a90 vmov s13, r3 + 802a130: eeb8 6be6 vcvt.f64.s32 d6, s13 + 802a134: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 + 802a138: ed9f 4b41 vldr d4, [pc, #260] ; 802a240 + 802a13c: ed9f 3b42 vldr d3, [pc, #264] ; 802a248 + 802a140: ed9f 2b3f vldr d2, [pc, #252] ; 802a240 + 802a144: eeb0 1b46 vmov.f64 d1, d6 + 802a148: eeb0 0b47 vmov.f64 d0, d7 + 802a14c: f7fd fed0 bl 8027ef0 + 802a150: eeb0 7b40 vmov.f64 d7, d0 + 802a154: 4b43 ldr r3, [pc, #268] ; (802a264 ) + 802a156: ed83 7b00 vstr d7, [r3] + 802a15a: e01d b.n 802a198 } else /*1-4*/ { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.04, 0,0.01, 4); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.02, 0,0.01, 2); - 802a11c: 4b40 ldr r3, [pc, #256] ; (802a220 ) - 802a11e: 68db ldr r3, [r3, #12] - 802a120: ee07 3a90 vmov s15, r3 - 802a124: eeb8 7be7 vcvt.f64.s32 d7, s15 - 802a128: 687b ldr r3, [r7, #4] - 802a12a: ee06 3a90 vmov s13, r3 - 802a12e: eeb8 6be6 vcvt.f64.s32 d6, s13 - 802a132: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 - 802a136: ed9f 4b32 vldr d4, [pc, #200] ; 802a200 - 802a13a: ed9f 3b33 vldr d3, [pc, #204] ; 802a208 - 802a13e: ed9f 2b34 vldr d2, [pc, #208] ; 802a210 - 802a142: eeb0 1b46 vmov.f64 d1, d6 - 802a146: eeb0 0b47 vmov.f64 d0, d7 - 802a14a: f7fd fec1 bl 8027ed0 - 802a14e: eeb0 7b40 vmov.f64 d7, d0 - 802a152: 4b34 ldr r3, [pc, #208] ; (802a224 ) - 802a154: ed83 7b00 vstr d7, [r3] + 802a15c: 4b40 ldr r3, [pc, #256] ; (802a260 ) + 802a15e: 68db ldr r3, [r3, #12] + 802a160: ee07 3a90 vmov s15, r3 + 802a164: eeb8 7be7 vcvt.f64.s32 d7, s15 + 802a168: 687b ldr r3, [r7, #4] + 802a16a: ee06 3a90 vmov s13, r3 + 802a16e: eeb8 6be6 vcvt.f64.s32 d6, s13 + 802a172: eeb0 5b00 vmov.f64 d5, #0 ; 0x40000000 2.0 + 802a176: ed9f 4b32 vldr d4, [pc, #200] ; 802a240 + 802a17a: ed9f 3b33 vldr d3, [pc, #204] ; 802a248 + 802a17e: ed9f 2b34 vldr d2, [pc, #208] ; 802a250 + 802a182: eeb0 1b46 vmov.f64 d1, d6 + 802a186: eeb0 0b47 vmov.f64 d0, d7 + 802a18a: f7fd feb1 bl 8027ef0 + 802a18e: eeb0 7b40 vmov.f64 d7, d0 + 802a192: 4b34 ldr r3, [pc, #208] ; (802a264 ) + 802a194: ed83 7b00 vstr d7, [r3] } GV.LeftMotor.Target_Velcity = -(GV.Robot_Move_Speed + dletAngle) ; - 802a158: 4b31 ldr r3, [pc, #196] ; (802a220 ) - 802a15a: 691b ldr r3, [r3, #16] - 802a15c: ee07 3a90 vmov s15, r3 - 802a160: eeb8 6be7 vcvt.f64.s32 d6, s15 - 802a164: 4b2f ldr r3, [pc, #188] ; (802a224 ) - 802a166: ed93 7b00 vldr d7, [r3] - 802a16a: ee36 7b07 vadd.f64 d7, d6, d7 - 802a16e: eeb1 7b47 vneg.f64 d7, d7 - 802a172: 4b2b ldr r3, [pc, #172] ; (802a220 ) - 802a174: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 802a198: 4b31 ldr r3, [pc, #196] ; (802a260 ) + 802a19a: 691b ldr r3, [r3, #16] + 802a19c: ee07 3a90 vmov s15, r3 + 802a1a0: eeb8 6be7 vcvt.f64.s32 d6, s15 + 802a1a4: 4b2f ldr r3, [pc, #188] ; (802a264 ) + 802a1a6: ed93 7b00 vldr d7, [r3] + 802a1aa: ee36 7b07 vadd.f64 d7, d6, d7 + 802a1ae: eeb1 7b47 vneg.f64 d7, d7 + 802a1b2: 4b2b ldr r3, [pc, #172] ; (802a260 ) + 802a1b4: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = (GV.Robot_Move_Speed - dletAngle);//注意电机方向 - 802a178: 4b29 ldr r3, [pc, #164] ; (802a220 ) - 802a17a: 691b ldr r3, [r3, #16] - 802a17c: ee07 3a90 vmov s15, r3 - 802a180: eeb8 6be7 vcvt.f64.s32 d6, s15 - 802a184: 4b27 ldr r3, [pc, #156] ; (802a224 ) - 802a186: ed93 7b00 vldr d7, [r3] - 802a18a: ee36 7b47 vsub.f64 d7, d6, d7 - 802a18e: 4b24 ldr r3, [pc, #144] ; (802a220 ) - 802a190: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 - 802a194: e02e b.n 802a1f4 + 802a1b8: 4b29 ldr r3, [pc, #164] ; (802a260 ) + 802a1ba: 691b ldr r3, [r3, #16] + 802a1bc: ee07 3a90 vmov s15, r3 + 802a1c0: eeb8 6be7 vcvt.f64.s32 d6, s15 + 802a1c4: 4b27 ldr r3, [pc, #156] ; (802a264 ) + 802a1c6: ed93 7b00 vldr d7, [r3] + 802a1ca: ee36 7b47 vsub.f64 d7, d6, d7 + 802a1ce: 4b24 ldr r3, [pc, #144] ; (802a260 ) + 802a1d0: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 802a1d4: e02e b.n 802a234 } else /*大于4*/ { // dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.06, 0, 0.01, 8); dletAngle = Angle_Tune_PID((double)GV.Robot_Angle, Target_Angle, 0.03, 0, 0.01, 3); - 802a196: 4b22 ldr r3, [pc, #136] ; (802a220 ) - 802a198: 68db ldr r3, [r3, #12] - 802a19a: ee07 3a90 vmov s15, r3 - 802a19e: eeb8 7be7 vcvt.f64.s32 d7, s15 - 802a1a2: 687b ldr r3, [r7, #4] - 802a1a4: ee06 3a90 vmov s13, r3 - 802a1a8: eeb8 6be6 vcvt.f64.s32 d6, s13 - 802a1ac: eeb0 5b08 vmov.f64 d5, #8 ; 0x40400000 3.0 - 802a1b0: ed9f 4b13 vldr d4, [pc, #76] ; 802a200 - 802a1b4: ed9f 3b14 vldr d3, [pc, #80] ; 802a208 - 802a1b8: ed9f 2b17 vldr d2, [pc, #92] ; 802a218 - 802a1bc: eeb0 1b46 vmov.f64 d1, d6 - 802a1c0: eeb0 0b47 vmov.f64 d0, d7 - 802a1c4: f7fd fe84 bl 8027ed0 - 802a1c8: eeb0 7b40 vmov.f64 d7, d0 - 802a1cc: 4b15 ldr r3, [pc, #84] ; (802a224 ) - 802a1ce: ed83 7b00 vstr d7, [r3] + 802a1d6: 4b22 ldr r3, [pc, #136] ; (802a260 ) + 802a1d8: 68db ldr r3, [r3, #12] + 802a1da: ee07 3a90 vmov s15, r3 + 802a1de: eeb8 7be7 vcvt.f64.s32 d7, s15 + 802a1e2: 687b ldr r3, [r7, #4] + 802a1e4: ee06 3a90 vmov s13, r3 + 802a1e8: eeb8 6be6 vcvt.f64.s32 d6, s13 + 802a1ec: eeb0 5b08 vmov.f64 d5, #8 ; 0x40400000 3.0 + 802a1f0: ed9f 4b13 vldr d4, [pc, #76] ; 802a240 + 802a1f4: ed9f 3b14 vldr d3, [pc, #80] ; 802a248 + 802a1f8: ed9f 2b17 vldr d2, [pc, #92] ; 802a258 + 802a1fc: eeb0 1b46 vmov.f64 d1, d6 + 802a200: eeb0 0b47 vmov.f64 d0, d7 + 802a204: f7fd fe74 bl 8027ef0 + 802a208: eeb0 7b40 vmov.f64 d7, d0 + 802a20c: 4b15 ldr r3, [pc, #84] ; (802a264 ) + 802a20e: ed83 7b00 vstr d7, [r3] GV.LeftMotor.Target_Velcity = -dletAngle ; - 802a1d2: 4b14 ldr r3, [pc, #80] ; (802a224 ) - 802a1d4: ed93 7b00 vldr d7, [r3] - 802a1d8: eeb1 7b47 vneg.f64 d7, d7 - 802a1dc: 4b10 ldr r3, [pc, #64] ; (802a220 ) - 802a1de: ed83 7b22 vstr d7, [r3, #136] ; 0x88 + 802a212: 4b14 ldr r3, [pc, #80] ; (802a264 ) + 802a214: ed93 7b00 vldr d7, [r3] + 802a218: eeb1 7b47 vneg.f64 d7, d7 + 802a21c: 4b10 ldr r3, [pc, #64] ; (802a260 ) + 802a21e: ed83 7b22 vstr d7, [r3, #136] ; 0x88 GV.RightMotor.Target_Velcity = -(dletAngle) ;//注意电机方向 - 802a1e2: 4b10 ldr r3, [pc, #64] ; (802a224 ) - 802a1e4: ed93 7b00 vldr d7, [r3] - 802a1e8: eeb1 7b47 vneg.f64 d7, d7 - 802a1ec: 4b0c ldr r3, [pc, #48] ; (802a220 ) - 802a1ee: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 + 802a222: 4b10 ldr r3, [pc, #64] ; (802a264 ) + 802a224: ed93 7b00 vldr d7, [r3] + 802a228: eeb1 7b47 vneg.f64 d7, d7 + 802a22c: 4b0c ldr r3, [pc, #48] ; (802a260 ) + 802a22e: ed83 7b34 vstr d7, [r3, #208] ; 0xd0 } } - 802a1f2: bf00 nop - 802a1f4: bf00 nop - 802a1f6: 3708 adds r7, #8 - 802a1f8: 46bd mov sp, r7 - 802a1fa: bd80 pop {r7, pc} - 802a1fc: f3af 8000 nop.w - 802a200: 47ae147b .word 0x47ae147b - 802a204: 3f847ae1 .word 0x3f847ae1 + 802a232: bf00 nop + 802a234: bf00 nop + 802a236: 3708 adds r7, #8 + 802a238: 46bd mov sp, r7 + 802a23a: bd80 pop {r7, pc} + 802a23c: f3af 8000 nop.w + 802a240: 47ae147b .word 0x47ae147b + 802a244: 3f847ae1 .word 0x3f847ae1 ... - 802a210: 47ae147b .word 0x47ae147b - 802a214: 3f947ae1 .word 0x3f947ae1 - 802a218: eb851eb8 .word 0xeb851eb8 - 802a21c: 3f9eb851 .word 0x3f9eb851 - 802a220: 240002b0 .word 0x240002b0 - 802a224: 2400aee0 .word 0x2400aee0 + 802a250: 47ae147b .word 0x47ae147b + 802a254: 3f947ae1 .word 0x3f947ae1 + 802a258: eb851eb8 .word 0xeb851eb8 + 802a25c: 3f9eb851 .word 0x3f9eb851 + 802a260: 240002b0 .word 0x240002b0 + 802a264: 2400aee0 .word 0x2400aee0 -0802a228 : +0802a268 : ADC_HandleTypeDef hadc2; /* ADC2 init function */ void MX_ADC2_Init(void) { - 802a228: b580 push {r7, lr} - 802a22a: b088 sub sp, #32 - 802a22c: af00 add r7, sp, #0 + 802a268: b580 push {r7, lr} + 802a26a: b088 sub sp, #32 + 802a26c: af00 add r7, sp, #0 /* USER CODE BEGIN ADC2_Init 0 */ /* USER CODE END ADC2_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; - 802a22e: 1d3b adds r3, r7, #4 - 802a230: 2200 movs r2, #0 - 802a232: 601a str r2, [r3, #0] - 802a234: 605a str r2, [r3, #4] - 802a236: 609a str r2, [r3, #8] - 802a238: 60da str r2, [r3, #12] - 802a23a: 611a str r2, [r3, #16] - 802a23c: 615a str r2, [r3, #20] - 802a23e: 619a str r2, [r3, #24] + 802a26e: 1d3b adds r3, r7, #4 + 802a270: 2200 movs r2, #0 + 802a272: 601a str r2, [r3, #0] + 802a274: 605a str r2, [r3, #4] + 802a276: 609a str r2, [r3, #8] + 802a278: 60da str r2, [r3, #12] + 802a27a: 611a str r2, [r3, #16] + 802a27c: 615a str r2, [r3, #20] + 802a27e: 619a str r2, [r3, #24] /* USER CODE END ADC2_Init 1 */ /** Common config */ hadc2.Instance = ADC2; - 802a240: 4b29 ldr r3, [pc, #164] ; (802a2e8 ) - 802a242: 4a2a ldr r2, [pc, #168] ; (802a2ec ) - 802a244: 601a str r2, [r3, #0] + 802a280: 4b29 ldr r3, [pc, #164] ; (802a328 ) + 802a282: 4a2a ldr r2, [pc, #168] ; (802a32c ) + 802a284: 601a str r2, [r3, #0] hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV2; - 802a246: 4b28 ldr r3, [pc, #160] ; (802a2e8 ) - 802a248: f44f 2280 mov.w r2, #262144 ; 0x40000 - 802a24c: 605a str r2, [r3, #4] + 802a286: 4b28 ldr r3, [pc, #160] ; (802a328 ) + 802a288: f44f 2280 mov.w r2, #262144 ; 0x40000 + 802a28c: 605a str r2, [r3, #4] hadc2.Init.Resolution = ADC_RESOLUTION_16B; - 802a24e: 4b26 ldr r3, [pc, #152] ; (802a2e8 ) - 802a250: 2200 movs r2, #0 - 802a252: 609a str r2, [r3, #8] + 802a28e: 4b26 ldr r3, [pc, #152] ; (802a328 ) + 802a290: 2200 movs r2, #0 + 802a292: 609a str r2, [r3, #8] hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE; - 802a254: 4b24 ldr r3, [pc, #144] ; (802a2e8 ) - 802a256: 2200 movs r2, #0 - 802a258: 60da str r2, [r3, #12] + 802a294: 4b24 ldr r3, [pc, #144] ; (802a328 ) + 802a296: 2200 movs r2, #0 + 802a298: 60da str r2, [r3, #12] hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; - 802a25a: 4b23 ldr r3, [pc, #140] ; (802a2e8 ) - 802a25c: 2204 movs r2, #4 - 802a25e: 611a str r2, [r3, #16] + 802a29a: 4b23 ldr r3, [pc, #140] ; (802a328 ) + 802a29c: 2204 movs r2, #4 + 802a29e: 611a str r2, [r3, #16] hadc2.Init.LowPowerAutoWait = DISABLE; - 802a260: 4b21 ldr r3, [pc, #132] ; (802a2e8 ) - 802a262: 2200 movs r2, #0 - 802a264: 751a strb r2, [r3, #20] + 802a2a0: 4b21 ldr r3, [pc, #132] ; (802a328 ) + 802a2a2: 2200 movs r2, #0 + 802a2a4: 751a strb r2, [r3, #20] hadc2.Init.ContinuousConvMode = ENABLE; - 802a266: 4b20 ldr r3, [pc, #128] ; (802a2e8 ) - 802a268: 2201 movs r2, #1 - 802a26a: 755a strb r2, [r3, #21] + 802a2a6: 4b20 ldr r3, [pc, #128] ; (802a328 ) + 802a2a8: 2201 movs r2, #1 + 802a2aa: 755a strb r2, [r3, #21] hadc2.Init.NbrOfConversion = 1; - 802a26c: 4b1e ldr r3, [pc, #120] ; (802a2e8 ) - 802a26e: 2201 movs r2, #1 - 802a270: 619a str r2, [r3, #24] + 802a2ac: 4b1e ldr r3, [pc, #120] ; (802a328 ) + 802a2ae: 2201 movs r2, #1 + 802a2b0: 619a str r2, [r3, #24] hadc2.Init.DiscontinuousConvMode = DISABLE; - 802a272: 4b1d ldr r3, [pc, #116] ; (802a2e8 ) - 802a274: 2200 movs r2, #0 - 802a276: 771a strb r2, [r3, #28] + 802a2b2: 4b1d ldr r3, [pc, #116] ; (802a328 ) + 802a2b4: 2200 movs r2, #0 + 802a2b6: 771a strb r2, [r3, #28] hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; - 802a278: 4b1b ldr r3, [pc, #108] ; (802a2e8 ) - 802a27a: 2200 movs r2, #0 - 802a27c: 625a str r2, [r3, #36] ; 0x24 + 802a2b8: 4b1b ldr r3, [pc, #108] ; (802a328 ) + 802a2ba: 2200 movs r2, #0 + 802a2bc: 625a str r2, [r3, #36] ; 0x24 hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; - 802a27e: 4b1a ldr r3, [pc, #104] ; (802a2e8 ) - 802a280: 2200 movs r2, #0 - 802a282: 629a str r2, [r3, #40] ; 0x28 + 802a2be: 4b1a ldr r3, [pc, #104] ; (802a328 ) + 802a2c0: 2200 movs r2, #0 + 802a2c2: 629a str r2, [r3, #40] ; 0x28 hadc2.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR; - 802a284: 4b18 ldr r3, [pc, #96] ; (802a2e8 ) - 802a286: 2200 movs r2, #0 - 802a288: 62da str r2, [r3, #44] ; 0x2c + 802a2c4: 4b18 ldr r3, [pc, #96] ; (802a328 ) + 802a2c6: 2200 movs r2, #0 + 802a2c8: 62da str r2, [r3, #44] ; 0x2c hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED; - 802a28a: 4b17 ldr r3, [pc, #92] ; (802a2e8 ) - 802a28c: 2200 movs r2, #0 - 802a28e: 631a str r2, [r3, #48] ; 0x30 + 802a2ca: 4b17 ldr r3, [pc, #92] ; (802a328 ) + 802a2cc: 2200 movs r2, #0 + 802a2ce: 631a str r2, [r3, #48] ; 0x30 hadc2.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE; - 802a290: 4b15 ldr r3, [pc, #84] ; (802a2e8 ) - 802a292: 2200 movs r2, #0 - 802a294: 635a str r2, [r3, #52] ; 0x34 + 802a2d0: 4b15 ldr r3, [pc, #84] ; (802a328 ) + 802a2d2: 2200 movs r2, #0 + 802a2d4: 635a str r2, [r3, #52] ; 0x34 hadc2.Init.OversamplingMode = DISABLE; - 802a296: 4b14 ldr r3, [pc, #80] ; (802a2e8 ) - 802a298: 2200 movs r2, #0 - 802a29a: f883 2038 strb.w r2, [r3, #56] ; 0x38 + 802a2d6: 4b14 ldr r3, [pc, #80] ; (802a328 ) + 802a2d8: 2200 movs r2, #0 + 802a2da: f883 2038 strb.w r2, [r3, #56] ; 0x38 if (HAL_ADC_Init(&hadc2) != HAL_OK) - 802a29e: 4812 ldr r0, [pc, #72] ; (802a2e8 ) - 802a2a0: f003 f854 bl 802d34c - 802a2a4: 4603 mov r3, r0 - 802a2a6: 2b00 cmp r3, #0 - 802a2a8: d001 beq.n 802a2ae + 802a2de: 4812 ldr r0, [pc, #72] ; (802a328 ) + 802a2e0: f003 f854 bl 802d38c + 802a2e4: 4603 mov r3, r0 + 802a2e6: 2b00 cmp r3, #0 + 802a2e8: d001 beq.n 802a2ee { Error_Handler(); - 802a2aa: f000 ff07 bl 802b0bc + 802a2ea: f000 ff07 bl 802b0fc } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_5; - 802a2ae: 4b10 ldr r3, [pc, #64] ; (802a2f0 ) - 802a2b0: 607b str r3, [r7, #4] + 802a2ee: 4b10 ldr r3, [pc, #64] ; (802a330 ) + 802a2f0: 607b str r3, [r7, #4] sConfig.Rank = ADC_REGULAR_RANK_1; - 802a2b2: 2306 movs r3, #6 - 802a2b4: 60bb str r3, [r7, #8] + 802a2f2: 2306 movs r3, #6 + 802a2f4: 60bb str r3, [r7, #8] sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; - 802a2b6: 2300 movs r3, #0 - 802a2b8: 60fb str r3, [r7, #12] + 802a2f6: 2300 movs r3, #0 + 802a2f8: 60fb str r3, [r7, #12] sConfig.SingleDiff = ADC_SINGLE_ENDED; - 802a2ba: f240 73ff movw r3, #2047 ; 0x7ff - 802a2be: 613b str r3, [r7, #16] + 802a2fa: f240 73ff movw r3, #2047 ; 0x7ff + 802a2fe: 613b str r3, [r7, #16] sConfig.OffsetNumber = ADC_OFFSET_NONE; - 802a2c0: 2304 movs r3, #4 - 802a2c2: 617b str r3, [r7, #20] + 802a300: 2304 movs r3, #4 + 802a302: 617b str r3, [r7, #20] sConfig.Offset = 0; - 802a2c4: 2300 movs r3, #0 - 802a2c6: 61bb str r3, [r7, #24] + 802a304: 2300 movs r3, #0 + 802a306: 61bb str r3, [r7, #24] sConfig.OffsetSignedSaturation = DISABLE; - 802a2c8: 2300 movs r3, #0 - 802a2ca: 777b strb r3, [r7, #29] + 802a308: 2300 movs r3, #0 + 802a30a: 777b strb r3, [r7, #29] if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) - 802a2cc: 1d3b adds r3, r7, #4 - 802a2ce: 4619 mov r1, r3 - 802a2d0: 4805 ldr r0, [pc, #20] ; (802a2e8 ) - 802a2d2: f003 f9dd bl 802d690 - 802a2d6: 4603 mov r3, r0 - 802a2d8: 2b00 cmp r3, #0 - 802a2da: d001 beq.n 802a2e0 + 802a30c: 1d3b adds r3, r7, #4 + 802a30e: 4619 mov r1, r3 + 802a310: 4805 ldr r0, [pc, #20] ; (802a328 ) + 802a312: f003 f9dd bl 802d6d0 + 802a316: 4603 mov r3, r0 + 802a318: 2b00 cmp r3, #0 + 802a31a: d001 beq.n 802a320 { Error_Handler(); - 802a2dc: f000 feee bl 802b0bc + 802a31c: f000 feee bl 802b0fc } /* USER CODE BEGIN ADC2_Init 2 */ /* USER CODE END ADC2_Init 2 */ } - 802a2e0: bf00 nop - 802a2e2: 3720 adds r7, #32 - 802a2e4: 46bd mov sp, r7 - 802a2e6: bd80 pop {r7, pc} - 802a2e8: 2400aef0 .word 0x2400aef0 - 802a2ec: 40022100 .word 0x40022100 - 802a2f0: 14f00020 .word 0x14f00020 + 802a320: bf00 nop + 802a322: 3720 adds r7, #32 + 802a324: 46bd mov sp, r7 + 802a326: bd80 pop {r7, pc} + 802a328: 2400aef0 .word 0x2400aef0 + 802a32c: 40022100 .word 0x40022100 + 802a330: 14f00020 .word 0x14f00020 -0802a2f4 : +0802a334 : void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) { - 802a2f4: b580 push {r7, lr} - 802a2f6: b0b8 sub sp, #224 ; 0xe0 - 802a2f8: af00 add r7, sp, #0 - 802a2fa: 6078 str r0, [r7, #4] + 802a334: b580 push {r7, lr} + 802a336: b0b8 sub sp, #224 ; 0xe0 + 802a338: af00 add r7, sp, #0 + 802a33a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802a2fc: f107 03cc add.w r3, r7, #204 ; 0xcc - 802a300: 2200 movs r2, #0 - 802a302: 601a str r2, [r3, #0] - 802a304: 605a str r2, [r3, #4] - 802a306: 609a str r2, [r3, #8] - 802a308: 60da str r2, [r3, #12] - 802a30a: 611a str r2, [r3, #16] + 802a33c: f107 03cc add.w r3, r7, #204 ; 0xcc + 802a340: 2200 movs r2, #0 + 802a342: 601a str r2, [r3, #0] + 802a344: 605a str r2, [r3, #4] + 802a346: 609a str r2, [r3, #8] + 802a348: 60da str r2, [r3, #12] + 802a34a: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 802a30c: f107 0310 add.w r3, r7, #16 - 802a310: 22bc movs r2, #188 ; 0xbc - 802a312: 2100 movs r1, #0 - 802a314: 4618 mov r0, r3 - 802a316: f01d fd5d bl 8047dd4 + 802a34c: f107 0310 add.w r3, r7, #16 + 802a350: 22bc movs r2, #188 ; 0xbc + 802a352: 2100 movs r1, #0 + 802a354: 4618 mov r0, r3 + 802a356: f01d fd5d bl 8047e14 if(adcHandle->Instance==ADC2) - 802a31a: 687b ldr r3, [r7, #4] - 802a31c: 681b ldr r3, [r3, #0] - 802a31e: 4a2a ldr r2, [pc, #168] ; (802a3c8 ) - 802a320: 4293 cmp r3, r2 - 802a322: d14d bne.n 802a3c0 + 802a35a: 687b ldr r3, [r7, #4] + 802a35c: 681b ldr r3, [r3, #0] + 802a35e: 4a2a ldr r2, [pc, #168] ; (802a408 ) + 802a360: 4293 cmp r3, r2 + 802a362: d14d bne.n 802a400 /* USER CODE END ADC2_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC; - 802a324: f44f 2300 mov.w r3, #524288 ; 0x80000 - 802a328: 613b str r3, [r7, #16] + 802a364: f44f 2300 mov.w r3, #524288 ; 0x80000 + 802a368: 613b str r3, [r7, #16] PeriphClkInitStruct.PLL2.PLL2M = 25; - 802a32a: 2319 movs r3, #25 - 802a32c: 617b str r3, [r7, #20] + 802a36a: 2319 movs r3, #25 + 802a36c: 617b str r3, [r7, #20] PeriphClkInitStruct.PLL2.PLL2N = 288; - 802a32e: f44f 7390 mov.w r3, #288 ; 0x120 - 802a332: 61bb str r3, [r7, #24] + 802a36e: f44f 7390 mov.w r3, #288 ; 0x120 + 802a372: 61bb str r3, [r7, #24] PeriphClkInitStruct.PLL2.PLL2P = 4; - 802a334: 2304 movs r3, #4 - 802a336: 61fb str r3, [r7, #28] + 802a374: 2304 movs r3, #4 + 802a376: 61fb str r3, [r7, #28] PeriphClkInitStruct.PLL2.PLL2Q = 1; - 802a338: 2301 movs r3, #1 - 802a33a: 623b str r3, [r7, #32] + 802a378: 2301 movs r3, #1 + 802a37a: 623b str r3, [r7, #32] PeriphClkInitStruct.PLL2.PLL2R = 2; - 802a33c: 2302 movs r3, #2 - 802a33e: 627b str r3, [r7, #36] ; 0x24 + 802a37c: 2302 movs r3, #2 + 802a37e: 627b str r3, [r7, #36] ; 0x24 PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_0; - 802a340: 2300 movs r3, #0 - 802a342: 62bb str r3, [r7, #40] ; 0x28 + 802a380: 2300 movs r3, #0 + 802a382: 62bb str r3, [r7, #40] ; 0x28 PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; - 802a344: 2300 movs r3, #0 - 802a346: 62fb str r3, [r7, #44] ; 0x2c + 802a384: 2300 movs r3, #0 + 802a386: 62fb str r3, [r7, #44] ; 0x2c PeriphClkInitStruct.PLL2.PLL2FRACN = 0; - 802a348: 2300 movs r3, #0 - 802a34a: 633b str r3, [r7, #48] ; 0x30 + 802a388: 2300 movs r3, #0 + 802a38a: 633b str r3, [r7, #48] ; 0x30 PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; - 802a34c: 2300 movs r3, #0 - 802a34e: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 + 802a38c: 2300 movs r3, #0 + 802a38e: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802a352: f107 0310 add.w r3, r7, #16 - 802a356: 4618 mov r0, r3 - 802a358: f00b ffe2 bl 8036320 - 802a35c: 4603 mov r3, r0 - 802a35e: 2b00 cmp r3, #0 - 802a360: d001 beq.n 802a366 + 802a392: f107 0310 add.w r3, r7, #16 + 802a396: 4618 mov r0, r3 + 802a398: f00b ffe2 bl 8036360 + 802a39c: 4603 mov r3, r0 + 802a39e: 2b00 cmp r3, #0 + 802a3a0: d001 beq.n 802a3a6 { Error_Handler(); - 802a362: f000 feab bl 802b0bc + 802a3a2: f000 feab bl 802b0fc } /* ADC2 clock enable */ __HAL_RCC_ADC12_CLK_ENABLE(); - 802a366: 4b19 ldr r3, [pc, #100] ; (802a3cc ) - 802a368: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 802a36c: 4a17 ldr r2, [pc, #92] ; (802a3cc ) - 802a36e: f043 0320 orr.w r3, r3, #32 - 802a372: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 - 802a376: 4b15 ldr r3, [pc, #84] ; (802a3cc ) - 802a378: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 802a37c: f003 0320 and.w r3, r3, #32 - 802a380: 60fb str r3, [r7, #12] - 802a382: 68fb ldr r3, [r7, #12] + 802a3a6: 4b19 ldr r3, [pc, #100] ; (802a40c ) + 802a3a8: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 802a3ac: 4a17 ldr r2, [pc, #92] ; (802a40c ) + 802a3ae: f043 0320 orr.w r3, r3, #32 + 802a3b2: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 + 802a3b6: 4b15 ldr r3, [pc, #84] ; (802a40c ) + 802a3b8: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 802a3bc: f003 0320 and.w r3, r3, #32 + 802a3c0: 60fb str r3, [r7, #12] + 802a3c2: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOB_CLK_ENABLE(); - 802a384: 4b11 ldr r3, [pc, #68] ; (802a3cc ) - 802a386: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a38a: 4a10 ldr r2, [pc, #64] ; (802a3cc ) - 802a38c: f043 0302 orr.w r3, r3, #2 - 802a390: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a394: 4b0d ldr r3, [pc, #52] ; (802a3cc ) - 802a396: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a39a: f003 0302 and.w r3, r3, #2 - 802a39e: 60bb str r3, [r7, #8] - 802a3a0: 68bb ldr r3, [r7, #8] + 802a3c4: 4b11 ldr r3, [pc, #68] ; (802a40c ) + 802a3c6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a3ca: 4a10 ldr r2, [pc, #64] ; (802a40c ) + 802a3cc: f043 0302 orr.w r3, r3, #2 + 802a3d0: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a3d4: 4b0d ldr r3, [pc, #52] ; (802a40c ) + 802a3d6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a3da: f003 0302 and.w r3, r3, #2 + 802a3de: 60bb str r3, [r7, #8] + 802a3e0: 68bb ldr r3, [r7, #8] /**ADC2 GPIO Configuration PB1 ------> ADC2_INP5 */ GPIO_InitStruct.Pin = GPIO_PIN_1; - 802a3a2: 2302 movs r3, #2 - 802a3a4: f8c7 30cc str.w r3, [r7, #204] ; 0xcc + 802a3e2: 2302 movs r3, #2 + 802a3e4: f8c7 30cc str.w r3, [r7, #204] ; 0xcc GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; - 802a3a8: 2303 movs r3, #3 - 802a3aa: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 + 802a3e8: 2303 movs r3, #3 + 802a3ea: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a3ae: 2300 movs r3, #0 - 802a3b0: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802a3ee: 2300 movs r3, #0 + 802a3f0: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802a3b4: f107 03cc add.w r3, r7, #204 ; 0xcc - 802a3b8: 4619 mov r1, r3 - 802a3ba: 4805 ldr r0, [pc, #20] ; (802a3d0 ) - 802a3bc: f009 fa74 bl 80338a8 + 802a3f4: f107 03cc add.w r3, r7, #204 ; 0xcc + 802a3f8: 4619 mov r1, r3 + 802a3fa: 4805 ldr r0, [pc, #20] ; (802a410 ) + 802a3fc: f009 fa74 bl 80338e8 /* USER CODE BEGIN ADC2_MspInit 1 */ /* USER CODE END ADC2_MspInit 1 */ } } - 802a3c0: bf00 nop - 802a3c2: 37e0 adds r7, #224 ; 0xe0 - 802a3c4: 46bd mov sp, r7 - 802a3c6: bd80 pop {r7, pc} - 802a3c8: 40022100 .word 0x40022100 - 802a3cc: 58024400 .word 0x58024400 - 802a3d0: 58020400 .word 0x58020400 + 802a400: bf00 nop + 802a402: 37e0 adds r7, #224 ; 0xe0 + 802a404: 46bd mov sp, r7 + 802a406: bd80 pop {r7, pc} + 802a408: 40022100 .word 0x40022100 + 802a40c: 58024400 .word 0x58024400 + 802a410: 58020400 .word 0x58020400 -0802a3d4 : +0802a414 : /** * Enable DMA controller clock */ void MX_DMA_Init(void) { - 802a3d4: b580 push {r7, lr} - 802a3d6: b082 sub sp, #8 - 802a3d8: af00 add r7, sp, #0 + 802a414: b580 push {r7, lr} + 802a416: b082 sub sp, #8 + 802a418: af00 add r7, sp, #0 /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); - 802a3da: 4b25 ldr r3, [pc, #148] ; (802a470 ) - 802a3dc: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 802a3e0: 4a23 ldr r2, [pc, #140] ; (802a470 ) - 802a3e2: f043 0301 orr.w r3, r3, #1 - 802a3e6: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 - 802a3ea: 4b21 ldr r3, [pc, #132] ; (802a470 ) - 802a3ec: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 802a3f0: f003 0301 and.w r3, r3, #1 - 802a3f4: 607b str r3, [r7, #4] - 802a3f6: 687b ldr r3, [r7, #4] + 802a41a: 4b25 ldr r3, [pc, #148] ; (802a4b0 ) + 802a41c: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 802a420: 4a23 ldr r2, [pc, #140] ; (802a4b0 ) + 802a422: f043 0301 orr.w r3, r3, #1 + 802a426: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 + 802a42a: 4b21 ldr r3, [pc, #132] ; (802a4b0 ) + 802a42c: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 802a430: f003 0301 and.w r3, r3, #1 + 802a434: 607b str r3, [r7, #4] + 802a436: 687b ldr r3, [r7, #4] /* DMA interrupt init */ /* DMA1_Stream0_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 3, 0); - 802a3f8: 2200 movs r2, #0 - 802a3fa: 2103 movs r1, #3 - 802a3fc: 200b movs r0, #11 - 802a3fe: f003 fe7c bl 802e0fa + 802a438: 2200 movs r2, #0 + 802a43a: 2103 movs r1, #3 + 802a43c: 200b movs r0, #11 + 802a43e: f003 fe7c bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn); - 802a402: 200b movs r0, #11 - 802a404: f003 fe93 bl 802e12e + 802a442: 200b movs r0, #11 + 802a444: f003 fe93 bl 802e16e /* DMA1_Stream1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 3, 0); - 802a408: 2200 movs r2, #0 - 802a40a: 2103 movs r1, #3 - 802a40c: 200c movs r0, #12 - 802a40e: f003 fe74 bl 802e0fa + 802a448: 2200 movs r2, #0 + 802a44a: 2103 movs r1, #3 + 802a44c: 200c movs r0, #12 + 802a44e: f003 fe74 bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn); - 802a412: 200c movs r0, #12 - 802a414: f003 fe8b bl 802e12e + 802a452: 200c movs r0, #12 + 802a454: f003 fe8b bl 802e16e /* DMA1_Stream2_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream2_IRQn, 3, 0); - 802a418: 2200 movs r2, #0 - 802a41a: 2103 movs r1, #3 - 802a41c: 200d movs r0, #13 - 802a41e: f003 fe6c bl 802e0fa + 802a458: 2200 movs r2, #0 + 802a45a: 2103 movs r1, #3 + 802a45c: 200d movs r0, #13 + 802a45e: f003 fe6c bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream2_IRQn); - 802a422: 200d movs r0, #13 - 802a424: f003 fe83 bl 802e12e + 802a462: 200d movs r0, #13 + 802a464: f003 fe83 bl 802e16e /* DMA1_Stream3_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 3, 0); - 802a428: 2200 movs r2, #0 - 802a42a: 2103 movs r1, #3 - 802a42c: 200e movs r0, #14 - 802a42e: f003 fe64 bl 802e0fa + 802a468: 2200 movs r2, #0 + 802a46a: 2103 movs r1, #3 + 802a46c: 200e movs r0, #14 + 802a46e: f003 fe64 bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn); - 802a432: 200e movs r0, #14 - 802a434: f003 fe7b bl 802e12e + 802a472: 200e movs r0, #14 + 802a474: f003 fe7b bl 802e16e /* DMA1_Stream5_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream5_IRQn, 3, 0); - 802a438: 2200 movs r2, #0 - 802a43a: 2103 movs r1, #3 - 802a43c: 2010 movs r0, #16 - 802a43e: f003 fe5c bl 802e0fa + 802a478: 2200 movs r2, #0 + 802a47a: 2103 movs r1, #3 + 802a47c: 2010 movs r0, #16 + 802a47e: f003 fe5c bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream5_IRQn); - 802a442: 2010 movs r0, #16 - 802a444: f003 fe73 bl 802e12e + 802a482: 2010 movs r0, #16 + 802a484: f003 fe73 bl 802e16e /* DMA1_Stream6_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream6_IRQn, 3, 0); - 802a448: 2200 movs r2, #0 - 802a44a: 2103 movs r1, #3 - 802a44c: 2011 movs r0, #17 - 802a44e: f003 fe54 bl 802e0fa + 802a488: 2200 movs r2, #0 + 802a48a: 2103 movs r1, #3 + 802a48c: 2011 movs r0, #17 + 802a48e: f003 fe54 bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream6_IRQn); - 802a452: 2011 movs r0, #17 - 802a454: f003 fe6b bl 802e12e + 802a492: 2011 movs r0, #17 + 802a494: f003 fe6b bl 802e16e /* DMA1_Stream7_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Stream7_IRQn, 3, 0); - 802a458: 2200 movs r2, #0 - 802a45a: 2103 movs r1, #3 - 802a45c: 202f movs r0, #47 ; 0x2f - 802a45e: f003 fe4c bl 802e0fa + 802a498: 2200 movs r2, #0 + 802a49a: 2103 movs r1, #3 + 802a49c: 202f movs r0, #47 ; 0x2f + 802a49e: f003 fe4c bl 802e13a HAL_NVIC_EnableIRQ(DMA1_Stream7_IRQn); - 802a462: 202f movs r0, #47 ; 0x2f - 802a464: f003 fe63 bl 802e12e + 802a4a2: 202f movs r0, #47 ; 0x2f + 802a4a4: f003 fe63 bl 802e16e } - 802a468: bf00 nop - 802a46a: 3708 adds r7, #8 - 802a46c: 46bd mov sp, r7 - 802a46e: bd80 pop {r7, pc} - 802a470: 58024400 .word 0x58024400 + 802a4a8: bf00 nop + 802a4aa: 3708 adds r7, #8 + 802a4ac: 46bd mov sp, r7 + 802a4ae: bd80 pop {r7, pc} + 802a4b0: 58024400 .word 0x58024400 -0802a474 : +0802a4b4 : FDCAN_HandleTypeDef hfdcan1; FDCAN_HandleTypeDef hfdcan2; /* FDCAN1 init function */ void MX_FDCAN1_Init(void) { - 802a474: b580 push {r7, lr} - 802a476: af00 add r7, sp, #0 + 802a4b4: b580 push {r7, lr} + 802a4b6: af00 add r7, sp, #0 /* USER CODE END FDCAN1_Init 0 */ /* USER CODE BEGIN FDCAN1_Init 1 */ /* USER CODE END FDCAN1_Init 1 */ hfdcan1.Instance = FDCAN1; - 802a478: 4b2e ldr r3, [pc, #184] ; (802a534 ) - 802a47a: 4a2f ldr r2, [pc, #188] ; (802a538 ) - 802a47c: 601a str r2, [r3, #0] + 802a4b8: 4b2e ldr r3, [pc, #184] ; (802a574 ) + 802a4ba: 4a2f ldr r2, [pc, #188] ; (802a578 ) + 802a4bc: 601a str r2, [r3, #0] hfdcan1.Init.FrameFormat = FDCAN_FRAME_CLASSIC; - 802a47e: 4b2d ldr r3, [pc, #180] ; (802a534 ) - 802a480: 2200 movs r2, #0 - 802a482: 609a str r2, [r3, #8] + 802a4be: 4b2d ldr r3, [pc, #180] ; (802a574 ) + 802a4c0: 2200 movs r2, #0 + 802a4c2: 609a str r2, [r3, #8] hfdcan1.Init.Mode = FDCAN_MODE_NORMAL; - 802a484: 4b2b ldr r3, [pc, #172] ; (802a534 ) - 802a486: 2200 movs r2, #0 - 802a488: 60da str r2, [r3, #12] + 802a4c4: 4b2b ldr r3, [pc, #172] ; (802a574 ) + 802a4c6: 2200 movs r2, #0 + 802a4c8: 60da str r2, [r3, #12] hfdcan1.Init.AutoRetransmission = ENABLE; - 802a48a: 4b2a ldr r3, [pc, #168] ; (802a534 ) - 802a48c: 2201 movs r2, #1 - 802a48e: 741a strb r2, [r3, #16] + 802a4ca: 4b2a ldr r3, [pc, #168] ; (802a574 ) + 802a4cc: 2201 movs r2, #1 + 802a4ce: 741a strb r2, [r3, #16] hfdcan1.Init.TransmitPause = DISABLE; - 802a490: 4b28 ldr r3, [pc, #160] ; (802a534 ) - 802a492: 2200 movs r2, #0 - 802a494: 745a strb r2, [r3, #17] + 802a4d0: 4b28 ldr r3, [pc, #160] ; (802a574 ) + 802a4d2: 2200 movs r2, #0 + 802a4d4: 745a strb r2, [r3, #17] hfdcan1.Init.ProtocolException = ENABLE; - 802a496: 4b27 ldr r3, [pc, #156] ; (802a534 ) - 802a498: 2201 movs r2, #1 - 802a49a: 749a strb r2, [r3, #18] + 802a4d6: 4b27 ldr r3, [pc, #156] ; (802a574 ) + 802a4d8: 2201 movs r2, #1 + 802a4da: 749a strb r2, [r3, #18] hfdcan1.Init.NominalPrescaler = 20; - 802a49c: 4b25 ldr r3, [pc, #148] ; (802a534 ) - 802a49e: 2214 movs r2, #20 - 802a4a0: 615a str r2, [r3, #20] + 802a4dc: 4b25 ldr r3, [pc, #148] ; (802a574 ) + 802a4de: 2214 movs r2, #20 + 802a4e0: 615a str r2, [r3, #20] hfdcan1.Init.NominalSyncJumpWidth = 8; - 802a4a2: 4b24 ldr r3, [pc, #144] ; (802a534 ) - 802a4a4: 2208 movs r2, #8 - 802a4a6: 619a str r2, [r3, #24] + 802a4e2: 4b24 ldr r3, [pc, #144] ; (802a574 ) + 802a4e4: 2208 movs r2, #8 + 802a4e6: 619a str r2, [r3, #24] hfdcan1.Init.NominalTimeSeg1 = 5; - 802a4a8: 4b22 ldr r3, [pc, #136] ; (802a534 ) - 802a4aa: 2205 movs r2, #5 - 802a4ac: 61da str r2, [r3, #28] + 802a4e8: 4b22 ldr r3, [pc, #136] ; (802a574 ) + 802a4ea: 2205 movs r2, #5 + 802a4ec: 61da str r2, [r3, #28] hfdcan1.Init.NominalTimeSeg2 = 2; - 802a4ae: 4b21 ldr r3, [pc, #132] ; (802a534 ) - 802a4b0: 2202 movs r2, #2 - 802a4b2: 621a str r2, [r3, #32] + 802a4ee: 4b21 ldr r3, [pc, #132] ; (802a574 ) + 802a4f0: 2202 movs r2, #2 + 802a4f2: 621a str r2, [r3, #32] hfdcan1.Init.DataPrescaler = 1; - 802a4b4: 4b1f ldr r3, [pc, #124] ; (802a534 ) - 802a4b6: 2201 movs r2, #1 - 802a4b8: 625a str r2, [r3, #36] ; 0x24 + 802a4f4: 4b1f ldr r3, [pc, #124] ; (802a574 ) + 802a4f6: 2201 movs r2, #1 + 802a4f8: 625a str r2, [r3, #36] ; 0x24 hfdcan1.Init.DataSyncJumpWidth = 1; - 802a4ba: 4b1e ldr r3, [pc, #120] ; (802a534 ) - 802a4bc: 2201 movs r2, #1 - 802a4be: 629a str r2, [r3, #40] ; 0x28 + 802a4fa: 4b1e ldr r3, [pc, #120] ; (802a574 ) + 802a4fc: 2201 movs r2, #1 + 802a4fe: 629a str r2, [r3, #40] ; 0x28 hfdcan1.Init.DataTimeSeg1 = 1; - 802a4c0: 4b1c ldr r3, [pc, #112] ; (802a534 ) - 802a4c2: 2201 movs r2, #1 - 802a4c4: 62da str r2, [r3, #44] ; 0x2c + 802a500: 4b1c ldr r3, [pc, #112] ; (802a574 ) + 802a502: 2201 movs r2, #1 + 802a504: 62da str r2, [r3, #44] ; 0x2c hfdcan1.Init.DataTimeSeg2 = 1; - 802a4c6: 4b1b ldr r3, [pc, #108] ; (802a534 ) - 802a4c8: 2201 movs r2, #1 - 802a4ca: 631a str r2, [r3, #48] ; 0x30 + 802a506: 4b1b ldr r3, [pc, #108] ; (802a574 ) + 802a508: 2201 movs r2, #1 + 802a50a: 631a str r2, [r3, #48] ; 0x30 hfdcan1.Init.MessageRAMOffset = 0; - 802a4cc: 4b19 ldr r3, [pc, #100] ; (802a534 ) - 802a4ce: 2200 movs r2, #0 - 802a4d0: 635a str r2, [r3, #52] ; 0x34 + 802a50c: 4b19 ldr r3, [pc, #100] ; (802a574 ) + 802a50e: 2200 movs r2, #0 + 802a510: 635a str r2, [r3, #52] ; 0x34 hfdcan1.Init.StdFiltersNbr = 1; - 802a4d2: 4b18 ldr r3, [pc, #96] ; (802a534 ) - 802a4d4: 2201 movs r2, #1 - 802a4d6: 639a str r2, [r3, #56] ; 0x38 + 802a512: 4b18 ldr r3, [pc, #96] ; (802a574 ) + 802a514: 2201 movs r2, #1 + 802a516: 639a str r2, [r3, #56] ; 0x38 hfdcan1.Init.ExtFiltersNbr = 0; - 802a4d8: 4b16 ldr r3, [pc, #88] ; (802a534 ) - 802a4da: 2200 movs r2, #0 - 802a4dc: 63da str r2, [r3, #60] ; 0x3c + 802a518: 4b16 ldr r3, [pc, #88] ; (802a574 ) + 802a51a: 2200 movs r2, #0 + 802a51c: 63da str r2, [r3, #60] ; 0x3c hfdcan1.Init.RxFifo0ElmtsNbr = 1; - 802a4de: 4b15 ldr r3, [pc, #84] ; (802a534 ) - 802a4e0: 2201 movs r2, #1 - 802a4e2: 641a str r2, [r3, #64] ; 0x40 + 802a51e: 4b15 ldr r3, [pc, #84] ; (802a574 ) + 802a520: 2201 movs r2, #1 + 802a522: 641a str r2, [r3, #64] ; 0x40 hfdcan1.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8; - 802a4e4: 4b13 ldr r3, [pc, #76] ; (802a534 ) - 802a4e6: 2204 movs r2, #4 - 802a4e8: 645a str r2, [r3, #68] ; 0x44 + 802a524: 4b13 ldr r3, [pc, #76] ; (802a574 ) + 802a526: 2204 movs r2, #4 + 802a528: 645a str r2, [r3, #68] ; 0x44 hfdcan1.Init.RxFifo1ElmtsNbr = 0; - 802a4ea: 4b12 ldr r3, [pc, #72] ; (802a534 ) - 802a4ec: 2200 movs r2, #0 - 802a4ee: 649a str r2, [r3, #72] ; 0x48 + 802a52a: 4b12 ldr r3, [pc, #72] ; (802a574 ) + 802a52c: 2200 movs r2, #0 + 802a52e: 649a str r2, [r3, #72] ; 0x48 hfdcan1.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8; - 802a4f0: 4b10 ldr r3, [pc, #64] ; (802a534 ) - 802a4f2: 2204 movs r2, #4 - 802a4f4: 64da str r2, [r3, #76] ; 0x4c + 802a530: 4b10 ldr r3, [pc, #64] ; (802a574 ) + 802a532: 2204 movs r2, #4 + 802a534: 64da str r2, [r3, #76] ; 0x4c hfdcan1.Init.RxBuffersNbr = 1; - 802a4f6: 4b0f ldr r3, [pc, #60] ; (802a534 ) - 802a4f8: 2201 movs r2, #1 - 802a4fa: 651a str r2, [r3, #80] ; 0x50 + 802a536: 4b0f ldr r3, [pc, #60] ; (802a574 ) + 802a538: 2201 movs r2, #1 + 802a53a: 651a str r2, [r3, #80] ; 0x50 hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8; - 802a4fc: 4b0d ldr r3, [pc, #52] ; (802a534 ) - 802a4fe: 2204 movs r2, #4 - 802a500: 655a str r2, [r3, #84] ; 0x54 + 802a53c: 4b0d ldr r3, [pc, #52] ; (802a574 ) + 802a53e: 2204 movs r2, #4 + 802a540: 655a str r2, [r3, #84] ; 0x54 hfdcan1.Init.TxEventsNbr = 0; - 802a502: 4b0c ldr r3, [pc, #48] ; (802a534 ) - 802a504: 2200 movs r2, #0 - 802a506: 659a str r2, [r3, #88] ; 0x58 + 802a542: 4b0c ldr r3, [pc, #48] ; (802a574 ) + 802a544: 2200 movs r2, #0 + 802a546: 659a str r2, [r3, #88] ; 0x58 hfdcan1.Init.TxBuffersNbr = 0; - 802a508: 4b0a ldr r3, [pc, #40] ; (802a534 ) - 802a50a: 2200 movs r2, #0 - 802a50c: 65da str r2, [r3, #92] ; 0x5c + 802a548: 4b0a ldr r3, [pc, #40] ; (802a574 ) + 802a54a: 2200 movs r2, #0 + 802a54c: 65da str r2, [r3, #92] ; 0x5c hfdcan1.Init.TxFifoQueueElmtsNbr = 1; - 802a50e: 4b09 ldr r3, [pc, #36] ; (802a534 ) - 802a510: 2201 movs r2, #1 - 802a512: 661a str r2, [r3, #96] ; 0x60 + 802a54e: 4b09 ldr r3, [pc, #36] ; (802a574 ) + 802a550: 2201 movs r2, #1 + 802a552: 661a str r2, [r3, #96] ; 0x60 hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION; - 802a514: 4b07 ldr r3, [pc, #28] ; (802a534 ) - 802a516: 2200 movs r2, #0 - 802a518: 665a str r2, [r3, #100] ; 0x64 + 802a554: 4b07 ldr r3, [pc, #28] ; (802a574 ) + 802a556: 2200 movs r2, #0 + 802a558: 665a str r2, [r3, #100] ; 0x64 hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8; - 802a51a: 4b06 ldr r3, [pc, #24] ; (802a534 ) - 802a51c: 2204 movs r2, #4 - 802a51e: 669a str r2, [r3, #104] ; 0x68 + 802a55a: 4b06 ldr r3, [pc, #24] ; (802a574 ) + 802a55c: 2204 movs r2, #4 + 802a55e: 669a str r2, [r3, #104] ; 0x68 if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) - 802a520: 4804 ldr r0, [pc, #16] ; (802a534 ) - 802a522: f008 f9f1 bl 8032908 - 802a526: 4603 mov r3, r0 - 802a528: 2b00 cmp r3, #0 - 802a52a: d001 beq.n 802a530 + 802a560: 4804 ldr r0, [pc, #16] ; (802a574 ) + 802a562: f008 f9f1 bl 8032948 + 802a566: 4603 mov r3, r0 + 802a568: 2b00 cmp r3, #0 + 802a56a: d001 beq.n 802a570 { Error_Handler(); - 802a52c: f000 fdc6 bl 802b0bc + 802a56c: f000 fdc6 bl 802b0fc } /* USER CODE BEGIN FDCAN1_Init 2 */ /* USER CODE END FDCAN1_Init 2 */ } - 802a530: bf00 nop - 802a532: bd80 pop {r7, pc} - 802a534: 2400af54 .word 0x2400af54 - 802a538: 4000a000 .word 0x4000a000 + 802a570: bf00 nop + 802a572: bd80 pop {r7, pc} + 802a574: 2400af54 .word 0x2400af54 + 802a578: 4000a000 .word 0x4000a000 -0802a53c : +0802a57c : /* FDCAN2 init function */ void MX_FDCAN2_Init(void) { - 802a53c: b580 push {r7, lr} - 802a53e: af00 add r7, sp, #0 + 802a57c: b580 push {r7, lr} + 802a57e: af00 add r7, sp, #0 /* USER CODE END FDCAN2_Init 0 */ /* USER CODE BEGIN FDCAN2_Init 1 */ /* USER CODE END FDCAN2_Init 1 */ hfdcan2.Instance = FDCAN2; - 802a540: 4b2e ldr r3, [pc, #184] ; (802a5fc ) - 802a542: 4a2f ldr r2, [pc, #188] ; (802a600 ) - 802a544: 601a str r2, [r3, #0] + 802a580: 4b2e ldr r3, [pc, #184] ; (802a63c ) + 802a582: 4a2f ldr r2, [pc, #188] ; (802a640 ) + 802a584: 601a str r2, [r3, #0] hfdcan2.Init.FrameFormat = FDCAN_FRAME_CLASSIC; - 802a546: 4b2d ldr r3, [pc, #180] ; (802a5fc ) - 802a548: 2200 movs r2, #0 - 802a54a: 609a str r2, [r3, #8] + 802a586: 4b2d ldr r3, [pc, #180] ; (802a63c ) + 802a588: 2200 movs r2, #0 + 802a58a: 609a str r2, [r3, #8] hfdcan2.Init.Mode = FDCAN_MODE_NORMAL; - 802a54c: 4b2b ldr r3, [pc, #172] ; (802a5fc ) - 802a54e: 2200 movs r2, #0 - 802a550: 60da str r2, [r3, #12] + 802a58c: 4b2b ldr r3, [pc, #172] ; (802a63c ) + 802a58e: 2200 movs r2, #0 + 802a590: 60da str r2, [r3, #12] hfdcan2.Init.AutoRetransmission = ENABLE; - 802a552: 4b2a ldr r3, [pc, #168] ; (802a5fc ) - 802a554: 2201 movs r2, #1 - 802a556: 741a strb r2, [r3, #16] + 802a592: 4b2a ldr r3, [pc, #168] ; (802a63c ) + 802a594: 2201 movs r2, #1 + 802a596: 741a strb r2, [r3, #16] hfdcan2.Init.TransmitPause = DISABLE; - 802a558: 4b28 ldr r3, [pc, #160] ; (802a5fc ) - 802a55a: 2200 movs r2, #0 - 802a55c: 745a strb r2, [r3, #17] + 802a598: 4b28 ldr r3, [pc, #160] ; (802a63c ) + 802a59a: 2200 movs r2, #0 + 802a59c: 745a strb r2, [r3, #17] hfdcan2.Init.ProtocolException = ENABLE; - 802a55e: 4b27 ldr r3, [pc, #156] ; (802a5fc ) - 802a560: 2201 movs r2, #1 - 802a562: 749a strb r2, [r3, #18] + 802a59e: 4b27 ldr r3, [pc, #156] ; (802a63c ) + 802a5a0: 2201 movs r2, #1 + 802a5a2: 749a strb r2, [r3, #18] hfdcan2.Init.NominalPrescaler = 20; - 802a564: 4b25 ldr r3, [pc, #148] ; (802a5fc ) - 802a566: 2214 movs r2, #20 - 802a568: 615a str r2, [r3, #20] + 802a5a4: 4b25 ldr r3, [pc, #148] ; (802a63c ) + 802a5a6: 2214 movs r2, #20 + 802a5a8: 615a str r2, [r3, #20] hfdcan2.Init.NominalSyncJumpWidth = 8; - 802a56a: 4b24 ldr r3, [pc, #144] ; (802a5fc ) - 802a56c: 2208 movs r2, #8 - 802a56e: 619a str r2, [r3, #24] + 802a5aa: 4b24 ldr r3, [pc, #144] ; (802a63c ) + 802a5ac: 2208 movs r2, #8 + 802a5ae: 619a str r2, [r3, #24] hfdcan2.Init.NominalTimeSeg1 = 5; - 802a570: 4b22 ldr r3, [pc, #136] ; (802a5fc ) - 802a572: 2205 movs r2, #5 - 802a574: 61da str r2, [r3, #28] + 802a5b0: 4b22 ldr r3, [pc, #136] ; (802a63c ) + 802a5b2: 2205 movs r2, #5 + 802a5b4: 61da str r2, [r3, #28] hfdcan2.Init.NominalTimeSeg2 = 2; - 802a576: 4b21 ldr r3, [pc, #132] ; (802a5fc ) - 802a578: 2202 movs r2, #2 - 802a57a: 621a str r2, [r3, #32] + 802a5b6: 4b21 ldr r3, [pc, #132] ; (802a63c ) + 802a5b8: 2202 movs r2, #2 + 802a5ba: 621a str r2, [r3, #32] hfdcan2.Init.DataPrescaler = 1; - 802a57c: 4b1f ldr r3, [pc, #124] ; (802a5fc ) - 802a57e: 2201 movs r2, #1 - 802a580: 625a str r2, [r3, #36] ; 0x24 + 802a5bc: 4b1f ldr r3, [pc, #124] ; (802a63c ) + 802a5be: 2201 movs r2, #1 + 802a5c0: 625a str r2, [r3, #36] ; 0x24 hfdcan2.Init.DataSyncJumpWidth = 1; - 802a582: 4b1e ldr r3, [pc, #120] ; (802a5fc ) - 802a584: 2201 movs r2, #1 - 802a586: 629a str r2, [r3, #40] ; 0x28 + 802a5c2: 4b1e ldr r3, [pc, #120] ; (802a63c ) + 802a5c4: 2201 movs r2, #1 + 802a5c6: 629a str r2, [r3, #40] ; 0x28 hfdcan2.Init.DataTimeSeg1 = 1; - 802a588: 4b1c ldr r3, [pc, #112] ; (802a5fc ) - 802a58a: 2201 movs r2, #1 - 802a58c: 62da str r2, [r3, #44] ; 0x2c + 802a5c8: 4b1c ldr r3, [pc, #112] ; (802a63c ) + 802a5ca: 2201 movs r2, #1 + 802a5cc: 62da str r2, [r3, #44] ; 0x2c hfdcan2.Init.DataTimeSeg2 = 1; - 802a58e: 4b1b ldr r3, [pc, #108] ; (802a5fc ) - 802a590: 2201 movs r2, #1 - 802a592: 631a str r2, [r3, #48] ; 0x30 + 802a5ce: 4b1b ldr r3, [pc, #108] ; (802a63c ) + 802a5d0: 2201 movs r2, #1 + 802a5d2: 631a str r2, [r3, #48] ; 0x30 hfdcan2.Init.MessageRAMOffset = 0; - 802a594: 4b19 ldr r3, [pc, #100] ; (802a5fc ) - 802a596: 2200 movs r2, #0 - 802a598: 635a str r2, [r3, #52] ; 0x34 + 802a5d4: 4b19 ldr r3, [pc, #100] ; (802a63c ) + 802a5d6: 2200 movs r2, #0 + 802a5d8: 635a str r2, [r3, #52] ; 0x34 hfdcan2.Init.StdFiltersNbr = 1; - 802a59a: 4b18 ldr r3, [pc, #96] ; (802a5fc ) - 802a59c: 2201 movs r2, #1 - 802a59e: 639a str r2, [r3, #56] ; 0x38 + 802a5da: 4b18 ldr r3, [pc, #96] ; (802a63c ) + 802a5dc: 2201 movs r2, #1 + 802a5de: 639a str r2, [r3, #56] ; 0x38 hfdcan2.Init.ExtFiltersNbr = 0; - 802a5a0: 4b16 ldr r3, [pc, #88] ; (802a5fc ) - 802a5a2: 2200 movs r2, #0 - 802a5a4: 63da str r2, [r3, #60] ; 0x3c + 802a5e0: 4b16 ldr r3, [pc, #88] ; (802a63c ) + 802a5e2: 2200 movs r2, #0 + 802a5e4: 63da str r2, [r3, #60] ; 0x3c hfdcan2.Init.RxFifo0ElmtsNbr = 1; - 802a5a6: 4b15 ldr r3, [pc, #84] ; (802a5fc ) - 802a5a8: 2201 movs r2, #1 - 802a5aa: 641a str r2, [r3, #64] ; 0x40 + 802a5e6: 4b15 ldr r3, [pc, #84] ; (802a63c ) + 802a5e8: 2201 movs r2, #1 + 802a5ea: 641a str r2, [r3, #64] ; 0x40 hfdcan2.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8; - 802a5ac: 4b13 ldr r3, [pc, #76] ; (802a5fc ) - 802a5ae: 2204 movs r2, #4 - 802a5b0: 645a str r2, [r3, #68] ; 0x44 + 802a5ec: 4b13 ldr r3, [pc, #76] ; (802a63c ) + 802a5ee: 2204 movs r2, #4 + 802a5f0: 645a str r2, [r3, #68] ; 0x44 hfdcan2.Init.RxFifo1ElmtsNbr = 0; - 802a5b2: 4b12 ldr r3, [pc, #72] ; (802a5fc ) - 802a5b4: 2200 movs r2, #0 - 802a5b6: 649a str r2, [r3, #72] ; 0x48 + 802a5f2: 4b12 ldr r3, [pc, #72] ; (802a63c ) + 802a5f4: 2200 movs r2, #0 + 802a5f6: 649a str r2, [r3, #72] ; 0x48 hfdcan2.Init.RxFifo1ElmtSize = FDCAN_DATA_BYTES_8; - 802a5b8: 4b10 ldr r3, [pc, #64] ; (802a5fc ) - 802a5ba: 2204 movs r2, #4 - 802a5bc: 64da str r2, [r3, #76] ; 0x4c + 802a5f8: 4b10 ldr r3, [pc, #64] ; (802a63c ) + 802a5fa: 2204 movs r2, #4 + 802a5fc: 64da str r2, [r3, #76] ; 0x4c hfdcan2.Init.RxBuffersNbr = 0; - 802a5be: 4b0f ldr r3, [pc, #60] ; (802a5fc ) - 802a5c0: 2200 movs r2, #0 - 802a5c2: 651a str r2, [r3, #80] ; 0x50 + 802a5fe: 4b0f ldr r3, [pc, #60] ; (802a63c ) + 802a600: 2200 movs r2, #0 + 802a602: 651a str r2, [r3, #80] ; 0x50 hfdcan2.Init.RxBufferSize = FDCAN_DATA_BYTES_8; - 802a5c4: 4b0d ldr r3, [pc, #52] ; (802a5fc ) - 802a5c6: 2204 movs r2, #4 - 802a5c8: 655a str r2, [r3, #84] ; 0x54 + 802a604: 4b0d ldr r3, [pc, #52] ; (802a63c ) + 802a606: 2204 movs r2, #4 + 802a608: 655a str r2, [r3, #84] ; 0x54 hfdcan2.Init.TxEventsNbr = 0; - 802a5ca: 4b0c ldr r3, [pc, #48] ; (802a5fc ) - 802a5cc: 2200 movs r2, #0 - 802a5ce: 659a str r2, [r3, #88] ; 0x58 + 802a60a: 4b0c ldr r3, [pc, #48] ; (802a63c ) + 802a60c: 2200 movs r2, #0 + 802a60e: 659a str r2, [r3, #88] ; 0x58 hfdcan2.Init.TxBuffersNbr = 0; - 802a5d0: 4b0a ldr r3, [pc, #40] ; (802a5fc ) - 802a5d2: 2200 movs r2, #0 - 802a5d4: 65da str r2, [r3, #92] ; 0x5c + 802a610: 4b0a ldr r3, [pc, #40] ; (802a63c ) + 802a612: 2200 movs r2, #0 + 802a614: 65da str r2, [r3, #92] ; 0x5c hfdcan2.Init.TxFifoQueueElmtsNbr = 1; - 802a5d6: 4b09 ldr r3, [pc, #36] ; (802a5fc ) - 802a5d8: 2201 movs r2, #1 - 802a5da: 661a str r2, [r3, #96] ; 0x60 + 802a616: 4b09 ldr r3, [pc, #36] ; (802a63c ) + 802a618: 2201 movs r2, #1 + 802a61a: 661a str r2, [r3, #96] ; 0x60 hfdcan2.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION; - 802a5dc: 4b07 ldr r3, [pc, #28] ; (802a5fc ) - 802a5de: 2200 movs r2, #0 - 802a5e0: 665a str r2, [r3, #100] ; 0x64 + 802a61c: 4b07 ldr r3, [pc, #28] ; (802a63c ) + 802a61e: 2200 movs r2, #0 + 802a620: 665a str r2, [r3, #100] ; 0x64 hfdcan2.Init.TxElmtSize = FDCAN_DATA_BYTES_8; - 802a5e2: 4b06 ldr r3, [pc, #24] ; (802a5fc ) - 802a5e4: 2204 movs r2, #4 - 802a5e6: 669a str r2, [r3, #104] ; 0x68 + 802a622: 4b06 ldr r3, [pc, #24] ; (802a63c ) + 802a624: 2204 movs r2, #4 + 802a626: 669a str r2, [r3, #104] ; 0x68 if (HAL_FDCAN_Init(&hfdcan2) != HAL_OK) - 802a5e8: 4804 ldr r0, [pc, #16] ; (802a5fc ) - 802a5ea: f008 f98d bl 8032908 - 802a5ee: 4603 mov r3, r0 - 802a5f0: 2b00 cmp r3, #0 - 802a5f2: d001 beq.n 802a5f8 + 802a628: 4804 ldr r0, [pc, #16] ; (802a63c ) + 802a62a: f008 f98d bl 8032948 + 802a62e: 4603 mov r3, r0 + 802a630: 2b00 cmp r3, #0 + 802a632: d001 beq.n 802a638 { Error_Handler(); - 802a5f4: f000 fd62 bl 802b0bc + 802a634: f000 fd62 bl 802b0fc } /* USER CODE BEGIN FDCAN2_Init 2 */ /* USER CODE END FDCAN2_Init 2 */ } - 802a5f8: bf00 nop - 802a5fa: bd80 pop {r7, pc} - 802a5fc: 2400aff4 .word 0x2400aff4 - 802a600: 4000a400 .word 0x4000a400 + 802a638: bf00 nop + 802a63a: bd80 pop {r7, pc} + 802a63c: 2400aff4 .word 0x2400aff4 + 802a640: 4000a400 .word 0x4000a400 -0802a604 : +0802a644 : static uint32_t HAL_RCC_FDCAN_CLK_ENABLED=0; void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle) { - 802a604: b580 push {r7, lr} - 802a606: b0ba sub sp, #232 ; 0xe8 - 802a608: af00 add r7, sp, #0 - 802a60a: 6078 str r0, [r7, #4] + 802a644: b580 push {r7, lr} + 802a646: b0ba sub sp, #232 ; 0xe8 + 802a648: af00 add r7, sp, #0 + 802a64a: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802a60c: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802a610: 2200 movs r2, #0 - 802a612: 601a str r2, [r3, #0] - 802a614: 605a str r2, [r3, #4] - 802a616: 609a str r2, [r3, #8] - 802a618: 60da str r2, [r3, #12] - 802a61a: 611a str r2, [r3, #16] + 802a64c: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802a650: 2200 movs r2, #0 + 802a652: 601a str r2, [r3, #0] + 802a654: 605a str r2, [r3, #4] + 802a656: 609a str r2, [r3, #8] + 802a658: 60da str r2, [r3, #12] + 802a65a: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 802a61c: f107 0318 add.w r3, r7, #24 - 802a620: 22bc movs r2, #188 ; 0xbc - 802a622: 2100 movs r1, #0 - 802a624: 4618 mov r0, r3 - 802a626: f01d fbd5 bl 8047dd4 + 802a65c: f107 0318 add.w r3, r7, #24 + 802a660: 22bc movs r2, #188 ; 0xbc + 802a662: 2100 movs r1, #0 + 802a664: 4618 mov r0, r3 + 802a666: f01d fbd5 bl 8047e14 if(fdcanHandle->Instance==FDCAN1) - 802a62a: 687b ldr r3, [r7, #4] - 802a62c: 681b ldr r3, [r3, #0] - 802a62e: 4a5c ldr r2, [pc, #368] ; (802a7a0 ) - 802a630: 4293 cmp r3, r2 - 802a632: d156 bne.n 802a6e2 + 802a66a: 687b ldr r3, [r7, #4] + 802a66c: 681b ldr r3, [r3, #0] + 802a66e: 4a5c ldr r2, [pc, #368] ; (802a7e0 ) + 802a670: 4293 cmp r3, r2 + 802a672: d156 bne.n 802a722 /* USER CODE END FDCAN1_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; - 802a634: f44f 4300 mov.w r3, #32768 ; 0x8000 - 802a638: 61bb str r3, [r7, #24] + 802a674: f44f 4300 mov.w r3, #32768 ; 0x8000 + 802a678: 61bb str r3, [r7, #24] PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; - 802a63a: f04f 5380 mov.w r3, #268435456 ; 0x10000000 - 802a63e: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 802a67a: f04f 5380 mov.w r3, #268435456 ; 0x10000000 + 802a67e: f8c7 3084 str.w r3, [r7, #132] ; 0x84 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802a642: f107 0318 add.w r3, r7, #24 - 802a646: 4618 mov r0, r3 - 802a648: f00b fe6a bl 8036320 - 802a64c: 4603 mov r3, r0 - 802a64e: 2b00 cmp r3, #0 - 802a650: d001 beq.n 802a656 + 802a682: f107 0318 add.w r3, r7, #24 + 802a686: 4618 mov r0, r3 + 802a688: f00b fe6a bl 8036360 + 802a68c: 4603 mov r3, r0 + 802a68e: 2b00 cmp r3, #0 + 802a690: d001 beq.n 802a696 { Error_Handler(); - 802a652: f000 fd33 bl 802b0bc + 802a692: f000 fd33 bl 802b0fc } /* FDCAN1 clock enable */ HAL_RCC_FDCAN_CLK_ENABLED++; - 802a656: 4b53 ldr r3, [pc, #332] ; (802a7a4 ) - 802a658: 681b ldr r3, [r3, #0] - 802a65a: 3301 adds r3, #1 - 802a65c: 4a51 ldr r2, [pc, #324] ; (802a7a4 ) - 802a65e: 6013 str r3, [r2, #0] + 802a696: 4b53 ldr r3, [pc, #332] ; (802a7e4 ) + 802a698: 681b ldr r3, [r3, #0] + 802a69a: 3301 adds r3, #1 + 802a69c: 4a51 ldr r2, [pc, #324] ; (802a7e4 ) + 802a69e: 6013 str r3, [r2, #0] if(HAL_RCC_FDCAN_CLK_ENABLED==1){ - 802a660: 4b50 ldr r3, [pc, #320] ; (802a7a4 ) - 802a662: 681b ldr r3, [r3, #0] - 802a664: 2b01 cmp r3, #1 - 802a666: d10e bne.n 802a686 + 802a6a0: 4b50 ldr r3, [pc, #320] ; (802a7e4 ) + 802a6a2: 681b ldr r3, [r3, #0] + 802a6a4: 2b01 cmp r3, #1 + 802a6a6: d10e bne.n 802a6c6 __HAL_RCC_FDCAN_CLK_ENABLE(); - 802a668: 4b4f ldr r3, [pc, #316] ; (802a7a8 ) - 802a66a: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec - 802a66e: 4a4e ldr r2, [pc, #312] ; (802a7a8 ) - 802a670: f443 7380 orr.w r3, r3, #256 ; 0x100 - 802a674: f8c2 30ec str.w r3, [r2, #236] ; 0xec - 802a678: 4b4b ldr r3, [pc, #300] ; (802a7a8 ) - 802a67a: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec - 802a67e: f403 7380 and.w r3, r3, #256 ; 0x100 - 802a682: 617b str r3, [r7, #20] - 802a684: 697b ldr r3, [r7, #20] + 802a6a8: 4b4f ldr r3, [pc, #316] ; (802a7e8 ) + 802a6aa: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec + 802a6ae: 4a4e ldr r2, [pc, #312] ; (802a7e8 ) + 802a6b0: f443 7380 orr.w r3, r3, #256 ; 0x100 + 802a6b4: f8c2 30ec str.w r3, [r2, #236] ; 0xec + 802a6b8: 4b4b ldr r3, [pc, #300] ; (802a7e8 ) + 802a6ba: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec + 802a6be: f403 7380 and.w r3, r3, #256 ; 0x100 + 802a6c2: 617b str r3, [r7, #20] + 802a6c4: 697b ldr r3, [r7, #20] } __HAL_RCC_GPIOB_CLK_ENABLE(); - 802a686: 4b48 ldr r3, [pc, #288] ; (802a7a8 ) - 802a688: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a68c: 4a46 ldr r2, [pc, #280] ; (802a7a8 ) - 802a68e: f043 0302 orr.w r3, r3, #2 - 802a692: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a696: 4b44 ldr r3, [pc, #272] ; (802a7a8 ) - 802a698: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a69c: f003 0302 and.w r3, r3, #2 - 802a6a0: 613b str r3, [r7, #16] - 802a6a2: 693b ldr r3, [r7, #16] + 802a6c6: 4b48 ldr r3, [pc, #288] ; (802a7e8 ) + 802a6c8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a6cc: 4a46 ldr r2, [pc, #280] ; (802a7e8 ) + 802a6ce: f043 0302 orr.w r3, r3, #2 + 802a6d2: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a6d6: 4b44 ldr r3, [pc, #272] ; (802a7e8 ) + 802a6d8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a6dc: f003 0302 and.w r3, r3, #2 + 802a6e0: 613b str r3, [r7, #16] + 802a6e2: 693b ldr r3, [r7, #16] /**FDCAN1 GPIO Configuration PB8 ------> FDCAN1_RX PB9 ------> FDCAN1_TX */ GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9; - 802a6a4: f44f 7340 mov.w r3, #768 ; 0x300 - 802a6a8: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802a6e4: f44f 7340 mov.w r3, #768 ; 0x300 + 802a6e8: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802a6ac: 2302 movs r3, #2 - 802a6ae: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802a6ec: 2302 movs r3, #2 + 802a6ee: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a6b2: 2300 movs r3, #0 - 802a6b4: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802a6f2: 2300 movs r3, #0 + 802a6f4: f8c7 30dc str.w r3, [r7, #220] ; 0xdc GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802a6b8: 2303 movs r3, #3 - 802a6ba: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802a6f8: 2303 movs r3, #3 + 802a6fa: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN1; - 802a6be: 2309 movs r3, #9 - 802a6c0: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802a6fe: 2309 movs r3, #9 + 802a700: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802a6c4: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802a6c8: 4619 mov r1, r3 - 802a6ca: 4838 ldr r0, [pc, #224] ; (802a7ac ) - 802a6cc: f009 f8ec bl 80338a8 + 802a704: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802a708: 4619 mov r1, r3 + 802a70a: 4838 ldr r0, [pc, #224] ; (802a7ec ) + 802a70c: f009 f8ec bl 80338e8 /* FDCAN1 interrupt Init */ HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn, 2, 0); - 802a6d0: 2200 movs r2, #0 - 802a6d2: 2102 movs r1, #2 - 802a6d4: 2013 movs r0, #19 - 802a6d6: f003 fd10 bl 802e0fa + 802a710: 2200 movs r2, #0 + 802a712: 2102 movs r1, #2 + 802a714: 2013 movs r0, #19 + 802a716: f003 fd10 bl 802e13a HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn); - 802a6da: 2013 movs r0, #19 - 802a6dc: f003 fd27 bl 802e12e + 802a71a: 2013 movs r0, #19 + 802a71c: f003 fd27 bl 802e16e HAL_NVIC_EnableIRQ(FDCAN2_IT0_IRQn); /* USER CODE BEGIN FDCAN2_MspInit 1 */ /* USER CODE END FDCAN2_MspInit 1 */ } } - 802a6e0: e059 b.n 802a796 + 802a720: e059 b.n 802a7d6 else if(fdcanHandle->Instance==FDCAN2) - 802a6e2: 687b ldr r3, [r7, #4] - 802a6e4: 681b ldr r3, [r3, #0] - 802a6e6: 4a32 ldr r2, [pc, #200] ; (802a7b0 ) - 802a6e8: 4293 cmp r3, r2 - 802a6ea: d154 bne.n 802a796 + 802a722: 687b ldr r3, [r7, #4] + 802a724: 681b ldr r3, [r3, #0] + 802a726: 4a32 ldr r2, [pc, #200] ; (802a7f0 ) + 802a728: 4293 cmp r3, r2 + 802a72a: d154 bne.n 802a7d6 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; - 802a6ec: f44f 4300 mov.w r3, #32768 ; 0x8000 - 802a6f0: 61bb str r3, [r7, #24] + 802a72c: f44f 4300 mov.w r3, #32768 ; 0x8000 + 802a730: 61bb str r3, [r7, #24] PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; - 802a6f2: f04f 5380 mov.w r3, #268435456 ; 0x10000000 - 802a6f6: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 802a732: f04f 5380 mov.w r3, #268435456 ; 0x10000000 + 802a736: f8c7 3084 str.w r3, [r7, #132] ; 0x84 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802a6fa: f107 0318 add.w r3, r7, #24 - 802a6fe: 4618 mov r0, r3 - 802a700: f00b fe0e bl 8036320 - 802a704: 4603 mov r3, r0 - 802a706: 2b00 cmp r3, #0 - 802a708: d001 beq.n 802a70e + 802a73a: f107 0318 add.w r3, r7, #24 + 802a73e: 4618 mov r0, r3 + 802a740: f00b fe0e bl 8036360 + 802a744: 4603 mov r3, r0 + 802a746: 2b00 cmp r3, #0 + 802a748: d001 beq.n 802a74e Error_Handler(); - 802a70a: f000 fcd7 bl 802b0bc + 802a74a: f000 fcd7 bl 802b0fc HAL_RCC_FDCAN_CLK_ENABLED++; - 802a70e: 4b25 ldr r3, [pc, #148] ; (802a7a4 ) - 802a710: 681b ldr r3, [r3, #0] - 802a712: 3301 adds r3, #1 - 802a714: 4a23 ldr r2, [pc, #140] ; (802a7a4 ) - 802a716: 6013 str r3, [r2, #0] + 802a74e: 4b25 ldr r3, [pc, #148] ; (802a7e4 ) + 802a750: 681b ldr r3, [r3, #0] + 802a752: 3301 adds r3, #1 + 802a754: 4a23 ldr r2, [pc, #140] ; (802a7e4 ) + 802a756: 6013 str r3, [r2, #0] if(HAL_RCC_FDCAN_CLK_ENABLED==1){ - 802a718: 4b22 ldr r3, [pc, #136] ; (802a7a4 ) - 802a71a: 681b ldr r3, [r3, #0] - 802a71c: 2b01 cmp r3, #1 - 802a71e: d10e bne.n 802a73e + 802a758: 4b22 ldr r3, [pc, #136] ; (802a7e4 ) + 802a75a: 681b ldr r3, [r3, #0] + 802a75c: 2b01 cmp r3, #1 + 802a75e: d10e bne.n 802a77e __HAL_RCC_FDCAN_CLK_ENABLE(); - 802a720: 4b21 ldr r3, [pc, #132] ; (802a7a8 ) - 802a722: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec - 802a726: 4a20 ldr r2, [pc, #128] ; (802a7a8 ) - 802a728: f443 7380 orr.w r3, r3, #256 ; 0x100 - 802a72c: f8c2 30ec str.w r3, [r2, #236] ; 0xec - 802a730: 4b1d ldr r3, [pc, #116] ; (802a7a8 ) - 802a732: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec - 802a736: f403 7380 and.w r3, r3, #256 ; 0x100 - 802a73a: 60fb str r3, [r7, #12] - 802a73c: 68fb ldr r3, [r7, #12] + 802a760: 4b21 ldr r3, [pc, #132] ; (802a7e8 ) + 802a762: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec + 802a766: 4a20 ldr r2, [pc, #128] ; (802a7e8 ) + 802a768: f443 7380 orr.w r3, r3, #256 ; 0x100 + 802a76c: f8c2 30ec str.w r3, [r2, #236] ; 0xec + 802a770: 4b1d ldr r3, [pc, #116] ; (802a7e8 ) + 802a772: f8d3 30ec ldr.w r3, [r3, #236] ; 0xec + 802a776: f403 7380 and.w r3, r3, #256 ; 0x100 + 802a77a: 60fb str r3, [r7, #12] + 802a77c: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOB_CLK_ENABLE(); - 802a73e: 4b1a ldr r3, [pc, #104] ; (802a7a8 ) - 802a740: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a744: 4a18 ldr r2, [pc, #96] ; (802a7a8 ) - 802a746: f043 0302 orr.w r3, r3, #2 - 802a74a: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a74e: 4b16 ldr r3, [pc, #88] ; (802a7a8 ) - 802a750: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a754: f003 0302 and.w r3, r3, #2 - 802a758: 60bb str r3, [r7, #8] - 802a75a: 68bb ldr r3, [r7, #8] + 802a77e: 4b1a ldr r3, [pc, #104] ; (802a7e8 ) + 802a780: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a784: 4a18 ldr r2, [pc, #96] ; (802a7e8 ) + 802a786: f043 0302 orr.w r3, r3, #2 + 802a78a: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a78e: 4b16 ldr r3, [pc, #88] ; (802a7e8 ) + 802a790: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a794: f003 0302 and.w r3, r3, #2 + 802a798: 60bb str r3, [r7, #8] + 802a79a: 68bb ldr r3, [r7, #8] GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6; - 802a75c: 2360 movs r3, #96 ; 0x60 - 802a75e: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802a79c: 2360 movs r3, #96 ; 0x60 + 802a79e: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802a762: 2302 movs r3, #2 - 802a764: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802a7a2: 2302 movs r3, #2 + 802a7a4: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a768: 2300 movs r3, #0 - 802a76a: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802a7a8: 2300 movs r3, #0 + 802a7aa: f8c7 30dc str.w r3, [r7, #220] ; 0xdc GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802a76e: 2303 movs r3, #3 - 802a770: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802a7ae: 2303 movs r3, #3 + 802a7b0: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 GPIO_InitStruct.Alternate = GPIO_AF9_FDCAN2; - 802a774: 2309 movs r3, #9 - 802a776: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802a7b4: 2309 movs r3, #9 + 802a7b6: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802a77a: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802a77e: 4619 mov r1, r3 - 802a780: 480a ldr r0, [pc, #40] ; (802a7ac ) - 802a782: f009 f891 bl 80338a8 + 802a7ba: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802a7be: 4619 mov r1, r3 + 802a7c0: 480a ldr r0, [pc, #40] ; (802a7ec ) + 802a7c2: f009 f891 bl 80338e8 HAL_NVIC_SetPriority(FDCAN2_IT0_IRQn, 2, 0); - 802a786: 2200 movs r2, #0 - 802a788: 2102 movs r1, #2 - 802a78a: 2014 movs r0, #20 - 802a78c: f003 fcb5 bl 802e0fa + 802a7c6: 2200 movs r2, #0 + 802a7c8: 2102 movs r1, #2 + 802a7ca: 2014 movs r0, #20 + 802a7cc: f003 fcb5 bl 802e13a HAL_NVIC_EnableIRQ(FDCAN2_IT0_IRQn); - 802a790: 2014 movs r0, #20 - 802a792: f003 fccc bl 802e12e -} - 802a796: bf00 nop - 802a798: 37e8 adds r7, #232 ; 0xe8 - 802a79a: 46bd mov sp, r7 - 802a79c: bd80 pop {r7, pc} - 802a79e: bf00 nop - 802a7a0: 4000a000 .word 0x4000a000 - 802a7a4: 2400b094 .word 0x2400b094 - 802a7a8: 58024400 .word 0x58024400 - 802a7ac: 58020400 .word 0x58020400 - 802a7b0: 4000a400 .word 0x4000a400 - -0802a7b4 : + 802a7d0: 2014 movs r0, #20 + 802a7d2: f003 fccc bl 802e16e +} + 802a7d6: bf00 nop + 802a7d8: 37e8 adds r7, #232 ; 0xe8 + 802a7da: 46bd mov sp, r7 + 802a7dc: bd80 pop {r7, pc} + 802a7de: bf00 nop + 802a7e0: 4000a000 .word 0x4000a000 + 802a7e4: 2400b094 .word 0x2400b094 + 802a7e8: 58024400 .word 0x58024400 + 802a7ec: 58020400 .word 0x58020400 + 802a7f0: 4000a400 .word 0x4000a400 + +0802a7f4 : PH1-OSC_OUT (PH1) ------> RCC_OSC_OUT PA13 (JTMS/SWDIO) ------> DEBUG_JTMS-SWDIO PA14 (JTCK/SWCLK) ------> DEBUG_JTCK-SWCLK */ void MX_GPIO_Init(void) { - 802a7b4: b580 push {r7, lr} - 802a7b6: b08c sub sp, #48 ; 0x30 - 802a7b8: af00 add r7, sp, #0 + 802a7f4: b580 push {r7, lr} + 802a7f6: b08c sub sp, #48 ; 0x30 + 802a7f8: af00 add r7, sp, #0 GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802a7ba: f107 031c add.w r3, r7, #28 - 802a7be: 2200 movs r2, #0 - 802a7c0: 601a str r2, [r3, #0] - 802a7c2: 605a str r2, [r3, #4] - 802a7c4: 609a str r2, [r3, #8] - 802a7c6: 60da str r2, [r3, #12] - 802a7c8: 611a str r2, [r3, #16] + 802a7fa: f107 031c add.w r3, r7, #28 + 802a7fe: 2200 movs r2, #0 + 802a800: 601a str r2, [r3, #0] + 802a802: 605a str r2, [r3, #4] + 802a804: 609a str r2, [r3, #8] + 802a806: 60da str r2, [r3, #12] + 802a808: 611a str r2, [r3, #16] /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOE_CLK_ENABLE(); - 802a7ca: 4b82 ldr r3, [pc, #520] ; (802a9d4 ) - 802a7cc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a7d0: 4a80 ldr r2, [pc, #512] ; (802a9d4 ) - 802a7d2: f043 0310 orr.w r3, r3, #16 - 802a7d6: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a7da: 4b7e ldr r3, [pc, #504] ; (802a9d4 ) - 802a7dc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a7e0: f003 0310 and.w r3, r3, #16 - 802a7e4: 61bb str r3, [r7, #24] - 802a7e6: 69bb ldr r3, [r7, #24] + 802a80a: 4b82 ldr r3, [pc, #520] ; (802aa14 ) + 802a80c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a810: 4a80 ldr r2, [pc, #512] ; (802aa14 ) + 802a812: f043 0310 orr.w r3, r3, #16 + 802a816: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a81a: 4b7e ldr r3, [pc, #504] ; (802aa14 ) + 802a81c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a820: f003 0310 and.w r3, r3, #16 + 802a824: 61bb str r3, [r7, #24] + 802a826: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOC_CLK_ENABLE(); - 802a7e8: 4b7a ldr r3, [pc, #488] ; (802a9d4 ) - 802a7ea: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a7ee: 4a79 ldr r2, [pc, #484] ; (802a9d4 ) - 802a7f0: f043 0304 orr.w r3, r3, #4 - 802a7f4: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a7f8: 4b76 ldr r3, [pc, #472] ; (802a9d4 ) - 802a7fa: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a7fe: f003 0304 and.w r3, r3, #4 - 802a802: 617b str r3, [r7, #20] - 802a804: 697b ldr r3, [r7, #20] + 802a828: 4b7a ldr r3, [pc, #488] ; (802aa14 ) + 802a82a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a82e: 4a79 ldr r2, [pc, #484] ; (802aa14 ) + 802a830: f043 0304 orr.w r3, r3, #4 + 802a834: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a838: 4b76 ldr r3, [pc, #472] ; (802aa14 ) + 802a83a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a83e: f003 0304 and.w r3, r3, #4 + 802a842: 617b str r3, [r7, #20] + 802a844: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOH_CLK_ENABLE(); - 802a806: 4b73 ldr r3, [pc, #460] ; (802a9d4 ) - 802a808: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a80c: 4a71 ldr r2, [pc, #452] ; (802a9d4 ) - 802a80e: f043 0380 orr.w r3, r3, #128 ; 0x80 - 802a812: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a816: 4b6f ldr r3, [pc, #444] ; (802a9d4 ) - 802a818: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a81c: f003 0380 and.w r3, r3, #128 ; 0x80 - 802a820: 613b str r3, [r7, #16] - 802a822: 693b ldr r3, [r7, #16] + 802a846: 4b73 ldr r3, [pc, #460] ; (802aa14 ) + 802a848: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a84c: 4a71 ldr r2, [pc, #452] ; (802aa14 ) + 802a84e: f043 0380 orr.w r3, r3, #128 ; 0x80 + 802a852: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a856: 4b6f ldr r3, [pc, #444] ; (802aa14 ) + 802a858: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a85c: f003 0380 and.w r3, r3, #128 ; 0x80 + 802a860: 613b str r3, [r7, #16] + 802a862: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOA_CLK_ENABLE(); - 802a824: 4b6b ldr r3, [pc, #428] ; (802a9d4 ) - 802a826: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a82a: 4a6a ldr r2, [pc, #424] ; (802a9d4 ) - 802a82c: f043 0301 orr.w r3, r3, #1 - 802a830: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a834: 4b67 ldr r3, [pc, #412] ; (802a9d4 ) - 802a836: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a83a: f003 0301 and.w r3, r3, #1 - 802a83e: 60fb str r3, [r7, #12] - 802a840: 68fb ldr r3, [r7, #12] + 802a864: 4b6b ldr r3, [pc, #428] ; (802aa14 ) + 802a866: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a86a: 4a6a ldr r2, [pc, #424] ; (802aa14 ) + 802a86c: f043 0301 orr.w r3, r3, #1 + 802a870: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a874: 4b67 ldr r3, [pc, #412] ; (802aa14 ) + 802a876: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a87a: f003 0301 and.w r3, r3, #1 + 802a87e: 60fb str r3, [r7, #12] + 802a880: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOB_CLK_ENABLE(); - 802a842: 4b64 ldr r3, [pc, #400] ; (802a9d4 ) - 802a844: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a848: 4a62 ldr r2, [pc, #392] ; (802a9d4 ) - 802a84a: f043 0302 orr.w r3, r3, #2 - 802a84e: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a852: 4b60 ldr r3, [pc, #384] ; (802a9d4 ) - 802a854: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a858: f003 0302 and.w r3, r3, #2 - 802a85c: 60bb str r3, [r7, #8] - 802a85e: 68bb ldr r3, [r7, #8] + 802a882: 4b64 ldr r3, [pc, #400] ; (802aa14 ) + 802a884: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a888: 4a62 ldr r2, [pc, #392] ; (802aa14 ) + 802a88a: f043 0302 orr.w r3, r3, #2 + 802a88e: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a892: 4b60 ldr r3, [pc, #384] ; (802aa14 ) + 802a894: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a898: f003 0302 and.w r3, r3, #2 + 802a89c: 60bb str r3, [r7, #8] + 802a89e: 68bb ldr r3, [r7, #8] __HAL_RCC_GPIOD_CLK_ENABLE(); - 802a860: 4b5c ldr r3, [pc, #368] ; (802a9d4 ) - 802a862: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a866: 4a5b ldr r2, [pc, #364] ; (802a9d4 ) - 802a868: f043 0308 orr.w r3, r3, #8 - 802a86c: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802a870: 4b58 ldr r3, [pc, #352] ; (802a9d4 ) - 802a872: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802a876: f003 0308 and.w r3, r3, #8 - 802a87a: 607b str r3, [r7, #4] - 802a87c: 687b ldr r3, [r7, #4] + 802a8a0: 4b5c ldr r3, [pc, #368] ; (802aa14 ) + 802a8a2: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a8a6: 4a5b ldr r2, [pc, #364] ; (802aa14 ) + 802a8a8: f043 0308 orr.w r3, r3, #8 + 802a8ac: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802a8b0: 4b58 ldr r3, [pc, #352] ; (802aa14 ) + 802a8b2: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802a8b6: f003 0308 and.w r3, r3, #8 + 802a8ba: 607b str r3, [r7, #4] + 802a8bc: 687b ldr r3, [r7, #4] /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOC, S0_RESET_Pin|OUT_0_Pin|OUT_1_Pin|RS485_3_DIR_Pin - 802a87e: 2200 movs r2, #0 - 802a880: f240 710d movw r1, #1805 ; 0x70d - 802a884: 4854 ldr r0, [pc, #336] ; (802a9d8 ) - 802a886: f009 f9bf bl 8033c08 + 802a8be: 2200 movs r2, #0 + 802a8c0: f240 710d movw r1, #1805 ; 0x70d + 802a8c4: 4854 ldr r0, [pc, #336] ; (802aa18 ) + 802a8c6: f009 f9bf bl 8033c48 |RS485_4_DIR_Pin|E22_RST_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, OUT_2_Pin|OUT_3_Pin|OUT_4_Pin|ETH_RST_Pin, GPIO_PIN_RESET); - 802a88a: 2200 movs r2, #0 - 802a88c: 2159 movs r1, #89 ; 0x59 - 802a88e: 4853 ldr r0, [pc, #332] ; (802a9dc ) - 802a890: f009 f9ba bl 8033c08 + 802a8ca: 2200 movs r2, #0 + 802a8cc: 2159 movs r1, #89 ; 0x59 + 802a8ce: 4853 ldr r0, [pc, #332] ; (802aa1c ) + 802a8d0: f009 f9ba bl 8033c48 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOE, EEPROM_WP_Pin|EEPROM_SCL_Pin|E22_M0_Pin, GPIO_PIN_RESET); - 802a894: 2200 movs r2, #0 - 802a896: f641 0101 movw r1, #6145 ; 0x1801 - 802a89a: 4851 ldr r0, [pc, #324] ; (802a9e0 ) - 802a89c: f009 f9b4 bl 8033c08 + 802a8d4: 2200 movs r2, #0 + 802a8d6: f641 0101 movw r1, #6145 ; 0x1801 + 802a8da: 4851 ldr r0, [pc, #324] ; (802aa20 ) + 802a8dc: f009 f9b4 bl 8033c48 /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, RS485_1_DIR_Pin|RS485_2_DIR_Pin|E28_M0_Pin|E28_M1_Pin - 802a8a0: 2200 movs r2, #0 - 802a8a2: f640 410b movw r1, #3083 ; 0xc0b - 802a8a6: 484f ldr r0, [pc, #316] ; (802a9e4 ) - 802a8a8: f009 f9ae bl 8033c08 + 802a8e0: 2200 movs r2, #0 + 802a8e2: f640 410b movw r1, #3083 ; 0xc0b + 802a8e6: 484f ldr r0, [pc, #316] ; (802aa24 ) + 802a8e8: f009 f9ae bl 8033c48 |E28_M2_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(E22_M1_GPIO_Port, E22_M1_Pin, GPIO_PIN_RESET); - 802a8ac: 2200 movs r2, #0 - 802a8ae: 2180 movs r1, #128 ; 0x80 - 802a8b0: 484d ldr r0, [pc, #308] ; (802a9e8 ) - 802a8b2: f009 f9a9 bl 8033c08 + 802a8ec: 2200 movs r2, #0 + 802a8ee: 2180 movs r1, #128 ; 0x80 + 802a8f0: 484d ldr r0, [pc, #308] ; (802aa28 ) + 802a8f2: f009 f9a9 bl 8033c48 /*Configure GPIO pins : PEPin PEPin PEPin PEPin PEPin PEPin */ GPIO_InitStruct.Pin = IN_0_Pin|IN_1_Pin|IN_2_Pin|IN_3_Pin - 802a8b6: f242 037c movw r3, #8316 ; 0x207c - 802a8ba: 61fb str r3, [r7, #28] + 802a8f6: f242 037c movw r3, #8316 ; 0x207c + 802a8fa: 61fb str r3, [r7, #28] |IN_4_Pin|EEPROM_SDA_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 802a8bc: 2300 movs r3, #0 - 802a8be: 623b str r3, [r7, #32] + 802a8fc: 2300 movs r3, #0 + 802a8fe: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a8c0: 2300 movs r3, #0 - 802a8c2: 627b str r3, [r7, #36] ; 0x24 + 802a900: 2300 movs r3, #0 + 802a902: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 802a8c4: f107 031c add.w r3, r7, #28 - 802a8c8: 4619 mov r1, r3 - 802a8ca: 4845 ldr r0, [pc, #276] ; (802a9e0 ) - 802a8cc: f008 ffec bl 80338a8 + 802a904: f107 031c add.w r3, r7, #28 + 802a908: 4619 mov r1, r3 + 802a90a: 4845 ldr r0, [pc, #276] ; (802aa20 ) + 802a90c: f008 ffec bl 80338e8 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = IN_5_Pin; - 802a8d0: f44f 5300 mov.w r3, #8192 ; 0x2000 - 802a8d4: 61fb str r3, [r7, #28] + 802a910: f44f 5300 mov.w r3, #8192 ; 0x2000 + 802a914: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 802a8d6: 2300 movs r3, #0 - 802a8d8: 623b str r3, [r7, #32] + 802a916: 2300 movs r3, #0 + 802a918: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a8da: 2300 movs r3, #0 - 802a8dc: 627b str r3, [r7, #36] ; 0x24 + 802a91a: 2300 movs r3, #0 + 802a91c: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(IN_5_GPIO_Port, &GPIO_InitStruct); - 802a8de: f107 031c add.w r3, r7, #28 - 802a8e2: 4619 mov r1, r3 - 802a8e4: 483c ldr r0, [pc, #240] ; (802a9d8 ) - 802a8e6: f008 ffdf bl 80338a8 + 802a91e: f107 031c add.w r3, r7, #28 + 802a922: 4619 mov r1, r3 + 802a924: 483c ldr r0, [pc, #240] ; (802aa18 ) + 802a926: f008 ffdf bl 80338e8 /*Configure GPIO pins : PCPin PCPin PCPin PCPin PCPin PCPin */ GPIO_InitStruct.Pin = S0_RESET_Pin|OUT_0_Pin|OUT_1_Pin|RS485_3_DIR_Pin - 802a8ea: f240 730d movw r3, #1805 ; 0x70d - 802a8ee: 61fb str r3, [r7, #28] + 802a92a: f240 730d movw r3, #1805 ; 0x70d + 802a92e: 61fb str r3, [r7, #28] |RS485_4_DIR_Pin|E22_RST_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 802a8f0: 2301 movs r3, #1 - 802a8f2: 623b str r3, [r7, #32] + 802a930: 2301 movs r3, #1 + 802a932: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a8f4: 2300 movs r3, #0 - 802a8f6: 627b str r3, [r7, #36] ; 0x24 + 802a934: 2300 movs r3, #0 + 802a936: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802a8f8: 2300 movs r3, #0 - 802a8fa: 62bb str r3, [r7, #40] ; 0x28 + 802a938: 2300 movs r3, #0 + 802a93a: 62bb str r3, [r7, #40] ; 0x28 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 802a8fc: f107 031c add.w r3, r7, #28 - 802a900: 4619 mov r1, r3 - 802a902: 4835 ldr r0, [pc, #212] ; (802a9d8 ) - 802a904: f008 ffd0 bl 80338a8 + 802a93c: f107 031c add.w r3, r7, #28 + 802a940: 4619 mov r1, r3 + 802a942: 4835 ldr r0, [pc, #212] ; (802aa18 ) + 802a944: f008 ffd0 bl 80338e8 /*Configure GPIO pins : PAPin PAPin PAPin PAPin */ GPIO_InitStruct.Pin = OUT_2_Pin|OUT_3_Pin|OUT_4_Pin|ETH_RST_Pin; - 802a908: 2359 movs r3, #89 ; 0x59 - 802a90a: 61fb str r3, [r7, #28] + 802a948: 2359 movs r3, #89 ; 0x59 + 802a94a: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 802a90c: 2301 movs r3, #1 - 802a90e: 623b str r3, [r7, #32] + 802a94c: 2301 movs r3, #1 + 802a94e: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a910: 2300 movs r3, #0 - 802a912: 627b str r3, [r7, #36] ; 0x24 + 802a950: 2300 movs r3, #0 + 802a952: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802a914: 2300 movs r3, #0 - 802a916: 62bb str r3, [r7, #40] ; 0x28 + 802a954: 2300 movs r3, #0 + 802a956: 62bb str r3, [r7, #40] ; 0x28 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802a918: f107 031c add.w r3, r7, #28 - 802a91c: 4619 mov r1, r3 - 802a91e: 482f ldr r0, [pc, #188] ; (802a9dc ) - 802a920: f008 ffc2 bl 80338a8 + 802a958: f107 031c add.w r3, r7, #28 + 802a95c: 4619 mov r1, r3 + 802a95e: 482f ldr r0, [pc, #188] ; (802aa1c ) + 802a960: f008 ffc2 bl 80338e8 /*Configure GPIO pins : PEPin PEPin PEPin */ GPIO_InitStruct.Pin = EEPROM_WP_Pin|EEPROM_SCL_Pin|E22_M0_Pin; - 802a924: f641 0301 movw r3, #6145 ; 0x1801 - 802a928: 61fb str r3, [r7, #28] + 802a964: f641 0301 movw r3, #6145 ; 0x1801 + 802a968: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 802a92a: 2301 movs r3, #1 - 802a92c: 623b str r3, [r7, #32] + 802a96a: 2301 movs r3, #1 + 802a96c: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a92e: 2300 movs r3, #0 - 802a930: 627b str r3, [r7, #36] ; 0x24 + 802a96e: 2300 movs r3, #0 + 802a970: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802a932: 2300 movs r3, #0 - 802a934: 62bb str r3, [r7, #40] ; 0x28 + 802a972: 2300 movs r3, #0 + 802a974: 62bb str r3, [r7, #40] ; 0x28 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 802a936: f107 031c add.w r3, r7, #28 - 802a93a: 4619 mov r1, r3 - 802a93c: 4828 ldr r0, [pc, #160] ; (802a9e0 ) - 802a93e: f008 ffb3 bl 80338a8 + 802a976: f107 031c add.w r3, r7, #28 + 802a97a: 4619 mov r1, r3 + 802a97c: 4828 ldr r0, [pc, #160] ; (802aa20 ) + 802a97e: f008 ffb3 bl 80338e8 /*Configure GPIO pins : PDPin PDPin PDPin PDPin PDPin */ GPIO_InitStruct.Pin = RS485_1_DIR_Pin|RS485_2_DIR_Pin|E28_M0_Pin|E28_M1_Pin - 802a942: f640 430b movw r3, #3083 ; 0xc0b - 802a946: 61fb str r3, [r7, #28] + 802a982: f640 430b movw r3, #3083 ; 0xc0b + 802a986: 61fb str r3, [r7, #28] |E28_M2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 802a948: 2301 movs r3, #1 - 802a94a: 623b str r3, [r7, #32] + 802a988: 2301 movs r3, #1 + 802a98a: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a94c: 2300 movs r3, #0 - 802a94e: 627b str r3, [r7, #36] ; 0x24 + 802a98c: 2300 movs r3, #0 + 802a98e: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802a950: 2300 movs r3, #0 - 802a952: 62bb str r3, [r7, #40] ; 0x28 + 802a990: 2300 movs r3, #0 + 802a992: 62bb str r3, [r7, #40] ; 0x28 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802a954: f107 031c add.w r3, r7, #28 - 802a958: 4619 mov r1, r3 - 802a95a: 4822 ldr r0, [pc, #136] ; (802a9e4 ) - 802a95c: f008 ffa4 bl 80338a8 + 802a994: f107 031c add.w r3, r7, #28 + 802a998: 4619 mov r1, r3 + 802a99a: 4822 ldr r0, [pc, #136] ; (802aa24 ) + 802a99c: f008 ffa4 bl 80338e8 /*Configure GPIO pins : PD14 PDPin */ GPIO_InitStruct.Pin = GPIO_PIN_14|E28_AUX_Pin; - 802a960: f244 0310 movw r3, #16400 ; 0x4010 - 802a964: 61fb str r3, [r7, #28] + 802a9a0: f244 0310 movw r3, #16400 ; 0x4010 + 802a9a4: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - 802a966: f44f 1388 mov.w r3, #1114112 ; 0x110000 - 802a96a: 623b str r3, [r7, #32] + 802a9a6: f44f 1388 mov.w r3, #1114112 ; 0x110000 + 802a9aa: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a96c: 2300 movs r3, #0 - 802a96e: 627b str r3, [r7, #36] ; 0x24 + 802a9ac: 2300 movs r3, #0 + 802a9ae: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802a970: f107 031c add.w r3, r7, #28 - 802a974: 4619 mov r1, r3 - 802a976: 481b ldr r0, [pc, #108] ; (802a9e4 ) - 802a978: f008 ff96 bl 80338a8 + 802a9b0: f107 031c add.w r3, r7, #28 + 802a9b4: 4619 mov r1, r3 + 802a9b6: 481b ldr r0, [pc, #108] ; (802aa24 ) + 802a9b8: f008 ff96 bl 80338e8 /*Configure GPIO pins : PBPin PBPin */ GPIO_InitStruct.Pin = S0_NET_Pin|S0_LINKA_Pin; - 802a97c: 2318 movs r3, #24 - 802a97e: 61fb str r3, [r7, #28] + 802a9bc: 2318 movs r3, #24 + 802a9be: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - 802a980: 2300 movs r3, #0 - 802a982: 623b str r3, [r7, #32] + 802a9c0: 2300 movs r3, #0 + 802a9c2: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a984: 2300 movs r3, #0 - 802a986: 627b str r3, [r7, #36] ; 0x24 + 802a9c4: 2300 movs r3, #0 + 802a9c6: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802a988: f107 031c add.w r3, r7, #28 - 802a98c: 4619 mov r1, r3 - 802a98e: 4816 ldr r0, [pc, #88] ; (802a9e8 ) - 802a990: f008 ff8a bl 80338a8 + 802a9c8: f107 031c add.w r3, r7, #28 + 802a9cc: 4619 mov r1, r3 + 802a9ce: 4816 ldr r0, [pc, #88] ; (802aa28 ) + 802a9d0: f008 ff8a bl 80338e8 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = E22_M1_Pin; - 802a994: 2380 movs r3, #128 ; 0x80 - 802a996: 61fb str r3, [r7, #28] + 802a9d4: 2380 movs r3, #128 ; 0x80 + 802a9d6: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - 802a998: 2301 movs r3, #1 - 802a99a: 623b str r3, [r7, #32] + 802a9d8: 2301 movs r3, #1 + 802a9da: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a99c: 2300 movs r3, #0 - 802a99e: 627b str r3, [r7, #36] ; 0x24 + 802a9dc: 2300 movs r3, #0 + 802a9de: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802a9a0: 2300 movs r3, #0 - 802a9a2: 62bb str r3, [r7, #40] ; 0x28 + 802a9e0: 2300 movs r3, #0 + 802a9e2: 62bb str r3, [r7, #40] ; 0x28 HAL_GPIO_Init(E22_M1_GPIO_Port, &GPIO_InitStruct); - 802a9a4: f107 031c add.w r3, r7, #28 - 802a9a8: 4619 mov r1, r3 - 802a9aa: 480f ldr r0, [pc, #60] ; (802a9e8 ) - 802a9ac: f008 ff7c bl 80338a8 + 802a9e4: f107 031c add.w r3, r7, #28 + 802a9e8: 4619 mov r1, r3 + 802a9ea: 480f ldr r0, [pc, #60] ; (802aa28 ) + 802a9ec: f008 ff7c bl 80338e8 /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = E22_AUX_Pin; - 802a9b0: 2302 movs r3, #2 - 802a9b2: 61fb str r3, [r7, #28] + 802a9f0: 2302 movs r3, #2 + 802a9f2: 61fb str r3, [r7, #28] GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - 802a9b4: f44f 1388 mov.w r3, #1114112 ; 0x110000 - 802a9b8: 623b str r3, [r7, #32] + 802a9f4: f44f 1388 mov.w r3, #1114112 ; 0x110000 + 802a9f8: 623b str r3, [r7, #32] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802a9ba: 2300 movs r3, #0 - 802a9bc: 627b str r3, [r7, #36] ; 0x24 + 802a9fa: 2300 movs r3, #0 + 802a9fc: 627b str r3, [r7, #36] ; 0x24 HAL_GPIO_Init(E22_AUX_GPIO_Port, &GPIO_InitStruct); - 802a9be: f107 031c add.w r3, r7, #28 - 802a9c2: 4619 mov r1, r3 - 802a9c4: 4806 ldr r0, [pc, #24] ; (802a9e0 ) - 802a9c6: f008 ff6f bl 80338a8 - -} - 802a9ca: bf00 nop - 802a9cc: 3730 adds r7, #48 ; 0x30 - 802a9ce: 46bd mov sp, r7 - 802a9d0: bd80 pop {r7, pc} - 802a9d2: bf00 nop - 802a9d4: 58024400 .word 0x58024400 - 802a9d8: 58020800 .word 0x58020800 - 802a9dc: 58020000 .word 0x58020000 - 802a9e0: 58021000 .word 0x58021000 - 802a9e4: 58020c00 .word 0x58020c00 - 802a9e8: 58020400 .word 0x58020400 - -0802a9ec : + 802a9fe: f107 031c add.w r3, r7, #28 + 802aa02: 4619 mov r1, r3 + 802aa04: 4806 ldr r0, [pc, #24] ; (802aa20 ) + 802aa06: f008 ff6f bl 80338e8 + +} + 802aa0a: bf00 nop + 802aa0c: 3730 adds r7, #48 ; 0x30 + 802aa0e: 46bd mov sp, r7 + 802aa10: bd80 pop {r7, pc} + 802aa12: bf00 nop + 802aa14: 58024400 .word 0x58024400 + 802aa18: 58020800 .word 0x58020800 + 802aa1c: 58020000 .word 0x58020000 + 802aa20: 58021000 .word 0x58021000 + 802aa24: 58020c00 .word 0x58020c00 + 802aa28: 58020400 .word 0x58020400 + +0802aa2c : I2C_HandleTypeDef hi2c4; /* I2C4 init function */ void MX_I2C4_Init(void) { - 802a9ec: b580 push {r7, lr} - 802a9ee: af00 add r7, sp, #0 + 802aa2c: b580 push {r7, lr} + 802aa2e: af00 add r7, sp, #0 /* USER CODE END I2C4_Init 0 */ /* USER CODE BEGIN I2C4_Init 1 */ /* USER CODE END I2C4_Init 1 */ hi2c4.Instance = I2C4; - 802a9f0: 4b1b ldr r3, [pc, #108] ; (802aa60 ) - 802a9f2: 4a1c ldr r2, [pc, #112] ; (802aa64 ) - 802a9f4: 601a str r2, [r3, #0] + 802aa30: 4b1b ldr r3, [pc, #108] ; (802aaa0 ) + 802aa32: 4a1c ldr r2, [pc, #112] ; (802aaa4 ) + 802aa34: 601a str r2, [r3, #0] hi2c4.Init.Timing = 0x10C0ECFF; - 802a9f6: 4b1a ldr r3, [pc, #104] ; (802aa60 ) - 802a9f8: 4a1b ldr r2, [pc, #108] ; (802aa68 ) - 802a9fa: 605a str r2, [r3, #4] + 802aa36: 4b1a ldr r3, [pc, #104] ; (802aaa0 ) + 802aa38: 4a1b ldr r2, [pc, #108] ; (802aaa8 ) + 802aa3a: 605a str r2, [r3, #4] hi2c4.Init.OwnAddress1 = 0; - 802a9fc: 4b18 ldr r3, [pc, #96] ; (802aa60 ) - 802a9fe: 2200 movs r2, #0 - 802aa00: 609a str r2, [r3, #8] + 802aa3c: 4b18 ldr r3, [pc, #96] ; (802aaa0 ) + 802aa3e: 2200 movs r2, #0 + 802aa40: 609a str r2, [r3, #8] hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - 802aa02: 4b17 ldr r3, [pc, #92] ; (802aa60 ) - 802aa04: 2201 movs r2, #1 - 802aa06: 60da str r2, [r3, #12] + 802aa42: 4b17 ldr r3, [pc, #92] ; (802aaa0 ) + 802aa44: 2201 movs r2, #1 + 802aa46: 60da str r2, [r3, #12] hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - 802aa08: 4b15 ldr r3, [pc, #84] ; (802aa60 ) - 802aa0a: 2200 movs r2, #0 - 802aa0c: 611a str r2, [r3, #16] + 802aa48: 4b15 ldr r3, [pc, #84] ; (802aaa0 ) + 802aa4a: 2200 movs r2, #0 + 802aa4c: 611a str r2, [r3, #16] hi2c4.Init.OwnAddress2 = 0; - 802aa0e: 4b14 ldr r3, [pc, #80] ; (802aa60 ) - 802aa10: 2200 movs r2, #0 - 802aa12: 615a str r2, [r3, #20] + 802aa4e: 4b14 ldr r3, [pc, #80] ; (802aaa0 ) + 802aa50: 2200 movs r2, #0 + 802aa52: 615a str r2, [r3, #20] hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - 802aa14: 4b12 ldr r3, [pc, #72] ; (802aa60 ) - 802aa16: 2200 movs r2, #0 - 802aa18: 619a str r2, [r3, #24] + 802aa54: 4b12 ldr r3, [pc, #72] ; (802aaa0 ) + 802aa56: 2200 movs r2, #0 + 802aa58: 619a str r2, [r3, #24] hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - 802aa1a: 4b11 ldr r3, [pc, #68] ; (802aa60 ) - 802aa1c: 2200 movs r2, #0 - 802aa1e: 61da str r2, [r3, #28] + 802aa5a: 4b11 ldr r3, [pc, #68] ; (802aaa0 ) + 802aa5c: 2200 movs r2, #0 + 802aa5e: 61da str r2, [r3, #28] hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - 802aa20: 4b0f ldr r3, [pc, #60] ; (802aa60 ) - 802aa22: 2200 movs r2, #0 - 802aa24: 621a str r2, [r3, #32] + 802aa60: 4b0f ldr r3, [pc, #60] ; (802aaa0 ) + 802aa62: 2200 movs r2, #0 + 802aa64: 621a str r2, [r3, #32] if (HAL_I2C_Init(&hi2c4) != HAL_OK) - 802aa26: 480e ldr r0, [pc, #56] ; (802aa60 ) - 802aa28: f009 f908 bl 8033c3c - 802aa2c: 4603 mov r3, r0 - 802aa2e: 2b00 cmp r3, #0 - 802aa30: d001 beq.n 802aa36 + 802aa66: 480e ldr r0, [pc, #56] ; (802aaa0 ) + 802aa68: f009 f908 bl 8033c7c + 802aa6c: 4603 mov r3, r0 + 802aa6e: 2b00 cmp r3, #0 + 802aa70: d001 beq.n 802aa76 { Error_Handler(); - 802aa32: f000 fb43 bl 802b0bc + 802aa72: f000 fb43 bl 802b0fc } /** Configure Analogue filter */ if (HAL_I2CEx_ConfigAnalogFilter(&hi2c4, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - 802aa36: 2100 movs r1, #0 - 802aa38: 4809 ldr r0, [pc, #36] ; (802aa60 ) - 802aa3a: f00a f814 bl 8034a66 - 802aa3e: 4603 mov r3, r0 - 802aa40: 2b00 cmp r3, #0 - 802aa42: d001 beq.n 802aa48 + 802aa76: 2100 movs r1, #0 + 802aa78: 4809 ldr r0, [pc, #36] ; (802aaa0 ) + 802aa7a: f00a f814 bl 8034aa6 + 802aa7e: 4603 mov r3, r0 + 802aa80: 2b00 cmp r3, #0 + 802aa82: d001 beq.n 802aa88 { Error_Handler(); - 802aa44: f000 fb3a bl 802b0bc + 802aa84: f000 fb3a bl 802b0fc } /** Configure Digital filter */ if (HAL_I2CEx_ConfigDigitalFilter(&hi2c4, 0) != HAL_OK) - 802aa48: 2100 movs r1, #0 - 802aa4a: 4805 ldr r0, [pc, #20] ; (802aa60 ) - 802aa4c: f00a f856 bl 8034afc - 802aa50: 4603 mov r3, r0 - 802aa52: 2b00 cmp r3, #0 - 802aa54: d001 beq.n 802aa5a + 802aa88: 2100 movs r1, #0 + 802aa8a: 4805 ldr r0, [pc, #20] ; (802aaa0 ) + 802aa8c: f00a f856 bl 8034b3c + 802aa90: 4603 mov r3, r0 + 802aa92: 2b00 cmp r3, #0 + 802aa94: d001 beq.n 802aa9a { Error_Handler(); - 802aa56: f000 fb31 bl 802b0bc + 802aa96: f000 fb31 bl 802b0fc } /* USER CODE BEGIN I2C4_Init 2 */ /* USER CODE END I2C4_Init 2 */ } - 802aa5a: bf00 nop - 802aa5c: bd80 pop {r7, pc} - 802aa5e: bf00 nop - 802aa60: 2400b098 .word 0x2400b098 - 802aa64: 58001c00 .word 0x58001c00 - 802aa68: 10c0ecff .word 0x10c0ecff + 802aa9a: bf00 nop + 802aa9c: bd80 pop {r7, pc} + 802aa9e: bf00 nop + 802aaa0: 2400b098 .word 0x2400b098 + 802aaa4: 58001c00 .word 0x58001c00 + 802aaa8: 10c0ecff .word 0x10c0ecff -0802aa6c : +0802aaac : void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle) { - 802aa6c: b580 push {r7, lr} - 802aa6e: b0b8 sub sp, #224 ; 0xe0 - 802aa70: af00 add r7, sp, #0 - 802aa72: 6078 str r0, [r7, #4] + 802aaac: b580 push {r7, lr} + 802aaae: b0b8 sub sp, #224 ; 0xe0 + 802aab0: af00 add r7, sp, #0 + 802aab2: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802aa74: f107 03cc add.w r3, r7, #204 ; 0xcc - 802aa78: 2200 movs r2, #0 - 802aa7a: 601a str r2, [r3, #0] - 802aa7c: 605a str r2, [r3, #4] - 802aa7e: 609a str r2, [r3, #8] - 802aa80: 60da str r2, [r3, #12] - 802aa82: 611a str r2, [r3, #16] + 802aab4: f107 03cc add.w r3, r7, #204 ; 0xcc + 802aab8: 2200 movs r2, #0 + 802aaba: 601a str r2, [r3, #0] + 802aabc: 605a str r2, [r3, #4] + 802aabe: 609a str r2, [r3, #8] + 802aac0: 60da str r2, [r3, #12] + 802aac2: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 802aa84: f107 0310 add.w r3, r7, #16 - 802aa88: 22bc movs r2, #188 ; 0xbc - 802aa8a: 2100 movs r1, #0 - 802aa8c: 4618 mov r0, r3 - 802aa8e: f01d f9a1 bl 8047dd4 + 802aac4: f107 0310 add.w r3, r7, #16 + 802aac8: 22bc movs r2, #188 ; 0xbc + 802aaca: 2100 movs r1, #0 + 802aacc: 4618 mov r0, r3 + 802aace: f01d f9a1 bl 8047e14 if(i2cHandle->Instance==I2C4) - 802aa92: 687b ldr r3, [r7, #4] - 802aa94: 681b ldr r3, [r3, #0] - 802aa96: 4a2d ldr r2, [pc, #180] ; (802ab4c ) - 802aa98: 4293 cmp r3, r2 - 802aa9a: d152 bne.n 802ab42 + 802aad2: 687b ldr r3, [r7, #4] + 802aad4: 681b ldr r3, [r3, #0] + 802aad6: 4a2d ldr r2, [pc, #180] ; (802ab8c ) + 802aad8: 4293 cmp r3, r2 + 802aada: d152 bne.n 802ab82 /* USER CODE END I2C4_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2C4; - 802aa9c: 2310 movs r3, #16 - 802aa9e: 613b str r3, [r7, #16] + 802aadc: 2310 movs r3, #16 + 802aade: 613b str r3, [r7, #16] PeriphClkInitStruct.I2c4ClockSelection = RCC_I2C4CLKSOURCE_D3PCLK1; - 802aaa0: 2300 movs r3, #0 - 802aaa2: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 + 802aae0: 2300 movs r3, #0 + 802aae2: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802aaa6: f107 0310 add.w r3, r7, #16 - 802aaaa: 4618 mov r0, r3 - 802aaac: f00b fc38 bl 8036320 - 802aab0: 4603 mov r3, r0 - 802aab2: 2b00 cmp r3, #0 - 802aab4: d001 beq.n 802aaba + 802aae6: f107 0310 add.w r3, r7, #16 + 802aaea: 4618 mov r0, r3 + 802aaec: f00b fc38 bl 8036360 + 802aaf0: 4603 mov r3, r0 + 802aaf2: 2b00 cmp r3, #0 + 802aaf4: d001 beq.n 802aafa { Error_Handler(); - 802aab6: f000 fb01 bl 802b0bc + 802aaf6: f000 fb01 bl 802b0fc } __HAL_RCC_GPIOD_CLK_ENABLE(); - 802aaba: 4b25 ldr r3, [pc, #148] ; (802ab50 ) - 802aabc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802aac0: 4a23 ldr r2, [pc, #140] ; (802ab50 ) - 802aac2: f043 0308 orr.w r3, r3, #8 - 802aac6: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802aaca: 4b21 ldr r3, [pc, #132] ; (802ab50 ) - 802aacc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802aad0: f003 0308 and.w r3, r3, #8 - 802aad4: 60fb str r3, [r7, #12] - 802aad6: 68fb ldr r3, [r7, #12] + 802aafa: 4b25 ldr r3, [pc, #148] ; (802ab90 ) + 802aafc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802ab00: 4a23 ldr r2, [pc, #140] ; (802ab90 ) + 802ab02: f043 0308 orr.w r3, r3, #8 + 802ab06: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802ab0a: 4b21 ldr r3, [pc, #132] ; (802ab90 ) + 802ab0c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802ab10: f003 0308 and.w r3, r3, #8 + 802ab14: 60fb str r3, [r7, #12] + 802ab16: 68fb ldr r3, [r7, #12] /**I2C4 GPIO Configuration PD12 ------> I2C4_SCL PD13 ------> I2C4_SDA */ GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13; - 802aad8: f44f 5340 mov.w r3, #12288 ; 0x3000 - 802aadc: f8c7 30cc str.w r3, [r7, #204] ; 0xcc + 802ab18: f44f 5340 mov.w r3, #12288 ; 0x3000 + 802ab1c: f8c7 30cc str.w r3, [r7, #204] ; 0xcc GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; - 802aae0: 2312 movs r3, #18 - 802aae2: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 + 802ab20: 2312 movs r3, #18 + 802ab22: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802aae6: 2300 movs r3, #0 - 802aae8: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802ab26: 2300 movs r3, #0 + 802ab28: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802aaec: 2300 movs r3, #0 - 802aaee: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802ab2c: 2300 movs r3, #0 + 802ab2e: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Alternate = GPIO_AF4_I2C4; - 802aaf2: 2304 movs r3, #4 - 802aaf4: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802ab32: 2304 movs r3, #4 + 802ab34: f8c7 30dc str.w r3, [r7, #220] ; 0xdc HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802aaf8: f107 03cc add.w r3, r7, #204 ; 0xcc - 802aafc: 4619 mov r1, r3 - 802aafe: 4815 ldr r0, [pc, #84] ; (802ab54 ) - 802ab00: f008 fed2 bl 80338a8 + 802ab38: f107 03cc add.w r3, r7, #204 ; 0xcc + 802ab3c: 4619 mov r1, r3 + 802ab3e: 4815 ldr r0, [pc, #84] ; (802ab94 ) + 802ab40: f008 fed2 bl 80338e8 /* I2C4 clock enable */ __HAL_RCC_I2C4_CLK_ENABLE(); - 802ab04: 4b12 ldr r3, [pc, #72] ; (802ab50 ) - 802ab06: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802ab0a: 4a11 ldr r2, [pc, #68] ; (802ab50 ) - 802ab0c: f043 0380 orr.w r3, r3, #128 ; 0x80 - 802ab10: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 - 802ab14: 4b0e ldr r3, [pc, #56] ; (802ab50 ) - 802ab16: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802ab1a: f003 0380 and.w r3, r3, #128 ; 0x80 - 802ab1e: 60bb str r3, [r7, #8] - 802ab20: 68bb ldr r3, [r7, #8] + 802ab44: 4b12 ldr r3, [pc, #72] ; (802ab90 ) + 802ab46: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802ab4a: 4a11 ldr r2, [pc, #68] ; (802ab90 ) + 802ab4c: f043 0380 orr.w r3, r3, #128 ; 0x80 + 802ab50: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 + 802ab54: 4b0e ldr r3, [pc, #56] ; (802ab90 ) + 802ab56: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802ab5a: f003 0380 and.w r3, r3, #128 ; 0x80 + 802ab5e: 60bb str r3, [r7, #8] + 802ab60: 68bb ldr r3, [r7, #8] /* I2C4 interrupt Init */ HAL_NVIC_SetPriority(I2C4_EV_IRQn, 15, 0); - 802ab22: 2200 movs r2, #0 - 802ab24: 210f movs r1, #15 - 802ab26: 205f movs r0, #95 ; 0x5f - 802ab28: f003 fae7 bl 802e0fa + 802ab62: 2200 movs r2, #0 + 802ab64: 210f movs r1, #15 + 802ab66: 205f movs r0, #95 ; 0x5f + 802ab68: f003 fae7 bl 802e13a HAL_NVIC_EnableIRQ(I2C4_EV_IRQn); - 802ab2c: 205f movs r0, #95 ; 0x5f - 802ab2e: f003 fafe bl 802e12e + 802ab6c: 205f movs r0, #95 ; 0x5f + 802ab6e: f003 fafe bl 802e16e HAL_NVIC_SetPriority(I2C4_ER_IRQn, 15, 0); - 802ab32: 2200 movs r2, #0 - 802ab34: 210f movs r1, #15 - 802ab36: 2060 movs r0, #96 ; 0x60 - 802ab38: f003 fadf bl 802e0fa + 802ab72: 2200 movs r2, #0 + 802ab74: 210f movs r1, #15 + 802ab76: 2060 movs r0, #96 ; 0x60 + 802ab78: f003 fadf bl 802e13a HAL_NVIC_EnableIRQ(I2C4_ER_IRQn); - 802ab3c: 2060 movs r0, #96 ; 0x60 - 802ab3e: f003 faf6 bl 802e12e + 802ab7c: 2060 movs r0, #96 ; 0x60 + 802ab7e: f003 faf6 bl 802e16e /* USER CODE BEGIN I2C4_MspInit 1 */ /* USER CODE END I2C4_MspInit 1 */ } } - 802ab42: bf00 nop - 802ab44: 37e0 adds r7, #224 ; 0xe0 - 802ab46: 46bd mov sp, r7 - 802ab48: bd80 pop {r7, pc} - 802ab4a: bf00 nop - 802ab4c: 58001c00 .word 0x58001c00 - 802ab50: 58024400 .word 0x58024400 - 802ab54: 58020c00 .word 0x58020c00 + 802ab82: bf00 nop + 802ab84: 37e0 adds r7, #224 ; 0xe0 + 802ab86: 46bd mov sp, r7 + 802ab88: bd80 pop {r7, pc} + 802ab8a: bf00 nop + 802ab8c: 58001c00 .word 0x58001c00 + 802ab90: 58024400 .word 0x58024400 + 802ab94: 58020c00 .word 0x58020c00 -0802ab58
: +0802ab98
: /** * @brief The application entry point. * @retval int */ int main(void) { - 802ab58: b590 push {r4, r7, lr} - 802ab5a: b0ed sub sp, #436 ; 0x1b4 - 802ab5c: af32 add r7, sp, #200 ; 0xc8 + 802ab98: b590 push {r4, r7, lr} + 802ab9a: b0ed sub sp, #436 ; 0x1b4 + 802ab9c: af32 add r7, sp, #200 ; 0xc8 // the baud rate // 485Motor 115200 // TL720D 115200 /* USER CODE END 1 */ /* MPU Configuration--------------------------------------------------------*/ MPU_Config(); - 802ab5e: f000 fa5f bl 802b020 + 802ab9e: f000 fa5f bl 802b060 if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ - 802ab62: 4b61 ldr r3, [pc, #388] ; (802ace8 ) - 802ab64: 695b ldr r3, [r3, #20] - 802ab66: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 802ab6a: 2b00 cmp r3, #0 - 802ab6c: d11b bne.n 802aba6 + 802aba2: 4b61 ldr r3, [pc, #388] ; (802ad28 ) + 802aba4: 695b ldr r3, [r3, #20] + 802aba6: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 802abaa: 2b00 cmp r3, #0 + 802abac: d11b bne.n 802abe6 __ASM volatile ("dsb 0xF":::"memory"); - 802ab6e: f3bf 8f4f dsb sy + 802abae: f3bf 8f4f dsb sy } - 802ab72: bf00 nop + 802abb2: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 802ab74: f3bf 8f6f isb sy + 802abb4: f3bf 8f6f isb sy } - 802ab78: bf00 nop + 802abb8: bf00 nop SCB->ICIALLU = 0UL; /* invalidate I-Cache */ - 802ab7a: 4b5b ldr r3, [pc, #364] ; (802ace8 ) - 802ab7c: 2200 movs r2, #0 - 802ab7e: f8c3 2250 str.w r2, [r3, #592] ; 0x250 + 802abba: 4b5b ldr r3, [pc, #364] ; (802ad28 ) + 802abbc: 2200 movs r2, #0 + 802abbe: f8c3 2250 str.w r2, [r3, #592] ; 0x250 __ASM volatile ("dsb 0xF":::"memory"); - 802ab82: f3bf 8f4f dsb sy + 802abc2: f3bf 8f4f dsb sy } - 802ab86: bf00 nop + 802abc6: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 802ab88: f3bf 8f6f isb sy + 802abc8: f3bf 8f6f isb sy } - 802ab8c: bf00 nop + 802abcc: bf00 nop SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ - 802ab8e: 4b56 ldr r3, [pc, #344] ; (802ace8 ) - 802ab90: 695b ldr r3, [r3, #20] - 802ab92: 4a55 ldr r2, [pc, #340] ; (802ace8 ) - 802ab94: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 802ab98: 6153 str r3, [r2, #20] + 802abce: 4b56 ldr r3, [pc, #344] ; (802ad28 ) + 802abd0: 695b ldr r3, [r3, #20] + 802abd2: 4a55 ldr r2, [pc, #340] ; (802ad28 ) + 802abd4: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 802abd8: 6153 str r3, [r2, #20] __ASM volatile ("dsb 0xF":::"memory"); - 802ab9a: f3bf 8f4f dsb sy + 802abda: f3bf 8f4f dsb sy } - 802ab9e: bf00 nop + 802abde: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 802aba0: f3bf 8f6f isb sy + 802abe0: f3bf 8f6f isb sy } - 802aba4: e000 b.n 802aba8 + 802abe4: e000 b.n 802abe8 if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ - 802aba6: bf00 nop + 802abe6: bf00 nop if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ - 802aba8: 4b4f ldr r3, [pc, #316] ; (802ace8 ) - 802abaa: 695b ldr r3, [r3, #20] - 802abac: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 802abb0: 2b00 cmp r3, #0 - 802abb2: d143 bne.n 802ac3c + 802abe8: 4b4f ldr r3, [pc, #316] ; (802ad28 ) + 802abea: 695b ldr r3, [r3, #20] + 802abec: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 802abf0: 2b00 cmp r3, #0 + 802abf2: d143 bne.n 802ac7c SCB->CSSELR = 0U; /* select Level 1 data cache */ - 802abb4: 4b4c ldr r3, [pc, #304] ; (802ace8 ) - 802abb6: 2200 movs r2, #0 - 802abb8: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 802abf4: 4b4c ldr r3, [pc, #304] ; (802ad28 ) + 802abf6: 2200 movs r2, #0 + 802abf8: f8c3 2084 str.w r2, [r3, #132] ; 0x84 __ASM volatile ("dsb 0xF":::"memory"); - 802abbc: f3bf 8f4f dsb sy + 802abfc: f3bf 8f4f dsb sy } - 802abc0: bf00 nop + 802ac00: bf00 nop ccsidr = SCB->CCSIDR; - 802abc2: 4b49 ldr r3, [pc, #292] ; (802ace8 ) - 802abc4: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 802abc8: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802ac02: 4b49 ldr r3, [pc, #292] ; (802ad28 ) + 802ac04: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 802ac08: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 sets = (uint32_t)(CCSIDR_SETS(ccsidr)); - 802abcc: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 802abd0: 0b5b lsrs r3, r3, #13 - 802abd2: f3c3 030e ubfx r3, r3, #0, #15 - 802abd6: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802ac0c: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 802ac10: 0b5b lsrs r3, r3, #13 + 802ac12: f3c3 030e ubfx r3, r3, #0, #15 + 802ac16: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); - 802abda: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 802abde: 08db lsrs r3, r3, #3 - 802abe0: f3c3 0309 ubfx r3, r3, #0, #10 - 802abe4: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802ac1a: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 802ac1e: 08db lsrs r3, r3, #3 + 802ac20: f3c3 0309 ubfx r3, r3, #0, #10 + 802ac24: f8c7 30dc str.w r3, [r7, #220] ; 0xdc SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | - 802abe8: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 802abec: 015a lsls r2, r3, #5 - 802abee: f643 73e0 movw r3, #16352 ; 0x3fe0 - 802abf2: 4013 ands r3, r2 + 802ac28: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 802ac2c: 015a lsls r2, r3, #5 + 802ac2e: f643 73e0 movw r3, #16352 ; 0x3fe0 + 802ac32: 4013 ands r3, r2 ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); - 802abf4: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc - 802abf8: 0792 lsls r2, r2, #30 + 802ac34: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc + 802ac38: 0792 lsls r2, r2, #30 SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | - 802abfa: 493b ldr r1, [pc, #236] ; (802ace8 ) - 802abfc: 4313 orrs r3, r2 - 802abfe: f8c1 3260 str.w r3, [r1, #608] ; 0x260 + 802ac3a: 493b ldr r1, [pc, #236] ; (802ad28 ) + 802ac3c: 4313 orrs r3, r2 + 802ac3e: f8c1 3260 str.w r3, [r1, #608] ; 0x260 } while (ways-- != 0U); - 802ac02: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 802ac06: 1e5a subs r2, r3, #1 - 802ac08: f8c7 20dc str.w r2, [r7, #220] ; 0xdc - 802ac0c: 2b00 cmp r3, #0 - 802ac0e: d1eb bne.n 802abe8 + 802ac42: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 802ac46: 1e5a subs r2, r3, #1 + 802ac48: f8c7 20dc str.w r2, [r7, #220] ; 0xdc + 802ac4c: 2b00 cmp r3, #0 + 802ac4e: d1eb bne.n 802ac28 } while(sets-- != 0U); - 802ac10: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 802ac14: 1e5a subs r2, r3, #1 - 802ac16: f8c7 20e0 str.w r2, [r7, #224] ; 0xe0 - 802ac1a: 2b00 cmp r3, #0 - 802ac1c: d1dd bne.n 802abda + 802ac50: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 802ac54: 1e5a subs r2, r3, #1 + 802ac56: f8c7 20e0 str.w r2, [r7, #224] ; 0xe0 + 802ac5a: 2b00 cmp r3, #0 + 802ac5c: d1dd bne.n 802ac1a __ASM volatile ("dsb 0xF":::"memory"); - 802ac1e: f3bf 8f4f dsb sy + 802ac5e: f3bf 8f4f dsb sy } - 802ac22: bf00 nop + 802ac62: bf00 nop SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ - 802ac24: 4b30 ldr r3, [pc, #192] ; (802ace8 ) - 802ac26: 695b ldr r3, [r3, #20] - 802ac28: 4a2f ldr r2, [pc, #188] ; (802ace8 ) - 802ac2a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 802ac2e: 6153 str r3, [r2, #20] + 802ac64: 4b30 ldr r3, [pc, #192] ; (802ad28 ) + 802ac66: 695b ldr r3, [r3, #20] + 802ac68: 4a2f ldr r2, [pc, #188] ; (802ad28 ) + 802ac6a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 802ac6e: 6153 str r3, [r2, #20] __ASM volatile ("dsb 0xF":::"memory"); - 802ac30: f3bf 8f4f dsb sy + 802ac70: f3bf 8f4f dsb sy } - 802ac34: bf00 nop + 802ac74: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 802ac36: f3bf 8f6f isb sy + 802ac76: f3bf 8f6f isb sy } - 802ac3a: e000 b.n 802ac3e + 802ac7a: e000 b.n 802ac7e if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ - 802ac3c: bf00 nop + 802ac7c: bf00 nop SCB_EnableDCache(); /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - 802ac3e: f002 f923 bl 802ce88 + 802ac7e: f002 f923 bl 802cec8 /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); - 802ac42: f000 f857 bl 802acf4 + 802ac82: f000 f857 bl 802ad34 /* USER CODE BEGIN SysInit */ //__HAL_RCC_D2SRAM3_CLK_ENABLE(); /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); - 802ac46: f7ff fdb5 bl 802a7b4 + 802ac86: f7ff fdb5 bl 802a7f4 MX_DMA_Init(); - 802ac4a: f7ff fbc3 bl 802a3d4 + 802ac8a: f7ff fbc3 bl 802a414 MX_FDCAN1_Init(); - 802ac4e: f7ff fc11 bl 802a474 + 802ac8e: f7ff fc11 bl 802a4b4 MX_FDCAN2_Init(); - 802ac52: f7ff fc73 bl 802a53c + 802ac92: f7ff fc73 bl 802a57c MX_I2C4_Init(); - 802ac56: f7ff fec9 bl 802a9ec + 802ac96: f7ff fec9 bl 802aa2c MX_TIM1_Init(); - 802ac5a: f000 fdc9 bl 802b7f0 + 802ac9a: f000 fdc9 bl 802b830 MX_UART4_Init(); - 802ac5e: f000 ffcf bl 802bc00 + 802ac9e: f000 ffcf bl 802bc40 MX_UART5_Init(); - 802ac62: f001 f821 bl 802bca8 + 802aca2: f001 f821 bl 802bce8 MX_UART7_Init(); - 802ac66: f001 f877 bl 802bd58 + 802aca6: f001 f877 bl 802bd98 MX_USART1_UART_Init(); - 802ac6a: f001 f8c9 bl 802be00 + 802acaa: f001 f8c9 bl 802be40 MX_USART3_UART_Init(); - 802ac6e: f001 f96f bl 802bf50 + 802acae: f001 f96f bl 802bf90 MX_USART2_UART_Init(); - 802ac72: f001 f919 bl 802bea8 + 802acb2: f001 f919 bl 802bee8 MX_USART6_UART_Init(); - 802ac76: f001 f9bf bl 802bff8 + 802acb6: f001 f9bf bl 802c038 MX_TIM8_Init(); - 802ac7a: f000 fe85 bl 802b988 + 802acba: f000 fe85 bl 802b9c8 MX_QUADSPI_Init(); - 802ac7e: f000 fa53 bl 802b128 + 802acbe: f000 fa53 bl 802b168 MX_LPUART1_UART_Init(); - 802ac82: f000 ff69 bl 802bb58 + 802acc2: f000 ff69 bl 802bb98 MX_ADC2_Init(); - 802ac86: f7ff facf bl 802a228 + 802acc6: f7ff facf bl 802a268 MX_LWIP_Init(); - 802ac8a: f011 fc57 bl 803c53c + 802acca: f011 fc57 bl 803c57c // MX_IWDG1_Init(); MX_TIM2_Init(); - 802ac8e: f000 fe03 bl 802b898 + 802acce: f000 fe03 bl 802b8d8 /* USER CODE BEGIN 2 */ SystemTimer_Intialize(); - 802ac92: f7f5 fd4b bl 802072c + 802acd2: f7f5 fd2b bl 802072c Error_Detect_Intialzie(1000); //every 1 seconds - 802ac96: f44f 707a mov.w r0, #1000 ; 0x3e8 - 802ac9a: f7f6 f8f7 bl 8020e8c + 802acd6: f44f 707a mov.w r0, #1000 ; 0x3e8 + 802acda: f7f6 f8d7 bl 8020e8c GF_Robot_Init(); - 802ac9e: f000 f8b1 bl 802ae04 + 802acde: f000 f8b1 bl 802ae44 /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_Delay(1); - 802aca2: 2001 movs r0, #1 - 802aca4: f002 f982 bl 802cfac + 802ace2: 2001 movs r0, #1 + 802ace4: f002 f982 bl 802cfec //HAL_IWDG_Refresh(&hiwdg1); // 添加这一�??? 看门�??? if (SAVE_To_CV == 1) - 802aca8: 4b10 ldr r3, [pc, #64] ; (802acec ) - 802acaa: 681b ldr r3, [r3, #0] - 802acac: 2b01 cmp r3, #1 - 802acae: d1f8 bne.n 802aca2 + 802ace8: 4b10 ldr r3, [pc, #64] ; (802ad2c ) + 802acea: 681b ldr r3, [r3, #0] + 802acec: 2b01 cmp r3, #1 + 802acee: d1f8 bne.n 802ace2 { SAVE_To_CV = 0; - 802acb0: 4b0e ldr r3, [pc, #56] ; (802acec ) - 802acb2: 2200 movs r2, #0 - 802acb4: 601a str r2, [r3, #0] + 802acf0: 4b0e ldr r3, [pc, #56] ; (802ad2c ) + 802acf2: 2200 movs r2, #0 + 802acf4: 601a str r2, [r3, #0] //CV写入falsh ??? GF_BSP_EEPROM_Set_CV(CV); - 802acb6: 4c0e ldr r4, [pc, #56] ; (802acf0 ) - 802acb8: 4668 mov r0, sp - 802acba: f104 0310 add.w r3, r4, #16 - 802acbe: 22c8 movs r2, #200 ; 0xc8 - 802acc0: 4619 mov r1, r3 - 802acc2: f01d f85f bl 8047d84 - 802acc6: e894 000f ldmia.w r4, {r0, r1, r2, r3} - 802acca: f7f6 f89a bl 8020e02 + 802acf6: 4c0e ldr r4, [pc, #56] ; (802ad30 ) + 802acf8: 4668 mov r0, sp + 802acfa: f104 0310 add.w r3, r4, #16 + 802acfe: 22c8 movs r2, #200 ; 0xc8 + 802ad00: 4619 mov r1, r3 + 802ad02: f01d f85f bl 8047dc4 + 802ad06: e894 000f ldmia.w r4, {r0, r1, r2, r3} + 802ad0a: f7f6 f87a bl 8020e02 CV = GF_BSP_EEPROM_Get_CV(); - 802acce: 4c08 ldr r4, [pc, #32] ; (802acf0 ) - 802acd0: 463b mov r3, r7 - 802acd2: 4618 mov r0, r3 - 802acd4: f7f6 f877 bl 8020dc6 - 802acd8: 4620 mov r0, r4 - 802acda: 463b mov r3, r7 - 802acdc: 22d8 movs r2, #216 ; 0xd8 - 802acde: 4619 mov r1, r3 - 802ace0: f01d f850 bl 8047d84 + 802ad0e: 4c08 ldr r4, [pc, #32] ; (802ad30 ) + 802ad10: 463b mov r3, r7 + 802ad12: 4618 mov r0, r3 + 802ad14: f7f6 f857 bl 8020dc6 + 802ad18: 4620 mov r0, r4 + 802ad1a: 463b mov r3, r7 + 802ad1c: 22d8 movs r2, #216 ; 0xd8 + 802ad1e: 4619 mov r1, r3 + 802ad20: f01d f850 bl 8047dc4 HAL_Delay(1); - 802ace4: e7dd b.n 802aca2 - 802ace6: bf00 nop - 802ace8: e000ed00 .word 0xe000ed00 - 802acec: 2400b0e4 .word 0x2400b0e4 - 802acf0: 240001d8 .word 0x240001d8 + 802ad24: e7dd b.n 802ace2 + 802ad26: bf00 nop + 802ad28: e000ed00 .word 0xe000ed00 + 802ad2c: 2400b0e4 .word 0x2400b0e4 + 802ad30: 240001d8 .word 0x240001d8 -0802acf4 : +0802ad34 : /** * @brief System Clock Configuration * @retval None */ void SystemClock_Config(void) { - 802acf4: b580 push {r7, lr} - 802acf6: b09c sub sp, #112 ; 0x70 - 802acf8: af00 add r7, sp, #0 + 802ad34: b580 push {r7, lr} + 802ad36: b09c sub sp, #112 ; 0x70 + 802ad38: af00 add r7, sp, #0 RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - 802acfa: f107 0324 add.w r3, r7, #36 ; 0x24 - 802acfe: 224c movs r2, #76 ; 0x4c - 802ad00: 2100 movs r1, #0 - 802ad02: 4618 mov r0, r3 - 802ad04: f01d f866 bl 8047dd4 + 802ad3a: f107 0324 add.w r3, r7, #36 ; 0x24 + 802ad3e: 224c movs r2, #76 ; 0x4c + 802ad40: 2100 movs r1, #0 + 802ad42: 4618 mov r0, r3 + 802ad44: f01d f866 bl 8047e14 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - 802ad08: 1d3b adds r3, r7, #4 - 802ad0a: 2220 movs r2, #32 - 802ad0c: 2100 movs r1, #0 - 802ad0e: 4618 mov r0, r3 - 802ad10: f01d f860 bl 8047dd4 + 802ad48: 1d3b adds r3, r7, #4 + 802ad4a: 2220 movs r2, #32 + 802ad4c: 2100 movs r1, #0 + 802ad4e: 4618 mov r0, r3 + 802ad50: f01d f860 bl 8047e14 /** Supply configuration update enable */ HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); - 802ad14: 2002 movs r0, #2 - 802ad16: f009 ff3d bl 8034b94 + 802ad54: 2002 movs r0, #2 + 802ad56: f009 ff3d bl 8034bd4 /** Configure the main internal regulator output voltage */ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); - 802ad1a: 2300 movs r3, #0 - 802ad1c: 603b str r3, [r7, #0] - 802ad1e: 4b36 ldr r3, [pc, #216] ; (802adf8 ) - 802ad20: 6adb ldr r3, [r3, #44] ; 0x2c - 802ad22: 4a35 ldr r2, [pc, #212] ; (802adf8 ) - 802ad24: f023 0301 bic.w r3, r3, #1 - 802ad28: 62d3 str r3, [r2, #44] ; 0x2c - 802ad2a: 4b33 ldr r3, [pc, #204] ; (802adf8 ) - 802ad2c: 6adb ldr r3, [r3, #44] ; 0x2c - 802ad2e: f003 0301 and.w r3, r3, #1 - 802ad32: 603b str r3, [r7, #0] - 802ad34: 4b31 ldr r3, [pc, #196] ; (802adfc ) - 802ad36: 699b ldr r3, [r3, #24] - 802ad38: 4a30 ldr r2, [pc, #192] ; (802adfc ) - 802ad3a: f443 4340 orr.w r3, r3, #49152 ; 0xc000 - 802ad3e: 6193 str r3, [r2, #24] - 802ad40: 4b2e ldr r3, [pc, #184] ; (802adfc ) - 802ad42: 699b ldr r3, [r3, #24] - 802ad44: f403 4340 and.w r3, r3, #49152 ; 0xc000 - 802ad48: 603b str r3, [r7, #0] - 802ad4a: 683b ldr r3, [r7, #0] + 802ad5a: 2300 movs r3, #0 + 802ad5c: 603b str r3, [r7, #0] + 802ad5e: 4b36 ldr r3, [pc, #216] ; (802ae38 ) + 802ad60: 6adb ldr r3, [r3, #44] ; 0x2c + 802ad62: 4a35 ldr r2, [pc, #212] ; (802ae38 ) + 802ad64: f023 0301 bic.w r3, r3, #1 + 802ad68: 62d3 str r3, [r2, #44] ; 0x2c + 802ad6a: 4b33 ldr r3, [pc, #204] ; (802ae38 ) + 802ad6c: 6adb ldr r3, [r3, #44] ; 0x2c + 802ad6e: f003 0301 and.w r3, r3, #1 + 802ad72: 603b str r3, [r7, #0] + 802ad74: 4b31 ldr r3, [pc, #196] ; (802ae3c ) + 802ad76: 699b ldr r3, [r3, #24] + 802ad78: 4a30 ldr r2, [pc, #192] ; (802ae3c ) + 802ad7a: f443 4340 orr.w r3, r3, #49152 ; 0xc000 + 802ad7e: 6193 str r3, [r2, #24] + 802ad80: 4b2e ldr r3, [pc, #184] ; (802ae3c ) + 802ad82: 699b ldr r3, [r3, #24] + 802ad84: f403 4340 and.w r3, r3, #49152 ; 0xc000 + 802ad88: 603b str r3, [r7, #0] + 802ad8a: 683b ldr r3, [r7, #0] while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} - 802ad4c: bf00 nop - 802ad4e: 4b2b ldr r3, [pc, #172] ; (802adfc ) - 802ad50: 699b ldr r3, [r3, #24] - 802ad52: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 802ad56: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 802ad5a: d1f8 bne.n 802ad4e + 802ad8c: bf00 nop + 802ad8e: 4b2b ldr r3, [pc, #172] ; (802ae3c ) + 802ad90: 699b ldr r3, [r3, #24] + 802ad92: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 802ad96: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 802ad9a: d1f8 bne.n 802ad8e /** Macro to configure the PLL clock source */ __HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE); - 802ad5c: 4b28 ldr r3, [pc, #160] ; (802ae00 ) - 802ad5e: 6a9b ldr r3, [r3, #40] ; 0x28 - 802ad60: f023 0303 bic.w r3, r3, #3 - 802ad64: 4a26 ldr r2, [pc, #152] ; (802ae00 ) - 802ad66: f043 0302 orr.w r3, r3, #2 - 802ad6a: 6293 str r3, [r2, #40] ; 0x28 + 802ad9c: 4b28 ldr r3, [pc, #160] ; (802ae40 ) + 802ad9e: 6a9b ldr r3, [r3, #40] ; 0x28 + 802ada0: f023 0303 bic.w r3, r3, #3 + 802ada4: 4a26 ldr r2, [pc, #152] ; (802ae40 ) + 802ada6: f043 0302 orr.w r3, r3, #2 + 802adaa: 6293 str r3, [r2, #40] ; 0x28 /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE; - 802ad6c: 2309 movs r3, #9 - 802ad6e: 627b str r3, [r7, #36] ; 0x24 + 802adac: 2309 movs r3, #9 + 802adae: 627b str r3, [r7, #36] ; 0x24 RCC_OscInitStruct.HSEState = RCC_HSE_ON; - 802ad70: f44f 3380 mov.w r3, #65536 ; 0x10000 - 802ad74: 62bb str r3, [r7, #40] ; 0x28 + 802adb0: f44f 3380 mov.w r3, #65536 ; 0x10000 + 802adb4: 62bb str r3, [r7, #40] ; 0x28 RCC_OscInitStruct.LSIState = RCC_LSI_ON; - 802ad76: 2301 movs r3, #1 - 802ad78: 63bb str r3, [r7, #56] ; 0x38 + 802adb6: 2301 movs r3, #1 + 802adb8: 63bb str r3, [r7, #56] ; 0x38 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - 802ad7a: 2302 movs r3, #2 - 802ad7c: 64bb str r3, [r7, #72] ; 0x48 + 802adba: 2302 movs r3, #2 + 802adbc: 64bb str r3, [r7, #72] ; 0x48 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - 802ad7e: 2302 movs r3, #2 - 802ad80: 64fb str r3, [r7, #76] ; 0x4c + 802adbe: 2302 movs r3, #2 + 802adc0: 64fb str r3, [r7, #76] ; 0x4c RCC_OscInitStruct.PLL.PLLM = 2; - 802ad82: 2302 movs r3, #2 - 802ad84: 653b str r3, [r7, #80] ; 0x50 + 802adc2: 2302 movs r3, #2 + 802adc4: 653b str r3, [r7, #80] ; 0x50 RCC_OscInitStruct.PLL.PLLN = 64; - 802ad86: 2340 movs r3, #64 ; 0x40 - 802ad88: 657b str r3, [r7, #84] ; 0x54 + 802adc6: 2340 movs r3, #64 ; 0x40 + 802adc8: 657b str r3, [r7, #84] ; 0x54 RCC_OscInitStruct.PLL.PLLP = 2; - 802ad8a: 2302 movs r3, #2 - 802ad8c: 65bb str r3, [r7, #88] ; 0x58 + 802adca: 2302 movs r3, #2 + 802adcc: 65bb str r3, [r7, #88] ; 0x58 RCC_OscInitStruct.PLL.PLLQ = 20; - 802ad8e: 2314 movs r3, #20 - 802ad90: 65fb str r3, [r7, #92] ; 0x5c + 802adce: 2314 movs r3, #20 + 802add0: 65fb str r3, [r7, #92] ; 0x5c RCC_OscInitStruct.PLL.PLLR = 4; - 802ad92: 2304 movs r3, #4 - 802ad94: 663b str r3, [r7, #96] ; 0x60 + 802add2: 2304 movs r3, #4 + 802add4: 663b str r3, [r7, #96] ; 0x60 RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3; - 802ad96: 230c movs r3, #12 - 802ad98: 667b str r3, [r7, #100] ; 0x64 + 802add6: 230c movs r3, #12 + 802add8: 667b str r3, [r7, #100] ; 0x64 RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; - 802ad9a: 2300 movs r3, #0 - 802ad9c: 66bb str r3, [r7, #104] ; 0x68 + 802adda: 2300 movs r3, #0 + 802addc: 66bb str r3, [r7, #104] ; 0x68 RCC_OscInitStruct.PLL.PLLFRACN = 0; - 802ad9e: 2300 movs r3, #0 - 802ada0: 66fb str r3, [r7, #108] ; 0x6c + 802adde: 2300 movs r3, #0 + 802ade0: 66fb str r3, [r7, #108] ; 0x6c if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - 802ada2: f107 0324 add.w r3, r7, #36 ; 0x24 - 802ada6: 4618 mov r0, r3 - 802ada8: f00a fad4 bl 8035354 - 802adac: 4603 mov r3, r0 - 802adae: 2b00 cmp r3, #0 - 802adb0: d001 beq.n 802adb6 + 802ade2: f107 0324 add.w r3, r7, #36 ; 0x24 + 802ade6: 4618 mov r0, r3 + 802ade8: f00a fad4 bl 8035394 + 802adec: 4603 mov r3, r0 + 802adee: 2b00 cmp r3, #0 + 802adf0: d001 beq.n 802adf6 { Error_Handler(); - 802adb2: f000 f983 bl 802b0bc + 802adf2: f000 f983 bl 802b0fc } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - 802adb6: 233f movs r3, #63 ; 0x3f - 802adb8: 607b str r3, [r7, #4] + 802adf6: 233f movs r3, #63 ; 0x3f + 802adf8: 607b str r3, [r7, #4] |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - 802adba: 2303 movs r3, #3 - 802adbc: 60bb str r3, [r7, #8] + 802adfa: 2303 movs r3, #3 + 802adfc: 60bb str r3, [r7, #8] RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; - 802adbe: 2300 movs r3, #0 - 802adc0: 60fb str r3, [r7, #12] + 802adfe: 2300 movs r3, #0 + 802ae00: 60fb str r3, [r7, #12] RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; - 802adc2: 2308 movs r3, #8 - 802adc4: 613b str r3, [r7, #16] + 802ae02: 2308 movs r3, #8 + 802ae04: 613b str r3, [r7, #16] RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; - 802adc6: 2340 movs r3, #64 ; 0x40 - 802adc8: 617b str r3, [r7, #20] + 802ae06: 2340 movs r3, #64 ; 0x40 + 802ae08: 617b str r3, [r7, #20] RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; - 802adca: 2340 movs r3, #64 ; 0x40 - 802adcc: 61bb str r3, [r7, #24] + 802ae0a: 2340 movs r3, #64 ; 0x40 + 802ae0c: 61bb str r3, [r7, #24] RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; - 802adce: f44f 6380 mov.w r3, #1024 ; 0x400 - 802add2: 61fb str r3, [r7, #28] + 802ae0e: f44f 6380 mov.w r3, #1024 ; 0x400 + 802ae12: 61fb str r3, [r7, #28] RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; - 802add4: 2340 movs r3, #64 ; 0x40 - 802add6: 623b str r3, [r7, #32] + 802ae14: 2340 movs r3, #64 ; 0x40 + 802ae16: 623b str r3, [r7, #32] if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) - 802add8: 1d3b adds r3, r7, #4 - 802adda: 2102 movs r1, #2 - 802addc: 4618 mov r0, r3 - 802adde: f00a fee7 bl 8035bb0 - 802ade2: 4603 mov r3, r0 - 802ade4: 2b00 cmp r3, #0 - 802ade6: d001 beq.n 802adec + 802ae18: 1d3b adds r3, r7, #4 + 802ae1a: 2102 movs r1, #2 + 802ae1c: 4618 mov r0, r3 + 802ae1e: f00a fee7 bl 8035bf0 + 802ae22: 4603 mov r3, r0 + 802ae24: 2b00 cmp r3, #0 + 802ae26: d001 beq.n 802ae2c { Error_Handler(); - 802ade8: f000 f968 bl 802b0bc + 802ae28: f000 f968 bl 802b0fc } /** Enables the Clock Security System */ HAL_RCC_EnableCSS(); - 802adec: f00b f896 bl 8035f1c + 802ae2c: f00b f896 bl 8035f5c } - 802adf0: bf00 nop - 802adf2: 3770 adds r7, #112 ; 0x70 - 802adf4: 46bd mov sp, r7 - 802adf6: bd80 pop {r7, pc} - 802adf8: 58000400 .word 0x58000400 - 802adfc: 58024800 .word 0x58024800 - 802ae00: 58024400 .word 0x58024400 + 802ae30: bf00 nop + 802ae32: 3770 adds r7, #112 ; 0x70 + 802ae34: 46bd mov sp, r7 + 802ae36: bd80 pop {r7, pc} + 802ae38: 58000400 .word 0x58000400 + 802ae3c: 58024800 .word 0x58024800 + 802ae40: 58024400 .word 0x58024400 -0802ae04 : +0802ae44 : /* USER CODE BEGIN 4 */ void GF_Robot_Init() { - 802ae04: b580 push {r7, lr} - 802ae06: b08c sub sp, #48 ; 0x30 - 802ae08: af0c add r7, sp, #48 ; 0x30 + 802ae44: b580 push {r7, lr} + 802ae46: b08c sub sp, #48 ; 0x30 + 802ae48: af0c add r7, sp, #48 ; 0x30 GF_BSP_EEPROM_Init();//先初始化存储 - 802ae0a: f7f5 fd8c bl 8020926 + 802ae4a: f7f5 fd6c bl 8020926 CV_GV_Init();//然后从存储读取机器人参数到CV;GV初始化为0 - 802ae0e: f000 f84f bl 802aeb0 + 802ae4e: f000 f84f bl 802aef0 //初始化多路串�???????? GF_BSP_UARTHandlers_Intialize( - 802ae12: 2364 movs r3, #100 ; 0x64 - 802ae14: 930b str r3, [sp, #44] ; 0x2c - 802ae16: 2364 movs r3, #100 ; 0x64 - 802ae18: 930a str r3, [sp, #40] ; 0x28 - 802ae1a: 2364 movs r3, #100 ; 0x64 - 802ae1c: 9309 str r3, [sp, #36] ; 0x24 - 802ae1e: 2364 movs r3, #100 ; 0x64 - 802ae20: 9308 str r3, [sp, #32] - 802ae22: 2364 movs r3, #100 ; 0x64 - 802ae24: 9307 str r3, [sp, #28] - 802ae26: 2364 movs r3, #100 ; 0x64 - 802ae28: 9306 str r3, [sp, #24] - 802ae2a: 2364 movs r3, #100 ; 0x64 - 802ae2c: 9305 str r3, [sp, #20] - 802ae2e: 2364 movs r3, #100 ; 0x64 - 802ae30: 9304 str r3, [sp, #16] - 802ae32: 2306 movs r3, #6 - 802ae34: 9303 str r3, [sp, #12] - 802ae36: 2304 movs r3, #4 - 802ae38: 9302 str r3, [sp, #8] - 802ae3a: 2306 movs r3, #6 - 802ae3c: 9301 str r3, [sp, #4] - 802ae3e: 2306 movs r3, #6 - 802ae40: 9300 str r3, [sp, #0] - 802ae42: 2306 movs r3, #6 - 802ae44: 2206 movs r2, #6 - 802ae46: 2106 movs r1, #6 - 802ae48: 2006 movs r0, #6 - 802ae4a: f7f6 fb31 bl 80214b0 + 802ae52: 2364 movs r3, #100 ; 0x64 + 802ae54: 930b str r3, [sp, #44] ; 0x2c + 802ae56: 2364 movs r3, #100 ; 0x64 + 802ae58: 930a str r3, [sp, #40] ; 0x28 + 802ae5a: 2364 movs r3, #100 ; 0x64 + 802ae5c: 9309 str r3, [sp, #36] ; 0x24 + 802ae5e: 2364 movs r3, #100 ; 0x64 + 802ae60: 9308 str r3, [sp, #32] + 802ae62: 2364 movs r3, #100 ; 0x64 + 802ae64: 9307 str r3, [sp, #28] + 802ae66: 2364 movs r3, #100 ; 0x64 + 802ae68: 9306 str r3, [sp, #24] + 802ae6a: 2364 movs r3, #100 ; 0x64 + 802ae6c: 9305 str r3, [sp, #20] + 802ae6e: 2364 movs r3, #100 ; 0x64 + 802ae70: 9304 str r3, [sp, #16] + 802ae72: 2306 movs r3, #6 + 802ae74: 9303 str r3, [sp, #12] + 802ae76: 2304 movs r3, #4 + 802ae78: 9302 str r3, [sp, #8] + 802ae7a: 2306 movs r3, #6 + 802ae7c: 9301 str r3, [sp, #4] + 802ae7e: 2306 movs r3, #6 + 802ae80: 9300 str r3, [sp, #0] + 802ae82: 2306 movs r3, #6 + 802ae84: 2206 movs r2, #6 + 802ae86: 2106 movs r1, #6 + 802ae88: 2006 movs r0, #6 + 802ae8a: f7f6 fb11 bl 80214b0 LPUART1_UART_Dispacher_Time); //LPUART1_UART_Handler // uwb_sensor_intialize(&InterCall_DEBUG_UART_Handler);//串口//huart4//InterCall_DEBUG_UART_Handler // upper_Computer_UART_Handler_intialize(&RS_485_4_UART_Handler);//receive from computer by 485 Motor_Controller_intialize(&RS_485_3_UART_Handler); - 802ae4e: 4810 ldr r0, [pc, #64] ; (802ae90 ) - 802ae50: f7fe fdd6 bl 8029a00 + 802ae8e: 4810 ldr r0, [pc, #64] ; (802aed0 ) + 802ae90: f7fe fdd6 bl 8029a40 TL720D_intialize(&RS_485_2_UART_Handler); - 802ae54: 480f ldr r0, [pc, #60] ; (802ae94 ) - 802ae56: f7fd f8bb bl 8027fd0 + 802ae94: 480f ldr r0, [pc, #60] ; (802aed4 ) + 802ae96: f7fd f8ab bl 8027ff0 K1061DC_intialize(&RS_485_4_UART_Handler); //压强传感器,电流采集模块 - 802ae5a: 480f ldr r0, [pc, #60] ; (802ae98 ) - 802ae5c: f7fc febe bl 8027bdc + 802ae9a: 480f ldr r0, [pc, #60] ; (802aed8 ) + 802ae9c: f7fc fe9e bl 8027bdc wire_sensor_intialize(&RS_485_1_UART_Handler); //拉线传感器与 卷线电机 - 802ae60: 480e ldr r0, [pc, #56] ; (802ae9c ) - 802ae62: f7fd fca1 bl 80287a8 + 802aea0: 480e ldr r0, [pc, #56] ; (802aedc ) + 802aea2: f7fd fc9f bl 80287e4 is_upper_computer_take_over_control = 0; //上位机控制权标志 - 802ae66: 4b0e ldr r3, [pc, #56] ; (802aea0 ) - 802ae68: 2200 movs r2, #0 - 802ae6a: 701a strb r2, [r3, #0] + 802aea6: 4b0e ldr r3, [pc, #56] ; (802aee0 ) + 802aea8: 2200 movs r2, #0 + 802aeaa: 701a strb r2, [r3, #0] DLT_LOG_ENABLE_LEVEL = 0; //7 send all information //0 send nothing - 802ae6c: 4b0d ldr r3, [pc, #52] ; (802aea4 ) - 802ae6e: 2200 movs r2, #0 - 802ae70: 701a strb r2, [r3, #0] + 802aeac: 4b0d ldr r3, [pc, #52] ; (802aee4 ) + 802aeae: 2200 movs r2, #0 + 802aeb0: 701a strb r2, [r3, #0] dLT_Log_intialize(&InterCall_DEBUG_UART_Handler); //huart4 - 802ae72: 480d ldr r0, [pc, #52] ; (802aea8 ) - 802ae74: f7f5 fc78 bl 8020768 + 802aeb2: 480d ldr r0, [pc, #52] ; (802aee8 ) + 802aeb4: f7f5 fc58 bl 8020768 udp_client_init();//网口通讯 - 802ae78: f7f7 f99a bl 80221b0 + 802aeb8: f7f7 f97a bl 80221b0 // MK32_Sbus_UART_Handler_intialize(&E28_SBUS_UART_Handler); //huart5 client_setting_intialize(&LPUART1_UART_Handler); //huart1 - 802ae7c: 480b ldr r0, [pc, #44] ; (802aeac ) - 802ae7e: f7f7 fbb5 bl 80225ec + 802aebc: 480b ldr r0, [pc, #44] ; (802aeec ) + 802aebe: f7f7 fb95 bl 80225ec // GF_BSP_FDCAN_Init();//初始化FDCAN // GF_BSP_CANHandler_Init(can1_sendListPeriod, can1_DispacherPeriod, // can2_sendListPeriod, can2_DispacherPeriod); // TankWashing_Motor_Controller_intialize(&FD_CAN_1_Handler);//(原Tai5电机motors) Fsm_Init(); - 802ae82: f7fe fb71 bl 8029568 + 802aec2: f7fe fb71 bl 80295a8 GF_BSP_TIMER_Init(); //定时器最后启 - 802ae86: f7f6 fa9f bl 80213c8 -} - 802ae8a: bf00 nop - 802ae8c: 46bd mov sp, r7 - 802ae8e: bd80 pop {r7, pc} - 802ae90: 24002c34 .word 0x24002c34 - 802ae94: 24001bf4 .word 0x24001bf4 - 802ae98: 24003c74 .word 0x24003c74 - 802ae9c: 24000bb4 .word 0x24000bb4 - 802aea0: 2400aecc .word 0x2400aecc - 802aea4: 24009aac .word 0x24009aac - 802aea8: 24004cb4 .word 0x24004cb4 - 802aeac: 24007d74 .word 0x24007d74 - -0802aeb0 : + 802aec6: f7f6 fa7f bl 80213c8 +} + 802aeca: bf00 nop + 802aecc: 46bd mov sp, r7 + 802aece: bd80 pop {r7, pc} + 802aed0: 24002c34 .word 0x24002c34 + 802aed4: 24001bf4 .word 0x24001bf4 + 802aed8: 24003c74 .word 0x24003c74 + 802aedc: 24000bb4 .word 0x24000bb4 + 802aee0: 2400aecc .word 0x2400aecc + 802aee4: 24009aac .word 0x24009aac + 802aee8: 24004cb4 .word 0x24004cb4 + 802aeec: 24007d74 .word 0x24007d74 + +0802aef0 : /* * */ void CV_GV_Init() { - 802aeb0: b590 push {r4, r7, lr} - 802aeb2: b0b7 sub sp, #220 ; 0xdc - 802aeb4: af00 add r7, sp, #0 + 802aef0: b590 push {r4, r7, lr} + 802aef2: b0b7 sub sp, #220 ; 0xdc + 802aef4: af00 add r7, sp, #0 //IV_struct_define IV; //通过串口发�?�到遥控数据 //PV_struct_define decoded_PV; //通过串口从遥控接收数�???????? //GV.PV = decoded_PV; //PV_Data_Reading() //Read CV CV = GF_BSP_EEPROM_Get_CV(); - 802aeb6: 4c3e ldr r4, [pc, #248] ; (802afb0 ) - 802aeb8: 463b mov r3, r7 - 802aeba: 4618 mov r0, r3 - 802aebc: f7f5 ff83 bl 8020dc6 - 802aec0: 4620 mov r0, r4 - 802aec2: 463b mov r3, r7 - 802aec4: 22d8 movs r2, #216 ; 0xd8 - 802aec6: 4619 mov r1, r3 - 802aec8: f01c ff5c bl 8047d84 + 802aef6: 4c3e ldr r4, [pc, #248] ; (802aff0 ) + 802aef8: 463b mov r3, r7 + 802aefa: 4618 mov r0, r3 + 802aefc: f7f5 ff63 bl 8020dc6 + 802af00: 4620 mov r0, r4 + 802af02: 463b mov r3, r7 + 802af04: 22d8 movs r2, #216 ; 0xd8 + 802af06: 4619 mov r1, r3 + 802af08: f01c ff5c bl 8047dc4 SystemErrorCode = &GV.SystemErrorData.Com_Error_Code; - 802aecc: 4b39 ldr r3, [pc, #228] ; (802afb4 ) - 802aece: 4a3a ldr r2, [pc, #232] ; (802afb8 ) - 802aed0: 601a str r2, [r3, #0] + 802af0c: 4b39 ldr r3, [pc, #228] ; (802aff4 ) + 802af0e: 4a3a ldr r2, [pc, #232] ; (802aff8 ) + 802af10: 601a str r2, [r3, #0] //电机绑定 Motor485[1] = &GV.LeftMotor; - 802aed2: 4b3a ldr r3, [pc, #232] ; (802afbc ) - 802aed4: 4a3a ldr r2, [pc, #232] ; (802afc0 ) - 802aed6: 605a str r2, [r3, #4] + 802af12: 4b3a ldr r3, [pc, #232] ; (802affc ) + 802af14: 4a3a ldr r2, [pc, #232] ; (802b000 ) + 802af16: 605a str r2, [r3, #4] Motor485[2] = &GV.RightMotor; - 802aed8: 4b38 ldr r3, [pc, #224] ; (802afbc ) - 802aeda: 4a3a ldr r2, [pc, #232] ; (802afc4 ) - 802aedc: 609a str r2, [r3, #8] + 802af18: 4b38 ldr r3, [pc, #224] ; (802affc ) + 802af1a: 4a3a ldr r2, [pc, #232] ; (802b004 ) + 802af1c: 609a str r2, [r3, #8] Motor485[1]->MotorID = 1; - 802aede: 4b37 ldr r3, [pc, #220] ; (802afbc ) - 802aee0: 685b ldr r3, [r3, #4] - 802aee2: 2201 movs r2, #1 - 802aee4: 601a str r2, [r3, #0] + 802af1e: 4b37 ldr r3, [pc, #220] ; (802affc ) + 802af20: 685b ldr r3, [r3, #4] + 802af22: 2201 movs r2, #1 + 802af24: 601a str r2, [r3, #0] Motor485[2]->MotorID = 2; - 802aee6: 4b35 ldr r3, [pc, #212] ; (802afbc ) - 802aee8: 689b ldr r3, [r3, #8] - 802aeea: 2202 movs r2, #2 - 802aeec: 601a str r2, [r3, #0] + 802af26: 4b35 ldr r3, [pc, #212] ; (802affc ) + 802af28: 689b ldr r3, [r3, #8] + 802af2a: 2202 movs r2, #2 + 802af2c: 601a str r2, [r3, #0] P_MK32 = &GV.P_MK32; - 802aeee: 4b36 ldr r3, [pc, #216] ; (802afc8 ) - 802aef0: 4a36 ldr r2, [pc, #216] ; (802afcc ) - 802aef2: 601a str r2, [r3, #0] + 802af2e: 4b36 ldr r3, [pc, #216] ; (802b008 ) + 802af30: 4a36 ldr r2, [pc, #216] ; (802b00c ) + 802af32: 601a str r2, [r3, #0] SP_MSP_RF_TL720D_Parameters_In = &GV.TL720DParameters; - 802aef4: 4b36 ldr r3, [pc, #216] ; (802afd0 ) - 802aef6: 4a37 ldr r2, [pc, #220] ; (802afd4 ) - 802aef8: 601a str r2, [r3, #0] + 802af34: 4b36 ldr r3, [pc, #216] ; (802b010 ) + 802af36: 4a37 ldr r2, [pc, #220] ; (802b014 ) + 802af38: 601a str r2, [r3, #0] RobotAngle = &GV.Robot_Angle;/* GV.Robot_Angle �????? GV.TL720DParameters.RF_Angle_Roll相同? */ - 802aefa: 4b37 ldr r3, [pc, #220] ; (802afd8 ) - 802aefc: 4a37 ldr r2, [pc, #220] ; (802afdc ) - 802aefe: 601a str r2, [r3, #0] + 802af3a: 4b37 ldr r3, [pc, #220] ; (802b018 ) + 802af3c: 4a37 ldr r2, [pc, #220] ; (802b01c ) + 802af3e: 601a str r2, [r3, #0] tempature = &GV.TempatureE_2C; - 802af00: 4b37 ldr r3, [pc, #220] ; (802afe0 ) - 802af02: 4a38 ldr r2, [pc, #224] ; (802afe4 ) - 802af04: 601a str r2, [r3, #0] + 802af40: 4b37 ldr r3, [pc, #220] ; (802b020 ) + 802af42: 4a38 ldr r2, [pc, #224] ; (802b024 ) + 802af44: 601a str r2, [r3, #0] // MSP_DDM360B_Parameters_In = &; RobotAngle_DDM = &GV.RobotAngle_DDM; - 802af06: 4b38 ldr r3, [pc, #224] ; (802afe8 ) - 802af08: 4a38 ldr r2, [pc, #224] ; (802afec ) - 802af0a: 601a str r2, [r3, #0] + 802af46: 4b38 ldr r3, [pc, #224] ; (802b028 ) + 802af48: 4a38 ldr r2, [pc, #224] ; (802b02c ) + 802af4a: 601a str r2, [r3, #0] wire_length = &GV.Wire_lenth; - 802af0c: 4b38 ldr r3, [pc, #224] ; (802aff0 ) - 802af0e: 4a39 ldr r2, [pc, #228] ; (802aff4 ) - 802af10: 601a str r2, [r3, #0] + 802af4c: 4b38 ldr r3, [pc, #224] ; (802b030 ) + 802af4e: 4a39 ldr r2, [pc, #228] ; (802b034 ) + 802af50: 601a str r2, [r3, #0] pressure = &GV.ForceValue; - 802af12: 4b39 ldr r3, [pc, #228] ; (802aff8 ) - 802af14: 4a39 ldr r2, [pc, #228] ; (802affc ) - 802af16: 601a str r2, [r3, #0] + 802af52: 4b39 ldr r3, [pc, #228] ; (802b038 ) + 802af54: 4a39 ldr r2, [pc, #228] ; (802b03c ) + 802af56: 601a str r2, [r3, #0] Wire_Motor = &GV.WireMotor; - 802af18: 4b39 ldr r3, [pc, #228] ; (802b000 ) - 802af1a: 4a3a ldr r2, [pc, #232] ; (802b004 ) - 802af1c: 601a str r2, [r3, #0] + 802af58: 4b39 ldr r3, [pc, #228] ; (802b040 ) + 802af5a: 4a3a ldr r2, [pc, #232] ; (802b044 ) + 802af5c: 601a str r2, [r3, #0] UWB_20_CM = &GV.UWB_20cm; - 802af1e: 4b3a ldr r3, [pc, #232] ; (802b008 ) - 802af20: 4a3a ldr r2, [pc, #232] ; (802b00c ) - 802af22: 601a str r2, [r3, #0] + 802af5e: 4b3a ldr r3, [pc, #232] ; (802b048 ) + 802af60: 4a3a ldr r2, [pc, #232] ; (802b04c ) + 802af62: 601a str r2, [r3, #0] SLAM_cm = &GV.SLAM; - 802af24: 4b3a ldr r3, [pc, #232] ; (802b010 ) - 802af26: 4a3b ldr r2, [pc, #236] ; (802b014 ) - 802af28: 601a str r2, [r3, #0] + 802af64: 4b3a ldr r3, [pc, #232] ; (802b050 ) + 802af66: 4a3b ldr r2, [pc, #236] ; (802b054 ) + 802af68: 601a str r2, [r3, #0] GV.SLAM.SLAM_width = 0.24;// 单位m,轮距(�????修改) - 802af2a: 4b2e ldr r3, [pc, #184] ; (802afe4 ) - 802af2c: 4a3a ldr r2, [pc, #232] ; (802b018 ) - 802af2e: f8c3 21f4 str.w r2, [r3, #500] ; 0x1f4 + 802af6a: 4b2e ldr r3, [pc, #184] ; (802b024 ) + 802af6c: 4a3a ldr r2, [pc, #232] ; (802b058 ) + 802af6e: f8c3 21f4 str.w r2, [r3, #500] ; 0x1f4 GV.has_P_MK32 = true; - 802af32: 4b2c ldr r3, [pc, #176] ; (802afe4 ) - 802af34: 2201 movs r2, #1 - 802af36: 771a strb r2, [r3, #28] + 802af72: 4b2c ldr r3, [pc, #176] ; (802b024 ) + 802af74: 2201 movs r2, #1 + 802af76: 771a strb r2, [r3, #28] GV.has_LeftMotor = true; - 802af38: 4b2a ldr r3, [pc, #168] ; (802afe4 ) - 802af3a: 2201 movs r2, #1 - 802af3c: f883 2068 strb.w r2, [r3, #104] ; 0x68 + 802af78: 4b2a ldr r3, [pc, #168] ; (802b024 ) + 802af7a: 2201 movs r2, #1 + 802af7c: f883 2068 strb.w r2, [r3, #104] ; 0x68 GV.has_RightMotor = true; - 802af40: 4b28 ldr r3, [pc, #160] ; (802afe4 ) - 802af42: 2201 movs r2, #1 - 802af44: f883 20b0 strb.w r2, [r3, #176] ; 0xb0 + 802af80: 4b28 ldr r3, [pc, #160] ; (802b024 ) + 802af82: 2201 movs r2, #1 + 802af84: f883 20b0 strb.w r2, [r3, #176] ; 0xb0 GV.has_TL720DParameters = true; - 802af48: 4b26 ldr r3, [pc, #152] ; (802afe4 ) - 802af4a: 2201 movs r2, #1 - 802af4c: f883 20f8 strb.w r2, [r3, #248] ; 0xf8 + 802af88: 4b26 ldr r3, [pc, #152] ; (802b024 ) + 802af8a: 2201 movs r2, #1 + 802af8c: f883 20f8 strb.w r2, [r3, #248] ; 0xf8 GV.has_IO = true; - 802af50: 4b24 ldr r3, [pc, #144] ; (802afe4 ) - 802af52: 2201 movs r2, #1 - 802af54: f883 2120 strb.w r2, [r3, #288] ; 0x120 + 802af90: 4b24 ldr r3, [pc, #144] ; (802b024 ) + 802af92: 2201 movs r2, #1 + 802af94: f883 2120 strb.w r2, [r3, #288] ; 0x120 GV.has_SystemErrorData = true; - 802af58: 4b22 ldr r3, [pc, #136] ; (802afe4 ) - 802af5a: 2201 movs r2, #1 - 802af5c: f883 2154 strb.w r2, [r3, #340] ; 0x154 + 802af98: 4b22 ldr r3, [pc, #136] ; (802b024 ) + 802af9a: 2201 movs r2, #1 + 802af9c: f883 2154 strb.w r2, [r3, #340] ; 0x154 ////////////////////////////////////////////////////// //(1r/min)1*20 //ratio=20 // 1r=3.14*80mm/1000 =0.2512m // 1m/min=20/0.2512= 79.6 CV.wheel_Reduction_Ratio = 20; - 802af60: 4b13 ldr r3, [pc, #76] ; (802afb0 ) - 802af62: 2214 movs r2, #20 - 802af64: f8c3 20c8 str.w r2, [r3, #200] ; 0xc8 + 802afa0: 4b13 ldr r3, [pc, #76] ; (802aff0 ) + 802afa2: 2214 movs r2, #20 + 802afa4: f8c3 20c8 str.w r2, [r3, #200] ; 0xc8 CV.wheel_Diameter_m = 0.08; - 802af68: 4911 ldr r1, [pc, #68] ; (802afb0 ) - 802af6a: a30f add r3, pc, #60 ; (adr r3, 802afa8 ) - 802af6c: e9d3 2300 ldrd r2, r3, [r3] - 802af70: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 + 802afa8: 4911 ldr r1, [pc, #68] ; (802aff0 ) + 802afaa: a30f add r3, pc, #60 ; (adr r3, 802afe8 ) + 802afac: e9d3 2300 ldrd r2, r3, [r3] + 802afb0: e9c1 2334 strd r2, r3, [r1, #208] ; 0xd0 CV.Joy_Sticker_Value_Allowance = 300; - 802af74: 4b0e ldr r3, [pc, #56] ; (802afb0 ) - 802af76: f44f 7296 mov.w r2, #300 ; 0x12c - 802af7a: f8c3 20b0 str.w r2, [r3, #176] ; 0xb0 + 802afb4: 4b0e ldr r3, [pc, #56] ; (802aff0 ) + 802afb6: f44f 7296 mov.w r2, #300 ; 0x12c + 802afba: f8c3 20b0 str.w r2, [r3, #176] ; 0xb0 CV.Joy_Sticker_Angle_Allowance = 30; - 802af7e: 4b0c ldr r3, [pc, #48] ; (802afb0 ) - 802af80: 221e movs r2, #30 - 802af82: f8c3 20ac str.w r2, [r3, #172] ; 0xac + 802afbe: 4b0c ldr r3, [pc, #48] ; (802aff0 ) + 802afc0: 221e movs r2, #30 + 802afc2: f8c3 20ac str.w r2, [r3, #172] ; 0xac // CV.LeftTurnSpeed = 300; // CV.RightTurnSpeed = 300; CV.RobotUpAngleValue = 0;//? - 802af86: 4b0a ldr r3, [pc, #40] ; (802afb0 ) - 802af88: 2200 movs r2, #0 - 802af8a: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 802afc6: 4b0a ldr r3, [pc, #40] ; (802aff0 ) + 802afc8: 2200 movs r2, #0 + 802afca: f8c3 2090 str.w r2, [r3, #144] ; 0x90 CV.RobotLeftAngleValue = -90 * 100;//? - 802af8e: 4b08 ldr r3, [pc, #32] ; (802afb0 ) - 802af90: 4a22 ldr r2, [pc, #136] ; (802b01c ) - 802af92: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 802afce: 4b08 ldr r3, [pc, #32] ; (802aff0 ) + 802afd0: 4a22 ldr r2, [pc, #136] ; (802b05c ) + 802afd2: f8c3 2088 str.w r2, [r3, #136] ; 0x88 CV.RobotRightAngleValue = 90 * 100;//? - 802af96: 4b06 ldr r3, [pc, #24] ; (802afb0 ) - 802af98: f242 3228 movw r2, #9000 ; 0x2328 - 802af9c: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 802afd6: 4b06 ldr r3, [pc, #24] ; (802aff0 ) + 802afd8: f242 3228 movw r2, #9000 ; 0x2328 + 802afdc: f8c3 208c str.w r2, [r3, #140] ; 0x8c ////CV.RobotDownAngleValue = ;//+-180 * 100? ////////////////////////////////////////////////////// } - 802afa0: bf00 nop - 802afa2: 37dc adds r7, #220 ; 0xdc - 802afa4: 46bd mov sp, r7 - 802afa6: bd90 pop {r4, r7, pc} - 802afa8: 47ae147b .word 0x47ae147b - 802afac: 3fb47ae1 .word 0x3fb47ae1 - 802afb0: 240001d8 .word 0x240001d8 - 802afb4: 240001d0 .word 0x240001d0 - 802afb8: 24000408 .word 0x24000408 - 802afbc: 2400ad08 .word 0x2400ad08 - 802afc0: 24000320 .word 0x24000320 - 802afc4: 24000368 .word 0x24000368 - 802afc8: 2400ad24 .word 0x2400ad24 - 802afcc: 240002d0 .word 0x240002d0 - 802afd0: 2400ad58 .word 0x2400ad58 - 802afd4: 240003ac .word 0x240003ac - 802afd8: 2400ad48 .word 0x2400ad48 - 802afdc: 240002bc .word 0x240002bc - 802afe0: 24009a68 .word 0x24009a68 - 802afe4: 240002b0 .word 0x240002b0 - 802afe8: 2400ad4c .word 0x2400ad4c - 802afec: 240004a8 .word 0x240004a8 - 802aff0: 2400ae40 .word 0x2400ae40 - 802aff4: 240004ac .word 0x240004ac - 802aff8: 2400ad14 .word 0x2400ad14 - 802affc: 240002c4 .word 0x240002c4 - 802b000: 2400ae3c .word 0x2400ae3c - 802b004: 240004c0 .word 0x240004c0 - 802b008: 2400ae30 .word 0x2400ae30 - 802b00c: 24000444 .word 0x24000444 - 802b010: 240091d4 .word 0x240091d4 - 802b014: 24000484 .word 0x24000484 - 802b018: 3e75c28f .word 0x3e75c28f - 802b01c: ffffdcd8 .word 0xffffdcd8 - -0802b020 : + 802afe0: bf00 nop + 802afe2: 37dc adds r7, #220 ; 0xdc + 802afe4: 46bd mov sp, r7 + 802afe6: bd90 pop {r4, r7, pc} + 802afe8: 47ae147b .word 0x47ae147b + 802afec: 3fb47ae1 .word 0x3fb47ae1 + 802aff0: 240001d8 .word 0x240001d8 + 802aff4: 240001d0 .word 0x240001d0 + 802aff8: 24000408 .word 0x24000408 + 802affc: 2400ad08 .word 0x2400ad08 + 802b000: 24000320 .word 0x24000320 + 802b004: 24000368 .word 0x24000368 + 802b008: 2400ad24 .word 0x2400ad24 + 802b00c: 240002d0 .word 0x240002d0 + 802b010: 2400ad58 .word 0x2400ad58 + 802b014: 240003ac .word 0x240003ac + 802b018: 2400ad48 .word 0x2400ad48 + 802b01c: 240002bc .word 0x240002bc + 802b020: 24009a68 .word 0x24009a68 + 802b024: 240002b0 .word 0x240002b0 + 802b028: 2400ad4c .word 0x2400ad4c + 802b02c: 240004a8 .word 0x240004a8 + 802b030: 2400ae40 .word 0x2400ae40 + 802b034: 240004ac .word 0x240004ac + 802b038: 2400ad14 .word 0x2400ad14 + 802b03c: 240002c4 .word 0x240002c4 + 802b040: 2400ae3c .word 0x2400ae3c + 802b044: 240004c0 .word 0x240004c0 + 802b048: 2400ae30 .word 0x2400ae30 + 802b04c: 24000444 .word 0x24000444 + 802b050: 240091d4 .word 0x240091d4 + 802b054: 24000484 .word 0x24000484 + 802b058: 3e75c28f .word 0x3e75c28f + 802b05c: ffffdcd8 .word 0xffffdcd8 + +0802b060 : /* USER CODE END 4 */ /* MPU Configuration */ void MPU_Config(void) { - 802b020: b580 push {r7, lr} - 802b022: b084 sub sp, #16 - 802b024: af00 add r7, sp, #0 + 802b060: b580 push {r7, lr} + 802b062: b084 sub sp, #16 + 802b064: af00 add r7, sp, #0 MPU_Region_InitTypeDef MPU_InitStruct = {0}; - 802b026: 463b mov r3, r7 - 802b028: 2200 movs r2, #0 - 802b02a: 601a str r2, [r3, #0] - 802b02c: 605a str r2, [r3, #4] - 802b02e: 609a str r2, [r3, #8] - 802b030: 60da str r2, [r3, #12] + 802b066: 463b mov r3, r7 + 802b068: 2200 movs r2, #0 + 802b06a: 601a str r2, [r3, #0] + 802b06c: 605a str r2, [r3, #4] + 802b06e: 609a str r2, [r3, #8] + 802b070: 60da str r2, [r3, #12] /* Disables the MPU */ HAL_MPU_Disable(); - 802b032: f003 f897 bl 802e164 + 802b072: f003 f897 bl 802e1a4 /** Initializes and configures the Region and the memory to be protected */ MPU_InitStruct.Enable = MPU_REGION_ENABLE; - 802b036: 2301 movs r3, #1 - 802b038: 703b strb r3, [r7, #0] + 802b076: 2301 movs r3, #1 + 802b078: 703b strb r3, [r7, #0] MPU_InitStruct.Number = MPU_REGION_NUMBER0; - 802b03a: 2300 movs r3, #0 - 802b03c: 707b strb r3, [r7, #1] + 802b07a: 2300 movs r3, #0 + 802b07c: 707b strb r3, [r7, #1] MPU_InitStruct.BaseAddress = 0x30040000; - 802b03e: 4b1d ldr r3, [pc, #116] ; (802b0b4 ) - 802b040: 607b str r3, [r7, #4] + 802b07e: 4b1d ldr r3, [pc, #116] ; (802b0f4 ) + 802b080: 607b str r3, [r7, #4] MPU_InitStruct.Size = MPU_REGION_SIZE_32KB; - 802b042: 230e movs r3, #14 - 802b044: 723b strb r3, [r7, #8] + 802b082: 230e movs r3, #14 + 802b084: 723b strb r3, [r7, #8] MPU_InitStruct.SubRegionDisable = 0x0; - 802b046: 2300 movs r3, #0 - 802b048: 727b strb r3, [r7, #9] + 802b086: 2300 movs r3, #0 + 802b088: 727b strb r3, [r7, #9] MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1; - 802b04a: 2301 movs r3, #1 - 802b04c: 72bb strb r3, [r7, #10] + 802b08a: 2301 movs r3, #1 + 802b08c: 72bb strb r3, [r7, #10] MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; - 802b04e: 2303 movs r3, #3 - 802b050: 72fb strb r3, [r7, #11] + 802b08e: 2303 movs r3, #3 + 802b090: 72fb strb r3, [r7, #11] MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; - 802b052: 2300 movs r3, #0 - 802b054: 733b strb r3, [r7, #12] + 802b092: 2300 movs r3, #0 + 802b094: 733b strb r3, [r7, #12] MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; - 802b056: 2300 movs r3, #0 - 802b058: 737b strb r3, [r7, #13] + 802b096: 2300 movs r3, #0 + 802b098: 737b strb r3, [r7, #13] MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; - 802b05a: 2300 movs r3, #0 - 802b05c: 73bb strb r3, [r7, #14] + 802b09a: 2300 movs r3, #0 + 802b09c: 73bb strb r3, [r7, #14] MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; - 802b05e: 2300 movs r3, #0 - 802b060: 73fb strb r3, [r7, #15] + 802b09e: 2300 movs r3, #0 + 802b0a0: 73fb strb r3, [r7, #15] HAL_MPU_ConfigRegion(&MPU_InitStruct); - 802b062: 463b mov r3, r7 - 802b064: 4618 mov r0, r3 - 802b066: f003 f8b5 bl 802e1d4 + 802b0a2: 463b mov r3, r7 + 802b0a4: 4618 mov r0, r3 + 802b0a6: f003 f8b5 bl 802e214 /** Initializes and configures the Region and the memory to be protected */ MPU_InitStruct.Number = MPU_REGION_NUMBER1; - 802b06a: 2301 movs r3, #1 - 802b06c: 707b strb r3, [r7, #1] + 802b0aa: 2301 movs r3, #1 + 802b0ac: 707b strb r3, [r7, #1] MPU_InitStruct.Size = MPU_REGION_SIZE_1KB; - 802b06e: 2309 movs r3, #9 - 802b070: 723b strb r3, [r7, #8] + 802b0ae: 2309 movs r3, #9 + 802b0b0: 723b strb r3, [r7, #8] MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; - 802b072: 2300 movs r3, #0 - 802b074: 72bb strb r3, [r7, #10] + 802b0b2: 2300 movs r3, #0 + 802b0b4: 72bb strb r3, [r7, #10] MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; - 802b076: 2301 movs r3, #1 - 802b078: 737b strb r3, [r7, #13] + 802b0b6: 2301 movs r3, #1 + 802b0b8: 737b strb r3, [r7, #13] MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE; - 802b07a: 2301 movs r3, #1 - 802b07c: 73fb strb r3, [r7, #15] + 802b0ba: 2301 movs r3, #1 + 802b0bc: 73fb strb r3, [r7, #15] HAL_MPU_ConfigRegion(&MPU_InitStruct); - 802b07e: 463b mov r3, r7 - 802b080: 4618 mov r0, r3 - 802b082: f003 f8a7 bl 802e1d4 + 802b0be: 463b mov r3, r7 + 802b0c0: 4618 mov r0, r3 + 802b0c2: f003 f8a7 bl 802e214 /** Initializes and configures the Region and the memory to be protected */ MPU_InitStruct.Number = MPU_REGION_NUMBER2; - 802b086: 2302 movs r3, #2 - 802b088: 707b strb r3, [r7, #1] + 802b0c6: 2302 movs r3, #2 + 802b0c8: 707b strb r3, [r7, #1] MPU_InitStruct.BaseAddress = 0x30030000; - 802b08a: 4b0b ldr r3, [pc, #44] ; (802b0b8 ) - 802b08c: 607b str r3, [r7, #4] + 802b0ca: 4b0b ldr r3, [pc, #44] ; (802b0f8 ) + 802b0cc: 607b str r3, [r7, #4] MPU_InitStruct.Size = MPU_REGION_SIZE_32KB; - 802b08e: 230e movs r3, #14 - 802b090: 723b strb r3, [r7, #8] + 802b0ce: 230e movs r3, #14 + 802b0d0: 723b strb r3, [r7, #8] MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1; - 802b092: 2301 movs r3, #1 - 802b094: 72bb strb r3, [r7, #10] + 802b0d2: 2301 movs r3, #1 + 802b0d4: 72bb strb r3, [r7, #10] MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; - 802b096: 2300 movs r3, #0 - 802b098: 737b strb r3, [r7, #13] + 802b0d6: 2300 movs r3, #0 + 802b0d8: 737b strb r3, [r7, #13] MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; - 802b09a: 2300 movs r3, #0 - 802b09c: 73fb strb r3, [r7, #15] + 802b0da: 2300 movs r3, #0 + 802b0dc: 73fb strb r3, [r7, #15] HAL_MPU_ConfigRegion(&MPU_InitStruct); - 802b09e: 463b mov r3, r7 - 802b0a0: 4618 mov r0, r3 - 802b0a2: f003 f897 bl 802e1d4 + 802b0de: 463b mov r3, r7 + 802b0e0: 4618 mov r0, r3 + 802b0e2: f003 f897 bl 802e214 /* Enables the MPU */ HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); - 802b0a6: 2004 movs r0, #4 - 802b0a8: f003 f874 bl 802e194 + 802b0e6: 2004 movs r0, #4 + 802b0e8: f003 f874 bl 802e1d4 } - 802b0ac: bf00 nop - 802b0ae: 3710 adds r7, #16 - 802b0b0: 46bd mov sp, r7 - 802b0b2: bd80 pop {r7, pc} - 802b0b4: 30040000 .word 0x30040000 - 802b0b8: 30030000 .word 0x30030000 + 802b0ec: bf00 nop + 802b0ee: 3710 adds r7, #16 + 802b0f0: 46bd mov sp, r7 + 802b0f2: bd80 pop {r7, pc} + 802b0f4: 30040000 .word 0x30040000 + 802b0f8: 30030000 .word 0x30030000 -0802b0bc : +0802b0fc : /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { - 802b0bc: b580 push {r7, lr} - 802b0be: b084 sub sp, #16 - 802b0c0: af04 add r7, sp, #16 + 802b0fc: b580 push {r7, lr} + 802b0fe: b084 sub sp, #16 + 802b100: af04 add r7, sp, #16 __ASM volatile ("cpsid i" : : : "memory"); - 802b0c2: b672 cpsid i + 802b102: b672 cpsid i } - 802b0c4: bf00 nop + 802b104: bf00 nop /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { HAL_Delay(1000); - 802b0c6: f44f 707a mov.w r0, #1000 ; 0x3e8 - 802b0ca: f001 ff6f bl 802cfac + 802b106: f44f 707a mov.w r0, #1000 ; 0x3e8 + 802b10a: f001 ff6f bl 802cfec LOGFF(DL_ERROR, "Something Bad Happened, Now in Error_Handler Function"); - 802b0ce: 4b12 ldr r3, [pc, #72] ; (802b118 ) - 802b0d0: 781b ldrb r3, [r3, #0] - 802b0d2: 2b01 cmp r3, #1 - 802b0d4: d9f7 bls.n 802b0c6 - 802b0d6: 2330 movs r3, #48 ; 0x30 - 802b0d8: 061a lsls r2, r3, #24 - 802b0da: 2330 movs r3, #48 ; 0x30 - 802b0dc: 041b lsls r3, r3, #16 - 802b0de: 431a orrs r2, r3 - 802b0e0: 2330 movs r3, #48 ; 0x30 - 802b0e2: 021b lsls r3, r3, #8 - 802b0e4: 4313 orrs r3, r2 - 802b0e6: 2230 movs r2, #48 ; 0x30 - 802b0e8: ea43 0102 orr.w r1, r3, r2 - 802b0ec: 2344 movs r3, #68 ; 0x44 - 802b0ee: 061a lsls r2, r3, #24 - 802b0f0: 2346 movs r3, #70 ; 0x46 - 802b0f2: 041b lsls r3, r3, #16 - 802b0f4: 431a orrs r2, r3 - 802b0f6: 234c movs r3, #76 ; 0x4c - 802b0f8: 021b lsls r3, r3, #8 - 802b0fa: 4313 orrs r3, r2 - 802b0fc: 2254 movs r2, #84 ; 0x54 - 802b0fe: 431a orrs r2, r3 - 802b100: 4b06 ldr r3, [pc, #24] ; (802b11c ) - 802b102: 9302 str r3, [sp, #8] - 802b104: f240 13bf movw r3, #447 ; 0x1bf - 802b108: 9301 str r3, [sp, #4] - 802b10a: 4b05 ldr r3, [pc, #20] ; (802b120 ) - 802b10c: 9300 str r3, [sp, #0] - 802b10e: 4b05 ldr r3, [pc, #20] ; (802b124 ) - 802b110: 2002 movs r0, #2 - 802b112: f7fc fc19 bl 8027948 + 802b10e: 4b12 ldr r3, [pc, #72] ; (802b158 ) + 802b110: 781b ldrb r3, [r3, #0] + 802b112: 2b01 cmp r3, #1 + 802b114: d9f7 bls.n 802b106 + 802b116: 2330 movs r3, #48 ; 0x30 + 802b118: 061a lsls r2, r3, #24 + 802b11a: 2330 movs r3, #48 ; 0x30 + 802b11c: 041b lsls r3, r3, #16 + 802b11e: 431a orrs r2, r3 + 802b120: 2330 movs r3, #48 ; 0x30 + 802b122: 021b lsls r3, r3, #8 + 802b124: 4313 orrs r3, r2 + 802b126: 2230 movs r2, #48 ; 0x30 + 802b128: ea43 0102 orr.w r1, r3, r2 + 802b12c: 2344 movs r3, #68 ; 0x44 + 802b12e: 061a lsls r2, r3, #24 + 802b130: 2346 movs r3, #70 ; 0x46 + 802b132: 041b lsls r3, r3, #16 + 802b134: 431a orrs r2, r3 + 802b136: 234c movs r3, #76 ; 0x4c + 802b138: 021b lsls r3, r3, #8 + 802b13a: 4313 orrs r3, r2 + 802b13c: 2254 movs r2, #84 ; 0x54 + 802b13e: 431a orrs r2, r3 + 802b140: 4b06 ldr r3, [pc, #24] ; (802b15c ) + 802b142: 9302 str r3, [sp, #8] + 802b144: f240 13bf movw r3, #447 ; 0x1bf + 802b148: 9301 str r3, [sp, #4] + 802b14a: 4b05 ldr r3, [pc, #20] ; (802b160 ) + 802b14c: 9300 str r3, [sp, #0] + 802b14e: 4b05 ldr r3, [pc, #20] ; (802b164 ) + 802b150: 2002 movs r0, #2 + 802b152: f7fc fbf9 bl 8027948 HAL_Delay(1000); - 802b116: e7d6 b.n 802b0c6 - 802b118: 24009aac .word 0x24009aac - 802b11c: 0804d34c .word 0x0804d34c - 802b120: 0804a104 .word 0x0804a104 - 802b124: 0804a0b0 .word 0x0804a0b0 + 802b156: e7d6 b.n 802b106 + 802b158: 24009aac .word 0x24009aac + 802b15c: 0804d38c .word 0x0804d38c + 802b160: 0804a144 .word 0x0804a144 + 802b164: 0804a0f0 .word 0x0804a0f0 -0802b128 : +0802b168 : QSPI_HandleTypeDef hqspi; /* QUADSPI init function */ void MX_QUADSPI_Init(void) { - 802b128: b580 push {r7, lr} - 802b12a: af00 add r7, sp, #0 + 802b168: b580 push {r7, lr} + 802b16a: af00 add r7, sp, #0 /* USER CODE END QUADSPI_Init 0 */ /* USER CODE BEGIN QUADSPI_Init 1 */ /* USER CODE END QUADSPI_Init 1 */ hqspi.Instance = QUADSPI; - 802b12c: 4b12 ldr r3, [pc, #72] ; (802b178 ) - 802b12e: 4a13 ldr r2, [pc, #76] ; (802b17c ) - 802b130: 601a str r2, [r3, #0] + 802b16c: 4b12 ldr r3, [pc, #72] ; (802b1b8 ) + 802b16e: 4a13 ldr r2, [pc, #76] ; (802b1bc ) + 802b170: 601a str r2, [r3, #0] hqspi.Init.ClockPrescaler = 4-1; - 802b132: 4b11 ldr r3, [pc, #68] ; (802b178 ) - 802b134: 2203 movs r2, #3 - 802b136: 605a str r2, [r3, #4] + 802b172: 4b11 ldr r3, [pc, #68] ; (802b1b8 ) + 802b174: 2203 movs r2, #3 + 802b176: 605a str r2, [r3, #4] hqspi.Init.FifoThreshold = 32; - 802b138: 4b0f ldr r3, [pc, #60] ; (802b178 ) - 802b13a: 2220 movs r2, #32 - 802b13c: 609a str r2, [r3, #8] + 802b178: 4b0f ldr r3, [pc, #60] ; (802b1b8 ) + 802b17a: 2220 movs r2, #32 + 802b17c: 609a str r2, [r3, #8] hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE; - 802b13e: 4b0e ldr r3, [pc, #56] ; (802b178 ) - 802b140: 2210 movs r2, #16 - 802b142: 60da str r2, [r3, #12] + 802b17e: 4b0e ldr r3, [pc, #56] ; (802b1b8 ) + 802b180: 2210 movs r2, #16 + 802b182: 60da str r2, [r3, #12] hqspi.Init.FlashSize = 23+1; - 802b144: 4b0c ldr r3, [pc, #48] ; (802b178 ) - 802b146: 2218 movs r2, #24 - 802b148: 611a str r2, [r3, #16] + 802b184: 4b0c ldr r3, [pc, #48] ; (802b1b8 ) + 802b186: 2218 movs r2, #24 + 802b188: 611a str r2, [r3, #16] hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_2_CYCLE; - 802b14a: 4b0b ldr r3, [pc, #44] ; (802b178 ) - 802b14c: f44f 7280 mov.w r2, #256 ; 0x100 - 802b150: 615a str r2, [r3, #20] + 802b18a: 4b0b ldr r3, [pc, #44] ; (802b1b8 ) + 802b18c: f44f 7280 mov.w r2, #256 ; 0x100 + 802b190: 615a str r2, [r3, #20] hqspi.Init.ClockMode = QSPI_CLOCK_MODE_3; - 802b152: 4b09 ldr r3, [pc, #36] ; (802b178 ) - 802b154: 2201 movs r2, #1 - 802b156: 619a str r2, [r3, #24] + 802b192: 4b09 ldr r3, [pc, #36] ; (802b1b8 ) + 802b194: 2201 movs r2, #1 + 802b196: 619a str r2, [r3, #24] hqspi.Init.FlashID = QSPI_FLASH_ID_2; - 802b158: 4b07 ldr r3, [pc, #28] ; (802b178 ) - 802b15a: 2280 movs r2, #128 ; 0x80 - 802b15c: 61da str r2, [r3, #28] + 802b198: 4b07 ldr r3, [pc, #28] ; (802b1b8 ) + 802b19a: 2280 movs r2, #128 ; 0x80 + 802b19c: 61da str r2, [r3, #28] hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE; - 802b15e: 4b06 ldr r3, [pc, #24] ; (802b178 ) - 802b160: 2200 movs r2, #0 - 802b162: 621a str r2, [r3, #32] + 802b19e: 4b06 ldr r3, [pc, #24] ; (802b1b8 ) + 802b1a0: 2200 movs r2, #0 + 802b1a2: 621a str r2, [r3, #32] if (HAL_QSPI_Init(&hqspi) != HAL_OK) - 802b164: 4804 ldr r0, [pc, #16] ; (802b178 ) - 802b166: f009 fd4f bl 8034c08 - 802b16a: 4603 mov r3, r0 - 802b16c: 2b00 cmp r3, #0 - 802b16e: d001 beq.n 802b174 + 802b1a4: 4804 ldr r0, [pc, #16] ; (802b1b8 ) + 802b1a6: f009 fd4f bl 8034c48 + 802b1aa: 4603 mov r3, r0 + 802b1ac: 2b00 cmp r3, #0 + 802b1ae: d001 beq.n 802b1b4 { Error_Handler(); - 802b170: f7ff ffa4 bl 802b0bc + 802b1b0: f7ff ffa4 bl 802b0fc } /* USER CODE BEGIN QUADSPI_Init 2 */ /* USER CODE END QUADSPI_Init 2 */ } - 802b174: bf00 nop - 802b176: bd80 pop {r7, pc} - 802b178: 2400b0e8 .word 0x2400b0e8 - 802b17c: 52005000 .word 0x52005000 + 802b1b4: bf00 nop + 802b1b6: bd80 pop {r7, pc} + 802b1b8: 2400b0e8 .word 0x2400b0e8 + 802b1bc: 52005000 .word 0x52005000 -0802b180 : +0802b1c0 : void HAL_QSPI_MspInit(QSPI_HandleTypeDef* qspiHandle) { - 802b180: b580 push {r7, lr} - 802b182: b0ba sub sp, #232 ; 0xe8 - 802b184: af00 add r7, sp, #0 - 802b186: 6078 str r0, [r7, #4] + 802b1c0: b580 push {r7, lr} + 802b1c2: b0ba sub sp, #232 ; 0xe8 + 802b1c4: af00 add r7, sp, #0 + 802b1c6: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802b188: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802b18c: 2200 movs r2, #0 - 802b18e: 601a str r2, [r3, #0] - 802b190: 605a str r2, [r3, #4] - 802b192: 609a str r2, [r3, #8] - 802b194: 60da str r2, [r3, #12] - 802b196: 611a str r2, [r3, #16] + 802b1c8: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802b1cc: 2200 movs r2, #0 + 802b1ce: 601a str r2, [r3, #0] + 802b1d0: 605a str r2, [r3, #4] + 802b1d2: 609a str r2, [r3, #8] + 802b1d4: 60da str r2, [r3, #12] + 802b1d6: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 802b198: f107 0318 add.w r3, r7, #24 - 802b19c: 22bc movs r2, #188 ; 0xbc - 802b19e: 2100 movs r1, #0 - 802b1a0: 4618 mov r0, r3 - 802b1a2: f01c fe17 bl 8047dd4 + 802b1d8: f107 0318 add.w r3, r7, #24 + 802b1dc: 22bc movs r2, #188 ; 0xbc + 802b1de: 2100 movs r1, #0 + 802b1e0: 4618 mov r0, r3 + 802b1e2: f01c fe17 bl 8047e14 if(qspiHandle->Instance==QUADSPI) - 802b1a6: 687b ldr r3, [r7, #4] - 802b1a8: 681b ldr r3, [r3, #0] - 802b1aa: 4a4a ldr r2, [pc, #296] ; (802b2d4 ) - 802b1ac: 4293 cmp r3, r2 - 802b1ae: f040 808c bne.w 802b2ca + 802b1e6: 687b ldr r3, [r7, #4] + 802b1e8: 681b ldr r3, [r3, #0] + 802b1ea: 4a4a ldr r2, [pc, #296] ; (802b314 ) + 802b1ec: 4293 cmp r3, r2 + 802b1ee: f040 808c bne.w 802b30a /* USER CODE END QUADSPI_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_QSPI; - 802b1b2: f04f 7300 mov.w r3, #33554432 ; 0x2000000 - 802b1b6: 61bb str r3, [r7, #24] + 802b1f2: f04f 7300 mov.w r3, #33554432 ; 0x2000000 + 802b1f6: 61bb str r3, [r7, #24] PeriphClkInitStruct.QspiClockSelection = RCC_QSPICLKSOURCE_D1HCLK; - 802b1b8: 2300 movs r3, #0 - 802b1ba: 663b str r3, [r7, #96] ; 0x60 + 802b1f8: 2300 movs r3, #0 + 802b1fa: 663b str r3, [r7, #96] ; 0x60 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802b1bc: f107 0318 add.w r3, r7, #24 - 802b1c0: 4618 mov r0, r3 - 802b1c2: f00b f8ad bl 8036320 - 802b1c6: 4603 mov r3, r0 - 802b1c8: 2b00 cmp r3, #0 - 802b1ca: d001 beq.n 802b1d0 + 802b1fc: f107 0318 add.w r3, r7, #24 + 802b200: 4618 mov r0, r3 + 802b202: f00b f8ad bl 8036360 + 802b206: 4603 mov r3, r0 + 802b208: 2b00 cmp r3, #0 + 802b20a: d001 beq.n 802b210 { Error_Handler(); - 802b1cc: f7ff ff76 bl 802b0bc + 802b20c: f7ff ff76 bl 802b0fc } /* QUADSPI clock enable */ __HAL_RCC_QSPI_CLK_ENABLE(); - 802b1d0: 4b41 ldr r3, [pc, #260] ; (802b2d8 ) - 802b1d2: f8d3 30d4 ldr.w r3, [r3, #212] ; 0xd4 - 802b1d6: 4a40 ldr r2, [pc, #256] ; (802b2d8 ) - 802b1d8: f443 4380 orr.w r3, r3, #16384 ; 0x4000 - 802b1dc: f8c2 30d4 str.w r3, [r2, #212] ; 0xd4 - 802b1e0: 4b3d ldr r3, [pc, #244] ; (802b2d8 ) - 802b1e2: f8d3 30d4 ldr.w r3, [r3, #212] ; 0xd4 - 802b1e6: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 802b1ea: 617b str r3, [r7, #20] - 802b1ec: 697b ldr r3, [r7, #20] + 802b210: 4b41 ldr r3, [pc, #260] ; (802b318 ) + 802b212: f8d3 30d4 ldr.w r3, [r3, #212] ; 0xd4 + 802b216: 4a40 ldr r2, [pc, #256] ; (802b318 ) + 802b218: f443 4380 orr.w r3, r3, #16384 ; 0x4000 + 802b21c: f8c2 30d4 str.w r3, [r2, #212] ; 0xd4 + 802b220: 4b3d ldr r3, [pc, #244] ; (802b318 ) + 802b222: f8d3 30d4 ldr.w r3, [r3, #212] ; 0xd4 + 802b226: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 802b22a: 617b str r3, [r7, #20] + 802b22c: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOB_CLK_ENABLE(); - 802b1ee: 4b3a ldr r3, [pc, #232] ; (802b2d8 ) - 802b1f0: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b1f4: 4a38 ldr r2, [pc, #224] ; (802b2d8 ) - 802b1f6: f043 0302 orr.w r3, r3, #2 - 802b1fa: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802b1fe: 4b36 ldr r3, [pc, #216] ; (802b2d8 ) - 802b200: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b204: f003 0302 and.w r3, r3, #2 - 802b208: 613b str r3, [r7, #16] - 802b20a: 693b ldr r3, [r7, #16] + 802b22e: 4b3a ldr r3, [pc, #232] ; (802b318 ) + 802b230: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b234: 4a38 ldr r2, [pc, #224] ; (802b318 ) + 802b236: f043 0302 orr.w r3, r3, #2 + 802b23a: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802b23e: 4b36 ldr r3, [pc, #216] ; (802b318 ) + 802b240: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b244: f003 0302 and.w r3, r3, #2 + 802b248: 613b str r3, [r7, #16] + 802b24a: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOE_CLK_ENABLE(); - 802b20c: 4b32 ldr r3, [pc, #200] ; (802b2d8 ) - 802b20e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b212: 4a31 ldr r2, [pc, #196] ; (802b2d8 ) - 802b214: f043 0310 orr.w r3, r3, #16 - 802b218: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802b21c: 4b2e ldr r3, [pc, #184] ; (802b2d8 ) - 802b21e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b222: f003 0310 and.w r3, r3, #16 - 802b226: 60fb str r3, [r7, #12] - 802b228: 68fb ldr r3, [r7, #12] + 802b24c: 4b32 ldr r3, [pc, #200] ; (802b318 ) + 802b24e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b252: 4a31 ldr r2, [pc, #196] ; (802b318 ) + 802b254: f043 0310 orr.w r3, r3, #16 + 802b258: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802b25c: 4b2e ldr r3, [pc, #184] ; (802b318 ) + 802b25e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b262: f003 0310 and.w r3, r3, #16 + 802b266: 60fb str r3, [r7, #12] + 802b268: 68fb ldr r3, [r7, #12] __HAL_RCC_GPIOC_CLK_ENABLE(); - 802b22a: 4b2b ldr r3, [pc, #172] ; (802b2d8 ) - 802b22c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b230: 4a29 ldr r2, [pc, #164] ; (802b2d8 ) - 802b232: f043 0304 orr.w r3, r3, #4 - 802b236: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802b23a: 4b27 ldr r3, [pc, #156] ; (802b2d8 ) - 802b23c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802b240: f003 0304 and.w r3, r3, #4 - 802b244: 60bb str r3, [r7, #8] - 802b246: 68bb ldr r3, [r7, #8] + 802b26a: 4b2b ldr r3, [pc, #172] ; (802b318 ) + 802b26c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b270: 4a29 ldr r2, [pc, #164] ; (802b318 ) + 802b272: f043 0304 orr.w r3, r3, #4 + 802b276: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802b27a: 4b27 ldr r3, [pc, #156] ; (802b318 ) + 802b27c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802b280: f003 0304 and.w r3, r3, #4 + 802b284: 60bb str r3, [r7, #8] + 802b286: 68bb ldr r3, [r7, #8] PE8 ------> QUADSPI_BK2_IO1 PE9 ------> QUADSPI_BK2_IO2 PE10 ------> QUADSPI_BK2_IO3 PC11 ------> QUADSPI_BK2_NCS */ GPIO_InitStruct.Pin = GPIO_PIN_2; - 802b248: 2304 movs r3, #4 - 802b24a: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802b288: 2304 movs r3, #4 + 802b28a: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802b24e: 2302 movs r3, #2 - 802b250: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802b28e: 2302 movs r3, #2 + 802b290: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802b254: 2300 movs r3, #0 - 802b256: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802b294: 2300 movs r3, #0 + 802b296: f8c7 30dc str.w r3, [r7, #220] ; 0xdc GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802b25a: 2303 movs r3, #3 - 802b25c: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802b29a: 2303 movs r3, #3 + 802b29c: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; - 802b260: 2309 movs r3, #9 - 802b262: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802b2a0: 2309 movs r3, #9 + 802b2a2: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802b266: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802b26a: 4619 mov r1, r3 - 802b26c: 481b ldr r0, [pc, #108] ; (802b2dc ) - 802b26e: f008 fb1b bl 80338a8 + 802b2a6: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802b2aa: 4619 mov r1, r3 + 802b2ac: 481b ldr r0, [pc, #108] ; (802b31c ) + 802b2ae: f008 fb1b bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10; - 802b272: f44f 63f0 mov.w r3, #1920 ; 0x780 - 802b276: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802b2b2: f44f 63f0 mov.w r3, #1920 ; 0x780 + 802b2b6: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802b27a: 2302 movs r3, #2 - 802b27c: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802b2ba: 2302 movs r3, #2 + 802b2bc: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802b280: 2300 movs r3, #0 - 802b282: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802b2c0: 2300 movs r3, #0 + 802b2c2: f8c7 30dc str.w r3, [r7, #220] ; 0xdc GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802b286: 2303 movs r3, #3 - 802b288: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802b2c6: 2303 movs r3, #3 + 802b2c8: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 GPIO_InitStruct.Alternate = GPIO_AF10_QUADSPI; - 802b28c: 230a movs r3, #10 - 802b28e: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802b2cc: 230a movs r3, #10 + 802b2ce: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - 802b292: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802b296: 4619 mov r1, r3 - 802b298: 4811 ldr r0, [pc, #68] ; (802b2e0 ) - 802b29a: f008 fb05 bl 80338a8 + 802b2d2: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802b2d6: 4619 mov r1, r3 + 802b2d8: 4811 ldr r0, [pc, #68] ; (802b320 ) + 802b2da: f008 fb05 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_11; - 802b29e: f44f 6300 mov.w r3, #2048 ; 0x800 - 802b2a2: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 802b2de: f44f 6300 mov.w r3, #2048 ; 0x800 + 802b2e2: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802b2a6: 2302 movs r3, #2 - 802b2a8: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 802b2e6: 2302 movs r3, #2 + 802b2e8: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802b2ac: 2300 movs r3, #0 - 802b2ae: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 802b2ec: 2300 movs r3, #0 + 802b2ee: f8c7 30dc str.w r3, [r7, #220] ; 0xdc GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802b2b2: 2303 movs r3, #3 - 802b2b4: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802b2f2: 2303 movs r3, #3 + 802b2f4: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 GPIO_InitStruct.Alternate = GPIO_AF9_QUADSPI; - 802b2b8: 2309 movs r3, #9 - 802b2ba: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 802b2f8: 2309 movs r3, #9 + 802b2fa: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 802b2be: f107 03d4 add.w r3, r7, #212 ; 0xd4 - 802b2c2: 4619 mov r1, r3 - 802b2c4: 4807 ldr r0, [pc, #28] ; (802b2e4 ) - 802b2c6: f008 faef bl 80338a8 + 802b2fe: f107 03d4 add.w r3, r7, #212 ; 0xd4 + 802b302: 4619 mov r1, r3 + 802b304: 4807 ldr r0, [pc, #28] ; (802b324 ) + 802b306: f008 faef bl 80338e8 /* USER CODE BEGIN QUADSPI_MspInit 1 */ /* USER CODE END QUADSPI_MspInit 1 */ } } - 802b2ca: bf00 nop - 802b2cc: 37e8 adds r7, #232 ; 0xe8 - 802b2ce: 46bd mov sp, r7 - 802b2d0: bd80 pop {r7, pc} - 802b2d2: bf00 nop - 802b2d4: 52005000 .word 0x52005000 - 802b2d8: 58024400 .word 0x58024400 - 802b2dc: 58020400 .word 0x58020400 - 802b2e0: 58021000 .word 0x58021000 - 802b2e4: 58020800 .word 0x58020800 + 802b30a: bf00 nop + 802b30c: 37e8 adds r7, #232 ; 0xe8 + 802b30e: 46bd mov sp, r7 + 802b310: bd80 pop {r7, pc} + 802b312: bf00 nop + 802b314: 52005000 .word 0x52005000 + 802b318: 58024400 .word 0x58024400 + 802b31c: 58020400 .word 0x58020400 + 802b320: 58021000 .word 0x58021000 + 802b324: 58020800 .word 0x58020800 -0802b2e8 : +0802b328 : /* USER CODE END 0 */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - 802b2e8: b480 push {r7} - 802b2ea: b083 sub sp, #12 - 802b2ec: af00 add r7, sp, #0 + 802b328: b480 push {r7} + 802b32a: b083 sub sp, #12 + 802b32c: af00 add r7, sp, #0 /* USER CODE BEGIN MspInit 0 */ /* USER CODE END MspInit 0 */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 802b2ee: 4b0a ldr r3, [pc, #40] ; (802b318 ) - 802b2f0: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802b2f4: 4a08 ldr r2, [pc, #32] ; (802b318 ) - 802b2f6: f043 0302 orr.w r3, r3, #2 - 802b2fa: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 - 802b2fe: 4b06 ldr r3, [pc, #24] ; (802b318 ) - 802b300: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802b304: f003 0302 and.w r3, r3, #2 - 802b308: 607b str r3, [r7, #4] - 802b30a: 687b ldr r3, [r7, #4] + 802b32e: 4b0a ldr r3, [pc, #40] ; (802b358 ) + 802b330: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802b334: 4a08 ldr r2, [pc, #32] ; (802b358 ) + 802b336: f043 0302 orr.w r3, r3, #2 + 802b33a: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 + 802b33e: 4b06 ldr r3, [pc, #24] ; (802b358 ) + 802b340: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802b344: f003 0302 and.w r3, r3, #2 + 802b348: 607b str r3, [r7, #4] + 802b34a: 687b ldr r3, [r7, #4] /* System interrupt init*/ /* USER CODE BEGIN MspInit 1 */ /* USER CODE END MspInit 1 */ } - 802b30c: bf00 nop - 802b30e: 370c adds r7, #12 - 802b310: 46bd mov sp, r7 - 802b312: f85d 7b04 ldr.w r7, [sp], #4 - 802b316: 4770 bx lr - 802b318: 58024400 .word 0x58024400 + 802b34c: bf00 nop + 802b34e: 370c adds r7, #12 + 802b350: 46bd mov sp, r7 + 802b352: f85d 7b04 ldr.w r7, [sp], #4 + 802b356: 4770 bx lr + 802b358: 58024400 .word 0x58024400 -0802b31c : +0802b35c : /******************************************************************************/ /** * @brief This function handles Non maskable interrupt. */ void NMI_Handler(void) { - 802b31c: b580 push {r7, lr} - 802b31e: af00 add r7, sp, #0 + 802b35c: b580 push {r7, lr} + 802b35e: af00 add r7, sp, #0 /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ /* USER CODE END NonMaskableInt_IRQn 0 */ HAL_RCC_NMI_IRQHandler(); - 802b320: f00a ffe2 bl 80362e8 + 802b360: f00a ffe2 bl 8036328 /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ while (1) - 802b324: e7fe b.n 802b324 + 802b364: e7fe b.n 802b364 -0802b326 : +0802b366 : /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { - 802b326: b480 push {r7} - 802b328: af00 add r7, sp, #0 + 802b366: b480 push {r7} + 802b368: af00 add r7, sp, #0 /* USER CODE END HardFault_IRQn 0 */ while (1) - 802b32a: e7fe b.n 802b32a + 802b36a: e7fe b.n 802b36a -0802b32c : +0802b36c : /** * @brief This function handles Memory management fault. */ void MemManage_Handler(void) { - 802b32c: b480 push {r7} - 802b32e: af00 add r7, sp, #0 + 802b36c: b480 push {r7} + 802b36e: af00 add r7, sp, #0 /* USER CODE BEGIN MemoryManagement_IRQn 0 */ /* USER CODE END MemoryManagement_IRQn 0 */ while (1) - 802b330: e7fe b.n 802b330 + 802b370: e7fe b.n 802b370 -0802b332 : +0802b372 : /** * @brief This function handles Pre-fetch fault, memory access fault. */ void BusFault_Handler(void) { - 802b332: b480 push {r7} - 802b334: af00 add r7, sp, #0 + 802b372: b480 push {r7} + 802b374: af00 add r7, sp, #0 /* USER CODE BEGIN BusFault_IRQn 0 */ /* USER CODE END BusFault_IRQn 0 */ while (1) - 802b336: e7fe b.n 802b336 + 802b376: e7fe b.n 802b376 -0802b338 : +0802b378 : /** * @brief This function handles Undefined instruction or illegal state. */ void UsageFault_Handler(void) { - 802b338: b480 push {r7} - 802b33a: af00 add r7, sp, #0 + 802b378: b480 push {r7} + 802b37a: af00 add r7, sp, #0 /* USER CODE BEGIN UsageFault_IRQn 0 */ /* USER CODE END UsageFault_IRQn 0 */ while (1) - 802b33c: e7fe b.n 802b33c + 802b37c: e7fe b.n 802b37c -0802b33e : +0802b37e : /** * @brief This function handles System service call via SWI instruction. */ void SVC_Handler(void) { - 802b33e: b480 push {r7} - 802b340: af00 add r7, sp, #0 + 802b37e: b480 push {r7} + 802b380: af00 add r7, sp, #0 /* USER CODE END SVCall_IRQn 0 */ /* USER CODE BEGIN SVCall_IRQn 1 */ /* USER CODE END SVCall_IRQn 1 */ } - 802b342: bf00 nop - 802b344: 46bd mov sp, r7 - 802b346: f85d 7b04 ldr.w r7, [sp], #4 - 802b34a: 4770 bx lr + 802b382: bf00 nop + 802b384: 46bd mov sp, r7 + 802b386: f85d 7b04 ldr.w r7, [sp], #4 + 802b38a: 4770 bx lr -0802b34c : +0802b38c : /** * @brief This function handles Debug monitor. */ void DebugMon_Handler(void) { - 802b34c: b480 push {r7} - 802b34e: af00 add r7, sp, #0 + 802b38c: b480 push {r7} + 802b38e: af00 add r7, sp, #0 /* USER CODE END DebugMonitor_IRQn 0 */ /* USER CODE BEGIN DebugMonitor_IRQn 1 */ /* USER CODE END DebugMonitor_IRQn 1 */ } - 802b350: bf00 nop - 802b352: 46bd mov sp, r7 - 802b354: f85d 7b04 ldr.w r7, [sp], #4 - 802b358: 4770 bx lr + 802b390: bf00 nop + 802b392: 46bd mov sp, r7 + 802b394: f85d 7b04 ldr.w r7, [sp], #4 + 802b398: 4770 bx lr -0802b35a : +0802b39a : /** * @brief This function handles Pendable request for system service. */ void PendSV_Handler(void) { - 802b35a: b480 push {r7} - 802b35c: af00 add r7, sp, #0 + 802b39a: b480 push {r7} + 802b39c: af00 add r7, sp, #0 /* USER CODE END PendSV_IRQn 0 */ /* USER CODE BEGIN PendSV_IRQn 1 */ /* USER CODE END PendSV_IRQn 1 */ } - 802b35e: bf00 nop - 802b360: 46bd mov sp, r7 - 802b362: f85d 7b04 ldr.w r7, [sp], #4 - 802b366: 4770 bx lr + 802b39e: bf00 nop + 802b3a0: 46bd mov sp, r7 + 802b3a2: f85d 7b04 ldr.w r7, [sp], #4 + 802b3a6: 4770 bx lr -0802b368 : +0802b3a8 : /** * @brief This function handles System tick timer. */ void SysTick_Handler(void) { - 802b368: b580 push {r7, lr} - 802b36a: af00 add r7, sp, #0 + 802b3a8: b580 push {r7, lr} + 802b3aa: af00 add r7, sp, #0 /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); - 802b36c: f001 fdfe bl 802cf6c + 802b3ac: f001 fdfe bl 802cfac /* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */ } - 802b370: bf00 nop - 802b372: bd80 pop {r7, pc} + 802b3b0: bf00 nop + 802b3b2: bd80 pop {r7, pc} -0802b374 : +0802b3b4 : /** * @brief This function handles DMA1 stream0 global interrupt. */ void DMA1_Stream0_IRQHandler(void) { - 802b374: b580 push {r7, lr} - 802b376: af00 add r7, sp, #0 + 802b3b4: b580 push {r7, lr} + 802b3b6: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream0_IRQn 0 */ /* USER CODE END DMA1_Stream0_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_uart4_tx); - 802b378: 4802 ldr r0, [pc, #8] ; (802b384 ) - 802b37a: f004 fa99 bl 802f8b0 + 802b3b8: 4802 ldr r0, [pc, #8] ; (802b3c4 ) + 802b3ba: f004 fa99 bl 802f8f0 /* USER CODE BEGIN DMA1_Stream0_IRQn 1 */ /* USER CODE END DMA1_Stream0_IRQn 1 */ } - 802b37e: bf00 nop - 802b380: bd80 pop {r7, pc} - 802b382: bf00 nop - 802b384: 2400b69c .word 0x2400b69c + 802b3be: bf00 nop + 802b3c0: bd80 pop {r7, pc} + 802b3c2: bf00 nop + 802b3c4: 2400b69c .word 0x2400b69c -0802b388 : +0802b3c8 : /** * @brief This function handles DMA1 stream1 global interrupt. */ void DMA1_Stream1_IRQHandler(void) { - 802b388: b580 push {r7, lr} - 802b38a: af00 add r7, sp, #0 + 802b3c8: b580 push {r7, lr} + 802b3ca: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */ /* USER CODE END DMA1_Stream1_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_uart7_tx); - 802b38c: 4802 ldr r0, [pc, #8] ; (802b398 ) - 802b38e: f004 fa8f bl 802f8b0 + 802b3cc: 4802 ldr r0, [pc, #8] ; (802b3d8 ) + 802b3ce: f004 fa8f bl 802f8f0 /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */ /* USER CODE END DMA1_Stream1_IRQn 1 */ } - 802b392: bf00 nop - 802b394: bd80 pop {r7, pc} - 802b396: bf00 nop - 802b398: 2400b78c .word 0x2400b78c + 802b3d2: bf00 nop + 802b3d4: bd80 pop {r7, pc} + 802b3d6: bf00 nop + 802b3d8: 2400b78c .word 0x2400b78c -0802b39c : +0802b3dc : /** * @brief This function handles DMA1 stream2 global interrupt. */ void DMA1_Stream2_IRQHandler(void) { - 802b39c: b580 push {r7, lr} - 802b39e: af00 add r7, sp, #0 + 802b3dc: b580 push {r7, lr} + 802b3de: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */ /* USER CODE END DMA1_Stream2_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart1_tx); - 802b3a0: 4802 ldr r0, [pc, #8] ; (802b3ac ) - 802b3a2: f004 fa85 bl 802f8b0 + 802b3e0: 4802 ldr r0, [pc, #8] ; (802b3ec ) + 802b3e2: f004 fa85 bl 802f8f0 /* USER CODE BEGIN DMA1_Stream2_IRQn 1 */ /* USER CODE END DMA1_Stream2_IRQn 1 */ } - 802b3a6: bf00 nop - 802b3a8: bd80 pop {r7, pc} - 802b3aa: bf00 nop - 802b3ac: 2400b804 .word 0x2400b804 + 802b3e6: bf00 nop + 802b3e8: bd80 pop {r7, pc} + 802b3ea: bf00 nop + 802b3ec: 2400b804 .word 0x2400b804 -0802b3b0 : +0802b3f0 : /** * @brief This function handles DMA1 stream3 global interrupt. */ void DMA1_Stream3_IRQHandler(void) { - 802b3b0: b580 push {r7, lr} - 802b3b2: af00 add r7, sp, #0 + 802b3f0: b580 push {r7, lr} + 802b3f2: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */ /* USER CODE END DMA1_Stream3_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_uart5_tx); - 802b3b4: 4802 ldr r0, [pc, #8] ; (802b3c0 ) - 802b3b6: f004 fa7b bl 802f8b0 + 802b3f4: 4802 ldr r0, [pc, #8] ; (802b400 ) + 802b3f6: f004 fa7b bl 802f8f0 /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */ /* USER CODE END DMA1_Stream3_IRQn 1 */ } - 802b3ba: bf00 nop - 802b3bc: bd80 pop {r7, pc} - 802b3be: bf00 nop - 802b3c0: 2400b714 .word 0x2400b714 + 802b3fa: bf00 nop + 802b3fc: bd80 pop {r7, pc} + 802b3fe: bf00 nop + 802b400: 2400b714 .word 0x2400b714 -0802b3c4 : +0802b404 : /** * @brief This function handles DMA1 stream5 global interrupt. */ void DMA1_Stream5_IRQHandler(void) { - 802b3c4: b580 push {r7, lr} - 802b3c6: af00 add r7, sp, #0 + 802b404: b580 push {r7, lr} + 802b406: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream5_IRQn 0 */ /* USER CODE END DMA1_Stream5_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart2_tx); - 802b3c8: 4802 ldr r0, [pc, #8] ; (802b3d4 ) - 802b3ca: f004 fa71 bl 802f8b0 + 802b408: 4802 ldr r0, [pc, #8] ; (802b414 ) + 802b40a: f004 fa71 bl 802f8f0 /* USER CODE BEGIN DMA1_Stream5_IRQn 1 */ /* USER CODE END DMA1_Stream5_IRQn 1 */ } - 802b3ce: bf00 nop - 802b3d0: bd80 pop {r7, pc} - 802b3d2: bf00 nop - 802b3d4: 2400b87c .word 0x2400b87c + 802b40e: bf00 nop + 802b410: bd80 pop {r7, pc} + 802b412: bf00 nop + 802b414: 2400b87c .word 0x2400b87c -0802b3d8 : +0802b418 : /** * @brief This function handles DMA1 stream6 global interrupt. */ void DMA1_Stream6_IRQHandler(void) { - 802b3d8: b580 push {r7, lr} - 802b3da: af00 add r7, sp, #0 + 802b418: b580 push {r7, lr} + 802b41a: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream6_IRQn 0 */ /* USER CODE END DMA1_Stream6_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart3_tx); - 802b3dc: 4802 ldr r0, [pc, #8] ; (802b3e8 ) - 802b3de: f004 fa67 bl 802f8b0 + 802b41c: 4802 ldr r0, [pc, #8] ; (802b428 ) + 802b41e: f004 fa67 bl 802f8f0 /* USER CODE BEGIN DMA1_Stream6_IRQn 1 */ /* USER CODE END DMA1_Stream6_IRQn 1 */ } - 802b3e2: bf00 nop - 802b3e4: bd80 pop {r7, pc} - 802b3e6: bf00 nop - 802b3e8: 2400b8f4 .word 0x2400b8f4 + 802b422: bf00 nop + 802b424: bd80 pop {r7, pc} + 802b426: bf00 nop + 802b428: 2400b8f4 .word 0x2400b8f4 -0802b3ec : +0802b42c : /** * @brief This function handles FDCAN1 interrupt 0. */ void FDCAN1_IT0_IRQHandler(void) { - 802b3ec: b580 push {r7, lr} - 802b3ee: af00 add r7, sp, #0 + 802b42c: b580 push {r7, lr} + 802b42e: af00 add r7, sp, #0 /* USER CODE BEGIN FDCAN1_IT0_IRQn 0 */ /* USER CODE END FDCAN1_IT0_IRQn 0 */ HAL_FDCAN_IRQHandler(&hfdcan1); - 802b3f0: 4802 ldr r0, [pc, #8] ; (802b3fc ) - 802b3f2: f007 fdd5 bl 8032fa0 + 802b430: 4802 ldr r0, [pc, #8] ; (802b43c ) + 802b432: f007 fdd5 bl 8032fe0 /* USER CODE BEGIN FDCAN1_IT0_IRQn 1 */ /* USER CODE END FDCAN1_IT0_IRQn 1 */ } - 802b3f6: bf00 nop - 802b3f8: bd80 pop {r7, pc} - 802b3fa: bf00 nop - 802b3fc: 2400af54 .word 0x2400af54 + 802b436: bf00 nop + 802b438: bd80 pop {r7, pc} + 802b43a: bf00 nop + 802b43c: 2400af54 .word 0x2400af54 -0802b400 : +0802b440 : /** * @brief This function handles FDCAN2 interrupt 0. */ void FDCAN2_IT0_IRQHandler(void) { - 802b400: b580 push {r7, lr} - 802b402: af00 add r7, sp, #0 + 802b440: b580 push {r7, lr} + 802b442: af00 add r7, sp, #0 /* USER CODE BEGIN FDCAN2_IT0_IRQn 0 */ /* USER CODE END FDCAN2_IT0_IRQn 0 */ HAL_FDCAN_IRQHandler(&hfdcan2); - 802b404: 4802 ldr r0, [pc, #8] ; (802b410 ) - 802b406: f007 fdcb bl 8032fa0 + 802b444: 4802 ldr r0, [pc, #8] ; (802b450 ) + 802b446: f007 fdcb bl 8032fe0 /* USER CODE BEGIN FDCAN2_IT0_IRQn 1 */ /* USER CODE END FDCAN2_IT0_IRQn 1 */ } - 802b40a: bf00 nop - 802b40c: bd80 pop {r7, pc} - 802b40e: bf00 nop - 802b410: 2400aff4 .word 0x2400aff4 + 802b44a: bf00 nop + 802b44c: bd80 pop {r7, pc} + 802b44e: bf00 nop + 802b450: 2400aff4 .word 0x2400aff4 -0802b414 : +0802b454 : /** * @brief This function handles TIM1 update interrupt. */ void TIM1_UP_IRQHandler(void) { - 802b414: b580 push {r7, lr} - 802b416: af00 add r7, sp, #0 + 802b454: b580 push {r7, lr} + 802b456: af00 add r7, sp, #0 /* USER CODE BEGIN TIM1_UP_IRQn 0 */ /* USER CODE END TIM1_UP_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); - 802b418: 4802 ldr r0, [pc, #8] ; (802b424 ) - 802b41a: f00d fb4d bl 8038ab8 + 802b458: 4802 ldr r0, [pc, #8] ; (802b464 ) + 802b45a: f00d fb4d bl 8038af8 /* USER CODE BEGIN TIM1_UP_IRQn 1 */ /* USER CODE END TIM1_UP_IRQn 1 */ } - 802b41e: bf00 nop - 802b420: bd80 pop {r7, pc} - 802b422: bf00 nop - 802b424: 2400b138 .word 0x2400b138 + 802b45e: bf00 nop + 802b460: bd80 pop {r7, pc} + 802b462: bf00 nop + 802b464: 2400b138 .word 0x2400b138 -0802b428 : +0802b468 : /** * @brief This function handles USART1 global interrupt. */ void USART1_IRQHandler(void) { - 802b428: b580 push {r7, lr} - 802b42a: af00 add r7, sp, #0 + 802b468: b580 push {r7, lr} + 802b46a: af00 add r7, sp, #0 /* USER CODE BEGIN USART1_IRQn 0 */ /* USER CODE END USART1_IRQn 0 */ HAL_UART_IRQHandler(&huart1); - 802b42c: 4802 ldr r0, [pc, #8] ; (802b438 ) - 802b42e: f00e fd45 bl 8039ebc + 802b46c: 4802 ldr r0, [pc, #8] ; (802b478 ) + 802b46e: f00e fd45 bl 8039efc /* USER CODE BEGIN USART1_IRQn 1 */ /* USER CODE END USART1_IRQn 1 */ } - 802b432: bf00 nop - 802b434: bd80 pop {r7, pc} - 802b436: bf00 nop - 802b438: 2400b45c .word 0x2400b45c + 802b472: bf00 nop + 802b474: bd80 pop {r7, pc} + 802b476: bf00 nop + 802b478: 2400b45c .word 0x2400b45c -0802b43c : +0802b47c : /** * @brief This function handles USART2 global interrupt. */ void USART2_IRQHandler(void) { - 802b43c: b580 push {r7, lr} - 802b43e: af00 add r7, sp, #0 + 802b47c: b580 push {r7, lr} + 802b47e: af00 add r7, sp, #0 /* USER CODE BEGIN USART2_IRQn 0 */ /* USER CODE END USART2_IRQn 0 */ HAL_UART_IRQHandler(&huart2); - 802b440: 4802 ldr r0, [pc, #8] ; (802b44c ) - 802b442: f00e fd3b bl 8039ebc + 802b480: 4802 ldr r0, [pc, #8] ; (802b48c ) + 802b482: f00e fd3b bl 8039efc /* USER CODE BEGIN USART2_IRQn 1 */ /* USER CODE END USART2_IRQn 1 */ } - 802b446: bf00 nop - 802b448: bd80 pop {r7, pc} - 802b44a: bf00 nop - 802b44c: 2400b4ec .word 0x2400b4ec + 802b486: bf00 nop + 802b488: bd80 pop {r7, pc} + 802b48a: bf00 nop + 802b48c: 2400b4ec .word 0x2400b4ec -0802b450 : +0802b490 : /** * @brief This function handles USART3 global interrupt. */ void USART3_IRQHandler(void) { - 802b450: b580 push {r7, lr} - 802b452: af00 add r7, sp, #0 + 802b490: b580 push {r7, lr} + 802b492: af00 add r7, sp, #0 /* USER CODE BEGIN USART3_IRQn 0 */ /* USER CODE END USART3_IRQn 0 */ HAL_UART_IRQHandler(&huart3); - 802b454: 4802 ldr r0, [pc, #8] ; (802b460 ) - 802b456: f00e fd31 bl 8039ebc + 802b494: 4802 ldr r0, [pc, #8] ; (802b4a0 ) + 802b496: f00e fd31 bl 8039efc /* USER CODE BEGIN USART3_IRQn 1 */ /* USER CODE END USART3_IRQn 1 */ } - 802b45a: bf00 nop - 802b45c: bd80 pop {r7, pc} - 802b45e: bf00 nop - 802b460: 2400b57c .word 0x2400b57c + 802b49a: bf00 nop + 802b49c: bd80 pop {r7, pc} + 802b49e: bf00 nop + 802b4a0: 2400b57c .word 0x2400b57c -0802b464 : +0802b4a4 : /** * @brief This function handles TIM8 update interrupt and TIM13 global interrupt. */ void TIM8_UP_TIM13_IRQHandler(void) { - 802b464: b580 push {r7, lr} - 802b466: af00 add r7, sp, #0 + 802b4a4: b580 push {r7, lr} + 802b4a6: af00 add r7, sp, #0 /* USER CODE BEGIN TIM8_UP_TIM13_IRQn 0 */ /* USER CODE END TIM8_UP_TIM13_IRQn 0 */ HAL_TIM_IRQHandler(&htim8); - 802b468: 4802 ldr r0, [pc, #8] ; (802b474 ) - 802b46a: f00d fb25 bl 8038ab8 + 802b4a8: 4802 ldr r0, [pc, #8] ; (802b4b4 ) + 802b4aa: f00d fb25 bl 8038af8 /* USER CODE BEGIN TIM8_UP_TIM13_IRQn 1 */ /* USER CODE END TIM8_UP_TIM13_IRQn 1 */ } - 802b46e: bf00 nop - 802b470: bd80 pop {r7, pc} - 802b472: bf00 nop - 802b474: 2400b1d0 .word 0x2400b1d0 + 802b4ae: bf00 nop + 802b4b0: bd80 pop {r7, pc} + 802b4b2: bf00 nop + 802b4b4: 2400b1d0 .word 0x2400b1d0 -0802b478 : +0802b4b8 : /** * @brief This function handles DMA1 stream7 global interrupt. */ void DMA1_Stream7_IRQHandler(void) { - 802b478: b580 push {r7, lr} - 802b47a: af00 add r7, sp, #0 + 802b4b8: b580 push {r7, lr} + 802b4ba: af00 add r7, sp, #0 /* USER CODE BEGIN DMA1_Stream7_IRQn 0 */ /* USER CODE END DMA1_Stream7_IRQn 0 */ HAL_DMA_IRQHandler(&hdma_usart6_tx); - 802b47c: 4802 ldr r0, [pc, #8] ; (802b488 ) - 802b47e: f004 fa17 bl 802f8b0 + 802b4bc: 4802 ldr r0, [pc, #8] ; (802b4c8 ) + 802b4be: f004 fa17 bl 802f8f0 /* USER CODE BEGIN DMA1_Stream7_IRQn 1 */ /* USER CODE END DMA1_Stream7_IRQn 1 */ } - 802b482: bf00 nop - 802b484: bd80 pop {r7, pc} - 802b486: bf00 nop - 802b488: 2400b96c .word 0x2400b96c + 802b4c2: bf00 nop + 802b4c4: bd80 pop {r7, pc} + 802b4c6: bf00 nop + 802b4c8: 2400b96c .word 0x2400b96c -0802b48c : +0802b4cc : /** * @brief This function handles UART4 global interrupt. */ void UART4_IRQHandler(void) { - 802b48c: b580 push {r7, lr} - 802b48e: af00 add r7, sp, #0 + 802b4cc: b580 push {r7, lr} + 802b4ce: af00 add r7, sp, #0 /* USER CODE BEGIN UART4_IRQn 0 */ /* USER CODE END UART4_IRQn 0 */ HAL_UART_IRQHandler(&huart4); - 802b490: 4802 ldr r0, [pc, #8] ; (802b49c ) - 802b492: f00e fd13 bl 8039ebc + 802b4d0: 4802 ldr r0, [pc, #8] ; (802b4dc ) + 802b4d2: f00e fd13 bl 8039efc /* USER CODE BEGIN UART4_IRQn 1 */ /* USER CODE END UART4_IRQn 1 */ } - 802b496: bf00 nop - 802b498: bd80 pop {r7, pc} - 802b49a: bf00 nop - 802b49c: 2400b2ac .word 0x2400b2ac + 802b4d6: bf00 nop + 802b4d8: bd80 pop {r7, pc} + 802b4da: bf00 nop + 802b4dc: 2400b2ac .word 0x2400b2ac -0802b4a0 : +0802b4e0 : /** * @brief This function handles UART5 global interrupt. */ void UART5_IRQHandler(void) { - 802b4a0: b580 push {r7, lr} - 802b4a2: af00 add r7, sp, #0 + 802b4e0: b580 push {r7, lr} + 802b4e2: af00 add r7, sp, #0 /* USER CODE BEGIN UART5_IRQn 0 */ /* USER CODE END UART5_IRQn 0 */ HAL_UART_IRQHandler(&huart5); - 802b4a4: 4802 ldr r0, [pc, #8] ; (802b4b0 ) - 802b4a6: f00e fd09 bl 8039ebc + 802b4e4: 4802 ldr r0, [pc, #8] ; (802b4f0 ) + 802b4e6: f00e fd09 bl 8039efc /* USER CODE BEGIN UART5_IRQn 1 */ /* USER CODE END UART5_IRQn 1 */ } - 802b4aa: bf00 nop - 802b4ac: bd80 pop {r7, pc} - 802b4ae: bf00 nop - 802b4b0: 2400b33c .word 0x2400b33c + 802b4ea: bf00 nop + 802b4ec: bd80 pop {r7, pc} + 802b4ee: bf00 nop + 802b4f0: 2400b33c .word 0x2400b33c -0802b4b4 : +0802b4f4 : /** * @brief This function handles Ethernet global interrupt. */ void ETH_IRQHandler(void) { - 802b4b4: b580 push {r7, lr} - 802b4b6: af00 add r7, sp, #0 + 802b4f4: b580 push {r7, lr} + 802b4f6: af00 add r7, sp, #0 /* USER CODE BEGIN ETH_IRQn 0 */ /* USER CODE END ETH_IRQn 0 */ HAL_ETH_IRQHandler(&heth); - 802b4b8: 4802 ldr r0, [pc, #8] ; (802b4c4 ) - 802b4ba: f006 f877 bl 80315ac + 802b4f8: 4802 ldr r0, [pc, #8] ; (802b504 ) + 802b4fa: f006 f877 bl 80315ec /* USER CODE BEGIN ETH_IRQn 1 */ /* USER CODE END ETH_IRQn 1 */ } - 802b4be: bf00 nop - 802b4c0: bd80 pop {r7, pc} - 802b4c2: bf00 nop - 802b4c4: 2400ba44 .word 0x2400ba44 + 802b4fe: bf00 nop + 802b500: bd80 pop {r7, pc} + 802b502: bf00 nop + 802b504: 2400ba44 .word 0x2400ba44 -0802b4c8 : +0802b508 : /** * @brief This function handles Ethernet wake-up interrupt through EXTI line 86. */ void ETH_WKUP_IRQHandler(void) { - 802b4c8: b580 push {r7, lr} - 802b4ca: af00 add r7, sp, #0 + 802b508: b580 push {r7, lr} + 802b50a: af00 add r7, sp, #0 /* USER CODE BEGIN ETH_WKUP_IRQn 0 */ /* USER CODE END ETH_WKUP_IRQn 0 */ HAL_ETH_IRQHandler(&heth); - 802b4cc: 4802 ldr r0, [pc, #8] ; (802b4d8 ) - 802b4ce: f006 f86d bl 80315ac + 802b50c: 4802 ldr r0, [pc, #8] ; (802b518 ) + 802b50e: f006 f86d bl 80315ec /* USER CODE BEGIN ETH_WKUP_IRQn 1 */ /* USER CODE END ETH_WKUP_IRQn 1 */ } - 802b4d2: bf00 nop - 802b4d4: bd80 pop {r7, pc} - 802b4d6: bf00 nop - 802b4d8: 2400ba44 .word 0x2400ba44 + 802b512: bf00 nop + 802b514: bd80 pop {r7, pc} + 802b516: bf00 nop + 802b518: 2400ba44 .word 0x2400ba44 -0802b4dc : +0802b51c : /** * @brief This function handles USART6 global interrupt. */ void USART6_IRQHandler(void) { - 802b4dc: b580 push {r7, lr} - 802b4de: af00 add r7, sp, #0 + 802b51c: b580 push {r7, lr} + 802b51e: af00 add r7, sp, #0 /* USER CODE BEGIN USART6_IRQn 0 */ /* USER CODE END USART6_IRQn 0 */ HAL_UART_IRQHandler(&huart6); - 802b4e0: 4802 ldr r0, [pc, #8] ; (802b4ec ) - 802b4e2: f00e fceb bl 8039ebc + 802b520: 4802 ldr r0, [pc, #8] ; (802b52c ) + 802b522: f00e fceb bl 8039efc /* USER CODE BEGIN USART6_IRQn 1 */ /* USER CODE END USART6_IRQn 1 */ } - 802b4e6: bf00 nop - 802b4e8: bd80 pop {r7, pc} - 802b4ea: bf00 nop - 802b4ec: 2400b60c .word 0x2400b60c + 802b526: bf00 nop + 802b528: bd80 pop {r7, pc} + 802b52a: bf00 nop + 802b52c: 2400b60c .word 0x2400b60c -0802b4f0 : +0802b530 : /** * @brief This function handles UART7 global interrupt. */ void UART7_IRQHandler(void) { - 802b4f0: b580 push {r7, lr} - 802b4f2: af00 add r7, sp, #0 + 802b530: b580 push {r7, lr} + 802b532: af00 add r7, sp, #0 /* USER CODE BEGIN UART7_IRQn 0 */ /* USER CODE END UART7_IRQn 0 */ HAL_UART_IRQHandler(&huart7); - 802b4f4: 4802 ldr r0, [pc, #8] ; (802b500 ) - 802b4f6: f00e fce1 bl 8039ebc + 802b534: 4802 ldr r0, [pc, #8] ; (802b540 ) + 802b536: f00e fce1 bl 8039efc /* USER CODE BEGIN UART7_IRQn 1 */ /* USER CODE END UART7_IRQn 1 */ } - 802b4fa: bf00 nop - 802b4fc: bd80 pop {r7, pc} - 802b4fe: bf00 nop - 802b500: 2400b3cc .word 0x2400b3cc + 802b53a: bf00 nop + 802b53c: bd80 pop {r7, pc} + 802b53e: bf00 nop + 802b540: 2400b3cc .word 0x2400b3cc -0802b504 : +0802b544 : /** * @brief This function handles I2C4 event interrupt. */ void I2C4_EV_IRQHandler(void) { - 802b504: b580 push {r7, lr} - 802b506: af00 add r7, sp, #0 + 802b544: b580 push {r7, lr} + 802b546: af00 add r7, sp, #0 /* USER CODE BEGIN I2C4_EV_IRQn 0 */ /* USER CODE END I2C4_EV_IRQn 0 */ HAL_I2C_EV_IRQHandler(&hi2c4); - 802b508: 4802 ldr r0, [pc, #8] ; (802b514 ) - 802b50a: f008 fc27 bl 8033d5c + 802b548: 4802 ldr r0, [pc, #8] ; (802b554 ) + 802b54a: f008 fc27 bl 8033d9c /* USER CODE BEGIN I2C4_EV_IRQn 1 */ /* USER CODE END I2C4_EV_IRQn 1 */ } - 802b50e: bf00 nop - 802b510: bd80 pop {r7, pc} - 802b512: bf00 nop - 802b514: 2400b098 .word 0x2400b098 + 802b54e: bf00 nop + 802b550: bd80 pop {r7, pc} + 802b552: bf00 nop + 802b554: 2400b098 .word 0x2400b098 -0802b518 : +0802b558 : /** * @brief This function handles I2C4 error interrupt. */ void I2C4_ER_IRQHandler(void) { - 802b518: b580 push {r7, lr} - 802b51a: af00 add r7, sp, #0 + 802b558: b580 push {r7, lr} + 802b55a: af00 add r7, sp, #0 /* USER CODE BEGIN I2C4_ER_IRQn 0 */ /* USER CODE END I2C4_ER_IRQn 0 */ HAL_I2C_ER_IRQHandler(&hi2c4); - 802b51c: 4802 ldr r0, [pc, #8] ; (802b528 ) - 802b51e: f008 fc37 bl 8033d90 + 802b55c: 4802 ldr r0, [pc, #8] ; (802b568 ) + 802b55e: f008 fc37 bl 8033dd0 /* USER CODE BEGIN I2C4_ER_IRQn 1 */ /* USER CODE END I2C4_ER_IRQn 1 */ } - 802b522: bf00 nop - 802b524: bd80 pop {r7, pc} - 802b526: bf00 nop - 802b528: 2400b098 .word 0x2400b098 + 802b562: bf00 nop + 802b564: bd80 pop {r7, pc} + 802b566: bf00 nop + 802b568: 2400b098 .word 0x2400b098 -0802b52c : +0802b56c : /** * @brief This function handles LPUART1 global interrupt. */ void LPUART1_IRQHandler(void) { - 802b52c: b580 push {r7, lr} - 802b52e: af00 add r7, sp, #0 + 802b56c: b580 push {r7, lr} + 802b56e: af00 add r7, sp, #0 /* USER CODE BEGIN LPUART1_IRQn 0 */ /* USER CODE END LPUART1_IRQn 0 */ HAL_UART_IRQHandler(&hlpuart1); - 802b530: 4802 ldr r0, [pc, #8] ; (802b53c ) - 802b532: f00e fcc3 bl 8039ebc + 802b570: 4802 ldr r0, [pc, #8] ; (802b57c ) + 802b572: f00e fcc3 bl 8039efc /* USER CODE BEGIN LPUART1_IRQn 1 */ /* USER CODE END LPUART1_IRQn 1 */ } - 802b536: bf00 nop - 802b538: bd80 pop {r7, pc} - 802b53a: bf00 nop - 802b53c: 2400b21c .word 0x2400b21c + 802b576: bf00 nop + 802b578: bd80 pop {r7, pc} + 802b57a: bf00 nop + 802b57c: 2400b21c .word 0x2400b21c -0802b540 <_getpid>: +0802b580 <_getpid>: void initialise_monitor_handles() { } int _getpid(void) { - 802b540: b480 push {r7} - 802b542: af00 add r7, sp, #0 + 802b580: b480 push {r7} + 802b582: af00 add r7, sp, #0 return 1; - 802b544: 2301 movs r3, #1 + 802b584: 2301 movs r3, #1 } - 802b546: 4618 mov r0, r3 - 802b548: 46bd mov sp, r7 - 802b54a: f85d 7b04 ldr.w r7, [sp], #4 - 802b54e: 4770 bx lr + 802b586: 4618 mov r0, r3 + 802b588: 46bd mov sp, r7 + 802b58a: f85d 7b04 ldr.w r7, [sp], #4 + 802b58e: 4770 bx lr -0802b550 <_kill>: +0802b590 <_kill>: int _kill(int pid, int sig) { - 802b550: b480 push {r7} - 802b552: b083 sub sp, #12 - 802b554: af00 add r7, sp, #0 - 802b556: 6078 str r0, [r7, #4] - 802b558: 6039 str r1, [r7, #0] + 802b590: b480 push {r7} + 802b592: b083 sub sp, #12 + 802b594: af00 add r7, sp, #0 + 802b596: 6078 str r0, [r7, #4] + 802b598: 6039 str r1, [r7, #0] errno = EINVAL; - 802b55a: 4b05 ldr r3, [pc, #20] ; (802b570 <_kill+0x20>) - 802b55c: 2216 movs r2, #22 - 802b55e: 601a str r2, [r3, #0] + 802b59a: 4b05 ldr r3, [pc, #20] ; (802b5b0 <_kill+0x20>) + 802b59c: 2216 movs r2, #22 + 802b59e: 601a str r2, [r3, #0] return -1; - 802b560: f04f 33ff mov.w r3, #4294967295 + 802b5a0: f04f 33ff mov.w r3, #4294967295 } - 802b564: 4618 mov r0, r3 - 802b566: 370c adds r7, #12 - 802b568: 46bd mov sp, r7 - 802b56a: f85d 7b04 ldr.w r7, [sp], #4 - 802b56e: 4770 bx lr - 802b570: 2400ec4c .word 0x2400ec4c + 802b5a4: 4618 mov r0, r3 + 802b5a6: 370c adds r7, #12 + 802b5a8: 46bd mov sp, r7 + 802b5aa: f85d 7b04 ldr.w r7, [sp], #4 + 802b5ae: 4770 bx lr + 802b5b0: 2400ec4c .word 0x2400ec4c -0802b574 <_exit>: +0802b5b4 <_exit>: void _exit (int status) { - 802b574: b580 push {r7, lr} - 802b576: b082 sub sp, #8 - 802b578: af00 add r7, sp, #0 - 802b57a: 6078 str r0, [r7, #4] + 802b5b4: b580 push {r7, lr} + 802b5b6: b082 sub sp, #8 + 802b5b8: af00 add r7, sp, #0 + 802b5ba: 6078 str r0, [r7, #4] _kill(status, -1); - 802b57c: f04f 31ff mov.w r1, #4294967295 - 802b580: 6878 ldr r0, [r7, #4] - 802b582: f7ff ffe5 bl 802b550 <_kill> + 802b5bc: f04f 31ff mov.w r1, #4294967295 + 802b5c0: 6878 ldr r0, [r7, #4] + 802b5c2: f7ff ffe5 bl 802b590 <_kill> while (1) {} /* Make sure we hang here */ - 802b586: e7fe b.n 802b586 <_exit+0x12> + 802b5c6: e7fe b.n 802b5c6 <_exit+0x12> -0802b588 <_read>: +0802b5c8 <_read>: } __attribute__((weak)) int _read(int file, char *ptr, int len) { - 802b588: b580 push {r7, lr} - 802b58a: b086 sub sp, #24 - 802b58c: af00 add r7, sp, #0 - 802b58e: 60f8 str r0, [r7, #12] - 802b590: 60b9 str r1, [r7, #8] - 802b592: 607a str r2, [r7, #4] + 802b5c8: b580 push {r7, lr} + 802b5ca: b086 sub sp, #24 + 802b5cc: af00 add r7, sp, #0 + 802b5ce: 60f8 str r0, [r7, #12] + 802b5d0: 60b9 str r1, [r7, #8] + 802b5d2: 607a str r2, [r7, #4] int DataIdx; for (DataIdx = 0; DataIdx < len; DataIdx++) - 802b594: 2300 movs r3, #0 - 802b596: 617b str r3, [r7, #20] - 802b598: e00a b.n 802b5b0 <_read+0x28> + 802b5d4: 2300 movs r3, #0 + 802b5d6: 617b str r3, [r7, #20] + 802b5d8: e00a b.n 802b5f0 <_read+0x28> { *ptr++ = __io_getchar(); - 802b59a: f3af 8000 nop.w - 802b59e: 4601 mov r1, r0 - 802b5a0: 68bb ldr r3, [r7, #8] - 802b5a2: 1c5a adds r2, r3, #1 - 802b5a4: 60ba str r2, [r7, #8] - 802b5a6: b2ca uxtb r2, r1 - 802b5a8: 701a strb r2, [r3, #0] + 802b5da: f3af 8000 nop.w + 802b5de: 4601 mov r1, r0 + 802b5e0: 68bb ldr r3, [r7, #8] + 802b5e2: 1c5a adds r2, r3, #1 + 802b5e4: 60ba str r2, [r7, #8] + 802b5e6: b2ca uxtb r2, r1 + 802b5e8: 701a strb r2, [r3, #0] for (DataIdx = 0; DataIdx < len; DataIdx++) - 802b5aa: 697b ldr r3, [r7, #20] - 802b5ac: 3301 adds r3, #1 - 802b5ae: 617b str r3, [r7, #20] - 802b5b0: 697a ldr r2, [r7, #20] - 802b5b2: 687b ldr r3, [r7, #4] - 802b5b4: 429a cmp r2, r3 - 802b5b6: dbf0 blt.n 802b59a <_read+0x12> + 802b5ea: 697b ldr r3, [r7, #20] + 802b5ec: 3301 adds r3, #1 + 802b5ee: 617b str r3, [r7, #20] + 802b5f0: 697a ldr r2, [r7, #20] + 802b5f2: 687b ldr r3, [r7, #4] + 802b5f4: 429a cmp r2, r3 + 802b5f6: dbf0 blt.n 802b5da <_read+0x12> } return len; - 802b5b8: 687b ldr r3, [r7, #4] + 802b5f8: 687b ldr r3, [r7, #4] } - 802b5ba: 4618 mov r0, r3 - 802b5bc: 3718 adds r7, #24 - 802b5be: 46bd mov sp, r7 - 802b5c0: bd80 pop {r7, pc} + 802b5fa: 4618 mov r0, r3 + 802b5fc: 3718 adds r7, #24 + 802b5fe: 46bd mov sp, r7 + 802b600: bd80 pop {r7, pc} -0802b5c2 <_write>: +0802b602 <_write>: __attribute__((weak)) int _write(int file, char *ptr, int len) { - 802b5c2: b580 push {r7, lr} - 802b5c4: b086 sub sp, #24 - 802b5c6: af00 add r7, sp, #0 - 802b5c8: 60f8 str r0, [r7, #12] - 802b5ca: 60b9 str r1, [r7, #8] - 802b5cc: 607a str r2, [r7, #4] + 802b602: b580 push {r7, lr} + 802b604: b086 sub sp, #24 + 802b606: af00 add r7, sp, #0 + 802b608: 60f8 str r0, [r7, #12] + 802b60a: 60b9 str r1, [r7, #8] + 802b60c: 607a str r2, [r7, #4] int DataIdx; for (DataIdx = 0; DataIdx < len; DataIdx++) - 802b5ce: 2300 movs r3, #0 - 802b5d0: 617b str r3, [r7, #20] - 802b5d2: e009 b.n 802b5e8 <_write+0x26> + 802b60e: 2300 movs r3, #0 + 802b610: 617b str r3, [r7, #20] + 802b612: e009 b.n 802b628 <_write+0x26> { __io_putchar(*ptr++); - 802b5d4: 68bb ldr r3, [r7, #8] - 802b5d6: 1c5a adds r2, r3, #1 - 802b5d8: 60ba str r2, [r7, #8] - 802b5da: 781b ldrb r3, [r3, #0] - 802b5dc: 4618 mov r0, r3 - 802b5de: f3af 8000 nop.w + 802b614: 68bb ldr r3, [r7, #8] + 802b616: 1c5a adds r2, r3, #1 + 802b618: 60ba str r2, [r7, #8] + 802b61a: 781b ldrb r3, [r3, #0] + 802b61c: 4618 mov r0, r3 + 802b61e: f3af 8000 nop.w for (DataIdx = 0; DataIdx < len; DataIdx++) - 802b5e2: 697b ldr r3, [r7, #20] - 802b5e4: 3301 adds r3, #1 - 802b5e6: 617b str r3, [r7, #20] - 802b5e8: 697a ldr r2, [r7, #20] - 802b5ea: 687b ldr r3, [r7, #4] - 802b5ec: 429a cmp r2, r3 - 802b5ee: dbf1 blt.n 802b5d4 <_write+0x12> + 802b622: 697b ldr r3, [r7, #20] + 802b624: 3301 adds r3, #1 + 802b626: 617b str r3, [r7, #20] + 802b628: 697a ldr r2, [r7, #20] + 802b62a: 687b ldr r3, [r7, #4] + 802b62c: 429a cmp r2, r3 + 802b62e: dbf1 blt.n 802b614 <_write+0x12> } return len; - 802b5f0: 687b ldr r3, [r7, #4] + 802b630: 687b ldr r3, [r7, #4] } - 802b5f2: 4618 mov r0, r3 - 802b5f4: 3718 adds r7, #24 - 802b5f6: 46bd mov sp, r7 - 802b5f8: bd80 pop {r7, pc} + 802b632: 4618 mov r0, r3 + 802b634: 3718 adds r7, #24 + 802b636: 46bd mov sp, r7 + 802b638: bd80 pop {r7, pc} -0802b5fa <_close>: +0802b63a <_close>: int _close(int file) { - 802b5fa: b480 push {r7} - 802b5fc: b083 sub sp, #12 - 802b5fe: af00 add r7, sp, #0 - 802b600: 6078 str r0, [r7, #4] + 802b63a: b480 push {r7} + 802b63c: b083 sub sp, #12 + 802b63e: af00 add r7, sp, #0 + 802b640: 6078 str r0, [r7, #4] return -1; - 802b602: f04f 33ff mov.w r3, #4294967295 + 802b642: f04f 33ff mov.w r3, #4294967295 } - 802b606: 4618 mov r0, r3 - 802b608: 370c adds r7, #12 - 802b60a: 46bd mov sp, r7 - 802b60c: f85d 7b04 ldr.w r7, [sp], #4 - 802b610: 4770 bx lr + 802b646: 4618 mov r0, r3 + 802b648: 370c adds r7, #12 + 802b64a: 46bd mov sp, r7 + 802b64c: f85d 7b04 ldr.w r7, [sp], #4 + 802b650: 4770 bx lr -0802b612 <_fstat>: +0802b652 <_fstat>: int _fstat(int file, struct stat *st) { - 802b612: b480 push {r7} - 802b614: b083 sub sp, #12 - 802b616: af00 add r7, sp, #0 - 802b618: 6078 str r0, [r7, #4] - 802b61a: 6039 str r1, [r7, #0] + 802b652: b480 push {r7} + 802b654: b083 sub sp, #12 + 802b656: af00 add r7, sp, #0 + 802b658: 6078 str r0, [r7, #4] + 802b65a: 6039 str r1, [r7, #0] st->st_mode = S_IFCHR; - 802b61c: 683b ldr r3, [r7, #0] - 802b61e: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802b622: 605a str r2, [r3, #4] + 802b65c: 683b ldr r3, [r7, #0] + 802b65e: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802b662: 605a str r2, [r3, #4] return 0; - 802b624: 2300 movs r3, #0 + 802b664: 2300 movs r3, #0 } - 802b626: 4618 mov r0, r3 - 802b628: 370c adds r7, #12 - 802b62a: 46bd mov sp, r7 - 802b62c: f85d 7b04 ldr.w r7, [sp], #4 - 802b630: 4770 bx lr + 802b666: 4618 mov r0, r3 + 802b668: 370c adds r7, #12 + 802b66a: 46bd mov sp, r7 + 802b66c: f85d 7b04 ldr.w r7, [sp], #4 + 802b670: 4770 bx lr -0802b632 <_isatty>: +0802b672 <_isatty>: int _isatty(int file) { - 802b632: b480 push {r7} - 802b634: b083 sub sp, #12 - 802b636: af00 add r7, sp, #0 - 802b638: 6078 str r0, [r7, #4] + 802b672: b480 push {r7} + 802b674: b083 sub sp, #12 + 802b676: af00 add r7, sp, #0 + 802b678: 6078 str r0, [r7, #4] return 1; - 802b63a: 2301 movs r3, #1 + 802b67a: 2301 movs r3, #1 } - 802b63c: 4618 mov r0, r3 - 802b63e: 370c adds r7, #12 - 802b640: 46bd mov sp, r7 - 802b642: f85d 7b04 ldr.w r7, [sp], #4 - 802b646: 4770 bx lr + 802b67c: 4618 mov r0, r3 + 802b67e: 370c adds r7, #12 + 802b680: 46bd mov sp, r7 + 802b682: f85d 7b04 ldr.w r7, [sp], #4 + 802b686: 4770 bx lr -0802b648 <_lseek>: +0802b688 <_lseek>: int _lseek(int file, int ptr, int dir) { - 802b648: b480 push {r7} - 802b64a: b085 sub sp, #20 - 802b64c: af00 add r7, sp, #0 - 802b64e: 60f8 str r0, [r7, #12] - 802b650: 60b9 str r1, [r7, #8] - 802b652: 607a str r2, [r7, #4] + 802b688: b480 push {r7} + 802b68a: b085 sub sp, #20 + 802b68c: af00 add r7, sp, #0 + 802b68e: 60f8 str r0, [r7, #12] + 802b690: 60b9 str r1, [r7, #8] + 802b692: 607a str r2, [r7, #4] return 0; - 802b654: 2300 movs r3, #0 + 802b694: 2300 movs r3, #0 } - 802b656: 4618 mov r0, r3 - 802b658: 3714 adds r7, #20 - 802b65a: 46bd mov sp, r7 - 802b65c: f85d 7b04 ldr.w r7, [sp], #4 - 802b660: 4770 bx lr + 802b696: 4618 mov r0, r3 + 802b698: 3714 adds r7, #20 + 802b69a: 46bd mov sp, r7 + 802b69c: f85d 7b04 ldr.w r7, [sp], #4 + 802b6a0: 4770 bx lr ... -0802b664 <_sbrk>: +0802b6a4 <_sbrk>: * * @param incr Memory size * @return Pointer to allocated memory */ void *_sbrk(ptrdiff_t incr) { - 802b664: b480 push {r7} - 802b666: b087 sub sp, #28 - 802b668: af00 add r7, sp, #0 - 802b66a: 6078 str r0, [r7, #4] + 802b6a4: b480 push {r7} + 802b6a6: b087 sub sp, #28 + 802b6a8: af00 add r7, sp, #0 + 802b6aa: 6078 str r0, [r7, #4] extern uint8_t _end; /* Symbol defined in the linker script */ extern uint8_t _estack; /* Symbol defined in the linker script */ extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */ const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size; - 802b66c: 4a14 ldr r2, [pc, #80] ; (802b6c0 <_sbrk+0x5c>) - 802b66e: 4b15 ldr r3, [pc, #84] ; (802b6c4 <_sbrk+0x60>) - 802b670: 1ad3 subs r3, r2, r3 - 802b672: 617b str r3, [r7, #20] + 802b6ac: 4a14 ldr r2, [pc, #80] ; (802b700 <_sbrk+0x5c>) + 802b6ae: 4b15 ldr r3, [pc, #84] ; (802b704 <_sbrk+0x60>) + 802b6b0: 1ad3 subs r3, r2, r3 + 802b6b2: 617b str r3, [r7, #20] const uint8_t *max_heap = (uint8_t *)stack_limit; - 802b674: 697b ldr r3, [r7, #20] - 802b676: 613b str r3, [r7, #16] + 802b6b4: 697b ldr r3, [r7, #20] + 802b6b6: 613b str r3, [r7, #16] uint8_t *prev_heap_end; /* Initialize heap end at first call */ if (NULL == __sbrk_heap_end) - 802b678: 4b13 ldr r3, [pc, #76] ; (802b6c8 <_sbrk+0x64>) - 802b67a: 681b ldr r3, [r3, #0] - 802b67c: 2b00 cmp r3, #0 - 802b67e: d102 bne.n 802b686 <_sbrk+0x22> + 802b6b8: 4b13 ldr r3, [pc, #76] ; (802b708 <_sbrk+0x64>) + 802b6ba: 681b ldr r3, [r3, #0] + 802b6bc: 2b00 cmp r3, #0 + 802b6be: d102 bne.n 802b6c6 <_sbrk+0x22> { __sbrk_heap_end = &_end; - 802b680: 4b11 ldr r3, [pc, #68] ; (802b6c8 <_sbrk+0x64>) - 802b682: 4a12 ldr r2, [pc, #72] ; (802b6cc <_sbrk+0x68>) - 802b684: 601a str r2, [r3, #0] + 802b6c0: 4b11 ldr r3, [pc, #68] ; (802b708 <_sbrk+0x64>) + 802b6c2: 4a12 ldr r2, [pc, #72] ; (802b70c <_sbrk+0x68>) + 802b6c4: 601a str r2, [r3, #0] } /* Protect heap from growing into the reserved MSP stack */ if (__sbrk_heap_end + incr > max_heap) - 802b686: 4b10 ldr r3, [pc, #64] ; (802b6c8 <_sbrk+0x64>) - 802b688: 681a ldr r2, [r3, #0] - 802b68a: 687b ldr r3, [r7, #4] - 802b68c: 4413 add r3, r2 - 802b68e: 693a ldr r2, [r7, #16] - 802b690: 429a cmp r2, r3 - 802b692: d205 bcs.n 802b6a0 <_sbrk+0x3c> + 802b6c6: 4b10 ldr r3, [pc, #64] ; (802b708 <_sbrk+0x64>) + 802b6c8: 681a ldr r2, [r3, #0] + 802b6ca: 687b ldr r3, [r7, #4] + 802b6cc: 4413 add r3, r2 + 802b6ce: 693a ldr r2, [r7, #16] + 802b6d0: 429a cmp r2, r3 + 802b6d2: d205 bcs.n 802b6e0 <_sbrk+0x3c> { errno = ENOMEM; - 802b694: 4b0e ldr r3, [pc, #56] ; (802b6d0 <_sbrk+0x6c>) - 802b696: 220c movs r2, #12 - 802b698: 601a str r2, [r3, #0] + 802b6d4: 4b0e ldr r3, [pc, #56] ; (802b710 <_sbrk+0x6c>) + 802b6d6: 220c movs r2, #12 + 802b6d8: 601a str r2, [r3, #0] return (void *)-1; - 802b69a: f04f 33ff mov.w r3, #4294967295 - 802b69e: e009 b.n 802b6b4 <_sbrk+0x50> + 802b6da: f04f 33ff mov.w r3, #4294967295 + 802b6de: e009 b.n 802b6f4 <_sbrk+0x50> } prev_heap_end = __sbrk_heap_end; - 802b6a0: 4b09 ldr r3, [pc, #36] ; (802b6c8 <_sbrk+0x64>) - 802b6a2: 681b ldr r3, [r3, #0] - 802b6a4: 60fb str r3, [r7, #12] + 802b6e0: 4b09 ldr r3, [pc, #36] ; (802b708 <_sbrk+0x64>) + 802b6e2: 681b ldr r3, [r3, #0] + 802b6e4: 60fb str r3, [r7, #12] __sbrk_heap_end += incr; - 802b6a6: 4b08 ldr r3, [pc, #32] ; (802b6c8 <_sbrk+0x64>) - 802b6a8: 681a ldr r2, [r3, #0] - 802b6aa: 687b ldr r3, [r7, #4] - 802b6ac: 4413 add r3, r2 - 802b6ae: 4a06 ldr r2, [pc, #24] ; (802b6c8 <_sbrk+0x64>) - 802b6b0: 6013 str r3, [r2, #0] + 802b6e6: 4b08 ldr r3, [pc, #32] ; (802b708 <_sbrk+0x64>) + 802b6e8: 681a ldr r2, [r3, #0] + 802b6ea: 687b ldr r3, [r7, #4] + 802b6ec: 4413 add r3, r2 + 802b6ee: 4a06 ldr r2, [pc, #24] ; (802b708 <_sbrk+0x64>) + 802b6f0: 6013 str r3, [r2, #0] return (void *)prev_heap_end; - 802b6b2: 68fb ldr r3, [r7, #12] -} - 802b6b4: 4618 mov r0, r3 - 802b6b6: 371c adds r7, #28 - 802b6b8: 46bd mov sp, r7 - 802b6ba: f85d 7b04 ldr.w r7, [sp], #4 - 802b6be: 4770 bx lr - 802b6c0: 24080000 .word 0x24080000 - 802b6c4: 00002000 .word 0x00002000 - 802b6c8: 2400b134 .word 0x2400b134 - 802b6cc: 2400ec58 .word 0x2400ec58 - 802b6d0: 2400ec4c .word 0x2400ec4c - -0802b6d4 : + 802b6f2: 68fb ldr r3, [r7, #12] +} + 802b6f4: 4618 mov r0, r3 + 802b6f6: 371c adds r7, #28 + 802b6f8: 46bd mov sp, r7 + 802b6fa: f85d 7b04 ldr.w r7, [sp], #4 + 802b6fe: 4770 bx lr + 802b700: 24080000 .word 0x24080000 + 802b704: 00002000 .word 0x00002000 + 802b708: 2400b134 .word 0x2400b134 + 802b70c: 2400ec58 .word 0x2400ec58 + 802b710: 2400ec4c .word 0x2400ec4c + +0802b714 : * configuration. * @param None * @retval None */ void SystemInit (void) { - 802b6d4: b480 push {r7} - 802b6d6: af00 add r7, sp, #0 + 802b714: b480 push {r7} + 802b716: af00 add r7, sp, #0 __IO uint32_t tmpreg; #endif /* DATA_IN_D2_SRAM */ /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << (10*2))|(3UL << (11*2))); /* set CP10 and CP11 Full Access */ - 802b6d8: 4b39 ldr r3, [pc, #228] ; (802b7c0 ) - 802b6da: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 802b6de: 4a38 ldr r2, [pc, #224] ; (802b7c0 ) - 802b6e0: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000 - 802b6e4: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 802b718: 4b39 ldr r3, [pc, #228] ; (802b800 ) + 802b71a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 802b71e: 4a38 ldr r2, [pc, #224] ; (802b800 ) + 802b720: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000 + 802b724: f8c2 3088 str.w r3, [r2, #136] ; 0x88 #endif /* Reset the RCC clock configuration to the default reset state ------------*/ /* Increasing the CPU frequency */ if(FLASH_LATENCY_DEFAULT > (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))) - 802b6e8: 4b36 ldr r3, [pc, #216] ; (802b7c4 ) - 802b6ea: 681b ldr r3, [r3, #0] - 802b6ec: f003 030f and.w r3, r3, #15 - 802b6f0: 2b06 cmp r3, #6 - 802b6f2: d807 bhi.n 802b704 + 802b728: 4b36 ldr r3, [pc, #216] ; (802b804 ) + 802b72a: 681b ldr r3, [r3, #0] + 802b72c: f003 030f and.w r3, r3, #15 + 802b730: 2b06 cmp r3, #6 + 802b732: d807 bhi.n 802b744 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT)); - 802b6f4: 4b33 ldr r3, [pc, #204] ; (802b7c4 ) - 802b6f6: 681b ldr r3, [r3, #0] - 802b6f8: f023 030f bic.w r3, r3, #15 - 802b6fc: 4a31 ldr r2, [pc, #196] ; (802b7c4 ) - 802b6fe: f043 0307 orr.w r3, r3, #7 - 802b702: 6013 str r3, [r2, #0] + 802b734: 4b33 ldr r3, [pc, #204] ; (802b804 ) + 802b736: 681b ldr r3, [r3, #0] + 802b738: f023 030f bic.w r3, r3, #15 + 802b73c: 4a31 ldr r2, [pc, #196] ; (802b804 ) + 802b73e: f043 0307 orr.w r3, r3, #7 + 802b742: 6013 str r3, [r2, #0] } /* Set HSION bit */ RCC->CR |= RCC_CR_HSION; - 802b704: 4b30 ldr r3, [pc, #192] ; (802b7c8 ) - 802b706: 681b ldr r3, [r3, #0] - 802b708: 4a2f ldr r2, [pc, #188] ; (802b7c8 ) - 802b70a: f043 0301 orr.w r3, r3, #1 - 802b70e: 6013 str r3, [r2, #0] + 802b744: 4b30 ldr r3, [pc, #192] ; (802b808 ) + 802b746: 681b ldr r3, [r3, #0] + 802b748: 4a2f ldr r2, [pc, #188] ; (802b808 ) + 802b74a: f043 0301 orr.w r3, r3, #1 + 802b74e: 6013 str r3, [r2, #0] /* Reset CFGR register */ RCC->CFGR = 0x00000000; - 802b710: 4b2d ldr r3, [pc, #180] ; (802b7c8 ) - 802b712: 2200 movs r2, #0 - 802b714: 611a str r2, [r3, #16] + 802b750: 4b2d ldr r3, [pc, #180] ; (802b808 ) + 802b752: 2200 movs r2, #0 + 802b754: 611a str r2, [r3, #16] /* Reset HSEON, HSECSSON, CSION, HSI48ON, CSIKERON, PLL1ON, PLL2ON and PLL3ON bits */ RCC->CR &= 0xEAF6ED7FU; - 802b716: 4b2c ldr r3, [pc, #176] ; (802b7c8 ) - 802b718: 681a ldr r2, [r3, #0] - 802b71a: 492b ldr r1, [pc, #172] ; (802b7c8 ) - 802b71c: 4b2b ldr r3, [pc, #172] ; (802b7cc ) - 802b71e: 4013 ands r3, r2 - 802b720: 600b str r3, [r1, #0] + 802b756: 4b2c ldr r3, [pc, #176] ; (802b808 ) + 802b758: 681a ldr r2, [r3, #0] + 802b75a: 492b ldr r1, [pc, #172] ; (802b808 ) + 802b75c: 4b2b ldr r3, [pc, #172] ; (802b80c ) + 802b75e: 4013 ands r3, r2 + 802b760: 600b str r3, [r1, #0] /* Decreasing the number of wait states because of lower CPU frequency */ if(FLASH_LATENCY_DEFAULT < (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))) - 802b722: 4b28 ldr r3, [pc, #160] ; (802b7c4 ) - 802b724: 681b ldr r3, [r3, #0] - 802b726: f003 0308 and.w r3, r3, #8 - 802b72a: 2b00 cmp r3, #0 - 802b72c: d007 beq.n 802b73e + 802b762: 4b28 ldr r3, [pc, #160] ; (802b804 ) + 802b764: 681b ldr r3, [r3, #0] + 802b766: f003 0308 and.w r3, r3, #8 + 802b76a: 2b00 cmp r3, #0 + 802b76c: d007 beq.n 802b77e { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, (uint32_t)(FLASH_LATENCY_DEFAULT)); - 802b72e: 4b25 ldr r3, [pc, #148] ; (802b7c4 ) - 802b730: 681b ldr r3, [r3, #0] - 802b732: f023 030f bic.w r3, r3, #15 - 802b736: 4a23 ldr r2, [pc, #140] ; (802b7c4 ) - 802b738: f043 0307 orr.w r3, r3, #7 - 802b73c: 6013 str r3, [r2, #0] + 802b76e: 4b25 ldr r3, [pc, #148] ; (802b804 ) + 802b770: 681b ldr r3, [r3, #0] + 802b772: f023 030f bic.w r3, r3, #15 + 802b776: 4a23 ldr r2, [pc, #140] ; (802b804 ) + 802b778: f043 0307 orr.w r3, r3, #7 + 802b77c: 6013 str r3, [r2, #0] } #if defined(D3_SRAM_BASE) /* Reset D1CFGR register */ RCC->D1CFGR = 0x00000000; - 802b73e: 4b22 ldr r3, [pc, #136] ; (802b7c8 ) - 802b740: 2200 movs r2, #0 - 802b742: 619a str r2, [r3, #24] + 802b77e: 4b22 ldr r3, [pc, #136] ; (802b808 ) + 802b780: 2200 movs r2, #0 + 802b782: 619a str r2, [r3, #24] /* Reset D2CFGR register */ RCC->D2CFGR = 0x00000000; - 802b744: 4b20 ldr r3, [pc, #128] ; (802b7c8 ) - 802b746: 2200 movs r2, #0 - 802b748: 61da str r2, [r3, #28] + 802b784: 4b20 ldr r3, [pc, #128] ; (802b808 ) + 802b786: 2200 movs r2, #0 + 802b788: 61da str r2, [r3, #28] /* Reset D3CFGR register */ RCC->D3CFGR = 0x00000000; - 802b74a: 4b1f ldr r3, [pc, #124] ; (802b7c8 ) - 802b74c: 2200 movs r2, #0 - 802b74e: 621a str r2, [r3, #32] + 802b78a: 4b1f ldr r3, [pc, #124] ; (802b808 ) + 802b78c: 2200 movs r2, #0 + 802b78e: 621a str r2, [r3, #32] /* Reset SRDCFGR register */ RCC->SRDCFGR = 0x00000000; #endif /* Reset PLLCKSELR register */ RCC->PLLCKSELR = 0x02020200; - 802b750: 4b1d ldr r3, [pc, #116] ; (802b7c8 ) - 802b752: 4a1f ldr r2, [pc, #124] ; (802b7d0 ) - 802b754: 629a str r2, [r3, #40] ; 0x28 + 802b790: 4b1d ldr r3, [pc, #116] ; (802b808 ) + 802b792: 4a1f ldr r2, [pc, #124] ; (802b810 ) + 802b794: 629a str r2, [r3, #40] ; 0x28 /* Reset PLLCFGR register */ RCC->PLLCFGR = 0x01FF0000; - 802b756: 4b1c ldr r3, [pc, #112] ; (802b7c8 ) - 802b758: 4a1e ldr r2, [pc, #120] ; (802b7d4 ) - 802b75a: 62da str r2, [r3, #44] ; 0x2c + 802b796: 4b1c ldr r3, [pc, #112] ; (802b808 ) + 802b798: 4a1e ldr r2, [pc, #120] ; (802b814 ) + 802b79a: 62da str r2, [r3, #44] ; 0x2c /* Reset PLL1DIVR register */ RCC->PLL1DIVR = 0x01010280; - 802b75c: 4b1a ldr r3, [pc, #104] ; (802b7c8 ) - 802b75e: 4a1e ldr r2, [pc, #120] ; (802b7d8 ) - 802b760: 631a str r2, [r3, #48] ; 0x30 + 802b79c: 4b1a ldr r3, [pc, #104] ; (802b808 ) + 802b79e: 4a1e ldr r2, [pc, #120] ; (802b818 ) + 802b7a0: 631a str r2, [r3, #48] ; 0x30 /* Reset PLL1FRACR register */ RCC->PLL1FRACR = 0x00000000; - 802b762: 4b19 ldr r3, [pc, #100] ; (802b7c8 ) - 802b764: 2200 movs r2, #0 - 802b766: 635a str r2, [r3, #52] ; 0x34 + 802b7a2: 4b19 ldr r3, [pc, #100] ; (802b808 ) + 802b7a4: 2200 movs r2, #0 + 802b7a6: 635a str r2, [r3, #52] ; 0x34 /* Reset PLL2DIVR register */ RCC->PLL2DIVR = 0x01010280; - 802b768: 4b17 ldr r3, [pc, #92] ; (802b7c8 ) - 802b76a: 4a1b ldr r2, [pc, #108] ; (802b7d8 ) - 802b76c: 639a str r2, [r3, #56] ; 0x38 + 802b7a8: 4b17 ldr r3, [pc, #92] ; (802b808 ) + 802b7aa: 4a1b ldr r2, [pc, #108] ; (802b818 ) + 802b7ac: 639a str r2, [r3, #56] ; 0x38 /* Reset PLL2FRACR register */ RCC->PLL2FRACR = 0x00000000; - 802b76e: 4b16 ldr r3, [pc, #88] ; (802b7c8 ) - 802b770: 2200 movs r2, #0 - 802b772: 63da str r2, [r3, #60] ; 0x3c + 802b7ae: 4b16 ldr r3, [pc, #88] ; (802b808 ) + 802b7b0: 2200 movs r2, #0 + 802b7b2: 63da str r2, [r3, #60] ; 0x3c /* Reset PLL3DIVR register */ RCC->PLL3DIVR = 0x01010280; - 802b774: 4b14 ldr r3, [pc, #80] ; (802b7c8 ) - 802b776: 4a18 ldr r2, [pc, #96] ; (802b7d8 ) - 802b778: 641a str r2, [r3, #64] ; 0x40 + 802b7b4: 4b14 ldr r3, [pc, #80] ; (802b808 ) + 802b7b6: 4a18 ldr r2, [pc, #96] ; (802b818 ) + 802b7b8: 641a str r2, [r3, #64] ; 0x40 /* Reset PLL3FRACR register */ RCC->PLL3FRACR = 0x00000000; - 802b77a: 4b13 ldr r3, [pc, #76] ; (802b7c8 ) - 802b77c: 2200 movs r2, #0 - 802b77e: 645a str r2, [r3, #68] ; 0x44 + 802b7ba: 4b13 ldr r3, [pc, #76] ; (802b808 ) + 802b7bc: 2200 movs r2, #0 + 802b7be: 645a str r2, [r3, #68] ; 0x44 /* Reset HSEBYP bit */ RCC->CR &= 0xFFFBFFFFU; - 802b780: 4b11 ldr r3, [pc, #68] ; (802b7c8 ) - 802b782: 681b ldr r3, [r3, #0] - 802b784: 4a10 ldr r2, [pc, #64] ; (802b7c8 ) - 802b786: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 802b78a: 6013 str r3, [r2, #0] + 802b7c0: 4b11 ldr r3, [pc, #68] ; (802b808 ) + 802b7c2: 681b ldr r3, [r3, #0] + 802b7c4: 4a10 ldr r2, [pc, #64] ; (802b808 ) + 802b7c6: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 802b7ca: 6013 str r3, [r2, #0] /* Disable all interrupts */ RCC->CIER = 0x00000000; - 802b78c: 4b0e ldr r3, [pc, #56] ; (802b7c8 ) - 802b78e: 2200 movs r2, #0 - 802b790: 661a str r2, [r3, #96] ; 0x60 + 802b7cc: 4b0e ldr r3, [pc, #56] ; (802b808 ) + 802b7ce: 2200 movs r2, #0 + 802b7d0: 661a str r2, [r3, #96] ; 0x60 #if (STM32H7_DEV_ID == 0x450UL) /* dual core CM7 or single core line */ if((DBGMCU->IDCODE & 0xFFFF0000U) < 0x20000000U) - 802b792: 4b12 ldr r3, [pc, #72] ; (802b7dc ) - 802b794: 681a ldr r2, [r3, #0] - 802b796: 4b12 ldr r3, [pc, #72] ; (802b7e0 ) - 802b798: 4013 ands r3, r2 - 802b79a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 802b79e: d202 bcs.n 802b7a6 + 802b7d2: 4b12 ldr r3, [pc, #72] ; (802b81c ) + 802b7d4: 681a ldr r2, [r3, #0] + 802b7d6: 4b12 ldr r3, [pc, #72] ; (802b820 ) + 802b7d8: 4013 ands r3, r2 + 802b7da: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 802b7de: d202 bcs.n 802b7e6 { /* if stm32h7 revY*/ /* Change the switch matrix read issuing capability to 1 for the AXI SRAM target (Target 7) */ *((__IO uint32_t*)0x51008108) = 0x000000001U; - 802b7a0: 4b10 ldr r3, [pc, #64] ; (802b7e4 ) - 802b7a2: 2201 movs r2, #1 - 802b7a4: 601a str r2, [r3, #0] + 802b7e0: 4b10 ldr r3, [pc, #64] ; (802b824 ) + 802b7e2: 2201 movs r2, #1 + 802b7e4: 601a str r2, [r3, #0] /* * Disable the FMC bank1 (enabled after reset). * This, prevents CPU speculation access on this bank which blocks the use of FMC during * 24us. During this time the others FMC master (such as LTDC) cannot use it! */ FMC_Bank1_R->BTCR[0] = 0x000030D2; - 802b7a6: 4b10 ldr r3, [pc, #64] ; (802b7e8 ) - 802b7a8: f243 02d2 movw r2, #12498 ; 0x30d2 - 802b7ac: 601a str r2, [r3, #0] + 802b7e6: 4b10 ldr r3, [pc, #64] ; (802b828 ) + 802b7e8: f243 02d2 movw r2, #12498 ; 0x30d2 + 802b7ec: 601a str r2, [r3, #0] /* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS) SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal D1 AXI-RAM or in Internal FLASH */ - 802b7ae: 4b04 ldr r3, [pc, #16] ; (802b7c0 ) - 802b7b0: 4a0e ldr r2, [pc, #56] ; (802b7ec ) - 802b7b2: 609a str r2, [r3, #8] + 802b7ee: 4b04 ldr r3, [pc, #16] ; (802b800 ) + 802b7f0: 4a0e ldr r2, [pc, #56] ; (802b82c ) + 802b7f2: 609a str r2, [r3, #8] #endif /* USER_VECT_TAB_ADDRESS */ #endif /*DUAL_CORE && CORE_CM4*/ } - 802b7b4: bf00 nop - 802b7b6: 46bd mov sp, r7 - 802b7b8: f85d 7b04 ldr.w r7, [sp], #4 - 802b7bc: 4770 bx lr - 802b7be: bf00 nop - 802b7c0: e000ed00 .word 0xe000ed00 - 802b7c4: 52002000 .word 0x52002000 - 802b7c8: 58024400 .word 0x58024400 - 802b7cc: eaf6ed7f .word 0xeaf6ed7f - 802b7d0: 02020200 .word 0x02020200 - 802b7d4: 01ff0000 .word 0x01ff0000 - 802b7d8: 01010280 .word 0x01010280 - 802b7dc: 5c001000 .word 0x5c001000 - 802b7e0: ffff0000 .word 0xffff0000 - 802b7e4: 51008108 .word 0x51008108 - 802b7e8: 52004000 .word 0x52004000 - 802b7ec: 08020000 .word 0x08020000 - -0802b7f0 : + 802b7f4: bf00 nop + 802b7f6: 46bd mov sp, r7 + 802b7f8: f85d 7b04 ldr.w r7, [sp], #4 + 802b7fc: 4770 bx lr + 802b7fe: bf00 nop + 802b800: e000ed00 .word 0xe000ed00 + 802b804: 52002000 .word 0x52002000 + 802b808: 58024400 .word 0x58024400 + 802b80c: eaf6ed7f .word 0xeaf6ed7f + 802b810: 02020200 .word 0x02020200 + 802b814: 01ff0000 .word 0x01ff0000 + 802b818: 01010280 .word 0x01010280 + 802b81c: 5c001000 .word 0x5c001000 + 802b820: ffff0000 .word 0xffff0000 + 802b824: 51008108 .word 0x51008108 + 802b828: 52004000 .word 0x52004000 + 802b82c: 08020000 .word 0x08020000 + +0802b830 : TIM_HandleTypeDef htim2; TIM_HandleTypeDef htim8; /* TIM1 init function */ void MX_TIM1_Init(void) { - 802b7f0: b580 push {r7, lr} - 802b7f2: b088 sub sp, #32 - 802b7f4: af00 add r7, sp, #0 + 802b830: b580 push {r7, lr} + 802b832: b088 sub sp, #32 + 802b834: af00 add r7, sp, #0 /* USER CODE BEGIN TIM1_Init 0 */ /* USER CODE END TIM1_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 802b7f6: f107 0310 add.w r3, r7, #16 - 802b7fa: 2200 movs r2, #0 - 802b7fc: 601a str r2, [r3, #0] - 802b7fe: 605a str r2, [r3, #4] - 802b800: 609a str r2, [r3, #8] - 802b802: 60da str r2, [r3, #12] + 802b836: f107 0310 add.w r3, r7, #16 + 802b83a: 2200 movs r2, #0 + 802b83c: 601a str r2, [r3, #0] + 802b83e: 605a str r2, [r3, #4] + 802b840: 609a str r2, [r3, #8] + 802b842: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 802b804: 1d3b adds r3, r7, #4 - 802b806: 2200 movs r2, #0 - 802b808: 601a str r2, [r3, #0] - 802b80a: 605a str r2, [r3, #4] - 802b80c: 609a str r2, [r3, #8] + 802b844: 1d3b adds r3, r7, #4 + 802b846: 2200 movs r2, #0 + 802b848: 601a str r2, [r3, #0] + 802b84a: 605a str r2, [r3, #4] + 802b84c: 609a str r2, [r3, #8] /* USER CODE BEGIN TIM1_Init 1 */ /* USER CODE END TIM1_Init 1 */ htim1.Instance = TIM1; - 802b80e: 4b20 ldr r3, [pc, #128] ; (802b890 ) - 802b810: 4a20 ldr r2, [pc, #128] ; (802b894 ) - 802b812: 601a str r2, [r3, #0] + 802b84e: 4b20 ldr r3, [pc, #128] ; (802b8d0 ) + 802b850: 4a20 ldr r2, [pc, #128] ; (802b8d4 ) + 802b852: 601a str r2, [r3, #0] htim1.Init.Prescaler = 2000-1; - 802b814: 4b1e ldr r3, [pc, #120] ; (802b890 ) - 802b816: f240 72cf movw r2, #1999 ; 0x7cf - 802b81a: 605a str r2, [r3, #4] + 802b854: 4b1e ldr r3, [pc, #120] ; (802b8d0 ) + 802b856: f240 72cf movw r2, #1999 ; 0x7cf + 802b85a: 605a str r2, [r3, #4] htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - 802b81c: 4b1c ldr r3, [pc, #112] ; (802b890 ) - 802b81e: 2200 movs r2, #0 - 802b820: 609a str r2, [r3, #8] + 802b85c: 4b1c ldr r3, [pc, #112] ; (802b8d0 ) + 802b85e: 2200 movs r2, #0 + 802b860: 609a str r2, [r3, #8] htim1.Init.Period = 10000-1; - 802b822: 4b1b ldr r3, [pc, #108] ; (802b890 ) - 802b824: f242 720f movw r2, #9999 ; 0x270f - 802b828: 60da str r2, [r3, #12] + 802b862: 4b1b ldr r3, [pc, #108] ; (802b8d0 ) + 802b864: f242 720f movw r2, #9999 ; 0x270f + 802b868: 60da str r2, [r3, #12] htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 802b82a: 4b19 ldr r3, [pc, #100] ; (802b890 ) - 802b82c: 2200 movs r2, #0 - 802b82e: 611a str r2, [r3, #16] + 802b86a: 4b19 ldr r3, [pc, #100] ; (802b8d0 ) + 802b86c: 2200 movs r2, #0 + 802b86e: 611a str r2, [r3, #16] htim1.Init.RepetitionCounter = 0; - 802b830: 4b17 ldr r3, [pc, #92] ; (802b890 ) - 802b832: 2200 movs r2, #0 - 802b834: 615a str r2, [r3, #20] + 802b870: 4b17 ldr r3, [pc, #92] ; (802b8d0 ) + 802b872: 2200 movs r2, #0 + 802b874: 615a str r2, [r3, #20] htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; - 802b836: 4b16 ldr r3, [pc, #88] ; (802b890 ) - 802b838: 2280 movs r2, #128 ; 0x80 - 802b83a: 619a str r2, [r3, #24] + 802b876: 4b16 ldr r3, [pc, #88] ; (802b8d0 ) + 802b878: 2280 movs r2, #128 ; 0x80 + 802b87a: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim1) != HAL_OK) - 802b83c: 4814 ldr r0, [pc, #80] ; (802b890 ) - 802b83e: f00c fefb bl 8038638 - 802b842: 4603 mov r3, r0 - 802b844: 2b00 cmp r3, #0 - 802b846: d001 beq.n 802b84c + 802b87c: 4814 ldr r0, [pc, #80] ; (802b8d0 ) + 802b87e: f00c fefb bl 8038678 + 802b882: 4603 mov r3, r0 + 802b884: 2b00 cmp r3, #0 + 802b886: d001 beq.n 802b88c { Error_Handler(); - 802b848: f7ff fc38 bl 802b0bc + 802b888: f7ff fc38 bl 802b0fc } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 802b84c: f44f 5380 mov.w r3, #4096 ; 0x1000 - 802b850: 613b str r3, [r7, #16] + 802b88c: f44f 5380 mov.w r3, #4096 ; 0x1000 + 802b890: 613b str r3, [r7, #16] if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK) - 802b852: f107 0310 add.w r3, r7, #16 - 802b856: 4619 mov r1, r3 - 802b858: 480d ldr r0, [pc, #52] ; (802b890 ) - 802b85a: f00d fb61 bl 8038f20 - 802b85e: 4603 mov r3, r0 - 802b860: 2b00 cmp r3, #0 - 802b862: d001 beq.n 802b868 + 802b892: f107 0310 add.w r3, r7, #16 + 802b896: 4619 mov r1, r3 + 802b898: 480d ldr r0, [pc, #52] ; (802b8d0 ) + 802b89a: f00d fb61 bl 8038f60 + 802b89e: 4603 mov r3, r0 + 802b8a0: 2b00 cmp r3, #0 + 802b8a2: d001 beq.n 802b8a8 { Error_Handler(); - 802b864: f7ff fc2a bl 802b0bc + 802b8a4: f7ff fc2a bl 802b0fc } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 802b868: 2300 movs r3, #0 - 802b86a: 607b str r3, [r7, #4] + 802b8a8: 2300 movs r3, #0 + 802b8aa: 607b str r3, [r7, #4] sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET; - 802b86c: 2300 movs r3, #0 - 802b86e: 60bb str r3, [r7, #8] + 802b8ac: 2300 movs r3, #0 + 802b8ae: 60bb str r3, [r7, #8] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 802b870: 2300 movs r3, #0 - 802b872: 60fb str r3, [r7, #12] + 802b8b0: 2300 movs r3, #0 + 802b8b2: 60fb str r3, [r7, #12] if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) - 802b874: 1d3b adds r3, r7, #4 - 802b876: 4619 mov r1, r3 - 802b878: 4805 ldr r0, [pc, #20] ; (802b890 ) - 802b87a: f00e f8a5 bl 80399c8 - 802b87e: 4603 mov r3, r0 - 802b880: 2b00 cmp r3, #0 - 802b882: d001 beq.n 802b888 + 802b8b4: 1d3b adds r3, r7, #4 + 802b8b6: 4619 mov r1, r3 + 802b8b8: 4805 ldr r0, [pc, #20] ; (802b8d0 ) + 802b8ba: f00e f8a5 bl 8039a08 + 802b8be: 4603 mov r3, r0 + 802b8c0: 2b00 cmp r3, #0 + 802b8c2: d001 beq.n 802b8c8 { Error_Handler(); - 802b884: f7ff fc1a bl 802b0bc + 802b8c4: f7ff fc1a bl 802b0fc } /* USER CODE BEGIN TIM1_Init 2 */ /* USER CODE END TIM1_Init 2 */ } - 802b888: bf00 nop - 802b88a: 3720 adds r7, #32 - 802b88c: 46bd mov sp, r7 - 802b88e: bd80 pop {r7, pc} - 802b890: 2400b138 .word 0x2400b138 - 802b894: 40010000 .word 0x40010000 + 802b8c8: bf00 nop + 802b8ca: 3720 adds r7, #32 + 802b8cc: 46bd mov sp, r7 + 802b8ce: bd80 pop {r7, pc} + 802b8d0: 2400b138 .word 0x2400b138 + 802b8d4: 40010000 .word 0x40010000 -0802b898 : +0802b8d8 : /* TIM2 init function */ void MX_TIM2_Init(void) { - 802b898: b580 push {r7, lr} - 802b89a: b08e sub sp, #56 ; 0x38 - 802b89c: af00 add r7, sp, #0 + 802b8d8: b580 push {r7, lr} + 802b8da: b08e sub sp, #56 ; 0x38 + 802b8dc: af00 add r7, sp, #0 /* USER CODE BEGIN TIM2_Init 0 */ /* USER CODE END TIM2_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 802b89e: f107 0328 add.w r3, r7, #40 ; 0x28 - 802b8a2: 2200 movs r2, #0 - 802b8a4: 601a str r2, [r3, #0] - 802b8a6: 605a str r2, [r3, #4] - 802b8a8: 609a str r2, [r3, #8] - 802b8aa: 60da str r2, [r3, #12] + 802b8de: f107 0328 add.w r3, r7, #40 ; 0x28 + 802b8e2: 2200 movs r2, #0 + 802b8e4: 601a str r2, [r3, #0] + 802b8e6: 605a str r2, [r3, #4] + 802b8e8: 609a str r2, [r3, #8] + 802b8ea: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 802b8ac: f107 031c add.w r3, r7, #28 - 802b8b0: 2200 movs r2, #0 - 802b8b2: 601a str r2, [r3, #0] - 802b8b4: 605a str r2, [r3, #4] - 802b8b6: 609a str r2, [r3, #8] + 802b8ec: f107 031c add.w r3, r7, #28 + 802b8f0: 2200 movs r2, #0 + 802b8f2: 601a str r2, [r3, #0] + 802b8f4: 605a str r2, [r3, #4] + 802b8f6: 609a str r2, [r3, #8] TIM_OC_InitTypeDef sConfigOC = {0}; - 802b8b8: 463b mov r3, r7 - 802b8ba: 2200 movs r2, #0 - 802b8bc: 601a str r2, [r3, #0] - 802b8be: 605a str r2, [r3, #4] - 802b8c0: 609a str r2, [r3, #8] - 802b8c2: 60da str r2, [r3, #12] - 802b8c4: 611a str r2, [r3, #16] - 802b8c6: 615a str r2, [r3, #20] - 802b8c8: 619a str r2, [r3, #24] + 802b8f8: 463b mov r3, r7 + 802b8fa: 2200 movs r2, #0 + 802b8fc: 601a str r2, [r3, #0] + 802b8fe: 605a str r2, [r3, #4] + 802b900: 609a str r2, [r3, #8] + 802b902: 60da str r2, [r3, #12] + 802b904: 611a str r2, [r3, #16] + 802b906: 615a str r2, [r3, #20] + 802b908: 619a str r2, [r3, #24] /* USER CODE BEGIN TIM2_Init 1 */ /* USER CODE END TIM2_Init 1 */ htim2.Instance = TIM2; - 802b8ca: 4b2e ldr r3, [pc, #184] ; (802b984 ) - 802b8cc: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 - 802b8d0: 601a str r2, [r3, #0] + 802b90a: 4b2e ldr r3, [pc, #184] ; (802b9c4 ) + 802b90c: f04f 4280 mov.w r2, #1073741824 ; 0x40000000 + 802b910: 601a str r2, [r3, #0] htim2.Init.Prescaler = 999; - 802b8d2: 4b2c ldr r3, [pc, #176] ; (802b984 ) - 802b8d4: f240 32e7 movw r2, #999 ; 0x3e7 - 802b8d8: 605a str r2, [r3, #4] + 802b912: 4b2c ldr r3, [pc, #176] ; (802b9c4 ) + 802b914: f240 32e7 movw r2, #999 ; 0x3e7 + 802b918: 605a str r2, [r3, #4] htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - 802b8da: 4b2a ldr r3, [pc, #168] ; (802b984 ) - 802b8dc: 2200 movs r2, #0 - 802b8de: 609a str r2, [r3, #8] + 802b91a: 4b2a ldr r3, [pc, #168] ; (802b9c4 ) + 802b91c: 2200 movs r2, #0 + 802b91e: 609a str r2, [r3, #8] htim2.Init.Period = 999; - 802b8e0: 4b28 ldr r3, [pc, #160] ; (802b984 ) - 802b8e2: f240 32e7 movw r2, #999 ; 0x3e7 - 802b8e6: 60da str r2, [r3, #12] + 802b920: 4b28 ldr r3, [pc, #160] ; (802b9c4 ) + 802b922: f240 32e7 movw r2, #999 ; 0x3e7 + 802b926: 60da str r2, [r3, #12] htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 802b8e8: 4b26 ldr r3, [pc, #152] ; (802b984 ) - 802b8ea: 2200 movs r2, #0 - 802b8ec: 611a str r2, [r3, #16] + 802b928: 4b26 ldr r3, [pc, #152] ; (802b9c4 ) + 802b92a: 2200 movs r2, #0 + 802b92c: 611a str r2, [r3, #16] htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; - 802b8ee: 4b25 ldr r3, [pc, #148] ; (802b984 ) - 802b8f0: 2280 movs r2, #128 ; 0x80 - 802b8f2: 619a str r2, [r3, #24] + 802b92e: 4b25 ldr r3, [pc, #148] ; (802b9c4 ) + 802b930: 2280 movs r2, #128 ; 0x80 + 802b932: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim2) != HAL_OK) - 802b8f4: 4823 ldr r0, [pc, #140] ; (802b984 ) - 802b8f6: f00c fe9f bl 8038638 - 802b8fa: 4603 mov r3, r0 - 802b8fc: 2b00 cmp r3, #0 - 802b8fe: d001 beq.n 802b904 + 802b934: 4823 ldr r0, [pc, #140] ; (802b9c4 ) + 802b936: f00c fe9f bl 8038678 + 802b93a: 4603 mov r3, r0 + 802b93c: 2b00 cmp r3, #0 + 802b93e: d001 beq.n 802b944 { Error_Handler(); - 802b900: f7ff fbdc bl 802b0bc + 802b940: f7ff fbdc bl 802b0fc } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 802b904: f44f 5380 mov.w r3, #4096 ; 0x1000 - 802b908: 62bb str r3, [r7, #40] ; 0x28 + 802b944: f44f 5380 mov.w r3, #4096 ; 0x1000 + 802b948: 62bb str r3, [r7, #40] ; 0x28 if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - 802b90a: f107 0328 add.w r3, r7, #40 ; 0x28 - 802b90e: 4619 mov r1, r3 - 802b910: 481c ldr r0, [pc, #112] ; (802b984 ) - 802b912: f00d fb05 bl 8038f20 - 802b916: 4603 mov r3, r0 - 802b918: 2b00 cmp r3, #0 - 802b91a: d001 beq.n 802b920 + 802b94a: f107 0328 add.w r3, r7, #40 ; 0x28 + 802b94e: 4619 mov r1, r3 + 802b950: 481c ldr r0, [pc, #112] ; (802b9c4 ) + 802b952: f00d fb05 bl 8038f60 + 802b956: 4603 mov r3, r0 + 802b958: 2b00 cmp r3, #0 + 802b95a: d001 beq.n 802b960 { Error_Handler(); - 802b91c: f7ff fbce bl 802b0bc + 802b95c: f7ff fbce bl 802b0fc } if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - 802b920: 4818 ldr r0, [pc, #96] ; (802b984 ) - 802b922: f00c ff59 bl 80387d8 - 802b926: 4603 mov r3, r0 - 802b928: 2b00 cmp r3, #0 - 802b92a: d001 beq.n 802b930 + 802b960: 4818 ldr r0, [pc, #96] ; (802b9c4 ) + 802b962: f00c ff59 bl 8038818 + 802b966: 4603 mov r3, r0 + 802b968: 2b00 cmp r3, #0 + 802b96a: d001 beq.n 802b970 { Error_Handler(); - 802b92c: f7ff fbc6 bl 802b0bc + 802b96c: f7ff fbc6 bl 802b0fc } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 802b930: 2300 movs r3, #0 - 802b932: 61fb str r3, [r7, #28] + 802b970: 2300 movs r3, #0 + 802b972: 61fb str r3, [r7, #28] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 802b934: 2300 movs r3, #0 - 802b936: 627b str r3, [r7, #36] ; 0x24 + 802b974: 2300 movs r3, #0 + 802b976: 627b str r3, [r7, #36] ; 0x24 if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - 802b938: f107 031c add.w r3, r7, #28 - 802b93c: 4619 mov r1, r3 - 802b93e: 4811 ldr r0, [pc, #68] ; (802b984 ) - 802b940: f00e f842 bl 80399c8 - 802b944: 4603 mov r3, r0 - 802b946: 2b00 cmp r3, #0 - 802b948: d001 beq.n 802b94e + 802b978: f107 031c add.w r3, r7, #28 + 802b97c: 4619 mov r1, r3 + 802b97e: 4811 ldr r0, [pc, #68] ; (802b9c4 ) + 802b980: f00e f842 bl 8039a08 + 802b984: 4603 mov r3, r0 + 802b986: 2b00 cmp r3, #0 + 802b988: d001 beq.n 802b98e { Error_Handler(); - 802b94a: f7ff fbb7 bl 802b0bc + 802b98a: f7ff fbb7 bl 802b0fc } sConfigOC.OCMode = TIM_OCMODE_PWM1; - 802b94e: 2360 movs r3, #96 ; 0x60 - 802b950: 603b str r3, [r7, #0] + 802b98e: 2360 movs r3, #96 ; 0x60 + 802b990: 603b str r3, [r7, #0] sConfigOC.Pulse = 0; - 802b952: 2300 movs r3, #0 - 802b954: 607b str r3, [r7, #4] + 802b992: 2300 movs r3, #0 + 802b994: 607b str r3, [r7, #4] sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - 802b956: 2300 movs r3, #0 - 802b958: 60bb str r3, [r7, #8] + 802b996: 2300 movs r3, #0 + 802b998: 60bb str r3, [r7, #8] sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - 802b95a: 2300 movs r3, #0 - 802b95c: 613b str r3, [r7, #16] + 802b99a: 2300 movs r3, #0 + 802b99c: 613b str r3, [r7, #16] if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) - 802b95e: 463b mov r3, r7 - 802b960: 2200 movs r2, #0 - 802b962: 4619 mov r1, r3 - 802b964: 4807 ldr r0, [pc, #28] ; (802b984 ) - 802b966: f00d f9c7 bl 8038cf8 - 802b96a: 4603 mov r3, r0 - 802b96c: 2b00 cmp r3, #0 - 802b96e: d001 beq.n 802b974 + 802b99e: 463b mov r3, r7 + 802b9a0: 2200 movs r2, #0 + 802b9a2: 4619 mov r1, r3 + 802b9a4: 4807 ldr r0, [pc, #28] ; (802b9c4 ) + 802b9a6: f00d f9c7 bl 8038d38 + 802b9aa: 4603 mov r3, r0 + 802b9ac: 2b00 cmp r3, #0 + 802b9ae: d001 beq.n 802b9b4 { Error_Handler(); - 802b970: f7ff fba4 bl 802b0bc + 802b9b0: f7ff fba4 bl 802b0fc } /* USER CODE BEGIN TIM2_Init 2 */ /* USER CODE END TIM2_Init 2 */ HAL_TIM_MspPostInit(&htim2); - 802b974: 4803 ldr r0, [pc, #12] ; (802b984 ) - 802b976: f000 f8b7 bl 802bae8 + 802b9b4: 4803 ldr r0, [pc, #12] ; (802b9c4 ) + 802b9b6: f000 f8b7 bl 802bb28 } - 802b97a: bf00 nop - 802b97c: 3738 adds r7, #56 ; 0x38 - 802b97e: 46bd mov sp, r7 - 802b980: bd80 pop {r7, pc} - 802b982: bf00 nop - 802b984: 2400b184 .word 0x2400b184 + 802b9ba: bf00 nop + 802b9bc: 3738 adds r7, #56 ; 0x38 + 802b9be: 46bd mov sp, r7 + 802b9c0: bd80 pop {r7, pc} + 802b9c2: bf00 nop + 802b9c4: 2400b184 .word 0x2400b184 -0802b988 : +0802b9c8 : /* TIM8 init function */ void MX_TIM8_Init(void) { - 802b988: b580 push {r7, lr} - 802b98a: b088 sub sp, #32 - 802b98c: af00 add r7, sp, #0 + 802b9c8: b580 push {r7, lr} + 802b9ca: b088 sub sp, #32 + 802b9cc: af00 add r7, sp, #0 /* USER CODE BEGIN TIM8_Init 0 */ /* USER CODE END TIM8_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - 802b98e: f107 0310 add.w r3, r7, #16 - 802b992: 2200 movs r2, #0 - 802b994: 601a str r2, [r3, #0] - 802b996: 605a str r2, [r3, #4] - 802b998: 609a str r2, [r3, #8] - 802b99a: 60da str r2, [r3, #12] + 802b9ce: f107 0310 add.w r3, r7, #16 + 802b9d2: 2200 movs r2, #0 + 802b9d4: 601a str r2, [r3, #0] + 802b9d6: 605a str r2, [r3, #4] + 802b9d8: 609a str r2, [r3, #8] + 802b9da: 60da str r2, [r3, #12] TIM_MasterConfigTypeDef sMasterConfig = {0}; - 802b99c: 1d3b adds r3, r7, #4 - 802b99e: 2200 movs r2, #0 - 802b9a0: 601a str r2, [r3, #0] - 802b9a2: 605a str r2, [r3, #4] - 802b9a4: 609a str r2, [r3, #8] + 802b9dc: 1d3b adds r3, r7, #4 + 802b9de: 2200 movs r2, #0 + 802b9e0: 601a str r2, [r3, #0] + 802b9e2: 605a str r2, [r3, #4] + 802b9e4: 609a str r2, [r3, #8] /* USER CODE BEGIN TIM8_Init 1 */ /* USER CODE END TIM8_Init 1 */ htim8.Instance = TIM8; - 802b9a6: 4b20 ldr r3, [pc, #128] ; (802ba28 ) - 802b9a8: 4a20 ldr r2, [pc, #128] ; (802ba2c ) - 802b9aa: 601a str r2, [r3, #0] + 802b9e6: 4b20 ldr r3, [pc, #128] ; (802ba68 ) + 802b9e8: 4a20 ldr r2, [pc, #128] ; (802ba6c ) + 802b9ea: 601a str r2, [r3, #0] htim8.Init.Prescaler = 2000-1; - 802b9ac: 4b1e ldr r3, [pc, #120] ; (802ba28 ) - 802b9ae: f240 72cf movw r2, #1999 ; 0x7cf - 802b9b2: 605a str r2, [r3, #4] + 802b9ec: 4b1e ldr r3, [pc, #120] ; (802ba68 ) + 802b9ee: f240 72cf movw r2, #1999 ; 0x7cf + 802b9f2: 605a str r2, [r3, #4] htim8.Init.CounterMode = TIM_COUNTERMODE_UP; - 802b9b4: 4b1c ldr r3, [pc, #112] ; (802ba28 ) - 802b9b6: 2200 movs r2, #0 - 802b9b8: 609a str r2, [r3, #8] + 802b9f4: 4b1c ldr r3, [pc, #112] ; (802ba68 ) + 802b9f6: 2200 movs r2, #0 + 802b9f8: 609a str r2, [r3, #8] htim8.Init.Period = 200-1; - 802b9ba: 4b1b ldr r3, [pc, #108] ; (802ba28 ) - 802b9bc: 22c7 movs r2, #199 ; 0xc7 - 802b9be: 60da str r2, [r3, #12] + 802b9fa: 4b1b ldr r3, [pc, #108] ; (802ba68 ) + 802b9fc: 22c7 movs r2, #199 ; 0xc7 + 802b9fe: 60da str r2, [r3, #12] htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - 802b9c0: 4b19 ldr r3, [pc, #100] ; (802ba28 ) - 802b9c2: 2200 movs r2, #0 - 802b9c4: 611a str r2, [r3, #16] + 802ba00: 4b19 ldr r3, [pc, #100] ; (802ba68 ) + 802ba02: 2200 movs r2, #0 + 802ba04: 611a str r2, [r3, #16] htim8.Init.RepetitionCounter = 0; - 802b9c6: 4b18 ldr r3, [pc, #96] ; (802ba28 ) - 802b9c8: 2200 movs r2, #0 - 802b9ca: 615a str r2, [r3, #20] + 802ba06: 4b18 ldr r3, [pc, #96] ; (802ba68 ) + 802ba08: 2200 movs r2, #0 + 802ba0a: 615a str r2, [r3, #20] htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; - 802b9cc: 4b16 ldr r3, [pc, #88] ; (802ba28 ) - 802b9ce: 2200 movs r2, #0 - 802b9d0: 619a str r2, [r3, #24] + 802ba0c: 4b16 ldr r3, [pc, #88] ; (802ba68 ) + 802ba0e: 2200 movs r2, #0 + 802ba10: 619a str r2, [r3, #24] if (HAL_TIM_Base_Init(&htim8) != HAL_OK) - 802b9d2: 4815 ldr r0, [pc, #84] ; (802ba28 ) - 802b9d4: f00c fe30 bl 8038638 - 802b9d8: 4603 mov r3, r0 - 802b9da: 2b00 cmp r3, #0 - 802b9dc: d001 beq.n 802b9e2 + 802ba12: 4815 ldr r0, [pc, #84] ; (802ba68 ) + 802ba14: f00c fe30 bl 8038678 + 802ba18: 4603 mov r3, r0 + 802ba1a: 2b00 cmp r3, #0 + 802ba1c: d001 beq.n 802ba22 { Error_Handler(); - 802b9de: f7ff fb6d bl 802b0bc + 802ba1e: f7ff fb6d bl 802b0fc } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - 802b9e2: f44f 5380 mov.w r3, #4096 ; 0x1000 - 802b9e6: 613b str r3, [r7, #16] + 802ba22: f44f 5380 mov.w r3, #4096 ; 0x1000 + 802ba26: 613b str r3, [r7, #16] if (HAL_TIM_ConfigClockSource(&htim8, &sClockSourceConfig) != HAL_OK) - 802b9e8: f107 0310 add.w r3, r7, #16 - 802b9ec: 4619 mov r1, r3 - 802b9ee: 480e ldr r0, [pc, #56] ; (802ba28 ) - 802b9f0: f00d fa96 bl 8038f20 - 802b9f4: 4603 mov r3, r0 - 802b9f6: 2b00 cmp r3, #0 - 802b9f8: d001 beq.n 802b9fe + 802ba28: f107 0310 add.w r3, r7, #16 + 802ba2c: 4619 mov r1, r3 + 802ba2e: 480e ldr r0, [pc, #56] ; (802ba68 ) + 802ba30: f00d fa96 bl 8038f60 + 802ba34: 4603 mov r3, r0 + 802ba36: 2b00 cmp r3, #0 + 802ba38: d001 beq.n 802ba3e { Error_Handler(); - 802b9fa: f7ff fb5f bl 802b0bc + 802ba3a: f7ff fb5f bl 802b0fc } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - 802b9fe: 2300 movs r3, #0 - 802ba00: 607b str r3, [r7, #4] + 802ba3e: 2300 movs r3, #0 + 802ba40: 607b str r3, [r7, #4] sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET; - 802ba02: 2300 movs r3, #0 - 802ba04: 60bb str r3, [r7, #8] + 802ba42: 2300 movs r3, #0 + 802ba44: 60bb str r3, [r7, #8] sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - 802ba06: 2300 movs r3, #0 - 802ba08: 60fb str r3, [r7, #12] + 802ba46: 2300 movs r3, #0 + 802ba48: 60fb str r3, [r7, #12] if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK) - 802ba0a: 1d3b adds r3, r7, #4 - 802ba0c: 4619 mov r1, r3 - 802ba0e: 4806 ldr r0, [pc, #24] ; (802ba28 ) - 802ba10: f00d ffda bl 80399c8 - 802ba14: 4603 mov r3, r0 - 802ba16: 2b00 cmp r3, #0 - 802ba18: d001 beq.n 802ba1e + 802ba4a: 1d3b adds r3, r7, #4 + 802ba4c: 4619 mov r1, r3 + 802ba4e: 4806 ldr r0, [pc, #24] ; (802ba68 ) + 802ba50: f00d ffda bl 8039a08 + 802ba54: 4603 mov r3, r0 + 802ba56: 2b00 cmp r3, #0 + 802ba58: d001 beq.n 802ba5e { Error_Handler(); - 802ba1a: f7ff fb4f bl 802b0bc + 802ba5a: f7ff fb4f bl 802b0fc } /* USER CODE BEGIN TIM8_Init 2 */ /* USER CODE END TIM8_Init 2 */ } - 802ba1e: bf00 nop - 802ba20: 3720 adds r7, #32 - 802ba22: 46bd mov sp, r7 - 802ba24: bd80 pop {r7, pc} - 802ba26: bf00 nop - 802ba28: 2400b1d0 .word 0x2400b1d0 - 802ba2c: 40010400 .word 0x40010400 + 802ba5e: bf00 nop + 802ba60: 3720 adds r7, #32 + 802ba62: 46bd mov sp, r7 + 802ba64: bd80 pop {r7, pc} + 802ba66: bf00 nop + 802ba68: 2400b1d0 .word 0x2400b1d0 + 802ba6c: 40010400 .word 0x40010400 -0802ba30 : +0802ba70 : void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) { - 802ba30: b580 push {r7, lr} - 802ba32: b086 sub sp, #24 - 802ba34: af00 add r7, sp, #0 - 802ba36: 6078 str r0, [r7, #4] + 802ba70: b580 push {r7, lr} + 802ba72: b086 sub sp, #24 + 802ba74: af00 add r7, sp, #0 + 802ba76: 6078 str r0, [r7, #4] if(tim_baseHandle->Instance==TIM1) - 802ba38: 687b ldr r3, [r7, #4] - 802ba3a: 681b ldr r3, [r3, #0] - 802ba3c: 4a27 ldr r2, [pc, #156] ; (802badc ) - 802ba3e: 4293 cmp r3, r2 - 802ba40: d117 bne.n 802ba72 + 802ba78: 687b ldr r3, [r7, #4] + 802ba7a: 681b ldr r3, [r3, #0] + 802ba7c: 4a27 ldr r2, [pc, #156] ; (802bb1c ) + 802ba7e: 4293 cmp r3, r2 + 802ba80: d117 bne.n 802bab2 { /* USER CODE BEGIN TIM1_MspInit 0 */ /* USER CODE END TIM1_MspInit 0 */ /* TIM1 clock enable */ __HAL_RCC_TIM1_CLK_ENABLE(); - 802ba42: 4b27 ldr r3, [pc, #156] ; (802bae0 ) - 802ba44: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802ba48: 4a25 ldr r2, [pc, #148] ; (802bae0 ) - 802ba4a: f043 0301 orr.w r3, r3, #1 - 802ba4e: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 - 802ba52: 4b23 ldr r3, [pc, #140] ; (802bae0 ) - 802ba54: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802ba58: f003 0301 and.w r3, r3, #1 - 802ba5c: 617b str r3, [r7, #20] - 802ba5e: 697b ldr r3, [r7, #20] + 802ba82: 4b27 ldr r3, [pc, #156] ; (802bb20 ) + 802ba84: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802ba88: 4a25 ldr r2, [pc, #148] ; (802bb20 ) + 802ba8a: f043 0301 orr.w r3, r3, #1 + 802ba8e: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 + 802ba92: 4b23 ldr r3, [pc, #140] ; (802bb20 ) + 802ba94: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802ba98: f003 0301 and.w r3, r3, #1 + 802ba9c: 617b str r3, [r7, #20] + 802ba9e: 697b ldr r3, [r7, #20] /* TIM1 interrupt Init */ HAL_NVIC_SetPriority(TIM1_UP_IRQn, 1, 0); - 802ba60: 2200 movs r2, #0 - 802ba62: 2101 movs r1, #1 - 802ba64: 2019 movs r0, #25 - 802ba66: f002 fb48 bl 802e0fa + 802baa0: 2200 movs r2, #0 + 802baa2: 2101 movs r1, #1 + 802baa4: 2019 movs r0, #25 + 802baa6: f002 fb48 bl 802e13a HAL_NVIC_EnableIRQ(TIM1_UP_IRQn); - 802ba6a: 2019 movs r0, #25 - 802ba6c: f002 fb5f bl 802e12e + 802baaa: 2019 movs r0, #25 + 802baac: f002 fb5f bl 802e16e HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn); /* USER CODE BEGIN TIM8_MspInit 1 */ /* USER CODE END TIM8_MspInit 1 */ } } - 802ba70: e030 b.n 802bad4 + 802bab0: e030 b.n 802bb14 else if(tim_baseHandle->Instance==TIM2) - 802ba72: 687b ldr r3, [r7, #4] - 802ba74: 681b ldr r3, [r3, #0] - 802ba76: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 802ba7a: d10f bne.n 802ba9c + 802bab2: 687b ldr r3, [r7, #4] + 802bab4: 681b ldr r3, [r3, #0] + 802bab6: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 802baba: d10f bne.n 802badc __HAL_RCC_TIM2_CLK_ENABLE(); - 802ba7c: 4b18 ldr r3, [pc, #96] ; (802bae0 ) - 802ba7e: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802ba82: 4a17 ldr r2, [pc, #92] ; (802bae0 ) - 802ba84: f043 0301 orr.w r3, r3, #1 - 802ba88: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802ba8c: 4b14 ldr r3, [pc, #80] ; (802bae0 ) - 802ba8e: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802ba92: f003 0301 and.w r3, r3, #1 - 802ba96: 613b str r3, [r7, #16] - 802ba98: 693b ldr r3, [r7, #16] -} - 802ba9a: e01b b.n 802bad4 + 802babc: 4b18 ldr r3, [pc, #96] ; (802bb20 ) + 802babe: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802bac2: 4a17 ldr r2, [pc, #92] ; (802bb20 ) + 802bac4: f043 0301 orr.w r3, r3, #1 + 802bac8: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802bacc: 4b14 ldr r3, [pc, #80] ; (802bb20 ) + 802bace: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802bad2: f003 0301 and.w r3, r3, #1 + 802bad6: 613b str r3, [r7, #16] + 802bad8: 693b ldr r3, [r7, #16] +} + 802bada: e01b b.n 802bb14 else if(tim_baseHandle->Instance==TIM8) - 802ba9c: 687b ldr r3, [r7, #4] - 802ba9e: 681b ldr r3, [r3, #0] - 802baa0: 4a10 ldr r2, [pc, #64] ; (802bae4 ) - 802baa2: 4293 cmp r3, r2 - 802baa4: d116 bne.n 802bad4 + 802badc: 687b ldr r3, [r7, #4] + 802bade: 681b ldr r3, [r3, #0] + 802bae0: 4a10 ldr r2, [pc, #64] ; (802bb24 ) + 802bae2: 4293 cmp r3, r2 + 802bae4: d116 bne.n 802bb14 __HAL_RCC_TIM8_CLK_ENABLE(); - 802baa6: 4b0e ldr r3, [pc, #56] ; (802bae0 ) - 802baa8: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802baac: 4a0c ldr r2, [pc, #48] ; (802bae0 ) - 802baae: f043 0302 orr.w r3, r3, #2 - 802bab2: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 - 802bab6: 4b0a ldr r3, [pc, #40] ; (802bae0 ) - 802bab8: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802babc: f003 0302 and.w r3, r3, #2 - 802bac0: 60fb str r3, [r7, #12] - 802bac2: 68fb ldr r3, [r7, #12] + 802bae6: 4b0e ldr r3, [pc, #56] ; (802bb20 ) + 802bae8: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802baec: 4a0c ldr r2, [pc, #48] ; (802bb20 ) + 802baee: f043 0302 orr.w r3, r3, #2 + 802baf2: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 + 802baf6: 4b0a ldr r3, [pc, #40] ; (802bb20 ) + 802baf8: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802bafc: f003 0302 and.w r3, r3, #2 + 802bb00: 60fb str r3, [r7, #12] + 802bb02: 68fb ldr r3, [r7, #12] HAL_NVIC_SetPriority(TIM8_UP_TIM13_IRQn, 0, 0); - 802bac4: 2200 movs r2, #0 - 802bac6: 2100 movs r1, #0 - 802bac8: 202c movs r0, #44 ; 0x2c - 802baca: f002 fb16 bl 802e0fa + 802bb04: 2200 movs r2, #0 + 802bb06: 2100 movs r1, #0 + 802bb08: 202c movs r0, #44 ; 0x2c + 802bb0a: f002 fb16 bl 802e13a HAL_NVIC_EnableIRQ(TIM8_UP_TIM13_IRQn); - 802bace: 202c movs r0, #44 ; 0x2c - 802bad0: f002 fb2d bl 802e12e -} - 802bad4: bf00 nop - 802bad6: 3718 adds r7, #24 - 802bad8: 46bd mov sp, r7 - 802bada: bd80 pop {r7, pc} - 802badc: 40010000 .word 0x40010000 - 802bae0: 58024400 .word 0x58024400 - 802bae4: 40010400 .word 0x40010400 - -0802bae8 : + 802bb0e: 202c movs r0, #44 ; 0x2c + 802bb10: f002 fb2d bl 802e16e +} + 802bb14: bf00 nop + 802bb16: 3718 adds r7, #24 + 802bb18: 46bd mov sp, r7 + 802bb1a: bd80 pop {r7, pc} + 802bb1c: 40010000 .word 0x40010000 + 802bb20: 58024400 .word 0x58024400 + 802bb24: 40010400 .word 0x40010400 + +0802bb28 : void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) { - 802bae8: b580 push {r7, lr} - 802baea: b088 sub sp, #32 - 802baec: af00 add r7, sp, #0 - 802baee: 6078 str r0, [r7, #4] + 802bb28: b580 push {r7, lr} + 802bb2a: b088 sub sp, #32 + 802bb2c: af00 add r7, sp, #0 + 802bb2e: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802baf0: f107 030c add.w r3, r7, #12 - 802baf4: 2200 movs r2, #0 - 802baf6: 601a str r2, [r3, #0] - 802baf8: 605a str r2, [r3, #4] - 802bafa: 609a str r2, [r3, #8] - 802bafc: 60da str r2, [r3, #12] - 802bafe: 611a str r2, [r3, #16] + 802bb30: f107 030c add.w r3, r7, #12 + 802bb34: 2200 movs r2, #0 + 802bb36: 601a str r2, [r3, #0] + 802bb38: 605a str r2, [r3, #4] + 802bb3a: 609a str r2, [r3, #8] + 802bb3c: 60da str r2, [r3, #12] + 802bb3e: 611a str r2, [r3, #16] if(timHandle->Instance==TIM2) - 802bb00: 687b ldr r3, [r7, #4] - 802bb02: 681b ldr r3, [r3, #0] - 802bb04: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 802bb08: d11e bne.n 802bb48 + 802bb40: 687b ldr r3, [r7, #4] + 802bb42: 681b ldr r3, [r3, #0] + 802bb44: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 802bb48: d11e bne.n 802bb88 { /* USER CODE BEGIN TIM2_MspPostInit 0 */ /* USER CODE END TIM2_MspPostInit 0 */ __HAL_RCC_GPIOA_CLK_ENABLE(); - 802bb0a: 4b11 ldr r3, [pc, #68] ; (802bb50 ) - 802bb0c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802bb10: 4a0f ldr r2, [pc, #60] ; (802bb50 ) - 802bb12: f043 0301 orr.w r3, r3, #1 - 802bb16: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802bb1a: 4b0d ldr r3, [pc, #52] ; (802bb50 ) - 802bb1c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802bb20: f003 0301 and.w r3, r3, #1 - 802bb24: 60bb str r3, [r7, #8] - 802bb26: 68bb ldr r3, [r7, #8] + 802bb4a: 4b11 ldr r3, [pc, #68] ; (802bb90 ) + 802bb4c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802bb50: 4a0f ldr r2, [pc, #60] ; (802bb90 ) + 802bb52: f043 0301 orr.w r3, r3, #1 + 802bb56: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802bb5a: 4b0d ldr r3, [pc, #52] ; (802bb90 ) + 802bb5c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802bb60: f003 0301 and.w r3, r3, #1 + 802bb64: 60bb str r3, [r7, #8] + 802bb66: 68bb ldr r3, [r7, #8] /**TIM2 GPIO Configuration PA5 ------> TIM2_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_5; - 802bb28: 2320 movs r3, #32 - 802bb2a: 60fb str r3, [r7, #12] + 802bb68: 2320 movs r3, #32 + 802bb6a: 60fb str r3, [r7, #12] GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802bb2c: 2302 movs r3, #2 - 802bb2e: 613b str r3, [r7, #16] + 802bb6c: 2302 movs r3, #2 + 802bb6e: 613b str r3, [r7, #16] GPIO_InitStruct.Pull = GPIO_NOPULL; - 802bb30: 2300 movs r3, #0 - 802bb32: 617b str r3, [r7, #20] + 802bb70: 2300 movs r3, #0 + 802bb72: 617b str r3, [r7, #20] GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802bb34: 2300 movs r3, #0 - 802bb36: 61bb str r3, [r7, #24] + 802bb74: 2300 movs r3, #0 + 802bb76: 61bb str r3, [r7, #24] GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; - 802bb38: 2301 movs r3, #1 - 802bb3a: 61fb str r3, [r7, #28] + 802bb78: 2301 movs r3, #1 + 802bb7a: 61fb str r3, [r7, #28] HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802bb3c: f107 030c add.w r3, r7, #12 - 802bb40: 4619 mov r1, r3 - 802bb42: 4804 ldr r0, [pc, #16] ; (802bb54 ) - 802bb44: f007 feb0 bl 80338a8 + 802bb7c: f107 030c add.w r3, r7, #12 + 802bb80: 4619 mov r1, r3 + 802bb82: 4804 ldr r0, [pc, #16] ; (802bb94 ) + 802bb84: f007 feb0 bl 80338e8 /* USER CODE BEGIN TIM2_MspPostInit 1 */ /* USER CODE END TIM2_MspPostInit 1 */ } } - 802bb48: bf00 nop - 802bb4a: 3720 adds r7, #32 - 802bb4c: 46bd mov sp, r7 - 802bb4e: bd80 pop {r7, pc} - 802bb50: 58024400 .word 0x58024400 - 802bb54: 58020000 .word 0x58020000 + 802bb88: bf00 nop + 802bb8a: 3720 adds r7, #32 + 802bb8c: 46bd mov sp, r7 + 802bb8e: bd80 pop {r7, pc} + 802bb90: 58024400 .word 0x58024400 + 802bb94: 58020000 .word 0x58020000 -0802bb58 : +0802bb98 : DMA_HandleTypeDef hdma_usart6_tx; /* LPUART1 init function */ void MX_LPUART1_UART_Init(void) { - 802bb58: b580 push {r7, lr} - 802bb5a: af00 add r7, sp, #0 + 802bb98: b580 push {r7, lr} + 802bb9a: af00 add r7, sp, #0 /* USER CODE END LPUART1_Init 0 */ /* USER CODE BEGIN LPUART1_Init 1 */ /* USER CODE END LPUART1_Init 1 */ hlpuart1.Instance = LPUART1; - 802bb5c: 4b26 ldr r3, [pc, #152] ; (802bbf8 ) - 802bb5e: 4a27 ldr r2, [pc, #156] ; (802bbfc ) - 802bb60: 601a str r2, [r3, #0] + 802bb9c: 4b26 ldr r3, [pc, #152] ; (802bc38 ) + 802bb9e: 4a27 ldr r2, [pc, #156] ; (802bc3c ) + 802bba0: 601a str r2, [r3, #0] hlpuart1.Init.BaudRate = 115200; - 802bb62: 4b25 ldr r3, [pc, #148] ; (802bbf8 ) - 802bb64: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802bb68: 605a str r2, [r3, #4] + 802bba2: 4b25 ldr r3, [pc, #148] ; (802bc38 ) + 802bba4: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802bba8: 605a str r2, [r3, #4] hlpuart1.Init.WordLength = UART_WORDLENGTH_8B; - 802bb6a: 4b23 ldr r3, [pc, #140] ; (802bbf8 ) - 802bb6c: 2200 movs r2, #0 - 802bb6e: 609a str r2, [r3, #8] + 802bbaa: 4b23 ldr r3, [pc, #140] ; (802bc38 ) + 802bbac: 2200 movs r2, #0 + 802bbae: 609a str r2, [r3, #8] hlpuart1.Init.StopBits = UART_STOPBITS_1; - 802bb70: 4b21 ldr r3, [pc, #132] ; (802bbf8 ) - 802bb72: 2200 movs r2, #0 - 802bb74: 60da str r2, [r3, #12] + 802bbb0: 4b21 ldr r3, [pc, #132] ; (802bc38 ) + 802bbb2: 2200 movs r2, #0 + 802bbb4: 60da str r2, [r3, #12] hlpuart1.Init.Parity = UART_PARITY_NONE; - 802bb76: 4b20 ldr r3, [pc, #128] ; (802bbf8 ) - 802bb78: 2200 movs r2, #0 - 802bb7a: 611a str r2, [r3, #16] + 802bbb6: 4b20 ldr r3, [pc, #128] ; (802bc38 ) + 802bbb8: 2200 movs r2, #0 + 802bbba: 611a str r2, [r3, #16] hlpuart1.Init.Mode = UART_MODE_TX_RX; - 802bb7c: 4b1e ldr r3, [pc, #120] ; (802bbf8 ) - 802bb7e: 220c movs r2, #12 - 802bb80: 615a str r2, [r3, #20] + 802bbbc: 4b1e ldr r3, [pc, #120] ; (802bc38 ) + 802bbbe: 220c movs r2, #12 + 802bbc0: 615a str r2, [r3, #20] hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bb82: 4b1d ldr r3, [pc, #116] ; (802bbf8 ) - 802bb84: 2200 movs r2, #0 - 802bb86: 619a str r2, [r3, #24] + 802bbc2: 4b1d ldr r3, [pc, #116] ; (802bc38 ) + 802bbc4: 2200 movs r2, #0 + 802bbc6: 619a str r2, [r3, #24] hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bb88: 4b1b ldr r3, [pc, #108] ; (802bbf8 ) - 802bb8a: 2200 movs r2, #0 - 802bb8c: 621a str r2, [r3, #32] + 802bbc8: 4b1b ldr r3, [pc, #108] ; (802bc38 ) + 802bbca: 2200 movs r2, #0 + 802bbcc: 621a str r2, [r3, #32] hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bb8e: 4b1a ldr r3, [pc, #104] ; (802bbf8 ) - 802bb90: 2200 movs r2, #0 - 802bb92: 625a str r2, [r3, #36] ; 0x24 + 802bbce: 4b1a ldr r3, [pc, #104] ; (802bc38 ) + 802bbd0: 2200 movs r2, #0 + 802bbd2: 625a str r2, [r3, #36] ; 0x24 hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802bb94: 4b18 ldr r3, [pc, #96] ; (802bbf8 ) - 802bb96: 2230 movs r2, #48 ; 0x30 - 802bb98: 629a str r2, [r3, #40] ; 0x28 + 802bbd4: 4b18 ldr r3, [pc, #96] ; (802bc38 ) + 802bbd6: 2230 movs r2, #48 ; 0x30 + 802bbd8: 629a str r2, [r3, #40] ; 0x28 hlpuart1.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bb9a: 4b17 ldr r3, [pc, #92] ; (802bbf8 ) - 802bb9c: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bba0: 63da str r2, [r3, #60] ; 0x3c + 802bbda: 4b17 ldr r3, [pc, #92] ; (802bc38 ) + 802bbdc: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bbe0: 63da str r2, [r3, #60] ; 0x3c hlpuart1.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bba2: 4b15 ldr r3, [pc, #84] ; (802bbf8 ) - 802bba4: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802bba8: 641a str r2, [r3, #64] ; 0x40 + 802bbe2: 4b15 ldr r3, [pc, #84] ; (802bc38 ) + 802bbe4: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bbe8: 641a str r2, [r3, #64] ; 0x40 hlpuart1.FifoMode = UART_FIFOMODE_DISABLE; - 802bbaa: 4b13 ldr r3, [pc, #76] ; (802bbf8 ) - 802bbac: 2200 movs r2, #0 - 802bbae: 665a str r2, [r3, #100] ; 0x64 + 802bbea: 4b13 ldr r3, [pc, #76] ; (802bc38 ) + 802bbec: 2200 movs r2, #0 + 802bbee: 665a str r2, [r3, #100] ; 0x64 if (HAL_UART_Init(&hlpuart1) != HAL_OK) - 802bbb0: 4811 ldr r0, [pc, #68] ; (802bbf8 ) - 802bbb2: f00d ffb5 bl 8039b20 - 802bbb6: 4603 mov r3, r0 - 802bbb8: 2b00 cmp r3, #0 - 802bbba: d001 beq.n 802bbc0 + 802bbf0: 4811 ldr r0, [pc, #68] ; (802bc38 ) + 802bbf2: f00d ffb5 bl 8039b60 + 802bbf6: 4603 mov r3, r0 + 802bbf8: 2b00 cmp r3, #0 + 802bbfa: d001 beq.n 802bc00 { Error_Handler(); - 802bbbc: f7ff fa7e bl 802b0bc + 802bbfc: f7ff fa7e bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bbc0: 2100 movs r1, #0 - 802bbc2: 480d ldr r0, [pc, #52] ; (802bbf8 ) - 802bbc4: f010 fbf0 bl 803c3a8 - 802bbc8: 4603 mov r3, r0 - 802bbca: 2b00 cmp r3, #0 - 802bbcc: d001 beq.n 802bbd2 + 802bc00: 2100 movs r1, #0 + 802bc02: 480d ldr r0, [pc, #52] ; (802bc38 ) + 802bc04: f010 fbf0 bl 803c3e8 + 802bc08: 4603 mov r3, r0 + 802bc0a: 2b00 cmp r3, #0 + 802bc0c: d001 beq.n 802bc12 { Error_Handler(); - 802bbce: f7ff fa75 bl 802b0bc + 802bc0e: f7ff fa75 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bbd2: 2100 movs r1, #0 - 802bbd4: 4808 ldr r0, [pc, #32] ; (802bbf8 ) - 802bbd6: f010 fc25 bl 803c424 - 802bbda: 4603 mov r3, r0 - 802bbdc: 2b00 cmp r3, #0 - 802bbde: d001 beq.n 802bbe4 + 802bc12: 2100 movs r1, #0 + 802bc14: 4808 ldr r0, [pc, #32] ; (802bc38 ) + 802bc16: f010 fc25 bl 803c464 + 802bc1a: 4603 mov r3, r0 + 802bc1c: 2b00 cmp r3, #0 + 802bc1e: d001 beq.n 802bc24 { Error_Handler(); - 802bbe0: f7ff fa6c bl 802b0bc + 802bc20: f7ff fa6c bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK) - 802bbe4: 4804 ldr r0, [pc, #16] ; (802bbf8 ) - 802bbe6: f010 fba6 bl 803c336 - 802bbea: 4603 mov r3, r0 - 802bbec: 2b00 cmp r3, #0 - 802bbee: d001 beq.n 802bbf4 + 802bc24: 4804 ldr r0, [pc, #16] ; (802bc38 ) + 802bc26: f010 fba6 bl 803c376 + 802bc2a: 4603 mov r3, r0 + 802bc2c: 2b00 cmp r3, #0 + 802bc2e: d001 beq.n 802bc34 { Error_Handler(); - 802bbf0: f7ff fa64 bl 802b0bc + 802bc30: f7ff fa64 bl 802b0fc } /* USER CODE BEGIN LPUART1_Init 2 */ /* USER CODE END LPUART1_Init 2 */ } - 802bbf4: bf00 nop - 802bbf6: bd80 pop {r7, pc} - 802bbf8: 2400b21c .word 0x2400b21c - 802bbfc: 58000c00 .word 0x58000c00 + 802bc34: bf00 nop + 802bc36: bd80 pop {r7, pc} + 802bc38: 2400b21c .word 0x2400b21c + 802bc3c: 58000c00 .word 0x58000c00 -0802bc00 : +0802bc40 : /* UART4 init function */ void MX_UART4_Init(void) { - 802bc00: b580 push {r7, lr} - 802bc02: af00 add r7, sp, #0 + 802bc40: b580 push {r7, lr} + 802bc42: af00 add r7, sp, #0 /* USER CODE END UART4_Init 0 */ /* USER CODE BEGIN UART4_Init 1 */ /* USER CODE END UART4_Init 1 */ huart4.Instance = UART4; - 802bc04: 4b26 ldr r3, [pc, #152] ; (802bca0 ) - 802bc06: 4a27 ldr r2, [pc, #156] ; (802bca4 ) - 802bc08: 601a str r2, [r3, #0] + 802bc44: 4b26 ldr r3, [pc, #152] ; (802bce0 ) + 802bc46: 4a27 ldr r2, [pc, #156] ; (802bce4 ) + 802bc48: 601a str r2, [r3, #0] huart4.Init.BaudRate = 115200; - 802bc0a: 4b25 ldr r3, [pc, #148] ; (802bca0 ) - 802bc0c: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802bc10: 605a str r2, [r3, #4] + 802bc4a: 4b25 ldr r3, [pc, #148] ; (802bce0 ) + 802bc4c: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802bc50: 605a str r2, [r3, #4] huart4.Init.WordLength = UART_WORDLENGTH_8B; - 802bc12: 4b23 ldr r3, [pc, #140] ; (802bca0 ) - 802bc14: 2200 movs r2, #0 - 802bc16: 609a str r2, [r3, #8] + 802bc52: 4b23 ldr r3, [pc, #140] ; (802bce0 ) + 802bc54: 2200 movs r2, #0 + 802bc56: 609a str r2, [r3, #8] huart4.Init.StopBits = UART_STOPBITS_1; - 802bc18: 4b21 ldr r3, [pc, #132] ; (802bca0 ) - 802bc1a: 2200 movs r2, #0 - 802bc1c: 60da str r2, [r3, #12] + 802bc58: 4b21 ldr r3, [pc, #132] ; (802bce0 ) + 802bc5a: 2200 movs r2, #0 + 802bc5c: 60da str r2, [r3, #12] huart4.Init.Parity = UART_PARITY_NONE; - 802bc1e: 4b20 ldr r3, [pc, #128] ; (802bca0 ) - 802bc20: 2200 movs r2, #0 - 802bc22: 611a str r2, [r3, #16] + 802bc5e: 4b20 ldr r3, [pc, #128] ; (802bce0 ) + 802bc60: 2200 movs r2, #0 + 802bc62: 611a str r2, [r3, #16] huart4.Init.Mode = UART_MODE_TX_RX; - 802bc24: 4b1e ldr r3, [pc, #120] ; (802bca0 ) - 802bc26: 220c movs r2, #12 - 802bc28: 615a str r2, [r3, #20] + 802bc64: 4b1e ldr r3, [pc, #120] ; (802bce0 ) + 802bc66: 220c movs r2, #12 + 802bc68: 615a str r2, [r3, #20] huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bc2a: 4b1d ldr r3, [pc, #116] ; (802bca0 ) - 802bc2c: 2200 movs r2, #0 - 802bc2e: 619a str r2, [r3, #24] + 802bc6a: 4b1d ldr r3, [pc, #116] ; (802bce0 ) + 802bc6c: 2200 movs r2, #0 + 802bc6e: 619a str r2, [r3, #24] huart4.Init.OverSampling = UART_OVERSAMPLING_16; - 802bc30: 4b1b ldr r3, [pc, #108] ; (802bca0 ) - 802bc32: 2200 movs r2, #0 - 802bc34: 61da str r2, [r3, #28] + 802bc70: 4b1b ldr r3, [pc, #108] ; (802bce0 ) + 802bc72: 2200 movs r2, #0 + 802bc74: 61da str r2, [r3, #28] huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bc36: 4b1a ldr r3, [pc, #104] ; (802bca0 ) - 802bc38: 2200 movs r2, #0 - 802bc3a: 621a str r2, [r3, #32] + 802bc76: 4b1a ldr r3, [pc, #104] ; (802bce0 ) + 802bc78: 2200 movs r2, #0 + 802bc7a: 621a str r2, [r3, #32] huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bc3c: 4b18 ldr r3, [pc, #96] ; (802bca0 ) - 802bc3e: 2200 movs r2, #0 - 802bc40: 625a str r2, [r3, #36] ; 0x24 + 802bc7c: 4b18 ldr r3, [pc, #96] ; (802bce0 ) + 802bc7e: 2200 movs r2, #0 + 802bc80: 625a str r2, [r3, #36] ; 0x24 huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802bc42: 4b17 ldr r3, [pc, #92] ; (802bca0 ) - 802bc44: 2230 movs r2, #48 ; 0x30 - 802bc46: 629a str r2, [r3, #40] ; 0x28 + 802bc82: 4b17 ldr r3, [pc, #92] ; (802bce0 ) + 802bc84: 2230 movs r2, #48 ; 0x30 + 802bc86: 629a str r2, [r3, #40] ; 0x28 huart4.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bc48: 4b15 ldr r3, [pc, #84] ; (802bca0 ) - 802bc4a: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bc4e: 63da str r2, [r3, #60] ; 0x3c + 802bc88: 4b15 ldr r3, [pc, #84] ; (802bce0 ) + 802bc8a: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bc8e: 63da str r2, [r3, #60] ; 0x3c huart4.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bc50: 4b13 ldr r3, [pc, #76] ; (802bca0 ) - 802bc52: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802bc56: 641a str r2, [r3, #64] ; 0x40 + 802bc90: 4b13 ldr r3, [pc, #76] ; (802bce0 ) + 802bc92: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bc96: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart4) != HAL_OK) - 802bc58: 4811 ldr r0, [pc, #68] ; (802bca0 ) - 802bc5a: f00d ff61 bl 8039b20 - 802bc5e: 4603 mov r3, r0 - 802bc60: 2b00 cmp r3, #0 - 802bc62: d001 beq.n 802bc68 + 802bc98: 4811 ldr r0, [pc, #68] ; (802bce0 ) + 802bc9a: f00d ff61 bl 8039b60 + 802bc9e: 4603 mov r3, r0 + 802bca0: 2b00 cmp r3, #0 + 802bca2: d001 beq.n 802bca8 { Error_Handler(); - 802bc64: f7ff fa2a bl 802b0bc + 802bca4: f7ff fa2a bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bc68: 2100 movs r1, #0 - 802bc6a: 480d ldr r0, [pc, #52] ; (802bca0 ) - 802bc6c: f010 fb9c bl 803c3a8 - 802bc70: 4603 mov r3, r0 - 802bc72: 2b00 cmp r3, #0 - 802bc74: d001 beq.n 802bc7a + 802bca8: 2100 movs r1, #0 + 802bcaa: 480d ldr r0, [pc, #52] ; (802bce0 ) + 802bcac: f010 fb9c bl 803c3e8 + 802bcb0: 4603 mov r3, r0 + 802bcb2: 2b00 cmp r3, #0 + 802bcb4: d001 beq.n 802bcba { Error_Handler(); - 802bc76: f7ff fa21 bl 802b0bc + 802bcb6: f7ff fa21 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bc7a: 2100 movs r1, #0 - 802bc7c: 4808 ldr r0, [pc, #32] ; (802bca0 ) - 802bc7e: f010 fbd1 bl 803c424 - 802bc82: 4603 mov r3, r0 - 802bc84: 2b00 cmp r3, #0 - 802bc86: d001 beq.n 802bc8c + 802bcba: 2100 movs r1, #0 + 802bcbc: 4808 ldr r0, [pc, #32] ; (802bce0 ) + 802bcbe: f010 fbd1 bl 803c464 + 802bcc2: 4603 mov r3, r0 + 802bcc4: 2b00 cmp r3, #0 + 802bcc6: d001 beq.n 802bccc { Error_Handler(); - 802bc88: f7ff fa18 bl 802b0bc + 802bcc8: f7ff fa18 bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK) - 802bc8c: 4804 ldr r0, [pc, #16] ; (802bca0 ) - 802bc8e: f010 fb52 bl 803c336 - 802bc92: 4603 mov r3, r0 - 802bc94: 2b00 cmp r3, #0 - 802bc96: d001 beq.n 802bc9c + 802bccc: 4804 ldr r0, [pc, #16] ; (802bce0 ) + 802bcce: f010 fb52 bl 803c376 + 802bcd2: 4603 mov r3, r0 + 802bcd4: 2b00 cmp r3, #0 + 802bcd6: d001 beq.n 802bcdc { Error_Handler(); - 802bc98: f7ff fa10 bl 802b0bc + 802bcd8: f7ff fa10 bl 802b0fc } /* USER CODE BEGIN UART4_Init 2 */ /* USER CODE END UART4_Init 2 */ } - 802bc9c: bf00 nop - 802bc9e: bd80 pop {r7, pc} - 802bca0: 2400b2ac .word 0x2400b2ac - 802bca4: 40004c00 .word 0x40004c00 + 802bcdc: bf00 nop + 802bcde: bd80 pop {r7, pc} + 802bce0: 2400b2ac .word 0x2400b2ac + 802bce4: 40004c00 .word 0x40004c00 -0802bca8 : +0802bce8 : /* UART5 init function */ void MX_UART5_Init(void) { - 802bca8: b580 push {r7, lr} - 802bcaa: af00 add r7, sp, #0 + 802bce8: b580 push {r7, lr} + 802bcea: af00 add r7, sp, #0 /* USER CODE END UART5_Init 0 */ /* USER CODE BEGIN UART5_Init 1 */ /* USER CODE END UART5_Init 1 */ huart5.Instance = UART5; - 802bcac: 4b27 ldr r3, [pc, #156] ; (802bd4c ) - 802bcae: 4a28 ldr r2, [pc, #160] ; (802bd50 ) - 802bcb0: 601a str r2, [r3, #0] + 802bcec: 4b27 ldr r3, [pc, #156] ; (802bd8c ) + 802bcee: 4a28 ldr r2, [pc, #160] ; (802bd90 ) + 802bcf0: 601a str r2, [r3, #0] huart5.Init.BaudRate = 100000; - 802bcb2: 4b26 ldr r3, [pc, #152] ; (802bd4c ) - 802bcb4: 4a27 ldr r2, [pc, #156] ; (802bd54 ) - 802bcb6: 605a str r2, [r3, #4] + 802bcf2: 4b26 ldr r3, [pc, #152] ; (802bd8c ) + 802bcf4: 4a27 ldr r2, [pc, #156] ; (802bd94 ) + 802bcf6: 605a str r2, [r3, #4] huart5.Init.WordLength = UART_WORDLENGTH_9B; - 802bcb8: 4b24 ldr r3, [pc, #144] ; (802bd4c ) - 802bcba: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bcbe: 609a str r2, [r3, #8] + 802bcf8: 4b24 ldr r3, [pc, #144] ; (802bd8c ) + 802bcfa: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bcfe: 609a str r2, [r3, #8] huart5.Init.StopBits = UART_STOPBITS_1; - 802bcc0: 4b22 ldr r3, [pc, #136] ; (802bd4c ) - 802bcc2: 2200 movs r2, #0 - 802bcc4: 60da str r2, [r3, #12] + 802bd00: 4b22 ldr r3, [pc, #136] ; (802bd8c ) + 802bd02: 2200 movs r2, #0 + 802bd04: 60da str r2, [r3, #12] huart5.Init.Parity = UART_PARITY_EVEN; - 802bcc6: 4b21 ldr r3, [pc, #132] ; (802bd4c ) - 802bcc8: f44f 6280 mov.w r2, #1024 ; 0x400 - 802bccc: 611a str r2, [r3, #16] + 802bd06: 4b21 ldr r3, [pc, #132] ; (802bd8c ) + 802bd08: f44f 6280 mov.w r2, #1024 ; 0x400 + 802bd0c: 611a str r2, [r3, #16] huart5.Init.Mode = UART_MODE_TX_RX; - 802bcce: 4b1f ldr r3, [pc, #124] ; (802bd4c ) - 802bcd0: 220c movs r2, #12 - 802bcd2: 615a str r2, [r3, #20] + 802bd0e: 4b1f ldr r3, [pc, #124] ; (802bd8c ) + 802bd10: 220c movs r2, #12 + 802bd12: 615a str r2, [r3, #20] huart5.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bcd4: 4b1d ldr r3, [pc, #116] ; (802bd4c ) - 802bcd6: 2200 movs r2, #0 - 802bcd8: 619a str r2, [r3, #24] + 802bd14: 4b1d ldr r3, [pc, #116] ; (802bd8c ) + 802bd16: 2200 movs r2, #0 + 802bd18: 619a str r2, [r3, #24] huart5.Init.OverSampling = UART_OVERSAMPLING_16; - 802bcda: 4b1c ldr r3, [pc, #112] ; (802bd4c ) - 802bcdc: 2200 movs r2, #0 - 802bcde: 61da str r2, [r3, #28] + 802bd1a: 4b1c ldr r3, [pc, #112] ; (802bd8c ) + 802bd1c: 2200 movs r2, #0 + 802bd1e: 61da str r2, [r3, #28] huart5.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bce0: 4b1a ldr r3, [pc, #104] ; (802bd4c ) - 802bce2: 2200 movs r2, #0 - 802bce4: 621a str r2, [r3, #32] + 802bd20: 4b1a ldr r3, [pc, #104] ; (802bd8c ) + 802bd22: 2200 movs r2, #0 + 802bd24: 621a str r2, [r3, #32] huart5.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bce6: 4b19 ldr r3, [pc, #100] ; (802bd4c ) - 802bce8: 2200 movs r2, #0 - 802bcea: 625a str r2, [r3, #36] ; 0x24 + 802bd26: 4b19 ldr r3, [pc, #100] ; (802bd8c ) + 802bd28: 2200 movs r2, #0 + 802bd2a: 625a str r2, [r3, #36] ; 0x24 huart5.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802bcec: 4b17 ldr r3, [pc, #92] ; (802bd4c ) - 802bcee: 2230 movs r2, #48 ; 0x30 - 802bcf0: 629a str r2, [r3, #40] ; 0x28 + 802bd2c: 4b17 ldr r3, [pc, #92] ; (802bd8c ) + 802bd2e: 2230 movs r2, #48 ; 0x30 + 802bd30: 629a str r2, [r3, #40] ; 0x28 huart5.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bcf2: 4b16 ldr r3, [pc, #88] ; (802bd4c ) - 802bcf4: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bcf8: 63da str r2, [r3, #60] ; 0x3c + 802bd32: 4b16 ldr r3, [pc, #88] ; (802bd8c ) + 802bd34: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bd38: 63da str r2, [r3, #60] ; 0x3c huart5.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bcfa: 4b14 ldr r3, [pc, #80] ; (802bd4c ) - 802bcfc: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802bd00: 641a str r2, [r3, #64] ; 0x40 + 802bd3a: 4b14 ldr r3, [pc, #80] ; (802bd8c ) + 802bd3c: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bd40: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart5) != HAL_OK) - 802bd02: 4812 ldr r0, [pc, #72] ; (802bd4c ) - 802bd04: f00d ff0c bl 8039b20 - 802bd08: 4603 mov r3, r0 - 802bd0a: 2b00 cmp r3, #0 - 802bd0c: d001 beq.n 802bd12 + 802bd42: 4812 ldr r0, [pc, #72] ; (802bd8c ) + 802bd44: f00d ff0c bl 8039b60 + 802bd48: 4603 mov r3, r0 + 802bd4a: 2b00 cmp r3, #0 + 802bd4c: d001 beq.n 802bd52 { Error_Handler(); - 802bd0e: f7ff f9d5 bl 802b0bc + 802bd4e: f7ff f9d5 bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart5, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bd12: 2100 movs r1, #0 - 802bd14: 480d ldr r0, [pc, #52] ; (802bd4c ) - 802bd16: f010 fb47 bl 803c3a8 - 802bd1a: 4603 mov r3, r0 - 802bd1c: 2b00 cmp r3, #0 - 802bd1e: d001 beq.n 802bd24 + 802bd52: 2100 movs r1, #0 + 802bd54: 480d ldr r0, [pc, #52] ; (802bd8c ) + 802bd56: f010 fb47 bl 803c3e8 + 802bd5a: 4603 mov r3, r0 + 802bd5c: 2b00 cmp r3, #0 + 802bd5e: d001 beq.n 802bd64 { Error_Handler(); - 802bd20: f7ff f9cc bl 802b0bc + 802bd60: f7ff f9cc bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart5, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bd24: 2100 movs r1, #0 - 802bd26: 4809 ldr r0, [pc, #36] ; (802bd4c ) - 802bd28: f010 fb7c bl 803c424 - 802bd2c: 4603 mov r3, r0 - 802bd2e: 2b00 cmp r3, #0 - 802bd30: d001 beq.n 802bd36 + 802bd64: 2100 movs r1, #0 + 802bd66: 4809 ldr r0, [pc, #36] ; (802bd8c ) + 802bd68: f010 fb7c bl 803c464 + 802bd6c: 4603 mov r3, r0 + 802bd6e: 2b00 cmp r3, #0 + 802bd70: d001 beq.n 802bd76 { Error_Handler(); - 802bd32: f7ff f9c3 bl 802b0bc + 802bd72: f7ff f9c3 bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&huart5) != HAL_OK) - 802bd36: 4805 ldr r0, [pc, #20] ; (802bd4c ) - 802bd38: f010 fafd bl 803c336 - 802bd3c: 4603 mov r3, r0 - 802bd3e: 2b00 cmp r3, #0 - 802bd40: d001 beq.n 802bd46 + 802bd76: 4805 ldr r0, [pc, #20] ; (802bd8c ) + 802bd78: f010 fafd bl 803c376 + 802bd7c: 4603 mov r3, r0 + 802bd7e: 2b00 cmp r3, #0 + 802bd80: d001 beq.n 802bd86 { Error_Handler(); - 802bd42: f7ff f9bb bl 802b0bc + 802bd82: f7ff f9bb bl 802b0fc } /* USER CODE BEGIN UART5_Init 2 */ /* USER CODE END UART5_Init 2 */ } - 802bd46: bf00 nop - 802bd48: bd80 pop {r7, pc} - 802bd4a: bf00 nop - 802bd4c: 2400b33c .word 0x2400b33c - 802bd50: 40005000 .word 0x40005000 - 802bd54: 000186a0 .word 0x000186a0 + 802bd86: bf00 nop + 802bd88: bd80 pop {r7, pc} + 802bd8a: bf00 nop + 802bd8c: 2400b33c .word 0x2400b33c + 802bd90: 40005000 .word 0x40005000 + 802bd94: 000186a0 .word 0x000186a0 -0802bd58 : +0802bd98 : /* UART7 init function */ void MX_UART7_Init(void) { - 802bd58: b580 push {r7, lr} - 802bd5a: af00 add r7, sp, #0 + 802bd98: b580 push {r7, lr} + 802bd9a: af00 add r7, sp, #0 /* USER CODE END UART7_Init 0 */ /* USER CODE BEGIN UART7_Init 1 */ /* USER CODE END UART7_Init 1 */ huart7.Instance = UART7; - 802bd5c: 4b26 ldr r3, [pc, #152] ; (802bdf8 ) - 802bd5e: 4a27 ldr r2, [pc, #156] ; (802bdfc ) - 802bd60: 601a str r2, [r3, #0] + 802bd9c: 4b26 ldr r3, [pc, #152] ; (802be38 ) + 802bd9e: 4a27 ldr r2, [pc, #156] ; (802be3c ) + 802bda0: 601a str r2, [r3, #0] huart7.Init.BaudRate = 115200; - 802bd62: 4b25 ldr r3, [pc, #148] ; (802bdf8 ) - 802bd64: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802bd68: 605a str r2, [r3, #4] + 802bda2: 4b25 ldr r3, [pc, #148] ; (802be38 ) + 802bda4: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802bda8: 605a str r2, [r3, #4] huart7.Init.WordLength = UART_WORDLENGTH_8B; - 802bd6a: 4b23 ldr r3, [pc, #140] ; (802bdf8 ) - 802bd6c: 2200 movs r2, #0 - 802bd6e: 609a str r2, [r3, #8] + 802bdaa: 4b23 ldr r3, [pc, #140] ; (802be38 ) + 802bdac: 2200 movs r2, #0 + 802bdae: 609a str r2, [r3, #8] huart7.Init.StopBits = UART_STOPBITS_1; - 802bd70: 4b21 ldr r3, [pc, #132] ; (802bdf8 ) - 802bd72: 2200 movs r2, #0 - 802bd74: 60da str r2, [r3, #12] + 802bdb0: 4b21 ldr r3, [pc, #132] ; (802be38 ) + 802bdb2: 2200 movs r2, #0 + 802bdb4: 60da str r2, [r3, #12] huart7.Init.Parity = UART_PARITY_NONE; - 802bd76: 4b20 ldr r3, [pc, #128] ; (802bdf8 ) - 802bd78: 2200 movs r2, #0 - 802bd7a: 611a str r2, [r3, #16] + 802bdb6: 4b20 ldr r3, [pc, #128] ; (802be38 ) + 802bdb8: 2200 movs r2, #0 + 802bdba: 611a str r2, [r3, #16] huart7.Init.Mode = UART_MODE_TX_RX; - 802bd7c: 4b1e ldr r3, [pc, #120] ; (802bdf8 ) - 802bd7e: 220c movs r2, #12 - 802bd80: 615a str r2, [r3, #20] + 802bdbc: 4b1e ldr r3, [pc, #120] ; (802be38 ) + 802bdbe: 220c movs r2, #12 + 802bdc0: 615a str r2, [r3, #20] huart7.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bd82: 4b1d ldr r3, [pc, #116] ; (802bdf8 ) - 802bd84: 2200 movs r2, #0 - 802bd86: 619a str r2, [r3, #24] + 802bdc2: 4b1d ldr r3, [pc, #116] ; (802be38 ) + 802bdc4: 2200 movs r2, #0 + 802bdc6: 619a str r2, [r3, #24] huart7.Init.OverSampling = UART_OVERSAMPLING_16; - 802bd88: 4b1b ldr r3, [pc, #108] ; (802bdf8 ) - 802bd8a: 2200 movs r2, #0 - 802bd8c: 61da str r2, [r3, #28] + 802bdc8: 4b1b ldr r3, [pc, #108] ; (802be38 ) + 802bdca: 2200 movs r2, #0 + 802bdcc: 61da str r2, [r3, #28] huart7.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bd8e: 4b1a ldr r3, [pc, #104] ; (802bdf8 ) - 802bd90: 2200 movs r2, #0 - 802bd92: 621a str r2, [r3, #32] + 802bdce: 4b1a ldr r3, [pc, #104] ; (802be38 ) + 802bdd0: 2200 movs r2, #0 + 802bdd2: 621a str r2, [r3, #32] huart7.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bd94: 4b18 ldr r3, [pc, #96] ; (802bdf8 ) - 802bd96: 2200 movs r2, #0 - 802bd98: 625a str r2, [r3, #36] ; 0x24 + 802bdd4: 4b18 ldr r3, [pc, #96] ; (802be38 ) + 802bdd6: 2200 movs r2, #0 + 802bdd8: 625a str r2, [r3, #36] ; 0x24 huart7.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802bd9a: 4b17 ldr r3, [pc, #92] ; (802bdf8 ) - 802bd9c: 2230 movs r2, #48 ; 0x30 - 802bd9e: 629a str r2, [r3, #40] ; 0x28 + 802bdda: 4b17 ldr r3, [pc, #92] ; (802be38 ) + 802bddc: 2230 movs r2, #48 ; 0x30 + 802bdde: 629a str r2, [r3, #40] ; 0x28 huart7.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bda0: 4b15 ldr r3, [pc, #84] ; (802bdf8 ) - 802bda2: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bda6: 63da str r2, [r3, #60] ; 0x3c + 802bde0: 4b15 ldr r3, [pc, #84] ; (802be38 ) + 802bde2: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bde6: 63da str r2, [r3, #60] ; 0x3c huart7.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bda8: 4b13 ldr r3, [pc, #76] ; (802bdf8 ) - 802bdaa: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802bdae: 641a str r2, [r3, #64] ; 0x40 + 802bde8: 4b13 ldr r3, [pc, #76] ; (802be38 ) + 802bdea: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bdee: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart7) != HAL_OK) - 802bdb0: 4811 ldr r0, [pc, #68] ; (802bdf8 ) - 802bdb2: f00d feb5 bl 8039b20 - 802bdb6: 4603 mov r3, r0 - 802bdb8: 2b00 cmp r3, #0 - 802bdba: d001 beq.n 802bdc0 + 802bdf0: 4811 ldr r0, [pc, #68] ; (802be38 ) + 802bdf2: f00d feb5 bl 8039b60 + 802bdf6: 4603 mov r3, r0 + 802bdf8: 2b00 cmp r3, #0 + 802bdfa: d001 beq.n 802be00 { Error_Handler(); - 802bdbc: f7ff f97e bl 802b0bc + 802bdfc: f7ff f97e bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart7, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bdc0: 2100 movs r1, #0 - 802bdc2: 480d ldr r0, [pc, #52] ; (802bdf8 ) - 802bdc4: f010 faf0 bl 803c3a8 - 802bdc8: 4603 mov r3, r0 - 802bdca: 2b00 cmp r3, #0 - 802bdcc: d001 beq.n 802bdd2 + 802be00: 2100 movs r1, #0 + 802be02: 480d ldr r0, [pc, #52] ; (802be38 ) + 802be04: f010 faf0 bl 803c3e8 + 802be08: 4603 mov r3, r0 + 802be0a: 2b00 cmp r3, #0 + 802be0c: d001 beq.n 802be12 { Error_Handler(); - 802bdce: f7ff f975 bl 802b0bc + 802be0e: f7ff f975 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart7, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bdd2: 2100 movs r1, #0 - 802bdd4: 4808 ldr r0, [pc, #32] ; (802bdf8 ) - 802bdd6: f010 fb25 bl 803c424 - 802bdda: 4603 mov r3, r0 - 802bddc: 2b00 cmp r3, #0 - 802bdde: d001 beq.n 802bde4 + 802be12: 2100 movs r1, #0 + 802be14: 4808 ldr r0, [pc, #32] ; (802be38 ) + 802be16: f010 fb25 bl 803c464 + 802be1a: 4603 mov r3, r0 + 802be1c: 2b00 cmp r3, #0 + 802be1e: d001 beq.n 802be24 { Error_Handler(); - 802bde0: f7ff f96c bl 802b0bc + 802be20: f7ff f96c bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&huart7) != HAL_OK) - 802bde4: 4804 ldr r0, [pc, #16] ; (802bdf8 ) - 802bde6: f010 faa6 bl 803c336 - 802bdea: 4603 mov r3, r0 - 802bdec: 2b00 cmp r3, #0 - 802bdee: d001 beq.n 802bdf4 + 802be24: 4804 ldr r0, [pc, #16] ; (802be38 ) + 802be26: f010 faa6 bl 803c376 + 802be2a: 4603 mov r3, r0 + 802be2c: 2b00 cmp r3, #0 + 802be2e: d001 beq.n 802be34 { Error_Handler(); - 802bdf0: f7ff f964 bl 802b0bc + 802be30: f7ff f964 bl 802b0fc } /* USER CODE BEGIN UART7_Init 2 */ /* USER CODE END UART7_Init 2 */ } - 802bdf4: bf00 nop - 802bdf6: bd80 pop {r7, pc} - 802bdf8: 2400b3cc .word 0x2400b3cc - 802bdfc: 40007800 .word 0x40007800 + 802be34: bf00 nop + 802be36: bd80 pop {r7, pc} + 802be38: 2400b3cc .word 0x2400b3cc + 802be3c: 40007800 .word 0x40007800 -0802be00 : +0802be40 : /* USART1 init function */ void MX_USART1_UART_Init(void) { - 802be00: b580 push {r7, lr} - 802be02: af00 add r7, sp, #0 + 802be40: b580 push {r7, lr} + 802be42: af00 add r7, sp, #0 /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; - 802be04: 4b26 ldr r3, [pc, #152] ; (802bea0 ) - 802be06: 4a27 ldr r2, [pc, #156] ; (802bea4 ) - 802be08: 601a str r2, [r3, #0] + 802be44: 4b26 ldr r3, [pc, #152] ; (802bee0 ) + 802be46: 4a27 ldr r2, [pc, #156] ; (802bee4 ) + 802be48: 601a str r2, [r3, #0] huart1.Init.BaudRate = 19200; - 802be0a: 4b25 ldr r3, [pc, #148] ; (802bea0 ) - 802be0c: f44f 4296 mov.w r2, #19200 ; 0x4b00 - 802be10: 605a str r2, [r3, #4] + 802be4a: 4b25 ldr r3, [pc, #148] ; (802bee0 ) + 802be4c: f44f 4296 mov.w r2, #19200 ; 0x4b00 + 802be50: 605a str r2, [r3, #4] huart1.Init.WordLength = UART_WORDLENGTH_8B; - 802be12: 4b23 ldr r3, [pc, #140] ; (802bea0 ) - 802be14: 2200 movs r2, #0 - 802be16: 609a str r2, [r3, #8] + 802be52: 4b23 ldr r3, [pc, #140] ; (802bee0 ) + 802be54: 2200 movs r2, #0 + 802be56: 609a str r2, [r3, #8] huart1.Init.StopBits = UART_STOPBITS_1; - 802be18: 4b21 ldr r3, [pc, #132] ; (802bea0 ) - 802be1a: 2200 movs r2, #0 - 802be1c: 60da str r2, [r3, #12] + 802be58: 4b21 ldr r3, [pc, #132] ; (802bee0 ) + 802be5a: 2200 movs r2, #0 + 802be5c: 60da str r2, [r3, #12] huart1.Init.Parity = UART_PARITY_NONE; - 802be1e: 4b20 ldr r3, [pc, #128] ; (802bea0 ) - 802be20: 2200 movs r2, #0 - 802be22: 611a str r2, [r3, #16] + 802be5e: 4b20 ldr r3, [pc, #128] ; (802bee0 ) + 802be60: 2200 movs r2, #0 + 802be62: 611a str r2, [r3, #16] huart1.Init.Mode = UART_MODE_TX_RX; - 802be24: 4b1e ldr r3, [pc, #120] ; (802bea0 ) - 802be26: 220c movs r2, #12 - 802be28: 615a str r2, [r3, #20] + 802be64: 4b1e ldr r3, [pc, #120] ; (802bee0 ) + 802be66: 220c movs r2, #12 + 802be68: 615a str r2, [r3, #20] huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802be2a: 4b1d ldr r3, [pc, #116] ; (802bea0 ) - 802be2c: 2200 movs r2, #0 - 802be2e: 619a str r2, [r3, #24] + 802be6a: 4b1d ldr r3, [pc, #116] ; (802bee0 ) + 802be6c: 2200 movs r2, #0 + 802be6e: 619a str r2, [r3, #24] huart1.Init.OverSampling = UART_OVERSAMPLING_16; - 802be30: 4b1b ldr r3, [pc, #108] ; (802bea0 ) - 802be32: 2200 movs r2, #0 - 802be34: 61da str r2, [r3, #28] + 802be70: 4b1b ldr r3, [pc, #108] ; (802bee0 ) + 802be72: 2200 movs r2, #0 + 802be74: 61da str r2, [r3, #28] huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802be36: 4b1a ldr r3, [pc, #104] ; (802bea0 ) - 802be38: 2200 movs r2, #0 - 802be3a: 621a str r2, [r3, #32] + 802be76: 4b1a ldr r3, [pc, #104] ; (802bee0 ) + 802be78: 2200 movs r2, #0 + 802be7a: 621a str r2, [r3, #32] huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802be3c: 4b18 ldr r3, [pc, #96] ; (802bea0 ) - 802be3e: 2200 movs r2, #0 - 802be40: 625a str r2, [r3, #36] ; 0x24 + 802be7c: 4b18 ldr r3, [pc, #96] ; (802bee0 ) + 802be7e: 2200 movs r2, #0 + 802be80: 625a str r2, [r3, #36] ; 0x24 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802be42: 4b17 ldr r3, [pc, #92] ; (802bea0 ) - 802be44: 2230 movs r2, #48 ; 0x30 - 802be46: 629a str r2, [r3, #40] ; 0x28 + 802be82: 4b17 ldr r3, [pc, #92] ; (802bee0 ) + 802be84: 2230 movs r2, #48 ; 0x30 + 802be86: 629a str r2, [r3, #40] ; 0x28 huart1.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802be48: 4b15 ldr r3, [pc, #84] ; (802bea0 ) - 802be4a: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802be4e: 63da str r2, [r3, #60] ; 0x3c + 802be88: 4b15 ldr r3, [pc, #84] ; (802bee0 ) + 802be8a: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802be8e: 63da str r2, [r3, #60] ; 0x3c huart1.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802be50: 4b13 ldr r3, [pc, #76] ; (802bea0 ) - 802be52: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802be56: 641a str r2, [r3, #64] ; 0x40 + 802be90: 4b13 ldr r3, [pc, #76] ; (802bee0 ) + 802be92: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802be96: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart1) != HAL_OK) - 802be58: 4811 ldr r0, [pc, #68] ; (802bea0 ) - 802be5a: f00d fe61 bl 8039b20 - 802be5e: 4603 mov r3, r0 - 802be60: 2b00 cmp r3, #0 - 802be62: d001 beq.n 802be68 + 802be98: 4811 ldr r0, [pc, #68] ; (802bee0 ) + 802be9a: f00d fe61 bl 8039b60 + 802be9e: 4603 mov r3, r0 + 802bea0: 2b00 cmp r3, #0 + 802bea2: d001 beq.n 802bea8 { Error_Handler(); - 802be64: f7ff f92a bl 802b0bc + 802bea4: f7ff f92a bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802be68: 2100 movs r1, #0 - 802be6a: 480d ldr r0, [pc, #52] ; (802bea0 ) - 802be6c: f010 fa9c bl 803c3a8 - 802be70: 4603 mov r3, r0 - 802be72: 2b00 cmp r3, #0 - 802be74: d001 beq.n 802be7a + 802bea8: 2100 movs r1, #0 + 802beaa: 480d ldr r0, [pc, #52] ; (802bee0 ) + 802beac: f010 fa9c bl 803c3e8 + 802beb0: 4603 mov r3, r0 + 802beb2: 2b00 cmp r3, #0 + 802beb4: d001 beq.n 802beba { Error_Handler(); - 802be76: f7ff f921 bl 802b0bc + 802beb6: f7ff f921 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802be7a: 2100 movs r1, #0 - 802be7c: 4808 ldr r0, [pc, #32] ; (802bea0 ) - 802be7e: f010 fad1 bl 803c424 - 802be82: 4603 mov r3, r0 - 802be84: 2b00 cmp r3, #0 - 802be86: d001 beq.n 802be8c + 802beba: 2100 movs r1, #0 + 802bebc: 4808 ldr r0, [pc, #32] ; (802bee0 ) + 802bebe: f010 fad1 bl 803c464 + 802bec2: 4603 mov r3, r0 + 802bec4: 2b00 cmp r3, #0 + 802bec6: d001 beq.n 802becc { Error_Handler(); - 802be88: f7ff f918 bl 802b0bc + 802bec8: f7ff f918 bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) - 802be8c: 4804 ldr r0, [pc, #16] ; (802bea0 ) - 802be8e: f010 fa52 bl 803c336 - 802be92: 4603 mov r3, r0 - 802be94: 2b00 cmp r3, #0 - 802be96: d001 beq.n 802be9c + 802becc: 4804 ldr r0, [pc, #16] ; (802bee0 ) + 802bece: f010 fa52 bl 803c376 + 802bed2: 4603 mov r3, r0 + 802bed4: 2b00 cmp r3, #0 + 802bed6: d001 beq.n 802bedc { Error_Handler(); - 802be98: f7ff f910 bl 802b0bc + 802bed8: f7ff f910 bl 802b0fc } /* USER CODE BEGIN USART1_Init 2 */ /* USER CODE END USART1_Init 2 */ } - 802be9c: bf00 nop - 802be9e: bd80 pop {r7, pc} - 802bea0: 2400b45c .word 0x2400b45c - 802bea4: 40011000 .word 0x40011000 + 802bedc: bf00 nop + 802bede: bd80 pop {r7, pc} + 802bee0: 2400b45c .word 0x2400b45c + 802bee4: 40011000 .word 0x40011000 -0802bea8 : +0802bee8 : /* USART2 init function */ void MX_USART2_UART_Init(void) { - 802bea8: b580 push {r7, lr} - 802beaa: af00 add r7, sp, #0 + 802bee8: b580 push {r7, lr} + 802beea: af00 add r7, sp, #0 /* USER CODE END USART2_Init 0 */ /* USER CODE BEGIN USART2_Init 1 */ /* USER CODE END USART2_Init 1 */ huart2.Instance = USART2; - 802beac: 4b26 ldr r3, [pc, #152] ; (802bf48 ) - 802beae: 4a27 ldr r2, [pc, #156] ; (802bf4c ) - 802beb0: 601a str r2, [r3, #0] + 802beec: 4b26 ldr r3, [pc, #152] ; (802bf88 ) + 802beee: 4a27 ldr r2, [pc, #156] ; (802bf8c ) + 802bef0: 601a str r2, [r3, #0] huart2.Init.BaudRate = 115200; - 802beb2: 4b25 ldr r3, [pc, #148] ; (802bf48 ) - 802beb4: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802beb8: 605a str r2, [r3, #4] + 802bef2: 4b25 ldr r3, [pc, #148] ; (802bf88 ) + 802bef4: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802bef8: 605a str r2, [r3, #4] huart2.Init.WordLength = UART_WORDLENGTH_8B; - 802beba: 4b23 ldr r3, [pc, #140] ; (802bf48 ) - 802bebc: 2200 movs r2, #0 - 802bebe: 609a str r2, [r3, #8] + 802befa: 4b23 ldr r3, [pc, #140] ; (802bf88 ) + 802befc: 2200 movs r2, #0 + 802befe: 609a str r2, [r3, #8] huart2.Init.StopBits = UART_STOPBITS_1; - 802bec0: 4b21 ldr r3, [pc, #132] ; (802bf48 ) - 802bec2: 2200 movs r2, #0 - 802bec4: 60da str r2, [r3, #12] + 802bf00: 4b21 ldr r3, [pc, #132] ; (802bf88 ) + 802bf02: 2200 movs r2, #0 + 802bf04: 60da str r2, [r3, #12] huart2.Init.Parity = UART_PARITY_NONE; - 802bec6: 4b20 ldr r3, [pc, #128] ; (802bf48 ) - 802bec8: 2200 movs r2, #0 - 802beca: 611a str r2, [r3, #16] + 802bf06: 4b20 ldr r3, [pc, #128] ; (802bf88 ) + 802bf08: 2200 movs r2, #0 + 802bf0a: 611a str r2, [r3, #16] huart2.Init.Mode = UART_MODE_TX_RX; - 802becc: 4b1e ldr r3, [pc, #120] ; (802bf48 ) - 802bece: 220c movs r2, #12 - 802bed0: 615a str r2, [r3, #20] + 802bf0c: 4b1e ldr r3, [pc, #120] ; (802bf88 ) + 802bf0e: 220c movs r2, #12 + 802bf10: 615a str r2, [r3, #20] huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bed2: 4b1d ldr r3, [pc, #116] ; (802bf48 ) - 802bed4: 2200 movs r2, #0 - 802bed6: 619a str r2, [r3, #24] + 802bf12: 4b1d ldr r3, [pc, #116] ; (802bf88 ) + 802bf14: 2200 movs r2, #0 + 802bf16: 619a str r2, [r3, #24] huart2.Init.OverSampling = UART_OVERSAMPLING_16; - 802bed8: 4b1b ldr r3, [pc, #108] ; (802bf48 ) - 802beda: 2200 movs r2, #0 - 802bedc: 61da str r2, [r3, #28] + 802bf18: 4b1b ldr r3, [pc, #108] ; (802bf88 ) + 802bf1a: 2200 movs r2, #0 + 802bf1c: 61da str r2, [r3, #28] huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bede: 4b1a ldr r3, [pc, #104] ; (802bf48 ) - 802bee0: 2200 movs r2, #0 - 802bee2: 621a str r2, [r3, #32] + 802bf1e: 4b1a ldr r3, [pc, #104] ; (802bf88 ) + 802bf20: 2200 movs r2, #0 + 802bf22: 621a str r2, [r3, #32] huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bee4: 4b18 ldr r3, [pc, #96] ; (802bf48 ) - 802bee6: 2200 movs r2, #0 - 802bee8: 625a str r2, [r3, #36] ; 0x24 + 802bf24: 4b18 ldr r3, [pc, #96] ; (802bf88 ) + 802bf26: 2200 movs r2, #0 + 802bf28: 625a str r2, [r3, #36] ; 0x24 huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802beea: 4b17 ldr r3, [pc, #92] ; (802bf48 ) - 802beec: 2230 movs r2, #48 ; 0x30 - 802beee: 629a str r2, [r3, #40] ; 0x28 + 802bf2a: 4b17 ldr r3, [pc, #92] ; (802bf88 ) + 802bf2c: 2230 movs r2, #48 ; 0x30 + 802bf2e: 629a str r2, [r3, #40] ; 0x28 huart2.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bef0: 4b15 ldr r3, [pc, #84] ; (802bf48 ) - 802bef2: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bef6: 63da str r2, [r3, #60] ; 0x3c + 802bf30: 4b15 ldr r3, [pc, #84] ; (802bf88 ) + 802bf32: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bf36: 63da str r2, [r3, #60] ; 0x3c huart2.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bef8: 4b13 ldr r3, [pc, #76] ; (802bf48 ) - 802befa: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802befe: 641a str r2, [r3, #64] ; 0x40 + 802bf38: 4b13 ldr r3, [pc, #76] ; (802bf88 ) + 802bf3a: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bf3e: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart2) != HAL_OK) - 802bf00: 4811 ldr r0, [pc, #68] ; (802bf48 ) - 802bf02: f00d fe0d bl 8039b20 - 802bf06: 4603 mov r3, r0 - 802bf08: 2b00 cmp r3, #0 - 802bf0a: d001 beq.n 802bf10 + 802bf40: 4811 ldr r0, [pc, #68] ; (802bf88 ) + 802bf42: f00d fe0d bl 8039b60 + 802bf46: 4603 mov r3, r0 + 802bf48: 2b00 cmp r3, #0 + 802bf4a: d001 beq.n 802bf50 { Error_Handler(); - 802bf0c: f7ff f8d6 bl 802b0bc + 802bf4c: f7ff f8d6 bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bf10: 2100 movs r1, #0 - 802bf12: 480d ldr r0, [pc, #52] ; (802bf48 ) - 802bf14: f010 fa48 bl 803c3a8 - 802bf18: 4603 mov r3, r0 - 802bf1a: 2b00 cmp r3, #0 - 802bf1c: d001 beq.n 802bf22 + 802bf50: 2100 movs r1, #0 + 802bf52: 480d ldr r0, [pc, #52] ; (802bf88 ) + 802bf54: f010 fa48 bl 803c3e8 + 802bf58: 4603 mov r3, r0 + 802bf5a: 2b00 cmp r3, #0 + 802bf5c: d001 beq.n 802bf62 { Error_Handler(); - 802bf1e: f7ff f8cd bl 802b0bc + 802bf5e: f7ff f8cd bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bf22: 2100 movs r1, #0 - 802bf24: 4808 ldr r0, [pc, #32] ; (802bf48 ) - 802bf26: f010 fa7d bl 803c424 - 802bf2a: 4603 mov r3, r0 - 802bf2c: 2b00 cmp r3, #0 - 802bf2e: d001 beq.n 802bf34 + 802bf62: 2100 movs r1, #0 + 802bf64: 4808 ldr r0, [pc, #32] ; (802bf88 ) + 802bf66: f010 fa7d bl 803c464 + 802bf6a: 4603 mov r3, r0 + 802bf6c: 2b00 cmp r3, #0 + 802bf6e: d001 beq.n 802bf74 { Error_Handler(); - 802bf30: f7ff f8c4 bl 802b0bc + 802bf70: f7ff f8c4 bl 802b0fc } if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK) - 802bf34: 4804 ldr r0, [pc, #16] ; (802bf48 ) - 802bf36: f010 f9fe bl 803c336 - 802bf3a: 4603 mov r3, r0 - 802bf3c: 2b00 cmp r3, #0 - 802bf3e: d001 beq.n 802bf44 + 802bf74: 4804 ldr r0, [pc, #16] ; (802bf88 ) + 802bf76: f010 f9fe bl 803c376 + 802bf7a: 4603 mov r3, r0 + 802bf7c: 2b00 cmp r3, #0 + 802bf7e: d001 beq.n 802bf84 { Error_Handler(); - 802bf40: f7ff f8bc bl 802b0bc + 802bf80: f7ff f8bc bl 802b0fc /* USER CODE END USART2_Init 2 */ } - 802bf44: bf00 nop - 802bf46: bd80 pop {r7, pc} - 802bf48: 2400b4ec .word 0x2400b4ec - 802bf4c: 40004400 .word 0x40004400 + 802bf84: bf00 nop + 802bf86: bd80 pop {r7, pc} + 802bf88: 2400b4ec .word 0x2400b4ec + 802bf8c: 40004400 .word 0x40004400 -0802bf50 : +0802bf90 : /* USART3 init function */ void MX_USART3_UART_Init(void) { - 802bf50: b580 push {r7, lr} - 802bf52: af00 add r7, sp, #0 + 802bf90: b580 push {r7, lr} + 802bf92: af00 add r7, sp, #0 /* USER CODE END USART3_Init 0 */ /* USER CODE BEGIN USART3_Init 1 */ /* USER CODE END USART3_Init 1 */ huart3.Instance = USART3; - 802bf54: 4b26 ldr r3, [pc, #152] ; (802bff0 ) - 802bf56: 4a27 ldr r2, [pc, #156] ; (802bff4 ) - 802bf58: 601a str r2, [r3, #0] + 802bf94: 4b26 ldr r3, [pc, #152] ; (802c030 ) + 802bf96: 4a27 ldr r2, [pc, #156] ; (802c034 ) + 802bf98: 601a str r2, [r3, #0] huart3.Init.BaudRate = 115200; - 802bf5a: 4b25 ldr r3, [pc, #148] ; (802bff0 ) - 802bf5c: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802bf60: 605a str r2, [r3, #4] + 802bf9a: 4b25 ldr r3, [pc, #148] ; (802c030 ) + 802bf9c: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802bfa0: 605a str r2, [r3, #4] huart3.Init.WordLength = UART_WORDLENGTH_8B; - 802bf62: 4b23 ldr r3, [pc, #140] ; (802bff0 ) - 802bf64: 2200 movs r2, #0 - 802bf66: 609a str r2, [r3, #8] + 802bfa2: 4b23 ldr r3, [pc, #140] ; (802c030 ) + 802bfa4: 2200 movs r2, #0 + 802bfa6: 609a str r2, [r3, #8] huart3.Init.StopBits = UART_STOPBITS_1; - 802bf68: 4b21 ldr r3, [pc, #132] ; (802bff0 ) - 802bf6a: 2200 movs r2, #0 - 802bf6c: 60da str r2, [r3, #12] + 802bfa8: 4b21 ldr r3, [pc, #132] ; (802c030 ) + 802bfaa: 2200 movs r2, #0 + 802bfac: 60da str r2, [r3, #12] huart3.Init.Parity = UART_PARITY_NONE; - 802bf6e: 4b20 ldr r3, [pc, #128] ; (802bff0 ) - 802bf70: 2200 movs r2, #0 - 802bf72: 611a str r2, [r3, #16] + 802bfae: 4b20 ldr r3, [pc, #128] ; (802c030 ) + 802bfb0: 2200 movs r2, #0 + 802bfb2: 611a str r2, [r3, #16] huart3.Init.Mode = UART_MODE_TX_RX; - 802bf74: 4b1e ldr r3, [pc, #120] ; (802bff0 ) - 802bf76: 220c movs r2, #12 - 802bf78: 615a str r2, [r3, #20] + 802bfb4: 4b1e ldr r3, [pc, #120] ; (802c030 ) + 802bfb6: 220c movs r2, #12 + 802bfb8: 615a str r2, [r3, #20] huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802bf7a: 4b1d ldr r3, [pc, #116] ; (802bff0 ) - 802bf7c: 2200 movs r2, #0 - 802bf7e: 619a str r2, [r3, #24] + 802bfba: 4b1d ldr r3, [pc, #116] ; (802c030 ) + 802bfbc: 2200 movs r2, #0 + 802bfbe: 619a str r2, [r3, #24] huart3.Init.OverSampling = UART_OVERSAMPLING_16; - 802bf80: 4b1b ldr r3, [pc, #108] ; (802bff0 ) - 802bf82: 2200 movs r2, #0 - 802bf84: 61da str r2, [r3, #28] + 802bfc0: 4b1b ldr r3, [pc, #108] ; (802c030 ) + 802bfc2: 2200 movs r2, #0 + 802bfc4: 61da str r2, [r3, #28] huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802bf86: 4b1a ldr r3, [pc, #104] ; (802bff0 ) - 802bf88: 2200 movs r2, #0 - 802bf8a: 621a str r2, [r3, #32] + 802bfc6: 4b1a ldr r3, [pc, #104] ; (802c030 ) + 802bfc8: 2200 movs r2, #0 + 802bfca: 621a str r2, [r3, #32] huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802bf8c: 4b18 ldr r3, [pc, #96] ; (802bff0 ) - 802bf8e: 2200 movs r2, #0 - 802bf90: 625a str r2, [r3, #36] ; 0x24 + 802bfcc: 4b18 ldr r3, [pc, #96] ; (802c030 ) + 802bfce: 2200 movs r2, #0 + 802bfd0: 625a str r2, [r3, #36] ; 0x24 huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802bf92: 4b17 ldr r3, [pc, #92] ; (802bff0 ) - 802bf94: 2230 movs r2, #48 ; 0x30 - 802bf96: 629a str r2, [r3, #40] ; 0x28 + 802bfd2: 4b17 ldr r3, [pc, #92] ; (802c030 ) + 802bfd4: 2230 movs r2, #48 ; 0x30 + 802bfd6: 629a str r2, [r3, #40] ; 0x28 huart3.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802bf98: 4b15 ldr r3, [pc, #84] ; (802bff0 ) - 802bf9a: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802bf9e: 63da str r2, [r3, #60] ; 0x3c + 802bfd8: 4b15 ldr r3, [pc, #84] ; (802c030 ) + 802bfda: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802bfde: 63da str r2, [r3, #60] ; 0x3c huart3.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802bfa0: 4b13 ldr r3, [pc, #76] ; (802bff0 ) - 802bfa2: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802bfa6: 641a str r2, [r3, #64] ; 0x40 + 802bfe0: 4b13 ldr r3, [pc, #76] ; (802c030 ) + 802bfe2: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802bfe6: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart3) != HAL_OK) - 802bfa8: 4811 ldr r0, [pc, #68] ; (802bff0 ) - 802bfaa: f00d fdb9 bl 8039b20 - 802bfae: 4603 mov r3, r0 - 802bfb0: 2b00 cmp r3, #0 - 802bfb2: d001 beq.n 802bfb8 + 802bfe8: 4811 ldr r0, [pc, #68] ; (802c030 ) + 802bfea: f00d fdb9 bl 8039b60 + 802bfee: 4603 mov r3, r0 + 802bff0: 2b00 cmp r3, #0 + 802bff2: d001 beq.n 802bff8 { Error_Handler(); - 802bfb4: f7ff f882 bl 802b0bc + 802bff4: f7ff f882 bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bfb8: 2100 movs r1, #0 - 802bfba: 480d ldr r0, [pc, #52] ; (802bff0 ) - 802bfbc: f010 f9f4 bl 803c3a8 - 802bfc0: 4603 mov r3, r0 - 802bfc2: 2b00 cmp r3, #0 - 802bfc4: d001 beq.n 802bfca + 802bff8: 2100 movs r1, #0 + 802bffa: 480d ldr r0, [pc, #52] ; (802c030 ) + 802bffc: f010 f9f4 bl 803c3e8 + 802c000: 4603 mov r3, r0 + 802c002: 2b00 cmp r3, #0 + 802c004: d001 beq.n 802c00a { Error_Handler(); - 802bfc6: f7ff f879 bl 802b0bc + 802c006: f7ff f879 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802bfca: 2100 movs r1, #0 - 802bfcc: 4808 ldr r0, [pc, #32] ; (802bff0 ) - 802bfce: f010 fa29 bl 803c424 - 802bfd2: 4603 mov r3, r0 - 802bfd4: 2b00 cmp r3, #0 - 802bfd6: d001 beq.n 802bfdc + 802c00a: 2100 movs r1, #0 + 802c00c: 4808 ldr r0, [pc, #32] ; (802c030 ) + 802c00e: f010 fa29 bl 803c464 + 802c012: 4603 mov r3, r0 + 802c014: 2b00 cmp r3, #0 + 802c016: d001 beq.n 802c01c { Error_Handler(); - 802bfd8: f7ff f870 bl 802b0bc + 802c018: f7ff f870 bl 802b0fc } if (HAL_UARTEx_EnableFifoMode(&huart3) != HAL_OK) - 802bfdc: 4804 ldr r0, [pc, #16] ; (802bff0 ) - 802bfde: f010 f96f bl 803c2c0 - 802bfe2: 4603 mov r3, r0 - 802bfe4: 2b00 cmp r3, #0 - 802bfe6: d001 beq.n 802bfec + 802c01c: 4804 ldr r0, [pc, #16] ; (802c030 ) + 802c01e: f010 f96f bl 803c300 + 802c022: 4603 mov r3, r0 + 802c024: 2b00 cmp r3, #0 + 802c026: d001 beq.n 802c02c { Error_Handler(); - 802bfe8: f7ff f868 bl 802b0bc + 802c028: f7ff f868 bl 802b0fc } /* USER CODE BEGIN USART3_Init 2 */ /* USER CODE END USART3_Init 2 */ } - 802bfec: bf00 nop - 802bfee: bd80 pop {r7, pc} - 802bff0: 2400b57c .word 0x2400b57c - 802bff4: 40004800 .word 0x40004800 + 802c02c: bf00 nop + 802c02e: bd80 pop {r7, pc} + 802c030: 2400b57c .word 0x2400b57c + 802c034: 40004800 .word 0x40004800 -0802bff8 : +0802c038 : /* USART6 init function */ void MX_USART6_UART_Init(void) { - 802bff8: b580 push {r7, lr} - 802bffa: af00 add r7, sp, #0 + 802c038: b580 push {r7, lr} + 802c03a: af00 add r7, sp, #0 /* USER CODE END USART6_Init 0 */ /* USER CODE BEGIN USART6_Init 1 */ /* USER CODE END USART6_Init 1 */ huart6.Instance = USART6; - 802bffc: 4b26 ldr r3, [pc, #152] ; (802c098 ) - 802bffe: 4a27 ldr r2, [pc, #156] ; (802c09c ) - 802c000: 601a str r2, [r3, #0] + 802c03c: 4b26 ldr r3, [pc, #152] ; (802c0d8 ) + 802c03e: 4a27 ldr r2, [pc, #156] ; (802c0dc ) + 802c040: 601a str r2, [r3, #0] huart6.Init.BaudRate = 115200; - 802c002: 4b25 ldr r3, [pc, #148] ; (802c098 ) - 802c004: f44f 32e1 mov.w r2, #115200 ; 0x1c200 - 802c008: 605a str r2, [r3, #4] + 802c042: 4b25 ldr r3, [pc, #148] ; (802c0d8 ) + 802c044: f44f 32e1 mov.w r2, #115200 ; 0x1c200 + 802c048: 605a str r2, [r3, #4] huart6.Init.WordLength = UART_WORDLENGTH_8B; - 802c00a: 4b23 ldr r3, [pc, #140] ; (802c098 ) - 802c00c: 2200 movs r2, #0 - 802c00e: 609a str r2, [r3, #8] + 802c04a: 4b23 ldr r3, [pc, #140] ; (802c0d8 ) + 802c04c: 2200 movs r2, #0 + 802c04e: 609a str r2, [r3, #8] huart6.Init.StopBits = UART_STOPBITS_1; - 802c010: 4b21 ldr r3, [pc, #132] ; (802c098 ) - 802c012: 2200 movs r2, #0 - 802c014: 60da str r2, [r3, #12] + 802c050: 4b21 ldr r3, [pc, #132] ; (802c0d8 ) + 802c052: 2200 movs r2, #0 + 802c054: 60da str r2, [r3, #12] huart6.Init.Parity = UART_PARITY_NONE; - 802c016: 4b20 ldr r3, [pc, #128] ; (802c098 ) - 802c018: 2200 movs r2, #0 - 802c01a: 611a str r2, [r3, #16] + 802c056: 4b20 ldr r3, [pc, #128] ; (802c0d8 ) + 802c058: 2200 movs r2, #0 + 802c05a: 611a str r2, [r3, #16] huart6.Init.Mode = UART_MODE_TX_RX; - 802c01c: 4b1e ldr r3, [pc, #120] ; (802c098 ) - 802c01e: 220c movs r2, #12 - 802c020: 615a str r2, [r3, #20] + 802c05c: 4b1e ldr r3, [pc, #120] ; (802c0d8 ) + 802c05e: 220c movs r2, #12 + 802c060: 615a str r2, [r3, #20] huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE; - 802c022: 4b1d ldr r3, [pc, #116] ; (802c098 ) - 802c024: 2200 movs r2, #0 - 802c026: 619a str r2, [r3, #24] + 802c062: 4b1d ldr r3, [pc, #116] ; (802c0d8 ) + 802c064: 2200 movs r2, #0 + 802c066: 619a str r2, [r3, #24] huart6.Init.OverSampling = UART_OVERSAMPLING_16; - 802c028: 4b1b ldr r3, [pc, #108] ; (802c098 ) - 802c02a: 2200 movs r2, #0 - 802c02c: 61da str r2, [r3, #28] + 802c068: 4b1b ldr r3, [pc, #108] ; (802c0d8 ) + 802c06a: 2200 movs r2, #0 + 802c06c: 61da str r2, [r3, #28] huart6.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - 802c02e: 4b1a ldr r3, [pc, #104] ; (802c098 ) - 802c030: 2200 movs r2, #0 - 802c032: 621a str r2, [r3, #32] + 802c06e: 4b1a ldr r3, [pc, #104] ; (802c0d8 ) + 802c070: 2200 movs r2, #0 + 802c072: 621a str r2, [r3, #32] huart6.Init.ClockPrescaler = UART_PRESCALER_DIV1; - 802c034: 4b18 ldr r3, [pc, #96] ; (802c098 ) - 802c036: 2200 movs r2, #0 - 802c038: 625a str r2, [r3, #36] ; 0x24 + 802c074: 4b18 ldr r3, [pc, #96] ; (802c0d8 ) + 802c076: 2200 movs r2, #0 + 802c078: 625a str r2, [r3, #36] ; 0x24 huart6.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT; - 802c03a: 4b17 ldr r3, [pc, #92] ; (802c098 ) - 802c03c: 2230 movs r2, #48 ; 0x30 - 802c03e: 629a str r2, [r3, #40] ; 0x28 + 802c07a: 4b17 ldr r3, [pc, #92] ; (802c0d8 ) + 802c07c: 2230 movs r2, #48 ; 0x30 + 802c07e: 629a str r2, [r3, #40] ; 0x28 huart6.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE; - 802c040: 4b15 ldr r3, [pc, #84] ; (802c098 ) - 802c042: f44f 5280 mov.w r2, #4096 ; 0x1000 - 802c046: 63da str r2, [r3, #60] ; 0x3c + 802c080: 4b15 ldr r3, [pc, #84] ; (802c0d8 ) + 802c082: f44f 5280 mov.w r2, #4096 ; 0x1000 + 802c086: 63da str r2, [r3, #60] ; 0x3c huart6.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR; - 802c048: 4b13 ldr r3, [pc, #76] ; (802c098 ) - 802c04a: f44f 5200 mov.w r2, #8192 ; 0x2000 - 802c04e: 641a str r2, [r3, #64] ; 0x40 + 802c088: 4b13 ldr r3, [pc, #76] ; (802c0d8 ) + 802c08a: f44f 5200 mov.w r2, #8192 ; 0x2000 + 802c08e: 641a str r2, [r3, #64] ; 0x40 if (HAL_UART_Init(&huart6) != HAL_OK) - 802c050: 4811 ldr r0, [pc, #68] ; (802c098 ) - 802c052: f00d fd65 bl 8039b20 - 802c056: 4603 mov r3, r0 - 802c058: 2b00 cmp r3, #0 - 802c05a: d001 beq.n 802c060 + 802c090: 4811 ldr r0, [pc, #68] ; (802c0d8 ) + 802c092: f00d fd65 bl 8039b60 + 802c096: 4603 mov r3, r0 + 802c098: 2b00 cmp r3, #0 + 802c09a: d001 beq.n 802c0a0 { Error_Handler(); - 802c05c: f7ff f82e bl 802b0bc + 802c09c: f7ff f82e bl 802b0fc } if (HAL_UARTEx_SetTxFifoThreshold(&huart6, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - 802c060: 2100 movs r1, #0 - 802c062: 480d ldr r0, [pc, #52] ; (802c098 ) - 802c064: f010 f9a0 bl 803c3a8 - 802c068: 4603 mov r3, r0 - 802c06a: 2b00 cmp r3, #0 - 802c06c: d001 beq.n 802c072 + 802c0a0: 2100 movs r1, #0 + 802c0a2: 480d ldr r0, [pc, #52] ; (802c0d8 ) + 802c0a4: f010 f9a0 bl 803c3e8 + 802c0a8: 4603 mov r3, r0 + 802c0aa: 2b00 cmp r3, #0 + 802c0ac: d001 beq.n 802c0b2 { Error_Handler(); - 802c06e: f7ff f825 bl 802b0bc + 802c0ae: f7ff f825 bl 802b0fc } if (HAL_UARTEx_SetRxFifoThreshold(&huart6, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - 802c072: 2100 movs r1, #0 - 802c074: 4808 ldr r0, [pc, #32] ; (802c098 ) - 802c076: f010 f9d5 bl 803c424 - 802c07a: 4603 mov r3, r0 - 802c07c: 2b00 cmp r3, #0 - 802c07e: d001 beq.n 802c084 + 802c0b2: 2100 movs r1, #0 + 802c0b4: 4808 ldr r0, [pc, #32] ; (802c0d8 ) + 802c0b6: f010 f9d5 bl 803c464 + 802c0ba: 4603 mov r3, r0 + 802c0bc: 2b00 cmp r3, #0 + 802c0be: d001 beq.n 802c0c4 { Error_Handler(); - 802c080: f7ff f81c bl 802b0bc + 802c0c0: f7ff f81c bl 802b0fc } if (HAL_UARTEx_EnableFifoMode(&huart6) != HAL_OK) - 802c084: 4804 ldr r0, [pc, #16] ; (802c098 ) - 802c086: f010 f91b bl 803c2c0 - 802c08a: 4603 mov r3, r0 - 802c08c: 2b00 cmp r3, #0 - 802c08e: d001 beq.n 802c094 + 802c0c4: 4804 ldr r0, [pc, #16] ; (802c0d8 ) + 802c0c6: f010 f91b bl 803c300 + 802c0ca: 4603 mov r3, r0 + 802c0cc: 2b00 cmp r3, #0 + 802c0ce: d001 beq.n 802c0d4 { Error_Handler(); - 802c090: f7ff f814 bl 802b0bc + 802c0d0: f7ff f814 bl 802b0fc } /* USER CODE BEGIN USART6_Init 2 */ /* USER CODE END USART6_Init 2 */ } - 802c094: bf00 nop - 802c096: bd80 pop {r7, pc} - 802c098: 2400b60c .word 0x2400b60c - 802c09c: 40011400 .word 0x40011400 + 802c0d4: bf00 nop + 802c0d6: bd80 pop {r7, pc} + 802c0d8: 2400b60c .word 0x2400b60c + 802c0dc: 40011400 .word 0x40011400 -0802c0a0 : +0802c0e0 : void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) { - 802c0a0: b580 push {r7, lr} - 802c0a2: b0c8 sub sp, #288 ; 0x120 - 802c0a4: af00 add r7, sp, #0 - 802c0a6: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c0aa: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c0ae: 6018 str r0, [r3, #0] + 802c0e0: b580 push {r7, lr} + 802c0e2: b0c8 sub sp, #288 ; 0x120 + 802c0e4: af00 add r7, sp, #0 + 802c0e6: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c0ea: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c0ee: 6018 str r0, [r3, #0] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 802c0b0: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c0b4: 2200 movs r2, #0 - 802c0b6: 601a str r2, [r3, #0] - 802c0b8: 605a str r2, [r3, #4] - 802c0ba: 609a str r2, [r3, #8] - 802c0bc: 60da str r2, [r3, #12] - 802c0be: 611a str r2, [r3, #16] + 802c0f0: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c0f4: 2200 movs r2, #0 + 802c0f6: 601a str r2, [r3, #0] + 802c0f8: 605a str r2, [r3, #4] + 802c0fa: 609a str r2, [r3, #8] + 802c0fc: 60da str r2, [r3, #12] + 802c0fe: 611a str r2, [r3, #16] RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; - 802c0c0: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c0c4: 22bc movs r2, #188 ; 0xbc - 802c0c6: 2100 movs r1, #0 - 802c0c8: 4618 mov r0, r3 - 802c0ca: f01b fe83 bl 8047dd4 + 802c100: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c104: 22bc movs r2, #188 ; 0xbc + 802c106: 2100 movs r1, #0 + 802c108: 4618 mov r0, r3 + 802c10a: f01b fe83 bl 8047e14 if(uartHandle->Instance==LPUART1) - 802c0ce: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c0d2: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c0d6: 681b ldr r3, [r3, #0] - 802c0d8: 681b ldr r3, [r3, #0] - 802c0da: 4a7d ldr r2, [pc, #500] ; (802c2d0 ) - 802c0dc: 4293 cmp r3, r2 - 802c0de: d14c bne.n 802c17a + 802c10e: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c112: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c116: 681b ldr r3, [r3, #0] + 802c118: 681b ldr r3, [r3, #0] + 802c11a: 4a7d ldr r2, [pc, #500] ; (802c310 ) + 802c11c: 4293 cmp r3, r2 + 802c11e: d14c bne.n 802c1ba /* USER CODE END LPUART1_MspInit 0 */ /** Initializes the peripherals clock */ PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPUART1; - 802c0e0: 2304 movs r3, #4 - 802c0e2: 653b str r3, [r7, #80] ; 0x50 + 802c120: 2304 movs r3, #4 + 802c122: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_D3PCLK1; - 802c0e4: 2300 movs r3, #0 - 802c0e6: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 802c124: 2300 movs r3, #0 + 802c126: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c0ea: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c0ee: 4618 mov r0, r3 - 802c0f0: f00a f916 bl 8036320 - 802c0f4: 4603 mov r3, r0 - 802c0f6: 2b00 cmp r3, #0 - 802c0f8: d001 beq.n 802c0fe + 802c12a: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c12e: 4618 mov r0, r3 + 802c130: f00a f916 bl 8036360 + 802c134: 4603 mov r3, r0 + 802c136: 2b00 cmp r3, #0 + 802c138: d001 beq.n 802c13e { Error_Handler(); - 802c0fa: f7fe ffdf bl 802b0bc + 802c13a: f7fe ffdf bl 802b0fc } /* LPUART1 clock enable */ __HAL_RCC_LPUART1_CLK_ENABLE(); - 802c0fe: 4b75 ldr r3, [pc, #468] ; (802c2d4 ) - 802c100: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802c104: 4a73 ldr r2, [pc, #460] ; (802c2d4 ) - 802c106: f043 0308 orr.w r3, r3, #8 - 802c10a: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 - 802c10e: 4b71 ldr r3, [pc, #452] ; (802c2d4 ) - 802c110: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 802c114: f003 0308 and.w r3, r3, #8 - 802c118: 64fb str r3, [r7, #76] ; 0x4c - 802c11a: 6cfb ldr r3, [r7, #76] ; 0x4c + 802c13e: 4b75 ldr r3, [pc, #468] ; (802c314 ) + 802c140: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802c144: 4a73 ldr r2, [pc, #460] ; (802c314 ) + 802c146: f043 0308 orr.w r3, r3, #8 + 802c14a: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 + 802c14e: 4b71 ldr r3, [pc, #452] ; (802c314 ) + 802c150: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 802c154: f003 0308 and.w r3, r3, #8 + 802c158: 64fb str r3, [r7, #76] ; 0x4c + 802c15a: 6cfb ldr r3, [r7, #76] ; 0x4c __HAL_RCC_GPIOA_CLK_ENABLE(); - 802c11c: 4b6d ldr r3, [pc, #436] ; (802c2d4 ) - 802c11e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c122: 4a6c ldr r2, [pc, #432] ; (802c2d4 ) - 802c124: f043 0301 orr.w r3, r3, #1 - 802c128: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c12c: 4b69 ldr r3, [pc, #420] ; (802c2d4 ) - 802c12e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c132: f003 0301 and.w r3, r3, #1 - 802c136: 64bb str r3, [r7, #72] ; 0x48 - 802c138: 6cbb ldr r3, [r7, #72] ; 0x48 + 802c15c: 4b6d ldr r3, [pc, #436] ; (802c314 ) + 802c15e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c162: 4a6c ldr r2, [pc, #432] ; (802c314 ) + 802c164: f043 0301 orr.w r3, r3, #1 + 802c168: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c16c: 4b69 ldr r3, [pc, #420] ; (802c314 ) + 802c16e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c172: f003 0301 and.w r3, r3, #1 + 802c176: 64bb str r3, [r7, #72] ; 0x48 + 802c178: 6cbb ldr r3, [r7, #72] ; 0x48 /**LPUART1 GPIO Configuration PA9 ------> LPUART1_TX PA10 ------> LPUART1_RX */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; - 802c13a: f44f 63c0 mov.w r3, #1536 ; 0x600 - 802c13e: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c17a: f44f 63c0 mov.w r3, #1536 ; 0x600 + 802c17e: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c142: 2302 movs r3, #2 - 802c144: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c182: 2302 movs r3, #2 + 802c184: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c148: 2300 movs r3, #0 - 802c14a: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c188: 2300 movs r3, #0 + 802c18a: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c14e: 2300 movs r3, #0 - 802c150: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c18e: 2300 movs r3, #0 + 802c190: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF3_LPUART; - 802c154: 2303 movs r3, #3 - 802c156: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c194: 2303 movs r3, #3 + 802c196: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802c15a: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c15e: 4619 mov r1, r3 - 802c160: 485d ldr r0, [pc, #372] ; (802c2d8 ) - 802c162: f007 fba1 bl 80338a8 + 802c19a: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c19e: 4619 mov r1, r3 + 802c1a0: 485d ldr r0, [pc, #372] ; (802c318 ) + 802c1a2: f007 fba1 bl 80338e8 /* LPUART1 interrupt Init */ HAL_NVIC_SetPriority(LPUART1_IRQn, 4, 0); - 802c166: 2200 movs r2, #0 - 802c168: 2104 movs r1, #4 - 802c16a: 208e movs r0, #142 ; 0x8e - 802c16c: f001 ffc5 bl 802e0fa + 802c1a6: 2200 movs r2, #0 + 802c1a8: 2104 movs r1, #4 + 802c1aa: 208e movs r0, #142 ; 0x8e + 802c1ac: f001 ffc5 bl 802e13a HAL_NVIC_EnableIRQ(LPUART1_IRQn); - 802c170: 208e movs r0, #142 ; 0x8e - 802c172: f001 ffdc bl 802e12e + 802c1b0: 208e movs r0, #142 ; 0x8e + 802c1b2: f001 ffdc bl 802e16e HAL_NVIC_EnableIRQ(USART6_IRQn); /* USER CODE BEGIN USART6_MspInit 1 */ /* USER CODE END USART6_MspInit 1 */ } } - 802c176: f000 bce6 b.w 802cb46 + 802c1b6: f000 bce6 b.w 802cb86 else if(uartHandle->Instance==UART4) - 802c17a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c17e: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c182: 681b ldr r3, [r3, #0] - 802c184: 681b ldr r3, [r3, #0] - 802c186: 4a55 ldr r2, [pc, #340] ; (802c2dc ) - 802c188: 4293 cmp r3, r2 - 802c18a: f040 80ad bne.w 802c2e8 + 802c1ba: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c1be: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c1c2: 681b ldr r3, [r3, #0] + 802c1c4: 681b ldr r3, [r3, #0] + 802c1c6: 4a55 ldr r2, [pc, #340] ; (802c31c ) + 802c1c8: 4293 cmp r3, r2 + 802c1ca: f040 80ad bne.w 802c328 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART4; - 802c18e: 2302 movs r3, #2 - 802c190: 653b str r3, [r7, #80] ; 0x50 + 802c1ce: 2302 movs r3, #2 + 802c1d0: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; - 802c192: 2300 movs r3, #0 - 802c194: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 802c1d2: 2300 movs r3, #0 + 802c1d4: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c198: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c19c: 4618 mov r0, r3 - 802c19e: f00a f8bf bl 8036320 - 802c1a2: 4603 mov r3, r0 - 802c1a4: 2b00 cmp r3, #0 - 802c1a6: d001 beq.n 802c1ac + 802c1d8: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c1dc: 4618 mov r0, r3 + 802c1de: f00a f8bf bl 8036360 + 802c1e2: 4603 mov r3, r0 + 802c1e4: 2b00 cmp r3, #0 + 802c1e6: d001 beq.n 802c1ec Error_Handler(); - 802c1a8: f7fe ff88 bl 802b0bc + 802c1e8: f7fe ff88 bl 802b0fc __HAL_RCC_UART4_CLK_ENABLE(); - 802c1ac: 4b49 ldr r3, [pc, #292] ; (802c2d4 ) - 802c1ae: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c1b2: 4a48 ldr r2, [pc, #288] ; (802c2d4 ) - 802c1b4: f443 2300 orr.w r3, r3, #524288 ; 0x80000 - 802c1b8: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802c1bc: 4b45 ldr r3, [pc, #276] ; (802c2d4 ) - 802c1be: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c1c2: f403 2300 and.w r3, r3, #524288 ; 0x80000 - 802c1c6: 647b str r3, [r7, #68] ; 0x44 - 802c1c8: 6c7b ldr r3, [r7, #68] ; 0x44 + 802c1ec: 4b49 ldr r3, [pc, #292] ; (802c314 ) + 802c1ee: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c1f2: 4a48 ldr r2, [pc, #288] ; (802c314 ) + 802c1f4: f443 2300 orr.w r3, r3, #524288 ; 0x80000 + 802c1f8: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802c1fc: 4b45 ldr r3, [pc, #276] ; (802c314 ) + 802c1fe: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c202: f403 2300 and.w r3, r3, #524288 ; 0x80000 + 802c206: 647b str r3, [r7, #68] ; 0x44 + 802c208: 6c7b ldr r3, [r7, #68] ; 0x44 __HAL_RCC_GPIOA_CLK_ENABLE(); - 802c1ca: 4b42 ldr r3, [pc, #264] ; (802c2d4 ) - 802c1cc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c1d0: 4a40 ldr r2, [pc, #256] ; (802c2d4 ) - 802c1d2: f043 0301 orr.w r3, r3, #1 - 802c1d6: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c1da: 4b3e ldr r3, [pc, #248] ; (802c2d4 ) - 802c1dc: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c1e0: f003 0301 and.w r3, r3, #1 - 802c1e4: 643b str r3, [r7, #64] ; 0x40 - 802c1e6: 6c3b ldr r3, [r7, #64] ; 0x40 + 802c20a: 4b42 ldr r3, [pc, #264] ; (802c314 ) + 802c20c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c210: 4a40 ldr r2, [pc, #256] ; (802c314 ) + 802c212: f043 0301 orr.w r3, r3, #1 + 802c216: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c21a: 4b3e ldr r3, [pc, #248] ; (802c314 ) + 802c21c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c220: f003 0301 and.w r3, r3, #1 + 802c224: 643b str r3, [r7, #64] ; 0x40 + 802c226: 6c3b ldr r3, [r7, #64] ; 0x40 GPIO_InitStruct.Pin = GPIO_PIN_11; - 802c1e8: f44f 6300 mov.w r3, #2048 ; 0x800 - 802c1ec: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c228: f44f 6300 mov.w r3, #2048 ; 0x800 + 802c22c: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c1f0: 2302 movs r3, #2 - 802c1f2: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c230: 2302 movs r3, #2 + 802c232: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c1f6: 2301 movs r3, #1 - 802c1f8: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c236: 2301 movs r3, #1 + 802c238: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c1fc: 2303 movs r3, #3 - 802c1fe: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c23c: 2303 movs r3, #3 + 802c23e: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF6_UART4; - 802c202: 2306 movs r3, #6 - 802c204: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c242: 2306 movs r3, #6 + 802c244: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802c208: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c20c: 4619 mov r1, r3 - 802c20e: 4832 ldr r0, [pc, #200] ; (802c2d8 ) - 802c210: f007 fb4a bl 80338a8 + 802c248: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c24c: 4619 mov r1, r3 + 802c24e: 4832 ldr r0, [pc, #200] ; (802c318 ) + 802c250: f007 fb4a bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_12; - 802c214: f44f 5380 mov.w r3, #4096 ; 0x1000 - 802c218: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c254: f44f 5380 mov.w r3, #4096 ; 0x1000 + 802c258: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c21c: 2302 movs r3, #2 - 802c21e: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c25c: 2302 movs r3, #2 + 802c25e: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c222: 2300 movs r3, #0 - 802c224: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c262: 2300 movs r3, #0 + 802c264: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c228: 2300 movs r3, #0 - 802c22a: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c268: 2300 movs r3, #0 + 802c26a: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF6_UART4; - 802c22e: 2306 movs r3, #6 - 802c230: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c26e: 2306 movs r3, #6 + 802c270: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802c234: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c238: 4619 mov r1, r3 - 802c23a: 4827 ldr r0, [pc, #156] ; (802c2d8 ) - 802c23c: f007 fb34 bl 80338a8 + 802c274: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c278: 4619 mov r1, r3 + 802c27a: 4827 ldr r0, [pc, #156] ; (802c318 ) + 802c27c: f007 fb34 bl 80338e8 hdma_uart4_tx.Instance = DMA1_Stream0; - 802c240: 4b27 ldr r3, [pc, #156] ; (802c2e0 ) - 802c242: 4a28 ldr r2, [pc, #160] ; (802c2e4 ) - 802c244: 601a str r2, [r3, #0] + 802c280: 4b27 ldr r3, [pc, #156] ; (802c320 ) + 802c282: 4a28 ldr r2, [pc, #160] ; (802c324 ) + 802c284: 601a str r2, [r3, #0] hdma_uart4_tx.Init.Request = DMA_REQUEST_UART4_TX; - 802c246: 4b26 ldr r3, [pc, #152] ; (802c2e0 ) - 802c248: 2240 movs r2, #64 ; 0x40 - 802c24a: 605a str r2, [r3, #4] + 802c286: 4b26 ldr r3, [pc, #152] ; (802c320 ) + 802c288: 2240 movs r2, #64 ; 0x40 + 802c28a: 605a str r2, [r3, #4] hdma_uart4_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c24c: 4b24 ldr r3, [pc, #144] ; (802c2e0 ) - 802c24e: 2240 movs r2, #64 ; 0x40 - 802c250: 609a str r2, [r3, #8] + 802c28c: 4b24 ldr r3, [pc, #144] ; (802c320 ) + 802c28e: 2240 movs r2, #64 ; 0x40 + 802c290: 609a str r2, [r3, #8] hdma_uart4_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c252: 4b23 ldr r3, [pc, #140] ; (802c2e0 ) - 802c254: 2200 movs r2, #0 - 802c256: 60da str r2, [r3, #12] + 802c292: 4b23 ldr r3, [pc, #140] ; (802c320 ) + 802c294: 2200 movs r2, #0 + 802c296: 60da str r2, [r3, #12] hdma_uart4_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c258: 4b21 ldr r3, [pc, #132] ; (802c2e0 ) - 802c25a: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c25e: 611a str r2, [r3, #16] + 802c298: 4b21 ldr r3, [pc, #132] ; (802c320 ) + 802c29a: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c29e: 611a str r2, [r3, #16] hdma_uart4_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c260: 4b1f ldr r3, [pc, #124] ; (802c2e0 ) - 802c262: 2200 movs r2, #0 - 802c264: 615a str r2, [r3, #20] + 802c2a0: 4b1f ldr r3, [pc, #124] ; (802c320 ) + 802c2a2: 2200 movs r2, #0 + 802c2a4: 615a str r2, [r3, #20] hdma_uart4_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c266: 4b1e ldr r3, [pc, #120] ; (802c2e0 ) - 802c268: 2200 movs r2, #0 - 802c26a: 619a str r2, [r3, #24] + 802c2a6: 4b1e ldr r3, [pc, #120] ; (802c320 ) + 802c2a8: 2200 movs r2, #0 + 802c2aa: 619a str r2, [r3, #24] hdma_uart4_tx.Init.Mode = DMA_NORMAL; - 802c26c: 4b1c ldr r3, [pc, #112] ; (802c2e0 ) - 802c26e: 2200 movs r2, #0 - 802c270: 61da str r2, [r3, #28] + 802c2ac: 4b1c ldr r3, [pc, #112] ; (802c320 ) + 802c2ae: 2200 movs r2, #0 + 802c2b0: 61da str r2, [r3, #28] hdma_uart4_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c272: 4b1b ldr r3, [pc, #108] ; (802c2e0 ) - 802c274: 2200 movs r2, #0 - 802c276: 621a str r2, [r3, #32] + 802c2b2: 4b1b ldr r3, [pc, #108] ; (802c320 ) + 802c2b4: 2200 movs r2, #0 + 802c2b6: 621a str r2, [r3, #32] hdma_uart4_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; - 802c278: 4b19 ldr r3, [pc, #100] ; (802c2e0 ) - 802c27a: 2204 movs r2, #4 - 802c27c: 625a str r2, [r3, #36] ; 0x24 + 802c2b8: 4b19 ldr r3, [pc, #100] ; (802c320 ) + 802c2ba: 2204 movs r2, #4 + 802c2bc: 625a str r2, [r3, #36] ; 0x24 hdma_uart4_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; - 802c27e: 4b18 ldr r3, [pc, #96] ; (802c2e0 ) - 802c280: 2203 movs r2, #3 - 802c282: 629a str r2, [r3, #40] ; 0x28 + 802c2be: 4b18 ldr r3, [pc, #96] ; (802c320 ) + 802c2c0: 2203 movs r2, #3 + 802c2c2: 629a str r2, [r3, #40] ; 0x28 hdma_uart4_tx.Init.MemBurst = DMA_MBURST_SINGLE; - 802c284: 4b16 ldr r3, [pc, #88] ; (802c2e0 ) - 802c286: 2200 movs r2, #0 - 802c288: 62da str r2, [r3, #44] ; 0x2c + 802c2c4: 4b16 ldr r3, [pc, #88] ; (802c320 ) + 802c2c6: 2200 movs r2, #0 + 802c2c8: 62da str r2, [r3, #44] ; 0x2c hdma_uart4_tx.Init.PeriphBurst = DMA_PBURST_SINGLE; - 802c28a: 4b15 ldr r3, [pc, #84] ; (802c2e0 ) - 802c28c: 2200 movs r2, #0 - 802c28e: 631a str r2, [r3, #48] ; 0x30 + 802c2ca: 4b15 ldr r3, [pc, #84] ; (802c320 ) + 802c2cc: 2200 movs r2, #0 + 802c2ce: 631a str r2, [r3, #48] ; 0x30 if (HAL_DMA_Init(&hdma_uart4_tx) != HAL_OK) - 802c290: 4813 ldr r0, [pc, #76] ; (802c2e0 ) - 802c292: f001 ffe3 bl 802e25c - 802c296: 4603 mov r3, r0 - 802c298: 2b00 cmp r3, #0 - 802c29a: d001 beq.n 802c2a0 + 802c2d0: 4813 ldr r0, [pc, #76] ; (802c320 ) + 802c2d2: f001 ffe3 bl 802e29c + 802c2d6: 4603 mov r3, r0 + 802c2d8: 2b00 cmp r3, #0 + 802c2da: d001 beq.n 802c2e0 Error_Handler(); - 802c29c: f7fe ff0e bl 802b0bc + 802c2dc: f7fe ff0e bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart4_tx); - 802c2a0: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c2a4: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c2a8: 681b ldr r3, [r3, #0] - 802c2aa: 4a0d ldr r2, [pc, #52] ; (802c2e0 ) - 802c2ac: 679a str r2, [r3, #120] ; 0x78 - 802c2ae: 4a0c ldr r2, [pc, #48] ; (802c2e0 ) - 802c2b0: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c2b4: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c2b8: 681b ldr r3, [r3, #0] - 802c2ba: 6393 str r3, [r2, #56] ; 0x38 + 802c2e0: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c2e4: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c2e8: 681b ldr r3, [r3, #0] + 802c2ea: 4a0d ldr r2, [pc, #52] ; (802c320 ) + 802c2ec: 679a str r2, [r3, #120] ; 0x78 + 802c2ee: 4a0c ldr r2, [pc, #48] ; (802c320 ) + 802c2f0: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c2f4: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c2f8: 681b ldr r3, [r3, #0] + 802c2fa: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(UART4_IRQn, 4, 0); - 802c2bc: 2200 movs r2, #0 - 802c2be: 2104 movs r1, #4 - 802c2c0: 2034 movs r0, #52 ; 0x34 - 802c2c2: f001 ff1a bl 802e0fa + 802c2fc: 2200 movs r2, #0 + 802c2fe: 2104 movs r1, #4 + 802c300: 2034 movs r0, #52 ; 0x34 + 802c302: f001 ff1a bl 802e13a HAL_NVIC_EnableIRQ(UART4_IRQn); - 802c2c6: 2034 movs r0, #52 ; 0x34 - 802c2c8: f001 ff31 bl 802e12e -} - 802c2cc: f000 bc3b b.w 802cb46 - 802c2d0: 58000c00 .word 0x58000c00 - 802c2d4: 58024400 .word 0x58024400 - 802c2d8: 58020000 .word 0x58020000 - 802c2dc: 40004c00 .word 0x40004c00 - 802c2e0: 2400b69c .word 0x2400b69c - 802c2e4: 40020010 .word 0x40020010 + 802c306: 2034 movs r0, #52 ; 0x34 + 802c308: f001 ff31 bl 802e16e +} + 802c30c: f000 bc3b b.w 802cb86 + 802c310: 58000c00 .word 0x58000c00 + 802c314: 58024400 .word 0x58024400 + 802c318: 58020000 .word 0x58020000 + 802c31c: 40004c00 .word 0x40004c00 + 802c320: 2400b69c .word 0x2400b69c + 802c324: 40020010 .word 0x40020010 else if(uartHandle->Instance==UART5) - 802c2e8: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c2ec: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c2f0: 681b ldr r3, [r3, #0] - 802c2f2: 681b ldr r3, [r3, #0] - 802c2f4: 4aa4 ldr r2, [pc, #656] ; (802c588 ) - 802c2f6: 4293 cmp r3, r2 - 802c2f8: f040 80a5 bne.w 802c446 + 802c328: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c32c: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c330: 681b ldr r3, [r3, #0] + 802c332: 681b ldr r3, [r3, #0] + 802c334: 4aa4 ldr r2, [pc, #656] ; (802c5c8 ) + 802c336: 4293 cmp r3, r2 + 802c338: f040 80a5 bne.w 802c486 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART5; - 802c2fc: 2302 movs r3, #2 - 802c2fe: 653b str r3, [r7, #80] ; 0x50 + 802c33c: 2302 movs r3, #2 + 802c33e: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; - 802c300: 2300 movs r3, #0 - 802c302: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 802c340: 2300 movs r3, #0 + 802c342: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c306: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c30a: 4618 mov r0, r3 - 802c30c: f00a f808 bl 8036320 - 802c310: 4603 mov r3, r0 - 802c312: 2b00 cmp r3, #0 - 802c314: d001 beq.n 802c31a + 802c346: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c34a: 4618 mov r0, r3 + 802c34c: f00a f808 bl 8036360 + 802c350: 4603 mov r3, r0 + 802c352: 2b00 cmp r3, #0 + 802c354: d001 beq.n 802c35a Error_Handler(); - 802c316: f7fe fed1 bl 802b0bc + 802c356: f7fe fed1 bl 802b0fc __HAL_RCC_UART5_CLK_ENABLE(); - 802c31a: 4b9c ldr r3, [pc, #624] ; (802c58c ) - 802c31c: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c320: 4a9a ldr r2, [pc, #616] ; (802c58c ) - 802c322: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 802c326: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802c32a: 4b98 ldr r3, [pc, #608] ; (802c58c ) - 802c32c: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c330: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 802c334: 63fb str r3, [r7, #60] ; 0x3c - 802c336: 6bfb ldr r3, [r7, #60] ; 0x3c + 802c35a: 4b9c ldr r3, [pc, #624] ; (802c5cc ) + 802c35c: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c360: 4a9a ldr r2, [pc, #616] ; (802c5cc ) + 802c362: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 802c366: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802c36a: 4b98 ldr r3, [pc, #608] ; (802c5cc ) + 802c36c: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c370: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 802c374: 63fb str r3, [r7, #60] ; 0x3c + 802c376: 6bfb ldr r3, [r7, #60] ; 0x3c __HAL_RCC_GPIOC_CLK_ENABLE(); - 802c338: 4b94 ldr r3, [pc, #592] ; (802c58c ) - 802c33a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c33e: 4a93 ldr r2, [pc, #588] ; (802c58c ) - 802c340: f043 0304 orr.w r3, r3, #4 - 802c344: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c348: 4b90 ldr r3, [pc, #576] ; (802c58c ) - 802c34a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c34e: f003 0304 and.w r3, r3, #4 - 802c352: 63bb str r3, [r7, #56] ; 0x38 - 802c354: 6bbb ldr r3, [r7, #56] ; 0x38 + 802c378: 4b94 ldr r3, [pc, #592] ; (802c5cc ) + 802c37a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c37e: 4a93 ldr r2, [pc, #588] ; (802c5cc ) + 802c380: f043 0304 orr.w r3, r3, #4 + 802c384: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c388: 4b90 ldr r3, [pc, #576] ; (802c5cc ) + 802c38a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c38e: f003 0304 and.w r3, r3, #4 + 802c392: 63bb str r3, [r7, #56] ; 0x38 + 802c394: 6bbb ldr r3, [r7, #56] ; 0x38 __HAL_RCC_GPIOD_CLK_ENABLE(); - 802c356: 4b8d ldr r3, [pc, #564] ; (802c58c ) - 802c358: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c35c: 4a8b ldr r2, [pc, #556] ; (802c58c ) - 802c35e: f043 0308 orr.w r3, r3, #8 - 802c362: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c366: 4b89 ldr r3, [pc, #548] ; (802c58c ) - 802c368: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c36c: f003 0308 and.w r3, r3, #8 - 802c370: 637b str r3, [r7, #52] ; 0x34 - 802c372: 6b7b ldr r3, [r7, #52] ; 0x34 + 802c396: 4b8d ldr r3, [pc, #564] ; (802c5cc ) + 802c398: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c39c: 4a8b ldr r2, [pc, #556] ; (802c5cc ) + 802c39e: f043 0308 orr.w r3, r3, #8 + 802c3a2: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c3a6: 4b89 ldr r3, [pc, #548] ; (802c5cc ) + 802c3a8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c3ac: f003 0308 and.w r3, r3, #8 + 802c3b0: 637b str r3, [r7, #52] ; 0x34 + 802c3b2: 6b7b ldr r3, [r7, #52] ; 0x34 GPIO_InitStruct.Pin = GPIO_PIN_12; - 802c374: f44f 5380 mov.w r3, #4096 ; 0x1000 - 802c378: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c3b4: f44f 5380 mov.w r3, #4096 ; 0x1000 + 802c3b8: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c37c: 2302 movs r3, #2 - 802c37e: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c3bc: 2302 movs r3, #2 + 802c3be: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c382: 2300 movs r3, #0 - 802c384: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c3c2: 2300 movs r3, #0 + 802c3c4: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c388: 2300 movs r3, #0 - 802c38a: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c3c8: 2300 movs r3, #0 + 802c3ca: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF8_UART5; - 802c38e: 2308 movs r3, #8 - 802c390: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c3ce: 2308 movs r3, #8 + 802c3d0: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 802c394: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c398: 4619 mov r1, r3 - 802c39a: 487d ldr r0, [pc, #500] ; (802c590 ) - 802c39c: f007 fa84 bl 80338a8 + 802c3d4: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c3d8: 4619 mov r1, r3 + 802c3da: 487d ldr r0, [pc, #500] ; (802c5d0 ) + 802c3dc: f007 fa84 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_2; - 802c3a0: 2304 movs r3, #4 - 802c3a2: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c3e0: 2304 movs r3, #4 + 802c3e2: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c3a6: 2302 movs r3, #2 - 802c3a8: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c3e6: 2302 movs r3, #2 + 802c3e8: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c3ac: 2301 movs r3, #1 - 802c3ae: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c3ec: 2301 movs r3, #1 + 802c3ee: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c3b2: 2303 movs r3, #3 - 802c3b4: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c3f2: 2303 movs r3, #3 + 802c3f4: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF8_UART5; - 802c3b8: 2308 movs r3, #8 - 802c3ba: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c3f8: 2308 movs r3, #8 + 802c3fa: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802c3be: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c3c2: 4619 mov r1, r3 - 802c3c4: 4873 ldr r0, [pc, #460] ; (802c594 ) - 802c3c6: f007 fa6f bl 80338a8 + 802c3fe: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c402: 4619 mov r1, r3 + 802c404: 4873 ldr r0, [pc, #460] ; (802c5d4 ) + 802c406: f007 fa6f bl 80338e8 hdma_uart5_tx.Instance = DMA1_Stream3; - 802c3ca: 4b73 ldr r3, [pc, #460] ; (802c598 ) - 802c3cc: 4a73 ldr r2, [pc, #460] ; (802c59c ) - 802c3ce: 601a str r2, [r3, #0] + 802c40a: 4b73 ldr r3, [pc, #460] ; (802c5d8 ) + 802c40c: 4a73 ldr r2, [pc, #460] ; (802c5dc ) + 802c40e: 601a str r2, [r3, #0] hdma_uart5_tx.Init.Request = DMA_REQUEST_UART5_TX; - 802c3d0: 4b71 ldr r3, [pc, #452] ; (802c598 ) - 802c3d2: 2242 movs r2, #66 ; 0x42 - 802c3d4: 605a str r2, [r3, #4] + 802c410: 4b71 ldr r3, [pc, #452] ; (802c5d8 ) + 802c412: 2242 movs r2, #66 ; 0x42 + 802c414: 605a str r2, [r3, #4] hdma_uart5_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c3d6: 4b70 ldr r3, [pc, #448] ; (802c598 ) - 802c3d8: 2240 movs r2, #64 ; 0x40 - 802c3da: 609a str r2, [r3, #8] + 802c416: 4b70 ldr r3, [pc, #448] ; (802c5d8 ) + 802c418: 2240 movs r2, #64 ; 0x40 + 802c41a: 609a str r2, [r3, #8] hdma_uart5_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c3dc: 4b6e ldr r3, [pc, #440] ; (802c598 ) - 802c3de: 2200 movs r2, #0 - 802c3e0: 60da str r2, [r3, #12] + 802c41c: 4b6e ldr r3, [pc, #440] ; (802c5d8 ) + 802c41e: 2200 movs r2, #0 + 802c420: 60da str r2, [r3, #12] hdma_uart5_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c3e2: 4b6d ldr r3, [pc, #436] ; (802c598 ) - 802c3e4: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c3e8: 611a str r2, [r3, #16] + 802c422: 4b6d ldr r3, [pc, #436] ; (802c5d8 ) + 802c424: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c428: 611a str r2, [r3, #16] hdma_uart5_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c3ea: 4b6b ldr r3, [pc, #428] ; (802c598 ) - 802c3ec: 2200 movs r2, #0 - 802c3ee: 615a str r2, [r3, #20] + 802c42a: 4b6b ldr r3, [pc, #428] ; (802c5d8 ) + 802c42c: 2200 movs r2, #0 + 802c42e: 615a str r2, [r3, #20] hdma_uart5_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c3f0: 4b69 ldr r3, [pc, #420] ; (802c598 ) - 802c3f2: 2200 movs r2, #0 - 802c3f4: 619a str r2, [r3, #24] + 802c430: 4b69 ldr r3, [pc, #420] ; (802c5d8 ) + 802c432: 2200 movs r2, #0 + 802c434: 619a str r2, [r3, #24] hdma_uart5_tx.Init.Mode = DMA_NORMAL; - 802c3f6: 4b68 ldr r3, [pc, #416] ; (802c598 ) - 802c3f8: 2200 movs r2, #0 - 802c3fa: 61da str r2, [r3, #28] + 802c436: 4b68 ldr r3, [pc, #416] ; (802c5d8 ) + 802c438: 2200 movs r2, #0 + 802c43a: 61da str r2, [r3, #28] hdma_uart5_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c3fc: 4b66 ldr r3, [pc, #408] ; (802c598 ) - 802c3fe: 2200 movs r2, #0 - 802c400: 621a str r2, [r3, #32] + 802c43c: 4b66 ldr r3, [pc, #408] ; (802c5d8 ) + 802c43e: 2200 movs r2, #0 + 802c440: 621a str r2, [r3, #32] hdma_uart5_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 802c402: 4b65 ldr r3, [pc, #404] ; (802c598 ) - 802c404: 2200 movs r2, #0 - 802c406: 625a str r2, [r3, #36] ; 0x24 + 802c442: 4b65 ldr r3, [pc, #404] ; (802c5d8 ) + 802c444: 2200 movs r2, #0 + 802c446: 625a str r2, [r3, #36] ; 0x24 if (HAL_DMA_Init(&hdma_uart5_tx) != HAL_OK) - 802c408: 4863 ldr r0, [pc, #396] ; (802c598 ) - 802c40a: f001 ff27 bl 802e25c - 802c40e: 4603 mov r3, r0 - 802c410: 2b00 cmp r3, #0 - 802c412: d001 beq.n 802c418 + 802c448: 4863 ldr r0, [pc, #396] ; (802c5d8 ) + 802c44a: f001 ff27 bl 802e29c + 802c44e: 4603 mov r3, r0 + 802c450: 2b00 cmp r3, #0 + 802c452: d001 beq.n 802c458 Error_Handler(); - 802c414: f7fe fe52 bl 802b0bc + 802c454: f7fe fe52 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart5_tx); - 802c418: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c41c: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c420: 681b ldr r3, [r3, #0] - 802c422: 4a5d ldr r2, [pc, #372] ; (802c598 ) - 802c424: 679a str r2, [r3, #120] ; 0x78 - 802c426: 4a5c ldr r2, [pc, #368] ; (802c598 ) - 802c428: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c42c: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c430: 681b ldr r3, [r3, #0] - 802c432: 6393 str r3, [r2, #56] ; 0x38 + 802c458: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c45c: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c460: 681b ldr r3, [r3, #0] + 802c462: 4a5d ldr r2, [pc, #372] ; (802c5d8 ) + 802c464: 679a str r2, [r3, #120] ; 0x78 + 802c466: 4a5c ldr r2, [pc, #368] ; (802c5d8 ) + 802c468: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c46c: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c470: 681b ldr r3, [r3, #0] + 802c472: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(UART5_IRQn, 4, 0); - 802c434: 2200 movs r2, #0 - 802c436: 2104 movs r1, #4 - 802c438: 2035 movs r0, #53 ; 0x35 - 802c43a: f001 fe5e bl 802e0fa + 802c474: 2200 movs r2, #0 + 802c476: 2104 movs r1, #4 + 802c478: 2035 movs r0, #53 ; 0x35 + 802c47a: f001 fe5e bl 802e13a HAL_NVIC_EnableIRQ(UART5_IRQn); - 802c43e: 2035 movs r0, #53 ; 0x35 - 802c440: f001 fe75 bl 802e12e + 802c47e: 2035 movs r0, #53 ; 0x35 + 802c480: f001 fe75 bl 802e16e } - 802c444: e37f b.n 802cb46 + 802c484: e37f b.n 802cb86 else if(uartHandle->Instance==UART7) - 802c446: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c44a: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c44e: 681b ldr r3, [r3, #0] - 802c450: 681b ldr r3, [r3, #0] - 802c452: 4a53 ldr r2, [pc, #332] ; (802c5a0 ) - 802c454: 4293 cmp r3, r2 - 802c456: f040 80ab bne.w 802c5b0 + 802c486: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c48a: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c48e: 681b ldr r3, [r3, #0] + 802c490: 681b ldr r3, [r3, #0] + 802c492: 4a53 ldr r2, [pc, #332] ; (802c5e0 ) + 802c494: 4293 cmp r3, r2 + 802c496: f040 80ab bne.w 802c5f0 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_UART7; - 802c45a: 2302 movs r3, #2 - 802c45c: 653b str r3, [r7, #80] ; 0x50 + 802c49a: 2302 movs r3, #2 + 802c49c: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; - 802c45e: 2300 movs r3, #0 - 802c460: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 802c49e: 2300 movs r3, #0 + 802c4a0: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c464: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c468: 4618 mov r0, r3 - 802c46a: f009 ff59 bl 8036320 - 802c46e: 4603 mov r3, r0 - 802c470: 2b00 cmp r3, #0 - 802c472: d001 beq.n 802c478 + 802c4a4: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c4a8: 4618 mov r0, r3 + 802c4aa: f009 ff59 bl 8036360 + 802c4ae: 4603 mov r3, r0 + 802c4b0: 2b00 cmp r3, #0 + 802c4b2: d001 beq.n 802c4b8 Error_Handler(); - 802c474: f7fe fe22 bl 802b0bc + 802c4b4: f7fe fe22 bl 802b0fc __HAL_RCC_UART7_CLK_ENABLE(); - 802c478: 4b44 ldr r3, [pc, #272] ; (802c58c ) - 802c47a: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c47e: 4a43 ldr r2, [pc, #268] ; (802c58c ) - 802c480: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 - 802c484: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802c488: 4b40 ldr r3, [pc, #256] ; (802c58c ) - 802c48a: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c48e: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 - 802c492: 633b str r3, [r7, #48] ; 0x30 - 802c494: 6b3b ldr r3, [r7, #48] ; 0x30 + 802c4b8: 4b44 ldr r3, [pc, #272] ; (802c5cc ) + 802c4ba: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c4be: 4a43 ldr r2, [pc, #268] ; (802c5cc ) + 802c4c0: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 + 802c4c4: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802c4c8: 4b40 ldr r3, [pc, #256] ; (802c5cc ) + 802c4ca: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c4ce: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 + 802c4d2: 633b str r3, [r7, #48] ; 0x30 + 802c4d4: 6b3b ldr r3, [r7, #48] ; 0x30 __HAL_RCC_GPIOA_CLK_ENABLE(); - 802c496: 4b3d ldr r3, [pc, #244] ; (802c58c ) - 802c498: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c49c: 4a3b ldr r2, [pc, #236] ; (802c58c ) - 802c49e: f043 0301 orr.w r3, r3, #1 - 802c4a2: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c4a6: 4b39 ldr r3, [pc, #228] ; (802c58c ) - 802c4a8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c4ac: f003 0301 and.w r3, r3, #1 - 802c4b0: 62fb str r3, [r7, #44] ; 0x2c - 802c4b2: 6afb ldr r3, [r7, #44] ; 0x2c + 802c4d6: 4b3d ldr r3, [pc, #244] ; (802c5cc ) + 802c4d8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c4dc: 4a3b ldr r2, [pc, #236] ; (802c5cc ) + 802c4de: f043 0301 orr.w r3, r3, #1 + 802c4e2: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c4e6: 4b39 ldr r3, [pc, #228] ; (802c5cc ) + 802c4e8: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c4ec: f003 0301 and.w r3, r3, #1 + 802c4f0: 62fb str r3, [r7, #44] ; 0x2c + 802c4f2: 6afb ldr r3, [r7, #44] ; 0x2c GPIO_InitStruct.Pin = GPIO_PIN_8; - 802c4b4: f44f 7380 mov.w r3, #256 ; 0x100 - 802c4b8: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c4f4: f44f 7380 mov.w r3, #256 ; 0x100 + 802c4f8: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c4bc: 2302 movs r3, #2 - 802c4be: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c4fc: 2302 movs r3, #2 + 802c4fe: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c4c2: 2301 movs r3, #1 - 802c4c4: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c502: 2301 movs r3, #1 + 802c504: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c4c8: 2303 movs r3, #3 - 802c4ca: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c508: 2303 movs r3, #3 + 802c50a: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF11_UART7; - 802c4ce: 230b movs r3, #11 - 802c4d0: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c50e: 230b movs r3, #11 + 802c510: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802c4d4: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c4d8: 4619 mov r1, r3 - 802c4da: 4832 ldr r0, [pc, #200] ; (802c5a4 ) - 802c4dc: f007 f9e4 bl 80338a8 + 802c514: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c518: 4619 mov r1, r3 + 802c51a: 4832 ldr r0, [pc, #200] ; (802c5e4 ) + 802c51c: f007 f9e4 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_15; - 802c4e0: f44f 4300 mov.w r3, #32768 ; 0x8000 - 802c4e4: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c520: f44f 4300 mov.w r3, #32768 ; 0x8000 + 802c524: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c4e8: 2302 movs r3, #2 - 802c4ea: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c528: 2302 movs r3, #2 + 802c52a: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c4ee: 2300 movs r3, #0 - 802c4f0: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c52e: 2300 movs r3, #0 + 802c530: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c4f4: 2300 movs r3, #0 - 802c4f6: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c534: 2300 movs r3, #0 + 802c536: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF11_UART7; - 802c4fa: 230b movs r3, #11 - 802c4fc: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c53a: 230b movs r3, #11 + 802c53c: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 802c500: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c504: 4619 mov r1, r3 - 802c506: 4827 ldr r0, [pc, #156] ; (802c5a4 ) - 802c508: f007 f9ce bl 80338a8 + 802c540: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c544: 4619 mov r1, r3 + 802c546: 4827 ldr r0, [pc, #156] ; (802c5e4 ) + 802c548: f007 f9ce bl 80338e8 hdma_uart7_tx.Instance = DMA1_Stream1; - 802c50c: 4b26 ldr r3, [pc, #152] ; (802c5a8 ) - 802c50e: 4a27 ldr r2, [pc, #156] ; (802c5ac ) - 802c510: 601a str r2, [r3, #0] + 802c54c: 4b26 ldr r3, [pc, #152] ; (802c5e8 ) + 802c54e: 4a27 ldr r2, [pc, #156] ; (802c5ec ) + 802c550: 601a str r2, [r3, #0] hdma_uart7_tx.Init.Request = DMA_REQUEST_UART7_TX; - 802c512: 4b25 ldr r3, [pc, #148] ; (802c5a8 ) - 802c514: 2250 movs r2, #80 ; 0x50 - 802c516: 605a str r2, [r3, #4] + 802c552: 4b25 ldr r3, [pc, #148] ; (802c5e8 ) + 802c554: 2250 movs r2, #80 ; 0x50 + 802c556: 605a str r2, [r3, #4] hdma_uart7_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c518: 4b23 ldr r3, [pc, #140] ; (802c5a8 ) - 802c51a: 2240 movs r2, #64 ; 0x40 - 802c51c: 609a str r2, [r3, #8] + 802c558: 4b23 ldr r3, [pc, #140] ; (802c5e8 ) + 802c55a: 2240 movs r2, #64 ; 0x40 + 802c55c: 609a str r2, [r3, #8] hdma_uart7_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c51e: 4b22 ldr r3, [pc, #136] ; (802c5a8 ) - 802c520: 2200 movs r2, #0 - 802c522: 60da str r2, [r3, #12] + 802c55e: 4b22 ldr r3, [pc, #136] ; (802c5e8 ) + 802c560: 2200 movs r2, #0 + 802c562: 60da str r2, [r3, #12] hdma_uart7_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c524: 4b20 ldr r3, [pc, #128] ; (802c5a8 ) - 802c526: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c52a: 611a str r2, [r3, #16] + 802c564: 4b20 ldr r3, [pc, #128] ; (802c5e8 ) + 802c566: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c56a: 611a str r2, [r3, #16] hdma_uart7_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c52c: 4b1e ldr r3, [pc, #120] ; (802c5a8 ) - 802c52e: 2200 movs r2, #0 - 802c530: 615a str r2, [r3, #20] + 802c56c: 4b1e ldr r3, [pc, #120] ; (802c5e8 ) + 802c56e: 2200 movs r2, #0 + 802c570: 615a str r2, [r3, #20] hdma_uart7_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c532: 4b1d ldr r3, [pc, #116] ; (802c5a8 ) - 802c534: 2200 movs r2, #0 - 802c536: 619a str r2, [r3, #24] + 802c572: 4b1d ldr r3, [pc, #116] ; (802c5e8 ) + 802c574: 2200 movs r2, #0 + 802c576: 619a str r2, [r3, #24] hdma_uart7_tx.Init.Mode = DMA_NORMAL; - 802c538: 4b1b ldr r3, [pc, #108] ; (802c5a8 ) - 802c53a: 2200 movs r2, #0 - 802c53c: 61da str r2, [r3, #28] + 802c578: 4b1b ldr r3, [pc, #108] ; (802c5e8 ) + 802c57a: 2200 movs r2, #0 + 802c57c: 61da str r2, [r3, #28] hdma_uart7_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c53e: 4b1a ldr r3, [pc, #104] ; (802c5a8 ) - 802c540: 2200 movs r2, #0 - 802c542: 621a str r2, [r3, #32] + 802c57e: 4b1a ldr r3, [pc, #104] ; (802c5e8 ) + 802c580: 2200 movs r2, #0 + 802c582: 621a str r2, [r3, #32] hdma_uart7_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 802c544: 4b18 ldr r3, [pc, #96] ; (802c5a8 ) - 802c546: 2200 movs r2, #0 - 802c548: 625a str r2, [r3, #36] ; 0x24 + 802c584: 4b18 ldr r3, [pc, #96] ; (802c5e8 ) + 802c586: 2200 movs r2, #0 + 802c588: 625a str r2, [r3, #36] ; 0x24 if (HAL_DMA_Init(&hdma_uart7_tx) != HAL_OK) - 802c54a: 4817 ldr r0, [pc, #92] ; (802c5a8 ) - 802c54c: f001 fe86 bl 802e25c - 802c550: 4603 mov r3, r0 - 802c552: 2b00 cmp r3, #0 - 802c554: d001 beq.n 802c55a + 802c58a: 4817 ldr r0, [pc, #92] ; (802c5e8 ) + 802c58c: f001 fe86 bl 802e29c + 802c590: 4603 mov r3, r0 + 802c592: 2b00 cmp r3, #0 + 802c594: d001 beq.n 802c59a Error_Handler(); - 802c556: f7fe fdb1 bl 802b0bc + 802c596: f7fe fdb1 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_uart7_tx); - 802c55a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c55e: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c562: 681b ldr r3, [r3, #0] - 802c564: 4a10 ldr r2, [pc, #64] ; (802c5a8 ) - 802c566: 679a str r2, [r3, #120] ; 0x78 - 802c568: 4a0f ldr r2, [pc, #60] ; (802c5a8 ) - 802c56a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c56e: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c572: 681b ldr r3, [r3, #0] - 802c574: 6393 str r3, [r2, #56] ; 0x38 + 802c59a: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c59e: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c5a2: 681b ldr r3, [r3, #0] + 802c5a4: 4a10 ldr r2, [pc, #64] ; (802c5e8 ) + 802c5a6: 679a str r2, [r3, #120] ; 0x78 + 802c5a8: 4a0f ldr r2, [pc, #60] ; (802c5e8 ) + 802c5aa: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c5ae: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c5b2: 681b ldr r3, [r3, #0] + 802c5b4: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(UART7_IRQn, 4, 0); - 802c576: 2200 movs r2, #0 - 802c578: 2104 movs r1, #4 - 802c57a: 2052 movs r0, #82 ; 0x52 - 802c57c: f001 fdbd bl 802e0fa + 802c5b6: 2200 movs r2, #0 + 802c5b8: 2104 movs r1, #4 + 802c5ba: 2052 movs r0, #82 ; 0x52 + 802c5bc: f001 fdbd bl 802e13a HAL_NVIC_EnableIRQ(UART7_IRQn); - 802c580: 2052 movs r0, #82 ; 0x52 - 802c582: f001 fdd4 bl 802e12e -} - 802c586: e2de b.n 802cb46 - 802c588: 40005000 .word 0x40005000 - 802c58c: 58024400 .word 0x58024400 - 802c590: 58020800 .word 0x58020800 - 802c594: 58020c00 .word 0x58020c00 - 802c598: 2400b714 .word 0x2400b714 - 802c59c: 40020058 .word 0x40020058 - 802c5a0: 40007800 .word 0x40007800 - 802c5a4: 58020000 .word 0x58020000 - 802c5a8: 2400b78c .word 0x2400b78c - 802c5ac: 40020028 .word 0x40020028 + 802c5c0: 2052 movs r0, #82 ; 0x52 + 802c5c2: f001 fdd4 bl 802e16e +} + 802c5c6: e2de b.n 802cb86 + 802c5c8: 40005000 .word 0x40005000 + 802c5cc: 58024400 .word 0x58024400 + 802c5d0: 58020800 .word 0x58020800 + 802c5d4: 58020c00 .word 0x58020c00 + 802c5d8: 2400b714 .word 0x2400b714 + 802c5dc: 40020058 .word 0x40020058 + 802c5e0: 40007800 .word 0x40007800 + 802c5e4: 58020000 .word 0x58020000 + 802c5e8: 2400b78c .word 0x2400b78c + 802c5ec: 40020028 .word 0x40020028 else if(uartHandle->Instance==USART1) - 802c5b0: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c5b4: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c5b8: 681b ldr r3, [r3, #0] - 802c5ba: 681b ldr r3, [r3, #0] - 802c5bc: 4aa9 ldr r2, [pc, #676] ; (802c864 ) - 802c5be: 4293 cmp r3, r2 - 802c5c0: f040 80a0 bne.w 802c704 + 802c5f0: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c5f4: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c5f8: 681b ldr r3, [r3, #0] + 802c5fa: 681b ldr r3, [r3, #0] + 802c5fc: 4aa9 ldr r2, [pc, #676] ; (802c8a4 ) + 802c5fe: 4293 cmp r3, r2 + 802c600: f040 80a0 bne.w 802c744 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART1; - 802c5c4: 2301 movs r3, #1 - 802c5c6: 653b str r3, [r7, #80] ; 0x50 + 802c604: 2301 movs r3, #1 + 802c606: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2; - 802c5c8: 2300 movs r3, #0 - 802c5ca: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 + 802c608: 2300 movs r3, #0 + 802c60a: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c5ce: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c5d2: 4618 mov r0, r3 - 802c5d4: f009 fea4 bl 8036320 - 802c5d8: 4603 mov r3, r0 - 802c5da: 2b00 cmp r3, #0 - 802c5dc: d001 beq.n 802c5e2 + 802c60e: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c612: 4618 mov r0, r3 + 802c614: f009 fea4 bl 8036360 + 802c618: 4603 mov r3, r0 + 802c61a: 2b00 cmp r3, #0 + 802c61c: d001 beq.n 802c622 Error_Handler(); - 802c5de: f7fe fd6d bl 802b0bc + 802c61e: f7fe fd6d bl 802b0fc __HAL_RCC_USART1_CLK_ENABLE(); - 802c5e2: 4ba1 ldr r3, [pc, #644] ; (802c868 ) - 802c5e4: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802c5e8: 4a9f ldr r2, [pc, #636] ; (802c868 ) - 802c5ea: f043 0310 orr.w r3, r3, #16 - 802c5ee: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 - 802c5f2: 4b9d ldr r3, [pc, #628] ; (802c868 ) - 802c5f4: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802c5f8: f003 0310 and.w r3, r3, #16 - 802c5fc: 62bb str r3, [r7, #40] ; 0x28 - 802c5fe: 6abb ldr r3, [r7, #40] ; 0x28 + 802c622: 4ba1 ldr r3, [pc, #644] ; (802c8a8 ) + 802c624: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802c628: 4a9f ldr r2, [pc, #636] ; (802c8a8 ) + 802c62a: f043 0310 orr.w r3, r3, #16 + 802c62e: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 + 802c632: 4b9d ldr r3, [pc, #628] ; (802c8a8 ) + 802c634: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802c638: f003 0310 and.w r3, r3, #16 + 802c63c: 62bb str r3, [r7, #40] ; 0x28 + 802c63e: 6abb ldr r3, [r7, #40] ; 0x28 __HAL_RCC_GPIOB_CLK_ENABLE(); - 802c600: 4b99 ldr r3, [pc, #612] ; (802c868 ) - 802c602: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c606: 4a98 ldr r2, [pc, #608] ; (802c868 ) - 802c608: f043 0302 orr.w r3, r3, #2 - 802c60c: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c610: 4b95 ldr r3, [pc, #596] ; (802c868 ) - 802c612: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c616: f003 0302 and.w r3, r3, #2 - 802c61a: 627b str r3, [r7, #36] ; 0x24 - 802c61c: 6a7b ldr r3, [r7, #36] ; 0x24 + 802c640: 4b99 ldr r3, [pc, #612] ; (802c8a8 ) + 802c642: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c646: 4a98 ldr r2, [pc, #608] ; (802c8a8 ) + 802c648: f043 0302 orr.w r3, r3, #2 + 802c64c: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c650: 4b95 ldr r3, [pc, #596] ; (802c8a8 ) + 802c652: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c656: f003 0302 and.w r3, r3, #2 + 802c65a: 627b str r3, [r7, #36] ; 0x24 + 802c65c: 6a7b ldr r3, [r7, #36] ; 0x24 GPIO_InitStruct.Pin = GPIO_PIN_14; - 802c61e: f44f 4380 mov.w r3, #16384 ; 0x4000 - 802c622: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c65e: f44f 4380 mov.w r3, #16384 ; 0x4000 + 802c662: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c626: 2302 movs r3, #2 - 802c628: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c666: 2302 movs r3, #2 + 802c668: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c62c: 2300 movs r3, #0 - 802c62e: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c66c: 2300 movs r3, #0 + 802c66e: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c632: 2300 movs r3, #0 - 802c634: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c672: 2300 movs r3, #0 + 802c674: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF4_USART1; - 802c638: 2304 movs r3, #4 - 802c63a: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c678: 2304 movs r3, #4 + 802c67a: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802c63e: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c642: 4619 mov r1, r3 - 802c644: 4889 ldr r0, [pc, #548] ; (802c86c ) - 802c646: f007 f92f bl 80338a8 + 802c67e: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c682: 4619 mov r1, r3 + 802c684: 4889 ldr r0, [pc, #548] ; (802c8ac ) + 802c686: f007 f92f bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_15; - 802c64a: f44f 4300 mov.w r3, #32768 ; 0x8000 - 802c64e: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c68a: f44f 4300 mov.w r3, #32768 ; 0x8000 + 802c68e: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c652: 2302 movs r3, #2 - 802c654: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c692: 2302 movs r3, #2 + 802c694: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c658: 2301 movs r3, #1 - 802c65a: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c698: 2301 movs r3, #1 + 802c69a: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c65e: 2303 movs r3, #3 - 802c660: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c69e: 2303 movs r3, #3 + 802c6a0: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF4_USART1; - 802c664: 2304 movs r3, #4 - 802c666: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c6a4: 2304 movs r3, #4 + 802c6a6: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 802c66a: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c66e: 4619 mov r1, r3 - 802c670: 487e ldr r0, [pc, #504] ; (802c86c ) - 802c672: f007 f919 bl 80338a8 + 802c6aa: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c6ae: 4619 mov r1, r3 + 802c6b0: 487e ldr r0, [pc, #504] ; (802c8ac ) + 802c6b2: f007 f919 bl 80338e8 hdma_usart1_tx.Instance = DMA1_Stream2; - 802c676: 4b7e ldr r3, [pc, #504] ; (802c870 ) - 802c678: 4a7e ldr r2, [pc, #504] ; (802c874 ) - 802c67a: 601a str r2, [r3, #0] + 802c6b6: 4b7e ldr r3, [pc, #504] ; (802c8b0 ) + 802c6b8: 4a7e ldr r2, [pc, #504] ; (802c8b4 ) + 802c6ba: 601a str r2, [r3, #0] hdma_usart1_tx.Init.Request = DMA_REQUEST_USART1_TX; - 802c67c: 4b7c ldr r3, [pc, #496] ; (802c870 ) - 802c67e: 222a movs r2, #42 ; 0x2a - 802c680: 605a str r2, [r3, #4] + 802c6bc: 4b7c ldr r3, [pc, #496] ; (802c8b0 ) + 802c6be: 222a movs r2, #42 ; 0x2a + 802c6c0: 605a str r2, [r3, #4] hdma_usart1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c682: 4b7b ldr r3, [pc, #492] ; (802c870 ) - 802c684: 2240 movs r2, #64 ; 0x40 - 802c686: 609a str r2, [r3, #8] + 802c6c2: 4b7b ldr r3, [pc, #492] ; (802c8b0 ) + 802c6c4: 2240 movs r2, #64 ; 0x40 + 802c6c6: 609a str r2, [r3, #8] hdma_usart1_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c688: 4b79 ldr r3, [pc, #484] ; (802c870 ) - 802c68a: 2200 movs r2, #0 - 802c68c: 60da str r2, [r3, #12] + 802c6c8: 4b79 ldr r3, [pc, #484] ; (802c8b0 ) + 802c6ca: 2200 movs r2, #0 + 802c6cc: 60da str r2, [r3, #12] hdma_usart1_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c68e: 4b78 ldr r3, [pc, #480] ; (802c870 ) - 802c690: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c694: 611a str r2, [r3, #16] + 802c6ce: 4b78 ldr r3, [pc, #480] ; (802c8b0 ) + 802c6d0: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c6d4: 611a str r2, [r3, #16] hdma_usart1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c696: 4b76 ldr r3, [pc, #472] ; (802c870 ) - 802c698: 2200 movs r2, #0 - 802c69a: 615a str r2, [r3, #20] + 802c6d6: 4b76 ldr r3, [pc, #472] ; (802c8b0 ) + 802c6d8: 2200 movs r2, #0 + 802c6da: 615a str r2, [r3, #20] hdma_usart1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c69c: 4b74 ldr r3, [pc, #464] ; (802c870 ) - 802c69e: 2200 movs r2, #0 - 802c6a0: 619a str r2, [r3, #24] + 802c6dc: 4b74 ldr r3, [pc, #464] ; (802c8b0 ) + 802c6de: 2200 movs r2, #0 + 802c6e0: 619a str r2, [r3, #24] hdma_usart1_tx.Init.Mode = DMA_NORMAL; - 802c6a2: 4b73 ldr r3, [pc, #460] ; (802c870 ) - 802c6a4: 2200 movs r2, #0 - 802c6a6: 61da str r2, [r3, #28] + 802c6e2: 4b73 ldr r3, [pc, #460] ; (802c8b0 ) + 802c6e4: 2200 movs r2, #0 + 802c6e6: 61da str r2, [r3, #28] hdma_usart1_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c6a8: 4b71 ldr r3, [pc, #452] ; (802c870 ) - 802c6aa: 2200 movs r2, #0 - 802c6ac: 621a str r2, [r3, #32] + 802c6e8: 4b71 ldr r3, [pc, #452] ; (802c8b0 ) + 802c6ea: 2200 movs r2, #0 + 802c6ec: 621a str r2, [r3, #32] hdma_usart1_tx.Init.FIFOMode = DMA_FIFOMODE_ENABLE; - 802c6ae: 4b70 ldr r3, [pc, #448] ; (802c870 ) - 802c6b0: 2204 movs r2, #4 - 802c6b2: 625a str r2, [r3, #36] ; 0x24 + 802c6ee: 4b70 ldr r3, [pc, #448] ; (802c8b0 ) + 802c6f0: 2204 movs r2, #4 + 802c6f2: 625a str r2, [r3, #36] ; 0x24 hdma_usart1_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; - 802c6b4: 4b6e ldr r3, [pc, #440] ; (802c870 ) - 802c6b6: 2203 movs r2, #3 - 802c6b8: 629a str r2, [r3, #40] ; 0x28 + 802c6f4: 4b6e ldr r3, [pc, #440] ; (802c8b0 ) + 802c6f6: 2203 movs r2, #3 + 802c6f8: 629a str r2, [r3, #40] ; 0x28 hdma_usart1_tx.Init.MemBurst = DMA_MBURST_SINGLE; - 802c6ba: 4b6d ldr r3, [pc, #436] ; (802c870 ) - 802c6bc: 2200 movs r2, #0 - 802c6be: 62da str r2, [r3, #44] ; 0x2c + 802c6fa: 4b6d ldr r3, [pc, #436] ; (802c8b0 ) + 802c6fc: 2200 movs r2, #0 + 802c6fe: 62da str r2, [r3, #44] ; 0x2c hdma_usart1_tx.Init.PeriphBurst = DMA_PBURST_SINGLE; - 802c6c0: 4b6b ldr r3, [pc, #428] ; (802c870 ) - 802c6c2: 2200 movs r2, #0 - 802c6c4: 631a str r2, [r3, #48] ; 0x30 + 802c700: 4b6b ldr r3, [pc, #428] ; (802c8b0 ) + 802c702: 2200 movs r2, #0 + 802c704: 631a str r2, [r3, #48] ; 0x30 if (HAL_DMA_Init(&hdma_usart1_tx) != HAL_OK) - 802c6c6: 486a ldr r0, [pc, #424] ; (802c870 ) - 802c6c8: f001 fdc8 bl 802e25c - 802c6cc: 4603 mov r3, r0 - 802c6ce: 2b00 cmp r3, #0 - 802c6d0: d001 beq.n 802c6d6 + 802c706: 486a ldr r0, [pc, #424] ; (802c8b0 ) + 802c708: f001 fdc8 bl 802e29c + 802c70c: 4603 mov r3, r0 + 802c70e: 2b00 cmp r3, #0 + 802c710: d001 beq.n 802c716 Error_Handler(); - 802c6d2: f7fe fcf3 bl 802b0bc + 802c712: f7fe fcf3 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart1_tx); - 802c6d6: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c6da: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c6de: 681b ldr r3, [r3, #0] - 802c6e0: 4a63 ldr r2, [pc, #396] ; (802c870 ) - 802c6e2: 679a str r2, [r3, #120] ; 0x78 - 802c6e4: 4a62 ldr r2, [pc, #392] ; (802c870 ) - 802c6e6: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c6ea: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c6ee: 681b ldr r3, [r3, #0] - 802c6f0: 6393 str r3, [r2, #56] ; 0x38 + 802c716: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c71a: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c71e: 681b ldr r3, [r3, #0] + 802c720: 4a63 ldr r2, [pc, #396] ; (802c8b0 ) + 802c722: 679a str r2, [r3, #120] ; 0x78 + 802c724: 4a62 ldr r2, [pc, #392] ; (802c8b0 ) + 802c726: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c72a: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c72e: 681b ldr r3, [r3, #0] + 802c730: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(USART1_IRQn, 4, 0); - 802c6f2: 2200 movs r2, #0 - 802c6f4: 2104 movs r1, #4 - 802c6f6: 2025 movs r0, #37 ; 0x25 - 802c6f8: f001 fcff bl 802e0fa + 802c732: 2200 movs r2, #0 + 802c734: 2104 movs r1, #4 + 802c736: 2025 movs r0, #37 ; 0x25 + 802c738: f001 fcff bl 802e13a HAL_NVIC_EnableIRQ(USART1_IRQn); - 802c6fc: 2025 movs r0, #37 ; 0x25 - 802c6fe: f001 fd16 bl 802e12e + 802c73c: 2025 movs r0, #37 ; 0x25 + 802c73e: f001 fd16 bl 802e16e } - 802c702: e220 b.n 802cb46 + 802c742: e220 b.n 802cb86 else if(uartHandle->Instance==USART2) - 802c704: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c708: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c70c: 681b ldr r3, [r3, #0] - 802c70e: 681b ldr r3, [r3, #0] - 802c710: 4a59 ldr r2, [pc, #356] ; (802c878 ) - 802c712: 4293 cmp r3, r2 - 802c714: f040 80b8 bne.w 802c888 + 802c744: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c748: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c74c: 681b ldr r3, [r3, #0] + 802c74e: 681b ldr r3, [r3, #0] + 802c750: 4a59 ldr r2, [pc, #356] ; (802c8b8 ) + 802c752: 4293 cmp r3, r2 + 802c754: f040 80b8 bne.w 802c8c8 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART2; - 802c718: 2302 movs r3, #2 - 802c71a: 653b str r3, [r7, #80] ; 0x50 + 802c758: 2302 movs r3, #2 + 802c75a: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; - 802c71c: 2300 movs r3, #0 - 802c71e: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 802c75c: 2300 movs r3, #0 + 802c75e: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c722: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c726: 4618 mov r0, r3 - 802c728: f009 fdfa bl 8036320 - 802c72c: 4603 mov r3, r0 - 802c72e: 2b00 cmp r3, #0 - 802c730: d001 beq.n 802c736 + 802c762: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c766: 4618 mov r0, r3 + 802c768: f009 fdfa bl 8036360 + 802c76c: 4603 mov r3, r0 + 802c76e: 2b00 cmp r3, #0 + 802c770: d001 beq.n 802c776 Error_Handler(); - 802c732: f7fe fcc3 bl 802b0bc + 802c772: f7fe fcc3 bl 802b0fc __HAL_RCC_USART2_CLK_ENABLE(); - 802c736: 4b4c ldr r3, [pc, #304] ; (802c868 ) - 802c738: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c73c: 4a4a ldr r2, [pc, #296] ; (802c868 ) - 802c73e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 802c742: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802c746: 4b48 ldr r3, [pc, #288] ; (802c868 ) - 802c748: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c74c: f403 3200 and.w r2, r3, #131072 ; 0x20000 - 802c750: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c754: f5a3 7380 sub.w r3, r3, #256 ; 0x100 - 802c758: 601a str r2, [r3, #0] - 802c75a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c75e: f5a3 7380 sub.w r3, r3, #256 ; 0x100 - 802c762: 681b ldr r3, [r3, #0] + 802c776: 4b4c ldr r3, [pc, #304] ; (802c8a8 ) + 802c778: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c77c: 4a4a ldr r2, [pc, #296] ; (802c8a8 ) + 802c77e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 802c782: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802c786: 4b48 ldr r3, [pc, #288] ; (802c8a8 ) + 802c788: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c78c: f403 3200 and.w r2, r3, #131072 ; 0x20000 + 802c790: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c794: f5a3 7380 sub.w r3, r3, #256 ; 0x100 + 802c798: 601a str r2, [r3, #0] + 802c79a: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c79e: f5a3 7380 sub.w r3, r3, #256 ; 0x100 + 802c7a2: 681b ldr r3, [r3, #0] __HAL_RCC_GPIOD_CLK_ENABLE(); - 802c764: 4b40 ldr r3, [pc, #256] ; (802c868 ) - 802c766: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c76a: 4a3f ldr r2, [pc, #252] ; (802c868 ) - 802c76c: f043 0308 orr.w r3, r3, #8 - 802c770: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c774: 4b3c ldr r3, [pc, #240] ; (802c868 ) - 802c776: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c77a: f003 0208 and.w r2, r3, #8 - 802c77e: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c782: f5a3 7382 sub.w r3, r3, #260 ; 0x104 - 802c786: 601a str r2, [r3, #0] - 802c788: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c78c: f5a3 7382 sub.w r3, r3, #260 ; 0x104 - 802c790: 681b ldr r3, [r3, #0] + 802c7a4: 4b40 ldr r3, [pc, #256] ; (802c8a8 ) + 802c7a6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c7aa: 4a3f ldr r2, [pc, #252] ; (802c8a8 ) + 802c7ac: f043 0308 orr.w r3, r3, #8 + 802c7b0: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c7b4: 4b3c ldr r3, [pc, #240] ; (802c8a8 ) + 802c7b6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c7ba: f003 0208 and.w r2, r3, #8 + 802c7be: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c7c2: f5a3 7382 sub.w r3, r3, #260 ; 0x104 + 802c7c6: 601a str r2, [r3, #0] + 802c7c8: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c7cc: f5a3 7382 sub.w r3, r3, #260 ; 0x104 + 802c7d0: 681b ldr r3, [r3, #0] GPIO_InitStruct.Pin = GPIO_PIN_5; - 802c792: 2320 movs r3, #32 - 802c794: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c7d2: 2320 movs r3, #32 + 802c7d4: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c798: 2302 movs r3, #2 - 802c79a: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c7d8: 2302 movs r3, #2 + 802c7da: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c79e: 2300 movs r3, #0 - 802c7a0: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c7de: 2300 movs r3, #0 + 802c7e0: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c7a4: 2300 movs r3, #0 - 802c7a6: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c7e4: 2300 movs r3, #0 + 802c7e6: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART2; - 802c7aa: 2307 movs r3, #7 - 802c7ac: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c7ea: 2307 movs r3, #7 + 802c7ec: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802c7b0: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c7b4: 4619 mov r1, r3 - 802c7b6: 4831 ldr r0, [pc, #196] ; (802c87c ) - 802c7b8: f007 f876 bl 80338a8 + 802c7f0: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c7f4: 4619 mov r1, r3 + 802c7f6: 4831 ldr r0, [pc, #196] ; (802c8bc ) + 802c7f8: f007 f876 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_6; - 802c7bc: 2340 movs r3, #64 ; 0x40 - 802c7be: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c7fc: 2340 movs r3, #64 ; 0x40 + 802c7fe: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c7c2: 2302 movs r3, #2 - 802c7c4: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c802: 2302 movs r3, #2 + 802c804: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c7c8: 2301 movs r3, #1 - 802c7ca: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c808: 2301 movs r3, #1 + 802c80a: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c7ce: 2303 movs r3, #3 - 802c7d0: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c80e: 2303 movs r3, #3 + 802c810: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART2; - 802c7d4: 2307 movs r3, #7 - 802c7d6: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c814: 2307 movs r3, #7 + 802c816: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802c7da: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c7de: 4619 mov r1, r3 - 802c7e0: 4826 ldr r0, [pc, #152] ; (802c87c ) - 802c7e2: f007 f861 bl 80338a8 + 802c81a: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c81e: 4619 mov r1, r3 + 802c820: 4826 ldr r0, [pc, #152] ; (802c8bc ) + 802c822: f007 f861 bl 80338e8 hdma_usart2_tx.Instance = DMA1_Stream5; - 802c7e6: 4b26 ldr r3, [pc, #152] ; (802c880 ) - 802c7e8: 4a26 ldr r2, [pc, #152] ; (802c884 ) - 802c7ea: 601a str r2, [r3, #0] + 802c826: 4b26 ldr r3, [pc, #152] ; (802c8c0 ) + 802c828: 4a26 ldr r2, [pc, #152] ; (802c8c4 ) + 802c82a: 601a str r2, [r3, #0] hdma_usart2_tx.Init.Request = DMA_REQUEST_USART2_TX; - 802c7ec: 4b24 ldr r3, [pc, #144] ; (802c880 ) - 802c7ee: 222c movs r2, #44 ; 0x2c - 802c7f0: 605a str r2, [r3, #4] + 802c82c: 4b24 ldr r3, [pc, #144] ; (802c8c0 ) + 802c82e: 222c movs r2, #44 ; 0x2c + 802c830: 605a str r2, [r3, #4] hdma_usart2_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c7f2: 4b23 ldr r3, [pc, #140] ; (802c880 ) - 802c7f4: 2240 movs r2, #64 ; 0x40 - 802c7f6: 609a str r2, [r3, #8] + 802c832: 4b23 ldr r3, [pc, #140] ; (802c8c0 ) + 802c834: 2240 movs r2, #64 ; 0x40 + 802c836: 609a str r2, [r3, #8] hdma_usart2_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c7f8: 4b21 ldr r3, [pc, #132] ; (802c880 ) - 802c7fa: 2200 movs r2, #0 - 802c7fc: 60da str r2, [r3, #12] + 802c838: 4b21 ldr r3, [pc, #132] ; (802c8c0 ) + 802c83a: 2200 movs r2, #0 + 802c83c: 60da str r2, [r3, #12] hdma_usart2_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c7fe: 4b20 ldr r3, [pc, #128] ; (802c880 ) - 802c800: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c804: 611a str r2, [r3, #16] + 802c83e: 4b20 ldr r3, [pc, #128] ; (802c8c0 ) + 802c840: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c844: 611a str r2, [r3, #16] hdma_usart2_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c806: 4b1e ldr r3, [pc, #120] ; (802c880 ) - 802c808: 2200 movs r2, #0 - 802c80a: 615a str r2, [r3, #20] + 802c846: 4b1e ldr r3, [pc, #120] ; (802c8c0 ) + 802c848: 2200 movs r2, #0 + 802c84a: 615a str r2, [r3, #20] hdma_usart2_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c80c: 4b1c ldr r3, [pc, #112] ; (802c880 ) - 802c80e: 2200 movs r2, #0 - 802c810: 619a str r2, [r3, #24] + 802c84c: 4b1c ldr r3, [pc, #112] ; (802c8c0 ) + 802c84e: 2200 movs r2, #0 + 802c850: 619a str r2, [r3, #24] hdma_usart2_tx.Init.Mode = DMA_NORMAL; - 802c812: 4b1b ldr r3, [pc, #108] ; (802c880 ) - 802c814: 2200 movs r2, #0 - 802c816: 61da str r2, [r3, #28] + 802c852: 4b1b ldr r3, [pc, #108] ; (802c8c0 ) + 802c854: 2200 movs r2, #0 + 802c856: 61da str r2, [r3, #28] hdma_usart2_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c818: 4b19 ldr r3, [pc, #100] ; (802c880 ) - 802c81a: 2200 movs r2, #0 - 802c81c: 621a str r2, [r3, #32] + 802c858: 4b19 ldr r3, [pc, #100] ; (802c8c0 ) + 802c85a: 2200 movs r2, #0 + 802c85c: 621a str r2, [r3, #32] hdma_usart2_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 802c81e: 4b18 ldr r3, [pc, #96] ; (802c880 ) - 802c820: 2200 movs r2, #0 - 802c822: 625a str r2, [r3, #36] ; 0x24 + 802c85e: 4b18 ldr r3, [pc, #96] ; (802c8c0 ) + 802c860: 2200 movs r2, #0 + 802c862: 625a str r2, [r3, #36] ; 0x24 if (HAL_DMA_Init(&hdma_usart2_tx) != HAL_OK) - 802c824: 4816 ldr r0, [pc, #88] ; (802c880 ) - 802c826: f001 fd19 bl 802e25c - 802c82a: 4603 mov r3, r0 - 802c82c: 2b00 cmp r3, #0 - 802c82e: d001 beq.n 802c834 + 802c864: 4816 ldr r0, [pc, #88] ; (802c8c0 ) + 802c866: f001 fd19 bl 802e29c + 802c86a: 4603 mov r3, r0 + 802c86c: 2b00 cmp r3, #0 + 802c86e: d001 beq.n 802c874 Error_Handler(); - 802c830: f7fe fc44 bl 802b0bc + 802c870: f7fe fc44 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart2_tx); - 802c834: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c838: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c83c: 681b ldr r3, [r3, #0] - 802c83e: 4a10 ldr r2, [pc, #64] ; (802c880 ) - 802c840: 679a str r2, [r3, #120] ; 0x78 - 802c842: 4a0f ldr r2, [pc, #60] ; (802c880 ) - 802c844: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c848: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c84c: 681b ldr r3, [r3, #0] - 802c84e: 6393 str r3, [r2, #56] ; 0x38 + 802c874: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c878: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c87c: 681b ldr r3, [r3, #0] + 802c87e: 4a10 ldr r2, [pc, #64] ; (802c8c0 ) + 802c880: 679a str r2, [r3, #120] ; 0x78 + 802c882: 4a0f ldr r2, [pc, #60] ; (802c8c0 ) + 802c884: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c888: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c88c: 681b ldr r3, [r3, #0] + 802c88e: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(USART2_IRQn, 4, 0); - 802c850: 2200 movs r2, #0 - 802c852: 2104 movs r1, #4 - 802c854: 2026 movs r0, #38 ; 0x26 - 802c856: f001 fc50 bl 802e0fa + 802c890: 2200 movs r2, #0 + 802c892: 2104 movs r1, #4 + 802c894: 2026 movs r0, #38 ; 0x26 + 802c896: f001 fc50 bl 802e13a HAL_NVIC_EnableIRQ(USART2_IRQn); - 802c85a: 2026 movs r0, #38 ; 0x26 - 802c85c: f001 fc67 bl 802e12e -} - 802c860: e171 b.n 802cb46 - 802c862: bf00 nop - 802c864: 40011000 .word 0x40011000 - 802c868: 58024400 .word 0x58024400 - 802c86c: 58020400 .word 0x58020400 - 802c870: 2400b804 .word 0x2400b804 - 802c874: 40020040 .word 0x40020040 - 802c878: 40004400 .word 0x40004400 - 802c87c: 58020c00 .word 0x58020c00 - 802c880: 2400b87c .word 0x2400b87c - 802c884: 40020088 .word 0x40020088 + 802c89a: 2026 movs r0, #38 ; 0x26 + 802c89c: f001 fc67 bl 802e16e +} + 802c8a0: e171 b.n 802cb86 + 802c8a2: bf00 nop + 802c8a4: 40011000 .word 0x40011000 + 802c8a8: 58024400 .word 0x58024400 + 802c8ac: 58020400 .word 0x58020400 + 802c8b0: 2400b804 .word 0x2400b804 + 802c8b4: 40020040 .word 0x40020040 + 802c8b8: 40004400 .word 0x40004400 + 802c8bc: 58020c00 .word 0x58020c00 + 802c8c0: 2400b87c .word 0x2400b87c + 802c8c4: 40020088 .word 0x40020088 else if(uartHandle->Instance==USART3) - 802c888: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c88c: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c890: 681b ldr r3, [r3, #0] - 802c892: 681b ldr r3, [r3, #0] - 802c894: 4aae ldr r2, [pc, #696] ; (802cb50 ) - 802c896: 4293 cmp r3, r2 - 802c898: f040 80a7 bne.w 802c9ea + 802c8c8: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c8cc: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802c8d0: 681b ldr r3, [r3, #0] + 802c8d2: 681b ldr r3, [r3, #0] + 802c8d4: 4aae ldr r2, [pc, #696] ; (802cb90 ) + 802c8d6: 4293 cmp r3, r2 + 802c8d8: f040 80a7 bne.w 802ca2a PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3; - 802c89c: 2302 movs r3, #2 - 802c89e: 653b str r3, [r7, #80] ; 0x50 + 802c8dc: 2302 movs r3, #2 + 802c8de: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart234578ClockSelection = RCC_USART234578CLKSOURCE_D2PCLK1; - 802c8a0: 2300 movs r3, #0 - 802c8a2: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 802c8e0: 2300 movs r3, #0 + 802c8e2: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802c8a6: f107 0350 add.w r3, r7, #80 ; 0x50 - 802c8aa: 4618 mov r0, r3 - 802c8ac: f009 fd38 bl 8036320 - 802c8b0: 4603 mov r3, r0 - 802c8b2: 2b00 cmp r3, #0 - 802c8b4: d001 beq.n 802c8ba + 802c8e6: f107 0350 add.w r3, r7, #80 ; 0x50 + 802c8ea: 4618 mov r0, r3 + 802c8ec: f009 fd38 bl 8036360 + 802c8f0: 4603 mov r3, r0 + 802c8f2: 2b00 cmp r3, #0 + 802c8f4: d001 beq.n 802c8fa Error_Handler(); - 802c8b6: f7fe fc01 bl 802b0bc + 802c8f6: f7fe fc01 bl 802b0fc __HAL_RCC_USART3_CLK_ENABLE(); - 802c8ba: 4ba6 ldr r3, [pc, #664] ; (802cb54 ) - 802c8bc: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c8c0: 4aa4 ldr r2, [pc, #656] ; (802cb54 ) - 802c8c2: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 802c8c6: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 - 802c8ca: 4ba2 ldr r3, [pc, #648] ; (802cb54 ) - 802c8cc: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 - 802c8d0: f403 2280 and.w r2, r3, #262144 ; 0x40000 - 802c8d4: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c8d8: f5a3 7384 sub.w r3, r3, #264 ; 0x108 - 802c8dc: 601a str r2, [r3, #0] - 802c8de: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c8e2: f5a3 7384 sub.w r3, r3, #264 ; 0x108 - 802c8e6: 681b ldr r3, [r3, #0] + 802c8fa: 4ba6 ldr r3, [pc, #664] ; (802cb94 ) + 802c8fc: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c900: 4aa4 ldr r2, [pc, #656] ; (802cb94 ) + 802c902: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 802c906: f8c2 30e8 str.w r3, [r2, #232] ; 0xe8 + 802c90a: 4ba2 ldr r3, [pc, #648] ; (802cb94 ) + 802c90c: f8d3 30e8 ldr.w r3, [r3, #232] ; 0xe8 + 802c910: f403 2280 and.w r2, r3, #262144 ; 0x40000 + 802c914: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c918: f5a3 7384 sub.w r3, r3, #264 ; 0x108 + 802c91c: 601a str r2, [r3, #0] + 802c91e: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c922: f5a3 7384 sub.w r3, r3, #264 ; 0x108 + 802c926: 681b ldr r3, [r3, #0] __HAL_RCC_GPIOD_CLK_ENABLE(); - 802c8e8: 4b9a ldr r3, [pc, #616] ; (802cb54 ) - 802c8ea: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c8ee: 4a99 ldr r2, [pc, #612] ; (802cb54 ) - 802c8f0: f043 0308 orr.w r3, r3, #8 - 802c8f4: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802c8f8: 4b96 ldr r3, [pc, #600] ; (802cb54 ) - 802c8fa: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802c8fe: f003 0208 and.w r2, r3, #8 - 802c902: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c906: f5a3 7386 sub.w r3, r3, #268 ; 0x10c - 802c90a: 601a str r2, [r3, #0] - 802c90c: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c910: f5a3 7386 sub.w r3, r3, #268 ; 0x10c - 802c914: 681b ldr r3, [r3, #0] + 802c928: 4b9a ldr r3, [pc, #616] ; (802cb94 ) + 802c92a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c92e: 4a99 ldr r2, [pc, #612] ; (802cb94 ) + 802c930: f043 0308 orr.w r3, r3, #8 + 802c934: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802c938: 4b96 ldr r3, [pc, #600] ; (802cb94 ) + 802c93a: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802c93e: f003 0208 and.w r2, r3, #8 + 802c942: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c946: f5a3 7386 sub.w r3, r3, #268 ; 0x10c + 802c94a: 601a str r2, [r3, #0] + 802c94c: f507 7390 add.w r3, r7, #288 ; 0x120 + 802c950: f5a3 7386 sub.w r3, r3, #268 ; 0x10c + 802c954: 681b ldr r3, [r3, #0] GPIO_InitStruct.Pin = GPIO_PIN_8; - 802c916: f44f 7380 mov.w r3, #256 ; 0x100 - 802c91a: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c956: f44f 7380 mov.w r3, #256 ; 0x100 + 802c95a: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c91e: 2302 movs r3, #2 - 802c920: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c95e: 2302 movs r3, #2 + 802c960: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802c924: 2300 movs r3, #0 - 802c926: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c964: 2300 movs r3, #0 + 802c966: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802c92a: 2300 movs r3, #0 - 802c92c: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c96a: 2300 movs r3, #0 + 802c96c: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART3; - 802c930: 2307 movs r3, #7 - 802c932: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c970: 2307 movs r3, #7 + 802c972: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802c936: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c93a: 4619 mov r1, r3 - 802c93c: 4886 ldr r0, [pc, #536] ; (802cb58 ) - 802c93e: f006 ffb3 bl 80338a8 + 802c976: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c97a: 4619 mov r1, r3 + 802c97c: 4886 ldr r0, [pc, #536] ; (802cb98 ) + 802c97e: f006 ffb3 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_9; - 802c942: f44f 7300 mov.w r3, #512 ; 0x200 - 802c946: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802c982: f44f 7300 mov.w r3, #512 ; 0x200 + 802c986: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802c94a: 2302 movs r3, #2 - 802c94c: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802c98a: 2302 movs r3, #2 + 802c98c: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802c950: 2301 movs r3, #1 - 802c952: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802c990: 2301 movs r3, #1 + 802c992: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802c956: 2303 movs r3, #3 - 802c958: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802c996: 2303 movs r3, #3 + 802c998: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART3; - 802c95c: 2307 movs r3, #7 - 802c95e: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802c99c: 2307 movs r3, #7 + 802c99e: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - 802c962: f507 7386 add.w r3, r7, #268 ; 0x10c - 802c966: 4619 mov r1, r3 - 802c968: 487b ldr r0, [pc, #492] ; (802cb58 ) - 802c96a: f006 ff9d bl 80338a8 + 802c9a2: f507 7386 add.w r3, r7, #268 ; 0x10c + 802c9a6: 4619 mov r1, r3 + 802c9a8: 487b ldr r0, [pc, #492] ; (802cb98 ) + 802c9aa: f006 ff9d bl 80338e8 hdma_usart3_tx.Instance = DMA1_Stream6; - 802c96e: 4b7b ldr r3, [pc, #492] ; (802cb5c ) - 802c970: 4a7b ldr r2, [pc, #492] ; (802cb60 ) - 802c972: 601a str r2, [r3, #0] + 802c9ae: 4b7b ldr r3, [pc, #492] ; (802cb9c ) + 802c9b0: 4a7b ldr r2, [pc, #492] ; (802cba0 ) + 802c9b2: 601a str r2, [r3, #0] hdma_usart3_tx.Init.Request = DMA_REQUEST_USART3_TX; - 802c974: 4b79 ldr r3, [pc, #484] ; (802cb5c ) - 802c976: 222e movs r2, #46 ; 0x2e - 802c978: 605a str r2, [r3, #4] + 802c9b4: 4b79 ldr r3, [pc, #484] ; (802cb9c ) + 802c9b6: 222e movs r2, #46 ; 0x2e + 802c9b8: 605a str r2, [r3, #4] hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802c97a: 4b78 ldr r3, [pc, #480] ; (802cb5c ) - 802c97c: 2240 movs r2, #64 ; 0x40 - 802c97e: 609a str r2, [r3, #8] + 802c9ba: 4b78 ldr r3, [pc, #480] ; (802cb9c ) + 802c9bc: 2240 movs r2, #64 ; 0x40 + 802c9be: 609a str r2, [r3, #8] hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802c980: 4b76 ldr r3, [pc, #472] ; (802cb5c ) - 802c982: 2200 movs r2, #0 - 802c984: 60da str r2, [r3, #12] + 802c9c0: 4b76 ldr r3, [pc, #472] ; (802cb9c ) + 802c9c2: 2200 movs r2, #0 + 802c9c4: 60da str r2, [r3, #12] hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE; - 802c986: 4b75 ldr r3, [pc, #468] ; (802cb5c ) - 802c988: f44f 6280 mov.w r2, #1024 ; 0x400 - 802c98c: 611a str r2, [r3, #16] + 802c9c6: 4b75 ldr r3, [pc, #468] ; (802cb9c ) + 802c9c8: f44f 6280 mov.w r2, #1024 ; 0x400 + 802c9cc: 611a str r2, [r3, #16] hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802c98e: 4b73 ldr r3, [pc, #460] ; (802cb5c ) - 802c990: 2200 movs r2, #0 - 802c992: 615a str r2, [r3, #20] + 802c9ce: 4b73 ldr r3, [pc, #460] ; (802cb9c ) + 802c9d0: 2200 movs r2, #0 + 802c9d2: 615a str r2, [r3, #20] hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802c994: 4b71 ldr r3, [pc, #452] ; (802cb5c ) - 802c996: 2200 movs r2, #0 - 802c998: 619a str r2, [r3, #24] + 802c9d4: 4b71 ldr r3, [pc, #452] ; (802cb9c ) + 802c9d6: 2200 movs r2, #0 + 802c9d8: 619a str r2, [r3, #24] hdma_usart3_tx.Init.Mode = DMA_NORMAL; - 802c99a: 4b70 ldr r3, [pc, #448] ; (802cb5c ) - 802c99c: 2200 movs r2, #0 - 802c99e: 61da str r2, [r3, #28] + 802c9da: 4b70 ldr r3, [pc, #448] ; (802cb9c ) + 802c9dc: 2200 movs r2, #0 + 802c9de: 61da str r2, [r3, #28] hdma_usart3_tx.Init.Priority = DMA_PRIORITY_LOW; - 802c9a0: 4b6e ldr r3, [pc, #440] ; (802cb5c ) - 802c9a2: 2200 movs r2, #0 - 802c9a4: 621a str r2, [r3, #32] + 802c9e0: 4b6e ldr r3, [pc, #440] ; (802cb9c ) + 802c9e2: 2200 movs r2, #0 + 802c9e4: 621a str r2, [r3, #32] hdma_usart3_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 802c9a6: 4b6d ldr r3, [pc, #436] ; (802cb5c ) - 802c9a8: 2200 movs r2, #0 - 802c9aa: 625a str r2, [r3, #36] ; 0x24 + 802c9e6: 4b6d ldr r3, [pc, #436] ; (802cb9c ) + 802c9e8: 2200 movs r2, #0 + 802c9ea: 625a str r2, [r3, #36] ; 0x24 if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK) - 802c9ac: 486b ldr r0, [pc, #428] ; (802cb5c ) - 802c9ae: f001 fc55 bl 802e25c - 802c9b2: 4603 mov r3, r0 - 802c9b4: 2b00 cmp r3, #0 - 802c9b6: d001 beq.n 802c9bc + 802c9ec: 486b ldr r0, [pc, #428] ; (802cb9c ) + 802c9ee: f001 fc55 bl 802e29c + 802c9f2: 4603 mov r3, r0 + 802c9f4: 2b00 cmp r3, #0 + 802c9f6: d001 beq.n 802c9fc Error_Handler(); - 802c9b8: f7fe fb80 bl 802b0bc + 802c9f8: f7fe fb80 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart3_tx); - 802c9bc: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c9c0: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c9c4: 681b ldr r3, [r3, #0] - 802c9c6: 4a65 ldr r2, [pc, #404] ; (802cb5c ) - 802c9c8: 679a str r2, [r3, #120] ; 0x78 - 802c9ca: 4a64 ldr r2, [pc, #400] ; (802cb5c ) - 802c9cc: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c9d0: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c9d4: 681b ldr r3, [r3, #0] - 802c9d6: 6393 str r3, [r2, #56] ; 0x38 + 802c9fc: f507 7390 add.w r3, r7, #288 ; 0x120 + 802ca00: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802ca04: 681b ldr r3, [r3, #0] + 802ca06: 4a65 ldr r2, [pc, #404] ; (802cb9c ) + 802ca08: 679a str r2, [r3, #120] ; 0x78 + 802ca0a: 4a64 ldr r2, [pc, #400] ; (802cb9c ) + 802ca0c: f507 7390 add.w r3, r7, #288 ; 0x120 + 802ca10: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802ca14: 681b ldr r3, [r3, #0] + 802ca16: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(USART3_IRQn, 0, 0); - 802c9d8: 2200 movs r2, #0 - 802c9da: 2100 movs r1, #0 - 802c9dc: 2027 movs r0, #39 ; 0x27 - 802c9de: f001 fb8c bl 802e0fa + 802ca18: 2200 movs r2, #0 + 802ca1a: 2100 movs r1, #0 + 802ca1c: 2027 movs r0, #39 ; 0x27 + 802ca1e: f001 fb8c bl 802e13a HAL_NVIC_EnableIRQ(USART3_IRQn); - 802c9e2: 2027 movs r0, #39 ; 0x27 - 802c9e4: f001 fba3 bl 802e12e + 802ca22: 2027 movs r0, #39 ; 0x27 + 802ca24: f001 fba3 bl 802e16e } - 802c9e8: e0ad b.n 802cb46 + 802ca28: e0ad b.n 802cb86 else if(uartHandle->Instance==USART6) - 802c9ea: f507 7390 add.w r3, r7, #288 ; 0x120 - 802c9ee: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802c9f2: 681b ldr r3, [r3, #0] - 802c9f4: 681b ldr r3, [r3, #0] - 802c9f6: 4a5b ldr r2, [pc, #364] ; (802cb64 ) - 802c9f8: 4293 cmp r3, r2 - 802c9fa: f040 80a4 bne.w 802cb46 + 802ca2a: f507 7390 add.w r3, r7, #288 ; 0x120 + 802ca2e: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802ca32: 681b ldr r3, [r3, #0] + 802ca34: 681b ldr r3, [r3, #0] + 802ca36: 4a5b ldr r2, [pc, #364] ; (802cba4 ) + 802ca38: 4293 cmp r3, r2 + 802ca3a: f040 80a4 bne.w 802cb86 PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6; - 802c9fe: 2301 movs r3, #1 - 802ca00: 653b str r3, [r7, #80] ; 0x50 + 802ca3e: 2301 movs r3, #1 + 802ca40: 653b str r3, [r7, #80] ; 0x50 PeriphClkInitStruct.Usart16ClockSelection = RCC_USART16CLKSOURCE_D2PCLK2; - 802ca02: 2300 movs r3, #0 - 802ca04: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 + 802ca42: 2300 movs r3, #0 + 802ca44: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) - 802ca08: f107 0350 add.w r3, r7, #80 ; 0x50 - 802ca0c: 4618 mov r0, r3 - 802ca0e: f009 fc87 bl 8036320 - 802ca12: 4603 mov r3, r0 - 802ca14: 2b00 cmp r3, #0 - 802ca16: d001 beq.n 802ca1c + 802ca48: f107 0350 add.w r3, r7, #80 ; 0x50 + 802ca4c: 4618 mov r0, r3 + 802ca4e: f009 fc87 bl 8036360 + 802ca52: 4603 mov r3, r0 + 802ca54: 2b00 cmp r3, #0 + 802ca56: d001 beq.n 802ca5c Error_Handler(); - 802ca18: f7fe fb50 bl 802b0bc + 802ca58: f7fe fb50 bl 802b0fc __HAL_RCC_USART6_CLK_ENABLE(); - 802ca1c: 4b4d ldr r3, [pc, #308] ; (802cb54 ) - 802ca1e: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802ca22: 4a4c ldr r2, [pc, #304] ; (802cb54 ) - 802ca24: f043 0320 orr.w r3, r3, #32 - 802ca28: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 - 802ca2c: 4b49 ldr r3, [pc, #292] ; (802cb54 ) - 802ca2e: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 802ca32: f003 0220 and.w r2, r3, #32 - 802ca36: f507 7390 add.w r3, r7, #288 ; 0x120 - 802ca3a: f5a3 7388 sub.w r3, r3, #272 ; 0x110 - 802ca3e: 601a str r2, [r3, #0] - 802ca40: f507 7390 add.w r3, r7, #288 ; 0x120 - 802ca44: f5a3 7388 sub.w r3, r3, #272 ; 0x110 - 802ca48: 681b ldr r3, [r3, #0] + 802ca5c: 4b4d ldr r3, [pc, #308] ; (802cb94 ) + 802ca5e: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802ca62: 4a4c ldr r2, [pc, #304] ; (802cb94 ) + 802ca64: f043 0320 orr.w r3, r3, #32 + 802ca68: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 + 802ca6c: 4b49 ldr r3, [pc, #292] ; (802cb94 ) + 802ca6e: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 802ca72: f003 0220 and.w r2, r3, #32 + 802ca76: f507 7390 add.w r3, r7, #288 ; 0x120 + 802ca7a: f5a3 7388 sub.w r3, r3, #272 ; 0x110 + 802ca7e: 601a str r2, [r3, #0] + 802ca80: f507 7390 add.w r3, r7, #288 ; 0x120 + 802ca84: f5a3 7388 sub.w r3, r3, #272 ; 0x110 + 802ca88: 681b ldr r3, [r3, #0] __HAL_RCC_GPIOC_CLK_ENABLE(); - 802ca4a: 4b42 ldr r3, [pc, #264] ; (802cb54 ) - 802ca4c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802ca50: 4a40 ldr r2, [pc, #256] ; (802cb54 ) - 802ca52: f043 0304 orr.w r3, r3, #4 - 802ca56: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 802ca5a: 4b3e ldr r3, [pc, #248] ; (802cb54 ) - 802ca5c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 802ca60: f003 0204 and.w r2, r3, #4 - 802ca64: f507 7390 add.w r3, r7, #288 ; 0x120 - 802ca68: f5a3 738a sub.w r3, r3, #276 ; 0x114 - 802ca6c: 601a str r2, [r3, #0] - 802ca6e: f507 7390 add.w r3, r7, #288 ; 0x120 - 802ca72: f5a3 738a sub.w r3, r3, #276 ; 0x114 - 802ca76: 681b ldr r3, [r3, #0] + 802ca8a: 4b42 ldr r3, [pc, #264] ; (802cb94 ) + 802ca8c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802ca90: 4a40 ldr r2, [pc, #256] ; (802cb94 ) + 802ca92: f043 0304 orr.w r3, r3, #4 + 802ca96: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 802ca9a: 4b3e ldr r3, [pc, #248] ; (802cb94 ) + 802ca9c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 802caa0: f003 0204 and.w r2, r3, #4 + 802caa4: f507 7390 add.w r3, r7, #288 ; 0x120 + 802caa8: f5a3 738a sub.w r3, r3, #276 ; 0x114 + 802caac: 601a str r2, [r3, #0] + 802caae: f507 7390 add.w r3, r7, #288 ; 0x120 + 802cab2: f5a3 738a sub.w r3, r3, #276 ; 0x114 + 802cab6: 681b ldr r3, [r3, #0] GPIO_InitStruct.Pin = GPIO_PIN_6; - 802ca78: 2340 movs r3, #64 ; 0x40 - 802ca7a: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802cab8: 2340 movs r3, #64 ; 0x40 + 802caba: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802ca7e: 2302 movs r3, #2 - 802ca80: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802cabe: 2302 movs r3, #2 + 802cac0: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_NOPULL; - 802ca84: 2300 movs r3, #0 - 802ca86: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802cac4: 2300 movs r3, #0 + 802cac6: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - 802ca8a: 2300 movs r3, #0 - 802ca8c: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802caca: 2300 movs r3, #0 + 802cacc: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART6; - 802ca90: 2307 movs r3, #7 - 802ca92: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802cad0: 2307 movs r3, #7 + 802cad2: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 802ca96: f507 7386 add.w r3, r7, #268 ; 0x10c - 802ca9a: 4619 mov r1, r3 - 802ca9c: 4832 ldr r0, [pc, #200] ; (802cb68 ) - 802ca9e: f006 ff03 bl 80338a8 + 802cad6: f507 7386 add.w r3, r7, #268 ; 0x10c + 802cada: 4619 mov r1, r3 + 802cadc: 4832 ldr r0, [pc, #200] ; (802cba8 ) + 802cade: f006 ff03 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_7; - 802caa2: 2380 movs r3, #128 ; 0x80 - 802caa4: f8c7 310c str.w r3, [r7, #268] ; 0x10c + 802cae2: 2380 movs r3, #128 ; 0x80 + 802cae4: f8c7 310c str.w r3, [r7, #268] ; 0x10c GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 802caa8: 2302 movs r3, #2 - 802caaa: f8c7 3110 str.w r3, [r7, #272] ; 0x110 + 802cae8: 2302 movs r3, #2 + 802caea: f8c7 3110 str.w r3, [r7, #272] ; 0x110 GPIO_InitStruct.Pull = GPIO_PULLUP; - 802caae: 2301 movs r3, #1 - 802cab0: f8c7 3114 str.w r3, [r7, #276] ; 0x114 + 802caee: 2301 movs r3, #1 + 802caf0: f8c7 3114 str.w r3, [r7, #276] ; 0x114 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 802cab4: 2303 movs r3, #3 - 802cab6: f8c7 3118 str.w r3, [r7, #280] ; 0x118 + 802caf4: 2303 movs r3, #3 + 802caf6: f8c7 3118 str.w r3, [r7, #280] ; 0x118 GPIO_InitStruct.Alternate = GPIO_AF7_USART6; - 802caba: 2307 movs r3, #7 - 802cabc: f8c7 311c str.w r3, [r7, #284] ; 0x11c + 802cafa: 2307 movs r3, #7 + 802cafc: f8c7 311c str.w r3, [r7, #284] ; 0x11c HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 802cac0: f507 7386 add.w r3, r7, #268 ; 0x10c - 802cac4: 4619 mov r1, r3 - 802cac6: 4828 ldr r0, [pc, #160] ; (802cb68 ) - 802cac8: f006 feee bl 80338a8 + 802cb00: f507 7386 add.w r3, r7, #268 ; 0x10c + 802cb04: 4619 mov r1, r3 + 802cb06: 4828 ldr r0, [pc, #160] ; (802cba8 ) + 802cb08: f006 feee bl 80338e8 hdma_usart6_tx.Instance = DMA1_Stream7; - 802cacc: 4b27 ldr r3, [pc, #156] ; (802cb6c ) - 802cace: 4a28 ldr r2, [pc, #160] ; (802cb70 ) - 802cad0: 601a str r2, [r3, #0] + 802cb0c: 4b27 ldr r3, [pc, #156] ; (802cbac ) + 802cb0e: 4a28 ldr r2, [pc, #160] ; (802cbb0 ) + 802cb10: 601a str r2, [r3, #0] hdma_usart6_tx.Init.Request = DMA_REQUEST_USART6_TX; - 802cad2: 4b26 ldr r3, [pc, #152] ; (802cb6c ) - 802cad4: 2248 movs r2, #72 ; 0x48 - 802cad6: 605a str r2, [r3, #4] + 802cb12: 4b26 ldr r3, [pc, #152] ; (802cbac ) + 802cb14: 2248 movs r2, #72 ; 0x48 + 802cb16: 605a str r2, [r3, #4] hdma_usart6_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - 802cad8: 4b24 ldr r3, [pc, #144] ; (802cb6c ) - 802cada: 2240 movs r2, #64 ; 0x40 - 802cadc: 609a str r2, [r3, #8] + 802cb18: 4b24 ldr r3, [pc, #144] ; (802cbac ) + 802cb1a: 2240 movs r2, #64 ; 0x40 + 802cb1c: 609a str r2, [r3, #8] hdma_usart6_tx.Init.PeriphInc = DMA_PINC_DISABLE; - 802cade: 4b23 ldr r3, [pc, #140] ; (802cb6c ) - 802cae0: 2200 movs r2, #0 - 802cae2: 60da str r2, [r3, #12] + 802cb1e: 4b23 ldr r3, [pc, #140] ; (802cbac ) + 802cb20: 2200 movs r2, #0 + 802cb22: 60da str r2, [r3, #12] hdma_usart6_tx.Init.MemInc = DMA_MINC_ENABLE; - 802cae4: 4b21 ldr r3, [pc, #132] ; (802cb6c ) - 802cae6: f44f 6280 mov.w r2, #1024 ; 0x400 - 802caea: 611a str r2, [r3, #16] + 802cb24: 4b21 ldr r3, [pc, #132] ; (802cbac ) + 802cb26: f44f 6280 mov.w r2, #1024 ; 0x400 + 802cb2a: 611a str r2, [r3, #16] hdma_usart6_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - 802caec: 4b1f ldr r3, [pc, #124] ; (802cb6c ) - 802caee: 2200 movs r2, #0 - 802caf0: 615a str r2, [r3, #20] + 802cb2c: 4b1f ldr r3, [pc, #124] ; (802cbac ) + 802cb2e: 2200 movs r2, #0 + 802cb30: 615a str r2, [r3, #20] hdma_usart6_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - 802caf2: 4b1e ldr r3, [pc, #120] ; (802cb6c ) - 802caf4: 2200 movs r2, #0 - 802caf6: 619a str r2, [r3, #24] + 802cb32: 4b1e ldr r3, [pc, #120] ; (802cbac ) + 802cb34: 2200 movs r2, #0 + 802cb36: 619a str r2, [r3, #24] hdma_usart6_tx.Init.Mode = DMA_NORMAL; - 802caf8: 4b1c ldr r3, [pc, #112] ; (802cb6c ) - 802cafa: 2200 movs r2, #0 - 802cafc: 61da str r2, [r3, #28] + 802cb38: 4b1c ldr r3, [pc, #112] ; (802cbac ) + 802cb3a: 2200 movs r2, #0 + 802cb3c: 61da str r2, [r3, #28] hdma_usart6_tx.Init.Priority = DMA_PRIORITY_LOW; - 802cafe: 4b1b ldr r3, [pc, #108] ; (802cb6c ) - 802cb00: 2200 movs r2, #0 - 802cb02: 621a str r2, [r3, #32] + 802cb3e: 4b1b ldr r3, [pc, #108] ; (802cbac ) + 802cb40: 2200 movs r2, #0 + 802cb42: 621a str r2, [r3, #32] hdma_usart6_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - 802cb04: 4b19 ldr r3, [pc, #100] ; (802cb6c ) - 802cb06: 2200 movs r2, #0 - 802cb08: 625a str r2, [r3, #36] ; 0x24 + 802cb44: 4b19 ldr r3, [pc, #100] ; (802cbac ) + 802cb46: 2200 movs r2, #0 + 802cb48: 625a str r2, [r3, #36] ; 0x24 if (HAL_DMA_Init(&hdma_usart6_tx) != HAL_OK) - 802cb0a: 4818 ldr r0, [pc, #96] ; (802cb6c ) - 802cb0c: f001 fba6 bl 802e25c - 802cb10: 4603 mov r3, r0 - 802cb12: 2b00 cmp r3, #0 - 802cb14: d001 beq.n 802cb1a + 802cb4a: 4818 ldr r0, [pc, #96] ; (802cbac ) + 802cb4c: f001 fba6 bl 802e29c + 802cb50: 4603 mov r3, r0 + 802cb52: 2b00 cmp r3, #0 + 802cb54: d001 beq.n 802cb5a Error_Handler(); - 802cb16: f7fe fad1 bl 802b0bc + 802cb56: f7fe fad1 bl 802b0fc __HAL_LINKDMA(uartHandle,hdmatx,hdma_usart6_tx); - 802cb1a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802cb1e: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802cb22: 681b ldr r3, [r3, #0] - 802cb24: 4a11 ldr r2, [pc, #68] ; (802cb6c ) - 802cb26: 679a str r2, [r3, #120] ; 0x78 - 802cb28: 4a10 ldr r2, [pc, #64] ; (802cb6c ) - 802cb2a: f507 7390 add.w r3, r7, #288 ; 0x120 - 802cb2e: f5a3 738e sub.w r3, r3, #284 ; 0x11c - 802cb32: 681b ldr r3, [r3, #0] - 802cb34: 6393 str r3, [r2, #56] ; 0x38 + 802cb5a: f507 7390 add.w r3, r7, #288 ; 0x120 + 802cb5e: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802cb62: 681b ldr r3, [r3, #0] + 802cb64: 4a11 ldr r2, [pc, #68] ; (802cbac ) + 802cb66: 679a str r2, [r3, #120] ; 0x78 + 802cb68: 4a10 ldr r2, [pc, #64] ; (802cbac ) + 802cb6a: f507 7390 add.w r3, r7, #288 ; 0x120 + 802cb6e: f5a3 738e sub.w r3, r3, #284 ; 0x11c + 802cb72: 681b ldr r3, [r3, #0] + 802cb74: 6393 str r3, [r2, #56] ; 0x38 HAL_NVIC_SetPriority(USART6_IRQn, 4, 0); - 802cb36: 2200 movs r2, #0 - 802cb38: 2104 movs r1, #4 - 802cb3a: 2047 movs r0, #71 ; 0x47 - 802cb3c: f001 fadd bl 802e0fa + 802cb76: 2200 movs r2, #0 + 802cb78: 2104 movs r1, #4 + 802cb7a: 2047 movs r0, #71 ; 0x47 + 802cb7c: f001 fadd bl 802e13a HAL_NVIC_EnableIRQ(USART6_IRQn); - 802cb40: 2047 movs r0, #71 ; 0x47 - 802cb42: f001 faf4 bl 802e12e -} - 802cb46: bf00 nop - 802cb48: f507 7790 add.w r7, r7, #288 ; 0x120 - 802cb4c: 46bd mov sp, r7 - 802cb4e: bd80 pop {r7, pc} - 802cb50: 40004800 .word 0x40004800 - 802cb54: 58024400 .word 0x58024400 - 802cb58: 58020c00 .word 0x58020c00 - 802cb5c: 2400b8f4 .word 0x2400b8f4 - 802cb60: 400200a0 .word 0x400200a0 - 802cb64: 40011400 .word 0x40011400 - 802cb68: 58020800 .word 0x58020800 - 802cb6c: 2400b96c .word 0x2400b96c - 802cb70: 400200b8 .word 0x400200b8 - -0802cb74 : + 802cb80: 2047 movs r0, #71 ; 0x47 + 802cb82: f001 faf4 bl 802e16e +} + 802cb86: bf00 nop + 802cb88: f507 7790 add.w r7, r7, #288 ; 0x120 + 802cb8c: 46bd mov sp, r7 + 802cb8e: bd80 pop {r7, pc} + 802cb90: 40004800 .word 0x40004800 + 802cb94: 58024400 .word 0x58024400 + 802cb98: 58020c00 .word 0x58020c00 + 802cb9c: 2400b8f4 .word 0x2400b8f4 + 802cba0: 400200a0 .word 0x400200a0 + 802cba4: 40011400 .word 0x40011400 + 802cba8: 58020800 .word 0x58020800 + 802cbac: 2400b96c .word 0x2400b96c + 802cbb0: 400200b8 .word 0x400200b8 + +0802cbb4 : .section .text.Reset_Handler .weak Reset_Handler .type Reset_Handler, %function Reset_Handler: ldr sp, =_estack /* set stack pointer */ - 802cb74: f8df d034 ldr.w sp, [pc, #52] ; 802cbac + 802cbb4: f8df d034 ldr.w sp, [pc, #52] ; 802cbec /* Call the clock system initialization function.*/ bl SystemInit - 802cb78: f7fe fdac bl 802b6d4 + 802cbb8: f7fe fdac bl 802b714 /* Copy the data segment initializers from flash to SRAM */ ldr r0, =_sdata - 802cb7c: 480c ldr r0, [pc, #48] ; (802cbb0 ) + 802cbbc: 480c ldr r0, [pc, #48] ; (802cbf0 ) ldr r1, =_edata - 802cb7e: 490d ldr r1, [pc, #52] ; (802cbb4 ) + 802cbbe: 490d ldr r1, [pc, #52] ; (802cbf4 ) ldr r2, =_sidata - 802cb80: 4a0d ldr r2, [pc, #52] ; (802cbb8 ) + 802cbc0: 4a0d ldr r2, [pc, #52] ; (802cbf8 ) movs r3, #0 - 802cb82: 2300 movs r3, #0 + 802cbc2: 2300 movs r3, #0 b LoopCopyDataInit - 802cb84: e002 b.n 802cb8c + 802cbc4: e002 b.n 802cbcc -0802cb86 : +0802cbc6 : CopyDataInit: ldr r4, [r2, r3] - 802cb86: 58d4 ldr r4, [r2, r3] + 802cbc6: 58d4 ldr r4, [r2, r3] str r4, [r0, r3] - 802cb88: 50c4 str r4, [r0, r3] + 802cbc8: 50c4 str r4, [r0, r3] adds r3, r3, #4 - 802cb8a: 3304 adds r3, #4 + 802cbca: 3304 adds r3, #4 -0802cb8c : +0802cbcc : LoopCopyDataInit: adds r4, r0, r3 - 802cb8c: 18c4 adds r4, r0, r3 + 802cbcc: 18c4 adds r4, r0, r3 cmp r4, r1 - 802cb8e: 428c cmp r4, r1 + 802cbce: 428c cmp r4, r1 bcc CopyDataInit - 802cb90: d3f9 bcc.n 802cb86 + 802cbd0: d3f9 bcc.n 802cbc6 /* Zero fill the bss segment. */ ldr r2, =_sbss - 802cb92: 4a0a ldr r2, [pc, #40] ; (802cbbc ) + 802cbd2: 4a0a ldr r2, [pc, #40] ; (802cbfc ) ldr r4, =_ebss - 802cb94: 4c0a ldr r4, [pc, #40] ; (802cbc0 ) + 802cbd4: 4c0a ldr r4, [pc, #40] ; (802cc00 ) movs r3, #0 - 802cb96: 2300 movs r3, #0 + 802cbd6: 2300 movs r3, #0 b LoopFillZerobss - 802cb98: e001 b.n 802cb9e + 802cbd8: e001 b.n 802cbde -0802cb9a : +0802cbda : FillZerobss: str r3, [r2] - 802cb9a: 6013 str r3, [r2, #0] + 802cbda: 6013 str r3, [r2, #0] adds r2, r2, #4 - 802cb9c: 3204 adds r2, #4 + 802cbdc: 3204 adds r2, #4 -0802cb9e : +0802cbde : LoopFillZerobss: cmp r2, r4 - 802cb9e: 42a2 cmp r2, r4 + 802cbde: 42a2 cmp r2, r4 bcc FillZerobss - 802cba0: d3fb bcc.n 802cb9a + 802cbe0: d3fb bcc.n 802cbda /* Call static constructors */ bl __libc_init_array - 802cba2: f01b f8ab bl 8047cfc <__libc_init_array> + 802cbe2: f01b f8ab bl 8047d3c <__libc_init_array> /* Call the application's entry point.*/ bl main - 802cba6: f7fd ffd7 bl 802ab58
+ 802cbe6: f7fd ffd7 bl 802ab98
bx lr - 802cbaa: 4770 bx lr + 802cbea: 4770 bx lr ldr sp, =_estack /* set stack pointer */ - 802cbac: 24080000 .word 0x24080000 + 802cbec: 24080000 .word 0x24080000 ldr r0, =_sdata - 802cbb0: 24000000 .word 0x24000000 + 802cbf0: 24000000 .word 0x24000000 ldr r1, =_edata - 802cbb4: 240001ac .word 0x240001ac + 802cbf4: 240001ac .word 0x240001ac ldr r2, =_sidata - 802cbb8: 0804d668 .word 0x0804d668 + 802cbf8: 0804d6a8 .word 0x0804d6a8 ldr r2, =_sbss - 802cbbc: 240001b0 .word 0x240001b0 + 802cbfc: 240001b0 .word 0x240001b0 ldr r4, =_ebss - 802cbc0: 2400ec54 .word 0x2400ec54 + 802cc00: 2400ec54 .word 0x2400ec54 -0802cbc4 : +0802cc04 : * @retval None */ .section .text.Default_Handler,"ax",%progbits Default_Handler: Infinite_Loop: b Infinite_Loop - 802cbc4: e7fe b.n 802cbc4 + 802cc04: e7fe b.n 802cc04 -0802cbc6 : +0802cc06 : * @param ioctx: holds device IO functions. * @retval LAN8742_STATUS_OK if OK * LAN8742_STATUS_ERROR if missing mandatory function */ int32_t LAN8742_RegisterBusIO(lan8742_Object_t *pObj, lan8742_IOCtx_t *ioctx) { - 802cbc6: b480 push {r7} - 802cbc8: b083 sub sp, #12 - 802cbca: af00 add r7, sp, #0 - 802cbcc: 6078 str r0, [r7, #4] - 802cbce: 6039 str r1, [r7, #0] + 802cc06: b480 push {r7} + 802cc08: b083 sub sp, #12 + 802cc0a: af00 add r7, sp, #0 + 802cc0c: 6078 str r0, [r7, #4] + 802cc0e: 6039 str r1, [r7, #0] if(!pObj || !ioctx->ReadReg || !ioctx->WriteReg || !ioctx->GetTick) - 802cbd0: 687b ldr r3, [r7, #4] - 802cbd2: 2b00 cmp r3, #0 - 802cbd4: d00b beq.n 802cbee - 802cbd6: 683b ldr r3, [r7, #0] - 802cbd8: 68db ldr r3, [r3, #12] - 802cbda: 2b00 cmp r3, #0 - 802cbdc: d007 beq.n 802cbee - 802cbde: 683b ldr r3, [r7, #0] - 802cbe0: 689b ldr r3, [r3, #8] - 802cbe2: 2b00 cmp r3, #0 - 802cbe4: d003 beq.n 802cbee - 802cbe6: 683b ldr r3, [r7, #0] - 802cbe8: 691b ldr r3, [r3, #16] - 802cbea: 2b00 cmp r3, #0 - 802cbec: d102 bne.n 802cbf4 + 802cc10: 687b ldr r3, [r7, #4] + 802cc12: 2b00 cmp r3, #0 + 802cc14: d00b beq.n 802cc2e + 802cc16: 683b ldr r3, [r7, #0] + 802cc18: 68db ldr r3, [r3, #12] + 802cc1a: 2b00 cmp r3, #0 + 802cc1c: d007 beq.n 802cc2e + 802cc1e: 683b ldr r3, [r7, #0] + 802cc20: 689b ldr r3, [r3, #8] + 802cc22: 2b00 cmp r3, #0 + 802cc24: d003 beq.n 802cc2e + 802cc26: 683b ldr r3, [r7, #0] + 802cc28: 691b ldr r3, [r3, #16] + 802cc2a: 2b00 cmp r3, #0 + 802cc2c: d102 bne.n 802cc34 { return LAN8742_STATUS_ERROR; - 802cbee: f04f 33ff mov.w r3, #4294967295 - 802cbf2: e014 b.n 802cc1e + 802cc2e: f04f 33ff mov.w r3, #4294967295 + 802cc32: e014 b.n 802cc5e } pObj->IO.Init = ioctx->Init; - 802cbf4: 683b ldr r3, [r7, #0] - 802cbf6: 681a ldr r2, [r3, #0] - 802cbf8: 687b ldr r3, [r7, #4] - 802cbfa: 609a str r2, [r3, #8] + 802cc34: 683b ldr r3, [r7, #0] + 802cc36: 681a ldr r2, [r3, #0] + 802cc38: 687b ldr r3, [r7, #4] + 802cc3a: 609a str r2, [r3, #8] pObj->IO.DeInit = ioctx->DeInit; - 802cbfc: 683b ldr r3, [r7, #0] - 802cbfe: 685a ldr r2, [r3, #4] - 802cc00: 687b ldr r3, [r7, #4] - 802cc02: 60da str r2, [r3, #12] + 802cc3c: 683b ldr r3, [r7, #0] + 802cc3e: 685a ldr r2, [r3, #4] + 802cc40: 687b ldr r3, [r7, #4] + 802cc42: 60da str r2, [r3, #12] pObj->IO.ReadReg = ioctx->ReadReg; - 802cc04: 683b ldr r3, [r7, #0] - 802cc06: 68da ldr r2, [r3, #12] - 802cc08: 687b ldr r3, [r7, #4] - 802cc0a: 615a str r2, [r3, #20] + 802cc44: 683b ldr r3, [r7, #0] + 802cc46: 68da ldr r2, [r3, #12] + 802cc48: 687b ldr r3, [r7, #4] + 802cc4a: 615a str r2, [r3, #20] pObj->IO.WriteReg = ioctx->WriteReg; - 802cc0c: 683b ldr r3, [r7, #0] - 802cc0e: 689a ldr r2, [r3, #8] - 802cc10: 687b ldr r3, [r7, #4] - 802cc12: 611a str r2, [r3, #16] + 802cc4c: 683b ldr r3, [r7, #0] + 802cc4e: 689a ldr r2, [r3, #8] + 802cc50: 687b ldr r3, [r7, #4] + 802cc52: 611a str r2, [r3, #16] pObj->IO.GetTick = ioctx->GetTick; - 802cc14: 683b ldr r3, [r7, #0] - 802cc16: 691a ldr r2, [r3, #16] - 802cc18: 687b ldr r3, [r7, #4] - 802cc1a: 619a str r2, [r3, #24] + 802cc54: 683b ldr r3, [r7, #0] + 802cc56: 691a ldr r2, [r3, #16] + 802cc58: 687b ldr r3, [r7, #4] + 802cc5a: 619a str r2, [r3, #24] return LAN8742_STATUS_OK; - 802cc1c: 2300 movs r3, #0 + 802cc5c: 2300 movs r3, #0 } - 802cc1e: 4618 mov r0, r3 - 802cc20: 370c adds r7, #12 - 802cc22: 46bd mov sp, r7 - 802cc24: f85d 7b04 ldr.w r7, [sp], #4 - 802cc28: 4770 bx lr + 802cc5e: 4618 mov r0, r3 + 802cc60: 370c adds r7, #12 + 802cc62: 46bd mov sp, r7 + 802cc64: f85d 7b04 ldr.w r7, [sp], #4 + 802cc68: 4770 bx lr -0802cc2a : +0802cc6a : * LAN8742_STATUS_READ_ERROR if connot read register * LAN8742_STATUS_WRITE_ERROR if connot write to register * LAN8742_STATUS_RESET_TIMEOUT if cannot perform a software reset */ int32_t LAN8742_Init(lan8742_Object_t *pObj) { - 802cc2a: b580 push {r7, lr} - 802cc2c: b086 sub sp, #24 - 802cc2e: af00 add r7, sp, #0 - 802cc30: 6078 str r0, [r7, #4] + 802cc6a: b580 push {r7, lr} + 802cc6c: b086 sub sp, #24 + 802cc6e: af00 add r7, sp, #0 + 802cc70: 6078 str r0, [r7, #4] uint32_t tickstart = 0, regvalue = 0, addr = 0; - 802cc32: 2300 movs r3, #0 - 802cc34: 60fb str r3, [r7, #12] - 802cc36: 2300 movs r3, #0 - 802cc38: 60bb str r3, [r7, #8] - 802cc3a: 2300 movs r3, #0 - 802cc3c: 617b str r3, [r7, #20] + 802cc72: 2300 movs r3, #0 + 802cc74: 60fb str r3, [r7, #12] + 802cc76: 2300 movs r3, #0 + 802cc78: 60bb str r3, [r7, #8] + 802cc7a: 2300 movs r3, #0 + 802cc7c: 617b str r3, [r7, #20] int32_t status = LAN8742_STATUS_OK; - 802cc3e: 2300 movs r3, #0 - 802cc40: 613b str r3, [r7, #16] + 802cc7e: 2300 movs r3, #0 + 802cc80: 613b str r3, [r7, #16] if(pObj->Is_Initialized == 0) - 802cc42: 687b ldr r3, [r7, #4] - 802cc44: 685b ldr r3, [r3, #4] - 802cc46: 2b00 cmp r3, #0 - 802cc48: d17c bne.n 802cd44 + 802cc82: 687b ldr r3, [r7, #4] + 802cc84: 685b ldr r3, [r3, #4] + 802cc86: 2b00 cmp r3, #0 + 802cc88: d17c bne.n 802cd84 { if(pObj->IO.Init != 0) - 802cc4a: 687b ldr r3, [r7, #4] - 802cc4c: 689b ldr r3, [r3, #8] - 802cc4e: 2b00 cmp r3, #0 - 802cc50: d002 beq.n 802cc58 + 802cc8a: 687b ldr r3, [r7, #4] + 802cc8c: 689b ldr r3, [r3, #8] + 802cc8e: 2b00 cmp r3, #0 + 802cc90: d002 beq.n 802cc98 { /* GPIO and Clocks initialization */ pObj->IO.Init(); - 802cc52: 687b ldr r3, [r7, #4] - 802cc54: 689b ldr r3, [r3, #8] - 802cc56: 4798 blx r3 + 802cc92: 687b ldr r3, [r7, #4] + 802cc94: 689b ldr r3, [r3, #8] + 802cc96: 4798 blx r3 } /* for later check */ pObj->DevAddr = LAN8742_MAX_DEV_ADDR + 1; - 802cc58: 687b ldr r3, [r7, #4] - 802cc5a: 2220 movs r2, #32 - 802cc5c: 601a str r2, [r3, #0] + 802cc98: 687b ldr r3, [r7, #4] + 802cc9a: 2220 movs r2, #32 + 802cc9c: 601a str r2, [r3, #0] /* Get the device address from special mode register */ for(addr = 0; addr <= LAN8742_MAX_DEV_ADDR; addr ++) - 802cc5e: 2300 movs r3, #0 - 802cc60: 617b str r3, [r7, #20] - 802cc62: e01c b.n 802cc9e + 802cc9e: 2300 movs r3, #0 + 802cca0: 617b str r3, [r7, #20] + 802cca2: e01c b.n 802ccde { if(pObj->IO.ReadReg(addr, LAN8742_SMR, ®value) < 0) - 802cc64: 687b ldr r3, [r7, #4] - 802cc66: 695b ldr r3, [r3, #20] - 802cc68: f107 0208 add.w r2, r7, #8 - 802cc6c: 2112 movs r1, #18 - 802cc6e: 6978 ldr r0, [r7, #20] - 802cc70: 4798 blx r3 - 802cc72: 4603 mov r3, r0 - 802cc74: 2b00 cmp r3, #0 - 802cc76: da03 bge.n 802cc80 + 802cca4: 687b ldr r3, [r7, #4] + 802cca6: 695b ldr r3, [r3, #20] + 802cca8: f107 0208 add.w r2, r7, #8 + 802ccac: 2112 movs r1, #18 + 802ccae: 6978 ldr r0, [r7, #20] + 802ccb0: 4798 blx r3 + 802ccb2: 4603 mov r3, r0 + 802ccb4: 2b00 cmp r3, #0 + 802ccb6: da03 bge.n 802ccc0 { status = LAN8742_STATUS_READ_ERROR; - 802cc78: f06f 0304 mvn.w r3, #4 - 802cc7c: 613b str r3, [r7, #16] + 802ccb8: f06f 0304 mvn.w r3, #4 + 802ccbc: 613b str r3, [r7, #16] /* Can't read from this device address continue with next address */ continue; - 802cc7e: e00b b.n 802cc98 + 802ccbe: e00b b.n 802ccd8 } if((regvalue & LAN8742_SMR_PHY_ADDR) == addr) - 802cc80: 68bb ldr r3, [r7, #8] - 802cc82: f003 031f and.w r3, r3, #31 - 802cc86: 697a ldr r2, [r7, #20] - 802cc88: 429a cmp r2, r3 - 802cc8a: d105 bne.n 802cc98 + 802ccc0: 68bb ldr r3, [r7, #8] + 802ccc2: f003 031f and.w r3, r3, #31 + 802ccc6: 697a ldr r2, [r7, #20] + 802ccc8: 429a cmp r2, r3 + 802ccca: d105 bne.n 802ccd8 { pObj->DevAddr = addr; - 802cc8c: 687b ldr r3, [r7, #4] - 802cc8e: 697a ldr r2, [r7, #20] - 802cc90: 601a str r2, [r3, #0] + 802cccc: 687b ldr r3, [r7, #4] + 802ccce: 697a ldr r2, [r7, #20] + 802ccd0: 601a str r2, [r3, #0] status = LAN8742_STATUS_OK; - 802cc92: 2300 movs r3, #0 - 802cc94: 613b str r3, [r7, #16] + 802ccd2: 2300 movs r3, #0 + 802ccd4: 613b str r3, [r7, #16] break; - 802cc96: e005 b.n 802cca4 + 802ccd6: e005 b.n 802cce4 for(addr = 0; addr <= LAN8742_MAX_DEV_ADDR; addr ++) - 802cc98: 697b ldr r3, [r7, #20] - 802cc9a: 3301 adds r3, #1 - 802cc9c: 617b str r3, [r7, #20] - 802cc9e: 697b ldr r3, [r7, #20] - 802cca0: 2b1f cmp r3, #31 - 802cca2: d9df bls.n 802cc64 + 802ccd8: 697b ldr r3, [r7, #20] + 802ccda: 3301 adds r3, #1 + 802ccdc: 617b str r3, [r7, #20] + 802ccde: 697b ldr r3, [r7, #20] + 802cce0: 2b1f cmp r3, #31 + 802cce2: d9df bls.n 802cca4 } } if(pObj->DevAddr > LAN8742_MAX_DEV_ADDR) - 802cca4: 687b ldr r3, [r7, #4] - 802cca6: 681b ldr r3, [r3, #0] - 802cca8: 2b1f cmp r3, #31 - 802ccaa: d902 bls.n 802ccb2 + 802cce4: 687b ldr r3, [r7, #4] + 802cce6: 681b ldr r3, [r3, #0] + 802cce8: 2b1f cmp r3, #31 + 802ccea: d902 bls.n 802ccf2 { status = LAN8742_STATUS_ADDRESS_ERROR; - 802ccac: f06f 0302 mvn.w r3, #2 - 802ccb0: 613b str r3, [r7, #16] + 802ccec: f06f 0302 mvn.w r3, #2 + 802ccf0: 613b str r3, [r7, #16] } /* if device address is matched */ if(status == LAN8742_STATUS_OK) - 802ccb2: 693b ldr r3, [r7, #16] - 802ccb4: 2b00 cmp r3, #0 - 802ccb6: d145 bne.n 802cd44 + 802ccf2: 693b ldr r3, [r7, #16] + 802ccf4: 2b00 cmp r3, #0 + 802ccf6: d145 bne.n 802cd84 { /* set a software reset */ if(pObj->IO.WriteReg(pObj->DevAddr, LAN8742_BCR, LAN8742_BCR_SOFT_RESET) >= 0) - 802ccb8: 687b ldr r3, [r7, #4] - 802ccba: 691b ldr r3, [r3, #16] - 802ccbc: 687a ldr r2, [r7, #4] - 802ccbe: 6810 ldr r0, [r2, #0] - 802ccc0: f44f 4200 mov.w r2, #32768 ; 0x8000 - 802ccc4: 2100 movs r1, #0 - 802ccc6: 4798 blx r3 - 802ccc8: 4603 mov r3, r0 - 802ccca: 2b00 cmp r3, #0 - 802cccc: db37 blt.n 802cd3e + 802ccf8: 687b ldr r3, [r7, #4] + 802ccfa: 691b ldr r3, [r3, #16] + 802ccfc: 687a ldr r2, [r7, #4] + 802ccfe: 6810 ldr r0, [r2, #0] + 802cd00: f44f 4200 mov.w r2, #32768 ; 0x8000 + 802cd04: 2100 movs r1, #0 + 802cd06: 4798 blx r3 + 802cd08: 4603 mov r3, r0 + 802cd0a: 2b00 cmp r3, #0 + 802cd0c: db37 blt.n 802cd7e { /* get software reset status */ if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) >= 0) - 802ccce: 687b ldr r3, [r7, #4] - 802ccd0: 695b ldr r3, [r3, #20] - 802ccd2: 687a ldr r2, [r7, #4] - 802ccd4: 6810 ldr r0, [r2, #0] - 802ccd6: f107 0208 add.w r2, r7, #8 - 802ccda: 2100 movs r1, #0 - 802ccdc: 4798 blx r3 - 802ccde: 4603 mov r3, r0 - 802cce0: 2b00 cmp r3, #0 - 802cce2: db28 blt.n 802cd36 + 802cd0e: 687b ldr r3, [r7, #4] + 802cd10: 695b ldr r3, [r3, #20] + 802cd12: 687a ldr r2, [r7, #4] + 802cd14: 6810 ldr r0, [r2, #0] + 802cd16: f107 0208 add.w r2, r7, #8 + 802cd1a: 2100 movs r1, #0 + 802cd1c: 4798 blx r3 + 802cd1e: 4603 mov r3, r0 + 802cd20: 2b00 cmp r3, #0 + 802cd22: db28 blt.n 802cd76 { tickstart = pObj->IO.GetTick(); - 802cce4: 687b ldr r3, [r7, #4] - 802cce6: 699b ldr r3, [r3, #24] - 802cce8: 4798 blx r3 - 802ccea: 4603 mov r3, r0 - 802ccec: 60fb str r3, [r7, #12] + 802cd24: 687b ldr r3, [r7, #4] + 802cd26: 699b ldr r3, [r3, #24] + 802cd28: 4798 blx r3 + 802cd2a: 4603 mov r3, r0 + 802cd2c: 60fb str r3, [r7, #12] /* wait until software reset is done or timeout occured */ while(regvalue & LAN8742_BCR_SOFT_RESET) - 802ccee: e01c b.n 802cd2a + 802cd2e: e01c b.n 802cd6a { if((pObj->IO.GetTick() - tickstart) <= LAN8742_SW_RESET_TO) - 802ccf0: 687b ldr r3, [r7, #4] - 802ccf2: 699b ldr r3, [r3, #24] - 802ccf4: 4798 blx r3 - 802ccf6: 4603 mov r3, r0 - 802ccf8: 461a mov r2, r3 - 802ccfa: 68fb ldr r3, [r7, #12] - 802ccfc: 1ad3 subs r3, r2, r3 - 802ccfe: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 - 802cd02: d80e bhi.n 802cd22 + 802cd30: 687b ldr r3, [r7, #4] + 802cd32: 699b ldr r3, [r3, #24] + 802cd34: 4798 blx r3 + 802cd36: 4603 mov r3, r0 + 802cd38: 461a mov r2, r3 + 802cd3a: 68fb ldr r3, [r7, #12] + 802cd3c: 1ad3 subs r3, r2, r3 + 802cd3e: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 + 802cd42: d80e bhi.n 802cd62 { if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, ®value) < 0) - 802cd04: 687b ldr r3, [r7, #4] - 802cd06: 695b ldr r3, [r3, #20] - 802cd08: 687a ldr r2, [r7, #4] - 802cd0a: 6810 ldr r0, [r2, #0] - 802cd0c: f107 0208 add.w r2, r7, #8 - 802cd10: 2100 movs r1, #0 - 802cd12: 4798 blx r3 - 802cd14: 4603 mov r3, r0 - 802cd16: 2b00 cmp r3, #0 - 802cd18: da07 bge.n 802cd2a + 802cd44: 687b ldr r3, [r7, #4] + 802cd46: 695b ldr r3, [r3, #20] + 802cd48: 687a ldr r2, [r7, #4] + 802cd4a: 6810 ldr r0, [r2, #0] + 802cd4c: f107 0208 add.w r2, r7, #8 + 802cd50: 2100 movs r1, #0 + 802cd52: 4798 blx r3 + 802cd54: 4603 mov r3, r0 + 802cd56: 2b00 cmp r3, #0 + 802cd58: da07 bge.n 802cd6a { status = LAN8742_STATUS_READ_ERROR; - 802cd1a: f06f 0304 mvn.w r3, #4 - 802cd1e: 613b str r3, [r7, #16] + 802cd5a: f06f 0304 mvn.w r3, #4 + 802cd5e: 613b str r3, [r7, #16] break; - 802cd20: e010 b.n 802cd44 + 802cd60: e010 b.n 802cd84 } } else { status = LAN8742_STATUS_RESET_TIMEOUT; - 802cd22: f06f 0301 mvn.w r3, #1 - 802cd26: 613b str r3, [r7, #16] + 802cd62: f06f 0301 mvn.w r3, #1 + 802cd66: 613b str r3, [r7, #16] break; - 802cd28: e00c b.n 802cd44 + 802cd68: e00c b.n 802cd84 while(regvalue & LAN8742_BCR_SOFT_RESET) - 802cd2a: 68bb ldr r3, [r7, #8] - 802cd2c: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 802cd30: 2b00 cmp r3, #0 - 802cd32: d1dd bne.n 802ccf0 - 802cd34: e006 b.n 802cd44 + 802cd6a: 68bb ldr r3, [r7, #8] + 802cd6c: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 802cd70: 2b00 cmp r3, #0 + 802cd72: d1dd bne.n 802cd30 + 802cd74: e006 b.n 802cd84 } } } else { status = LAN8742_STATUS_READ_ERROR; - 802cd36: f06f 0304 mvn.w r3, #4 - 802cd3a: 613b str r3, [r7, #16] - 802cd3c: e002 b.n 802cd44 + 802cd76: f06f 0304 mvn.w r3, #4 + 802cd7a: 613b str r3, [r7, #16] + 802cd7c: e002 b.n 802cd84 } } else { status = LAN8742_STATUS_WRITE_ERROR; - 802cd3e: f06f 0303 mvn.w r3, #3 - 802cd42: 613b str r3, [r7, #16] + 802cd7e: f06f 0303 mvn.w r3, #3 + 802cd82: 613b str r3, [r7, #16] } } } if(status == LAN8742_STATUS_OK) - 802cd44: 693b ldr r3, [r7, #16] - 802cd46: 2b00 cmp r3, #0 - 802cd48: d112 bne.n 802cd70 + 802cd84: 693b ldr r3, [r7, #16] + 802cd86: 2b00 cmp r3, #0 + 802cd88: d112 bne.n 802cdb0 { tickstart = pObj->IO.GetTick(); - 802cd4a: 687b ldr r3, [r7, #4] - 802cd4c: 699b ldr r3, [r3, #24] - 802cd4e: 4798 blx r3 - 802cd50: 4603 mov r3, r0 - 802cd52: 60fb str r3, [r7, #12] + 802cd8a: 687b ldr r3, [r7, #4] + 802cd8c: 699b ldr r3, [r3, #24] + 802cd8e: 4798 blx r3 + 802cd90: 4603 mov r3, r0 + 802cd92: 60fb str r3, [r7, #12] /* Wait for 2s to perform initialization */ while((pObj->IO.GetTick() - tickstart) <= LAN8742_INIT_TO) - 802cd54: bf00 nop - 802cd56: 687b ldr r3, [r7, #4] - 802cd58: 699b ldr r3, [r3, #24] - 802cd5a: 4798 blx r3 - 802cd5c: 4603 mov r3, r0 - 802cd5e: 461a mov r2, r3 - 802cd60: 68fb ldr r3, [r7, #12] - 802cd62: 1ad3 subs r3, r2, r3 - 802cd64: f5b3 6ffa cmp.w r3, #2000 ; 0x7d0 - 802cd68: d9f5 bls.n 802cd56 + 802cd94: bf00 nop + 802cd96: 687b ldr r3, [r7, #4] + 802cd98: 699b ldr r3, [r3, #24] + 802cd9a: 4798 blx r3 + 802cd9c: 4603 mov r3, r0 + 802cd9e: 461a mov r2, r3 + 802cda0: 68fb ldr r3, [r7, #12] + 802cda2: 1ad3 subs r3, r2, r3 + 802cda4: f5b3 6ffa cmp.w r3, #2000 ; 0x7d0 + 802cda8: d9f5 bls.n 802cd96 { } pObj->Is_Initialized = 1; - 802cd6a: 687b ldr r3, [r7, #4] - 802cd6c: 2201 movs r2, #1 - 802cd6e: 605a str r2, [r3, #4] + 802cdaa: 687b ldr r3, [r7, #4] + 802cdac: 2201 movs r2, #1 + 802cdae: 605a str r2, [r3, #4] } return status; - 802cd70: 693b ldr r3, [r7, #16] + 802cdb0: 693b ldr r3, [r7, #16] } - 802cd72: 4618 mov r0, r3 - 802cd74: 3718 adds r7, #24 - 802cd76: 46bd mov sp, r7 - 802cd78: bd80 pop {r7, pc} + 802cdb2: 4618 mov r0, r3 + 802cdb4: 3718 adds r7, #24 + 802cdb6: 46bd mov sp, r7 + 802cdb8: bd80 pop {r7, pc} -0802cd7a : +0802cdba : * LAN8742_STATUS_10MBITS_HALFDUPLEX if 10Mb/s HD * LAN8742_STATUS_READ_ERROR if connot read register * LAN8742_STATUS_WRITE_ERROR if connot write to register */ int32_t LAN8742_GetLinkState(lan8742_Object_t *pObj) { - 802cd7a: b580 push {r7, lr} - 802cd7c: b084 sub sp, #16 - 802cd7e: af00 add r7, sp, #0 - 802cd80: 6078 str r0, [r7, #4] + 802cdba: b580 push {r7, lr} + 802cdbc: b084 sub sp, #16 + 802cdbe: af00 add r7, sp, #0 + 802cdc0: 6078 str r0, [r7, #4] uint32_t readval = 0; - 802cd82: 2300 movs r3, #0 - 802cd84: 60fb str r3, [r7, #12] + 802cdc2: 2300 movs r3, #0 + 802cdc4: 60fb str r3, [r7, #12] /* Read Status register */ if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) - 802cd86: 687b ldr r3, [r7, #4] - 802cd88: 695b ldr r3, [r3, #20] - 802cd8a: 687a ldr r2, [r7, #4] - 802cd8c: 6810 ldr r0, [r2, #0] - 802cd8e: f107 020c add.w r2, r7, #12 - 802cd92: 2101 movs r1, #1 - 802cd94: 4798 blx r3 - 802cd96: 4603 mov r3, r0 - 802cd98: 2b00 cmp r3, #0 - 802cd9a: da02 bge.n 802cda2 + 802cdc6: 687b ldr r3, [r7, #4] + 802cdc8: 695b ldr r3, [r3, #20] + 802cdca: 687a ldr r2, [r7, #4] + 802cdcc: 6810 ldr r0, [r2, #0] + 802cdce: f107 020c add.w r2, r7, #12 + 802cdd2: 2101 movs r1, #1 + 802cdd4: 4798 blx r3 + 802cdd6: 4603 mov r3, r0 + 802cdd8: 2b00 cmp r3, #0 + 802cdda: da02 bge.n 802cde2 { return LAN8742_STATUS_READ_ERROR; - 802cd9c: f06f 0304 mvn.w r3, #4 - 802cda0: e06e b.n 802ce80 + 802cddc: f06f 0304 mvn.w r3, #4 + 802cde0: e06e b.n 802cec0 } /* Read Status register again */ if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BSR, &readval) < 0) - 802cda2: 687b ldr r3, [r7, #4] - 802cda4: 695b ldr r3, [r3, #20] - 802cda6: 687a ldr r2, [r7, #4] - 802cda8: 6810 ldr r0, [r2, #0] - 802cdaa: f107 020c add.w r2, r7, #12 - 802cdae: 2101 movs r1, #1 - 802cdb0: 4798 blx r3 - 802cdb2: 4603 mov r3, r0 - 802cdb4: 2b00 cmp r3, #0 - 802cdb6: da02 bge.n 802cdbe + 802cde2: 687b ldr r3, [r7, #4] + 802cde4: 695b ldr r3, [r3, #20] + 802cde6: 687a ldr r2, [r7, #4] + 802cde8: 6810 ldr r0, [r2, #0] + 802cdea: f107 020c add.w r2, r7, #12 + 802cdee: 2101 movs r1, #1 + 802cdf0: 4798 blx r3 + 802cdf2: 4603 mov r3, r0 + 802cdf4: 2b00 cmp r3, #0 + 802cdf6: da02 bge.n 802cdfe { return LAN8742_STATUS_READ_ERROR; - 802cdb8: f06f 0304 mvn.w r3, #4 - 802cdbc: e060 b.n 802ce80 + 802cdf8: f06f 0304 mvn.w r3, #4 + 802cdfc: e060 b.n 802cec0 } if((readval & LAN8742_BSR_LINK_STATUS) == 0) - 802cdbe: 68fb ldr r3, [r7, #12] - 802cdc0: f003 0304 and.w r3, r3, #4 - 802cdc4: 2b00 cmp r3, #0 - 802cdc6: d101 bne.n 802cdcc + 802cdfe: 68fb ldr r3, [r7, #12] + 802ce00: f003 0304 and.w r3, r3, #4 + 802ce04: 2b00 cmp r3, #0 + 802ce06: d101 bne.n 802ce0c { /* Return Link Down status */ return LAN8742_STATUS_LINK_DOWN; - 802cdc8: 2301 movs r3, #1 - 802cdca: e059 b.n 802ce80 + 802ce08: 2301 movs r3, #1 + 802ce0a: e059 b.n 802cec0 } /* Check Auto negotiaition */ if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_BCR, &readval) < 0) - 802cdcc: 687b ldr r3, [r7, #4] - 802cdce: 695b ldr r3, [r3, #20] - 802cdd0: 687a ldr r2, [r7, #4] - 802cdd2: 6810 ldr r0, [r2, #0] - 802cdd4: f107 020c add.w r2, r7, #12 - 802cdd8: 2100 movs r1, #0 - 802cdda: 4798 blx r3 - 802cddc: 4603 mov r3, r0 - 802cdde: 2b00 cmp r3, #0 - 802cde0: da02 bge.n 802cde8 + 802ce0c: 687b ldr r3, [r7, #4] + 802ce0e: 695b ldr r3, [r3, #20] + 802ce10: 687a ldr r2, [r7, #4] + 802ce12: 6810 ldr r0, [r2, #0] + 802ce14: f107 020c add.w r2, r7, #12 + 802ce18: 2100 movs r1, #0 + 802ce1a: 4798 blx r3 + 802ce1c: 4603 mov r3, r0 + 802ce1e: 2b00 cmp r3, #0 + 802ce20: da02 bge.n 802ce28 { return LAN8742_STATUS_READ_ERROR; - 802cde2: f06f 0304 mvn.w r3, #4 - 802cde6: e04b b.n 802ce80 + 802ce22: f06f 0304 mvn.w r3, #4 + 802ce26: e04b b.n 802cec0 } if((readval & LAN8742_BCR_AUTONEGO_EN) != LAN8742_BCR_AUTONEGO_EN) - 802cde8: 68fb ldr r3, [r7, #12] - 802cdea: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 802cdee: 2b00 cmp r3, #0 - 802cdf0: d11b bne.n 802ce2a + 802ce28: 68fb ldr r3, [r7, #12] + 802ce2a: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 802ce2e: 2b00 cmp r3, #0 + 802ce30: d11b bne.n 802ce6a { if(((readval & LAN8742_BCR_SPEED_SELECT) == LAN8742_BCR_SPEED_SELECT) && ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE)) - 802cdf2: 68fb ldr r3, [r7, #12] - 802cdf4: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 802cdf8: 2b00 cmp r3, #0 - 802cdfa: d006 beq.n 802ce0a - 802cdfc: 68fb ldr r3, [r7, #12] - 802cdfe: f403 7380 and.w r3, r3, #256 ; 0x100 - 802ce02: 2b00 cmp r3, #0 - 802ce04: d001 beq.n 802ce0a + 802ce32: 68fb ldr r3, [r7, #12] + 802ce34: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 802ce38: 2b00 cmp r3, #0 + 802ce3a: d006 beq.n 802ce4a + 802ce3c: 68fb ldr r3, [r7, #12] + 802ce3e: f403 7380 and.w r3, r3, #256 ; 0x100 + 802ce42: 2b00 cmp r3, #0 + 802ce44: d001 beq.n 802ce4a { return LAN8742_STATUS_100MBITS_FULLDUPLEX; - 802ce06: 2302 movs r3, #2 - 802ce08: e03a b.n 802ce80 + 802ce46: 2302 movs r3, #2 + 802ce48: e03a b.n 802cec0 } else if ((readval & LAN8742_BCR_SPEED_SELECT) == LAN8742_BCR_SPEED_SELECT) - 802ce0a: 68fb ldr r3, [r7, #12] - 802ce0c: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 802ce10: 2b00 cmp r3, #0 - 802ce12: d001 beq.n 802ce18 + 802ce4a: 68fb ldr r3, [r7, #12] + 802ce4c: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 802ce50: 2b00 cmp r3, #0 + 802ce52: d001 beq.n 802ce58 { return LAN8742_STATUS_100MBITS_HALFDUPLEX; - 802ce14: 2303 movs r3, #3 - 802ce16: e033 b.n 802ce80 + 802ce54: 2303 movs r3, #3 + 802ce56: e033 b.n 802cec0 } else if ((readval & LAN8742_BCR_DUPLEX_MODE) == LAN8742_BCR_DUPLEX_MODE) - 802ce18: 68fb ldr r3, [r7, #12] - 802ce1a: f403 7380 and.w r3, r3, #256 ; 0x100 - 802ce1e: 2b00 cmp r3, #0 - 802ce20: d001 beq.n 802ce26 + 802ce58: 68fb ldr r3, [r7, #12] + 802ce5a: f403 7380 and.w r3, r3, #256 ; 0x100 + 802ce5e: 2b00 cmp r3, #0 + 802ce60: d001 beq.n 802ce66 { return LAN8742_STATUS_10MBITS_FULLDUPLEX; - 802ce22: 2304 movs r3, #4 - 802ce24: e02c b.n 802ce80 + 802ce62: 2304 movs r3, #4 + 802ce64: e02c b.n 802cec0 } else { return LAN8742_STATUS_10MBITS_HALFDUPLEX; - 802ce26: 2305 movs r3, #5 - 802ce28: e02a b.n 802ce80 + 802ce66: 2305 movs r3, #5 + 802ce68: e02a b.n 802cec0 } } else /* Auto Nego enabled */ { if(pObj->IO.ReadReg(pObj->DevAddr, LAN8742_PHYSCSR, &readval) < 0) - 802ce2a: 687b ldr r3, [r7, #4] - 802ce2c: 695b ldr r3, [r3, #20] - 802ce2e: 687a ldr r2, [r7, #4] - 802ce30: 6810 ldr r0, [r2, #0] - 802ce32: f107 020c add.w r2, r7, #12 - 802ce36: 211f movs r1, #31 - 802ce38: 4798 blx r3 - 802ce3a: 4603 mov r3, r0 - 802ce3c: 2b00 cmp r3, #0 - 802ce3e: da02 bge.n 802ce46 + 802ce6a: 687b ldr r3, [r7, #4] + 802ce6c: 695b ldr r3, [r3, #20] + 802ce6e: 687a ldr r2, [r7, #4] + 802ce70: 6810 ldr r0, [r2, #0] + 802ce72: f107 020c add.w r2, r7, #12 + 802ce76: 211f movs r1, #31 + 802ce78: 4798 blx r3 + 802ce7a: 4603 mov r3, r0 + 802ce7c: 2b00 cmp r3, #0 + 802ce7e: da02 bge.n 802ce86 { return LAN8742_STATUS_READ_ERROR; - 802ce40: f06f 0304 mvn.w r3, #4 - 802ce44: e01c b.n 802ce80 + 802ce80: f06f 0304 mvn.w r3, #4 + 802ce84: e01c b.n 802cec0 } /* Check if auto nego not done */ if((readval & LAN8742_PHYSCSR_AUTONEGO_DONE) == 0) - 802ce46: 68fb ldr r3, [r7, #12] - 802ce48: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 802ce4c: 2b00 cmp r3, #0 - 802ce4e: d101 bne.n 802ce54 + 802ce86: 68fb ldr r3, [r7, #12] + 802ce88: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 802ce8c: 2b00 cmp r3, #0 + 802ce8e: d101 bne.n 802ce94 { return LAN8742_STATUS_AUTONEGO_NOTDONE; - 802ce50: 2306 movs r3, #6 - 802ce52: e015 b.n 802ce80 + 802ce90: 2306 movs r3, #6 + 802ce92: e015 b.n 802cec0 } if((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_100BTX_FD) - 802ce54: 68fb ldr r3, [r7, #12] - 802ce56: f003 031c and.w r3, r3, #28 - 802ce5a: 2b18 cmp r3, #24 - 802ce5c: d101 bne.n 802ce62 + 802ce94: 68fb ldr r3, [r7, #12] + 802ce96: f003 031c and.w r3, r3, #28 + 802ce9a: 2b18 cmp r3, #24 + 802ce9c: d101 bne.n 802cea2 { return LAN8742_STATUS_100MBITS_FULLDUPLEX; - 802ce5e: 2302 movs r3, #2 - 802ce60: e00e b.n 802ce80 + 802ce9e: 2302 movs r3, #2 + 802cea0: e00e b.n 802cec0 } else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_100BTX_HD) - 802ce62: 68fb ldr r3, [r7, #12] - 802ce64: f003 031c and.w r3, r3, #28 - 802ce68: 2b08 cmp r3, #8 - 802ce6a: d101 bne.n 802ce70 + 802cea2: 68fb ldr r3, [r7, #12] + 802cea4: f003 031c and.w r3, r3, #28 + 802cea8: 2b08 cmp r3, #8 + 802ceaa: d101 bne.n 802ceb0 { return LAN8742_STATUS_100MBITS_HALFDUPLEX; - 802ce6c: 2303 movs r3, #3 - 802ce6e: e007 b.n 802ce80 + 802ceac: 2303 movs r3, #3 + 802ceae: e007 b.n 802cec0 } else if ((readval & LAN8742_PHYSCSR_HCDSPEEDMASK) == LAN8742_PHYSCSR_10BT_FD) - 802ce70: 68fb ldr r3, [r7, #12] - 802ce72: f003 031c and.w r3, r3, #28 - 802ce76: 2b14 cmp r3, #20 - 802ce78: d101 bne.n 802ce7e + 802ceb0: 68fb ldr r3, [r7, #12] + 802ceb2: f003 031c and.w r3, r3, #28 + 802ceb6: 2b14 cmp r3, #20 + 802ceb8: d101 bne.n 802cebe { return LAN8742_STATUS_10MBITS_FULLDUPLEX; - 802ce7a: 2304 movs r3, #4 - 802ce7c: e000 b.n 802ce80 + 802ceba: 2304 movs r3, #4 + 802cebc: e000 b.n 802cec0 } else { return LAN8742_STATUS_10MBITS_HALFDUPLEX; - 802ce7e: 2305 movs r3, #5 + 802cebe: 2305 movs r3, #5 } } } - 802ce80: 4618 mov r0, r3 - 802ce82: 3710 adds r7, #16 - 802ce84: 46bd mov sp, r7 - 802ce86: bd80 pop {r7, pc} + 802cec0: 4618 mov r0, r3 + 802cec2: 3710 adds r7, #16 + 802cec4: 46bd mov sp, r7 + 802cec6: bd80 pop {r7, pc} -0802ce88 : +0802cec8 : * need to ensure that the SysTick time base is always set to 1 millisecond * to have correct HAL operation. * @retval HAL status */ HAL_StatusTypeDef HAL_Init(void) { - 802ce88: b580 push {r7, lr} - 802ce8a: b082 sub sp, #8 - 802ce8c: af00 add r7, sp, #0 + 802cec8: b580 push {r7, lr} + 802ceca: b082 sub sp, #8 + 802cecc: af00 add r7, sp, #0 __HAL_ART_CONFIG_BASE_ADDRESS(0x08100000UL); /* Configure the Cortex-M4 ART Base address to the Flash Bank 2 : */ __HAL_ART_ENABLE(); /* Enable the Cortex-M4 ART */ #endif /* DUAL_CORE && CORE_CM4 */ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - 802ce8e: 2003 movs r0, #3 - 802ce90: f001 f928 bl 802e0e4 + 802cece: 2003 movs r0, #3 + 802ced0: f001 f928 bl 802e124 /* Update the SystemCoreClock global variable */ #if defined(RCC_D1CFGR_D1CPRE) common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos]) & 0x1FU); - 802ce94: f009 f852 bl 8035f3c - 802ce98: 4602 mov r2, r0 - 802ce9a: 4b15 ldr r3, [pc, #84] ; (802cef0 ) - 802ce9c: 699b ldr r3, [r3, #24] - 802ce9e: 0a1b lsrs r3, r3, #8 - 802cea0: f003 030f and.w r3, r3, #15 - 802cea4: 4913 ldr r1, [pc, #76] ; (802cef4 ) - 802cea6: 5ccb ldrb r3, [r1, r3] - 802cea8: f003 031f and.w r3, r3, #31 - 802ceac: fa22 f303 lsr.w r3, r2, r3 - 802ceb0: 607b str r3, [r7, #4] + 802ced4: f009 f852 bl 8035f7c + 802ced8: 4602 mov r2, r0 + 802ceda: 4b15 ldr r3, [pc, #84] ; (802cf30 ) + 802cedc: 699b ldr r3, [r3, #24] + 802cede: 0a1b lsrs r3, r3, #8 + 802cee0: f003 030f and.w r3, r3, #15 + 802cee4: 4913 ldr r1, [pc, #76] ; (802cf34 ) + 802cee6: 5ccb ldrb r3, [r1, r3] + 802cee8: f003 031f and.w r3, r3, #31 + 802ceec: fa22 f303 lsr.w r3, r2, r3 + 802cef0: 607b str r3, [r7, #4] common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos]) & 0x1FU); #endif /* Update the SystemD2Clock global variable */ #if defined(RCC_D1CFGR_HPRE) SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU)); - 802ceb2: 4b0f ldr r3, [pc, #60] ; (802cef0 ) - 802ceb4: 699b ldr r3, [r3, #24] - 802ceb6: f003 030f and.w r3, r3, #15 - 802ceba: 4a0e ldr r2, [pc, #56] ; (802cef4 ) - 802cebc: 5cd3 ldrb r3, [r2, r3] - 802cebe: f003 031f and.w r3, r3, #31 - 802cec2: 687a ldr r2, [r7, #4] - 802cec4: fa22 f303 lsr.w r3, r2, r3 - 802cec8: 4a0b ldr r2, [pc, #44] ; (802cef8 ) - 802ceca: 6013 str r3, [r2, #0] + 802cef2: 4b0f ldr r3, [pc, #60] ; (802cf30 ) + 802cef4: 699b ldr r3, [r3, #24] + 802cef6: f003 030f and.w r3, r3, #15 + 802cefa: 4a0e ldr r2, [pc, #56] ; (802cf34 ) + 802cefc: 5cd3 ldrb r3, [r2, r3] + 802cefe: f003 031f and.w r3, r3, #31 + 802cf02: 687a ldr r2, [r7, #4] + 802cf04: fa22 f303 lsr.w r3, r2, r3 + 802cf08: 4a0b ldr r2, [pc, #44] ; (802cf38 ) + 802cf0a: 6013 str r3, [r2, #0] #endif #if defined(DUAL_CORE) && defined(CORE_CM4) SystemCoreClock = SystemD2Clock; #else SystemCoreClock = common_system_clock; - 802cecc: 4a0b ldr r2, [pc, #44] ; (802cefc ) - 802cece: 687b ldr r3, [r7, #4] - 802ced0: 6013 str r3, [r2, #0] + 802cf0c: 4a0b ldr r2, [pc, #44] ; (802cf3c ) + 802cf0e: 687b ldr r3, [r7, #4] + 802cf10: 6013 str r3, [r2, #0] #endif /* DUAL_CORE && CORE_CM4 */ /* Use systick as time base source and configure 1ms tick (default clock after Reset is HSI) */ if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK) - 802ced2: 200f movs r0, #15 - 802ced4: f000 f814 bl 802cf00 - 802ced8: 4603 mov r3, r0 - 802ceda: 2b00 cmp r3, #0 - 802cedc: d001 beq.n 802cee2 + 802cf12: 200f movs r0, #15 + 802cf14: f000 f814 bl 802cf40 + 802cf18: 4603 mov r3, r0 + 802cf1a: 2b00 cmp r3, #0 + 802cf1c: d001 beq.n 802cf22 { return HAL_ERROR; - 802cede: 2301 movs r3, #1 - 802cee0: e002 b.n 802cee8 + 802cf1e: 2301 movs r3, #1 + 802cf20: e002 b.n 802cf28 } /* Init the low level hardware */ HAL_MspInit(); - 802cee2: f7fe fa01 bl 802b2e8 + 802cf22: f7fe fa01 bl 802b328 /* Return function status */ return HAL_OK; - 802cee6: 2300 movs r3, #0 -} - 802cee8: 4618 mov r0, r3 - 802ceea: 3708 adds r7, #8 - 802ceec: 46bd mov sp, r7 - 802ceee: bd80 pop {r7, pc} - 802cef0: 58024400 .word 0x58024400 - 802cef4: 0804d35c .word 0x0804d35c - 802cef8: 2400011c .word 0x2400011c - 802cefc: 24000118 .word 0x24000118 - -0802cf00 : + 802cf26: 2300 movs r3, #0 +} + 802cf28: 4618 mov r0, r3 + 802cf2a: 3708 adds r7, #8 + 802cf2c: 46bd mov sp, r7 + 802cf2e: bd80 pop {r7, pc} + 802cf30: 58024400 .word 0x58024400 + 802cf34: 0804d39c .word 0x0804d39c + 802cf38: 2400011c .word 0x2400011c + 802cf3c: 24000118 .word 0x24000118 + +0802cf40 : * implementation in user file. * @param TickPriority: Tick interrupt priority. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) { - 802cf00: b580 push {r7, lr} - 802cf02: b082 sub sp, #8 - 802cf04: af00 add r7, sp, #0 - 802cf06: 6078 str r0, [r7, #4] + 802cf40: b580 push {r7, lr} + 802cf42: b082 sub sp, #8 + 802cf44: af00 add r7, sp, #0 + 802cf46: 6078 str r0, [r7, #4] /* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that don't take the value zero)*/ if((uint32_t)uwTickFreq == 0UL) - 802cf08: 4b15 ldr r3, [pc, #84] ; (802cf60 ) - 802cf0a: 781b ldrb r3, [r3, #0] - 802cf0c: 2b00 cmp r3, #0 - 802cf0e: d101 bne.n 802cf14 + 802cf48: 4b15 ldr r3, [pc, #84] ; (802cfa0 ) + 802cf4a: 781b ldrb r3, [r3, #0] + 802cf4c: 2b00 cmp r3, #0 + 802cf4e: d101 bne.n 802cf54 { return HAL_ERROR; - 802cf10: 2301 movs r3, #1 - 802cf12: e021 b.n 802cf58 + 802cf50: 2301 movs r3, #1 + 802cf52: e021 b.n 802cf98 } /* Configure the SysTick to have interrupt in 1ms time basis*/ if (HAL_SYSTICK_Config(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) > 0U) - 802cf14: 4b13 ldr r3, [pc, #76] ; (802cf64 ) - 802cf16: 681a ldr r2, [r3, #0] - 802cf18: 4b11 ldr r3, [pc, #68] ; (802cf60 ) - 802cf1a: 781b ldrb r3, [r3, #0] - 802cf1c: 4619 mov r1, r3 - 802cf1e: f44f 737a mov.w r3, #1000 ; 0x3e8 - 802cf22: fbb3 f3f1 udiv r3, r3, r1 - 802cf26: fbb2 f3f3 udiv r3, r2, r3 - 802cf2a: 4618 mov r0, r3 - 802cf2c: f001 f90d bl 802e14a - 802cf30: 4603 mov r3, r0 - 802cf32: 2b00 cmp r3, #0 - 802cf34: d001 beq.n 802cf3a + 802cf54: 4b13 ldr r3, [pc, #76] ; (802cfa4 ) + 802cf56: 681a ldr r2, [r3, #0] + 802cf58: 4b11 ldr r3, [pc, #68] ; (802cfa0 ) + 802cf5a: 781b ldrb r3, [r3, #0] + 802cf5c: 4619 mov r1, r3 + 802cf5e: f44f 737a mov.w r3, #1000 ; 0x3e8 + 802cf62: fbb3 f3f1 udiv r3, r3, r1 + 802cf66: fbb2 f3f3 udiv r3, r2, r3 + 802cf6a: 4618 mov r0, r3 + 802cf6c: f001 f90d bl 802e18a + 802cf70: 4603 mov r3, r0 + 802cf72: 2b00 cmp r3, #0 + 802cf74: d001 beq.n 802cf7a { return HAL_ERROR; - 802cf36: 2301 movs r3, #1 - 802cf38: e00e b.n 802cf58 + 802cf76: 2301 movs r3, #1 + 802cf78: e00e b.n 802cf98 } /* Configure the SysTick IRQ priority */ if (TickPriority < (1UL << __NVIC_PRIO_BITS)) - 802cf3a: 687b ldr r3, [r7, #4] - 802cf3c: 2b0f cmp r3, #15 - 802cf3e: d80a bhi.n 802cf56 + 802cf7a: 687b ldr r3, [r7, #4] + 802cf7c: 2b0f cmp r3, #15 + 802cf7e: d80a bhi.n 802cf96 { HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U); - 802cf40: 2200 movs r2, #0 - 802cf42: 6879 ldr r1, [r7, #4] - 802cf44: f04f 30ff mov.w r0, #4294967295 - 802cf48: f001 f8d7 bl 802e0fa + 802cf80: 2200 movs r2, #0 + 802cf82: 6879 ldr r1, [r7, #4] + 802cf84: f04f 30ff mov.w r0, #4294967295 + 802cf88: f001 f8d7 bl 802e13a uwTickPrio = TickPriority; - 802cf4c: 4a06 ldr r2, [pc, #24] ; (802cf68 ) - 802cf4e: 687b ldr r3, [r7, #4] - 802cf50: 6013 str r3, [r2, #0] + 802cf8c: 4a06 ldr r2, [pc, #24] ; (802cfa8 ) + 802cf8e: 687b ldr r3, [r7, #4] + 802cf90: 6013 str r3, [r2, #0] { return HAL_ERROR; } /* Return function status */ return HAL_OK; - 802cf52: 2300 movs r3, #0 - 802cf54: e000 b.n 802cf58 + 802cf92: 2300 movs r3, #0 + 802cf94: e000 b.n 802cf98 return HAL_ERROR; - 802cf56: 2301 movs r3, #1 + 802cf96: 2301 movs r3, #1 } - 802cf58: 4618 mov r0, r3 - 802cf5a: 3708 adds r7, #8 - 802cf5c: 46bd mov sp, r7 - 802cf5e: bd80 pop {r7, pc} - 802cf60: 24000124 .word 0x24000124 - 802cf64: 24000118 .word 0x24000118 - 802cf68: 24000120 .word 0x24000120 + 802cf98: 4618 mov r0, r3 + 802cf9a: 3708 adds r7, #8 + 802cf9c: 46bd mov sp, r7 + 802cf9e: bd80 pop {r7, pc} + 802cfa0: 24000124 .word 0x24000124 + 802cfa4: 24000118 .word 0x24000118 + 802cfa8: 24000120 .word 0x24000120 -0802cf6c : +0802cfac : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval None */ __weak void HAL_IncTick(void) { - 802cf6c: b480 push {r7} - 802cf6e: af00 add r7, sp, #0 + 802cfac: b480 push {r7} + 802cfae: af00 add r7, sp, #0 uwTick += (uint32_t)uwTickFreq; - 802cf70: 4b06 ldr r3, [pc, #24] ; (802cf8c ) - 802cf72: 781b ldrb r3, [r3, #0] - 802cf74: 461a mov r2, r3 - 802cf76: 4b06 ldr r3, [pc, #24] ; (802cf90 ) - 802cf78: 681b ldr r3, [r3, #0] - 802cf7a: 4413 add r3, r2 - 802cf7c: 4a04 ldr r2, [pc, #16] ; (802cf90 ) - 802cf7e: 6013 str r3, [r2, #0] -} - 802cf80: bf00 nop - 802cf82: 46bd mov sp, r7 - 802cf84: f85d 7b04 ldr.w r7, [sp], #4 - 802cf88: 4770 bx lr - 802cf8a: bf00 nop - 802cf8c: 24000124 .word 0x24000124 - 802cf90: 2400b9e4 .word 0x2400b9e4 - -0802cf94 : + 802cfb0: 4b06 ldr r3, [pc, #24] ; (802cfcc ) + 802cfb2: 781b ldrb r3, [r3, #0] + 802cfb4: 461a mov r2, r3 + 802cfb6: 4b06 ldr r3, [pc, #24] ; (802cfd0 ) + 802cfb8: 681b ldr r3, [r3, #0] + 802cfba: 4413 add r3, r2 + 802cfbc: 4a04 ldr r2, [pc, #16] ; (802cfd0 ) + 802cfbe: 6013 str r3, [r2, #0] +} + 802cfc0: bf00 nop + 802cfc2: 46bd mov sp, r7 + 802cfc4: f85d 7b04 ldr.w r7, [sp], #4 + 802cfc8: 4770 bx lr + 802cfca: bf00 nop + 802cfcc: 24000124 .word 0x24000124 + 802cfd0: 2400b9e4 .word 0x2400b9e4 + +0802cfd4 : * @note This function is declared as __weak to be overwritten in case of other * implementations in user file. * @retval tick value */ __weak uint32_t HAL_GetTick(void) { - 802cf94: b480 push {r7} - 802cf96: af00 add r7, sp, #0 + 802cfd4: b480 push {r7} + 802cfd6: af00 add r7, sp, #0 return uwTick; - 802cf98: 4b03 ldr r3, [pc, #12] ; (802cfa8 ) - 802cf9a: 681b ldr r3, [r3, #0] + 802cfd8: 4b03 ldr r3, [pc, #12] ; (802cfe8 ) + 802cfda: 681b ldr r3, [r3, #0] } - 802cf9c: 4618 mov r0, r3 - 802cf9e: 46bd mov sp, r7 - 802cfa0: f85d 7b04 ldr.w r7, [sp], #4 - 802cfa4: 4770 bx lr - 802cfa6: bf00 nop - 802cfa8: 2400b9e4 .word 0x2400b9e4 + 802cfdc: 4618 mov r0, r3 + 802cfde: 46bd mov sp, r7 + 802cfe0: f85d 7b04 ldr.w r7, [sp], #4 + 802cfe4: 4770 bx lr + 802cfe6: bf00 nop + 802cfe8: 2400b9e4 .word 0x2400b9e4 -0802cfac : +0802cfec : * implementations in user file. * @param Delay specifies the delay time length, in milliseconds. * @retval None */ __weak void HAL_Delay(uint32_t Delay) { - 802cfac: b580 push {r7, lr} - 802cfae: b084 sub sp, #16 - 802cfb0: af00 add r7, sp, #0 - 802cfb2: 6078 str r0, [r7, #4] + 802cfec: b580 push {r7, lr} + 802cfee: b084 sub sp, #16 + 802cff0: af00 add r7, sp, #0 + 802cff2: 6078 str r0, [r7, #4] uint32_t tickstart = HAL_GetTick(); - 802cfb4: f7ff ffee bl 802cf94 - 802cfb8: 60b8 str r0, [r7, #8] + 802cff4: f7ff ffee bl 802cfd4 + 802cff8: 60b8 str r0, [r7, #8] uint32_t wait = Delay; - 802cfba: 687b ldr r3, [r7, #4] - 802cfbc: 60fb str r3, [r7, #12] + 802cffa: 687b ldr r3, [r7, #4] + 802cffc: 60fb str r3, [r7, #12] /* Add a freq to guarantee minimum wait */ if (wait < HAL_MAX_DELAY) - 802cfbe: 68fb ldr r3, [r7, #12] - 802cfc0: f1b3 3fff cmp.w r3, #4294967295 - 802cfc4: d005 beq.n 802cfd2 + 802cffe: 68fb ldr r3, [r7, #12] + 802d000: f1b3 3fff cmp.w r3, #4294967295 + 802d004: d005 beq.n 802d012 { wait += (uint32_t)(uwTickFreq); - 802cfc6: 4b0a ldr r3, [pc, #40] ; (802cff0 ) - 802cfc8: 781b ldrb r3, [r3, #0] - 802cfca: 461a mov r2, r3 - 802cfcc: 68fb ldr r3, [r7, #12] - 802cfce: 4413 add r3, r2 - 802cfd0: 60fb str r3, [r7, #12] + 802d006: 4b0a ldr r3, [pc, #40] ; (802d030 ) + 802d008: 781b ldrb r3, [r3, #0] + 802d00a: 461a mov r2, r3 + 802d00c: 68fb ldr r3, [r7, #12] + 802d00e: 4413 add r3, r2 + 802d010: 60fb str r3, [r7, #12] } while ((HAL_GetTick() - tickstart) < wait) - 802cfd2: bf00 nop - 802cfd4: f7ff ffde bl 802cf94 - 802cfd8: 4602 mov r2, r0 - 802cfda: 68bb ldr r3, [r7, #8] - 802cfdc: 1ad3 subs r3, r2, r3 - 802cfde: 68fa ldr r2, [r7, #12] - 802cfe0: 429a cmp r2, r3 - 802cfe2: d8f7 bhi.n 802cfd4 + 802d012: bf00 nop + 802d014: f7ff ffde bl 802cfd4 + 802d018: 4602 mov r2, r0 + 802d01a: 68bb ldr r3, [r7, #8] + 802d01c: 1ad3 subs r3, r2, r3 + 802d01e: 68fa ldr r2, [r7, #12] + 802d020: 429a cmp r2, r3 + 802d022: d8f7 bhi.n 802d014 { } } - 802cfe4: bf00 nop - 802cfe6: bf00 nop - 802cfe8: 3710 adds r7, #16 - 802cfea: 46bd mov sp, r7 - 802cfec: bd80 pop {r7, pc} - 802cfee: bf00 nop - 802cff0: 24000124 .word 0x24000124 - -0802cff4 : + 802d024: bf00 nop + 802d026: bf00 nop + 802d028: 3710 adds r7, #16 + 802d02a: 46bd mov sp, r7 + 802d02c: bd80 pop {r7, pc} + 802d02e: bf00 nop + 802d030: 24000124 .word 0x24000124 + +0802d034 : /** * @brief Returns the device revision identifier. * @retval Device revision identifier */ uint32_t HAL_GetREVID(void) { - 802cff4: b480 push {r7} - 802cff6: af00 add r7, sp, #0 + 802d034: b480 push {r7} + 802d036: af00 add r7, sp, #0 return((DBGMCU->IDCODE) >> 16); - 802cff8: 4b03 ldr r3, [pc, #12] ; (802d008 ) - 802cffa: 681b ldr r3, [r3, #0] - 802cffc: 0c1b lsrs r3, r3, #16 + 802d038: 4b03 ldr r3, [pc, #12] ; (802d048 ) + 802d03a: 681b ldr r3, [r3, #0] + 802d03c: 0c1b lsrs r3, r3, #16 } - 802cffe: 4618 mov r0, r3 - 802d000: 46bd mov sp, r7 - 802d002: f85d 7b04 ldr.w r7, [sp], #4 - 802d006: 4770 bx lr - 802d008: 5c001000 .word 0x5c001000 + 802d03e: 4618 mov r0, r3 + 802d040: 46bd mov sp, r7 + 802d042: f85d 7b04 ldr.w r7, [sp], #4 + 802d046: 4770 bx lr + 802d048: 5c001000 .word 0x5c001000 -0802d00c : +0802d04c : * @arg SYSCFG_ETH_MII : Select the Media Independent Interface * @arg SYSCFG_ETH_RMII: Select the Reduced Media Independent Interface * @retval None */ void HAL_SYSCFG_ETHInterfaceSelect(uint32_t SYSCFG_ETHInterface) { - 802d00c: b480 push {r7} - 802d00e: b083 sub sp, #12 - 802d010: af00 add r7, sp, #0 - 802d012: 6078 str r0, [r7, #4] + 802d04c: b480 push {r7} + 802d04e: b083 sub sp, #12 + 802d050: af00 add r7, sp, #0 + 802d052: 6078 str r0, [r7, #4] /* Check the parameter */ assert_param(IS_SYSCFG_ETHERNET_CONFIG(SYSCFG_ETHInterface)); MODIFY_REG(SYSCFG->PMCR, SYSCFG_PMCR_EPIS_SEL, (uint32_t)(SYSCFG_ETHInterface)); - 802d014: 4b06 ldr r3, [pc, #24] ; (802d030 ) - 802d016: 685b ldr r3, [r3, #4] - 802d018: f423 0260 bic.w r2, r3, #14680064 ; 0xe00000 - 802d01c: 4904 ldr r1, [pc, #16] ; (802d030 ) - 802d01e: 687b ldr r3, [r7, #4] - 802d020: 4313 orrs r3, r2 - 802d022: 604b str r3, [r1, #4] -} - 802d024: bf00 nop - 802d026: 370c adds r7, #12 - 802d028: 46bd mov sp, r7 - 802d02a: f85d 7b04 ldr.w r7, [sp], #4 - 802d02e: 4770 bx lr - 802d030: 58000400 .word 0x58000400 - -0802d034 : + 802d054: 4b06 ldr r3, [pc, #24] ; (802d070 ) + 802d056: 685b ldr r3, [r3, #4] + 802d058: f423 0260 bic.w r2, r3, #14680064 ; 0xe00000 + 802d05c: 4904 ldr r1, [pc, #16] ; (802d070 ) + 802d05e: 687b ldr r3, [r7, #4] + 802d060: 4313 orrs r3, r2 + 802d062: 604b str r3, [r1, #4] +} + 802d064: bf00 nop + 802d066: 370c adds r7, #12 + 802d068: 46bd mov sp, r7 + 802d06a: f85d 7b04 ldr.w r7, [sp], #4 + 802d06e: 4770 bx lr + 802d070: 58000400 .word 0x58000400 + +0802d074 : * @arg @ref LL_ADC_CLOCK_ASYNC_DIV128 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV256 * @retval None */ __STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock) { - 802d034: b480 push {r7} - 802d036: b083 sub sp, #12 - 802d038: af00 add r7, sp, #0 - 802d03a: 6078 str r0, [r7, #4] - 802d03c: 6039 str r1, [r7, #0] + 802d074: b480 push {r7} + 802d076: b083 sub sp, #12 + 802d078: af00 add r7, sp, #0 + 802d07a: 6078 str r0, [r7, #4] + 802d07c: 6039 str r1, [r7, #0] MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_CKMODE | ADC_CCR_PRESC, CommonClock); - 802d03e: 687b ldr r3, [r7, #4] - 802d040: 689b ldr r3, [r3, #8] - 802d042: f423 127c bic.w r2, r3, #4128768 ; 0x3f0000 - 802d046: 683b ldr r3, [r7, #0] - 802d048: 431a orrs r2, r3 - 802d04a: 687b ldr r3, [r7, #4] - 802d04c: 609a str r2, [r3, #8] -} - 802d04e: bf00 nop - 802d050: 370c adds r7, #12 - 802d052: 46bd mov sp, r7 - 802d054: f85d 7b04 ldr.w r7, [sp], #4 - 802d058: 4770 bx lr - -0802d05a : + 802d07e: 687b ldr r3, [r7, #4] + 802d080: 689b ldr r3, [r3, #8] + 802d082: f423 127c bic.w r2, r3, #4128768 ; 0x3f0000 + 802d086: 683b ldr r3, [r7, #0] + 802d088: 431a orrs r2, r3 + 802d08a: 687b ldr r3, [r7, #4] + 802d08c: 609a str r2, [r3, #8] +} + 802d08e: bf00 nop + 802d090: 370c adds r7, #12 + 802d092: 46bd mov sp, r7 + 802d094: f85d 7b04 ldr.w r7, [sp], #4 + 802d098: 4770 bx lr + +0802d09a : * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR * @arg @ref LL_ADC_PATH_INTERNAL_VBAT * @retval None */ __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal) { - 802d05a: b480 push {r7} - 802d05c: b083 sub sp, #12 - 802d05e: af00 add r7, sp, #0 - 802d060: 6078 str r0, [r7, #4] - 802d062: 6039 str r1, [r7, #0] + 802d09a: b480 push {r7} + 802d09c: b083 sub sp, #12 + 802d09e: af00 add r7, sp, #0 + 802d0a0: 6078 str r0, [r7, #4] + 802d0a2: 6039 str r1, [r7, #0] MODIFY_REG(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN, PathInternal); - 802d064: 687b ldr r3, [r7, #4] - 802d066: 689b ldr r3, [r3, #8] - 802d068: f023 72e0 bic.w r2, r3, #29360128 ; 0x1c00000 - 802d06c: 683b ldr r3, [r7, #0] - 802d06e: 431a orrs r2, r3 - 802d070: 687b ldr r3, [r7, #4] - 802d072: 609a str r2, [r3, #8] -} - 802d074: bf00 nop - 802d076: 370c adds r7, #12 - 802d078: 46bd mov sp, r7 - 802d07a: f85d 7b04 ldr.w r7, [sp], #4 - 802d07e: 4770 bx lr - -0802d080 : + 802d0a4: 687b ldr r3, [r7, #4] + 802d0a6: 689b ldr r3, [r3, #8] + 802d0a8: f023 72e0 bic.w r2, r3, #29360128 ; 0x1c00000 + 802d0ac: 683b ldr r3, [r7, #0] + 802d0ae: 431a orrs r2, r3 + 802d0b0: 687b ldr r3, [r7, #4] + 802d0b2: 609a str r2, [r3, #8] +} + 802d0b4: bf00 nop + 802d0b6: 370c adds r7, #12 + 802d0b8: 46bd mov sp, r7 + 802d0ba: f85d 7b04 ldr.w r7, [sp], #4 + 802d0be: 4770 bx lr + +0802d0c0 : * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR * @arg @ref LL_ADC_PATH_INTERNAL_VBAT */ __STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON) { - 802d080: b480 push {r7} - 802d082: b083 sub sp, #12 - 802d084: af00 add r7, sp, #0 - 802d086: 6078 str r0, [r7, #4] + 802d0c0: b480 push {r7} + 802d0c2: b083 sub sp, #12 + 802d0c4: af00 add r7, sp, #0 + 802d0c6: 6078 str r0, [r7, #4] return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); - 802d088: 687b ldr r3, [r7, #4] - 802d08a: 689b ldr r3, [r3, #8] - 802d08c: f003 73e0 and.w r3, r3, #29360128 ; 0x1c00000 + 802d0c8: 687b ldr r3, [r7, #4] + 802d0ca: 689b ldr r3, [r3, #8] + 802d0cc: f003 73e0 and.w r3, r3, #29360128 ; 0x1c00000 } - 802d090: 4618 mov r0, r3 - 802d092: 370c adds r7, #12 - 802d094: 46bd mov sp, r7 - 802d096: f85d 7b04 ldr.w r7, [sp], #4 - 802d09a: 4770 bx lr + 802d0d0: 4618 mov r0, r3 + 802d0d2: 370c adds r7, #12 + 802d0d4: 46bd mov sp, r7 + 802d0d6: f85d 7b04 ldr.w r7, [sp], #4 + 802d0da: 4770 bx lr -0802d09c : +0802d0dc : * Other channels are slow channels (conversion rate: refer to reference manual). * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0x1FFFFFF * @retval None */ __STATIC_INLINE void LL_ADC_SetOffset(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t Channel, uint32_t OffsetLevel) { - 802d09c: b480 push {r7} - 802d09e: b087 sub sp, #28 - 802d0a0: af00 add r7, sp, #0 - 802d0a2: 60f8 str r0, [r7, #12] - 802d0a4: 60b9 str r1, [r7, #8] - 802d0a6: 607a str r2, [r7, #4] - 802d0a8: 603b str r3, [r7, #0] + 802d0dc: b480 push {r7} + 802d0de: b087 sub sp, #28 + 802d0e0: af00 add r7, sp, #0 + 802d0e2: 60f8 str r0, [r7, #12] + 802d0e4: 60b9 str r1, [r7, #8] + 802d0e6: 607a str r2, [r7, #4] + 802d0e8: 603b str r3, [r7, #0] __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety); - 802d0aa: 68fb ldr r3, [r7, #12] - 802d0ac: 3360 adds r3, #96 ; 0x60 - 802d0ae: 461a mov r2, r3 - 802d0b0: 68bb ldr r3, [r7, #8] - 802d0b2: 009b lsls r3, r3, #2 - 802d0b4: 4413 add r3, r2 - 802d0b6: 617b str r3, [r7, #20] + 802d0ea: 68fb ldr r3, [r7, #12] + 802d0ec: 3360 adds r3, #96 ; 0x60 + 802d0ee: 461a mov r2, r3 + 802d0f0: 68bb ldr r3, [r7, #8] + 802d0f2: 009b lsls r3, r3, #2 + 802d0f4: 4413 add r3, r2 + 802d0f6: 617b str r3, [r7, #20] ADC3_OFR1_OFFSET1_EN | (Channel & ADC_CHANNEL_ID_NUMBER_MASK) | OffsetLevel); } else #endif /* ADC_VER_V5_V90 */ { MODIFY_REG(*preg, - 802d0b8: 697b ldr r3, [r7, #20] - 802d0ba: 681b ldr r3, [r3, #0] - 802d0bc: f003 4200 and.w r2, r3, #2147483648 ; 0x80000000 - 802d0c0: 687b ldr r3, [r7, #4] - 802d0c2: f003 41f8 and.w r1, r3, #2080374784 ; 0x7c000000 - 802d0c6: 683b ldr r3, [r7, #0] - 802d0c8: 430b orrs r3, r1 - 802d0ca: 431a orrs r2, r3 - 802d0cc: 697b ldr r3, [r7, #20] - 802d0ce: 601a str r2, [r3, #0] + 802d0f8: 697b ldr r3, [r7, #20] + 802d0fa: 681b ldr r3, [r3, #0] + 802d0fc: f003 4200 and.w r2, r3, #2147483648 ; 0x80000000 + 802d100: 687b ldr r3, [r7, #4] + 802d102: f003 41f8 and.w r1, r3, #2080374784 ; 0x7c000000 + 802d106: 683b ldr r3, [r7, #0] + 802d108: 430b orrs r3, r1 + 802d10a: 431a orrs r2, r3 + 802d10c: 697b ldr r3, [r7, #20] + 802d10e: 601a str r2, [r3, #0] ADC_OFR1_OFFSET1_CH | ADC_OFR1_OFFSET1, (Channel & ADC_CHANNEL_ID_NUMBER_MASK) | OffsetLevel); } } - 802d0d0: bf00 nop - 802d0d2: 371c adds r7, #28 - 802d0d4: 46bd mov sp, r7 - 802d0d6: f85d 7b04 ldr.w r7, [sp], #4 - 802d0da: 4770 bx lr + 802d110: bf00 nop + 802d112: 371c adds r7, #28 + 802d114: 46bd mov sp, r7 + 802d116: f85d 7b04 ldr.w r7, [sp], #4 + 802d11a: 4770 bx lr -0802d0dc : +0802d11c : * @arg @ref LL_ADC_OFFSET_RSHIFT_ENABLE * @arg @ref LL_ADC_OFFSET_RSHIFT_DISABLE * @retval Returned None */ __STATIC_INLINE void LL_ADC_SetDataRightShift(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t RigthShift) { - 802d0dc: b480 push {r7} - 802d0de: b085 sub sp, #20 - 802d0e0: af00 add r7, sp, #0 - 802d0e2: 60f8 str r0, [r7, #12] - 802d0e4: 60b9 str r1, [r7, #8] - 802d0e6: 607a str r2, [r7, #4] + 802d11c: b480 push {r7} + 802d11e: b085 sub sp, #20 + 802d120: af00 add r7, sp, #0 + 802d122: 60f8 str r0, [r7, #12] + 802d124: 60b9 str r1, [r7, #8] + 802d126: 607a str r2, [r7, #4] MODIFY_REG(ADCx->CFGR2, (ADC_CFGR2_RSHIFT1 | ADC_CFGR2_RSHIFT2 | ADC_CFGR2_RSHIFT3 | ADC_CFGR2_RSHIFT4), RigthShift << (Offsety & 0x1FUL)); - 802d0e8: 68fb ldr r3, [r7, #12] - 802d0ea: 691b ldr r3, [r3, #16] - 802d0ec: f423 42f0 bic.w r2, r3, #30720 ; 0x7800 - 802d0f0: 68bb ldr r3, [r7, #8] - 802d0f2: f003 031f and.w r3, r3, #31 - 802d0f6: 6879 ldr r1, [r7, #4] - 802d0f8: fa01 f303 lsl.w r3, r1, r3 - 802d0fc: 431a orrs r2, r3 - 802d0fe: 68fb ldr r3, [r7, #12] - 802d100: 611a str r2, [r3, #16] -} - 802d102: bf00 nop - 802d104: 3714 adds r7, #20 - 802d106: 46bd mov sp, r7 - 802d108: f85d 7b04 ldr.w r7, [sp], #4 - 802d10c: 4770 bx lr - -0802d10e : + 802d128: 68fb ldr r3, [r7, #12] + 802d12a: 691b ldr r3, [r3, #16] + 802d12c: f423 42f0 bic.w r2, r3, #30720 ; 0x7800 + 802d130: 68bb ldr r3, [r7, #8] + 802d132: f003 031f and.w r3, r3, #31 + 802d136: 6879 ldr r1, [r7, #4] + 802d138: fa01 f303 lsl.w r3, r1, r3 + 802d13c: 431a orrs r2, r3 + 802d13e: 68fb ldr r3, [r7, #12] + 802d140: 611a str r2, [r3, #16] +} + 802d142: bf00 nop + 802d144: 3714 adds r7, #20 + 802d146: 46bd mov sp, r7 + 802d148: f85d 7b04 ldr.w r7, [sp], #4 + 802d14c: 4770 bx lr + +0802d14e : * @arg @ref LL_ADC_OFFSET_SIGNED_SATURATION_ENABLE * @arg @ref LL_ADC_OFFSET_SIGNED_SATURATION_DISABLE * @retval Returned None */ __STATIC_INLINE void LL_ADC_SetOffsetSignedSaturation(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetSignedSaturation) { - 802d10e: b480 push {r7} - 802d110: b087 sub sp, #28 - 802d112: af00 add r7, sp, #0 - 802d114: 60f8 str r0, [r7, #12] - 802d116: 60b9 str r1, [r7, #8] - 802d118: 607a str r2, [r7, #4] + 802d14e: b480 push {r7} + 802d150: b087 sub sp, #28 + 802d152: af00 add r7, sp, #0 + 802d154: 60f8 str r0, [r7, #12] + 802d156: 60b9 str r1, [r7, #8] + 802d158: 607a str r2, [r7, #4] /* Function not available on this instance */ } else #endif /* ADC_VER_V5_V90 */ { __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety); - 802d11a: 68fb ldr r3, [r7, #12] - 802d11c: 3360 adds r3, #96 ; 0x60 - 802d11e: 461a mov r2, r3 - 802d120: 68bb ldr r3, [r7, #8] - 802d122: 009b lsls r3, r3, #2 - 802d124: 4413 add r3, r2 - 802d126: 617b str r3, [r7, #20] + 802d15a: 68fb ldr r3, [r7, #12] + 802d15c: 3360 adds r3, #96 ; 0x60 + 802d15e: 461a mov r2, r3 + 802d160: 68bb ldr r3, [r7, #8] + 802d162: 009b lsls r3, r3, #2 + 802d164: 4413 add r3, r2 + 802d166: 617b str r3, [r7, #20] MODIFY_REG(*preg, ADC_OFR1_SSATE, OffsetSignedSaturation); - 802d128: 697b ldr r3, [r7, #20] - 802d12a: 681b ldr r3, [r3, #0] - 802d12c: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 - 802d130: 687b ldr r3, [r7, #4] - 802d132: 431a orrs r2, r3 - 802d134: 697b ldr r3, [r7, #20] - 802d136: 601a str r2, [r3, #0] - } -} - 802d138: bf00 nop - 802d13a: 371c adds r7, #28 - 802d13c: 46bd mov sp, r7 - 802d13e: f85d 7b04 ldr.w r7, [sp], #4 - 802d142: 4770 bx lr - -0802d144 : + 802d168: 697b ldr r3, [r7, #20] + 802d16a: 681b ldr r3, [r3, #0] + 802d16c: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 + 802d170: 687b ldr r3, [r7, #4] + 802d172: 431a orrs r2, r3 + 802d174: 697b ldr r3, [r7, #20] + 802d176: 601a str r2, [r3, #0] + } +} + 802d178: bf00 nop + 802d17a: 371c adds r7, #28 + 802d17c: 46bd mov sp, r7 + 802d17e: f85d 7b04 ldr.w r7, [sp], #4 + 802d182: 4770 bx lr + +0802d184 : * (3) On STM32H7, fast channel (0.125 us for 14-bit resolution (ADC conversion rate up to 8 Ms/s)). * Other channels are slow channels (conversion rate: refer to reference manual). * @retval None */ __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) { - 802d144: b480 push {r7} - 802d146: b087 sub sp, #28 - 802d148: af00 add r7, sp, #0 - 802d14a: 60f8 str r0, [r7, #12] - 802d14c: 60b9 str r1, [r7, #8] - 802d14e: 607a str r2, [r7, #4] + 802d184: b480 push {r7} + 802d186: b087 sub sp, #28 + 802d188: af00 add r7, sp, #0 + 802d18a: 60f8 str r0, [r7, #12] + 802d18c: 60b9 str r1, [r7, #8] + 802d18e: 607a str r2, [r7, #4] /* Set bits with content of parameter "Channel" with bits position */ /* in register and register position depending on parameter "Rank". */ /* Parameters "Rank" and "Channel" are used with masks because containing */ /* other bits reserved for other purpose. */ __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS)); - 802d150: 68fb ldr r3, [r7, #12] - 802d152: 3330 adds r3, #48 ; 0x30 - 802d154: 461a mov r2, r3 - 802d156: 68bb ldr r3, [r7, #8] - 802d158: 0a1b lsrs r3, r3, #8 - 802d15a: 009b lsls r3, r3, #2 - 802d15c: f003 030c and.w r3, r3, #12 - 802d160: 4413 add r3, r2 - 802d162: 617b str r3, [r7, #20] + 802d190: 68fb ldr r3, [r7, #12] + 802d192: 3330 adds r3, #48 ; 0x30 + 802d194: 461a mov r2, r3 + 802d196: 68bb ldr r3, [r7, #8] + 802d198: 0a1b lsrs r3, r3, #8 + 802d19a: 009b lsls r3, r3, #2 + 802d19c: f003 030c and.w r3, r3, #12 + 802d1a0: 4413 add r3, r2 + 802d1a2: 617b str r3, [r7, #20] MODIFY_REG(*preg, - 802d164: 697b ldr r3, [r7, #20] - 802d166: 681a ldr r2, [r3, #0] - 802d168: 68bb ldr r3, [r7, #8] - 802d16a: f003 031f and.w r3, r3, #31 - 802d16e: 211f movs r1, #31 - 802d170: fa01 f303 lsl.w r3, r1, r3 - 802d174: 43db mvns r3, r3 - 802d176: 401a ands r2, r3 - 802d178: 687b ldr r3, [r7, #4] - 802d17a: 0e9b lsrs r3, r3, #26 - 802d17c: f003 011f and.w r1, r3, #31 - 802d180: 68bb ldr r3, [r7, #8] - 802d182: f003 031f and.w r3, r3, #31 - 802d186: fa01 f303 lsl.w r3, r1, r3 - 802d18a: 431a orrs r2, r3 - 802d18c: 697b ldr r3, [r7, #20] - 802d18e: 601a str r2, [r3, #0] + 802d1a4: 697b ldr r3, [r7, #20] + 802d1a6: 681a ldr r2, [r3, #0] + 802d1a8: 68bb ldr r3, [r7, #8] + 802d1aa: f003 031f and.w r3, r3, #31 + 802d1ae: 211f movs r1, #31 + 802d1b0: fa01 f303 lsl.w r3, r1, r3 + 802d1b4: 43db mvns r3, r3 + 802d1b6: 401a ands r2, r3 + 802d1b8: 687b ldr r3, [r7, #4] + 802d1ba: 0e9b lsrs r3, r3, #26 + 802d1bc: f003 011f and.w r1, r3, #31 + 802d1c0: 68bb ldr r3, [r7, #8] + 802d1c2: f003 031f and.w r3, r3, #31 + 802d1c6: fa01 f303 lsl.w r3, r1, r3 + 802d1ca: 431a orrs r2, r3 + 802d1cc: 697b ldr r3, [r7, #20] + 802d1ce: 601a str r2, [r3, #0] ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK), ((Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_REG_RANK_ID_SQRX_MASK)); } - 802d190: bf00 nop - 802d192: 371c adds r7, #28 - 802d194: 46bd mov sp, r7 - 802d196: f85d 7b04 ldr.w r7, [sp], #4 - 802d19a: 4770 bx lr + 802d1d0: bf00 nop + 802d1d2: 371c adds r7, #28 + 802d1d4: 46bd mov sp, r7 + 802d1d6: f85d 7b04 ldr.w r7, [sp], #4 + 802d1da: 4770 bx lr -0802d19c : +0802d1dc : * @arg @ref LL_ADC_SAMPLINGTIME_387CYCLES_5 * @arg @ref LL_ADC_SAMPLINGTIME_810CYCLES_5 * @retval None */ __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime) { - 802d19c: b480 push {r7} - 802d19e: b087 sub sp, #28 - 802d1a0: af00 add r7, sp, #0 - 802d1a2: 60f8 str r0, [r7, #12] - 802d1a4: 60b9 str r1, [r7, #8] - 802d1a6: 607a str r2, [r7, #4] + 802d1dc: b480 push {r7} + 802d1de: b087 sub sp, #28 + 802d1e0: af00 add r7, sp, #0 + 802d1e2: 60f8 str r0, [r7, #12] + 802d1e4: 60b9 str r1, [r7, #8] + 802d1e6: 607a str r2, [r7, #4] /* Set bits with content of parameter "SamplingTime" with bits position */ /* in register and register position depending on parameter "Channel". */ /* Parameter "Channel" is used with masks because containing */ /* other bits reserved for other purpose. */ __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC_SMPRX_REGOFFSET_POS)); - 802d1a8: 68fb ldr r3, [r7, #12] - 802d1aa: 3314 adds r3, #20 - 802d1ac: 461a mov r2, r3 - 802d1ae: 68bb ldr r3, [r7, #8] - 802d1b0: 0e5b lsrs r3, r3, #25 - 802d1b2: 009b lsls r3, r3, #2 - 802d1b4: f003 0304 and.w r3, r3, #4 - 802d1b8: 4413 add r3, r2 - 802d1ba: 617b str r3, [r7, #20] + 802d1e8: 68fb ldr r3, [r7, #12] + 802d1ea: 3314 adds r3, #20 + 802d1ec: 461a mov r2, r3 + 802d1ee: 68bb ldr r3, [r7, #8] + 802d1f0: 0e5b lsrs r3, r3, #25 + 802d1f2: 009b lsls r3, r3, #2 + 802d1f4: f003 0304 and.w r3, r3, #4 + 802d1f8: 4413 add r3, r2 + 802d1fa: 617b str r3, [r7, #20] MODIFY_REG(*preg, - 802d1bc: 697b ldr r3, [r7, #20] - 802d1be: 681a ldr r2, [r3, #0] - 802d1c0: 68bb ldr r3, [r7, #8] - 802d1c2: 0d1b lsrs r3, r3, #20 - 802d1c4: f003 031f and.w r3, r3, #31 - 802d1c8: 2107 movs r1, #7 - 802d1ca: fa01 f303 lsl.w r3, r1, r3 - 802d1ce: 43db mvns r3, r3 - 802d1d0: 401a ands r2, r3 - 802d1d2: 68bb ldr r3, [r7, #8] - 802d1d4: 0d1b lsrs r3, r3, #20 - 802d1d6: f003 031f and.w r3, r3, #31 - 802d1da: 6879 ldr r1, [r7, #4] - 802d1dc: fa01 f303 lsl.w r3, r1, r3 - 802d1e0: 431a orrs r2, r3 - 802d1e2: 697b ldr r3, [r7, #20] - 802d1e4: 601a str r2, [r3, #0] + 802d1fc: 697b ldr r3, [r7, #20] + 802d1fe: 681a ldr r2, [r3, #0] + 802d200: 68bb ldr r3, [r7, #8] + 802d202: 0d1b lsrs r3, r3, #20 + 802d204: f003 031f and.w r3, r3, #31 + 802d208: 2107 movs r1, #7 + 802d20a: fa01 f303 lsl.w r3, r1, r3 + 802d20e: 43db mvns r3, r3 + 802d210: 401a ands r2, r3 + 802d212: 68bb ldr r3, [r7, #8] + 802d214: 0d1b lsrs r3, r3, #20 + 802d216: f003 031f and.w r3, r3, #31 + 802d21a: 6879 ldr r1, [r7, #4] + 802d21c: fa01 f303 lsl.w r3, r1, r3 + 802d220: 431a orrs r2, r3 + 802d222: 697b ldr r3, [r7, #20] + 802d224: 601a str r2, [r3, #0] ADC_SMPR1_SMP0 << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS), SamplingTime << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS)); } - 802d1e6: bf00 nop - 802d1e8: 371c adds r7, #28 - 802d1ea: 46bd mov sp, r7 - 802d1ec: f85d 7b04 ldr.w r7, [sp], #4 - 802d1f0: 4770 bx lr + 802d226: bf00 nop + 802d228: 371c adds r7, #28 + 802d22a: 46bd mov sp, r7 + 802d22c: f85d 7b04 ldr.w r7, [sp], #4 + 802d230: 4770 bx lr ... -0802d1f4 : +0802d234 : * @arg @ref LL_ADC_SINGLE_ENDED * @arg @ref LL_ADC_DIFFERENTIAL_ENDED * @retval None */ __STATIC_INLINE void LL_ADC_SetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff) { - 802d1f4: b480 push {r7} - 802d1f6: b085 sub sp, #20 - 802d1f8: af00 add r7, sp, #0 - 802d1fa: 60f8 str r0, [r7, #12] - 802d1fc: 60b9 str r1, [r7, #8] - 802d1fe: 607a str r2, [r7, #4] + 802d234: b480 push {r7} + 802d236: b085 sub sp, #20 + 802d238: af00 add r7, sp, #0 + 802d23a: 60f8 str r0, [r7, #12] + 802d23c: 60b9 str r1, [r7, #8] + 802d23e: 607a str r2, [r7, #4] } #else /* ADC_VER_V5_V90 */ /* Bits of channels in single or differential mode are set only for */ /* differential mode (for single mode, mask of bits allowed to be set is */ /* shifted out of range of bits of channels in single or differential mode. */ MODIFY_REG(ADCx->DIFSEL, - 802d200: 68fb ldr r3, [r7, #12] - 802d202: f8d3 20c0 ldr.w r2, [r3, #192] ; 0xc0 - 802d206: 68bb ldr r3, [r7, #8] - 802d208: f3c3 0313 ubfx r3, r3, #0, #20 - 802d20c: 43db mvns r3, r3 - 802d20e: 401a ands r2, r3 - 802d210: 687b ldr r3, [r7, #4] - 802d212: f003 0318 and.w r3, r3, #24 - 802d216: 4908 ldr r1, [pc, #32] ; (802d238 ) - 802d218: 40d9 lsrs r1, r3 - 802d21a: 68bb ldr r3, [r7, #8] - 802d21c: 400b ands r3, r1 - 802d21e: f3c3 0313 ubfx r3, r3, #0, #20 - 802d222: 431a orrs r2, r3 - 802d224: 68fb ldr r3, [r7, #12] - 802d226: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 + 802d240: 68fb ldr r3, [r7, #12] + 802d242: f8d3 20c0 ldr.w r2, [r3, #192] ; 0xc0 + 802d246: 68bb ldr r3, [r7, #8] + 802d248: f3c3 0313 ubfx r3, r3, #0, #20 + 802d24c: 43db mvns r3, r3 + 802d24e: 401a ands r2, r3 + 802d250: 687b ldr r3, [r7, #4] + 802d252: f003 0318 and.w r3, r3, #24 + 802d256: 4908 ldr r1, [pc, #32] ; (802d278 ) + 802d258: 40d9 lsrs r1, r3 + 802d25a: 68bb ldr r3, [r7, #8] + 802d25c: 400b ands r3, r1 + 802d25e: f3c3 0313 ubfx r3, r3, #0, #20 + 802d262: 431a orrs r2, r3 + 802d264: 68fb ldr r3, [r7, #12] + 802d266: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 Channel & ADC_SINGLEDIFF_CHANNEL_MASK, (Channel & ADC_SINGLEDIFF_CHANNEL_MASK) & (ADC_DIFSEL_DIFSEL >> (SingleDiff & ADC_SINGLEDIFF_CHANNEL_SHIFT_MASK))); #endif } - 802d22a: bf00 nop - 802d22c: 3714 adds r7, #20 - 802d22e: 46bd mov sp, r7 - 802d230: f85d 7b04 ldr.w r7, [sp], #4 - 802d234: 4770 bx lr - 802d236: bf00 nop - 802d238: 000fffff .word 0x000fffff + 802d26a: bf00 nop + 802d26c: 3714 adds r7, #20 + 802d26e: 46bd mov sp, r7 + 802d270: f85d 7b04 ldr.w r7, [sp], #4 + 802d274: 4770 bx lr + 802d276: bf00 nop + 802d278: 000fffff .word 0x000fffff -0802d23c : +0802d27c : * @rmtoll CR DEEPPWD LL_ADC_DisableDeepPowerDown * @param ADCx ADC instance * @retval None */ __STATIC_INLINE void LL_ADC_DisableDeepPowerDown(ADC_TypeDef *ADCx) { - 802d23c: b480 push {r7} - 802d23e: b083 sub sp, #12 - 802d240: af00 add r7, sp, #0 - 802d242: 6078 str r0, [r7, #4] + 802d27c: b480 push {r7} + 802d27e: b083 sub sp, #12 + 802d280: af00 add r7, sp, #0 + 802d282: 6078 str r0, [r7, #4] /* Note: Write register with some additional bits forced to state reset */ /* instead of modifying only the selected bit for this function, */ /* to not interfere with bits with HW property "rs". */ CLEAR_BIT(ADCx->CR, (ADC_CR_DEEPPWD | ADC_CR_BITS_PROPERTY_RS)); - 802d244: 687b ldr r3, [r7, #4] - 802d246: 689a ldr r2, [r3, #8] - 802d248: 4b04 ldr r3, [pc, #16] ; (802d25c ) - 802d24a: 4013 ands r3, r2 - 802d24c: 687a ldr r2, [r7, #4] - 802d24e: 6093 str r3, [r2, #8] -} - 802d250: bf00 nop - 802d252: 370c adds r7, #12 - 802d254: 46bd mov sp, r7 - 802d256: f85d 7b04 ldr.w r7, [sp], #4 - 802d25a: 4770 bx lr - 802d25c: 5fffffc0 .word 0x5fffffc0 - -0802d260 : + 802d284: 687b ldr r3, [r7, #4] + 802d286: 689a ldr r2, [r3, #8] + 802d288: 4b04 ldr r3, [pc, #16] ; (802d29c ) + 802d28a: 4013 ands r3, r2 + 802d28c: 687a ldr r2, [r7, #4] + 802d28e: 6093 str r3, [r2, #8] +} + 802d290: bf00 nop + 802d292: 370c adds r7, #12 + 802d294: 46bd mov sp, r7 + 802d296: f85d 7b04 ldr.w r7, [sp], #4 + 802d29a: 4770 bx lr + 802d29c: 5fffffc0 .word 0x5fffffc0 + +0802d2a0 : * @rmtoll CR DEEPPWD LL_ADC_IsDeepPowerDownEnabled * @param ADCx ADC instance * @retval 0: deep power down is disabled, 1: deep power down is enabled. */ __STATIC_INLINE uint32_t LL_ADC_IsDeepPowerDownEnabled(ADC_TypeDef *ADCx) { - 802d260: b480 push {r7} - 802d262: b083 sub sp, #12 - 802d264: af00 add r7, sp, #0 - 802d266: 6078 str r0, [r7, #4] + 802d2a0: b480 push {r7} + 802d2a2: b083 sub sp, #12 + 802d2a4: af00 add r7, sp, #0 + 802d2a6: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_DEEPPWD) == (ADC_CR_DEEPPWD)) ? 1UL : 0UL); - 802d268: 687b ldr r3, [r7, #4] - 802d26a: 689b ldr r3, [r3, #8] - 802d26c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 802d270: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 802d274: d101 bne.n 802d27a - 802d276: 2301 movs r3, #1 - 802d278: e000 b.n 802d27c - 802d27a: 2300 movs r3, #0 -} - 802d27c: 4618 mov r0, r3 - 802d27e: 370c adds r7, #12 - 802d280: 46bd mov sp, r7 - 802d282: f85d 7b04 ldr.w r7, [sp], #4 - 802d286: 4770 bx lr - -0802d288 : + 802d2a8: 687b ldr r3, [r7, #4] + 802d2aa: 689b ldr r3, [r3, #8] + 802d2ac: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 802d2b0: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 802d2b4: d101 bne.n 802d2ba + 802d2b6: 2301 movs r3, #1 + 802d2b8: e000 b.n 802d2bc + 802d2ba: 2300 movs r3, #0 +} + 802d2bc: 4618 mov r0, r3 + 802d2be: 370c adds r7, #12 + 802d2c0: 46bd mov sp, r7 + 802d2c2: f85d 7b04 ldr.w r7, [sp], #4 + 802d2c6: 4770 bx lr + +0802d2c8 : * @rmtoll CR ADVREGEN LL_ADC_EnableInternalRegulator * @param ADCx ADC instance * @retval None */ __STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx) { - 802d288: b480 push {r7} - 802d28a: b083 sub sp, #12 - 802d28c: af00 add r7, sp, #0 - 802d28e: 6078 str r0, [r7, #4] + 802d2c8: b480 push {r7} + 802d2ca: b083 sub sp, #12 + 802d2cc: af00 add r7, sp, #0 + 802d2ce: 6078 str r0, [r7, #4] /* Note: Write register with some additional bits forced to state reset */ /* instead of modifying only the selected bit for this function, */ /* to not interfere with bits with HW property "rs". */ MODIFY_REG(ADCx->CR, - 802d290: 687b ldr r3, [r7, #4] - 802d292: 689a ldr r2, [r3, #8] - 802d294: 4b05 ldr r3, [pc, #20] ; (802d2ac ) - 802d296: 4013 ands r3, r2 - 802d298: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 - 802d29c: 687b ldr r3, [r7, #4] - 802d29e: 609a str r2, [r3, #8] + 802d2d0: 687b ldr r3, [r7, #4] + 802d2d2: 689a ldr r2, [r3, #8] + 802d2d4: 4b05 ldr r3, [pc, #20] ; (802d2ec ) + 802d2d6: 4013 ands r3, r2 + 802d2d8: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 + 802d2dc: 687b ldr r3, [r7, #4] + 802d2de: 609a str r2, [r3, #8] ADC_CR_BITS_PROPERTY_RS, ADC_CR_ADVREGEN); } - 802d2a0: bf00 nop - 802d2a2: 370c adds r7, #12 - 802d2a4: 46bd mov sp, r7 - 802d2a6: f85d 7b04 ldr.w r7, [sp], #4 - 802d2aa: 4770 bx lr - 802d2ac: 6fffffc0 .word 0x6fffffc0 + 802d2e0: bf00 nop + 802d2e2: 370c adds r7, #12 + 802d2e4: 46bd mov sp, r7 + 802d2e6: f85d 7b04 ldr.w r7, [sp], #4 + 802d2ea: 4770 bx lr + 802d2ec: 6fffffc0 .word 0x6fffffc0 -0802d2b0 : +0802d2f0 : * @rmtoll CR ADVREGEN LL_ADC_IsInternalRegulatorEnabled * @param ADCx ADC instance * @retval 0: internal regulator is disabled, 1: internal regulator is enabled. */ __STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx) { - 802d2b0: b480 push {r7} - 802d2b2: b083 sub sp, #12 - 802d2b4: af00 add r7, sp, #0 - 802d2b6: 6078 str r0, [r7, #4] + 802d2f0: b480 push {r7} + 802d2f2: b083 sub sp, #12 + 802d2f4: af00 add r7, sp, #0 + 802d2f6: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); - 802d2b8: 687b ldr r3, [r7, #4] - 802d2ba: 689b ldr r3, [r3, #8] - 802d2bc: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 802d2c0: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 802d2c4: d101 bne.n 802d2ca - 802d2c6: 2301 movs r3, #1 - 802d2c8: e000 b.n 802d2cc - 802d2ca: 2300 movs r3, #0 -} - 802d2cc: 4618 mov r0, r3 - 802d2ce: 370c adds r7, #12 - 802d2d0: 46bd mov sp, r7 - 802d2d2: f85d 7b04 ldr.w r7, [sp], #4 - 802d2d6: 4770 bx lr - -0802d2d8 : + 802d2f8: 687b ldr r3, [r7, #4] + 802d2fa: 689b ldr r3, [r3, #8] + 802d2fc: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 802d300: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 802d304: d101 bne.n 802d30a + 802d306: 2301 movs r3, #1 + 802d308: e000 b.n 802d30c + 802d30a: 2300 movs r3, #0 +} + 802d30c: 4618 mov r0, r3 + 802d30e: 370c adds r7, #12 + 802d310: 46bd mov sp, r7 + 802d312: f85d 7b04 ldr.w r7, [sp], #4 + 802d316: 4770 bx lr + +0802d318 : * @rmtoll CR ADEN LL_ADC_IsEnabled * @param ADCx ADC instance * @retval 0: ADC is disabled, 1: ADC is enabled. */ __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) { - 802d2d8: b480 push {r7} - 802d2da: b083 sub sp, #12 - 802d2dc: af00 add r7, sp, #0 - 802d2de: 6078 str r0, [r7, #4] + 802d318: b480 push {r7} + 802d31a: b083 sub sp, #12 + 802d31c: af00 add r7, sp, #0 + 802d31e: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); - 802d2e0: 687b ldr r3, [r7, #4] - 802d2e2: 689b ldr r3, [r3, #8] - 802d2e4: f003 0301 and.w r3, r3, #1 - 802d2e8: 2b01 cmp r3, #1 - 802d2ea: d101 bne.n 802d2f0 - 802d2ec: 2301 movs r3, #1 - 802d2ee: e000 b.n 802d2f2 - 802d2f0: 2300 movs r3, #0 -} - 802d2f2: 4618 mov r0, r3 - 802d2f4: 370c adds r7, #12 - 802d2f6: 46bd mov sp, r7 - 802d2f8: f85d 7b04 ldr.w r7, [sp], #4 - 802d2fc: 4770 bx lr - -0802d2fe : + 802d320: 687b ldr r3, [r7, #4] + 802d322: 689b ldr r3, [r3, #8] + 802d324: f003 0301 and.w r3, r3, #1 + 802d328: 2b01 cmp r3, #1 + 802d32a: d101 bne.n 802d330 + 802d32c: 2301 movs r3, #1 + 802d32e: e000 b.n 802d332 + 802d330: 2300 movs r3, #0 +} + 802d332: 4618 mov r0, r3 + 802d334: 370c adds r7, #12 + 802d336: 46bd mov sp, r7 + 802d338: f85d 7b04 ldr.w r7, [sp], #4 + 802d33c: 4770 bx lr + +0802d33e : * @rmtoll CR ADSTART LL_ADC_REG_IsConversionOngoing * @param ADCx ADC instance * @retval 0: no conversion is on going on ADC group regular. */ __STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) { - 802d2fe: b480 push {r7} - 802d300: b083 sub sp, #12 - 802d302: af00 add r7, sp, #0 - 802d304: 6078 str r0, [r7, #4] + 802d33e: b480 push {r7} + 802d340: b083 sub sp, #12 + 802d342: af00 add r7, sp, #0 + 802d344: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); - 802d306: 687b ldr r3, [r7, #4] - 802d308: 689b ldr r3, [r3, #8] - 802d30a: f003 0304 and.w r3, r3, #4 - 802d30e: 2b04 cmp r3, #4 - 802d310: d101 bne.n 802d316 - 802d312: 2301 movs r3, #1 - 802d314: e000 b.n 802d318 - 802d316: 2300 movs r3, #0 -} - 802d318: 4618 mov r0, r3 - 802d31a: 370c adds r7, #12 - 802d31c: 46bd mov sp, r7 - 802d31e: f85d 7b04 ldr.w r7, [sp], #4 - 802d322: 4770 bx lr - -0802d324 : + 802d346: 687b ldr r3, [r7, #4] + 802d348: 689b ldr r3, [r3, #8] + 802d34a: f003 0304 and.w r3, r3, #4 + 802d34e: 2b04 cmp r3, #4 + 802d350: d101 bne.n 802d356 + 802d352: 2301 movs r3, #1 + 802d354: e000 b.n 802d358 + 802d356: 2300 movs r3, #0 +} + 802d358: 4618 mov r0, r3 + 802d35a: 370c adds r7, #12 + 802d35c: 46bd mov sp, r7 + 802d35e: f85d 7b04 ldr.w r7, [sp], #4 + 802d362: 4770 bx lr + +0802d364 : * @rmtoll CR JADSTART LL_ADC_INJ_IsConversionOngoing * @param ADCx ADC instance * @retval 0: no conversion is on going on ADC group injected. */ __STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx) { - 802d324: b480 push {r7} - 802d326: b083 sub sp, #12 - 802d328: af00 add r7, sp, #0 - 802d32a: 6078 str r0, [r7, #4] + 802d364: b480 push {r7} + 802d366: b083 sub sp, #12 + 802d368: af00 add r7, sp, #0 + 802d36a: 6078 str r0, [r7, #4] return ((READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART)) ? 1UL : 0UL); - 802d32c: 687b ldr r3, [r7, #4] - 802d32e: 689b ldr r3, [r3, #8] - 802d330: f003 0308 and.w r3, r3, #8 - 802d334: 2b08 cmp r3, #8 - 802d336: d101 bne.n 802d33c - 802d338: 2301 movs r3, #1 - 802d33a: e000 b.n 802d33e - 802d33c: 2300 movs r3, #0 -} - 802d33e: 4618 mov r0, r3 - 802d340: 370c adds r7, #12 - 802d342: 46bd mov sp, r7 - 802d344: f85d 7b04 ldr.w r7, [sp], #4 - 802d348: 4770 bx lr + 802d36c: 687b ldr r3, [r7, #4] + 802d36e: 689b ldr r3, [r3, #8] + 802d370: f003 0308 and.w r3, r3, #8 + 802d374: 2b08 cmp r3, #8 + 802d376: d101 bne.n 802d37c + 802d378: 2301 movs r3, #1 + 802d37a: e000 b.n 802d37e + 802d37c: 2300 movs r3, #0 +} + 802d37e: 4618 mov r0, r3 + 802d380: 370c adds r7, #12 + 802d382: 46bd mov sp, r7 + 802d384: f85d 7b04 ldr.w r7, [sp], #4 + 802d388: 4770 bx lr ... -0802d34c : +0802d38c : * without disabling the other ADCs. * @param hadc ADC handle * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc) { - 802d34c: b590 push {r4, r7, lr} - 802d34e: b089 sub sp, #36 ; 0x24 - 802d350: af00 add r7, sp, #0 - 802d352: 6078 str r0, [r7, #4] + 802d38c: b590 push {r4, r7, lr} + 802d38e: b089 sub sp, #36 ; 0x24 + 802d390: af00 add r7, sp, #0 + 802d392: 6078 str r0, [r7, #4] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 802d354: 2300 movs r3, #0 - 802d356: 77fb strb r3, [r7, #31] + 802d394: 2300 movs r3, #0 + 802d396: 77fb strb r3, [r7, #31] uint32_t tmpCFGR; uint32_t tmp_adc_reg_is_conversion_on_going; __IO uint32_t wait_loop_index = 0UL; - 802d358: 2300 movs r3, #0 - 802d35a: 60bb str r3, [r7, #8] + 802d398: 2300 movs r3, #0 + 802d39a: 60bb str r3, [r7, #8] uint32_t tmp_adc_is_conversion_on_going_regular; uint32_t tmp_adc_is_conversion_on_going_injected; /* Check ADC handle */ if (hadc == NULL) - 802d35c: 687b ldr r3, [r7, #4] - 802d35e: 2b00 cmp r3, #0 - 802d360: d101 bne.n 802d366 + 802d39c: 687b ldr r3, [r7, #4] + 802d39e: 2b00 cmp r3, #0 + 802d3a0: d101 bne.n 802d3a6 { return HAL_ERROR; - 802d362: 2301 movs r3, #1 - 802d364: e18f b.n 802d686 + 802d3a2: 2301 movs r3, #1 + 802d3a4: e18f b.n 802d6c6 assert_param(IS_ADC_EOC_SELECTION(hadc->Init.EOCSelection)); assert_param(IS_ADC_OVERRUN(hadc->Init.Overrun)); assert_param(IS_FUNCTIONAL_STATE(hadc->Init.LowPowerAutoWait)); assert_param(IS_FUNCTIONAL_STATE(hadc->Init.OversamplingMode)); if (hadc->Init.ScanConvMode != ADC_SCAN_DISABLE) - 802d366: 687b ldr r3, [r7, #4] - 802d368: 68db ldr r3, [r3, #12] - 802d36a: 2b00 cmp r3, #0 + 802d3a6: 687b ldr r3, [r7, #4] + 802d3a8: 68db ldr r3, [r3, #12] + 802d3aa: 2b00 cmp r3, #0 /* DISCEN and CONT bits cannot be set at the same time */ assert_param(!((hadc->Init.DiscontinuousConvMode == ENABLE) && (hadc->Init.ContinuousConvMode == ENABLE))); /* Actions performed only if ADC is coming from state reset: */ /* - Initialization of ADC MSP */ if (hadc->State == HAL_ADC_STATE_RESET) - 802d36c: 687b ldr r3, [r7, #4] - 802d36e: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d370: 2b00 cmp r3, #0 - 802d372: d109 bne.n 802d388 + 802d3ac: 687b ldr r3, [r7, #4] + 802d3ae: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d3b0: 2b00 cmp r3, #0 + 802d3b2: d109 bne.n 802d3c8 /* Init the low level hardware */ hadc->MspInitCallback(hadc); #else /* Init the low level hardware */ HAL_ADC_MspInit(hadc); - 802d374: 6878 ldr r0, [r7, #4] - 802d376: f7fc ffbd bl 802a2f4 + 802d3b4: 6878 ldr r0, [r7, #4] + 802d3b6: f7fc ffbd bl 802a334 #endif /* USE_HAL_ADC_REGISTER_CALLBACKS */ /* Set ADC error code to none */ ADC_CLEAR_ERRORCODE(hadc); - 802d37a: 687b ldr r3, [r7, #4] - 802d37c: 2200 movs r2, #0 - 802d37e: 659a str r2, [r3, #88] ; 0x58 + 802d3ba: 687b ldr r3, [r7, #4] + 802d3bc: 2200 movs r2, #0 + 802d3be: 659a str r2, [r3, #88] ; 0x58 /* Initialize Lock */ hadc->Lock = HAL_UNLOCKED; - 802d380: 687b ldr r3, [r7, #4] - 802d382: 2200 movs r2, #0 - 802d384: f883 2050 strb.w r2, [r3, #80] ; 0x50 + 802d3c0: 687b ldr r3, [r7, #4] + 802d3c2: 2200 movs r2, #0 + 802d3c4: f883 2050 strb.w r2, [r3, #80] ; 0x50 } /* - Exit from deep-power-down mode and ADC voltage regulator enable */ if (LL_ADC_IsDeepPowerDownEnabled(hadc->Instance) != 0UL) - 802d388: 687b ldr r3, [r7, #4] - 802d38a: 681b ldr r3, [r3, #0] - 802d38c: 4618 mov r0, r3 - 802d38e: f7ff ff67 bl 802d260 - 802d392: 4603 mov r3, r0 - 802d394: 2b00 cmp r3, #0 - 802d396: d004 beq.n 802d3a2 + 802d3c8: 687b ldr r3, [r7, #4] + 802d3ca: 681b ldr r3, [r3, #0] + 802d3cc: 4618 mov r0, r3 + 802d3ce: f7ff ff67 bl 802d2a0 + 802d3d2: 4603 mov r3, r0 + 802d3d4: 2b00 cmp r3, #0 + 802d3d6: d004 beq.n 802d3e2 { /* Disable ADC deep power down mode */ LL_ADC_DisableDeepPowerDown(hadc->Instance); - 802d398: 687b ldr r3, [r7, #4] - 802d39a: 681b ldr r3, [r3, #0] - 802d39c: 4618 mov r0, r3 - 802d39e: f7ff ff4d bl 802d23c + 802d3d8: 687b ldr r3, [r7, #4] + 802d3da: 681b ldr r3, [r3, #0] + 802d3dc: 4618 mov r0, r3 + 802d3de: f7ff ff4d bl 802d27c /* System was in deep power down mode, calibration must be relaunched or a previously saved calibration factor re-applied once the ADC voltage regulator is enabled */ } if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 802d3a2: 687b ldr r3, [r7, #4] - 802d3a4: 681b ldr r3, [r3, #0] - 802d3a6: 4618 mov r0, r3 - 802d3a8: f7ff ff82 bl 802d2b0 - 802d3ac: 4603 mov r3, r0 - 802d3ae: 2b00 cmp r3, #0 - 802d3b0: d114 bne.n 802d3dc + 802d3e2: 687b ldr r3, [r7, #4] + 802d3e4: 681b ldr r3, [r3, #0] + 802d3e6: 4618 mov r0, r3 + 802d3e8: f7ff ff82 bl 802d2f0 + 802d3ec: 4603 mov r3, r0 + 802d3ee: 2b00 cmp r3, #0 + 802d3f0: d114 bne.n 802d41c { /* Enable ADC internal voltage regulator */ LL_ADC_EnableInternalRegulator(hadc->Instance); - 802d3b2: 687b ldr r3, [r7, #4] - 802d3b4: 681b ldr r3, [r3, #0] - 802d3b6: 4618 mov r0, r3 - 802d3b8: f7ff ff66 bl 802d288 + 802d3f2: 687b ldr r3, [r7, #4] + 802d3f4: 681b ldr r3, [r3, #0] + 802d3f6: 4618 mov r0, r3 + 802d3f8: f7ff ff66 bl 802d2c8 /* Note: Variable divided by 2 to compensate partially */ /* CPU processing cycles, scaling in us split to not */ /* exceed 32 bits register capacity and handle low frequency. */ wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 802d3bc: 4b87 ldr r3, [pc, #540] ; (802d5dc ) - 802d3be: 681b ldr r3, [r3, #0] - 802d3c0: 099b lsrs r3, r3, #6 - 802d3c2: 4a87 ldr r2, [pc, #540] ; (802d5e0 ) - 802d3c4: fba2 2303 umull r2, r3, r2, r3 - 802d3c8: 099b lsrs r3, r3, #6 - 802d3ca: 3301 adds r3, #1 - 802d3cc: 60bb str r3, [r7, #8] + 802d3fc: 4b87 ldr r3, [pc, #540] ; (802d61c ) + 802d3fe: 681b ldr r3, [r3, #0] + 802d400: 099b lsrs r3, r3, #6 + 802d402: 4a87 ldr r2, [pc, #540] ; (802d620 ) + 802d404: fba2 2303 umull r2, r3, r2, r3 + 802d408: 099b lsrs r3, r3, #6 + 802d40a: 3301 adds r3, #1 + 802d40c: 60bb str r3, [r7, #8] while (wait_loop_index != 0UL) - 802d3ce: e002 b.n 802d3d6 + 802d40e: e002 b.n 802d416 { wait_loop_index--; - 802d3d0: 68bb ldr r3, [r7, #8] - 802d3d2: 3b01 subs r3, #1 - 802d3d4: 60bb str r3, [r7, #8] + 802d410: 68bb ldr r3, [r7, #8] + 802d412: 3b01 subs r3, #1 + 802d414: 60bb str r3, [r7, #8] while (wait_loop_index != 0UL) - 802d3d6: 68bb ldr r3, [r7, #8] - 802d3d8: 2b00 cmp r3, #0 - 802d3da: d1f9 bne.n 802d3d0 + 802d416: 68bb ldr r3, [r7, #8] + 802d418: 2b00 cmp r3, #0 + 802d41a: d1f9 bne.n 802d410 } /* Verification that ADC voltage regulator is correctly enabled, whether */ /* or not ADC is coming from state reset (if any potential problem of */ /* clocking, voltage regulator would not be enabled). */ if (LL_ADC_IsInternalRegulatorEnabled(hadc->Instance) == 0UL) - 802d3dc: 687b ldr r3, [r7, #4] - 802d3de: 681b ldr r3, [r3, #0] - 802d3e0: 4618 mov r0, r3 - 802d3e2: f7ff ff65 bl 802d2b0 - 802d3e6: 4603 mov r3, r0 - 802d3e8: 2b00 cmp r3, #0 - 802d3ea: d10d bne.n 802d408 + 802d41c: 687b ldr r3, [r7, #4] + 802d41e: 681b ldr r3, [r3, #0] + 802d420: 4618 mov r0, r3 + 802d422: f7ff ff65 bl 802d2f0 + 802d426: 4603 mov r3, r0 + 802d428: 2b00 cmp r3, #0 + 802d42a: d10d bne.n 802d448 { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 802d3ec: 687b ldr r3, [r7, #4] - 802d3ee: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d3f0: f043 0210 orr.w r2, r3, #16 - 802d3f4: 687b ldr r3, [r7, #4] - 802d3f6: 655a str r2, [r3, #84] ; 0x54 + 802d42c: 687b ldr r3, [r7, #4] + 802d42e: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d430: f043 0210 orr.w r2, r3, #16 + 802d434: 687b ldr r3, [r7, #4] + 802d436: 655a str r2, [r3, #84] ; 0x54 /* Set ADC error code to ADC peripheral internal error */ SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL); - 802d3f8: 687b ldr r3, [r7, #4] - 802d3fa: 6d9b ldr r3, [r3, #88] ; 0x58 - 802d3fc: f043 0201 orr.w r2, r3, #1 - 802d400: 687b ldr r3, [r7, #4] - 802d402: 659a str r2, [r3, #88] ; 0x58 + 802d438: 687b ldr r3, [r7, #4] + 802d43a: 6d9b ldr r3, [r3, #88] ; 0x58 + 802d43c: f043 0201 orr.w r2, r3, #1 + 802d440: 687b ldr r3, [r7, #4] + 802d442: 659a str r2, [r3, #88] ; 0x58 tmp_hal_status = HAL_ERROR; - 802d404: 2301 movs r3, #1 - 802d406: 77fb strb r3, [r7, #31] + 802d444: 2301 movs r3, #1 + 802d446: 77fb strb r3, [r7, #31] /* Configuration of ADC parameters if previous preliminary actions are */ /* correctly completed and if there is no conversion on going on regular */ /* group (ADC may already be enabled at this point if HAL_ADC_Init() is */ /* called to update a parameter on the fly). */ tmp_adc_reg_is_conversion_on_going = LL_ADC_REG_IsConversionOngoing(hadc->Instance); - 802d408: 687b ldr r3, [r7, #4] - 802d40a: 681b ldr r3, [r3, #0] - 802d40c: 4618 mov r0, r3 - 802d40e: f7ff ff76 bl 802d2fe - 802d412: 6178 str r0, [r7, #20] + 802d448: 687b ldr r3, [r7, #4] + 802d44a: 681b ldr r3, [r3, #0] + 802d44c: 4618 mov r0, r3 + 802d44e: f7ff ff76 bl 802d33e + 802d452: 6178 str r0, [r7, #20] if (((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL) - 802d414: 687b ldr r3, [r7, #4] - 802d416: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d418: f003 0310 and.w r3, r3, #16 - 802d41c: 2b00 cmp r3, #0 - 802d41e: f040 8129 bne.w 802d674 + 802d454: 687b ldr r3, [r7, #4] + 802d456: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d458: f003 0310 and.w r3, r3, #16 + 802d45c: 2b00 cmp r3, #0 + 802d45e: f040 8129 bne.w 802d6b4 && (tmp_adc_reg_is_conversion_on_going == 0UL) - 802d422: 697b ldr r3, [r7, #20] - 802d424: 2b00 cmp r3, #0 - 802d426: f040 8125 bne.w 802d674 + 802d462: 697b ldr r3, [r7, #20] + 802d464: 2b00 cmp r3, #0 + 802d466: f040 8125 bne.w 802d6b4 ) { /* Set ADC state */ ADC_STATE_CLR_SET(hadc->State, - 802d42a: 687b ldr r3, [r7, #4] - 802d42c: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d42e: f423 7381 bic.w r3, r3, #258 ; 0x102 - 802d432: f043 0202 orr.w r2, r3, #2 - 802d436: 687b ldr r3, [r7, #4] - 802d438: 655a str r2, [r3, #84] ; 0x54 + 802d46a: 687b ldr r3, [r7, #4] + 802d46c: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d46e: f423 7381 bic.w r3, r3, #258 ; 0x102 + 802d472: f043 0202 orr.w r2, r3, #2 + 802d476: 687b ldr r3, [r7, #4] + 802d478: 655a str r2, [r3, #84] ; 0x54 /* Configuration of common ADC parameters */ /* Parameters update conditioned to ADC state: */ /* Parameters that can be updated only when ADC is disabled: */ /* - clock configuration */ if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 802d43a: 687b ldr r3, [r7, #4] - 802d43c: 681b ldr r3, [r3, #0] - 802d43e: 4618 mov r0, r3 - 802d440: f7ff ff4a bl 802d2d8 - 802d444: 4603 mov r3, r0 - 802d446: 2b00 cmp r3, #0 - 802d448: d136 bne.n 802d4b8 + 802d47a: 687b ldr r3, [r7, #4] + 802d47c: 681b ldr r3, [r3, #0] + 802d47e: 4618 mov r0, r3 + 802d480: f7ff ff4a bl 802d318 + 802d484: 4603 mov r3, r0 + 802d486: 2b00 cmp r3, #0 + 802d488: d136 bne.n 802d4f8 { if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL) - 802d44a: 687b ldr r3, [r7, #4] - 802d44c: 681b ldr r3, [r3, #0] - 802d44e: 4a65 ldr r2, [pc, #404] ; (802d5e4 ) - 802d450: 4293 cmp r3, r2 - 802d452: d004 beq.n 802d45e - 802d454: 687b ldr r3, [r7, #4] - 802d456: 681b ldr r3, [r3, #0] - 802d458: 4a63 ldr r2, [pc, #396] ; (802d5e8 ) - 802d45a: 4293 cmp r3, r2 - 802d45c: d10e bne.n 802d47c - 802d45e: 4861 ldr r0, [pc, #388] ; (802d5e4 ) - 802d460: f7ff ff3a bl 802d2d8 - 802d464: 4604 mov r4, r0 - 802d466: 4860 ldr r0, [pc, #384] ; (802d5e8 ) - 802d468: f7ff ff36 bl 802d2d8 - 802d46c: 4603 mov r3, r0 - 802d46e: 4323 orrs r3, r4 - 802d470: 2b00 cmp r3, #0 - 802d472: bf0c ite eq - 802d474: 2301 moveq r3, #1 - 802d476: 2300 movne r3, #0 - 802d478: b2db uxtb r3, r3 - 802d47a: e008 b.n 802d48e - 802d47c: 485b ldr r0, [pc, #364] ; (802d5ec ) - 802d47e: f7ff ff2b bl 802d2d8 - 802d482: 4603 mov r3, r0 - 802d484: 2b00 cmp r3, #0 - 802d486: bf0c ite eq - 802d488: 2301 moveq r3, #1 - 802d48a: 2300 movne r3, #0 - 802d48c: b2db uxtb r3, r3 - 802d48e: 2b00 cmp r3, #0 - 802d490: d012 beq.n 802d4b8 + 802d48a: 687b ldr r3, [r7, #4] + 802d48c: 681b ldr r3, [r3, #0] + 802d48e: 4a65 ldr r2, [pc, #404] ; (802d624 ) + 802d490: 4293 cmp r3, r2 + 802d492: d004 beq.n 802d49e + 802d494: 687b ldr r3, [r7, #4] + 802d496: 681b ldr r3, [r3, #0] + 802d498: 4a63 ldr r2, [pc, #396] ; (802d628 ) + 802d49a: 4293 cmp r3, r2 + 802d49c: d10e bne.n 802d4bc + 802d49e: 4861 ldr r0, [pc, #388] ; (802d624 ) + 802d4a0: f7ff ff3a bl 802d318 + 802d4a4: 4604 mov r4, r0 + 802d4a6: 4860 ldr r0, [pc, #384] ; (802d628 ) + 802d4a8: f7ff ff36 bl 802d318 + 802d4ac: 4603 mov r3, r0 + 802d4ae: 4323 orrs r3, r4 + 802d4b0: 2b00 cmp r3, #0 + 802d4b2: bf0c ite eq + 802d4b4: 2301 moveq r3, #1 + 802d4b6: 2300 movne r3, #0 + 802d4b8: b2db uxtb r3, r3 + 802d4ba: e008 b.n 802d4ce + 802d4bc: 485b ldr r0, [pc, #364] ; (802d62c ) + 802d4be: f7ff ff2b bl 802d318 + 802d4c2: 4603 mov r3, r0 + 802d4c4: 2b00 cmp r3, #0 + 802d4c6: bf0c ite eq + 802d4c8: 2301 moveq r3, #1 + 802d4ca: 2300 movne r3, #0 + 802d4cc: b2db uxtb r3, r3 + 802d4ce: 2b00 cmp r3, #0 + 802d4d0: d012 beq.n 802d4f8 /* parameters: MDMA, DMACFG, DELAY, DUAL (set by API */ /* HAL_ADCEx_MultiModeConfigChannel() ) */ /* - internal measurement paths: Vbat, temperature sensor, Vref */ /* (set into HAL_ADC_ConfigChannel() or */ /* HAL_ADCEx_InjectedConfigChannel() ) */ LL_ADC_SetCommonClock(__LL_ADC_COMMON_INSTANCE(hadc->Instance), hadc->Init.ClockPrescaler); - 802d492: 687b ldr r3, [r7, #4] - 802d494: 681b ldr r3, [r3, #0] - 802d496: 4a53 ldr r2, [pc, #332] ; (802d5e4 ) - 802d498: 4293 cmp r3, r2 - 802d49a: d004 beq.n 802d4a6 - 802d49c: 687b ldr r3, [r7, #4] - 802d49e: 681b ldr r3, [r3, #0] - 802d4a0: 4a51 ldr r2, [pc, #324] ; (802d5e8 ) - 802d4a2: 4293 cmp r3, r2 - 802d4a4: d101 bne.n 802d4aa - 802d4a6: 4a52 ldr r2, [pc, #328] ; (802d5f0 ) - 802d4a8: e000 b.n 802d4ac - 802d4aa: 4a52 ldr r2, [pc, #328] ; (802d5f4 ) - 802d4ac: 687b ldr r3, [r7, #4] - 802d4ae: 685b ldr r3, [r3, #4] - 802d4b0: 4619 mov r1, r3 - 802d4b2: 4610 mov r0, r2 - 802d4b4: f7ff fdbe bl 802d034 + 802d4d2: 687b ldr r3, [r7, #4] + 802d4d4: 681b ldr r3, [r3, #0] + 802d4d6: 4a53 ldr r2, [pc, #332] ; (802d624 ) + 802d4d8: 4293 cmp r3, r2 + 802d4da: d004 beq.n 802d4e6 + 802d4dc: 687b ldr r3, [r7, #4] + 802d4de: 681b ldr r3, [r3, #0] + 802d4e0: 4a51 ldr r2, [pc, #324] ; (802d628 ) + 802d4e2: 4293 cmp r3, r2 + 802d4e4: d101 bne.n 802d4ea + 802d4e6: 4a52 ldr r2, [pc, #328] ; (802d630 ) + 802d4e8: e000 b.n 802d4ec + 802d4ea: 4a52 ldr r2, [pc, #328] ; (802d634 ) + 802d4ec: 687b ldr r3, [r7, #4] + 802d4ee: 685b ldr r3, [r3, #4] + 802d4f0: 4619 mov r1, r3 + 802d4f2: 4610 mov r0, r2 + 802d4f4: f7ff fdbe bl 802d074 ADC_CFGR_REG_DISCONTINUOUS((uint32_t)hadc->Init.DiscontinuousConvMode)); } #else if ((HAL_GetREVID() > REV_ID_Y) && (ADC_RESOLUTION_8B == hadc->Init.Resolution)) - 802d4b8: f7ff fd9c bl 802cff4 - 802d4bc: 4603 mov r3, r0 - 802d4be: f241 0203 movw r2, #4099 ; 0x1003 - 802d4c2: 4293 cmp r3, r2 - 802d4c4: d914 bls.n 802d4f0 - 802d4c6: 687b ldr r3, [r7, #4] - 802d4c8: 689b ldr r3, [r3, #8] - 802d4ca: 2b10 cmp r3, #16 - 802d4cc: d110 bne.n 802d4f0 + 802d4f8: f7ff fd9c bl 802d034 + 802d4fc: 4603 mov r3, r0 + 802d4fe: f241 0203 movw r2, #4099 ; 0x1003 + 802d502: 4293 cmp r3, r2 + 802d504: d914 bls.n 802d530 + 802d506: 687b ldr r3, [r7, #4] + 802d508: 689b ldr r3, [r3, #8] + 802d50a: 2b10 cmp r3, #16 + 802d50c: d110 bne.n 802d530 { /* for STM32H7 silicon rev.B and above , ADC_CFGR_RES value for 8bits resolution is : b111 */ tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d4ce: 687b ldr r3, [r7, #4] - 802d4d0: 7d5b ldrb r3, [r3, #21] - 802d4d2: 035a lsls r2, r3, #13 + 802d50e: 687b ldr r3, [r7, #4] + 802d510: 7d5b ldrb r3, [r3, #21] + 802d512: 035a lsls r2, r3, #13 hadc->Init.Overrun | - 802d4d4: 687b ldr r3, [r7, #4] - 802d4d6: 6b1b ldr r3, [r3, #48] ; 0x30 + 802d514: 687b ldr r3, [r7, #4] + 802d516: 6b1b ldr r3, [r3, #48] ; 0x30 tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d4d8: 431a orrs r2, r3 + 802d518: 431a orrs r2, r3 hadc->Init.Resolution | (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) | - 802d4da: 687b ldr r3, [r7, #4] - 802d4dc: 689b ldr r3, [r3, #8] + 802d51a: 687b ldr r3, [r7, #4] + 802d51c: 689b ldr r3, [r3, #8] hadc->Init.Overrun | - 802d4de: 431a orrs r2, r3 + 802d51e: 431a orrs r2, r3 ADC_CFGR_REG_DISCONTINUOUS((uint32_t)hadc->Init.DiscontinuousConvMode)); - 802d4e0: 687b ldr r3, [r7, #4] - 802d4e2: 7f1b ldrb r3, [r3, #28] - 802d4e4: 041b lsls r3, r3, #16 + 802d520: 687b ldr r3, [r7, #4] + 802d522: 7f1b ldrb r3, [r3, #28] + 802d524: 041b lsls r3, r3, #16 hadc->Init.Resolution | (ADC_CFGR_RES_1 | ADC_CFGR_RES_0) | - 802d4e6: 4313 orrs r3, r2 + 802d526: 4313 orrs r3, r2 tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d4e8: f043 030c orr.w r3, r3, #12 - 802d4ec: 61bb str r3, [r7, #24] - 802d4ee: e00d b.n 802d50c + 802d528: f043 030c orr.w r3, r3, #12 + 802d52c: 61bb str r3, [r7, #24] + 802d52e: e00d b.n 802d54c } else { tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d4f0: 687b ldr r3, [r7, #4] - 802d4f2: 7d5b ldrb r3, [r3, #21] - 802d4f4: 035a lsls r2, r3, #13 + 802d530: 687b ldr r3, [r7, #4] + 802d532: 7d5b ldrb r3, [r3, #21] + 802d534: 035a lsls r2, r3, #13 hadc->Init.Overrun | - 802d4f6: 687b ldr r3, [r7, #4] - 802d4f8: 6b1b ldr r3, [r3, #48] ; 0x30 + 802d536: 687b ldr r3, [r7, #4] + 802d538: 6b1b ldr r3, [r3, #48] ; 0x30 tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d4fa: 431a orrs r2, r3 + 802d53a: 431a orrs r2, r3 hadc->Init.Resolution | - 802d4fc: 687b ldr r3, [r7, #4] - 802d4fe: 689b ldr r3, [r3, #8] + 802d53c: 687b ldr r3, [r7, #4] + 802d53e: 689b ldr r3, [r3, #8] hadc->Init.Overrun | - 802d500: 431a orrs r2, r3 + 802d540: 431a orrs r2, r3 ADC_CFGR_REG_DISCONTINUOUS((uint32_t)hadc->Init.DiscontinuousConvMode)); - 802d502: 687b ldr r3, [r7, #4] - 802d504: 7f1b ldrb r3, [r3, #28] - 802d506: 041b lsls r3, r3, #16 + 802d542: 687b ldr r3, [r7, #4] + 802d544: 7f1b ldrb r3, [r3, #28] + 802d546: 041b lsls r3, r3, #16 tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) | - 802d508: 4313 orrs r3, r2 - 802d50a: 61bb str r3, [r7, #24] + 802d548: 4313 orrs r3, r2 + 802d54a: 61bb str r3, [r7, #24] } #endif /* ADC_VER_V5_3 */ if (hadc->Init.DiscontinuousConvMode == ENABLE) - 802d50c: 687b ldr r3, [r7, #4] - 802d50e: 7f1b ldrb r3, [r3, #28] - 802d510: 2b01 cmp r3, #1 - 802d512: d106 bne.n 802d522 + 802d54c: 687b ldr r3, [r7, #4] + 802d54e: 7f1b ldrb r3, [r3, #28] + 802d550: 2b01 cmp r3, #1 + 802d552: d106 bne.n 802d562 { tmpCFGR |= ADC_CFGR_DISCONTINUOUS_NUM(hadc->Init.NbrOfDiscConversion); - 802d514: 687b ldr r3, [r7, #4] - 802d516: 6a1b ldr r3, [r3, #32] - 802d518: 3b01 subs r3, #1 - 802d51a: 045b lsls r3, r3, #17 - 802d51c: 69ba ldr r2, [r7, #24] - 802d51e: 4313 orrs r3, r2 - 802d520: 61bb str r3, [r7, #24] + 802d554: 687b ldr r3, [r7, #4] + 802d556: 6a1b ldr r3, [r3, #32] + 802d558: 3b01 subs r3, #1 + 802d55a: 045b lsls r3, r3, #17 + 802d55c: 69ba ldr r2, [r7, #24] + 802d55e: 4313 orrs r3, r2 + 802d560: 61bb str r3, [r7, #24] /* Enable external trigger if trigger selection is different of software */ /* start. */ /* Note: This configuration keeps the hardware feature of parameter */ /* ExternalTrigConvEdge "trigger edge none" equivalent to */ /* software start. */ if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START) - 802d522: 687b ldr r3, [r7, #4] - 802d524: 6a5b ldr r3, [r3, #36] ; 0x24 - 802d526: 2b00 cmp r3, #0 - 802d528: d009 beq.n 802d53e + 802d562: 687b ldr r3, [r7, #4] + 802d564: 6a5b ldr r3, [r3, #36] ; 0x24 + 802d566: 2b00 cmp r3, #0 + 802d568: d009 beq.n 802d57e { tmpCFGR |= ((hadc->Init.ExternalTrigConv & ADC_CFGR_EXTSEL) - 802d52a: 687b ldr r3, [r7, #4] - 802d52c: 6a5b ldr r3, [r3, #36] ; 0x24 - 802d52e: f403 7278 and.w r2, r3, #992 ; 0x3e0 + 802d56a: 687b ldr r3, [r7, #4] + 802d56c: 6a5b ldr r3, [r3, #36] ; 0x24 + 802d56e: f403 7278 and.w r2, r3, #992 ; 0x3e0 | hadc->Init.ExternalTrigConvEdge - 802d532: 687b ldr r3, [r7, #4] - 802d534: 6a9b ldr r3, [r3, #40] ; 0x28 - 802d536: 4313 orrs r3, r2 + 802d572: 687b ldr r3, [r7, #4] + 802d574: 6a9b ldr r3, [r3, #40] ; 0x28 + 802d576: 4313 orrs r3, r2 tmpCFGR |= ((hadc->Init.ExternalTrigConv & ADC_CFGR_EXTSEL) - 802d538: 69ba ldr r2, [r7, #24] - 802d53a: 4313 orrs r3, r2 - 802d53c: 61bb str r3, [r7, #24] + 802d578: 69ba ldr r2, [r7, #24] + 802d57a: 4313 orrs r3, r2 + 802d57c: 61bb str r3, [r7, #24] /* Update Configuration Register CFGR */ MODIFY_REG(hadc->Instance->CFGR, ADC_CFGR_FIELDS_1, tmpCFGR); } #else /* Update Configuration Register CFGR */ MODIFY_REG(hadc->Instance->CFGR, ADC_CFGR_FIELDS_1, tmpCFGR); - 802d53e: 687b ldr r3, [r7, #4] - 802d540: 681b ldr r3, [r3, #0] - 802d542: 68da ldr r2, [r3, #12] - 802d544: 4b2c ldr r3, [pc, #176] ; (802d5f8 ) - 802d546: 4013 ands r3, r2 - 802d548: 687a ldr r2, [r7, #4] - 802d54a: 6812 ldr r2, [r2, #0] - 802d54c: 69b9 ldr r1, [r7, #24] - 802d54e: 430b orrs r3, r1 - 802d550: 60d3 str r3, [r2, #12] + 802d57e: 687b ldr r3, [r7, #4] + 802d580: 681b ldr r3, [r3, #0] + 802d582: 68da ldr r2, [r3, #12] + 802d584: 4b2c ldr r3, [pc, #176] ; (802d638 ) + 802d586: 4013 ands r3, r2 + 802d588: 687a ldr r2, [r7, #4] + 802d58a: 6812 ldr r2, [r2, #0] + 802d58c: 69b9 ldr r1, [r7, #24] + 802d58e: 430b orrs r3, r1 + 802d590: 60d3 str r3, [r2, #12] /* Parameters that can be updated when ADC is disabled or enabled without */ /* conversion on going on regular and injected groups: */ /* - Conversion data management Init.ConversionDataManagement */ /* - LowPowerAutoWait feature Init.LowPowerAutoWait */ /* - Oversampling parameters Init.Oversampling */ tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->Instance); - 802d552: 687b ldr r3, [r7, #4] - 802d554: 681b ldr r3, [r3, #0] - 802d556: 4618 mov r0, r3 - 802d558: f7ff fed1 bl 802d2fe - 802d55c: 6138 str r0, [r7, #16] + 802d592: 687b ldr r3, [r7, #4] + 802d594: 681b ldr r3, [r3, #0] + 802d596: 4618 mov r0, r3 + 802d598: f7ff fed1 bl 802d33e + 802d59c: 6138 str r0, [r7, #16] tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->Instance); - 802d55e: 687b ldr r3, [r7, #4] - 802d560: 681b ldr r3, [r3, #0] - 802d562: 4618 mov r0, r3 - 802d564: f7ff fede bl 802d324 - 802d568: 60f8 str r0, [r7, #12] + 802d59e: 687b ldr r3, [r7, #4] + 802d5a0: 681b ldr r3, [r3, #0] + 802d5a2: 4618 mov r0, r3 + 802d5a4: f7ff fede bl 802d364 + 802d5a8: 60f8 str r0, [r7, #12] if ((tmp_adc_is_conversion_on_going_regular == 0UL) - 802d56a: 693b ldr r3, [r7, #16] - 802d56c: 2b00 cmp r3, #0 - 802d56e: d15f bne.n 802d630 + 802d5aa: 693b ldr r3, [r7, #16] + 802d5ac: 2b00 cmp r3, #0 + 802d5ae: d15f bne.n 802d670 && (tmp_adc_is_conversion_on_going_injected == 0UL) - 802d570: 68fb ldr r3, [r7, #12] - 802d572: 2b00 cmp r3, #0 - 802d574: d15c bne.n 802d630 + 802d5b0: 68fb ldr r3, [r7, #12] + 802d5b2: 2b00 cmp r3, #0 + 802d5b4: d15c bne.n 802d670 ADC_CFGR_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | ADC_CFGR_DMACONTREQ((uint32_t)hadc->Init.ConversionDataManagement)); } #else tmpCFGR = ( ADC_CFGR_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) | - 802d576: 687b ldr r3, [r7, #4] - 802d578: 7d1b ldrb r3, [r3, #20] - 802d57a: 039a lsls r2, r3, #14 + 802d5b6: 687b ldr r3, [r7, #4] + 802d5b8: 7d1b ldrb r3, [r3, #20] + 802d5ba: 039a lsls r2, r3, #14 ADC_CFGR_DMACONTREQ((uint32_t)hadc->Init.ConversionDataManagement)); - 802d57c: 687b ldr r3, [r7, #4] - 802d57e: 6adb ldr r3, [r3, #44] ; 0x2c + 802d5bc: 687b ldr r3, [r7, #4] + 802d5be: 6adb ldr r3, [r3, #44] ; 0x2c tmpCFGR = ( - 802d580: 4313 orrs r3, r2 - 802d582: 61bb str r3, [r7, #24] + 802d5c0: 4313 orrs r3, r2 + 802d5c2: 61bb str r3, [r7, #24] #endif MODIFY_REG(hadc->Instance->CFGR, ADC_CFGR_FIELDS_2, tmpCFGR); - 802d584: 687b ldr r3, [r7, #4] - 802d586: 681b ldr r3, [r3, #0] - 802d588: 68da ldr r2, [r3, #12] - 802d58a: 4b1c ldr r3, [pc, #112] ; (802d5fc ) - 802d58c: 4013 ands r3, r2 - 802d58e: 687a ldr r2, [r7, #4] - 802d590: 6812 ldr r2, [r2, #0] - 802d592: 69b9 ldr r1, [r7, #24] - 802d594: 430b orrs r3, r1 - 802d596: 60d3 str r3, [r2, #12] + 802d5c4: 687b ldr r3, [r7, #4] + 802d5c6: 681b ldr r3, [r3, #0] + 802d5c8: 68da ldr r2, [r3, #12] + 802d5ca: 4b1c ldr r3, [pc, #112] ; (802d63c ) + 802d5cc: 4013 ands r3, r2 + 802d5ce: 687a ldr r2, [r7, #4] + 802d5d0: 6812 ldr r2, [r2, #0] + 802d5d2: 69b9 ldr r1, [r7, #24] + 802d5d4: 430b orrs r3, r1 + 802d5d6: 60d3 str r3, [r2, #12] if (hadc->Init.OversamplingMode == ENABLE) - 802d598: 687b ldr r3, [r7, #4] - 802d59a: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 - 802d59e: 2b01 cmp r3, #1 - 802d5a0: d130 bne.n 802d604 + 802d5d8: 687b ldr r3, [r7, #4] + 802d5da: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 + 802d5de: 2b01 cmp r3, #1 + 802d5e0: d130 bne.n 802d644 #endif assert_param(IS_ADC_RIGHT_BIT_SHIFT(hadc->Init.Oversampling.RightBitShift)); assert_param(IS_ADC_TRIGGERED_OVERSAMPLING_MODE(hadc->Init.Oversampling.TriggeredMode)); assert_param(IS_ADC_REGOVERSAMPLING_MODE(hadc->Init.Oversampling.OversamplingStopReset)); if ((hadc->Init.ExternalTrigConv == ADC_SOFTWARE_START) - 802d5a2: 687b ldr r3, [r7, #4] - 802d5a4: 6a5b ldr r3, [r3, #36] ; 0x24 - 802d5a6: 2b00 cmp r3, #0 + 802d5e2: 687b ldr r3, [r7, #4] + 802d5e4: 6a5b ldr r3, [r3, #36] ; 0x24 + 802d5e6: 2b00 cmp r3, #0 /* - Oversampling Ratio */ /* - Right bit shift */ /* - Left bit shift */ /* - Triggered mode */ /* - Oversampling mode (continued/resumed) */ MODIFY_REG(hadc->Instance->CFGR2, ADC_CFGR2_FIELDS, - 802d5a8: 687b ldr r3, [r7, #4] - 802d5aa: 681b ldr r3, [r3, #0] - 802d5ac: 691a ldr r2, [r3, #16] - 802d5ae: 4b14 ldr r3, [pc, #80] ; (802d600 ) - 802d5b0: 4013 ands r3, r2 - 802d5b2: 687a ldr r2, [r7, #4] - 802d5b4: 6bd2 ldr r2, [r2, #60] ; 0x3c - 802d5b6: 3a01 subs r2, #1 - 802d5b8: 0411 lsls r1, r2, #16 - 802d5ba: 687a ldr r2, [r7, #4] - 802d5bc: 6c12 ldr r2, [r2, #64] ; 0x40 - 802d5be: 4311 orrs r1, r2 - 802d5c0: 687a ldr r2, [r7, #4] - 802d5c2: 6c52 ldr r2, [r2, #68] ; 0x44 - 802d5c4: 4311 orrs r1, r2 - 802d5c6: 687a ldr r2, [r7, #4] - 802d5c8: 6c92 ldr r2, [r2, #72] ; 0x48 - 802d5ca: 430a orrs r2, r1 - 802d5cc: 431a orrs r2, r3 - 802d5ce: 687b ldr r3, [r7, #4] - 802d5d0: 681b ldr r3, [r3, #0] - 802d5d2: f042 0201 orr.w r2, r2, #1 - 802d5d6: 611a str r2, [r3, #16] - 802d5d8: e01c b.n 802d614 - 802d5da: bf00 nop - 802d5dc: 24000118 .word 0x24000118 - 802d5e0: 053e2d63 .word 0x053e2d63 - 802d5e4: 40022000 .word 0x40022000 - 802d5e8: 40022100 .word 0x40022100 - 802d5ec: 58026000 .word 0x58026000 - 802d5f0: 40022300 .word 0x40022300 - 802d5f4: 58026300 .word 0x58026300 - 802d5f8: fff0c003 .word 0xfff0c003 - 802d5fc: ffffbffc .word 0xffffbffc - 802d600: fc00f81e .word 0xfc00f81e + 802d5e8: 687b ldr r3, [r7, #4] + 802d5ea: 681b ldr r3, [r3, #0] + 802d5ec: 691a ldr r2, [r3, #16] + 802d5ee: 4b14 ldr r3, [pc, #80] ; (802d640 ) + 802d5f0: 4013 ands r3, r2 + 802d5f2: 687a ldr r2, [r7, #4] + 802d5f4: 6bd2 ldr r2, [r2, #60] ; 0x3c + 802d5f6: 3a01 subs r2, #1 + 802d5f8: 0411 lsls r1, r2, #16 + 802d5fa: 687a ldr r2, [r7, #4] + 802d5fc: 6c12 ldr r2, [r2, #64] ; 0x40 + 802d5fe: 4311 orrs r1, r2 + 802d600: 687a ldr r2, [r7, #4] + 802d602: 6c52 ldr r2, [r2, #68] ; 0x44 + 802d604: 4311 orrs r1, r2 + 802d606: 687a ldr r2, [r7, #4] + 802d608: 6c92 ldr r2, [r2, #72] ; 0x48 + 802d60a: 430a orrs r2, r1 + 802d60c: 431a orrs r2, r3 + 802d60e: 687b ldr r3, [r7, #4] + 802d610: 681b ldr r3, [r3, #0] + 802d612: f042 0201 orr.w r2, r2, #1 + 802d616: 611a str r2, [r3, #16] + 802d618: e01c b.n 802d654 + 802d61a: bf00 nop + 802d61c: 24000118 .word 0x24000118 + 802d620: 053e2d63 .word 0x053e2d63 + 802d624: 40022000 .word 0x40022000 + 802d628: 40022100 .word 0x40022100 + 802d62c: 58026000 .word 0x58026000 + 802d630: 40022300 .word 0x40022300 + 802d634: 58026300 .word 0x58026300 + 802d638: fff0c003 .word 0xfff0c003 + 802d63c: ffffbffc .word 0xffffbffc + 802d640: fc00f81e .word 0xfc00f81e } else { /* Disable ADC oversampling scope on ADC group regular */ CLEAR_BIT(hadc->Instance->CFGR2, ADC_CFGR2_ROVSE); - 802d604: 687b ldr r3, [r7, #4] - 802d606: 681b ldr r3, [r3, #0] - 802d608: 691a ldr r2, [r3, #16] - 802d60a: 687b ldr r3, [r7, #4] - 802d60c: 681b ldr r3, [r3, #0] - 802d60e: f022 0201 bic.w r2, r2, #1 - 802d612: 611a str r2, [r3, #16] + 802d644: 687b ldr r3, [r7, #4] + 802d646: 681b ldr r3, [r3, #0] + 802d648: 691a ldr r2, [r3, #16] + 802d64a: 687b ldr r3, [r7, #4] + 802d64c: 681b ldr r3, [r3, #0] + 802d64e: f022 0201 bic.w r2, r2, #1 + 802d652: 611a str r2, [r3, #16] } /* Set the LeftShift parameter: it is applied to the final result with or without oversampling */ MODIFY_REG(hadc->Instance->CFGR2, ADC_CFGR2_LSHIFT, hadc->Init.LeftBitShift); - 802d614: 687b ldr r3, [r7, #4] - 802d616: 681b ldr r3, [r3, #0] - 802d618: 691b ldr r3, [r3, #16] - 802d61a: f023 4170 bic.w r1, r3, #4026531840 ; 0xf0000000 - 802d61e: 687b ldr r3, [r7, #4] - 802d620: 6b5a ldr r2, [r3, #52] ; 0x34 - 802d622: 687b ldr r3, [r7, #4] - 802d624: 681b ldr r3, [r3, #0] - 802d626: 430a orrs r2, r1 - 802d628: 611a str r2, [r3, #16] + 802d654: 687b ldr r3, [r7, #4] + 802d656: 681b ldr r3, [r3, #0] + 802d658: 691b ldr r3, [r3, #16] + 802d65a: f023 4170 bic.w r1, r3, #4026531840 ; 0xf0000000 + 802d65e: 687b ldr r3, [r7, #4] + 802d660: 6b5a ldr r2, [r3, #52] ; 0x34 + 802d662: 687b ldr r3, [r7, #4] + 802d664: 681b ldr r3, [r3, #0] + 802d666: 430a orrs r2, r1 + 802d668: 611a str r2, [r3, #16] /* Configure the BOOST Mode */ ADC_ConfigureBoostMode(hadc); } #else /* Configure the BOOST Mode */ ADC_ConfigureBoostMode(hadc); - 802d62a: 6878 ldr r0, [r7, #4] - 802d62c: f000 fb80 bl 802dd30 + 802d66a: 6878 ldr r0, [r7, #4] + 802d66c: f000 fb80 bl 802dd70 /* Note: Scan mode is not present by hardware on this device, but */ /* emulated by software for alignment over all STM32 devices. */ /* - if scan mode is enabled, regular channels sequence length is set to */ /* parameter "NbrOfConversion". */ if (hadc->Init.ScanConvMode == ADC_SCAN_ENABLE) - 802d630: 687b ldr r3, [r7, #4] - 802d632: 68db ldr r3, [r3, #12] - 802d634: 2b01 cmp r3, #1 - 802d636: d10c bne.n 802d652 + 802d670: 687b ldr r3, [r7, #4] + 802d672: 68db ldr r3, [r3, #12] + 802d674: 2b01 cmp r3, #1 + 802d676: d10c bne.n 802d692 { /* Set number of ranks in regular group sequencer */ MODIFY_REG(hadc->Instance->SQR1, ADC_SQR1_L, (hadc->Init.NbrOfConversion - (uint8_t)1)); - 802d638: 687b ldr r3, [r7, #4] - 802d63a: 681b ldr r3, [r3, #0] - 802d63c: 6b1b ldr r3, [r3, #48] ; 0x30 - 802d63e: f023 010f bic.w r1, r3, #15 - 802d642: 687b ldr r3, [r7, #4] - 802d644: 699b ldr r3, [r3, #24] - 802d646: 1e5a subs r2, r3, #1 - 802d648: 687b ldr r3, [r7, #4] - 802d64a: 681b ldr r3, [r3, #0] - 802d64c: 430a orrs r2, r1 - 802d64e: 631a str r2, [r3, #48] ; 0x30 - 802d650: e007 b.n 802d662 + 802d678: 687b ldr r3, [r7, #4] + 802d67a: 681b ldr r3, [r3, #0] + 802d67c: 6b1b ldr r3, [r3, #48] ; 0x30 + 802d67e: f023 010f bic.w r1, r3, #15 + 802d682: 687b ldr r3, [r7, #4] + 802d684: 699b ldr r3, [r3, #24] + 802d686: 1e5a subs r2, r3, #1 + 802d688: 687b ldr r3, [r7, #4] + 802d68a: 681b ldr r3, [r3, #0] + 802d68c: 430a orrs r2, r1 + 802d68e: 631a str r2, [r3, #48] ; 0x30 + 802d690: e007 b.n 802d6a2 } else { CLEAR_BIT(hadc->Instance->SQR1, ADC_SQR1_L); - 802d652: 687b ldr r3, [r7, #4] - 802d654: 681b ldr r3, [r3, #0] - 802d656: 6b1a ldr r2, [r3, #48] ; 0x30 - 802d658: 687b ldr r3, [r7, #4] - 802d65a: 681b ldr r3, [r3, #0] - 802d65c: f022 020f bic.w r2, r2, #15 - 802d660: 631a str r2, [r3, #48] ; 0x30 + 802d692: 687b ldr r3, [r7, #4] + 802d694: 681b ldr r3, [r3, #0] + 802d696: 6b1a ldr r2, [r3, #48] ; 0x30 + 802d698: 687b ldr r3, [r7, #4] + 802d69a: 681b ldr r3, [r3, #0] + 802d69c: f022 020f bic.w r2, r2, #15 + 802d6a0: 631a str r2, [r3, #48] ; 0x30 } /* Initialize the ADC state */ /* Clear HAL_ADC_STATE_BUSY_INTERNAL bit, set HAL_ADC_STATE_READY bit */ ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_READY); - 802d662: 687b ldr r3, [r7, #4] - 802d664: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d666: f023 0303 bic.w r3, r3, #3 - 802d66a: f043 0201 orr.w r2, r3, #1 - 802d66e: 687b ldr r3, [r7, #4] - 802d670: 655a str r2, [r3, #84] ; 0x54 - 802d672: e007 b.n 802d684 + 802d6a2: 687b ldr r3, [r7, #4] + 802d6a4: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d6a6: f023 0303 bic.w r3, r3, #3 + 802d6aa: f043 0201 orr.w r2, r3, #1 + 802d6ae: 687b ldr r3, [r7, #4] + 802d6b0: 655a str r2, [r3, #84] ; 0x54 + 802d6b2: e007 b.n 802d6c4 } else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL); - 802d674: 687b ldr r3, [r7, #4] - 802d676: 6d5b ldr r3, [r3, #84] ; 0x54 - 802d678: f043 0210 orr.w r2, r3, #16 - 802d67c: 687b ldr r3, [r7, #4] - 802d67e: 655a str r2, [r3, #84] ; 0x54 + 802d6b4: 687b ldr r3, [r7, #4] + 802d6b6: 6d5b ldr r3, [r3, #84] ; 0x54 + 802d6b8: f043 0210 orr.w r2, r3, #16 + 802d6bc: 687b ldr r3, [r7, #4] + 802d6be: 655a str r2, [r3, #84] ; 0x54 tmp_hal_status = HAL_ERROR; - 802d680: 2301 movs r3, #1 - 802d682: 77fb strb r3, [r7, #31] + 802d6c0: 2301 movs r3, #1 + 802d6c2: 77fb strb r3, [r7, #31] } /* Return function status */ return tmp_hal_status; - 802d684: 7ffb ldrb r3, [r7, #31] + 802d6c4: 7ffb ldrb r3, [r7, #31] } - 802d686: 4618 mov r0, r3 - 802d688: 3724 adds r7, #36 ; 0x24 - 802d68a: 46bd mov sp, r7 - 802d68c: bd90 pop {r4, r7, pc} - 802d68e: bf00 nop + 802d6c6: 4618 mov r0, r3 + 802d6c8: 3724 adds r7, #36 ; 0x24 + 802d6ca: 46bd mov sp, r7 + 802d6cc: bd90 pop {r4, r7, pc} + 802d6ce: bf00 nop -0802d690 : +0802d6d0 : * @param hadc ADC handle * @param sConfig Structure of ADC channel assigned to ADC group regular. * @retval HAL status */ HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig) { - 802d690: b590 push {r4, r7, lr} - 802d692: b0a1 sub sp, #132 ; 0x84 - 802d694: af00 add r7, sp, #0 - 802d696: 6078 str r0, [r7, #4] - 802d698: 6039 str r1, [r7, #0] + 802d6d0: b590 push {r4, r7, lr} + 802d6d2: b0a1 sub sp, #132 ; 0x84 + 802d6d4: af00 add r7, sp, #0 + 802d6d6: 6078 str r0, [r7, #4] + 802d6d8: 6039 str r1, [r7, #0] HAL_StatusTypeDef tmp_hal_status = HAL_OK; - 802d69a: 2300 movs r3, #0 - 802d69c: f887 307f strb.w r3, [r7, #127] ; 0x7f + 802d6da: 2300 movs r3, #0 + 802d6dc: f887 307f strb.w r3, [r7, #127] ; 0x7f uint32_t tmpOffsetShifted; uint32_t tmp_config_internal_channel; __IO uint32_t wait_loop_index = 0; - 802d6a0: 2300 movs r3, #0 - 802d6a2: 60bb str r3, [r7, #8] + 802d6e0: 2300 movs r3, #0 + 802d6e2: 60bb str r3, [r7, #8] /* if ROVSE is set, the value of the OFFSETy_EN bit in ADCx_OFRy register is ignored (considered as reset) */ assert_param(!((sConfig->OffsetNumber != ADC_OFFSET_NONE) && (hadc->Init.OversamplingMode == ENABLE))); /* Verification of channel number */ if (sConfig->SingleDiff != ADC_DIFFERENTIAL_ENDED) - 802d6a4: 683b ldr r3, [r7, #0] - 802d6a6: 68db ldr r3, [r3, #12] - 802d6a8: 4a9d ldr r2, [pc, #628] ; (802d920 ) - 802d6aa: 4293 cmp r3, r2 + 802d6e4: 683b ldr r3, [r7, #0] + 802d6e6: 68db ldr r3, [r3, #12] + 802d6e8: 4a9d ldr r2, [pc, #628] ; (802d960 ) + 802d6ea: 4293 cmp r3, r2 } #endif } /* Process locked */ __HAL_LOCK(hadc); - 802d6ac: 687b ldr r3, [r7, #4] - 802d6ae: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 - 802d6b2: 2b01 cmp r3, #1 - 802d6b4: d101 bne.n 802d6ba - 802d6b6: 2302 movs r3, #2 - 802d6b8: e321 b.n 802dcfe - 802d6ba: 687b ldr r3, [r7, #4] - 802d6bc: 2201 movs r2, #1 - 802d6be: f883 2050 strb.w r2, [r3, #80] ; 0x50 + 802d6ec: 687b ldr r3, [r7, #4] + 802d6ee: f893 3050 ldrb.w r3, [r3, #80] ; 0x50 + 802d6f2: 2b01 cmp r3, #1 + 802d6f4: d101 bne.n 802d6fa + 802d6f6: 2302 movs r3, #2 + 802d6f8: e321 b.n 802dd3e + 802d6fa: 687b ldr r3, [r7, #4] + 802d6fc: 2201 movs r2, #1 + 802d6fe: f883 2050 strb.w r2, [r3, #80] ; 0x50 /* Parameters update conditioned to ADC state: */ /* Parameters that can be updated when ADC is disabled or enabled without */ /* conversion on going on regular group: */ /* - Channel number */ /* - Channel rank */ if (LL_ADC_REG_IsConversionOngoing(hadc->Instance) == 0UL) - 802d6c2: 687b ldr r3, [r7, #4] - 802d6c4: 681b ldr r3, [r3, #0] - 802d6c6: 4618 mov r0, r3 - 802d6c8: f7ff fe19 bl 802d2fe - 802d6cc: 4603 mov r3, r0 - 802d6ce: 2b00 cmp r3, #0 - 802d6d0: f040 8306 bne.w 802dce0 + 802d702: 687b ldr r3, [r7, #4] + 802d704: 681b ldr r3, [r3, #0] + 802d706: 4618 mov r0, r3 + 802d708: f7ff fe19 bl 802d33e + 802d70c: 4603 mov r3, r0 + 802d70e: 2b00 cmp r3, #0 + 802d710: f040 8306 bne.w 802dd20 /* ADC channels preselection */ hadc->Instance->PCSEL_RES0 |= (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) & 0x1FUL)); } #else /* ADC channels preselection */ hadc->Instance->PCSEL |= (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) & 0x1FUL)); - 802d6d4: 683b ldr r3, [r7, #0] - 802d6d6: 681b ldr r3, [r3, #0] - 802d6d8: f3c3 0313 ubfx r3, r3, #0, #20 - 802d6dc: 2b00 cmp r3, #0 - 802d6de: d108 bne.n 802d6f2 - 802d6e0: 683b ldr r3, [r7, #0] - 802d6e2: 681b ldr r3, [r3, #0] - 802d6e4: 0e9b lsrs r3, r3, #26 - 802d6e6: f003 031f and.w r3, r3, #31 - 802d6ea: 2201 movs r2, #1 - 802d6ec: fa02 f303 lsl.w r3, r2, r3 - 802d6f0: e016 b.n 802d720 - 802d6f2: 683b ldr r3, [r7, #0] - 802d6f4: 681b ldr r3, [r3, #0] - 802d6f6: 667b str r3, [r7, #100] ; 0x64 + 802d714: 683b ldr r3, [r7, #0] + 802d716: 681b ldr r3, [r3, #0] + 802d718: f3c3 0313 ubfx r3, r3, #0, #20 + 802d71c: 2b00 cmp r3, #0 + 802d71e: d108 bne.n 802d732 + 802d720: 683b ldr r3, [r7, #0] + 802d722: 681b ldr r3, [r3, #0] + 802d724: 0e9b lsrs r3, r3, #26 + 802d726: f003 031f and.w r3, r3, #31 + 802d72a: 2201 movs r2, #1 + 802d72c: fa02 f303 lsl.w r3, r2, r3 + 802d730: e016 b.n 802d760 + 802d732: 683b ldr r3, [r7, #0] + 802d734: 681b ldr r3, [r3, #0] + 802d736: 667b str r3, [r7, #100] ; 0x64 uint32_t result; #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802d6f8: 6e7b ldr r3, [r7, #100] ; 0x64 - 802d6fa: fa93 f3a3 rbit r3, r3 - 802d6fe: 663b str r3, [r7, #96] ; 0x60 + 802d738: 6e7b ldr r3, [r7, #100] ; 0x64 + 802d73a: fa93 f3a3 rbit r3, r3 + 802d73e: 663b str r3, [r7, #96] ; 0x60 result |= value & 1U; s--; } result <<= s; /* shift when v's highest bits are zero */ #endif return result; - 802d700: 6e3b ldr r3, [r7, #96] ; 0x60 - 802d702: 66bb str r3, [r7, #104] ; 0x68 + 802d740: 6e3b ldr r3, [r7, #96] ; 0x60 + 802d742: 66bb str r3, [r7, #104] ; 0x68 optimisations using the logic "value was passed to __builtin_clz, so it is non-zero". ARM GCC 7.3 and possibly earlier will optimise this test away, leaving a single CLZ instruction. */ if (value == 0U) - 802d704: 6ebb ldr r3, [r7, #104] ; 0x68 - 802d706: 2b00 cmp r3, #0 - 802d708: d101 bne.n 802d70e + 802d744: 6ebb ldr r3, [r7, #104] ; 0x68 + 802d746: 2b00 cmp r3, #0 + 802d748: d101 bne.n 802d74e { return 32U; - 802d70a: 2320 movs r3, #32 - 802d70c: e003 b.n 802d716 + 802d74a: 2320 movs r3, #32 + 802d74c: e003 b.n 802d756 } return __builtin_clz(value); - 802d70e: 6ebb ldr r3, [r7, #104] ; 0x68 - 802d710: fab3 f383 clz r3, r3 - 802d714: b2db uxtb r3, r3 - 802d716: f003 031f and.w r3, r3, #31 - 802d71a: 2201 movs r2, #1 - 802d71c: fa02 f303 lsl.w r3, r2, r3 - 802d720: 687a ldr r2, [r7, #4] - 802d722: 6812 ldr r2, [r2, #0] - 802d724: 69d1 ldr r1, [r2, #28] - 802d726: 687a ldr r2, [r7, #4] - 802d728: 6812 ldr r2, [r2, #0] - 802d72a: 430b orrs r3, r1 - 802d72c: 61d3 str r3, [r2, #28] + 802d74e: 6ebb ldr r3, [r7, #104] ; 0x68 + 802d750: fab3 f383 clz r3, r3 + 802d754: b2db uxtb r3, r3 + 802d756: f003 031f and.w r3, r3, #31 + 802d75a: 2201 movs r2, #1 + 802d75c: fa02 f303 lsl.w r3, r2, r3 + 802d760: 687a ldr r2, [r7, #4] + 802d762: 6812 ldr r2, [r2, #0] + 802d764: 69d1 ldr r1, [r2, #28] + 802d766: 687a ldr r2, [r7, #4] + 802d768: 6812 ldr r2, [r2, #0] + 802d76a: 430b orrs r3, r1 + 802d76c: 61d3 str r3, [r2, #28] #endif /* ADC_VER_V5_V90 */ /* Set ADC group regular sequence: channel on the selected scan sequence rank */ LL_ADC_REG_SetSequencerRanks(hadc->Instance, sConfig->Rank, sConfig->Channel); - 802d72e: 687b ldr r3, [r7, #4] - 802d730: 6818 ldr r0, [r3, #0] - 802d732: 683b ldr r3, [r7, #0] - 802d734: 6859 ldr r1, [r3, #4] - 802d736: 683b ldr r3, [r7, #0] - 802d738: 681b ldr r3, [r3, #0] - 802d73a: 461a mov r2, r3 - 802d73c: f7ff fd02 bl 802d144 + 802d76e: 687b ldr r3, [r7, #4] + 802d770: 6818 ldr r0, [r3, #0] + 802d772: 683b ldr r3, [r7, #0] + 802d774: 6859 ldr r1, [r3, #4] + 802d776: 683b ldr r3, [r7, #0] + 802d778: 681b ldr r3, [r3, #0] + 802d77a: 461a mov r2, r3 + 802d77c: f7ff fd02 bl 802d184 /* Parameters update conditioned to ADC state: */ /* Parameters that can be updated when ADC is disabled or enabled without */ /* conversion on going on regular group: */ /* - Channel sampling time */ /* - Channel offset */ tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->Instance); - 802d740: 687b ldr r3, [r7, #4] - 802d742: 681b ldr r3, [r3, #0] - 802d744: 4618 mov r0, r3 - 802d746: f7ff fdda bl 802d2fe - 802d74a: 67b8 str r0, [r7, #120] ; 0x78 + 802d780: 687b ldr r3, [r7, #4] + 802d782: 681b ldr r3, [r3, #0] + 802d784: 4618 mov r0, r3 + 802d786: f7ff fdda bl 802d33e + 802d78a: 67b8 str r0, [r7, #120] ; 0x78 tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->Instance); - 802d74c: 687b ldr r3, [r7, #4] - 802d74e: 681b ldr r3, [r3, #0] - 802d750: 4618 mov r0, r3 - 802d752: f7ff fde7 bl 802d324 - 802d756: 6778 str r0, [r7, #116] ; 0x74 + 802d78c: 687b ldr r3, [r7, #4] + 802d78e: 681b ldr r3, [r3, #0] + 802d790: 4618 mov r0, r3 + 802d792: f7ff fde7 bl 802d364 + 802d796: 6778 str r0, [r7, #116] ; 0x74 if ((tmp_adc_is_conversion_on_going_regular == 0UL) - 802d758: 6fbb ldr r3, [r7, #120] ; 0x78 - 802d75a: 2b00 cmp r3, #0 - 802d75c: f040 80b3 bne.w 802d8c6 + 802d798: 6fbb ldr r3, [r7, #120] ; 0x78 + 802d79a: 2b00 cmp r3, #0 + 802d79c: f040 80b3 bne.w 802d906 && (tmp_adc_is_conversion_on_going_injected == 0UL) - 802d760: 6f7b ldr r3, [r7, #116] ; 0x74 - 802d762: 2b00 cmp r3, #0 - 802d764: f040 80af bne.w 802d8c6 + 802d7a0: 6f7b ldr r3, [r7, #116] ; 0x74 + 802d7a2: 2b00 cmp r3, #0 + 802d7a4: f040 80af bne.w 802d906 ) { /* Set sampling time of the selected ADC channel */ LL_ADC_SetChannelSamplingTime(hadc->Instance, sConfig->Channel, sConfig->SamplingTime); - 802d768: 687b ldr r3, [r7, #4] - 802d76a: 6818 ldr r0, [r3, #0] - 802d76c: 683b ldr r3, [r7, #0] - 802d76e: 6819 ldr r1, [r3, #0] - 802d770: 683b ldr r3, [r7, #0] - 802d772: 689b ldr r3, [r3, #8] - 802d774: 461a mov r2, r3 - 802d776: f7ff fd11 bl 802d19c + 802d7a8: 687b ldr r3, [r7, #4] + 802d7aa: 6818 ldr r0, [r3, #0] + 802d7ac: 683b ldr r3, [r7, #0] + 802d7ae: 6819 ldr r1, [r3, #0] + 802d7b0: 683b ldr r3, [r7, #0] + 802d7b2: 689b ldr r3, [r3, #8] + 802d7b4: 461a mov r2, r3 + 802d7b6: f7ff fd11 bl 802d1dc tmpOffsetShifted = ADC3_OFFSET_SHIFT_RESOLUTION(hadc, (uint32_t)sConfig->Offset); } else #endif /* ADC_VER_V5_V90 */ { tmpOffsetShifted = ADC_OFFSET_SHIFT_RESOLUTION(hadc, (uint32_t)sConfig->Offset); - 802d77a: 4b6a ldr r3, [pc, #424] ; (802d924 ) - 802d77c: 681b ldr r3, [r3, #0] - 802d77e: f003 4370 and.w r3, r3, #4026531840 ; 0xf0000000 - 802d782: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 802d786: d10b bne.n 802d7a0 - 802d788: 683b ldr r3, [r7, #0] - 802d78a: 695a ldr r2, [r3, #20] - 802d78c: 687b ldr r3, [r7, #4] - 802d78e: 681b ldr r3, [r3, #0] - 802d790: 68db ldr r3, [r3, #12] - 802d792: 089b lsrs r3, r3, #2 - 802d794: f003 0307 and.w r3, r3, #7 - 802d798: 005b lsls r3, r3, #1 - 802d79a: fa02 f303 lsl.w r3, r2, r3 - 802d79e: e01d b.n 802d7dc - 802d7a0: 687b ldr r3, [r7, #4] - 802d7a2: 681b ldr r3, [r3, #0] - 802d7a4: 68db ldr r3, [r3, #12] - 802d7a6: f003 0310 and.w r3, r3, #16 - 802d7aa: 2b00 cmp r3, #0 - 802d7ac: d10b bne.n 802d7c6 - 802d7ae: 683b ldr r3, [r7, #0] - 802d7b0: 695a ldr r2, [r3, #20] - 802d7b2: 687b ldr r3, [r7, #4] - 802d7b4: 681b ldr r3, [r3, #0] - 802d7b6: 68db ldr r3, [r3, #12] - 802d7b8: 089b lsrs r3, r3, #2 - 802d7ba: f003 0307 and.w r3, r3, #7 - 802d7be: 005b lsls r3, r3, #1 - 802d7c0: fa02 f303 lsl.w r3, r2, r3 - 802d7c4: e00a b.n 802d7dc - 802d7c6: 683b ldr r3, [r7, #0] - 802d7c8: 695a ldr r2, [r3, #20] - 802d7ca: 687b ldr r3, [r7, #4] - 802d7cc: 681b ldr r3, [r3, #0] - 802d7ce: 68db ldr r3, [r3, #12] - 802d7d0: 089b lsrs r3, r3, #2 - 802d7d2: f003 0304 and.w r3, r3, #4 - 802d7d6: 005b lsls r3, r3, #1 - 802d7d8: fa02 f303 lsl.w r3, r2, r3 - 802d7dc: 673b str r3, [r7, #112] ; 0x70 + 802d7ba: 4b6a ldr r3, [pc, #424] ; (802d964 ) + 802d7bc: 681b ldr r3, [r3, #0] + 802d7be: f003 4370 and.w r3, r3, #4026531840 ; 0xf0000000 + 802d7c2: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 802d7c6: d10b bne.n 802d7e0 + 802d7c8: 683b ldr r3, [r7, #0] + 802d7ca: 695a ldr r2, [r3, #20] + 802d7cc: 687b ldr r3, [r7, #4] + 802d7ce: 681b ldr r3, [r3, #0] + 802d7d0: 68db ldr r3, [r3, #12] + 802d7d2: 089b lsrs r3, r3, #2 + 802d7d4: f003 0307 and.w r3, r3, #7 + 802d7d8: 005b lsls r3, r3, #1 + 802d7da: fa02 f303 lsl.w r3, r2, r3 + 802d7de: e01d b.n 802d81c + 802d7e0: 687b ldr r3, [r7, #4] + 802d7e2: 681b ldr r3, [r3, #0] + 802d7e4: 68db ldr r3, [r3, #12] + 802d7e6: f003 0310 and.w r3, r3, #16 + 802d7ea: 2b00 cmp r3, #0 + 802d7ec: d10b bne.n 802d806 + 802d7ee: 683b ldr r3, [r7, #0] + 802d7f0: 695a ldr r2, [r3, #20] + 802d7f2: 687b ldr r3, [r7, #4] + 802d7f4: 681b ldr r3, [r3, #0] + 802d7f6: 68db ldr r3, [r3, #12] + 802d7f8: 089b lsrs r3, r3, #2 + 802d7fa: f003 0307 and.w r3, r3, #7 + 802d7fe: 005b lsls r3, r3, #1 + 802d800: fa02 f303 lsl.w r3, r2, r3 + 802d804: e00a b.n 802d81c + 802d806: 683b ldr r3, [r7, #0] + 802d808: 695a ldr r2, [r3, #20] + 802d80a: 687b ldr r3, [r7, #4] + 802d80c: 681b ldr r3, [r3, #0] + 802d80e: 68db ldr r3, [r3, #12] + 802d810: 089b lsrs r3, r3, #2 + 802d812: f003 0304 and.w r3, r3, #4 + 802d816: 005b lsls r3, r3, #1 + 802d818: fa02 f303 lsl.w r3, r2, r3 + 802d81c: 673b str r3, [r7, #112] ; 0x70 } if (sConfig->OffsetNumber != ADC_OFFSET_NONE) - 802d7de: 683b ldr r3, [r7, #0] - 802d7e0: 691b ldr r3, [r3, #16] - 802d7e2: 2b04 cmp r3, #4 - 802d7e4: d027 beq.n 802d836 + 802d81e: 683b ldr r3, [r7, #0] + 802d820: 691b ldr r3, [r3, #16] + 802d822: 2b04 cmp r3, #4 + 802d824: d027 beq.n 802d876 { /* Set ADC selected offset number */ LL_ADC_SetOffset(hadc->Instance, sConfig->OffsetNumber, sConfig->Channel, tmpOffsetShifted); - 802d7e6: 687b ldr r3, [r7, #4] - 802d7e8: 6818 ldr r0, [r3, #0] - 802d7ea: 683b ldr r3, [r7, #0] - 802d7ec: 6919 ldr r1, [r3, #16] - 802d7ee: 683b ldr r3, [r7, #0] - 802d7f0: 681a ldr r2, [r3, #0] - 802d7f2: 6f3b ldr r3, [r7, #112] ; 0x70 - 802d7f4: f7ff fc52 bl 802d09c + 802d826: 687b ldr r3, [r7, #4] + 802d828: 6818 ldr r0, [r3, #0] + 802d82a: 683b ldr r3, [r7, #0] + 802d82c: 6919 ldr r1, [r3, #16] + 802d82e: 683b ldr r3, [r7, #0] + 802d830: 681a ldr r2, [r3, #0] + 802d832: 6f3b ldr r3, [r7, #112] ; 0x70 + 802d834: f7ff fc52 bl 802d0dc else #endif /* ADC_VER_V5_V90 */ { assert_param(IS_FUNCTIONAL_STATE(sConfig->OffsetSignedSaturation)); /* Set ADC selected offset signed saturation */ LL_ADC_SetOffsetSignedSaturation(hadc->Instance, sConfig->OffsetNumber, (sConfig->OffsetSignedSaturation == ENABLE) ? LL_ADC_OFFSET_SIGNED_SATURATION_ENABLE : LL_ADC_OFFSET_SIGNED_SATURATION_DISABLE); - 802d7f8: 687b ldr r3, [r7, #4] - 802d7fa: 6818 ldr r0, [r3, #0] - 802d7fc: 683b ldr r3, [r7, #0] - 802d7fe: 6919 ldr r1, [r3, #16] - 802d800: 683b ldr r3, [r7, #0] - 802d802: 7e5b ldrb r3, [r3, #25] - 802d804: 2b01 cmp r3, #1 - 802d806: d102 bne.n 802d80e - 802d808: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 - 802d80c: e000 b.n 802d810 - 802d80e: 2300 movs r3, #0 - 802d810: 461a mov r2, r3 - 802d812: f7ff fc7c bl 802d10e + 802d838: 687b ldr r3, [r7, #4] + 802d83a: 6818 ldr r0, [r3, #0] + 802d83c: 683b ldr r3, [r7, #0] + 802d83e: 6919 ldr r1, [r3, #16] + 802d840: 683b ldr r3, [r7, #0] + 802d842: 7e5b ldrb r3, [r3, #25] + 802d844: 2b01 cmp r3, #1 + 802d846: d102 bne.n 802d84e + 802d848: f04f 4300 mov.w r3, #2147483648 ; 0x80000000 + 802d84c: e000 b.n 802d850 + 802d84e: 2300 movs r3, #0 + 802d850: 461a mov r2, r3 + 802d852: f7ff fc7c bl 802d14e assert_param(IS_FUNCTIONAL_STATE(sConfig->OffsetRightShift)); /* Set ADC selected offset right shift */ LL_ADC_SetDataRightShift(hadc->Instance, sConfig->OffsetNumber, (sConfig->OffsetRightShift == ENABLE) ? LL_ADC_OFFSET_RSHIFT_ENABLE : LL_ADC_OFFSET_RSHIFT_DISABLE); - 802d816: 687b ldr r3, [r7, #4] - 802d818: 6818 ldr r0, [r3, #0] - 802d81a: 683b ldr r3, [r7, #0] - 802d81c: 6919 ldr r1, [r3, #16] - 802d81e: 683b ldr r3, [r7, #0] - 802d820: 7e1b ldrb r3, [r3, #24] - 802d822: 2b01 cmp r3, #1 - 802d824: d102 bne.n 802d82c - 802d826: f44f 6300 mov.w r3, #2048 ; 0x800 - 802d82a: e000 b.n 802d82e - 802d82c: 2300 movs r3, #0 - 802d82e: 461a mov r2, r3 - 802d830: f7ff fc54 bl 802d0dc - 802d834: e047 b.n 802d8c6 + 802d856: 687b ldr r3, [r7, #4] + 802d858: 6818 ldr r0, [r3, #0] + 802d85a: 683b ldr r3, [r7, #0] + 802d85c: 6919 ldr r1, [r3, #16] + 802d85e: 683b ldr r3, [r7, #0] + 802d860: 7e1b ldrb r3, [r3, #24] + 802d862: 2b01 cmp r3, #1 + 802d864: d102 bne.n 802d86c + 802d866: f44f 6300 mov.w r3, #2048 ; 0x800 + 802d86a: e000 b.n 802d86e + 802d86c: 2300 movs r3, #0 + 802d86e: 461a mov r2, r3 + 802d870: f7ff fc54 bl 802d11c + 802d874: e047 b.n 802d906 } } else #endif /* ADC_VER_V5_V90 */ { if (((hadc->Instance->OFR1) & ADC_OFR1_OFFSET1_CH) == ADC_OFR_CHANNEL(sConfig->Channel)) - 802d836: 687b ldr r3, [r7, #4] - 802d838: 681b ldr r3, [r3, #0] - 802d83a: 6e1b ldr r3, [r3, #96] ; 0x60 - 802d83c: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d840: 683b ldr r3, [r7, #0] - 802d842: 681b ldr r3, [r3, #0] - 802d844: 069b lsls r3, r3, #26 - 802d846: 429a cmp r2, r3 - 802d848: d107 bne.n 802d85a + 802d876: 687b ldr r3, [r7, #4] + 802d878: 681b ldr r3, [r3, #0] + 802d87a: 6e1b ldr r3, [r3, #96] ; 0x60 + 802d87c: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d880: 683b ldr r3, [r7, #0] + 802d882: 681b ldr r3, [r3, #0] + 802d884: 069b lsls r3, r3, #26 + 802d886: 429a cmp r2, r3 + 802d888: d107 bne.n 802d89a { CLEAR_BIT(hadc->Instance->OFR1, ADC_OFR1_SSATE); - 802d84a: 687b ldr r3, [r7, #4] - 802d84c: 681b ldr r3, [r3, #0] - 802d84e: 6e1a ldr r2, [r3, #96] ; 0x60 - 802d850: 687b ldr r3, [r7, #4] - 802d852: 681b ldr r3, [r3, #0] - 802d854: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 - 802d858: 661a str r2, [r3, #96] ; 0x60 + 802d88a: 687b ldr r3, [r7, #4] + 802d88c: 681b ldr r3, [r3, #0] + 802d88e: 6e1a ldr r2, [r3, #96] ; 0x60 + 802d890: 687b ldr r3, [r7, #4] + 802d892: 681b ldr r3, [r3, #0] + 802d894: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 802d898: 661a str r2, [r3, #96] ; 0x60 } if (((hadc->Instance->OFR2) & ADC_OFR2_OFFSET2_CH) == ADC_OFR_CHANNEL(sConfig->Channel)) - 802d85a: 687b ldr r3, [r7, #4] - 802d85c: 681b ldr r3, [r3, #0] - 802d85e: 6e5b ldr r3, [r3, #100] ; 0x64 - 802d860: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d864: 683b ldr r3, [r7, #0] - 802d866: 681b ldr r3, [r3, #0] - 802d868: 069b lsls r3, r3, #26 - 802d86a: 429a cmp r2, r3 - 802d86c: d107 bne.n 802d87e + 802d89a: 687b ldr r3, [r7, #4] + 802d89c: 681b ldr r3, [r3, #0] + 802d89e: 6e5b ldr r3, [r3, #100] ; 0x64 + 802d8a0: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d8a4: 683b ldr r3, [r7, #0] + 802d8a6: 681b ldr r3, [r3, #0] + 802d8a8: 069b lsls r3, r3, #26 + 802d8aa: 429a cmp r2, r3 + 802d8ac: d107 bne.n 802d8be { CLEAR_BIT(hadc->Instance->OFR2, ADC_OFR2_SSATE); - 802d86e: 687b ldr r3, [r7, #4] - 802d870: 681b ldr r3, [r3, #0] - 802d872: 6e5a ldr r2, [r3, #100] ; 0x64 - 802d874: 687b ldr r3, [r7, #4] - 802d876: 681b ldr r3, [r3, #0] - 802d878: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 - 802d87c: 665a str r2, [r3, #100] ; 0x64 + 802d8ae: 687b ldr r3, [r7, #4] + 802d8b0: 681b ldr r3, [r3, #0] + 802d8b2: 6e5a ldr r2, [r3, #100] ; 0x64 + 802d8b4: 687b ldr r3, [r7, #4] + 802d8b6: 681b ldr r3, [r3, #0] + 802d8b8: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 802d8bc: 665a str r2, [r3, #100] ; 0x64 } if (((hadc->Instance->OFR3) & ADC_OFR3_OFFSET3_CH) == ADC_OFR_CHANNEL(sConfig->Channel)) - 802d87e: 687b ldr r3, [r7, #4] - 802d880: 681b ldr r3, [r3, #0] - 802d882: 6e9b ldr r3, [r3, #104] ; 0x68 - 802d884: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d888: 683b ldr r3, [r7, #0] - 802d88a: 681b ldr r3, [r3, #0] - 802d88c: 069b lsls r3, r3, #26 - 802d88e: 429a cmp r2, r3 - 802d890: d107 bne.n 802d8a2 + 802d8be: 687b ldr r3, [r7, #4] + 802d8c0: 681b ldr r3, [r3, #0] + 802d8c2: 6e9b ldr r3, [r3, #104] ; 0x68 + 802d8c4: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d8c8: 683b ldr r3, [r7, #0] + 802d8ca: 681b ldr r3, [r3, #0] + 802d8cc: 069b lsls r3, r3, #26 + 802d8ce: 429a cmp r2, r3 + 802d8d0: d107 bne.n 802d8e2 { CLEAR_BIT(hadc->Instance->OFR3, ADC_OFR3_SSATE); - 802d892: 687b ldr r3, [r7, #4] - 802d894: 681b ldr r3, [r3, #0] - 802d896: 6e9a ldr r2, [r3, #104] ; 0x68 - 802d898: 687b ldr r3, [r7, #4] - 802d89a: 681b ldr r3, [r3, #0] - 802d89c: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 - 802d8a0: 669a str r2, [r3, #104] ; 0x68 + 802d8d2: 687b ldr r3, [r7, #4] + 802d8d4: 681b ldr r3, [r3, #0] + 802d8d6: 6e9a ldr r2, [r3, #104] ; 0x68 + 802d8d8: 687b ldr r3, [r7, #4] + 802d8da: 681b ldr r3, [r3, #0] + 802d8dc: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 802d8e0: 669a str r2, [r3, #104] ; 0x68 } if (((hadc->Instance->OFR4) & ADC_OFR4_OFFSET4_CH) == ADC_OFR_CHANNEL(sConfig->Channel)) - 802d8a2: 687b ldr r3, [r7, #4] - 802d8a4: 681b ldr r3, [r3, #0] - 802d8a6: 6edb ldr r3, [r3, #108] ; 0x6c - 802d8a8: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d8ac: 683b ldr r3, [r7, #0] - 802d8ae: 681b ldr r3, [r3, #0] - 802d8b0: 069b lsls r3, r3, #26 - 802d8b2: 429a cmp r2, r3 - 802d8b4: d107 bne.n 802d8c6 + 802d8e2: 687b ldr r3, [r7, #4] + 802d8e4: 681b ldr r3, [r3, #0] + 802d8e6: 6edb ldr r3, [r3, #108] ; 0x6c + 802d8e8: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d8ec: 683b ldr r3, [r7, #0] + 802d8ee: 681b ldr r3, [r3, #0] + 802d8f0: 069b lsls r3, r3, #26 + 802d8f2: 429a cmp r2, r3 + 802d8f4: d107 bne.n 802d906 { CLEAR_BIT(hadc->Instance->OFR4, ADC_OFR4_SSATE); - 802d8b6: 687b ldr r3, [r7, #4] - 802d8b8: 681b ldr r3, [r3, #0] - 802d8ba: 6eda ldr r2, [r3, #108] ; 0x6c - 802d8bc: 687b ldr r3, [r7, #4] - 802d8be: 681b ldr r3, [r3, #0] - 802d8c0: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 - 802d8c4: 66da str r2, [r3, #108] ; 0x6c + 802d8f6: 687b ldr r3, [r7, #4] + 802d8f8: 681b ldr r3, [r3, #0] + 802d8fa: 6eda ldr r2, [r3, #108] ; 0x6c + 802d8fc: 687b ldr r3, [r7, #4] + 802d8fe: 681b ldr r3, [r3, #0] + 802d900: f022 4200 bic.w r2, r2, #2147483648 ; 0x80000000 + 802d904: 66da str r2, [r3, #108] ; 0x6c /* Parameters update conditioned to ADC state: */ /* Parameters that can be updated only when ADC is disabled: */ /* - Single or differential mode */ /* - Internal measurement channels: Vbat/VrefInt/TempSensor */ if (LL_ADC_IsEnabled(hadc->Instance) == 0UL) - 802d8c6: 687b ldr r3, [r7, #4] - 802d8c8: 681b ldr r3, [r3, #0] - 802d8ca: 4618 mov r0, r3 - 802d8cc: f7ff fd04 bl 802d2d8 - 802d8d0: 4603 mov r3, r0 - 802d8d2: 2b00 cmp r3, #0 - 802d8d4: f040 820d bne.w 802dcf2 + 802d906: 687b ldr r3, [r7, #4] + 802d908: 681b ldr r3, [r3, #0] + 802d90a: 4618 mov r0, r3 + 802d90c: f7ff fd04 bl 802d318 + 802d910: 4603 mov r3, r0 + 802d912: 2b00 cmp r3, #0 + 802d914: f040 820d bne.w 802dd32 { /* Set mode single-ended or differential input of the selected ADC channel */ LL_ADC_SetChannelSingleDiff(hadc->Instance, sConfig->Channel, sConfig->SingleDiff); - 802d8d8: 687b ldr r3, [r7, #4] - 802d8da: 6818 ldr r0, [r3, #0] - 802d8dc: 683b ldr r3, [r7, #0] - 802d8de: 6819 ldr r1, [r3, #0] - 802d8e0: 683b ldr r3, [r7, #0] - 802d8e2: 68db ldr r3, [r3, #12] - 802d8e4: 461a mov r2, r3 - 802d8e6: f7ff fc85 bl 802d1f4 + 802d918: 687b ldr r3, [r7, #4] + 802d91a: 6818 ldr r0, [r3, #0] + 802d91c: 683b ldr r3, [r7, #0] + 802d91e: 6819 ldr r1, [r3, #0] + 802d920: 683b ldr r3, [r7, #0] + 802d922: 68db ldr r3, [r3, #12] + 802d924: 461a mov r2, r3 + 802d926: f7ff fc85 bl 802d234 /* Configuration of differential mode */ if (sConfig->SingleDiff == ADC_DIFFERENTIAL_ENDED) - 802d8ea: 683b ldr r3, [r7, #0] - 802d8ec: 68db ldr r3, [r3, #12] - 802d8ee: 4a0c ldr r2, [pc, #48] ; (802d920 ) - 802d8f0: 4293 cmp r3, r2 - 802d8f2: f040 8133 bne.w 802db5c + 802d92a: 683b ldr r3, [r7, #0] + 802d92c: 68db ldr r3, [r3, #12] + 802d92e: 4a0c ldr r2, [pc, #48] ; (802d960 ) + 802d930: 4293 cmp r3, r2 + 802d932: f040 8133 bne.w 802db9c { /* Set sampling time of the selected ADC channel */ /* Note: ADC channel number masked with value "0x1F" to ensure shift value within 32 bits range */ LL_ADC_SetChannelSamplingTime(hadc->Instance, - 802d8f6: 687b ldr r3, [r7, #4] - 802d8f8: 6818 ldr r0, [r3, #0] + 802d936: 687b ldr r3, [r7, #4] + 802d938: 6818 ldr r0, [r3, #0] (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) + 1UL) & 0x1FUL)), - 802d8fa: 683b ldr r3, [r7, #0] - 802d8fc: 681b ldr r3, [r3, #0] - 802d8fe: f3c3 0313 ubfx r3, r3, #0, #20 - 802d902: 2b00 cmp r3, #0 - 802d904: d110 bne.n 802d928 - 802d906: 683b ldr r3, [r7, #0] - 802d908: 681b ldr r3, [r3, #0] - 802d90a: 0e9b lsrs r3, r3, #26 - 802d90c: 3301 adds r3, #1 - 802d90e: f003 031f and.w r3, r3, #31 - 802d912: 2b09 cmp r3, #9 - 802d914: bf94 ite ls - 802d916: 2301 movls r3, #1 - 802d918: 2300 movhi r3, #0 - 802d91a: b2db uxtb r3, r3 - 802d91c: e01e b.n 802d95c - 802d91e: bf00 nop - 802d920: 47ff0000 .word 0x47ff0000 - 802d924: 5c001000 .word 0x5c001000 - 802d928: 683b ldr r3, [r7, #0] - 802d92a: 681b ldr r3, [r3, #0] - 802d92c: 65bb str r3, [r7, #88] ; 0x58 - __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802d92e: 6dbb ldr r3, [r7, #88] ; 0x58 - 802d930: fa93 f3a3 rbit r3, r3 - 802d934: 657b str r3, [r7, #84] ; 0x54 - return result; - 802d936: 6d7b ldr r3, [r7, #84] ; 0x54 - 802d938: 65fb str r3, [r7, #92] ; 0x5c - if (value == 0U) - 802d93a: 6dfb ldr r3, [r7, #92] ; 0x5c - 802d93c: 2b00 cmp r3, #0 - 802d93e: d101 bne.n 802d944 - return 32U; - 802d940: 2320 movs r3, #32 - 802d942: e003 b.n 802d94c - return __builtin_clz(value); - 802d944: 6dfb ldr r3, [r7, #92] ; 0x5c - 802d946: fab3 f383 clz r3, r3 - 802d94a: b2db uxtb r3, r3 + 802d93a: 683b ldr r3, [r7, #0] + 802d93c: 681b ldr r3, [r3, #0] + 802d93e: f3c3 0313 ubfx r3, r3, #0, #20 + 802d942: 2b00 cmp r3, #0 + 802d944: d110 bne.n 802d968 + 802d946: 683b ldr r3, [r7, #0] + 802d948: 681b ldr r3, [r3, #0] + 802d94a: 0e9b lsrs r3, r3, #26 802d94c: 3301 adds r3, #1 802d94e: f003 031f and.w r3, r3, #31 802d952: 2b09 cmp r3, #9 @@ -33248,70896 +33243,70928 @@ HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConf 802d956: 2301 movls r3, #1 802d958: 2300 movhi r3, #0 802d95a: b2db uxtb r3, r3 - LL_ADC_SetChannelSamplingTime(hadc->Instance, - 802d95c: 2b00 cmp r3, #0 - 802d95e: d079 beq.n 802da54 - (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) + 1UL) & 0x1FUL)), - 802d960: 683b ldr r3, [r7, #0] - 802d962: 681b ldr r3, [r3, #0] - 802d964: f3c3 0313 ubfx r3, r3, #0, #20 - 802d968: 2b00 cmp r3, #0 - 802d96a: d107 bne.n 802d97c - 802d96c: 683b ldr r3, [r7, #0] - 802d96e: 681b ldr r3, [r3, #0] - 802d970: 0e9b lsrs r3, r3, #26 - 802d972: 3301 adds r3, #1 - 802d974: 069b lsls r3, r3, #26 - 802d976: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d97a: e015 b.n 802d9a8 - 802d97c: 683b ldr r3, [r7, #0] - 802d97e: 681b ldr r3, [r3, #0] - 802d980: 64fb str r3, [r7, #76] ; 0x4c + 802d95c: e01e b.n 802d99c + 802d95e: bf00 nop + 802d960: 47ff0000 .word 0x47ff0000 + 802d964: 5c001000 .word 0x5c001000 + 802d968: 683b ldr r3, [r7, #0] + 802d96a: 681b ldr r3, [r3, #0] + 802d96c: 65bb str r3, [r7, #88] ; 0x58 __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802d982: 6cfb ldr r3, [r7, #76] ; 0x4c - 802d984: fa93 f3a3 rbit r3, r3 - 802d988: 64bb str r3, [r7, #72] ; 0x48 + 802d96e: 6dbb ldr r3, [r7, #88] ; 0x58 + 802d970: fa93 f3a3 rbit r3, r3 + 802d974: 657b str r3, [r7, #84] ; 0x54 return result; - 802d98a: 6cbb ldr r3, [r7, #72] ; 0x48 - 802d98c: 653b str r3, [r7, #80] ; 0x50 + 802d976: 6d7b ldr r3, [r7, #84] ; 0x54 + 802d978: 65fb str r3, [r7, #92] ; 0x5c if (value == 0U) - 802d98e: 6d3b ldr r3, [r7, #80] ; 0x50 - 802d990: 2b00 cmp r3, #0 - 802d992: d101 bne.n 802d998 + 802d97a: 6dfb ldr r3, [r7, #92] ; 0x5c + 802d97c: 2b00 cmp r3, #0 + 802d97e: d101 bne.n 802d984 return 32U; - 802d994: 2320 movs r3, #32 - 802d996: e003 b.n 802d9a0 + 802d980: 2320 movs r3, #32 + 802d982: e003 b.n 802d98c return __builtin_clz(value); - 802d998: 6d3b ldr r3, [r7, #80] ; 0x50 - 802d99a: fab3 f383 clz r3, r3 - 802d99e: b2db uxtb r3, r3 - 802d9a0: 3301 adds r3, #1 - 802d9a2: 069b lsls r3, r3, #26 - 802d9a4: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802d9a8: 683b ldr r3, [r7, #0] - 802d9aa: 681b ldr r3, [r3, #0] - 802d9ac: f3c3 0313 ubfx r3, r3, #0, #20 - 802d9b0: 2b00 cmp r3, #0 - 802d9b2: d109 bne.n 802d9c8 - 802d9b4: 683b ldr r3, [r7, #0] - 802d9b6: 681b ldr r3, [r3, #0] - 802d9b8: 0e9b lsrs r3, r3, #26 - 802d9ba: 3301 adds r3, #1 - 802d9bc: f003 031f and.w r3, r3, #31 - 802d9c0: 2101 movs r1, #1 - 802d9c2: fa01 f303 lsl.w r3, r1, r3 - 802d9c6: e017 b.n 802d9f8 - 802d9c8: 683b ldr r3, [r7, #0] - 802d9ca: 681b ldr r3, [r3, #0] - 802d9cc: 643b str r3, [r7, #64] ; 0x40 + 802d984: 6dfb ldr r3, [r7, #92] ; 0x5c + 802d986: fab3 f383 clz r3, r3 + 802d98a: b2db uxtb r3, r3 + 802d98c: 3301 adds r3, #1 + 802d98e: f003 031f and.w r3, r3, #31 + 802d992: 2b09 cmp r3, #9 + 802d994: bf94 ite ls + 802d996: 2301 movls r3, #1 + 802d998: 2300 movhi r3, #0 + 802d99a: b2db uxtb r3, r3 + LL_ADC_SetChannelSamplingTime(hadc->Instance, + 802d99c: 2b00 cmp r3, #0 + 802d99e: d079 beq.n 802da94 + (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) + 1UL) & 0x1FUL)), + 802d9a0: 683b ldr r3, [r7, #0] + 802d9a2: 681b ldr r3, [r3, #0] + 802d9a4: f3c3 0313 ubfx r3, r3, #0, #20 + 802d9a8: 2b00 cmp r3, #0 + 802d9aa: d107 bne.n 802d9bc + 802d9ac: 683b ldr r3, [r7, #0] + 802d9ae: 681b ldr r3, [r3, #0] + 802d9b0: 0e9b lsrs r3, r3, #26 + 802d9b2: 3301 adds r3, #1 + 802d9b4: 069b lsls r3, r3, #26 + 802d9b6: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d9ba: e015 b.n 802d9e8 + 802d9bc: 683b ldr r3, [r7, #0] + 802d9be: 681b ldr r3, [r3, #0] + 802d9c0: 64fb str r3, [r7, #76] ; 0x4c __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802d9ce: 6c3b ldr r3, [r7, #64] ; 0x40 - 802d9d0: fa93 f3a3 rbit r3, r3 - 802d9d4: 63fb str r3, [r7, #60] ; 0x3c + 802d9c2: 6cfb ldr r3, [r7, #76] ; 0x4c + 802d9c4: fa93 f3a3 rbit r3, r3 + 802d9c8: 64bb str r3, [r7, #72] ; 0x48 return result; - 802d9d6: 6bfb ldr r3, [r7, #60] ; 0x3c - 802d9d8: 647b str r3, [r7, #68] ; 0x44 + 802d9ca: 6cbb ldr r3, [r7, #72] ; 0x48 + 802d9cc: 653b str r3, [r7, #80] ; 0x50 if (value == 0U) - 802d9da: 6c7b ldr r3, [r7, #68] ; 0x44 - 802d9dc: 2b00 cmp r3, #0 - 802d9de: d101 bne.n 802d9e4 + 802d9ce: 6d3b ldr r3, [r7, #80] ; 0x50 + 802d9d0: 2b00 cmp r3, #0 + 802d9d2: d101 bne.n 802d9d8 return 32U; - 802d9e0: 2320 movs r3, #32 - 802d9e2: e003 b.n 802d9ec + 802d9d4: 2320 movs r3, #32 + 802d9d6: e003 b.n 802d9e0 return __builtin_clz(value); - 802d9e4: 6c7b ldr r3, [r7, #68] ; 0x44 - 802d9e6: fab3 f383 clz r3, r3 - 802d9ea: b2db uxtb r3, r3 - 802d9ec: 3301 adds r3, #1 - 802d9ee: f003 031f and.w r3, r3, #31 - 802d9f2: 2101 movs r1, #1 - 802d9f4: fa01 f303 lsl.w r3, r1, r3 - 802d9f8: ea42 0103 orr.w r1, r2, r3 - 802d9fc: 683b ldr r3, [r7, #0] - 802d9fe: 681b ldr r3, [r3, #0] - 802da00: f3c3 0313 ubfx r3, r3, #0, #20 - 802da04: 2b00 cmp r3, #0 - 802da06: d10a bne.n 802da1e + 802d9d8: 6d3b ldr r3, [r7, #80] ; 0x50 + 802d9da: fab3 f383 clz r3, r3 + 802d9de: b2db uxtb r3, r3 + 802d9e0: 3301 adds r3, #1 + 802d9e2: 069b lsls r3, r3, #26 + 802d9e4: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802d9e8: 683b ldr r3, [r7, #0] + 802d9ea: 681b ldr r3, [r3, #0] + 802d9ec: f3c3 0313 ubfx r3, r3, #0, #20 + 802d9f0: 2b00 cmp r3, #0 + 802d9f2: d109 bne.n 802da08 + 802d9f4: 683b ldr r3, [r7, #0] + 802d9f6: 681b ldr r3, [r3, #0] + 802d9f8: 0e9b lsrs r3, r3, #26 + 802d9fa: 3301 adds r3, #1 + 802d9fc: f003 031f and.w r3, r3, #31 + 802da00: 2101 movs r1, #1 + 802da02: fa01 f303 lsl.w r3, r1, r3 + 802da06: e017 b.n 802da38 802da08: 683b ldr r3, [r7, #0] 802da0a: 681b ldr r3, [r3, #0] - 802da0c: 0e9b lsrs r3, r3, #26 - 802da0e: 3301 adds r3, #1 - 802da10: f003 021f and.w r2, r3, #31 - 802da14: 4613 mov r3, r2 - 802da16: 005b lsls r3, r3, #1 - 802da18: 4413 add r3, r2 - 802da1a: 051b lsls r3, r3, #20 - 802da1c: e018 b.n 802da50 - 802da1e: 683b ldr r3, [r7, #0] - 802da20: 681b ldr r3, [r3, #0] - 802da22: 637b str r3, [r7, #52] ; 0x34 + 802da0c: 643b str r3, [r7, #64] ; 0x40 __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802da24: 6b7b ldr r3, [r7, #52] ; 0x34 - 802da26: fa93 f3a3 rbit r3, r3 - 802da2a: 633b str r3, [r7, #48] ; 0x30 + 802da0e: 6c3b ldr r3, [r7, #64] ; 0x40 + 802da10: fa93 f3a3 rbit r3, r3 + 802da14: 63fb str r3, [r7, #60] ; 0x3c return result; - 802da2c: 6b3b ldr r3, [r7, #48] ; 0x30 - 802da2e: 63bb str r3, [r7, #56] ; 0x38 + 802da16: 6bfb ldr r3, [r7, #60] ; 0x3c + 802da18: 647b str r3, [r7, #68] ; 0x44 if (value == 0U) - 802da30: 6bbb ldr r3, [r7, #56] ; 0x38 - 802da32: 2b00 cmp r3, #0 - 802da34: d101 bne.n 802da3a + 802da1a: 6c7b ldr r3, [r7, #68] ; 0x44 + 802da1c: 2b00 cmp r3, #0 + 802da1e: d101 bne.n 802da24 return 32U; - 802da36: 2320 movs r3, #32 - 802da38: e003 b.n 802da42 + 802da20: 2320 movs r3, #32 + 802da22: e003 b.n 802da2c return __builtin_clz(value); - 802da3a: 6bbb ldr r3, [r7, #56] ; 0x38 - 802da3c: fab3 f383 clz r3, r3 - 802da40: b2db uxtb r3, r3 - 802da42: 3301 adds r3, #1 - 802da44: f003 021f and.w r2, r3, #31 - 802da48: 4613 mov r3, r2 - 802da4a: 005b lsls r3, r3, #1 - 802da4c: 4413 add r3, r2 - 802da4e: 051b lsls r3, r3, #20 - LL_ADC_SetChannelSamplingTime(hadc->Instance, - 802da50: 430b orrs r3, r1 - 802da52: e07e b.n 802db52 - (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) + 1UL) & 0x1FUL)), - 802da54: 683b ldr r3, [r7, #0] - 802da56: 681b ldr r3, [r3, #0] - 802da58: f3c3 0313 ubfx r3, r3, #0, #20 - 802da5c: 2b00 cmp r3, #0 - 802da5e: d107 bne.n 802da70 - 802da60: 683b ldr r3, [r7, #0] - 802da62: 681b ldr r3, [r3, #0] - 802da64: 0e9b lsrs r3, r3, #26 - 802da66: 3301 adds r3, #1 - 802da68: 069b lsls r3, r3, #26 - 802da6a: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802da6e: e015 b.n 802da9c - 802da70: 683b ldr r3, [r7, #0] - 802da72: 681b ldr r3, [r3, #0] - 802da74: 62bb str r3, [r7, #40] ; 0x28 + 802da24: 6c7b ldr r3, [r7, #68] ; 0x44 + 802da26: fab3 f383 clz r3, r3 + 802da2a: b2db uxtb r3, r3 + 802da2c: 3301 adds r3, #1 + 802da2e: f003 031f and.w r3, r3, #31 + 802da32: 2101 movs r1, #1 + 802da34: fa01 f303 lsl.w r3, r1, r3 + 802da38: ea42 0103 orr.w r1, r2, r3 + 802da3c: 683b ldr r3, [r7, #0] + 802da3e: 681b ldr r3, [r3, #0] + 802da40: f3c3 0313 ubfx r3, r3, #0, #20 + 802da44: 2b00 cmp r3, #0 + 802da46: d10a bne.n 802da5e + 802da48: 683b ldr r3, [r7, #0] + 802da4a: 681b ldr r3, [r3, #0] + 802da4c: 0e9b lsrs r3, r3, #26 + 802da4e: 3301 adds r3, #1 + 802da50: f003 021f and.w r2, r3, #31 + 802da54: 4613 mov r3, r2 + 802da56: 005b lsls r3, r3, #1 + 802da58: 4413 add r3, r2 + 802da5a: 051b lsls r3, r3, #20 + 802da5c: e018 b.n 802da90 + 802da5e: 683b ldr r3, [r7, #0] + 802da60: 681b ldr r3, [r3, #0] + 802da62: 637b str r3, [r7, #52] ; 0x34 __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802da76: 6abb ldr r3, [r7, #40] ; 0x28 - 802da78: fa93 f3a3 rbit r3, r3 - 802da7c: 627b str r3, [r7, #36] ; 0x24 + 802da64: 6b7b ldr r3, [r7, #52] ; 0x34 + 802da66: fa93 f3a3 rbit r3, r3 + 802da6a: 633b str r3, [r7, #48] ; 0x30 return result; - 802da7e: 6a7b ldr r3, [r7, #36] ; 0x24 - 802da80: 62fb str r3, [r7, #44] ; 0x2c + 802da6c: 6b3b ldr r3, [r7, #48] ; 0x30 + 802da6e: 63bb str r3, [r7, #56] ; 0x38 if (value == 0U) - 802da82: 6afb ldr r3, [r7, #44] ; 0x2c - 802da84: 2b00 cmp r3, #0 - 802da86: d101 bne.n 802da8c + 802da70: 6bbb ldr r3, [r7, #56] ; 0x38 + 802da72: 2b00 cmp r3, #0 + 802da74: d101 bne.n 802da7a return 32U; - 802da88: 2320 movs r3, #32 - 802da8a: e003 b.n 802da94 + 802da76: 2320 movs r3, #32 + 802da78: e003 b.n 802da82 return __builtin_clz(value); - 802da8c: 6afb ldr r3, [r7, #44] ; 0x2c - 802da8e: fab3 f383 clz r3, r3 - 802da92: b2db uxtb r3, r3 - 802da94: 3301 adds r3, #1 - 802da96: 069b lsls r3, r3, #26 - 802da98: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 - 802da9c: 683b ldr r3, [r7, #0] - 802da9e: 681b ldr r3, [r3, #0] - 802daa0: f3c3 0313 ubfx r3, r3, #0, #20 - 802daa4: 2b00 cmp r3, #0 - 802daa6: d109 bne.n 802dabc - 802daa8: 683b ldr r3, [r7, #0] - 802daaa: 681b ldr r3, [r3, #0] - 802daac: 0e9b lsrs r3, r3, #26 - 802daae: 3301 adds r3, #1 - 802dab0: f003 031f and.w r3, r3, #31 - 802dab4: 2101 movs r1, #1 - 802dab6: fa01 f303 lsl.w r3, r1, r3 - 802daba: e017 b.n 802daec - 802dabc: 683b ldr r3, [r7, #0] - 802dabe: 681b ldr r3, [r3, #0] - 802dac0: 61fb str r3, [r7, #28] + 802da7a: 6bbb ldr r3, [r7, #56] ; 0x38 + 802da7c: fab3 f383 clz r3, r3 + 802da80: b2db uxtb r3, r3 + 802da82: 3301 adds r3, #1 + 802da84: f003 021f and.w r2, r3, #31 + 802da88: 4613 mov r3, r2 + 802da8a: 005b lsls r3, r3, #1 + 802da8c: 4413 add r3, r2 + 802da8e: 051b lsls r3, r3, #20 + LL_ADC_SetChannelSamplingTime(hadc->Instance, + 802da90: 430b orrs r3, r1 + 802da92: e07e b.n 802db92 + (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->Channel) + 1UL) & 0x1FUL)), + 802da94: 683b ldr r3, [r7, #0] + 802da96: 681b ldr r3, [r3, #0] + 802da98: f3c3 0313 ubfx r3, r3, #0, #20 + 802da9c: 2b00 cmp r3, #0 + 802da9e: d107 bne.n 802dab0 + 802daa0: 683b ldr r3, [r7, #0] + 802daa2: 681b ldr r3, [r3, #0] + 802daa4: 0e9b lsrs r3, r3, #26 + 802daa6: 3301 adds r3, #1 + 802daa8: 069b lsls r3, r3, #26 + 802daaa: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802daae: e015 b.n 802dadc + 802dab0: 683b ldr r3, [r7, #0] + 802dab2: 681b ldr r3, [r3, #0] + 802dab4: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802dac2: 69fb ldr r3, [r7, #28] - 802dac4: fa93 f3a3 rbit r3, r3 - 802dac8: 61bb str r3, [r7, #24] + 802dab6: 6abb ldr r3, [r7, #40] ; 0x28 + 802dab8: fa93 f3a3 rbit r3, r3 + 802dabc: 627b str r3, [r7, #36] ; 0x24 return result; - 802daca: 69bb ldr r3, [r7, #24] - 802dacc: 623b str r3, [r7, #32] + 802dabe: 6a7b ldr r3, [r7, #36] ; 0x24 + 802dac0: 62fb str r3, [r7, #44] ; 0x2c if (value == 0U) - 802dace: 6a3b ldr r3, [r7, #32] - 802dad0: 2b00 cmp r3, #0 - 802dad2: d101 bne.n 802dad8 + 802dac2: 6afb ldr r3, [r7, #44] ; 0x2c + 802dac4: 2b00 cmp r3, #0 + 802dac6: d101 bne.n 802dacc return 32U; - 802dad4: 2320 movs r3, #32 - 802dad6: e003 b.n 802dae0 + 802dac8: 2320 movs r3, #32 + 802daca: e003 b.n 802dad4 return __builtin_clz(value); - 802dad8: 6a3b ldr r3, [r7, #32] - 802dada: fab3 f383 clz r3, r3 - 802dade: b2db uxtb r3, r3 - 802dae0: 3301 adds r3, #1 - 802dae2: f003 031f and.w r3, r3, #31 - 802dae6: 2101 movs r1, #1 - 802dae8: fa01 f303 lsl.w r3, r1, r3 - 802daec: ea42 0103 orr.w r1, r2, r3 - 802daf0: 683b ldr r3, [r7, #0] - 802daf2: 681b ldr r3, [r3, #0] - 802daf4: f3c3 0313 ubfx r3, r3, #0, #20 - 802daf8: 2b00 cmp r3, #0 - 802dafa: d10d bne.n 802db18 + 802dacc: 6afb ldr r3, [r7, #44] ; 0x2c + 802dace: fab3 f383 clz r3, r3 + 802dad2: b2db uxtb r3, r3 + 802dad4: 3301 adds r3, #1 + 802dad6: 069b lsls r3, r3, #26 + 802dad8: f003 42f8 and.w r2, r3, #2080374784 ; 0x7c000000 + 802dadc: 683b ldr r3, [r7, #0] + 802dade: 681b ldr r3, [r3, #0] + 802dae0: f3c3 0313 ubfx r3, r3, #0, #20 + 802dae4: 2b00 cmp r3, #0 + 802dae6: d109 bne.n 802dafc + 802dae8: 683b ldr r3, [r7, #0] + 802daea: 681b ldr r3, [r3, #0] + 802daec: 0e9b lsrs r3, r3, #26 + 802daee: 3301 adds r3, #1 + 802daf0: f003 031f and.w r3, r3, #31 + 802daf4: 2101 movs r1, #1 + 802daf6: fa01 f303 lsl.w r3, r1, r3 + 802dafa: e017 b.n 802db2c 802dafc: 683b ldr r3, [r7, #0] 802dafe: 681b ldr r3, [r3, #0] - 802db00: 0e9b lsrs r3, r3, #26 - 802db02: 3301 adds r3, #1 - 802db04: f003 021f and.w r2, r3, #31 - 802db08: 4613 mov r3, r2 - 802db0a: 005b lsls r3, r3, #1 - 802db0c: 4413 add r3, r2 - 802db0e: 3b1e subs r3, #30 - 802db10: 051b lsls r3, r3, #20 - 802db12: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 - 802db16: e01b b.n 802db50 - 802db18: 683b ldr r3, [r7, #0] - 802db1a: 681b ldr r3, [r3, #0] - 802db1c: 613b str r3, [r7, #16] + 802db00: 61fb str r3, [r7, #28] __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); - 802db1e: 693b ldr r3, [r7, #16] - 802db20: fa93 f3a3 rbit r3, r3 - 802db24: 60fb str r3, [r7, #12] + 802db02: 69fb ldr r3, [r7, #28] + 802db04: fa93 f3a3 rbit r3, r3 + 802db08: 61bb str r3, [r7, #24] return result; - 802db26: 68fb ldr r3, [r7, #12] - 802db28: 617b str r3, [r7, #20] + 802db0a: 69bb ldr r3, [r7, #24] + 802db0c: 623b str r3, [r7, #32] if (value == 0U) - 802db2a: 697b ldr r3, [r7, #20] - 802db2c: 2b00 cmp r3, #0 - 802db2e: d101 bne.n 802db34 + 802db0e: 6a3b ldr r3, [r7, #32] + 802db10: 2b00 cmp r3, #0 + 802db12: d101 bne.n 802db18 return 32U; - 802db30: 2320 movs r3, #32 - 802db32: e003 b.n 802db3c + 802db14: 2320 movs r3, #32 + 802db16: e003 b.n 802db20 return __builtin_clz(value); - 802db34: 697b ldr r3, [r7, #20] - 802db36: fab3 f383 clz r3, r3 - 802db3a: b2db uxtb r3, r3 - 802db3c: 3301 adds r3, #1 - 802db3e: f003 021f and.w r2, r3, #31 - 802db42: 4613 mov r3, r2 - 802db44: 005b lsls r3, r3, #1 - 802db46: 4413 add r3, r2 - 802db48: 3b1e subs r3, #30 - 802db4a: 051b lsls r3, r3, #20 - 802db4c: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 + 802db18: 6a3b ldr r3, [r7, #32] + 802db1a: fab3 f383 clz r3, r3 + 802db1e: b2db uxtb r3, r3 + 802db20: 3301 adds r3, #1 + 802db22: f003 031f and.w r3, r3, #31 + 802db26: 2101 movs r1, #1 + 802db28: fa01 f303 lsl.w r3, r1, r3 + 802db2c: ea42 0103 orr.w r1, r2, r3 + 802db30: 683b ldr r3, [r7, #0] + 802db32: 681b ldr r3, [r3, #0] + 802db34: f3c3 0313 ubfx r3, r3, #0, #20 + 802db38: 2b00 cmp r3, #0 + 802db3a: d10d bne.n 802db58 + 802db3c: 683b ldr r3, [r7, #0] + 802db3e: 681b ldr r3, [r3, #0] + 802db40: 0e9b lsrs r3, r3, #26 + 802db42: 3301 adds r3, #1 + 802db44: f003 021f and.w r2, r3, #31 + 802db48: 4613 mov r3, r2 + 802db4a: 005b lsls r3, r3, #1 + 802db4c: 4413 add r3, r2 + 802db4e: 3b1e subs r3, #30 + 802db50: 051b lsls r3, r3, #20 + 802db52: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 + 802db56: e01b b.n 802db90 + 802db58: 683b ldr r3, [r7, #0] + 802db5a: 681b ldr r3, [r3, #0] + 802db5c: 613b str r3, [r7, #16] + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 802db5e: 693b ldr r3, [r7, #16] + 802db60: fa93 f3a3 rbit r3, r3 + 802db64: 60fb str r3, [r7, #12] + return result; + 802db66: 68fb ldr r3, [r7, #12] + 802db68: 617b str r3, [r7, #20] + if (value == 0U) + 802db6a: 697b ldr r3, [r7, #20] + 802db6c: 2b00 cmp r3, #0 + 802db6e: d101 bne.n 802db74 + return 32U; + 802db70: 2320 movs r3, #32 + 802db72: e003 b.n 802db7c + return __builtin_clz(value); + 802db74: 697b ldr r3, [r7, #20] + 802db76: fab3 f383 clz r3, r3 + 802db7a: b2db uxtb r3, r3 + 802db7c: 3301 adds r3, #1 + 802db7e: f003 021f and.w r2, r3, #31 + 802db82: 4613 mov r3, r2 + 802db84: 005b lsls r3, r3, #1 + 802db86: 4413 add r3, r2 + 802db88: 3b1e subs r3, #30 + 802db8a: 051b lsls r3, r3, #20 + 802db8c: f043 7300 orr.w r3, r3, #33554432 ; 0x2000000 LL_ADC_SetChannelSamplingTime(hadc->Instance, - 802db50: 430b orrs r3, r1 - 802db52: 683a ldr r2, [r7, #0] - 802db54: 6892 ldr r2, [r2, #8] - 802db56: 4619 mov r1, r3 - 802db58: f7ff fb20 bl 802d19c + 802db90: 430b orrs r3, r1 + 802db92: 683a ldr r2, [r7, #0] + 802db94: 6892 ldr r2, [r2, #8] + 802db96: 4619 mov r1, r3 + 802db98: f7ff fb20 bl 802d1dc /* If internal channel selected, enable dedicated internal buffers and */ /* paths. */ /* Note: these internal measurement paths can be disabled using */ /* HAL_ADC_DeInit(). */ if (__LL_ADC_IS_CHANNEL_INTERNAL(sConfig->Channel)) - 802db5c: 683b ldr r3, [r7, #0] - 802db5e: 681b ldr r3, [r3, #0] - 802db60: 2b00 cmp r3, #0 - 802db62: f280 80c6 bge.w 802dcf2 + 802db9c: 683b ldr r3, [r7, #0] + 802db9e: 681b ldr r3, [r3, #0] + 802dba0: 2b00 cmp r3, #0 + 802dba2: f280 80c6 bge.w 802dd32 { /* Configuration of common ADC parameters */ tmp_config_internal_channel = LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance)); - 802db66: 687b ldr r3, [r7, #4] - 802db68: 681b ldr r3, [r3, #0] - 802db6a: 4a67 ldr r2, [pc, #412] ; (802dd08 ) - 802db6c: 4293 cmp r3, r2 - 802db6e: d004 beq.n 802db7a - 802db70: 687b ldr r3, [r7, #4] - 802db72: 681b ldr r3, [r3, #0] - 802db74: 4a65 ldr r2, [pc, #404] ; (802dd0c ) - 802db76: 4293 cmp r3, r2 - 802db78: d101 bne.n 802db7e - 802db7a: 4b65 ldr r3, [pc, #404] ; (802dd10 ) - 802db7c: e000 b.n 802db80 - 802db7e: 4b65 ldr r3, [pc, #404] ; (802dd14 ) - 802db80: 4618 mov r0, r3 - 802db82: f7ff fa7d bl 802d080 - 802db86: 66f8 str r0, [r7, #108] ; 0x6c + 802dba6: 687b ldr r3, [r7, #4] + 802dba8: 681b ldr r3, [r3, #0] + 802dbaa: 4a67 ldr r2, [pc, #412] ; (802dd48 ) + 802dbac: 4293 cmp r3, r2 + 802dbae: d004 beq.n 802dbba + 802dbb0: 687b ldr r3, [r7, #4] + 802dbb2: 681b ldr r3, [r3, #0] + 802dbb4: 4a65 ldr r2, [pc, #404] ; (802dd4c ) + 802dbb6: 4293 cmp r3, r2 + 802dbb8: d101 bne.n 802dbbe + 802dbba: 4b65 ldr r3, [pc, #404] ; (802dd50 ) + 802dbbc: e000 b.n 802dbc0 + 802dbbe: 4b65 ldr r3, [pc, #404] ; (802dd54 ) + 802dbc0: 4618 mov r0, r3 + 802dbc2: f7ff fa7d bl 802d0c0 + 802dbc6: 66f8 str r0, [r7, #108] ; 0x6c /* Software is allowed to change common parameters only when all ADCs */ /* of the common group are disabled. */ if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL) - 802db88: 687b ldr r3, [r7, #4] - 802db8a: 681b ldr r3, [r3, #0] - 802db8c: 4a5e ldr r2, [pc, #376] ; (802dd08 ) - 802db8e: 4293 cmp r3, r2 - 802db90: d004 beq.n 802db9c - 802db92: 687b ldr r3, [r7, #4] - 802db94: 681b ldr r3, [r3, #0] - 802db96: 4a5d ldr r2, [pc, #372] ; (802dd0c ) - 802db98: 4293 cmp r3, r2 - 802db9a: d10e bne.n 802dbba - 802db9c: 485a ldr r0, [pc, #360] ; (802dd08 ) - 802db9e: f7ff fb9b bl 802d2d8 - 802dba2: 4604 mov r4, r0 - 802dba4: 4859 ldr r0, [pc, #356] ; (802dd0c ) - 802dba6: f7ff fb97 bl 802d2d8 - 802dbaa: 4603 mov r3, r0 - 802dbac: 4323 orrs r3, r4 - 802dbae: 2b00 cmp r3, #0 - 802dbb0: bf0c ite eq - 802dbb2: 2301 moveq r3, #1 - 802dbb4: 2300 movne r3, #0 - 802dbb6: b2db uxtb r3, r3 - 802dbb8: e008 b.n 802dbcc - 802dbba: 4857 ldr r0, [pc, #348] ; (802dd18 ) - 802dbbc: f7ff fb8c bl 802d2d8 - 802dbc0: 4603 mov r3, r0 - 802dbc2: 2b00 cmp r3, #0 - 802dbc4: bf0c ite eq - 802dbc6: 2301 moveq r3, #1 - 802dbc8: 2300 movne r3, #0 - 802dbca: b2db uxtb r3, r3 - 802dbcc: 2b00 cmp r3, #0 - 802dbce: d07d beq.n 802dccc + 802dbc8: 687b ldr r3, [r7, #4] + 802dbca: 681b ldr r3, [r3, #0] + 802dbcc: 4a5e ldr r2, [pc, #376] ; (802dd48 ) + 802dbce: 4293 cmp r3, r2 + 802dbd0: d004 beq.n 802dbdc + 802dbd2: 687b ldr r3, [r7, #4] + 802dbd4: 681b ldr r3, [r3, #0] + 802dbd6: 4a5d ldr r2, [pc, #372] ; (802dd4c ) + 802dbd8: 4293 cmp r3, r2 + 802dbda: d10e bne.n 802dbfa + 802dbdc: 485a ldr r0, [pc, #360] ; (802dd48 ) + 802dbde: f7ff fb9b bl 802d318 + 802dbe2: 4604 mov r4, r0 + 802dbe4: 4859 ldr r0, [pc, #356] ; (802dd4c ) + 802dbe6: f7ff fb97 bl 802d318 + 802dbea: 4603 mov r3, r0 + 802dbec: 4323 orrs r3, r4 + 802dbee: 2b00 cmp r3, #0 + 802dbf0: bf0c ite eq + 802dbf2: 2301 moveq r3, #1 + 802dbf4: 2300 movne r3, #0 + 802dbf6: b2db uxtb r3, r3 + 802dbf8: e008 b.n 802dc0c + 802dbfa: 4857 ldr r0, [pc, #348] ; (802dd58 ) + 802dbfc: f7ff fb8c bl 802d318 + 802dc00: 4603 mov r3, r0 + 802dc02: 2b00 cmp r3, #0 + 802dc04: bf0c ite eq + 802dc06: 2301 moveq r3, #1 + 802dc08: 2300 movne r3, #0 + 802dc0a: b2db uxtb r3, r3 + 802dc0c: 2b00 cmp r3, #0 + 802dc0e: d07d beq.n 802dd0c { /* If the requested internal measurement path has already been enabled, */ /* bypass the configuration processing. */ if ((sConfig->Channel == ADC_CHANNEL_TEMPSENSOR) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_TEMPSENSOR) == 0UL)) - 802dbd0: 683b ldr r3, [r7, #0] - 802dbd2: 681b ldr r3, [r3, #0] - 802dbd4: 4a51 ldr r2, [pc, #324] ; (802dd1c ) - 802dbd6: 4293 cmp r3, r2 - 802dbd8: d130 bne.n 802dc3c - 802dbda: 6efb ldr r3, [r7, #108] ; 0x6c - 802dbdc: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 802dbe0: 2b00 cmp r3, #0 - 802dbe2: d12b bne.n 802dc3c + 802dc10: 683b ldr r3, [r7, #0] + 802dc12: 681b ldr r3, [r3, #0] + 802dc14: 4a51 ldr r2, [pc, #324] ; (802dd5c ) + 802dc16: 4293 cmp r3, r2 + 802dc18: d130 bne.n 802dc7c + 802dc1a: 6efb ldr r3, [r7, #108] ; 0x6c + 802dc1c: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 802dc20: 2b00 cmp r3, #0 + 802dc22: d12b bne.n 802dc7c { if (ADC_TEMPERATURE_SENSOR_INSTANCE(hadc)) - 802dbe4: 687b ldr r3, [r7, #4] - 802dbe6: 681b ldr r3, [r3, #0] - 802dbe8: 4a4b ldr r2, [pc, #300] ; (802dd18 ) - 802dbea: 4293 cmp r3, r2 - 802dbec: f040 8081 bne.w 802dcf2 + 802dc24: 687b ldr r3, [r7, #4] + 802dc26: 681b ldr r3, [r3, #0] + 802dc28: 4a4b ldr r2, [pc, #300] ; (802dd58 ) + 802dc2a: 4293 cmp r3, r2 + 802dc2c: f040 8081 bne.w 802dd32 { LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), LL_ADC_PATH_INTERNAL_TEMPSENSOR | tmp_config_internal_channel); - 802dbf0: 687b ldr r3, [r7, #4] - 802dbf2: 681b ldr r3, [r3, #0] - 802dbf4: 4a44 ldr r2, [pc, #272] ; (802dd08 ) - 802dbf6: 4293 cmp r3, r2 - 802dbf8: d004 beq.n 802dc04 - 802dbfa: 687b ldr r3, [r7, #4] - 802dbfc: 681b ldr r3, [r3, #0] - 802dbfe: 4a43 ldr r2, [pc, #268] ; (802dd0c ) - 802dc00: 4293 cmp r3, r2 - 802dc02: d101 bne.n 802dc08 - 802dc04: 4a42 ldr r2, [pc, #264] ; (802dd10 ) - 802dc06: e000 b.n 802dc0a - 802dc08: 4a42 ldr r2, [pc, #264] ; (802dd14 ) - 802dc0a: 6efb ldr r3, [r7, #108] ; 0x6c - 802dc0c: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 - 802dc10: 4619 mov r1, r3 - 802dc12: 4610 mov r0, r2 - 802dc14: f7ff fa21 bl 802d05a + 802dc30: 687b ldr r3, [r7, #4] + 802dc32: 681b ldr r3, [r3, #0] + 802dc34: 4a44 ldr r2, [pc, #272] ; (802dd48 ) + 802dc36: 4293 cmp r3, r2 + 802dc38: d004 beq.n 802dc44 + 802dc3a: 687b ldr r3, [r7, #4] + 802dc3c: 681b ldr r3, [r3, #0] + 802dc3e: 4a43 ldr r2, [pc, #268] ; (802dd4c ) + 802dc40: 4293 cmp r3, r2 + 802dc42: d101 bne.n 802dc48 + 802dc44: 4a42 ldr r2, [pc, #264] ; (802dd50 ) + 802dc46: e000 b.n 802dc4a + 802dc48: 4a42 ldr r2, [pc, #264] ; (802dd54 ) + 802dc4a: 6efb ldr r3, [r7, #108] ; 0x6c + 802dc4c: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 802dc50: 4619 mov r1, r3 + 802dc52: 4610 mov r0, r2 + 802dc54: f7ff fa21 bl 802d09a /* Delay for temperature sensor stabilization time */ /* Wait loop initialization and execution */ /* Note: Variable divided by 2 to compensate partially */ /* CPU processing cycles, scaling in us split to not */ /* exceed 32 bits register capacity and handle low frequency. */ wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * ((SystemCoreClock / (100000UL * 2UL)) + 1UL)); - 802dc18: 4b41 ldr r3, [pc, #260] ; (802dd20 ) - 802dc1a: 681b ldr r3, [r3, #0] - 802dc1c: 099b lsrs r3, r3, #6 - 802dc1e: 4a41 ldr r2, [pc, #260] ; (802dd24 ) - 802dc20: fba2 2303 umull r2, r3, r2, r3 - 802dc24: 099b lsrs r3, r3, #6 - 802dc26: 3301 adds r3, #1 - 802dc28: 005b lsls r3, r3, #1 - 802dc2a: 60bb str r3, [r7, #8] + 802dc58: 4b41 ldr r3, [pc, #260] ; (802dd60 ) + 802dc5a: 681b ldr r3, [r3, #0] + 802dc5c: 099b lsrs r3, r3, #6 + 802dc5e: 4a41 ldr r2, [pc, #260] ; (802dd64 ) + 802dc60: fba2 2303 umull r2, r3, r2, r3 + 802dc64: 099b lsrs r3, r3, #6 + 802dc66: 3301 adds r3, #1 + 802dc68: 005b lsls r3, r3, #1 + 802dc6a: 60bb str r3, [r7, #8] while (wait_loop_index != 0UL) - 802dc2c: e002 b.n 802dc34 + 802dc6c: e002 b.n 802dc74 { wait_loop_index--; - 802dc2e: 68bb ldr r3, [r7, #8] - 802dc30: 3b01 subs r3, #1 - 802dc32: 60bb str r3, [r7, #8] + 802dc6e: 68bb ldr r3, [r7, #8] + 802dc70: 3b01 subs r3, #1 + 802dc72: 60bb str r3, [r7, #8] while (wait_loop_index != 0UL) - 802dc34: 68bb ldr r3, [r7, #8] - 802dc36: 2b00 cmp r3, #0 - 802dc38: d1f9 bne.n 802dc2e + 802dc74: 68bb ldr r3, [r7, #8] + 802dc76: 2b00 cmp r3, #0 + 802dc78: d1f9 bne.n 802dc6e if (ADC_TEMPERATURE_SENSOR_INSTANCE(hadc)) - 802dc3a: e05a b.n 802dcf2 + 802dc7a: e05a b.n 802dd32 } } } else if ((sConfig->Channel == ADC_CHANNEL_VBAT) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL)) - 802dc3c: 683b ldr r3, [r7, #0] - 802dc3e: 681b ldr r3, [r3, #0] - 802dc40: 4a39 ldr r2, [pc, #228] ; (802dd28 ) - 802dc42: 4293 cmp r3, r2 - 802dc44: d11e bne.n 802dc84 - 802dc46: 6efb ldr r3, [r7, #108] ; 0x6c - 802dc48: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 802dc4c: 2b00 cmp r3, #0 - 802dc4e: d119 bne.n 802dc84 + 802dc7c: 683b ldr r3, [r7, #0] + 802dc7e: 681b ldr r3, [r3, #0] + 802dc80: 4a39 ldr r2, [pc, #228] ; (802dd68 ) + 802dc82: 4293 cmp r3, r2 + 802dc84: d11e bne.n 802dcc4 + 802dc86: 6efb ldr r3, [r7, #108] ; 0x6c + 802dc88: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 802dc8c: 2b00 cmp r3, #0 + 802dc8e: d119 bne.n 802dcc4 { if (ADC_BATTERY_VOLTAGE_INSTANCE(hadc)) - 802dc50: 687b ldr r3, [r7, #4] - 802dc52: 681b ldr r3, [r3, #0] - 802dc54: 4a30 ldr r2, [pc, #192] ; (802dd18 ) - 802dc56: 4293 cmp r3, r2 - 802dc58: d14b bne.n 802dcf2 + 802dc90: 687b ldr r3, [r7, #4] + 802dc92: 681b ldr r3, [r3, #0] + 802dc94: 4a30 ldr r2, [pc, #192] ; (802dd58 ) + 802dc96: 4293 cmp r3, r2 + 802dc98: d14b bne.n 802dd32 { LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), LL_ADC_PATH_INTERNAL_VBAT | tmp_config_internal_channel); - 802dc5a: 687b ldr r3, [r7, #4] - 802dc5c: 681b ldr r3, [r3, #0] - 802dc5e: 4a2a ldr r2, [pc, #168] ; (802dd08 ) - 802dc60: 4293 cmp r3, r2 - 802dc62: d004 beq.n 802dc6e - 802dc64: 687b ldr r3, [r7, #4] - 802dc66: 681b ldr r3, [r3, #0] - 802dc68: 4a28 ldr r2, [pc, #160] ; (802dd0c ) - 802dc6a: 4293 cmp r3, r2 - 802dc6c: d101 bne.n 802dc72 - 802dc6e: 4a28 ldr r2, [pc, #160] ; (802dd10 ) - 802dc70: e000 b.n 802dc74 - 802dc72: 4a28 ldr r2, [pc, #160] ; (802dd14 ) - 802dc74: 6efb ldr r3, [r7, #108] ; 0x6c - 802dc76: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 802dc7a: 4619 mov r1, r3 - 802dc7c: 4610 mov r0, r2 - 802dc7e: f7ff f9ec bl 802d05a + 802dc9a: 687b ldr r3, [r7, #4] + 802dc9c: 681b ldr r3, [r3, #0] + 802dc9e: 4a2a ldr r2, [pc, #168] ; (802dd48 ) + 802dca0: 4293 cmp r3, r2 + 802dca2: d004 beq.n 802dcae + 802dca4: 687b ldr r3, [r7, #4] + 802dca6: 681b ldr r3, [r3, #0] + 802dca8: 4a28 ldr r2, [pc, #160] ; (802dd4c ) + 802dcaa: 4293 cmp r3, r2 + 802dcac: d101 bne.n 802dcb2 + 802dcae: 4a28 ldr r2, [pc, #160] ; (802dd50 ) + 802dcb0: e000 b.n 802dcb4 + 802dcb2: 4a28 ldr r2, [pc, #160] ; (802dd54 ) + 802dcb4: 6efb ldr r3, [r7, #108] ; 0x6c + 802dcb6: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 802dcba: 4619 mov r1, r3 + 802dcbc: 4610 mov r0, r2 + 802dcbe: f7ff f9ec bl 802d09a if (ADC_BATTERY_VOLTAGE_INSTANCE(hadc)) - 802dc82: e036 b.n 802dcf2 + 802dcc2: e036 b.n 802dd32 } } else if ((sConfig->Channel == ADC_CHANNEL_VREFINT) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VREFINT) == 0UL)) - 802dc84: 683b ldr r3, [r7, #0] - 802dc86: 681b ldr r3, [r3, #0] - 802dc88: 4a28 ldr r2, [pc, #160] ; (802dd2c ) - 802dc8a: 4293 cmp r3, r2 - 802dc8c: d131 bne.n 802dcf2 - 802dc8e: 6efb ldr r3, [r7, #108] ; 0x6c - 802dc90: f403 0380 and.w r3, r3, #4194304 ; 0x400000 - 802dc94: 2b00 cmp r3, #0 - 802dc96: d12c bne.n 802dcf2 + 802dcc4: 683b ldr r3, [r7, #0] + 802dcc6: 681b ldr r3, [r3, #0] + 802dcc8: 4a28 ldr r2, [pc, #160] ; (802dd6c ) + 802dcca: 4293 cmp r3, r2 + 802dccc: d131 bne.n 802dd32 + 802dcce: 6efb ldr r3, [r7, #108] ; 0x6c + 802dcd0: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 802dcd4: 2b00 cmp r3, #0 + 802dcd6: d12c bne.n 802dd32 { if (ADC_VREFINT_INSTANCE(hadc)) - 802dc98: 687b ldr r3, [r7, #4] - 802dc9a: 681b ldr r3, [r3, #0] - 802dc9c: 4a1e ldr r2, [pc, #120] ; (802dd18 ) - 802dc9e: 4293 cmp r3, r2 - 802dca0: d127 bne.n 802dcf2 + 802dcd8: 687b ldr r3, [r7, #4] + 802dcda: 681b ldr r3, [r3, #0] + 802dcdc: 4a1e ldr r2, [pc, #120] ; (802dd58 ) + 802dcde: 4293 cmp r3, r2 + 802dce0: d127 bne.n 802dd32 { LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->Instance), LL_ADC_PATH_INTERNAL_VREFINT | tmp_config_internal_channel); - 802dca2: 687b ldr r3, [r7, #4] - 802dca4: 681b ldr r3, [r3, #0] - 802dca6: 4a18 ldr r2, [pc, #96] ; (802dd08 ) - 802dca8: 4293 cmp r3, r2 - 802dcaa: d004 beq.n 802dcb6 - 802dcac: 687b ldr r3, [r7, #4] - 802dcae: 681b ldr r3, [r3, #0] - 802dcb0: 4a16 ldr r2, [pc, #88] ; (802dd0c ) - 802dcb2: 4293 cmp r3, r2 - 802dcb4: d101 bne.n 802dcba - 802dcb6: 4a16 ldr r2, [pc, #88] ; (802dd10 ) - 802dcb8: e000 b.n 802dcbc - 802dcba: 4a16 ldr r2, [pc, #88] ; (802dd14 ) - 802dcbc: 6efb ldr r3, [r7, #108] ; 0x6c - 802dcbe: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 - 802dcc2: 4619 mov r1, r3 - 802dcc4: 4610 mov r0, r2 - 802dcc6: f7ff f9c8 bl 802d05a - 802dcca: e012 b.n 802dcf2 + 802dce2: 687b ldr r3, [r7, #4] + 802dce4: 681b ldr r3, [r3, #0] + 802dce6: 4a18 ldr r2, [pc, #96] ; (802dd48 ) + 802dce8: 4293 cmp r3, r2 + 802dcea: d004 beq.n 802dcf6 + 802dcec: 687b ldr r3, [r7, #4] + 802dcee: 681b ldr r3, [r3, #0] + 802dcf0: 4a16 ldr r2, [pc, #88] ; (802dd4c ) + 802dcf2: 4293 cmp r3, r2 + 802dcf4: d101 bne.n 802dcfa + 802dcf6: 4a16 ldr r2, [pc, #88] ; (802dd50 ) + 802dcf8: e000 b.n 802dcfc + 802dcfa: 4a16 ldr r2, [pc, #88] ; (802dd54 ) + 802dcfc: 6efb ldr r3, [r7, #108] ; 0x6c + 802dcfe: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 802dd02: 4619 mov r1, r3 + 802dd04: 4610 mov r0, r2 + 802dd06: f7ff f9c8 bl 802d09a + 802dd0a: e012 b.n 802dd32 /* enabled and other ADC of the common group are enabled, internal */ /* measurement paths cannot be enabled. */ else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 802dccc: 687b ldr r3, [r7, #4] - 802dcce: 6d5b ldr r3, [r3, #84] ; 0x54 - 802dcd0: f043 0220 orr.w r2, r3, #32 - 802dcd4: 687b ldr r3, [r7, #4] - 802dcd6: 655a str r2, [r3, #84] ; 0x54 + 802dd0c: 687b ldr r3, [r7, #4] + 802dd0e: 6d5b ldr r3, [r3, #84] ; 0x54 + 802dd10: f043 0220 orr.w r2, r3, #32 + 802dd14: 687b ldr r3, [r7, #4] + 802dd16: 655a str r2, [r3, #84] ; 0x54 tmp_hal_status = HAL_ERROR; - 802dcd8: 2301 movs r3, #1 - 802dcda: f887 307f strb.w r3, [r7, #127] ; 0x7f - 802dcde: e008 b.n 802dcf2 + 802dd18: 2301 movs r3, #1 + 802dd1a: f887 307f strb.w r3, [r7, #127] ; 0x7f + 802dd1e: e008 b.n 802dd32 /* channel could be done on neither of the channel configuration structure */ /* parameters. */ else { /* Update ADC state machine to error */ SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG); - 802dce0: 687b ldr r3, [r7, #4] - 802dce2: 6d5b ldr r3, [r3, #84] ; 0x54 - 802dce4: f043 0220 orr.w r2, r3, #32 - 802dce8: 687b ldr r3, [r7, #4] - 802dcea: 655a str r2, [r3, #84] ; 0x54 + 802dd20: 687b ldr r3, [r7, #4] + 802dd22: 6d5b ldr r3, [r3, #84] ; 0x54 + 802dd24: f043 0220 orr.w r2, r3, #32 + 802dd28: 687b ldr r3, [r7, #4] + 802dd2a: 655a str r2, [r3, #84] ; 0x54 tmp_hal_status = HAL_ERROR; - 802dcec: 2301 movs r3, #1 - 802dcee: f887 307f strb.w r3, [r7, #127] ; 0x7f + 802dd2c: 2301 movs r3, #1 + 802dd2e: f887 307f strb.w r3, [r7, #127] ; 0x7f } /* Process unlocked */ __HAL_UNLOCK(hadc); - 802dcf2: 687b ldr r3, [r7, #4] - 802dcf4: 2200 movs r2, #0 - 802dcf6: f883 2050 strb.w r2, [r3, #80] ; 0x50 + 802dd32: 687b ldr r3, [r7, #4] + 802dd34: 2200 movs r2, #0 + 802dd36: f883 2050 strb.w r2, [r3, #80] ; 0x50 /* Return function status */ return tmp_hal_status; - 802dcfa: f897 307f ldrb.w r3, [r7, #127] ; 0x7f -} - 802dcfe: 4618 mov r0, r3 - 802dd00: 3784 adds r7, #132 ; 0x84 - 802dd02: 46bd mov sp, r7 - 802dd04: bd90 pop {r4, r7, pc} - 802dd06: bf00 nop - 802dd08: 40022000 .word 0x40022000 - 802dd0c: 40022100 .word 0x40022100 - 802dd10: 40022300 .word 0x40022300 - 802dd14: 58026300 .word 0x58026300 - 802dd18: 58026000 .word 0x58026000 - 802dd1c: cb840000 .word 0xcb840000 - 802dd20: 24000118 .word 0x24000118 - 802dd24: 053e2d63 .word 0x053e2d63 - 802dd28: c7520000 .word 0xc7520000 - 802dd2c: cfb80000 .word 0xcfb80000 - -0802dd30 : + 802dd3a: f897 307f ldrb.w r3, [r7, #127] ; 0x7f +} + 802dd3e: 4618 mov r0, r3 + 802dd40: 3784 adds r7, #132 ; 0x84 + 802dd42: 46bd mov sp, r7 + 802dd44: bd90 pop {r4, r7, pc} + 802dd46: bf00 nop + 802dd48: 40022000 .word 0x40022000 + 802dd4c: 40022100 .word 0x40022100 + 802dd50: 40022300 .word 0x40022300 + 802dd54: 58026300 .word 0x58026300 + 802dd58: 58026000 .word 0x58026000 + 802dd5c: cb840000 .word 0xcb840000 + 802dd60: 24000118 .word 0x24000118 + 802dd64: 053e2d63 .word 0x053e2d63 + 802dd68: c7520000 .word 0xc7520000 + 802dd6c: cfb80000 .word 0xcfb80000 + +0802dd70 : * stopped. * @param hadc ADC handle * @retval None. */ void ADC_ConfigureBoostMode(ADC_HandleTypeDef *hadc) { - 802dd30: b580 push {r7, lr} - 802dd32: b084 sub sp, #16 - 802dd34: af00 add r7, sp, #0 - 802dd36: 6078 str r0, [r7, #4] + 802dd70: b580 push {r7, lr} + 802dd72: b084 sub sp, #16 + 802dd74: af00 add r7, sp, #0 + 802dd76: 6078 str r0, [r7, #4] uint32_t freq; if (ADC_IS_SYNCHRONOUS_CLOCK_MODE(hadc)) - 802dd38: 687b ldr r3, [r7, #4] - 802dd3a: 681b ldr r3, [r3, #0] - 802dd3c: 4a79 ldr r2, [pc, #484] ; (802df24 ) - 802dd3e: 4293 cmp r3, r2 - 802dd40: d004 beq.n 802dd4c - 802dd42: 687b ldr r3, [r7, #4] - 802dd44: 681b ldr r3, [r3, #0] - 802dd46: 4a78 ldr r2, [pc, #480] ; (802df28 ) - 802dd48: 4293 cmp r3, r2 - 802dd4a: d109 bne.n 802dd60 - 802dd4c: 4b77 ldr r3, [pc, #476] ; (802df2c ) - 802dd4e: 689b ldr r3, [r3, #8] - 802dd50: f403 3340 and.w r3, r3, #196608 ; 0x30000 - 802dd54: 2b00 cmp r3, #0 - 802dd56: bf14 ite ne - 802dd58: 2301 movne r3, #1 - 802dd5a: 2300 moveq r3, #0 - 802dd5c: b2db uxtb r3, r3 - 802dd5e: e008 b.n 802dd72 - 802dd60: 4b73 ldr r3, [pc, #460] ; (802df30 ) - 802dd62: 689b ldr r3, [r3, #8] - 802dd64: f403 3340 and.w r3, r3, #196608 ; 0x30000 - 802dd68: 2b00 cmp r3, #0 - 802dd6a: bf14 ite ne - 802dd6c: 2301 movne r3, #1 - 802dd6e: 2300 moveq r3, #0 - 802dd70: b2db uxtb r3, r3 - 802dd72: 2b00 cmp r3, #0 - 802dd74: d01c beq.n 802ddb0 + 802dd78: 687b ldr r3, [r7, #4] + 802dd7a: 681b ldr r3, [r3, #0] + 802dd7c: 4a79 ldr r2, [pc, #484] ; (802df64 ) + 802dd7e: 4293 cmp r3, r2 + 802dd80: d004 beq.n 802dd8c + 802dd82: 687b ldr r3, [r7, #4] + 802dd84: 681b ldr r3, [r3, #0] + 802dd86: 4a78 ldr r2, [pc, #480] ; (802df68 ) + 802dd88: 4293 cmp r3, r2 + 802dd8a: d109 bne.n 802dda0 + 802dd8c: 4b77 ldr r3, [pc, #476] ; (802df6c ) + 802dd8e: 689b ldr r3, [r3, #8] + 802dd90: f403 3340 and.w r3, r3, #196608 ; 0x30000 + 802dd94: 2b00 cmp r3, #0 + 802dd96: bf14 ite ne + 802dd98: 2301 movne r3, #1 + 802dd9a: 2300 moveq r3, #0 + 802dd9c: b2db uxtb r3, r3 + 802dd9e: e008 b.n 802ddb2 + 802dda0: 4b73 ldr r3, [pc, #460] ; (802df70 ) + 802dda2: 689b ldr r3, [r3, #8] + 802dda4: f403 3340 and.w r3, r3, #196608 ; 0x30000 + 802dda8: 2b00 cmp r3, #0 + 802ddaa: bf14 ite ne + 802ddac: 2301 movne r3, #1 + 802ddae: 2300 moveq r3, #0 + 802ddb0: b2db uxtb r3, r3 + 802ddb2: 2b00 cmp r3, #0 + 802ddb4: d01c beq.n 802ddf0 { freq = HAL_RCC_GetHCLKFreq(); - 802dd76: f008 fa5b bl 8036230 - 802dd7a: 60f8 str r0, [r7, #12] + 802ddb6: f008 fa5b bl 8036270 + 802ddba: 60f8 str r0, [r7, #12] switch (hadc->Init.ClockPrescaler) - 802dd7c: 687b ldr r3, [r7, #4] - 802dd7e: 685b ldr r3, [r3, #4] - 802dd80: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 - 802dd84: d010 beq.n 802dda8 - 802dd86: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 - 802dd8a: d871 bhi.n 802de70 - 802dd8c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 802dd90: d002 beq.n 802dd98 - 802dd92: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 802dd96: d16b bne.n 802de70 + 802ddbc: 687b ldr r3, [r7, #4] + 802ddbe: 685b ldr r3, [r3, #4] + 802ddc0: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 + 802ddc4: d010 beq.n 802dde8 + 802ddc6: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 + 802ddca: d871 bhi.n 802deb0 + 802ddcc: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 802ddd0: d002 beq.n 802ddd8 + 802ddd2: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 802ddd6: d16b bne.n 802deb0 { case ADC_CLOCK_SYNC_PCLK_DIV1: case ADC_CLOCK_SYNC_PCLK_DIV2: freq /= (hadc->Init.ClockPrescaler >> ADC_CCR_CKMODE_Pos); - 802dd98: 687b ldr r3, [r7, #4] - 802dd9a: 685b ldr r3, [r3, #4] - 802dd9c: 0c1b lsrs r3, r3, #16 - 802dd9e: 68fa ldr r2, [r7, #12] - 802dda0: fbb2 f3f3 udiv r3, r2, r3 - 802dda4: 60fb str r3, [r7, #12] + 802ddd8: 687b ldr r3, [r7, #4] + 802ddda: 685b ldr r3, [r3, #4] + 802dddc: 0c1b lsrs r3, r3, #16 + 802ddde: 68fa ldr r2, [r7, #12] + 802dde0: fbb2 f3f3 udiv r3, r2, r3 + 802dde4: 60fb str r3, [r7, #12] break; - 802dda6: e066 b.n 802de76 + 802dde6: e066 b.n 802deb6 case ADC_CLOCK_SYNC_PCLK_DIV4: freq /= 4UL; - 802dda8: 68fb ldr r3, [r7, #12] - 802ddaa: 089b lsrs r3, r3, #2 - 802ddac: 60fb str r3, [r7, #12] + 802dde8: 68fb ldr r3, [r7, #12] + 802ddea: 089b lsrs r3, r3, #2 + 802ddec: 60fb str r3, [r7, #12] break; - 802ddae: e062 b.n 802de76 + 802ddee: e062 b.n 802deb6 break; } } else { freq = HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_ADC); - 802ddb0: f44f 2000 mov.w r0, #524288 ; 0x80000 - 802ddb4: f009 f9fa bl 80371ac - 802ddb8: 60f8 str r0, [r7, #12] + 802ddf0: f44f 2000 mov.w r0, #524288 ; 0x80000 + 802ddf4: f009 f9fa bl 80371ec + 802ddf8: 60f8 str r0, [r7, #12] switch (hadc->Init.ClockPrescaler) - 802ddba: 687b ldr r3, [r7, #4] - 802ddbc: 685b ldr r3, [r3, #4] - 802ddbe: f5b3 1f30 cmp.w r3, #2883584 ; 0x2c0000 - 802ddc2: d051 beq.n 802de68 - 802ddc4: f5b3 1f30 cmp.w r3, #2883584 ; 0x2c0000 - 802ddc8: d854 bhi.n 802de74 - 802ddca: f5b3 1f20 cmp.w r3, #2621440 ; 0x280000 - 802ddce: d047 beq.n 802de60 - 802ddd0: f5b3 1f20 cmp.w r3, #2621440 ; 0x280000 - 802ddd4: d84e bhi.n 802de74 - 802ddd6: f5b3 1f10 cmp.w r3, #2359296 ; 0x240000 - 802ddda: d03d beq.n 802de58 - 802dddc: f5b3 1f10 cmp.w r3, #2359296 ; 0x240000 - 802dde0: d848 bhi.n 802de74 - 802dde2: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 802dde6: d033 beq.n 802de50 - 802dde8: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 802ddec: d842 bhi.n 802de74 - 802ddee: f5b3 1fe0 cmp.w r3, #1835008 ; 0x1c0000 - 802ddf2: d029 beq.n 802de48 - 802ddf4: f5b3 1fe0 cmp.w r3, #1835008 ; 0x1c0000 - 802ddf8: d83c bhi.n 802de74 - 802ddfa: f5b3 1fc0 cmp.w r3, #1572864 ; 0x180000 - 802ddfe: d01a beq.n 802de36 - 802de00: f5b3 1fc0 cmp.w r3, #1572864 ; 0x180000 - 802de04: d836 bhi.n 802de74 - 802de06: f5b3 1fa0 cmp.w r3, #1310720 ; 0x140000 - 802de0a: d014 beq.n 802de36 - 802de0c: f5b3 1fa0 cmp.w r3, #1310720 ; 0x140000 - 802de10: d830 bhi.n 802de74 - 802de12: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 802de16: d00e beq.n 802de36 - 802de18: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 802de1c: d82a bhi.n 802de74 - 802de1e: f5b3 2f40 cmp.w r3, #786432 ; 0xc0000 - 802de22: d008 beq.n 802de36 - 802de24: f5b3 2f40 cmp.w r3, #786432 ; 0xc0000 - 802de28: d824 bhi.n 802de74 - 802de2a: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 - 802de2e: d002 beq.n 802de36 - 802de30: f5b3 2f00 cmp.w r3, #524288 ; 0x80000 - 802de34: d11e bne.n 802de74 + 802ddfa: 687b ldr r3, [r7, #4] + 802ddfc: 685b ldr r3, [r3, #4] + 802ddfe: f5b3 1f30 cmp.w r3, #2883584 ; 0x2c0000 + 802de02: d051 beq.n 802dea8 + 802de04: f5b3 1f30 cmp.w r3, #2883584 ; 0x2c0000 + 802de08: d854 bhi.n 802deb4 + 802de0a: f5b3 1f20 cmp.w r3, #2621440 ; 0x280000 + 802de0e: d047 beq.n 802dea0 + 802de10: f5b3 1f20 cmp.w r3, #2621440 ; 0x280000 + 802de14: d84e bhi.n 802deb4 + 802de16: f5b3 1f10 cmp.w r3, #2359296 ; 0x240000 + 802de1a: d03d beq.n 802de98 + 802de1c: f5b3 1f10 cmp.w r3, #2359296 ; 0x240000 + 802de20: d848 bhi.n 802deb4 + 802de22: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 802de26: d033 beq.n 802de90 + 802de28: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 802de2c: d842 bhi.n 802deb4 + 802de2e: f5b3 1fe0 cmp.w r3, #1835008 ; 0x1c0000 + 802de32: d029 beq.n 802de88 + 802de34: f5b3 1fe0 cmp.w r3, #1835008 ; 0x1c0000 + 802de38: d83c bhi.n 802deb4 + 802de3a: f5b3 1fc0 cmp.w r3, #1572864 ; 0x180000 + 802de3e: d01a beq.n 802de76 + 802de40: f5b3 1fc0 cmp.w r3, #1572864 ; 0x180000 + 802de44: d836 bhi.n 802deb4 + 802de46: f5b3 1fa0 cmp.w r3, #1310720 ; 0x140000 + 802de4a: d014 beq.n 802de76 + 802de4c: f5b3 1fa0 cmp.w r3, #1310720 ; 0x140000 + 802de50: d830 bhi.n 802deb4 + 802de52: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 802de56: d00e beq.n 802de76 + 802de58: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 802de5c: d82a bhi.n 802deb4 + 802de5e: f5b3 2f40 cmp.w r3, #786432 ; 0xc0000 + 802de62: d008 beq.n 802de76 + 802de64: f5b3 2f40 cmp.w r3, #786432 ; 0xc0000 + 802de68: d824 bhi.n 802deb4 + 802de6a: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 + 802de6e: d002 beq.n 802de76 + 802de70: f5b3 2f00 cmp.w r3, #524288 ; 0x80000 + 802de74: d11e bne.n 802deb4 case ADC_CLOCK_ASYNC_DIV4: case ADC_CLOCK_ASYNC_DIV6: case ADC_CLOCK_ASYNC_DIV8: case ADC_CLOCK_ASYNC_DIV10: case ADC_CLOCK_ASYNC_DIV12: freq /= ((hadc->Init.ClockPrescaler >> ADC_CCR_PRESC_Pos) << 1UL); - 802de36: 687b ldr r3, [r7, #4] - 802de38: 685b ldr r3, [r3, #4] - 802de3a: 0c9b lsrs r3, r3, #18 - 802de3c: 005b lsls r3, r3, #1 - 802de3e: 68fa ldr r2, [r7, #12] - 802de40: fbb2 f3f3 udiv r3, r2, r3 - 802de44: 60fb str r3, [r7, #12] + 802de76: 687b ldr r3, [r7, #4] + 802de78: 685b ldr r3, [r3, #4] + 802de7a: 0c9b lsrs r3, r3, #18 + 802de7c: 005b lsls r3, r3, #1 + 802de7e: 68fa ldr r2, [r7, #12] + 802de80: fbb2 f3f3 udiv r3, r2, r3 + 802de84: 60fb str r3, [r7, #12] break; - 802de46: e016 b.n 802de76 + 802de86: e016 b.n 802deb6 case ADC_CLOCK_ASYNC_DIV16: freq /= 16UL; - 802de48: 68fb ldr r3, [r7, #12] - 802de4a: 091b lsrs r3, r3, #4 - 802de4c: 60fb str r3, [r7, #12] + 802de88: 68fb ldr r3, [r7, #12] + 802de8a: 091b lsrs r3, r3, #4 + 802de8c: 60fb str r3, [r7, #12] break; - 802de4e: e012 b.n 802de76 + 802de8e: e012 b.n 802deb6 case ADC_CLOCK_ASYNC_DIV32: freq /= 32UL; - 802de50: 68fb ldr r3, [r7, #12] - 802de52: 095b lsrs r3, r3, #5 - 802de54: 60fb str r3, [r7, #12] + 802de90: 68fb ldr r3, [r7, #12] + 802de92: 095b lsrs r3, r3, #5 + 802de94: 60fb str r3, [r7, #12] break; - 802de56: e00e b.n 802de76 + 802de96: e00e b.n 802deb6 case ADC_CLOCK_ASYNC_DIV64: freq /= 64UL; - 802de58: 68fb ldr r3, [r7, #12] - 802de5a: 099b lsrs r3, r3, #6 - 802de5c: 60fb str r3, [r7, #12] + 802de98: 68fb ldr r3, [r7, #12] + 802de9a: 099b lsrs r3, r3, #6 + 802de9c: 60fb str r3, [r7, #12] break; - 802de5e: e00a b.n 802de76 + 802de9e: e00a b.n 802deb6 case ADC_CLOCK_ASYNC_DIV128: freq /= 128UL; - 802de60: 68fb ldr r3, [r7, #12] - 802de62: 09db lsrs r3, r3, #7 - 802de64: 60fb str r3, [r7, #12] + 802dea0: 68fb ldr r3, [r7, #12] + 802dea2: 09db lsrs r3, r3, #7 + 802dea4: 60fb str r3, [r7, #12] break; - 802de66: e006 b.n 802de76 + 802dea6: e006 b.n 802deb6 case ADC_CLOCK_ASYNC_DIV256: freq /= 256UL; - 802de68: 68fb ldr r3, [r7, #12] - 802de6a: 0a1b lsrs r3, r3, #8 - 802de6c: 60fb str r3, [r7, #12] + 802dea8: 68fb ldr r3, [r7, #12] + 802deaa: 0a1b lsrs r3, r3, #8 + 802deac: 60fb str r3, [r7, #12] break; - 802de6e: e002 b.n 802de76 + 802deae: e002 b.n 802deb6 break; - 802de70: bf00 nop - 802de72: e000 b.n 802de76 + 802deb0: bf00 nop + 802deb2: e000 b.n 802deb6 default: break; - 802de74: bf00 nop + 802deb4: bf00 nop else /* if(freq > 25000000UL) */ { MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, ADC_CR_BOOST_1 | ADC_CR_BOOST_0); } #else if (HAL_GetREVID() <= REV_ID_Y) /* STM32H7 silicon Rev.Y */ - 802de76: f7ff f8bd bl 802cff4 - 802de7a: 4603 mov r3, r0 - 802de7c: f241 0203 movw r2, #4099 ; 0x1003 - 802de80: 4293 cmp r3, r2 - 802de82: d815 bhi.n 802deb0 + 802deb6: f7ff f8bd bl 802d034 + 802deba: 4603 mov r3, r0 + 802debc: f241 0203 movw r2, #4099 ; 0x1003 + 802dec0: 4293 cmp r3, r2 + 802dec2: d815 bhi.n 802def0 { if (freq > 20000000UL) - 802de84: 68fb ldr r3, [r7, #12] - 802de86: 4a2b ldr r2, [pc, #172] ; (802df34 ) - 802de88: 4293 cmp r3, r2 - 802de8a: d908 bls.n 802de9e + 802dec4: 68fb ldr r3, [r7, #12] + 802dec6: 4a2b ldr r2, [pc, #172] ; (802df74 ) + 802dec8: 4293 cmp r3, r2 + 802deca: d908 bls.n 802dede { SET_BIT(hadc->Instance->CR, ADC_CR_BOOST_0); - 802de8c: 687b ldr r3, [r7, #4] - 802de8e: 681b ldr r3, [r3, #0] - 802de90: 689a ldr r2, [r3, #8] - 802de92: 687b ldr r3, [r7, #4] - 802de94: 681b ldr r3, [r3, #0] - 802de96: f442 7280 orr.w r2, r2, #256 ; 0x100 - 802de9a: 609a str r2, [r3, #8] + 802decc: 687b ldr r3, [r7, #4] + 802dece: 681b ldr r3, [r3, #0] + 802ded0: 689a ldr r2, [r3, #8] + 802ded2: 687b ldr r3, [r7, #4] + 802ded4: 681b ldr r3, [r3, #0] + 802ded6: f442 7280 orr.w r2, r2, #256 ; 0x100 + 802deda: 609a str r2, [r3, #8] { MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, ADC_CR_BOOST_1 | ADC_CR_BOOST_0); } } #endif /* ADC_VER_V5_3 */ } - 802de9c: e03e b.n 802df1c + 802dedc: e03e b.n 802df5c CLEAR_BIT(hadc->Instance->CR, ADC_CR_BOOST_0); - 802de9e: 687b ldr r3, [r7, #4] - 802dea0: 681b ldr r3, [r3, #0] - 802dea2: 689a ldr r2, [r3, #8] - 802dea4: 687b ldr r3, [r7, #4] - 802dea6: 681b ldr r3, [r3, #0] - 802dea8: f422 7280 bic.w r2, r2, #256 ; 0x100 - 802deac: 609a str r2, [r3, #8] -} - 802deae: e035 b.n 802df1c + 802dede: 687b ldr r3, [r7, #4] + 802dee0: 681b ldr r3, [r3, #0] + 802dee2: 689a ldr r2, [r3, #8] + 802dee4: 687b ldr r3, [r7, #4] + 802dee6: 681b ldr r3, [r3, #0] + 802dee8: f422 7280 bic.w r2, r2, #256 ; 0x100 + 802deec: 609a str r2, [r3, #8] +} + 802deee: e035 b.n 802df5c freq /= 2U; /* divider by 2 for Rev.V */ - 802deb0: 68fb ldr r3, [r7, #12] - 802deb2: 085b lsrs r3, r3, #1 - 802deb4: 60fb str r3, [r7, #12] + 802def0: 68fb ldr r3, [r7, #12] + 802def2: 085b lsrs r3, r3, #1 + 802def4: 60fb str r3, [r7, #12] if (freq <= 6250000UL) - 802deb6: 68fb ldr r3, [r7, #12] - 802deb8: 4a1f ldr r2, [pc, #124] ; (802df38 ) - 802deba: 4293 cmp r3, r2 - 802debc: d808 bhi.n 802ded0 + 802def6: 68fb ldr r3, [r7, #12] + 802def8: 4a1f ldr r2, [pc, #124] ; (802df78 ) + 802defa: 4293 cmp r3, r2 + 802defc: d808 bhi.n 802df10 MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, 0UL); - 802debe: 687b ldr r3, [r7, #4] - 802dec0: 681b ldr r3, [r3, #0] - 802dec2: 689a ldr r2, [r3, #8] - 802dec4: 687b ldr r3, [r7, #4] - 802dec6: 681b ldr r3, [r3, #0] - 802dec8: f422 7240 bic.w r2, r2, #768 ; 0x300 - 802decc: 609a str r2, [r3, #8] -} - 802dece: e025 b.n 802df1c + 802defe: 687b ldr r3, [r7, #4] + 802df00: 681b ldr r3, [r3, #0] + 802df02: 689a ldr r2, [r3, #8] + 802df04: 687b ldr r3, [r7, #4] + 802df06: 681b ldr r3, [r3, #0] + 802df08: f422 7240 bic.w r2, r2, #768 ; 0x300 + 802df0c: 609a str r2, [r3, #8] +} + 802df0e: e025 b.n 802df5c else if (freq <= 12500000UL) - 802ded0: 68fb ldr r3, [r7, #12] - 802ded2: 4a1a ldr r2, [pc, #104] ; (802df3c ) - 802ded4: 4293 cmp r3, r2 - 802ded6: d80a bhi.n 802deee + 802df10: 68fb ldr r3, [r7, #12] + 802df12: 4a1a ldr r2, [pc, #104] ; (802df7c ) + 802df14: 4293 cmp r3, r2 + 802df16: d80a bhi.n 802df2e MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, ADC_CR_BOOST_0); - 802ded8: 687b ldr r3, [r7, #4] - 802deda: 681b ldr r3, [r3, #0] - 802dedc: 689b ldr r3, [r3, #8] - 802dede: f423 7240 bic.w r2, r3, #768 ; 0x300 - 802dee2: 687b ldr r3, [r7, #4] - 802dee4: 681b ldr r3, [r3, #0] - 802dee6: f442 7280 orr.w r2, r2, #256 ; 0x100 - 802deea: 609a str r2, [r3, #8] -} - 802deec: e016 b.n 802df1c + 802df18: 687b ldr r3, [r7, #4] + 802df1a: 681b ldr r3, [r3, #0] + 802df1c: 689b ldr r3, [r3, #8] + 802df1e: f423 7240 bic.w r2, r3, #768 ; 0x300 + 802df22: 687b ldr r3, [r7, #4] + 802df24: 681b ldr r3, [r3, #0] + 802df26: f442 7280 orr.w r2, r2, #256 ; 0x100 + 802df2a: 609a str r2, [r3, #8] +} + 802df2c: e016 b.n 802df5c else if (freq <= 25000000UL) - 802deee: 68fb ldr r3, [r7, #12] - 802def0: 4a13 ldr r2, [pc, #76] ; (802df40 ) - 802def2: 4293 cmp r3, r2 - 802def4: d80a bhi.n 802df0c + 802df2e: 68fb ldr r3, [r7, #12] + 802df30: 4a13 ldr r2, [pc, #76] ; (802df80 ) + 802df32: 4293 cmp r3, r2 + 802df34: d80a bhi.n 802df4c MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, ADC_CR_BOOST_1); - 802def6: 687b ldr r3, [r7, #4] - 802def8: 681b ldr r3, [r3, #0] - 802defa: 689b ldr r3, [r3, #8] - 802defc: f423 7240 bic.w r2, r3, #768 ; 0x300 - 802df00: 687b ldr r3, [r7, #4] - 802df02: 681b ldr r3, [r3, #0] - 802df04: f442 7200 orr.w r2, r2, #512 ; 0x200 - 802df08: 609a str r2, [r3, #8] -} - 802df0a: e007 b.n 802df1c + 802df36: 687b ldr r3, [r7, #4] + 802df38: 681b ldr r3, [r3, #0] + 802df3a: 689b ldr r3, [r3, #8] + 802df3c: f423 7240 bic.w r2, r3, #768 ; 0x300 + 802df40: 687b ldr r3, [r7, #4] + 802df42: 681b ldr r3, [r3, #0] + 802df44: f442 7200 orr.w r2, r2, #512 ; 0x200 + 802df48: 609a str r2, [r3, #8] +} + 802df4a: e007 b.n 802df5c MODIFY_REG(hadc->Instance->CR, ADC_CR_BOOST, ADC_CR_BOOST_1 | ADC_CR_BOOST_0); - 802df0c: 687b ldr r3, [r7, #4] - 802df0e: 681b ldr r3, [r3, #0] - 802df10: 689a ldr r2, [r3, #8] - 802df12: 687b ldr r3, [r7, #4] - 802df14: 681b ldr r3, [r3, #0] - 802df16: f442 7240 orr.w r2, r2, #768 ; 0x300 - 802df1a: 609a str r2, [r3, #8] -} - 802df1c: bf00 nop - 802df1e: 3710 adds r7, #16 - 802df20: 46bd mov sp, r7 - 802df22: bd80 pop {r7, pc} - 802df24: 40022000 .word 0x40022000 - 802df28: 40022100 .word 0x40022100 - 802df2c: 40022300 .word 0x40022300 - 802df30: 58026300 .word 0x58026300 - 802df34: 01312d00 .word 0x01312d00 - 802df38: 005f5e10 .word 0x005f5e10 - 802df3c: 00bebc20 .word 0x00bebc20 - 802df40: 017d7840 .word 0x017d7840 - -0802df44 <__NVIC_SetPriorityGrouping>: -{ - 802df44: b480 push {r7} - 802df46: b085 sub sp, #20 - 802df48: af00 add r7, sp, #0 - 802df4a: 6078 str r0, [r7, #4] - uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ 802df4c: 687b ldr r3, [r7, #4] - 802df4e: f003 0307 and.w r3, r3, #7 - 802df52: 60fb str r3, [r7, #12] + 802df4e: 681b ldr r3, [r3, #0] + 802df50: 689a ldr r2, [r3, #8] + 802df52: 687b ldr r3, [r7, #4] + 802df54: 681b ldr r3, [r3, #0] + 802df56: f442 7240 orr.w r2, r2, #768 ; 0x300 + 802df5a: 609a str r2, [r3, #8] +} + 802df5c: bf00 nop + 802df5e: 3710 adds r7, #16 + 802df60: 46bd mov sp, r7 + 802df62: bd80 pop {r7, pc} + 802df64: 40022000 .word 0x40022000 + 802df68: 40022100 .word 0x40022100 + 802df6c: 40022300 .word 0x40022300 + 802df70: 58026300 .word 0x58026300 + 802df74: 01312d00 .word 0x01312d00 + 802df78: 005f5e10 .word 0x005f5e10 + 802df7c: 00bebc20 .word 0x00bebc20 + 802df80: 017d7840 .word 0x017d7840 + +0802df84 <__NVIC_SetPriorityGrouping>: +{ + 802df84: b480 push {r7} + 802df86: b085 sub sp, #20 + 802df88: af00 add r7, sp, #0 + 802df8a: 6078 str r0, [r7, #4] + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + 802df8c: 687b ldr r3, [r7, #4] + 802df8e: f003 0307 and.w r3, r3, #7 + 802df92: 60fb str r3, [r7, #12] reg_value = SCB->AIRCR; /* read old register configuration */ - 802df54: 4b0b ldr r3, [pc, #44] ; (802df84 <__NVIC_SetPriorityGrouping+0x40>) - 802df56: 68db ldr r3, [r3, #12] - 802df58: 60bb str r3, [r7, #8] + 802df94: 4b0b ldr r3, [pc, #44] ; (802dfc4 <__NVIC_SetPriorityGrouping+0x40>) + 802df96: 68db ldr r3, [r3, #12] + 802df98: 60bb str r3, [r7, #8] reg_value &= ~((uint32_t)(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk)); /* clear bits to change */ - 802df5a: 68ba ldr r2, [r7, #8] - 802df5c: f64f 03ff movw r3, #63743 ; 0xf8ff - 802df60: 4013 ands r3, r2 - 802df62: 60bb str r3, [r7, #8] + 802df9a: 68ba ldr r2, [r7, #8] + 802df9c: f64f 03ff movw r3, #63743 ; 0xf8ff + 802dfa0: 4013 ands r3, r2 + 802dfa2: 60bb str r3, [r7, #8] (PriorityGroupTmp << SCB_AIRCR_PRIGROUP_Pos) ); /* Insert write key and priority group */ - 802df64: 68fb ldr r3, [r7, #12] - 802df66: 021a lsls r2, r3, #8 + 802dfa4: 68fb ldr r3, [r7, #12] + 802dfa6: 021a lsls r2, r3, #8 ((uint32_t)0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | - 802df68: 68bb ldr r3, [r7, #8] - 802df6a: 431a orrs r2, r3 + 802dfa8: 68bb ldr r3, [r7, #8] + 802dfaa: 431a orrs r2, r3 reg_value = (reg_value | - 802df6c: 4b06 ldr r3, [pc, #24] ; (802df88 <__NVIC_SetPriorityGrouping+0x44>) - 802df6e: 4313 orrs r3, r2 - 802df70: 60bb str r3, [r7, #8] + 802dfac: 4b06 ldr r3, [pc, #24] ; (802dfc8 <__NVIC_SetPriorityGrouping+0x44>) + 802dfae: 4313 orrs r3, r2 + 802dfb0: 60bb str r3, [r7, #8] SCB->AIRCR = reg_value; - 802df72: 4a04 ldr r2, [pc, #16] ; (802df84 <__NVIC_SetPriorityGrouping+0x40>) - 802df74: 68bb ldr r3, [r7, #8] - 802df76: 60d3 str r3, [r2, #12] -} - 802df78: bf00 nop - 802df7a: 3714 adds r7, #20 - 802df7c: 46bd mov sp, r7 - 802df7e: f85d 7b04 ldr.w r7, [sp], #4 - 802df82: 4770 bx lr - 802df84: e000ed00 .word 0xe000ed00 - 802df88: 05fa0000 .word 0x05fa0000 - -0802df8c <__NVIC_GetPriorityGrouping>: -{ - 802df8c: b480 push {r7} - 802df8e: af00 add r7, sp, #0 + 802dfb2: 4a04 ldr r2, [pc, #16] ; (802dfc4 <__NVIC_SetPriorityGrouping+0x40>) + 802dfb4: 68bb ldr r3, [r7, #8] + 802dfb6: 60d3 str r3, [r2, #12] +} + 802dfb8: bf00 nop + 802dfba: 3714 adds r7, #20 + 802dfbc: 46bd mov sp, r7 + 802dfbe: f85d 7b04 ldr.w r7, [sp], #4 + 802dfc2: 4770 bx lr + 802dfc4: e000ed00 .word 0xe000ed00 + 802dfc8: 05fa0000 .word 0x05fa0000 + +0802dfcc <__NVIC_GetPriorityGrouping>: +{ + 802dfcc: b480 push {r7} + 802dfce: af00 add r7, sp, #0 return ((uint32_t)((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); - 802df90: 4b04 ldr r3, [pc, #16] ; (802dfa4 <__NVIC_GetPriorityGrouping+0x18>) - 802df92: 68db ldr r3, [r3, #12] - 802df94: 0a1b lsrs r3, r3, #8 - 802df96: f003 0307 and.w r3, r3, #7 -} - 802df9a: 4618 mov r0, r3 - 802df9c: 46bd mov sp, r7 - 802df9e: f85d 7b04 ldr.w r7, [sp], #4 - 802dfa2: 4770 bx lr - 802dfa4: e000ed00 .word 0xe000ed00 - -0802dfa8 <__NVIC_EnableIRQ>: -{ - 802dfa8: b480 push {r7} - 802dfaa: b083 sub sp, #12 - 802dfac: af00 add r7, sp, #0 - 802dfae: 4603 mov r3, r0 - 802dfb0: 80fb strh r3, [r7, #6] + 802dfd0: 4b04 ldr r3, [pc, #16] ; (802dfe4 <__NVIC_GetPriorityGrouping+0x18>) + 802dfd2: 68db ldr r3, [r3, #12] + 802dfd4: 0a1b lsrs r3, r3, #8 + 802dfd6: f003 0307 and.w r3, r3, #7 +} + 802dfda: 4618 mov r0, r3 + 802dfdc: 46bd mov sp, r7 + 802dfde: f85d 7b04 ldr.w r7, [sp], #4 + 802dfe2: 4770 bx lr + 802dfe4: e000ed00 .word 0xe000ed00 + +0802dfe8 <__NVIC_EnableIRQ>: +{ + 802dfe8: b480 push {r7} + 802dfea: b083 sub sp, #12 + 802dfec: af00 add r7, sp, #0 + 802dfee: 4603 mov r3, r0 + 802dff0: 80fb strh r3, [r7, #6] if ((int32_t)(IRQn) >= 0) - 802dfb2: f9b7 3006 ldrsh.w r3, [r7, #6] - 802dfb6: 2b00 cmp r3, #0 - 802dfb8: db0b blt.n 802dfd2 <__NVIC_EnableIRQ+0x2a> + 802dff2: f9b7 3006 ldrsh.w r3, [r7, #6] + 802dff6: 2b00 cmp r3, #0 + 802dff8: db0b blt.n 802e012 <__NVIC_EnableIRQ+0x2a> NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); - 802dfba: 88fb ldrh r3, [r7, #6] - 802dfbc: f003 021f and.w r2, r3, #31 - 802dfc0: 4907 ldr r1, [pc, #28] ; (802dfe0 <__NVIC_EnableIRQ+0x38>) - 802dfc2: f9b7 3006 ldrsh.w r3, [r7, #6] - 802dfc6: 095b lsrs r3, r3, #5 - 802dfc8: 2001 movs r0, #1 - 802dfca: fa00 f202 lsl.w r2, r0, r2 - 802dfce: f841 2023 str.w r2, [r1, r3, lsl #2] -} - 802dfd2: bf00 nop - 802dfd4: 370c adds r7, #12 - 802dfd6: 46bd mov sp, r7 - 802dfd8: f85d 7b04 ldr.w r7, [sp], #4 - 802dfdc: 4770 bx lr - 802dfde: bf00 nop - 802dfe0: e000e100 .word 0xe000e100 - -0802dfe4 <__NVIC_SetPriority>: -{ - 802dfe4: b480 push {r7} - 802dfe6: b083 sub sp, #12 - 802dfe8: af00 add r7, sp, #0 - 802dfea: 4603 mov r3, r0 - 802dfec: 6039 str r1, [r7, #0] - 802dfee: 80fb strh r3, [r7, #6] + 802dffa: 88fb ldrh r3, [r7, #6] + 802dffc: f003 021f and.w r2, r3, #31 + 802e000: 4907 ldr r1, [pc, #28] ; (802e020 <__NVIC_EnableIRQ+0x38>) + 802e002: f9b7 3006 ldrsh.w r3, [r7, #6] + 802e006: 095b lsrs r3, r3, #5 + 802e008: 2001 movs r0, #1 + 802e00a: fa00 f202 lsl.w r2, r0, r2 + 802e00e: f841 2023 str.w r2, [r1, r3, lsl #2] +} + 802e012: bf00 nop + 802e014: 370c adds r7, #12 + 802e016: 46bd mov sp, r7 + 802e018: f85d 7b04 ldr.w r7, [sp], #4 + 802e01c: 4770 bx lr + 802e01e: bf00 nop + 802e020: e000e100 .word 0xe000e100 + +0802e024 <__NVIC_SetPriority>: +{ + 802e024: b480 push {r7} + 802e026: b083 sub sp, #12 + 802e028: af00 add r7, sp, #0 + 802e02a: 4603 mov r3, r0 + 802e02c: 6039 str r1, [r7, #0] + 802e02e: 80fb strh r3, [r7, #6] if ((int32_t)(IRQn) >= 0) - 802dff0: f9b7 3006 ldrsh.w r3, [r7, #6] - 802dff4: 2b00 cmp r3, #0 - 802dff6: db0a blt.n 802e00e <__NVIC_SetPriority+0x2a> + 802e030: f9b7 3006 ldrsh.w r3, [r7, #6] + 802e034: 2b00 cmp r3, #0 + 802e036: db0a blt.n 802e04e <__NVIC_SetPriority+0x2a> NVIC->IP[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 802dff8: 683b ldr r3, [r7, #0] - 802dffa: b2da uxtb r2, r3 - 802dffc: 490c ldr r1, [pc, #48] ; (802e030 <__NVIC_SetPriority+0x4c>) - 802dffe: f9b7 3006 ldrsh.w r3, [r7, #6] - 802e002: 0112 lsls r2, r2, #4 - 802e004: b2d2 uxtb r2, r2 - 802e006: 440b add r3, r1 - 802e008: f883 2300 strb.w r2, [r3, #768] ; 0x300 -} - 802e00c: e00a b.n 802e024 <__NVIC_SetPriority+0x40> + 802e038: 683b ldr r3, [r7, #0] + 802e03a: b2da uxtb r2, r3 + 802e03c: 490c ldr r1, [pc, #48] ; (802e070 <__NVIC_SetPriority+0x4c>) + 802e03e: f9b7 3006 ldrsh.w r3, [r7, #6] + 802e042: 0112 lsls r2, r2, #4 + 802e044: b2d2 uxtb r2, r2 + 802e046: 440b add r3, r1 + 802e048: f883 2300 strb.w r2, [r3, #768] ; 0x300 +} + 802e04c: e00a b.n 802e064 <__NVIC_SetPriority+0x40> SCB->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); - 802e00e: 683b ldr r3, [r7, #0] - 802e010: b2da uxtb r2, r3 - 802e012: 4908 ldr r1, [pc, #32] ; (802e034 <__NVIC_SetPriority+0x50>) - 802e014: 88fb ldrh r3, [r7, #6] - 802e016: f003 030f and.w r3, r3, #15 - 802e01a: 3b04 subs r3, #4 - 802e01c: 0112 lsls r2, r2, #4 - 802e01e: b2d2 uxtb r2, r2 - 802e020: 440b add r3, r1 - 802e022: 761a strb r2, [r3, #24] -} - 802e024: bf00 nop - 802e026: 370c adds r7, #12 - 802e028: 46bd mov sp, r7 - 802e02a: f85d 7b04 ldr.w r7, [sp], #4 - 802e02e: 4770 bx lr - 802e030: e000e100 .word 0xe000e100 - 802e034: e000ed00 .word 0xe000ed00 - -0802e038 : -{ - 802e038: b480 push {r7} - 802e03a: b089 sub sp, #36 ; 0x24 - 802e03c: af00 add r7, sp, #0 - 802e03e: 60f8 str r0, [r7, #12] - 802e040: 60b9 str r1, [r7, #8] - 802e042: 607a str r2, [r7, #4] + 802e04e: 683b ldr r3, [r7, #0] + 802e050: b2da uxtb r2, r3 + 802e052: 4908 ldr r1, [pc, #32] ; (802e074 <__NVIC_SetPriority+0x50>) + 802e054: 88fb ldrh r3, [r7, #6] + 802e056: f003 030f and.w r3, r3, #15 + 802e05a: 3b04 subs r3, #4 + 802e05c: 0112 lsls r2, r2, #4 + 802e05e: b2d2 uxtb r2, r2 + 802e060: 440b add r3, r1 + 802e062: 761a strb r2, [r3, #24] +} + 802e064: bf00 nop + 802e066: 370c adds r7, #12 + 802e068: 46bd mov sp, r7 + 802e06a: f85d 7b04 ldr.w r7, [sp], #4 + 802e06e: 4770 bx lr + 802e070: e000e100 .word 0xe000e100 + 802e074: e000ed00 .word 0xe000ed00 + +0802e078 : +{ + 802e078: b480 push {r7} + 802e07a: b089 sub sp, #36 ; 0x24 + 802e07c: af00 add r7, sp, #0 + 802e07e: 60f8 str r0, [r7, #12] + 802e080: 60b9 str r1, [r7, #8] + 802e082: 607a str r2, [r7, #4] uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ - 802e044: 68fb ldr r3, [r7, #12] - 802e046: f003 0307 and.w r3, r3, #7 - 802e04a: 61fb str r3, [r7, #28] + 802e084: 68fb ldr r3, [r7, #12] + 802e086: f003 0307 and.w r3, r3, #7 + 802e08a: 61fb str r3, [r7, #28] PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp); - 802e04c: 69fb ldr r3, [r7, #28] - 802e04e: f1c3 0307 rsb r3, r3, #7 - 802e052: 2b04 cmp r3, #4 - 802e054: bf28 it cs - 802e056: 2304 movcs r3, #4 - 802e058: 61bb str r3, [r7, #24] + 802e08c: 69fb ldr r3, [r7, #28] + 802e08e: f1c3 0307 rsb r3, r3, #7 + 802e092: 2b04 cmp r3, #4 + 802e094: bf28 it cs + 802e096: 2304 movcs r3, #4 + 802e098: 61bb str r3, [r7, #24] SubPriorityBits = ((PriorityGroupTmp + (uint32_t)(__NVIC_PRIO_BITS)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(__NVIC_PRIO_BITS)); - 802e05a: 69fb ldr r3, [r7, #28] - 802e05c: 3304 adds r3, #4 - 802e05e: 2b06 cmp r3, #6 - 802e060: d902 bls.n 802e068 - 802e062: 69fb ldr r3, [r7, #28] - 802e064: 3b03 subs r3, #3 - 802e066: e000 b.n 802e06a - 802e068: 2300 movs r3, #0 - 802e06a: 617b str r3, [r7, #20] + 802e09a: 69fb ldr r3, [r7, #28] + 802e09c: 3304 adds r3, #4 + 802e09e: 2b06 cmp r3, #6 + 802e0a0: d902 bls.n 802e0a8 + 802e0a2: 69fb ldr r3, [r7, #28] + 802e0a4: 3b03 subs r3, #3 + 802e0a6: e000 b.n 802e0aa + 802e0a8: 2300 movs r3, #0 + 802e0aa: 617b str r3, [r7, #20] ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 802e06c: f04f 32ff mov.w r2, #4294967295 - 802e070: 69bb ldr r3, [r7, #24] - 802e072: fa02 f303 lsl.w r3, r2, r3 - 802e076: 43da mvns r2, r3 - 802e078: 68bb ldr r3, [r7, #8] - 802e07a: 401a ands r2, r3 - 802e07c: 697b ldr r3, [r7, #20] - 802e07e: 409a lsls r2, r3 + 802e0ac: f04f 32ff mov.w r2, #4294967295 + 802e0b0: 69bb ldr r3, [r7, #24] + 802e0b2: fa02 f303 lsl.w r3, r2, r3 + 802e0b6: 43da mvns r2, r3 + 802e0b8: 68bb ldr r3, [r7, #8] + 802e0ba: 401a ands r2, r3 + 802e0bc: 697b ldr r3, [r7, #20] + 802e0be: 409a lsls r2, r3 ((SubPriority & (uint32_t)((1UL << (SubPriorityBits )) - 1UL))) - 802e080: f04f 31ff mov.w r1, #4294967295 - 802e084: 697b ldr r3, [r7, #20] - 802e086: fa01 f303 lsl.w r3, r1, r3 - 802e08a: 43d9 mvns r1, r3 - 802e08c: 687b ldr r3, [r7, #4] - 802e08e: 400b ands r3, r1 + 802e0c0: f04f 31ff mov.w r1, #4294967295 + 802e0c4: 697b ldr r3, [r7, #20] + 802e0c6: fa01 f303 lsl.w r3, r1, r3 + 802e0ca: 43d9 mvns r1, r3 + 802e0cc: 687b ldr r3, [r7, #4] + 802e0ce: 400b ands r3, r1 ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) | - 802e090: 4313 orrs r3, r2 + 802e0d0: 4313 orrs r3, r2 } - 802e092: 4618 mov r0, r3 - 802e094: 3724 adds r7, #36 ; 0x24 - 802e096: 46bd mov sp, r7 - 802e098: f85d 7b04 ldr.w r7, [sp], #4 - 802e09c: 4770 bx lr + 802e0d2: 4618 mov r0, r3 + 802e0d4: 3724 adds r7, #36 ; 0x24 + 802e0d6: 46bd mov sp, r7 + 802e0d8: f85d 7b04 ldr.w r7, [sp], #4 + 802e0dc: 4770 bx lr ... -0802e0a0 : +0802e0e0 : \note When the variable __Vendor_SysTickConfig is set to 1, then the function SysTick_Config is not included. In this case, the file device.h must contain a vendor-specific implementation of this function. */ __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { - 802e0a0: b580 push {r7, lr} - 802e0a2: b082 sub sp, #8 - 802e0a4: af00 add r7, sp, #0 - 802e0a6: 6078 str r0, [r7, #4] + 802e0e0: b580 push {r7, lr} + 802e0e2: b082 sub sp, #8 + 802e0e4: af00 add r7, sp, #0 + 802e0e6: 6078 str r0, [r7, #4] if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) - 802e0a8: 687b ldr r3, [r7, #4] - 802e0aa: 3b01 subs r3, #1 - 802e0ac: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 802e0b0: d301 bcc.n 802e0b6 + 802e0e8: 687b ldr r3, [r7, #4] + 802e0ea: 3b01 subs r3, #1 + 802e0ec: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 802e0f0: d301 bcc.n 802e0f6 { return (1UL); /* Reload value impossible */ - 802e0b2: 2301 movs r3, #1 - 802e0b4: e00f b.n 802e0d6 + 802e0f2: 2301 movs r3, #1 + 802e0f4: e00f b.n 802e116 } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ - 802e0b6: 4a0a ldr r2, [pc, #40] ; (802e0e0 ) - 802e0b8: 687b ldr r3, [r7, #4] - 802e0ba: 3b01 subs r3, #1 - 802e0bc: 6053 str r3, [r2, #4] + 802e0f6: 4a0a ldr r2, [pc, #40] ; (802e120 ) + 802e0f8: 687b ldr r3, [r7, #4] + 802e0fa: 3b01 subs r3, #1 + 802e0fc: 6053 str r3, [r2, #4] NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ - 802e0be: 210f movs r1, #15 - 802e0c0: f04f 30ff mov.w r0, #4294967295 - 802e0c4: f7ff ff8e bl 802dfe4 <__NVIC_SetPriority> + 802e0fe: 210f movs r1, #15 + 802e100: f04f 30ff mov.w r0, #4294967295 + 802e104: f7ff ff8e bl 802e024 <__NVIC_SetPriority> SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ - 802e0c8: 4b05 ldr r3, [pc, #20] ; (802e0e0 ) - 802e0ca: 2200 movs r2, #0 - 802e0cc: 609a str r2, [r3, #8] + 802e108: 4b05 ldr r3, [pc, #20] ; (802e120 ) + 802e10a: 2200 movs r2, #0 + 802e10c: 609a str r2, [r3, #8] SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | - 802e0ce: 4b04 ldr r3, [pc, #16] ; (802e0e0 ) - 802e0d0: 2207 movs r2, #7 - 802e0d2: 601a str r2, [r3, #0] + 802e10e: 4b04 ldr r3, [pc, #16] ; (802e120 ) + 802e110: 2207 movs r2, #7 + 802e112: 601a str r2, [r3, #0] SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */ - 802e0d4: 2300 movs r3, #0 + 802e114: 2300 movs r3, #0 } - 802e0d6: 4618 mov r0, r3 - 802e0d8: 3708 adds r7, #8 - 802e0da: 46bd mov sp, r7 - 802e0dc: bd80 pop {r7, pc} - 802e0de: bf00 nop - 802e0e0: e000e010 .word 0xe000e010 + 802e116: 4618 mov r0, r3 + 802e118: 3708 adds r7, #8 + 802e11a: 46bd mov sp, r7 + 802e11c: bd80 pop {r7, pc} + 802e11e: bf00 nop + 802e120: e000e010 .word 0xe000e010 -0802e0e4 : +0802e124 : * @note When the NVIC_PriorityGroup_0 is selected, IRQ preemption is no more possible. * The pending IRQ priority will be managed only by the subpriority. * @retval None */ void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup) { - 802e0e4: b580 push {r7, lr} - 802e0e6: b082 sub sp, #8 - 802e0e8: af00 add r7, sp, #0 - 802e0ea: 6078 str r0, [r7, #4] + 802e124: b580 push {r7, lr} + 802e126: b082 sub sp, #8 + 802e128: af00 add r7, sp, #0 + 802e12a: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_NVIC_PRIORITY_GROUP(PriorityGroup)); /* Set the PRIGROUP[10:8] bits according to the PriorityGroup parameter value */ NVIC_SetPriorityGrouping(PriorityGroup); - 802e0ec: 6878 ldr r0, [r7, #4] - 802e0ee: f7ff ff29 bl 802df44 <__NVIC_SetPriorityGrouping> + 802e12c: 6878 ldr r0, [r7, #4] + 802e12e: f7ff ff29 bl 802df84 <__NVIC_SetPriorityGrouping> } - 802e0f2: bf00 nop - 802e0f4: 3708 adds r7, #8 - 802e0f6: 46bd mov sp, r7 - 802e0f8: bd80 pop {r7, pc} + 802e132: bf00 nop + 802e134: 3708 adds r7, #8 + 802e136: 46bd mov sp, r7 + 802e138: bd80 pop {r7, pc} -0802e0fa : +0802e13a : * This parameter can be a value between 0 and 15 * A lower priority value indicates a higher priority. * @retval None */ void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority) { - 802e0fa: b580 push {r7, lr} - 802e0fc: b086 sub sp, #24 - 802e0fe: af00 add r7, sp, #0 - 802e100: 4603 mov r3, r0 - 802e102: 60b9 str r1, [r7, #8] - 802e104: 607a str r2, [r7, #4] - 802e106: 81fb strh r3, [r7, #14] + 802e13a: b580 push {r7, lr} + 802e13c: b086 sub sp, #24 + 802e13e: af00 add r7, sp, #0 + 802e140: 4603 mov r3, r0 + 802e142: 60b9 str r1, [r7, #8] + 802e144: 607a str r2, [r7, #4] + 802e146: 81fb strh r3, [r7, #14] /* Check the parameters */ assert_param(IS_NVIC_SUB_PRIORITY(SubPriority)); assert_param(IS_NVIC_PREEMPTION_PRIORITY(PreemptPriority)); prioritygroup = NVIC_GetPriorityGrouping(); - 802e108: f7ff ff40 bl 802df8c <__NVIC_GetPriorityGrouping> - 802e10c: 6178 str r0, [r7, #20] + 802e148: f7ff ff40 bl 802dfcc <__NVIC_GetPriorityGrouping> + 802e14c: 6178 str r0, [r7, #20] NVIC_SetPriority(IRQn, NVIC_EncodePriority(prioritygroup, PreemptPriority, SubPriority)); - 802e10e: 687a ldr r2, [r7, #4] - 802e110: 68b9 ldr r1, [r7, #8] - 802e112: 6978 ldr r0, [r7, #20] - 802e114: f7ff ff90 bl 802e038 - 802e118: 4602 mov r2, r0 - 802e11a: f9b7 300e ldrsh.w r3, [r7, #14] - 802e11e: 4611 mov r1, r2 - 802e120: 4618 mov r0, r3 - 802e122: f7ff ff5f bl 802dfe4 <__NVIC_SetPriority> -} - 802e126: bf00 nop - 802e128: 3718 adds r7, #24 - 802e12a: 46bd mov sp, r7 - 802e12c: bd80 pop {r7, pc} - -0802e12e : + 802e14e: 687a ldr r2, [r7, #4] + 802e150: 68b9 ldr r1, [r7, #8] + 802e152: 6978 ldr r0, [r7, #20] + 802e154: f7ff ff90 bl 802e078 + 802e158: 4602 mov r2, r0 + 802e15a: f9b7 300e ldrsh.w r3, [r7, #14] + 802e15e: 4611 mov r1, r2 + 802e160: 4618 mov r0, r3 + 802e162: f7ff ff5f bl 802e024 <__NVIC_SetPriority> +} + 802e166: bf00 nop + 802e168: 3718 adds r7, #24 + 802e16a: 46bd mov sp, r7 + 802e16c: bd80 pop {r7, pc} + +0802e16e : * This parameter can be an enumerator of IRQn_Type enumeration * (For the complete STM32 Devices IRQ Channels list, please refer to the appropriate CMSIS device file (stm32h7xxxx.h)) * @retval None */ void HAL_NVIC_EnableIRQ(IRQn_Type IRQn) { - 802e12e: b580 push {r7, lr} - 802e130: b082 sub sp, #8 - 802e132: af00 add r7, sp, #0 - 802e134: 4603 mov r3, r0 - 802e136: 80fb strh r3, [r7, #6] + 802e16e: b580 push {r7, lr} + 802e170: b082 sub sp, #8 + 802e172: af00 add r7, sp, #0 + 802e174: 4603 mov r3, r0 + 802e176: 80fb strh r3, [r7, #6] /* Check the parameters */ assert_param(IS_NVIC_DEVICE_IRQ(IRQn)); /* Enable interrupt */ NVIC_EnableIRQ(IRQn); - 802e138: f9b7 3006 ldrsh.w r3, [r7, #6] - 802e13c: 4618 mov r0, r3 - 802e13e: f7ff ff33 bl 802dfa8 <__NVIC_EnableIRQ> + 802e178: f9b7 3006 ldrsh.w r3, [r7, #6] + 802e17c: 4618 mov r0, r3 + 802e17e: f7ff ff33 bl 802dfe8 <__NVIC_EnableIRQ> } - 802e142: bf00 nop - 802e144: 3708 adds r7, #8 - 802e146: 46bd mov sp, r7 - 802e148: bd80 pop {r7, pc} + 802e182: bf00 nop + 802e184: 3708 adds r7, #8 + 802e186: 46bd mov sp, r7 + 802e188: bd80 pop {r7, pc} -0802e14a : +0802e18a : * @param TicksNumb Specifies the ticks Number of ticks between two interrupts. * @retval status - 0 Function succeeded. * - 1 Function failed. */ uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { - 802e14a: b580 push {r7, lr} - 802e14c: b082 sub sp, #8 - 802e14e: af00 add r7, sp, #0 - 802e150: 6078 str r0, [r7, #4] + 802e18a: b580 push {r7, lr} + 802e18c: b082 sub sp, #8 + 802e18e: af00 add r7, sp, #0 + 802e190: 6078 str r0, [r7, #4] return SysTick_Config(TicksNumb); - 802e152: 6878 ldr r0, [r7, #4] - 802e154: f7ff ffa4 bl 802e0a0 - 802e158: 4603 mov r3, r0 -} - 802e15a: 4618 mov r0, r3 - 802e15c: 3708 adds r7, #8 - 802e15e: 46bd mov sp, r7 - 802e160: bd80 pop {r7, pc} + 802e192: 6878 ldr r0, [r7, #4] + 802e194: f7ff ffa4 bl 802e0e0 + 802e198: 4603 mov r3, r0 +} + 802e19a: 4618 mov r0, r3 + 802e19c: 3708 adds r7, #8 + 802e19e: 46bd mov sp, r7 + 802e1a0: bd80 pop {r7, pc} ... -0802e164 : +0802e1a4 : /** * @brief Disables the MPU * @retval None */ void HAL_MPU_Disable(void) { - 802e164: b480 push {r7} - 802e166: af00 add r7, sp, #0 + 802e1a4: b480 push {r7} + 802e1a6: af00 add r7, sp, #0 __ASM volatile ("dmb 0xF":::"memory"); - 802e168: f3bf 8f5f dmb sy + 802e1a8: f3bf 8f5f dmb sy } - 802e16c: bf00 nop + 802e1ac: bf00 nop /* Make sure outstanding transfers are done */ __DMB(); /* Disable fault exceptions */ SCB->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; - 802e16e: 4b07 ldr r3, [pc, #28] ; (802e18c ) - 802e170: 6a5b ldr r3, [r3, #36] ; 0x24 - 802e172: 4a06 ldr r2, [pc, #24] ; (802e18c ) - 802e174: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 802e178: 6253 str r3, [r2, #36] ; 0x24 + 802e1ae: 4b07 ldr r3, [pc, #28] ; (802e1cc ) + 802e1b0: 6a5b ldr r3, [r3, #36] ; 0x24 + 802e1b2: 4a06 ldr r2, [pc, #24] ; (802e1cc ) + 802e1b4: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 802e1b8: 6253 str r3, [r2, #36] ; 0x24 /* Disable the MPU and clear the control register*/ MPU->CTRL = 0; - 802e17a: 4b05 ldr r3, [pc, #20] ; (802e190 ) - 802e17c: 2200 movs r2, #0 - 802e17e: 605a str r2, [r3, #4] -} - 802e180: bf00 nop - 802e182: 46bd mov sp, r7 - 802e184: f85d 7b04 ldr.w r7, [sp], #4 - 802e188: 4770 bx lr - 802e18a: bf00 nop - 802e18c: e000ed00 .word 0xe000ed00 - 802e190: e000ed90 .word 0xe000ed90 - -0802e194 : + 802e1ba: 4b05 ldr r3, [pc, #20] ; (802e1d0 ) + 802e1bc: 2200 movs r2, #0 + 802e1be: 605a str r2, [r3, #4] +} + 802e1c0: bf00 nop + 802e1c2: 46bd mov sp, r7 + 802e1c4: f85d 7b04 ldr.w r7, [sp], #4 + 802e1c8: 4770 bx lr + 802e1ca: bf00 nop + 802e1cc: e000ed00 .word 0xe000ed00 + 802e1d0: e000ed90 .word 0xe000ed90 + +0802e1d4 : * @arg MPU_PRIVILEGED_DEFAULT * @arg MPU_HFNMI_PRIVDEF * @retval None */ void HAL_MPU_Enable(uint32_t MPU_Control) { - 802e194: b480 push {r7} - 802e196: b083 sub sp, #12 - 802e198: af00 add r7, sp, #0 - 802e19a: 6078 str r0, [r7, #4] + 802e1d4: b480 push {r7} + 802e1d6: b083 sub sp, #12 + 802e1d8: af00 add r7, sp, #0 + 802e1da: 6078 str r0, [r7, #4] /* Enable the MPU */ MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; - 802e19c: 4a0b ldr r2, [pc, #44] ; (802e1cc ) - 802e19e: 687b ldr r3, [r7, #4] - 802e1a0: f043 0301 orr.w r3, r3, #1 - 802e1a4: 6053 str r3, [r2, #4] + 802e1dc: 4a0b ldr r2, [pc, #44] ; (802e20c ) + 802e1de: 687b ldr r3, [r7, #4] + 802e1e0: f043 0301 orr.w r3, r3, #1 + 802e1e4: 6053 str r3, [r2, #4] /* Enable fault exceptions */ SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; - 802e1a6: 4b0a ldr r3, [pc, #40] ; (802e1d0 ) - 802e1a8: 6a5b ldr r3, [r3, #36] ; 0x24 - 802e1aa: 4a09 ldr r2, [pc, #36] ; (802e1d0 ) - 802e1ac: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 802e1b0: 6253 str r3, [r2, #36] ; 0x24 + 802e1e6: 4b0a ldr r3, [pc, #40] ; (802e210 ) + 802e1e8: 6a5b ldr r3, [r3, #36] ; 0x24 + 802e1ea: 4a09 ldr r2, [pc, #36] ; (802e210 ) + 802e1ec: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 802e1f0: 6253 str r3, [r2, #36] ; 0x24 __ASM volatile ("dsb 0xF":::"memory"); - 802e1b2: f3bf 8f4f dsb sy + 802e1f2: f3bf 8f4f dsb sy } - 802e1b6: bf00 nop + 802e1f6: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 802e1b8: f3bf 8f6f isb sy + 802e1f8: f3bf 8f6f isb sy } - 802e1bc: bf00 nop + 802e1fc: bf00 nop /* Ensure MPU setting take effects */ __DSB(); __ISB(); } - 802e1be: bf00 nop - 802e1c0: 370c adds r7, #12 - 802e1c2: 46bd mov sp, r7 - 802e1c4: f85d 7b04 ldr.w r7, [sp], #4 - 802e1c8: 4770 bx lr - 802e1ca: bf00 nop - 802e1cc: e000ed90 .word 0xe000ed90 - 802e1d0: e000ed00 .word 0xe000ed00 + 802e1fe: bf00 nop + 802e200: 370c adds r7, #12 + 802e202: 46bd mov sp, r7 + 802e204: f85d 7b04 ldr.w r7, [sp], #4 + 802e208: 4770 bx lr + 802e20a: bf00 nop + 802e20c: e000ed90 .word 0xe000ed90 + 802e210: e000ed00 .word 0xe000ed00 -0802e1d4 : +0802e214 : * @param MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains * the initialization and configuration information. * @retval None */ void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init) { - 802e1d4: b480 push {r7} - 802e1d6: b083 sub sp, #12 - 802e1d8: af00 add r7, sp, #0 - 802e1da: 6078 str r0, [r7, #4] + 802e214: b480 push {r7} + 802e216: b083 sub sp, #12 + 802e218: af00 add r7, sp, #0 + 802e21a: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number)); assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable)); /* Set the Region number */ MPU->RNR = MPU_Init->Number; - 802e1dc: 687b ldr r3, [r7, #4] - 802e1de: 785a ldrb r2, [r3, #1] - 802e1e0: 4b1d ldr r3, [pc, #116] ; (802e258 ) - 802e1e2: 609a str r2, [r3, #8] + 802e21c: 687b ldr r3, [r7, #4] + 802e21e: 785a ldrb r2, [r3, #1] + 802e220: 4b1d ldr r3, [pc, #116] ; (802e298 ) + 802e222: 609a str r2, [r3, #8] if ((MPU_Init->Enable) != 0UL) - 802e1e4: 687b ldr r3, [r7, #4] - 802e1e6: 781b ldrb r3, [r3, #0] - 802e1e8: 2b00 cmp r3, #0 - 802e1ea: d029 beq.n 802e240 + 802e224: 687b ldr r3, [r7, #4] + 802e226: 781b ldrb r3, [r3, #0] + 802e228: 2b00 cmp r3, #0 + 802e22a: d029 beq.n 802e280 assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable)); assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable)); assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable)); assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size)); MPU->RBAR = MPU_Init->BaseAddress; - 802e1ec: 4a1a ldr r2, [pc, #104] ; (802e258 ) - 802e1ee: 687b ldr r3, [r7, #4] - 802e1f0: 685b ldr r3, [r3, #4] - 802e1f2: 60d3 str r3, [r2, #12] + 802e22c: 4a1a ldr r2, [pc, #104] ; (802e298 ) + 802e22e: 687b ldr r3, [r7, #4] + 802e230: 685b ldr r3, [r3, #4] + 802e232: 60d3 str r3, [r2, #12] MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | - 802e1f4: 687b ldr r3, [r7, #4] - 802e1f6: 7b1b ldrb r3, [r3, #12] - 802e1f8: 071a lsls r2, r3, #28 + 802e234: 687b ldr r3, [r7, #4] + 802e236: 7b1b ldrb r3, [r3, #12] + 802e238: 071a lsls r2, r3, #28 ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | - 802e1fa: 687b ldr r3, [r7, #4] - 802e1fc: 7adb ldrb r3, [r3, #11] - 802e1fe: 061b lsls r3, r3, #24 + 802e23a: 687b ldr r3, [r7, #4] + 802e23c: 7adb ldrb r3, [r3, #11] + 802e23e: 061b lsls r3, r3, #24 MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | - 802e200: 431a orrs r2, r3 + 802e240: 431a orrs r2, r3 ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | - 802e202: 687b ldr r3, [r7, #4] - 802e204: 7a9b ldrb r3, [r3, #10] - 802e206: 04db lsls r3, r3, #19 + 802e242: 687b ldr r3, [r7, #4] + 802e244: 7a9b ldrb r3, [r3, #10] + 802e246: 04db lsls r3, r3, #19 ((uint32_t)MPU_Init->AccessPermission << MPU_RASR_AP_Pos) | - 802e208: 431a orrs r2, r3 + 802e248: 431a orrs r2, r3 ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | - 802e20a: 687b ldr r3, [r7, #4] - 802e20c: 7b5b ldrb r3, [r3, #13] - 802e20e: 049b lsls r3, r3, #18 + 802e24a: 687b ldr r3, [r7, #4] + 802e24c: 7b5b ldrb r3, [r3, #13] + 802e24e: 049b lsls r3, r3, #18 ((uint32_t)MPU_Init->TypeExtField << MPU_RASR_TEX_Pos) | - 802e210: 431a orrs r2, r3 + 802e250: 431a orrs r2, r3 ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | - 802e212: 687b ldr r3, [r7, #4] - 802e214: 7b9b ldrb r3, [r3, #14] - 802e216: 045b lsls r3, r3, #17 + 802e252: 687b ldr r3, [r7, #4] + 802e254: 7b9b ldrb r3, [r3, #14] + 802e256: 045b lsls r3, r3, #17 ((uint32_t)MPU_Init->IsShareable << MPU_RASR_S_Pos) | - 802e218: 431a orrs r2, r3 + 802e258: 431a orrs r2, r3 ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | - 802e21a: 687b ldr r3, [r7, #4] - 802e21c: 7bdb ldrb r3, [r3, #15] - 802e21e: 041b lsls r3, r3, #16 + 802e25a: 687b ldr r3, [r7, #4] + 802e25c: 7bdb ldrb r3, [r3, #15] + 802e25e: 041b lsls r3, r3, #16 ((uint32_t)MPU_Init->IsCacheable << MPU_RASR_C_Pos) | - 802e220: 431a orrs r2, r3 + 802e260: 431a orrs r2, r3 ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | - 802e222: 687b ldr r3, [r7, #4] - 802e224: 7a5b ldrb r3, [r3, #9] - 802e226: 021b lsls r3, r3, #8 + 802e262: 687b ldr r3, [r7, #4] + 802e264: 7a5b ldrb r3, [r3, #9] + 802e266: 021b lsls r3, r3, #8 ((uint32_t)MPU_Init->IsBufferable << MPU_RASR_B_Pos) | - 802e228: 431a orrs r2, r3 + 802e268: 431a orrs r2, r3 ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | - 802e22a: 687b ldr r3, [r7, #4] - 802e22c: 7a1b ldrb r3, [r3, #8] - 802e22e: 005b lsls r3, r3, #1 + 802e26a: 687b ldr r3, [r7, #4] + 802e26c: 7a1b ldrb r3, [r3, #8] + 802e26e: 005b lsls r3, r3, #1 ((uint32_t)MPU_Init->SubRegionDisable << MPU_RASR_SRD_Pos) | - 802e230: 4313 orrs r3, r2 + 802e270: 4313 orrs r3, r2 ((uint32_t)MPU_Init->Enable << MPU_RASR_ENABLE_Pos); - 802e232: 687a ldr r2, [r7, #4] - 802e234: 7812 ldrb r2, [r2, #0] - 802e236: 4611 mov r1, r2 + 802e272: 687a ldr r2, [r7, #4] + 802e274: 7812 ldrb r2, [r2, #0] + 802e276: 4611 mov r1, r2 MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | - 802e238: 4a07 ldr r2, [pc, #28] ; (802e258 ) + 802e278: 4a07 ldr r2, [pc, #28] ; (802e298 ) ((uint32_t)MPU_Init->Size << MPU_RASR_SIZE_Pos) | - 802e23a: 430b orrs r3, r1 + 802e27a: 430b orrs r3, r1 MPU->RASR = ((uint32_t)MPU_Init->DisableExec << MPU_RASR_XN_Pos) | - 802e23c: 6113 str r3, [r2, #16] + 802e27c: 6113 str r3, [r2, #16] else { MPU->RBAR = 0x00; MPU->RASR = 0x00; } } - 802e23e: e005 b.n 802e24c + 802e27e: e005 b.n 802e28c MPU->RBAR = 0x00; - 802e240: 4b05 ldr r3, [pc, #20] ; (802e258 ) - 802e242: 2200 movs r2, #0 - 802e244: 60da str r2, [r3, #12] + 802e280: 4b05 ldr r3, [pc, #20] ; (802e298 ) + 802e282: 2200 movs r2, #0 + 802e284: 60da str r2, [r3, #12] MPU->RASR = 0x00; - 802e246: 4b04 ldr r3, [pc, #16] ; (802e258 ) - 802e248: 2200 movs r2, #0 - 802e24a: 611a str r2, [r3, #16] -} - 802e24c: bf00 nop - 802e24e: 370c adds r7, #12 - 802e250: 46bd mov sp, r7 - 802e252: f85d 7b04 ldr.w r7, [sp], #4 - 802e256: 4770 bx lr - 802e258: e000ed90 .word 0xe000ed90 - -0802e25c : + 802e286: 4b04 ldr r3, [pc, #16] ; (802e298 ) + 802e288: 2200 movs r2, #0 + 802e28a: 611a str r2, [r3, #16] +} + 802e28c: bf00 nop + 802e28e: 370c adds r7, #12 + 802e290: 46bd mov sp, r7 + 802e292: f85d 7b04 ldr.w r7, [sp], #4 + 802e296: 4770 bx lr + 802e298: e000ed90 .word 0xe000ed90 + +0802e29c : * @param hdma: Pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma) { - 802e25c: b580 push {r7, lr} - 802e25e: b086 sub sp, #24 - 802e260: af00 add r7, sp, #0 - 802e262: 6078 str r0, [r7, #4] + 802e29c: b580 push {r7, lr} + 802e29e: b086 sub sp, #24 + 802e2a0: af00 add r7, sp, #0 + 802e2a2: 6078 str r0, [r7, #4] uint32_t registerValue; uint32_t tickstart = HAL_GetTick(); - 802e264: f7fe fe96 bl 802cf94 - 802e268: 6138 str r0, [r7, #16] + 802e2a4: f7fe fe96 bl 802cfd4 + 802e2a8: 6138 str r0, [r7, #16] DMA_Base_Registers *regs_dma; BDMA_Base_Registers *regs_bdma; /* Check the DMA peripheral handle */ if(hdma == NULL) - 802e26a: 687b ldr r3, [r7, #4] - 802e26c: 2b00 cmp r3, #0 - 802e26e: d101 bne.n 802e274 + 802e2aa: 687b ldr r3, [r7, #4] + 802e2ac: 2b00 cmp r3, #0 + 802e2ae: d101 bne.n 802e2b4 { return HAL_ERROR; - 802e270: 2301 movs r3, #1 - 802e272: e316 b.n 802e8a2 + 802e2b0: 2301 movs r3, #1 + 802e2b2: e316 b.n 802e8e2 assert_param(IS_DMA_PERIPHERAL_DATA_SIZE(hdma->Init.PeriphDataAlignment)); assert_param(IS_DMA_MEMORY_DATA_SIZE(hdma->Init.MemDataAlignment)); assert_param(IS_DMA_MODE(hdma->Init.Mode)); assert_param(IS_DMA_PRIORITY(hdma->Init.Priority)); if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802e274: 687b ldr r3, [r7, #4] - 802e276: 681b ldr r3, [r3, #0] - 802e278: 4a66 ldr r2, [pc, #408] ; (802e414 ) - 802e27a: 4293 cmp r3, r2 - 802e27c: d04a beq.n 802e314 - 802e27e: 687b ldr r3, [r7, #4] - 802e280: 681b ldr r3, [r3, #0] - 802e282: 4a65 ldr r2, [pc, #404] ; (802e418 ) - 802e284: 4293 cmp r3, r2 - 802e286: d045 beq.n 802e314 - 802e288: 687b ldr r3, [r7, #4] - 802e28a: 681b ldr r3, [r3, #0] - 802e28c: 4a63 ldr r2, [pc, #396] ; (802e41c ) - 802e28e: 4293 cmp r3, r2 - 802e290: d040 beq.n 802e314 - 802e292: 687b ldr r3, [r7, #4] - 802e294: 681b ldr r3, [r3, #0] - 802e296: 4a62 ldr r2, [pc, #392] ; (802e420 ) - 802e298: 4293 cmp r3, r2 - 802e29a: d03b beq.n 802e314 - 802e29c: 687b ldr r3, [r7, #4] - 802e29e: 681b ldr r3, [r3, #0] - 802e2a0: 4a60 ldr r2, [pc, #384] ; (802e424 ) - 802e2a2: 4293 cmp r3, r2 - 802e2a4: d036 beq.n 802e314 - 802e2a6: 687b ldr r3, [r7, #4] - 802e2a8: 681b ldr r3, [r3, #0] - 802e2aa: 4a5f ldr r2, [pc, #380] ; (802e428 ) - 802e2ac: 4293 cmp r3, r2 - 802e2ae: d031 beq.n 802e314 - 802e2b0: 687b ldr r3, [r7, #4] - 802e2b2: 681b ldr r3, [r3, #0] - 802e2b4: 4a5d ldr r2, [pc, #372] ; (802e42c ) - 802e2b6: 4293 cmp r3, r2 - 802e2b8: d02c beq.n 802e314 - 802e2ba: 687b ldr r3, [r7, #4] - 802e2bc: 681b ldr r3, [r3, #0] - 802e2be: 4a5c ldr r2, [pc, #368] ; (802e430 ) - 802e2c0: 4293 cmp r3, r2 - 802e2c2: d027 beq.n 802e314 - 802e2c4: 687b ldr r3, [r7, #4] - 802e2c6: 681b ldr r3, [r3, #0] - 802e2c8: 4a5a ldr r2, [pc, #360] ; (802e434 ) - 802e2ca: 4293 cmp r3, r2 - 802e2cc: d022 beq.n 802e314 - 802e2ce: 687b ldr r3, [r7, #4] - 802e2d0: 681b ldr r3, [r3, #0] - 802e2d2: 4a59 ldr r2, [pc, #356] ; (802e438 ) - 802e2d4: 4293 cmp r3, r2 - 802e2d6: d01d beq.n 802e314 - 802e2d8: 687b ldr r3, [r7, #4] - 802e2da: 681b ldr r3, [r3, #0] - 802e2dc: 4a57 ldr r2, [pc, #348] ; (802e43c ) - 802e2de: 4293 cmp r3, r2 - 802e2e0: d018 beq.n 802e314 - 802e2e2: 687b ldr r3, [r7, #4] - 802e2e4: 681b ldr r3, [r3, #0] - 802e2e6: 4a56 ldr r2, [pc, #344] ; (802e440 ) - 802e2e8: 4293 cmp r3, r2 - 802e2ea: d013 beq.n 802e314 - 802e2ec: 687b ldr r3, [r7, #4] - 802e2ee: 681b ldr r3, [r3, #0] - 802e2f0: 4a54 ldr r2, [pc, #336] ; (802e444 ) - 802e2f2: 4293 cmp r3, r2 - 802e2f4: d00e beq.n 802e314 - 802e2f6: 687b ldr r3, [r7, #4] - 802e2f8: 681b ldr r3, [r3, #0] - 802e2fa: 4a53 ldr r2, [pc, #332] ; (802e448 ) - 802e2fc: 4293 cmp r3, r2 - 802e2fe: d009 beq.n 802e314 - 802e300: 687b ldr r3, [r7, #4] - 802e302: 681b ldr r3, [r3, #0] - 802e304: 4a51 ldr r2, [pc, #324] ; (802e44c ) - 802e306: 4293 cmp r3, r2 - 802e308: d004 beq.n 802e314 - 802e30a: 687b ldr r3, [r7, #4] - 802e30c: 681b ldr r3, [r3, #0] - 802e30e: 4a50 ldr r2, [pc, #320] ; (802e450 ) - 802e310: 4293 cmp r3, r2 - 802e312: d101 bne.n 802e318 - 802e314: 2301 movs r3, #1 - 802e316: e000 b.n 802e31a - 802e318: 2300 movs r3, #0 - 802e31a: 2b00 cmp r3, #0 - 802e31c: f000 813b beq.w 802e596 + 802e2b4: 687b ldr r3, [r7, #4] + 802e2b6: 681b ldr r3, [r3, #0] + 802e2b8: 4a66 ldr r2, [pc, #408] ; (802e454 ) + 802e2ba: 4293 cmp r3, r2 + 802e2bc: d04a beq.n 802e354 + 802e2be: 687b ldr r3, [r7, #4] + 802e2c0: 681b ldr r3, [r3, #0] + 802e2c2: 4a65 ldr r2, [pc, #404] ; (802e458 ) + 802e2c4: 4293 cmp r3, r2 + 802e2c6: d045 beq.n 802e354 + 802e2c8: 687b ldr r3, [r7, #4] + 802e2ca: 681b ldr r3, [r3, #0] + 802e2cc: 4a63 ldr r2, [pc, #396] ; (802e45c ) + 802e2ce: 4293 cmp r3, r2 + 802e2d0: d040 beq.n 802e354 + 802e2d2: 687b ldr r3, [r7, #4] + 802e2d4: 681b ldr r3, [r3, #0] + 802e2d6: 4a62 ldr r2, [pc, #392] ; (802e460 ) + 802e2d8: 4293 cmp r3, r2 + 802e2da: d03b beq.n 802e354 + 802e2dc: 687b ldr r3, [r7, #4] + 802e2de: 681b ldr r3, [r3, #0] + 802e2e0: 4a60 ldr r2, [pc, #384] ; (802e464 ) + 802e2e2: 4293 cmp r3, r2 + 802e2e4: d036 beq.n 802e354 + 802e2e6: 687b ldr r3, [r7, #4] + 802e2e8: 681b ldr r3, [r3, #0] + 802e2ea: 4a5f ldr r2, [pc, #380] ; (802e468 ) + 802e2ec: 4293 cmp r3, r2 + 802e2ee: d031 beq.n 802e354 + 802e2f0: 687b ldr r3, [r7, #4] + 802e2f2: 681b ldr r3, [r3, #0] + 802e2f4: 4a5d ldr r2, [pc, #372] ; (802e46c ) + 802e2f6: 4293 cmp r3, r2 + 802e2f8: d02c beq.n 802e354 + 802e2fa: 687b ldr r3, [r7, #4] + 802e2fc: 681b ldr r3, [r3, #0] + 802e2fe: 4a5c ldr r2, [pc, #368] ; (802e470 ) + 802e300: 4293 cmp r3, r2 + 802e302: d027 beq.n 802e354 + 802e304: 687b ldr r3, [r7, #4] + 802e306: 681b ldr r3, [r3, #0] + 802e308: 4a5a ldr r2, [pc, #360] ; (802e474 ) + 802e30a: 4293 cmp r3, r2 + 802e30c: d022 beq.n 802e354 + 802e30e: 687b ldr r3, [r7, #4] + 802e310: 681b ldr r3, [r3, #0] + 802e312: 4a59 ldr r2, [pc, #356] ; (802e478 ) + 802e314: 4293 cmp r3, r2 + 802e316: d01d beq.n 802e354 + 802e318: 687b ldr r3, [r7, #4] + 802e31a: 681b ldr r3, [r3, #0] + 802e31c: 4a57 ldr r2, [pc, #348] ; (802e47c ) + 802e31e: 4293 cmp r3, r2 + 802e320: d018 beq.n 802e354 + 802e322: 687b ldr r3, [r7, #4] + 802e324: 681b ldr r3, [r3, #0] + 802e326: 4a56 ldr r2, [pc, #344] ; (802e480 ) + 802e328: 4293 cmp r3, r2 + 802e32a: d013 beq.n 802e354 + 802e32c: 687b ldr r3, [r7, #4] + 802e32e: 681b ldr r3, [r3, #0] + 802e330: 4a54 ldr r2, [pc, #336] ; (802e484 ) + 802e332: 4293 cmp r3, r2 + 802e334: d00e beq.n 802e354 + 802e336: 687b ldr r3, [r7, #4] + 802e338: 681b ldr r3, [r3, #0] + 802e33a: 4a53 ldr r2, [pc, #332] ; (802e488 ) + 802e33c: 4293 cmp r3, r2 + 802e33e: d009 beq.n 802e354 + 802e340: 687b ldr r3, [r7, #4] + 802e342: 681b ldr r3, [r3, #0] + 802e344: 4a51 ldr r2, [pc, #324] ; (802e48c ) + 802e346: 4293 cmp r3, r2 + 802e348: d004 beq.n 802e354 + 802e34a: 687b ldr r3, [r7, #4] + 802e34c: 681b ldr r3, [r3, #0] + 802e34e: 4a50 ldr r2, [pc, #320] ; (802e490 ) + 802e350: 4293 cmp r3, r2 + 802e352: d101 bne.n 802e358 + 802e354: 2301 movs r3, #1 + 802e356: e000 b.n 802e35a + 802e358: 2300 movs r3, #0 + 802e35a: 2b00 cmp r3, #0 + 802e35c: f000 813b beq.w 802e5d6 assert_param(IS_DMA_MEMORY_BURST(hdma->Init.MemBurst)); assert_param(IS_DMA_PERIPHERAL_BURST(hdma->Init.PeriphBurst)); } /* Change DMA peripheral state */ hdma->State = HAL_DMA_STATE_BUSY; - 802e320: 687b ldr r3, [r7, #4] - 802e322: 2202 movs r2, #2 - 802e324: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e360: 687b ldr r3, [r7, #4] + 802e362: 2202 movs r2, #2 + 802e364: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Allocate lock resource */ __HAL_UNLOCK(hdma); - 802e328: 687b ldr r3, [r7, #4] - 802e32a: 2200 movs r2, #0 - 802e32c: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802e368: 687b ldr r3, [r7, #4] + 802e36a: 2200 movs r2, #0 + 802e36c: f883 2034 strb.w r2, [r3, #52] ; 0x34 /* Disable the peripheral */ __HAL_DMA_DISABLE(hdma); - 802e330: 687b ldr r3, [r7, #4] - 802e332: 681b ldr r3, [r3, #0] - 802e334: 4a37 ldr r2, [pc, #220] ; (802e414 ) - 802e336: 4293 cmp r3, r2 - 802e338: d04a beq.n 802e3d0 - 802e33a: 687b ldr r3, [r7, #4] - 802e33c: 681b ldr r3, [r3, #0] - 802e33e: 4a36 ldr r2, [pc, #216] ; (802e418 ) - 802e340: 4293 cmp r3, r2 - 802e342: d045 beq.n 802e3d0 - 802e344: 687b ldr r3, [r7, #4] - 802e346: 681b ldr r3, [r3, #0] - 802e348: 4a34 ldr r2, [pc, #208] ; (802e41c ) - 802e34a: 4293 cmp r3, r2 - 802e34c: d040 beq.n 802e3d0 - 802e34e: 687b ldr r3, [r7, #4] - 802e350: 681b ldr r3, [r3, #0] - 802e352: 4a33 ldr r2, [pc, #204] ; (802e420 ) - 802e354: 4293 cmp r3, r2 - 802e356: d03b beq.n 802e3d0 - 802e358: 687b ldr r3, [r7, #4] - 802e35a: 681b ldr r3, [r3, #0] - 802e35c: 4a31 ldr r2, [pc, #196] ; (802e424 ) - 802e35e: 4293 cmp r3, r2 - 802e360: d036 beq.n 802e3d0 - 802e362: 687b ldr r3, [r7, #4] - 802e364: 681b ldr r3, [r3, #0] - 802e366: 4a30 ldr r2, [pc, #192] ; (802e428 ) - 802e368: 4293 cmp r3, r2 - 802e36a: d031 beq.n 802e3d0 - 802e36c: 687b ldr r3, [r7, #4] - 802e36e: 681b ldr r3, [r3, #0] - 802e370: 4a2e ldr r2, [pc, #184] ; (802e42c ) - 802e372: 4293 cmp r3, r2 - 802e374: d02c beq.n 802e3d0 - 802e376: 687b ldr r3, [r7, #4] - 802e378: 681b ldr r3, [r3, #0] - 802e37a: 4a2d ldr r2, [pc, #180] ; (802e430 ) - 802e37c: 4293 cmp r3, r2 - 802e37e: d027 beq.n 802e3d0 - 802e380: 687b ldr r3, [r7, #4] - 802e382: 681b ldr r3, [r3, #0] - 802e384: 4a2b ldr r2, [pc, #172] ; (802e434 ) - 802e386: 4293 cmp r3, r2 - 802e388: d022 beq.n 802e3d0 - 802e38a: 687b ldr r3, [r7, #4] - 802e38c: 681b ldr r3, [r3, #0] - 802e38e: 4a2a ldr r2, [pc, #168] ; (802e438 ) - 802e390: 4293 cmp r3, r2 - 802e392: d01d beq.n 802e3d0 - 802e394: 687b ldr r3, [r7, #4] - 802e396: 681b ldr r3, [r3, #0] - 802e398: 4a28 ldr r2, [pc, #160] ; (802e43c ) - 802e39a: 4293 cmp r3, r2 - 802e39c: d018 beq.n 802e3d0 - 802e39e: 687b ldr r3, [r7, #4] - 802e3a0: 681b ldr r3, [r3, #0] - 802e3a2: 4a27 ldr r2, [pc, #156] ; (802e440 ) - 802e3a4: 4293 cmp r3, r2 - 802e3a6: d013 beq.n 802e3d0 - 802e3a8: 687b ldr r3, [r7, #4] - 802e3aa: 681b ldr r3, [r3, #0] - 802e3ac: 4a25 ldr r2, [pc, #148] ; (802e444 ) - 802e3ae: 4293 cmp r3, r2 - 802e3b0: d00e beq.n 802e3d0 - 802e3b2: 687b ldr r3, [r7, #4] - 802e3b4: 681b ldr r3, [r3, #0] - 802e3b6: 4a24 ldr r2, [pc, #144] ; (802e448 ) - 802e3b8: 4293 cmp r3, r2 - 802e3ba: d009 beq.n 802e3d0 - 802e3bc: 687b ldr r3, [r7, #4] - 802e3be: 681b ldr r3, [r3, #0] - 802e3c0: 4a22 ldr r2, [pc, #136] ; (802e44c ) - 802e3c2: 4293 cmp r3, r2 - 802e3c4: d004 beq.n 802e3d0 - 802e3c6: 687b ldr r3, [r7, #4] - 802e3c8: 681b ldr r3, [r3, #0] - 802e3ca: 4a21 ldr r2, [pc, #132] ; (802e450 ) - 802e3cc: 4293 cmp r3, r2 - 802e3ce: d108 bne.n 802e3e2 - 802e3d0: 687b ldr r3, [r7, #4] - 802e3d2: 681b ldr r3, [r3, #0] - 802e3d4: 681a ldr r2, [r3, #0] - 802e3d6: 687b ldr r3, [r7, #4] - 802e3d8: 681b ldr r3, [r3, #0] - 802e3da: f022 0201 bic.w r2, r2, #1 - 802e3de: 601a str r2, [r3, #0] - 802e3e0: e007 b.n 802e3f2 - 802e3e2: 687b ldr r3, [r7, #4] - 802e3e4: 681b ldr r3, [r3, #0] - 802e3e6: 681a ldr r2, [r3, #0] + 802e370: 687b ldr r3, [r7, #4] + 802e372: 681b ldr r3, [r3, #0] + 802e374: 4a37 ldr r2, [pc, #220] ; (802e454 ) + 802e376: 4293 cmp r3, r2 + 802e378: d04a beq.n 802e410 + 802e37a: 687b ldr r3, [r7, #4] + 802e37c: 681b ldr r3, [r3, #0] + 802e37e: 4a36 ldr r2, [pc, #216] ; (802e458 ) + 802e380: 4293 cmp r3, r2 + 802e382: d045 beq.n 802e410 + 802e384: 687b ldr r3, [r7, #4] + 802e386: 681b ldr r3, [r3, #0] + 802e388: 4a34 ldr r2, [pc, #208] ; (802e45c ) + 802e38a: 4293 cmp r3, r2 + 802e38c: d040 beq.n 802e410 + 802e38e: 687b ldr r3, [r7, #4] + 802e390: 681b ldr r3, [r3, #0] + 802e392: 4a33 ldr r2, [pc, #204] ; (802e460 ) + 802e394: 4293 cmp r3, r2 + 802e396: d03b beq.n 802e410 + 802e398: 687b ldr r3, [r7, #4] + 802e39a: 681b ldr r3, [r3, #0] + 802e39c: 4a31 ldr r2, [pc, #196] ; (802e464 ) + 802e39e: 4293 cmp r3, r2 + 802e3a0: d036 beq.n 802e410 + 802e3a2: 687b ldr r3, [r7, #4] + 802e3a4: 681b ldr r3, [r3, #0] + 802e3a6: 4a30 ldr r2, [pc, #192] ; (802e468 ) + 802e3a8: 4293 cmp r3, r2 + 802e3aa: d031 beq.n 802e410 + 802e3ac: 687b ldr r3, [r7, #4] + 802e3ae: 681b ldr r3, [r3, #0] + 802e3b0: 4a2e ldr r2, [pc, #184] ; (802e46c ) + 802e3b2: 4293 cmp r3, r2 + 802e3b4: d02c beq.n 802e410 + 802e3b6: 687b ldr r3, [r7, #4] + 802e3b8: 681b ldr r3, [r3, #0] + 802e3ba: 4a2d ldr r2, [pc, #180] ; (802e470 ) + 802e3bc: 4293 cmp r3, r2 + 802e3be: d027 beq.n 802e410 + 802e3c0: 687b ldr r3, [r7, #4] + 802e3c2: 681b ldr r3, [r3, #0] + 802e3c4: 4a2b ldr r2, [pc, #172] ; (802e474 ) + 802e3c6: 4293 cmp r3, r2 + 802e3c8: d022 beq.n 802e410 + 802e3ca: 687b ldr r3, [r7, #4] + 802e3cc: 681b ldr r3, [r3, #0] + 802e3ce: 4a2a ldr r2, [pc, #168] ; (802e478 ) + 802e3d0: 4293 cmp r3, r2 + 802e3d2: d01d beq.n 802e410 + 802e3d4: 687b ldr r3, [r7, #4] + 802e3d6: 681b ldr r3, [r3, #0] + 802e3d8: 4a28 ldr r2, [pc, #160] ; (802e47c ) + 802e3da: 4293 cmp r3, r2 + 802e3dc: d018 beq.n 802e410 + 802e3de: 687b ldr r3, [r7, #4] + 802e3e0: 681b ldr r3, [r3, #0] + 802e3e2: 4a27 ldr r2, [pc, #156] ; (802e480 ) + 802e3e4: 4293 cmp r3, r2 + 802e3e6: d013 beq.n 802e410 802e3e8: 687b ldr r3, [r7, #4] 802e3ea: 681b ldr r3, [r3, #0] - 802e3ec: f022 0201 bic.w r2, r2, #1 - 802e3f0: 601a str r2, [r3, #0] + 802e3ec: 4a25 ldr r2, [pc, #148] ; (802e484 ) + 802e3ee: 4293 cmp r3, r2 + 802e3f0: d00e beq.n 802e410 + 802e3f2: 687b ldr r3, [r7, #4] + 802e3f4: 681b ldr r3, [r3, #0] + 802e3f6: 4a24 ldr r2, [pc, #144] ; (802e488 ) + 802e3f8: 4293 cmp r3, r2 + 802e3fa: d009 beq.n 802e410 + 802e3fc: 687b ldr r3, [r7, #4] + 802e3fe: 681b ldr r3, [r3, #0] + 802e400: 4a22 ldr r2, [pc, #136] ; (802e48c ) + 802e402: 4293 cmp r3, r2 + 802e404: d004 beq.n 802e410 + 802e406: 687b ldr r3, [r7, #4] + 802e408: 681b ldr r3, [r3, #0] + 802e40a: 4a21 ldr r2, [pc, #132] ; (802e490 ) + 802e40c: 4293 cmp r3, r2 + 802e40e: d108 bne.n 802e422 + 802e410: 687b ldr r3, [r7, #4] + 802e412: 681b ldr r3, [r3, #0] + 802e414: 681a ldr r2, [r3, #0] + 802e416: 687b ldr r3, [r7, #4] + 802e418: 681b ldr r3, [r3, #0] + 802e41a: f022 0201 bic.w r2, r2, #1 + 802e41e: 601a str r2, [r3, #0] + 802e420: e007 b.n 802e432 + 802e422: 687b ldr r3, [r7, #4] + 802e424: 681b ldr r3, [r3, #0] + 802e426: 681a ldr r2, [r3, #0] + 802e428: 687b ldr r3, [r7, #4] + 802e42a: 681b ldr r3, [r3, #0] + 802e42c: f022 0201 bic.w r2, r2, #1 + 802e430: 601a str r2, [r3, #0] /* Check if the DMA Stream is effectively disabled */ while((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U) - 802e3f2: e02f b.n 802e454 + 802e432: e02f b.n 802e494 { /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) - 802e3f4: f7fe fdce bl 802cf94 - 802e3f8: 4602 mov r2, r0 - 802e3fa: 693b ldr r3, [r7, #16] - 802e3fc: 1ad3 subs r3, r2, r3 - 802e3fe: 2b05 cmp r3, #5 - 802e400: d928 bls.n 802e454 + 802e434: f7fe fdce bl 802cfd4 + 802e438: 4602 mov r2, r0 + 802e43a: 693b ldr r3, [r7, #16] + 802e43c: 1ad3 subs r3, r2, r3 + 802e43e: 2b05 cmp r3, #5 + 802e440: d928 bls.n 802e494 { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; - 802e402: 687b ldr r3, [r7, #4] - 802e404: 2220 movs r2, #32 - 802e406: 655a str r2, [r3, #84] ; 0x54 + 802e442: 687b ldr r3, [r7, #4] + 802e444: 2220 movs r2, #32 + 802e446: 655a str r2, [r3, #84] ; 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_ERROR; - 802e408: 687b ldr r3, [r7, #4] - 802e40a: 2203 movs r2, #3 - 802e40c: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e448: 687b ldr r3, [r7, #4] + 802e44a: 2203 movs r2, #3 + 802e44c: f883 2035 strb.w r2, [r3, #53] ; 0x35 return HAL_ERROR; - 802e410: 2301 movs r3, #1 - 802e412: e246 b.n 802e8a2 - 802e414: 40020010 .word 0x40020010 - 802e418: 40020028 .word 0x40020028 - 802e41c: 40020040 .word 0x40020040 - 802e420: 40020058 .word 0x40020058 - 802e424: 40020070 .word 0x40020070 - 802e428: 40020088 .word 0x40020088 - 802e42c: 400200a0 .word 0x400200a0 - 802e430: 400200b8 .word 0x400200b8 - 802e434: 40020410 .word 0x40020410 - 802e438: 40020428 .word 0x40020428 - 802e43c: 40020440 .word 0x40020440 - 802e440: 40020458 .word 0x40020458 - 802e444: 40020470 .word 0x40020470 - 802e448: 40020488 .word 0x40020488 - 802e44c: 400204a0 .word 0x400204a0 - 802e450: 400204b8 .word 0x400204b8 + 802e450: 2301 movs r3, #1 + 802e452: e246 b.n 802e8e2 + 802e454: 40020010 .word 0x40020010 + 802e458: 40020028 .word 0x40020028 + 802e45c: 40020040 .word 0x40020040 + 802e460: 40020058 .word 0x40020058 + 802e464: 40020070 .word 0x40020070 + 802e468: 40020088 .word 0x40020088 + 802e46c: 400200a0 .word 0x400200a0 + 802e470: 400200b8 .word 0x400200b8 + 802e474: 40020410 .word 0x40020410 + 802e478: 40020428 .word 0x40020428 + 802e47c: 40020440 .word 0x40020440 + 802e480: 40020458 .word 0x40020458 + 802e484: 40020470 .word 0x40020470 + 802e488: 40020488 .word 0x40020488 + 802e48c: 400204a0 .word 0x400204a0 + 802e490: 400204b8 .word 0x400204b8 while((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U) - 802e454: 687b ldr r3, [r7, #4] - 802e456: 681b ldr r3, [r3, #0] - 802e458: 681b ldr r3, [r3, #0] - 802e45a: f003 0301 and.w r3, r3, #1 - 802e45e: 2b00 cmp r3, #0 - 802e460: d1c8 bne.n 802e3f4 + 802e494: 687b ldr r3, [r7, #4] + 802e496: 681b ldr r3, [r3, #0] + 802e498: 681b ldr r3, [r3, #0] + 802e49a: f003 0301 and.w r3, r3, #1 + 802e49e: 2b00 cmp r3, #0 + 802e4a0: d1c8 bne.n 802e434 } } /* Get the CR register value */ registerValue = ((DMA_Stream_TypeDef *)hdma->Instance)->CR; - 802e462: 687b ldr r3, [r7, #4] - 802e464: 681b ldr r3, [r3, #0] - 802e466: 681b ldr r3, [r3, #0] - 802e468: 617b str r3, [r7, #20] + 802e4a2: 687b ldr r3, [r7, #4] + 802e4a4: 681b ldr r3, [r3, #0] + 802e4a6: 681b ldr r3, [r3, #0] + 802e4a8: 617b str r3, [r7, #20] /* Clear CHSEL, MBURST, PBURST, PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, CT and DBM bits */ registerValue &= ((uint32_t)~(DMA_SxCR_MBURST | DMA_SxCR_PBURST | \ - 802e46a: 697a ldr r2, [r7, #20] - 802e46c: 4b83 ldr r3, [pc, #524] ; (802e67c ) - 802e46e: 4013 ands r3, r2 - 802e470: 617b str r3, [r7, #20] + 802e4aa: 697a ldr r2, [r7, #20] + 802e4ac: 4b83 ldr r3, [pc, #524] ; (802e6bc ) + 802e4ae: 4013 ands r3, r2 + 802e4b0: 617b str r3, [r7, #20] DMA_SxCR_PL | DMA_SxCR_MSIZE | DMA_SxCR_PSIZE | \ DMA_SxCR_MINC | DMA_SxCR_PINC | DMA_SxCR_CIRC | \ DMA_SxCR_DIR | DMA_SxCR_CT | DMA_SxCR_DBM)); /* Prepare the DMA Stream configuration */ registerValue |= hdma->Init.Direction | - 802e472: 687b ldr r3, [r7, #4] - 802e474: 689a ldr r2, [r3, #8] + 802e4b2: 687b ldr r3, [r7, #4] + 802e4b4: 689a ldr r2, [r3, #8] hdma->Init.PeriphInc | hdma->Init.MemInc | - 802e476: 687b ldr r3, [r7, #4] - 802e478: 68db ldr r3, [r3, #12] + 802e4b6: 687b ldr r3, [r7, #4] + 802e4b8: 68db ldr r3, [r3, #12] registerValue |= hdma->Init.Direction | - 802e47a: 431a orrs r2, r3 + 802e4ba: 431a orrs r2, r3 hdma->Init.PeriphInc | hdma->Init.MemInc | - 802e47c: 687b ldr r3, [r7, #4] - 802e47e: 691b ldr r3, [r3, #16] - 802e480: 431a orrs r2, r3 + 802e4bc: 687b ldr r3, [r7, #4] + 802e4be: 691b ldr r3, [r3, #16] + 802e4c0: 431a orrs r2, r3 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 802e482: 687b ldr r3, [r7, #4] - 802e484: 695b ldr r3, [r3, #20] + 802e4c2: 687b ldr r3, [r7, #4] + 802e4c4: 695b ldr r3, [r3, #20] hdma->Init.PeriphInc | hdma->Init.MemInc | - 802e486: 431a orrs r2, r3 + 802e4c6: 431a orrs r2, r3 hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 802e488: 687b ldr r3, [r7, #4] - 802e48a: 699b ldr r3, [r3, #24] - 802e48c: 431a orrs r2, r3 + 802e4c8: 687b ldr r3, [r7, #4] + 802e4ca: 699b ldr r3, [r3, #24] + 802e4cc: 431a orrs r2, r3 hdma->Init.Mode | hdma->Init.Priority; - 802e48e: 687b ldr r3, [r7, #4] - 802e490: 69db ldr r3, [r3, #28] + 802e4ce: 687b ldr r3, [r7, #4] + 802e4d0: 69db ldr r3, [r3, #28] hdma->Init.PeriphDataAlignment | hdma->Init.MemDataAlignment | - 802e492: 431a orrs r2, r3 + 802e4d2: 431a orrs r2, r3 hdma->Init.Mode | hdma->Init.Priority; - 802e494: 687b ldr r3, [r7, #4] - 802e496: 6a1b ldr r3, [r3, #32] - 802e498: 4313 orrs r3, r2 + 802e4d4: 687b ldr r3, [r7, #4] + 802e4d6: 6a1b ldr r3, [r3, #32] + 802e4d8: 4313 orrs r3, r2 registerValue |= hdma->Init.Direction | - 802e49a: 697a ldr r2, [r7, #20] - 802e49c: 4313 orrs r3, r2 - 802e49e: 617b str r3, [r7, #20] + 802e4da: 697a ldr r2, [r7, #20] + 802e4dc: 4313 orrs r3, r2 + 802e4de: 617b str r3, [r7, #20] /* the Memory burst and peripheral burst are not used when the FIFO is disabled */ if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) - 802e4a0: 687b ldr r3, [r7, #4] - 802e4a2: 6a5b ldr r3, [r3, #36] ; 0x24 - 802e4a4: 2b04 cmp r3, #4 - 802e4a6: d107 bne.n 802e4b8 + 802e4e0: 687b ldr r3, [r7, #4] + 802e4e2: 6a5b ldr r3, [r3, #36] ; 0x24 + 802e4e4: 2b04 cmp r3, #4 + 802e4e6: d107 bne.n 802e4f8 { /* Get memory burst and peripheral burst */ registerValue |= hdma->Init.MemBurst | hdma->Init.PeriphBurst; - 802e4a8: 687b ldr r3, [r7, #4] - 802e4aa: 6ada ldr r2, [r3, #44] ; 0x2c - 802e4ac: 687b ldr r3, [r7, #4] - 802e4ae: 6b1b ldr r3, [r3, #48] ; 0x30 - 802e4b0: 4313 orrs r3, r2 - 802e4b2: 697a ldr r2, [r7, #20] - 802e4b4: 4313 orrs r3, r2 - 802e4b6: 617b str r3, [r7, #20] + 802e4e8: 687b ldr r3, [r7, #4] + 802e4ea: 6ada ldr r2, [r3, #44] ; 0x2c + 802e4ec: 687b ldr r3, [r7, #4] + 802e4ee: 6b1b ldr r3, [r3, #48] ; 0x30 + 802e4f0: 4313 orrs r3, r2 + 802e4f2: 697a ldr r2, [r7, #20] + 802e4f4: 4313 orrs r3, r2 + 802e4f6: 617b str r3, [r7, #20] } /* Work around for Errata 2.22: UART/USART- DMA transfer lock: DMA stream could be lock when transferring data to/from USART/UART */ #if (STM32H7_DEV_ID == 0x450UL) if((DBGMCU->IDCODE & 0xFFFF0000U) >= 0x20000000U) - 802e4b8: 4b71 ldr r3, [pc, #452] ; (802e680 ) - 802e4ba: 681a ldr r2, [r3, #0] - 802e4bc: 4b71 ldr r3, [pc, #452] ; (802e684 ) - 802e4be: 4013 ands r3, r2 - 802e4c0: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 802e4c4: d328 bcc.n 802e518 + 802e4f8: 4b71 ldr r3, [pc, #452] ; (802e6c0 ) + 802e4fa: 681a ldr r2, [r3, #0] + 802e4fc: 4b71 ldr r3, [pc, #452] ; (802e6c4 ) + 802e4fe: 4013 ands r3, r2 + 802e500: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 802e504: d328 bcc.n 802e558 { #endif /* STM32H7_DEV_ID == 0x450UL */ if(IS_DMA_UART_USART_REQUEST(hdma->Init.Request) != 0U) - 802e4c6: 687b ldr r3, [r7, #4] - 802e4c8: 685b ldr r3, [r3, #4] - 802e4ca: 2b28 cmp r3, #40 ; 0x28 - 802e4cc: d903 bls.n 802e4d6 - 802e4ce: 687b ldr r3, [r7, #4] - 802e4d0: 685b ldr r3, [r3, #4] - 802e4d2: 2b2e cmp r3, #46 ; 0x2e - 802e4d4: d917 bls.n 802e506 - 802e4d6: 687b ldr r3, [r7, #4] - 802e4d8: 685b ldr r3, [r3, #4] - 802e4da: 2b3e cmp r3, #62 ; 0x3e - 802e4dc: d903 bls.n 802e4e6 - 802e4de: 687b ldr r3, [r7, #4] - 802e4e0: 685b ldr r3, [r3, #4] - 802e4e2: 2b42 cmp r3, #66 ; 0x42 - 802e4e4: d90f bls.n 802e506 - 802e4e6: 687b ldr r3, [r7, #4] - 802e4e8: 685b ldr r3, [r3, #4] - 802e4ea: 2b46 cmp r3, #70 ; 0x46 - 802e4ec: d903 bls.n 802e4f6 - 802e4ee: 687b ldr r3, [r7, #4] - 802e4f0: 685b ldr r3, [r3, #4] - 802e4f2: 2b48 cmp r3, #72 ; 0x48 - 802e4f4: d907 bls.n 802e506 - 802e4f6: 687b ldr r3, [r7, #4] - 802e4f8: 685b ldr r3, [r3, #4] - 802e4fa: 2b4e cmp r3, #78 ; 0x4e - 802e4fc: d905 bls.n 802e50a - 802e4fe: 687b ldr r3, [r7, #4] - 802e500: 685b ldr r3, [r3, #4] - 802e502: 2b52 cmp r3, #82 ; 0x52 - 802e504: d801 bhi.n 802e50a - 802e506: 2301 movs r3, #1 - 802e508: e000 b.n 802e50c - 802e50a: 2300 movs r3, #0 - 802e50c: 2b00 cmp r3, #0 - 802e50e: d003 beq.n 802e518 + 802e506: 687b ldr r3, [r7, #4] + 802e508: 685b ldr r3, [r3, #4] + 802e50a: 2b28 cmp r3, #40 ; 0x28 + 802e50c: d903 bls.n 802e516 + 802e50e: 687b ldr r3, [r7, #4] + 802e510: 685b ldr r3, [r3, #4] + 802e512: 2b2e cmp r3, #46 ; 0x2e + 802e514: d917 bls.n 802e546 + 802e516: 687b ldr r3, [r7, #4] + 802e518: 685b ldr r3, [r3, #4] + 802e51a: 2b3e cmp r3, #62 ; 0x3e + 802e51c: d903 bls.n 802e526 + 802e51e: 687b ldr r3, [r7, #4] + 802e520: 685b ldr r3, [r3, #4] + 802e522: 2b42 cmp r3, #66 ; 0x42 + 802e524: d90f bls.n 802e546 + 802e526: 687b ldr r3, [r7, #4] + 802e528: 685b ldr r3, [r3, #4] + 802e52a: 2b46 cmp r3, #70 ; 0x46 + 802e52c: d903 bls.n 802e536 + 802e52e: 687b ldr r3, [r7, #4] + 802e530: 685b ldr r3, [r3, #4] + 802e532: 2b48 cmp r3, #72 ; 0x48 + 802e534: d907 bls.n 802e546 + 802e536: 687b ldr r3, [r7, #4] + 802e538: 685b ldr r3, [r3, #4] + 802e53a: 2b4e cmp r3, #78 ; 0x4e + 802e53c: d905 bls.n 802e54a + 802e53e: 687b ldr r3, [r7, #4] + 802e540: 685b ldr r3, [r3, #4] + 802e542: 2b52 cmp r3, #82 ; 0x52 + 802e544: d801 bhi.n 802e54a + 802e546: 2301 movs r3, #1 + 802e548: e000 b.n 802e54c + 802e54a: 2300 movs r3, #0 + 802e54c: 2b00 cmp r3, #0 + 802e54e: d003 beq.n 802e558 { registerValue |= DMA_SxCR_TRBUFF; - 802e510: 697b ldr r3, [r7, #20] - 802e512: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 802e516: 617b str r3, [r7, #20] + 802e550: 697b ldr r3, [r7, #20] + 802e552: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 802e556: 617b str r3, [r7, #20] #if (STM32H7_DEV_ID == 0x450UL) } #endif /* STM32H7_DEV_ID == 0x450UL */ /* Write to DMA Stream CR register */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR = registerValue; - 802e518: 687b ldr r3, [r7, #4] - 802e51a: 681b ldr r3, [r3, #0] - 802e51c: 697a ldr r2, [r7, #20] - 802e51e: 601a str r2, [r3, #0] + 802e558: 687b ldr r3, [r7, #4] + 802e55a: 681b ldr r3, [r3, #0] + 802e55c: 697a ldr r2, [r7, #20] + 802e55e: 601a str r2, [r3, #0] /* Get the FCR register value */ registerValue = ((DMA_Stream_TypeDef *)hdma->Instance)->FCR; - 802e520: 687b ldr r3, [r7, #4] - 802e522: 681b ldr r3, [r3, #0] - 802e524: 695b ldr r3, [r3, #20] - 802e526: 617b str r3, [r7, #20] + 802e560: 687b ldr r3, [r7, #4] + 802e562: 681b ldr r3, [r3, #0] + 802e564: 695b ldr r3, [r3, #20] + 802e566: 617b str r3, [r7, #20] /* Clear Direct mode and FIFO threshold bits */ registerValue &= (uint32_t)~(DMA_SxFCR_DMDIS | DMA_SxFCR_FTH); - 802e528: 697b ldr r3, [r7, #20] - 802e52a: f023 0307 bic.w r3, r3, #7 - 802e52e: 617b str r3, [r7, #20] + 802e568: 697b ldr r3, [r7, #20] + 802e56a: f023 0307 bic.w r3, r3, #7 + 802e56e: 617b str r3, [r7, #20] /* Prepare the DMA Stream FIFO configuration */ registerValue |= hdma->Init.FIFOMode; - 802e530: 687b ldr r3, [r7, #4] - 802e532: 6a5b ldr r3, [r3, #36] ; 0x24 - 802e534: 697a ldr r2, [r7, #20] - 802e536: 4313 orrs r3, r2 - 802e538: 617b str r3, [r7, #20] + 802e570: 687b ldr r3, [r7, #4] + 802e572: 6a5b ldr r3, [r3, #36] ; 0x24 + 802e574: 697a ldr r2, [r7, #20] + 802e576: 4313 orrs r3, r2 + 802e578: 617b str r3, [r7, #20] /* the FIFO threshold is not used when the FIFO mode is disabled */ if(hdma->Init.FIFOMode == DMA_FIFOMODE_ENABLE) - 802e53a: 687b ldr r3, [r7, #4] - 802e53c: 6a5b ldr r3, [r3, #36] ; 0x24 - 802e53e: 2b04 cmp r3, #4 - 802e540: d117 bne.n 802e572 + 802e57a: 687b ldr r3, [r7, #4] + 802e57c: 6a5b ldr r3, [r3, #36] ; 0x24 + 802e57e: 2b04 cmp r3, #4 + 802e580: d117 bne.n 802e5b2 { /* Get the FIFO threshold */ registerValue |= hdma->Init.FIFOThreshold; - 802e542: 687b ldr r3, [r7, #4] - 802e544: 6a9b ldr r3, [r3, #40] ; 0x28 - 802e546: 697a ldr r2, [r7, #20] - 802e548: 4313 orrs r3, r2 - 802e54a: 617b str r3, [r7, #20] + 802e582: 687b ldr r3, [r7, #4] + 802e584: 6a9b ldr r3, [r3, #40] ; 0x28 + 802e586: 697a ldr r2, [r7, #20] + 802e588: 4313 orrs r3, r2 + 802e58a: 617b str r3, [r7, #20] /* Check compatibility between FIFO threshold level and size of the memory burst */ /* for INCR4, INCR8, INCR16 */ if(hdma->Init.MemBurst != DMA_MBURST_SINGLE) - 802e54c: 687b ldr r3, [r7, #4] - 802e54e: 6adb ldr r3, [r3, #44] ; 0x2c - 802e550: 2b00 cmp r3, #0 - 802e552: d00e beq.n 802e572 + 802e58c: 687b ldr r3, [r7, #4] + 802e58e: 6adb ldr r3, [r3, #44] ; 0x2c + 802e590: 2b00 cmp r3, #0 + 802e592: d00e beq.n 802e5b2 { if (DMA_CheckFifoParam(hdma) != HAL_OK) - 802e554: 6878 ldr r0, [r7, #4] - 802e556: f002 fb41 bl 8030bdc - 802e55a: 4603 mov r3, r0 - 802e55c: 2b00 cmp r3, #0 - 802e55e: d008 beq.n 802e572 + 802e594: 6878 ldr r0, [r7, #4] + 802e596: f002 fb41 bl 8030c1c + 802e59a: 4603 mov r3, r0 + 802e59c: 2b00 cmp r3, #0 + 802e59e: d008 beq.n 802e5b2 { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_PARAM; - 802e560: 687b ldr r3, [r7, #4] - 802e562: 2240 movs r2, #64 ; 0x40 - 802e564: 655a str r2, [r3, #84] ; 0x54 + 802e5a0: 687b ldr r3, [r7, #4] + 802e5a2: 2240 movs r2, #64 ; 0x40 + 802e5a4: 655a str r2, [r3, #84] ; 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 802e566: 687b ldr r3, [r7, #4] - 802e568: 2201 movs r2, #1 - 802e56a: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e5a6: 687b ldr r3, [r7, #4] + 802e5a8: 2201 movs r2, #1 + 802e5aa: f883 2035 strb.w r2, [r3, #53] ; 0x35 return HAL_ERROR; - 802e56e: 2301 movs r3, #1 - 802e570: e197 b.n 802e8a2 + 802e5ae: 2301 movs r3, #1 + 802e5b0: e197 b.n 802e8e2 } } } /* Write to DMA Stream FCR */ ((DMA_Stream_TypeDef *)hdma->Instance)->FCR = registerValue; - 802e572: 687b ldr r3, [r7, #4] - 802e574: 681b ldr r3, [r3, #0] - 802e576: 697a ldr r2, [r7, #20] - 802e578: 615a str r2, [r3, #20] + 802e5b2: 687b ldr r3, [r7, #4] + 802e5b4: 681b ldr r3, [r3, #0] + 802e5b6: 697a ldr r2, [r7, #20] + 802e5b8: 615a str r2, [r3, #20] /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */ regs_dma = (DMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); - 802e57a: 6878 ldr r0, [r7, #4] - 802e57c: f002 fa7c bl 8030a78 - 802e580: 4603 mov r3, r0 - 802e582: 60bb str r3, [r7, #8] + 802e5ba: 6878 ldr r0, [r7, #4] + 802e5bc: f002 fa7c bl 8030ab8 + 802e5c0: 4603 mov r3, r0 + 802e5c2: 60bb str r3, [r7, #8] /* Clear all interrupt flags */ regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU); - 802e584: 687b ldr r3, [r7, #4] - 802e586: 6ddb ldr r3, [r3, #92] ; 0x5c - 802e588: f003 031f and.w r3, r3, #31 - 802e58c: 223f movs r2, #63 ; 0x3f - 802e58e: 409a lsls r2, r3 - 802e590: 68bb ldr r3, [r7, #8] - 802e592: 609a str r2, [r3, #8] - 802e594: e0cd b.n 802e732 + 802e5c4: 687b ldr r3, [r7, #4] + 802e5c6: 6ddb ldr r3, [r3, #92] ; 0x5c + 802e5c8: f003 031f and.w r3, r3, #31 + 802e5cc: 223f movs r2, #63 ; 0x3f + 802e5ce: 409a lsls r2, r3 + 802e5d0: 68bb ldr r3, [r7, #8] + 802e5d2: 609a str r2, [r3, #8] + 802e5d4: e0cd b.n 802e772 } else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */ - 802e596: 687b ldr r3, [r7, #4] - 802e598: 681b ldr r3, [r3, #0] - 802e59a: 4a3b ldr r2, [pc, #236] ; (802e688 ) - 802e59c: 4293 cmp r3, r2 - 802e59e: d022 beq.n 802e5e6 - 802e5a0: 687b ldr r3, [r7, #4] - 802e5a2: 681b ldr r3, [r3, #0] - 802e5a4: 4a39 ldr r2, [pc, #228] ; (802e68c ) - 802e5a6: 4293 cmp r3, r2 - 802e5a8: d01d beq.n 802e5e6 - 802e5aa: 687b ldr r3, [r7, #4] - 802e5ac: 681b ldr r3, [r3, #0] - 802e5ae: 4a38 ldr r2, [pc, #224] ; (802e690 ) - 802e5b0: 4293 cmp r3, r2 - 802e5b2: d018 beq.n 802e5e6 - 802e5b4: 687b ldr r3, [r7, #4] - 802e5b6: 681b ldr r3, [r3, #0] - 802e5b8: 4a36 ldr r2, [pc, #216] ; (802e694 ) - 802e5ba: 4293 cmp r3, r2 - 802e5bc: d013 beq.n 802e5e6 - 802e5be: 687b ldr r3, [r7, #4] - 802e5c0: 681b ldr r3, [r3, #0] - 802e5c2: 4a35 ldr r2, [pc, #212] ; (802e698 ) - 802e5c4: 4293 cmp r3, r2 - 802e5c6: d00e beq.n 802e5e6 - 802e5c8: 687b ldr r3, [r7, #4] - 802e5ca: 681b ldr r3, [r3, #0] - 802e5cc: 4a33 ldr r2, [pc, #204] ; (802e69c ) - 802e5ce: 4293 cmp r3, r2 - 802e5d0: d009 beq.n 802e5e6 - 802e5d2: 687b ldr r3, [r7, #4] - 802e5d4: 681b ldr r3, [r3, #0] - 802e5d6: 4a32 ldr r2, [pc, #200] ; (802e6a0 ) - 802e5d8: 4293 cmp r3, r2 - 802e5da: d004 beq.n 802e5e6 - 802e5dc: 687b ldr r3, [r7, #4] - 802e5de: 681b ldr r3, [r3, #0] - 802e5e0: 4a30 ldr r2, [pc, #192] ; (802e6a4 ) - 802e5e2: 4293 cmp r3, r2 - 802e5e4: d101 bne.n 802e5ea - 802e5e6: 2301 movs r3, #1 - 802e5e8: e000 b.n 802e5ec - 802e5ea: 2300 movs r3, #0 - 802e5ec: 2b00 cmp r3, #0 - 802e5ee: f000 8097 beq.w 802e720 + 802e5d6: 687b ldr r3, [r7, #4] + 802e5d8: 681b ldr r3, [r3, #0] + 802e5da: 4a3b ldr r2, [pc, #236] ; (802e6c8 ) + 802e5dc: 4293 cmp r3, r2 + 802e5de: d022 beq.n 802e626 + 802e5e0: 687b ldr r3, [r7, #4] + 802e5e2: 681b ldr r3, [r3, #0] + 802e5e4: 4a39 ldr r2, [pc, #228] ; (802e6cc ) + 802e5e6: 4293 cmp r3, r2 + 802e5e8: d01d beq.n 802e626 + 802e5ea: 687b ldr r3, [r7, #4] + 802e5ec: 681b ldr r3, [r3, #0] + 802e5ee: 4a38 ldr r2, [pc, #224] ; (802e6d0 ) + 802e5f0: 4293 cmp r3, r2 + 802e5f2: d018 beq.n 802e626 + 802e5f4: 687b ldr r3, [r7, #4] + 802e5f6: 681b ldr r3, [r3, #0] + 802e5f8: 4a36 ldr r2, [pc, #216] ; (802e6d4 ) + 802e5fa: 4293 cmp r3, r2 + 802e5fc: d013 beq.n 802e626 + 802e5fe: 687b ldr r3, [r7, #4] + 802e600: 681b ldr r3, [r3, #0] + 802e602: 4a35 ldr r2, [pc, #212] ; (802e6d8 ) + 802e604: 4293 cmp r3, r2 + 802e606: d00e beq.n 802e626 + 802e608: 687b ldr r3, [r7, #4] + 802e60a: 681b ldr r3, [r3, #0] + 802e60c: 4a33 ldr r2, [pc, #204] ; (802e6dc ) + 802e60e: 4293 cmp r3, r2 + 802e610: d009 beq.n 802e626 + 802e612: 687b ldr r3, [r7, #4] + 802e614: 681b ldr r3, [r3, #0] + 802e616: 4a32 ldr r2, [pc, #200] ; (802e6e0 ) + 802e618: 4293 cmp r3, r2 + 802e61a: d004 beq.n 802e626 + 802e61c: 687b ldr r3, [r7, #4] + 802e61e: 681b ldr r3, [r3, #0] + 802e620: 4a30 ldr r2, [pc, #192] ; (802e6e4 ) + 802e622: 4293 cmp r3, r2 + 802e624: d101 bne.n 802e62a + 802e626: 2301 movs r3, #1 + 802e628: e000 b.n 802e62c + 802e62a: 2300 movs r3, #0 + 802e62c: 2b00 cmp r3, #0 + 802e62e: f000 8097 beq.w 802e760 { if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U) - 802e5f2: 687b ldr r3, [r7, #4] - 802e5f4: 681b ldr r3, [r3, #0] - 802e5f6: 4a24 ldr r2, [pc, #144] ; (802e688 ) - 802e5f8: 4293 cmp r3, r2 - 802e5fa: d021 beq.n 802e640 - 802e5fc: 687b ldr r3, [r7, #4] - 802e5fe: 681b ldr r3, [r3, #0] - 802e600: 4a22 ldr r2, [pc, #136] ; (802e68c ) - 802e602: 4293 cmp r3, r2 - 802e604: d01c beq.n 802e640 - 802e606: 687b ldr r3, [r7, #4] - 802e608: 681b ldr r3, [r3, #0] - 802e60a: 4a21 ldr r2, [pc, #132] ; (802e690 ) - 802e60c: 4293 cmp r3, r2 - 802e60e: d017 beq.n 802e640 - 802e610: 687b ldr r3, [r7, #4] - 802e612: 681b ldr r3, [r3, #0] - 802e614: 4a1f ldr r2, [pc, #124] ; (802e694 ) - 802e616: 4293 cmp r3, r2 - 802e618: d012 beq.n 802e640 - 802e61a: 687b ldr r3, [r7, #4] - 802e61c: 681b ldr r3, [r3, #0] - 802e61e: 4a1e ldr r2, [pc, #120] ; (802e698 ) - 802e620: 4293 cmp r3, r2 - 802e622: d00d beq.n 802e640 - 802e624: 687b ldr r3, [r7, #4] - 802e626: 681b ldr r3, [r3, #0] - 802e628: 4a1c ldr r2, [pc, #112] ; (802e69c ) - 802e62a: 4293 cmp r3, r2 - 802e62c: d008 beq.n 802e640 - 802e62e: 687b ldr r3, [r7, #4] - 802e630: 681b ldr r3, [r3, #0] - 802e632: 4a1b ldr r2, [pc, #108] ; (802e6a0 ) - 802e634: 4293 cmp r3, r2 - 802e636: d003 beq.n 802e640 - 802e638: 687b ldr r3, [r7, #4] - 802e63a: 681b ldr r3, [r3, #0] - 802e63c: 4a19 ldr r2, [pc, #100] ; (802e6a4 ) - 802e63e: 4293 cmp r3, r2 - 802e640: bf00 nop + 802e632: 687b ldr r3, [r7, #4] + 802e634: 681b ldr r3, [r3, #0] + 802e636: 4a24 ldr r2, [pc, #144] ; (802e6c8 ) + 802e638: 4293 cmp r3, r2 + 802e63a: d021 beq.n 802e680 + 802e63c: 687b ldr r3, [r7, #4] + 802e63e: 681b ldr r3, [r3, #0] + 802e640: 4a22 ldr r2, [pc, #136] ; (802e6cc ) + 802e642: 4293 cmp r3, r2 + 802e644: d01c beq.n 802e680 + 802e646: 687b ldr r3, [r7, #4] + 802e648: 681b ldr r3, [r3, #0] + 802e64a: 4a21 ldr r2, [pc, #132] ; (802e6d0 ) + 802e64c: 4293 cmp r3, r2 + 802e64e: d017 beq.n 802e680 + 802e650: 687b ldr r3, [r7, #4] + 802e652: 681b ldr r3, [r3, #0] + 802e654: 4a1f ldr r2, [pc, #124] ; (802e6d4 ) + 802e656: 4293 cmp r3, r2 + 802e658: d012 beq.n 802e680 + 802e65a: 687b ldr r3, [r7, #4] + 802e65c: 681b ldr r3, [r3, #0] + 802e65e: 4a1e ldr r2, [pc, #120] ; (802e6d8 ) + 802e660: 4293 cmp r3, r2 + 802e662: d00d beq.n 802e680 + 802e664: 687b ldr r3, [r7, #4] + 802e666: 681b ldr r3, [r3, #0] + 802e668: 4a1c ldr r2, [pc, #112] ; (802e6dc ) + 802e66a: 4293 cmp r3, r2 + 802e66c: d008 beq.n 802e680 + 802e66e: 687b ldr r3, [r7, #4] + 802e670: 681b ldr r3, [r3, #0] + 802e672: 4a1b ldr r2, [pc, #108] ; (802e6e0 ) + 802e674: 4293 cmp r3, r2 + 802e676: d003 beq.n 802e680 + 802e678: 687b ldr r3, [r7, #4] + 802e67a: 681b ldr r3, [r3, #0] + 802e67c: 4a19 ldr r2, [pc, #100] ; (802e6e4 ) + 802e67e: 4293 cmp r3, r2 + 802e680: bf00 nop /* Check the request parameter */ assert_param(IS_BDMA_REQUEST(hdma->Init.Request)); } /* Change DMA peripheral state */ hdma->State = HAL_DMA_STATE_BUSY; - 802e642: 687b ldr r3, [r7, #4] - 802e644: 2202 movs r2, #2 - 802e646: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e682: 687b ldr r3, [r7, #4] + 802e684: 2202 movs r2, #2 + 802e686: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Allocate lock resource */ __HAL_UNLOCK(hdma); - 802e64a: 687b ldr r3, [r7, #4] - 802e64c: 2200 movs r2, #0 - 802e64e: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802e68a: 687b ldr r3, [r7, #4] + 802e68c: 2200 movs r2, #0 + 802e68e: f883 2034 strb.w r2, [r3, #52] ; 0x34 /* Get the CR register value */ registerValue = ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR; - 802e652: 687b ldr r3, [r7, #4] - 802e654: 681b ldr r3, [r3, #0] - 802e656: 681b ldr r3, [r3, #0] - 802e658: 617b str r3, [r7, #20] + 802e692: 687b ldr r3, [r7, #4] + 802e694: 681b ldr r3, [r3, #0] + 802e696: 681b ldr r3, [r3, #0] + 802e698: 617b str r3, [r7, #20] /* Clear PL, MSIZE, PSIZE, MINC, PINC, CIRC, DIR, MEM2MEM, DBM and CT bits */ registerValue &= ((uint32_t)~(BDMA_CCR_PL | BDMA_CCR_MSIZE | BDMA_CCR_PSIZE | \ - 802e65a: 697a ldr r2, [r7, #20] - 802e65c: 4b12 ldr r3, [pc, #72] ; (802e6a8 ) - 802e65e: 4013 ands r3, r2 - 802e660: 617b str r3, [r7, #20] + 802e69a: 697a ldr r2, [r7, #20] + 802e69c: 4b12 ldr r3, [pc, #72] ; (802e6e8 ) + 802e69e: 4013 ands r3, r2 + 802e6a0: 617b str r3, [r7, #20] BDMA_CCR_MINC | BDMA_CCR_PINC | BDMA_CCR_CIRC | \ BDMA_CCR_DIR | BDMA_CCR_MEM2MEM | BDMA_CCR_DBM | \ BDMA_CCR_CT)); /* Prepare the DMA Channel configuration */ registerValue |= DMA_TO_BDMA_DIRECTION(hdma->Init.Direction) | - 802e662: 687b ldr r3, [r7, #4] - 802e664: 689b ldr r3, [r3, #8] - 802e666: 2b40 cmp r3, #64 ; 0x40 - 802e668: d020 beq.n 802e6ac - 802e66a: 687b ldr r3, [r7, #4] - 802e66c: 689b ldr r3, [r3, #8] - 802e66e: 2b80 cmp r3, #128 ; 0x80 - 802e670: d102 bne.n 802e678 - 802e672: f44f 4380 mov.w r3, #16384 ; 0x4000 - 802e676: e01a b.n 802e6ae - 802e678: 2300 movs r3, #0 - 802e67a: e018 b.n 802e6ae - 802e67c: fe10803f .word 0xfe10803f - 802e680: 5c001000 .word 0x5c001000 - 802e684: ffff0000 .word 0xffff0000 - 802e688: 58025408 .word 0x58025408 - 802e68c: 5802541c .word 0x5802541c - 802e690: 58025430 .word 0x58025430 - 802e694: 58025444 .word 0x58025444 - 802e698: 58025458 .word 0x58025458 - 802e69c: 5802546c .word 0x5802546c - 802e6a0: 58025480 .word 0x58025480 - 802e6a4: 58025494 .word 0x58025494 - 802e6a8: fffe000f .word 0xfffe000f - 802e6ac: 2310 movs r3, #16 + 802e6a2: 687b ldr r3, [r7, #4] + 802e6a4: 689b ldr r3, [r3, #8] + 802e6a6: 2b40 cmp r3, #64 ; 0x40 + 802e6a8: d020 beq.n 802e6ec + 802e6aa: 687b ldr r3, [r7, #4] + 802e6ac: 689b ldr r3, [r3, #8] + 802e6ae: 2b80 cmp r3, #128 ; 0x80 + 802e6b0: d102 bne.n 802e6b8 + 802e6b2: f44f 4380 mov.w r3, #16384 ; 0x4000 + 802e6b6: e01a b.n 802e6ee + 802e6b8: 2300 movs r3, #0 + 802e6ba: e018 b.n 802e6ee + 802e6bc: fe10803f .word 0xfe10803f + 802e6c0: 5c001000 .word 0x5c001000 + 802e6c4: ffff0000 .word 0xffff0000 + 802e6c8: 58025408 .word 0x58025408 + 802e6cc: 5802541c .word 0x5802541c + 802e6d0: 58025430 .word 0x58025430 + 802e6d4: 58025444 .word 0x58025444 + 802e6d8: 58025458 .word 0x58025458 + 802e6dc: 5802546c .word 0x5802546c + 802e6e0: 58025480 .word 0x58025480 + 802e6e4: 58025494 .word 0x58025494 + 802e6e8: fffe000f .word 0xfffe000f + 802e6ec: 2310 movs r3, #16 DMA_TO_BDMA_PERIPHERAL_INC(hdma->Init.PeriphInc) | - 802e6ae: 687a ldr r2, [r7, #4] - 802e6b0: 68d2 ldr r2, [r2, #12] - 802e6b2: 08d2 lsrs r2, r2, #3 + 802e6ee: 687a ldr r2, [r7, #4] + 802e6f0: 68d2 ldr r2, [r2, #12] + 802e6f2: 08d2 lsrs r2, r2, #3 registerValue |= DMA_TO_BDMA_DIRECTION(hdma->Init.Direction) | - 802e6b4: 431a orrs r2, r3 + 802e6f4: 431a orrs r2, r3 DMA_TO_BDMA_MEMORY_INC(hdma->Init.MemInc) | - 802e6b6: 687b ldr r3, [r7, #4] - 802e6b8: 691b ldr r3, [r3, #16] - 802e6ba: 08db lsrs r3, r3, #3 + 802e6f6: 687b ldr r3, [r7, #4] + 802e6f8: 691b ldr r3, [r3, #16] + 802e6fa: 08db lsrs r3, r3, #3 DMA_TO_BDMA_PERIPHERAL_INC(hdma->Init.PeriphInc) | - 802e6bc: 431a orrs r2, r3 + 802e6fc: 431a orrs r2, r3 DMA_TO_BDMA_PDATA_SIZE(hdma->Init.PeriphDataAlignment) | - 802e6be: 687b ldr r3, [r7, #4] - 802e6c0: 695b ldr r3, [r3, #20] - 802e6c2: 08db lsrs r3, r3, #3 + 802e6fe: 687b ldr r3, [r7, #4] + 802e700: 695b ldr r3, [r3, #20] + 802e702: 08db lsrs r3, r3, #3 DMA_TO_BDMA_MEMORY_INC(hdma->Init.MemInc) | - 802e6c4: 431a orrs r2, r3 + 802e704: 431a orrs r2, r3 DMA_TO_BDMA_MDATA_SIZE(hdma->Init.MemDataAlignment) | - 802e6c6: 687b ldr r3, [r7, #4] - 802e6c8: 699b ldr r3, [r3, #24] - 802e6ca: 08db lsrs r3, r3, #3 + 802e706: 687b ldr r3, [r7, #4] + 802e708: 699b ldr r3, [r3, #24] + 802e70a: 08db lsrs r3, r3, #3 DMA_TO_BDMA_PDATA_SIZE(hdma->Init.PeriphDataAlignment) | - 802e6cc: 431a orrs r2, r3 + 802e70c: 431a orrs r2, r3 DMA_TO_BDMA_MODE(hdma->Init.Mode) | - 802e6ce: 687b ldr r3, [r7, #4] - 802e6d0: 69db ldr r3, [r3, #28] - 802e6d2: 08db lsrs r3, r3, #3 + 802e70e: 687b ldr r3, [r7, #4] + 802e710: 69db ldr r3, [r3, #28] + 802e712: 08db lsrs r3, r3, #3 DMA_TO_BDMA_MDATA_SIZE(hdma->Init.MemDataAlignment) | - 802e6d4: 431a orrs r2, r3 + 802e714: 431a orrs r2, r3 DMA_TO_BDMA_PRIORITY(hdma->Init.Priority); - 802e6d6: 687b ldr r3, [r7, #4] - 802e6d8: 6a1b ldr r3, [r3, #32] - 802e6da: 091b lsrs r3, r3, #4 + 802e716: 687b ldr r3, [r7, #4] + 802e718: 6a1b ldr r3, [r3, #32] + 802e71a: 091b lsrs r3, r3, #4 DMA_TO_BDMA_MODE(hdma->Init.Mode) | - 802e6dc: 4313 orrs r3, r2 + 802e71c: 4313 orrs r3, r2 registerValue |= DMA_TO_BDMA_DIRECTION(hdma->Init.Direction) | - 802e6de: 697a ldr r2, [r7, #20] - 802e6e0: 4313 orrs r3, r2 - 802e6e2: 617b str r3, [r7, #20] + 802e71e: 697a ldr r2, [r7, #20] + 802e720: 4313 orrs r3, r2 + 802e722: 617b str r3, [r7, #20] /* Write to DMA Channel CR register */ ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR = registerValue; - 802e6e4: 687b ldr r3, [r7, #4] - 802e6e6: 681b ldr r3, [r3, #0] - 802e6e8: 697a ldr r2, [r7, #20] - 802e6ea: 601a str r2, [r3, #0] + 802e724: 687b ldr r3, [r7, #4] + 802e726: 681b ldr r3, [r3, #0] + 802e728: 697a ldr r2, [r7, #20] + 802e72a: 601a str r2, [r3, #0] /* calculation of the channel index */ hdma->StreamIndex = (((uint32_t)((uint32_t*)hdma->Instance) - (uint32_t)BDMA_Channel0) / ((uint32_t)BDMA_Channel1 - (uint32_t)BDMA_Channel0)) << 2U; - 802e6ec: 687b ldr r3, [r7, #4] - 802e6ee: 681b ldr r3, [r3, #0] - 802e6f0: 461a mov r2, r3 - 802e6f2: 4b6e ldr r3, [pc, #440] ; (802e8ac ) - 802e6f4: 4413 add r3, r2 - 802e6f6: 4a6e ldr r2, [pc, #440] ; (802e8b0 ) - 802e6f8: fba2 2303 umull r2, r3, r2, r3 - 802e6fc: 091b lsrs r3, r3, #4 - 802e6fe: 009a lsls r2, r3, #2 - 802e700: 687b ldr r3, [r7, #4] - 802e702: 65da str r2, [r3, #92] ; 0x5c + 802e72c: 687b ldr r3, [r7, #4] + 802e72e: 681b ldr r3, [r3, #0] + 802e730: 461a mov r2, r3 + 802e732: 4b6e ldr r3, [pc, #440] ; (802e8ec ) + 802e734: 4413 add r3, r2 + 802e736: 4a6e ldr r2, [pc, #440] ; (802e8f0 ) + 802e738: fba2 2303 umull r2, r3, r2, r3 + 802e73c: 091b lsrs r3, r3, #4 + 802e73e: 009a lsls r2, r3, #2 + 802e740: 687b ldr r3, [r7, #4] + 802e742: 65da str r2, [r3, #92] ; 0x5c /* Initialize StreamBaseAddress and StreamIndex parameters to be used to calculate DMA steam Base Address needed by HAL_DMA_IRQHandler() and HAL_DMA_PollForTransfer() */ regs_bdma = (BDMA_Base_Registers *)DMA_CalcBaseAndBitshift(hdma); - 802e704: 6878 ldr r0, [r7, #4] - 802e706: f002 f9b7 bl 8030a78 - 802e70a: 4603 mov r3, r0 - 802e70c: 60fb str r3, [r7, #12] + 802e744: 6878 ldr r0, [r7, #4] + 802e746: f002 f9b7 bl 8030ab8 + 802e74a: 4603 mov r3, r0 + 802e74c: 60fb str r3, [r7, #12] /* Clear all interrupt flags */ regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU)); - 802e70e: 687b ldr r3, [r7, #4] - 802e710: 6ddb ldr r3, [r3, #92] ; 0x5c - 802e712: f003 031f and.w r3, r3, #31 - 802e716: 2201 movs r2, #1 - 802e718: 409a lsls r2, r3 - 802e71a: 68fb ldr r3, [r7, #12] - 802e71c: 605a str r2, [r3, #4] - 802e71e: e008 b.n 802e732 + 802e74e: 687b ldr r3, [r7, #4] + 802e750: 6ddb ldr r3, [r3, #92] ; 0x5c + 802e752: f003 031f and.w r3, r3, #31 + 802e756: 2201 movs r2, #1 + 802e758: 409a lsls r2, r3 + 802e75a: 68fb ldr r3, [r7, #12] + 802e75c: 605a str r2, [r3, #4] + 802e75e: e008 b.n 802e772 } else { hdma->ErrorCode = HAL_DMA_ERROR_PARAM; - 802e720: 687b ldr r3, [r7, #4] - 802e722: 2240 movs r2, #64 ; 0x40 - 802e724: 655a str r2, [r3, #84] ; 0x54 + 802e760: 687b ldr r3, [r7, #4] + 802e762: 2240 movs r2, #64 ; 0x40 + 802e764: 655a str r2, [r3, #84] ; 0x54 hdma->State = HAL_DMA_STATE_ERROR; - 802e726: 687b ldr r3, [r7, #4] - 802e728: 2203 movs r2, #3 - 802e72a: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e766: 687b ldr r3, [r7, #4] + 802e768: 2203 movs r2, #3 + 802e76a: f883 2035 strb.w r2, [r3, #53] ; 0x35 return HAL_ERROR; - 802e72e: 2301 movs r3, #1 - 802e730: e0b7 b.n 802e8a2 + 802e76e: 2301 movs r3, #1 + 802e770: e0b7 b.n 802e8e2 } if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ - 802e732: 687b ldr r3, [r7, #4] - 802e734: 681b ldr r3, [r3, #0] - 802e736: 4a5f ldr r2, [pc, #380] ; (802e8b4 ) - 802e738: 4293 cmp r3, r2 - 802e73a: d072 beq.n 802e822 - 802e73c: 687b ldr r3, [r7, #4] - 802e73e: 681b ldr r3, [r3, #0] - 802e740: 4a5d ldr r2, [pc, #372] ; (802e8b8 ) - 802e742: 4293 cmp r3, r2 - 802e744: d06d beq.n 802e822 - 802e746: 687b ldr r3, [r7, #4] - 802e748: 681b ldr r3, [r3, #0] - 802e74a: 4a5c ldr r2, [pc, #368] ; (802e8bc ) - 802e74c: 4293 cmp r3, r2 - 802e74e: d068 beq.n 802e822 - 802e750: 687b ldr r3, [r7, #4] - 802e752: 681b ldr r3, [r3, #0] - 802e754: 4a5a ldr r2, [pc, #360] ; (802e8c0 ) - 802e756: 4293 cmp r3, r2 - 802e758: d063 beq.n 802e822 - 802e75a: 687b ldr r3, [r7, #4] - 802e75c: 681b ldr r3, [r3, #0] - 802e75e: 4a59 ldr r2, [pc, #356] ; (802e8c4 ) - 802e760: 4293 cmp r3, r2 - 802e762: d05e beq.n 802e822 - 802e764: 687b ldr r3, [r7, #4] - 802e766: 681b ldr r3, [r3, #0] - 802e768: 4a57 ldr r2, [pc, #348] ; (802e8c8 ) - 802e76a: 4293 cmp r3, r2 - 802e76c: d059 beq.n 802e822 - 802e76e: 687b ldr r3, [r7, #4] - 802e770: 681b ldr r3, [r3, #0] - 802e772: 4a56 ldr r2, [pc, #344] ; (802e8cc ) - 802e774: 4293 cmp r3, r2 - 802e776: d054 beq.n 802e822 - 802e778: 687b ldr r3, [r7, #4] - 802e77a: 681b ldr r3, [r3, #0] - 802e77c: 4a54 ldr r2, [pc, #336] ; (802e8d0 ) - 802e77e: 4293 cmp r3, r2 - 802e780: d04f beq.n 802e822 - 802e782: 687b ldr r3, [r7, #4] - 802e784: 681b ldr r3, [r3, #0] - 802e786: 4a53 ldr r2, [pc, #332] ; (802e8d4 ) - 802e788: 4293 cmp r3, r2 - 802e78a: d04a beq.n 802e822 - 802e78c: 687b ldr r3, [r7, #4] - 802e78e: 681b ldr r3, [r3, #0] - 802e790: 4a51 ldr r2, [pc, #324] ; (802e8d8 ) - 802e792: 4293 cmp r3, r2 - 802e794: d045 beq.n 802e822 - 802e796: 687b ldr r3, [r7, #4] - 802e798: 681b ldr r3, [r3, #0] - 802e79a: 4a50 ldr r2, [pc, #320] ; (802e8dc ) - 802e79c: 4293 cmp r3, r2 - 802e79e: d040 beq.n 802e822 - 802e7a0: 687b ldr r3, [r7, #4] - 802e7a2: 681b ldr r3, [r3, #0] - 802e7a4: 4a4e ldr r2, [pc, #312] ; (802e8e0 ) - 802e7a6: 4293 cmp r3, r2 - 802e7a8: d03b beq.n 802e822 - 802e7aa: 687b ldr r3, [r7, #4] - 802e7ac: 681b ldr r3, [r3, #0] - 802e7ae: 4a4d ldr r2, [pc, #308] ; (802e8e4 ) - 802e7b0: 4293 cmp r3, r2 - 802e7b2: d036 beq.n 802e822 - 802e7b4: 687b ldr r3, [r7, #4] - 802e7b6: 681b ldr r3, [r3, #0] - 802e7b8: 4a4b ldr r2, [pc, #300] ; (802e8e8 ) - 802e7ba: 4293 cmp r3, r2 - 802e7bc: d031 beq.n 802e822 - 802e7be: 687b ldr r3, [r7, #4] - 802e7c0: 681b ldr r3, [r3, #0] - 802e7c2: 4a4a ldr r2, [pc, #296] ; (802e8ec ) - 802e7c4: 4293 cmp r3, r2 - 802e7c6: d02c beq.n 802e822 - 802e7c8: 687b ldr r3, [r7, #4] - 802e7ca: 681b ldr r3, [r3, #0] - 802e7cc: 4a48 ldr r2, [pc, #288] ; (802e8f0 ) - 802e7ce: 4293 cmp r3, r2 - 802e7d0: d027 beq.n 802e822 - 802e7d2: 687b ldr r3, [r7, #4] - 802e7d4: 681b ldr r3, [r3, #0] - 802e7d6: 4a47 ldr r2, [pc, #284] ; (802e8f4 ) - 802e7d8: 4293 cmp r3, r2 - 802e7da: d022 beq.n 802e822 - 802e7dc: 687b ldr r3, [r7, #4] - 802e7de: 681b ldr r3, [r3, #0] - 802e7e0: 4a45 ldr r2, [pc, #276] ; (802e8f8 ) - 802e7e2: 4293 cmp r3, r2 - 802e7e4: d01d beq.n 802e822 - 802e7e6: 687b ldr r3, [r7, #4] - 802e7e8: 681b ldr r3, [r3, #0] - 802e7ea: 4a44 ldr r2, [pc, #272] ; (802e8fc ) - 802e7ec: 4293 cmp r3, r2 - 802e7ee: d018 beq.n 802e822 - 802e7f0: 687b ldr r3, [r7, #4] - 802e7f2: 681b ldr r3, [r3, #0] - 802e7f4: 4a42 ldr r2, [pc, #264] ; (802e900 ) - 802e7f6: 4293 cmp r3, r2 - 802e7f8: d013 beq.n 802e822 - 802e7fa: 687b ldr r3, [r7, #4] - 802e7fc: 681b ldr r3, [r3, #0] - 802e7fe: 4a41 ldr r2, [pc, #260] ; (802e904 ) - 802e800: 4293 cmp r3, r2 - 802e802: d00e beq.n 802e822 - 802e804: 687b ldr r3, [r7, #4] - 802e806: 681b ldr r3, [r3, #0] - 802e808: 4a3f ldr r2, [pc, #252] ; (802e908 ) - 802e80a: 4293 cmp r3, r2 - 802e80c: d009 beq.n 802e822 - 802e80e: 687b ldr r3, [r7, #4] - 802e810: 681b ldr r3, [r3, #0] - 802e812: 4a3e ldr r2, [pc, #248] ; (802e90c ) - 802e814: 4293 cmp r3, r2 - 802e816: d004 beq.n 802e822 - 802e818: 687b ldr r3, [r7, #4] - 802e81a: 681b ldr r3, [r3, #0] - 802e81c: 4a3c ldr r2, [pc, #240] ; (802e910 ) - 802e81e: 4293 cmp r3, r2 - 802e820: d101 bne.n 802e826 - 802e822: 2301 movs r3, #1 - 802e824: e000 b.n 802e828 - 802e826: 2300 movs r3, #0 - 802e828: 2b00 cmp r3, #0 - 802e82a: d032 beq.n 802e892 + 802e772: 687b ldr r3, [r7, #4] + 802e774: 681b ldr r3, [r3, #0] + 802e776: 4a5f ldr r2, [pc, #380] ; (802e8f4 ) + 802e778: 4293 cmp r3, r2 + 802e77a: d072 beq.n 802e862 + 802e77c: 687b ldr r3, [r7, #4] + 802e77e: 681b ldr r3, [r3, #0] + 802e780: 4a5d ldr r2, [pc, #372] ; (802e8f8 ) + 802e782: 4293 cmp r3, r2 + 802e784: d06d beq.n 802e862 + 802e786: 687b ldr r3, [r7, #4] + 802e788: 681b ldr r3, [r3, #0] + 802e78a: 4a5c ldr r2, [pc, #368] ; (802e8fc ) + 802e78c: 4293 cmp r3, r2 + 802e78e: d068 beq.n 802e862 + 802e790: 687b ldr r3, [r7, #4] + 802e792: 681b ldr r3, [r3, #0] + 802e794: 4a5a ldr r2, [pc, #360] ; (802e900 ) + 802e796: 4293 cmp r3, r2 + 802e798: d063 beq.n 802e862 + 802e79a: 687b ldr r3, [r7, #4] + 802e79c: 681b ldr r3, [r3, #0] + 802e79e: 4a59 ldr r2, [pc, #356] ; (802e904 ) + 802e7a0: 4293 cmp r3, r2 + 802e7a2: d05e beq.n 802e862 + 802e7a4: 687b ldr r3, [r7, #4] + 802e7a6: 681b ldr r3, [r3, #0] + 802e7a8: 4a57 ldr r2, [pc, #348] ; (802e908 ) + 802e7aa: 4293 cmp r3, r2 + 802e7ac: d059 beq.n 802e862 + 802e7ae: 687b ldr r3, [r7, #4] + 802e7b0: 681b ldr r3, [r3, #0] + 802e7b2: 4a56 ldr r2, [pc, #344] ; (802e90c ) + 802e7b4: 4293 cmp r3, r2 + 802e7b6: d054 beq.n 802e862 + 802e7b8: 687b ldr r3, [r7, #4] + 802e7ba: 681b ldr r3, [r3, #0] + 802e7bc: 4a54 ldr r2, [pc, #336] ; (802e910 ) + 802e7be: 4293 cmp r3, r2 + 802e7c0: d04f beq.n 802e862 + 802e7c2: 687b ldr r3, [r7, #4] + 802e7c4: 681b ldr r3, [r3, #0] + 802e7c6: 4a53 ldr r2, [pc, #332] ; (802e914 ) + 802e7c8: 4293 cmp r3, r2 + 802e7ca: d04a beq.n 802e862 + 802e7cc: 687b ldr r3, [r7, #4] + 802e7ce: 681b ldr r3, [r3, #0] + 802e7d0: 4a51 ldr r2, [pc, #324] ; (802e918 ) + 802e7d2: 4293 cmp r3, r2 + 802e7d4: d045 beq.n 802e862 + 802e7d6: 687b ldr r3, [r7, #4] + 802e7d8: 681b ldr r3, [r3, #0] + 802e7da: 4a50 ldr r2, [pc, #320] ; (802e91c ) + 802e7dc: 4293 cmp r3, r2 + 802e7de: d040 beq.n 802e862 + 802e7e0: 687b ldr r3, [r7, #4] + 802e7e2: 681b ldr r3, [r3, #0] + 802e7e4: 4a4e ldr r2, [pc, #312] ; (802e920 ) + 802e7e6: 4293 cmp r3, r2 + 802e7e8: d03b beq.n 802e862 + 802e7ea: 687b ldr r3, [r7, #4] + 802e7ec: 681b ldr r3, [r3, #0] + 802e7ee: 4a4d ldr r2, [pc, #308] ; (802e924 ) + 802e7f0: 4293 cmp r3, r2 + 802e7f2: d036 beq.n 802e862 + 802e7f4: 687b ldr r3, [r7, #4] + 802e7f6: 681b ldr r3, [r3, #0] + 802e7f8: 4a4b ldr r2, [pc, #300] ; (802e928 ) + 802e7fa: 4293 cmp r3, r2 + 802e7fc: d031 beq.n 802e862 + 802e7fe: 687b ldr r3, [r7, #4] + 802e800: 681b ldr r3, [r3, #0] + 802e802: 4a4a ldr r2, [pc, #296] ; (802e92c ) + 802e804: 4293 cmp r3, r2 + 802e806: d02c beq.n 802e862 + 802e808: 687b ldr r3, [r7, #4] + 802e80a: 681b ldr r3, [r3, #0] + 802e80c: 4a48 ldr r2, [pc, #288] ; (802e930 ) + 802e80e: 4293 cmp r3, r2 + 802e810: d027 beq.n 802e862 + 802e812: 687b ldr r3, [r7, #4] + 802e814: 681b ldr r3, [r3, #0] + 802e816: 4a47 ldr r2, [pc, #284] ; (802e934 ) + 802e818: 4293 cmp r3, r2 + 802e81a: d022 beq.n 802e862 + 802e81c: 687b ldr r3, [r7, #4] + 802e81e: 681b ldr r3, [r3, #0] + 802e820: 4a45 ldr r2, [pc, #276] ; (802e938 ) + 802e822: 4293 cmp r3, r2 + 802e824: d01d beq.n 802e862 + 802e826: 687b ldr r3, [r7, #4] + 802e828: 681b ldr r3, [r3, #0] + 802e82a: 4a44 ldr r2, [pc, #272] ; (802e93c ) + 802e82c: 4293 cmp r3, r2 + 802e82e: d018 beq.n 802e862 + 802e830: 687b ldr r3, [r7, #4] + 802e832: 681b ldr r3, [r3, #0] + 802e834: 4a42 ldr r2, [pc, #264] ; (802e940 ) + 802e836: 4293 cmp r3, r2 + 802e838: d013 beq.n 802e862 + 802e83a: 687b ldr r3, [r7, #4] + 802e83c: 681b ldr r3, [r3, #0] + 802e83e: 4a41 ldr r2, [pc, #260] ; (802e944 ) + 802e840: 4293 cmp r3, r2 + 802e842: d00e beq.n 802e862 + 802e844: 687b ldr r3, [r7, #4] + 802e846: 681b ldr r3, [r3, #0] + 802e848: 4a3f ldr r2, [pc, #252] ; (802e948 ) + 802e84a: 4293 cmp r3, r2 + 802e84c: d009 beq.n 802e862 + 802e84e: 687b ldr r3, [r7, #4] + 802e850: 681b ldr r3, [r3, #0] + 802e852: 4a3e ldr r2, [pc, #248] ; (802e94c ) + 802e854: 4293 cmp r3, r2 + 802e856: d004 beq.n 802e862 + 802e858: 687b ldr r3, [r7, #4] + 802e85a: 681b ldr r3, [r3, #0] + 802e85c: 4a3c ldr r2, [pc, #240] ; (802e950 ) + 802e85e: 4293 cmp r3, r2 + 802e860: d101 bne.n 802e866 + 802e862: 2301 movs r3, #1 + 802e864: e000 b.n 802e868 + 802e866: 2300 movs r3, #0 + 802e868: 2b00 cmp r3, #0 + 802e86a: d032 beq.n 802e8d2 { /* Initialize parameters for DMAMUX channel : DMAmuxChannel, DMAmuxChannelStatus and DMAmuxChannelStatusMask */ DMA_CalcDMAMUXChannelBaseAndMask(hdma); - 802e82c: 6878 ldr r0, [r7, #4] - 802e82e: f002 fa51 bl 8030cd4 + 802e86c: 6878 ldr r0, [r7, #4] + 802e86e: f002 fa51 bl 8030d14 if(hdma->Init.Direction == DMA_MEMORY_TO_MEMORY) - 802e832: 687b ldr r3, [r7, #4] - 802e834: 689b ldr r3, [r3, #8] - 802e836: 2b80 cmp r3, #128 ; 0x80 - 802e838: d102 bne.n 802e840 + 802e872: 687b ldr r3, [r7, #4] + 802e874: 689b ldr r3, [r3, #8] + 802e876: 2b80 cmp r3, #128 ; 0x80 + 802e878: d102 bne.n 802e880 { /* if memory to memory force the request to 0*/ hdma->Init.Request = DMA_REQUEST_MEM2MEM; - 802e83a: 687b ldr r3, [r7, #4] - 802e83c: 2200 movs r2, #0 - 802e83e: 605a str r2, [r3, #4] + 802e87a: 687b ldr r3, [r7, #4] + 802e87c: 2200 movs r2, #0 + 802e87e: 605a str r2, [r3, #4] } /* Set peripheral request to DMAMUX channel */ hdma->DMAmuxChannel->CCR = (hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID); - 802e840: 687b ldr r3, [r7, #4] - 802e842: 685a ldr r2, [r3, #4] - 802e844: 687b ldr r3, [r7, #4] - 802e846: 6e1b ldr r3, [r3, #96] ; 0x60 - 802e848: b2d2 uxtb r2, r2 - 802e84a: 601a str r2, [r3, #0] + 802e880: 687b ldr r3, [r7, #4] + 802e882: 685a ldr r2, [r3, #4] + 802e884: 687b ldr r3, [r7, #4] + 802e886: 6e1b ldr r3, [r3, #96] ; 0x60 + 802e888: b2d2 uxtb r2, r2 + 802e88a: 601a str r2, [r3, #0] /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 802e84c: 687b ldr r3, [r7, #4] - 802e84e: 6e5b ldr r3, [r3, #100] ; 0x64 - 802e850: 687a ldr r2, [r7, #4] - 802e852: 6e92 ldr r2, [r2, #104] ; 0x68 - 802e854: 605a str r2, [r3, #4] + 802e88c: 687b ldr r3, [r7, #4] + 802e88e: 6e5b ldr r3, [r3, #100] ; 0x64 + 802e890: 687a ldr r2, [r7, #4] + 802e892: 6e92 ldr r2, [r2, #104] ; 0x68 + 802e894: 605a str r2, [r3, #4] /* Initialize parameters for DMAMUX request generator : if the DMA request is DMA_REQUEST_GENERATOR0 to DMA_REQUEST_GENERATOR7 */ if((hdma->Init.Request >= DMA_REQUEST_GENERATOR0) && (hdma->Init.Request <= DMA_REQUEST_GENERATOR7)) - 802e856: 687b ldr r3, [r7, #4] - 802e858: 685b ldr r3, [r3, #4] - 802e85a: 2b00 cmp r3, #0 - 802e85c: d010 beq.n 802e880 - 802e85e: 687b ldr r3, [r7, #4] - 802e860: 685b ldr r3, [r3, #4] - 802e862: 2b08 cmp r3, #8 - 802e864: d80c bhi.n 802e880 + 802e896: 687b ldr r3, [r7, #4] + 802e898: 685b ldr r3, [r3, #4] + 802e89a: 2b00 cmp r3, #0 + 802e89c: d010 beq.n 802e8c0 + 802e89e: 687b ldr r3, [r7, #4] + 802e8a0: 685b ldr r3, [r3, #4] + 802e8a2: 2b08 cmp r3, #8 + 802e8a4: d80c bhi.n 802e8c0 { /* Initialize parameters for DMAMUX request generator : DMAmuxRequestGen, DMAmuxRequestGenStatus and DMAmuxRequestGenStatusMask */ DMA_CalcDMAMUXRequestGenBaseAndMask(hdma); - 802e866: 6878 ldr r0, [r7, #4] - 802e868: f002 face bl 8030e08 + 802e8a6: 6878 ldr r0, [r7, #4] + 802e8a8: f002 face bl 8030e48 /* Reset the DMAMUX request generator register */ hdma->DMAmuxRequestGen->RGCR = 0U; - 802e86c: 687b ldr r3, [r7, #4] - 802e86e: 6edb ldr r3, [r3, #108] ; 0x6c - 802e870: 2200 movs r2, #0 - 802e872: 601a str r2, [r3, #0] + 802e8ac: 687b ldr r3, [r7, #4] + 802e8ae: 6edb ldr r3, [r3, #108] ; 0x6c + 802e8b0: 2200 movs r2, #0 + 802e8b2: 601a str r2, [r3, #0] /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 802e874: 687b ldr r3, [r7, #4] - 802e876: 6f1b ldr r3, [r3, #112] ; 0x70 - 802e878: 687a ldr r2, [r7, #4] - 802e87a: 6f52 ldr r2, [r2, #116] ; 0x74 - 802e87c: 605a str r2, [r3, #4] - 802e87e: e008 b.n 802e892 + 802e8b4: 687b ldr r3, [r7, #4] + 802e8b6: 6f1b ldr r3, [r3, #112] ; 0x70 + 802e8b8: 687a ldr r2, [r7, #4] + 802e8ba: 6f52 ldr r2, [r2, #116] ; 0x74 + 802e8bc: 605a str r2, [r3, #4] + 802e8be: e008 b.n 802e8d2 } else { hdma->DMAmuxRequestGen = 0U; - 802e880: 687b ldr r3, [r7, #4] - 802e882: 2200 movs r2, #0 - 802e884: 66da str r2, [r3, #108] ; 0x6c + 802e8c0: 687b ldr r3, [r7, #4] + 802e8c2: 2200 movs r2, #0 + 802e8c4: 66da str r2, [r3, #108] ; 0x6c hdma->DMAmuxRequestGenStatus = 0U; - 802e886: 687b ldr r3, [r7, #4] - 802e888: 2200 movs r2, #0 - 802e88a: 671a str r2, [r3, #112] ; 0x70 + 802e8c6: 687b ldr r3, [r7, #4] + 802e8c8: 2200 movs r2, #0 + 802e8ca: 671a str r2, [r3, #112] ; 0x70 hdma->DMAmuxRequestGenStatusMask = 0U; - 802e88c: 687b ldr r3, [r7, #4] - 802e88e: 2200 movs r2, #0 - 802e890: 675a str r2, [r3, #116] ; 0x74 + 802e8cc: 687b ldr r3, [r7, #4] + 802e8ce: 2200 movs r2, #0 + 802e8d0: 675a str r2, [r3, #116] ; 0x74 } } /* Initialize the error code */ hdma->ErrorCode = HAL_DMA_ERROR_NONE; - 802e892: 687b ldr r3, [r7, #4] - 802e894: 2200 movs r2, #0 - 802e896: 655a str r2, [r3, #84] ; 0x54 + 802e8d2: 687b ldr r3, [r7, #4] + 802e8d4: 2200 movs r2, #0 + 802e8d6: 655a str r2, [r3, #84] ; 0x54 /* Initialize the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 802e898: 687b ldr r3, [r7, #4] - 802e89a: 2201 movs r2, #1 - 802e89c: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e8d8: 687b ldr r3, [r7, #4] + 802e8da: 2201 movs r2, #1 + 802e8dc: f883 2035 strb.w r2, [r3, #53] ; 0x35 return HAL_OK; - 802e8a0: 2300 movs r3, #0 -} - 802e8a2: 4618 mov r0, r3 - 802e8a4: 3718 adds r7, #24 - 802e8a6: 46bd mov sp, r7 - 802e8a8: bd80 pop {r7, pc} - 802e8aa: bf00 nop - 802e8ac: a7fdabf8 .word 0xa7fdabf8 - 802e8b0: cccccccd .word 0xcccccccd - 802e8b4: 40020010 .word 0x40020010 - 802e8b8: 40020028 .word 0x40020028 - 802e8bc: 40020040 .word 0x40020040 - 802e8c0: 40020058 .word 0x40020058 - 802e8c4: 40020070 .word 0x40020070 - 802e8c8: 40020088 .word 0x40020088 - 802e8cc: 400200a0 .word 0x400200a0 - 802e8d0: 400200b8 .word 0x400200b8 - 802e8d4: 40020410 .word 0x40020410 - 802e8d8: 40020428 .word 0x40020428 - 802e8dc: 40020440 .word 0x40020440 - 802e8e0: 40020458 .word 0x40020458 - 802e8e4: 40020470 .word 0x40020470 - 802e8e8: 40020488 .word 0x40020488 - 802e8ec: 400204a0 .word 0x400204a0 - 802e8f0: 400204b8 .word 0x400204b8 - 802e8f4: 58025408 .word 0x58025408 - 802e8f8: 5802541c .word 0x5802541c - 802e8fc: 58025430 .word 0x58025430 - 802e900: 58025444 .word 0x58025444 - 802e904: 58025458 .word 0x58025458 - 802e908: 5802546c .word 0x5802546c - 802e90c: 58025480 .word 0x58025480 - 802e910: 58025494 .word 0x58025494 - -0802e914 : + 802e8e0: 2300 movs r3, #0 +} + 802e8e2: 4618 mov r0, r3 + 802e8e4: 3718 adds r7, #24 + 802e8e6: 46bd mov sp, r7 + 802e8e8: bd80 pop {r7, pc} + 802e8ea: bf00 nop + 802e8ec: a7fdabf8 .word 0xa7fdabf8 + 802e8f0: cccccccd .word 0xcccccccd + 802e8f4: 40020010 .word 0x40020010 + 802e8f8: 40020028 .word 0x40020028 + 802e8fc: 40020040 .word 0x40020040 + 802e900: 40020058 .word 0x40020058 + 802e904: 40020070 .word 0x40020070 + 802e908: 40020088 .word 0x40020088 + 802e90c: 400200a0 .word 0x400200a0 + 802e910: 400200b8 .word 0x400200b8 + 802e914: 40020410 .word 0x40020410 + 802e918: 40020428 .word 0x40020428 + 802e91c: 40020440 .word 0x40020440 + 802e920: 40020458 .word 0x40020458 + 802e924: 40020470 .word 0x40020470 + 802e928: 40020488 .word 0x40020488 + 802e92c: 400204a0 .word 0x400204a0 + 802e930: 400204b8 .word 0x400204b8 + 802e934: 58025408 .word 0x58025408 + 802e938: 5802541c .word 0x5802541c + 802e93c: 58025430 .word 0x58025430 + 802e940: 58025444 .word 0x58025444 + 802e944: 58025458 .word 0x58025458 + 802e948: 5802546c .word 0x5802546c + 802e94c: 58025480 .word 0x58025480 + 802e950: 58025494 .word 0x58025494 + +0802e954 : * @param DstAddress: The destination memory Buffer address * @param DataLength: The length of data to be transferred from source to destination * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) { - 802e914: b580 push {r7, lr} - 802e916: b086 sub sp, #24 - 802e918: af00 add r7, sp, #0 - 802e91a: 60f8 str r0, [r7, #12] - 802e91c: 60b9 str r1, [r7, #8] - 802e91e: 607a str r2, [r7, #4] - 802e920: 603b str r3, [r7, #0] + 802e954: b580 push {r7, lr} + 802e956: b086 sub sp, #24 + 802e958: af00 add r7, sp, #0 + 802e95a: 60f8 str r0, [r7, #12] + 802e95c: 60b9 str r1, [r7, #8] + 802e95e: 607a str r2, [r7, #4] + 802e960: 603b str r3, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 802e922: 2300 movs r3, #0 - 802e924: 75fb strb r3, [r7, #23] + 802e962: 2300 movs r3, #0 + 802e964: 75fb strb r3, [r7, #23] /* Check the parameters */ assert_param(IS_DMA_BUFFER_SIZE(DataLength)); /* Check the DMA peripheral handle */ if(hdma == NULL) - 802e926: 68fb ldr r3, [r7, #12] - 802e928: 2b00 cmp r3, #0 - 802e92a: d101 bne.n 802e930 + 802e966: 68fb ldr r3, [r7, #12] + 802e968: 2b00 cmp r3, #0 + 802e96a: d101 bne.n 802e970 { return HAL_ERROR; - 802e92c: 2301 movs r3, #1 - 802e92e: e226 b.n 802ed7e + 802e96c: 2301 movs r3, #1 + 802e96e: e226 b.n 802edbe } /* Process locked */ __HAL_LOCK(hdma); - 802e930: 68fb ldr r3, [r7, #12] - 802e932: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 802e936: 2b01 cmp r3, #1 - 802e938: d101 bne.n 802e93e - 802e93a: 2302 movs r3, #2 - 802e93c: e21f b.n 802ed7e - 802e93e: 68fb ldr r3, [r7, #12] - 802e940: 2201 movs r2, #1 - 802e942: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802e970: 68fb ldr r3, [r7, #12] + 802e972: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 802e976: 2b01 cmp r3, #1 + 802e978: d101 bne.n 802e97e + 802e97a: 2302 movs r3, #2 + 802e97c: e21f b.n 802edbe + 802e97e: 68fb ldr r3, [r7, #12] + 802e980: 2201 movs r2, #1 + 802e982: f883 2034 strb.w r2, [r3, #52] ; 0x34 if(HAL_DMA_STATE_READY == hdma->State) - 802e946: 68fb ldr r3, [r7, #12] - 802e948: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 - 802e94c: b2db uxtb r3, r3 - 802e94e: 2b01 cmp r3, #1 - 802e950: f040 820a bne.w 802ed68 + 802e986: 68fb ldr r3, [r7, #12] + 802e988: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 + 802e98c: b2db uxtb r3, r3 + 802e98e: 2b01 cmp r3, #1 + 802e990: f040 820a bne.w 802eda8 { /* Change DMA peripheral state */ hdma->State = HAL_DMA_STATE_BUSY; - 802e954: 68fb ldr r3, [r7, #12] - 802e956: 2202 movs r2, #2 - 802e958: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802e994: 68fb ldr r3, [r7, #12] + 802e996: 2202 movs r2, #2 + 802e998: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Initialize the error code */ hdma->ErrorCode = HAL_DMA_ERROR_NONE; - 802e95c: 68fb ldr r3, [r7, #12] - 802e95e: 2200 movs r2, #0 - 802e960: 655a str r2, [r3, #84] ; 0x54 + 802e99c: 68fb ldr r3, [r7, #12] + 802e99e: 2200 movs r2, #0 + 802e9a0: 655a str r2, [r3, #84] ; 0x54 /* Disable the peripheral */ __HAL_DMA_DISABLE(hdma); - 802e962: 68fb ldr r3, [r7, #12] - 802e964: 681b ldr r3, [r3, #0] - 802e966: 4a68 ldr r2, [pc, #416] ; (802eb08 ) - 802e968: 4293 cmp r3, r2 - 802e96a: d04a beq.n 802ea02 - 802e96c: 68fb ldr r3, [r7, #12] - 802e96e: 681b ldr r3, [r3, #0] - 802e970: 4a66 ldr r2, [pc, #408] ; (802eb0c ) - 802e972: 4293 cmp r3, r2 - 802e974: d045 beq.n 802ea02 - 802e976: 68fb ldr r3, [r7, #12] - 802e978: 681b ldr r3, [r3, #0] - 802e97a: 4a65 ldr r2, [pc, #404] ; (802eb10 ) - 802e97c: 4293 cmp r3, r2 - 802e97e: d040 beq.n 802ea02 - 802e980: 68fb ldr r3, [r7, #12] - 802e982: 681b ldr r3, [r3, #0] - 802e984: 4a63 ldr r2, [pc, #396] ; (802eb14 ) - 802e986: 4293 cmp r3, r2 - 802e988: d03b beq.n 802ea02 - 802e98a: 68fb ldr r3, [r7, #12] - 802e98c: 681b ldr r3, [r3, #0] - 802e98e: 4a62 ldr r2, [pc, #392] ; (802eb18 ) - 802e990: 4293 cmp r3, r2 - 802e992: d036 beq.n 802ea02 - 802e994: 68fb ldr r3, [r7, #12] - 802e996: 681b ldr r3, [r3, #0] - 802e998: 4a60 ldr r2, [pc, #384] ; (802eb1c ) - 802e99a: 4293 cmp r3, r2 - 802e99c: d031 beq.n 802ea02 - 802e99e: 68fb ldr r3, [r7, #12] - 802e9a0: 681b ldr r3, [r3, #0] - 802e9a2: 4a5f ldr r2, [pc, #380] ; (802eb20 ) - 802e9a4: 4293 cmp r3, r2 - 802e9a6: d02c beq.n 802ea02 - 802e9a8: 68fb ldr r3, [r7, #12] - 802e9aa: 681b ldr r3, [r3, #0] - 802e9ac: 4a5d ldr r2, [pc, #372] ; (802eb24 ) - 802e9ae: 4293 cmp r3, r2 - 802e9b0: d027 beq.n 802ea02 - 802e9b2: 68fb ldr r3, [r7, #12] - 802e9b4: 681b ldr r3, [r3, #0] - 802e9b6: 4a5c ldr r2, [pc, #368] ; (802eb28 ) - 802e9b8: 4293 cmp r3, r2 - 802e9ba: d022 beq.n 802ea02 - 802e9bc: 68fb ldr r3, [r7, #12] - 802e9be: 681b ldr r3, [r3, #0] - 802e9c0: 4a5a ldr r2, [pc, #360] ; (802eb2c ) - 802e9c2: 4293 cmp r3, r2 - 802e9c4: d01d beq.n 802ea02 - 802e9c6: 68fb ldr r3, [r7, #12] - 802e9c8: 681b ldr r3, [r3, #0] - 802e9ca: 4a59 ldr r2, [pc, #356] ; (802eb30 ) - 802e9cc: 4293 cmp r3, r2 - 802e9ce: d018 beq.n 802ea02 - 802e9d0: 68fb ldr r3, [r7, #12] - 802e9d2: 681b ldr r3, [r3, #0] - 802e9d4: 4a57 ldr r2, [pc, #348] ; (802eb34 ) - 802e9d6: 4293 cmp r3, r2 - 802e9d8: d013 beq.n 802ea02 - 802e9da: 68fb ldr r3, [r7, #12] - 802e9dc: 681b ldr r3, [r3, #0] - 802e9de: 4a56 ldr r2, [pc, #344] ; (802eb38 ) - 802e9e0: 4293 cmp r3, r2 - 802e9e2: d00e beq.n 802ea02 - 802e9e4: 68fb ldr r3, [r7, #12] - 802e9e6: 681b ldr r3, [r3, #0] - 802e9e8: 4a54 ldr r2, [pc, #336] ; (802eb3c ) - 802e9ea: 4293 cmp r3, r2 - 802e9ec: d009 beq.n 802ea02 - 802e9ee: 68fb ldr r3, [r7, #12] - 802e9f0: 681b ldr r3, [r3, #0] - 802e9f2: 4a53 ldr r2, [pc, #332] ; (802eb40 ) - 802e9f4: 4293 cmp r3, r2 - 802e9f6: d004 beq.n 802ea02 - 802e9f8: 68fb ldr r3, [r7, #12] - 802e9fa: 681b ldr r3, [r3, #0] - 802e9fc: 4a51 ldr r2, [pc, #324] ; (802eb44 ) - 802e9fe: 4293 cmp r3, r2 - 802ea00: d108 bne.n 802ea14 - 802ea02: 68fb ldr r3, [r7, #12] - 802ea04: 681b ldr r3, [r3, #0] - 802ea06: 681a ldr r2, [r3, #0] - 802ea08: 68fb ldr r3, [r7, #12] - 802ea0a: 681b ldr r3, [r3, #0] - 802ea0c: f022 0201 bic.w r2, r2, #1 - 802ea10: 601a str r2, [r3, #0] - 802ea12: e007 b.n 802ea24 - 802ea14: 68fb ldr r3, [r7, #12] - 802ea16: 681b ldr r3, [r3, #0] - 802ea18: 681a ldr r2, [r3, #0] + 802e9a2: 68fb ldr r3, [r7, #12] + 802e9a4: 681b ldr r3, [r3, #0] + 802e9a6: 4a68 ldr r2, [pc, #416] ; (802eb48 ) + 802e9a8: 4293 cmp r3, r2 + 802e9aa: d04a beq.n 802ea42 + 802e9ac: 68fb ldr r3, [r7, #12] + 802e9ae: 681b ldr r3, [r3, #0] + 802e9b0: 4a66 ldr r2, [pc, #408] ; (802eb4c ) + 802e9b2: 4293 cmp r3, r2 + 802e9b4: d045 beq.n 802ea42 + 802e9b6: 68fb ldr r3, [r7, #12] + 802e9b8: 681b ldr r3, [r3, #0] + 802e9ba: 4a65 ldr r2, [pc, #404] ; (802eb50 ) + 802e9bc: 4293 cmp r3, r2 + 802e9be: d040 beq.n 802ea42 + 802e9c0: 68fb ldr r3, [r7, #12] + 802e9c2: 681b ldr r3, [r3, #0] + 802e9c4: 4a63 ldr r2, [pc, #396] ; (802eb54 ) + 802e9c6: 4293 cmp r3, r2 + 802e9c8: d03b beq.n 802ea42 + 802e9ca: 68fb ldr r3, [r7, #12] + 802e9cc: 681b ldr r3, [r3, #0] + 802e9ce: 4a62 ldr r2, [pc, #392] ; (802eb58 ) + 802e9d0: 4293 cmp r3, r2 + 802e9d2: d036 beq.n 802ea42 + 802e9d4: 68fb ldr r3, [r7, #12] + 802e9d6: 681b ldr r3, [r3, #0] + 802e9d8: 4a60 ldr r2, [pc, #384] ; (802eb5c ) + 802e9da: 4293 cmp r3, r2 + 802e9dc: d031 beq.n 802ea42 + 802e9de: 68fb ldr r3, [r7, #12] + 802e9e0: 681b ldr r3, [r3, #0] + 802e9e2: 4a5f ldr r2, [pc, #380] ; (802eb60 ) + 802e9e4: 4293 cmp r3, r2 + 802e9e6: d02c beq.n 802ea42 + 802e9e8: 68fb ldr r3, [r7, #12] + 802e9ea: 681b ldr r3, [r3, #0] + 802e9ec: 4a5d ldr r2, [pc, #372] ; (802eb64 ) + 802e9ee: 4293 cmp r3, r2 + 802e9f0: d027 beq.n 802ea42 + 802e9f2: 68fb ldr r3, [r7, #12] + 802e9f4: 681b ldr r3, [r3, #0] + 802e9f6: 4a5c ldr r2, [pc, #368] ; (802eb68 ) + 802e9f8: 4293 cmp r3, r2 + 802e9fa: d022 beq.n 802ea42 + 802e9fc: 68fb ldr r3, [r7, #12] + 802e9fe: 681b ldr r3, [r3, #0] + 802ea00: 4a5a ldr r2, [pc, #360] ; (802eb6c ) + 802ea02: 4293 cmp r3, r2 + 802ea04: d01d beq.n 802ea42 + 802ea06: 68fb ldr r3, [r7, #12] + 802ea08: 681b ldr r3, [r3, #0] + 802ea0a: 4a59 ldr r2, [pc, #356] ; (802eb70 ) + 802ea0c: 4293 cmp r3, r2 + 802ea0e: d018 beq.n 802ea42 + 802ea10: 68fb ldr r3, [r7, #12] + 802ea12: 681b ldr r3, [r3, #0] + 802ea14: 4a57 ldr r2, [pc, #348] ; (802eb74 ) + 802ea16: 4293 cmp r3, r2 + 802ea18: d013 beq.n 802ea42 802ea1a: 68fb ldr r3, [r7, #12] 802ea1c: 681b ldr r3, [r3, #0] - 802ea1e: f022 0201 bic.w r2, r2, #1 - 802ea22: 601a str r2, [r3, #0] + 802ea1e: 4a56 ldr r2, [pc, #344] ; (802eb78 ) + 802ea20: 4293 cmp r3, r2 + 802ea22: d00e beq.n 802ea42 + 802ea24: 68fb ldr r3, [r7, #12] + 802ea26: 681b ldr r3, [r3, #0] + 802ea28: 4a54 ldr r2, [pc, #336] ; (802eb7c ) + 802ea2a: 4293 cmp r3, r2 + 802ea2c: d009 beq.n 802ea42 + 802ea2e: 68fb ldr r3, [r7, #12] + 802ea30: 681b ldr r3, [r3, #0] + 802ea32: 4a53 ldr r2, [pc, #332] ; (802eb80 ) + 802ea34: 4293 cmp r3, r2 + 802ea36: d004 beq.n 802ea42 + 802ea38: 68fb ldr r3, [r7, #12] + 802ea3a: 681b ldr r3, [r3, #0] + 802ea3c: 4a51 ldr r2, [pc, #324] ; (802eb84 ) + 802ea3e: 4293 cmp r3, r2 + 802ea40: d108 bne.n 802ea54 + 802ea42: 68fb ldr r3, [r7, #12] + 802ea44: 681b ldr r3, [r3, #0] + 802ea46: 681a ldr r2, [r3, #0] + 802ea48: 68fb ldr r3, [r7, #12] + 802ea4a: 681b ldr r3, [r3, #0] + 802ea4c: f022 0201 bic.w r2, r2, #1 + 802ea50: 601a str r2, [r3, #0] + 802ea52: e007 b.n 802ea64 + 802ea54: 68fb ldr r3, [r7, #12] + 802ea56: 681b ldr r3, [r3, #0] + 802ea58: 681a ldr r2, [r3, #0] + 802ea5a: 68fb ldr r3, [r7, #12] + 802ea5c: 681b ldr r3, [r3, #0] + 802ea5e: f022 0201 bic.w r2, r2, #1 + 802ea62: 601a str r2, [r3, #0] /* Configure the source, destination address and the data length */ DMA_SetConfig(hdma, SrcAddress, DstAddress, DataLength); - 802ea24: 683b ldr r3, [r7, #0] - 802ea26: 687a ldr r2, [r7, #4] - 802ea28: 68b9 ldr r1, [r7, #8] - 802ea2a: 68f8 ldr r0, [r7, #12] - 802ea2c: f001 fe78 bl 8030720 + 802ea64: 683b ldr r3, [r7, #0] + 802ea66: 687a ldr r2, [r7, #4] + 802ea68: 68b9 ldr r1, [r7, #8] + 802ea6a: 68f8 ldr r0, [r7, #12] + 802ea6c: f001 fe78 bl 8030760 if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802ea30: 68fb ldr r3, [r7, #12] - 802ea32: 681b ldr r3, [r3, #0] - 802ea34: 4a34 ldr r2, [pc, #208] ; (802eb08 ) - 802ea36: 4293 cmp r3, r2 - 802ea38: d04a beq.n 802ead0 - 802ea3a: 68fb ldr r3, [r7, #12] - 802ea3c: 681b ldr r3, [r3, #0] - 802ea3e: 4a33 ldr r2, [pc, #204] ; (802eb0c ) - 802ea40: 4293 cmp r3, r2 - 802ea42: d045 beq.n 802ead0 - 802ea44: 68fb ldr r3, [r7, #12] - 802ea46: 681b ldr r3, [r3, #0] - 802ea48: 4a31 ldr r2, [pc, #196] ; (802eb10 ) - 802ea4a: 4293 cmp r3, r2 - 802ea4c: d040 beq.n 802ead0 - 802ea4e: 68fb ldr r3, [r7, #12] - 802ea50: 681b ldr r3, [r3, #0] - 802ea52: 4a30 ldr r2, [pc, #192] ; (802eb14 ) - 802ea54: 4293 cmp r3, r2 - 802ea56: d03b beq.n 802ead0 - 802ea58: 68fb ldr r3, [r7, #12] - 802ea5a: 681b ldr r3, [r3, #0] - 802ea5c: 4a2e ldr r2, [pc, #184] ; (802eb18 ) - 802ea5e: 4293 cmp r3, r2 - 802ea60: d036 beq.n 802ead0 - 802ea62: 68fb ldr r3, [r7, #12] - 802ea64: 681b ldr r3, [r3, #0] - 802ea66: 4a2d ldr r2, [pc, #180] ; (802eb1c ) - 802ea68: 4293 cmp r3, r2 - 802ea6a: d031 beq.n 802ead0 - 802ea6c: 68fb ldr r3, [r7, #12] - 802ea6e: 681b ldr r3, [r3, #0] - 802ea70: 4a2b ldr r2, [pc, #172] ; (802eb20 ) - 802ea72: 4293 cmp r3, r2 - 802ea74: d02c beq.n 802ead0 - 802ea76: 68fb ldr r3, [r7, #12] - 802ea78: 681b ldr r3, [r3, #0] - 802ea7a: 4a2a ldr r2, [pc, #168] ; (802eb24 ) - 802ea7c: 4293 cmp r3, r2 - 802ea7e: d027 beq.n 802ead0 - 802ea80: 68fb ldr r3, [r7, #12] - 802ea82: 681b ldr r3, [r3, #0] - 802ea84: 4a28 ldr r2, [pc, #160] ; (802eb28 ) - 802ea86: 4293 cmp r3, r2 - 802ea88: d022 beq.n 802ead0 - 802ea8a: 68fb ldr r3, [r7, #12] - 802ea8c: 681b ldr r3, [r3, #0] - 802ea8e: 4a27 ldr r2, [pc, #156] ; (802eb2c ) - 802ea90: 4293 cmp r3, r2 - 802ea92: d01d beq.n 802ead0 - 802ea94: 68fb ldr r3, [r7, #12] - 802ea96: 681b ldr r3, [r3, #0] - 802ea98: 4a25 ldr r2, [pc, #148] ; (802eb30 ) - 802ea9a: 4293 cmp r3, r2 - 802ea9c: d018 beq.n 802ead0 - 802ea9e: 68fb ldr r3, [r7, #12] - 802eaa0: 681b ldr r3, [r3, #0] - 802eaa2: 4a24 ldr r2, [pc, #144] ; (802eb34 ) - 802eaa4: 4293 cmp r3, r2 - 802eaa6: d013 beq.n 802ead0 - 802eaa8: 68fb ldr r3, [r7, #12] - 802eaaa: 681b ldr r3, [r3, #0] - 802eaac: 4a22 ldr r2, [pc, #136] ; (802eb38 ) - 802eaae: 4293 cmp r3, r2 - 802eab0: d00e beq.n 802ead0 - 802eab2: 68fb ldr r3, [r7, #12] - 802eab4: 681b ldr r3, [r3, #0] - 802eab6: 4a21 ldr r2, [pc, #132] ; (802eb3c ) - 802eab8: 4293 cmp r3, r2 - 802eaba: d009 beq.n 802ead0 - 802eabc: 68fb ldr r3, [r7, #12] - 802eabe: 681b ldr r3, [r3, #0] - 802eac0: 4a1f ldr r2, [pc, #124] ; (802eb40 ) - 802eac2: 4293 cmp r3, r2 - 802eac4: d004 beq.n 802ead0 - 802eac6: 68fb ldr r3, [r7, #12] - 802eac8: 681b ldr r3, [r3, #0] - 802eaca: 4a1e ldr r2, [pc, #120] ; (802eb44 ) - 802eacc: 4293 cmp r3, r2 - 802eace: d101 bne.n 802ead4 - 802ead0: 2301 movs r3, #1 - 802ead2: e000 b.n 802ead6 - 802ead4: 2300 movs r3, #0 - 802ead6: 2b00 cmp r3, #0 - 802ead8: d036 beq.n 802eb48 + 802ea70: 68fb ldr r3, [r7, #12] + 802ea72: 681b ldr r3, [r3, #0] + 802ea74: 4a34 ldr r2, [pc, #208] ; (802eb48 ) + 802ea76: 4293 cmp r3, r2 + 802ea78: d04a beq.n 802eb10 + 802ea7a: 68fb ldr r3, [r7, #12] + 802ea7c: 681b ldr r3, [r3, #0] + 802ea7e: 4a33 ldr r2, [pc, #204] ; (802eb4c ) + 802ea80: 4293 cmp r3, r2 + 802ea82: d045 beq.n 802eb10 + 802ea84: 68fb ldr r3, [r7, #12] + 802ea86: 681b ldr r3, [r3, #0] + 802ea88: 4a31 ldr r2, [pc, #196] ; (802eb50 ) + 802ea8a: 4293 cmp r3, r2 + 802ea8c: d040 beq.n 802eb10 + 802ea8e: 68fb ldr r3, [r7, #12] + 802ea90: 681b ldr r3, [r3, #0] + 802ea92: 4a30 ldr r2, [pc, #192] ; (802eb54 ) + 802ea94: 4293 cmp r3, r2 + 802ea96: d03b beq.n 802eb10 + 802ea98: 68fb ldr r3, [r7, #12] + 802ea9a: 681b ldr r3, [r3, #0] + 802ea9c: 4a2e ldr r2, [pc, #184] ; (802eb58 ) + 802ea9e: 4293 cmp r3, r2 + 802eaa0: d036 beq.n 802eb10 + 802eaa2: 68fb ldr r3, [r7, #12] + 802eaa4: 681b ldr r3, [r3, #0] + 802eaa6: 4a2d ldr r2, [pc, #180] ; (802eb5c ) + 802eaa8: 4293 cmp r3, r2 + 802eaaa: d031 beq.n 802eb10 + 802eaac: 68fb ldr r3, [r7, #12] + 802eaae: 681b ldr r3, [r3, #0] + 802eab0: 4a2b ldr r2, [pc, #172] ; (802eb60 ) + 802eab2: 4293 cmp r3, r2 + 802eab4: d02c beq.n 802eb10 + 802eab6: 68fb ldr r3, [r7, #12] + 802eab8: 681b ldr r3, [r3, #0] + 802eaba: 4a2a ldr r2, [pc, #168] ; (802eb64 ) + 802eabc: 4293 cmp r3, r2 + 802eabe: d027 beq.n 802eb10 + 802eac0: 68fb ldr r3, [r7, #12] + 802eac2: 681b ldr r3, [r3, #0] + 802eac4: 4a28 ldr r2, [pc, #160] ; (802eb68 ) + 802eac6: 4293 cmp r3, r2 + 802eac8: d022 beq.n 802eb10 + 802eaca: 68fb ldr r3, [r7, #12] + 802eacc: 681b ldr r3, [r3, #0] + 802eace: 4a27 ldr r2, [pc, #156] ; (802eb6c ) + 802ead0: 4293 cmp r3, r2 + 802ead2: d01d beq.n 802eb10 + 802ead4: 68fb ldr r3, [r7, #12] + 802ead6: 681b ldr r3, [r3, #0] + 802ead8: 4a25 ldr r2, [pc, #148] ; (802eb70 ) + 802eada: 4293 cmp r3, r2 + 802eadc: d018 beq.n 802eb10 + 802eade: 68fb ldr r3, [r7, #12] + 802eae0: 681b ldr r3, [r3, #0] + 802eae2: 4a24 ldr r2, [pc, #144] ; (802eb74 ) + 802eae4: 4293 cmp r3, r2 + 802eae6: d013 beq.n 802eb10 + 802eae8: 68fb ldr r3, [r7, #12] + 802eaea: 681b ldr r3, [r3, #0] + 802eaec: 4a22 ldr r2, [pc, #136] ; (802eb78 ) + 802eaee: 4293 cmp r3, r2 + 802eaf0: d00e beq.n 802eb10 + 802eaf2: 68fb ldr r3, [r7, #12] + 802eaf4: 681b ldr r3, [r3, #0] + 802eaf6: 4a21 ldr r2, [pc, #132] ; (802eb7c ) + 802eaf8: 4293 cmp r3, r2 + 802eafa: d009 beq.n 802eb10 + 802eafc: 68fb ldr r3, [r7, #12] + 802eafe: 681b ldr r3, [r3, #0] + 802eb00: 4a1f ldr r2, [pc, #124] ; (802eb80 ) + 802eb02: 4293 cmp r3, r2 + 802eb04: d004 beq.n 802eb10 + 802eb06: 68fb ldr r3, [r7, #12] + 802eb08: 681b ldr r3, [r3, #0] + 802eb0a: 4a1e ldr r2, [pc, #120] ; (802eb84 ) + 802eb0c: 4293 cmp r3, r2 + 802eb0e: d101 bne.n 802eb14 + 802eb10: 2301 movs r3, #1 + 802eb12: e000 b.n 802eb16 + 802eb14: 2300 movs r3, #0 + 802eb16: 2b00 cmp r3, #0 + 802eb18: d036 beq.n 802eb88 { /* Enable Common interrupts*/ MODIFY_REG(((DMA_Stream_TypeDef *)hdma->Instance)->CR, (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME | DMA_IT_HT), (DMA_IT_TC | DMA_IT_TE | DMA_IT_DME)); - 802eada: 68fb ldr r3, [r7, #12] - 802eadc: 681b ldr r3, [r3, #0] - 802eade: 681b ldr r3, [r3, #0] - 802eae0: f023 021e bic.w r2, r3, #30 - 802eae4: 68fb ldr r3, [r7, #12] - 802eae6: 681b ldr r3, [r3, #0] - 802eae8: f042 0216 orr.w r2, r2, #22 - 802eaec: 601a str r2, [r3, #0] + 802eb1a: 68fb ldr r3, [r7, #12] + 802eb1c: 681b ldr r3, [r3, #0] + 802eb1e: 681b ldr r3, [r3, #0] + 802eb20: f023 021e bic.w r2, r3, #30 + 802eb24: 68fb ldr r3, [r7, #12] + 802eb26: 681b ldr r3, [r3, #0] + 802eb28: f042 0216 orr.w r2, r2, #22 + 802eb2c: 601a str r2, [r3, #0] if(hdma->XferHalfCpltCallback != NULL) - 802eaee: 68fb ldr r3, [r7, #12] - 802eaf0: 6c1b ldr r3, [r3, #64] ; 0x40 - 802eaf2: 2b00 cmp r3, #0 - 802eaf4: d03e beq.n 802eb74 + 802eb2e: 68fb ldr r3, [r7, #12] + 802eb30: 6c1b ldr r3, [r3, #64] ; 0x40 + 802eb32: 2b00 cmp r3, #0 + 802eb34: d03e beq.n 802ebb4 { /* Enable Half Transfer IT if corresponding Callback is set */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR |= DMA_IT_HT; - 802eaf6: 68fb ldr r3, [r7, #12] - 802eaf8: 681b ldr r3, [r3, #0] - 802eafa: 681a ldr r2, [r3, #0] - 802eafc: 68fb ldr r3, [r7, #12] - 802eafe: 681b ldr r3, [r3, #0] - 802eb00: f042 0208 orr.w r2, r2, #8 - 802eb04: 601a str r2, [r3, #0] - 802eb06: e035 b.n 802eb74 - 802eb08: 40020010 .word 0x40020010 - 802eb0c: 40020028 .word 0x40020028 - 802eb10: 40020040 .word 0x40020040 - 802eb14: 40020058 .word 0x40020058 - 802eb18: 40020070 .word 0x40020070 - 802eb1c: 40020088 .word 0x40020088 - 802eb20: 400200a0 .word 0x400200a0 - 802eb24: 400200b8 .word 0x400200b8 - 802eb28: 40020410 .word 0x40020410 - 802eb2c: 40020428 .word 0x40020428 - 802eb30: 40020440 .word 0x40020440 - 802eb34: 40020458 .word 0x40020458 - 802eb38: 40020470 .word 0x40020470 - 802eb3c: 40020488 .word 0x40020488 - 802eb40: 400204a0 .word 0x400204a0 - 802eb44: 400204b8 .word 0x400204b8 + 802eb36: 68fb ldr r3, [r7, #12] + 802eb38: 681b ldr r3, [r3, #0] + 802eb3a: 681a ldr r2, [r3, #0] + 802eb3c: 68fb ldr r3, [r7, #12] + 802eb3e: 681b ldr r3, [r3, #0] + 802eb40: f042 0208 orr.w r2, r2, #8 + 802eb44: 601a str r2, [r3, #0] + 802eb46: e035 b.n 802ebb4 + 802eb48: 40020010 .word 0x40020010 + 802eb4c: 40020028 .word 0x40020028 + 802eb50: 40020040 .word 0x40020040 + 802eb54: 40020058 .word 0x40020058 + 802eb58: 40020070 .word 0x40020070 + 802eb5c: 40020088 .word 0x40020088 + 802eb60: 400200a0 .word 0x400200a0 + 802eb64: 400200b8 .word 0x400200b8 + 802eb68: 40020410 .word 0x40020410 + 802eb6c: 40020428 .word 0x40020428 + 802eb70: 40020440 .word 0x40020440 + 802eb74: 40020458 .word 0x40020458 + 802eb78: 40020470 .word 0x40020470 + 802eb7c: 40020488 .word 0x40020488 + 802eb80: 400204a0 .word 0x400204a0 + 802eb84: 400204b8 .word 0x400204b8 } } else /* BDMA channel */ { /* Enable Common interrupts */ MODIFY_REG(((BDMA_Channel_TypeDef *)hdma->Instance)->CCR, (BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE), (BDMA_CCR_TCIE | BDMA_CCR_TEIE)); - 802eb48: 68fb ldr r3, [r7, #12] - 802eb4a: 681b ldr r3, [r3, #0] - 802eb4c: 681b ldr r3, [r3, #0] - 802eb4e: f023 020e bic.w r2, r3, #14 - 802eb52: 68fb ldr r3, [r7, #12] - 802eb54: 681b ldr r3, [r3, #0] - 802eb56: f042 020a orr.w r2, r2, #10 - 802eb5a: 601a str r2, [r3, #0] + 802eb88: 68fb ldr r3, [r7, #12] + 802eb8a: 681b ldr r3, [r3, #0] + 802eb8c: 681b ldr r3, [r3, #0] + 802eb8e: f023 020e bic.w r2, r3, #14 + 802eb92: 68fb ldr r3, [r7, #12] + 802eb94: 681b ldr r3, [r3, #0] + 802eb96: f042 020a orr.w r2, r2, #10 + 802eb9a: 601a str r2, [r3, #0] if(hdma->XferHalfCpltCallback != NULL) - 802eb5c: 68fb ldr r3, [r7, #12] - 802eb5e: 6c1b ldr r3, [r3, #64] ; 0x40 - 802eb60: 2b00 cmp r3, #0 - 802eb62: d007 beq.n 802eb74 + 802eb9c: 68fb ldr r3, [r7, #12] + 802eb9e: 6c1b ldr r3, [r3, #64] ; 0x40 + 802eba0: 2b00 cmp r3, #0 + 802eba2: d007 beq.n 802ebb4 { /*Enable Half Transfer IT if corresponding Callback is set */ ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR |= BDMA_CCR_HTIE; - 802eb64: 68fb ldr r3, [r7, #12] - 802eb66: 681b ldr r3, [r3, #0] - 802eb68: 681a ldr r2, [r3, #0] - 802eb6a: 68fb ldr r3, [r7, #12] - 802eb6c: 681b ldr r3, [r3, #0] - 802eb6e: f042 0204 orr.w r2, r2, #4 - 802eb72: 601a str r2, [r3, #0] + 802eba4: 68fb ldr r3, [r7, #12] + 802eba6: 681b ldr r3, [r3, #0] + 802eba8: 681a ldr r2, [r3, #0] + 802ebaa: 68fb ldr r3, [r7, #12] + 802ebac: 681b ldr r3, [r3, #0] + 802ebae: f042 0204 orr.w r2, r2, #4 + 802ebb2: 601a str r2, [r3, #0] } } if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ - 802eb74: 68fb ldr r3, [r7, #12] - 802eb76: 681b ldr r3, [r3, #0] - 802eb78: 4a83 ldr r2, [pc, #524] ; (802ed88 ) - 802eb7a: 4293 cmp r3, r2 - 802eb7c: d072 beq.n 802ec64 - 802eb7e: 68fb ldr r3, [r7, #12] - 802eb80: 681b ldr r3, [r3, #0] - 802eb82: 4a82 ldr r2, [pc, #520] ; (802ed8c ) - 802eb84: 4293 cmp r3, r2 - 802eb86: d06d beq.n 802ec64 - 802eb88: 68fb ldr r3, [r7, #12] - 802eb8a: 681b ldr r3, [r3, #0] - 802eb8c: 4a80 ldr r2, [pc, #512] ; (802ed90 ) - 802eb8e: 4293 cmp r3, r2 - 802eb90: d068 beq.n 802ec64 - 802eb92: 68fb ldr r3, [r7, #12] - 802eb94: 681b ldr r3, [r3, #0] - 802eb96: 4a7f ldr r2, [pc, #508] ; (802ed94 ) - 802eb98: 4293 cmp r3, r2 - 802eb9a: d063 beq.n 802ec64 - 802eb9c: 68fb ldr r3, [r7, #12] - 802eb9e: 681b ldr r3, [r3, #0] - 802eba0: 4a7d ldr r2, [pc, #500] ; (802ed98 ) - 802eba2: 4293 cmp r3, r2 - 802eba4: d05e beq.n 802ec64 - 802eba6: 68fb ldr r3, [r7, #12] - 802eba8: 681b ldr r3, [r3, #0] - 802ebaa: 4a7c ldr r2, [pc, #496] ; (802ed9c ) - 802ebac: 4293 cmp r3, r2 - 802ebae: d059 beq.n 802ec64 - 802ebb0: 68fb ldr r3, [r7, #12] - 802ebb2: 681b ldr r3, [r3, #0] - 802ebb4: 4a7a ldr r2, [pc, #488] ; (802eda0 ) - 802ebb6: 4293 cmp r3, r2 - 802ebb8: d054 beq.n 802ec64 - 802ebba: 68fb ldr r3, [r7, #12] - 802ebbc: 681b ldr r3, [r3, #0] - 802ebbe: 4a79 ldr r2, [pc, #484] ; (802eda4 ) - 802ebc0: 4293 cmp r3, r2 - 802ebc2: d04f beq.n 802ec64 - 802ebc4: 68fb ldr r3, [r7, #12] - 802ebc6: 681b ldr r3, [r3, #0] - 802ebc8: 4a77 ldr r2, [pc, #476] ; (802eda8 ) - 802ebca: 4293 cmp r3, r2 - 802ebcc: d04a beq.n 802ec64 - 802ebce: 68fb ldr r3, [r7, #12] - 802ebd0: 681b ldr r3, [r3, #0] - 802ebd2: 4a76 ldr r2, [pc, #472] ; (802edac ) - 802ebd4: 4293 cmp r3, r2 - 802ebd6: d045 beq.n 802ec64 - 802ebd8: 68fb ldr r3, [r7, #12] - 802ebda: 681b ldr r3, [r3, #0] - 802ebdc: 4a74 ldr r2, [pc, #464] ; (802edb0 ) - 802ebde: 4293 cmp r3, r2 - 802ebe0: d040 beq.n 802ec64 - 802ebe2: 68fb ldr r3, [r7, #12] - 802ebe4: 681b ldr r3, [r3, #0] - 802ebe6: 4a73 ldr r2, [pc, #460] ; (802edb4 ) - 802ebe8: 4293 cmp r3, r2 - 802ebea: d03b beq.n 802ec64 - 802ebec: 68fb ldr r3, [r7, #12] - 802ebee: 681b ldr r3, [r3, #0] - 802ebf0: 4a71 ldr r2, [pc, #452] ; (802edb8 ) - 802ebf2: 4293 cmp r3, r2 - 802ebf4: d036 beq.n 802ec64 - 802ebf6: 68fb ldr r3, [r7, #12] - 802ebf8: 681b ldr r3, [r3, #0] - 802ebfa: 4a70 ldr r2, [pc, #448] ; (802edbc ) - 802ebfc: 4293 cmp r3, r2 - 802ebfe: d031 beq.n 802ec64 - 802ec00: 68fb ldr r3, [r7, #12] - 802ec02: 681b ldr r3, [r3, #0] - 802ec04: 4a6e ldr r2, [pc, #440] ; (802edc0 ) - 802ec06: 4293 cmp r3, r2 - 802ec08: d02c beq.n 802ec64 - 802ec0a: 68fb ldr r3, [r7, #12] - 802ec0c: 681b ldr r3, [r3, #0] - 802ec0e: 4a6d ldr r2, [pc, #436] ; (802edc4 ) - 802ec10: 4293 cmp r3, r2 - 802ec12: d027 beq.n 802ec64 - 802ec14: 68fb ldr r3, [r7, #12] - 802ec16: 681b ldr r3, [r3, #0] - 802ec18: 4a6b ldr r2, [pc, #428] ; (802edc8 ) - 802ec1a: 4293 cmp r3, r2 - 802ec1c: d022 beq.n 802ec64 - 802ec1e: 68fb ldr r3, [r7, #12] - 802ec20: 681b ldr r3, [r3, #0] - 802ec22: 4a6a ldr r2, [pc, #424] ; (802edcc ) - 802ec24: 4293 cmp r3, r2 - 802ec26: d01d beq.n 802ec64 - 802ec28: 68fb ldr r3, [r7, #12] - 802ec2a: 681b ldr r3, [r3, #0] - 802ec2c: 4a68 ldr r2, [pc, #416] ; (802edd0 ) - 802ec2e: 4293 cmp r3, r2 - 802ec30: d018 beq.n 802ec64 - 802ec32: 68fb ldr r3, [r7, #12] - 802ec34: 681b ldr r3, [r3, #0] - 802ec36: 4a67 ldr r2, [pc, #412] ; (802edd4 ) - 802ec38: 4293 cmp r3, r2 - 802ec3a: d013 beq.n 802ec64 - 802ec3c: 68fb ldr r3, [r7, #12] - 802ec3e: 681b ldr r3, [r3, #0] - 802ec40: 4a65 ldr r2, [pc, #404] ; (802edd8 ) - 802ec42: 4293 cmp r3, r2 - 802ec44: d00e beq.n 802ec64 - 802ec46: 68fb ldr r3, [r7, #12] - 802ec48: 681b ldr r3, [r3, #0] - 802ec4a: 4a64 ldr r2, [pc, #400] ; (802eddc ) - 802ec4c: 4293 cmp r3, r2 - 802ec4e: d009 beq.n 802ec64 - 802ec50: 68fb ldr r3, [r7, #12] - 802ec52: 681b ldr r3, [r3, #0] - 802ec54: 4a62 ldr r2, [pc, #392] ; (802ede0 ) - 802ec56: 4293 cmp r3, r2 - 802ec58: d004 beq.n 802ec64 - 802ec5a: 68fb ldr r3, [r7, #12] - 802ec5c: 681b ldr r3, [r3, #0] - 802ec5e: 4a61 ldr r2, [pc, #388] ; (802ede4 ) - 802ec60: 4293 cmp r3, r2 - 802ec62: d101 bne.n 802ec68 - 802ec64: 2301 movs r3, #1 - 802ec66: e000 b.n 802ec6a - 802ec68: 2300 movs r3, #0 - 802ec6a: 2b00 cmp r3, #0 - 802ec6c: d01a beq.n 802eca4 + 802ebb4: 68fb ldr r3, [r7, #12] + 802ebb6: 681b ldr r3, [r3, #0] + 802ebb8: 4a83 ldr r2, [pc, #524] ; (802edc8 ) + 802ebba: 4293 cmp r3, r2 + 802ebbc: d072 beq.n 802eca4 + 802ebbe: 68fb ldr r3, [r7, #12] + 802ebc0: 681b ldr r3, [r3, #0] + 802ebc2: 4a82 ldr r2, [pc, #520] ; (802edcc ) + 802ebc4: 4293 cmp r3, r2 + 802ebc6: d06d beq.n 802eca4 + 802ebc8: 68fb ldr r3, [r7, #12] + 802ebca: 681b ldr r3, [r3, #0] + 802ebcc: 4a80 ldr r2, [pc, #512] ; (802edd0 ) + 802ebce: 4293 cmp r3, r2 + 802ebd0: d068 beq.n 802eca4 + 802ebd2: 68fb ldr r3, [r7, #12] + 802ebd4: 681b ldr r3, [r3, #0] + 802ebd6: 4a7f ldr r2, [pc, #508] ; (802edd4 ) + 802ebd8: 4293 cmp r3, r2 + 802ebda: d063 beq.n 802eca4 + 802ebdc: 68fb ldr r3, [r7, #12] + 802ebde: 681b ldr r3, [r3, #0] + 802ebe0: 4a7d ldr r2, [pc, #500] ; (802edd8 ) + 802ebe2: 4293 cmp r3, r2 + 802ebe4: d05e beq.n 802eca4 + 802ebe6: 68fb ldr r3, [r7, #12] + 802ebe8: 681b ldr r3, [r3, #0] + 802ebea: 4a7c ldr r2, [pc, #496] ; (802eddc ) + 802ebec: 4293 cmp r3, r2 + 802ebee: d059 beq.n 802eca4 + 802ebf0: 68fb ldr r3, [r7, #12] + 802ebf2: 681b ldr r3, [r3, #0] + 802ebf4: 4a7a ldr r2, [pc, #488] ; (802ede0 ) + 802ebf6: 4293 cmp r3, r2 + 802ebf8: d054 beq.n 802eca4 + 802ebfa: 68fb ldr r3, [r7, #12] + 802ebfc: 681b ldr r3, [r3, #0] + 802ebfe: 4a79 ldr r2, [pc, #484] ; (802ede4 ) + 802ec00: 4293 cmp r3, r2 + 802ec02: d04f beq.n 802eca4 + 802ec04: 68fb ldr r3, [r7, #12] + 802ec06: 681b ldr r3, [r3, #0] + 802ec08: 4a77 ldr r2, [pc, #476] ; (802ede8 ) + 802ec0a: 4293 cmp r3, r2 + 802ec0c: d04a beq.n 802eca4 + 802ec0e: 68fb ldr r3, [r7, #12] + 802ec10: 681b ldr r3, [r3, #0] + 802ec12: 4a76 ldr r2, [pc, #472] ; (802edec ) + 802ec14: 4293 cmp r3, r2 + 802ec16: d045 beq.n 802eca4 + 802ec18: 68fb ldr r3, [r7, #12] + 802ec1a: 681b ldr r3, [r3, #0] + 802ec1c: 4a74 ldr r2, [pc, #464] ; (802edf0 ) + 802ec1e: 4293 cmp r3, r2 + 802ec20: d040 beq.n 802eca4 + 802ec22: 68fb ldr r3, [r7, #12] + 802ec24: 681b ldr r3, [r3, #0] + 802ec26: 4a73 ldr r2, [pc, #460] ; (802edf4 ) + 802ec28: 4293 cmp r3, r2 + 802ec2a: d03b beq.n 802eca4 + 802ec2c: 68fb ldr r3, [r7, #12] + 802ec2e: 681b ldr r3, [r3, #0] + 802ec30: 4a71 ldr r2, [pc, #452] ; (802edf8 ) + 802ec32: 4293 cmp r3, r2 + 802ec34: d036 beq.n 802eca4 + 802ec36: 68fb ldr r3, [r7, #12] + 802ec38: 681b ldr r3, [r3, #0] + 802ec3a: 4a70 ldr r2, [pc, #448] ; (802edfc ) + 802ec3c: 4293 cmp r3, r2 + 802ec3e: d031 beq.n 802eca4 + 802ec40: 68fb ldr r3, [r7, #12] + 802ec42: 681b ldr r3, [r3, #0] + 802ec44: 4a6e ldr r2, [pc, #440] ; (802ee00 ) + 802ec46: 4293 cmp r3, r2 + 802ec48: d02c beq.n 802eca4 + 802ec4a: 68fb ldr r3, [r7, #12] + 802ec4c: 681b ldr r3, [r3, #0] + 802ec4e: 4a6d ldr r2, [pc, #436] ; (802ee04 ) + 802ec50: 4293 cmp r3, r2 + 802ec52: d027 beq.n 802eca4 + 802ec54: 68fb ldr r3, [r7, #12] + 802ec56: 681b ldr r3, [r3, #0] + 802ec58: 4a6b ldr r2, [pc, #428] ; (802ee08 ) + 802ec5a: 4293 cmp r3, r2 + 802ec5c: d022 beq.n 802eca4 + 802ec5e: 68fb ldr r3, [r7, #12] + 802ec60: 681b ldr r3, [r3, #0] + 802ec62: 4a6a ldr r2, [pc, #424] ; (802ee0c ) + 802ec64: 4293 cmp r3, r2 + 802ec66: d01d beq.n 802eca4 + 802ec68: 68fb ldr r3, [r7, #12] + 802ec6a: 681b ldr r3, [r3, #0] + 802ec6c: 4a68 ldr r2, [pc, #416] ; (802ee10 ) + 802ec6e: 4293 cmp r3, r2 + 802ec70: d018 beq.n 802eca4 + 802ec72: 68fb ldr r3, [r7, #12] + 802ec74: 681b ldr r3, [r3, #0] + 802ec76: 4a67 ldr r2, [pc, #412] ; (802ee14 ) + 802ec78: 4293 cmp r3, r2 + 802ec7a: d013 beq.n 802eca4 + 802ec7c: 68fb ldr r3, [r7, #12] + 802ec7e: 681b ldr r3, [r3, #0] + 802ec80: 4a65 ldr r2, [pc, #404] ; (802ee18 ) + 802ec82: 4293 cmp r3, r2 + 802ec84: d00e beq.n 802eca4 + 802ec86: 68fb ldr r3, [r7, #12] + 802ec88: 681b ldr r3, [r3, #0] + 802ec8a: 4a64 ldr r2, [pc, #400] ; (802ee1c ) + 802ec8c: 4293 cmp r3, r2 + 802ec8e: d009 beq.n 802eca4 + 802ec90: 68fb ldr r3, [r7, #12] + 802ec92: 681b ldr r3, [r3, #0] + 802ec94: 4a62 ldr r2, [pc, #392] ; (802ee20 ) + 802ec96: 4293 cmp r3, r2 + 802ec98: d004 beq.n 802eca4 + 802ec9a: 68fb ldr r3, [r7, #12] + 802ec9c: 681b ldr r3, [r3, #0] + 802ec9e: 4a61 ldr r2, [pc, #388] ; (802ee24 ) + 802eca0: 4293 cmp r3, r2 + 802eca2: d101 bne.n 802eca8 + 802eca4: 2301 movs r3, #1 + 802eca6: e000 b.n 802ecaa + 802eca8: 2300 movs r3, #0 + 802ecaa: 2b00 cmp r3, #0 + 802ecac: d01a beq.n 802ece4 { /* Check if DMAMUX Synchronization is enabled */ if((hdma->DMAmuxChannel->CCR & DMAMUX_CxCR_SE) != 0U) - 802ec6e: 68fb ldr r3, [r7, #12] - 802ec70: 6e1b ldr r3, [r3, #96] ; 0x60 - 802ec72: 681b ldr r3, [r3, #0] - 802ec74: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 802ec78: 2b00 cmp r3, #0 - 802ec7a: d007 beq.n 802ec8c + 802ecae: 68fb ldr r3, [r7, #12] + 802ecb0: 6e1b ldr r3, [r3, #96] ; 0x60 + 802ecb2: 681b ldr r3, [r3, #0] + 802ecb4: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 802ecb8: 2b00 cmp r3, #0 + 802ecba: d007 beq.n 802eccc { /* Enable DMAMUX sync overrun IT*/ hdma->DMAmuxChannel->CCR |= DMAMUX_CxCR_SOIE; - 802ec7c: 68fb ldr r3, [r7, #12] - 802ec7e: 6e1b ldr r3, [r3, #96] ; 0x60 - 802ec80: 681a ldr r2, [r3, #0] - 802ec82: 68fb ldr r3, [r7, #12] - 802ec84: 6e1b ldr r3, [r3, #96] ; 0x60 - 802ec86: f442 7280 orr.w r2, r2, #256 ; 0x100 - 802ec8a: 601a str r2, [r3, #0] + 802ecbc: 68fb ldr r3, [r7, #12] + 802ecbe: 6e1b ldr r3, [r3, #96] ; 0x60 + 802ecc0: 681a ldr r2, [r3, #0] + 802ecc2: 68fb ldr r3, [r7, #12] + 802ecc4: 6e1b ldr r3, [r3, #96] ; 0x60 + 802ecc6: f442 7280 orr.w r2, r2, #256 ; 0x100 + 802ecca: 601a str r2, [r3, #0] } if(hdma->DMAmuxRequestGen != 0U) - 802ec8c: 68fb ldr r3, [r7, #12] - 802ec8e: 6edb ldr r3, [r3, #108] ; 0x6c - 802ec90: 2b00 cmp r3, #0 - 802ec92: d007 beq.n 802eca4 + 802eccc: 68fb ldr r3, [r7, #12] + 802ecce: 6edb ldr r3, [r3, #108] ; 0x6c + 802ecd0: 2b00 cmp r3, #0 + 802ecd2: d007 beq.n 802ece4 { /* if using DMAMUX request generator, enable the DMAMUX request generator overrun IT*/ /* enable the request gen overrun IT */ hdma->DMAmuxRequestGen->RGCR |= DMAMUX_RGxCR_OIE; - 802ec94: 68fb ldr r3, [r7, #12] - 802ec96: 6edb ldr r3, [r3, #108] ; 0x6c - 802ec98: 681a ldr r2, [r3, #0] - 802ec9a: 68fb ldr r3, [r7, #12] - 802ec9c: 6edb ldr r3, [r3, #108] ; 0x6c - 802ec9e: f442 7280 orr.w r2, r2, #256 ; 0x100 - 802eca2: 601a str r2, [r3, #0] + 802ecd4: 68fb ldr r3, [r7, #12] + 802ecd6: 6edb ldr r3, [r3, #108] ; 0x6c + 802ecd8: 681a ldr r2, [r3, #0] + 802ecda: 68fb ldr r3, [r7, #12] + 802ecdc: 6edb ldr r3, [r3, #108] ; 0x6c + 802ecde: f442 7280 orr.w r2, r2, #256 ; 0x100 + 802ece2: 601a str r2, [r3, #0] } } /* Enable the Peripheral */ __HAL_DMA_ENABLE(hdma); - 802eca4: 68fb ldr r3, [r7, #12] - 802eca6: 681b ldr r3, [r3, #0] - 802eca8: 4a37 ldr r2, [pc, #220] ; (802ed88 ) - 802ecaa: 4293 cmp r3, r2 - 802ecac: d04a beq.n 802ed44 - 802ecae: 68fb ldr r3, [r7, #12] - 802ecb0: 681b ldr r3, [r3, #0] - 802ecb2: 4a36 ldr r2, [pc, #216] ; (802ed8c ) - 802ecb4: 4293 cmp r3, r2 - 802ecb6: d045 beq.n 802ed44 - 802ecb8: 68fb ldr r3, [r7, #12] - 802ecba: 681b ldr r3, [r3, #0] - 802ecbc: 4a34 ldr r2, [pc, #208] ; (802ed90 ) - 802ecbe: 4293 cmp r3, r2 - 802ecc0: d040 beq.n 802ed44 - 802ecc2: 68fb ldr r3, [r7, #12] - 802ecc4: 681b ldr r3, [r3, #0] - 802ecc6: 4a33 ldr r2, [pc, #204] ; (802ed94 ) - 802ecc8: 4293 cmp r3, r2 - 802ecca: d03b beq.n 802ed44 - 802eccc: 68fb ldr r3, [r7, #12] - 802ecce: 681b ldr r3, [r3, #0] - 802ecd0: 4a31 ldr r2, [pc, #196] ; (802ed98 ) - 802ecd2: 4293 cmp r3, r2 - 802ecd4: d036 beq.n 802ed44 - 802ecd6: 68fb ldr r3, [r7, #12] - 802ecd8: 681b ldr r3, [r3, #0] - 802ecda: 4a30 ldr r2, [pc, #192] ; (802ed9c ) - 802ecdc: 4293 cmp r3, r2 - 802ecde: d031 beq.n 802ed44 - 802ece0: 68fb ldr r3, [r7, #12] - 802ece2: 681b ldr r3, [r3, #0] - 802ece4: 4a2e ldr r2, [pc, #184] ; (802eda0 ) - 802ece6: 4293 cmp r3, r2 - 802ece8: d02c beq.n 802ed44 - 802ecea: 68fb ldr r3, [r7, #12] - 802ecec: 681b ldr r3, [r3, #0] - 802ecee: 4a2d ldr r2, [pc, #180] ; (802eda4 ) - 802ecf0: 4293 cmp r3, r2 - 802ecf2: d027 beq.n 802ed44 - 802ecf4: 68fb ldr r3, [r7, #12] - 802ecf6: 681b ldr r3, [r3, #0] - 802ecf8: 4a2b ldr r2, [pc, #172] ; (802eda8 ) - 802ecfa: 4293 cmp r3, r2 - 802ecfc: d022 beq.n 802ed44 - 802ecfe: 68fb ldr r3, [r7, #12] - 802ed00: 681b ldr r3, [r3, #0] - 802ed02: 4a2a ldr r2, [pc, #168] ; (802edac ) - 802ed04: 4293 cmp r3, r2 - 802ed06: d01d beq.n 802ed44 - 802ed08: 68fb ldr r3, [r7, #12] - 802ed0a: 681b ldr r3, [r3, #0] - 802ed0c: 4a28 ldr r2, [pc, #160] ; (802edb0 ) - 802ed0e: 4293 cmp r3, r2 - 802ed10: d018 beq.n 802ed44 - 802ed12: 68fb ldr r3, [r7, #12] - 802ed14: 681b ldr r3, [r3, #0] - 802ed16: 4a27 ldr r2, [pc, #156] ; (802edb4 ) - 802ed18: 4293 cmp r3, r2 - 802ed1a: d013 beq.n 802ed44 - 802ed1c: 68fb ldr r3, [r7, #12] - 802ed1e: 681b ldr r3, [r3, #0] - 802ed20: 4a25 ldr r2, [pc, #148] ; (802edb8 ) - 802ed22: 4293 cmp r3, r2 - 802ed24: d00e beq.n 802ed44 - 802ed26: 68fb ldr r3, [r7, #12] - 802ed28: 681b ldr r3, [r3, #0] - 802ed2a: 4a24 ldr r2, [pc, #144] ; (802edbc ) - 802ed2c: 4293 cmp r3, r2 - 802ed2e: d009 beq.n 802ed44 - 802ed30: 68fb ldr r3, [r7, #12] - 802ed32: 681b ldr r3, [r3, #0] - 802ed34: 4a22 ldr r2, [pc, #136] ; (802edc0 ) - 802ed36: 4293 cmp r3, r2 - 802ed38: d004 beq.n 802ed44 - 802ed3a: 68fb ldr r3, [r7, #12] - 802ed3c: 681b ldr r3, [r3, #0] - 802ed3e: 4a21 ldr r2, [pc, #132] ; (802edc4 ) - 802ed40: 4293 cmp r3, r2 - 802ed42: d108 bne.n 802ed56 - 802ed44: 68fb ldr r3, [r7, #12] - 802ed46: 681b ldr r3, [r3, #0] - 802ed48: 681a ldr r2, [r3, #0] - 802ed4a: 68fb ldr r3, [r7, #12] - 802ed4c: 681b ldr r3, [r3, #0] - 802ed4e: f042 0201 orr.w r2, r2, #1 - 802ed52: 601a str r2, [r3, #0] - 802ed54: e012 b.n 802ed7c - 802ed56: 68fb ldr r3, [r7, #12] - 802ed58: 681b ldr r3, [r3, #0] - 802ed5a: 681a ldr r2, [r3, #0] + 802ece4: 68fb ldr r3, [r7, #12] + 802ece6: 681b ldr r3, [r3, #0] + 802ece8: 4a37 ldr r2, [pc, #220] ; (802edc8 ) + 802ecea: 4293 cmp r3, r2 + 802ecec: d04a beq.n 802ed84 + 802ecee: 68fb ldr r3, [r7, #12] + 802ecf0: 681b ldr r3, [r3, #0] + 802ecf2: 4a36 ldr r2, [pc, #216] ; (802edcc ) + 802ecf4: 4293 cmp r3, r2 + 802ecf6: d045 beq.n 802ed84 + 802ecf8: 68fb ldr r3, [r7, #12] + 802ecfa: 681b ldr r3, [r3, #0] + 802ecfc: 4a34 ldr r2, [pc, #208] ; (802edd0 ) + 802ecfe: 4293 cmp r3, r2 + 802ed00: d040 beq.n 802ed84 + 802ed02: 68fb ldr r3, [r7, #12] + 802ed04: 681b ldr r3, [r3, #0] + 802ed06: 4a33 ldr r2, [pc, #204] ; (802edd4 ) + 802ed08: 4293 cmp r3, r2 + 802ed0a: d03b beq.n 802ed84 + 802ed0c: 68fb ldr r3, [r7, #12] + 802ed0e: 681b ldr r3, [r3, #0] + 802ed10: 4a31 ldr r2, [pc, #196] ; (802edd8 ) + 802ed12: 4293 cmp r3, r2 + 802ed14: d036 beq.n 802ed84 + 802ed16: 68fb ldr r3, [r7, #12] + 802ed18: 681b ldr r3, [r3, #0] + 802ed1a: 4a30 ldr r2, [pc, #192] ; (802eddc ) + 802ed1c: 4293 cmp r3, r2 + 802ed1e: d031 beq.n 802ed84 + 802ed20: 68fb ldr r3, [r7, #12] + 802ed22: 681b ldr r3, [r3, #0] + 802ed24: 4a2e ldr r2, [pc, #184] ; (802ede0 ) + 802ed26: 4293 cmp r3, r2 + 802ed28: d02c beq.n 802ed84 + 802ed2a: 68fb ldr r3, [r7, #12] + 802ed2c: 681b ldr r3, [r3, #0] + 802ed2e: 4a2d ldr r2, [pc, #180] ; (802ede4 ) + 802ed30: 4293 cmp r3, r2 + 802ed32: d027 beq.n 802ed84 + 802ed34: 68fb ldr r3, [r7, #12] + 802ed36: 681b ldr r3, [r3, #0] + 802ed38: 4a2b ldr r2, [pc, #172] ; (802ede8 ) + 802ed3a: 4293 cmp r3, r2 + 802ed3c: d022 beq.n 802ed84 + 802ed3e: 68fb ldr r3, [r7, #12] + 802ed40: 681b ldr r3, [r3, #0] + 802ed42: 4a2a ldr r2, [pc, #168] ; (802edec ) + 802ed44: 4293 cmp r3, r2 + 802ed46: d01d beq.n 802ed84 + 802ed48: 68fb ldr r3, [r7, #12] + 802ed4a: 681b ldr r3, [r3, #0] + 802ed4c: 4a28 ldr r2, [pc, #160] ; (802edf0 ) + 802ed4e: 4293 cmp r3, r2 + 802ed50: d018 beq.n 802ed84 + 802ed52: 68fb ldr r3, [r7, #12] + 802ed54: 681b ldr r3, [r3, #0] + 802ed56: 4a27 ldr r2, [pc, #156] ; (802edf4 ) + 802ed58: 4293 cmp r3, r2 + 802ed5a: d013 beq.n 802ed84 802ed5c: 68fb ldr r3, [r7, #12] 802ed5e: 681b ldr r3, [r3, #0] - 802ed60: f042 0201 orr.w r2, r2, #1 - 802ed64: 601a str r2, [r3, #0] - 802ed66: e009 b.n 802ed7c + 802ed60: 4a25 ldr r2, [pc, #148] ; (802edf8 ) + 802ed62: 4293 cmp r3, r2 + 802ed64: d00e beq.n 802ed84 + 802ed66: 68fb ldr r3, [r7, #12] + 802ed68: 681b ldr r3, [r3, #0] + 802ed6a: 4a24 ldr r2, [pc, #144] ; (802edfc ) + 802ed6c: 4293 cmp r3, r2 + 802ed6e: d009 beq.n 802ed84 + 802ed70: 68fb ldr r3, [r7, #12] + 802ed72: 681b ldr r3, [r3, #0] + 802ed74: 4a22 ldr r2, [pc, #136] ; (802ee00 ) + 802ed76: 4293 cmp r3, r2 + 802ed78: d004 beq.n 802ed84 + 802ed7a: 68fb ldr r3, [r7, #12] + 802ed7c: 681b ldr r3, [r3, #0] + 802ed7e: 4a21 ldr r2, [pc, #132] ; (802ee04 ) + 802ed80: 4293 cmp r3, r2 + 802ed82: d108 bne.n 802ed96 + 802ed84: 68fb ldr r3, [r7, #12] + 802ed86: 681b ldr r3, [r3, #0] + 802ed88: 681a ldr r2, [r3, #0] + 802ed8a: 68fb ldr r3, [r7, #12] + 802ed8c: 681b ldr r3, [r3, #0] + 802ed8e: f042 0201 orr.w r2, r2, #1 + 802ed92: 601a str r2, [r3, #0] + 802ed94: e012 b.n 802edbc + 802ed96: 68fb ldr r3, [r7, #12] + 802ed98: 681b ldr r3, [r3, #0] + 802ed9a: 681a ldr r2, [r3, #0] + 802ed9c: 68fb ldr r3, [r7, #12] + 802ed9e: 681b ldr r3, [r3, #0] + 802eda0: f042 0201 orr.w r2, r2, #1 + 802eda4: 601a str r2, [r3, #0] + 802eda6: e009 b.n 802edbc } else { /* Set the error code to busy */ hdma->ErrorCode = HAL_DMA_ERROR_BUSY; - 802ed68: 68fb ldr r3, [r7, #12] - 802ed6a: f44f 6200 mov.w r2, #2048 ; 0x800 - 802ed6e: 655a str r2, [r3, #84] ; 0x54 + 802eda8: 68fb ldr r3, [r7, #12] + 802edaa: f44f 6200 mov.w r2, #2048 ; 0x800 + 802edae: 655a str r2, [r3, #84] ; 0x54 /* Process unlocked */ __HAL_UNLOCK(hdma); - 802ed70: 68fb ldr r3, [r7, #12] - 802ed72: 2200 movs r2, #0 - 802ed74: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802edb0: 68fb ldr r3, [r7, #12] + 802edb2: 2200 movs r2, #0 + 802edb4: f883 2034 strb.w r2, [r3, #52] ; 0x34 /* Return error status */ status = HAL_ERROR; - 802ed78: 2301 movs r3, #1 - 802ed7a: 75fb strb r3, [r7, #23] + 802edb8: 2301 movs r3, #1 + 802edba: 75fb strb r3, [r7, #23] } return status; - 802ed7c: 7dfb ldrb r3, [r7, #23] -} - 802ed7e: 4618 mov r0, r3 - 802ed80: 3718 adds r7, #24 - 802ed82: 46bd mov sp, r7 - 802ed84: bd80 pop {r7, pc} - 802ed86: bf00 nop - 802ed88: 40020010 .word 0x40020010 - 802ed8c: 40020028 .word 0x40020028 - 802ed90: 40020040 .word 0x40020040 - 802ed94: 40020058 .word 0x40020058 - 802ed98: 40020070 .word 0x40020070 - 802ed9c: 40020088 .word 0x40020088 - 802eda0: 400200a0 .word 0x400200a0 - 802eda4: 400200b8 .word 0x400200b8 - 802eda8: 40020410 .word 0x40020410 - 802edac: 40020428 .word 0x40020428 - 802edb0: 40020440 .word 0x40020440 - 802edb4: 40020458 .word 0x40020458 - 802edb8: 40020470 .word 0x40020470 - 802edbc: 40020488 .word 0x40020488 - 802edc0: 400204a0 .word 0x400204a0 - 802edc4: 400204b8 .word 0x400204b8 - 802edc8: 58025408 .word 0x58025408 - 802edcc: 5802541c .word 0x5802541c - 802edd0: 58025430 .word 0x58025430 - 802edd4: 58025444 .word 0x58025444 - 802edd8: 58025458 .word 0x58025458 - 802eddc: 5802546c .word 0x5802546c - 802ede0: 58025480 .word 0x58025480 - 802ede4: 58025494 .word 0x58025494 - -0802ede8 : + 802edbc: 7dfb ldrb r3, [r7, #23] +} + 802edbe: 4618 mov r0, r3 + 802edc0: 3718 adds r7, #24 + 802edc2: 46bd mov sp, r7 + 802edc4: bd80 pop {r7, pc} + 802edc6: bf00 nop + 802edc8: 40020010 .word 0x40020010 + 802edcc: 40020028 .word 0x40020028 + 802edd0: 40020040 .word 0x40020040 + 802edd4: 40020058 .word 0x40020058 + 802edd8: 40020070 .word 0x40020070 + 802eddc: 40020088 .word 0x40020088 + 802ede0: 400200a0 .word 0x400200a0 + 802ede4: 400200b8 .word 0x400200b8 + 802ede8: 40020410 .word 0x40020410 + 802edec: 40020428 .word 0x40020428 + 802edf0: 40020440 .word 0x40020440 + 802edf4: 40020458 .word 0x40020458 + 802edf8: 40020470 .word 0x40020470 + 802edfc: 40020488 .word 0x40020488 + 802ee00: 400204a0 .word 0x400204a0 + 802ee04: 400204b8 .word 0x400204b8 + 802ee08: 58025408 .word 0x58025408 + 802ee0c: 5802541c .word 0x5802541c + 802ee10: 58025430 .word 0x58025430 + 802ee14: 58025444 .word 0x58025444 + 802ee18: 58025458 .word 0x58025458 + 802ee1c: 5802546c .word 0x5802546c + 802ee20: 58025480 .word 0x58025480 + 802ee24: 58025494 .word 0x58025494 + +0802ee28 : * and the Stream will be effectively disabled only after the transfer of * this single data is finished. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma) { - 802ede8: b580 push {r7, lr} - 802edea: b086 sub sp, #24 - 802edec: af00 add r7, sp, #0 - 802edee: 6078 str r0, [r7, #4] + 802ee28: b580 push {r7, lr} + 802ee2a: b086 sub sp, #24 + 802ee2c: af00 add r7, sp, #0 + 802ee2e: 6078 str r0, [r7, #4] /* calculate DMA base and stream number */ DMA_Base_Registers *regs_dma; BDMA_Base_Registers *regs_bdma; const __IO uint32_t *enableRegister; uint32_t tickstart = HAL_GetTick(); - 802edf0: f7fe f8d0 bl 802cf94 - 802edf4: 6138 str r0, [r7, #16] + 802ee30: f7fe f8d0 bl 802cfd4 + 802ee34: 6138 str r0, [r7, #16] /* Check the DMA peripheral handle */ if(hdma == NULL) - 802edf6: 687b ldr r3, [r7, #4] - 802edf8: 2b00 cmp r3, #0 - 802edfa: d101 bne.n 802ee00 + 802ee36: 687b ldr r3, [r7, #4] + 802ee38: 2b00 cmp r3, #0 + 802ee3a: d101 bne.n 802ee40 { return HAL_ERROR; - 802edfc: 2301 movs r3, #1 - 802edfe: e2dc b.n 802f3ba + 802ee3c: 2301 movs r3, #1 + 802ee3e: e2dc b.n 802f3fa } /* Check the DMA peripheral state */ if(hdma->State != HAL_DMA_STATE_BUSY) - 802ee00: 687b ldr r3, [r7, #4] - 802ee02: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 - 802ee06: b2db uxtb r3, r3 - 802ee08: 2b02 cmp r3, #2 - 802ee0a: d008 beq.n 802ee1e + 802ee40: 687b ldr r3, [r7, #4] + 802ee42: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 + 802ee46: b2db uxtb r3, r3 + 802ee48: 2b02 cmp r3, #2 + 802ee4a: d008 beq.n 802ee5e { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 802ee0c: 687b ldr r3, [r7, #4] - 802ee0e: 2280 movs r2, #128 ; 0x80 - 802ee10: 655a str r2, [r3, #84] ; 0x54 + 802ee4c: 687b ldr r3, [r7, #4] + 802ee4e: 2280 movs r2, #128 ; 0x80 + 802ee50: 655a str r2, [r3, #84] ; 0x54 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 802ee12: 687b ldr r3, [r7, #4] - 802ee14: 2200 movs r2, #0 - 802ee16: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802ee52: 687b ldr r3, [r7, #4] + 802ee54: 2200 movs r2, #0 + 802ee56: f883 2034 strb.w r2, [r3, #52] ; 0x34 return HAL_ERROR; - 802ee1a: 2301 movs r3, #1 - 802ee1c: e2cd b.n 802f3ba + 802ee5a: 2301 movs r3, #1 + 802ee5c: e2cd b.n 802f3fa } else { /* Disable all the transfer interrupts */ if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802ee1e: 687b ldr r3, [r7, #4] - 802ee20: 681b ldr r3, [r3, #0] - 802ee22: 4a76 ldr r2, [pc, #472] ; (802effc ) - 802ee24: 4293 cmp r3, r2 - 802ee26: d04a beq.n 802eebe - 802ee28: 687b ldr r3, [r7, #4] - 802ee2a: 681b ldr r3, [r3, #0] - 802ee2c: 4a74 ldr r2, [pc, #464] ; (802f000 ) - 802ee2e: 4293 cmp r3, r2 - 802ee30: d045 beq.n 802eebe - 802ee32: 687b ldr r3, [r7, #4] - 802ee34: 681b ldr r3, [r3, #0] - 802ee36: 4a73 ldr r2, [pc, #460] ; (802f004 ) - 802ee38: 4293 cmp r3, r2 - 802ee3a: d040 beq.n 802eebe - 802ee3c: 687b ldr r3, [r7, #4] - 802ee3e: 681b ldr r3, [r3, #0] - 802ee40: 4a71 ldr r2, [pc, #452] ; (802f008 ) - 802ee42: 4293 cmp r3, r2 - 802ee44: d03b beq.n 802eebe - 802ee46: 687b ldr r3, [r7, #4] - 802ee48: 681b ldr r3, [r3, #0] - 802ee4a: 4a70 ldr r2, [pc, #448] ; (802f00c ) - 802ee4c: 4293 cmp r3, r2 - 802ee4e: d036 beq.n 802eebe - 802ee50: 687b ldr r3, [r7, #4] - 802ee52: 681b ldr r3, [r3, #0] - 802ee54: 4a6e ldr r2, [pc, #440] ; (802f010 ) - 802ee56: 4293 cmp r3, r2 - 802ee58: d031 beq.n 802eebe - 802ee5a: 687b ldr r3, [r7, #4] - 802ee5c: 681b ldr r3, [r3, #0] - 802ee5e: 4a6d ldr r2, [pc, #436] ; (802f014 ) - 802ee60: 4293 cmp r3, r2 - 802ee62: d02c beq.n 802eebe - 802ee64: 687b ldr r3, [r7, #4] - 802ee66: 681b ldr r3, [r3, #0] - 802ee68: 4a6b ldr r2, [pc, #428] ; (802f018 ) - 802ee6a: 4293 cmp r3, r2 - 802ee6c: d027 beq.n 802eebe - 802ee6e: 687b ldr r3, [r7, #4] - 802ee70: 681b ldr r3, [r3, #0] - 802ee72: 4a6a ldr r2, [pc, #424] ; (802f01c ) - 802ee74: 4293 cmp r3, r2 - 802ee76: d022 beq.n 802eebe - 802ee78: 687b ldr r3, [r7, #4] - 802ee7a: 681b ldr r3, [r3, #0] - 802ee7c: 4a68 ldr r2, [pc, #416] ; (802f020 ) - 802ee7e: 4293 cmp r3, r2 - 802ee80: d01d beq.n 802eebe - 802ee82: 687b ldr r3, [r7, #4] - 802ee84: 681b ldr r3, [r3, #0] - 802ee86: 4a67 ldr r2, [pc, #412] ; (802f024 ) - 802ee88: 4293 cmp r3, r2 - 802ee8a: d018 beq.n 802eebe - 802ee8c: 687b ldr r3, [r7, #4] - 802ee8e: 681b ldr r3, [r3, #0] - 802ee90: 4a65 ldr r2, [pc, #404] ; (802f028 ) - 802ee92: 4293 cmp r3, r2 - 802ee94: d013 beq.n 802eebe - 802ee96: 687b ldr r3, [r7, #4] - 802ee98: 681b ldr r3, [r3, #0] - 802ee9a: 4a64 ldr r2, [pc, #400] ; (802f02c ) - 802ee9c: 4293 cmp r3, r2 - 802ee9e: d00e beq.n 802eebe - 802eea0: 687b ldr r3, [r7, #4] - 802eea2: 681b ldr r3, [r3, #0] - 802eea4: 4a62 ldr r2, [pc, #392] ; (802f030 ) - 802eea6: 4293 cmp r3, r2 - 802eea8: d009 beq.n 802eebe - 802eeaa: 687b ldr r3, [r7, #4] - 802eeac: 681b ldr r3, [r3, #0] - 802eeae: 4a61 ldr r2, [pc, #388] ; (802f034 ) - 802eeb0: 4293 cmp r3, r2 - 802eeb2: d004 beq.n 802eebe - 802eeb4: 687b ldr r3, [r7, #4] - 802eeb6: 681b ldr r3, [r3, #0] - 802eeb8: 4a5f ldr r2, [pc, #380] ; (802f038 ) - 802eeba: 4293 cmp r3, r2 - 802eebc: d101 bne.n 802eec2 - 802eebe: 2301 movs r3, #1 - 802eec0: e000 b.n 802eec4 - 802eec2: 2300 movs r3, #0 - 802eec4: 2b00 cmp r3, #0 - 802eec6: d013 beq.n 802eef0 + 802ee5e: 687b ldr r3, [r7, #4] + 802ee60: 681b ldr r3, [r3, #0] + 802ee62: 4a76 ldr r2, [pc, #472] ; (802f03c ) + 802ee64: 4293 cmp r3, r2 + 802ee66: d04a beq.n 802eefe + 802ee68: 687b ldr r3, [r7, #4] + 802ee6a: 681b ldr r3, [r3, #0] + 802ee6c: 4a74 ldr r2, [pc, #464] ; (802f040 ) + 802ee6e: 4293 cmp r3, r2 + 802ee70: d045 beq.n 802eefe + 802ee72: 687b ldr r3, [r7, #4] + 802ee74: 681b ldr r3, [r3, #0] + 802ee76: 4a73 ldr r2, [pc, #460] ; (802f044 ) + 802ee78: 4293 cmp r3, r2 + 802ee7a: d040 beq.n 802eefe + 802ee7c: 687b ldr r3, [r7, #4] + 802ee7e: 681b ldr r3, [r3, #0] + 802ee80: 4a71 ldr r2, [pc, #452] ; (802f048 ) + 802ee82: 4293 cmp r3, r2 + 802ee84: d03b beq.n 802eefe + 802ee86: 687b ldr r3, [r7, #4] + 802ee88: 681b ldr r3, [r3, #0] + 802ee8a: 4a70 ldr r2, [pc, #448] ; (802f04c ) + 802ee8c: 4293 cmp r3, r2 + 802ee8e: d036 beq.n 802eefe + 802ee90: 687b ldr r3, [r7, #4] + 802ee92: 681b ldr r3, [r3, #0] + 802ee94: 4a6e ldr r2, [pc, #440] ; (802f050 ) + 802ee96: 4293 cmp r3, r2 + 802ee98: d031 beq.n 802eefe + 802ee9a: 687b ldr r3, [r7, #4] + 802ee9c: 681b ldr r3, [r3, #0] + 802ee9e: 4a6d ldr r2, [pc, #436] ; (802f054 ) + 802eea0: 4293 cmp r3, r2 + 802eea2: d02c beq.n 802eefe + 802eea4: 687b ldr r3, [r7, #4] + 802eea6: 681b ldr r3, [r3, #0] + 802eea8: 4a6b ldr r2, [pc, #428] ; (802f058 ) + 802eeaa: 4293 cmp r3, r2 + 802eeac: d027 beq.n 802eefe + 802eeae: 687b ldr r3, [r7, #4] + 802eeb0: 681b ldr r3, [r3, #0] + 802eeb2: 4a6a ldr r2, [pc, #424] ; (802f05c ) + 802eeb4: 4293 cmp r3, r2 + 802eeb6: d022 beq.n 802eefe + 802eeb8: 687b ldr r3, [r7, #4] + 802eeba: 681b ldr r3, [r3, #0] + 802eebc: 4a68 ldr r2, [pc, #416] ; (802f060 ) + 802eebe: 4293 cmp r3, r2 + 802eec0: d01d beq.n 802eefe + 802eec2: 687b ldr r3, [r7, #4] + 802eec4: 681b ldr r3, [r3, #0] + 802eec6: 4a67 ldr r2, [pc, #412] ; (802f064 ) + 802eec8: 4293 cmp r3, r2 + 802eeca: d018 beq.n 802eefe + 802eecc: 687b ldr r3, [r7, #4] + 802eece: 681b ldr r3, [r3, #0] + 802eed0: 4a65 ldr r2, [pc, #404] ; (802f068 ) + 802eed2: 4293 cmp r3, r2 + 802eed4: d013 beq.n 802eefe + 802eed6: 687b ldr r3, [r7, #4] + 802eed8: 681b ldr r3, [r3, #0] + 802eeda: 4a64 ldr r2, [pc, #400] ; (802f06c ) + 802eedc: 4293 cmp r3, r2 + 802eede: d00e beq.n 802eefe + 802eee0: 687b ldr r3, [r7, #4] + 802eee2: 681b ldr r3, [r3, #0] + 802eee4: 4a62 ldr r2, [pc, #392] ; (802f070 ) + 802eee6: 4293 cmp r3, r2 + 802eee8: d009 beq.n 802eefe + 802eeea: 687b ldr r3, [r7, #4] + 802eeec: 681b ldr r3, [r3, #0] + 802eeee: 4a61 ldr r2, [pc, #388] ; (802f074 ) + 802eef0: 4293 cmp r3, r2 + 802eef2: d004 beq.n 802eefe + 802eef4: 687b ldr r3, [r7, #4] + 802eef6: 681b ldr r3, [r3, #0] + 802eef8: 4a5f ldr r2, [pc, #380] ; (802f078 ) + 802eefa: 4293 cmp r3, r2 + 802eefc: d101 bne.n 802ef02 + 802eefe: 2301 movs r3, #1 + 802ef00: e000 b.n 802ef04 + 802ef02: 2300 movs r3, #0 + 802ef04: 2b00 cmp r3, #0 + 802ef06: d013 beq.n 802ef30 { /* Disable DMA All Interrupts */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME | DMA_IT_HT); - 802eec8: 687b ldr r3, [r7, #4] - 802eeca: 681b ldr r3, [r3, #0] - 802eecc: 681a ldr r2, [r3, #0] - 802eece: 687b ldr r3, [r7, #4] - 802eed0: 681b ldr r3, [r3, #0] - 802eed2: f022 021e bic.w r2, r2, #30 - 802eed6: 601a str r2, [r3, #0] + 802ef08: 687b ldr r3, [r7, #4] + 802ef0a: 681b ldr r3, [r3, #0] + 802ef0c: 681a ldr r2, [r3, #0] + 802ef0e: 687b ldr r3, [r7, #4] + 802ef10: 681b ldr r3, [r3, #0] + 802ef12: f022 021e bic.w r2, r2, #30 + 802ef16: 601a str r2, [r3, #0] ((DMA_Stream_TypeDef *)hdma->Instance)->FCR &= ~(DMA_IT_FE); - 802eed8: 687b ldr r3, [r7, #4] - 802eeda: 681b ldr r3, [r3, #0] - 802eedc: 695a ldr r2, [r3, #20] - 802eede: 687b ldr r3, [r7, #4] - 802eee0: 681b ldr r3, [r3, #0] - 802eee2: f022 0280 bic.w r2, r2, #128 ; 0x80 - 802eee6: 615a str r2, [r3, #20] + 802ef18: 687b ldr r3, [r7, #4] + 802ef1a: 681b ldr r3, [r3, #0] + 802ef1c: 695a ldr r2, [r3, #20] + 802ef1e: 687b ldr r3, [r7, #4] + 802ef20: 681b ldr r3, [r3, #0] + 802ef22: f022 0280 bic.w r2, r2, #128 ; 0x80 + 802ef26: 615a str r2, [r3, #20] enableRegister = (__IO uint32_t *)(&(((DMA_Stream_TypeDef *)hdma->Instance)->CR)); - 802eee8: 687b ldr r3, [r7, #4] - 802eeea: 681b ldr r3, [r3, #0] - 802eeec: 617b str r3, [r7, #20] - 802eeee: e00a b.n 802ef06 + 802ef28: 687b ldr r3, [r7, #4] + 802ef2a: 681b ldr r3, [r3, #0] + 802ef2c: 617b str r3, [r7, #20] + 802ef2e: e00a b.n 802ef46 } else /* BDMA channel */ { /* Disable DMA All Interrupts */ ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR &= ~(BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE); - 802eef0: 687b ldr r3, [r7, #4] - 802eef2: 681b ldr r3, [r3, #0] - 802eef4: 681a ldr r2, [r3, #0] - 802eef6: 687b ldr r3, [r7, #4] - 802eef8: 681b ldr r3, [r3, #0] - 802eefa: f022 020e bic.w r2, r2, #14 - 802eefe: 601a str r2, [r3, #0] + 802ef30: 687b ldr r3, [r7, #4] + 802ef32: 681b ldr r3, [r3, #0] + 802ef34: 681a ldr r2, [r3, #0] + 802ef36: 687b ldr r3, [r7, #4] + 802ef38: 681b ldr r3, [r3, #0] + 802ef3a: f022 020e bic.w r2, r2, #14 + 802ef3e: 601a str r2, [r3, #0] enableRegister = (__IO uint32_t *)(&(((BDMA_Channel_TypeDef *)hdma->Instance)->CCR)); - 802ef00: 687b ldr r3, [r7, #4] - 802ef02: 681b ldr r3, [r3, #0] - 802ef04: 617b str r3, [r7, #20] + 802ef40: 687b ldr r3, [r7, #4] + 802ef42: 681b ldr r3, [r3, #0] + 802ef44: 617b str r3, [r7, #20] } if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ - 802ef06: 687b ldr r3, [r7, #4] - 802ef08: 681b ldr r3, [r3, #0] - 802ef0a: 4a3c ldr r2, [pc, #240] ; (802effc ) - 802ef0c: 4293 cmp r3, r2 - 802ef0e: d072 beq.n 802eff6 - 802ef10: 687b ldr r3, [r7, #4] - 802ef12: 681b ldr r3, [r3, #0] - 802ef14: 4a3a ldr r2, [pc, #232] ; (802f000 ) - 802ef16: 4293 cmp r3, r2 - 802ef18: d06d beq.n 802eff6 - 802ef1a: 687b ldr r3, [r7, #4] - 802ef1c: 681b ldr r3, [r3, #0] - 802ef1e: 4a39 ldr r2, [pc, #228] ; (802f004 ) - 802ef20: 4293 cmp r3, r2 - 802ef22: d068 beq.n 802eff6 - 802ef24: 687b ldr r3, [r7, #4] - 802ef26: 681b ldr r3, [r3, #0] - 802ef28: 4a37 ldr r2, [pc, #220] ; (802f008 ) - 802ef2a: 4293 cmp r3, r2 - 802ef2c: d063 beq.n 802eff6 - 802ef2e: 687b ldr r3, [r7, #4] - 802ef30: 681b ldr r3, [r3, #0] - 802ef32: 4a36 ldr r2, [pc, #216] ; (802f00c ) - 802ef34: 4293 cmp r3, r2 - 802ef36: d05e beq.n 802eff6 - 802ef38: 687b ldr r3, [r7, #4] - 802ef3a: 681b ldr r3, [r3, #0] - 802ef3c: 4a34 ldr r2, [pc, #208] ; (802f010 ) - 802ef3e: 4293 cmp r3, r2 - 802ef40: d059 beq.n 802eff6 - 802ef42: 687b ldr r3, [r7, #4] - 802ef44: 681b ldr r3, [r3, #0] - 802ef46: 4a33 ldr r2, [pc, #204] ; (802f014 ) - 802ef48: 4293 cmp r3, r2 - 802ef4a: d054 beq.n 802eff6 - 802ef4c: 687b ldr r3, [r7, #4] - 802ef4e: 681b ldr r3, [r3, #0] - 802ef50: 4a31 ldr r2, [pc, #196] ; (802f018 ) - 802ef52: 4293 cmp r3, r2 - 802ef54: d04f beq.n 802eff6 - 802ef56: 687b ldr r3, [r7, #4] - 802ef58: 681b ldr r3, [r3, #0] - 802ef5a: 4a30 ldr r2, [pc, #192] ; (802f01c ) - 802ef5c: 4293 cmp r3, r2 - 802ef5e: d04a beq.n 802eff6 - 802ef60: 687b ldr r3, [r7, #4] - 802ef62: 681b ldr r3, [r3, #0] - 802ef64: 4a2e ldr r2, [pc, #184] ; (802f020 ) - 802ef66: 4293 cmp r3, r2 - 802ef68: d045 beq.n 802eff6 - 802ef6a: 687b ldr r3, [r7, #4] - 802ef6c: 681b ldr r3, [r3, #0] - 802ef6e: 4a2d ldr r2, [pc, #180] ; (802f024 ) - 802ef70: 4293 cmp r3, r2 - 802ef72: d040 beq.n 802eff6 - 802ef74: 687b ldr r3, [r7, #4] - 802ef76: 681b ldr r3, [r3, #0] - 802ef78: 4a2b ldr r2, [pc, #172] ; (802f028 ) - 802ef7a: 4293 cmp r3, r2 - 802ef7c: d03b beq.n 802eff6 - 802ef7e: 687b ldr r3, [r7, #4] - 802ef80: 681b ldr r3, [r3, #0] - 802ef82: 4a2a ldr r2, [pc, #168] ; (802f02c ) - 802ef84: 4293 cmp r3, r2 - 802ef86: d036 beq.n 802eff6 - 802ef88: 687b ldr r3, [r7, #4] - 802ef8a: 681b ldr r3, [r3, #0] - 802ef8c: 4a28 ldr r2, [pc, #160] ; (802f030 ) - 802ef8e: 4293 cmp r3, r2 - 802ef90: d031 beq.n 802eff6 - 802ef92: 687b ldr r3, [r7, #4] - 802ef94: 681b ldr r3, [r3, #0] - 802ef96: 4a27 ldr r2, [pc, #156] ; (802f034 ) - 802ef98: 4293 cmp r3, r2 - 802ef9a: d02c beq.n 802eff6 - 802ef9c: 687b ldr r3, [r7, #4] - 802ef9e: 681b ldr r3, [r3, #0] - 802efa0: 4a25 ldr r2, [pc, #148] ; (802f038 ) - 802efa2: 4293 cmp r3, r2 - 802efa4: d027 beq.n 802eff6 - 802efa6: 687b ldr r3, [r7, #4] - 802efa8: 681b ldr r3, [r3, #0] - 802efaa: 4a24 ldr r2, [pc, #144] ; (802f03c ) - 802efac: 4293 cmp r3, r2 - 802efae: d022 beq.n 802eff6 - 802efb0: 687b ldr r3, [r7, #4] - 802efb2: 681b ldr r3, [r3, #0] - 802efb4: 4a22 ldr r2, [pc, #136] ; (802f040 ) - 802efb6: 4293 cmp r3, r2 - 802efb8: d01d beq.n 802eff6 - 802efba: 687b ldr r3, [r7, #4] - 802efbc: 681b ldr r3, [r3, #0] - 802efbe: 4a21 ldr r2, [pc, #132] ; (802f044 ) - 802efc0: 4293 cmp r3, r2 - 802efc2: d018 beq.n 802eff6 - 802efc4: 687b ldr r3, [r7, #4] - 802efc6: 681b ldr r3, [r3, #0] - 802efc8: 4a1f ldr r2, [pc, #124] ; (802f048 ) - 802efca: 4293 cmp r3, r2 - 802efcc: d013 beq.n 802eff6 - 802efce: 687b ldr r3, [r7, #4] - 802efd0: 681b ldr r3, [r3, #0] - 802efd2: 4a1e ldr r2, [pc, #120] ; (802f04c ) - 802efd4: 4293 cmp r3, r2 - 802efd6: d00e beq.n 802eff6 - 802efd8: 687b ldr r3, [r7, #4] - 802efda: 681b ldr r3, [r3, #0] - 802efdc: 4a1c ldr r2, [pc, #112] ; (802f050 ) - 802efde: 4293 cmp r3, r2 - 802efe0: d009 beq.n 802eff6 - 802efe2: 687b ldr r3, [r7, #4] - 802efe4: 681b ldr r3, [r3, #0] - 802efe6: 4a1b ldr r2, [pc, #108] ; (802f054 ) - 802efe8: 4293 cmp r3, r2 - 802efea: d004 beq.n 802eff6 - 802efec: 687b ldr r3, [r7, #4] - 802efee: 681b ldr r3, [r3, #0] - 802eff0: 4a19 ldr r2, [pc, #100] ; (802f058 ) - 802eff2: 4293 cmp r3, r2 - 802eff4: d132 bne.n 802f05c - 802eff6: 2301 movs r3, #1 - 802eff8: e031 b.n 802f05e - 802effa: bf00 nop - 802effc: 40020010 .word 0x40020010 - 802f000: 40020028 .word 0x40020028 - 802f004: 40020040 .word 0x40020040 - 802f008: 40020058 .word 0x40020058 - 802f00c: 40020070 .word 0x40020070 - 802f010: 40020088 .word 0x40020088 - 802f014: 400200a0 .word 0x400200a0 - 802f018: 400200b8 .word 0x400200b8 - 802f01c: 40020410 .word 0x40020410 - 802f020: 40020428 .word 0x40020428 - 802f024: 40020440 .word 0x40020440 - 802f028: 40020458 .word 0x40020458 - 802f02c: 40020470 .word 0x40020470 - 802f030: 40020488 .word 0x40020488 - 802f034: 400204a0 .word 0x400204a0 - 802f038: 400204b8 .word 0x400204b8 - 802f03c: 58025408 .word 0x58025408 - 802f040: 5802541c .word 0x5802541c - 802f044: 58025430 .word 0x58025430 - 802f048: 58025444 .word 0x58025444 - 802f04c: 58025458 .word 0x58025458 - 802f050: 5802546c .word 0x5802546c - 802f054: 58025480 .word 0x58025480 - 802f058: 58025494 .word 0x58025494 - 802f05c: 2300 movs r3, #0 - 802f05e: 2b00 cmp r3, #0 - 802f060: d007 beq.n 802f072 + 802ef46: 687b ldr r3, [r7, #4] + 802ef48: 681b ldr r3, [r3, #0] + 802ef4a: 4a3c ldr r2, [pc, #240] ; (802f03c ) + 802ef4c: 4293 cmp r3, r2 + 802ef4e: d072 beq.n 802f036 + 802ef50: 687b ldr r3, [r7, #4] + 802ef52: 681b ldr r3, [r3, #0] + 802ef54: 4a3a ldr r2, [pc, #232] ; (802f040 ) + 802ef56: 4293 cmp r3, r2 + 802ef58: d06d beq.n 802f036 + 802ef5a: 687b ldr r3, [r7, #4] + 802ef5c: 681b ldr r3, [r3, #0] + 802ef5e: 4a39 ldr r2, [pc, #228] ; (802f044 ) + 802ef60: 4293 cmp r3, r2 + 802ef62: d068 beq.n 802f036 + 802ef64: 687b ldr r3, [r7, #4] + 802ef66: 681b ldr r3, [r3, #0] + 802ef68: 4a37 ldr r2, [pc, #220] ; (802f048 ) + 802ef6a: 4293 cmp r3, r2 + 802ef6c: d063 beq.n 802f036 + 802ef6e: 687b ldr r3, [r7, #4] + 802ef70: 681b ldr r3, [r3, #0] + 802ef72: 4a36 ldr r2, [pc, #216] ; (802f04c ) + 802ef74: 4293 cmp r3, r2 + 802ef76: d05e beq.n 802f036 + 802ef78: 687b ldr r3, [r7, #4] + 802ef7a: 681b ldr r3, [r3, #0] + 802ef7c: 4a34 ldr r2, [pc, #208] ; (802f050 ) + 802ef7e: 4293 cmp r3, r2 + 802ef80: d059 beq.n 802f036 + 802ef82: 687b ldr r3, [r7, #4] + 802ef84: 681b ldr r3, [r3, #0] + 802ef86: 4a33 ldr r2, [pc, #204] ; (802f054 ) + 802ef88: 4293 cmp r3, r2 + 802ef8a: d054 beq.n 802f036 + 802ef8c: 687b ldr r3, [r7, #4] + 802ef8e: 681b ldr r3, [r3, #0] + 802ef90: 4a31 ldr r2, [pc, #196] ; (802f058 ) + 802ef92: 4293 cmp r3, r2 + 802ef94: d04f beq.n 802f036 + 802ef96: 687b ldr r3, [r7, #4] + 802ef98: 681b ldr r3, [r3, #0] + 802ef9a: 4a30 ldr r2, [pc, #192] ; (802f05c ) + 802ef9c: 4293 cmp r3, r2 + 802ef9e: d04a beq.n 802f036 + 802efa0: 687b ldr r3, [r7, #4] + 802efa2: 681b ldr r3, [r3, #0] + 802efa4: 4a2e ldr r2, [pc, #184] ; (802f060 ) + 802efa6: 4293 cmp r3, r2 + 802efa8: d045 beq.n 802f036 + 802efaa: 687b ldr r3, [r7, #4] + 802efac: 681b ldr r3, [r3, #0] + 802efae: 4a2d ldr r2, [pc, #180] ; (802f064 ) + 802efb0: 4293 cmp r3, r2 + 802efb2: d040 beq.n 802f036 + 802efb4: 687b ldr r3, [r7, #4] + 802efb6: 681b ldr r3, [r3, #0] + 802efb8: 4a2b ldr r2, [pc, #172] ; (802f068 ) + 802efba: 4293 cmp r3, r2 + 802efbc: d03b beq.n 802f036 + 802efbe: 687b ldr r3, [r7, #4] + 802efc0: 681b ldr r3, [r3, #0] + 802efc2: 4a2a ldr r2, [pc, #168] ; (802f06c ) + 802efc4: 4293 cmp r3, r2 + 802efc6: d036 beq.n 802f036 + 802efc8: 687b ldr r3, [r7, #4] + 802efca: 681b ldr r3, [r3, #0] + 802efcc: 4a28 ldr r2, [pc, #160] ; (802f070 ) + 802efce: 4293 cmp r3, r2 + 802efd0: d031 beq.n 802f036 + 802efd2: 687b ldr r3, [r7, #4] + 802efd4: 681b ldr r3, [r3, #0] + 802efd6: 4a27 ldr r2, [pc, #156] ; (802f074 ) + 802efd8: 4293 cmp r3, r2 + 802efda: d02c beq.n 802f036 + 802efdc: 687b ldr r3, [r7, #4] + 802efde: 681b ldr r3, [r3, #0] + 802efe0: 4a25 ldr r2, [pc, #148] ; (802f078 ) + 802efe2: 4293 cmp r3, r2 + 802efe4: d027 beq.n 802f036 + 802efe6: 687b ldr r3, [r7, #4] + 802efe8: 681b ldr r3, [r3, #0] + 802efea: 4a24 ldr r2, [pc, #144] ; (802f07c ) + 802efec: 4293 cmp r3, r2 + 802efee: d022 beq.n 802f036 + 802eff0: 687b ldr r3, [r7, #4] + 802eff2: 681b ldr r3, [r3, #0] + 802eff4: 4a22 ldr r2, [pc, #136] ; (802f080 ) + 802eff6: 4293 cmp r3, r2 + 802eff8: d01d beq.n 802f036 + 802effa: 687b ldr r3, [r7, #4] + 802effc: 681b ldr r3, [r3, #0] + 802effe: 4a21 ldr r2, [pc, #132] ; (802f084 ) + 802f000: 4293 cmp r3, r2 + 802f002: d018 beq.n 802f036 + 802f004: 687b ldr r3, [r7, #4] + 802f006: 681b ldr r3, [r3, #0] + 802f008: 4a1f ldr r2, [pc, #124] ; (802f088 ) + 802f00a: 4293 cmp r3, r2 + 802f00c: d013 beq.n 802f036 + 802f00e: 687b ldr r3, [r7, #4] + 802f010: 681b ldr r3, [r3, #0] + 802f012: 4a1e ldr r2, [pc, #120] ; (802f08c ) + 802f014: 4293 cmp r3, r2 + 802f016: d00e beq.n 802f036 + 802f018: 687b ldr r3, [r7, #4] + 802f01a: 681b ldr r3, [r3, #0] + 802f01c: 4a1c ldr r2, [pc, #112] ; (802f090 ) + 802f01e: 4293 cmp r3, r2 + 802f020: d009 beq.n 802f036 + 802f022: 687b ldr r3, [r7, #4] + 802f024: 681b ldr r3, [r3, #0] + 802f026: 4a1b ldr r2, [pc, #108] ; (802f094 ) + 802f028: 4293 cmp r3, r2 + 802f02a: d004 beq.n 802f036 + 802f02c: 687b ldr r3, [r7, #4] + 802f02e: 681b ldr r3, [r3, #0] + 802f030: 4a19 ldr r2, [pc, #100] ; (802f098 ) + 802f032: 4293 cmp r3, r2 + 802f034: d132 bne.n 802f09c + 802f036: 2301 movs r3, #1 + 802f038: e031 b.n 802f09e + 802f03a: bf00 nop + 802f03c: 40020010 .word 0x40020010 + 802f040: 40020028 .word 0x40020028 + 802f044: 40020040 .word 0x40020040 + 802f048: 40020058 .word 0x40020058 + 802f04c: 40020070 .word 0x40020070 + 802f050: 40020088 .word 0x40020088 + 802f054: 400200a0 .word 0x400200a0 + 802f058: 400200b8 .word 0x400200b8 + 802f05c: 40020410 .word 0x40020410 + 802f060: 40020428 .word 0x40020428 + 802f064: 40020440 .word 0x40020440 + 802f068: 40020458 .word 0x40020458 + 802f06c: 40020470 .word 0x40020470 + 802f070: 40020488 .word 0x40020488 + 802f074: 400204a0 .word 0x400204a0 + 802f078: 400204b8 .word 0x400204b8 + 802f07c: 58025408 .word 0x58025408 + 802f080: 5802541c .word 0x5802541c + 802f084: 58025430 .word 0x58025430 + 802f088: 58025444 .word 0x58025444 + 802f08c: 58025458 .word 0x58025458 + 802f090: 5802546c .word 0x5802546c + 802f094: 58025480 .word 0x58025480 + 802f098: 58025494 .word 0x58025494 + 802f09c: 2300 movs r3, #0 + 802f09e: 2b00 cmp r3, #0 + 802f0a0: d007 beq.n 802f0b2 { /* disable the DMAMUX sync overrun IT */ hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; - 802f062: 687b ldr r3, [r7, #4] - 802f064: 6e1b ldr r3, [r3, #96] ; 0x60 - 802f066: 681a ldr r2, [r3, #0] - 802f068: 687b ldr r3, [r7, #4] - 802f06a: 6e1b ldr r3, [r3, #96] ; 0x60 - 802f06c: f422 7280 bic.w r2, r2, #256 ; 0x100 - 802f070: 601a str r2, [r3, #0] + 802f0a2: 687b ldr r3, [r7, #4] + 802f0a4: 6e1b ldr r3, [r3, #96] ; 0x60 + 802f0a6: 681a ldr r2, [r3, #0] + 802f0a8: 687b ldr r3, [r7, #4] + 802f0aa: 6e1b ldr r3, [r3, #96] ; 0x60 + 802f0ac: f422 7280 bic.w r2, r2, #256 ; 0x100 + 802f0b0: 601a str r2, [r3, #0] } /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 802f072: 687b ldr r3, [r7, #4] - 802f074: 681b ldr r3, [r3, #0] - 802f076: 4a6d ldr r2, [pc, #436] ; (802f22c ) - 802f078: 4293 cmp r3, r2 - 802f07a: d04a beq.n 802f112 - 802f07c: 687b ldr r3, [r7, #4] - 802f07e: 681b ldr r3, [r3, #0] - 802f080: 4a6b ldr r2, [pc, #428] ; (802f230 ) - 802f082: 4293 cmp r3, r2 - 802f084: d045 beq.n 802f112 - 802f086: 687b ldr r3, [r7, #4] - 802f088: 681b ldr r3, [r3, #0] - 802f08a: 4a6a ldr r2, [pc, #424] ; (802f234 ) - 802f08c: 4293 cmp r3, r2 - 802f08e: d040 beq.n 802f112 - 802f090: 687b ldr r3, [r7, #4] - 802f092: 681b ldr r3, [r3, #0] - 802f094: 4a68 ldr r2, [pc, #416] ; (802f238 ) - 802f096: 4293 cmp r3, r2 - 802f098: d03b beq.n 802f112 - 802f09a: 687b ldr r3, [r7, #4] - 802f09c: 681b ldr r3, [r3, #0] - 802f09e: 4a67 ldr r2, [pc, #412] ; (802f23c ) - 802f0a0: 4293 cmp r3, r2 - 802f0a2: d036 beq.n 802f112 - 802f0a4: 687b ldr r3, [r7, #4] - 802f0a6: 681b ldr r3, [r3, #0] - 802f0a8: 4a65 ldr r2, [pc, #404] ; (802f240 ) - 802f0aa: 4293 cmp r3, r2 - 802f0ac: d031 beq.n 802f112 - 802f0ae: 687b ldr r3, [r7, #4] - 802f0b0: 681b ldr r3, [r3, #0] - 802f0b2: 4a64 ldr r2, [pc, #400] ; (802f244 ) - 802f0b4: 4293 cmp r3, r2 - 802f0b6: d02c beq.n 802f112 - 802f0b8: 687b ldr r3, [r7, #4] - 802f0ba: 681b ldr r3, [r3, #0] - 802f0bc: 4a62 ldr r2, [pc, #392] ; (802f248 ) - 802f0be: 4293 cmp r3, r2 - 802f0c0: d027 beq.n 802f112 - 802f0c2: 687b ldr r3, [r7, #4] - 802f0c4: 681b ldr r3, [r3, #0] - 802f0c6: 4a61 ldr r2, [pc, #388] ; (802f24c ) - 802f0c8: 4293 cmp r3, r2 - 802f0ca: d022 beq.n 802f112 - 802f0cc: 687b ldr r3, [r7, #4] - 802f0ce: 681b ldr r3, [r3, #0] - 802f0d0: 4a5f ldr r2, [pc, #380] ; (802f250 ) - 802f0d2: 4293 cmp r3, r2 - 802f0d4: d01d beq.n 802f112 - 802f0d6: 687b ldr r3, [r7, #4] - 802f0d8: 681b ldr r3, [r3, #0] - 802f0da: 4a5e ldr r2, [pc, #376] ; (802f254 ) - 802f0dc: 4293 cmp r3, r2 - 802f0de: d018 beq.n 802f112 - 802f0e0: 687b ldr r3, [r7, #4] - 802f0e2: 681b ldr r3, [r3, #0] - 802f0e4: 4a5c ldr r2, [pc, #368] ; (802f258 ) - 802f0e6: 4293 cmp r3, r2 - 802f0e8: d013 beq.n 802f112 - 802f0ea: 687b ldr r3, [r7, #4] - 802f0ec: 681b ldr r3, [r3, #0] - 802f0ee: 4a5b ldr r2, [pc, #364] ; (802f25c ) - 802f0f0: 4293 cmp r3, r2 - 802f0f2: d00e beq.n 802f112 - 802f0f4: 687b ldr r3, [r7, #4] - 802f0f6: 681b ldr r3, [r3, #0] - 802f0f8: 4a59 ldr r2, [pc, #356] ; (802f260 ) - 802f0fa: 4293 cmp r3, r2 - 802f0fc: d009 beq.n 802f112 - 802f0fe: 687b ldr r3, [r7, #4] - 802f100: 681b ldr r3, [r3, #0] - 802f102: 4a58 ldr r2, [pc, #352] ; (802f264 ) - 802f104: 4293 cmp r3, r2 - 802f106: d004 beq.n 802f112 - 802f108: 687b ldr r3, [r7, #4] - 802f10a: 681b ldr r3, [r3, #0] - 802f10c: 4a56 ldr r2, [pc, #344] ; (802f268 ) - 802f10e: 4293 cmp r3, r2 - 802f110: d108 bne.n 802f124 - 802f112: 687b ldr r3, [r7, #4] - 802f114: 681b ldr r3, [r3, #0] - 802f116: 681a ldr r2, [r3, #0] - 802f118: 687b ldr r3, [r7, #4] - 802f11a: 681b ldr r3, [r3, #0] - 802f11c: f022 0201 bic.w r2, r2, #1 - 802f120: 601a str r2, [r3, #0] - 802f122: e007 b.n 802f134 - 802f124: 687b ldr r3, [r7, #4] - 802f126: 681b ldr r3, [r3, #0] - 802f128: 681a ldr r2, [r3, #0] + 802f0b2: 687b ldr r3, [r7, #4] + 802f0b4: 681b ldr r3, [r3, #0] + 802f0b6: 4a6d ldr r2, [pc, #436] ; (802f26c ) + 802f0b8: 4293 cmp r3, r2 + 802f0ba: d04a beq.n 802f152 + 802f0bc: 687b ldr r3, [r7, #4] + 802f0be: 681b ldr r3, [r3, #0] + 802f0c0: 4a6b ldr r2, [pc, #428] ; (802f270 ) + 802f0c2: 4293 cmp r3, r2 + 802f0c4: d045 beq.n 802f152 + 802f0c6: 687b ldr r3, [r7, #4] + 802f0c8: 681b ldr r3, [r3, #0] + 802f0ca: 4a6a ldr r2, [pc, #424] ; (802f274 ) + 802f0cc: 4293 cmp r3, r2 + 802f0ce: d040 beq.n 802f152 + 802f0d0: 687b ldr r3, [r7, #4] + 802f0d2: 681b ldr r3, [r3, #0] + 802f0d4: 4a68 ldr r2, [pc, #416] ; (802f278 ) + 802f0d6: 4293 cmp r3, r2 + 802f0d8: d03b beq.n 802f152 + 802f0da: 687b ldr r3, [r7, #4] + 802f0dc: 681b ldr r3, [r3, #0] + 802f0de: 4a67 ldr r2, [pc, #412] ; (802f27c ) + 802f0e0: 4293 cmp r3, r2 + 802f0e2: d036 beq.n 802f152 + 802f0e4: 687b ldr r3, [r7, #4] + 802f0e6: 681b ldr r3, [r3, #0] + 802f0e8: 4a65 ldr r2, [pc, #404] ; (802f280 ) + 802f0ea: 4293 cmp r3, r2 + 802f0ec: d031 beq.n 802f152 + 802f0ee: 687b ldr r3, [r7, #4] + 802f0f0: 681b ldr r3, [r3, #0] + 802f0f2: 4a64 ldr r2, [pc, #400] ; (802f284 ) + 802f0f4: 4293 cmp r3, r2 + 802f0f6: d02c beq.n 802f152 + 802f0f8: 687b ldr r3, [r7, #4] + 802f0fa: 681b ldr r3, [r3, #0] + 802f0fc: 4a62 ldr r2, [pc, #392] ; (802f288 ) + 802f0fe: 4293 cmp r3, r2 + 802f100: d027 beq.n 802f152 + 802f102: 687b ldr r3, [r7, #4] + 802f104: 681b ldr r3, [r3, #0] + 802f106: 4a61 ldr r2, [pc, #388] ; (802f28c ) + 802f108: 4293 cmp r3, r2 + 802f10a: d022 beq.n 802f152 + 802f10c: 687b ldr r3, [r7, #4] + 802f10e: 681b ldr r3, [r3, #0] + 802f110: 4a5f ldr r2, [pc, #380] ; (802f290 ) + 802f112: 4293 cmp r3, r2 + 802f114: d01d beq.n 802f152 + 802f116: 687b ldr r3, [r7, #4] + 802f118: 681b ldr r3, [r3, #0] + 802f11a: 4a5e ldr r2, [pc, #376] ; (802f294 ) + 802f11c: 4293 cmp r3, r2 + 802f11e: d018 beq.n 802f152 + 802f120: 687b ldr r3, [r7, #4] + 802f122: 681b ldr r3, [r3, #0] + 802f124: 4a5c ldr r2, [pc, #368] ; (802f298 ) + 802f126: 4293 cmp r3, r2 + 802f128: d013 beq.n 802f152 802f12a: 687b ldr r3, [r7, #4] 802f12c: 681b ldr r3, [r3, #0] - 802f12e: f022 0201 bic.w r2, r2, #1 - 802f132: 601a str r2, [r3, #0] + 802f12e: 4a5b ldr r2, [pc, #364] ; (802f29c ) + 802f130: 4293 cmp r3, r2 + 802f132: d00e beq.n 802f152 + 802f134: 687b ldr r3, [r7, #4] + 802f136: 681b ldr r3, [r3, #0] + 802f138: 4a59 ldr r2, [pc, #356] ; (802f2a0 ) + 802f13a: 4293 cmp r3, r2 + 802f13c: d009 beq.n 802f152 + 802f13e: 687b ldr r3, [r7, #4] + 802f140: 681b ldr r3, [r3, #0] + 802f142: 4a58 ldr r2, [pc, #352] ; (802f2a4 ) + 802f144: 4293 cmp r3, r2 + 802f146: d004 beq.n 802f152 + 802f148: 687b ldr r3, [r7, #4] + 802f14a: 681b ldr r3, [r3, #0] + 802f14c: 4a56 ldr r2, [pc, #344] ; (802f2a8 ) + 802f14e: 4293 cmp r3, r2 + 802f150: d108 bne.n 802f164 + 802f152: 687b ldr r3, [r7, #4] + 802f154: 681b ldr r3, [r3, #0] + 802f156: 681a ldr r2, [r3, #0] + 802f158: 687b ldr r3, [r7, #4] + 802f15a: 681b ldr r3, [r3, #0] + 802f15c: f022 0201 bic.w r2, r2, #1 + 802f160: 601a str r2, [r3, #0] + 802f162: e007 b.n 802f174 + 802f164: 687b ldr r3, [r7, #4] + 802f166: 681b ldr r3, [r3, #0] + 802f168: 681a ldr r2, [r3, #0] + 802f16a: 687b ldr r3, [r7, #4] + 802f16c: 681b ldr r3, [r3, #0] + 802f16e: f022 0201 bic.w r2, r2, #1 + 802f172: 601a str r2, [r3, #0] /* Check if the DMA Stream is effectively disabled */ while(((*enableRegister) & DMA_SxCR_EN) != 0U) - 802f134: e013 b.n 802f15e + 802f174: e013 b.n 802f19e { /* Check for the Timeout */ if((HAL_GetTick() - tickstart ) > HAL_TIMEOUT_DMA_ABORT) - 802f136: f7fd ff2d bl 802cf94 - 802f13a: 4602 mov r2, r0 - 802f13c: 693b ldr r3, [r7, #16] - 802f13e: 1ad3 subs r3, r2, r3 - 802f140: 2b05 cmp r3, #5 - 802f142: d90c bls.n 802f15e + 802f176: f7fd ff2d bl 802cfd4 + 802f17a: 4602 mov r2, r0 + 802f17c: 693b ldr r3, [r7, #16] + 802f17e: 1ad3 subs r3, r2, r3 + 802f180: 2b05 cmp r3, #5 + 802f182: d90c bls.n 802f19e { /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_TIMEOUT; - 802f144: 687b ldr r3, [r7, #4] - 802f146: 2220 movs r2, #32 - 802f148: 655a str r2, [r3, #84] ; 0x54 + 802f184: 687b ldr r3, [r7, #4] + 802f186: 2220 movs r2, #32 + 802f188: 655a str r2, [r3, #84] ; 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_ERROR; - 802f14a: 687b ldr r3, [r7, #4] - 802f14c: 2203 movs r2, #3 - 802f14e: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802f18a: 687b ldr r3, [r7, #4] + 802f18c: 2203 movs r2, #3 + 802f18e: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 802f152: 687b ldr r3, [r7, #4] - 802f154: 2200 movs r2, #0 - 802f156: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802f192: 687b ldr r3, [r7, #4] + 802f194: 2200 movs r2, #0 + 802f196: f883 2034 strb.w r2, [r3, #52] ; 0x34 return HAL_ERROR; - 802f15a: 2301 movs r3, #1 - 802f15c: e12d b.n 802f3ba + 802f19a: 2301 movs r3, #1 + 802f19c: e12d b.n 802f3fa while(((*enableRegister) & DMA_SxCR_EN) != 0U) - 802f15e: 697b ldr r3, [r7, #20] - 802f160: 681b ldr r3, [r3, #0] - 802f162: f003 0301 and.w r3, r3, #1 - 802f166: 2b00 cmp r3, #0 - 802f168: d1e5 bne.n 802f136 + 802f19e: 697b ldr r3, [r7, #20] + 802f1a0: 681b ldr r3, [r3, #0] + 802f1a2: f003 0301 and.w r3, r3, #1 + 802f1a6: 2b00 cmp r3, #0 + 802f1a8: d1e5 bne.n 802f176 } } /* Clear all interrupt flags at correct offset within the register */ if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802f16a: 687b ldr r3, [r7, #4] - 802f16c: 681b ldr r3, [r3, #0] - 802f16e: 4a2f ldr r2, [pc, #188] ; (802f22c ) - 802f170: 4293 cmp r3, r2 - 802f172: d04a beq.n 802f20a - 802f174: 687b ldr r3, [r7, #4] - 802f176: 681b ldr r3, [r3, #0] - 802f178: 4a2d ldr r2, [pc, #180] ; (802f230 ) - 802f17a: 4293 cmp r3, r2 - 802f17c: d045 beq.n 802f20a - 802f17e: 687b ldr r3, [r7, #4] - 802f180: 681b ldr r3, [r3, #0] - 802f182: 4a2c ldr r2, [pc, #176] ; (802f234 ) - 802f184: 4293 cmp r3, r2 - 802f186: d040 beq.n 802f20a - 802f188: 687b ldr r3, [r7, #4] - 802f18a: 681b ldr r3, [r3, #0] - 802f18c: 4a2a ldr r2, [pc, #168] ; (802f238 ) - 802f18e: 4293 cmp r3, r2 - 802f190: d03b beq.n 802f20a - 802f192: 687b ldr r3, [r7, #4] - 802f194: 681b ldr r3, [r3, #0] - 802f196: 4a29 ldr r2, [pc, #164] ; (802f23c ) - 802f198: 4293 cmp r3, r2 - 802f19a: d036 beq.n 802f20a - 802f19c: 687b ldr r3, [r7, #4] - 802f19e: 681b ldr r3, [r3, #0] - 802f1a0: 4a27 ldr r2, [pc, #156] ; (802f240 ) - 802f1a2: 4293 cmp r3, r2 - 802f1a4: d031 beq.n 802f20a - 802f1a6: 687b ldr r3, [r7, #4] - 802f1a8: 681b ldr r3, [r3, #0] - 802f1aa: 4a26 ldr r2, [pc, #152] ; (802f244 ) - 802f1ac: 4293 cmp r3, r2 - 802f1ae: d02c beq.n 802f20a - 802f1b0: 687b ldr r3, [r7, #4] - 802f1b2: 681b ldr r3, [r3, #0] - 802f1b4: 4a24 ldr r2, [pc, #144] ; (802f248 ) - 802f1b6: 4293 cmp r3, r2 - 802f1b8: d027 beq.n 802f20a - 802f1ba: 687b ldr r3, [r7, #4] - 802f1bc: 681b ldr r3, [r3, #0] - 802f1be: 4a23 ldr r2, [pc, #140] ; (802f24c ) - 802f1c0: 4293 cmp r3, r2 - 802f1c2: d022 beq.n 802f20a - 802f1c4: 687b ldr r3, [r7, #4] - 802f1c6: 681b ldr r3, [r3, #0] - 802f1c8: 4a21 ldr r2, [pc, #132] ; (802f250 ) - 802f1ca: 4293 cmp r3, r2 - 802f1cc: d01d beq.n 802f20a - 802f1ce: 687b ldr r3, [r7, #4] - 802f1d0: 681b ldr r3, [r3, #0] - 802f1d2: 4a20 ldr r2, [pc, #128] ; (802f254 ) - 802f1d4: 4293 cmp r3, r2 - 802f1d6: d018 beq.n 802f20a - 802f1d8: 687b ldr r3, [r7, #4] - 802f1da: 681b ldr r3, [r3, #0] - 802f1dc: 4a1e ldr r2, [pc, #120] ; (802f258 ) - 802f1de: 4293 cmp r3, r2 - 802f1e0: d013 beq.n 802f20a - 802f1e2: 687b ldr r3, [r7, #4] - 802f1e4: 681b ldr r3, [r3, #0] - 802f1e6: 4a1d ldr r2, [pc, #116] ; (802f25c ) - 802f1e8: 4293 cmp r3, r2 - 802f1ea: d00e beq.n 802f20a - 802f1ec: 687b ldr r3, [r7, #4] - 802f1ee: 681b ldr r3, [r3, #0] - 802f1f0: 4a1b ldr r2, [pc, #108] ; (802f260 ) - 802f1f2: 4293 cmp r3, r2 - 802f1f4: d009 beq.n 802f20a - 802f1f6: 687b ldr r3, [r7, #4] - 802f1f8: 681b ldr r3, [r3, #0] - 802f1fa: 4a1a ldr r2, [pc, #104] ; (802f264 ) - 802f1fc: 4293 cmp r3, r2 - 802f1fe: d004 beq.n 802f20a - 802f200: 687b ldr r3, [r7, #4] - 802f202: 681b ldr r3, [r3, #0] - 802f204: 4a18 ldr r2, [pc, #96] ; (802f268 ) - 802f206: 4293 cmp r3, r2 - 802f208: d101 bne.n 802f20e - 802f20a: 2301 movs r3, #1 - 802f20c: e000 b.n 802f210 - 802f20e: 2300 movs r3, #0 - 802f210: 2b00 cmp r3, #0 - 802f212: d02b beq.n 802f26c + 802f1aa: 687b ldr r3, [r7, #4] + 802f1ac: 681b ldr r3, [r3, #0] + 802f1ae: 4a2f ldr r2, [pc, #188] ; (802f26c ) + 802f1b0: 4293 cmp r3, r2 + 802f1b2: d04a beq.n 802f24a + 802f1b4: 687b ldr r3, [r7, #4] + 802f1b6: 681b ldr r3, [r3, #0] + 802f1b8: 4a2d ldr r2, [pc, #180] ; (802f270 ) + 802f1ba: 4293 cmp r3, r2 + 802f1bc: d045 beq.n 802f24a + 802f1be: 687b ldr r3, [r7, #4] + 802f1c0: 681b ldr r3, [r3, #0] + 802f1c2: 4a2c ldr r2, [pc, #176] ; (802f274 ) + 802f1c4: 4293 cmp r3, r2 + 802f1c6: d040 beq.n 802f24a + 802f1c8: 687b ldr r3, [r7, #4] + 802f1ca: 681b ldr r3, [r3, #0] + 802f1cc: 4a2a ldr r2, [pc, #168] ; (802f278 ) + 802f1ce: 4293 cmp r3, r2 + 802f1d0: d03b beq.n 802f24a + 802f1d2: 687b ldr r3, [r7, #4] + 802f1d4: 681b ldr r3, [r3, #0] + 802f1d6: 4a29 ldr r2, [pc, #164] ; (802f27c ) + 802f1d8: 4293 cmp r3, r2 + 802f1da: d036 beq.n 802f24a + 802f1dc: 687b ldr r3, [r7, #4] + 802f1de: 681b ldr r3, [r3, #0] + 802f1e0: 4a27 ldr r2, [pc, #156] ; (802f280 ) + 802f1e2: 4293 cmp r3, r2 + 802f1e4: d031 beq.n 802f24a + 802f1e6: 687b ldr r3, [r7, #4] + 802f1e8: 681b ldr r3, [r3, #0] + 802f1ea: 4a26 ldr r2, [pc, #152] ; (802f284 ) + 802f1ec: 4293 cmp r3, r2 + 802f1ee: d02c beq.n 802f24a + 802f1f0: 687b ldr r3, [r7, #4] + 802f1f2: 681b ldr r3, [r3, #0] + 802f1f4: 4a24 ldr r2, [pc, #144] ; (802f288 ) + 802f1f6: 4293 cmp r3, r2 + 802f1f8: d027 beq.n 802f24a + 802f1fa: 687b ldr r3, [r7, #4] + 802f1fc: 681b ldr r3, [r3, #0] + 802f1fe: 4a23 ldr r2, [pc, #140] ; (802f28c ) + 802f200: 4293 cmp r3, r2 + 802f202: d022 beq.n 802f24a + 802f204: 687b ldr r3, [r7, #4] + 802f206: 681b ldr r3, [r3, #0] + 802f208: 4a21 ldr r2, [pc, #132] ; (802f290 ) + 802f20a: 4293 cmp r3, r2 + 802f20c: d01d beq.n 802f24a + 802f20e: 687b ldr r3, [r7, #4] + 802f210: 681b ldr r3, [r3, #0] + 802f212: 4a20 ldr r2, [pc, #128] ; (802f294 ) + 802f214: 4293 cmp r3, r2 + 802f216: d018 beq.n 802f24a + 802f218: 687b ldr r3, [r7, #4] + 802f21a: 681b ldr r3, [r3, #0] + 802f21c: 4a1e ldr r2, [pc, #120] ; (802f298 ) + 802f21e: 4293 cmp r3, r2 + 802f220: d013 beq.n 802f24a + 802f222: 687b ldr r3, [r7, #4] + 802f224: 681b ldr r3, [r3, #0] + 802f226: 4a1d ldr r2, [pc, #116] ; (802f29c ) + 802f228: 4293 cmp r3, r2 + 802f22a: d00e beq.n 802f24a + 802f22c: 687b ldr r3, [r7, #4] + 802f22e: 681b ldr r3, [r3, #0] + 802f230: 4a1b ldr r2, [pc, #108] ; (802f2a0 ) + 802f232: 4293 cmp r3, r2 + 802f234: d009 beq.n 802f24a + 802f236: 687b ldr r3, [r7, #4] + 802f238: 681b ldr r3, [r3, #0] + 802f23a: 4a1a ldr r2, [pc, #104] ; (802f2a4 ) + 802f23c: 4293 cmp r3, r2 + 802f23e: d004 beq.n 802f24a + 802f240: 687b ldr r3, [r7, #4] + 802f242: 681b ldr r3, [r3, #0] + 802f244: 4a18 ldr r2, [pc, #96] ; (802f2a8 ) + 802f246: 4293 cmp r3, r2 + 802f248: d101 bne.n 802f24e + 802f24a: 2301 movs r3, #1 + 802f24c: e000 b.n 802f250 + 802f24e: 2300 movs r3, #0 + 802f250: 2b00 cmp r3, #0 + 802f252: d02b beq.n 802f2ac { regs_dma = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 802f214: 687b ldr r3, [r7, #4] - 802f216: 6d9b ldr r3, [r3, #88] ; 0x58 - 802f218: 60bb str r3, [r7, #8] + 802f254: 687b ldr r3, [r7, #4] + 802f256: 6d9b ldr r3, [r3, #88] ; 0x58 + 802f258: 60bb str r3, [r7, #8] regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU); - 802f21a: 687b ldr r3, [r7, #4] - 802f21c: 6ddb ldr r3, [r3, #92] ; 0x5c - 802f21e: f003 031f and.w r3, r3, #31 - 802f222: 223f movs r2, #63 ; 0x3f - 802f224: 409a lsls r2, r3 - 802f226: 68bb ldr r3, [r7, #8] - 802f228: 609a str r2, [r3, #8] - 802f22a: e02a b.n 802f282 - 802f22c: 40020010 .word 0x40020010 - 802f230: 40020028 .word 0x40020028 - 802f234: 40020040 .word 0x40020040 - 802f238: 40020058 .word 0x40020058 - 802f23c: 40020070 .word 0x40020070 - 802f240: 40020088 .word 0x40020088 - 802f244: 400200a0 .word 0x400200a0 - 802f248: 400200b8 .word 0x400200b8 - 802f24c: 40020410 .word 0x40020410 - 802f250: 40020428 .word 0x40020428 - 802f254: 40020440 .word 0x40020440 - 802f258: 40020458 .word 0x40020458 - 802f25c: 40020470 .word 0x40020470 - 802f260: 40020488 .word 0x40020488 - 802f264: 400204a0 .word 0x400204a0 - 802f268: 400204b8 .word 0x400204b8 + 802f25a: 687b ldr r3, [r7, #4] + 802f25c: 6ddb ldr r3, [r3, #92] ; 0x5c + 802f25e: f003 031f and.w r3, r3, #31 + 802f262: 223f movs r2, #63 ; 0x3f + 802f264: 409a lsls r2, r3 + 802f266: 68bb ldr r3, [r7, #8] + 802f268: 609a str r2, [r3, #8] + 802f26a: e02a b.n 802f2c2 + 802f26c: 40020010 .word 0x40020010 + 802f270: 40020028 .word 0x40020028 + 802f274: 40020040 .word 0x40020040 + 802f278: 40020058 .word 0x40020058 + 802f27c: 40020070 .word 0x40020070 + 802f280: 40020088 .word 0x40020088 + 802f284: 400200a0 .word 0x400200a0 + 802f288: 400200b8 .word 0x400200b8 + 802f28c: 40020410 .word 0x40020410 + 802f290: 40020428 .word 0x40020428 + 802f294: 40020440 .word 0x40020440 + 802f298: 40020458 .word 0x40020458 + 802f29c: 40020470 .word 0x40020470 + 802f2a0: 40020488 .word 0x40020488 + 802f2a4: 400204a0 .word 0x400204a0 + 802f2a8: 400204b8 .word 0x400204b8 } else /* BDMA channel */ { regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress; - 802f26c: 687b ldr r3, [r7, #4] - 802f26e: 6d9b ldr r3, [r3, #88] ; 0x58 - 802f270: 60fb str r3, [r7, #12] + 802f2ac: 687b ldr r3, [r7, #4] + 802f2ae: 6d9b ldr r3, [r3, #88] ; 0x58 + 802f2b0: 60fb str r3, [r7, #12] regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU)); - 802f272: 687b ldr r3, [r7, #4] - 802f274: 6ddb ldr r3, [r3, #92] ; 0x5c - 802f276: f003 031f and.w r3, r3, #31 - 802f27a: 2201 movs r2, #1 - 802f27c: 409a lsls r2, r3 - 802f27e: 68fb ldr r3, [r7, #12] - 802f280: 605a str r2, [r3, #4] + 802f2b2: 687b ldr r3, [r7, #4] + 802f2b4: 6ddb ldr r3, [r3, #92] ; 0x5c + 802f2b6: f003 031f and.w r3, r3, #31 + 802f2ba: 2201 movs r2, #1 + 802f2bc: 409a lsls r2, r3 + 802f2be: 68fb ldr r3, [r7, #12] + 802f2c0: 605a str r2, [r3, #4] } if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ - 802f282: 687b ldr r3, [r7, #4] - 802f284: 681b ldr r3, [r3, #0] - 802f286: 4a4f ldr r2, [pc, #316] ; (802f3c4 ) - 802f288: 4293 cmp r3, r2 - 802f28a: d072 beq.n 802f372 - 802f28c: 687b ldr r3, [r7, #4] - 802f28e: 681b ldr r3, [r3, #0] - 802f290: 4a4d ldr r2, [pc, #308] ; (802f3c8 ) - 802f292: 4293 cmp r3, r2 - 802f294: d06d beq.n 802f372 - 802f296: 687b ldr r3, [r7, #4] - 802f298: 681b ldr r3, [r3, #0] - 802f29a: 4a4c ldr r2, [pc, #304] ; (802f3cc ) - 802f29c: 4293 cmp r3, r2 - 802f29e: d068 beq.n 802f372 - 802f2a0: 687b ldr r3, [r7, #4] - 802f2a2: 681b ldr r3, [r3, #0] - 802f2a4: 4a4a ldr r2, [pc, #296] ; (802f3d0 ) - 802f2a6: 4293 cmp r3, r2 - 802f2a8: d063 beq.n 802f372 - 802f2aa: 687b ldr r3, [r7, #4] - 802f2ac: 681b ldr r3, [r3, #0] - 802f2ae: 4a49 ldr r2, [pc, #292] ; (802f3d4 ) - 802f2b0: 4293 cmp r3, r2 - 802f2b2: d05e beq.n 802f372 - 802f2b4: 687b ldr r3, [r7, #4] - 802f2b6: 681b ldr r3, [r3, #0] - 802f2b8: 4a47 ldr r2, [pc, #284] ; (802f3d8 ) - 802f2ba: 4293 cmp r3, r2 - 802f2bc: d059 beq.n 802f372 - 802f2be: 687b ldr r3, [r7, #4] - 802f2c0: 681b ldr r3, [r3, #0] - 802f2c2: 4a46 ldr r2, [pc, #280] ; (802f3dc ) - 802f2c4: 4293 cmp r3, r2 - 802f2c6: d054 beq.n 802f372 - 802f2c8: 687b ldr r3, [r7, #4] - 802f2ca: 681b ldr r3, [r3, #0] - 802f2cc: 4a44 ldr r2, [pc, #272] ; (802f3e0 ) - 802f2ce: 4293 cmp r3, r2 - 802f2d0: d04f beq.n 802f372 - 802f2d2: 687b ldr r3, [r7, #4] - 802f2d4: 681b ldr r3, [r3, #0] - 802f2d6: 4a43 ldr r2, [pc, #268] ; (802f3e4 ) - 802f2d8: 4293 cmp r3, r2 - 802f2da: d04a beq.n 802f372 - 802f2dc: 687b ldr r3, [r7, #4] - 802f2de: 681b ldr r3, [r3, #0] - 802f2e0: 4a41 ldr r2, [pc, #260] ; (802f3e8 ) - 802f2e2: 4293 cmp r3, r2 - 802f2e4: d045 beq.n 802f372 - 802f2e6: 687b ldr r3, [r7, #4] - 802f2e8: 681b ldr r3, [r3, #0] - 802f2ea: 4a40 ldr r2, [pc, #256] ; (802f3ec ) - 802f2ec: 4293 cmp r3, r2 - 802f2ee: d040 beq.n 802f372 - 802f2f0: 687b ldr r3, [r7, #4] - 802f2f2: 681b ldr r3, [r3, #0] - 802f2f4: 4a3e ldr r2, [pc, #248] ; (802f3f0 ) - 802f2f6: 4293 cmp r3, r2 - 802f2f8: d03b beq.n 802f372 - 802f2fa: 687b ldr r3, [r7, #4] - 802f2fc: 681b ldr r3, [r3, #0] - 802f2fe: 4a3d ldr r2, [pc, #244] ; (802f3f4 ) - 802f300: 4293 cmp r3, r2 - 802f302: d036 beq.n 802f372 - 802f304: 687b ldr r3, [r7, #4] - 802f306: 681b ldr r3, [r3, #0] - 802f308: 4a3b ldr r2, [pc, #236] ; (802f3f8 ) - 802f30a: 4293 cmp r3, r2 - 802f30c: d031 beq.n 802f372 - 802f30e: 687b ldr r3, [r7, #4] - 802f310: 681b ldr r3, [r3, #0] - 802f312: 4a3a ldr r2, [pc, #232] ; (802f3fc ) - 802f314: 4293 cmp r3, r2 - 802f316: d02c beq.n 802f372 - 802f318: 687b ldr r3, [r7, #4] - 802f31a: 681b ldr r3, [r3, #0] - 802f31c: 4a38 ldr r2, [pc, #224] ; (802f400 ) - 802f31e: 4293 cmp r3, r2 - 802f320: d027 beq.n 802f372 - 802f322: 687b ldr r3, [r7, #4] - 802f324: 681b ldr r3, [r3, #0] - 802f326: 4a37 ldr r2, [pc, #220] ; (802f404 ) - 802f328: 4293 cmp r3, r2 - 802f32a: d022 beq.n 802f372 - 802f32c: 687b ldr r3, [r7, #4] - 802f32e: 681b ldr r3, [r3, #0] - 802f330: 4a35 ldr r2, [pc, #212] ; (802f408 ) - 802f332: 4293 cmp r3, r2 - 802f334: d01d beq.n 802f372 - 802f336: 687b ldr r3, [r7, #4] - 802f338: 681b ldr r3, [r3, #0] - 802f33a: 4a34 ldr r2, [pc, #208] ; (802f40c ) - 802f33c: 4293 cmp r3, r2 - 802f33e: d018 beq.n 802f372 - 802f340: 687b ldr r3, [r7, #4] - 802f342: 681b ldr r3, [r3, #0] - 802f344: 4a32 ldr r2, [pc, #200] ; (802f410 ) - 802f346: 4293 cmp r3, r2 - 802f348: d013 beq.n 802f372 - 802f34a: 687b ldr r3, [r7, #4] - 802f34c: 681b ldr r3, [r3, #0] - 802f34e: 4a31 ldr r2, [pc, #196] ; (802f414 ) - 802f350: 4293 cmp r3, r2 - 802f352: d00e beq.n 802f372 - 802f354: 687b ldr r3, [r7, #4] - 802f356: 681b ldr r3, [r3, #0] - 802f358: 4a2f ldr r2, [pc, #188] ; (802f418 ) - 802f35a: 4293 cmp r3, r2 - 802f35c: d009 beq.n 802f372 - 802f35e: 687b ldr r3, [r7, #4] - 802f360: 681b ldr r3, [r3, #0] - 802f362: 4a2e ldr r2, [pc, #184] ; (802f41c ) - 802f364: 4293 cmp r3, r2 - 802f366: d004 beq.n 802f372 - 802f368: 687b ldr r3, [r7, #4] - 802f36a: 681b ldr r3, [r3, #0] - 802f36c: 4a2c ldr r2, [pc, #176] ; (802f420 ) - 802f36e: 4293 cmp r3, r2 - 802f370: d101 bne.n 802f376 - 802f372: 2301 movs r3, #1 - 802f374: e000 b.n 802f378 - 802f376: 2300 movs r3, #0 - 802f378: 2b00 cmp r3, #0 - 802f37a: d015 beq.n 802f3a8 + 802f2c2: 687b ldr r3, [r7, #4] + 802f2c4: 681b ldr r3, [r3, #0] + 802f2c6: 4a4f ldr r2, [pc, #316] ; (802f404 ) + 802f2c8: 4293 cmp r3, r2 + 802f2ca: d072 beq.n 802f3b2 + 802f2cc: 687b ldr r3, [r7, #4] + 802f2ce: 681b ldr r3, [r3, #0] + 802f2d0: 4a4d ldr r2, [pc, #308] ; (802f408 ) + 802f2d2: 4293 cmp r3, r2 + 802f2d4: d06d beq.n 802f3b2 + 802f2d6: 687b ldr r3, [r7, #4] + 802f2d8: 681b ldr r3, [r3, #0] + 802f2da: 4a4c ldr r2, [pc, #304] ; (802f40c ) + 802f2dc: 4293 cmp r3, r2 + 802f2de: d068 beq.n 802f3b2 + 802f2e0: 687b ldr r3, [r7, #4] + 802f2e2: 681b ldr r3, [r3, #0] + 802f2e4: 4a4a ldr r2, [pc, #296] ; (802f410 ) + 802f2e6: 4293 cmp r3, r2 + 802f2e8: d063 beq.n 802f3b2 + 802f2ea: 687b ldr r3, [r7, #4] + 802f2ec: 681b ldr r3, [r3, #0] + 802f2ee: 4a49 ldr r2, [pc, #292] ; (802f414 ) + 802f2f0: 4293 cmp r3, r2 + 802f2f2: d05e beq.n 802f3b2 + 802f2f4: 687b ldr r3, [r7, #4] + 802f2f6: 681b ldr r3, [r3, #0] + 802f2f8: 4a47 ldr r2, [pc, #284] ; (802f418 ) + 802f2fa: 4293 cmp r3, r2 + 802f2fc: d059 beq.n 802f3b2 + 802f2fe: 687b ldr r3, [r7, #4] + 802f300: 681b ldr r3, [r3, #0] + 802f302: 4a46 ldr r2, [pc, #280] ; (802f41c ) + 802f304: 4293 cmp r3, r2 + 802f306: d054 beq.n 802f3b2 + 802f308: 687b ldr r3, [r7, #4] + 802f30a: 681b ldr r3, [r3, #0] + 802f30c: 4a44 ldr r2, [pc, #272] ; (802f420 ) + 802f30e: 4293 cmp r3, r2 + 802f310: d04f beq.n 802f3b2 + 802f312: 687b ldr r3, [r7, #4] + 802f314: 681b ldr r3, [r3, #0] + 802f316: 4a43 ldr r2, [pc, #268] ; (802f424 ) + 802f318: 4293 cmp r3, r2 + 802f31a: d04a beq.n 802f3b2 + 802f31c: 687b ldr r3, [r7, #4] + 802f31e: 681b ldr r3, [r3, #0] + 802f320: 4a41 ldr r2, [pc, #260] ; (802f428 ) + 802f322: 4293 cmp r3, r2 + 802f324: d045 beq.n 802f3b2 + 802f326: 687b ldr r3, [r7, #4] + 802f328: 681b ldr r3, [r3, #0] + 802f32a: 4a40 ldr r2, [pc, #256] ; (802f42c ) + 802f32c: 4293 cmp r3, r2 + 802f32e: d040 beq.n 802f3b2 + 802f330: 687b ldr r3, [r7, #4] + 802f332: 681b ldr r3, [r3, #0] + 802f334: 4a3e ldr r2, [pc, #248] ; (802f430 ) + 802f336: 4293 cmp r3, r2 + 802f338: d03b beq.n 802f3b2 + 802f33a: 687b ldr r3, [r7, #4] + 802f33c: 681b ldr r3, [r3, #0] + 802f33e: 4a3d ldr r2, [pc, #244] ; (802f434 ) + 802f340: 4293 cmp r3, r2 + 802f342: d036 beq.n 802f3b2 + 802f344: 687b ldr r3, [r7, #4] + 802f346: 681b ldr r3, [r3, #0] + 802f348: 4a3b ldr r2, [pc, #236] ; (802f438 ) + 802f34a: 4293 cmp r3, r2 + 802f34c: d031 beq.n 802f3b2 + 802f34e: 687b ldr r3, [r7, #4] + 802f350: 681b ldr r3, [r3, #0] + 802f352: 4a3a ldr r2, [pc, #232] ; (802f43c ) + 802f354: 4293 cmp r3, r2 + 802f356: d02c beq.n 802f3b2 + 802f358: 687b ldr r3, [r7, #4] + 802f35a: 681b ldr r3, [r3, #0] + 802f35c: 4a38 ldr r2, [pc, #224] ; (802f440 ) + 802f35e: 4293 cmp r3, r2 + 802f360: d027 beq.n 802f3b2 + 802f362: 687b ldr r3, [r7, #4] + 802f364: 681b ldr r3, [r3, #0] + 802f366: 4a37 ldr r2, [pc, #220] ; (802f444 ) + 802f368: 4293 cmp r3, r2 + 802f36a: d022 beq.n 802f3b2 + 802f36c: 687b ldr r3, [r7, #4] + 802f36e: 681b ldr r3, [r3, #0] + 802f370: 4a35 ldr r2, [pc, #212] ; (802f448 ) + 802f372: 4293 cmp r3, r2 + 802f374: d01d beq.n 802f3b2 + 802f376: 687b ldr r3, [r7, #4] + 802f378: 681b ldr r3, [r3, #0] + 802f37a: 4a34 ldr r2, [pc, #208] ; (802f44c ) + 802f37c: 4293 cmp r3, r2 + 802f37e: d018 beq.n 802f3b2 + 802f380: 687b ldr r3, [r7, #4] + 802f382: 681b ldr r3, [r3, #0] + 802f384: 4a32 ldr r2, [pc, #200] ; (802f450 ) + 802f386: 4293 cmp r3, r2 + 802f388: d013 beq.n 802f3b2 + 802f38a: 687b ldr r3, [r7, #4] + 802f38c: 681b ldr r3, [r3, #0] + 802f38e: 4a31 ldr r2, [pc, #196] ; (802f454 ) + 802f390: 4293 cmp r3, r2 + 802f392: d00e beq.n 802f3b2 + 802f394: 687b ldr r3, [r7, #4] + 802f396: 681b ldr r3, [r3, #0] + 802f398: 4a2f ldr r2, [pc, #188] ; (802f458 ) + 802f39a: 4293 cmp r3, r2 + 802f39c: d009 beq.n 802f3b2 + 802f39e: 687b ldr r3, [r7, #4] + 802f3a0: 681b ldr r3, [r3, #0] + 802f3a2: 4a2e ldr r2, [pc, #184] ; (802f45c ) + 802f3a4: 4293 cmp r3, r2 + 802f3a6: d004 beq.n 802f3b2 + 802f3a8: 687b ldr r3, [r7, #4] + 802f3aa: 681b ldr r3, [r3, #0] + 802f3ac: 4a2c ldr r2, [pc, #176] ; (802f460 ) + 802f3ae: 4293 cmp r3, r2 + 802f3b0: d101 bne.n 802f3b6 + 802f3b2: 2301 movs r3, #1 + 802f3b4: e000 b.n 802f3b8 + 802f3b6: 2300 movs r3, #0 + 802f3b8: 2b00 cmp r3, #0 + 802f3ba: d015 beq.n 802f3e8 { /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 802f37c: 687b ldr r3, [r7, #4] - 802f37e: 6e5b ldr r3, [r3, #100] ; 0x64 - 802f380: 687a ldr r2, [r7, #4] - 802f382: 6e92 ldr r2, [r2, #104] ; 0x68 - 802f384: 605a str r2, [r3, #4] + 802f3bc: 687b ldr r3, [r7, #4] + 802f3be: 6e5b ldr r3, [r3, #100] ; 0x64 + 802f3c0: 687a ldr r2, [r7, #4] + 802f3c2: 6e92 ldr r2, [r2, #104] ; 0x68 + 802f3c4: 605a str r2, [r3, #4] if(hdma->DMAmuxRequestGen != 0U) - 802f386: 687b ldr r3, [r7, #4] - 802f388: 6edb ldr r3, [r3, #108] ; 0x6c - 802f38a: 2b00 cmp r3, #0 - 802f38c: d00c beq.n 802f3a8 + 802f3c6: 687b ldr r3, [r7, #4] + 802f3c8: 6edb ldr r3, [r3, #108] ; 0x6c + 802f3ca: 2b00 cmp r3, #0 + 802f3cc: d00c beq.n 802f3e8 { /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT */ /* disable the request gen overrun IT */ hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; - 802f38e: 687b ldr r3, [r7, #4] - 802f390: 6edb ldr r3, [r3, #108] ; 0x6c - 802f392: 681a ldr r2, [r3, #0] - 802f394: 687b ldr r3, [r7, #4] - 802f396: 6edb ldr r3, [r3, #108] ; 0x6c - 802f398: f422 7280 bic.w r2, r2, #256 ; 0x100 - 802f39c: 601a str r2, [r3, #0] + 802f3ce: 687b ldr r3, [r7, #4] + 802f3d0: 6edb ldr r3, [r3, #108] ; 0x6c + 802f3d2: 681a ldr r2, [r3, #0] + 802f3d4: 687b ldr r3, [r7, #4] + 802f3d6: 6edb ldr r3, [r3, #108] ; 0x6c + 802f3d8: f422 7280 bic.w r2, r2, #256 ; 0x100 + 802f3dc: 601a str r2, [r3, #0] /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 802f39e: 687b ldr r3, [r7, #4] - 802f3a0: 6f1b ldr r3, [r3, #112] ; 0x70 - 802f3a2: 687a ldr r2, [r7, #4] - 802f3a4: 6f52 ldr r2, [r2, #116] ; 0x74 - 802f3a6: 605a str r2, [r3, #4] + 802f3de: 687b ldr r3, [r7, #4] + 802f3e0: 6f1b ldr r3, [r3, #112] ; 0x70 + 802f3e2: 687a ldr r2, [r7, #4] + 802f3e4: 6f52 ldr r2, [r2, #116] ; 0x74 + 802f3e6: 605a str r2, [r3, #4] } } /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 802f3a8: 687b ldr r3, [r7, #4] - 802f3aa: 2201 movs r2, #1 - 802f3ac: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802f3e8: 687b ldr r3, [r7, #4] + 802f3ea: 2201 movs r2, #1 + 802f3ec: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 802f3b0: 687b ldr r3, [r7, #4] - 802f3b2: 2200 movs r2, #0 - 802f3b4: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802f3f0: 687b ldr r3, [r7, #4] + 802f3f2: 2200 movs r2, #0 + 802f3f4: f883 2034 strb.w r2, [r3, #52] ; 0x34 } return HAL_OK; - 802f3b8: 2300 movs r3, #0 -} - 802f3ba: 4618 mov r0, r3 - 802f3bc: 3718 adds r7, #24 - 802f3be: 46bd mov sp, r7 - 802f3c0: bd80 pop {r7, pc} - 802f3c2: bf00 nop - 802f3c4: 40020010 .word 0x40020010 - 802f3c8: 40020028 .word 0x40020028 - 802f3cc: 40020040 .word 0x40020040 - 802f3d0: 40020058 .word 0x40020058 - 802f3d4: 40020070 .word 0x40020070 - 802f3d8: 40020088 .word 0x40020088 - 802f3dc: 400200a0 .word 0x400200a0 - 802f3e0: 400200b8 .word 0x400200b8 - 802f3e4: 40020410 .word 0x40020410 - 802f3e8: 40020428 .word 0x40020428 - 802f3ec: 40020440 .word 0x40020440 - 802f3f0: 40020458 .word 0x40020458 - 802f3f4: 40020470 .word 0x40020470 - 802f3f8: 40020488 .word 0x40020488 - 802f3fc: 400204a0 .word 0x400204a0 - 802f400: 400204b8 .word 0x400204b8 - 802f404: 58025408 .word 0x58025408 - 802f408: 5802541c .word 0x5802541c - 802f40c: 58025430 .word 0x58025430 - 802f410: 58025444 .word 0x58025444 - 802f414: 58025458 .word 0x58025458 - 802f418: 5802546c .word 0x5802546c - 802f41c: 58025480 .word 0x58025480 - 802f420: 58025494 .word 0x58025494 - -0802f424 : + 802f3f8: 2300 movs r3, #0 +} + 802f3fa: 4618 mov r0, r3 + 802f3fc: 3718 adds r7, #24 + 802f3fe: 46bd mov sp, r7 + 802f400: bd80 pop {r7, pc} + 802f402: bf00 nop + 802f404: 40020010 .word 0x40020010 + 802f408: 40020028 .word 0x40020028 + 802f40c: 40020040 .word 0x40020040 + 802f410: 40020058 .word 0x40020058 + 802f414: 40020070 .word 0x40020070 + 802f418: 40020088 .word 0x40020088 + 802f41c: 400200a0 .word 0x400200a0 + 802f420: 400200b8 .word 0x400200b8 + 802f424: 40020410 .word 0x40020410 + 802f428: 40020428 .word 0x40020428 + 802f42c: 40020440 .word 0x40020440 + 802f430: 40020458 .word 0x40020458 + 802f434: 40020470 .word 0x40020470 + 802f438: 40020488 .word 0x40020488 + 802f43c: 400204a0 .word 0x400204a0 + 802f440: 400204b8 .word 0x400204b8 + 802f444: 58025408 .word 0x58025408 + 802f448: 5802541c .word 0x5802541c + 802f44c: 58025430 .word 0x58025430 + 802f450: 58025444 .word 0x58025444 + 802f454: 58025458 .word 0x58025458 + 802f458: 5802546c .word 0x5802546c + 802f45c: 58025480 .word 0x58025480 + 802f460: 58025494 .word 0x58025494 + +0802f464 : * @param hdma : pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma) { - 802f424: b580 push {r7, lr} - 802f426: b084 sub sp, #16 - 802f428: af00 add r7, sp, #0 - 802f42a: 6078 str r0, [r7, #4] + 802f464: b580 push {r7, lr} + 802f466: b084 sub sp, #16 + 802f468: af00 add r7, sp, #0 + 802f46a: 6078 str r0, [r7, #4] BDMA_Base_Registers *regs_bdma; /* Check the DMA peripheral handle */ if(hdma == NULL) - 802f42c: 687b ldr r3, [r7, #4] - 802f42e: 2b00 cmp r3, #0 - 802f430: d101 bne.n 802f436 + 802f46c: 687b ldr r3, [r7, #4] + 802f46e: 2b00 cmp r3, #0 + 802f470: d101 bne.n 802f476 { return HAL_ERROR; - 802f432: 2301 movs r3, #1 - 802f434: e237 b.n 802f8a6 + 802f472: 2301 movs r3, #1 + 802f474: e237 b.n 802f8e6 } if(hdma->State != HAL_DMA_STATE_BUSY) - 802f436: 687b ldr r3, [r7, #4] - 802f438: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 - 802f43c: b2db uxtb r3, r3 - 802f43e: 2b02 cmp r3, #2 - 802f440: d004 beq.n 802f44c + 802f476: 687b ldr r3, [r7, #4] + 802f478: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 + 802f47c: b2db uxtb r3, r3 + 802f47e: 2b02 cmp r3, #2 + 802f480: d004 beq.n 802f48c { hdma->ErrorCode = HAL_DMA_ERROR_NO_XFER; - 802f442: 687b ldr r3, [r7, #4] - 802f444: 2280 movs r2, #128 ; 0x80 - 802f446: 655a str r2, [r3, #84] ; 0x54 + 802f482: 687b ldr r3, [r7, #4] + 802f484: 2280 movs r2, #128 ; 0x80 + 802f486: 655a str r2, [r3, #84] ; 0x54 return HAL_ERROR; - 802f448: 2301 movs r3, #1 - 802f44a: e22c b.n 802f8a6 + 802f488: 2301 movs r3, #1 + 802f48a: e22c b.n 802f8e6 } else { if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802f44c: 687b ldr r3, [r7, #4] - 802f44e: 681b ldr r3, [r3, #0] - 802f450: 4a5c ldr r2, [pc, #368] ; (802f5c4 ) - 802f452: 4293 cmp r3, r2 - 802f454: d04a beq.n 802f4ec - 802f456: 687b ldr r3, [r7, #4] - 802f458: 681b ldr r3, [r3, #0] - 802f45a: 4a5b ldr r2, [pc, #364] ; (802f5c8 ) - 802f45c: 4293 cmp r3, r2 - 802f45e: d045 beq.n 802f4ec - 802f460: 687b ldr r3, [r7, #4] - 802f462: 681b ldr r3, [r3, #0] - 802f464: 4a59 ldr r2, [pc, #356] ; (802f5cc ) - 802f466: 4293 cmp r3, r2 - 802f468: d040 beq.n 802f4ec - 802f46a: 687b ldr r3, [r7, #4] - 802f46c: 681b ldr r3, [r3, #0] - 802f46e: 4a58 ldr r2, [pc, #352] ; (802f5d0 ) - 802f470: 4293 cmp r3, r2 - 802f472: d03b beq.n 802f4ec - 802f474: 687b ldr r3, [r7, #4] - 802f476: 681b ldr r3, [r3, #0] - 802f478: 4a56 ldr r2, [pc, #344] ; (802f5d4 ) - 802f47a: 4293 cmp r3, r2 - 802f47c: d036 beq.n 802f4ec - 802f47e: 687b ldr r3, [r7, #4] - 802f480: 681b ldr r3, [r3, #0] - 802f482: 4a55 ldr r2, [pc, #340] ; (802f5d8 ) - 802f484: 4293 cmp r3, r2 - 802f486: d031 beq.n 802f4ec - 802f488: 687b ldr r3, [r7, #4] - 802f48a: 681b ldr r3, [r3, #0] - 802f48c: 4a53 ldr r2, [pc, #332] ; (802f5dc ) - 802f48e: 4293 cmp r3, r2 - 802f490: d02c beq.n 802f4ec - 802f492: 687b ldr r3, [r7, #4] - 802f494: 681b ldr r3, [r3, #0] - 802f496: 4a52 ldr r2, [pc, #328] ; (802f5e0 ) - 802f498: 4293 cmp r3, r2 - 802f49a: d027 beq.n 802f4ec - 802f49c: 687b ldr r3, [r7, #4] - 802f49e: 681b ldr r3, [r3, #0] - 802f4a0: 4a50 ldr r2, [pc, #320] ; (802f5e4 ) - 802f4a2: 4293 cmp r3, r2 - 802f4a4: d022 beq.n 802f4ec - 802f4a6: 687b ldr r3, [r7, #4] - 802f4a8: 681b ldr r3, [r3, #0] - 802f4aa: 4a4f ldr r2, [pc, #316] ; (802f5e8 ) - 802f4ac: 4293 cmp r3, r2 - 802f4ae: d01d beq.n 802f4ec - 802f4b0: 687b ldr r3, [r7, #4] - 802f4b2: 681b ldr r3, [r3, #0] - 802f4b4: 4a4d ldr r2, [pc, #308] ; (802f5ec ) - 802f4b6: 4293 cmp r3, r2 - 802f4b8: d018 beq.n 802f4ec - 802f4ba: 687b ldr r3, [r7, #4] - 802f4bc: 681b ldr r3, [r3, #0] - 802f4be: 4a4c ldr r2, [pc, #304] ; (802f5f0 ) - 802f4c0: 4293 cmp r3, r2 - 802f4c2: d013 beq.n 802f4ec - 802f4c4: 687b ldr r3, [r7, #4] - 802f4c6: 681b ldr r3, [r3, #0] - 802f4c8: 4a4a ldr r2, [pc, #296] ; (802f5f4 ) - 802f4ca: 4293 cmp r3, r2 - 802f4cc: d00e beq.n 802f4ec - 802f4ce: 687b ldr r3, [r7, #4] - 802f4d0: 681b ldr r3, [r3, #0] - 802f4d2: 4a49 ldr r2, [pc, #292] ; (802f5f8 ) - 802f4d4: 4293 cmp r3, r2 - 802f4d6: d009 beq.n 802f4ec - 802f4d8: 687b ldr r3, [r7, #4] - 802f4da: 681b ldr r3, [r3, #0] - 802f4dc: 4a47 ldr r2, [pc, #284] ; (802f5fc ) - 802f4de: 4293 cmp r3, r2 - 802f4e0: d004 beq.n 802f4ec - 802f4e2: 687b ldr r3, [r7, #4] - 802f4e4: 681b ldr r3, [r3, #0] - 802f4e6: 4a46 ldr r2, [pc, #280] ; (802f600 ) - 802f4e8: 4293 cmp r3, r2 - 802f4ea: d101 bne.n 802f4f0 - 802f4ec: 2301 movs r3, #1 - 802f4ee: e000 b.n 802f4f2 - 802f4f0: 2300 movs r3, #0 - 802f4f2: 2b00 cmp r3, #0 - 802f4f4: f000 8086 beq.w 802f604 + 802f48c: 687b ldr r3, [r7, #4] + 802f48e: 681b ldr r3, [r3, #0] + 802f490: 4a5c ldr r2, [pc, #368] ; (802f604 ) + 802f492: 4293 cmp r3, r2 + 802f494: d04a beq.n 802f52c + 802f496: 687b ldr r3, [r7, #4] + 802f498: 681b ldr r3, [r3, #0] + 802f49a: 4a5b ldr r2, [pc, #364] ; (802f608 ) + 802f49c: 4293 cmp r3, r2 + 802f49e: d045 beq.n 802f52c + 802f4a0: 687b ldr r3, [r7, #4] + 802f4a2: 681b ldr r3, [r3, #0] + 802f4a4: 4a59 ldr r2, [pc, #356] ; (802f60c ) + 802f4a6: 4293 cmp r3, r2 + 802f4a8: d040 beq.n 802f52c + 802f4aa: 687b ldr r3, [r7, #4] + 802f4ac: 681b ldr r3, [r3, #0] + 802f4ae: 4a58 ldr r2, [pc, #352] ; (802f610 ) + 802f4b0: 4293 cmp r3, r2 + 802f4b2: d03b beq.n 802f52c + 802f4b4: 687b ldr r3, [r7, #4] + 802f4b6: 681b ldr r3, [r3, #0] + 802f4b8: 4a56 ldr r2, [pc, #344] ; (802f614 ) + 802f4ba: 4293 cmp r3, r2 + 802f4bc: d036 beq.n 802f52c + 802f4be: 687b ldr r3, [r7, #4] + 802f4c0: 681b ldr r3, [r3, #0] + 802f4c2: 4a55 ldr r2, [pc, #340] ; (802f618 ) + 802f4c4: 4293 cmp r3, r2 + 802f4c6: d031 beq.n 802f52c + 802f4c8: 687b ldr r3, [r7, #4] + 802f4ca: 681b ldr r3, [r3, #0] + 802f4cc: 4a53 ldr r2, [pc, #332] ; (802f61c ) + 802f4ce: 4293 cmp r3, r2 + 802f4d0: d02c beq.n 802f52c + 802f4d2: 687b ldr r3, [r7, #4] + 802f4d4: 681b ldr r3, [r3, #0] + 802f4d6: 4a52 ldr r2, [pc, #328] ; (802f620 ) + 802f4d8: 4293 cmp r3, r2 + 802f4da: d027 beq.n 802f52c + 802f4dc: 687b ldr r3, [r7, #4] + 802f4de: 681b ldr r3, [r3, #0] + 802f4e0: 4a50 ldr r2, [pc, #320] ; (802f624 ) + 802f4e2: 4293 cmp r3, r2 + 802f4e4: d022 beq.n 802f52c + 802f4e6: 687b ldr r3, [r7, #4] + 802f4e8: 681b ldr r3, [r3, #0] + 802f4ea: 4a4f ldr r2, [pc, #316] ; (802f628 ) + 802f4ec: 4293 cmp r3, r2 + 802f4ee: d01d beq.n 802f52c + 802f4f0: 687b ldr r3, [r7, #4] + 802f4f2: 681b ldr r3, [r3, #0] + 802f4f4: 4a4d ldr r2, [pc, #308] ; (802f62c ) + 802f4f6: 4293 cmp r3, r2 + 802f4f8: d018 beq.n 802f52c + 802f4fa: 687b ldr r3, [r7, #4] + 802f4fc: 681b ldr r3, [r3, #0] + 802f4fe: 4a4c ldr r2, [pc, #304] ; (802f630 ) + 802f500: 4293 cmp r3, r2 + 802f502: d013 beq.n 802f52c + 802f504: 687b ldr r3, [r7, #4] + 802f506: 681b ldr r3, [r3, #0] + 802f508: 4a4a ldr r2, [pc, #296] ; (802f634 ) + 802f50a: 4293 cmp r3, r2 + 802f50c: d00e beq.n 802f52c + 802f50e: 687b ldr r3, [r7, #4] + 802f510: 681b ldr r3, [r3, #0] + 802f512: 4a49 ldr r2, [pc, #292] ; (802f638 ) + 802f514: 4293 cmp r3, r2 + 802f516: d009 beq.n 802f52c + 802f518: 687b ldr r3, [r7, #4] + 802f51a: 681b ldr r3, [r3, #0] + 802f51c: 4a47 ldr r2, [pc, #284] ; (802f63c ) + 802f51e: 4293 cmp r3, r2 + 802f520: d004 beq.n 802f52c + 802f522: 687b ldr r3, [r7, #4] + 802f524: 681b ldr r3, [r3, #0] + 802f526: 4a46 ldr r2, [pc, #280] ; (802f640 ) + 802f528: 4293 cmp r3, r2 + 802f52a: d101 bne.n 802f530 + 802f52c: 2301 movs r3, #1 + 802f52e: e000 b.n 802f532 + 802f530: 2300 movs r3, #0 + 802f532: 2b00 cmp r3, #0 + 802f534: f000 8086 beq.w 802f644 { /* Set Abort State */ hdma->State = HAL_DMA_STATE_ABORT; - 802f4f8: 687b ldr r3, [r7, #4] - 802f4fa: 2204 movs r2, #4 - 802f4fc: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802f538: 687b ldr r3, [r7, #4] + 802f53a: 2204 movs r2, #4 + 802f53c: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 802f500: 687b ldr r3, [r7, #4] - 802f502: 681b ldr r3, [r3, #0] - 802f504: 4a2f ldr r2, [pc, #188] ; (802f5c4 ) - 802f506: 4293 cmp r3, r2 - 802f508: d04a beq.n 802f5a0 - 802f50a: 687b ldr r3, [r7, #4] - 802f50c: 681b ldr r3, [r3, #0] - 802f50e: 4a2e ldr r2, [pc, #184] ; (802f5c8 ) - 802f510: 4293 cmp r3, r2 - 802f512: d045 beq.n 802f5a0 - 802f514: 687b ldr r3, [r7, #4] - 802f516: 681b ldr r3, [r3, #0] - 802f518: 4a2c ldr r2, [pc, #176] ; (802f5cc ) - 802f51a: 4293 cmp r3, r2 - 802f51c: d040 beq.n 802f5a0 - 802f51e: 687b ldr r3, [r7, #4] - 802f520: 681b ldr r3, [r3, #0] - 802f522: 4a2b ldr r2, [pc, #172] ; (802f5d0 ) - 802f524: 4293 cmp r3, r2 - 802f526: d03b beq.n 802f5a0 - 802f528: 687b ldr r3, [r7, #4] - 802f52a: 681b ldr r3, [r3, #0] - 802f52c: 4a29 ldr r2, [pc, #164] ; (802f5d4 ) - 802f52e: 4293 cmp r3, r2 - 802f530: d036 beq.n 802f5a0 - 802f532: 687b ldr r3, [r7, #4] - 802f534: 681b ldr r3, [r3, #0] - 802f536: 4a28 ldr r2, [pc, #160] ; (802f5d8 ) - 802f538: 4293 cmp r3, r2 - 802f53a: d031 beq.n 802f5a0 - 802f53c: 687b ldr r3, [r7, #4] - 802f53e: 681b ldr r3, [r3, #0] - 802f540: 4a26 ldr r2, [pc, #152] ; (802f5dc ) - 802f542: 4293 cmp r3, r2 - 802f544: d02c beq.n 802f5a0 - 802f546: 687b ldr r3, [r7, #4] - 802f548: 681b ldr r3, [r3, #0] - 802f54a: 4a25 ldr r2, [pc, #148] ; (802f5e0 ) - 802f54c: 4293 cmp r3, r2 - 802f54e: d027 beq.n 802f5a0 - 802f550: 687b ldr r3, [r7, #4] - 802f552: 681b ldr r3, [r3, #0] - 802f554: 4a23 ldr r2, [pc, #140] ; (802f5e4 ) - 802f556: 4293 cmp r3, r2 - 802f558: d022 beq.n 802f5a0 - 802f55a: 687b ldr r3, [r7, #4] - 802f55c: 681b ldr r3, [r3, #0] - 802f55e: 4a22 ldr r2, [pc, #136] ; (802f5e8 ) - 802f560: 4293 cmp r3, r2 - 802f562: d01d beq.n 802f5a0 - 802f564: 687b ldr r3, [r7, #4] - 802f566: 681b ldr r3, [r3, #0] - 802f568: 4a20 ldr r2, [pc, #128] ; (802f5ec ) - 802f56a: 4293 cmp r3, r2 - 802f56c: d018 beq.n 802f5a0 - 802f56e: 687b ldr r3, [r7, #4] - 802f570: 681b ldr r3, [r3, #0] - 802f572: 4a1f ldr r2, [pc, #124] ; (802f5f0 ) - 802f574: 4293 cmp r3, r2 - 802f576: d013 beq.n 802f5a0 - 802f578: 687b ldr r3, [r7, #4] - 802f57a: 681b ldr r3, [r3, #0] - 802f57c: 4a1d ldr r2, [pc, #116] ; (802f5f4 ) - 802f57e: 4293 cmp r3, r2 - 802f580: d00e beq.n 802f5a0 - 802f582: 687b ldr r3, [r7, #4] - 802f584: 681b ldr r3, [r3, #0] - 802f586: 4a1c ldr r2, [pc, #112] ; (802f5f8 ) - 802f588: 4293 cmp r3, r2 - 802f58a: d009 beq.n 802f5a0 - 802f58c: 687b ldr r3, [r7, #4] - 802f58e: 681b ldr r3, [r3, #0] - 802f590: 4a1a ldr r2, [pc, #104] ; (802f5fc ) - 802f592: 4293 cmp r3, r2 - 802f594: d004 beq.n 802f5a0 - 802f596: 687b ldr r3, [r7, #4] - 802f598: 681b ldr r3, [r3, #0] - 802f59a: 4a19 ldr r2, [pc, #100] ; (802f600 ) - 802f59c: 4293 cmp r3, r2 - 802f59e: d108 bne.n 802f5b2 - 802f5a0: 687b ldr r3, [r7, #4] - 802f5a2: 681b ldr r3, [r3, #0] - 802f5a4: 681a ldr r2, [r3, #0] - 802f5a6: 687b ldr r3, [r7, #4] - 802f5a8: 681b ldr r3, [r3, #0] - 802f5aa: f022 0201 bic.w r2, r2, #1 - 802f5ae: 601a str r2, [r3, #0] - 802f5b0: e178 b.n 802f8a4 - 802f5b2: 687b ldr r3, [r7, #4] - 802f5b4: 681b ldr r3, [r3, #0] - 802f5b6: 681a ldr r2, [r3, #0] + 802f540: 687b ldr r3, [r7, #4] + 802f542: 681b ldr r3, [r3, #0] + 802f544: 4a2f ldr r2, [pc, #188] ; (802f604 ) + 802f546: 4293 cmp r3, r2 + 802f548: d04a beq.n 802f5e0 + 802f54a: 687b ldr r3, [r7, #4] + 802f54c: 681b ldr r3, [r3, #0] + 802f54e: 4a2e ldr r2, [pc, #184] ; (802f608 ) + 802f550: 4293 cmp r3, r2 + 802f552: d045 beq.n 802f5e0 + 802f554: 687b ldr r3, [r7, #4] + 802f556: 681b ldr r3, [r3, #0] + 802f558: 4a2c ldr r2, [pc, #176] ; (802f60c ) + 802f55a: 4293 cmp r3, r2 + 802f55c: d040 beq.n 802f5e0 + 802f55e: 687b ldr r3, [r7, #4] + 802f560: 681b ldr r3, [r3, #0] + 802f562: 4a2b ldr r2, [pc, #172] ; (802f610 ) + 802f564: 4293 cmp r3, r2 + 802f566: d03b beq.n 802f5e0 + 802f568: 687b ldr r3, [r7, #4] + 802f56a: 681b ldr r3, [r3, #0] + 802f56c: 4a29 ldr r2, [pc, #164] ; (802f614 ) + 802f56e: 4293 cmp r3, r2 + 802f570: d036 beq.n 802f5e0 + 802f572: 687b ldr r3, [r7, #4] + 802f574: 681b ldr r3, [r3, #0] + 802f576: 4a28 ldr r2, [pc, #160] ; (802f618 ) + 802f578: 4293 cmp r3, r2 + 802f57a: d031 beq.n 802f5e0 + 802f57c: 687b ldr r3, [r7, #4] + 802f57e: 681b ldr r3, [r3, #0] + 802f580: 4a26 ldr r2, [pc, #152] ; (802f61c ) + 802f582: 4293 cmp r3, r2 + 802f584: d02c beq.n 802f5e0 + 802f586: 687b ldr r3, [r7, #4] + 802f588: 681b ldr r3, [r3, #0] + 802f58a: 4a25 ldr r2, [pc, #148] ; (802f620 ) + 802f58c: 4293 cmp r3, r2 + 802f58e: d027 beq.n 802f5e0 + 802f590: 687b ldr r3, [r7, #4] + 802f592: 681b ldr r3, [r3, #0] + 802f594: 4a23 ldr r2, [pc, #140] ; (802f624 ) + 802f596: 4293 cmp r3, r2 + 802f598: d022 beq.n 802f5e0 + 802f59a: 687b ldr r3, [r7, #4] + 802f59c: 681b ldr r3, [r3, #0] + 802f59e: 4a22 ldr r2, [pc, #136] ; (802f628 ) + 802f5a0: 4293 cmp r3, r2 + 802f5a2: d01d beq.n 802f5e0 + 802f5a4: 687b ldr r3, [r7, #4] + 802f5a6: 681b ldr r3, [r3, #0] + 802f5a8: 4a20 ldr r2, [pc, #128] ; (802f62c ) + 802f5aa: 4293 cmp r3, r2 + 802f5ac: d018 beq.n 802f5e0 + 802f5ae: 687b ldr r3, [r7, #4] + 802f5b0: 681b ldr r3, [r3, #0] + 802f5b2: 4a1f ldr r2, [pc, #124] ; (802f630 ) + 802f5b4: 4293 cmp r3, r2 + 802f5b6: d013 beq.n 802f5e0 802f5b8: 687b ldr r3, [r7, #4] 802f5ba: 681b ldr r3, [r3, #0] - 802f5bc: f022 0201 bic.w r2, r2, #1 - 802f5c0: 601a str r2, [r3, #0] - 802f5c2: e16f b.n 802f8a4 - 802f5c4: 40020010 .word 0x40020010 - 802f5c8: 40020028 .word 0x40020028 - 802f5cc: 40020040 .word 0x40020040 - 802f5d0: 40020058 .word 0x40020058 - 802f5d4: 40020070 .word 0x40020070 - 802f5d8: 40020088 .word 0x40020088 - 802f5dc: 400200a0 .word 0x400200a0 - 802f5e0: 400200b8 .word 0x400200b8 - 802f5e4: 40020410 .word 0x40020410 - 802f5e8: 40020428 .word 0x40020428 - 802f5ec: 40020440 .word 0x40020440 - 802f5f0: 40020458 .word 0x40020458 - 802f5f4: 40020470 .word 0x40020470 - 802f5f8: 40020488 .word 0x40020488 - 802f5fc: 400204a0 .word 0x400204a0 - 802f600: 400204b8 .word 0x400204b8 + 802f5bc: 4a1d ldr r2, [pc, #116] ; (802f634 ) + 802f5be: 4293 cmp r3, r2 + 802f5c0: d00e beq.n 802f5e0 + 802f5c2: 687b ldr r3, [r7, #4] + 802f5c4: 681b ldr r3, [r3, #0] + 802f5c6: 4a1c ldr r2, [pc, #112] ; (802f638 ) + 802f5c8: 4293 cmp r3, r2 + 802f5ca: d009 beq.n 802f5e0 + 802f5cc: 687b ldr r3, [r7, #4] + 802f5ce: 681b ldr r3, [r3, #0] + 802f5d0: 4a1a ldr r2, [pc, #104] ; (802f63c ) + 802f5d2: 4293 cmp r3, r2 + 802f5d4: d004 beq.n 802f5e0 + 802f5d6: 687b ldr r3, [r7, #4] + 802f5d8: 681b ldr r3, [r3, #0] + 802f5da: 4a19 ldr r2, [pc, #100] ; (802f640 ) + 802f5dc: 4293 cmp r3, r2 + 802f5de: d108 bne.n 802f5f2 + 802f5e0: 687b ldr r3, [r7, #4] + 802f5e2: 681b ldr r3, [r3, #0] + 802f5e4: 681a ldr r2, [r3, #0] + 802f5e6: 687b ldr r3, [r7, #4] + 802f5e8: 681b ldr r3, [r3, #0] + 802f5ea: f022 0201 bic.w r2, r2, #1 + 802f5ee: 601a str r2, [r3, #0] + 802f5f0: e178 b.n 802f8e4 + 802f5f2: 687b ldr r3, [r7, #4] + 802f5f4: 681b ldr r3, [r3, #0] + 802f5f6: 681a ldr r2, [r3, #0] + 802f5f8: 687b ldr r3, [r7, #4] + 802f5fa: 681b ldr r3, [r3, #0] + 802f5fc: f022 0201 bic.w r2, r2, #1 + 802f600: 601a str r2, [r3, #0] + 802f602: e16f b.n 802f8e4 + 802f604: 40020010 .word 0x40020010 + 802f608: 40020028 .word 0x40020028 + 802f60c: 40020040 .word 0x40020040 + 802f610: 40020058 .word 0x40020058 + 802f614: 40020070 .word 0x40020070 + 802f618: 40020088 .word 0x40020088 + 802f61c: 400200a0 .word 0x400200a0 + 802f620: 400200b8 .word 0x400200b8 + 802f624: 40020410 .word 0x40020410 + 802f628: 40020428 .word 0x40020428 + 802f62c: 40020440 .word 0x40020440 + 802f630: 40020458 .word 0x40020458 + 802f634: 40020470 .word 0x40020470 + 802f638: 40020488 .word 0x40020488 + 802f63c: 400204a0 .word 0x400204a0 + 802f640: 400204b8 .word 0x400204b8 } else /* BDMA channel */ { /* Disable DMA All Interrupts */ ((BDMA_Channel_TypeDef *)hdma->Instance)->CCR &= ~(BDMA_CCR_TCIE | BDMA_CCR_HTIE | BDMA_CCR_TEIE); - 802f604: 687b ldr r3, [r7, #4] - 802f606: 681b ldr r3, [r3, #0] - 802f608: 681a ldr r2, [r3, #0] - 802f60a: 687b ldr r3, [r7, #4] - 802f60c: 681b ldr r3, [r3, #0] - 802f60e: f022 020e bic.w r2, r2, #14 - 802f612: 601a str r2, [r3, #0] + 802f644: 687b ldr r3, [r7, #4] + 802f646: 681b ldr r3, [r3, #0] + 802f648: 681a ldr r2, [r3, #0] + 802f64a: 687b ldr r3, [r7, #4] + 802f64c: 681b ldr r3, [r3, #0] + 802f64e: f022 020e bic.w r2, r2, #14 + 802f652: 601a str r2, [r3, #0] /* Disable the channel */ __HAL_DMA_DISABLE(hdma); - 802f614: 687b ldr r3, [r7, #4] - 802f616: 681b ldr r3, [r3, #0] - 802f618: 4a6c ldr r2, [pc, #432] ; (802f7cc ) - 802f61a: 4293 cmp r3, r2 - 802f61c: d04a beq.n 802f6b4 - 802f61e: 687b ldr r3, [r7, #4] - 802f620: 681b ldr r3, [r3, #0] - 802f622: 4a6b ldr r2, [pc, #428] ; (802f7d0 ) - 802f624: 4293 cmp r3, r2 - 802f626: d045 beq.n 802f6b4 - 802f628: 687b ldr r3, [r7, #4] - 802f62a: 681b ldr r3, [r3, #0] - 802f62c: 4a69 ldr r2, [pc, #420] ; (802f7d4 ) - 802f62e: 4293 cmp r3, r2 - 802f630: d040 beq.n 802f6b4 - 802f632: 687b ldr r3, [r7, #4] - 802f634: 681b ldr r3, [r3, #0] - 802f636: 4a68 ldr r2, [pc, #416] ; (802f7d8 ) - 802f638: 4293 cmp r3, r2 - 802f63a: d03b beq.n 802f6b4 - 802f63c: 687b ldr r3, [r7, #4] - 802f63e: 681b ldr r3, [r3, #0] - 802f640: 4a66 ldr r2, [pc, #408] ; (802f7dc ) - 802f642: 4293 cmp r3, r2 - 802f644: d036 beq.n 802f6b4 - 802f646: 687b ldr r3, [r7, #4] - 802f648: 681b ldr r3, [r3, #0] - 802f64a: 4a65 ldr r2, [pc, #404] ; (802f7e0 ) - 802f64c: 4293 cmp r3, r2 - 802f64e: d031 beq.n 802f6b4 - 802f650: 687b ldr r3, [r7, #4] - 802f652: 681b ldr r3, [r3, #0] - 802f654: 4a63 ldr r2, [pc, #396] ; (802f7e4 ) - 802f656: 4293 cmp r3, r2 - 802f658: d02c beq.n 802f6b4 - 802f65a: 687b ldr r3, [r7, #4] - 802f65c: 681b ldr r3, [r3, #0] - 802f65e: 4a62 ldr r2, [pc, #392] ; (802f7e8 ) - 802f660: 4293 cmp r3, r2 - 802f662: d027 beq.n 802f6b4 - 802f664: 687b ldr r3, [r7, #4] - 802f666: 681b ldr r3, [r3, #0] - 802f668: 4a60 ldr r2, [pc, #384] ; (802f7ec ) - 802f66a: 4293 cmp r3, r2 - 802f66c: d022 beq.n 802f6b4 - 802f66e: 687b ldr r3, [r7, #4] - 802f670: 681b ldr r3, [r3, #0] - 802f672: 4a5f ldr r2, [pc, #380] ; (802f7f0 ) - 802f674: 4293 cmp r3, r2 - 802f676: d01d beq.n 802f6b4 - 802f678: 687b ldr r3, [r7, #4] - 802f67a: 681b ldr r3, [r3, #0] - 802f67c: 4a5d ldr r2, [pc, #372] ; (802f7f4 ) - 802f67e: 4293 cmp r3, r2 - 802f680: d018 beq.n 802f6b4 - 802f682: 687b ldr r3, [r7, #4] - 802f684: 681b ldr r3, [r3, #0] - 802f686: 4a5c ldr r2, [pc, #368] ; (802f7f8 ) - 802f688: 4293 cmp r3, r2 - 802f68a: d013 beq.n 802f6b4 - 802f68c: 687b ldr r3, [r7, #4] - 802f68e: 681b ldr r3, [r3, #0] - 802f690: 4a5a ldr r2, [pc, #360] ; (802f7fc ) - 802f692: 4293 cmp r3, r2 - 802f694: d00e beq.n 802f6b4 - 802f696: 687b ldr r3, [r7, #4] - 802f698: 681b ldr r3, [r3, #0] - 802f69a: 4a59 ldr r2, [pc, #356] ; (802f800 ) - 802f69c: 4293 cmp r3, r2 - 802f69e: d009 beq.n 802f6b4 - 802f6a0: 687b ldr r3, [r7, #4] - 802f6a2: 681b ldr r3, [r3, #0] - 802f6a4: 4a57 ldr r2, [pc, #348] ; (802f804 ) - 802f6a6: 4293 cmp r3, r2 - 802f6a8: d004 beq.n 802f6b4 - 802f6aa: 687b ldr r3, [r7, #4] - 802f6ac: 681b ldr r3, [r3, #0] - 802f6ae: 4a56 ldr r2, [pc, #344] ; (802f808 ) - 802f6b0: 4293 cmp r3, r2 - 802f6b2: d108 bne.n 802f6c6 - 802f6b4: 687b ldr r3, [r7, #4] - 802f6b6: 681b ldr r3, [r3, #0] - 802f6b8: 681a ldr r2, [r3, #0] - 802f6ba: 687b ldr r3, [r7, #4] - 802f6bc: 681b ldr r3, [r3, #0] - 802f6be: f022 0201 bic.w r2, r2, #1 - 802f6c2: 601a str r2, [r3, #0] - 802f6c4: e007 b.n 802f6d6 - 802f6c6: 687b ldr r3, [r7, #4] - 802f6c8: 681b ldr r3, [r3, #0] - 802f6ca: 681a ldr r2, [r3, #0] + 802f654: 687b ldr r3, [r7, #4] + 802f656: 681b ldr r3, [r3, #0] + 802f658: 4a6c ldr r2, [pc, #432] ; (802f80c ) + 802f65a: 4293 cmp r3, r2 + 802f65c: d04a beq.n 802f6f4 + 802f65e: 687b ldr r3, [r7, #4] + 802f660: 681b ldr r3, [r3, #0] + 802f662: 4a6b ldr r2, [pc, #428] ; (802f810 ) + 802f664: 4293 cmp r3, r2 + 802f666: d045 beq.n 802f6f4 + 802f668: 687b ldr r3, [r7, #4] + 802f66a: 681b ldr r3, [r3, #0] + 802f66c: 4a69 ldr r2, [pc, #420] ; (802f814 ) + 802f66e: 4293 cmp r3, r2 + 802f670: d040 beq.n 802f6f4 + 802f672: 687b ldr r3, [r7, #4] + 802f674: 681b ldr r3, [r3, #0] + 802f676: 4a68 ldr r2, [pc, #416] ; (802f818 ) + 802f678: 4293 cmp r3, r2 + 802f67a: d03b beq.n 802f6f4 + 802f67c: 687b ldr r3, [r7, #4] + 802f67e: 681b ldr r3, [r3, #0] + 802f680: 4a66 ldr r2, [pc, #408] ; (802f81c ) + 802f682: 4293 cmp r3, r2 + 802f684: d036 beq.n 802f6f4 + 802f686: 687b ldr r3, [r7, #4] + 802f688: 681b ldr r3, [r3, #0] + 802f68a: 4a65 ldr r2, [pc, #404] ; (802f820 ) + 802f68c: 4293 cmp r3, r2 + 802f68e: d031 beq.n 802f6f4 + 802f690: 687b ldr r3, [r7, #4] + 802f692: 681b ldr r3, [r3, #0] + 802f694: 4a63 ldr r2, [pc, #396] ; (802f824 ) + 802f696: 4293 cmp r3, r2 + 802f698: d02c beq.n 802f6f4 + 802f69a: 687b ldr r3, [r7, #4] + 802f69c: 681b ldr r3, [r3, #0] + 802f69e: 4a62 ldr r2, [pc, #392] ; (802f828 ) + 802f6a0: 4293 cmp r3, r2 + 802f6a2: d027 beq.n 802f6f4 + 802f6a4: 687b ldr r3, [r7, #4] + 802f6a6: 681b ldr r3, [r3, #0] + 802f6a8: 4a60 ldr r2, [pc, #384] ; (802f82c ) + 802f6aa: 4293 cmp r3, r2 + 802f6ac: d022 beq.n 802f6f4 + 802f6ae: 687b ldr r3, [r7, #4] + 802f6b0: 681b ldr r3, [r3, #0] + 802f6b2: 4a5f ldr r2, [pc, #380] ; (802f830 ) + 802f6b4: 4293 cmp r3, r2 + 802f6b6: d01d beq.n 802f6f4 + 802f6b8: 687b ldr r3, [r7, #4] + 802f6ba: 681b ldr r3, [r3, #0] + 802f6bc: 4a5d ldr r2, [pc, #372] ; (802f834 ) + 802f6be: 4293 cmp r3, r2 + 802f6c0: d018 beq.n 802f6f4 + 802f6c2: 687b ldr r3, [r7, #4] + 802f6c4: 681b ldr r3, [r3, #0] + 802f6c6: 4a5c ldr r2, [pc, #368] ; (802f838 ) + 802f6c8: 4293 cmp r3, r2 + 802f6ca: d013 beq.n 802f6f4 802f6cc: 687b ldr r3, [r7, #4] 802f6ce: 681b ldr r3, [r3, #0] - 802f6d0: f022 0201 bic.w r2, r2, #1 - 802f6d4: 601a str r2, [r3, #0] - - if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ + 802f6d0: 4a5a ldr r2, [pc, #360] ; (802f83c ) + 802f6d2: 4293 cmp r3, r2 + 802f6d4: d00e beq.n 802f6f4 802f6d6: 687b ldr r3, [r7, #4] 802f6d8: 681b ldr r3, [r3, #0] - 802f6da: 4a3c ldr r2, [pc, #240] ; (802f7cc ) + 802f6da: 4a59 ldr r2, [pc, #356] ; (802f840 ) 802f6dc: 4293 cmp r3, r2 - 802f6de: d072 beq.n 802f7c6 + 802f6de: d009 beq.n 802f6f4 802f6e0: 687b ldr r3, [r7, #4] 802f6e2: 681b ldr r3, [r3, #0] - 802f6e4: 4a3a ldr r2, [pc, #232] ; (802f7d0 ) + 802f6e4: 4a57 ldr r2, [pc, #348] ; (802f844 ) 802f6e6: 4293 cmp r3, r2 - 802f6e8: d06d beq.n 802f7c6 + 802f6e8: d004 beq.n 802f6f4 802f6ea: 687b ldr r3, [r7, #4] 802f6ec: 681b ldr r3, [r3, #0] - 802f6ee: 4a39 ldr r2, [pc, #228] ; (802f7d4 ) + 802f6ee: 4a56 ldr r2, [pc, #344] ; (802f848 ) 802f6f0: 4293 cmp r3, r2 - 802f6f2: d068 beq.n 802f7c6 + 802f6f2: d108 bne.n 802f706 802f6f4: 687b ldr r3, [r7, #4] 802f6f6: 681b ldr r3, [r3, #0] - 802f6f8: 4a37 ldr r2, [pc, #220] ; (802f7d8 ) - 802f6fa: 4293 cmp r3, r2 - 802f6fc: d063 beq.n 802f7c6 - 802f6fe: 687b ldr r3, [r7, #4] - 802f700: 681b ldr r3, [r3, #0] - 802f702: 4a36 ldr r2, [pc, #216] ; (802f7dc ) - 802f704: 4293 cmp r3, r2 - 802f706: d05e beq.n 802f7c6 - 802f708: 687b ldr r3, [r7, #4] - 802f70a: 681b ldr r3, [r3, #0] - 802f70c: 4a34 ldr r2, [pc, #208] ; (802f7e0 ) - 802f70e: 4293 cmp r3, r2 - 802f710: d059 beq.n 802f7c6 - 802f712: 687b ldr r3, [r7, #4] - 802f714: 681b ldr r3, [r3, #0] - 802f716: 4a33 ldr r2, [pc, #204] ; (802f7e4 ) - 802f718: 4293 cmp r3, r2 - 802f71a: d054 beq.n 802f7c6 - 802f71c: 687b ldr r3, [r7, #4] - 802f71e: 681b ldr r3, [r3, #0] - 802f720: 4a31 ldr r2, [pc, #196] ; (802f7e8 ) - 802f722: 4293 cmp r3, r2 - 802f724: d04f beq.n 802f7c6 - 802f726: 687b ldr r3, [r7, #4] - 802f728: 681b ldr r3, [r3, #0] - 802f72a: 4a30 ldr r2, [pc, #192] ; (802f7ec ) - 802f72c: 4293 cmp r3, r2 - 802f72e: d04a beq.n 802f7c6 - 802f730: 687b ldr r3, [r7, #4] - 802f732: 681b ldr r3, [r3, #0] - 802f734: 4a2e ldr r2, [pc, #184] ; (802f7f0 ) - 802f736: 4293 cmp r3, r2 - 802f738: d045 beq.n 802f7c6 - 802f73a: 687b ldr r3, [r7, #4] - 802f73c: 681b ldr r3, [r3, #0] - 802f73e: 4a2d ldr r2, [pc, #180] ; (802f7f4 ) - 802f740: 4293 cmp r3, r2 - 802f742: d040 beq.n 802f7c6 - 802f744: 687b ldr r3, [r7, #4] - 802f746: 681b ldr r3, [r3, #0] - 802f748: 4a2b ldr r2, [pc, #172] ; (802f7f8 ) - 802f74a: 4293 cmp r3, r2 - 802f74c: d03b beq.n 802f7c6 - 802f74e: 687b ldr r3, [r7, #4] - 802f750: 681b ldr r3, [r3, #0] - 802f752: 4a2a ldr r2, [pc, #168] ; (802f7fc ) - 802f754: 4293 cmp r3, r2 - 802f756: d036 beq.n 802f7c6 - 802f758: 687b ldr r3, [r7, #4] - 802f75a: 681b ldr r3, [r3, #0] - 802f75c: 4a28 ldr r2, [pc, #160] ; (802f800 ) - 802f75e: 4293 cmp r3, r2 - 802f760: d031 beq.n 802f7c6 - 802f762: 687b ldr r3, [r7, #4] - 802f764: 681b ldr r3, [r3, #0] - 802f766: 4a27 ldr r2, [pc, #156] ; (802f804 ) - 802f768: 4293 cmp r3, r2 - 802f76a: d02c beq.n 802f7c6 - 802f76c: 687b ldr r3, [r7, #4] - 802f76e: 681b ldr r3, [r3, #0] - 802f770: 4a25 ldr r2, [pc, #148] ; (802f808 ) - 802f772: 4293 cmp r3, r2 - 802f774: d027 beq.n 802f7c6 - 802f776: 687b ldr r3, [r7, #4] - 802f778: 681b ldr r3, [r3, #0] - 802f77a: 4a24 ldr r2, [pc, #144] ; (802f80c ) - 802f77c: 4293 cmp r3, r2 - 802f77e: d022 beq.n 802f7c6 - 802f780: 687b ldr r3, [r7, #4] - 802f782: 681b ldr r3, [r3, #0] - 802f784: 4a22 ldr r2, [pc, #136] ; (802f810 ) - 802f786: 4293 cmp r3, r2 - 802f788: d01d beq.n 802f7c6 - 802f78a: 687b ldr r3, [r7, #4] - 802f78c: 681b ldr r3, [r3, #0] - 802f78e: 4a21 ldr r2, [pc, #132] ; (802f814 ) - 802f790: 4293 cmp r3, r2 - 802f792: d018 beq.n 802f7c6 - 802f794: 687b ldr r3, [r7, #4] - 802f796: 681b ldr r3, [r3, #0] - 802f798: 4a1f ldr r2, [pc, #124] ; (802f818 ) - 802f79a: 4293 cmp r3, r2 - 802f79c: d013 beq.n 802f7c6 - 802f79e: 687b ldr r3, [r7, #4] - 802f7a0: 681b ldr r3, [r3, #0] - 802f7a2: 4a1e ldr r2, [pc, #120] ; (802f81c ) - 802f7a4: 4293 cmp r3, r2 - 802f7a6: d00e beq.n 802f7c6 - 802f7a8: 687b ldr r3, [r7, #4] - 802f7aa: 681b ldr r3, [r3, #0] - 802f7ac: 4a1c ldr r2, [pc, #112] ; (802f820 ) - 802f7ae: 4293 cmp r3, r2 - 802f7b0: d009 beq.n 802f7c6 - 802f7b2: 687b ldr r3, [r7, #4] - 802f7b4: 681b ldr r3, [r3, #0] - 802f7b6: 4a1b ldr r2, [pc, #108] ; (802f824 ) - 802f7b8: 4293 cmp r3, r2 - 802f7ba: d004 beq.n 802f7c6 - 802f7bc: 687b ldr r3, [r7, #4] - 802f7be: 681b ldr r3, [r3, #0] - 802f7c0: 4a19 ldr r2, [pc, #100] ; (802f828 ) - 802f7c2: 4293 cmp r3, r2 - 802f7c4: d132 bne.n 802f82c - 802f7c6: 2301 movs r3, #1 - 802f7c8: e031 b.n 802f82e - 802f7ca: bf00 nop - 802f7cc: 40020010 .word 0x40020010 - 802f7d0: 40020028 .word 0x40020028 - 802f7d4: 40020040 .word 0x40020040 - 802f7d8: 40020058 .word 0x40020058 - 802f7dc: 40020070 .word 0x40020070 - 802f7e0: 40020088 .word 0x40020088 - 802f7e4: 400200a0 .word 0x400200a0 - 802f7e8: 400200b8 .word 0x400200b8 - 802f7ec: 40020410 .word 0x40020410 - 802f7f0: 40020428 .word 0x40020428 - 802f7f4: 40020440 .word 0x40020440 - 802f7f8: 40020458 .word 0x40020458 - 802f7fc: 40020470 .word 0x40020470 - 802f800: 40020488 .word 0x40020488 - 802f804: 400204a0 .word 0x400204a0 - 802f808: 400204b8 .word 0x400204b8 - 802f80c: 58025408 .word 0x58025408 - 802f810: 5802541c .word 0x5802541c - 802f814: 58025430 .word 0x58025430 - 802f818: 58025444 .word 0x58025444 - 802f81c: 58025458 .word 0x58025458 - 802f820: 5802546c .word 0x5802546c - 802f824: 58025480 .word 0x58025480 - 802f828: 58025494 .word 0x58025494 - 802f82c: 2300 movs r3, #0 - 802f82e: 2b00 cmp r3, #0 - 802f830: d028 beq.n 802f884 + 802f6f8: 681a ldr r2, [r3, #0] + 802f6fa: 687b ldr r3, [r7, #4] + 802f6fc: 681b ldr r3, [r3, #0] + 802f6fe: f022 0201 bic.w r2, r2, #1 + 802f702: 601a str r2, [r3, #0] + 802f704: e007 b.n 802f716 + 802f706: 687b ldr r3, [r7, #4] + 802f708: 681b ldr r3, [r3, #0] + 802f70a: 681a ldr r2, [r3, #0] + 802f70c: 687b ldr r3, [r7, #4] + 802f70e: 681b ldr r3, [r3, #0] + 802f710: f022 0201 bic.w r2, r2, #1 + 802f714: 601a str r2, [r3, #0] + + if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ + 802f716: 687b ldr r3, [r7, #4] + 802f718: 681b ldr r3, [r3, #0] + 802f71a: 4a3c ldr r2, [pc, #240] ; (802f80c ) + 802f71c: 4293 cmp r3, r2 + 802f71e: d072 beq.n 802f806 + 802f720: 687b ldr r3, [r7, #4] + 802f722: 681b ldr r3, [r3, #0] + 802f724: 4a3a ldr r2, [pc, #232] ; (802f810 ) + 802f726: 4293 cmp r3, r2 + 802f728: d06d beq.n 802f806 + 802f72a: 687b ldr r3, [r7, #4] + 802f72c: 681b ldr r3, [r3, #0] + 802f72e: 4a39 ldr r2, [pc, #228] ; (802f814 ) + 802f730: 4293 cmp r3, r2 + 802f732: d068 beq.n 802f806 + 802f734: 687b ldr r3, [r7, #4] + 802f736: 681b ldr r3, [r3, #0] + 802f738: 4a37 ldr r2, [pc, #220] ; (802f818 ) + 802f73a: 4293 cmp r3, r2 + 802f73c: d063 beq.n 802f806 + 802f73e: 687b ldr r3, [r7, #4] + 802f740: 681b ldr r3, [r3, #0] + 802f742: 4a36 ldr r2, [pc, #216] ; (802f81c ) + 802f744: 4293 cmp r3, r2 + 802f746: d05e beq.n 802f806 + 802f748: 687b ldr r3, [r7, #4] + 802f74a: 681b ldr r3, [r3, #0] + 802f74c: 4a34 ldr r2, [pc, #208] ; (802f820 ) + 802f74e: 4293 cmp r3, r2 + 802f750: d059 beq.n 802f806 + 802f752: 687b ldr r3, [r7, #4] + 802f754: 681b ldr r3, [r3, #0] + 802f756: 4a33 ldr r2, [pc, #204] ; (802f824 ) + 802f758: 4293 cmp r3, r2 + 802f75a: d054 beq.n 802f806 + 802f75c: 687b ldr r3, [r7, #4] + 802f75e: 681b ldr r3, [r3, #0] + 802f760: 4a31 ldr r2, [pc, #196] ; (802f828 ) + 802f762: 4293 cmp r3, r2 + 802f764: d04f beq.n 802f806 + 802f766: 687b ldr r3, [r7, #4] + 802f768: 681b ldr r3, [r3, #0] + 802f76a: 4a30 ldr r2, [pc, #192] ; (802f82c ) + 802f76c: 4293 cmp r3, r2 + 802f76e: d04a beq.n 802f806 + 802f770: 687b ldr r3, [r7, #4] + 802f772: 681b ldr r3, [r3, #0] + 802f774: 4a2e ldr r2, [pc, #184] ; (802f830 ) + 802f776: 4293 cmp r3, r2 + 802f778: d045 beq.n 802f806 + 802f77a: 687b ldr r3, [r7, #4] + 802f77c: 681b ldr r3, [r3, #0] + 802f77e: 4a2d ldr r2, [pc, #180] ; (802f834 ) + 802f780: 4293 cmp r3, r2 + 802f782: d040 beq.n 802f806 + 802f784: 687b ldr r3, [r7, #4] + 802f786: 681b ldr r3, [r3, #0] + 802f788: 4a2b ldr r2, [pc, #172] ; (802f838 ) + 802f78a: 4293 cmp r3, r2 + 802f78c: d03b beq.n 802f806 + 802f78e: 687b ldr r3, [r7, #4] + 802f790: 681b ldr r3, [r3, #0] + 802f792: 4a2a ldr r2, [pc, #168] ; (802f83c ) + 802f794: 4293 cmp r3, r2 + 802f796: d036 beq.n 802f806 + 802f798: 687b ldr r3, [r7, #4] + 802f79a: 681b ldr r3, [r3, #0] + 802f79c: 4a28 ldr r2, [pc, #160] ; (802f840 ) + 802f79e: 4293 cmp r3, r2 + 802f7a0: d031 beq.n 802f806 + 802f7a2: 687b ldr r3, [r7, #4] + 802f7a4: 681b ldr r3, [r3, #0] + 802f7a6: 4a27 ldr r2, [pc, #156] ; (802f844 ) + 802f7a8: 4293 cmp r3, r2 + 802f7aa: d02c beq.n 802f806 + 802f7ac: 687b ldr r3, [r7, #4] + 802f7ae: 681b ldr r3, [r3, #0] + 802f7b0: 4a25 ldr r2, [pc, #148] ; (802f848 ) + 802f7b2: 4293 cmp r3, r2 + 802f7b4: d027 beq.n 802f806 + 802f7b6: 687b ldr r3, [r7, #4] + 802f7b8: 681b ldr r3, [r3, #0] + 802f7ba: 4a24 ldr r2, [pc, #144] ; (802f84c ) + 802f7bc: 4293 cmp r3, r2 + 802f7be: d022 beq.n 802f806 + 802f7c0: 687b ldr r3, [r7, #4] + 802f7c2: 681b ldr r3, [r3, #0] + 802f7c4: 4a22 ldr r2, [pc, #136] ; (802f850 ) + 802f7c6: 4293 cmp r3, r2 + 802f7c8: d01d beq.n 802f806 + 802f7ca: 687b ldr r3, [r7, #4] + 802f7cc: 681b ldr r3, [r3, #0] + 802f7ce: 4a21 ldr r2, [pc, #132] ; (802f854 ) + 802f7d0: 4293 cmp r3, r2 + 802f7d2: d018 beq.n 802f806 + 802f7d4: 687b ldr r3, [r7, #4] + 802f7d6: 681b ldr r3, [r3, #0] + 802f7d8: 4a1f ldr r2, [pc, #124] ; (802f858 ) + 802f7da: 4293 cmp r3, r2 + 802f7dc: d013 beq.n 802f806 + 802f7de: 687b ldr r3, [r7, #4] + 802f7e0: 681b ldr r3, [r3, #0] + 802f7e2: 4a1e ldr r2, [pc, #120] ; (802f85c ) + 802f7e4: 4293 cmp r3, r2 + 802f7e6: d00e beq.n 802f806 + 802f7e8: 687b ldr r3, [r7, #4] + 802f7ea: 681b ldr r3, [r3, #0] + 802f7ec: 4a1c ldr r2, [pc, #112] ; (802f860 ) + 802f7ee: 4293 cmp r3, r2 + 802f7f0: d009 beq.n 802f806 + 802f7f2: 687b ldr r3, [r7, #4] + 802f7f4: 681b ldr r3, [r3, #0] + 802f7f6: 4a1b ldr r2, [pc, #108] ; (802f864 ) + 802f7f8: 4293 cmp r3, r2 + 802f7fa: d004 beq.n 802f806 + 802f7fc: 687b ldr r3, [r7, #4] + 802f7fe: 681b ldr r3, [r3, #0] + 802f800: 4a19 ldr r2, [pc, #100] ; (802f868 ) + 802f802: 4293 cmp r3, r2 + 802f804: d132 bne.n 802f86c + 802f806: 2301 movs r3, #1 + 802f808: e031 b.n 802f86e + 802f80a: bf00 nop + 802f80c: 40020010 .word 0x40020010 + 802f810: 40020028 .word 0x40020028 + 802f814: 40020040 .word 0x40020040 + 802f818: 40020058 .word 0x40020058 + 802f81c: 40020070 .word 0x40020070 + 802f820: 40020088 .word 0x40020088 + 802f824: 400200a0 .word 0x400200a0 + 802f828: 400200b8 .word 0x400200b8 + 802f82c: 40020410 .word 0x40020410 + 802f830: 40020428 .word 0x40020428 + 802f834: 40020440 .word 0x40020440 + 802f838: 40020458 .word 0x40020458 + 802f83c: 40020470 .word 0x40020470 + 802f840: 40020488 .word 0x40020488 + 802f844: 400204a0 .word 0x400204a0 + 802f848: 400204b8 .word 0x400204b8 + 802f84c: 58025408 .word 0x58025408 + 802f850: 5802541c .word 0x5802541c + 802f854: 58025430 .word 0x58025430 + 802f858: 58025444 .word 0x58025444 + 802f85c: 58025458 .word 0x58025458 + 802f860: 5802546c .word 0x5802546c + 802f864: 58025480 .word 0x58025480 + 802f868: 58025494 .word 0x58025494 + 802f86c: 2300 movs r3, #0 + 802f86e: 2b00 cmp r3, #0 + 802f870: d028 beq.n 802f8c4 { /* disable the DMAMUX sync overrun IT */ hdma->DMAmuxChannel->CCR &= ~DMAMUX_CxCR_SOIE; - 802f832: 687b ldr r3, [r7, #4] - 802f834: 6e1b ldr r3, [r3, #96] ; 0x60 - 802f836: 681a ldr r2, [r3, #0] - 802f838: 687b ldr r3, [r7, #4] - 802f83a: 6e1b ldr r3, [r3, #96] ; 0x60 - 802f83c: f422 7280 bic.w r2, r2, #256 ; 0x100 - 802f840: 601a str r2, [r3, #0] + 802f872: 687b ldr r3, [r7, #4] + 802f874: 6e1b ldr r3, [r3, #96] ; 0x60 + 802f876: 681a ldr r2, [r3, #0] + 802f878: 687b ldr r3, [r7, #4] + 802f87a: 6e1b ldr r3, [r3, #96] ; 0x60 + 802f87c: f422 7280 bic.w r2, r2, #256 ; 0x100 + 802f880: 601a str r2, [r3, #0] /* Clear all flags */ regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress; - 802f842: 687b ldr r3, [r7, #4] - 802f844: 6d9b ldr r3, [r3, #88] ; 0x58 - 802f846: 60fb str r3, [r7, #12] + 802f882: 687b ldr r3, [r7, #4] + 802f884: 6d9b ldr r3, [r3, #88] ; 0x58 + 802f886: 60fb str r3, [r7, #12] regs_bdma->IFCR = ((BDMA_IFCR_CGIF0) << (hdma->StreamIndex & 0x1FU)); - 802f848: 687b ldr r3, [r7, #4] - 802f84a: 6ddb ldr r3, [r3, #92] ; 0x5c - 802f84c: f003 031f and.w r3, r3, #31 - 802f850: 2201 movs r2, #1 - 802f852: 409a lsls r2, r3 - 802f854: 68fb ldr r3, [r7, #12] - 802f856: 605a str r2, [r3, #4] + 802f888: 687b ldr r3, [r7, #4] + 802f88a: 6ddb ldr r3, [r3, #92] ; 0x5c + 802f88c: f003 031f and.w r3, r3, #31 + 802f890: 2201 movs r2, #1 + 802f892: 409a lsls r2, r3 + 802f894: 68fb ldr r3, [r7, #12] + 802f896: 605a str r2, [r3, #4] /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 802f858: 687b ldr r3, [r7, #4] - 802f85a: 6e5b ldr r3, [r3, #100] ; 0x64 - 802f85c: 687a ldr r2, [r7, #4] - 802f85e: 6e92 ldr r2, [r2, #104] ; 0x68 - 802f860: 605a str r2, [r3, #4] + 802f898: 687b ldr r3, [r7, #4] + 802f89a: 6e5b ldr r3, [r3, #100] ; 0x64 + 802f89c: 687a ldr r2, [r7, #4] + 802f89e: 6e92 ldr r2, [r2, #104] ; 0x68 + 802f8a0: 605a str r2, [r3, #4] if(hdma->DMAmuxRequestGen != 0U) - 802f862: 687b ldr r3, [r7, #4] - 802f864: 6edb ldr r3, [r3, #108] ; 0x6c - 802f866: 2b00 cmp r3, #0 - 802f868: d00c beq.n 802f884 + 802f8a2: 687b ldr r3, [r7, #4] + 802f8a4: 6edb ldr r3, [r3, #108] ; 0x6c + 802f8a6: 2b00 cmp r3, #0 + 802f8a8: d00c beq.n 802f8c4 { /* if using DMAMUX request generator, disable the DMAMUX request generator overrun IT*/ /* disable the request gen overrun IT */ hdma->DMAmuxRequestGen->RGCR &= ~DMAMUX_RGxCR_OIE; - 802f86a: 687b ldr r3, [r7, #4] - 802f86c: 6edb ldr r3, [r3, #108] ; 0x6c - 802f86e: 681a ldr r2, [r3, #0] - 802f870: 687b ldr r3, [r7, #4] - 802f872: 6edb ldr r3, [r3, #108] ; 0x6c - 802f874: f422 7280 bic.w r2, r2, #256 ; 0x100 - 802f878: 601a str r2, [r3, #0] + 802f8aa: 687b ldr r3, [r7, #4] + 802f8ac: 6edb ldr r3, [r3, #108] ; 0x6c + 802f8ae: 681a ldr r2, [r3, #0] + 802f8b0: 687b ldr r3, [r7, #4] + 802f8b2: 6edb ldr r3, [r3, #108] ; 0x6c + 802f8b4: f422 7280 bic.w r2, r2, #256 ; 0x100 + 802f8b8: 601a str r2, [r3, #0] /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 802f87a: 687b ldr r3, [r7, #4] - 802f87c: 6f1b ldr r3, [r3, #112] ; 0x70 - 802f87e: 687a ldr r2, [r7, #4] - 802f880: 6f52 ldr r2, [r2, #116] ; 0x74 - 802f882: 605a str r2, [r3, #4] + 802f8ba: 687b ldr r3, [r7, #4] + 802f8bc: 6f1b ldr r3, [r3, #112] ; 0x70 + 802f8be: 687a ldr r2, [r7, #4] + 802f8c0: 6f52 ldr r2, [r2, #116] ; 0x74 + 802f8c2: 605a str r2, [r3, #4] } } /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 802f884: 687b ldr r3, [r7, #4] - 802f886: 2201 movs r2, #1 - 802f888: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 802f8c4: 687b ldr r3, [r7, #4] + 802f8c6: 2201 movs r2, #1 + 802f8c8: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 802f88c: 687b ldr r3, [r7, #4] - 802f88e: 2200 movs r2, #0 - 802f890: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 802f8cc: 687b ldr r3, [r7, #4] + 802f8ce: 2200 movs r2, #0 + 802f8d0: f883 2034 strb.w r2, [r3, #52] ; 0x34 /* Call User Abort callback */ if(hdma->XferAbortCallback != NULL) - 802f894: 687b ldr r3, [r7, #4] - 802f896: 6d1b ldr r3, [r3, #80] ; 0x50 - 802f898: 2b00 cmp r3, #0 - 802f89a: d003 beq.n 802f8a4 + 802f8d4: 687b ldr r3, [r7, #4] + 802f8d6: 6d1b ldr r3, [r3, #80] ; 0x50 + 802f8d8: 2b00 cmp r3, #0 + 802f8da: d003 beq.n 802f8e4 { hdma->XferAbortCallback(hdma); - 802f89c: 687b ldr r3, [r7, #4] - 802f89e: 6d1b ldr r3, [r3, #80] ; 0x50 - 802f8a0: 6878 ldr r0, [r7, #4] - 802f8a2: 4798 blx r3 + 802f8dc: 687b ldr r3, [r7, #4] + 802f8de: 6d1b ldr r3, [r3, #80] ; 0x50 + 802f8e0: 6878 ldr r0, [r7, #4] + 802f8e2: 4798 blx r3 } } } return HAL_OK; - 802f8a4: 2300 movs r3, #0 + 802f8e4: 2300 movs r3, #0 } - 802f8a6: 4618 mov r0, r3 - 802f8a8: 3710 adds r7, #16 - 802f8aa: 46bd mov sp, r7 - 802f8ac: bd80 pop {r7, pc} - 802f8ae: bf00 nop + 802f8e6: 4618 mov r0, r3 + 802f8e8: 3710 adds r7, #16 + 802f8ea: 46bd mov sp, r7 + 802f8ec: bd80 pop {r7, pc} + 802f8ee: bf00 nop -0802f8b0 : +0802f8f0 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval None */ void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma) { - 802f8b0: b580 push {r7, lr} - 802f8b2: b08a sub sp, #40 ; 0x28 - 802f8b4: af00 add r7, sp, #0 - 802f8b6: 6078 str r0, [r7, #4] + 802f8f0: b580 push {r7, lr} + 802f8f2: b08a sub sp, #40 ; 0x28 + 802f8f4: af00 add r7, sp, #0 + 802f8f6: 6078 str r0, [r7, #4] uint32_t tmpisr_dma, tmpisr_bdma; uint32_t ccr_reg; __IO uint32_t count = 0U; - 802f8b8: 2300 movs r3, #0 - 802f8ba: 60fb str r3, [r7, #12] + 802f8f8: 2300 movs r3, #0 + 802f8fa: 60fb str r3, [r7, #12] uint32_t timeout = SystemCoreClock / 9600U; - 802f8bc: 4b67 ldr r3, [pc, #412] ; (802fa5c ) - 802f8be: 681b ldr r3, [r3, #0] - 802f8c0: 4a67 ldr r2, [pc, #412] ; (802fa60 ) - 802f8c2: fba2 2303 umull r2, r3, r2, r3 - 802f8c6: 0a9b lsrs r3, r3, #10 - 802f8c8: 627b str r3, [r7, #36] ; 0x24 + 802f8fc: 4b67 ldr r3, [pc, #412] ; (802fa9c ) + 802f8fe: 681b ldr r3, [r3, #0] + 802f900: 4a67 ldr r2, [pc, #412] ; (802faa0 ) + 802f902: fba2 2303 umull r2, r3, r2, r3 + 802f906: 0a9b lsrs r3, r3, #10 + 802f908: 627b str r3, [r7, #36] ; 0x24 /* calculate DMA base and stream number */ DMA_Base_Registers *regs_dma = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 802f8ca: 687b ldr r3, [r7, #4] - 802f8cc: 6d9b ldr r3, [r3, #88] ; 0x58 - 802f8ce: 623b str r3, [r7, #32] + 802f90a: 687b ldr r3, [r7, #4] + 802f90c: 6d9b ldr r3, [r3, #88] ; 0x58 + 802f90e: 623b str r3, [r7, #32] BDMA_Base_Registers *regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress; - 802f8d0: 687b ldr r3, [r7, #4] - 802f8d2: 6d9b ldr r3, [r3, #88] ; 0x58 - 802f8d4: 61fb str r3, [r7, #28] + 802f910: 687b ldr r3, [r7, #4] + 802f912: 6d9b ldr r3, [r3, #88] ; 0x58 + 802f914: 61fb str r3, [r7, #28] tmpisr_dma = regs_dma->ISR; - 802f8d6: 6a3b ldr r3, [r7, #32] - 802f8d8: 681b ldr r3, [r3, #0] - 802f8da: 61bb str r3, [r7, #24] + 802f916: 6a3b ldr r3, [r7, #32] + 802f918: 681b ldr r3, [r3, #0] + 802f91a: 61bb str r3, [r7, #24] tmpisr_bdma = regs_bdma->ISR; - 802f8dc: 69fb ldr r3, [r7, #28] - 802f8de: 681b ldr r3, [r3, #0] - 802f8e0: 617b str r3, [r7, #20] + 802f91c: 69fb ldr r3, [r7, #28] + 802f91e: 681b ldr r3, [r3, #0] + 802f920: 617b str r3, [r7, #20] if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 802f8e2: 687b ldr r3, [r7, #4] - 802f8e4: 681b ldr r3, [r3, #0] - 802f8e6: 4a5f ldr r2, [pc, #380] ; (802fa64 ) - 802f8e8: 4293 cmp r3, r2 - 802f8ea: d04a beq.n 802f982 - 802f8ec: 687b ldr r3, [r7, #4] - 802f8ee: 681b ldr r3, [r3, #0] - 802f8f0: 4a5d ldr r2, [pc, #372] ; (802fa68 ) - 802f8f2: 4293 cmp r3, r2 - 802f8f4: d045 beq.n 802f982 - 802f8f6: 687b ldr r3, [r7, #4] - 802f8f8: 681b ldr r3, [r3, #0] - 802f8fa: 4a5c ldr r2, [pc, #368] ; (802fa6c ) - 802f8fc: 4293 cmp r3, r2 - 802f8fe: d040 beq.n 802f982 - 802f900: 687b ldr r3, [r7, #4] - 802f902: 681b ldr r3, [r3, #0] - 802f904: 4a5a ldr r2, [pc, #360] ; (802fa70 ) - 802f906: 4293 cmp r3, r2 - 802f908: d03b beq.n 802f982 - 802f90a: 687b ldr r3, [r7, #4] - 802f90c: 681b ldr r3, [r3, #0] - 802f90e: 4a59 ldr r2, [pc, #356] ; (802fa74 ) - 802f910: 4293 cmp r3, r2 - 802f912: d036 beq.n 802f982 - 802f914: 687b ldr r3, [r7, #4] - 802f916: 681b ldr r3, [r3, #0] - 802f918: 4a57 ldr r2, [pc, #348] ; (802fa78 ) - 802f91a: 4293 cmp r3, r2 - 802f91c: d031 beq.n 802f982 - 802f91e: 687b ldr r3, [r7, #4] - 802f920: 681b ldr r3, [r3, #0] - 802f922: 4a56 ldr r2, [pc, #344] ; (802fa7c ) - 802f924: 4293 cmp r3, r2 - 802f926: d02c beq.n 802f982 - 802f928: 687b ldr r3, [r7, #4] - 802f92a: 681b ldr r3, [r3, #0] - 802f92c: 4a54 ldr r2, [pc, #336] ; (802fa80 ) - 802f92e: 4293 cmp r3, r2 - 802f930: d027 beq.n 802f982 - 802f932: 687b ldr r3, [r7, #4] - 802f934: 681b ldr r3, [r3, #0] - 802f936: 4a53 ldr r2, [pc, #332] ; (802fa84 ) - 802f938: 4293 cmp r3, r2 - 802f93a: d022 beq.n 802f982 - 802f93c: 687b ldr r3, [r7, #4] - 802f93e: 681b ldr r3, [r3, #0] - 802f940: 4a51 ldr r2, [pc, #324] ; (802fa88 ) - 802f942: 4293 cmp r3, r2 - 802f944: d01d beq.n 802f982 - 802f946: 687b ldr r3, [r7, #4] - 802f948: 681b ldr r3, [r3, #0] - 802f94a: 4a50 ldr r2, [pc, #320] ; (802fa8c ) - 802f94c: 4293 cmp r3, r2 - 802f94e: d018 beq.n 802f982 - 802f950: 687b ldr r3, [r7, #4] - 802f952: 681b ldr r3, [r3, #0] - 802f954: 4a4e ldr r2, [pc, #312] ; (802fa90 ) - 802f956: 4293 cmp r3, r2 - 802f958: d013 beq.n 802f982 - 802f95a: 687b ldr r3, [r7, #4] - 802f95c: 681b ldr r3, [r3, #0] - 802f95e: 4a4d ldr r2, [pc, #308] ; (802fa94 ) - 802f960: 4293 cmp r3, r2 - 802f962: d00e beq.n 802f982 - 802f964: 687b ldr r3, [r7, #4] - 802f966: 681b ldr r3, [r3, #0] - 802f968: 4a4b ldr r2, [pc, #300] ; (802fa98 ) - 802f96a: 4293 cmp r3, r2 - 802f96c: d009 beq.n 802f982 - 802f96e: 687b ldr r3, [r7, #4] - 802f970: 681b ldr r3, [r3, #0] - 802f972: 4a4a ldr r2, [pc, #296] ; (802fa9c ) - 802f974: 4293 cmp r3, r2 - 802f976: d004 beq.n 802f982 - 802f978: 687b ldr r3, [r7, #4] - 802f97a: 681b ldr r3, [r3, #0] - 802f97c: 4a48 ldr r2, [pc, #288] ; (802faa0 ) - 802f97e: 4293 cmp r3, r2 - 802f980: d101 bne.n 802f986 - 802f982: 2301 movs r3, #1 - 802f984: e000 b.n 802f988 - 802f986: 2300 movs r3, #0 - 802f988: 2b00 cmp r3, #0 - 802f98a: f000 842b beq.w 80301e4 - { - /* Transfer Error Interrupt management ***************************************/ - if ((tmpisr_dma & (DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) - 802f98e: 687b ldr r3, [r7, #4] - 802f990: 6ddb ldr r3, [r3, #92] ; 0x5c - 802f992: f003 031f and.w r3, r3, #31 - 802f996: 2208 movs r2, #8 - 802f998: 409a lsls r2, r3 - 802f99a: 69bb ldr r3, [r7, #24] - 802f99c: 4013 ands r3, r2 - 802f99e: 2b00 cmp r3, #0 - 802f9a0: f000 80a2 beq.w 802fae8 - { - if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != 0U) + 802f922: 687b ldr r3, [r7, #4] + 802f924: 681b ldr r3, [r3, #0] + 802f926: 4a5f ldr r2, [pc, #380] ; (802faa4 ) + 802f928: 4293 cmp r3, r2 + 802f92a: d04a beq.n 802f9c2 + 802f92c: 687b ldr r3, [r7, #4] + 802f92e: 681b ldr r3, [r3, #0] + 802f930: 4a5d ldr r2, [pc, #372] ; (802faa8 ) + 802f932: 4293 cmp r3, r2 + 802f934: d045 beq.n 802f9c2 + 802f936: 687b ldr r3, [r7, #4] + 802f938: 681b ldr r3, [r3, #0] + 802f93a: 4a5c ldr r2, [pc, #368] ; (802faac ) + 802f93c: 4293 cmp r3, r2 + 802f93e: d040 beq.n 802f9c2 + 802f940: 687b ldr r3, [r7, #4] + 802f942: 681b ldr r3, [r3, #0] + 802f944: 4a5a ldr r2, [pc, #360] ; (802fab0 ) + 802f946: 4293 cmp r3, r2 + 802f948: d03b beq.n 802f9c2 + 802f94a: 687b ldr r3, [r7, #4] + 802f94c: 681b ldr r3, [r3, #0] + 802f94e: 4a59 ldr r2, [pc, #356] ; (802fab4 ) + 802f950: 4293 cmp r3, r2 + 802f952: d036 beq.n 802f9c2 + 802f954: 687b ldr r3, [r7, #4] + 802f956: 681b ldr r3, [r3, #0] + 802f958: 4a57 ldr r2, [pc, #348] ; (802fab8 ) + 802f95a: 4293 cmp r3, r2 + 802f95c: d031 beq.n 802f9c2 + 802f95e: 687b ldr r3, [r7, #4] + 802f960: 681b ldr r3, [r3, #0] + 802f962: 4a56 ldr r2, [pc, #344] ; (802fabc ) + 802f964: 4293 cmp r3, r2 + 802f966: d02c beq.n 802f9c2 + 802f968: 687b ldr r3, [r7, #4] + 802f96a: 681b ldr r3, [r3, #0] + 802f96c: 4a54 ldr r2, [pc, #336] ; (802fac0 ) + 802f96e: 4293 cmp r3, r2 + 802f970: d027 beq.n 802f9c2 + 802f972: 687b ldr r3, [r7, #4] + 802f974: 681b ldr r3, [r3, #0] + 802f976: 4a53 ldr r2, [pc, #332] ; (802fac4 ) + 802f978: 4293 cmp r3, r2 + 802f97a: d022 beq.n 802f9c2 + 802f97c: 687b ldr r3, [r7, #4] + 802f97e: 681b ldr r3, [r3, #0] + 802f980: 4a51 ldr r2, [pc, #324] ; (802fac8 ) + 802f982: 4293 cmp r3, r2 + 802f984: d01d beq.n 802f9c2 + 802f986: 687b ldr r3, [r7, #4] + 802f988: 681b ldr r3, [r3, #0] + 802f98a: 4a50 ldr r2, [pc, #320] ; (802facc ) + 802f98c: 4293 cmp r3, r2 + 802f98e: d018 beq.n 802f9c2 + 802f990: 687b ldr r3, [r7, #4] + 802f992: 681b ldr r3, [r3, #0] + 802f994: 4a4e ldr r2, [pc, #312] ; (802fad0 ) + 802f996: 4293 cmp r3, r2 + 802f998: d013 beq.n 802f9c2 + 802f99a: 687b ldr r3, [r7, #4] + 802f99c: 681b ldr r3, [r3, #0] + 802f99e: 4a4d ldr r2, [pc, #308] ; (802fad4 ) + 802f9a0: 4293 cmp r3, r2 + 802f9a2: d00e beq.n 802f9c2 802f9a4: 687b ldr r3, [r7, #4] 802f9a6: 681b ldr r3, [r3, #0] - 802f9a8: 4a2e ldr r2, [pc, #184] ; (802fa64 ) + 802f9a8: 4a4b ldr r2, [pc, #300] ; (802fad8 ) 802f9aa: 4293 cmp r3, r2 - 802f9ac: d04a beq.n 802fa44 + 802f9ac: d009 beq.n 802f9c2 802f9ae: 687b ldr r3, [r7, #4] 802f9b0: 681b ldr r3, [r3, #0] - 802f9b2: 4a2d ldr r2, [pc, #180] ; (802fa68 ) + 802f9b2: 4a4a ldr r2, [pc, #296] ; (802fadc ) 802f9b4: 4293 cmp r3, r2 - 802f9b6: d045 beq.n 802fa44 + 802f9b6: d004 beq.n 802f9c2 802f9b8: 687b ldr r3, [r7, #4] 802f9ba: 681b ldr r3, [r3, #0] - 802f9bc: 4a2b ldr r2, [pc, #172] ; (802fa6c ) + 802f9bc: 4a48 ldr r2, [pc, #288] ; (802fae0 ) 802f9be: 4293 cmp r3, r2 - 802f9c0: d040 beq.n 802fa44 - 802f9c2: 687b ldr r3, [r7, #4] - 802f9c4: 681b ldr r3, [r3, #0] - 802f9c6: 4a2a ldr r2, [pc, #168] ; (802fa70 ) - 802f9c8: 4293 cmp r3, r2 - 802f9ca: d03b beq.n 802fa44 - 802f9cc: 687b ldr r3, [r7, #4] - 802f9ce: 681b ldr r3, [r3, #0] - 802f9d0: 4a28 ldr r2, [pc, #160] ; (802fa74 ) - 802f9d2: 4293 cmp r3, r2 - 802f9d4: d036 beq.n 802fa44 - 802f9d6: 687b ldr r3, [r7, #4] - 802f9d8: 681b ldr r3, [r3, #0] - 802f9da: 4a27 ldr r2, [pc, #156] ; (802fa78 ) - 802f9dc: 4293 cmp r3, r2 - 802f9de: d031 beq.n 802fa44 - 802f9e0: 687b ldr r3, [r7, #4] - 802f9e2: 681b ldr r3, [r3, #0] - 802f9e4: 4a25 ldr r2, [pc, #148] ; (802fa7c ) - 802f9e6: 4293 cmp r3, r2 - 802f9e8: d02c beq.n 802fa44 - 802f9ea: 687b ldr r3, [r7, #4] - 802f9ec: 681b ldr r3, [r3, #0] - 802f9ee: 4a24 ldr r2, [pc, #144] ; (802fa80 ) - 802f9f0: 4293 cmp r3, r2 - 802f9f2: d027 beq.n 802fa44 - 802f9f4: 687b ldr r3, [r7, #4] - 802f9f6: 681b ldr r3, [r3, #0] - 802f9f8: 4a22 ldr r2, [pc, #136] ; (802fa84 ) - 802f9fa: 4293 cmp r3, r2 - 802f9fc: d022 beq.n 802fa44 - 802f9fe: 687b ldr r3, [r7, #4] - 802fa00: 681b ldr r3, [r3, #0] - 802fa02: 4a21 ldr r2, [pc, #132] ; (802fa88 ) - 802fa04: 4293 cmp r3, r2 - 802fa06: d01d beq.n 802fa44 - 802fa08: 687b ldr r3, [r7, #4] - 802fa0a: 681b ldr r3, [r3, #0] - 802fa0c: 4a1f ldr r2, [pc, #124] ; (802fa8c ) - 802fa0e: 4293 cmp r3, r2 - 802fa10: d018 beq.n 802fa44 - 802fa12: 687b ldr r3, [r7, #4] - 802fa14: 681b ldr r3, [r3, #0] - 802fa16: 4a1e ldr r2, [pc, #120] ; (802fa90 ) - 802fa18: 4293 cmp r3, r2 - 802fa1a: d013 beq.n 802fa44 - 802fa1c: 687b ldr r3, [r7, #4] - 802fa1e: 681b ldr r3, [r3, #0] - 802fa20: 4a1c ldr r2, [pc, #112] ; (802fa94 ) - 802fa22: 4293 cmp r3, r2 - 802fa24: d00e beq.n 802fa44 - 802fa26: 687b ldr r3, [r7, #4] - 802fa28: 681b ldr r3, [r3, #0] - 802fa2a: 4a1b ldr r2, [pc, #108] ; (802fa98 ) - 802fa2c: 4293 cmp r3, r2 - 802fa2e: d009 beq.n 802fa44 - 802fa30: 687b ldr r3, [r7, #4] - 802fa32: 681b ldr r3, [r3, #0] - 802fa34: 4a19 ldr r2, [pc, #100] ; (802fa9c ) - 802fa36: 4293 cmp r3, r2 - 802fa38: d004 beq.n 802fa44 - 802fa3a: 687b ldr r3, [r7, #4] - 802fa3c: 681b ldr r3, [r3, #0] - 802fa3e: 4a18 ldr r2, [pc, #96] ; (802faa0 ) - 802fa40: 4293 cmp r3, r2 - 802fa42: d12f bne.n 802faa4 - 802fa44: 687b ldr r3, [r7, #4] - 802fa46: 681b ldr r3, [r3, #0] - 802fa48: 681b ldr r3, [r3, #0] - 802fa4a: f003 0304 and.w r3, r3, #4 - 802fa4e: 2b00 cmp r3, #0 - 802fa50: bf14 ite ne - 802fa52: 2301 movne r3, #1 - 802fa54: 2300 moveq r3, #0 - 802fa56: b2db uxtb r3, r3 - 802fa58: e02e b.n 802fab8 - 802fa5a: bf00 nop - 802fa5c: 24000118 .word 0x24000118 - 802fa60: 1b4e81b5 .word 0x1b4e81b5 - 802fa64: 40020010 .word 0x40020010 - 802fa68: 40020028 .word 0x40020028 - 802fa6c: 40020040 .word 0x40020040 - 802fa70: 40020058 .word 0x40020058 - 802fa74: 40020070 .word 0x40020070 - 802fa78: 40020088 .word 0x40020088 - 802fa7c: 400200a0 .word 0x400200a0 - 802fa80: 400200b8 .word 0x400200b8 - 802fa84: 40020410 .word 0x40020410 - 802fa88: 40020428 .word 0x40020428 - 802fa8c: 40020440 .word 0x40020440 - 802fa90: 40020458 .word 0x40020458 - 802fa94: 40020470 .word 0x40020470 - 802fa98: 40020488 .word 0x40020488 - 802fa9c: 400204a0 .word 0x400204a0 - 802faa0: 400204b8 .word 0x400204b8 - 802faa4: 687b ldr r3, [r7, #4] - 802faa6: 681b ldr r3, [r3, #0] - 802faa8: 681b ldr r3, [r3, #0] - 802faaa: f003 0308 and.w r3, r3, #8 - 802faae: 2b00 cmp r3, #0 - 802fab0: bf14 ite ne - 802fab2: 2301 movne r3, #1 - 802fab4: 2300 moveq r3, #0 - 802fab6: b2db uxtb r3, r3 - 802fab8: 2b00 cmp r3, #0 - 802faba: d015 beq.n 802fae8 + 802f9c0: d101 bne.n 802f9c6 + 802f9c2: 2301 movs r3, #1 + 802f9c4: e000 b.n 802f9c8 + 802f9c6: 2300 movs r3, #0 + 802f9c8: 2b00 cmp r3, #0 + 802f9ca: f000 842b beq.w 8030224 + { + /* Transfer Error Interrupt management ***************************************/ + if ((tmpisr_dma & (DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) + 802f9ce: 687b ldr r3, [r7, #4] + 802f9d0: 6ddb ldr r3, [r3, #92] ; 0x5c + 802f9d2: f003 031f and.w r3, r3, #31 + 802f9d6: 2208 movs r2, #8 + 802f9d8: 409a lsls r2, r3 + 802f9da: 69bb ldr r3, [r7, #24] + 802f9dc: 4013 ands r3, r2 + 802f9de: 2b00 cmp r3, #0 + 802f9e0: f000 80a2 beq.w 802fb28 + { + if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TE) != 0U) + 802f9e4: 687b ldr r3, [r7, #4] + 802f9e6: 681b ldr r3, [r3, #0] + 802f9e8: 4a2e ldr r2, [pc, #184] ; (802faa4 ) + 802f9ea: 4293 cmp r3, r2 + 802f9ec: d04a beq.n 802fa84 + 802f9ee: 687b ldr r3, [r7, #4] + 802f9f0: 681b ldr r3, [r3, #0] + 802f9f2: 4a2d ldr r2, [pc, #180] ; (802faa8 ) + 802f9f4: 4293 cmp r3, r2 + 802f9f6: d045 beq.n 802fa84 + 802f9f8: 687b ldr r3, [r7, #4] + 802f9fa: 681b ldr r3, [r3, #0] + 802f9fc: 4a2b ldr r2, [pc, #172] ; (802faac ) + 802f9fe: 4293 cmp r3, r2 + 802fa00: d040 beq.n 802fa84 + 802fa02: 687b ldr r3, [r7, #4] + 802fa04: 681b ldr r3, [r3, #0] + 802fa06: 4a2a ldr r2, [pc, #168] ; (802fab0 ) + 802fa08: 4293 cmp r3, r2 + 802fa0a: d03b beq.n 802fa84 + 802fa0c: 687b ldr r3, [r7, #4] + 802fa0e: 681b ldr r3, [r3, #0] + 802fa10: 4a28 ldr r2, [pc, #160] ; (802fab4 ) + 802fa12: 4293 cmp r3, r2 + 802fa14: d036 beq.n 802fa84 + 802fa16: 687b ldr r3, [r7, #4] + 802fa18: 681b ldr r3, [r3, #0] + 802fa1a: 4a27 ldr r2, [pc, #156] ; (802fab8 ) + 802fa1c: 4293 cmp r3, r2 + 802fa1e: d031 beq.n 802fa84 + 802fa20: 687b ldr r3, [r7, #4] + 802fa22: 681b ldr r3, [r3, #0] + 802fa24: 4a25 ldr r2, [pc, #148] ; (802fabc ) + 802fa26: 4293 cmp r3, r2 + 802fa28: d02c beq.n 802fa84 + 802fa2a: 687b ldr r3, [r7, #4] + 802fa2c: 681b ldr r3, [r3, #0] + 802fa2e: 4a24 ldr r2, [pc, #144] ; (802fac0 ) + 802fa30: 4293 cmp r3, r2 + 802fa32: d027 beq.n 802fa84 + 802fa34: 687b ldr r3, [r7, #4] + 802fa36: 681b ldr r3, [r3, #0] + 802fa38: 4a22 ldr r2, [pc, #136] ; (802fac4 ) + 802fa3a: 4293 cmp r3, r2 + 802fa3c: d022 beq.n 802fa84 + 802fa3e: 687b ldr r3, [r7, #4] + 802fa40: 681b ldr r3, [r3, #0] + 802fa42: 4a21 ldr r2, [pc, #132] ; (802fac8 ) + 802fa44: 4293 cmp r3, r2 + 802fa46: d01d beq.n 802fa84 + 802fa48: 687b ldr r3, [r7, #4] + 802fa4a: 681b ldr r3, [r3, #0] + 802fa4c: 4a1f ldr r2, [pc, #124] ; (802facc ) + 802fa4e: 4293 cmp r3, r2 + 802fa50: d018 beq.n 802fa84 + 802fa52: 687b ldr r3, [r7, #4] + 802fa54: 681b ldr r3, [r3, #0] + 802fa56: 4a1e ldr r2, [pc, #120] ; (802fad0 ) + 802fa58: 4293 cmp r3, r2 + 802fa5a: d013 beq.n 802fa84 + 802fa5c: 687b ldr r3, [r7, #4] + 802fa5e: 681b ldr r3, [r3, #0] + 802fa60: 4a1c ldr r2, [pc, #112] ; (802fad4 ) + 802fa62: 4293 cmp r3, r2 + 802fa64: d00e beq.n 802fa84 + 802fa66: 687b ldr r3, [r7, #4] + 802fa68: 681b ldr r3, [r3, #0] + 802fa6a: 4a1b ldr r2, [pc, #108] ; (802fad8 ) + 802fa6c: 4293 cmp r3, r2 + 802fa6e: d009 beq.n 802fa84 + 802fa70: 687b ldr r3, [r7, #4] + 802fa72: 681b ldr r3, [r3, #0] + 802fa74: 4a19 ldr r2, [pc, #100] ; (802fadc ) + 802fa76: 4293 cmp r3, r2 + 802fa78: d004 beq.n 802fa84 + 802fa7a: 687b ldr r3, [r7, #4] + 802fa7c: 681b ldr r3, [r3, #0] + 802fa7e: 4a18 ldr r2, [pc, #96] ; (802fae0 ) + 802fa80: 4293 cmp r3, r2 + 802fa82: d12f bne.n 802fae4 + 802fa84: 687b ldr r3, [r7, #4] + 802fa86: 681b ldr r3, [r3, #0] + 802fa88: 681b ldr r3, [r3, #0] + 802fa8a: f003 0304 and.w r3, r3, #4 + 802fa8e: 2b00 cmp r3, #0 + 802fa90: bf14 ite ne + 802fa92: 2301 movne r3, #1 + 802fa94: 2300 moveq r3, #0 + 802fa96: b2db uxtb r3, r3 + 802fa98: e02e b.n 802faf8 + 802fa9a: bf00 nop + 802fa9c: 24000118 .word 0x24000118 + 802faa0: 1b4e81b5 .word 0x1b4e81b5 + 802faa4: 40020010 .word 0x40020010 + 802faa8: 40020028 .word 0x40020028 + 802faac: 40020040 .word 0x40020040 + 802fab0: 40020058 .word 0x40020058 + 802fab4: 40020070 .word 0x40020070 + 802fab8: 40020088 .word 0x40020088 + 802fabc: 400200a0 .word 0x400200a0 + 802fac0: 400200b8 .word 0x400200b8 + 802fac4: 40020410 .word 0x40020410 + 802fac8: 40020428 .word 0x40020428 + 802facc: 40020440 .word 0x40020440 + 802fad0: 40020458 .word 0x40020458 + 802fad4: 40020470 .word 0x40020470 + 802fad8: 40020488 .word 0x40020488 + 802fadc: 400204a0 .word 0x400204a0 + 802fae0: 400204b8 .word 0x400204b8 + 802fae4: 687b ldr r3, [r7, #4] + 802fae6: 681b ldr r3, [r3, #0] + 802fae8: 681b ldr r3, [r3, #0] + 802faea: f003 0308 and.w r3, r3, #8 + 802faee: 2b00 cmp r3, #0 + 802faf0: bf14 ite ne + 802faf2: 2301 movne r3, #1 + 802faf4: 2300 moveq r3, #0 + 802faf6: b2db uxtb r3, r3 + 802faf8: 2b00 cmp r3, #0 + 802fafa: d015 beq.n 802fb28 { /* Disable the transfer error interrupt */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_TE); - 802fabc: 687b ldr r3, [r7, #4] - 802fabe: 681b ldr r3, [r3, #0] - 802fac0: 681a ldr r2, [r3, #0] - 802fac2: 687b ldr r3, [r7, #4] - 802fac4: 681b ldr r3, [r3, #0] - 802fac6: f022 0204 bic.w r2, r2, #4 - 802faca: 601a str r2, [r3, #0] + 802fafc: 687b ldr r3, [r7, #4] + 802fafe: 681b ldr r3, [r3, #0] + 802fb00: 681a ldr r2, [r3, #0] + 802fb02: 687b ldr r3, [r7, #4] + 802fb04: 681b ldr r3, [r3, #0] + 802fb06: f022 0204 bic.w r2, r2, #4 + 802fb0a: 601a str r2, [r3, #0] /* Clear the transfer error flag */ regs_dma->IFCR = DMA_FLAG_TEIF0_4 << (hdma->StreamIndex & 0x1FU); - 802facc: 687b ldr r3, [r7, #4] - 802face: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fad0: f003 031f and.w r3, r3, #31 - 802fad4: 2208 movs r2, #8 - 802fad6: 409a lsls r2, r3 - 802fad8: 6a3b ldr r3, [r7, #32] - 802fada: 609a str r2, [r3, #8] + 802fb0c: 687b ldr r3, [r7, #4] + 802fb0e: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fb10: f003 031f and.w r3, r3, #31 + 802fb14: 2208 movs r2, #8 + 802fb16: 409a lsls r2, r3 + 802fb18: 6a3b ldr r3, [r7, #32] + 802fb1a: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_TE; - 802fadc: 687b ldr r3, [r7, #4] - 802fade: 6d5b ldr r3, [r3, #84] ; 0x54 - 802fae0: f043 0201 orr.w r2, r3, #1 - 802fae4: 687b ldr r3, [r7, #4] - 802fae6: 655a str r2, [r3, #84] ; 0x54 + 802fb1c: 687b ldr r3, [r7, #4] + 802fb1e: 6d5b ldr r3, [r3, #84] ; 0x54 + 802fb20: f043 0201 orr.w r2, r3, #1 + 802fb24: 687b ldr r3, [r7, #4] + 802fb26: 655a str r2, [r3, #84] ; 0x54 } } /* FIFO Error Interrupt management ******************************************/ if ((tmpisr_dma & (DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) - 802fae8: 687b ldr r3, [r7, #4] - 802faea: 6ddb ldr r3, [r3, #92] ; 0x5c - 802faec: f003 031f and.w r3, r3, #31 - 802faf0: 69ba ldr r2, [r7, #24] - 802faf2: fa22 f303 lsr.w r3, r2, r3 - 802faf6: f003 0301 and.w r3, r3, #1 - 802fafa: 2b00 cmp r3, #0 - 802fafc: d06e beq.n 802fbdc + 802fb28: 687b ldr r3, [r7, #4] + 802fb2a: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fb2c: f003 031f and.w r3, r3, #31 + 802fb30: 69ba ldr r2, [r7, #24] + 802fb32: fa22 f303 lsr.w r3, r2, r3 + 802fb36: f003 0301 and.w r3, r3, #1 + 802fb3a: 2b00 cmp r3, #0 + 802fb3c: d06e beq.n 802fc1c { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_FE) != 0U) - 802fafe: 687b ldr r3, [r7, #4] - 802fb00: 681b ldr r3, [r3, #0] - 802fb02: 4a69 ldr r2, [pc, #420] ; (802fca8 ) - 802fb04: 4293 cmp r3, r2 - 802fb06: d04a beq.n 802fb9e - 802fb08: 687b ldr r3, [r7, #4] - 802fb0a: 681b ldr r3, [r3, #0] - 802fb0c: 4a67 ldr r2, [pc, #412] ; (802fcac ) - 802fb0e: 4293 cmp r3, r2 - 802fb10: d045 beq.n 802fb9e - 802fb12: 687b ldr r3, [r7, #4] - 802fb14: 681b ldr r3, [r3, #0] - 802fb16: 4a66 ldr r2, [pc, #408] ; (802fcb0 ) - 802fb18: 4293 cmp r3, r2 - 802fb1a: d040 beq.n 802fb9e - 802fb1c: 687b ldr r3, [r7, #4] - 802fb1e: 681b ldr r3, [r3, #0] - 802fb20: 4a64 ldr r2, [pc, #400] ; (802fcb4 ) - 802fb22: 4293 cmp r3, r2 - 802fb24: d03b beq.n 802fb9e - 802fb26: 687b ldr r3, [r7, #4] - 802fb28: 681b ldr r3, [r3, #0] - 802fb2a: 4a63 ldr r2, [pc, #396] ; (802fcb8 ) - 802fb2c: 4293 cmp r3, r2 - 802fb2e: d036 beq.n 802fb9e - 802fb30: 687b ldr r3, [r7, #4] - 802fb32: 681b ldr r3, [r3, #0] - 802fb34: 4a61 ldr r2, [pc, #388] ; (802fcbc ) - 802fb36: 4293 cmp r3, r2 - 802fb38: d031 beq.n 802fb9e - 802fb3a: 687b ldr r3, [r7, #4] - 802fb3c: 681b ldr r3, [r3, #0] - 802fb3e: 4a60 ldr r2, [pc, #384] ; (802fcc0 ) - 802fb40: 4293 cmp r3, r2 - 802fb42: d02c beq.n 802fb9e - 802fb44: 687b ldr r3, [r7, #4] - 802fb46: 681b ldr r3, [r3, #0] - 802fb48: 4a5e ldr r2, [pc, #376] ; (802fcc4 ) - 802fb4a: 4293 cmp r3, r2 - 802fb4c: d027 beq.n 802fb9e - 802fb4e: 687b ldr r3, [r7, #4] - 802fb50: 681b ldr r3, [r3, #0] - 802fb52: 4a5d ldr r2, [pc, #372] ; (802fcc8 ) - 802fb54: 4293 cmp r3, r2 - 802fb56: d022 beq.n 802fb9e - 802fb58: 687b ldr r3, [r7, #4] - 802fb5a: 681b ldr r3, [r3, #0] - 802fb5c: 4a5b ldr r2, [pc, #364] ; (802fccc ) - 802fb5e: 4293 cmp r3, r2 - 802fb60: d01d beq.n 802fb9e - 802fb62: 687b ldr r3, [r7, #4] - 802fb64: 681b ldr r3, [r3, #0] - 802fb66: 4a5a ldr r2, [pc, #360] ; (802fcd0 ) - 802fb68: 4293 cmp r3, r2 - 802fb6a: d018 beq.n 802fb9e - 802fb6c: 687b ldr r3, [r7, #4] - 802fb6e: 681b ldr r3, [r3, #0] - 802fb70: 4a58 ldr r2, [pc, #352] ; (802fcd4 ) - 802fb72: 4293 cmp r3, r2 - 802fb74: d013 beq.n 802fb9e - 802fb76: 687b ldr r3, [r7, #4] - 802fb78: 681b ldr r3, [r3, #0] - 802fb7a: 4a57 ldr r2, [pc, #348] ; (802fcd8 ) - 802fb7c: 4293 cmp r3, r2 - 802fb7e: d00e beq.n 802fb9e - 802fb80: 687b ldr r3, [r7, #4] - 802fb82: 681b ldr r3, [r3, #0] - 802fb84: 4a55 ldr r2, [pc, #340] ; (802fcdc ) - 802fb86: 4293 cmp r3, r2 - 802fb88: d009 beq.n 802fb9e - 802fb8a: 687b ldr r3, [r7, #4] - 802fb8c: 681b ldr r3, [r3, #0] - 802fb8e: 4a54 ldr r2, [pc, #336] ; (802fce0 ) - 802fb90: 4293 cmp r3, r2 - 802fb92: d004 beq.n 802fb9e - 802fb94: 687b ldr r3, [r7, #4] - 802fb96: 681b ldr r3, [r3, #0] - 802fb98: 4a52 ldr r2, [pc, #328] ; (802fce4 ) - 802fb9a: 4293 cmp r3, r2 - 802fb9c: d10a bne.n 802fbb4 - 802fb9e: 687b ldr r3, [r7, #4] - 802fba0: 681b ldr r3, [r3, #0] - 802fba2: 695b ldr r3, [r3, #20] - 802fba4: f003 0380 and.w r3, r3, #128 ; 0x80 - 802fba8: 2b00 cmp r3, #0 - 802fbaa: bf14 ite ne - 802fbac: 2301 movne r3, #1 - 802fbae: 2300 moveq r3, #0 - 802fbb0: b2db uxtb r3, r3 - 802fbb2: e003 b.n 802fbbc - 802fbb4: 687b ldr r3, [r7, #4] - 802fbb6: 681b ldr r3, [r3, #0] + 802fb3e: 687b ldr r3, [r7, #4] + 802fb40: 681b ldr r3, [r3, #0] + 802fb42: 4a69 ldr r2, [pc, #420] ; (802fce8 ) + 802fb44: 4293 cmp r3, r2 + 802fb46: d04a beq.n 802fbde + 802fb48: 687b ldr r3, [r7, #4] + 802fb4a: 681b ldr r3, [r3, #0] + 802fb4c: 4a67 ldr r2, [pc, #412] ; (802fcec ) + 802fb4e: 4293 cmp r3, r2 + 802fb50: d045 beq.n 802fbde + 802fb52: 687b ldr r3, [r7, #4] + 802fb54: 681b ldr r3, [r3, #0] + 802fb56: 4a66 ldr r2, [pc, #408] ; (802fcf0 ) + 802fb58: 4293 cmp r3, r2 + 802fb5a: d040 beq.n 802fbde + 802fb5c: 687b ldr r3, [r7, #4] + 802fb5e: 681b ldr r3, [r3, #0] + 802fb60: 4a64 ldr r2, [pc, #400] ; (802fcf4 ) + 802fb62: 4293 cmp r3, r2 + 802fb64: d03b beq.n 802fbde + 802fb66: 687b ldr r3, [r7, #4] + 802fb68: 681b ldr r3, [r3, #0] + 802fb6a: 4a63 ldr r2, [pc, #396] ; (802fcf8 ) + 802fb6c: 4293 cmp r3, r2 + 802fb6e: d036 beq.n 802fbde + 802fb70: 687b ldr r3, [r7, #4] + 802fb72: 681b ldr r3, [r3, #0] + 802fb74: 4a61 ldr r2, [pc, #388] ; (802fcfc ) + 802fb76: 4293 cmp r3, r2 + 802fb78: d031 beq.n 802fbde + 802fb7a: 687b ldr r3, [r7, #4] + 802fb7c: 681b ldr r3, [r3, #0] + 802fb7e: 4a60 ldr r2, [pc, #384] ; (802fd00 ) + 802fb80: 4293 cmp r3, r2 + 802fb82: d02c beq.n 802fbde + 802fb84: 687b ldr r3, [r7, #4] + 802fb86: 681b ldr r3, [r3, #0] + 802fb88: 4a5e ldr r2, [pc, #376] ; (802fd04 ) + 802fb8a: 4293 cmp r3, r2 + 802fb8c: d027 beq.n 802fbde + 802fb8e: 687b ldr r3, [r7, #4] + 802fb90: 681b ldr r3, [r3, #0] + 802fb92: 4a5d ldr r2, [pc, #372] ; (802fd08 ) + 802fb94: 4293 cmp r3, r2 + 802fb96: d022 beq.n 802fbde + 802fb98: 687b ldr r3, [r7, #4] + 802fb9a: 681b ldr r3, [r3, #0] + 802fb9c: 4a5b ldr r2, [pc, #364] ; (802fd0c ) + 802fb9e: 4293 cmp r3, r2 + 802fba0: d01d beq.n 802fbde + 802fba2: 687b ldr r3, [r7, #4] + 802fba4: 681b ldr r3, [r3, #0] + 802fba6: 4a5a ldr r2, [pc, #360] ; (802fd10 ) + 802fba8: 4293 cmp r3, r2 + 802fbaa: d018 beq.n 802fbde + 802fbac: 687b ldr r3, [r7, #4] + 802fbae: 681b ldr r3, [r3, #0] + 802fbb0: 4a58 ldr r2, [pc, #352] ; (802fd14 ) + 802fbb2: 4293 cmp r3, r2 + 802fbb4: d013 beq.n 802fbde + 802fbb6: 687b ldr r3, [r7, #4] 802fbb8: 681b ldr r3, [r3, #0] - 802fbba: 2300 movs r3, #0 - 802fbbc: 2b00 cmp r3, #0 - 802fbbe: d00d beq.n 802fbdc + 802fbba: 4a57 ldr r2, [pc, #348] ; (802fd18 ) + 802fbbc: 4293 cmp r3, r2 + 802fbbe: d00e beq.n 802fbde + 802fbc0: 687b ldr r3, [r7, #4] + 802fbc2: 681b ldr r3, [r3, #0] + 802fbc4: 4a55 ldr r2, [pc, #340] ; (802fd1c ) + 802fbc6: 4293 cmp r3, r2 + 802fbc8: d009 beq.n 802fbde + 802fbca: 687b ldr r3, [r7, #4] + 802fbcc: 681b ldr r3, [r3, #0] + 802fbce: 4a54 ldr r2, [pc, #336] ; (802fd20 ) + 802fbd0: 4293 cmp r3, r2 + 802fbd2: d004 beq.n 802fbde + 802fbd4: 687b ldr r3, [r7, #4] + 802fbd6: 681b ldr r3, [r3, #0] + 802fbd8: 4a52 ldr r2, [pc, #328] ; (802fd24 ) + 802fbda: 4293 cmp r3, r2 + 802fbdc: d10a bne.n 802fbf4 + 802fbde: 687b ldr r3, [r7, #4] + 802fbe0: 681b ldr r3, [r3, #0] + 802fbe2: 695b ldr r3, [r3, #20] + 802fbe4: f003 0380 and.w r3, r3, #128 ; 0x80 + 802fbe8: 2b00 cmp r3, #0 + 802fbea: bf14 ite ne + 802fbec: 2301 movne r3, #1 + 802fbee: 2300 moveq r3, #0 + 802fbf0: b2db uxtb r3, r3 + 802fbf2: e003 b.n 802fbfc + 802fbf4: 687b ldr r3, [r7, #4] + 802fbf6: 681b ldr r3, [r3, #0] + 802fbf8: 681b ldr r3, [r3, #0] + 802fbfa: 2300 movs r3, #0 + 802fbfc: 2b00 cmp r3, #0 + 802fbfe: d00d beq.n 802fc1c { /* Clear the FIFO error flag */ regs_dma->IFCR = DMA_FLAG_FEIF0_4 << (hdma->StreamIndex & 0x1FU); - 802fbc0: 687b ldr r3, [r7, #4] - 802fbc2: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fbc4: f003 031f and.w r3, r3, #31 - 802fbc8: 2201 movs r2, #1 - 802fbca: 409a lsls r2, r3 - 802fbcc: 6a3b ldr r3, [r7, #32] - 802fbce: 609a str r2, [r3, #8] + 802fc00: 687b ldr r3, [r7, #4] + 802fc02: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fc04: f003 031f and.w r3, r3, #31 + 802fc08: 2201 movs r2, #1 + 802fc0a: 409a lsls r2, r3 + 802fc0c: 6a3b ldr r3, [r7, #32] + 802fc0e: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_FE; - 802fbd0: 687b ldr r3, [r7, #4] - 802fbd2: 6d5b ldr r3, [r3, #84] ; 0x54 - 802fbd4: f043 0202 orr.w r2, r3, #2 - 802fbd8: 687b ldr r3, [r7, #4] - 802fbda: 655a str r2, [r3, #84] ; 0x54 + 802fc10: 687b ldr r3, [r7, #4] + 802fc12: 6d5b ldr r3, [r3, #84] ; 0x54 + 802fc14: f043 0202 orr.w r2, r3, #2 + 802fc18: 687b ldr r3, [r7, #4] + 802fc1a: 655a str r2, [r3, #84] ; 0x54 } } /* Direct Mode Error Interrupt management ***********************************/ if ((tmpisr_dma & (DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) - 802fbdc: 687b ldr r3, [r7, #4] - 802fbde: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fbe0: f003 031f and.w r3, r3, #31 - 802fbe4: 2204 movs r2, #4 - 802fbe6: 409a lsls r2, r3 - 802fbe8: 69bb ldr r3, [r7, #24] - 802fbea: 4013 ands r3, r2 - 802fbec: 2b00 cmp r3, #0 - 802fbee: f000 808f beq.w 802fd10 + 802fc1c: 687b ldr r3, [r7, #4] + 802fc1e: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fc20: f003 031f and.w r3, r3, #31 + 802fc24: 2204 movs r2, #4 + 802fc26: 409a lsls r2, r3 + 802fc28: 69bb ldr r3, [r7, #24] + 802fc2a: 4013 ands r3, r2 + 802fc2c: 2b00 cmp r3, #0 + 802fc2e: f000 808f beq.w 802fd50 { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_DME) != 0U) - 802fbf2: 687b ldr r3, [r7, #4] - 802fbf4: 681b ldr r3, [r3, #0] - 802fbf6: 4a2c ldr r2, [pc, #176] ; (802fca8 ) - 802fbf8: 4293 cmp r3, r2 - 802fbfa: d04a beq.n 802fc92 - 802fbfc: 687b ldr r3, [r7, #4] - 802fbfe: 681b ldr r3, [r3, #0] - 802fc00: 4a2a ldr r2, [pc, #168] ; (802fcac ) - 802fc02: 4293 cmp r3, r2 - 802fc04: d045 beq.n 802fc92 - 802fc06: 687b ldr r3, [r7, #4] - 802fc08: 681b ldr r3, [r3, #0] - 802fc0a: 4a29 ldr r2, [pc, #164] ; (802fcb0 ) - 802fc0c: 4293 cmp r3, r2 - 802fc0e: d040 beq.n 802fc92 - 802fc10: 687b ldr r3, [r7, #4] - 802fc12: 681b ldr r3, [r3, #0] - 802fc14: 4a27 ldr r2, [pc, #156] ; (802fcb4 ) - 802fc16: 4293 cmp r3, r2 - 802fc18: d03b beq.n 802fc92 - 802fc1a: 687b ldr r3, [r7, #4] - 802fc1c: 681b ldr r3, [r3, #0] - 802fc1e: 4a26 ldr r2, [pc, #152] ; (802fcb8 ) - 802fc20: 4293 cmp r3, r2 - 802fc22: d036 beq.n 802fc92 - 802fc24: 687b ldr r3, [r7, #4] - 802fc26: 681b ldr r3, [r3, #0] - 802fc28: 4a24 ldr r2, [pc, #144] ; (802fcbc ) - 802fc2a: 4293 cmp r3, r2 - 802fc2c: d031 beq.n 802fc92 - 802fc2e: 687b ldr r3, [r7, #4] - 802fc30: 681b ldr r3, [r3, #0] - 802fc32: 4a23 ldr r2, [pc, #140] ; (802fcc0 ) - 802fc34: 4293 cmp r3, r2 - 802fc36: d02c beq.n 802fc92 - 802fc38: 687b ldr r3, [r7, #4] - 802fc3a: 681b ldr r3, [r3, #0] - 802fc3c: 4a21 ldr r2, [pc, #132] ; (802fcc4 ) - 802fc3e: 4293 cmp r3, r2 - 802fc40: d027 beq.n 802fc92 - 802fc42: 687b ldr r3, [r7, #4] - 802fc44: 681b ldr r3, [r3, #0] - 802fc46: 4a20 ldr r2, [pc, #128] ; (802fcc8 ) - 802fc48: 4293 cmp r3, r2 - 802fc4a: d022 beq.n 802fc92 - 802fc4c: 687b ldr r3, [r7, #4] - 802fc4e: 681b ldr r3, [r3, #0] - 802fc50: 4a1e ldr r2, [pc, #120] ; (802fccc ) - 802fc52: 4293 cmp r3, r2 - 802fc54: d01d beq.n 802fc92 - 802fc56: 687b ldr r3, [r7, #4] - 802fc58: 681b ldr r3, [r3, #0] - 802fc5a: 4a1d ldr r2, [pc, #116] ; (802fcd0 ) - 802fc5c: 4293 cmp r3, r2 - 802fc5e: d018 beq.n 802fc92 - 802fc60: 687b ldr r3, [r7, #4] - 802fc62: 681b ldr r3, [r3, #0] - 802fc64: 4a1b ldr r2, [pc, #108] ; (802fcd4 ) - 802fc66: 4293 cmp r3, r2 - 802fc68: d013 beq.n 802fc92 - 802fc6a: 687b ldr r3, [r7, #4] - 802fc6c: 681b ldr r3, [r3, #0] - 802fc6e: 4a1a ldr r2, [pc, #104] ; (802fcd8 ) - 802fc70: 4293 cmp r3, r2 - 802fc72: d00e beq.n 802fc92 - 802fc74: 687b ldr r3, [r7, #4] - 802fc76: 681b ldr r3, [r3, #0] - 802fc78: 4a18 ldr r2, [pc, #96] ; (802fcdc ) - 802fc7a: 4293 cmp r3, r2 - 802fc7c: d009 beq.n 802fc92 - 802fc7e: 687b ldr r3, [r7, #4] - 802fc80: 681b ldr r3, [r3, #0] - 802fc82: 4a17 ldr r2, [pc, #92] ; (802fce0 ) - 802fc84: 4293 cmp r3, r2 - 802fc86: d004 beq.n 802fc92 - 802fc88: 687b ldr r3, [r7, #4] - 802fc8a: 681b ldr r3, [r3, #0] - 802fc8c: 4a15 ldr r2, [pc, #84] ; (802fce4 ) - 802fc8e: 4293 cmp r3, r2 - 802fc90: d12a bne.n 802fce8 - 802fc92: 687b ldr r3, [r7, #4] - 802fc94: 681b ldr r3, [r3, #0] - 802fc96: 681b ldr r3, [r3, #0] - 802fc98: f003 0302 and.w r3, r3, #2 - 802fc9c: 2b00 cmp r3, #0 - 802fc9e: bf14 ite ne - 802fca0: 2301 movne r3, #1 - 802fca2: 2300 moveq r3, #0 - 802fca4: b2db uxtb r3, r3 - 802fca6: e023 b.n 802fcf0 - 802fca8: 40020010 .word 0x40020010 - 802fcac: 40020028 .word 0x40020028 - 802fcb0: 40020040 .word 0x40020040 - 802fcb4: 40020058 .word 0x40020058 - 802fcb8: 40020070 .word 0x40020070 - 802fcbc: 40020088 .word 0x40020088 - 802fcc0: 400200a0 .word 0x400200a0 - 802fcc4: 400200b8 .word 0x400200b8 - 802fcc8: 40020410 .word 0x40020410 - 802fccc: 40020428 .word 0x40020428 - 802fcd0: 40020440 .word 0x40020440 - 802fcd4: 40020458 .word 0x40020458 - 802fcd8: 40020470 .word 0x40020470 - 802fcdc: 40020488 .word 0x40020488 - 802fce0: 400204a0 .word 0x400204a0 - 802fce4: 400204b8 .word 0x400204b8 - 802fce8: 687b ldr r3, [r7, #4] - 802fcea: 681b ldr r3, [r3, #0] - 802fcec: 681b ldr r3, [r3, #0] - 802fcee: 2300 movs r3, #0 - 802fcf0: 2b00 cmp r3, #0 - 802fcf2: d00d beq.n 802fd10 + 802fc32: 687b ldr r3, [r7, #4] + 802fc34: 681b ldr r3, [r3, #0] + 802fc36: 4a2c ldr r2, [pc, #176] ; (802fce8 ) + 802fc38: 4293 cmp r3, r2 + 802fc3a: d04a beq.n 802fcd2 + 802fc3c: 687b ldr r3, [r7, #4] + 802fc3e: 681b ldr r3, [r3, #0] + 802fc40: 4a2a ldr r2, [pc, #168] ; (802fcec ) + 802fc42: 4293 cmp r3, r2 + 802fc44: d045 beq.n 802fcd2 + 802fc46: 687b ldr r3, [r7, #4] + 802fc48: 681b ldr r3, [r3, #0] + 802fc4a: 4a29 ldr r2, [pc, #164] ; (802fcf0 ) + 802fc4c: 4293 cmp r3, r2 + 802fc4e: d040 beq.n 802fcd2 + 802fc50: 687b ldr r3, [r7, #4] + 802fc52: 681b ldr r3, [r3, #0] + 802fc54: 4a27 ldr r2, [pc, #156] ; (802fcf4 ) + 802fc56: 4293 cmp r3, r2 + 802fc58: d03b beq.n 802fcd2 + 802fc5a: 687b ldr r3, [r7, #4] + 802fc5c: 681b ldr r3, [r3, #0] + 802fc5e: 4a26 ldr r2, [pc, #152] ; (802fcf8 ) + 802fc60: 4293 cmp r3, r2 + 802fc62: d036 beq.n 802fcd2 + 802fc64: 687b ldr r3, [r7, #4] + 802fc66: 681b ldr r3, [r3, #0] + 802fc68: 4a24 ldr r2, [pc, #144] ; (802fcfc ) + 802fc6a: 4293 cmp r3, r2 + 802fc6c: d031 beq.n 802fcd2 + 802fc6e: 687b ldr r3, [r7, #4] + 802fc70: 681b ldr r3, [r3, #0] + 802fc72: 4a23 ldr r2, [pc, #140] ; (802fd00 ) + 802fc74: 4293 cmp r3, r2 + 802fc76: d02c beq.n 802fcd2 + 802fc78: 687b ldr r3, [r7, #4] + 802fc7a: 681b ldr r3, [r3, #0] + 802fc7c: 4a21 ldr r2, [pc, #132] ; (802fd04 ) + 802fc7e: 4293 cmp r3, r2 + 802fc80: d027 beq.n 802fcd2 + 802fc82: 687b ldr r3, [r7, #4] + 802fc84: 681b ldr r3, [r3, #0] + 802fc86: 4a20 ldr r2, [pc, #128] ; (802fd08 ) + 802fc88: 4293 cmp r3, r2 + 802fc8a: d022 beq.n 802fcd2 + 802fc8c: 687b ldr r3, [r7, #4] + 802fc8e: 681b ldr r3, [r3, #0] + 802fc90: 4a1e ldr r2, [pc, #120] ; (802fd0c ) + 802fc92: 4293 cmp r3, r2 + 802fc94: d01d beq.n 802fcd2 + 802fc96: 687b ldr r3, [r7, #4] + 802fc98: 681b ldr r3, [r3, #0] + 802fc9a: 4a1d ldr r2, [pc, #116] ; (802fd10 ) + 802fc9c: 4293 cmp r3, r2 + 802fc9e: d018 beq.n 802fcd2 + 802fca0: 687b ldr r3, [r7, #4] + 802fca2: 681b ldr r3, [r3, #0] + 802fca4: 4a1b ldr r2, [pc, #108] ; (802fd14 ) + 802fca6: 4293 cmp r3, r2 + 802fca8: d013 beq.n 802fcd2 + 802fcaa: 687b ldr r3, [r7, #4] + 802fcac: 681b ldr r3, [r3, #0] + 802fcae: 4a1a ldr r2, [pc, #104] ; (802fd18 ) + 802fcb0: 4293 cmp r3, r2 + 802fcb2: d00e beq.n 802fcd2 + 802fcb4: 687b ldr r3, [r7, #4] + 802fcb6: 681b ldr r3, [r3, #0] + 802fcb8: 4a18 ldr r2, [pc, #96] ; (802fd1c ) + 802fcba: 4293 cmp r3, r2 + 802fcbc: d009 beq.n 802fcd2 + 802fcbe: 687b ldr r3, [r7, #4] + 802fcc0: 681b ldr r3, [r3, #0] + 802fcc2: 4a17 ldr r2, [pc, #92] ; (802fd20 ) + 802fcc4: 4293 cmp r3, r2 + 802fcc6: d004 beq.n 802fcd2 + 802fcc8: 687b ldr r3, [r7, #4] + 802fcca: 681b ldr r3, [r3, #0] + 802fccc: 4a15 ldr r2, [pc, #84] ; (802fd24 ) + 802fcce: 4293 cmp r3, r2 + 802fcd0: d12a bne.n 802fd28 + 802fcd2: 687b ldr r3, [r7, #4] + 802fcd4: 681b ldr r3, [r3, #0] + 802fcd6: 681b ldr r3, [r3, #0] + 802fcd8: f003 0302 and.w r3, r3, #2 + 802fcdc: 2b00 cmp r3, #0 + 802fcde: bf14 ite ne + 802fce0: 2301 movne r3, #1 + 802fce2: 2300 moveq r3, #0 + 802fce4: b2db uxtb r3, r3 + 802fce6: e023 b.n 802fd30 + 802fce8: 40020010 .word 0x40020010 + 802fcec: 40020028 .word 0x40020028 + 802fcf0: 40020040 .word 0x40020040 + 802fcf4: 40020058 .word 0x40020058 + 802fcf8: 40020070 .word 0x40020070 + 802fcfc: 40020088 .word 0x40020088 + 802fd00: 400200a0 .word 0x400200a0 + 802fd04: 400200b8 .word 0x400200b8 + 802fd08: 40020410 .word 0x40020410 + 802fd0c: 40020428 .word 0x40020428 + 802fd10: 40020440 .word 0x40020440 + 802fd14: 40020458 .word 0x40020458 + 802fd18: 40020470 .word 0x40020470 + 802fd1c: 40020488 .word 0x40020488 + 802fd20: 400204a0 .word 0x400204a0 + 802fd24: 400204b8 .word 0x400204b8 + 802fd28: 687b ldr r3, [r7, #4] + 802fd2a: 681b ldr r3, [r3, #0] + 802fd2c: 681b ldr r3, [r3, #0] + 802fd2e: 2300 movs r3, #0 + 802fd30: 2b00 cmp r3, #0 + 802fd32: d00d beq.n 802fd50 { /* Clear the direct mode error flag */ regs_dma->IFCR = DMA_FLAG_DMEIF0_4 << (hdma->StreamIndex & 0x1FU); - 802fcf4: 687b ldr r3, [r7, #4] - 802fcf6: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fcf8: f003 031f and.w r3, r3, #31 - 802fcfc: 2204 movs r2, #4 - 802fcfe: 409a lsls r2, r3 - 802fd00: 6a3b ldr r3, [r7, #32] - 802fd02: 609a str r2, [r3, #8] + 802fd34: 687b ldr r3, [r7, #4] + 802fd36: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fd38: f003 031f and.w r3, r3, #31 + 802fd3c: 2204 movs r2, #4 + 802fd3e: 409a lsls r2, r3 + 802fd40: 6a3b ldr r3, [r7, #32] + 802fd42: 609a str r2, [r3, #8] /* Update error code */ hdma->ErrorCode |= HAL_DMA_ERROR_DME; - 802fd04: 687b ldr r3, [r7, #4] - 802fd06: 6d5b ldr r3, [r3, #84] ; 0x54 - 802fd08: f043 0204 orr.w r2, r3, #4 - 802fd0c: 687b ldr r3, [r7, #4] - 802fd0e: 655a str r2, [r3, #84] ; 0x54 + 802fd44: 687b ldr r3, [r7, #4] + 802fd46: 6d5b ldr r3, [r3, #84] ; 0x54 + 802fd48: f043 0204 orr.w r2, r3, #4 + 802fd4c: 687b ldr r3, [r7, #4] + 802fd4e: 655a str r2, [r3, #84] ; 0x54 } } /* Half Transfer Complete Interrupt management ******************************/ if ((tmpisr_dma & (DMA_FLAG_HTIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) - 802fd10: 687b ldr r3, [r7, #4] - 802fd12: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fd14: f003 031f and.w r3, r3, #31 - 802fd18: 2210 movs r2, #16 - 802fd1a: 409a lsls r2, r3 - 802fd1c: 69bb ldr r3, [r7, #24] - 802fd1e: 4013 ands r3, r2 - 802fd20: 2b00 cmp r3, #0 - 802fd22: f000 80a6 beq.w 802fe72 + 802fd50: 687b ldr r3, [r7, #4] + 802fd52: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fd54: f003 031f and.w r3, r3, #31 + 802fd58: 2210 movs r2, #16 + 802fd5a: 409a lsls r2, r3 + 802fd5c: 69bb ldr r3, [r7, #24] + 802fd5e: 4013 ands r3, r2 + 802fd60: 2b00 cmp r3, #0 + 802fd62: f000 80a6 beq.w 802feb2 { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_HT) != 0U) - 802fd26: 687b ldr r3, [r7, #4] - 802fd28: 681b ldr r3, [r3, #0] - 802fd2a: 4a85 ldr r2, [pc, #532] ; (802ff40 ) - 802fd2c: 4293 cmp r3, r2 - 802fd2e: d04a beq.n 802fdc6 - 802fd30: 687b ldr r3, [r7, #4] - 802fd32: 681b ldr r3, [r3, #0] - 802fd34: 4a83 ldr r2, [pc, #524] ; (802ff44 ) - 802fd36: 4293 cmp r3, r2 - 802fd38: d045 beq.n 802fdc6 - 802fd3a: 687b ldr r3, [r7, #4] - 802fd3c: 681b ldr r3, [r3, #0] - 802fd3e: 4a82 ldr r2, [pc, #520] ; (802ff48 ) - 802fd40: 4293 cmp r3, r2 - 802fd42: d040 beq.n 802fdc6 - 802fd44: 687b ldr r3, [r7, #4] - 802fd46: 681b ldr r3, [r3, #0] - 802fd48: 4a80 ldr r2, [pc, #512] ; (802ff4c ) - 802fd4a: 4293 cmp r3, r2 - 802fd4c: d03b beq.n 802fdc6 - 802fd4e: 687b ldr r3, [r7, #4] - 802fd50: 681b ldr r3, [r3, #0] - 802fd52: 4a7f ldr r2, [pc, #508] ; (802ff50 ) - 802fd54: 4293 cmp r3, r2 - 802fd56: d036 beq.n 802fdc6 - 802fd58: 687b ldr r3, [r7, #4] - 802fd5a: 681b ldr r3, [r3, #0] - 802fd5c: 4a7d ldr r2, [pc, #500] ; (802ff54 ) - 802fd5e: 4293 cmp r3, r2 - 802fd60: d031 beq.n 802fdc6 - 802fd62: 687b ldr r3, [r7, #4] - 802fd64: 681b ldr r3, [r3, #0] - 802fd66: 4a7c ldr r2, [pc, #496] ; (802ff58 ) - 802fd68: 4293 cmp r3, r2 - 802fd6a: d02c beq.n 802fdc6 - 802fd6c: 687b ldr r3, [r7, #4] - 802fd6e: 681b ldr r3, [r3, #0] - 802fd70: 4a7a ldr r2, [pc, #488] ; (802ff5c ) - 802fd72: 4293 cmp r3, r2 - 802fd74: d027 beq.n 802fdc6 - 802fd76: 687b ldr r3, [r7, #4] - 802fd78: 681b ldr r3, [r3, #0] - 802fd7a: 4a79 ldr r2, [pc, #484] ; (802ff60 ) - 802fd7c: 4293 cmp r3, r2 - 802fd7e: d022 beq.n 802fdc6 - 802fd80: 687b ldr r3, [r7, #4] - 802fd82: 681b ldr r3, [r3, #0] - 802fd84: 4a77 ldr r2, [pc, #476] ; (802ff64 ) - 802fd86: 4293 cmp r3, r2 - 802fd88: d01d beq.n 802fdc6 - 802fd8a: 687b ldr r3, [r7, #4] - 802fd8c: 681b ldr r3, [r3, #0] - 802fd8e: 4a76 ldr r2, [pc, #472] ; (802ff68 ) - 802fd90: 4293 cmp r3, r2 - 802fd92: d018 beq.n 802fdc6 - 802fd94: 687b ldr r3, [r7, #4] - 802fd96: 681b ldr r3, [r3, #0] - 802fd98: 4a74 ldr r2, [pc, #464] ; (802ff6c ) - 802fd9a: 4293 cmp r3, r2 - 802fd9c: d013 beq.n 802fdc6 - 802fd9e: 687b ldr r3, [r7, #4] - 802fda0: 681b ldr r3, [r3, #0] - 802fda2: 4a73 ldr r2, [pc, #460] ; (802ff70 ) - 802fda4: 4293 cmp r3, r2 - 802fda6: d00e beq.n 802fdc6 - 802fda8: 687b ldr r3, [r7, #4] - 802fdaa: 681b ldr r3, [r3, #0] - 802fdac: 4a71 ldr r2, [pc, #452] ; (802ff74 ) - 802fdae: 4293 cmp r3, r2 - 802fdb0: d009 beq.n 802fdc6 - 802fdb2: 687b ldr r3, [r7, #4] - 802fdb4: 681b ldr r3, [r3, #0] - 802fdb6: 4a70 ldr r2, [pc, #448] ; (802ff78 ) - 802fdb8: 4293 cmp r3, r2 - 802fdba: d004 beq.n 802fdc6 - 802fdbc: 687b ldr r3, [r7, #4] - 802fdbe: 681b ldr r3, [r3, #0] - 802fdc0: 4a6e ldr r2, [pc, #440] ; (802ff7c ) - 802fdc2: 4293 cmp r3, r2 - 802fdc4: d10a bne.n 802fddc - 802fdc6: 687b ldr r3, [r7, #4] - 802fdc8: 681b ldr r3, [r3, #0] - 802fdca: 681b ldr r3, [r3, #0] - 802fdcc: f003 0308 and.w r3, r3, #8 - 802fdd0: 2b00 cmp r3, #0 - 802fdd2: bf14 ite ne - 802fdd4: 2301 movne r3, #1 - 802fdd6: 2300 moveq r3, #0 - 802fdd8: b2db uxtb r3, r3 - 802fdda: e009 b.n 802fdf0 - 802fddc: 687b ldr r3, [r7, #4] - 802fdde: 681b ldr r3, [r3, #0] + 802fd66: 687b ldr r3, [r7, #4] + 802fd68: 681b ldr r3, [r3, #0] + 802fd6a: 4a85 ldr r2, [pc, #532] ; (802ff80 ) + 802fd6c: 4293 cmp r3, r2 + 802fd6e: d04a beq.n 802fe06 + 802fd70: 687b ldr r3, [r7, #4] + 802fd72: 681b ldr r3, [r3, #0] + 802fd74: 4a83 ldr r2, [pc, #524] ; (802ff84 ) + 802fd76: 4293 cmp r3, r2 + 802fd78: d045 beq.n 802fe06 + 802fd7a: 687b ldr r3, [r7, #4] + 802fd7c: 681b ldr r3, [r3, #0] + 802fd7e: 4a82 ldr r2, [pc, #520] ; (802ff88 ) + 802fd80: 4293 cmp r3, r2 + 802fd82: d040 beq.n 802fe06 + 802fd84: 687b ldr r3, [r7, #4] + 802fd86: 681b ldr r3, [r3, #0] + 802fd88: 4a80 ldr r2, [pc, #512] ; (802ff8c ) + 802fd8a: 4293 cmp r3, r2 + 802fd8c: d03b beq.n 802fe06 + 802fd8e: 687b ldr r3, [r7, #4] + 802fd90: 681b ldr r3, [r3, #0] + 802fd92: 4a7f ldr r2, [pc, #508] ; (802ff90 ) + 802fd94: 4293 cmp r3, r2 + 802fd96: d036 beq.n 802fe06 + 802fd98: 687b ldr r3, [r7, #4] + 802fd9a: 681b ldr r3, [r3, #0] + 802fd9c: 4a7d ldr r2, [pc, #500] ; (802ff94 ) + 802fd9e: 4293 cmp r3, r2 + 802fda0: d031 beq.n 802fe06 + 802fda2: 687b ldr r3, [r7, #4] + 802fda4: 681b ldr r3, [r3, #0] + 802fda6: 4a7c ldr r2, [pc, #496] ; (802ff98 ) + 802fda8: 4293 cmp r3, r2 + 802fdaa: d02c beq.n 802fe06 + 802fdac: 687b ldr r3, [r7, #4] + 802fdae: 681b ldr r3, [r3, #0] + 802fdb0: 4a7a ldr r2, [pc, #488] ; (802ff9c ) + 802fdb2: 4293 cmp r3, r2 + 802fdb4: d027 beq.n 802fe06 + 802fdb6: 687b ldr r3, [r7, #4] + 802fdb8: 681b ldr r3, [r3, #0] + 802fdba: 4a79 ldr r2, [pc, #484] ; (802ffa0 ) + 802fdbc: 4293 cmp r3, r2 + 802fdbe: d022 beq.n 802fe06 + 802fdc0: 687b ldr r3, [r7, #4] + 802fdc2: 681b ldr r3, [r3, #0] + 802fdc4: 4a77 ldr r2, [pc, #476] ; (802ffa4 ) + 802fdc6: 4293 cmp r3, r2 + 802fdc8: d01d beq.n 802fe06 + 802fdca: 687b ldr r3, [r7, #4] + 802fdcc: 681b ldr r3, [r3, #0] + 802fdce: 4a76 ldr r2, [pc, #472] ; (802ffa8 ) + 802fdd0: 4293 cmp r3, r2 + 802fdd2: d018 beq.n 802fe06 + 802fdd4: 687b ldr r3, [r7, #4] + 802fdd6: 681b ldr r3, [r3, #0] + 802fdd8: 4a74 ldr r2, [pc, #464] ; (802ffac ) + 802fdda: 4293 cmp r3, r2 + 802fddc: d013 beq.n 802fe06 + 802fdde: 687b ldr r3, [r7, #4] 802fde0: 681b ldr r3, [r3, #0] - 802fde2: f003 0304 and.w r3, r3, #4 - 802fde6: 2b00 cmp r3, #0 - 802fde8: bf14 ite ne - 802fdea: 2301 movne r3, #1 - 802fdec: 2300 moveq r3, #0 - 802fdee: b2db uxtb r3, r3 - 802fdf0: 2b00 cmp r3, #0 - 802fdf2: d03e beq.n 802fe72 + 802fde2: 4a73 ldr r2, [pc, #460] ; (802ffb0 ) + 802fde4: 4293 cmp r3, r2 + 802fde6: d00e beq.n 802fe06 + 802fde8: 687b ldr r3, [r7, #4] + 802fdea: 681b ldr r3, [r3, #0] + 802fdec: 4a71 ldr r2, [pc, #452] ; (802ffb4 ) + 802fdee: 4293 cmp r3, r2 + 802fdf0: d009 beq.n 802fe06 + 802fdf2: 687b ldr r3, [r7, #4] + 802fdf4: 681b ldr r3, [r3, #0] + 802fdf6: 4a70 ldr r2, [pc, #448] ; (802ffb8 ) + 802fdf8: 4293 cmp r3, r2 + 802fdfa: d004 beq.n 802fe06 + 802fdfc: 687b ldr r3, [r7, #4] + 802fdfe: 681b ldr r3, [r3, #0] + 802fe00: 4a6e ldr r2, [pc, #440] ; (802ffbc ) + 802fe02: 4293 cmp r3, r2 + 802fe04: d10a bne.n 802fe1c + 802fe06: 687b ldr r3, [r7, #4] + 802fe08: 681b ldr r3, [r3, #0] + 802fe0a: 681b ldr r3, [r3, #0] + 802fe0c: f003 0308 and.w r3, r3, #8 + 802fe10: 2b00 cmp r3, #0 + 802fe12: bf14 ite ne + 802fe14: 2301 movne r3, #1 + 802fe16: 2300 moveq r3, #0 + 802fe18: b2db uxtb r3, r3 + 802fe1a: e009 b.n 802fe30 + 802fe1c: 687b ldr r3, [r7, #4] + 802fe1e: 681b ldr r3, [r3, #0] + 802fe20: 681b ldr r3, [r3, #0] + 802fe22: f003 0304 and.w r3, r3, #4 + 802fe26: 2b00 cmp r3, #0 + 802fe28: bf14 ite ne + 802fe2a: 2301 movne r3, #1 + 802fe2c: 2300 moveq r3, #0 + 802fe2e: b2db uxtb r3, r3 + 802fe30: 2b00 cmp r3, #0 + 802fe32: d03e beq.n 802feb2 { /* Clear the half transfer complete flag */ regs_dma->IFCR = DMA_FLAG_HTIF0_4 << (hdma->StreamIndex & 0x1FU); - 802fdf4: 687b ldr r3, [r7, #4] - 802fdf6: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fdf8: f003 031f and.w r3, r3, #31 - 802fdfc: 2210 movs r2, #16 - 802fdfe: 409a lsls r2, r3 - 802fe00: 6a3b ldr r3, [r7, #32] - 802fe02: 609a str r2, [r3, #8] + 802fe34: 687b ldr r3, [r7, #4] + 802fe36: 6ddb ldr r3, [r3, #92] ; 0x5c + 802fe38: f003 031f and.w r3, r3, #31 + 802fe3c: 2210 movs r2, #16 + 802fe3e: 409a lsls r2, r3 + 802fe40: 6a3b ldr r3, [r7, #32] + 802fe42: 609a str r2, [r3, #8] /* Multi_Buffering mode enabled */ if(((((DMA_Stream_TypeDef *)hdma->Instance)->CR) & (uint32_t)(DMA_SxCR_DBM)) != 0U) - 802fe04: 687b ldr r3, [r7, #4] - 802fe06: 681b ldr r3, [r3, #0] - 802fe08: 681b ldr r3, [r3, #0] - 802fe0a: f403 2380 and.w r3, r3, #262144 ; 0x40000 - 802fe0e: 2b00 cmp r3, #0 - 802fe10: d018 beq.n 802fe44 + 802fe44: 687b ldr r3, [r7, #4] + 802fe46: 681b ldr r3, [r3, #0] + 802fe48: 681b ldr r3, [r3, #0] + 802fe4a: f403 2380 and.w r3, r3, #262144 ; 0x40000 + 802fe4e: 2b00 cmp r3, #0 + 802fe50: d018 beq.n 802fe84 { /* Current memory buffer used is Memory 0 */ if((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_CT) == 0U) - 802fe12: 687b ldr r3, [r7, #4] - 802fe14: 681b ldr r3, [r3, #0] - 802fe16: 681b ldr r3, [r3, #0] - 802fe18: f403 2300 and.w r3, r3, #524288 ; 0x80000 - 802fe1c: 2b00 cmp r3, #0 - 802fe1e: d108 bne.n 802fe32 + 802fe52: 687b ldr r3, [r7, #4] + 802fe54: 681b ldr r3, [r3, #0] + 802fe56: 681b ldr r3, [r3, #0] + 802fe58: f403 2300 and.w r3, r3, #524288 ; 0x80000 + 802fe5c: 2b00 cmp r3, #0 + 802fe5e: d108 bne.n 802fe72 { if(hdma->XferHalfCpltCallback != NULL) - 802fe20: 687b ldr r3, [r7, #4] - 802fe22: 6c1b ldr r3, [r3, #64] ; 0x40 - 802fe24: 2b00 cmp r3, #0 - 802fe26: d024 beq.n 802fe72 + 802fe60: 687b ldr r3, [r7, #4] + 802fe62: 6c1b ldr r3, [r3, #64] ; 0x40 + 802fe64: 2b00 cmp r3, #0 + 802fe66: d024 beq.n 802feb2 { /* Half transfer callback */ hdma->XferHalfCpltCallback(hdma); - 802fe28: 687b ldr r3, [r7, #4] - 802fe2a: 6c1b ldr r3, [r3, #64] ; 0x40 - 802fe2c: 6878 ldr r0, [r7, #4] - 802fe2e: 4798 blx r3 - 802fe30: e01f b.n 802fe72 + 802fe68: 687b ldr r3, [r7, #4] + 802fe6a: 6c1b ldr r3, [r3, #64] ; 0x40 + 802fe6c: 6878 ldr r0, [r7, #4] + 802fe6e: 4798 blx r3 + 802fe70: e01f b.n 802feb2 } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferM1HalfCpltCallback != NULL) - 802fe32: 687b ldr r3, [r7, #4] - 802fe34: 6c9b ldr r3, [r3, #72] ; 0x48 - 802fe36: 2b00 cmp r3, #0 - 802fe38: d01b beq.n 802fe72 + 802fe72: 687b ldr r3, [r7, #4] + 802fe74: 6c9b ldr r3, [r3, #72] ; 0x48 + 802fe76: 2b00 cmp r3, #0 + 802fe78: d01b beq.n 802feb2 { /* Half transfer callback */ hdma->XferM1HalfCpltCallback(hdma); - 802fe3a: 687b ldr r3, [r7, #4] - 802fe3c: 6c9b ldr r3, [r3, #72] ; 0x48 - 802fe3e: 6878 ldr r0, [r7, #4] - 802fe40: 4798 blx r3 - 802fe42: e016 b.n 802fe72 + 802fe7a: 687b ldr r3, [r7, #4] + 802fe7c: 6c9b ldr r3, [r3, #72] ; 0x48 + 802fe7e: 6878 ldr r0, [r7, #4] + 802fe80: 4798 blx r3 + 802fe82: e016 b.n 802feb2 } } else { /* Disable the half transfer interrupt if the DMA mode is not CIRCULAR */ if((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_CIRC) == 0U) - 802fe44: 687b ldr r3, [r7, #4] - 802fe46: 681b ldr r3, [r3, #0] - 802fe48: 681b ldr r3, [r3, #0] - 802fe4a: f403 7380 and.w r3, r3, #256 ; 0x100 - 802fe4e: 2b00 cmp r3, #0 - 802fe50: d107 bne.n 802fe62 + 802fe84: 687b ldr r3, [r7, #4] + 802fe86: 681b ldr r3, [r3, #0] + 802fe88: 681b ldr r3, [r3, #0] + 802fe8a: f403 7380 and.w r3, r3, #256 ; 0x100 + 802fe8e: 2b00 cmp r3, #0 + 802fe90: d107 bne.n 802fea2 { /* Disable the half transfer interrupt */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_HT); - 802fe52: 687b ldr r3, [r7, #4] - 802fe54: 681b ldr r3, [r3, #0] - 802fe56: 681a ldr r2, [r3, #0] - 802fe58: 687b ldr r3, [r7, #4] - 802fe5a: 681b ldr r3, [r3, #0] - 802fe5c: f022 0208 bic.w r2, r2, #8 - 802fe60: 601a str r2, [r3, #0] + 802fe92: 687b ldr r3, [r7, #4] + 802fe94: 681b ldr r3, [r3, #0] + 802fe96: 681a ldr r2, [r3, #0] + 802fe98: 687b ldr r3, [r7, #4] + 802fe9a: 681b ldr r3, [r3, #0] + 802fe9c: f022 0208 bic.w r2, r2, #8 + 802fea0: 601a str r2, [r3, #0] } if(hdma->XferHalfCpltCallback != NULL) - 802fe62: 687b ldr r3, [r7, #4] - 802fe64: 6c1b ldr r3, [r3, #64] ; 0x40 - 802fe66: 2b00 cmp r3, #0 - 802fe68: d003 beq.n 802fe72 + 802fea2: 687b ldr r3, [r7, #4] + 802fea4: 6c1b ldr r3, [r3, #64] ; 0x40 + 802fea6: 2b00 cmp r3, #0 + 802fea8: d003 beq.n 802feb2 { /* Half transfer callback */ hdma->XferHalfCpltCallback(hdma); - 802fe6a: 687b ldr r3, [r7, #4] - 802fe6c: 6c1b ldr r3, [r3, #64] ; 0x40 - 802fe6e: 6878 ldr r0, [r7, #4] - 802fe70: 4798 blx r3 + 802feaa: 687b ldr r3, [r7, #4] + 802feac: 6c1b ldr r3, [r3, #64] ; 0x40 + 802feae: 6878 ldr r0, [r7, #4] + 802feb0: 4798 blx r3 } } } } /* Transfer Complete Interrupt management ***********************************/ if ((tmpisr_dma & (DMA_FLAG_TCIF0_4 << (hdma->StreamIndex & 0x1FU))) != 0U) - 802fe72: 687b ldr r3, [r7, #4] - 802fe74: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fe76: f003 031f and.w r3, r3, #31 - 802fe7a: 2220 movs r2, #32 - 802fe7c: 409a lsls r2, r3 - 802fe7e: 69bb ldr r3, [r7, #24] - 802fe80: 4013 ands r3, r2 - 802fe82: 2b00 cmp r3, #0 - 802fe84: f000 8110 beq.w 80300a8 + 802feb2: 687b ldr r3, [r7, #4] + 802feb4: 6ddb ldr r3, [r3, #92] ; 0x5c + 802feb6: f003 031f and.w r3, r3, #31 + 802feba: 2220 movs r2, #32 + 802febc: 409a lsls r2, r3 + 802febe: 69bb ldr r3, [r7, #24] + 802fec0: 4013 ands r3, r2 + 802fec2: 2b00 cmp r3, #0 + 802fec4: f000 8110 beq.w 80300e8 { if(__HAL_DMA_GET_IT_SOURCE(hdma, DMA_IT_TC) != 0U) - 802fe88: 687b ldr r3, [r7, #4] - 802fe8a: 681b ldr r3, [r3, #0] - 802fe8c: 4a2c ldr r2, [pc, #176] ; (802ff40 ) - 802fe8e: 4293 cmp r3, r2 - 802fe90: d04a beq.n 802ff28 - 802fe92: 687b ldr r3, [r7, #4] - 802fe94: 681b ldr r3, [r3, #0] - 802fe96: 4a2b ldr r2, [pc, #172] ; (802ff44 ) - 802fe98: 4293 cmp r3, r2 - 802fe9a: d045 beq.n 802ff28 - 802fe9c: 687b ldr r3, [r7, #4] - 802fe9e: 681b ldr r3, [r3, #0] - 802fea0: 4a29 ldr r2, [pc, #164] ; (802ff48 ) - 802fea2: 4293 cmp r3, r2 - 802fea4: d040 beq.n 802ff28 - 802fea6: 687b ldr r3, [r7, #4] - 802fea8: 681b ldr r3, [r3, #0] - 802feaa: 4a28 ldr r2, [pc, #160] ; (802ff4c ) - 802feac: 4293 cmp r3, r2 - 802feae: d03b beq.n 802ff28 - 802feb0: 687b ldr r3, [r7, #4] - 802feb2: 681b ldr r3, [r3, #0] - 802feb4: 4a26 ldr r2, [pc, #152] ; (802ff50 ) - 802feb6: 4293 cmp r3, r2 - 802feb8: d036 beq.n 802ff28 - 802feba: 687b ldr r3, [r7, #4] - 802febc: 681b ldr r3, [r3, #0] - 802febe: 4a25 ldr r2, [pc, #148] ; (802ff54 ) - 802fec0: 4293 cmp r3, r2 - 802fec2: d031 beq.n 802ff28 - 802fec4: 687b ldr r3, [r7, #4] - 802fec6: 681b ldr r3, [r3, #0] - 802fec8: 4a23 ldr r2, [pc, #140] ; (802ff58 ) - 802feca: 4293 cmp r3, r2 - 802fecc: d02c beq.n 802ff28 - 802fece: 687b ldr r3, [r7, #4] - 802fed0: 681b ldr r3, [r3, #0] - 802fed2: 4a22 ldr r2, [pc, #136] ; (802ff5c ) - 802fed4: 4293 cmp r3, r2 - 802fed6: d027 beq.n 802ff28 - 802fed8: 687b ldr r3, [r7, #4] - 802feda: 681b ldr r3, [r3, #0] - 802fedc: 4a20 ldr r2, [pc, #128] ; (802ff60 ) - 802fede: 4293 cmp r3, r2 - 802fee0: d022 beq.n 802ff28 - 802fee2: 687b ldr r3, [r7, #4] - 802fee4: 681b ldr r3, [r3, #0] - 802fee6: 4a1f ldr r2, [pc, #124] ; (802ff64 ) - 802fee8: 4293 cmp r3, r2 - 802feea: d01d beq.n 802ff28 - 802feec: 687b ldr r3, [r7, #4] - 802feee: 681b ldr r3, [r3, #0] - 802fef0: 4a1d ldr r2, [pc, #116] ; (802ff68 ) - 802fef2: 4293 cmp r3, r2 - 802fef4: d018 beq.n 802ff28 - 802fef6: 687b ldr r3, [r7, #4] - 802fef8: 681b ldr r3, [r3, #0] - 802fefa: 4a1c ldr r2, [pc, #112] ; (802ff6c ) - 802fefc: 4293 cmp r3, r2 - 802fefe: d013 beq.n 802ff28 - 802ff00: 687b ldr r3, [r7, #4] - 802ff02: 681b ldr r3, [r3, #0] - 802ff04: 4a1a ldr r2, [pc, #104] ; (802ff70 ) - 802ff06: 4293 cmp r3, r2 - 802ff08: d00e beq.n 802ff28 - 802ff0a: 687b ldr r3, [r7, #4] - 802ff0c: 681b ldr r3, [r3, #0] - 802ff0e: 4a19 ldr r2, [pc, #100] ; (802ff74 ) - 802ff10: 4293 cmp r3, r2 - 802ff12: d009 beq.n 802ff28 - 802ff14: 687b ldr r3, [r7, #4] - 802ff16: 681b ldr r3, [r3, #0] - 802ff18: 4a17 ldr r2, [pc, #92] ; (802ff78 ) - 802ff1a: 4293 cmp r3, r2 - 802ff1c: d004 beq.n 802ff28 - 802ff1e: 687b ldr r3, [r7, #4] - 802ff20: 681b ldr r3, [r3, #0] - 802ff22: 4a16 ldr r2, [pc, #88] ; (802ff7c ) - 802ff24: 4293 cmp r3, r2 - 802ff26: d12b bne.n 802ff80 - 802ff28: 687b ldr r3, [r7, #4] - 802ff2a: 681b ldr r3, [r3, #0] - 802ff2c: 681b ldr r3, [r3, #0] - 802ff2e: f003 0310 and.w r3, r3, #16 - 802ff32: 2b00 cmp r3, #0 - 802ff34: bf14 ite ne - 802ff36: 2301 movne r3, #1 - 802ff38: 2300 moveq r3, #0 - 802ff3a: b2db uxtb r3, r3 - 802ff3c: e02a b.n 802ff94 - 802ff3e: bf00 nop - 802ff40: 40020010 .word 0x40020010 - 802ff44: 40020028 .word 0x40020028 - 802ff48: 40020040 .word 0x40020040 - 802ff4c: 40020058 .word 0x40020058 - 802ff50: 40020070 .word 0x40020070 - 802ff54: 40020088 .word 0x40020088 - 802ff58: 400200a0 .word 0x400200a0 - 802ff5c: 400200b8 .word 0x400200b8 - 802ff60: 40020410 .word 0x40020410 - 802ff64: 40020428 .word 0x40020428 - 802ff68: 40020440 .word 0x40020440 - 802ff6c: 40020458 .word 0x40020458 - 802ff70: 40020470 .word 0x40020470 - 802ff74: 40020488 .word 0x40020488 - 802ff78: 400204a0 .word 0x400204a0 - 802ff7c: 400204b8 .word 0x400204b8 - 802ff80: 687b ldr r3, [r7, #4] - 802ff82: 681b ldr r3, [r3, #0] - 802ff84: 681b ldr r3, [r3, #0] - 802ff86: f003 0302 and.w r3, r3, #2 - 802ff8a: 2b00 cmp r3, #0 - 802ff8c: bf14 ite ne - 802ff8e: 2301 movne r3, #1 - 802ff90: 2300 moveq r3, #0 - 802ff92: b2db uxtb r3, r3 - 802ff94: 2b00 cmp r3, #0 - 802ff96: f000 8087 beq.w 80300a8 + 802fec8: 687b ldr r3, [r7, #4] + 802feca: 681b ldr r3, [r3, #0] + 802fecc: 4a2c ldr r2, [pc, #176] ; (802ff80 ) + 802fece: 4293 cmp r3, r2 + 802fed0: d04a beq.n 802ff68 + 802fed2: 687b ldr r3, [r7, #4] + 802fed4: 681b ldr r3, [r3, #0] + 802fed6: 4a2b ldr r2, [pc, #172] ; (802ff84 ) + 802fed8: 4293 cmp r3, r2 + 802feda: d045 beq.n 802ff68 + 802fedc: 687b ldr r3, [r7, #4] + 802fede: 681b ldr r3, [r3, #0] + 802fee0: 4a29 ldr r2, [pc, #164] ; (802ff88 ) + 802fee2: 4293 cmp r3, r2 + 802fee4: d040 beq.n 802ff68 + 802fee6: 687b ldr r3, [r7, #4] + 802fee8: 681b ldr r3, [r3, #0] + 802feea: 4a28 ldr r2, [pc, #160] ; (802ff8c ) + 802feec: 4293 cmp r3, r2 + 802feee: d03b beq.n 802ff68 + 802fef0: 687b ldr r3, [r7, #4] + 802fef2: 681b ldr r3, [r3, #0] + 802fef4: 4a26 ldr r2, [pc, #152] ; (802ff90 ) + 802fef6: 4293 cmp r3, r2 + 802fef8: d036 beq.n 802ff68 + 802fefa: 687b ldr r3, [r7, #4] + 802fefc: 681b ldr r3, [r3, #0] + 802fefe: 4a25 ldr r2, [pc, #148] ; (802ff94 ) + 802ff00: 4293 cmp r3, r2 + 802ff02: d031 beq.n 802ff68 + 802ff04: 687b ldr r3, [r7, #4] + 802ff06: 681b ldr r3, [r3, #0] + 802ff08: 4a23 ldr r2, [pc, #140] ; (802ff98 ) + 802ff0a: 4293 cmp r3, r2 + 802ff0c: d02c beq.n 802ff68 + 802ff0e: 687b ldr r3, [r7, #4] + 802ff10: 681b ldr r3, [r3, #0] + 802ff12: 4a22 ldr r2, [pc, #136] ; (802ff9c ) + 802ff14: 4293 cmp r3, r2 + 802ff16: d027 beq.n 802ff68 + 802ff18: 687b ldr r3, [r7, #4] + 802ff1a: 681b ldr r3, [r3, #0] + 802ff1c: 4a20 ldr r2, [pc, #128] ; (802ffa0 ) + 802ff1e: 4293 cmp r3, r2 + 802ff20: d022 beq.n 802ff68 + 802ff22: 687b ldr r3, [r7, #4] + 802ff24: 681b ldr r3, [r3, #0] + 802ff26: 4a1f ldr r2, [pc, #124] ; (802ffa4 ) + 802ff28: 4293 cmp r3, r2 + 802ff2a: d01d beq.n 802ff68 + 802ff2c: 687b ldr r3, [r7, #4] + 802ff2e: 681b ldr r3, [r3, #0] + 802ff30: 4a1d ldr r2, [pc, #116] ; (802ffa8 ) + 802ff32: 4293 cmp r3, r2 + 802ff34: d018 beq.n 802ff68 + 802ff36: 687b ldr r3, [r7, #4] + 802ff38: 681b ldr r3, [r3, #0] + 802ff3a: 4a1c ldr r2, [pc, #112] ; (802ffac ) + 802ff3c: 4293 cmp r3, r2 + 802ff3e: d013 beq.n 802ff68 + 802ff40: 687b ldr r3, [r7, #4] + 802ff42: 681b ldr r3, [r3, #0] + 802ff44: 4a1a ldr r2, [pc, #104] ; (802ffb0 ) + 802ff46: 4293 cmp r3, r2 + 802ff48: d00e beq.n 802ff68 + 802ff4a: 687b ldr r3, [r7, #4] + 802ff4c: 681b ldr r3, [r3, #0] + 802ff4e: 4a19 ldr r2, [pc, #100] ; (802ffb4 ) + 802ff50: 4293 cmp r3, r2 + 802ff52: d009 beq.n 802ff68 + 802ff54: 687b ldr r3, [r7, #4] + 802ff56: 681b ldr r3, [r3, #0] + 802ff58: 4a17 ldr r2, [pc, #92] ; (802ffb8 ) + 802ff5a: 4293 cmp r3, r2 + 802ff5c: d004 beq.n 802ff68 + 802ff5e: 687b ldr r3, [r7, #4] + 802ff60: 681b ldr r3, [r3, #0] + 802ff62: 4a16 ldr r2, [pc, #88] ; (802ffbc ) + 802ff64: 4293 cmp r3, r2 + 802ff66: d12b bne.n 802ffc0 + 802ff68: 687b ldr r3, [r7, #4] + 802ff6a: 681b ldr r3, [r3, #0] + 802ff6c: 681b ldr r3, [r3, #0] + 802ff6e: f003 0310 and.w r3, r3, #16 + 802ff72: 2b00 cmp r3, #0 + 802ff74: bf14 ite ne + 802ff76: 2301 movne r3, #1 + 802ff78: 2300 moveq r3, #0 + 802ff7a: b2db uxtb r3, r3 + 802ff7c: e02a b.n 802ffd4 + 802ff7e: bf00 nop + 802ff80: 40020010 .word 0x40020010 + 802ff84: 40020028 .word 0x40020028 + 802ff88: 40020040 .word 0x40020040 + 802ff8c: 40020058 .word 0x40020058 + 802ff90: 40020070 .word 0x40020070 + 802ff94: 40020088 .word 0x40020088 + 802ff98: 400200a0 .word 0x400200a0 + 802ff9c: 400200b8 .word 0x400200b8 + 802ffa0: 40020410 .word 0x40020410 + 802ffa4: 40020428 .word 0x40020428 + 802ffa8: 40020440 .word 0x40020440 + 802ffac: 40020458 .word 0x40020458 + 802ffb0: 40020470 .word 0x40020470 + 802ffb4: 40020488 .word 0x40020488 + 802ffb8: 400204a0 .word 0x400204a0 + 802ffbc: 400204b8 .word 0x400204b8 + 802ffc0: 687b ldr r3, [r7, #4] + 802ffc2: 681b ldr r3, [r3, #0] + 802ffc4: 681b ldr r3, [r3, #0] + 802ffc6: f003 0302 and.w r3, r3, #2 + 802ffca: 2b00 cmp r3, #0 + 802ffcc: bf14 ite ne + 802ffce: 2301 movne r3, #1 + 802ffd0: 2300 moveq r3, #0 + 802ffd2: b2db uxtb r3, r3 + 802ffd4: 2b00 cmp r3, #0 + 802ffd6: f000 8087 beq.w 80300e8 { /* Clear the transfer complete flag */ regs_dma->IFCR = DMA_FLAG_TCIF0_4 << (hdma->StreamIndex & 0x1FU); - 802ff9a: 687b ldr r3, [r7, #4] - 802ff9c: 6ddb ldr r3, [r3, #92] ; 0x5c - 802ff9e: f003 031f and.w r3, r3, #31 - 802ffa2: 2220 movs r2, #32 - 802ffa4: 409a lsls r2, r3 - 802ffa6: 6a3b ldr r3, [r7, #32] - 802ffa8: 609a str r2, [r3, #8] + 802ffda: 687b ldr r3, [r7, #4] + 802ffdc: 6ddb ldr r3, [r3, #92] ; 0x5c + 802ffde: f003 031f and.w r3, r3, #31 + 802ffe2: 2220 movs r2, #32 + 802ffe4: 409a lsls r2, r3 + 802ffe6: 6a3b ldr r3, [r7, #32] + 802ffe8: 609a str r2, [r3, #8] if(HAL_DMA_STATE_ABORT == hdma->State) - 802ffaa: 687b ldr r3, [r7, #4] - 802ffac: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 - 802ffb0: b2db uxtb r3, r3 - 802ffb2: 2b04 cmp r3, #4 - 802ffb4: d139 bne.n 803002a + 802ffea: 687b ldr r3, [r7, #4] + 802ffec: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 + 802fff0: b2db uxtb r3, r3 + 802fff2: 2b04 cmp r3, #4 + 802fff4: d139 bne.n 803006a { /* Disable all the transfer interrupts */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_TC | DMA_IT_TE | DMA_IT_DME); - 802ffb6: 687b ldr r3, [r7, #4] - 802ffb8: 681b ldr r3, [r3, #0] - 802ffba: 681a ldr r2, [r3, #0] - 802ffbc: 687b ldr r3, [r7, #4] - 802ffbe: 681b ldr r3, [r3, #0] - 802ffc0: f022 0216 bic.w r2, r2, #22 - 802ffc4: 601a str r2, [r3, #0] + 802fff6: 687b ldr r3, [r7, #4] + 802fff8: 681b ldr r3, [r3, #0] + 802fffa: 681a ldr r2, [r3, #0] + 802fffc: 687b ldr r3, [r7, #4] + 802fffe: 681b ldr r3, [r3, #0] + 8030000: f022 0216 bic.w r2, r2, #22 + 8030004: 601a str r2, [r3, #0] ((DMA_Stream_TypeDef *)hdma->Instance)->FCR &= ~(DMA_IT_FE); - 802ffc6: 687b ldr r3, [r7, #4] - 802ffc8: 681b ldr r3, [r3, #0] - 802ffca: 695a ldr r2, [r3, #20] - 802ffcc: 687b ldr r3, [r7, #4] - 802ffce: 681b ldr r3, [r3, #0] - 802ffd0: f022 0280 bic.w r2, r2, #128 ; 0x80 - 802ffd4: 615a str r2, [r3, #20] + 8030006: 687b ldr r3, [r7, #4] + 8030008: 681b ldr r3, [r3, #0] + 803000a: 695a ldr r2, [r3, #20] + 803000c: 687b ldr r3, [r7, #4] + 803000e: 681b ldr r3, [r3, #0] + 8030010: f022 0280 bic.w r2, r2, #128 ; 0x80 + 8030014: 615a str r2, [r3, #20] if((hdma->XferHalfCpltCallback != NULL) || (hdma->XferM1HalfCpltCallback != NULL)) - 802ffd6: 687b ldr r3, [r7, #4] - 802ffd8: 6c1b ldr r3, [r3, #64] ; 0x40 - 802ffda: 2b00 cmp r3, #0 - 802ffdc: d103 bne.n 802ffe6 - 802ffde: 687b ldr r3, [r7, #4] - 802ffe0: 6c9b ldr r3, [r3, #72] ; 0x48 - 802ffe2: 2b00 cmp r3, #0 - 802ffe4: d007 beq.n 802fff6 + 8030016: 687b ldr r3, [r7, #4] + 8030018: 6c1b ldr r3, [r3, #64] ; 0x40 + 803001a: 2b00 cmp r3, #0 + 803001c: d103 bne.n 8030026 + 803001e: 687b ldr r3, [r7, #4] + 8030020: 6c9b ldr r3, [r3, #72] ; 0x48 + 8030022: 2b00 cmp r3, #0 + 8030024: d007 beq.n 8030036 { ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_HT); - 802ffe6: 687b ldr r3, [r7, #4] - 802ffe8: 681b ldr r3, [r3, #0] - 802ffea: 681a ldr r2, [r3, #0] - 802ffec: 687b ldr r3, [r7, #4] - 802ffee: 681b ldr r3, [r3, #0] - 802fff0: f022 0208 bic.w r2, r2, #8 - 802fff4: 601a str r2, [r3, #0] + 8030026: 687b ldr r3, [r7, #4] + 8030028: 681b ldr r3, [r3, #0] + 803002a: 681a ldr r2, [r3, #0] + 803002c: 687b ldr r3, [r7, #4] + 803002e: 681b ldr r3, [r3, #0] + 8030030: f022 0208 bic.w r2, r2, #8 + 8030034: 601a str r2, [r3, #0] } /* Clear all interrupt flags at correct offset within the register */ regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU); - 802fff6: 687b ldr r3, [r7, #4] - 802fff8: 6ddb ldr r3, [r3, #92] ; 0x5c - 802fffa: f003 031f and.w r3, r3, #31 - 802fffe: 223f movs r2, #63 ; 0x3f - 8030000: 409a lsls r2, r3 - 8030002: 6a3b ldr r3, [r7, #32] - 8030004: 609a str r2, [r3, #8] + 8030036: 687b ldr r3, [r7, #4] + 8030038: 6ddb ldr r3, [r3, #92] ; 0x5c + 803003a: f003 031f and.w r3, r3, #31 + 803003e: 223f movs r2, #63 ; 0x3f + 8030040: 409a lsls r2, r3 + 8030042: 6a3b ldr r3, [r7, #32] + 8030044: 609a str r2, [r3, #8] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8030006: 687b ldr r3, [r7, #4] - 8030008: 2201 movs r2, #1 - 803000a: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 8030046: 687b ldr r3, [r7, #4] + 8030048: 2201 movs r2, #1 + 803004a: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 803000e: 687b ldr r3, [r7, #4] - 8030010: 2200 movs r2, #0 - 8030012: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 803004e: 687b ldr r3, [r7, #4] + 8030050: 2200 movs r2, #0 + 8030052: f883 2034 strb.w r2, [r3, #52] ; 0x34 if(hdma->XferAbortCallback != NULL) - 8030016: 687b ldr r3, [r7, #4] - 8030018: 6d1b ldr r3, [r3, #80] ; 0x50 - 803001a: 2b00 cmp r3, #0 - 803001c: f000 834a beq.w 80306b4 + 8030056: 687b ldr r3, [r7, #4] + 8030058: 6d1b ldr r3, [r3, #80] ; 0x50 + 803005a: 2b00 cmp r3, #0 + 803005c: f000 834a beq.w 80306f4 { hdma->XferAbortCallback(hdma); - 8030020: 687b ldr r3, [r7, #4] - 8030022: 6d1b ldr r3, [r3, #80] ; 0x50 - 8030024: 6878 ldr r0, [r7, #4] - 8030026: 4798 blx r3 + 8030060: 687b ldr r3, [r7, #4] + 8030062: 6d1b ldr r3, [r3, #80] ; 0x50 + 8030064: 6878 ldr r0, [r7, #4] + 8030066: 4798 blx r3 } return; - 8030028: e344 b.n 80306b4 + 8030068: e344 b.n 80306f4 } if(((((DMA_Stream_TypeDef *)hdma->Instance)->CR) & (uint32_t)(DMA_SxCR_DBM)) != 0U) - 803002a: 687b ldr r3, [r7, #4] - 803002c: 681b ldr r3, [r3, #0] - 803002e: 681b ldr r3, [r3, #0] - 8030030: f403 2380 and.w r3, r3, #262144 ; 0x40000 - 8030034: 2b00 cmp r3, #0 - 8030036: d018 beq.n 803006a + 803006a: 687b ldr r3, [r7, #4] + 803006c: 681b ldr r3, [r3, #0] + 803006e: 681b ldr r3, [r3, #0] + 8030070: f403 2380 and.w r3, r3, #262144 ; 0x40000 + 8030074: 2b00 cmp r3, #0 + 8030076: d018 beq.n 80300aa { /* Current memory buffer used is Memory 0 */ if((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_CT) == 0U) - 8030038: 687b ldr r3, [r7, #4] - 803003a: 681b ldr r3, [r3, #0] - 803003c: 681b ldr r3, [r3, #0] - 803003e: f403 2300 and.w r3, r3, #524288 ; 0x80000 - 8030042: 2b00 cmp r3, #0 - 8030044: d108 bne.n 8030058 + 8030078: 687b ldr r3, [r7, #4] + 803007a: 681b ldr r3, [r3, #0] + 803007c: 681b ldr r3, [r3, #0] + 803007e: f403 2300 and.w r3, r3, #524288 ; 0x80000 + 8030082: 2b00 cmp r3, #0 + 8030084: d108 bne.n 8030098 { if(hdma->XferM1CpltCallback != NULL) - 8030046: 687b ldr r3, [r7, #4] - 8030048: 6c5b ldr r3, [r3, #68] ; 0x44 - 803004a: 2b00 cmp r3, #0 - 803004c: d02c beq.n 80300a8 + 8030086: 687b ldr r3, [r7, #4] + 8030088: 6c5b ldr r3, [r3, #68] ; 0x44 + 803008a: 2b00 cmp r3, #0 + 803008c: d02c beq.n 80300e8 { /* Transfer complete Callback for memory1 */ hdma->XferM1CpltCallback(hdma); - 803004e: 687b ldr r3, [r7, #4] - 8030050: 6c5b ldr r3, [r3, #68] ; 0x44 - 8030052: 6878 ldr r0, [r7, #4] - 8030054: 4798 blx r3 - 8030056: e027 b.n 80300a8 + 803008e: 687b ldr r3, [r7, #4] + 8030090: 6c5b ldr r3, [r3, #68] ; 0x44 + 8030092: 6878 ldr r0, [r7, #4] + 8030094: 4798 blx r3 + 8030096: e027 b.n 80300e8 } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferCpltCallback != NULL) - 8030058: 687b ldr r3, [r7, #4] - 803005a: 6bdb ldr r3, [r3, #60] ; 0x3c - 803005c: 2b00 cmp r3, #0 - 803005e: d023 beq.n 80300a8 + 8030098: 687b ldr r3, [r7, #4] + 803009a: 6bdb ldr r3, [r3, #60] ; 0x3c + 803009c: 2b00 cmp r3, #0 + 803009e: d023 beq.n 80300e8 { /* Transfer complete Callback for memory0 */ hdma->XferCpltCallback(hdma); - 8030060: 687b ldr r3, [r7, #4] - 8030062: 6bdb ldr r3, [r3, #60] ; 0x3c - 8030064: 6878 ldr r0, [r7, #4] - 8030066: 4798 blx r3 - 8030068: e01e b.n 80300a8 + 80300a0: 687b ldr r3, [r7, #4] + 80300a2: 6bdb ldr r3, [r3, #60] ; 0x3c + 80300a4: 6878 ldr r0, [r7, #4] + 80300a6: 4798 blx r3 + 80300a8: e01e b.n 80300e8 } } /* Disable the transfer complete interrupt if the DMA mode is not CIRCULAR */ else { if((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_CIRC) == 0U) - 803006a: 687b ldr r3, [r7, #4] - 803006c: 681b ldr r3, [r3, #0] - 803006e: 681b ldr r3, [r3, #0] - 8030070: f403 7380 and.w r3, r3, #256 ; 0x100 - 8030074: 2b00 cmp r3, #0 - 8030076: d10f bne.n 8030098 + 80300aa: 687b ldr r3, [r7, #4] + 80300ac: 681b ldr r3, [r3, #0] + 80300ae: 681b ldr r3, [r3, #0] + 80300b0: f403 7380 and.w r3, r3, #256 ; 0x100 + 80300b4: 2b00 cmp r3, #0 + 80300b6: d10f bne.n 80300d8 { /* Disable the transfer complete interrupt */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= ~(DMA_IT_TC); - 8030078: 687b ldr r3, [r7, #4] - 803007a: 681b ldr r3, [r3, #0] - 803007c: 681a ldr r2, [r3, #0] - 803007e: 687b ldr r3, [r7, #4] - 8030080: 681b ldr r3, [r3, #0] - 8030082: f022 0210 bic.w r2, r2, #16 - 8030086: 601a str r2, [r3, #0] + 80300b8: 687b ldr r3, [r7, #4] + 80300ba: 681b ldr r3, [r3, #0] + 80300bc: 681a ldr r2, [r3, #0] + 80300be: 687b ldr r3, [r7, #4] + 80300c0: 681b ldr r3, [r3, #0] + 80300c2: f022 0210 bic.w r2, r2, #16 + 80300c6: 601a str r2, [r3, #0] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8030088: 687b ldr r3, [r7, #4] - 803008a: 2201 movs r2, #1 - 803008c: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 80300c8: 687b ldr r3, [r7, #4] + 80300ca: 2201 movs r2, #1 + 80300cc: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 8030090: 687b ldr r3, [r7, #4] - 8030092: 2200 movs r2, #0 - 8030094: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 80300d0: 687b ldr r3, [r7, #4] + 80300d2: 2200 movs r2, #0 + 80300d4: f883 2034 strb.w r2, [r3, #52] ; 0x34 } if(hdma->XferCpltCallback != NULL) - 8030098: 687b ldr r3, [r7, #4] - 803009a: 6bdb ldr r3, [r3, #60] ; 0x3c - 803009c: 2b00 cmp r3, #0 - 803009e: d003 beq.n 80300a8 + 80300d8: 687b ldr r3, [r7, #4] + 80300da: 6bdb ldr r3, [r3, #60] ; 0x3c + 80300dc: 2b00 cmp r3, #0 + 80300de: d003 beq.n 80300e8 { /* Transfer complete callback */ hdma->XferCpltCallback(hdma); - 80300a0: 687b ldr r3, [r7, #4] - 80300a2: 6bdb ldr r3, [r3, #60] ; 0x3c - 80300a4: 6878 ldr r0, [r7, #4] - 80300a6: 4798 blx r3 + 80300e0: 687b ldr r3, [r7, #4] + 80300e2: 6bdb ldr r3, [r3, #60] ; 0x3c + 80300e4: 6878 ldr r0, [r7, #4] + 80300e6: 4798 blx r3 } } } /* manage error case */ if(hdma->ErrorCode != HAL_DMA_ERROR_NONE) - 80300a8: 687b ldr r3, [r7, #4] - 80300aa: 6d5b ldr r3, [r3, #84] ; 0x54 - 80300ac: 2b00 cmp r3, #0 - 80300ae: f000 8306 beq.w 80306be + 80300e8: 687b ldr r3, [r7, #4] + 80300ea: 6d5b ldr r3, [r3, #84] ; 0x54 + 80300ec: 2b00 cmp r3, #0 + 80300ee: f000 8306 beq.w 80306fe { if((hdma->ErrorCode & HAL_DMA_ERROR_TE) != 0U) - 80300b2: 687b ldr r3, [r7, #4] - 80300b4: 6d5b ldr r3, [r3, #84] ; 0x54 - 80300b6: f003 0301 and.w r3, r3, #1 - 80300ba: 2b00 cmp r3, #0 - 80300bc: f000 8088 beq.w 80301d0 + 80300f2: 687b ldr r3, [r7, #4] + 80300f4: 6d5b ldr r3, [r3, #84] ; 0x54 + 80300f6: f003 0301 and.w r3, r3, #1 + 80300fa: 2b00 cmp r3, #0 + 80300fc: f000 8088 beq.w 8030210 { hdma->State = HAL_DMA_STATE_ABORT; - 80300c0: 687b ldr r3, [r7, #4] - 80300c2: 2204 movs r2, #4 - 80300c4: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 8030100: 687b ldr r3, [r7, #4] + 8030102: 2204 movs r2, #4 + 8030104: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Disable the stream */ __HAL_DMA_DISABLE(hdma); - 80300c8: 687b ldr r3, [r7, #4] - 80300ca: 681b ldr r3, [r3, #0] - 80300cc: 4a7a ldr r2, [pc, #488] ; (80302b8 ) - 80300ce: 4293 cmp r3, r2 - 80300d0: d04a beq.n 8030168 - 80300d2: 687b ldr r3, [r7, #4] - 80300d4: 681b ldr r3, [r3, #0] - 80300d6: 4a79 ldr r2, [pc, #484] ; (80302bc ) - 80300d8: 4293 cmp r3, r2 - 80300da: d045 beq.n 8030168 - 80300dc: 687b ldr r3, [r7, #4] - 80300de: 681b ldr r3, [r3, #0] - 80300e0: 4a77 ldr r2, [pc, #476] ; (80302c0 ) - 80300e2: 4293 cmp r3, r2 - 80300e4: d040 beq.n 8030168 - 80300e6: 687b ldr r3, [r7, #4] - 80300e8: 681b ldr r3, [r3, #0] - 80300ea: 4a76 ldr r2, [pc, #472] ; (80302c4 ) - 80300ec: 4293 cmp r3, r2 - 80300ee: d03b beq.n 8030168 - 80300f0: 687b ldr r3, [r7, #4] - 80300f2: 681b ldr r3, [r3, #0] - 80300f4: 4a74 ldr r2, [pc, #464] ; (80302c8 ) - 80300f6: 4293 cmp r3, r2 - 80300f8: d036 beq.n 8030168 - 80300fa: 687b ldr r3, [r7, #4] - 80300fc: 681b ldr r3, [r3, #0] - 80300fe: 4a73 ldr r2, [pc, #460] ; (80302cc ) - 8030100: 4293 cmp r3, r2 - 8030102: d031 beq.n 8030168 - 8030104: 687b ldr r3, [r7, #4] - 8030106: 681b ldr r3, [r3, #0] - 8030108: 4a71 ldr r2, [pc, #452] ; (80302d0 ) - 803010a: 4293 cmp r3, r2 - 803010c: d02c beq.n 8030168 - 803010e: 687b ldr r3, [r7, #4] - 8030110: 681b ldr r3, [r3, #0] - 8030112: 4a70 ldr r2, [pc, #448] ; (80302d4 ) - 8030114: 4293 cmp r3, r2 - 8030116: d027 beq.n 8030168 - 8030118: 687b ldr r3, [r7, #4] - 803011a: 681b ldr r3, [r3, #0] - 803011c: 4a6e ldr r2, [pc, #440] ; (80302d8 ) - 803011e: 4293 cmp r3, r2 - 8030120: d022 beq.n 8030168 - 8030122: 687b ldr r3, [r7, #4] - 8030124: 681b ldr r3, [r3, #0] - 8030126: 4a6d ldr r2, [pc, #436] ; (80302dc ) - 8030128: 4293 cmp r3, r2 - 803012a: d01d beq.n 8030168 - 803012c: 687b ldr r3, [r7, #4] - 803012e: 681b ldr r3, [r3, #0] - 8030130: 4a6b ldr r2, [pc, #428] ; (80302e0 ) - 8030132: 4293 cmp r3, r2 - 8030134: d018 beq.n 8030168 - 8030136: 687b ldr r3, [r7, #4] - 8030138: 681b ldr r3, [r3, #0] - 803013a: 4a6a ldr r2, [pc, #424] ; (80302e4 ) - 803013c: 4293 cmp r3, r2 - 803013e: d013 beq.n 8030168 - 8030140: 687b ldr r3, [r7, #4] - 8030142: 681b ldr r3, [r3, #0] - 8030144: 4a68 ldr r2, [pc, #416] ; (80302e8 ) - 8030146: 4293 cmp r3, r2 - 8030148: d00e beq.n 8030168 - 803014a: 687b ldr r3, [r7, #4] - 803014c: 681b ldr r3, [r3, #0] - 803014e: 4a67 ldr r2, [pc, #412] ; (80302ec ) - 8030150: 4293 cmp r3, r2 - 8030152: d009 beq.n 8030168 - 8030154: 687b ldr r3, [r7, #4] - 8030156: 681b ldr r3, [r3, #0] - 8030158: 4a65 ldr r2, [pc, #404] ; (80302f0 ) - 803015a: 4293 cmp r3, r2 - 803015c: d004 beq.n 8030168 - 803015e: 687b ldr r3, [r7, #4] - 8030160: 681b ldr r3, [r3, #0] - 8030162: 4a64 ldr r2, [pc, #400] ; (80302f4 ) - 8030164: 4293 cmp r3, r2 - 8030166: d108 bne.n 803017a - 8030168: 687b ldr r3, [r7, #4] - 803016a: 681b ldr r3, [r3, #0] - 803016c: 681a ldr r2, [r3, #0] - 803016e: 687b ldr r3, [r7, #4] - 8030170: 681b ldr r3, [r3, #0] - 8030172: f022 0201 bic.w r2, r2, #1 - 8030176: 601a str r2, [r3, #0] - 8030178: e007 b.n 803018a - 803017a: 687b ldr r3, [r7, #4] - 803017c: 681b ldr r3, [r3, #0] - 803017e: 681a ldr r2, [r3, #0] + 8030108: 687b ldr r3, [r7, #4] + 803010a: 681b ldr r3, [r3, #0] + 803010c: 4a7a ldr r2, [pc, #488] ; (80302f8 ) + 803010e: 4293 cmp r3, r2 + 8030110: d04a beq.n 80301a8 + 8030112: 687b ldr r3, [r7, #4] + 8030114: 681b ldr r3, [r3, #0] + 8030116: 4a79 ldr r2, [pc, #484] ; (80302fc ) + 8030118: 4293 cmp r3, r2 + 803011a: d045 beq.n 80301a8 + 803011c: 687b ldr r3, [r7, #4] + 803011e: 681b ldr r3, [r3, #0] + 8030120: 4a77 ldr r2, [pc, #476] ; (8030300 ) + 8030122: 4293 cmp r3, r2 + 8030124: d040 beq.n 80301a8 + 8030126: 687b ldr r3, [r7, #4] + 8030128: 681b ldr r3, [r3, #0] + 803012a: 4a76 ldr r2, [pc, #472] ; (8030304 ) + 803012c: 4293 cmp r3, r2 + 803012e: d03b beq.n 80301a8 + 8030130: 687b ldr r3, [r7, #4] + 8030132: 681b ldr r3, [r3, #0] + 8030134: 4a74 ldr r2, [pc, #464] ; (8030308 ) + 8030136: 4293 cmp r3, r2 + 8030138: d036 beq.n 80301a8 + 803013a: 687b ldr r3, [r7, #4] + 803013c: 681b ldr r3, [r3, #0] + 803013e: 4a73 ldr r2, [pc, #460] ; (803030c ) + 8030140: 4293 cmp r3, r2 + 8030142: d031 beq.n 80301a8 + 8030144: 687b ldr r3, [r7, #4] + 8030146: 681b ldr r3, [r3, #0] + 8030148: 4a71 ldr r2, [pc, #452] ; (8030310 ) + 803014a: 4293 cmp r3, r2 + 803014c: d02c beq.n 80301a8 + 803014e: 687b ldr r3, [r7, #4] + 8030150: 681b ldr r3, [r3, #0] + 8030152: 4a70 ldr r2, [pc, #448] ; (8030314 ) + 8030154: 4293 cmp r3, r2 + 8030156: d027 beq.n 80301a8 + 8030158: 687b ldr r3, [r7, #4] + 803015a: 681b ldr r3, [r3, #0] + 803015c: 4a6e ldr r2, [pc, #440] ; (8030318 ) + 803015e: 4293 cmp r3, r2 + 8030160: d022 beq.n 80301a8 + 8030162: 687b ldr r3, [r7, #4] + 8030164: 681b ldr r3, [r3, #0] + 8030166: 4a6d ldr r2, [pc, #436] ; (803031c ) + 8030168: 4293 cmp r3, r2 + 803016a: d01d beq.n 80301a8 + 803016c: 687b ldr r3, [r7, #4] + 803016e: 681b ldr r3, [r3, #0] + 8030170: 4a6b ldr r2, [pc, #428] ; (8030320 ) + 8030172: 4293 cmp r3, r2 + 8030174: d018 beq.n 80301a8 + 8030176: 687b ldr r3, [r7, #4] + 8030178: 681b ldr r3, [r3, #0] + 803017a: 4a6a ldr r2, [pc, #424] ; (8030324 ) + 803017c: 4293 cmp r3, r2 + 803017e: d013 beq.n 80301a8 8030180: 687b ldr r3, [r7, #4] 8030182: 681b ldr r3, [r3, #0] - 8030184: f022 0201 bic.w r2, r2, #1 - 8030188: 601a str r2, [r3, #0] + 8030184: 4a68 ldr r2, [pc, #416] ; (8030328 ) + 8030186: 4293 cmp r3, r2 + 8030188: d00e beq.n 80301a8 + 803018a: 687b ldr r3, [r7, #4] + 803018c: 681b ldr r3, [r3, #0] + 803018e: 4a67 ldr r2, [pc, #412] ; (803032c ) + 8030190: 4293 cmp r3, r2 + 8030192: d009 beq.n 80301a8 + 8030194: 687b ldr r3, [r7, #4] + 8030196: 681b ldr r3, [r3, #0] + 8030198: 4a65 ldr r2, [pc, #404] ; (8030330 ) + 803019a: 4293 cmp r3, r2 + 803019c: d004 beq.n 80301a8 + 803019e: 687b ldr r3, [r7, #4] + 80301a0: 681b ldr r3, [r3, #0] + 80301a2: 4a64 ldr r2, [pc, #400] ; (8030334 ) + 80301a4: 4293 cmp r3, r2 + 80301a6: d108 bne.n 80301ba + 80301a8: 687b ldr r3, [r7, #4] + 80301aa: 681b ldr r3, [r3, #0] + 80301ac: 681a ldr r2, [r3, #0] + 80301ae: 687b ldr r3, [r7, #4] + 80301b0: 681b ldr r3, [r3, #0] + 80301b2: f022 0201 bic.w r2, r2, #1 + 80301b6: 601a str r2, [r3, #0] + 80301b8: e007 b.n 80301ca + 80301ba: 687b ldr r3, [r7, #4] + 80301bc: 681b ldr r3, [r3, #0] + 80301be: 681a ldr r2, [r3, #0] + 80301c0: 687b ldr r3, [r7, #4] + 80301c2: 681b ldr r3, [r3, #0] + 80301c4: f022 0201 bic.w r2, r2, #1 + 80301c8: 601a str r2, [r3, #0] do { if (++count > timeout) - 803018a: 68fb ldr r3, [r7, #12] - 803018c: 3301 adds r3, #1 - 803018e: 60fb str r3, [r7, #12] - 8030190: 6a7a ldr r2, [r7, #36] ; 0x24 - 8030192: 429a cmp r2, r3 - 8030194: d307 bcc.n 80301a6 + 80301ca: 68fb ldr r3, [r7, #12] + 80301cc: 3301 adds r3, #1 + 80301ce: 60fb str r3, [r7, #12] + 80301d0: 6a7a ldr r2, [r7, #36] ; 0x24 + 80301d2: 429a cmp r2, r3 + 80301d4: d307 bcc.n 80301e6 { break; } } while((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U); - 8030196: 687b ldr r3, [r7, #4] - 8030198: 681b ldr r3, [r3, #0] - 803019a: 681b ldr r3, [r3, #0] - 803019c: f003 0301 and.w r3, r3, #1 - 80301a0: 2b00 cmp r3, #0 - 80301a2: d1f2 bne.n 803018a - 80301a4: e000 b.n 80301a8 + 80301d6: 687b ldr r3, [r7, #4] + 80301d8: 681b ldr r3, [r3, #0] + 80301da: 681b ldr r3, [r3, #0] + 80301dc: f003 0301 and.w r3, r3, #1 + 80301e0: 2b00 cmp r3, #0 + 80301e2: d1f2 bne.n 80301ca + 80301e4: e000 b.n 80301e8 break; - 80301a6: bf00 nop + 80301e6: bf00 nop if((((DMA_Stream_TypeDef *)hdma->Instance)->CR & DMA_SxCR_EN) != 0U) - 80301a8: 687b ldr r3, [r7, #4] - 80301aa: 681b ldr r3, [r3, #0] - 80301ac: 681b ldr r3, [r3, #0] - 80301ae: f003 0301 and.w r3, r3, #1 - 80301b2: 2b00 cmp r3, #0 - 80301b4: d004 beq.n 80301c0 + 80301e8: 687b ldr r3, [r7, #4] + 80301ea: 681b ldr r3, [r3, #0] + 80301ec: 681b ldr r3, [r3, #0] + 80301ee: f003 0301 and.w r3, r3, #1 + 80301f2: 2b00 cmp r3, #0 + 80301f4: d004 beq.n 8030200 { /* Change the DMA state to error if DMA disable fails */ hdma->State = HAL_DMA_STATE_ERROR; - 80301b6: 687b ldr r3, [r7, #4] - 80301b8: 2203 movs r2, #3 - 80301ba: f883 2035 strb.w r2, [r3, #53] ; 0x35 - 80301be: e003 b.n 80301c8 + 80301f6: 687b ldr r3, [r7, #4] + 80301f8: 2203 movs r2, #3 + 80301fa: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 80301fe: e003 b.n 8030208 } else { /* Change the DMA state to Ready if DMA disable success */ hdma->State = HAL_DMA_STATE_READY; - 80301c0: 687b ldr r3, [r7, #4] - 80301c2: 2201 movs r2, #1 - 80301c4: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 8030200: 687b ldr r3, [r7, #4] + 8030202: 2201 movs r2, #1 + 8030204: f883 2035 strb.w r2, [r3, #53] ; 0x35 } /* Process Unlocked */ __HAL_UNLOCK(hdma); - 80301c8: 687b ldr r3, [r7, #4] - 80301ca: 2200 movs r2, #0 - 80301cc: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 8030208: 687b ldr r3, [r7, #4] + 803020a: 2200 movs r2, #0 + 803020c: f883 2034 strb.w r2, [r3, #52] ; 0x34 } if(hdma->XferErrorCallback != NULL) - 80301d0: 687b ldr r3, [r7, #4] - 80301d2: 6cdb ldr r3, [r3, #76] ; 0x4c - 80301d4: 2b00 cmp r3, #0 - 80301d6: f000 8272 beq.w 80306be + 8030210: 687b ldr r3, [r7, #4] + 8030212: 6cdb ldr r3, [r3, #76] ; 0x4c + 8030214: 2b00 cmp r3, #0 + 8030216: f000 8272 beq.w 80306fe { /* Transfer error callback */ hdma->XferErrorCallback(hdma); - 80301da: 687b ldr r3, [r7, #4] - 80301dc: 6cdb ldr r3, [r3, #76] ; 0x4c - 80301de: 6878 ldr r0, [r7, #4] - 80301e0: 4798 blx r3 - 80301e2: e26c b.n 80306be + 803021a: 687b ldr r3, [r7, #4] + 803021c: 6cdb ldr r3, [r3, #76] ; 0x4c + 803021e: 6878 ldr r0, [r7, #4] + 8030220: 4798 blx r3 + 8030222: e26c b.n 80306fe } } } else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */ - 80301e4: 687b ldr r3, [r7, #4] - 80301e6: 681b ldr r3, [r3, #0] - 80301e8: 4a43 ldr r2, [pc, #268] ; (80302f8 ) - 80301ea: 4293 cmp r3, r2 - 80301ec: d022 beq.n 8030234 - 80301ee: 687b ldr r3, [r7, #4] - 80301f0: 681b ldr r3, [r3, #0] - 80301f2: 4a42 ldr r2, [pc, #264] ; (80302fc ) - 80301f4: 4293 cmp r3, r2 - 80301f6: d01d beq.n 8030234 - 80301f8: 687b ldr r3, [r7, #4] - 80301fa: 681b ldr r3, [r3, #0] - 80301fc: 4a40 ldr r2, [pc, #256] ; (8030300 ) - 80301fe: 4293 cmp r3, r2 - 8030200: d018 beq.n 8030234 - 8030202: 687b ldr r3, [r7, #4] - 8030204: 681b ldr r3, [r3, #0] - 8030206: 4a3f ldr r2, [pc, #252] ; (8030304 ) - 8030208: 4293 cmp r3, r2 - 803020a: d013 beq.n 8030234 - 803020c: 687b ldr r3, [r7, #4] - 803020e: 681b ldr r3, [r3, #0] - 8030210: 4a3d ldr r2, [pc, #244] ; (8030308 ) - 8030212: 4293 cmp r3, r2 - 8030214: d00e beq.n 8030234 - 8030216: 687b ldr r3, [r7, #4] - 8030218: 681b ldr r3, [r3, #0] - 803021a: 4a3c ldr r2, [pc, #240] ; (803030c ) - 803021c: 4293 cmp r3, r2 - 803021e: d009 beq.n 8030234 - 8030220: 687b ldr r3, [r7, #4] - 8030222: 681b ldr r3, [r3, #0] - 8030224: 4a3a ldr r2, [pc, #232] ; (8030310 ) - 8030226: 4293 cmp r3, r2 - 8030228: d004 beq.n 8030234 - 803022a: 687b ldr r3, [r7, #4] - 803022c: 681b ldr r3, [r3, #0] - 803022e: 4a39 ldr r2, [pc, #228] ; (8030314 ) - 8030230: 4293 cmp r3, r2 - 8030232: d101 bne.n 8030238 - 8030234: 2301 movs r3, #1 - 8030236: e000 b.n 803023a - 8030238: 2300 movs r3, #0 - 803023a: 2b00 cmp r3, #0 - 803023c: f000 823f beq.w 80306be + 8030224: 687b ldr r3, [r7, #4] + 8030226: 681b ldr r3, [r3, #0] + 8030228: 4a43 ldr r2, [pc, #268] ; (8030338 ) + 803022a: 4293 cmp r3, r2 + 803022c: d022 beq.n 8030274 + 803022e: 687b ldr r3, [r7, #4] + 8030230: 681b ldr r3, [r3, #0] + 8030232: 4a42 ldr r2, [pc, #264] ; (803033c ) + 8030234: 4293 cmp r3, r2 + 8030236: d01d beq.n 8030274 + 8030238: 687b ldr r3, [r7, #4] + 803023a: 681b ldr r3, [r3, #0] + 803023c: 4a40 ldr r2, [pc, #256] ; (8030340 ) + 803023e: 4293 cmp r3, r2 + 8030240: d018 beq.n 8030274 + 8030242: 687b ldr r3, [r7, #4] + 8030244: 681b ldr r3, [r3, #0] + 8030246: 4a3f ldr r2, [pc, #252] ; (8030344 ) + 8030248: 4293 cmp r3, r2 + 803024a: d013 beq.n 8030274 + 803024c: 687b ldr r3, [r7, #4] + 803024e: 681b ldr r3, [r3, #0] + 8030250: 4a3d ldr r2, [pc, #244] ; (8030348 ) + 8030252: 4293 cmp r3, r2 + 8030254: d00e beq.n 8030274 + 8030256: 687b ldr r3, [r7, #4] + 8030258: 681b ldr r3, [r3, #0] + 803025a: 4a3c ldr r2, [pc, #240] ; (803034c ) + 803025c: 4293 cmp r3, r2 + 803025e: d009 beq.n 8030274 + 8030260: 687b ldr r3, [r7, #4] + 8030262: 681b ldr r3, [r3, #0] + 8030264: 4a3a ldr r2, [pc, #232] ; (8030350 ) + 8030266: 4293 cmp r3, r2 + 8030268: d004 beq.n 8030274 + 803026a: 687b ldr r3, [r7, #4] + 803026c: 681b ldr r3, [r3, #0] + 803026e: 4a39 ldr r2, [pc, #228] ; (8030354 ) + 8030270: 4293 cmp r3, r2 + 8030272: d101 bne.n 8030278 + 8030274: 2301 movs r3, #1 + 8030276: e000 b.n 803027a + 8030278: 2300 movs r3, #0 + 803027a: 2b00 cmp r3, #0 + 803027c: f000 823f beq.w 80306fe { ccr_reg = (((BDMA_Channel_TypeDef *)hdma->Instance)->CCR); - 8030240: 687b ldr r3, [r7, #4] - 8030242: 681b ldr r3, [r3, #0] - 8030244: 681b ldr r3, [r3, #0] - 8030246: 613b str r3, [r7, #16] + 8030280: 687b ldr r3, [r7, #4] + 8030282: 681b ldr r3, [r3, #0] + 8030284: 681b ldr r3, [r3, #0] + 8030286: 613b str r3, [r7, #16] /* Half Transfer Complete Interrupt management ******************************/ if (((tmpisr_bdma & (BDMA_FLAG_HT0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_HTIE) != 0U)) - 8030248: 687b ldr r3, [r7, #4] - 803024a: 6ddb ldr r3, [r3, #92] ; 0x5c - 803024c: f003 031f and.w r3, r3, #31 - 8030250: 2204 movs r2, #4 - 8030252: 409a lsls r2, r3 - 8030254: 697b ldr r3, [r7, #20] - 8030256: 4013 ands r3, r2 - 8030258: 2b00 cmp r3, #0 - 803025a: f000 80cd beq.w 80303f8 - 803025e: 693b ldr r3, [r7, #16] - 8030260: f003 0304 and.w r3, r3, #4 - 8030264: 2b00 cmp r3, #0 - 8030266: f000 80c7 beq.w 80303f8 + 8030288: 687b ldr r3, [r7, #4] + 803028a: 6ddb ldr r3, [r3, #92] ; 0x5c + 803028c: f003 031f and.w r3, r3, #31 + 8030290: 2204 movs r2, #4 + 8030292: 409a lsls r2, r3 + 8030294: 697b ldr r3, [r7, #20] + 8030296: 4013 ands r3, r2 + 8030298: 2b00 cmp r3, #0 + 803029a: f000 80cd beq.w 8030438 + 803029e: 693b ldr r3, [r7, #16] + 80302a0: f003 0304 and.w r3, r3, #4 + 80302a4: 2b00 cmp r3, #0 + 80302a6: f000 80c7 beq.w 8030438 { /* Clear the half transfer complete flag */ regs_bdma->IFCR = (BDMA_ISR_HTIF0 << (hdma->StreamIndex & 0x1FU)); - 803026a: 687b ldr r3, [r7, #4] - 803026c: 6ddb ldr r3, [r3, #92] ; 0x5c - 803026e: f003 031f and.w r3, r3, #31 - 8030272: 2204 movs r2, #4 - 8030274: 409a lsls r2, r3 - 8030276: 69fb ldr r3, [r7, #28] - 8030278: 605a str r2, [r3, #4] + 80302aa: 687b ldr r3, [r7, #4] + 80302ac: 6ddb ldr r3, [r3, #92] ; 0x5c + 80302ae: f003 031f and.w r3, r3, #31 + 80302b2: 2204 movs r2, #4 + 80302b4: 409a lsls r2, r3 + 80302b6: 69fb ldr r3, [r7, #28] + 80302b8: 605a str r2, [r3, #4] /* Disable the transfer complete interrupt if the DMA mode is Double Buffering */ if((ccr_reg & BDMA_CCR_DBM) != 0U) - 803027a: 693b ldr r3, [r7, #16] - 803027c: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 8030280: 2b00 cmp r3, #0 - 8030282: d049 beq.n 8030318 + 80302ba: 693b ldr r3, [r7, #16] + 80302bc: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 80302c0: 2b00 cmp r3, #0 + 80302c2: d049 beq.n 8030358 { /* Current memory buffer used is Memory 0 */ if((ccr_reg & BDMA_CCR_CT) == 0U) - 8030284: 693b ldr r3, [r7, #16] - 8030286: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 803028a: 2b00 cmp r3, #0 - 803028c: d109 bne.n 80302a2 + 80302c4: 693b ldr r3, [r7, #16] + 80302c6: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 80302ca: 2b00 cmp r3, #0 + 80302cc: d109 bne.n 80302e2 { if(hdma->XferM1HalfCpltCallback != NULL) - 803028e: 687b ldr r3, [r7, #4] - 8030290: 6c9b ldr r3, [r3, #72] ; 0x48 - 8030292: 2b00 cmp r3, #0 - 8030294: f000 8210 beq.w 80306b8 + 80302ce: 687b ldr r3, [r7, #4] + 80302d0: 6c9b ldr r3, [r3, #72] ; 0x48 + 80302d2: 2b00 cmp r3, #0 + 80302d4: f000 8210 beq.w 80306f8 { /* Half transfer Callback for Memory 1 */ hdma->XferM1HalfCpltCallback(hdma); - 8030298: 687b ldr r3, [r7, #4] - 803029a: 6c9b ldr r3, [r3, #72] ; 0x48 - 803029c: 6878 ldr r0, [r7, #4] - 803029e: 4798 blx r3 + 80302d8: 687b ldr r3, [r7, #4] + 80302da: 6c9b ldr r3, [r3, #72] ; 0x48 + 80302dc: 6878 ldr r0, [r7, #4] + 80302de: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 80302a0: e20a b.n 80306b8 + 80302e0: e20a b.n 80306f8 } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferHalfCpltCallback != NULL) - 80302a2: 687b ldr r3, [r7, #4] - 80302a4: 6c1b ldr r3, [r3, #64] ; 0x40 - 80302a6: 2b00 cmp r3, #0 - 80302a8: f000 8206 beq.w 80306b8 + 80302e2: 687b ldr r3, [r7, #4] + 80302e4: 6c1b ldr r3, [r3, #64] ; 0x40 + 80302e6: 2b00 cmp r3, #0 + 80302e8: f000 8206 beq.w 80306f8 { /* Half transfer Callback for Memory 0 */ hdma->XferHalfCpltCallback(hdma); - 80302ac: 687b ldr r3, [r7, #4] - 80302ae: 6c1b ldr r3, [r3, #64] ; 0x40 - 80302b0: 6878 ldr r0, [r7, #4] - 80302b2: 4798 blx r3 + 80302ec: 687b ldr r3, [r7, #4] + 80302ee: 6c1b ldr r3, [r3, #64] ; 0x40 + 80302f0: 6878 ldr r0, [r7, #4] + 80302f2: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 80302b4: e200 b.n 80306b8 - 80302b6: bf00 nop - 80302b8: 40020010 .word 0x40020010 - 80302bc: 40020028 .word 0x40020028 - 80302c0: 40020040 .word 0x40020040 - 80302c4: 40020058 .word 0x40020058 - 80302c8: 40020070 .word 0x40020070 - 80302cc: 40020088 .word 0x40020088 - 80302d0: 400200a0 .word 0x400200a0 - 80302d4: 400200b8 .word 0x400200b8 - 80302d8: 40020410 .word 0x40020410 - 80302dc: 40020428 .word 0x40020428 - 80302e0: 40020440 .word 0x40020440 - 80302e4: 40020458 .word 0x40020458 - 80302e8: 40020470 .word 0x40020470 - 80302ec: 40020488 .word 0x40020488 - 80302f0: 400204a0 .word 0x400204a0 - 80302f4: 400204b8 .word 0x400204b8 - 80302f8: 58025408 .word 0x58025408 - 80302fc: 5802541c .word 0x5802541c - 8030300: 58025430 .word 0x58025430 - 8030304: 58025444 .word 0x58025444 - 8030308: 58025458 .word 0x58025458 - 803030c: 5802546c .word 0x5802546c - 8030310: 58025480 .word 0x58025480 - 8030314: 58025494 .word 0x58025494 + 80302f4: e200 b.n 80306f8 + 80302f6: bf00 nop + 80302f8: 40020010 .word 0x40020010 + 80302fc: 40020028 .word 0x40020028 + 8030300: 40020040 .word 0x40020040 + 8030304: 40020058 .word 0x40020058 + 8030308: 40020070 .word 0x40020070 + 803030c: 40020088 .word 0x40020088 + 8030310: 400200a0 .word 0x400200a0 + 8030314: 400200b8 .word 0x400200b8 + 8030318: 40020410 .word 0x40020410 + 803031c: 40020428 .word 0x40020428 + 8030320: 40020440 .word 0x40020440 + 8030324: 40020458 .word 0x40020458 + 8030328: 40020470 .word 0x40020470 + 803032c: 40020488 .word 0x40020488 + 8030330: 400204a0 .word 0x400204a0 + 8030334: 400204b8 .word 0x400204b8 + 8030338: 58025408 .word 0x58025408 + 803033c: 5802541c .word 0x5802541c + 8030340: 58025430 .word 0x58025430 + 8030344: 58025444 .word 0x58025444 + 8030348: 58025458 .word 0x58025458 + 803034c: 5802546c .word 0x5802546c + 8030350: 58025480 .word 0x58025480 + 8030354: 58025494 .word 0x58025494 } } } else { if((ccr_reg & BDMA_CCR_CIRC) == 0U) - 8030318: 693b ldr r3, [r7, #16] - 803031a: f003 0320 and.w r3, r3, #32 - 803031e: 2b00 cmp r3, #0 - 8030320: d160 bne.n 80303e4 + 8030358: 693b ldr r3, [r7, #16] + 803035a: f003 0320 and.w r3, r3, #32 + 803035e: 2b00 cmp r3, #0 + 8030360: d160 bne.n 8030424 { /* Disable the half transfer interrupt */ __HAL_DMA_DISABLE_IT(hdma, DMA_IT_HT); - 8030322: 687b ldr r3, [r7, #4] - 8030324: 681b ldr r3, [r3, #0] - 8030326: 4a7f ldr r2, [pc, #508] ; (8030524 ) - 8030328: 4293 cmp r3, r2 - 803032a: d04a beq.n 80303c2 - 803032c: 687b ldr r3, [r7, #4] - 803032e: 681b ldr r3, [r3, #0] - 8030330: 4a7d ldr r2, [pc, #500] ; (8030528 ) - 8030332: 4293 cmp r3, r2 - 8030334: d045 beq.n 80303c2 - 8030336: 687b ldr r3, [r7, #4] - 8030338: 681b ldr r3, [r3, #0] - 803033a: 4a7c ldr r2, [pc, #496] ; (803052c ) - 803033c: 4293 cmp r3, r2 - 803033e: d040 beq.n 80303c2 - 8030340: 687b ldr r3, [r7, #4] - 8030342: 681b ldr r3, [r3, #0] - 8030344: 4a7a ldr r2, [pc, #488] ; (8030530 ) - 8030346: 4293 cmp r3, r2 - 8030348: d03b beq.n 80303c2 - 803034a: 687b ldr r3, [r7, #4] - 803034c: 681b ldr r3, [r3, #0] - 803034e: 4a79 ldr r2, [pc, #484] ; (8030534 ) - 8030350: 4293 cmp r3, r2 - 8030352: d036 beq.n 80303c2 - 8030354: 687b ldr r3, [r7, #4] - 8030356: 681b ldr r3, [r3, #0] - 8030358: 4a77 ldr r2, [pc, #476] ; (8030538 ) - 803035a: 4293 cmp r3, r2 - 803035c: d031 beq.n 80303c2 - 803035e: 687b ldr r3, [r7, #4] - 8030360: 681b ldr r3, [r3, #0] - 8030362: 4a76 ldr r2, [pc, #472] ; (803053c ) - 8030364: 4293 cmp r3, r2 - 8030366: d02c beq.n 80303c2 - 8030368: 687b ldr r3, [r7, #4] - 803036a: 681b ldr r3, [r3, #0] - 803036c: 4a74 ldr r2, [pc, #464] ; (8030540 ) - 803036e: 4293 cmp r3, r2 - 8030370: d027 beq.n 80303c2 - 8030372: 687b ldr r3, [r7, #4] - 8030374: 681b ldr r3, [r3, #0] - 8030376: 4a73 ldr r2, [pc, #460] ; (8030544 ) - 8030378: 4293 cmp r3, r2 - 803037a: d022 beq.n 80303c2 - 803037c: 687b ldr r3, [r7, #4] - 803037e: 681b ldr r3, [r3, #0] - 8030380: 4a71 ldr r2, [pc, #452] ; (8030548 ) - 8030382: 4293 cmp r3, r2 - 8030384: d01d beq.n 80303c2 - 8030386: 687b ldr r3, [r7, #4] - 8030388: 681b ldr r3, [r3, #0] - 803038a: 4a70 ldr r2, [pc, #448] ; (803054c ) - 803038c: 4293 cmp r3, r2 - 803038e: d018 beq.n 80303c2 - 8030390: 687b ldr r3, [r7, #4] - 8030392: 681b ldr r3, [r3, #0] - 8030394: 4a6e ldr r2, [pc, #440] ; (8030550 ) - 8030396: 4293 cmp r3, r2 - 8030398: d013 beq.n 80303c2 - 803039a: 687b ldr r3, [r7, #4] - 803039c: 681b ldr r3, [r3, #0] - 803039e: 4a6d ldr r2, [pc, #436] ; (8030554 ) - 80303a0: 4293 cmp r3, r2 - 80303a2: d00e beq.n 80303c2 - 80303a4: 687b ldr r3, [r7, #4] - 80303a6: 681b ldr r3, [r3, #0] - 80303a8: 4a6b ldr r2, [pc, #428] ; (8030558 ) - 80303aa: 4293 cmp r3, r2 - 80303ac: d009 beq.n 80303c2 - 80303ae: 687b ldr r3, [r7, #4] - 80303b0: 681b ldr r3, [r3, #0] - 80303b2: 4a6a ldr r2, [pc, #424] ; (803055c ) - 80303b4: 4293 cmp r3, r2 - 80303b6: d004 beq.n 80303c2 - 80303b8: 687b ldr r3, [r7, #4] - 80303ba: 681b ldr r3, [r3, #0] - 80303bc: 4a68 ldr r2, [pc, #416] ; (8030560 ) - 80303be: 4293 cmp r3, r2 - 80303c0: d108 bne.n 80303d4 - 80303c2: 687b ldr r3, [r7, #4] - 80303c4: 681b ldr r3, [r3, #0] - 80303c6: 681a ldr r2, [r3, #0] - 80303c8: 687b ldr r3, [r7, #4] - 80303ca: 681b ldr r3, [r3, #0] - 80303cc: f022 0208 bic.w r2, r2, #8 - 80303d0: 601a str r2, [r3, #0] - 80303d2: e007 b.n 80303e4 - 80303d4: 687b ldr r3, [r7, #4] - 80303d6: 681b ldr r3, [r3, #0] - 80303d8: 681a ldr r2, [r3, #0] + 8030362: 687b ldr r3, [r7, #4] + 8030364: 681b ldr r3, [r3, #0] + 8030366: 4a7f ldr r2, [pc, #508] ; (8030564 ) + 8030368: 4293 cmp r3, r2 + 803036a: d04a beq.n 8030402 + 803036c: 687b ldr r3, [r7, #4] + 803036e: 681b ldr r3, [r3, #0] + 8030370: 4a7d ldr r2, [pc, #500] ; (8030568 ) + 8030372: 4293 cmp r3, r2 + 8030374: d045 beq.n 8030402 + 8030376: 687b ldr r3, [r7, #4] + 8030378: 681b ldr r3, [r3, #0] + 803037a: 4a7c ldr r2, [pc, #496] ; (803056c ) + 803037c: 4293 cmp r3, r2 + 803037e: d040 beq.n 8030402 + 8030380: 687b ldr r3, [r7, #4] + 8030382: 681b ldr r3, [r3, #0] + 8030384: 4a7a ldr r2, [pc, #488] ; (8030570 ) + 8030386: 4293 cmp r3, r2 + 8030388: d03b beq.n 8030402 + 803038a: 687b ldr r3, [r7, #4] + 803038c: 681b ldr r3, [r3, #0] + 803038e: 4a79 ldr r2, [pc, #484] ; (8030574 ) + 8030390: 4293 cmp r3, r2 + 8030392: d036 beq.n 8030402 + 8030394: 687b ldr r3, [r7, #4] + 8030396: 681b ldr r3, [r3, #0] + 8030398: 4a77 ldr r2, [pc, #476] ; (8030578 ) + 803039a: 4293 cmp r3, r2 + 803039c: d031 beq.n 8030402 + 803039e: 687b ldr r3, [r7, #4] + 80303a0: 681b ldr r3, [r3, #0] + 80303a2: 4a76 ldr r2, [pc, #472] ; (803057c ) + 80303a4: 4293 cmp r3, r2 + 80303a6: d02c beq.n 8030402 + 80303a8: 687b ldr r3, [r7, #4] + 80303aa: 681b ldr r3, [r3, #0] + 80303ac: 4a74 ldr r2, [pc, #464] ; (8030580 ) + 80303ae: 4293 cmp r3, r2 + 80303b0: d027 beq.n 8030402 + 80303b2: 687b ldr r3, [r7, #4] + 80303b4: 681b ldr r3, [r3, #0] + 80303b6: 4a73 ldr r2, [pc, #460] ; (8030584 ) + 80303b8: 4293 cmp r3, r2 + 80303ba: d022 beq.n 8030402 + 80303bc: 687b ldr r3, [r7, #4] + 80303be: 681b ldr r3, [r3, #0] + 80303c0: 4a71 ldr r2, [pc, #452] ; (8030588 ) + 80303c2: 4293 cmp r3, r2 + 80303c4: d01d beq.n 8030402 + 80303c6: 687b ldr r3, [r7, #4] + 80303c8: 681b ldr r3, [r3, #0] + 80303ca: 4a70 ldr r2, [pc, #448] ; (803058c ) + 80303cc: 4293 cmp r3, r2 + 80303ce: d018 beq.n 8030402 + 80303d0: 687b ldr r3, [r7, #4] + 80303d2: 681b ldr r3, [r3, #0] + 80303d4: 4a6e ldr r2, [pc, #440] ; (8030590 ) + 80303d6: 4293 cmp r3, r2 + 80303d8: d013 beq.n 8030402 80303da: 687b ldr r3, [r7, #4] 80303dc: 681b ldr r3, [r3, #0] - 80303de: f022 0204 bic.w r2, r2, #4 - 80303e2: 601a str r2, [r3, #0] + 80303de: 4a6d ldr r2, [pc, #436] ; (8030594 ) + 80303e0: 4293 cmp r3, r2 + 80303e2: d00e beq.n 8030402 + 80303e4: 687b ldr r3, [r7, #4] + 80303e6: 681b ldr r3, [r3, #0] + 80303e8: 4a6b ldr r2, [pc, #428] ; (8030598 ) + 80303ea: 4293 cmp r3, r2 + 80303ec: d009 beq.n 8030402 + 80303ee: 687b ldr r3, [r7, #4] + 80303f0: 681b ldr r3, [r3, #0] + 80303f2: 4a6a ldr r2, [pc, #424] ; (803059c ) + 80303f4: 4293 cmp r3, r2 + 80303f6: d004 beq.n 8030402 + 80303f8: 687b ldr r3, [r7, #4] + 80303fa: 681b ldr r3, [r3, #0] + 80303fc: 4a68 ldr r2, [pc, #416] ; (80305a0 ) + 80303fe: 4293 cmp r3, r2 + 8030400: d108 bne.n 8030414 + 8030402: 687b ldr r3, [r7, #4] + 8030404: 681b ldr r3, [r3, #0] + 8030406: 681a ldr r2, [r3, #0] + 8030408: 687b ldr r3, [r7, #4] + 803040a: 681b ldr r3, [r3, #0] + 803040c: f022 0208 bic.w r2, r2, #8 + 8030410: 601a str r2, [r3, #0] + 8030412: e007 b.n 8030424 + 8030414: 687b ldr r3, [r7, #4] + 8030416: 681b ldr r3, [r3, #0] + 8030418: 681a ldr r2, [r3, #0] + 803041a: 687b ldr r3, [r7, #4] + 803041c: 681b ldr r3, [r3, #0] + 803041e: f022 0204 bic.w r2, r2, #4 + 8030422: 601a str r2, [r3, #0] } /* DMA peripheral state is not updated in Half Transfer */ /* but in Transfer Complete case */ if(hdma->XferHalfCpltCallback != NULL) - 80303e4: 687b ldr r3, [r7, #4] - 80303e6: 6c1b ldr r3, [r3, #64] ; 0x40 - 80303e8: 2b00 cmp r3, #0 - 80303ea: f000 8165 beq.w 80306b8 + 8030424: 687b ldr r3, [r7, #4] + 8030426: 6c1b ldr r3, [r3, #64] ; 0x40 + 8030428: 2b00 cmp r3, #0 + 803042a: f000 8165 beq.w 80306f8 { /* Half transfer callback */ hdma->XferHalfCpltCallback(hdma); - 80303ee: 687b ldr r3, [r7, #4] - 80303f0: 6c1b ldr r3, [r3, #64] ; 0x40 - 80303f2: 6878 ldr r0, [r7, #4] - 80303f4: 4798 blx r3 + 803042e: 687b ldr r3, [r7, #4] + 8030430: 6c1b ldr r3, [r3, #64] ; 0x40 + 8030432: 6878 ldr r0, [r7, #4] + 8030434: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 80303f6: e15f b.n 80306b8 + 8030436: e15f b.n 80306f8 } } } /* Transfer Complete Interrupt management ***********************************/ else if (((tmpisr_bdma & (BDMA_FLAG_TC0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_TCIE) != 0U)) - 80303f8: 687b ldr r3, [r7, #4] - 80303fa: 6ddb ldr r3, [r3, #92] ; 0x5c - 80303fc: f003 031f and.w r3, r3, #31 - 8030400: 2202 movs r2, #2 - 8030402: 409a lsls r2, r3 - 8030404: 697b ldr r3, [r7, #20] - 8030406: 4013 ands r3, r2 - 8030408: 2b00 cmp r3, #0 - 803040a: f000 80c5 beq.w 8030598 - 803040e: 693b ldr r3, [r7, #16] - 8030410: f003 0302 and.w r3, r3, #2 - 8030414: 2b00 cmp r3, #0 - 8030416: f000 80bf beq.w 8030598 + 8030438: 687b ldr r3, [r7, #4] + 803043a: 6ddb ldr r3, [r3, #92] ; 0x5c + 803043c: f003 031f and.w r3, r3, #31 + 8030440: 2202 movs r2, #2 + 8030442: 409a lsls r2, r3 + 8030444: 697b ldr r3, [r7, #20] + 8030446: 4013 ands r3, r2 + 8030448: 2b00 cmp r3, #0 + 803044a: f000 80c5 beq.w 80305d8 + 803044e: 693b ldr r3, [r7, #16] + 8030450: f003 0302 and.w r3, r3, #2 + 8030454: 2b00 cmp r3, #0 + 8030456: f000 80bf beq.w 80305d8 { /* Clear the transfer complete flag */ regs_bdma->IFCR = (BDMA_ISR_TCIF0) << (hdma->StreamIndex & 0x1FU); - 803041a: 687b ldr r3, [r7, #4] - 803041c: 6ddb ldr r3, [r3, #92] ; 0x5c - 803041e: f003 031f and.w r3, r3, #31 - 8030422: 2202 movs r2, #2 - 8030424: 409a lsls r2, r3 - 8030426: 69fb ldr r3, [r7, #28] - 8030428: 605a str r2, [r3, #4] + 803045a: 687b ldr r3, [r7, #4] + 803045c: 6ddb ldr r3, [r3, #92] ; 0x5c + 803045e: f003 031f and.w r3, r3, #31 + 8030462: 2202 movs r2, #2 + 8030464: 409a lsls r2, r3 + 8030466: 69fb ldr r3, [r7, #28] + 8030468: 605a str r2, [r3, #4] /* Disable the transfer complete interrupt if the DMA mode is Double Buffering */ if((ccr_reg & BDMA_CCR_DBM) != 0U) - 803042a: 693b ldr r3, [r7, #16] - 803042c: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 8030430: 2b00 cmp r3, #0 - 8030432: d018 beq.n 8030466 + 803046a: 693b ldr r3, [r7, #16] + 803046c: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 8030470: 2b00 cmp r3, #0 + 8030472: d018 beq.n 80304a6 { /* Current memory buffer used is Memory 0 */ if((ccr_reg & BDMA_CCR_CT) == 0U) - 8030434: 693b ldr r3, [r7, #16] - 8030436: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 803043a: 2b00 cmp r3, #0 - 803043c: d109 bne.n 8030452 + 8030474: 693b ldr r3, [r7, #16] + 8030476: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 803047a: 2b00 cmp r3, #0 + 803047c: d109 bne.n 8030492 { if(hdma->XferM1CpltCallback != NULL) - 803043e: 687b ldr r3, [r7, #4] - 8030440: 6c5b ldr r3, [r3, #68] ; 0x44 - 8030442: 2b00 cmp r3, #0 - 8030444: f000 813a beq.w 80306bc + 803047e: 687b ldr r3, [r7, #4] + 8030480: 6c5b ldr r3, [r3, #68] ; 0x44 + 8030482: 2b00 cmp r3, #0 + 8030484: f000 813a beq.w 80306fc { /* Transfer complete Callback for Memory 1 */ hdma->XferM1CpltCallback(hdma); - 8030448: 687b ldr r3, [r7, #4] - 803044a: 6c5b ldr r3, [r3, #68] ; 0x44 - 803044c: 6878 ldr r0, [r7, #4] - 803044e: 4798 blx r3 + 8030488: 687b ldr r3, [r7, #4] + 803048a: 6c5b ldr r3, [r3, #68] ; 0x44 + 803048c: 6878 ldr r0, [r7, #4] + 803048e: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 8030450: e134 b.n 80306bc + 8030490: e134 b.n 80306fc } } /* Current memory buffer used is Memory 1 */ else { if(hdma->XferCpltCallback != NULL) - 8030452: 687b ldr r3, [r7, #4] - 8030454: 6bdb ldr r3, [r3, #60] ; 0x3c - 8030456: 2b00 cmp r3, #0 - 8030458: f000 8130 beq.w 80306bc + 8030492: 687b ldr r3, [r7, #4] + 8030494: 6bdb ldr r3, [r3, #60] ; 0x3c + 8030496: 2b00 cmp r3, #0 + 8030498: f000 8130 beq.w 80306fc { /* Transfer complete Callback for Memory 0 */ hdma->XferCpltCallback(hdma); - 803045c: 687b ldr r3, [r7, #4] - 803045e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8030460: 6878 ldr r0, [r7, #4] - 8030462: 4798 blx r3 + 803049c: 687b ldr r3, [r7, #4] + 803049e: 6bdb ldr r3, [r3, #60] ; 0x3c + 80304a0: 6878 ldr r0, [r7, #4] + 80304a2: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 8030464: e12a b.n 80306bc + 80304a4: e12a b.n 80306fc } } } else { if((ccr_reg & BDMA_CCR_CIRC) == 0U) - 8030466: 693b ldr r3, [r7, #16] - 8030468: f003 0320 and.w r3, r3, #32 - 803046c: 2b00 cmp r3, #0 - 803046e: f040 8089 bne.w 8030584 + 80304a6: 693b ldr r3, [r7, #16] + 80304a8: f003 0320 and.w r3, r3, #32 + 80304ac: 2b00 cmp r3, #0 + 80304ae: f040 8089 bne.w 80305c4 { /* Disable the transfer complete and error interrupt, if the DMA mode is not CIRCULAR */ __HAL_DMA_DISABLE_IT(hdma, DMA_IT_TE | DMA_IT_TC); - 8030472: 687b ldr r3, [r7, #4] - 8030474: 681b ldr r3, [r3, #0] - 8030476: 4a2b ldr r2, [pc, #172] ; (8030524 ) - 8030478: 4293 cmp r3, r2 - 803047a: d04a beq.n 8030512 - 803047c: 687b ldr r3, [r7, #4] - 803047e: 681b ldr r3, [r3, #0] - 8030480: 4a29 ldr r2, [pc, #164] ; (8030528 ) - 8030482: 4293 cmp r3, r2 - 8030484: d045 beq.n 8030512 - 8030486: 687b ldr r3, [r7, #4] - 8030488: 681b ldr r3, [r3, #0] - 803048a: 4a28 ldr r2, [pc, #160] ; (803052c ) - 803048c: 4293 cmp r3, r2 - 803048e: d040 beq.n 8030512 - 8030490: 687b ldr r3, [r7, #4] - 8030492: 681b ldr r3, [r3, #0] - 8030494: 4a26 ldr r2, [pc, #152] ; (8030530 ) - 8030496: 4293 cmp r3, r2 - 8030498: d03b beq.n 8030512 - 803049a: 687b ldr r3, [r7, #4] - 803049c: 681b ldr r3, [r3, #0] - 803049e: 4a25 ldr r2, [pc, #148] ; (8030534 ) - 80304a0: 4293 cmp r3, r2 - 80304a2: d036 beq.n 8030512 - 80304a4: 687b ldr r3, [r7, #4] - 80304a6: 681b ldr r3, [r3, #0] - 80304a8: 4a23 ldr r2, [pc, #140] ; (8030538 ) - 80304aa: 4293 cmp r3, r2 - 80304ac: d031 beq.n 8030512 - 80304ae: 687b ldr r3, [r7, #4] - 80304b0: 681b ldr r3, [r3, #0] - 80304b2: 4a22 ldr r2, [pc, #136] ; (803053c ) - 80304b4: 4293 cmp r3, r2 - 80304b6: d02c beq.n 8030512 - 80304b8: 687b ldr r3, [r7, #4] - 80304ba: 681b ldr r3, [r3, #0] - 80304bc: 4a20 ldr r2, [pc, #128] ; (8030540 ) - 80304be: 4293 cmp r3, r2 - 80304c0: d027 beq.n 8030512 - 80304c2: 687b ldr r3, [r7, #4] - 80304c4: 681b ldr r3, [r3, #0] - 80304c6: 4a1f ldr r2, [pc, #124] ; (8030544 ) - 80304c8: 4293 cmp r3, r2 - 80304ca: d022 beq.n 8030512 - 80304cc: 687b ldr r3, [r7, #4] - 80304ce: 681b ldr r3, [r3, #0] - 80304d0: 4a1d ldr r2, [pc, #116] ; (8030548 ) - 80304d2: 4293 cmp r3, r2 - 80304d4: d01d beq.n 8030512 - 80304d6: 687b ldr r3, [r7, #4] - 80304d8: 681b ldr r3, [r3, #0] - 80304da: 4a1c ldr r2, [pc, #112] ; (803054c ) - 80304dc: 4293 cmp r3, r2 - 80304de: d018 beq.n 8030512 - 80304e0: 687b ldr r3, [r7, #4] - 80304e2: 681b ldr r3, [r3, #0] - 80304e4: 4a1a ldr r2, [pc, #104] ; (8030550 ) - 80304e6: 4293 cmp r3, r2 - 80304e8: d013 beq.n 8030512 - 80304ea: 687b ldr r3, [r7, #4] - 80304ec: 681b ldr r3, [r3, #0] - 80304ee: 4a19 ldr r2, [pc, #100] ; (8030554 ) - 80304f0: 4293 cmp r3, r2 - 80304f2: d00e beq.n 8030512 - 80304f4: 687b ldr r3, [r7, #4] - 80304f6: 681b ldr r3, [r3, #0] - 80304f8: 4a17 ldr r2, [pc, #92] ; (8030558 ) - 80304fa: 4293 cmp r3, r2 - 80304fc: d009 beq.n 8030512 - 80304fe: 687b ldr r3, [r7, #4] - 8030500: 681b ldr r3, [r3, #0] - 8030502: 4a16 ldr r2, [pc, #88] ; (803055c ) - 8030504: 4293 cmp r3, r2 - 8030506: d004 beq.n 8030512 - 8030508: 687b ldr r3, [r7, #4] - 803050a: 681b ldr r3, [r3, #0] - 803050c: 4a14 ldr r2, [pc, #80] ; (8030560 ) - 803050e: 4293 cmp r3, r2 - 8030510: d128 bne.n 8030564 - 8030512: 687b ldr r3, [r7, #4] - 8030514: 681b ldr r3, [r3, #0] - 8030516: 681a ldr r2, [r3, #0] - 8030518: 687b ldr r3, [r7, #4] - 803051a: 681b ldr r3, [r3, #0] - 803051c: f022 0214 bic.w r2, r2, #20 - 8030520: 601a str r2, [r3, #0] - 8030522: e027 b.n 8030574 - 8030524: 40020010 .word 0x40020010 - 8030528: 40020028 .word 0x40020028 - 803052c: 40020040 .word 0x40020040 - 8030530: 40020058 .word 0x40020058 - 8030534: 40020070 .word 0x40020070 - 8030538: 40020088 .word 0x40020088 - 803053c: 400200a0 .word 0x400200a0 - 8030540: 400200b8 .word 0x400200b8 - 8030544: 40020410 .word 0x40020410 - 8030548: 40020428 .word 0x40020428 - 803054c: 40020440 .word 0x40020440 - 8030550: 40020458 .word 0x40020458 - 8030554: 40020470 .word 0x40020470 - 8030558: 40020488 .word 0x40020488 - 803055c: 400204a0 .word 0x400204a0 - 8030560: 400204b8 .word 0x400204b8 - 8030564: 687b ldr r3, [r7, #4] - 8030566: 681b ldr r3, [r3, #0] - 8030568: 681a ldr r2, [r3, #0] - 803056a: 687b ldr r3, [r7, #4] - 803056c: 681b ldr r3, [r3, #0] - 803056e: f022 020a bic.w r2, r2, #10 - 8030572: 601a str r2, [r3, #0] + 80304b2: 687b ldr r3, [r7, #4] + 80304b4: 681b ldr r3, [r3, #0] + 80304b6: 4a2b ldr r2, [pc, #172] ; (8030564 ) + 80304b8: 4293 cmp r3, r2 + 80304ba: d04a beq.n 8030552 + 80304bc: 687b ldr r3, [r7, #4] + 80304be: 681b ldr r3, [r3, #0] + 80304c0: 4a29 ldr r2, [pc, #164] ; (8030568 ) + 80304c2: 4293 cmp r3, r2 + 80304c4: d045 beq.n 8030552 + 80304c6: 687b ldr r3, [r7, #4] + 80304c8: 681b ldr r3, [r3, #0] + 80304ca: 4a28 ldr r2, [pc, #160] ; (803056c ) + 80304cc: 4293 cmp r3, r2 + 80304ce: d040 beq.n 8030552 + 80304d0: 687b ldr r3, [r7, #4] + 80304d2: 681b ldr r3, [r3, #0] + 80304d4: 4a26 ldr r2, [pc, #152] ; (8030570 ) + 80304d6: 4293 cmp r3, r2 + 80304d8: d03b beq.n 8030552 + 80304da: 687b ldr r3, [r7, #4] + 80304dc: 681b ldr r3, [r3, #0] + 80304de: 4a25 ldr r2, [pc, #148] ; (8030574 ) + 80304e0: 4293 cmp r3, r2 + 80304e2: d036 beq.n 8030552 + 80304e4: 687b ldr r3, [r7, #4] + 80304e6: 681b ldr r3, [r3, #0] + 80304e8: 4a23 ldr r2, [pc, #140] ; (8030578 ) + 80304ea: 4293 cmp r3, r2 + 80304ec: d031 beq.n 8030552 + 80304ee: 687b ldr r3, [r7, #4] + 80304f0: 681b ldr r3, [r3, #0] + 80304f2: 4a22 ldr r2, [pc, #136] ; (803057c ) + 80304f4: 4293 cmp r3, r2 + 80304f6: d02c beq.n 8030552 + 80304f8: 687b ldr r3, [r7, #4] + 80304fa: 681b ldr r3, [r3, #0] + 80304fc: 4a20 ldr r2, [pc, #128] ; (8030580 ) + 80304fe: 4293 cmp r3, r2 + 8030500: d027 beq.n 8030552 + 8030502: 687b ldr r3, [r7, #4] + 8030504: 681b ldr r3, [r3, #0] + 8030506: 4a1f ldr r2, [pc, #124] ; (8030584 ) + 8030508: 4293 cmp r3, r2 + 803050a: d022 beq.n 8030552 + 803050c: 687b ldr r3, [r7, #4] + 803050e: 681b ldr r3, [r3, #0] + 8030510: 4a1d ldr r2, [pc, #116] ; (8030588 ) + 8030512: 4293 cmp r3, r2 + 8030514: d01d beq.n 8030552 + 8030516: 687b ldr r3, [r7, #4] + 8030518: 681b ldr r3, [r3, #0] + 803051a: 4a1c ldr r2, [pc, #112] ; (803058c ) + 803051c: 4293 cmp r3, r2 + 803051e: d018 beq.n 8030552 + 8030520: 687b ldr r3, [r7, #4] + 8030522: 681b ldr r3, [r3, #0] + 8030524: 4a1a ldr r2, [pc, #104] ; (8030590 ) + 8030526: 4293 cmp r3, r2 + 8030528: d013 beq.n 8030552 + 803052a: 687b ldr r3, [r7, #4] + 803052c: 681b ldr r3, [r3, #0] + 803052e: 4a19 ldr r2, [pc, #100] ; (8030594 ) + 8030530: 4293 cmp r3, r2 + 8030532: d00e beq.n 8030552 + 8030534: 687b ldr r3, [r7, #4] + 8030536: 681b ldr r3, [r3, #0] + 8030538: 4a17 ldr r2, [pc, #92] ; (8030598 ) + 803053a: 4293 cmp r3, r2 + 803053c: d009 beq.n 8030552 + 803053e: 687b ldr r3, [r7, #4] + 8030540: 681b ldr r3, [r3, #0] + 8030542: 4a16 ldr r2, [pc, #88] ; (803059c ) + 8030544: 4293 cmp r3, r2 + 8030546: d004 beq.n 8030552 + 8030548: 687b ldr r3, [r7, #4] + 803054a: 681b ldr r3, [r3, #0] + 803054c: 4a14 ldr r2, [pc, #80] ; (80305a0 ) + 803054e: 4293 cmp r3, r2 + 8030550: d128 bne.n 80305a4 + 8030552: 687b ldr r3, [r7, #4] + 8030554: 681b ldr r3, [r3, #0] + 8030556: 681a ldr r2, [r3, #0] + 8030558: 687b ldr r3, [r7, #4] + 803055a: 681b ldr r3, [r3, #0] + 803055c: f022 0214 bic.w r2, r2, #20 + 8030560: 601a str r2, [r3, #0] + 8030562: e027 b.n 80305b4 + 8030564: 40020010 .word 0x40020010 + 8030568: 40020028 .word 0x40020028 + 803056c: 40020040 .word 0x40020040 + 8030570: 40020058 .word 0x40020058 + 8030574: 40020070 .word 0x40020070 + 8030578: 40020088 .word 0x40020088 + 803057c: 400200a0 .word 0x400200a0 + 8030580: 400200b8 .word 0x400200b8 + 8030584: 40020410 .word 0x40020410 + 8030588: 40020428 .word 0x40020428 + 803058c: 40020440 .word 0x40020440 + 8030590: 40020458 .word 0x40020458 + 8030594: 40020470 .word 0x40020470 + 8030598: 40020488 .word 0x40020488 + 803059c: 400204a0 .word 0x400204a0 + 80305a0: 400204b8 .word 0x400204b8 + 80305a4: 687b ldr r3, [r7, #4] + 80305a6: 681b ldr r3, [r3, #0] + 80305a8: 681a ldr r2, [r3, #0] + 80305aa: 687b ldr r3, [r7, #4] + 80305ac: 681b ldr r3, [r3, #0] + 80305ae: f022 020a bic.w r2, r2, #10 + 80305b2: 601a str r2, [r3, #0] /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8030574: 687b ldr r3, [r7, #4] - 8030576: 2201 movs r2, #1 - 8030578: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 80305b4: 687b ldr r3, [r7, #4] + 80305b6: 2201 movs r2, #1 + 80305b8: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 803057c: 687b ldr r3, [r7, #4] - 803057e: 2200 movs r2, #0 - 8030580: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 80305bc: 687b ldr r3, [r7, #4] + 80305be: 2200 movs r2, #0 + 80305c0: f883 2034 strb.w r2, [r3, #52] ; 0x34 } if(hdma->XferCpltCallback != NULL) - 8030584: 687b ldr r3, [r7, #4] - 8030586: 6bdb ldr r3, [r3, #60] ; 0x3c - 8030588: 2b00 cmp r3, #0 - 803058a: f000 8097 beq.w 80306bc + 80305c4: 687b ldr r3, [r7, #4] + 80305c6: 6bdb ldr r3, [r3, #60] ; 0x3c + 80305c8: 2b00 cmp r3, #0 + 80305ca: f000 8097 beq.w 80306fc { /* Transfer complete callback */ hdma->XferCpltCallback(hdma); - 803058e: 687b ldr r3, [r7, #4] - 8030590: 6bdb ldr r3, [r3, #60] ; 0x3c - 8030592: 6878 ldr r0, [r7, #4] - 8030594: 4798 blx r3 + 80305ce: 687b ldr r3, [r7, #4] + 80305d0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80305d2: 6878 ldr r0, [r7, #4] + 80305d4: 4798 blx r3 if((ccr_reg & BDMA_CCR_DBM) != 0U) - 8030596: e091 b.n 80306bc + 80305d6: e091 b.n 80306fc } } } /* Transfer Error Interrupt management **************************************/ else if (((tmpisr_bdma & (BDMA_FLAG_TE0 << (hdma->StreamIndex & 0x1FU))) != 0U) && ((ccr_reg & BDMA_CCR_TEIE) != 0U)) - 8030598: 687b ldr r3, [r7, #4] - 803059a: 6ddb ldr r3, [r3, #92] ; 0x5c - 803059c: f003 031f and.w r3, r3, #31 - 80305a0: 2208 movs r2, #8 - 80305a2: 409a lsls r2, r3 - 80305a4: 697b ldr r3, [r7, #20] - 80305a6: 4013 ands r3, r2 - 80305a8: 2b00 cmp r3, #0 - 80305aa: f000 8088 beq.w 80306be - 80305ae: 693b ldr r3, [r7, #16] - 80305b0: f003 0308 and.w r3, r3, #8 - 80305b4: 2b00 cmp r3, #0 - 80305b6: f000 8082 beq.w 80306be + 80305d8: 687b ldr r3, [r7, #4] + 80305da: 6ddb ldr r3, [r3, #92] ; 0x5c + 80305dc: f003 031f and.w r3, r3, #31 + 80305e0: 2208 movs r2, #8 + 80305e2: 409a lsls r2, r3 + 80305e4: 697b ldr r3, [r7, #20] + 80305e6: 4013 ands r3, r2 + 80305e8: 2b00 cmp r3, #0 + 80305ea: f000 8088 beq.w 80306fe + 80305ee: 693b ldr r3, [r7, #16] + 80305f0: f003 0308 and.w r3, r3, #8 + 80305f4: 2b00 cmp r3, #0 + 80305f6: f000 8082 beq.w 80306fe { /* When a DMA transfer error occurs */ /* A hardware clear of its EN bits is performed */ /* Disable ALL DMA IT */ __HAL_DMA_DISABLE_IT(hdma, (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)); - 80305ba: 687b ldr r3, [r7, #4] - 80305bc: 681b ldr r3, [r3, #0] - 80305be: 4a41 ldr r2, [pc, #260] ; (80306c4 ) - 80305c0: 4293 cmp r3, r2 - 80305c2: d04a beq.n 803065a - 80305c4: 687b ldr r3, [r7, #4] - 80305c6: 681b ldr r3, [r3, #0] - 80305c8: 4a3f ldr r2, [pc, #252] ; (80306c8 ) - 80305ca: 4293 cmp r3, r2 - 80305cc: d045 beq.n 803065a - 80305ce: 687b ldr r3, [r7, #4] - 80305d0: 681b ldr r3, [r3, #0] - 80305d2: 4a3e ldr r2, [pc, #248] ; (80306cc ) - 80305d4: 4293 cmp r3, r2 - 80305d6: d040 beq.n 803065a - 80305d8: 687b ldr r3, [r7, #4] - 80305da: 681b ldr r3, [r3, #0] - 80305dc: 4a3c ldr r2, [pc, #240] ; (80306d0 ) - 80305de: 4293 cmp r3, r2 - 80305e0: d03b beq.n 803065a - 80305e2: 687b ldr r3, [r7, #4] - 80305e4: 681b ldr r3, [r3, #0] - 80305e6: 4a3b ldr r2, [pc, #236] ; (80306d4 ) - 80305e8: 4293 cmp r3, r2 - 80305ea: d036 beq.n 803065a - 80305ec: 687b ldr r3, [r7, #4] - 80305ee: 681b ldr r3, [r3, #0] - 80305f0: 4a39 ldr r2, [pc, #228] ; (80306d8 ) - 80305f2: 4293 cmp r3, r2 - 80305f4: d031 beq.n 803065a - 80305f6: 687b ldr r3, [r7, #4] - 80305f8: 681b ldr r3, [r3, #0] - 80305fa: 4a38 ldr r2, [pc, #224] ; (80306dc ) - 80305fc: 4293 cmp r3, r2 - 80305fe: d02c beq.n 803065a - 8030600: 687b ldr r3, [r7, #4] - 8030602: 681b ldr r3, [r3, #0] - 8030604: 4a36 ldr r2, [pc, #216] ; (80306e0 ) - 8030606: 4293 cmp r3, r2 - 8030608: d027 beq.n 803065a - 803060a: 687b ldr r3, [r7, #4] - 803060c: 681b ldr r3, [r3, #0] - 803060e: 4a35 ldr r2, [pc, #212] ; (80306e4 ) - 8030610: 4293 cmp r3, r2 - 8030612: d022 beq.n 803065a - 8030614: 687b ldr r3, [r7, #4] - 8030616: 681b ldr r3, [r3, #0] - 8030618: 4a33 ldr r2, [pc, #204] ; (80306e8 ) - 803061a: 4293 cmp r3, r2 - 803061c: d01d beq.n 803065a - 803061e: 687b ldr r3, [r7, #4] - 8030620: 681b ldr r3, [r3, #0] - 8030622: 4a32 ldr r2, [pc, #200] ; (80306ec ) - 8030624: 4293 cmp r3, r2 - 8030626: d018 beq.n 803065a - 8030628: 687b ldr r3, [r7, #4] - 803062a: 681b ldr r3, [r3, #0] - 803062c: 4a30 ldr r2, [pc, #192] ; (80306f0 ) - 803062e: 4293 cmp r3, r2 - 8030630: d013 beq.n 803065a - 8030632: 687b ldr r3, [r7, #4] - 8030634: 681b ldr r3, [r3, #0] - 8030636: 4a2f ldr r2, [pc, #188] ; (80306f4 ) - 8030638: 4293 cmp r3, r2 - 803063a: d00e beq.n 803065a - 803063c: 687b ldr r3, [r7, #4] - 803063e: 681b ldr r3, [r3, #0] - 8030640: 4a2d ldr r2, [pc, #180] ; (80306f8 ) - 8030642: 4293 cmp r3, r2 - 8030644: d009 beq.n 803065a - 8030646: 687b ldr r3, [r7, #4] - 8030648: 681b ldr r3, [r3, #0] - 803064a: 4a2c ldr r2, [pc, #176] ; (80306fc ) - 803064c: 4293 cmp r3, r2 - 803064e: d004 beq.n 803065a - 8030650: 687b ldr r3, [r7, #4] - 8030652: 681b ldr r3, [r3, #0] - 8030654: 4a2a ldr r2, [pc, #168] ; (8030700 ) - 8030656: 4293 cmp r3, r2 - 8030658: d108 bne.n 803066c - 803065a: 687b ldr r3, [r7, #4] - 803065c: 681b ldr r3, [r3, #0] - 803065e: 681a ldr r2, [r3, #0] - 8030660: 687b ldr r3, [r7, #4] - 8030662: 681b ldr r3, [r3, #0] - 8030664: f022 021c bic.w r2, r2, #28 - 8030668: 601a str r2, [r3, #0] - 803066a: e007 b.n 803067c - 803066c: 687b ldr r3, [r7, #4] - 803066e: 681b ldr r3, [r3, #0] - 8030670: 681a ldr r2, [r3, #0] + 80305fa: 687b ldr r3, [r7, #4] + 80305fc: 681b ldr r3, [r3, #0] + 80305fe: 4a41 ldr r2, [pc, #260] ; (8030704 ) + 8030600: 4293 cmp r3, r2 + 8030602: d04a beq.n 803069a + 8030604: 687b ldr r3, [r7, #4] + 8030606: 681b ldr r3, [r3, #0] + 8030608: 4a3f ldr r2, [pc, #252] ; (8030708 ) + 803060a: 4293 cmp r3, r2 + 803060c: d045 beq.n 803069a + 803060e: 687b ldr r3, [r7, #4] + 8030610: 681b ldr r3, [r3, #0] + 8030612: 4a3e ldr r2, [pc, #248] ; (803070c ) + 8030614: 4293 cmp r3, r2 + 8030616: d040 beq.n 803069a + 8030618: 687b ldr r3, [r7, #4] + 803061a: 681b ldr r3, [r3, #0] + 803061c: 4a3c ldr r2, [pc, #240] ; (8030710 ) + 803061e: 4293 cmp r3, r2 + 8030620: d03b beq.n 803069a + 8030622: 687b ldr r3, [r7, #4] + 8030624: 681b ldr r3, [r3, #0] + 8030626: 4a3b ldr r2, [pc, #236] ; (8030714 ) + 8030628: 4293 cmp r3, r2 + 803062a: d036 beq.n 803069a + 803062c: 687b ldr r3, [r7, #4] + 803062e: 681b ldr r3, [r3, #0] + 8030630: 4a39 ldr r2, [pc, #228] ; (8030718 ) + 8030632: 4293 cmp r3, r2 + 8030634: d031 beq.n 803069a + 8030636: 687b ldr r3, [r7, #4] + 8030638: 681b ldr r3, [r3, #0] + 803063a: 4a38 ldr r2, [pc, #224] ; (803071c ) + 803063c: 4293 cmp r3, r2 + 803063e: d02c beq.n 803069a + 8030640: 687b ldr r3, [r7, #4] + 8030642: 681b ldr r3, [r3, #0] + 8030644: 4a36 ldr r2, [pc, #216] ; (8030720 ) + 8030646: 4293 cmp r3, r2 + 8030648: d027 beq.n 803069a + 803064a: 687b ldr r3, [r7, #4] + 803064c: 681b ldr r3, [r3, #0] + 803064e: 4a35 ldr r2, [pc, #212] ; (8030724 ) + 8030650: 4293 cmp r3, r2 + 8030652: d022 beq.n 803069a + 8030654: 687b ldr r3, [r7, #4] + 8030656: 681b ldr r3, [r3, #0] + 8030658: 4a33 ldr r2, [pc, #204] ; (8030728 ) + 803065a: 4293 cmp r3, r2 + 803065c: d01d beq.n 803069a + 803065e: 687b ldr r3, [r7, #4] + 8030660: 681b ldr r3, [r3, #0] + 8030662: 4a32 ldr r2, [pc, #200] ; (803072c ) + 8030664: 4293 cmp r3, r2 + 8030666: d018 beq.n 803069a + 8030668: 687b ldr r3, [r7, #4] + 803066a: 681b ldr r3, [r3, #0] + 803066c: 4a30 ldr r2, [pc, #192] ; (8030730 ) + 803066e: 4293 cmp r3, r2 + 8030670: d013 beq.n 803069a 8030672: 687b ldr r3, [r7, #4] 8030674: 681b ldr r3, [r3, #0] - 8030676: f022 020e bic.w r2, r2, #14 - 803067a: 601a str r2, [r3, #0] + 8030676: 4a2f ldr r2, [pc, #188] ; (8030734 ) + 8030678: 4293 cmp r3, r2 + 803067a: d00e beq.n 803069a + 803067c: 687b ldr r3, [r7, #4] + 803067e: 681b ldr r3, [r3, #0] + 8030680: 4a2d ldr r2, [pc, #180] ; (8030738 ) + 8030682: 4293 cmp r3, r2 + 8030684: d009 beq.n 803069a + 8030686: 687b ldr r3, [r7, #4] + 8030688: 681b ldr r3, [r3, #0] + 803068a: 4a2c ldr r2, [pc, #176] ; (803073c ) + 803068c: 4293 cmp r3, r2 + 803068e: d004 beq.n 803069a + 8030690: 687b ldr r3, [r7, #4] + 8030692: 681b ldr r3, [r3, #0] + 8030694: 4a2a ldr r2, [pc, #168] ; (8030740 ) + 8030696: 4293 cmp r3, r2 + 8030698: d108 bne.n 80306ac + 803069a: 687b ldr r3, [r7, #4] + 803069c: 681b ldr r3, [r3, #0] + 803069e: 681a ldr r2, [r3, #0] + 80306a0: 687b ldr r3, [r7, #4] + 80306a2: 681b ldr r3, [r3, #0] + 80306a4: f022 021c bic.w r2, r2, #28 + 80306a8: 601a str r2, [r3, #0] + 80306aa: e007 b.n 80306bc + 80306ac: 687b ldr r3, [r7, #4] + 80306ae: 681b ldr r3, [r3, #0] + 80306b0: 681a ldr r2, [r3, #0] + 80306b2: 687b ldr r3, [r7, #4] + 80306b4: 681b ldr r3, [r3, #0] + 80306b6: f022 020e bic.w r2, r2, #14 + 80306ba: 601a str r2, [r3, #0] /* Clear all flags */ regs_bdma->IFCR = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU); - 803067c: 687b ldr r3, [r7, #4] - 803067e: 6ddb ldr r3, [r3, #92] ; 0x5c - 8030680: f003 031f and.w r3, r3, #31 - 8030684: 2201 movs r2, #1 - 8030686: 409a lsls r2, r3 - 8030688: 69fb ldr r3, [r7, #28] - 803068a: 605a str r2, [r3, #4] + 80306bc: 687b ldr r3, [r7, #4] + 80306be: 6ddb ldr r3, [r3, #92] ; 0x5c + 80306c0: f003 031f and.w r3, r3, #31 + 80306c4: 2201 movs r2, #1 + 80306c6: 409a lsls r2, r3 + 80306c8: 69fb ldr r3, [r7, #28] + 80306ca: 605a str r2, [r3, #4] /* Update error code */ hdma->ErrorCode = HAL_DMA_ERROR_TE; - 803068c: 687b ldr r3, [r7, #4] - 803068e: 2201 movs r2, #1 - 8030690: 655a str r2, [r3, #84] ; 0x54 + 80306cc: 687b ldr r3, [r7, #4] + 80306ce: 2201 movs r2, #1 + 80306d0: 655a str r2, [r3, #84] ; 0x54 /* Change the DMA state */ hdma->State = HAL_DMA_STATE_READY; - 8030692: 687b ldr r3, [r7, #4] - 8030694: 2201 movs r2, #1 - 8030696: f883 2035 strb.w r2, [r3, #53] ; 0x35 + 80306d2: 687b ldr r3, [r7, #4] + 80306d4: 2201 movs r2, #1 + 80306d6: f883 2035 strb.w r2, [r3, #53] ; 0x35 /* Process Unlocked */ __HAL_UNLOCK(hdma); - 803069a: 687b ldr r3, [r7, #4] - 803069c: 2200 movs r2, #0 - 803069e: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 80306da: 687b ldr r3, [r7, #4] + 80306dc: 2200 movs r2, #0 + 80306de: f883 2034 strb.w r2, [r3, #52] ; 0x34 if (hdma->XferErrorCallback != NULL) - 80306a2: 687b ldr r3, [r7, #4] - 80306a4: 6cdb ldr r3, [r3, #76] ; 0x4c - 80306a6: 2b00 cmp r3, #0 - 80306a8: d009 beq.n 80306be + 80306e2: 687b ldr r3, [r7, #4] + 80306e4: 6cdb ldr r3, [r3, #76] ; 0x4c + 80306e6: 2b00 cmp r3, #0 + 80306e8: d009 beq.n 80306fe { /* Transfer error callback */ hdma->XferErrorCallback(hdma); - 80306aa: 687b ldr r3, [r7, #4] - 80306ac: 6cdb ldr r3, [r3, #76] ; 0x4c - 80306ae: 6878 ldr r0, [r7, #4] - 80306b0: 4798 blx r3 - 80306b2: e004 b.n 80306be + 80306ea: 687b ldr r3, [r7, #4] + 80306ec: 6cdb ldr r3, [r3, #76] ; 0x4c + 80306ee: 6878 ldr r0, [r7, #4] + 80306f0: 4798 blx r3 + 80306f2: e004 b.n 80306fe return; - 80306b4: bf00 nop - 80306b6: e002 b.n 80306be + 80306f4: bf00 nop + 80306f6: e002 b.n 80306fe if((ccr_reg & BDMA_CCR_DBM) != 0U) - 80306b8: bf00 nop - 80306ba: e000 b.n 80306be + 80306f8: bf00 nop + 80306fa: e000 b.n 80306fe if((ccr_reg & BDMA_CCR_DBM) != 0U) - 80306bc: bf00 nop + 80306fc: bf00 nop } else { /* Nothing To Do */ } } - 80306be: 3728 adds r7, #40 ; 0x28 - 80306c0: 46bd mov sp, r7 - 80306c2: bd80 pop {r7, pc} - 80306c4: 40020010 .word 0x40020010 - 80306c8: 40020028 .word 0x40020028 - 80306cc: 40020040 .word 0x40020040 - 80306d0: 40020058 .word 0x40020058 - 80306d4: 40020070 .word 0x40020070 - 80306d8: 40020088 .word 0x40020088 - 80306dc: 400200a0 .word 0x400200a0 - 80306e0: 400200b8 .word 0x400200b8 - 80306e4: 40020410 .word 0x40020410 - 80306e8: 40020428 .word 0x40020428 - 80306ec: 40020440 .word 0x40020440 - 80306f0: 40020458 .word 0x40020458 - 80306f4: 40020470 .word 0x40020470 - 80306f8: 40020488 .word 0x40020488 - 80306fc: 400204a0 .word 0x400204a0 - 8030700: 400204b8 .word 0x400204b8 - -08030704 : + 80306fe: 3728 adds r7, #40 ; 0x28 + 8030700: 46bd mov sp, r7 + 8030702: bd80 pop {r7, pc} + 8030704: 40020010 .word 0x40020010 + 8030708: 40020028 .word 0x40020028 + 803070c: 40020040 .word 0x40020040 + 8030710: 40020058 .word 0x40020058 + 8030714: 40020070 .word 0x40020070 + 8030718: 40020088 .word 0x40020088 + 803071c: 400200a0 .word 0x400200a0 + 8030720: 400200b8 .word 0x400200b8 + 8030724: 40020410 .word 0x40020410 + 8030728: 40020428 .word 0x40020428 + 803072c: 40020440 .word 0x40020440 + 8030730: 40020458 .word 0x40020458 + 8030734: 40020470 .word 0x40020470 + 8030738: 40020488 .word 0x40020488 + 803073c: 400204a0 .word 0x400204a0 + 8030740: 400204b8 .word 0x400204b8 + +08030744 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL state */ HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma) { - 8030704: b480 push {r7} - 8030706: b083 sub sp, #12 - 8030708: af00 add r7, sp, #0 - 803070a: 6078 str r0, [r7, #4] + 8030744: b480 push {r7} + 8030746: b083 sub sp, #12 + 8030748: af00 add r7, sp, #0 + 803074a: 6078 str r0, [r7, #4] return hdma->State; - 803070c: 687b ldr r3, [r7, #4] - 803070e: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 - 8030712: b2db uxtb r3, r3 + 803074c: 687b ldr r3, [r7, #4] + 803074e: f893 3035 ldrb.w r3, [r3, #53] ; 0x35 + 8030752: b2db uxtb r3, r3 } - 8030714: 4618 mov r0, r3 - 8030716: 370c adds r7, #12 - 8030718: 46bd mov sp, r7 - 803071a: f85d 7b04 ldr.w r7, [sp], #4 - 803071e: 4770 bx lr + 8030754: 4618 mov r0, r3 + 8030756: 370c adds r7, #12 + 8030758: 46bd mov sp, r7 + 803075a: f85d 7b04 ldr.w r7, [sp], #4 + 803075e: 4770 bx lr -08030720 : +08030760 : * @param DstAddress: The destination memory Buffer address * @param DataLength: The length of data to be transferred from source to destination * @retval None */ static void DMA_SetConfig(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength) { - 8030720: b480 push {r7} - 8030722: b087 sub sp, #28 - 8030724: af00 add r7, sp, #0 - 8030726: 60f8 str r0, [r7, #12] - 8030728: 60b9 str r1, [r7, #8] - 803072a: 607a str r2, [r7, #4] - 803072c: 603b str r3, [r7, #0] + 8030760: b480 push {r7} + 8030762: b087 sub sp, #28 + 8030764: af00 add r7, sp, #0 + 8030766: 60f8 str r0, [r7, #12] + 8030768: 60b9 str r1, [r7, #8] + 803076a: 607a str r2, [r7, #4] + 803076c: 603b str r3, [r7, #0] /* calculate DMA base and stream number */ DMA_Base_Registers *regs_dma = (DMA_Base_Registers *)hdma->StreamBaseAddress; - 803072e: 68fb ldr r3, [r7, #12] - 8030730: 6d9b ldr r3, [r3, #88] ; 0x58 - 8030732: 617b str r3, [r7, #20] + 803076e: 68fb ldr r3, [r7, #12] + 8030770: 6d9b ldr r3, [r3, #88] ; 0x58 + 8030772: 617b str r3, [r7, #20] BDMA_Base_Registers *regs_bdma = (BDMA_Base_Registers *)hdma->StreamBaseAddress; - 8030734: 68fb ldr r3, [r7, #12] - 8030736: 6d9b ldr r3, [r3, #88] ; 0x58 - 8030738: 613b str r3, [r7, #16] + 8030774: 68fb ldr r3, [r7, #12] + 8030776: 6d9b ldr r3, [r3, #88] ; 0x58 + 8030778: 613b str r3, [r7, #16] if(IS_DMA_DMAMUX_ALL_INSTANCE(hdma->Instance) != 0U) /* No DMAMUX available for BDMA1 */ - 803073a: 68fb ldr r3, [r7, #12] - 803073c: 681b ldr r3, [r3, #0] - 803073e: 4a7f ldr r2, [pc, #508] ; (803093c ) - 8030740: 4293 cmp r3, r2 - 8030742: d072 beq.n 803082a - 8030744: 68fb ldr r3, [r7, #12] - 8030746: 681b ldr r3, [r3, #0] - 8030748: 4a7d ldr r2, [pc, #500] ; (8030940 ) - 803074a: 4293 cmp r3, r2 - 803074c: d06d beq.n 803082a - 803074e: 68fb ldr r3, [r7, #12] - 8030750: 681b ldr r3, [r3, #0] - 8030752: 4a7c ldr r2, [pc, #496] ; (8030944 ) - 8030754: 4293 cmp r3, r2 - 8030756: d068 beq.n 803082a - 8030758: 68fb ldr r3, [r7, #12] - 803075a: 681b ldr r3, [r3, #0] - 803075c: 4a7a ldr r2, [pc, #488] ; (8030948 ) - 803075e: 4293 cmp r3, r2 - 8030760: d063 beq.n 803082a - 8030762: 68fb ldr r3, [r7, #12] - 8030764: 681b ldr r3, [r3, #0] - 8030766: 4a79 ldr r2, [pc, #484] ; (803094c ) - 8030768: 4293 cmp r3, r2 - 803076a: d05e beq.n 803082a - 803076c: 68fb ldr r3, [r7, #12] - 803076e: 681b ldr r3, [r3, #0] - 8030770: 4a77 ldr r2, [pc, #476] ; (8030950 ) - 8030772: 4293 cmp r3, r2 - 8030774: d059 beq.n 803082a - 8030776: 68fb ldr r3, [r7, #12] - 8030778: 681b ldr r3, [r3, #0] - 803077a: 4a76 ldr r2, [pc, #472] ; (8030954 ) - 803077c: 4293 cmp r3, r2 - 803077e: d054 beq.n 803082a - 8030780: 68fb ldr r3, [r7, #12] - 8030782: 681b ldr r3, [r3, #0] - 8030784: 4a74 ldr r2, [pc, #464] ; (8030958 ) - 8030786: 4293 cmp r3, r2 - 8030788: d04f beq.n 803082a - 803078a: 68fb ldr r3, [r7, #12] - 803078c: 681b ldr r3, [r3, #0] - 803078e: 4a73 ldr r2, [pc, #460] ; (803095c ) - 8030790: 4293 cmp r3, r2 - 8030792: d04a beq.n 803082a - 8030794: 68fb ldr r3, [r7, #12] - 8030796: 681b ldr r3, [r3, #0] - 8030798: 4a71 ldr r2, [pc, #452] ; (8030960 ) - 803079a: 4293 cmp r3, r2 - 803079c: d045 beq.n 803082a - 803079e: 68fb ldr r3, [r7, #12] - 80307a0: 681b ldr r3, [r3, #0] - 80307a2: 4a70 ldr r2, [pc, #448] ; (8030964 ) - 80307a4: 4293 cmp r3, r2 - 80307a6: d040 beq.n 803082a - 80307a8: 68fb ldr r3, [r7, #12] - 80307aa: 681b ldr r3, [r3, #0] - 80307ac: 4a6e ldr r2, [pc, #440] ; (8030968 ) - 80307ae: 4293 cmp r3, r2 - 80307b0: d03b beq.n 803082a - 80307b2: 68fb ldr r3, [r7, #12] - 80307b4: 681b ldr r3, [r3, #0] - 80307b6: 4a6d ldr r2, [pc, #436] ; (803096c ) - 80307b8: 4293 cmp r3, r2 - 80307ba: d036 beq.n 803082a - 80307bc: 68fb ldr r3, [r7, #12] - 80307be: 681b ldr r3, [r3, #0] - 80307c0: 4a6b ldr r2, [pc, #428] ; (8030970 ) - 80307c2: 4293 cmp r3, r2 - 80307c4: d031 beq.n 803082a - 80307c6: 68fb ldr r3, [r7, #12] - 80307c8: 681b ldr r3, [r3, #0] - 80307ca: 4a6a ldr r2, [pc, #424] ; (8030974 ) - 80307cc: 4293 cmp r3, r2 - 80307ce: d02c beq.n 803082a - 80307d0: 68fb ldr r3, [r7, #12] - 80307d2: 681b ldr r3, [r3, #0] - 80307d4: 4a68 ldr r2, [pc, #416] ; (8030978 ) - 80307d6: 4293 cmp r3, r2 - 80307d8: d027 beq.n 803082a - 80307da: 68fb ldr r3, [r7, #12] - 80307dc: 681b ldr r3, [r3, #0] - 80307de: 4a67 ldr r2, [pc, #412] ; (803097c ) - 80307e0: 4293 cmp r3, r2 - 80307e2: d022 beq.n 803082a - 80307e4: 68fb ldr r3, [r7, #12] - 80307e6: 681b ldr r3, [r3, #0] - 80307e8: 4a65 ldr r2, [pc, #404] ; (8030980 ) - 80307ea: 4293 cmp r3, r2 - 80307ec: d01d beq.n 803082a - 80307ee: 68fb ldr r3, [r7, #12] - 80307f0: 681b ldr r3, [r3, #0] - 80307f2: 4a64 ldr r2, [pc, #400] ; (8030984 ) - 80307f4: 4293 cmp r3, r2 - 80307f6: d018 beq.n 803082a - 80307f8: 68fb ldr r3, [r7, #12] - 80307fa: 681b ldr r3, [r3, #0] - 80307fc: 4a62 ldr r2, [pc, #392] ; (8030988 ) - 80307fe: 4293 cmp r3, r2 - 8030800: d013 beq.n 803082a - 8030802: 68fb ldr r3, [r7, #12] - 8030804: 681b ldr r3, [r3, #0] - 8030806: 4a61 ldr r2, [pc, #388] ; (803098c ) - 8030808: 4293 cmp r3, r2 - 803080a: d00e beq.n 803082a - 803080c: 68fb ldr r3, [r7, #12] - 803080e: 681b ldr r3, [r3, #0] - 8030810: 4a5f ldr r2, [pc, #380] ; (8030990 ) - 8030812: 4293 cmp r3, r2 - 8030814: d009 beq.n 803082a - 8030816: 68fb ldr r3, [r7, #12] - 8030818: 681b ldr r3, [r3, #0] - 803081a: 4a5e ldr r2, [pc, #376] ; (8030994 ) - 803081c: 4293 cmp r3, r2 - 803081e: d004 beq.n 803082a - 8030820: 68fb ldr r3, [r7, #12] - 8030822: 681b ldr r3, [r3, #0] - 8030824: 4a5c ldr r2, [pc, #368] ; (8030998 ) - 8030826: 4293 cmp r3, r2 - 8030828: d101 bne.n 803082e - 803082a: 2301 movs r3, #1 - 803082c: e000 b.n 8030830 - 803082e: 2300 movs r3, #0 - 8030830: 2b00 cmp r3, #0 - 8030832: d00d beq.n 8030850 + 803077a: 68fb ldr r3, [r7, #12] + 803077c: 681b ldr r3, [r3, #0] + 803077e: 4a7f ldr r2, [pc, #508] ; (803097c ) + 8030780: 4293 cmp r3, r2 + 8030782: d072 beq.n 803086a + 8030784: 68fb ldr r3, [r7, #12] + 8030786: 681b ldr r3, [r3, #0] + 8030788: 4a7d ldr r2, [pc, #500] ; (8030980 ) + 803078a: 4293 cmp r3, r2 + 803078c: d06d beq.n 803086a + 803078e: 68fb ldr r3, [r7, #12] + 8030790: 681b ldr r3, [r3, #0] + 8030792: 4a7c ldr r2, [pc, #496] ; (8030984 ) + 8030794: 4293 cmp r3, r2 + 8030796: d068 beq.n 803086a + 8030798: 68fb ldr r3, [r7, #12] + 803079a: 681b ldr r3, [r3, #0] + 803079c: 4a7a ldr r2, [pc, #488] ; (8030988 ) + 803079e: 4293 cmp r3, r2 + 80307a0: d063 beq.n 803086a + 80307a2: 68fb ldr r3, [r7, #12] + 80307a4: 681b ldr r3, [r3, #0] + 80307a6: 4a79 ldr r2, [pc, #484] ; (803098c ) + 80307a8: 4293 cmp r3, r2 + 80307aa: d05e beq.n 803086a + 80307ac: 68fb ldr r3, [r7, #12] + 80307ae: 681b ldr r3, [r3, #0] + 80307b0: 4a77 ldr r2, [pc, #476] ; (8030990 ) + 80307b2: 4293 cmp r3, r2 + 80307b4: d059 beq.n 803086a + 80307b6: 68fb ldr r3, [r7, #12] + 80307b8: 681b ldr r3, [r3, #0] + 80307ba: 4a76 ldr r2, [pc, #472] ; (8030994 ) + 80307bc: 4293 cmp r3, r2 + 80307be: d054 beq.n 803086a + 80307c0: 68fb ldr r3, [r7, #12] + 80307c2: 681b ldr r3, [r3, #0] + 80307c4: 4a74 ldr r2, [pc, #464] ; (8030998 ) + 80307c6: 4293 cmp r3, r2 + 80307c8: d04f beq.n 803086a + 80307ca: 68fb ldr r3, [r7, #12] + 80307cc: 681b ldr r3, [r3, #0] + 80307ce: 4a73 ldr r2, [pc, #460] ; (803099c ) + 80307d0: 4293 cmp r3, r2 + 80307d2: d04a beq.n 803086a + 80307d4: 68fb ldr r3, [r7, #12] + 80307d6: 681b ldr r3, [r3, #0] + 80307d8: 4a71 ldr r2, [pc, #452] ; (80309a0 ) + 80307da: 4293 cmp r3, r2 + 80307dc: d045 beq.n 803086a + 80307de: 68fb ldr r3, [r7, #12] + 80307e0: 681b ldr r3, [r3, #0] + 80307e2: 4a70 ldr r2, [pc, #448] ; (80309a4 ) + 80307e4: 4293 cmp r3, r2 + 80307e6: d040 beq.n 803086a + 80307e8: 68fb ldr r3, [r7, #12] + 80307ea: 681b ldr r3, [r3, #0] + 80307ec: 4a6e ldr r2, [pc, #440] ; (80309a8 ) + 80307ee: 4293 cmp r3, r2 + 80307f0: d03b beq.n 803086a + 80307f2: 68fb ldr r3, [r7, #12] + 80307f4: 681b ldr r3, [r3, #0] + 80307f6: 4a6d ldr r2, [pc, #436] ; (80309ac ) + 80307f8: 4293 cmp r3, r2 + 80307fa: d036 beq.n 803086a + 80307fc: 68fb ldr r3, [r7, #12] + 80307fe: 681b ldr r3, [r3, #0] + 8030800: 4a6b ldr r2, [pc, #428] ; (80309b0 ) + 8030802: 4293 cmp r3, r2 + 8030804: d031 beq.n 803086a + 8030806: 68fb ldr r3, [r7, #12] + 8030808: 681b ldr r3, [r3, #0] + 803080a: 4a6a ldr r2, [pc, #424] ; (80309b4 ) + 803080c: 4293 cmp r3, r2 + 803080e: d02c beq.n 803086a + 8030810: 68fb ldr r3, [r7, #12] + 8030812: 681b ldr r3, [r3, #0] + 8030814: 4a68 ldr r2, [pc, #416] ; (80309b8 ) + 8030816: 4293 cmp r3, r2 + 8030818: d027 beq.n 803086a + 803081a: 68fb ldr r3, [r7, #12] + 803081c: 681b ldr r3, [r3, #0] + 803081e: 4a67 ldr r2, [pc, #412] ; (80309bc ) + 8030820: 4293 cmp r3, r2 + 8030822: d022 beq.n 803086a + 8030824: 68fb ldr r3, [r7, #12] + 8030826: 681b ldr r3, [r3, #0] + 8030828: 4a65 ldr r2, [pc, #404] ; (80309c0 ) + 803082a: 4293 cmp r3, r2 + 803082c: d01d beq.n 803086a + 803082e: 68fb ldr r3, [r7, #12] + 8030830: 681b ldr r3, [r3, #0] + 8030832: 4a64 ldr r2, [pc, #400] ; (80309c4 ) + 8030834: 4293 cmp r3, r2 + 8030836: d018 beq.n 803086a + 8030838: 68fb ldr r3, [r7, #12] + 803083a: 681b ldr r3, [r3, #0] + 803083c: 4a62 ldr r2, [pc, #392] ; (80309c8 ) + 803083e: 4293 cmp r3, r2 + 8030840: d013 beq.n 803086a + 8030842: 68fb ldr r3, [r7, #12] + 8030844: 681b ldr r3, [r3, #0] + 8030846: 4a61 ldr r2, [pc, #388] ; (80309cc ) + 8030848: 4293 cmp r3, r2 + 803084a: d00e beq.n 803086a + 803084c: 68fb ldr r3, [r7, #12] + 803084e: 681b ldr r3, [r3, #0] + 8030850: 4a5f ldr r2, [pc, #380] ; (80309d0 ) + 8030852: 4293 cmp r3, r2 + 8030854: d009 beq.n 803086a + 8030856: 68fb ldr r3, [r7, #12] + 8030858: 681b ldr r3, [r3, #0] + 803085a: 4a5e ldr r2, [pc, #376] ; (80309d4 ) + 803085c: 4293 cmp r3, r2 + 803085e: d004 beq.n 803086a + 8030860: 68fb ldr r3, [r7, #12] + 8030862: 681b ldr r3, [r3, #0] + 8030864: 4a5c ldr r2, [pc, #368] ; (80309d8 ) + 8030866: 4293 cmp r3, r2 + 8030868: d101 bne.n 803086e + 803086a: 2301 movs r3, #1 + 803086c: e000 b.n 8030870 + 803086e: 2300 movs r3, #0 + 8030870: 2b00 cmp r3, #0 + 8030872: d00d beq.n 8030890 { /* Clear the DMAMUX synchro overrun flag */ hdma->DMAmuxChannelStatus->CFR = hdma->DMAmuxChannelStatusMask; - 8030834: 68fb ldr r3, [r7, #12] - 8030836: 6e5b ldr r3, [r3, #100] ; 0x64 - 8030838: 68fa ldr r2, [r7, #12] - 803083a: 6e92 ldr r2, [r2, #104] ; 0x68 - 803083c: 605a str r2, [r3, #4] + 8030874: 68fb ldr r3, [r7, #12] + 8030876: 6e5b ldr r3, [r3, #100] ; 0x64 + 8030878: 68fa ldr r2, [r7, #12] + 803087a: 6e92 ldr r2, [r2, #104] ; 0x68 + 803087c: 605a str r2, [r3, #4] if(hdma->DMAmuxRequestGen != 0U) - 803083e: 68fb ldr r3, [r7, #12] - 8030840: 6edb ldr r3, [r3, #108] ; 0x6c - 8030842: 2b00 cmp r3, #0 - 8030844: d004 beq.n 8030850 + 803087e: 68fb ldr r3, [r7, #12] + 8030880: 6edb ldr r3, [r3, #108] ; 0x6c + 8030882: 2b00 cmp r3, #0 + 8030884: d004 beq.n 8030890 { /* Clear the DMAMUX request generator overrun flag */ hdma->DMAmuxRequestGenStatus->RGCFR = hdma->DMAmuxRequestGenStatusMask; - 8030846: 68fb ldr r3, [r7, #12] - 8030848: 6f1b ldr r3, [r3, #112] ; 0x70 - 803084a: 68fa ldr r2, [r7, #12] - 803084c: 6f52 ldr r2, [r2, #116] ; 0x74 - 803084e: 605a str r2, [r3, #4] + 8030886: 68fb ldr r3, [r7, #12] + 8030888: 6f1b ldr r3, [r3, #112] ; 0x70 + 803088a: 68fa ldr r2, [r7, #12] + 803088c: 6f52 ldr r2, [r2, #116] ; 0x74 + 803088e: 605a str r2, [r3, #4] } } if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 8030850: 68fb ldr r3, [r7, #12] - 8030852: 681b ldr r3, [r3, #0] - 8030854: 4a39 ldr r2, [pc, #228] ; (803093c ) - 8030856: 4293 cmp r3, r2 - 8030858: d04a beq.n 80308f0 - 803085a: 68fb ldr r3, [r7, #12] - 803085c: 681b ldr r3, [r3, #0] - 803085e: 4a38 ldr r2, [pc, #224] ; (8030940 ) - 8030860: 4293 cmp r3, r2 - 8030862: d045 beq.n 80308f0 - 8030864: 68fb ldr r3, [r7, #12] - 8030866: 681b ldr r3, [r3, #0] - 8030868: 4a36 ldr r2, [pc, #216] ; (8030944 ) - 803086a: 4293 cmp r3, r2 - 803086c: d040 beq.n 80308f0 - 803086e: 68fb ldr r3, [r7, #12] - 8030870: 681b ldr r3, [r3, #0] - 8030872: 4a35 ldr r2, [pc, #212] ; (8030948 ) - 8030874: 4293 cmp r3, r2 - 8030876: d03b beq.n 80308f0 - 8030878: 68fb ldr r3, [r7, #12] - 803087a: 681b ldr r3, [r3, #0] - 803087c: 4a33 ldr r2, [pc, #204] ; (803094c ) - 803087e: 4293 cmp r3, r2 - 8030880: d036 beq.n 80308f0 - 8030882: 68fb ldr r3, [r7, #12] - 8030884: 681b ldr r3, [r3, #0] - 8030886: 4a32 ldr r2, [pc, #200] ; (8030950 ) - 8030888: 4293 cmp r3, r2 - 803088a: d031 beq.n 80308f0 - 803088c: 68fb ldr r3, [r7, #12] - 803088e: 681b ldr r3, [r3, #0] - 8030890: 4a30 ldr r2, [pc, #192] ; (8030954 ) - 8030892: 4293 cmp r3, r2 - 8030894: d02c beq.n 80308f0 - 8030896: 68fb ldr r3, [r7, #12] - 8030898: 681b ldr r3, [r3, #0] - 803089a: 4a2f ldr r2, [pc, #188] ; (8030958 ) - 803089c: 4293 cmp r3, r2 - 803089e: d027 beq.n 80308f0 - 80308a0: 68fb ldr r3, [r7, #12] - 80308a2: 681b ldr r3, [r3, #0] - 80308a4: 4a2d ldr r2, [pc, #180] ; (803095c ) - 80308a6: 4293 cmp r3, r2 - 80308a8: d022 beq.n 80308f0 - 80308aa: 68fb ldr r3, [r7, #12] - 80308ac: 681b ldr r3, [r3, #0] - 80308ae: 4a2c ldr r2, [pc, #176] ; (8030960 ) - 80308b0: 4293 cmp r3, r2 - 80308b2: d01d beq.n 80308f0 - 80308b4: 68fb ldr r3, [r7, #12] - 80308b6: 681b ldr r3, [r3, #0] - 80308b8: 4a2a ldr r2, [pc, #168] ; (8030964 ) - 80308ba: 4293 cmp r3, r2 - 80308bc: d018 beq.n 80308f0 - 80308be: 68fb ldr r3, [r7, #12] - 80308c0: 681b ldr r3, [r3, #0] - 80308c2: 4a29 ldr r2, [pc, #164] ; (8030968 ) - 80308c4: 4293 cmp r3, r2 - 80308c6: d013 beq.n 80308f0 - 80308c8: 68fb ldr r3, [r7, #12] - 80308ca: 681b ldr r3, [r3, #0] - 80308cc: 4a27 ldr r2, [pc, #156] ; (803096c ) - 80308ce: 4293 cmp r3, r2 - 80308d0: d00e beq.n 80308f0 - 80308d2: 68fb ldr r3, [r7, #12] - 80308d4: 681b ldr r3, [r3, #0] - 80308d6: 4a26 ldr r2, [pc, #152] ; (8030970 ) - 80308d8: 4293 cmp r3, r2 - 80308da: d009 beq.n 80308f0 - 80308dc: 68fb ldr r3, [r7, #12] - 80308de: 681b ldr r3, [r3, #0] - 80308e0: 4a24 ldr r2, [pc, #144] ; (8030974 ) - 80308e2: 4293 cmp r3, r2 - 80308e4: d004 beq.n 80308f0 - 80308e6: 68fb ldr r3, [r7, #12] - 80308e8: 681b ldr r3, [r3, #0] - 80308ea: 4a23 ldr r2, [pc, #140] ; (8030978 ) - 80308ec: 4293 cmp r3, r2 - 80308ee: d101 bne.n 80308f4 - 80308f0: 2301 movs r3, #1 - 80308f2: e000 b.n 80308f6 - 80308f4: 2300 movs r3, #0 - 80308f6: 2b00 cmp r3, #0 - 80308f8: d059 beq.n 80309ae + 8030890: 68fb ldr r3, [r7, #12] + 8030892: 681b ldr r3, [r3, #0] + 8030894: 4a39 ldr r2, [pc, #228] ; (803097c ) + 8030896: 4293 cmp r3, r2 + 8030898: d04a beq.n 8030930 + 803089a: 68fb ldr r3, [r7, #12] + 803089c: 681b ldr r3, [r3, #0] + 803089e: 4a38 ldr r2, [pc, #224] ; (8030980 ) + 80308a0: 4293 cmp r3, r2 + 80308a2: d045 beq.n 8030930 + 80308a4: 68fb ldr r3, [r7, #12] + 80308a6: 681b ldr r3, [r3, #0] + 80308a8: 4a36 ldr r2, [pc, #216] ; (8030984 ) + 80308aa: 4293 cmp r3, r2 + 80308ac: d040 beq.n 8030930 + 80308ae: 68fb ldr r3, [r7, #12] + 80308b0: 681b ldr r3, [r3, #0] + 80308b2: 4a35 ldr r2, [pc, #212] ; (8030988 ) + 80308b4: 4293 cmp r3, r2 + 80308b6: d03b beq.n 8030930 + 80308b8: 68fb ldr r3, [r7, #12] + 80308ba: 681b ldr r3, [r3, #0] + 80308bc: 4a33 ldr r2, [pc, #204] ; (803098c ) + 80308be: 4293 cmp r3, r2 + 80308c0: d036 beq.n 8030930 + 80308c2: 68fb ldr r3, [r7, #12] + 80308c4: 681b ldr r3, [r3, #0] + 80308c6: 4a32 ldr r2, [pc, #200] ; (8030990 ) + 80308c8: 4293 cmp r3, r2 + 80308ca: d031 beq.n 8030930 + 80308cc: 68fb ldr r3, [r7, #12] + 80308ce: 681b ldr r3, [r3, #0] + 80308d0: 4a30 ldr r2, [pc, #192] ; (8030994 ) + 80308d2: 4293 cmp r3, r2 + 80308d4: d02c beq.n 8030930 + 80308d6: 68fb ldr r3, [r7, #12] + 80308d8: 681b ldr r3, [r3, #0] + 80308da: 4a2f ldr r2, [pc, #188] ; (8030998 ) + 80308dc: 4293 cmp r3, r2 + 80308de: d027 beq.n 8030930 + 80308e0: 68fb ldr r3, [r7, #12] + 80308e2: 681b ldr r3, [r3, #0] + 80308e4: 4a2d ldr r2, [pc, #180] ; (803099c ) + 80308e6: 4293 cmp r3, r2 + 80308e8: d022 beq.n 8030930 + 80308ea: 68fb ldr r3, [r7, #12] + 80308ec: 681b ldr r3, [r3, #0] + 80308ee: 4a2c ldr r2, [pc, #176] ; (80309a0 ) + 80308f0: 4293 cmp r3, r2 + 80308f2: d01d beq.n 8030930 + 80308f4: 68fb ldr r3, [r7, #12] + 80308f6: 681b ldr r3, [r3, #0] + 80308f8: 4a2a ldr r2, [pc, #168] ; (80309a4 ) + 80308fa: 4293 cmp r3, r2 + 80308fc: d018 beq.n 8030930 + 80308fe: 68fb ldr r3, [r7, #12] + 8030900: 681b ldr r3, [r3, #0] + 8030902: 4a29 ldr r2, [pc, #164] ; (80309a8 ) + 8030904: 4293 cmp r3, r2 + 8030906: d013 beq.n 8030930 + 8030908: 68fb ldr r3, [r7, #12] + 803090a: 681b ldr r3, [r3, #0] + 803090c: 4a27 ldr r2, [pc, #156] ; (80309ac ) + 803090e: 4293 cmp r3, r2 + 8030910: d00e beq.n 8030930 + 8030912: 68fb ldr r3, [r7, #12] + 8030914: 681b ldr r3, [r3, #0] + 8030916: 4a26 ldr r2, [pc, #152] ; (80309b0 ) + 8030918: 4293 cmp r3, r2 + 803091a: d009 beq.n 8030930 + 803091c: 68fb ldr r3, [r7, #12] + 803091e: 681b ldr r3, [r3, #0] + 8030920: 4a24 ldr r2, [pc, #144] ; (80309b4 ) + 8030922: 4293 cmp r3, r2 + 8030924: d004 beq.n 8030930 + 8030926: 68fb ldr r3, [r7, #12] + 8030928: 681b ldr r3, [r3, #0] + 803092a: 4a23 ldr r2, [pc, #140] ; (80309b8 ) + 803092c: 4293 cmp r3, r2 + 803092e: d101 bne.n 8030934 + 8030930: 2301 movs r3, #1 + 8030932: e000 b.n 8030936 + 8030934: 2300 movs r3, #0 + 8030936: 2b00 cmp r3, #0 + 8030938: d059 beq.n 80309ee { /* Clear all interrupt flags at correct offset within the register */ regs_dma->IFCR = 0x3FUL << (hdma->StreamIndex & 0x1FU); - 80308fa: 68fb ldr r3, [r7, #12] - 80308fc: 6ddb ldr r3, [r3, #92] ; 0x5c - 80308fe: f003 031f and.w r3, r3, #31 - 8030902: 223f movs r2, #63 ; 0x3f - 8030904: 409a lsls r2, r3 - 8030906: 697b ldr r3, [r7, #20] - 8030908: 609a str r2, [r3, #8] + 803093a: 68fb ldr r3, [r7, #12] + 803093c: 6ddb ldr r3, [r3, #92] ; 0x5c + 803093e: f003 031f and.w r3, r3, #31 + 8030942: 223f movs r2, #63 ; 0x3f + 8030944: 409a lsls r2, r3 + 8030946: 697b ldr r3, [r7, #20] + 8030948: 609a str r2, [r3, #8] /* Clear DBM bit */ ((DMA_Stream_TypeDef *)hdma->Instance)->CR &= (uint32_t)(~DMA_SxCR_DBM); - 803090a: 68fb ldr r3, [r7, #12] - 803090c: 681b ldr r3, [r3, #0] - 803090e: 681a ldr r2, [r3, #0] - 8030910: 68fb ldr r3, [r7, #12] - 8030912: 681b ldr r3, [r3, #0] - 8030914: f422 2280 bic.w r2, r2, #262144 ; 0x40000 - 8030918: 601a str r2, [r3, #0] + 803094a: 68fb ldr r3, [r7, #12] + 803094c: 681b ldr r3, [r3, #0] + 803094e: 681a ldr r2, [r3, #0] + 8030950: 68fb ldr r3, [r7, #12] + 8030952: 681b ldr r3, [r3, #0] + 8030954: f422 2280 bic.w r2, r2, #262144 ; 0x40000 + 8030958: 601a str r2, [r3, #0] /* Configure DMA Stream data length */ ((DMA_Stream_TypeDef *)hdma->Instance)->NDTR = DataLength; - 803091a: 68fb ldr r3, [r7, #12] - 803091c: 681b ldr r3, [r3, #0] - 803091e: 683a ldr r2, [r7, #0] - 8030920: 605a str r2, [r3, #4] + 803095a: 68fb ldr r3, [r7, #12] + 803095c: 681b ldr r3, [r3, #0] + 803095e: 683a ldr r2, [r7, #0] + 8030960: 605a str r2, [r3, #4] /* Peripheral to Memory */ if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) - 8030922: 68fb ldr r3, [r7, #12] - 8030924: 689b ldr r3, [r3, #8] - 8030926: 2b40 cmp r3, #64 ; 0x40 - 8030928: d138 bne.n 803099c + 8030962: 68fb ldr r3, [r7, #12] + 8030964: 689b ldr r3, [r3, #8] + 8030966: 2b40 cmp r3, #64 ; 0x40 + 8030968: d138 bne.n 80309dc { /* Configure DMA Stream destination address */ ((DMA_Stream_TypeDef *)hdma->Instance)->PAR = DstAddress; - 803092a: 68fb ldr r3, [r7, #12] - 803092c: 681b ldr r3, [r3, #0] - 803092e: 687a ldr r2, [r7, #4] - 8030930: 609a str r2, [r3, #8] + 803096a: 68fb ldr r3, [r7, #12] + 803096c: 681b ldr r3, [r3, #0] + 803096e: 687a ldr r2, [r7, #4] + 8030970: 609a str r2, [r3, #8] /* Configure DMA Stream source address */ ((DMA_Stream_TypeDef *)hdma->Instance)->M0AR = SrcAddress; - 8030932: 68fb ldr r3, [r7, #12] - 8030934: 681b ldr r3, [r3, #0] - 8030936: 68ba ldr r2, [r7, #8] - 8030938: 60da str r2, [r3, #12] + 8030972: 68fb ldr r3, [r7, #12] + 8030974: 681b ldr r3, [r3, #0] + 8030976: 68ba ldr r2, [r7, #8] + 8030978: 60da str r2, [r3, #12] } else { /* Nothing To Do */ } } - 803093a: e086 b.n 8030a4a - 803093c: 40020010 .word 0x40020010 - 8030940: 40020028 .word 0x40020028 - 8030944: 40020040 .word 0x40020040 - 8030948: 40020058 .word 0x40020058 - 803094c: 40020070 .word 0x40020070 - 8030950: 40020088 .word 0x40020088 - 8030954: 400200a0 .word 0x400200a0 - 8030958: 400200b8 .word 0x400200b8 - 803095c: 40020410 .word 0x40020410 - 8030960: 40020428 .word 0x40020428 - 8030964: 40020440 .word 0x40020440 - 8030968: 40020458 .word 0x40020458 - 803096c: 40020470 .word 0x40020470 - 8030970: 40020488 .word 0x40020488 - 8030974: 400204a0 .word 0x400204a0 - 8030978: 400204b8 .word 0x400204b8 - 803097c: 58025408 .word 0x58025408 - 8030980: 5802541c .word 0x5802541c - 8030984: 58025430 .word 0x58025430 - 8030988: 58025444 .word 0x58025444 - 803098c: 58025458 .word 0x58025458 - 8030990: 5802546c .word 0x5802546c - 8030994: 58025480 .word 0x58025480 - 8030998: 58025494 .word 0x58025494 + 803097a: e086 b.n 8030a8a + 803097c: 40020010 .word 0x40020010 + 8030980: 40020028 .word 0x40020028 + 8030984: 40020040 .word 0x40020040 + 8030988: 40020058 .word 0x40020058 + 803098c: 40020070 .word 0x40020070 + 8030990: 40020088 .word 0x40020088 + 8030994: 400200a0 .word 0x400200a0 + 8030998: 400200b8 .word 0x400200b8 + 803099c: 40020410 .word 0x40020410 + 80309a0: 40020428 .word 0x40020428 + 80309a4: 40020440 .word 0x40020440 + 80309a8: 40020458 .word 0x40020458 + 80309ac: 40020470 .word 0x40020470 + 80309b0: 40020488 .word 0x40020488 + 80309b4: 400204a0 .word 0x400204a0 + 80309b8: 400204b8 .word 0x400204b8 + 80309bc: 58025408 .word 0x58025408 + 80309c0: 5802541c .word 0x5802541c + 80309c4: 58025430 .word 0x58025430 + 80309c8: 58025444 .word 0x58025444 + 80309cc: 58025458 .word 0x58025458 + 80309d0: 5802546c .word 0x5802546c + 80309d4: 58025480 .word 0x58025480 + 80309d8: 58025494 .word 0x58025494 ((DMA_Stream_TypeDef *)hdma->Instance)->PAR = SrcAddress; - 803099c: 68fb ldr r3, [r7, #12] - 803099e: 681b ldr r3, [r3, #0] - 80309a0: 68ba ldr r2, [r7, #8] - 80309a2: 609a str r2, [r3, #8] + 80309dc: 68fb ldr r3, [r7, #12] + 80309de: 681b ldr r3, [r3, #0] + 80309e0: 68ba ldr r2, [r7, #8] + 80309e2: 609a str r2, [r3, #8] ((DMA_Stream_TypeDef *)hdma->Instance)->M0AR = DstAddress; - 80309a4: 68fb ldr r3, [r7, #12] - 80309a6: 681b ldr r3, [r3, #0] - 80309a8: 687a ldr r2, [r7, #4] - 80309aa: 60da str r2, [r3, #12] + 80309e4: 68fb ldr r3, [r7, #12] + 80309e6: 681b ldr r3, [r3, #0] + 80309e8: 687a ldr r2, [r7, #4] + 80309ea: 60da str r2, [r3, #12] } - 80309ac: e04d b.n 8030a4a + 80309ec: e04d b.n 8030a8a else if(IS_BDMA_CHANNEL_INSTANCE(hdma->Instance) != 0U) /* BDMA instance(s) */ - 80309ae: 68fb ldr r3, [r7, #12] - 80309b0: 681b ldr r3, [r3, #0] - 80309b2: 4a29 ldr r2, [pc, #164] ; (8030a58 ) - 80309b4: 4293 cmp r3, r2 - 80309b6: d022 beq.n 80309fe - 80309b8: 68fb ldr r3, [r7, #12] - 80309ba: 681b ldr r3, [r3, #0] - 80309bc: 4a27 ldr r2, [pc, #156] ; (8030a5c ) - 80309be: 4293 cmp r3, r2 - 80309c0: d01d beq.n 80309fe - 80309c2: 68fb ldr r3, [r7, #12] - 80309c4: 681b ldr r3, [r3, #0] - 80309c6: 4a26 ldr r2, [pc, #152] ; (8030a60 ) - 80309c8: 4293 cmp r3, r2 - 80309ca: d018 beq.n 80309fe - 80309cc: 68fb ldr r3, [r7, #12] - 80309ce: 681b ldr r3, [r3, #0] - 80309d0: 4a24 ldr r2, [pc, #144] ; (8030a64 ) - 80309d2: 4293 cmp r3, r2 - 80309d4: d013 beq.n 80309fe - 80309d6: 68fb ldr r3, [r7, #12] - 80309d8: 681b ldr r3, [r3, #0] - 80309da: 4a23 ldr r2, [pc, #140] ; (8030a68 ) - 80309dc: 4293 cmp r3, r2 - 80309de: d00e beq.n 80309fe - 80309e0: 68fb ldr r3, [r7, #12] - 80309e2: 681b ldr r3, [r3, #0] - 80309e4: 4a21 ldr r2, [pc, #132] ; (8030a6c ) - 80309e6: 4293 cmp r3, r2 - 80309e8: d009 beq.n 80309fe - 80309ea: 68fb ldr r3, [r7, #12] - 80309ec: 681b ldr r3, [r3, #0] - 80309ee: 4a20 ldr r2, [pc, #128] ; (8030a70 ) - 80309f0: 4293 cmp r3, r2 - 80309f2: d004 beq.n 80309fe - 80309f4: 68fb ldr r3, [r7, #12] - 80309f6: 681b ldr r3, [r3, #0] - 80309f8: 4a1e ldr r2, [pc, #120] ; (8030a74 ) - 80309fa: 4293 cmp r3, r2 - 80309fc: d101 bne.n 8030a02 - 80309fe: 2301 movs r3, #1 - 8030a00: e000 b.n 8030a04 - 8030a02: 2300 movs r3, #0 - 8030a04: 2b00 cmp r3, #0 - 8030a06: d020 beq.n 8030a4a + 80309ee: 68fb ldr r3, [r7, #12] + 80309f0: 681b ldr r3, [r3, #0] + 80309f2: 4a29 ldr r2, [pc, #164] ; (8030a98 ) + 80309f4: 4293 cmp r3, r2 + 80309f6: d022 beq.n 8030a3e + 80309f8: 68fb ldr r3, [r7, #12] + 80309fa: 681b ldr r3, [r3, #0] + 80309fc: 4a27 ldr r2, [pc, #156] ; (8030a9c ) + 80309fe: 4293 cmp r3, r2 + 8030a00: d01d beq.n 8030a3e + 8030a02: 68fb ldr r3, [r7, #12] + 8030a04: 681b ldr r3, [r3, #0] + 8030a06: 4a26 ldr r2, [pc, #152] ; (8030aa0 ) + 8030a08: 4293 cmp r3, r2 + 8030a0a: d018 beq.n 8030a3e + 8030a0c: 68fb ldr r3, [r7, #12] + 8030a0e: 681b ldr r3, [r3, #0] + 8030a10: 4a24 ldr r2, [pc, #144] ; (8030aa4 ) + 8030a12: 4293 cmp r3, r2 + 8030a14: d013 beq.n 8030a3e + 8030a16: 68fb ldr r3, [r7, #12] + 8030a18: 681b ldr r3, [r3, #0] + 8030a1a: 4a23 ldr r2, [pc, #140] ; (8030aa8 ) + 8030a1c: 4293 cmp r3, r2 + 8030a1e: d00e beq.n 8030a3e + 8030a20: 68fb ldr r3, [r7, #12] + 8030a22: 681b ldr r3, [r3, #0] + 8030a24: 4a21 ldr r2, [pc, #132] ; (8030aac ) + 8030a26: 4293 cmp r3, r2 + 8030a28: d009 beq.n 8030a3e + 8030a2a: 68fb ldr r3, [r7, #12] + 8030a2c: 681b ldr r3, [r3, #0] + 8030a2e: 4a20 ldr r2, [pc, #128] ; (8030ab0 ) + 8030a30: 4293 cmp r3, r2 + 8030a32: d004 beq.n 8030a3e + 8030a34: 68fb ldr r3, [r7, #12] + 8030a36: 681b ldr r3, [r3, #0] + 8030a38: 4a1e ldr r2, [pc, #120] ; (8030ab4 ) + 8030a3a: 4293 cmp r3, r2 + 8030a3c: d101 bne.n 8030a42 + 8030a3e: 2301 movs r3, #1 + 8030a40: e000 b.n 8030a44 + 8030a42: 2300 movs r3, #0 + 8030a44: 2b00 cmp r3, #0 + 8030a46: d020 beq.n 8030a8a regs_bdma->IFCR = (BDMA_ISR_GIF0) << (hdma->StreamIndex & 0x1FU); - 8030a08: 68fb ldr r3, [r7, #12] - 8030a0a: 6ddb ldr r3, [r3, #92] ; 0x5c - 8030a0c: f003 031f and.w r3, r3, #31 - 8030a10: 2201 movs r2, #1 - 8030a12: 409a lsls r2, r3 - 8030a14: 693b ldr r3, [r7, #16] - 8030a16: 605a str r2, [r3, #4] + 8030a48: 68fb ldr r3, [r7, #12] + 8030a4a: 6ddb ldr r3, [r3, #92] ; 0x5c + 8030a4c: f003 031f and.w r3, r3, #31 + 8030a50: 2201 movs r2, #1 + 8030a52: 409a lsls r2, r3 + 8030a54: 693b ldr r3, [r7, #16] + 8030a56: 605a str r2, [r3, #4] ((BDMA_Channel_TypeDef *)hdma->Instance)->CNDTR = DataLength; - 8030a18: 68fb ldr r3, [r7, #12] - 8030a1a: 681b ldr r3, [r3, #0] - 8030a1c: 683a ldr r2, [r7, #0] - 8030a1e: 605a str r2, [r3, #4] + 8030a58: 68fb ldr r3, [r7, #12] + 8030a5a: 681b ldr r3, [r3, #0] + 8030a5c: 683a ldr r2, [r7, #0] + 8030a5e: 605a str r2, [r3, #4] if((hdma->Init.Direction) == DMA_MEMORY_TO_PERIPH) - 8030a20: 68fb ldr r3, [r7, #12] - 8030a22: 689b ldr r3, [r3, #8] - 8030a24: 2b40 cmp r3, #64 ; 0x40 - 8030a26: d108 bne.n 8030a3a + 8030a60: 68fb ldr r3, [r7, #12] + 8030a62: 689b ldr r3, [r3, #8] + 8030a64: 2b40 cmp r3, #64 ; 0x40 + 8030a66: d108 bne.n 8030a7a ((BDMA_Channel_TypeDef *)hdma->Instance)->CPAR = DstAddress; - 8030a28: 68fb ldr r3, [r7, #12] - 8030a2a: 681b ldr r3, [r3, #0] - 8030a2c: 687a ldr r2, [r7, #4] - 8030a2e: 609a str r2, [r3, #8] + 8030a68: 68fb ldr r3, [r7, #12] + 8030a6a: 681b ldr r3, [r3, #0] + 8030a6c: 687a ldr r2, [r7, #4] + 8030a6e: 609a str r2, [r3, #8] ((BDMA_Channel_TypeDef *)hdma->Instance)->CM0AR = SrcAddress; - 8030a30: 68fb ldr r3, [r7, #12] - 8030a32: 681b ldr r3, [r3, #0] - 8030a34: 68ba ldr r2, [r7, #8] - 8030a36: 60da str r2, [r3, #12] + 8030a70: 68fb ldr r3, [r7, #12] + 8030a72: 681b ldr r3, [r3, #0] + 8030a74: 68ba ldr r2, [r7, #8] + 8030a76: 60da str r2, [r3, #12] } - 8030a38: e007 b.n 8030a4a + 8030a78: e007 b.n 8030a8a ((BDMA_Channel_TypeDef *)hdma->Instance)->CPAR = SrcAddress; - 8030a3a: 68fb ldr r3, [r7, #12] - 8030a3c: 681b ldr r3, [r3, #0] - 8030a3e: 68ba ldr r2, [r7, #8] - 8030a40: 609a str r2, [r3, #8] + 8030a7a: 68fb ldr r3, [r7, #12] + 8030a7c: 681b ldr r3, [r3, #0] + 8030a7e: 68ba ldr r2, [r7, #8] + 8030a80: 609a str r2, [r3, #8] ((BDMA_Channel_TypeDef *)hdma->Instance)->CM0AR = DstAddress; - 8030a42: 68fb ldr r3, [r7, #12] - 8030a44: 681b ldr r3, [r3, #0] - 8030a46: 687a ldr r2, [r7, #4] - 8030a48: 60da str r2, [r3, #12] -} - 8030a4a: bf00 nop - 8030a4c: 371c adds r7, #28 - 8030a4e: 46bd mov sp, r7 - 8030a50: f85d 7b04 ldr.w r7, [sp], #4 - 8030a54: 4770 bx lr - 8030a56: bf00 nop - 8030a58: 58025408 .word 0x58025408 - 8030a5c: 5802541c .word 0x5802541c - 8030a60: 58025430 .word 0x58025430 - 8030a64: 58025444 .word 0x58025444 - 8030a68: 58025458 .word 0x58025458 - 8030a6c: 5802546c .word 0x5802546c - 8030a70: 58025480 .word 0x58025480 - 8030a74: 58025494 .word 0x58025494 - -08030a78 : + 8030a82: 68fb ldr r3, [r7, #12] + 8030a84: 681b ldr r3, [r3, #0] + 8030a86: 687a ldr r2, [r7, #4] + 8030a88: 60da str r2, [r3, #12] +} + 8030a8a: bf00 nop + 8030a8c: 371c adds r7, #28 + 8030a8e: 46bd mov sp, r7 + 8030a90: f85d 7b04 ldr.w r7, [sp], #4 + 8030a94: 4770 bx lr + 8030a96: bf00 nop + 8030a98: 58025408 .word 0x58025408 + 8030a9c: 5802541c .word 0x5802541c + 8030aa0: 58025430 .word 0x58025430 + 8030aa4: 58025444 .word 0x58025444 + 8030aa8: 58025458 .word 0x58025458 + 8030aac: 5802546c .word 0x5802546c + 8030ab0: 58025480 .word 0x58025480 + 8030ab4: 58025494 .word 0x58025494 + +08030ab8 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval Stream base address */ static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma) { - 8030a78: b480 push {r7} - 8030a7a: b085 sub sp, #20 - 8030a7c: af00 add r7, sp, #0 - 8030a7e: 6078 str r0, [r7, #4] + 8030ab8: b480 push {r7} + 8030aba: b085 sub sp, #20 + 8030abc: af00 add r7, sp, #0 + 8030abe: 6078 str r0, [r7, #4] if(IS_DMA_STREAM_INSTANCE(hdma->Instance) != 0U) /* DMA1 or DMA2 instance */ - 8030a80: 687b ldr r3, [r7, #4] - 8030a82: 681b ldr r3, [r3, #0] - 8030a84: 4a42 ldr r2, [pc, #264] ; (8030b90 ) - 8030a86: 4293 cmp r3, r2 - 8030a88: d04a beq.n 8030b20 - 8030a8a: 687b ldr r3, [r7, #4] - 8030a8c: 681b ldr r3, [r3, #0] - 8030a8e: 4a41 ldr r2, [pc, #260] ; (8030b94 ) - 8030a90: 4293 cmp r3, r2 - 8030a92: d045 beq.n 8030b20 - 8030a94: 687b ldr r3, [r7, #4] - 8030a96: 681b ldr r3, [r3, #0] - 8030a98: 4a3f ldr r2, [pc, #252] ; (8030b98 ) - 8030a9a: 4293 cmp r3, r2 - 8030a9c: d040 beq.n 8030b20 - 8030a9e: 687b ldr r3, [r7, #4] - 8030aa0: 681b ldr r3, [r3, #0] - 8030aa2: 4a3e ldr r2, [pc, #248] ; (8030b9c ) - 8030aa4: 4293 cmp r3, r2 - 8030aa6: d03b beq.n 8030b20 - 8030aa8: 687b ldr r3, [r7, #4] - 8030aaa: 681b ldr r3, [r3, #0] - 8030aac: 4a3c ldr r2, [pc, #240] ; (8030ba0 ) - 8030aae: 4293 cmp r3, r2 - 8030ab0: d036 beq.n 8030b20 - 8030ab2: 687b ldr r3, [r7, #4] - 8030ab4: 681b ldr r3, [r3, #0] - 8030ab6: 4a3b ldr r2, [pc, #236] ; (8030ba4 ) - 8030ab8: 4293 cmp r3, r2 - 8030aba: d031 beq.n 8030b20 - 8030abc: 687b ldr r3, [r7, #4] - 8030abe: 681b ldr r3, [r3, #0] - 8030ac0: 4a39 ldr r2, [pc, #228] ; (8030ba8 ) - 8030ac2: 4293 cmp r3, r2 - 8030ac4: d02c beq.n 8030b20 - 8030ac6: 687b ldr r3, [r7, #4] - 8030ac8: 681b ldr r3, [r3, #0] - 8030aca: 4a38 ldr r2, [pc, #224] ; (8030bac ) - 8030acc: 4293 cmp r3, r2 - 8030ace: d027 beq.n 8030b20 - 8030ad0: 687b ldr r3, [r7, #4] - 8030ad2: 681b ldr r3, [r3, #0] - 8030ad4: 4a36 ldr r2, [pc, #216] ; (8030bb0 ) - 8030ad6: 4293 cmp r3, r2 - 8030ad8: d022 beq.n 8030b20 - 8030ada: 687b ldr r3, [r7, #4] - 8030adc: 681b ldr r3, [r3, #0] - 8030ade: 4a35 ldr r2, [pc, #212] ; (8030bb4 ) - 8030ae0: 4293 cmp r3, r2 - 8030ae2: d01d beq.n 8030b20 - 8030ae4: 687b ldr r3, [r7, #4] - 8030ae6: 681b ldr r3, [r3, #0] - 8030ae8: 4a33 ldr r2, [pc, #204] ; (8030bb8 ) - 8030aea: 4293 cmp r3, r2 - 8030aec: d018 beq.n 8030b20 - 8030aee: 687b ldr r3, [r7, #4] - 8030af0: 681b ldr r3, [r3, #0] - 8030af2: 4a32 ldr r2, [pc, #200] ; (8030bbc ) - 8030af4: 4293 cmp r3, r2 - 8030af6: d013 beq.n 8030b20 - 8030af8: 687b ldr r3, [r7, #4] - 8030afa: 681b ldr r3, [r3, #0] - 8030afc: 4a30 ldr r2, [pc, #192] ; (8030bc0 ) - 8030afe: 4293 cmp r3, r2 - 8030b00: d00e beq.n 8030b20 - 8030b02: 687b ldr r3, [r7, #4] - 8030b04: 681b ldr r3, [r3, #0] - 8030b06: 4a2f ldr r2, [pc, #188] ; (8030bc4 ) - 8030b08: 4293 cmp r3, r2 - 8030b0a: d009 beq.n 8030b20 - 8030b0c: 687b ldr r3, [r7, #4] - 8030b0e: 681b ldr r3, [r3, #0] - 8030b10: 4a2d ldr r2, [pc, #180] ; (8030bc8 ) - 8030b12: 4293 cmp r3, r2 - 8030b14: d004 beq.n 8030b20 - 8030b16: 687b ldr r3, [r7, #4] - 8030b18: 681b ldr r3, [r3, #0] - 8030b1a: 4a2c ldr r2, [pc, #176] ; (8030bcc ) - 8030b1c: 4293 cmp r3, r2 - 8030b1e: d101 bne.n 8030b24 - 8030b20: 2301 movs r3, #1 - 8030b22: e000 b.n 8030b26 - 8030b24: 2300 movs r3, #0 - 8030b26: 2b00 cmp r3, #0 - 8030b28: d024 beq.n 8030b74 + 8030ac0: 687b ldr r3, [r7, #4] + 8030ac2: 681b ldr r3, [r3, #0] + 8030ac4: 4a42 ldr r2, [pc, #264] ; (8030bd0 ) + 8030ac6: 4293 cmp r3, r2 + 8030ac8: d04a beq.n 8030b60 + 8030aca: 687b ldr r3, [r7, #4] + 8030acc: 681b ldr r3, [r3, #0] + 8030ace: 4a41 ldr r2, [pc, #260] ; (8030bd4 ) + 8030ad0: 4293 cmp r3, r2 + 8030ad2: d045 beq.n 8030b60 + 8030ad4: 687b ldr r3, [r7, #4] + 8030ad6: 681b ldr r3, [r3, #0] + 8030ad8: 4a3f ldr r2, [pc, #252] ; (8030bd8 ) + 8030ada: 4293 cmp r3, r2 + 8030adc: d040 beq.n 8030b60 + 8030ade: 687b ldr r3, [r7, #4] + 8030ae0: 681b ldr r3, [r3, #0] + 8030ae2: 4a3e ldr r2, [pc, #248] ; (8030bdc ) + 8030ae4: 4293 cmp r3, r2 + 8030ae6: d03b beq.n 8030b60 + 8030ae8: 687b ldr r3, [r7, #4] + 8030aea: 681b ldr r3, [r3, #0] + 8030aec: 4a3c ldr r2, [pc, #240] ; (8030be0 ) + 8030aee: 4293 cmp r3, r2 + 8030af0: d036 beq.n 8030b60 + 8030af2: 687b ldr r3, [r7, #4] + 8030af4: 681b ldr r3, [r3, #0] + 8030af6: 4a3b ldr r2, [pc, #236] ; (8030be4 ) + 8030af8: 4293 cmp r3, r2 + 8030afa: d031 beq.n 8030b60 + 8030afc: 687b ldr r3, [r7, #4] + 8030afe: 681b ldr r3, [r3, #0] + 8030b00: 4a39 ldr r2, [pc, #228] ; (8030be8 ) + 8030b02: 4293 cmp r3, r2 + 8030b04: d02c beq.n 8030b60 + 8030b06: 687b ldr r3, [r7, #4] + 8030b08: 681b ldr r3, [r3, #0] + 8030b0a: 4a38 ldr r2, [pc, #224] ; (8030bec ) + 8030b0c: 4293 cmp r3, r2 + 8030b0e: d027 beq.n 8030b60 + 8030b10: 687b ldr r3, [r7, #4] + 8030b12: 681b ldr r3, [r3, #0] + 8030b14: 4a36 ldr r2, [pc, #216] ; (8030bf0 ) + 8030b16: 4293 cmp r3, r2 + 8030b18: d022 beq.n 8030b60 + 8030b1a: 687b ldr r3, [r7, #4] + 8030b1c: 681b ldr r3, [r3, #0] + 8030b1e: 4a35 ldr r2, [pc, #212] ; (8030bf4 ) + 8030b20: 4293 cmp r3, r2 + 8030b22: d01d beq.n 8030b60 + 8030b24: 687b ldr r3, [r7, #4] + 8030b26: 681b ldr r3, [r3, #0] + 8030b28: 4a33 ldr r2, [pc, #204] ; (8030bf8 ) + 8030b2a: 4293 cmp r3, r2 + 8030b2c: d018 beq.n 8030b60 + 8030b2e: 687b ldr r3, [r7, #4] + 8030b30: 681b ldr r3, [r3, #0] + 8030b32: 4a32 ldr r2, [pc, #200] ; (8030bfc ) + 8030b34: 4293 cmp r3, r2 + 8030b36: d013 beq.n 8030b60 + 8030b38: 687b ldr r3, [r7, #4] + 8030b3a: 681b ldr r3, [r3, #0] + 8030b3c: 4a30 ldr r2, [pc, #192] ; (8030c00 ) + 8030b3e: 4293 cmp r3, r2 + 8030b40: d00e beq.n 8030b60 + 8030b42: 687b ldr r3, [r7, #4] + 8030b44: 681b ldr r3, [r3, #0] + 8030b46: 4a2f ldr r2, [pc, #188] ; (8030c04 ) + 8030b48: 4293 cmp r3, r2 + 8030b4a: d009 beq.n 8030b60 + 8030b4c: 687b ldr r3, [r7, #4] + 8030b4e: 681b ldr r3, [r3, #0] + 8030b50: 4a2d ldr r2, [pc, #180] ; (8030c08 ) + 8030b52: 4293 cmp r3, r2 + 8030b54: d004 beq.n 8030b60 + 8030b56: 687b ldr r3, [r7, #4] + 8030b58: 681b ldr r3, [r3, #0] + 8030b5a: 4a2c ldr r2, [pc, #176] ; (8030c0c ) + 8030b5c: 4293 cmp r3, r2 + 8030b5e: d101 bne.n 8030b64 + 8030b60: 2301 movs r3, #1 + 8030b62: e000 b.n 8030b66 + 8030b64: 2300 movs r3, #0 + 8030b66: 2b00 cmp r3, #0 + 8030b68: d024 beq.n 8030bb4 { uint32_t stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 16U) / 24U; - 8030b2a: 687b ldr r3, [r7, #4] - 8030b2c: 681b ldr r3, [r3, #0] - 8030b2e: b2db uxtb r3, r3 - 8030b30: 3b10 subs r3, #16 - 8030b32: 4a27 ldr r2, [pc, #156] ; (8030bd0 ) - 8030b34: fba2 2303 umull r2, r3, r2, r3 - 8030b38: 091b lsrs r3, r3, #4 - 8030b3a: 60fb str r3, [r7, #12] + 8030b6a: 687b ldr r3, [r7, #4] + 8030b6c: 681b ldr r3, [r3, #0] + 8030b6e: b2db uxtb r3, r3 + 8030b70: 3b10 subs r3, #16 + 8030b72: 4a27 ldr r2, [pc, #156] ; (8030c10 ) + 8030b74: fba2 2303 umull r2, r3, r2, r3 + 8030b78: 091b lsrs r3, r3, #4 + 8030b7a: 60fb str r3, [r7, #12] /* lookup table for necessary bitshift of flags within status registers */ static const uint8_t flagBitshiftOffset[8U] = {0U, 6U, 16U, 22U, 0U, 6U, 16U, 22U}; hdma->StreamIndex = flagBitshiftOffset[stream_number & 0x7U]; - 8030b3c: 68fb ldr r3, [r7, #12] - 8030b3e: f003 0307 and.w r3, r3, #7 - 8030b42: 4a24 ldr r2, [pc, #144] ; (8030bd4 ) - 8030b44: 5cd3 ldrb r3, [r2, r3] - 8030b46: 461a mov r2, r3 - 8030b48: 687b ldr r3, [r7, #4] - 8030b4a: 65da str r2, [r3, #92] ; 0x5c + 8030b7c: 68fb ldr r3, [r7, #12] + 8030b7e: f003 0307 and.w r3, r3, #7 + 8030b82: 4a24 ldr r2, [pc, #144] ; (8030c14 ) + 8030b84: 5cd3 ldrb r3, [r2, r3] + 8030b86: 461a mov r2, r3 + 8030b88: 687b ldr r3, [r7, #4] + 8030b8a: 65da str r2, [r3, #92] ; 0x5c if (stream_number > 3U) - 8030b4c: 68fb ldr r3, [r7, #12] - 8030b4e: 2b03 cmp r3, #3 - 8030b50: d908 bls.n 8030b64 + 8030b8c: 68fb ldr r3, [r7, #12] + 8030b8e: 2b03 cmp r3, #3 + 8030b90: d908 bls.n 8030ba4 { /* return pointer to HISR and HIFCR */ hdma->StreamBaseAddress = (((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0x3FFU)) + 4U); - 8030b52: 687b ldr r3, [r7, #4] - 8030b54: 681b ldr r3, [r3, #0] - 8030b56: 461a mov r2, r3 - 8030b58: 4b1f ldr r3, [pc, #124] ; (8030bd8 ) - 8030b5a: 4013 ands r3, r2 - 8030b5c: 1d1a adds r2, r3, #4 - 8030b5e: 687b ldr r3, [r7, #4] - 8030b60: 659a str r2, [r3, #88] ; 0x58 - 8030b62: e00d b.n 8030b80 + 8030b92: 687b ldr r3, [r7, #4] + 8030b94: 681b ldr r3, [r3, #0] + 8030b96: 461a mov r2, r3 + 8030b98: 4b1f ldr r3, [pc, #124] ; (8030c18 ) + 8030b9a: 4013 ands r3, r2 + 8030b9c: 1d1a adds r2, r3, #4 + 8030b9e: 687b ldr r3, [r7, #4] + 8030ba0: 659a str r2, [r3, #88] ; 0x58 + 8030ba2: e00d b.n 8030bc0 } else { /* return pointer to LISR and LIFCR */ hdma->StreamBaseAddress = ((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0x3FFU)); - 8030b64: 687b ldr r3, [r7, #4] - 8030b66: 681b ldr r3, [r3, #0] - 8030b68: 461a mov r2, r3 - 8030b6a: 4b1b ldr r3, [pc, #108] ; (8030bd8 ) - 8030b6c: 4013 ands r3, r2 - 8030b6e: 687a ldr r2, [r7, #4] - 8030b70: 6593 str r3, [r2, #88] ; 0x58 - 8030b72: e005 b.n 8030b80 + 8030ba4: 687b ldr r3, [r7, #4] + 8030ba6: 681b ldr r3, [r3, #0] + 8030ba8: 461a mov r2, r3 + 8030baa: 4b1b ldr r3, [pc, #108] ; (8030c18 ) + 8030bac: 4013 ands r3, r2 + 8030bae: 687a ldr r2, [r7, #4] + 8030bb0: 6593 str r3, [r2, #88] ; 0x58 + 8030bb2: e005 b.n 8030bc0 } } else /* BDMA instance(s) */ { /* return pointer to ISR and IFCR */ hdma->StreamBaseAddress = ((uint32_t)((uint32_t*)hdma->Instance) & (uint32_t)(~0xFFU)); - 8030b74: 687b ldr r3, [r7, #4] - 8030b76: 681b ldr r3, [r3, #0] - 8030b78: f023 02ff bic.w r2, r3, #255 ; 0xff - 8030b7c: 687b ldr r3, [r7, #4] - 8030b7e: 659a str r2, [r3, #88] ; 0x58 + 8030bb4: 687b ldr r3, [r7, #4] + 8030bb6: 681b ldr r3, [r3, #0] + 8030bb8: f023 02ff bic.w r2, r3, #255 ; 0xff + 8030bbc: 687b ldr r3, [r7, #4] + 8030bbe: 659a str r2, [r3, #88] ; 0x58 } return hdma->StreamBaseAddress; - 8030b80: 687b ldr r3, [r7, #4] - 8030b82: 6d9b ldr r3, [r3, #88] ; 0x58 -} - 8030b84: 4618 mov r0, r3 - 8030b86: 3714 adds r7, #20 - 8030b88: 46bd mov sp, r7 - 8030b8a: f85d 7b04 ldr.w r7, [sp], #4 - 8030b8e: 4770 bx lr - 8030b90: 40020010 .word 0x40020010 - 8030b94: 40020028 .word 0x40020028 - 8030b98: 40020040 .word 0x40020040 - 8030b9c: 40020058 .word 0x40020058 - 8030ba0: 40020070 .word 0x40020070 - 8030ba4: 40020088 .word 0x40020088 - 8030ba8: 400200a0 .word 0x400200a0 - 8030bac: 400200b8 .word 0x400200b8 - 8030bb0: 40020410 .word 0x40020410 - 8030bb4: 40020428 .word 0x40020428 - 8030bb8: 40020440 .word 0x40020440 - 8030bbc: 40020458 .word 0x40020458 - 8030bc0: 40020470 .word 0x40020470 - 8030bc4: 40020488 .word 0x40020488 - 8030bc8: 400204a0 .word 0x400204a0 - 8030bcc: 400204b8 .word 0x400204b8 - 8030bd0: aaaaaaab .word 0xaaaaaaab - 8030bd4: 0804d36c .word 0x0804d36c - 8030bd8: fffffc00 .word 0xfffffc00 - -08030bdc : + 8030bc0: 687b ldr r3, [r7, #4] + 8030bc2: 6d9b ldr r3, [r3, #88] ; 0x58 +} + 8030bc4: 4618 mov r0, r3 + 8030bc6: 3714 adds r7, #20 + 8030bc8: 46bd mov sp, r7 + 8030bca: f85d 7b04 ldr.w r7, [sp], #4 + 8030bce: 4770 bx lr + 8030bd0: 40020010 .word 0x40020010 + 8030bd4: 40020028 .word 0x40020028 + 8030bd8: 40020040 .word 0x40020040 + 8030bdc: 40020058 .word 0x40020058 + 8030be0: 40020070 .word 0x40020070 + 8030be4: 40020088 .word 0x40020088 + 8030be8: 400200a0 .word 0x400200a0 + 8030bec: 400200b8 .word 0x400200b8 + 8030bf0: 40020410 .word 0x40020410 + 8030bf4: 40020428 .word 0x40020428 + 8030bf8: 40020440 .word 0x40020440 + 8030bfc: 40020458 .word 0x40020458 + 8030c00: 40020470 .word 0x40020470 + 8030c04: 40020488 .word 0x40020488 + 8030c08: 400204a0 .word 0x400204a0 + 8030c0c: 400204b8 .word 0x400204b8 + 8030c10: aaaaaaab .word 0xaaaaaaab + 8030c14: 0804d3ac .word 0x0804d3ac + 8030c18: fffffc00 .word 0xfffffc00 + +08030c1c : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ static HAL_StatusTypeDef DMA_CheckFifoParam(DMA_HandleTypeDef *hdma) { - 8030bdc: b480 push {r7} - 8030bde: b085 sub sp, #20 - 8030be0: af00 add r7, sp, #0 - 8030be2: 6078 str r0, [r7, #4] + 8030c1c: b480 push {r7} + 8030c1e: b085 sub sp, #20 + 8030c20: af00 add r7, sp, #0 + 8030c22: 6078 str r0, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8030be4: 2300 movs r3, #0 - 8030be6: 73fb strb r3, [r7, #15] + 8030c24: 2300 movs r3, #0 + 8030c26: 73fb strb r3, [r7, #15] /* Memory Data size equal to Byte */ if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_BYTE) - 8030be8: 687b ldr r3, [r7, #4] - 8030bea: 699b ldr r3, [r3, #24] - 8030bec: 2b00 cmp r3, #0 - 8030bee: d120 bne.n 8030c32 + 8030c28: 687b ldr r3, [r7, #4] + 8030c2a: 699b ldr r3, [r3, #24] + 8030c2c: 2b00 cmp r3, #0 + 8030c2e: d120 bne.n 8030c72 { switch (hdma->Init.FIFOThreshold) - 8030bf0: 687b ldr r3, [r7, #4] - 8030bf2: 6a9b ldr r3, [r3, #40] ; 0x28 - 8030bf4: 2b03 cmp r3, #3 - 8030bf6: d858 bhi.n 8030caa - 8030bf8: a201 add r2, pc, #4 ; (adr r2, 8030c00 ) - 8030bfa: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8030bfe: bf00 nop - 8030c00: 08030c11 .word 0x08030c11 - 8030c04: 08030c23 .word 0x08030c23 - 8030c08: 08030c11 .word 0x08030c11 - 8030c0c: 08030cab .word 0x08030cab + 8030c30: 687b ldr r3, [r7, #4] + 8030c32: 6a9b ldr r3, [r3, #40] ; 0x28 + 8030c34: 2b03 cmp r3, #3 + 8030c36: d858 bhi.n 8030cea + 8030c38: a201 add r2, pc, #4 ; (adr r2, 8030c40 ) + 8030c3a: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8030c3e: bf00 nop + 8030c40: 08030c51 .word 0x08030c51 + 8030c44: 08030c63 .word 0x08030c63 + 8030c48: 08030c51 .word 0x08030c51 + 8030c4c: 08030ceb .word 0x08030ceb { case DMA_FIFO_THRESHOLD_1QUARTERFULL: case DMA_FIFO_THRESHOLD_3QUARTERSFULL: if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 8030c10: 687b ldr r3, [r7, #4] - 8030c12: 6adb ldr r3, [r3, #44] ; 0x2c - 8030c14: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 8030c18: 2b00 cmp r3, #0 - 8030c1a: d048 beq.n 8030cae + 8030c50: 687b ldr r3, [r7, #4] + 8030c52: 6adb ldr r3, [r3, #44] ; 0x2c + 8030c54: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 8030c58: 2b00 cmp r3, #0 + 8030c5a: d048 beq.n 8030cee { status = HAL_ERROR; - 8030c1c: 2301 movs r3, #1 - 8030c1e: 73fb strb r3, [r7, #15] + 8030c5c: 2301 movs r3, #1 + 8030c5e: 73fb strb r3, [r7, #15] } break; - 8030c20: e045 b.n 8030cae + 8030c60: e045 b.n 8030cee case DMA_FIFO_THRESHOLD_HALFFULL: if (hdma->Init.MemBurst == DMA_MBURST_INC16) - 8030c22: 687b ldr r3, [r7, #4] - 8030c24: 6adb ldr r3, [r3, #44] ; 0x2c - 8030c26: f1b3 7fc0 cmp.w r3, #25165824 ; 0x1800000 - 8030c2a: d142 bne.n 8030cb2 + 8030c62: 687b ldr r3, [r7, #4] + 8030c64: 6adb ldr r3, [r3, #44] ; 0x2c + 8030c66: f1b3 7fc0 cmp.w r3, #25165824 ; 0x1800000 + 8030c6a: d142 bne.n 8030cf2 { status = HAL_ERROR; - 8030c2c: 2301 movs r3, #1 - 8030c2e: 73fb strb r3, [r7, #15] + 8030c6c: 2301 movs r3, #1 + 8030c6e: 73fb strb r3, [r7, #15] } break; - 8030c30: e03f b.n 8030cb2 + 8030c70: e03f b.n 8030cf2 break; } } /* Memory Data size equal to Half-Word */ else if (hdma->Init.MemDataAlignment == DMA_MDATAALIGN_HALFWORD) - 8030c32: 687b ldr r3, [r7, #4] - 8030c34: 699b ldr r3, [r3, #24] - 8030c36: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8030c3a: d123 bne.n 8030c84 + 8030c72: 687b ldr r3, [r7, #4] + 8030c74: 699b ldr r3, [r3, #24] + 8030c76: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 8030c7a: d123 bne.n 8030cc4 { switch (hdma->Init.FIFOThreshold) - 8030c3c: 687b ldr r3, [r7, #4] - 8030c3e: 6a9b ldr r3, [r3, #40] ; 0x28 - 8030c40: 2b03 cmp r3, #3 - 8030c42: d838 bhi.n 8030cb6 - 8030c44: a201 add r2, pc, #4 ; (adr r2, 8030c4c ) - 8030c46: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8030c4a: bf00 nop - 8030c4c: 08030c5d .word 0x08030c5d - 8030c50: 08030c63 .word 0x08030c63 - 8030c54: 08030c5d .word 0x08030c5d - 8030c58: 08030c75 .word 0x08030c75 + 8030c7c: 687b ldr r3, [r7, #4] + 8030c7e: 6a9b ldr r3, [r3, #40] ; 0x28 + 8030c80: 2b03 cmp r3, #3 + 8030c82: d838 bhi.n 8030cf6 + 8030c84: a201 add r2, pc, #4 ; (adr r2, 8030c8c ) + 8030c86: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8030c8a: bf00 nop + 8030c8c: 08030c9d .word 0x08030c9d + 8030c90: 08030ca3 .word 0x08030ca3 + 8030c94: 08030c9d .word 0x08030c9d + 8030c98: 08030cb5 .word 0x08030cb5 { case DMA_FIFO_THRESHOLD_1QUARTERFULL: case DMA_FIFO_THRESHOLD_3QUARTERSFULL: status = HAL_ERROR; - 8030c5c: 2301 movs r3, #1 - 8030c5e: 73fb strb r3, [r7, #15] + 8030c9c: 2301 movs r3, #1 + 8030c9e: 73fb strb r3, [r7, #15] break; - 8030c60: e030 b.n 8030cc4 + 8030ca0: e030 b.n 8030d04 case DMA_FIFO_THRESHOLD_HALFFULL: if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 8030c62: 687b ldr r3, [r7, #4] - 8030c64: 6adb ldr r3, [r3, #44] ; 0x2c - 8030c66: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 8030c6a: 2b00 cmp r3, #0 - 8030c6c: d025 beq.n 8030cba + 8030ca2: 687b ldr r3, [r7, #4] + 8030ca4: 6adb ldr r3, [r3, #44] ; 0x2c + 8030ca6: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 8030caa: 2b00 cmp r3, #0 + 8030cac: d025 beq.n 8030cfa { status = HAL_ERROR; - 8030c6e: 2301 movs r3, #1 - 8030c70: 73fb strb r3, [r7, #15] + 8030cae: 2301 movs r3, #1 + 8030cb0: 73fb strb r3, [r7, #15] } break; - 8030c72: e022 b.n 8030cba + 8030cb2: e022 b.n 8030cfa case DMA_FIFO_THRESHOLD_FULL: if (hdma->Init.MemBurst == DMA_MBURST_INC16) - 8030c74: 687b ldr r3, [r7, #4] - 8030c76: 6adb ldr r3, [r3, #44] ; 0x2c - 8030c78: f1b3 7fc0 cmp.w r3, #25165824 ; 0x1800000 - 8030c7c: d11f bne.n 8030cbe + 8030cb4: 687b ldr r3, [r7, #4] + 8030cb6: 6adb ldr r3, [r3, #44] ; 0x2c + 8030cb8: f1b3 7fc0 cmp.w r3, #25165824 ; 0x1800000 + 8030cbc: d11f bne.n 8030cfe { status = HAL_ERROR; - 8030c7e: 2301 movs r3, #1 - 8030c80: 73fb strb r3, [r7, #15] + 8030cbe: 2301 movs r3, #1 + 8030cc0: 73fb strb r3, [r7, #15] } break; - 8030c82: e01c b.n 8030cbe + 8030cc2: e01c b.n 8030cfe } /* Memory Data size equal to Word */ else { switch (hdma->Init.FIFOThreshold) - 8030c84: 687b ldr r3, [r7, #4] - 8030c86: 6a9b ldr r3, [r3, #40] ; 0x28 - 8030c88: 2b02 cmp r3, #2 - 8030c8a: d902 bls.n 8030c92 - 8030c8c: 2b03 cmp r3, #3 - 8030c8e: d003 beq.n 8030c98 + 8030cc4: 687b ldr r3, [r7, #4] + 8030cc6: 6a9b ldr r3, [r3, #40] ; 0x28 + 8030cc8: 2b02 cmp r3, #2 + 8030cca: d902 bls.n 8030cd2 + 8030ccc: 2b03 cmp r3, #3 + 8030cce: d003 beq.n 8030cd8 status = HAL_ERROR; } break; default: break; - 8030c90: e018 b.n 8030cc4 + 8030cd0: e018 b.n 8030d04 status = HAL_ERROR; - 8030c92: 2301 movs r3, #1 - 8030c94: 73fb strb r3, [r7, #15] + 8030cd2: 2301 movs r3, #1 + 8030cd4: 73fb strb r3, [r7, #15] break; - 8030c96: e015 b.n 8030cc4 + 8030cd6: e015 b.n 8030d04 if ((hdma->Init.MemBurst & DMA_SxCR_MBURST_1) == DMA_SxCR_MBURST_1) - 8030c98: 687b ldr r3, [r7, #4] - 8030c9a: 6adb ldr r3, [r3, #44] ; 0x2c - 8030c9c: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 8030ca0: 2b00 cmp r3, #0 - 8030ca2: d00e beq.n 8030cc2 + 8030cd8: 687b ldr r3, [r7, #4] + 8030cda: 6adb ldr r3, [r3, #44] ; 0x2c + 8030cdc: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 8030ce0: 2b00 cmp r3, #0 + 8030ce2: d00e beq.n 8030d02 status = HAL_ERROR; - 8030ca4: 2301 movs r3, #1 - 8030ca6: 73fb strb r3, [r7, #15] + 8030ce4: 2301 movs r3, #1 + 8030ce6: 73fb strb r3, [r7, #15] break; - 8030ca8: e00b b.n 8030cc2 + 8030ce8: e00b b.n 8030d02 break; - 8030caa: bf00 nop - 8030cac: e00a b.n 8030cc4 + 8030cea: bf00 nop + 8030cec: e00a b.n 8030d04 break; - 8030cae: bf00 nop - 8030cb0: e008 b.n 8030cc4 + 8030cee: bf00 nop + 8030cf0: e008 b.n 8030d04 break; - 8030cb2: bf00 nop - 8030cb4: e006 b.n 8030cc4 + 8030cf2: bf00 nop + 8030cf4: e006 b.n 8030d04 break; - 8030cb6: bf00 nop - 8030cb8: e004 b.n 8030cc4 + 8030cf6: bf00 nop + 8030cf8: e004 b.n 8030d04 break; - 8030cba: bf00 nop - 8030cbc: e002 b.n 8030cc4 + 8030cfa: bf00 nop + 8030cfc: e002 b.n 8030d04 break; - 8030cbe: bf00 nop - 8030cc0: e000 b.n 8030cc4 + 8030cfe: bf00 nop + 8030d00: e000 b.n 8030d04 break; - 8030cc2: bf00 nop + 8030d02: bf00 nop } } return status; - 8030cc4: 7bfb ldrb r3, [r7, #15] + 8030d04: 7bfb ldrb r3, [r7, #15] } - 8030cc6: 4618 mov r0, r3 - 8030cc8: 3714 adds r7, #20 - 8030cca: 46bd mov sp, r7 - 8030ccc: f85d 7b04 ldr.w r7, [sp], #4 - 8030cd0: 4770 bx lr - 8030cd2: bf00 nop + 8030d06: 4618 mov r0, r3 + 8030d08: 3714 adds r7, #20 + 8030d0a: 46bd mov sp, r7 + 8030d0c: f85d 7b04 ldr.w r7, [sp], #4 + 8030d10: 4770 bx lr + 8030d12: bf00 nop -08030cd4 : +08030d14 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ static void DMA_CalcDMAMUXChannelBaseAndMask(DMA_HandleTypeDef *hdma) { - 8030cd4: b480 push {r7} - 8030cd6: b085 sub sp, #20 - 8030cd8: af00 add r7, sp, #0 - 8030cda: 6078 str r0, [r7, #4] + 8030d14: b480 push {r7} + 8030d16: b085 sub sp, #20 + 8030d18: af00 add r7, sp, #0 + 8030d1a: 6078 str r0, [r7, #4] uint32_t stream_number; uint32_t stream_baseaddress = (uint32_t)((uint32_t*)hdma->Instance); - 8030cdc: 687b ldr r3, [r7, #4] - 8030cde: 681b ldr r3, [r3, #0] - 8030ce0: 60bb str r3, [r7, #8] + 8030d1c: 687b ldr r3, [r7, #4] + 8030d1e: 681b ldr r3, [r3, #0] + 8030d20: 60bb str r3, [r7, #8] if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U) - 8030ce2: 687b ldr r3, [r7, #4] - 8030ce4: 681b ldr r3, [r3, #0] - 8030ce6: 4a38 ldr r2, [pc, #224] ; (8030dc8 ) - 8030ce8: 4293 cmp r3, r2 - 8030cea: d022 beq.n 8030d32 - 8030cec: 687b ldr r3, [r7, #4] - 8030cee: 681b ldr r3, [r3, #0] - 8030cf0: 4a36 ldr r2, [pc, #216] ; (8030dcc ) - 8030cf2: 4293 cmp r3, r2 - 8030cf4: d01d beq.n 8030d32 - 8030cf6: 687b ldr r3, [r7, #4] - 8030cf8: 681b ldr r3, [r3, #0] - 8030cfa: 4a35 ldr r2, [pc, #212] ; (8030dd0 ) - 8030cfc: 4293 cmp r3, r2 - 8030cfe: d018 beq.n 8030d32 - 8030d00: 687b ldr r3, [r7, #4] - 8030d02: 681b ldr r3, [r3, #0] - 8030d04: 4a33 ldr r2, [pc, #204] ; (8030dd4 ) - 8030d06: 4293 cmp r3, r2 - 8030d08: d013 beq.n 8030d32 - 8030d0a: 687b ldr r3, [r7, #4] - 8030d0c: 681b ldr r3, [r3, #0] - 8030d0e: 4a32 ldr r2, [pc, #200] ; (8030dd8 ) - 8030d10: 4293 cmp r3, r2 - 8030d12: d00e beq.n 8030d32 - 8030d14: 687b ldr r3, [r7, #4] - 8030d16: 681b ldr r3, [r3, #0] - 8030d18: 4a30 ldr r2, [pc, #192] ; (8030ddc ) - 8030d1a: 4293 cmp r3, r2 - 8030d1c: d009 beq.n 8030d32 - 8030d1e: 687b ldr r3, [r7, #4] - 8030d20: 681b ldr r3, [r3, #0] - 8030d22: 4a2f ldr r2, [pc, #188] ; (8030de0 ) - 8030d24: 4293 cmp r3, r2 - 8030d26: d004 beq.n 8030d32 - 8030d28: 687b ldr r3, [r7, #4] - 8030d2a: 681b ldr r3, [r3, #0] - 8030d2c: 4a2d ldr r2, [pc, #180] ; (8030de4 ) - 8030d2e: 4293 cmp r3, r2 - 8030d30: d101 bne.n 8030d36 - 8030d32: 2301 movs r3, #1 - 8030d34: e000 b.n 8030d38 - 8030d36: 2300 movs r3, #0 - 8030d38: 2b00 cmp r3, #0 - 8030d3a: d01a beq.n 8030d72 + 8030d22: 687b ldr r3, [r7, #4] + 8030d24: 681b ldr r3, [r3, #0] + 8030d26: 4a38 ldr r2, [pc, #224] ; (8030e08 ) + 8030d28: 4293 cmp r3, r2 + 8030d2a: d022 beq.n 8030d72 + 8030d2c: 687b ldr r3, [r7, #4] + 8030d2e: 681b ldr r3, [r3, #0] + 8030d30: 4a36 ldr r2, [pc, #216] ; (8030e0c ) + 8030d32: 4293 cmp r3, r2 + 8030d34: d01d beq.n 8030d72 + 8030d36: 687b ldr r3, [r7, #4] + 8030d38: 681b ldr r3, [r3, #0] + 8030d3a: 4a35 ldr r2, [pc, #212] ; (8030e10 ) + 8030d3c: 4293 cmp r3, r2 + 8030d3e: d018 beq.n 8030d72 + 8030d40: 687b ldr r3, [r7, #4] + 8030d42: 681b ldr r3, [r3, #0] + 8030d44: 4a33 ldr r2, [pc, #204] ; (8030e14 ) + 8030d46: 4293 cmp r3, r2 + 8030d48: d013 beq.n 8030d72 + 8030d4a: 687b ldr r3, [r7, #4] + 8030d4c: 681b ldr r3, [r3, #0] + 8030d4e: 4a32 ldr r2, [pc, #200] ; (8030e18 ) + 8030d50: 4293 cmp r3, r2 + 8030d52: d00e beq.n 8030d72 + 8030d54: 687b ldr r3, [r7, #4] + 8030d56: 681b ldr r3, [r3, #0] + 8030d58: 4a30 ldr r2, [pc, #192] ; (8030e1c ) + 8030d5a: 4293 cmp r3, r2 + 8030d5c: d009 beq.n 8030d72 + 8030d5e: 687b ldr r3, [r7, #4] + 8030d60: 681b ldr r3, [r3, #0] + 8030d62: 4a2f ldr r2, [pc, #188] ; (8030e20 ) + 8030d64: 4293 cmp r3, r2 + 8030d66: d004 beq.n 8030d72 + 8030d68: 687b ldr r3, [r7, #4] + 8030d6a: 681b ldr r3, [r3, #0] + 8030d6c: 4a2d ldr r2, [pc, #180] ; (8030e24 ) + 8030d6e: 4293 cmp r3, r2 + 8030d70: d101 bne.n 8030d76 + 8030d72: 2301 movs r3, #1 + 8030d74: e000 b.n 8030d78 + 8030d76: 2300 movs r3, #0 + 8030d78: 2b00 cmp r3, #0 + 8030d7a: d01a beq.n 8030db2 { /* BDMA Channels are connected to DMAMUX2 channels */ stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 8U) / 20U; - 8030d3c: 687b ldr r3, [r7, #4] - 8030d3e: 681b ldr r3, [r3, #0] - 8030d40: b2db uxtb r3, r3 - 8030d42: 3b08 subs r3, #8 - 8030d44: 4a28 ldr r2, [pc, #160] ; (8030de8 ) - 8030d46: fba2 2303 umull r2, r3, r2, r3 - 8030d4a: 091b lsrs r3, r3, #4 - 8030d4c: 60fb str r3, [r7, #12] + 8030d7c: 687b ldr r3, [r7, #4] + 8030d7e: 681b ldr r3, [r3, #0] + 8030d80: b2db uxtb r3, r3 + 8030d82: 3b08 subs r3, #8 + 8030d84: 4a28 ldr r2, [pc, #160] ; (8030e28 ) + 8030d86: fba2 2303 umull r2, r3, r2, r3 + 8030d8a: 091b lsrs r3, r3, #4 + 8030d8c: 60fb str r3, [r7, #12] hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)((uint32_t)(((uint32_t)DMAMUX2_Channel0) + (stream_number * 4U))); - 8030d4e: 68fa ldr r2, [r7, #12] - 8030d50: 4b26 ldr r3, [pc, #152] ; (8030dec ) - 8030d52: 4413 add r3, r2 - 8030d54: 009b lsls r3, r3, #2 - 8030d56: 461a mov r2, r3 - 8030d58: 687b ldr r3, [r7, #4] - 8030d5a: 661a str r2, [r3, #96] ; 0x60 + 8030d8e: 68fa ldr r2, [r7, #12] + 8030d90: 4b26 ldr r3, [pc, #152] ; (8030e2c ) + 8030d92: 4413 add r3, r2 + 8030d94: 009b lsls r3, r3, #2 + 8030d96: 461a mov r2, r3 + 8030d98: 687b ldr r3, [r7, #4] + 8030d9a: 661a str r2, [r3, #96] ; 0x60 hdma->DMAmuxChannelStatus = DMAMUX2_ChannelStatus; - 8030d5c: 687b ldr r3, [r7, #4] - 8030d5e: 4a24 ldr r2, [pc, #144] ; (8030df0 ) - 8030d60: 665a str r2, [r3, #100] ; 0x64 + 8030d9c: 687b ldr r3, [r7, #4] + 8030d9e: 4a24 ldr r2, [pc, #144] ; (8030e30 ) + 8030da0: 665a str r2, [r3, #100] ; 0x64 hdma->DMAmuxChannelStatusMask = 1UL << (stream_number & 0x1FU); - 8030d62: 68fb ldr r3, [r7, #12] - 8030d64: f003 031f and.w r3, r3, #31 - 8030d68: 2201 movs r2, #1 - 8030d6a: 409a lsls r2, r3 - 8030d6c: 687b ldr r3, [r7, #4] - 8030d6e: 669a str r2, [r3, #104] ; 0x68 + 8030da2: 68fb ldr r3, [r7, #12] + 8030da4: f003 031f and.w r3, r3, #31 + 8030da8: 2201 movs r2, #1 + 8030daa: 409a lsls r2, r3 + 8030dac: 687b ldr r3, [r7, #4] + 8030dae: 669a str r2, [r3, #104] ; 0x68 } hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_Channel0) + (stream_number * 4U))); hdma->DMAmuxChannelStatus = DMAMUX1_ChannelStatus; hdma->DMAmuxChannelStatusMask = 1UL << (stream_number & 0x1FU); } } - 8030d70: e024 b.n 8030dbc + 8030db0: e024 b.n 8030dfc stream_number = (((uint32_t)((uint32_t*)hdma->Instance) & 0xFFU) - 16U) / 24U; - 8030d72: 687b ldr r3, [r7, #4] - 8030d74: 681b ldr r3, [r3, #0] - 8030d76: b2db uxtb r3, r3 - 8030d78: 3b10 subs r3, #16 - 8030d7a: 4a1e ldr r2, [pc, #120] ; (8030df4 ) - 8030d7c: fba2 2303 umull r2, r3, r2, r3 - 8030d80: 091b lsrs r3, r3, #4 - 8030d82: 60fb str r3, [r7, #12] + 8030db2: 687b ldr r3, [r7, #4] + 8030db4: 681b ldr r3, [r3, #0] + 8030db6: b2db uxtb r3, r3 + 8030db8: 3b10 subs r3, #16 + 8030dba: 4a1e ldr r2, [pc, #120] ; (8030e34 ) + 8030dbc: fba2 2303 umull r2, r3, r2, r3 + 8030dc0: 091b lsrs r3, r3, #4 + 8030dc2: 60fb str r3, [r7, #12] if((stream_baseaddress <= ((uint32_t)DMA2_Stream7) ) && \ - 8030d84: 68bb ldr r3, [r7, #8] - 8030d86: 4a1c ldr r2, [pc, #112] ; (8030df8 ) - 8030d88: 4293 cmp r3, r2 - 8030d8a: d806 bhi.n 8030d9a - 8030d8c: 68bb ldr r3, [r7, #8] - 8030d8e: 4a1b ldr r2, [pc, #108] ; (8030dfc ) - 8030d90: 4293 cmp r3, r2 - 8030d92: d902 bls.n 8030d9a + 8030dc4: 68bb ldr r3, [r7, #8] + 8030dc6: 4a1c ldr r2, [pc, #112] ; (8030e38 ) + 8030dc8: 4293 cmp r3, r2 + 8030dca: d806 bhi.n 8030dda + 8030dcc: 68bb ldr r3, [r7, #8] + 8030dce: 4a1b ldr r2, [pc, #108] ; (8030e3c ) + 8030dd0: 4293 cmp r3, r2 + 8030dd2: d902 bls.n 8030dda stream_number += 8U; - 8030d94: 68fb ldr r3, [r7, #12] - 8030d96: 3308 adds r3, #8 - 8030d98: 60fb str r3, [r7, #12] + 8030dd4: 68fb ldr r3, [r7, #12] + 8030dd6: 3308 adds r3, #8 + 8030dd8: 60fb str r3, [r7, #12] hdma->DMAmuxChannel = (DMAMUX_Channel_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_Channel0) + (stream_number * 4U))); - 8030d9a: 68fa ldr r2, [r7, #12] - 8030d9c: 4b18 ldr r3, [pc, #96] ; (8030e00 ) - 8030d9e: 4413 add r3, r2 - 8030da0: 009b lsls r3, r3, #2 - 8030da2: 461a mov r2, r3 - 8030da4: 687b ldr r3, [r7, #4] - 8030da6: 661a str r2, [r3, #96] ; 0x60 + 8030dda: 68fa ldr r2, [r7, #12] + 8030ddc: 4b18 ldr r3, [pc, #96] ; (8030e40 ) + 8030dde: 4413 add r3, r2 + 8030de0: 009b lsls r3, r3, #2 + 8030de2: 461a mov r2, r3 + 8030de4: 687b ldr r3, [r7, #4] + 8030de6: 661a str r2, [r3, #96] ; 0x60 hdma->DMAmuxChannelStatus = DMAMUX1_ChannelStatus; - 8030da8: 687b ldr r3, [r7, #4] - 8030daa: 4a16 ldr r2, [pc, #88] ; (8030e04 ) - 8030dac: 665a str r2, [r3, #100] ; 0x64 + 8030de8: 687b ldr r3, [r7, #4] + 8030dea: 4a16 ldr r2, [pc, #88] ; (8030e44 ) + 8030dec: 665a str r2, [r3, #100] ; 0x64 hdma->DMAmuxChannelStatusMask = 1UL << (stream_number & 0x1FU); - 8030dae: 68fb ldr r3, [r7, #12] - 8030db0: f003 031f and.w r3, r3, #31 - 8030db4: 2201 movs r2, #1 - 8030db6: 409a lsls r2, r3 - 8030db8: 687b ldr r3, [r7, #4] - 8030dba: 669a str r2, [r3, #104] ; 0x68 -} - 8030dbc: bf00 nop - 8030dbe: 3714 adds r7, #20 - 8030dc0: 46bd mov sp, r7 - 8030dc2: f85d 7b04 ldr.w r7, [sp], #4 - 8030dc6: 4770 bx lr - 8030dc8: 58025408 .word 0x58025408 - 8030dcc: 5802541c .word 0x5802541c - 8030dd0: 58025430 .word 0x58025430 - 8030dd4: 58025444 .word 0x58025444 - 8030dd8: 58025458 .word 0x58025458 - 8030ddc: 5802546c .word 0x5802546c - 8030de0: 58025480 .word 0x58025480 - 8030de4: 58025494 .word 0x58025494 - 8030de8: cccccccd .word 0xcccccccd - 8030dec: 16009600 .word 0x16009600 - 8030df0: 58025880 .word 0x58025880 - 8030df4: aaaaaaab .word 0xaaaaaaab - 8030df8: 400204b8 .word 0x400204b8 - 8030dfc: 4002040f .word 0x4002040f - 8030e00: 10008200 .word 0x10008200 - 8030e04: 40020880 .word 0x40020880 - -08030e08 : + 8030dee: 68fb ldr r3, [r7, #12] + 8030df0: f003 031f and.w r3, r3, #31 + 8030df4: 2201 movs r2, #1 + 8030df6: 409a lsls r2, r3 + 8030df8: 687b ldr r3, [r7, #4] + 8030dfa: 669a str r2, [r3, #104] ; 0x68 +} + 8030dfc: bf00 nop + 8030dfe: 3714 adds r7, #20 + 8030e00: 46bd mov sp, r7 + 8030e02: f85d 7b04 ldr.w r7, [sp], #4 + 8030e06: 4770 bx lr + 8030e08: 58025408 .word 0x58025408 + 8030e0c: 5802541c .word 0x5802541c + 8030e10: 58025430 .word 0x58025430 + 8030e14: 58025444 .word 0x58025444 + 8030e18: 58025458 .word 0x58025458 + 8030e1c: 5802546c .word 0x5802546c + 8030e20: 58025480 .word 0x58025480 + 8030e24: 58025494 .word 0x58025494 + 8030e28: cccccccd .word 0xcccccccd + 8030e2c: 16009600 .word 0x16009600 + 8030e30: 58025880 .word 0x58025880 + 8030e34: aaaaaaab .word 0xaaaaaaab + 8030e38: 400204b8 .word 0x400204b8 + 8030e3c: 4002040f .word 0x4002040f + 8030e40: 10008200 .word 0x10008200 + 8030e44: 40020880 .word 0x40020880 + +08030e48 : * @param hdma: pointer to a DMA_HandleTypeDef structure that contains * the configuration information for the specified DMA Stream. * @retval HAL status */ static void DMA_CalcDMAMUXRequestGenBaseAndMask(DMA_HandleTypeDef *hdma) { - 8030e08: b480 push {r7} - 8030e0a: b085 sub sp, #20 - 8030e0c: af00 add r7, sp, #0 - 8030e0e: 6078 str r0, [r7, #4] + 8030e48: b480 push {r7} + 8030e4a: b085 sub sp, #20 + 8030e4c: af00 add r7, sp, #0 + 8030e4e: 6078 str r0, [r7, #4] uint32_t request = hdma->Init.Request & DMAMUX_CxCR_DMAREQ_ID; - 8030e10: 687b ldr r3, [r7, #4] - 8030e12: 685b ldr r3, [r3, #4] - 8030e14: b2db uxtb r3, r3 - 8030e16: 60fb str r3, [r7, #12] + 8030e50: 687b ldr r3, [r7, #4] + 8030e52: 685b ldr r3, [r3, #4] + 8030e54: b2db uxtb r3, r3 + 8030e56: 60fb str r3, [r7, #12] if((request >= DMA_REQUEST_GENERATOR0) && (request <= DMA_REQUEST_GENERATOR7)) - 8030e18: 68fb ldr r3, [r7, #12] - 8030e1a: 2b00 cmp r3, #0 - 8030e1c: d04a beq.n 8030eb4 - 8030e1e: 68fb ldr r3, [r7, #12] - 8030e20: 2b08 cmp r3, #8 - 8030e22: d847 bhi.n 8030eb4 + 8030e58: 68fb ldr r3, [r7, #12] + 8030e5a: 2b00 cmp r3, #0 + 8030e5c: d04a beq.n 8030ef4 + 8030e5e: 68fb ldr r3, [r7, #12] + 8030e60: 2b08 cmp r3, #8 + 8030e62: d847 bhi.n 8030ef4 { if(IS_BDMA_CHANNEL_DMAMUX_INSTANCE(hdma->Instance) != 0U) - 8030e24: 687b ldr r3, [r7, #4] - 8030e26: 681b ldr r3, [r3, #0] - 8030e28: 4a25 ldr r2, [pc, #148] ; (8030ec0 ) - 8030e2a: 4293 cmp r3, r2 - 8030e2c: d022 beq.n 8030e74 - 8030e2e: 687b ldr r3, [r7, #4] - 8030e30: 681b ldr r3, [r3, #0] - 8030e32: 4a24 ldr r2, [pc, #144] ; (8030ec4 ) - 8030e34: 4293 cmp r3, r2 - 8030e36: d01d beq.n 8030e74 - 8030e38: 687b ldr r3, [r7, #4] - 8030e3a: 681b ldr r3, [r3, #0] - 8030e3c: 4a22 ldr r2, [pc, #136] ; (8030ec8 ) - 8030e3e: 4293 cmp r3, r2 - 8030e40: d018 beq.n 8030e74 - 8030e42: 687b ldr r3, [r7, #4] - 8030e44: 681b ldr r3, [r3, #0] - 8030e46: 4a21 ldr r2, [pc, #132] ; (8030ecc ) - 8030e48: 4293 cmp r3, r2 - 8030e4a: d013 beq.n 8030e74 - 8030e4c: 687b ldr r3, [r7, #4] - 8030e4e: 681b ldr r3, [r3, #0] - 8030e50: 4a1f ldr r2, [pc, #124] ; (8030ed0 ) - 8030e52: 4293 cmp r3, r2 - 8030e54: d00e beq.n 8030e74 - 8030e56: 687b ldr r3, [r7, #4] - 8030e58: 681b ldr r3, [r3, #0] - 8030e5a: 4a1e ldr r2, [pc, #120] ; (8030ed4 ) - 8030e5c: 4293 cmp r3, r2 - 8030e5e: d009 beq.n 8030e74 - 8030e60: 687b ldr r3, [r7, #4] - 8030e62: 681b ldr r3, [r3, #0] - 8030e64: 4a1c ldr r2, [pc, #112] ; (8030ed8 ) - 8030e66: 4293 cmp r3, r2 - 8030e68: d004 beq.n 8030e74 - 8030e6a: 687b ldr r3, [r7, #4] - 8030e6c: 681b ldr r3, [r3, #0] - 8030e6e: 4a1b ldr r2, [pc, #108] ; (8030edc ) - 8030e70: 4293 cmp r3, r2 - 8030e72: d101 bne.n 8030e78 - 8030e74: 2301 movs r3, #1 - 8030e76: e000 b.n 8030e7a - 8030e78: 2300 movs r3, #0 - 8030e7a: 2b00 cmp r3, #0 - 8030e7c: d00a beq.n 8030e94 + 8030e64: 687b ldr r3, [r7, #4] + 8030e66: 681b ldr r3, [r3, #0] + 8030e68: 4a25 ldr r2, [pc, #148] ; (8030f00 ) + 8030e6a: 4293 cmp r3, r2 + 8030e6c: d022 beq.n 8030eb4 + 8030e6e: 687b ldr r3, [r7, #4] + 8030e70: 681b ldr r3, [r3, #0] + 8030e72: 4a24 ldr r2, [pc, #144] ; (8030f04 ) + 8030e74: 4293 cmp r3, r2 + 8030e76: d01d beq.n 8030eb4 + 8030e78: 687b ldr r3, [r7, #4] + 8030e7a: 681b ldr r3, [r3, #0] + 8030e7c: 4a22 ldr r2, [pc, #136] ; (8030f08 ) + 8030e7e: 4293 cmp r3, r2 + 8030e80: d018 beq.n 8030eb4 + 8030e82: 687b ldr r3, [r7, #4] + 8030e84: 681b ldr r3, [r3, #0] + 8030e86: 4a21 ldr r2, [pc, #132] ; (8030f0c ) + 8030e88: 4293 cmp r3, r2 + 8030e8a: d013 beq.n 8030eb4 + 8030e8c: 687b ldr r3, [r7, #4] + 8030e8e: 681b ldr r3, [r3, #0] + 8030e90: 4a1f ldr r2, [pc, #124] ; (8030f10 ) + 8030e92: 4293 cmp r3, r2 + 8030e94: d00e beq.n 8030eb4 + 8030e96: 687b ldr r3, [r7, #4] + 8030e98: 681b ldr r3, [r3, #0] + 8030e9a: 4a1e ldr r2, [pc, #120] ; (8030f14 ) + 8030e9c: 4293 cmp r3, r2 + 8030e9e: d009 beq.n 8030eb4 + 8030ea0: 687b ldr r3, [r7, #4] + 8030ea2: 681b ldr r3, [r3, #0] + 8030ea4: 4a1c ldr r2, [pc, #112] ; (8030f18 ) + 8030ea6: 4293 cmp r3, r2 + 8030ea8: d004 beq.n 8030eb4 + 8030eaa: 687b ldr r3, [r7, #4] + 8030eac: 681b ldr r3, [r3, #0] + 8030eae: 4a1b ldr r2, [pc, #108] ; (8030f1c ) + 8030eb0: 4293 cmp r3, r2 + 8030eb2: d101 bne.n 8030eb8 + 8030eb4: 2301 movs r3, #1 + 8030eb6: e000 b.n 8030eba + 8030eb8: 2300 movs r3, #0 + 8030eba: 2b00 cmp r3, #0 + 8030ebc: d00a beq.n 8030ed4 { /* BDMA Channels are connected to DMAMUX2 request generator blocks */ hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX2_RequestGenerator0) + ((request - 1U) * 4U))); - 8030e7e: 68fa ldr r2, [r7, #12] - 8030e80: 4b17 ldr r3, [pc, #92] ; (8030ee0 ) - 8030e82: 4413 add r3, r2 - 8030e84: 009b lsls r3, r3, #2 - 8030e86: 461a mov r2, r3 - 8030e88: 687b ldr r3, [r7, #4] - 8030e8a: 66da str r2, [r3, #108] ; 0x6c + 8030ebe: 68fa ldr r2, [r7, #12] + 8030ec0: 4b17 ldr r3, [pc, #92] ; (8030f20 ) + 8030ec2: 4413 add r3, r2 + 8030ec4: 009b lsls r3, r3, #2 + 8030ec6: 461a mov r2, r3 + 8030ec8: 687b ldr r3, [r7, #4] + 8030eca: 66da str r2, [r3, #108] ; 0x6c hdma->DMAmuxRequestGenStatus = DMAMUX2_RequestGenStatus; - 8030e8c: 687b ldr r3, [r7, #4] - 8030e8e: 4a15 ldr r2, [pc, #84] ; (8030ee4 ) - 8030e90: 671a str r2, [r3, #112] ; 0x70 - 8030e92: e009 b.n 8030ea8 + 8030ecc: 687b ldr r3, [r7, #4] + 8030ece: 4a15 ldr r2, [pc, #84] ; (8030f24 ) + 8030ed0: 671a str r2, [r3, #112] ; 0x70 + 8030ed2: e009 b.n 8030ee8 } else { /* DMA1 and DMA2 Streams use DMAMUX1 request generator blocks */ hdma->DMAmuxRequestGen = (DMAMUX_RequestGen_TypeDef *)((uint32_t)(((uint32_t)DMAMUX1_RequestGenerator0) + ((request - 1U) * 4U))); - 8030e94: 68fa ldr r2, [r7, #12] - 8030e96: 4b14 ldr r3, [pc, #80] ; (8030ee8 ) - 8030e98: 4413 add r3, r2 - 8030e9a: 009b lsls r3, r3, #2 - 8030e9c: 461a mov r2, r3 - 8030e9e: 687b ldr r3, [r7, #4] - 8030ea0: 66da str r2, [r3, #108] ; 0x6c + 8030ed4: 68fa ldr r2, [r7, #12] + 8030ed6: 4b14 ldr r3, [pc, #80] ; (8030f28 ) + 8030ed8: 4413 add r3, r2 + 8030eda: 009b lsls r3, r3, #2 + 8030edc: 461a mov r2, r3 + 8030ede: 687b ldr r3, [r7, #4] + 8030ee0: 66da str r2, [r3, #108] ; 0x6c hdma->DMAmuxRequestGenStatus = DMAMUX1_RequestGenStatus; - 8030ea2: 687b ldr r3, [r7, #4] - 8030ea4: 4a11 ldr r2, [pc, #68] ; (8030eec ) - 8030ea6: 671a str r2, [r3, #112] ; 0x70 + 8030ee2: 687b ldr r3, [r7, #4] + 8030ee4: 4a11 ldr r2, [pc, #68] ; (8030f2c ) + 8030ee6: 671a str r2, [r3, #112] ; 0x70 } hdma->DMAmuxRequestGenStatusMask = 1UL << (request - 1U); - 8030ea8: 68fb ldr r3, [r7, #12] - 8030eaa: 3b01 subs r3, #1 - 8030eac: 2201 movs r2, #1 - 8030eae: 409a lsls r2, r3 - 8030eb0: 687b ldr r3, [r7, #4] - 8030eb2: 675a str r2, [r3, #116] ; 0x74 - } -} - 8030eb4: bf00 nop - 8030eb6: 3714 adds r7, #20 - 8030eb8: 46bd mov sp, r7 - 8030eba: f85d 7b04 ldr.w r7, [sp], #4 - 8030ebe: 4770 bx lr - 8030ec0: 58025408 .word 0x58025408 - 8030ec4: 5802541c .word 0x5802541c - 8030ec8: 58025430 .word 0x58025430 - 8030ecc: 58025444 .word 0x58025444 - 8030ed0: 58025458 .word 0x58025458 - 8030ed4: 5802546c .word 0x5802546c - 8030ed8: 58025480 .word 0x58025480 - 8030edc: 58025494 .word 0x58025494 - 8030ee0: 1600963f .word 0x1600963f - 8030ee4: 58025940 .word 0x58025940 - 8030ee8: 1000823f .word 0x1000823f - 8030eec: 40020940 .word 0x40020940 - -08030ef0 : + 8030ee8: 68fb ldr r3, [r7, #12] + 8030eea: 3b01 subs r3, #1 + 8030eec: 2201 movs r2, #1 + 8030eee: 409a lsls r2, r3 + 8030ef0: 687b ldr r3, [r7, #4] + 8030ef2: 675a str r2, [r3, #116] ; 0x74 + } +} + 8030ef4: bf00 nop + 8030ef6: 3714 adds r7, #20 + 8030ef8: 46bd mov sp, r7 + 8030efa: f85d 7b04 ldr.w r7, [sp], #4 + 8030efe: 4770 bx lr + 8030f00: 58025408 .word 0x58025408 + 8030f04: 5802541c .word 0x5802541c + 8030f08: 58025430 .word 0x58025430 + 8030f0c: 58025444 .word 0x58025444 + 8030f10: 58025458 .word 0x58025458 + 8030f14: 5802546c .word 0x5802546c + 8030f18: 58025480 .word 0x58025480 + 8030f1c: 58025494 .word 0x58025494 + 8030f20: 1600963f .word 0x1600963f + 8030f24: 58025940 .word 0x58025940 + 8030f28: 1000823f .word 0x1000823f + 8030f2c: 40020940 .word 0x40020940 + +08030f30 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_Init(ETH_HandleTypeDef *heth) { - 8030ef0: b580 push {r7, lr} - 8030ef2: b084 sub sp, #16 - 8030ef4: af00 add r7, sp, #0 - 8030ef6: 6078 str r0, [r7, #4] + 8030f30: b580 push {r7, lr} + 8030f32: b084 sub sp, #16 + 8030f34: af00 add r7, sp, #0 + 8030f36: 6078 str r0, [r7, #4] uint32_t tickstart; if (heth == NULL) - 8030ef8: 687b ldr r3, [r7, #4] - 8030efa: 2b00 cmp r3, #0 - 8030efc: d101 bne.n 8030f02 + 8030f38: 687b ldr r3, [r7, #4] + 8030f3a: 2b00 cmp r3, #0 + 8030f3c: d101 bne.n 8030f42 { return HAL_ERROR; - 8030efe: 2301 movs r3, #1 - 8030f00: e0cf b.n 80310a2 + 8030f3e: 2301 movs r3, #1 + 8030f40: e0cf b.n 80310e2 } if (heth->gState == HAL_ETH_STATE_RESET) - 8030f02: 687b ldr r3, [r7, #4] - 8030f04: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8030f08: 2b00 cmp r3, #0 - 8030f0a: d106 bne.n 8030f1a + 8030f42: 687b ldr r3, [r7, #4] + 8030f44: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8030f48: 2b00 cmp r3, #0 + 8030f4a: d106 bne.n 8030f5a { heth->gState = HAL_ETH_STATE_BUSY; - 8030f0c: 687b ldr r3, [r7, #4] - 8030f0e: 2223 movs r2, #35 ; 0x23 - 8030f10: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8030f4c: 687b ldr r3, [r7, #4] + 8030f4e: 2223 movs r2, #35 ; 0x23 + 8030f50: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Init the low level hardware */ heth->MspInitCallback(heth); #else /* Init the low level hardware : GPIO, CLOCK, NVIC. */ HAL_ETH_MspInit(heth); - 8030f14: 6878 ldr r0, [r7, #4] - 8030f16: f00b fe2b bl 803cb70 + 8030f54: 6878 ldr r0, [r7, #4] + 8030f56: f00b fe2b bl 803cbb0 #endif /* (USE_HAL_ETH_REGISTER_CALLBACKS) */ } __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8030f1a: 4b64 ldr r3, [pc, #400] ; (80310ac ) - 8030f1c: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 8030f20: 4a62 ldr r2, [pc, #392] ; (80310ac ) - 8030f22: f043 0302 orr.w r3, r3, #2 - 8030f26: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 - 8030f2a: 4b60 ldr r3, [pc, #384] ; (80310ac ) - 8030f2c: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 8030f30: f003 0302 and.w r3, r3, #2 - 8030f34: 60bb str r3, [r7, #8] - 8030f36: 68bb ldr r3, [r7, #8] + 8030f5a: 4b64 ldr r3, [pc, #400] ; (80310ec ) + 8030f5c: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 8030f60: 4a62 ldr r2, [pc, #392] ; (80310ec ) + 8030f62: f043 0302 orr.w r3, r3, #2 + 8030f66: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 + 8030f6a: 4b60 ldr r3, [pc, #384] ; (80310ec ) + 8030f6c: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 8030f70: f003 0302 and.w r3, r3, #2 + 8030f74: 60bb str r3, [r7, #8] + 8030f76: 68bb ldr r3, [r7, #8] if (heth->Init.MediaInterface == HAL_ETH_MII_MODE) - 8030f38: 687b ldr r3, [r7, #4] - 8030f3a: 7a1b ldrb r3, [r3, #8] - 8030f3c: 2b00 cmp r3, #0 - 8030f3e: d103 bne.n 8030f48 + 8030f78: 687b ldr r3, [r7, #4] + 8030f7a: 7a1b ldrb r3, [r3, #8] + 8030f7c: 2b00 cmp r3, #0 + 8030f7e: d103 bne.n 8030f88 { HAL_SYSCFG_ETHInterfaceSelect(SYSCFG_ETH_MII); - 8030f40: 2000 movs r0, #0 - 8030f42: f7fc f863 bl 802d00c - 8030f46: e003 b.n 8030f50 + 8030f80: 2000 movs r0, #0 + 8030f82: f7fc f863 bl 802d04c + 8030f86: e003 b.n 8030f90 } else { HAL_SYSCFG_ETHInterfaceSelect(SYSCFG_ETH_RMII); - 8030f48: f44f 0000 mov.w r0, #8388608 ; 0x800000 - 8030f4c: f7fc f85e bl 802d00c + 8030f88: f44f 0000 mov.w r0, #8388608 ; 0x800000 + 8030f8c: f7fc f85e bl 802d04c } /* Dummy read to sync with ETH */ (void)SYSCFG->PMCR; - 8030f50: 4b57 ldr r3, [pc, #348] ; (80310b0 ) - 8030f52: 685b ldr r3, [r3, #4] + 8030f90: 4b57 ldr r3, [pc, #348] ; (80310f0 ) + 8030f92: 685b ldr r3, [r3, #4] /* Ethernet Software reset */ /* Set the SWR bit: resets all MAC subsystem internal registers and logic */ /* After reset all the registers holds their respective reset values */ SET_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR); - 8030f54: 687b ldr r3, [r7, #4] - 8030f56: 681b ldr r3, [r3, #0] - 8030f58: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8030f5c: 681b ldr r3, [r3, #0] - 8030f5e: 687a ldr r2, [r7, #4] - 8030f60: 6812 ldr r2, [r2, #0] - 8030f62: f043 0301 orr.w r3, r3, #1 - 8030f66: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 8030f6a: 6013 str r3, [r2, #0] + 8030f94: 687b ldr r3, [r7, #4] + 8030f96: 681b ldr r3, [r3, #0] + 8030f98: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8030f9c: 681b ldr r3, [r3, #0] + 8030f9e: 687a ldr r2, [r7, #4] + 8030fa0: 6812 ldr r2, [r2, #0] + 8030fa2: f043 0301 orr.w r3, r3, #1 + 8030fa6: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 8030faa: 6013 str r3, [r2, #0] /* Get tick */ tickstart = HAL_GetTick(); - 8030f6c: f7fc f812 bl 802cf94 - 8030f70: 60f8 str r0, [r7, #12] + 8030fac: f7fc f812 bl 802cfd4 + 8030fb0: 60f8 str r0, [r7, #12] /* Wait for software reset */ while (READ_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR) > 0U) - 8030f72: e011 b.n 8030f98 + 8030fb2: e011 b.n 8030fd8 { if (((HAL_GetTick() - tickstart) > ETH_SWRESET_TIMEOUT)) - 8030f74: f7fc f80e bl 802cf94 - 8030f78: 4602 mov r2, r0 - 8030f7a: 68fb ldr r3, [r7, #12] - 8030f7c: 1ad3 subs r3, r2, r3 - 8030f7e: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 - 8030f82: d909 bls.n 8030f98 + 8030fb4: f7fc f80e bl 802cfd4 + 8030fb8: 4602 mov r2, r0 + 8030fba: 68fb ldr r3, [r7, #12] + 8030fbc: 1ad3 subs r3, r2, r3 + 8030fbe: f5b3 7ffa cmp.w r3, #500 ; 0x1f4 + 8030fc2: d909 bls.n 8030fd8 { /* Set Error Code */ heth->ErrorCode = HAL_ETH_ERROR_TIMEOUT; - 8030f84: 687b ldr r3, [r7, #4] - 8030f86: 2204 movs r2, #4 - 8030f88: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8030fc4: 687b ldr r3, [r7, #4] + 8030fc6: 2204 movs r2, #4 + 8030fc8: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Set State as Error */ heth->gState = HAL_ETH_STATE_ERROR; - 8030f8c: 687b ldr r3, [r7, #4] - 8030f8e: 22e0 movs r2, #224 ; 0xe0 - 8030f90: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8030fcc: 687b ldr r3, [r7, #4] + 8030fce: 22e0 movs r2, #224 ; 0xe0 + 8030fd0: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Return Error */ return HAL_ERROR; - 8030f94: 2301 movs r3, #1 - 8030f96: e084 b.n 80310a2 + 8030fd4: 2301 movs r3, #1 + 8030fd6: e084 b.n 80310e2 while (READ_BIT(heth->Instance->DMAMR, ETH_DMAMR_SWR) > 0U) - 8030f98: 687b ldr r3, [r7, #4] - 8030f9a: 681b ldr r3, [r3, #0] - 8030f9c: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8030fa0: 681b ldr r3, [r3, #0] - 8030fa2: f003 0301 and.w r3, r3, #1 - 8030fa6: 2b00 cmp r3, #0 - 8030fa8: d1e4 bne.n 8030f74 + 8030fd8: 687b ldr r3, [r7, #4] + 8030fda: 681b ldr r3, [r3, #0] + 8030fdc: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8030fe0: 681b ldr r3, [r3, #0] + 8030fe2: f003 0301 and.w r3, r3, #1 + 8030fe6: 2b00 cmp r3, #0 + 8030fe8: d1e4 bne.n 8030fb4 } } /*------------------ MDIO CSR Clock Range Configuration --------------------*/ HAL_ETH_SetMDIOClockRange(heth); - 8030faa: 6878 ldr r0, [r7, #4] - 8030fac: f000 fee0 bl 8031d70 + 8030fea: 6878 ldr r0, [r7, #4] + 8030fec: f000 fee0 bl 8031db0 /*------------------ MAC LPI 1US Tic Counter Configuration --------------------*/ WRITE_REG(heth->Instance->MAC1USTCR, (((uint32_t)HAL_RCC_GetHCLKFreq() / ETH_MAC_US_TICK) - 1U)); - 8030fb0: f005 f93e bl 8036230 - 8030fb4: 4603 mov r3, r0 - 8030fb6: 4a3f ldr r2, [pc, #252] ; (80310b4 ) - 8030fb8: fba2 2303 umull r2, r3, r2, r3 - 8030fbc: 0c9a lsrs r2, r3, #18 - 8030fbe: 687b ldr r3, [r7, #4] - 8030fc0: 681b ldr r3, [r3, #0] - 8030fc2: 3a01 subs r2, #1 - 8030fc4: f8c3 20dc str.w r2, [r3, #220] ; 0xdc + 8030ff0: f005 f93e bl 8036270 + 8030ff4: 4603 mov r3, r0 + 8030ff6: 4a3f ldr r2, [pc, #252] ; (80310f4 ) + 8030ff8: fba2 2303 umull r2, r3, r2, r3 + 8030ffc: 0c9a lsrs r2, r3, #18 + 8030ffe: 687b ldr r3, [r7, #4] + 8031000: 681b ldr r3, [r3, #0] + 8031002: 3a01 subs r2, #1 + 8031004: f8c3 20dc str.w r2, [r3, #220] ; 0xdc /*------------------ MAC, MTL and DMA default Configuration ----------------*/ ETH_MACDMAConfig(heth); - 8030fc8: 6878 ldr r0, [r7, #4] - 8030fca: f001 f8cb bl 8032164 + 8031008: 6878 ldr r0, [r7, #4] + 803100a: f001 f8cb bl 80321a4 /* SET DSL to 64 bit */ MODIFY_REG(heth->Instance->DMACCR, ETH_DMACCR_DSL, ETH_DMACCR_DSL_64BIT); - 8030fce: 687b ldr r3, [r7, #4] - 8030fd0: 681b ldr r3, [r3, #0] - 8030fd2: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8030fd6: f8d3 3100 ldr.w r3, [r3, #256] ; 0x100 - 8030fda: f423 13e0 bic.w r3, r3, #1835008 ; 0x1c0000 - 8030fde: 687a ldr r2, [r7, #4] - 8030fe0: 6812 ldr r2, [r2, #0] - 8030fe2: f443 2300 orr.w r3, r3, #524288 ; 0x80000 - 8030fe6: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 8030fea: f8c2 3100 str.w r3, [r2, #256] ; 0x100 + 803100e: 687b ldr r3, [r7, #4] + 8031010: 681b ldr r3, [r3, #0] + 8031012: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031016: f8d3 3100 ldr.w r3, [r3, #256] ; 0x100 + 803101a: f423 13e0 bic.w r3, r3, #1835008 ; 0x1c0000 + 803101e: 687a ldr r2, [r7, #4] + 8031020: 6812 ldr r2, [r2, #0] + 8031022: f443 2300 orr.w r3, r3, #524288 ; 0x80000 + 8031026: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803102a: f8c2 3100 str.w r3, [r2, #256] ; 0x100 /* Set Receive Buffers Length (must be a multiple of 4) */ if ((heth->Init.RxBuffLen % 0x4U) != 0x0U) - 8030fee: 687b ldr r3, [r7, #4] - 8030ff0: 695b ldr r3, [r3, #20] - 8030ff2: f003 0303 and.w r3, r3, #3 - 8030ff6: 2b00 cmp r3, #0 - 8030ff8: d009 beq.n 803100e + 803102e: 687b ldr r3, [r7, #4] + 8031030: 695b ldr r3, [r3, #20] + 8031032: f003 0303 and.w r3, r3, #3 + 8031036: 2b00 cmp r3, #0 + 8031038: d009 beq.n 803104e { /* Set Error Code */ heth->ErrorCode = HAL_ETH_ERROR_PARAM; - 8030ffa: 687b ldr r3, [r7, #4] - 8030ffc: 2201 movs r2, #1 - 8030ffe: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803103a: 687b ldr r3, [r7, #4] + 803103c: 2201 movs r2, #1 + 803103e: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Set State as Error */ heth->gState = HAL_ETH_STATE_ERROR; - 8031002: 687b ldr r3, [r7, #4] - 8031004: 22e0 movs r2, #224 ; 0xe0 - 8031006: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8031042: 687b ldr r3, [r7, #4] + 8031044: 22e0 movs r2, #224 ; 0xe0 + 8031046: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Return Error */ return HAL_ERROR; - 803100a: 2301 movs r3, #1 - 803100c: e049 b.n 80310a2 + 803104a: 2301 movs r3, #1 + 803104c: e049 b.n 80310e2 } else { MODIFY_REG(heth->Instance->DMACRCR, ETH_DMACRCR_RBSZ, ((heth->Init.RxBuffLen) << 1)); - 803100e: 687b ldr r3, [r7, #4] - 8031010: 681b ldr r3, [r3, #0] - 8031012: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031016: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 - 803101a: 4b27 ldr r3, [pc, #156] ; (80310b8 ) - 803101c: 4013 ands r3, r2 - 803101e: 687a ldr r2, [r7, #4] - 8031020: 6952 ldr r2, [r2, #20] - 8031022: 0051 lsls r1, r2, #1 - 8031024: 687a ldr r2, [r7, #4] - 8031026: 6812 ldr r2, [r2, #0] - 8031028: 430b orrs r3, r1 - 803102a: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 803102e: f8c2 3108 str.w r3, [r2, #264] ; 0x108 + 803104e: 687b ldr r3, [r7, #4] + 8031050: 681b ldr r3, [r3, #0] + 8031052: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031056: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 + 803105a: 4b27 ldr r3, [pc, #156] ; (80310f8 ) + 803105c: 4013 ands r3, r2 + 803105e: 687a ldr r2, [r7, #4] + 8031060: 6952 ldr r2, [r2, #20] + 8031062: 0051 lsls r1, r2, #1 + 8031064: 687a ldr r2, [r7, #4] + 8031066: 6812 ldr r2, [r2, #0] + 8031068: 430b orrs r3, r1 + 803106a: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803106e: f8c2 3108 str.w r3, [r2, #264] ; 0x108 } /*------------------ DMA Tx Descriptors Configuration ----------------------*/ ETH_DMATxDescListInit(heth); - 8031032: 6878 ldr r0, [r7, #4] - 8031034: f001 f933 bl 803229e + 8031072: 6878 ldr r0, [r7, #4] + 8031074: f001 f933 bl 80322de /*------------------ DMA Rx Descriptors Configuration ----------------------*/ ETH_DMARxDescListInit(heth); - 8031038: 6878 ldr r0, [r7, #4] - 803103a: f001 f979 bl 8032330 + 8031078: 6878 ldr r0, [r7, #4] + 803107a: f001 f979 bl 8032370 /*--------------------- ETHERNET MAC Address Configuration ------------------*/ /* Set MAC addr bits 32 to 47 */ heth->Instance->MACA0HR = (((uint32_t)(heth->Init.MACAddr[5]) << 8) | (uint32_t)heth->Init.MACAddr[4]); - 803103e: 687b ldr r3, [r7, #4] - 8031040: 685b ldr r3, [r3, #4] - 8031042: 3305 adds r3, #5 - 8031044: 781b ldrb r3, [r3, #0] - 8031046: 021a lsls r2, r3, #8 - 8031048: 687b ldr r3, [r7, #4] - 803104a: 685b ldr r3, [r3, #4] - 803104c: 3304 adds r3, #4 - 803104e: 781b ldrb r3, [r3, #0] - 8031050: 4619 mov r1, r3 - 8031052: 687b ldr r3, [r7, #4] - 8031054: 681b ldr r3, [r3, #0] - 8031056: 430a orrs r2, r1 - 8031058: f8c3 2300 str.w r2, [r3, #768] ; 0x300 + 803107e: 687b ldr r3, [r7, #4] + 8031080: 685b ldr r3, [r3, #4] + 8031082: 3305 adds r3, #5 + 8031084: 781b ldrb r3, [r3, #0] + 8031086: 021a lsls r2, r3, #8 + 8031088: 687b ldr r3, [r7, #4] + 803108a: 685b ldr r3, [r3, #4] + 803108c: 3304 adds r3, #4 + 803108e: 781b ldrb r3, [r3, #0] + 8031090: 4619 mov r1, r3 + 8031092: 687b ldr r3, [r7, #4] + 8031094: 681b ldr r3, [r3, #0] + 8031096: 430a orrs r2, r1 + 8031098: f8c3 2300 str.w r2, [r3, #768] ; 0x300 /* Set MAC addr bits 0 to 31 */ heth->Instance->MACA0LR = (((uint32_t)(heth->Init.MACAddr[3]) << 24) | ((uint32_t)(heth->Init.MACAddr[2]) << 16) | - 803105c: 687b ldr r3, [r7, #4] - 803105e: 685b ldr r3, [r3, #4] - 8031060: 3303 adds r3, #3 - 8031062: 781b ldrb r3, [r3, #0] - 8031064: 061a lsls r2, r3, #24 - 8031066: 687b ldr r3, [r7, #4] - 8031068: 685b ldr r3, [r3, #4] - 803106a: 3302 adds r3, #2 - 803106c: 781b ldrb r3, [r3, #0] - 803106e: 041b lsls r3, r3, #16 - 8031070: 431a orrs r2, r3 + 803109c: 687b ldr r3, [r7, #4] + 803109e: 685b ldr r3, [r3, #4] + 80310a0: 3303 adds r3, #3 + 80310a2: 781b ldrb r3, [r3, #0] + 80310a4: 061a lsls r2, r3, #24 + 80310a6: 687b ldr r3, [r7, #4] + 80310a8: 685b ldr r3, [r3, #4] + 80310aa: 3302 adds r3, #2 + 80310ac: 781b ldrb r3, [r3, #0] + 80310ae: 041b lsls r3, r3, #16 + 80310b0: 431a orrs r2, r3 ((uint32_t)(heth->Init.MACAddr[1]) << 8) | (uint32_t)heth->Init.MACAddr[0]); - 8031072: 687b ldr r3, [r7, #4] - 8031074: 685b ldr r3, [r3, #4] - 8031076: 3301 adds r3, #1 - 8031078: 781b ldrb r3, [r3, #0] - 803107a: 021b lsls r3, r3, #8 + 80310b2: 687b ldr r3, [r7, #4] + 80310b4: 685b ldr r3, [r3, #4] + 80310b6: 3301 adds r3, #1 + 80310b8: 781b ldrb r3, [r3, #0] + 80310ba: 021b lsls r3, r3, #8 heth->Instance->MACA0LR = (((uint32_t)(heth->Init.MACAddr[3]) << 24) | ((uint32_t)(heth->Init.MACAddr[2]) << 16) | - 803107c: 431a orrs r2, r3 + 80310bc: 431a orrs r2, r3 ((uint32_t)(heth->Init.MACAddr[1]) << 8) | (uint32_t)heth->Init.MACAddr[0]); - 803107e: 687b ldr r3, [r7, #4] - 8031080: 685b ldr r3, [r3, #4] - 8031082: 781b ldrb r3, [r3, #0] - 8031084: 4619 mov r1, r3 + 80310be: 687b ldr r3, [r7, #4] + 80310c0: 685b ldr r3, [r3, #4] + 80310c2: 781b ldrb r3, [r3, #0] + 80310c4: 4619 mov r1, r3 heth->Instance->MACA0LR = (((uint32_t)(heth->Init.MACAddr[3]) << 24) | ((uint32_t)(heth->Init.MACAddr[2]) << 16) | - 8031086: 687b ldr r3, [r7, #4] - 8031088: 681b ldr r3, [r3, #0] + 80310c6: 687b ldr r3, [r7, #4] + 80310c8: 681b ldr r3, [r3, #0] ((uint32_t)(heth->Init.MACAddr[1]) << 8) | (uint32_t)heth->Init.MACAddr[0]); - 803108a: 430a orrs r2, r1 + 80310ca: 430a orrs r2, r1 heth->Instance->MACA0LR = (((uint32_t)(heth->Init.MACAddr[3]) << 24) | ((uint32_t)(heth->Init.MACAddr[2]) << 16) | - 803108c: f8c3 2304 str.w r2, [r3, #772] ; 0x304 + 80310cc: f8c3 2304 str.w r2, [r3, #772] ; 0x304 heth->ErrorCode = HAL_ETH_ERROR_NONE; - 8031090: 687b ldr r3, [r7, #4] - 8031092: 2200 movs r2, #0 - 8031094: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80310d0: 687b ldr r3, [r7, #4] + 80310d2: 2200 movs r2, #0 + 80310d4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 heth->gState = HAL_ETH_STATE_READY; - 8031098: 687b ldr r3, [r7, #4] - 803109a: 2210 movs r2, #16 - 803109c: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 80310d8: 687b ldr r3, [r7, #4] + 80310da: 2210 movs r2, #16 + 80310dc: f8c3 2084 str.w r2, [r3, #132] ; 0x84 return HAL_OK; - 80310a0: 2300 movs r3, #0 -} - 80310a2: 4618 mov r0, r3 - 80310a4: 3710 adds r7, #16 - 80310a6: 46bd mov sp, r7 - 80310a8: bd80 pop {r7, pc} - 80310aa: bf00 nop - 80310ac: 58024400 .word 0x58024400 - 80310b0: 58000400 .word 0x58000400 - 80310b4: 431bde83 .word 0x431bde83 - 80310b8: ffff8001 .word 0xffff8001 - -080310bc : + 80310e0: 2300 movs r3, #0 +} + 80310e2: 4618 mov r0, r3 + 80310e4: 3710 adds r7, #16 + 80310e6: 46bd mov sp, r7 + 80310e8: bd80 pop {r7, pc} + 80310ea: bf00 nop + 80310ec: 58024400 .word 0x58024400 + 80310f0: 58000400 .word 0x58000400 + 80310f4: 431bde83 .word 0x431bde83 + 80310f8: ffff8001 .word 0xffff8001 + +080310fc : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_Start(ETH_HandleTypeDef *heth) { - 80310bc: b580 push {r7, lr} - 80310be: b082 sub sp, #8 - 80310c0: af00 add r7, sp, #0 - 80310c2: 6078 str r0, [r7, #4] + 80310fc: b580 push {r7, lr} + 80310fe: b082 sub sp, #8 + 8031100: af00 add r7, sp, #0 + 8031102: 6078 str r0, [r7, #4] if (heth->gState == HAL_ETH_STATE_READY) - 80310c4: 687b ldr r3, [r7, #4] - 80310c6: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 80310ca: 2b10 cmp r3, #16 - 80310cc: d153 bne.n 8031176 + 8031104: 687b ldr r3, [r7, #4] + 8031106: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803110a: 2b10 cmp r3, #16 + 803110c: d153 bne.n 80311b6 { heth->gState = HAL_ETH_STATE_BUSY; - 80310ce: 687b ldr r3, [r7, #4] - 80310d0: 2223 movs r2, #35 ; 0x23 - 80310d2: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803110e: 687b ldr r3, [r7, #4] + 8031110: 2223 movs r2, #35 ; 0x23 + 8031112: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Set nombre of descriptors to build */ heth->RxDescList.RxBuildDescCnt = ETH_RX_DESC_CNT; - 80310d6: 687b ldr r3, [r7, #4] - 80310d8: 2204 movs r2, #4 - 80310da: 66da str r2, [r3, #108] ; 0x6c + 8031116: 687b ldr r3, [r7, #4] + 8031118: 2204 movs r2, #4 + 803111a: 66da str r2, [r3, #108] ; 0x6c /* Build all descriptors */ ETH_UpdateDescriptor(heth); - 80310dc: 6878 ldr r0, [r7, #4] - 80310de: f000 f9f6 bl 80314ce + 803111c: 6878 ldr r0, [r7, #4] + 803111e: f000 f9f6 bl 803150e /* Enable the MAC transmission */ SET_BIT(heth->Instance->MACCR, ETH_MACCR_TE); - 80310e2: 687b ldr r3, [r7, #4] - 80310e4: 681b ldr r3, [r3, #0] - 80310e6: 681a ldr r2, [r3, #0] - 80310e8: 687b ldr r3, [r7, #4] - 80310ea: 681b ldr r3, [r3, #0] - 80310ec: f042 0202 orr.w r2, r2, #2 - 80310f0: 601a str r2, [r3, #0] + 8031122: 687b ldr r3, [r7, #4] + 8031124: 681b ldr r3, [r3, #0] + 8031126: 681a ldr r2, [r3, #0] + 8031128: 687b ldr r3, [r7, #4] + 803112a: 681b ldr r3, [r3, #0] + 803112c: f042 0202 orr.w r2, r2, #2 + 8031130: 601a str r2, [r3, #0] /* Enable the MAC reception */ SET_BIT(heth->Instance->MACCR, ETH_MACCR_RE); - 80310f2: 687b ldr r3, [r7, #4] - 80310f4: 681b ldr r3, [r3, #0] - 80310f6: 681a ldr r2, [r3, #0] - 80310f8: 687b ldr r3, [r7, #4] - 80310fa: 681b ldr r3, [r3, #0] - 80310fc: f042 0201 orr.w r2, r2, #1 - 8031100: 601a str r2, [r3, #0] + 8031132: 687b ldr r3, [r7, #4] + 8031134: 681b ldr r3, [r3, #0] + 8031136: 681a ldr r2, [r3, #0] + 8031138: 687b ldr r3, [r7, #4] + 803113a: 681b ldr r3, [r3, #0] + 803113c: f042 0201 orr.w r2, r2, #1 + 8031140: 601a str r2, [r3, #0] /* Set the Flush Transmit FIFO bit */ SET_BIT(heth->Instance->MTLTQOMR, ETH_MTLTQOMR_FTQ); - 8031102: 687b ldr r3, [r7, #4] - 8031104: 681b ldr r3, [r3, #0] - 8031106: f8d3 2d00 ldr.w r2, [r3, #3328] ; 0xd00 - 803110a: 687b ldr r3, [r7, #4] - 803110c: 681b ldr r3, [r3, #0] - 803110e: f042 0201 orr.w r2, r2, #1 - 8031112: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 + 8031142: 687b ldr r3, [r7, #4] + 8031144: 681b ldr r3, [r3, #0] + 8031146: f8d3 2d00 ldr.w r2, [r3, #3328] ; 0xd00 + 803114a: 687b ldr r3, [r7, #4] + 803114c: 681b ldr r3, [r3, #0] + 803114e: f042 0201 orr.w r2, r2, #1 + 8031152: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 /* Enable the DMA transmission */ SET_BIT(heth->Instance->DMACTCR, ETH_DMACTCR_ST); - 8031116: 687b ldr r3, [r7, #4] - 8031118: 681b ldr r3, [r3, #0] - 803111a: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803111e: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 8031122: 687a ldr r2, [r7, #4] - 8031124: 6812 ldr r2, [r2, #0] - 8031126: f043 0301 orr.w r3, r3, #1 - 803112a: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 803112e: f8c2 3104 str.w r3, [r2, #260] ; 0x104 + 8031156: 687b ldr r3, [r7, #4] + 8031158: 681b ldr r3, [r3, #0] + 803115a: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803115e: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 8031162: 687a ldr r2, [r7, #4] + 8031164: 6812 ldr r2, [r2, #0] + 8031166: f043 0301 orr.w r3, r3, #1 + 803116a: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803116e: f8c2 3104 str.w r3, [r2, #260] ; 0x104 /* Enable the DMA reception */ SET_BIT(heth->Instance->DMACRCR, ETH_DMACRCR_SR); - 8031132: 687b ldr r3, [r7, #4] - 8031134: 681b ldr r3, [r3, #0] - 8031136: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803113a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 803113e: 687a ldr r2, [r7, #4] - 8031140: 6812 ldr r2, [r2, #0] - 8031142: f043 0301 orr.w r3, r3, #1 - 8031146: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 803114a: f8c2 3108 str.w r3, [r2, #264] ; 0x108 + 8031172: 687b ldr r3, [r7, #4] + 8031174: 681b ldr r3, [r3, #0] + 8031176: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803117a: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 803117e: 687a ldr r2, [r7, #4] + 8031180: 6812 ldr r2, [r2, #0] + 8031182: f043 0301 orr.w r3, r3, #1 + 8031186: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803118a: f8c2 3108 str.w r3, [r2, #264] ; 0x108 /* Clear Tx and Rx process stopped flags */ heth->Instance->DMACSR |= (ETH_DMACSR_TPS | ETH_DMACSR_RPS); - 803114e: 687b ldr r3, [r7, #4] - 8031150: 681b ldr r3, [r3, #0] - 8031152: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031156: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 803115a: 687a ldr r2, [r7, #4] - 803115c: 6812 ldr r2, [r2, #0] - 803115e: f443 7381 orr.w r3, r3, #258 ; 0x102 - 8031162: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 8031166: f8c2 3160 str.w r3, [r2, #352] ; 0x160 + 803118e: 687b ldr r3, [r7, #4] + 8031190: 681b ldr r3, [r3, #0] + 8031192: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031196: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 803119a: 687a ldr r2, [r7, #4] + 803119c: 6812 ldr r2, [r2, #0] + 803119e: f443 7381 orr.w r3, r3, #258 ; 0x102 + 80311a2: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80311a6: f8c2 3160 str.w r3, [r2, #352] ; 0x160 heth->gState = HAL_ETH_STATE_STARTED; - 803116a: 687b ldr r3, [r7, #4] - 803116c: 2223 movs r2, #35 ; 0x23 - 803116e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 80311aa: 687b ldr r3, [r7, #4] + 80311ac: 2223 movs r2, #35 ; 0x23 + 80311ae: f8c3 2084 str.w r2, [r3, #132] ; 0x84 return HAL_OK; - 8031172: 2300 movs r3, #0 - 8031174: e000 b.n 8031178 + 80311b2: 2300 movs r3, #0 + 80311b4: e000 b.n 80311b8 } else { return HAL_ERROR; - 8031176: 2301 movs r3, #1 + 80311b6: 2301 movs r3, #1 } } - 8031178: 4618 mov r0, r3 - 803117a: 3708 adds r7, #8 - 803117c: 46bd mov sp, r7 - 803117e: bd80 pop {r7, pc} + 80311b8: 4618 mov r0, r3 + 80311ba: 3708 adds r7, #8 + 80311bc: 46bd mov sp, r7 + 80311be: bd80 pop {r7, pc} -08031180 : +080311c0 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_Stop(ETH_HandleTypeDef *heth) { - 8031180: b480 push {r7} - 8031182: b083 sub sp, #12 - 8031184: af00 add r7, sp, #0 - 8031186: 6078 str r0, [r7, #4] + 80311c0: b480 push {r7} + 80311c2: b083 sub sp, #12 + 80311c4: af00 add r7, sp, #0 + 80311c6: 6078 str r0, [r7, #4] if (heth->gState == HAL_ETH_STATE_STARTED) - 8031188: 687b ldr r3, [r7, #4] - 803118a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 803118e: 2b23 cmp r3, #35 ; 0x23 - 8031190: d13f bne.n 8031212 + 80311c8: 687b ldr r3, [r7, #4] + 80311ca: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 80311ce: 2b23 cmp r3, #35 ; 0x23 + 80311d0: d13f bne.n 8031252 { /* Set the ETH peripheral state to BUSY */ heth->gState = HAL_ETH_STATE_BUSY; - 8031192: 687b ldr r3, [r7, #4] - 8031194: 2223 movs r2, #35 ; 0x23 - 8031196: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 80311d2: 687b ldr r3, [r7, #4] + 80311d4: 2223 movs r2, #35 ; 0x23 + 80311d6: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Disable the DMA transmission */ CLEAR_BIT(heth->Instance->DMACTCR, ETH_DMACTCR_ST); - 803119a: 687b ldr r3, [r7, #4] - 803119c: 681b ldr r3, [r3, #0] - 803119e: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80311a2: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 - 80311a6: 687a ldr r2, [r7, #4] - 80311a8: 6812 ldr r2, [r2, #0] - 80311aa: f023 0301 bic.w r3, r3, #1 - 80311ae: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80311b2: f8c2 3104 str.w r3, [r2, #260] ; 0x104 + 80311da: 687b ldr r3, [r7, #4] + 80311dc: 681b ldr r3, [r3, #0] + 80311de: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80311e2: f8d3 3104 ldr.w r3, [r3, #260] ; 0x104 + 80311e6: 687a ldr r2, [r7, #4] + 80311e8: 6812 ldr r2, [r2, #0] + 80311ea: f023 0301 bic.w r3, r3, #1 + 80311ee: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80311f2: f8c2 3104 str.w r3, [r2, #260] ; 0x104 /* Disable the DMA reception */ CLEAR_BIT(heth->Instance->DMACRCR, ETH_DMACRCR_SR); - 80311b6: 687b ldr r3, [r7, #4] - 80311b8: 681b ldr r3, [r3, #0] - 80311ba: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80311be: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 - 80311c2: 687a ldr r2, [r7, #4] - 80311c4: 6812 ldr r2, [r2, #0] - 80311c6: f023 0301 bic.w r3, r3, #1 - 80311ca: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80311ce: f8c2 3108 str.w r3, [r2, #264] ; 0x108 + 80311f6: 687b ldr r3, [r7, #4] + 80311f8: 681b ldr r3, [r3, #0] + 80311fa: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80311fe: f8d3 3108 ldr.w r3, [r3, #264] ; 0x108 + 8031202: 687a ldr r2, [r7, #4] + 8031204: 6812 ldr r2, [r2, #0] + 8031206: f023 0301 bic.w r3, r3, #1 + 803120a: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803120e: f8c2 3108 str.w r3, [r2, #264] ; 0x108 /* Disable the MAC reception */ CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_RE); - 80311d2: 687b ldr r3, [r7, #4] - 80311d4: 681b ldr r3, [r3, #0] - 80311d6: 681a ldr r2, [r3, #0] - 80311d8: 687b ldr r3, [r7, #4] - 80311da: 681b ldr r3, [r3, #0] - 80311dc: f022 0201 bic.w r2, r2, #1 - 80311e0: 601a str r2, [r3, #0] + 8031212: 687b ldr r3, [r7, #4] + 8031214: 681b ldr r3, [r3, #0] + 8031216: 681a ldr r2, [r3, #0] + 8031218: 687b ldr r3, [r7, #4] + 803121a: 681b ldr r3, [r3, #0] + 803121c: f022 0201 bic.w r2, r2, #1 + 8031220: 601a str r2, [r3, #0] /* Set the Flush Transmit FIFO bit */ SET_BIT(heth->Instance->MTLTQOMR, ETH_MTLTQOMR_FTQ); - 80311e2: 687b ldr r3, [r7, #4] - 80311e4: 681b ldr r3, [r3, #0] - 80311e6: f8d3 2d00 ldr.w r2, [r3, #3328] ; 0xd00 - 80311ea: 687b ldr r3, [r7, #4] - 80311ec: 681b ldr r3, [r3, #0] - 80311ee: f042 0201 orr.w r2, r2, #1 - 80311f2: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 + 8031222: 687b ldr r3, [r7, #4] + 8031224: 681b ldr r3, [r3, #0] + 8031226: f8d3 2d00 ldr.w r2, [r3, #3328] ; 0xd00 + 803122a: 687b ldr r3, [r7, #4] + 803122c: 681b ldr r3, [r3, #0] + 803122e: f042 0201 orr.w r2, r2, #1 + 8031232: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 /* Disable the MAC transmission */ CLEAR_BIT(heth->Instance->MACCR, ETH_MACCR_TE); - 80311f6: 687b ldr r3, [r7, #4] - 80311f8: 681b ldr r3, [r3, #0] - 80311fa: 681a ldr r2, [r3, #0] - 80311fc: 687b ldr r3, [r7, #4] - 80311fe: 681b ldr r3, [r3, #0] - 8031200: f022 0202 bic.w r2, r2, #2 - 8031204: 601a str r2, [r3, #0] + 8031236: 687b ldr r3, [r7, #4] + 8031238: 681b ldr r3, [r3, #0] + 803123a: 681a ldr r2, [r3, #0] + 803123c: 687b ldr r3, [r7, #4] + 803123e: 681b ldr r3, [r3, #0] + 8031240: f022 0202 bic.w r2, r2, #2 + 8031244: 601a str r2, [r3, #0] heth->gState = HAL_ETH_STATE_READY; - 8031206: 687b ldr r3, [r7, #4] - 8031208: 2210 movs r2, #16 - 803120a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8031246: 687b ldr r3, [r7, #4] + 8031248: 2210 movs r2, #16 + 803124a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Return function status */ return HAL_OK; - 803120e: 2300 movs r3, #0 - 8031210: e000 b.n 8031214 + 803124e: 2300 movs r3, #0 + 8031250: e000 b.n 8031254 } else { return HAL_ERROR; - 8031212: 2301 movs r3, #1 + 8031252: 2301 movs r3, #1 } } - 8031214: 4618 mov r0, r3 - 8031216: 370c adds r7, #12 - 8031218: 46bd mov sp, r7 - 803121a: f85d 7b04 ldr.w r7, [sp], #4 - 803121e: 4770 bx lr + 8031254: 4618 mov r0, r3 + 8031256: 370c adds r7, #12 + 8031258: 46bd mov sp, r7 + 803125a: f85d 7b04 ldr.w r7, [sp], #4 + 803125e: 4770 bx lr -08031220 : +08031260 : * @param pTxConfig: Hold the configuration of packet to be transmitted * @param Timeout: timeout value * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_Transmit(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t Timeout) { - 8031220: b580 push {r7, lr} - 8031222: b086 sub sp, #24 - 8031224: af00 add r7, sp, #0 - 8031226: 60f8 str r0, [r7, #12] - 8031228: 60b9 str r1, [r7, #8] - 803122a: 607a str r2, [r7, #4] + 8031260: b580 push {r7, lr} + 8031262: b086 sub sp, #24 + 8031264: af00 add r7, sp, #0 + 8031266: 60f8 str r0, [r7, #12] + 8031268: 60b9 str r1, [r7, #8] + 803126a: 607a str r2, [r7, #4] uint32_t tickstart; ETH_DMADescTypeDef *dmatxdesc; if (pTxConfig == NULL) - 803122c: 68bb ldr r3, [r7, #8] - 803122e: 2b00 cmp r3, #0 - 8031230: d109 bne.n 8031246 + 803126c: 68bb ldr r3, [r7, #8] + 803126e: 2b00 cmp r3, #0 + 8031270: d109 bne.n 8031286 { heth->ErrorCode |= HAL_ETH_ERROR_PARAM; - 8031232: 68fb ldr r3, [r7, #12] - 8031234: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8031238: f043 0201 orr.w r2, r3, #1 - 803123c: 68fb ldr r3, [r7, #12] - 803123e: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8031272: 68fb ldr r3, [r7, #12] + 8031274: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8031278: f043 0201 orr.w r2, r3, #1 + 803127c: 68fb ldr r3, [r7, #12] + 803127e: f8c3 2088 str.w r2, [r3, #136] ; 0x88 return HAL_ERROR; - 8031242: 2301 movs r3, #1 - 8031244: e07f b.n 8031346 + 8031282: 2301 movs r3, #1 + 8031284: e07f b.n 8031386 } if (heth->gState == HAL_ETH_STATE_STARTED) - 8031246: 68fb ldr r3, [r7, #12] - 8031248: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 803124c: 2b23 cmp r3, #35 ; 0x23 - 803124e: d179 bne.n 8031344 + 8031286: 68fb ldr r3, [r7, #12] + 8031288: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803128c: 2b23 cmp r3, #35 ; 0x23 + 803128e: d179 bne.n 8031384 { /* Config DMA Tx descriptor by Tx Packet info */ if (ETH_Prepare_Tx_Descriptors(heth, pTxConfig, 0) != HAL_ETH_ERROR_NONE) - 8031250: 2200 movs r2, #0 - 8031252: 68b9 ldr r1, [r7, #8] - 8031254: 68f8 ldr r0, [r7, #12] - 8031256: f001 f8c9 bl 80323ec - 803125a: 4603 mov r3, r0 - 803125c: 2b00 cmp r3, #0 - 803125e: d009 beq.n 8031274 + 8031290: 2200 movs r2, #0 + 8031292: 68b9 ldr r1, [r7, #8] + 8031294: 68f8 ldr r0, [r7, #12] + 8031296: f001 f8c9 bl 803242c + 803129a: 4603 mov r3, r0 + 803129c: 2b00 cmp r3, #0 + 803129e: d009 beq.n 80312b4 { /* Set the ETH error code */ heth->ErrorCode |= HAL_ETH_ERROR_BUSY; - 8031260: 68fb ldr r3, [r7, #12] - 8031262: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8031266: f043 0202 orr.w r2, r3, #2 - 803126a: 68fb ldr r3, [r7, #12] - 803126c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80312a0: 68fb ldr r3, [r7, #12] + 80312a2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80312a6: f043 0202 orr.w r2, r3, #2 + 80312aa: 68fb ldr r3, [r7, #12] + 80312ac: f8c3 2088 str.w r2, [r3, #136] ; 0x88 return HAL_ERROR; - 8031270: 2301 movs r3, #1 - 8031272: e068 b.n 8031346 + 80312b0: 2301 movs r3, #1 + 80312b2: e068 b.n 8031386 __ASM volatile ("dsb 0xF":::"memory"); - 8031274: f3bf 8f4f dsb sy + 80312b4: f3bf 8f4f dsb sy } - 8031278: bf00 nop + 80312b8: bf00 nop } /* Ensure completion of descriptor preparation before transmission start */ __DSB(); dmatxdesc = (ETH_DMADescTypeDef *)(&heth->TxDescList)->TxDesc[heth->TxDescList.CurTxDesc]; - 803127a: 68fb ldr r3, [r7, #12] - 803127c: 6a9a ldr r2, [r3, #40] ; 0x28 - 803127e: 68fb ldr r3, [r7, #12] - 8031280: 3206 adds r2, #6 - 8031282: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8031286: 617b str r3, [r7, #20] + 80312ba: 68fb ldr r3, [r7, #12] + 80312bc: 6a9a ldr r2, [r3, #40] ; 0x28 + 80312be: 68fb ldr r3, [r7, #12] + 80312c0: 3206 adds r2, #6 + 80312c2: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80312c6: 617b str r3, [r7, #20] /* Incr current tx desc index */ INCR_TX_DESC_INDEX(heth->TxDescList.CurTxDesc, 1U); - 8031288: 68fb ldr r3, [r7, #12] - 803128a: 6a9b ldr r3, [r3, #40] ; 0x28 - 803128c: 1c5a adds r2, r3, #1 - 803128e: 68fb ldr r3, [r7, #12] - 8031290: 629a str r2, [r3, #40] ; 0x28 - 8031292: 68fb ldr r3, [r7, #12] - 8031294: 6a9b ldr r3, [r3, #40] ; 0x28 - 8031296: 2b03 cmp r3, #3 - 8031298: d904 bls.n 80312a4 - 803129a: 68fb ldr r3, [r7, #12] - 803129c: 6a9b ldr r3, [r3, #40] ; 0x28 - 803129e: 1f1a subs r2, r3, #4 - 80312a0: 68fb ldr r3, [r7, #12] - 80312a2: 629a str r2, [r3, #40] ; 0x28 + 80312c8: 68fb ldr r3, [r7, #12] + 80312ca: 6a9b ldr r3, [r3, #40] ; 0x28 + 80312cc: 1c5a adds r2, r3, #1 + 80312ce: 68fb ldr r3, [r7, #12] + 80312d0: 629a str r2, [r3, #40] ; 0x28 + 80312d2: 68fb ldr r3, [r7, #12] + 80312d4: 6a9b ldr r3, [r3, #40] ; 0x28 + 80312d6: 2b03 cmp r3, #3 + 80312d8: d904 bls.n 80312e4 + 80312da: 68fb ldr r3, [r7, #12] + 80312dc: 6a9b ldr r3, [r3, #40] ; 0x28 + 80312de: 1f1a subs r2, r3, #4 + 80312e0: 68fb ldr r3, [r7, #12] + 80312e2: 629a str r2, [r3, #40] ; 0x28 /* Start transmission */ /* issue a poll command to Tx DMA by writing address of next immediate free descriptor */ WRITE_REG(heth->Instance->DMACTDTPR, (uint32_t)(heth->TxDescList.TxDesc[heth->TxDescList.CurTxDesc])); - 80312a4: 68fb ldr r3, [r7, #12] - 80312a6: 6a99 ldr r1, [r3, #40] ; 0x28 - 80312a8: 68fb ldr r3, [r7, #12] - 80312aa: 681a ldr r2, [r3, #0] - 80312ac: 68fb ldr r3, [r7, #12] - 80312ae: 3106 adds r1, #6 - 80312b0: f853 3021 ldr.w r3, [r3, r1, lsl #2] - 80312b4: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80312b8: f8c2 3120 str.w r3, [r2, #288] ; 0x120 + 80312e4: 68fb ldr r3, [r7, #12] + 80312e6: 6a99 ldr r1, [r3, #40] ; 0x28 + 80312e8: 68fb ldr r3, [r7, #12] + 80312ea: 681a ldr r2, [r3, #0] + 80312ec: 68fb ldr r3, [r7, #12] + 80312ee: 3106 adds r1, #6 + 80312f0: f853 3021 ldr.w r3, [r3, r1, lsl #2] + 80312f4: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80312f8: f8c2 3120 str.w r3, [r2, #288] ; 0x120 tickstart = HAL_GetTick(); - 80312bc: f7fb fe6a bl 802cf94 - 80312c0: 6138 str r0, [r7, #16] + 80312fc: f7fb fe6a bl 802cfd4 + 8031300: 6138 str r0, [r7, #16] /* Wait for data to be transmitted or timeout occurred */ while ((dmatxdesc->DESC3 & ETH_DMATXNDESCWBF_OWN) != (uint32_t)RESET) - 80312c2: e039 b.n 8031338 + 8031302: e039 b.n 8031378 { if ((heth->Instance->DMACSR & ETH_DMACSR_FBE) != (uint32_t)RESET) - 80312c4: 68fb ldr r3, [r7, #12] - 80312c6: 681b ldr r3, [r3, #0] - 80312c8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80312cc: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 80312d0: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 80312d4: 2b00 cmp r3, #0 - 80312d6: d012 beq.n 80312fe + 8031304: 68fb ldr r3, [r7, #12] + 8031306: 681b ldr r3, [r3, #0] + 8031308: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803130c: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 8031310: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 8031314: 2b00 cmp r3, #0 + 8031316: d012 beq.n 803133e { heth->ErrorCode |= HAL_ETH_ERROR_DMA; - 80312d8: 68fb ldr r3, [r7, #12] - 80312da: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 80312de: f043 0208 orr.w r2, r3, #8 - 80312e2: 68fb ldr r3, [r7, #12] - 80312e4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8031318: 68fb ldr r3, [r7, #12] + 803131a: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803131e: f043 0208 orr.w r2, r3, #8 + 8031322: 68fb ldr r3, [r7, #12] + 8031324: f8c3 2088 str.w r2, [r3, #136] ; 0x88 heth->DMAErrorCode = heth->Instance->DMACSR; - 80312e8: 68fb ldr r3, [r7, #12] - 80312ea: 681b ldr r3, [r3, #0] - 80312ec: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80312f0: f8d3 2160 ldr.w r2, [r3, #352] ; 0x160 - 80312f4: 68fb ldr r3, [r7, #12] - 80312f6: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8031328: 68fb ldr r3, [r7, #12] + 803132a: 681b ldr r3, [r3, #0] + 803132c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031330: f8d3 2160 ldr.w r2, [r3, #352] ; 0x160 + 8031334: 68fb ldr r3, [r7, #12] + 8031336: f8c3 208c str.w r2, [r3, #140] ; 0x8c /* Return function status */ return HAL_ERROR; - 80312fa: 2301 movs r3, #1 - 80312fc: e023 b.n 8031346 + 803133a: 2301 movs r3, #1 + 803133c: e023 b.n 8031386 } /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 80312fe: 687b ldr r3, [r7, #4] - 8031300: f1b3 3fff cmp.w r3, #4294967295 - 8031304: d018 beq.n 8031338 + 803133e: 687b ldr r3, [r7, #4] + 8031340: f1b3 3fff cmp.w r3, #4294967295 + 8031344: d018 beq.n 8031378 { if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) - 8031306: f7fb fe45 bl 802cf94 - 803130a: 4602 mov r2, r0 - 803130c: 693b ldr r3, [r7, #16] - 803130e: 1ad3 subs r3, r2, r3 - 8031310: 687a ldr r2, [r7, #4] - 8031312: 429a cmp r2, r3 - 8031314: d302 bcc.n 803131c - 8031316: 687b ldr r3, [r7, #4] - 8031318: 2b00 cmp r3, #0 - 803131a: d10d bne.n 8031338 + 8031346: f7fb fe45 bl 802cfd4 + 803134a: 4602 mov r2, r0 + 803134c: 693b ldr r3, [r7, #16] + 803134e: 1ad3 subs r3, r2, r3 + 8031350: 687a ldr r2, [r7, #4] + 8031352: 429a cmp r2, r3 + 8031354: d302 bcc.n 803135c + 8031356: 687b ldr r3, [r7, #4] + 8031358: 2b00 cmp r3, #0 + 803135a: d10d bne.n 8031378 { heth->ErrorCode |= HAL_ETH_ERROR_TIMEOUT; - 803131c: 68fb ldr r3, [r7, #12] - 803131e: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8031322: f043 0204 orr.w r2, r3, #4 - 8031326: 68fb ldr r3, [r7, #12] - 8031328: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803135c: 68fb ldr r3, [r7, #12] + 803135e: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8031362: f043 0204 orr.w r2, r3, #4 + 8031366: 68fb ldr r3, [r7, #12] + 8031368: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Clear TX descriptor so that we can proceed */ dmatxdesc->DESC3 = (ETH_DMATXNDESCWBF_FD | ETH_DMATXNDESCWBF_LD); - 803132c: 697b ldr r3, [r7, #20] - 803132e: f04f 5240 mov.w r2, #805306368 ; 0x30000000 - 8031332: 60da str r2, [r3, #12] + 803136c: 697b ldr r3, [r7, #20] + 803136e: f04f 5240 mov.w r2, #805306368 ; 0x30000000 + 8031372: 60da str r2, [r3, #12] return HAL_ERROR; - 8031334: 2301 movs r3, #1 - 8031336: e006 b.n 8031346 + 8031374: 2301 movs r3, #1 + 8031376: e006 b.n 8031386 while ((dmatxdesc->DESC3 & ETH_DMATXNDESCWBF_OWN) != (uint32_t)RESET) - 8031338: 697b ldr r3, [r7, #20] - 803133a: 68db ldr r3, [r3, #12] - 803133c: 2b00 cmp r3, #0 - 803133e: dbc1 blt.n 80312c4 + 8031378: 697b ldr r3, [r7, #20] + 803137a: 68db ldr r3, [r3, #12] + 803137c: 2b00 cmp r3, #0 + 803137e: dbc1 blt.n 8031304 } } } /* Return function status */ return HAL_OK; - 8031340: 2300 movs r3, #0 - 8031342: e000 b.n 8031346 + 8031380: 2300 movs r3, #0 + 8031382: e000 b.n 8031386 } else { return HAL_ERROR; - 8031344: 2301 movs r3, #1 + 8031384: 2301 movs r3, #1 } } - 8031346: 4618 mov r0, r3 - 8031348: 3718 adds r7, #24 - 803134a: 46bd mov sp, r7 - 803134c: bd80 pop {r7, pc} + 8031386: 4618 mov r0, r3 + 8031388: 3718 adds r7, #24 + 803138a: 46bd mov sp, r7 + 803138c: bd80 pop {r7, pc} -0803134e : +0803138e : * the configuration information for ETHERNET module * @param pAppBuff: Pointer to an application buffer to receive the packet. * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_ReadData(ETH_HandleTypeDef *heth, void **pAppBuff) { - 803134e: b580 push {r7, lr} - 8031350: b088 sub sp, #32 - 8031352: af00 add r7, sp, #0 - 8031354: 6078 str r0, [r7, #4] - 8031356: 6039 str r1, [r7, #0] + 803138e: b580 push {r7, lr} + 8031390: b088 sub sp, #32 + 8031392: af00 add r7, sp, #0 + 8031394: 6078 str r0, [r7, #4] + 8031396: 6039 str r1, [r7, #0] uint32_t descidx; ETH_DMADescTypeDef *dmarxdesc; uint32_t desccnt = 0U; - 8031358: 2300 movs r3, #0 - 803135a: 617b str r3, [r7, #20] + 8031398: 2300 movs r3, #0 + 803139a: 617b str r3, [r7, #20] uint32_t desccntmax; uint32_t bufflength; uint8_t rxdataready = 0U; - 803135c: 2300 movs r3, #0 - 803135e: 73fb strb r3, [r7, #15] + 803139c: 2300 movs r3, #0 + 803139e: 73fb strb r3, [r7, #15] if (pAppBuff == NULL) - 8031360: 683b ldr r3, [r7, #0] - 8031362: 2b00 cmp r3, #0 - 8031364: d109 bne.n 803137a + 80313a0: 683b ldr r3, [r7, #0] + 80313a2: 2b00 cmp r3, #0 + 80313a4: d109 bne.n 80313ba { heth->ErrorCode |= HAL_ETH_ERROR_PARAM; - 8031366: 687b ldr r3, [r7, #4] - 8031368: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803136c: f043 0201 orr.w r2, r3, #1 - 8031370: 687b ldr r3, [r7, #4] - 8031372: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80313a6: 687b ldr r3, [r7, #4] + 80313a8: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80313ac: f043 0201 orr.w r2, r3, #1 + 80313b0: 687b ldr r3, [r7, #4] + 80313b2: f8c3 2088 str.w r2, [r3, #136] ; 0x88 return HAL_ERROR; - 8031376: 2301 movs r3, #1 - 8031378: e0a5 b.n 80314c6 + 80313b6: 2301 movs r3, #1 + 80313b8: e0a5 b.n 8031506 } if (heth->gState != HAL_ETH_STATE_STARTED) - 803137a: 687b ldr r3, [r7, #4] - 803137c: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8031380: 2b23 cmp r3, #35 ; 0x23 - 8031382: d001 beq.n 8031388 + 80313ba: 687b ldr r3, [r7, #4] + 80313bc: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 80313c0: 2b23 cmp r3, #35 ; 0x23 + 80313c2: d001 beq.n 80313c8 { return HAL_ERROR; - 8031384: 2301 movs r3, #1 - 8031386: e09e b.n 80314c6 + 80313c4: 2301 movs r3, #1 + 80313c6: e09e b.n 8031506 } descidx = heth->RxDescList.RxDescIdx; - 8031388: 687b ldr r3, [r7, #4] - 803138a: 6ddb ldr r3, [r3, #92] ; 0x5c - 803138c: 61fb str r3, [r7, #28] + 80313c8: 687b ldr r3, [r7, #4] + 80313ca: 6ddb ldr r3, [r3, #92] ; 0x5c + 80313cc: 61fb str r3, [r7, #28] dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 803138e: 687b ldr r3, [r7, #4] - 8031390: 69fa ldr r2, [r7, #28] - 8031392: 3212 adds r2, #18 - 8031394: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8031398: 61bb str r3, [r7, #24] + 80313ce: 687b ldr r3, [r7, #4] + 80313d0: 69fa ldr r2, [r7, #28] + 80313d2: 3212 adds r2, #18 + 80313d4: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80313d8: 61bb str r3, [r7, #24] desccntmax = ETH_RX_DESC_CNT - heth->RxDescList.RxBuildDescCnt; - 803139a: 687b ldr r3, [r7, #4] - 803139c: 6edb ldr r3, [r3, #108] ; 0x6c - 803139e: f1c3 0304 rsb r3, r3, #4 - 80313a2: 60bb str r3, [r7, #8] + 80313da: 687b ldr r3, [r7, #4] + 80313dc: 6edb ldr r3, [r3, #108] ; 0x6c + 80313de: f1c3 0304 rsb r3, r3, #4 + 80313e2: 60bb str r3, [r7, #8] /* Check if descriptor is not owned by DMA */ while ((READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_OWN) == (uint32_t)RESET) && (desccnt < desccntmax) - 80313a4: e067 b.n 8031476 + 80313e4: e067 b.n 80314b6 && (rxdataready == 0U)) { if (READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_CTXT) != (uint32_t)RESET) - 80313a6: 69bb ldr r3, [r7, #24] - 80313a8: 68db ldr r3, [r3, #12] - 80313aa: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 - 80313ae: 2b00 cmp r3, #0 - 80313b0: d007 beq.n 80313c2 + 80313e6: 69bb ldr r3, [r7, #24] + 80313e8: 68db ldr r3, [r3, #12] + 80313ea: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 + 80313ee: 2b00 cmp r3, #0 + 80313f0: d007 beq.n 8031402 { /* Get timestamp high */ heth->RxDescList.TimeStamp.TimeStampHigh = dmarxdesc->DESC1; - 80313b2: 69bb ldr r3, [r7, #24] - 80313b4: 685a ldr r2, [r3, #4] - 80313b6: 687b ldr r3, [r7, #4] - 80313b8: 679a str r2, [r3, #120] ; 0x78 + 80313f2: 69bb ldr r3, [r7, #24] + 80313f4: 685a ldr r2, [r3, #4] + 80313f6: 687b ldr r3, [r7, #4] + 80313f8: 679a str r2, [r3, #120] ; 0x78 /* Get timestamp low */ heth->RxDescList.TimeStamp.TimeStampLow = dmarxdesc->DESC0; - 80313ba: 69bb ldr r3, [r7, #24] - 80313bc: 681a ldr r2, [r3, #0] - 80313be: 687b ldr r3, [r7, #4] - 80313c0: 675a str r2, [r3, #116] ; 0x74 + 80313fa: 69bb ldr r3, [r7, #24] + 80313fc: 681a ldr r2, [r3, #0] + 80313fe: 687b ldr r3, [r7, #4] + 8031400: 675a str r2, [r3, #116] ; 0x74 } if ((READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_FD) != (uint32_t)RESET) || (heth->RxDescList.pRxStart != NULL)) - 80313c2: 69bb ldr r3, [r7, #24] - 80313c4: 68db ldr r3, [r3, #12] - 80313c6: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 80313ca: 2b00 cmp r3, #0 - 80313cc: d103 bne.n 80313d6 - 80313ce: 687b ldr r3, [r7, #4] - 80313d0: 6fdb ldr r3, [r3, #124] ; 0x7c - 80313d2: 2b00 cmp r3, #0 - 80313d4: d03d beq.n 8031452 + 8031402: 69bb ldr r3, [r7, #24] + 8031404: 68db ldr r3, [r3, #12] + 8031406: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 803140a: 2b00 cmp r3, #0 + 803140c: d103 bne.n 8031416 + 803140e: 687b ldr r3, [r7, #4] + 8031410: 6fdb ldr r3, [r3, #124] ; 0x7c + 8031412: 2b00 cmp r3, #0 + 8031414: d03d beq.n 8031492 { /* Check if first descriptor */ if (READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_FD) != (uint32_t)RESET) - 80313d6: 69bb ldr r3, [r7, #24] - 80313d8: 68db ldr r3, [r3, #12] - 80313da: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 80313de: 2b00 cmp r3, #0 - 80313e0: d005 beq.n 80313ee + 8031416: 69bb ldr r3, [r7, #24] + 8031418: 68db ldr r3, [r3, #12] + 803141a: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 803141e: 2b00 cmp r3, #0 + 8031420: d005 beq.n 803142e { heth->RxDescList.RxDescCnt = 0; - 80313e2: 687b ldr r3, [r7, #4] - 80313e4: 2200 movs r2, #0 - 80313e6: 661a str r2, [r3, #96] ; 0x60 + 8031422: 687b ldr r3, [r7, #4] + 8031424: 2200 movs r2, #0 + 8031426: 661a str r2, [r3, #96] ; 0x60 heth->RxDescList.RxDataLength = 0; - 80313e8: 687b ldr r3, [r7, #4] - 80313ea: 2200 movs r2, #0 - 80313ec: 665a str r2, [r3, #100] ; 0x64 + 8031428: 687b ldr r3, [r7, #4] + 803142a: 2200 movs r2, #0 + 803142c: 665a str r2, [r3, #100] ; 0x64 } /* Check if last descriptor */ bufflength = heth->Init.RxBuffLen; - 80313ee: 687b ldr r3, [r7, #4] - 80313f0: 695b ldr r3, [r3, #20] - 80313f2: 613b str r3, [r7, #16] + 803142e: 687b ldr r3, [r7, #4] + 8031430: 695b ldr r3, [r3, #20] + 8031432: 613b str r3, [r7, #16] if (READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_LD) != (uint32_t)RESET) - 80313f4: 69bb ldr r3, [r7, #24] - 80313f6: 68db ldr r3, [r3, #12] - 80313f8: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 80313fc: 2b00 cmp r3, #0 - 80313fe: d00d beq.n 803141c + 8031434: 69bb ldr r3, [r7, #24] + 8031436: 68db ldr r3, [r3, #12] + 8031438: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 803143c: 2b00 cmp r3, #0 + 803143e: d00d beq.n 803145c { bufflength = READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_PL) - heth->RxDescList.RxDataLength; - 8031400: 69bb ldr r3, [r7, #24] - 8031402: 68db ldr r3, [r3, #12] - 8031404: f3c3 020e ubfx r2, r3, #0, #15 - 8031408: 687b ldr r3, [r7, #4] - 803140a: 6e5b ldr r3, [r3, #100] ; 0x64 - 803140c: 1ad3 subs r3, r2, r3 - 803140e: 613b str r3, [r7, #16] + 8031440: 69bb ldr r3, [r7, #24] + 8031442: 68db ldr r3, [r3, #12] + 8031444: f3c3 020e ubfx r2, r3, #0, #15 + 8031448: 687b ldr r3, [r7, #4] + 803144a: 6e5b ldr r3, [r3, #100] ; 0x64 + 803144c: 1ad3 subs r3, r2, r3 + 803144e: 613b str r3, [r7, #16] /* Save Last descriptor index */ heth->RxDescList.pRxLastRxDesc = dmarxdesc->DESC3; - 8031410: 69bb ldr r3, [r7, #24] - 8031412: 68da ldr r2, [r3, #12] - 8031414: 687b ldr r3, [r7, #4] - 8031416: 671a str r2, [r3, #112] ; 0x70 + 8031450: 69bb ldr r3, [r7, #24] + 8031452: 68da ldr r2, [r3, #12] + 8031454: 687b ldr r3, [r7, #4] + 8031456: 671a str r2, [r3, #112] ; 0x70 /* Packet ready */ rxdataready = 1; - 8031418: 2301 movs r3, #1 - 803141a: 73fb strb r3, [r7, #15] + 8031458: 2301 movs r3, #1 + 803145a: 73fb strb r3, [r7, #15] /*Call registered Link callback*/ heth->rxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, (uint8_t *)dmarxdesc->BackupAddr0, bufflength); #else /* Link callback */ HAL_ETH_RxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, - 803141c: 687b ldr r3, [r7, #4] - 803141e: f103 007c add.w r0, r3, #124 ; 0x7c - 8031422: 687b ldr r3, [r7, #4] - 8031424: f103 0180 add.w r1, r3, #128 ; 0x80 + 803145c: 687b ldr r3, [r7, #4] + 803145e: f103 007c add.w r0, r3, #124 ; 0x7c + 8031462: 687b ldr r3, [r7, #4] + 8031464: f103 0180 add.w r1, r3, #128 ; 0x80 (uint8_t *)dmarxdesc->BackupAddr0, (uint16_t) bufflength); - 8031428: 69bb ldr r3, [r7, #24] - 803142a: 691b ldr r3, [r3, #16] + 8031468: 69bb ldr r3, [r7, #24] + 803146a: 691b ldr r3, [r3, #16] HAL_ETH_RxLinkCallback(&heth->RxDescList.pRxStart, &heth->RxDescList.pRxEnd, - 803142c: 461a mov r2, r3 - 803142e: 693b ldr r3, [r7, #16] - 8031430: b29b uxth r3, r3 - 8031432: f00b fd63 bl 803cefc + 803146c: 461a mov r2, r3 + 803146e: 693b ldr r3, [r7, #16] + 8031470: b29b uxth r3, r3 + 8031472: f00b fd63 bl 803cf3c #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ heth->RxDescList.RxDescCnt++; - 8031436: 687b ldr r3, [r7, #4] - 8031438: 6e1b ldr r3, [r3, #96] ; 0x60 - 803143a: 1c5a adds r2, r3, #1 - 803143c: 687b ldr r3, [r7, #4] - 803143e: 661a str r2, [r3, #96] ; 0x60 + 8031476: 687b ldr r3, [r7, #4] + 8031478: 6e1b ldr r3, [r3, #96] ; 0x60 + 803147a: 1c5a adds r2, r3, #1 + 803147c: 687b ldr r3, [r7, #4] + 803147e: 661a str r2, [r3, #96] ; 0x60 heth->RxDescList.RxDataLength += bufflength; - 8031440: 687b ldr r3, [r7, #4] - 8031442: 6e5a ldr r2, [r3, #100] ; 0x64 - 8031444: 693b ldr r3, [r7, #16] - 8031446: 441a add r2, r3 - 8031448: 687b ldr r3, [r7, #4] - 803144a: 665a str r2, [r3, #100] ; 0x64 + 8031480: 687b ldr r3, [r7, #4] + 8031482: 6e5a ldr r2, [r3, #100] ; 0x64 + 8031484: 693b ldr r3, [r7, #16] + 8031486: 441a add r2, r3 + 8031488: 687b ldr r3, [r7, #4] + 803148a: 665a str r2, [r3, #100] ; 0x64 /* Clear buffer pointer */ dmarxdesc->BackupAddr0 = 0; - 803144c: 69bb ldr r3, [r7, #24] - 803144e: 2200 movs r2, #0 - 8031450: 611a str r2, [r3, #16] + 803148c: 69bb ldr r3, [r7, #24] + 803148e: 2200 movs r2, #0 + 8031490: 611a str r2, [r3, #16] } /* Increment current rx descriptor index */ INCR_RX_DESC_INDEX(descidx, 1U); - 8031452: 69fb ldr r3, [r7, #28] - 8031454: 3301 adds r3, #1 - 8031456: 61fb str r3, [r7, #28] - 8031458: 69fb ldr r3, [r7, #28] - 803145a: 2b03 cmp r3, #3 - 803145c: d902 bls.n 8031464 - 803145e: 69fb ldr r3, [r7, #28] - 8031460: 3b04 subs r3, #4 - 8031462: 61fb str r3, [r7, #28] + 8031492: 69fb ldr r3, [r7, #28] + 8031494: 3301 adds r3, #1 + 8031496: 61fb str r3, [r7, #28] + 8031498: 69fb ldr r3, [r7, #28] + 803149a: 2b03 cmp r3, #3 + 803149c: d902 bls.n 80314a4 + 803149e: 69fb ldr r3, [r7, #28] + 80314a0: 3b04 subs r3, #4 + 80314a2: 61fb str r3, [r7, #28] /* Get current descriptor address */ dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 8031464: 687b ldr r3, [r7, #4] - 8031466: 69fa ldr r2, [r7, #28] - 8031468: 3212 adds r2, #18 - 803146a: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 803146e: 61bb str r3, [r7, #24] + 80314a4: 687b ldr r3, [r7, #4] + 80314a6: 69fa ldr r2, [r7, #28] + 80314a8: 3212 adds r2, #18 + 80314aa: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80314ae: 61bb str r3, [r7, #24] desccnt++; - 8031470: 697b ldr r3, [r7, #20] - 8031472: 3301 adds r3, #1 - 8031474: 617b str r3, [r7, #20] + 80314b0: 697b ldr r3, [r7, #20] + 80314b2: 3301 adds r3, #1 + 80314b4: 617b str r3, [r7, #20] while ((READ_BIT(dmarxdesc->DESC3, ETH_DMARXNDESCWBF_OWN) == (uint32_t)RESET) && (desccnt < desccntmax) - 8031476: 69bb ldr r3, [r7, #24] - 8031478: 68db ldr r3, [r3, #12] - 803147a: 2b00 cmp r3, #0 - 803147c: db06 blt.n 803148c - 803147e: 697a ldr r2, [r7, #20] - 8031480: 68bb ldr r3, [r7, #8] - 8031482: 429a cmp r2, r3 - 8031484: d202 bcs.n 803148c + 80314b6: 69bb ldr r3, [r7, #24] + 80314b8: 68db ldr r3, [r3, #12] + 80314ba: 2b00 cmp r3, #0 + 80314bc: db06 blt.n 80314cc + 80314be: 697a ldr r2, [r7, #20] + 80314c0: 68bb ldr r3, [r7, #8] + 80314c2: 429a cmp r2, r3 + 80314c4: d202 bcs.n 80314cc && (rxdataready == 0U)) - 8031486: 7bfb ldrb r3, [r7, #15] - 8031488: 2b00 cmp r3, #0 - 803148a: d08c beq.n 80313a6 + 80314c6: 7bfb ldrb r3, [r7, #15] + 80314c8: 2b00 cmp r3, #0 + 80314ca: d08c beq.n 80313e6 } heth->RxDescList.RxBuildDescCnt += desccnt; - 803148c: 687b ldr r3, [r7, #4] - 803148e: 6eda ldr r2, [r3, #108] ; 0x6c - 8031490: 697b ldr r3, [r7, #20] - 8031492: 441a add r2, r3 - 8031494: 687b ldr r3, [r7, #4] - 8031496: 66da str r2, [r3, #108] ; 0x6c + 80314cc: 687b ldr r3, [r7, #4] + 80314ce: 6eda ldr r2, [r3, #108] ; 0x6c + 80314d0: 697b ldr r3, [r7, #20] + 80314d2: 441a add r2, r3 + 80314d4: 687b ldr r3, [r7, #4] + 80314d6: 66da str r2, [r3, #108] ; 0x6c if ((heth->RxDescList.RxBuildDescCnt) != 0U) - 8031498: 687b ldr r3, [r7, #4] - 803149a: 6edb ldr r3, [r3, #108] ; 0x6c - 803149c: 2b00 cmp r3, #0 - 803149e: d002 beq.n 80314a6 + 80314d8: 687b ldr r3, [r7, #4] + 80314da: 6edb ldr r3, [r3, #108] ; 0x6c + 80314dc: 2b00 cmp r3, #0 + 80314de: d002 beq.n 80314e6 { /* Update Descriptors */ ETH_UpdateDescriptor(heth); - 80314a0: 6878 ldr r0, [r7, #4] - 80314a2: f000 f814 bl 80314ce + 80314e0: 6878 ldr r0, [r7, #4] + 80314e2: f000 f814 bl 803150e } heth->RxDescList.RxDescIdx = descidx; - 80314a6: 687b ldr r3, [r7, #4] - 80314a8: 69fa ldr r2, [r7, #28] - 80314aa: 65da str r2, [r3, #92] ; 0x5c + 80314e6: 687b ldr r3, [r7, #4] + 80314e8: 69fa ldr r2, [r7, #28] + 80314ea: 65da str r2, [r3, #92] ; 0x5c if (rxdataready == 1U) - 80314ac: 7bfb ldrb r3, [r7, #15] - 80314ae: 2b01 cmp r3, #1 - 80314b0: d108 bne.n 80314c4 + 80314ec: 7bfb ldrb r3, [r7, #15] + 80314ee: 2b01 cmp r3, #1 + 80314f0: d108 bne.n 8031504 { /* Return received packet */ *pAppBuff = heth->RxDescList.pRxStart; - 80314b2: 687b ldr r3, [r7, #4] - 80314b4: 6fda ldr r2, [r3, #124] ; 0x7c - 80314b6: 683b ldr r3, [r7, #0] - 80314b8: 601a str r2, [r3, #0] + 80314f2: 687b ldr r3, [r7, #4] + 80314f4: 6fda ldr r2, [r3, #124] ; 0x7c + 80314f6: 683b ldr r3, [r7, #0] + 80314f8: 601a str r2, [r3, #0] /* Reset first element */ heth->RxDescList.pRxStart = NULL; - 80314ba: 687b ldr r3, [r7, #4] - 80314bc: 2200 movs r2, #0 - 80314be: 67da str r2, [r3, #124] ; 0x7c + 80314fa: 687b ldr r3, [r7, #4] + 80314fc: 2200 movs r2, #0 + 80314fe: 67da str r2, [r3, #124] ; 0x7c return HAL_OK; - 80314c0: 2300 movs r3, #0 - 80314c2: e000 b.n 80314c6 + 8031500: 2300 movs r3, #0 + 8031502: e000 b.n 8031506 } /* Packet not ready */ return HAL_ERROR; - 80314c4: 2301 movs r3, #1 + 8031504: 2301 movs r3, #1 } - 80314c6: 4618 mov r0, r3 - 80314c8: 3720 adds r7, #32 - 80314ca: 46bd mov sp, r7 - 80314cc: bd80 pop {r7, pc} + 8031506: 4618 mov r0, r3 + 8031508: 3720 adds r7, #32 + 803150a: 46bd mov sp, r7 + 803150c: bd80 pop {r7, pc} -080314ce : +0803150e : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ static void ETH_UpdateDescriptor(ETH_HandleTypeDef *heth) { - 80314ce: b580 push {r7, lr} - 80314d0: b088 sub sp, #32 - 80314d2: af00 add r7, sp, #0 - 80314d4: 6078 str r0, [r7, #4] + 803150e: b580 push {r7, lr} + 8031510: b088 sub sp, #32 + 8031512: af00 add r7, sp, #0 + 8031514: 6078 str r0, [r7, #4] uint32_t descidx; uint32_t desccount; ETH_DMADescTypeDef *dmarxdesc; uint8_t *buff = NULL; - 80314d6: 2300 movs r3, #0 - 80314d8: 60fb str r3, [r7, #12] + 8031516: 2300 movs r3, #0 + 8031518: 60fb str r3, [r7, #12] uint8_t allocStatus = 1U; - 80314da: 2301 movs r3, #1 - 80314dc: 74fb strb r3, [r7, #19] + 803151a: 2301 movs r3, #1 + 803151c: 74fb strb r3, [r7, #19] descidx = heth->RxDescList.RxBuildDescIdx; - 80314de: 687b ldr r3, [r7, #4] - 80314e0: 6e9b ldr r3, [r3, #104] ; 0x68 - 80314e2: 61fb str r3, [r7, #28] + 803151e: 687b ldr r3, [r7, #4] + 8031520: 6e9b ldr r3, [r3, #104] ; 0x68 + 8031522: 61fb str r3, [r7, #28] dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 80314e4: 687b ldr r3, [r7, #4] - 80314e6: 69fa ldr r2, [r7, #28] - 80314e8: 3212 adds r2, #18 - 80314ea: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80314ee: 617b str r3, [r7, #20] + 8031524: 687b ldr r3, [r7, #4] + 8031526: 69fa ldr r2, [r7, #28] + 8031528: 3212 adds r2, #18 + 803152a: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 803152e: 617b str r3, [r7, #20] desccount = heth->RxDescList.RxBuildDescCnt; - 80314f0: 687b ldr r3, [r7, #4] - 80314f2: 6edb ldr r3, [r3, #108] ; 0x6c - 80314f4: 61bb str r3, [r7, #24] + 8031530: 687b ldr r3, [r7, #4] + 8031532: 6edb ldr r3, [r3, #108] ; 0x6c + 8031534: 61bb str r3, [r7, #24] while ((desccount > 0U) && (allocStatus != 0U)) - 80314f6: e03b b.n 8031570 + 8031536: e03b b.n 80315b0 { /* Check if a buffer's attached the descriptor */ if (READ_REG(dmarxdesc->BackupAddr0) == 0U) - 80314f8: 697b ldr r3, [r7, #20] - 80314fa: 691b ldr r3, [r3, #16] - 80314fc: 2b00 cmp r3, #0 - 80314fe: d112 bne.n 8031526 + 8031538: 697b ldr r3, [r7, #20] + 803153a: 691b ldr r3, [r3, #16] + 803153c: 2b00 cmp r3, #0 + 803153e: d112 bne.n 8031566 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /*Call registered Allocate callback*/ heth->rxAllocateCallback(&buff); #else /* Allocate callback */ HAL_ETH_RxAllocateCallback(&buff); - 8031500: f107 030c add.w r3, r7, #12 - 8031504: 4618 mov r0, r3 - 8031506: f00b fcc9 bl 803ce9c + 8031540: f107 030c add.w r3, r7, #12 + 8031544: 4618 mov r0, r3 + 8031546: f00b fcc9 bl 803cedc #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ if (buff == NULL) - 803150a: 68fb ldr r3, [r7, #12] - 803150c: 2b00 cmp r3, #0 - 803150e: d102 bne.n 8031516 + 803154a: 68fb ldr r3, [r7, #12] + 803154c: 2b00 cmp r3, #0 + 803154e: d102 bne.n 8031556 { allocStatus = 0U; - 8031510: 2300 movs r3, #0 - 8031512: 74fb strb r3, [r7, #19] - 8031514: e007 b.n 8031526 + 8031550: 2300 movs r3, #0 + 8031552: 74fb strb r3, [r7, #19] + 8031554: e007 b.n 8031566 } else { WRITE_REG(dmarxdesc->BackupAddr0, (uint32_t)buff); - 8031516: 68fb ldr r3, [r7, #12] - 8031518: 461a mov r2, r3 - 803151a: 697b ldr r3, [r7, #20] - 803151c: 611a str r2, [r3, #16] + 8031556: 68fb ldr r3, [r7, #12] + 8031558: 461a mov r2, r3 + 803155a: 697b ldr r3, [r7, #20] + 803155c: 611a str r2, [r3, #16] WRITE_REG(dmarxdesc->DESC0, (uint32_t)buff); - 803151e: 68fb ldr r3, [r7, #12] - 8031520: 461a mov r2, r3 - 8031522: 697b ldr r3, [r7, #20] - 8031524: 601a str r2, [r3, #0] + 803155e: 68fb ldr r3, [r7, #12] + 8031560: 461a mov r2, r3 + 8031562: 697b ldr r3, [r7, #20] + 8031564: 601a str r2, [r3, #0] } } if (allocStatus != 0U) - 8031526: 7cfb ldrb r3, [r7, #19] - 8031528: 2b00 cmp r3, #0 - 803152a: d021 beq.n 8031570 + 8031566: 7cfb ldrb r3, [r7, #19] + 8031568: 2b00 cmp r3, #0 + 803156a: d021 beq.n 80315b0 __ASM volatile ("dmb 0xF":::"memory"); - 803152c: f3bf 8f5f dmb sy + 803156c: f3bf 8f5f dmb sy } - 8031530: bf00 nop + 8031570: bf00 nop { /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); if (heth->RxDescList.ItMode != 0U) - 8031532: 687b ldr r3, [r7, #4] - 8031534: 6d9b ldr r3, [r3, #88] ; 0x58 - 8031536: 2b00 cmp r3, #0 - 8031538: d004 beq.n 8031544 + 8031572: 687b ldr r3, [r7, #4] + 8031574: 6d9b ldr r3, [r3, #88] ; 0x58 + 8031576: 2b00 cmp r3, #0 + 8031578: d004 beq.n 8031584 { WRITE_REG(dmarxdesc->DESC3, ETH_DMARXNDESCRF_OWN | ETH_DMARXNDESCRF_BUF1V | ETH_DMARXNDESCRF_IOC); - 803153a: 697b ldr r3, [r7, #20] - 803153c: f04f 4241 mov.w r2, #3238002688 ; 0xc1000000 - 8031540: 60da str r2, [r3, #12] - 8031542: e003 b.n 803154c + 803157a: 697b ldr r3, [r7, #20] + 803157c: f04f 4241 mov.w r2, #3238002688 ; 0xc1000000 + 8031580: 60da str r2, [r3, #12] + 8031582: e003 b.n 803158c } else { WRITE_REG(dmarxdesc->DESC3, ETH_DMARXNDESCRF_OWN | ETH_DMARXNDESCRF_BUF1V); - 8031544: 697b ldr r3, [r7, #20] - 8031546: f04f 4201 mov.w r2, #2164260864 ; 0x81000000 - 803154a: 60da str r2, [r3, #12] + 8031584: 697b ldr r3, [r7, #20] + 8031586: f04f 4201 mov.w r2, #2164260864 ; 0x81000000 + 803158a: 60da str r2, [r3, #12] } /* Increment current rx descriptor index */ INCR_RX_DESC_INDEX(descidx, 1U); - 803154c: 69fb ldr r3, [r7, #28] - 803154e: 3301 adds r3, #1 - 8031550: 61fb str r3, [r7, #28] - 8031552: 69fb ldr r3, [r7, #28] - 8031554: 2b03 cmp r3, #3 - 8031556: d902 bls.n 803155e - 8031558: 69fb ldr r3, [r7, #28] - 803155a: 3b04 subs r3, #4 - 803155c: 61fb str r3, [r7, #28] + 803158c: 69fb ldr r3, [r7, #28] + 803158e: 3301 adds r3, #1 + 8031590: 61fb str r3, [r7, #28] + 8031592: 69fb ldr r3, [r7, #28] + 8031594: 2b03 cmp r3, #3 + 8031596: d902 bls.n 803159e + 8031598: 69fb ldr r3, [r7, #28] + 803159a: 3b04 subs r3, #4 + 803159c: 61fb str r3, [r7, #28] /* Get current descriptor address */ dmarxdesc = (ETH_DMADescTypeDef *)heth->RxDescList.RxDesc[descidx]; - 803155e: 687b ldr r3, [r7, #4] - 8031560: 69fa ldr r2, [r7, #28] - 8031562: 3212 adds r2, #18 - 8031564: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8031568: 617b str r3, [r7, #20] + 803159e: 687b ldr r3, [r7, #4] + 80315a0: 69fa ldr r2, [r7, #28] + 80315a2: 3212 adds r2, #18 + 80315a4: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80315a8: 617b str r3, [r7, #20] desccount--; - 803156a: 69bb ldr r3, [r7, #24] - 803156c: 3b01 subs r3, #1 - 803156e: 61bb str r3, [r7, #24] + 80315aa: 69bb ldr r3, [r7, #24] + 80315ac: 3b01 subs r3, #1 + 80315ae: 61bb str r3, [r7, #24] while ((desccount > 0U) && (allocStatus != 0U)) - 8031570: 69bb ldr r3, [r7, #24] - 8031572: 2b00 cmp r3, #0 - 8031574: d002 beq.n 803157c - 8031576: 7cfb ldrb r3, [r7, #19] - 8031578: 2b00 cmp r3, #0 - 803157a: d1bd bne.n 80314f8 + 80315b0: 69bb ldr r3, [r7, #24] + 80315b2: 2b00 cmp r3, #0 + 80315b4: d002 beq.n 80315bc + 80315b6: 7cfb ldrb r3, [r7, #19] + 80315b8: 2b00 cmp r3, #0 + 80315ba: d1bd bne.n 8031538 } } if (heth->RxDescList.RxBuildDescCnt != desccount) - 803157c: 687b ldr r3, [r7, #4] - 803157e: 6edb ldr r3, [r3, #108] ; 0x6c - 8031580: 69ba ldr r2, [r7, #24] - 8031582: 429a cmp r2, r3 - 8031584: d00d beq.n 80315a2 + 80315bc: 687b ldr r3, [r7, #4] + 80315be: 6edb ldr r3, [r3, #108] ; 0x6c + 80315c0: 69ba ldr r2, [r7, #24] + 80315c2: 429a cmp r2, r3 + 80315c4: d00d beq.n 80315e2 { /* Set the Tail pointer address */ WRITE_REG(heth->Instance->DMACRDTPR, 0); - 8031586: 687b ldr r3, [r7, #4] - 8031588: 681b ldr r3, [r3, #0] - 803158a: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803158e: 461a mov r2, r3 - 8031590: 2300 movs r3, #0 - 8031592: f8c2 3128 str.w r3, [r2, #296] ; 0x128 + 80315c6: 687b ldr r3, [r7, #4] + 80315c8: 681b ldr r3, [r3, #0] + 80315ca: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80315ce: 461a mov r2, r3 + 80315d0: 2300 movs r3, #0 + 80315d2: f8c2 3128 str.w r3, [r2, #296] ; 0x128 heth->RxDescList.RxBuildDescIdx = descidx; - 8031596: 687b ldr r3, [r7, #4] - 8031598: 69fa ldr r2, [r7, #28] - 803159a: 669a str r2, [r3, #104] ; 0x68 + 80315d6: 687b ldr r3, [r7, #4] + 80315d8: 69fa ldr r2, [r7, #28] + 80315da: 669a str r2, [r3, #104] ; 0x68 heth->RxDescList.RxBuildDescCnt = desccount; - 803159c: 687b ldr r3, [r7, #4] - 803159e: 69ba ldr r2, [r7, #24] - 80315a0: 66da str r2, [r3, #108] ; 0x6c + 80315dc: 687b ldr r3, [r7, #4] + 80315de: 69ba ldr r2, [r7, #24] + 80315e0: 66da str r2, [r3, #108] ; 0x6c } } - 80315a2: bf00 nop - 80315a4: 3720 adds r7, #32 - 80315a6: 46bd mov sp, r7 - 80315a8: bd80 pop {r7, pc} + 80315e2: bf00 nop + 80315e4: 3720 adds r7, #32 + 80315e6: 46bd mov sp, r7 + 80315e8: bd80 pop {r7, pc} ... -080315ac : +080315ec : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth) { - 80315ac: b580 push {r7, lr} - 80315ae: b084 sub sp, #16 - 80315b0: af00 add r7, sp, #0 - 80315b2: 6078 str r0, [r7, #4] + 80315ec: b580 push {r7, lr} + 80315ee: b084 sub sp, #16 + 80315f0: af00 add r7, sp, #0 + 80315f2: 6078 str r0, [r7, #4] uint32_t macirqenable; /* Packet received */ if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_RI)) - 80315b4: 687b ldr r3, [r7, #4] - 80315b6: 681b ldr r3, [r3, #0] - 80315b8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80315bc: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 80315c0: f003 0340 and.w r3, r3, #64 ; 0x40 - 80315c4: 2b40 cmp r3, #64 ; 0x40 - 80315c6: d115 bne.n 80315f4 + 80315f4: 687b ldr r3, [r7, #4] + 80315f6: 681b ldr r3, [r3, #0] + 80315f8: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80315fc: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 8031600: f003 0340 and.w r3, r3, #64 ; 0x40 + 8031604: 2b40 cmp r3, #64 ; 0x40 + 8031606: d115 bne.n 8031634 { if (__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_RIE)) - 80315c8: 687b ldr r3, [r7, #4] - 80315ca: 681b ldr r3, [r3, #0] - 80315cc: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80315d0: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 - 80315d4: f003 0340 and.w r3, r3, #64 ; 0x40 - 80315d8: 2b40 cmp r3, #64 ; 0x40 - 80315da: d10b bne.n 80315f4 + 8031608: 687b ldr r3, [r7, #4] + 803160a: 681b ldr r3, [r3, #0] + 803160c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031610: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 + 8031614: f003 0340 and.w r3, r3, #64 ; 0x40 + 8031618: 2b40 cmp r3, #64 ; 0x40 + 803161a: d10b bne.n 8031634 { /* Clear the Eth DMA Rx IT pending bits */ __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMACSR_RI | ETH_DMACSR_NIS); - 80315dc: 687b ldr r3, [r7, #4] - 80315de: 681b ldr r3, [r3, #0] - 80315e0: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80315e4: 461a mov r2, r3 - 80315e6: f248 0340 movw r3, #32832 ; 0x8040 - 80315ea: f8c2 3160 str.w r3, [r2, #352] ; 0x160 + 803161c: 687b ldr r3, [r7, #4] + 803161e: 681b ldr r3, [r3, #0] + 8031620: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031624: 461a mov r2, r3 + 8031626: f248 0340 movw r3, #32832 ; 0x8040 + 803162a: f8c2 3160 str.w r3, [r2, #352] ; 0x160 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /*Call registered Receive complete callback*/ heth->RxCpltCallback(heth); #else /* Receive complete callback */ HAL_ETH_RxCpltCallback(heth); - 80315ee: 6878 ldr r0, [r7, #4] - 80315f0: f000 f8f6 bl 80317e0 + 803162e: 6878 ldr r0, [r7, #4] + 8031630: f000 f8f6 bl 8031820 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ } } /* Packet transmitted */ if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_TI)) - 80315f4: 687b ldr r3, [r7, #4] - 80315f6: 681b ldr r3, [r3, #0] - 80315f8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80315fc: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 8031600: f003 0301 and.w r3, r3, #1 - 8031604: 2b01 cmp r3, #1 - 8031606: d115 bne.n 8031634 + 8031634: 687b ldr r3, [r7, #4] + 8031636: 681b ldr r3, [r3, #0] + 8031638: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803163c: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 8031640: f003 0301 and.w r3, r3, #1 + 8031644: 2b01 cmp r3, #1 + 8031646: d115 bne.n 8031674 { if (__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_TIE)) - 8031608: 687b ldr r3, [r7, #4] - 803160a: 681b ldr r3, [r3, #0] - 803160c: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031610: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 - 8031614: f003 0301 and.w r3, r3, #1 - 8031618: 2b01 cmp r3, #1 - 803161a: d10b bne.n 8031634 + 8031648: 687b ldr r3, [r7, #4] + 803164a: 681b ldr r3, [r3, #0] + 803164c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031650: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 + 8031654: f003 0301 and.w r3, r3, #1 + 8031658: 2b01 cmp r3, #1 + 803165a: d10b bne.n 8031674 { /* Clear the Eth DMA Tx IT pending bits */ __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMACSR_TI | ETH_DMACSR_NIS); - 803161c: 687b ldr r3, [r7, #4] - 803161e: 681b ldr r3, [r3, #0] - 8031620: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031624: 461a mov r2, r3 - 8031626: f248 0301 movw r3, #32769 ; 0x8001 - 803162a: f8c2 3160 str.w r3, [r2, #352] ; 0x160 + 803165c: 687b ldr r3, [r7, #4] + 803165e: 681b ldr r3, [r3, #0] + 8031660: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031664: 461a mov r2, r3 + 8031666: f248 0301 movw r3, #32769 ; 0x8001 + 803166a: f8c2 3160 str.w r3, [r2, #352] ; 0x160 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /*Call registered Transmit complete callback*/ heth->TxCpltCallback(heth); #else /* Transfer complete callback */ HAL_ETH_TxCpltCallback(heth); - 803162e: 6878 ldr r0, [r7, #4] - 8031630: f000 f8cc bl 80317cc + 803166e: 6878 ldr r0, [r7, #4] + 8031670: f000 f8cc bl 803180c } } /* ETH DMA Error */ if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_AIS)) - 8031634: 687b ldr r3, [r7, #4] - 8031636: 681b ldr r3, [r3, #0] - 8031638: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803163c: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 8031640: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 8031644: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8031648: d153 bne.n 80316f2 + 8031674: 687b ldr r3, [r7, #4] + 8031676: 681b ldr r3, [r3, #0] + 8031678: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803167c: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 8031680: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8031684: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8031688: d153 bne.n 8031732 { if (__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_AIE)) - 803164a: 687b ldr r3, [r7, #4] - 803164c: 681b ldr r3, [r3, #0] - 803164e: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031652: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 - 8031656: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 803165a: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 803165e: d148 bne.n 80316f2 + 803168a: 687b ldr r3, [r7, #4] + 803168c: 681b ldr r3, [r3, #0] + 803168e: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031692: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 + 8031696: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 803169a: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 803169e: d148 bne.n 8031732 { heth->ErrorCode |= HAL_ETH_ERROR_DMA; - 8031660: 687b ldr r3, [r7, #4] - 8031662: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8031666: f043 0208 orr.w r2, r3, #8 - 803166a: 687b ldr r3, [r7, #4] - 803166c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 80316a0: 687b ldr r3, [r7, #4] + 80316a2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80316a6: f043 0208 orr.w r2, r3, #8 + 80316aa: 687b ldr r3, [r7, #4] + 80316ac: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* if fatal bus error occurred */ if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_FBE)) - 8031670: 687b ldr r3, [r7, #4] - 8031672: 681b ldr r3, [r3, #0] - 8031674: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8031678: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 803167c: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 8031680: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8031684: d11e bne.n 80316c4 + 80316b0: 687b ldr r3, [r7, #4] + 80316b2: 681b ldr r3, [r3, #0] + 80316b4: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80316b8: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 80316bc: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 80316c0: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 80316c4: d11e bne.n 8031704 { /* Get DMA error code */ heth->DMAErrorCode = READ_BIT(heth->Instance->DMACSR, (ETH_DMACSR_FBE | ETH_DMACSR_TPS | ETH_DMACSR_RPS)); - 8031686: 687b ldr r3, [r7, #4] - 8031688: 681b ldr r3, [r3, #0] - 803168a: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803168e: f8d3 2160 ldr.w r2, [r3, #352] ; 0x160 - 8031692: f241 1302 movw r3, #4354 ; 0x1102 - 8031696: 4013 ands r3, r2 - 8031698: 687a ldr r2, [r7, #4] - 803169a: f8c2 308c str.w r3, [r2, #140] ; 0x8c + 80316c6: 687b ldr r3, [r7, #4] + 80316c8: 681b ldr r3, [r3, #0] + 80316ca: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80316ce: f8d3 2160 ldr.w r2, [r3, #352] ; 0x160 + 80316d2: f241 1302 movw r3, #4354 ; 0x1102 + 80316d6: 4013 ands r3, r2 + 80316d8: 687a ldr r2, [r7, #4] + 80316da: f8c2 308c str.w r3, [r2, #140] ; 0x8c /* Disable all interrupts */ __HAL_ETH_DMA_DISABLE_IT(heth, ETH_DMACIER_NIE | ETH_DMACIER_AIE); - 803169e: 687b ldr r3, [r7, #4] - 80316a0: 681b ldr r3, [r3, #0] - 80316a2: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80316a6: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 - 80316aa: 687a ldr r2, [r7, #4] - 80316ac: 6812 ldr r2, [r2, #0] - 80316ae: f423 4340 bic.w r3, r3, #49152 ; 0xc000 - 80316b2: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80316b6: f8c2 3134 str.w r3, [r2, #308] ; 0x134 + 80316de: 687b ldr r3, [r7, #4] + 80316e0: 681b ldr r3, [r3, #0] + 80316e2: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80316e6: f8d3 3134 ldr.w r3, [r3, #308] ; 0x134 + 80316ea: 687a ldr r2, [r7, #4] + 80316ec: 6812 ldr r2, [r2, #0] + 80316ee: f423 4340 bic.w r3, r3, #49152 ; 0xc000 + 80316f2: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80316f6: f8c2 3134 str.w r3, [r2, #308] ; 0x134 /* Set HAL state to ERROR */ heth->gState = HAL_ETH_STATE_ERROR; - 80316ba: 687b ldr r3, [r7, #4] - 80316bc: 22e0 movs r2, #224 ; 0xe0 - 80316be: f8c3 2084 str.w r2, [r3, #132] ; 0x84 - 80316c2: e013 b.n 80316ec + 80316fa: 687b ldr r3, [r7, #4] + 80316fc: 22e0 movs r2, #224 ; 0xe0 + 80316fe: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8031702: e013 b.n 803172c } else { /* Get DMA error status */ heth->DMAErrorCode = READ_BIT(heth->Instance->DMACSR, (ETH_DMACSR_CDE | ETH_DMACSR_ETI | ETH_DMACSR_RWT | - 80316c4: 687b ldr r3, [r7, #4] - 80316c6: 681b ldr r3, [r3, #0] - 80316c8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80316cc: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 - 80316d0: f403 42cd and.w r2, r3, #26240 ; 0x6680 - 80316d4: 687b ldr r3, [r7, #4] - 80316d6: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8031704: 687b ldr r3, [r7, #4] + 8031706: 681b ldr r3, [r3, #0] + 8031708: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803170c: f8d3 3160 ldr.w r3, [r3, #352] ; 0x160 + 8031710: f403 42cd and.w r2, r3, #26240 ; 0x6680 + 8031714: 687b ldr r3, [r7, #4] + 8031716: f8c3 208c str.w r2, [r3, #140] ; 0x8c ETH_DMACSR_RBU | ETH_DMACSR_AIS)); /* Clear the interrupt summary flag */ __HAL_ETH_DMA_CLEAR_IT(heth, (ETH_DMACSR_CDE | ETH_DMACSR_ETI | ETH_DMACSR_RWT | - 80316da: 687b ldr r3, [r7, #4] - 80316dc: 681b ldr r3, [r3, #0] - 80316de: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80316e2: 461a mov r2, r3 - 80316e4: f44f 43cd mov.w r3, #26240 ; 0x6680 - 80316e8: f8c2 3160 str.w r3, [r2, #352] ; 0x160 + 803171a: 687b ldr r3, [r7, #4] + 803171c: 681b ldr r3, [r3, #0] + 803171e: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8031722: 461a mov r2, r3 + 8031724: f44f 43cd mov.w r3, #26240 ; 0x6680 + 8031728: f8c2 3160 str.w r3, [r2, #352] ; 0x160 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /* Call registered Error callback*/ heth->ErrorCallback(heth); #else /* Ethernet DMA Error callback */ HAL_ETH_ErrorCallback(heth); - 80316ec: 6878 ldr r0, [r7, #4] - 80316ee: f000 f881 bl 80317f4 + 803172c: 6878 ldr r0, [r7, #4] + 803172e: f000 f881 bl 8031834 } } /* ETH MAC Error IT */ macirqenable = heth->Instance->MACIER; - 80316f2: 687b ldr r3, [r7, #4] - 80316f4: 681b ldr r3, [r3, #0] - 80316f6: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 80316fa: 60fb str r3, [r7, #12] + 8031732: 687b ldr r3, [r7, #4] + 8031734: 681b ldr r3, [r3, #0] + 8031736: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 803173a: 60fb str r3, [r7, #12] if (((macirqenable & ETH_MACIER_RXSTSIE) == ETH_MACIER_RXSTSIE) || \ - 80316fc: 68fb ldr r3, [r7, #12] - 80316fe: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 8031702: 2b00 cmp r3, #0 - 8031704: d104 bne.n 8031710 + 803173c: 68fb ldr r3, [r7, #12] + 803173e: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8031742: 2b00 cmp r3, #0 + 8031744: d104 bne.n 8031750 ((macirqenable & ETH_MACIER_TXSTSIE) == ETH_MACIER_TXSTSIE)) - 8031706: 68fb ldr r3, [r7, #12] - 8031708: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 8031746: 68fb ldr r3, [r7, #12] + 8031748: f403 5300 and.w r3, r3, #8192 ; 0x2000 if (((macirqenable & ETH_MACIER_RXSTSIE) == ETH_MACIER_RXSTSIE) || \ - 803170c: 2b00 cmp r3, #0 - 803170e: d019 beq.n 8031744 + 803174c: 2b00 cmp r3, #0 + 803174e: d019 beq.n 8031784 { heth->ErrorCode |= HAL_ETH_ERROR_MAC; - 8031710: 687b ldr r3, [r7, #4] - 8031712: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8031716: f043 0210 orr.w r2, r3, #16 - 803171a: 687b ldr r3, [r7, #4] - 803171c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8031750: 687b ldr r3, [r7, #4] + 8031752: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8031756: f043 0210 orr.w r2, r3, #16 + 803175a: 687b ldr r3, [r7, #4] + 803175c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Get MAC Rx Tx status and clear Status register pending bit */ heth->MACErrorCode = READ_REG(heth->Instance->MACRXTXSR); - 8031720: 687b ldr r3, [r7, #4] - 8031722: 681b ldr r3, [r3, #0] - 8031724: f8d3 20b8 ldr.w r2, [r3, #184] ; 0xb8 - 8031728: 687b ldr r3, [r7, #4] - 803172a: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 8031760: 687b ldr r3, [r7, #4] + 8031762: 681b ldr r3, [r3, #0] + 8031764: f8d3 20b8 ldr.w r2, [r3, #184] ; 0xb8 + 8031768: 687b ldr r3, [r7, #4] + 803176a: f8c3 2090 str.w r2, [r3, #144] ; 0x90 heth->gState = HAL_ETH_STATE_ERROR; - 803172e: 687b ldr r3, [r7, #4] - 8031730: 22e0 movs r2, #224 ; 0xe0 - 8031732: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803176e: 687b ldr r3, [r7, #4] + 8031770: 22e0 movs r2, #224 ; 0xe0 + 8031772: f8c3 2084 str.w r2, [r3, #132] ; 0x84 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /* Call registered Error callback*/ heth->ErrorCallback(heth); #else /* Ethernet Error callback */ HAL_ETH_ErrorCallback(heth); - 8031736: 6878 ldr r0, [r7, #4] - 8031738: f000 f85c bl 80317f4 + 8031776: 6878 ldr r0, [r7, #4] + 8031778: f000 f85c bl 8031834 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ heth->MACErrorCode = (uint32_t)(0x0U); - 803173c: 687b ldr r3, [r7, #4] - 803173e: 2200 movs r2, #0 - 8031740: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 803177c: 687b ldr r3, [r7, #4] + 803177e: 2200 movs r2, #0 + 8031780: f8c3 2090 str.w r2, [r3, #144] ; 0x90 } /* ETH PMT IT */ if (__HAL_ETH_MAC_GET_IT(heth, ETH_MAC_PMT_IT)) - 8031744: 687b ldr r3, [r7, #4] - 8031746: 681b ldr r3, [r3, #0] - 8031748: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 803174c: f003 0310 and.w r3, r3, #16 - 8031750: 2b10 cmp r3, #16 - 8031752: d10f bne.n 8031774 + 8031784: 687b ldr r3, [r7, #4] + 8031786: 681b ldr r3, [r3, #0] + 8031788: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 803178c: f003 0310 and.w r3, r3, #16 + 8031790: 2b10 cmp r3, #16 + 8031792: d10f bne.n 80317b4 { /* Get MAC Wake-up source and clear the status register pending bit */ heth->MACWakeUpEvent = READ_BIT(heth->Instance->MACPCSR, (ETH_MACPCSR_RWKPRCVD | ETH_MACPCSR_MGKPRCVD)); - 8031754: 687b ldr r3, [r7, #4] - 8031756: 681b ldr r3, [r3, #0] - 8031758: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 - 803175c: f003 0260 and.w r2, r3, #96 ; 0x60 - 8031760: 687b ldr r3, [r7, #4] - 8031762: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 8031794: 687b ldr r3, [r7, #4] + 8031796: 681b ldr r3, [r3, #0] + 8031798: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 + 803179c: f003 0260 and.w r2, r3, #96 ; 0x60 + 80317a0: 687b ldr r3, [r7, #4] + 80317a2: f8c3 2094 str.w r2, [r3, #148] ; 0x94 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /* Call registered PMT callback*/ heth->PMTCallback(heth); #else /* Ethernet PMT callback */ HAL_ETH_PMTCallback(heth); - 8031766: 6878 ldr r0, [r7, #4] - 8031768: f000 f84e bl 8031808 + 80317a6: 6878 ldr r0, [r7, #4] + 80317a8: f000 f84e bl 8031848 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ heth->MACWakeUpEvent = (uint32_t)(0x0U); - 803176c: 687b ldr r3, [r7, #4] - 803176e: 2200 movs r2, #0 - 8031770: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 80317ac: 687b ldr r3, [r7, #4] + 80317ae: 2200 movs r2, #0 + 80317b0: f8c3 2094 str.w r2, [r3, #148] ; 0x94 } /* ETH EEE IT */ if (__HAL_ETH_MAC_GET_IT(heth, ETH_MAC_LPI_IT)) - 8031774: 687b ldr r3, [r7, #4] - 8031776: 681b ldr r3, [r3, #0] - 8031778: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 803177c: f003 0320 and.w r3, r3, #32 - 8031780: 2b20 cmp r3, #32 - 8031782: d10f bne.n 80317a4 + 80317b4: 687b ldr r3, [r7, #4] + 80317b6: 681b ldr r3, [r3, #0] + 80317b8: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 80317bc: f003 0320 and.w r3, r3, #32 + 80317c0: 2b20 cmp r3, #32 + 80317c2: d10f bne.n 80317e4 { /* Get MAC LPI interrupt source and clear the status register pending bit */ heth->MACLPIEvent = READ_BIT(heth->Instance->MACPCSR, 0x0000000FU); - 8031784: 687b ldr r3, [r7, #4] - 8031786: 681b ldr r3, [r3, #0] - 8031788: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 - 803178c: f003 020f and.w r2, r3, #15 - 8031790: 687b ldr r3, [r7, #4] - 8031792: f8c3 2098 str.w r2, [r3, #152] ; 0x98 + 80317c4: 687b ldr r3, [r7, #4] + 80317c6: 681b ldr r3, [r3, #0] + 80317c8: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 + 80317cc: f003 020f and.w r2, r3, #15 + 80317d0: 687b ldr r3, [r7, #4] + 80317d2: f8c3 2098 str.w r2, [r3, #152] ; 0x98 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /* Call registered EEE callback*/ heth->EEECallback(heth); #else /* Ethernet EEE callback */ HAL_ETH_EEECallback(heth); - 8031796: 6878 ldr r0, [r7, #4] - 8031798: f000 f840 bl 803181c + 80317d6: 6878 ldr r0, [r7, #4] + 80317d8: f000 f840 bl 803185c #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ heth->MACLPIEvent = (uint32_t)(0x0U); - 803179c: 687b ldr r3, [r7, #4] - 803179e: 2200 movs r2, #0 - 80317a0: f8c3 2098 str.w r2, [r3, #152] ; 0x98 + 80317dc: 687b ldr r3, [r7, #4] + 80317de: 2200 movs r2, #0 + 80317e0: f8c3 2098 str.w r2, [r3, #152] ; 0x98 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ } } #else /* USE_HAL_ETH_REGISTER_CALLBACKS */ /* check ETH WAKEUP exti flag */ if (__HAL_ETH_WAKEUP_EXTI_GET_FLAG(ETH_WAKEUP_EXTI_LINE) != (uint32_t)RESET) - 80317a4: 4b08 ldr r3, [pc, #32] ; (80317c8 ) - 80317a6: 6a9b ldr r3, [r3, #40] ; 0x28 - 80317a8: f403 0380 and.w r3, r3, #4194304 ; 0x400000 - 80317ac: 2b00 cmp r3, #0 - 80317ae: d006 beq.n 80317be + 80317e4: 4b08 ldr r3, [pc, #32] ; (8031808 ) + 80317e6: 6a9b ldr r3, [r3, #40] ; 0x28 + 80317e8: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 80317ec: 2b00 cmp r3, #0 + 80317ee: d006 beq.n 80317fe { /* Clear ETH WAKEUP Exti pending bit */ __HAL_ETH_WAKEUP_EXTI_CLEAR_FLAG(ETH_WAKEUP_EXTI_LINE); - 80317b0: 4b05 ldr r3, [pc, #20] ; (80317c8 ) - 80317b2: f44f 0280 mov.w r2, #4194304 ; 0x400000 - 80317b6: 629a str r2, [r3, #40] ; 0x28 + 80317f0: 4b05 ldr r3, [pc, #20] ; (8031808 ) + 80317f2: f44f 0280 mov.w r2, #4194304 ; 0x400000 + 80317f6: 629a str r2, [r3, #40] ; 0x28 #if (USE_HAL_ETH_REGISTER_CALLBACKS == 1) /* Call registered WakeUp callback*/ heth->WakeUpCallback(heth); #else /* ETH WAKEUP callback */ HAL_ETH_WakeUpCallback(heth); - 80317b8: 6878 ldr r0, [r7, #4] - 80317ba: f000 f839 bl 8031830 + 80317f8: 6878 ldr r0, [r7, #4] + 80317fa: f000 f839 bl 8031870 #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ } #endif /* USE_HAL_ETH_REGISTER_CALLBACKS */ } - 80317be: bf00 nop - 80317c0: 3710 adds r7, #16 - 80317c2: 46bd mov sp, r7 - 80317c4: bd80 pop {r7, pc} - 80317c6: bf00 nop - 80317c8: 58000080 .word 0x58000080 + 80317fe: bf00 nop + 8031800: 3710 adds r7, #16 + 8031802: 46bd mov sp, r7 + 8031804: bd80 pop {r7, pc} + 8031806: bf00 nop + 8031808: 58000080 .word 0x58000080 -080317cc : +0803180c : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *heth) { - 80317cc: b480 push {r7} - 80317ce: b083 sub sp, #12 - 80317d0: af00 add r7, sp, #0 - 80317d2: 6078 str r0, [r7, #4] + 803180c: b480 push {r7} + 803180e: b083 sub sp, #12 + 8031810: af00 add r7, sp, #0 + 8031812: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_TxCpltCallback could be implemented in the user file */ } - 80317d4: bf00 nop - 80317d6: 370c adds r7, #12 - 80317d8: 46bd mov sp, r7 - 80317da: f85d 7b04 ldr.w r7, [sp], #4 - 80317de: 4770 bx lr + 8031814: bf00 nop + 8031816: 370c adds r7, #12 + 8031818: 46bd mov sp, r7 + 803181a: f85d 7b04 ldr.w r7, [sp], #4 + 803181e: 4770 bx lr -080317e0 : +08031820 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth) { - 80317e0: b480 push {r7} - 80317e2: b083 sub sp, #12 - 80317e4: af00 add r7, sp, #0 - 80317e6: 6078 str r0, [r7, #4] + 8031820: b480 push {r7} + 8031822: b083 sub sp, #12 + 8031824: af00 add r7, sp, #0 + 8031826: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_RxCpltCallback could be implemented in the user file */ } - 80317e8: bf00 nop - 80317ea: 370c adds r7, #12 - 80317ec: 46bd mov sp, r7 - 80317ee: f85d 7b04 ldr.w r7, [sp], #4 - 80317f2: 4770 bx lr + 8031828: bf00 nop + 803182a: 370c adds r7, #12 + 803182c: 46bd mov sp, r7 + 803182e: f85d 7b04 ldr.w r7, [sp], #4 + 8031832: 4770 bx lr -080317f4 : +08031834 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *heth) { - 80317f4: b480 push {r7} - 80317f6: b083 sub sp, #12 - 80317f8: af00 add r7, sp, #0 - 80317fa: 6078 str r0, [r7, #4] + 8031834: b480 push {r7} + 8031836: b083 sub sp, #12 + 8031838: af00 add r7, sp, #0 + 803183a: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_ErrorCallback could be implemented in the user file */ } - 80317fc: bf00 nop - 80317fe: 370c adds r7, #12 - 8031800: 46bd mov sp, r7 - 8031802: f85d 7b04 ldr.w r7, [sp], #4 - 8031806: 4770 bx lr + 803183c: bf00 nop + 803183e: 370c adds r7, #12 + 8031840: 46bd mov sp, r7 + 8031842: f85d 7b04 ldr.w r7, [sp], #4 + 8031846: 4770 bx lr -08031808 : +08031848 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_PMTCallback(ETH_HandleTypeDef *heth) { - 8031808: b480 push {r7} - 803180a: b083 sub sp, #12 - 803180c: af00 add r7, sp, #0 - 803180e: 6078 str r0, [r7, #4] + 8031848: b480 push {r7} + 803184a: b083 sub sp, #12 + 803184c: af00 add r7, sp, #0 + 803184e: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_PMTCallback could be implemented in the user file */ } - 8031810: bf00 nop - 8031812: 370c adds r7, #12 - 8031814: 46bd mov sp, r7 - 8031816: f85d 7b04 ldr.w r7, [sp], #4 - 803181a: 4770 bx lr + 8031850: bf00 nop + 8031852: 370c adds r7, #12 + 8031854: 46bd mov sp, r7 + 8031856: f85d 7b04 ldr.w r7, [sp], #4 + 803185a: 4770 bx lr -0803181c : +0803185c : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_EEECallback(ETH_HandleTypeDef *heth) { - 803181c: b480 push {r7} - 803181e: b083 sub sp, #12 - 8031820: af00 add r7, sp, #0 - 8031822: 6078 str r0, [r7, #4] + 803185c: b480 push {r7} + 803185e: b083 sub sp, #12 + 8031860: af00 add r7, sp, #0 + 8031862: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_EEECallback could be implemented in the user file */ } - 8031824: bf00 nop - 8031826: 370c adds r7, #12 - 8031828: 46bd mov sp, r7 - 803182a: f85d 7b04 ldr.w r7, [sp], #4 - 803182e: 4770 bx lr + 8031864: bf00 nop + 8031866: 370c adds r7, #12 + 8031868: 46bd mov sp, r7 + 803186a: f85d 7b04 ldr.w r7, [sp], #4 + 803186e: 4770 bx lr -08031830 : +08031870 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ __weak void HAL_ETH_WakeUpCallback(ETH_HandleTypeDef *heth) { - 8031830: b480 push {r7} - 8031832: b083 sub sp, #12 - 8031834: af00 add r7, sp, #0 - 8031836: 6078 str r0, [r7, #4] + 8031870: b480 push {r7} + 8031872: b083 sub sp, #12 + 8031874: af00 add r7, sp, #0 + 8031876: 6078 str r0, [r7, #4] /* Prevent unused argument(s) compilation warning */ UNUSED(heth); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_ETH_WakeUpCallback could be implemented in the user file */ } - 8031838: bf00 nop - 803183a: 370c adds r7, #12 - 803183c: 46bd mov sp, r7 - 803183e: f85d 7b04 ldr.w r7, [sp], #4 - 8031842: 4770 bx lr + 8031878: bf00 nop + 803187a: 370c adds r7, #12 + 803187c: 46bd mov sp, r7 + 803187e: f85d 7b04 ldr.w r7, [sp], #4 + 8031882: 4770 bx lr -08031844 : +08031884 : * @param pRegValue: parameter to hold read value * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_ReadPHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t *pRegValue) { - 8031844: b580 push {r7, lr} - 8031846: b086 sub sp, #24 - 8031848: af00 add r7, sp, #0 - 803184a: 60f8 str r0, [r7, #12] - 803184c: 60b9 str r1, [r7, #8] - 803184e: 607a str r2, [r7, #4] - 8031850: 603b str r3, [r7, #0] + 8031884: b580 push {r7, lr} + 8031886: b086 sub sp, #24 + 8031888: af00 add r7, sp, #0 + 803188a: 60f8 str r0, [r7, #12] + 803188c: 60b9 str r1, [r7, #8] + 803188e: 607a str r2, [r7, #4] + 8031890: 603b str r3, [r7, #0] uint32_t tickstart; uint32_t tmpreg; /* Check for the Busy flag */ if (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) != (uint32_t)RESET) - 8031852: 68fb ldr r3, [r7, #12] - 8031854: 681b ldr r3, [r3, #0] - 8031856: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 803185a: f003 0301 and.w r3, r3, #1 - 803185e: 2b00 cmp r3, #0 - 8031860: d001 beq.n 8031866 + 8031892: 68fb ldr r3, [r7, #12] + 8031894: 681b ldr r3, [r3, #0] + 8031896: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 803189a: f003 0301 and.w r3, r3, #1 + 803189e: 2b00 cmp r3, #0 + 80318a0: d001 beq.n 80318a6 { return HAL_ERROR; - 8031862: 2301 movs r3, #1 - 8031864: e03e b.n 80318e4 + 80318a2: 2301 movs r3, #1 + 80318a4: e03e b.n 8031924 } /* Get the MACMDIOAR value */ WRITE_REG(tmpreg, heth->Instance->MACMDIOAR); - 8031866: 68fb ldr r3, [r7, #12] - 8031868: 681b ldr r3, [r3, #0] - 803186a: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 803186e: 617b str r3, [r7, #20] + 80318a6: 68fb ldr r3, [r7, #12] + 80318a8: 681b ldr r3, [r3, #0] + 80318aa: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 80318ae: 617b str r3, [r7, #20] - Set the PHY device address - Set the PHY register address - Set the read mode - Set the MII Busy bit */ MODIFY_REG(tmpreg, ETH_MACMDIOAR_PA, (PHYAddr << 21)); - 8031870: 697b ldr r3, [r7, #20] - 8031872: f023 7278 bic.w r2, r3, #65011712 ; 0x3e00000 - 8031876: 68bb ldr r3, [r7, #8] - 8031878: 055b lsls r3, r3, #21 - 803187a: 4313 orrs r3, r2 - 803187c: 617b str r3, [r7, #20] + 80318b0: 697b ldr r3, [r7, #20] + 80318b2: f023 7278 bic.w r2, r3, #65011712 ; 0x3e00000 + 80318b6: 68bb ldr r3, [r7, #8] + 80318b8: 055b lsls r3, r3, #21 + 80318ba: 4313 orrs r3, r2 + 80318bc: 617b str r3, [r7, #20] MODIFY_REG(tmpreg, ETH_MACMDIOAR_RDA, (PHYReg << 16)); - 803187e: 697b ldr r3, [r7, #20] - 8031880: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000 - 8031884: 687b ldr r3, [r7, #4] - 8031886: 041b lsls r3, r3, #16 - 8031888: 4313 orrs r3, r2 - 803188a: 617b str r3, [r7, #20] + 80318be: 697b ldr r3, [r7, #20] + 80318c0: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000 + 80318c4: 687b ldr r3, [r7, #4] + 80318c6: 041b lsls r3, r3, #16 + 80318c8: 4313 orrs r3, r2 + 80318ca: 617b str r3, [r7, #20] MODIFY_REG(tmpreg, ETH_MACMDIOAR_MOC, ETH_MACMDIOAR_MOC_RD); - 803188c: 697b ldr r3, [r7, #20] - 803188e: f043 030c orr.w r3, r3, #12 - 8031892: 617b str r3, [r7, #20] + 80318cc: 697b ldr r3, [r7, #20] + 80318ce: f043 030c orr.w r3, r3, #12 + 80318d2: 617b str r3, [r7, #20] SET_BIT(tmpreg, ETH_MACMDIOAR_MB); - 8031894: 697b ldr r3, [r7, #20] - 8031896: f043 0301 orr.w r3, r3, #1 - 803189a: 617b str r3, [r7, #20] + 80318d4: 697b ldr r3, [r7, #20] + 80318d6: f043 0301 orr.w r3, r3, #1 + 80318da: 617b str r3, [r7, #20] /* Write the result value into the MDII Address register */ WRITE_REG(heth->Instance->MACMDIOAR, tmpreg); - 803189c: 68fb ldr r3, [r7, #12] - 803189e: 681b ldr r3, [r3, #0] - 80318a0: 697a ldr r2, [r7, #20] - 80318a2: f8c3 2200 str.w r2, [r3, #512] ; 0x200 + 80318dc: 68fb ldr r3, [r7, #12] + 80318de: 681b ldr r3, [r3, #0] + 80318e0: 697a ldr r2, [r7, #20] + 80318e2: f8c3 2200 str.w r2, [r3, #512] ; 0x200 tickstart = HAL_GetTick(); - 80318a6: f7fb fb75 bl 802cf94 - 80318aa: 6138 str r0, [r7, #16] + 80318e6: f7fb fb75 bl 802cfd4 + 80318ea: 6138 str r0, [r7, #16] /* Wait for the Busy flag */ while (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) > 0U) - 80318ac: e009 b.n 80318c2 + 80318ec: e009 b.n 8031902 { if (((HAL_GetTick() - tickstart) > ETH_MDIO_BUS_TIMEOUT)) - 80318ae: f7fb fb71 bl 802cf94 - 80318b2: 4602 mov r2, r0 - 80318b4: 693b ldr r3, [r7, #16] - 80318b6: 1ad3 subs r3, r2, r3 - 80318b8: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 80318bc: d901 bls.n 80318c2 + 80318ee: f7fb fb71 bl 802cfd4 + 80318f2: 4602 mov r2, r0 + 80318f4: 693b ldr r3, [r7, #16] + 80318f6: 1ad3 subs r3, r2, r3 + 80318f8: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 80318fc: d901 bls.n 8031902 { return HAL_ERROR; - 80318be: 2301 movs r3, #1 - 80318c0: e010 b.n 80318e4 + 80318fe: 2301 movs r3, #1 + 8031900: e010 b.n 8031924 while (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) > 0U) - 80318c2: 68fb ldr r3, [r7, #12] - 80318c4: 681b ldr r3, [r3, #0] - 80318c6: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 80318ca: f003 0301 and.w r3, r3, #1 - 80318ce: 2b00 cmp r3, #0 - 80318d0: d1ed bne.n 80318ae + 8031902: 68fb ldr r3, [r7, #12] + 8031904: 681b ldr r3, [r3, #0] + 8031906: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 803190a: f003 0301 and.w r3, r3, #1 + 803190e: 2b00 cmp r3, #0 + 8031910: d1ed bne.n 80318ee } } /* Get MACMIIDR value */ WRITE_REG(*pRegValue, (uint16_t)heth->Instance->MACMDIODR); - 80318d2: 68fb ldr r3, [r7, #12] - 80318d4: 681b ldr r3, [r3, #0] - 80318d6: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 - 80318da: b29b uxth r3, r3 - 80318dc: 461a mov r2, r3 - 80318de: 683b ldr r3, [r7, #0] - 80318e0: 601a str r2, [r3, #0] + 8031912: 68fb ldr r3, [r7, #12] + 8031914: 681b ldr r3, [r3, #0] + 8031916: f8d3 3204 ldr.w r3, [r3, #516] ; 0x204 + 803191a: b29b uxth r3, r3 + 803191c: 461a mov r2, r3 + 803191e: 683b ldr r3, [r7, #0] + 8031920: 601a str r2, [r3, #0] return HAL_OK; - 80318e2: 2300 movs r3, #0 + 8031922: 2300 movs r3, #0 } - 80318e4: 4618 mov r0, r3 - 80318e6: 3718 adds r7, #24 - 80318e8: 46bd mov sp, r7 - 80318ea: bd80 pop {r7, pc} + 8031924: 4618 mov r0, r3 + 8031926: 3718 adds r7, #24 + 8031928: 46bd mov sp, r7 + 803192a: bd80 pop {r7, pc} -080318ec : +0803192c : * @param RegValue: the value to write * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_WritePHYRegister(ETH_HandleTypeDef *heth, uint32_t PHYAddr, uint32_t PHYReg, uint32_t RegValue) { - 80318ec: b580 push {r7, lr} - 80318ee: b086 sub sp, #24 - 80318f0: af00 add r7, sp, #0 - 80318f2: 60f8 str r0, [r7, #12] - 80318f4: 60b9 str r1, [r7, #8] - 80318f6: 607a str r2, [r7, #4] - 80318f8: 603b str r3, [r7, #0] + 803192c: b580 push {r7, lr} + 803192e: b086 sub sp, #24 + 8031930: af00 add r7, sp, #0 + 8031932: 60f8 str r0, [r7, #12] + 8031934: 60b9 str r1, [r7, #8] + 8031936: 607a str r2, [r7, #4] + 8031938: 603b str r3, [r7, #0] uint32_t tickstart; uint32_t tmpreg; /* Check for the Busy flag */ if (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) != (uint32_t)RESET) - 80318fa: 68fb ldr r3, [r7, #12] - 80318fc: 681b ldr r3, [r3, #0] - 80318fe: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 8031902: f003 0301 and.w r3, r3, #1 - 8031906: 2b00 cmp r3, #0 - 8031908: d001 beq.n 803190e + 803193a: 68fb ldr r3, [r7, #12] + 803193c: 681b ldr r3, [r3, #0] + 803193e: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 8031942: f003 0301 and.w r3, r3, #1 + 8031946: 2b00 cmp r3, #0 + 8031948: d001 beq.n 803194e { return HAL_ERROR; - 803190a: 2301 movs r3, #1 - 803190c: e03c b.n 8031988 + 803194a: 2301 movs r3, #1 + 803194c: e03c b.n 80319c8 } /* Get the MACMDIOAR value */ WRITE_REG(tmpreg, heth->Instance->MACMDIOAR); - 803190e: 68fb ldr r3, [r7, #12] - 8031910: 681b ldr r3, [r3, #0] - 8031912: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 8031916: 617b str r3, [r7, #20] + 803194e: 68fb ldr r3, [r7, #12] + 8031950: 681b ldr r3, [r3, #0] + 8031952: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 8031956: 617b str r3, [r7, #20] - Set the PHY device address - Set the PHY register address - Set the write mode - Set the MII Busy bit */ MODIFY_REG(tmpreg, ETH_MACMDIOAR_PA, (PHYAddr << 21)); - 8031918: 697b ldr r3, [r7, #20] - 803191a: f023 7278 bic.w r2, r3, #65011712 ; 0x3e00000 - 803191e: 68bb ldr r3, [r7, #8] - 8031920: 055b lsls r3, r3, #21 - 8031922: 4313 orrs r3, r2 - 8031924: 617b str r3, [r7, #20] + 8031958: 697b ldr r3, [r7, #20] + 803195a: f023 7278 bic.w r2, r3, #65011712 ; 0x3e00000 + 803195e: 68bb ldr r3, [r7, #8] + 8031960: 055b lsls r3, r3, #21 + 8031962: 4313 orrs r3, r2 + 8031964: 617b str r3, [r7, #20] MODIFY_REG(tmpreg, ETH_MACMDIOAR_RDA, (PHYReg << 16)); - 8031926: 697b ldr r3, [r7, #20] - 8031928: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000 - 803192c: 687b ldr r3, [r7, #4] - 803192e: 041b lsls r3, r3, #16 - 8031930: 4313 orrs r3, r2 - 8031932: 617b str r3, [r7, #20] + 8031966: 697b ldr r3, [r7, #20] + 8031968: f423 12f8 bic.w r2, r3, #2031616 ; 0x1f0000 + 803196c: 687b ldr r3, [r7, #4] + 803196e: 041b lsls r3, r3, #16 + 8031970: 4313 orrs r3, r2 + 8031972: 617b str r3, [r7, #20] MODIFY_REG(tmpreg, ETH_MACMDIOAR_MOC, ETH_MACMDIOAR_MOC_WR); - 8031934: 697b ldr r3, [r7, #20] - 8031936: f023 030c bic.w r3, r3, #12 - 803193a: f043 0304 orr.w r3, r3, #4 - 803193e: 617b str r3, [r7, #20] + 8031974: 697b ldr r3, [r7, #20] + 8031976: f023 030c bic.w r3, r3, #12 + 803197a: f043 0304 orr.w r3, r3, #4 + 803197e: 617b str r3, [r7, #20] SET_BIT(tmpreg, ETH_MACMDIOAR_MB); - 8031940: 697b ldr r3, [r7, #20] - 8031942: f043 0301 orr.w r3, r3, #1 - 8031946: 617b str r3, [r7, #20] + 8031980: 697b ldr r3, [r7, #20] + 8031982: f043 0301 orr.w r3, r3, #1 + 8031986: 617b str r3, [r7, #20] /* Give the value to the MII data register */ WRITE_REG(ETH->MACMDIODR, (uint16_t)RegValue); - 8031948: 683b ldr r3, [r7, #0] - 803194a: b29a uxth r2, r3 - 803194c: 4b10 ldr r3, [pc, #64] ; (8031990 ) - 803194e: f8c3 2204 str.w r2, [r3, #516] ; 0x204 + 8031988: 683b ldr r3, [r7, #0] + 803198a: b29a uxth r2, r3 + 803198c: 4b10 ldr r3, [pc, #64] ; (80319d0 ) + 803198e: f8c3 2204 str.w r2, [r3, #516] ; 0x204 /* Write the result value into the MII Address register */ WRITE_REG(ETH->MACMDIOAR, tmpreg); - 8031952: 4a0f ldr r2, [pc, #60] ; (8031990 ) - 8031954: 697b ldr r3, [r7, #20] - 8031956: f8c2 3200 str.w r3, [r2, #512] ; 0x200 + 8031992: 4a0f ldr r2, [pc, #60] ; (80319d0 ) + 8031994: 697b ldr r3, [r7, #20] + 8031996: f8c2 3200 str.w r3, [r2, #512] ; 0x200 tickstart = HAL_GetTick(); - 803195a: f7fb fb1b bl 802cf94 - 803195e: 6138 str r0, [r7, #16] + 803199a: f7fb fb1b bl 802cfd4 + 803199e: 6138 str r0, [r7, #16] /* Wait for the Busy flag */ while (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) > 0U) - 8031960: e009 b.n 8031976 + 80319a0: e009 b.n 80319b6 { if (((HAL_GetTick() - tickstart) > ETH_MDIO_BUS_TIMEOUT)) - 8031962: f7fb fb17 bl 802cf94 - 8031966: 4602 mov r2, r0 - 8031968: 693b ldr r3, [r7, #16] - 803196a: 1ad3 subs r3, r2, r3 - 803196c: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 8031970: d901 bls.n 8031976 + 80319a2: f7fb fb17 bl 802cfd4 + 80319a6: 4602 mov r2, r0 + 80319a8: 693b ldr r3, [r7, #16] + 80319aa: 1ad3 subs r3, r2, r3 + 80319ac: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 80319b0: d901 bls.n 80319b6 { return HAL_ERROR; - 8031972: 2301 movs r3, #1 - 8031974: e008 b.n 8031988 + 80319b2: 2301 movs r3, #1 + 80319b4: e008 b.n 80319c8 while (READ_BIT(heth->Instance->MACMDIOAR, ETH_MACMDIOAR_MB) > 0U) - 8031976: 68fb ldr r3, [r7, #12] - 8031978: 681b ldr r3, [r3, #0] - 803197a: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 803197e: f003 0301 and.w r3, r3, #1 - 8031982: 2b00 cmp r3, #0 - 8031984: d1ed bne.n 8031962 + 80319b6: 68fb ldr r3, [r7, #12] + 80319b8: 681b ldr r3, [r3, #0] + 80319ba: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 80319be: f003 0301 and.w r3, r3, #1 + 80319c2: 2b00 cmp r3, #0 + 80319c4: d1ed bne.n 80319a2 } } return HAL_OK; - 8031986: 2300 movs r3, #0 + 80319c6: 2300 movs r3, #0 } - 8031988: 4618 mov r0, r3 - 803198a: 3718 adds r7, #24 - 803198c: 46bd mov sp, r7 - 803198e: bd80 pop {r7, pc} - 8031990: 40028000 .word 0x40028000 + 80319c8: 4618 mov r0, r3 + 80319ca: 3718 adds r7, #24 + 80319cc: 46bd mov sp, r7 + 80319ce: bd80 pop {r7, pc} + 80319d0: 40028000 .word 0x40028000 -08031994 : +080319d4 : * @param macconf: pointer to a ETH_MACConfigTypeDef structure that will hold * the configuration of the MAC. * @retval HAL Status */ HAL_StatusTypeDef HAL_ETH_GetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) { - 8031994: b480 push {r7} - 8031996: b083 sub sp, #12 - 8031998: af00 add r7, sp, #0 - 803199a: 6078 str r0, [r7, #4] - 803199c: 6039 str r1, [r7, #0] + 80319d4: b480 push {r7} + 80319d6: b083 sub sp, #12 + 80319d8: af00 add r7, sp, #0 + 80319da: 6078 str r0, [r7, #4] + 80319dc: 6039 str r1, [r7, #0] if (macconf == NULL) - 803199e: 683b ldr r3, [r7, #0] - 80319a0: 2b00 cmp r3, #0 - 80319a2: d101 bne.n 80319a8 + 80319de: 683b ldr r3, [r7, #0] + 80319e0: 2b00 cmp r3, #0 + 80319e2: d101 bne.n 80319e8 { return HAL_ERROR; - 80319a4: 2301 movs r3, #1 - 80319a6: e1c3 b.n 8031d30 + 80319e4: 2301 movs r3, #1 + 80319e6: e1c3 b.n 8031d70 } /* Get MAC parameters */ macconf->PreambleLength = READ_BIT(heth->Instance->MACCR, ETH_MACCR_PRELEN); - 80319a8: 687b ldr r3, [r7, #4] - 80319aa: 681b ldr r3, [r3, #0] - 80319ac: 681b ldr r3, [r3, #0] - 80319ae: f003 020c and.w r2, r3, #12 - 80319b2: 683b ldr r3, [r7, #0] - 80319b4: 62da str r2, [r3, #44] ; 0x2c + 80319e8: 687b ldr r3, [r7, #4] + 80319ea: 681b ldr r3, [r3, #0] + 80319ec: 681b ldr r3, [r3, #0] + 80319ee: f003 020c and.w r2, r3, #12 + 80319f2: 683b ldr r3, [r7, #0] + 80319f4: 62da str r2, [r3, #44] ; 0x2c macconf->DeferralCheck = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DC) >> 4) > 0U) ? ENABLE : DISABLE; - 80319b6: 687b ldr r3, [r7, #4] - 80319b8: 681b ldr r3, [r3, #0] - 80319ba: 681b ldr r3, [r3, #0] - 80319bc: f003 0310 and.w r3, r3, #16 - 80319c0: 2b00 cmp r3, #0 - 80319c2: bf14 ite ne - 80319c4: 2301 movne r3, #1 - 80319c6: 2300 moveq r3, #0 - 80319c8: b2db uxtb r3, r3 - 80319ca: 461a mov r2, r3 - 80319cc: 683b ldr r3, [r7, #0] - 80319ce: f883 2028 strb.w r2, [r3, #40] ; 0x28 + 80319f6: 687b ldr r3, [r7, #4] + 80319f8: 681b ldr r3, [r3, #0] + 80319fa: 681b ldr r3, [r3, #0] + 80319fc: f003 0310 and.w r3, r3, #16 + 8031a00: 2b00 cmp r3, #0 + 8031a02: bf14 ite ne + 8031a04: 2301 movne r3, #1 + 8031a06: 2300 moveq r3, #0 + 8031a08: b2db uxtb r3, r3 + 8031a0a: 461a mov r2, r3 + 8031a0c: 683b ldr r3, [r7, #0] + 8031a0e: f883 2028 strb.w r2, [r3, #40] ; 0x28 macconf->BackOffLimit = READ_BIT(heth->Instance->MACCR, ETH_MACCR_BL); - 80319d2: 687b ldr r3, [r7, #4] - 80319d4: 681b ldr r3, [r3, #0] - 80319d6: 681b ldr r3, [r3, #0] - 80319d8: f003 0260 and.w r2, r3, #96 ; 0x60 - 80319dc: 683b ldr r3, [r7, #0] - 80319de: 625a str r2, [r3, #36] ; 0x24 + 8031a12: 687b ldr r3, [r7, #4] + 8031a14: 681b ldr r3, [r3, #0] + 8031a16: 681b ldr r3, [r3, #0] + 8031a18: f003 0260 and.w r2, r3, #96 ; 0x60 + 8031a1c: 683b ldr r3, [r7, #0] + 8031a1e: 625a str r2, [r3, #36] ; 0x24 macconf->RetryTransmission = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DR) >> 8) == 0U) ? ENABLE : DISABLE; - 80319e0: 687b ldr r3, [r7, #4] - 80319e2: 681b ldr r3, [r3, #0] - 80319e4: 681b ldr r3, [r3, #0] - 80319e6: f403 7380 and.w r3, r3, #256 ; 0x100 - 80319ea: 2b00 cmp r3, #0 - 80319ec: bf0c ite eq - 80319ee: 2301 moveq r3, #1 - 80319f0: 2300 movne r3, #0 - 80319f2: b2db uxtb r3, r3 - 80319f4: 461a mov r2, r3 - 80319f6: 683b ldr r3, [r7, #0] - 80319f8: f883 2020 strb.w r2, [r3, #32] + 8031a20: 687b ldr r3, [r7, #4] + 8031a22: 681b ldr r3, [r3, #0] + 8031a24: 681b ldr r3, [r3, #0] + 8031a26: f403 7380 and.w r3, r3, #256 ; 0x100 + 8031a2a: 2b00 cmp r3, #0 + 8031a2c: bf0c ite eq + 8031a2e: 2301 moveq r3, #1 + 8031a30: 2300 movne r3, #0 + 8031a32: b2db uxtb r3, r3 + 8031a34: 461a mov r2, r3 + 8031a36: 683b ldr r3, [r7, #0] + 8031a38: f883 2020 strb.w r2, [r3, #32] macconf->CarrierSenseDuringTransmit = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DCRS) >> 9) > 0U) - 80319fc: 687b ldr r3, [r7, #4] - 80319fe: 681b ldr r3, [r3, #0] - 8031a00: 681b ldr r3, [r3, #0] - 8031a02: f403 7300 and.w r3, r3, #512 ; 0x200 + 8031a3c: 687b ldr r3, [r7, #4] + 8031a3e: 681b ldr r3, [r3, #0] + 8031a40: 681b ldr r3, [r3, #0] + 8031a42: f403 7300 and.w r3, r3, #512 ; 0x200 ? ENABLE : DISABLE; - 8031a06: 2b00 cmp r3, #0 - 8031a08: bf14 ite ne - 8031a0a: 2301 movne r3, #1 - 8031a0c: 2300 moveq r3, #0 - 8031a0e: b2db uxtb r3, r3 - 8031a10: 461a mov r2, r3 + 8031a46: 2b00 cmp r3, #0 + 8031a48: bf14 ite ne + 8031a4a: 2301 movne r3, #1 + 8031a4c: 2300 moveq r3, #0 + 8031a4e: b2db uxtb r3, r3 + 8031a50: 461a mov r2, r3 macconf->CarrierSenseDuringTransmit = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DCRS) >> 9) > 0U) - 8031a12: 683b ldr r3, [r7, #0] - 8031a14: 77da strb r2, [r3, #31] + 8031a52: 683b ldr r3, [r7, #0] + 8031a54: 77da strb r2, [r3, #31] macconf->ReceiveOwn = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_DO) >> 10) == 0U) ? ENABLE : DISABLE; - 8031a16: 687b ldr r3, [r7, #4] - 8031a18: 681b ldr r3, [r3, #0] - 8031a1a: 681b ldr r3, [r3, #0] - 8031a1c: f403 6380 and.w r3, r3, #1024 ; 0x400 - 8031a20: 2b00 cmp r3, #0 - 8031a22: bf0c ite eq - 8031a24: 2301 moveq r3, #1 - 8031a26: 2300 movne r3, #0 - 8031a28: b2db uxtb r3, r3 - 8031a2a: 461a mov r2, r3 - 8031a2c: 683b ldr r3, [r7, #0] - 8031a2e: 779a strb r2, [r3, #30] + 8031a56: 687b ldr r3, [r7, #4] + 8031a58: 681b ldr r3, [r3, #0] + 8031a5a: 681b ldr r3, [r3, #0] + 8031a5c: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8031a60: 2b00 cmp r3, #0 + 8031a62: bf0c ite eq + 8031a64: 2301 moveq r3, #1 + 8031a66: 2300 movne r3, #0 + 8031a68: b2db uxtb r3, r3 + 8031a6a: 461a mov r2, r3 + 8031a6c: 683b ldr r3, [r7, #0] + 8031a6e: 779a strb r2, [r3, #30] macconf->CarrierSenseBeforeTransmit = ((READ_BIT(heth->Instance->MACCR, - 8031a30: 687b ldr r3, [r7, #4] - 8031a32: 681b ldr r3, [r3, #0] - 8031a34: 681b ldr r3, [r3, #0] + 8031a70: 687b ldr r3, [r7, #4] + 8031a72: 681b ldr r3, [r3, #0] + 8031a74: 681b ldr r3, [r3, #0] ETH_MACCR_ECRSFD) >> 11) > 0U) ? ENABLE : DISABLE; - 8031a36: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8031a3a: 2b00 cmp r3, #0 - 8031a3c: bf14 ite ne - 8031a3e: 2301 movne r3, #1 - 8031a40: 2300 moveq r3, #0 - 8031a42: b2db uxtb r3, r3 - 8031a44: 461a mov r2, r3 + 8031a76: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8031a7a: 2b00 cmp r3, #0 + 8031a7c: bf14 ite ne + 8031a7e: 2301 movne r3, #1 + 8031a80: 2300 moveq r3, #0 + 8031a82: b2db uxtb r3, r3 + 8031a84: 461a mov r2, r3 macconf->CarrierSenseBeforeTransmit = ((READ_BIT(heth->Instance->MACCR, - 8031a46: 683b ldr r3, [r7, #0] - 8031a48: 775a strb r2, [r3, #29] + 8031a86: 683b ldr r3, [r7, #0] + 8031a88: 775a strb r2, [r3, #29] macconf->LoopbackMode = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_LM) >> 12) > 0U) ? ENABLE : DISABLE; - 8031a4a: 687b ldr r3, [r7, #4] - 8031a4c: 681b ldr r3, [r3, #0] - 8031a4e: 681b ldr r3, [r3, #0] - 8031a50: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 8031a54: 2b00 cmp r3, #0 - 8031a56: bf14 ite ne - 8031a58: 2301 movne r3, #1 - 8031a5a: 2300 moveq r3, #0 - 8031a5c: b2db uxtb r3, r3 - 8031a5e: 461a mov r2, r3 - 8031a60: 683b ldr r3, [r7, #0] - 8031a62: 771a strb r2, [r3, #28] + 8031a8a: 687b ldr r3, [r7, #4] + 8031a8c: 681b ldr r3, [r3, #0] + 8031a8e: 681b ldr r3, [r3, #0] + 8031a90: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 8031a94: 2b00 cmp r3, #0 + 8031a96: bf14 ite ne + 8031a98: 2301 movne r3, #1 + 8031a9a: 2300 moveq r3, #0 + 8031a9c: b2db uxtb r3, r3 + 8031a9e: 461a mov r2, r3 + 8031aa0: 683b ldr r3, [r7, #0] + 8031aa2: 771a strb r2, [r3, #28] macconf->DuplexMode = READ_BIT(heth->Instance->MACCR, ETH_MACCR_DM); - 8031a64: 687b ldr r3, [r7, #4] - 8031a66: 681b ldr r3, [r3, #0] - 8031a68: 681b ldr r3, [r3, #0] - 8031a6a: f403 5200 and.w r2, r3, #8192 ; 0x2000 - 8031a6e: 683b ldr r3, [r7, #0] - 8031a70: 619a str r2, [r3, #24] + 8031aa4: 687b ldr r3, [r7, #4] + 8031aa6: 681b ldr r3, [r3, #0] + 8031aa8: 681b ldr r3, [r3, #0] + 8031aaa: f403 5200 and.w r2, r3, #8192 ; 0x2000 + 8031aae: 683b ldr r3, [r7, #0] + 8031ab0: 619a str r2, [r3, #24] macconf->Speed = READ_BIT(heth->Instance->MACCR, ETH_MACCR_FES); - 8031a72: 687b ldr r3, [r7, #4] - 8031a74: 681b ldr r3, [r3, #0] - 8031a76: 681b ldr r3, [r3, #0] - 8031a78: f403 4280 and.w r2, r3, #16384 ; 0x4000 - 8031a7c: 683b ldr r3, [r7, #0] - 8031a7e: 615a str r2, [r3, #20] + 8031ab2: 687b ldr r3, [r7, #4] + 8031ab4: 681b ldr r3, [r3, #0] + 8031ab6: 681b ldr r3, [r3, #0] + 8031ab8: f403 4280 and.w r2, r3, #16384 ; 0x4000 + 8031abc: 683b ldr r3, [r7, #0] + 8031abe: 615a str r2, [r3, #20] macconf->JumboPacket = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_JE) >> 16) > 0U) ? ENABLE : DISABLE; - 8031a80: 687b ldr r3, [r7, #4] - 8031a82: 681b ldr r3, [r3, #0] - 8031a84: 681b ldr r3, [r3, #0] - 8031a86: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8031a8a: 2b00 cmp r3, #0 - 8031a8c: bf14 ite ne - 8031a8e: 2301 movne r3, #1 - 8031a90: 2300 moveq r3, #0 - 8031a92: b2db uxtb r3, r3 - 8031a94: 461a mov r2, r3 - 8031a96: 683b ldr r3, [r7, #0] - 8031a98: 749a strb r2, [r3, #18] + 8031ac0: 687b ldr r3, [r7, #4] + 8031ac2: 681b ldr r3, [r3, #0] + 8031ac4: 681b ldr r3, [r3, #0] + 8031ac6: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8031aca: 2b00 cmp r3, #0 + 8031acc: bf14 ite ne + 8031ace: 2301 movne r3, #1 + 8031ad0: 2300 moveq r3, #0 + 8031ad2: b2db uxtb r3, r3 + 8031ad4: 461a mov r2, r3 + 8031ad6: 683b ldr r3, [r7, #0] + 8031ad8: 749a strb r2, [r3, #18] macconf->Jabber = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_JD) >> 17) == 0U) ? ENABLE : DISABLE; - 8031a9a: 687b ldr r3, [r7, #4] - 8031a9c: 681b ldr r3, [r3, #0] - 8031a9e: 681b ldr r3, [r3, #0] - 8031aa0: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8031aa4: 2b00 cmp r3, #0 - 8031aa6: bf0c ite eq - 8031aa8: 2301 moveq r3, #1 - 8031aaa: 2300 movne r3, #0 - 8031aac: b2db uxtb r3, r3 - 8031aae: 461a mov r2, r3 - 8031ab0: 683b ldr r3, [r7, #0] - 8031ab2: 745a strb r2, [r3, #17] + 8031ada: 687b ldr r3, [r7, #4] + 8031adc: 681b ldr r3, [r3, #0] + 8031ade: 681b ldr r3, [r3, #0] + 8031ae0: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8031ae4: 2b00 cmp r3, #0 + 8031ae6: bf0c ite eq + 8031ae8: 2301 moveq r3, #1 + 8031aea: 2300 movne r3, #0 + 8031aec: b2db uxtb r3, r3 + 8031aee: 461a mov r2, r3 + 8031af0: 683b ldr r3, [r7, #0] + 8031af2: 745a strb r2, [r3, #17] macconf->Watchdog = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_WD) >> 19) == 0U) ? ENABLE : DISABLE; - 8031ab4: 687b ldr r3, [r7, #4] - 8031ab6: 681b ldr r3, [r3, #0] - 8031ab8: 681b ldr r3, [r3, #0] - 8031aba: f403 2300 and.w r3, r3, #524288 ; 0x80000 - 8031abe: 2b00 cmp r3, #0 - 8031ac0: bf0c ite eq - 8031ac2: 2301 moveq r3, #1 - 8031ac4: 2300 movne r3, #0 - 8031ac6: b2db uxtb r3, r3 - 8031ac8: 461a mov r2, r3 - 8031aca: 683b ldr r3, [r7, #0] - 8031acc: 741a strb r2, [r3, #16] + 8031af4: 687b ldr r3, [r7, #4] + 8031af6: 681b ldr r3, [r3, #0] + 8031af8: 681b ldr r3, [r3, #0] + 8031afa: f403 2300 and.w r3, r3, #524288 ; 0x80000 + 8031afe: 2b00 cmp r3, #0 + 8031b00: bf0c ite eq + 8031b02: 2301 moveq r3, #1 + 8031b04: 2300 movne r3, #0 + 8031b06: b2db uxtb r3, r3 + 8031b08: 461a mov r2, r3 + 8031b0a: 683b ldr r3, [r7, #0] + 8031b0c: 741a strb r2, [r3, #16] macconf->AutomaticPadCRCStrip = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_ACS) >> 20) > 0U) ? ENABLE : DISABLE; - 8031ace: 687b ldr r3, [r7, #4] - 8031ad0: 681b ldr r3, [r3, #0] - 8031ad2: 681b ldr r3, [r3, #0] - 8031ad4: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 8031ad8: 2b00 cmp r3, #0 - 8031ada: bf14 ite ne - 8031adc: 2301 movne r3, #1 - 8031ade: 2300 moveq r3, #0 - 8031ae0: b2db uxtb r3, r3 - 8031ae2: 461a mov r2, r3 - 8031ae4: 683b ldr r3, [r7, #0] - 8031ae6: 73da strb r2, [r3, #15] + 8031b0e: 687b ldr r3, [r7, #4] + 8031b10: 681b ldr r3, [r3, #0] + 8031b12: 681b ldr r3, [r3, #0] + 8031b14: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 8031b18: 2b00 cmp r3, #0 + 8031b1a: bf14 ite ne + 8031b1c: 2301 movne r3, #1 + 8031b1e: 2300 moveq r3, #0 + 8031b20: b2db uxtb r3, r3 + 8031b22: 461a mov r2, r3 + 8031b24: 683b ldr r3, [r7, #0] + 8031b26: 73da strb r2, [r3, #15] macconf->CRCStripTypePacket = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_CST) >> 21) > 0U) ? ENABLE : DISABLE; - 8031ae8: 687b ldr r3, [r7, #4] - 8031aea: 681b ldr r3, [r3, #0] - 8031aec: 681b ldr r3, [r3, #0] - 8031aee: f403 1300 and.w r3, r3, #2097152 ; 0x200000 - 8031af2: 2b00 cmp r3, #0 - 8031af4: bf14 ite ne - 8031af6: 2301 movne r3, #1 - 8031af8: 2300 moveq r3, #0 - 8031afa: b2db uxtb r3, r3 - 8031afc: 461a mov r2, r3 - 8031afe: 683b ldr r3, [r7, #0] - 8031b00: 739a strb r2, [r3, #14] + 8031b28: 687b ldr r3, [r7, #4] + 8031b2a: 681b ldr r3, [r3, #0] + 8031b2c: 681b ldr r3, [r3, #0] + 8031b2e: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 8031b32: 2b00 cmp r3, #0 + 8031b34: bf14 ite ne + 8031b36: 2301 movne r3, #1 + 8031b38: 2300 moveq r3, #0 + 8031b3a: b2db uxtb r3, r3 + 8031b3c: 461a mov r2, r3 + 8031b3e: 683b ldr r3, [r7, #0] + 8031b40: 739a strb r2, [r3, #14] macconf->Support2KPacket = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_S2KP) >> 22) > 0U) ? ENABLE : DISABLE; - 8031b02: 687b ldr r3, [r7, #4] - 8031b04: 681b ldr r3, [r3, #0] - 8031b06: 681b ldr r3, [r3, #0] - 8031b08: f403 0380 and.w r3, r3, #4194304 ; 0x400000 - 8031b0c: 2b00 cmp r3, #0 - 8031b0e: bf14 ite ne - 8031b10: 2301 movne r3, #1 - 8031b12: 2300 moveq r3, #0 - 8031b14: b2db uxtb r3, r3 - 8031b16: 461a mov r2, r3 - 8031b18: 683b ldr r3, [r7, #0] - 8031b1a: 735a strb r2, [r3, #13] + 8031b42: 687b ldr r3, [r7, #4] + 8031b44: 681b ldr r3, [r3, #0] + 8031b46: 681b ldr r3, [r3, #0] + 8031b48: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 8031b4c: 2b00 cmp r3, #0 + 8031b4e: bf14 ite ne + 8031b50: 2301 movne r3, #1 + 8031b52: 2300 moveq r3, #0 + 8031b54: b2db uxtb r3, r3 + 8031b56: 461a mov r2, r3 + 8031b58: 683b ldr r3, [r7, #0] + 8031b5a: 735a strb r2, [r3, #13] macconf->GiantPacketSizeLimitControl = ((READ_BIT(heth->Instance->MACCR, - 8031b1c: 687b ldr r3, [r7, #4] - 8031b1e: 681b ldr r3, [r3, #0] - 8031b20: 681b ldr r3, [r3, #0] + 8031b5c: 687b ldr r3, [r7, #4] + 8031b5e: 681b ldr r3, [r3, #0] + 8031b60: 681b ldr r3, [r3, #0] ETH_MACCR_GPSLCE) >> 23) > 0U) ? ENABLE : DISABLE; - 8031b22: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 8031b26: 2b00 cmp r3, #0 - 8031b28: bf14 ite ne - 8031b2a: 2301 movne r3, #1 - 8031b2c: 2300 moveq r3, #0 - 8031b2e: b2db uxtb r3, r3 - 8031b30: 461a mov r2, r3 + 8031b62: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 8031b66: 2b00 cmp r3, #0 + 8031b68: bf14 ite ne + 8031b6a: 2301 movne r3, #1 + 8031b6c: 2300 moveq r3, #0 + 8031b6e: b2db uxtb r3, r3 + 8031b70: 461a mov r2, r3 macconf->GiantPacketSizeLimitControl = ((READ_BIT(heth->Instance->MACCR, - 8031b32: 683b ldr r3, [r7, #0] - 8031b34: 731a strb r2, [r3, #12] + 8031b72: 683b ldr r3, [r7, #0] + 8031b74: 731a strb r2, [r3, #12] macconf->InterPacketGapVal = READ_BIT(heth->Instance->MACCR, ETH_MACCR_IPG); - 8031b36: 687b ldr r3, [r7, #4] - 8031b38: 681b ldr r3, [r3, #0] - 8031b3a: 681b ldr r3, [r3, #0] - 8031b3c: f003 62e0 and.w r2, r3, #117440512 ; 0x7000000 - 8031b40: 683b ldr r3, [r7, #0] - 8031b42: 609a str r2, [r3, #8] + 8031b76: 687b ldr r3, [r7, #4] + 8031b78: 681b ldr r3, [r3, #0] + 8031b7a: 681b ldr r3, [r3, #0] + 8031b7c: f003 62e0 and.w r2, r3, #117440512 ; 0x7000000 + 8031b80: 683b ldr r3, [r7, #0] + 8031b82: 609a str r2, [r3, #8] macconf->ChecksumOffload = ((READ_BIT(heth->Instance->MACCR, ETH_MACCR_IPC) >> 27) > 0U) ? ENABLE : DISABLE; - 8031b44: 687b ldr r3, [r7, #4] - 8031b46: 681b ldr r3, [r3, #0] - 8031b48: 681b ldr r3, [r3, #0] - 8031b4a: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8031b4e: 2b00 cmp r3, #0 - 8031b50: bf14 ite ne - 8031b52: 2301 movne r3, #1 - 8031b54: 2300 moveq r3, #0 - 8031b56: b2db uxtb r3, r3 - 8031b58: 461a mov r2, r3 - 8031b5a: 683b ldr r3, [r7, #0] - 8031b5c: 711a strb r2, [r3, #4] + 8031b84: 687b ldr r3, [r7, #4] + 8031b86: 681b ldr r3, [r3, #0] + 8031b88: 681b ldr r3, [r3, #0] + 8031b8a: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8031b8e: 2b00 cmp r3, #0 + 8031b90: bf14 ite ne + 8031b92: 2301 movne r3, #1 + 8031b94: 2300 moveq r3, #0 + 8031b96: b2db uxtb r3, r3 + 8031b98: 461a mov r2, r3 + 8031b9a: 683b ldr r3, [r7, #0] + 8031b9c: 711a strb r2, [r3, #4] macconf->SourceAddrControl = READ_BIT(heth->Instance->MACCR, ETH_MACCR_SARC); - 8031b5e: 687b ldr r3, [r7, #4] - 8031b60: 681b ldr r3, [r3, #0] - 8031b62: 681b ldr r3, [r3, #0] - 8031b64: f003 42e0 and.w r2, r3, #1879048192 ; 0x70000000 - 8031b68: 683b ldr r3, [r7, #0] - 8031b6a: 601a str r2, [r3, #0] + 8031b9e: 687b ldr r3, [r7, #4] + 8031ba0: 681b ldr r3, [r3, #0] + 8031ba2: 681b ldr r3, [r3, #0] + 8031ba4: f003 42e0 and.w r2, r3, #1879048192 ; 0x70000000 + 8031ba8: 683b ldr r3, [r7, #0] + 8031baa: 601a str r2, [r3, #0] macconf->GiantPacketSizeLimit = READ_BIT(heth->Instance->MACECR, ETH_MACECR_GPSL); - 8031b6c: 687b ldr r3, [r7, #4] - 8031b6e: 681b ldr r3, [r3, #0] - 8031b70: 685b ldr r3, [r3, #4] - 8031b72: f3c3 020d ubfx r2, r3, #0, #14 - 8031b76: 683b ldr r3, [r7, #0] - 8031b78: 635a str r2, [r3, #52] ; 0x34 + 8031bac: 687b ldr r3, [r7, #4] + 8031bae: 681b ldr r3, [r3, #0] + 8031bb0: 685b ldr r3, [r3, #4] + 8031bb2: f3c3 020d ubfx r2, r3, #0, #14 + 8031bb6: 683b ldr r3, [r7, #0] + 8031bb8: 635a str r2, [r3, #52] ; 0x34 macconf->CRCCheckingRxPackets = ((READ_BIT(heth->Instance->MACECR, ETH_MACECR_DCRCC) >> 16) == 0U) ? ENABLE : DISABLE; - 8031b7a: 687b ldr r3, [r7, #4] - 8031b7c: 681b ldr r3, [r3, #0] - 8031b7e: 685b ldr r3, [r3, #4] - 8031b80: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8031b84: 2b00 cmp r3, #0 - 8031b86: bf0c ite eq - 8031b88: 2301 moveq r3, #1 - 8031b8a: 2300 movne r3, #0 - 8031b8c: b2db uxtb r3, r3 - 8031b8e: 461a mov r2, r3 - 8031b90: 683b ldr r3, [r7, #0] - 8031b92: f883 2032 strb.w r2, [r3, #50] ; 0x32 + 8031bba: 687b ldr r3, [r7, #4] + 8031bbc: 681b ldr r3, [r3, #0] + 8031bbe: 685b ldr r3, [r3, #4] + 8031bc0: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8031bc4: 2b00 cmp r3, #0 + 8031bc6: bf0c ite eq + 8031bc8: 2301 moveq r3, #1 + 8031bca: 2300 movne r3, #0 + 8031bcc: b2db uxtb r3, r3 + 8031bce: 461a mov r2, r3 + 8031bd0: 683b ldr r3, [r7, #0] + 8031bd2: f883 2032 strb.w r2, [r3, #50] ; 0x32 macconf->SlowProtocolDetect = ((READ_BIT(heth->Instance->MACECR, ETH_MACECR_SPEN) >> 17) > 0U) ? ENABLE : DISABLE; - 8031b96: 687b ldr r3, [r7, #4] - 8031b98: 681b ldr r3, [r3, #0] - 8031b9a: 685b ldr r3, [r3, #4] - 8031b9c: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8031ba0: 2b00 cmp r3, #0 - 8031ba2: bf14 ite ne - 8031ba4: 2301 movne r3, #1 - 8031ba6: 2300 moveq r3, #0 - 8031ba8: b2db uxtb r3, r3 - 8031baa: 461a mov r2, r3 - 8031bac: 683b ldr r3, [r7, #0] - 8031bae: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 8031bd6: 687b ldr r3, [r7, #4] + 8031bd8: 681b ldr r3, [r3, #0] + 8031bda: 685b ldr r3, [r3, #4] + 8031bdc: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8031be0: 2b00 cmp r3, #0 + 8031be2: bf14 ite ne + 8031be4: 2301 movne r3, #1 + 8031be6: 2300 moveq r3, #0 + 8031be8: b2db uxtb r3, r3 + 8031bea: 461a mov r2, r3 + 8031bec: 683b ldr r3, [r7, #0] + 8031bee: f883 2031 strb.w r2, [r3, #49] ; 0x31 macconf->UnicastSlowProtocolPacketDetect = ((READ_BIT(heth->Instance->MACECR, - 8031bb2: 687b ldr r3, [r7, #4] - 8031bb4: 681b ldr r3, [r3, #0] - 8031bb6: 685b ldr r3, [r3, #4] + 8031bf2: 687b ldr r3, [r7, #4] + 8031bf4: 681b ldr r3, [r3, #0] + 8031bf6: 685b ldr r3, [r3, #4] ETH_MACECR_USP) >> 18) > 0U) ? ENABLE : DISABLE; - 8031bb8: f403 2380 and.w r3, r3, #262144 ; 0x40000 - 8031bbc: 2b00 cmp r3, #0 - 8031bbe: bf14 ite ne - 8031bc0: 2301 movne r3, #1 - 8031bc2: 2300 moveq r3, #0 - 8031bc4: b2db uxtb r3, r3 - 8031bc6: 461a mov r2, r3 + 8031bf8: f403 2380 and.w r3, r3, #262144 ; 0x40000 + 8031bfc: 2b00 cmp r3, #0 + 8031bfe: bf14 ite ne + 8031c00: 2301 movne r3, #1 + 8031c02: 2300 moveq r3, #0 + 8031c04: b2db uxtb r3, r3 + 8031c06: 461a mov r2, r3 macconf->UnicastSlowProtocolPacketDetect = ((READ_BIT(heth->Instance->MACECR, - 8031bc8: 683b ldr r3, [r7, #0] - 8031bca: f883 2030 strb.w r2, [r3, #48] ; 0x30 + 8031c08: 683b ldr r3, [r7, #0] + 8031c0a: f883 2030 strb.w r2, [r3, #48] ; 0x30 macconf->ExtendedInterPacketGap = ((READ_BIT(heth->Instance->MACECR, ETH_MACECR_EIPGEN) >> 24) > 0U) - 8031bce: 687b ldr r3, [r7, #4] - 8031bd0: 681b ldr r3, [r3, #0] - 8031bd2: 685b ldr r3, [r3, #4] - 8031bd4: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 8031c0e: 687b ldr r3, [r7, #4] + 8031c10: 681b ldr r3, [r3, #0] + 8031c12: 685b ldr r3, [r3, #4] + 8031c14: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 ? ENABLE : DISABLE; - 8031bd8: 2b00 cmp r3, #0 - 8031bda: bf14 ite ne - 8031bdc: 2301 movne r3, #1 - 8031bde: 2300 moveq r3, #0 - 8031be0: b2db uxtb r3, r3 - 8031be2: 461a mov r2, r3 + 8031c18: 2b00 cmp r3, #0 + 8031c1a: bf14 ite ne + 8031c1c: 2301 movne r3, #1 + 8031c1e: 2300 moveq r3, #0 + 8031c20: b2db uxtb r3, r3 + 8031c22: 461a mov r2, r3 macconf->ExtendedInterPacketGap = ((READ_BIT(heth->Instance->MACECR, ETH_MACECR_EIPGEN) >> 24) > 0U) - 8031be4: 683b ldr r3, [r7, #0] - 8031be6: f883 2038 strb.w r2, [r3, #56] ; 0x38 + 8031c24: 683b ldr r3, [r7, #0] + 8031c26: f883 2038 strb.w r2, [r3, #56] ; 0x38 macconf->ExtendedInterPacketGapVal = READ_BIT(heth->Instance->MACECR, ETH_MACECR_EIPG) >> 25; - 8031bea: 687b ldr r3, [r7, #4] - 8031bec: 681b ldr r3, [r3, #0] - 8031bee: 685b ldr r3, [r3, #4] - 8031bf0: 0e5b lsrs r3, r3, #25 - 8031bf2: f003 021f and.w r2, r3, #31 - 8031bf6: 683b ldr r3, [r7, #0] - 8031bf8: 63da str r2, [r3, #60] ; 0x3c + 8031c2a: 687b ldr r3, [r7, #4] + 8031c2c: 681b ldr r3, [r3, #0] + 8031c2e: 685b ldr r3, [r3, #4] + 8031c30: 0e5b lsrs r3, r3, #25 + 8031c32: f003 021f and.w r2, r3, #31 + 8031c36: 683b ldr r3, [r7, #0] + 8031c38: 63da str r2, [r3, #60] ; 0x3c macconf->ProgrammableWatchdog = ((READ_BIT(heth->Instance->MACWTR, ETH_MACWTR_PWE) >> 8) > 0U) ? ENABLE : DISABLE; - 8031bfa: 687b ldr r3, [r7, #4] - 8031bfc: 681b ldr r3, [r3, #0] - 8031bfe: 68db ldr r3, [r3, #12] - 8031c00: f403 7380 and.w r3, r3, #256 ; 0x100 - 8031c04: 2b00 cmp r3, #0 - 8031c06: bf14 ite ne - 8031c08: 2301 movne r3, #1 - 8031c0a: 2300 moveq r3, #0 - 8031c0c: b2db uxtb r3, r3 - 8031c0e: 461a mov r2, r3 - 8031c10: 683b ldr r3, [r7, #0] - 8031c12: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8031c3a: 687b ldr r3, [r7, #4] + 8031c3c: 681b ldr r3, [r3, #0] + 8031c3e: 68db ldr r3, [r3, #12] + 8031c40: f403 7380 and.w r3, r3, #256 ; 0x100 + 8031c44: 2b00 cmp r3, #0 + 8031c46: bf14 ite ne + 8031c48: 2301 movne r3, #1 + 8031c4a: 2300 moveq r3, #0 + 8031c4c: b2db uxtb r3, r3 + 8031c4e: 461a mov r2, r3 + 8031c50: 683b ldr r3, [r7, #0] + 8031c52: f883 2040 strb.w r2, [r3, #64] ; 0x40 macconf->WatchdogTimeout = READ_BIT(heth->Instance->MACWTR, ETH_MACWTR_WTO); - 8031c16: 687b ldr r3, [r7, #4] - 8031c18: 681b ldr r3, [r3, #0] - 8031c1a: 68db ldr r3, [r3, #12] - 8031c1c: f003 020f and.w r2, r3, #15 - 8031c20: 683b ldr r3, [r7, #0] - 8031c22: 645a str r2, [r3, #68] ; 0x44 + 8031c56: 687b ldr r3, [r7, #4] + 8031c58: 681b ldr r3, [r3, #0] + 8031c5a: 68db ldr r3, [r3, #12] + 8031c5c: f003 020f and.w r2, r3, #15 + 8031c60: 683b ldr r3, [r7, #0] + 8031c62: 645a str r2, [r3, #68] ; 0x44 macconf->TransmitFlowControl = ((READ_BIT(heth->Instance->MACTFCR, ETH_MACTFCR_TFE) >> 1) > 0U) ? ENABLE : DISABLE; - 8031c24: 687b ldr r3, [r7, #4] - 8031c26: 681b ldr r3, [r3, #0] - 8031c28: 6f1b ldr r3, [r3, #112] ; 0x70 - 8031c2a: f003 0302 and.w r3, r3, #2 - 8031c2e: 2b00 cmp r3, #0 - 8031c30: bf14 ite ne - 8031c32: 2301 movne r3, #1 - 8031c34: 2300 moveq r3, #0 - 8031c36: b2db uxtb r3, r3 - 8031c38: 461a mov r2, r3 - 8031c3a: 683b ldr r3, [r7, #0] - 8031c3c: f883 2054 strb.w r2, [r3, #84] ; 0x54 + 8031c64: 687b ldr r3, [r7, #4] + 8031c66: 681b ldr r3, [r3, #0] + 8031c68: 6f1b ldr r3, [r3, #112] ; 0x70 + 8031c6a: f003 0302 and.w r3, r3, #2 + 8031c6e: 2b00 cmp r3, #0 + 8031c70: bf14 ite ne + 8031c72: 2301 movne r3, #1 + 8031c74: 2300 moveq r3, #0 + 8031c76: b2db uxtb r3, r3 + 8031c78: 461a mov r2, r3 + 8031c7a: 683b ldr r3, [r7, #0] + 8031c7c: f883 2054 strb.w r2, [r3, #84] ; 0x54 macconf->ZeroQuantaPause = ((READ_BIT(heth->Instance->MACTFCR, ETH_MACTFCR_DZPQ) >> 7) == 0U) ? ENABLE : DISABLE; - 8031c40: 687b ldr r3, [r7, #4] - 8031c42: 681b ldr r3, [r3, #0] - 8031c44: 6f1b ldr r3, [r3, #112] ; 0x70 - 8031c46: f003 0380 and.w r3, r3, #128 ; 0x80 - 8031c4a: 2b00 cmp r3, #0 - 8031c4c: bf0c ite eq - 8031c4e: 2301 moveq r3, #1 - 8031c50: 2300 movne r3, #0 - 8031c52: b2db uxtb r3, r3 - 8031c54: 461a mov r2, r3 - 8031c56: 683b ldr r3, [r7, #0] - 8031c58: f883 204c strb.w r2, [r3, #76] ; 0x4c + 8031c80: 687b ldr r3, [r7, #4] + 8031c82: 681b ldr r3, [r3, #0] + 8031c84: 6f1b ldr r3, [r3, #112] ; 0x70 + 8031c86: f003 0380 and.w r3, r3, #128 ; 0x80 + 8031c8a: 2b00 cmp r3, #0 + 8031c8c: bf0c ite eq + 8031c8e: 2301 moveq r3, #1 + 8031c90: 2300 movne r3, #0 + 8031c92: b2db uxtb r3, r3 + 8031c94: 461a mov r2, r3 + 8031c96: 683b ldr r3, [r7, #0] + 8031c98: f883 204c strb.w r2, [r3, #76] ; 0x4c macconf->PauseLowThreshold = READ_BIT(heth->Instance->MACTFCR, ETH_MACTFCR_PLT); - 8031c5c: 687b ldr r3, [r7, #4] - 8031c5e: 681b ldr r3, [r3, #0] - 8031c60: 6f1b ldr r3, [r3, #112] ; 0x70 - 8031c62: f003 0270 and.w r2, r3, #112 ; 0x70 - 8031c66: 683b ldr r3, [r7, #0] - 8031c68: 651a str r2, [r3, #80] ; 0x50 + 8031c9c: 687b ldr r3, [r7, #4] + 8031c9e: 681b ldr r3, [r3, #0] + 8031ca0: 6f1b ldr r3, [r3, #112] ; 0x70 + 8031ca2: f003 0270 and.w r2, r3, #112 ; 0x70 + 8031ca6: 683b ldr r3, [r7, #0] + 8031ca8: 651a str r2, [r3, #80] ; 0x50 macconf->PauseTime = (READ_BIT(heth->Instance->MACTFCR, ETH_MACTFCR_PT) >> 16); - 8031c6a: 687b ldr r3, [r7, #4] - 8031c6c: 681b ldr r3, [r3, #0] - 8031c6e: 6f1b ldr r3, [r3, #112] ; 0x70 - 8031c70: 0c1b lsrs r3, r3, #16 - 8031c72: b29a uxth r2, r3 - 8031c74: 683b ldr r3, [r7, #0] - 8031c76: 649a str r2, [r3, #72] ; 0x48 + 8031caa: 687b ldr r3, [r7, #4] + 8031cac: 681b ldr r3, [r3, #0] + 8031cae: 6f1b ldr r3, [r3, #112] ; 0x70 + 8031cb0: 0c1b lsrs r3, r3, #16 + 8031cb2: b29a uxth r2, r3 + 8031cb4: 683b ldr r3, [r7, #0] + 8031cb6: 649a str r2, [r3, #72] ; 0x48 macconf->ReceiveFlowControl = (READ_BIT(heth->Instance->MACRFCR, ETH_MACRFCR_RFE) > 0U) ? ENABLE : DISABLE; - 8031c78: 687b ldr r3, [r7, #4] - 8031c7a: 681b ldr r3, [r3, #0] - 8031c7c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8031c80: f003 0301 and.w r3, r3, #1 - 8031c84: 2b00 cmp r3, #0 - 8031c86: bf14 ite ne - 8031c88: 2301 movne r3, #1 - 8031c8a: 2300 moveq r3, #0 - 8031c8c: b2db uxtb r3, r3 - 8031c8e: 461a mov r2, r3 - 8031c90: 683b ldr r3, [r7, #0] - 8031c92: f883 2056 strb.w r2, [r3, #86] ; 0x56 + 8031cb8: 687b ldr r3, [r7, #4] + 8031cba: 681b ldr r3, [r3, #0] + 8031cbc: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8031cc0: f003 0301 and.w r3, r3, #1 + 8031cc4: 2b00 cmp r3, #0 + 8031cc6: bf14 ite ne + 8031cc8: 2301 movne r3, #1 + 8031cca: 2300 moveq r3, #0 + 8031ccc: b2db uxtb r3, r3 + 8031cce: 461a mov r2, r3 + 8031cd0: 683b ldr r3, [r7, #0] + 8031cd2: f883 2056 strb.w r2, [r3, #86] ; 0x56 macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACRFCR, ETH_MACRFCR_UP) >> 1) > 0U) - 8031c96: 687b ldr r3, [r7, #4] - 8031c98: 681b ldr r3, [r3, #0] - 8031c9a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8031c9e: f003 0302 and.w r3, r3, #2 + 8031cd6: 687b ldr r3, [r7, #4] + 8031cd8: 681b ldr r3, [r3, #0] + 8031cda: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8031cde: f003 0302 and.w r3, r3, #2 ? ENABLE : DISABLE; - 8031ca2: 2b00 cmp r3, #0 - 8031ca4: bf14 ite ne - 8031ca6: 2301 movne r3, #1 - 8031ca8: 2300 moveq r3, #0 - 8031caa: b2db uxtb r3, r3 - 8031cac: 461a mov r2, r3 + 8031ce2: 2b00 cmp r3, #0 + 8031ce4: bf14 ite ne + 8031ce6: 2301 movne r3, #1 + 8031ce8: 2300 moveq r3, #0 + 8031cea: b2db uxtb r3, r3 + 8031cec: 461a mov r2, r3 macconf->UnicastPausePacketDetect = ((READ_BIT(heth->Instance->MACRFCR, ETH_MACRFCR_UP) >> 1) > 0U) - 8031cae: 683b ldr r3, [r7, #0] - 8031cb0: f883 2055 strb.w r2, [r3, #85] ; 0x55 + 8031cee: 683b ldr r3, [r7, #0] + 8031cf0: f883 2055 strb.w r2, [r3, #85] ; 0x55 macconf->TransmitQueueMode = READ_BIT(heth->Instance->MTLTQOMR, (ETH_MTLTQOMR_TTC | ETH_MTLTQOMR_TSF)); - 8031cb4: 687b ldr r3, [r7, #4] - 8031cb6: 681b ldr r3, [r3, #0] - 8031cb8: f8d3 3d00 ldr.w r3, [r3, #3328] ; 0xd00 - 8031cbc: f003 0272 and.w r2, r3, #114 ; 0x72 - 8031cc0: 683b ldr r3, [r7, #0] - 8031cc2: 659a str r2, [r3, #88] ; 0x58 + 8031cf4: 687b ldr r3, [r7, #4] + 8031cf6: 681b ldr r3, [r3, #0] + 8031cf8: f8d3 3d00 ldr.w r3, [r3, #3328] ; 0xd00 + 8031cfc: f003 0272 and.w r2, r3, #114 ; 0x72 + 8031d00: 683b ldr r3, [r7, #0] + 8031d02: 659a str r2, [r3, #88] ; 0x58 macconf->ReceiveQueueMode = READ_BIT(heth->Instance->MTLRQOMR, (ETH_MTLRQOMR_RTC | ETH_MTLRQOMR_RSF)); - 8031cc4: 687b ldr r3, [r7, #4] - 8031cc6: 681b ldr r3, [r3, #0] - 8031cc8: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 - 8031ccc: f003 0223 and.w r2, r3, #35 ; 0x23 - 8031cd0: 683b ldr r3, [r7, #0] - 8031cd2: 65da str r2, [r3, #92] ; 0x5c + 8031d04: 687b ldr r3, [r7, #4] + 8031d06: 681b ldr r3, [r3, #0] + 8031d08: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 + 8031d0c: f003 0223 and.w r2, r3, #35 ; 0x23 + 8031d10: 683b ldr r3, [r7, #0] + 8031d12: 65da str r2, [r3, #92] ; 0x5c macconf->ForwardRxUndersizedGoodPacket = ((READ_BIT(heth->Instance->MTLRQOMR, - 8031cd4: 687b ldr r3, [r7, #4] - 8031cd6: 681b ldr r3, [r3, #0] - 8031cd8: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 + 8031d14: 687b ldr r3, [r7, #4] + 8031d16: 681b ldr r3, [r3, #0] + 8031d18: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 ETH_MTLRQOMR_FUP) >> 3) > 0U) ? ENABLE : DISABLE; - 8031cdc: f003 0308 and.w r3, r3, #8 - 8031ce0: 2b00 cmp r3, #0 - 8031ce2: bf14 ite ne - 8031ce4: 2301 movne r3, #1 - 8031ce6: 2300 moveq r3, #0 - 8031ce8: b2db uxtb r3, r3 - 8031cea: 461a mov r2, r3 + 8031d1c: f003 0308 and.w r3, r3, #8 + 8031d20: 2b00 cmp r3, #0 + 8031d22: bf14 ite ne + 8031d24: 2301 movne r3, #1 + 8031d26: 2300 moveq r3, #0 + 8031d28: b2db uxtb r3, r3 + 8031d2a: 461a mov r2, r3 macconf->ForwardRxUndersizedGoodPacket = ((READ_BIT(heth->Instance->MTLRQOMR, - 8031cec: 683b ldr r3, [r7, #0] - 8031cee: f883 2062 strb.w r2, [r3, #98] ; 0x62 + 8031d2c: 683b ldr r3, [r7, #0] + 8031d2e: f883 2062 strb.w r2, [r3, #98] ; 0x62 macconf->ForwardRxErrorPacket = ((READ_BIT(heth->Instance->MTLRQOMR, ETH_MTLRQOMR_FEP) >> 4) > 0U) ? ENABLE : DISABLE; - 8031cf2: 687b ldr r3, [r7, #4] - 8031cf4: 681b ldr r3, [r3, #0] - 8031cf6: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 - 8031cfa: f003 0310 and.w r3, r3, #16 - 8031cfe: 2b00 cmp r3, #0 - 8031d00: bf14 ite ne - 8031d02: 2301 movne r3, #1 - 8031d04: 2300 moveq r3, #0 - 8031d06: b2db uxtb r3, r3 - 8031d08: 461a mov r2, r3 - 8031d0a: 683b ldr r3, [r7, #0] - 8031d0c: f883 2061 strb.w r2, [r3, #97] ; 0x61 + 8031d32: 687b ldr r3, [r7, #4] + 8031d34: 681b ldr r3, [r3, #0] + 8031d36: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 + 8031d3a: f003 0310 and.w r3, r3, #16 + 8031d3e: 2b00 cmp r3, #0 + 8031d40: bf14 ite ne + 8031d42: 2301 movne r3, #1 + 8031d44: 2300 moveq r3, #0 + 8031d46: b2db uxtb r3, r3 + 8031d48: 461a mov r2, r3 + 8031d4a: 683b ldr r3, [r7, #0] + 8031d4c: f883 2061 strb.w r2, [r3, #97] ; 0x61 macconf->DropTCPIPChecksumErrorPacket = ((READ_BIT(heth->Instance->MTLRQOMR, - 8031d10: 687b ldr r3, [r7, #4] - 8031d12: 681b ldr r3, [r3, #0] - 8031d14: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 + 8031d50: 687b ldr r3, [r7, #4] + 8031d52: 681b ldr r3, [r3, #0] + 8031d54: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 ETH_MTLRQOMR_DISTCPEF) >> 6) == 0U) ? ENABLE : DISABLE; - 8031d18: f003 0340 and.w r3, r3, #64 ; 0x40 - 8031d1c: 2b00 cmp r3, #0 - 8031d1e: bf0c ite eq - 8031d20: 2301 moveq r3, #1 - 8031d22: 2300 movne r3, #0 - 8031d24: b2db uxtb r3, r3 - 8031d26: 461a mov r2, r3 + 8031d58: f003 0340 and.w r3, r3, #64 ; 0x40 + 8031d5c: 2b00 cmp r3, #0 + 8031d5e: bf0c ite eq + 8031d60: 2301 moveq r3, #1 + 8031d62: 2300 movne r3, #0 + 8031d64: b2db uxtb r3, r3 + 8031d66: 461a mov r2, r3 macconf->DropTCPIPChecksumErrorPacket = ((READ_BIT(heth->Instance->MTLRQOMR, - 8031d28: 683b ldr r3, [r7, #0] - 8031d2a: f883 2060 strb.w r2, [r3, #96] ; 0x60 + 8031d68: 683b ldr r3, [r7, #0] + 8031d6a: f883 2060 strb.w r2, [r3, #96] ; 0x60 return HAL_OK; - 8031d2e: 2300 movs r3, #0 + 8031d6e: 2300 movs r3, #0 } - 8031d30: 4618 mov r0, r3 - 8031d32: 370c adds r7, #12 - 8031d34: 46bd mov sp, r7 - 8031d36: f85d 7b04 ldr.w r7, [sp], #4 - 8031d3a: 4770 bx lr + 8031d70: 4618 mov r0, r3 + 8031d72: 370c adds r7, #12 + 8031d74: 46bd mov sp, r7 + 8031d76: f85d 7b04 ldr.w r7, [sp], #4 + 8031d7a: 4770 bx lr -08031d3c : +08031d7c : * @param macconf: pointer to a ETH_MACConfigTypeDef structure that contains * the configuration of the MAC. * @retval HAL status */ HAL_StatusTypeDef HAL_ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) { - 8031d3c: b580 push {r7, lr} - 8031d3e: b082 sub sp, #8 - 8031d40: af00 add r7, sp, #0 - 8031d42: 6078 str r0, [r7, #4] - 8031d44: 6039 str r1, [r7, #0] + 8031d7c: b580 push {r7, lr} + 8031d7e: b082 sub sp, #8 + 8031d80: af00 add r7, sp, #0 + 8031d82: 6078 str r0, [r7, #4] + 8031d84: 6039 str r1, [r7, #0] if (macconf == NULL) - 8031d46: 683b ldr r3, [r7, #0] - 8031d48: 2b00 cmp r3, #0 - 8031d4a: d101 bne.n 8031d50 + 8031d86: 683b ldr r3, [r7, #0] + 8031d88: 2b00 cmp r3, #0 + 8031d8a: d101 bne.n 8031d90 { return HAL_ERROR; - 8031d4c: 2301 movs r3, #1 - 8031d4e: e00b b.n 8031d68 + 8031d8c: 2301 movs r3, #1 + 8031d8e: e00b b.n 8031da8 } if (heth->gState == HAL_ETH_STATE_READY) - 8031d50: 687b ldr r3, [r7, #4] - 8031d52: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8031d56: 2b10 cmp r3, #16 - 8031d58: d105 bne.n 8031d66 + 8031d90: 687b ldr r3, [r7, #4] + 8031d92: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8031d96: 2b10 cmp r3, #16 + 8031d98: d105 bne.n 8031da6 { ETH_SetMACConfig(heth, macconf); - 8031d5a: 6839 ldr r1, [r7, #0] - 8031d5c: 6878 ldr r0, [r7, #4] - 8031d5e: f000 f85f bl 8031e20 + 8031d9a: 6839 ldr r1, [r7, #0] + 8031d9c: 6878 ldr r0, [r7, #4] + 8031d9e: f000 f85f bl 8031e60 return HAL_OK; - 8031d62: 2300 movs r3, #0 - 8031d64: e000 b.n 8031d68 + 8031da2: 2300 movs r3, #0 + 8031da4: e000 b.n 8031da8 } else { return HAL_ERROR; - 8031d66: 2301 movs r3, #1 + 8031da6: 2301 movs r3, #1 } } - 8031d68: 4618 mov r0, r3 - 8031d6a: 3708 adds r7, #8 - 8031d6c: 46bd mov sp, r7 - 8031d6e: bd80 pop {r7, pc} + 8031da8: 4618 mov r0, r3 + 8031daa: 3708 adds r7, #8 + 8031dac: 46bd mov sp, r7 + 8031dae: bd80 pop {r7, pc} -08031d70 : +08031db0 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ void HAL_ETH_SetMDIOClockRange(ETH_HandleTypeDef *heth) { - 8031d70: b580 push {r7, lr} - 8031d72: b084 sub sp, #16 - 8031d74: af00 add r7, sp, #0 - 8031d76: 6078 str r0, [r7, #4] + 8031db0: b580 push {r7, lr} + 8031db2: b084 sub sp, #16 + 8031db4: af00 add r7, sp, #0 + 8031db6: 6078 str r0, [r7, #4] uint32_t hclk; uint32_t tmpreg; /* Get the ETHERNET MACMDIOAR value */ tmpreg = (heth->Instance)->MACMDIOAR; - 8031d78: 687b ldr r3, [r7, #4] - 8031d7a: 681b ldr r3, [r3, #0] - 8031d7c: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 - 8031d80: 60fb str r3, [r7, #12] + 8031db8: 687b ldr r3, [r7, #4] + 8031dba: 681b ldr r3, [r3, #0] + 8031dbc: f8d3 3200 ldr.w r3, [r3, #512] ; 0x200 + 8031dc0: 60fb str r3, [r7, #12] /* Clear CSR Clock Range bits */ tmpreg &= ~ETH_MACMDIOAR_CR; - 8031d82: 68fb ldr r3, [r7, #12] - 8031d84: f423 6370 bic.w r3, r3, #3840 ; 0xf00 - 8031d88: 60fb str r3, [r7, #12] + 8031dc2: 68fb ldr r3, [r7, #12] + 8031dc4: f423 6370 bic.w r3, r3, #3840 ; 0xf00 + 8031dc8: 60fb str r3, [r7, #12] /* Get hclk frequency value */ hclk = HAL_RCC_GetHCLKFreq(); - 8031d8a: f004 fa51 bl 8036230 - 8031d8e: 60b8 str r0, [r7, #8] + 8031dca: f004 fa51 bl 8036270 + 8031dce: 60b8 str r0, [r7, #8] /* Set CR bits depending on hclk value */ if ((hclk >= 20000000U) && (hclk < 35000000U)) - 8031d90: 68bb ldr r3, [r7, #8] - 8031d92: 4a1e ldr r2, [pc, #120] ; (8031e0c ) - 8031d94: 4293 cmp r3, r2 - 8031d96: d908 bls.n 8031daa - 8031d98: 68bb ldr r3, [r7, #8] - 8031d9a: 4a1d ldr r2, [pc, #116] ; (8031e10 ) - 8031d9c: 4293 cmp r3, r2 - 8031d9e: d804 bhi.n 8031daa + 8031dd0: 68bb ldr r3, [r7, #8] + 8031dd2: 4a1e ldr r2, [pc, #120] ; (8031e4c ) + 8031dd4: 4293 cmp r3, r2 + 8031dd6: d908 bls.n 8031dea + 8031dd8: 68bb ldr r3, [r7, #8] + 8031dda: 4a1d ldr r2, [pc, #116] ; (8031e50 ) + 8031ddc: 4293 cmp r3, r2 + 8031dde: d804 bhi.n 8031dea { /* CSR Clock Range between 20-35 MHz */ tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV16; - 8031da0: 68fb ldr r3, [r7, #12] - 8031da2: f443 7300 orr.w r3, r3, #512 ; 0x200 - 8031da6: 60fb str r3, [r7, #12] - 8031da8: e027 b.n 8031dfa + 8031de0: 68fb ldr r3, [r7, #12] + 8031de2: f443 7300 orr.w r3, r3, #512 ; 0x200 + 8031de6: 60fb str r3, [r7, #12] + 8031de8: e027 b.n 8031e3a } else if ((hclk >= 35000000U) && (hclk < 60000000U)) - 8031daa: 68bb ldr r3, [r7, #8] - 8031dac: 4a18 ldr r2, [pc, #96] ; (8031e10 ) - 8031dae: 4293 cmp r3, r2 - 8031db0: d908 bls.n 8031dc4 - 8031db2: 68bb ldr r3, [r7, #8] - 8031db4: 4a17 ldr r2, [pc, #92] ; (8031e14 ) - 8031db6: 4293 cmp r3, r2 - 8031db8: d204 bcs.n 8031dc4 + 8031dea: 68bb ldr r3, [r7, #8] + 8031dec: 4a18 ldr r2, [pc, #96] ; (8031e50 ) + 8031dee: 4293 cmp r3, r2 + 8031df0: d908 bls.n 8031e04 + 8031df2: 68bb ldr r3, [r7, #8] + 8031df4: 4a17 ldr r2, [pc, #92] ; (8031e54 ) + 8031df6: 4293 cmp r3, r2 + 8031df8: d204 bcs.n 8031e04 { /* CSR Clock Range between 35-60 MHz */ tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV26; - 8031dba: 68fb ldr r3, [r7, #12] - 8031dbc: f443 7340 orr.w r3, r3, #768 ; 0x300 - 8031dc0: 60fb str r3, [r7, #12] - 8031dc2: e01a b.n 8031dfa + 8031dfa: 68fb ldr r3, [r7, #12] + 8031dfc: f443 7340 orr.w r3, r3, #768 ; 0x300 + 8031e00: 60fb str r3, [r7, #12] + 8031e02: e01a b.n 8031e3a } else if ((hclk >= 60000000U) && (hclk < 100000000U)) - 8031dc4: 68bb ldr r3, [r7, #8] - 8031dc6: 4a13 ldr r2, [pc, #76] ; (8031e14 ) - 8031dc8: 4293 cmp r3, r2 - 8031dca: d303 bcc.n 8031dd4 - 8031dcc: 68bb ldr r3, [r7, #8] - 8031dce: 4a12 ldr r2, [pc, #72] ; (8031e18 ) - 8031dd0: 4293 cmp r3, r2 - 8031dd2: d911 bls.n 8031df8 + 8031e04: 68bb ldr r3, [r7, #8] + 8031e06: 4a13 ldr r2, [pc, #76] ; (8031e54 ) + 8031e08: 4293 cmp r3, r2 + 8031e0a: d303 bcc.n 8031e14 + 8031e0c: 68bb ldr r3, [r7, #8] + 8031e0e: 4a12 ldr r2, [pc, #72] ; (8031e58 ) + 8031e10: 4293 cmp r3, r2 + 8031e12: d911 bls.n 8031e38 { /* CSR Clock Range between 60-100 MHz */ tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV42; } else if ((hclk >= 100000000U) && (hclk < 150000000U)) - 8031dd4: 68bb ldr r3, [r7, #8] - 8031dd6: 4a10 ldr r2, [pc, #64] ; (8031e18 ) - 8031dd8: 4293 cmp r3, r2 - 8031dda: d908 bls.n 8031dee - 8031ddc: 68bb ldr r3, [r7, #8] - 8031dde: 4a0f ldr r2, [pc, #60] ; (8031e1c ) - 8031de0: 4293 cmp r3, r2 - 8031de2: d804 bhi.n 8031dee + 8031e14: 68bb ldr r3, [r7, #8] + 8031e16: 4a10 ldr r2, [pc, #64] ; (8031e58 ) + 8031e18: 4293 cmp r3, r2 + 8031e1a: d908 bls.n 8031e2e + 8031e1c: 68bb ldr r3, [r7, #8] + 8031e1e: 4a0f ldr r2, [pc, #60] ; (8031e5c ) + 8031e20: 4293 cmp r3, r2 + 8031e22: d804 bhi.n 8031e2e { /* CSR Clock Range between 100-150 MHz */ tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV62; - 8031de4: 68fb ldr r3, [r7, #12] - 8031de6: f443 7380 orr.w r3, r3, #256 ; 0x100 - 8031dea: 60fb str r3, [r7, #12] - 8031dec: e005 b.n 8031dfa + 8031e24: 68fb ldr r3, [r7, #12] + 8031e26: f443 7380 orr.w r3, r3, #256 ; 0x100 + 8031e2a: 60fb str r3, [r7, #12] + 8031e2c: e005 b.n 8031e3a } else /* (hclk >= 150000000)&&(hclk <= 200000000) */ { /* CSR Clock Range between 150-200 MHz */ tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV102; - 8031dee: 68fb ldr r3, [r7, #12] - 8031df0: f443 6380 orr.w r3, r3, #1024 ; 0x400 - 8031df4: 60fb str r3, [r7, #12] - 8031df6: e000 b.n 8031dfa + 8031e2e: 68fb ldr r3, [r7, #12] + 8031e30: f443 6380 orr.w r3, r3, #1024 ; 0x400 + 8031e34: 60fb str r3, [r7, #12] + 8031e36: e000 b.n 8031e3a tmpreg |= (uint32_t)ETH_MACMDIOAR_CR_DIV42; - 8031df8: bf00 nop + 8031e38: bf00 nop } /* Configure the CSR Clock Range */ (heth->Instance)->MACMDIOAR = (uint32_t)tmpreg; - 8031dfa: 687b ldr r3, [r7, #4] - 8031dfc: 681b ldr r3, [r3, #0] - 8031dfe: 68fa ldr r2, [r7, #12] - 8031e00: f8c3 2200 str.w r2, [r3, #512] ; 0x200 -} - 8031e04: bf00 nop - 8031e06: 3710 adds r7, #16 - 8031e08: 46bd mov sp, r7 - 8031e0a: bd80 pop {r7, pc} - 8031e0c: 01312cff .word 0x01312cff - 8031e10: 02160ebf .word 0x02160ebf - 8031e14: 03938700 .word 0x03938700 - 8031e18: 05f5e0ff .word 0x05f5e0ff - 8031e1c: 08f0d17f .word 0x08f0d17f - -08031e20 : + 8031e3a: 687b ldr r3, [r7, #4] + 8031e3c: 681b ldr r3, [r3, #0] + 8031e3e: 68fa ldr r2, [r7, #12] + 8031e40: f8c3 2200 str.w r2, [r3, #512] ; 0x200 +} + 8031e44: bf00 nop + 8031e46: 3710 adds r7, #16 + 8031e48: 46bd mov sp, r7 + 8031e4a: bd80 pop {r7, pc} + 8031e4c: 01312cff .word 0x01312cff + 8031e50: 02160ebf .word 0x02160ebf + 8031e54: 03938700 .word 0x03938700 + 8031e58: 05f5e0ff .word 0x05f5e0ff + 8031e5c: 08f0d17f .word 0x08f0d17f + +08031e60 : * @{ */ static void ETH_SetMACConfig(ETH_HandleTypeDef *heth, ETH_MACConfigTypeDef *macconf) { - 8031e20: b480 push {r7} - 8031e22: b085 sub sp, #20 - 8031e24: af00 add r7, sp, #0 - 8031e26: 6078 str r0, [r7, #4] - 8031e28: 6039 str r1, [r7, #0] + 8031e60: b480 push {r7} + 8031e62: b085 sub sp, #20 + 8031e64: af00 add r7, sp, #0 + 8031e66: 6078 str r0, [r7, #4] + 8031e68: 6039 str r1, [r7, #0] uint32_t macregval; /*------------------------ MACCR Configuration --------------------*/ macregval = (macconf->InterPacketGapVal | - 8031e2a: 683b ldr r3, [r7, #0] - 8031e2c: 689a ldr r2, [r3, #8] + 8031e6a: 683b ldr r3, [r7, #0] + 8031e6c: 689a ldr r2, [r3, #8] macconf->SourceAddrControl | - 8031e2e: 683b ldr r3, [r7, #0] - 8031e30: 681b ldr r3, [r3, #0] + 8031e6e: 683b ldr r3, [r7, #0] + 8031e70: 681b ldr r3, [r3, #0] macregval = (macconf->InterPacketGapVal | - 8031e32: 431a orrs r2, r3 + 8031e72: 431a orrs r2, r3 ((uint32_t)macconf->ChecksumOffload << 27) | - 8031e34: 683b ldr r3, [r7, #0] - 8031e36: 791b ldrb r3, [r3, #4] - 8031e38: 06db lsls r3, r3, #27 + 8031e74: 683b ldr r3, [r7, #0] + 8031e76: 791b ldrb r3, [r3, #4] + 8031e78: 06db lsls r3, r3, #27 macconf->SourceAddrControl | - 8031e3a: 431a orrs r2, r3 + 8031e7a: 431a orrs r2, r3 ((uint32_t)macconf->GiantPacketSizeLimitControl << 23) | - 8031e3c: 683b ldr r3, [r7, #0] - 8031e3e: 7b1b ldrb r3, [r3, #12] - 8031e40: 05db lsls r3, r3, #23 + 8031e7c: 683b ldr r3, [r7, #0] + 8031e7e: 7b1b ldrb r3, [r3, #12] + 8031e80: 05db lsls r3, r3, #23 ((uint32_t)macconf->ChecksumOffload << 27) | - 8031e42: 431a orrs r2, r3 + 8031e82: 431a orrs r2, r3 ((uint32_t)macconf->Support2KPacket << 22) | - 8031e44: 683b ldr r3, [r7, #0] - 8031e46: 7b5b ldrb r3, [r3, #13] - 8031e48: 059b lsls r3, r3, #22 + 8031e84: 683b ldr r3, [r7, #0] + 8031e86: 7b5b ldrb r3, [r3, #13] + 8031e88: 059b lsls r3, r3, #22 ((uint32_t)macconf->GiantPacketSizeLimitControl << 23) | - 8031e4a: 431a orrs r2, r3 + 8031e8a: 431a orrs r2, r3 ((uint32_t)macconf->CRCStripTypePacket << 21) | - 8031e4c: 683b ldr r3, [r7, #0] - 8031e4e: 7b9b ldrb r3, [r3, #14] - 8031e50: 055b lsls r3, r3, #21 + 8031e8c: 683b ldr r3, [r7, #0] + 8031e8e: 7b9b ldrb r3, [r3, #14] + 8031e90: 055b lsls r3, r3, #21 ((uint32_t)macconf->Support2KPacket << 22) | - 8031e52: 431a orrs r2, r3 + 8031e92: 431a orrs r2, r3 ((uint32_t)macconf->AutomaticPadCRCStrip << 20) | - 8031e54: 683b ldr r3, [r7, #0] - 8031e56: 7bdb ldrb r3, [r3, #15] - 8031e58: 051b lsls r3, r3, #20 + 8031e94: 683b ldr r3, [r7, #0] + 8031e96: 7bdb ldrb r3, [r3, #15] + 8031e98: 051b lsls r3, r3, #20 ((uint32_t)macconf->CRCStripTypePacket << 21) | - 8031e5a: 4313 orrs r3, r2 + 8031e9a: 4313 orrs r3, r2 ((uint32_t)((macconf->Watchdog == DISABLE) ? 1U : 0U) << 19) | - 8031e5c: 683a ldr r2, [r7, #0] - 8031e5e: 7c12 ldrb r2, [r2, #16] - 8031e60: 2a00 cmp r2, #0 - 8031e62: d102 bne.n 8031e6a - 8031e64: f44f 2200 mov.w r2, #524288 ; 0x80000 - 8031e68: e000 b.n 8031e6c - 8031e6a: 2200 movs r2, #0 + 8031e9c: 683a ldr r2, [r7, #0] + 8031e9e: 7c12 ldrb r2, [r2, #16] + 8031ea0: 2a00 cmp r2, #0 + 8031ea2: d102 bne.n 8031eaa + 8031ea4: f44f 2200 mov.w r2, #524288 ; 0x80000 + 8031ea8: e000 b.n 8031eac + 8031eaa: 2200 movs r2, #0 ((uint32_t)macconf->AutomaticPadCRCStrip << 20) | - 8031e6c: 4313 orrs r3, r2 + 8031eac: 4313 orrs r3, r2 ((uint32_t)((macconf->Jabber == DISABLE) ? 1U : 0U) << 17) | - 8031e6e: 683a ldr r2, [r7, #0] - 8031e70: 7c52 ldrb r2, [r2, #17] - 8031e72: 2a00 cmp r2, #0 - 8031e74: d102 bne.n 8031e7c - 8031e76: f44f 3200 mov.w r2, #131072 ; 0x20000 - 8031e7a: e000 b.n 8031e7e - 8031e7c: 2200 movs r2, #0 + 8031eae: 683a ldr r2, [r7, #0] + 8031eb0: 7c52 ldrb r2, [r2, #17] + 8031eb2: 2a00 cmp r2, #0 + 8031eb4: d102 bne.n 8031ebc + 8031eb6: f44f 3200 mov.w r2, #131072 ; 0x20000 + 8031eba: e000 b.n 8031ebe + 8031ebc: 2200 movs r2, #0 ((uint32_t)((macconf->Watchdog == DISABLE) ? 1U : 0U) << 19) | - 8031e7e: 431a orrs r2, r3 + 8031ebe: 431a orrs r2, r3 ((uint32_t)macconf->JumboPacket << 16) | - 8031e80: 683b ldr r3, [r7, #0] - 8031e82: 7c9b ldrb r3, [r3, #18] - 8031e84: 041b lsls r3, r3, #16 + 8031ec0: 683b ldr r3, [r7, #0] + 8031ec2: 7c9b ldrb r3, [r3, #18] + 8031ec4: 041b lsls r3, r3, #16 ((uint32_t)((macconf->Jabber == DISABLE) ? 1U : 0U) << 17) | - 8031e86: 431a orrs r2, r3 + 8031ec6: 431a orrs r2, r3 macconf->Speed | - 8031e88: 683b ldr r3, [r7, #0] - 8031e8a: 695b ldr r3, [r3, #20] + 8031ec8: 683b ldr r3, [r7, #0] + 8031eca: 695b ldr r3, [r3, #20] ((uint32_t)macconf->JumboPacket << 16) | - 8031e8c: 431a orrs r2, r3 + 8031ecc: 431a orrs r2, r3 macconf->DuplexMode | - 8031e8e: 683b ldr r3, [r7, #0] - 8031e90: 699b ldr r3, [r3, #24] + 8031ece: 683b ldr r3, [r7, #0] + 8031ed0: 699b ldr r3, [r3, #24] macconf->Speed | - 8031e92: 431a orrs r2, r3 + 8031ed2: 431a orrs r2, r3 ((uint32_t)macconf->LoopbackMode << 12) | - 8031e94: 683b ldr r3, [r7, #0] - 8031e96: 7f1b ldrb r3, [r3, #28] - 8031e98: 031b lsls r3, r3, #12 + 8031ed4: 683b ldr r3, [r7, #0] + 8031ed6: 7f1b ldrb r3, [r3, #28] + 8031ed8: 031b lsls r3, r3, #12 macconf->DuplexMode | - 8031e9a: 431a orrs r2, r3 + 8031eda: 431a orrs r2, r3 ((uint32_t)macconf->CarrierSenseBeforeTransmit << 11) | - 8031e9c: 683b ldr r3, [r7, #0] - 8031e9e: 7f5b ldrb r3, [r3, #29] - 8031ea0: 02db lsls r3, r3, #11 + 8031edc: 683b ldr r3, [r7, #0] + 8031ede: 7f5b ldrb r3, [r3, #29] + 8031ee0: 02db lsls r3, r3, #11 ((uint32_t)macconf->LoopbackMode << 12) | - 8031ea2: 4313 orrs r3, r2 + 8031ee2: 4313 orrs r3, r2 ((uint32_t)((macconf->ReceiveOwn == DISABLE) ? 1U : 0U) << 10) | - 8031ea4: 683a ldr r2, [r7, #0] - 8031ea6: 7f92 ldrb r2, [r2, #30] - 8031ea8: 2a00 cmp r2, #0 - 8031eaa: d102 bne.n 8031eb2 - 8031eac: f44f 6280 mov.w r2, #1024 ; 0x400 - 8031eb0: e000 b.n 8031eb4 - 8031eb2: 2200 movs r2, #0 + 8031ee4: 683a ldr r2, [r7, #0] + 8031ee6: 7f92 ldrb r2, [r2, #30] + 8031ee8: 2a00 cmp r2, #0 + 8031eea: d102 bne.n 8031ef2 + 8031eec: f44f 6280 mov.w r2, #1024 ; 0x400 + 8031ef0: e000 b.n 8031ef4 + 8031ef2: 2200 movs r2, #0 ((uint32_t)macconf->CarrierSenseBeforeTransmit << 11) | - 8031eb4: 431a orrs r2, r3 + 8031ef4: 431a orrs r2, r3 ((uint32_t)macconf->CarrierSenseDuringTransmit << 9) | - 8031eb6: 683b ldr r3, [r7, #0] - 8031eb8: 7fdb ldrb r3, [r3, #31] - 8031eba: 025b lsls r3, r3, #9 + 8031ef6: 683b ldr r3, [r7, #0] + 8031ef8: 7fdb ldrb r3, [r3, #31] + 8031efa: 025b lsls r3, r3, #9 ((uint32_t)((macconf->ReceiveOwn == DISABLE) ? 1U : 0U) << 10) | - 8031ebc: 4313 orrs r3, r2 + 8031efc: 4313 orrs r3, r2 ((uint32_t)((macconf->RetryTransmission == DISABLE) ? 1U : 0U) << 8) | - 8031ebe: 683a ldr r2, [r7, #0] - 8031ec0: f892 2020 ldrb.w r2, [r2, #32] - 8031ec4: 2a00 cmp r2, #0 - 8031ec6: d102 bne.n 8031ece - 8031ec8: f44f 7280 mov.w r2, #256 ; 0x100 - 8031ecc: e000 b.n 8031ed0 - 8031ece: 2200 movs r2, #0 + 8031efe: 683a ldr r2, [r7, #0] + 8031f00: f892 2020 ldrb.w r2, [r2, #32] + 8031f04: 2a00 cmp r2, #0 + 8031f06: d102 bne.n 8031f0e + 8031f08: f44f 7280 mov.w r2, #256 ; 0x100 + 8031f0c: e000 b.n 8031f10 + 8031f0e: 2200 movs r2, #0 ((uint32_t)macconf->CarrierSenseDuringTransmit << 9) | - 8031ed0: 431a orrs r2, r3 + 8031f10: 431a orrs r2, r3 macconf->BackOffLimit | - 8031ed2: 683b ldr r3, [r7, #0] - 8031ed4: 6a5b ldr r3, [r3, #36] ; 0x24 + 8031f12: 683b ldr r3, [r7, #0] + 8031f14: 6a5b ldr r3, [r3, #36] ; 0x24 ((uint32_t)((macconf->RetryTransmission == DISABLE) ? 1U : 0U) << 8) | - 8031ed6: 431a orrs r2, r3 + 8031f16: 431a orrs r2, r3 ((uint32_t)macconf->DeferralCheck << 4) | - 8031ed8: 683b ldr r3, [r7, #0] - 8031eda: f893 3028 ldrb.w r3, [r3, #40] ; 0x28 - 8031ede: 011b lsls r3, r3, #4 + 8031f18: 683b ldr r3, [r7, #0] + 8031f1a: f893 3028 ldrb.w r3, [r3, #40] ; 0x28 + 8031f1e: 011b lsls r3, r3, #4 macconf->BackOffLimit | - 8031ee0: 431a orrs r2, r3 + 8031f20: 431a orrs r2, r3 macconf->PreambleLength); - 8031ee2: 683b ldr r3, [r7, #0] - 8031ee4: 6adb ldr r3, [r3, #44] ; 0x2c + 8031f22: 683b ldr r3, [r7, #0] + 8031f24: 6adb ldr r3, [r3, #44] ; 0x2c macregval = (macconf->InterPacketGapVal | - 8031ee6: 4313 orrs r3, r2 - 8031ee8: 60fb str r3, [r7, #12] + 8031f26: 4313 orrs r3, r2 + 8031f28: 60fb str r3, [r7, #12] /* Write to MACCR */ MODIFY_REG(heth->Instance->MACCR, ETH_MACCR_MASK, macregval); - 8031eea: 687b ldr r3, [r7, #4] - 8031eec: 681b ldr r3, [r3, #0] - 8031eee: 681a ldr r2, [r3, #0] - 8031ef0: 4b56 ldr r3, [pc, #344] ; (803204c ) - 8031ef2: 4013 ands r3, r2 - 8031ef4: 687a ldr r2, [r7, #4] - 8031ef6: 6812 ldr r2, [r2, #0] - 8031ef8: 68f9 ldr r1, [r7, #12] - 8031efa: 430b orrs r3, r1 - 8031efc: 6013 str r3, [r2, #0] + 8031f2a: 687b ldr r3, [r7, #4] + 8031f2c: 681b ldr r3, [r3, #0] + 8031f2e: 681a ldr r2, [r3, #0] + 8031f30: 4b56 ldr r3, [pc, #344] ; (803208c ) + 8031f32: 4013 ands r3, r2 + 8031f34: 687a ldr r2, [r7, #4] + 8031f36: 6812 ldr r2, [r2, #0] + 8031f38: 68f9 ldr r1, [r7, #12] + 8031f3a: 430b orrs r3, r1 + 8031f3c: 6013 str r3, [r2, #0] /*------------------------ MACECR Configuration --------------------*/ macregval = ((macconf->ExtendedInterPacketGapVal << 25) | - 8031efe: 683b ldr r3, [r7, #0] - 8031f00: 6bdb ldr r3, [r3, #60] ; 0x3c - 8031f02: 065a lsls r2, r3, #25 + 8031f3e: 683b ldr r3, [r7, #0] + 8031f40: 6bdb ldr r3, [r3, #60] ; 0x3c + 8031f42: 065a lsls r2, r3, #25 ((uint32_t)macconf->ExtendedInterPacketGap << 24) | - 8031f04: 683b ldr r3, [r7, #0] - 8031f06: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 - 8031f0a: 061b lsls r3, r3, #24 + 8031f44: 683b ldr r3, [r7, #0] + 8031f46: f893 3038 ldrb.w r3, [r3, #56] ; 0x38 + 8031f4a: 061b lsls r3, r3, #24 macregval = ((macconf->ExtendedInterPacketGapVal << 25) | - 8031f0c: 431a orrs r2, r3 + 8031f4c: 431a orrs r2, r3 ((uint32_t)macconf->UnicastSlowProtocolPacketDetect << 18) | - 8031f0e: 683b ldr r3, [r7, #0] - 8031f10: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 - 8031f14: 049b lsls r3, r3, #18 + 8031f4e: 683b ldr r3, [r7, #0] + 8031f50: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 + 8031f54: 049b lsls r3, r3, #18 ((uint32_t)macconf->ExtendedInterPacketGap << 24) | - 8031f16: 431a orrs r2, r3 + 8031f56: 431a orrs r2, r3 ((uint32_t)macconf->SlowProtocolDetect << 17) | - 8031f18: 683b ldr r3, [r7, #0] - 8031f1a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8031f1e: 045b lsls r3, r3, #17 + 8031f58: 683b ldr r3, [r7, #0] + 8031f5a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8031f5e: 045b lsls r3, r3, #17 ((uint32_t)macconf->UnicastSlowProtocolPacketDetect << 18) | - 8031f20: 4313 orrs r3, r2 + 8031f60: 4313 orrs r3, r2 ((uint32_t)((macconf->CRCCheckingRxPackets == DISABLE) ? 1U : 0U) << 16) | - 8031f22: 683a ldr r2, [r7, #0] - 8031f24: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 - 8031f28: 2a00 cmp r2, #0 - 8031f2a: d102 bne.n 8031f32 - 8031f2c: f44f 3280 mov.w r2, #65536 ; 0x10000 - 8031f30: e000 b.n 8031f34 - 8031f32: 2200 movs r2, #0 + 8031f62: 683a ldr r2, [r7, #0] + 8031f64: f892 2032 ldrb.w r2, [r2, #50] ; 0x32 + 8031f68: 2a00 cmp r2, #0 + 8031f6a: d102 bne.n 8031f72 + 8031f6c: f44f 3280 mov.w r2, #65536 ; 0x10000 + 8031f70: e000 b.n 8031f74 + 8031f72: 2200 movs r2, #0 ((uint32_t)macconf->SlowProtocolDetect << 17) | - 8031f34: 431a orrs r2, r3 + 8031f74: 431a orrs r2, r3 macconf->GiantPacketSizeLimit); - 8031f36: 683b ldr r3, [r7, #0] - 8031f38: 6b5b ldr r3, [r3, #52] ; 0x34 + 8031f76: 683b ldr r3, [r7, #0] + 8031f78: 6b5b ldr r3, [r3, #52] ; 0x34 macregval = ((macconf->ExtendedInterPacketGapVal << 25) | - 8031f3a: 4313 orrs r3, r2 - 8031f3c: 60fb str r3, [r7, #12] + 8031f7a: 4313 orrs r3, r2 + 8031f7c: 60fb str r3, [r7, #12] /* Write to MACECR */ MODIFY_REG(heth->Instance->MACECR, ETH_MACECR_MASK, macregval); - 8031f3e: 687b ldr r3, [r7, #4] - 8031f40: 681b ldr r3, [r3, #0] - 8031f42: 685a ldr r2, [r3, #4] - 8031f44: 4b42 ldr r3, [pc, #264] ; (8032050 ) - 8031f46: 4013 ands r3, r2 - 8031f48: 687a ldr r2, [r7, #4] - 8031f4a: 6812 ldr r2, [r2, #0] - 8031f4c: 68f9 ldr r1, [r7, #12] - 8031f4e: 430b orrs r3, r1 - 8031f50: 6053 str r3, [r2, #4] + 8031f7e: 687b ldr r3, [r7, #4] + 8031f80: 681b ldr r3, [r3, #0] + 8031f82: 685a ldr r2, [r3, #4] + 8031f84: 4b42 ldr r3, [pc, #264] ; (8032090 ) + 8031f86: 4013 ands r3, r2 + 8031f88: 687a ldr r2, [r7, #4] + 8031f8a: 6812 ldr r2, [r2, #0] + 8031f8c: 68f9 ldr r1, [r7, #12] + 8031f8e: 430b orrs r3, r1 + 8031f90: 6053 str r3, [r2, #4] /*------------------------ MACWTR Configuration --------------------*/ macregval = (((uint32_t)macconf->ProgrammableWatchdog << 8) | - 8031f52: 683b ldr r3, [r7, #0] - 8031f54: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8031f58: 021a lsls r2, r3, #8 + 8031f92: 683b ldr r3, [r7, #0] + 8031f94: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8031f98: 021a lsls r2, r3, #8 macconf->WatchdogTimeout); - 8031f5a: 683b ldr r3, [r7, #0] - 8031f5c: 6c5b ldr r3, [r3, #68] ; 0x44 + 8031f9a: 683b ldr r3, [r7, #0] + 8031f9c: 6c5b ldr r3, [r3, #68] ; 0x44 macregval = (((uint32_t)macconf->ProgrammableWatchdog << 8) | - 8031f5e: 4313 orrs r3, r2 - 8031f60: 60fb str r3, [r7, #12] + 8031f9e: 4313 orrs r3, r2 + 8031fa0: 60fb str r3, [r7, #12] /* Write to MACWTR */ MODIFY_REG(heth->Instance->MACWTR, ETH_MACWTR_MASK, macregval); - 8031f62: 687b ldr r3, [r7, #4] - 8031f64: 681b ldr r3, [r3, #0] - 8031f66: 68da ldr r2, [r3, #12] - 8031f68: 4b3a ldr r3, [pc, #232] ; (8032054 ) - 8031f6a: 4013 ands r3, r2 - 8031f6c: 687a ldr r2, [r7, #4] - 8031f6e: 6812 ldr r2, [r2, #0] - 8031f70: 68f9 ldr r1, [r7, #12] - 8031f72: 430b orrs r3, r1 - 8031f74: 60d3 str r3, [r2, #12] + 8031fa2: 687b ldr r3, [r7, #4] + 8031fa4: 681b ldr r3, [r3, #0] + 8031fa6: 68da ldr r2, [r3, #12] + 8031fa8: 4b3a ldr r3, [pc, #232] ; (8032094 ) + 8031faa: 4013 ands r3, r2 + 8031fac: 687a ldr r2, [r7, #4] + 8031fae: 6812 ldr r2, [r2, #0] + 8031fb0: 68f9 ldr r1, [r7, #12] + 8031fb2: 430b orrs r3, r1 + 8031fb4: 60d3 str r3, [r2, #12] /*------------------------ MACTFCR Configuration --------------------*/ macregval = (((uint32_t)macconf->TransmitFlowControl << 1) | - 8031f76: 683b ldr r3, [r7, #0] - 8031f78: f893 3054 ldrb.w r3, [r3, #84] ; 0x54 - 8031f7c: 005a lsls r2, r3, #1 + 8031fb6: 683b ldr r3, [r7, #0] + 8031fb8: f893 3054 ldrb.w r3, [r3, #84] ; 0x54 + 8031fbc: 005a lsls r2, r3, #1 macconf->PauseLowThreshold | - 8031f7e: 683b ldr r3, [r7, #0] - 8031f80: 6d1b ldr r3, [r3, #80] ; 0x50 + 8031fbe: 683b ldr r3, [r7, #0] + 8031fc0: 6d1b ldr r3, [r3, #80] ; 0x50 macregval = (((uint32_t)macconf->TransmitFlowControl << 1) | - 8031f82: 4313 orrs r3, r2 + 8031fc2: 4313 orrs r3, r2 ((uint32_t)((macconf->ZeroQuantaPause == DISABLE) ? 1U : 0U) << 7) | - 8031f84: 683a ldr r2, [r7, #0] - 8031f86: f892 204c ldrb.w r2, [r2, #76] ; 0x4c - 8031f8a: 2a00 cmp r2, #0 - 8031f8c: d101 bne.n 8031f92 - 8031f8e: 2280 movs r2, #128 ; 0x80 - 8031f90: e000 b.n 8031f94 - 8031f92: 2200 movs r2, #0 + 8031fc4: 683a ldr r2, [r7, #0] + 8031fc6: f892 204c ldrb.w r2, [r2, #76] ; 0x4c + 8031fca: 2a00 cmp r2, #0 + 8031fcc: d101 bne.n 8031fd2 + 8031fce: 2280 movs r2, #128 ; 0x80 + 8031fd0: e000 b.n 8031fd4 + 8031fd2: 2200 movs r2, #0 macconf->PauseLowThreshold | - 8031f94: 431a orrs r2, r3 + 8031fd4: 431a orrs r2, r3 (macconf->PauseTime << 16)); - 8031f96: 683b ldr r3, [r7, #0] - 8031f98: 6c9b ldr r3, [r3, #72] ; 0x48 - 8031f9a: 041b lsls r3, r3, #16 + 8031fd6: 683b ldr r3, [r7, #0] + 8031fd8: 6c9b ldr r3, [r3, #72] ; 0x48 + 8031fda: 041b lsls r3, r3, #16 macregval = (((uint32_t)macconf->TransmitFlowControl << 1) | - 8031f9c: 4313 orrs r3, r2 - 8031f9e: 60fb str r3, [r7, #12] + 8031fdc: 4313 orrs r3, r2 + 8031fde: 60fb str r3, [r7, #12] /* Write to MACTFCR */ MODIFY_REG(heth->Instance->MACTFCR, ETH_MACTFCR_MASK, macregval); - 8031fa0: 687b ldr r3, [r7, #4] - 8031fa2: 681b ldr r3, [r3, #0] - 8031fa4: 6f1a ldr r2, [r3, #112] ; 0x70 - 8031fa6: f64f 730d movw r3, #65293 ; 0xff0d - 8031faa: 4013 ands r3, r2 - 8031fac: 687a ldr r2, [r7, #4] - 8031fae: 6812 ldr r2, [r2, #0] - 8031fb0: 68f9 ldr r1, [r7, #12] - 8031fb2: 430b orrs r3, r1 - 8031fb4: 6713 str r3, [r2, #112] ; 0x70 + 8031fe0: 687b ldr r3, [r7, #4] + 8031fe2: 681b ldr r3, [r3, #0] + 8031fe4: 6f1a ldr r2, [r3, #112] ; 0x70 + 8031fe6: f64f 730d movw r3, #65293 ; 0xff0d + 8031fea: 4013 ands r3, r2 + 8031fec: 687a ldr r2, [r7, #4] + 8031fee: 6812 ldr r2, [r2, #0] + 8031ff0: 68f9 ldr r1, [r7, #12] + 8031ff2: 430b orrs r3, r1 + 8031ff4: 6713 str r3, [r2, #112] ; 0x70 /*------------------------ MACRFCR Configuration --------------------*/ macregval = ((uint32_t)macconf->ReceiveFlowControl | - 8031fb6: 683b ldr r3, [r7, #0] - 8031fb8: f893 3056 ldrb.w r3, [r3, #86] ; 0x56 - 8031fbc: 461a mov r2, r3 + 8031ff6: 683b ldr r3, [r7, #0] + 8031ff8: f893 3056 ldrb.w r3, [r3, #86] ; 0x56 + 8031ffc: 461a mov r2, r3 ((uint32_t)macconf->UnicastPausePacketDetect << 1)); - 8031fbe: 683b ldr r3, [r7, #0] - 8031fc0: f893 3055 ldrb.w r3, [r3, #85] ; 0x55 - 8031fc4: 005b lsls r3, r3, #1 + 8031ffe: 683b ldr r3, [r7, #0] + 8032000: f893 3055 ldrb.w r3, [r3, #85] ; 0x55 + 8032004: 005b lsls r3, r3, #1 macregval = ((uint32_t)macconf->ReceiveFlowControl | - 8031fc6: 4313 orrs r3, r2 - 8031fc8: 60fb str r3, [r7, #12] + 8032006: 4313 orrs r3, r2 + 8032008: 60fb str r3, [r7, #12] /* Write to MACRFCR */ MODIFY_REG(heth->Instance->MACRFCR, ETH_MACRFCR_MASK, macregval); - 8031fca: 687b ldr r3, [r7, #4] - 8031fcc: 681b ldr r3, [r3, #0] - 8031fce: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8031fd2: f023 0103 bic.w r1, r3, #3 - 8031fd6: 687b ldr r3, [r7, #4] - 8031fd8: 681b ldr r3, [r3, #0] - 8031fda: 68fa ldr r2, [r7, #12] - 8031fdc: 430a orrs r2, r1 - 8031fde: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 803200a: 687b ldr r3, [r7, #4] + 803200c: 681b ldr r3, [r3, #0] + 803200e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8032012: f023 0103 bic.w r1, r3, #3 + 8032016: 687b ldr r3, [r7, #4] + 8032018: 681b ldr r3, [r3, #0] + 803201a: 68fa ldr r2, [r7, #12] + 803201c: 430a orrs r2, r1 + 803201e: f8c3 2090 str.w r2, [r3, #144] ; 0x90 /*------------------------ MTLTQOMR Configuration --------------------*/ /* Write to MTLTQOMR */ MODIFY_REG(heth->Instance->MTLTQOMR, ETH_MTLTQOMR_MASK, macconf->TransmitQueueMode); - 8031fe2: 687b ldr r3, [r7, #4] - 8031fe4: 681b ldr r3, [r3, #0] - 8031fe6: f8d3 3d00 ldr.w r3, [r3, #3328] ; 0xd00 - 8031fea: f023 0172 bic.w r1, r3, #114 ; 0x72 - 8031fee: 683b ldr r3, [r7, #0] - 8031ff0: 6d9a ldr r2, [r3, #88] ; 0x58 - 8031ff2: 687b ldr r3, [r7, #4] - 8031ff4: 681b ldr r3, [r3, #0] - 8031ff6: 430a orrs r2, r1 - 8031ff8: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 + 8032022: 687b ldr r3, [r7, #4] + 8032024: 681b ldr r3, [r3, #0] + 8032026: f8d3 3d00 ldr.w r3, [r3, #3328] ; 0xd00 + 803202a: f023 0172 bic.w r1, r3, #114 ; 0x72 + 803202e: 683b ldr r3, [r7, #0] + 8032030: 6d9a ldr r2, [r3, #88] ; 0x58 + 8032032: 687b ldr r3, [r7, #4] + 8032034: 681b ldr r3, [r3, #0] + 8032036: 430a orrs r2, r1 + 8032038: f8c3 2d00 str.w r2, [r3, #3328] ; 0xd00 /*------------------------ MTLRQOMR Configuration --------------------*/ macregval = (macconf->ReceiveQueueMode | - 8031ffc: 683b ldr r3, [r7, #0] - 8031ffe: 6ddb ldr r3, [r3, #92] ; 0x5c + 803203c: 683b ldr r3, [r7, #0] + 803203e: 6ddb ldr r3, [r3, #92] ; 0x5c ((uint32_t)((macconf->DropTCPIPChecksumErrorPacket == DISABLE) ? 1U : 0U) << 6) | - 8032000: 683a ldr r2, [r7, #0] - 8032002: f892 2060 ldrb.w r2, [r2, #96] ; 0x60 - 8032006: 2a00 cmp r2, #0 - 8032008: d101 bne.n 803200e - 803200a: 2240 movs r2, #64 ; 0x40 - 803200c: e000 b.n 8032010 - 803200e: 2200 movs r2, #0 + 8032040: 683a ldr r2, [r7, #0] + 8032042: f892 2060 ldrb.w r2, [r2, #96] ; 0x60 + 8032046: 2a00 cmp r2, #0 + 8032048: d101 bne.n 803204e + 803204a: 2240 movs r2, #64 ; 0x40 + 803204c: e000 b.n 8032050 + 803204e: 2200 movs r2, #0 macregval = (macconf->ReceiveQueueMode | - 8032010: 431a orrs r2, r3 + 8032050: 431a orrs r2, r3 ((uint32_t)macconf->ForwardRxErrorPacket << 4) | - 8032012: 683b ldr r3, [r7, #0] - 8032014: f893 3061 ldrb.w r3, [r3, #97] ; 0x61 - 8032018: 011b lsls r3, r3, #4 + 8032052: 683b ldr r3, [r7, #0] + 8032054: f893 3061 ldrb.w r3, [r3, #97] ; 0x61 + 8032058: 011b lsls r3, r3, #4 ((uint32_t)((macconf->DropTCPIPChecksumErrorPacket == DISABLE) ? 1U : 0U) << 6) | - 803201a: 431a orrs r2, r3 + 803205a: 431a orrs r2, r3 ((uint32_t)macconf->ForwardRxUndersizedGoodPacket << 3)); - 803201c: 683b ldr r3, [r7, #0] - 803201e: f893 3062 ldrb.w r3, [r3, #98] ; 0x62 - 8032022: 00db lsls r3, r3, #3 + 803205c: 683b ldr r3, [r7, #0] + 803205e: f893 3062 ldrb.w r3, [r3, #98] ; 0x62 + 8032062: 00db lsls r3, r3, #3 macregval = (macconf->ReceiveQueueMode | - 8032024: 4313 orrs r3, r2 - 8032026: 60fb str r3, [r7, #12] + 8032064: 4313 orrs r3, r2 + 8032066: 60fb str r3, [r7, #12] /* Write to MTLRQOMR */ MODIFY_REG(heth->Instance->MTLRQOMR, ETH_MTLRQOMR_MASK, macregval); - 8032028: 687b ldr r3, [r7, #4] - 803202a: 681b ldr r3, [r3, #0] - 803202c: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 - 8032030: f023 017b bic.w r1, r3, #123 ; 0x7b - 8032034: 687b ldr r3, [r7, #4] - 8032036: 681b ldr r3, [r3, #0] - 8032038: 68fa ldr r2, [r7, #12] - 803203a: 430a orrs r2, r1 - 803203c: f8c3 2d30 str.w r2, [r3, #3376] ; 0xd30 -} - 8032040: bf00 nop - 8032042: 3714 adds r7, #20 - 8032044: 46bd mov sp, r7 - 8032046: f85d 7b04 ldr.w r7, [sp], #4 - 803204a: 4770 bx lr - 803204c: 00048083 .word 0x00048083 - 8032050: c0f88000 .word 0xc0f88000 - 8032054: fffffef0 .word 0xfffffef0 - -08032058 : + 8032068: 687b ldr r3, [r7, #4] + 803206a: 681b ldr r3, [r3, #0] + 803206c: f8d3 3d30 ldr.w r3, [r3, #3376] ; 0xd30 + 8032070: f023 017b bic.w r1, r3, #123 ; 0x7b + 8032074: 687b ldr r3, [r7, #4] + 8032076: 681b ldr r3, [r3, #0] + 8032078: 68fa ldr r2, [r7, #12] + 803207a: 430a orrs r2, r1 + 803207c: f8c3 2d30 str.w r2, [r3, #3376] ; 0xd30 +} + 8032080: bf00 nop + 8032082: 3714 adds r7, #20 + 8032084: 46bd mov sp, r7 + 8032086: f85d 7b04 ldr.w r7, [sp], #4 + 803208a: 4770 bx lr + 803208c: 00048083 .word 0x00048083 + 8032090: c0f88000 .word 0xc0f88000 + 8032094: fffffef0 .word 0xfffffef0 + +08032098 : static void ETH_SetDMAConfig(ETH_HandleTypeDef *heth, ETH_DMAConfigTypeDef *dmaconf) { - 8032058: b480 push {r7} - 803205a: b085 sub sp, #20 - 803205c: af00 add r7, sp, #0 - 803205e: 6078 str r0, [r7, #4] - 8032060: 6039 str r1, [r7, #0] + 8032098: b480 push {r7} + 803209a: b085 sub sp, #20 + 803209c: af00 add r7, sp, #0 + 803209e: 6078 str r0, [r7, #4] + 80320a0: 6039 str r1, [r7, #0] uint32_t dmaregval; /*------------------------ DMAMR Configuration --------------------*/ MODIFY_REG(heth->Instance->DMAMR, ETH_DMAMR_MASK, dmaconf->DMAArbitration); - 8032062: 687b ldr r3, [r7, #4] - 8032064: 681b ldr r3, [r3, #0] - 8032066: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803206a: 681a ldr r2, [r3, #0] - 803206c: 4b38 ldr r3, [pc, #224] ; (8032150 ) - 803206e: 4013 ands r3, r2 - 8032070: 683a ldr r2, [r7, #0] - 8032072: 6811 ldr r1, [r2, #0] - 8032074: 687a ldr r2, [r7, #4] - 8032076: 6812 ldr r2, [r2, #0] - 8032078: 430b orrs r3, r1 - 803207a: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 803207e: 6013 str r3, [r2, #0] + 80320a2: 687b ldr r3, [r7, #4] + 80320a4: 681b ldr r3, [r3, #0] + 80320a6: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80320aa: 681a ldr r2, [r3, #0] + 80320ac: 4b38 ldr r3, [pc, #224] ; (8032190 ) + 80320ae: 4013 ands r3, r2 + 80320b0: 683a ldr r2, [r7, #0] + 80320b2: 6811 ldr r1, [r2, #0] + 80320b4: 687a ldr r2, [r7, #4] + 80320b6: 6812 ldr r2, [r2, #0] + 80320b8: 430b orrs r3, r1 + 80320ba: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80320be: 6013 str r3, [r2, #0] /*------------------------ DMASBMR Configuration --------------------*/ dmaregval = (((uint32_t)dmaconf->AddressAlignedBeats << 12) | - 8032080: 683b ldr r3, [r7, #0] - 8032082: 791b ldrb r3, [r3, #4] - 8032084: 031a lsls r2, r3, #12 + 80320c0: 683b ldr r3, [r7, #0] + 80320c2: 791b ldrb r3, [r3, #4] + 80320c4: 031a lsls r2, r3, #12 dmaconf->BurstMode | - 8032086: 683b ldr r3, [r7, #0] - 8032088: 689b ldr r3, [r3, #8] + 80320c6: 683b ldr r3, [r7, #0] + 80320c8: 689b ldr r3, [r3, #8] dmaregval = (((uint32_t)dmaconf->AddressAlignedBeats << 12) | - 803208a: 431a orrs r2, r3 + 80320ca: 431a orrs r2, r3 ((uint32_t)dmaconf->RebuildINCRxBurst << 15)); - 803208c: 683b ldr r3, [r7, #0] - 803208e: 7b1b ldrb r3, [r3, #12] - 8032090: 03db lsls r3, r3, #15 + 80320cc: 683b ldr r3, [r7, #0] + 80320ce: 7b1b ldrb r3, [r3, #12] + 80320d0: 03db lsls r3, r3, #15 dmaregval = (((uint32_t)dmaconf->AddressAlignedBeats << 12) | - 8032092: 4313 orrs r3, r2 - 8032094: 60fb str r3, [r7, #12] + 80320d2: 4313 orrs r3, r2 + 80320d4: 60fb str r3, [r7, #12] MODIFY_REG(heth->Instance->DMASBMR, ETH_DMASBMR_MASK, dmaregval); - 8032096: 687b ldr r3, [r7, #4] - 8032098: 681b ldr r3, [r3, #0] - 803209a: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803209e: 685a ldr r2, [r3, #4] - 80320a0: 4b2c ldr r3, [pc, #176] ; (8032154 ) - 80320a2: 4013 ands r3, r2 - 80320a4: 687a ldr r2, [r7, #4] - 80320a6: 6812 ldr r2, [r2, #0] - 80320a8: 68f9 ldr r1, [r7, #12] - 80320aa: 430b orrs r3, r1 - 80320ac: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80320b0: 6053 str r3, [r2, #4] + 80320d6: 687b ldr r3, [r7, #4] + 80320d8: 681b ldr r3, [r3, #0] + 80320da: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80320de: 685a ldr r2, [r3, #4] + 80320e0: 4b2c ldr r3, [pc, #176] ; (8032194 ) + 80320e2: 4013 ands r3, r2 + 80320e4: 687a ldr r2, [r7, #4] + 80320e6: 6812 ldr r2, [r2, #0] + 80320e8: 68f9 ldr r1, [r7, #12] + 80320ea: 430b orrs r3, r1 + 80320ec: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 80320f0: 6053 str r3, [r2, #4] /*------------------------ DMACCR Configuration --------------------*/ dmaregval = (((uint32_t)dmaconf->PBLx8Mode << 16) | - 80320b2: 683b ldr r3, [r7, #0] - 80320b4: 7b5b ldrb r3, [r3, #13] - 80320b6: 041a lsls r2, r3, #16 + 80320f2: 683b ldr r3, [r7, #0] + 80320f4: 7b5b ldrb r3, [r3, #13] + 80320f6: 041a lsls r2, r3, #16 dmaconf->MaximumSegmentSize); - 80320b8: 683b ldr r3, [r7, #0] - 80320ba: 6a1b ldr r3, [r3, #32] + 80320f8: 683b ldr r3, [r7, #0] + 80320fa: 6a1b ldr r3, [r3, #32] dmaregval = (((uint32_t)dmaconf->PBLx8Mode << 16) | - 80320bc: 4313 orrs r3, r2 - 80320be: 60fb str r3, [r7, #12] + 80320fc: 4313 orrs r3, r2 + 80320fe: 60fb str r3, [r7, #12] MODIFY_REG(heth->Instance->DMACCR, ETH_DMACCR_MASK, dmaregval); - 80320c0: 687b ldr r3, [r7, #4] - 80320c2: 681b ldr r3, [r3, #0] - 80320c4: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80320c8: f8d3 2100 ldr.w r2, [r3, #256] ; 0x100 - 80320cc: 4b22 ldr r3, [pc, #136] ; (8032158 ) - 80320ce: 4013 ands r3, r2 - 80320d0: 687a ldr r2, [r7, #4] - 80320d2: 6812 ldr r2, [r2, #0] - 80320d4: 68f9 ldr r1, [r7, #12] - 80320d6: 430b orrs r3, r1 - 80320d8: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 80320dc: f8c2 3100 str.w r3, [r2, #256] ; 0x100 + 8032100: 687b ldr r3, [r7, #4] + 8032102: 681b ldr r3, [r3, #0] + 8032104: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8032108: f8d3 2100 ldr.w r2, [r3, #256] ; 0x100 + 803210c: 4b22 ldr r3, [pc, #136] ; (8032198 ) + 803210e: 4013 ands r3, r2 + 8032110: 687a ldr r2, [r7, #4] + 8032112: 6812 ldr r2, [r2, #0] + 8032114: 68f9 ldr r1, [r7, #12] + 8032116: 430b orrs r3, r1 + 8032118: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 803211c: f8c2 3100 str.w r3, [r2, #256] ; 0x100 /*------------------------ DMACTCR Configuration --------------------*/ dmaregval = (dmaconf->TxDMABurstLength | - 80320e0: 683b ldr r3, [r7, #0] - 80320e2: 691a ldr r2, [r3, #16] + 8032120: 683b ldr r3, [r7, #0] + 8032122: 691a ldr r2, [r3, #16] ((uint32_t)dmaconf->SecondPacketOperate << 4) | - 80320e4: 683b ldr r3, [r7, #0] - 80320e6: 7d1b ldrb r3, [r3, #20] - 80320e8: 011b lsls r3, r3, #4 + 8032124: 683b ldr r3, [r7, #0] + 8032126: 7d1b ldrb r3, [r3, #20] + 8032128: 011b lsls r3, r3, #4 dmaregval = (dmaconf->TxDMABurstLength | - 80320ea: 431a orrs r2, r3 + 803212a: 431a orrs r2, r3 ((uint32_t)dmaconf->TCPSegmentation << 12)); - 80320ec: 683b ldr r3, [r7, #0] - 80320ee: 7f5b ldrb r3, [r3, #29] - 80320f0: 031b lsls r3, r3, #12 + 803212c: 683b ldr r3, [r7, #0] + 803212e: 7f5b ldrb r3, [r3, #29] + 8032130: 031b lsls r3, r3, #12 dmaregval = (dmaconf->TxDMABurstLength | - 80320f2: 4313 orrs r3, r2 - 80320f4: 60fb str r3, [r7, #12] + 8032132: 4313 orrs r3, r2 + 8032134: 60fb str r3, [r7, #12] MODIFY_REG(heth->Instance->DMACTCR, ETH_DMACTCR_MASK, dmaregval); - 80320f6: 687b ldr r3, [r7, #4] - 80320f8: 681b ldr r3, [r3, #0] - 80320fa: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80320fe: f8d3 2104 ldr.w r2, [r3, #260] ; 0x104 - 8032102: 4b16 ldr r3, [pc, #88] ; (803215c ) - 8032104: 4013 ands r3, r2 - 8032106: 687a ldr r2, [r7, #4] - 8032108: 6812 ldr r2, [r2, #0] - 803210a: 68f9 ldr r1, [r7, #12] - 803210c: 430b orrs r3, r1 - 803210e: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 8032112: f8c2 3104 str.w r3, [r2, #260] ; 0x104 + 8032136: 687b ldr r3, [r7, #4] + 8032138: 681b ldr r3, [r3, #0] + 803213a: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803213e: f8d3 2104 ldr.w r2, [r3, #260] ; 0x104 + 8032142: 4b16 ldr r3, [pc, #88] ; (803219c ) + 8032144: 4013 ands r3, r2 + 8032146: 687a ldr r2, [r7, #4] + 8032148: 6812 ldr r2, [r2, #0] + 803214a: 68f9 ldr r1, [r7, #12] + 803214c: 430b orrs r3, r1 + 803214e: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 8032152: f8c2 3104 str.w r3, [r2, #260] ; 0x104 /*------------------------ DMACRCR Configuration --------------------*/ dmaregval = (((uint32_t)dmaconf->FlushRxPacket << 31) | - 8032116: 683b ldr r3, [r7, #0] - 8032118: 7f1b ldrb r3, [r3, #28] - 803211a: 07da lsls r2, r3, #31 + 8032156: 683b ldr r3, [r7, #0] + 8032158: 7f1b ldrb r3, [r3, #28] + 803215a: 07da lsls r2, r3, #31 dmaconf->RxDMABurstLength); - 803211c: 683b ldr r3, [r7, #0] - 803211e: 699b ldr r3, [r3, #24] + 803215c: 683b ldr r3, [r7, #0] + 803215e: 699b ldr r3, [r3, #24] dmaregval = (((uint32_t)dmaconf->FlushRxPacket << 31) | - 8032120: 4313 orrs r3, r2 - 8032122: 60fb str r3, [r7, #12] + 8032160: 4313 orrs r3, r2 + 8032162: 60fb str r3, [r7, #12] /* Write to DMACRCR */ MODIFY_REG(heth->Instance->DMACRCR, ETH_DMACRCR_MASK, dmaregval); - 8032124: 687b ldr r3, [r7, #4] - 8032126: 681b ldr r3, [r3, #0] - 8032128: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 803212c: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 - 8032130: 4b0b ldr r3, [pc, #44] ; (8032160 ) - 8032132: 4013 ands r3, r2 - 8032134: 687a ldr r2, [r7, #4] - 8032136: 6812 ldr r2, [r2, #0] - 8032138: 68f9 ldr r1, [r7, #12] - 803213a: 430b orrs r3, r1 - 803213c: f502 5280 add.w r2, r2, #4096 ; 0x1000 - 8032140: f8c2 3108 str.w r3, [r2, #264] ; 0x108 -} - 8032144: bf00 nop - 8032146: 3714 adds r7, #20 - 8032148: 46bd mov sp, r7 - 803214a: f85d 7b04 ldr.w r7, [sp], #4 - 803214e: 4770 bx lr - 8032150: ffff87fd .word 0xffff87fd - 8032154: ffff2ffe .word 0xffff2ffe - 8032158: fffec000 .word 0xfffec000 - 803215c: ffc0efef .word 0xffc0efef - 8032160: 7fc0ffff .word 0x7fc0ffff - -08032164 : + 8032164: 687b ldr r3, [r7, #4] + 8032166: 681b ldr r3, [r3, #0] + 8032168: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803216c: f8d3 2108 ldr.w r2, [r3, #264] ; 0x108 + 8032170: 4b0b ldr r3, [pc, #44] ; (80321a0 ) + 8032172: 4013 ands r3, r2 + 8032174: 687a ldr r2, [r7, #4] + 8032176: 6812 ldr r2, [r2, #0] + 8032178: 68f9 ldr r1, [r7, #12] + 803217a: 430b orrs r3, r1 + 803217c: f502 5280 add.w r2, r2, #4096 ; 0x1000 + 8032180: f8c2 3108 str.w r3, [r2, #264] ; 0x108 +} + 8032184: bf00 nop + 8032186: 3714 adds r7, #20 + 8032188: 46bd mov sp, r7 + 803218a: f85d 7b04 ldr.w r7, [sp], #4 + 803218e: 4770 bx lr + 8032190: ffff87fd .word 0xffff87fd + 8032194: ffff2ffe .word 0xffff2ffe + 8032198: fffec000 .word 0xfffec000 + 803219c: ffc0efef .word 0xffc0efef + 80321a0: 7fc0ffff .word 0x7fc0ffff + +080321a4 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval HAL status */ static void ETH_MACDMAConfig(ETH_HandleTypeDef *heth) { - 8032164: b580 push {r7, lr} - 8032166: b0a4 sub sp, #144 ; 0x90 - 8032168: af00 add r7, sp, #0 - 803216a: 6078 str r0, [r7, #4] + 80321a4: b580 push {r7, lr} + 80321a6: b0a4 sub sp, #144 ; 0x90 + 80321a8: af00 add r7, sp, #0 + 80321aa: 6078 str r0, [r7, #4] ETH_MACConfigTypeDef macDefaultConf; ETH_DMAConfigTypeDef dmaDefaultConf; /*--------------- ETHERNET MAC registers default Configuration --------------*/ macDefaultConf.AutomaticPadCRCStrip = ENABLE; - 803216c: 2301 movs r3, #1 - 803216e: f887 303b strb.w r3, [r7, #59] ; 0x3b + 80321ac: 2301 movs r3, #1 + 80321ae: f887 303b strb.w r3, [r7, #59] ; 0x3b macDefaultConf.BackOffLimit = ETH_BACKOFFLIMIT_10; - 8032172: 2300 movs r3, #0 - 8032174: 653b str r3, [r7, #80] ; 0x50 + 80321b2: 2300 movs r3, #0 + 80321b4: 653b str r3, [r7, #80] ; 0x50 macDefaultConf.CarrierSenseBeforeTransmit = DISABLE; - 8032176: 2300 movs r3, #0 - 8032178: f887 3049 strb.w r3, [r7, #73] ; 0x49 + 80321b6: 2300 movs r3, #0 + 80321b8: f887 3049 strb.w r3, [r7, #73] ; 0x49 macDefaultConf.CarrierSenseDuringTransmit = DISABLE; - 803217c: 2300 movs r3, #0 - 803217e: f887 304b strb.w r3, [r7, #75] ; 0x4b + 80321bc: 2300 movs r3, #0 + 80321be: f887 304b strb.w r3, [r7, #75] ; 0x4b macDefaultConf.ChecksumOffload = ENABLE; - 8032182: 2301 movs r3, #1 - 8032184: f887 3030 strb.w r3, [r7, #48] ; 0x30 + 80321c2: 2301 movs r3, #1 + 80321c4: f887 3030 strb.w r3, [r7, #48] ; 0x30 macDefaultConf.CRCCheckingRxPackets = ENABLE; - 8032188: 2301 movs r3, #1 - 803218a: f887 305e strb.w r3, [r7, #94] ; 0x5e + 80321c8: 2301 movs r3, #1 + 80321ca: f887 305e strb.w r3, [r7, #94] ; 0x5e macDefaultConf.CRCStripTypePacket = ENABLE; - 803218e: 2301 movs r3, #1 - 8032190: f887 303a strb.w r3, [r7, #58] ; 0x3a + 80321ce: 2301 movs r3, #1 + 80321d0: f887 303a strb.w r3, [r7, #58] ; 0x3a macDefaultConf.DeferralCheck = DISABLE; - 8032194: 2300 movs r3, #0 - 8032196: f887 3054 strb.w r3, [r7, #84] ; 0x54 + 80321d4: 2300 movs r3, #0 + 80321d6: f887 3054 strb.w r3, [r7, #84] ; 0x54 macDefaultConf.DropTCPIPChecksumErrorPacket = ENABLE; - 803219a: 2301 movs r3, #1 - 803219c: f887 308c strb.w r3, [r7, #140] ; 0x8c + 80321da: 2301 movs r3, #1 + 80321dc: f887 308c strb.w r3, [r7, #140] ; 0x8c macDefaultConf.DuplexMode = ETH_FULLDUPLEX_MODE; - 80321a0: f44f 5300 mov.w r3, #8192 ; 0x2000 - 80321a4: 647b str r3, [r7, #68] ; 0x44 + 80321e0: f44f 5300 mov.w r3, #8192 ; 0x2000 + 80321e4: 647b str r3, [r7, #68] ; 0x44 macDefaultConf.ExtendedInterPacketGap = DISABLE; - 80321a6: 2300 movs r3, #0 - 80321a8: f887 3064 strb.w r3, [r7, #100] ; 0x64 + 80321e6: 2300 movs r3, #0 + 80321e8: f887 3064 strb.w r3, [r7, #100] ; 0x64 macDefaultConf.ExtendedInterPacketGapVal = 0x0; - 80321ac: 2300 movs r3, #0 - 80321ae: 66bb str r3, [r7, #104] ; 0x68 + 80321ec: 2300 movs r3, #0 + 80321ee: 66bb str r3, [r7, #104] ; 0x68 macDefaultConf.ForwardRxErrorPacket = DISABLE; - 80321b0: 2300 movs r3, #0 - 80321b2: f887 308d strb.w r3, [r7, #141] ; 0x8d + 80321f0: 2300 movs r3, #0 + 80321f2: f887 308d strb.w r3, [r7, #141] ; 0x8d macDefaultConf.ForwardRxUndersizedGoodPacket = DISABLE; - 80321b6: 2300 movs r3, #0 - 80321b8: f887 308e strb.w r3, [r7, #142] ; 0x8e + 80321f6: 2300 movs r3, #0 + 80321f8: f887 308e strb.w r3, [r7, #142] ; 0x8e macDefaultConf.GiantPacketSizeLimit = 0x618; - 80321bc: f44f 63c3 mov.w r3, #1560 ; 0x618 - 80321c0: 663b str r3, [r7, #96] ; 0x60 + 80321fc: f44f 63c3 mov.w r3, #1560 ; 0x618 + 8032200: 663b str r3, [r7, #96] ; 0x60 macDefaultConf.GiantPacketSizeLimitControl = DISABLE; - 80321c2: 2300 movs r3, #0 - 80321c4: f887 3038 strb.w r3, [r7, #56] ; 0x38 + 8032202: 2300 movs r3, #0 + 8032204: f887 3038 strb.w r3, [r7, #56] ; 0x38 macDefaultConf.InterPacketGapVal = ETH_INTERPACKETGAP_96BIT; - 80321c8: 2300 movs r3, #0 - 80321ca: 637b str r3, [r7, #52] ; 0x34 + 8032208: 2300 movs r3, #0 + 803220a: 637b str r3, [r7, #52] ; 0x34 macDefaultConf.Jabber = ENABLE; - 80321cc: 2301 movs r3, #1 - 80321ce: f887 303d strb.w r3, [r7, #61] ; 0x3d + 803220c: 2301 movs r3, #1 + 803220e: f887 303d strb.w r3, [r7, #61] ; 0x3d macDefaultConf.JumboPacket = DISABLE; - 80321d2: 2300 movs r3, #0 - 80321d4: f887 303e strb.w r3, [r7, #62] ; 0x3e + 8032212: 2300 movs r3, #0 + 8032214: f887 303e strb.w r3, [r7, #62] ; 0x3e macDefaultConf.LoopbackMode = DISABLE; - 80321d8: 2300 movs r3, #0 - 80321da: f887 3048 strb.w r3, [r7, #72] ; 0x48 + 8032218: 2300 movs r3, #0 + 803221a: f887 3048 strb.w r3, [r7, #72] ; 0x48 macDefaultConf.PauseLowThreshold = ETH_PAUSELOWTHRESHOLD_MINUS_4; - 80321de: 2300 movs r3, #0 - 80321e0: 67fb str r3, [r7, #124] ; 0x7c + 803221e: 2300 movs r3, #0 + 8032220: 67fb str r3, [r7, #124] ; 0x7c macDefaultConf.PauseTime = 0x0; - 80321e2: 2300 movs r3, #0 - 80321e4: 677b str r3, [r7, #116] ; 0x74 + 8032222: 2300 movs r3, #0 + 8032224: 677b str r3, [r7, #116] ; 0x74 macDefaultConf.PreambleLength = ETH_PREAMBLELENGTH_7; - 80321e6: 2300 movs r3, #0 - 80321e8: 65bb str r3, [r7, #88] ; 0x58 + 8032226: 2300 movs r3, #0 + 8032228: 65bb str r3, [r7, #88] ; 0x58 macDefaultConf.ProgrammableWatchdog = DISABLE; - 80321ea: 2300 movs r3, #0 - 80321ec: f887 306c strb.w r3, [r7, #108] ; 0x6c + 803222a: 2300 movs r3, #0 + 803222c: f887 306c strb.w r3, [r7, #108] ; 0x6c macDefaultConf.ReceiveFlowControl = DISABLE; - 80321f0: 2300 movs r3, #0 - 80321f2: f887 3082 strb.w r3, [r7, #130] ; 0x82 + 8032230: 2300 movs r3, #0 + 8032232: f887 3082 strb.w r3, [r7, #130] ; 0x82 macDefaultConf.ReceiveOwn = ENABLE; - 80321f6: 2301 movs r3, #1 - 80321f8: f887 304a strb.w r3, [r7, #74] ; 0x4a + 8032236: 2301 movs r3, #1 + 8032238: f887 304a strb.w r3, [r7, #74] ; 0x4a macDefaultConf.ReceiveQueueMode = ETH_RECEIVESTOREFORWARD; - 80321fc: 2320 movs r3, #32 - 80321fe: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 803223c: 2320 movs r3, #32 + 803223e: f8c7 3088 str.w r3, [r7, #136] ; 0x88 macDefaultConf.RetryTransmission = ENABLE; - 8032202: 2301 movs r3, #1 - 8032204: f887 304c strb.w r3, [r7, #76] ; 0x4c + 8032242: 2301 movs r3, #1 + 8032244: f887 304c strb.w r3, [r7, #76] ; 0x4c macDefaultConf.SlowProtocolDetect = DISABLE; - 8032208: 2300 movs r3, #0 - 803220a: f887 305d strb.w r3, [r7, #93] ; 0x5d + 8032248: 2300 movs r3, #0 + 803224a: f887 305d strb.w r3, [r7, #93] ; 0x5d macDefaultConf.SourceAddrControl = ETH_SOURCEADDRESS_REPLACE_ADDR0; - 803220e: f04f 5340 mov.w r3, #805306368 ; 0x30000000 - 8032212: 62fb str r3, [r7, #44] ; 0x2c + 803224e: f04f 5340 mov.w r3, #805306368 ; 0x30000000 + 8032252: 62fb str r3, [r7, #44] ; 0x2c macDefaultConf.Speed = ETH_SPEED_100M; - 8032214: f44f 4380 mov.w r3, #16384 ; 0x4000 - 8032218: 643b str r3, [r7, #64] ; 0x40 + 8032254: f44f 4380 mov.w r3, #16384 ; 0x4000 + 8032258: 643b str r3, [r7, #64] ; 0x40 macDefaultConf.Support2KPacket = DISABLE; - 803221a: 2300 movs r3, #0 - 803221c: f887 3039 strb.w r3, [r7, #57] ; 0x39 + 803225a: 2300 movs r3, #0 + 803225c: f887 3039 strb.w r3, [r7, #57] ; 0x39 macDefaultConf.TransmitQueueMode = ETH_TRANSMITSTOREFORWARD; - 8032220: 2302 movs r3, #2 - 8032222: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 8032260: 2302 movs r3, #2 + 8032262: f8c7 3084 str.w r3, [r7, #132] ; 0x84 macDefaultConf.TransmitFlowControl = DISABLE; - 8032226: 2300 movs r3, #0 - 8032228: f887 3080 strb.w r3, [r7, #128] ; 0x80 + 8032266: 2300 movs r3, #0 + 8032268: f887 3080 strb.w r3, [r7, #128] ; 0x80 macDefaultConf.UnicastPausePacketDetect = DISABLE; - 803222c: 2300 movs r3, #0 - 803222e: f887 3081 strb.w r3, [r7, #129] ; 0x81 + 803226c: 2300 movs r3, #0 + 803226e: f887 3081 strb.w r3, [r7, #129] ; 0x81 macDefaultConf.UnicastSlowProtocolPacketDetect = DISABLE; - 8032232: 2300 movs r3, #0 - 8032234: f887 305c strb.w r3, [r7, #92] ; 0x5c + 8032272: 2300 movs r3, #0 + 8032274: f887 305c strb.w r3, [r7, #92] ; 0x5c macDefaultConf.Watchdog = ENABLE; - 8032238: 2301 movs r3, #1 - 803223a: f887 303c strb.w r3, [r7, #60] ; 0x3c + 8032278: 2301 movs r3, #1 + 803227a: f887 303c strb.w r3, [r7, #60] ; 0x3c macDefaultConf.WatchdogTimeout = ETH_MACWTR_WTO_2KB; - 803223e: 2300 movs r3, #0 - 8032240: 673b str r3, [r7, #112] ; 0x70 + 803227e: 2300 movs r3, #0 + 8032280: 673b str r3, [r7, #112] ; 0x70 macDefaultConf.ZeroQuantaPause = ENABLE; - 8032242: 2301 movs r3, #1 - 8032244: f887 3078 strb.w r3, [r7, #120] ; 0x78 + 8032282: 2301 movs r3, #1 + 8032284: f887 3078 strb.w r3, [r7, #120] ; 0x78 /* MAC default configuration */ ETH_SetMACConfig(heth, &macDefaultConf); - 8032248: f107 032c add.w r3, r7, #44 ; 0x2c - 803224c: 4619 mov r1, r3 - 803224e: 6878 ldr r0, [r7, #4] - 8032250: f7ff fde6 bl 8031e20 + 8032288: f107 032c add.w r3, r7, #44 ; 0x2c + 803228c: 4619 mov r1, r3 + 803228e: 6878 ldr r0, [r7, #4] + 8032290: f7ff fde6 bl 8031e60 /*--------------- ETHERNET DMA registers default Configuration --------------*/ dmaDefaultConf.AddressAlignedBeats = ENABLE; - 8032254: 2301 movs r3, #1 - 8032256: 733b strb r3, [r7, #12] + 8032294: 2301 movs r3, #1 + 8032296: 733b strb r3, [r7, #12] dmaDefaultConf.BurstMode = ETH_BURSTLENGTH_FIXED; - 8032258: 2301 movs r3, #1 - 803225a: 613b str r3, [r7, #16] + 8032298: 2301 movs r3, #1 + 803229a: 613b str r3, [r7, #16] dmaDefaultConf.DMAArbitration = ETH_DMAARBITRATION_RX1_TX1; - 803225c: 2300 movs r3, #0 - 803225e: 60bb str r3, [r7, #8] + 803229c: 2300 movs r3, #0 + 803229e: 60bb str r3, [r7, #8] dmaDefaultConf.FlushRxPacket = DISABLE; - 8032260: 2300 movs r3, #0 - 8032262: f887 3024 strb.w r3, [r7, #36] ; 0x24 + 80322a0: 2300 movs r3, #0 + 80322a2: f887 3024 strb.w r3, [r7, #36] ; 0x24 dmaDefaultConf.PBLx8Mode = DISABLE; - 8032266: 2300 movs r3, #0 - 8032268: 757b strb r3, [r7, #21] + 80322a6: 2300 movs r3, #0 + 80322a8: 757b strb r3, [r7, #21] dmaDefaultConf.RebuildINCRxBurst = DISABLE; - 803226a: 2300 movs r3, #0 - 803226c: 753b strb r3, [r7, #20] + 80322aa: 2300 movs r3, #0 + 80322ac: 753b strb r3, [r7, #20] dmaDefaultConf.RxDMABurstLength = ETH_RXDMABURSTLENGTH_32BEAT; - 803226e: f44f 1300 mov.w r3, #2097152 ; 0x200000 - 8032272: 623b str r3, [r7, #32] + 80322ae: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 80322b2: 623b str r3, [r7, #32] dmaDefaultConf.SecondPacketOperate = DISABLE; - 8032274: 2300 movs r3, #0 - 8032276: 773b strb r3, [r7, #28] + 80322b4: 2300 movs r3, #0 + 80322b6: 773b strb r3, [r7, #28] dmaDefaultConf.TxDMABurstLength = ETH_TXDMABURSTLENGTH_32BEAT; - 8032278: f44f 1300 mov.w r3, #2097152 ; 0x200000 - 803227c: 61bb str r3, [r7, #24] + 80322b8: f44f 1300 mov.w r3, #2097152 ; 0x200000 + 80322bc: 61bb str r3, [r7, #24] dmaDefaultConf.TCPSegmentation = DISABLE; - 803227e: 2300 movs r3, #0 - 8032280: f887 3025 strb.w r3, [r7, #37] ; 0x25 + 80322be: 2300 movs r3, #0 + 80322c0: f887 3025 strb.w r3, [r7, #37] ; 0x25 dmaDefaultConf.MaximumSegmentSize = ETH_SEGMENT_SIZE_DEFAULT; - 8032284: f44f 7306 mov.w r3, #536 ; 0x218 - 8032288: 62bb str r3, [r7, #40] ; 0x28 + 80322c4: f44f 7306 mov.w r3, #536 ; 0x218 + 80322c8: 62bb str r3, [r7, #40] ; 0x28 /* DMA default configuration */ ETH_SetDMAConfig(heth, &dmaDefaultConf); - 803228a: f107 0308 add.w r3, r7, #8 - 803228e: 4619 mov r1, r3 - 8032290: 6878 ldr r0, [r7, #4] - 8032292: f7ff fee1 bl 8032058 + 80322ca: f107 0308 add.w r3, r7, #8 + 80322ce: 4619 mov r1, r3 + 80322d0: 6878 ldr r0, [r7, #4] + 80322d2: f7ff fee1 bl 8032098 } - 8032296: bf00 nop - 8032298: 3790 adds r7, #144 ; 0x90 - 803229a: 46bd mov sp, r7 - 803229c: bd80 pop {r7, pc} + 80322d6: bf00 nop + 80322d8: 3790 adds r7, #144 ; 0x90 + 80322da: 46bd mov sp, r7 + 80322dc: bd80 pop {r7, pc} -0803229e : +080322de : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ static void ETH_DMATxDescListInit(ETH_HandleTypeDef *heth) { - 803229e: b480 push {r7} - 80322a0: b085 sub sp, #20 - 80322a2: af00 add r7, sp, #0 - 80322a4: 6078 str r0, [r7, #4] + 80322de: b480 push {r7} + 80322e0: b085 sub sp, #20 + 80322e2: af00 add r7, sp, #0 + 80322e4: 6078 str r0, [r7, #4] ETH_DMADescTypeDef *dmatxdesc; uint32_t i; /* Fill each DMATxDesc descriptor with the right values */ for (i = 0; i < (uint32_t)ETH_TX_DESC_CNT; i++) - 80322a6: 2300 movs r3, #0 - 80322a8: 60fb str r3, [r7, #12] - 80322aa: e01d b.n 80322e8 + 80322e6: 2300 movs r3, #0 + 80322e8: 60fb str r3, [r7, #12] + 80322ea: e01d b.n 8032328 { dmatxdesc = heth->Init.TxDesc + i; - 80322ac: 687b ldr r3, [r7, #4] - 80322ae: 68d9 ldr r1, [r3, #12] - 80322b0: 68fa ldr r2, [r7, #12] - 80322b2: 4613 mov r3, r2 - 80322b4: 005b lsls r3, r3, #1 - 80322b6: 4413 add r3, r2 - 80322b8: 00db lsls r3, r3, #3 - 80322ba: 440b add r3, r1 - 80322bc: 60bb str r3, [r7, #8] + 80322ec: 687b ldr r3, [r7, #4] + 80322ee: 68d9 ldr r1, [r3, #12] + 80322f0: 68fa ldr r2, [r7, #12] + 80322f2: 4613 mov r3, r2 + 80322f4: 005b lsls r3, r3, #1 + 80322f6: 4413 add r3, r2 + 80322f8: 00db lsls r3, r3, #3 + 80322fa: 440b add r3, r1 + 80322fc: 60bb str r3, [r7, #8] WRITE_REG(dmatxdesc->DESC0, 0x0); - 80322be: 68bb ldr r3, [r7, #8] - 80322c0: 2200 movs r2, #0 - 80322c2: 601a str r2, [r3, #0] + 80322fe: 68bb ldr r3, [r7, #8] + 8032300: 2200 movs r2, #0 + 8032302: 601a str r2, [r3, #0] WRITE_REG(dmatxdesc->DESC1, 0x0); - 80322c4: 68bb ldr r3, [r7, #8] - 80322c6: 2200 movs r2, #0 - 80322c8: 605a str r2, [r3, #4] + 8032304: 68bb ldr r3, [r7, #8] + 8032306: 2200 movs r2, #0 + 8032308: 605a str r2, [r3, #4] WRITE_REG(dmatxdesc->DESC2, 0x0); - 80322ca: 68bb ldr r3, [r7, #8] - 80322cc: 2200 movs r2, #0 - 80322ce: 609a str r2, [r3, #8] + 803230a: 68bb ldr r3, [r7, #8] + 803230c: 2200 movs r2, #0 + 803230e: 609a str r2, [r3, #8] WRITE_REG(dmatxdesc->DESC3, 0x0); - 80322d0: 68bb ldr r3, [r7, #8] - 80322d2: 2200 movs r2, #0 - 80322d4: 60da str r2, [r3, #12] + 8032310: 68bb ldr r3, [r7, #8] + 8032312: 2200 movs r2, #0 + 8032314: 60da str r2, [r3, #12] WRITE_REG(heth->TxDescList.TxDesc[i], (uint32_t)dmatxdesc); - 80322d6: 68b9 ldr r1, [r7, #8] - 80322d8: 687b ldr r3, [r7, #4] - 80322da: 68fa ldr r2, [r7, #12] - 80322dc: 3206 adds r2, #6 - 80322de: f843 1022 str.w r1, [r3, r2, lsl #2] + 8032316: 68b9 ldr r1, [r7, #8] + 8032318: 687b ldr r3, [r7, #4] + 803231a: 68fa ldr r2, [r7, #12] + 803231c: 3206 adds r2, #6 + 803231e: f843 1022 str.w r1, [r3, r2, lsl #2] for (i = 0; i < (uint32_t)ETH_TX_DESC_CNT; i++) - 80322e2: 68fb ldr r3, [r7, #12] - 80322e4: 3301 adds r3, #1 - 80322e6: 60fb str r3, [r7, #12] - 80322e8: 68fb ldr r3, [r7, #12] - 80322ea: 2b03 cmp r3, #3 - 80322ec: d9de bls.n 80322ac + 8032322: 68fb ldr r3, [r7, #12] + 8032324: 3301 adds r3, #1 + 8032326: 60fb str r3, [r7, #12] + 8032328: 68fb ldr r3, [r7, #12] + 803232a: 2b03 cmp r3, #3 + 803232c: d9de bls.n 80322ec } heth->TxDescList.CurTxDesc = 0; - 80322ee: 687b ldr r3, [r7, #4] - 80322f0: 2200 movs r2, #0 - 80322f2: 629a str r2, [r3, #40] ; 0x28 + 803232e: 687b ldr r3, [r7, #4] + 8032330: 2200 movs r2, #0 + 8032332: 629a str r2, [r3, #40] ; 0x28 /* Set Transmit Descriptor Ring Length */ WRITE_REG(heth->Instance->DMACTDRLR, (ETH_TX_DESC_CNT - 1U)); - 80322f4: 687b ldr r3, [r7, #4] - 80322f6: 681b ldr r3, [r3, #0] - 80322f8: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80322fc: 461a mov r2, r3 - 80322fe: 2303 movs r3, #3 - 8032300: f8c2 312c str.w r3, [r2, #300] ; 0x12c + 8032334: 687b ldr r3, [r7, #4] + 8032336: 681b ldr r3, [r3, #0] + 8032338: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803233c: 461a mov r2, r3 + 803233e: 2303 movs r3, #3 + 8032340: f8c2 312c str.w r3, [r2, #300] ; 0x12c /* Set Transmit Descriptor List Address */ WRITE_REG(heth->Instance->DMACTDLAR, (uint32_t) heth->Init.TxDesc); - 8032304: 687b ldr r3, [r7, #4] - 8032306: 68da ldr r2, [r3, #12] - 8032308: 687b ldr r3, [r7, #4] - 803230a: 681b ldr r3, [r3, #0] - 803230c: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8032310: f8c3 2114 str.w r2, [r3, #276] ; 0x114 + 8032344: 687b ldr r3, [r7, #4] + 8032346: 68da ldr r2, [r3, #12] + 8032348: 687b ldr r3, [r7, #4] + 803234a: 681b ldr r3, [r3, #0] + 803234c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8032350: f8c3 2114 str.w r2, [r3, #276] ; 0x114 /* Set Transmit Descriptor Tail pointer */ WRITE_REG(heth->Instance->DMACTDTPR, (uint32_t) heth->Init.TxDesc); - 8032314: 687b ldr r3, [r7, #4] - 8032316: 68da ldr r2, [r3, #12] - 8032318: 687b ldr r3, [r7, #4] - 803231a: 681b ldr r3, [r3, #0] - 803231c: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 8032320: f8c3 2120 str.w r2, [r3, #288] ; 0x120 -} - 8032324: bf00 nop - 8032326: 3714 adds r7, #20 - 8032328: 46bd mov sp, r7 - 803232a: f85d 7b04 ldr.w r7, [sp], #4 - 803232e: 4770 bx lr - -08032330 : + 8032354: 687b ldr r3, [r7, #4] + 8032356: 68da ldr r2, [r3, #12] + 8032358: 687b ldr r3, [r7, #4] + 803235a: 681b ldr r3, [r3, #0] + 803235c: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8032360: f8c3 2120 str.w r2, [r3, #288] ; 0x120 +} + 8032364: bf00 nop + 8032366: 3714 adds r7, #20 + 8032368: 46bd mov sp, r7 + 803236a: f85d 7b04 ldr.w r7, [sp], #4 + 803236e: 4770 bx lr + +08032370 : * @param heth: pointer to a ETH_HandleTypeDef structure that contains * the configuration information for ETHERNET module * @retval None */ static void ETH_DMARxDescListInit(ETH_HandleTypeDef *heth) { - 8032330: b480 push {r7} - 8032332: b085 sub sp, #20 - 8032334: af00 add r7, sp, #0 - 8032336: 6078 str r0, [r7, #4] + 8032370: b480 push {r7} + 8032372: b085 sub sp, #20 + 8032374: af00 add r7, sp, #0 + 8032376: 6078 str r0, [r7, #4] ETH_DMADescTypeDef *dmarxdesc; uint32_t i; for (i = 0; i < (uint32_t)ETH_RX_DESC_CNT; i++) - 8032338: 2300 movs r3, #0 - 803233a: 60fb str r3, [r7, #12] - 803233c: e023 b.n 8032386 + 8032378: 2300 movs r3, #0 + 803237a: 60fb str r3, [r7, #12] + 803237c: e023 b.n 80323c6 { dmarxdesc = heth->Init.RxDesc + i; - 803233e: 687b ldr r3, [r7, #4] - 8032340: 6919 ldr r1, [r3, #16] - 8032342: 68fa ldr r2, [r7, #12] - 8032344: 4613 mov r3, r2 - 8032346: 005b lsls r3, r3, #1 - 8032348: 4413 add r3, r2 - 803234a: 00db lsls r3, r3, #3 - 803234c: 440b add r3, r1 - 803234e: 60bb str r3, [r7, #8] + 803237e: 687b ldr r3, [r7, #4] + 8032380: 6919 ldr r1, [r3, #16] + 8032382: 68fa ldr r2, [r7, #12] + 8032384: 4613 mov r3, r2 + 8032386: 005b lsls r3, r3, #1 + 8032388: 4413 add r3, r2 + 803238a: 00db lsls r3, r3, #3 + 803238c: 440b add r3, r1 + 803238e: 60bb str r3, [r7, #8] WRITE_REG(dmarxdesc->DESC0, 0x0); - 8032350: 68bb ldr r3, [r7, #8] - 8032352: 2200 movs r2, #0 - 8032354: 601a str r2, [r3, #0] + 8032390: 68bb ldr r3, [r7, #8] + 8032392: 2200 movs r2, #0 + 8032394: 601a str r2, [r3, #0] WRITE_REG(dmarxdesc->DESC1, 0x0); - 8032356: 68bb ldr r3, [r7, #8] - 8032358: 2200 movs r2, #0 - 803235a: 605a str r2, [r3, #4] + 8032396: 68bb ldr r3, [r7, #8] + 8032398: 2200 movs r2, #0 + 803239a: 605a str r2, [r3, #4] WRITE_REG(dmarxdesc->DESC2, 0x0); - 803235c: 68bb ldr r3, [r7, #8] - 803235e: 2200 movs r2, #0 - 8032360: 609a str r2, [r3, #8] + 803239c: 68bb ldr r3, [r7, #8] + 803239e: 2200 movs r2, #0 + 80323a0: 609a str r2, [r3, #8] WRITE_REG(dmarxdesc->DESC3, 0x0); - 8032362: 68bb ldr r3, [r7, #8] - 8032364: 2200 movs r2, #0 - 8032366: 60da str r2, [r3, #12] + 80323a2: 68bb ldr r3, [r7, #8] + 80323a4: 2200 movs r2, #0 + 80323a6: 60da str r2, [r3, #12] WRITE_REG(dmarxdesc->BackupAddr0, 0x0); - 8032368: 68bb ldr r3, [r7, #8] - 803236a: 2200 movs r2, #0 - 803236c: 611a str r2, [r3, #16] + 80323a8: 68bb ldr r3, [r7, #8] + 80323aa: 2200 movs r2, #0 + 80323ac: 611a str r2, [r3, #16] WRITE_REG(dmarxdesc->BackupAddr1, 0x0); - 803236e: 68bb ldr r3, [r7, #8] - 8032370: 2200 movs r2, #0 - 8032372: 615a str r2, [r3, #20] + 80323ae: 68bb ldr r3, [r7, #8] + 80323b0: 2200 movs r2, #0 + 80323b2: 615a str r2, [r3, #20] /* Set Rx descritors addresses */ WRITE_REG(heth->RxDescList.RxDesc[i], (uint32_t)dmarxdesc); - 8032374: 68b9 ldr r1, [r7, #8] - 8032376: 687b ldr r3, [r7, #4] - 8032378: 68fa ldr r2, [r7, #12] - 803237a: 3212 adds r2, #18 - 803237c: f843 1022 str.w r1, [r3, r2, lsl #2] + 80323b4: 68b9 ldr r1, [r7, #8] + 80323b6: 687b ldr r3, [r7, #4] + 80323b8: 68fa ldr r2, [r7, #12] + 80323ba: 3212 adds r2, #18 + 80323bc: f843 1022 str.w r1, [r3, r2, lsl #2] for (i = 0; i < (uint32_t)ETH_RX_DESC_CNT; i++) - 8032380: 68fb ldr r3, [r7, #12] - 8032382: 3301 adds r3, #1 - 8032384: 60fb str r3, [r7, #12] - 8032386: 68fb ldr r3, [r7, #12] - 8032388: 2b03 cmp r3, #3 - 803238a: d9d8 bls.n 803233e + 80323c0: 68fb ldr r3, [r7, #12] + 80323c2: 3301 adds r3, #1 + 80323c4: 60fb str r3, [r7, #12] + 80323c6: 68fb ldr r3, [r7, #12] + 80323c8: 2b03 cmp r3, #3 + 80323ca: d9d8 bls.n 803237e } WRITE_REG(heth->RxDescList.RxDescIdx, 0); - 803238c: 687b ldr r3, [r7, #4] - 803238e: 2200 movs r2, #0 - 8032390: 65da str r2, [r3, #92] ; 0x5c + 80323cc: 687b ldr r3, [r7, #4] + 80323ce: 2200 movs r2, #0 + 80323d0: 65da str r2, [r3, #92] ; 0x5c WRITE_REG(heth->RxDescList.RxDescCnt, 0); - 8032392: 687b ldr r3, [r7, #4] - 8032394: 2200 movs r2, #0 - 8032396: 661a str r2, [r3, #96] ; 0x60 + 80323d2: 687b ldr r3, [r7, #4] + 80323d4: 2200 movs r2, #0 + 80323d6: 661a str r2, [r3, #96] ; 0x60 WRITE_REG(heth->RxDescList.RxBuildDescIdx, 0); - 8032398: 687b ldr r3, [r7, #4] - 803239a: 2200 movs r2, #0 - 803239c: 669a str r2, [r3, #104] ; 0x68 + 80323d8: 687b ldr r3, [r7, #4] + 80323da: 2200 movs r2, #0 + 80323dc: 669a str r2, [r3, #104] ; 0x68 WRITE_REG(heth->RxDescList.RxBuildDescCnt, 0); - 803239e: 687b ldr r3, [r7, #4] - 80323a0: 2200 movs r2, #0 - 80323a2: 66da str r2, [r3, #108] ; 0x6c + 80323de: 687b ldr r3, [r7, #4] + 80323e0: 2200 movs r2, #0 + 80323e2: 66da str r2, [r3, #108] ; 0x6c WRITE_REG(heth->RxDescList.ItMode, 0); - 80323a4: 687b ldr r3, [r7, #4] - 80323a6: 2200 movs r2, #0 - 80323a8: 659a str r2, [r3, #88] ; 0x58 + 80323e4: 687b ldr r3, [r7, #4] + 80323e6: 2200 movs r2, #0 + 80323e8: 659a str r2, [r3, #88] ; 0x58 /* Set Receive Descriptor Ring Length */ WRITE_REG(heth->Instance->DMACRDRLR, ((uint32_t)(ETH_RX_DESC_CNT - 1U))); - 80323aa: 687b ldr r3, [r7, #4] - 80323ac: 681b ldr r3, [r3, #0] - 80323ae: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80323b2: 461a mov r2, r3 - 80323b4: 2303 movs r3, #3 - 80323b6: f8c2 3130 str.w r3, [r2, #304] ; 0x130 + 80323ea: 687b ldr r3, [r7, #4] + 80323ec: 681b ldr r3, [r3, #0] + 80323ee: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 80323f2: 461a mov r2, r3 + 80323f4: 2303 movs r3, #3 + 80323f6: f8c2 3130 str.w r3, [r2, #304] ; 0x130 /* Set Receive Descriptor List Address */ WRITE_REG(heth->Instance->DMACRDLAR, (uint32_t) heth->Init.RxDesc); - 80323ba: 687b ldr r3, [r7, #4] - 80323bc: 691a ldr r2, [r3, #16] - 80323be: 687b ldr r3, [r7, #4] - 80323c0: 681b ldr r3, [r3, #0] - 80323c2: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80323c6: f8c3 211c str.w r2, [r3, #284] ; 0x11c + 80323fa: 687b ldr r3, [r7, #4] + 80323fc: 691a ldr r2, [r3, #16] + 80323fe: 687b ldr r3, [r7, #4] + 8032400: 681b ldr r3, [r3, #0] + 8032402: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 8032406: f8c3 211c str.w r2, [r3, #284] ; 0x11c /* Set Receive Descriptor Tail pointer Address */ WRITE_REG(heth->Instance->DMACRDTPR, ((uint32_t)(heth->Init.RxDesc + (uint32_t)(ETH_RX_DESC_CNT - 1U)))); - 80323ca: 687b ldr r3, [r7, #4] - 80323cc: 691b ldr r3, [r3, #16] - 80323ce: f103 0248 add.w r2, r3, #72 ; 0x48 - 80323d2: 687b ldr r3, [r7, #4] - 80323d4: 681b ldr r3, [r3, #0] - 80323d6: f503 5380 add.w r3, r3, #4096 ; 0x1000 - 80323da: f8c3 2128 str.w r2, [r3, #296] ; 0x128 -} - 80323de: bf00 nop - 80323e0: 3714 adds r7, #20 - 80323e2: 46bd mov sp, r7 - 80323e4: f85d 7b04 ldr.w r7, [sp], #4 - 80323e8: 4770 bx lr + 803240a: 687b ldr r3, [r7, #4] + 803240c: 691b ldr r3, [r3, #16] + 803240e: f103 0248 add.w r2, r3, #72 ; 0x48 + 8032412: 687b ldr r3, [r7, #4] + 8032414: 681b ldr r3, [r3, #0] + 8032416: f503 5380 add.w r3, r3, #4096 ; 0x1000 + 803241a: f8c3 2128 str.w r2, [r3, #296] ; 0x128 +} + 803241e: bf00 nop + 8032420: 3714 adds r7, #20 + 8032422: 46bd mov sp, r7 + 8032424: f85d 7b04 ldr.w r7, [sp], #4 + 8032428: 4770 bx lr ... -080323ec : +0803242c : * @param pTxConfig: Tx packet configuration * @param ItMode: Enable or disable Tx EOT interrept * @retval Status */ static uint32_t ETH_Prepare_Tx_Descriptors(ETH_HandleTypeDef *heth, ETH_TxPacketConfig *pTxConfig, uint32_t ItMode) { - 80323ec: b480 push {r7} - 80323ee: b08d sub sp, #52 ; 0x34 - 80323f0: af00 add r7, sp, #0 - 80323f2: 60f8 str r0, [r7, #12] - 80323f4: 60b9 str r1, [r7, #8] - 80323f6: 607a str r2, [r7, #4] + 803242c: b480 push {r7} + 803242e: b08d sub sp, #52 ; 0x34 + 8032430: af00 add r7, sp, #0 + 8032432: 60f8 str r0, [r7, #12] + 8032434: 60b9 str r1, [r7, #8] + 8032436: 607a str r2, [r7, #4] ETH_TxDescListTypeDef *dmatxdesclist = &heth->TxDescList; - 80323f8: 68fb ldr r3, [r7, #12] - 80323fa: 3318 adds r3, #24 - 80323fc: 617b str r3, [r7, #20] + 8032438: 68fb ldr r3, [r7, #12] + 803243a: 3318 adds r3, #24 + 803243c: 617b str r3, [r7, #20] uint32_t descidx = dmatxdesclist->CurTxDesc; - 80323fe: 697b ldr r3, [r7, #20] - 8032400: 691b ldr r3, [r3, #16] - 8032402: 62fb str r3, [r7, #44] ; 0x2c + 803243e: 697b ldr r3, [r7, #20] + 8032440: 691b ldr r3, [r3, #16] + 8032442: 62fb str r3, [r7, #44] ; 0x2c uint32_t firstdescidx = dmatxdesclist->CurTxDesc; - 8032404: 697b ldr r3, [r7, #20] - 8032406: 691b ldr r3, [r3, #16] - 8032408: 613b str r3, [r7, #16] + 8032444: 697b ldr r3, [r7, #20] + 8032446: 691b ldr r3, [r3, #16] + 8032448: 613b str r3, [r7, #16] uint32_t idx; uint32_t descnbr = 0; - 803240a: 2300 movs r3, #0 - 803240c: 627b str r3, [r7, #36] ; 0x24 + 803244a: 2300 movs r3, #0 + 803244c: 627b str r3, [r7, #36] ; 0x24 ETH_DMADescTypeDef *dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 803240e: 697b ldr r3, [r7, #20] - 8032410: 6afa ldr r2, [r7, #44] ; 0x2c - 8032412: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8032416: 623b str r3, [r7, #32] + 803244e: 697b ldr r3, [r7, #20] + 8032450: 6afa ldr r2, [r7, #44] ; 0x2c + 8032452: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8032456: 623b str r3, [r7, #32] ETH_BufferTypeDef *txbuffer = pTxConfig->TxBuffer; - 8032418: 68bb ldr r3, [r7, #8] - 803241a: 689b ldr r3, [r3, #8] - 803241c: 61fb str r3, [r7, #28] + 8032458: 68bb ldr r3, [r7, #8] + 803245a: 689b ldr r3, [r3, #8] + 803245c: 61fb str r3, [r7, #28] uint32_t bd_count = 0; - 803241e: 2300 movs r3, #0 - 8032420: 61bb str r3, [r7, #24] + 803245e: 2300 movs r3, #0 + 8032460: 61bb str r3, [r7, #24] /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ if ((READ_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCWBF_OWN) == ETH_DMATXNDESCWBF_OWN) - 8032422: 6a3b ldr r3, [r7, #32] - 8032424: 68db ldr r3, [r3, #12] - 8032426: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 - 803242a: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 803242e: d007 beq.n 8032440 + 8032462: 6a3b ldr r3, [r7, #32] + 8032464: 68db ldr r3, [r3, #12] + 8032466: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 + 803246a: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 803246e: d007 beq.n 8032480 || (dmatxdesclist->PacketAddress[descidx] != NULL)) - 8032430: 697a ldr r2, [r7, #20] - 8032432: 6afb ldr r3, [r7, #44] ; 0x2c - 8032434: 3304 adds r3, #4 - 8032436: 009b lsls r3, r3, #2 - 8032438: 4413 add r3, r2 - 803243a: 685b ldr r3, [r3, #4] - 803243c: 2b00 cmp r3, #0 - 803243e: d001 beq.n 8032444 + 8032470: 697a ldr r2, [r7, #20] + 8032472: 6afb ldr r3, [r7, #44] ; 0x2c + 8032474: 3304 adds r3, #4 + 8032476: 009b lsls r3, r3, #2 + 8032478: 4413 add r3, r2 + 803247a: 685b ldr r3, [r3, #4] + 803247c: 2b00 cmp r3, #0 + 803247e: d001 beq.n 8032484 { return HAL_ETH_ERROR_BUSY; - 8032440: 2302 movs r3, #2 - 8032442: e259 b.n 80328f8 + 8032480: 2302 movs r3, #2 + 8032482: e259 b.n 8032938 /***************************************************************************/ /***************** Context descriptor configuration (Optional) **********/ /***************************************************************************/ /* If VLAN tag is enabled for this packet */ if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_VLANTAG) != (uint32_t)RESET) - 8032444: 68bb ldr r3, [r7, #8] - 8032446: 681b ldr r3, [r3, #0] - 8032448: f003 0304 and.w r3, r3, #4 - 803244c: 2b00 cmp r3, #0 - 803244e: d044 beq.n 80324da + 8032484: 68bb ldr r3, [r7, #8] + 8032486: 681b ldr r3, [r3, #0] + 8032488: f003 0304 and.w r3, r3, #4 + 803248c: 2b00 cmp r3, #0 + 803248e: d044 beq.n 803251a { /* Set vlan tag value */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXCDESC_VT, pTxConfig->VlanTag); - 8032450: 6a3b ldr r3, [r7, #32] - 8032452: 68da ldr r2, [r3, #12] - 8032454: 4b75 ldr r3, [pc, #468] ; (803262c ) - 8032456: 4013 ands r3, r2 - 8032458: 68ba ldr r2, [r7, #8] - 803245a: 6a52 ldr r2, [r2, #36] ; 0x24 - 803245c: 431a orrs r2, r3 - 803245e: 6a3b ldr r3, [r7, #32] - 8032460: 60da str r2, [r3, #12] + 8032490: 6a3b ldr r3, [r7, #32] + 8032492: 68da ldr r2, [r3, #12] + 8032494: 4b75 ldr r3, [pc, #468] ; (803266c ) + 8032496: 4013 ands r3, r2 + 8032498: 68ba ldr r2, [r7, #8] + 803249a: 6a52 ldr r2, [r2, #36] ; 0x24 + 803249c: 431a orrs r2, r3 + 803249e: 6a3b ldr r3, [r7, #32] + 80324a0: 60da str r2, [r3, #12] /* Set vlan tag valid bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_VLTV); - 8032462: 6a3b ldr r3, [r7, #32] - 8032464: 68db ldr r3, [r3, #12] - 8032466: f443 3280 orr.w r2, r3, #65536 ; 0x10000 - 803246a: 6a3b ldr r3, [r7, #32] - 803246c: 60da str r2, [r3, #12] + 80324a2: 6a3b ldr r3, [r7, #32] + 80324a4: 68db ldr r3, [r3, #12] + 80324a6: f443 3280 orr.w r2, r3, #65536 ; 0x10000 + 80324aa: 6a3b ldr r3, [r7, #32] + 80324ac: 60da str r2, [r3, #12] /* Set the descriptor as the vlan input source */ SET_BIT(heth->Instance->MACVIR, ETH_MACVIR_VLTI); - 803246e: 68fb ldr r3, [r7, #12] - 8032470: 681b ldr r3, [r3, #0] - 8032472: 6e1a ldr r2, [r3, #96] ; 0x60 - 8032474: 68fb ldr r3, [r7, #12] - 8032476: 681b ldr r3, [r3, #0] - 8032478: f442 1280 orr.w r2, r2, #1048576 ; 0x100000 - 803247c: 661a str r2, [r3, #96] ; 0x60 + 80324ae: 68fb ldr r3, [r7, #12] + 80324b0: 681b ldr r3, [r3, #0] + 80324b2: 6e1a ldr r2, [r3, #96] ; 0x60 + 80324b4: 68fb ldr r3, [r7, #12] + 80324b6: 681b ldr r3, [r3, #0] + 80324b8: f442 1280 orr.w r2, r2, #1048576 ; 0x100000 + 80324bc: 661a str r2, [r3, #96] ; 0x60 /* if inner VLAN is enabled */ if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_INNERVLANTAG) != (uint32_t)RESET) - 803247e: 68bb ldr r3, [r7, #8] - 8032480: 681b ldr r3, [r3, #0] - 8032482: f003 0308 and.w r3, r3, #8 - 8032486: 2b00 cmp r3, #0 - 8032488: d027 beq.n 80324da + 80324be: 68bb ldr r3, [r7, #8] + 80324c0: 681b ldr r3, [r3, #0] + 80324c2: f003 0308 and.w r3, r3, #8 + 80324c6: 2b00 cmp r3, #0 + 80324c8: d027 beq.n 803251a { /* Set inner vlan tag value */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXCDESC_IVT, (pTxConfig->InnerVlanTag << 16)); - 803248a: 6a3b ldr r3, [r7, #32] - 803248c: 689b ldr r3, [r3, #8] - 803248e: b29a uxth r2, r3 - 8032490: 68bb ldr r3, [r7, #8] - 8032492: 6adb ldr r3, [r3, #44] ; 0x2c - 8032494: 041b lsls r3, r3, #16 - 8032496: 431a orrs r2, r3 - 8032498: 6a3b ldr r3, [r7, #32] - 803249a: 609a str r2, [r3, #8] + 80324ca: 6a3b ldr r3, [r7, #32] + 80324cc: 689b ldr r3, [r3, #8] + 80324ce: b29a uxth r2, r3 + 80324d0: 68bb ldr r3, [r7, #8] + 80324d2: 6adb ldr r3, [r3, #44] ; 0x2c + 80324d4: 041b lsls r3, r3, #16 + 80324d6: 431a orrs r2, r3 + 80324d8: 6a3b ldr r3, [r7, #32] + 80324da: 609a str r2, [r3, #8] /* Set inner vlan tag valid bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_IVLTV); - 803249c: 6a3b ldr r3, [r7, #32] - 803249e: 68db ldr r3, [r3, #12] - 80324a0: f443 3200 orr.w r2, r3, #131072 ; 0x20000 - 80324a4: 6a3b ldr r3, [r7, #32] - 80324a6: 60da str r2, [r3, #12] + 80324dc: 6a3b ldr r3, [r7, #32] + 80324de: 68db ldr r3, [r3, #12] + 80324e0: f443 3200 orr.w r2, r3, #131072 ; 0x20000 + 80324e4: 6a3b ldr r3, [r7, #32] + 80324e6: 60da str r2, [r3, #12] /* Set Vlan Tag control */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXCDESC_IVTIR, pTxConfig->InnerVlanCtrl); - 80324a8: 6a3b ldr r3, [r7, #32] - 80324aa: 68db ldr r3, [r3, #12] - 80324ac: f423 2240 bic.w r2, r3, #786432 ; 0xc0000 - 80324b0: 68bb ldr r3, [r7, #8] - 80324b2: 6b1b ldr r3, [r3, #48] ; 0x30 - 80324b4: 431a orrs r2, r3 - 80324b6: 6a3b ldr r3, [r7, #32] - 80324b8: 60da str r2, [r3, #12] + 80324e8: 6a3b ldr r3, [r7, #32] + 80324ea: 68db ldr r3, [r3, #12] + 80324ec: f423 2240 bic.w r2, r3, #786432 ; 0xc0000 + 80324f0: 68bb ldr r3, [r7, #8] + 80324f2: 6b1b ldr r3, [r3, #48] ; 0x30 + 80324f4: 431a orrs r2, r3 + 80324f6: 6a3b ldr r3, [r7, #32] + 80324f8: 60da str r2, [r3, #12] /* Set the descriptor as the inner vlan input source */ SET_BIT(heth->Instance->MACIVIR, ETH_MACIVIR_VLTI); - 80324ba: 68fb ldr r3, [r7, #12] - 80324bc: 681b ldr r3, [r3, #0] - 80324be: 6e5a ldr r2, [r3, #100] ; 0x64 - 80324c0: 68fb ldr r3, [r7, #12] - 80324c2: 681b ldr r3, [r3, #0] - 80324c4: f442 1280 orr.w r2, r2, #1048576 ; 0x100000 - 80324c8: 665a str r2, [r3, #100] ; 0x64 + 80324fa: 68fb ldr r3, [r7, #12] + 80324fc: 681b ldr r3, [r3, #0] + 80324fe: 6e5a ldr r2, [r3, #100] ; 0x64 + 8032500: 68fb ldr r3, [r7, #12] + 8032502: 681b ldr r3, [r3, #0] + 8032504: f442 1280 orr.w r2, r2, #1048576 ; 0x100000 + 8032508: 665a str r2, [r3, #100] ; 0x64 /* Enable double VLAN processing */ SET_BIT(heth->Instance->MACVTR, ETH_MACVTR_EDVLP); - 80324ca: 68fb ldr r3, [r7, #12] - 80324cc: 681b ldr r3, [r3, #0] - 80324ce: 6d1a ldr r2, [r3, #80] ; 0x50 - 80324d0: 68fb ldr r3, [r7, #12] - 80324d2: 681b ldr r3, [r3, #0] - 80324d4: f042 6280 orr.w r2, r2, #67108864 ; 0x4000000 - 80324d8: 651a str r2, [r3, #80] ; 0x50 + 803250a: 68fb ldr r3, [r7, #12] + 803250c: 681b ldr r3, [r3, #0] + 803250e: 6d1a ldr r2, [r3, #80] ; 0x50 + 8032510: 68fb ldr r3, [r7, #12] + 8032512: 681b ldr r3, [r3, #0] + 8032514: f042 6280 orr.w r2, r2, #67108864 ; 0x4000000 + 8032518: 651a str r2, [r3, #80] ; 0x50 } } /* if tcp segmentation is enabled for this packet */ if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_TSO) != (uint32_t)RESET) - 80324da: 68bb ldr r3, [r7, #8] - 80324dc: 681b ldr r3, [r3, #0] - 80324de: f003 0310 and.w r3, r3, #16 - 80324e2: 2b00 cmp r3, #0 - 80324e4: d00e beq.n 8032504 + 803251a: 68bb ldr r3, [r7, #8] + 803251c: 681b ldr r3, [r3, #0] + 803251e: f003 0310 and.w r3, r3, #16 + 8032522: 2b00 cmp r3, #0 + 8032524: d00e beq.n 8032544 { /* Set MSS value */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXCDESC_MSS, pTxConfig->MaxSegmentSize); - 80324e6: 6a3b ldr r3, [r7, #32] - 80324e8: 689a ldr r2, [r3, #8] - 80324ea: 4b51 ldr r3, [pc, #324] ; (8032630 ) - 80324ec: 4013 ands r3, r2 - 80324ee: 68ba ldr r2, [r7, #8] - 80324f0: 6992 ldr r2, [r2, #24] - 80324f2: 431a orrs r2, r3 - 80324f4: 6a3b ldr r3, [r7, #32] - 80324f6: 609a str r2, [r3, #8] + 8032526: 6a3b ldr r3, [r7, #32] + 8032528: 689a ldr r2, [r3, #8] + 803252a: 4b51 ldr r3, [pc, #324] ; (8032670 ) + 803252c: 4013 ands r3, r2 + 803252e: 68ba ldr r2, [r7, #8] + 8032530: 6992 ldr r2, [r2, #24] + 8032532: 431a orrs r2, r3 + 8032534: 6a3b ldr r3, [r7, #32] + 8032536: 609a str r2, [r3, #8] /* Set MSS valid bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_TCMSSV); - 80324f8: 6a3b ldr r3, [r7, #32] - 80324fa: 68db ldr r3, [r3, #12] - 80324fc: f043 6280 orr.w r2, r3, #67108864 ; 0x4000000 - 8032500: 6a3b ldr r3, [r7, #32] - 8032502: 60da str r2, [r3, #12] + 8032538: 6a3b ldr r3, [r7, #32] + 803253a: 68db ldr r3, [r3, #12] + 803253c: f043 6280 orr.w r2, r3, #67108864 ; 0x4000000 + 8032540: 6a3b ldr r3, [r7, #32] + 8032542: 60da str r2, [r3, #12] } if ((READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_VLANTAG) != (uint32_t)RESET) - 8032504: 68bb ldr r3, [r7, #8] - 8032506: 681b ldr r3, [r3, #0] - 8032508: f003 0304 and.w r3, r3, #4 - 803250c: 2b00 cmp r3, #0 - 803250e: d105 bne.n 803251c + 8032544: 68bb ldr r3, [r7, #8] + 8032546: 681b ldr r3, [r3, #0] + 8032548: f003 0304 and.w r3, r3, #4 + 803254c: 2b00 cmp r3, #0 + 803254e: d105 bne.n 803255c || (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_TSO) != (uint32_t)RESET)) - 8032510: 68bb ldr r3, [r7, #8] - 8032512: 681b ldr r3, [r3, #0] - 8032514: f003 0310 and.w r3, r3, #16 - 8032518: 2b00 cmp r3, #0 - 803251a: d036 beq.n 803258a + 8032550: 68bb ldr r3, [r7, #8] + 8032552: 681b ldr r3, [r3, #0] + 8032554: f003 0310 and.w r3, r3, #16 + 8032558: 2b00 cmp r3, #0 + 803255a: d036 beq.n 80325ca { /* Set as context descriptor */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_CTXT); - 803251c: 6a3b ldr r3, [r7, #32] - 803251e: 68db ldr r3, [r3, #12] - 8032520: f043 4280 orr.w r2, r3, #1073741824 ; 0x40000000 - 8032524: 6a3b ldr r3, [r7, #32] - 8032526: 60da str r2, [r3, #12] + 803255c: 6a3b ldr r3, [r7, #32] + 803255e: 68db ldr r3, [r3, #12] + 8032560: f043 4280 orr.w r2, r3, #1073741824 ; 0x40000000 + 8032564: 6a3b ldr r3, [r7, #32] + 8032566: 60da str r2, [r3, #12] __ASM volatile ("dmb 0xF":::"memory"); - 8032528: f3bf 8f5f dmb sy + 8032568: f3bf 8f5f dmb sy } - 803252c: bf00 nop + 803256c: bf00 nop /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); /* Set own bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_OWN); - 803252e: 6a3b ldr r3, [r7, #32] - 8032530: 68db ldr r3, [r3, #12] - 8032532: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 - 8032536: 6a3b ldr r3, [r7, #32] - 8032538: 60da str r2, [r3, #12] + 803256e: 6a3b ldr r3, [r7, #32] + 8032570: 68db ldr r3, [r3, #12] + 8032572: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 + 8032576: 6a3b ldr r3, [r7, #32] + 8032578: 60da str r2, [r3, #12] /* Increment current tx descriptor index */ INCR_TX_DESC_INDEX(descidx, 1U); - 803253a: 6afb ldr r3, [r7, #44] ; 0x2c - 803253c: 3301 adds r3, #1 - 803253e: 62fb str r3, [r7, #44] ; 0x2c - 8032540: 6afb ldr r3, [r7, #44] ; 0x2c - 8032542: 2b03 cmp r3, #3 - 8032544: d902 bls.n 803254c - 8032546: 6afb ldr r3, [r7, #44] ; 0x2c - 8032548: 3b04 subs r3, #4 - 803254a: 62fb str r3, [r7, #44] ; 0x2c + 803257a: 6afb ldr r3, [r7, #44] ; 0x2c + 803257c: 3301 adds r3, #1 + 803257e: 62fb str r3, [r7, #44] ; 0x2c + 8032580: 6afb ldr r3, [r7, #44] ; 0x2c + 8032582: 2b03 cmp r3, #3 + 8032584: d902 bls.n 803258c + 8032586: 6afb ldr r3, [r7, #44] ; 0x2c + 8032588: 3b04 subs r3, #4 + 803258a: 62fb str r3, [r7, #44] ; 0x2c /* Get current descriptor address */ dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 803254c: 697b ldr r3, [r7, #20] - 803254e: 6afa ldr r2, [r7, #44] ; 0x2c - 8032550: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8032554: 623b str r3, [r7, #32] + 803258c: 697b ldr r3, [r7, #20] + 803258e: 6afa ldr r2, [r7, #44] ; 0x2c + 8032590: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8032594: 623b str r3, [r7, #32] descnbr += 1U; - 8032556: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032558: 3301 adds r3, #1 - 803255a: 627b str r3, [r7, #36] ; 0x24 + 8032596: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032598: 3301 adds r3, #1 + 803259a: 627b str r3, [r7, #36] ; 0x24 /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ if (READ_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCWBF_OWN) == ETH_DMATXNDESCWBF_OWN) - 803255c: 6a3b ldr r3, [r7, #32] - 803255e: 68db ldr r3, [r3, #12] - 8032560: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 - 8032564: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 8032568: d10f bne.n 803258a + 803259c: 6a3b ldr r3, [r7, #32] + 803259e: 68db ldr r3, [r3, #12] + 80325a0: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 + 80325a4: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 80325a8: d10f bne.n 80325ca { dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[firstdescidx]; - 803256a: 697b ldr r3, [r7, #20] - 803256c: 693a ldr r2, [r7, #16] - 803256e: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8032572: 623b str r3, [r7, #32] + 80325aa: 697b ldr r3, [r7, #20] + 80325ac: 693a ldr r2, [r7, #16] + 80325ae: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80325b2: 623b str r3, [r7, #32] __ASM volatile ("dmb 0xF":::"memory"); - 8032574: f3bf 8f5f dmb sy + 80325b4: f3bf 8f5f dmb sy } - 8032578: bf00 nop + 80325b8: bf00 nop /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); /* Clear own bit */ CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXCDESC_OWN); - 803257a: 6a3b ldr r3, [r7, #32] - 803257c: 68db ldr r3, [r3, #12] - 803257e: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 - 8032582: 6a3b ldr r3, [r7, #32] - 8032584: 60da str r2, [r3, #12] + 80325ba: 6a3b ldr r3, [r7, #32] + 80325bc: 68db ldr r3, [r3, #12] + 80325be: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 + 80325c2: 6a3b ldr r3, [r7, #32] + 80325c4: 60da str r2, [r3, #12] return HAL_ETH_ERROR_BUSY; - 8032586: 2302 movs r3, #2 - 8032588: e1b6 b.n 80328f8 + 80325c6: 2302 movs r3, #2 + 80325c8: e1b6 b.n 8032938 /***************************************************************************/ /***************** Normal descriptors configuration *****************/ /***************************************************************************/ descnbr += 1U; - 803258a: 6a7b ldr r3, [r7, #36] ; 0x24 - 803258c: 3301 adds r3, #1 - 803258e: 627b str r3, [r7, #36] ; 0x24 + 80325ca: 6a7b ldr r3, [r7, #36] ; 0x24 + 80325cc: 3301 adds r3, #1 + 80325ce: 627b str r3, [r7, #36] ; 0x24 /* Set header or buffer 1 address */ WRITE_REG(dmatxdesc->DESC0, (uint32_t)txbuffer->buffer); - 8032590: 69fb ldr r3, [r7, #28] - 8032592: 681b ldr r3, [r3, #0] - 8032594: 461a mov r2, r3 - 8032596: 6a3b ldr r3, [r7, #32] - 8032598: 601a str r2, [r3, #0] + 80325d0: 69fb ldr r3, [r7, #28] + 80325d2: 681b ldr r3, [r3, #0] + 80325d4: 461a mov r2, r3 + 80325d6: 6a3b ldr r3, [r7, #32] + 80325d8: 601a str r2, [r3, #0] /* Set header or buffer 1 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B1L, txbuffer->len); - 803259a: 6a3b ldr r3, [r7, #32] - 803259c: 689a ldr r2, [r3, #8] - 803259e: 4b24 ldr r3, [pc, #144] ; (8032630 ) - 80325a0: 4013 ands r3, r2 - 80325a2: 69fa ldr r2, [r7, #28] - 80325a4: 6852 ldr r2, [r2, #4] - 80325a6: 431a orrs r2, r3 - 80325a8: 6a3b ldr r3, [r7, #32] - 80325aa: 609a str r2, [r3, #8] + 80325da: 6a3b ldr r3, [r7, #32] + 80325dc: 689a ldr r2, [r3, #8] + 80325de: 4b24 ldr r3, [pc, #144] ; (8032670 ) + 80325e0: 4013 ands r3, r2 + 80325e2: 69fa ldr r2, [r7, #28] + 80325e4: 6852 ldr r2, [r2, #4] + 80325e6: 431a orrs r2, r3 + 80325e8: 6a3b ldr r3, [r7, #32] + 80325ea: 609a str r2, [r3, #8] if (txbuffer->next != NULL) - 80325ac: 69fb ldr r3, [r7, #28] - 80325ae: 689b ldr r3, [r3, #8] - 80325b0: 2b00 cmp r3, #0 - 80325b2: d012 beq.n 80325da + 80325ec: 69fb ldr r3, [r7, #28] + 80325ee: 689b ldr r3, [r3, #8] + 80325f0: 2b00 cmp r3, #0 + 80325f2: d012 beq.n 803261a { txbuffer = txbuffer->next; - 80325b4: 69fb ldr r3, [r7, #28] - 80325b6: 689b ldr r3, [r3, #8] - 80325b8: 61fb str r3, [r7, #28] + 80325f4: 69fb ldr r3, [r7, #28] + 80325f6: 689b ldr r3, [r3, #8] + 80325f8: 61fb str r3, [r7, #28] /* Set buffer 2 address */ WRITE_REG(dmatxdesc->DESC1, (uint32_t)txbuffer->buffer); - 80325ba: 69fb ldr r3, [r7, #28] - 80325bc: 681b ldr r3, [r3, #0] - 80325be: 461a mov r2, r3 - 80325c0: 6a3b ldr r3, [r7, #32] - 80325c2: 605a str r2, [r3, #4] + 80325fa: 69fb ldr r3, [r7, #28] + 80325fc: 681b ldr r3, [r3, #0] + 80325fe: 461a mov r2, r3 + 8032600: 6a3b ldr r3, [r7, #32] + 8032602: 605a str r2, [r3, #4] /* Set buffer 2 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B2L, (txbuffer->len << 16)); - 80325c4: 6a3b ldr r3, [r7, #32] - 80325c6: 689a ldr r2, [r3, #8] - 80325c8: 4b1a ldr r3, [pc, #104] ; (8032634 ) - 80325ca: 4013 ands r3, r2 - 80325cc: 69fa ldr r2, [r7, #28] - 80325ce: 6852 ldr r2, [r2, #4] - 80325d0: 0412 lsls r2, r2, #16 - 80325d2: 431a orrs r2, r3 - 80325d4: 6a3b ldr r3, [r7, #32] - 80325d6: 609a str r2, [r3, #8] - 80325d8: e008 b.n 80325ec + 8032604: 6a3b ldr r3, [r7, #32] + 8032606: 689a ldr r2, [r3, #8] + 8032608: 4b1a ldr r3, [pc, #104] ; (8032674 ) + 803260a: 4013 ands r3, r2 + 803260c: 69fa ldr r2, [r7, #28] + 803260e: 6852 ldr r2, [r2, #4] + 8032610: 0412 lsls r2, r2, #16 + 8032612: 431a orrs r2, r3 + 8032614: 6a3b ldr r3, [r7, #32] + 8032616: 609a str r2, [r3, #8] + 8032618: e008 b.n 803262c } else { WRITE_REG(dmatxdesc->DESC1, 0x0); - 80325da: 6a3b ldr r3, [r7, #32] - 80325dc: 2200 movs r2, #0 - 80325de: 605a str r2, [r3, #4] + 803261a: 6a3b ldr r3, [r7, #32] + 803261c: 2200 movs r2, #0 + 803261e: 605a str r2, [r3, #4] /* Set buffer 2 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B2L, 0x0U); - 80325e0: 6a3b ldr r3, [r7, #32] - 80325e2: 689a ldr r2, [r3, #8] - 80325e4: 4b13 ldr r3, [pc, #76] ; (8032634 ) - 80325e6: 4013 ands r3, r2 - 80325e8: 6a3a ldr r2, [r7, #32] - 80325ea: 6093 str r3, [r2, #8] + 8032620: 6a3b ldr r3, [r7, #32] + 8032622: 689a ldr r2, [r3, #8] + 8032624: 4b13 ldr r3, [pc, #76] ; (8032674 ) + 8032626: 4013 ands r3, r2 + 8032628: 6a3a ldr r2, [r7, #32] + 803262a: 6093 str r3, [r2, #8] } if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_TSO) != (uint32_t)RESET) - 80325ec: 68bb ldr r3, [r7, #8] - 80325ee: 681b ldr r3, [r3, #0] - 80325f0: f003 0310 and.w r3, r3, #16 - 80325f4: 2b00 cmp r3, #0 - 80325f6: d021 beq.n 803263c + 803262c: 68bb ldr r3, [r7, #8] + 803262e: 681b ldr r3, [r3, #0] + 8032630: f003 0310 and.w r3, r3, #16 + 8032634: 2b00 cmp r3, #0 + 8032636: d021 beq.n 803267c { /* Set TCP Header length */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_THL, (pTxConfig->TCPHeaderLen << 19)); - 80325f8: 6a3b ldr r3, [r7, #32] - 80325fa: 68db ldr r3, [r3, #12] - 80325fc: f423 02f0 bic.w r2, r3, #7864320 ; 0x780000 - 8032600: 68bb ldr r3, [r7, #8] - 8032602: 6a1b ldr r3, [r3, #32] - 8032604: 04db lsls r3, r3, #19 - 8032606: 431a orrs r2, r3 - 8032608: 6a3b ldr r3, [r7, #32] - 803260a: 60da str r2, [r3, #12] + 8032638: 6a3b ldr r3, [r7, #32] + 803263a: 68db ldr r3, [r3, #12] + 803263c: f423 02f0 bic.w r2, r3, #7864320 ; 0x780000 + 8032640: 68bb ldr r3, [r7, #8] + 8032642: 6a1b ldr r3, [r3, #32] + 8032644: 04db lsls r3, r3, #19 + 8032646: 431a orrs r2, r3 + 8032648: 6a3b ldr r3, [r7, #32] + 803264a: 60da str r2, [r3, #12] /* Set TCP payload length */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_TPL, pTxConfig->PayloadLen); - 803260c: 6a3b ldr r3, [r7, #32] - 803260e: 68da ldr r2, [r3, #12] - 8032610: 4b09 ldr r3, [pc, #36] ; (8032638 ) - 8032612: 4013 ands r3, r2 - 8032614: 68ba ldr r2, [r7, #8] - 8032616: 69d2 ldr r2, [r2, #28] - 8032618: 431a orrs r2, r3 - 803261a: 6a3b ldr r3, [r7, #32] - 803261c: 60da str r2, [r3, #12] + 803264c: 6a3b ldr r3, [r7, #32] + 803264e: 68da ldr r2, [r3, #12] + 8032650: 4b09 ldr r3, [pc, #36] ; (8032678 ) + 8032652: 4013 ands r3, r2 + 8032654: 68ba ldr r2, [r7, #8] + 8032656: 69d2 ldr r2, [r2, #28] + 8032658: 431a orrs r2, r3 + 803265a: 6a3b ldr r3, [r7, #32] + 803265c: 60da str r2, [r3, #12] /* Set TCP Segmentation Enabled bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_TSE); - 803261e: 6a3b ldr r3, [r7, #32] - 8032620: 68db ldr r3, [r3, #12] - 8032622: f443 2280 orr.w r2, r3, #262144 ; 0x40000 - 8032626: 6a3b ldr r3, [r7, #32] - 8032628: 60da str r2, [r3, #12] - 803262a: e02e b.n 803268a - 803262c: ffff0000 .word 0xffff0000 - 8032630: ffffc000 .word 0xffffc000 - 8032634: c000ffff .word 0xc000ffff - 8032638: fffc0000 .word 0xfffc0000 + 803265e: 6a3b ldr r3, [r7, #32] + 8032660: 68db ldr r3, [r3, #12] + 8032662: f443 2280 orr.w r2, r3, #262144 ; 0x40000 + 8032666: 6a3b ldr r3, [r7, #32] + 8032668: 60da str r2, [r3, #12] + 803266a: e02e b.n 80326ca + 803266c: ffff0000 .word 0xffff0000 + 8032670: ffffc000 .word 0xffffc000 + 8032674: c000ffff .word 0xc000ffff + 8032678: fffc0000 .word 0xfffc0000 } else { MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_FL, pTxConfig->Length); - 803263c: 6a3b ldr r3, [r7, #32] - 803263e: 68da ldr r2, [r3, #12] - 8032640: 4b7b ldr r3, [pc, #492] ; (8032830 ) - 8032642: 4013 ands r3, r2 - 8032644: 68ba ldr r2, [r7, #8] - 8032646: 6852 ldr r2, [r2, #4] - 8032648: 431a orrs r2, r3 - 803264a: 6a3b ldr r3, [r7, #32] - 803264c: 60da str r2, [r3, #12] + 803267c: 6a3b ldr r3, [r7, #32] + 803267e: 68da ldr r2, [r3, #12] + 8032680: 4b7b ldr r3, [pc, #492] ; (8032870 ) + 8032682: 4013 ands r3, r2 + 8032684: 68ba ldr r2, [r7, #8] + 8032686: 6852 ldr r2, [r2, #4] + 8032688: 431a orrs r2, r3 + 803268a: 6a3b ldr r3, [r7, #32] + 803268c: 60da str r2, [r3, #12] if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_CSUM) != (uint32_t)RESET) - 803264e: 68bb ldr r3, [r7, #8] - 8032650: 681b ldr r3, [r3, #0] - 8032652: f003 0301 and.w r3, r3, #1 - 8032656: 2b00 cmp r3, #0 - 8032658: d008 beq.n 803266c + 803268e: 68bb ldr r3, [r7, #8] + 8032690: 681b ldr r3, [r3, #0] + 8032692: f003 0301 and.w r3, r3, #1 + 8032696: 2b00 cmp r3, #0 + 8032698: d008 beq.n 80326ac { MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_CIC, pTxConfig->ChecksumCtrl); - 803265a: 6a3b ldr r3, [r7, #32] - 803265c: 68db ldr r3, [r3, #12] - 803265e: f423 3240 bic.w r2, r3, #196608 ; 0x30000 - 8032662: 68bb ldr r3, [r7, #8] - 8032664: 695b ldr r3, [r3, #20] - 8032666: 431a orrs r2, r3 - 8032668: 6a3b ldr r3, [r7, #32] - 803266a: 60da str r2, [r3, #12] + 803269a: 6a3b ldr r3, [r7, #32] + 803269c: 68db ldr r3, [r3, #12] + 803269e: f423 3240 bic.w r2, r3, #196608 ; 0x30000 + 80326a2: 68bb ldr r3, [r7, #8] + 80326a4: 695b ldr r3, [r3, #20] + 80326a6: 431a orrs r2, r3 + 80326a8: 6a3b ldr r3, [r7, #32] + 80326aa: 60da str r2, [r3, #12] } if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_CRCPAD) != (uint32_t)RESET) - 803266c: 68bb ldr r3, [r7, #8] - 803266e: 681b ldr r3, [r3, #0] - 8032670: f003 0320 and.w r3, r3, #32 - 8032674: 2b00 cmp r3, #0 - 8032676: d008 beq.n 803268a + 80326ac: 68bb ldr r3, [r7, #8] + 80326ae: 681b ldr r3, [r3, #0] + 80326b0: f003 0320 and.w r3, r3, #32 + 80326b4: 2b00 cmp r3, #0 + 80326b6: d008 beq.n 80326ca { MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_CPC, pTxConfig->CRCPadCtrl); - 8032678: 6a3b ldr r3, [r7, #32] - 803267a: 68db ldr r3, [r3, #12] - 803267c: f023 6240 bic.w r2, r3, #201326592 ; 0xc000000 - 8032680: 68bb ldr r3, [r7, #8] - 8032682: 691b ldr r3, [r3, #16] - 8032684: 431a orrs r2, r3 - 8032686: 6a3b ldr r3, [r7, #32] - 8032688: 60da str r2, [r3, #12] + 80326b8: 6a3b ldr r3, [r7, #32] + 80326ba: 68db ldr r3, [r3, #12] + 80326bc: f023 6240 bic.w r2, r3, #201326592 ; 0xc000000 + 80326c0: 68bb ldr r3, [r7, #8] + 80326c2: 691b ldr r3, [r3, #16] + 80326c4: 431a orrs r2, r3 + 80326c6: 6a3b ldr r3, [r7, #32] + 80326c8: 60da str r2, [r3, #12] } } if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_VLANTAG) != (uint32_t)RESET) - 803268a: 68bb ldr r3, [r7, #8] - 803268c: 681b ldr r3, [r3, #0] - 803268e: f003 0304 and.w r3, r3, #4 - 8032692: 2b00 cmp r3, #0 - 8032694: d008 beq.n 80326a8 + 80326ca: 68bb ldr r3, [r7, #8] + 80326cc: 681b ldr r3, [r3, #0] + 80326ce: f003 0304 and.w r3, r3, #4 + 80326d2: 2b00 cmp r3, #0 + 80326d4: d008 beq.n 80326e8 { /* Set Vlan Tag control */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_VTIR, pTxConfig->VlanCtrl); - 8032696: 6a3b ldr r3, [r7, #32] - 8032698: 689b ldr r3, [r3, #8] - 803269a: f423 4240 bic.w r2, r3, #49152 ; 0xc000 - 803269e: 68bb ldr r3, [r7, #8] - 80326a0: 6a9b ldr r3, [r3, #40] ; 0x28 - 80326a2: 431a orrs r2, r3 - 80326a4: 6a3b ldr r3, [r7, #32] - 80326a6: 609a str r2, [r3, #8] + 80326d6: 6a3b ldr r3, [r7, #32] + 80326d8: 689b ldr r3, [r3, #8] + 80326da: f423 4240 bic.w r2, r3, #49152 ; 0xc000 + 80326de: 68bb ldr r3, [r7, #8] + 80326e0: 6a9b ldr r3, [r3, #40] ; 0x28 + 80326e2: 431a orrs r2, r3 + 80326e4: 6a3b ldr r3, [r7, #32] + 80326e6: 609a str r2, [r3, #8] } /* Mark it as First Descriptor */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_FD); - 80326a8: 6a3b ldr r3, [r7, #32] - 80326aa: 68db ldr r3, [r3, #12] - 80326ac: f043 5200 orr.w r2, r3, #536870912 ; 0x20000000 - 80326b0: 6a3b ldr r3, [r7, #32] - 80326b2: 60da str r2, [r3, #12] + 80326e8: 6a3b ldr r3, [r7, #32] + 80326ea: 68db ldr r3, [r3, #12] + 80326ec: f043 5200 orr.w r2, r3, #536870912 ; 0x20000000 + 80326f0: 6a3b ldr r3, [r7, #32] + 80326f2: 60da str r2, [r3, #12] /* Mark it as NORMAL descriptor */ CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_CTXT); - 80326b4: 6a3b ldr r3, [r7, #32] - 80326b6: 68db ldr r3, [r3, #12] - 80326b8: f023 4280 bic.w r2, r3, #1073741824 ; 0x40000000 - 80326bc: 6a3b ldr r3, [r7, #32] - 80326be: 60da str r2, [r3, #12] + 80326f4: 6a3b ldr r3, [r7, #32] + 80326f6: 68db ldr r3, [r3, #12] + 80326f8: f023 4280 bic.w r2, r3, #1073741824 ; 0x40000000 + 80326fc: 6a3b ldr r3, [r7, #32] + 80326fe: 60da str r2, [r3, #12] __ASM volatile ("dmb 0xF":::"memory"); - 80326c0: f3bf 8f5f dmb sy + 8032700: f3bf 8f5f dmb sy } - 80326c4: bf00 nop + 8032704: bf00 nop /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); /* set OWN bit of FIRST descriptor */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_OWN); - 80326c6: 6a3b ldr r3, [r7, #32] - 80326c8: 68db ldr r3, [r3, #12] - 80326ca: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 - 80326ce: 6a3b ldr r3, [r7, #32] - 80326d0: 60da str r2, [r3, #12] + 8032706: 6a3b ldr r3, [r7, #32] + 8032708: 68db ldr r3, [r3, #12] + 803270a: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 + 803270e: 6a3b ldr r3, [r7, #32] + 8032710: 60da str r2, [r3, #12] /* If source address insertion/replacement is enabled for this packet */ if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_SAIC) != (uint32_t)RESET) - 80326d2: 68bb ldr r3, [r7, #8] - 80326d4: 681b ldr r3, [r3, #0] - 80326d6: f003 0302 and.w r3, r3, #2 - 80326da: 2b00 cmp r3, #0 - 80326dc: f000 80da beq.w 8032894 + 8032712: 68bb ldr r3, [r7, #8] + 8032714: 681b ldr r3, [r3, #0] + 8032716: f003 0302 and.w r3, r3, #2 + 803271a: 2b00 cmp r3, #0 + 803271c: f000 80da beq.w 80328d4 { MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_SAIC, pTxConfig->SrcAddrCtrl); - 80326e0: 6a3b ldr r3, [r7, #32] - 80326e2: 68db ldr r3, [r3, #12] - 80326e4: f023 7260 bic.w r2, r3, #58720256 ; 0x3800000 - 80326e8: 68bb ldr r3, [r7, #8] - 80326ea: 68db ldr r3, [r3, #12] - 80326ec: 431a orrs r2, r3 - 80326ee: 6a3b ldr r3, [r7, #32] - 80326f0: 60da str r2, [r3, #12] + 8032720: 6a3b ldr r3, [r7, #32] + 8032722: 68db ldr r3, [r3, #12] + 8032724: f023 7260 bic.w r2, r3, #58720256 ; 0x3800000 + 8032728: 68bb ldr r3, [r7, #8] + 803272a: 68db ldr r3, [r3, #12] + 803272c: 431a orrs r2, r3 + 803272e: 6a3b ldr r3, [r7, #32] + 8032730: 60da str r2, [r3, #12] } /* only if the packet is split into more than one descriptors > 1 */ while (txbuffer->next != NULL) - 80326f2: e0cf b.n 8032894 + 8032732: e0cf b.n 80328d4 { /* Clear the LD bit of previous descriptor */ CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_LD); - 80326f4: 6a3b ldr r3, [r7, #32] - 80326f6: 68db ldr r3, [r3, #12] - 80326f8: f023 5280 bic.w r2, r3, #268435456 ; 0x10000000 - 80326fc: 6a3b ldr r3, [r7, #32] - 80326fe: 60da str r2, [r3, #12] + 8032734: 6a3b ldr r3, [r7, #32] + 8032736: 68db ldr r3, [r3, #12] + 8032738: f023 5280 bic.w r2, r3, #268435456 ; 0x10000000 + 803273c: 6a3b ldr r3, [r7, #32] + 803273e: 60da str r2, [r3, #12] /* Increment current tx descriptor index */ INCR_TX_DESC_INDEX(descidx, 1U); - 8032700: 6afb ldr r3, [r7, #44] ; 0x2c - 8032702: 3301 adds r3, #1 - 8032704: 62fb str r3, [r7, #44] ; 0x2c - 8032706: 6afb ldr r3, [r7, #44] ; 0x2c - 8032708: 2b03 cmp r3, #3 - 803270a: d902 bls.n 8032712 - 803270c: 6afb ldr r3, [r7, #44] ; 0x2c - 803270e: 3b04 subs r3, #4 - 8032710: 62fb str r3, [r7, #44] ; 0x2c + 8032740: 6afb ldr r3, [r7, #44] ; 0x2c + 8032742: 3301 adds r3, #1 + 8032744: 62fb str r3, [r7, #44] ; 0x2c + 8032746: 6afb ldr r3, [r7, #44] ; 0x2c + 8032748: 2b03 cmp r3, #3 + 803274a: d902 bls.n 8032752 + 803274c: 6afb ldr r3, [r7, #44] ; 0x2c + 803274e: 3b04 subs r3, #4 + 8032750: 62fb str r3, [r7, #44] ; 0x2c /* Get current descriptor address */ dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 8032712: 697b ldr r3, [r7, #20] - 8032714: 6afa ldr r2, [r7, #44] ; 0x2c - 8032716: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 803271a: 623b str r3, [r7, #32] + 8032752: 697b ldr r3, [r7, #20] + 8032754: 6afa ldr r2, [r7, #44] ; 0x2c + 8032756: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 803275a: 623b str r3, [r7, #32] /* Clear the FD bit of new Descriptor */ CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_FD); - 803271c: 6a3b ldr r3, [r7, #32] - 803271e: 68db ldr r3, [r3, #12] - 8032720: f023 5200 bic.w r2, r3, #536870912 ; 0x20000000 - 8032724: 6a3b ldr r3, [r7, #32] - 8032726: 60da str r2, [r3, #12] + 803275c: 6a3b ldr r3, [r7, #32] + 803275e: 68db ldr r3, [r3, #12] + 8032760: f023 5200 bic.w r2, r3, #536870912 ; 0x20000000 + 8032764: 6a3b ldr r3, [r7, #32] + 8032766: 60da str r2, [r3, #12] /* Current Tx Descriptor Owned by DMA: cannot be used by the application */ if ((READ_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_OWN) == ETH_DMATXNDESCRF_OWN) - 8032728: 6a3b ldr r3, [r7, #32] - 803272a: 68db ldr r3, [r3, #12] - 803272c: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 - 8032730: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 8032734: d007 beq.n 8032746 + 8032768: 6a3b ldr r3, [r7, #32] + 803276a: 68db ldr r3, [r3, #12] + 803276c: f003 4300 and.w r3, r3, #2147483648 ; 0x80000000 + 8032770: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8032774: d007 beq.n 8032786 || (dmatxdesclist->PacketAddress[descidx] != NULL)) - 8032736: 697a ldr r2, [r7, #20] - 8032738: 6afb ldr r3, [r7, #44] ; 0x2c - 803273a: 3304 adds r3, #4 - 803273c: 009b lsls r3, r3, #2 - 803273e: 4413 add r3, r2 - 8032740: 685b ldr r3, [r3, #4] - 8032742: 2b00 cmp r3, #0 - 8032744: d029 beq.n 803279a + 8032776: 697a ldr r2, [r7, #20] + 8032778: 6afb ldr r3, [r7, #44] ; 0x2c + 803277a: 3304 adds r3, #4 + 803277c: 009b lsls r3, r3, #2 + 803277e: 4413 add r3, r2 + 8032780: 685b ldr r3, [r3, #4] + 8032782: 2b00 cmp r3, #0 + 8032784: d029 beq.n 80327da { descidx = firstdescidx; - 8032746: 693b ldr r3, [r7, #16] - 8032748: 62fb str r3, [r7, #44] ; 0x2c + 8032786: 693b ldr r3, [r7, #16] + 8032788: 62fb str r3, [r7, #44] ; 0x2c dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 803274a: 697b ldr r3, [r7, #20] - 803274c: 6afa ldr r2, [r7, #44] ; 0x2c - 803274e: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8032752: 623b str r3, [r7, #32] + 803278a: 697b ldr r3, [r7, #20] + 803278c: 6afa ldr r2, [r7, #44] ; 0x2c + 803278e: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 8032792: 623b str r3, [r7, #32] /* clear previous desc own bit */ for (idx = 0; idx < descnbr; idx ++) - 8032754: 2300 movs r3, #0 - 8032756: 62bb str r3, [r7, #40] ; 0x28 - 8032758: e019 b.n 803278e + 8032794: 2300 movs r3, #0 + 8032796: 62bb str r3, [r7, #40] ; 0x28 + 8032798: e019 b.n 80327ce __ASM volatile ("dmb 0xF":::"memory"); - 803275a: f3bf 8f5f dmb sy + 803279a: f3bf 8f5f dmb sy } - 803275e: bf00 nop + 803279e: bf00 nop { /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_OWN); - 8032760: 6a3b ldr r3, [r7, #32] - 8032762: 68db ldr r3, [r3, #12] - 8032764: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 - 8032768: 6a3b ldr r3, [r7, #32] - 803276a: 60da str r2, [r3, #12] + 80327a0: 6a3b ldr r3, [r7, #32] + 80327a2: 68db ldr r3, [r3, #12] + 80327a4: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 + 80327a8: 6a3b ldr r3, [r7, #32] + 80327aa: 60da str r2, [r3, #12] /* Increment current tx descriptor index */ INCR_TX_DESC_INDEX(descidx, 1U); - 803276c: 6afb ldr r3, [r7, #44] ; 0x2c - 803276e: 3301 adds r3, #1 - 8032770: 62fb str r3, [r7, #44] ; 0x2c - 8032772: 6afb ldr r3, [r7, #44] ; 0x2c - 8032774: 2b03 cmp r3, #3 - 8032776: d902 bls.n 803277e - 8032778: 6afb ldr r3, [r7, #44] ; 0x2c - 803277a: 3b04 subs r3, #4 - 803277c: 62fb str r3, [r7, #44] ; 0x2c + 80327ac: 6afb ldr r3, [r7, #44] ; 0x2c + 80327ae: 3301 adds r3, #1 + 80327b0: 62fb str r3, [r7, #44] ; 0x2c + 80327b2: 6afb ldr r3, [r7, #44] ; 0x2c + 80327b4: 2b03 cmp r3, #3 + 80327b6: d902 bls.n 80327be + 80327b8: 6afb ldr r3, [r7, #44] ; 0x2c + 80327ba: 3b04 subs r3, #4 + 80327bc: 62fb str r3, [r7, #44] ; 0x2c /* Get current descriptor address */ dmatxdesc = (ETH_DMADescTypeDef *)dmatxdesclist->TxDesc[descidx]; - 803277e: 697b ldr r3, [r7, #20] - 8032780: 6afa ldr r2, [r7, #44] ; 0x2c - 8032782: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 8032786: 623b str r3, [r7, #32] + 80327be: 697b ldr r3, [r7, #20] + 80327c0: 6afa ldr r2, [r7, #44] ; 0x2c + 80327c2: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80327c6: 623b str r3, [r7, #32] for (idx = 0; idx < descnbr; idx ++) - 8032788: 6abb ldr r3, [r7, #40] ; 0x28 - 803278a: 3301 adds r3, #1 - 803278c: 62bb str r3, [r7, #40] ; 0x28 - 803278e: 6aba ldr r2, [r7, #40] ; 0x28 - 8032790: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032792: 429a cmp r2, r3 - 8032794: d3e1 bcc.n 803275a + 80327c8: 6abb ldr r3, [r7, #40] ; 0x28 + 80327ca: 3301 adds r3, #1 + 80327cc: 62bb str r3, [r7, #40] ; 0x28 + 80327ce: 6aba ldr r2, [r7, #40] ; 0x28 + 80327d0: 6a7b ldr r3, [r7, #36] ; 0x24 + 80327d2: 429a cmp r2, r3 + 80327d4: d3e1 bcc.n 803279a } return HAL_ETH_ERROR_BUSY; - 8032796: 2302 movs r3, #2 - 8032798: e0ae b.n 80328f8 + 80327d6: 2302 movs r3, #2 + 80327d8: e0ae b.n 8032938 } descnbr += 1U; - 803279a: 6a7b ldr r3, [r7, #36] ; 0x24 - 803279c: 3301 adds r3, #1 - 803279e: 627b str r3, [r7, #36] ; 0x24 + 80327da: 6a7b ldr r3, [r7, #36] ; 0x24 + 80327dc: 3301 adds r3, #1 + 80327de: 627b str r3, [r7, #36] ; 0x24 /* Get the next Tx buffer in the list */ txbuffer = txbuffer->next; - 80327a0: 69fb ldr r3, [r7, #28] - 80327a2: 689b ldr r3, [r3, #8] - 80327a4: 61fb str r3, [r7, #28] + 80327e0: 69fb ldr r3, [r7, #28] + 80327e2: 689b ldr r3, [r3, #8] + 80327e4: 61fb str r3, [r7, #28] /* Set header or buffer 1 address */ WRITE_REG(dmatxdesc->DESC0, (uint32_t)txbuffer->buffer); - 80327a6: 69fb ldr r3, [r7, #28] - 80327a8: 681b ldr r3, [r3, #0] - 80327aa: 461a mov r2, r3 - 80327ac: 6a3b ldr r3, [r7, #32] - 80327ae: 601a str r2, [r3, #0] + 80327e6: 69fb ldr r3, [r7, #28] + 80327e8: 681b ldr r3, [r3, #0] + 80327ea: 461a mov r2, r3 + 80327ec: 6a3b ldr r3, [r7, #32] + 80327ee: 601a str r2, [r3, #0] /* Set header or buffer 1 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B1L, txbuffer->len); - 80327b0: 6a3b ldr r3, [r7, #32] - 80327b2: 689a ldr r2, [r3, #8] - 80327b4: 4b1f ldr r3, [pc, #124] ; (8032834 ) - 80327b6: 4013 ands r3, r2 - 80327b8: 69fa ldr r2, [r7, #28] - 80327ba: 6852 ldr r2, [r2, #4] - 80327bc: 431a orrs r2, r3 - 80327be: 6a3b ldr r3, [r7, #32] - 80327c0: 609a str r2, [r3, #8] + 80327f0: 6a3b ldr r3, [r7, #32] + 80327f2: 689a ldr r2, [r3, #8] + 80327f4: 4b1f ldr r3, [pc, #124] ; (8032874 ) + 80327f6: 4013 ands r3, r2 + 80327f8: 69fa ldr r2, [r7, #28] + 80327fa: 6852 ldr r2, [r2, #4] + 80327fc: 431a orrs r2, r3 + 80327fe: 6a3b ldr r3, [r7, #32] + 8032800: 609a str r2, [r3, #8] if (txbuffer->next != NULL) - 80327c2: 69fb ldr r3, [r7, #28] - 80327c4: 689b ldr r3, [r3, #8] - 80327c6: 2b00 cmp r3, #0 - 80327c8: d012 beq.n 80327f0 + 8032802: 69fb ldr r3, [r7, #28] + 8032804: 689b ldr r3, [r3, #8] + 8032806: 2b00 cmp r3, #0 + 8032808: d012 beq.n 8032830 { /* Get the next Tx buffer in the list */ txbuffer = txbuffer->next; - 80327ca: 69fb ldr r3, [r7, #28] - 80327cc: 689b ldr r3, [r3, #8] - 80327ce: 61fb str r3, [r7, #28] + 803280a: 69fb ldr r3, [r7, #28] + 803280c: 689b ldr r3, [r3, #8] + 803280e: 61fb str r3, [r7, #28] /* Set buffer 2 address */ WRITE_REG(dmatxdesc->DESC1, (uint32_t)txbuffer->buffer); - 80327d0: 69fb ldr r3, [r7, #28] - 80327d2: 681b ldr r3, [r3, #0] - 80327d4: 461a mov r2, r3 - 80327d6: 6a3b ldr r3, [r7, #32] - 80327d8: 605a str r2, [r3, #4] + 8032810: 69fb ldr r3, [r7, #28] + 8032812: 681b ldr r3, [r3, #0] + 8032814: 461a mov r2, r3 + 8032816: 6a3b ldr r3, [r7, #32] + 8032818: 605a str r2, [r3, #4] /* Set buffer 2 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B2L, (txbuffer->len << 16)); - 80327da: 6a3b ldr r3, [r7, #32] - 80327dc: 689a ldr r2, [r3, #8] - 80327de: 4b16 ldr r3, [pc, #88] ; (8032838 ) - 80327e0: 4013 ands r3, r2 - 80327e2: 69fa ldr r2, [r7, #28] - 80327e4: 6852 ldr r2, [r2, #4] - 80327e6: 0412 lsls r2, r2, #16 - 80327e8: 431a orrs r2, r3 - 80327ea: 6a3b ldr r3, [r7, #32] - 80327ec: 609a str r2, [r3, #8] - 80327ee: e008 b.n 8032802 + 803281a: 6a3b ldr r3, [r7, #32] + 803281c: 689a ldr r2, [r3, #8] + 803281e: 4b16 ldr r3, [pc, #88] ; (8032878 ) + 8032820: 4013 ands r3, r2 + 8032822: 69fa ldr r2, [r7, #28] + 8032824: 6852 ldr r2, [r2, #4] + 8032826: 0412 lsls r2, r2, #16 + 8032828: 431a orrs r2, r3 + 803282a: 6a3b ldr r3, [r7, #32] + 803282c: 609a str r2, [r3, #8] + 803282e: e008 b.n 8032842 } else { WRITE_REG(dmatxdesc->DESC1, 0x0); - 80327f0: 6a3b ldr r3, [r7, #32] - 80327f2: 2200 movs r2, #0 - 80327f4: 605a str r2, [r3, #4] + 8032830: 6a3b ldr r3, [r7, #32] + 8032832: 2200 movs r2, #0 + 8032834: 605a str r2, [r3, #4] /* Set buffer 2 Length */ MODIFY_REG(dmatxdesc->DESC2, ETH_DMATXNDESCRF_B2L, 0x0U); - 80327f6: 6a3b ldr r3, [r7, #32] - 80327f8: 689a ldr r2, [r3, #8] - 80327fa: 4b0f ldr r3, [pc, #60] ; (8032838 ) - 80327fc: 4013 ands r3, r2 - 80327fe: 6a3a ldr r2, [r7, #32] - 8032800: 6093 str r3, [r2, #8] + 8032836: 6a3b ldr r3, [r7, #32] + 8032838: 689a ldr r2, [r3, #8] + 803283a: 4b0f ldr r3, [pc, #60] ; (8032878 ) + 803283c: 4013 ands r3, r2 + 803283e: 6a3a ldr r2, [r7, #32] + 8032840: 6093 str r3, [r2, #8] } if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_TSO) != (uint32_t)RESET) - 8032802: 68bb ldr r3, [r7, #8] - 8032804: 681b ldr r3, [r3, #0] - 8032806: f003 0310 and.w r3, r3, #16 - 803280a: 2b00 cmp r3, #0 - 803280c: d018 beq.n 8032840 + 8032842: 68bb ldr r3, [r7, #8] + 8032844: 681b ldr r3, [r3, #0] + 8032846: f003 0310 and.w r3, r3, #16 + 803284a: 2b00 cmp r3, #0 + 803284c: d018 beq.n 8032880 { /* Set TCP payload length */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_TPL, pTxConfig->PayloadLen); - 803280e: 6a3b ldr r3, [r7, #32] - 8032810: 68da ldr r2, [r3, #12] - 8032812: 4b0a ldr r3, [pc, #40] ; (803283c ) - 8032814: 4013 ands r3, r2 - 8032816: 68ba ldr r2, [r7, #8] - 8032818: 69d2 ldr r2, [r2, #28] - 803281a: 431a orrs r2, r3 - 803281c: 6a3b ldr r3, [r7, #32] - 803281e: 60da str r2, [r3, #12] + 803284e: 6a3b ldr r3, [r7, #32] + 8032850: 68da ldr r2, [r3, #12] + 8032852: 4b0a ldr r3, [pc, #40] ; (803287c ) + 8032854: 4013 ands r3, r2 + 8032856: 68ba ldr r2, [r7, #8] + 8032858: 69d2 ldr r2, [r2, #28] + 803285a: 431a orrs r2, r3 + 803285c: 6a3b ldr r3, [r7, #32] + 803285e: 60da str r2, [r3, #12] /* Set TCP Segmentation Enabled bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_TSE); - 8032820: 6a3b ldr r3, [r7, #32] - 8032822: 68db ldr r3, [r3, #12] - 8032824: f443 2280 orr.w r2, r3, #262144 ; 0x40000 - 8032828: 6a3b ldr r3, [r7, #32] - 803282a: 60da str r2, [r3, #12] - 803282c: e020 b.n 8032870 - 803282e: bf00 nop - 8032830: ffff8000 .word 0xffff8000 - 8032834: ffffc000 .word 0xffffc000 - 8032838: c000ffff .word 0xc000ffff - 803283c: fffc0000 .word 0xfffc0000 + 8032860: 6a3b ldr r3, [r7, #32] + 8032862: 68db ldr r3, [r3, #12] + 8032864: f443 2280 orr.w r2, r3, #262144 ; 0x40000 + 8032868: 6a3b ldr r3, [r7, #32] + 803286a: 60da str r2, [r3, #12] + 803286c: e020 b.n 80328b0 + 803286e: bf00 nop + 8032870: ffff8000 .word 0xffff8000 + 8032874: ffffc000 .word 0xffffc000 + 8032878: c000ffff .word 0xc000ffff + 803287c: fffc0000 .word 0xfffc0000 } else { /* Set the packet length */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_FL, pTxConfig->Length); - 8032840: 6a3b ldr r3, [r7, #32] - 8032842: 68da ldr r2, [r3, #12] - 8032844: 4b2f ldr r3, [pc, #188] ; (8032904 ) - 8032846: 4013 ands r3, r2 - 8032848: 68ba ldr r2, [r7, #8] - 803284a: 6852 ldr r2, [r2, #4] - 803284c: 431a orrs r2, r3 - 803284e: 6a3b ldr r3, [r7, #32] - 8032850: 60da str r2, [r3, #12] + 8032880: 6a3b ldr r3, [r7, #32] + 8032882: 68da ldr r2, [r3, #12] + 8032884: 4b2f ldr r3, [pc, #188] ; (8032944 ) + 8032886: 4013 ands r3, r2 + 8032888: 68ba ldr r2, [r7, #8] + 803288a: 6852 ldr r2, [r2, #4] + 803288c: 431a orrs r2, r3 + 803288e: 6a3b ldr r3, [r7, #32] + 8032890: 60da str r2, [r3, #12] if (READ_BIT(pTxConfig->Attributes, ETH_TX_PACKETS_FEATURES_CSUM) != (uint32_t)RESET) - 8032852: 68bb ldr r3, [r7, #8] - 8032854: 681b ldr r3, [r3, #0] - 8032856: f003 0301 and.w r3, r3, #1 - 803285a: 2b00 cmp r3, #0 - 803285c: d008 beq.n 8032870 + 8032892: 68bb ldr r3, [r7, #8] + 8032894: 681b ldr r3, [r3, #0] + 8032896: f003 0301 and.w r3, r3, #1 + 803289a: 2b00 cmp r3, #0 + 803289c: d008 beq.n 80328b0 { /* Checksum Insertion Control */ MODIFY_REG(dmatxdesc->DESC3, ETH_DMATXNDESCRF_CIC, pTxConfig->ChecksumCtrl); - 803285e: 6a3b ldr r3, [r7, #32] - 8032860: 68db ldr r3, [r3, #12] - 8032862: f423 3240 bic.w r2, r3, #196608 ; 0x30000 - 8032866: 68bb ldr r3, [r7, #8] - 8032868: 695b ldr r3, [r3, #20] - 803286a: 431a orrs r2, r3 - 803286c: 6a3b ldr r3, [r7, #32] - 803286e: 60da str r2, [r3, #12] + 803289e: 6a3b ldr r3, [r7, #32] + 80328a0: 68db ldr r3, [r3, #12] + 80328a2: f423 3240 bic.w r2, r3, #196608 ; 0x30000 + 80328a6: 68bb ldr r3, [r7, #8] + 80328a8: 695b ldr r3, [r3, #20] + 80328aa: 431a orrs r2, r3 + 80328ac: 6a3b ldr r3, [r7, #32] + 80328ae: 60da str r2, [r3, #12] } } bd_count += 1U; - 8032870: 69bb ldr r3, [r7, #24] - 8032872: 3301 adds r3, #1 - 8032874: 61bb str r3, [r7, #24] + 80328b0: 69bb ldr r3, [r7, #24] + 80328b2: 3301 adds r3, #1 + 80328b4: 61bb str r3, [r7, #24] __ASM volatile ("dmb 0xF":::"memory"); - 8032876: f3bf 8f5f dmb sy + 80328b6: f3bf 8f5f dmb sy } - 803287a: bf00 nop + 80328ba: bf00 nop /* Ensure rest of descriptor is written to RAM before the OWN bit */ __DMB(); /* Set Own bit */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_OWN); - 803287c: 6a3b ldr r3, [r7, #32] - 803287e: 68db ldr r3, [r3, #12] - 8032880: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 - 8032884: 6a3b ldr r3, [r7, #32] - 8032886: 60da str r2, [r3, #12] + 80328bc: 6a3b ldr r3, [r7, #32] + 80328be: 68db ldr r3, [r3, #12] + 80328c0: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 + 80328c4: 6a3b ldr r3, [r7, #32] + 80328c6: 60da str r2, [r3, #12] /* Mark it as NORMAL descriptor */ CLEAR_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_CTXT); - 8032888: 6a3b ldr r3, [r7, #32] - 803288a: 68db ldr r3, [r3, #12] - 803288c: f023 4280 bic.w r2, r3, #1073741824 ; 0x40000000 - 8032890: 6a3b ldr r3, [r7, #32] - 8032892: 60da str r2, [r3, #12] + 80328c8: 6a3b ldr r3, [r7, #32] + 80328ca: 68db ldr r3, [r3, #12] + 80328cc: f023 4280 bic.w r2, r3, #1073741824 ; 0x40000000 + 80328d0: 6a3b ldr r3, [r7, #32] + 80328d2: 60da str r2, [r3, #12] while (txbuffer->next != NULL) - 8032894: 69fb ldr r3, [r7, #28] - 8032896: 689b ldr r3, [r3, #8] - 8032898: 2b00 cmp r3, #0 - 803289a: f47f af2b bne.w 80326f4 + 80328d4: 69fb ldr r3, [r7, #28] + 80328d6: 689b ldr r3, [r3, #8] + 80328d8: 2b00 cmp r3, #0 + 80328da: f47f af2b bne.w 8032734 } if (ItMode != ((uint32_t)RESET)) - 803289e: 687b ldr r3, [r7, #4] - 80328a0: 2b00 cmp r3, #0 - 80328a2: d006 beq.n 80328b2 + 80328de: 687b ldr r3, [r7, #4] + 80328e0: 2b00 cmp r3, #0 + 80328e2: d006 beq.n 80328f2 { /* Set Interrupt on completion bit */ SET_BIT(dmatxdesc->DESC2, ETH_DMATXNDESCRF_IOC); - 80328a4: 6a3b ldr r3, [r7, #32] - 80328a6: 689b ldr r3, [r3, #8] - 80328a8: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 - 80328ac: 6a3b ldr r3, [r7, #32] - 80328ae: 609a str r2, [r3, #8] - 80328b0: e005 b.n 80328be + 80328e4: 6a3b ldr r3, [r7, #32] + 80328e6: 689b ldr r3, [r3, #8] + 80328e8: f043 4200 orr.w r2, r3, #2147483648 ; 0x80000000 + 80328ec: 6a3b ldr r3, [r7, #32] + 80328ee: 609a str r2, [r3, #8] + 80328f0: e005 b.n 80328fe } else { /* Clear Interrupt on completion bit */ CLEAR_BIT(dmatxdesc->DESC2, ETH_DMATXNDESCRF_IOC); - 80328b2: 6a3b ldr r3, [r7, #32] - 80328b4: 689b ldr r3, [r3, #8] - 80328b6: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 - 80328ba: 6a3b ldr r3, [r7, #32] - 80328bc: 609a str r2, [r3, #8] + 80328f2: 6a3b ldr r3, [r7, #32] + 80328f4: 689b ldr r3, [r3, #8] + 80328f6: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 + 80328fa: 6a3b ldr r3, [r7, #32] + 80328fc: 609a str r2, [r3, #8] } /* Mark it as LAST descriptor */ SET_BIT(dmatxdesc->DESC3, ETH_DMATXNDESCRF_LD); - 80328be: 6a3b ldr r3, [r7, #32] - 80328c0: 68db ldr r3, [r3, #12] - 80328c2: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 - 80328c6: 6a3b ldr r3, [r7, #32] - 80328c8: 60da str r2, [r3, #12] + 80328fe: 6a3b ldr r3, [r7, #32] + 8032900: 68db ldr r3, [r3, #12] + 8032902: f043 5280 orr.w r2, r3, #268435456 ; 0x10000000 + 8032906: 6a3b ldr r3, [r7, #32] + 8032908: 60da str r2, [r3, #12] /* Save the current packet address to expose it to the application */ dmatxdesclist->PacketAddress[descidx] = dmatxdesclist->CurrentPacketAddress; - 80328ca: 697b ldr r3, [r7, #20] - 80328cc: 6a5a ldr r2, [r3, #36] ; 0x24 - 80328ce: 6979 ldr r1, [r7, #20] - 80328d0: 6afb ldr r3, [r7, #44] ; 0x2c - 80328d2: 3304 adds r3, #4 - 80328d4: 009b lsls r3, r3, #2 - 80328d6: 440b add r3, r1 - 80328d8: 605a str r2, [r3, #4] + 803290a: 697b ldr r3, [r7, #20] + 803290c: 6a5a ldr r2, [r3, #36] ; 0x24 + 803290e: 6979 ldr r1, [r7, #20] + 8032910: 6afb ldr r3, [r7, #44] ; 0x2c + 8032912: 3304 adds r3, #4 + 8032914: 009b lsls r3, r3, #2 + 8032916: 440b add r3, r1 + 8032918: 605a str r2, [r3, #4] dmatxdesclist->CurTxDesc = descidx; - 80328da: 697b ldr r3, [r7, #20] - 80328dc: 6afa ldr r2, [r7, #44] ; 0x2c - 80328de: 611a str r2, [r3, #16] + 803291a: 697b ldr r3, [r7, #20] + 803291c: 6afa ldr r2, [r7, #44] ; 0x2c + 803291e: 611a str r2, [r3, #16] __ASM volatile ("cpsid i" : : : "memory"); - 80328e0: b672 cpsid i + 8032920: b672 cpsid i } - 80328e2: bf00 nop + 8032922: bf00 nop /* disable the interrupt */ __disable_irq(); dmatxdesclist->BuffersInUse += bd_count + 1U; - 80328e4: 697b ldr r3, [r7, #20] - 80328e6: 6a9a ldr r2, [r3, #40] ; 0x28 - 80328e8: 69bb ldr r3, [r7, #24] - 80328ea: 4413 add r3, r2 - 80328ec: 1c5a adds r2, r3, #1 - 80328ee: 697b ldr r3, [r7, #20] - 80328f0: 629a str r2, [r3, #40] ; 0x28 + 8032924: 697b ldr r3, [r7, #20] + 8032926: 6a9a ldr r2, [r3, #40] ; 0x28 + 8032928: 69bb ldr r3, [r7, #24] + 803292a: 4413 add r3, r2 + 803292c: 1c5a adds r2, r3, #1 + 803292e: 697b ldr r3, [r7, #20] + 8032930: 629a str r2, [r3, #40] ; 0x28 __ASM volatile ("cpsie i" : : : "memory"); - 80328f2: b662 cpsie i + 8032932: b662 cpsie i } - 80328f4: bf00 nop + 8032934: bf00 nop /* Enable interrupts back */ __enable_irq(); /* Return function status */ return HAL_ETH_ERROR_NONE; - 80328f6: 2300 movs r3, #0 + 8032936: 2300 movs r3, #0 } - 80328f8: 4618 mov r0, r3 - 80328fa: 3734 adds r7, #52 ; 0x34 - 80328fc: 46bd mov sp, r7 - 80328fe: f85d 7b04 ldr.w r7, [sp], #4 - 8032902: 4770 bx lr - 8032904: ffff8000 .word 0xffff8000 + 8032938: 4618 mov r0, r3 + 803293a: 3734 adds r7, #52 ; 0x34 + 803293c: 46bd mov sp, r7 + 803293e: f85d 7b04 ldr.w r7, [sp], #4 + 8032942: 4770 bx lr + 8032944: ffff8000 .word 0xffff8000 -08032908 : +08032948 : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval HAL status */ HAL_StatusTypeDef HAL_FDCAN_Init(FDCAN_HandleTypeDef *hfdcan) { - 8032908: b580 push {r7, lr} - 803290a: b098 sub sp, #96 ; 0x60 - 803290c: af00 add r7, sp, #0 - 803290e: 6078 str r0, [r7, #4] + 8032948: b580 push {r7, lr} + 803294a: b098 sub sp, #96 ; 0x60 + 803294c: af00 add r7, sp, #0 + 803294e: 6078 str r0, [r7, #4] uint32_t tickstart; HAL_StatusTypeDef status; const uint32_t CvtEltSize[] = {0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7}; - 8032910: 4a84 ldr r2, [pc, #528] ; (8032b24 ) - 8032912: f107 030c add.w r3, r7, #12 - 8032916: 4611 mov r1, r2 - 8032918: 224c movs r2, #76 ; 0x4c - 803291a: 4618 mov r0, r3 - 803291c: f015 fa32 bl 8047d84 + 8032950: 4a84 ldr r2, [pc, #528] ; (8032b64 ) + 8032952: f107 030c add.w r3, r7, #12 + 8032956: 4611 mov r1, r2 + 8032958: 224c movs r2, #76 ; 0x4c + 803295a: 4618 mov r0, r3 + 803295c: f015 fa32 bl 8047dc4 /* Check FDCAN handle */ if (hfdcan == NULL) - 8032920: 687b ldr r3, [r7, #4] - 8032922: 2b00 cmp r3, #0 - 8032924: d101 bne.n 803292a + 8032960: 687b ldr r3, [r7, #4] + 8032962: 2b00 cmp r3, #0 + 8032964: d101 bne.n 803296a { return HAL_ERROR; - 8032926: 2301 movs r3, #1 - 8032928: e1c6 b.n 8032cb8 + 8032966: 2301 movs r3, #1 + 8032968: e1c6 b.n 8032cf8 } /* Check FDCAN instance */ if (hfdcan->Instance == FDCAN1) - 803292a: 687b ldr r3, [r7, #4] - 803292c: 681b ldr r3, [r3, #0] - 803292e: 4a7e ldr r2, [pc, #504] ; (8032b28 ) - 8032930: 4293 cmp r3, r2 - 8032932: d106 bne.n 8032942 + 803296a: 687b ldr r3, [r7, #4] + 803296c: 681b ldr r3, [r3, #0] + 803296e: 4a7e ldr r2, [pc, #504] ; (8032b68 ) + 8032970: 4293 cmp r3, r2 + 8032972: d106 bne.n 8032982 { hfdcan->ttcan = (TTCAN_TypeDef *)((uint32_t)hfdcan->Instance + 0x100U); - 8032934: 687b ldr r3, [r7, #4] - 8032936: 681b ldr r3, [r3, #0] - 8032938: f503 7380 add.w r3, r3, #256 ; 0x100 - 803293c: 461a mov r2, r3 - 803293e: 687b ldr r3, [r7, #4] - 8032940: 605a str r2, [r3, #4] + 8032974: 687b ldr r3, [r7, #4] + 8032976: 681b ldr r3, [r3, #0] + 8032978: f503 7380 add.w r3, r3, #256 ; 0x100 + 803297c: 461a mov r2, r3 + 803297e: 687b ldr r3, [r7, #4] + 8032980: 605a str r2, [r3, #4] /* Init the low level hardware: CLOCK, NVIC */ hfdcan->MspInitCallback(hfdcan); } #else if (hfdcan->State == HAL_FDCAN_STATE_RESET) - 8032942: 687b ldr r3, [r7, #4] - 8032944: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 - 8032948: b2db uxtb r3, r3 - 803294a: 2b00 cmp r3, #0 - 803294c: d106 bne.n 803295c + 8032982: 687b ldr r3, [r7, #4] + 8032984: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 + 8032988: b2db uxtb r3, r3 + 803298a: 2b00 cmp r3, #0 + 803298c: d106 bne.n 803299c { /* Allocate lock resource and initialize it */ hfdcan->Lock = HAL_UNLOCKED; - 803294e: 687b ldr r3, [r7, #4] - 8032950: 2200 movs r2, #0 - 8032952: f883 2099 strb.w r2, [r3, #153] ; 0x99 + 803298e: 687b ldr r3, [r7, #4] + 8032990: 2200 movs r2, #0 + 8032992: f883 2099 strb.w r2, [r3, #153] ; 0x99 /* Init the low level hardware: CLOCK, NVIC */ HAL_FDCAN_MspInit(hfdcan); - 8032956: 6878 ldr r0, [r7, #4] - 8032958: f7f7 fe54 bl 802a604 + 8032996: 6878 ldr r0, [r7, #4] + 8032998: f7f7 fe54 bl 802a644 } #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ /* Exit from Sleep mode */ CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_CSR); - 803295c: 687b ldr r3, [r7, #4] - 803295e: 681b ldr r3, [r3, #0] - 8032960: 699a ldr r2, [r3, #24] - 8032962: 687b ldr r3, [r7, #4] - 8032964: 681b ldr r3, [r3, #0] - 8032966: f022 0210 bic.w r2, r2, #16 - 803296a: 619a str r2, [r3, #24] + 803299c: 687b ldr r3, [r7, #4] + 803299e: 681b ldr r3, [r3, #0] + 80329a0: 699a ldr r2, [r3, #24] + 80329a2: 687b ldr r3, [r7, #4] + 80329a4: 681b ldr r3, [r3, #0] + 80329a6: f022 0210 bic.w r2, r2, #16 + 80329aa: 619a str r2, [r3, #24] /* Get tick */ tickstart = HAL_GetTick(); - 803296c: f7fa fb12 bl 802cf94 - 8032970: 65f8 str r0, [r7, #92] ; 0x5c + 80329ac: f7fa fb12 bl 802cfd4 + 80329b0: 65f8 str r0, [r7, #92] ; 0x5c /* Check Sleep mode acknowledge */ while ((hfdcan->Instance->CCCR & FDCAN_CCCR_CSA) == FDCAN_CCCR_CSA) - 8032972: e014 b.n 803299e + 80329b2: e014 b.n 80329de { if ((HAL_GetTick() - tickstart) > FDCAN_TIMEOUT_VALUE) - 8032974: f7fa fb0e bl 802cf94 - 8032978: 4602 mov r2, r0 - 803297a: 6dfb ldr r3, [r7, #92] ; 0x5c - 803297c: 1ad3 subs r3, r2, r3 - 803297e: 2b0a cmp r3, #10 - 8032980: d90d bls.n 803299e + 80329b4: f7fa fb0e bl 802cfd4 + 80329b8: 4602 mov r2, r0 + 80329ba: 6dfb ldr r3, [r7, #92] ; 0x5c + 80329bc: 1ad3 subs r3, r2, r3 + 80329be: 2b0a cmp r3, #10 + 80329c0: d90d bls.n 80329de { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_TIMEOUT; - 8032982: 687b ldr r3, [r7, #4] - 8032984: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032988: f043 0201 orr.w r2, r3, #1 - 803298c: 687b ldr r3, [r7, #4] - 803298e: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 80329c2: 687b ldr r3, [r7, #4] + 80329c4: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 80329c8: f043 0201 orr.w r2, r3, #1 + 80329cc: 687b ldr r3, [r7, #4] + 80329ce: f8c3 209c str.w r2, [r3, #156] ; 0x9c /* Change FDCAN state */ hfdcan->State = HAL_FDCAN_STATE_ERROR; - 8032992: 687b ldr r3, [r7, #4] - 8032994: 2203 movs r2, #3 - 8032996: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 80329d2: 687b ldr r3, [r7, #4] + 80329d4: 2203 movs r2, #3 + 80329d6: f883 2098 strb.w r2, [r3, #152] ; 0x98 return HAL_ERROR; - 803299a: 2301 movs r3, #1 - 803299c: e18c b.n 8032cb8 + 80329da: 2301 movs r3, #1 + 80329dc: e18c b.n 8032cf8 while ((hfdcan->Instance->CCCR & FDCAN_CCCR_CSA) == FDCAN_CCCR_CSA) - 803299e: 687b ldr r3, [r7, #4] - 80329a0: 681b ldr r3, [r3, #0] - 80329a2: 699b ldr r3, [r3, #24] - 80329a4: f003 0308 and.w r3, r3, #8 - 80329a8: 2b08 cmp r3, #8 - 80329aa: d0e3 beq.n 8032974 + 80329de: 687b ldr r3, [r7, #4] + 80329e0: 681b ldr r3, [r3, #0] + 80329e2: 699b ldr r3, [r3, #24] + 80329e4: f003 0308 and.w r3, r3, #8 + 80329e8: 2b08 cmp r3, #8 + 80329ea: d0e3 beq.n 80329b4 } } /* Request initialisation */ SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_INIT); - 80329ac: 687b ldr r3, [r7, #4] - 80329ae: 681b ldr r3, [r3, #0] - 80329b0: 699a ldr r2, [r3, #24] - 80329b2: 687b ldr r3, [r7, #4] - 80329b4: 681b ldr r3, [r3, #0] - 80329b6: f042 0201 orr.w r2, r2, #1 - 80329ba: 619a str r2, [r3, #24] + 80329ec: 687b ldr r3, [r7, #4] + 80329ee: 681b ldr r3, [r3, #0] + 80329f0: 699a ldr r2, [r3, #24] + 80329f2: 687b ldr r3, [r7, #4] + 80329f4: 681b ldr r3, [r3, #0] + 80329f6: f042 0201 orr.w r2, r2, #1 + 80329fa: 619a str r2, [r3, #24] /* Get tick */ tickstart = HAL_GetTick(); - 80329bc: f7fa faea bl 802cf94 - 80329c0: 65f8 str r0, [r7, #92] ; 0x5c + 80329fc: f7fa faea bl 802cfd4 + 8032a00: 65f8 str r0, [r7, #92] ; 0x5c /* Wait until the INIT bit into CCCR register is set */ while ((hfdcan->Instance->CCCR & FDCAN_CCCR_INIT) == 0U) - 80329c2: e014 b.n 80329ee + 8032a02: e014 b.n 8032a2e { /* Check for the Timeout */ if ((HAL_GetTick() - tickstart) > FDCAN_TIMEOUT_VALUE) - 80329c4: f7fa fae6 bl 802cf94 - 80329c8: 4602 mov r2, r0 - 80329ca: 6dfb ldr r3, [r7, #92] ; 0x5c - 80329cc: 1ad3 subs r3, r2, r3 - 80329ce: 2b0a cmp r3, #10 - 80329d0: d90d bls.n 80329ee + 8032a04: f7fa fae6 bl 802cfd4 + 8032a08: 4602 mov r2, r0 + 8032a0a: 6dfb ldr r3, [r7, #92] ; 0x5c + 8032a0c: 1ad3 subs r3, r2, r3 + 8032a0e: 2b0a cmp r3, #10 + 8032a10: d90d bls.n 8032a2e { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_TIMEOUT; - 80329d2: 687b ldr r3, [r7, #4] - 80329d4: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 80329d8: f043 0201 orr.w r2, r3, #1 - 80329dc: 687b ldr r3, [r7, #4] - 80329de: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032a12: 687b ldr r3, [r7, #4] + 8032a14: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032a18: f043 0201 orr.w r2, r3, #1 + 8032a1c: 687b ldr r3, [r7, #4] + 8032a1e: f8c3 209c str.w r2, [r3, #156] ; 0x9c /* Change FDCAN state */ hfdcan->State = HAL_FDCAN_STATE_ERROR; - 80329e2: 687b ldr r3, [r7, #4] - 80329e4: 2203 movs r2, #3 - 80329e6: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 8032a22: 687b ldr r3, [r7, #4] + 8032a24: 2203 movs r2, #3 + 8032a26: f883 2098 strb.w r2, [r3, #152] ; 0x98 return HAL_ERROR; - 80329ea: 2301 movs r3, #1 - 80329ec: e164 b.n 8032cb8 + 8032a2a: 2301 movs r3, #1 + 8032a2c: e164 b.n 8032cf8 while ((hfdcan->Instance->CCCR & FDCAN_CCCR_INIT) == 0U) - 80329ee: 687b ldr r3, [r7, #4] - 80329f0: 681b ldr r3, [r3, #0] - 80329f2: 699b ldr r3, [r3, #24] - 80329f4: f003 0301 and.w r3, r3, #1 - 80329f8: 2b00 cmp r3, #0 - 80329fa: d0e3 beq.n 80329c4 + 8032a2e: 687b ldr r3, [r7, #4] + 8032a30: 681b ldr r3, [r3, #0] + 8032a32: 699b ldr r3, [r3, #24] + 8032a34: f003 0301 and.w r3, r3, #1 + 8032a38: 2b00 cmp r3, #0 + 8032a3a: d0e3 beq.n 8032a04 } } /* Enable configuration change */ SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_CCE); - 80329fc: 687b ldr r3, [r7, #4] - 80329fe: 681b ldr r3, [r3, #0] - 8032a00: 699a ldr r2, [r3, #24] - 8032a02: 687b ldr r3, [r7, #4] - 8032a04: 681b ldr r3, [r3, #0] - 8032a06: f042 0202 orr.w r2, r2, #2 - 8032a0a: 619a str r2, [r3, #24] + 8032a3c: 687b ldr r3, [r7, #4] + 8032a3e: 681b ldr r3, [r3, #0] + 8032a40: 699a ldr r2, [r3, #24] + 8032a42: 687b ldr r3, [r7, #4] + 8032a44: 681b ldr r3, [r3, #0] + 8032a46: f042 0202 orr.w r2, r2, #2 + 8032a4a: 619a str r2, [r3, #24] /* Set the no automatic retransmission */ if (hfdcan->Init.AutoRetransmission == ENABLE) - 8032a0c: 687b ldr r3, [r7, #4] - 8032a0e: 7c1b ldrb r3, [r3, #16] - 8032a10: 2b01 cmp r3, #1 - 8032a12: d108 bne.n 8032a26 + 8032a4c: 687b ldr r3, [r7, #4] + 8032a4e: 7c1b ldrb r3, [r3, #16] + 8032a50: 2b01 cmp r3, #1 + 8032a52: d108 bne.n 8032a66 { CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_DAR); - 8032a14: 687b ldr r3, [r7, #4] - 8032a16: 681b ldr r3, [r3, #0] - 8032a18: 699a ldr r2, [r3, #24] - 8032a1a: 687b ldr r3, [r7, #4] - 8032a1c: 681b ldr r3, [r3, #0] - 8032a1e: f022 0240 bic.w r2, r2, #64 ; 0x40 - 8032a22: 619a str r2, [r3, #24] - 8032a24: e007 b.n 8032a36 + 8032a54: 687b ldr r3, [r7, #4] + 8032a56: 681b ldr r3, [r3, #0] + 8032a58: 699a ldr r2, [r3, #24] + 8032a5a: 687b ldr r3, [r7, #4] + 8032a5c: 681b ldr r3, [r3, #0] + 8032a5e: f022 0240 bic.w r2, r2, #64 ; 0x40 + 8032a62: 619a str r2, [r3, #24] + 8032a64: e007 b.n 8032a76 } else { SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_DAR); - 8032a26: 687b ldr r3, [r7, #4] - 8032a28: 681b ldr r3, [r3, #0] - 8032a2a: 699a ldr r2, [r3, #24] - 8032a2c: 687b ldr r3, [r7, #4] - 8032a2e: 681b ldr r3, [r3, #0] - 8032a30: f042 0240 orr.w r2, r2, #64 ; 0x40 - 8032a34: 619a str r2, [r3, #24] + 8032a66: 687b ldr r3, [r7, #4] + 8032a68: 681b ldr r3, [r3, #0] + 8032a6a: 699a ldr r2, [r3, #24] + 8032a6c: 687b ldr r3, [r7, #4] + 8032a6e: 681b ldr r3, [r3, #0] + 8032a70: f042 0240 orr.w r2, r2, #64 ; 0x40 + 8032a74: 619a str r2, [r3, #24] } /* Set the transmit pause feature */ if (hfdcan->Init.TransmitPause == ENABLE) - 8032a36: 687b ldr r3, [r7, #4] - 8032a38: 7c5b ldrb r3, [r3, #17] - 8032a3a: 2b01 cmp r3, #1 - 8032a3c: d108 bne.n 8032a50 + 8032a76: 687b ldr r3, [r7, #4] + 8032a78: 7c5b ldrb r3, [r3, #17] + 8032a7a: 2b01 cmp r3, #1 + 8032a7c: d108 bne.n 8032a90 { SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_TXP); - 8032a3e: 687b ldr r3, [r7, #4] - 8032a40: 681b ldr r3, [r3, #0] - 8032a42: 699a ldr r2, [r3, #24] - 8032a44: 687b ldr r3, [r7, #4] - 8032a46: 681b ldr r3, [r3, #0] - 8032a48: f442 4280 orr.w r2, r2, #16384 ; 0x4000 - 8032a4c: 619a str r2, [r3, #24] - 8032a4e: e007 b.n 8032a60 + 8032a7e: 687b ldr r3, [r7, #4] + 8032a80: 681b ldr r3, [r3, #0] + 8032a82: 699a ldr r2, [r3, #24] + 8032a84: 687b ldr r3, [r7, #4] + 8032a86: 681b ldr r3, [r3, #0] + 8032a88: f442 4280 orr.w r2, r2, #16384 ; 0x4000 + 8032a8c: 619a str r2, [r3, #24] + 8032a8e: e007 b.n 8032aa0 } else { CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_TXP); - 8032a50: 687b ldr r3, [r7, #4] - 8032a52: 681b ldr r3, [r3, #0] - 8032a54: 699a ldr r2, [r3, #24] - 8032a56: 687b ldr r3, [r7, #4] - 8032a58: 681b ldr r3, [r3, #0] - 8032a5a: f422 4280 bic.w r2, r2, #16384 ; 0x4000 - 8032a5e: 619a str r2, [r3, #24] + 8032a90: 687b ldr r3, [r7, #4] + 8032a92: 681b ldr r3, [r3, #0] + 8032a94: 699a ldr r2, [r3, #24] + 8032a96: 687b ldr r3, [r7, #4] + 8032a98: 681b ldr r3, [r3, #0] + 8032a9a: f422 4280 bic.w r2, r2, #16384 ; 0x4000 + 8032a9e: 619a str r2, [r3, #24] } /* Set the Protocol Exception Handling */ if (hfdcan->Init.ProtocolException == ENABLE) - 8032a60: 687b ldr r3, [r7, #4] - 8032a62: 7c9b ldrb r3, [r3, #18] - 8032a64: 2b01 cmp r3, #1 - 8032a66: d108 bne.n 8032a7a + 8032aa0: 687b ldr r3, [r7, #4] + 8032aa2: 7c9b ldrb r3, [r3, #18] + 8032aa4: 2b01 cmp r3, #1 + 8032aa6: d108 bne.n 8032aba { CLEAR_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_PXHD); - 8032a68: 687b ldr r3, [r7, #4] - 8032a6a: 681b ldr r3, [r3, #0] - 8032a6c: 699a ldr r2, [r3, #24] - 8032a6e: 687b ldr r3, [r7, #4] - 8032a70: 681b ldr r3, [r3, #0] - 8032a72: f422 5280 bic.w r2, r2, #4096 ; 0x1000 - 8032a76: 619a str r2, [r3, #24] - 8032a78: e007 b.n 8032a8a + 8032aa8: 687b ldr r3, [r7, #4] + 8032aaa: 681b ldr r3, [r3, #0] + 8032aac: 699a ldr r2, [r3, #24] + 8032aae: 687b ldr r3, [r7, #4] + 8032ab0: 681b ldr r3, [r3, #0] + 8032ab2: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8032ab6: 619a str r2, [r3, #24] + 8032ab8: e007 b.n 8032aca } else { SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_PXHD); - 8032a7a: 687b ldr r3, [r7, #4] - 8032a7c: 681b ldr r3, [r3, #0] - 8032a7e: 699a ldr r2, [r3, #24] - 8032a80: 687b ldr r3, [r7, #4] - 8032a82: 681b ldr r3, [r3, #0] - 8032a84: f442 5280 orr.w r2, r2, #4096 ; 0x1000 - 8032a88: 619a str r2, [r3, #24] + 8032aba: 687b ldr r3, [r7, #4] + 8032abc: 681b ldr r3, [r3, #0] + 8032abe: 699a ldr r2, [r3, #24] + 8032ac0: 687b ldr r3, [r7, #4] + 8032ac2: 681b ldr r3, [r3, #0] + 8032ac4: f442 5280 orr.w r2, r2, #4096 ; 0x1000 + 8032ac8: 619a str r2, [r3, #24] } /* Set FDCAN Frame Format */ MODIFY_REG(hfdcan->Instance->CCCR, FDCAN_FRAME_FD_BRS, hfdcan->Init.FrameFormat); - 8032a8a: 687b ldr r3, [r7, #4] - 8032a8c: 681b ldr r3, [r3, #0] - 8032a8e: 699b ldr r3, [r3, #24] - 8032a90: f423 7140 bic.w r1, r3, #768 ; 0x300 - 8032a94: 687b ldr r3, [r7, #4] - 8032a96: 689a ldr r2, [r3, #8] - 8032a98: 687b ldr r3, [r7, #4] - 8032a9a: 681b ldr r3, [r3, #0] - 8032a9c: 430a orrs r2, r1 - 8032a9e: 619a str r2, [r3, #24] + 8032aca: 687b ldr r3, [r7, #4] + 8032acc: 681b ldr r3, [r3, #0] + 8032ace: 699b ldr r3, [r3, #24] + 8032ad0: f423 7140 bic.w r1, r3, #768 ; 0x300 + 8032ad4: 687b ldr r3, [r7, #4] + 8032ad6: 689a ldr r2, [r3, #8] + 8032ad8: 687b ldr r3, [r7, #4] + 8032ada: 681b ldr r3, [r3, #0] + 8032adc: 430a orrs r2, r1 + 8032ade: 619a str r2, [r3, #24] /* Reset FDCAN Operation Mode */ CLEAR_BIT(hfdcan->Instance->CCCR, (FDCAN_CCCR_TEST | FDCAN_CCCR_MON | FDCAN_CCCR_ASM)); - 8032aa0: 687b ldr r3, [r7, #4] - 8032aa2: 681b ldr r3, [r3, #0] - 8032aa4: 699a ldr r2, [r3, #24] - 8032aa6: 687b ldr r3, [r7, #4] - 8032aa8: 681b ldr r3, [r3, #0] - 8032aaa: f022 02a4 bic.w r2, r2, #164 ; 0xa4 - 8032aae: 619a str r2, [r3, #24] + 8032ae0: 687b ldr r3, [r7, #4] + 8032ae2: 681b ldr r3, [r3, #0] + 8032ae4: 699a ldr r2, [r3, #24] + 8032ae6: 687b ldr r3, [r7, #4] + 8032ae8: 681b ldr r3, [r3, #0] + 8032aea: f022 02a4 bic.w r2, r2, #164 ; 0xa4 + 8032aee: 619a str r2, [r3, #24] CLEAR_BIT(hfdcan->Instance->TEST, FDCAN_TEST_LBCK); - 8032ab0: 687b ldr r3, [r7, #4] - 8032ab2: 681b ldr r3, [r3, #0] - 8032ab4: 691a ldr r2, [r3, #16] - 8032ab6: 687b ldr r3, [r7, #4] - 8032ab8: 681b ldr r3, [r3, #0] - 8032aba: f022 0210 bic.w r2, r2, #16 - 8032abe: 611a str r2, [r3, #16] + 8032af0: 687b ldr r3, [r7, #4] + 8032af2: 681b ldr r3, [r3, #0] + 8032af4: 691a ldr r2, [r3, #16] + 8032af6: 687b ldr r3, [r7, #4] + 8032af8: 681b ldr r3, [r3, #0] + 8032afa: f022 0210 bic.w r2, r2, #16 + 8032afe: 611a str r2, [r3, #16] CCCR.TEST | 0 | 0 | 0 | 1 | 1 CCCR.MON | 0 | 0 | 1 | 1 | 0 TEST.LBCK | 0 | 0 | 0 | 1 | 1 CCCR.ASM | 0 | 1 | 0 | 0 | 0 */ if (hfdcan->Init.Mode == FDCAN_MODE_RESTRICTED_OPERATION) - 8032ac0: 687b ldr r3, [r7, #4] - 8032ac2: 68db ldr r3, [r3, #12] - 8032ac4: 2b01 cmp r3, #1 - 8032ac6: d108 bne.n 8032ada + 8032b00: 687b ldr r3, [r7, #4] + 8032b02: 68db ldr r3, [r3, #12] + 8032b04: 2b01 cmp r3, #1 + 8032b06: d108 bne.n 8032b1a { /* Enable Restricted Operation mode */ SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_ASM); - 8032ac8: 687b ldr r3, [r7, #4] - 8032aca: 681b ldr r3, [r3, #0] - 8032acc: 699a ldr r2, [r3, #24] - 8032ace: 687b ldr r3, [r7, #4] - 8032ad0: 681b ldr r3, [r3, #0] - 8032ad2: f042 0204 orr.w r2, r2, #4 - 8032ad6: 619a str r2, [r3, #24] - 8032ad8: e030 b.n 8032b3c + 8032b08: 687b ldr r3, [r7, #4] + 8032b0a: 681b ldr r3, [r3, #0] + 8032b0c: 699a ldr r2, [r3, #24] + 8032b0e: 687b ldr r3, [r7, #4] + 8032b10: 681b ldr r3, [r3, #0] + 8032b12: f042 0204 orr.w r2, r2, #4 + 8032b16: 619a str r2, [r3, #24] + 8032b18: e030 b.n 8032b7c } else if (hfdcan->Init.Mode != FDCAN_MODE_NORMAL) - 8032ada: 687b ldr r3, [r7, #4] - 8032adc: 68db ldr r3, [r3, #12] - 8032ade: 2b00 cmp r3, #0 - 8032ae0: d02c beq.n 8032b3c + 8032b1a: 687b ldr r3, [r7, #4] + 8032b1c: 68db ldr r3, [r3, #12] + 8032b1e: 2b00 cmp r3, #0 + 8032b20: d02c beq.n 8032b7c { if (hfdcan->Init.Mode != FDCAN_MODE_BUS_MONITORING) - 8032ae2: 687b ldr r3, [r7, #4] - 8032ae4: 68db ldr r3, [r3, #12] - 8032ae6: 2b02 cmp r3, #2 - 8032ae8: d020 beq.n 8032b2c + 8032b22: 687b ldr r3, [r7, #4] + 8032b24: 68db ldr r3, [r3, #12] + 8032b26: 2b02 cmp r3, #2 + 8032b28: d020 beq.n 8032b6c { /* Enable write access to TEST register */ SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_TEST); - 8032aea: 687b ldr r3, [r7, #4] - 8032aec: 681b ldr r3, [r3, #0] - 8032aee: 699a ldr r2, [r3, #24] - 8032af0: 687b ldr r3, [r7, #4] - 8032af2: 681b ldr r3, [r3, #0] - 8032af4: f042 0280 orr.w r2, r2, #128 ; 0x80 - 8032af8: 619a str r2, [r3, #24] + 8032b2a: 687b ldr r3, [r7, #4] + 8032b2c: 681b ldr r3, [r3, #0] + 8032b2e: 699a ldr r2, [r3, #24] + 8032b30: 687b ldr r3, [r7, #4] + 8032b32: 681b ldr r3, [r3, #0] + 8032b34: f042 0280 orr.w r2, r2, #128 ; 0x80 + 8032b38: 619a str r2, [r3, #24] /* Enable LoopBack mode */ SET_BIT(hfdcan->Instance->TEST, FDCAN_TEST_LBCK); - 8032afa: 687b ldr r3, [r7, #4] - 8032afc: 681b ldr r3, [r3, #0] - 8032afe: 691a ldr r2, [r3, #16] - 8032b00: 687b ldr r3, [r7, #4] - 8032b02: 681b ldr r3, [r3, #0] - 8032b04: f042 0210 orr.w r2, r2, #16 - 8032b08: 611a str r2, [r3, #16] + 8032b3a: 687b ldr r3, [r7, #4] + 8032b3c: 681b ldr r3, [r3, #0] + 8032b3e: 691a ldr r2, [r3, #16] + 8032b40: 687b ldr r3, [r7, #4] + 8032b42: 681b ldr r3, [r3, #0] + 8032b44: f042 0210 orr.w r2, r2, #16 + 8032b48: 611a str r2, [r3, #16] if (hfdcan->Init.Mode == FDCAN_MODE_INTERNAL_LOOPBACK) - 8032b0a: 687b ldr r3, [r7, #4] - 8032b0c: 68db ldr r3, [r3, #12] - 8032b0e: 2b03 cmp r3, #3 - 8032b10: d114 bne.n 8032b3c + 8032b4a: 687b ldr r3, [r7, #4] + 8032b4c: 68db ldr r3, [r3, #12] + 8032b4e: 2b03 cmp r3, #3 + 8032b50: d114 bne.n 8032b7c { SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_MON); - 8032b12: 687b ldr r3, [r7, #4] - 8032b14: 681b ldr r3, [r3, #0] - 8032b16: 699a ldr r2, [r3, #24] - 8032b18: 687b ldr r3, [r7, #4] - 8032b1a: 681b ldr r3, [r3, #0] - 8032b1c: f042 0220 orr.w r2, r2, #32 - 8032b20: 619a str r2, [r3, #24] - 8032b22: e00b b.n 8032b3c - 8032b24: 0804a118 .word 0x0804a118 - 8032b28: 4000a000 .word 0x4000a000 + 8032b52: 687b ldr r3, [r7, #4] + 8032b54: 681b ldr r3, [r3, #0] + 8032b56: 699a ldr r2, [r3, #24] + 8032b58: 687b ldr r3, [r7, #4] + 8032b5a: 681b ldr r3, [r3, #0] + 8032b5c: f042 0220 orr.w r2, r2, #32 + 8032b60: 619a str r2, [r3, #24] + 8032b62: e00b b.n 8032b7c + 8032b64: 0804a158 .word 0x0804a158 + 8032b68: 4000a000 .word 0x4000a000 } } else { /* Enable bus monitoring mode */ SET_BIT(hfdcan->Instance->CCCR, FDCAN_CCCR_MON); - 8032b2c: 687b ldr r3, [r7, #4] - 8032b2e: 681b ldr r3, [r3, #0] - 8032b30: 699a ldr r2, [r3, #24] - 8032b32: 687b ldr r3, [r7, #4] - 8032b34: 681b ldr r3, [r3, #0] - 8032b36: f042 0220 orr.w r2, r2, #32 - 8032b3a: 619a str r2, [r3, #24] + 8032b6c: 687b ldr r3, [r7, #4] + 8032b6e: 681b ldr r3, [r3, #0] + 8032b70: 699a ldr r2, [r3, #24] + 8032b72: 687b ldr r3, [r7, #4] + 8032b74: 681b ldr r3, [r3, #0] + 8032b76: f042 0220 orr.w r2, r2, #32 + 8032b7a: 619a str r2, [r3, #24] { /* Nothing to do: normal mode */ } /* Set the nominal bit timing register */ hfdcan->Instance->NBTP = ((((uint32_t)hfdcan->Init.NominalSyncJumpWidth - 1U) << FDCAN_NBTP_NSJW_Pos) | \ - 8032b3c: 687b ldr r3, [r7, #4] - 8032b3e: 699b ldr r3, [r3, #24] - 8032b40: 3b01 subs r3, #1 - 8032b42: 065a lsls r2, r3, #25 + 8032b7c: 687b ldr r3, [r7, #4] + 8032b7e: 699b ldr r3, [r3, #24] + 8032b80: 3b01 subs r3, #1 + 8032b82: 065a lsls r2, r3, #25 (((uint32_t)hfdcan->Init.NominalTimeSeg1 - 1U) << FDCAN_NBTP_NTSEG1_Pos) | \ - 8032b44: 687b ldr r3, [r7, #4] - 8032b46: 69db ldr r3, [r3, #28] - 8032b48: 3b01 subs r3, #1 - 8032b4a: 021b lsls r3, r3, #8 + 8032b84: 687b ldr r3, [r7, #4] + 8032b86: 69db ldr r3, [r3, #28] + 8032b88: 3b01 subs r3, #1 + 8032b8a: 021b lsls r3, r3, #8 hfdcan->Instance->NBTP = ((((uint32_t)hfdcan->Init.NominalSyncJumpWidth - 1U) << FDCAN_NBTP_NSJW_Pos) | \ - 8032b4c: 431a orrs r2, r3 + 8032b8c: 431a orrs r2, r3 (((uint32_t)hfdcan->Init.NominalTimeSeg2 - 1U) << FDCAN_NBTP_NTSEG2_Pos) | \ - 8032b4e: 687b ldr r3, [r7, #4] - 8032b50: 6a1b ldr r3, [r3, #32] - 8032b52: 3b01 subs r3, #1 + 8032b8e: 687b ldr r3, [r7, #4] + 8032b90: 6a1b ldr r3, [r3, #32] + 8032b92: 3b01 subs r3, #1 (((uint32_t)hfdcan->Init.NominalTimeSeg1 - 1U) << FDCAN_NBTP_NTSEG1_Pos) | \ - 8032b54: ea42 0103 orr.w r1, r2, r3 + 8032b94: ea42 0103 orr.w r1, r2, r3 (((uint32_t)hfdcan->Init.NominalPrescaler - 1U) << FDCAN_NBTP_NBRP_Pos)); - 8032b58: 687b ldr r3, [r7, #4] - 8032b5a: 695b ldr r3, [r3, #20] - 8032b5c: 3b01 subs r3, #1 - 8032b5e: 041a lsls r2, r3, #16 + 8032b98: 687b ldr r3, [r7, #4] + 8032b9a: 695b ldr r3, [r3, #20] + 8032b9c: 3b01 subs r3, #1 + 8032b9e: 041a lsls r2, r3, #16 hfdcan->Instance->NBTP = ((((uint32_t)hfdcan->Init.NominalSyncJumpWidth - 1U) << FDCAN_NBTP_NSJW_Pos) | \ - 8032b60: 687b ldr r3, [r7, #4] - 8032b62: 681b ldr r3, [r3, #0] + 8032ba0: 687b ldr r3, [r7, #4] + 8032ba2: 681b ldr r3, [r3, #0] (((uint32_t)hfdcan->Init.NominalTimeSeg2 - 1U) << FDCAN_NBTP_NTSEG2_Pos) | \ - 8032b64: 430a orrs r2, r1 + 8032ba4: 430a orrs r2, r1 hfdcan->Instance->NBTP = ((((uint32_t)hfdcan->Init.NominalSyncJumpWidth - 1U) << FDCAN_NBTP_NSJW_Pos) | \ - 8032b66: 61da str r2, [r3, #28] + 8032ba6: 61da str r2, [r3, #28] /* If FD operation with BRS is selected, set the data bit timing register */ if (hfdcan->Init.FrameFormat == FDCAN_FRAME_FD_BRS) - 8032b68: 687b ldr r3, [r7, #4] - 8032b6a: 689b ldr r3, [r3, #8] - 8032b6c: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 8032b70: d115 bne.n 8032b9e + 8032ba8: 687b ldr r3, [r7, #4] + 8032baa: 689b ldr r3, [r3, #8] + 8032bac: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 8032bb0: d115 bne.n 8032bde { hfdcan->Instance->DBTP = ((((uint32_t)hfdcan->Init.DataSyncJumpWidth - 1U) << FDCAN_DBTP_DSJW_Pos) | \ - 8032b72: 687b ldr r3, [r7, #4] - 8032b74: 6a9b ldr r3, [r3, #40] ; 0x28 - 8032b76: 1e5a subs r2, r3, #1 + 8032bb2: 687b ldr r3, [r7, #4] + 8032bb4: 6a9b ldr r3, [r3, #40] ; 0x28 + 8032bb6: 1e5a subs r2, r3, #1 (((uint32_t)hfdcan->Init.DataTimeSeg1 - 1U) << FDCAN_DBTP_DTSEG1_Pos) | \ - 8032b78: 687b ldr r3, [r7, #4] - 8032b7a: 6adb ldr r3, [r3, #44] ; 0x2c - 8032b7c: 3b01 subs r3, #1 - 8032b7e: 021b lsls r3, r3, #8 + 8032bb8: 687b ldr r3, [r7, #4] + 8032bba: 6adb ldr r3, [r3, #44] ; 0x2c + 8032bbc: 3b01 subs r3, #1 + 8032bbe: 021b lsls r3, r3, #8 hfdcan->Instance->DBTP = ((((uint32_t)hfdcan->Init.DataSyncJumpWidth - 1U) << FDCAN_DBTP_DSJW_Pos) | \ - 8032b80: 431a orrs r2, r3 + 8032bc0: 431a orrs r2, r3 (((uint32_t)hfdcan->Init.DataTimeSeg2 - 1U) << FDCAN_DBTP_DTSEG2_Pos) | \ - 8032b82: 687b ldr r3, [r7, #4] - 8032b84: 6b1b ldr r3, [r3, #48] ; 0x30 - 8032b86: 3b01 subs r3, #1 - 8032b88: 011b lsls r3, r3, #4 + 8032bc2: 687b ldr r3, [r7, #4] + 8032bc4: 6b1b ldr r3, [r3, #48] ; 0x30 + 8032bc6: 3b01 subs r3, #1 + 8032bc8: 011b lsls r3, r3, #4 (((uint32_t)hfdcan->Init.DataTimeSeg1 - 1U) << FDCAN_DBTP_DTSEG1_Pos) | \ - 8032b8a: ea42 0103 orr.w r1, r2, r3 + 8032bca: ea42 0103 orr.w r1, r2, r3 (((uint32_t)hfdcan->Init.DataPrescaler - 1U) << FDCAN_DBTP_DBRP_Pos)); - 8032b8e: 687b ldr r3, [r7, #4] - 8032b90: 6a5b ldr r3, [r3, #36] ; 0x24 - 8032b92: 3b01 subs r3, #1 - 8032b94: 041a lsls r2, r3, #16 + 8032bce: 687b ldr r3, [r7, #4] + 8032bd0: 6a5b ldr r3, [r3, #36] ; 0x24 + 8032bd2: 3b01 subs r3, #1 + 8032bd4: 041a lsls r2, r3, #16 hfdcan->Instance->DBTP = ((((uint32_t)hfdcan->Init.DataSyncJumpWidth - 1U) << FDCAN_DBTP_DSJW_Pos) | \ - 8032b96: 687b ldr r3, [r7, #4] - 8032b98: 681b ldr r3, [r3, #0] + 8032bd6: 687b ldr r3, [r7, #4] + 8032bd8: 681b ldr r3, [r3, #0] (((uint32_t)hfdcan->Init.DataTimeSeg2 - 1U) << FDCAN_DBTP_DTSEG2_Pos) | \ - 8032b9a: 430a orrs r2, r1 + 8032bda: 430a orrs r2, r1 hfdcan->Instance->DBTP = ((((uint32_t)hfdcan->Init.DataSyncJumpWidth - 1U) << FDCAN_DBTP_DSJW_Pos) | \ - 8032b9c: 60da str r2, [r3, #12] + 8032bdc: 60da str r2, [r3, #12] } if (hfdcan->Init.TxFifoQueueElmtsNbr > 0U) - 8032b9e: 687b ldr r3, [r7, #4] - 8032ba0: 6e1b ldr r3, [r3, #96] ; 0x60 - 8032ba2: 2b00 cmp r3, #0 - 8032ba4: d00a beq.n 8032bbc + 8032bde: 687b ldr r3, [r7, #4] + 8032be0: 6e1b ldr r3, [r3, #96] ; 0x60 + 8032be2: 2b00 cmp r3, #0 + 8032be4: d00a beq.n 8032bfc { /* Select between Tx FIFO and Tx Queue operation modes */ SET_BIT(hfdcan->Instance->TXBC, hfdcan->Init.TxFifoQueueMode); - 8032ba6: 687b ldr r3, [r7, #4] - 8032ba8: 681b ldr r3, [r3, #0] - 8032baa: f8d3 10c0 ldr.w r1, [r3, #192] ; 0xc0 - 8032bae: 687b ldr r3, [r7, #4] - 8032bb0: 6e5a ldr r2, [r3, #100] ; 0x64 - 8032bb2: 687b ldr r3, [r7, #4] - 8032bb4: 681b ldr r3, [r3, #0] - 8032bb6: 430a orrs r2, r1 - 8032bb8: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 + 8032be6: 687b ldr r3, [r7, #4] + 8032be8: 681b ldr r3, [r3, #0] + 8032bea: f8d3 10c0 ldr.w r1, [r3, #192] ; 0xc0 + 8032bee: 687b ldr r3, [r7, #4] + 8032bf0: 6e5a ldr r2, [r3, #100] ; 0x64 + 8032bf2: 687b ldr r3, [r7, #4] + 8032bf4: 681b ldr r3, [r3, #0] + 8032bf6: 430a orrs r2, r1 + 8032bf8: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 } /* Configure Tx element size */ if ((hfdcan->Init.TxBuffersNbr + hfdcan->Init.TxFifoQueueElmtsNbr) > 0U) - 8032bbc: 687b ldr r3, [r7, #4] - 8032bbe: 6dda ldr r2, [r3, #92] ; 0x5c - 8032bc0: 687b ldr r3, [r7, #4] - 8032bc2: 6e1b ldr r3, [r3, #96] ; 0x60 - 8032bc4: 4413 add r3, r2 - 8032bc6: 2b00 cmp r3, #0 - 8032bc8: d011 beq.n 8032bee + 8032bfc: 687b ldr r3, [r7, #4] + 8032bfe: 6dda ldr r2, [r3, #92] ; 0x5c + 8032c00: 687b ldr r3, [r7, #4] + 8032c02: 6e1b ldr r3, [r3, #96] ; 0x60 + 8032c04: 4413 add r3, r2 + 8032c06: 2b00 cmp r3, #0 + 8032c08: d011 beq.n 8032c2e { MODIFY_REG(hfdcan->Instance->TXESC, FDCAN_TXESC_TBDS, CvtEltSize[hfdcan->Init.TxElmtSize]); - 8032bca: 687b ldr r3, [r7, #4] - 8032bcc: 681b ldr r3, [r3, #0] - 8032bce: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 - 8032bd2: f023 0107 bic.w r1, r3, #7 - 8032bd6: 687b ldr r3, [r7, #4] - 8032bd8: 6e9b ldr r3, [r3, #104] ; 0x68 - 8032bda: 009b lsls r3, r3, #2 - 8032bdc: 3360 adds r3, #96 ; 0x60 - 8032bde: 443b add r3, r7 - 8032be0: f853 2c54 ldr.w r2, [r3, #-84] - 8032be4: 687b ldr r3, [r7, #4] - 8032be6: 681b ldr r3, [r3, #0] - 8032be8: 430a orrs r2, r1 - 8032bea: f8c3 20c8 str.w r2, [r3, #200] ; 0xc8 + 8032c0a: 687b ldr r3, [r7, #4] + 8032c0c: 681b ldr r3, [r3, #0] + 8032c0e: f8d3 30c8 ldr.w r3, [r3, #200] ; 0xc8 + 8032c12: f023 0107 bic.w r1, r3, #7 + 8032c16: 687b ldr r3, [r7, #4] + 8032c18: 6e9b ldr r3, [r3, #104] ; 0x68 + 8032c1a: 009b lsls r3, r3, #2 + 8032c1c: 3360 adds r3, #96 ; 0x60 + 8032c1e: 443b add r3, r7 + 8032c20: f853 2c54 ldr.w r2, [r3, #-84] + 8032c24: 687b ldr r3, [r7, #4] + 8032c26: 681b ldr r3, [r3, #0] + 8032c28: 430a orrs r2, r1 + 8032c2a: f8c3 20c8 str.w r2, [r3, #200] ; 0xc8 } /* Configure Rx FIFO 0 element size */ if (hfdcan->Init.RxFifo0ElmtsNbr > 0U) - 8032bee: 687b ldr r3, [r7, #4] - 8032bf0: 6c1b ldr r3, [r3, #64] ; 0x40 - 8032bf2: 2b00 cmp r3, #0 - 8032bf4: d011 beq.n 8032c1a + 8032c2e: 687b ldr r3, [r7, #4] + 8032c30: 6c1b ldr r3, [r3, #64] ; 0x40 + 8032c32: 2b00 cmp r3, #0 + 8032c34: d011 beq.n 8032c5a { MODIFY_REG(hfdcan->Instance->RXESC, FDCAN_RXESC_F0DS, (CvtEltSize[hfdcan->Init.RxFifo0ElmtSize] << FDCAN_RXESC_F0DS_Pos)); - 8032bf6: 687b ldr r3, [r7, #4] - 8032bf8: 681b ldr r3, [r3, #0] - 8032bfa: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc - 8032bfe: f023 0107 bic.w r1, r3, #7 - 8032c02: 687b ldr r3, [r7, #4] - 8032c04: 6c5b ldr r3, [r3, #68] ; 0x44 - 8032c06: 009b lsls r3, r3, #2 - 8032c08: 3360 adds r3, #96 ; 0x60 - 8032c0a: 443b add r3, r7 - 8032c0c: f853 2c54 ldr.w r2, [r3, #-84] - 8032c10: 687b ldr r3, [r7, #4] - 8032c12: 681b ldr r3, [r3, #0] - 8032c14: 430a orrs r2, r1 - 8032c16: f8c3 20bc str.w r2, [r3, #188] ; 0xbc + 8032c36: 687b ldr r3, [r7, #4] + 8032c38: 681b ldr r3, [r3, #0] + 8032c3a: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc + 8032c3e: f023 0107 bic.w r1, r3, #7 + 8032c42: 687b ldr r3, [r7, #4] + 8032c44: 6c5b ldr r3, [r3, #68] ; 0x44 + 8032c46: 009b lsls r3, r3, #2 + 8032c48: 3360 adds r3, #96 ; 0x60 + 8032c4a: 443b add r3, r7 + 8032c4c: f853 2c54 ldr.w r2, [r3, #-84] + 8032c50: 687b ldr r3, [r7, #4] + 8032c52: 681b ldr r3, [r3, #0] + 8032c54: 430a orrs r2, r1 + 8032c56: f8c3 20bc str.w r2, [r3, #188] ; 0xbc } /* Configure Rx FIFO 1 element size */ if (hfdcan->Init.RxFifo1ElmtsNbr > 0U) - 8032c1a: 687b ldr r3, [r7, #4] - 8032c1c: 6c9b ldr r3, [r3, #72] ; 0x48 - 8032c1e: 2b00 cmp r3, #0 - 8032c20: d012 beq.n 8032c48 + 8032c5a: 687b ldr r3, [r7, #4] + 8032c5c: 6c9b ldr r3, [r3, #72] ; 0x48 + 8032c5e: 2b00 cmp r3, #0 + 8032c60: d012 beq.n 8032c88 { MODIFY_REG(hfdcan->Instance->RXESC, FDCAN_RXESC_F1DS, (CvtEltSize[hfdcan->Init.RxFifo1ElmtSize] << FDCAN_RXESC_F1DS_Pos)); - 8032c22: 687b ldr r3, [r7, #4] - 8032c24: 681b ldr r3, [r3, #0] - 8032c26: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc - 8032c2a: f023 0170 bic.w r1, r3, #112 ; 0x70 - 8032c2e: 687b ldr r3, [r7, #4] - 8032c30: 6cdb ldr r3, [r3, #76] ; 0x4c - 8032c32: 009b lsls r3, r3, #2 - 8032c34: 3360 adds r3, #96 ; 0x60 - 8032c36: 443b add r3, r7 - 8032c38: f853 3c54 ldr.w r3, [r3, #-84] - 8032c3c: 011a lsls r2, r3, #4 - 8032c3e: 687b ldr r3, [r7, #4] - 8032c40: 681b ldr r3, [r3, #0] - 8032c42: 430a orrs r2, r1 - 8032c44: f8c3 20bc str.w r2, [r3, #188] ; 0xbc + 8032c62: 687b ldr r3, [r7, #4] + 8032c64: 681b ldr r3, [r3, #0] + 8032c66: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc + 8032c6a: f023 0170 bic.w r1, r3, #112 ; 0x70 + 8032c6e: 687b ldr r3, [r7, #4] + 8032c70: 6cdb ldr r3, [r3, #76] ; 0x4c + 8032c72: 009b lsls r3, r3, #2 + 8032c74: 3360 adds r3, #96 ; 0x60 + 8032c76: 443b add r3, r7 + 8032c78: f853 3c54 ldr.w r3, [r3, #-84] + 8032c7c: 011a lsls r2, r3, #4 + 8032c7e: 687b ldr r3, [r7, #4] + 8032c80: 681b ldr r3, [r3, #0] + 8032c82: 430a orrs r2, r1 + 8032c84: f8c3 20bc str.w r2, [r3, #188] ; 0xbc } /* Configure Rx buffer element size */ if (hfdcan->Init.RxBuffersNbr > 0U) - 8032c48: 687b ldr r3, [r7, #4] - 8032c4a: 6d1b ldr r3, [r3, #80] ; 0x50 - 8032c4c: 2b00 cmp r3, #0 - 8032c4e: d012 beq.n 8032c76 + 8032c88: 687b ldr r3, [r7, #4] + 8032c8a: 6d1b ldr r3, [r3, #80] ; 0x50 + 8032c8c: 2b00 cmp r3, #0 + 8032c8e: d012 beq.n 8032cb6 { MODIFY_REG(hfdcan->Instance->RXESC, FDCAN_RXESC_RBDS, (CvtEltSize[hfdcan->Init.RxBufferSize] << FDCAN_RXESC_RBDS_Pos)); - 8032c50: 687b ldr r3, [r7, #4] - 8032c52: 681b ldr r3, [r3, #0] - 8032c54: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc - 8032c58: f423 61e0 bic.w r1, r3, #1792 ; 0x700 - 8032c5c: 687b ldr r3, [r7, #4] - 8032c5e: 6d5b ldr r3, [r3, #84] ; 0x54 - 8032c60: 009b lsls r3, r3, #2 - 8032c62: 3360 adds r3, #96 ; 0x60 - 8032c64: 443b add r3, r7 - 8032c66: f853 3c54 ldr.w r3, [r3, #-84] - 8032c6a: 021a lsls r2, r3, #8 - 8032c6c: 687b ldr r3, [r7, #4] - 8032c6e: 681b ldr r3, [r3, #0] - 8032c70: 430a orrs r2, r1 - 8032c72: f8c3 20bc str.w r2, [r3, #188] ; 0xbc + 8032c90: 687b ldr r3, [r7, #4] + 8032c92: 681b ldr r3, [r3, #0] + 8032c94: f8d3 30bc ldr.w r3, [r3, #188] ; 0xbc + 8032c98: f423 61e0 bic.w r1, r3, #1792 ; 0x700 + 8032c9c: 687b ldr r3, [r7, #4] + 8032c9e: 6d5b ldr r3, [r3, #84] ; 0x54 + 8032ca0: 009b lsls r3, r3, #2 + 8032ca2: 3360 adds r3, #96 ; 0x60 + 8032ca4: 443b add r3, r7 + 8032ca6: f853 3c54 ldr.w r3, [r3, #-84] + 8032caa: 021a lsls r2, r3, #8 + 8032cac: 687b ldr r3, [r7, #4] + 8032cae: 681b ldr r3, [r3, #0] + 8032cb0: 430a orrs r2, r1 + 8032cb2: f8c3 20bc str.w r2, [r3, #188] ; 0xbc } /* By default operation mode is set to Event-driven communication. If Time-triggered communication is needed, user should call the HAL_FDCAN_TT_ConfigOperation function just after the HAL_FDCAN_Init */ if (hfdcan->Instance == FDCAN1) - 8032c76: 687b ldr r3, [r7, #4] - 8032c78: 681b ldr r3, [r3, #0] - 8032c7a: 4a11 ldr r2, [pc, #68] ; (8032cc0 ) - 8032c7c: 4293 cmp r3, r2 - 8032c7e: d107 bne.n 8032c90 + 8032cb6: 687b ldr r3, [r7, #4] + 8032cb8: 681b ldr r3, [r3, #0] + 8032cba: 4a11 ldr r2, [pc, #68] ; (8032d00 ) + 8032cbc: 4293 cmp r3, r2 + 8032cbe: d107 bne.n 8032cd0 { CLEAR_BIT(hfdcan->ttcan->TTOCF, FDCAN_TTOCF_OM); - 8032c80: 687b ldr r3, [r7, #4] - 8032c82: 685b ldr r3, [r3, #4] - 8032c84: 689a ldr r2, [r3, #8] - 8032c86: 687b ldr r3, [r7, #4] - 8032c88: 685b ldr r3, [r3, #4] - 8032c8a: f022 0203 bic.w r2, r2, #3 - 8032c8e: 609a str r2, [r3, #8] + 8032cc0: 687b ldr r3, [r7, #4] + 8032cc2: 685b ldr r3, [r3, #4] + 8032cc4: 689a ldr r2, [r3, #8] + 8032cc6: 687b ldr r3, [r7, #4] + 8032cc8: 685b ldr r3, [r3, #4] + 8032cca: f022 0203 bic.w r2, r2, #3 + 8032cce: 609a str r2, [r3, #8] } /* Initialize the Latest Tx FIFO/Queue request buffer index */ hfdcan->LatestTxFifoQRequest = 0U; - 8032c90: 687b ldr r3, [r7, #4] - 8032c92: 2200 movs r2, #0 - 8032c94: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 8032cd0: 687b ldr r3, [r7, #4] + 8032cd2: 2200 movs r2, #0 + 8032cd4: f8c3 2094 str.w r2, [r3, #148] ; 0x94 /* Initialize the error code */ hfdcan->ErrorCode = HAL_FDCAN_ERROR_NONE; - 8032c98: 687b ldr r3, [r7, #4] - 8032c9a: 2200 movs r2, #0 - 8032c9c: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032cd8: 687b ldr r3, [r7, #4] + 8032cda: 2200 movs r2, #0 + 8032cdc: f8c3 209c str.w r2, [r3, #156] ; 0x9c /* Initialize the FDCAN state */ hfdcan->State = HAL_FDCAN_STATE_READY; - 8032ca0: 687b ldr r3, [r7, #4] - 8032ca2: 2201 movs r2, #1 - 8032ca4: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 8032ce0: 687b ldr r3, [r7, #4] + 8032ce2: 2201 movs r2, #1 + 8032ce4: f883 2098 strb.w r2, [r3, #152] ; 0x98 /* Calculate each RAM block address */ status = FDCAN_CalcultateRamBlockAddresses(hfdcan); - 8032ca8: 6878 ldr r0, [r7, #4] - 8032caa: f000 fc77 bl 803359c - 8032cae: 4603 mov r3, r0 - 8032cb0: f887 305b strb.w r3, [r7, #91] ; 0x5b + 8032ce8: 6878 ldr r0, [r7, #4] + 8032cea: f000 fc77 bl 80335dc + 8032cee: 4603 mov r3, r0 + 8032cf0: f887 305b strb.w r3, [r7, #91] ; 0x5b /* Return function status */ return status; - 8032cb4: f897 305b ldrb.w r3, [r7, #91] ; 0x5b + 8032cf4: f897 305b ldrb.w r3, [r7, #91] ; 0x5b } - 8032cb8: 4618 mov r0, r3 - 8032cba: 3760 adds r7, #96 ; 0x60 - 8032cbc: 46bd mov sp, r7 - 8032cbe: bd80 pop {r7, pc} - 8032cc0: 4000a000 .word 0x4000a000 + 8032cf8: 4618 mov r0, r3 + 8032cfa: 3760 adds r7, #96 ; 0x60 + 8032cfc: 46bd mov sp, r7 + 8032cfe: bd80 pop {r7, pc} + 8032d00: 4000a000 .word 0x4000a000 -08032cc4 : +08032d04 : * @param pRxHeader pointer to a FDCAN_RxHeaderTypeDef structure. * @param pRxData pointer to a buffer where the payload of the Rx frame will be stored. * @retval HAL status */ HAL_StatusTypeDef HAL_FDCAN_GetRxMessage(FDCAN_HandleTypeDef *hfdcan, uint32_t RxLocation, FDCAN_RxHeaderTypeDef *pRxHeader, uint8_t *pRxData) { - 8032cc4: b480 push {r7} - 8032cc6: b08b sub sp, #44 ; 0x2c - 8032cc8: af00 add r7, sp, #0 - 8032cca: 60f8 str r0, [r7, #12] - 8032ccc: 60b9 str r1, [r7, #8] - 8032cce: 607a str r2, [r7, #4] - 8032cd0: 603b str r3, [r7, #0] + 8032d04: b480 push {r7} + 8032d06: b08b sub sp, #44 ; 0x2c + 8032d08: af00 add r7, sp, #0 + 8032d0a: 60f8 str r0, [r7, #12] + 8032d0c: 60b9 str r1, [r7, #8] + 8032d0e: 607a str r2, [r7, #4] + 8032d10: 603b str r3, [r7, #0] uint32_t *RxAddress; uint8_t *pData; uint32_t ByteCounter; uint32_t GetIndex = 0; - 8032cd2: 2300 movs r3, #0 - 8032cd4: 61fb str r3, [r7, #28] + 8032d12: 2300 movs r3, #0 + 8032d14: 61fb str r3, [r7, #28] HAL_FDCAN_StateTypeDef state = hfdcan->State; - 8032cd6: 68fb ldr r3, [r7, #12] - 8032cd8: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 - 8032cdc: 76fb strb r3, [r7, #27] + 8032d16: 68fb ldr r3, [r7, #12] + 8032d18: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 + 8032d1c: 76fb strb r3, [r7, #27] if (state == HAL_FDCAN_STATE_BUSY) - 8032cde: 7efb ldrb r3, [r7, #27] - 8032ce0: 2b02 cmp r3, #2 - 8032ce2: f040 814b bne.w 8032f7c + 8032d1e: 7efb ldrb r3, [r7, #27] + 8032d20: 2b02 cmp r3, #2 + 8032d22: f040 814b bne.w 8032fbc { if (RxLocation == FDCAN_RX_FIFO0) /* Rx element is assigned to the Rx FIFO 0 */ - 8032ce6: 68bb ldr r3, [r7, #8] - 8032ce8: 2b40 cmp r3, #64 ; 0x40 - 8032cea: d14d bne.n 8032d88 + 8032d26: 68bb ldr r3, [r7, #8] + 8032d28: 2b40 cmp r3, #64 ; 0x40 + 8032d2a: d14d bne.n 8032dc8 { /* Check that the Rx FIFO 0 has an allocated area into the RAM */ if ((hfdcan->Instance->RXF0C & FDCAN_RXF0C_F0S) == 0U) - 8032cec: 68fb ldr r3, [r7, #12] - 8032cee: 681b ldr r3, [r3, #0] - 8032cf0: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 8032cf4: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 8032cf8: 2b00 cmp r3, #0 - 8032cfa: d109 bne.n 8032d10 + 8032d2c: 68fb ldr r3, [r7, #12] + 8032d2e: 681b ldr r3, [r3, #0] + 8032d30: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 8032d34: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 8032d38: 2b00 cmp r3, #0 + 8032d3a: d109 bne.n 8032d50 { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_PARAM; - 8032cfc: 68fb ldr r3, [r7, #12] - 8032cfe: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032d02: f043 0220 orr.w r2, r3, #32 - 8032d06: 68fb ldr r3, [r7, #12] - 8032d08: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032d3c: 68fb ldr r3, [r7, #12] + 8032d3e: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032d42: f043 0220 orr.w r2, r3, #32 + 8032d46: 68fb ldr r3, [r7, #12] + 8032d48: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032d0c: 2301 movs r3, #1 - 8032d0e: e13e b.n 8032f8e + 8032d4c: 2301 movs r3, #1 + 8032d4e: e13e b.n 8032fce } /* Check that the Rx FIFO 0 is not empty */ if ((hfdcan->Instance->RXF0S & FDCAN_RXF0S_F0FL) == 0U) - 8032d10: 68fb ldr r3, [r7, #12] - 8032d12: 681b ldr r3, [r3, #0] - 8032d14: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 8032d18: f003 037f and.w r3, r3, #127 ; 0x7f - 8032d1c: 2b00 cmp r3, #0 - 8032d1e: d109 bne.n 8032d34 + 8032d50: 68fb ldr r3, [r7, #12] + 8032d52: 681b ldr r3, [r3, #0] + 8032d54: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 8032d58: f003 037f and.w r3, r3, #127 ; 0x7f + 8032d5c: 2b00 cmp r3, #0 + 8032d5e: d109 bne.n 8032d74 { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_FIFO_EMPTY; - 8032d20: 68fb ldr r3, [r7, #12] - 8032d22: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032d26: f443 7280 orr.w r2, r3, #256 ; 0x100 - 8032d2a: 68fb ldr r3, [r7, #12] - 8032d2c: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032d60: 68fb ldr r3, [r7, #12] + 8032d62: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032d66: f443 7280 orr.w r2, r3, #256 ; 0x100 + 8032d6a: 68fb ldr r3, [r7, #12] + 8032d6c: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032d30: 2301 movs r3, #1 - 8032d32: e12c b.n 8032f8e + 8032d70: 2301 movs r3, #1 + 8032d72: e12c b.n 8032fce } else { /* Check that the Rx FIFO 0 is full & overwrite mode is on*/ if(((hfdcan->Instance->RXF0S & FDCAN_RXF0S_F0F) >> FDCAN_RXF0S_F0F_Pos) == 1U) - 8032d34: 68fb ldr r3, [r7, #12] - 8032d36: 681b ldr r3, [r3, #0] - 8032d38: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 8032d3c: 0e1b lsrs r3, r3, #24 - 8032d3e: f003 0301 and.w r3, r3, #1 - 8032d42: 2b01 cmp r3, #1 - 8032d44: d10b bne.n 8032d5e + 8032d74: 68fb ldr r3, [r7, #12] + 8032d76: 681b ldr r3, [r3, #0] + 8032d78: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 8032d7c: 0e1b lsrs r3, r3, #24 + 8032d7e: f003 0301 and.w r3, r3, #1 + 8032d82: 2b01 cmp r3, #1 + 8032d84: d10b bne.n 8032d9e { if(((hfdcan->Instance->RXF0C & FDCAN_RXF0C_F0OM) >> FDCAN_RXF0C_F0OM_Pos) == FDCAN_RX_FIFO_OVERWRITE) - 8032d46: 68fb ldr r3, [r7, #12] - 8032d48: 681b ldr r3, [r3, #0] - 8032d4a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 8032d4e: 0fdb lsrs r3, r3, #31 - 8032d50: f003 0301 and.w r3, r3, #1 - 8032d54: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 8032d58: d101 bne.n 8032d5e + 8032d86: 68fb ldr r3, [r7, #12] + 8032d88: 681b ldr r3, [r3, #0] + 8032d8a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 8032d8e: 0fdb lsrs r3, r3, #31 + 8032d90: f003 0301 and.w r3, r3, #1 + 8032d94: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8032d98: d101 bne.n 8032d9e { /* When overwrite status is on discard first message in FIFO */ GetIndex = 1U; - 8032d5a: 2301 movs r3, #1 - 8032d5c: 61fb str r3, [r7, #28] + 8032d9a: 2301 movs r3, #1 + 8032d9c: 61fb str r3, [r7, #28] } } /* Calculate Rx FIFO 0 element index*/ GetIndex += ((hfdcan->Instance->RXF0S & FDCAN_RXF0S_F0GI) >> FDCAN_RXF0S_F0GI_Pos); - 8032d5e: 68fb ldr r3, [r7, #12] - 8032d60: 681b ldr r3, [r3, #0] - 8032d62: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 8032d66: 0a1b lsrs r3, r3, #8 - 8032d68: f003 033f and.w r3, r3, #63 ; 0x3f - 8032d6c: 69fa ldr r2, [r7, #28] - 8032d6e: 4413 add r3, r2 - 8032d70: 61fb str r3, [r7, #28] + 8032d9e: 68fb ldr r3, [r7, #12] + 8032da0: 681b ldr r3, [r3, #0] + 8032da2: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 8032da6: 0a1b lsrs r3, r3, #8 + 8032da8: f003 033f and.w r3, r3, #63 ; 0x3f + 8032dac: 69fa ldr r2, [r7, #28] + 8032dae: 4413 add r3, r2 + 8032db0: 61fb str r3, [r7, #28] /* Calculate Rx FIFO 0 element address */ RxAddress = (uint32_t *)(hfdcan->msgRam.RxFIFO0SA + (GetIndex * hfdcan->Init.RxFifo0ElmtSize * 4U)); - 8032d72: 68fb ldr r3, [r7, #12] - 8032d74: 6f5a ldr r2, [r3, #116] ; 0x74 - 8032d76: 68fb ldr r3, [r7, #12] - 8032d78: 6c5b ldr r3, [r3, #68] ; 0x44 - 8032d7a: 69f9 ldr r1, [r7, #28] - 8032d7c: fb01 f303 mul.w r3, r1, r3 - 8032d80: 009b lsls r3, r3, #2 - 8032d82: 4413 add r3, r2 - 8032d84: 627b str r3, [r7, #36] ; 0x24 - 8032d86: e069 b.n 8032e5c + 8032db2: 68fb ldr r3, [r7, #12] + 8032db4: 6f5a ldr r2, [r3, #116] ; 0x74 + 8032db6: 68fb ldr r3, [r7, #12] + 8032db8: 6c5b ldr r3, [r3, #68] ; 0x44 + 8032dba: 69f9 ldr r1, [r7, #28] + 8032dbc: fb01 f303 mul.w r3, r1, r3 + 8032dc0: 009b lsls r3, r3, #2 + 8032dc2: 4413 add r3, r2 + 8032dc4: 627b str r3, [r7, #36] ; 0x24 + 8032dc6: e069 b.n 8032e9c } } else if (RxLocation == FDCAN_RX_FIFO1) /* Rx element is assigned to the Rx FIFO 1 */ - 8032d88: 68bb ldr r3, [r7, #8] - 8032d8a: 2b41 cmp r3, #65 ; 0x41 - 8032d8c: d14d bne.n 8032e2a + 8032dc8: 68bb ldr r3, [r7, #8] + 8032dca: 2b41 cmp r3, #65 ; 0x41 + 8032dcc: d14d bne.n 8032e6a { /* Check that the Rx FIFO 1 has an allocated area into the RAM */ if ((hfdcan->Instance->RXF1C & FDCAN_RXF1C_F1S) == 0U) - 8032d8e: 68fb ldr r3, [r7, #12] - 8032d90: 681b ldr r3, [r3, #0] - 8032d92: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8032d96: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 8032d9a: 2b00 cmp r3, #0 - 8032d9c: d109 bne.n 8032db2 + 8032dce: 68fb ldr r3, [r7, #12] + 8032dd0: 681b ldr r3, [r3, #0] + 8032dd2: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8032dd6: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 8032dda: 2b00 cmp r3, #0 + 8032ddc: d109 bne.n 8032df2 { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_PARAM; - 8032d9e: 68fb ldr r3, [r7, #12] - 8032da0: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032da4: f043 0220 orr.w r2, r3, #32 - 8032da8: 68fb ldr r3, [r7, #12] - 8032daa: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032dde: 68fb ldr r3, [r7, #12] + 8032de0: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032de4: f043 0220 orr.w r2, r3, #32 + 8032de8: 68fb ldr r3, [r7, #12] + 8032dea: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032dae: 2301 movs r3, #1 - 8032db0: e0ed b.n 8032f8e + 8032dee: 2301 movs r3, #1 + 8032df0: e0ed b.n 8032fce } /* Check that the Rx FIFO 0 is not empty */ if ((hfdcan->Instance->RXF1S & FDCAN_RXF1S_F1FL) == 0U) - 8032db2: 68fb ldr r3, [r7, #12] - 8032db4: 681b ldr r3, [r3, #0] - 8032db6: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 8032dba: f003 037f and.w r3, r3, #127 ; 0x7f - 8032dbe: 2b00 cmp r3, #0 - 8032dc0: d109 bne.n 8032dd6 + 8032df2: 68fb ldr r3, [r7, #12] + 8032df4: 681b ldr r3, [r3, #0] + 8032df6: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 8032dfa: f003 037f and.w r3, r3, #127 ; 0x7f + 8032dfe: 2b00 cmp r3, #0 + 8032e00: d109 bne.n 8032e16 { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_FIFO_EMPTY; - 8032dc2: 68fb ldr r3, [r7, #12] - 8032dc4: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032dc8: f443 7280 orr.w r2, r3, #256 ; 0x100 - 8032dcc: 68fb ldr r3, [r7, #12] - 8032dce: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032e02: 68fb ldr r3, [r7, #12] + 8032e04: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032e08: f443 7280 orr.w r2, r3, #256 ; 0x100 + 8032e0c: 68fb ldr r3, [r7, #12] + 8032e0e: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032dd2: 2301 movs r3, #1 - 8032dd4: e0db b.n 8032f8e + 8032e12: 2301 movs r3, #1 + 8032e14: e0db b.n 8032fce } else { /* Check that the Rx FIFO 1 is full & overwrite mode is on*/ if(((hfdcan->Instance->RXF1S & FDCAN_RXF1S_F1F) >> FDCAN_RXF1S_F1F_Pos) == 1U) - 8032dd6: 68fb ldr r3, [r7, #12] - 8032dd8: 681b ldr r3, [r3, #0] - 8032dda: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 8032dde: 0e1b lsrs r3, r3, #24 - 8032de0: f003 0301 and.w r3, r3, #1 - 8032de4: 2b01 cmp r3, #1 - 8032de6: d10b bne.n 8032e00 + 8032e16: 68fb ldr r3, [r7, #12] + 8032e18: 681b ldr r3, [r3, #0] + 8032e1a: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 8032e1e: 0e1b lsrs r3, r3, #24 + 8032e20: f003 0301 and.w r3, r3, #1 + 8032e24: 2b01 cmp r3, #1 + 8032e26: d10b bne.n 8032e40 { if(((hfdcan->Instance->RXF1C & FDCAN_RXF1C_F1OM) >> FDCAN_RXF1C_F1OM_Pos) == FDCAN_RX_FIFO_OVERWRITE) - 8032de8: 68fb ldr r3, [r7, #12] - 8032dea: 681b ldr r3, [r3, #0] - 8032dec: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8032df0: 0fdb lsrs r3, r3, #31 - 8032df2: f003 0301 and.w r3, r3, #1 - 8032df6: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 - 8032dfa: d101 bne.n 8032e00 + 8032e28: 68fb ldr r3, [r7, #12] + 8032e2a: 681b ldr r3, [r3, #0] + 8032e2c: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8032e30: 0fdb lsrs r3, r3, #31 + 8032e32: f003 0301 and.w r3, r3, #1 + 8032e36: f1b3 4f00 cmp.w r3, #2147483648 ; 0x80000000 + 8032e3a: d101 bne.n 8032e40 { /* When overwrite status is on discard first message in FIFO */ GetIndex = 1U; - 8032dfc: 2301 movs r3, #1 - 8032dfe: 61fb str r3, [r7, #28] + 8032e3c: 2301 movs r3, #1 + 8032e3e: 61fb str r3, [r7, #28] } } /* Calculate Rx FIFO 1 element index*/ GetIndex += ((hfdcan->Instance->RXF1S & FDCAN_RXF1S_F1GI) >> FDCAN_RXF1S_F1GI_Pos); - 8032e00: 68fb ldr r3, [r7, #12] - 8032e02: 681b ldr r3, [r3, #0] - 8032e04: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 8032e08: 0a1b lsrs r3, r3, #8 - 8032e0a: f003 033f and.w r3, r3, #63 ; 0x3f - 8032e0e: 69fa ldr r2, [r7, #28] - 8032e10: 4413 add r3, r2 - 8032e12: 61fb str r3, [r7, #28] + 8032e40: 68fb ldr r3, [r7, #12] + 8032e42: 681b ldr r3, [r3, #0] + 8032e44: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 8032e48: 0a1b lsrs r3, r3, #8 + 8032e4a: f003 033f and.w r3, r3, #63 ; 0x3f + 8032e4e: 69fa ldr r2, [r7, #28] + 8032e50: 4413 add r3, r2 + 8032e52: 61fb str r3, [r7, #28] /* Calculate Rx FIFO 1 element address */ RxAddress = (uint32_t *)(hfdcan->msgRam.RxFIFO1SA + (GetIndex * hfdcan->Init.RxFifo1ElmtSize * 4U)); - 8032e14: 68fb ldr r3, [r7, #12] - 8032e16: 6f9a ldr r2, [r3, #120] ; 0x78 - 8032e18: 68fb ldr r3, [r7, #12] - 8032e1a: 6cdb ldr r3, [r3, #76] ; 0x4c - 8032e1c: 69f9 ldr r1, [r7, #28] - 8032e1e: fb01 f303 mul.w r3, r1, r3 - 8032e22: 009b lsls r3, r3, #2 - 8032e24: 4413 add r3, r2 - 8032e26: 627b str r3, [r7, #36] ; 0x24 - 8032e28: e018 b.n 8032e5c + 8032e54: 68fb ldr r3, [r7, #12] + 8032e56: 6f9a ldr r2, [r3, #120] ; 0x78 + 8032e58: 68fb ldr r3, [r7, #12] + 8032e5a: 6cdb ldr r3, [r3, #76] ; 0x4c + 8032e5c: 69f9 ldr r1, [r7, #28] + 8032e5e: fb01 f303 mul.w r3, r1, r3 + 8032e62: 009b lsls r3, r3, #2 + 8032e64: 4413 add r3, r2 + 8032e66: 627b str r3, [r7, #36] ; 0x24 + 8032e68: e018 b.n 8032e9c } } else /* Rx element is assigned to a dedicated Rx buffer */ { /* Check that the selected buffer has an allocated area into the RAM */ if (RxLocation >= hfdcan->Init.RxBuffersNbr) - 8032e2a: 68fb ldr r3, [r7, #12] - 8032e2c: 6d1b ldr r3, [r3, #80] ; 0x50 - 8032e2e: 68ba ldr r2, [r7, #8] - 8032e30: 429a cmp r2, r3 - 8032e32: d309 bcc.n 8032e48 + 8032e6a: 68fb ldr r3, [r7, #12] + 8032e6c: 6d1b ldr r3, [r3, #80] ; 0x50 + 8032e6e: 68ba ldr r2, [r7, #8] + 8032e70: 429a cmp r2, r3 + 8032e72: d309 bcc.n 8032e88 { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_PARAM; - 8032e34: 68fb ldr r3, [r7, #12] - 8032e36: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032e3a: f043 0220 orr.w r2, r3, #32 - 8032e3e: 68fb ldr r3, [r7, #12] - 8032e40: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032e74: 68fb ldr r3, [r7, #12] + 8032e76: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032e7a: f043 0220 orr.w r2, r3, #32 + 8032e7e: 68fb ldr r3, [r7, #12] + 8032e80: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032e44: 2301 movs r3, #1 - 8032e46: e0a2 b.n 8032f8e + 8032e84: 2301 movs r3, #1 + 8032e86: e0a2 b.n 8032fce } else { /* Calculate Rx buffer address */ RxAddress = (uint32_t *)(hfdcan->msgRam.RxBufferSA + (RxLocation * hfdcan->Init.RxBufferSize * 4U)); - 8032e48: 68fb ldr r3, [r7, #12] - 8032e4a: 6fda ldr r2, [r3, #124] ; 0x7c - 8032e4c: 68fb ldr r3, [r7, #12] - 8032e4e: 6d5b ldr r3, [r3, #84] ; 0x54 - 8032e50: 68b9 ldr r1, [r7, #8] - 8032e52: fb01 f303 mul.w r3, r1, r3 - 8032e56: 009b lsls r3, r3, #2 - 8032e58: 4413 add r3, r2 - 8032e5a: 627b str r3, [r7, #36] ; 0x24 + 8032e88: 68fb ldr r3, [r7, #12] + 8032e8a: 6fda ldr r2, [r3, #124] ; 0x7c + 8032e8c: 68fb ldr r3, [r7, #12] + 8032e8e: 6d5b ldr r3, [r3, #84] ; 0x54 + 8032e90: 68b9 ldr r1, [r7, #8] + 8032e92: fb01 f303 mul.w r3, r1, r3 + 8032e96: 009b lsls r3, r3, #2 + 8032e98: 4413 add r3, r2 + 8032e9a: 627b str r3, [r7, #36] ; 0x24 } } /* Retrieve IdType */ pRxHeader->IdType = *RxAddress & FDCAN_ELEMENT_MASK_XTD; - 8032e5c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032e5e: 681b ldr r3, [r3, #0] - 8032e60: f003 4280 and.w r2, r3, #1073741824 ; 0x40000000 - 8032e64: 687b ldr r3, [r7, #4] - 8032e66: 605a str r2, [r3, #4] + 8032e9c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032e9e: 681b ldr r3, [r3, #0] + 8032ea0: f003 4280 and.w r2, r3, #1073741824 ; 0x40000000 + 8032ea4: 687b ldr r3, [r7, #4] + 8032ea6: 605a str r2, [r3, #4] /* Retrieve Identifier */ if (pRxHeader->IdType == FDCAN_STANDARD_ID) /* Standard ID element */ - 8032e68: 687b ldr r3, [r7, #4] - 8032e6a: 685b ldr r3, [r3, #4] - 8032e6c: 2b00 cmp r3, #0 - 8032e6e: d107 bne.n 8032e80 + 8032ea8: 687b ldr r3, [r7, #4] + 8032eaa: 685b ldr r3, [r3, #4] + 8032eac: 2b00 cmp r3, #0 + 8032eae: d107 bne.n 8032ec0 { pRxHeader->Identifier = ((*RxAddress & FDCAN_ELEMENT_MASK_STDID) >> 18); - 8032e70: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032e72: 681b ldr r3, [r3, #0] - 8032e74: 0c9b lsrs r3, r3, #18 - 8032e76: f3c3 020a ubfx r2, r3, #0, #11 - 8032e7a: 687b ldr r3, [r7, #4] - 8032e7c: 601a str r2, [r3, #0] - 8032e7e: e005 b.n 8032e8c + 8032eb0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032eb2: 681b ldr r3, [r3, #0] + 8032eb4: 0c9b lsrs r3, r3, #18 + 8032eb6: f3c3 020a ubfx r2, r3, #0, #11 + 8032eba: 687b ldr r3, [r7, #4] + 8032ebc: 601a str r2, [r3, #0] + 8032ebe: e005 b.n 8032ecc } else /* Extended ID element */ { pRxHeader->Identifier = (*RxAddress & FDCAN_ELEMENT_MASK_EXTID); - 8032e80: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032e82: 681b ldr r3, [r3, #0] - 8032e84: f023 4260 bic.w r2, r3, #3758096384 ; 0xe0000000 - 8032e88: 687b ldr r3, [r7, #4] - 8032e8a: 601a str r2, [r3, #0] + 8032ec0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032ec2: 681b ldr r3, [r3, #0] + 8032ec4: f023 4260 bic.w r2, r3, #3758096384 ; 0xe0000000 + 8032ec8: 687b ldr r3, [r7, #4] + 8032eca: 601a str r2, [r3, #0] } /* Retrieve RxFrameType */ pRxHeader->RxFrameType = (*RxAddress & FDCAN_ELEMENT_MASK_RTR); - 8032e8c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032e8e: 681b ldr r3, [r3, #0] - 8032e90: f003 5200 and.w r2, r3, #536870912 ; 0x20000000 - 8032e94: 687b ldr r3, [r7, #4] - 8032e96: 609a str r2, [r3, #8] + 8032ecc: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032ece: 681b ldr r3, [r3, #0] + 8032ed0: f003 5200 and.w r2, r3, #536870912 ; 0x20000000 + 8032ed4: 687b ldr r3, [r7, #4] + 8032ed6: 609a str r2, [r3, #8] /* Retrieve ErrorStateIndicator */ pRxHeader->ErrorStateIndicator = (*RxAddress & FDCAN_ELEMENT_MASK_ESI); - 8032e98: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032e9a: 681b ldr r3, [r3, #0] - 8032e9c: f003 4200 and.w r2, r3, #2147483648 ; 0x80000000 - 8032ea0: 687b ldr r3, [r7, #4] - 8032ea2: 611a str r2, [r3, #16] + 8032ed8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032eda: 681b ldr r3, [r3, #0] + 8032edc: f003 4200 and.w r2, r3, #2147483648 ; 0x80000000 + 8032ee0: 687b ldr r3, [r7, #4] + 8032ee2: 611a str r2, [r3, #16] /* Increment RxAddress pointer to second word of Rx FIFO element */ RxAddress++; - 8032ea4: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ea6: 3304 adds r3, #4 - 8032ea8: 627b str r3, [r7, #36] ; 0x24 + 8032ee4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032ee6: 3304 adds r3, #4 + 8032ee8: 627b str r3, [r7, #36] ; 0x24 /* Retrieve RxTimestamp */ pRxHeader->RxTimestamp = (*RxAddress & FDCAN_ELEMENT_MASK_TS); - 8032eaa: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032eac: 681b ldr r3, [r3, #0] - 8032eae: b29a uxth r2, r3 - 8032eb0: 687b ldr r3, [r7, #4] - 8032eb2: 61da str r2, [r3, #28] + 8032eea: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032eec: 681b ldr r3, [r3, #0] + 8032eee: b29a uxth r2, r3 + 8032ef0: 687b ldr r3, [r7, #4] + 8032ef2: 61da str r2, [r3, #28] /* Retrieve DataLength */ pRxHeader->DataLength = (*RxAddress & FDCAN_ELEMENT_MASK_DLC); - 8032eb4: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032eb6: 681b ldr r3, [r3, #0] - 8032eb8: f403 2270 and.w r2, r3, #983040 ; 0xf0000 - 8032ebc: 687b ldr r3, [r7, #4] - 8032ebe: 60da str r2, [r3, #12] + 8032ef4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032ef6: 681b ldr r3, [r3, #0] + 8032ef8: f403 2270 and.w r2, r3, #983040 ; 0xf0000 + 8032efc: 687b ldr r3, [r7, #4] + 8032efe: 60da str r2, [r3, #12] /* Retrieve BitRateSwitch */ pRxHeader->BitRateSwitch = (*RxAddress & FDCAN_ELEMENT_MASK_BRS); - 8032ec0: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ec2: 681b ldr r3, [r3, #0] - 8032ec4: f403 1280 and.w r2, r3, #1048576 ; 0x100000 - 8032ec8: 687b ldr r3, [r7, #4] - 8032eca: 615a str r2, [r3, #20] + 8032f00: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f02: 681b ldr r3, [r3, #0] + 8032f04: f403 1280 and.w r2, r3, #1048576 ; 0x100000 + 8032f08: 687b ldr r3, [r7, #4] + 8032f0a: 615a str r2, [r3, #20] /* Retrieve FDFormat */ pRxHeader->FDFormat = (*RxAddress & FDCAN_ELEMENT_MASK_FDF); - 8032ecc: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ece: 681b ldr r3, [r3, #0] - 8032ed0: f403 1200 and.w r2, r3, #2097152 ; 0x200000 - 8032ed4: 687b ldr r3, [r7, #4] - 8032ed6: 619a str r2, [r3, #24] + 8032f0c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f0e: 681b ldr r3, [r3, #0] + 8032f10: f403 1200 and.w r2, r3, #2097152 ; 0x200000 + 8032f14: 687b ldr r3, [r7, #4] + 8032f16: 619a str r2, [r3, #24] /* Retrieve FilterIndex */ pRxHeader->FilterIndex = ((*RxAddress & FDCAN_ELEMENT_MASK_FIDX) >> 24); - 8032ed8: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032eda: 681b ldr r3, [r3, #0] - 8032edc: 0e1b lsrs r3, r3, #24 - 8032ede: f003 027f and.w r2, r3, #127 ; 0x7f - 8032ee2: 687b ldr r3, [r7, #4] - 8032ee4: 621a str r2, [r3, #32] + 8032f18: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f1a: 681b ldr r3, [r3, #0] + 8032f1c: 0e1b lsrs r3, r3, #24 + 8032f1e: f003 027f and.w r2, r3, #127 ; 0x7f + 8032f22: 687b ldr r3, [r7, #4] + 8032f24: 621a str r2, [r3, #32] /* Retrieve NonMatchingFrame */ pRxHeader->IsFilterMatchingFrame = ((*RxAddress & FDCAN_ELEMENT_MASK_ANMF) >> 31); - 8032ee6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ee8: 681b ldr r3, [r3, #0] - 8032eea: 0fda lsrs r2, r3, #31 - 8032eec: 687b ldr r3, [r7, #4] - 8032eee: 625a str r2, [r3, #36] ; 0x24 + 8032f26: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f28: 681b ldr r3, [r3, #0] + 8032f2a: 0fda lsrs r2, r3, #31 + 8032f2c: 687b ldr r3, [r7, #4] + 8032f2e: 625a str r2, [r3, #36] ; 0x24 /* Increment RxAddress pointer to payload of Rx FIFO element */ RxAddress++; - 8032ef0: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ef2: 3304 adds r3, #4 - 8032ef4: 627b str r3, [r7, #36] ; 0x24 + 8032f30: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f32: 3304 adds r3, #4 + 8032f34: 627b str r3, [r7, #36] ; 0x24 /* Retrieve Rx payload */ pData = (uint8_t *)RxAddress; - 8032ef6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8032ef8: 617b str r3, [r7, #20] + 8032f36: 6a7b ldr r3, [r7, #36] ; 0x24 + 8032f38: 617b str r3, [r7, #20] for (ByteCounter = 0; ByteCounter < DLCtoBytes[pRxHeader->DataLength >> 16]; ByteCounter++) - 8032efa: 2300 movs r3, #0 - 8032efc: 623b str r3, [r7, #32] - 8032efe: e00a b.n 8032f16 + 8032f3a: 2300 movs r3, #0 + 8032f3c: 623b str r3, [r7, #32] + 8032f3e: e00a b.n 8032f56 { pRxData[ByteCounter] = pData[ByteCounter]; - 8032f00: 697a ldr r2, [r7, #20] - 8032f02: 6a3b ldr r3, [r7, #32] - 8032f04: 441a add r2, r3 - 8032f06: 6839 ldr r1, [r7, #0] - 8032f08: 6a3b ldr r3, [r7, #32] - 8032f0a: 440b add r3, r1 - 8032f0c: 7812 ldrb r2, [r2, #0] - 8032f0e: 701a strb r2, [r3, #0] + 8032f40: 697a ldr r2, [r7, #20] + 8032f42: 6a3b ldr r3, [r7, #32] + 8032f44: 441a add r2, r3 + 8032f46: 6839 ldr r1, [r7, #0] + 8032f48: 6a3b ldr r3, [r7, #32] + 8032f4a: 440b add r3, r1 + 8032f4c: 7812 ldrb r2, [r2, #0] + 8032f4e: 701a strb r2, [r3, #0] for (ByteCounter = 0; ByteCounter < DLCtoBytes[pRxHeader->DataLength >> 16]; ByteCounter++) - 8032f10: 6a3b ldr r3, [r7, #32] - 8032f12: 3301 adds r3, #1 - 8032f14: 623b str r3, [r7, #32] - 8032f16: 687b ldr r3, [r7, #4] - 8032f18: 68db ldr r3, [r3, #12] - 8032f1a: 0c1b lsrs r3, r3, #16 - 8032f1c: 4a1f ldr r2, [pc, #124] ; (8032f9c ) - 8032f1e: 5cd3 ldrb r3, [r2, r3] - 8032f20: 461a mov r2, r3 - 8032f22: 6a3b ldr r3, [r7, #32] - 8032f24: 4293 cmp r3, r2 - 8032f26: d3eb bcc.n 8032f00 + 8032f50: 6a3b ldr r3, [r7, #32] + 8032f52: 3301 adds r3, #1 + 8032f54: 623b str r3, [r7, #32] + 8032f56: 687b ldr r3, [r7, #4] + 8032f58: 68db ldr r3, [r3, #12] + 8032f5a: 0c1b lsrs r3, r3, #16 + 8032f5c: 4a1f ldr r2, [pc, #124] ; (8032fdc ) + 8032f5e: 5cd3 ldrb r3, [r2, r3] + 8032f60: 461a mov r2, r3 + 8032f62: 6a3b ldr r3, [r7, #32] + 8032f64: 4293 cmp r3, r2 + 8032f66: d3eb bcc.n 8032f40 } if (RxLocation == FDCAN_RX_FIFO0) /* Rx element is assigned to the Rx FIFO 0 */ - 8032f28: 68bb ldr r3, [r7, #8] - 8032f2a: 2b40 cmp r3, #64 ; 0x40 - 8032f2c: d105 bne.n 8032f3a + 8032f68: 68bb ldr r3, [r7, #8] + 8032f6a: 2b40 cmp r3, #64 ; 0x40 + 8032f6c: d105 bne.n 8032f7a { /* Acknowledge the Rx FIFO 0 that the oldest element is read so that it increments the GetIndex */ hfdcan->Instance->RXF0A = GetIndex; - 8032f2e: 68fb ldr r3, [r7, #12] - 8032f30: 681b ldr r3, [r3, #0] - 8032f32: 69fa ldr r2, [r7, #28] - 8032f34: f8c3 20a8 str.w r2, [r3, #168] ; 0xa8 - 8032f38: e01e b.n 8032f78 + 8032f6e: 68fb ldr r3, [r7, #12] + 8032f70: 681b ldr r3, [r3, #0] + 8032f72: 69fa ldr r2, [r7, #28] + 8032f74: f8c3 20a8 str.w r2, [r3, #168] ; 0xa8 + 8032f78: e01e b.n 8032fb8 } else if (RxLocation == FDCAN_RX_FIFO1) /* Rx element is assigned to the Rx FIFO 1 */ - 8032f3a: 68bb ldr r3, [r7, #8] - 8032f3c: 2b41 cmp r3, #65 ; 0x41 - 8032f3e: d105 bne.n 8032f4c + 8032f7a: 68bb ldr r3, [r7, #8] + 8032f7c: 2b41 cmp r3, #65 ; 0x41 + 8032f7e: d105 bne.n 8032f8c { /* Acknowledge the Rx FIFO 1 that the oldest element is read so that it increments the GetIndex */ hfdcan->Instance->RXF1A = GetIndex; - 8032f40: 68fb ldr r3, [r7, #12] - 8032f42: 681b ldr r3, [r3, #0] - 8032f44: 69fa ldr r2, [r7, #28] - 8032f46: f8c3 20b8 str.w r2, [r3, #184] ; 0xb8 - 8032f4a: e015 b.n 8032f78 + 8032f80: 68fb ldr r3, [r7, #12] + 8032f82: 681b ldr r3, [r3, #0] + 8032f84: 69fa ldr r2, [r7, #28] + 8032f86: f8c3 20b8 str.w r2, [r3, #184] ; 0xb8 + 8032f8a: e015 b.n 8032fb8 } else /* Rx element is assigned to a dedicated Rx buffer */ { /* Clear the New Data flag of the current Rx buffer */ if (RxLocation < FDCAN_RX_BUFFER32) - 8032f4c: 68bb ldr r3, [r7, #8] - 8032f4e: 2b1f cmp r3, #31 - 8032f50: d808 bhi.n 8032f64 + 8032f8c: 68bb ldr r3, [r7, #8] + 8032f8e: 2b1f cmp r3, #31 + 8032f90: d808 bhi.n 8032fa4 { hfdcan->Instance->NDAT1 = ((uint32_t)1 << RxLocation); - 8032f52: 68fb ldr r3, [r7, #12] - 8032f54: 681b ldr r3, [r3, #0] - 8032f56: 2101 movs r1, #1 - 8032f58: 68ba ldr r2, [r7, #8] - 8032f5a: fa01 f202 lsl.w r2, r1, r2 - 8032f5e: f8c3 2098 str.w r2, [r3, #152] ; 0x98 - 8032f62: e009 b.n 8032f78 + 8032f92: 68fb ldr r3, [r7, #12] + 8032f94: 681b ldr r3, [r3, #0] + 8032f96: 2101 movs r1, #1 + 8032f98: 68ba ldr r2, [r7, #8] + 8032f9a: fa01 f202 lsl.w r2, r1, r2 + 8032f9e: f8c3 2098 str.w r2, [r3, #152] ; 0x98 + 8032fa2: e009 b.n 8032fb8 } else /* FDCAN_RX_BUFFER32 <= RxLocation <= FDCAN_RX_BUFFER63 */ { hfdcan->Instance->NDAT2 = ((uint32_t)1 << (RxLocation & 0x1FU)); - 8032f64: 68bb ldr r3, [r7, #8] - 8032f66: f003 021f and.w r2, r3, #31 - 8032f6a: 68fb ldr r3, [r7, #12] - 8032f6c: 681b ldr r3, [r3, #0] - 8032f6e: 2101 movs r1, #1 - 8032f70: fa01 f202 lsl.w r2, r1, r2 - 8032f74: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032fa4: 68bb ldr r3, [r7, #8] + 8032fa6: f003 021f and.w r2, r3, #31 + 8032faa: 68fb ldr r3, [r7, #12] + 8032fac: 681b ldr r3, [r3, #0] + 8032fae: 2101 movs r1, #1 + 8032fb0: fa01 f202 lsl.w r2, r1, r2 + 8032fb4: f8c3 209c str.w r2, [r3, #156] ; 0x9c } } /* Return function status */ return HAL_OK; - 8032f78: 2300 movs r3, #0 - 8032f7a: e008 b.n 8032f8e + 8032fb8: 2300 movs r3, #0 + 8032fba: e008 b.n 8032fce } else { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_NOT_STARTED; - 8032f7c: 68fb ldr r3, [r7, #12] - 8032f7e: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8032f82: f043 0208 orr.w r2, r3, #8 - 8032f86: 68fb ldr r3, [r7, #12] - 8032f88: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8032fbc: 68fb ldr r3, [r7, #12] + 8032fbe: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8032fc2: f043 0208 orr.w r2, r3, #8 + 8032fc6: 68fb ldr r3, [r7, #12] + 8032fc8: f8c3 209c str.w r2, [r3, #156] ; 0x9c return HAL_ERROR; - 8032f8c: 2301 movs r3, #1 + 8032fcc: 2301 movs r3, #1 } } - 8032f8e: 4618 mov r0, r3 - 8032f90: 372c adds r7, #44 ; 0x2c - 8032f92: 46bd mov sp, r7 - 8032f94: f85d 7b04 ldr.w r7, [sp], #4 - 8032f98: 4770 bx lr - 8032f9a: bf00 nop - 8032f9c: 0804d374 .word 0x0804d374 + 8032fce: 4618 mov r0, r3 + 8032fd0: 372c adds r7, #44 ; 0x2c + 8032fd2: 46bd mov sp, r7 + 8032fd4: f85d 7b04 ldr.w r7, [sp], #4 + 8032fd8: 4770 bx lr + 8032fda: bf00 nop + 8032fdc: 0804d3b4 .word 0x0804d3b4 -08032fa0 : +08032fe0 : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval HAL status */ void HAL_FDCAN_IRQHandler(FDCAN_HandleTypeDef *hfdcan) { - 8032fa0: b580 push {r7, lr} - 8032fa2: b096 sub sp, #88 ; 0x58 - 8032fa4: af00 add r7, sp, #0 - 8032fa6: 6078 str r0, [r7, #4] + 8032fe0: b580 push {r7, lr} + 8032fe2: b096 sub sp, #88 ; 0x58 + 8032fe4: af00 add r7, sp, #0 + 8032fe6: 6078 str r0, [r7, #4] uint32_t itsourceIE; uint32_t itsourceTTIE; uint32_t itflagIR; uint32_t itflagTTIR; ClkCalibrationITs = (FDCAN_CCU->IR << 30); - 8032fa8: 4b9a ldr r3, [pc, #616] ; (8033214 ) - 8032faa: 691b ldr r3, [r3, #16] - 8032fac: 079b lsls r3, r3, #30 - 8032fae: 657b str r3, [r7, #84] ; 0x54 + 8032fe8: 4b9a ldr r3, [pc, #616] ; (8033254 ) + 8032fea: 691b ldr r3, [r3, #16] + 8032fec: 079b lsls r3, r3, #30 + 8032fee: 657b str r3, [r7, #84] ; 0x54 ClkCalibrationITs &= (FDCAN_CCU->IE << 30); - 8032fb0: 4b98 ldr r3, [pc, #608] ; (8033214 ) - 8032fb2: 695b ldr r3, [r3, #20] - 8032fb4: 079b lsls r3, r3, #30 - 8032fb6: 6d7a ldr r2, [r7, #84] ; 0x54 - 8032fb8: 4013 ands r3, r2 - 8032fba: 657b str r3, [r7, #84] ; 0x54 + 8032ff0: 4b98 ldr r3, [pc, #608] ; (8033254 ) + 8032ff2: 695b ldr r3, [r3, #20] + 8032ff4: 079b lsls r3, r3, #30 + 8032ff6: 6d7a ldr r2, [r7, #84] ; 0x54 + 8032ff8: 4013 ands r3, r2 + 8032ffa: 657b str r3, [r7, #84] ; 0x54 TxEventFifoITs = hfdcan->Instance->IR & FDCAN_TX_EVENT_FIFO_MASK; - 8032fbc: 687b ldr r3, [r7, #4] - 8032fbe: 681b ldr r3, [r3, #0] - 8032fc0: 6d1b ldr r3, [r3, #80] ; 0x50 - 8032fc2: f403 4370 and.w r3, r3, #61440 ; 0xf000 - 8032fc6: 653b str r3, [r7, #80] ; 0x50 + 8032ffc: 687b ldr r3, [r7, #4] + 8032ffe: 681b ldr r3, [r3, #0] + 8033000: 6d1b ldr r3, [r3, #80] ; 0x50 + 8033002: f403 4370 and.w r3, r3, #61440 ; 0xf000 + 8033006: 653b str r3, [r7, #80] ; 0x50 TxEventFifoITs &= hfdcan->Instance->IE; - 8032fc8: 687b ldr r3, [r7, #4] - 8032fca: 681b ldr r3, [r3, #0] - 8032fcc: 6d5b ldr r3, [r3, #84] ; 0x54 - 8032fce: 6d3a ldr r2, [r7, #80] ; 0x50 - 8032fd0: 4013 ands r3, r2 - 8032fd2: 653b str r3, [r7, #80] ; 0x50 + 8033008: 687b ldr r3, [r7, #4] + 803300a: 681b ldr r3, [r3, #0] + 803300c: 6d5b ldr r3, [r3, #84] ; 0x54 + 803300e: 6d3a ldr r2, [r7, #80] ; 0x50 + 8033010: 4013 ands r3, r2 + 8033012: 653b str r3, [r7, #80] ; 0x50 RxFifo0ITs = hfdcan->Instance->IR & FDCAN_RX_FIFO0_MASK; - 8032fd4: 687b ldr r3, [r7, #4] - 8032fd6: 681b ldr r3, [r3, #0] - 8032fd8: 6d1b ldr r3, [r3, #80] ; 0x50 - 8032fda: f003 030f and.w r3, r3, #15 - 8032fde: 64fb str r3, [r7, #76] ; 0x4c + 8033014: 687b ldr r3, [r7, #4] + 8033016: 681b ldr r3, [r3, #0] + 8033018: 6d1b ldr r3, [r3, #80] ; 0x50 + 803301a: f003 030f and.w r3, r3, #15 + 803301e: 64fb str r3, [r7, #76] ; 0x4c RxFifo0ITs &= hfdcan->Instance->IE; - 8032fe0: 687b ldr r3, [r7, #4] - 8032fe2: 681b ldr r3, [r3, #0] - 8032fe4: 6d5b ldr r3, [r3, #84] ; 0x54 - 8032fe6: 6cfa ldr r2, [r7, #76] ; 0x4c - 8032fe8: 4013 ands r3, r2 - 8032fea: 64fb str r3, [r7, #76] ; 0x4c + 8033020: 687b ldr r3, [r7, #4] + 8033022: 681b ldr r3, [r3, #0] + 8033024: 6d5b ldr r3, [r3, #84] ; 0x54 + 8033026: 6cfa ldr r2, [r7, #76] ; 0x4c + 8033028: 4013 ands r3, r2 + 803302a: 64fb str r3, [r7, #76] ; 0x4c RxFifo1ITs = hfdcan->Instance->IR & FDCAN_RX_FIFO1_MASK; - 8032fec: 687b ldr r3, [r7, #4] - 8032fee: 681b ldr r3, [r3, #0] - 8032ff0: 6d1b ldr r3, [r3, #80] ; 0x50 - 8032ff2: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8032ff6: 64bb str r3, [r7, #72] ; 0x48 + 803302c: 687b ldr r3, [r7, #4] + 803302e: 681b ldr r3, [r3, #0] + 8033030: 6d1b ldr r3, [r3, #80] ; 0x50 + 8033032: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8033036: 64bb str r3, [r7, #72] ; 0x48 RxFifo1ITs &= hfdcan->Instance->IE; - 8032ff8: 687b ldr r3, [r7, #4] - 8032ffa: 681b ldr r3, [r3, #0] - 8032ffc: 6d5b ldr r3, [r3, #84] ; 0x54 - 8032ffe: 6cba ldr r2, [r7, #72] ; 0x48 - 8033000: 4013 ands r3, r2 - 8033002: 64bb str r3, [r7, #72] ; 0x48 + 8033038: 687b ldr r3, [r7, #4] + 803303a: 681b ldr r3, [r3, #0] + 803303c: 6d5b ldr r3, [r3, #84] ; 0x54 + 803303e: 6cba ldr r2, [r7, #72] ; 0x48 + 8033040: 4013 ands r3, r2 + 8033042: 64bb str r3, [r7, #72] ; 0x48 Errors = hfdcan->Instance->IR & FDCAN_ERROR_MASK; - 8033004: 687b ldr r3, [r7, #4] - 8033006: 681b ldr r3, [r3, #0] - 8033008: 6d1b ldr r3, [r3, #80] ; 0x50 - 803300a: f003 5371 and.w r3, r3, #1010827264 ; 0x3c400000 - 803300e: 647b str r3, [r7, #68] ; 0x44 + 8033044: 687b ldr r3, [r7, #4] + 8033046: 681b ldr r3, [r3, #0] + 8033048: 6d1b ldr r3, [r3, #80] ; 0x50 + 803304a: f003 5371 and.w r3, r3, #1010827264 ; 0x3c400000 + 803304e: 647b str r3, [r7, #68] ; 0x44 Errors &= hfdcan->Instance->IE; - 8033010: 687b ldr r3, [r7, #4] - 8033012: 681b ldr r3, [r3, #0] - 8033014: 6d5b ldr r3, [r3, #84] ; 0x54 - 8033016: 6c7a ldr r2, [r7, #68] ; 0x44 - 8033018: 4013 ands r3, r2 - 803301a: 647b str r3, [r7, #68] ; 0x44 + 8033050: 687b ldr r3, [r7, #4] + 8033052: 681b ldr r3, [r3, #0] + 8033054: 6d5b ldr r3, [r3, #84] ; 0x54 + 8033056: 6c7a ldr r2, [r7, #68] ; 0x44 + 8033058: 4013 ands r3, r2 + 803305a: 647b str r3, [r7, #68] ; 0x44 ErrorStatusITs = hfdcan->Instance->IR & FDCAN_ERROR_STATUS_MASK; - 803301c: 687b ldr r3, [r7, #4] - 803301e: 681b ldr r3, [r3, #0] - 8033020: 6d1b ldr r3, [r3, #80] ; 0x50 - 8033022: f003 7360 and.w r3, r3, #58720256 ; 0x3800000 - 8033026: 643b str r3, [r7, #64] ; 0x40 + 803305c: 687b ldr r3, [r7, #4] + 803305e: 681b ldr r3, [r3, #0] + 8033060: 6d1b ldr r3, [r3, #80] ; 0x50 + 8033062: f003 7360 and.w r3, r3, #58720256 ; 0x3800000 + 8033066: 643b str r3, [r7, #64] ; 0x40 ErrorStatusITs &= hfdcan->Instance->IE; - 8033028: 687b ldr r3, [r7, #4] - 803302a: 681b ldr r3, [r3, #0] - 803302c: 6d5b ldr r3, [r3, #84] ; 0x54 - 803302e: 6c3a ldr r2, [r7, #64] ; 0x40 - 8033030: 4013 ands r3, r2 - 8033032: 643b str r3, [r7, #64] ; 0x40 + 8033068: 687b ldr r3, [r7, #4] + 803306a: 681b ldr r3, [r3, #0] + 803306c: 6d5b ldr r3, [r3, #84] ; 0x54 + 803306e: 6c3a ldr r2, [r7, #64] ; 0x40 + 8033070: 4013 ands r3, r2 + 8033072: 643b str r3, [r7, #64] ; 0x40 itsourceIE = hfdcan->Instance->IE; - 8033034: 687b ldr r3, [r7, #4] - 8033036: 681b ldr r3, [r3, #0] - 8033038: 6d5b ldr r3, [r3, #84] ; 0x54 - 803303a: 63fb str r3, [r7, #60] ; 0x3c + 8033074: 687b ldr r3, [r7, #4] + 8033076: 681b ldr r3, [r3, #0] + 8033078: 6d5b ldr r3, [r3, #84] ; 0x54 + 803307a: 63fb str r3, [r7, #60] ; 0x3c itflagIR = hfdcan->Instance->IR; - 803303c: 687b ldr r3, [r7, #4] - 803303e: 681b ldr r3, [r3, #0] - 8033040: 6d1b ldr r3, [r3, #80] ; 0x50 - 8033042: 63bb str r3, [r7, #56] ; 0x38 + 803307c: 687b ldr r3, [r7, #4] + 803307e: 681b ldr r3, [r3, #0] + 8033080: 6d1b ldr r3, [r3, #80] ; 0x50 + 8033082: 63bb str r3, [r7, #56] ; 0x38 /* High Priority Message interrupt management *******************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_RX_HIGH_PRIORITY_MSG) != RESET) - 8033044: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033046: 0a1b lsrs r3, r3, #8 - 8033048: f003 0301 and.w r3, r3, #1 - 803304c: 2b00 cmp r3, #0 - 803304e: d010 beq.n 8033072 + 8033084: 6bfb ldr r3, [r7, #60] ; 0x3c + 8033086: 0a1b lsrs r3, r3, #8 + 8033088: f003 0301 and.w r3, r3, #1 + 803308c: 2b00 cmp r3, #0 + 803308e: d010 beq.n 80330b2 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_RX_HIGH_PRIORITY_MSG) != RESET) - 8033050: 6bbb ldr r3, [r7, #56] ; 0x38 - 8033052: 0a1b lsrs r3, r3, #8 - 8033054: f003 0301 and.w r3, r3, #1 - 8033058: 2b00 cmp r3, #0 - 803305a: d00a beq.n 8033072 + 8033090: 6bbb ldr r3, [r7, #56] ; 0x38 + 8033092: 0a1b lsrs r3, r3, #8 + 8033094: f003 0301 and.w r3, r3, #1 + 8033098: 2b00 cmp r3, #0 + 803309a: d00a beq.n 80330b2 { /* Clear the High Priority Message flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_RX_HIGH_PRIORITY_MSG); - 803305c: 687b ldr r3, [r7, #4] - 803305e: 681b ldr r3, [r3, #0] - 8033060: f44f 7280 mov.w r2, #256 ; 0x100 - 8033064: 651a str r2, [r3, #80] ; 0x50 - 8033066: 4b6b ldr r3, [pc, #428] ; (8033214 ) - 8033068: 2200 movs r2, #0 - 803306a: 611a str r2, [r3, #16] + 803309c: 687b ldr r3, [r7, #4] + 803309e: 681b ldr r3, [r3, #0] + 80330a0: f44f 7280 mov.w r2, #256 ; 0x100 + 80330a4: 651a str r2, [r3, #80] ; 0x50 + 80330a6: 4b6b ldr r3, [pc, #428] ; (8033254 ) + 80330a8: 2200 movs r2, #0 + 80330aa: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->HighPriorityMessageCallback(hfdcan); #else /* High Priority Message Callback */ HAL_FDCAN_HighPriorityMessageCallback(hfdcan); - 803306c: 6878 ldr r0, [r7, #4] - 803306e: f000 fa54 bl 803351a + 80330ac: 6878 ldr r0, [r7, #4] + 80330ae: f000 fa54 bl 803355a #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Transmission Abort interrupt management **********************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_TX_ABORT_COMPLETE) != RESET) - 8033072: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033074: 0a9b lsrs r3, r3, #10 - 8033076: f003 0301 and.w r3, r3, #1 - 803307a: 2b00 cmp r3, #0 - 803307c: d01d beq.n 80330ba + 80330b2: 6bfb ldr r3, [r7, #60] ; 0x3c + 80330b4: 0a9b lsrs r3, r3, #10 + 80330b6: f003 0301 and.w r3, r3, #1 + 80330ba: 2b00 cmp r3, #0 + 80330bc: d01d beq.n 80330fa { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_TX_ABORT_COMPLETE) != RESET) - 803307e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8033080: 0a9b lsrs r3, r3, #10 - 8033082: f003 0301 and.w r3, r3, #1 - 8033086: 2b00 cmp r3, #0 - 8033088: d017 beq.n 80330ba + 80330be: 6bbb ldr r3, [r7, #56] ; 0x38 + 80330c0: 0a9b lsrs r3, r3, #10 + 80330c2: f003 0301 and.w r3, r3, #1 + 80330c6: 2b00 cmp r3, #0 + 80330c8: d017 beq.n 80330fa { /* List of aborted monitored buffers */ AbortedBuffers = hfdcan->Instance->TXBCF; - 803308a: 687b ldr r3, [r7, #4] - 803308c: 681b ldr r3, [r3, #0] - 803308e: f8d3 30dc ldr.w r3, [r3, #220] ; 0xdc - 8033092: 637b str r3, [r7, #52] ; 0x34 + 80330ca: 687b ldr r3, [r7, #4] + 80330cc: 681b ldr r3, [r3, #0] + 80330ce: f8d3 30dc ldr.w r3, [r3, #220] ; 0xdc + 80330d2: 637b str r3, [r7, #52] ; 0x34 AbortedBuffers &= hfdcan->Instance->TXBCIE; - 8033094: 687b ldr r3, [r7, #4] - 8033096: 681b ldr r3, [r3, #0] - 8033098: f8d3 30e4 ldr.w r3, [r3, #228] ; 0xe4 - 803309c: 6b7a ldr r2, [r7, #52] ; 0x34 - 803309e: 4013 ands r3, r2 - 80330a0: 637b str r3, [r7, #52] ; 0x34 + 80330d4: 687b ldr r3, [r7, #4] + 80330d6: 681b ldr r3, [r3, #0] + 80330d8: f8d3 30e4 ldr.w r3, [r3, #228] ; 0xe4 + 80330dc: 6b7a ldr r2, [r7, #52] ; 0x34 + 80330de: 4013 ands r3, r2 + 80330e0: 637b str r3, [r7, #52] ; 0x34 /* Clear the Transmission Cancellation flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_TX_ABORT_COMPLETE); - 80330a2: 687b ldr r3, [r7, #4] - 80330a4: 681b ldr r3, [r3, #0] - 80330a6: f44f 6280 mov.w r2, #1024 ; 0x400 - 80330aa: 651a str r2, [r3, #80] ; 0x50 - 80330ac: 4b59 ldr r3, [pc, #356] ; (8033214 ) - 80330ae: 2200 movs r2, #0 - 80330b0: 611a str r2, [r3, #16] + 80330e2: 687b ldr r3, [r7, #4] + 80330e4: 681b ldr r3, [r3, #0] + 80330e6: f44f 6280 mov.w r2, #1024 ; 0x400 + 80330ea: 651a str r2, [r3, #80] ; 0x50 + 80330ec: 4b59 ldr r3, [pc, #356] ; (8033254 ) + 80330ee: 2200 movs r2, #0 + 80330f0: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TxBufferAbortCallback(hfdcan, AbortedBuffers); #else /* Transmission Cancellation Callback */ HAL_FDCAN_TxBufferAbortCallback(hfdcan, AbortedBuffers); - 80330b2: 6b79 ldr r1, [r7, #52] ; 0x34 - 80330b4: 6878 ldr r0, [r7, #4] - 80330b6: f000 fa07 bl 80334c8 + 80330f2: 6b79 ldr r1, [r7, #52] ; 0x34 + 80330f4: 6878 ldr r0, [r7, #4] + 80330f6: f000 fa07 bl 8033508 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Clock calibration unit interrupts management *****************************/ if (ClkCalibrationITs != 0U) - 80330ba: 6d7b ldr r3, [r7, #84] ; 0x54 - 80330bc: 2b00 cmp r3, #0 - 80330be: d00d beq.n 80330dc + 80330fa: 6d7b ldr r3, [r7, #84] ; 0x54 + 80330fc: 2b00 cmp r3, #0 + 80330fe: d00d beq.n 803311c { /* Clear the Clock Calibration flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, ClkCalibrationITs); - 80330c0: 687b ldr r3, [r7, #4] - 80330c2: 681a ldr r2, [r3, #0] - 80330c4: 6d79 ldr r1, [r7, #84] ; 0x54 - 80330c6: 4b54 ldr r3, [pc, #336] ; (8033218 ) - 80330c8: 400b ands r3, r1 - 80330ca: 6513 str r3, [r2, #80] ; 0x50 - 80330cc: 4a51 ldr r2, [pc, #324] ; (8033214 ) - 80330ce: 6d7b ldr r3, [r7, #84] ; 0x54 - 80330d0: 0f9b lsrs r3, r3, #30 - 80330d2: 6113 str r3, [r2, #16] + 8033100: 687b ldr r3, [r7, #4] + 8033102: 681a ldr r2, [r3, #0] + 8033104: 6d79 ldr r1, [r7, #84] ; 0x54 + 8033106: 4b54 ldr r3, [pc, #336] ; (8033258 ) + 8033108: 400b ands r3, r1 + 803310a: 6513 str r3, [r2, #80] ; 0x50 + 803310c: 4a51 ldr r2, [pc, #324] ; (8033254 ) + 803310e: 6d7b ldr r3, [r7, #84] ; 0x54 + 8033110: 0f9b lsrs r3, r3, #30 + 8033112: 6113 str r3, [r2, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->ClockCalibrationCallback(hfdcan, ClkCalibrationITs); #else /* Clock Calibration Callback */ HAL_FDCAN_ClockCalibrationCallback(hfdcan, ClkCalibrationITs); - 80330d4: 6d79 ldr r1, [r7, #84] ; 0x54 - 80330d6: 6878 ldr r0, [r7, #4] - 80330d8: f000 f9c0 bl 803345c + 8033114: 6d79 ldr r1, [r7, #84] ; 0x54 + 8033116: 6878 ldr r0, [r7, #4] + 8033118: f000 f9c0 bl 803349c #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* Tx event FIFO interrupts management **************************************/ if (TxEventFifoITs != 0U) - 80330dc: 6d3b ldr r3, [r7, #80] ; 0x50 - 80330de: 2b00 cmp r3, #0 - 80330e0: d00d beq.n 80330fe + 803311c: 6d3b ldr r3, [r7, #80] ; 0x50 + 803311e: 2b00 cmp r3, #0 + 8033120: d00d beq.n 803313e { /* Clear the Tx Event FIFO flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, TxEventFifoITs); - 80330e2: 687b ldr r3, [r7, #4] - 80330e4: 681a ldr r2, [r3, #0] - 80330e6: 6d39 ldr r1, [r7, #80] ; 0x50 - 80330e8: 4b4b ldr r3, [pc, #300] ; (8033218 ) - 80330ea: 400b ands r3, r1 - 80330ec: 6513 str r3, [r2, #80] ; 0x50 - 80330ee: 4a49 ldr r2, [pc, #292] ; (8033214 ) - 80330f0: 6d3b ldr r3, [r7, #80] ; 0x50 - 80330f2: 0f9b lsrs r3, r3, #30 - 80330f4: 6113 str r3, [r2, #16] + 8033122: 687b ldr r3, [r7, #4] + 8033124: 681a ldr r2, [r3, #0] + 8033126: 6d39 ldr r1, [r7, #80] ; 0x50 + 8033128: 4b4b ldr r3, [pc, #300] ; (8033258 ) + 803312a: 400b ands r3, r1 + 803312c: 6513 str r3, [r2, #80] ; 0x50 + 803312e: 4a49 ldr r2, [pc, #292] ; (8033254 ) + 8033130: 6d3b ldr r3, [r7, #80] ; 0x50 + 8033132: 0f9b lsrs r3, r3, #30 + 8033134: 6113 str r3, [r2, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TxEventFifoCallback(hfdcan, TxEventFifoITs); #else /* Tx Event FIFO Callback */ HAL_FDCAN_TxEventFifoCallback(hfdcan, TxEventFifoITs); - 80330f6: 6d39 ldr r1, [r7, #80] ; 0x50 - 80330f8: 6878 ldr r0, [r7, #4] - 80330fa: f000 f9ba bl 8033472 + 8033136: 6d39 ldr r1, [r7, #80] ; 0x50 + 8033138: 6878 ldr r0, [r7, #4] + 803313a: f000 f9ba bl 80334b2 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* Rx FIFO 0 interrupts management ******************************************/ if (RxFifo0ITs != 0U) - 80330fe: 6cfb ldr r3, [r7, #76] ; 0x4c - 8033100: 2b00 cmp r3, #0 - 8033102: d00d beq.n 8033120 + 803313e: 6cfb ldr r3, [r7, #76] ; 0x4c + 8033140: 2b00 cmp r3, #0 + 8033142: d00d beq.n 8033160 { /* Clear the Rx FIFO 0 flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, RxFifo0ITs); - 8033104: 687b ldr r3, [r7, #4] - 8033106: 681a ldr r2, [r3, #0] - 8033108: 6cf9 ldr r1, [r7, #76] ; 0x4c - 803310a: 4b43 ldr r3, [pc, #268] ; (8033218 ) - 803310c: 400b ands r3, r1 - 803310e: 6513 str r3, [r2, #80] ; 0x50 - 8033110: 4a40 ldr r2, [pc, #256] ; (8033214 ) - 8033112: 6cfb ldr r3, [r7, #76] ; 0x4c - 8033114: 0f9b lsrs r3, r3, #30 - 8033116: 6113 str r3, [r2, #16] + 8033144: 687b ldr r3, [r7, #4] + 8033146: 681a ldr r2, [r3, #0] + 8033148: 6cf9 ldr r1, [r7, #76] ; 0x4c + 803314a: 4b43 ldr r3, [pc, #268] ; (8033258 ) + 803314c: 400b ands r3, r1 + 803314e: 6513 str r3, [r2, #80] ; 0x50 + 8033150: 4a40 ldr r2, [pc, #256] ; (8033254 ) + 8033152: 6cfb ldr r3, [r7, #76] ; 0x4c + 8033154: 0f9b lsrs r3, r3, #30 + 8033156: 6113 str r3, [r2, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->RxFifo0Callback(hfdcan, RxFifo0ITs); #else /* Rx FIFO 0 Callback */ HAL_FDCAN_RxFifo0Callback(hfdcan, RxFifo0ITs); - 8033118: 6cf9 ldr r1, [r7, #76] ; 0x4c - 803311a: 6878 ldr r0, [r7, #4] - 803311c: f7ed ff1c bl 8020f58 + 8033158: 6cf9 ldr r1, [r7, #76] ; 0x4c + 803315a: 6878 ldr r0, [r7, #4] + 803315c: f7ed fefc bl 8020f58 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* Rx FIFO 1 interrupts management ******************************************/ if (RxFifo1ITs != 0U) - 8033120: 6cbb ldr r3, [r7, #72] ; 0x48 - 8033122: 2b00 cmp r3, #0 - 8033124: d00d beq.n 8033142 + 8033160: 6cbb ldr r3, [r7, #72] ; 0x48 + 8033162: 2b00 cmp r3, #0 + 8033164: d00d beq.n 8033182 { /* Clear the Rx FIFO 1 flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, RxFifo1ITs); - 8033126: 687b ldr r3, [r7, #4] - 8033128: 681a ldr r2, [r3, #0] - 803312a: 6cb9 ldr r1, [r7, #72] ; 0x48 - 803312c: 4b3a ldr r3, [pc, #232] ; (8033218 ) - 803312e: 400b ands r3, r1 - 8033130: 6513 str r3, [r2, #80] ; 0x50 - 8033132: 4a38 ldr r2, [pc, #224] ; (8033214 ) - 8033134: 6cbb ldr r3, [r7, #72] ; 0x48 - 8033136: 0f9b lsrs r3, r3, #30 - 8033138: 6113 str r3, [r2, #16] + 8033166: 687b ldr r3, [r7, #4] + 8033168: 681a ldr r2, [r3, #0] + 803316a: 6cb9 ldr r1, [r7, #72] ; 0x48 + 803316c: 4b3a ldr r3, [pc, #232] ; (8033258 ) + 803316e: 400b ands r3, r1 + 8033170: 6513 str r3, [r2, #80] ; 0x50 + 8033172: 4a38 ldr r2, [pc, #224] ; (8033254 ) + 8033174: 6cbb ldr r3, [r7, #72] ; 0x48 + 8033176: 0f9b lsrs r3, r3, #30 + 8033178: 6113 str r3, [r2, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->RxFifo1Callback(hfdcan, RxFifo1ITs); #else /* Rx FIFO 1 Callback */ HAL_FDCAN_RxFifo1Callback(hfdcan, RxFifo1ITs); - 803313a: 6cb9 ldr r1, [r7, #72] ; 0x48 - 803313c: 6878 ldr r0, [r7, #4] - 803313e: f000 f9a3 bl 8033488 + 803317a: 6cb9 ldr r1, [r7, #72] ; 0x48 + 803317c: 6878 ldr r0, [r7, #4] + 803317e: f000 f9a3 bl 80334c8 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* Tx FIFO empty interrupt management ***************************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_TX_FIFO_EMPTY) != RESET) - 8033142: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033144: 0adb lsrs r3, r3, #11 - 8033146: f003 0301 and.w r3, r3, #1 - 803314a: 2b00 cmp r3, #0 - 803314c: d010 beq.n 8033170 + 8033182: 6bfb ldr r3, [r7, #60] ; 0x3c + 8033184: 0adb lsrs r3, r3, #11 + 8033186: f003 0301 and.w r3, r3, #1 + 803318a: 2b00 cmp r3, #0 + 803318c: d010 beq.n 80331b0 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_TX_FIFO_EMPTY) != RESET) - 803314e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8033150: 0adb lsrs r3, r3, #11 - 8033152: f003 0301 and.w r3, r3, #1 - 8033156: 2b00 cmp r3, #0 - 8033158: d00a beq.n 8033170 + 803318e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8033190: 0adb lsrs r3, r3, #11 + 8033192: f003 0301 and.w r3, r3, #1 + 8033196: 2b00 cmp r3, #0 + 8033198: d00a beq.n 80331b0 { /* Clear the Tx FIFO empty flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_TX_FIFO_EMPTY); - 803315a: 687b ldr r3, [r7, #4] - 803315c: 681b ldr r3, [r3, #0] - 803315e: f44f 6200 mov.w r2, #2048 ; 0x800 - 8033162: 651a str r2, [r3, #80] ; 0x50 - 8033164: 4b2b ldr r3, [pc, #172] ; (8033214 ) - 8033166: 2200 movs r2, #0 - 8033168: 611a str r2, [r3, #16] + 803319a: 687b ldr r3, [r7, #4] + 803319c: 681b ldr r3, [r3, #0] + 803319e: f44f 6200 mov.w r2, #2048 ; 0x800 + 80331a2: 651a str r2, [r3, #80] ; 0x50 + 80331a4: 4b2b ldr r3, [pc, #172] ; (8033254 ) + 80331a6: 2200 movs r2, #0 + 80331a8: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TxFifoEmptyCallback(hfdcan); #else /* Tx FIFO empty Callback */ HAL_FDCAN_TxFifoEmptyCallback(hfdcan); - 803316a: 6878 ldr r0, [r7, #4] - 803316c: f000 f997 bl 803349e + 80331aa: 6878 ldr r0, [r7, #4] + 80331ac: f000 f997 bl 80334de #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Transmission Complete interrupt management *******************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_TX_COMPLETE) != RESET) - 8033170: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033172: 0a5b lsrs r3, r3, #9 - 8033174: f003 0301 and.w r3, r3, #1 - 8033178: 2b00 cmp r3, #0 - 803317a: d01d beq.n 80331b8 + 80331b0: 6bfb ldr r3, [r7, #60] ; 0x3c + 80331b2: 0a5b lsrs r3, r3, #9 + 80331b4: f003 0301 and.w r3, r3, #1 + 80331b8: 2b00 cmp r3, #0 + 80331ba: d01d beq.n 80331f8 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_TX_COMPLETE) != RESET) - 803317c: 6bbb ldr r3, [r7, #56] ; 0x38 - 803317e: 0a5b lsrs r3, r3, #9 - 8033180: f003 0301 and.w r3, r3, #1 - 8033184: 2b00 cmp r3, #0 - 8033186: d017 beq.n 80331b8 + 80331bc: 6bbb ldr r3, [r7, #56] ; 0x38 + 80331be: 0a5b lsrs r3, r3, #9 + 80331c0: f003 0301 and.w r3, r3, #1 + 80331c4: 2b00 cmp r3, #0 + 80331c6: d017 beq.n 80331f8 { /* List of transmitted monitored buffers */ TransmittedBuffers = hfdcan->Instance->TXBTO; - 8033188: 687b ldr r3, [r7, #4] - 803318a: 681b ldr r3, [r3, #0] - 803318c: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 8033190: 633b str r3, [r7, #48] ; 0x30 + 80331c8: 687b ldr r3, [r7, #4] + 80331ca: 681b ldr r3, [r3, #0] + 80331cc: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 80331d0: 633b str r3, [r7, #48] ; 0x30 TransmittedBuffers &= hfdcan->Instance->TXBTIE; - 8033192: 687b ldr r3, [r7, #4] - 8033194: 681b ldr r3, [r3, #0] - 8033196: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803319a: 6b3a ldr r2, [r7, #48] ; 0x30 - 803319c: 4013 ands r3, r2 - 803319e: 633b str r3, [r7, #48] ; 0x30 + 80331d2: 687b ldr r3, [r7, #4] + 80331d4: 681b ldr r3, [r3, #0] + 80331d6: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 80331da: 6b3a ldr r2, [r7, #48] ; 0x30 + 80331dc: 4013 ands r3, r2 + 80331de: 633b str r3, [r7, #48] ; 0x30 /* Clear the Transmission Complete flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_TX_COMPLETE); - 80331a0: 687b ldr r3, [r7, #4] - 80331a2: 681b ldr r3, [r3, #0] - 80331a4: f44f 7200 mov.w r2, #512 ; 0x200 - 80331a8: 651a str r2, [r3, #80] ; 0x50 - 80331aa: 4b1a ldr r3, [pc, #104] ; (8033214 ) - 80331ac: 2200 movs r2, #0 - 80331ae: 611a str r2, [r3, #16] + 80331e0: 687b ldr r3, [r7, #4] + 80331e2: 681b ldr r3, [r3, #0] + 80331e4: f44f 7200 mov.w r2, #512 ; 0x200 + 80331e8: 651a str r2, [r3, #80] ; 0x50 + 80331ea: 4b1a ldr r3, [pc, #104] ; (8033254 ) + 80331ec: 2200 movs r2, #0 + 80331ee: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TxBufferCompleteCallback(hfdcan, TransmittedBuffers); #else /* Transmission Complete Callback */ HAL_FDCAN_TxBufferCompleteCallback(hfdcan, TransmittedBuffers); - 80331b0: 6b39 ldr r1, [r7, #48] ; 0x30 - 80331b2: 6878 ldr r0, [r7, #4] - 80331b4: f000 f97d bl 80334b2 + 80331f0: 6b39 ldr r1, [r7, #48] ; 0x30 + 80331f2: 6878 ldr r0, [r7, #4] + 80331f4: f000 f97d bl 80334f2 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Rx Buffer New Message interrupt management *******************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_RX_BUFFER_NEW_MESSAGE) != RESET) - 80331b8: 6bfb ldr r3, [r7, #60] ; 0x3c - 80331ba: 0cdb lsrs r3, r3, #19 - 80331bc: f003 0301 and.w r3, r3, #1 - 80331c0: 2b00 cmp r3, #0 - 80331c2: d010 beq.n 80331e6 + 80331f8: 6bfb ldr r3, [r7, #60] ; 0x3c + 80331fa: 0cdb lsrs r3, r3, #19 + 80331fc: f003 0301 and.w r3, r3, #1 + 8033200: 2b00 cmp r3, #0 + 8033202: d010 beq.n 8033226 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_RX_BUFFER_NEW_MESSAGE) != RESET) - 80331c4: 6bbb ldr r3, [r7, #56] ; 0x38 - 80331c6: 0cdb lsrs r3, r3, #19 - 80331c8: f003 0301 and.w r3, r3, #1 - 80331cc: 2b00 cmp r3, #0 - 80331ce: d00a beq.n 80331e6 + 8033204: 6bbb ldr r3, [r7, #56] ; 0x38 + 8033206: 0cdb lsrs r3, r3, #19 + 8033208: f003 0301 and.w r3, r3, #1 + 803320c: 2b00 cmp r3, #0 + 803320e: d00a beq.n 8033226 { /* Clear the Rx Buffer New Message flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_RX_BUFFER_NEW_MESSAGE); - 80331d0: 687b ldr r3, [r7, #4] - 80331d2: 681b ldr r3, [r3, #0] - 80331d4: f44f 2200 mov.w r2, #524288 ; 0x80000 - 80331d8: 651a str r2, [r3, #80] ; 0x50 - 80331da: 4b0e ldr r3, [pc, #56] ; (8033214 ) - 80331dc: 2200 movs r2, #0 - 80331de: 611a str r2, [r3, #16] + 8033210: 687b ldr r3, [r7, #4] + 8033212: 681b ldr r3, [r3, #0] + 8033214: f44f 2200 mov.w r2, #524288 ; 0x80000 + 8033218: 651a str r2, [r3, #80] ; 0x50 + 803321a: 4b0e ldr r3, [pc, #56] ; (8033254 ) + 803321c: 2200 movs r2, #0 + 803321e: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->RxBufferNewMessageCallback(hfdcan); #else /* Rx Buffer New Message Callback */ HAL_FDCAN_RxBufferNewMessageCallback(hfdcan); - 80331e0: 6878 ldr r0, [r7, #4] - 80331e2: f000 f97c bl 80334de + 8033220: 6878 ldr r0, [r7, #4] + 8033222: f000 f97c bl 803351e #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Timestamp Wraparound interrupt management ********************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_TIMESTAMP_WRAPAROUND) != RESET) - 80331e6: 6bfb ldr r3, [r7, #60] ; 0x3c - 80331e8: 0c1b lsrs r3, r3, #16 - 80331ea: f003 0301 and.w r3, r3, #1 - 80331ee: 2b00 cmp r3, #0 - 80331f0: d016 beq.n 8033220 + 8033226: 6bfb ldr r3, [r7, #60] ; 0x3c + 8033228: 0c1b lsrs r3, r3, #16 + 803322a: f003 0301 and.w r3, r3, #1 + 803322e: 2b00 cmp r3, #0 + 8033230: d016 beq.n 8033260 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_TIMESTAMP_WRAPAROUND) != RESET) - 80331f2: 6bbb ldr r3, [r7, #56] ; 0x38 - 80331f4: 0c1b lsrs r3, r3, #16 - 80331f6: f003 0301 and.w r3, r3, #1 - 80331fa: 2b00 cmp r3, #0 - 80331fc: d010 beq.n 8033220 + 8033232: 6bbb ldr r3, [r7, #56] ; 0x38 + 8033234: 0c1b lsrs r3, r3, #16 + 8033236: f003 0301 and.w r3, r3, #1 + 803323a: 2b00 cmp r3, #0 + 803323c: d010 beq.n 8033260 { /* Clear the Timestamp Wraparound flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_TIMESTAMP_WRAPAROUND); - 80331fe: 687b ldr r3, [r7, #4] - 8033200: 681b ldr r3, [r3, #0] - 8033202: f44f 3280 mov.w r2, #65536 ; 0x10000 - 8033206: 651a str r2, [r3, #80] ; 0x50 - 8033208: 4b02 ldr r3, [pc, #8] ; (8033214 ) - 803320a: 2200 movs r2, #0 - 803320c: 611a str r2, [r3, #16] + 803323e: 687b ldr r3, [r7, #4] + 8033240: 681b ldr r3, [r3, #0] + 8033242: f44f 3280 mov.w r2, #65536 ; 0x10000 + 8033246: 651a str r2, [r3, #80] ; 0x50 + 8033248: 4b02 ldr r3, [pc, #8] ; (8033254 ) + 803324a: 2200 movs r2, #0 + 803324c: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TimestampWraparoundCallback(hfdcan); #else /* Timestamp Wraparound Callback */ HAL_FDCAN_TimestampWraparoundCallback(hfdcan); - 803320e: 6878 ldr r0, [r7, #4] - 8033210: e004 b.n 803321c - 8033212: bf00 nop - 8033214: 4000a800 .word 0x4000a800 - 8033218: 3fcfffff .word 0x3fcfffff - 803321c: f000 f969 bl 80334f2 + 803324e: 6878 ldr r0, [r7, #4] + 8033250: e004 b.n 803325c + 8033252: bf00 nop + 8033254: 4000a800 .word 0x4000a800 + 8033258: 3fcfffff .word 0x3fcfffff + 803325c: f000 f969 bl 8033532 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Timeout Occurred interrupt management ************************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_TIMEOUT_OCCURRED) != RESET) - 8033220: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033222: 0c9b lsrs r3, r3, #18 - 8033224: f003 0301 and.w r3, r3, #1 - 8033228: 2b00 cmp r3, #0 - 803322a: d010 beq.n 803324e + 8033260: 6bfb ldr r3, [r7, #60] ; 0x3c + 8033262: 0c9b lsrs r3, r3, #18 + 8033264: f003 0301 and.w r3, r3, #1 + 8033268: 2b00 cmp r3, #0 + 803326a: d010 beq.n 803328e { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_TIMEOUT_OCCURRED) != RESET) - 803322c: 6bbb ldr r3, [r7, #56] ; 0x38 - 803322e: 0c9b lsrs r3, r3, #18 - 8033230: f003 0301 and.w r3, r3, #1 - 8033234: 2b00 cmp r3, #0 - 8033236: d00a beq.n 803324e + 803326c: 6bbb ldr r3, [r7, #56] ; 0x38 + 803326e: 0c9b lsrs r3, r3, #18 + 8033270: f003 0301 and.w r3, r3, #1 + 8033274: 2b00 cmp r3, #0 + 8033276: d00a beq.n 803328e { /* Clear the Timeout Occurred flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_TIMEOUT_OCCURRED); - 8033238: 687b ldr r3, [r7, #4] - 803323a: 681b ldr r3, [r3, #0] - 803323c: f44f 2280 mov.w r2, #262144 ; 0x40000 - 8033240: 651a str r2, [r3, #80] ; 0x50 - 8033242: 4b83 ldr r3, [pc, #524] ; (8033450 ) - 8033244: 2200 movs r2, #0 - 8033246: 611a str r2, [r3, #16] + 8033278: 687b ldr r3, [r7, #4] + 803327a: 681b ldr r3, [r3, #0] + 803327c: f44f 2280 mov.w r2, #262144 ; 0x40000 + 8033280: 651a str r2, [r3, #80] ; 0x50 + 8033282: 4b83 ldr r3, [pc, #524] ; (8033490 ) + 8033284: 2200 movs r2, #0 + 8033286: 611a str r2, [r3, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TimeoutOccurredCallback(hfdcan); #else /* Timeout Occurred Callback */ HAL_FDCAN_TimeoutOccurredCallback(hfdcan); - 8033248: 6878 ldr r0, [r7, #4] - 803324a: f000 f95c bl 8033506 + 8033288: 6878 ldr r0, [r7, #4] + 803328a: f000 f95c bl 8033546 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* Message RAM access failure interrupt management **************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceIE, FDCAN_IT_RAM_ACCESS_FAILURE) != RESET) - 803324e: 6bfb ldr r3, [r7, #60] ; 0x3c - 8033250: 0c5b lsrs r3, r3, #17 - 8033252: f003 0301 and.w r3, r3, #1 - 8033256: 2b00 cmp r3, #0 - 8033258: d015 beq.n 8033286 + 803328e: 6bfb ldr r3, [r7, #60] ; 0x3c + 8033290: 0c5b lsrs r3, r3, #17 + 8033292: f003 0301 and.w r3, r3, #1 + 8033296: 2b00 cmp r3, #0 + 8033298: d015 beq.n 80332c6 { if (FDCAN_CHECK_FLAG(itflagIR, FDCAN_FLAG_RAM_ACCESS_FAILURE) != RESET) - 803325a: 6bbb ldr r3, [r7, #56] ; 0x38 - 803325c: 0c5b lsrs r3, r3, #17 - 803325e: f003 0301 and.w r3, r3, #1 - 8033262: 2b00 cmp r3, #0 - 8033264: d00f beq.n 8033286 + 803329a: 6bbb ldr r3, [r7, #56] ; 0x38 + 803329c: 0c5b lsrs r3, r3, #17 + 803329e: f003 0301 and.w r3, r3, #1 + 80332a2: 2b00 cmp r3, #0 + 80332a4: d00f beq.n 80332c6 { /* Clear the Message RAM access failure flag */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, FDCAN_FLAG_RAM_ACCESS_FAILURE); - 8033266: 687b ldr r3, [r7, #4] - 8033268: 681b ldr r3, [r3, #0] - 803326a: f44f 3200 mov.w r2, #131072 ; 0x20000 - 803326e: 651a str r2, [r3, #80] ; 0x50 - 8033270: 4b77 ldr r3, [pc, #476] ; (8033450 ) - 8033272: 2200 movs r2, #0 - 8033274: 611a str r2, [r3, #16] + 80332a6: 687b ldr r3, [r7, #4] + 80332a8: 681b ldr r3, [r3, #0] + 80332aa: f44f 3200 mov.w r2, #131072 ; 0x20000 + 80332ae: 651a str r2, [r3, #80] ; 0x50 + 80332b0: 4b77 ldr r3, [pc, #476] ; (8033490 ) + 80332b2: 2200 movs r2, #0 + 80332b4: 611a str r2, [r3, #16] /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_RAM_ACCESS; - 8033276: 687b ldr r3, [r7, #4] - 8033278: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 803327c: f043 0280 orr.w r2, r3, #128 ; 0x80 - 8033280: 687b ldr r3, [r7, #4] - 8033282: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 80332b6: 687b ldr r3, [r7, #4] + 80332b8: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 80332bc: f043 0280 orr.w r2, r3, #128 ; 0x80 + 80332c0: 687b ldr r3, [r7, #4] + 80332c2: f8c3 209c str.w r2, [r3, #156] ; 0x9c } } /* Error Status interrupts management ***************************************/ if (ErrorStatusITs != 0U) - 8033286: 6c3b ldr r3, [r7, #64] ; 0x40 - 8033288: 2b00 cmp r3, #0 - 803328a: d00d beq.n 80332a8 + 80332c6: 6c3b ldr r3, [r7, #64] ; 0x40 + 80332c8: 2b00 cmp r3, #0 + 80332ca: d00d beq.n 80332e8 { /* Clear the Error flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, ErrorStatusITs); - 803328c: 687b ldr r3, [r7, #4] - 803328e: 681a ldr r2, [r3, #0] - 8033290: 6c39 ldr r1, [r7, #64] ; 0x40 - 8033292: 4b70 ldr r3, [pc, #448] ; (8033454 ) - 8033294: 400b ands r3, r1 - 8033296: 6513 str r3, [r2, #80] ; 0x50 - 8033298: 4a6d ldr r2, [pc, #436] ; (8033450 ) - 803329a: 6c3b ldr r3, [r7, #64] ; 0x40 - 803329c: 0f9b lsrs r3, r3, #30 - 803329e: 6113 str r3, [r2, #16] + 80332cc: 687b ldr r3, [r7, #4] + 80332ce: 681a ldr r2, [r3, #0] + 80332d0: 6c39 ldr r1, [r7, #64] ; 0x40 + 80332d2: 4b70 ldr r3, [pc, #448] ; (8033494 ) + 80332d4: 400b ands r3, r1 + 80332d6: 6513 str r3, [r2, #80] ; 0x50 + 80332d8: 4a6d ldr r2, [pc, #436] ; (8033490 ) + 80332da: 6c3b ldr r3, [r7, #64] ; 0x40 + 80332dc: 0f9b lsrs r3, r3, #30 + 80332de: 6113 str r3, [r2, #16] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->ErrorStatusCallback(hfdcan, ErrorStatusITs); #else /* Error Status Callback */ HAL_FDCAN_ErrorStatusCallback(hfdcan, ErrorStatusITs); - 80332a0: 6c39 ldr r1, [r7, #64] ; 0x40 - 80332a2: 6878 ldr r0, [r7, #4] - 80332a4: f7ed fe3c bl 8020f20 + 80332e0: 6c39 ldr r1, [r7, #64] ; 0x40 + 80332e2: 6878 ldr r0, [r7, #4] + 80332e4: f7ed fe1c bl 8020f20 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* Error interrupts management **********************************************/ if (Errors != 0U) - 80332a8: 6c7b ldr r3, [r7, #68] ; 0x44 - 80332aa: 2b00 cmp r3, #0 - 80332ac: d011 beq.n 80332d2 + 80332e8: 6c7b ldr r3, [r7, #68] ; 0x44 + 80332ea: 2b00 cmp r3, #0 + 80332ec: d011 beq.n 8033312 { /* Clear the Error flags */ __HAL_FDCAN_CLEAR_FLAG(hfdcan, Errors); - 80332ae: 687b ldr r3, [r7, #4] - 80332b0: 681a ldr r2, [r3, #0] - 80332b2: 6c79 ldr r1, [r7, #68] ; 0x44 - 80332b4: 4b67 ldr r3, [pc, #412] ; (8033454 ) - 80332b6: 400b ands r3, r1 - 80332b8: 6513 str r3, [r2, #80] ; 0x50 - 80332ba: 4a65 ldr r2, [pc, #404] ; (8033450 ) - 80332bc: 6c7b ldr r3, [r7, #68] ; 0x44 - 80332be: 0f9b lsrs r3, r3, #30 - 80332c0: 6113 str r3, [r2, #16] + 80332ee: 687b ldr r3, [r7, #4] + 80332f0: 681a ldr r2, [r3, #0] + 80332f2: 6c79 ldr r1, [r7, #68] ; 0x44 + 80332f4: 4b67 ldr r3, [pc, #412] ; (8033494 ) + 80332f6: 400b ands r3, r1 + 80332f8: 6513 str r3, [r2, #80] ; 0x50 + 80332fa: 4a65 ldr r2, [pc, #404] ; (8033490 ) + 80332fc: 6c7b ldr r3, [r7, #68] ; 0x44 + 80332fe: 0f9b lsrs r3, r3, #30 + 8033300: 6113 str r3, [r2, #16] /* Update error code */ hfdcan->ErrorCode |= Errors; - 80332c2: 687b ldr r3, [r7, #4] - 80332c4: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c - 80332c8: 6c7b ldr r3, [r7, #68] ; 0x44 - 80332ca: 431a orrs r2, r3 - 80332cc: 687b ldr r3, [r7, #4] - 80332ce: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8033302: 687b ldr r3, [r7, #4] + 8033304: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c + 8033308: 6c7b ldr r3, [r7, #68] ; 0x44 + 803330a: 431a orrs r2, r3 + 803330c: 687b ldr r3, [r7, #4] + 803330e: f8c3 209c str.w r2, [r3, #156] ; 0x9c } if (hfdcan->Instance == FDCAN1) - 80332d2: 687b ldr r3, [r7, #4] - 80332d4: 681b ldr r3, [r3, #0] - 80332d6: 4a60 ldr r2, [pc, #384] ; (8033458 ) - 80332d8: 4293 cmp r3, r2 - 80332da: f040 80ac bne.w 8033436 + 8033312: 687b ldr r3, [r7, #4] + 8033314: 681b ldr r3, [r3, #0] + 8033316: 4a60 ldr r2, [pc, #384] ; (8033498 ) + 8033318: 4293 cmp r3, r2 + 803331a: f040 80ac bne.w 8033476 { if ((hfdcan->ttcan->TTOCF & FDCAN_TTOCF_OM) != 0U) - 80332de: 687b ldr r3, [r7, #4] - 80332e0: 685b ldr r3, [r3, #4] - 80332e2: 689b ldr r3, [r3, #8] - 80332e4: f003 0303 and.w r3, r3, #3 - 80332e8: 2b00 cmp r3, #0 - 80332ea: f000 80a4 beq.w 8033436 + 803331e: 687b ldr r3, [r7, #4] + 8033320: 685b ldr r3, [r3, #4] + 8033322: 689b ldr r3, [r3, #8] + 8033324: f003 0303 and.w r3, r3, #3 + 8033328: 2b00 cmp r3, #0 + 803332a: f000 80a4 beq.w 8033476 { TTSchedSyncITs = hfdcan->ttcan->TTIR & FDCAN_TT_SCHEDULE_SYNC_MASK; - 80332ee: 687b ldr r3, [r7, #4] - 80332f0: 685b ldr r3, [r3, #4] - 80332f2: 6a1b ldr r3, [r3, #32] - 80332f4: f003 030f and.w r3, r3, #15 - 80332f8: 62fb str r3, [r7, #44] ; 0x2c + 803332e: 687b ldr r3, [r7, #4] + 8033330: 685b ldr r3, [r3, #4] + 8033332: 6a1b ldr r3, [r3, #32] + 8033334: f003 030f and.w r3, r3, #15 + 8033338: 62fb str r3, [r7, #44] ; 0x2c TTSchedSyncITs &= hfdcan->ttcan->TTIE; - 80332fa: 687b ldr r3, [r7, #4] - 80332fc: 685b ldr r3, [r3, #4] - 80332fe: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033300: 6afa ldr r2, [r7, #44] ; 0x2c - 8033302: 4013 ands r3, r2 - 8033304: 62fb str r3, [r7, #44] ; 0x2c + 803333a: 687b ldr r3, [r7, #4] + 803333c: 685b ldr r3, [r3, #4] + 803333e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8033340: 6afa ldr r2, [r7, #44] ; 0x2c + 8033342: 4013 ands r3, r2 + 8033344: 62fb str r3, [r7, #44] ; 0x2c TTTimeMarkITs = hfdcan->ttcan->TTIR & FDCAN_TT_TIME_MARK_MASK; - 8033306: 687b ldr r3, [r7, #4] - 8033308: 685b ldr r3, [r3, #4] - 803330a: 6a1b ldr r3, [r3, #32] - 803330c: f003 0330 and.w r3, r3, #48 ; 0x30 - 8033310: 62bb str r3, [r7, #40] ; 0x28 + 8033346: 687b ldr r3, [r7, #4] + 8033348: 685b ldr r3, [r3, #4] + 803334a: 6a1b ldr r3, [r3, #32] + 803334c: f003 0330 and.w r3, r3, #48 ; 0x30 + 8033350: 62bb str r3, [r7, #40] ; 0x28 TTTimeMarkITs &= hfdcan->ttcan->TTIE; - 8033312: 687b ldr r3, [r7, #4] - 8033314: 685b ldr r3, [r3, #4] - 8033316: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033318: 6aba ldr r2, [r7, #40] ; 0x28 - 803331a: 4013 ands r3, r2 - 803331c: 62bb str r3, [r7, #40] ; 0x28 + 8033352: 687b ldr r3, [r7, #4] + 8033354: 685b ldr r3, [r3, #4] + 8033356: 6a5b ldr r3, [r3, #36] ; 0x24 + 8033358: 6aba ldr r2, [r7, #40] ; 0x28 + 803335a: 4013 ands r3, r2 + 803335c: 62bb str r3, [r7, #40] ; 0x28 TTGlobTimeITs = hfdcan->ttcan->TTIR & FDCAN_TT_GLOBAL_TIME_MASK; - 803331e: 687b ldr r3, [r7, #4] - 8033320: 685b ldr r3, [r3, #4] - 8033322: 6a1b ldr r3, [r3, #32] - 8033324: f403 73c0 and.w r3, r3, #384 ; 0x180 - 8033328: 627b str r3, [r7, #36] ; 0x24 + 803335e: 687b ldr r3, [r7, #4] + 8033360: 685b ldr r3, [r3, #4] + 8033362: 6a1b ldr r3, [r3, #32] + 8033364: f403 73c0 and.w r3, r3, #384 ; 0x180 + 8033368: 627b str r3, [r7, #36] ; 0x24 TTGlobTimeITs &= hfdcan->ttcan->TTIE; - 803332a: 687b ldr r3, [r7, #4] - 803332c: 685b ldr r3, [r3, #4] - 803332e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033330: 6a7a ldr r2, [r7, #36] ; 0x24 - 8033332: 4013 ands r3, r2 - 8033334: 627b str r3, [r7, #36] ; 0x24 + 803336a: 687b ldr r3, [r7, #4] + 803336c: 685b ldr r3, [r3, #4] + 803336e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8033370: 6a7a ldr r2, [r7, #36] ; 0x24 + 8033372: 4013 ands r3, r2 + 8033374: 627b str r3, [r7, #36] ; 0x24 TTDistErrors = hfdcan->ttcan->TTIR & FDCAN_TT_DISTURBING_ERROR_MASK; - 8033336: 687b ldr r3, [r7, #4] - 8033338: 685b ldr r3, [r3, #4] - 803333a: 6a1b ldr r3, [r3, #32] - 803333c: f403 43fc and.w r3, r3, #32256 ; 0x7e00 - 8033340: 623b str r3, [r7, #32] + 8033376: 687b ldr r3, [r7, #4] + 8033378: 685b ldr r3, [r3, #4] + 803337a: 6a1b ldr r3, [r3, #32] + 803337c: f403 43fc and.w r3, r3, #32256 ; 0x7e00 + 8033380: 623b str r3, [r7, #32] TTDistErrors &= hfdcan->ttcan->TTIE; - 8033342: 687b ldr r3, [r7, #4] - 8033344: 685b ldr r3, [r3, #4] - 8033346: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033348: 6a3a ldr r2, [r7, #32] - 803334a: 4013 ands r3, r2 - 803334c: 623b str r3, [r7, #32] + 8033382: 687b ldr r3, [r7, #4] + 8033384: 685b ldr r3, [r3, #4] + 8033386: 6a5b ldr r3, [r3, #36] ; 0x24 + 8033388: 6a3a ldr r2, [r7, #32] + 803338a: 4013 ands r3, r2 + 803338c: 623b str r3, [r7, #32] TTFatalErrors = hfdcan->ttcan->TTIR & FDCAN_TT_FATAL_ERROR_MASK; - 803334e: 687b ldr r3, [r7, #4] - 8033350: 685b ldr r3, [r3, #4] - 8033352: 6a1b ldr r3, [r3, #32] - 8033354: f403 23f0 and.w r3, r3, #491520 ; 0x78000 - 8033358: 61fb str r3, [r7, #28] + 803338e: 687b ldr r3, [r7, #4] + 8033390: 685b ldr r3, [r3, #4] + 8033392: 6a1b ldr r3, [r3, #32] + 8033394: f403 23f0 and.w r3, r3, #491520 ; 0x78000 + 8033398: 61fb str r3, [r7, #28] TTFatalErrors &= hfdcan->ttcan->TTIE; - 803335a: 687b ldr r3, [r7, #4] - 803335c: 685b ldr r3, [r3, #4] - 803335e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033360: 69fa ldr r2, [r7, #28] - 8033362: 4013 ands r3, r2 - 8033364: 61fb str r3, [r7, #28] + 803339a: 687b ldr r3, [r7, #4] + 803339c: 685b ldr r3, [r3, #4] + 803339e: 6a5b ldr r3, [r3, #36] ; 0x24 + 80333a0: 69fa ldr r2, [r7, #28] + 80333a2: 4013 ands r3, r2 + 80333a4: 61fb str r3, [r7, #28] itsourceTTIE = hfdcan->ttcan->TTIE; - 8033366: 687b ldr r3, [r7, #4] - 8033368: 685b ldr r3, [r3, #4] - 803336a: 6a5b ldr r3, [r3, #36] ; 0x24 - 803336c: 61bb str r3, [r7, #24] + 80333a6: 687b ldr r3, [r7, #4] + 80333a8: 685b ldr r3, [r3, #4] + 80333aa: 6a5b ldr r3, [r3, #36] ; 0x24 + 80333ac: 61bb str r3, [r7, #24] itflagTTIR = hfdcan->ttcan->TTIR; - 803336e: 687b ldr r3, [r7, #4] - 8033370: 685b ldr r3, [r3, #4] - 8033372: 6a1b ldr r3, [r3, #32] - 8033374: 617b str r3, [r7, #20] + 80333ae: 687b ldr r3, [r7, #4] + 80333b0: 685b ldr r3, [r3, #4] + 80333b2: 6a1b ldr r3, [r3, #32] + 80333b4: 617b str r3, [r7, #20] /* TT Schedule Synchronization interrupts management **********************/ if (TTSchedSyncITs != 0U) - 8033376: 6afb ldr r3, [r7, #44] ; 0x2c - 8033378: 2b00 cmp r3, #0 - 803337a: d007 beq.n 803338c + 80333b6: 6afb ldr r3, [r7, #44] ; 0x2c + 80333b8: 2b00 cmp r3, #0 + 80333ba: d007 beq.n 80333cc { /* Clear the TT Schedule Synchronization flags */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, TTSchedSyncITs); - 803337c: 687b ldr r3, [r7, #4] - 803337e: 685b ldr r3, [r3, #4] - 8033380: 6afa ldr r2, [r7, #44] ; 0x2c - 8033382: 621a str r2, [r3, #32] + 80333bc: 687b ldr r3, [r7, #4] + 80333be: 685b ldr r3, [r3, #4] + 80333c0: 6afa ldr r2, [r7, #44] ; 0x2c + 80333c2: 621a str r2, [r3, #32] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TT_ScheduleSyncCallback(hfdcan, TTSchedSyncITs); #else /* TT Schedule Synchronization Callback */ HAL_FDCAN_TT_ScheduleSyncCallback(hfdcan, TTSchedSyncITs); - 8033384: 6af9 ldr r1, [r7, #44] ; 0x2c - 8033386: 6878 ldr r0, [r7, #4] - 8033388: f000 f8db bl 8033542 + 80333c4: 6af9 ldr r1, [r7, #44] ; 0x2c + 80333c6: 6878 ldr r0, [r7, #4] + 80333c8: f000 f8db bl 8033582 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* TT Time Mark interrupts management *************************************/ if (TTTimeMarkITs != 0U) - 803338c: 6abb ldr r3, [r7, #40] ; 0x28 - 803338e: 2b00 cmp r3, #0 - 8033390: d007 beq.n 80333a2 + 80333cc: 6abb ldr r3, [r7, #40] ; 0x28 + 80333ce: 2b00 cmp r3, #0 + 80333d0: d007 beq.n 80333e2 { /* Clear the TT Time Mark flags */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, TTTimeMarkITs); - 8033392: 687b ldr r3, [r7, #4] - 8033394: 685b ldr r3, [r3, #4] - 8033396: 6aba ldr r2, [r7, #40] ; 0x28 - 8033398: 621a str r2, [r3, #32] + 80333d2: 687b ldr r3, [r7, #4] + 80333d4: 685b ldr r3, [r3, #4] + 80333d6: 6aba ldr r2, [r7, #40] ; 0x28 + 80333d8: 621a str r2, [r3, #32] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TT_TimeMarkCallback(hfdcan, TTTimeMarkITs); #else /* TT Time Mark Callback */ HAL_FDCAN_TT_TimeMarkCallback(hfdcan, TTTimeMarkITs); - 803339a: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803339c: 6878 ldr r0, [r7, #4] - 803339e: f000 f8db bl 8033558 + 80333da: 6ab9 ldr r1, [r7, #40] ; 0x28 + 80333dc: 6878 ldr r0, [r7, #4] + 80333de: f000 f8db bl 8033598 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* TT Stop Watch interrupt management *************************************/ if (FDCAN_CHECK_IT_SOURCE(itsourceTTIE, FDCAN_TT_IT_STOP_WATCH) != RESET) - 80333a2: 69bb ldr r3, [r7, #24] - 80333a4: 099b lsrs r3, r3, #6 - 80333a6: f003 0301 and.w r3, r3, #1 - 80333aa: 2b00 cmp r3, #0 - 80333ac: d01a beq.n 80333e4 + 80333e2: 69bb ldr r3, [r7, #24] + 80333e4: 099b lsrs r3, r3, #6 + 80333e6: f003 0301 and.w r3, r3, #1 + 80333ea: 2b00 cmp r3, #0 + 80333ec: d01a beq.n 8033424 { if (FDCAN_CHECK_FLAG(itflagTTIR, FDCAN_TT_FLAG_STOP_WATCH) != RESET) - 80333ae: 697b ldr r3, [r7, #20] - 80333b0: 099b lsrs r3, r3, #6 - 80333b2: f003 0301 and.w r3, r3, #1 - 80333b6: 2b00 cmp r3, #0 - 80333b8: d014 beq.n 80333e4 + 80333ee: 697b ldr r3, [r7, #20] + 80333f0: 099b lsrs r3, r3, #6 + 80333f2: f003 0301 and.w r3, r3, #1 + 80333f6: 2b00 cmp r3, #0 + 80333f8: d014 beq.n 8033424 { /* Retrieve Stop watch Time and Cycle count */ SWTime = ((hfdcan->ttcan->TTCPT & FDCAN_TTCPT_SWV) >> FDCAN_TTCPT_SWV_Pos); - 80333ba: 687b ldr r3, [r7, #4] - 80333bc: 685b ldr r3, [r3, #4] - 80333be: 6bdb ldr r3, [r3, #60] ; 0x3c - 80333c0: 0c1b lsrs r3, r3, #16 - 80333c2: b29b uxth r3, r3 - 80333c4: 613b str r3, [r7, #16] + 80333fa: 687b ldr r3, [r7, #4] + 80333fc: 685b ldr r3, [r3, #4] + 80333fe: 6bdb ldr r3, [r3, #60] ; 0x3c + 8033400: 0c1b lsrs r3, r3, #16 + 8033402: b29b uxth r3, r3 + 8033404: 613b str r3, [r7, #16] SWCycleCount = ((hfdcan->ttcan->TTCPT & FDCAN_TTCPT_CCV) >> FDCAN_TTCPT_CCV_Pos); - 80333c6: 687b ldr r3, [r7, #4] - 80333c8: 685b ldr r3, [r3, #4] - 80333ca: 6bdb ldr r3, [r3, #60] ; 0x3c - 80333cc: f003 033f and.w r3, r3, #63 ; 0x3f - 80333d0: 60fb str r3, [r7, #12] + 8033406: 687b ldr r3, [r7, #4] + 8033408: 685b ldr r3, [r3, #4] + 803340a: 6bdb ldr r3, [r3, #60] ; 0x3c + 803340c: f003 033f and.w r3, r3, #63 ; 0x3f + 8033410: 60fb str r3, [r7, #12] /* Clear the TT Stop Watch flag */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, FDCAN_TT_FLAG_STOP_WATCH); - 80333d2: 687b ldr r3, [r7, #4] - 80333d4: 685b ldr r3, [r3, #4] - 80333d6: 2240 movs r2, #64 ; 0x40 - 80333d8: 621a str r2, [r3, #32] + 8033412: 687b ldr r3, [r7, #4] + 8033414: 685b ldr r3, [r3, #4] + 8033416: 2240 movs r2, #64 ; 0x40 + 8033418: 621a str r2, [r3, #32] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TT_StopWatchCallback(hfdcan, SWTime, SWCycleCount); #else /* TT Stop Watch Callback */ HAL_FDCAN_TT_StopWatchCallback(hfdcan, SWTime, SWCycleCount); - 80333da: 68fa ldr r2, [r7, #12] - 80333dc: 6939 ldr r1, [r7, #16] - 80333de: 6878 ldr r0, [r7, #4] - 80333e0: f000 f8c5 bl 803356e + 803341a: 68fa ldr r2, [r7, #12] + 803341c: 6939 ldr r1, [r7, #16] + 803341e: 6878 ldr r0, [r7, #4] + 8033420: f000 f8c5 bl 80335ae #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } /* TT Global Time interrupts management ***********************************/ if (TTGlobTimeITs != 0U) - 80333e4: 6a7b ldr r3, [r7, #36] ; 0x24 - 80333e6: 2b00 cmp r3, #0 - 80333e8: d007 beq.n 80333fa + 8033424: 6a7b ldr r3, [r7, #36] ; 0x24 + 8033426: 2b00 cmp r3, #0 + 8033428: d007 beq.n 803343a { /* Clear the TT Global Time flags */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, TTGlobTimeITs); - 80333ea: 687b ldr r3, [r7, #4] - 80333ec: 685b ldr r3, [r3, #4] - 80333ee: 6a7a ldr r2, [r7, #36] ; 0x24 - 80333f0: 621a str r2, [r3, #32] + 803342a: 687b ldr r3, [r7, #4] + 803342c: 685b ldr r3, [r3, #4] + 803342e: 6a7a ldr r2, [r7, #36] ; 0x24 + 8033430: 621a str r2, [r3, #32] #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->TT_GlobalTimeCallback(hfdcan, TTGlobTimeITs); #else /* TT Global Time Callback */ HAL_FDCAN_TT_GlobalTimeCallback(hfdcan, TTGlobTimeITs); - 80333f2: 6a79 ldr r1, [r7, #36] ; 0x24 - 80333f4: 6878 ldr r0, [r7, #4] - 80333f6: f000 f8c6 bl 8033586 + 8033432: 6a79 ldr r1, [r7, #36] ; 0x24 + 8033434: 6878 ldr r0, [r7, #4] + 8033436: f000 f8c6 bl 80335c6 #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } /* TT Disturbing Error interrupts management ******************************/ if (TTDistErrors != 0U) - 80333fa: 6a3b ldr r3, [r7, #32] - 80333fc: 2b00 cmp r3, #0 - 80333fe: d00b beq.n 8033418 + 803343a: 6a3b ldr r3, [r7, #32] + 803343c: 2b00 cmp r3, #0 + 803343e: d00b beq.n 8033458 { /* Clear the TT Disturbing Error flags */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, TTDistErrors); - 8033400: 687b ldr r3, [r7, #4] - 8033402: 685b ldr r3, [r3, #4] - 8033404: 6a3a ldr r2, [r7, #32] - 8033406: 621a str r2, [r3, #32] + 8033440: 687b ldr r3, [r7, #4] + 8033442: 685b ldr r3, [r3, #4] + 8033444: 6a3a ldr r2, [r7, #32] + 8033446: 621a str r2, [r3, #32] /* Update error code */ hfdcan->ErrorCode |= TTDistErrors; - 8033408: 687b ldr r3, [r7, #4] - 803340a: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c - 803340e: 6a3b ldr r3, [r7, #32] - 8033410: 431a orrs r2, r3 - 8033412: 687b ldr r3, [r7, #4] - 8033414: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8033448: 687b ldr r3, [r7, #4] + 803344a: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c + 803344e: 6a3b ldr r3, [r7, #32] + 8033450: 431a orrs r2, r3 + 8033452: 687b ldr r3, [r7, #4] + 8033454: f8c3 209c str.w r2, [r3, #156] ; 0x9c } /* TT Fatal Error interrupts management ***********************************/ if (TTFatalErrors != 0U) - 8033418: 69fb ldr r3, [r7, #28] - 803341a: 2b00 cmp r3, #0 - 803341c: d00b beq.n 8033436 + 8033458: 69fb ldr r3, [r7, #28] + 803345a: 2b00 cmp r3, #0 + 803345c: d00b beq.n 8033476 { /* Clear the TT Fatal Error flags */ __HAL_FDCAN_TT_CLEAR_FLAG(hfdcan, TTFatalErrors); - 803341e: 687b ldr r3, [r7, #4] - 8033420: 685b ldr r3, [r3, #4] - 8033422: 69fa ldr r2, [r7, #28] - 8033424: 621a str r2, [r3, #32] + 803345e: 687b ldr r3, [r7, #4] + 8033460: 685b ldr r3, [r3, #4] + 8033462: 69fa ldr r2, [r7, #28] + 8033464: 621a str r2, [r3, #32] /* Update error code */ hfdcan->ErrorCode |= TTFatalErrors; - 8033426: 687b ldr r3, [r7, #4] - 8033428: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c - 803342c: 69fb ldr r3, [r7, #28] - 803342e: 431a orrs r2, r3 - 8033430: 687b ldr r3, [r7, #4] - 8033432: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 8033466: 687b ldr r3, [r7, #4] + 8033468: f8d3 209c ldr.w r2, [r3, #156] ; 0x9c + 803346c: 69fb ldr r3, [r7, #28] + 803346e: 431a orrs r2, r3 + 8033470: 687b ldr r3, [r7, #4] + 8033472: f8c3 209c str.w r2, [r3, #156] ; 0x9c } } } if (hfdcan->ErrorCode != HAL_FDCAN_ERROR_NONE) - 8033436: 687b ldr r3, [r7, #4] - 8033438: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 803343c: 2b00 cmp r3, #0 - 803343e: d002 beq.n 8033446 + 8033476: 687b ldr r3, [r7, #4] + 8033478: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 803347c: 2b00 cmp r3, #0 + 803347e: d002 beq.n 8033486 #if USE_HAL_FDCAN_REGISTER_CALLBACKS == 1 /* Call registered callback*/ hfdcan->ErrorCallback(hfdcan); #else /* Error Callback */ HAL_FDCAN_ErrorCallback(hfdcan); - 8033440: 6878 ldr r0, [r7, #4] - 8033442: f000 f874 bl 803352e + 8033480: 6878 ldr r0, [r7, #4] + 8033482: f000 f874 bl 803356e #endif /* USE_HAL_FDCAN_REGISTER_CALLBACKS */ } } - 8033446: bf00 nop - 8033448: 3758 adds r7, #88 ; 0x58 - 803344a: 46bd mov sp, r7 - 803344c: bd80 pop {r7, pc} - 803344e: bf00 nop - 8033450: 4000a800 .word 0x4000a800 - 8033454: 3fcfffff .word 0x3fcfffff - 8033458: 4000a000 .word 0x4000a000 + 8033486: bf00 nop + 8033488: 3758 adds r7, #88 ; 0x58 + 803348a: 46bd mov sp, r7 + 803348c: bd80 pop {r7, pc} + 803348e: bf00 nop + 8033490: 4000a800 .word 0x4000a800 + 8033494: 3fcfffff .word 0x3fcfffff + 8033498: 4000a000 .word 0x4000a000 -0803345c : +0803349c : * @param ClkCalibrationITs indicates which Clock Calibration interrupts are signaled. * This parameter can be any combination of @arg FDCAN_Clock_Calibration_Interrupts. * @retval None */ __weak void HAL_FDCAN_ClockCalibrationCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ClkCalibrationITs) { - 803345c: b480 push {r7} - 803345e: b083 sub sp, #12 - 8033460: af00 add r7, sp, #0 - 8033462: 6078 str r0, [r7, #4] - 8033464: 6039 str r1, [r7, #0] + 803349c: b480 push {r7} + 803349e: b083 sub sp, #12 + 80334a0: af00 add r7, sp, #0 + 80334a2: 6078 str r0, [r7, #4] + 80334a4: 6039 str r1, [r7, #0] UNUSED(ClkCalibrationITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_ClockCalibrationCallback could be implemented in the user file */ } - 8033466: bf00 nop - 8033468: 370c adds r7, #12 - 803346a: 46bd mov sp, r7 - 803346c: f85d 7b04 ldr.w r7, [sp], #4 - 8033470: 4770 bx lr + 80334a6: bf00 nop + 80334a8: 370c adds r7, #12 + 80334aa: 46bd mov sp, r7 + 80334ac: f85d 7b04 ldr.w r7, [sp], #4 + 80334b0: 4770 bx lr -08033472 : +080334b2 : * @param TxEventFifoITs indicates which Tx Event FIFO interrupts are signaled. * This parameter can be any combination of @arg FDCAN_Tx_Event_Fifo_Interrupts. * @retval None */ __weak void HAL_FDCAN_TxEventFifoCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t TxEventFifoITs) { - 8033472: b480 push {r7} - 8033474: b083 sub sp, #12 - 8033476: af00 add r7, sp, #0 - 8033478: 6078 str r0, [r7, #4] - 803347a: 6039 str r1, [r7, #0] + 80334b2: b480 push {r7} + 80334b4: b083 sub sp, #12 + 80334b6: af00 add r7, sp, #0 + 80334b8: 6078 str r0, [r7, #4] + 80334ba: 6039 str r1, [r7, #0] UNUSED(TxEventFifoITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TxEventFifoCallback could be implemented in the user file */ } - 803347c: bf00 nop - 803347e: 370c adds r7, #12 - 8033480: 46bd mov sp, r7 - 8033482: f85d 7b04 ldr.w r7, [sp], #4 - 8033486: 4770 bx lr + 80334bc: bf00 nop + 80334be: 370c adds r7, #12 + 80334c0: 46bd mov sp, r7 + 80334c2: f85d 7b04 ldr.w r7, [sp], #4 + 80334c6: 4770 bx lr -08033488 : +080334c8 : * @param RxFifo1ITs indicates which Rx FIFO 1 interrupts are signaled. * This parameter can be any combination of @arg FDCAN_Rx_Fifo1_Interrupts. * @retval None */ __weak void HAL_FDCAN_RxFifo1Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo1ITs) { - 8033488: b480 push {r7} - 803348a: b083 sub sp, #12 - 803348c: af00 add r7, sp, #0 - 803348e: 6078 str r0, [r7, #4] - 8033490: 6039 str r1, [r7, #0] + 80334c8: b480 push {r7} + 80334ca: b083 sub sp, #12 + 80334cc: af00 add r7, sp, #0 + 80334ce: 6078 str r0, [r7, #4] + 80334d0: 6039 str r1, [r7, #0] UNUSED(RxFifo1ITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_RxFifo1Callback could be implemented in the user file */ } - 8033492: bf00 nop - 8033494: 370c adds r7, #12 - 8033496: 46bd mov sp, r7 - 8033498: f85d 7b04 ldr.w r7, [sp], #4 - 803349c: 4770 bx lr + 80334d2: bf00 nop + 80334d4: 370c adds r7, #12 + 80334d6: 46bd mov sp, r7 + 80334d8: f85d 7b04 ldr.w r7, [sp], #4 + 80334dc: 4770 bx lr -0803349e : +080334de : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_TxFifoEmptyCallback(FDCAN_HandleTypeDef *hfdcan) { - 803349e: b480 push {r7} - 80334a0: b083 sub sp, #12 - 80334a2: af00 add r7, sp, #0 - 80334a4: 6078 str r0, [r7, #4] + 80334de: b480 push {r7} + 80334e0: b083 sub sp, #12 + 80334e2: af00 add r7, sp, #0 + 80334e4: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TxFifoEmptyCallback could be implemented in the user file */ } - 80334a6: bf00 nop - 80334a8: 370c adds r7, #12 - 80334aa: 46bd mov sp, r7 - 80334ac: f85d 7b04 ldr.w r7, [sp], #4 - 80334b0: 4770 bx lr + 80334e6: bf00 nop + 80334e8: 370c adds r7, #12 + 80334ea: 46bd mov sp, r7 + 80334ec: f85d 7b04 ldr.w r7, [sp], #4 + 80334f0: 4770 bx lr -080334b2 : +080334f2 : * @param BufferIndexes Indexes of the transmitted buffers. * This parameter can be any combination of @arg FDCAN_Tx_location. * @retval None */ __weak void HAL_FDCAN_TxBufferCompleteCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t BufferIndexes) { - 80334b2: b480 push {r7} - 80334b4: b083 sub sp, #12 - 80334b6: af00 add r7, sp, #0 - 80334b8: 6078 str r0, [r7, #4] - 80334ba: 6039 str r1, [r7, #0] + 80334f2: b480 push {r7} + 80334f4: b083 sub sp, #12 + 80334f6: af00 add r7, sp, #0 + 80334f8: 6078 str r0, [r7, #4] + 80334fa: 6039 str r1, [r7, #0] UNUSED(BufferIndexes); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TxBufferCompleteCallback could be implemented in the user file */ } - 80334bc: bf00 nop - 80334be: 370c adds r7, #12 - 80334c0: 46bd mov sp, r7 - 80334c2: f85d 7b04 ldr.w r7, [sp], #4 - 80334c6: 4770 bx lr + 80334fc: bf00 nop + 80334fe: 370c adds r7, #12 + 8033500: 46bd mov sp, r7 + 8033502: f85d 7b04 ldr.w r7, [sp], #4 + 8033506: 4770 bx lr -080334c8 : +08033508 : * @param BufferIndexes Indexes of the aborted buffers. * This parameter can be any combination of @arg FDCAN_Tx_location. * @retval None */ __weak void HAL_FDCAN_TxBufferAbortCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t BufferIndexes) { - 80334c8: b480 push {r7} - 80334ca: b083 sub sp, #12 - 80334cc: af00 add r7, sp, #0 - 80334ce: 6078 str r0, [r7, #4] - 80334d0: 6039 str r1, [r7, #0] + 8033508: b480 push {r7} + 803350a: b083 sub sp, #12 + 803350c: af00 add r7, sp, #0 + 803350e: 6078 str r0, [r7, #4] + 8033510: 6039 str r1, [r7, #0] UNUSED(BufferIndexes); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TxBufferAbortCallback could be implemented in the user file */ } - 80334d2: bf00 nop - 80334d4: 370c adds r7, #12 - 80334d6: 46bd mov sp, r7 - 80334d8: f85d 7b04 ldr.w r7, [sp], #4 - 80334dc: 4770 bx lr + 8033512: bf00 nop + 8033514: 370c adds r7, #12 + 8033516: 46bd mov sp, r7 + 8033518: f85d 7b04 ldr.w r7, [sp], #4 + 803351c: 4770 bx lr -080334de : +0803351e : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_RxBufferNewMessageCallback(FDCAN_HandleTypeDef *hfdcan) { - 80334de: b480 push {r7} - 80334e0: b083 sub sp, #12 - 80334e2: af00 add r7, sp, #0 - 80334e4: 6078 str r0, [r7, #4] + 803351e: b480 push {r7} + 8033520: b083 sub sp, #12 + 8033522: af00 add r7, sp, #0 + 8033524: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_RxBufferNewMessageCallback could be implemented in the user file */ } - 80334e6: bf00 nop - 80334e8: 370c adds r7, #12 - 80334ea: 46bd mov sp, r7 - 80334ec: f85d 7b04 ldr.w r7, [sp], #4 - 80334f0: 4770 bx lr + 8033526: bf00 nop + 8033528: 370c adds r7, #12 + 803352a: 46bd mov sp, r7 + 803352c: f85d 7b04 ldr.w r7, [sp], #4 + 8033530: 4770 bx lr -080334f2 : +08033532 : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_TimestampWraparoundCallback(FDCAN_HandleTypeDef *hfdcan) { - 80334f2: b480 push {r7} - 80334f4: b083 sub sp, #12 - 80334f6: af00 add r7, sp, #0 - 80334f8: 6078 str r0, [r7, #4] + 8033532: b480 push {r7} + 8033534: b083 sub sp, #12 + 8033536: af00 add r7, sp, #0 + 8033538: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TimestampWraparoundCallback could be implemented in the user file */ } - 80334fa: bf00 nop - 80334fc: 370c adds r7, #12 - 80334fe: 46bd mov sp, r7 - 8033500: f85d 7b04 ldr.w r7, [sp], #4 - 8033504: 4770 bx lr + 803353a: bf00 nop + 803353c: 370c adds r7, #12 + 803353e: 46bd mov sp, r7 + 8033540: f85d 7b04 ldr.w r7, [sp], #4 + 8033544: 4770 bx lr -08033506 : +08033546 : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_TimeoutOccurredCallback(FDCAN_HandleTypeDef *hfdcan) { - 8033506: b480 push {r7} - 8033508: b083 sub sp, #12 - 803350a: af00 add r7, sp, #0 - 803350c: 6078 str r0, [r7, #4] + 8033546: b480 push {r7} + 8033548: b083 sub sp, #12 + 803354a: af00 add r7, sp, #0 + 803354c: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TimeoutOccurredCallback could be implemented in the user file */ } - 803350e: bf00 nop - 8033510: 370c adds r7, #12 - 8033512: 46bd mov sp, r7 - 8033514: f85d 7b04 ldr.w r7, [sp], #4 - 8033518: 4770 bx lr + 803354e: bf00 nop + 8033550: 370c adds r7, #12 + 8033552: 46bd mov sp, r7 + 8033554: f85d 7b04 ldr.w r7, [sp], #4 + 8033558: 4770 bx lr -0803351a : +0803355a : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_HighPriorityMessageCallback(FDCAN_HandleTypeDef *hfdcan) { - 803351a: b480 push {r7} - 803351c: b083 sub sp, #12 - 803351e: af00 add r7, sp, #0 - 8033520: 6078 str r0, [r7, #4] + 803355a: b480 push {r7} + 803355c: b083 sub sp, #12 + 803355e: af00 add r7, sp, #0 + 8033560: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_HighPriorityMessageCallback could be implemented in the user file */ } - 8033522: bf00 nop - 8033524: 370c adds r7, #12 - 8033526: 46bd mov sp, r7 - 8033528: f85d 7b04 ldr.w r7, [sp], #4 - 803352c: 4770 bx lr + 8033562: bf00 nop + 8033564: 370c adds r7, #12 + 8033566: 46bd mov sp, r7 + 8033568: f85d 7b04 ldr.w r7, [sp], #4 + 803356c: 4770 bx lr -0803352e : +0803356e : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval None */ __weak void HAL_FDCAN_ErrorCallback(FDCAN_HandleTypeDef *hfdcan) { - 803352e: b480 push {r7} - 8033530: b083 sub sp, #12 - 8033532: af00 add r7, sp, #0 - 8033534: 6078 str r0, [r7, #4] + 803356e: b480 push {r7} + 8033570: b083 sub sp, #12 + 8033572: af00 add r7, sp, #0 + 8033574: 6078 str r0, [r7, #4] UNUSED(hfdcan); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_ErrorCallback could be implemented in the user file */ } - 8033536: bf00 nop - 8033538: 370c adds r7, #12 - 803353a: 46bd mov sp, r7 - 803353c: f85d 7b04 ldr.w r7, [sp], #4 - 8033540: 4770 bx lr + 8033576: bf00 nop + 8033578: 370c adds r7, #12 + 803357a: 46bd mov sp, r7 + 803357c: f85d 7b04 ldr.w r7, [sp], #4 + 8033580: 4770 bx lr -08033542 : +08033582 : * @param TTSchedSyncITs indicates which TT Schedule Synchronization interrupts are signaled. * This parameter can be any combination of @arg FDCAN_TTScheduleSynchronization_Interrupts. * @retval None */ __weak void HAL_FDCAN_TT_ScheduleSyncCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t TTSchedSyncITs) { - 8033542: b480 push {r7} - 8033544: b083 sub sp, #12 - 8033546: af00 add r7, sp, #0 - 8033548: 6078 str r0, [r7, #4] - 803354a: 6039 str r1, [r7, #0] + 8033582: b480 push {r7} + 8033584: b083 sub sp, #12 + 8033586: af00 add r7, sp, #0 + 8033588: 6078 str r0, [r7, #4] + 803358a: 6039 str r1, [r7, #0] UNUSED(TTSchedSyncITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TT_ScheduleSyncCallback could be implemented in the user file */ } - 803354c: bf00 nop - 803354e: 370c adds r7, #12 - 8033550: 46bd mov sp, r7 - 8033552: f85d 7b04 ldr.w r7, [sp], #4 - 8033556: 4770 bx lr + 803358c: bf00 nop + 803358e: 370c adds r7, #12 + 8033590: 46bd mov sp, r7 + 8033592: f85d 7b04 ldr.w r7, [sp], #4 + 8033596: 4770 bx lr -08033558 : +08033598 : * @param TTTimeMarkITs indicates which TT Schedule Synchronization interrupts are signaled. * This parameter can be any combination of @arg FDCAN_TTTimeMark_Interrupts. * @retval None */ __weak void HAL_FDCAN_TT_TimeMarkCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t TTTimeMarkITs) { - 8033558: b480 push {r7} - 803355a: b083 sub sp, #12 - 803355c: af00 add r7, sp, #0 - 803355e: 6078 str r0, [r7, #4] - 8033560: 6039 str r1, [r7, #0] + 8033598: b480 push {r7} + 803359a: b083 sub sp, #12 + 803359c: af00 add r7, sp, #0 + 803359e: 6078 str r0, [r7, #4] + 80335a0: 6039 str r1, [r7, #0] UNUSED(TTTimeMarkITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TT_TimeMarkCallback could be implemented in the user file */ } - 8033562: bf00 nop - 8033564: 370c adds r7, #12 - 8033566: 46bd mov sp, r7 - 8033568: f85d 7b04 ldr.w r7, [sp], #4 - 803356c: 4770 bx lr + 80335a2: bf00 nop + 80335a4: 370c adds r7, #12 + 80335a6: 46bd mov sp, r7 + 80335a8: f85d 7b04 ldr.w r7, [sp], #4 + 80335ac: 4770 bx lr -0803356e : +080335ae : * @param SWCycleCount Cycle count value captured together with SWTime. * This parameter is a number between 0 and 0x3F. * @retval None */ __weak void HAL_FDCAN_TT_StopWatchCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t SWTime, uint32_t SWCycleCount) { - 803356e: b480 push {r7} - 8033570: b085 sub sp, #20 - 8033572: af00 add r7, sp, #0 - 8033574: 60f8 str r0, [r7, #12] - 8033576: 60b9 str r1, [r7, #8] - 8033578: 607a str r2, [r7, #4] + 80335ae: b480 push {r7} + 80335b0: b085 sub sp, #20 + 80335b2: af00 add r7, sp, #0 + 80335b4: 60f8 str r0, [r7, #12] + 80335b6: 60b9 str r1, [r7, #8] + 80335b8: 607a str r2, [r7, #4] UNUSED(SWCycleCount); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TT_StopWatchCallback could be implemented in the user file */ } - 803357a: bf00 nop - 803357c: 3714 adds r7, #20 - 803357e: 46bd mov sp, r7 - 8033580: f85d 7b04 ldr.w r7, [sp], #4 - 8033584: 4770 bx lr + 80335ba: bf00 nop + 80335bc: 3714 adds r7, #20 + 80335be: 46bd mov sp, r7 + 80335c0: f85d 7b04 ldr.w r7, [sp], #4 + 80335c4: 4770 bx lr -08033586 : +080335c6 : * @param TTGlobTimeITs indicates which TT Global Time interrupts are signaled. * This parameter can be any combination of @arg FDCAN_TTGlobalTime_Interrupts. * @retval None */ __weak void HAL_FDCAN_TT_GlobalTimeCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t TTGlobTimeITs) { - 8033586: b480 push {r7} - 8033588: b083 sub sp, #12 - 803358a: af00 add r7, sp, #0 - 803358c: 6078 str r0, [r7, #4] - 803358e: 6039 str r1, [r7, #0] + 80335c6: b480 push {r7} + 80335c8: b083 sub sp, #12 + 80335ca: af00 add r7, sp, #0 + 80335cc: 6078 str r0, [r7, #4] + 80335ce: 6039 str r1, [r7, #0] UNUSED(TTGlobTimeITs); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_FDCAN_TT_GlobalTimeCallback could be implemented in the user file */ } - 8033590: bf00 nop - 8033592: 370c adds r7, #12 - 8033594: 46bd mov sp, r7 - 8033596: f85d 7b04 ldr.w r7, [sp], #4 - 803359a: 4770 bx lr + 80335d0: bf00 nop + 80335d2: 370c adds r7, #12 + 80335d4: 46bd mov sp, r7 + 80335d6: f85d 7b04 ldr.w r7, [sp], #4 + 80335da: 4770 bx lr -0803359c : +080335dc : * @param hfdcan pointer to an FDCAN_HandleTypeDef structure that contains * the configuration information for the specified FDCAN. * @retval HAL status */ static HAL_StatusTypeDef FDCAN_CalcultateRamBlockAddresses(FDCAN_HandleTypeDef *hfdcan) { - 803359c: b480 push {r7} - 803359e: b085 sub sp, #20 - 80335a0: af00 add r7, sp, #0 - 80335a2: 6078 str r0, [r7, #4] + 80335dc: b480 push {r7} + 80335de: b085 sub sp, #20 + 80335e0: af00 add r7, sp, #0 + 80335e2: 6078 str r0, [r7, #4] uint32_t RAMcounter; uint32_t StartAddress; StartAddress = hfdcan->Init.MessageRAMOffset; - 80335a4: 687b ldr r3, [r7, #4] - 80335a6: 6b5b ldr r3, [r3, #52] ; 0x34 - 80335a8: 60bb str r3, [r7, #8] + 80335e4: 687b ldr r3, [r7, #4] + 80335e6: 6b5b ldr r3, [r3, #52] ; 0x34 + 80335e8: 60bb str r3, [r7, #8] /* Standard filter list start address */ MODIFY_REG(hfdcan->Instance->SIDFC, FDCAN_SIDFC_FLSSA, (StartAddress << FDCAN_SIDFC_FLSSA_Pos)); - 80335aa: 687b ldr r3, [r7, #4] - 80335ac: 681b ldr r3, [r3, #0] - 80335ae: f8d3 2084 ldr.w r2, [r3, #132] ; 0x84 - 80335b2: 4ba7 ldr r3, [pc, #668] ; (8033850 ) - 80335b4: 4013 ands r3, r2 - 80335b6: 68ba ldr r2, [r7, #8] - 80335b8: 0091 lsls r1, r2, #2 - 80335ba: 687a ldr r2, [r7, #4] - 80335bc: 6812 ldr r2, [r2, #0] - 80335be: 430b orrs r3, r1 - 80335c0: f8c2 3084 str.w r3, [r2, #132] ; 0x84 - - /* Standard filter elements number */ - MODIFY_REG(hfdcan->Instance->SIDFC, FDCAN_SIDFC_LSS, (hfdcan->Init.StdFiltersNbr << FDCAN_SIDFC_LSS_Pos)); - 80335c4: 687b ldr r3, [r7, #4] - 80335c6: 681b ldr r3, [r3, #0] - 80335c8: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 80335cc: f423 017f bic.w r1, r3, #16711680 ; 0xff0000 - 80335d0: 687b ldr r3, [r7, #4] - 80335d2: 6b9b ldr r3, [r3, #56] ; 0x38 - 80335d4: 041a lsls r2, r3, #16 - 80335d6: 687b ldr r3, [r7, #4] - 80335d8: 681b ldr r3, [r3, #0] - 80335da: 430a orrs r2, r1 - 80335dc: f8c3 2084 str.w r2, [r3, #132] ; 0x84 - - /* Extended filter list start address */ - StartAddress += hfdcan->Init.StdFiltersNbr; - 80335e0: 687b ldr r3, [r7, #4] - 80335e2: 6b9b ldr r3, [r3, #56] ; 0x38 - 80335e4: 68ba ldr r2, [r7, #8] - 80335e6: 4413 add r3, r2 - 80335e8: 60bb str r3, [r7, #8] - MODIFY_REG(hfdcan->Instance->XIDFC, FDCAN_XIDFC_FLESA, (StartAddress << FDCAN_XIDFC_FLESA_Pos)); 80335ea: 687b ldr r3, [r7, #4] 80335ec: 681b ldr r3, [r3, #0] - 80335ee: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 80335f2: 4b97 ldr r3, [pc, #604] ; (8033850 ) + 80335ee: f8d3 2084 ldr.w r2, [r3, #132] ; 0x84 + 80335f2: 4ba7 ldr r3, [pc, #668] ; (8033890 ) 80335f4: 4013 ands r3, r2 80335f6: 68ba ldr r2, [r7, #8] 80335f8: 0091 lsls r1, r2, #2 80335fa: 687a ldr r2, [r7, #4] 80335fc: 6812 ldr r2, [r2, #0] 80335fe: 430b orrs r3, r1 - 8033600: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + 8033600: f8c2 3084 str.w r3, [r2, #132] ; 0x84 - /* Extended filter elements number */ - MODIFY_REG(hfdcan->Instance->XIDFC, FDCAN_XIDFC_LSE, (hfdcan->Init.ExtFiltersNbr << FDCAN_XIDFC_LSE_Pos)); + /* Standard filter elements number */ + MODIFY_REG(hfdcan->Instance->SIDFC, FDCAN_SIDFC_LSS, (hfdcan->Init.StdFiltersNbr << FDCAN_SIDFC_LSS_Pos)); 8033604: 687b ldr r3, [r7, #4] 8033606: 681b ldr r3, [r3, #0] - 8033608: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803360c: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 + 8033608: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803360c: f423 017f bic.w r1, r3, #16711680 ; 0xff0000 8033610: 687b ldr r3, [r7, #4] - 8033612: 6bdb ldr r3, [r3, #60] ; 0x3c + 8033612: 6b9b ldr r3, [r3, #56] ; 0x38 8033614: 041a lsls r2, r3, #16 8033616: 687b ldr r3, [r7, #4] 8033618: 681b ldr r3, [r3, #0] 803361a: 430a orrs r2, r1 - 803361c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803361c: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + + /* Extended filter list start address */ + StartAddress += hfdcan->Init.StdFiltersNbr; + 8033620: 687b ldr r3, [r7, #4] + 8033622: 6b9b ldr r3, [r3, #56] ; 0x38 + 8033624: 68ba ldr r2, [r7, #8] + 8033626: 4413 add r3, r2 + 8033628: 60bb str r3, [r7, #8] + MODIFY_REG(hfdcan->Instance->XIDFC, FDCAN_XIDFC_FLESA, (StartAddress << FDCAN_XIDFC_FLESA_Pos)); + 803362a: 687b ldr r3, [r7, #4] + 803362c: 681b ldr r3, [r3, #0] + 803362e: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 8033632: 4b97 ldr r3, [pc, #604] ; (8033890 ) + 8033634: 4013 ands r3, r2 + 8033636: 68ba ldr r2, [r7, #8] + 8033638: 0091 lsls r1, r2, #2 + 803363a: 687a ldr r2, [r7, #4] + 803363c: 6812 ldr r2, [r2, #0] + 803363e: 430b orrs r3, r1 + 8033640: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + + /* Extended filter elements number */ + MODIFY_REG(hfdcan->Instance->XIDFC, FDCAN_XIDFC_LSE, (hfdcan->Init.ExtFiltersNbr << FDCAN_XIDFC_LSE_Pos)); + 8033644: 687b ldr r3, [r7, #4] + 8033646: 681b ldr r3, [r3, #0] + 8033648: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803364c: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 + 8033650: 687b ldr r3, [r7, #4] + 8033652: 6bdb ldr r3, [r3, #60] ; 0x3c + 8033654: 041a lsls r2, r3, #16 + 8033656: 687b ldr r3, [r7, #4] + 8033658: 681b ldr r3, [r3, #0] + 803365a: 430a orrs r2, r1 + 803365c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Rx FIFO 0 start address */ StartAddress += (hfdcan->Init.ExtFiltersNbr * 2U); - 8033620: 687b ldr r3, [r7, #4] - 8033622: 6bdb ldr r3, [r3, #60] ; 0x3c - 8033624: 005b lsls r3, r3, #1 - 8033626: 68ba ldr r2, [r7, #8] - 8033628: 4413 add r3, r2 - 803362a: 60bb str r3, [r7, #8] + 8033660: 687b ldr r3, [r7, #4] + 8033662: 6bdb ldr r3, [r3, #60] ; 0x3c + 8033664: 005b lsls r3, r3, #1 + 8033666: 68ba ldr r2, [r7, #8] + 8033668: 4413 add r3, r2 + 803366a: 60bb str r3, [r7, #8] MODIFY_REG(hfdcan->Instance->RXF0C, FDCAN_RXF0C_F0SA, (StartAddress << FDCAN_RXF0C_F0SA_Pos)); - 803362c: 687b ldr r3, [r7, #4] - 803362e: 681b ldr r3, [r3, #0] - 8033630: f8d3 20a0 ldr.w r2, [r3, #160] ; 0xa0 - 8033634: 4b86 ldr r3, [pc, #536] ; (8033850 ) - 8033636: 4013 ands r3, r2 - 8033638: 68ba ldr r2, [r7, #8] - 803363a: 0091 lsls r1, r2, #2 - 803363c: 687a ldr r2, [r7, #4] - 803363e: 6812 ldr r2, [r2, #0] - 8033640: 430b orrs r3, r1 - 8033642: f8c2 30a0 str.w r3, [r2, #160] ; 0xa0 + 803366c: 687b ldr r3, [r7, #4] + 803366e: 681b ldr r3, [r3, #0] + 8033670: f8d3 20a0 ldr.w r2, [r3, #160] ; 0xa0 + 8033674: 4b86 ldr r3, [pc, #536] ; (8033890 ) + 8033676: 4013 ands r3, r2 + 8033678: 68ba ldr r2, [r7, #8] + 803367a: 0091 lsls r1, r2, #2 + 803367c: 687a ldr r2, [r7, #4] + 803367e: 6812 ldr r2, [r2, #0] + 8033680: 430b orrs r3, r1 + 8033682: f8c2 30a0 str.w r3, [r2, #160] ; 0xa0 /* Rx FIFO 0 elements number */ MODIFY_REG(hfdcan->Instance->RXF0C, FDCAN_RXF0C_F0S, (hfdcan->Init.RxFifo0ElmtsNbr << FDCAN_RXF0C_F0S_Pos)); - 8033646: 687b ldr r3, [r7, #4] - 8033648: 681b ldr r3, [r3, #0] - 803364a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 803364e: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 - 8033652: 687b ldr r3, [r7, #4] - 8033654: 6c1b ldr r3, [r3, #64] ; 0x40 - 8033656: 041a lsls r2, r3, #16 - 8033658: 687b ldr r3, [r7, #4] - 803365a: 681b ldr r3, [r3, #0] - 803365c: 430a orrs r2, r1 - 803365e: f8c3 20a0 str.w r2, [r3, #160] ; 0xa0 + 8033686: 687b ldr r3, [r7, #4] + 8033688: 681b ldr r3, [r3, #0] + 803368a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 803368e: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 + 8033692: 687b ldr r3, [r7, #4] + 8033694: 6c1b ldr r3, [r3, #64] ; 0x40 + 8033696: 041a lsls r2, r3, #16 + 8033698: 687b ldr r3, [r7, #4] + 803369a: 681b ldr r3, [r3, #0] + 803369c: 430a orrs r2, r1 + 803369e: f8c3 20a0 str.w r2, [r3, #160] ; 0xa0 /* Rx FIFO 1 start address */ StartAddress += (hfdcan->Init.RxFifo0ElmtsNbr * hfdcan->Init.RxFifo0ElmtSize); - 8033662: 687b ldr r3, [r7, #4] - 8033664: 6c1b ldr r3, [r3, #64] ; 0x40 - 8033666: 687a ldr r2, [r7, #4] - 8033668: 6c52 ldr r2, [r2, #68] ; 0x44 - 803366a: fb02 f303 mul.w r3, r2, r3 - 803366e: 68ba ldr r2, [r7, #8] - 8033670: 4413 add r3, r2 - 8033672: 60bb str r3, [r7, #8] + 80336a2: 687b ldr r3, [r7, #4] + 80336a4: 6c1b ldr r3, [r3, #64] ; 0x40 + 80336a6: 687a ldr r2, [r7, #4] + 80336a8: 6c52 ldr r2, [r2, #68] ; 0x44 + 80336aa: fb02 f303 mul.w r3, r2, r3 + 80336ae: 68ba ldr r2, [r7, #8] + 80336b0: 4413 add r3, r2 + 80336b2: 60bb str r3, [r7, #8] MODIFY_REG(hfdcan->Instance->RXF1C, FDCAN_RXF1C_F1SA, (StartAddress << FDCAN_RXF1C_F1SA_Pos)); - 8033674: 687b ldr r3, [r7, #4] - 8033676: 681b ldr r3, [r3, #0] - 8033678: f8d3 20b0 ldr.w r2, [r3, #176] ; 0xb0 - 803367c: 4b74 ldr r3, [pc, #464] ; (8033850 ) - 803367e: 4013 ands r3, r2 - 8033680: 68ba ldr r2, [r7, #8] - 8033682: 0091 lsls r1, r2, #2 - 8033684: 687a ldr r2, [r7, #4] - 8033686: 6812 ldr r2, [r2, #0] - 8033688: 430b orrs r3, r1 - 803368a: f8c2 30b0 str.w r3, [r2, #176] ; 0xb0 + 80336b4: 687b ldr r3, [r7, #4] + 80336b6: 681b ldr r3, [r3, #0] + 80336b8: f8d3 20b0 ldr.w r2, [r3, #176] ; 0xb0 + 80336bc: 4b74 ldr r3, [pc, #464] ; (8033890 ) + 80336be: 4013 ands r3, r2 + 80336c0: 68ba ldr r2, [r7, #8] + 80336c2: 0091 lsls r1, r2, #2 + 80336c4: 687a ldr r2, [r7, #4] + 80336c6: 6812 ldr r2, [r2, #0] + 80336c8: 430b orrs r3, r1 + 80336ca: f8c2 30b0 str.w r3, [r2, #176] ; 0xb0 /* Rx FIFO 1 elements number */ MODIFY_REG(hfdcan->Instance->RXF1C, FDCAN_RXF1C_F1S, (hfdcan->Init.RxFifo1ElmtsNbr << FDCAN_RXF1C_F1S_Pos)); - 803368e: 687b ldr r3, [r7, #4] - 8033690: 681b ldr r3, [r3, #0] - 8033692: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8033696: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 - 803369a: 687b ldr r3, [r7, #4] - 803369c: 6c9b ldr r3, [r3, #72] ; 0x48 - 803369e: 041a lsls r2, r3, #16 - 80336a0: 687b ldr r3, [r7, #4] - 80336a2: 681b ldr r3, [r3, #0] - 80336a4: 430a orrs r2, r1 - 80336a6: f8c3 20b0 str.w r2, [r3, #176] ; 0xb0 + 80336ce: 687b ldr r3, [r7, #4] + 80336d0: 681b ldr r3, [r3, #0] + 80336d2: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 80336d6: f423 01fe bic.w r1, r3, #8323072 ; 0x7f0000 + 80336da: 687b ldr r3, [r7, #4] + 80336dc: 6c9b ldr r3, [r3, #72] ; 0x48 + 80336de: 041a lsls r2, r3, #16 + 80336e0: 687b ldr r3, [r7, #4] + 80336e2: 681b ldr r3, [r3, #0] + 80336e4: 430a orrs r2, r1 + 80336e6: f8c3 20b0 str.w r2, [r3, #176] ; 0xb0 /* Rx buffer list start address */ StartAddress += (hfdcan->Init.RxFifo1ElmtsNbr * hfdcan->Init.RxFifo1ElmtSize); - 80336aa: 687b ldr r3, [r7, #4] - 80336ac: 6c9b ldr r3, [r3, #72] ; 0x48 - 80336ae: 687a ldr r2, [r7, #4] - 80336b0: 6cd2 ldr r2, [r2, #76] ; 0x4c - 80336b2: fb02 f303 mul.w r3, r2, r3 - 80336b6: 68ba ldr r2, [r7, #8] - 80336b8: 4413 add r3, r2 - 80336ba: 60bb str r3, [r7, #8] + 80336ea: 687b ldr r3, [r7, #4] + 80336ec: 6c9b ldr r3, [r3, #72] ; 0x48 + 80336ee: 687a ldr r2, [r7, #4] + 80336f0: 6cd2 ldr r2, [r2, #76] ; 0x4c + 80336f2: fb02 f303 mul.w r3, r2, r3 + 80336f6: 68ba ldr r2, [r7, #8] + 80336f8: 4413 add r3, r2 + 80336fa: 60bb str r3, [r7, #8] MODIFY_REG(hfdcan->Instance->RXBC, FDCAN_RXBC_RBSA, (StartAddress << FDCAN_RXBC_RBSA_Pos)); - 80336bc: 687b ldr r3, [r7, #4] - 80336be: 681b ldr r3, [r3, #0] - 80336c0: f8d3 20ac ldr.w r2, [r3, #172] ; 0xac - 80336c4: 4b62 ldr r3, [pc, #392] ; (8033850 ) - 80336c6: 4013 ands r3, r2 - 80336c8: 68ba ldr r2, [r7, #8] - 80336ca: 0091 lsls r1, r2, #2 - 80336cc: 687a ldr r2, [r7, #4] - 80336ce: 6812 ldr r2, [r2, #0] - 80336d0: 430b orrs r3, r1 - 80336d2: f8c2 30ac str.w r3, [r2, #172] ; 0xac + 80336fc: 687b ldr r3, [r7, #4] + 80336fe: 681b ldr r3, [r3, #0] + 8033700: f8d3 20ac ldr.w r2, [r3, #172] ; 0xac + 8033704: 4b62 ldr r3, [pc, #392] ; (8033890 ) + 8033706: 4013 ands r3, r2 + 8033708: 68ba ldr r2, [r7, #8] + 803370a: 0091 lsls r1, r2, #2 + 803370c: 687a ldr r2, [r7, #4] + 803370e: 6812 ldr r2, [r2, #0] + 8033710: 430b orrs r3, r1 + 8033712: f8c2 30ac str.w r3, [r2, #172] ; 0xac /* Tx event FIFO start address */ StartAddress += (hfdcan->Init.RxBuffersNbr * hfdcan->Init.RxBufferSize); - 80336d6: 687b ldr r3, [r7, #4] - 80336d8: 6d1b ldr r3, [r3, #80] ; 0x50 - 80336da: 687a ldr r2, [r7, #4] - 80336dc: 6d52 ldr r2, [r2, #84] ; 0x54 - 80336de: fb02 f303 mul.w r3, r2, r3 - 80336e2: 68ba ldr r2, [r7, #8] - 80336e4: 4413 add r3, r2 - 80336e6: 60bb str r3, [r7, #8] + 8033716: 687b ldr r3, [r7, #4] + 8033718: 6d1b ldr r3, [r3, #80] ; 0x50 + 803371a: 687a ldr r2, [r7, #4] + 803371c: 6d52 ldr r2, [r2, #84] ; 0x54 + 803371e: fb02 f303 mul.w r3, r2, r3 + 8033722: 68ba ldr r2, [r7, #8] + 8033724: 4413 add r3, r2 + 8033726: 60bb str r3, [r7, #8] MODIFY_REG(hfdcan->Instance->TXEFC, FDCAN_TXEFC_EFSA, (StartAddress << FDCAN_TXEFC_EFSA_Pos)); - 80336e8: 687b ldr r3, [r7, #4] - 80336ea: 681b ldr r3, [r3, #0] - 80336ec: f8d3 20f0 ldr.w r2, [r3, #240] ; 0xf0 - 80336f0: 4b57 ldr r3, [pc, #348] ; (8033850 ) - 80336f2: 4013 ands r3, r2 - 80336f4: 68ba ldr r2, [r7, #8] - 80336f6: 0091 lsls r1, r2, #2 - 80336f8: 687a ldr r2, [r7, #4] - 80336fa: 6812 ldr r2, [r2, #0] - 80336fc: 430b orrs r3, r1 - 80336fe: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 + 8033728: 687b ldr r3, [r7, #4] + 803372a: 681b ldr r3, [r3, #0] + 803372c: f8d3 20f0 ldr.w r2, [r3, #240] ; 0xf0 + 8033730: 4b57 ldr r3, [pc, #348] ; (8033890 ) + 8033732: 4013 ands r3, r2 + 8033734: 68ba ldr r2, [r7, #8] + 8033736: 0091 lsls r1, r2, #2 + 8033738: 687a ldr r2, [r7, #4] + 803373a: 6812 ldr r2, [r2, #0] + 803373c: 430b orrs r3, r1 + 803373e: f8c2 30f0 str.w r3, [r2, #240] ; 0xf0 /* Tx event FIFO elements number */ MODIFY_REG(hfdcan->Instance->TXEFC, FDCAN_TXEFC_EFS, (hfdcan->Init.TxEventsNbr << FDCAN_TXEFC_EFS_Pos)); - 8033702: 687b ldr r3, [r7, #4] - 8033704: 681b ldr r3, [r3, #0] - 8033706: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 - 803370a: f423 117c bic.w r1, r3, #4128768 ; 0x3f0000 - 803370e: 687b ldr r3, [r7, #4] - 8033710: 6d9b ldr r3, [r3, #88] ; 0x58 - 8033712: 041a lsls r2, r3, #16 - 8033714: 687b ldr r3, [r7, #4] - 8033716: 681b ldr r3, [r3, #0] - 8033718: 430a orrs r2, r1 - 803371a: f8c3 20f0 str.w r2, [r3, #240] ; 0xf0 + 8033742: 687b ldr r3, [r7, #4] + 8033744: 681b ldr r3, [r3, #0] + 8033746: f8d3 30f0 ldr.w r3, [r3, #240] ; 0xf0 + 803374a: f423 117c bic.w r1, r3, #4128768 ; 0x3f0000 + 803374e: 687b ldr r3, [r7, #4] + 8033750: 6d9b ldr r3, [r3, #88] ; 0x58 + 8033752: 041a lsls r2, r3, #16 + 8033754: 687b ldr r3, [r7, #4] + 8033756: 681b ldr r3, [r3, #0] + 8033758: 430a orrs r2, r1 + 803375a: f8c3 20f0 str.w r2, [r3, #240] ; 0xf0 /* Tx buffer list start address */ StartAddress += (hfdcan->Init.TxEventsNbr * 2U); - 803371e: 687b ldr r3, [r7, #4] - 8033720: 6d9b ldr r3, [r3, #88] ; 0x58 - 8033722: 005b lsls r3, r3, #1 - 8033724: 68ba ldr r2, [r7, #8] - 8033726: 4413 add r3, r2 - 8033728: 60bb str r3, [r7, #8] + 803375e: 687b ldr r3, [r7, #4] + 8033760: 6d9b ldr r3, [r3, #88] ; 0x58 + 8033762: 005b lsls r3, r3, #1 + 8033764: 68ba ldr r2, [r7, #8] + 8033766: 4413 add r3, r2 + 8033768: 60bb str r3, [r7, #8] MODIFY_REG(hfdcan->Instance->TXBC, FDCAN_TXBC_TBSA, (StartAddress << FDCAN_TXBC_TBSA_Pos)); - 803372a: 687b ldr r3, [r7, #4] - 803372c: 681b ldr r3, [r3, #0] - 803372e: f8d3 20c0 ldr.w r2, [r3, #192] ; 0xc0 - 8033732: 4b47 ldr r3, [pc, #284] ; (8033850 ) - 8033734: 4013 ands r3, r2 - 8033736: 68ba ldr r2, [r7, #8] - 8033738: 0091 lsls r1, r2, #2 - 803373a: 687a ldr r2, [r7, #4] - 803373c: 6812 ldr r2, [r2, #0] - 803373e: 430b orrs r3, r1 - 8033740: f8c2 30c0 str.w r3, [r2, #192] ; 0xc0 + 803376a: 687b ldr r3, [r7, #4] + 803376c: 681b ldr r3, [r3, #0] + 803376e: f8d3 20c0 ldr.w r2, [r3, #192] ; 0xc0 + 8033772: 4b47 ldr r3, [pc, #284] ; (8033890 ) + 8033774: 4013 ands r3, r2 + 8033776: 68ba ldr r2, [r7, #8] + 8033778: 0091 lsls r1, r2, #2 + 803377a: 687a ldr r2, [r7, #4] + 803377c: 6812 ldr r2, [r2, #0] + 803377e: 430b orrs r3, r1 + 8033780: f8c2 30c0 str.w r3, [r2, #192] ; 0xc0 /* Dedicated Tx buffers number */ MODIFY_REG(hfdcan->Instance->TXBC, FDCAN_TXBC_NDTB, (hfdcan->Init.TxBuffersNbr << FDCAN_TXBC_NDTB_Pos)); - 8033744: 687b ldr r3, [r7, #4] - 8033746: 681b ldr r3, [r3, #0] - 8033748: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 - 803374c: f423 117c bic.w r1, r3, #4128768 ; 0x3f0000 - 8033750: 687b ldr r3, [r7, #4] - 8033752: 6ddb ldr r3, [r3, #92] ; 0x5c - 8033754: 041a lsls r2, r3, #16 - 8033756: 687b ldr r3, [r7, #4] - 8033758: 681b ldr r3, [r3, #0] - 803375a: 430a orrs r2, r1 - 803375c: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 + 8033784: 687b ldr r3, [r7, #4] + 8033786: 681b ldr r3, [r3, #0] + 8033788: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 + 803378c: f423 117c bic.w r1, r3, #4128768 ; 0x3f0000 + 8033790: 687b ldr r3, [r7, #4] + 8033792: 6ddb ldr r3, [r3, #92] ; 0x5c + 8033794: 041a lsls r2, r3, #16 + 8033796: 687b ldr r3, [r7, #4] + 8033798: 681b ldr r3, [r3, #0] + 803379a: 430a orrs r2, r1 + 803379c: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 /* Tx FIFO/queue elements number */ MODIFY_REG(hfdcan->Instance->TXBC, FDCAN_TXBC_TFQS, (hfdcan->Init.TxFifoQueueElmtsNbr << FDCAN_TXBC_TFQS_Pos)); - 8033760: 687b ldr r3, [r7, #4] - 8033762: 681b ldr r3, [r3, #0] - 8033764: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 - 8033768: f023 517c bic.w r1, r3, #1056964608 ; 0x3f000000 - 803376c: 687b ldr r3, [r7, #4] - 803376e: 6e1b ldr r3, [r3, #96] ; 0x60 - 8033770: 061a lsls r2, r3, #24 - 8033772: 687b ldr r3, [r7, #4] - 8033774: 681b ldr r3, [r3, #0] - 8033776: 430a orrs r2, r1 - 8033778: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 + 80337a0: 687b ldr r3, [r7, #4] + 80337a2: 681b ldr r3, [r3, #0] + 80337a4: f8d3 30c0 ldr.w r3, [r3, #192] ; 0xc0 + 80337a8: f023 517c bic.w r1, r3, #1056964608 ; 0x3f000000 + 80337ac: 687b ldr r3, [r7, #4] + 80337ae: 6e1b ldr r3, [r3, #96] ; 0x60 + 80337b0: 061a lsls r2, r3, #24 + 80337b2: 687b ldr r3, [r7, #4] + 80337b4: 681b ldr r3, [r3, #0] + 80337b6: 430a orrs r2, r1 + 80337b8: f8c3 20c0 str.w r2, [r3, #192] ; 0xc0 hfdcan->msgRam.StandardFilterSA = SRAMCAN_BASE + (hfdcan->Init.MessageRAMOffset * 4U); - 803377c: 687b ldr r3, [r7, #4] - 803377e: 6b5a ldr r2, [r3, #52] ; 0x34 - 8033780: 4b34 ldr r3, [pc, #208] ; (8033854 ) - 8033782: 4413 add r3, r2 - 8033784: 009a lsls r2, r3, #2 - 8033786: 687b ldr r3, [r7, #4] - 8033788: 66da str r2, [r3, #108] ; 0x6c - hfdcan->msgRam.ExtendedFilterSA = hfdcan->msgRam.StandardFilterSA + (hfdcan->Init.StdFiltersNbr * 4U); - 803378a: 687b ldr r3, [r7, #4] - 803378c: 6eda ldr r2, [r3, #108] ; 0x6c - 803378e: 687b ldr r3, [r7, #4] - 8033790: 6b9b ldr r3, [r3, #56] ; 0x38 - 8033792: 009b lsls r3, r3, #2 - 8033794: 441a add r2, r3 - 8033796: 687b ldr r3, [r7, #4] - 8033798: 671a str r2, [r3, #112] ; 0x70 - hfdcan->msgRam.RxFIFO0SA = hfdcan->msgRam.ExtendedFilterSA + (hfdcan->Init.ExtFiltersNbr * 2U * 4U); - 803379a: 687b ldr r3, [r7, #4] - 803379c: 6f1a ldr r2, [r3, #112] ; 0x70 - 803379e: 687b ldr r3, [r7, #4] - 80337a0: 6bdb ldr r3, [r3, #60] ; 0x3c - 80337a2: 00db lsls r3, r3, #3 - 80337a4: 441a add r2, r3 - 80337a6: 687b ldr r3, [r7, #4] - 80337a8: 675a str r2, [r3, #116] ; 0x74 - hfdcan->msgRam.RxFIFO1SA = hfdcan->msgRam.RxFIFO0SA + (hfdcan->Init.RxFifo0ElmtsNbr * hfdcan->Init.RxFifo0ElmtSize * 4U); - 80337aa: 687b ldr r3, [r7, #4] - 80337ac: 6f5a ldr r2, [r3, #116] ; 0x74 - 80337ae: 687b ldr r3, [r7, #4] - 80337b0: 6c1b ldr r3, [r3, #64] ; 0x40 - 80337b2: 6879 ldr r1, [r7, #4] - 80337b4: 6c49 ldr r1, [r1, #68] ; 0x44 - 80337b6: fb01 f303 mul.w r3, r1, r3 - 80337ba: 009b lsls r3, r3, #2 - 80337bc: 441a add r2, r3 - 80337be: 687b ldr r3, [r7, #4] - 80337c0: 679a str r2, [r3, #120] ; 0x78 - hfdcan->msgRam.RxBufferSA = hfdcan->msgRam.RxFIFO1SA + (hfdcan->Init.RxFifo1ElmtsNbr * hfdcan->Init.RxFifo1ElmtSize * 4U); - 80337c2: 687b ldr r3, [r7, #4] - 80337c4: 6f9a ldr r2, [r3, #120] ; 0x78 + 80337bc: 687b ldr r3, [r7, #4] + 80337be: 6b5a ldr r2, [r3, #52] ; 0x34 + 80337c0: 4b34 ldr r3, [pc, #208] ; (8033894 ) + 80337c2: 4413 add r3, r2 + 80337c4: 009a lsls r2, r3, #2 80337c6: 687b ldr r3, [r7, #4] - 80337c8: 6c9b ldr r3, [r3, #72] ; 0x48 - 80337ca: 6879 ldr r1, [r7, #4] - 80337cc: 6cc9 ldr r1, [r1, #76] ; 0x4c - 80337ce: fb01 f303 mul.w r3, r1, r3 + 80337c8: 66da str r2, [r3, #108] ; 0x6c + hfdcan->msgRam.ExtendedFilterSA = hfdcan->msgRam.StandardFilterSA + (hfdcan->Init.StdFiltersNbr * 4U); + 80337ca: 687b ldr r3, [r7, #4] + 80337cc: 6eda ldr r2, [r3, #108] ; 0x6c + 80337ce: 687b ldr r3, [r7, #4] + 80337d0: 6b9b ldr r3, [r3, #56] ; 0x38 80337d2: 009b lsls r3, r3, #2 80337d4: 441a add r2, r3 80337d6: 687b ldr r3, [r7, #4] - 80337d8: 67da str r2, [r3, #124] ; 0x7c - hfdcan->msgRam.TxEventFIFOSA = hfdcan->msgRam.RxBufferSA + (hfdcan->Init.RxBuffersNbr * hfdcan->Init.RxBufferSize * 4U); + 80337d8: 671a str r2, [r3, #112] ; 0x70 + hfdcan->msgRam.RxFIFO0SA = hfdcan->msgRam.ExtendedFilterSA + (hfdcan->Init.ExtFiltersNbr * 2U * 4U); 80337da: 687b ldr r3, [r7, #4] - 80337dc: 6fda ldr r2, [r3, #124] ; 0x7c + 80337dc: 6f1a ldr r2, [r3, #112] ; 0x70 80337de: 687b ldr r3, [r7, #4] - 80337e0: 6d1b ldr r3, [r3, #80] ; 0x50 - 80337e2: 6879 ldr r1, [r7, #4] - 80337e4: 6d49 ldr r1, [r1, #84] ; 0x54 - 80337e6: fb01 f303 mul.w r3, r1, r3 - 80337ea: 009b lsls r3, r3, #2 - 80337ec: 441a add r2, r3 + 80337e0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80337e2: 00db lsls r3, r3, #3 + 80337e4: 441a add r2, r3 + 80337e6: 687b ldr r3, [r7, #4] + 80337e8: 675a str r2, [r3, #116] ; 0x74 + hfdcan->msgRam.RxFIFO1SA = hfdcan->msgRam.RxFIFO0SA + (hfdcan->Init.RxFifo0ElmtsNbr * hfdcan->Init.RxFifo0ElmtSize * 4U); + 80337ea: 687b ldr r3, [r7, #4] + 80337ec: 6f5a ldr r2, [r3, #116] ; 0x74 80337ee: 687b ldr r3, [r7, #4] - 80337f0: f8c3 2080 str.w r2, [r3, #128] ; 0x80 - hfdcan->msgRam.TxBufferSA = hfdcan->msgRam.TxEventFIFOSA + (hfdcan->Init.TxEventsNbr * 2U * 4U); - 80337f4: 687b ldr r3, [r7, #4] - 80337f6: f8d3 2080 ldr.w r2, [r3, #128] ; 0x80 - 80337fa: 687b ldr r3, [r7, #4] - 80337fc: 6d9b ldr r3, [r3, #88] ; 0x58 - 80337fe: 00db lsls r3, r3, #3 - 8033800: 441a add r2, r3 + 80337f0: 6c1b ldr r3, [r3, #64] ; 0x40 + 80337f2: 6879 ldr r1, [r7, #4] + 80337f4: 6c49 ldr r1, [r1, #68] ; 0x44 + 80337f6: fb01 f303 mul.w r3, r1, r3 + 80337fa: 009b lsls r3, r3, #2 + 80337fc: 441a add r2, r3 + 80337fe: 687b ldr r3, [r7, #4] + 8033800: 679a str r2, [r3, #120] ; 0x78 + hfdcan->msgRam.RxBufferSA = hfdcan->msgRam.RxFIFO1SA + (hfdcan->Init.RxFifo1ElmtsNbr * hfdcan->Init.RxFifo1ElmtSize * 4U); 8033802: 687b ldr r3, [r7, #4] - 8033804: f8c3 2084 str.w r2, [r3, #132] ; 0x84 - hfdcan->msgRam.TxFIFOQSA = hfdcan->msgRam.TxBufferSA + (hfdcan->Init.TxBuffersNbr * hfdcan->Init.TxElmtSize * 4U); - 8033808: 687b ldr r3, [r7, #4] - 803380a: f8d3 2084 ldr.w r2, [r3, #132] ; 0x84 - 803380e: 687b ldr r3, [r7, #4] - 8033810: 6ddb ldr r3, [r3, #92] ; 0x5c - 8033812: 6879 ldr r1, [r7, #4] - 8033814: 6e89 ldr r1, [r1, #104] ; 0x68 - 8033816: fb01 f303 mul.w r3, r1, r3 - 803381a: 009b lsls r3, r3, #2 - 803381c: 441a add r2, r3 + 8033804: 6f9a ldr r2, [r3, #120] ; 0x78 + 8033806: 687b ldr r3, [r7, #4] + 8033808: 6c9b ldr r3, [r3, #72] ; 0x48 + 803380a: 6879 ldr r1, [r7, #4] + 803380c: 6cc9 ldr r1, [r1, #76] ; 0x4c + 803380e: fb01 f303 mul.w r3, r1, r3 + 8033812: 009b lsls r3, r3, #2 + 8033814: 441a add r2, r3 + 8033816: 687b ldr r3, [r7, #4] + 8033818: 67da str r2, [r3, #124] ; 0x7c + hfdcan->msgRam.TxEventFIFOSA = hfdcan->msgRam.RxBufferSA + (hfdcan->Init.RxBuffersNbr * hfdcan->Init.RxBufferSize * 4U); + 803381a: 687b ldr r3, [r7, #4] + 803381c: 6fda ldr r2, [r3, #124] ; 0x7c 803381e: 687b ldr r3, [r7, #4] - 8033820: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 8033820: 6d1b ldr r3, [r3, #80] ; 0x50 + 8033822: 6879 ldr r1, [r7, #4] + 8033824: 6d49 ldr r1, [r1, #84] ; 0x54 + 8033826: fb01 f303 mul.w r3, r1, r3 + 803382a: 009b lsls r3, r3, #2 + 803382c: 441a add r2, r3 + 803382e: 687b ldr r3, [r7, #4] + 8033830: f8c3 2080 str.w r2, [r3, #128] ; 0x80 + hfdcan->msgRam.TxBufferSA = hfdcan->msgRam.TxEventFIFOSA + (hfdcan->Init.TxEventsNbr * 2U * 4U); + 8033834: 687b ldr r3, [r7, #4] + 8033836: f8d3 2080 ldr.w r2, [r3, #128] ; 0x80 + 803383a: 687b ldr r3, [r7, #4] + 803383c: 6d9b ldr r3, [r3, #88] ; 0x58 + 803383e: 00db lsls r3, r3, #3 + 8033840: 441a add r2, r3 + 8033842: 687b ldr r3, [r7, #4] + 8033844: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + hfdcan->msgRam.TxFIFOQSA = hfdcan->msgRam.TxBufferSA + (hfdcan->Init.TxBuffersNbr * hfdcan->Init.TxElmtSize * 4U); + 8033848: 687b ldr r3, [r7, #4] + 803384a: f8d3 2084 ldr.w r2, [r3, #132] ; 0x84 + 803384e: 687b ldr r3, [r7, #4] + 8033850: 6ddb ldr r3, [r3, #92] ; 0x5c + 8033852: 6879 ldr r1, [r7, #4] + 8033854: 6e89 ldr r1, [r1, #104] ; 0x68 + 8033856: fb01 f303 mul.w r3, r1, r3 + 803385a: 009b lsls r3, r3, #2 + 803385c: 441a add r2, r3 + 803385e: 687b ldr r3, [r7, #4] + 8033860: f8c3 2088 str.w r2, [r3, #136] ; 0x88 hfdcan->msgRam.EndAddress = hfdcan->msgRam.TxFIFOQSA + (hfdcan->Init.TxFifoQueueElmtsNbr * hfdcan->Init.TxElmtSize * 4U); - 8033824: 687b ldr r3, [r7, #4] - 8033826: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 - 803382a: 687b ldr r3, [r7, #4] - 803382c: 6e1b ldr r3, [r3, #96] ; 0x60 - 803382e: 6879 ldr r1, [r7, #4] - 8033830: 6e89 ldr r1, [r1, #104] ; 0x68 - 8033832: fb01 f303 mul.w r3, r1, r3 - 8033836: 009b lsls r3, r3, #2 - 8033838: 441a add r2, r3 - 803383a: 687b ldr r3, [r7, #4] - 803383c: f8c3 2090 str.w r2, [r3, #144] ; 0x90 + 8033864: 687b ldr r3, [r7, #4] + 8033866: f8d3 2088 ldr.w r2, [r3, #136] ; 0x88 + 803386a: 687b ldr r3, [r7, #4] + 803386c: 6e1b ldr r3, [r3, #96] ; 0x60 + 803386e: 6879 ldr r1, [r7, #4] + 8033870: 6e89 ldr r1, [r1, #104] ; 0x68 + 8033872: fb01 f303 mul.w r3, r1, r3 + 8033876: 009b lsls r3, r3, #2 + 8033878: 441a add r2, r3 + 803387a: 687b ldr r3, [r7, #4] + 803387c: f8c3 2090 str.w r2, [r3, #144] ; 0x90 if (hfdcan->msgRam.EndAddress > FDCAN_MESSAGE_RAM_END_ADDRESS) /* Last address of the Message RAM */ - 8033840: 687b ldr r3, [r7, #4] - 8033842: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8033846: 4a04 ldr r2, [pc, #16] ; (8033858 ) - 8033848: 4293 cmp r3, r2 - 803384a: d915 bls.n 8033878 - 803384c: e006 b.n 803385c - 803384e: bf00 nop - 8033850: ffff0003 .word 0xffff0003 - 8033854: 10002b00 .word 0x10002b00 - 8033858: 4000d3fc .word 0x4000d3fc + 8033880: 687b ldr r3, [r7, #4] + 8033882: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8033886: 4a04 ldr r2, [pc, #16] ; (8033898 ) + 8033888: 4293 cmp r3, r2 + 803388a: d915 bls.n 80338b8 + 803388c: e006 b.n 803389c + 803388e: bf00 nop + 8033890: ffff0003 .word 0xffff0003 + 8033894: 10002b00 .word 0x10002b00 + 8033898: 4000d3fc .word 0x4000d3fc { /* Update error code. Message RAM overflow */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_PARAM; - 803385c: 687b ldr r3, [r7, #4] - 803385e: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8033862: f043 0220 orr.w r2, r3, #32 - 8033866: 687b ldr r3, [r7, #4] - 8033868: f8c3 209c str.w r2, [r3, #156] ; 0x9c + 803389c: 687b ldr r3, [r7, #4] + 803389e: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 80338a2: f043 0220 orr.w r2, r3, #32 + 80338a6: 687b ldr r3, [r7, #4] + 80338a8: f8c3 209c str.w r2, [r3, #156] ; 0x9c /* Change FDCAN state */ hfdcan->State = HAL_FDCAN_STATE_ERROR; - 803386c: 687b ldr r3, [r7, #4] - 803386e: 2203 movs r2, #3 - 8033870: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 80338ac: 687b ldr r3, [r7, #4] + 80338ae: 2203 movs r2, #3 + 80338b0: f883 2098 strb.w r2, [r3, #152] ; 0x98 return HAL_ERROR; - 8033874: 2301 movs r3, #1 - 8033876: e010 b.n 803389a + 80338b4: 2301 movs r3, #1 + 80338b6: e010 b.n 80338da } else { /* Flush the allocated Message RAM area */ for (RAMcounter = hfdcan->msgRam.StandardFilterSA; RAMcounter < hfdcan->msgRam.EndAddress; RAMcounter += 4U) - 8033878: 687b ldr r3, [r7, #4] - 803387a: 6edb ldr r3, [r3, #108] ; 0x6c - 803387c: 60fb str r3, [r7, #12] - 803387e: e005 b.n 803388c + 80338b8: 687b ldr r3, [r7, #4] + 80338ba: 6edb ldr r3, [r3, #108] ; 0x6c + 80338bc: 60fb str r3, [r7, #12] + 80338be: e005 b.n 80338cc { *(uint32_t *)(RAMcounter) = 0x00000000; - 8033880: 68fb ldr r3, [r7, #12] - 8033882: 2200 movs r2, #0 - 8033884: 601a str r2, [r3, #0] + 80338c0: 68fb ldr r3, [r7, #12] + 80338c2: 2200 movs r2, #0 + 80338c4: 601a str r2, [r3, #0] for (RAMcounter = hfdcan->msgRam.StandardFilterSA; RAMcounter < hfdcan->msgRam.EndAddress; RAMcounter += 4U) - 8033886: 68fb ldr r3, [r7, #12] - 8033888: 3304 adds r3, #4 - 803388a: 60fb str r3, [r7, #12] - 803388c: 687b ldr r3, [r7, #4] - 803388e: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8033892: 68fa ldr r2, [r7, #12] - 8033894: 429a cmp r2, r3 - 8033896: d3f3 bcc.n 8033880 + 80338c6: 68fb ldr r3, [r7, #12] + 80338c8: 3304 adds r3, #4 + 80338ca: 60fb str r3, [r7, #12] + 80338cc: 687b ldr r3, [r7, #4] + 80338ce: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 80338d2: 68fa ldr r2, [r7, #12] + 80338d4: 429a cmp r2, r3 + 80338d6: d3f3 bcc.n 80338c0 } } /* Return function status */ return HAL_OK; - 8033898: 2300 movs r3, #0 + 80338d8: 2300 movs r3, #0 } - 803389a: 4618 mov r0, r3 - 803389c: 3714 adds r7, #20 - 803389e: 46bd mov sp, r7 - 80338a0: f85d 7b04 ldr.w r7, [sp], #4 - 80338a4: 4770 bx lr - 80338a6: bf00 nop + 80338da: 4618 mov r0, r3 + 80338dc: 3714 adds r7, #20 + 80338de: 46bd mov sp, r7 + 80338e0: f85d 7b04 ldr.w r7, [sp], #4 + 80338e4: 4770 bx lr + 80338e6: bf00 nop -080338a8 : +080338e8 : * @param GPIO_Init: pointer to a GPIO_InitTypeDef structure that contains * the configuration information for the specified GPIO peripheral. * @retval None */ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) { - 80338a8: b480 push {r7} - 80338aa: b089 sub sp, #36 ; 0x24 - 80338ac: af00 add r7, sp, #0 - 80338ae: 6078 str r0, [r7, #4] - 80338b0: 6039 str r1, [r7, #0] + 80338e8: b480 push {r7} + 80338ea: b089 sub sp, #36 ; 0x24 + 80338ec: af00 add r7, sp, #0 + 80338ee: 6078 str r0, [r7, #4] + 80338f0: 6039 str r1, [r7, #0] uint32_t position = 0x00U; - 80338b2: 2300 movs r3, #0 - 80338b4: 61fb str r3, [r7, #28] + 80338f2: 2300 movs r3, #0 + 80338f4: 61fb str r3, [r7, #28] EXTI_Core_TypeDef *EXTI_CurrentCPU; #if defined(DUAL_CORE) && defined(CORE_CM4) EXTI_CurrentCPU = EXTI_D2; /* EXTI for CM4 CPU */ #else EXTI_CurrentCPU = EXTI_D1; /* EXTI for CM7 CPU */ - 80338b6: 4b89 ldr r3, [pc, #548] ; (8033adc ) - 80338b8: 617b str r3, [r7, #20] + 80338f6: 4b89 ldr r3, [pc, #548] ; (8033b1c ) + 80338f8: 617b str r3, [r7, #20] assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); assert_param(IS_GPIO_PIN(GPIO_Init->Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00U) - 80338ba: e194 b.n 8033be6 + 80338fa: e194 b.n 8033c26 { /* Get current io position */ iocurrent = (GPIO_Init->Pin) & (1UL << position); - 80338bc: 683b ldr r3, [r7, #0] - 80338be: 681a ldr r2, [r3, #0] - 80338c0: 2101 movs r1, #1 - 80338c2: 69fb ldr r3, [r7, #28] - 80338c4: fa01 f303 lsl.w r3, r1, r3 - 80338c8: 4013 ands r3, r2 - 80338ca: 613b str r3, [r7, #16] + 80338fc: 683b ldr r3, [r7, #0] + 80338fe: 681a ldr r2, [r3, #0] + 8033900: 2101 movs r1, #1 + 8033902: 69fb ldr r3, [r7, #28] + 8033904: fa01 f303 lsl.w r3, r1, r3 + 8033908: 4013 ands r3, r2 + 803390a: 613b str r3, [r7, #16] if (iocurrent != 0x00U) - 80338cc: 693b ldr r3, [r7, #16] - 80338ce: 2b00 cmp r3, #0 - 80338d0: f000 8186 beq.w 8033be0 + 803390c: 693b ldr r3, [r7, #16] + 803390e: 2b00 cmp r3, #0 + 8033910: f000 8186 beq.w 8033c20 { /*--------------------- GPIO Mode Configuration ------------------------*/ /* In case of Output or Alternate function mode selection */ if (((GPIO_Init->Mode & GPIO_MODE) == MODE_OUTPUT) || ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF)) - 80338d4: 683b ldr r3, [r7, #0] - 80338d6: 685b ldr r3, [r3, #4] - 80338d8: f003 0303 and.w r3, r3, #3 - 80338dc: 2b01 cmp r3, #1 - 80338de: d005 beq.n 80338ec - 80338e0: 683b ldr r3, [r7, #0] - 80338e2: 685b ldr r3, [r3, #4] - 80338e4: f003 0303 and.w r3, r3, #3 - 80338e8: 2b02 cmp r3, #2 - 80338ea: d130 bne.n 803394e + 8033914: 683b ldr r3, [r7, #0] + 8033916: 685b ldr r3, [r3, #4] + 8033918: f003 0303 and.w r3, r3, #3 + 803391c: 2b01 cmp r3, #1 + 803391e: d005 beq.n 803392c + 8033920: 683b ldr r3, [r7, #0] + 8033922: 685b ldr r3, [r3, #4] + 8033924: f003 0303 and.w r3, r3, #3 + 8033928: 2b02 cmp r3, #2 + 803392a: d130 bne.n 803398e { /* Check the Speed parameter */ assert_param(IS_GPIO_SPEED(GPIO_Init->Speed)); /* Configure the IO Speed */ temp = GPIOx->OSPEEDR; - 80338ec: 687b ldr r3, [r7, #4] - 80338ee: 689b ldr r3, [r3, #8] - 80338f0: 61bb str r3, [r7, #24] + 803392c: 687b ldr r3, [r7, #4] + 803392e: 689b ldr r3, [r3, #8] + 8033930: 61bb str r3, [r7, #24] temp &= ~(GPIO_OSPEEDR_OSPEED0 << (position * 2U)); - 80338f2: 69fb ldr r3, [r7, #28] - 80338f4: 005b lsls r3, r3, #1 - 80338f6: 2203 movs r2, #3 - 80338f8: fa02 f303 lsl.w r3, r2, r3 - 80338fc: 43db mvns r3, r3 - 80338fe: 69ba ldr r2, [r7, #24] - 8033900: 4013 ands r3, r2 - 8033902: 61bb str r3, [r7, #24] + 8033932: 69fb ldr r3, [r7, #28] + 8033934: 005b lsls r3, r3, #1 + 8033936: 2203 movs r2, #3 + 8033938: fa02 f303 lsl.w r3, r2, r3 + 803393c: 43db mvns r3, r3 + 803393e: 69ba ldr r2, [r7, #24] + 8033940: 4013 ands r3, r2 + 8033942: 61bb str r3, [r7, #24] temp |= (GPIO_Init->Speed << (position * 2U)); - 8033904: 683b ldr r3, [r7, #0] - 8033906: 68da ldr r2, [r3, #12] - 8033908: 69fb ldr r3, [r7, #28] - 803390a: 005b lsls r3, r3, #1 - 803390c: fa02 f303 lsl.w r3, r2, r3 - 8033910: 69ba ldr r2, [r7, #24] - 8033912: 4313 orrs r3, r2 - 8033914: 61bb str r3, [r7, #24] + 8033944: 683b ldr r3, [r7, #0] + 8033946: 68da ldr r2, [r3, #12] + 8033948: 69fb ldr r3, [r7, #28] + 803394a: 005b lsls r3, r3, #1 + 803394c: fa02 f303 lsl.w r3, r2, r3 + 8033950: 69ba ldr r2, [r7, #24] + 8033952: 4313 orrs r3, r2 + 8033954: 61bb str r3, [r7, #24] GPIOx->OSPEEDR = temp; - 8033916: 687b ldr r3, [r7, #4] - 8033918: 69ba ldr r2, [r7, #24] - 803391a: 609a str r2, [r3, #8] + 8033956: 687b ldr r3, [r7, #4] + 8033958: 69ba ldr r2, [r7, #24] + 803395a: 609a str r2, [r3, #8] /* Configure the IO Output Type */ temp = GPIOx->OTYPER; - 803391c: 687b ldr r3, [r7, #4] - 803391e: 685b ldr r3, [r3, #4] - 8033920: 61bb str r3, [r7, #24] + 803395c: 687b ldr r3, [r7, #4] + 803395e: 685b ldr r3, [r3, #4] + 8033960: 61bb str r3, [r7, #24] temp &= ~(GPIO_OTYPER_OT0 << position) ; - 8033922: 2201 movs r2, #1 - 8033924: 69fb ldr r3, [r7, #28] - 8033926: fa02 f303 lsl.w r3, r2, r3 - 803392a: 43db mvns r3, r3 - 803392c: 69ba ldr r2, [r7, #24] - 803392e: 4013 ands r3, r2 - 8033930: 61bb str r3, [r7, #24] + 8033962: 2201 movs r2, #1 + 8033964: 69fb ldr r3, [r7, #28] + 8033966: fa02 f303 lsl.w r3, r2, r3 + 803396a: 43db mvns r3, r3 + 803396c: 69ba ldr r2, [r7, #24] + 803396e: 4013 ands r3, r2 + 8033970: 61bb str r3, [r7, #24] temp |= (((GPIO_Init->Mode & OUTPUT_TYPE) >> OUTPUT_TYPE_Pos) << position); - 8033932: 683b ldr r3, [r7, #0] - 8033934: 685b ldr r3, [r3, #4] - 8033936: 091b lsrs r3, r3, #4 - 8033938: f003 0201 and.w r2, r3, #1 - 803393c: 69fb ldr r3, [r7, #28] - 803393e: fa02 f303 lsl.w r3, r2, r3 - 8033942: 69ba ldr r2, [r7, #24] - 8033944: 4313 orrs r3, r2 - 8033946: 61bb str r3, [r7, #24] + 8033972: 683b ldr r3, [r7, #0] + 8033974: 685b ldr r3, [r3, #4] + 8033976: 091b lsrs r3, r3, #4 + 8033978: f003 0201 and.w r2, r3, #1 + 803397c: 69fb ldr r3, [r7, #28] + 803397e: fa02 f303 lsl.w r3, r2, r3 + 8033982: 69ba ldr r2, [r7, #24] + 8033984: 4313 orrs r3, r2 + 8033986: 61bb str r3, [r7, #24] GPIOx->OTYPER = temp; - 8033948: 687b ldr r3, [r7, #4] - 803394a: 69ba ldr r2, [r7, #24] - 803394c: 605a str r2, [r3, #4] + 8033988: 687b ldr r3, [r7, #4] + 803398a: 69ba ldr r2, [r7, #24] + 803398c: 605a str r2, [r3, #4] } if ((GPIO_Init->Mode & GPIO_MODE) != MODE_ANALOG) - 803394e: 683b ldr r3, [r7, #0] - 8033950: 685b ldr r3, [r3, #4] - 8033952: f003 0303 and.w r3, r3, #3 - 8033956: 2b03 cmp r3, #3 - 8033958: d017 beq.n 803398a + 803398e: 683b ldr r3, [r7, #0] + 8033990: 685b ldr r3, [r3, #4] + 8033992: f003 0303 and.w r3, r3, #3 + 8033996: 2b03 cmp r3, #3 + 8033998: d017 beq.n 80339ca { /* Check the Pull parameter */ assert_param(IS_GPIO_PULL(GPIO_Init->Pull)); /* Activate the Pull-up or Pull down resistor for the current IO */ temp = GPIOx->PUPDR; - 803395a: 687b ldr r3, [r7, #4] - 803395c: 68db ldr r3, [r3, #12] - 803395e: 61bb str r3, [r7, #24] + 803399a: 687b ldr r3, [r7, #4] + 803399c: 68db ldr r3, [r3, #12] + 803399e: 61bb str r3, [r7, #24] temp &= ~(GPIO_PUPDR_PUPD0 << (position * 2U)); - 8033960: 69fb ldr r3, [r7, #28] - 8033962: 005b lsls r3, r3, #1 - 8033964: 2203 movs r2, #3 - 8033966: fa02 f303 lsl.w r3, r2, r3 - 803396a: 43db mvns r3, r3 - 803396c: 69ba ldr r2, [r7, #24] - 803396e: 4013 ands r3, r2 - 8033970: 61bb str r3, [r7, #24] + 80339a0: 69fb ldr r3, [r7, #28] + 80339a2: 005b lsls r3, r3, #1 + 80339a4: 2203 movs r2, #3 + 80339a6: fa02 f303 lsl.w r3, r2, r3 + 80339aa: 43db mvns r3, r3 + 80339ac: 69ba ldr r2, [r7, #24] + 80339ae: 4013 ands r3, r2 + 80339b0: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Pull) << (position * 2U)); - 8033972: 683b ldr r3, [r7, #0] - 8033974: 689a ldr r2, [r3, #8] - 8033976: 69fb ldr r3, [r7, #28] - 8033978: 005b lsls r3, r3, #1 - 803397a: fa02 f303 lsl.w r3, r2, r3 - 803397e: 69ba ldr r2, [r7, #24] - 8033980: 4313 orrs r3, r2 - 8033982: 61bb str r3, [r7, #24] + 80339b2: 683b ldr r3, [r7, #0] + 80339b4: 689a ldr r2, [r3, #8] + 80339b6: 69fb ldr r3, [r7, #28] + 80339b8: 005b lsls r3, r3, #1 + 80339ba: fa02 f303 lsl.w r3, r2, r3 + 80339be: 69ba ldr r2, [r7, #24] + 80339c0: 4313 orrs r3, r2 + 80339c2: 61bb str r3, [r7, #24] GPIOx->PUPDR = temp; - 8033984: 687b ldr r3, [r7, #4] - 8033986: 69ba ldr r2, [r7, #24] - 8033988: 60da str r2, [r3, #12] + 80339c4: 687b ldr r3, [r7, #4] + 80339c6: 69ba ldr r2, [r7, #24] + 80339c8: 60da str r2, [r3, #12] } /* In case of Alternate function mode selection */ if ((GPIO_Init->Mode & GPIO_MODE) == MODE_AF) - 803398a: 683b ldr r3, [r7, #0] - 803398c: 685b ldr r3, [r3, #4] - 803398e: f003 0303 and.w r3, r3, #3 - 8033992: 2b02 cmp r3, #2 - 8033994: d123 bne.n 80339de + 80339ca: 683b ldr r3, [r7, #0] + 80339cc: 685b ldr r3, [r3, #4] + 80339ce: f003 0303 and.w r3, r3, #3 + 80339d2: 2b02 cmp r3, #2 + 80339d4: d123 bne.n 8033a1e /* Check the Alternate function parameters */ assert_param(IS_GPIO_AF_INSTANCE(GPIOx)); assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); /* Configure Alternate function mapped with the current IO */ temp = GPIOx->AFR[position >> 3U]; - 8033996: 69fb ldr r3, [r7, #28] - 8033998: 08da lsrs r2, r3, #3 - 803399a: 687b ldr r3, [r7, #4] - 803399c: 3208 adds r2, #8 - 803399e: f853 3022 ldr.w r3, [r3, r2, lsl #2] - 80339a2: 61bb str r3, [r7, #24] + 80339d6: 69fb ldr r3, [r7, #28] + 80339d8: 08da lsrs r2, r3, #3 + 80339da: 687b ldr r3, [r7, #4] + 80339dc: 3208 adds r2, #8 + 80339de: f853 3022 ldr.w r3, [r3, r2, lsl #2] + 80339e2: 61bb str r3, [r7, #24] temp &= ~(0xFU << ((position & 0x07U) * 4U)); - 80339a4: 69fb ldr r3, [r7, #28] - 80339a6: f003 0307 and.w r3, r3, #7 - 80339aa: 009b lsls r3, r3, #2 - 80339ac: 220f movs r2, #15 - 80339ae: fa02 f303 lsl.w r3, r2, r3 - 80339b2: 43db mvns r3, r3 - 80339b4: 69ba ldr r2, [r7, #24] - 80339b6: 4013 ands r3, r2 - 80339b8: 61bb str r3, [r7, #24] + 80339e4: 69fb ldr r3, [r7, #28] + 80339e6: f003 0307 and.w r3, r3, #7 + 80339ea: 009b lsls r3, r3, #2 + 80339ec: 220f movs r2, #15 + 80339ee: fa02 f303 lsl.w r3, r2, r3 + 80339f2: 43db mvns r3, r3 + 80339f4: 69ba ldr r2, [r7, #24] + 80339f6: 4013 ands r3, r2 + 80339f8: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Alternate) << ((position & 0x07U) * 4U)); - 80339ba: 683b ldr r3, [r7, #0] - 80339bc: 691a ldr r2, [r3, #16] - 80339be: 69fb ldr r3, [r7, #28] - 80339c0: f003 0307 and.w r3, r3, #7 - 80339c4: 009b lsls r3, r3, #2 - 80339c6: fa02 f303 lsl.w r3, r2, r3 - 80339ca: 69ba ldr r2, [r7, #24] - 80339cc: 4313 orrs r3, r2 - 80339ce: 61bb str r3, [r7, #24] + 80339fa: 683b ldr r3, [r7, #0] + 80339fc: 691a ldr r2, [r3, #16] + 80339fe: 69fb ldr r3, [r7, #28] + 8033a00: f003 0307 and.w r3, r3, #7 + 8033a04: 009b lsls r3, r3, #2 + 8033a06: fa02 f303 lsl.w r3, r2, r3 + 8033a0a: 69ba ldr r2, [r7, #24] + 8033a0c: 4313 orrs r3, r2 + 8033a0e: 61bb str r3, [r7, #24] GPIOx->AFR[position >> 3U] = temp; - 80339d0: 69fb ldr r3, [r7, #28] - 80339d2: 08da lsrs r2, r3, #3 - 80339d4: 687b ldr r3, [r7, #4] - 80339d6: 3208 adds r2, #8 - 80339d8: 69b9 ldr r1, [r7, #24] - 80339da: f843 1022 str.w r1, [r3, r2, lsl #2] + 8033a10: 69fb ldr r3, [r7, #28] + 8033a12: 08da lsrs r2, r3, #3 + 8033a14: 687b ldr r3, [r7, #4] + 8033a16: 3208 adds r2, #8 + 8033a18: 69b9 ldr r1, [r7, #24] + 8033a1a: f843 1022 str.w r1, [r3, r2, lsl #2] } /* Configure IO Direction mode (Input, Output, Alternate or Analog) */ temp = GPIOx->MODER; - 80339de: 687b ldr r3, [r7, #4] - 80339e0: 681b ldr r3, [r3, #0] - 80339e2: 61bb str r3, [r7, #24] + 8033a1e: 687b ldr r3, [r7, #4] + 8033a20: 681b ldr r3, [r3, #0] + 8033a22: 61bb str r3, [r7, #24] temp &= ~(GPIO_MODER_MODE0 << (position * 2U)); - 80339e4: 69fb ldr r3, [r7, #28] - 80339e6: 005b lsls r3, r3, #1 - 80339e8: 2203 movs r2, #3 - 80339ea: fa02 f303 lsl.w r3, r2, r3 - 80339ee: 43db mvns r3, r3 - 80339f0: 69ba ldr r2, [r7, #24] - 80339f2: 4013 ands r3, r2 - 80339f4: 61bb str r3, [r7, #24] + 8033a24: 69fb ldr r3, [r7, #28] + 8033a26: 005b lsls r3, r3, #1 + 8033a28: 2203 movs r2, #3 + 8033a2a: fa02 f303 lsl.w r3, r2, r3 + 8033a2e: 43db mvns r3, r3 + 8033a30: 69ba ldr r2, [r7, #24] + 8033a32: 4013 ands r3, r2 + 8033a34: 61bb str r3, [r7, #24] temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2U)); - 80339f6: 683b ldr r3, [r7, #0] - 80339f8: 685b ldr r3, [r3, #4] - 80339fa: f003 0203 and.w r2, r3, #3 - 80339fe: 69fb ldr r3, [r7, #28] - 8033a00: 005b lsls r3, r3, #1 - 8033a02: fa02 f303 lsl.w r3, r2, r3 - 8033a06: 69ba ldr r2, [r7, #24] - 8033a08: 4313 orrs r3, r2 - 8033a0a: 61bb str r3, [r7, #24] + 8033a36: 683b ldr r3, [r7, #0] + 8033a38: 685b ldr r3, [r3, #4] + 8033a3a: f003 0203 and.w r2, r3, #3 + 8033a3e: 69fb ldr r3, [r7, #28] + 8033a40: 005b lsls r3, r3, #1 + 8033a42: fa02 f303 lsl.w r3, r2, r3 + 8033a46: 69ba ldr r2, [r7, #24] + 8033a48: 4313 orrs r3, r2 + 8033a4a: 61bb str r3, [r7, #24] GPIOx->MODER = temp; - 8033a0c: 687b ldr r3, [r7, #4] - 8033a0e: 69ba ldr r2, [r7, #24] - 8033a10: 601a str r2, [r3, #0] + 8033a4c: 687b ldr r3, [r7, #4] + 8033a4e: 69ba ldr r2, [r7, #24] + 8033a50: 601a str r2, [r3, #0] /*--------------------- EXTI Mode Configuration ------------------------*/ /* Configure the External Interrupt or event for the current IO */ if ((GPIO_Init->Mode & EXTI_MODE) != 0x00U) - 8033a12: 683b ldr r3, [r7, #0] - 8033a14: 685b ldr r3, [r3, #4] - 8033a16: f403 3340 and.w r3, r3, #196608 ; 0x30000 - 8033a1a: 2b00 cmp r3, #0 - 8033a1c: f000 80e0 beq.w 8033be0 + 8033a52: 683b ldr r3, [r7, #0] + 8033a54: 685b ldr r3, [r3, #4] + 8033a56: f403 3340 and.w r3, r3, #196608 ; 0x30000 + 8033a5a: 2b00 cmp r3, #0 + 8033a5c: f000 80e0 beq.w 8033c20 { /* Enable SYSCFG Clock */ __HAL_RCC_SYSCFG_CLK_ENABLE(); - 8033a20: 4b2f ldr r3, [pc, #188] ; (8033ae0 ) - 8033a22: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 8033a26: 4a2e ldr r2, [pc, #184] ; (8033ae0 ) - 8033a28: f043 0302 orr.w r3, r3, #2 - 8033a2c: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 - 8033a30: 4b2b ldr r3, [pc, #172] ; (8033ae0 ) - 8033a32: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 - 8033a36: f003 0302 and.w r3, r3, #2 - 8033a3a: 60fb str r3, [r7, #12] - 8033a3c: 68fb ldr r3, [r7, #12] + 8033a60: 4b2f ldr r3, [pc, #188] ; (8033b20 ) + 8033a62: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 8033a66: 4a2e ldr r2, [pc, #184] ; (8033b20 ) + 8033a68: f043 0302 orr.w r3, r3, #2 + 8033a6c: f8c2 30f4 str.w r3, [r2, #244] ; 0xf4 + 8033a70: 4b2b ldr r3, [pc, #172] ; (8033b20 ) + 8033a72: f8d3 30f4 ldr.w r3, [r3, #244] ; 0xf4 + 8033a76: f003 0302 and.w r3, r3, #2 + 8033a7a: 60fb str r3, [r7, #12] + 8033a7c: 68fb ldr r3, [r7, #12] temp = SYSCFG->EXTICR[position >> 2U]; - 8033a3e: 4a29 ldr r2, [pc, #164] ; (8033ae4 ) - 8033a40: 69fb ldr r3, [r7, #28] - 8033a42: 089b lsrs r3, r3, #2 - 8033a44: 3302 adds r3, #2 - 8033a46: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 8033a4a: 61bb str r3, [r7, #24] + 8033a7e: 4a29 ldr r2, [pc, #164] ; (8033b24 ) + 8033a80: 69fb ldr r3, [r7, #28] + 8033a82: 089b lsrs r3, r3, #2 + 8033a84: 3302 adds r3, #2 + 8033a86: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8033a8a: 61bb str r3, [r7, #24] temp &= ~(0x0FUL << (4U * (position & 0x03U))); - 8033a4c: 69fb ldr r3, [r7, #28] - 8033a4e: f003 0303 and.w r3, r3, #3 - 8033a52: 009b lsls r3, r3, #2 - 8033a54: 220f movs r2, #15 - 8033a56: fa02 f303 lsl.w r3, r2, r3 - 8033a5a: 43db mvns r3, r3 - 8033a5c: 69ba ldr r2, [r7, #24] - 8033a5e: 4013 ands r3, r2 - 8033a60: 61bb str r3, [r7, #24] + 8033a8c: 69fb ldr r3, [r7, #28] + 8033a8e: f003 0303 and.w r3, r3, #3 + 8033a92: 009b lsls r3, r3, #2 + 8033a94: 220f movs r2, #15 + 8033a96: fa02 f303 lsl.w r3, r2, r3 + 8033a9a: 43db mvns r3, r3 + 8033a9c: 69ba ldr r2, [r7, #24] + 8033a9e: 4013 ands r3, r2 + 8033aa0: 61bb str r3, [r7, #24] temp |= (GPIO_GET_INDEX(GPIOx) << (4U * (position & 0x03U))); - 8033a62: 687b ldr r3, [r7, #4] - 8033a64: 4a20 ldr r2, [pc, #128] ; (8033ae8 ) - 8033a66: 4293 cmp r3, r2 - 8033a68: d052 beq.n 8033b10 - 8033a6a: 687b ldr r3, [r7, #4] - 8033a6c: 4a1f ldr r2, [pc, #124] ; (8033aec ) - 8033a6e: 4293 cmp r3, r2 - 8033a70: d031 beq.n 8033ad6 - 8033a72: 687b ldr r3, [r7, #4] - 8033a74: 4a1e ldr r2, [pc, #120] ; (8033af0 ) - 8033a76: 4293 cmp r3, r2 - 8033a78: d02b beq.n 8033ad2 - 8033a7a: 687b ldr r3, [r7, #4] - 8033a7c: 4a1d ldr r2, [pc, #116] ; (8033af4 ) - 8033a7e: 4293 cmp r3, r2 - 8033a80: d025 beq.n 8033ace - 8033a82: 687b ldr r3, [r7, #4] - 8033a84: 4a1c ldr r2, [pc, #112] ; (8033af8 ) - 8033a86: 4293 cmp r3, r2 - 8033a88: d01f beq.n 8033aca - 8033a8a: 687b ldr r3, [r7, #4] - 8033a8c: 4a1b ldr r2, [pc, #108] ; (8033afc ) - 8033a8e: 4293 cmp r3, r2 - 8033a90: d019 beq.n 8033ac6 - 8033a92: 687b ldr r3, [r7, #4] - 8033a94: 4a1a ldr r2, [pc, #104] ; (8033b00 ) - 8033a96: 4293 cmp r3, r2 - 8033a98: d013 beq.n 8033ac2 - 8033a9a: 687b ldr r3, [r7, #4] - 8033a9c: 4a19 ldr r2, [pc, #100] ; (8033b04 ) - 8033a9e: 4293 cmp r3, r2 - 8033aa0: d00d beq.n 8033abe 8033aa2: 687b ldr r3, [r7, #4] - 8033aa4: 4a18 ldr r2, [pc, #96] ; (8033b08 ) + 8033aa4: 4a20 ldr r2, [pc, #128] ; (8033b28 ) 8033aa6: 4293 cmp r3, r2 - 8033aa8: d007 beq.n 8033aba + 8033aa8: d052 beq.n 8033b50 8033aaa: 687b ldr r3, [r7, #4] - 8033aac: 4a17 ldr r2, [pc, #92] ; (8033b0c ) + 8033aac: 4a1f ldr r2, [pc, #124] ; (8033b2c ) 8033aae: 4293 cmp r3, r2 - 8033ab0: d101 bne.n 8033ab6 - 8033ab2: 2309 movs r3, #9 - 8033ab4: e02d b.n 8033b12 - 8033ab6: 230a movs r3, #10 - 8033ab8: e02b b.n 8033b12 - 8033aba: 2308 movs r3, #8 - 8033abc: e029 b.n 8033b12 - 8033abe: 2307 movs r3, #7 - 8033ac0: e027 b.n 8033b12 - 8033ac2: 2306 movs r3, #6 - 8033ac4: e025 b.n 8033b12 - 8033ac6: 2305 movs r3, #5 - 8033ac8: e023 b.n 8033b12 - 8033aca: 2304 movs r3, #4 - 8033acc: e021 b.n 8033b12 - 8033ace: 2303 movs r3, #3 - 8033ad0: e01f b.n 8033b12 - 8033ad2: 2302 movs r3, #2 - 8033ad4: e01d b.n 8033b12 - 8033ad6: 2301 movs r3, #1 - 8033ad8: e01b b.n 8033b12 - 8033ada: bf00 nop - 8033adc: 58000080 .word 0x58000080 - 8033ae0: 58024400 .word 0x58024400 - 8033ae4: 58000400 .word 0x58000400 - 8033ae8: 58020000 .word 0x58020000 - 8033aec: 58020400 .word 0x58020400 - 8033af0: 58020800 .word 0x58020800 - 8033af4: 58020c00 .word 0x58020c00 - 8033af8: 58021000 .word 0x58021000 - 8033afc: 58021400 .word 0x58021400 - 8033b00: 58021800 .word 0x58021800 - 8033b04: 58021c00 .word 0x58021c00 - 8033b08: 58022000 .word 0x58022000 - 8033b0c: 58022400 .word 0x58022400 - 8033b10: 2300 movs r3, #0 - 8033b12: 69fa ldr r2, [r7, #28] - 8033b14: f002 0203 and.w r2, r2, #3 - 8033b18: 0092 lsls r2, r2, #2 - 8033b1a: 4093 lsls r3, r2 - 8033b1c: 69ba ldr r2, [r7, #24] - 8033b1e: 4313 orrs r3, r2 - 8033b20: 61bb str r3, [r7, #24] + 8033ab0: d031 beq.n 8033b16 + 8033ab2: 687b ldr r3, [r7, #4] + 8033ab4: 4a1e ldr r2, [pc, #120] ; (8033b30 ) + 8033ab6: 4293 cmp r3, r2 + 8033ab8: d02b beq.n 8033b12 + 8033aba: 687b ldr r3, [r7, #4] + 8033abc: 4a1d ldr r2, [pc, #116] ; (8033b34 ) + 8033abe: 4293 cmp r3, r2 + 8033ac0: d025 beq.n 8033b0e + 8033ac2: 687b ldr r3, [r7, #4] + 8033ac4: 4a1c ldr r2, [pc, #112] ; (8033b38 ) + 8033ac6: 4293 cmp r3, r2 + 8033ac8: d01f beq.n 8033b0a + 8033aca: 687b ldr r3, [r7, #4] + 8033acc: 4a1b ldr r2, [pc, #108] ; (8033b3c ) + 8033ace: 4293 cmp r3, r2 + 8033ad0: d019 beq.n 8033b06 + 8033ad2: 687b ldr r3, [r7, #4] + 8033ad4: 4a1a ldr r2, [pc, #104] ; (8033b40 ) + 8033ad6: 4293 cmp r3, r2 + 8033ad8: d013 beq.n 8033b02 + 8033ada: 687b ldr r3, [r7, #4] + 8033adc: 4a19 ldr r2, [pc, #100] ; (8033b44 ) + 8033ade: 4293 cmp r3, r2 + 8033ae0: d00d beq.n 8033afe + 8033ae2: 687b ldr r3, [r7, #4] + 8033ae4: 4a18 ldr r2, [pc, #96] ; (8033b48 ) + 8033ae6: 4293 cmp r3, r2 + 8033ae8: d007 beq.n 8033afa + 8033aea: 687b ldr r3, [r7, #4] + 8033aec: 4a17 ldr r2, [pc, #92] ; (8033b4c ) + 8033aee: 4293 cmp r3, r2 + 8033af0: d101 bne.n 8033af6 + 8033af2: 2309 movs r3, #9 + 8033af4: e02d b.n 8033b52 + 8033af6: 230a movs r3, #10 + 8033af8: e02b b.n 8033b52 + 8033afa: 2308 movs r3, #8 + 8033afc: e029 b.n 8033b52 + 8033afe: 2307 movs r3, #7 + 8033b00: e027 b.n 8033b52 + 8033b02: 2306 movs r3, #6 + 8033b04: e025 b.n 8033b52 + 8033b06: 2305 movs r3, #5 + 8033b08: e023 b.n 8033b52 + 8033b0a: 2304 movs r3, #4 + 8033b0c: e021 b.n 8033b52 + 8033b0e: 2303 movs r3, #3 + 8033b10: e01f b.n 8033b52 + 8033b12: 2302 movs r3, #2 + 8033b14: e01d b.n 8033b52 + 8033b16: 2301 movs r3, #1 + 8033b18: e01b b.n 8033b52 + 8033b1a: bf00 nop + 8033b1c: 58000080 .word 0x58000080 + 8033b20: 58024400 .word 0x58024400 + 8033b24: 58000400 .word 0x58000400 + 8033b28: 58020000 .word 0x58020000 + 8033b2c: 58020400 .word 0x58020400 + 8033b30: 58020800 .word 0x58020800 + 8033b34: 58020c00 .word 0x58020c00 + 8033b38: 58021000 .word 0x58021000 + 8033b3c: 58021400 .word 0x58021400 + 8033b40: 58021800 .word 0x58021800 + 8033b44: 58021c00 .word 0x58021c00 + 8033b48: 58022000 .word 0x58022000 + 8033b4c: 58022400 .word 0x58022400 + 8033b50: 2300 movs r3, #0 + 8033b52: 69fa ldr r2, [r7, #28] + 8033b54: f002 0203 and.w r2, r2, #3 + 8033b58: 0092 lsls r2, r2, #2 + 8033b5a: 4093 lsls r3, r2 + 8033b5c: 69ba ldr r2, [r7, #24] + 8033b5e: 4313 orrs r3, r2 + 8033b60: 61bb str r3, [r7, #24] SYSCFG->EXTICR[position >> 2U] = temp; - 8033b22: 4938 ldr r1, [pc, #224] ; (8033c04 ) - 8033b24: 69fb ldr r3, [r7, #28] - 8033b26: 089b lsrs r3, r3, #2 - 8033b28: 3302 adds r3, #2 - 8033b2a: 69ba ldr r2, [r7, #24] - 8033b2c: f841 2023 str.w r2, [r1, r3, lsl #2] + 8033b62: 4938 ldr r1, [pc, #224] ; (8033c44 ) + 8033b64: 69fb ldr r3, [r7, #28] + 8033b66: 089b lsrs r3, r3, #2 + 8033b68: 3302 adds r3, #2 + 8033b6a: 69ba ldr r2, [r7, #24] + 8033b6c: f841 2023 str.w r2, [r1, r3, lsl #2] /* Clear Rising Falling edge configuration */ temp = EXTI->RTSR1; - 8033b30: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8033b34: 681b ldr r3, [r3, #0] - 8033b36: 61bb str r3, [r7, #24] + 8033b70: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8033b74: 681b ldr r3, [r3, #0] + 8033b76: 61bb str r3, [r7, #24] temp &= ~(iocurrent); - 8033b38: 693b ldr r3, [r7, #16] - 8033b3a: 43db mvns r3, r3 - 8033b3c: 69ba ldr r2, [r7, #24] - 8033b3e: 4013 ands r3, r2 - 8033b40: 61bb str r3, [r7, #24] + 8033b78: 693b ldr r3, [r7, #16] + 8033b7a: 43db mvns r3, r3 + 8033b7c: 69ba ldr r2, [r7, #24] + 8033b7e: 4013 ands r3, r2 + 8033b80: 61bb str r3, [r7, #24] if ((GPIO_Init->Mode & TRIGGER_RISING) != 0x00U) - 8033b42: 683b ldr r3, [r7, #0] - 8033b44: 685b ldr r3, [r3, #4] - 8033b46: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 8033b4a: 2b00 cmp r3, #0 - 8033b4c: d003 beq.n 8033b56 + 8033b82: 683b ldr r3, [r7, #0] + 8033b84: 685b ldr r3, [r3, #4] + 8033b86: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 8033b8a: 2b00 cmp r3, #0 + 8033b8c: d003 beq.n 8033b96 { temp |= iocurrent; - 8033b4e: 69ba ldr r2, [r7, #24] - 8033b50: 693b ldr r3, [r7, #16] - 8033b52: 4313 orrs r3, r2 - 8033b54: 61bb str r3, [r7, #24] + 8033b8e: 69ba ldr r2, [r7, #24] + 8033b90: 693b ldr r3, [r7, #16] + 8033b92: 4313 orrs r3, r2 + 8033b94: 61bb str r3, [r7, #24] } EXTI->RTSR1 = temp; - 8033b56: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8033b5a: 69bb ldr r3, [r7, #24] - 8033b5c: 6013 str r3, [r2, #0] + 8033b96: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8033b9a: 69bb ldr r3, [r7, #24] + 8033b9c: 6013 str r3, [r2, #0] temp = EXTI->FTSR1; - 8033b5e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 - 8033b62: 685b ldr r3, [r3, #4] - 8033b64: 61bb str r3, [r7, #24] + 8033b9e: f04f 43b0 mov.w r3, #1476395008 ; 0x58000000 + 8033ba2: 685b ldr r3, [r3, #4] + 8033ba4: 61bb str r3, [r7, #24] temp &= ~(iocurrent); - 8033b66: 693b ldr r3, [r7, #16] - 8033b68: 43db mvns r3, r3 - 8033b6a: 69ba ldr r2, [r7, #24] - 8033b6c: 4013 ands r3, r2 - 8033b6e: 61bb str r3, [r7, #24] + 8033ba6: 693b ldr r3, [r7, #16] + 8033ba8: 43db mvns r3, r3 + 8033baa: 69ba ldr r2, [r7, #24] + 8033bac: 4013 ands r3, r2 + 8033bae: 61bb str r3, [r7, #24] if ((GPIO_Init->Mode & TRIGGER_FALLING) != 0x00U) - 8033b70: 683b ldr r3, [r7, #0] - 8033b72: 685b ldr r3, [r3, #4] - 8033b74: f403 1300 and.w r3, r3, #2097152 ; 0x200000 - 8033b78: 2b00 cmp r3, #0 - 8033b7a: d003 beq.n 8033b84 + 8033bb0: 683b ldr r3, [r7, #0] + 8033bb2: 685b ldr r3, [r3, #4] + 8033bb4: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 8033bb8: 2b00 cmp r3, #0 + 8033bba: d003 beq.n 8033bc4 { temp |= iocurrent; - 8033b7c: 69ba ldr r2, [r7, #24] - 8033b7e: 693b ldr r3, [r7, #16] - 8033b80: 4313 orrs r3, r2 - 8033b82: 61bb str r3, [r7, #24] + 8033bbc: 69ba ldr r2, [r7, #24] + 8033bbe: 693b ldr r3, [r7, #16] + 8033bc0: 4313 orrs r3, r2 + 8033bc2: 61bb str r3, [r7, #24] } EXTI->FTSR1 = temp; - 8033b84: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 - 8033b88: 69bb ldr r3, [r7, #24] - 8033b8a: 6053 str r3, [r2, #4] + 8033bc4: f04f 42b0 mov.w r2, #1476395008 ; 0x58000000 + 8033bc8: 69bb ldr r3, [r7, #24] + 8033bca: 6053 str r3, [r2, #4] temp = EXTI_CurrentCPU->EMR1; - 8033b8c: 697b ldr r3, [r7, #20] - 8033b8e: 685b ldr r3, [r3, #4] - 8033b90: 61bb str r3, [r7, #24] + 8033bcc: 697b ldr r3, [r7, #20] + 8033bce: 685b ldr r3, [r3, #4] + 8033bd0: 61bb str r3, [r7, #24] temp &= ~(iocurrent); - 8033b92: 693b ldr r3, [r7, #16] - 8033b94: 43db mvns r3, r3 - 8033b96: 69ba ldr r2, [r7, #24] - 8033b98: 4013 ands r3, r2 - 8033b9a: 61bb str r3, [r7, #24] + 8033bd2: 693b ldr r3, [r7, #16] + 8033bd4: 43db mvns r3, r3 + 8033bd6: 69ba ldr r2, [r7, #24] + 8033bd8: 4013 ands r3, r2 + 8033bda: 61bb str r3, [r7, #24] if ((GPIO_Init->Mode & EXTI_EVT) != 0x00U) - 8033b9c: 683b ldr r3, [r7, #0] - 8033b9e: 685b ldr r3, [r3, #4] - 8033ba0: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8033ba4: 2b00 cmp r3, #0 - 8033ba6: d003 beq.n 8033bb0 + 8033bdc: 683b ldr r3, [r7, #0] + 8033bde: 685b ldr r3, [r3, #4] + 8033be0: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8033be4: 2b00 cmp r3, #0 + 8033be6: d003 beq.n 8033bf0 { temp |= iocurrent; - 8033ba8: 69ba ldr r2, [r7, #24] - 8033baa: 693b ldr r3, [r7, #16] - 8033bac: 4313 orrs r3, r2 - 8033bae: 61bb str r3, [r7, #24] + 8033be8: 69ba ldr r2, [r7, #24] + 8033bea: 693b ldr r3, [r7, #16] + 8033bec: 4313 orrs r3, r2 + 8033bee: 61bb str r3, [r7, #24] } EXTI_CurrentCPU->EMR1 = temp; - 8033bb0: 697b ldr r3, [r7, #20] - 8033bb2: 69ba ldr r2, [r7, #24] - 8033bb4: 605a str r2, [r3, #4] + 8033bf0: 697b ldr r3, [r7, #20] + 8033bf2: 69ba ldr r2, [r7, #24] + 8033bf4: 605a str r2, [r3, #4] /* Clear EXTI line configuration */ temp = EXTI_CurrentCPU->IMR1; - 8033bb6: 697b ldr r3, [r7, #20] - 8033bb8: 681b ldr r3, [r3, #0] - 8033bba: 61bb str r3, [r7, #24] + 8033bf6: 697b ldr r3, [r7, #20] + 8033bf8: 681b ldr r3, [r3, #0] + 8033bfa: 61bb str r3, [r7, #24] temp &= ~(iocurrent); - 8033bbc: 693b ldr r3, [r7, #16] - 8033bbe: 43db mvns r3, r3 - 8033bc0: 69ba ldr r2, [r7, #24] - 8033bc2: 4013 ands r3, r2 - 8033bc4: 61bb str r3, [r7, #24] + 8033bfc: 693b ldr r3, [r7, #16] + 8033bfe: 43db mvns r3, r3 + 8033c00: 69ba ldr r2, [r7, #24] + 8033c02: 4013 ands r3, r2 + 8033c04: 61bb str r3, [r7, #24] if ((GPIO_Init->Mode & EXTI_IT) != 0x00U) - 8033bc6: 683b ldr r3, [r7, #0] - 8033bc8: 685b ldr r3, [r3, #4] - 8033bca: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8033bce: 2b00 cmp r3, #0 - 8033bd0: d003 beq.n 8033bda + 8033c06: 683b ldr r3, [r7, #0] + 8033c08: 685b ldr r3, [r3, #4] + 8033c0a: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8033c0e: 2b00 cmp r3, #0 + 8033c10: d003 beq.n 8033c1a { temp |= iocurrent; - 8033bd2: 69ba ldr r2, [r7, #24] - 8033bd4: 693b ldr r3, [r7, #16] - 8033bd6: 4313 orrs r3, r2 - 8033bd8: 61bb str r3, [r7, #24] + 8033c12: 69ba ldr r2, [r7, #24] + 8033c14: 693b ldr r3, [r7, #16] + 8033c16: 4313 orrs r3, r2 + 8033c18: 61bb str r3, [r7, #24] } EXTI_CurrentCPU->IMR1 = temp; - 8033bda: 697b ldr r3, [r7, #20] - 8033bdc: 69ba ldr r2, [r7, #24] - 8033bde: 601a str r2, [r3, #0] + 8033c1a: 697b ldr r3, [r7, #20] + 8033c1c: 69ba ldr r2, [r7, #24] + 8033c1e: 601a str r2, [r3, #0] } } position++; - 8033be0: 69fb ldr r3, [r7, #28] - 8033be2: 3301 adds r3, #1 - 8033be4: 61fb str r3, [r7, #28] + 8033c20: 69fb ldr r3, [r7, #28] + 8033c22: 3301 adds r3, #1 + 8033c24: 61fb str r3, [r7, #28] while (((GPIO_Init->Pin) >> position) != 0x00U) - 8033be6: 683b ldr r3, [r7, #0] - 8033be8: 681a ldr r2, [r3, #0] - 8033bea: 69fb ldr r3, [r7, #28] - 8033bec: fa22 f303 lsr.w r3, r2, r3 - 8033bf0: 2b00 cmp r3, #0 - 8033bf2: f47f ae63 bne.w 80338bc - } -} - 8033bf6: bf00 nop - 8033bf8: bf00 nop - 8033bfa: 3724 adds r7, #36 ; 0x24 - 8033bfc: 46bd mov sp, r7 - 8033bfe: f85d 7b04 ldr.w r7, [sp], #4 - 8033c02: 4770 bx lr - 8033c04: 58000400 .word 0x58000400 - -08033c08 : + 8033c26: 683b ldr r3, [r7, #0] + 8033c28: 681a ldr r2, [r3, #0] + 8033c2a: 69fb ldr r3, [r7, #28] + 8033c2c: fa22 f303 lsr.w r3, r2, r3 + 8033c30: 2b00 cmp r3, #0 + 8033c32: f47f ae63 bne.w 80338fc + } +} + 8033c36: bf00 nop + 8033c38: bf00 nop + 8033c3a: 3724 adds r7, #36 ; 0x24 + 8033c3c: 46bd mov sp, r7 + 8033c3e: f85d 7b04 ldr.w r7, [sp], #4 + 8033c42: 4770 bx lr + 8033c44: 58000400 .word 0x58000400 + +08033c48 : * @arg GPIO_PIN_RESET: to clear the port pin * @arg GPIO_PIN_SET: to set the port pin * @retval None */ void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { - 8033c08: b480 push {r7} - 8033c0a: b083 sub sp, #12 - 8033c0c: af00 add r7, sp, #0 - 8033c0e: 6078 str r0, [r7, #4] - 8033c10: 460b mov r3, r1 - 8033c12: 807b strh r3, [r7, #2] - 8033c14: 4613 mov r3, r2 - 8033c16: 707b strb r3, [r7, #1] + 8033c48: b480 push {r7} + 8033c4a: b083 sub sp, #12 + 8033c4c: af00 add r7, sp, #0 + 8033c4e: 6078 str r0, [r7, #4] + 8033c50: 460b mov r3, r1 + 8033c52: 807b strh r3, [r7, #2] + 8033c54: 4613 mov r3, r2 + 8033c56: 707b strb r3, [r7, #1] /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if (PinState != GPIO_PIN_RESET) - 8033c18: 787b ldrb r3, [r7, #1] - 8033c1a: 2b00 cmp r3, #0 - 8033c1c: d003 beq.n 8033c26 + 8033c58: 787b ldrb r3, [r7, #1] + 8033c5a: 2b00 cmp r3, #0 + 8033c5c: d003 beq.n 8033c66 { GPIOx->BSRR = GPIO_Pin; - 8033c1e: 887a ldrh r2, [r7, #2] - 8033c20: 687b ldr r3, [r7, #4] - 8033c22: 619a str r2, [r3, #24] + 8033c5e: 887a ldrh r2, [r7, #2] + 8033c60: 687b ldr r3, [r7, #4] + 8033c62: 619a str r2, [r3, #24] } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER; } } - 8033c24: e003 b.n 8033c2e + 8033c64: e003 b.n 8033c6e GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER; - 8033c26: 887b ldrh r3, [r7, #2] - 8033c28: 041a lsls r2, r3, #16 - 8033c2a: 687b ldr r3, [r7, #4] - 8033c2c: 619a str r2, [r3, #24] -} - 8033c2e: bf00 nop - 8033c30: 370c adds r7, #12 - 8033c32: 46bd mov sp, r7 - 8033c34: f85d 7b04 ldr.w r7, [sp], #4 - 8033c38: 4770 bx lr + 8033c66: 887b ldrh r3, [r7, #2] + 8033c68: 041a lsls r2, r3, #16 + 8033c6a: 687b ldr r3, [r7, #4] + 8033c6c: 619a str r2, [r3, #24] +} + 8033c6e: bf00 nop + 8033c70: 370c adds r7, #12 + 8033c72: 46bd mov sp, r7 + 8033c74: f85d 7b04 ldr.w r7, [sp], #4 + 8033c78: 4770 bx lr ... -08033c3c : +08033c7c : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Init(I2C_HandleTypeDef *hi2c) { - 8033c3c: b580 push {r7, lr} - 8033c3e: b082 sub sp, #8 - 8033c40: af00 add r7, sp, #0 - 8033c42: 6078 str r0, [r7, #4] + 8033c7c: b580 push {r7, lr} + 8033c7e: b082 sub sp, #8 + 8033c80: af00 add r7, sp, #0 + 8033c82: 6078 str r0, [r7, #4] /* Check the I2C handle allocation */ if (hi2c == NULL) - 8033c44: 687b ldr r3, [r7, #4] - 8033c46: 2b00 cmp r3, #0 - 8033c48: d101 bne.n 8033c4e + 8033c84: 687b ldr r3, [r7, #4] + 8033c86: 2b00 cmp r3, #0 + 8033c88: d101 bne.n 8033c8e { return HAL_ERROR; - 8033c4a: 2301 movs r3, #1 - 8033c4c: e07f b.n 8033d4e + 8033c8a: 2301 movs r3, #1 + 8033c8c: e07f b.n 8033d8e assert_param(IS_I2C_OWN_ADDRESS2(hi2c->Init.OwnAddress2)); assert_param(IS_I2C_OWN_ADDRESS2_MASK(hi2c->Init.OwnAddress2Masks)); assert_param(IS_I2C_GENERAL_CALL(hi2c->Init.GeneralCallMode)); assert_param(IS_I2C_NO_STRETCH(hi2c->Init.NoStretchMode)); if (hi2c->State == HAL_I2C_STATE_RESET) - 8033c4e: 687b ldr r3, [r7, #4] - 8033c50: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8033c54: b2db uxtb r3, r3 - 8033c56: 2b00 cmp r3, #0 - 8033c58: d106 bne.n 8033c68 + 8033c8e: 687b ldr r3, [r7, #4] + 8033c90: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8033c94: b2db uxtb r3, r3 + 8033c96: 2b00 cmp r3, #0 + 8033c98: d106 bne.n 8033ca8 { /* Allocate lock resource and initialize it */ hi2c->Lock = HAL_UNLOCKED; - 8033c5a: 687b ldr r3, [r7, #4] - 8033c5c: 2200 movs r2, #0 - 8033c5e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8033c9a: 687b ldr r3, [r7, #4] + 8033c9c: 2200 movs r2, #0 + 8033c9e: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ hi2c->MspInitCallback(hi2c); #else /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */ HAL_I2C_MspInit(hi2c); - 8033c62: 6878 ldr r0, [r7, #4] - 8033c64: f7f6 ff02 bl 802aa6c + 8033ca2: 6878 ldr r0, [r7, #4] + 8033ca4: f7f6 ff02 bl 802aaac #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } hi2c->State = HAL_I2C_STATE_BUSY; - 8033c68: 687b ldr r3, [r7, #4] - 8033c6a: 2224 movs r2, #36 ; 0x24 - 8033c6c: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8033ca8: 687b ldr r3, [r7, #4] + 8033caa: 2224 movs r2, #36 ; 0x24 + 8033cac: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8033c70: 687b ldr r3, [r7, #4] - 8033c72: 681b ldr r3, [r3, #0] - 8033c74: 681a ldr r2, [r3, #0] - 8033c76: 687b ldr r3, [r7, #4] - 8033c78: 681b ldr r3, [r3, #0] - 8033c7a: f022 0201 bic.w r2, r2, #1 - 8033c7e: 601a str r2, [r3, #0] + 8033cb0: 687b ldr r3, [r7, #4] + 8033cb2: 681b ldr r3, [r3, #0] + 8033cb4: 681a ldr r2, [r3, #0] + 8033cb6: 687b ldr r3, [r7, #4] + 8033cb8: 681b ldr r3, [r3, #0] + 8033cba: f022 0201 bic.w r2, r2, #1 + 8033cbe: 601a str r2, [r3, #0] /*---------------------------- I2Cx TIMINGR Configuration ------------------*/ /* Configure I2Cx: Frequency range */ hi2c->Instance->TIMINGR = hi2c->Init.Timing & TIMING_CLEAR_MASK; - 8033c80: 687b ldr r3, [r7, #4] - 8033c82: 685a ldr r2, [r3, #4] - 8033c84: 687b ldr r3, [r7, #4] - 8033c86: 681b ldr r3, [r3, #0] - 8033c88: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 - 8033c8c: 611a str r2, [r3, #16] + 8033cc0: 687b ldr r3, [r7, #4] + 8033cc2: 685a ldr r2, [r3, #4] + 8033cc4: 687b ldr r3, [r7, #4] + 8033cc6: 681b ldr r3, [r3, #0] + 8033cc8: f022 6270 bic.w r2, r2, #251658240 ; 0xf000000 + 8033ccc: 611a str r2, [r3, #16] /*---------------------------- I2Cx OAR1 Configuration ---------------------*/ /* Disable Own Address1 before set the Own Address1 configuration */ hi2c->Instance->OAR1 &= ~I2C_OAR1_OA1EN; - 8033c8e: 687b ldr r3, [r7, #4] - 8033c90: 681b ldr r3, [r3, #0] - 8033c92: 689a ldr r2, [r3, #8] - 8033c94: 687b ldr r3, [r7, #4] - 8033c96: 681b ldr r3, [r3, #0] - 8033c98: f422 4200 bic.w r2, r2, #32768 ; 0x8000 - 8033c9c: 609a str r2, [r3, #8] + 8033cce: 687b ldr r3, [r7, #4] + 8033cd0: 681b ldr r3, [r3, #0] + 8033cd2: 689a ldr r2, [r3, #8] + 8033cd4: 687b ldr r3, [r7, #4] + 8033cd6: 681b ldr r3, [r3, #0] + 8033cd8: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8033cdc: 609a str r2, [r3, #8] /* Configure I2Cx: Own Address1 and ack own address1 mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_7BIT) - 8033c9e: 687b ldr r3, [r7, #4] - 8033ca0: 68db ldr r3, [r3, #12] - 8033ca2: 2b01 cmp r3, #1 - 8033ca4: d107 bne.n 8033cb6 + 8033cde: 687b ldr r3, [r7, #4] + 8033ce0: 68db ldr r3, [r3, #12] + 8033ce2: 2b01 cmp r3, #1 + 8033ce4: d107 bne.n 8033cf6 { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | hi2c->Init.OwnAddress1); - 8033ca6: 687b ldr r3, [r7, #4] - 8033ca8: 689a ldr r2, [r3, #8] - 8033caa: 687b ldr r3, [r7, #4] - 8033cac: 681b ldr r3, [r3, #0] - 8033cae: f442 4200 orr.w r2, r2, #32768 ; 0x8000 - 8033cb2: 609a str r2, [r3, #8] - 8033cb4: e006 b.n 8033cc4 + 8033ce6: 687b ldr r3, [r7, #4] + 8033ce8: 689a ldr r2, [r3, #8] + 8033cea: 687b ldr r3, [r7, #4] + 8033cec: 681b ldr r3, [r3, #0] + 8033cee: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 8033cf2: 609a str r2, [r3, #8] + 8033cf4: e006 b.n 8033d04 } else /* I2C_ADDRESSINGMODE_10BIT */ { hi2c->Instance->OAR1 = (I2C_OAR1_OA1EN | I2C_OAR1_OA1MODE | hi2c->Init.OwnAddress1); - 8033cb6: 687b ldr r3, [r7, #4] - 8033cb8: 689a ldr r2, [r3, #8] - 8033cba: 687b ldr r3, [r7, #4] - 8033cbc: 681b ldr r3, [r3, #0] - 8033cbe: f442 4204 orr.w r2, r2, #33792 ; 0x8400 - 8033cc2: 609a str r2, [r3, #8] + 8033cf6: 687b ldr r3, [r7, #4] + 8033cf8: 689a ldr r2, [r3, #8] + 8033cfa: 687b ldr r3, [r7, #4] + 8033cfc: 681b ldr r3, [r3, #0] + 8033cfe: f442 4204 orr.w r2, r2, #33792 ; 0x8400 + 8033d02: 609a str r2, [r3, #8] } /*---------------------------- I2Cx CR2 Configuration ----------------------*/ /* Configure I2Cx: Addressing Master mode */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 8033cc4: 687b ldr r3, [r7, #4] - 8033cc6: 68db ldr r3, [r3, #12] - 8033cc8: 2b02 cmp r3, #2 - 8033cca: d104 bne.n 8033cd6 + 8033d04: 687b ldr r3, [r7, #4] + 8033d06: 68db ldr r3, [r3, #12] + 8033d08: 2b02 cmp r3, #2 + 8033d0a: d104 bne.n 8033d16 { hi2c->Instance->CR2 = (I2C_CR2_ADD10); - 8033ccc: 687b ldr r3, [r7, #4] - 8033cce: 681b ldr r3, [r3, #0] - 8033cd0: f44f 6200 mov.w r2, #2048 ; 0x800 - 8033cd4: 605a str r2, [r3, #4] + 8033d0c: 687b ldr r3, [r7, #4] + 8033d0e: 681b ldr r3, [r3, #0] + 8033d10: f44f 6200 mov.w r2, #2048 ; 0x800 + 8033d14: 605a str r2, [r3, #4] } /* Enable the AUTOEND by default, and enable NACK (should be disable only during Slave process */ hi2c->Instance->CR2 |= (I2C_CR2_AUTOEND | I2C_CR2_NACK); - 8033cd6: 687b ldr r3, [r7, #4] - 8033cd8: 681b ldr r3, [r3, #0] - 8033cda: 6859 ldr r1, [r3, #4] - 8033cdc: 687b ldr r3, [r7, #4] - 8033cde: 681a ldr r2, [r3, #0] - 8033ce0: 4b1d ldr r3, [pc, #116] ; (8033d58 ) - 8033ce2: 430b orrs r3, r1 - 8033ce4: 6053 str r3, [r2, #4] + 8033d16: 687b ldr r3, [r7, #4] + 8033d18: 681b ldr r3, [r3, #0] + 8033d1a: 6859 ldr r1, [r3, #4] + 8033d1c: 687b ldr r3, [r7, #4] + 8033d1e: 681a ldr r2, [r3, #0] + 8033d20: 4b1d ldr r3, [pc, #116] ; (8033d98 ) + 8033d22: 430b orrs r3, r1 + 8033d24: 6053 str r3, [r2, #4] /*---------------------------- I2Cx OAR2 Configuration ---------------------*/ /* Disable Own Address2 before set the Own Address2 configuration */ hi2c->Instance->OAR2 &= ~I2C_DUALADDRESS_ENABLE; - 8033ce6: 687b ldr r3, [r7, #4] - 8033ce8: 681b ldr r3, [r3, #0] - 8033cea: 68da ldr r2, [r3, #12] - 8033cec: 687b ldr r3, [r7, #4] - 8033cee: 681b ldr r3, [r3, #0] - 8033cf0: f422 4200 bic.w r2, r2, #32768 ; 0x8000 - 8033cf4: 60da str r2, [r3, #12] + 8033d26: 687b ldr r3, [r7, #4] + 8033d28: 681b ldr r3, [r3, #0] + 8033d2a: 68da ldr r2, [r3, #12] + 8033d2c: 687b ldr r3, [r7, #4] + 8033d2e: 681b ldr r3, [r3, #0] + 8033d30: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8033d34: 60da str r2, [r3, #12] /* Configure I2Cx: Dual mode and Own Address2 */ hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8033cf6: 687b ldr r3, [r7, #4] - 8033cf8: 691a ldr r2, [r3, #16] - 8033cfa: 687b ldr r3, [r7, #4] - 8033cfc: 695b ldr r3, [r3, #20] - 8033cfe: ea42 0103 orr.w r1, r2, r3 + 8033d36: 687b ldr r3, [r7, #4] + 8033d38: 691a ldr r2, [r3, #16] + 8033d3a: 687b ldr r3, [r7, #4] + 8033d3c: 695b ldr r3, [r3, #20] + 8033d3e: ea42 0103 orr.w r1, r2, r3 (hi2c->Init.OwnAddress2Masks << 8)); - 8033d02: 687b ldr r3, [r7, #4] - 8033d04: 699b ldr r3, [r3, #24] - 8033d06: 021a lsls r2, r3, #8 + 8033d42: 687b ldr r3, [r7, #4] + 8033d44: 699b ldr r3, [r3, #24] + 8033d46: 021a lsls r2, r3, #8 hi2c->Instance->OAR2 = (hi2c->Init.DualAddressMode | hi2c->Init.OwnAddress2 | \ - 8033d08: 687b ldr r3, [r7, #4] - 8033d0a: 681b ldr r3, [r3, #0] - 8033d0c: 430a orrs r2, r1 - 8033d0e: 60da str r2, [r3, #12] + 8033d48: 687b ldr r3, [r7, #4] + 8033d4a: 681b ldr r3, [r3, #0] + 8033d4c: 430a orrs r2, r1 + 8033d4e: 60da str r2, [r3, #12] /*---------------------------- I2Cx CR1 Configuration ----------------------*/ /* Configure I2Cx: Generalcall and NoStretch mode */ hi2c->Instance->CR1 = (hi2c->Init.GeneralCallMode | hi2c->Init.NoStretchMode); - 8033d10: 687b ldr r3, [r7, #4] - 8033d12: 69d9 ldr r1, [r3, #28] - 8033d14: 687b ldr r3, [r7, #4] - 8033d16: 6a1a ldr r2, [r3, #32] - 8033d18: 687b ldr r3, [r7, #4] - 8033d1a: 681b ldr r3, [r3, #0] - 8033d1c: 430a orrs r2, r1 - 8033d1e: 601a str r2, [r3, #0] + 8033d50: 687b ldr r3, [r7, #4] + 8033d52: 69d9 ldr r1, [r3, #28] + 8033d54: 687b ldr r3, [r7, #4] + 8033d56: 6a1a ldr r2, [r3, #32] + 8033d58: 687b ldr r3, [r7, #4] + 8033d5a: 681b ldr r3, [r3, #0] + 8033d5c: 430a orrs r2, r1 + 8033d5e: 601a str r2, [r3, #0] /* Enable the selected I2C peripheral */ __HAL_I2C_ENABLE(hi2c); - 8033d20: 687b ldr r3, [r7, #4] - 8033d22: 681b ldr r3, [r3, #0] - 8033d24: 681a ldr r2, [r3, #0] - 8033d26: 687b ldr r3, [r7, #4] - 8033d28: 681b ldr r3, [r3, #0] - 8033d2a: f042 0201 orr.w r2, r2, #1 - 8033d2e: 601a str r2, [r3, #0] + 8033d60: 687b ldr r3, [r7, #4] + 8033d62: 681b ldr r3, [r3, #0] + 8033d64: 681a ldr r2, [r3, #0] + 8033d66: 687b ldr r3, [r7, #4] + 8033d68: 681b ldr r3, [r3, #0] + 8033d6a: f042 0201 orr.w r2, r2, #1 + 8033d6e: 601a str r2, [r3, #0] hi2c->ErrorCode = HAL_I2C_ERROR_NONE; - 8033d30: 687b ldr r3, [r7, #4] - 8033d32: 2200 movs r2, #0 - 8033d34: 645a str r2, [r3, #68] ; 0x44 + 8033d70: 687b ldr r3, [r7, #4] + 8033d72: 2200 movs r2, #0 + 8033d74: 645a str r2, [r3, #68] ; 0x44 hi2c->State = HAL_I2C_STATE_READY; - 8033d36: 687b ldr r3, [r7, #4] - 8033d38: 2220 movs r2, #32 - 8033d3a: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8033d76: 687b ldr r3, [r7, #4] + 8033d78: 2220 movs r2, #32 + 8033d7a: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_NONE; - 8033d3e: 687b ldr r3, [r7, #4] - 8033d40: 2200 movs r2, #0 - 8033d42: 631a str r2, [r3, #48] ; 0x30 + 8033d7e: 687b ldr r3, [r7, #4] + 8033d80: 2200 movs r2, #0 + 8033d82: 631a str r2, [r3, #48] ; 0x30 hi2c->Mode = HAL_I2C_MODE_NONE; - 8033d44: 687b ldr r3, [r7, #4] - 8033d46: 2200 movs r2, #0 - 8033d48: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 8033d84: 687b ldr r3, [r7, #4] + 8033d86: 2200 movs r2, #0 + 8033d88: f883 2042 strb.w r2, [r3, #66] ; 0x42 return HAL_OK; - 8033d4c: 2300 movs r3, #0 + 8033d8c: 2300 movs r3, #0 } - 8033d4e: 4618 mov r0, r3 - 8033d50: 3708 adds r7, #8 - 8033d52: 46bd mov sp, r7 - 8033d54: bd80 pop {r7, pc} - 8033d56: bf00 nop - 8033d58: 02008000 .word 0x02008000 + 8033d8e: 4618 mov r0, r3 + 8033d90: 3708 adds r7, #8 + 8033d92: 46bd mov sp, r7 + 8033d94: bd80 pop {r7, pc} + 8033d96: bf00 nop + 8033d98: 02008000 .word 0x02008000 -08033d5c : +08033d9c : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_EV_IRQHandler(I2C_HandleTypeDef *hi2c) { - 8033d5c: b580 push {r7, lr} - 8033d5e: b084 sub sp, #16 - 8033d60: af00 add r7, sp, #0 - 8033d62: 6078 str r0, [r7, #4] + 8033d9c: b580 push {r7, lr} + 8033d9e: b084 sub sp, #16 + 8033da0: af00 add r7, sp, #0 + 8033da2: 6078 str r0, [r7, #4] /* Get current IT Flags and IT sources value */ uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8033d64: 687b ldr r3, [r7, #4] - 8033d66: 681b ldr r3, [r3, #0] - 8033d68: 699b ldr r3, [r3, #24] - 8033d6a: 60fb str r3, [r7, #12] + 8033da4: 687b ldr r3, [r7, #4] + 8033da6: 681b ldr r3, [r3, #0] + 8033da8: 699b ldr r3, [r3, #24] + 8033daa: 60fb str r3, [r7, #12] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8033d6c: 687b ldr r3, [r7, #4] - 8033d6e: 681b ldr r3, [r3, #0] - 8033d70: 681b ldr r3, [r3, #0] - 8033d72: 60bb str r3, [r7, #8] + 8033dac: 687b ldr r3, [r7, #4] + 8033dae: 681b ldr r3, [r3, #0] + 8033db0: 681b ldr r3, [r3, #0] + 8033db2: 60bb str r3, [r7, #8] /* I2C events treatment -------------------------------------*/ if (hi2c->XferISR != NULL) - 8033d74: 687b ldr r3, [r7, #4] - 8033d76: 6b5b ldr r3, [r3, #52] ; 0x34 - 8033d78: 2b00 cmp r3, #0 - 8033d7a: d005 beq.n 8033d88 + 8033db4: 687b ldr r3, [r7, #4] + 8033db6: 6b5b ldr r3, [r3, #52] ; 0x34 + 8033db8: 2b00 cmp r3, #0 + 8033dba: d005 beq.n 8033dc8 { hi2c->XferISR(hi2c, itflags, itsources); - 8033d7c: 687b ldr r3, [r7, #4] - 8033d7e: 6b5b ldr r3, [r3, #52] ; 0x34 - 8033d80: 68ba ldr r2, [r7, #8] - 8033d82: 68f9 ldr r1, [r7, #12] - 8033d84: 6878 ldr r0, [r7, #4] - 8033d86: 4798 blx r3 + 8033dbc: 687b ldr r3, [r7, #4] + 8033dbe: 6b5b ldr r3, [r3, #52] ; 0x34 + 8033dc0: 68ba ldr r2, [r7, #8] + 8033dc2: 68f9 ldr r1, [r7, #12] + 8033dc4: 6878 ldr r0, [r7, #4] + 8033dc6: 4798 blx r3 } } - 8033d88: bf00 nop - 8033d8a: 3710 adds r7, #16 - 8033d8c: 46bd mov sp, r7 - 8033d8e: bd80 pop {r7, pc} + 8033dc8: bf00 nop + 8033dca: 3710 adds r7, #16 + 8033dcc: 46bd mov sp, r7 + 8033dce: bd80 pop {r7, pc} -08033d90 : +08033dd0 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ void HAL_I2C_ER_IRQHandler(I2C_HandleTypeDef *hi2c) { - 8033d90: b580 push {r7, lr} - 8033d92: b086 sub sp, #24 - 8033d94: af00 add r7, sp, #0 - 8033d96: 6078 str r0, [r7, #4] + 8033dd0: b580 push {r7, lr} + 8033dd2: b086 sub sp, #24 + 8033dd4: af00 add r7, sp, #0 + 8033dd6: 6078 str r0, [r7, #4] uint32_t itflags = READ_REG(hi2c->Instance->ISR); - 8033d98: 687b ldr r3, [r7, #4] - 8033d9a: 681b ldr r3, [r3, #0] - 8033d9c: 699b ldr r3, [r3, #24] - 8033d9e: 617b str r3, [r7, #20] + 8033dd8: 687b ldr r3, [r7, #4] + 8033dda: 681b ldr r3, [r3, #0] + 8033ddc: 699b ldr r3, [r3, #24] + 8033dde: 617b str r3, [r7, #20] uint32_t itsources = READ_REG(hi2c->Instance->CR1); - 8033da0: 687b ldr r3, [r7, #4] - 8033da2: 681b ldr r3, [r3, #0] - 8033da4: 681b ldr r3, [r3, #0] - 8033da6: 613b str r3, [r7, #16] + 8033de0: 687b ldr r3, [r7, #4] + 8033de2: 681b ldr r3, [r3, #0] + 8033de4: 681b ldr r3, [r3, #0] + 8033de6: 613b str r3, [r7, #16] uint32_t tmperror; /* I2C Bus error interrupt occurred ------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8033da8: 697b ldr r3, [r7, #20] - 8033daa: 0a1b lsrs r3, r3, #8 - 8033dac: f003 0301 and.w r3, r3, #1 - 8033db0: 2b00 cmp r3, #0 - 8033db2: d010 beq.n 8033dd6 + 8033de8: 697b ldr r3, [r7, #20] + 8033dea: 0a1b lsrs r3, r3, #8 + 8033dec: f003 0301 and.w r3, r3, #1 + 8033df0: 2b00 cmp r3, #0 + 8033df2: d010 beq.n 8033e16 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8033db4: 693b ldr r3, [r7, #16] - 8033db6: 09db lsrs r3, r3, #7 - 8033db8: f003 0301 and.w r3, r3, #1 + 8033df4: 693b ldr r3, [r7, #16] + 8033df6: 09db lsrs r3, r3, #7 + 8033df8: f003 0301 and.w r3, r3, #1 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_BERR) != RESET) && \ - 8033dbc: 2b00 cmp r3, #0 - 8033dbe: d00a beq.n 8033dd6 + 8033dfc: 2b00 cmp r3, #0 + 8033dfe: d00a beq.n 8033e16 { hi2c->ErrorCode |= HAL_I2C_ERROR_BERR; - 8033dc0: 687b ldr r3, [r7, #4] - 8033dc2: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033dc4: f043 0201 orr.w r2, r3, #1 - 8033dc8: 687b ldr r3, [r7, #4] - 8033dca: 645a str r2, [r3, #68] ; 0x44 + 8033e00: 687b ldr r3, [r7, #4] + 8033e02: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033e04: f043 0201 orr.w r2, r3, #1 + 8033e08: 687b ldr r3, [r7, #4] + 8033e0a: 645a str r2, [r3, #68] ; 0x44 /* Clear BERR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_BERR); - 8033dcc: 687b ldr r3, [r7, #4] - 8033dce: 681b ldr r3, [r3, #0] - 8033dd0: f44f 7280 mov.w r2, #256 ; 0x100 - 8033dd4: 61da str r2, [r3, #28] + 8033e0c: 687b ldr r3, [r7, #4] + 8033e0e: 681b ldr r3, [r3, #0] + 8033e10: f44f 7280 mov.w r2, #256 ; 0x100 + 8033e14: 61da str r2, [r3, #28] } /* I2C Over-Run/Under-Run interrupt occurred ----------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8033dd6: 697b ldr r3, [r7, #20] - 8033dd8: 0a9b lsrs r3, r3, #10 - 8033dda: f003 0301 and.w r3, r3, #1 - 8033dde: 2b00 cmp r3, #0 - 8033de0: d010 beq.n 8033e04 + 8033e16: 697b ldr r3, [r7, #20] + 8033e18: 0a9b lsrs r3, r3, #10 + 8033e1a: f003 0301 and.w r3, r3, #1 + 8033e1e: 2b00 cmp r3, #0 + 8033e20: d010 beq.n 8033e44 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8033de2: 693b ldr r3, [r7, #16] - 8033de4: 09db lsrs r3, r3, #7 - 8033de6: f003 0301 and.w r3, r3, #1 + 8033e22: 693b ldr r3, [r7, #16] + 8033e24: 09db lsrs r3, r3, #7 + 8033e26: f003 0301 and.w r3, r3, #1 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_OVR) != RESET) && \ - 8033dea: 2b00 cmp r3, #0 - 8033dec: d00a beq.n 8033e04 + 8033e2a: 2b00 cmp r3, #0 + 8033e2c: d00a beq.n 8033e44 { hi2c->ErrorCode |= HAL_I2C_ERROR_OVR; - 8033dee: 687b ldr r3, [r7, #4] - 8033df0: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033df2: f043 0208 orr.w r2, r3, #8 - 8033df6: 687b ldr r3, [r7, #4] - 8033df8: 645a str r2, [r3, #68] ; 0x44 + 8033e2e: 687b ldr r3, [r7, #4] + 8033e30: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033e32: f043 0208 orr.w r2, r3, #8 + 8033e36: 687b ldr r3, [r7, #4] + 8033e38: 645a str r2, [r3, #68] ; 0x44 /* Clear OVR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_OVR); - 8033dfa: 687b ldr r3, [r7, #4] - 8033dfc: 681b ldr r3, [r3, #0] - 8033dfe: f44f 6280 mov.w r2, #1024 ; 0x400 - 8033e02: 61da str r2, [r3, #28] + 8033e3a: 687b ldr r3, [r7, #4] + 8033e3c: 681b ldr r3, [r3, #0] + 8033e3e: f44f 6280 mov.w r2, #1024 ; 0x400 + 8033e42: 61da str r2, [r3, #28] } /* I2C Arbitration Loss error interrupt occurred -------------------------------------*/ if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8033e04: 697b ldr r3, [r7, #20] - 8033e06: 0a5b lsrs r3, r3, #9 - 8033e08: f003 0301 and.w r3, r3, #1 - 8033e0c: 2b00 cmp r3, #0 - 8033e0e: d010 beq.n 8033e32 + 8033e44: 697b ldr r3, [r7, #20] + 8033e46: 0a5b lsrs r3, r3, #9 + 8033e48: f003 0301 and.w r3, r3, #1 + 8033e4c: 2b00 cmp r3, #0 + 8033e4e: d010 beq.n 8033e72 (I2C_CHECK_IT_SOURCE(itsources, I2C_IT_ERRI) != RESET)) - 8033e10: 693b ldr r3, [r7, #16] - 8033e12: 09db lsrs r3, r3, #7 - 8033e14: f003 0301 and.w r3, r3, #1 + 8033e50: 693b ldr r3, [r7, #16] + 8033e52: 09db lsrs r3, r3, #7 + 8033e54: f003 0301 and.w r3, r3, #1 if ((I2C_CHECK_FLAG(itflags, I2C_FLAG_ARLO) != RESET) && \ - 8033e18: 2b00 cmp r3, #0 - 8033e1a: d00a beq.n 8033e32 + 8033e58: 2b00 cmp r3, #0 + 8033e5a: d00a beq.n 8033e72 { hi2c->ErrorCode |= HAL_I2C_ERROR_ARLO; - 8033e1c: 687b ldr r3, [r7, #4] - 8033e1e: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033e20: f043 0202 orr.w r2, r3, #2 - 8033e24: 687b ldr r3, [r7, #4] - 8033e26: 645a str r2, [r3, #68] ; 0x44 + 8033e5c: 687b ldr r3, [r7, #4] + 8033e5e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033e60: f043 0202 orr.w r2, r3, #2 + 8033e64: 687b ldr r3, [r7, #4] + 8033e66: 645a str r2, [r3, #68] ; 0x44 /* Clear ARLO flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ARLO); - 8033e28: 687b ldr r3, [r7, #4] - 8033e2a: 681b ldr r3, [r3, #0] - 8033e2c: f44f 7200 mov.w r2, #512 ; 0x200 - 8033e30: 61da str r2, [r3, #28] + 8033e68: 687b ldr r3, [r7, #4] + 8033e6a: 681b ldr r3, [r3, #0] + 8033e6c: f44f 7200 mov.w r2, #512 ; 0x200 + 8033e70: 61da str r2, [r3, #28] } /* Store current volatile hi2c->ErrorCode, misra rule */ tmperror = hi2c->ErrorCode; - 8033e32: 687b ldr r3, [r7, #4] - 8033e34: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033e36: 60fb str r3, [r7, #12] + 8033e72: 687b ldr r3, [r7, #4] + 8033e74: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033e76: 60fb str r3, [r7, #12] /* Call the Error Callback in case of Error detected */ if ((tmperror & (HAL_I2C_ERROR_BERR | HAL_I2C_ERROR_OVR | HAL_I2C_ERROR_ARLO)) != HAL_I2C_ERROR_NONE) - 8033e38: 68fb ldr r3, [r7, #12] - 8033e3a: f003 030b and.w r3, r3, #11 - 8033e3e: 2b00 cmp r3, #0 - 8033e40: d003 beq.n 8033e4a + 8033e78: 68fb ldr r3, [r7, #12] + 8033e7a: f003 030b and.w r3, r3, #11 + 8033e7e: 2b00 cmp r3, #0 + 8033e80: d003 beq.n 8033e8a { I2C_ITError(hi2c, tmperror); - 8033e42: 68f9 ldr r1, [r7, #12] - 8033e44: 6878 ldr r0, [r7, #4] - 8033e46: f000 fc77 bl 8034738 + 8033e82: 68f9 ldr r1, [r7, #12] + 8033e84: 6878 ldr r0, [r7, #4] + 8033e86: f000 fc77 bl 8034778 } } - 8033e4a: bf00 nop - 8033e4c: 3718 adds r7, #24 - 8033e4e: 46bd mov sp, r7 - 8033e50: bd80 pop {r7, pc} + 8033e8a: bf00 nop + 8033e8c: 3718 adds r7, #24 + 8033e8e: 46bd mov sp, r7 + 8033e90: bd80 pop {r7, pc} -08033e52 : +08033e92 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_SlaveTxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8033e52: b480 push {r7} - 8033e54: b083 sub sp, #12 - 8033e56: af00 add r7, sp, #0 - 8033e58: 6078 str r0, [r7, #4] + 8033e92: b480 push {r7} + 8033e94: b083 sub sp, #12 + 8033e96: af00 add r7, sp, #0 + 8033e98: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_SlaveTxCpltCallback could be implemented in the user file */ } - 8033e5a: bf00 nop - 8033e5c: 370c adds r7, #12 - 8033e5e: 46bd mov sp, r7 - 8033e60: f85d 7b04 ldr.w r7, [sp], #4 - 8033e64: 4770 bx lr + 8033e9a: bf00 nop + 8033e9c: 370c adds r7, #12 + 8033e9e: 46bd mov sp, r7 + 8033ea0: f85d 7b04 ldr.w r7, [sp], #4 + 8033ea4: 4770 bx lr -08033e66 : +08033ea6 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c) { - 8033e66: b480 push {r7} - 8033e68: b083 sub sp, #12 - 8033e6a: af00 add r7, sp, #0 - 8033e6c: 6078 str r0, [r7, #4] + 8033ea6: b480 push {r7} + 8033ea8: b083 sub sp, #12 + 8033eaa: af00 add r7, sp, #0 + 8033eac: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_SlaveRxCpltCallback could be implemented in the user file */ } - 8033e6e: bf00 nop - 8033e70: 370c adds r7, #12 - 8033e72: 46bd mov sp, r7 - 8033e74: f85d 7b04 ldr.w r7, [sp], #4 - 8033e78: 4770 bx lr + 8033eae: bf00 nop + 8033eb0: 370c adds r7, #12 + 8033eb2: 46bd mov sp, r7 + 8033eb4: f85d 7b04 ldr.w r7, [sp], #4 + 8033eb8: 4770 bx lr -08033e7a : +08033eba : * @param TransferDirection Master request Transfer Direction (Write/Read), value of @ref I2C_XFERDIRECTION * @param AddrMatchCode Address Match Code * @retval None */ __weak void HAL_I2C_AddrCallback(I2C_HandleTypeDef *hi2c, uint8_t TransferDirection, uint16_t AddrMatchCode) { - 8033e7a: b480 push {r7} - 8033e7c: b083 sub sp, #12 - 8033e7e: af00 add r7, sp, #0 - 8033e80: 6078 str r0, [r7, #4] - 8033e82: 460b mov r3, r1 - 8033e84: 70fb strb r3, [r7, #3] - 8033e86: 4613 mov r3, r2 - 8033e88: 803b strh r3, [r7, #0] + 8033eba: b480 push {r7} + 8033ebc: b083 sub sp, #12 + 8033ebe: af00 add r7, sp, #0 + 8033ec0: 6078 str r0, [r7, #4] + 8033ec2: 460b mov r3, r1 + 8033ec4: 70fb strb r3, [r7, #3] + 8033ec6: 4613 mov r3, r2 + 8033ec8: 803b strh r3, [r7, #0] UNUSED(AddrMatchCode); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_AddrCallback() could be implemented in the user file */ } - 8033e8a: bf00 nop - 8033e8c: 370c adds r7, #12 - 8033e8e: 46bd mov sp, r7 - 8033e90: f85d 7b04 ldr.w r7, [sp], #4 - 8033e94: 4770 bx lr + 8033eca: bf00 nop + 8033ecc: 370c adds r7, #12 + 8033ece: 46bd mov sp, r7 + 8033ed0: f85d 7b04 ldr.w r7, [sp], #4 + 8033ed4: 4770 bx lr -08033e96 : +08033ed6 : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_ListenCpltCallback(I2C_HandleTypeDef *hi2c) { - 8033e96: b480 push {r7} - 8033e98: b083 sub sp, #12 - 8033e9a: af00 add r7, sp, #0 - 8033e9c: 6078 str r0, [r7, #4] + 8033ed6: b480 push {r7} + 8033ed8: b083 sub sp, #12 + 8033eda: af00 add r7, sp, #0 + 8033edc: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_ListenCpltCallback() could be implemented in the user file */ } - 8033e9e: bf00 nop - 8033ea0: 370c adds r7, #12 - 8033ea2: 46bd mov sp, r7 - 8033ea4: f85d 7b04 ldr.w r7, [sp], #4 - 8033ea8: 4770 bx lr + 8033ede: bf00 nop + 8033ee0: 370c adds r7, #12 + 8033ee2: 46bd mov sp, r7 + 8033ee4: f85d 7b04 ldr.w r7, [sp], #4 + 8033ee8: 4770 bx lr -08033eaa : +08033eea : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_ErrorCallback(I2C_HandleTypeDef *hi2c) { - 8033eaa: b480 push {r7} - 8033eac: b083 sub sp, #12 - 8033eae: af00 add r7, sp, #0 - 8033eb0: 6078 str r0, [r7, #4] + 8033eea: b480 push {r7} + 8033eec: b083 sub sp, #12 + 8033eee: af00 add r7, sp, #0 + 8033ef0: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_ErrorCallback could be implemented in the user file */ } - 8033eb2: bf00 nop - 8033eb4: 370c adds r7, #12 - 8033eb6: 46bd mov sp, r7 - 8033eb8: f85d 7b04 ldr.w r7, [sp], #4 - 8033ebc: 4770 bx lr + 8033ef2: bf00 nop + 8033ef4: 370c adds r7, #12 + 8033ef6: 46bd mov sp, r7 + 8033ef8: f85d 7b04 ldr.w r7, [sp], #4 + 8033efc: 4770 bx lr -08033ebe : +08033efe : * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @retval None */ __weak void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) { - 8033ebe: b480 push {r7} - 8033ec0: b083 sub sp, #12 - 8033ec2: af00 add r7, sp, #0 - 8033ec4: 6078 str r0, [r7, #4] + 8033efe: b480 push {r7} + 8033f00: b083 sub sp, #12 + 8033f02: af00 add r7, sp, #0 + 8033f04: 6078 str r0, [r7, #4] UNUSED(hi2c); /* NOTE : This function should not be modified, when the callback is needed, the HAL_I2C_AbortCpltCallback could be implemented in the user file */ } - 8033ec6: bf00 nop - 8033ec8: 370c adds r7, #12 - 8033eca: 46bd mov sp, r7 - 8033ecc: f85d 7b04 ldr.w r7, [sp], #4 - 8033ed0: 4770 bx lr + 8033f06: bf00 nop + 8033f08: 370c adds r7, #12 + 8033f0a: 46bd mov sp, r7 + 8033f0c: f85d 7b04 ldr.w r7, [sp], #4 + 8033f10: 4770 bx lr -08033ed2 : +08033f12 : * @param ITSources Interrupt sources enabled. * @retval HAL status */ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint32_t ITFlags, uint32_t ITSources) { - 8033ed2: b580 push {r7, lr} - 8033ed4: b086 sub sp, #24 - 8033ed6: af00 add r7, sp, #0 - 8033ed8: 60f8 str r0, [r7, #12] - 8033eda: 60b9 str r1, [r7, #8] - 8033edc: 607a str r2, [r7, #4] + 8033f12: b580 push {r7, lr} + 8033f14: b086 sub sp, #24 + 8033f16: af00 add r7, sp, #0 + 8033f18: 60f8 str r0, [r7, #12] + 8033f1a: 60b9 str r1, [r7, #8] + 8033f1c: 607a str r2, [r7, #4] uint32_t tmpoptions = hi2c->XferOptions; - 8033ede: 68fb ldr r3, [r7, #12] - 8033ee0: 6adb ldr r3, [r3, #44] ; 0x2c - 8033ee2: 617b str r3, [r7, #20] + 8033f1e: 68fb ldr r3, [r7, #12] + 8033f20: 6adb ldr r3, [r3, #44] ; 0x2c + 8033f22: 617b str r3, [r7, #20] uint32_t tmpITFlags = ITFlags; - 8033ee4: 68bb ldr r3, [r7, #8] - 8033ee6: 613b str r3, [r7, #16] + 8033f24: 68bb ldr r3, [r7, #8] + 8033f26: 613b str r3, [r7, #16] /* Process locked */ __HAL_LOCK(hi2c); - 8033ee8: 68fb ldr r3, [r7, #12] - 8033eea: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8033eee: 2b01 cmp r3, #1 - 8033ef0: d101 bne.n 8033ef6 - 8033ef2: 2302 movs r3, #2 - 8033ef4: e0ec b.n 80340d0 - 8033ef6: 68fb ldr r3, [r7, #12] - 8033ef8: 2201 movs r2, #1 - 8033efa: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8033f28: 68fb ldr r3, [r7, #12] + 8033f2a: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8033f2e: 2b01 cmp r3, #1 + 8033f30: d101 bne.n 8033f36 + 8033f32: 2302 movs r3, #2 + 8033f34: e0ec b.n 8034110 + 8033f36: 68fb ldr r3, [r7, #12] + 8033f38: 2201 movs r2, #1 + 8033f3a: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Check if STOPF is set */ if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8033efe: 693b ldr r3, [r7, #16] - 8033f00: 095b lsrs r3, r3, #5 - 8033f02: f003 0301 and.w r3, r3, #1 - 8033f06: 2b00 cmp r3, #0 - 8033f08: d009 beq.n 8033f1e + 8033f3e: 693b ldr r3, [r7, #16] + 8033f40: 095b lsrs r3, r3, #5 + 8033f42: f003 0301 and.w r3, r3, #1 + 8033f46: 2b00 cmp r3, #0 + 8033f48: d009 beq.n 8033f5e (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET)) - 8033f0a: 687b ldr r3, [r7, #4] - 8033f0c: 095b lsrs r3, r3, #5 - 8033f0e: f003 0301 and.w r3, r3, #1 + 8033f4a: 687b ldr r3, [r7, #4] + 8033f4c: 095b lsrs r3, r3, #5 + 8033f4e: f003 0301 and.w r3, r3, #1 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && \ - 8033f12: 2b00 cmp r3, #0 - 8033f14: d003 beq.n 8033f1e + 8033f52: 2b00 cmp r3, #0 + 8033f54: d003 beq.n 8033f5e { /* Call I2C Slave complete process */ I2C_ITSlaveCplt(hi2c, tmpITFlags); - 8033f16: 6939 ldr r1, [r7, #16] - 8033f18: 68f8 ldr r0, [r7, #12] - 8033f1a: f000 f9bf bl 803429c + 8033f56: 6939 ldr r1, [r7, #16] + 8033f58: 68f8 ldr r0, [r7, #12] + 8033f5a: f000 f9bf bl 80342dc } if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8033f1e: 693b ldr r3, [r7, #16] - 8033f20: 091b lsrs r3, r3, #4 - 8033f22: f003 0301 and.w r3, r3, #1 - 8033f26: 2b00 cmp r3, #0 - 8033f28: d04d beq.n 8033fc6 + 8033f5e: 693b ldr r3, [r7, #16] + 8033f60: 091b lsrs r3, r3, #4 + 8033f62: f003 0301 and.w r3, r3, #1 + 8033f66: 2b00 cmp r3, #0 + 8033f68: d04d beq.n 8034006 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET)) - 8033f2a: 687b ldr r3, [r7, #4] - 8033f2c: 091b lsrs r3, r3, #4 - 8033f2e: f003 0301 and.w r3, r3, #1 + 8033f6a: 687b ldr r3, [r7, #4] + 8033f6c: 091b lsrs r3, r3, #4 + 8033f6e: f003 0301 and.w r3, r3, #1 if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && \ - 8033f32: 2b00 cmp r3, #0 - 8033f34: d047 beq.n 8033fc6 + 8033f72: 2b00 cmp r3, #0 + 8033f74: d047 beq.n 8034006 { /* Check that I2C transfer finished */ /* if yes, normal use case, a NACK is sent by the MASTER when Transfer is finished */ /* Mean XferCount == 0*/ /* So clear Flag NACKF only */ if (hi2c->XferCount == 0U) - 8033f36: 68fb ldr r3, [r7, #12] - 8033f38: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8033f3a: b29b uxth r3, r3 - 8033f3c: 2b00 cmp r3, #0 - 8033f3e: d128 bne.n 8033f92 + 8033f76: 68fb ldr r3, [r7, #12] + 8033f78: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8033f7a: b29b uxth r3, r3 + 8033f7c: 2b00 cmp r3, #0 + 8033f7e: d128 bne.n 8033fd2 { if ((hi2c->State == HAL_I2C_STATE_LISTEN) && (tmpoptions == I2C_FIRST_AND_LAST_FRAME)) - 8033f40: 68fb ldr r3, [r7, #12] - 8033f42: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8033f46: b2db uxtb r3, r3 - 8033f48: 2b28 cmp r3, #40 ; 0x28 - 8033f4a: d108 bne.n 8033f5e - 8033f4c: 697b ldr r3, [r7, #20] - 8033f4e: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8033f52: d104 bne.n 8033f5e + 8033f80: 68fb ldr r3, [r7, #12] + 8033f82: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8033f86: b2db uxtb r3, r3 + 8033f88: 2b28 cmp r3, #40 ; 0x28 + 8033f8a: d108 bne.n 8033f9e + 8033f8c: 697b ldr r3, [r7, #20] + 8033f8e: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8033f92: d104 bne.n 8033f9e /* Same action must be done for (tmpoptions == I2C_LAST_FRAME) which removed for Warning[Pa134]: left and right operands are identical */ { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 8033f54: 6939 ldr r1, [r7, #16] - 8033f56: 68f8 ldr r0, [r7, #12] - 8033f58: f000 fb98 bl 803468c - 8033f5c: e032 b.n 8033fc4 + 8033f94: 6939 ldr r1, [r7, #16] + 8033f96: 68f8 ldr r0, [r7, #12] + 8033f98: f000 fb98 bl 80346cc + 8033f9c: e032 b.n 8034004 } else if ((hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) && (tmpoptions != I2C_NO_OPTION_FRAME)) - 8033f5e: 68fb ldr r3, [r7, #12] - 8033f60: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8033f64: b2db uxtb r3, r3 - 8033f66: 2b29 cmp r3, #41 ; 0x29 - 8033f68: d10e bne.n 8033f88 - 8033f6a: 697b ldr r3, [r7, #20] - 8033f6c: f513 3f80 cmn.w r3, #65536 ; 0x10000 - 8033f70: d00a beq.n 8033f88 + 8033f9e: 68fb ldr r3, [r7, #12] + 8033fa0: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8033fa4: b2db uxtb r3, r3 + 8033fa6: 2b29 cmp r3, #41 ; 0x29 + 8033fa8: d10e bne.n 8033fc8 + 8033faa: 697b ldr r3, [r7, #20] + 8033fac: f513 3f80 cmn.w r3, #65536 ; 0x10000 + 8033fb0: d00a beq.n 8033fc8 { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8033f72: 68fb ldr r3, [r7, #12] - 8033f74: 681b ldr r3, [r3, #0] - 8033f76: 2210 movs r2, #16 - 8033f78: 61da str r2, [r3, #28] + 8033fb2: 68fb ldr r3, [r7, #12] + 8033fb4: 681b ldr r3, [r3, #0] + 8033fb6: 2210 movs r2, #16 + 8033fb8: 61da str r2, [r3, #28] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 8033f7a: 68f8 ldr r0, [r7, #12] - 8033f7c: f000 fcd3 bl 8034926 + 8033fba: 68f8 ldr r0, [r7, #12] + 8033fbc: f000 fcd3 bl 8034966 /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 8033f80: 68f8 ldr r0, [r7, #12] - 8033f82: f000 f92d bl 80341e0 - 8033f86: e01d b.n 8033fc4 + 8033fc0: 68f8 ldr r0, [r7, #12] + 8033fc2: f000 f92d bl 8034220 + 8033fc6: e01d b.n 8034004 } else { /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8033f88: 68fb ldr r3, [r7, #12] - 8033f8a: 681b ldr r3, [r3, #0] - 8033f8c: 2210 movs r2, #16 - 8033f8e: 61da str r2, [r3, #28] + 8033fc8: 68fb ldr r3, [r7, #12] + 8033fca: 681b ldr r3, [r3, #0] + 8033fcc: 2210 movs r2, #16 + 8033fce: 61da str r2, [r3, #28] if (hi2c->XferCount == 0U) - 8033f90: e096 b.n 80340c0 + 8033fd0: e096 b.n 8034100 } else { /* if no, error use case, a Non-Acknowledge of last Data is generated by the MASTER*/ /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8033f92: 68fb ldr r3, [r7, #12] - 8033f94: 681b ldr r3, [r3, #0] - 8033f96: 2210 movs r2, #16 - 8033f98: 61da str r2, [r3, #28] + 8033fd2: 68fb ldr r3, [r7, #12] + 8033fd4: 681b ldr r3, [r3, #0] + 8033fd6: 2210 movs r2, #16 + 8033fd8: 61da str r2, [r3, #28] /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 8033f9a: 68fb ldr r3, [r7, #12] - 8033f9c: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033f9e: f043 0204 orr.w r2, r3, #4 - 8033fa2: 68fb ldr r3, [r7, #12] - 8033fa4: 645a str r2, [r3, #68] ; 0x44 + 8033fda: 68fb ldr r3, [r7, #12] + 8033fdc: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033fde: f043 0204 orr.w r2, r3, #4 + 8033fe2: 68fb ldr r3, [r7, #12] + 8033fe4: 645a str r2, [r3, #68] ; 0x44 if ((tmpoptions == I2C_FIRST_FRAME) || (tmpoptions == I2C_NEXT_FRAME)) - 8033fa6: 697b ldr r3, [r7, #20] - 8033fa8: 2b00 cmp r3, #0 - 8033faa: d004 beq.n 8033fb6 - 8033fac: 697b ldr r3, [r7, #20] - 8033fae: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 8033fb2: f040 8085 bne.w 80340c0 + 8033fe6: 697b ldr r3, [r7, #20] + 8033fe8: 2b00 cmp r3, #0 + 8033fea: d004 beq.n 8033ff6 + 8033fec: 697b ldr r3, [r7, #20] + 8033fee: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 8033ff2: f040 8085 bne.w 8034100 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 8033fb6: 68fb ldr r3, [r7, #12] - 8033fb8: 6c5b ldr r3, [r3, #68] ; 0x44 - 8033fba: 4619 mov r1, r3 - 8033fbc: 68f8 ldr r0, [r7, #12] - 8033fbe: f000 fbbb bl 8034738 + 8033ff6: 68fb ldr r3, [r7, #12] + 8033ff8: 6c5b ldr r3, [r3, #68] ; 0x44 + 8033ffa: 4619 mov r1, r3 + 8033ffc: 68f8 ldr r0, [r7, #12] + 8033ffe: f000 fbbb bl 8034778 if (hi2c->XferCount == 0U) - 8033fc2: e07d b.n 80340c0 - 8033fc4: e07c b.n 80340c0 + 8034002: e07d b.n 8034100 + 8034004: e07c b.n 8034100 } } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 8033fc6: 693b ldr r3, [r7, #16] - 8033fc8: 089b lsrs r3, r3, #2 - 8033fca: f003 0301 and.w r3, r3, #1 - 8033fce: 2b00 cmp r3, #0 - 8033fd0: d030 beq.n 8034034 + 8034006: 693b ldr r3, [r7, #16] + 8034008: 089b lsrs r3, r3, #2 + 803400a: f003 0301 and.w r3, r3, #1 + 803400e: 2b00 cmp r3, #0 + 8034010: d030 beq.n 8034074 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_RXI) != RESET)) - 8033fd2: 687b ldr r3, [r7, #4] - 8033fd4: 089b lsrs r3, r3, #2 - 8033fd6: f003 0301 and.w r3, r3, #1 + 8034012: 687b ldr r3, [r7, #4] + 8034014: 089b lsrs r3, r3, #2 + 8034016: f003 0301 and.w r3, r3, #1 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) && \ - 8033fda: 2b00 cmp r3, #0 - 8033fdc: d02a beq.n 8034034 + 803401a: 2b00 cmp r3, #0 + 803401c: d02a beq.n 8034074 { if (hi2c->XferCount > 0U) - 8033fde: 68fb ldr r3, [r7, #12] - 8033fe0: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8033fe2: b29b uxth r3, r3 - 8033fe4: 2b00 cmp r3, #0 - 8033fe6: d018 beq.n 803401a + 803401e: 68fb ldr r3, [r7, #12] + 8034020: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8034022: b29b uxth r3, r3 + 8034024: 2b00 cmp r3, #0 + 8034026: d018 beq.n 803405a { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 8033fe8: 68fb ldr r3, [r7, #12] - 8033fea: 681b ldr r3, [r3, #0] - 8033fec: 6a5a ldr r2, [r3, #36] ; 0x24 - 8033fee: 68fb ldr r3, [r7, #12] - 8033ff0: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033ff2: b2d2 uxtb r2, r2 - 8033ff4: 701a strb r2, [r3, #0] + 8034028: 68fb ldr r3, [r7, #12] + 803402a: 681b ldr r3, [r3, #0] + 803402c: 6a5a ldr r2, [r3, #36] ; 0x24 + 803402e: 68fb ldr r3, [r7, #12] + 8034030: 6a5b ldr r3, [r3, #36] ; 0x24 + 8034032: b2d2 uxtb r2, r2 + 8034034: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8033ff6: 68fb ldr r3, [r7, #12] - 8033ff8: 6a5b ldr r3, [r3, #36] ; 0x24 - 8033ffa: 1c5a adds r2, r3, #1 - 8033ffc: 68fb ldr r3, [r7, #12] - 8033ffe: 625a str r2, [r3, #36] ; 0x24 + 8034036: 68fb ldr r3, [r7, #12] + 8034038: 6a5b ldr r3, [r3, #36] ; 0x24 + 803403a: 1c5a adds r2, r3, #1 + 803403c: 68fb ldr r3, [r7, #12] + 803403e: 625a str r2, [r3, #36] ; 0x24 hi2c->XferSize--; - 8034000: 68fb ldr r3, [r7, #12] - 8034002: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8034004: 3b01 subs r3, #1 - 8034006: b29a uxth r2, r3 - 8034008: 68fb ldr r3, [r7, #12] - 803400a: 851a strh r2, [r3, #40] ; 0x28 + 8034040: 68fb ldr r3, [r7, #12] + 8034042: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8034044: 3b01 subs r3, #1 + 8034046: b29a uxth r2, r3 + 8034048: 68fb ldr r3, [r7, #12] + 803404a: 851a strh r2, [r3, #40] ; 0x28 hi2c->XferCount--; - 803400c: 68fb ldr r3, [r7, #12] - 803400e: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8034010: b29b uxth r3, r3 - 8034012: 3b01 subs r3, #1 - 8034014: b29a uxth r2, r3 - 8034016: 68fb ldr r3, [r7, #12] - 8034018: 855a strh r2, [r3, #42] ; 0x2a + 803404c: 68fb ldr r3, [r7, #12] + 803404e: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8034050: b29b uxth r3, r3 + 8034052: 3b01 subs r3, #1 + 8034054: b29a uxth r2, r3 + 8034056: 68fb ldr r3, [r7, #12] + 8034058: 855a strh r2, [r3, #42] ; 0x2a } if ((hi2c->XferCount == 0U) && \ - 803401a: 68fb ldr r3, [r7, #12] - 803401c: 8d5b ldrh r3, [r3, #42] ; 0x2a - 803401e: b29b uxth r3, r3 - 8034020: 2b00 cmp r3, #0 - 8034022: d14f bne.n 80340c4 - 8034024: 697b ldr r3, [r7, #20] - 8034026: f513 3f80 cmn.w r3, #65536 ; 0x10000 - 803402a: d04b beq.n 80340c4 + 803405a: 68fb ldr r3, [r7, #12] + 803405c: 8d5b ldrh r3, [r3, #42] ; 0x2a + 803405e: b29b uxth r3, r3 + 8034060: 2b00 cmp r3, #0 + 8034062: d14f bne.n 8034104 + 8034064: 697b ldr r3, [r7, #20] + 8034066: f513 3f80 cmn.w r3, #65536 ; 0x10000 + 803406a: d04b beq.n 8034104 (tmpoptions != I2C_NO_OPTION_FRAME)) { /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 803402c: 68f8 ldr r0, [r7, #12] - 803402e: f000 f8d7 bl 80341e0 + 803406c: 68f8 ldr r0, [r7, #12] + 803406e: f000 f8d7 bl 8034220 if ((hi2c->XferCount == 0U) && \ - 8034032: e047 b.n 80340c4 + 8034072: e047 b.n 8034104 } } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8034034: 693b ldr r3, [r7, #16] - 8034036: 08db lsrs r3, r3, #3 - 8034038: f003 0301 and.w r3, r3, #1 - 803403c: 2b00 cmp r3, #0 - 803403e: d00a beq.n 8034056 + 8034074: 693b ldr r3, [r7, #16] + 8034076: 08db lsrs r3, r3, #3 + 8034078: f003 0301 and.w r3, r3, #1 + 803407c: 2b00 cmp r3, #0 + 803407e: d00a beq.n 8034096 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_ADDRI) != RESET)) - 8034040: 687b ldr r3, [r7, #4] - 8034042: 08db lsrs r3, r3, #3 - 8034044: f003 0301 and.w r3, r3, #1 + 8034080: 687b ldr r3, [r7, #4] + 8034082: 08db lsrs r3, r3, #3 + 8034084: f003 0301 and.w r3, r3, #1 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_ADDR) != RESET) && \ - 8034048: 2b00 cmp r3, #0 - 803404a: d004 beq.n 8034056 + 8034088: 2b00 cmp r3, #0 + 803408a: d004 beq.n 8034096 { I2C_ITAddrCplt(hi2c, tmpITFlags); - 803404c: 6939 ldr r1, [r7, #16] - 803404e: 68f8 ldr r0, [r7, #12] - 8034050: f000 f842 bl 80340d8 - 8034054: e037 b.n 80340c6 + 803408c: 6939 ldr r1, [r7, #16] + 803408e: 68f8 ldr r0, [r7, #12] + 8034090: f000 f842 bl 8034118 + 8034094: e037 b.n 8034106 } else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 8034056: 693b ldr r3, [r7, #16] - 8034058: 085b lsrs r3, r3, #1 - 803405a: f003 0301 and.w r3, r3, #1 - 803405e: 2b00 cmp r3, #0 - 8034060: d031 beq.n 80340c6 + 8034096: 693b ldr r3, [r7, #16] + 8034098: 085b lsrs r3, r3, #1 + 803409a: f003 0301 and.w r3, r3, #1 + 803409e: 2b00 cmp r3, #0 + 80340a0: d031 beq.n 8034106 (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_TXI) != RESET)) - 8034062: 687b ldr r3, [r7, #4] - 8034064: 085b lsrs r3, r3, #1 - 8034066: f003 0301 and.w r3, r3, #1 + 80340a2: 687b ldr r3, [r7, #4] + 80340a4: 085b lsrs r3, r3, #1 + 80340a6: f003 0301 and.w r3, r3, #1 else if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_TXIS) != RESET) && \ - 803406a: 2b00 cmp r3, #0 - 803406c: d02b beq.n 80340c6 + 80340aa: 2b00 cmp r3, #0 + 80340ac: d02b beq.n 8034106 { /* Write data to TXDR only if XferCount not reach "0" */ /* A TXIS flag can be set, during STOP treatment */ /* Check if all Data have already been sent */ /* If it is the case, this last write in TXDR is not sent, correspond to a dummy TXIS event */ if (hi2c->XferCount > 0U) - 803406e: 68fb ldr r3, [r7, #12] - 8034070: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8034072: b29b uxth r3, r3 - 8034074: 2b00 cmp r3, #0 - 8034076: d018 beq.n 80340aa + 80340ae: 68fb ldr r3, [r7, #12] + 80340b0: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80340b2: b29b uxth r3, r3 + 80340b4: 2b00 cmp r3, #0 + 80340b6: d018 beq.n 80340ea { /* Write data to TXDR */ hi2c->Instance->TXDR = *hi2c->pBuffPtr; - 8034078: 68fb ldr r3, [r7, #12] - 803407a: 6a5b ldr r3, [r3, #36] ; 0x24 - 803407c: 781a ldrb r2, [r3, #0] - 803407e: 68fb ldr r3, [r7, #12] - 8034080: 681b ldr r3, [r3, #0] - 8034082: 629a str r2, [r3, #40] ; 0x28 + 80340b8: 68fb ldr r3, [r7, #12] + 80340ba: 6a5b ldr r3, [r3, #36] ; 0x24 + 80340bc: 781a ldrb r2, [r3, #0] + 80340be: 68fb ldr r3, [r7, #12] + 80340c0: 681b ldr r3, [r3, #0] + 80340c2: 629a str r2, [r3, #40] ; 0x28 /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 8034084: 68fb ldr r3, [r7, #12] - 8034086: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034088: 1c5a adds r2, r3, #1 - 803408a: 68fb ldr r3, [r7, #12] - 803408c: 625a str r2, [r3, #36] ; 0x24 + 80340c4: 68fb ldr r3, [r7, #12] + 80340c6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80340c8: 1c5a adds r2, r3, #1 + 80340ca: 68fb ldr r3, [r7, #12] + 80340cc: 625a str r2, [r3, #36] ; 0x24 hi2c->XferCount--; - 803408e: 68fb ldr r3, [r7, #12] - 8034090: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8034092: b29b uxth r3, r3 - 8034094: 3b01 subs r3, #1 - 8034096: b29a uxth r2, r3 - 8034098: 68fb ldr r3, [r7, #12] - 803409a: 855a strh r2, [r3, #42] ; 0x2a + 80340ce: 68fb ldr r3, [r7, #12] + 80340d0: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80340d2: b29b uxth r3, r3 + 80340d4: 3b01 subs r3, #1 + 80340d6: b29a uxth r2, r3 + 80340d8: 68fb ldr r3, [r7, #12] + 80340da: 855a strh r2, [r3, #42] ; 0x2a hi2c->XferSize--; - 803409c: 68fb ldr r3, [r7, #12] - 803409e: 8d1b ldrh r3, [r3, #40] ; 0x28 - 80340a0: 3b01 subs r3, #1 - 80340a2: b29a uxth r2, r3 - 80340a4: 68fb ldr r3, [r7, #12] - 80340a6: 851a strh r2, [r3, #40] ; 0x28 - 80340a8: e00d b.n 80340c6 + 80340dc: 68fb ldr r3, [r7, #12] + 80340de: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80340e0: 3b01 subs r3, #1 + 80340e2: b29a uxth r2, r3 + 80340e4: 68fb ldr r3, [r7, #12] + 80340e6: 851a strh r2, [r3, #40] ; 0x28 + 80340e8: e00d b.n 8034106 } else { if ((tmpoptions == I2C_NEXT_FRAME) || (tmpoptions == I2C_FIRST_FRAME)) - 80340aa: 697b ldr r3, [r7, #20] - 80340ac: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 80340b0: d002 beq.n 80340b8 - 80340b2: 697b ldr r3, [r7, #20] - 80340b4: 2b00 cmp r3, #0 - 80340b6: d106 bne.n 80340c6 + 80340ea: 697b ldr r3, [r7, #20] + 80340ec: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 80340f0: d002 beq.n 80340f8 + 80340f2: 697b ldr r3, [r7, #20] + 80340f4: 2b00 cmp r3, #0 + 80340f6: d106 bne.n 8034106 { /* Last Byte is Transmitted */ /* Call I2C Slave Sequential complete process */ I2C_ITSlaveSeqCplt(hi2c); - 80340b8: 68f8 ldr r0, [r7, #12] - 80340ba: f000 f891 bl 80341e0 - 80340be: e002 b.n 80340c6 + 80340f8: 68f8 ldr r0, [r7, #12] + 80340fa: f000 f891 bl 8034220 + 80340fe: e002 b.n 8034106 if (hi2c->XferCount == 0U) - 80340c0: bf00 nop - 80340c2: e000 b.n 80340c6 + 8034100: bf00 nop + 8034102: e000 b.n 8034106 if ((hi2c->XferCount == 0U) && \ - 80340c4: bf00 nop + 8034104: bf00 nop { /* Nothing to do */ } /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80340c6: 68fb ldr r3, [r7, #12] - 80340c8: 2200 movs r2, #0 - 80340ca: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034106: 68fb ldr r3, [r7, #12] + 8034108: 2200 movs r2, #0 + 803410a: f883 2040 strb.w r2, [r3, #64] ; 0x40 return HAL_OK; - 80340ce: 2300 movs r3, #0 + 803410e: 2300 movs r3, #0 } - 80340d0: 4618 mov r0, r3 - 80340d2: 3718 adds r7, #24 - 80340d4: 46bd mov sp, r7 - 80340d6: bd80 pop {r7, pc} + 8034110: 4618 mov r0, r3 + 8034112: 3718 adds r7, #24 + 8034114: 46bd mov sp, r7 + 8034116: bd80 pop {r7, pc} -080340d8 : +08034118 : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITAddrCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 80340d8: b580 push {r7, lr} - 80340da: b084 sub sp, #16 - 80340dc: af00 add r7, sp, #0 - 80340de: 6078 str r0, [r7, #4] - 80340e0: 6039 str r1, [r7, #0] + 8034118: b580 push {r7, lr} + 803411a: b084 sub sp, #16 + 803411c: af00 add r7, sp, #0 + 803411e: 6078 str r0, [r7, #4] + 8034120: 6039 str r1, [r7, #0] /* Prevent unused argument(s) compilation warning */ UNUSED(ITFlags); /* In case of Listen state, need to inform upper layer of address match code event */ if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) == (uint32_t)HAL_I2C_STATE_LISTEN) - 80340e2: 687b ldr r3, [r7, #4] - 80340e4: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80340e8: b2db uxtb r3, r3 - 80340ea: f003 0328 and.w r3, r3, #40 ; 0x28 - 80340ee: 2b28 cmp r3, #40 ; 0x28 - 80340f0: d16a bne.n 80341c8 + 8034122: 687b ldr r3, [r7, #4] + 8034124: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034128: b2db uxtb r3, r3 + 803412a: f003 0328 and.w r3, r3, #40 ; 0x28 + 803412e: 2b28 cmp r3, #40 ; 0x28 + 8034130: d16a bne.n 8034208 { transferdirection = I2C_GET_DIR(hi2c); - 80340f2: 687b ldr r3, [r7, #4] - 80340f4: 681b ldr r3, [r3, #0] - 80340f6: 699b ldr r3, [r3, #24] - 80340f8: 0c1b lsrs r3, r3, #16 - 80340fa: b2db uxtb r3, r3 - 80340fc: f003 0301 and.w r3, r3, #1 - 8034100: 73fb strb r3, [r7, #15] + 8034132: 687b ldr r3, [r7, #4] + 8034134: 681b ldr r3, [r3, #0] + 8034136: 699b ldr r3, [r3, #24] + 8034138: 0c1b lsrs r3, r3, #16 + 803413a: b2db uxtb r3, r3 + 803413c: f003 0301 and.w r3, r3, #1 + 8034140: 73fb strb r3, [r7, #15] slaveaddrcode = I2C_GET_ADDR_MATCH(hi2c); - 8034102: 687b ldr r3, [r7, #4] - 8034104: 681b ldr r3, [r3, #0] - 8034106: 699b ldr r3, [r3, #24] - 8034108: 0c1b lsrs r3, r3, #16 - 803410a: b29b uxth r3, r3 - 803410c: f003 03fe and.w r3, r3, #254 ; 0xfe - 8034110: 81bb strh r3, [r7, #12] + 8034142: 687b ldr r3, [r7, #4] + 8034144: 681b ldr r3, [r3, #0] + 8034146: 699b ldr r3, [r3, #24] + 8034148: 0c1b lsrs r3, r3, #16 + 803414a: b29b uxth r3, r3 + 803414c: f003 03fe and.w r3, r3, #254 ; 0xfe + 8034150: 81bb strh r3, [r7, #12] ownadd1code = I2C_GET_OWN_ADDRESS1(hi2c); - 8034112: 687b ldr r3, [r7, #4] - 8034114: 681b ldr r3, [r3, #0] - 8034116: 689b ldr r3, [r3, #8] - 8034118: b29b uxth r3, r3 - 803411a: f3c3 0309 ubfx r3, r3, #0, #10 - 803411e: 817b strh r3, [r7, #10] + 8034152: 687b ldr r3, [r7, #4] + 8034154: 681b ldr r3, [r3, #0] + 8034156: 689b ldr r3, [r3, #8] + 8034158: b29b uxth r3, r3 + 803415a: f3c3 0309 ubfx r3, r3, #0, #10 + 803415e: 817b strh r3, [r7, #10] ownadd2code = I2C_GET_OWN_ADDRESS2(hi2c); - 8034120: 687b ldr r3, [r7, #4] - 8034122: 681b ldr r3, [r3, #0] - 8034124: 68db ldr r3, [r3, #12] - 8034126: b29b uxth r3, r3 - 8034128: f003 03fe and.w r3, r3, #254 ; 0xfe - 803412c: 813b strh r3, [r7, #8] + 8034160: 687b ldr r3, [r7, #4] + 8034162: 681b ldr r3, [r3, #0] + 8034164: 68db ldr r3, [r3, #12] + 8034166: b29b uxth r3, r3 + 8034168: f003 03fe and.w r3, r3, #254 ; 0xfe + 803416c: 813b strh r3, [r7, #8] /* If 10bits addressing mode is selected */ if (hi2c->Init.AddressingMode == I2C_ADDRESSINGMODE_10BIT) - 803412e: 687b ldr r3, [r7, #4] - 8034130: 68db ldr r3, [r3, #12] - 8034132: 2b02 cmp r3, #2 - 8034134: d138 bne.n 80341a8 + 803416e: 687b ldr r3, [r7, #4] + 8034170: 68db ldr r3, [r3, #12] + 8034172: 2b02 cmp r3, #2 + 8034174: d138 bne.n 80341e8 { if ((slaveaddrcode & SLAVE_ADDR_MSK) == ((ownadd1code >> SLAVE_ADDR_SHIFT) & SLAVE_ADDR_MSK)) - 8034136: 897b ldrh r3, [r7, #10] - 8034138: 09db lsrs r3, r3, #7 - 803413a: b29a uxth r2, r3 - 803413c: 89bb ldrh r3, [r7, #12] - 803413e: 4053 eors r3, r2 - 8034140: b29b uxth r3, r3 - 8034142: f003 0306 and.w r3, r3, #6 - 8034146: 2b00 cmp r3, #0 - 8034148: d11c bne.n 8034184 + 8034176: 897b ldrh r3, [r7, #10] + 8034178: 09db lsrs r3, r3, #7 + 803417a: b29a uxth r2, r3 + 803417c: 89bb ldrh r3, [r7, #12] + 803417e: 4053 eors r3, r2 + 8034180: b29b uxth r3, r3 + 8034182: f003 0306 and.w r3, r3, #6 + 8034186: 2b00 cmp r3, #0 + 8034188: d11c bne.n 80341c4 { slaveaddrcode = ownadd1code; - 803414a: 897b ldrh r3, [r7, #10] - 803414c: 81bb strh r3, [r7, #12] + 803418a: 897b ldrh r3, [r7, #10] + 803418c: 81bb strh r3, [r7, #12] hi2c->AddrEventCount++; - 803414e: 687b ldr r3, [r7, #4] - 8034150: 6c9b ldr r3, [r3, #72] ; 0x48 - 8034152: 1c5a adds r2, r3, #1 - 8034154: 687b ldr r3, [r7, #4] - 8034156: 649a str r2, [r3, #72] ; 0x48 + 803418e: 687b ldr r3, [r7, #4] + 8034190: 6c9b ldr r3, [r3, #72] ; 0x48 + 8034192: 1c5a adds r2, r3, #1 + 8034194: 687b ldr r3, [r7, #4] + 8034196: 649a str r2, [r3, #72] ; 0x48 if (hi2c->AddrEventCount == 2U) - 8034158: 687b ldr r3, [r7, #4] - 803415a: 6c9b ldr r3, [r3, #72] ; 0x48 - 803415c: 2b02 cmp r3, #2 - 803415e: d13b bne.n 80341d8 + 8034198: 687b ldr r3, [r7, #4] + 803419a: 6c9b ldr r3, [r3, #72] ; 0x48 + 803419c: 2b02 cmp r3, #2 + 803419e: d13b bne.n 8034218 { /* Reset Address Event counter */ hi2c->AddrEventCount = 0U; - 8034160: 687b ldr r3, [r7, #4] - 8034162: 2200 movs r2, #0 - 8034164: 649a str r2, [r3, #72] ; 0x48 + 80341a0: 687b ldr r3, [r7, #4] + 80341a2: 2200 movs r2, #0 + 80341a4: 649a str r2, [r3, #72] ; 0x48 /* Clear ADDR flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 8034166: 687b ldr r3, [r7, #4] - 8034168: 681b ldr r3, [r3, #0] - 803416a: 2208 movs r2, #8 - 803416c: 61da str r2, [r3, #28] + 80341a6: 687b ldr r3, [r7, #4] + 80341a8: 681b ldr r3, [r3, #0] + 80341aa: 2208 movs r2, #8 + 80341ac: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 803416e: 687b ldr r3, [r7, #4] - 8034170: 2200 movs r2, #0 - 8034172: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80341ae: 687b ldr r3, [r7, #4] + 80341b0: 2200 movs r2, #0 + 80341b2: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Call Slave Addr callback */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AddrCallback(hi2c, transferdirection, slaveaddrcode); #else HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 8034176: 89ba ldrh r2, [r7, #12] - 8034178: 7bfb ldrb r3, [r7, #15] - 803417a: 4619 mov r1, r3 - 803417c: 6878 ldr r0, [r7, #4] - 803417e: f7ff fe7c bl 8033e7a + 80341b6: 89ba ldrh r2, [r7, #12] + 80341b8: 7bfb ldrb r3, [r7, #15] + 80341ba: 4619 mov r1, r3 + 80341bc: 6878 ldr r0, [r7, #4] + 80341be: f7ff fe7c bl 8033eba __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); /* Process Unlocked */ __HAL_UNLOCK(hi2c); } } - 8034182: e029 b.n 80341d8 + 80341c2: e029 b.n 8034218 slaveaddrcode = ownadd2code; - 8034184: 893b ldrh r3, [r7, #8] - 8034186: 81bb strh r3, [r7, #12] + 80341c4: 893b ldrh r3, [r7, #8] + 80341c6: 81bb strh r3, [r7, #12] I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 8034188: f44f 4100 mov.w r1, #32768 ; 0x8000 - 803418c: 6878 ldr r0, [r7, #4] - 803418e: f000 fc0c bl 80349aa + 80341c8: f44f 4100 mov.w r1, #32768 ; 0x8000 + 80341cc: 6878 ldr r0, [r7, #4] + 80341ce: f000 fc0c bl 80349ea __HAL_UNLOCK(hi2c); - 8034192: 687b ldr r3, [r7, #4] - 8034194: 2200 movs r2, #0 - 8034196: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80341d2: 687b ldr r3, [r7, #4] + 80341d4: 2200 movs r2, #0 + 80341d6: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 803419a: 89ba ldrh r2, [r7, #12] - 803419c: 7bfb ldrb r3, [r7, #15] - 803419e: 4619 mov r1, r3 - 80341a0: 6878 ldr r0, [r7, #4] - 80341a2: f7ff fe6a bl 8033e7a + 80341da: 89ba ldrh r2, [r7, #12] + 80341dc: 7bfb ldrb r3, [r7, #15] + 80341de: 4619 mov r1, r3 + 80341e0: 6878 ldr r0, [r7, #4] + 80341e2: f7ff fe6a bl 8033eba } - 80341a6: e017 b.n 80341d8 + 80341e6: e017 b.n 8034218 I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT); - 80341a8: f44f 4100 mov.w r1, #32768 ; 0x8000 - 80341ac: 6878 ldr r0, [r7, #4] - 80341ae: f000 fbfc bl 80349aa + 80341e8: f44f 4100 mov.w r1, #32768 ; 0x8000 + 80341ec: 6878 ldr r0, [r7, #4] + 80341ee: f000 fbfc bl 80349ea __HAL_UNLOCK(hi2c); - 80341b2: 687b ldr r3, [r7, #4] - 80341b4: 2200 movs r2, #0 - 80341b6: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80341f2: 687b ldr r3, [r7, #4] + 80341f4: 2200 movs r2, #0 + 80341f6: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_AddrCallback(hi2c, transferdirection, slaveaddrcode); - 80341ba: 89ba ldrh r2, [r7, #12] - 80341bc: 7bfb ldrb r3, [r7, #15] - 80341be: 4619 mov r1, r3 - 80341c0: 6878 ldr r0, [r7, #4] - 80341c2: f7ff fe5a bl 8033e7a + 80341fa: 89ba ldrh r2, [r7, #12] + 80341fc: 7bfb ldrb r3, [r7, #15] + 80341fe: 4619 mov r1, r3 + 8034200: 6878 ldr r0, [r7, #4] + 8034202: f7ff fe5a bl 8033eba } - 80341c6: e007 b.n 80341d8 + 8034206: e007 b.n 8034218 __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_ADDR); - 80341c8: 687b ldr r3, [r7, #4] - 80341ca: 681b ldr r3, [r3, #0] - 80341cc: 2208 movs r2, #8 - 80341ce: 61da str r2, [r3, #28] + 8034208: 687b ldr r3, [r7, #4] + 803420a: 681b ldr r3, [r3, #0] + 803420c: 2208 movs r2, #8 + 803420e: 61da str r2, [r3, #28] __HAL_UNLOCK(hi2c); - 80341d0: 687b ldr r3, [r7, #4] - 80341d2: 2200 movs r2, #0 - 80341d4: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034210: 687b ldr r3, [r7, #4] + 8034212: 2200 movs r2, #0 + 8034214: f883 2040 strb.w r2, [r3, #64] ; 0x40 } - 80341d8: bf00 nop - 80341da: 3710 adds r7, #16 - 80341dc: 46bd mov sp, r7 - 80341de: bd80 pop {r7, pc} + 8034218: bf00 nop + 803421a: 3710 adds r7, #16 + 803421c: 46bd mov sp, r7 + 803421e: bd80 pop {r7, pc} -080341e0 : +08034220 : * @brief I2C Slave sequential complete process. * @param hi2c I2C handle. * @retval None */ static void I2C_ITSlaveSeqCplt(I2C_HandleTypeDef *hi2c) { - 80341e0: b580 push {r7, lr} - 80341e2: b084 sub sp, #16 - 80341e4: af00 add r7, sp, #0 - 80341e6: 6078 str r0, [r7, #4] + 8034220: b580 push {r7, lr} + 8034222: b084 sub sp, #16 + 8034224: af00 add r7, sp, #0 + 8034226: 6078 str r0, [r7, #4] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 80341e8: 687b ldr r3, [r7, #4] - 80341ea: 681b ldr r3, [r3, #0] - 80341ec: 681b ldr r3, [r3, #0] - 80341ee: 60fb str r3, [r7, #12] + 8034228: 687b ldr r3, [r7, #4] + 803422a: 681b ldr r3, [r3, #0] + 803422c: 681b ldr r3, [r3, #0] + 803422e: 60fb str r3, [r7, #12] /* Reset I2C handle mode */ hi2c->Mode = HAL_I2C_MODE_NONE; - 80341f0: 687b ldr r3, [r7, #4] - 80341f2: 2200 movs r2, #0 - 80341f4: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 8034230: 687b ldr r3, [r7, #4] + 8034232: 2200 movs r2, #0 + 8034234: f883 2042 strb.w r2, [r3, #66] ; 0x42 /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 80341f8: 68fb ldr r3, [r7, #12] - 80341fa: 0b9b lsrs r3, r3, #14 - 80341fc: f003 0301 and.w r3, r3, #1 - 8034200: 2b00 cmp r3, #0 - 8034202: d008 beq.n 8034216 + 8034238: 68fb ldr r3, [r7, #12] + 803423a: 0b9b lsrs r3, r3, #14 + 803423c: f003 0301 and.w r3, r3, #1 + 8034240: 2b00 cmp r3, #0 + 8034242: d008 beq.n 8034256 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 8034204: 687b ldr r3, [r7, #4] - 8034206: 681b ldr r3, [r3, #0] - 8034208: 681a ldr r2, [r3, #0] - 803420a: 687b ldr r3, [r7, #4] - 803420c: 681b ldr r3, [r3, #0] - 803420e: f422 4280 bic.w r2, r2, #16384 ; 0x4000 - 8034212: 601a str r2, [r3, #0] - 8034214: e00d b.n 8034232 + 8034244: 687b ldr r3, [r7, #4] + 8034246: 681b ldr r3, [r3, #0] + 8034248: 681a ldr r2, [r3, #0] + 803424a: 687b ldr r3, [r7, #4] + 803424c: 681b ldr r3, [r3, #0] + 803424e: f422 4280 bic.w r2, r2, #16384 ; 0x4000 + 8034252: 601a str r2, [r3, #0] + 8034254: e00d b.n 8034272 } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 8034216: 68fb ldr r3, [r7, #12] - 8034218: 0bdb lsrs r3, r3, #15 - 803421a: f003 0301 and.w r3, r3, #1 - 803421e: 2b00 cmp r3, #0 - 8034220: d007 beq.n 8034232 + 8034256: 68fb ldr r3, [r7, #12] + 8034258: 0bdb lsrs r3, r3, #15 + 803425a: f003 0301 and.w r3, r3, #1 + 803425e: 2b00 cmp r3, #0 + 8034260: d007 beq.n 8034272 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8034222: 687b ldr r3, [r7, #4] - 8034224: 681b ldr r3, [r3, #0] - 8034226: 681a ldr r2, [r3, #0] - 8034228: 687b ldr r3, [r7, #4] - 803422a: 681b ldr r3, [r3, #0] - 803422c: f422 4200 bic.w r2, r2, #32768 ; 0x8000 - 8034230: 601a str r2, [r3, #0] + 8034262: 687b ldr r3, [r7, #4] + 8034264: 681b ldr r3, [r3, #0] + 8034266: 681a ldr r2, [r3, #0] + 8034268: 687b ldr r3, [r7, #4] + 803426a: 681b ldr r3, [r3, #0] + 803426c: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8034270: 601a str r2, [r3, #0] else { /* Do nothing */ } if (hi2c->State == HAL_I2C_STATE_BUSY_TX_LISTEN) - 8034232: 687b ldr r3, [r7, #4] - 8034234: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034238: b2db uxtb r3, r3 - 803423a: 2b29 cmp r3, #41 ; 0x29 - 803423c: d112 bne.n 8034264 + 8034272: 687b ldr r3, [r7, #4] + 8034274: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034278: b2db uxtb r3, r3 + 803427a: 2b29 cmp r3, #41 ; 0x29 + 803427c: d112 bne.n 80342a4 { /* Remove HAL_I2C_STATE_SLAVE_BUSY_TX, keep only HAL_I2C_STATE_LISTEN */ hi2c->State = HAL_I2C_STATE_LISTEN; - 803423e: 687b ldr r3, [r7, #4] - 8034240: 2228 movs r2, #40 ; 0x28 - 8034242: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 803427e: 687b ldr r3, [r7, #4] + 8034280: 2228 movs r2, #40 ; 0x28 + 8034282: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 8034246: 687b ldr r3, [r7, #4] - 8034248: 2221 movs r2, #33 ; 0x21 - 803424a: 631a str r2, [r3, #48] ; 0x30 + 8034286: 687b ldr r3, [r7, #4] + 8034288: 2221 movs r2, #33 ; 0x21 + 803428a: 631a str r2, [r3, #48] ; 0x30 /* Disable Interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_TX_IT); - 803424c: 2101 movs r1, #1 - 803424e: 6878 ldr r0, [r7, #4] - 8034250: f000 fbab bl 80349aa + 803428c: 2101 movs r1, #1 + 803428e: 6878 ldr r0, [r7, #4] + 8034290: f000 fbab bl 80349ea /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8034254: 687b ldr r3, [r7, #4] - 8034256: 2200 movs r2, #0 - 8034258: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034294: 687b ldr r3, [r7, #4] + 8034296: 2200 movs r2, #0 + 8034298: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); - 803425c: 6878 ldr r0, [r7, #4] - 803425e: f7ff fdf8 bl 8033e52 + 803429c: 6878 ldr r0, [r7, #4] + 803429e: f7ff fdf8 bl 8033e92 } else { /* Nothing to do */ } } - 8034262: e017 b.n 8034294 + 80342a2: e017 b.n 80342d4 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX_LISTEN) - 8034264: 687b ldr r3, [r7, #4] - 8034266: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 803426a: b2db uxtb r3, r3 - 803426c: 2b2a cmp r3, #42 ; 0x2a - 803426e: d111 bne.n 8034294 + 80342a4: 687b ldr r3, [r7, #4] + 80342a6: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 80342aa: b2db uxtb r3, r3 + 80342ac: 2b2a cmp r3, #42 ; 0x2a + 80342ae: d111 bne.n 80342d4 hi2c->State = HAL_I2C_STATE_LISTEN; - 8034270: 687b ldr r3, [r7, #4] - 8034272: 2228 movs r2, #40 ; 0x28 - 8034274: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80342b0: 687b ldr r3, [r7, #4] + 80342b2: 2228 movs r2, #40 ; 0x28 + 80342b4: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 8034278: 687b ldr r3, [r7, #4] - 803427a: 2222 movs r2, #34 ; 0x22 - 803427c: 631a str r2, [r3, #48] ; 0x30 + 80342b8: 687b ldr r3, [r7, #4] + 80342ba: 2222 movs r2, #34 ; 0x22 + 80342bc: 631a str r2, [r3, #48] ; 0x30 I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT); - 803427e: 2102 movs r1, #2 - 8034280: 6878 ldr r0, [r7, #4] - 8034282: f000 fb92 bl 80349aa + 80342be: 2102 movs r1, #2 + 80342c0: 6878 ldr r0, [r7, #4] + 80342c2: f000 fb92 bl 80349ea __HAL_UNLOCK(hi2c); - 8034286: 687b ldr r3, [r7, #4] - 8034288: 2200 movs r2, #0 - 803428a: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80342c6: 687b ldr r3, [r7, #4] + 80342c8: 2200 movs r2, #0 + 80342ca: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_SlaveRxCpltCallback(hi2c); - 803428e: 6878 ldr r0, [r7, #4] - 8034290: f7ff fde9 bl 8033e66 + 80342ce: 6878 ldr r0, [r7, #4] + 80342d0: f7ff fde9 bl 8033ea6 } - 8034294: bf00 nop - 8034296: 3710 adds r7, #16 - 8034298: 46bd mov sp, r7 - 803429a: bd80 pop {r7, pc} + 80342d4: bf00 nop + 80342d6: 3710 adds r7, #16 + 80342d8: 46bd mov sp, r7 + 80342da: bd80 pop {r7, pc} -0803429c : +080342dc : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITSlaveCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 803429c: b580 push {r7, lr} - 803429e: b086 sub sp, #24 - 80342a0: af00 add r7, sp, #0 - 80342a2: 6078 str r0, [r7, #4] - 80342a4: 6039 str r1, [r7, #0] + 80342dc: b580 push {r7, lr} + 80342de: b086 sub sp, #24 + 80342e0: af00 add r7, sp, #0 + 80342e2: 6078 str r0, [r7, #4] + 80342e4: 6039 str r1, [r7, #0] uint32_t tmpcr1value = READ_REG(hi2c->Instance->CR1); - 80342a6: 687b ldr r3, [r7, #4] - 80342a8: 681b ldr r3, [r3, #0] - 80342aa: 681b ldr r3, [r3, #0] - 80342ac: 613b str r3, [r7, #16] + 80342e6: 687b ldr r3, [r7, #4] + 80342e8: 681b ldr r3, [r3, #0] + 80342ea: 681b ldr r3, [r3, #0] + 80342ec: 613b str r3, [r7, #16] uint32_t tmpITFlags = ITFlags; - 80342ae: 683b ldr r3, [r7, #0] - 80342b0: 617b str r3, [r7, #20] + 80342ee: 683b ldr r3, [r7, #0] + 80342f0: 617b str r3, [r7, #20] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 80342b2: 687b ldr r3, [r7, #4] - 80342b4: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80342b8: 73fb strb r3, [r7, #15] + 80342f2: 687b ldr r3, [r7, #4] + 80342f4: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 80342f8: 73fb strb r3, [r7, #15] /* Clear STOP Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_STOPF); - 80342ba: 687b ldr r3, [r7, #4] - 80342bc: 681b ldr r3, [r3, #0] - 80342be: 2220 movs r2, #32 - 80342c0: 61da str r2, [r3, #28] + 80342fa: 687b ldr r3, [r7, #4] + 80342fc: 681b ldr r3, [r3, #0] + 80342fe: 2220 movs r2, #32 + 8034300: 61da str r2, [r3, #28] /* Disable Interrupts and Store Previous state */ if ((tmpstate == HAL_I2C_STATE_BUSY_TX) || (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN)) - 80342c2: 7bfb ldrb r3, [r7, #15] - 80342c4: 2b21 cmp r3, #33 ; 0x21 - 80342c6: d002 beq.n 80342ce - 80342c8: 7bfb ldrb r3, [r7, #15] - 80342ca: 2b29 cmp r3, #41 ; 0x29 - 80342cc: d108 bne.n 80342e0 + 8034302: 7bfb ldrb r3, [r7, #15] + 8034304: 2b21 cmp r3, #33 ; 0x21 + 8034306: d002 beq.n 803430e + 8034308: 7bfb ldrb r3, [r7, #15] + 803430a: 2b29 cmp r3, #41 ; 0x29 + 803430c: d108 bne.n 8034320 { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_TX_IT); - 80342ce: f248 0101 movw r1, #32769 ; 0x8001 - 80342d2: 6878 ldr r0, [r7, #4] - 80342d4: f000 fb69 bl 80349aa + 803430e: f248 0101 movw r1, #32769 ; 0x8001 + 8034312: 6878 ldr r0, [r7, #4] + 8034314: f000 fb69 bl 80349ea hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_TX; - 80342d8: 687b ldr r3, [r7, #4] - 80342da: 2221 movs r2, #33 ; 0x21 - 80342dc: 631a str r2, [r3, #48] ; 0x30 - 80342de: e00d b.n 80342fc + 8034318: 687b ldr r3, [r7, #4] + 803431a: 2221 movs r2, #33 ; 0x21 + 803431c: 631a str r2, [r3, #48] ; 0x30 + 803431e: e00d b.n 803433c } else if ((tmpstate == HAL_I2C_STATE_BUSY_RX) || (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) - 80342e0: 7bfb ldrb r3, [r7, #15] - 80342e2: 2b22 cmp r3, #34 ; 0x22 - 80342e4: d002 beq.n 80342ec - 80342e6: 7bfb ldrb r3, [r7, #15] - 80342e8: 2b2a cmp r3, #42 ; 0x2a - 80342ea: d107 bne.n 80342fc + 8034320: 7bfb ldrb r3, [r7, #15] + 8034322: 2b22 cmp r3, #34 ; 0x22 + 8034324: d002 beq.n 803432c + 8034326: 7bfb ldrb r3, [r7, #15] + 8034328: 2b2a cmp r3, #42 ; 0x2a + 803432a: d107 bne.n 803433c { I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT); - 80342ec: f248 0102 movw r1, #32770 ; 0x8002 - 80342f0: 6878 ldr r0, [r7, #4] - 80342f2: f000 fb5a bl 80349aa + 803432c: f248 0102 movw r1, #32770 ; 0x8002 + 8034330: 6878 ldr r0, [r7, #4] + 8034332: f000 fb5a bl 80349ea hi2c->PreviousState = I2C_STATE_SLAVE_BUSY_RX; - 80342f6: 687b ldr r3, [r7, #4] - 80342f8: 2222 movs r2, #34 ; 0x22 - 80342fa: 631a str r2, [r3, #48] ; 0x30 + 8034336: 687b ldr r3, [r7, #4] + 8034338: 2222 movs r2, #34 ; 0x22 + 803433a: 631a str r2, [r3, #48] ; 0x30 { /* Do nothing */ } /* Disable Address Acknowledge */ hi2c->Instance->CR2 |= I2C_CR2_NACK; - 80342fc: 687b ldr r3, [r7, #4] - 80342fe: 681b ldr r3, [r3, #0] - 8034300: 685a ldr r2, [r3, #4] - 8034302: 687b ldr r3, [r7, #4] - 8034304: 681b ldr r3, [r3, #0] - 8034306: f442 4200 orr.w r2, r2, #32768 ; 0x8000 - 803430a: 605a str r2, [r3, #4] + 803433c: 687b ldr r3, [r7, #4] + 803433e: 681b ldr r3, [r3, #0] + 8034340: 685a ldr r2, [r3, #4] + 8034342: 687b ldr r3, [r7, #4] + 8034344: 681b ldr r3, [r3, #0] + 8034346: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 803434a: 605a str r2, [r3, #4] /* Clear Configuration Register 2 */ I2C_RESET_CR2(hi2c); - 803430c: 687b ldr r3, [r7, #4] - 803430e: 681b ldr r3, [r3, #0] - 8034310: 6859 ldr r1, [r3, #4] - 8034312: 687b ldr r3, [r7, #4] - 8034314: 681a ldr r2, [r3, #0] - 8034316: 4b80 ldr r3, [pc, #512] ; (8034518 ) - 8034318: 400b ands r3, r1 - 803431a: 6053 str r3, [r2, #4] + 803434c: 687b ldr r3, [r7, #4] + 803434e: 681b ldr r3, [r3, #0] + 8034350: 6859 ldr r1, [r3, #4] + 8034352: 687b ldr r3, [r7, #4] + 8034354: 681a ldr r2, [r3, #0] + 8034356: 4b80 ldr r3, [pc, #512] ; (8034558 ) + 8034358: 400b ands r3, r1 + 803435a: 6053 str r3, [r2, #4] /* Flush TX register */ I2C_Flush_TXDR(hi2c); - 803431c: 6878 ldr r0, [r7, #4] - 803431e: f000 fb02 bl 8034926 + 803435c: 6878 ldr r0, [r7, #4] + 803435e: f000 fb02 bl 8034966 /* If a DMA is ongoing, Update handle size context */ if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_TXDMAEN) != RESET) - 8034322: 693b ldr r3, [r7, #16] - 8034324: 0b9b lsrs r3, r3, #14 - 8034326: f003 0301 and.w r3, r3, #1 - 803432a: 2b00 cmp r3, #0 - 803432c: d07a beq.n 8034424 + 8034362: 693b ldr r3, [r7, #16] + 8034364: 0b9b lsrs r3, r3, #14 + 8034366: f003 0301 and.w r3, r3, #1 + 803436a: 2b00 cmp r3, #0 + 803436c: d07a beq.n 8034464 { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 803432e: 687b ldr r3, [r7, #4] - 8034330: 681b ldr r3, [r3, #0] - 8034332: 681a ldr r2, [r3, #0] - 8034334: 687b ldr r3, [r7, #4] - 8034336: 681b ldr r3, [r3, #0] - 8034338: f422 4280 bic.w r2, r2, #16384 ; 0x4000 - 803433c: 601a str r2, [r3, #0] + 803436e: 687b ldr r3, [r7, #4] + 8034370: 681b ldr r3, [r3, #0] + 8034372: 681a ldr r2, [r3, #0] + 8034374: 687b ldr r3, [r7, #4] + 8034376: 681b ldr r3, [r3, #0] + 8034378: f422 4280 bic.w r2, r2, #16384 ; 0x4000 + 803437c: 601a str r2, [r3, #0] if (hi2c->hdmatx != NULL) - 803433e: 687b ldr r3, [r7, #4] - 8034340: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034342: 2b00 cmp r3, #0 - 8034344: f000 8111 beq.w 803456a + 803437e: 687b ldr r3, [r7, #4] + 8034380: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034382: 2b00 cmp r3, #0 + 8034384: f000 8111 beq.w 80345aa { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmatx); - 8034348: 687b ldr r3, [r7, #4] - 803434a: 6b9b ldr r3, [r3, #56] ; 0x38 - 803434c: 681b ldr r3, [r3, #0] - 803434e: 4a73 ldr r2, [pc, #460] ; (803451c ) - 8034350: 4293 cmp r3, r2 - 8034352: d059 beq.n 8034408 - 8034354: 687b ldr r3, [r7, #4] - 8034356: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034358: 681b ldr r3, [r3, #0] - 803435a: 4a71 ldr r2, [pc, #452] ; (8034520 ) - 803435c: 4293 cmp r3, r2 - 803435e: d053 beq.n 8034408 - 8034360: 687b ldr r3, [r7, #4] - 8034362: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034364: 681b ldr r3, [r3, #0] - 8034366: 4a6f ldr r2, [pc, #444] ; (8034524 ) - 8034368: 4293 cmp r3, r2 - 803436a: d04d beq.n 8034408 - 803436c: 687b ldr r3, [r7, #4] - 803436e: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034370: 681b ldr r3, [r3, #0] - 8034372: 4a6d ldr r2, [pc, #436] ; (8034528 ) - 8034374: 4293 cmp r3, r2 - 8034376: d047 beq.n 8034408 - 8034378: 687b ldr r3, [r7, #4] - 803437a: 6b9b ldr r3, [r3, #56] ; 0x38 - 803437c: 681b ldr r3, [r3, #0] - 803437e: 4a6b ldr r2, [pc, #428] ; (803452c ) - 8034380: 4293 cmp r3, r2 - 8034382: d041 beq.n 8034408 - 8034384: 687b ldr r3, [r7, #4] - 8034386: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034388: 681b ldr r3, [r3, #0] - 803438a: 4a69 ldr r2, [pc, #420] ; (8034530 ) - 803438c: 4293 cmp r3, r2 - 803438e: d03b beq.n 8034408 - 8034390: 687b ldr r3, [r7, #4] - 8034392: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034394: 681b ldr r3, [r3, #0] - 8034396: 4a67 ldr r2, [pc, #412] ; (8034534 ) - 8034398: 4293 cmp r3, r2 - 803439a: d035 beq.n 8034408 - 803439c: 687b ldr r3, [r7, #4] - 803439e: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343a0: 681b ldr r3, [r3, #0] - 80343a2: 4a65 ldr r2, [pc, #404] ; (8034538 ) - 80343a4: 4293 cmp r3, r2 - 80343a6: d02f beq.n 8034408 - 80343a8: 687b ldr r3, [r7, #4] - 80343aa: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343ac: 681b ldr r3, [r3, #0] - 80343ae: 4a63 ldr r2, [pc, #396] ; (803453c ) - 80343b0: 4293 cmp r3, r2 - 80343b2: d029 beq.n 8034408 - 80343b4: 687b ldr r3, [r7, #4] - 80343b6: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343b8: 681b ldr r3, [r3, #0] - 80343ba: 4a61 ldr r2, [pc, #388] ; (8034540 ) - 80343bc: 4293 cmp r3, r2 - 80343be: d023 beq.n 8034408 - 80343c0: 687b ldr r3, [r7, #4] - 80343c2: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343c4: 681b ldr r3, [r3, #0] - 80343c6: 4a5f ldr r2, [pc, #380] ; (8034544 ) - 80343c8: 4293 cmp r3, r2 - 80343ca: d01d beq.n 8034408 - 80343cc: 687b ldr r3, [r7, #4] - 80343ce: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343d0: 681b ldr r3, [r3, #0] - 80343d2: 4a5d ldr r2, [pc, #372] ; (8034548 ) - 80343d4: 4293 cmp r3, r2 - 80343d6: d017 beq.n 8034408 - 80343d8: 687b ldr r3, [r7, #4] - 80343da: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343dc: 681b ldr r3, [r3, #0] - 80343de: 4a5b ldr r2, [pc, #364] ; (803454c ) - 80343e0: 4293 cmp r3, r2 - 80343e2: d011 beq.n 8034408 - 80343e4: 687b ldr r3, [r7, #4] - 80343e6: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343e8: 681b ldr r3, [r3, #0] - 80343ea: 4a59 ldr r2, [pc, #356] ; (8034550 ) - 80343ec: 4293 cmp r3, r2 - 80343ee: d00b beq.n 8034408 - 80343f0: 687b ldr r3, [r7, #4] - 80343f2: 6b9b ldr r3, [r3, #56] ; 0x38 - 80343f4: 681b ldr r3, [r3, #0] - 80343f6: 4a57 ldr r2, [pc, #348] ; (8034554 ) - 80343f8: 4293 cmp r3, r2 - 80343fa: d005 beq.n 8034408 - 80343fc: 687b ldr r3, [r7, #4] - 80343fe: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034400: 681b ldr r3, [r3, #0] - 8034402: 4a55 ldr r2, [pc, #340] ; (8034558 ) - 8034404: 4293 cmp r3, r2 - 8034406: d105 bne.n 8034414 - 8034408: 687b ldr r3, [r7, #4] - 803440a: 6b9b ldr r3, [r3, #56] ; 0x38 - 803440c: 681b ldr r3, [r3, #0] - 803440e: 685b ldr r3, [r3, #4] - 8034410: b29b uxth r3, r3 - 8034412: e004 b.n 803441e - 8034414: 687b ldr r3, [r7, #4] - 8034416: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034418: 681b ldr r3, [r3, #0] - 803441a: 685b ldr r3, [r3, #4] - 803441c: b29b uxth r3, r3 - 803441e: 687a ldr r2, [r7, #4] - 8034420: 8553 strh r3, [r2, #42] ; 0x2a - 8034422: e0a2 b.n 803456a + 8034388: 687b ldr r3, [r7, #4] + 803438a: 6b9b ldr r3, [r3, #56] ; 0x38 + 803438c: 681b ldr r3, [r3, #0] + 803438e: 4a73 ldr r2, [pc, #460] ; (803455c ) + 8034390: 4293 cmp r3, r2 + 8034392: d059 beq.n 8034448 + 8034394: 687b ldr r3, [r7, #4] + 8034396: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034398: 681b ldr r3, [r3, #0] + 803439a: 4a71 ldr r2, [pc, #452] ; (8034560 ) + 803439c: 4293 cmp r3, r2 + 803439e: d053 beq.n 8034448 + 80343a0: 687b ldr r3, [r7, #4] + 80343a2: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343a4: 681b ldr r3, [r3, #0] + 80343a6: 4a6f ldr r2, [pc, #444] ; (8034564 ) + 80343a8: 4293 cmp r3, r2 + 80343aa: d04d beq.n 8034448 + 80343ac: 687b ldr r3, [r7, #4] + 80343ae: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343b0: 681b ldr r3, [r3, #0] + 80343b2: 4a6d ldr r2, [pc, #436] ; (8034568 ) + 80343b4: 4293 cmp r3, r2 + 80343b6: d047 beq.n 8034448 + 80343b8: 687b ldr r3, [r7, #4] + 80343ba: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343bc: 681b ldr r3, [r3, #0] + 80343be: 4a6b ldr r2, [pc, #428] ; (803456c ) + 80343c0: 4293 cmp r3, r2 + 80343c2: d041 beq.n 8034448 + 80343c4: 687b ldr r3, [r7, #4] + 80343c6: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343c8: 681b ldr r3, [r3, #0] + 80343ca: 4a69 ldr r2, [pc, #420] ; (8034570 ) + 80343cc: 4293 cmp r3, r2 + 80343ce: d03b beq.n 8034448 + 80343d0: 687b ldr r3, [r7, #4] + 80343d2: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343d4: 681b ldr r3, [r3, #0] + 80343d6: 4a67 ldr r2, [pc, #412] ; (8034574 ) + 80343d8: 4293 cmp r3, r2 + 80343da: d035 beq.n 8034448 + 80343dc: 687b ldr r3, [r7, #4] + 80343de: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343e0: 681b ldr r3, [r3, #0] + 80343e2: 4a65 ldr r2, [pc, #404] ; (8034578 ) + 80343e4: 4293 cmp r3, r2 + 80343e6: d02f beq.n 8034448 + 80343e8: 687b ldr r3, [r7, #4] + 80343ea: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343ec: 681b ldr r3, [r3, #0] + 80343ee: 4a63 ldr r2, [pc, #396] ; (803457c ) + 80343f0: 4293 cmp r3, r2 + 80343f2: d029 beq.n 8034448 + 80343f4: 687b ldr r3, [r7, #4] + 80343f6: 6b9b ldr r3, [r3, #56] ; 0x38 + 80343f8: 681b ldr r3, [r3, #0] + 80343fa: 4a61 ldr r2, [pc, #388] ; (8034580 ) + 80343fc: 4293 cmp r3, r2 + 80343fe: d023 beq.n 8034448 + 8034400: 687b ldr r3, [r7, #4] + 8034402: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034404: 681b ldr r3, [r3, #0] + 8034406: 4a5f ldr r2, [pc, #380] ; (8034584 ) + 8034408: 4293 cmp r3, r2 + 803440a: d01d beq.n 8034448 + 803440c: 687b ldr r3, [r7, #4] + 803440e: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034410: 681b ldr r3, [r3, #0] + 8034412: 4a5d ldr r2, [pc, #372] ; (8034588 ) + 8034414: 4293 cmp r3, r2 + 8034416: d017 beq.n 8034448 + 8034418: 687b ldr r3, [r7, #4] + 803441a: 6b9b ldr r3, [r3, #56] ; 0x38 + 803441c: 681b ldr r3, [r3, #0] + 803441e: 4a5b ldr r2, [pc, #364] ; (803458c ) + 8034420: 4293 cmp r3, r2 + 8034422: d011 beq.n 8034448 + 8034424: 687b ldr r3, [r7, #4] + 8034426: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034428: 681b ldr r3, [r3, #0] + 803442a: 4a59 ldr r2, [pc, #356] ; (8034590 ) + 803442c: 4293 cmp r3, r2 + 803442e: d00b beq.n 8034448 + 8034430: 687b ldr r3, [r7, #4] + 8034432: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034434: 681b ldr r3, [r3, #0] + 8034436: 4a57 ldr r2, [pc, #348] ; (8034594 ) + 8034438: 4293 cmp r3, r2 + 803443a: d005 beq.n 8034448 + 803443c: 687b ldr r3, [r7, #4] + 803443e: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034440: 681b ldr r3, [r3, #0] + 8034442: 4a55 ldr r2, [pc, #340] ; (8034598 ) + 8034444: 4293 cmp r3, r2 + 8034446: d105 bne.n 8034454 + 8034448: 687b ldr r3, [r7, #4] + 803444a: 6b9b ldr r3, [r3, #56] ; 0x38 + 803444c: 681b ldr r3, [r3, #0] + 803444e: 685b ldr r3, [r3, #4] + 8034450: b29b uxth r3, r3 + 8034452: e004 b.n 803445e + 8034454: 687b ldr r3, [r7, #4] + 8034456: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034458: 681b ldr r3, [r3, #0] + 803445a: 685b ldr r3, [r3, #4] + 803445c: b29b uxth r3, r3 + 803445e: 687a ldr r2, [r7, #4] + 8034460: 8553 strh r3, [r2, #42] ; 0x2a + 8034462: e0a2 b.n 80345aa } } else if (I2C_CHECK_IT_SOURCE(tmpcr1value, I2C_CR1_RXDMAEN) != RESET) - 8034424: 693b ldr r3, [r7, #16] - 8034426: 0bdb lsrs r3, r3, #15 - 8034428: f003 0301 and.w r3, r3, #1 - 803442c: 2b00 cmp r3, #0 - 803442e: f000 809c beq.w 803456a + 8034464: 693b ldr r3, [r7, #16] + 8034466: 0bdb lsrs r3, r3, #15 + 8034468: f003 0301 and.w r3, r3, #1 + 803446c: 2b00 cmp r3, #0 + 803446e: f000 809c beq.w 80345aa { /* Disable DMA Request */ hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 8034432: 687b ldr r3, [r7, #4] - 8034434: 681b ldr r3, [r3, #0] - 8034436: 681a ldr r2, [r3, #0] - 8034438: 687b ldr r3, [r7, #4] - 803443a: 681b ldr r3, [r3, #0] - 803443c: f422 4200 bic.w r2, r2, #32768 ; 0x8000 - 8034440: 601a str r2, [r3, #0] + 8034472: 687b ldr r3, [r7, #4] + 8034474: 681b ldr r3, [r3, #0] + 8034476: 681a ldr r2, [r3, #0] + 8034478: 687b ldr r3, [r7, #4] + 803447a: 681b ldr r3, [r3, #0] + 803447c: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 8034480: 601a str r2, [r3, #0] if (hi2c->hdmarx != NULL) - 8034442: 687b ldr r3, [r7, #4] - 8034444: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034446: 2b00 cmp r3, #0 - 8034448: f000 808f beq.w 803456a + 8034482: 687b ldr r3, [r7, #4] + 8034484: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034486: 2b00 cmp r3, #0 + 8034488: f000 808f beq.w 80345aa { hi2c->XferCount = (uint16_t)I2C_GET_DMA_REMAIN_DATA(hi2c->hdmarx); - 803444c: 687b ldr r3, [r7, #4] - 803444e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034450: 681b ldr r3, [r3, #0] - 8034452: 4a32 ldr r2, [pc, #200] ; (803451c ) - 8034454: 4293 cmp r3, r2 - 8034456: d059 beq.n 803450c - 8034458: 687b ldr r3, [r7, #4] - 803445a: 6bdb ldr r3, [r3, #60] ; 0x3c - 803445c: 681b ldr r3, [r3, #0] - 803445e: 4a30 ldr r2, [pc, #192] ; (8034520 ) - 8034460: 4293 cmp r3, r2 - 8034462: d053 beq.n 803450c - 8034464: 687b ldr r3, [r7, #4] - 8034466: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034468: 681b ldr r3, [r3, #0] - 803446a: 4a2e ldr r2, [pc, #184] ; (8034524 ) - 803446c: 4293 cmp r3, r2 - 803446e: d04d beq.n 803450c - 8034470: 687b ldr r3, [r7, #4] - 8034472: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034474: 681b ldr r3, [r3, #0] - 8034476: 4a2c ldr r2, [pc, #176] ; (8034528 ) - 8034478: 4293 cmp r3, r2 - 803447a: d047 beq.n 803450c - 803447c: 687b ldr r3, [r7, #4] - 803447e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034480: 681b ldr r3, [r3, #0] - 8034482: 4a2a ldr r2, [pc, #168] ; (803452c ) - 8034484: 4293 cmp r3, r2 - 8034486: d041 beq.n 803450c - 8034488: 687b ldr r3, [r7, #4] - 803448a: 6bdb ldr r3, [r3, #60] ; 0x3c - 803448c: 681b ldr r3, [r3, #0] - 803448e: 4a28 ldr r2, [pc, #160] ; (8034530 ) - 8034490: 4293 cmp r3, r2 - 8034492: d03b beq.n 803450c - 8034494: 687b ldr r3, [r7, #4] - 8034496: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034498: 681b ldr r3, [r3, #0] - 803449a: 4a26 ldr r2, [pc, #152] ; (8034534 ) - 803449c: 4293 cmp r3, r2 - 803449e: d035 beq.n 803450c - 80344a0: 687b ldr r3, [r7, #4] - 80344a2: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344a4: 681b ldr r3, [r3, #0] - 80344a6: 4a24 ldr r2, [pc, #144] ; (8034538 ) - 80344a8: 4293 cmp r3, r2 - 80344aa: d02f beq.n 803450c - 80344ac: 687b ldr r3, [r7, #4] - 80344ae: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344b0: 681b ldr r3, [r3, #0] - 80344b2: 4a22 ldr r2, [pc, #136] ; (803453c ) - 80344b4: 4293 cmp r3, r2 - 80344b6: d029 beq.n 803450c - 80344b8: 687b ldr r3, [r7, #4] - 80344ba: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344bc: 681b ldr r3, [r3, #0] - 80344be: 4a20 ldr r2, [pc, #128] ; (8034540 ) - 80344c0: 4293 cmp r3, r2 - 80344c2: d023 beq.n 803450c - 80344c4: 687b ldr r3, [r7, #4] - 80344c6: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344c8: 681b ldr r3, [r3, #0] - 80344ca: 4a1e ldr r2, [pc, #120] ; (8034544 ) - 80344cc: 4293 cmp r3, r2 - 80344ce: d01d beq.n 803450c - 80344d0: 687b ldr r3, [r7, #4] - 80344d2: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344d4: 681b ldr r3, [r3, #0] - 80344d6: 4a1c ldr r2, [pc, #112] ; (8034548 ) - 80344d8: 4293 cmp r3, r2 - 80344da: d017 beq.n 803450c - 80344dc: 687b ldr r3, [r7, #4] - 80344de: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344e0: 681b ldr r3, [r3, #0] - 80344e2: 4a1a ldr r2, [pc, #104] ; (803454c ) - 80344e4: 4293 cmp r3, r2 - 80344e6: d011 beq.n 803450c - 80344e8: 687b ldr r3, [r7, #4] - 80344ea: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344ec: 681b ldr r3, [r3, #0] - 80344ee: 4a18 ldr r2, [pc, #96] ; (8034550 ) - 80344f0: 4293 cmp r3, r2 - 80344f2: d00b beq.n 803450c - 80344f4: 687b ldr r3, [r7, #4] - 80344f6: 6bdb ldr r3, [r3, #60] ; 0x3c - 80344f8: 681b ldr r3, [r3, #0] - 80344fa: 4a16 ldr r2, [pc, #88] ; (8034554 ) - 80344fc: 4293 cmp r3, r2 - 80344fe: d005 beq.n 803450c - 8034500: 687b ldr r3, [r7, #4] - 8034502: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034504: 681b ldr r3, [r3, #0] - 8034506: 4a14 ldr r2, [pc, #80] ; (8034558 ) - 8034508: 4293 cmp r3, r2 - 803450a: d127 bne.n 803455c - 803450c: 687b ldr r3, [r7, #4] - 803450e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034510: 681b ldr r3, [r3, #0] - 8034512: 685b ldr r3, [r3, #4] - 8034514: b29b uxth r3, r3 - 8034516: e026 b.n 8034566 - 8034518: fe00e800 .word 0xfe00e800 - 803451c: 40020010 .word 0x40020010 - 8034520: 40020028 .word 0x40020028 - 8034524: 40020040 .word 0x40020040 - 8034528: 40020058 .word 0x40020058 - 803452c: 40020070 .word 0x40020070 - 8034530: 40020088 .word 0x40020088 - 8034534: 400200a0 .word 0x400200a0 - 8034538: 400200b8 .word 0x400200b8 - 803453c: 40020410 .word 0x40020410 - 8034540: 40020428 .word 0x40020428 - 8034544: 40020440 .word 0x40020440 - 8034548: 40020458 .word 0x40020458 - 803454c: 40020470 .word 0x40020470 - 8034550: 40020488 .word 0x40020488 - 8034554: 400204a0 .word 0x400204a0 - 8034558: 400204b8 .word 0x400204b8 - 803455c: 687b ldr r3, [r7, #4] - 803455e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034560: 681b ldr r3, [r3, #0] - 8034562: 685b ldr r3, [r3, #4] - 8034564: b29b uxth r3, r3 - 8034566: 687a ldr r2, [r7, #4] - 8034568: 8553 strh r3, [r2, #42] ; 0x2a + 803448c: 687b ldr r3, [r7, #4] + 803448e: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034490: 681b ldr r3, [r3, #0] + 8034492: 4a32 ldr r2, [pc, #200] ; (803455c ) + 8034494: 4293 cmp r3, r2 + 8034496: d059 beq.n 803454c + 8034498: 687b ldr r3, [r7, #4] + 803449a: 6bdb ldr r3, [r3, #60] ; 0x3c + 803449c: 681b ldr r3, [r3, #0] + 803449e: 4a30 ldr r2, [pc, #192] ; (8034560 ) + 80344a0: 4293 cmp r3, r2 + 80344a2: d053 beq.n 803454c + 80344a4: 687b ldr r3, [r7, #4] + 80344a6: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344a8: 681b ldr r3, [r3, #0] + 80344aa: 4a2e ldr r2, [pc, #184] ; (8034564 ) + 80344ac: 4293 cmp r3, r2 + 80344ae: d04d beq.n 803454c + 80344b0: 687b ldr r3, [r7, #4] + 80344b2: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344b4: 681b ldr r3, [r3, #0] + 80344b6: 4a2c ldr r2, [pc, #176] ; (8034568 ) + 80344b8: 4293 cmp r3, r2 + 80344ba: d047 beq.n 803454c + 80344bc: 687b ldr r3, [r7, #4] + 80344be: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344c0: 681b ldr r3, [r3, #0] + 80344c2: 4a2a ldr r2, [pc, #168] ; (803456c ) + 80344c4: 4293 cmp r3, r2 + 80344c6: d041 beq.n 803454c + 80344c8: 687b ldr r3, [r7, #4] + 80344ca: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344cc: 681b ldr r3, [r3, #0] + 80344ce: 4a28 ldr r2, [pc, #160] ; (8034570 ) + 80344d0: 4293 cmp r3, r2 + 80344d2: d03b beq.n 803454c + 80344d4: 687b ldr r3, [r7, #4] + 80344d6: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344d8: 681b ldr r3, [r3, #0] + 80344da: 4a26 ldr r2, [pc, #152] ; (8034574 ) + 80344dc: 4293 cmp r3, r2 + 80344de: d035 beq.n 803454c + 80344e0: 687b ldr r3, [r7, #4] + 80344e2: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344e4: 681b ldr r3, [r3, #0] + 80344e6: 4a24 ldr r2, [pc, #144] ; (8034578 ) + 80344e8: 4293 cmp r3, r2 + 80344ea: d02f beq.n 803454c + 80344ec: 687b ldr r3, [r7, #4] + 80344ee: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344f0: 681b ldr r3, [r3, #0] + 80344f2: 4a22 ldr r2, [pc, #136] ; (803457c ) + 80344f4: 4293 cmp r3, r2 + 80344f6: d029 beq.n 803454c + 80344f8: 687b ldr r3, [r7, #4] + 80344fa: 6bdb ldr r3, [r3, #60] ; 0x3c + 80344fc: 681b ldr r3, [r3, #0] + 80344fe: 4a20 ldr r2, [pc, #128] ; (8034580 ) + 8034500: 4293 cmp r3, r2 + 8034502: d023 beq.n 803454c + 8034504: 687b ldr r3, [r7, #4] + 8034506: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034508: 681b ldr r3, [r3, #0] + 803450a: 4a1e ldr r2, [pc, #120] ; (8034584 ) + 803450c: 4293 cmp r3, r2 + 803450e: d01d beq.n 803454c + 8034510: 687b ldr r3, [r7, #4] + 8034512: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034514: 681b ldr r3, [r3, #0] + 8034516: 4a1c ldr r2, [pc, #112] ; (8034588 ) + 8034518: 4293 cmp r3, r2 + 803451a: d017 beq.n 803454c + 803451c: 687b ldr r3, [r7, #4] + 803451e: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034520: 681b ldr r3, [r3, #0] + 8034522: 4a1a ldr r2, [pc, #104] ; (803458c ) + 8034524: 4293 cmp r3, r2 + 8034526: d011 beq.n 803454c + 8034528: 687b ldr r3, [r7, #4] + 803452a: 6bdb ldr r3, [r3, #60] ; 0x3c + 803452c: 681b ldr r3, [r3, #0] + 803452e: 4a18 ldr r2, [pc, #96] ; (8034590 ) + 8034530: 4293 cmp r3, r2 + 8034532: d00b beq.n 803454c + 8034534: 687b ldr r3, [r7, #4] + 8034536: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034538: 681b ldr r3, [r3, #0] + 803453a: 4a16 ldr r2, [pc, #88] ; (8034594 ) + 803453c: 4293 cmp r3, r2 + 803453e: d005 beq.n 803454c + 8034540: 687b ldr r3, [r7, #4] + 8034542: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034544: 681b ldr r3, [r3, #0] + 8034546: 4a14 ldr r2, [pc, #80] ; (8034598 ) + 8034548: 4293 cmp r3, r2 + 803454a: d127 bne.n 803459c + 803454c: 687b ldr r3, [r7, #4] + 803454e: 6bdb ldr r3, [r3, #60] ; 0x3c + 8034550: 681b ldr r3, [r3, #0] + 8034552: 685b ldr r3, [r3, #4] + 8034554: b29b uxth r3, r3 + 8034556: e026 b.n 80345a6 + 8034558: fe00e800 .word 0xfe00e800 + 803455c: 40020010 .word 0x40020010 + 8034560: 40020028 .word 0x40020028 + 8034564: 40020040 .word 0x40020040 + 8034568: 40020058 .word 0x40020058 + 803456c: 40020070 .word 0x40020070 + 8034570: 40020088 .word 0x40020088 + 8034574: 400200a0 .word 0x400200a0 + 8034578: 400200b8 .word 0x400200b8 + 803457c: 40020410 .word 0x40020410 + 8034580: 40020428 .word 0x40020428 + 8034584: 40020440 .word 0x40020440 + 8034588: 40020458 .word 0x40020458 + 803458c: 40020470 .word 0x40020470 + 8034590: 40020488 .word 0x40020488 + 8034594: 400204a0 .word 0x400204a0 + 8034598: 400204b8 .word 0x400204b8 + 803459c: 687b ldr r3, [r7, #4] + 803459e: 6bdb ldr r3, [r3, #60] ; 0x3c + 80345a0: 681b ldr r3, [r3, #0] + 80345a2: 685b ldr r3, [r3, #4] + 80345a4: b29b uxth r3, r3 + 80345a6: 687a ldr r2, [r7, #4] + 80345a8: 8553 strh r3, [r2, #42] ; 0x2a { /* Do nothing */ } /* Store Last receive data if any */ if (I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_RXNE) != RESET) - 803456a: 697b ldr r3, [r7, #20] - 803456c: 089b lsrs r3, r3, #2 - 803456e: f003 0301 and.w r3, r3, #1 - 8034572: 2b00 cmp r3, #0 - 8034574: d020 beq.n 80345b8 + 80345aa: 697b ldr r3, [r7, #20] + 80345ac: 089b lsrs r3, r3, #2 + 80345ae: f003 0301 and.w r3, r3, #1 + 80345b2: 2b00 cmp r3, #0 + 80345b4: d020 beq.n 80345f8 { /* Remove RXNE flag on temporary variable as read done */ tmpITFlags &= ~I2C_FLAG_RXNE; - 8034576: 697b ldr r3, [r7, #20] - 8034578: f023 0304 bic.w r3, r3, #4 - 803457c: 617b str r3, [r7, #20] + 80345b6: 697b ldr r3, [r7, #20] + 80345b8: f023 0304 bic.w r3, r3, #4 + 80345bc: 617b str r3, [r7, #20] /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 803457e: 687b ldr r3, [r7, #4] - 8034580: 681b ldr r3, [r3, #0] - 8034582: 6a5a ldr r2, [r3, #36] ; 0x24 - 8034584: 687b ldr r3, [r7, #4] - 8034586: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034588: b2d2 uxtb r2, r2 - 803458a: 701a strb r2, [r3, #0] + 80345be: 687b ldr r3, [r7, #4] + 80345c0: 681b ldr r3, [r3, #0] + 80345c2: 6a5a ldr r2, [r3, #36] ; 0x24 + 80345c4: 687b ldr r3, [r7, #4] + 80345c6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80345c8: b2d2 uxtb r2, r2 + 80345ca: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 803458c: 687b ldr r3, [r7, #4] - 803458e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034590: 1c5a adds r2, r3, #1 - 8034592: 687b ldr r3, [r7, #4] - 8034594: 625a str r2, [r3, #36] ; 0x24 + 80345cc: 687b ldr r3, [r7, #4] + 80345ce: 6a5b ldr r3, [r3, #36] ; 0x24 + 80345d0: 1c5a adds r2, r3, #1 + 80345d2: 687b ldr r3, [r7, #4] + 80345d4: 625a str r2, [r3, #36] ; 0x24 if ((hi2c->XferSize > 0U)) - 8034596: 687b ldr r3, [r7, #4] - 8034598: 8d1b ldrh r3, [r3, #40] ; 0x28 - 803459a: 2b00 cmp r3, #0 - 803459c: d00c beq.n 80345b8 + 80345d6: 687b ldr r3, [r7, #4] + 80345d8: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80345da: 2b00 cmp r3, #0 + 80345dc: d00c beq.n 80345f8 { hi2c->XferSize--; - 803459e: 687b ldr r3, [r7, #4] - 80345a0: 8d1b ldrh r3, [r3, #40] ; 0x28 - 80345a2: 3b01 subs r3, #1 - 80345a4: b29a uxth r2, r3 - 80345a6: 687b ldr r3, [r7, #4] - 80345a8: 851a strh r2, [r3, #40] ; 0x28 + 80345de: 687b ldr r3, [r7, #4] + 80345e0: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80345e2: 3b01 subs r3, #1 + 80345e4: b29a uxth r2, r3 + 80345e6: 687b ldr r3, [r7, #4] + 80345e8: 851a strh r2, [r3, #40] ; 0x28 hi2c->XferCount--; - 80345aa: 687b ldr r3, [r7, #4] - 80345ac: 8d5b ldrh r3, [r3, #42] ; 0x2a - 80345ae: b29b uxth r3, r3 - 80345b0: 3b01 subs r3, #1 - 80345b2: b29a uxth r2, r3 - 80345b4: 687b ldr r3, [r7, #4] - 80345b6: 855a strh r2, [r3, #42] ; 0x2a + 80345ea: 687b ldr r3, [r7, #4] + 80345ec: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80345ee: b29b uxth r3, r3 + 80345f0: 3b01 subs r3, #1 + 80345f2: b29a uxth r2, r3 + 80345f4: 687b ldr r3, [r7, #4] + 80345f6: 855a strh r2, [r3, #42] ; 0x2a } } /* All data are not transferred, so set error code accordingly */ if (hi2c->XferCount != 0U) - 80345b8: 687b ldr r3, [r7, #4] - 80345ba: 8d5b ldrh r3, [r3, #42] ; 0x2a - 80345bc: b29b uxth r3, r3 - 80345be: 2b00 cmp r3, #0 - 80345c0: d005 beq.n 80345ce + 80345f8: 687b ldr r3, [r7, #4] + 80345fa: 8d5b ldrh r3, [r3, #42] ; 0x2a + 80345fc: b29b uxth r3, r3 + 80345fe: 2b00 cmp r3, #0 + 8034600: d005 beq.n 803460e { /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 80345c2: 687b ldr r3, [r7, #4] - 80345c4: 6c5b ldr r3, [r3, #68] ; 0x44 - 80345c6: f043 0204 orr.w r2, r3, #4 - 80345ca: 687b ldr r3, [r7, #4] - 80345cc: 645a str r2, [r3, #68] ; 0x44 + 8034602: 687b ldr r3, [r7, #4] + 8034604: 6c5b ldr r3, [r3, #68] ; 0x44 + 8034606: f043 0204 orr.w r2, r3, #4 + 803460a: 687b ldr r3, [r7, #4] + 803460c: 645a str r2, [r3, #68] ; 0x44 } hi2c->Mode = HAL_I2C_MODE_NONE; - 80345ce: 687b ldr r3, [r7, #4] - 80345d0: 2200 movs r2, #0 - 80345d2: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 803460e: 687b ldr r3, [r7, #4] + 8034610: 2200 movs r2, #0 + 8034612: f883 2042 strb.w r2, [r3, #66] ; 0x42 hi2c->XferISR = NULL; - 80345d6: 687b ldr r3, [r7, #4] - 80345d8: 2200 movs r2, #0 - 80345da: 635a str r2, [r3, #52] ; 0x34 + 8034616: 687b ldr r3, [r7, #4] + 8034618: 2200 movs r2, #0 + 803461a: 635a str r2, [r3, #52] ; 0x34 if (hi2c->ErrorCode != HAL_I2C_ERROR_NONE) - 80345dc: 687b ldr r3, [r7, #4] - 80345de: 6c5b ldr r3, [r3, #68] ; 0x44 - 80345e0: 2b00 cmp r3, #0 - 80345e2: d010 beq.n 8034606 + 803461c: 687b ldr r3, [r7, #4] + 803461e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8034620: 2b00 cmp r3, #0 + 8034622: d010 beq.n 8034646 { /* Call the corresponding callback to inform upper layer of End of Transfer */ I2C_ITError(hi2c, hi2c->ErrorCode); - 80345e4: 687b ldr r3, [r7, #4] - 80345e6: 6c5b ldr r3, [r3, #68] ; 0x44 - 80345e8: 4619 mov r1, r3 - 80345ea: 6878 ldr r0, [r7, #4] - 80345ec: f000 f8a4 bl 8034738 + 8034624: 687b ldr r3, [r7, #4] + 8034626: 6c5b ldr r3, [r3, #68] ; 0x44 + 8034628: 4619 mov r1, r3 + 803462a: 6878 ldr r0, [r7, #4] + 803462c: f000 f8a4 bl 8034778 /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ if (hi2c->State == HAL_I2C_STATE_LISTEN) - 80345f0: 687b ldr r3, [r7, #4] - 80345f2: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80345f6: b2db uxtb r3, r3 - 80345f8: 2b28 cmp r3, #40 ; 0x28 - 80345fa: d141 bne.n 8034680 + 8034630: 687b ldr r3, [r7, #4] + 8034632: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034636: b2db uxtb r3, r3 + 8034638: 2b28 cmp r3, #40 ; 0x28 + 803463a: d141 bne.n 80346c0 { /* Call I2C Listen complete process */ I2C_ITListenCplt(hi2c, tmpITFlags); - 80345fc: 6979 ldr r1, [r7, #20] - 80345fe: 6878 ldr r0, [r7, #4] - 8034600: f000 f844 bl 803468c + 803463c: 6979 ldr r1, [r7, #20] + 803463e: 6878 ldr r0, [r7, #4] + 8034640: f000 f844 bl 80346cc hi2c->SlaveTxCpltCallback(hi2c); #else HAL_I2C_SlaveTxCpltCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 8034604: e03c b.n 8034680 + 8034644: e03c b.n 80346c0 else if (hi2c->XferOptions != I2C_NO_OPTION_FRAME) - 8034606: 687b ldr r3, [r7, #4] - 8034608: 6adb ldr r3, [r3, #44] ; 0x2c - 803460a: f513 3f80 cmn.w r3, #65536 ; 0x10000 - 803460e: d014 beq.n 803463a + 8034646: 687b ldr r3, [r7, #4] + 8034648: 6adb ldr r3, [r3, #44] ; 0x2c + 803464a: f513 3f80 cmn.w r3, #65536 ; 0x10000 + 803464e: d014 beq.n 803467a I2C_ITSlaveSeqCplt(hi2c); - 8034610: 6878 ldr r0, [r7, #4] - 8034612: f7ff fde5 bl 80341e0 + 8034650: 6878 ldr r0, [r7, #4] + 8034652: f7ff fde5 bl 8034220 hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8034616: 687b ldr r3, [r7, #4] - 8034618: 4a1b ldr r2, [pc, #108] ; (8034688 ) - 803461a: 62da str r2, [r3, #44] ; 0x2c + 8034656: 687b ldr r3, [r7, #4] + 8034658: 4a1b ldr r2, [pc, #108] ; (80346c8 ) + 803465a: 62da str r2, [r3, #44] ; 0x2c hi2c->State = HAL_I2C_STATE_READY; - 803461c: 687b ldr r3, [r7, #4] - 803461e: 2220 movs r2, #32 - 8034620: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 803465c: 687b ldr r3, [r7, #4] + 803465e: 2220 movs r2, #32 + 8034660: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_NONE; - 8034624: 687b ldr r3, [r7, #4] - 8034626: 2200 movs r2, #0 - 8034628: 631a str r2, [r3, #48] ; 0x30 + 8034664: 687b ldr r3, [r7, #4] + 8034666: 2200 movs r2, #0 + 8034668: 631a str r2, [r3, #48] ; 0x30 __HAL_UNLOCK(hi2c); - 803462a: 687b ldr r3, [r7, #4] - 803462c: 2200 movs r2, #0 - 803462e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 803466a: 687b ldr r3, [r7, #4] + 803466c: 2200 movs r2, #0 + 803466e: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_ListenCpltCallback(hi2c); - 8034632: 6878 ldr r0, [r7, #4] - 8034634: f7ff fc2f bl 8033e96 + 8034672: 6878 ldr r0, [r7, #4] + 8034674: f7ff fc2f bl 8033ed6 } - 8034638: e022 b.n 8034680 + 8034678: e022 b.n 80346c0 else if (hi2c->State == HAL_I2C_STATE_BUSY_RX) - 803463a: 687b ldr r3, [r7, #4] - 803463c: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034640: b2db uxtb r3, r3 - 8034642: 2b22 cmp r3, #34 ; 0x22 - 8034644: d10e bne.n 8034664 + 803467a: 687b ldr r3, [r7, #4] + 803467c: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034680: b2db uxtb r3, r3 + 8034682: 2b22 cmp r3, #34 ; 0x22 + 8034684: d10e bne.n 80346a4 hi2c->State = HAL_I2C_STATE_READY; - 8034646: 687b ldr r3, [r7, #4] - 8034648: 2220 movs r2, #32 - 803464a: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034686: 687b ldr r3, [r7, #4] + 8034688: 2220 movs r2, #32 + 803468a: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_NONE; - 803464e: 687b ldr r3, [r7, #4] - 8034650: 2200 movs r2, #0 - 8034652: 631a str r2, [r3, #48] ; 0x30 + 803468e: 687b ldr r3, [r7, #4] + 8034690: 2200 movs r2, #0 + 8034692: 631a str r2, [r3, #48] ; 0x30 __HAL_UNLOCK(hi2c); - 8034654: 687b ldr r3, [r7, #4] - 8034656: 2200 movs r2, #0 - 8034658: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034694: 687b ldr r3, [r7, #4] + 8034696: 2200 movs r2, #0 + 8034698: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_SlaveRxCpltCallback(hi2c); - 803465c: 6878 ldr r0, [r7, #4] - 803465e: f7ff fc02 bl 8033e66 + 803469c: 6878 ldr r0, [r7, #4] + 803469e: f7ff fc02 bl 8033ea6 } - 8034662: e00d b.n 8034680 + 80346a2: e00d b.n 80346c0 hi2c->State = HAL_I2C_STATE_READY; - 8034664: 687b ldr r3, [r7, #4] - 8034666: 2220 movs r2, #32 - 8034668: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80346a4: 687b ldr r3, [r7, #4] + 80346a6: 2220 movs r2, #32 + 80346a8: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_NONE; - 803466c: 687b ldr r3, [r7, #4] - 803466e: 2200 movs r2, #0 - 8034670: 631a str r2, [r3, #48] ; 0x30 + 80346ac: 687b ldr r3, [r7, #4] + 80346ae: 2200 movs r2, #0 + 80346b0: 631a str r2, [r3, #48] ; 0x30 __HAL_UNLOCK(hi2c); - 8034672: 687b ldr r3, [r7, #4] - 8034674: 2200 movs r2, #0 - 8034676: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80346b2: 687b ldr r3, [r7, #4] + 80346b4: 2200 movs r2, #0 + 80346b6: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_SlaveTxCpltCallback(hi2c); - 803467a: 6878 ldr r0, [r7, #4] - 803467c: f7ff fbe9 bl 8033e52 + 80346ba: 6878 ldr r0, [r7, #4] + 80346bc: f7ff fbe9 bl 8033e92 } - 8034680: bf00 nop - 8034682: 3718 adds r7, #24 - 8034684: 46bd mov sp, r7 - 8034686: bd80 pop {r7, pc} - 8034688: ffff0000 .word 0xffff0000 + 80346c0: bf00 nop + 80346c2: 3718 adds r7, #24 + 80346c4: 46bd mov sp, r7 + 80346c6: bd80 pop {r7, pc} + 80346c8: ffff0000 .word 0xffff0000 -0803468c : +080346cc : * @param hi2c I2C handle. * @param ITFlags Interrupt flags to handle. * @retval None */ static void I2C_ITListenCplt(I2C_HandleTypeDef *hi2c, uint32_t ITFlags) { - 803468c: b580 push {r7, lr} - 803468e: b082 sub sp, #8 - 8034690: af00 add r7, sp, #0 - 8034692: 6078 str r0, [r7, #4] - 8034694: 6039 str r1, [r7, #0] + 80346cc: b580 push {r7, lr} + 80346ce: b082 sub sp, #8 + 80346d0: af00 add r7, sp, #0 + 80346d2: 6078 str r0, [r7, #4] + 80346d4: 6039 str r1, [r7, #0] /* Reset handle parameters */ hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8034696: 687b ldr r3, [r7, #4] - 8034698: 4a26 ldr r2, [pc, #152] ; (8034734 ) - 803469a: 62da str r2, [r3, #44] ; 0x2c + 80346d6: 687b ldr r3, [r7, #4] + 80346d8: 4a26 ldr r2, [pc, #152] ; (8034774 ) + 80346da: 62da str r2, [r3, #44] ; 0x2c hi2c->PreviousState = I2C_STATE_NONE; - 803469c: 687b ldr r3, [r7, #4] - 803469e: 2200 movs r2, #0 - 80346a0: 631a str r2, [r3, #48] ; 0x30 + 80346dc: 687b ldr r3, [r7, #4] + 80346de: 2200 movs r2, #0 + 80346e0: 631a str r2, [r3, #48] ; 0x30 hi2c->State = HAL_I2C_STATE_READY; - 80346a2: 687b ldr r3, [r7, #4] - 80346a4: 2220 movs r2, #32 - 80346a6: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80346e2: 687b ldr r3, [r7, #4] + 80346e4: 2220 movs r2, #32 + 80346e6: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->Mode = HAL_I2C_MODE_NONE; - 80346aa: 687b ldr r3, [r7, #4] - 80346ac: 2200 movs r2, #0 - 80346ae: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 80346ea: 687b ldr r3, [r7, #4] + 80346ec: 2200 movs r2, #0 + 80346ee: f883 2042 strb.w r2, [r3, #66] ; 0x42 hi2c->XferISR = NULL; - 80346b2: 687b ldr r3, [r7, #4] - 80346b4: 2200 movs r2, #0 - 80346b6: 635a str r2, [r3, #52] ; 0x34 + 80346f2: 687b ldr r3, [r7, #4] + 80346f4: 2200 movs r2, #0 + 80346f6: 635a str r2, [r3, #52] ; 0x34 /* Store Last receive data if any */ if (I2C_CHECK_FLAG(ITFlags, I2C_FLAG_RXNE) != RESET) - 80346b8: 683b ldr r3, [r7, #0] - 80346ba: 089b lsrs r3, r3, #2 - 80346bc: f003 0301 and.w r3, r3, #1 - 80346c0: 2b00 cmp r3, #0 - 80346c2: d022 beq.n 803470a + 80346f8: 683b ldr r3, [r7, #0] + 80346fa: 089b lsrs r3, r3, #2 + 80346fc: f003 0301 and.w r3, r3, #1 + 8034700: 2b00 cmp r3, #0 + 8034702: d022 beq.n 803474a { /* Read data from RXDR */ *hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR; - 80346c4: 687b ldr r3, [r7, #4] - 80346c6: 681b ldr r3, [r3, #0] - 80346c8: 6a5a ldr r2, [r3, #36] ; 0x24 - 80346ca: 687b ldr r3, [r7, #4] - 80346cc: 6a5b ldr r3, [r3, #36] ; 0x24 - 80346ce: b2d2 uxtb r2, r2 - 80346d0: 701a strb r2, [r3, #0] + 8034704: 687b ldr r3, [r7, #4] + 8034706: 681b ldr r3, [r3, #0] + 8034708: 6a5a ldr r2, [r3, #36] ; 0x24 + 803470a: 687b ldr r3, [r7, #4] + 803470c: 6a5b ldr r3, [r3, #36] ; 0x24 + 803470e: b2d2 uxtb r2, r2 + 8034710: 701a strb r2, [r3, #0] /* Increment Buffer pointer */ hi2c->pBuffPtr++; - 80346d2: 687b ldr r3, [r7, #4] - 80346d4: 6a5b ldr r3, [r3, #36] ; 0x24 - 80346d6: 1c5a adds r2, r3, #1 - 80346d8: 687b ldr r3, [r7, #4] - 80346da: 625a str r2, [r3, #36] ; 0x24 + 8034712: 687b ldr r3, [r7, #4] + 8034714: 6a5b ldr r3, [r3, #36] ; 0x24 + 8034716: 1c5a adds r2, r3, #1 + 8034718: 687b ldr r3, [r7, #4] + 803471a: 625a str r2, [r3, #36] ; 0x24 if ((hi2c->XferSize > 0U)) - 80346dc: 687b ldr r3, [r7, #4] - 80346de: 8d1b ldrh r3, [r3, #40] ; 0x28 - 80346e0: 2b00 cmp r3, #0 - 80346e2: d012 beq.n 803470a + 803471c: 687b ldr r3, [r7, #4] + 803471e: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8034720: 2b00 cmp r3, #0 + 8034722: d012 beq.n 803474a { hi2c->XferSize--; - 80346e4: 687b ldr r3, [r7, #4] - 80346e6: 8d1b ldrh r3, [r3, #40] ; 0x28 - 80346e8: 3b01 subs r3, #1 - 80346ea: b29a uxth r2, r3 - 80346ec: 687b ldr r3, [r7, #4] - 80346ee: 851a strh r2, [r3, #40] ; 0x28 + 8034724: 687b ldr r3, [r7, #4] + 8034726: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8034728: 3b01 subs r3, #1 + 803472a: b29a uxth r2, r3 + 803472c: 687b ldr r3, [r7, #4] + 803472e: 851a strh r2, [r3, #40] ; 0x28 hi2c->XferCount--; - 80346f0: 687b ldr r3, [r7, #4] - 80346f2: 8d5b ldrh r3, [r3, #42] ; 0x2a - 80346f4: b29b uxth r3, r3 - 80346f6: 3b01 subs r3, #1 - 80346f8: b29a uxth r2, r3 - 80346fa: 687b ldr r3, [r7, #4] - 80346fc: 855a strh r2, [r3, #42] ; 0x2a + 8034730: 687b ldr r3, [r7, #4] + 8034732: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8034734: b29b uxth r3, r3 + 8034736: 3b01 subs r3, #1 + 8034738: b29a uxth r2, r3 + 803473a: 687b ldr r3, [r7, #4] + 803473c: 855a strh r2, [r3, #42] ; 0x2a /* Set ErrorCode corresponding to a Non-Acknowledge */ hi2c->ErrorCode |= HAL_I2C_ERROR_AF; - 80346fe: 687b ldr r3, [r7, #4] - 8034700: 6c5b ldr r3, [r3, #68] ; 0x44 - 8034702: f043 0204 orr.w r2, r3, #4 - 8034706: 687b ldr r3, [r7, #4] - 8034708: 645a str r2, [r3, #68] ; 0x44 + 803473e: 687b ldr r3, [r7, #4] + 8034740: 6c5b ldr r3, [r3, #68] ; 0x44 + 8034742: f043 0204 orr.w r2, r3, #4 + 8034746: 687b ldr r3, [r7, #4] + 8034748: 645a str r2, [r3, #68] ; 0x44 } } /* Disable all Interrupts*/ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 803470a: f248 0103 movw r1, #32771 ; 0x8003 - 803470e: 6878 ldr r0, [r7, #4] - 8034710: f000 f94b bl 80349aa + 803474a: f248 0103 movw r1, #32771 ; 0x8003 + 803474e: 6878 ldr r0, [r7, #4] + 8034750: f000 f94b bl 80349ea /* Clear NACK Flag */ __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_AF); - 8034714: 687b ldr r3, [r7, #4] - 8034716: 681b ldr r3, [r3, #0] - 8034718: 2210 movs r2, #16 - 803471a: 61da str r2, [r3, #28] + 8034754: 687b ldr r3, [r7, #4] + 8034756: 681b ldr r3, [r3, #0] + 8034758: 2210 movs r2, #16 + 803475a: 61da str r2, [r3, #28] /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 803471c: 687b ldr r3, [r7, #4] - 803471e: 2200 movs r2, #0 - 8034720: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 803475c: 687b ldr r3, [r7, #4] + 803475e: 2200 movs r2, #0 + 8034760: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Call the Listen Complete callback, to inform upper layer of the end of Listen usecase */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->ListenCpltCallback(hi2c); #else HAL_I2C_ListenCpltCallback(hi2c); - 8034724: 6878 ldr r0, [r7, #4] - 8034726: f7ff fbb6 bl 8033e96 + 8034764: 6878 ldr r0, [r7, #4] + 8034766: f7ff fbb6 bl 8033ed6 #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } - 803472a: bf00 nop - 803472c: 3708 adds r7, #8 - 803472e: 46bd mov sp, r7 - 8034730: bd80 pop {r7, pc} - 8034732: bf00 nop - 8034734: ffff0000 .word 0xffff0000 + 803476a: bf00 nop + 803476c: 3708 adds r7, #8 + 803476e: 46bd mov sp, r7 + 8034770: bd80 pop {r7, pc} + 8034772: bf00 nop + 8034774: ffff0000 .word 0xffff0000 -08034738 : +08034778 : * @param hi2c I2C handle. * @param ErrorCode Error code to handle. * @retval None */ static void I2C_ITError(I2C_HandleTypeDef *hi2c, uint32_t ErrorCode) { - 8034738: b580 push {r7, lr} - 803473a: b084 sub sp, #16 - 803473c: af00 add r7, sp, #0 - 803473e: 6078 str r0, [r7, #4] - 8034740: 6039 str r1, [r7, #0] + 8034778: b580 push {r7, lr} + 803477a: b084 sub sp, #16 + 803477c: af00 add r7, sp, #0 + 803477e: 6078 str r0, [r7, #4] + 8034780: 6039 str r1, [r7, #0] HAL_I2C_StateTypeDef tmpstate = hi2c->State; - 8034742: 687b ldr r3, [r7, #4] - 8034744: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034748: 73fb strb r3, [r7, #15] + 8034782: 687b ldr r3, [r7, #4] + 8034784: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034788: 73fb strb r3, [r7, #15] uint32_t tmppreviousstate; /* Reset handle parameters */ hi2c->Mode = HAL_I2C_MODE_NONE; - 803474a: 687b ldr r3, [r7, #4] - 803474c: 2200 movs r2, #0 - 803474e: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 803478a: 687b ldr r3, [r7, #4] + 803478c: 2200 movs r2, #0 + 803478e: f883 2042 strb.w r2, [r3, #66] ; 0x42 hi2c->XferOptions = I2C_NO_OPTION_FRAME; - 8034752: 687b ldr r3, [r7, #4] - 8034754: 4a5d ldr r2, [pc, #372] ; (80348cc ) - 8034756: 62da str r2, [r3, #44] ; 0x2c + 8034792: 687b ldr r3, [r7, #4] + 8034794: 4a5d ldr r2, [pc, #372] ; (803490c ) + 8034796: 62da str r2, [r3, #44] ; 0x2c hi2c->XferCount = 0U; - 8034758: 687b ldr r3, [r7, #4] - 803475a: 2200 movs r2, #0 - 803475c: 855a strh r2, [r3, #42] ; 0x2a + 8034798: 687b ldr r3, [r7, #4] + 803479a: 2200 movs r2, #0 + 803479c: 855a strh r2, [r3, #42] ; 0x2a /* Set new error code */ hi2c->ErrorCode |= ErrorCode; - 803475e: 687b ldr r3, [r7, #4] - 8034760: 6c5a ldr r2, [r3, #68] ; 0x44 - 8034762: 683b ldr r3, [r7, #0] - 8034764: 431a orrs r2, r3 - 8034766: 687b ldr r3, [r7, #4] - 8034768: 645a str r2, [r3, #68] ; 0x44 + 803479e: 687b ldr r3, [r7, #4] + 80347a0: 6c5a ldr r2, [r3, #68] ; 0x44 + 80347a2: 683b ldr r3, [r7, #0] + 80347a4: 431a orrs r2, r3 + 80347a6: 687b ldr r3, [r7, #4] + 80347a8: 645a str r2, [r3, #68] ; 0x44 /* Disable Interrupts */ if ((tmpstate == HAL_I2C_STATE_LISTEN) || - 803476a: 7bfb ldrb r3, [r7, #15] - 803476c: 2b28 cmp r3, #40 ; 0x28 - 803476e: d005 beq.n 803477c - 8034770: 7bfb ldrb r3, [r7, #15] - 8034772: 2b29 cmp r3, #41 ; 0x29 - 8034774: d002 beq.n 803477c + 80347aa: 7bfb ldrb r3, [r7, #15] + 80347ac: 2b28 cmp r3, #40 ; 0x28 + 80347ae: d005 beq.n 80347bc + 80347b0: 7bfb ldrb r3, [r7, #15] + 80347b2: 2b29 cmp r3, #41 ; 0x29 + 80347b4: d002 beq.n 80347bc (tmpstate == HAL_I2C_STATE_BUSY_TX_LISTEN) || - 8034776: 7bfb ldrb r3, [r7, #15] - 8034778: 2b2a cmp r3, #42 ; 0x2a - 803477a: d10b bne.n 8034794 + 80347b6: 7bfb ldrb r3, [r7, #15] + 80347b8: 2b2a cmp r3, #42 ; 0x2a + 80347ba: d10b bne.n 80347d4 (tmpstate == HAL_I2C_STATE_BUSY_RX_LISTEN)) { /* Disable all interrupts, except interrupts related to LISTEN state */ I2C_Disable_IRQ(hi2c, I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 803477c: 2103 movs r1, #3 - 803477e: 6878 ldr r0, [r7, #4] - 8034780: f000 f913 bl 80349aa + 80347bc: 2103 movs r1, #3 + 80347be: 6878 ldr r0, [r7, #4] + 80347c0: f000 f913 bl 80349ea /* keep HAL_I2C_STATE_LISTEN if set */ hi2c->State = HAL_I2C_STATE_LISTEN; - 8034784: 687b ldr r3, [r7, #4] - 8034786: 2228 movs r2, #40 ; 0x28 - 8034788: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80347c4: 687b ldr r3, [r7, #4] + 80347c6: 2228 movs r2, #40 ; 0x28 + 80347c8: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->XferISR = I2C_Slave_ISR_IT; - 803478c: 687b ldr r3, [r7, #4] - 803478e: 4a50 ldr r2, [pc, #320] ; (80348d0 ) - 8034790: 635a str r2, [r3, #52] ; 0x34 - 8034792: e011 b.n 80347b8 + 80347cc: 687b ldr r3, [r7, #4] + 80347ce: 4a50 ldr r2, [pc, #320] ; (8034910 ) + 80347d0: 635a str r2, [r3, #52] ; 0x34 + 80347d2: e011 b.n 80347f8 } else { /* Disable all interrupts */ I2C_Disable_IRQ(hi2c, I2C_XFER_LISTEN_IT | I2C_XFER_RX_IT | I2C_XFER_TX_IT); - 8034794: f248 0103 movw r1, #32771 ; 0x8003 - 8034798: 6878 ldr r0, [r7, #4] - 803479a: f000 f906 bl 80349aa + 80347d4: f248 0103 movw r1, #32771 ; 0x8003 + 80347d8: 6878 ldr r0, [r7, #4] + 80347da: f000 f906 bl 80349ea /* If state is an abort treatment on going, don't change state */ /* This change will be do later */ if (hi2c->State != HAL_I2C_STATE_ABORT) - 803479e: 687b ldr r3, [r7, #4] - 80347a0: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80347a4: b2db uxtb r3, r3 - 80347a6: 2b60 cmp r3, #96 ; 0x60 - 80347a8: d003 beq.n 80347b2 + 80347de: 687b ldr r3, [r7, #4] + 80347e0: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 80347e4: b2db uxtb r3, r3 + 80347e6: 2b60 cmp r3, #96 ; 0x60 + 80347e8: d003 beq.n 80347f2 { /* Set HAL_I2C_STATE_READY */ hi2c->State = HAL_I2C_STATE_READY; - 80347aa: 687b ldr r3, [r7, #4] - 80347ac: 2220 movs r2, #32 - 80347ae: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80347ea: 687b ldr r3, [r7, #4] + 80347ec: 2220 movs r2, #32 + 80347ee: f883 2041 strb.w r2, [r3, #65] ; 0x41 } hi2c->XferISR = NULL; - 80347b2: 687b ldr r3, [r7, #4] - 80347b4: 2200 movs r2, #0 - 80347b6: 635a str r2, [r3, #52] ; 0x34 + 80347f2: 687b ldr r3, [r7, #4] + 80347f4: 2200 movs r2, #0 + 80347f6: 635a str r2, [r3, #52] ; 0x34 } /* Abort DMA TX transfer if any */ tmppreviousstate = hi2c->PreviousState; - 80347b8: 687b ldr r3, [r7, #4] - 80347ba: 6b1b ldr r3, [r3, #48] ; 0x30 - 80347bc: 60bb str r3, [r7, #8] + 80347f8: 687b ldr r3, [r7, #4] + 80347fa: 6b1b ldr r3, [r3, #48] ; 0x30 + 80347fc: 60bb str r3, [r7, #8] if ((hi2c->hdmatx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_TX) || \ - 80347be: 687b ldr r3, [r7, #4] - 80347c0: 6b9b ldr r3, [r3, #56] ; 0x38 - 80347c2: 2b00 cmp r3, #0 - 80347c4: d039 beq.n 803483a - 80347c6: 68bb ldr r3, [r7, #8] - 80347c8: 2b11 cmp r3, #17 - 80347ca: d002 beq.n 80347d2 - 80347cc: 68bb ldr r3, [r7, #8] - 80347ce: 2b21 cmp r3, #33 ; 0x21 - 80347d0: d133 bne.n 803483a + 80347fe: 687b ldr r3, [r7, #4] + 8034800: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034802: 2b00 cmp r3, #0 + 8034804: d039 beq.n 803487a + 8034806: 68bb ldr r3, [r7, #8] + 8034808: 2b11 cmp r3, #17 + 803480a: d002 beq.n 8034812 + 803480c: 68bb ldr r3, [r7, #8] + 803480e: 2b21 cmp r3, #33 ; 0x21 + 8034810: d133 bne.n 803487a (tmppreviousstate == I2C_STATE_SLAVE_BUSY_TX))) { if ((hi2c->Instance->CR1 & I2C_CR1_TXDMAEN) == I2C_CR1_TXDMAEN) - 80347d2: 687b ldr r3, [r7, #4] - 80347d4: 681b ldr r3, [r3, #0] - 80347d6: 681b ldr r3, [r3, #0] - 80347d8: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 80347dc: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 80347e0: d107 bne.n 80347f2 + 8034812: 687b ldr r3, [r7, #4] + 8034814: 681b ldr r3, [r3, #0] + 8034816: 681b ldr r3, [r3, #0] + 8034818: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 803481c: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8034820: d107 bne.n 8034832 { hi2c->Instance->CR1 &= ~I2C_CR1_TXDMAEN; - 80347e2: 687b ldr r3, [r7, #4] - 80347e4: 681b ldr r3, [r3, #0] - 80347e6: 681a ldr r2, [r3, #0] - 80347e8: 687b ldr r3, [r7, #4] - 80347ea: 681b ldr r3, [r3, #0] - 80347ec: f422 4280 bic.w r2, r2, #16384 ; 0x4000 - 80347f0: 601a str r2, [r3, #0] + 8034822: 687b ldr r3, [r7, #4] + 8034824: 681b ldr r3, [r3, #0] + 8034826: 681a ldr r2, [r3, #0] + 8034828: 687b ldr r3, [r7, #4] + 803482a: 681b ldr r3, [r3, #0] + 803482c: f422 4280 bic.w r2, r2, #16384 ; 0x4000 + 8034830: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 80347f2: 687b ldr r3, [r7, #4] - 80347f4: 6b9b ldr r3, [r3, #56] ; 0x38 - 80347f6: 4618 mov r0, r3 - 80347f8: f7fb ff84 bl 8030704 - 80347fc: 4603 mov r3, r0 - 80347fe: 2b01 cmp r3, #1 - 8034800: d017 beq.n 8034832 + 8034832: 687b ldr r3, [r7, #4] + 8034834: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034836: 4618 mov r0, r3 + 8034838: f7fb ff84 bl 8030744 + 803483c: 4603 mov r3, r0 + 803483e: 2b01 cmp r3, #1 + 8034840: d017 beq.n 8034872 { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmatx->XferAbortCallback = I2C_DMAAbort; - 8034802: 687b ldr r3, [r7, #4] - 8034804: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034806: 4a33 ldr r2, [pc, #204] ; (80348d4 ) - 8034808: 651a str r2, [r3, #80] ; 0x50 + 8034842: 687b ldr r3, [r7, #4] + 8034844: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034846: 4a33 ldr r2, [pc, #204] ; (8034914 ) + 8034848: 651a str r2, [r3, #80] ; 0x50 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 803480a: 687b ldr r3, [r7, #4] - 803480c: 2200 movs r2, #0 - 803480e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 803484a: 687b ldr r3, [r7, #4] + 803484c: 2200 movs r2, #0 + 803484e: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Abort DMA TX */ if (HAL_DMA_Abort_IT(hi2c->hdmatx) != HAL_OK) - 8034812: 687b ldr r3, [r7, #4] - 8034814: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034816: 4618 mov r0, r3 - 8034818: f7fa fe04 bl 802f424 - 803481c: 4603 mov r3, r0 - 803481e: 2b00 cmp r3, #0 - 8034820: d04d beq.n 80348be + 8034852: 687b ldr r3, [r7, #4] + 8034854: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034856: 4618 mov r0, r3 + 8034858: f7fa fe04 bl 802f464 + 803485c: 4603 mov r3, r0 + 803485e: 2b00 cmp r3, #0 + 8034860: d04d beq.n 80348fe { /* Call Directly XferAbortCallback function in case of error */ hi2c->hdmatx->XferAbortCallback(hi2c->hdmatx); - 8034822: 687b ldr r3, [r7, #4] - 8034824: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034826: 6d1b ldr r3, [r3, #80] ; 0x50 - 8034828: 687a ldr r2, [r7, #4] - 803482a: 6b92 ldr r2, [r2, #56] ; 0x38 - 803482c: 4610 mov r0, r2 - 803482e: 4798 blx r3 + 8034862: 687b ldr r3, [r7, #4] + 8034864: 6b9b ldr r3, [r3, #56] ; 0x38 + 8034866: 6d1b ldr r3, [r3, #80] ; 0x50 + 8034868: 687a ldr r2, [r7, #4] + 803486a: 6b92 ldr r2, [r2, #56] ; 0x38 + 803486c: 4610 mov r0, r2 + 803486e: 4798 blx r3 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8034830: e045 b.n 80348be + 8034870: e045 b.n 80348fe } } else { I2C_TreatErrorCallback(hi2c); - 8034832: 6878 ldr r0, [r7, #4] - 8034834: f000 f850 bl 80348d8 + 8034872: 6878 ldr r0, [r7, #4] + 8034874: f000 f850 bl 8034918 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 8034838: e041 b.n 80348be + 8034878: e041 b.n 80348fe } } /* Abort DMA RX transfer if any */ else if ((hi2c->hdmarx != NULL) && ((tmppreviousstate == I2C_STATE_MASTER_BUSY_RX) || \ - 803483a: 687b ldr r3, [r7, #4] - 803483c: 6bdb ldr r3, [r3, #60] ; 0x3c - 803483e: 2b00 cmp r3, #0 - 8034840: d039 beq.n 80348b6 - 8034842: 68bb ldr r3, [r7, #8] - 8034844: 2b12 cmp r3, #18 - 8034846: d002 beq.n 803484e - 8034848: 68bb ldr r3, [r7, #8] - 803484a: 2b22 cmp r3, #34 ; 0x22 - 803484c: d133 bne.n 80348b6 + 803487a: 687b ldr r3, [r7, #4] + 803487c: 6bdb ldr r3, [r3, #60] ; 0x3c + 803487e: 2b00 cmp r3, #0 + 8034880: d039 beq.n 80348f6 + 8034882: 68bb ldr r3, [r7, #8] + 8034884: 2b12 cmp r3, #18 + 8034886: d002 beq.n 803488e + 8034888: 68bb ldr r3, [r7, #8] + 803488a: 2b22 cmp r3, #34 ; 0x22 + 803488c: d133 bne.n 80348f6 (tmppreviousstate == I2C_STATE_SLAVE_BUSY_RX))) { if ((hi2c->Instance->CR1 & I2C_CR1_RXDMAEN) == I2C_CR1_RXDMAEN) - 803484e: 687b ldr r3, [r7, #4] - 8034850: 681b ldr r3, [r3, #0] - 8034852: 681b ldr r3, [r3, #0] - 8034854: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 8034858: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 803485c: d107 bne.n 803486e + 803488e: 687b ldr r3, [r7, #4] + 8034890: 681b ldr r3, [r3, #0] + 8034892: 681b ldr r3, [r3, #0] + 8034894: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 8034898: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 803489c: d107 bne.n 80348ae { hi2c->Instance->CR1 &= ~I2C_CR1_RXDMAEN; - 803485e: 687b ldr r3, [r7, #4] - 8034860: 681b ldr r3, [r3, #0] - 8034862: 681a ldr r2, [r3, #0] - 8034864: 687b ldr r3, [r7, #4] - 8034866: 681b ldr r3, [r3, #0] - 8034868: f422 4200 bic.w r2, r2, #32768 ; 0x8000 - 803486c: 601a str r2, [r3, #0] + 803489e: 687b ldr r3, [r7, #4] + 80348a0: 681b ldr r3, [r3, #0] + 80348a2: 681a ldr r2, [r3, #0] + 80348a4: 687b ldr r3, [r7, #4] + 80348a6: 681b ldr r3, [r3, #0] + 80348a8: f422 4200 bic.w r2, r2, #32768 ; 0x8000 + 80348ac: 601a str r2, [r3, #0] } if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 803486e: 687b ldr r3, [r7, #4] - 8034870: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034872: 4618 mov r0, r3 - 8034874: f7fb ff46 bl 8030704 - 8034878: 4603 mov r3, r0 - 803487a: 2b01 cmp r3, #1 - 803487c: d017 beq.n 80348ae + 80348ae: 687b ldr r3, [r7, #4] + 80348b0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80348b2: 4618 mov r0, r3 + 80348b4: f7fb ff46 bl 8030744 + 80348b8: 4603 mov r3, r0 + 80348ba: 2b01 cmp r3, #1 + 80348bc: d017 beq.n 80348ee { /* Set the I2C DMA Abort callback : will lead to call HAL_I2C_ErrorCallback() at end of DMA abort procedure */ hi2c->hdmarx->XferAbortCallback = I2C_DMAAbort; - 803487e: 687b ldr r3, [r7, #4] - 8034880: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034882: 4a14 ldr r2, [pc, #80] ; (80348d4 ) - 8034884: 651a str r2, [r3, #80] ; 0x50 + 80348be: 687b ldr r3, [r7, #4] + 80348c0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80348c2: 4a14 ldr r2, [pc, #80] ; (8034914 ) + 80348c4: 651a str r2, [r3, #80] ; 0x50 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8034886: 687b ldr r3, [r7, #4] - 8034888: 2200 movs r2, #0 - 803488a: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80348c6: 687b ldr r3, [r7, #4] + 80348c8: 2200 movs r2, #0 + 80348ca: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Abort DMA RX */ if (HAL_DMA_Abort_IT(hi2c->hdmarx) != HAL_OK) - 803488e: 687b ldr r3, [r7, #4] - 8034890: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034892: 4618 mov r0, r3 - 8034894: f7fa fdc6 bl 802f424 - 8034898: 4603 mov r3, r0 - 803489a: 2b00 cmp r3, #0 - 803489c: d011 beq.n 80348c2 + 80348ce: 687b ldr r3, [r7, #4] + 80348d0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80348d2: 4618 mov r0, r3 + 80348d4: f7fa fdc6 bl 802f464 + 80348d8: 4603 mov r3, r0 + 80348da: 2b00 cmp r3, #0 + 80348dc: d011 beq.n 8034902 { /* Call Directly hi2c->hdmarx->XferAbortCallback function in case of error */ hi2c->hdmarx->XferAbortCallback(hi2c->hdmarx); - 803489e: 687b ldr r3, [r7, #4] - 80348a0: 6bdb ldr r3, [r3, #60] ; 0x3c - 80348a2: 6d1b ldr r3, [r3, #80] ; 0x50 - 80348a4: 687a ldr r2, [r7, #4] - 80348a6: 6bd2 ldr r2, [r2, #60] ; 0x3c - 80348a8: 4610 mov r0, r2 - 80348aa: 4798 blx r3 + 80348de: 687b ldr r3, [r7, #4] + 80348e0: 6bdb ldr r3, [r3, #60] ; 0x3c + 80348e2: 6d1b ldr r3, [r3, #80] ; 0x50 + 80348e4: 687a ldr r2, [r7, #4] + 80348e6: 6bd2 ldr r2, [r2, #60] ; 0x3c + 80348e8: 4610 mov r0, r2 + 80348ea: 4798 blx r3 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80348ac: e009 b.n 80348c2 + 80348ec: e009 b.n 8034902 } } else { I2C_TreatErrorCallback(hi2c); - 80348ae: 6878 ldr r0, [r7, #4] - 80348b0: f000 f812 bl 80348d8 + 80348ee: 6878 ldr r0, [r7, #4] + 80348f0: f000 f812 bl 8034918 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80348b4: e005 b.n 80348c2 + 80348f4: e005 b.n 8034902 } } else { I2C_TreatErrorCallback(hi2c); - 80348b6: 6878 ldr r0, [r7, #4] - 80348b8: f000 f80e bl 80348d8 + 80348f6: 6878 ldr r0, [r7, #4] + 80348f8: f000 f80e bl 8034918 } } - 80348bc: e002 b.n 80348c4 + 80348fc: e002 b.n 8034904 if (HAL_DMA_GetState(hi2c->hdmatx) != HAL_DMA_STATE_READY) - 80348be: bf00 nop - 80348c0: e000 b.n 80348c4 + 80348fe: bf00 nop + 8034900: e000 b.n 8034904 if (HAL_DMA_GetState(hi2c->hdmarx) != HAL_DMA_STATE_READY) - 80348c2: bf00 nop + 8034902: bf00 nop } - 80348c4: bf00 nop - 80348c6: 3710 adds r7, #16 - 80348c8: 46bd mov sp, r7 - 80348ca: bd80 pop {r7, pc} - 80348cc: ffff0000 .word 0xffff0000 - 80348d0: 08033ed3 .word 0x08033ed3 - 80348d4: 0803496f .word 0x0803496f + 8034904: bf00 nop + 8034906: 3710 adds r7, #16 + 8034908: 46bd mov sp, r7 + 803490a: bd80 pop {r7, pc} + 803490c: ffff0000 .word 0xffff0000 + 8034910: 08033f13 .word 0x08033f13 + 8034914: 080349af .word 0x080349af -080348d8 : +08034918 : * @brief I2C Error callback treatment. * @param hi2c I2C handle. * @retval None */ static void I2C_TreatErrorCallback(I2C_HandleTypeDef *hi2c) { - 80348d8: b580 push {r7, lr} - 80348da: b082 sub sp, #8 - 80348dc: af00 add r7, sp, #0 - 80348de: 6078 str r0, [r7, #4] + 8034918: b580 push {r7, lr} + 803491a: b082 sub sp, #8 + 803491c: af00 add r7, sp, #0 + 803491e: 6078 str r0, [r7, #4] if (hi2c->State == HAL_I2C_STATE_ABORT) - 80348e0: 687b ldr r3, [r7, #4] - 80348e2: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80348e6: b2db uxtb r3, r3 - 80348e8: 2b60 cmp r3, #96 ; 0x60 - 80348ea: d10e bne.n 803490a + 8034920: 687b ldr r3, [r7, #4] + 8034922: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034926: b2db uxtb r3, r3 + 8034928: 2b60 cmp r3, #96 ; 0x60 + 803492a: d10e bne.n 803494a { hi2c->State = HAL_I2C_STATE_READY; - 80348ec: 687b ldr r3, [r7, #4] - 80348ee: 2220 movs r2, #32 - 80348f0: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 803492c: 687b ldr r3, [r7, #4] + 803492e: 2220 movs r2, #32 + 8034930: f883 2041 strb.w r2, [r3, #65] ; 0x41 hi2c->PreviousState = I2C_STATE_NONE; - 80348f4: 687b ldr r3, [r7, #4] - 80348f6: 2200 movs r2, #0 - 80348f8: 631a str r2, [r3, #48] ; 0x30 + 8034934: 687b ldr r3, [r7, #4] + 8034936: 2200 movs r2, #0 + 8034938: 631a str r2, [r3, #48] ; 0x30 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 80348fa: 687b ldr r3, [r7, #4] - 80348fc: 2200 movs r2, #0 - 80348fe: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 803493a: 687b ldr r3, [r7, #4] + 803493c: 2200 movs r2, #0 + 803493e: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Call the corresponding callback to inform upper layer of End of Transfer */ #if (USE_HAL_I2C_REGISTER_CALLBACKS == 1) hi2c->AbortCpltCallback(hi2c); #else HAL_I2C_AbortCpltCallback(hi2c); - 8034902: 6878 ldr r0, [r7, #4] - 8034904: f7ff fadb bl 8033ebe + 8034942: 6878 ldr r0, [r7, #4] + 8034944: f7ff fadb bl 8033efe hi2c->ErrorCallback(hi2c); #else HAL_I2C_ErrorCallback(hi2c); #endif /* USE_HAL_I2C_REGISTER_CALLBACKS */ } } - 8034908: e009 b.n 803491e + 8034948: e009 b.n 803495e hi2c->PreviousState = I2C_STATE_NONE; - 803490a: 687b ldr r3, [r7, #4] - 803490c: 2200 movs r2, #0 - 803490e: 631a str r2, [r3, #48] ; 0x30 + 803494a: 687b ldr r3, [r7, #4] + 803494c: 2200 movs r2, #0 + 803494e: 631a str r2, [r3, #48] ; 0x30 __HAL_UNLOCK(hi2c); - 8034910: 687b ldr r3, [r7, #4] - 8034912: 2200 movs r2, #0 - 8034914: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034950: 687b ldr r3, [r7, #4] + 8034952: 2200 movs r2, #0 + 8034954: f883 2040 strb.w r2, [r3, #64] ; 0x40 HAL_I2C_ErrorCallback(hi2c); - 8034918: 6878 ldr r0, [r7, #4] - 803491a: f7ff fac6 bl 8033eaa + 8034958: 6878 ldr r0, [r7, #4] + 803495a: f7ff fac6 bl 8033eea } - 803491e: bf00 nop - 8034920: 3708 adds r7, #8 - 8034922: 46bd mov sp, r7 - 8034924: bd80 pop {r7, pc} + 803495e: bf00 nop + 8034960: 3708 adds r7, #8 + 8034962: 46bd mov sp, r7 + 8034964: bd80 pop {r7, pc} -08034926 : +08034966 : * @brief I2C Tx data register flush process. * @param hi2c I2C handle. * @retval None */ static void I2C_Flush_TXDR(I2C_HandleTypeDef *hi2c) { - 8034926: b480 push {r7} - 8034928: b083 sub sp, #12 - 803492a: af00 add r7, sp, #0 - 803492c: 6078 str r0, [r7, #4] + 8034966: b480 push {r7} + 8034968: b083 sub sp, #12 + 803496a: af00 add r7, sp, #0 + 803496c: 6078 str r0, [r7, #4] /* If a pending TXIS flag is set */ /* Write a dummy data in TXDR to clear it */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXIS) != RESET) - 803492e: 687b ldr r3, [r7, #4] - 8034930: 681b ldr r3, [r3, #0] - 8034932: 699b ldr r3, [r3, #24] - 8034934: f003 0302 and.w r3, r3, #2 - 8034938: 2b02 cmp r3, #2 - 803493a: d103 bne.n 8034944 + 803496e: 687b ldr r3, [r7, #4] + 8034970: 681b ldr r3, [r3, #0] + 8034972: 699b ldr r3, [r3, #24] + 8034974: f003 0302 and.w r3, r3, #2 + 8034978: 2b02 cmp r3, #2 + 803497a: d103 bne.n 8034984 { hi2c->Instance->TXDR = 0x00U; - 803493c: 687b ldr r3, [r7, #4] - 803493e: 681b ldr r3, [r3, #0] - 8034940: 2200 movs r2, #0 - 8034942: 629a str r2, [r3, #40] ; 0x28 + 803497c: 687b ldr r3, [r7, #4] + 803497e: 681b ldr r3, [r3, #0] + 8034980: 2200 movs r2, #0 + 8034982: 629a str r2, [r3, #40] ; 0x28 } /* Flush TX register if not empty */ if (__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_TXE) == RESET) - 8034944: 687b ldr r3, [r7, #4] - 8034946: 681b ldr r3, [r3, #0] - 8034948: 699b ldr r3, [r3, #24] - 803494a: f003 0301 and.w r3, r3, #1 - 803494e: 2b01 cmp r3, #1 - 8034950: d007 beq.n 8034962 + 8034984: 687b ldr r3, [r7, #4] + 8034986: 681b ldr r3, [r3, #0] + 8034988: 699b ldr r3, [r3, #24] + 803498a: f003 0301 and.w r3, r3, #1 + 803498e: 2b01 cmp r3, #1 + 8034990: d007 beq.n 80349a2 { __HAL_I2C_CLEAR_FLAG(hi2c, I2C_FLAG_TXE); - 8034952: 687b ldr r3, [r7, #4] - 8034954: 681b ldr r3, [r3, #0] - 8034956: 699a ldr r2, [r3, #24] - 8034958: 687b ldr r3, [r7, #4] - 803495a: 681b ldr r3, [r3, #0] - 803495c: f042 0201 orr.w r2, r2, #1 - 8034960: 619a str r2, [r3, #24] - } -} - 8034962: bf00 nop - 8034964: 370c adds r7, #12 - 8034966: 46bd mov sp, r7 - 8034968: f85d 7b04 ldr.w r7, [sp], #4 - 803496c: 4770 bx lr - -0803496e : + 8034992: 687b ldr r3, [r7, #4] + 8034994: 681b ldr r3, [r3, #0] + 8034996: 699a ldr r2, [r3, #24] + 8034998: 687b ldr r3, [r7, #4] + 803499a: 681b ldr r3, [r3, #0] + 803499c: f042 0201 orr.w r2, r2, #1 + 80349a0: 619a str r2, [r3, #24] + } +} + 80349a2: bf00 nop + 80349a4: 370c adds r7, #12 + 80349a6: 46bd mov sp, r7 + 80349a8: f85d 7b04 ldr.w r7, [sp], #4 + 80349ac: 4770 bx lr + +080349ae : * (To be called at end of DMA Abort procedure). * @param hdma DMA handle. * @retval None */ static void I2C_DMAAbort(DMA_HandleTypeDef *hdma) { - 803496e: b580 push {r7, lr} - 8034970: b084 sub sp, #16 - 8034972: af00 add r7, sp, #0 - 8034974: 6078 str r0, [r7, #4] + 80349ae: b580 push {r7, lr} + 80349b0: b084 sub sp, #16 + 80349b2: af00 add r7, sp, #0 + 80349b4: 6078 str r0, [r7, #4] /* Derogation MISRAC2012-Rule-11.5 */ I2C_HandleTypeDef *hi2c = (I2C_HandleTypeDef *)(((DMA_HandleTypeDef *)hdma)->Parent); - 8034976: 687b ldr r3, [r7, #4] - 8034978: 6b9b ldr r3, [r3, #56] ; 0x38 - 803497a: 60fb str r3, [r7, #12] + 80349b6: 687b ldr r3, [r7, #4] + 80349b8: 6b9b ldr r3, [r3, #56] ; 0x38 + 80349ba: 60fb str r3, [r7, #12] /* Reset AbortCpltCallback */ if (hi2c->hdmatx != NULL) - 803497c: 68fb ldr r3, [r7, #12] - 803497e: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034980: 2b00 cmp r3, #0 - 8034982: d003 beq.n 803498c + 80349bc: 68fb ldr r3, [r7, #12] + 80349be: 6b9b ldr r3, [r3, #56] ; 0x38 + 80349c0: 2b00 cmp r3, #0 + 80349c2: d003 beq.n 80349cc { hi2c->hdmatx->XferAbortCallback = NULL; - 8034984: 68fb ldr r3, [r7, #12] - 8034986: 6b9b ldr r3, [r3, #56] ; 0x38 - 8034988: 2200 movs r2, #0 - 803498a: 651a str r2, [r3, #80] ; 0x50 + 80349c4: 68fb ldr r3, [r7, #12] + 80349c6: 6b9b ldr r3, [r3, #56] ; 0x38 + 80349c8: 2200 movs r2, #0 + 80349ca: 651a str r2, [r3, #80] ; 0x50 } if (hi2c->hdmarx != NULL) - 803498c: 68fb ldr r3, [r7, #12] - 803498e: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034990: 2b00 cmp r3, #0 - 8034992: d003 beq.n 803499c + 80349cc: 68fb ldr r3, [r7, #12] + 80349ce: 6bdb ldr r3, [r3, #60] ; 0x3c + 80349d0: 2b00 cmp r3, #0 + 80349d2: d003 beq.n 80349dc { hi2c->hdmarx->XferAbortCallback = NULL; - 8034994: 68fb ldr r3, [r7, #12] - 8034996: 6bdb ldr r3, [r3, #60] ; 0x3c - 8034998: 2200 movs r2, #0 - 803499a: 651a str r2, [r3, #80] ; 0x50 + 80349d4: 68fb ldr r3, [r7, #12] + 80349d6: 6bdb ldr r3, [r3, #60] ; 0x3c + 80349d8: 2200 movs r2, #0 + 80349da: 651a str r2, [r3, #80] ; 0x50 } I2C_TreatErrorCallback(hi2c); - 803499c: 68f8 ldr r0, [r7, #12] - 803499e: f7ff ff9b bl 80348d8 + 80349dc: 68f8 ldr r0, [r7, #12] + 80349de: f7ff ff9b bl 8034918 } - 80349a2: bf00 nop - 80349a4: 3710 adds r7, #16 - 80349a6: 46bd mov sp, r7 - 80349a8: bd80 pop {r7, pc} + 80349e2: bf00 nop + 80349e4: 3710 adds r7, #16 + 80349e6: 46bd mov sp, r7 + 80349e8: bd80 pop {r7, pc} -080349aa : +080349ea : * the configuration information for the specified I2C. * @param InterruptRequest Value of @ref I2C_Interrupt_configuration_definition. * @retval None */ static void I2C_Disable_IRQ(I2C_HandleTypeDef *hi2c, uint16_t InterruptRequest) { - 80349aa: b480 push {r7} - 80349ac: b085 sub sp, #20 - 80349ae: af00 add r7, sp, #0 - 80349b0: 6078 str r0, [r7, #4] - 80349b2: 460b mov r3, r1 - 80349b4: 807b strh r3, [r7, #2] + 80349ea: b480 push {r7} + 80349ec: b085 sub sp, #20 + 80349ee: af00 add r7, sp, #0 + 80349f0: 6078 str r0, [r7, #4] + 80349f2: 460b mov r3, r1 + 80349f4: 807b strh r3, [r7, #2] uint32_t tmpisr = 0U; - 80349b6: 2300 movs r3, #0 - 80349b8: 60fb str r3, [r7, #12] + 80349f6: 2300 movs r3, #0 + 80349f8: 60fb str r3, [r7, #12] if ((InterruptRequest & I2C_XFER_TX_IT) == I2C_XFER_TX_IT) - 80349ba: 887b ldrh r3, [r7, #2] - 80349bc: f003 0301 and.w r3, r3, #1 - 80349c0: 2b00 cmp r3, #0 - 80349c2: d00f beq.n 80349e4 + 80349fa: 887b ldrh r3, [r7, #2] + 80349fc: f003 0301 and.w r3, r3, #1 + 8034a00: 2b00 cmp r3, #0 + 8034a02: d00f beq.n 8034a24 { /* Disable TC and TXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_TXI; - 80349c4: 68fb ldr r3, [r7, #12] - 80349c6: f043 0342 orr.w r3, r3, #66 ; 0x42 - 80349ca: 60fb str r3, [r7, #12] + 8034a04: 68fb ldr r3, [r7, #12] + 8034a06: f043 0342 orr.w r3, r3, #66 ; 0x42 + 8034a0a: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80349cc: 687b ldr r3, [r7, #4] - 80349ce: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80349d2: b2db uxtb r3, r3 - 80349d4: f003 0328 and.w r3, r3, #40 ; 0x28 - 80349d8: 2b28 cmp r3, #40 ; 0x28 - 80349da: d003 beq.n 80349e4 + 8034a0c: 687b ldr r3, [r7, #4] + 8034a0e: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034a12: b2db uxtb r3, r3 + 8034a14: f003 0328 and.w r3, r3, #40 ; 0x28 + 8034a18: 2b28 cmp r3, #40 ; 0x28 + 8034a1a: d003 beq.n 8034a24 { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 80349dc: 68fb ldr r3, [r7, #12] - 80349de: f043 03b0 orr.w r3, r3, #176 ; 0xb0 - 80349e2: 60fb str r3, [r7, #12] + 8034a1c: 68fb ldr r3, [r7, #12] + 8034a1e: f043 03b0 orr.w r3, r3, #176 ; 0xb0 + 8034a22: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_RX_IT) == I2C_XFER_RX_IT) - 80349e4: 887b ldrh r3, [r7, #2] - 80349e6: f003 0302 and.w r3, r3, #2 - 80349ea: 2b00 cmp r3, #0 - 80349ec: d00f beq.n 8034a0e + 8034a24: 887b ldrh r3, [r7, #2] + 8034a26: f003 0302 and.w r3, r3, #2 + 8034a2a: 2b00 cmp r3, #0 + 8034a2c: d00f beq.n 8034a4e { /* Disable TC and RXI interrupts */ tmpisr |= I2C_IT_TCI | I2C_IT_RXI; - 80349ee: 68fb ldr r3, [r7, #12] - 80349f0: f043 0344 orr.w r3, r3, #68 ; 0x44 - 80349f4: 60fb str r3, [r7, #12] + 8034a2e: 68fb ldr r3, [r7, #12] + 8034a30: f043 0344 orr.w r3, r3, #68 ; 0x44 + 8034a34: 60fb str r3, [r7, #12] if (((uint32_t)hi2c->State & (uint32_t)HAL_I2C_STATE_LISTEN) != (uint32_t)HAL_I2C_STATE_LISTEN) - 80349f6: 687b ldr r3, [r7, #4] - 80349f8: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 80349fc: b2db uxtb r3, r3 - 80349fe: f003 0328 and.w r3, r3, #40 ; 0x28 - 8034a02: 2b28 cmp r3, #40 ; 0x28 - 8034a04: d003 beq.n 8034a0e + 8034a36: 687b ldr r3, [r7, #4] + 8034a38: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034a3c: b2db uxtb r3, r3 + 8034a3e: f003 0328 and.w r3, r3, #40 ; 0x28 + 8034a42: 2b28 cmp r3, #40 ; 0x28 + 8034a44: d003 beq.n 8034a4e { /* Disable NACK and STOP interrupts */ tmpisr |= I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 8034a06: 68fb ldr r3, [r7, #12] - 8034a08: f043 03b0 orr.w r3, r3, #176 ; 0xb0 - 8034a0c: 60fb str r3, [r7, #12] + 8034a46: 68fb ldr r3, [r7, #12] + 8034a48: f043 03b0 orr.w r3, r3, #176 ; 0xb0 + 8034a4c: 60fb str r3, [r7, #12] } } if ((InterruptRequest & I2C_XFER_LISTEN_IT) == I2C_XFER_LISTEN_IT) - 8034a0e: f9b7 3002 ldrsh.w r3, [r7, #2] - 8034a12: 2b00 cmp r3, #0 - 8034a14: da03 bge.n 8034a1e + 8034a4e: f9b7 3002 ldrsh.w r3, [r7, #2] + 8034a52: 2b00 cmp r3, #0 + 8034a54: da03 bge.n 8034a5e { /* Disable ADDR, NACK and STOP interrupts */ tmpisr |= I2C_IT_ADDRI | I2C_IT_STOPI | I2C_IT_NACKI | I2C_IT_ERRI; - 8034a16: 68fb ldr r3, [r7, #12] - 8034a18: f043 03b8 orr.w r3, r3, #184 ; 0xb8 - 8034a1c: 60fb str r3, [r7, #12] + 8034a56: 68fb ldr r3, [r7, #12] + 8034a58: f043 03b8 orr.w r3, r3, #184 ; 0xb8 + 8034a5c: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_ERROR_IT) - 8034a1e: 887b ldrh r3, [r7, #2] - 8034a20: 2b10 cmp r3, #16 - 8034a22: d103 bne.n 8034a2c + 8034a5e: 887b ldrh r3, [r7, #2] + 8034a60: 2b10 cmp r3, #16 + 8034a62: d103 bne.n 8034a6c { /* Enable ERR and NACK interrupts */ tmpisr |= I2C_IT_ERRI | I2C_IT_NACKI; - 8034a24: 68fb ldr r3, [r7, #12] - 8034a26: f043 0390 orr.w r3, r3, #144 ; 0x90 - 8034a2a: 60fb str r3, [r7, #12] + 8034a64: 68fb ldr r3, [r7, #12] + 8034a66: f043 0390 orr.w r3, r3, #144 ; 0x90 + 8034a6a: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_CPLT_IT) - 8034a2c: 887b ldrh r3, [r7, #2] - 8034a2e: 2b20 cmp r3, #32 - 8034a30: d103 bne.n 8034a3a + 8034a6c: 887b ldrh r3, [r7, #2] + 8034a6e: 2b20 cmp r3, #32 + 8034a70: d103 bne.n 8034a7a { /* Enable STOP interrupts */ tmpisr |= I2C_IT_STOPI; - 8034a32: 68fb ldr r3, [r7, #12] - 8034a34: f043 0320 orr.w r3, r3, #32 - 8034a38: 60fb str r3, [r7, #12] + 8034a72: 68fb ldr r3, [r7, #12] + 8034a74: f043 0320 orr.w r3, r3, #32 + 8034a78: 60fb str r3, [r7, #12] } if (InterruptRequest == I2C_XFER_RELOAD_IT) - 8034a3a: 887b ldrh r3, [r7, #2] - 8034a3c: 2b40 cmp r3, #64 ; 0x40 - 8034a3e: d103 bne.n 8034a48 + 8034a7a: 887b ldrh r3, [r7, #2] + 8034a7c: 2b40 cmp r3, #64 ; 0x40 + 8034a7e: d103 bne.n 8034a88 { /* Enable TC interrupts */ tmpisr |= I2C_IT_TCI; - 8034a40: 68fb ldr r3, [r7, #12] - 8034a42: f043 0340 orr.w r3, r3, #64 ; 0x40 - 8034a46: 60fb str r3, [r7, #12] + 8034a80: 68fb ldr r3, [r7, #12] + 8034a82: f043 0340 orr.w r3, r3, #64 ; 0x40 + 8034a86: 60fb str r3, [r7, #12] } /* Disable interrupts only at the end */ /* to avoid a breaking situation like at "t" time */ /* all disable interrupts request are not done */ __HAL_I2C_DISABLE_IT(hi2c, tmpisr); - 8034a48: 687b ldr r3, [r7, #4] - 8034a4a: 681b ldr r3, [r3, #0] - 8034a4c: 6819 ldr r1, [r3, #0] - 8034a4e: 68fb ldr r3, [r7, #12] - 8034a50: 43da mvns r2, r3 - 8034a52: 687b ldr r3, [r7, #4] - 8034a54: 681b ldr r3, [r3, #0] - 8034a56: 400a ands r2, r1 - 8034a58: 601a str r2, [r3, #0] -} - 8034a5a: bf00 nop - 8034a5c: 3714 adds r7, #20 - 8034a5e: 46bd mov sp, r7 - 8034a60: f85d 7b04 ldr.w r7, [sp], #4 - 8034a64: 4770 bx lr - -08034a66 : + 8034a88: 687b ldr r3, [r7, #4] + 8034a8a: 681b ldr r3, [r3, #0] + 8034a8c: 6819 ldr r1, [r3, #0] + 8034a8e: 68fb ldr r3, [r7, #12] + 8034a90: 43da mvns r2, r3 + 8034a92: 687b ldr r3, [r7, #4] + 8034a94: 681b ldr r3, [r3, #0] + 8034a96: 400a ands r2, r1 + 8034a98: 601a str r2, [r3, #0] +} + 8034a9a: bf00 nop + 8034a9c: 3714 adds r7, #20 + 8034a9e: 46bd mov sp, r7 + 8034aa0: f85d 7b04 ldr.w r7, [sp], #4 + 8034aa4: 4770 bx lr + +08034aa6 : * the configuration information for the specified I2Cx peripheral. * @param AnalogFilter New state of the Analog filter. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigAnalogFilter(I2C_HandleTypeDef *hi2c, uint32_t AnalogFilter) { - 8034a66: b480 push {r7} - 8034a68: b083 sub sp, #12 - 8034a6a: af00 add r7, sp, #0 - 8034a6c: 6078 str r0, [r7, #4] - 8034a6e: 6039 str r1, [r7, #0] + 8034aa6: b480 push {r7} + 8034aa8: b083 sub sp, #12 + 8034aaa: af00 add r7, sp, #0 + 8034aac: 6078 str r0, [r7, #4] + 8034aae: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_ANALOG_FILTER(AnalogFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 8034a70: 687b ldr r3, [r7, #4] - 8034a72: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034a76: b2db uxtb r3, r3 - 8034a78: 2b20 cmp r3, #32 - 8034a7a: d138 bne.n 8034aee + 8034ab0: 687b ldr r3, [r7, #4] + 8034ab2: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034ab6: b2db uxtb r3, r3 + 8034ab8: 2b20 cmp r3, #32 + 8034aba: d138 bne.n 8034b2e { /* Process Locked */ __HAL_LOCK(hi2c); - 8034a7c: 687b ldr r3, [r7, #4] - 8034a7e: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8034a82: 2b01 cmp r3, #1 - 8034a84: d101 bne.n 8034a8a - 8034a86: 2302 movs r3, #2 - 8034a88: e032 b.n 8034af0 - 8034a8a: 687b ldr r3, [r7, #4] - 8034a8c: 2201 movs r2, #1 - 8034a8e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034abc: 687b ldr r3, [r7, #4] + 8034abe: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8034ac2: 2b01 cmp r3, #1 + 8034ac4: d101 bne.n 8034aca + 8034ac6: 2302 movs r3, #2 + 8034ac8: e032 b.n 8034b30 + 8034aca: 687b ldr r3, [r7, #4] + 8034acc: 2201 movs r2, #1 + 8034ace: f883 2040 strb.w r2, [r3, #64] ; 0x40 hi2c->State = HAL_I2C_STATE_BUSY; - 8034a92: 687b ldr r3, [r7, #4] - 8034a94: 2224 movs r2, #36 ; 0x24 - 8034a96: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034ad2: 687b ldr r3, [r7, #4] + 8034ad4: 2224 movs r2, #36 ; 0x24 + 8034ad6: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8034a9a: 687b ldr r3, [r7, #4] - 8034a9c: 681b ldr r3, [r3, #0] - 8034a9e: 681a ldr r2, [r3, #0] - 8034aa0: 687b ldr r3, [r7, #4] - 8034aa2: 681b ldr r3, [r3, #0] - 8034aa4: f022 0201 bic.w r2, r2, #1 - 8034aa8: 601a str r2, [r3, #0] + 8034ada: 687b ldr r3, [r7, #4] + 8034adc: 681b ldr r3, [r3, #0] + 8034ade: 681a ldr r2, [r3, #0] + 8034ae0: 687b ldr r3, [r7, #4] + 8034ae2: 681b ldr r3, [r3, #0] + 8034ae4: f022 0201 bic.w r2, r2, #1 + 8034ae8: 601a str r2, [r3, #0] /* Reset I2Cx ANOFF bit */ hi2c->Instance->CR1 &= ~(I2C_CR1_ANFOFF); - 8034aaa: 687b ldr r3, [r7, #4] - 8034aac: 681b ldr r3, [r3, #0] - 8034aae: 681a ldr r2, [r3, #0] - 8034ab0: 687b ldr r3, [r7, #4] - 8034ab2: 681b ldr r3, [r3, #0] - 8034ab4: f422 5280 bic.w r2, r2, #4096 ; 0x1000 - 8034ab8: 601a str r2, [r3, #0] + 8034aea: 687b ldr r3, [r7, #4] + 8034aec: 681b ldr r3, [r3, #0] + 8034aee: 681a ldr r2, [r3, #0] + 8034af0: 687b ldr r3, [r7, #4] + 8034af2: 681b ldr r3, [r3, #0] + 8034af4: f422 5280 bic.w r2, r2, #4096 ; 0x1000 + 8034af8: 601a str r2, [r3, #0] /* Set analog filter bit*/ hi2c->Instance->CR1 |= AnalogFilter; - 8034aba: 687b ldr r3, [r7, #4] - 8034abc: 681b ldr r3, [r3, #0] - 8034abe: 6819 ldr r1, [r3, #0] - 8034ac0: 687b ldr r3, [r7, #4] - 8034ac2: 681b ldr r3, [r3, #0] - 8034ac4: 683a ldr r2, [r7, #0] - 8034ac6: 430a orrs r2, r1 - 8034ac8: 601a str r2, [r3, #0] + 8034afa: 687b ldr r3, [r7, #4] + 8034afc: 681b ldr r3, [r3, #0] + 8034afe: 6819 ldr r1, [r3, #0] + 8034b00: 687b ldr r3, [r7, #4] + 8034b02: 681b ldr r3, [r3, #0] + 8034b04: 683a ldr r2, [r7, #0] + 8034b06: 430a orrs r2, r1 + 8034b08: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 8034aca: 687b ldr r3, [r7, #4] - 8034acc: 681b ldr r3, [r3, #0] - 8034ace: 681a ldr r2, [r3, #0] - 8034ad0: 687b ldr r3, [r7, #4] - 8034ad2: 681b ldr r3, [r3, #0] - 8034ad4: f042 0201 orr.w r2, r2, #1 - 8034ad8: 601a str r2, [r3, #0] + 8034b0a: 687b ldr r3, [r7, #4] + 8034b0c: 681b ldr r3, [r3, #0] + 8034b0e: 681a ldr r2, [r3, #0] + 8034b10: 687b ldr r3, [r7, #4] + 8034b12: 681b ldr r3, [r3, #0] + 8034b14: f042 0201 orr.w r2, r2, #1 + 8034b18: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 8034ada: 687b ldr r3, [r7, #4] - 8034adc: 2220 movs r2, #32 - 8034ade: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034b1a: 687b ldr r3, [r7, #4] + 8034b1c: 2220 movs r2, #32 + 8034b1e: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8034ae2: 687b ldr r3, [r7, #4] - 8034ae4: 2200 movs r2, #0 - 8034ae6: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034b22: 687b ldr r3, [r7, #4] + 8034b24: 2200 movs r2, #0 + 8034b26: f883 2040 strb.w r2, [r3, #64] ; 0x40 return HAL_OK; - 8034aea: 2300 movs r3, #0 - 8034aec: e000 b.n 8034af0 + 8034b2a: 2300 movs r3, #0 + 8034b2c: e000 b.n 8034b30 } else { return HAL_BUSY; - 8034aee: 2302 movs r3, #2 + 8034b2e: 2302 movs r3, #2 } } - 8034af0: 4618 mov r0, r3 - 8034af2: 370c adds r7, #12 - 8034af4: 46bd mov sp, r7 - 8034af6: f85d 7b04 ldr.w r7, [sp], #4 - 8034afa: 4770 bx lr + 8034b30: 4618 mov r0, r3 + 8034b32: 370c adds r7, #12 + 8034b34: 46bd mov sp, r7 + 8034b36: f85d 7b04 ldr.w r7, [sp], #4 + 8034b3a: 4770 bx lr -08034afc : +08034b3c : * the configuration information for the specified I2Cx peripheral. * @param DigitalFilter Coefficient of digital noise filter between Min_Data=0x00 and Max_Data=0x0F. * @retval HAL status */ HAL_StatusTypeDef HAL_I2CEx_ConfigDigitalFilter(I2C_HandleTypeDef *hi2c, uint32_t DigitalFilter) { - 8034afc: b480 push {r7} - 8034afe: b085 sub sp, #20 - 8034b00: af00 add r7, sp, #0 - 8034b02: 6078 str r0, [r7, #4] - 8034b04: 6039 str r1, [r7, #0] + 8034b3c: b480 push {r7} + 8034b3e: b085 sub sp, #20 + 8034b40: af00 add r7, sp, #0 + 8034b42: 6078 str r0, [r7, #4] + 8034b44: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_I2C_ALL_INSTANCE(hi2c->Instance)); assert_param(IS_I2C_DIGITAL_FILTER(DigitalFilter)); if (hi2c->State == HAL_I2C_STATE_READY) - 8034b06: 687b ldr r3, [r7, #4] - 8034b08: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034b0c: b2db uxtb r3, r3 - 8034b0e: 2b20 cmp r3, #32 - 8034b10: d139 bne.n 8034b86 + 8034b46: 687b ldr r3, [r7, #4] + 8034b48: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034b4c: b2db uxtb r3, r3 + 8034b4e: 2b20 cmp r3, #32 + 8034b50: d139 bne.n 8034bc6 { /* Process Locked */ __HAL_LOCK(hi2c); - 8034b12: 687b ldr r3, [r7, #4] - 8034b14: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8034b18: 2b01 cmp r3, #1 - 8034b1a: d101 bne.n 8034b20 - 8034b1c: 2302 movs r3, #2 - 8034b1e: e033 b.n 8034b88 - 8034b20: 687b ldr r3, [r7, #4] - 8034b22: 2201 movs r2, #1 - 8034b24: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034b52: 687b ldr r3, [r7, #4] + 8034b54: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8034b58: 2b01 cmp r3, #1 + 8034b5a: d101 bne.n 8034b60 + 8034b5c: 2302 movs r3, #2 + 8034b5e: e033 b.n 8034bc8 + 8034b60: 687b ldr r3, [r7, #4] + 8034b62: 2201 movs r2, #1 + 8034b64: f883 2040 strb.w r2, [r3, #64] ; 0x40 hi2c->State = HAL_I2C_STATE_BUSY; - 8034b28: 687b ldr r3, [r7, #4] - 8034b2a: 2224 movs r2, #36 ; 0x24 - 8034b2c: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034b68: 687b ldr r3, [r7, #4] + 8034b6a: 2224 movs r2, #36 ; 0x24 + 8034b6c: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Disable the selected I2C peripheral */ __HAL_I2C_DISABLE(hi2c); - 8034b30: 687b ldr r3, [r7, #4] - 8034b32: 681b ldr r3, [r3, #0] - 8034b34: 681a ldr r2, [r3, #0] - 8034b36: 687b ldr r3, [r7, #4] - 8034b38: 681b ldr r3, [r3, #0] - 8034b3a: f022 0201 bic.w r2, r2, #1 - 8034b3e: 601a str r2, [r3, #0] + 8034b70: 687b ldr r3, [r7, #4] + 8034b72: 681b ldr r3, [r3, #0] + 8034b74: 681a ldr r2, [r3, #0] + 8034b76: 687b ldr r3, [r7, #4] + 8034b78: 681b ldr r3, [r3, #0] + 8034b7a: f022 0201 bic.w r2, r2, #1 + 8034b7e: 601a str r2, [r3, #0] /* Get the old register value */ tmpreg = hi2c->Instance->CR1; - 8034b40: 687b ldr r3, [r7, #4] - 8034b42: 681b ldr r3, [r3, #0] - 8034b44: 681b ldr r3, [r3, #0] - 8034b46: 60fb str r3, [r7, #12] + 8034b80: 687b ldr r3, [r7, #4] + 8034b82: 681b ldr r3, [r3, #0] + 8034b84: 681b ldr r3, [r3, #0] + 8034b86: 60fb str r3, [r7, #12] /* Reset I2Cx DNF bits [11:8] */ tmpreg &= ~(I2C_CR1_DNF); - 8034b48: 68fb ldr r3, [r7, #12] - 8034b4a: f423 6370 bic.w r3, r3, #3840 ; 0xf00 - 8034b4e: 60fb str r3, [r7, #12] + 8034b88: 68fb ldr r3, [r7, #12] + 8034b8a: f423 6370 bic.w r3, r3, #3840 ; 0xf00 + 8034b8e: 60fb str r3, [r7, #12] /* Set I2Cx DNF coefficient */ tmpreg |= DigitalFilter << 8U; - 8034b50: 683b ldr r3, [r7, #0] - 8034b52: 021b lsls r3, r3, #8 - 8034b54: 68fa ldr r2, [r7, #12] - 8034b56: 4313 orrs r3, r2 - 8034b58: 60fb str r3, [r7, #12] + 8034b90: 683b ldr r3, [r7, #0] + 8034b92: 021b lsls r3, r3, #8 + 8034b94: 68fa ldr r2, [r7, #12] + 8034b96: 4313 orrs r3, r2 + 8034b98: 60fb str r3, [r7, #12] /* Store the new register value */ hi2c->Instance->CR1 = tmpreg; - 8034b5a: 687b ldr r3, [r7, #4] - 8034b5c: 681b ldr r3, [r3, #0] - 8034b5e: 68fa ldr r2, [r7, #12] - 8034b60: 601a str r2, [r3, #0] + 8034b9a: 687b ldr r3, [r7, #4] + 8034b9c: 681b ldr r3, [r3, #0] + 8034b9e: 68fa ldr r2, [r7, #12] + 8034ba0: 601a str r2, [r3, #0] __HAL_I2C_ENABLE(hi2c); - 8034b62: 687b ldr r3, [r7, #4] - 8034b64: 681b ldr r3, [r3, #0] - 8034b66: 681a ldr r2, [r3, #0] - 8034b68: 687b ldr r3, [r7, #4] - 8034b6a: 681b ldr r3, [r3, #0] - 8034b6c: f042 0201 orr.w r2, r2, #1 - 8034b70: 601a str r2, [r3, #0] + 8034ba2: 687b ldr r3, [r7, #4] + 8034ba4: 681b ldr r3, [r3, #0] + 8034ba6: 681a ldr r2, [r3, #0] + 8034ba8: 687b ldr r3, [r7, #4] + 8034baa: 681b ldr r3, [r3, #0] + 8034bac: f042 0201 orr.w r2, r2, #1 + 8034bb0: 601a str r2, [r3, #0] hi2c->State = HAL_I2C_STATE_READY; - 8034b72: 687b ldr r3, [r7, #4] - 8034b74: 2220 movs r2, #32 - 8034b76: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034bb2: 687b ldr r3, [r7, #4] + 8034bb4: 2220 movs r2, #32 + 8034bb6: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Process Unlocked */ __HAL_UNLOCK(hi2c); - 8034b7a: 687b ldr r3, [r7, #4] - 8034b7c: 2200 movs r2, #0 - 8034b7e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034bba: 687b ldr r3, [r7, #4] + 8034bbc: 2200 movs r2, #0 + 8034bbe: f883 2040 strb.w r2, [r3, #64] ; 0x40 return HAL_OK; - 8034b82: 2300 movs r3, #0 - 8034b84: e000 b.n 8034b88 + 8034bc2: 2300 movs r3, #0 + 8034bc4: e000 b.n 8034bc8 } else { return HAL_BUSY; - 8034b86: 2302 movs r3, #2 + 8034bc6: 2302 movs r3, #2 } } - 8034b88: 4618 mov r0, r3 - 8034b8a: 3714 adds r7, #20 - 8034b8c: 46bd mov sp, r7 - 8034b8e: f85d 7b04 ldr.w r7, [sp], #4 - 8034b92: 4770 bx lr + 8034bc8: 4618 mov r0, r3 + 8034bca: 3714 adds r7, #20 + 8034bcc: 46bd mov sp, r7 + 8034bce: f85d 7b04 ldr.w r7, [sp], #4 + 8034bd2: 4770 bx lr -08034b94 : +08034bd4 : * PWR_SMPS_2V5_SUPPLIES_EXT are used only for lines that supports SMPS * regulator. * @retval HAL status. */ HAL_StatusTypeDef HAL_PWREx_ConfigSupply (uint32_t SupplySource) { - 8034b94: b580 push {r7, lr} - 8034b96: b084 sub sp, #16 - 8034b98: af00 add r7, sp, #0 - 8034b9a: 6078 str r0, [r7, #4] + 8034bd4: b580 push {r7, lr} + 8034bd6: b084 sub sp, #16 + 8034bd8: af00 add r7, sp, #0 + 8034bda: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param (IS_PWR_SUPPLY (SupplySource)); /* Check if supply source was configured */ #if defined (PWR_FLAG_SCUEN) if (__HAL_PWR_GET_FLAG (PWR_FLAG_SCUEN) == 0U) - 8034b9c: 4b19 ldr r3, [pc, #100] ; (8034c04 ) - 8034b9e: 68db ldr r3, [r3, #12] - 8034ba0: f003 0304 and.w r3, r3, #4 - 8034ba4: 2b04 cmp r3, #4 - 8034ba6: d00a beq.n 8034bbe + 8034bdc: 4b19 ldr r3, [pc, #100] ; (8034c44 ) + 8034bde: 68db ldr r3, [r3, #12] + 8034be0: f003 0304 and.w r3, r3, #4 + 8034be4: 2b04 cmp r3, #4 + 8034be6: d00a beq.n 8034bfe #else if ((PWR->CR3 & (PWR_CR3_SMPSEN | PWR_CR3_LDOEN | PWR_CR3_BYPASS)) != (PWR_CR3_SMPSEN | PWR_CR3_LDOEN)) #endif /* defined (PWR_FLAG_SCUEN) */ { /* Check supply configuration */ if ((PWR->CR3 & PWR_SUPPLY_CONFIG_MASK) != SupplySource) - 8034ba8: 4b16 ldr r3, [pc, #88] ; (8034c04 ) - 8034baa: 68db ldr r3, [r3, #12] - 8034bac: f003 0307 and.w r3, r3, #7 - 8034bb0: 687a ldr r2, [r7, #4] - 8034bb2: 429a cmp r2, r3 - 8034bb4: d001 beq.n 8034bba + 8034be8: 4b16 ldr r3, [pc, #88] ; (8034c44 ) + 8034bea: 68db ldr r3, [r3, #12] + 8034bec: f003 0307 and.w r3, r3, #7 + 8034bf0: 687a ldr r2, [r7, #4] + 8034bf2: 429a cmp r2, r3 + 8034bf4: d001 beq.n 8034bfa { /* Supply configuration update locked, can't apply a new supply config */ return HAL_ERROR; - 8034bb6: 2301 movs r3, #1 - 8034bb8: e01f b.n 8034bfa + 8034bf6: 2301 movs r3, #1 + 8034bf8: e01f b.n 8034c3a else { /* Supply configuration update locked, but new supply configuration matches with old supply configuration : nothing to do */ return HAL_OK; - 8034bba: 2300 movs r3, #0 - 8034bbc: e01d b.n 8034bfa + 8034bfa: 2300 movs r3, #0 + 8034bfc: e01d b.n 8034c3a } } /* Set the power supply configuration */ MODIFY_REG (PWR->CR3, PWR_SUPPLY_CONFIG_MASK, SupplySource); - 8034bbe: 4b11 ldr r3, [pc, #68] ; (8034c04 ) - 8034bc0: 68db ldr r3, [r3, #12] - 8034bc2: f023 0207 bic.w r2, r3, #7 - 8034bc6: 490f ldr r1, [pc, #60] ; (8034c04 ) - 8034bc8: 687b ldr r3, [r7, #4] - 8034bca: 4313 orrs r3, r2 - 8034bcc: 60cb str r3, [r1, #12] + 8034bfe: 4b11 ldr r3, [pc, #68] ; (8034c44 ) + 8034c00: 68db ldr r3, [r3, #12] + 8034c02: f023 0207 bic.w r2, r3, #7 + 8034c06: 490f ldr r1, [pc, #60] ; (8034c44 ) + 8034c08: 687b ldr r3, [r7, #4] + 8034c0a: 4313 orrs r3, r2 + 8034c0c: 60cb str r3, [r1, #12] /* Get tick */ tickstart = HAL_GetTick (); - 8034bce: f7f8 f9e1 bl 802cf94 - 8034bd2: 60f8 str r0, [r7, #12] + 8034c0e: f7f8 f9e1 bl 802cfd4 + 8034c12: 60f8 str r0, [r7, #12] /* Wait till voltage level flag is set */ while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U) - 8034bd4: e009 b.n 8034bea + 8034c14: e009 b.n 8034c2a { if ((HAL_GetTick () - tickstart) > PWR_FLAG_SETTING_DELAY) - 8034bd6: f7f8 f9dd bl 802cf94 - 8034bda: 4602 mov r2, r0 - 8034bdc: 68fb ldr r3, [r7, #12] - 8034bde: 1ad3 subs r3, r2, r3 - 8034be0: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 - 8034be4: d901 bls.n 8034bea + 8034c16: f7f8 f9dd bl 802cfd4 + 8034c1a: 4602 mov r2, r0 + 8034c1c: 68fb ldr r3, [r7, #12] + 8034c1e: 1ad3 subs r3, r2, r3 + 8034c20: f5b3 7f7a cmp.w r3, #1000 ; 0x3e8 + 8034c24: d901 bls.n 8034c2a { return HAL_ERROR; - 8034be6: 2301 movs r3, #1 - 8034be8: e007 b.n 8034bfa + 8034c26: 2301 movs r3, #1 + 8034c28: e007 b.n 8034c3a while (__HAL_PWR_GET_FLAG (PWR_FLAG_ACTVOSRDY) == 0U) - 8034bea: 4b06 ldr r3, [pc, #24] ; (8034c04 ) - 8034bec: 685b ldr r3, [r3, #4] - 8034bee: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 8034bf2: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8034bf6: d1ee bne.n 8034bd6 + 8034c2a: 4b06 ldr r3, [pc, #24] ; (8034c44 ) + 8034c2c: 685b ldr r3, [r3, #4] + 8034c2e: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 8034c32: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 8034c36: d1ee bne.n 8034c16 } } } #endif /* defined (SMPS) */ return HAL_OK; - 8034bf8: 2300 movs r3, #0 + 8034c38: 2300 movs r3, #0 } - 8034bfa: 4618 mov r0, r3 - 8034bfc: 3710 adds r7, #16 - 8034bfe: 46bd mov sp, r7 - 8034c00: bd80 pop {r7, pc} - 8034c02: bf00 nop - 8034c04: 58024800 .word 0x58024800 + 8034c3a: 4618 mov r0, r3 + 8034c3c: 3710 adds r7, #16 + 8034c3e: 46bd mov sp, r7 + 8034c40: bd80 pop {r7, pc} + 8034c42: bf00 nop + 8034c44: 58024800 .word 0x58024800 -08034c08 : +08034c48 : * in the QSPI_InitTypeDef and initialize the associated handle. * @param hqspi QSPI handle * @retval HAL status */ HAL_StatusTypeDef HAL_QSPI_Init(QSPI_HandleTypeDef *hqspi) { - 8034c08: b580 push {r7, lr} - 8034c0a: b086 sub sp, #24 - 8034c0c: af02 add r7, sp, #8 - 8034c0e: 6078 str r0, [r7, #4] + 8034c48: b580 push {r7, lr} + 8034c4a: b086 sub sp, #24 + 8034c4c: af02 add r7, sp, #8 + 8034c4e: 6078 str r0, [r7, #4] HAL_StatusTypeDef status; uint32_t tickstart = HAL_GetTick(); - 8034c10: f7f8 f9c0 bl 802cf94 - 8034c14: 60f8 str r0, [r7, #12] + 8034c50: f7f8 f9c0 bl 802cfd4 + 8034c54: 60f8 str r0, [r7, #12] /* Check the QSPI handle allocation */ if(hqspi == NULL) - 8034c16: 687b ldr r3, [r7, #4] - 8034c18: 2b00 cmp r3, #0 - 8034c1a: d101 bne.n 8034c20 + 8034c56: 687b ldr r3, [r7, #4] + 8034c58: 2b00 cmp r3, #0 + 8034c5a: d101 bne.n 8034c60 { return HAL_ERROR; - 8034c1c: 2301 movs r3, #1 - 8034c1e: e05f b.n 8034ce0 + 8034c5c: 2301 movs r3, #1 + 8034c5e: e05f b.n 8034d20 if (hqspi->Init.DualFlash != QSPI_DUALFLASH_ENABLE ) { assert_param(IS_QSPI_FLASH_ID(hqspi->Init.FlashID)); } if(hqspi->State == HAL_QSPI_STATE_RESET) - 8034c20: 687b ldr r3, [r7, #4] - 8034c22: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034c26: b2db uxtb r3, r3 - 8034c28: 2b00 cmp r3, #0 - 8034c2a: d107 bne.n 8034c3c + 8034c60: 687b ldr r3, [r7, #4] + 8034c62: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034c66: b2db uxtb r3, r3 + 8034c68: 2b00 cmp r3, #0 + 8034c6a: d107 bne.n 8034c7c /* Init the low level hardware */ hqspi->MspInitCallback(hqspi); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_QSPI_MspInit(hqspi); - 8034c2c: 6878 ldr r0, [r7, #4] - 8034c2e: f7f6 faa7 bl 802b180 + 8034c6c: 6878 ldr r0, [r7, #4] + 8034c6e: f7f6 faa7 bl 802b1c0 #endif /* Configure the default timeout for the QSPI memory access */ HAL_QSPI_SetTimeout(hqspi, HAL_QSPI_TIMEOUT_DEFAULT_VALUE); - 8034c32: f241 3188 movw r1, #5000 ; 0x1388 - 8034c36: 6878 ldr r0, [r7, #4] - 8034c38: f000 f9c1 bl 8034fbe + 8034c72: f241 3188 movw r1, #5000 ; 0x1388 + 8034c76: 6878 ldr r0, [r7, #4] + 8034c78: f000 f9c1 bl 8034ffe } /* Configure QSPI FIFO Threshold */ MODIFY_REG(hqspi->Instance->CR, QUADSPI_CR_FTHRES, - 8034c3c: 687b ldr r3, [r7, #4] - 8034c3e: 681b ldr r3, [r3, #0] - 8034c40: 681b ldr r3, [r3, #0] - 8034c42: f423 6170 bic.w r1, r3, #3840 ; 0xf00 - 8034c46: 687b ldr r3, [r7, #4] - 8034c48: 689b ldr r3, [r3, #8] - 8034c4a: 3b01 subs r3, #1 - 8034c4c: 021a lsls r2, r3, #8 - 8034c4e: 687b ldr r3, [r7, #4] - 8034c50: 681b ldr r3, [r3, #0] - 8034c52: 430a orrs r2, r1 - 8034c54: 601a str r2, [r3, #0] + 8034c7c: 687b ldr r3, [r7, #4] + 8034c7e: 681b ldr r3, [r3, #0] + 8034c80: 681b ldr r3, [r3, #0] + 8034c82: f423 6170 bic.w r1, r3, #3840 ; 0xf00 + 8034c86: 687b ldr r3, [r7, #4] + 8034c88: 689b ldr r3, [r3, #8] + 8034c8a: 3b01 subs r3, #1 + 8034c8c: 021a lsls r2, r3, #8 + 8034c8e: 687b ldr r3, [r7, #4] + 8034c90: 681b ldr r3, [r3, #0] + 8034c92: 430a orrs r2, r1 + 8034c94: 601a str r2, [r3, #0] ((hqspi->Init.FifoThreshold - 1U) << QUADSPI_CR_FTHRES_Pos)); /* Wait till BUSY flag reset */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, hqspi->Timeout); - 8034c56: 687b ldr r3, [r7, #4] - 8034c58: 6c9b ldr r3, [r3, #72] ; 0x48 - 8034c5a: 9300 str r3, [sp, #0] - 8034c5c: 68fb ldr r3, [r7, #12] - 8034c5e: 2200 movs r2, #0 - 8034c60: 2120 movs r1, #32 - 8034c62: 6878 ldr r0, [r7, #4] - 8034c64: f000 f9b9 bl 8034fda - 8034c68: 4603 mov r3, r0 - 8034c6a: 72fb strb r3, [r7, #11] + 8034c96: 687b ldr r3, [r7, #4] + 8034c98: 6c9b ldr r3, [r3, #72] ; 0x48 + 8034c9a: 9300 str r3, [sp, #0] + 8034c9c: 68fb ldr r3, [r7, #12] + 8034c9e: 2200 movs r2, #0 + 8034ca0: 2120 movs r1, #32 + 8034ca2: 6878 ldr r0, [r7, #4] + 8034ca4: f000 f9b9 bl 803501a + 8034ca8: 4603 mov r3, r0 + 8034caa: 72fb strb r3, [r7, #11] if(status == HAL_OK) - 8034c6c: 7afb ldrb r3, [r7, #11] - 8034c6e: 2b00 cmp r3, #0 - 8034c70: d135 bne.n 8034cde + 8034cac: 7afb ldrb r3, [r7, #11] + 8034cae: 2b00 cmp r3, #0 + 8034cb0: d135 bne.n 8034d1e { /* Configure QSPI Clock Prescaler and Sample Shift */ MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PRESCALER | QUADSPI_CR_SSHIFT | QUADSPI_CR_FSEL | QUADSPI_CR_DFM), - 8034c72: 687b ldr r3, [r7, #4] - 8034c74: 681b ldr r3, [r3, #0] - 8034c76: 681a ldr r2, [r3, #0] - 8034c78: 4b1b ldr r3, [pc, #108] ; (8034ce8 ) - 8034c7a: 4013 ands r3, r2 - 8034c7c: 687a ldr r2, [r7, #4] - 8034c7e: 6852 ldr r2, [r2, #4] - 8034c80: 0611 lsls r1, r2, #24 - 8034c82: 687a ldr r2, [r7, #4] - 8034c84: 68d2 ldr r2, [r2, #12] - 8034c86: 4311 orrs r1, r2 - 8034c88: 687a ldr r2, [r7, #4] - 8034c8a: 69d2 ldr r2, [r2, #28] - 8034c8c: 4311 orrs r1, r2 - 8034c8e: 687a ldr r2, [r7, #4] - 8034c90: 6a12 ldr r2, [r2, #32] - 8034c92: 4311 orrs r1, r2 - 8034c94: 687a ldr r2, [r7, #4] - 8034c96: 6812 ldr r2, [r2, #0] - 8034c98: 430b orrs r3, r1 - 8034c9a: 6013 str r3, [r2, #0] + 8034cb2: 687b ldr r3, [r7, #4] + 8034cb4: 681b ldr r3, [r3, #0] + 8034cb6: 681a ldr r2, [r3, #0] + 8034cb8: 4b1b ldr r3, [pc, #108] ; (8034d28 ) + 8034cba: 4013 ands r3, r2 + 8034cbc: 687a ldr r2, [r7, #4] + 8034cbe: 6852 ldr r2, [r2, #4] + 8034cc0: 0611 lsls r1, r2, #24 + 8034cc2: 687a ldr r2, [r7, #4] + 8034cc4: 68d2 ldr r2, [r2, #12] + 8034cc6: 4311 orrs r1, r2 + 8034cc8: 687a ldr r2, [r7, #4] + 8034cca: 69d2 ldr r2, [r2, #28] + 8034ccc: 4311 orrs r1, r2 + 8034cce: 687a ldr r2, [r7, #4] + 8034cd0: 6a12 ldr r2, [r2, #32] + 8034cd2: 4311 orrs r1, r2 + 8034cd4: 687a ldr r2, [r7, #4] + 8034cd6: 6812 ldr r2, [r2, #0] + 8034cd8: 430b orrs r3, r1 + 8034cda: 6013 str r3, [r2, #0] ((hqspi->Init.ClockPrescaler << QUADSPI_CR_PRESCALER_Pos) | hqspi->Init.SampleShifting | hqspi->Init.FlashID | hqspi->Init.DualFlash)); /* Configure QSPI Flash Size, CS High Time and Clock Mode */ MODIFY_REG(hqspi->Instance->DCR, (QUADSPI_DCR_FSIZE | QUADSPI_DCR_CSHT | QUADSPI_DCR_CKMODE), - 8034c9c: 687b ldr r3, [r7, #4] - 8034c9e: 681b ldr r3, [r3, #0] - 8034ca0: 685a ldr r2, [r3, #4] - 8034ca2: 4b12 ldr r3, [pc, #72] ; (8034cec ) - 8034ca4: 4013 ands r3, r2 - 8034ca6: 687a ldr r2, [r7, #4] - 8034ca8: 6912 ldr r2, [r2, #16] - 8034caa: 0411 lsls r1, r2, #16 - 8034cac: 687a ldr r2, [r7, #4] - 8034cae: 6952 ldr r2, [r2, #20] - 8034cb0: 4311 orrs r1, r2 - 8034cb2: 687a ldr r2, [r7, #4] - 8034cb4: 6992 ldr r2, [r2, #24] - 8034cb6: 4311 orrs r1, r2 - 8034cb8: 687a ldr r2, [r7, #4] - 8034cba: 6812 ldr r2, [r2, #0] - 8034cbc: 430b orrs r3, r1 - 8034cbe: 6053 str r3, [r2, #4] + 8034cdc: 687b ldr r3, [r7, #4] + 8034cde: 681b ldr r3, [r3, #0] + 8034ce0: 685a ldr r2, [r3, #4] + 8034ce2: 4b12 ldr r3, [pc, #72] ; (8034d2c ) + 8034ce4: 4013 ands r3, r2 + 8034ce6: 687a ldr r2, [r7, #4] + 8034ce8: 6912 ldr r2, [r2, #16] + 8034cea: 0411 lsls r1, r2, #16 + 8034cec: 687a ldr r2, [r7, #4] + 8034cee: 6952 ldr r2, [r2, #20] + 8034cf0: 4311 orrs r1, r2 + 8034cf2: 687a ldr r2, [r7, #4] + 8034cf4: 6992 ldr r2, [r2, #24] + 8034cf6: 4311 orrs r1, r2 + 8034cf8: 687a ldr r2, [r7, #4] + 8034cfa: 6812 ldr r2, [r2, #0] + 8034cfc: 430b orrs r3, r1 + 8034cfe: 6053 str r3, [r2, #4] ((hqspi->Init.FlashSize << QUADSPI_DCR_FSIZE_Pos) | hqspi->Init.ChipSelectHighTime | hqspi->Init.ClockMode)); /* Enable the QSPI peripheral */ __HAL_QSPI_ENABLE(hqspi); - 8034cc0: 687b ldr r3, [r7, #4] - 8034cc2: 681b ldr r3, [r3, #0] - 8034cc4: 681a ldr r2, [r3, #0] - 8034cc6: 687b ldr r3, [r7, #4] - 8034cc8: 681b ldr r3, [r3, #0] - 8034cca: f042 0201 orr.w r2, r2, #1 - 8034cce: 601a str r2, [r3, #0] + 8034d00: 687b ldr r3, [r7, #4] + 8034d02: 681b ldr r3, [r3, #0] + 8034d04: 681a ldr r2, [r3, #0] + 8034d06: 687b ldr r3, [r7, #4] + 8034d08: 681b ldr r3, [r3, #0] + 8034d0a: f042 0201 orr.w r2, r2, #1 + 8034d0e: 601a str r2, [r3, #0] /* Set QSPI error code to none */ hqspi->ErrorCode = HAL_QSPI_ERROR_NONE; - 8034cd0: 687b ldr r3, [r7, #4] - 8034cd2: 2200 movs r2, #0 - 8034cd4: 645a str r2, [r3, #68] ; 0x44 + 8034d10: 687b ldr r3, [r7, #4] + 8034d12: 2200 movs r2, #0 + 8034d14: 645a str r2, [r3, #68] ; 0x44 /* Initialize the QSPI state */ hqspi->State = HAL_QSPI_STATE_READY; - 8034cd6: 687b ldr r3, [r7, #4] - 8034cd8: 2201 movs r2, #1 - 8034cda: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034d16: 687b ldr r3, [r7, #4] + 8034d18: 2201 movs r2, #1 + 8034d1a: f883 2041 strb.w r2, [r3, #65] ; 0x41 } /* Return function status */ return status; - 8034cde: 7afb ldrb r3, [r7, #11] + 8034d1e: 7afb ldrb r3, [r7, #11] } - 8034ce0: 4618 mov r0, r3 - 8034ce2: 3710 adds r7, #16 - 8034ce4: 46bd mov sp, r7 - 8034ce6: bd80 pop {r7, pc} - 8034ce8: 00ffff2f .word 0x00ffff2f - 8034cec: ffe0f8fe .word 0xffe0f8fe + 8034d20: 4618 mov r0, r3 + 8034d22: 3710 adds r7, #16 + 8034d24: 46bd mov sp, r7 + 8034d26: bd80 pop {r7, pc} + 8034d28: 00ffff2f .word 0x00ffff2f + 8034d2c: ffe0f8fe .word 0xffe0f8fe -08034cf0 : +08034d30 : * @param Timeout Timeout duration * @note This function is used only in Indirect Read or Write Modes * @retval HAL status */ HAL_StatusTypeDef HAL_QSPI_Command(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout) { - 8034cf0: b580 push {r7, lr} - 8034cf2: b088 sub sp, #32 - 8034cf4: af02 add r7, sp, #8 - 8034cf6: 60f8 str r0, [r7, #12] - 8034cf8: 60b9 str r1, [r7, #8] - 8034cfa: 607a str r2, [r7, #4] + 8034d30: b580 push {r7, lr} + 8034d32: b088 sub sp, #32 + 8034d34: af02 add r7, sp, #8 + 8034d36: 60f8 str r0, [r7, #12] + 8034d38: 60b9 str r1, [r7, #8] + 8034d3a: 607a str r2, [r7, #4] HAL_StatusTypeDef status; uint32_t tickstart = HAL_GetTick(); - 8034cfc: f7f8 f94a bl 802cf94 - 8034d00: 6138 str r0, [r7, #16] + 8034d3c: f7f8 f94a bl 802cfd4 + 8034d40: 6138 str r0, [r7, #16] assert_param(IS_QSPI_DDR_MODE(cmd->DdrMode)); assert_param(IS_QSPI_DDR_HHC(cmd->DdrHoldHalfCycle)); assert_param(IS_QSPI_SIOO_MODE(cmd->SIOOMode)); /* Process locked */ __HAL_LOCK(hqspi); - 8034d02: 68fb ldr r3, [r7, #12] - 8034d04: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8034d08: b2db uxtb r3, r3 - 8034d0a: 2b01 cmp r3, #1 - 8034d0c: d101 bne.n 8034d12 - 8034d0e: 2302 movs r3, #2 - 8034d10: e048 b.n 8034da4 - 8034d12: 68fb ldr r3, [r7, #12] - 8034d14: 2201 movs r2, #1 - 8034d16: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034d42: 68fb ldr r3, [r7, #12] + 8034d44: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8034d48: b2db uxtb r3, r3 + 8034d4a: 2b01 cmp r3, #1 + 8034d4c: d101 bne.n 8034d52 + 8034d4e: 2302 movs r3, #2 + 8034d50: e048 b.n 8034de4 + 8034d52: 68fb ldr r3, [r7, #12] + 8034d54: 2201 movs r2, #1 + 8034d56: f883 2040 strb.w r2, [r3, #64] ; 0x40 if(hqspi->State == HAL_QSPI_STATE_READY) - 8034d1a: 68fb ldr r3, [r7, #12] - 8034d1c: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034d20: b2db uxtb r3, r3 - 8034d22: 2b01 cmp r3, #1 - 8034d24: d137 bne.n 8034d96 + 8034d5a: 68fb ldr r3, [r7, #12] + 8034d5c: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034d60: b2db uxtb r3, r3 + 8034d62: 2b01 cmp r3, #1 + 8034d64: d137 bne.n 8034dd6 { hqspi->ErrorCode = HAL_QSPI_ERROR_NONE; - 8034d26: 68fb ldr r3, [r7, #12] - 8034d28: 2200 movs r2, #0 - 8034d2a: 645a str r2, [r3, #68] ; 0x44 + 8034d66: 68fb ldr r3, [r7, #12] + 8034d68: 2200 movs r2, #0 + 8034d6a: 645a str r2, [r3, #68] ; 0x44 /* Update QSPI state */ hqspi->State = HAL_QSPI_STATE_BUSY; - 8034d2c: 68fb ldr r3, [r7, #12] - 8034d2e: 2202 movs r2, #2 - 8034d30: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034d6c: 68fb ldr r3, [r7, #12] + 8034d6e: 2202 movs r2, #2 + 8034d70: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Wait till BUSY flag reset */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, Timeout); - 8034d34: 687b ldr r3, [r7, #4] - 8034d36: 9300 str r3, [sp, #0] - 8034d38: 693b ldr r3, [r7, #16] - 8034d3a: 2200 movs r2, #0 - 8034d3c: 2120 movs r1, #32 - 8034d3e: 68f8 ldr r0, [r7, #12] - 8034d40: f000 f94b bl 8034fda - 8034d44: 4603 mov r3, r0 - 8034d46: 75fb strb r3, [r7, #23] + 8034d74: 687b ldr r3, [r7, #4] + 8034d76: 9300 str r3, [sp, #0] + 8034d78: 693b ldr r3, [r7, #16] + 8034d7a: 2200 movs r2, #0 + 8034d7c: 2120 movs r1, #32 + 8034d7e: 68f8 ldr r0, [r7, #12] + 8034d80: f000 f94b bl 803501a + 8034d84: 4603 mov r3, r0 + 8034d86: 75fb strb r3, [r7, #23] if (status == HAL_OK) - 8034d48: 7dfb ldrb r3, [r7, #23] - 8034d4a: 2b00 cmp r3, #0 - 8034d4c: d125 bne.n 8034d9a + 8034d88: 7dfb ldrb r3, [r7, #23] + 8034d8a: 2b00 cmp r3, #0 + 8034d8c: d125 bne.n 8034dda { /* Call the configuration function */ QSPI_Config(hqspi, cmd, QSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); - 8034d4e: 2200 movs r2, #0 - 8034d50: 68b9 ldr r1, [r7, #8] - 8034d52: 68f8 ldr r0, [r7, #12] - 8034d54: f000 f978 bl 8035048 + 8034d8e: 2200 movs r2, #0 + 8034d90: 68b9 ldr r1, [r7, #8] + 8034d92: 68f8 ldr r0, [r7, #12] + 8034d94: f000 f978 bl 8035088 if (cmd->DataMode == QSPI_DATA_NONE) - 8034d58: 68bb ldr r3, [r7, #8] - 8034d5a: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034d5c: 2b00 cmp r3, #0 - 8034d5e: d115 bne.n 8034d8c + 8034d98: 68bb ldr r3, [r7, #8] + 8034d9a: 6a5b ldr r3, [r3, #36] ; 0x24 + 8034d9c: 2b00 cmp r3, #0 + 8034d9e: d115 bne.n 8034dcc { /* When there is no data phase, the transfer start as soon as the configuration is done so wait until TC flag is set to go back in idle state */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_TC, SET, tickstart, Timeout); - 8034d60: 687b ldr r3, [r7, #4] - 8034d62: 9300 str r3, [sp, #0] - 8034d64: 693b ldr r3, [r7, #16] - 8034d66: 2201 movs r2, #1 - 8034d68: 2102 movs r1, #2 - 8034d6a: 68f8 ldr r0, [r7, #12] - 8034d6c: f000 f935 bl 8034fda - 8034d70: 4603 mov r3, r0 - 8034d72: 75fb strb r3, [r7, #23] + 8034da0: 687b ldr r3, [r7, #4] + 8034da2: 9300 str r3, [sp, #0] + 8034da4: 693b ldr r3, [r7, #16] + 8034da6: 2201 movs r2, #1 + 8034da8: 2102 movs r1, #2 + 8034daa: 68f8 ldr r0, [r7, #12] + 8034dac: f000 f935 bl 803501a + 8034db0: 4603 mov r3, r0 + 8034db2: 75fb strb r3, [r7, #23] if (status == HAL_OK) - 8034d74: 7dfb ldrb r3, [r7, #23] - 8034d76: 2b00 cmp r3, #0 - 8034d78: d10f bne.n 8034d9a + 8034db4: 7dfb ldrb r3, [r7, #23] + 8034db6: 2b00 cmp r3, #0 + 8034db8: d10f bne.n 8034dda { __HAL_QSPI_CLEAR_FLAG(hqspi, QSPI_FLAG_TC); - 8034d7a: 68fb ldr r3, [r7, #12] - 8034d7c: 681b ldr r3, [r3, #0] - 8034d7e: 2202 movs r2, #2 - 8034d80: 60da str r2, [r3, #12] + 8034dba: 68fb ldr r3, [r7, #12] + 8034dbc: 681b ldr r3, [r3, #0] + 8034dbe: 2202 movs r2, #2 + 8034dc0: 60da str r2, [r3, #12] /* Update QSPI state */ hqspi->State = HAL_QSPI_STATE_READY; - 8034d82: 68fb ldr r3, [r7, #12] - 8034d84: 2201 movs r2, #1 - 8034d86: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8034d8a: e006 b.n 8034d9a + 8034dc2: 68fb ldr r3, [r7, #12] + 8034dc4: 2201 movs r2, #1 + 8034dc6: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034dca: e006 b.n 8034dda } } else { /* Update QSPI state */ hqspi->State = HAL_QSPI_STATE_READY; - 8034d8c: 68fb ldr r3, [r7, #12] - 8034d8e: 2201 movs r2, #1 - 8034d90: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8034d94: e001 b.n 8034d9a + 8034dcc: 68fb ldr r3, [r7, #12] + 8034dce: 2201 movs r2, #1 + 8034dd0: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034dd4: e001 b.n 8034dda } } } else { status = HAL_BUSY; - 8034d96: 2302 movs r3, #2 - 8034d98: 75fb strb r3, [r7, #23] + 8034dd6: 2302 movs r3, #2 + 8034dd8: 75fb strb r3, [r7, #23] } /* Process unlocked */ __HAL_UNLOCK(hqspi); - 8034d9a: 68fb ldr r3, [r7, #12] - 8034d9c: 2200 movs r2, #0 - 8034d9e: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034dda: 68fb ldr r3, [r7, #12] + 8034ddc: 2200 movs r2, #0 + 8034dde: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Return function status */ return status; - 8034da2: 7dfb ldrb r3, [r7, #23] + 8034de2: 7dfb ldrb r3, [r7, #23] } - 8034da4: 4618 mov r0, r3 - 8034da6: 3718 adds r7, #24 - 8034da8: 46bd mov sp, r7 - 8034daa: bd80 pop {r7, pc} + 8034de4: 4618 mov r0, r3 + 8034de6: 3718 adds r7, #24 + 8034de8: 46bd mov sp, r7 + 8034dea: bd80 pop {r7, pc} -08034dac : +08034dec : * @param Timeout Timeout duration * @note This function is used only in Indirect Write Mode * @retval HAL status */ HAL_StatusTypeDef HAL_QSPI_Transmit(QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout) { - 8034dac: b580 push {r7, lr} - 8034dae: b08a sub sp, #40 ; 0x28 - 8034db0: af02 add r7, sp, #8 - 8034db2: 60f8 str r0, [r7, #12] - 8034db4: 60b9 str r1, [r7, #8] - 8034db6: 607a str r2, [r7, #4] + 8034dec: b580 push {r7, lr} + 8034dee: b08a sub sp, #40 ; 0x28 + 8034df0: af02 add r7, sp, #8 + 8034df2: 60f8 str r0, [r7, #12] + 8034df4: 60b9 str r1, [r7, #8] + 8034df6: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8034db8: 2300 movs r3, #0 - 8034dba: 77fb strb r3, [r7, #31] + 8034df8: 2300 movs r3, #0 + 8034dfa: 77fb strb r3, [r7, #31] uint32_t tickstart = HAL_GetTick(); - 8034dbc: f7f8 f8ea bl 802cf94 - 8034dc0: 61b8 str r0, [r7, #24] + 8034dfc: f7f8 f8ea bl 802cfd4 + 8034e00: 61b8 str r0, [r7, #24] __IO uint32_t *data_reg = &hqspi->Instance->DR; - 8034dc2: 68fb ldr r3, [r7, #12] - 8034dc4: 681b ldr r3, [r3, #0] - 8034dc6: 3320 adds r3, #32 - 8034dc8: 617b str r3, [r7, #20] + 8034e02: 68fb ldr r3, [r7, #12] + 8034e04: 681b ldr r3, [r3, #0] + 8034e06: 3320 adds r3, #32 + 8034e08: 617b str r3, [r7, #20] /* Process locked */ __HAL_LOCK(hqspi); - 8034dca: 68fb ldr r3, [r7, #12] - 8034dcc: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8034dd0: b2db uxtb r3, r3 - 8034dd2: 2b01 cmp r3, #1 - 8034dd4: d101 bne.n 8034dda - 8034dd6: 2302 movs r3, #2 - 8034dd8: e076 b.n 8034ec8 - 8034dda: 68fb ldr r3, [r7, #12] - 8034ddc: 2201 movs r2, #1 - 8034dde: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034e0a: 68fb ldr r3, [r7, #12] + 8034e0c: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8034e10: b2db uxtb r3, r3 + 8034e12: 2b01 cmp r3, #1 + 8034e14: d101 bne.n 8034e1a + 8034e16: 2302 movs r3, #2 + 8034e18: e076 b.n 8034f08 + 8034e1a: 68fb ldr r3, [r7, #12] + 8034e1c: 2201 movs r2, #1 + 8034e1e: f883 2040 strb.w r2, [r3, #64] ; 0x40 if(hqspi->State == HAL_QSPI_STATE_READY) - 8034de2: 68fb ldr r3, [r7, #12] - 8034de4: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034de8: b2db uxtb r3, r3 - 8034dea: 2b01 cmp r3, #1 - 8034dec: d165 bne.n 8034eba + 8034e22: 68fb ldr r3, [r7, #12] + 8034e24: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034e28: b2db uxtb r3, r3 + 8034e2a: 2b01 cmp r3, #1 + 8034e2c: d165 bne.n 8034efa { hqspi->ErrorCode = HAL_QSPI_ERROR_NONE; - 8034dee: 68fb ldr r3, [r7, #12] - 8034df0: 2200 movs r2, #0 - 8034df2: 645a str r2, [r3, #68] ; 0x44 + 8034e2e: 68fb ldr r3, [r7, #12] + 8034e30: 2200 movs r2, #0 + 8034e32: 645a str r2, [r3, #68] ; 0x44 if(pData != NULL ) - 8034df4: 68bb ldr r3, [r7, #8] - 8034df6: 2b00 cmp r3, #0 - 8034df8: d056 beq.n 8034ea8 + 8034e34: 68bb ldr r3, [r7, #8] + 8034e36: 2b00 cmp r3, #0 + 8034e38: d056 beq.n 8034ee8 { /* Update state */ hqspi->State = HAL_QSPI_STATE_BUSY_INDIRECT_TX; - 8034dfa: 68fb ldr r3, [r7, #12] - 8034dfc: 2212 movs r2, #18 - 8034dfe: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034e3a: 68fb ldr r3, [r7, #12] + 8034e3c: 2212 movs r2, #18 + 8034e3e: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Configure counters and size of the handle */ hqspi->TxXferCount = READ_REG(hqspi->Instance->DLR) + 1U; - 8034e02: 68fb ldr r3, [r7, #12] - 8034e04: 681b ldr r3, [r3, #0] - 8034e06: 691b ldr r3, [r3, #16] - 8034e08: 1c5a adds r2, r3, #1 - 8034e0a: 68fb ldr r3, [r7, #12] - 8034e0c: 62da str r2, [r3, #44] ; 0x2c + 8034e42: 68fb ldr r3, [r7, #12] + 8034e44: 681b ldr r3, [r3, #0] + 8034e46: 691b ldr r3, [r3, #16] + 8034e48: 1c5a adds r2, r3, #1 + 8034e4a: 68fb ldr r3, [r7, #12] + 8034e4c: 62da str r2, [r3, #44] ; 0x2c hqspi->TxXferSize = READ_REG(hqspi->Instance->DLR) + 1U; - 8034e0e: 68fb ldr r3, [r7, #12] - 8034e10: 681b ldr r3, [r3, #0] - 8034e12: 691b ldr r3, [r3, #16] - 8034e14: 1c5a adds r2, r3, #1 - 8034e16: 68fb ldr r3, [r7, #12] - 8034e18: 629a str r2, [r3, #40] ; 0x28 + 8034e4e: 68fb ldr r3, [r7, #12] + 8034e50: 681b ldr r3, [r3, #0] + 8034e52: 691b ldr r3, [r3, #16] + 8034e54: 1c5a adds r2, r3, #1 + 8034e56: 68fb ldr r3, [r7, #12] + 8034e58: 629a str r2, [r3, #40] ; 0x28 hqspi->pTxBuffPtr = pData; - 8034e1a: 68fb ldr r3, [r7, #12] - 8034e1c: 68ba ldr r2, [r7, #8] - 8034e1e: 625a str r2, [r3, #36] ; 0x24 + 8034e5a: 68fb ldr r3, [r7, #12] + 8034e5c: 68ba ldr r2, [r7, #8] + 8034e5e: 625a str r2, [r3, #36] ; 0x24 /* Configure QSPI: CCR register with functional as indirect write */ MODIFY_REG(hqspi->Instance->CCR, QUADSPI_CCR_FMODE, QSPI_FUNCTIONAL_MODE_INDIRECT_WRITE); - 8034e20: 68fb ldr r3, [r7, #12] - 8034e22: 681b ldr r3, [r3, #0] - 8034e24: 695a ldr r2, [r3, #20] - 8034e26: 68fb ldr r3, [r7, #12] - 8034e28: 681b ldr r3, [r3, #0] - 8034e2a: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000 - 8034e2e: 615a str r2, [r3, #20] + 8034e60: 68fb ldr r3, [r7, #12] + 8034e62: 681b ldr r3, [r3, #0] + 8034e64: 695a ldr r2, [r3, #20] + 8034e66: 68fb ldr r3, [r7, #12] + 8034e68: 681b ldr r3, [r3, #0] + 8034e6a: f022 6240 bic.w r2, r2, #201326592 ; 0xc000000 + 8034e6e: 615a str r2, [r3, #20] while(hqspi->TxXferCount > 0U) - 8034e30: e01b b.n 8034e6a + 8034e70: e01b b.n 8034eaa { /* Wait until FT flag is set to send data */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_FT, SET, tickstart, Timeout); - 8034e32: 687b ldr r3, [r7, #4] - 8034e34: 9300 str r3, [sp, #0] - 8034e36: 69bb ldr r3, [r7, #24] - 8034e38: 2201 movs r2, #1 - 8034e3a: 2104 movs r1, #4 - 8034e3c: 68f8 ldr r0, [r7, #12] - 8034e3e: f000 f8cc bl 8034fda - 8034e42: 4603 mov r3, r0 - 8034e44: 77fb strb r3, [r7, #31] + 8034e72: 687b ldr r3, [r7, #4] + 8034e74: 9300 str r3, [sp, #0] + 8034e76: 69bb ldr r3, [r7, #24] + 8034e78: 2201 movs r2, #1 + 8034e7a: 2104 movs r1, #4 + 8034e7c: 68f8 ldr r0, [r7, #12] + 8034e7e: f000 f8cc bl 803501a + 8034e82: 4603 mov r3, r0 + 8034e84: 77fb strb r3, [r7, #31] if (status != HAL_OK) - 8034e46: 7ffb ldrb r3, [r7, #31] - 8034e48: 2b00 cmp r3, #0 - 8034e4a: d113 bne.n 8034e74 + 8034e86: 7ffb ldrb r3, [r7, #31] + 8034e88: 2b00 cmp r3, #0 + 8034e8a: d113 bne.n 8034eb4 { break; } *((__IO uint8_t *)data_reg) = *hqspi->pTxBuffPtr; - 8034e4c: 68fb ldr r3, [r7, #12] - 8034e4e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034e50: 781a ldrb r2, [r3, #0] - 8034e52: 697b ldr r3, [r7, #20] - 8034e54: 701a strb r2, [r3, #0] + 8034e8c: 68fb ldr r3, [r7, #12] + 8034e8e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8034e90: 781a ldrb r2, [r3, #0] + 8034e92: 697b ldr r3, [r7, #20] + 8034e94: 701a strb r2, [r3, #0] hqspi->pTxBuffPtr++; - 8034e56: 68fb ldr r3, [r7, #12] - 8034e58: 6a5b ldr r3, [r3, #36] ; 0x24 - 8034e5a: 1c5a adds r2, r3, #1 - 8034e5c: 68fb ldr r3, [r7, #12] - 8034e5e: 625a str r2, [r3, #36] ; 0x24 + 8034e96: 68fb ldr r3, [r7, #12] + 8034e98: 6a5b ldr r3, [r3, #36] ; 0x24 + 8034e9a: 1c5a adds r2, r3, #1 + 8034e9c: 68fb ldr r3, [r7, #12] + 8034e9e: 625a str r2, [r3, #36] ; 0x24 hqspi->TxXferCount--; - 8034e60: 68fb ldr r3, [r7, #12] - 8034e62: 6adb ldr r3, [r3, #44] ; 0x2c - 8034e64: 1e5a subs r2, r3, #1 - 8034e66: 68fb ldr r3, [r7, #12] - 8034e68: 62da str r2, [r3, #44] ; 0x2c + 8034ea0: 68fb ldr r3, [r7, #12] + 8034ea2: 6adb ldr r3, [r3, #44] ; 0x2c + 8034ea4: 1e5a subs r2, r3, #1 + 8034ea6: 68fb ldr r3, [r7, #12] + 8034ea8: 62da str r2, [r3, #44] ; 0x2c while(hqspi->TxXferCount > 0U) - 8034e6a: 68fb ldr r3, [r7, #12] - 8034e6c: 6adb ldr r3, [r3, #44] ; 0x2c - 8034e6e: 2b00 cmp r3, #0 - 8034e70: d1df bne.n 8034e32 - 8034e72: e000 b.n 8034e76 + 8034eaa: 68fb ldr r3, [r7, #12] + 8034eac: 6adb ldr r3, [r3, #44] ; 0x2c + 8034eae: 2b00 cmp r3, #0 + 8034eb0: d1df bne.n 8034e72 + 8034eb2: e000 b.n 8034eb6 break; - 8034e74: bf00 nop + 8034eb4: bf00 nop } if (status == HAL_OK) - 8034e76: 7ffb ldrb r3, [r7, #31] - 8034e78: 2b00 cmp r3, #0 - 8034e7a: d110 bne.n 8034e9e + 8034eb6: 7ffb ldrb r3, [r7, #31] + 8034eb8: 2b00 cmp r3, #0 + 8034eba: d110 bne.n 8034ede { /* Wait until TC flag is set to go back in idle state */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_TC, SET, tickstart, Timeout); - 8034e7c: 687b ldr r3, [r7, #4] - 8034e7e: 9300 str r3, [sp, #0] - 8034e80: 69bb ldr r3, [r7, #24] - 8034e82: 2201 movs r2, #1 - 8034e84: 2102 movs r1, #2 - 8034e86: 68f8 ldr r0, [r7, #12] - 8034e88: f000 f8a7 bl 8034fda - 8034e8c: 4603 mov r3, r0 - 8034e8e: 77fb strb r3, [r7, #31] + 8034ebc: 687b ldr r3, [r7, #4] + 8034ebe: 9300 str r3, [sp, #0] + 8034ec0: 69bb ldr r3, [r7, #24] + 8034ec2: 2201 movs r2, #1 + 8034ec4: 2102 movs r1, #2 + 8034ec6: 68f8 ldr r0, [r7, #12] + 8034ec8: f000 f8a7 bl 803501a + 8034ecc: 4603 mov r3, r0 + 8034ece: 77fb strb r3, [r7, #31] if (status == HAL_OK) - 8034e90: 7ffb ldrb r3, [r7, #31] - 8034e92: 2b00 cmp r3, #0 - 8034e94: d103 bne.n 8034e9e + 8034ed0: 7ffb ldrb r3, [r7, #31] + 8034ed2: 2b00 cmp r3, #0 + 8034ed4: d103 bne.n 8034ede { /* Clear Transfer Complete bit */ __HAL_QSPI_CLEAR_FLAG(hqspi, QSPI_FLAG_TC); - 8034e96: 68fb ldr r3, [r7, #12] - 8034e98: 681b ldr r3, [r3, #0] - 8034e9a: 2202 movs r2, #2 - 8034e9c: 60da str r2, [r3, #12] + 8034ed6: 68fb ldr r3, [r7, #12] + 8034ed8: 681b ldr r3, [r3, #0] + 8034eda: 2202 movs r2, #2 + 8034edc: 60da str r2, [r3, #12] } } /* Update QSPI state */ hqspi->State = HAL_QSPI_STATE_READY; - 8034e9e: 68fb ldr r3, [r7, #12] - 8034ea0: 2201 movs r2, #1 - 8034ea2: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8034ea6: e00a b.n 8034ebe + 8034ede: 68fb ldr r3, [r7, #12] + 8034ee0: 2201 movs r2, #1 + 8034ee2: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034ee6: e00a b.n 8034efe } else { hqspi->ErrorCode |= HAL_QSPI_ERROR_INVALID_PARAM; - 8034ea8: 68fb ldr r3, [r7, #12] - 8034eaa: 6c5b ldr r3, [r3, #68] ; 0x44 - 8034eac: f043 0208 orr.w r2, r3, #8 - 8034eb0: 68fb ldr r3, [r7, #12] - 8034eb2: 645a str r2, [r3, #68] ; 0x44 + 8034ee8: 68fb ldr r3, [r7, #12] + 8034eea: 6c5b ldr r3, [r3, #68] ; 0x44 + 8034eec: f043 0208 orr.w r2, r3, #8 + 8034ef0: 68fb ldr r3, [r7, #12] + 8034ef2: 645a str r2, [r3, #68] ; 0x44 status = HAL_ERROR; - 8034eb4: 2301 movs r3, #1 - 8034eb6: 77fb strb r3, [r7, #31] - 8034eb8: e001 b.n 8034ebe + 8034ef4: 2301 movs r3, #1 + 8034ef6: 77fb strb r3, [r7, #31] + 8034ef8: e001 b.n 8034efe } } else { status = HAL_BUSY; - 8034eba: 2302 movs r3, #2 - 8034ebc: 77fb strb r3, [r7, #31] + 8034efa: 2302 movs r3, #2 + 8034efc: 77fb strb r3, [r7, #31] } /* Process unlocked */ __HAL_UNLOCK(hqspi); - 8034ebe: 68fb ldr r3, [r7, #12] - 8034ec0: 2200 movs r2, #0 - 8034ec2: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034efe: 68fb ldr r3, [r7, #12] + 8034f00: 2200 movs r2, #0 + 8034f02: f883 2040 strb.w r2, [r3, #64] ; 0x40 return status; - 8034ec6: 7ffb ldrb r3, [r7, #31] + 8034f06: 7ffb ldrb r3, [r7, #31] } - 8034ec8: 4618 mov r0, r3 - 8034eca: 3720 adds r7, #32 - 8034ecc: 46bd mov sp, r7 - 8034ece: bd80 pop {r7, pc} + 8034f08: 4618 mov r0, r3 + 8034f0a: 3720 adds r7, #32 + 8034f0c: 46bd mov sp, r7 + 8034f0e: bd80 pop {r7, pc} -08034ed0 : +08034f10 : * @param Timeout Timeout duration * @note This function is used only in Automatic Polling Mode * @retval HAL status */ HAL_StatusTypeDef HAL_QSPI_AutoPolling(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout) { - 8034ed0: b580 push {r7, lr} - 8034ed2: b088 sub sp, #32 - 8034ed4: af02 add r7, sp, #8 - 8034ed6: 60f8 str r0, [r7, #12] - 8034ed8: 60b9 str r1, [r7, #8] - 8034eda: 607a str r2, [r7, #4] - 8034edc: 603b str r3, [r7, #0] + 8034f10: b580 push {r7, lr} + 8034f12: b088 sub sp, #32 + 8034f14: af02 add r7, sp, #8 + 8034f16: 60f8 str r0, [r7, #12] + 8034f18: 60b9 str r1, [r7, #8] + 8034f1a: 607a str r2, [r7, #4] + 8034f1c: 603b str r3, [r7, #0] HAL_StatusTypeDef status; uint32_t tickstart = HAL_GetTick(); - 8034ede: f7f8 f859 bl 802cf94 - 8034ee2: 6138 str r0, [r7, #16] + 8034f1e: f7f8 f859 bl 802cfd4 + 8034f22: 6138 str r0, [r7, #16] assert_param(IS_QSPI_INTERVAL(cfg->Interval)); assert_param(IS_QSPI_STATUS_BYTES_SIZE(cfg->StatusBytesSize)); assert_param(IS_QSPI_MATCH_MODE(cfg->MatchMode)); /* Process locked */ __HAL_LOCK(hqspi); - 8034ee4: 68fb ldr r3, [r7, #12] - 8034ee6: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 8034eea: b2db uxtb r3, r3 - 8034eec: 2b01 cmp r3, #1 - 8034eee: d101 bne.n 8034ef4 - 8034ef0: 2302 movs r3, #2 - 8034ef2: e060 b.n 8034fb6 - 8034ef4: 68fb ldr r3, [r7, #12] - 8034ef6: 2201 movs r2, #1 - 8034ef8: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034f24: 68fb ldr r3, [r7, #12] + 8034f26: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8034f2a: b2db uxtb r3, r3 + 8034f2c: 2b01 cmp r3, #1 + 8034f2e: d101 bne.n 8034f34 + 8034f30: 2302 movs r3, #2 + 8034f32: e060 b.n 8034ff6 + 8034f34: 68fb ldr r3, [r7, #12] + 8034f36: 2201 movs r2, #1 + 8034f38: f883 2040 strb.w r2, [r3, #64] ; 0x40 if(hqspi->State == HAL_QSPI_STATE_READY) - 8034efc: 68fb ldr r3, [r7, #12] - 8034efe: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8034f02: b2db uxtb r3, r3 - 8034f04: 2b01 cmp r3, #1 - 8034f06: d14f bne.n 8034fa8 + 8034f3c: 68fb ldr r3, [r7, #12] + 8034f3e: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8034f42: b2db uxtb r3, r3 + 8034f44: 2b01 cmp r3, #1 + 8034f46: d14f bne.n 8034fe8 { hqspi->ErrorCode = HAL_QSPI_ERROR_NONE; - 8034f08: 68fb ldr r3, [r7, #12] - 8034f0a: 2200 movs r2, #0 - 8034f0c: 645a str r2, [r3, #68] ; 0x44 + 8034f48: 68fb ldr r3, [r7, #12] + 8034f4a: 2200 movs r2, #0 + 8034f4c: 645a str r2, [r3, #68] ; 0x44 /* Update state */ hqspi->State = HAL_QSPI_STATE_BUSY_AUTO_POLLING; - 8034f0e: 68fb ldr r3, [r7, #12] - 8034f10: 2242 movs r2, #66 ; 0x42 - 8034f12: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034f4e: 68fb ldr r3, [r7, #12] + 8034f50: 2242 movs r2, #66 ; 0x42 + 8034f52: f883 2041 strb.w r2, [r3, #65] ; 0x41 /* Wait till BUSY flag reset */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, Timeout); - 8034f16: 683b ldr r3, [r7, #0] - 8034f18: 9300 str r3, [sp, #0] - 8034f1a: 693b ldr r3, [r7, #16] - 8034f1c: 2200 movs r2, #0 - 8034f1e: 2120 movs r1, #32 - 8034f20: 68f8 ldr r0, [r7, #12] - 8034f22: f000 f85a bl 8034fda - 8034f26: 4603 mov r3, r0 - 8034f28: 75fb strb r3, [r7, #23] + 8034f56: 683b ldr r3, [r7, #0] + 8034f58: 9300 str r3, [sp, #0] + 8034f5a: 693b ldr r3, [r7, #16] + 8034f5c: 2200 movs r2, #0 + 8034f5e: 2120 movs r1, #32 + 8034f60: 68f8 ldr r0, [r7, #12] + 8034f62: f000 f85a bl 803501a + 8034f66: 4603 mov r3, r0 + 8034f68: 75fb strb r3, [r7, #23] if (status == HAL_OK) - 8034f2a: 7dfb ldrb r3, [r7, #23] - 8034f2c: 2b00 cmp r3, #0 - 8034f2e: d13d bne.n 8034fac + 8034f6a: 7dfb ldrb r3, [r7, #23] + 8034f6c: 2b00 cmp r3, #0 + 8034f6e: d13d bne.n 8034fec { /* Configure QSPI: PSMAR register with the status match value */ WRITE_REG(hqspi->Instance->PSMAR, cfg->Match); - 8034f30: 68fb ldr r3, [r7, #12] - 8034f32: 681b ldr r3, [r3, #0] - 8034f34: 687a ldr r2, [r7, #4] - 8034f36: 6812 ldr r2, [r2, #0] - 8034f38: 629a str r2, [r3, #40] ; 0x28 + 8034f70: 68fb ldr r3, [r7, #12] + 8034f72: 681b ldr r3, [r3, #0] + 8034f74: 687a ldr r2, [r7, #4] + 8034f76: 6812 ldr r2, [r2, #0] + 8034f78: 629a str r2, [r3, #40] ; 0x28 /* Configure QSPI: PSMKR register with the status mask value */ WRITE_REG(hqspi->Instance->PSMKR, cfg->Mask); - 8034f3a: 68fb ldr r3, [r7, #12] - 8034f3c: 681b ldr r3, [r3, #0] - 8034f3e: 687a ldr r2, [r7, #4] - 8034f40: 6852 ldr r2, [r2, #4] - 8034f42: 625a str r2, [r3, #36] ; 0x24 + 8034f7a: 68fb ldr r3, [r7, #12] + 8034f7c: 681b ldr r3, [r3, #0] + 8034f7e: 687a ldr r2, [r7, #4] + 8034f80: 6852 ldr r2, [r2, #4] + 8034f82: 625a str r2, [r3, #36] ; 0x24 /* Configure QSPI: PIR register with the interval value */ WRITE_REG(hqspi->Instance->PIR, cfg->Interval); - 8034f44: 68fb ldr r3, [r7, #12] - 8034f46: 681b ldr r3, [r3, #0] - 8034f48: 687a ldr r2, [r7, #4] - 8034f4a: 6892 ldr r2, [r2, #8] - 8034f4c: 62da str r2, [r3, #44] ; 0x2c + 8034f84: 68fb ldr r3, [r7, #12] + 8034f86: 681b ldr r3, [r3, #0] + 8034f88: 687a ldr r2, [r7, #4] + 8034f8a: 6892 ldr r2, [r2, #8] + 8034f8c: 62da str r2, [r3, #44] ; 0x2c /* Configure QSPI: CR register with Match mode and Automatic stop enabled (otherwise there will be an infinite loop in blocking mode) */ MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PMM | QUADSPI_CR_APMS), - 8034f4e: 68fb ldr r3, [r7, #12] - 8034f50: 681b ldr r3, [r3, #0] - 8034f52: 681b ldr r3, [r3, #0] - 8034f54: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000 - 8034f58: 687b ldr r3, [r7, #4] - 8034f5a: 691b ldr r3, [r3, #16] - 8034f5c: 431a orrs r2, r3 - 8034f5e: 68fb ldr r3, [r7, #12] - 8034f60: 681b ldr r3, [r3, #0] - 8034f62: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 - 8034f66: 601a str r2, [r3, #0] + 8034f8e: 68fb ldr r3, [r7, #12] + 8034f90: 681b ldr r3, [r3, #0] + 8034f92: 681b ldr r3, [r3, #0] + 8034f94: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000 + 8034f98: 687b ldr r3, [r7, #4] + 8034f9a: 691b ldr r3, [r3, #16] + 8034f9c: 431a orrs r2, r3 + 8034f9e: 68fb ldr r3, [r7, #12] + 8034fa0: 681b ldr r3, [r3, #0] + 8034fa2: f442 0280 orr.w r2, r2, #4194304 ; 0x400000 + 8034fa6: 601a str r2, [r3, #0] (cfg->MatchMode | QSPI_AUTOMATIC_STOP_ENABLE)); /* Call the configuration function */ cmd->NbData = cfg->StatusBytesSize; - 8034f68: 687b ldr r3, [r7, #4] - 8034f6a: 68da ldr r2, [r3, #12] - 8034f6c: 68bb ldr r3, [r7, #8] - 8034f6e: 629a str r2, [r3, #40] ; 0x28 + 8034fa8: 687b ldr r3, [r7, #4] + 8034faa: 68da ldr r2, [r3, #12] + 8034fac: 68bb ldr r3, [r7, #8] + 8034fae: 629a str r2, [r3, #40] ; 0x28 QSPI_Config(hqspi, cmd, QSPI_FUNCTIONAL_MODE_AUTO_POLLING); - 8034f70: f04f 6200 mov.w r2, #134217728 ; 0x8000000 - 8034f74: 68b9 ldr r1, [r7, #8] - 8034f76: 68f8 ldr r0, [r7, #12] - 8034f78: f000 f866 bl 8035048 + 8034fb0: f04f 6200 mov.w r2, #134217728 ; 0x8000000 + 8034fb4: 68b9 ldr r1, [r7, #8] + 8034fb6: 68f8 ldr r0, [r7, #12] + 8034fb8: f000 f866 bl 8035088 /* Wait until SM flag is set to go back in idle state */ status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_SM, SET, tickstart, Timeout); - 8034f7c: 683b ldr r3, [r7, #0] - 8034f7e: 9300 str r3, [sp, #0] - 8034f80: 693b ldr r3, [r7, #16] - 8034f82: 2201 movs r2, #1 - 8034f84: 2108 movs r1, #8 - 8034f86: 68f8 ldr r0, [r7, #12] - 8034f88: f000 f827 bl 8034fda - 8034f8c: 4603 mov r3, r0 - 8034f8e: 75fb strb r3, [r7, #23] + 8034fbc: 683b ldr r3, [r7, #0] + 8034fbe: 9300 str r3, [sp, #0] + 8034fc0: 693b ldr r3, [r7, #16] + 8034fc2: 2201 movs r2, #1 + 8034fc4: 2108 movs r1, #8 + 8034fc6: 68f8 ldr r0, [r7, #12] + 8034fc8: f000 f827 bl 803501a + 8034fcc: 4603 mov r3, r0 + 8034fce: 75fb strb r3, [r7, #23] if (status == HAL_OK) - 8034f90: 7dfb ldrb r3, [r7, #23] - 8034f92: 2b00 cmp r3, #0 - 8034f94: d10a bne.n 8034fac + 8034fd0: 7dfb ldrb r3, [r7, #23] + 8034fd2: 2b00 cmp r3, #0 + 8034fd4: d10a bne.n 8034fec { __HAL_QSPI_CLEAR_FLAG(hqspi, QSPI_FLAG_SM); - 8034f96: 68fb ldr r3, [r7, #12] - 8034f98: 681b ldr r3, [r3, #0] - 8034f9a: 2208 movs r2, #8 - 8034f9c: 60da str r2, [r3, #12] + 8034fd6: 68fb ldr r3, [r7, #12] + 8034fd8: 681b ldr r3, [r3, #0] + 8034fda: 2208 movs r2, #8 + 8034fdc: 60da str r2, [r3, #12] /* Update state */ hqspi->State = HAL_QSPI_STATE_READY; - 8034f9e: 68fb ldr r3, [r7, #12] - 8034fa0: 2201 movs r2, #1 - 8034fa2: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8034fa6: e001 b.n 8034fac + 8034fde: 68fb ldr r3, [r7, #12] + 8034fe0: 2201 movs r2, #1 + 8034fe2: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8034fe6: e001 b.n 8034fec } } } else { status = HAL_BUSY; - 8034fa8: 2302 movs r3, #2 - 8034faa: 75fb strb r3, [r7, #23] + 8034fe8: 2302 movs r3, #2 + 8034fea: 75fb strb r3, [r7, #23] } /* Process unlocked */ __HAL_UNLOCK(hqspi); - 8034fac: 68fb ldr r3, [r7, #12] - 8034fae: 2200 movs r2, #0 - 8034fb0: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 8034fec: 68fb ldr r3, [r7, #12] + 8034fee: 2200 movs r2, #0 + 8034ff0: f883 2040 strb.w r2, [r3, #64] ; 0x40 /* Return function status */ return status; - 8034fb4: 7dfb ldrb r3, [r7, #23] + 8034ff4: 7dfb ldrb r3, [r7, #23] } - 8034fb6: 4618 mov r0, r3 - 8034fb8: 3718 adds r7, #24 - 8034fba: 46bd mov sp, r7 - 8034fbc: bd80 pop {r7, pc} + 8034ff6: 4618 mov r0, r3 + 8034ff8: 3718 adds r7, #24 + 8034ffa: 46bd mov sp, r7 + 8034ffc: bd80 pop {r7, pc} -08034fbe : +08034ffe : * @param hqspi QSPI handle. * @param Timeout Timeout for the QSPI memory access. * @retval None */ void HAL_QSPI_SetTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Timeout) { - 8034fbe: b480 push {r7} - 8034fc0: b083 sub sp, #12 - 8034fc2: af00 add r7, sp, #0 - 8034fc4: 6078 str r0, [r7, #4] - 8034fc6: 6039 str r1, [r7, #0] + 8034ffe: b480 push {r7} + 8035000: b083 sub sp, #12 + 8035002: af00 add r7, sp, #0 + 8035004: 6078 str r0, [r7, #4] + 8035006: 6039 str r1, [r7, #0] hqspi->Timeout = Timeout; - 8034fc8: 687b ldr r3, [r7, #4] - 8034fca: 683a ldr r2, [r7, #0] - 8034fcc: 649a str r2, [r3, #72] ; 0x48 + 8035008: 687b ldr r3, [r7, #4] + 803500a: 683a ldr r2, [r7, #0] + 803500c: 649a str r2, [r3, #72] ; 0x48 } - 8034fce: bf00 nop - 8034fd0: 370c adds r7, #12 - 8034fd2: 46bd mov sp, r7 - 8034fd4: f85d 7b04 ldr.w r7, [sp], #4 - 8034fd8: 4770 bx lr + 803500e: bf00 nop + 8035010: 370c adds r7, #12 + 8035012: 46bd mov sp, r7 + 8035014: f85d 7b04 ldr.w r7, [sp], #4 + 8035018: 4770 bx lr -08034fda : +0803501a : * @param Timeout Duration of the timeout * @retval HAL status */ static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Tickstart, uint32_t Timeout) { - 8034fda: b580 push {r7, lr} - 8034fdc: b084 sub sp, #16 - 8034fde: af00 add r7, sp, #0 - 8034fe0: 60f8 str r0, [r7, #12] - 8034fe2: 60b9 str r1, [r7, #8] - 8034fe4: 603b str r3, [r7, #0] - 8034fe6: 4613 mov r3, r2 - 8034fe8: 71fb strb r3, [r7, #7] + 803501a: b580 push {r7, lr} + 803501c: b084 sub sp, #16 + 803501e: af00 add r7, sp, #0 + 8035020: 60f8 str r0, [r7, #12] + 8035022: 60b9 str r1, [r7, #8] + 8035024: 603b str r3, [r7, #0] + 8035026: 4613 mov r3, r2 + 8035028: 71fb strb r3, [r7, #7] /* Wait until flag is in expected state */ while((__HAL_QSPI_GET_FLAG(hqspi, Flag)) != State) - 8034fea: e01a b.n 8035022 + 803502a: e01a b.n 8035062 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 8034fec: 69bb ldr r3, [r7, #24] - 8034fee: f1b3 3fff cmp.w r3, #4294967295 - 8034ff2: d016 beq.n 8035022 + 803502c: 69bb ldr r3, [r7, #24] + 803502e: f1b3 3fff cmp.w r3, #4294967295 + 8035032: d016 beq.n 8035062 { if(((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 8034ff4: f7f7 ffce bl 802cf94 - 8034ff8: 4602 mov r2, r0 - 8034ffa: 683b ldr r3, [r7, #0] - 8034ffc: 1ad3 subs r3, r2, r3 - 8034ffe: 69ba ldr r2, [r7, #24] - 8035000: 429a cmp r2, r3 - 8035002: d302 bcc.n 803500a - 8035004: 69bb ldr r3, [r7, #24] - 8035006: 2b00 cmp r3, #0 - 8035008: d10b bne.n 8035022 + 8035034: f7f7 ffce bl 802cfd4 + 8035038: 4602 mov r2, r0 + 803503a: 683b ldr r3, [r7, #0] + 803503c: 1ad3 subs r3, r2, r3 + 803503e: 69ba ldr r2, [r7, #24] + 8035040: 429a cmp r2, r3 + 8035042: d302 bcc.n 803504a + 8035044: 69bb ldr r3, [r7, #24] + 8035046: 2b00 cmp r3, #0 + 8035048: d10b bne.n 8035062 { hqspi->State = HAL_QSPI_STATE_ERROR; - 803500a: 68fb ldr r3, [r7, #12] - 803500c: 2204 movs r2, #4 - 803500e: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 803504a: 68fb ldr r3, [r7, #12] + 803504c: 2204 movs r2, #4 + 803504e: f883 2041 strb.w r2, [r3, #65] ; 0x41 hqspi->ErrorCode |= HAL_QSPI_ERROR_TIMEOUT; - 8035012: 68fb ldr r3, [r7, #12] - 8035014: 6c5b ldr r3, [r3, #68] ; 0x44 - 8035016: f043 0201 orr.w r2, r3, #1 - 803501a: 68fb ldr r3, [r7, #12] - 803501c: 645a str r2, [r3, #68] ; 0x44 + 8035052: 68fb ldr r3, [r7, #12] + 8035054: 6c5b ldr r3, [r3, #68] ; 0x44 + 8035056: f043 0201 orr.w r2, r3, #1 + 803505a: 68fb ldr r3, [r7, #12] + 803505c: 645a str r2, [r3, #68] ; 0x44 return HAL_ERROR; - 803501e: 2301 movs r3, #1 - 8035020: e00e b.n 8035040 + 803505e: 2301 movs r3, #1 + 8035060: e00e b.n 8035080 while((__HAL_QSPI_GET_FLAG(hqspi, Flag)) != State) - 8035022: 68fb ldr r3, [r7, #12] - 8035024: 681b ldr r3, [r3, #0] - 8035026: 689a ldr r2, [r3, #8] - 8035028: 68bb ldr r3, [r7, #8] - 803502a: 4013 ands r3, r2 - 803502c: 2b00 cmp r3, #0 - 803502e: bf14 ite ne - 8035030: 2301 movne r3, #1 - 8035032: 2300 moveq r3, #0 - 8035034: b2db uxtb r3, r3 - 8035036: 461a mov r2, r3 - 8035038: 79fb ldrb r3, [r7, #7] - 803503a: 429a cmp r2, r3 - 803503c: d1d6 bne.n 8034fec + 8035062: 68fb ldr r3, [r7, #12] + 8035064: 681b ldr r3, [r3, #0] + 8035066: 689a ldr r2, [r3, #8] + 8035068: 68bb ldr r3, [r7, #8] + 803506a: 4013 ands r3, r2 + 803506c: 2b00 cmp r3, #0 + 803506e: bf14 ite ne + 8035070: 2301 movne r3, #1 + 8035072: 2300 moveq r3, #0 + 8035074: b2db uxtb r3, r3 + 8035076: 461a mov r2, r3 + 8035078: 79fb ldrb r3, [r7, #7] + 803507a: 429a cmp r2, r3 + 803507c: d1d6 bne.n 803502c } } } return HAL_OK; - 803503e: 2300 movs r3, #0 + 803507e: 2300 movs r3, #0 } - 8035040: 4618 mov r0, r3 - 8035042: 3710 adds r7, #16 - 8035044: 46bd mov sp, r7 - 8035046: bd80 pop {r7, pc} + 8035080: 4618 mov r0, r3 + 8035082: 3710 adds r7, #16 + 8035084: 46bd mov sp, r7 + 8035086: bd80 pop {r7, pc} -08035048 : +08035088 : * @arg QSPI_FUNCTIONAL_MODE_AUTO_POLLING: Automatic polling mode * @arg QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED: Memory-mapped mode * @retval None */ static void QSPI_Config(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode) { - 8035048: b480 push {r7} - 803504a: b085 sub sp, #20 - 803504c: af00 add r7, sp, #0 - 803504e: 60f8 str r0, [r7, #12] - 8035050: 60b9 str r1, [r7, #8] - 8035052: 607a str r2, [r7, #4] + 8035088: b480 push {r7} + 803508a: b085 sub sp, #20 + 803508c: af00 add r7, sp, #0 + 803508e: 60f8 str r0, [r7, #12] + 8035090: 60b9 str r1, [r7, #8] + 8035092: 607a str r2, [r7, #4] assert_param(IS_QSPI_FUNCTIONAL_MODE(FunctionalMode)); if ((cmd->DataMode != QSPI_DATA_NONE) && (FunctionalMode != QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED)) - 8035054: 68bb ldr r3, [r7, #8] - 8035056: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035058: 2b00 cmp r3, #0 - 803505a: d009 beq.n 8035070 - 803505c: 687b ldr r3, [r7, #4] - 803505e: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 - 8035062: d005 beq.n 8035070 + 8035094: 68bb ldr r3, [r7, #8] + 8035096: 6a5b ldr r3, [r3, #36] ; 0x24 + 8035098: 2b00 cmp r3, #0 + 803509a: d009 beq.n 80350b0 + 803509c: 687b ldr r3, [r7, #4] + 803509e: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 + 80350a2: d005 beq.n 80350b0 { /* Configure QSPI: DLR register with the number of data to read or write */ WRITE_REG(hqspi->Instance->DLR, (cmd->NbData - 1U)); - 8035064: 68bb ldr r3, [r7, #8] - 8035066: 6a9a ldr r2, [r3, #40] ; 0x28 - 8035068: 68fb ldr r3, [r7, #12] - 803506a: 681b ldr r3, [r3, #0] - 803506c: 3a01 subs r2, #1 - 803506e: 611a str r2, [r3, #16] + 80350a4: 68bb ldr r3, [r7, #8] + 80350a6: 6a9a ldr r2, [r3, #40] ; 0x28 + 80350a8: 68fb ldr r3, [r7, #12] + 80350aa: 681b ldr r3, [r3, #0] + 80350ac: 3a01 subs r2, #1 + 80350ae: 611a str r2, [r3, #16] } if (cmd->InstructionMode != QSPI_INSTRUCTION_NONE) - 8035070: 68bb ldr r3, [r7, #8] - 8035072: 699b ldr r3, [r3, #24] - 8035074: 2b00 cmp r3, #0 - 8035076: f000 80b9 beq.w 80351ec + 80350b0: 68bb ldr r3, [r7, #8] + 80350b2: 699b ldr r3, [r3, #24] + 80350b4: 2b00 cmp r3, #0 + 80350b6: f000 80b9 beq.w 803522c { if (cmd->AlternateByteMode != QSPI_ALTERNATE_BYTES_NONE) - 803507a: 68bb ldr r3, [r7, #8] - 803507c: 6a1b ldr r3, [r3, #32] - 803507e: 2b00 cmp r3, #0 - 8035080: d05f beq.n 8035142 + 80350ba: 68bb ldr r3, [r7, #8] + 80350bc: 6a1b ldr r3, [r3, #32] + 80350be: 2b00 cmp r3, #0 + 80350c0: d05f beq.n 8035182 { /* Configure QSPI: ABR register with alternate bytes value */ WRITE_REG(hqspi->Instance->ABR, cmd->AlternateBytes); - 8035082: 68fb ldr r3, [r7, #12] - 8035084: 681b ldr r3, [r3, #0] - 8035086: 68ba ldr r2, [r7, #8] - 8035088: 6892 ldr r2, [r2, #8] - 803508a: 61da str r2, [r3, #28] + 80350c2: 68fb ldr r3, [r7, #12] + 80350c4: 681b ldr r3, [r3, #0] + 80350c6: 68ba ldr r2, [r7, #8] + 80350c8: 6892 ldr r2, [r2, #8] + 80350ca: 61da str r2, [r3, #28] if (cmd->AddressMode != QSPI_ADDRESS_NONE) - 803508c: 68bb ldr r3, [r7, #8] - 803508e: 69db ldr r3, [r3, #28] - 8035090: 2b00 cmp r3, #0 - 8035092: d031 beq.n 80350f8 + 80350cc: 68bb ldr r3, [r7, #8] + 80350ce: 69db ldr r3, [r3, #28] + 80350d0: 2b00 cmp r3, #0 + 80350d2: d031 beq.n 8035138 { /*---- Command with instruction, address and alternate bytes ----*/ /* Configure QSPI: CCR register with all communications parameters */ WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 8035094: 68bb ldr r3, [r7, #8] - 8035096: 6ada ldr r2, [r3, #44] ; 0x2c - 8035098: 68bb ldr r3, [r7, #8] - 803509a: 6b1b ldr r3, [r3, #48] ; 0x30 - 803509c: 431a orrs r2, r3 - 803509e: 68bb ldr r3, [r7, #8] - 80350a0: 6b5b ldr r3, [r3, #52] ; 0x34 - 80350a2: 431a orrs r2, r3 - 80350a4: 68bb ldr r3, [r7, #8] - 80350a6: 6a5b ldr r3, [r3, #36] ; 0x24 - 80350a8: 431a orrs r2, r3 - 80350aa: 68bb ldr r3, [r7, #8] - 80350ac: 695b ldr r3, [r3, #20] - 80350ae: 049b lsls r3, r3, #18 - 80350b0: 431a orrs r2, r3 - 80350b2: 68bb ldr r3, [r7, #8] - 80350b4: 691b ldr r3, [r3, #16] - 80350b6: 431a orrs r2, r3 - 80350b8: 68bb ldr r3, [r7, #8] - 80350ba: 6a1b ldr r3, [r3, #32] - 80350bc: 431a orrs r2, r3 - 80350be: 68bb ldr r3, [r7, #8] - 80350c0: 68db ldr r3, [r3, #12] - 80350c2: 431a orrs r2, r3 - 80350c4: 68bb ldr r3, [r7, #8] - 80350c6: 69db ldr r3, [r3, #28] - 80350c8: 431a orrs r2, r3 - 80350ca: 68bb ldr r3, [r7, #8] - 80350cc: 699b ldr r3, [r3, #24] - 80350ce: 431a orrs r2, r3 - 80350d0: 68bb ldr r3, [r7, #8] - 80350d2: 681b ldr r3, [r3, #0] - 80350d4: ea42 0103 orr.w r1, r2, r3 - 80350d8: 68fb ldr r3, [r7, #12] - 80350da: 681b ldr r3, [r3, #0] - 80350dc: 687a ldr r2, [r7, #4] - 80350de: 430a orrs r2, r1 - 80350e0: 615a str r2, [r3, #20] + 80350d4: 68bb ldr r3, [r7, #8] + 80350d6: 6ada ldr r2, [r3, #44] ; 0x2c + 80350d8: 68bb ldr r3, [r7, #8] + 80350da: 6b1b ldr r3, [r3, #48] ; 0x30 + 80350dc: 431a orrs r2, r3 + 80350de: 68bb ldr r3, [r7, #8] + 80350e0: 6b5b ldr r3, [r3, #52] ; 0x34 + 80350e2: 431a orrs r2, r3 + 80350e4: 68bb ldr r3, [r7, #8] + 80350e6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80350e8: 431a orrs r2, r3 + 80350ea: 68bb ldr r3, [r7, #8] + 80350ec: 695b ldr r3, [r3, #20] + 80350ee: 049b lsls r3, r3, #18 + 80350f0: 431a orrs r2, r3 + 80350f2: 68bb ldr r3, [r7, #8] + 80350f4: 691b ldr r3, [r3, #16] + 80350f6: 431a orrs r2, r3 + 80350f8: 68bb ldr r3, [r7, #8] + 80350fa: 6a1b ldr r3, [r3, #32] + 80350fc: 431a orrs r2, r3 + 80350fe: 68bb ldr r3, [r7, #8] + 8035100: 68db ldr r3, [r3, #12] + 8035102: 431a orrs r2, r3 + 8035104: 68bb ldr r3, [r7, #8] + 8035106: 69db ldr r3, [r3, #28] + 8035108: 431a orrs r2, r3 + 803510a: 68bb ldr r3, [r7, #8] + 803510c: 699b ldr r3, [r3, #24] + 803510e: 431a orrs r2, r3 + 8035110: 68bb ldr r3, [r7, #8] + 8035112: 681b ldr r3, [r3, #0] + 8035114: ea42 0103 orr.w r1, r2, r3 + 8035118: 68fb ldr r3, [r7, #12] + 803511a: 681b ldr r3, [r3, #0] + 803511c: 687a ldr r2, [r7, #4] + 803511e: 430a orrs r2, r1 + 8035120: 615a str r2, [r3, #20] cmd->DataMode | (cmd->DummyCycles << QUADSPI_CCR_DCYC_Pos) | cmd->AlternateBytesSize | cmd->AlternateByteMode | cmd->AddressSize | cmd->AddressMode | cmd->InstructionMode | cmd->Instruction | FunctionalMode)); if (FunctionalMode != QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED) - 80350e2: 687b ldr r3, [r7, #4] - 80350e4: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 - 80350e8: f000 812e beq.w 8035348 + 8035122: 687b ldr r3, [r7, #4] + 8035124: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 + 8035128: f000 812e beq.w 8035388 { /* Configure QSPI: AR register with address value */ WRITE_REG(hqspi->Instance->AR, cmd->Address); - 80350ec: 68fb ldr r3, [r7, #12] - 80350ee: 681b ldr r3, [r3, #0] - 80350f0: 68ba ldr r2, [r7, #8] - 80350f2: 6852 ldr r2, [r2, #4] - 80350f4: 619a str r2, [r3, #24] + 803512c: 68fb ldr r3, [r7, #12] + 803512e: 681b ldr r3, [r3, #0] + 8035130: 68ba ldr r2, [r7, #8] + 8035132: 6852 ldr r2, [r2, #4] + 8035134: 619a str r2, [r3, #24] cmd->InstructionMode | FunctionalMode)); } } } } } - 80350f6: e127 b.n 8035348 + 8035136: e127 b.n 8035388 WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 80350f8: 68bb ldr r3, [r7, #8] - 80350fa: 6ada ldr r2, [r3, #44] ; 0x2c - 80350fc: 68bb ldr r3, [r7, #8] - 80350fe: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035100: 431a orrs r2, r3 - 8035102: 68bb ldr r3, [r7, #8] - 8035104: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035106: 431a orrs r2, r3 - 8035108: 68bb ldr r3, [r7, #8] - 803510a: 6a5b ldr r3, [r3, #36] ; 0x24 - 803510c: 431a orrs r2, r3 - 803510e: 68bb ldr r3, [r7, #8] - 8035110: 695b ldr r3, [r3, #20] - 8035112: 049b lsls r3, r3, #18 - 8035114: 431a orrs r2, r3 - 8035116: 68bb ldr r3, [r7, #8] - 8035118: 691b ldr r3, [r3, #16] - 803511a: 431a orrs r2, r3 - 803511c: 68bb ldr r3, [r7, #8] - 803511e: 6a1b ldr r3, [r3, #32] - 8035120: 431a orrs r2, r3 - 8035122: 68bb ldr r3, [r7, #8] - 8035124: 69db ldr r3, [r3, #28] - 8035126: 431a orrs r2, r3 - 8035128: 68bb ldr r3, [r7, #8] - 803512a: 699b ldr r3, [r3, #24] - 803512c: 431a orrs r2, r3 - 803512e: 68bb ldr r3, [r7, #8] - 8035130: 681b ldr r3, [r3, #0] - 8035132: ea42 0103 orr.w r1, r2, r3 - 8035136: 68fb ldr r3, [r7, #12] - 8035138: 681b ldr r3, [r3, #0] - 803513a: 687a ldr r2, [r7, #4] - 803513c: 430a orrs r2, r1 - 803513e: 615a str r2, [r3, #20] -} - 8035140: e102 b.n 8035348 - if (cmd->AddressMode != QSPI_ADDRESS_NONE) + 8035138: 68bb ldr r3, [r7, #8] + 803513a: 6ada ldr r2, [r3, #44] ; 0x2c + 803513c: 68bb ldr r3, [r7, #8] + 803513e: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035140: 431a orrs r2, r3 8035142: 68bb ldr r3, [r7, #8] - 8035144: 69db ldr r3, [r3, #28] - 8035146: 2b00 cmp r3, #0 - 8035148: d02e beq.n 80351a8 - WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 803514a: 68bb ldr r3, [r7, #8] - 803514c: 6ada ldr r2, [r3, #44] ; 0x2c + 8035144: 6b5b ldr r3, [r3, #52] ; 0x34 + 8035146: 431a orrs r2, r3 + 8035148: 68bb ldr r3, [r7, #8] + 803514a: 6a5b ldr r3, [r3, #36] ; 0x24 + 803514c: 431a orrs r2, r3 803514e: 68bb ldr r3, [r7, #8] - 8035150: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035152: 431a orrs r2, r3 - 8035154: 68bb ldr r3, [r7, #8] - 8035156: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035158: 431a orrs r2, r3 - 803515a: 68bb ldr r3, [r7, #8] - 803515c: 6a5b ldr r3, [r3, #36] ; 0x24 - 803515e: 431a orrs r2, r3 - 8035160: 68bb ldr r3, [r7, #8] - 8035162: 695b ldr r3, [r3, #20] - 8035164: 049b lsls r3, r3, #18 + 8035150: 695b ldr r3, [r3, #20] + 8035152: 049b lsls r3, r3, #18 + 8035154: 431a orrs r2, r3 + 8035156: 68bb ldr r3, [r7, #8] + 8035158: 691b ldr r3, [r3, #16] + 803515a: 431a orrs r2, r3 + 803515c: 68bb ldr r3, [r7, #8] + 803515e: 6a1b ldr r3, [r3, #32] + 8035160: 431a orrs r2, r3 + 8035162: 68bb ldr r3, [r7, #8] + 8035164: 69db ldr r3, [r3, #28] 8035166: 431a orrs r2, r3 8035168: 68bb ldr r3, [r7, #8] - 803516a: 6a1b ldr r3, [r3, #32] + 803516a: 699b ldr r3, [r3, #24] 803516c: 431a orrs r2, r3 803516e: 68bb ldr r3, [r7, #8] - 8035170: 68db ldr r3, [r3, #12] - 8035172: 431a orrs r2, r3 - 8035174: 68bb ldr r3, [r7, #8] - 8035176: 69db ldr r3, [r3, #28] - 8035178: 431a orrs r2, r3 - 803517a: 68bb ldr r3, [r7, #8] - 803517c: 699b ldr r3, [r3, #24] - 803517e: 431a orrs r2, r3 - 8035180: 68bb ldr r3, [r7, #8] - 8035182: 681b ldr r3, [r3, #0] - 8035184: ea42 0103 orr.w r1, r2, r3 - 8035188: 68fb ldr r3, [r7, #12] - 803518a: 681b ldr r3, [r3, #0] - 803518c: 687a ldr r2, [r7, #4] - 803518e: 430a orrs r2, r1 - 8035190: 615a str r2, [r3, #20] + 8035170: 681b ldr r3, [r3, #0] + 8035172: ea42 0103 orr.w r1, r2, r3 + 8035176: 68fb ldr r3, [r7, #12] + 8035178: 681b ldr r3, [r3, #0] + 803517a: 687a ldr r2, [r7, #4] + 803517c: 430a orrs r2, r1 + 803517e: 615a str r2, [r3, #20] +} + 8035180: e102 b.n 8035388 + if (cmd->AddressMode != QSPI_ADDRESS_NONE) + 8035182: 68bb ldr r3, [r7, #8] + 8035184: 69db ldr r3, [r3, #28] + 8035186: 2b00 cmp r3, #0 + 8035188: d02e beq.n 80351e8 + WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | + 803518a: 68bb ldr r3, [r7, #8] + 803518c: 6ada ldr r2, [r3, #44] ; 0x2c + 803518e: 68bb ldr r3, [r7, #8] + 8035190: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035192: 431a orrs r2, r3 + 8035194: 68bb ldr r3, [r7, #8] + 8035196: 6b5b ldr r3, [r3, #52] ; 0x34 + 8035198: 431a orrs r2, r3 + 803519a: 68bb ldr r3, [r7, #8] + 803519c: 6a5b ldr r3, [r3, #36] ; 0x24 + 803519e: 431a orrs r2, r3 + 80351a0: 68bb ldr r3, [r7, #8] + 80351a2: 695b ldr r3, [r3, #20] + 80351a4: 049b lsls r3, r3, #18 + 80351a6: 431a orrs r2, r3 + 80351a8: 68bb ldr r3, [r7, #8] + 80351aa: 6a1b ldr r3, [r3, #32] + 80351ac: 431a orrs r2, r3 + 80351ae: 68bb ldr r3, [r7, #8] + 80351b0: 68db ldr r3, [r3, #12] + 80351b2: 431a orrs r2, r3 + 80351b4: 68bb ldr r3, [r7, #8] + 80351b6: 69db ldr r3, [r3, #28] + 80351b8: 431a orrs r2, r3 + 80351ba: 68bb ldr r3, [r7, #8] + 80351bc: 699b ldr r3, [r3, #24] + 80351be: 431a orrs r2, r3 + 80351c0: 68bb ldr r3, [r7, #8] + 80351c2: 681b ldr r3, [r3, #0] + 80351c4: ea42 0103 orr.w r1, r2, r3 + 80351c8: 68fb ldr r3, [r7, #12] + 80351ca: 681b ldr r3, [r3, #0] + 80351cc: 687a ldr r2, [r7, #4] + 80351ce: 430a orrs r2, r1 + 80351d0: 615a str r2, [r3, #20] if (FunctionalMode != QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED) - 8035192: 687b ldr r3, [r7, #4] - 8035194: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 - 8035198: f000 80d6 beq.w 8035348 + 80351d2: 687b ldr r3, [r7, #4] + 80351d4: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 + 80351d8: f000 80d6 beq.w 8035388 WRITE_REG(hqspi->Instance->AR, cmd->Address); - 803519c: 68fb ldr r3, [r7, #12] - 803519e: 681b ldr r3, [r3, #0] - 80351a0: 68ba ldr r2, [r7, #8] - 80351a2: 6852 ldr r2, [r2, #4] - 80351a4: 619a str r2, [r3, #24] + 80351dc: 68fb ldr r3, [r7, #12] + 80351de: 681b ldr r3, [r3, #0] + 80351e0: 68ba ldr r2, [r7, #8] + 80351e2: 6852 ldr r2, [r2, #4] + 80351e4: 619a str r2, [r3, #24] } - 80351a6: e0cf b.n 8035348 + 80351e6: e0cf b.n 8035388 WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 80351a8: 68bb ldr r3, [r7, #8] - 80351aa: 6ada ldr r2, [r3, #44] ; 0x2c - 80351ac: 68bb ldr r3, [r7, #8] - 80351ae: 6b1b ldr r3, [r3, #48] ; 0x30 - 80351b0: 431a orrs r2, r3 - 80351b2: 68bb ldr r3, [r7, #8] - 80351b4: 6b5b ldr r3, [r3, #52] ; 0x34 - 80351b6: 431a orrs r2, r3 - 80351b8: 68bb ldr r3, [r7, #8] - 80351ba: 6a5b ldr r3, [r3, #36] ; 0x24 - 80351bc: 431a orrs r2, r3 - 80351be: 68bb ldr r3, [r7, #8] - 80351c0: 695b ldr r3, [r3, #20] - 80351c2: 049b lsls r3, r3, #18 - 80351c4: 431a orrs r2, r3 - 80351c6: 68bb ldr r3, [r7, #8] - 80351c8: 6a1b ldr r3, [r3, #32] - 80351ca: 431a orrs r2, r3 - 80351cc: 68bb ldr r3, [r7, #8] - 80351ce: 69db ldr r3, [r3, #28] - 80351d0: 431a orrs r2, r3 - 80351d2: 68bb ldr r3, [r7, #8] - 80351d4: 699b ldr r3, [r3, #24] - 80351d6: 431a orrs r2, r3 - 80351d8: 68bb ldr r3, [r7, #8] - 80351da: 681b ldr r3, [r3, #0] - 80351dc: ea42 0103 orr.w r1, r2, r3 - 80351e0: 68fb ldr r3, [r7, #12] - 80351e2: 681b ldr r3, [r3, #0] - 80351e4: 687a ldr r2, [r7, #4] - 80351e6: 430a orrs r2, r1 - 80351e8: 615a str r2, [r3, #20] -} - 80351ea: e0ad b.n 8035348 - if (cmd->AlternateByteMode != QSPI_ALTERNATE_BYTES_NONE) + 80351e8: 68bb ldr r3, [r7, #8] + 80351ea: 6ada ldr r2, [r3, #44] ; 0x2c 80351ec: 68bb ldr r3, [r7, #8] - 80351ee: 6a1b ldr r3, [r3, #32] - 80351f0: 2b00 cmp r3, #0 - 80351f2: d058 beq.n 80352a6 + 80351ee: 6b1b ldr r3, [r3, #48] ; 0x30 + 80351f0: 431a orrs r2, r3 + 80351f2: 68bb ldr r3, [r7, #8] + 80351f4: 6b5b ldr r3, [r3, #52] ; 0x34 + 80351f6: 431a orrs r2, r3 + 80351f8: 68bb ldr r3, [r7, #8] + 80351fa: 6a5b ldr r3, [r3, #36] ; 0x24 + 80351fc: 431a orrs r2, r3 + 80351fe: 68bb ldr r3, [r7, #8] + 8035200: 695b ldr r3, [r3, #20] + 8035202: 049b lsls r3, r3, #18 + 8035204: 431a orrs r2, r3 + 8035206: 68bb ldr r3, [r7, #8] + 8035208: 6a1b ldr r3, [r3, #32] + 803520a: 431a orrs r2, r3 + 803520c: 68bb ldr r3, [r7, #8] + 803520e: 69db ldr r3, [r3, #28] + 8035210: 431a orrs r2, r3 + 8035212: 68bb ldr r3, [r7, #8] + 8035214: 699b ldr r3, [r3, #24] + 8035216: 431a orrs r2, r3 + 8035218: 68bb ldr r3, [r7, #8] + 803521a: 681b ldr r3, [r3, #0] + 803521c: ea42 0103 orr.w r1, r2, r3 + 8035220: 68fb ldr r3, [r7, #12] + 8035222: 681b ldr r3, [r3, #0] + 8035224: 687a ldr r2, [r7, #4] + 8035226: 430a orrs r2, r1 + 8035228: 615a str r2, [r3, #20] +} + 803522a: e0ad b.n 8035388 + if (cmd->AlternateByteMode != QSPI_ALTERNATE_BYTES_NONE) + 803522c: 68bb ldr r3, [r7, #8] + 803522e: 6a1b ldr r3, [r3, #32] + 8035230: 2b00 cmp r3, #0 + 8035232: d058 beq.n 80352e6 WRITE_REG(hqspi->Instance->ABR, cmd->AlternateBytes); - 80351f4: 68fb ldr r3, [r7, #12] - 80351f6: 681b ldr r3, [r3, #0] - 80351f8: 68ba ldr r2, [r7, #8] - 80351fa: 6892 ldr r2, [r2, #8] - 80351fc: 61da str r2, [r3, #28] + 8035234: 68fb ldr r3, [r7, #12] + 8035236: 681b ldr r3, [r3, #0] + 8035238: 68ba ldr r2, [r7, #8] + 803523a: 6892 ldr r2, [r2, #8] + 803523c: 61da str r2, [r3, #28] if (cmd->AddressMode != QSPI_ADDRESS_NONE) - 80351fe: 68bb ldr r3, [r7, #8] - 8035200: 69db ldr r3, [r3, #28] - 8035202: 2b00 cmp r3, #0 - 8035204: d02d beq.n 8035262 + 803523e: 68bb ldr r3, [r7, #8] + 8035240: 69db ldr r3, [r3, #28] + 8035242: 2b00 cmp r3, #0 + 8035244: d02d beq.n 80352a2 WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 8035206: 68bb ldr r3, [r7, #8] - 8035208: 6ada ldr r2, [r3, #44] ; 0x2c - 803520a: 68bb ldr r3, [r7, #8] - 803520c: 6b1b ldr r3, [r3, #48] ; 0x30 - 803520e: 431a orrs r2, r3 - 8035210: 68bb ldr r3, [r7, #8] - 8035212: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035214: 431a orrs r2, r3 - 8035216: 68bb ldr r3, [r7, #8] - 8035218: 6a5b ldr r3, [r3, #36] ; 0x24 - 803521a: 431a orrs r2, r3 - 803521c: 68bb ldr r3, [r7, #8] - 803521e: 695b ldr r3, [r3, #20] - 8035220: 049b lsls r3, r3, #18 - 8035222: 431a orrs r2, r3 - 8035224: 68bb ldr r3, [r7, #8] - 8035226: 691b ldr r3, [r3, #16] - 8035228: 431a orrs r2, r3 - 803522a: 68bb ldr r3, [r7, #8] - 803522c: 6a1b ldr r3, [r3, #32] - 803522e: 431a orrs r2, r3 - 8035230: 68bb ldr r3, [r7, #8] - 8035232: 68db ldr r3, [r3, #12] - 8035234: 431a orrs r2, r3 - 8035236: 68bb ldr r3, [r7, #8] - 8035238: 69db ldr r3, [r3, #28] - 803523a: 431a orrs r2, r3 - 803523c: 68bb ldr r3, [r7, #8] - 803523e: 699b ldr r3, [r3, #24] - 8035240: ea42 0103 orr.w r1, r2, r3 - 8035244: 68fb ldr r3, [r7, #12] - 8035246: 681b ldr r3, [r3, #0] - 8035248: 687a ldr r2, [r7, #4] - 803524a: 430a orrs r2, r1 - 803524c: 615a str r2, [r3, #20] + 8035246: 68bb ldr r3, [r7, #8] + 8035248: 6ada ldr r2, [r3, #44] ; 0x2c + 803524a: 68bb ldr r3, [r7, #8] + 803524c: 6b1b ldr r3, [r3, #48] ; 0x30 + 803524e: 431a orrs r2, r3 + 8035250: 68bb ldr r3, [r7, #8] + 8035252: 6b5b ldr r3, [r3, #52] ; 0x34 + 8035254: 431a orrs r2, r3 + 8035256: 68bb ldr r3, [r7, #8] + 8035258: 6a5b ldr r3, [r3, #36] ; 0x24 + 803525a: 431a orrs r2, r3 + 803525c: 68bb ldr r3, [r7, #8] + 803525e: 695b ldr r3, [r3, #20] + 8035260: 049b lsls r3, r3, #18 + 8035262: 431a orrs r2, r3 + 8035264: 68bb ldr r3, [r7, #8] + 8035266: 691b ldr r3, [r3, #16] + 8035268: 431a orrs r2, r3 + 803526a: 68bb ldr r3, [r7, #8] + 803526c: 6a1b ldr r3, [r3, #32] + 803526e: 431a orrs r2, r3 + 8035270: 68bb ldr r3, [r7, #8] + 8035272: 68db ldr r3, [r3, #12] + 8035274: 431a orrs r2, r3 + 8035276: 68bb ldr r3, [r7, #8] + 8035278: 69db ldr r3, [r3, #28] + 803527a: 431a orrs r2, r3 + 803527c: 68bb ldr r3, [r7, #8] + 803527e: 699b ldr r3, [r3, #24] + 8035280: ea42 0103 orr.w r1, r2, r3 + 8035284: 68fb ldr r3, [r7, #12] + 8035286: 681b ldr r3, [r3, #0] + 8035288: 687a ldr r2, [r7, #4] + 803528a: 430a orrs r2, r1 + 803528c: 615a str r2, [r3, #20] if (FunctionalMode != QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED) - 803524e: 687b ldr r3, [r7, #4] - 8035250: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 - 8035254: d078 beq.n 8035348 + 803528e: 687b ldr r3, [r7, #4] + 8035290: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 + 8035294: d078 beq.n 8035388 WRITE_REG(hqspi->Instance->AR, cmd->Address); - 8035256: 68fb ldr r3, [r7, #12] - 8035258: 681b ldr r3, [r3, #0] - 803525a: 68ba ldr r2, [r7, #8] - 803525c: 6852 ldr r2, [r2, #4] - 803525e: 619a str r2, [r3, #24] + 8035296: 68fb ldr r3, [r7, #12] + 8035298: 681b ldr r3, [r3, #0] + 803529a: 68ba ldr r2, [r7, #8] + 803529c: 6852 ldr r2, [r2, #4] + 803529e: 619a str r2, [r3, #24] } - 8035260: e072 b.n 8035348 + 80352a0: e072 b.n 8035388 WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 8035262: 68bb ldr r3, [r7, #8] - 8035264: 6ada ldr r2, [r3, #44] ; 0x2c - 8035266: 68bb ldr r3, [r7, #8] - 8035268: 6b1b ldr r3, [r3, #48] ; 0x30 - 803526a: 431a orrs r2, r3 - 803526c: 68bb ldr r3, [r7, #8] - 803526e: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035270: 431a orrs r2, r3 - 8035272: 68bb ldr r3, [r7, #8] - 8035274: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035276: 431a orrs r2, r3 - 8035278: 68bb ldr r3, [r7, #8] - 803527a: 695b ldr r3, [r3, #20] - 803527c: 049b lsls r3, r3, #18 - 803527e: 431a orrs r2, r3 - 8035280: 68bb ldr r3, [r7, #8] - 8035282: 691b ldr r3, [r3, #16] - 8035284: 431a orrs r2, r3 - 8035286: 68bb ldr r3, [r7, #8] - 8035288: 6a1b ldr r3, [r3, #32] - 803528a: 431a orrs r2, r3 - 803528c: 68bb ldr r3, [r7, #8] - 803528e: 69db ldr r3, [r3, #28] - 8035290: 431a orrs r2, r3 - 8035292: 68bb ldr r3, [r7, #8] - 8035294: 699b ldr r3, [r3, #24] - 8035296: ea42 0103 orr.w r1, r2, r3 - 803529a: 68fb ldr r3, [r7, #12] - 803529c: 681b ldr r3, [r3, #0] - 803529e: 687a ldr r2, [r7, #4] - 80352a0: 430a orrs r2, r1 - 80352a2: 615a str r2, [r3, #20] -} - 80352a4: e050 b.n 8035348 - if (cmd->AddressMode != QSPI_ADDRESS_NONE) + 80352a2: 68bb ldr r3, [r7, #8] + 80352a4: 6ada ldr r2, [r3, #44] ; 0x2c 80352a6: 68bb ldr r3, [r7, #8] - 80352a8: 69db ldr r3, [r3, #28] - 80352aa: 2b00 cmp r3, #0 - 80352ac: d02a beq.n 8035304 - WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 80352ae: 68bb ldr r3, [r7, #8] - 80352b0: 6ada ldr r2, [r3, #44] ; 0x2c + 80352a8: 6b1b ldr r3, [r3, #48] ; 0x30 + 80352aa: 431a orrs r2, r3 + 80352ac: 68bb ldr r3, [r7, #8] + 80352ae: 6b5b ldr r3, [r3, #52] ; 0x34 + 80352b0: 431a orrs r2, r3 80352b2: 68bb ldr r3, [r7, #8] - 80352b4: 6b1b ldr r3, [r3, #48] ; 0x30 + 80352b4: 6a5b ldr r3, [r3, #36] ; 0x24 80352b6: 431a orrs r2, r3 80352b8: 68bb ldr r3, [r7, #8] - 80352ba: 6b5b ldr r3, [r3, #52] ; 0x34 - 80352bc: 431a orrs r2, r3 - 80352be: 68bb ldr r3, [r7, #8] - 80352c0: 6a5b ldr r3, [r3, #36] ; 0x24 - 80352c2: 431a orrs r2, r3 - 80352c4: 68bb ldr r3, [r7, #8] - 80352c6: 695b ldr r3, [r3, #20] - 80352c8: 049b lsls r3, r3, #18 + 80352ba: 695b ldr r3, [r3, #20] + 80352bc: 049b lsls r3, r3, #18 + 80352be: 431a orrs r2, r3 + 80352c0: 68bb ldr r3, [r7, #8] + 80352c2: 691b ldr r3, [r3, #16] + 80352c4: 431a orrs r2, r3 + 80352c6: 68bb ldr r3, [r7, #8] + 80352c8: 6a1b ldr r3, [r3, #32] 80352ca: 431a orrs r2, r3 80352cc: 68bb ldr r3, [r7, #8] - 80352ce: 6a1b ldr r3, [r3, #32] + 80352ce: 69db ldr r3, [r3, #28] 80352d0: 431a orrs r2, r3 80352d2: 68bb ldr r3, [r7, #8] - 80352d4: 68db ldr r3, [r3, #12] - 80352d6: 431a orrs r2, r3 - 80352d8: 68bb ldr r3, [r7, #8] - 80352da: 69db ldr r3, [r3, #28] - 80352dc: 431a orrs r2, r3 - 80352de: 68bb ldr r3, [r7, #8] - 80352e0: 699b ldr r3, [r3, #24] - 80352e2: ea42 0103 orr.w r1, r2, r3 - 80352e6: 68fb ldr r3, [r7, #12] - 80352e8: 681b ldr r3, [r3, #0] - 80352ea: 687a ldr r2, [r7, #4] - 80352ec: 430a orrs r2, r1 - 80352ee: 615a str r2, [r3, #20] + 80352d4: 699b ldr r3, [r3, #24] + 80352d6: ea42 0103 orr.w r1, r2, r3 + 80352da: 68fb ldr r3, [r7, #12] + 80352dc: 681b ldr r3, [r3, #0] + 80352de: 687a ldr r2, [r7, #4] + 80352e0: 430a orrs r2, r1 + 80352e2: 615a str r2, [r3, #20] +} + 80352e4: e050 b.n 8035388 + if (cmd->AddressMode != QSPI_ADDRESS_NONE) + 80352e6: 68bb ldr r3, [r7, #8] + 80352e8: 69db ldr r3, [r3, #28] + 80352ea: 2b00 cmp r3, #0 + 80352ec: d02a beq.n 8035344 + WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | + 80352ee: 68bb ldr r3, [r7, #8] + 80352f0: 6ada ldr r2, [r3, #44] ; 0x2c + 80352f2: 68bb ldr r3, [r7, #8] + 80352f4: 6b1b ldr r3, [r3, #48] ; 0x30 + 80352f6: 431a orrs r2, r3 + 80352f8: 68bb ldr r3, [r7, #8] + 80352fa: 6b5b ldr r3, [r3, #52] ; 0x34 + 80352fc: 431a orrs r2, r3 + 80352fe: 68bb ldr r3, [r7, #8] + 8035300: 6a5b ldr r3, [r3, #36] ; 0x24 + 8035302: 431a orrs r2, r3 + 8035304: 68bb ldr r3, [r7, #8] + 8035306: 695b ldr r3, [r3, #20] + 8035308: 049b lsls r3, r3, #18 + 803530a: 431a orrs r2, r3 + 803530c: 68bb ldr r3, [r7, #8] + 803530e: 6a1b ldr r3, [r3, #32] + 8035310: 431a orrs r2, r3 + 8035312: 68bb ldr r3, [r7, #8] + 8035314: 68db ldr r3, [r3, #12] + 8035316: 431a orrs r2, r3 + 8035318: 68bb ldr r3, [r7, #8] + 803531a: 69db ldr r3, [r3, #28] + 803531c: 431a orrs r2, r3 + 803531e: 68bb ldr r3, [r7, #8] + 8035320: 699b ldr r3, [r3, #24] + 8035322: ea42 0103 orr.w r1, r2, r3 + 8035326: 68fb ldr r3, [r7, #12] + 8035328: 681b ldr r3, [r3, #0] + 803532a: 687a ldr r2, [r7, #4] + 803532c: 430a orrs r2, r1 + 803532e: 615a str r2, [r3, #20] if (FunctionalMode != QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED) - 80352f0: 687b ldr r3, [r7, #4] - 80352f2: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 - 80352f6: d027 beq.n 8035348 + 8035330: 687b ldr r3, [r7, #4] + 8035332: f1b3 6f40 cmp.w r3, #201326592 ; 0xc000000 + 8035336: d027 beq.n 8035388 WRITE_REG(hqspi->Instance->AR, cmd->Address); - 80352f8: 68fb ldr r3, [r7, #12] - 80352fa: 681b ldr r3, [r3, #0] - 80352fc: 68ba ldr r2, [r7, #8] - 80352fe: 6852 ldr r2, [r2, #4] - 8035300: 619a str r2, [r3, #24] + 8035338: 68fb ldr r3, [r7, #12] + 803533a: 681b ldr r3, [r3, #0] + 803533c: 68ba ldr r2, [r7, #8] + 803533e: 6852 ldr r2, [r2, #4] + 8035340: 619a str r2, [r3, #24] } - 8035302: e021 b.n 8035348 + 8035342: e021 b.n 8035388 if (cmd->DataMode != QSPI_DATA_NONE) - 8035304: 68bb ldr r3, [r7, #8] - 8035306: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035308: 2b00 cmp r3, #0 - 803530a: d01d beq.n 8035348 + 8035344: 68bb ldr r3, [r7, #8] + 8035346: 6a5b ldr r3, [r3, #36] ; 0x24 + 8035348: 2b00 cmp r3, #0 + 803534a: d01d beq.n 8035388 WRITE_REG(hqspi->Instance->CCR, (cmd->DdrMode | cmd->DdrHoldHalfCycle | cmd->SIOOMode | - 803530c: 68bb ldr r3, [r7, #8] - 803530e: 6ada ldr r2, [r3, #44] ; 0x2c - 8035310: 68bb ldr r3, [r7, #8] - 8035312: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035314: 431a orrs r2, r3 - 8035316: 68bb ldr r3, [r7, #8] - 8035318: 6b5b ldr r3, [r3, #52] ; 0x34 - 803531a: 431a orrs r2, r3 - 803531c: 68bb ldr r3, [r7, #8] - 803531e: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035320: 431a orrs r2, r3 - 8035322: 68bb ldr r3, [r7, #8] - 8035324: 695b ldr r3, [r3, #20] - 8035326: 049b lsls r3, r3, #18 - 8035328: 431a orrs r2, r3 - 803532a: 68bb ldr r3, [r7, #8] - 803532c: 6a1b ldr r3, [r3, #32] - 803532e: 431a orrs r2, r3 - 8035330: 68bb ldr r3, [r7, #8] - 8035332: 69db ldr r3, [r3, #28] - 8035334: 431a orrs r2, r3 - 8035336: 68bb ldr r3, [r7, #8] - 8035338: 699b ldr r3, [r3, #24] - 803533a: ea42 0103 orr.w r1, r2, r3 - 803533e: 68fb ldr r3, [r7, #12] - 8035340: 681b ldr r3, [r3, #0] - 8035342: 687a ldr r2, [r7, #4] - 8035344: 430a orrs r2, r1 - 8035346: 615a str r2, [r3, #20] -} - 8035348: bf00 nop - 803534a: 3714 adds r7, #20 - 803534c: 46bd mov sp, r7 - 803534e: f85d 7b04 ldr.w r7, [sp], #4 - 8035352: 4770 bx lr - -08035354 : + 803534c: 68bb ldr r3, [r7, #8] + 803534e: 6ada ldr r2, [r3, #44] ; 0x2c + 8035350: 68bb ldr r3, [r7, #8] + 8035352: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035354: 431a orrs r2, r3 + 8035356: 68bb ldr r3, [r7, #8] + 8035358: 6b5b ldr r3, [r3, #52] ; 0x34 + 803535a: 431a orrs r2, r3 + 803535c: 68bb ldr r3, [r7, #8] + 803535e: 6a5b ldr r3, [r3, #36] ; 0x24 + 8035360: 431a orrs r2, r3 + 8035362: 68bb ldr r3, [r7, #8] + 8035364: 695b ldr r3, [r3, #20] + 8035366: 049b lsls r3, r3, #18 + 8035368: 431a orrs r2, r3 + 803536a: 68bb ldr r3, [r7, #8] + 803536c: 6a1b ldr r3, [r3, #32] + 803536e: 431a orrs r2, r3 + 8035370: 68bb ldr r3, [r7, #8] + 8035372: 69db ldr r3, [r3, #28] + 8035374: 431a orrs r2, r3 + 8035376: 68bb ldr r3, [r7, #8] + 8035378: 699b ldr r3, [r3, #24] + 803537a: ea42 0103 orr.w r1, r2, r3 + 803537e: 68fb ldr r3, [r7, #12] + 8035380: 681b ldr r3, [r3, #0] + 8035382: 687a ldr r2, [r7, #4] + 8035384: 430a orrs r2, r1 + 8035386: 615a str r2, [r3, #20] +} + 8035388: bf00 nop + 803538a: 3714 adds r7, #20 + 803538c: 46bd mov sp, r7 + 803538e: f85d 7b04 ldr.w r7, [sp], #4 + 8035392: 4770 bx lr + +08035394 : * supported by this function. User should request a transition to HSE Off * first and then HSE On or HSE Bypass. * @retval HAL status */ __weak HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct) { - 8035354: b580 push {r7, lr} - 8035356: b08c sub sp, #48 ; 0x30 - 8035358: af00 add r7, sp, #0 - 803535a: 6078 str r0, [r7, #4] + 8035394: b580 push {r7, lr} + 8035396: b08c sub sp, #48 ; 0x30 + 8035398: af00 add r7, sp, #0 + 803539a: 6078 str r0, [r7, #4] uint32_t tickstart; uint32_t temp1_pllckcfg, temp2_pllckcfg; /* Check Null pointer */ if(RCC_OscInitStruct == NULL) - 803535c: 687b ldr r3, [r7, #4] - 803535e: 2b00 cmp r3, #0 - 8035360: d102 bne.n 8035368 + 803539c: 687b ldr r3, [r7, #4] + 803539e: 2b00 cmp r3, #0 + 80353a0: d102 bne.n 80353a8 { return HAL_ERROR; - 8035362: 2301 movs r3, #1 - 8035364: f000 bc1d b.w 8035ba2 + 80353a2: 2301 movs r3, #1 + 80353a4: f000 bc1d b.w 8035be2 } /* Check the parameters */ assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType)); /*------------------------------- HSE Configuration ------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE) - 8035368: 687b ldr r3, [r7, #4] - 803536a: 681b ldr r3, [r3, #0] - 803536c: f003 0301 and.w r3, r3, #1 - 8035370: 2b00 cmp r3, #0 - 8035372: f000 8087 beq.w 8035484 + 80353a8: 687b ldr r3, [r7, #4] + 80353aa: 681b ldr r3, [r3, #0] + 80353ac: f003 0301 and.w r3, r3, #1 + 80353b0: 2b00 cmp r3, #0 + 80353b2: f000 8087 beq.w 80354c4 { /* Check the parameters */ assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState)); const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8035376: 4b99 ldr r3, [pc, #612] ; (80355dc ) - 8035378: 691b ldr r3, [r3, #16] - 803537a: f003 0338 and.w r3, r3, #56 ; 0x38 - 803537e: 62fb str r3, [r7, #44] ; 0x2c + 80353b6: 4b99 ldr r3, [pc, #612] ; (803561c ) + 80353b8: 691b ldr r3, [r3, #16] + 80353ba: f003 0338 and.w r3, r3, #56 ; 0x38 + 80353be: 62fb str r3, [r7, #44] ; 0x2c const uint32_t temp_pllckselr = RCC->PLLCKSELR; - 8035380: 4b96 ldr r3, [pc, #600] ; (80355dc ) - 8035382: 6a9b ldr r3, [r3, #40] ; 0x28 - 8035384: 62bb str r3, [r7, #40] ; 0x28 + 80353c0: 4b96 ldr r3, [pc, #600] ; (803561c ) + 80353c2: 6a9b ldr r3, [r3, #40] ; 0x28 + 80353c4: 62bb str r3, [r7, #40] ; 0x28 /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */ if((temp_sysclksrc == RCC_CFGR_SWS_HSE) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_HSE))) - 8035386: 6afb ldr r3, [r7, #44] ; 0x2c - 8035388: 2b10 cmp r3, #16 - 803538a: d007 beq.n 803539c - 803538c: 6afb ldr r3, [r7, #44] ; 0x2c - 803538e: 2b18 cmp r3, #24 - 8035390: d110 bne.n 80353b4 - 8035392: 6abb ldr r3, [r7, #40] ; 0x28 - 8035394: f003 0303 and.w r3, r3, #3 - 8035398: 2b02 cmp r3, #2 - 803539a: d10b bne.n 80353b4 + 80353c6: 6afb ldr r3, [r7, #44] ; 0x2c + 80353c8: 2b10 cmp r3, #16 + 80353ca: d007 beq.n 80353dc + 80353cc: 6afb ldr r3, [r7, #44] ; 0x2c + 80353ce: 2b18 cmp r3, #24 + 80353d0: d110 bne.n 80353f4 + 80353d2: 6abb ldr r3, [r7, #40] ; 0x28 + 80353d4: f003 0303 and.w r3, r3, #3 + 80353d8: 2b02 cmp r3, #2 + 80353da: d10b bne.n 80353f4 { if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 803539c: 4b8f ldr r3, [pc, #572] ; (80355dc ) - 803539e: 681b ldr r3, [r3, #0] - 80353a0: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80353a4: 2b00 cmp r3, #0 - 80353a6: d06c beq.n 8035482 - 80353a8: 687b ldr r3, [r7, #4] - 80353aa: 685b ldr r3, [r3, #4] - 80353ac: 2b00 cmp r3, #0 - 80353ae: d168 bne.n 8035482 + 80353dc: 4b8f ldr r3, [pc, #572] ; (803561c ) + 80353de: 681b ldr r3, [r3, #0] + 80353e0: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80353e4: 2b00 cmp r3, #0 + 80353e6: d06c beq.n 80354c2 + 80353e8: 687b ldr r3, [r7, #4] + 80353ea: 685b ldr r3, [r3, #4] + 80353ec: 2b00 cmp r3, #0 + 80353ee: d168 bne.n 80354c2 { return HAL_ERROR; - 80353b0: 2301 movs r3, #1 - 80353b2: e3f6 b.n 8035ba2 + 80353f0: 2301 movs r3, #1 + 80353f2: e3f6 b.n 8035be2 } } else { /* Set the new HSE configuration ---------------------------------------*/ __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState); - 80353b4: 687b ldr r3, [r7, #4] - 80353b6: 685b ldr r3, [r3, #4] - 80353b8: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 80353bc: d106 bne.n 80353cc - 80353be: 4b87 ldr r3, [pc, #540] ; (80355dc ) - 80353c0: 681b ldr r3, [r3, #0] - 80353c2: 4a86 ldr r2, [pc, #536] ; (80355dc ) - 80353c4: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 80353c8: 6013 str r3, [r2, #0] - 80353ca: e02e b.n 803542a - 80353cc: 687b ldr r3, [r7, #4] - 80353ce: 685b ldr r3, [r3, #4] - 80353d0: 2b00 cmp r3, #0 - 80353d2: d10c bne.n 80353ee - 80353d4: 4b81 ldr r3, [pc, #516] ; (80355dc ) - 80353d6: 681b ldr r3, [r3, #0] - 80353d8: 4a80 ldr r2, [pc, #512] ; (80355dc ) - 80353da: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 80353de: 6013 str r3, [r2, #0] - 80353e0: 4b7e ldr r3, [pc, #504] ; (80355dc ) - 80353e2: 681b ldr r3, [r3, #0] - 80353e4: 4a7d ldr r2, [pc, #500] ; (80355dc ) - 80353e6: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 80353ea: 6013 str r3, [r2, #0] - 80353ec: e01d b.n 803542a - 80353ee: 687b ldr r3, [r7, #4] - 80353f0: 685b ldr r3, [r3, #4] - 80353f2: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 - 80353f6: d10c bne.n 8035412 - 80353f8: 4b78 ldr r3, [pc, #480] ; (80355dc ) - 80353fa: 681b ldr r3, [r3, #0] - 80353fc: 4a77 ldr r2, [pc, #476] ; (80355dc ) - 80353fe: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 8035402: 6013 str r3, [r2, #0] - 8035404: 4b75 ldr r3, [pc, #468] ; (80355dc ) - 8035406: 681b ldr r3, [r3, #0] - 8035408: 4a74 ldr r2, [pc, #464] ; (80355dc ) - 803540a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 803540e: 6013 str r3, [r2, #0] - 8035410: e00b b.n 803542a - 8035412: 4b72 ldr r3, [pc, #456] ; (80355dc ) - 8035414: 681b ldr r3, [r3, #0] - 8035416: 4a71 ldr r2, [pc, #452] ; (80355dc ) - 8035418: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 803541c: 6013 str r3, [r2, #0] - 803541e: 4b6f ldr r3, [pc, #444] ; (80355dc ) - 8035420: 681b ldr r3, [r3, #0] - 8035422: 4a6e ldr r2, [pc, #440] ; (80355dc ) - 8035424: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 8035428: 6013 str r3, [r2, #0] + 80353f4: 687b ldr r3, [r7, #4] + 80353f6: 685b ldr r3, [r3, #4] + 80353f8: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80353fc: d106 bne.n 803540c + 80353fe: 4b87 ldr r3, [pc, #540] ; (803561c ) + 8035400: 681b ldr r3, [r3, #0] + 8035402: 4a86 ldr r2, [pc, #536] ; (803561c ) + 8035404: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8035408: 6013 str r3, [r2, #0] + 803540a: e02e b.n 803546a + 803540c: 687b ldr r3, [r7, #4] + 803540e: 685b ldr r3, [r3, #4] + 8035410: 2b00 cmp r3, #0 + 8035412: d10c bne.n 803542e + 8035414: 4b81 ldr r3, [pc, #516] ; (803561c ) + 8035416: 681b ldr r3, [r3, #0] + 8035418: 4a80 ldr r2, [pc, #512] ; (803561c ) + 803541a: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 803541e: 6013 str r3, [r2, #0] + 8035420: 4b7e ldr r3, [pc, #504] ; (803561c ) + 8035422: 681b ldr r3, [r3, #0] + 8035424: 4a7d ldr r2, [pc, #500] ; (803561c ) + 8035426: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 803542a: 6013 str r3, [r2, #0] + 803542c: e01d b.n 803546a + 803542e: 687b ldr r3, [r7, #4] + 8035430: 685b ldr r3, [r3, #4] + 8035432: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 + 8035436: d10c bne.n 8035452 + 8035438: 4b78 ldr r3, [pc, #480] ; (803561c ) + 803543a: 681b ldr r3, [r3, #0] + 803543c: 4a77 ldr r2, [pc, #476] ; (803561c ) + 803543e: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 8035442: 6013 str r3, [r2, #0] + 8035444: 4b75 ldr r3, [pc, #468] ; (803561c ) + 8035446: 681b ldr r3, [r3, #0] + 8035448: 4a74 ldr r2, [pc, #464] ; (803561c ) + 803544a: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 803544e: 6013 str r3, [r2, #0] + 8035450: e00b b.n 803546a + 8035452: 4b72 ldr r3, [pc, #456] ; (803561c ) + 8035454: 681b ldr r3, [r3, #0] + 8035456: 4a71 ldr r2, [pc, #452] ; (803561c ) + 8035458: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 803545c: 6013 str r3, [r2, #0] + 803545e: 4b6f ldr r3, [pc, #444] ; (803561c ) + 8035460: 681b ldr r3, [r3, #0] + 8035462: 4a6e ldr r2, [pc, #440] ; (803561c ) + 8035464: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 8035468: 6013 str r3, [r2, #0] /* Check the HSE State */ if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF) - 803542a: 687b ldr r3, [r7, #4] - 803542c: 685b ldr r3, [r3, #4] - 803542e: 2b00 cmp r3, #0 - 8035430: d013 beq.n 803545a + 803546a: 687b ldr r3, [r7, #4] + 803546c: 685b ldr r3, [r3, #4] + 803546e: 2b00 cmp r3, #0 + 8035470: d013 beq.n 803549a { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035432: f7f7 fdaf bl 802cf94 - 8035436: 6278 str r0, [r7, #36] ; 0x24 + 8035472: f7f7 fdaf bl 802cfd4 + 8035476: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) - 8035438: e008 b.n 803544c + 8035478: e008 b.n 803548c { if((uint32_t) (HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 803543a: f7f7 fdab bl 802cf94 - 803543e: 4602 mov r2, r0 - 8035440: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035442: 1ad3 subs r3, r2, r3 - 8035444: 2b64 cmp r3, #100 ; 0x64 - 8035446: d901 bls.n 803544c + 803547a: f7f7 fdab bl 802cfd4 + 803547e: 4602 mov r2, r0 + 8035480: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035482: 1ad3 subs r3, r2, r3 + 8035484: 2b64 cmp r3, #100 ; 0x64 + 8035486: d901 bls.n 803548c { return HAL_TIMEOUT; - 8035448: 2303 movs r3, #3 - 803544a: e3aa b.n 8035ba2 + 8035488: 2303 movs r3, #3 + 803548a: e3aa b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) - 803544c: 4b63 ldr r3, [pc, #396] ; (80355dc ) - 803544e: 681b ldr r3, [r3, #0] - 8035450: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8035454: 2b00 cmp r3, #0 - 8035456: d0f0 beq.n 803543a - 8035458: e014 b.n 8035484 + 803548c: 4b63 ldr r3, [pc, #396] ; (803561c ) + 803548e: 681b ldr r3, [r3, #0] + 8035490: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8035494: 2b00 cmp r3, #0 + 8035496: d0f0 beq.n 803547a + 8035498: e014 b.n 80354c4 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 803545a: f7f7 fd9b bl 802cf94 - 803545e: 6278 str r0, [r7, #36] ; 0x24 + 803549a: f7f7 fd9b bl 802cfd4 + 803549e: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSE is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) - 8035460: e008 b.n 8035474 + 80354a0: e008 b.n 80354b4 { if((uint32_t) (HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE) - 8035462: f7f7 fd97 bl 802cf94 - 8035466: 4602 mov r2, r0 - 8035468: 6a7b ldr r3, [r7, #36] ; 0x24 - 803546a: 1ad3 subs r3, r2, r3 - 803546c: 2b64 cmp r3, #100 ; 0x64 - 803546e: d901 bls.n 8035474 + 80354a2: f7f7 fd97 bl 802cfd4 + 80354a6: 4602 mov r2, r0 + 80354a8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80354aa: 1ad3 subs r3, r2, r3 + 80354ac: 2b64 cmp r3, #100 ; 0x64 + 80354ae: d901 bls.n 80354b4 { return HAL_TIMEOUT; - 8035470: 2303 movs r3, #3 - 8035472: e396 b.n 8035ba2 + 80354b0: 2303 movs r3, #3 + 80354b2: e396 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) - 8035474: 4b59 ldr r3, [pc, #356] ; (80355dc ) - 8035476: 681b ldr r3, [r3, #0] - 8035478: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 803547c: 2b00 cmp r3, #0 - 803547e: d1f0 bne.n 8035462 - 8035480: e000 b.n 8035484 + 80354b4: 4b59 ldr r3, [pc, #356] ; (803561c ) + 80354b6: 681b ldr r3, [r3, #0] + 80354b8: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80354bc: 2b00 cmp r3, #0 + 80354be: d1f0 bne.n 80354a2 + 80354c0: e000 b.n 80354c4 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != 0U) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF)) - 8035482: bf00 nop + 80354c2: bf00 nop } } } } /*----------------------------- HSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI) - 8035484: 687b ldr r3, [r7, #4] - 8035486: 681b ldr r3, [r3, #0] - 8035488: f003 0302 and.w r3, r3, #2 - 803548c: 2b00 cmp r3, #0 - 803548e: f000 80cb beq.w 8035628 + 80354c4: 687b ldr r3, [r7, #4] + 80354c6: 681b ldr r3, [r3, #0] + 80354c8: f003 0302 and.w r3, r3, #2 + 80354cc: 2b00 cmp r3, #0 + 80354ce: f000 80cb beq.w 8035668 /* Check the parameters */ assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState)); assert_param(IS_RCC_HSICALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue)); /* When the HSI is used as system clock it will not be disabled */ const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8035492: 4b52 ldr r3, [pc, #328] ; (80355dc ) - 8035494: 691b ldr r3, [r3, #16] - 8035496: f003 0338 and.w r3, r3, #56 ; 0x38 - 803549a: 623b str r3, [r7, #32] + 80354d2: 4b52 ldr r3, [pc, #328] ; (803561c ) + 80354d4: 691b ldr r3, [r3, #16] + 80354d6: f003 0338 and.w r3, r3, #56 ; 0x38 + 80354da: 623b str r3, [r7, #32] const uint32_t temp_pllckselr = RCC->PLLCKSELR; - 803549c: 4b4f ldr r3, [pc, #316] ; (80355dc ) - 803549e: 6a9b ldr r3, [r3, #40] ; 0x28 - 80354a0: 61fb str r3, [r7, #28] + 80354dc: 4b4f ldr r3, [pc, #316] ; (803561c ) + 80354de: 6a9b ldr r3, [r3, #40] ; 0x28 + 80354e0: 61fb str r3, [r7, #28] if((temp_sysclksrc == RCC_CFGR_SWS_HSI) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_HSI))) - 80354a2: 6a3b ldr r3, [r7, #32] - 80354a4: 2b00 cmp r3, #0 - 80354a6: d007 beq.n 80354b8 - 80354a8: 6a3b ldr r3, [r7, #32] - 80354aa: 2b18 cmp r3, #24 - 80354ac: d156 bne.n 803555c - 80354ae: 69fb ldr r3, [r7, #28] - 80354b0: f003 0303 and.w r3, r3, #3 - 80354b4: 2b00 cmp r3, #0 - 80354b6: d151 bne.n 803555c + 80354e2: 6a3b ldr r3, [r7, #32] + 80354e4: 2b00 cmp r3, #0 + 80354e6: d007 beq.n 80354f8 + 80354e8: 6a3b ldr r3, [r7, #32] + 80354ea: 2b18 cmp r3, #24 + 80354ec: d156 bne.n 803559c + 80354ee: 69fb ldr r3, [r7, #28] + 80354f0: f003 0303 and.w r3, r3, #3 + 80354f4: 2b00 cmp r3, #0 + 80354f6: d151 bne.n 803559c { /* When HSI is used as system clock it will not be disabled */ if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 80354b8: 4b48 ldr r3, [pc, #288] ; (80355dc ) - 80354ba: 681b ldr r3, [r3, #0] - 80354bc: f003 0304 and.w r3, r3, #4 - 80354c0: 2b00 cmp r3, #0 - 80354c2: d005 beq.n 80354d0 - 80354c4: 687b ldr r3, [r7, #4] - 80354c6: 68db ldr r3, [r3, #12] - 80354c8: 2b00 cmp r3, #0 - 80354ca: d101 bne.n 80354d0 + 80354f8: 4b48 ldr r3, [pc, #288] ; (803561c ) + 80354fa: 681b ldr r3, [r3, #0] + 80354fc: f003 0304 and.w r3, r3, #4 + 8035500: 2b00 cmp r3, #0 + 8035502: d005 beq.n 8035510 + 8035504: 687b ldr r3, [r7, #4] + 8035506: 68db ldr r3, [r3, #12] + 8035508: 2b00 cmp r3, #0 + 803550a: d101 bne.n 8035510 { return HAL_ERROR; - 80354cc: 2301 movs r3, #1 - 80354ce: e368 b.n 8035ba2 + 803550c: 2301 movs r3, #1 + 803550e: e368 b.n 8035be2 } /* Otherwise, only HSI division and calibration are allowed */ else { /* Enable the Internal High Speed oscillator (HSI, HSIDIV2, HSIDIV4, or HSIDIV8) */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIState); - 80354d0: 4b42 ldr r3, [pc, #264] ; (80355dc ) - 80354d2: 681b ldr r3, [r3, #0] - 80354d4: f023 0219 bic.w r2, r3, #25 - 80354d8: 687b ldr r3, [r7, #4] - 80354da: 68db ldr r3, [r3, #12] - 80354dc: 493f ldr r1, [pc, #252] ; (80355dc ) - 80354de: 4313 orrs r3, r2 - 80354e0: 600b str r3, [r1, #0] + 8035510: 4b42 ldr r3, [pc, #264] ; (803561c ) + 8035512: 681b ldr r3, [r3, #0] + 8035514: f023 0219 bic.w r2, r3, #25 + 8035518: 687b ldr r3, [r7, #4] + 803551a: 68db ldr r3, [r3, #12] + 803551c: 493f ldr r1, [pc, #252] ; (803561c ) + 803551e: 4313 orrs r3, r2 + 8035520: 600b str r3, [r1, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80354e2: f7f7 fd57 bl 802cf94 - 80354e6: 6278 str r0, [r7, #36] ; 0x24 + 8035522: f7f7 fd57 bl 802cfd4 + 8035526: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) - 80354e8: e008 b.n 80354fc + 8035528: e008 b.n 803553c { if((uint32_t) (HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 80354ea: f7f7 fd53 bl 802cf94 - 80354ee: 4602 mov r2, r0 - 80354f0: 6a7b ldr r3, [r7, #36] ; 0x24 - 80354f2: 1ad3 subs r3, r2, r3 - 80354f4: 2b02 cmp r3, #2 - 80354f6: d901 bls.n 80354fc + 803552a: f7f7 fd53 bl 802cfd4 + 803552e: 4602 mov r2, r0 + 8035530: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035532: 1ad3 subs r3, r2, r3 + 8035534: 2b02 cmp r3, #2 + 8035536: d901 bls.n 803553c { return HAL_TIMEOUT; - 80354f8: 2303 movs r3, #3 - 80354fa: e352 b.n 8035ba2 + 8035538: 2303 movs r3, #3 + 803553a: e352 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) - 80354fc: 4b37 ldr r3, [pc, #220] ; (80355dc ) - 80354fe: 681b ldr r3, [r3, #0] - 8035500: f003 0304 and.w r3, r3, #4 - 8035504: 2b00 cmp r3, #0 - 8035506: d0f0 beq.n 80354ea + 803553c: 4b37 ldr r3, [pc, #220] ; (803561c ) + 803553e: 681b ldr r3, [r3, #0] + 8035540: f003 0304 and.w r3, r3, #4 + 8035544: 2b00 cmp r3, #0 + 8035546: d0f0 beq.n 803552a } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8035508: f7f7 fd74 bl 802cff4 - 803550c: 4603 mov r3, r0 - 803550e: f241 0203 movw r2, #4099 ; 0x1003 - 8035512: 4293 cmp r3, r2 - 8035514: d817 bhi.n 8035546 - 8035516: 687b ldr r3, [r7, #4] - 8035518: 691b ldr r3, [r3, #16] - 803551a: 2b40 cmp r3, #64 ; 0x40 - 803551c: d108 bne.n 8035530 - 803551e: 4b2f ldr r3, [pc, #188] ; (80355dc ) - 8035520: 685b ldr r3, [r3, #4] - 8035522: f423 337c bic.w r3, r3, #258048 ; 0x3f000 - 8035526: 4a2d ldr r2, [pc, #180] ; (80355dc ) - 8035528: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 803552c: 6053 str r3, [r2, #4] + 8035548: f7f7 fd74 bl 802d034 + 803554c: 4603 mov r3, r0 + 803554e: f241 0203 movw r2, #4099 ; 0x1003 + 8035552: 4293 cmp r3, r2 + 8035554: d817 bhi.n 8035586 + 8035556: 687b ldr r3, [r7, #4] + 8035558: 691b ldr r3, [r3, #16] + 803555a: 2b40 cmp r3, #64 ; 0x40 + 803555c: d108 bne.n 8035570 + 803555e: 4b2f ldr r3, [pc, #188] ; (803561c ) + 8035560: 685b ldr r3, [r3, #4] + 8035562: f423 337c bic.w r3, r3, #258048 ; 0x3f000 + 8035566: 4a2d ldr r2, [pc, #180] ; (803561c ) + 8035568: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 803556c: 6053 str r3, [r2, #4] if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 803552e: e07b b.n 8035628 + 803556e: e07b b.n 8035668 __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8035530: 4b2a ldr r3, [pc, #168] ; (80355dc ) - 8035532: 685b ldr r3, [r3, #4] - 8035534: f423 327c bic.w r2, r3, #258048 ; 0x3f000 - 8035538: 687b ldr r3, [r7, #4] - 803553a: 691b ldr r3, [r3, #16] - 803553c: 031b lsls r3, r3, #12 - 803553e: 4927 ldr r1, [pc, #156] ; (80355dc ) - 8035540: 4313 orrs r3, r2 - 8035542: 604b str r3, [r1, #4] + 8035570: 4b2a ldr r3, [pc, #168] ; (803561c ) + 8035572: 685b ldr r3, [r3, #4] + 8035574: f423 327c bic.w r2, r3, #258048 ; 0x3f000 + 8035578: 687b ldr r3, [r7, #4] + 803557a: 691b ldr r3, [r3, #16] + 803557c: 031b lsls r3, r3, #12 + 803557e: 4927 ldr r1, [pc, #156] ; (803561c ) + 8035580: 4313 orrs r3, r2 + 8035582: 604b str r3, [r1, #4] if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 8035544: e070 b.n 8035628 + 8035584: e070 b.n 8035668 __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 8035546: 4b25 ldr r3, [pc, #148] ; (80355dc ) - 8035548: 685b ldr r3, [r3, #4] - 803554a: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 - 803554e: 687b ldr r3, [r7, #4] - 8035550: 691b ldr r3, [r3, #16] - 8035552: 061b lsls r3, r3, #24 - 8035554: 4921 ldr r1, [pc, #132] ; (80355dc ) - 8035556: 4313 orrs r3, r2 - 8035558: 604b str r3, [r1, #4] + 8035586: 4b25 ldr r3, [pc, #148] ; (803561c ) + 8035588: 685b ldr r3, [r3, #4] + 803558a: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 + 803558e: 687b ldr r3, [r7, #4] + 8035590: 691b ldr r3, [r3, #16] + 8035592: 061b lsls r3, r3, #24 + 8035594: 4921 ldr r1, [pc, #132] ; (803561c ) + 8035596: 4313 orrs r3, r2 + 8035598: 604b str r3, [r1, #4] if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) && (RCC_OscInitStruct->HSIState == RCC_HSI_OFF)) - 803555a: e065 b.n 8035628 + 803559a: e065 b.n 8035668 } else { /* Check the HSI State */ if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF) - 803555c: 687b ldr r3, [r7, #4] - 803555e: 68db ldr r3, [r3, #12] - 8035560: 2b00 cmp r3, #0 - 8035562: d048 beq.n 80355f6 + 803559c: 687b ldr r3, [r7, #4] + 803559e: 68db ldr r3, [r3, #12] + 80355a0: 2b00 cmp r3, #0 + 80355a2: d048 beq.n 8035636 { /* Enable the Internal High Speed oscillator (HSI, HSIDIV2,HSIDIV4, or HSIDIV8) */ __HAL_RCC_HSI_CONFIG(RCC_OscInitStruct->HSIState); - 8035564: 4b1d ldr r3, [pc, #116] ; (80355dc ) - 8035566: 681b ldr r3, [r3, #0] - 8035568: f023 0219 bic.w r2, r3, #25 - 803556c: 687b ldr r3, [r7, #4] - 803556e: 68db ldr r3, [r3, #12] - 8035570: 491a ldr r1, [pc, #104] ; (80355dc ) - 8035572: 4313 orrs r3, r2 - 8035574: 600b str r3, [r1, #0] + 80355a4: 4b1d ldr r3, [pc, #116] ; (803561c ) + 80355a6: 681b ldr r3, [r3, #0] + 80355a8: f023 0219 bic.w r2, r3, #25 + 80355ac: 687b ldr r3, [r7, #4] + 80355ae: 68db ldr r3, [r3, #12] + 80355b0: 491a ldr r1, [pc, #104] ; (803561c ) + 80355b2: 4313 orrs r3, r2 + 80355b4: 600b str r3, [r1, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035576: f7f7 fd0d bl 802cf94 - 803557a: 6278 str r0, [r7, #36] ; 0x24 + 80355b6: f7f7 fd0d bl 802cfd4 + 80355ba: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) - 803557c: e008 b.n 8035590 + 80355bc: e008 b.n 80355d0 { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 803557e: f7f7 fd09 bl 802cf94 - 8035582: 4602 mov r2, r0 - 8035584: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035586: 1ad3 subs r3, r2, r3 - 8035588: 2b02 cmp r3, #2 - 803558a: d901 bls.n 8035590 + 80355be: f7f7 fd09 bl 802cfd4 + 80355c2: 4602 mov r2, r0 + 80355c4: 6a7b ldr r3, [r7, #36] ; 0x24 + 80355c6: 1ad3 subs r3, r2, r3 + 80355c8: 2b02 cmp r3, #2 + 80355ca: d901 bls.n 80355d0 { return HAL_TIMEOUT; - 803558c: 2303 movs r3, #3 - 803558e: e308 b.n 8035ba2 + 80355cc: 2303 movs r3, #3 + 80355ce: e308 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) - 8035590: 4b12 ldr r3, [pc, #72] ; (80355dc ) - 8035592: 681b ldr r3, [r3, #0] - 8035594: f003 0304 and.w r3, r3, #4 - 8035598: 2b00 cmp r3, #0 - 803559a: d0f0 beq.n 803557e + 80355d0: 4b12 ldr r3, [pc, #72] ; (803561c ) + 80355d2: 681b ldr r3, [r3, #0] + 80355d4: f003 0304 and.w r3, r3, #4 + 80355d8: 2b00 cmp r3, #0 + 80355da: d0f0 beq.n 80355be } } /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/ __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue); - 803559c: f7f7 fd2a bl 802cff4 - 80355a0: 4603 mov r3, r0 - 80355a2: f241 0203 movw r2, #4099 ; 0x1003 - 80355a6: 4293 cmp r3, r2 - 80355a8: d81a bhi.n 80355e0 - 80355aa: 687b ldr r3, [r7, #4] - 80355ac: 691b ldr r3, [r3, #16] - 80355ae: 2b40 cmp r3, #64 ; 0x40 - 80355b0: d108 bne.n 80355c4 - 80355b2: 4b0a ldr r3, [pc, #40] ; (80355dc ) - 80355b4: 685b ldr r3, [r3, #4] - 80355b6: f423 337c bic.w r3, r3, #258048 ; 0x3f000 - 80355ba: 4a08 ldr r2, [pc, #32] ; (80355dc ) - 80355bc: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 80355c0: 6053 str r3, [r2, #4] - 80355c2: e031 b.n 8035628 - 80355c4: 4b05 ldr r3, [pc, #20] ; (80355dc ) - 80355c6: 685b ldr r3, [r3, #4] - 80355c8: f423 327c bic.w r2, r3, #258048 ; 0x3f000 - 80355cc: 687b ldr r3, [r7, #4] - 80355ce: 691b ldr r3, [r3, #16] - 80355d0: 031b lsls r3, r3, #12 - 80355d2: 4902 ldr r1, [pc, #8] ; (80355dc ) - 80355d4: 4313 orrs r3, r2 - 80355d6: 604b str r3, [r1, #4] - 80355d8: e026 b.n 8035628 - 80355da: bf00 nop - 80355dc: 58024400 .word 0x58024400 - 80355e0: 4b9a ldr r3, [pc, #616] ; (803584c ) - 80355e2: 685b ldr r3, [r3, #4] - 80355e4: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 - 80355e8: 687b ldr r3, [r7, #4] - 80355ea: 691b ldr r3, [r3, #16] - 80355ec: 061b lsls r3, r3, #24 - 80355ee: 4997 ldr r1, [pc, #604] ; (803584c ) - 80355f0: 4313 orrs r3, r2 - 80355f2: 604b str r3, [r1, #4] - 80355f4: e018 b.n 8035628 + 80355dc: f7f7 fd2a bl 802d034 + 80355e0: 4603 mov r3, r0 + 80355e2: f241 0203 movw r2, #4099 ; 0x1003 + 80355e6: 4293 cmp r3, r2 + 80355e8: d81a bhi.n 8035620 + 80355ea: 687b ldr r3, [r7, #4] + 80355ec: 691b ldr r3, [r3, #16] + 80355ee: 2b40 cmp r3, #64 ; 0x40 + 80355f0: d108 bne.n 8035604 + 80355f2: 4b0a ldr r3, [pc, #40] ; (803561c ) + 80355f4: 685b ldr r3, [r3, #4] + 80355f6: f423 337c bic.w r3, r3, #258048 ; 0x3f000 + 80355fa: 4a08 ldr r2, [pc, #32] ; (803561c ) + 80355fc: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8035600: 6053 str r3, [r2, #4] + 8035602: e031 b.n 8035668 + 8035604: 4b05 ldr r3, [pc, #20] ; (803561c ) + 8035606: 685b ldr r3, [r3, #4] + 8035608: f423 327c bic.w r2, r3, #258048 ; 0x3f000 + 803560c: 687b ldr r3, [r7, #4] + 803560e: 691b ldr r3, [r3, #16] + 8035610: 031b lsls r3, r3, #12 + 8035612: 4902 ldr r1, [pc, #8] ; (803561c ) + 8035614: 4313 orrs r3, r2 + 8035616: 604b str r3, [r1, #4] + 8035618: e026 b.n 8035668 + 803561a: bf00 nop + 803561c: 58024400 .word 0x58024400 + 8035620: 4b9a ldr r3, [pc, #616] ; (803588c ) + 8035622: 685b ldr r3, [r3, #4] + 8035624: f023 42fe bic.w r2, r3, #2130706432 ; 0x7f000000 + 8035628: 687b ldr r3, [r7, #4] + 803562a: 691b ldr r3, [r3, #16] + 803562c: 061b lsls r3, r3, #24 + 803562e: 4997 ldr r1, [pc, #604] ; (803588c ) + 8035630: 4313 orrs r3, r2 + 8035632: 604b str r3, [r1, #4] + 8035634: e018 b.n 8035668 } else { /* Disable the Internal High Speed oscillator (HSI). */ __HAL_RCC_HSI_DISABLE(); - 80355f6: 4b95 ldr r3, [pc, #596] ; (803584c ) - 80355f8: 681b ldr r3, [r3, #0] - 80355fa: 4a94 ldr r2, [pc, #592] ; (803584c ) - 80355fc: f023 0301 bic.w r3, r3, #1 - 8035600: 6013 str r3, [r2, #0] + 8035636: 4b95 ldr r3, [pc, #596] ; (803588c ) + 8035638: 681b ldr r3, [r3, #0] + 803563a: 4a94 ldr r2, [pc, #592] ; (803588c ) + 803563c: f023 0301 bic.w r3, r3, #1 + 8035640: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035602: f7f7 fcc7 bl 802cf94 - 8035606: 6278 str r0, [r7, #36] ; 0x24 + 8035642: f7f7 fcc7 bl 802cfd4 + 8035646: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSI is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) - 8035608: e008 b.n 803561c + 8035648: e008 b.n 803565c { if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE) - 803560a: f7f7 fcc3 bl 802cf94 - 803560e: 4602 mov r2, r0 - 8035610: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035612: 1ad3 subs r3, r2, r3 - 8035614: 2b02 cmp r3, #2 - 8035616: d901 bls.n 803561c + 803564a: f7f7 fcc3 bl 802cfd4 + 803564e: 4602 mov r2, r0 + 8035650: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035652: 1ad3 subs r3, r2, r3 + 8035654: 2b02 cmp r3, #2 + 8035656: d901 bls.n 803565c { return HAL_TIMEOUT; - 8035618: 2303 movs r3, #3 - 803561a: e2c2 b.n 8035ba2 + 8035658: 2303 movs r3, #3 + 803565a: e2c2 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != 0U) - 803561c: 4b8b ldr r3, [pc, #556] ; (803584c ) - 803561e: 681b ldr r3, [r3, #0] - 8035620: f003 0304 and.w r3, r3, #4 - 8035624: 2b00 cmp r3, #0 - 8035626: d1f0 bne.n 803560a + 803565c: 4b8b ldr r3, [pc, #556] ; (803588c ) + 803565e: 681b ldr r3, [r3, #0] + 8035660: f003 0304 and.w r3, r3, #4 + 8035664: 2b00 cmp r3, #0 + 8035666: d1f0 bne.n 803564a } } } } /*----------------------------- CSI Configuration --------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_CSI) == RCC_OSCILLATORTYPE_CSI) - 8035628: 687b ldr r3, [r7, #4] - 803562a: 681b ldr r3, [r3, #0] - 803562c: f003 0310 and.w r3, r3, #16 - 8035630: 2b00 cmp r3, #0 - 8035632: f000 80a9 beq.w 8035788 + 8035668: 687b ldr r3, [r7, #4] + 803566a: 681b ldr r3, [r3, #0] + 803566c: f003 0310 and.w r3, r3, #16 + 8035670: 2b00 cmp r3, #0 + 8035672: f000 80a9 beq.w 80357c8 /* Check the parameters */ assert_param(IS_RCC_CSI(RCC_OscInitStruct->CSIState)); assert_param(IS_RCC_CSICALIBRATION_VALUE(RCC_OscInitStruct->CSICalibrationValue)); /* When the CSI is used as system clock it will not disabled */ const uint32_t temp_sysclksrc = __HAL_RCC_GET_SYSCLK_SOURCE(); - 8035636: 4b85 ldr r3, [pc, #532] ; (803584c ) - 8035638: 691b ldr r3, [r3, #16] - 803563a: f003 0338 and.w r3, r3, #56 ; 0x38 - 803563e: 61bb str r3, [r7, #24] + 8035676: 4b85 ldr r3, [pc, #532] ; (803588c ) + 8035678: 691b ldr r3, [r3, #16] + 803567a: f003 0338 and.w r3, r3, #56 ; 0x38 + 803567e: 61bb str r3, [r7, #24] const uint32_t temp_pllckselr = RCC->PLLCKSELR; - 8035640: 4b82 ldr r3, [pc, #520] ; (803584c ) - 8035642: 6a9b ldr r3, [r3, #40] ; 0x28 - 8035644: 617b str r3, [r7, #20] + 8035680: 4b82 ldr r3, [pc, #520] ; (803588c ) + 8035682: 6a9b ldr r3, [r3, #40] ; 0x28 + 8035684: 617b str r3, [r7, #20] if((temp_sysclksrc == RCC_CFGR_SWS_CSI) || ((temp_sysclksrc == RCC_CFGR_SWS_PLL1) && ((temp_pllckselr & RCC_PLLCKSELR_PLLSRC) == RCC_PLLCKSELR_PLLSRC_CSI))) - 8035646: 69bb ldr r3, [r7, #24] - 8035648: 2b08 cmp r3, #8 - 803564a: d007 beq.n 803565c - 803564c: 69bb ldr r3, [r7, #24] - 803564e: 2b18 cmp r3, #24 - 8035650: d13a bne.n 80356c8 - 8035652: 697b ldr r3, [r7, #20] - 8035654: f003 0303 and.w r3, r3, #3 - 8035658: 2b01 cmp r3, #1 - 803565a: d135 bne.n 80356c8 + 8035686: 69bb ldr r3, [r7, #24] + 8035688: 2b08 cmp r3, #8 + 803568a: d007 beq.n 803569c + 803568c: 69bb ldr r3, [r7, #24] + 803568e: 2b18 cmp r3, #24 + 8035690: d13a bne.n 8035708 + 8035692: 697b ldr r3, [r7, #20] + 8035694: f003 0303 and.w r3, r3, #3 + 8035698: 2b01 cmp r3, #1 + 803569a: d135 bne.n 8035708 { /* When CSI is used as system clock it will not disabled */ if((__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) && (RCC_OscInitStruct->CSIState != RCC_CSI_ON)) - 803565c: 4b7b ldr r3, [pc, #492] ; (803584c ) - 803565e: 681b ldr r3, [r3, #0] - 8035660: f403 7380 and.w r3, r3, #256 ; 0x100 - 8035664: 2b00 cmp r3, #0 - 8035666: d005 beq.n 8035674 - 8035668: 687b ldr r3, [r7, #4] - 803566a: 69db ldr r3, [r3, #28] - 803566c: 2b80 cmp r3, #128 ; 0x80 - 803566e: d001 beq.n 8035674 + 803569c: 4b7b ldr r3, [pc, #492] ; (803588c ) + 803569e: 681b ldr r3, [r3, #0] + 80356a0: f403 7380 and.w r3, r3, #256 ; 0x100 + 80356a4: 2b00 cmp r3, #0 + 80356a6: d005 beq.n 80356b4 + 80356a8: 687b ldr r3, [r7, #4] + 80356aa: 69db ldr r3, [r3, #28] + 80356ac: 2b80 cmp r3, #128 ; 0x80 + 80356ae: d001 beq.n 80356b4 { return HAL_ERROR; - 8035670: 2301 movs r3, #1 - 8035672: e296 b.n 8035ba2 + 80356b0: 2301 movs r3, #1 + 80356b2: e296 b.n 8035be2 } /* Otherwise, just the calibration is allowed */ else { /* Adjusts the Internal High Speed oscillator (CSI) calibration value.*/ __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue); - 8035674: f7f7 fcbe bl 802cff4 - 8035678: 4603 mov r3, r0 - 803567a: f241 0203 movw r2, #4099 ; 0x1003 - 803567e: 4293 cmp r3, r2 - 8035680: d817 bhi.n 80356b2 - 8035682: 687b ldr r3, [r7, #4] - 8035684: 6a1b ldr r3, [r3, #32] - 8035686: 2b20 cmp r3, #32 - 8035688: d108 bne.n 803569c - 803568a: 4b70 ldr r3, [pc, #448] ; (803584c ) - 803568c: 685b ldr r3, [r3, #4] - 803568e: f023 43f8 bic.w r3, r3, #2080374784 ; 0x7c000000 - 8035692: 4a6e ldr r2, [pc, #440] ; (803584c ) - 8035694: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 - 8035698: 6053 str r3, [r2, #4] + 80356b4: f7f7 fcbe bl 802d034 + 80356b8: 4603 mov r3, r0 + 80356ba: f241 0203 movw r2, #4099 ; 0x1003 + 80356be: 4293 cmp r3, r2 + 80356c0: d817 bhi.n 80356f2 + 80356c2: 687b ldr r3, [r7, #4] + 80356c4: 6a1b ldr r3, [r3, #32] + 80356c6: 2b20 cmp r3, #32 + 80356c8: d108 bne.n 80356dc + 80356ca: 4b70 ldr r3, [pc, #448] ; (803588c ) + 80356cc: 685b ldr r3, [r3, #4] + 80356ce: f023 43f8 bic.w r3, r3, #2080374784 ; 0x7c000000 + 80356d2: 4a6e ldr r2, [pc, #440] ; (803588c ) + 80356d4: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 + 80356d8: 6053 str r3, [r2, #4] if((__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) && (RCC_OscInitStruct->CSIState != RCC_CSI_ON)) - 803569a: e075 b.n 8035788 + 80356da: e075 b.n 80357c8 __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue); - 803569c: 4b6b ldr r3, [pc, #428] ; (803584c ) - 803569e: 685b ldr r3, [r3, #4] - 80356a0: f023 42f8 bic.w r2, r3, #2080374784 ; 0x7c000000 - 80356a4: 687b ldr r3, [r7, #4] - 80356a6: 6a1b ldr r3, [r3, #32] - 80356a8: 069b lsls r3, r3, #26 - 80356aa: 4968 ldr r1, [pc, #416] ; (803584c ) - 80356ac: 4313 orrs r3, r2 - 80356ae: 604b str r3, [r1, #4] + 80356dc: 4b6b ldr r3, [pc, #428] ; (803588c ) + 80356de: 685b ldr r3, [r3, #4] + 80356e0: f023 42f8 bic.w r2, r3, #2080374784 ; 0x7c000000 + 80356e4: 687b ldr r3, [r7, #4] + 80356e6: 6a1b ldr r3, [r3, #32] + 80356e8: 069b lsls r3, r3, #26 + 80356ea: 4968 ldr r1, [pc, #416] ; (803588c ) + 80356ec: 4313 orrs r3, r2 + 80356ee: 604b str r3, [r1, #4] if((__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) && (RCC_OscInitStruct->CSIState != RCC_CSI_ON)) - 80356b0: e06a b.n 8035788 + 80356f0: e06a b.n 80357c8 __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue); - 80356b2: 4b66 ldr r3, [pc, #408] ; (803584c ) - 80356b4: 68db ldr r3, [r3, #12] - 80356b6: f023 527c bic.w r2, r3, #1056964608 ; 0x3f000000 - 80356ba: 687b ldr r3, [r7, #4] - 80356bc: 6a1b ldr r3, [r3, #32] - 80356be: 061b lsls r3, r3, #24 - 80356c0: 4962 ldr r1, [pc, #392] ; (803584c ) - 80356c2: 4313 orrs r3, r2 - 80356c4: 60cb str r3, [r1, #12] + 80356f2: 4b66 ldr r3, [pc, #408] ; (803588c ) + 80356f4: 68db ldr r3, [r3, #12] + 80356f6: f023 527c bic.w r2, r3, #1056964608 ; 0x3f000000 + 80356fa: 687b ldr r3, [r7, #4] + 80356fc: 6a1b ldr r3, [r3, #32] + 80356fe: 061b lsls r3, r3, #24 + 8035700: 4962 ldr r1, [pc, #392] ; (803588c ) + 8035702: 4313 orrs r3, r2 + 8035704: 60cb str r3, [r1, #12] if((__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) && (RCC_OscInitStruct->CSIState != RCC_CSI_ON)) - 80356c6: e05f b.n 8035788 + 8035706: e05f b.n 80357c8 } } else { /* Check the CSI State */ if((RCC_OscInitStruct->CSIState)!= RCC_CSI_OFF) - 80356c8: 687b ldr r3, [r7, #4] - 80356ca: 69db ldr r3, [r3, #28] - 80356cc: 2b00 cmp r3, #0 - 80356ce: d042 beq.n 8035756 + 8035708: 687b ldr r3, [r7, #4] + 803570a: 69db ldr r3, [r3, #28] + 803570c: 2b00 cmp r3, #0 + 803570e: d042 beq.n 8035796 { /* Enable the Internal High Speed oscillator (CSI). */ __HAL_RCC_CSI_ENABLE(); - 80356d0: 4b5e ldr r3, [pc, #376] ; (803584c ) - 80356d2: 681b ldr r3, [r3, #0] - 80356d4: 4a5d ldr r2, [pc, #372] ; (803584c ) - 80356d6: f043 0380 orr.w r3, r3, #128 ; 0x80 - 80356da: 6013 str r3, [r2, #0] + 8035710: 4b5e ldr r3, [pc, #376] ; (803588c ) + 8035712: 681b ldr r3, [r3, #0] + 8035714: 4a5d ldr r2, [pc, #372] ; (803588c ) + 8035716: f043 0380 orr.w r3, r3, #128 ; 0x80 + 803571a: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80356dc: f7f7 fc5a bl 802cf94 - 80356e0: 6278 str r0, [r7, #36] ; 0x24 + 803571c: f7f7 fc5a bl 802cfd4 + 8035720: 6278 str r0, [r7, #36] ; 0x24 /* Wait till CSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) == 0U) - 80356e2: e008 b.n 80356f6 + 8035722: e008 b.n 8035736 { if((HAL_GetTick() - tickstart ) > CSI_TIMEOUT_VALUE) - 80356e4: f7f7 fc56 bl 802cf94 - 80356e8: 4602 mov r2, r0 - 80356ea: 6a7b ldr r3, [r7, #36] ; 0x24 - 80356ec: 1ad3 subs r3, r2, r3 - 80356ee: 2b02 cmp r3, #2 - 80356f0: d901 bls.n 80356f6 + 8035724: f7f7 fc56 bl 802cfd4 + 8035728: 4602 mov r2, r0 + 803572a: 6a7b ldr r3, [r7, #36] ; 0x24 + 803572c: 1ad3 subs r3, r2, r3 + 803572e: 2b02 cmp r3, #2 + 8035730: d901 bls.n 8035736 { return HAL_TIMEOUT; - 80356f2: 2303 movs r3, #3 - 80356f4: e255 b.n 8035ba2 + 8035732: 2303 movs r3, #3 + 8035734: e255 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) == 0U) - 80356f6: 4b55 ldr r3, [pc, #340] ; (803584c ) - 80356f8: 681b ldr r3, [r3, #0] - 80356fa: f403 7380 and.w r3, r3, #256 ; 0x100 - 80356fe: 2b00 cmp r3, #0 - 8035700: d0f0 beq.n 80356e4 + 8035736: 4b55 ldr r3, [pc, #340] ; (803588c ) + 8035738: 681b ldr r3, [r3, #0] + 803573a: f403 7380 and.w r3, r3, #256 ; 0x100 + 803573e: 2b00 cmp r3, #0 + 8035740: d0f0 beq.n 8035724 } } /* Adjusts the Internal High Speed oscillator (CSI) calibration value.*/ __HAL_RCC_CSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->CSICalibrationValue); - 8035702: f7f7 fc77 bl 802cff4 - 8035706: 4603 mov r3, r0 - 8035708: f241 0203 movw r2, #4099 ; 0x1003 - 803570c: 4293 cmp r3, r2 - 803570e: d817 bhi.n 8035740 - 8035710: 687b ldr r3, [r7, #4] - 8035712: 6a1b ldr r3, [r3, #32] - 8035714: 2b20 cmp r3, #32 - 8035716: d108 bne.n 803572a - 8035718: 4b4c ldr r3, [pc, #304] ; (803584c ) - 803571a: 685b ldr r3, [r3, #4] - 803571c: f023 43f8 bic.w r3, r3, #2080374784 ; 0x7c000000 - 8035720: 4a4a ldr r2, [pc, #296] ; (803584c ) - 8035722: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 - 8035726: 6053 str r3, [r2, #4] - 8035728: e02e b.n 8035788 - 803572a: 4b48 ldr r3, [pc, #288] ; (803584c ) - 803572c: 685b ldr r3, [r3, #4] - 803572e: f023 42f8 bic.w r2, r3, #2080374784 ; 0x7c000000 - 8035732: 687b ldr r3, [r7, #4] - 8035734: 6a1b ldr r3, [r3, #32] - 8035736: 069b lsls r3, r3, #26 - 8035738: 4944 ldr r1, [pc, #272] ; (803584c ) - 803573a: 4313 orrs r3, r2 - 803573c: 604b str r3, [r1, #4] - 803573e: e023 b.n 8035788 - 8035740: 4b42 ldr r3, [pc, #264] ; (803584c ) - 8035742: 68db ldr r3, [r3, #12] - 8035744: f023 527c bic.w r2, r3, #1056964608 ; 0x3f000000 - 8035748: 687b ldr r3, [r7, #4] - 803574a: 6a1b ldr r3, [r3, #32] - 803574c: 061b lsls r3, r3, #24 - 803574e: 493f ldr r1, [pc, #252] ; (803584c ) - 8035750: 4313 orrs r3, r2 - 8035752: 60cb str r3, [r1, #12] - 8035754: e018 b.n 8035788 + 8035742: f7f7 fc77 bl 802d034 + 8035746: 4603 mov r3, r0 + 8035748: f241 0203 movw r2, #4099 ; 0x1003 + 803574c: 4293 cmp r3, r2 + 803574e: d817 bhi.n 8035780 + 8035750: 687b ldr r3, [r7, #4] + 8035752: 6a1b ldr r3, [r3, #32] + 8035754: 2b20 cmp r3, #32 + 8035756: d108 bne.n 803576a + 8035758: 4b4c ldr r3, [pc, #304] ; (803588c ) + 803575a: 685b ldr r3, [r3, #4] + 803575c: f023 43f8 bic.w r3, r3, #2080374784 ; 0x7c000000 + 8035760: 4a4a ldr r2, [pc, #296] ; (803588c ) + 8035762: f043 4380 orr.w r3, r3, #1073741824 ; 0x40000000 + 8035766: 6053 str r3, [r2, #4] + 8035768: e02e b.n 80357c8 + 803576a: 4b48 ldr r3, [pc, #288] ; (803588c ) + 803576c: 685b ldr r3, [r3, #4] + 803576e: f023 42f8 bic.w r2, r3, #2080374784 ; 0x7c000000 + 8035772: 687b ldr r3, [r7, #4] + 8035774: 6a1b ldr r3, [r3, #32] + 8035776: 069b lsls r3, r3, #26 + 8035778: 4944 ldr r1, [pc, #272] ; (803588c ) + 803577a: 4313 orrs r3, r2 + 803577c: 604b str r3, [r1, #4] + 803577e: e023 b.n 80357c8 + 8035780: 4b42 ldr r3, [pc, #264] ; (803588c ) + 8035782: 68db ldr r3, [r3, #12] + 8035784: f023 527c bic.w r2, r3, #1056964608 ; 0x3f000000 + 8035788: 687b ldr r3, [r7, #4] + 803578a: 6a1b ldr r3, [r3, #32] + 803578c: 061b lsls r3, r3, #24 + 803578e: 493f ldr r1, [pc, #252] ; (803588c ) + 8035790: 4313 orrs r3, r2 + 8035792: 60cb str r3, [r1, #12] + 8035794: e018 b.n 80357c8 } else { /* Disable the Internal High Speed oscillator (CSI). */ __HAL_RCC_CSI_DISABLE(); - 8035756: 4b3d ldr r3, [pc, #244] ; (803584c ) - 8035758: 681b ldr r3, [r3, #0] - 803575a: 4a3c ldr r2, [pc, #240] ; (803584c ) - 803575c: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8035760: 6013 str r3, [r2, #0] + 8035796: 4b3d ldr r3, [pc, #244] ; (803588c ) + 8035798: 681b ldr r3, [r3, #0] + 803579a: 4a3c ldr r2, [pc, #240] ; (803588c ) + 803579c: f023 0380 bic.w r3, r3, #128 ; 0x80 + 80357a0: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035762: f7f7 fc17 bl 802cf94 - 8035766: 6278 str r0, [r7, #36] ; 0x24 + 80357a2: f7f7 fc17 bl 802cfd4 + 80357a6: 6278 str r0, [r7, #36] ; 0x24 /* Wait till CSI is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) - 8035768: e008 b.n 803577c + 80357a8: e008 b.n 80357bc { if((HAL_GetTick() - tickstart ) > CSI_TIMEOUT_VALUE) - 803576a: f7f7 fc13 bl 802cf94 - 803576e: 4602 mov r2, r0 - 8035770: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035772: 1ad3 subs r3, r2, r3 - 8035774: 2b02 cmp r3, #2 - 8035776: d901 bls.n 803577c + 80357aa: f7f7 fc13 bl 802cfd4 + 80357ae: 4602 mov r2, r0 + 80357b0: 6a7b ldr r3, [r7, #36] ; 0x24 + 80357b2: 1ad3 subs r3, r2, r3 + 80357b4: 2b02 cmp r3, #2 + 80357b6: d901 bls.n 80357bc { return HAL_TIMEOUT; - 8035778: 2303 movs r3, #3 - 803577a: e212 b.n 8035ba2 + 80357b8: 2303 movs r3, #3 + 80357ba: e212 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) != 0U) - 803577c: 4b33 ldr r3, [pc, #204] ; (803584c ) - 803577e: 681b ldr r3, [r3, #0] - 8035780: f403 7380 and.w r3, r3, #256 ; 0x100 - 8035784: 2b00 cmp r3, #0 - 8035786: d1f0 bne.n 803576a + 80357bc: 4b33 ldr r3, [pc, #204] ; (803588c ) + 80357be: 681b ldr r3, [r3, #0] + 80357c0: f403 7380 and.w r3, r3, #256 ; 0x100 + 80357c4: 2b00 cmp r3, #0 + 80357c6: d1f0 bne.n 80357aa } } } } /*------------------------------ LSI Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI) - 8035788: 687b ldr r3, [r7, #4] - 803578a: 681b ldr r3, [r3, #0] - 803578c: f003 0308 and.w r3, r3, #8 - 8035790: 2b00 cmp r3, #0 - 8035792: d036 beq.n 8035802 + 80357c8: 687b ldr r3, [r7, #4] + 80357ca: 681b ldr r3, [r3, #0] + 80357cc: f003 0308 and.w r3, r3, #8 + 80357d0: 2b00 cmp r3, #0 + 80357d2: d036 beq.n 8035842 { /* Check the parameters */ assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState)); /* Check the LSI State */ if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF) - 8035794: 687b ldr r3, [r7, #4] - 8035796: 695b ldr r3, [r3, #20] - 8035798: 2b00 cmp r3, #0 - 803579a: d019 beq.n 80357d0 + 80357d4: 687b ldr r3, [r7, #4] + 80357d6: 695b ldr r3, [r3, #20] + 80357d8: 2b00 cmp r3, #0 + 80357da: d019 beq.n 8035810 { /* Enable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_ENABLE(); - 803579c: 4b2b ldr r3, [pc, #172] ; (803584c ) - 803579e: 6f5b ldr r3, [r3, #116] ; 0x74 - 80357a0: 4a2a ldr r2, [pc, #168] ; (803584c ) - 80357a2: f043 0301 orr.w r3, r3, #1 - 80357a6: 6753 str r3, [r2, #116] ; 0x74 + 80357dc: 4b2b ldr r3, [pc, #172] ; (803588c ) + 80357de: 6f5b ldr r3, [r3, #116] ; 0x74 + 80357e0: 4a2a ldr r2, [pc, #168] ; (803588c ) + 80357e2: f043 0301 orr.w r3, r3, #1 + 80357e6: 6753 str r3, [r2, #116] ; 0x74 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80357a8: f7f7 fbf4 bl 802cf94 - 80357ac: 6278 str r0, [r7, #36] ; 0x24 + 80357e8: f7f7 fbf4 bl 802cfd4 + 80357ec: 6278 str r0, [r7, #36] ; 0x24 /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) - 80357ae: e008 b.n 80357c2 + 80357ee: e008 b.n 8035802 { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 80357b0: f7f7 fbf0 bl 802cf94 - 80357b4: 4602 mov r2, r0 - 80357b6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80357b8: 1ad3 subs r3, r2, r3 - 80357ba: 2b02 cmp r3, #2 - 80357bc: d901 bls.n 80357c2 + 80357f0: f7f7 fbf0 bl 802cfd4 + 80357f4: 4602 mov r2, r0 + 80357f6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80357f8: 1ad3 subs r3, r2, r3 + 80357fa: 2b02 cmp r3, #2 + 80357fc: d901 bls.n 8035802 { return HAL_TIMEOUT; - 80357be: 2303 movs r3, #3 - 80357c0: e1ef b.n 8035ba2 + 80357fe: 2303 movs r3, #3 + 8035800: e1ef b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == 0U) - 80357c2: 4b22 ldr r3, [pc, #136] ; (803584c ) - 80357c4: 6f5b ldr r3, [r3, #116] ; 0x74 - 80357c6: f003 0302 and.w r3, r3, #2 - 80357ca: 2b00 cmp r3, #0 - 80357cc: d0f0 beq.n 80357b0 - 80357ce: e018 b.n 8035802 + 8035802: 4b22 ldr r3, [pc, #136] ; (803588c ) + 8035804: 6f5b ldr r3, [r3, #116] ; 0x74 + 8035806: f003 0302 and.w r3, r3, #2 + 803580a: 2b00 cmp r3, #0 + 803580c: d0f0 beq.n 80357f0 + 803580e: e018 b.n 8035842 } } else { /* Disable the Internal Low Speed oscillator (LSI). */ __HAL_RCC_LSI_DISABLE(); - 80357d0: 4b1e ldr r3, [pc, #120] ; (803584c ) - 80357d2: 6f5b ldr r3, [r3, #116] ; 0x74 - 80357d4: 4a1d ldr r2, [pc, #116] ; (803584c ) - 80357d6: f023 0301 bic.w r3, r3, #1 - 80357da: 6753 str r3, [r2, #116] ; 0x74 + 8035810: 4b1e ldr r3, [pc, #120] ; (803588c ) + 8035812: 6f5b ldr r3, [r3, #116] ; 0x74 + 8035814: 4a1d ldr r2, [pc, #116] ; (803588c ) + 8035816: f023 0301 bic.w r3, r3, #1 + 803581a: 6753 str r3, [r2, #116] ; 0x74 /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80357dc: f7f7 fbda bl 802cf94 - 80357e0: 6278 str r0, [r7, #36] ; 0x24 + 803581c: f7f7 fbda bl 802cfd4 + 8035820: 6278 str r0, [r7, #36] ; 0x24 /* Wait till LSI is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) - 80357e2: e008 b.n 80357f6 + 8035822: e008 b.n 8035836 { if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE) - 80357e4: f7f7 fbd6 bl 802cf94 - 80357e8: 4602 mov r2, r0 - 80357ea: 6a7b ldr r3, [r7, #36] ; 0x24 - 80357ec: 1ad3 subs r3, r2, r3 - 80357ee: 2b02 cmp r3, #2 - 80357f0: d901 bls.n 80357f6 + 8035824: f7f7 fbd6 bl 802cfd4 + 8035828: 4602 mov r2, r0 + 803582a: 6a7b ldr r3, [r7, #36] ; 0x24 + 803582c: 1ad3 subs r3, r2, r3 + 803582e: 2b02 cmp r3, #2 + 8035830: d901 bls.n 8035836 { return HAL_TIMEOUT; - 80357f2: 2303 movs r3, #3 - 80357f4: e1d5 b.n 8035ba2 + 8035832: 2303 movs r3, #3 + 8035834: e1d5 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != 0U) - 80357f6: 4b15 ldr r3, [pc, #84] ; (803584c ) - 80357f8: 6f5b ldr r3, [r3, #116] ; 0x74 - 80357fa: f003 0302 and.w r3, r3, #2 - 80357fe: 2b00 cmp r3, #0 - 8035800: d1f0 bne.n 80357e4 + 8035836: 4b15 ldr r3, [pc, #84] ; (803588c ) + 8035838: 6f5b ldr r3, [r3, #116] ; 0x74 + 803583a: f003 0302 and.w r3, r3, #2 + 803583e: 2b00 cmp r3, #0 + 8035840: d1f0 bne.n 8035824 } } } /*------------------------------ HSI48 Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI48) == RCC_OSCILLATORTYPE_HSI48) - 8035802: 687b ldr r3, [r7, #4] - 8035804: 681b ldr r3, [r3, #0] - 8035806: f003 0320 and.w r3, r3, #32 - 803580a: 2b00 cmp r3, #0 - 803580c: d039 beq.n 8035882 + 8035842: 687b ldr r3, [r7, #4] + 8035844: 681b ldr r3, [r3, #0] + 8035846: f003 0320 and.w r3, r3, #32 + 803584a: 2b00 cmp r3, #0 + 803584c: d039 beq.n 80358c2 { /* Check the parameters */ assert_param(IS_RCC_HSI48(RCC_OscInitStruct->HSI48State)); /* Check the HSI48 State */ if((RCC_OscInitStruct->HSI48State)!= RCC_HSI48_OFF) - 803580e: 687b ldr r3, [r7, #4] - 8035810: 699b ldr r3, [r3, #24] - 8035812: 2b00 cmp r3, #0 - 8035814: d01c beq.n 8035850 + 803584e: 687b ldr r3, [r7, #4] + 8035850: 699b ldr r3, [r3, #24] + 8035852: 2b00 cmp r3, #0 + 8035854: d01c beq.n 8035890 { /* Enable the Internal Low Speed oscillator (HSI48). */ __HAL_RCC_HSI48_ENABLE(); - 8035816: 4b0d ldr r3, [pc, #52] ; (803584c ) - 8035818: 681b ldr r3, [r3, #0] - 803581a: 4a0c ldr r2, [pc, #48] ; (803584c ) - 803581c: f443 5380 orr.w r3, r3, #4096 ; 0x1000 - 8035820: 6013 str r3, [r2, #0] + 8035856: 4b0d ldr r3, [pc, #52] ; (803588c ) + 8035858: 681b ldr r3, [r3, #0] + 803585a: 4a0c ldr r2, [pc, #48] ; (803588c ) + 803585c: f443 5380 orr.w r3, r3, #4096 ; 0x1000 + 8035860: 6013 str r3, [r2, #0] /* Get time-out */ tickstart = HAL_GetTick(); - 8035822: f7f7 fbb7 bl 802cf94 - 8035826: 6278 str r0, [r7, #36] ; 0x24 + 8035862: f7f7 fbb7 bl 802cfd4 + 8035866: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSI48 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U) - 8035828: e008 b.n 803583c + 8035868: e008 b.n 803587c { if((HAL_GetTick() - tickstart ) > HSI48_TIMEOUT_VALUE) - 803582a: f7f7 fbb3 bl 802cf94 - 803582e: 4602 mov r2, r0 - 8035830: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035832: 1ad3 subs r3, r2, r3 - 8035834: 2b02 cmp r3, #2 - 8035836: d901 bls.n 803583c + 803586a: f7f7 fbb3 bl 802cfd4 + 803586e: 4602 mov r2, r0 + 8035870: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035872: 1ad3 subs r3, r2, r3 + 8035874: 2b02 cmp r3, #2 + 8035876: d901 bls.n 803587c { return HAL_TIMEOUT; - 8035838: 2303 movs r3, #3 - 803583a: e1b2 b.n 8035ba2 + 8035878: 2303 movs r3, #3 + 803587a: e1b2 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) == 0U) - 803583c: 4b03 ldr r3, [pc, #12] ; (803584c ) - 803583e: 681b ldr r3, [r3, #0] - 8035840: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 8035844: 2b00 cmp r3, #0 - 8035846: d0f0 beq.n 803582a - 8035848: e01b b.n 8035882 - 803584a: bf00 nop - 803584c: 58024400 .word 0x58024400 + 803587c: 4b03 ldr r3, [pc, #12] ; (803588c ) + 803587e: 681b ldr r3, [r3, #0] + 8035880: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 8035884: 2b00 cmp r3, #0 + 8035886: d0f0 beq.n 803586a + 8035888: e01b b.n 80358c2 + 803588a: bf00 nop + 803588c: 58024400 .word 0x58024400 } } else { /* Disable the Internal Low Speed oscillator (HSI48). */ __HAL_RCC_HSI48_DISABLE(); - 8035850: 4b9b ldr r3, [pc, #620] ; (8035ac0 ) - 8035852: 681b ldr r3, [r3, #0] - 8035854: 4a9a ldr r2, [pc, #616] ; (8035ac0 ) - 8035856: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 803585a: 6013 str r3, [r2, #0] + 8035890: 4b9b ldr r3, [pc, #620] ; (8035b00 ) + 8035892: 681b ldr r3, [r3, #0] + 8035894: 4a9a ldr r2, [pc, #616] ; (8035b00 ) + 8035896: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 803589a: 6013 str r3, [r2, #0] /* Get time-out */ tickstart = HAL_GetTick(); - 803585c: f7f7 fb9a bl 802cf94 - 8035860: 6278 str r0, [r7, #36] ; 0x24 + 803589c: f7f7 fb9a bl 802cfd4 + 80358a0: 6278 str r0, [r7, #36] ; 0x24 /* Wait till HSI48 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U) - 8035862: e008 b.n 8035876 + 80358a2: e008 b.n 80358b6 { if((HAL_GetTick() - tickstart ) > HSI48_TIMEOUT_VALUE) - 8035864: f7f7 fb96 bl 802cf94 - 8035868: 4602 mov r2, r0 - 803586a: 6a7b ldr r3, [r7, #36] ; 0x24 - 803586c: 1ad3 subs r3, r2, r3 - 803586e: 2b02 cmp r3, #2 - 8035870: d901 bls.n 8035876 + 80358a4: f7f7 fb96 bl 802cfd4 + 80358a8: 4602 mov r2, r0 + 80358aa: 6a7b ldr r3, [r7, #36] ; 0x24 + 80358ac: 1ad3 subs r3, r2, r3 + 80358ae: 2b02 cmp r3, #2 + 80358b0: d901 bls.n 80358b6 { return HAL_TIMEOUT; - 8035872: 2303 movs r3, #3 - 8035874: e195 b.n 8035ba2 + 80358b2: 2303 movs r3, #3 + 80358b4: e195 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSI48RDY) != 0U) - 8035876: 4b92 ldr r3, [pc, #584] ; (8035ac0 ) - 8035878: 681b ldr r3, [r3, #0] - 803587a: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 803587e: 2b00 cmp r3, #0 - 8035880: d1f0 bne.n 8035864 + 80358b6: 4b92 ldr r3, [pc, #584] ; (8035b00 ) + 80358b8: 681b ldr r3, [r3, #0] + 80358ba: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 80358be: 2b00 cmp r3, #0 + 80358c0: d1f0 bne.n 80358a4 } } } } /*------------------------------ LSE Configuration -------------------------*/ if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE) - 8035882: 687b ldr r3, [r7, #4] - 8035884: 681b ldr r3, [r3, #0] - 8035886: f003 0304 and.w r3, r3, #4 - 803588a: 2b00 cmp r3, #0 - 803588c: f000 8081 beq.w 8035992 + 80358c2: 687b ldr r3, [r7, #4] + 80358c4: 681b ldr r3, [r3, #0] + 80358c6: f003 0304 and.w r3, r3, #4 + 80358ca: 2b00 cmp r3, #0 + 80358cc: f000 8081 beq.w 80359d2 { /* Check the parameters */ assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState)); /* Enable write access to Backup domain */ PWR->CR1 |= PWR_CR1_DBP; - 8035890: 4b8c ldr r3, [pc, #560] ; (8035ac4 ) - 8035892: 681b ldr r3, [r3, #0] - 8035894: 4a8b ldr r2, [pc, #556] ; (8035ac4 ) - 8035896: f443 7380 orr.w r3, r3, #256 ; 0x100 - 803589a: 6013 str r3, [r2, #0] + 80358d0: 4b8c ldr r3, [pc, #560] ; (8035b04 ) + 80358d2: 681b ldr r3, [r3, #0] + 80358d4: 4a8b ldr r2, [pc, #556] ; (8035b04 ) + 80358d6: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80358da: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 803589c: f7f7 fb7a bl 802cf94 - 80358a0: 6278 str r0, [r7, #36] ; 0x24 + 80358dc: f7f7 fb7a bl 802cfd4 + 80358e0: 6278 str r0, [r7, #36] ; 0x24 while((PWR->CR1 & PWR_CR1_DBP) == 0U) - 80358a2: e008 b.n 80358b6 + 80358e2: e008 b.n 80358f6 { if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE) - 80358a4: f7f7 fb76 bl 802cf94 - 80358a8: 4602 mov r2, r0 - 80358aa: 6a7b ldr r3, [r7, #36] ; 0x24 - 80358ac: 1ad3 subs r3, r2, r3 - 80358ae: 2b64 cmp r3, #100 ; 0x64 - 80358b0: d901 bls.n 80358b6 + 80358e4: f7f7 fb76 bl 802cfd4 + 80358e8: 4602 mov r2, r0 + 80358ea: 6a7b ldr r3, [r7, #36] ; 0x24 + 80358ec: 1ad3 subs r3, r2, r3 + 80358ee: 2b64 cmp r3, #100 ; 0x64 + 80358f0: d901 bls.n 80358f6 { return HAL_TIMEOUT; - 80358b2: 2303 movs r3, #3 - 80358b4: e175 b.n 8035ba2 + 80358f2: 2303 movs r3, #3 + 80358f4: e175 b.n 8035be2 while((PWR->CR1 & PWR_CR1_DBP) == 0U) - 80358b6: 4b83 ldr r3, [pc, #524] ; (8035ac4 ) - 80358b8: 681b ldr r3, [r3, #0] - 80358ba: f403 7380 and.w r3, r3, #256 ; 0x100 - 80358be: 2b00 cmp r3, #0 - 80358c0: d0f0 beq.n 80358a4 + 80358f6: 4b83 ldr r3, [pc, #524] ; (8035b04 ) + 80358f8: 681b ldr r3, [r3, #0] + 80358fa: f403 7380 and.w r3, r3, #256 ; 0x100 + 80358fe: 2b00 cmp r3, #0 + 8035900: d0f0 beq.n 80358e4 } } /* Set the new LSE configuration -----------------------------------------*/ __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState); - 80358c2: 687b ldr r3, [r7, #4] - 80358c4: 689b ldr r3, [r3, #8] - 80358c6: 2b01 cmp r3, #1 - 80358c8: d106 bne.n 80358d8 - 80358ca: 4b7d ldr r3, [pc, #500] ; (8035ac0 ) - 80358cc: 6f1b ldr r3, [r3, #112] ; 0x70 - 80358ce: 4a7c ldr r2, [pc, #496] ; (8035ac0 ) - 80358d0: f043 0301 orr.w r3, r3, #1 - 80358d4: 6713 str r3, [r2, #112] ; 0x70 - 80358d6: e02d b.n 8035934 - 80358d8: 687b ldr r3, [r7, #4] - 80358da: 689b ldr r3, [r3, #8] - 80358dc: 2b00 cmp r3, #0 - 80358de: d10c bne.n 80358fa - 80358e0: 4b77 ldr r3, [pc, #476] ; (8035ac0 ) - 80358e2: 6f1b ldr r3, [r3, #112] ; 0x70 - 80358e4: 4a76 ldr r2, [pc, #472] ; (8035ac0 ) - 80358e6: f023 0301 bic.w r3, r3, #1 - 80358ea: 6713 str r3, [r2, #112] ; 0x70 - 80358ec: 4b74 ldr r3, [pc, #464] ; (8035ac0 ) - 80358ee: 6f1b ldr r3, [r3, #112] ; 0x70 - 80358f0: 4a73 ldr r2, [pc, #460] ; (8035ac0 ) - 80358f2: f023 0304 bic.w r3, r3, #4 - 80358f6: 6713 str r3, [r2, #112] ; 0x70 - 80358f8: e01c b.n 8035934 - 80358fa: 687b ldr r3, [r7, #4] - 80358fc: 689b ldr r3, [r3, #8] - 80358fe: 2b05 cmp r3, #5 - 8035900: d10c bne.n 803591c - 8035902: 4b6f ldr r3, [pc, #444] ; (8035ac0 ) - 8035904: 6f1b ldr r3, [r3, #112] ; 0x70 - 8035906: 4a6e ldr r2, [pc, #440] ; (8035ac0 ) - 8035908: f043 0304 orr.w r3, r3, #4 - 803590c: 6713 str r3, [r2, #112] ; 0x70 - 803590e: 4b6c ldr r3, [pc, #432] ; (8035ac0 ) - 8035910: 6f1b ldr r3, [r3, #112] ; 0x70 - 8035912: 4a6b ldr r2, [pc, #428] ; (8035ac0 ) - 8035914: f043 0301 orr.w r3, r3, #1 - 8035918: 6713 str r3, [r2, #112] ; 0x70 - 803591a: e00b b.n 8035934 - 803591c: 4b68 ldr r3, [pc, #416] ; (8035ac0 ) - 803591e: 6f1b ldr r3, [r3, #112] ; 0x70 - 8035920: 4a67 ldr r2, [pc, #412] ; (8035ac0 ) - 8035922: f023 0301 bic.w r3, r3, #1 - 8035926: 6713 str r3, [r2, #112] ; 0x70 - 8035928: 4b65 ldr r3, [pc, #404] ; (8035ac0 ) - 803592a: 6f1b ldr r3, [r3, #112] ; 0x70 - 803592c: 4a64 ldr r2, [pc, #400] ; (8035ac0 ) - 803592e: f023 0304 bic.w r3, r3, #4 - 8035932: 6713 str r3, [r2, #112] ; 0x70 + 8035902: 687b ldr r3, [r7, #4] + 8035904: 689b ldr r3, [r3, #8] + 8035906: 2b01 cmp r3, #1 + 8035908: d106 bne.n 8035918 + 803590a: 4b7d ldr r3, [pc, #500] ; (8035b00 ) + 803590c: 6f1b ldr r3, [r3, #112] ; 0x70 + 803590e: 4a7c ldr r2, [pc, #496] ; (8035b00 ) + 8035910: f043 0301 orr.w r3, r3, #1 + 8035914: 6713 str r3, [r2, #112] ; 0x70 + 8035916: e02d b.n 8035974 + 8035918: 687b ldr r3, [r7, #4] + 803591a: 689b ldr r3, [r3, #8] + 803591c: 2b00 cmp r3, #0 + 803591e: d10c bne.n 803593a + 8035920: 4b77 ldr r3, [pc, #476] ; (8035b00 ) + 8035922: 6f1b ldr r3, [r3, #112] ; 0x70 + 8035924: 4a76 ldr r2, [pc, #472] ; (8035b00 ) + 8035926: f023 0301 bic.w r3, r3, #1 + 803592a: 6713 str r3, [r2, #112] ; 0x70 + 803592c: 4b74 ldr r3, [pc, #464] ; (8035b00 ) + 803592e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8035930: 4a73 ldr r2, [pc, #460] ; (8035b00 ) + 8035932: f023 0304 bic.w r3, r3, #4 + 8035936: 6713 str r3, [r2, #112] ; 0x70 + 8035938: e01c b.n 8035974 + 803593a: 687b ldr r3, [r7, #4] + 803593c: 689b ldr r3, [r3, #8] + 803593e: 2b05 cmp r3, #5 + 8035940: d10c bne.n 803595c + 8035942: 4b6f ldr r3, [pc, #444] ; (8035b00 ) + 8035944: 6f1b ldr r3, [r3, #112] ; 0x70 + 8035946: 4a6e ldr r2, [pc, #440] ; (8035b00 ) + 8035948: f043 0304 orr.w r3, r3, #4 + 803594c: 6713 str r3, [r2, #112] ; 0x70 + 803594e: 4b6c ldr r3, [pc, #432] ; (8035b00 ) + 8035950: 6f1b ldr r3, [r3, #112] ; 0x70 + 8035952: 4a6b ldr r2, [pc, #428] ; (8035b00 ) + 8035954: f043 0301 orr.w r3, r3, #1 + 8035958: 6713 str r3, [r2, #112] ; 0x70 + 803595a: e00b b.n 8035974 + 803595c: 4b68 ldr r3, [pc, #416] ; (8035b00 ) + 803595e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8035960: 4a67 ldr r2, [pc, #412] ; (8035b00 ) + 8035962: f023 0301 bic.w r3, r3, #1 + 8035966: 6713 str r3, [r2, #112] ; 0x70 + 8035968: 4b65 ldr r3, [pc, #404] ; (8035b00 ) + 803596a: 6f1b ldr r3, [r3, #112] ; 0x70 + 803596c: 4a64 ldr r2, [pc, #400] ; (8035b00 ) + 803596e: f023 0304 bic.w r3, r3, #4 + 8035972: 6713 str r3, [r2, #112] ; 0x70 /* Check the LSE State */ if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF) - 8035934: 687b ldr r3, [r7, #4] - 8035936: 689b ldr r3, [r3, #8] - 8035938: 2b00 cmp r3, #0 - 803593a: d015 beq.n 8035968 + 8035974: 687b ldr r3, [r7, #4] + 8035976: 689b ldr r3, [r3, #8] + 8035978: 2b00 cmp r3, #0 + 803597a: d015 beq.n 80359a8 { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 803593c: f7f7 fb2a bl 802cf94 - 8035940: 6278 str r0, [r7, #36] ; 0x24 + 803597c: f7f7 fb2a bl 802cfd4 + 8035980: 6278 str r0, [r7, #36] ; 0x24 /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) - 8035942: e00a b.n 803595a + 8035982: e00a b.n 803599a { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 8035944: f7f7 fb26 bl 802cf94 - 8035948: 4602 mov r2, r0 - 803594a: 6a7b ldr r3, [r7, #36] ; 0x24 - 803594c: 1ad3 subs r3, r2, r3 - 803594e: f241 3288 movw r2, #5000 ; 0x1388 - 8035952: 4293 cmp r3, r2 - 8035954: d901 bls.n 803595a + 8035984: f7f7 fb26 bl 802cfd4 + 8035988: 4602 mov r2, r0 + 803598a: 6a7b ldr r3, [r7, #36] ; 0x24 + 803598c: 1ad3 subs r3, r2, r3 + 803598e: f241 3288 movw r2, #5000 ; 0x1388 + 8035992: 4293 cmp r3, r2 + 8035994: d901 bls.n 803599a { return HAL_TIMEOUT; - 8035956: 2303 movs r3, #3 - 8035958: e123 b.n 8035ba2 + 8035996: 2303 movs r3, #3 + 8035998: e123 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) - 803595a: 4b59 ldr r3, [pc, #356] ; (8035ac0 ) - 803595c: 6f1b ldr r3, [r3, #112] ; 0x70 - 803595e: f003 0302 and.w r3, r3, #2 - 8035962: 2b00 cmp r3, #0 - 8035964: d0ee beq.n 8035944 - 8035966: e014 b.n 8035992 + 803599a: 4b59 ldr r3, [pc, #356] ; (8035b00 ) + 803599c: 6f1b ldr r3, [r3, #112] ; 0x70 + 803599e: f003 0302 and.w r3, r3, #2 + 80359a2: 2b00 cmp r3, #0 + 80359a4: d0ee beq.n 8035984 + 80359a6: e014 b.n 80359d2 } } else { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035968: f7f7 fb14 bl 802cf94 - 803596c: 6278 str r0, [r7, #36] ; 0x24 + 80359a8: f7f7 fb14 bl 802cfd4 + 80359ac: 6278 str r0, [r7, #36] ; 0x24 /* Wait till LSE is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) - 803596e: e00a b.n 8035986 + 80359ae: e00a b.n 80359c6 { if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE) - 8035970: f7f7 fb10 bl 802cf94 - 8035974: 4602 mov r2, r0 - 8035976: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035978: 1ad3 subs r3, r2, r3 - 803597a: f241 3288 movw r2, #5000 ; 0x1388 - 803597e: 4293 cmp r3, r2 - 8035980: d901 bls.n 8035986 + 80359b0: f7f7 fb10 bl 802cfd4 + 80359b4: 4602 mov r2, r0 + 80359b6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80359b8: 1ad3 subs r3, r2, r3 + 80359ba: f241 3288 movw r2, #5000 ; 0x1388 + 80359be: 4293 cmp r3, r2 + 80359c0: d901 bls.n 80359c6 { return HAL_TIMEOUT; - 8035982: 2303 movs r3, #3 - 8035984: e10d b.n 8035ba2 + 80359c2: 2303 movs r3, #3 + 80359c4: e10d b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != 0U) - 8035986: 4b4e ldr r3, [pc, #312] ; (8035ac0 ) - 8035988: 6f1b ldr r3, [r3, #112] ; 0x70 - 803598a: f003 0302 and.w r3, r3, #2 - 803598e: 2b00 cmp r3, #0 - 8035990: d1ee bne.n 8035970 + 80359c6: 4b4e ldr r3, [pc, #312] ; (8035b00 ) + 80359c8: 6f1b ldr r3, [r3, #112] ; 0x70 + 80359ca: f003 0302 and.w r3, r3, #2 + 80359ce: 2b00 cmp r3, #0 + 80359d0: d1ee bne.n 80359b0 } } /*-------------------------------- PLL Configuration -----------------------*/ /* Check the parameters */ assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState)); if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE) - 8035992: 687b ldr r3, [r7, #4] - 8035994: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035996: 2b00 cmp r3, #0 - 8035998: f000 8102 beq.w 8035ba0 + 80359d2: 687b ldr r3, [r7, #4] + 80359d4: 6a5b ldr r3, [r3, #36] ; 0x24 + 80359d6: 2b00 cmp r3, #0 + 80359d8: f000 8102 beq.w 8035be0 { /* Check if the PLL is used as system clock or not */ if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL1) - 803599c: 4b48 ldr r3, [pc, #288] ; (8035ac0 ) - 803599e: 691b ldr r3, [r3, #16] - 80359a0: f003 0338 and.w r3, r3, #56 ; 0x38 - 80359a4: 2b18 cmp r3, #24 - 80359a6: f000 80bd beq.w 8035b24 + 80359dc: 4b48 ldr r3, [pc, #288] ; (8035b00 ) + 80359de: 691b ldr r3, [r3, #16] + 80359e0: f003 0338 and.w r3, r3, #56 ; 0x38 + 80359e4: 2b18 cmp r3, #24 + 80359e6: f000 80bd beq.w 8035b64 { if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON) - 80359aa: 687b ldr r3, [r7, #4] - 80359ac: 6a5b ldr r3, [r3, #36] ; 0x24 - 80359ae: 2b02 cmp r3, #2 - 80359b0: f040 809e bne.w 8035af0 + 80359ea: 687b ldr r3, [r7, #4] + 80359ec: 6a5b ldr r3, [r3, #36] ; 0x24 + 80359ee: 2b02 cmp r3, #2 + 80359f0: f040 809e bne.w 8035b30 assert_param(IS_RCC_PLLQ_VALUE(RCC_OscInitStruct->PLL.PLLQ)); assert_param(IS_RCC_PLLR_VALUE(RCC_OscInitStruct->PLL.PLLR)); assert_param(IS_RCC_PLLFRACN_VALUE(RCC_OscInitStruct->PLL.PLLFRACN)); /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 80359b4: 4b42 ldr r3, [pc, #264] ; (8035ac0 ) - 80359b6: 681b ldr r3, [r3, #0] - 80359b8: 4a41 ldr r2, [pc, #260] ; (8035ac0 ) - 80359ba: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 - 80359be: 6013 str r3, [r2, #0] + 80359f4: 4b42 ldr r3, [pc, #264] ; (8035b00 ) + 80359f6: 681b ldr r3, [r3, #0] + 80359f8: 4a41 ldr r2, [pc, #260] ; (8035b00 ) + 80359fa: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 80359fe: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80359c0: f7f7 fae8 bl 802cf94 - 80359c4: 6278 str r0, [r7, #36] ; 0x24 + 8035a00: f7f7 fae8 bl 802cfd4 + 8035a04: 6278 str r0, [r7, #36] ; 0x24 /* Wait till PLL is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) - 80359c6: e008 b.n 80359da + 8035a06: e008 b.n 8035a1a { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 80359c8: f7f7 fae4 bl 802cf94 - 80359cc: 4602 mov r2, r0 - 80359ce: 6a7b ldr r3, [r7, #36] ; 0x24 - 80359d0: 1ad3 subs r3, r2, r3 - 80359d2: 2b02 cmp r3, #2 - 80359d4: d901 bls.n 80359da + 8035a08: f7f7 fae4 bl 802cfd4 + 8035a0c: 4602 mov r2, r0 + 8035a0e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035a10: 1ad3 subs r3, r2, r3 + 8035a12: 2b02 cmp r3, #2 + 8035a14: d901 bls.n 8035a1a { return HAL_TIMEOUT; - 80359d6: 2303 movs r3, #3 - 80359d8: e0e3 b.n 8035ba2 + 8035a16: 2303 movs r3, #3 + 8035a18: e0e3 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) - 80359da: 4b39 ldr r3, [pc, #228] ; (8035ac0 ) - 80359dc: 681b ldr r3, [r3, #0] - 80359de: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 80359e2: 2b00 cmp r3, #0 - 80359e4: d1f0 bne.n 80359c8 + 8035a1a: 4b39 ldr r3, [pc, #228] ; (8035b00 ) + 8035a1c: 681b ldr r3, [r3, #0] + 8035a1e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8035a22: 2b00 cmp r3, #0 + 8035a24: d1f0 bne.n 8035a08 } } /* Configure the main PLL clock source, multiplication and division factors. */ __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource, - 80359e6: 4b36 ldr r3, [pc, #216] ; (8035ac0 ) - 80359e8: 6a9a ldr r2, [r3, #40] ; 0x28 - 80359ea: 4b37 ldr r3, [pc, #220] ; (8035ac8 ) - 80359ec: 4013 ands r3, r2 - 80359ee: 687a ldr r2, [r7, #4] - 80359f0: 6a91 ldr r1, [r2, #40] ; 0x28 - 80359f2: 687a ldr r2, [r7, #4] - 80359f4: 6ad2 ldr r2, [r2, #44] ; 0x2c - 80359f6: 0112 lsls r2, r2, #4 - 80359f8: 430a orrs r2, r1 - 80359fa: 4931 ldr r1, [pc, #196] ; (8035ac0 ) - 80359fc: 4313 orrs r3, r2 - 80359fe: 628b str r3, [r1, #40] ; 0x28 - 8035a00: 687b ldr r3, [r7, #4] - 8035a02: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035a04: 3b01 subs r3, #1 - 8035a06: f3c3 0208 ubfx r2, r3, #0, #9 - 8035a0a: 687b ldr r3, [r7, #4] - 8035a0c: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035a0e: 3b01 subs r3, #1 - 8035a10: 025b lsls r3, r3, #9 - 8035a12: b29b uxth r3, r3 - 8035a14: 431a orrs r2, r3 - 8035a16: 687b ldr r3, [r7, #4] - 8035a18: 6b9b ldr r3, [r3, #56] ; 0x38 - 8035a1a: 3b01 subs r3, #1 - 8035a1c: 041b lsls r3, r3, #16 - 8035a1e: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 8035a22: 431a orrs r2, r3 - 8035a24: 687b ldr r3, [r7, #4] - 8035a26: 6bdb ldr r3, [r3, #60] ; 0x3c - 8035a28: 3b01 subs r3, #1 - 8035a2a: 061b lsls r3, r3, #24 - 8035a2c: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 8035a30: 4923 ldr r1, [pc, #140] ; (8035ac0 ) - 8035a32: 4313 orrs r3, r2 - 8035a34: 630b str r3, [r1, #48] ; 0x30 + 8035a26: 4b36 ldr r3, [pc, #216] ; (8035b00 ) + 8035a28: 6a9a ldr r2, [r3, #40] ; 0x28 + 8035a2a: 4b37 ldr r3, [pc, #220] ; (8035b08 ) + 8035a2c: 4013 ands r3, r2 + 8035a2e: 687a ldr r2, [r7, #4] + 8035a30: 6a91 ldr r1, [r2, #40] ; 0x28 + 8035a32: 687a ldr r2, [r7, #4] + 8035a34: 6ad2 ldr r2, [r2, #44] ; 0x2c + 8035a36: 0112 lsls r2, r2, #4 + 8035a38: 430a orrs r2, r1 + 8035a3a: 4931 ldr r1, [pc, #196] ; (8035b00 ) + 8035a3c: 4313 orrs r3, r2 + 8035a3e: 628b str r3, [r1, #40] ; 0x28 + 8035a40: 687b ldr r3, [r7, #4] + 8035a42: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035a44: 3b01 subs r3, #1 + 8035a46: f3c3 0208 ubfx r2, r3, #0, #9 + 8035a4a: 687b ldr r3, [r7, #4] + 8035a4c: 6b5b ldr r3, [r3, #52] ; 0x34 + 8035a4e: 3b01 subs r3, #1 + 8035a50: 025b lsls r3, r3, #9 + 8035a52: b29b uxth r3, r3 + 8035a54: 431a orrs r2, r3 + 8035a56: 687b ldr r3, [r7, #4] + 8035a58: 6b9b ldr r3, [r3, #56] ; 0x38 + 8035a5a: 3b01 subs r3, #1 + 8035a5c: 041b lsls r3, r3, #16 + 8035a5e: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 8035a62: 431a orrs r2, r3 + 8035a64: 687b ldr r3, [r7, #4] + 8035a66: 6bdb ldr r3, [r3, #60] ; 0x3c + 8035a68: 3b01 subs r3, #1 + 8035a6a: 061b lsls r3, r3, #24 + 8035a6c: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 8035a70: 4923 ldr r1, [pc, #140] ; (8035b00 ) + 8035a72: 4313 orrs r3, r2 + 8035a74: 630b str r3, [r1, #48] ; 0x30 RCC_OscInitStruct->PLL.PLLP, RCC_OscInitStruct->PLL.PLLQ, RCC_OscInitStruct->PLL.PLLR); /* Disable PLLFRACN . */ __HAL_RCC_PLLFRACN_DISABLE(); - 8035a36: 4b22 ldr r3, [pc, #136] ; (8035ac0 ) - 8035a38: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a3a: 4a21 ldr r2, [pc, #132] ; (8035ac0 ) - 8035a3c: f023 0301 bic.w r3, r3, #1 - 8035a40: 62d3 str r3, [r2, #44] ; 0x2c + 8035a76: 4b22 ldr r3, [pc, #136] ; (8035b00 ) + 8035a78: 6adb ldr r3, [r3, #44] ; 0x2c + 8035a7a: 4a21 ldr r2, [pc, #132] ; (8035b00 ) + 8035a7c: f023 0301 bic.w r3, r3, #1 + 8035a80: 62d3 str r3, [r2, #44] ; 0x2c /* Configure PLL PLL1FRACN */ __HAL_RCC_PLLFRACN_CONFIG(RCC_OscInitStruct->PLL.PLLFRACN); - 8035a42: 4b1f ldr r3, [pc, #124] ; (8035ac0 ) - 8035a44: 6b5a ldr r2, [r3, #52] ; 0x34 - 8035a46: 4b21 ldr r3, [pc, #132] ; (8035acc ) - 8035a48: 4013 ands r3, r2 - 8035a4a: 687a ldr r2, [r7, #4] - 8035a4c: 6c92 ldr r2, [r2, #72] ; 0x48 - 8035a4e: 00d2 lsls r2, r2, #3 - 8035a50: 491b ldr r1, [pc, #108] ; (8035ac0 ) - 8035a52: 4313 orrs r3, r2 - 8035a54: 634b str r3, [r1, #52] ; 0x34 + 8035a82: 4b1f ldr r3, [pc, #124] ; (8035b00 ) + 8035a84: 6b5a ldr r2, [r3, #52] ; 0x34 + 8035a86: 4b21 ldr r3, [pc, #132] ; (8035b0c ) + 8035a88: 4013 ands r3, r2 + 8035a8a: 687a ldr r2, [r7, #4] + 8035a8c: 6c92 ldr r2, [r2, #72] ; 0x48 + 8035a8e: 00d2 lsls r2, r2, #3 + 8035a90: 491b ldr r1, [pc, #108] ; (8035b00 ) + 8035a92: 4313 orrs r3, r2 + 8035a94: 634b str r3, [r1, #52] ; 0x34 /* Select PLL1 input reference frequency range: VCI */ __HAL_RCC_PLL_VCIRANGE(RCC_OscInitStruct->PLL.PLLRGE) ; - 8035a56: 4b1a ldr r3, [pc, #104] ; (8035ac0 ) - 8035a58: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a5a: f023 020c bic.w r2, r3, #12 - 8035a5e: 687b ldr r3, [r7, #4] - 8035a60: 6c1b ldr r3, [r3, #64] ; 0x40 - 8035a62: 4917 ldr r1, [pc, #92] ; (8035ac0 ) - 8035a64: 4313 orrs r3, r2 - 8035a66: 62cb str r3, [r1, #44] ; 0x2c + 8035a96: 4b1a ldr r3, [pc, #104] ; (8035b00 ) + 8035a98: 6adb ldr r3, [r3, #44] ; 0x2c + 8035a9a: f023 020c bic.w r2, r3, #12 + 8035a9e: 687b ldr r3, [r7, #4] + 8035aa0: 6c1b ldr r3, [r3, #64] ; 0x40 + 8035aa2: 4917 ldr r1, [pc, #92] ; (8035b00 ) + 8035aa4: 4313 orrs r3, r2 + 8035aa6: 62cb str r3, [r1, #44] ; 0x2c /* Select PLL1 output frequency range : VCO */ __HAL_RCC_PLL_VCORANGE(RCC_OscInitStruct->PLL.PLLVCOSEL) ; - 8035a68: 4b15 ldr r3, [pc, #84] ; (8035ac0 ) - 8035a6a: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a6c: f023 0202 bic.w r2, r3, #2 - 8035a70: 687b ldr r3, [r7, #4] - 8035a72: 6c5b ldr r3, [r3, #68] ; 0x44 - 8035a74: 4912 ldr r1, [pc, #72] ; (8035ac0 ) - 8035a76: 4313 orrs r3, r2 - 8035a78: 62cb str r3, [r1, #44] ; 0x2c + 8035aa8: 4b15 ldr r3, [pc, #84] ; (8035b00 ) + 8035aaa: 6adb ldr r3, [r3, #44] ; 0x2c + 8035aac: f023 0202 bic.w r2, r3, #2 + 8035ab0: 687b ldr r3, [r7, #4] + 8035ab2: 6c5b ldr r3, [r3, #68] ; 0x44 + 8035ab4: 4912 ldr r1, [pc, #72] ; (8035b00 ) + 8035ab6: 4313 orrs r3, r2 + 8035ab8: 62cb str r3, [r1, #44] ; 0x2c /* Enable PLL System Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVP); - 8035a7a: 4b11 ldr r3, [pc, #68] ; (8035ac0 ) - 8035a7c: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a7e: 4a10 ldr r2, [pc, #64] ; (8035ac0 ) - 8035a80: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 8035a84: 62d3 str r3, [r2, #44] ; 0x2c + 8035aba: 4b11 ldr r3, [pc, #68] ; (8035b00 ) + 8035abc: 6adb ldr r3, [r3, #44] ; 0x2c + 8035abe: 4a10 ldr r2, [pc, #64] ; (8035b00 ) + 8035ac0: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 8035ac4: 62d3 str r3, [r2, #44] ; 0x2c /* Enable PLL1Q Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8035a86: 4b0e ldr r3, [pc, #56] ; (8035ac0 ) - 8035a88: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a8a: 4a0d ldr r2, [pc, #52] ; (8035ac0 ) - 8035a8c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8035a90: 62d3 str r3, [r2, #44] ; 0x2c + 8035ac6: 4b0e ldr r3, [pc, #56] ; (8035b00 ) + 8035ac8: 6adb ldr r3, [r3, #44] ; 0x2c + 8035aca: 4a0d ldr r2, [pc, #52] ; (8035b00 ) + 8035acc: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8035ad0: 62d3 str r3, [r2, #44] ; 0x2c /* Enable PLL1R Clock output. */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVR); - 8035a92: 4b0b ldr r3, [pc, #44] ; (8035ac0 ) - 8035a94: 6adb ldr r3, [r3, #44] ; 0x2c - 8035a96: 4a0a ldr r2, [pc, #40] ; (8035ac0 ) - 8035a98: f443 2380 orr.w r3, r3, #262144 ; 0x40000 - 8035a9c: 62d3 str r3, [r2, #44] ; 0x2c + 8035ad2: 4b0b ldr r3, [pc, #44] ; (8035b00 ) + 8035ad4: 6adb ldr r3, [r3, #44] ; 0x2c + 8035ad6: 4a0a ldr r2, [pc, #40] ; (8035b00 ) + 8035ad8: f443 2380 orr.w r3, r3, #262144 ; 0x40000 + 8035adc: 62d3 str r3, [r2, #44] ; 0x2c /* Enable PLL1FRACN . */ __HAL_RCC_PLLFRACN_ENABLE(); - 8035a9e: 4b08 ldr r3, [pc, #32] ; (8035ac0 ) - 8035aa0: 6adb ldr r3, [r3, #44] ; 0x2c - 8035aa2: 4a07 ldr r2, [pc, #28] ; (8035ac0 ) - 8035aa4: f043 0301 orr.w r3, r3, #1 - 8035aa8: 62d3 str r3, [r2, #44] ; 0x2c + 8035ade: 4b08 ldr r3, [pc, #32] ; (8035b00 ) + 8035ae0: 6adb ldr r3, [r3, #44] ; 0x2c + 8035ae2: 4a07 ldr r2, [pc, #28] ; (8035b00 ) + 8035ae4: f043 0301 orr.w r3, r3, #1 + 8035ae8: 62d3 str r3, [r2, #44] ; 0x2c /* Enable the main PLL. */ __HAL_RCC_PLL_ENABLE(); - 8035aaa: 4b05 ldr r3, [pc, #20] ; (8035ac0 ) - 8035aac: 681b ldr r3, [r3, #0] - 8035aae: 4a04 ldr r2, [pc, #16] ; (8035ac0 ) - 8035ab0: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 8035ab4: 6013 str r3, [r2, #0] + 8035aea: 4b05 ldr r3, [pc, #20] ; (8035b00 ) + 8035aec: 681b ldr r3, [r3, #0] + 8035aee: 4a04 ldr r2, [pc, #16] ; (8035b00 ) + 8035af0: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8035af4: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035ab6: f7f7 fa6d bl 802cf94 - 8035aba: 6278 str r0, [r7, #36] ; 0x24 + 8035af6: f7f7 fa6d bl 802cfd4 + 8035afa: 6278 str r0, [r7, #36] ; 0x24 /* Wait till PLL is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) - 8035abc: e011 b.n 8035ae2 - 8035abe: bf00 nop - 8035ac0: 58024400 .word 0x58024400 - 8035ac4: 58024800 .word 0x58024800 - 8035ac8: fffffc0c .word 0xfffffc0c - 8035acc: ffff0007 .word 0xffff0007 + 8035afc: e011 b.n 8035b22 + 8035afe: bf00 nop + 8035b00: 58024400 .word 0x58024400 + 8035b04: 58024800 .word 0x58024800 + 8035b08: fffffc0c .word 0xfffffc0c + 8035b0c: ffff0007 .word 0xffff0007 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 8035ad0: f7f7 fa60 bl 802cf94 - 8035ad4: 4602 mov r2, r0 - 8035ad6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035ad8: 1ad3 subs r3, r2, r3 - 8035ada: 2b02 cmp r3, #2 - 8035adc: d901 bls.n 8035ae2 + 8035b10: f7f7 fa60 bl 802cfd4 + 8035b14: 4602 mov r2, r0 + 8035b16: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035b18: 1ad3 subs r3, r2, r3 + 8035b1a: 2b02 cmp r3, #2 + 8035b1c: d901 bls.n 8035b22 { return HAL_TIMEOUT; - 8035ade: 2303 movs r3, #3 - 8035ae0: e05f b.n 8035ba2 + 8035b1e: 2303 movs r3, #3 + 8035b20: e05f b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) - 8035ae2: 4b32 ldr r3, [pc, #200] ; (8035bac ) - 8035ae4: 681b ldr r3, [r3, #0] - 8035ae6: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8035aea: 2b00 cmp r3, #0 - 8035aec: d0f0 beq.n 8035ad0 - 8035aee: e057 b.n 8035ba0 + 8035b22: 4b32 ldr r3, [pc, #200] ; (8035bec ) + 8035b24: 681b ldr r3, [r3, #0] + 8035b26: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8035b2a: 2b00 cmp r3, #0 + 8035b2c: d0f0 beq.n 8035b10 + 8035b2e: e057 b.n 8035be0 } } else { /* Disable the main PLL. */ __HAL_RCC_PLL_DISABLE(); - 8035af0: 4b2e ldr r3, [pc, #184] ; (8035bac ) - 8035af2: 681b ldr r3, [r3, #0] - 8035af4: 4a2d ldr r2, [pc, #180] ; (8035bac ) - 8035af6: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 - 8035afa: 6013 str r3, [r2, #0] + 8035b30: 4b2e ldr r3, [pc, #184] ; (8035bec ) + 8035b32: 681b ldr r3, [r3, #0] + 8035b34: 4a2d ldr r2, [pc, #180] ; (8035bec ) + 8035b36: f023 7380 bic.w r3, r3, #16777216 ; 0x1000000 + 8035b3a: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035afc: f7f7 fa4a bl 802cf94 - 8035b00: 6278 str r0, [r7, #36] ; 0x24 + 8035b3c: f7f7 fa4a bl 802cfd4 + 8035b40: 6278 str r0, [r7, #36] ; 0x24 /* Wait till PLL is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) - 8035b02: e008 b.n 8035b16 + 8035b42: e008 b.n 8035b56 { if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE) - 8035b04: f7f7 fa46 bl 802cf94 - 8035b08: 4602 mov r2, r0 - 8035b0a: 6a7b ldr r3, [r7, #36] ; 0x24 - 8035b0c: 1ad3 subs r3, r2, r3 - 8035b0e: 2b02 cmp r3, #2 - 8035b10: d901 bls.n 8035b16 + 8035b44: f7f7 fa46 bl 802cfd4 + 8035b48: 4602 mov r2, r0 + 8035b4a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8035b4c: 1ad3 subs r3, r2, r3 + 8035b4e: 2b02 cmp r3, #2 + 8035b50: d901 bls.n 8035b56 { return HAL_TIMEOUT; - 8035b12: 2303 movs r3, #3 - 8035b14: e045 b.n 8035ba2 + 8035b52: 2303 movs r3, #3 + 8035b54: e045 b.n 8035be2 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != 0U) - 8035b16: 4b25 ldr r3, [pc, #148] ; (8035bac ) - 8035b18: 681b ldr r3, [r3, #0] - 8035b1a: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8035b1e: 2b00 cmp r3, #0 - 8035b20: d1f0 bne.n 8035b04 - 8035b22: e03d b.n 8035ba0 + 8035b56: 4b25 ldr r3, [pc, #148] ; (8035bec ) + 8035b58: 681b ldr r3, [r3, #0] + 8035b5a: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8035b5e: 2b00 cmp r3, #0 + 8035b60: d1f0 bne.n 8035b44 + 8035b62: e03d b.n 8035be0 } } else { /* Do not return HAL_ERROR if request repeats the current configuration */ temp1_pllckcfg = RCC->PLLCKSELR; - 8035b24: 4b21 ldr r3, [pc, #132] ; (8035bac ) - 8035b26: 6a9b ldr r3, [r3, #40] ; 0x28 - 8035b28: 613b str r3, [r7, #16] + 8035b64: 4b21 ldr r3, [pc, #132] ; (8035bec ) + 8035b66: 6a9b ldr r3, [r3, #40] ; 0x28 + 8035b68: 613b str r3, [r7, #16] temp2_pllckcfg = RCC->PLL1DIVR; - 8035b2a: 4b20 ldr r3, [pc, #128] ; (8035bac ) - 8035b2c: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035b2e: 60fb str r3, [r7, #12] + 8035b6a: 4b20 ldr r3, [pc, #128] ; (8035bec ) + 8035b6c: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035b6e: 60fb str r3, [r7, #12] if(((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 8035b30: 687b ldr r3, [r7, #4] - 8035b32: 6a5b ldr r3, [r3, #36] ; 0x24 - 8035b34: 2b01 cmp r3, #1 - 8035b36: d031 beq.n 8035b9c + 8035b70: 687b ldr r3, [r7, #4] + 8035b72: 6a5b ldr r3, [r3, #36] ; 0x24 + 8035b74: 2b01 cmp r3, #1 + 8035b76: d031 beq.n 8035bdc (READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8035b38: 693b ldr r3, [r7, #16] - 8035b3a: f003 0203 and.w r2, r3, #3 - 8035b3e: 687b ldr r3, [r7, #4] - 8035b40: 6a9b ldr r3, [r3, #40] ; 0x28 + 8035b78: 693b ldr r3, [r7, #16] + 8035b7a: f003 0203 and.w r2, r3, #3 + 8035b7e: 687b ldr r3, [r7, #4] + 8035b80: 6a9b ldr r3, [r3, #40] ; 0x28 if(((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) || - 8035b42: 429a cmp r2, r3 - 8035b44: d12a bne.n 8035b9c + 8035b82: 429a cmp r2, r3 + 8035b84: d12a bne.n 8035bdc ((READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_DIVM1) >> RCC_PLLCKSELR_DIVM1_Pos) != RCC_OscInitStruct->PLL.PLLM) || - 8035b46: 693b ldr r3, [r7, #16] - 8035b48: 091b lsrs r3, r3, #4 - 8035b4a: f003 023f and.w r2, r3, #63 ; 0x3f - 8035b4e: 687b ldr r3, [r7, #4] - 8035b50: 6adb ldr r3, [r3, #44] ; 0x2c + 8035b86: 693b ldr r3, [r7, #16] + 8035b88: 091b lsrs r3, r3, #4 + 8035b8a: f003 023f and.w r2, r3, #63 ; 0x3f + 8035b8e: 687b ldr r3, [r7, #4] + 8035b90: 6adb ldr r3, [r3, #44] ; 0x2c (READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) || - 8035b52: 429a cmp r2, r3 - 8035b54: d122 bne.n 8035b9c + 8035b92: 429a cmp r2, r3 + 8035b94: d122 bne.n 8035bdc (READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_N1) != (RCC_OscInitStruct->PLL.PLLN - 1U)) || - 8035b56: 68fb ldr r3, [r7, #12] - 8035b58: f3c3 0208 ubfx r2, r3, #0, #9 - 8035b5c: 687b ldr r3, [r7, #4] - 8035b5e: 6b1b ldr r3, [r3, #48] ; 0x30 - 8035b60: 3b01 subs r3, #1 + 8035b96: 68fb ldr r3, [r7, #12] + 8035b98: f3c3 0208 ubfx r2, r3, #0, #9 + 8035b9c: 687b ldr r3, [r7, #4] + 8035b9e: 6b1b ldr r3, [r3, #48] ; 0x30 + 8035ba0: 3b01 subs r3, #1 ((READ_BIT(temp1_pllckcfg, RCC_PLLCKSELR_DIVM1) >> RCC_PLLCKSELR_DIVM1_Pos) != RCC_OscInitStruct->PLL.PLLM) || - 8035b62: 429a cmp r2, r3 - 8035b64: d11a bne.n 8035b9c + 8035ba2: 429a cmp r2, r3 + 8035ba4: d11a bne.n 8035bdc ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos) != (RCC_OscInitStruct->PLL.PLLP - 1U)) || - 8035b66: 68fb ldr r3, [r7, #12] - 8035b68: 0a5b lsrs r3, r3, #9 - 8035b6a: f003 027f and.w r2, r3, #127 ; 0x7f - 8035b6e: 687b ldr r3, [r7, #4] - 8035b70: 6b5b ldr r3, [r3, #52] ; 0x34 - 8035b72: 3b01 subs r3, #1 + 8035ba6: 68fb ldr r3, [r7, #12] + 8035ba8: 0a5b lsrs r3, r3, #9 + 8035baa: f003 027f and.w r2, r3, #127 ; 0x7f + 8035bae: 687b ldr r3, [r7, #4] + 8035bb0: 6b5b ldr r3, [r3, #52] ; 0x34 + 8035bb2: 3b01 subs r3, #1 (READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_N1) != (RCC_OscInitStruct->PLL.PLLN - 1U)) || - 8035b74: 429a cmp r2, r3 - 8035b76: d111 bne.n 8035b9c + 8035bb4: 429a cmp r2, r3 + 8035bb6: d111 bne.n 8035bdc ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos) != (RCC_OscInitStruct->PLL.PLLQ - 1U)) || - 8035b78: 68fb ldr r3, [r7, #12] - 8035b7a: 0c1b lsrs r3, r3, #16 - 8035b7c: f003 027f and.w r2, r3, #127 ; 0x7f - 8035b80: 687b ldr r3, [r7, #4] - 8035b82: 6b9b ldr r3, [r3, #56] ; 0x38 - 8035b84: 3b01 subs r3, #1 + 8035bb8: 68fb ldr r3, [r7, #12] + 8035bba: 0c1b lsrs r3, r3, #16 + 8035bbc: f003 027f and.w r2, r3, #127 ; 0x7f + 8035bc0: 687b ldr r3, [r7, #4] + 8035bc2: 6b9b ldr r3, [r3, #56] ; 0x38 + 8035bc4: 3b01 subs r3, #1 ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_P1) >> RCC_PLL1DIVR_P1_Pos) != (RCC_OscInitStruct->PLL.PLLP - 1U)) || - 8035b86: 429a cmp r2, r3 - 8035b88: d108 bne.n 8035b9c + 8035bc6: 429a cmp r2, r3 + 8035bc8: d108 bne.n 8035bdc ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_R1) >> RCC_PLL1DIVR_R1_Pos) != (RCC_OscInitStruct->PLL.PLLR - 1U))) - 8035b8a: 68fb ldr r3, [r7, #12] - 8035b8c: 0e1b lsrs r3, r3, #24 - 8035b8e: f003 027f and.w r2, r3, #127 ; 0x7f - 8035b92: 687b ldr r3, [r7, #4] - 8035b94: 6bdb ldr r3, [r3, #60] ; 0x3c - 8035b96: 3b01 subs r3, #1 + 8035bca: 68fb ldr r3, [r7, #12] + 8035bcc: 0e1b lsrs r3, r3, #24 + 8035bce: f003 027f and.w r2, r3, #127 ; 0x7f + 8035bd2: 687b ldr r3, [r7, #4] + 8035bd4: 6bdb ldr r3, [r3, #60] ; 0x3c + 8035bd6: 3b01 subs r3, #1 ((READ_BIT(temp2_pllckcfg, RCC_PLL1DIVR_Q1) >> RCC_PLL1DIVR_Q1_Pos) != (RCC_OscInitStruct->PLL.PLLQ - 1U)) || - 8035b98: 429a cmp r2, r3 - 8035b9a: d001 beq.n 8035ba0 + 8035bd8: 429a cmp r2, r3 + 8035bda: d001 beq.n 8035be0 { return HAL_ERROR; - 8035b9c: 2301 movs r3, #1 - 8035b9e: e000 b.n 8035ba2 + 8035bdc: 2301 movs r3, #1 + 8035bde: e000 b.n 8035be2 } } } return HAL_OK; - 8035ba0: 2300 movs r3, #0 + 8035be0: 2300 movs r3, #0 } - 8035ba2: 4618 mov r0, r3 - 8035ba4: 3730 adds r7, #48 ; 0x30 - 8035ba6: 46bd mov sp, r7 - 8035ba8: bd80 pop {r7, pc} - 8035baa: bf00 nop - 8035bac: 58024400 .word 0x58024400 + 8035be2: 4618 mov r0, r3 + 8035be4: 3730 adds r7, #48 ; 0x30 + 8035be6: 46bd mov sp, r7 + 8035be8: bd80 pop {r7, pc} + 8035bea: bf00 nop + 8035bec: 58024400 .word 0x58024400 -08035bb0 : +08035bf0 : * D1CPRE[3:0] bits to ensure that Domain1 core clock not exceed the maximum allowed frequency * (for more details refer to section above "Initialization/de-initialization functions") * @retval None */ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency) { - 8035bb0: b580 push {r7, lr} - 8035bb2: b086 sub sp, #24 - 8035bb4: af00 add r7, sp, #0 - 8035bb6: 6078 str r0, [r7, #4] - 8035bb8: 6039 str r1, [r7, #0] + 8035bf0: b580 push {r7, lr} + 8035bf2: b086 sub sp, #24 + 8035bf4: af00 add r7, sp, #0 + 8035bf6: 6078 str r0, [r7, #4] + 8035bf8: 6039 str r1, [r7, #0] HAL_StatusTypeDef halstatus; uint32_t tickstart; uint32_t common_system_clock; /* Check Null pointer */ if(RCC_ClkInitStruct == NULL) - 8035bba: 687b ldr r3, [r7, #4] - 8035bbc: 2b00 cmp r3, #0 - 8035bbe: d101 bne.n 8035bc4 + 8035bfa: 687b ldr r3, [r7, #4] + 8035bfc: 2b00 cmp r3, #0 + 8035bfe: d101 bne.n 8035c04 { return HAL_ERROR; - 8035bc0: 2301 movs r3, #1 - 8035bc2: e19c b.n 8035efe + 8035c00: 2301 movs r3, #1 + 8035c02: e19c b.n 8035f3e /* To correctly read data from FLASH memory, the number of wait states (LATENCY) must be correctly programmed according to the frequency of the CPU clock (HCLK) and the supply voltage of the device. */ /* Increasing the CPU frequency */ if(FLatency > __HAL_FLASH_GET_LATENCY()) - 8035bc4: 4b8a ldr r3, [pc, #552] ; (8035df0 ) - 8035bc6: 681b ldr r3, [r3, #0] - 8035bc8: f003 030f and.w r3, r3, #15 - 8035bcc: 683a ldr r2, [r7, #0] - 8035bce: 429a cmp r2, r3 - 8035bd0: d910 bls.n 8035bf4 + 8035c04: 4b8a ldr r3, [pc, #552] ; (8035e30 ) + 8035c06: 681b ldr r3, [r3, #0] + 8035c08: f003 030f and.w r3, r3, #15 + 8035c0c: 683a ldr r2, [r7, #0] + 8035c0e: 429a cmp r2, r3 + 8035c10: d910 bls.n 8035c34 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8035bd2: 4b87 ldr r3, [pc, #540] ; (8035df0 ) - 8035bd4: 681b ldr r3, [r3, #0] - 8035bd6: f023 020f bic.w r2, r3, #15 - 8035bda: 4985 ldr r1, [pc, #532] ; (8035df0 ) - 8035bdc: 683b ldr r3, [r7, #0] - 8035bde: 4313 orrs r3, r2 - 8035be0: 600b str r3, [r1, #0] + 8035c12: 4b87 ldr r3, [pc, #540] ; (8035e30 ) + 8035c14: 681b ldr r3, [r3, #0] + 8035c16: f023 020f bic.w r2, r3, #15 + 8035c1a: 4985 ldr r1, [pc, #532] ; (8035e30 ) + 8035c1c: 683b ldr r3, [r7, #0] + 8035c1e: 4313 orrs r3, r2 + 8035c20: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if(__HAL_FLASH_GET_LATENCY() != FLatency) - 8035be2: 4b83 ldr r3, [pc, #524] ; (8035df0 ) - 8035be4: 681b ldr r3, [r3, #0] - 8035be6: f003 030f and.w r3, r3, #15 - 8035bea: 683a ldr r2, [r7, #0] - 8035bec: 429a cmp r2, r3 - 8035bee: d001 beq.n 8035bf4 + 8035c22: 4b83 ldr r3, [pc, #524] ; (8035e30 ) + 8035c24: 681b ldr r3, [r3, #0] + 8035c26: f003 030f and.w r3, r3, #15 + 8035c2a: 683a ldr r2, [r7, #0] + 8035c2c: 429a cmp r2, r3 + 8035c2e: d001 beq.n 8035c34 { return HAL_ERROR; - 8035bf0: 2301 movs r3, #1 - 8035bf2: e184 b.n 8035efe + 8035c30: 2301 movs r3, #1 + 8035c32: e184 b.n 8035f3e } /* Increasing the BUS frequency divider */ /*-------------------------- D1PCLK1/CDPCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D1PCLK1) == RCC_CLOCKTYPE_D1PCLK1) - 8035bf4: 687b ldr r3, [r7, #4] - 8035bf6: 681b ldr r3, [r3, #0] - 8035bf8: f003 0304 and.w r3, r3, #4 - 8035bfc: 2b00 cmp r3, #0 - 8035bfe: d010 beq.n 8035c22 + 8035c34: 687b ldr r3, [r7, #4] + 8035c36: 681b ldr r3, [r3, #0] + 8035c38: f003 0304 and.w r3, r3, #4 + 8035c3c: 2b00 cmp r3, #0 + 8035c3e: d010 beq.n 8035c62 { #if defined (RCC_D1CFGR_D1PPRE) if((RCC_ClkInitStruct->APB3CLKDivider) > (RCC->D1CFGR & RCC_D1CFGR_D1PPRE)) - 8035c00: 687b ldr r3, [r7, #4] - 8035c02: 691a ldr r2, [r3, #16] - 8035c04: 4b7b ldr r3, [pc, #492] ; (8035df4 ) - 8035c06: 699b ldr r3, [r3, #24] - 8035c08: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035c0c: 429a cmp r2, r3 - 8035c0e: d908 bls.n 8035c22 + 8035c40: 687b ldr r3, [r7, #4] + 8035c42: 691a ldr r2, [r3, #16] + 8035c44: 4b7b ldr r3, [pc, #492] ; (8035e34 ) + 8035c46: 699b ldr r3, [r3, #24] + 8035c48: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035c4c: 429a cmp r2, r3 + 8035c4e: d908 bls.n 8035c62 { assert_param(IS_RCC_D1PCLK1(RCC_ClkInitStruct->APB3CLKDivider)); MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, RCC_ClkInitStruct->APB3CLKDivider); - 8035c10: 4b78 ldr r3, [pc, #480] ; (8035df4 ) - 8035c12: 699b ldr r3, [r3, #24] - 8035c14: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035c18: 687b ldr r3, [r7, #4] - 8035c1a: 691b ldr r3, [r3, #16] - 8035c1c: 4975 ldr r1, [pc, #468] ; (8035df4 ) - 8035c1e: 4313 orrs r3, r2 - 8035c20: 618b str r3, [r1, #24] + 8035c50: 4b78 ldr r3, [pc, #480] ; (8035e34 ) + 8035c52: 699b ldr r3, [r3, #24] + 8035c54: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035c58: 687b ldr r3, [r7, #4] + 8035c5a: 691b ldr r3, [r3, #16] + 8035c5c: 4975 ldr r1, [pc, #468] ; (8035e34 ) + 8035c5e: 4313 orrs r3, r2 + 8035c60: 618b str r3, [r1, #24] } #endif } /*-------------------------- PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8035c22: 687b ldr r3, [r7, #4] - 8035c24: 681b ldr r3, [r3, #0] - 8035c26: f003 0308 and.w r3, r3, #8 - 8035c2a: 2b00 cmp r3, #0 - 8035c2c: d010 beq.n 8035c50 + 8035c62: 687b ldr r3, [r7, #4] + 8035c64: 681b ldr r3, [r3, #0] + 8035c66: f003 0308 and.w r3, r3, #8 + 8035c6a: 2b00 cmp r3, #0 + 8035c6c: d010 beq.n 8035c90 { #if defined (RCC_D2CFGR_D2PPRE1) if((RCC_ClkInitStruct->APB1CLKDivider) > (RCC->D2CFGR & RCC_D2CFGR_D2PPRE1)) - 8035c2e: 687b ldr r3, [r7, #4] - 8035c30: 695a ldr r2, [r3, #20] - 8035c32: 4b70 ldr r3, [pc, #448] ; (8035df4 ) - 8035c34: 69db ldr r3, [r3, #28] - 8035c36: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035c3a: 429a cmp r2, r3 - 8035c3c: d908 bls.n 8035c50 + 8035c6e: 687b ldr r3, [r7, #4] + 8035c70: 695a ldr r2, [r3, #20] + 8035c72: 4b70 ldr r3, [pc, #448] ; (8035e34 ) + 8035c74: 69db ldr r3, [r3, #28] + 8035c76: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035c7a: 429a cmp r2, r3 + 8035c7c: d908 bls.n 8035c90 { assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, (RCC_ClkInitStruct->APB1CLKDivider)); - 8035c3e: 4b6d ldr r3, [pc, #436] ; (8035df4 ) - 8035c40: 69db ldr r3, [r3, #28] - 8035c42: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035c46: 687b ldr r3, [r7, #4] - 8035c48: 695b ldr r3, [r3, #20] - 8035c4a: 496a ldr r1, [pc, #424] ; (8035df4 ) - 8035c4c: 4313 orrs r3, r2 - 8035c4e: 61cb str r3, [r1, #28] + 8035c7e: 4b6d ldr r3, [pc, #436] ; (8035e34 ) + 8035c80: 69db ldr r3, [r3, #28] + 8035c82: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035c86: 687b ldr r3, [r7, #4] + 8035c88: 695b ldr r3, [r3, #20] + 8035c8a: 496a ldr r1, [pc, #424] ; (8035e34 ) + 8035c8c: 4313 orrs r3, r2 + 8035c8e: 61cb str r3, [r1, #28] MODIFY_REG(RCC->CDCFGR2, RCC_CDCFGR2_CDPPRE1, (RCC_ClkInitStruct->APB1CLKDivider)); } #endif } /*-------------------------- PCLK2 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8035c50: 687b ldr r3, [r7, #4] - 8035c52: 681b ldr r3, [r3, #0] - 8035c54: f003 0310 and.w r3, r3, #16 - 8035c58: 2b00 cmp r3, #0 - 8035c5a: d010 beq.n 8035c7e + 8035c90: 687b ldr r3, [r7, #4] + 8035c92: 681b ldr r3, [r3, #0] + 8035c94: f003 0310 and.w r3, r3, #16 + 8035c98: 2b00 cmp r3, #0 + 8035c9a: d010 beq.n 8035cbe { #if defined(RCC_D2CFGR_D2PPRE2) if((RCC_ClkInitStruct->APB2CLKDivider) > (RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)) - 8035c5c: 687b ldr r3, [r7, #4] - 8035c5e: 699a ldr r2, [r3, #24] - 8035c60: 4b64 ldr r3, [pc, #400] ; (8035df4 ) - 8035c62: 69db ldr r3, [r3, #28] - 8035c64: f403 63e0 and.w r3, r3, #1792 ; 0x700 - 8035c68: 429a cmp r2, r3 - 8035c6a: d908 bls.n 8035c7e + 8035c9c: 687b ldr r3, [r7, #4] + 8035c9e: 699a ldr r2, [r3, #24] + 8035ca0: 4b64 ldr r3, [pc, #400] ; (8035e34 ) + 8035ca2: 69db ldr r3, [r3, #28] + 8035ca4: f403 63e0 and.w r3, r3, #1792 ; 0x700 + 8035ca8: 429a cmp r2, r3 + 8035caa: d908 bls.n 8035cbe { assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, (RCC_ClkInitStruct->APB2CLKDivider)); - 8035c6c: 4b61 ldr r3, [pc, #388] ; (8035df4 ) - 8035c6e: 69db ldr r3, [r3, #28] - 8035c70: f423 62e0 bic.w r2, r3, #1792 ; 0x700 - 8035c74: 687b ldr r3, [r7, #4] - 8035c76: 699b ldr r3, [r3, #24] - 8035c78: 495e ldr r1, [pc, #376] ; (8035df4 ) - 8035c7a: 4313 orrs r3, r2 - 8035c7c: 61cb str r3, [r1, #28] + 8035cac: 4b61 ldr r3, [pc, #388] ; (8035e34 ) + 8035cae: 69db ldr r3, [r3, #28] + 8035cb0: f423 62e0 bic.w r2, r3, #1792 ; 0x700 + 8035cb4: 687b ldr r3, [r7, #4] + 8035cb6: 699b ldr r3, [r3, #24] + 8035cb8: 495e ldr r1, [pc, #376] ; (8035e34 ) + 8035cba: 4313 orrs r3, r2 + 8035cbc: 61cb str r3, [r1, #28] } #endif } /*-------------------------- D3PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D3PCLK1) == RCC_CLOCKTYPE_D3PCLK1) - 8035c7e: 687b ldr r3, [r7, #4] - 8035c80: 681b ldr r3, [r3, #0] - 8035c82: f003 0320 and.w r3, r3, #32 - 8035c86: 2b00 cmp r3, #0 - 8035c88: d010 beq.n 8035cac + 8035cbe: 687b ldr r3, [r7, #4] + 8035cc0: 681b ldr r3, [r3, #0] + 8035cc2: f003 0320 and.w r3, r3, #32 + 8035cc6: 2b00 cmp r3, #0 + 8035cc8: d010 beq.n 8035cec { #if defined(RCC_D3CFGR_D3PPRE) if((RCC_ClkInitStruct->APB4CLKDivider) > (RCC->D3CFGR & RCC_D3CFGR_D3PPRE)) - 8035c8a: 687b ldr r3, [r7, #4] - 8035c8c: 69da ldr r2, [r3, #28] - 8035c8e: 4b59 ldr r3, [pc, #356] ; (8035df4 ) - 8035c90: 6a1b ldr r3, [r3, #32] - 8035c92: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035c96: 429a cmp r2, r3 - 8035c98: d908 bls.n 8035cac + 8035cca: 687b ldr r3, [r7, #4] + 8035ccc: 69da ldr r2, [r3, #28] + 8035cce: 4b59 ldr r3, [pc, #356] ; (8035e34 ) + 8035cd0: 6a1b ldr r3, [r3, #32] + 8035cd2: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035cd6: 429a cmp r2, r3 + 8035cd8: d908 bls.n 8035cec { assert_param(IS_RCC_D3PCLK1(RCC_ClkInitStruct->APB4CLKDivider)); MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, (RCC_ClkInitStruct->APB4CLKDivider) ); - 8035c9a: 4b56 ldr r3, [pc, #344] ; (8035df4 ) - 8035c9c: 6a1b ldr r3, [r3, #32] - 8035c9e: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035ca2: 687b ldr r3, [r7, #4] - 8035ca4: 69db ldr r3, [r3, #28] - 8035ca6: 4953 ldr r1, [pc, #332] ; (8035df4 ) - 8035ca8: 4313 orrs r3, r2 - 8035caa: 620b str r3, [r1, #32] + 8035cda: 4b56 ldr r3, [pc, #344] ; (8035e34 ) + 8035cdc: 6a1b ldr r3, [r3, #32] + 8035cde: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035ce2: 687b ldr r3, [r7, #4] + 8035ce4: 69db ldr r3, [r3, #28] + 8035ce6: 4953 ldr r1, [pc, #332] ; (8035e34 ) + 8035ce8: 4313 orrs r3, r2 + 8035cea: 620b str r3, [r1, #32] } #endif } /*-------------------------- HCLK Configuration --------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8035cac: 687b ldr r3, [r7, #4] - 8035cae: 681b ldr r3, [r3, #0] - 8035cb0: f003 0302 and.w r3, r3, #2 - 8035cb4: 2b00 cmp r3, #0 - 8035cb6: d010 beq.n 8035cda + 8035cec: 687b ldr r3, [r7, #4] + 8035cee: 681b ldr r3, [r3, #0] + 8035cf0: f003 0302 and.w r3, r3, #2 + 8035cf4: 2b00 cmp r3, #0 + 8035cf6: d010 beq.n 8035d1a { #if defined (RCC_D1CFGR_HPRE) if((RCC_ClkInitStruct->AHBCLKDivider) > (RCC->D1CFGR & RCC_D1CFGR_HPRE)) - 8035cb8: 687b ldr r3, [r7, #4] - 8035cba: 68da ldr r2, [r3, #12] - 8035cbc: 4b4d ldr r3, [pc, #308] ; (8035df4 ) - 8035cbe: 699b ldr r3, [r3, #24] - 8035cc0: f003 030f and.w r3, r3, #15 - 8035cc4: 429a cmp r2, r3 - 8035cc6: d908 bls.n 8035cda + 8035cf8: 687b ldr r3, [r7, #4] + 8035cfa: 68da ldr r2, [r3, #12] + 8035cfc: 4b4d ldr r3, [pc, #308] ; (8035e34 ) + 8035cfe: 699b ldr r3, [r3, #24] + 8035d00: f003 030f and.w r3, r3, #15 + 8035d04: 429a cmp r2, r3 + 8035d06: d908 bls.n 8035d1a { /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8035cc8: 4b4a ldr r3, [pc, #296] ; (8035df4 ) - 8035cca: 699b ldr r3, [r3, #24] - 8035ccc: f023 020f bic.w r2, r3, #15 - 8035cd0: 687b ldr r3, [r7, #4] - 8035cd2: 68db ldr r3, [r3, #12] - 8035cd4: 4947 ldr r1, [pc, #284] ; (8035df4 ) - 8035cd6: 4313 orrs r3, r2 - 8035cd8: 618b str r3, [r1, #24] + 8035d08: 4b4a ldr r3, [pc, #296] ; (8035e34 ) + 8035d0a: 699b ldr r3, [r3, #24] + 8035d0c: f023 020f bic.w r2, r3, #15 + 8035d10: 687b ldr r3, [r7, #4] + 8035d12: 68db ldr r3, [r3, #12] + 8035d14: 4947 ldr r1, [pc, #284] ; (8035e34 ) + 8035d16: 4313 orrs r3, r2 + 8035d18: 618b str r3, [r1, #24] } #endif } /*------------------------- SYSCLK Configuration -------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK) - 8035cda: 687b ldr r3, [r7, #4] - 8035cdc: 681b ldr r3, [r3, #0] - 8035cde: f003 0301 and.w r3, r3, #1 - 8035ce2: 2b00 cmp r3, #0 - 8035ce4: d055 beq.n 8035d92 + 8035d1a: 687b ldr r3, [r7, #4] + 8035d1c: 681b ldr r3, [r3, #0] + 8035d1e: f003 0301 and.w r3, r3, #1 + 8035d22: 2b00 cmp r3, #0 + 8035d24: d055 beq.n 8035dd2 { assert_param(IS_RCC_SYSCLK(RCC_ClkInitStruct->SYSCLKDivider)); assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource)); #if defined(RCC_D1CFGR_D1CPRE) MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1CPRE, RCC_ClkInitStruct->SYSCLKDivider); - 8035ce6: 4b43 ldr r3, [pc, #268] ; (8035df4 ) - 8035ce8: 699b ldr r3, [r3, #24] - 8035cea: f423 6270 bic.w r2, r3, #3840 ; 0xf00 - 8035cee: 687b ldr r3, [r7, #4] - 8035cf0: 689b ldr r3, [r3, #8] - 8035cf2: 4940 ldr r1, [pc, #256] ; (8035df4 ) - 8035cf4: 4313 orrs r3, r2 - 8035cf6: 618b str r3, [r1, #24] + 8035d26: 4b43 ldr r3, [pc, #268] ; (8035e34 ) + 8035d28: 699b ldr r3, [r3, #24] + 8035d2a: f423 6270 bic.w r2, r3, #3840 ; 0xf00 + 8035d2e: 687b ldr r3, [r7, #4] + 8035d30: 689b ldr r3, [r3, #8] + 8035d32: 4940 ldr r1, [pc, #256] ; (8035e34 ) + 8035d34: 4313 orrs r3, r2 + 8035d36: 618b str r3, [r1, #24] #else MODIFY_REG(RCC->CDCFGR1, RCC_CDCFGR1_CDCPRE, RCC_ClkInitStruct->SYSCLKDivider); #endif /* HSE is selected as System Clock Source */ if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE) - 8035cf8: 687b ldr r3, [r7, #4] - 8035cfa: 685b ldr r3, [r3, #4] - 8035cfc: 2b02 cmp r3, #2 - 8035cfe: d107 bne.n 8035d10 + 8035d38: 687b ldr r3, [r7, #4] + 8035d3a: 685b ldr r3, [r3, #4] + 8035d3c: 2b02 cmp r3, #2 + 8035d3e: d107 bne.n 8035d50 { /* Check the HSE ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == 0U) - 8035d00: 4b3c ldr r3, [pc, #240] ; (8035df4 ) - 8035d02: 681b ldr r3, [r3, #0] - 8035d04: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8035d08: 2b00 cmp r3, #0 - 8035d0a: d121 bne.n 8035d50 + 8035d40: 4b3c ldr r3, [pc, #240] ; (8035e34 ) + 8035d42: 681b ldr r3, [r3, #0] + 8035d44: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8035d48: 2b00 cmp r3, #0 + 8035d4a: d121 bne.n 8035d90 { return HAL_ERROR; - 8035d0c: 2301 movs r3, #1 - 8035d0e: e0f6 b.n 8035efe + 8035d4c: 2301 movs r3, #1 + 8035d4e: e0f6 b.n 8035f3e } } /* PLL is selected as System Clock Source */ else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK) - 8035d10: 687b ldr r3, [r7, #4] - 8035d12: 685b ldr r3, [r3, #4] - 8035d14: 2b03 cmp r3, #3 - 8035d16: d107 bne.n 8035d28 + 8035d50: 687b ldr r3, [r7, #4] + 8035d52: 685b ldr r3, [r3, #4] + 8035d54: 2b03 cmp r3, #3 + 8035d56: d107 bne.n 8035d68 { /* Check the PLL ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == 0U) - 8035d18: 4b36 ldr r3, [pc, #216] ; (8035df4 ) - 8035d1a: 681b ldr r3, [r3, #0] - 8035d1c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8035d20: 2b00 cmp r3, #0 - 8035d22: d115 bne.n 8035d50 + 8035d58: 4b36 ldr r3, [pc, #216] ; (8035e34 ) + 8035d5a: 681b ldr r3, [r3, #0] + 8035d5c: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8035d60: 2b00 cmp r3, #0 + 8035d62: d115 bne.n 8035d90 { return HAL_ERROR; - 8035d24: 2301 movs r3, #1 - 8035d26: e0ea b.n 8035efe + 8035d64: 2301 movs r3, #1 + 8035d66: e0ea b.n 8035f3e } } /* CSI is selected as System Clock Source */ else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_CSI) - 8035d28: 687b ldr r3, [r7, #4] - 8035d2a: 685b ldr r3, [r3, #4] - 8035d2c: 2b01 cmp r3, #1 - 8035d2e: d107 bne.n 8035d40 + 8035d68: 687b ldr r3, [r7, #4] + 8035d6a: 685b ldr r3, [r3, #4] + 8035d6c: 2b01 cmp r3, #1 + 8035d6e: d107 bne.n 8035d80 { /* Check the PLL ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_CSIRDY) == 0U) - 8035d30: 4b30 ldr r3, [pc, #192] ; (8035df4 ) - 8035d32: 681b ldr r3, [r3, #0] - 8035d34: f403 7380 and.w r3, r3, #256 ; 0x100 - 8035d38: 2b00 cmp r3, #0 - 8035d3a: d109 bne.n 8035d50 + 8035d70: 4b30 ldr r3, [pc, #192] ; (8035e34 ) + 8035d72: 681b ldr r3, [r3, #0] + 8035d74: f403 7380 and.w r3, r3, #256 ; 0x100 + 8035d78: 2b00 cmp r3, #0 + 8035d7a: d109 bne.n 8035d90 { return HAL_ERROR; - 8035d3c: 2301 movs r3, #1 - 8035d3e: e0de b.n 8035efe + 8035d7c: 2301 movs r3, #1 + 8035d7e: e0de b.n 8035f3e } /* HSI is selected as System Clock Source */ else { /* Check the HSI ready flag */ if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == 0U) - 8035d40: 4b2c ldr r3, [pc, #176] ; (8035df4 ) - 8035d42: 681b ldr r3, [r3, #0] - 8035d44: f003 0304 and.w r3, r3, #4 - 8035d48: 2b00 cmp r3, #0 - 8035d4a: d101 bne.n 8035d50 + 8035d80: 4b2c ldr r3, [pc, #176] ; (8035e34 ) + 8035d82: 681b ldr r3, [r3, #0] + 8035d84: f003 0304 and.w r3, r3, #4 + 8035d88: 2b00 cmp r3, #0 + 8035d8a: d101 bne.n 8035d90 { return HAL_ERROR; - 8035d4c: 2301 movs r3, #1 - 8035d4e: e0d6 b.n 8035efe + 8035d8c: 2301 movs r3, #1 + 8035d8e: e0d6 b.n 8035f3e } } MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_ClkInitStruct->SYSCLKSource); - 8035d50: 4b28 ldr r3, [pc, #160] ; (8035df4 ) - 8035d52: 691b ldr r3, [r3, #16] - 8035d54: f023 0207 bic.w r2, r3, #7 - 8035d58: 687b ldr r3, [r7, #4] - 8035d5a: 685b ldr r3, [r3, #4] - 8035d5c: 4925 ldr r1, [pc, #148] ; (8035df4 ) - 8035d5e: 4313 orrs r3, r2 - 8035d60: 610b str r3, [r1, #16] + 8035d90: 4b28 ldr r3, [pc, #160] ; (8035e34 ) + 8035d92: 691b ldr r3, [r3, #16] + 8035d94: f023 0207 bic.w r2, r3, #7 + 8035d98: 687b ldr r3, [r7, #4] + 8035d9a: 685b ldr r3, [r3, #4] + 8035d9c: 4925 ldr r1, [pc, #148] ; (8035e34 ) + 8035d9e: 4313 orrs r3, r2 + 8035da0: 610b str r3, [r1, #16] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 8035d62: f7f7 f917 bl 802cf94 - 8035d66: 6178 str r0, [r7, #20] + 8035da2: f7f7 f917 bl 802cfd4 + 8035da6: 6178 str r0, [r7, #20] while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8035d68: e00a b.n 8035d80 + 8035da8: e00a b.n 8035dc0 { if((HAL_GetTick() - tickstart ) > CLOCKSWITCH_TIMEOUT_VALUE) - 8035d6a: f7f7 f913 bl 802cf94 - 8035d6e: 4602 mov r2, r0 - 8035d70: 697b ldr r3, [r7, #20] - 8035d72: 1ad3 subs r3, r2, r3 - 8035d74: f241 3288 movw r2, #5000 ; 0x1388 - 8035d78: 4293 cmp r3, r2 - 8035d7a: d901 bls.n 8035d80 + 8035daa: f7f7 f913 bl 802cfd4 + 8035dae: 4602 mov r2, r0 + 8035db0: 697b ldr r3, [r7, #20] + 8035db2: 1ad3 subs r3, r2, r3 + 8035db4: f241 3288 movw r2, #5000 ; 0x1388 + 8035db8: 4293 cmp r3, r2 + 8035dba: d901 bls.n 8035dc0 { return HAL_TIMEOUT; - 8035d7c: 2303 movs r3, #3 - 8035d7e: e0be b.n 8035efe + 8035dbc: 2303 movs r3, #3 + 8035dbe: e0be b.n 8035f3e while (__HAL_RCC_GET_SYSCLK_SOURCE() != (RCC_ClkInitStruct->SYSCLKSource << RCC_CFGR_SWS_Pos)) - 8035d80: 4b1c ldr r3, [pc, #112] ; (8035df4 ) - 8035d82: 691b ldr r3, [r3, #16] - 8035d84: f003 0238 and.w r2, r3, #56 ; 0x38 - 8035d88: 687b ldr r3, [r7, #4] - 8035d8a: 685b ldr r3, [r3, #4] - 8035d8c: 00db lsls r3, r3, #3 - 8035d8e: 429a cmp r2, r3 - 8035d90: d1eb bne.n 8035d6a + 8035dc0: 4b1c ldr r3, [pc, #112] ; (8035e34 ) + 8035dc2: 691b ldr r3, [r3, #16] + 8035dc4: f003 0238 and.w r2, r3, #56 ; 0x38 + 8035dc8: 687b ldr r3, [r7, #4] + 8035dca: 685b ldr r3, [r3, #4] + 8035dcc: 00db lsls r3, r3, #3 + 8035dce: 429a cmp r2, r3 + 8035dd0: d1eb bne.n 8035daa } /* Decreasing the BUS frequency divider */ /*-------------------------- HCLK Configuration --------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK) - 8035d92: 687b ldr r3, [r7, #4] - 8035d94: 681b ldr r3, [r3, #0] - 8035d96: f003 0302 and.w r3, r3, #2 - 8035d9a: 2b00 cmp r3, #0 - 8035d9c: d010 beq.n 8035dc0 + 8035dd2: 687b ldr r3, [r7, #4] + 8035dd4: 681b ldr r3, [r3, #0] + 8035dd6: f003 0302 and.w r3, r3, #2 + 8035dda: 2b00 cmp r3, #0 + 8035ddc: d010 beq.n 8035e00 { #if defined(RCC_D1CFGR_HPRE) if((RCC_ClkInitStruct->AHBCLKDivider) < (RCC->D1CFGR & RCC_D1CFGR_HPRE)) - 8035d9e: 687b ldr r3, [r7, #4] - 8035da0: 68da ldr r2, [r3, #12] - 8035da2: 4b14 ldr r3, [pc, #80] ; (8035df4 ) - 8035da4: 699b ldr r3, [r3, #24] - 8035da6: f003 030f and.w r3, r3, #15 - 8035daa: 429a cmp r2, r3 - 8035dac: d208 bcs.n 8035dc0 + 8035dde: 687b ldr r3, [r7, #4] + 8035de0: 68da ldr r2, [r3, #12] + 8035de2: 4b14 ldr r3, [pc, #80] ; (8035e34 ) + 8035de4: 699b ldr r3, [r3, #24] + 8035de6: f003 030f and.w r3, r3, #15 + 8035dea: 429a cmp r2, r3 + 8035dec: d208 bcs.n 8035e00 { /* Set the new HCLK clock divider */ assert_param(IS_RCC_HCLK(RCC_ClkInitStruct->AHBCLKDivider)); MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_HPRE, RCC_ClkInitStruct->AHBCLKDivider); - 8035dae: 4b11 ldr r3, [pc, #68] ; (8035df4 ) - 8035db0: 699b ldr r3, [r3, #24] - 8035db2: f023 020f bic.w r2, r3, #15 - 8035db6: 687b ldr r3, [r7, #4] - 8035db8: 68db ldr r3, [r3, #12] - 8035dba: 490e ldr r1, [pc, #56] ; (8035df4 ) - 8035dbc: 4313 orrs r3, r2 - 8035dbe: 618b str r3, [r1, #24] + 8035dee: 4b11 ldr r3, [pc, #68] ; (8035e34 ) + 8035df0: 699b ldr r3, [r3, #24] + 8035df2: f023 020f bic.w r2, r3, #15 + 8035df6: 687b ldr r3, [r7, #4] + 8035df8: 68db ldr r3, [r3, #12] + 8035dfa: 490e ldr r1, [pc, #56] ; (8035e34 ) + 8035dfc: 4313 orrs r3, r2 + 8035dfe: 618b str r3, [r1, #24] } #endif } /* Decreasing the number of wait states because of lower CPU frequency */ if(FLatency < __HAL_FLASH_GET_LATENCY()) - 8035dc0: 4b0b ldr r3, [pc, #44] ; (8035df0 ) - 8035dc2: 681b ldr r3, [r3, #0] - 8035dc4: f003 030f and.w r3, r3, #15 - 8035dc8: 683a ldr r2, [r7, #0] - 8035dca: 429a cmp r2, r3 - 8035dcc: d214 bcs.n 8035df8 + 8035e00: 4b0b ldr r3, [pc, #44] ; (8035e30 ) + 8035e02: 681b ldr r3, [r3, #0] + 8035e04: f003 030f and.w r3, r3, #15 + 8035e08: 683a ldr r2, [r7, #0] + 8035e0a: 429a cmp r2, r3 + 8035e0c: d214 bcs.n 8035e38 { /* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */ __HAL_FLASH_SET_LATENCY(FLatency); - 8035dce: 4b08 ldr r3, [pc, #32] ; (8035df0 ) - 8035dd0: 681b ldr r3, [r3, #0] - 8035dd2: f023 020f bic.w r2, r3, #15 - 8035dd6: 4906 ldr r1, [pc, #24] ; (8035df0 ) - 8035dd8: 683b ldr r3, [r7, #0] - 8035dda: 4313 orrs r3, r2 - 8035ddc: 600b str r3, [r1, #0] + 8035e0e: 4b08 ldr r3, [pc, #32] ; (8035e30 ) + 8035e10: 681b ldr r3, [r3, #0] + 8035e12: f023 020f bic.w r2, r3, #15 + 8035e16: 4906 ldr r1, [pc, #24] ; (8035e30 ) + 8035e18: 683b ldr r3, [r7, #0] + 8035e1a: 4313 orrs r3, r2 + 8035e1c: 600b str r3, [r1, #0] /* Check that the new number of wait states is taken into account to access the Flash memory by reading the FLASH_ACR register */ if(__HAL_FLASH_GET_LATENCY() != FLatency) - 8035dde: 4b04 ldr r3, [pc, #16] ; (8035df0 ) - 8035de0: 681b ldr r3, [r3, #0] - 8035de2: f003 030f and.w r3, r3, #15 - 8035de6: 683a ldr r2, [r7, #0] - 8035de8: 429a cmp r2, r3 - 8035dea: d005 beq.n 8035df8 + 8035e1e: 4b04 ldr r3, [pc, #16] ; (8035e30 ) + 8035e20: 681b ldr r3, [r3, #0] + 8035e22: f003 030f and.w r3, r3, #15 + 8035e26: 683a ldr r2, [r7, #0] + 8035e28: 429a cmp r2, r3 + 8035e2a: d005 beq.n 8035e38 { return HAL_ERROR; - 8035dec: 2301 movs r3, #1 - 8035dee: e086 b.n 8035efe - 8035df0: 52002000 .word 0x52002000 - 8035df4: 58024400 .word 0x58024400 + 8035e2c: 2301 movs r3, #1 + 8035e2e: e086 b.n 8035f3e + 8035e30: 52002000 .word 0x52002000 + 8035e34: 58024400 .word 0x58024400 } } /*-------------------------- D1PCLK1/CDPCLK Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D1PCLK1) == RCC_CLOCKTYPE_D1PCLK1) - 8035df8: 687b ldr r3, [r7, #4] - 8035dfa: 681b ldr r3, [r3, #0] - 8035dfc: f003 0304 and.w r3, r3, #4 - 8035e00: 2b00 cmp r3, #0 - 8035e02: d010 beq.n 8035e26 + 8035e38: 687b ldr r3, [r7, #4] + 8035e3a: 681b ldr r3, [r3, #0] + 8035e3c: f003 0304 and.w r3, r3, #4 + 8035e40: 2b00 cmp r3, #0 + 8035e42: d010 beq.n 8035e66 { #if defined(RCC_D1CFGR_D1PPRE) if((RCC_ClkInitStruct->APB3CLKDivider) < (RCC->D1CFGR & RCC_D1CFGR_D1PPRE)) - 8035e04: 687b ldr r3, [r7, #4] - 8035e06: 691a ldr r2, [r3, #16] - 8035e08: 4b3f ldr r3, [pc, #252] ; (8035f08 ) - 8035e0a: 699b ldr r3, [r3, #24] - 8035e0c: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035e10: 429a cmp r2, r3 - 8035e12: d208 bcs.n 8035e26 + 8035e44: 687b ldr r3, [r7, #4] + 8035e46: 691a ldr r2, [r3, #16] + 8035e48: 4b3f ldr r3, [pc, #252] ; (8035f48 ) + 8035e4a: 699b ldr r3, [r3, #24] + 8035e4c: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035e50: 429a cmp r2, r3 + 8035e52: d208 bcs.n 8035e66 { assert_param(IS_RCC_D1PCLK1(RCC_ClkInitStruct->APB3CLKDivider)); MODIFY_REG(RCC->D1CFGR, RCC_D1CFGR_D1PPRE, RCC_ClkInitStruct->APB3CLKDivider); - 8035e14: 4b3c ldr r3, [pc, #240] ; (8035f08 ) - 8035e16: 699b ldr r3, [r3, #24] - 8035e18: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035e1c: 687b ldr r3, [r7, #4] - 8035e1e: 691b ldr r3, [r3, #16] - 8035e20: 4939 ldr r1, [pc, #228] ; (8035f08 ) - 8035e22: 4313 orrs r3, r2 - 8035e24: 618b str r3, [r1, #24] + 8035e54: 4b3c ldr r3, [pc, #240] ; (8035f48 ) + 8035e56: 699b ldr r3, [r3, #24] + 8035e58: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035e5c: 687b ldr r3, [r7, #4] + 8035e5e: 691b ldr r3, [r3, #16] + 8035e60: 4939 ldr r1, [pc, #228] ; (8035f48 ) + 8035e62: 4313 orrs r3, r2 + 8035e64: 618b str r3, [r1, #24] } #endif } /*-------------------------- PCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1) - 8035e26: 687b ldr r3, [r7, #4] - 8035e28: 681b ldr r3, [r3, #0] - 8035e2a: f003 0308 and.w r3, r3, #8 - 8035e2e: 2b00 cmp r3, #0 - 8035e30: d010 beq.n 8035e54 + 8035e66: 687b ldr r3, [r7, #4] + 8035e68: 681b ldr r3, [r3, #0] + 8035e6a: f003 0308 and.w r3, r3, #8 + 8035e6e: 2b00 cmp r3, #0 + 8035e70: d010 beq.n 8035e94 { #if defined(RCC_D2CFGR_D2PPRE1) if((RCC_ClkInitStruct->APB1CLKDivider) < (RCC->D2CFGR & RCC_D2CFGR_D2PPRE1)) - 8035e32: 687b ldr r3, [r7, #4] - 8035e34: 695a ldr r2, [r3, #20] - 8035e36: 4b34 ldr r3, [pc, #208] ; (8035f08 ) - 8035e38: 69db ldr r3, [r3, #28] - 8035e3a: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035e3e: 429a cmp r2, r3 - 8035e40: d208 bcs.n 8035e54 + 8035e72: 687b ldr r3, [r7, #4] + 8035e74: 695a ldr r2, [r3, #20] + 8035e76: 4b34 ldr r3, [pc, #208] ; (8035f48 ) + 8035e78: 69db ldr r3, [r3, #28] + 8035e7a: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035e7e: 429a cmp r2, r3 + 8035e80: d208 bcs.n 8035e94 { assert_param(IS_RCC_PCLK1(RCC_ClkInitStruct->APB1CLKDivider)); MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE1, (RCC_ClkInitStruct->APB1CLKDivider)); - 8035e42: 4b31 ldr r3, [pc, #196] ; (8035f08 ) - 8035e44: 69db ldr r3, [r3, #28] - 8035e46: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035e4a: 687b ldr r3, [r7, #4] - 8035e4c: 695b ldr r3, [r3, #20] - 8035e4e: 492e ldr r1, [pc, #184] ; (8035f08 ) - 8035e50: 4313 orrs r3, r2 - 8035e52: 61cb str r3, [r1, #28] + 8035e82: 4b31 ldr r3, [pc, #196] ; (8035f48 ) + 8035e84: 69db ldr r3, [r3, #28] + 8035e86: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035e8a: 687b ldr r3, [r7, #4] + 8035e8c: 695b ldr r3, [r3, #20] + 8035e8e: 492e ldr r1, [pc, #184] ; (8035f48 ) + 8035e90: 4313 orrs r3, r2 + 8035e92: 61cb str r3, [r1, #28] } #endif } /*-------------------------- PCLK2 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2) - 8035e54: 687b ldr r3, [r7, #4] - 8035e56: 681b ldr r3, [r3, #0] - 8035e58: f003 0310 and.w r3, r3, #16 - 8035e5c: 2b00 cmp r3, #0 - 8035e5e: d010 beq.n 8035e82 + 8035e94: 687b ldr r3, [r7, #4] + 8035e96: 681b ldr r3, [r3, #0] + 8035e98: f003 0310 and.w r3, r3, #16 + 8035e9c: 2b00 cmp r3, #0 + 8035e9e: d010 beq.n 8035ec2 { #if defined (RCC_D2CFGR_D2PPRE2) if((RCC_ClkInitStruct->APB2CLKDivider) < (RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)) - 8035e60: 687b ldr r3, [r7, #4] - 8035e62: 699a ldr r2, [r3, #24] - 8035e64: 4b28 ldr r3, [pc, #160] ; (8035f08 ) - 8035e66: 69db ldr r3, [r3, #28] - 8035e68: f403 63e0 and.w r3, r3, #1792 ; 0x700 - 8035e6c: 429a cmp r2, r3 - 8035e6e: d208 bcs.n 8035e82 + 8035ea0: 687b ldr r3, [r7, #4] + 8035ea2: 699a ldr r2, [r3, #24] + 8035ea4: 4b28 ldr r3, [pc, #160] ; (8035f48 ) + 8035ea6: 69db ldr r3, [r3, #28] + 8035ea8: f403 63e0 and.w r3, r3, #1792 ; 0x700 + 8035eac: 429a cmp r2, r3 + 8035eae: d208 bcs.n 8035ec2 { assert_param(IS_RCC_PCLK2(RCC_ClkInitStruct->APB2CLKDivider)); MODIFY_REG(RCC->D2CFGR, RCC_D2CFGR_D2PPRE2, (RCC_ClkInitStruct->APB2CLKDivider)); - 8035e70: 4b25 ldr r3, [pc, #148] ; (8035f08 ) - 8035e72: 69db ldr r3, [r3, #28] - 8035e74: f423 62e0 bic.w r2, r3, #1792 ; 0x700 - 8035e78: 687b ldr r3, [r7, #4] - 8035e7a: 699b ldr r3, [r3, #24] - 8035e7c: 4922 ldr r1, [pc, #136] ; (8035f08 ) - 8035e7e: 4313 orrs r3, r2 - 8035e80: 61cb str r3, [r1, #28] + 8035eb0: 4b25 ldr r3, [pc, #148] ; (8035f48 ) + 8035eb2: 69db ldr r3, [r3, #28] + 8035eb4: f423 62e0 bic.w r2, r3, #1792 ; 0x700 + 8035eb8: 687b ldr r3, [r7, #4] + 8035eba: 699b ldr r3, [r3, #24] + 8035ebc: 4922 ldr r1, [pc, #136] ; (8035f48 ) + 8035ebe: 4313 orrs r3, r2 + 8035ec0: 61cb str r3, [r1, #28] } #endif } /*-------------------------- D3PCLK1/SRDPCLK1 Configuration ---------------------------*/ if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_D3PCLK1) == RCC_CLOCKTYPE_D3PCLK1) - 8035e82: 687b ldr r3, [r7, #4] - 8035e84: 681b ldr r3, [r3, #0] - 8035e86: f003 0320 and.w r3, r3, #32 - 8035e8a: 2b00 cmp r3, #0 - 8035e8c: d010 beq.n 8035eb0 + 8035ec2: 687b ldr r3, [r7, #4] + 8035ec4: 681b ldr r3, [r3, #0] + 8035ec6: f003 0320 and.w r3, r3, #32 + 8035eca: 2b00 cmp r3, #0 + 8035ecc: d010 beq.n 8035ef0 { #if defined(RCC_D3CFGR_D3PPRE) if((RCC_ClkInitStruct->APB4CLKDivider) < (RCC->D3CFGR & RCC_D3CFGR_D3PPRE)) - 8035e8e: 687b ldr r3, [r7, #4] - 8035e90: 69da ldr r2, [r3, #28] - 8035e92: 4b1d ldr r3, [pc, #116] ; (8035f08 ) - 8035e94: 6a1b ldr r3, [r3, #32] - 8035e96: f003 0370 and.w r3, r3, #112 ; 0x70 - 8035e9a: 429a cmp r2, r3 - 8035e9c: d208 bcs.n 8035eb0 + 8035ece: 687b ldr r3, [r7, #4] + 8035ed0: 69da ldr r2, [r3, #28] + 8035ed2: 4b1d ldr r3, [pc, #116] ; (8035f48 ) + 8035ed4: 6a1b ldr r3, [r3, #32] + 8035ed6: f003 0370 and.w r3, r3, #112 ; 0x70 + 8035eda: 429a cmp r2, r3 + 8035edc: d208 bcs.n 8035ef0 { assert_param(IS_RCC_D3PCLK1(RCC_ClkInitStruct->APB4CLKDivider)); MODIFY_REG(RCC->D3CFGR, RCC_D3CFGR_D3PPRE, (RCC_ClkInitStruct->APB4CLKDivider) ); - 8035e9e: 4b1a ldr r3, [pc, #104] ; (8035f08 ) - 8035ea0: 6a1b ldr r3, [r3, #32] - 8035ea2: f023 0270 bic.w r2, r3, #112 ; 0x70 - 8035ea6: 687b ldr r3, [r7, #4] - 8035ea8: 69db ldr r3, [r3, #28] - 8035eaa: 4917 ldr r1, [pc, #92] ; (8035f08 ) - 8035eac: 4313 orrs r3, r2 - 8035eae: 620b str r3, [r1, #32] + 8035ede: 4b1a ldr r3, [pc, #104] ; (8035f48 ) + 8035ee0: 6a1b ldr r3, [r3, #32] + 8035ee2: f023 0270 bic.w r2, r3, #112 ; 0x70 + 8035ee6: 687b ldr r3, [r7, #4] + 8035ee8: 69db ldr r3, [r3, #28] + 8035eea: 4917 ldr r1, [pc, #92] ; (8035f48 ) + 8035eec: 4313 orrs r3, r2 + 8035eee: 620b str r3, [r1, #32] #endif } /* Update the SystemCoreClock global variable */ #if defined(RCC_D1CFGR_D1CPRE) common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos]) & 0x1FU); - 8035eb0: f000 f844 bl 8035f3c - 8035eb4: 4602 mov r2, r0 - 8035eb6: 4b14 ldr r3, [pc, #80] ; (8035f08 ) - 8035eb8: 699b ldr r3, [r3, #24] - 8035eba: 0a1b lsrs r3, r3, #8 - 8035ebc: f003 030f and.w r3, r3, #15 - 8035ec0: 4912 ldr r1, [pc, #72] ; (8035f0c ) - 8035ec2: 5ccb ldrb r3, [r1, r3] - 8035ec4: f003 031f and.w r3, r3, #31 - 8035ec8: fa22 f303 lsr.w r3, r2, r3 - 8035ecc: 613b str r3, [r7, #16] + 8035ef0: f000 f844 bl 8035f7c + 8035ef4: 4602 mov r2, r0 + 8035ef6: 4b14 ldr r3, [pc, #80] ; (8035f48 ) + 8035ef8: 699b ldr r3, [r3, #24] + 8035efa: 0a1b lsrs r3, r3, #8 + 8035efc: f003 030f and.w r3, r3, #15 + 8035f00: 4912 ldr r1, [pc, #72] ; (8035f4c ) + 8035f02: 5ccb ldrb r3, [r1, r3] + 8035f04: f003 031f and.w r3, r3, #31 + 8035f08: fa22 f303 lsr.w r3, r2, r3 + 8035f0c: 613b str r3, [r7, #16] #else common_system_clock = HAL_RCC_GetSysClockFreq() >> ((D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos]) & 0x1FU); #endif #if defined(RCC_D1CFGR_HPRE) SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU)); - 8035ece: 4b0e ldr r3, [pc, #56] ; (8035f08 ) - 8035ed0: 699b ldr r3, [r3, #24] - 8035ed2: f003 030f and.w r3, r3, #15 - 8035ed6: 4a0d ldr r2, [pc, #52] ; (8035f0c ) - 8035ed8: 5cd3 ldrb r3, [r2, r3] - 8035eda: f003 031f and.w r3, r3, #31 - 8035ede: 693a ldr r2, [r7, #16] - 8035ee0: fa22 f303 lsr.w r3, r2, r3 - 8035ee4: 4a0a ldr r2, [pc, #40] ; (8035f10 ) - 8035ee6: 6013 str r3, [r2, #0] + 8035f0e: 4b0e ldr r3, [pc, #56] ; (8035f48 ) + 8035f10: 699b ldr r3, [r3, #24] + 8035f12: f003 030f and.w r3, r3, #15 + 8035f16: 4a0d ldr r2, [pc, #52] ; (8035f4c ) + 8035f18: 5cd3 ldrb r3, [r2, r3] + 8035f1a: f003 031f and.w r3, r3, #31 + 8035f1e: 693a ldr r2, [r7, #16] + 8035f20: fa22 f303 lsr.w r3, r2, r3 + 8035f24: 4a0a ldr r2, [pc, #40] ; (8035f50 ) + 8035f26: 6013 str r3, [r2, #0] #endif #if defined(DUAL_CORE) && defined(CORE_CM4) SystemCoreClock = SystemD2Clock; #else SystemCoreClock = common_system_clock; - 8035ee8: 4a0a ldr r2, [pc, #40] ; (8035f14 ) - 8035eea: 693b ldr r3, [r7, #16] - 8035eec: 6013 str r3, [r2, #0] + 8035f28: 4a0a ldr r2, [pc, #40] ; (8035f54 ) + 8035f2a: 693b ldr r3, [r7, #16] + 8035f2c: 6013 str r3, [r2, #0] #endif /* DUAL_CORE && CORE_CM4 */ /* Configure the source of time base considering new system clocks settings*/ halstatus = HAL_InitTick (uwTickPrio); - 8035eee: 4b0a ldr r3, [pc, #40] ; (8035f18 ) - 8035ef0: 681b ldr r3, [r3, #0] - 8035ef2: 4618 mov r0, r3 - 8035ef4: f7f7 f804 bl 802cf00 - 8035ef8: 4603 mov r3, r0 - 8035efa: 73fb strb r3, [r7, #15] + 8035f2e: 4b0a ldr r3, [pc, #40] ; (8035f58 ) + 8035f30: 681b ldr r3, [r3, #0] + 8035f32: 4618 mov r0, r3 + 8035f34: f7f7 f804 bl 802cf40 + 8035f38: 4603 mov r3, r0 + 8035f3a: 73fb strb r3, [r7, #15] return halstatus; - 8035efc: 7bfb ldrb r3, [r7, #15] -} - 8035efe: 4618 mov r0, r3 - 8035f00: 3718 adds r7, #24 - 8035f02: 46bd mov sp, r7 - 8035f04: bd80 pop {r7, pc} - 8035f06: bf00 nop - 8035f08: 58024400 .word 0x58024400 - 8035f0c: 0804d35c .word 0x0804d35c - 8035f10: 2400011c .word 0x2400011c - 8035f14: 24000118 .word 0x24000118 - 8035f18: 24000120 .word 0x24000120 - -08035f1c : + 8035f3c: 7bfb ldrb r3, [r7, #15] +} + 8035f3e: 4618 mov r0, r3 + 8035f40: 3718 adds r7, #24 + 8035f42: 46bd mov sp, r7 + 8035f44: bd80 pop {r7, pc} + 8035f46: bf00 nop + 8035f48: 58024400 .word 0x58024400 + 8035f4c: 0804d39c .word 0x0804d39c + 8035f50: 2400011c .word 0x2400011c + 8035f54: 24000118 .word 0x24000118 + 8035f58: 24000120 .word 0x24000120 + +08035f5c : * allowing the MCU to perform rescue operations. The CSSI is linked to * the Cortex-M NMI (Non-Mask-able Interrupt) exception vector. * @retval None */ void HAL_RCC_EnableCSS(void) { - 8035f1c: b480 push {r7} - 8035f1e: af00 add r7, sp, #0 + 8035f5c: b480 push {r7} + 8035f5e: af00 add r7, sp, #0 SET_BIT(RCC->CR, RCC_CR_CSSHSEON) ; - 8035f20: 4b05 ldr r3, [pc, #20] ; (8035f38 ) - 8035f22: 681b ldr r3, [r3, #0] - 8035f24: 4a04 ldr r2, [pc, #16] ; (8035f38 ) - 8035f26: f443 2300 orr.w r3, r3, #524288 ; 0x80000 - 8035f2a: 6013 str r3, [r2, #0] -} - 8035f2c: bf00 nop - 8035f2e: 46bd mov sp, r7 - 8035f30: f85d 7b04 ldr.w r7, [sp], #4 - 8035f34: 4770 bx lr - 8035f36: bf00 nop - 8035f38: 58024400 .word 0x58024400 - -08035f3c : + 8035f60: 4b05 ldr r3, [pc, #20] ; (8035f78 ) + 8035f62: 681b ldr r3, [r3, #0] + 8035f64: 4a04 ldr r2, [pc, #16] ; (8035f78 ) + 8035f66: f443 2300 orr.w r3, r3, #524288 ; 0x80000 + 8035f6a: 6013 str r3, [r2, #0] +} + 8035f6c: bf00 nop + 8035f6e: 46bd mov sp, r7 + 8035f70: f85d 7b04 ldr.w r7, [sp], #4 + 8035f74: 4770 bx lr + 8035f76: bf00 nop + 8035f78: 58024400 .word 0x58024400 + +08035f7c : * * * @retval SYSCLK frequency */ uint32_t HAL_RCC_GetSysClockFreq(void) { - 8035f3c: b480 push {r7} - 8035f3e: b089 sub sp, #36 ; 0x24 - 8035f40: af00 add r7, sp, #0 + 8035f7c: b480 push {r7} + 8035f7e: b089 sub sp, #36 ; 0x24 + 8035f80: af00 add r7, sp, #0 float_t fracn1, pllvco; uint32_t sysclockfreq; /* Get SYSCLK source -------------------------------------------------------*/ switch (RCC->CFGR & RCC_CFGR_SWS) - 8035f42: 4bb3 ldr r3, [pc, #716] ; (8036210 ) - 8035f44: 691b ldr r3, [r3, #16] - 8035f46: f003 0338 and.w r3, r3, #56 ; 0x38 - 8035f4a: 2b18 cmp r3, #24 - 8035f4c: f200 8155 bhi.w 80361fa - 8035f50: a201 add r2, pc, #4 ; (adr r2, 8035f58 ) - 8035f52: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8035f56: bf00 nop - 8035f58: 08035fbd .word 0x08035fbd - 8035f5c: 080361fb .word 0x080361fb - 8035f60: 080361fb .word 0x080361fb - 8035f64: 080361fb .word 0x080361fb - 8035f68: 080361fb .word 0x080361fb - 8035f6c: 080361fb .word 0x080361fb - 8035f70: 080361fb .word 0x080361fb - 8035f74: 080361fb .word 0x080361fb - 8035f78: 08035fe3 .word 0x08035fe3 - 8035f7c: 080361fb .word 0x080361fb - 8035f80: 080361fb .word 0x080361fb - 8035f84: 080361fb .word 0x080361fb - 8035f88: 080361fb .word 0x080361fb - 8035f8c: 080361fb .word 0x080361fb - 8035f90: 080361fb .word 0x080361fb - 8035f94: 080361fb .word 0x080361fb - 8035f98: 08035fe9 .word 0x08035fe9 - 8035f9c: 080361fb .word 0x080361fb - 8035fa0: 080361fb .word 0x080361fb - 8035fa4: 080361fb .word 0x080361fb - 8035fa8: 080361fb .word 0x080361fb - 8035fac: 080361fb .word 0x080361fb - 8035fb0: 080361fb .word 0x080361fb - 8035fb4: 080361fb .word 0x080361fb - 8035fb8: 08035fef .word 0x08035fef + 8035f82: 4bb3 ldr r3, [pc, #716] ; (8036250 ) + 8035f84: 691b ldr r3, [r3, #16] + 8035f86: f003 0338 and.w r3, r3, #56 ; 0x38 + 8035f8a: 2b18 cmp r3, #24 + 8035f8c: f200 8155 bhi.w 803623a + 8035f90: a201 add r2, pc, #4 ; (adr r2, 8035f98 ) + 8035f92: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8035f96: bf00 nop + 8035f98: 08035ffd .word 0x08035ffd + 8035f9c: 0803623b .word 0x0803623b + 8035fa0: 0803623b .word 0x0803623b + 8035fa4: 0803623b .word 0x0803623b + 8035fa8: 0803623b .word 0x0803623b + 8035fac: 0803623b .word 0x0803623b + 8035fb0: 0803623b .word 0x0803623b + 8035fb4: 0803623b .word 0x0803623b + 8035fb8: 08036023 .word 0x08036023 + 8035fbc: 0803623b .word 0x0803623b + 8035fc0: 0803623b .word 0x0803623b + 8035fc4: 0803623b .word 0x0803623b + 8035fc8: 0803623b .word 0x0803623b + 8035fcc: 0803623b .word 0x0803623b + 8035fd0: 0803623b .word 0x0803623b + 8035fd4: 0803623b .word 0x0803623b + 8035fd8: 08036029 .word 0x08036029 + 8035fdc: 0803623b .word 0x0803623b + 8035fe0: 0803623b .word 0x0803623b + 8035fe4: 0803623b .word 0x0803623b + 8035fe8: 0803623b .word 0x0803623b + 8035fec: 0803623b .word 0x0803623b + 8035ff0: 0803623b .word 0x0803623b + 8035ff4: 0803623b .word 0x0803623b + 8035ff8: 0803602f .word 0x0803602f { case RCC_CFGR_SWS_HSI: /* HSI used as system clock source */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 8035fbc: 4b94 ldr r3, [pc, #592] ; (8036210 ) - 8035fbe: 681b ldr r3, [r3, #0] - 8035fc0: f003 0320 and.w r3, r3, #32 - 8035fc4: 2b00 cmp r3, #0 - 8035fc6: d009 beq.n 8035fdc + 8035ffc: 4b94 ldr r3, [pc, #592] ; (8036250 ) + 8035ffe: 681b ldr r3, [r3, #0] + 8036000: f003 0320 and.w r3, r3, #32 + 8036004: 2b00 cmp r3, #0 + 8036006: d009 beq.n 803601c { sysclockfreq = (uint32_t) (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8035fc8: 4b91 ldr r3, [pc, #580] ; (8036210 ) - 8035fca: 681b ldr r3, [r3, #0] - 8035fcc: 08db lsrs r3, r3, #3 - 8035fce: f003 0303 and.w r3, r3, #3 - 8035fd2: 4a90 ldr r2, [pc, #576] ; (8036214 ) - 8035fd4: fa22 f303 lsr.w r3, r2, r3 - 8035fd8: 61bb str r3, [r7, #24] + 8036008: 4b91 ldr r3, [pc, #580] ; (8036250 ) + 803600a: 681b ldr r3, [r3, #0] + 803600c: 08db lsrs r3, r3, #3 + 803600e: f003 0303 and.w r3, r3, #3 + 8036012: 4a90 ldr r2, [pc, #576] ; (8036254 ) + 8036014: fa22 f303 lsr.w r3, r2, r3 + 8036018: 61bb str r3, [r7, #24] else { sysclockfreq = (uint32_t) HSI_VALUE; } break; - 8035fda: e111 b.n 8036200 + 803601a: e111 b.n 8036240 sysclockfreq = (uint32_t) HSI_VALUE; - 8035fdc: 4b8d ldr r3, [pc, #564] ; (8036214 ) - 8035fde: 61bb str r3, [r7, #24] + 803601c: 4b8d ldr r3, [pc, #564] ; (8036254 ) + 803601e: 61bb str r3, [r7, #24] break; - 8035fe0: e10e b.n 8036200 + 8036020: e10e b.n 8036240 case RCC_CFGR_SWS_CSI: /* CSI used as system clock source */ sysclockfreq = CSI_VALUE; - 8035fe2: 4b8d ldr r3, [pc, #564] ; (8036218 ) - 8035fe4: 61bb str r3, [r7, #24] + 8036022: 4b8d ldr r3, [pc, #564] ; (8036258 ) + 8036024: 61bb str r3, [r7, #24] break; - 8035fe6: e10b b.n 8036200 + 8036026: e10b b.n 8036240 case RCC_CFGR_SWS_HSE: /* HSE used as system clock source */ sysclockfreq = HSE_VALUE; - 8035fe8: 4b8c ldr r3, [pc, #560] ; (803621c ) - 8035fea: 61bb str r3, [r7, #24] + 8036028: 4b8c ldr r3, [pc, #560] ; (803625c ) + 803602a: 61bb str r3, [r7, #24] break; - 8035fec: e108 b.n 8036200 + 803602c: e108 b.n 8036240 case RCC_CFGR_SWS_PLL1: /* PLL1 used as system clock source */ /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLLM) * PLLN SYSCLK = PLL_VCO / PLLR */ pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC); - 8035fee: 4b88 ldr r3, [pc, #544] ; (8036210 ) - 8035ff0: 6a9b ldr r3, [r3, #40] ; 0x28 - 8035ff2: f003 0303 and.w r3, r3, #3 - 8035ff6: 617b str r3, [r7, #20] + 803602e: 4b88 ldr r3, [pc, #544] ; (8036250 ) + 8036030: 6a9b ldr r3, [r3, #40] ; 0x28 + 8036032: f003 0303 and.w r3, r3, #3 + 8036036: 617b str r3, [r7, #20] pllm = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4) ; - 8035ff8: 4b85 ldr r3, [pc, #532] ; (8036210 ) - 8035ffa: 6a9b ldr r3, [r3, #40] ; 0x28 - 8035ffc: 091b lsrs r3, r3, #4 - 8035ffe: f003 033f and.w r3, r3, #63 ; 0x3f - 8036002: 613b str r3, [r7, #16] + 8036038: 4b85 ldr r3, [pc, #532] ; (8036250 ) + 803603a: 6a9b ldr r3, [r3, #40] ; 0x28 + 803603c: 091b lsrs r3, r3, #4 + 803603e: f003 033f and.w r3, r3, #63 ; 0x3f + 8036042: 613b str r3, [r7, #16] pllfracen = ((RCC-> PLLCFGR & RCC_PLLCFGR_PLL1FRACEN)>>RCC_PLLCFGR_PLL1FRACEN_Pos); - 8036004: 4b82 ldr r3, [pc, #520] ; (8036210 ) - 8036006: 6adb ldr r3, [r3, #44] ; 0x2c - 8036008: f003 0301 and.w r3, r3, #1 - 803600c: 60fb str r3, [r7, #12] + 8036044: 4b82 ldr r3, [pc, #520] ; (8036250 ) + 8036046: 6adb ldr r3, [r3, #44] ; 0x2c + 8036048: f003 0301 and.w r3, r3, #1 + 803604c: 60fb str r3, [r7, #12] fracn1 = (float_t)(uint32_t)(pllfracen* ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3)); - 803600e: 4b80 ldr r3, [pc, #512] ; (8036210 ) - 8036010: 6b5b ldr r3, [r3, #52] ; 0x34 - 8036012: 08db lsrs r3, r3, #3 - 8036014: f3c3 030c ubfx r3, r3, #0, #13 - 8036018: 68fa ldr r2, [r7, #12] - 803601a: fb02 f303 mul.w r3, r2, r3 - 803601e: ee07 3a90 vmov s15, r3 - 8036022: eef8 7a67 vcvt.f32.u32 s15, s15 - 8036026: edc7 7a02 vstr s15, [r7, #8] + 803604e: 4b80 ldr r3, [pc, #512] ; (8036250 ) + 8036050: 6b5b ldr r3, [r3, #52] ; 0x34 + 8036052: 08db lsrs r3, r3, #3 + 8036054: f3c3 030c ubfx r3, r3, #0, #13 + 8036058: 68fa ldr r2, [r7, #12] + 803605a: fb02 f303 mul.w r3, r2, r3 + 803605e: ee07 3a90 vmov s15, r3 + 8036062: eef8 7a67 vcvt.f32.u32 s15, s15 + 8036066: edc7 7a02 vstr s15, [r7, #8] if (pllm != 0U) - 803602a: 693b ldr r3, [r7, #16] - 803602c: 2b00 cmp r3, #0 - 803602e: f000 80e1 beq.w 80361f4 - 8036032: 697b ldr r3, [r7, #20] - 8036034: 2b02 cmp r3, #2 - 8036036: f000 8083 beq.w 8036140 - 803603a: 697b ldr r3, [r7, #20] - 803603c: 2b02 cmp r3, #2 - 803603e: f200 80a1 bhi.w 8036184 - 8036042: 697b ldr r3, [r7, #20] - 8036044: 2b00 cmp r3, #0 - 8036046: d003 beq.n 8036050 - 8036048: 697b ldr r3, [r7, #20] - 803604a: 2b01 cmp r3, #1 - 803604c: d056 beq.n 80360fc - 803604e: e099 b.n 8036184 + 803606a: 693b ldr r3, [r7, #16] + 803606c: 2b00 cmp r3, #0 + 803606e: f000 80e1 beq.w 8036234 + 8036072: 697b ldr r3, [r7, #20] + 8036074: 2b02 cmp r3, #2 + 8036076: f000 8083 beq.w 8036180 + 803607a: 697b ldr r3, [r7, #20] + 803607c: 2b02 cmp r3, #2 + 803607e: f200 80a1 bhi.w 80361c4 + 8036082: 697b ldr r3, [r7, #20] + 8036084: 2b00 cmp r3, #0 + 8036086: d003 beq.n 8036090 + 8036088: 697b ldr r3, [r7, #20] + 803608a: 2b01 cmp r3, #1 + 803608c: d056 beq.n 803613c + 803608e: e099 b.n 80361c4 { switch (pllsource) { case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 8036050: 4b6f ldr r3, [pc, #444] ; (8036210 ) - 8036052: 681b ldr r3, [r3, #0] - 8036054: f003 0320 and.w r3, r3, #32 - 8036058: 2b00 cmp r3, #0 - 803605a: d02d beq.n 80360b8 + 8036090: 4b6f ldr r3, [pc, #444] ; (8036250 ) + 8036092: 681b ldr r3, [r3, #0] + 8036094: f003 0320 and.w r3, r3, #32 + 8036098: 2b00 cmp r3, #0 + 803609a: d02d beq.n 80360f8 { hsivalue= (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 803605c: 4b6c ldr r3, [pc, #432] ; (8036210 ) - 803605e: 681b ldr r3, [r3, #0] - 8036060: 08db lsrs r3, r3, #3 - 8036062: f003 0303 and.w r3, r3, #3 - 8036066: 4a6b ldr r2, [pc, #428] ; (8036214 ) - 8036068: fa22 f303 lsr.w r3, r2, r3 - 803606c: 607b str r3, [r7, #4] + 803609c: 4b6c ldr r3, [pc, #432] ; (8036250 ) + 803609e: 681b ldr r3, [r3, #0] + 80360a0: 08db lsrs r3, r3, #3 + 80360a2: f003 0303 and.w r3, r3, #3 + 80360a6: 4a6b ldr r2, [pc, #428] ; (8036254 ) + 80360a8: fa22 f303 lsr.w r3, r2, r3 + 80360ac: 607b str r3, [r7, #4] pllvco = ( (float_t)hsivalue / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 803606e: 687b ldr r3, [r7, #4] - 8036070: ee07 3a90 vmov s15, r3 - 8036074: eef8 6a67 vcvt.f32.u32 s13, s15 - 8036078: 693b ldr r3, [r7, #16] - 803607a: ee07 3a90 vmov s15, r3 - 803607e: eef8 7a67 vcvt.f32.u32 s15, s15 - 8036082: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8036086: 4b62 ldr r3, [pc, #392] ; (8036210 ) - 8036088: 6b1b ldr r3, [r3, #48] ; 0x30 - 803608a: f3c3 0308 ubfx r3, r3, #0, #9 - 803608e: ee07 3a90 vmov s15, r3 - 8036092: eef8 6a67 vcvt.f32.u32 s13, s15 - 8036096: ed97 6a02 vldr s12, [r7, #8] - 803609a: eddf 5a61 vldr s11, [pc, #388] ; 8036220 - 803609e: eec6 7a25 vdiv.f32 s15, s12, s11 - 80360a2: ee76 7aa7 vadd.f32 s15, s13, s15 - 80360a6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 80360aa: ee77 7aa6 vadd.f32 s15, s15, s13 - 80360ae: ee67 7a27 vmul.f32 s15, s14, s15 - 80360b2: edc7 7a07 vstr s15, [r7, #28] + 80360ae: 687b ldr r3, [r7, #4] + 80360b0: ee07 3a90 vmov s15, r3 + 80360b4: eef8 6a67 vcvt.f32.u32 s13, s15 + 80360b8: 693b ldr r3, [r7, #16] + 80360ba: ee07 3a90 vmov s15, r3 + 80360be: eef8 7a67 vcvt.f32.u32 s15, s15 + 80360c2: ee86 7aa7 vdiv.f32 s14, s13, s15 + 80360c6: 4b62 ldr r3, [pc, #392] ; (8036250 ) + 80360c8: 6b1b ldr r3, [r3, #48] ; 0x30 + 80360ca: f3c3 0308 ubfx r3, r3, #0, #9 + 80360ce: ee07 3a90 vmov s15, r3 + 80360d2: eef8 6a67 vcvt.f32.u32 s13, s15 + 80360d6: ed97 6a02 vldr s12, [r7, #8] + 80360da: eddf 5a61 vldr s11, [pc, #388] ; 8036260 + 80360de: eec6 7a25 vdiv.f32 s15, s12, s11 + 80360e2: ee76 7aa7 vadd.f32 s15, s13, s15 + 80360e6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 80360ea: ee77 7aa6 vadd.f32 s15, s15, s13 + 80360ee: ee67 7a27 vmul.f32 s15, s14, s15 + 80360f2: edc7 7a07 vstr s15, [r7, #28] } else { pllvco = ((float_t)HSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); } break; - 80360b6: e087 b.n 80361c8 + 80360f6: e087 b.n 8036208 pllvco = ((float_t)HSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 80360b8: 693b ldr r3, [r7, #16] - 80360ba: ee07 3a90 vmov s15, r3 - 80360be: eef8 7a67 vcvt.f32.u32 s15, s15 - 80360c2: eddf 6a58 vldr s13, [pc, #352] ; 8036224 - 80360c6: ee86 7aa7 vdiv.f32 s14, s13, s15 - 80360ca: 4b51 ldr r3, [pc, #324] ; (8036210 ) - 80360cc: 6b1b ldr r3, [r3, #48] ; 0x30 - 80360ce: f3c3 0308 ubfx r3, r3, #0, #9 - 80360d2: ee07 3a90 vmov s15, r3 - 80360d6: eef8 6a67 vcvt.f32.u32 s13, s15 - 80360da: ed97 6a02 vldr s12, [r7, #8] - 80360de: eddf 5a50 vldr s11, [pc, #320] ; 8036220 - 80360e2: eec6 7a25 vdiv.f32 s15, s12, s11 - 80360e6: ee76 7aa7 vadd.f32 s15, s13, s15 - 80360ea: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 80360ee: ee77 7aa6 vadd.f32 s15, s15, s13 - 80360f2: ee67 7a27 vmul.f32 s15, s14, s15 - 80360f6: edc7 7a07 vstr s15, [r7, #28] + 80360f8: 693b ldr r3, [r7, #16] + 80360fa: ee07 3a90 vmov s15, r3 + 80360fe: eef8 7a67 vcvt.f32.u32 s15, s15 + 8036102: eddf 6a58 vldr s13, [pc, #352] ; 8036264 + 8036106: ee86 7aa7 vdiv.f32 s14, s13, s15 + 803610a: 4b51 ldr r3, [pc, #324] ; (8036250 ) + 803610c: 6b1b ldr r3, [r3, #48] ; 0x30 + 803610e: f3c3 0308 ubfx r3, r3, #0, #9 + 8036112: ee07 3a90 vmov s15, r3 + 8036116: eef8 6a67 vcvt.f32.u32 s13, s15 + 803611a: ed97 6a02 vldr s12, [r7, #8] + 803611e: eddf 5a50 vldr s11, [pc, #320] ; 8036260 + 8036122: eec6 7a25 vdiv.f32 s15, s12, s11 + 8036126: ee76 7aa7 vadd.f32 s15, s13, s15 + 803612a: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 803612e: ee77 7aa6 vadd.f32 s15, s15, s13 + 8036132: ee67 7a27 vmul.f32 s15, s14, s15 + 8036136: edc7 7a07 vstr s15, [r7, #28] break; - 80360fa: e065 b.n 80361c8 + 803613a: e065 b.n 8036208 case RCC_PLLSOURCE_CSI: /* CSI used as PLL clock source */ pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 80360fc: 693b ldr r3, [r7, #16] - 80360fe: ee07 3a90 vmov s15, r3 - 8036102: eef8 7a67 vcvt.f32.u32 s15, s15 - 8036106: eddf 6a48 vldr s13, [pc, #288] ; 8036228 - 803610a: ee86 7aa7 vdiv.f32 s14, s13, s15 - 803610e: 4b40 ldr r3, [pc, #256] ; (8036210 ) - 8036110: 6b1b ldr r3, [r3, #48] ; 0x30 - 8036112: f3c3 0308 ubfx r3, r3, #0, #9 - 8036116: ee07 3a90 vmov s15, r3 - 803611a: eef8 6a67 vcvt.f32.u32 s13, s15 - 803611e: ed97 6a02 vldr s12, [r7, #8] - 8036122: eddf 5a3f vldr s11, [pc, #252] ; 8036220 - 8036126: eec6 7a25 vdiv.f32 s15, s12, s11 - 803612a: ee76 7aa7 vadd.f32 s15, s13, s15 - 803612e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8036132: ee77 7aa6 vadd.f32 s15, s15, s13 - 8036136: ee67 7a27 vmul.f32 s15, s14, s15 - 803613a: edc7 7a07 vstr s15, [r7, #28] + 803613c: 693b ldr r3, [r7, #16] + 803613e: ee07 3a90 vmov s15, r3 + 8036142: eef8 7a67 vcvt.f32.u32 s15, s15 + 8036146: eddf 6a48 vldr s13, [pc, #288] ; 8036268 + 803614a: ee86 7aa7 vdiv.f32 s14, s13, s15 + 803614e: 4b40 ldr r3, [pc, #256] ; (8036250 ) + 8036150: 6b1b ldr r3, [r3, #48] ; 0x30 + 8036152: f3c3 0308 ubfx r3, r3, #0, #9 + 8036156: ee07 3a90 vmov s15, r3 + 803615a: eef8 6a67 vcvt.f32.u32 s13, s15 + 803615e: ed97 6a02 vldr s12, [r7, #8] + 8036162: eddf 5a3f vldr s11, [pc, #252] ; 8036260 + 8036166: eec6 7a25 vdiv.f32 s15, s12, s11 + 803616a: ee76 7aa7 vadd.f32 s15, s13, s15 + 803616e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8036172: ee77 7aa6 vadd.f32 s15, s15, s13 + 8036176: ee67 7a27 vmul.f32 s15, s14, s15 + 803617a: edc7 7a07 vstr s15, [r7, #28] break; - 803613e: e043 b.n 80361c8 + 803617e: e043 b.n 8036208 case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pllvco = ((float_t)HSE_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 8036140: 693b ldr r3, [r7, #16] - 8036142: ee07 3a90 vmov s15, r3 - 8036146: eef8 7a67 vcvt.f32.u32 s15, s15 - 803614a: eddf 6a38 vldr s13, [pc, #224] ; 803622c - 803614e: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8036152: 4b2f ldr r3, [pc, #188] ; (8036210 ) - 8036154: 6b1b ldr r3, [r3, #48] ; 0x30 - 8036156: f3c3 0308 ubfx r3, r3, #0, #9 - 803615a: ee07 3a90 vmov s15, r3 - 803615e: eef8 6a67 vcvt.f32.u32 s13, s15 - 8036162: ed97 6a02 vldr s12, [r7, #8] - 8036166: eddf 5a2e vldr s11, [pc, #184] ; 8036220 - 803616a: eec6 7a25 vdiv.f32 s15, s12, s11 - 803616e: ee76 7aa7 vadd.f32 s15, s13, s15 - 8036172: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8036176: ee77 7aa6 vadd.f32 s15, s15, s13 - 803617a: ee67 7a27 vmul.f32 s15, s14, s15 - 803617e: edc7 7a07 vstr s15, [r7, #28] + 8036180: 693b ldr r3, [r7, #16] + 8036182: ee07 3a90 vmov s15, r3 + 8036186: eef8 7a67 vcvt.f32.u32 s15, s15 + 803618a: eddf 6a38 vldr s13, [pc, #224] ; 803626c + 803618e: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8036192: 4b2f ldr r3, [pc, #188] ; (8036250 ) + 8036194: 6b1b ldr r3, [r3, #48] ; 0x30 + 8036196: f3c3 0308 ubfx r3, r3, #0, #9 + 803619a: ee07 3a90 vmov s15, r3 + 803619e: eef8 6a67 vcvt.f32.u32 s13, s15 + 80361a2: ed97 6a02 vldr s12, [r7, #8] + 80361a6: eddf 5a2e vldr s11, [pc, #184] ; 8036260 + 80361aa: eec6 7a25 vdiv.f32 s15, s12, s11 + 80361ae: ee76 7aa7 vadd.f32 s15, s13, s15 + 80361b2: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 80361b6: ee77 7aa6 vadd.f32 s15, s15, s13 + 80361ba: ee67 7a27 vmul.f32 s15, s14, s15 + 80361be: edc7 7a07 vstr s15, [r7, #28] break; - 8036182: e021 b.n 80361c8 + 80361c2: e021 b.n 8036208 default: pllvco = ((float_t)CSI_VALUE / (float_t)pllm) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 8036184: 693b ldr r3, [r7, #16] - 8036186: ee07 3a90 vmov s15, r3 - 803618a: eef8 7a67 vcvt.f32.u32 s15, s15 - 803618e: eddf 6a26 vldr s13, [pc, #152] ; 8036228 - 8036192: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8036196: 4b1e ldr r3, [pc, #120] ; (8036210 ) - 8036198: 6b1b ldr r3, [r3, #48] ; 0x30 - 803619a: f3c3 0308 ubfx r3, r3, #0, #9 - 803619e: ee07 3a90 vmov s15, r3 - 80361a2: eef8 6a67 vcvt.f32.u32 s13, s15 - 80361a6: ed97 6a02 vldr s12, [r7, #8] - 80361aa: eddf 5a1d vldr s11, [pc, #116] ; 8036220 - 80361ae: eec6 7a25 vdiv.f32 s15, s12, s11 - 80361b2: ee76 7aa7 vadd.f32 s15, s13, s15 - 80361b6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 80361ba: ee77 7aa6 vadd.f32 s15, s15, s13 - 80361be: ee67 7a27 vmul.f32 s15, s14, s15 - 80361c2: edc7 7a07 vstr s15, [r7, #28] + 80361c4: 693b ldr r3, [r7, #16] + 80361c6: ee07 3a90 vmov s15, r3 + 80361ca: eef8 7a67 vcvt.f32.u32 s15, s15 + 80361ce: eddf 6a26 vldr s13, [pc, #152] ; 8036268 + 80361d2: ee86 7aa7 vdiv.f32 s14, s13, s15 + 80361d6: 4b1e ldr r3, [pc, #120] ; (8036250 ) + 80361d8: 6b1b ldr r3, [r3, #48] ; 0x30 + 80361da: f3c3 0308 ubfx r3, r3, #0, #9 + 80361de: ee07 3a90 vmov s15, r3 + 80361e2: eef8 6a67 vcvt.f32.u32 s13, s15 + 80361e6: ed97 6a02 vldr s12, [r7, #8] + 80361ea: eddf 5a1d vldr s11, [pc, #116] ; 8036260 + 80361ee: eec6 7a25 vdiv.f32 s15, s12, s11 + 80361f2: ee76 7aa7 vadd.f32 s15, s13, s15 + 80361f6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 80361fa: ee77 7aa6 vadd.f32 s15, s15, s13 + 80361fe: ee67 7a27 vmul.f32 s15, s14, s15 + 8036202: edc7 7a07 vstr s15, [r7, #28] break; - 80361c6: bf00 nop + 8036206: bf00 nop } pllp = (((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + 1U ) ; - 80361c8: 4b11 ldr r3, [pc, #68] ; (8036210 ) - 80361ca: 6b1b ldr r3, [r3, #48] ; 0x30 - 80361cc: 0a5b lsrs r3, r3, #9 - 80361ce: f003 037f and.w r3, r3, #127 ; 0x7f - 80361d2: 3301 adds r3, #1 - 80361d4: 603b str r3, [r7, #0] + 8036208: 4b11 ldr r3, [pc, #68] ; (8036250 ) + 803620a: 6b1b ldr r3, [r3, #48] ; 0x30 + 803620c: 0a5b lsrs r3, r3, #9 + 803620e: f003 037f and.w r3, r3, #127 ; 0x7f + 8036212: 3301 adds r3, #1 + 8036214: 603b str r3, [r7, #0] sysclockfreq = (uint32_t)(float_t)(pllvco/(float_t)pllp); - 80361d6: 683b ldr r3, [r7, #0] - 80361d8: ee07 3a90 vmov s15, r3 - 80361dc: eeb8 7a67 vcvt.f32.u32 s14, s15 - 80361e0: edd7 6a07 vldr s13, [r7, #28] - 80361e4: eec6 7a87 vdiv.f32 s15, s13, s14 - 80361e8: eefc 7ae7 vcvt.u32.f32 s15, s15 - 80361ec: ee17 3a90 vmov r3, s15 - 80361f0: 61bb str r3, [r7, #24] + 8036216: 683b ldr r3, [r7, #0] + 8036218: ee07 3a90 vmov s15, r3 + 803621c: eeb8 7a67 vcvt.f32.u32 s14, s15 + 8036220: edd7 6a07 vldr s13, [r7, #28] + 8036224: eec6 7a87 vdiv.f32 s15, s13, s14 + 8036228: eefc 7ae7 vcvt.u32.f32 s15, s15 + 803622c: ee17 3a90 vmov r3, s15 + 8036230: 61bb str r3, [r7, #24] } else { sysclockfreq = 0U; } break; - 80361f2: e005 b.n 8036200 + 8036232: e005 b.n 8036240 sysclockfreq = 0U; - 80361f4: 2300 movs r3, #0 - 80361f6: 61bb str r3, [r7, #24] + 8036234: 2300 movs r3, #0 + 8036236: 61bb str r3, [r7, #24] break; - 80361f8: e002 b.n 8036200 + 8036238: e002 b.n 8036240 default: sysclockfreq = CSI_VALUE; - 80361fa: 4b07 ldr r3, [pc, #28] ; (8036218 ) - 80361fc: 61bb str r3, [r7, #24] + 803623a: 4b07 ldr r3, [pc, #28] ; (8036258 ) + 803623c: 61bb str r3, [r7, #24] break; - 80361fe: bf00 nop + 803623e: bf00 nop } return sysclockfreq; - 8036200: 69bb ldr r3, [r7, #24] -} - 8036202: 4618 mov r0, r3 - 8036204: 3724 adds r7, #36 ; 0x24 - 8036206: 46bd mov sp, r7 - 8036208: f85d 7b04 ldr.w r7, [sp], #4 - 803620c: 4770 bx lr - 803620e: bf00 nop - 8036210: 58024400 .word 0x58024400 - 8036214: 03d09000 .word 0x03d09000 - 8036218: 003d0900 .word 0x003d0900 - 803621c: 017d7840 .word 0x017d7840 - 8036220: 46000000 .word 0x46000000 - 8036224: 4c742400 .word 0x4c742400 - 8036228: 4a742400 .word 0x4a742400 - 803622c: 4bbebc20 .word 0x4bbebc20 - -08036230 : + 8036240: 69bb ldr r3, [r7, #24] +} + 8036242: 4618 mov r0, r3 + 8036244: 3724 adds r7, #36 ; 0x24 + 8036246: 46bd mov sp, r7 + 8036248: f85d 7b04 ldr.w r7, [sp], #4 + 803624c: 4770 bx lr + 803624e: bf00 nop + 8036250: 58024400 .word 0x58024400 + 8036254: 03d09000 .word 0x03d09000 + 8036258: 003d0900 .word 0x003d0900 + 803625c: 017d7840 .word 0x017d7840 + 8036260: 46000000 .word 0x46000000 + 8036264: 4c742400 .word 0x4c742400 + 8036268: 4a742400 .word 0x4a742400 + 803626c: 4bbebc20 .word 0x4bbebc20 + +08036270 : * @note The SystemD2Clock CMSIS variable is used to store System domain2 Clock Frequency * and updated within this function * @retval HCLK frequency */ uint32_t HAL_RCC_GetHCLKFreq(void) { - 8036230: b580 push {r7, lr} - 8036232: b082 sub sp, #8 - 8036234: af00 add r7, sp, #0 + 8036270: b580 push {r7, lr} + 8036272: b082 sub sp, #8 + 8036274: af00 add r7, sp, #0 uint32_t common_system_clock; #if defined(RCC_D1CFGR_D1CPRE) common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_D1CPRE)>> RCC_D1CFGR_D1CPRE_Pos] & 0x1FU); - 8036236: f7ff fe81 bl 8035f3c - 803623a: 4602 mov r2, r0 - 803623c: 4b10 ldr r3, [pc, #64] ; (8036280 ) - 803623e: 699b ldr r3, [r3, #24] - 8036240: 0a1b lsrs r3, r3, #8 - 8036242: f003 030f and.w r3, r3, #15 - 8036246: 490f ldr r1, [pc, #60] ; (8036284 ) - 8036248: 5ccb ldrb r3, [r1, r3] - 803624a: f003 031f and.w r3, r3, #31 - 803624e: fa22 f303 lsr.w r3, r2, r3 - 8036252: 607b str r3, [r7, #4] + 8036276: f7ff fe81 bl 8035f7c + 803627a: 4602 mov r2, r0 + 803627c: 4b10 ldr r3, [pc, #64] ; (80362c0 ) + 803627e: 699b ldr r3, [r3, #24] + 8036280: 0a1b lsrs r3, r3, #8 + 8036282: f003 030f and.w r3, r3, #15 + 8036286: 490f ldr r1, [pc, #60] ; (80362c4 ) + 8036288: 5ccb ldrb r3, [r1, r3] + 803628a: f003 031f and.w r3, r3, #31 + 803628e: fa22 f303 lsr.w r3, r2, r3 + 8036292: 607b str r3, [r7, #4] #else common_system_clock = HAL_RCC_GetSysClockFreq() >> (D1CorePrescTable[(RCC->CDCFGR1 & RCC_CDCFGR1_CDCPRE)>> RCC_CDCFGR1_CDCPRE_Pos] & 0x1FU); #endif #if defined(RCC_D1CFGR_HPRE) SystemD2Clock = (common_system_clock >> ((D1CorePrescTable[(RCC->D1CFGR & RCC_D1CFGR_HPRE)>> RCC_D1CFGR_HPRE_Pos]) & 0x1FU)); - 8036254: 4b0a ldr r3, [pc, #40] ; (8036280 ) - 8036256: 699b ldr r3, [r3, #24] - 8036258: f003 030f and.w r3, r3, #15 - 803625c: 4a09 ldr r2, [pc, #36] ; (8036284 ) - 803625e: 5cd3 ldrb r3, [r2, r3] - 8036260: f003 031f and.w r3, r3, #31 - 8036264: 687a ldr r2, [r7, #4] - 8036266: fa22 f303 lsr.w r3, r2, r3 - 803626a: 4a07 ldr r2, [pc, #28] ; (8036288 ) - 803626c: 6013 str r3, [r2, #0] + 8036294: 4b0a ldr r3, [pc, #40] ; (80362c0 ) + 8036296: 699b ldr r3, [r3, #24] + 8036298: f003 030f and.w r3, r3, #15 + 803629c: 4a09 ldr r2, [pc, #36] ; (80362c4 ) + 803629e: 5cd3 ldrb r3, [r2, r3] + 80362a0: f003 031f and.w r3, r3, #31 + 80362a4: 687a ldr r2, [r7, #4] + 80362a6: fa22 f303 lsr.w r3, r2, r3 + 80362aa: 4a07 ldr r2, [pc, #28] ; (80362c8 ) + 80362ac: 6013 str r3, [r2, #0] #endif #if defined(DUAL_CORE) && defined(CORE_CM4) SystemCoreClock = SystemD2Clock; #else SystemCoreClock = common_system_clock; - 803626e: 4a07 ldr r2, [pc, #28] ; (803628c ) - 8036270: 687b ldr r3, [r7, #4] - 8036272: 6013 str r3, [r2, #0] + 80362ae: 4a07 ldr r2, [pc, #28] ; (80362cc ) + 80362b0: 687b ldr r3, [r7, #4] + 80362b2: 6013 str r3, [r2, #0] #endif /* DUAL_CORE && CORE_CM4 */ return SystemD2Clock; - 8036274: 4b04 ldr r3, [pc, #16] ; (8036288 ) - 8036276: 681b ldr r3, [r3, #0] -} - 8036278: 4618 mov r0, r3 - 803627a: 3708 adds r7, #8 - 803627c: 46bd mov sp, r7 - 803627e: bd80 pop {r7, pc} - 8036280: 58024400 .word 0x58024400 - 8036284: 0804d35c .word 0x0804d35c - 8036288: 2400011c .word 0x2400011c - 803628c: 24000118 .word 0x24000118 - -08036290 : + 80362b4: 4b04 ldr r3, [pc, #16] ; (80362c8 ) + 80362b6: 681b ldr r3, [r3, #0] +} + 80362b8: 4618 mov r0, r3 + 80362ba: 3708 adds r7, #8 + 80362bc: 46bd mov sp, r7 + 80362be: bd80 pop {r7, pc} + 80362c0: 58024400 .word 0x58024400 + 80362c4: 0804d39c .word 0x0804d39c + 80362c8: 2400011c .word 0x2400011c + 80362cc: 24000118 .word 0x24000118 + +080362d0 : * @note Each time PCLK1 changes, this function must be called to update the * right PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency */ uint32_t HAL_RCC_GetPCLK1Freq(void) { - 8036290: b580 push {r7, lr} - 8036292: af00 add r7, sp, #0 + 80362d0: b580 push {r7, lr} + 80362d2: af00 add r7, sp, #0 #if defined (RCC_D2CFGR_D2PPRE1) /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE1)>> RCC_D2CFGR_D2PPRE1_Pos]) & 0x1FU)); - 8036294: f7ff ffcc bl 8036230 - 8036298: 4602 mov r2, r0 - 803629a: 4b06 ldr r3, [pc, #24] ; (80362b4 ) - 803629c: 69db ldr r3, [r3, #28] - 803629e: 091b lsrs r3, r3, #4 - 80362a0: f003 0307 and.w r3, r3, #7 - 80362a4: 4904 ldr r1, [pc, #16] ; (80362b8 ) - 80362a6: 5ccb ldrb r3, [r1, r3] - 80362a8: f003 031f and.w r3, r3, #31 - 80362ac: fa22 f303 lsr.w r3, r2, r3 + 80362d4: f7ff ffcc bl 8036270 + 80362d8: 4602 mov r2, r0 + 80362da: 4b06 ldr r3, [pc, #24] ; (80362f4 ) + 80362dc: 69db ldr r3, [r3, #28] + 80362de: 091b lsrs r3, r3, #4 + 80362e0: f003 0307 and.w r3, r3, #7 + 80362e4: 4904 ldr r1, [pc, #16] ; (80362f8 ) + 80362e6: 5ccb ldrb r3, [r1, r3] + 80362e8: f003 031f and.w r3, r3, #31 + 80362ec: fa22 f303 lsr.w r3, r2, r3 #else /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE1)>> RCC_CDCFGR2_CDPPRE1_Pos]) & 0x1FU)); #endif } - 80362b0: 4618 mov r0, r3 - 80362b2: bd80 pop {r7, pc} - 80362b4: 58024400 .word 0x58024400 - 80362b8: 0804d35c .word 0x0804d35c + 80362f0: 4618 mov r0, r3 + 80362f2: bd80 pop {r7, pc} + 80362f4: 58024400 .word 0x58024400 + 80362f8: 0804d39c .word 0x0804d39c -080362bc : +080362fc : * @note Each time PCLK2 changes, this function must be called to update the * right PCLK2 value. Otherwise, any configuration based on this function will be incorrect. * @retval PCLK1 frequency */ uint32_t HAL_RCC_GetPCLK2Freq(void) { - 80362bc: b580 push {r7, lr} - 80362be: af00 add r7, sp, #0 + 80362fc: b580 push {r7, lr} + 80362fe: af00 add r7, sp, #0 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/ #if defined(RCC_D2CFGR_D2PPRE2) return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)>> RCC_D2CFGR_D2PPRE2_Pos]) & 0x1FU)); - 80362c0: f7ff ffb6 bl 8036230 - 80362c4: 4602 mov r2, r0 - 80362c6: 4b06 ldr r3, [pc, #24] ; (80362e0 ) - 80362c8: 69db ldr r3, [r3, #28] - 80362ca: 0a1b lsrs r3, r3, #8 - 80362cc: f003 0307 and.w r3, r3, #7 - 80362d0: 4904 ldr r1, [pc, #16] ; (80362e4 ) - 80362d2: 5ccb ldrb r3, [r1, r3] - 80362d4: f003 031f and.w r3, r3, #31 - 80362d8: fa22 f303 lsr.w r3, r2, r3 + 8036300: f7ff ffb6 bl 8036270 + 8036304: 4602 mov r2, r0 + 8036306: 4b06 ldr r3, [pc, #24] ; (8036320 ) + 8036308: 69db ldr r3, [r3, #28] + 803630a: 0a1b lsrs r3, r3, #8 + 803630c: f003 0307 and.w r3, r3, #7 + 8036310: 4904 ldr r1, [pc, #16] ; (8036324 ) + 8036312: 5ccb ldrb r3, [r1, r3] + 8036314: f003 031f and.w r3, r3, #31 + 8036318: fa22 f303 lsr.w r3, r2, r3 #else return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2)>> RCC_CDCFGR2_CDPPRE2_Pos]) & 0x1FU)); #endif } - 80362dc: 4618 mov r0, r3 - 80362de: bd80 pop {r7, pc} - 80362e0: 58024400 .word 0x58024400 - 80362e4: 0804d35c .word 0x0804d35c + 803631c: 4618 mov r0, r3 + 803631e: bd80 pop {r7, pc} + 8036320: 58024400 .word 0x58024400 + 8036324: 0804d39c .word 0x0804d39c -080362e8 : +08036328 : * @brief This function handles the RCC CSS interrupt request. * @note This API should be called under the NMI_Handler(). * @retval None */ void HAL_RCC_NMI_IRQHandler(void) { - 80362e8: b580 push {r7, lr} - 80362ea: af00 add r7, sp, #0 + 8036328: b580 push {r7, lr} + 803632a: af00 add r7, sp, #0 /* Check RCC CSSF flag */ if(__HAL_RCC_GET_IT(RCC_IT_CSS)) - 80362ec: 4b07 ldr r3, [pc, #28] ; (803630c ) - 80362ee: 6e5b ldr r3, [r3, #100] ; 0x64 - 80362f0: f403 6380 and.w r3, r3, #1024 ; 0x400 - 80362f4: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 80362f8: d105 bne.n 8036306 + 803632c: 4b07 ldr r3, [pc, #28] ; (803634c ) + 803632e: 6e5b ldr r3, [r3, #100] ; 0x64 + 8036330: f403 6380 and.w r3, r3, #1024 ; 0x400 + 8036334: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 8036338: d105 bne.n 8036346 { /* RCC Clock Security System interrupt user callback */ HAL_RCC_CCSCallback(); - 80362fa: f000 f809 bl 8036310 + 803633a: f000 f809 bl 8036350 /* Clear RCC CSS pending bit */ __HAL_RCC_CLEAR_IT(RCC_IT_CSS); - 80362fe: 4b03 ldr r3, [pc, #12] ; (803630c ) - 8036300: f44f 6280 mov.w r2, #1024 ; 0x400 - 8036304: 669a str r2, [r3, #104] ; 0x68 + 803633e: 4b03 ldr r3, [pc, #12] ; (803634c ) + 8036340: f44f 6280 mov.w r2, #1024 ; 0x400 + 8036344: 669a str r2, [r3, #104] ; 0x68 } } - 8036306: bf00 nop - 8036308: bd80 pop {r7, pc} - 803630a: bf00 nop - 803630c: 58024400 .word 0x58024400 + 8036346: bf00 nop + 8036348: bd80 pop {r7, pc} + 803634a: bf00 nop + 803634c: 58024400 .word 0x58024400 -08036310 : +08036350 : /** * @brief RCC Clock Security System interrupt callback * @retval none */ __weak void HAL_RCC_CCSCallback(void) { - 8036310: b480 push {r7} - 8036312: af00 add r7, sp, #0 + 8036350: b480 push {r7} + 8036352: af00 add r7, sp, #0 /* NOTE : This function Should not be modified, when the callback is needed, the HAL_RCC_CCSCallback could be implemented in the user file */ } - 8036314: bf00 nop - 8036316: 46bd mov sp, r7 - 8036318: f85d 7b04 ldr.w r7, [sp], #4 - 803631c: 4770 bx lr + 8036354: bf00 nop + 8036356: 46bd mov sp, r7 + 8036358: f85d 7b04 ldr.w r7, [sp], #4 + 803635c: 4770 bx lr ... -08036320 : +08036360 : * (*) : Available on some STM32H7 lines only. * * @retval HAL status */ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit) { - 8036320: b580 push {r7, lr} - 8036322: b086 sub sp, #24 - 8036324: af00 add r7, sp, #0 - 8036326: 6078 str r0, [r7, #4] + 8036360: b580 push {r7, lr} + 8036362: b086 sub sp, #24 + 8036364: af00 add r7, sp, #0 + 8036366: 6078 str r0, [r7, #4] uint32_t tmpreg; uint32_t tickstart; HAL_StatusTypeDef ret = HAL_OK; /* Intermediate status */ - 8036328: 2300 movs r3, #0 - 803632a: 75fb strb r3, [r7, #23] + 8036368: 2300 movs r3, #0 + 803636a: 75fb strb r3, [r7, #23] HAL_StatusTypeDef status = HAL_OK; /* Final status */ - 803632c: 2300 movs r3, #0 - 803632e: 75bb strb r3, [r7, #22] + 803636c: 2300 movs r3, #0 + 803636e: 75bb strb r3, [r7, #22] /*---------------------------- SPDIFRX configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPDIFRX) == RCC_PERIPHCLK_SPDIFRX) - 8036330: 687b ldr r3, [r7, #4] - 8036332: 681b ldr r3, [r3, #0] - 8036334: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8036338: 2b00 cmp r3, #0 - 803633a: d03f beq.n 80363bc + 8036370: 687b ldr r3, [r7, #4] + 8036372: 681b ldr r3, [r3, #0] + 8036374: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8036378: 2b00 cmp r3, #0 + 803637a: d03f beq.n 80363fc { switch(PeriphClkInit->SpdifrxClockSelection) - 803633c: 687b ldr r3, [r7, #4] - 803633e: 6e5b ldr r3, [r3, #100] ; 0x64 - 8036340: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 - 8036344: d02a beq.n 803639c - 8036346: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 - 803634a: d824 bhi.n 8036396 - 803634c: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8036350: d018 beq.n 8036384 - 8036352: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8036356: d81e bhi.n 8036396 - 8036358: 2b00 cmp r3, #0 - 803635a: d003 beq.n 8036364 - 803635c: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 8036360: d007 beq.n 8036372 - 8036362: e018 b.n 8036396 + 803637c: 687b ldr r3, [r7, #4] + 803637e: 6e5b ldr r3, [r3, #100] ; 0x64 + 8036380: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 + 8036384: d02a beq.n 80363dc + 8036386: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 + 803638a: d824 bhi.n 80363d6 + 803638c: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8036390: d018 beq.n 80363c4 + 8036392: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8036396: d81e bhi.n 80363d6 + 8036398: 2b00 cmp r3, #0 + 803639a: d003 beq.n 80363a4 + 803639c: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 80363a0: d007 beq.n 80363b2 + 80363a2: e018 b.n 80363d6 { case RCC_SPDIFRXCLKSOURCE_PLL: /* PLL is used as clock source for SPDIFRX*/ /* Enable PLL1Q Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036364: 4ba3 ldr r3, [pc, #652] ; (80365f4 ) - 8036366: 6adb ldr r3, [r3, #44] ; 0x2c - 8036368: 4aa2 ldr r2, [pc, #648] ; (80365f4 ) - 803636a: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 803636e: 62d3 str r3, [r2, #44] ; 0x2c + 80363a4: 4ba3 ldr r3, [pc, #652] ; (8036634 ) + 80363a6: 6adb ldr r3, [r3, #44] ; 0x2c + 80363a8: 4aa2 ldr r2, [pc, #648] ; (8036634 ) + 80363aa: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 80363ae: 62d3 str r3, [r2, #44] ; 0x2c /* SPDIFRX clock source configuration done later after clock selection check */ break; - 8036370: e015 b.n 803639e + 80363b0: e015 b.n 80363de case RCC_SPDIFRXCLKSOURCE_PLL2: /* PLL2 is used as clock source for SPDIFRX*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE); - 8036372: 687b ldr r3, [r7, #4] - 8036374: 3304 adds r3, #4 - 8036376: 2102 movs r1, #2 - 8036378: 4618 mov r0, r3 - 803637a: f001 fff9 bl 8038370 - 803637e: 4603 mov r3, r0 - 8036380: 75fb strb r3, [r7, #23] + 80363b2: 687b ldr r3, [r7, #4] + 80363b4: 3304 adds r3, #4 + 80363b6: 2102 movs r1, #2 + 80363b8: 4618 mov r0, r3 + 80363ba: f001 fff9 bl 80383b0 + 80363be: 4603 mov r3, r0 + 80363c0: 75fb strb r3, [r7, #23] /* SPDIFRX clock source configuration done later after clock selection check */ break; - 8036382: e00c b.n 803639e + 80363c2: e00c b.n 80363de case RCC_SPDIFRXCLKSOURCE_PLL3: /* PLL3 is used as clock source for SPDIFRX*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE); - 8036384: 687b ldr r3, [r7, #4] - 8036386: 3324 adds r3, #36 ; 0x24 - 8036388: 2102 movs r1, #2 - 803638a: 4618 mov r0, r3 - 803638c: f002 f8a2 bl 80384d4 - 8036390: 4603 mov r3, r0 - 8036392: 75fb strb r3, [r7, #23] + 80363c4: 687b ldr r3, [r7, #4] + 80363c6: 3324 adds r3, #36 ; 0x24 + 80363c8: 2102 movs r1, #2 + 80363ca: 4618 mov r0, r3 + 80363cc: f002 f8a2 bl 8038514 + 80363d0: 4603 mov r3, r0 + 80363d2: 75fb strb r3, [r7, #23] /* SPDIFRX clock source configuration done later after clock selection check */ break; - 8036394: e003 b.n 803639e + 80363d4: e003 b.n 80363de /* Internal OSC clock is used as source of SPDIFRX clock*/ /* SPDIFRX clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036396: 2301 movs r3, #1 - 8036398: 75fb strb r3, [r7, #23] + 80363d6: 2301 movs r3, #1 + 80363d8: 75fb strb r3, [r7, #23] break; - 803639a: e000 b.n 803639e + 80363da: e000 b.n 80363de break; - 803639c: bf00 nop + 80363dc: bf00 nop } if(ret == HAL_OK) - 803639e: 7dfb ldrb r3, [r7, #23] - 80363a0: 2b00 cmp r3, #0 - 80363a2: d109 bne.n 80363b8 + 80363de: 7dfb ldrb r3, [r7, #23] + 80363e0: 2b00 cmp r3, #0 + 80363e2: d109 bne.n 80363f8 { /* Set the source of SPDIFRX clock*/ __HAL_RCC_SPDIFRX_CONFIG(PeriphClkInit->SpdifrxClockSelection); - 80363a4: 4b93 ldr r3, [pc, #588] ; (80365f4 ) - 80363a6: 6d1b ldr r3, [r3, #80] ; 0x50 - 80363a8: f423 1240 bic.w r2, r3, #3145728 ; 0x300000 - 80363ac: 687b ldr r3, [r7, #4] - 80363ae: 6e5b ldr r3, [r3, #100] ; 0x64 - 80363b0: 4990 ldr r1, [pc, #576] ; (80365f4 ) - 80363b2: 4313 orrs r3, r2 - 80363b4: 650b str r3, [r1, #80] ; 0x50 - 80363b6: e001 b.n 80363bc + 80363e4: 4b93 ldr r3, [pc, #588] ; (8036634 ) + 80363e6: 6d1b ldr r3, [r3, #80] ; 0x50 + 80363e8: f423 1240 bic.w r2, r3, #3145728 ; 0x300000 + 80363ec: 687b ldr r3, [r7, #4] + 80363ee: 6e5b ldr r3, [r3, #100] ; 0x64 + 80363f0: 4990 ldr r1, [pc, #576] ; (8036634 ) + 80363f2: 4313 orrs r3, r2 + 80363f4: 650b str r3, [r1, #80] ; 0x50 + 80363f6: e001 b.n 80363fc } else { /* set overall return value */ status = ret; - 80363b8: 7dfb ldrb r3, [r7, #23] - 80363ba: 75bb strb r3, [r7, #22] + 80363f8: 7dfb ldrb r3, [r7, #23] + 80363fa: 75bb strb r3, [r7, #22] } } /*---------------------------- SAI1 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI1) == RCC_PERIPHCLK_SAI1) - 80363bc: 687b ldr r3, [r7, #4] - 80363be: 681b ldr r3, [r3, #0] - 80363c0: f403 7380 and.w r3, r3, #256 ; 0x100 - 80363c4: 2b00 cmp r3, #0 - 80363c6: d03d beq.n 8036444 + 80363fc: 687b ldr r3, [r7, #4] + 80363fe: 681b ldr r3, [r3, #0] + 8036400: f403 7380 and.w r3, r3, #256 ; 0x100 + 8036404: 2b00 cmp r3, #0 + 8036406: d03d beq.n 8036484 { switch(PeriphClkInit->Sai1ClockSelection) - 80363c8: 687b ldr r3, [r7, #4] - 80363ca: 6d5b ldr r3, [r3, #84] ; 0x54 - 80363cc: 2b04 cmp r3, #4 - 80363ce: d826 bhi.n 803641e - 80363d0: a201 add r2, pc, #4 ; (adr r2, 80363d8 ) - 80363d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80363d6: bf00 nop - 80363d8: 080363ed .word 0x080363ed - 80363dc: 080363fb .word 0x080363fb - 80363e0: 0803640d .word 0x0803640d - 80363e4: 08036425 .word 0x08036425 - 80363e8: 08036425 .word 0x08036425 + 8036408: 687b ldr r3, [r7, #4] + 803640a: 6d5b ldr r3, [r3, #84] ; 0x54 + 803640c: 2b04 cmp r3, #4 + 803640e: d826 bhi.n 803645e + 8036410: a201 add r2, pc, #4 ; (adr r2, 8036418 ) + 8036412: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8036416: bf00 nop + 8036418: 0803642d .word 0x0803642d + 803641c: 0803643b .word 0x0803643b + 8036420: 0803644d .word 0x0803644d + 8036424: 08036465 .word 0x08036465 + 8036428: 08036465 .word 0x08036465 { case RCC_SAI1CLKSOURCE_PLL: /* PLL is used as clock source for SAI1*/ /* Enable SAI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 80363ec: 4b81 ldr r3, [pc, #516] ; (80365f4 ) - 80363ee: 6adb ldr r3, [r3, #44] ; 0x2c - 80363f0: 4a80 ldr r2, [pc, #512] ; (80365f4 ) - 80363f2: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 80363f6: 62d3 str r3, [r2, #44] ; 0x2c + 803642c: 4b81 ldr r3, [pc, #516] ; (8036634 ) + 803642e: 6adb ldr r3, [r3, #44] ; 0x2c + 8036430: 4a80 ldr r2, [pc, #512] ; (8036634 ) + 8036432: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036436: 62d3 str r3, [r2, #44] ; 0x2c /* SAI1 clock source configuration done later after clock selection check */ break; - 80363f8: e015 b.n 8036426 + 8036438: e015 b.n 8036466 case RCC_SAI1CLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI1*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 80363fa: 687b ldr r3, [r7, #4] - 80363fc: 3304 adds r3, #4 - 80363fe: 2100 movs r1, #0 - 8036400: 4618 mov r0, r3 - 8036402: f001 ffb5 bl 8038370 - 8036406: 4603 mov r3, r0 - 8036408: 75fb strb r3, [r7, #23] + 803643a: 687b ldr r3, [r7, #4] + 803643c: 3304 adds r3, #4 + 803643e: 2100 movs r1, #0 + 8036440: 4618 mov r0, r3 + 8036442: f001 ffb5 bl 80383b0 + 8036446: 4603 mov r3, r0 + 8036448: 75fb strb r3, [r7, #23] /* SAI1 clock source configuration done later after clock selection check */ break; - 803640a: e00c b.n 8036426 + 803644a: e00c b.n 8036466 case RCC_SAI1CLKSOURCE_PLL3: /* PLL3 is used as clock source for SAI1*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE); - 803640c: 687b ldr r3, [r7, #4] - 803640e: 3324 adds r3, #36 ; 0x24 - 8036410: 2100 movs r1, #0 - 8036412: 4618 mov r0, r3 - 8036414: f002 f85e bl 80384d4 - 8036418: 4603 mov r3, r0 - 803641a: 75fb strb r3, [r7, #23] + 803644c: 687b ldr r3, [r7, #4] + 803644e: 3324 adds r3, #36 ; 0x24 + 8036450: 2100 movs r1, #0 + 8036452: 4618 mov r0, r3 + 8036454: f002 f85e bl 8038514 + 8036458: 4603 mov r3, r0 + 803645a: 75fb strb r3, [r7, #23] /* SAI1 clock source configuration done later after clock selection check */ break; - 803641c: e003 b.n 8036426 + 803645c: e003 b.n 8036466 /* HSI, HSE, or CSI oscillator is used as source of SAI1 clock */ /* SAI1 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 803641e: 2301 movs r3, #1 - 8036420: 75fb strb r3, [r7, #23] + 803645e: 2301 movs r3, #1 + 8036460: 75fb strb r3, [r7, #23] break; - 8036422: e000 b.n 8036426 + 8036462: e000 b.n 8036466 break; - 8036424: bf00 nop + 8036464: bf00 nop } if(ret == HAL_OK) - 8036426: 7dfb ldrb r3, [r7, #23] - 8036428: 2b00 cmp r3, #0 - 803642a: d109 bne.n 8036440 + 8036466: 7dfb ldrb r3, [r7, #23] + 8036468: 2b00 cmp r3, #0 + 803646a: d109 bne.n 8036480 { /* Set the source of SAI1 clock*/ __HAL_RCC_SAI1_CONFIG(PeriphClkInit->Sai1ClockSelection); - 803642c: 4b71 ldr r3, [pc, #452] ; (80365f4 ) - 803642e: 6d1b ldr r3, [r3, #80] ; 0x50 - 8036430: f023 0207 bic.w r2, r3, #7 - 8036434: 687b ldr r3, [r7, #4] - 8036436: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036438: 496e ldr r1, [pc, #440] ; (80365f4 ) - 803643a: 4313 orrs r3, r2 - 803643c: 650b str r3, [r1, #80] ; 0x50 - 803643e: e001 b.n 8036444 + 803646c: 4b71 ldr r3, [pc, #452] ; (8036634 ) + 803646e: 6d1b ldr r3, [r3, #80] ; 0x50 + 8036470: f023 0207 bic.w r2, r3, #7 + 8036474: 687b ldr r3, [r7, #4] + 8036476: 6d5b ldr r3, [r3, #84] ; 0x54 + 8036478: 496e ldr r1, [pc, #440] ; (8036634 ) + 803647a: 4313 orrs r3, r2 + 803647c: 650b str r3, [r1, #80] ; 0x50 + 803647e: e001 b.n 8036484 } else { /* set overall return value */ status = ret; - 8036440: 7dfb ldrb r3, [r7, #23] - 8036442: 75bb strb r3, [r7, #22] + 8036480: 7dfb ldrb r3, [r7, #23] + 8036482: 75bb strb r3, [r7, #22] } } #if defined(SAI3) /*---------------------------- SAI2/3 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI23) == RCC_PERIPHCLK_SAI23) - 8036444: 687b ldr r3, [r7, #4] - 8036446: 681b ldr r3, [r3, #0] - 8036448: f403 7300 and.w r3, r3, #512 ; 0x200 - 803644c: 2b00 cmp r3, #0 - 803644e: d042 beq.n 80364d6 + 8036484: 687b ldr r3, [r7, #4] + 8036486: 681b ldr r3, [r3, #0] + 8036488: f403 7300 and.w r3, r3, #512 ; 0x200 + 803648c: 2b00 cmp r3, #0 + 803648e: d042 beq.n 8036516 { switch(PeriphClkInit->Sai23ClockSelection) - 8036450: 687b ldr r3, [r7, #4] - 8036452: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036454: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8036458: d02b beq.n 80364b2 - 803645a: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 803645e: d825 bhi.n 80364ac - 8036460: 2bc0 cmp r3, #192 ; 0xc0 - 8036462: d028 beq.n 80364b6 - 8036464: 2bc0 cmp r3, #192 ; 0xc0 - 8036466: d821 bhi.n 80364ac - 8036468: 2b80 cmp r3, #128 ; 0x80 - 803646a: d016 beq.n 803649a - 803646c: 2b80 cmp r3, #128 ; 0x80 - 803646e: d81d bhi.n 80364ac - 8036470: 2b00 cmp r3, #0 - 8036472: d002 beq.n 803647a - 8036474: 2b40 cmp r3, #64 ; 0x40 - 8036476: d007 beq.n 8036488 - 8036478: e018 b.n 80364ac + 8036490: 687b ldr r3, [r7, #4] + 8036492: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036494: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8036498: d02b beq.n 80364f2 + 803649a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803649e: d825 bhi.n 80364ec + 80364a0: 2bc0 cmp r3, #192 ; 0xc0 + 80364a2: d028 beq.n 80364f6 + 80364a4: 2bc0 cmp r3, #192 ; 0xc0 + 80364a6: d821 bhi.n 80364ec + 80364a8: 2b80 cmp r3, #128 ; 0x80 + 80364aa: d016 beq.n 80364da + 80364ac: 2b80 cmp r3, #128 ; 0x80 + 80364ae: d81d bhi.n 80364ec + 80364b0: 2b00 cmp r3, #0 + 80364b2: d002 beq.n 80364ba + 80364b4: 2b40 cmp r3, #64 ; 0x40 + 80364b6: d007 beq.n 80364c8 + 80364b8: e018 b.n 80364ec { case RCC_SAI23CLKSOURCE_PLL: /* PLL is used as clock source for SAI2/3 */ /* Enable SAI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 803647a: 4b5e ldr r3, [pc, #376] ; (80365f4 ) - 803647c: 6adb ldr r3, [r3, #44] ; 0x2c - 803647e: 4a5d ldr r2, [pc, #372] ; (80365f4 ) - 8036480: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8036484: 62d3 str r3, [r2, #44] ; 0x2c + 80364ba: 4b5e ldr r3, [pc, #376] ; (8036634 ) + 80364bc: 6adb ldr r3, [r3, #44] ; 0x2c + 80364be: 4a5d ldr r2, [pc, #372] ; (8036634 ) + 80364c0: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 80364c4: 62d3 str r3, [r2, #44] ; 0x2c /* SAI2/3 clock source configuration done later after clock selection check */ break; - 8036486: e017 b.n 80364b8 + 80364c6: e017 b.n 80364f8 case RCC_SAI23CLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2/3 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036488: 687b ldr r3, [r7, #4] - 803648a: 3304 adds r3, #4 - 803648c: 2100 movs r1, #0 - 803648e: 4618 mov r0, r3 - 8036490: f001 ff6e bl 8038370 - 8036494: 4603 mov r3, r0 - 8036496: 75fb strb r3, [r7, #23] + 80364c8: 687b ldr r3, [r7, #4] + 80364ca: 3304 adds r3, #4 + 80364cc: 2100 movs r1, #0 + 80364ce: 4618 mov r0, r3 + 80364d0: f001 ff6e bl 80383b0 + 80364d4: 4603 mov r3, r0 + 80364d6: 75fb strb r3, [r7, #23] /* SAI2/3 clock source configuration done later after clock selection check */ break; - 8036498: e00e b.n 80364b8 + 80364d8: e00e b.n 80364f8 case RCC_SAI23CLKSOURCE_PLL3: /* PLL3 is used as clock source for SAI2/3 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE); - 803649a: 687b ldr r3, [r7, #4] - 803649c: 3324 adds r3, #36 ; 0x24 - 803649e: 2100 movs r1, #0 - 80364a0: 4618 mov r0, r3 - 80364a2: f002 f817 bl 80384d4 - 80364a6: 4603 mov r3, r0 - 80364a8: 75fb strb r3, [r7, #23] + 80364da: 687b ldr r3, [r7, #4] + 80364dc: 3324 adds r3, #36 ; 0x24 + 80364de: 2100 movs r1, #0 + 80364e0: 4618 mov r0, r3 + 80364e2: f002 f817 bl 8038514 + 80364e6: 4603 mov r3, r0 + 80364e8: 75fb strb r3, [r7, #23] /* SAI2/3 clock source configuration done later after clock selection check */ break; - 80364aa: e005 b.n 80364b8 + 80364ea: e005 b.n 80364f8 /* HSI, HSE, or CSI oscillator is used as source of SAI2/3 clock */ /* SAI2/3 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 80364ac: 2301 movs r3, #1 - 80364ae: 75fb strb r3, [r7, #23] + 80364ec: 2301 movs r3, #1 + 80364ee: 75fb strb r3, [r7, #23] break; - 80364b0: e002 b.n 80364b8 + 80364f0: e002 b.n 80364f8 break; - 80364b2: bf00 nop - 80364b4: e000 b.n 80364b8 + 80364f2: bf00 nop + 80364f4: e000 b.n 80364f8 break; - 80364b6: bf00 nop + 80364f6: bf00 nop } if(ret == HAL_OK) - 80364b8: 7dfb ldrb r3, [r7, #23] - 80364ba: 2b00 cmp r3, #0 - 80364bc: d109 bne.n 80364d2 + 80364f8: 7dfb ldrb r3, [r7, #23] + 80364fa: 2b00 cmp r3, #0 + 80364fc: d109 bne.n 8036512 { /* Set the source of SAI2/3 clock*/ __HAL_RCC_SAI23_CONFIG(PeriphClkInit->Sai23ClockSelection); - 80364be: 4b4d ldr r3, [pc, #308] ; (80365f4 ) - 80364c0: 6d1b ldr r3, [r3, #80] ; 0x50 - 80364c2: f423 72e0 bic.w r2, r3, #448 ; 0x1c0 - 80364c6: 687b ldr r3, [r7, #4] - 80364c8: 6d9b ldr r3, [r3, #88] ; 0x58 - 80364ca: 494a ldr r1, [pc, #296] ; (80365f4 ) - 80364cc: 4313 orrs r3, r2 - 80364ce: 650b str r3, [r1, #80] ; 0x50 - 80364d0: e001 b.n 80364d6 + 80364fe: 4b4d ldr r3, [pc, #308] ; (8036634 ) + 8036500: 6d1b ldr r3, [r3, #80] ; 0x50 + 8036502: f423 72e0 bic.w r2, r3, #448 ; 0x1c0 + 8036506: 687b ldr r3, [r7, #4] + 8036508: 6d9b ldr r3, [r3, #88] ; 0x58 + 803650a: 494a ldr r1, [pc, #296] ; (8036634 ) + 803650c: 4313 orrs r3, r2 + 803650e: 650b str r3, [r1, #80] ; 0x50 + 8036510: e001 b.n 8036516 } else { /* set overall return value */ status = ret; - 80364d2: 7dfb ldrb r3, [r7, #23] - 80364d4: 75bb strb r3, [r7, #22] + 8036512: 7dfb ldrb r3, [r7, #23] + 8036514: 75bb strb r3, [r7, #22] } #endif /*SAI2B*/ #if defined(SAI4) /*---------------------------- SAI4A configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI4A) == RCC_PERIPHCLK_SAI4A) - 80364d6: 687b ldr r3, [r7, #4] - 80364d8: 681b ldr r3, [r3, #0] - 80364da: f403 6380 and.w r3, r3, #1024 ; 0x400 - 80364de: 2b00 cmp r3, #0 - 80364e0: d049 beq.n 8036576 + 8036516: 687b ldr r3, [r7, #4] + 8036518: 681b ldr r3, [r3, #0] + 803651a: f403 6380 and.w r3, r3, #1024 ; 0x400 + 803651e: 2b00 cmp r3, #0 + 8036520: d049 beq.n 80365b6 { switch(PeriphClkInit->Sai4AClockSelection) - 80364e2: 687b ldr r3, [r7, #4] - 80364e4: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 80364e8: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 - 80364ec: d030 beq.n 8036550 - 80364ee: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 - 80364f2: d82a bhi.n 803654a - 80364f4: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 - 80364f8: d02c beq.n 8036554 - 80364fa: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 - 80364fe: d824 bhi.n 803654a - 8036500: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 - 8036504: d018 beq.n 8036538 - 8036506: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 - 803650a: d81e bhi.n 803654a - 803650c: 2b00 cmp r3, #0 - 803650e: d003 beq.n 8036518 - 8036510: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8036514: d007 beq.n 8036526 - 8036516: e018 b.n 803654a + 8036522: 687b ldr r3, [r7, #4] + 8036524: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 8036528: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 + 803652c: d030 beq.n 8036590 + 803652e: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 + 8036532: d82a bhi.n 803658a + 8036534: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 + 8036538: d02c beq.n 8036594 + 803653a: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 + 803653e: d824 bhi.n 803658a + 8036540: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 + 8036544: d018 beq.n 8036578 + 8036546: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 + 803654a: d81e bhi.n 803658a + 803654c: 2b00 cmp r3, #0 + 803654e: d003 beq.n 8036558 + 8036550: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8036554: d007 beq.n 8036566 + 8036556: e018 b.n 803658a { case RCC_SAI4ACLKSOURCE_PLL: /* PLL is used as clock source for SAI2*/ /* Enable SAI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036518: 4b36 ldr r3, [pc, #216] ; (80365f4 ) - 803651a: 6adb ldr r3, [r3, #44] ; 0x2c - 803651c: 4a35 ldr r2, [pc, #212] ; (80365f4 ) - 803651e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8036522: 62d3 str r3, [r2, #44] ; 0x2c + 8036558: 4b36 ldr r3, [pc, #216] ; (8036634 ) + 803655a: 6adb ldr r3, [r3, #44] ; 0x2c + 803655c: 4a35 ldr r2, [pc, #212] ; (8036634 ) + 803655e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036562: 62d3 str r3, [r2, #44] ; 0x2c /* SAI1 clock source configuration done later after clock selection check */ break; - 8036524: e017 b.n 8036556 + 8036564: e017 b.n 8036596 case RCC_SAI4ACLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036526: 687b ldr r3, [r7, #4] - 8036528: 3304 adds r3, #4 - 803652a: 2100 movs r1, #0 - 803652c: 4618 mov r0, r3 - 803652e: f001 ff1f bl 8038370 - 8036532: 4603 mov r3, r0 - 8036534: 75fb strb r3, [r7, #23] + 8036566: 687b ldr r3, [r7, #4] + 8036568: 3304 adds r3, #4 + 803656a: 2100 movs r1, #0 + 803656c: 4618 mov r0, r3 + 803656e: f001 ff1f bl 80383b0 + 8036572: 4603 mov r3, r0 + 8036574: 75fb strb r3, [r7, #23] /* SAI2 clock source configuration done later after clock selection check */ break; - 8036536: e00e b.n 8036556 + 8036576: e00e b.n 8036596 case RCC_SAI4ACLKSOURCE_PLL3: /* PLL3 is used as clock source for SAI2*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE); - 8036538: 687b ldr r3, [r7, #4] - 803653a: 3324 adds r3, #36 ; 0x24 - 803653c: 2100 movs r1, #0 - 803653e: 4618 mov r0, r3 - 8036540: f001 ffc8 bl 80384d4 - 8036544: 4603 mov r3, r0 - 8036546: 75fb strb r3, [r7, #23] + 8036578: 687b ldr r3, [r7, #4] + 803657a: 3324 adds r3, #36 ; 0x24 + 803657c: 2100 movs r1, #0 + 803657e: 4618 mov r0, r3 + 8036580: f001 ffc8 bl 8038514 + 8036584: 4603 mov r3, r0 + 8036586: 75fb strb r3, [r7, #23] /* SAI1 clock source configuration done later after clock selection check */ break; - 8036548: e005 b.n 8036556 + 8036588: e005 b.n 8036596 /* SAI4A clock source configuration done later after clock selection check */ break; #endif /* RCC_VER_3_0 */ default: ret = HAL_ERROR; - 803654a: 2301 movs r3, #1 - 803654c: 75fb strb r3, [r7, #23] + 803658a: 2301 movs r3, #1 + 803658c: 75fb strb r3, [r7, #23] break; - 803654e: e002 b.n 8036556 + 803658e: e002 b.n 8036596 break; - 8036550: bf00 nop - 8036552: e000 b.n 8036556 + 8036590: bf00 nop + 8036592: e000 b.n 8036596 break; - 8036554: bf00 nop + 8036594: bf00 nop } if(ret == HAL_OK) - 8036556: 7dfb ldrb r3, [r7, #23] - 8036558: 2b00 cmp r3, #0 - 803655a: d10a bne.n 8036572 + 8036596: 7dfb ldrb r3, [r7, #23] + 8036598: 2b00 cmp r3, #0 + 803659a: d10a bne.n 80365b2 { /* Set the source of SAI4A clock*/ __HAL_RCC_SAI4A_CONFIG(PeriphClkInit->Sai4AClockSelection); - 803655c: 4b25 ldr r3, [pc, #148] ; (80365f4 ) - 803655e: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036560: f423 0260 bic.w r2, r3, #14680064 ; 0xe00000 - 8036564: 687b ldr r3, [r7, #4] - 8036566: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 - 803656a: 4922 ldr r1, [pc, #136] ; (80365f4 ) - 803656c: 4313 orrs r3, r2 - 803656e: 658b str r3, [r1, #88] ; 0x58 - 8036570: e001 b.n 8036576 + 803659c: 4b25 ldr r3, [pc, #148] ; (8036634 ) + 803659e: 6d9b ldr r3, [r3, #88] ; 0x58 + 80365a0: f423 0260 bic.w r2, r3, #14680064 ; 0xe00000 + 80365a4: 687b ldr r3, [r7, #4] + 80365a6: f8d3 30a4 ldr.w r3, [r3, #164] ; 0xa4 + 80365aa: 4922 ldr r1, [pc, #136] ; (8036634 ) + 80365ac: 4313 orrs r3, r2 + 80365ae: 658b str r3, [r1, #88] ; 0x58 + 80365b0: e001 b.n 80365b6 } else { /* set overall return value */ status = ret; - 8036572: 7dfb ldrb r3, [r7, #23] - 8036574: 75bb strb r3, [r7, #22] + 80365b2: 7dfb ldrb r3, [r7, #23] + 80365b4: 75bb strb r3, [r7, #22] } } /*---------------------------- SAI4B configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SAI4B) == RCC_PERIPHCLK_SAI4B) - 8036576: 687b ldr r3, [r7, #4] - 8036578: 681b ldr r3, [r3, #0] - 803657a: f403 6300 and.w r3, r3, #2048 ; 0x800 - 803657e: 2b00 cmp r3, #0 - 8036580: d04b beq.n 803661a + 80365b6: 687b ldr r3, [r7, #4] + 80365b8: 681b ldr r3, [r3, #0] + 80365ba: f403 6300 and.w r3, r3, #2048 ; 0x800 + 80365be: 2b00 cmp r3, #0 + 80365c0: d04b beq.n 803665a { switch(PeriphClkInit->Sai4BClockSelection) - 8036582: 687b ldr r3, [r7, #4] - 8036584: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 - 8036588: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 - 803658c: d030 beq.n 80365f0 - 803658e: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 - 8036592: d82a bhi.n 80365ea - 8036594: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 - 8036598: d02e beq.n 80365f8 - 803659a: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 - 803659e: d824 bhi.n 80365ea - 80365a0: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80365a4: d018 beq.n 80365d8 - 80365a6: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80365aa: d81e bhi.n 80365ea - 80365ac: 2b00 cmp r3, #0 - 80365ae: d003 beq.n 80365b8 - 80365b0: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 80365b4: d007 beq.n 80365c6 - 80365b6: e018 b.n 80365ea + 80365c2: 687b ldr r3, [r7, #4] + 80365c4: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 + 80365c8: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 + 80365cc: d030 beq.n 8036630 + 80365ce: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 + 80365d2: d82a bhi.n 803662a + 80365d4: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 + 80365d8: d02e beq.n 8036638 + 80365da: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 + 80365de: d824 bhi.n 803662a + 80365e0: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80365e4: d018 beq.n 8036618 + 80365e6: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80365ea: d81e bhi.n 803662a + 80365ec: 2b00 cmp r3, #0 + 80365ee: d003 beq.n 80365f8 + 80365f0: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 80365f4: d007 beq.n 8036606 + 80365f6: e018 b.n 803662a { case RCC_SAI4BCLKSOURCE_PLL: /* PLL is used as clock source for SAI2*/ /* Enable SAI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 80365b8: 4b0e ldr r3, [pc, #56] ; (80365f4 ) - 80365ba: 6adb ldr r3, [r3, #44] ; 0x2c - 80365bc: 4a0d ldr r2, [pc, #52] ; (80365f4 ) - 80365be: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 80365c2: 62d3 str r3, [r2, #44] ; 0x2c + 80365f8: 4b0e ldr r3, [pc, #56] ; (8036634 ) + 80365fa: 6adb ldr r3, [r3, #44] ; 0x2c + 80365fc: 4a0d ldr r2, [pc, #52] ; (8036634 ) + 80365fe: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036602: 62d3 str r3, [r2, #44] ; 0x2c /* SAI1 clock source configuration done later after clock selection check */ break; - 80365c4: e019 b.n 80365fa + 8036604: e019 b.n 803663a case RCC_SAI4BCLKSOURCE_PLL2: /* PLL2 is used as clock source for SAI2*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 80365c6: 687b ldr r3, [r7, #4] - 80365c8: 3304 adds r3, #4 - 80365ca: 2100 movs r1, #0 - 80365cc: 4618 mov r0, r3 - 80365ce: f001 fecf bl 8038370 - 80365d2: 4603 mov r3, r0 - 80365d4: 75fb strb r3, [r7, #23] + 8036606: 687b ldr r3, [r7, #4] + 8036608: 3304 adds r3, #4 + 803660a: 2100 movs r1, #0 + 803660c: 4618 mov r0, r3 + 803660e: f001 fecf bl 80383b0 + 8036612: 4603 mov r3, r0 + 8036614: 75fb strb r3, [r7, #23] /* SAI2 clock source configuration done later after clock selection check */ break; - 80365d6: e010 b.n 80365fa + 8036616: e010 b.n 803663a case RCC_SAI4BCLKSOURCE_PLL3: /* PLL3 is used as clock source for SAI2*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3), DIVIDER_P_UPDATE); - 80365d8: 687b ldr r3, [r7, #4] - 80365da: 3324 adds r3, #36 ; 0x24 - 80365dc: 2100 movs r1, #0 - 80365de: 4618 mov r0, r3 - 80365e0: f001 ff78 bl 80384d4 - 80365e4: 4603 mov r3, r0 - 80365e6: 75fb strb r3, [r7, #23] + 8036618: 687b ldr r3, [r7, #4] + 803661a: 3324 adds r3, #36 ; 0x24 + 803661c: 2100 movs r1, #0 + 803661e: 4618 mov r0, r3 + 8036620: f001 ff78 bl 8038514 + 8036624: 4603 mov r3, r0 + 8036626: 75fb strb r3, [r7, #23] /* SAI1 clock source configuration done later after clock selection check */ break; - 80365e8: e007 b.n 80365fa + 8036628: e007 b.n 803663a /* SAI4B clock source configuration done later after clock selection check */ break; #endif /* RCC_VER_3_0 */ default: ret = HAL_ERROR; - 80365ea: 2301 movs r3, #1 - 80365ec: 75fb strb r3, [r7, #23] + 803662a: 2301 movs r3, #1 + 803662c: 75fb strb r3, [r7, #23] break; - 80365ee: e004 b.n 80365fa + 803662e: e004 b.n 803663a break; - 80365f0: bf00 nop - 80365f2: e002 b.n 80365fa - 80365f4: 58024400 .word 0x58024400 + 8036630: bf00 nop + 8036632: e002 b.n 803663a + 8036634: 58024400 .word 0x58024400 break; - 80365f8: bf00 nop + 8036638: bf00 nop } if(ret == HAL_OK) - 80365fa: 7dfb ldrb r3, [r7, #23] - 80365fc: 2b00 cmp r3, #0 - 80365fe: d10a bne.n 8036616 + 803663a: 7dfb ldrb r3, [r7, #23] + 803663c: 2b00 cmp r3, #0 + 803663e: d10a bne.n 8036656 { /* Set the source of SAI4B clock*/ __HAL_RCC_SAI4B_CONFIG(PeriphClkInit->Sai4BClockSelection); - 8036600: 4b99 ldr r3, [pc, #612] ; (8036868 ) - 8036602: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036604: f023 62e0 bic.w r2, r3, #117440512 ; 0x7000000 - 8036608: 687b ldr r3, [r7, #4] - 803660a: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 - 803660e: 4996 ldr r1, [pc, #600] ; (8036868 ) - 8036610: 4313 orrs r3, r2 - 8036612: 658b str r3, [r1, #88] ; 0x58 - 8036614: e001 b.n 803661a + 8036640: 4b99 ldr r3, [pc, #612] ; (80368a8 ) + 8036642: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036644: f023 62e0 bic.w r2, r3, #117440512 ; 0x7000000 + 8036648: 687b ldr r3, [r7, #4] + 803664a: f8d3 30a8 ldr.w r3, [r3, #168] ; 0xa8 + 803664e: 4996 ldr r1, [pc, #600] ; (80368a8 ) + 8036650: 4313 orrs r3, r2 + 8036652: 658b str r3, [r1, #88] ; 0x58 + 8036654: e001 b.n 803665a } else { /* set overall return value */ status = ret; - 8036616: 7dfb ldrb r3, [r7, #23] - 8036618: 75bb strb r3, [r7, #22] + 8036656: 7dfb ldrb r3, [r7, #23] + 8036658: 75bb strb r3, [r7, #22] } #endif /*SAI4*/ #if defined(QUADSPI) /*---------------------------- QSPI configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_QSPI) == RCC_PERIPHCLK_QSPI) - 803661a: 687b ldr r3, [r7, #4] - 803661c: 681b ldr r3, [r3, #0] - 803661e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8036622: 2b00 cmp r3, #0 - 8036624: d032 beq.n 803668c + 803665a: 687b ldr r3, [r7, #4] + 803665c: 681b ldr r3, [r3, #0] + 803665e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8036662: 2b00 cmp r3, #0 + 8036664: d032 beq.n 80366cc { switch(PeriphClkInit->QspiClockSelection) - 8036626: 687b ldr r3, [r7, #4] - 8036628: 6c9b ldr r3, [r3, #72] ; 0x48 - 803662a: 2b30 cmp r3, #48 ; 0x30 - 803662c: d01c beq.n 8036668 - 803662e: 2b30 cmp r3, #48 ; 0x30 - 8036630: d817 bhi.n 8036662 - 8036632: 2b20 cmp r3, #32 - 8036634: d00c beq.n 8036650 - 8036636: 2b20 cmp r3, #32 - 8036638: d813 bhi.n 8036662 - 803663a: 2b00 cmp r3, #0 - 803663c: d016 beq.n 803666c - 803663e: 2b10 cmp r3, #16 - 8036640: d10f bne.n 8036662 + 8036666: 687b ldr r3, [r7, #4] + 8036668: 6c9b ldr r3, [r3, #72] ; 0x48 + 803666a: 2b30 cmp r3, #48 ; 0x30 + 803666c: d01c beq.n 80366a8 + 803666e: 2b30 cmp r3, #48 ; 0x30 + 8036670: d817 bhi.n 80366a2 + 8036672: 2b20 cmp r3, #32 + 8036674: d00c beq.n 8036690 + 8036676: 2b20 cmp r3, #32 + 8036678: d813 bhi.n 80366a2 + 803667a: 2b00 cmp r3, #0 + 803667c: d016 beq.n 80366ac + 803667e: 2b10 cmp r3, #16 + 8036680: d10f bne.n 80366a2 { case RCC_QSPICLKSOURCE_PLL: /* PLL is used as clock source for QSPI*/ /* Enable QSPI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036642: 4b89 ldr r3, [pc, #548] ; (8036868 ) - 8036644: 6adb ldr r3, [r3, #44] ; 0x2c - 8036646: 4a88 ldr r2, [pc, #544] ; (8036868 ) - 8036648: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 803664c: 62d3 str r3, [r2, #44] ; 0x2c + 8036682: 4b89 ldr r3, [pc, #548] ; (80368a8 ) + 8036684: 6adb ldr r3, [r3, #44] ; 0x2c + 8036686: 4a88 ldr r2, [pc, #544] ; (80368a8 ) + 8036688: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 803668c: 62d3 str r3, [r2, #44] ; 0x2c /* QSPI clock source configuration done later after clock selection check */ break; - 803664e: e00e b.n 803666e + 803668e: e00e b.n 80366ae case RCC_QSPICLKSOURCE_PLL2: /* PLL2 is used as clock source for QSPI*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE); - 8036650: 687b ldr r3, [r7, #4] - 8036652: 3304 adds r3, #4 - 8036654: 2102 movs r1, #2 - 8036656: 4618 mov r0, r3 - 8036658: f001 fe8a bl 8038370 - 803665c: 4603 mov r3, r0 - 803665e: 75fb strb r3, [r7, #23] + 8036690: 687b ldr r3, [r7, #4] + 8036692: 3304 adds r3, #4 + 8036694: 2102 movs r1, #2 + 8036696: 4618 mov r0, r3 + 8036698: f001 fe8a bl 80383b0 + 803669c: 4603 mov r3, r0 + 803669e: 75fb strb r3, [r7, #23] /* QSPI clock source configuration done later after clock selection check */ break; - 8036660: e005 b.n 803666e + 80366a0: e005 b.n 80366ae case RCC_QSPICLKSOURCE_D1HCLK: /* Domain1 HCLK clock selected as QSPI kernel peripheral clock */ break; default: ret = HAL_ERROR; - 8036662: 2301 movs r3, #1 - 8036664: 75fb strb r3, [r7, #23] + 80366a2: 2301 movs r3, #1 + 80366a4: 75fb strb r3, [r7, #23] break; - 8036666: e002 b.n 803666e + 80366a6: e002 b.n 80366ae break; - 8036668: bf00 nop - 803666a: e000 b.n 803666e + 80366a8: bf00 nop + 80366aa: e000 b.n 80366ae break; - 803666c: bf00 nop + 80366ac: bf00 nop } if(ret == HAL_OK) - 803666e: 7dfb ldrb r3, [r7, #23] - 8036670: 2b00 cmp r3, #0 - 8036672: d109 bne.n 8036688 + 80366ae: 7dfb ldrb r3, [r7, #23] + 80366b0: 2b00 cmp r3, #0 + 80366b2: d109 bne.n 80366c8 { /* Set the source of QSPI clock*/ __HAL_RCC_QSPI_CONFIG(PeriphClkInit->QspiClockSelection); - 8036674: 4b7c ldr r3, [pc, #496] ; (8036868 ) - 8036676: 6cdb ldr r3, [r3, #76] ; 0x4c - 8036678: f023 0230 bic.w r2, r3, #48 ; 0x30 - 803667c: 687b ldr r3, [r7, #4] - 803667e: 6c9b ldr r3, [r3, #72] ; 0x48 - 8036680: 4979 ldr r1, [pc, #484] ; (8036868 ) - 8036682: 4313 orrs r3, r2 - 8036684: 64cb str r3, [r1, #76] ; 0x4c - 8036686: e001 b.n 803668c + 80366b4: 4b7c ldr r3, [pc, #496] ; (80368a8 ) + 80366b6: 6cdb ldr r3, [r3, #76] ; 0x4c + 80366b8: f023 0230 bic.w r2, r3, #48 ; 0x30 + 80366bc: 687b ldr r3, [r7, #4] + 80366be: 6c9b ldr r3, [r3, #72] ; 0x48 + 80366c0: 4979 ldr r1, [pc, #484] ; (80368a8 ) + 80366c2: 4313 orrs r3, r2 + 80366c4: 64cb str r3, [r1, #76] ; 0x4c + 80366c6: e001 b.n 80366cc } else { /* set overall return value */ status = ret; - 8036688: 7dfb ldrb r3, [r7, #23] - 803668a: 75bb strb r3, [r7, #22] + 80366c8: 7dfb ldrb r3, [r7, #23] + 80366ca: 75bb strb r3, [r7, #22] } } #endif /*OCTOSPI*/ /*---------------------------- SPI1/2/3 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI123) == RCC_PERIPHCLK_SPI123) - 803668c: 687b ldr r3, [r7, #4] - 803668e: 681b ldr r3, [r3, #0] - 8036690: f403 5380 and.w r3, r3, #4096 ; 0x1000 - 8036694: 2b00 cmp r3, #0 - 8036696: d047 beq.n 8036728 + 80366cc: 687b ldr r3, [r7, #4] + 80366ce: 681b ldr r3, [r3, #0] + 80366d0: f403 5380 and.w r3, r3, #4096 ; 0x1000 + 80366d4: 2b00 cmp r3, #0 + 80366d6: d047 beq.n 8036768 { switch(PeriphClkInit->Spi123ClockSelection) - 8036698: 687b ldr r3, [r7, #4] - 803669a: 6ddb ldr r3, [r3, #92] ; 0x5c - 803669c: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 80366a0: d030 beq.n 8036704 - 80366a2: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 80366a6: d82a bhi.n 80366fe - 80366a8: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 - 80366ac: d02c beq.n 8036708 - 80366ae: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 - 80366b2: d824 bhi.n 80366fe - 80366b4: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 80366b8: d018 beq.n 80366ec - 80366ba: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 80366be: d81e bhi.n 80366fe - 80366c0: 2b00 cmp r3, #0 - 80366c2: d003 beq.n 80366cc - 80366c4: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 80366c8: d007 beq.n 80366da - 80366ca: e018 b.n 80366fe + 80366d8: 687b ldr r3, [r7, #4] + 80366da: 6ddb ldr r3, [r3, #92] ; 0x5c + 80366dc: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 80366e0: d030 beq.n 8036744 + 80366e2: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 80366e6: d82a bhi.n 803673e + 80366e8: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 + 80366ec: d02c beq.n 8036748 + 80366ee: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 + 80366f2: d824 bhi.n 803673e + 80366f4: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 80366f8: d018 beq.n 803672c + 80366fa: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 80366fe: d81e bhi.n 803673e + 8036700: 2b00 cmp r3, #0 + 8036702: d003 beq.n 803670c + 8036704: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8036708: d007 beq.n 803671a + 803670a: e018 b.n 803673e { case RCC_SPI123CLKSOURCE_PLL: /* PLL is used as clock source for SPI1/2/3 */ /* Enable SPI Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 80366cc: 4b66 ldr r3, [pc, #408] ; (8036868 ) - 80366ce: 6adb ldr r3, [r3, #44] ; 0x2c - 80366d0: 4a65 ldr r2, [pc, #404] ; (8036868 ) - 80366d2: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 80366d6: 62d3 str r3, [r2, #44] ; 0x2c + 803670c: 4b66 ldr r3, [pc, #408] ; (80368a8 ) + 803670e: 6adb ldr r3, [r3, #44] ; 0x2c + 8036710: 4a65 ldr r2, [pc, #404] ; (80368a8 ) + 8036712: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036716: 62d3 str r3, [r2, #44] ; 0x2c /* SPI1/2/3 clock source configuration done later after clock selection check */ break; - 80366d8: e017 b.n 803670a + 8036718: e017 b.n 803674a case RCC_SPI123CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI1/2/3 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 80366da: 687b ldr r3, [r7, #4] - 80366dc: 3304 adds r3, #4 - 80366de: 2100 movs r1, #0 - 80366e0: 4618 mov r0, r3 - 80366e2: f001 fe45 bl 8038370 - 80366e6: 4603 mov r3, r0 - 80366e8: 75fb strb r3, [r7, #23] + 803671a: 687b ldr r3, [r7, #4] + 803671c: 3304 adds r3, #4 + 803671e: 2100 movs r1, #0 + 8036720: 4618 mov r0, r3 + 8036722: f001 fe45 bl 80383b0 + 8036726: 4603 mov r3, r0 + 8036728: 75fb strb r3, [r7, #23] /* SPI1/2/3 clock source configuration done later after clock selection check */ break; - 80366ea: e00e b.n 803670a + 803672a: e00e b.n 803674a case RCC_SPI123CLKSOURCE_PLL3: /* PLL3 is used as clock source for SPI1/2/3 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_P_UPDATE); - 80366ec: 687b ldr r3, [r7, #4] - 80366ee: 3324 adds r3, #36 ; 0x24 - 80366f0: 2100 movs r1, #0 - 80366f2: 4618 mov r0, r3 - 80366f4: f001 feee bl 80384d4 - 80366f8: 4603 mov r3, r0 - 80366fa: 75fb strb r3, [r7, #23] + 803672c: 687b ldr r3, [r7, #4] + 803672e: 3324 adds r3, #36 ; 0x24 + 8036730: 2100 movs r1, #0 + 8036732: 4618 mov r0, r3 + 8036734: f001 feee bl 8038514 + 8036738: 4603 mov r3, r0 + 803673a: 75fb strb r3, [r7, #23] /* SPI1/2/3 clock source configuration done later after clock selection check */ break; - 80366fc: e005 b.n 803670a + 803673c: e005 b.n 803674a /* HSI, HSE, or CSI oscillator is used as source of SPI1/2/3 clock */ /* SPI1/2/3 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 80366fe: 2301 movs r3, #1 - 8036700: 75fb strb r3, [r7, #23] + 803673e: 2301 movs r3, #1 + 8036740: 75fb strb r3, [r7, #23] break; - 8036702: e002 b.n 803670a + 8036742: e002 b.n 803674a break; - 8036704: bf00 nop - 8036706: e000 b.n 803670a + 8036744: bf00 nop + 8036746: e000 b.n 803674a break; - 8036708: bf00 nop + 8036748: bf00 nop } if(ret == HAL_OK) - 803670a: 7dfb ldrb r3, [r7, #23] - 803670c: 2b00 cmp r3, #0 - 803670e: d109 bne.n 8036724 + 803674a: 7dfb ldrb r3, [r7, #23] + 803674c: 2b00 cmp r3, #0 + 803674e: d109 bne.n 8036764 { /* Set the source of SPI1/2/3 clock*/ __HAL_RCC_SPI123_CONFIG(PeriphClkInit->Spi123ClockSelection); - 8036710: 4b55 ldr r3, [pc, #340] ; (8036868 ) - 8036712: 6d1b ldr r3, [r3, #80] ; 0x50 - 8036714: f423 42e0 bic.w r2, r3, #28672 ; 0x7000 - 8036718: 687b ldr r3, [r7, #4] - 803671a: 6ddb ldr r3, [r3, #92] ; 0x5c - 803671c: 4952 ldr r1, [pc, #328] ; (8036868 ) - 803671e: 4313 orrs r3, r2 - 8036720: 650b str r3, [r1, #80] ; 0x50 - 8036722: e001 b.n 8036728 + 8036750: 4b55 ldr r3, [pc, #340] ; (80368a8 ) + 8036752: 6d1b ldr r3, [r3, #80] ; 0x50 + 8036754: f423 42e0 bic.w r2, r3, #28672 ; 0x7000 + 8036758: 687b ldr r3, [r7, #4] + 803675a: 6ddb ldr r3, [r3, #92] ; 0x5c + 803675c: 4952 ldr r1, [pc, #328] ; (80368a8 ) + 803675e: 4313 orrs r3, r2 + 8036760: 650b str r3, [r1, #80] ; 0x50 + 8036762: e001 b.n 8036768 } else { /* set overall return value */ status = ret; - 8036724: 7dfb ldrb r3, [r7, #23] - 8036726: 75bb strb r3, [r7, #22] + 8036764: 7dfb ldrb r3, [r7, #23] + 8036766: 75bb strb r3, [r7, #22] } } /*---------------------------- SPI4/5 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI45) == RCC_PERIPHCLK_SPI45) - 8036728: 687b ldr r3, [r7, #4] - 803672a: 681b ldr r3, [r3, #0] - 803672c: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 8036730: 2b00 cmp r3, #0 - 8036732: d049 beq.n 80367c8 + 8036768: 687b ldr r3, [r7, #4] + 803676a: 681b ldr r3, [r3, #0] + 803676c: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 8036770: 2b00 cmp r3, #0 + 8036772: d049 beq.n 8036808 { switch(PeriphClkInit->Spi45ClockSelection) - 8036734: 687b ldr r3, [r7, #4] - 8036736: 6e1b ldr r3, [r3, #96] ; 0x60 - 8036738: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 - 803673c: d02e beq.n 803679c - 803673e: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 - 8036742: d828 bhi.n 8036796 - 8036744: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 - 8036748: d02a beq.n 80367a0 - 803674a: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 - 803674e: d822 bhi.n 8036796 - 8036750: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 - 8036754: d026 beq.n 80367a4 - 8036756: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 - 803675a: d81c bhi.n 8036796 - 803675c: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8036760: d010 beq.n 8036784 - 8036762: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8036766: d816 bhi.n 8036796 - 8036768: 2b00 cmp r3, #0 - 803676a: d01d beq.n 80367a8 - 803676c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8036770: d111 bne.n 8036796 + 8036774: 687b ldr r3, [r7, #4] + 8036776: 6e1b ldr r3, [r3, #96] ; 0x60 + 8036778: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 + 803677c: d02e beq.n 80367dc + 803677e: f5b3 2fa0 cmp.w r3, #327680 ; 0x50000 + 8036782: d828 bhi.n 80367d6 + 8036784: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 + 8036788: d02a beq.n 80367e0 + 803678a: f5b3 2f80 cmp.w r3, #262144 ; 0x40000 + 803678e: d822 bhi.n 80367d6 + 8036790: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 + 8036794: d026 beq.n 80367e4 + 8036796: f5b3 3f40 cmp.w r3, #196608 ; 0x30000 + 803679a: d81c bhi.n 80367d6 + 803679c: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80367a0: d010 beq.n 80367c4 + 80367a2: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80367a6: d816 bhi.n 80367d6 + 80367a8: 2b00 cmp r3, #0 + 80367aa: d01d beq.n 80367e8 + 80367ac: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80367b0: d111 bne.n 80367d6 /* SPI4/5 clock source configuration done later after clock selection check */ break; case RCC_SPI45CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI4/5 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 8036772: 687b ldr r3, [r7, #4] - 8036774: 3304 adds r3, #4 - 8036776: 2101 movs r1, #1 - 8036778: 4618 mov r0, r3 - 803677a: f001 fdf9 bl 8038370 - 803677e: 4603 mov r3, r0 - 8036780: 75fb strb r3, [r7, #23] + 80367b2: 687b ldr r3, [r7, #4] + 80367b4: 3304 adds r3, #4 + 80367b6: 2101 movs r1, #1 + 80367b8: 4618 mov r0, r3 + 80367ba: f001 fdf9 bl 80383b0 + 80367be: 4603 mov r3, r0 + 80367c0: 75fb strb r3, [r7, #23] /* SPI4/5 clock source configuration done later after clock selection check */ break; - 8036782: e012 b.n 80367aa + 80367c2: e012 b.n 80367ea case RCC_SPI45CLKSOURCE_PLL3: /* PLL3 is used as clock source for SPI4/5 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036784: 687b ldr r3, [r7, #4] - 8036786: 3324 adds r3, #36 ; 0x24 - 8036788: 2101 movs r1, #1 - 803678a: 4618 mov r0, r3 - 803678c: f001 fea2 bl 80384d4 - 8036790: 4603 mov r3, r0 - 8036792: 75fb strb r3, [r7, #23] + 80367c4: 687b ldr r3, [r7, #4] + 80367c6: 3324 adds r3, #36 ; 0x24 + 80367c8: 2101 movs r1, #1 + 80367ca: 4618 mov r0, r3 + 80367cc: f001 fea2 bl 8038514 + 80367d0: 4603 mov r3, r0 + 80367d2: 75fb strb r3, [r7, #23] /* SPI4/5 clock source configuration done later after clock selection check */ break; - 8036794: e009 b.n 80367aa + 80367d4: e009 b.n 80367ea /* HSE, oscillator is used as source of SPI4/5 clock */ /* SPI4/5 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036796: 2301 movs r3, #1 - 8036798: 75fb strb r3, [r7, #23] + 80367d6: 2301 movs r3, #1 + 80367d8: 75fb strb r3, [r7, #23] break; - 803679a: e006 b.n 80367aa + 80367da: e006 b.n 80367ea break; - 803679c: bf00 nop - 803679e: e004 b.n 80367aa + 80367dc: bf00 nop + 80367de: e004 b.n 80367ea break; - 80367a0: bf00 nop - 80367a2: e002 b.n 80367aa + 80367e0: bf00 nop + 80367e2: e002 b.n 80367ea break; - 80367a4: bf00 nop - 80367a6: e000 b.n 80367aa + 80367e4: bf00 nop + 80367e6: e000 b.n 80367ea break; - 80367a8: bf00 nop + 80367e8: bf00 nop } if(ret == HAL_OK) - 80367aa: 7dfb ldrb r3, [r7, #23] - 80367ac: 2b00 cmp r3, #0 - 80367ae: d109 bne.n 80367c4 + 80367ea: 7dfb ldrb r3, [r7, #23] + 80367ec: 2b00 cmp r3, #0 + 80367ee: d109 bne.n 8036804 { /* Set the source of SPI4/5 clock*/ __HAL_RCC_SPI45_CONFIG(PeriphClkInit->Spi45ClockSelection); - 80367b0: 4b2d ldr r3, [pc, #180] ; (8036868 ) - 80367b2: 6d1b ldr r3, [r3, #80] ; 0x50 - 80367b4: f423 22e0 bic.w r2, r3, #458752 ; 0x70000 - 80367b8: 687b ldr r3, [r7, #4] - 80367ba: 6e1b ldr r3, [r3, #96] ; 0x60 - 80367bc: 492a ldr r1, [pc, #168] ; (8036868 ) - 80367be: 4313 orrs r3, r2 - 80367c0: 650b str r3, [r1, #80] ; 0x50 - 80367c2: e001 b.n 80367c8 + 80367f0: 4b2d ldr r3, [pc, #180] ; (80368a8 ) + 80367f2: 6d1b ldr r3, [r3, #80] ; 0x50 + 80367f4: f423 22e0 bic.w r2, r3, #458752 ; 0x70000 + 80367f8: 687b ldr r3, [r7, #4] + 80367fa: 6e1b ldr r3, [r3, #96] ; 0x60 + 80367fc: 492a ldr r1, [pc, #168] ; (80368a8 ) + 80367fe: 4313 orrs r3, r2 + 8036800: 650b str r3, [r1, #80] ; 0x50 + 8036802: e001 b.n 8036808 } else { /* set overall return value */ status = ret; - 80367c4: 7dfb ldrb r3, [r7, #23] - 80367c6: 75bb strb r3, [r7, #22] + 8036804: 7dfb ldrb r3, [r7, #23] + 8036806: 75bb strb r3, [r7, #22] } } /*---------------------------- SPI6 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SPI6) == RCC_PERIPHCLK_SPI6) - 80367c8: 687b ldr r3, [r7, #4] - 80367ca: 681b ldr r3, [r3, #0] - 80367cc: f403 4380 and.w r3, r3, #16384 ; 0x4000 - 80367d0: 2b00 cmp r3, #0 - 80367d2: d04d beq.n 8036870 + 8036808: 687b ldr r3, [r7, #4] + 803680a: 681b ldr r3, [r3, #0] + 803680c: f403 4380 and.w r3, r3, #16384 ; 0x4000 + 8036810: 2b00 cmp r3, #0 + 8036812: d04d beq.n 80368b0 { switch(PeriphClkInit->Spi6ClockSelection) - 80367d4: 687b ldr r3, [r7, #4] - 80367d6: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 80367da: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 80367de: d02e beq.n 803683e - 80367e0: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 80367e4: d828 bhi.n 8036838 - 80367e6: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 80367ea: d02a beq.n 8036842 - 80367ec: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 80367f0: d822 bhi.n 8036838 - 80367f2: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 80367f6: d026 beq.n 8036846 - 80367f8: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 80367fc: d81c bhi.n 8036838 - 80367fe: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8036802: d010 beq.n 8036826 - 8036804: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8036808: d816 bhi.n 8036838 - 803680a: 2b00 cmp r3, #0 - 803680c: d01d beq.n 803684a - 803680e: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 8036812: d111 bne.n 8036838 + 8036814: 687b ldr r3, [r7, #4] + 8036816: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 803681a: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 803681e: d02e beq.n 803687e + 8036820: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 8036824: d828 bhi.n 8036878 + 8036826: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 803682a: d02a beq.n 8036882 + 803682c: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8036830: d822 bhi.n 8036878 + 8036832: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 8036836: d026 beq.n 8036886 + 8036838: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 803683c: d81c bhi.n 8036878 + 803683e: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8036842: d010 beq.n 8036866 + 8036844: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8036848: d816 bhi.n 8036878 + 803684a: 2b00 cmp r3, #0 + 803684c: d01d beq.n 803688a + 803684e: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8036852: d111 bne.n 8036878 /* SPI6 clock source configuration done later after clock selection check */ break; case RCC_SPI6CLKSOURCE_PLL2: /* PLL2 is used as clock source for SPI6*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 8036814: 687b ldr r3, [r7, #4] - 8036816: 3304 adds r3, #4 - 8036818: 2101 movs r1, #1 - 803681a: 4618 mov r0, r3 - 803681c: f001 fda8 bl 8038370 - 8036820: 4603 mov r3, r0 - 8036822: 75fb strb r3, [r7, #23] + 8036854: 687b ldr r3, [r7, #4] + 8036856: 3304 adds r3, #4 + 8036858: 2101 movs r1, #1 + 803685a: 4618 mov r0, r3 + 803685c: f001 fda8 bl 80383b0 + 8036860: 4603 mov r3, r0 + 8036862: 75fb strb r3, [r7, #23] /* SPI6 clock source configuration done later after clock selection check */ break; - 8036824: e012 b.n 803684c + 8036864: e012 b.n 803688c case RCC_SPI6CLKSOURCE_PLL3: /* PLL3 is used as clock source for SPI6*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036826: 687b ldr r3, [r7, #4] - 8036828: 3324 adds r3, #36 ; 0x24 - 803682a: 2101 movs r1, #1 - 803682c: 4618 mov r0, r3 - 803682e: f001 fe51 bl 80384d4 - 8036832: 4603 mov r3, r0 - 8036834: 75fb strb r3, [r7, #23] + 8036866: 687b ldr r3, [r7, #4] + 8036868: 3324 adds r3, #36 ; 0x24 + 803686a: 2101 movs r1, #1 + 803686c: 4618 mov r0, r3 + 803686e: f001 fe51 bl 8038514 + 8036872: 4603 mov r3, r0 + 8036874: 75fb strb r3, [r7, #23] /* SPI6 clock source configuration done later after clock selection check */ break; - 8036836: e009 b.n 803684c + 8036876: e009 b.n 803688c /* SPI6 clock source configuration done later after clock selection check */ break; #endif default: ret = HAL_ERROR; - 8036838: 2301 movs r3, #1 - 803683a: 75fb strb r3, [r7, #23] + 8036878: 2301 movs r3, #1 + 803687a: 75fb strb r3, [r7, #23] break; - 803683c: e006 b.n 803684c + 803687c: e006 b.n 803688c break; - 803683e: bf00 nop - 8036840: e004 b.n 803684c + 803687e: bf00 nop + 8036880: e004 b.n 803688c break; - 8036842: bf00 nop - 8036844: e002 b.n 803684c + 8036882: bf00 nop + 8036884: e002 b.n 803688c break; - 8036846: bf00 nop - 8036848: e000 b.n 803684c + 8036886: bf00 nop + 8036888: e000 b.n 803688c break; - 803684a: bf00 nop + 803688a: bf00 nop } if(ret == HAL_OK) - 803684c: 7dfb ldrb r3, [r7, #23] - 803684e: 2b00 cmp r3, #0 - 8036850: d10c bne.n 803686c + 803688c: 7dfb ldrb r3, [r7, #23] + 803688e: 2b00 cmp r3, #0 + 8036890: d10c bne.n 80368ac { /* Set the source of SPI6 clock*/ __HAL_RCC_SPI6_CONFIG(PeriphClkInit->Spi6ClockSelection); - 8036852: 4b05 ldr r3, [pc, #20] ; (8036868 ) - 8036854: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036856: f023 42e0 bic.w r2, r3, #1879048192 ; 0x70000000 - 803685a: 687b ldr r3, [r7, #4] - 803685c: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac - 8036860: 4901 ldr r1, [pc, #4] ; (8036868 ) - 8036862: 4313 orrs r3, r2 - 8036864: 658b str r3, [r1, #88] ; 0x58 - 8036866: e003 b.n 8036870 - 8036868: 58024400 .word 0x58024400 + 8036892: 4b05 ldr r3, [pc, #20] ; (80368a8 ) + 8036894: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036896: f023 42e0 bic.w r2, r3, #1879048192 ; 0x70000000 + 803689a: 687b ldr r3, [r7, #4] + 803689c: f8d3 30ac ldr.w r3, [r3, #172] ; 0xac + 80368a0: 4901 ldr r1, [pc, #4] ; (80368a8 ) + 80368a2: 4313 orrs r3, r2 + 80368a4: 658b str r3, [r1, #88] ; 0x58 + 80368a6: e003 b.n 80368b0 + 80368a8: 58024400 .word 0x58024400 } else { /* set overall return value */ status = ret; - 803686c: 7dfb ldrb r3, [r7, #23] - 803686e: 75bb strb r3, [r7, #22] + 80368ac: 7dfb ldrb r3, [r7, #23] + 80368ae: 75bb strb r3, [r7, #22] } #endif /*DSI*/ #if defined(FDCAN1) || defined(FDCAN2) /*---------------------------- FDCAN configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FDCAN) == RCC_PERIPHCLK_FDCAN) - 8036870: 687b ldr r3, [r7, #4] - 8036872: 681b ldr r3, [r3, #0] - 8036874: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 8036878: 2b00 cmp r3, #0 - 803687a: d02f beq.n 80368dc + 80368b0: 687b ldr r3, [r7, #4] + 80368b2: 681b ldr r3, [r3, #0] + 80368b4: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 80368b8: 2b00 cmp r3, #0 + 80368ba: d02f beq.n 803691c { switch(PeriphClkInit->FdcanClockSelection) - 803687c: 687b ldr r3, [r7, #4] - 803687e: 6edb ldr r3, [r3, #108] ; 0x6c - 8036880: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8036884: d00e beq.n 80368a4 - 8036886: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 803688a: d814 bhi.n 80368b6 - 803688c: 2b00 cmp r3, #0 - 803688e: d015 beq.n 80368bc - 8036890: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 8036894: d10f bne.n 80368b6 + 80368bc: 687b ldr r3, [r7, #4] + 80368be: 6edb ldr r3, [r3, #108] ; 0x6c + 80368c0: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80368c4: d00e beq.n 80368e4 + 80368c6: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80368ca: d814 bhi.n 80368f6 + 80368cc: 2b00 cmp r3, #0 + 80368ce: d015 beq.n 80368fc + 80368d0: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 80368d4: d10f bne.n 80368f6 { case RCC_FDCANCLKSOURCE_PLL: /* PLL is used as clock source for FDCAN*/ /* Enable FDCAN Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036896: 4baf ldr r3, [pc, #700] ; (8036b54 ) - 8036898: 6adb ldr r3, [r3, #44] ; 0x2c - 803689a: 4aae ldr r2, [pc, #696] ; (8036b54 ) - 803689c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 80368a0: 62d3 str r3, [r2, #44] ; 0x2c + 80368d6: 4baf ldr r3, [pc, #700] ; (8036b94 ) + 80368d8: 6adb ldr r3, [r3, #44] ; 0x2c + 80368da: 4aae ldr r2, [pc, #696] ; (8036b94 ) + 80368dc: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 80368e0: 62d3 str r3, [r2, #44] ; 0x2c /* FDCAN clock source configuration done later after clock selection check */ break; - 80368a2: e00c b.n 80368be + 80368e2: e00c b.n 80368fe case RCC_FDCANCLKSOURCE_PLL2: /* PLL2 is used as clock source for FDCAN*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 80368a4: 687b ldr r3, [r7, #4] - 80368a6: 3304 adds r3, #4 - 80368a8: 2101 movs r1, #1 - 80368aa: 4618 mov r0, r3 - 80368ac: f001 fd60 bl 8038370 - 80368b0: 4603 mov r3, r0 - 80368b2: 75fb strb r3, [r7, #23] + 80368e4: 687b ldr r3, [r7, #4] + 80368e6: 3304 adds r3, #4 + 80368e8: 2101 movs r1, #1 + 80368ea: 4618 mov r0, r3 + 80368ec: f001 fd60 bl 80383b0 + 80368f0: 4603 mov r3, r0 + 80368f2: 75fb strb r3, [r7, #23] /* FDCAN clock source configuration done later after clock selection check */ break; - 80368b4: e003 b.n 80368be + 80368f4: e003 b.n 80368fe /* HSE is used as clock source for FDCAN*/ /* FDCAN clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 80368b6: 2301 movs r3, #1 - 80368b8: 75fb strb r3, [r7, #23] + 80368f6: 2301 movs r3, #1 + 80368f8: 75fb strb r3, [r7, #23] break; - 80368ba: e000 b.n 80368be + 80368fa: e000 b.n 80368fe break; - 80368bc: bf00 nop + 80368fc: bf00 nop } if(ret == HAL_OK) - 80368be: 7dfb ldrb r3, [r7, #23] - 80368c0: 2b00 cmp r3, #0 - 80368c2: d109 bne.n 80368d8 + 80368fe: 7dfb ldrb r3, [r7, #23] + 8036900: 2b00 cmp r3, #0 + 8036902: d109 bne.n 8036918 { /* Set the source of FDCAN clock*/ __HAL_RCC_FDCAN_CONFIG(PeriphClkInit->FdcanClockSelection); - 80368c4: 4ba3 ldr r3, [pc, #652] ; (8036b54 ) - 80368c6: 6d1b ldr r3, [r3, #80] ; 0x50 - 80368c8: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 - 80368cc: 687b ldr r3, [r7, #4] - 80368ce: 6edb ldr r3, [r3, #108] ; 0x6c - 80368d0: 49a0 ldr r1, [pc, #640] ; (8036b54 ) - 80368d2: 4313 orrs r3, r2 - 80368d4: 650b str r3, [r1, #80] ; 0x50 - 80368d6: e001 b.n 80368dc + 8036904: 4ba3 ldr r3, [pc, #652] ; (8036b94 ) + 8036906: 6d1b ldr r3, [r3, #80] ; 0x50 + 8036908: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 + 803690c: 687b ldr r3, [r7, #4] + 803690e: 6edb ldr r3, [r3, #108] ; 0x6c + 8036910: 49a0 ldr r1, [pc, #640] ; (8036b94 ) + 8036912: 4313 orrs r3, r2 + 8036914: 650b str r3, [r1, #80] ; 0x50 + 8036916: e001 b.n 803691c } else { /* set overall return value */ status = ret; - 80368d8: 7dfb ldrb r3, [r7, #23] - 80368da: 75bb strb r3, [r7, #22] + 8036918: 7dfb ldrb r3, [r7, #23] + 803691a: 75bb strb r3, [r7, #22] } } #endif /*FDCAN1 || FDCAN2*/ /*---------------------------- FMC configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_FMC) == RCC_PERIPHCLK_FMC) - 80368dc: 687b ldr r3, [r7, #4] - 80368de: 681b ldr r3, [r3, #0] - 80368e0: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 80368e4: 2b00 cmp r3, #0 - 80368e6: d032 beq.n 803694e + 803691c: 687b ldr r3, [r7, #4] + 803691e: 681b ldr r3, [r3, #0] + 8036920: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 8036924: 2b00 cmp r3, #0 + 8036926: d032 beq.n 803698e { switch(PeriphClkInit->FmcClockSelection) - 80368e8: 687b ldr r3, [r7, #4] - 80368ea: 6c5b ldr r3, [r3, #68] ; 0x44 - 80368ec: 2b03 cmp r3, #3 - 80368ee: d81b bhi.n 8036928 - 80368f0: a201 add r2, pc, #4 ; (adr r2, 80368f8 ) - 80368f2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80368f6: bf00 nop - 80368f8: 0803692f .word 0x0803692f - 80368fc: 08036909 .word 0x08036909 - 8036900: 08036917 .word 0x08036917 - 8036904: 0803692f .word 0x0803692f + 8036928: 687b ldr r3, [r7, #4] + 803692a: 6c5b ldr r3, [r3, #68] ; 0x44 + 803692c: 2b03 cmp r3, #3 + 803692e: d81b bhi.n 8036968 + 8036930: a201 add r2, pc, #4 ; (adr r2, 8036938 ) + 8036932: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8036936: bf00 nop + 8036938: 0803696f .word 0x0803696f + 803693c: 08036949 .word 0x08036949 + 8036940: 08036957 .word 0x08036957 + 8036944: 0803696f .word 0x0803696f { case RCC_FMCCLKSOURCE_PLL: /* PLL is used as clock source for FMC*/ /* Enable FMC Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036908: 4b92 ldr r3, [pc, #584] ; (8036b54 ) - 803690a: 6adb ldr r3, [r3, #44] ; 0x2c - 803690c: 4a91 ldr r2, [pc, #580] ; (8036b54 ) - 803690e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8036912: 62d3 str r3, [r2, #44] ; 0x2c + 8036948: 4b92 ldr r3, [pc, #584] ; (8036b94 ) + 803694a: 6adb ldr r3, [r3, #44] ; 0x2c + 803694c: 4a91 ldr r2, [pc, #580] ; (8036b94 ) + 803694e: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036952: 62d3 str r3, [r2, #44] ; 0x2c /* FMC clock source configuration done later after clock selection check */ break; - 8036914: e00c b.n 8036930 + 8036954: e00c b.n 8036970 case RCC_FMCCLKSOURCE_PLL2: /* PLL2 is used as clock source for FMC*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE); - 8036916: 687b ldr r3, [r7, #4] - 8036918: 3304 adds r3, #4 - 803691a: 2102 movs r1, #2 - 803691c: 4618 mov r0, r3 - 803691e: f001 fd27 bl 8038370 - 8036922: 4603 mov r3, r0 - 8036924: 75fb strb r3, [r7, #23] + 8036956: 687b ldr r3, [r7, #4] + 8036958: 3304 adds r3, #4 + 803695a: 2102 movs r1, #2 + 803695c: 4618 mov r0, r3 + 803695e: f001 fd27 bl 80383b0 + 8036962: 4603 mov r3, r0 + 8036964: 75fb strb r3, [r7, #23] /* FMC clock source configuration done later after clock selection check */ break; - 8036926: e003 b.n 8036930 + 8036966: e003 b.n 8036970 case RCC_FMCCLKSOURCE_HCLK: /* D1/CD HCLK clock selected as FMC kernel peripheral clock */ break; default: ret = HAL_ERROR; - 8036928: 2301 movs r3, #1 - 803692a: 75fb strb r3, [r7, #23] + 8036968: 2301 movs r3, #1 + 803696a: 75fb strb r3, [r7, #23] break; - 803692c: e000 b.n 8036930 + 803696c: e000 b.n 8036970 break; - 803692e: bf00 nop + 803696e: bf00 nop } if(ret == HAL_OK) - 8036930: 7dfb ldrb r3, [r7, #23] - 8036932: 2b00 cmp r3, #0 - 8036934: d109 bne.n 803694a + 8036970: 7dfb ldrb r3, [r7, #23] + 8036972: 2b00 cmp r3, #0 + 8036974: d109 bne.n 803698a { /* Set the source of FMC clock*/ __HAL_RCC_FMC_CONFIG(PeriphClkInit->FmcClockSelection); - 8036936: 4b87 ldr r3, [pc, #540] ; (8036b54 ) - 8036938: 6cdb ldr r3, [r3, #76] ; 0x4c - 803693a: f023 0203 bic.w r2, r3, #3 - 803693e: 687b ldr r3, [r7, #4] - 8036940: 6c5b ldr r3, [r3, #68] ; 0x44 - 8036942: 4984 ldr r1, [pc, #528] ; (8036b54 ) - 8036944: 4313 orrs r3, r2 - 8036946: 64cb str r3, [r1, #76] ; 0x4c - 8036948: e001 b.n 803694e + 8036976: 4b87 ldr r3, [pc, #540] ; (8036b94 ) + 8036978: 6cdb ldr r3, [r3, #76] ; 0x4c + 803697a: f023 0203 bic.w r2, r3, #3 + 803697e: 687b ldr r3, [r7, #4] + 8036980: 6c5b ldr r3, [r3, #68] ; 0x44 + 8036982: 4984 ldr r1, [pc, #528] ; (8036b94 ) + 8036984: 4313 orrs r3, r2 + 8036986: 64cb str r3, [r1, #76] ; 0x4c + 8036988: e001 b.n 803698e } else { /* set overall return value */ status = ret; - 803694a: 7dfb ldrb r3, [r7, #23] - 803694c: 75bb strb r3, [r7, #22] + 803698a: 7dfb ldrb r3, [r7, #23] + 803698c: 75bb strb r3, [r7, #22] } } /*---------------------------- RTC configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == RCC_PERIPHCLK_RTC) - 803694e: 687b ldr r3, [r7, #4] - 8036950: 681b ldr r3, [r3, #0] - 8036952: f403 0380 and.w r3, r3, #4194304 ; 0x400000 - 8036956: 2b00 cmp r3, #0 - 8036958: f000 8086 beq.w 8036a68 + 803698e: 687b ldr r3, [r7, #4] + 8036990: 681b ldr r3, [r3, #0] + 8036992: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 8036996: 2b00 cmp r3, #0 + 8036998: f000 8086 beq.w 8036aa8 { /* check for RTC Parameters used to output RTCCLK */ assert_param(IS_RCC_RTCCLKSOURCE(PeriphClkInit->RTCClockSelection)); /* Enable write access to Backup domain */ SET_BIT(PWR->CR1, PWR_CR1_DBP); - 803695c: 4b7e ldr r3, [pc, #504] ; (8036b58 ) - 803695e: 681b ldr r3, [r3, #0] - 8036960: 4a7d ldr r2, [pc, #500] ; (8036b58 ) - 8036962: f443 7380 orr.w r3, r3, #256 ; 0x100 - 8036966: 6013 str r3, [r2, #0] + 803699c: 4b7e ldr r3, [pc, #504] ; (8036b98 ) + 803699e: 681b ldr r3, [r3, #0] + 80369a0: 4a7d ldr r2, [pc, #500] ; (8036b98 ) + 80369a2: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80369a6: 6013 str r3, [r2, #0] /* Wait for Backup domain Write protection disable */ tickstart = HAL_GetTick(); - 8036968: f7f6 fb14 bl 802cf94 - 803696c: 6138 str r0, [r7, #16] + 80369a8: f7f6 fb14 bl 802cfd4 + 80369ac: 6138 str r0, [r7, #16] while((PWR->CR1 & PWR_CR1_DBP) == 0U) - 803696e: e009 b.n 8036984 + 80369ae: e009 b.n 80369c4 { if((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE) - 8036970: f7f6 fb10 bl 802cf94 - 8036974: 4602 mov r2, r0 - 8036976: 693b ldr r3, [r7, #16] - 8036978: 1ad3 subs r3, r2, r3 - 803697a: 2b64 cmp r3, #100 ; 0x64 - 803697c: d902 bls.n 8036984 + 80369b0: f7f6 fb10 bl 802cfd4 + 80369b4: 4602 mov r2, r0 + 80369b6: 693b ldr r3, [r7, #16] + 80369b8: 1ad3 subs r3, r2, r3 + 80369ba: 2b64 cmp r3, #100 ; 0x64 + 80369bc: d902 bls.n 80369c4 { ret = HAL_TIMEOUT; - 803697e: 2303 movs r3, #3 - 8036980: 75fb strb r3, [r7, #23] + 80369be: 2303 movs r3, #3 + 80369c0: 75fb strb r3, [r7, #23] break; - 8036982: e005 b.n 8036990 + 80369c2: e005 b.n 80369d0 while((PWR->CR1 & PWR_CR1_DBP) == 0U) - 8036984: 4b74 ldr r3, [pc, #464] ; (8036b58 ) - 8036986: 681b ldr r3, [r3, #0] - 8036988: f403 7380 and.w r3, r3, #256 ; 0x100 - 803698c: 2b00 cmp r3, #0 - 803698e: d0ef beq.n 8036970 + 80369c4: 4b74 ldr r3, [pc, #464] ; (8036b98 ) + 80369c6: 681b ldr r3, [r3, #0] + 80369c8: f403 7380 and.w r3, r3, #256 ; 0x100 + 80369cc: 2b00 cmp r3, #0 + 80369ce: d0ef beq.n 80369b0 } } if(ret == HAL_OK) - 8036990: 7dfb ldrb r3, [r7, #23] - 8036992: 2b00 cmp r3, #0 - 8036994: d166 bne.n 8036a64 + 80369d0: 7dfb ldrb r3, [r7, #23] + 80369d2: 2b00 cmp r3, #0 + 80369d4: d166 bne.n 8036aa4 { /* Reset the Backup domain only if the RTC Clock source selection is modified */ if((RCC->BDCR & RCC_BDCR_RTCSEL) != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL)) - 8036996: 4b6f ldr r3, [pc, #444] ; (8036b54 ) - 8036998: 6f1a ldr r2, [r3, #112] ; 0x70 - 803699a: 687b ldr r3, [r7, #4] - 803699c: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 80369a0: 4053 eors r3, r2 - 80369a2: f403 7340 and.w r3, r3, #768 ; 0x300 - 80369a6: 2b00 cmp r3, #0 - 80369a8: d013 beq.n 80369d2 + 80369d6: 4b6f ldr r3, [pc, #444] ; (8036b94 ) + 80369d8: 6f1a ldr r2, [r3, #112] ; 0x70 + 80369da: 687b ldr r3, [r7, #4] + 80369dc: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 80369e0: 4053 eors r3, r2 + 80369e2: f403 7340 and.w r3, r3, #768 ; 0x300 + 80369e6: 2b00 cmp r3, #0 + 80369e8: d013 beq.n 8036a12 { /* Store the content of BDCR register before the reset of Backup Domain */ tmpreg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL)); - 80369aa: 4b6a ldr r3, [pc, #424] ; (8036b54 ) - 80369ac: 6f1b ldr r3, [r3, #112] ; 0x70 - 80369ae: f423 7340 bic.w r3, r3, #768 ; 0x300 - 80369b2: 60fb str r3, [r7, #12] + 80369ea: 4b6a ldr r3, [pc, #424] ; (8036b94 ) + 80369ec: 6f1b ldr r3, [r3, #112] ; 0x70 + 80369ee: f423 7340 bic.w r3, r3, #768 ; 0x300 + 80369f2: 60fb str r3, [r7, #12] /* RTC Clock selection can be changed only if the Backup Domain is reset */ __HAL_RCC_BACKUPRESET_FORCE(); - 80369b4: 4b67 ldr r3, [pc, #412] ; (8036b54 ) - 80369b6: 6f1b ldr r3, [r3, #112] ; 0x70 - 80369b8: 4a66 ldr r2, [pc, #408] ; (8036b54 ) - 80369ba: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 80369be: 6713 str r3, [r2, #112] ; 0x70 + 80369f4: 4b67 ldr r3, [pc, #412] ; (8036b94 ) + 80369f6: 6f1b ldr r3, [r3, #112] ; 0x70 + 80369f8: 4a66 ldr r2, [pc, #408] ; (8036b94 ) + 80369fa: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 80369fe: 6713 str r3, [r2, #112] ; 0x70 __HAL_RCC_BACKUPRESET_RELEASE(); - 80369c0: 4b64 ldr r3, [pc, #400] ; (8036b54 ) - 80369c2: 6f1b ldr r3, [r3, #112] ; 0x70 - 80369c4: 4a63 ldr r2, [pc, #396] ; (8036b54 ) - 80369c6: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 80369ca: 6713 str r3, [r2, #112] ; 0x70 + 8036a00: 4b64 ldr r3, [pc, #400] ; (8036b94 ) + 8036a02: 6f1b ldr r3, [r3, #112] ; 0x70 + 8036a04: 4a63 ldr r2, [pc, #396] ; (8036b94 ) + 8036a06: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 8036a0a: 6713 str r3, [r2, #112] ; 0x70 /* Restore the Content of BDCR register */ RCC->BDCR = tmpreg; - 80369cc: 4a61 ldr r2, [pc, #388] ; (8036b54 ) - 80369ce: 68fb ldr r3, [r7, #12] - 80369d0: 6713 str r3, [r2, #112] ; 0x70 + 8036a0c: 4a61 ldr r2, [pc, #388] ; (8036b94 ) + 8036a0e: 68fb ldr r3, [r7, #12] + 8036a10: 6713 str r3, [r2, #112] ; 0x70 } /* If LSE is selected as RTC clock source (and enabled prior to Backup Domain reset), wait for LSE reactivation */ if(PeriphClkInit->RTCClockSelection == RCC_RTCCLKSOURCE_LSE) - 80369d2: 687b ldr r3, [r7, #4] - 80369d4: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 80369d8: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80369dc: d115 bne.n 8036a0a + 8036a12: 687b ldr r3, [r7, #4] + 8036a14: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8036a18: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8036a1c: d115 bne.n 8036a4a { /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80369de: f7f6 fad9 bl 802cf94 - 80369e2: 6138 str r0, [r7, #16] + 8036a1e: f7f6 fad9 bl 802cfd4 + 8036a22: 6138 str r0, [r7, #16] /* Wait till LSE is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) - 80369e4: e00b b.n 80369fe + 8036a24: e00b b.n 8036a3e { if((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE) - 80369e6: f7f6 fad5 bl 802cf94 - 80369ea: 4602 mov r2, r0 - 80369ec: 693b ldr r3, [r7, #16] - 80369ee: 1ad3 subs r3, r2, r3 - 80369f0: f241 3288 movw r2, #5000 ; 0x1388 - 80369f4: 4293 cmp r3, r2 - 80369f6: d902 bls.n 80369fe + 8036a26: f7f6 fad5 bl 802cfd4 + 8036a2a: 4602 mov r2, r0 + 8036a2c: 693b ldr r3, [r7, #16] + 8036a2e: 1ad3 subs r3, r2, r3 + 8036a30: f241 3288 movw r2, #5000 ; 0x1388 + 8036a34: 4293 cmp r3, r2 + 8036a36: d902 bls.n 8036a3e { ret = HAL_TIMEOUT; - 80369f8: 2303 movs r3, #3 - 80369fa: 75fb strb r3, [r7, #23] + 8036a38: 2303 movs r3, #3 + 8036a3a: 75fb strb r3, [r7, #23] break; - 80369fc: e005 b.n 8036a0a + 8036a3c: e005 b.n 8036a4a while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U) - 80369fe: 4b55 ldr r3, [pc, #340] ; (8036b54 ) - 8036a00: 6f1b ldr r3, [r3, #112] ; 0x70 - 8036a02: f003 0302 and.w r3, r3, #2 - 8036a06: 2b00 cmp r3, #0 - 8036a08: d0ed beq.n 80369e6 + 8036a3e: 4b55 ldr r3, [pc, #340] ; (8036b94 ) + 8036a40: 6f1b ldr r3, [r3, #112] ; 0x70 + 8036a42: f003 0302 and.w r3, r3, #2 + 8036a46: 2b00 cmp r3, #0 + 8036a48: d0ed beq.n 8036a26 } } } if(ret == HAL_OK) - 8036a0a: 7dfb ldrb r3, [r7, #23] - 8036a0c: 2b00 cmp r3, #0 - 8036a0e: d126 bne.n 8036a5e + 8036a4a: 7dfb ldrb r3, [r7, #23] + 8036a4c: 2b00 cmp r3, #0 + 8036a4e: d126 bne.n 8036a9e { __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection); - 8036a10: 687b ldr r3, [r7, #4] - 8036a12: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8036a16: f403 7340 and.w r3, r3, #768 ; 0x300 - 8036a1a: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 8036a1e: d10d bne.n 8036a3c - 8036a20: 4b4c ldr r3, [pc, #304] ; (8036b54 ) - 8036a22: 691b ldr r3, [r3, #16] - 8036a24: f423 527c bic.w r2, r3, #16128 ; 0x3f00 - 8036a28: 687b ldr r3, [r7, #4] - 8036a2a: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8036a2e: 0919 lsrs r1, r3, #4 - 8036a30: 4b4a ldr r3, [pc, #296] ; (8036b5c ) - 8036a32: 400b ands r3, r1 - 8036a34: 4947 ldr r1, [pc, #284] ; (8036b54 ) - 8036a36: 4313 orrs r3, r2 - 8036a38: 610b str r3, [r1, #16] - 8036a3a: e005 b.n 8036a48 - 8036a3c: 4b45 ldr r3, [pc, #276] ; (8036b54 ) - 8036a3e: 691b ldr r3, [r3, #16] - 8036a40: 4a44 ldr r2, [pc, #272] ; (8036b54 ) - 8036a42: f423 537c bic.w r3, r3, #16128 ; 0x3f00 - 8036a46: 6113 str r3, [r2, #16] - 8036a48: 4b42 ldr r3, [pc, #264] ; (8036b54 ) - 8036a4a: 6f1a ldr r2, [r3, #112] ; 0x70 - 8036a4c: 687b ldr r3, [r7, #4] - 8036a4e: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 - 8036a52: f3c3 030b ubfx r3, r3, #0, #12 - 8036a56: 493f ldr r1, [pc, #252] ; (8036b54 ) - 8036a58: 4313 orrs r3, r2 - 8036a5a: 670b str r3, [r1, #112] ; 0x70 - 8036a5c: e004 b.n 8036a68 + 8036a50: 687b ldr r3, [r7, #4] + 8036a52: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8036a56: f403 7340 and.w r3, r3, #768 ; 0x300 + 8036a5a: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 8036a5e: d10d bne.n 8036a7c + 8036a60: 4b4c ldr r3, [pc, #304] ; (8036b94 ) + 8036a62: 691b ldr r3, [r3, #16] + 8036a64: f423 527c bic.w r2, r3, #16128 ; 0x3f00 + 8036a68: 687b ldr r3, [r7, #4] + 8036a6a: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8036a6e: 0919 lsrs r1, r3, #4 + 8036a70: 4b4a ldr r3, [pc, #296] ; (8036b9c ) + 8036a72: 400b ands r3, r1 + 8036a74: 4947 ldr r1, [pc, #284] ; (8036b94 ) + 8036a76: 4313 orrs r3, r2 + 8036a78: 610b str r3, [r1, #16] + 8036a7a: e005 b.n 8036a88 + 8036a7c: 4b45 ldr r3, [pc, #276] ; (8036b94 ) + 8036a7e: 691b ldr r3, [r3, #16] + 8036a80: 4a44 ldr r2, [pc, #272] ; (8036b94 ) + 8036a82: f423 537c bic.w r3, r3, #16128 ; 0x3f00 + 8036a86: 6113 str r3, [r2, #16] + 8036a88: 4b42 ldr r3, [pc, #264] ; (8036b94 ) + 8036a8a: 6f1a ldr r2, [r3, #112] ; 0x70 + 8036a8c: 687b ldr r3, [r7, #4] + 8036a8e: f8d3 30b0 ldr.w r3, [r3, #176] ; 0xb0 + 8036a92: f3c3 030b ubfx r3, r3, #0, #12 + 8036a96: 493f ldr r1, [pc, #252] ; (8036b94 ) + 8036a98: 4313 orrs r3, r2 + 8036a9a: 670b str r3, [r1, #112] ; 0x70 + 8036a9c: e004 b.n 8036aa8 } else { /* set overall return value */ status = ret; - 8036a5e: 7dfb ldrb r3, [r7, #23] - 8036a60: 75bb strb r3, [r7, #22] - 8036a62: e001 b.n 8036a68 + 8036a9e: 7dfb ldrb r3, [r7, #23] + 8036aa0: 75bb strb r3, [r7, #22] + 8036aa2: e001 b.n 8036aa8 } } else { /* set overall return value */ status = ret; - 8036a64: 7dfb ldrb r3, [r7, #23] - 8036a66: 75bb strb r3, [r7, #22] + 8036aa4: 7dfb ldrb r3, [r7, #23] + 8036aa6: 75bb strb r3, [r7, #22] } } /*-------------------------- USART1/6 configuration --------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART16) == RCC_PERIPHCLK_USART16) - 8036a68: 687b ldr r3, [r7, #4] - 8036a6a: 681b ldr r3, [r3, #0] - 8036a6c: f003 0301 and.w r3, r3, #1 - 8036a70: 2b00 cmp r3, #0 - 8036a72: f000 8085 beq.w 8036b80 + 8036aa8: 687b ldr r3, [r7, #4] + 8036aaa: 681b ldr r3, [r3, #0] + 8036aac: f003 0301 and.w r3, r3, #1 + 8036ab0: 2b00 cmp r3, #0 + 8036ab2: f000 8085 beq.w 8036bc0 { switch(PeriphClkInit->Usart16ClockSelection) - 8036a76: 687b ldr r3, [r7, #4] - 8036a78: 6f9b ldr r3, [r3, #120] ; 0x78 - 8036a7a: 2b28 cmp r3, #40 ; 0x28 - 8036a7c: d866 bhi.n 8036b4c - 8036a7e: a201 add r2, pc, #4 ; (adr r2, 8036a84 ) - 8036a80: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8036a84: 08036b61 .word 0x08036b61 - 8036a88: 08036b4d .word 0x08036b4d - 8036a8c: 08036b4d .word 0x08036b4d - 8036a90: 08036b4d .word 0x08036b4d - 8036a94: 08036b4d .word 0x08036b4d - 8036a98: 08036b4d .word 0x08036b4d - 8036a9c: 08036b4d .word 0x08036b4d - 8036aa0: 08036b4d .word 0x08036b4d - 8036aa4: 08036b29 .word 0x08036b29 - 8036aa8: 08036b4d .word 0x08036b4d - 8036aac: 08036b4d .word 0x08036b4d - 8036ab0: 08036b4d .word 0x08036b4d - 8036ab4: 08036b4d .word 0x08036b4d - 8036ab8: 08036b4d .word 0x08036b4d - 8036abc: 08036b4d .word 0x08036b4d - 8036ac0: 08036b4d .word 0x08036b4d - 8036ac4: 08036b3b .word 0x08036b3b - 8036ac8: 08036b4d .word 0x08036b4d - 8036acc: 08036b4d .word 0x08036b4d - 8036ad0: 08036b4d .word 0x08036b4d - 8036ad4: 08036b4d .word 0x08036b4d - 8036ad8: 08036b4d .word 0x08036b4d - 8036adc: 08036b4d .word 0x08036b4d - 8036ae0: 08036b4d .word 0x08036b4d - 8036ae4: 08036b61 .word 0x08036b61 - 8036ae8: 08036b4d .word 0x08036b4d - 8036aec: 08036b4d .word 0x08036b4d - 8036af0: 08036b4d .word 0x08036b4d - 8036af4: 08036b4d .word 0x08036b4d - 8036af8: 08036b4d .word 0x08036b4d - 8036afc: 08036b4d .word 0x08036b4d - 8036b00: 08036b4d .word 0x08036b4d - 8036b04: 08036b61 .word 0x08036b61 - 8036b08: 08036b4d .word 0x08036b4d - 8036b0c: 08036b4d .word 0x08036b4d - 8036b10: 08036b4d .word 0x08036b4d - 8036b14: 08036b4d .word 0x08036b4d - 8036b18: 08036b4d .word 0x08036b4d - 8036b1c: 08036b4d .word 0x08036b4d - 8036b20: 08036b4d .word 0x08036b4d - 8036b24: 08036b61 .word 0x08036b61 + 8036ab6: 687b ldr r3, [r7, #4] + 8036ab8: 6f9b ldr r3, [r3, #120] ; 0x78 + 8036aba: 2b28 cmp r3, #40 ; 0x28 + 8036abc: d866 bhi.n 8036b8c + 8036abe: a201 add r2, pc, #4 ; (adr r2, 8036ac4 ) + 8036ac0: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8036ac4: 08036ba1 .word 0x08036ba1 + 8036ac8: 08036b8d .word 0x08036b8d + 8036acc: 08036b8d .word 0x08036b8d + 8036ad0: 08036b8d .word 0x08036b8d + 8036ad4: 08036b8d .word 0x08036b8d + 8036ad8: 08036b8d .word 0x08036b8d + 8036adc: 08036b8d .word 0x08036b8d + 8036ae0: 08036b8d .word 0x08036b8d + 8036ae4: 08036b69 .word 0x08036b69 + 8036ae8: 08036b8d .word 0x08036b8d + 8036aec: 08036b8d .word 0x08036b8d + 8036af0: 08036b8d .word 0x08036b8d + 8036af4: 08036b8d .word 0x08036b8d + 8036af8: 08036b8d .word 0x08036b8d + 8036afc: 08036b8d .word 0x08036b8d + 8036b00: 08036b8d .word 0x08036b8d + 8036b04: 08036b7b .word 0x08036b7b + 8036b08: 08036b8d .word 0x08036b8d + 8036b0c: 08036b8d .word 0x08036b8d + 8036b10: 08036b8d .word 0x08036b8d + 8036b14: 08036b8d .word 0x08036b8d + 8036b18: 08036b8d .word 0x08036b8d + 8036b1c: 08036b8d .word 0x08036b8d + 8036b20: 08036b8d .word 0x08036b8d + 8036b24: 08036ba1 .word 0x08036ba1 + 8036b28: 08036b8d .word 0x08036b8d + 8036b2c: 08036b8d .word 0x08036b8d + 8036b30: 08036b8d .word 0x08036b8d + 8036b34: 08036b8d .word 0x08036b8d + 8036b38: 08036b8d .word 0x08036b8d + 8036b3c: 08036b8d .word 0x08036b8d + 8036b40: 08036b8d .word 0x08036b8d + 8036b44: 08036ba1 .word 0x08036ba1 + 8036b48: 08036b8d .word 0x08036b8d + 8036b4c: 08036b8d .word 0x08036b8d + 8036b50: 08036b8d .word 0x08036b8d + 8036b54: 08036b8d .word 0x08036b8d + 8036b58: 08036b8d .word 0x08036b8d + 8036b5c: 08036b8d .word 0x08036b8d + 8036b60: 08036b8d .word 0x08036b8d + 8036b64: 08036ba1 .word 0x08036ba1 case RCC_USART16CLKSOURCE_PCLK2: /* CD/D2 PCLK2 as clock source for USART1/6 */ /* USART1/6 clock source configuration done later after clock selection check */ break; case RCC_USART16CLKSOURCE_PLL2: /* PLL2 is used as clock source for USART1/6 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 8036b28: 687b ldr r3, [r7, #4] - 8036b2a: 3304 adds r3, #4 - 8036b2c: 2101 movs r1, #1 - 8036b2e: 4618 mov r0, r3 - 8036b30: f001 fc1e bl 8038370 - 8036b34: 4603 mov r3, r0 - 8036b36: 75fb strb r3, [r7, #23] + 8036b68: 687b ldr r3, [r7, #4] + 8036b6a: 3304 adds r3, #4 + 8036b6c: 2101 movs r1, #1 + 8036b6e: 4618 mov r0, r3 + 8036b70: f001 fc1e bl 80383b0 + 8036b74: 4603 mov r3, r0 + 8036b76: 75fb strb r3, [r7, #23] /* USART1/6 clock source configuration done later after clock selection check */ break; - 8036b38: e013 b.n 8036b62 + 8036b78: e013 b.n 8036ba2 case RCC_USART16CLKSOURCE_PLL3: /* PLL3 is used as clock source for USART1/6 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036b3a: 687b ldr r3, [r7, #4] - 8036b3c: 3324 adds r3, #36 ; 0x24 - 8036b3e: 2101 movs r1, #1 - 8036b40: 4618 mov r0, r3 - 8036b42: f001 fcc7 bl 80384d4 - 8036b46: 4603 mov r3, r0 - 8036b48: 75fb strb r3, [r7, #23] + 8036b7a: 687b ldr r3, [r7, #4] + 8036b7c: 3324 adds r3, #36 ; 0x24 + 8036b7e: 2101 movs r1, #1 + 8036b80: 4618 mov r0, r3 + 8036b82: f001 fcc7 bl 8038514 + 8036b86: 4603 mov r3, r0 + 8036b88: 75fb strb r3, [r7, #23] /* USART1/6 clock source configuration done later after clock selection check */ break; - 8036b4a: e00a b.n 8036b62 + 8036b8a: e00a b.n 8036ba2 /* LSE, oscillator is used as source of USART1/6 clock */ /* USART1/6 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036b4c: 2301 movs r3, #1 - 8036b4e: 75fb strb r3, [r7, #23] + 8036b8c: 2301 movs r3, #1 + 8036b8e: 75fb strb r3, [r7, #23] break; - 8036b50: e007 b.n 8036b62 - 8036b52: bf00 nop - 8036b54: 58024400 .word 0x58024400 - 8036b58: 58024800 .word 0x58024800 - 8036b5c: 00ffffcf .word 0x00ffffcf + 8036b90: e007 b.n 8036ba2 + 8036b92: bf00 nop + 8036b94: 58024400 .word 0x58024400 + 8036b98: 58024800 .word 0x58024800 + 8036b9c: 00ffffcf .word 0x00ffffcf break; - 8036b60: bf00 nop + 8036ba0: bf00 nop } if(ret == HAL_OK) - 8036b62: 7dfb ldrb r3, [r7, #23] - 8036b64: 2b00 cmp r3, #0 - 8036b66: d109 bne.n 8036b7c + 8036ba2: 7dfb ldrb r3, [r7, #23] + 8036ba4: 2b00 cmp r3, #0 + 8036ba6: d109 bne.n 8036bbc { /* Set the source of USART1/6 clock */ __HAL_RCC_USART16_CONFIG(PeriphClkInit->Usart16ClockSelection); - 8036b68: 4b96 ldr r3, [pc, #600] ; (8036dc4 ) - 8036b6a: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036b6c: f023 0238 bic.w r2, r3, #56 ; 0x38 - 8036b70: 687b ldr r3, [r7, #4] - 8036b72: 6f9b ldr r3, [r3, #120] ; 0x78 - 8036b74: 4993 ldr r1, [pc, #588] ; (8036dc4 ) - 8036b76: 4313 orrs r3, r2 - 8036b78: 654b str r3, [r1, #84] ; 0x54 - 8036b7a: e001 b.n 8036b80 + 8036ba8: 4b96 ldr r3, [pc, #600] ; (8036e04 ) + 8036baa: 6d5b ldr r3, [r3, #84] ; 0x54 + 8036bac: f023 0238 bic.w r2, r3, #56 ; 0x38 + 8036bb0: 687b ldr r3, [r7, #4] + 8036bb2: 6f9b ldr r3, [r3, #120] ; 0x78 + 8036bb4: 4993 ldr r1, [pc, #588] ; (8036e04 ) + 8036bb6: 4313 orrs r3, r2 + 8036bb8: 654b str r3, [r1, #84] ; 0x54 + 8036bba: e001 b.n 8036bc0 } else { /* set overall return value */ status = ret; - 8036b7c: 7dfb ldrb r3, [r7, #23] - 8036b7e: 75bb strb r3, [r7, #22] + 8036bbc: 7dfb ldrb r3, [r7, #23] + 8036bbe: 75bb strb r3, [r7, #22] } } /*-------------------------- USART2/3/4/5/7/8 Configuration --------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART234578) == RCC_PERIPHCLK_USART234578) - 8036b80: 687b ldr r3, [r7, #4] - 8036b82: 681b ldr r3, [r3, #0] - 8036b84: f003 0302 and.w r3, r3, #2 - 8036b88: 2b00 cmp r3, #0 - 8036b8a: d038 beq.n 8036bfe + 8036bc0: 687b ldr r3, [r7, #4] + 8036bc2: 681b ldr r3, [r3, #0] + 8036bc4: f003 0302 and.w r3, r3, #2 + 8036bc8: 2b00 cmp r3, #0 + 8036bca: d038 beq.n 8036c3e { switch(PeriphClkInit->Usart234578ClockSelection) - 8036b8c: 687b ldr r3, [r7, #4] - 8036b8e: 6f5b ldr r3, [r3, #116] ; 0x74 - 8036b90: 2b05 cmp r3, #5 - 8036b92: d821 bhi.n 8036bd8 - 8036b94: a201 add r2, pc, #4 ; (adr r2, 8036b9c ) - 8036b96: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8036b9a: bf00 nop - 8036b9c: 08036bdf .word 0x08036bdf - 8036ba0: 08036bb5 .word 0x08036bb5 - 8036ba4: 08036bc7 .word 0x08036bc7 - 8036ba8: 08036bdf .word 0x08036bdf - 8036bac: 08036bdf .word 0x08036bdf - 8036bb0: 08036bdf .word 0x08036bdf + 8036bcc: 687b ldr r3, [r7, #4] + 8036bce: 6f5b ldr r3, [r3, #116] ; 0x74 + 8036bd0: 2b05 cmp r3, #5 + 8036bd2: d821 bhi.n 8036c18 + 8036bd4: a201 add r2, pc, #4 ; (adr r2, 8036bdc ) + 8036bd6: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8036bda: bf00 nop + 8036bdc: 08036c1f .word 0x08036c1f + 8036be0: 08036bf5 .word 0x08036bf5 + 8036be4: 08036c07 .word 0x08036c07 + 8036be8: 08036c1f .word 0x08036c1f + 8036bec: 08036c1f .word 0x08036c1f + 8036bf0: 08036c1f .word 0x08036c1f case RCC_USART234578CLKSOURCE_PCLK1: /* CD/D2 PCLK1 as clock source for USART2/3/4/5/7/8 */ /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */ break; case RCC_USART234578CLKSOURCE_PLL2: /* PLL2 is used as clock source for USART2/3/4/5/7/8 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 8036bb4: 687b ldr r3, [r7, #4] - 8036bb6: 3304 adds r3, #4 - 8036bb8: 2101 movs r1, #1 - 8036bba: 4618 mov r0, r3 - 8036bbc: f001 fbd8 bl 8038370 - 8036bc0: 4603 mov r3, r0 - 8036bc2: 75fb strb r3, [r7, #23] + 8036bf4: 687b ldr r3, [r7, #4] + 8036bf6: 3304 adds r3, #4 + 8036bf8: 2101 movs r1, #1 + 8036bfa: 4618 mov r0, r3 + 8036bfc: f001 fbd8 bl 80383b0 + 8036c00: 4603 mov r3, r0 + 8036c02: 75fb strb r3, [r7, #23] /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */ break; - 8036bc4: e00c b.n 8036be0 + 8036c04: e00c b.n 8036c20 case RCC_USART234578CLKSOURCE_PLL3: /* PLL3 is used as clock source for USART2/3/4/5/7/8 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036bc6: 687b ldr r3, [r7, #4] - 8036bc8: 3324 adds r3, #36 ; 0x24 - 8036bca: 2101 movs r1, #1 - 8036bcc: 4618 mov r0, r3 - 8036bce: f001 fc81 bl 80384d4 - 8036bd2: 4603 mov r3, r0 - 8036bd4: 75fb strb r3, [r7, #23] + 8036c06: 687b ldr r3, [r7, #4] + 8036c08: 3324 adds r3, #36 ; 0x24 + 8036c0a: 2101 movs r1, #1 + 8036c0c: 4618 mov r0, r3 + 8036c0e: f001 fc81 bl 8038514 + 8036c12: 4603 mov r3, r0 + 8036c14: 75fb strb r3, [r7, #23] /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */ break; - 8036bd6: e003 b.n 8036be0 + 8036c16: e003 b.n 8036c20 /* LSE, oscillator is used as source of USART2/3/4/5/7/8 clock */ /* USART2/3/4/5/7/8 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036bd8: 2301 movs r3, #1 - 8036bda: 75fb strb r3, [r7, #23] + 8036c18: 2301 movs r3, #1 + 8036c1a: 75fb strb r3, [r7, #23] break; - 8036bdc: e000 b.n 8036be0 + 8036c1c: e000 b.n 8036c20 break; - 8036bde: bf00 nop + 8036c1e: bf00 nop } if(ret == HAL_OK) - 8036be0: 7dfb ldrb r3, [r7, #23] - 8036be2: 2b00 cmp r3, #0 - 8036be4: d109 bne.n 8036bfa + 8036c20: 7dfb ldrb r3, [r7, #23] + 8036c22: 2b00 cmp r3, #0 + 8036c24: d109 bne.n 8036c3a { /* Set the source of USART2/3/4/5/7/8 clock */ __HAL_RCC_USART234578_CONFIG(PeriphClkInit->Usart234578ClockSelection); - 8036be6: 4b77 ldr r3, [pc, #476] ; (8036dc4 ) - 8036be8: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036bea: f023 0207 bic.w r2, r3, #7 - 8036bee: 687b ldr r3, [r7, #4] - 8036bf0: 6f5b ldr r3, [r3, #116] ; 0x74 - 8036bf2: 4974 ldr r1, [pc, #464] ; (8036dc4 ) - 8036bf4: 4313 orrs r3, r2 - 8036bf6: 654b str r3, [r1, #84] ; 0x54 - 8036bf8: e001 b.n 8036bfe + 8036c26: 4b77 ldr r3, [pc, #476] ; (8036e04 ) + 8036c28: 6d5b ldr r3, [r3, #84] ; 0x54 + 8036c2a: f023 0207 bic.w r2, r3, #7 + 8036c2e: 687b ldr r3, [r7, #4] + 8036c30: 6f5b ldr r3, [r3, #116] ; 0x74 + 8036c32: 4974 ldr r1, [pc, #464] ; (8036e04 ) + 8036c34: 4313 orrs r3, r2 + 8036c36: 654b str r3, [r1, #84] ; 0x54 + 8036c38: e001 b.n 8036c3e } else { /* set overall return value */ status = ret; - 8036bfa: 7dfb ldrb r3, [r7, #23] - 8036bfc: 75bb strb r3, [r7, #22] + 8036c3a: 7dfb ldrb r3, [r7, #23] + 8036c3c: 75bb strb r3, [r7, #22] } } /*-------------------------- LPUART1 Configuration -------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPUART1) == RCC_PERIPHCLK_LPUART1) - 8036bfe: 687b ldr r3, [r7, #4] - 8036c00: 681b ldr r3, [r3, #0] - 8036c02: f003 0304 and.w r3, r3, #4 - 8036c06: 2b00 cmp r3, #0 - 8036c08: d03a beq.n 8036c80 + 8036c3e: 687b ldr r3, [r7, #4] + 8036c40: 681b ldr r3, [r3, #0] + 8036c42: f003 0304 and.w r3, r3, #4 + 8036c46: 2b00 cmp r3, #0 + 8036c48: d03a beq.n 8036cc0 { switch(PeriphClkInit->Lpuart1ClockSelection) - 8036c0a: 687b ldr r3, [r7, #4] - 8036c0c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8036c10: 2b05 cmp r3, #5 - 8036c12: d821 bhi.n 8036c58 - 8036c14: a201 add r2, pc, #4 ; (adr r2, 8036c1c ) - 8036c16: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8036c1a: bf00 nop - 8036c1c: 08036c5f .word 0x08036c5f - 8036c20: 08036c35 .word 0x08036c35 - 8036c24: 08036c47 .word 0x08036c47 - 8036c28: 08036c5f .word 0x08036c5f - 8036c2c: 08036c5f .word 0x08036c5f - 8036c30: 08036c5f .word 0x08036c5f + 8036c4a: 687b ldr r3, [r7, #4] + 8036c4c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8036c50: 2b05 cmp r3, #5 + 8036c52: d821 bhi.n 8036c98 + 8036c54: a201 add r2, pc, #4 ; (adr r2, 8036c5c ) + 8036c56: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8036c5a: bf00 nop + 8036c5c: 08036c9f .word 0x08036c9f + 8036c60: 08036c75 .word 0x08036c75 + 8036c64: 08036c87 .word 0x08036c87 + 8036c68: 08036c9f .word 0x08036c9f + 8036c6c: 08036c9f .word 0x08036c9f + 8036c70: 08036c9f .word 0x08036c9f case RCC_LPUART1CLKSOURCE_PCLK4: /* SRD/D3 PCLK1 (PCLK4) as clock source for LPUART1 */ /* LPUART1 clock source configuration done later after clock selection check */ break; case RCC_LPUART1CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPUART1 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_Q_UPDATE); - 8036c34: 687b ldr r3, [r7, #4] - 8036c36: 3304 adds r3, #4 - 8036c38: 2101 movs r1, #1 - 8036c3a: 4618 mov r0, r3 - 8036c3c: f001 fb98 bl 8038370 - 8036c40: 4603 mov r3, r0 - 8036c42: 75fb strb r3, [r7, #23] + 8036c74: 687b ldr r3, [r7, #4] + 8036c76: 3304 adds r3, #4 + 8036c78: 2101 movs r1, #1 + 8036c7a: 4618 mov r0, r3 + 8036c7c: f001 fb98 bl 80383b0 + 8036c80: 4603 mov r3, r0 + 8036c82: 75fb strb r3, [r7, #23] /* LPUART1 clock source configuration done later after clock selection check */ break; - 8036c44: e00c b.n 8036c60 + 8036c84: e00c b.n 8036ca0 case RCC_LPUART1CLKSOURCE_PLL3: /* PLL3 is used as clock source for LPUART1 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036c46: 687b ldr r3, [r7, #4] - 8036c48: 3324 adds r3, #36 ; 0x24 - 8036c4a: 2101 movs r1, #1 - 8036c4c: 4618 mov r0, r3 - 8036c4e: f001 fc41 bl 80384d4 - 8036c52: 4603 mov r3, r0 - 8036c54: 75fb strb r3, [r7, #23] + 8036c86: 687b ldr r3, [r7, #4] + 8036c88: 3324 adds r3, #36 ; 0x24 + 8036c8a: 2101 movs r1, #1 + 8036c8c: 4618 mov r0, r3 + 8036c8e: f001 fc41 bl 8038514 + 8036c92: 4603 mov r3, r0 + 8036c94: 75fb strb r3, [r7, #23] /* LPUART1 clock source configuration done later after clock selection check */ break; - 8036c56: e003 b.n 8036c60 + 8036c96: e003 b.n 8036ca0 /* LSE, oscillator is used as source of LPUART1 clock */ /* LPUART1 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036c58: 2301 movs r3, #1 - 8036c5a: 75fb strb r3, [r7, #23] + 8036c98: 2301 movs r3, #1 + 8036c9a: 75fb strb r3, [r7, #23] break; - 8036c5c: e000 b.n 8036c60 + 8036c9c: e000 b.n 8036ca0 break; - 8036c5e: bf00 nop + 8036c9e: bf00 nop } if(ret == HAL_OK) - 8036c60: 7dfb ldrb r3, [r7, #23] - 8036c62: 2b00 cmp r3, #0 - 8036c64: d10a bne.n 8036c7c + 8036ca0: 7dfb ldrb r3, [r7, #23] + 8036ca2: 2b00 cmp r3, #0 + 8036ca4: d10a bne.n 8036cbc { /* Set the source of LPUART1 clock */ __HAL_RCC_LPUART1_CONFIG(PeriphClkInit->Lpuart1ClockSelection); - 8036c66: 4b57 ldr r3, [pc, #348] ; (8036dc4 ) - 8036c68: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036c6a: f023 0207 bic.w r2, r3, #7 - 8036c6e: 687b ldr r3, [r7, #4] - 8036c70: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8036c74: 4953 ldr r1, [pc, #332] ; (8036dc4 ) - 8036c76: 4313 orrs r3, r2 - 8036c78: 658b str r3, [r1, #88] ; 0x58 - 8036c7a: e001 b.n 8036c80 + 8036ca6: 4b57 ldr r3, [pc, #348] ; (8036e04 ) + 8036ca8: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036caa: f023 0207 bic.w r2, r3, #7 + 8036cae: 687b ldr r3, [r7, #4] + 8036cb0: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8036cb4: 4953 ldr r1, [pc, #332] ; (8036e04 ) + 8036cb6: 4313 orrs r3, r2 + 8036cb8: 658b str r3, [r1, #88] ; 0x58 + 8036cba: e001 b.n 8036cc0 } else { /* set overall return value */ status = ret; - 8036c7c: 7dfb ldrb r3, [r7, #23] - 8036c7e: 75bb strb r3, [r7, #22] + 8036cbc: 7dfb ldrb r3, [r7, #23] + 8036cbe: 75bb strb r3, [r7, #22] } } /*---------------------------- LPTIM1 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM1) == RCC_PERIPHCLK_LPTIM1) - 8036c80: 687b ldr r3, [r7, #4] - 8036c82: 681b ldr r3, [r3, #0] - 8036c84: f003 0320 and.w r3, r3, #32 - 8036c88: 2b00 cmp r3, #0 - 8036c8a: d04b beq.n 8036d24 + 8036cc0: 687b ldr r3, [r7, #4] + 8036cc2: 681b ldr r3, [r3, #0] + 8036cc4: f003 0320 and.w r3, r3, #32 + 8036cc8: 2b00 cmp r3, #0 + 8036cca: d04b beq.n 8036d64 { switch(PeriphClkInit->Lptim1ClockSelection) - 8036c8c: 687b ldr r3, [r7, #4] - 8036c8e: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 8036c92: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 8036c96: d02e beq.n 8036cf6 - 8036c98: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 8036c9c: d828 bhi.n 8036cf0 - 8036c9e: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8036ca2: d02a beq.n 8036cfa - 8036ca4: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8036ca8: d822 bhi.n 8036cf0 - 8036caa: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 8036cae: d026 beq.n 8036cfe - 8036cb0: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 8036cb4: d81c bhi.n 8036cf0 - 8036cb6: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8036cba: d010 beq.n 8036cde - 8036cbc: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8036cc0: d816 bhi.n 8036cf0 - 8036cc2: 2b00 cmp r3, #0 - 8036cc4: d01d beq.n 8036d02 - 8036cc6: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 8036cca: d111 bne.n 8036cf0 + 8036ccc: 687b ldr r3, [r7, #4] + 8036cce: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 8036cd2: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 8036cd6: d02e beq.n 8036d36 + 8036cd8: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 8036cdc: d828 bhi.n 8036d30 + 8036cde: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8036ce2: d02a beq.n 8036d3a + 8036ce4: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8036ce8: d822 bhi.n 8036d30 + 8036cea: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 8036cee: d026 beq.n 8036d3e + 8036cf0: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 8036cf4: d81c bhi.n 8036d30 + 8036cf6: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8036cfa: d010 beq.n 8036d1e + 8036cfc: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8036d00: d816 bhi.n 8036d30 + 8036d02: 2b00 cmp r3, #0 + 8036d04: d01d beq.n 8036d42 + 8036d06: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8036d0a: d111 bne.n 8036d30 /* LPTIM1 clock source configuration done later after clock selection check */ break; case RCC_LPTIM1CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM1*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036ccc: 687b ldr r3, [r7, #4] - 8036cce: 3304 adds r3, #4 - 8036cd0: 2100 movs r1, #0 - 8036cd2: 4618 mov r0, r3 - 8036cd4: f001 fb4c bl 8038370 - 8036cd8: 4603 mov r3, r0 - 8036cda: 75fb strb r3, [r7, #23] + 8036d0c: 687b ldr r3, [r7, #4] + 8036d0e: 3304 adds r3, #4 + 8036d10: 2100 movs r1, #0 + 8036d12: 4618 mov r0, r3 + 8036d14: f001 fb4c bl 80383b0 + 8036d18: 4603 mov r3, r0 + 8036d1a: 75fb strb r3, [r7, #23] /* LPTIM1 clock source configuration done later after clock selection check */ break; - 8036cdc: e012 b.n 8036d04 + 8036d1c: e012 b.n 8036d44 case RCC_LPTIM1CLKSOURCE_PLL3: /* PLL3 is used as clock source for LPTIM1*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE); - 8036cde: 687b ldr r3, [r7, #4] - 8036ce0: 3324 adds r3, #36 ; 0x24 - 8036ce2: 2102 movs r1, #2 - 8036ce4: 4618 mov r0, r3 - 8036ce6: f001 fbf5 bl 80384d4 - 8036cea: 4603 mov r3, r0 - 8036cec: 75fb strb r3, [r7, #23] + 8036d1e: 687b ldr r3, [r7, #4] + 8036d20: 3324 adds r3, #36 ; 0x24 + 8036d22: 2102 movs r1, #2 + 8036d24: 4618 mov r0, r3 + 8036d26: f001 fbf5 bl 8038514 + 8036d2a: 4603 mov r3, r0 + 8036d2c: 75fb strb r3, [r7, #23] /* LPTIM1 clock source configuration done later after clock selection check */ break; - 8036cee: e009 b.n 8036d04 + 8036d2e: e009 b.n 8036d44 /* HSI, HSE, or CSI oscillator is used as source of LPTIM1 clock */ /* LPTIM1 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036cf0: 2301 movs r3, #1 - 8036cf2: 75fb strb r3, [r7, #23] + 8036d30: 2301 movs r3, #1 + 8036d32: 75fb strb r3, [r7, #23] break; - 8036cf4: e006 b.n 8036d04 + 8036d34: e006 b.n 8036d44 break; - 8036cf6: bf00 nop - 8036cf8: e004 b.n 8036d04 + 8036d36: bf00 nop + 8036d38: e004 b.n 8036d44 break; - 8036cfa: bf00 nop - 8036cfc: e002 b.n 8036d04 + 8036d3a: bf00 nop + 8036d3c: e002 b.n 8036d44 break; - 8036cfe: bf00 nop - 8036d00: e000 b.n 8036d04 + 8036d3e: bf00 nop + 8036d40: e000 b.n 8036d44 break; - 8036d02: bf00 nop + 8036d42: bf00 nop } if(ret == HAL_OK) - 8036d04: 7dfb ldrb r3, [r7, #23] - 8036d06: 2b00 cmp r3, #0 - 8036d08: d10a bne.n 8036d20 + 8036d44: 7dfb ldrb r3, [r7, #23] + 8036d46: 2b00 cmp r3, #0 + 8036d48: d10a bne.n 8036d60 { /* Set the source of LPTIM1 clock*/ __HAL_RCC_LPTIM1_CONFIG(PeriphClkInit->Lptim1ClockSelection); - 8036d0a: 4b2e ldr r3, [pc, #184] ; (8036dc4 ) - 8036d0c: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036d0e: f023 42e0 bic.w r2, r3, #1879048192 ; 0x70000000 - 8036d12: 687b ldr r3, [r7, #4] - 8036d14: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 8036d18: 492a ldr r1, [pc, #168] ; (8036dc4 ) - 8036d1a: 4313 orrs r3, r2 - 8036d1c: 654b str r3, [r1, #84] ; 0x54 - 8036d1e: e001 b.n 8036d24 + 8036d4a: 4b2e ldr r3, [pc, #184] ; (8036e04 ) + 8036d4c: 6d5b ldr r3, [r3, #84] ; 0x54 + 8036d4e: f023 42e0 bic.w r2, r3, #1879048192 ; 0x70000000 + 8036d52: 687b ldr r3, [r7, #4] + 8036d54: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 8036d58: 492a ldr r1, [pc, #168] ; (8036e04 ) + 8036d5a: 4313 orrs r3, r2 + 8036d5c: 654b str r3, [r1, #84] ; 0x54 + 8036d5e: e001 b.n 8036d64 } else { /* set overall return value */ status = ret; - 8036d20: 7dfb ldrb r3, [r7, #23] - 8036d22: 75bb strb r3, [r7, #22] + 8036d60: 7dfb ldrb r3, [r7, #23] + 8036d62: 75bb strb r3, [r7, #22] } } /*---------------------------- LPTIM2 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM2) == RCC_PERIPHCLK_LPTIM2) - 8036d24: 687b ldr r3, [r7, #4] - 8036d26: 681b ldr r3, [r3, #0] - 8036d28: f003 0340 and.w r3, r3, #64 ; 0x40 - 8036d2c: 2b00 cmp r3, #0 - 8036d2e: d04d beq.n 8036dcc + 8036d64: 687b ldr r3, [r7, #4] + 8036d66: 681b ldr r3, [r3, #0] + 8036d68: f003 0340 and.w r3, r3, #64 ; 0x40 + 8036d6c: 2b00 cmp r3, #0 + 8036d6e: d04d beq.n 8036e0c { switch(PeriphClkInit->Lptim2ClockSelection) - 8036d30: 687b ldr r3, [r7, #4] - 8036d32: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 - 8036d36: f5b3 5fa0 cmp.w r3, #5120 ; 0x1400 - 8036d3a: d02e beq.n 8036d9a - 8036d3c: f5b3 5fa0 cmp.w r3, #5120 ; 0x1400 - 8036d40: d828 bhi.n 8036d94 - 8036d42: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8036d46: d02a beq.n 8036d9e - 8036d48: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8036d4c: d822 bhi.n 8036d94 - 8036d4e: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 - 8036d52: d026 beq.n 8036da2 - 8036d54: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 - 8036d58: d81c bhi.n 8036d94 - 8036d5a: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 8036d5e: d010 beq.n 8036d82 - 8036d60: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 8036d64: d816 bhi.n 8036d94 - 8036d66: 2b00 cmp r3, #0 - 8036d68: d01d beq.n 8036da6 - 8036d6a: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 8036d6e: d111 bne.n 8036d94 + 8036d70: 687b ldr r3, [r7, #4] + 8036d72: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 + 8036d76: f5b3 5fa0 cmp.w r3, #5120 ; 0x1400 + 8036d7a: d02e beq.n 8036dda + 8036d7c: f5b3 5fa0 cmp.w r3, #5120 ; 0x1400 + 8036d80: d828 bhi.n 8036dd4 + 8036d82: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8036d86: d02a beq.n 8036dde + 8036d88: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8036d8c: d822 bhi.n 8036dd4 + 8036d8e: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 8036d92: d026 beq.n 8036de2 + 8036d94: f5b3 6f40 cmp.w r3, #3072 ; 0xc00 + 8036d98: d81c bhi.n 8036dd4 + 8036d9a: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 8036d9e: d010 beq.n 8036dc2 + 8036da0: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 8036da4: d816 bhi.n 8036dd4 + 8036da6: 2b00 cmp r3, #0 + 8036da8: d01d beq.n 8036de6 + 8036daa: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 8036dae: d111 bne.n 8036dd4 /* LPTIM2 clock source configuration done later after clock selection check */ break; case RCC_LPTIM2CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM2*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036d70: 687b ldr r3, [r7, #4] - 8036d72: 3304 adds r3, #4 - 8036d74: 2100 movs r1, #0 - 8036d76: 4618 mov r0, r3 - 8036d78: f001 fafa bl 8038370 - 8036d7c: 4603 mov r3, r0 - 8036d7e: 75fb strb r3, [r7, #23] + 8036db0: 687b ldr r3, [r7, #4] + 8036db2: 3304 adds r3, #4 + 8036db4: 2100 movs r1, #0 + 8036db6: 4618 mov r0, r3 + 8036db8: f001 fafa bl 80383b0 + 8036dbc: 4603 mov r3, r0 + 8036dbe: 75fb strb r3, [r7, #23] /* LPTIM2 clock source configuration done later after clock selection check */ break; - 8036d80: e012 b.n 8036da8 + 8036dc0: e012 b.n 8036de8 case RCC_LPTIM2CLKSOURCE_PLL3: /* PLL3 is used as clock source for LPTIM2*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE); - 8036d82: 687b ldr r3, [r7, #4] - 8036d84: 3324 adds r3, #36 ; 0x24 - 8036d86: 2102 movs r1, #2 - 8036d88: 4618 mov r0, r3 - 8036d8a: f001 fba3 bl 80384d4 - 8036d8e: 4603 mov r3, r0 - 8036d90: 75fb strb r3, [r7, #23] + 8036dc2: 687b ldr r3, [r7, #4] + 8036dc4: 3324 adds r3, #36 ; 0x24 + 8036dc6: 2102 movs r1, #2 + 8036dc8: 4618 mov r0, r3 + 8036dca: f001 fba3 bl 8038514 + 8036dce: 4603 mov r3, r0 + 8036dd0: 75fb strb r3, [r7, #23] /* LPTIM2 clock source configuration done later after clock selection check */ break; - 8036d92: e009 b.n 8036da8 + 8036dd2: e009 b.n 8036de8 /* HSI, HSE, or CSI oscillator is used as source of LPTIM2 clock */ /* LPTIM2 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036d94: 2301 movs r3, #1 - 8036d96: 75fb strb r3, [r7, #23] + 8036dd4: 2301 movs r3, #1 + 8036dd6: 75fb strb r3, [r7, #23] break; - 8036d98: e006 b.n 8036da8 + 8036dd8: e006 b.n 8036de8 break; - 8036d9a: bf00 nop - 8036d9c: e004 b.n 8036da8 + 8036dda: bf00 nop + 8036ddc: e004 b.n 8036de8 break; - 8036d9e: bf00 nop - 8036da0: e002 b.n 8036da8 + 8036dde: bf00 nop + 8036de0: e002 b.n 8036de8 break; - 8036da2: bf00 nop - 8036da4: e000 b.n 8036da8 + 8036de2: bf00 nop + 8036de4: e000 b.n 8036de8 break; - 8036da6: bf00 nop + 8036de6: bf00 nop } if(ret == HAL_OK) - 8036da8: 7dfb ldrb r3, [r7, #23] - 8036daa: 2b00 cmp r3, #0 - 8036dac: d10c bne.n 8036dc8 + 8036de8: 7dfb ldrb r3, [r7, #23] + 8036dea: 2b00 cmp r3, #0 + 8036dec: d10c bne.n 8036e08 { /* Set the source of LPTIM2 clock*/ __HAL_RCC_LPTIM2_CONFIG(PeriphClkInit->Lptim2ClockSelection); - 8036dae: 4b05 ldr r3, [pc, #20] ; (8036dc4 ) - 8036db0: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036db2: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00 - 8036db6: 687b ldr r3, [r7, #4] - 8036db8: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 - 8036dbc: 4901 ldr r1, [pc, #4] ; (8036dc4 ) - 8036dbe: 4313 orrs r3, r2 - 8036dc0: 658b str r3, [r1, #88] ; 0x58 - 8036dc2: e003 b.n 8036dcc - 8036dc4: 58024400 .word 0x58024400 + 8036dee: 4b05 ldr r3, [pc, #20] ; (8036e04 ) + 8036df0: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036df2: f423 52e0 bic.w r2, r3, #7168 ; 0x1c00 + 8036df6: 687b ldr r3, [r7, #4] + 8036df8: f8d3 3098 ldr.w r3, [r3, #152] ; 0x98 + 8036dfc: 4901 ldr r1, [pc, #4] ; (8036e04 ) + 8036dfe: 4313 orrs r3, r2 + 8036e00: 658b str r3, [r1, #88] ; 0x58 + 8036e02: e003 b.n 8036e0c + 8036e04: 58024400 .word 0x58024400 } else { /* set overall return value */ status = ret; - 8036dc8: 7dfb ldrb r3, [r7, #23] - 8036dca: 75bb strb r3, [r7, #22] + 8036e08: 7dfb ldrb r3, [r7, #23] + 8036e0a: 75bb strb r3, [r7, #22] } } /*---------------------------- LPTIM345 configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LPTIM345) == RCC_PERIPHCLK_LPTIM345) - 8036dcc: 687b ldr r3, [r7, #4] - 8036dce: 681b ldr r3, [r3, #0] - 8036dd0: f003 0380 and.w r3, r3, #128 ; 0x80 - 8036dd4: 2b00 cmp r3, #0 - 8036dd6: d04b beq.n 8036e70 + 8036e0c: 687b ldr r3, [r7, #4] + 8036e0e: 681b ldr r3, [r3, #0] + 8036e10: f003 0380 and.w r3, r3, #128 ; 0x80 + 8036e14: 2b00 cmp r3, #0 + 8036e16: d04b beq.n 8036eb0 { switch(PeriphClkInit->Lptim345ClockSelection) - 8036dd8: 687b ldr r3, [r7, #4] - 8036dda: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8036dde: f5b3 4f20 cmp.w r3, #40960 ; 0xa000 - 8036de2: d02e beq.n 8036e42 - 8036de4: f5b3 4f20 cmp.w r3, #40960 ; 0xa000 - 8036de8: d828 bhi.n 8036e3c - 8036dea: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 8036dee: d02a beq.n 8036e46 - 8036df0: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 8036df4: d822 bhi.n 8036e3c - 8036df6: f5b3 4fc0 cmp.w r3, #24576 ; 0x6000 - 8036dfa: d026 beq.n 8036e4a - 8036dfc: f5b3 4fc0 cmp.w r3, #24576 ; 0x6000 - 8036e00: d81c bhi.n 8036e3c - 8036e02: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8036e06: d010 beq.n 8036e2a - 8036e08: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8036e0c: d816 bhi.n 8036e3c - 8036e0e: 2b00 cmp r3, #0 - 8036e10: d01d beq.n 8036e4e - 8036e12: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8036e16: d111 bne.n 8036e3c + 8036e18: 687b ldr r3, [r7, #4] + 8036e1a: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8036e1e: f5b3 4f20 cmp.w r3, #40960 ; 0xa000 + 8036e22: d02e beq.n 8036e82 + 8036e24: f5b3 4f20 cmp.w r3, #40960 ; 0xa000 + 8036e28: d828 bhi.n 8036e7c + 8036e2a: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 8036e2e: d02a beq.n 8036e86 + 8036e30: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 8036e34: d822 bhi.n 8036e7c + 8036e36: f5b3 4fc0 cmp.w r3, #24576 ; 0x6000 + 8036e3a: d026 beq.n 8036e8a + 8036e3c: f5b3 4fc0 cmp.w r3, #24576 ; 0x6000 + 8036e40: d81c bhi.n 8036e7c + 8036e42: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8036e46: d010 beq.n 8036e6a + 8036e48: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8036e4c: d816 bhi.n 8036e7c + 8036e4e: 2b00 cmp r3, #0 + 8036e50: d01d beq.n 8036e8e + 8036e52: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 8036e56: d111 bne.n 8036e7c case RCC_LPTIM345CLKSOURCE_PCLK4: /* SRD/D3 PCLK1 (PCLK4) as clock source for LPTIM3/4/5 */ /* LPTIM3/4/5 clock source configuration done later after clock selection check */ break; case RCC_LPTIM345CLKSOURCE_PLL2: /* PLL2 is used as clock source for LPTIM3/4/5 */ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036e18: 687b ldr r3, [r7, #4] - 8036e1a: 3304 adds r3, #4 - 8036e1c: 2100 movs r1, #0 - 8036e1e: 4618 mov r0, r3 - 8036e20: f001 faa6 bl 8038370 - 8036e24: 4603 mov r3, r0 - 8036e26: 75fb strb r3, [r7, #23] + 8036e58: 687b ldr r3, [r7, #4] + 8036e5a: 3304 adds r3, #4 + 8036e5c: 2100 movs r1, #0 + 8036e5e: 4618 mov r0, r3 + 8036e60: f001 faa6 bl 80383b0 + 8036e64: 4603 mov r3, r0 + 8036e66: 75fb strb r3, [r7, #23] /* LPTIM3/4/5 clock source configuration done later after clock selection check */ break; - 8036e28: e012 b.n 8036e50 + 8036e68: e012 b.n 8036e90 case RCC_LPTIM345CLKSOURCE_PLL3: /* PLL3 is used as clock source for LPTIM3/4/5 */ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE); - 8036e2a: 687b ldr r3, [r7, #4] - 8036e2c: 3324 adds r3, #36 ; 0x24 - 8036e2e: 2102 movs r1, #2 - 8036e30: 4618 mov r0, r3 - 8036e32: f001 fb4f bl 80384d4 - 8036e36: 4603 mov r3, r0 - 8036e38: 75fb strb r3, [r7, #23] + 8036e6a: 687b ldr r3, [r7, #4] + 8036e6c: 3324 adds r3, #36 ; 0x24 + 8036e6e: 2102 movs r1, #2 + 8036e70: 4618 mov r0, r3 + 8036e72: f001 fb4f bl 8038514 + 8036e76: 4603 mov r3, r0 + 8036e78: 75fb strb r3, [r7, #23] /* LPTIM3/4/5 clock source configuration done later after clock selection check */ break; - 8036e3a: e009 b.n 8036e50 + 8036e7a: e009 b.n 8036e90 /* HSI, HSE, or CSI oscillator is used as source of LPTIM3/4/5 clock */ /* LPTIM3/4/5 clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036e3c: 2301 movs r3, #1 - 8036e3e: 75fb strb r3, [r7, #23] + 8036e7c: 2301 movs r3, #1 + 8036e7e: 75fb strb r3, [r7, #23] break; - 8036e40: e006 b.n 8036e50 + 8036e80: e006 b.n 8036e90 break; - 8036e42: bf00 nop - 8036e44: e004 b.n 8036e50 + 8036e82: bf00 nop + 8036e84: e004 b.n 8036e90 break; - 8036e46: bf00 nop - 8036e48: e002 b.n 8036e50 + 8036e86: bf00 nop + 8036e88: e002 b.n 8036e90 break; - 8036e4a: bf00 nop - 8036e4c: e000 b.n 8036e50 + 8036e8a: bf00 nop + 8036e8c: e000 b.n 8036e90 break; - 8036e4e: bf00 nop + 8036e8e: bf00 nop } if(ret == HAL_OK) - 8036e50: 7dfb ldrb r3, [r7, #23] - 8036e52: 2b00 cmp r3, #0 - 8036e54: d10a bne.n 8036e6c + 8036e90: 7dfb ldrb r3, [r7, #23] + 8036e92: 2b00 cmp r3, #0 + 8036e94: d10a bne.n 8036eac { /* Set the source of LPTIM3/4/5 clock */ __HAL_RCC_LPTIM345_CONFIG(PeriphClkInit->Lptim345ClockSelection); - 8036e56: 4b9d ldr r3, [pc, #628] ; (80370cc ) - 8036e58: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036e5a: f423 4260 bic.w r2, r3, #57344 ; 0xe000 - 8036e5e: 687b ldr r3, [r7, #4] - 8036e60: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c - 8036e64: 4999 ldr r1, [pc, #612] ; (80370cc ) - 8036e66: 4313 orrs r3, r2 - 8036e68: 658b str r3, [r1, #88] ; 0x58 - 8036e6a: e001 b.n 8036e70 + 8036e96: 4b9d ldr r3, [pc, #628] ; (803710c ) + 8036e98: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036e9a: f423 4260 bic.w r2, r3, #57344 ; 0xe000 + 8036e9e: 687b ldr r3, [r7, #4] + 8036ea0: f8d3 309c ldr.w r3, [r3, #156] ; 0x9c + 8036ea4: 4999 ldr r1, [pc, #612] ; (803710c ) + 8036ea6: 4313 orrs r3, r2 + 8036ea8: 658b str r3, [r1, #88] ; 0x58 + 8036eaa: e001 b.n 8036eb0 } else { /* set overall return value */ status = ret; - 8036e6c: 7dfb ldrb r3, [r7, #23] - 8036e6e: 75bb strb r3, [r7, #22] + 8036eac: 7dfb ldrb r3, [r7, #23] + 8036eae: 75bb strb r3, [r7, #22] __HAL_RCC_I2C1235_CONFIG(PeriphClkInit->I2c1235ClockSelection); } #else if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C123) == RCC_PERIPHCLK_I2C123) - 8036e70: 687b ldr r3, [r7, #4] - 8036e72: 681b ldr r3, [r3, #0] - 8036e74: f003 0308 and.w r3, r3, #8 - 8036e78: 2b00 cmp r3, #0 - 8036e7a: d01a beq.n 8036eb2 + 8036eb0: 687b ldr r3, [r7, #4] + 8036eb2: 681b ldr r3, [r3, #0] + 8036eb4: f003 0308 and.w r3, r3, #8 + 8036eb8: 2b00 cmp r3, #0 + 8036eba: d01a beq.n 8036ef2 { /* Check the parameters */ assert_param(IS_RCC_I2C123CLKSOURCE(PeriphClkInit->I2c123ClockSelection)); if ((PeriphClkInit->I2c123ClockSelection )== RCC_I2C123CLKSOURCE_PLL3 ) - 8036e7c: 687b ldr r3, [r7, #4] - 8036e7e: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 8036e82: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8036e86: d10a bne.n 8036e9e + 8036ebc: 687b ldr r3, [r7, #4] + 8036ebe: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 8036ec2: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8036ec6: d10a bne.n 8036ede { if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!= HAL_OK) - 8036e88: 687b ldr r3, [r7, #4] - 8036e8a: 3324 adds r3, #36 ; 0x24 - 8036e8c: 2102 movs r1, #2 - 8036e8e: 4618 mov r0, r3 - 8036e90: f001 fb20 bl 80384d4 - 8036e94: 4603 mov r3, r0 - 8036e96: 2b00 cmp r3, #0 - 8036e98: d001 beq.n 8036e9e + 8036ec8: 687b ldr r3, [r7, #4] + 8036eca: 3324 adds r3, #36 ; 0x24 + 8036ecc: 2102 movs r1, #2 + 8036ece: 4618 mov r0, r3 + 8036ed0: f001 fb20 bl 8038514 + 8036ed4: 4603 mov r3, r0 + 8036ed6: 2b00 cmp r3, #0 + 8036ed8: d001 beq.n 8036ede { status = HAL_ERROR; - 8036e9a: 2301 movs r3, #1 - 8036e9c: 75bb strb r3, [r7, #22] + 8036eda: 2301 movs r3, #1 + 8036edc: 75bb strb r3, [r7, #22] } } __HAL_RCC_I2C123_CONFIG(PeriphClkInit->I2c123ClockSelection); - 8036e9e: 4b8b ldr r3, [pc, #556] ; (80370cc ) - 8036ea0: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036ea2: f423 5240 bic.w r2, r3, #12288 ; 0x3000 - 8036ea6: 687b ldr r3, [r7, #4] - 8036ea8: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 8036eac: 4987 ldr r1, [pc, #540] ; (80370cc ) - 8036eae: 4313 orrs r3, r2 - 8036eb0: 654b str r3, [r1, #84] ; 0x54 + 8036ede: 4b8b ldr r3, [pc, #556] ; (803710c ) + 8036ee0: 6d5b ldr r3, [r3, #84] ; 0x54 + 8036ee2: f423 5240 bic.w r2, r3, #12288 ; 0x3000 + 8036ee6: 687b ldr r3, [r7, #4] + 8036ee8: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 8036eec: 4987 ldr r1, [pc, #540] ; (803710c ) + 8036eee: 4313 orrs r3, r2 + 8036ef0: 654b str r3, [r1, #84] ; 0x54 } #endif /* I2C5 */ /*------------------------------ I2C4 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C4) == RCC_PERIPHCLK_I2C4) - 8036eb2: 687b ldr r3, [r7, #4] - 8036eb4: 681b ldr r3, [r3, #0] - 8036eb6: f003 0310 and.w r3, r3, #16 - 8036eba: 2b00 cmp r3, #0 - 8036ebc: d01a beq.n 8036ef4 + 8036ef2: 687b ldr r3, [r7, #4] + 8036ef4: 681b ldr r3, [r3, #0] + 8036ef6: f003 0310 and.w r3, r3, #16 + 8036efa: 2b00 cmp r3, #0 + 8036efc: d01a beq.n 8036f34 { /* Check the parameters */ assert_param(IS_RCC_I2C4CLKSOURCE(PeriphClkInit->I2c4ClockSelection)); if ((PeriphClkInit->I2c4ClockSelection) == RCC_I2C4CLKSOURCE_PLL3 ) - 8036ebe: 687b ldr r3, [r7, #4] - 8036ec0: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8036ec4: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8036ec8: d10a bne.n 8036ee0 + 8036efe: 687b ldr r3, [r7, #4] + 8036f00: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8036f04: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8036f08: d10a bne.n 8036f20 { if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!= HAL_OK) - 8036eca: 687b ldr r3, [r7, #4] - 8036ecc: 3324 adds r3, #36 ; 0x24 - 8036ece: 2102 movs r1, #2 - 8036ed0: 4618 mov r0, r3 - 8036ed2: f001 faff bl 80384d4 - 8036ed6: 4603 mov r3, r0 - 8036ed8: 2b00 cmp r3, #0 - 8036eda: d001 beq.n 8036ee0 + 8036f0a: 687b ldr r3, [r7, #4] + 8036f0c: 3324 adds r3, #36 ; 0x24 + 8036f0e: 2102 movs r1, #2 + 8036f10: 4618 mov r0, r3 + 8036f12: f001 faff bl 8038514 + 8036f16: 4603 mov r3, r0 + 8036f18: 2b00 cmp r3, #0 + 8036f1a: d001 beq.n 8036f20 { status = HAL_ERROR; - 8036edc: 2301 movs r3, #1 - 8036ede: 75bb strb r3, [r7, #22] + 8036f1c: 2301 movs r3, #1 + 8036f1e: 75bb strb r3, [r7, #22] } } __HAL_RCC_I2C4_CONFIG(PeriphClkInit->I2c4ClockSelection); - 8036ee0: 4b7a ldr r3, [pc, #488] ; (80370cc ) - 8036ee2: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036ee4: f423 7240 bic.w r2, r3, #768 ; 0x300 - 8036ee8: 687b ldr r3, [r7, #4] - 8036eea: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 - 8036eee: 4977 ldr r1, [pc, #476] ; (80370cc ) - 8036ef0: 4313 orrs r3, r2 - 8036ef2: 658b str r3, [r1, #88] ; 0x58 + 8036f20: 4b7a ldr r3, [pc, #488] ; (803710c ) + 8036f22: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036f24: f423 7240 bic.w r2, r3, #768 ; 0x300 + 8036f28: 687b ldr r3, [r7, #4] + 8036f2a: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8036f2e: 4977 ldr r1, [pc, #476] ; (803710c ) + 8036f30: 4313 orrs r3, r2 + 8036f32: 658b str r3, [r1, #88] ; 0x58 } /*---------------------------- ADC configuration -------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC) == RCC_PERIPHCLK_ADC) - 8036ef4: 687b ldr r3, [r7, #4] - 8036ef6: 681b ldr r3, [r3, #0] - 8036ef8: f403 2300 and.w r3, r3, #524288 ; 0x80000 - 8036efc: 2b00 cmp r3, #0 - 8036efe: d034 beq.n 8036f6a + 8036f34: 687b ldr r3, [r7, #4] + 8036f36: 681b ldr r3, [r3, #0] + 8036f38: f403 2300 and.w r3, r3, #524288 ; 0x80000 + 8036f3c: 2b00 cmp r3, #0 + 8036f3e: d034 beq.n 8036faa { switch(PeriphClkInit->AdcClockSelection) - 8036f00: 687b ldr r3, [r7, #4] - 8036f02: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 8036f06: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8036f0a: d01d beq.n 8036f48 - 8036f0c: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8036f10: d817 bhi.n 8036f42 - 8036f12: 2b00 cmp r3, #0 - 8036f14: d003 beq.n 8036f1e - 8036f16: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8036f1a: d009 beq.n 8036f30 - 8036f1c: e011 b.n 8036f42 + 8036f40: 687b ldr r3, [r7, #4] + 8036f42: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 8036f46: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8036f4a: d01d beq.n 8036f88 + 8036f4c: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8036f50: d817 bhi.n 8036f82 + 8036f52: 2b00 cmp r3, #0 + 8036f54: d003 beq.n 8036f5e + 8036f56: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8036f5a: d009 beq.n 8036f70 + 8036f5c: e011 b.n 8036f82 { case RCC_ADCCLKSOURCE_PLL2: /* PLL2 is used as clock source for ADC*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_P_UPDATE); - 8036f1e: 687b ldr r3, [r7, #4] - 8036f20: 3304 adds r3, #4 - 8036f22: 2100 movs r1, #0 - 8036f24: 4618 mov r0, r3 - 8036f26: f001 fa23 bl 8038370 - 8036f2a: 4603 mov r3, r0 - 8036f2c: 75fb strb r3, [r7, #23] + 8036f5e: 687b ldr r3, [r7, #4] + 8036f60: 3304 adds r3, #4 + 8036f62: 2100 movs r1, #0 + 8036f64: 4618 mov r0, r3 + 8036f66: f001 fa23 bl 80383b0 + 8036f6a: 4603 mov r3, r0 + 8036f6c: 75fb strb r3, [r7, #23] /* ADC clock source configuration done later after clock selection check */ break; - 8036f2e: e00c b.n 8036f4a + 8036f6e: e00c b.n 8036f8a case RCC_ADCCLKSOURCE_PLL3: /* PLL3 is used as clock source for ADC*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE); - 8036f30: 687b ldr r3, [r7, #4] - 8036f32: 3324 adds r3, #36 ; 0x24 - 8036f34: 2102 movs r1, #2 - 8036f36: 4618 mov r0, r3 - 8036f38: f001 facc bl 80384d4 - 8036f3c: 4603 mov r3, r0 - 8036f3e: 75fb strb r3, [r7, #23] + 8036f70: 687b ldr r3, [r7, #4] + 8036f72: 3324 adds r3, #36 ; 0x24 + 8036f74: 2102 movs r1, #2 + 8036f76: 4618 mov r0, r3 + 8036f78: f001 facc bl 8038514 + 8036f7c: 4603 mov r3, r0 + 8036f7e: 75fb strb r3, [r7, #23] /* ADC clock source configuration done later after clock selection check */ break; - 8036f40: e003 b.n 8036f4a + 8036f80: e003 b.n 8036f8a /* HSI, HSE, or CSI oscillator is used as source of ADC clock */ /* ADC clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036f42: 2301 movs r3, #1 - 8036f44: 75fb strb r3, [r7, #23] + 8036f82: 2301 movs r3, #1 + 8036f84: 75fb strb r3, [r7, #23] break; - 8036f46: e000 b.n 8036f4a + 8036f86: e000 b.n 8036f8a break; - 8036f48: bf00 nop + 8036f88: bf00 nop } if(ret == HAL_OK) - 8036f4a: 7dfb ldrb r3, [r7, #23] - 8036f4c: 2b00 cmp r3, #0 - 8036f4e: d10a bne.n 8036f66 + 8036f8a: 7dfb ldrb r3, [r7, #23] + 8036f8c: 2b00 cmp r3, #0 + 8036f8e: d10a bne.n 8036fa6 { /* Set the source of ADC clock*/ __HAL_RCC_ADC_CONFIG(PeriphClkInit->AdcClockSelection); - 8036f50: 4b5e ldr r3, [pc, #376] ; (80370cc ) - 8036f52: 6d9b ldr r3, [r3, #88] ; 0x58 - 8036f54: f423 3240 bic.w r2, r3, #196608 ; 0x30000 - 8036f58: 687b ldr r3, [r7, #4] - 8036f5a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 - 8036f5e: 495b ldr r1, [pc, #364] ; (80370cc ) - 8036f60: 4313 orrs r3, r2 - 8036f62: 658b str r3, [r1, #88] ; 0x58 - 8036f64: e001 b.n 8036f6a + 8036f90: 4b5e ldr r3, [pc, #376] ; (803710c ) + 8036f92: 6d9b ldr r3, [r3, #88] ; 0x58 + 8036f94: f423 3240 bic.w r2, r3, #196608 ; 0x30000 + 8036f98: 687b ldr r3, [r7, #4] + 8036f9a: f8d3 30a0 ldr.w r3, [r3, #160] ; 0xa0 + 8036f9e: 495b ldr r1, [pc, #364] ; (803710c ) + 8036fa0: 4313 orrs r3, r2 + 8036fa2: 658b str r3, [r1, #88] ; 0x58 + 8036fa4: e001 b.n 8036faa } else { /* set overall return value */ status = ret; - 8036f66: 7dfb ldrb r3, [r7, #23] - 8036f68: 75bb strb r3, [r7, #22] + 8036fa6: 7dfb ldrb r3, [r7, #23] + 8036fa8: 75bb strb r3, [r7, #22] } } /*------------------------------ USB Configuration -------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB) - 8036f6a: 687b ldr r3, [r7, #4] - 8036f6c: 681b ldr r3, [r3, #0] - 8036f6e: f403 2380 and.w r3, r3, #262144 ; 0x40000 - 8036f72: 2b00 cmp r3, #0 - 8036f74: d033 beq.n 8036fde + 8036faa: 687b ldr r3, [r7, #4] + 8036fac: 681b ldr r3, [r3, #0] + 8036fae: f403 2380 and.w r3, r3, #262144 ; 0x40000 + 8036fb2: 2b00 cmp r3, #0 + 8036fb4: d033 beq.n 803701e { switch(PeriphClkInit->UsbClockSelection) - 8036f76: 687b ldr r3, [r7, #4] - 8036f78: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8036f7c: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 - 8036f80: d01c beq.n 8036fbc - 8036f82: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 - 8036f86: d816 bhi.n 8036fb6 - 8036f88: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 8036f8c: d003 beq.n 8036f96 - 8036f8e: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8036f92: d007 beq.n 8036fa4 - 8036f94: e00f b.n 8036fb6 + 8036fb6: 687b ldr r3, [r7, #4] + 8036fb8: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8036fbc: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 + 8036fc0: d01c beq.n 8036ffc + 8036fc2: f5b3 1f40 cmp.w r3, #3145728 ; 0x300000 + 8036fc6: d816 bhi.n 8036ff6 + 8036fc8: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 8036fcc: d003 beq.n 8036fd6 + 8036fce: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 8036fd2: d007 beq.n 8036fe4 + 8036fd4: e00f b.n 8036ff6 { case RCC_USBCLKSOURCE_PLL: /* PLL is used as clock source for USB*/ /* Enable USB Clock output generated form System USB . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036f96: 4b4d ldr r3, [pc, #308] ; (80370cc ) - 8036f98: 6adb ldr r3, [r3, #44] ; 0x2c - 8036f9a: 4a4c ldr r2, [pc, #304] ; (80370cc ) - 8036f9c: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8036fa0: 62d3 str r3, [r2, #44] ; 0x2c + 8036fd6: 4b4d ldr r3, [pc, #308] ; (803710c ) + 8036fd8: 6adb ldr r3, [r3, #44] ; 0x2c + 8036fda: 4a4c ldr r2, [pc, #304] ; (803710c ) + 8036fdc: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8036fe0: 62d3 str r3, [r2, #44] ; 0x2c /* USB clock source configuration done later after clock selection check */ break; - 8036fa2: e00c b.n 8036fbe + 8036fe2: e00c b.n 8036ffe case RCC_USBCLKSOURCE_PLL3: /* PLL3 is used as clock source for USB*/ ret = RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_Q_UPDATE); - 8036fa4: 687b ldr r3, [r7, #4] - 8036fa6: 3324 adds r3, #36 ; 0x24 - 8036fa8: 2101 movs r1, #1 - 8036faa: 4618 mov r0, r3 - 8036fac: f001 fa92 bl 80384d4 - 8036fb0: 4603 mov r3, r0 - 8036fb2: 75fb strb r3, [r7, #23] + 8036fe4: 687b ldr r3, [r7, #4] + 8036fe6: 3324 adds r3, #36 ; 0x24 + 8036fe8: 2101 movs r1, #1 + 8036fea: 4618 mov r0, r3 + 8036fec: f001 fa92 bl 8038514 + 8036ff0: 4603 mov r3, r0 + 8036ff2: 75fb strb r3, [r7, #23] /* USB clock source configuration done later after clock selection check */ break; - 8036fb4: e003 b.n 8036fbe + 8036ff4: e003 b.n 8036ffe /* HSI48 oscillator is used as source of USB clock */ /* USB clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 8036fb6: 2301 movs r3, #1 - 8036fb8: 75fb strb r3, [r7, #23] + 8036ff6: 2301 movs r3, #1 + 8036ff8: 75fb strb r3, [r7, #23] break; - 8036fba: e000 b.n 8036fbe + 8036ffa: e000 b.n 8036ffe break; - 8036fbc: bf00 nop + 8036ffc: bf00 nop } if(ret == HAL_OK) - 8036fbe: 7dfb ldrb r3, [r7, #23] - 8036fc0: 2b00 cmp r3, #0 - 8036fc2: d10a bne.n 8036fda + 8036ffe: 7dfb ldrb r3, [r7, #23] + 8037000: 2b00 cmp r3, #0 + 8037002: d10a bne.n 803701a { /* Set the source of USB clock*/ __HAL_RCC_USB_CONFIG(PeriphClkInit->UsbClockSelection); - 8036fc4: 4b41 ldr r3, [pc, #260] ; (80370cc ) - 8036fc6: 6d5b ldr r3, [r3, #84] ; 0x54 - 8036fc8: f423 1240 bic.w r2, r3, #3145728 ; 0x300000 - 8036fcc: 687b ldr r3, [r7, #4] - 8036fce: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8036fd2: 493e ldr r1, [pc, #248] ; (80370cc ) - 8036fd4: 4313 orrs r3, r2 - 8036fd6: 654b str r3, [r1, #84] ; 0x54 - 8036fd8: e001 b.n 8036fde + 8037004: 4b41 ldr r3, [pc, #260] ; (803710c ) + 8037006: 6d5b ldr r3, [r3, #84] ; 0x54 + 8037008: f423 1240 bic.w r2, r3, #3145728 ; 0x300000 + 803700c: 687b ldr r3, [r7, #4] + 803700e: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8037012: 493e ldr r1, [pc, #248] ; (803710c ) + 8037014: 4313 orrs r3, r2 + 8037016: 654b str r3, [r1, #84] ; 0x54 + 8037018: e001 b.n 803701e } else { /* set overall return value */ status = ret; - 8036fda: 7dfb ldrb r3, [r7, #23] - 8036fdc: 75bb strb r3, [r7, #22] + 803701a: 7dfb ldrb r3, [r7, #23] + 803701c: 75bb strb r3, [r7, #22] } } /*------------------------------------- SDMMC Configuration ------------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDMMC) == RCC_PERIPHCLK_SDMMC) - 8036fde: 687b ldr r3, [r7, #4] - 8036fe0: 681b ldr r3, [r3, #0] - 8036fe2: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 8036fe6: 2b00 cmp r3, #0 - 8036fe8: d029 beq.n 803703e + 803701e: 687b ldr r3, [r7, #4] + 8037020: 681b ldr r3, [r3, #0] + 8037022: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 8037026: 2b00 cmp r3, #0 + 8037028: d029 beq.n 803707e { /* Check the parameters */ assert_param(IS_RCC_SDMMC(PeriphClkInit->SdmmcClockSelection)); switch(PeriphClkInit->SdmmcClockSelection) - 8036fea: 687b ldr r3, [r7, #4] - 8036fec: 6cdb ldr r3, [r3, #76] ; 0x4c - 8036fee: 2b00 cmp r3, #0 - 8036ff0: d003 beq.n 8036ffa - 8036ff2: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8036ff6: d007 beq.n 8037008 - 8036ff8: e00f b.n 803701a + 803702a: 687b ldr r3, [r7, #4] + 803702c: 6cdb ldr r3, [r3, #76] ; 0x4c + 803702e: 2b00 cmp r3, #0 + 8037030: d003 beq.n 803703a + 8037032: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8037036: d007 beq.n 8037048 + 8037038: e00f b.n 803705a { case RCC_SDMMCCLKSOURCE_PLL: /* PLL is used as clock source for SDMMC*/ /* Enable SDMMC Clock output generated form System PLL . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8036ffa: 4b34 ldr r3, [pc, #208] ; (80370cc ) - 8036ffc: 6adb ldr r3, [r3, #44] ; 0x2c - 8036ffe: 4a33 ldr r2, [pc, #204] ; (80370cc ) - 8037000: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 8037004: 62d3 str r3, [r2, #44] ; 0x2c + 803703a: 4b34 ldr r3, [pc, #208] ; (803710c ) + 803703c: 6adb ldr r3, [r3, #44] ; 0x2c + 803703e: 4a33 ldr r2, [pc, #204] ; (803710c ) + 8037040: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 8037044: 62d3 str r3, [r2, #44] ; 0x2c /* SDMMC clock source configuration done later after clock selection check */ break; - 8037006: e00b b.n 8037020 + 8037046: e00b b.n 8037060 case RCC_SDMMCCLKSOURCE_PLL2: /* PLL2 is used as clock source for SDMMC*/ ret = RCCEx_PLL2_Config(&(PeriphClkInit->PLL2),DIVIDER_R_UPDATE); - 8037008: 687b ldr r3, [r7, #4] - 803700a: 3304 adds r3, #4 - 803700c: 2102 movs r1, #2 - 803700e: 4618 mov r0, r3 - 8037010: f001 f9ae bl 8038370 - 8037014: 4603 mov r3, r0 - 8037016: 75fb strb r3, [r7, #23] + 8037048: 687b ldr r3, [r7, #4] + 803704a: 3304 adds r3, #4 + 803704c: 2102 movs r1, #2 + 803704e: 4618 mov r0, r3 + 8037050: f001 f9ae bl 80383b0 + 8037054: 4603 mov r3, r0 + 8037056: 75fb strb r3, [r7, #23] /* SDMMC clock source configuration done later after clock selection check */ break; - 8037018: e002 b.n 8037020 + 8037058: e002 b.n 8037060 default: ret = HAL_ERROR; - 803701a: 2301 movs r3, #1 - 803701c: 75fb strb r3, [r7, #23] + 803705a: 2301 movs r3, #1 + 803705c: 75fb strb r3, [r7, #23] break; - 803701e: bf00 nop + 803705e: bf00 nop } if(ret == HAL_OK) - 8037020: 7dfb ldrb r3, [r7, #23] - 8037022: 2b00 cmp r3, #0 - 8037024: d109 bne.n 803703a + 8037060: 7dfb ldrb r3, [r7, #23] + 8037062: 2b00 cmp r3, #0 + 8037064: d109 bne.n 803707a { /* Set the source of SDMMC clock*/ __HAL_RCC_SDMMC_CONFIG(PeriphClkInit->SdmmcClockSelection); - 8037026: 4b29 ldr r3, [pc, #164] ; (80370cc ) - 8037028: 6cdb ldr r3, [r3, #76] ; 0x4c - 803702a: f423 3280 bic.w r2, r3, #65536 ; 0x10000 - 803702e: 687b ldr r3, [r7, #4] - 8037030: 6cdb ldr r3, [r3, #76] ; 0x4c - 8037032: 4926 ldr r1, [pc, #152] ; (80370cc ) - 8037034: 4313 orrs r3, r2 - 8037036: 64cb str r3, [r1, #76] ; 0x4c - 8037038: e001 b.n 803703e + 8037066: 4b29 ldr r3, [pc, #164] ; (803710c ) + 8037068: 6cdb ldr r3, [r3, #76] ; 0x4c + 803706a: f423 3280 bic.w r2, r3, #65536 ; 0x10000 + 803706e: 687b ldr r3, [r7, #4] + 8037070: 6cdb ldr r3, [r3, #76] ; 0x4c + 8037072: 4926 ldr r1, [pc, #152] ; (803710c ) + 8037074: 4313 orrs r3, r2 + 8037076: 64cb str r3, [r1, #76] ; 0x4c + 8037078: e001 b.n 803707e } else { /* set overall return value */ status = ret; - 803703a: 7dfb ldrb r3, [r7, #23] - 803703c: 75bb strb r3, [r7, #22] + 803707a: 7dfb ldrb r3, [r7, #23] + 803707c: 75bb strb r3, [r7, #22] } } #if defined(LTDC) /*-------------------------------------- LTDC Configuration -----------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_LTDC) == RCC_PERIPHCLK_LTDC) - 803703e: 687b ldr r3, [r7, #4] - 8037040: 681b ldr r3, [r3, #0] - 8037042: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8037046: 2b00 cmp r3, #0 - 8037048: d00a beq.n 8037060 + 803707e: 687b ldr r3, [r7, #4] + 8037080: 681b ldr r3, [r3, #0] + 8037082: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 8037086: 2b00 cmp r3, #0 + 8037088: d00a beq.n 80370a0 { if(RCCEx_PLL3_Config(&(PeriphClkInit->PLL3),DIVIDER_R_UPDATE)!=HAL_OK) - 803704a: 687b ldr r3, [r7, #4] - 803704c: 3324 adds r3, #36 ; 0x24 - 803704e: 2102 movs r1, #2 - 8037050: 4618 mov r0, r3 - 8037052: f001 fa3f bl 80384d4 - 8037056: 4603 mov r3, r0 - 8037058: 2b00 cmp r3, #0 - 803705a: d001 beq.n 8037060 + 803708a: 687b ldr r3, [r7, #4] + 803708c: 3324 adds r3, #36 ; 0x24 + 803708e: 2102 movs r1, #2 + 8037090: 4618 mov r0, r3 + 8037092: f001 fa3f bl 8038514 + 8037096: 4603 mov r3, r0 + 8037098: 2b00 cmp r3, #0 + 803709a: d001 beq.n 80370a0 { status=HAL_ERROR; - 803705c: 2301 movs r3, #1 - 803705e: 75bb strb r3, [r7, #22] + 803709c: 2301 movs r3, #1 + 803709e: 75bb strb r3, [r7, #22] } } #endif /* LTDC */ /*------------------------------ RNG Configuration -------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RNG) == RCC_PERIPHCLK_RNG) - 8037060: 687b ldr r3, [r7, #4] - 8037062: 681b ldr r3, [r3, #0] - 8037064: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8037068: 2b00 cmp r3, #0 - 803706a: d033 beq.n 80370d4 + 80370a0: 687b ldr r3, [r7, #4] + 80370a2: 681b ldr r3, [r3, #0] + 80370a4: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80370a8: 2b00 cmp r3, #0 + 80370aa: d033 beq.n 8037114 { switch(PeriphClkInit->RngClockSelection) - 803706c: 687b ldr r3, [r7, #4] - 803706e: 6fdb ldr r3, [r3, #124] ; 0x7c - 8037070: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 8037074: d017 beq.n 80370a6 - 8037076: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 803707a: d811 bhi.n 80370a0 - 803707c: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 8037080: d013 beq.n 80370aa - 8037082: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 8037086: d80b bhi.n 80370a0 - 8037088: 2b00 cmp r3, #0 - 803708a: d010 beq.n 80370ae - 803708c: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8037090: d106 bne.n 80370a0 + 80370ac: 687b ldr r3, [r7, #4] + 80370ae: 6fdb ldr r3, [r3, #124] ; 0x7c + 80370b0: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 80370b4: d017 beq.n 80370e6 + 80370b6: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 80370ba: d811 bhi.n 80370e0 + 80370bc: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 80370c0: d013 beq.n 80370ea + 80370c2: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 80370c6: d80b bhi.n 80370e0 + 80370c8: 2b00 cmp r3, #0 + 80370ca: d010 beq.n 80370ee + 80370cc: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80370d0: d106 bne.n 80370e0 { case RCC_RNGCLKSOURCE_PLL: /* PLL is used as clock source for RNG*/ /* Enable RNG Clock output generated form System RNG . */ __HAL_RCC_PLLCLKOUT_ENABLE(RCC_PLL1_DIVQ); - 8037092: 4b0e ldr r3, [pc, #56] ; (80370cc ) - 8037094: 6adb ldr r3, [r3, #44] ; 0x2c - 8037096: 4a0d ldr r2, [pc, #52] ; (80370cc ) - 8037098: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 803709c: 62d3 str r3, [r2, #44] ; 0x2c + 80370d2: 4b0e ldr r3, [pc, #56] ; (803710c ) + 80370d4: 6adb ldr r3, [r3, #44] ; 0x2c + 80370d6: 4a0d ldr r2, [pc, #52] ; (803710c ) + 80370d8: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 80370dc: 62d3 str r3, [r2, #44] ; 0x2c /* RNG clock source configuration done later after clock selection check */ break; - 803709e: e007 b.n 80370b0 + 80370de: e007 b.n 80370f0 /* HSI48 oscillator is used as source of RNG clock */ /* RNG clock source configuration done later after clock selection check */ break; default: ret = HAL_ERROR; - 80370a0: 2301 movs r3, #1 - 80370a2: 75fb strb r3, [r7, #23] + 80370e0: 2301 movs r3, #1 + 80370e2: 75fb strb r3, [r7, #23] break; - 80370a4: e004 b.n 80370b0 + 80370e4: e004 b.n 80370f0 break; - 80370a6: bf00 nop - 80370a8: e002 b.n 80370b0 + 80370e6: bf00 nop + 80370e8: e002 b.n 80370f0 break; - 80370aa: bf00 nop - 80370ac: e000 b.n 80370b0 + 80370ea: bf00 nop + 80370ec: e000 b.n 80370f0 break; - 80370ae: bf00 nop + 80370ee: bf00 nop } if(ret == HAL_OK) - 80370b0: 7dfb ldrb r3, [r7, #23] - 80370b2: 2b00 cmp r3, #0 - 80370b4: d10c bne.n 80370d0 + 80370f0: 7dfb ldrb r3, [r7, #23] + 80370f2: 2b00 cmp r3, #0 + 80370f4: d10c bne.n 8037110 { /* Set the source of RNG clock*/ __HAL_RCC_RNG_CONFIG(PeriphClkInit->RngClockSelection); - 80370b6: 4b05 ldr r3, [pc, #20] ; (80370cc ) - 80370b8: 6d5b ldr r3, [r3, #84] ; 0x54 - 80370ba: f423 7240 bic.w r2, r3, #768 ; 0x300 - 80370be: 687b ldr r3, [r7, #4] - 80370c0: 6fdb ldr r3, [r3, #124] ; 0x7c - 80370c2: 4902 ldr r1, [pc, #8] ; (80370cc ) - 80370c4: 4313 orrs r3, r2 - 80370c6: 654b str r3, [r1, #84] ; 0x54 - 80370c8: e004 b.n 80370d4 - 80370ca: bf00 nop - 80370cc: 58024400 .word 0x58024400 + 80370f6: 4b05 ldr r3, [pc, #20] ; (803710c ) + 80370f8: 6d5b ldr r3, [r3, #84] ; 0x54 + 80370fa: f423 7240 bic.w r2, r3, #768 ; 0x300 + 80370fe: 687b ldr r3, [r7, #4] + 8037100: 6fdb ldr r3, [r3, #124] ; 0x7c + 8037102: 4902 ldr r1, [pc, #8] ; (803710c ) + 8037104: 4313 orrs r3, r2 + 8037106: 654b str r3, [r1, #84] ; 0x54 + 8037108: e004 b.n 8037114 + 803710a: bf00 nop + 803710c: 58024400 .word 0x58024400 } else { /* set overall return value */ status = ret; - 80370d0: 7dfb ldrb r3, [r7, #23] - 80370d2: 75bb strb r3, [r7, #22] + 8037110: 7dfb ldrb r3, [r7, #23] + 8037112: 75bb strb r3, [r7, #22] } } /*------------------------------ SWPMI1 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SWPMI1) == RCC_PERIPHCLK_SWPMI1) - 80370d4: 687b ldr r3, [r7, #4] - 80370d6: 681b ldr r3, [r3, #0] - 80370d8: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 80370dc: 2b00 cmp r3, #0 - 80370de: d008 beq.n 80370f2 + 8037114: 687b ldr r3, [r7, #4] + 8037116: 681b ldr r3, [r3, #0] + 8037118: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 803711c: 2b00 cmp r3, #0 + 803711e: d008 beq.n 8037132 { /* Check the parameters */ assert_param(IS_RCC_SWPMI1CLKSOURCE(PeriphClkInit->Swpmi1ClockSelection)); /* Configure the SWPMI1 interface clock source */ __HAL_RCC_SWPMI1_CONFIG(PeriphClkInit->Swpmi1ClockSelection); - 80370e0: 4b31 ldr r3, [pc, #196] ; (80371a8 ) - 80370e2: 6d1b ldr r3, [r3, #80] ; 0x50 - 80370e4: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 - 80370e8: 687b ldr r3, [r7, #4] - 80370ea: 6f1b ldr r3, [r3, #112] ; 0x70 - 80370ec: 492e ldr r1, [pc, #184] ; (80371a8 ) - 80370ee: 4313 orrs r3, r2 - 80370f0: 650b str r3, [r1, #80] ; 0x50 + 8037120: 4b31 ldr r3, [pc, #196] ; (80371e8 ) + 8037122: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037124: f023 4200 bic.w r2, r3, #2147483648 ; 0x80000000 + 8037128: 687b ldr r3, [r7, #4] + 803712a: 6f1b ldr r3, [r3, #112] ; 0x70 + 803712c: 492e ldr r1, [pc, #184] ; (80371e8 ) + 803712e: 4313 orrs r3, r2 + 8037130: 650b str r3, [r1, #80] ; 0x50 } #if defined(HRTIM1) /*------------------------------ HRTIM1 clock Configuration ----------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_HRTIM1) == RCC_PERIPHCLK_HRTIM1) - 80370f2: 687b ldr r3, [r7, #4] - 80370f4: 681b ldr r3, [r3, #0] - 80370f6: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 80370fa: 2b00 cmp r3, #0 - 80370fc: d009 beq.n 8037112 + 8037132: 687b ldr r3, [r7, #4] + 8037134: 681b ldr r3, [r3, #0] + 8037136: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 803713a: 2b00 cmp r3, #0 + 803713c: d009 beq.n 8037152 { /* Check the parameters */ assert_param(IS_RCC_HRTIM1CLKSOURCE(PeriphClkInit->Hrtim1ClockSelection)); /* Configure the HRTIM1 clock source */ __HAL_RCC_HRTIM1_CONFIG(PeriphClkInit->Hrtim1ClockSelection); - 80370fe: 4b2a ldr r3, [pc, #168] ; (80371a8 ) - 8037100: 691b ldr r3, [r3, #16] - 8037102: f423 4280 bic.w r2, r3, #16384 ; 0x4000 - 8037106: 687b ldr r3, [r7, #4] - 8037108: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 - 803710c: 4926 ldr r1, [pc, #152] ; (80371a8 ) - 803710e: 4313 orrs r3, r2 - 8037110: 610b str r3, [r1, #16] + 803713e: 4b2a ldr r3, [pc, #168] ; (80371e8 ) + 8037140: 691b ldr r3, [r3, #16] + 8037142: f423 4280 bic.w r2, r3, #16384 ; 0x4000 + 8037146: 687b ldr r3, [r7, #4] + 8037148: f8d3 30b4 ldr.w r3, [r3, #180] ; 0xb4 + 803714c: 4926 ldr r1, [pc, #152] ; (80371e8 ) + 803714e: 4313 orrs r3, r2 + 8037150: 610b str r3, [r1, #16] } #endif /*HRTIM1*/ /*------------------------------ DFSDM1 Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_DFSDM1) == RCC_PERIPHCLK_DFSDM1) - 8037112: 687b ldr r3, [r7, #4] - 8037114: 681b ldr r3, [r3, #0] - 8037116: f403 1300 and.w r3, r3, #2097152 ; 0x200000 - 803711a: 2b00 cmp r3, #0 - 803711c: d008 beq.n 8037130 + 8037152: 687b ldr r3, [r7, #4] + 8037154: 681b ldr r3, [r3, #0] + 8037156: f403 1300 and.w r3, r3, #2097152 ; 0x200000 + 803715a: 2b00 cmp r3, #0 + 803715c: d008 beq.n 8037170 { /* Check the parameters */ assert_param(IS_RCC_DFSDM1CLKSOURCE(PeriphClkInit->Dfsdm1ClockSelection)); /* Configure the DFSDM1 interface clock source */ __HAL_RCC_DFSDM1_CONFIG(PeriphClkInit->Dfsdm1ClockSelection); - 803711e: 4b22 ldr r3, [pc, #136] ; (80371a8 ) - 8037120: 6d1b ldr r3, [r3, #80] ; 0x50 - 8037122: f023 7280 bic.w r2, r3, #16777216 ; 0x1000000 - 8037126: 687b ldr r3, [r7, #4] - 8037128: 6e9b ldr r3, [r3, #104] ; 0x68 - 803712a: 491f ldr r1, [pc, #124] ; (80371a8 ) - 803712c: 4313 orrs r3, r2 - 803712e: 650b str r3, [r1, #80] ; 0x50 + 803715e: 4b22 ldr r3, [pc, #136] ; (80371e8 ) + 8037160: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037162: f023 7280 bic.w r2, r3, #16777216 ; 0x1000000 + 8037166: 687b ldr r3, [r7, #4] + 8037168: 6e9b ldr r3, [r3, #104] ; 0x68 + 803716a: 491f ldr r1, [pc, #124] ; (80371e8 ) + 803716c: 4313 orrs r3, r2 + 803716e: 650b str r3, [r1, #80] ; 0x50 __HAL_RCC_DFSDM2_CONFIG(PeriphClkInit->Dfsdm2ClockSelection); } #endif /* DFSDM2 */ /*------------------------------------ TIM configuration --------------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM) == RCC_PERIPHCLK_TIM) - 8037130: 687b ldr r3, [r7, #4] - 8037132: 681b ldr r3, [r3, #0] - 8037134: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 - 8037138: 2b00 cmp r3, #0 - 803713a: d00d beq.n 8037158 + 8037170: 687b ldr r3, [r7, #4] + 8037172: 681b ldr r3, [r3, #0] + 8037174: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 + 8037178: 2b00 cmp r3, #0 + 803717a: d00d beq.n 8037198 { /* Check the parameters */ assert_param(IS_RCC_TIMPRES(PeriphClkInit->TIMPresSelection)); /* Configure Timer Prescaler */ __HAL_RCC_TIMCLKPRESCALER(PeriphClkInit->TIMPresSelection); - 803713c: 4b1a ldr r3, [pc, #104] ; (80371a8 ) - 803713e: 691b ldr r3, [r3, #16] - 8037140: 4a19 ldr r2, [pc, #100] ; (80371a8 ) - 8037142: f423 4300 bic.w r3, r3, #32768 ; 0x8000 - 8037146: 6113 str r3, [r2, #16] - 8037148: 4b17 ldr r3, [pc, #92] ; (80371a8 ) - 803714a: 691a ldr r2, [r3, #16] - 803714c: 687b ldr r3, [r7, #4] - 803714e: f8d3 30b8 ldr.w r3, [r3, #184] ; 0xb8 - 8037152: 4915 ldr r1, [pc, #84] ; (80371a8 ) - 8037154: 4313 orrs r3, r2 - 8037156: 610b str r3, [r1, #16] + 803717c: 4b1a ldr r3, [pc, #104] ; (80371e8 ) + 803717e: 691b ldr r3, [r3, #16] + 8037180: 4a19 ldr r2, [pc, #100] ; (80371e8 ) + 8037182: f423 4300 bic.w r3, r3, #32768 ; 0x8000 + 8037186: 6113 str r3, [r2, #16] + 8037188: 4b17 ldr r3, [pc, #92] ; (80371e8 ) + 803718a: 691a ldr r2, [r3, #16] + 803718c: 687b ldr r3, [r7, #4] + 803718e: f8d3 30b8 ldr.w r3, [r3, #184] ; 0xb8 + 8037192: 4915 ldr r1, [pc, #84] ; (80371e8 ) + 8037194: 4313 orrs r3, r2 + 8037196: 610b str r3, [r1, #16] } /*------------------------------------ CKPER configuration --------------------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CKPER) == RCC_PERIPHCLK_CKPER) - 8037158: 687b ldr r3, [r7, #4] - 803715a: 681b ldr r3, [r3, #0] - 803715c: 2b00 cmp r3, #0 - 803715e: da08 bge.n 8037172 + 8037198: 687b ldr r3, [r7, #4] + 803719a: 681b ldr r3, [r3, #0] + 803719c: 2b00 cmp r3, #0 + 803719e: da08 bge.n 80371b2 { /* Check the parameters */ assert_param(IS_RCC_CLKPSOURCE(PeriphClkInit->CkperClockSelection)); /* Configure the CKPER clock source */ __HAL_RCC_CLKP_CONFIG(PeriphClkInit->CkperClockSelection); - 8037160: 4b11 ldr r3, [pc, #68] ; (80371a8 ) - 8037162: 6cdb ldr r3, [r3, #76] ; 0x4c - 8037164: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 - 8037168: 687b ldr r3, [r7, #4] - 803716a: 6d1b ldr r3, [r3, #80] ; 0x50 - 803716c: 490e ldr r1, [pc, #56] ; (80371a8 ) - 803716e: 4313 orrs r3, r2 - 8037170: 64cb str r3, [r1, #76] ; 0x4c + 80371a0: 4b11 ldr r3, [pc, #68] ; (80371e8 ) + 80371a2: 6cdb ldr r3, [r3, #76] ; 0x4c + 80371a4: f023 5240 bic.w r2, r3, #805306368 ; 0x30000000 + 80371a8: 687b ldr r3, [r7, #4] + 80371aa: 6d1b ldr r3, [r3, #80] ; 0x50 + 80371ac: 490e ldr r1, [pc, #56] ; (80371e8 ) + 80371ae: 4313 orrs r3, r2 + 80371b0: 64cb str r3, [r1, #76] ; 0x4c } /*------------------------------ CEC Configuration ------------------------*/ if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC) - 8037172: 687b ldr r3, [r7, #4] - 8037174: 681b ldr r3, [r3, #0] - 8037176: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 803717a: 2b00 cmp r3, #0 - 803717c: d009 beq.n 8037192 + 80371b2: 687b ldr r3, [r7, #4] + 80371b4: 681b ldr r3, [r3, #0] + 80371b6: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 80371ba: 2b00 cmp r3, #0 + 80371bc: d009 beq.n 80371d2 { /* Check the parameters */ assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection)); /* Configure the CEC interface clock source */ __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection); - 803717e: 4b0a ldr r3, [pc, #40] ; (80371a8 ) - 8037180: 6d5b ldr r3, [r3, #84] ; 0x54 - 8037182: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000 - 8037186: 687b ldr r3, [r7, #4] - 8037188: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803718c: 4906 ldr r1, [pc, #24] ; (80371a8 ) - 803718e: 4313 orrs r3, r2 - 8037190: 654b str r3, [r1, #84] ; 0x54 + 80371be: 4b0a ldr r3, [pc, #40] ; (80371e8 ) + 80371c0: 6d5b ldr r3, [r3, #84] ; 0x54 + 80371c2: f423 0240 bic.w r2, r3, #12582912 ; 0xc00000 + 80371c6: 687b ldr r3, [r7, #4] + 80371c8: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 80371cc: 4906 ldr r1, [pc, #24] ; (80371e8 ) + 80371ce: 4313 orrs r3, r2 + 80371d0: 654b str r3, [r1, #84] ; 0x54 } if (status == HAL_OK) - 8037192: 7dbb ldrb r3, [r7, #22] - 8037194: 2b00 cmp r3, #0 - 8037196: d101 bne.n 803719c + 80371d2: 7dbb ldrb r3, [r7, #22] + 80371d4: 2b00 cmp r3, #0 + 80371d6: d101 bne.n 80371dc { return HAL_OK; - 8037198: 2300 movs r3, #0 - 803719a: e000 b.n 803719e + 80371d8: 2300 movs r3, #0 + 80371da: e000 b.n 80371de } return HAL_ERROR; - 803719c: 2301 movs r3, #1 + 80371dc: 2301 movs r3, #1 } - 803719e: 4618 mov r0, r3 - 80371a0: 3718 adds r7, #24 - 80371a2: 46bd mov sp, r7 - 80371a4: bd80 pop {r7, pc} - 80371a6: bf00 nop - 80371a8: 58024400 .word 0x58024400 + 80371de: 4618 mov r0, r3 + 80371e0: 3718 adds r7, #24 + 80371e2: 46bd mov sp, r7 + 80371e4: bd80 pop {r7, pc} + 80371e6: bf00 nop + 80371e8: 58024400 .word 0x58024400 -080371ac : +080371ec : * @retval Frequency in KHz * * (*) : Available on some STM32H7 lines only. */ uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) { - 80371ac: b580 push {r7, lr} - 80371ae: b090 sub sp, #64 ; 0x40 - 80371b0: af00 add r7, sp, #0 - 80371b2: 6078 str r0, [r7, #4] + 80371ec: b580 push {r7, lr} + 80371ee: b090 sub sp, #64 ; 0x40 + 80371f0: af00 add r7, sp, #0 + 80371f2: 6078 str r0, [r7, #4] /* This variable is used to store the SAI and CKP clock source */ uint32_t saiclocksource; uint32_t ckpclocksource; uint32_t srcclk; if (PeriphClk == RCC_PERIPHCLK_SAI1) - 80371b4: 687b ldr r3, [r7, #4] - 80371b6: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80371ba: f040 8095 bne.w 80372e8 + 80371f4: 687b ldr r3, [r7, #4] + 80371f6: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80371fa: f040 8095 bne.w 8037328 { saiclocksource= __HAL_RCC_GET_SAI1_SOURCE(); - 80371be: 4b97 ldr r3, [pc, #604] ; (803741c ) - 80371c0: 6d1b ldr r3, [r3, #80] ; 0x50 - 80371c2: f003 0307 and.w r3, r3, #7 - 80371c6: 633b str r3, [r7, #48] ; 0x30 + 80371fe: 4b97 ldr r3, [pc, #604] ; (803745c ) + 8037200: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037202: f003 0307 and.w r3, r3, #7 + 8037206: 633b str r3, [r7, #48] ; 0x30 switch (saiclocksource) - 80371c8: 6b3b ldr r3, [r7, #48] ; 0x30 - 80371ca: 2b04 cmp r3, #4 - 80371cc: f200 8088 bhi.w 80372e0 - 80371d0: a201 add r2, pc, #4 ; (adr r2, 80371d8 ) - 80371d2: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 80371d6: bf00 nop - 80371d8: 080371ed .word 0x080371ed - 80371dc: 08037215 .word 0x08037215 - 80371e0: 0803723d .word 0x0803723d - 80371e4: 080372d9 .word 0x080372d9 - 80371e8: 08037265 .word 0x08037265 + 8037208: 6b3b ldr r3, [r7, #48] ; 0x30 + 803720a: 2b04 cmp r3, #4 + 803720c: f200 8088 bhi.w 8037320 + 8037210: a201 add r2, pc, #4 ; (adr r2, 8037218 ) + 8037212: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8037216: bf00 nop + 8037218: 0803722d .word 0x0803722d + 803721c: 08037255 .word 0x08037255 + 8037220: 0803727d .word 0x0803727d + 8037224: 08037319 .word 0x08037319 + 8037228: 080372a5 .word 0x080372a5 { case RCC_SAI1CLKSOURCE_PLL: /* PLL1 is the clock source for SAI1 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 80371ec: 4b8b ldr r3, [pc, #556] ; (803741c ) - 80371ee: 681b ldr r3, [r3, #0] - 80371f0: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 80371f4: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80371f8: d108 bne.n 803720c + 803722c: 4b8b ldr r3, [pc, #556] ; (803745c ) + 803722e: 681b ldr r3, [r3, #0] + 8037230: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8037234: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8037238: d108 bne.n 803724c { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 80371fa: f107 0324 add.w r3, r7, #36 ; 0x24 - 80371fe: 4618 mov r0, r3 - 8037200: f000 ff64 bl 80380cc + 803723a: f107 0324 add.w r3, r7, #36 ; 0x24 + 803723e: 4618 mov r0, r3 + 8037240: f000 ff64 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 8037204: 6abb ldr r3, [r7, #40] ; 0x28 - 8037206: 63fb str r3, [r7, #60] ; 0x3c + 8037244: 6abb ldr r3, [r7, #40] ; 0x28 + 8037246: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037208: f000 bc94 b.w 8037b34 + 8037248: f000 bc94 b.w 8037b74 frequency = 0; - 803720c: 2300 movs r3, #0 - 803720e: 63fb str r3, [r7, #60] ; 0x3c + 803724c: 2300 movs r3, #0 + 803724e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037210: f000 bc90 b.w 8037b34 + 8037250: f000 bc90 b.w 8037b74 } case RCC_SAI1CLKSOURCE_PLL2: /* PLL2 is the clock source for SAI1 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 8037214: 4b81 ldr r3, [pc, #516] ; (803741c ) - 8037216: 681b ldr r3, [r3, #0] - 8037218: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 803721c: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 8037220: d108 bne.n 8037234 + 8037254: 4b81 ldr r3, [pc, #516] ; (803745c ) + 8037256: 681b ldr r3, [r3, #0] + 8037258: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 803725c: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 8037260: d108 bne.n 8037274 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037222: f107 0318 add.w r3, r7, #24 - 8037226: 4618 mov r0, r3 - 8037228: f000 fca8 bl 8037b7c + 8037262: f107 0318 add.w r3, r7, #24 + 8037266: 4618 mov r0, r3 + 8037268: f000 fca8 bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 803722c: 69bb ldr r3, [r7, #24] - 803722e: 63fb str r3, [r7, #60] ; 0x3c + 803726c: 69bb ldr r3, [r7, #24] + 803726e: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037230: f000 bc80 b.w 8037b34 + 8037270: f000 bc80 b.w 8037b74 frequency = 0; - 8037234: 2300 movs r3, #0 - 8037236: 63fb str r3, [r7, #60] ; 0x3c + 8037274: 2300 movs r3, #0 + 8037276: 63fb str r3, [r7, #60] ; 0x3c break; - 8037238: f000 bc7c b.w 8037b34 + 8037278: f000 bc7c b.w 8037b74 } case RCC_SAI1CLKSOURCE_PLL3: /* PLL3 is the clock source for SAI1 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 803723c: 4b77 ldr r3, [pc, #476] ; (803741c ) - 803723e: 681b ldr r3, [r3, #0] - 8037240: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8037244: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037248: d108 bne.n 803725c + 803727c: 4b77 ldr r3, [pc, #476] ; (803745c ) + 803727e: 681b ldr r3, [r3, #0] + 8037280: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 8037284: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037288: d108 bne.n 803729c { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803724a: f107 030c add.w r3, r7, #12 - 803724e: 4618 mov r0, r3 - 8037250: f000 fde8 bl 8037e24 + 803728a: f107 030c add.w r3, r7, #12 + 803728e: 4618 mov r0, r3 + 8037290: f000 fde8 bl 8037e64 frequency = pll3_clocks.PLL3_P_Frequency; - 8037254: 68fb ldr r3, [r7, #12] - 8037256: 63fb str r3, [r7, #60] ; 0x3c + 8037294: 68fb ldr r3, [r7, #12] + 8037296: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037258: f000 bc6c b.w 8037b34 + 8037298: f000 bc6c b.w 8037b74 frequency = 0; - 803725c: 2300 movs r3, #0 - 803725e: 63fb str r3, [r7, #60] ; 0x3c + 803729c: 2300 movs r3, #0 + 803729e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037260: f000 bc68 b.w 8037b34 + 80372a0: f000 bc68 b.w 8037b74 } case RCC_SAI1CLKSOURCE_CLKP: /* CKPER is the clock source for SAI1*/ { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 8037264: 4b6d ldr r3, [pc, #436] ; (803741c ) - 8037266: 6cdb ldr r3, [r3, #76] ; 0x4c - 8037268: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 803726c: 637b str r3, [r7, #52] ; 0x34 + 80372a4: 4b6d ldr r3, [pc, #436] ; (803745c ) + 80372a6: 6cdb ldr r3, [r3, #76] ; 0x4c + 80372a8: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 80372ac: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 803726e: 4b6b ldr r3, [pc, #428] ; (803741c ) - 8037270: 681b ldr r3, [r3, #0] - 8037272: f003 0304 and.w r3, r3, #4 - 8037276: 2b04 cmp r3, #4 - 8037278: d10c bne.n 8037294 - 803727a: 6b7b ldr r3, [r7, #52] ; 0x34 - 803727c: 2b00 cmp r3, #0 - 803727e: d109 bne.n 8037294 + 80372ae: 4b6b ldr r3, [pc, #428] ; (803745c ) + 80372b0: 681b ldr r3, [r3, #0] + 80372b2: f003 0304 and.w r3, r3, #4 + 80372b6: 2b04 cmp r3, #4 + 80372b8: d10c bne.n 80372d4 + 80372ba: 6b7b ldr r3, [r7, #52] ; 0x34 + 80372bc: 2b00 cmp r3, #0 + 80372be: d109 bne.n 80372d4 { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037280: 4b66 ldr r3, [pc, #408] ; (803741c ) - 8037282: 681b ldr r3, [r3, #0] - 8037284: 08db lsrs r3, r3, #3 - 8037286: f003 0303 and.w r3, r3, #3 - 803728a: 4a65 ldr r2, [pc, #404] ; (8037420 ) - 803728c: fa22 f303 lsr.w r3, r2, r3 - 8037290: 63fb str r3, [r7, #60] ; 0x3c - 8037292: e01f b.n 80372d4 + 80372c0: 4b66 ldr r3, [pc, #408] ; (803745c ) + 80372c2: 681b ldr r3, [r3, #0] + 80372c4: 08db lsrs r3, r3, #3 + 80372c6: f003 0303 and.w r3, r3, #3 + 80372ca: 4a65 ldr r2, [pc, #404] ; (8037460 ) + 80372cc: fa22 f303 lsr.w r3, r2, r3 + 80372d0: 63fb str r3, [r7, #60] ; 0x3c + 80372d2: e01f b.n 8037314 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 8037294: 4b61 ldr r3, [pc, #388] ; (803741c ) - 8037296: 681b ldr r3, [r3, #0] - 8037298: f403 7380 and.w r3, r3, #256 ; 0x100 - 803729c: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80372a0: d106 bne.n 80372b0 - 80372a2: 6b7b ldr r3, [r7, #52] ; 0x34 - 80372a4: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 80372a8: d102 bne.n 80372b0 + 80372d4: 4b61 ldr r3, [pc, #388] ; (803745c ) + 80372d6: 681b ldr r3, [r3, #0] + 80372d8: f403 7380 and.w r3, r3, #256 ; 0x100 + 80372dc: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80372e0: d106 bne.n 80372f0 + 80372e2: 6b7b ldr r3, [r7, #52] ; 0x34 + 80372e4: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 80372e8: d102 bne.n 80372f0 { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 80372aa: 4b5e ldr r3, [pc, #376] ; (8037424 ) - 80372ac: 63fb str r3, [r7, #60] ; 0x3c - 80372ae: e011 b.n 80372d4 + 80372ea: 4b5e ldr r3, [pc, #376] ; (8037464 ) + 80372ec: 63fb str r3, [r7, #60] ; 0x3c + 80372ee: e011 b.n 8037314 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 80372b0: 4b5a ldr r3, [pc, #360] ; (803741c ) - 80372b2: 681b ldr r3, [r3, #0] - 80372b4: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80372b8: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80372bc: d106 bne.n 80372cc - 80372be: 6b7b ldr r3, [r7, #52] ; 0x34 - 80372c0: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80372c4: d102 bne.n 80372cc + 80372f0: 4b5a ldr r3, [pc, #360] ; (803745c ) + 80372f2: 681b ldr r3, [r3, #0] + 80372f4: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80372f8: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80372fc: d106 bne.n 803730c + 80372fe: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037300: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037304: d102 bne.n 803730c { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 80372c6: 4b58 ldr r3, [pc, #352] ; (8037428 ) - 80372c8: 63fb str r3, [r7, #60] ; 0x3c - 80372ca: e003 b.n 80372d4 + 8037306: 4b58 ldr r3, [pc, #352] ; (8037468 ) + 8037308: 63fb str r3, [r7, #60] ; 0x3c + 803730a: e003 b.n 8037314 } else { /* In Case the CKPER is disabled*/ frequency = 0; - 80372cc: 2300 movs r3, #0 - 80372ce: 63fb str r3, [r7, #60] ; 0x3c + 803730c: 2300 movs r3, #0 + 803730e: 63fb str r3, [r7, #60] ; 0x3c } break; - 80372d0: f000 bc30 b.w 8037b34 - 80372d4: f000 bc2e b.w 8037b34 + 8037310: f000 bc30 b.w 8037b74 + 8037314: f000 bc2e b.w 8037b74 } case (RCC_SAI1CLKSOURCE_PIN): /* External clock is the clock source for SAI1 */ { frequency = EXTERNAL_CLOCK_VALUE; - 80372d8: 4b54 ldr r3, [pc, #336] ; (803742c ) - 80372da: 63fb str r3, [r7, #60] ; 0x3c + 8037318: 4b54 ldr r3, [pc, #336] ; (803746c ) + 803731a: 63fb str r3, [r7, #60] ; 0x3c break; - 80372dc: f000 bc2a b.w 8037b34 + 803731c: f000 bc2a b.w 8037b74 } default : { frequency = 0; - 80372e0: 2300 movs r3, #0 - 80372e2: 63fb str r3, [r7, #60] ; 0x3c + 8037320: 2300 movs r3, #0 + 8037322: 63fb str r3, [r7, #60] ; 0x3c break; - 80372e4: f000 bc26 b.w 8037b34 + 8037324: f000 bc26 b.w 8037b74 } } } #if defined(SAI3) else if (PeriphClk == RCC_PERIPHCLK_SAI23) - 80372e8: 687b ldr r3, [r7, #4] - 80372ea: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 80372ee: f040 809f bne.w 8037430 + 8037328: 687b ldr r3, [r7, #4] + 803732a: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 803732e: f040 809f bne.w 8037470 { saiclocksource= __HAL_RCC_GET_SAI23_SOURCE(); - 80372f2: 4b4a ldr r3, [pc, #296] ; (803741c ) - 80372f4: 6d1b ldr r3, [r3, #80] ; 0x50 - 80372f6: f403 73e0 and.w r3, r3, #448 ; 0x1c0 - 80372fa: 633b str r3, [r7, #48] ; 0x30 + 8037332: 4b4a ldr r3, [pc, #296] ; (803745c ) + 8037334: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037336: f403 73e0 and.w r3, r3, #448 ; 0x1c0 + 803733a: 633b str r3, [r7, #48] ; 0x30 switch (saiclocksource) - 80372fc: 6b3b ldr r3, [r7, #48] ; 0x30 - 80372fe: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8037302: d04d beq.n 80373a0 - 8037304: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037306: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 803730a: f200 8084 bhi.w 8037416 - 803730e: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037310: 2bc0 cmp r3, #192 ; 0xc0 - 8037312: d07d beq.n 8037410 - 8037314: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037316: 2bc0 cmp r3, #192 ; 0xc0 - 8037318: d87d bhi.n 8037416 - 803731a: 6b3b ldr r3, [r7, #48] ; 0x30 - 803731c: 2b80 cmp r3, #128 ; 0x80 - 803731e: d02d beq.n 803737c - 8037320: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037322: 2b80 cmp r3, #128 ; 0x80 - 8037324: d877 bhi.n 8037416 - 8037326: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037328: 2b00 cmp r3, #0 - 803732a: d003 beq.n 8037334 - 803732c: 6b3b ldr r3, [r7, #48] ; 0x30 - 803732e: 2b40 cmp r3, #64 ; 0x40 - 8037330: d012 beq.n 8037358 - 8037332: e070 b.n 8037416 + 803733c: 6b3b ldr r3, [r7, #48] ; 0x30 + 803733e: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8037342: d04d beq.n 80373e0 + 8037344: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037346: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803734a: f200 8084 bhi.w 8037456 + 803734e: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037350: 2bc0 cmp r3, #192 ; 0xc0 + 8037352: d07d beq.n 8037450 + 8037354: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037356: 2bc0 cmp r3, #192 ; 0xc0 + 8037358: d87d bhi.n 8037456 + 803735a: 6b3b ldr r3, [r7, #48] ; 0x30 + 803735c: 2b80 cmp r3, #128 ; 0x80 + 803735e: d02d beq.n 80373bc + 8037360: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037362: 2b80 cmp r3, #128 ; 0x80 + 8037364: d877 bhi.n 8037456 + 8037366: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037368: 2b00 cmp r3, #0 + 803736a: d003 beq.n 8037374 + 803736c: 6b3b ldr r3, [r7, #48] ; 0x30 + 803736e: 2b40 cmp r3, #64 ; 0x40 + 8037370: d012 beq.n 8037398 + 8037372: e070 b.n 8037456 { case RCC_SAI23CLKSOURCE_PLL: /* PLL1 is the clock source for SAI2/3 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 8037334: 4b39 ldr r3, [pc, #228] ; (803741c ) - 8037336: 681b ldr r3, [r3, #0] - 8037338: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 803733c: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8037340: d107 bne.n 8037352 + 8037374: 4b39 ldr r3, [pc, #228] ; (803745c ) + 8037376: 681b ldr r3, [r3, #0] + 8037378: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 803737c: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8037380: d107 bne.n 8037392 { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 8037342: f107 0324 add.w r3, r7, #36 ; 0x24 - 8037346: 4618 mov r0, r3 - 8037348: f000 fec0 bl 80380cc + 8037382: f107 0324 add.w r3, r7, #36 ; 0x24 + 8037386: 4618 mov r0, r3 + 8037388: f000 fec0 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 803734c: 6abb ldr r3, [r7, #40] ; 0x28 - 803734e: 63fb str r3, [r7, #60] ; 0x3c + 803738c: 6abb ldr r3, [r7, #40] ; 0x28 + 803738e: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037350: e3f0 b.n 8037b34 + 8037390: e3f0 b.n 8037b74 frequency = 0; - 8037352: 2300 movs r3, #0 - 8037354: 63fb str r3, [r7, #60] ; 0x3c + 8037392: 2300 movs r3, #0 + 8037394: 63fb str r3, [r7, #60] ; 0x3c break; - 8037356: e3ed b.n 8037b34 + 8037396: e3ed b.n 8037b74 } case RCC_SAI23CLKSOURCE_PLL2: /* PLL2 is the clock source for SAI2/3 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 8037358: 4b30 ldr r3, [pc, #192] ; (803741c ) - 803735a: 681b ldr r3, [r3, #0] - 803735c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8037360: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 8037364: d107 bne.n 8037376 + 8037398: 4b30 ldr r3, [pc, #192] ; (803745c ) + 803739a: 681b ldr r3, [r3, #0] + 803739c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 80373a0: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 80373a4: d107 bne.n 80373b6 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037366: f107 0318 add.w r3, r7, #24 - 803736a: 4618 mov r0, r3 - 803736c: f000 fc06 bl 8037b7c + 80373a6: f107 0318 add.w r3, r7, #24 + 80373aa: 4618 mov r0, r3 + 80373ac: f000 fc06 bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 8037370: 69bb ldr r3, [r7, #24] - 8037372: 63fb str r3, [r7, #60] ; 0x3c + 80373b0: 69bb ldr r3, [r7, #24] + 80373b2: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037374: e3de b.n 8037b34 + 80373b4: e3de b.n 8037b74 frequency = 0; - 8037376: 2300 movs r3, #0 - 8037378: 63fb str r3, [r7, #60] ; 0x3c + 80373b6: 2300 movs r3, #0 + 80373b8: 63fb str r3, [r7, #60] ; 0x3c break; - 803737a: e3db b.n 8037b34 + 80373ba: e3db b.n 8037b74 } case RCC_SAI23CLKSOURCE_PLL3: /* PLL3 is the clock source for SAI2/3 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 803737c: 4b27 ldr r3, [pc, #156] ; (803741c ) - 803737e: 681b ldr r3, [r3, #0] - 8037380: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8037384: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037388: d107 bne.n 803739a + 80373bc: 4b27 ldr r3, [pc, #156] ; (803745c ) + 80373be: 681b ldr r3, [r3, #0] + 80373c0: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 80373c4: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80373c8: d107 bne.n 80373da { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803738a: f107 030c add.w r3, r7, #12 - 803738e: 4618 mov r0, r3 - 8037390: f000 fd48 bl 8037e24 + 80373ca: f107 030c add.w r3, r7, #12 + 80373ce: 4618 mov r0, r3 + 80373d0: f000 fd48 bl 8037e64 frequency = pll3_clocks.PLL3_P_Frequency; - 8037394: 68fb ldr r3, [r7, #12] - 8037396: 63fb str r3, [r7, #60] ; 0x3c + 80373d4: 68fb ldr r3, [r7, #12] + 80373d6: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037398: e3cc b.n 8037b34 + 80373d8: e3cc b.n 8037b74 frequency = 0; - 803739a: 2300 movs r3, #0 - 803739c: 63fb str r3, [r7, #60] ; 0x3c + 80373da: 2300 movs r3, #0 + 80373dc: 63fb str r3, [r7, #60] ; 0x3c break; - 803739e: e3c9 b.n 8037b34 + 80373de: e3c9 b.n 8037b74 } case RCC_SAI23CLKSOURCE_CLKP: /* CKPER is the clock source for SAI2/3 */ { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 80373a0: 4b1e ldr r3, [pc, #120] ; (803741c ) - 80373a2: 6cdb ldr r3, [r3, #76] ; 0x4c - 80373a4: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 80373a8: 637b str r3, [r7, #52] ; 0x34 + 80373e0: 4b1e ldr r3, [pc, #120] ; (803745c ) + 80373e2: 6cdb ldr r3, [r3, #76] ; 0x4c + 80373e4: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 80373e8: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 80373aa: 4b1c ldr r3, [pc, #112] ; (803741c ) - 80373ac: 681b ldr r3, [r3, #0] - 80373ae: f003 0304 and.w r3, r3, #4 - 80373b2: 2b04 cmp r3, #4 - 80373b4: d10c bne.n 80373d0 - 80373b6: 6b7b ldr r3, [r7, #52] ; 0x34 - 80373b8: 2b00 cmp r3, #0 - 80373ba: d109 bne.n 80373d0 + 80373ea: 4b1c ldr r3, [pc, #112] ; (803745c ) + 80373ec: 681b ldr r3, [r3, #0] + 80373ee: f003 0304 and.w r3, r3, #4 + 80373f2: 2b04 cmp r3, #4 + 80373f4: d10c bne.n 8037410 + 80373f6: 6b7b ldr r3, [r7, #52] ; 0x34 + 80373f8: 2b00 cmp r3, #0 + 80373fa: d109 bne.n 8037410 { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 80373bc: 4b17 ldr r3, [pc, #92] ; (803741c ) - 80373be: 681b ldr r3, [r3, #0] - 80373c0: 08db lsrs r3, r3, #3 - 80373c2: f003 0303 and.w r3, r3, #3 - 80373c6: 4a16 ldr r2, [pc, #88] ; (8037420 ) - 80373c8: fa22 f303 lsr.w r3, r2, r3 - 80373cc: 63fb str r3, [r7, #60] ; 0x3c - 80373ce: e01e b.n 803740e + 80373fc: 4b17 ldr r3, [pc, #92] ; (803745c ) + 80373fe: 681b ldr r3, [r3, #0] + 8037400: 08db lsrs r3, r3, #3 + 8037402: f003 0303 and.w r3, r3, #3 + 8037406: 4a16 ldr r2, [pc, #88] ; (8037460 ) + 8037408: fa22 f303 lsr.w r3, r2, r3 + 803740c: 63fb str r3, [r7, #60] ; 0x3c + 803740e: e01e b.n 803744e } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 80373d0: 4b12 ldr r3, [pc, #72] ; (803741c ) - 80373d2: 681b ldr r3, [r3, #0] - 80373d4: f403 7380 and.w r3, r3, #256 ; 0x100 - 80373d8: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80373dc: d106 bne.n 80373ec - 80373de: 6b7b ldr r3, [r7, #52] ; 0x34 - 80373e0: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 80373e4: d102 bne.n 80373ec + 8037410: 4b12 ldr r3, [pc, #72] ; (803745c ) + 8037412: 681b ldr r3, [r3, #0] + 8037414: f403 7380 and.w r3, r3, #256 ; 0x100 + 8037418: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803741c: d106 bne.n 803742c + 803741e: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037420: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8037424: d102 bne.n 803742c { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 80373e6: 4b0f ldr r3, [pc, #60] ; (8037424 ) - 80373e8: 63fb str r3, [r7, #60] ; 0x3c - 80373ea: e010 b.n 803740e + 8037426: 4b0f ldr r3, [pc, #60] ; (8037464 ) + 8037428: 63fb str r3, [r7, #60] ; 0x3c + 803742a: e010 b.n 803744e } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 80373ec: 4b0b ldr r3, [pc, #44] ; (803741c ) - 80373ee: 681b ldr r3, [r3, #0] - 80373f0: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80373f4: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80373f8: d106 bne.n 8037408 - 80373fa: 6b7b ldr r3, [r7, #52] ; 0x34 - 80373fc: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037400: d102 bne.n 8037408 + 803742c: 4b0b ldr r3, [pc, #44] ; (803745c ) + 803742e: 681b ldr r3, [r3, #0] + 8037430: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8037434: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8037438: d106 bne.n 8037448 + 803743a: 6b7b ldr r3, [r7, #52] ; 0x34 + 803743c: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037440: d102 bne.n 8037448 { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 8037402: 4b09 ldr r3, [pc, #36] ; (8037428 ) - 8037404: 63fb str r3, [r7, #60] ; 0x3c - 8037406: e002 b.n 803740e + 8037442: 4b09 ldr r3, [pc, #36] ; (8037468 ) + 8037444: 63fb str r3, [r7, #60] ; 0x3c + 8037446: e002 b.n 803744e } else { /* In Case the CKPER is disabled*/ frequency = 0; - 8037408: 2300 movs r3, #0 - 803740a: 63fb str r3, [r7, #60] ; 0x3c + 8037448: 2300 movs r3, #0 + 803744a: 63fb str r3, [r7, #60] ; 0x3c } break; - 803740c: e392 b.n 8037b34 - 803740e: e391 b.n 8037b34 + 803744c: e392 b.n 8037b74 + 803744e: e391 b.n 8037b74 } case (RCC_SAI23CLKSOURCE_PIN): /* External clock is the clock source for SAI2/3 */ { frequency = EXTERNAL_CLOCK_VALUE; - 8037410: 4b06 ldr r3, [pc, #24] ; (803742c ) - 8037412: 63fb str r3, [r7, #60] ; 0x3c + 8037450: 4b06 ldr r3, [pc, #24] ; (803746c ) + 8037452: 63fb str r3, [r7, #60] ; 0x3c break; - 8037414: e38e b.n 8037b34 + 8037454: e38e b.n 8037b74 } default : { frequency = 0; - 8037416: 2300 movs r3, #0 - 8037418: 63fb str r3, [r7, #60] ; 0x3c + 8037456: 2300 movs r3, #0 + 8037458: 63fb str r3, [r7, #60] ; 0x3c break; - 803741a: e38b b.n 8037b34 - 803741c: 58024400 .word 0x58024400 - 8037420: 03d09000 .word 0x03d09000 - 8037424: 003d0900 .word 0x003d0900 - 8037428: 017d7840 .word 0x017d7840 - 803742c: 00bb8000 .word 0x00bb8000 + 803745a: e38b b.n 8037b74 + 803745c: 58024400 .word 0x58024400 + 8037460: 03d09000 .word 0x03d09000 + 8037464: 003d0900 .word 0x003d0900 + 8037468: 017d7840 .word 0x017d7840 + 803746c: 00bb8000 .word 0x00bb8000 } } #endif #if defined(SAI4) else if (PeriphClk == RCC_PERIPHCLK_SAI4A) - 8037430: 687b ldr r3, [r7, #4] - 8037432: f5b3 6f80 cmp.w r3, #1024 ; 0x400 - 8037436: f040 809c bne.w 8037572 + 8037470: 687b ldr r3, [r7, #4] + 8037472: f5b3 6f80 cmp.w r3, #1024 ; 0x400 + 8037476: f040 809c bne.w 80375b2 { saiclocksource= __HAL_RCC_GET_SAI4A_SOURCE(); - 803743a: 4b9d ldr r3, [pc, #628] ; (80376b0 ) - 803743c: 6d9b ldr r3, [r3, #88] ; 0x58 - 803743e: f403 0360 and.w r3, r3, #14680064 ; 0xe00000 - 8037442: 633b str r3, [r7, #48] ; 0x30 + 803747a: 4b9d ldr r3, [pc, #628] ; (80376f0 ) + 803747c: 6d9b ldr r3, [r3, #88] ; 0x58 + 803747e: f403 0360 and.w r3, r3, #14680064 ; 0xe00000 + 8037482: 633b str r3, [r7, #48] ; 0x30 switch (saiclocksource) - 8037444: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037446: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 - 803744a: d054 beq.n 80374f6 - 803744c: 6b3b ldr r3, [r7, #48] ; 0x30 - 803744e: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 - 8037452: f200 808b bhi.w 803756c - 8037456: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037458: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 - 803745c: f000 8083 beq.w 8037566 - 8037460: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037462: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 - 8037466: f200 8081 bhi.w 803756c - 803746a: 6b3b ldr r3, [r7, #48] ; 0x30 - 803746c: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 - 8037470: d02f beq.n 80374d2 - 8037472: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037474: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 - 8037478: d878 bhi.n 803756c - 803747a: 6b3b ldr r3, [r7, #48] ; 0x30 - 803747c: 2b00 cmp r3, #0 - 803747e: d004 beq.n 803748a - 8037480: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037482: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 - 8037486: d012 beq.n 80374ae - 8037488: e070 b.n 803756c + 8037484: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037486: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 + 803748a: d054 beq.n 8037536 + 803748c: 6b3b ldr r3, [r7, #48] ; 0x30 + 803748e: f5b3 0f00 cmp.w r3, #8388608 ; 0x800000 + 8037492: f200 808b bhi.w 80375ac + 8037496: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037498: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 + 803749c: f000 8083 beq.w 80375a6 + 80374a0: 6b3b ldr r3, [r7, #48] ; 0x30 + 80374a2: f5b3 0fc0 cmp.w r3, #6291456 ; 0x600000 + 80374a6: f200 8081 bhi.w 80375ac + 80374aa: 6b3b ldr r3, [r7, #48] ; 0x30 + 80374ac: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 + 80374b0: d02f beq.n 8037512 + 80374b2: 6b3b ldr r3, [r7, #48] ; 0x30 + 80374b4: f5b3 0f80 cmp.w r3, #4194304 ; 0x400000 + 80374b8: d878 bhi.n 80375ac + 80374ba: 6b3b ldr r3, [r7, #48] ; 0x30 + 80374bc: 2b00 cmp r3, #0 + 80374be: d004 beq.n 80374ca + 80374c0: 6b3b ldr r3, [r7, #48] ; 0x30 + 80374c2: f5b3 1f00 cmp.w r3, #2097152 ; 0x200000 + 80374c6: d012 beq.n 80374ee + 80374c8: e070 b.n 80375ac { case RCC_SAI4ACLKSOURCE_PLL: /* PLL1 is the clock source for SAI4A */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 803748a: 4b89 ldr r3, [pc, #548] ; (80376b0 ) - 803748c: 681b ldr r3, [r3, #0] - 803748e: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8037492: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8037496: d107 bne.n 80374a8 + 80374ca: 4b89 ldr r3, [pc, #548] ; (80376f0 ) + 80374cc: 681b ldr r3, [r3, #0] + 80374ce: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 80374d2: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80374d6: d107 bne.n 80374e8 { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 8037498: f107 0324 add.w r3, r7, #36 ; 0x24 - 803749c: 4618 mov r0, r3 - 803749e: f000 fe15 bl 80380cc + 80374d8: f107 0324 add.w r3, r7, #36 ; 0x24 + 80374dc: 4618 mov r0, r3 + 80374de: f000 fe15 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 80374a2: 6abb ldr r3, [r7, #40] ; 0x28 - 80374a4: 63fb str r3, [r7, #60] ; 0x3c + 80374e2: 6abb ldr r3, [r7, #40] ; 0x28 + 80374e4: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 80374a6: e345 b.n 8037b34 + 80374e6: e345 b.n 8037b74 frequency = 0; - 80374a8: 2300 movs r3, #0 - 80374aa: 63fb str r3, [r7, #60] ; 0x3c + 80374e8: 2300 movs r3, #0 + 80374ea: 63fb str r3, [r7, #60] ; 0x3c break; - 80374ac: e342 b.n 8037b34 + 80374ec: e342 b.n 8037b74 } case RCC_SAI4ACLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI4A */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 80374ae: 4b80 ldr r3, [pc, #512] ; (80376b0 ) - 80374b0: 681b ldr r3, [r3, #0] - 80374b2: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 80374b6: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 80374ba: d107 bne.n 80374cc + 80374ee: 4b80 ldr r3, [pc, #512] ; (80376f0 ) + 80374f0: 681b ldr r3, [r3, #0] + 80374f2: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 80374f6: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 80374fa: d107 bne.n 803750c { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 80374bc: f107 0318 add.w r3, r7, #24 - 80374c0: 4618 mov r0, r3 - 80374c2: f000 fb5b bl 8037b7c + 80374fc: f107 0318 add.w r3, r7, #24 + 8037500: 4618 mov r0, r3 + 8037502: f000 fb5b bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 80374c6: 69bb ldr r3, [r7, #24] - 80374c8: 63fb str r3, [r7, #60] ; 0x3c + 8037506: 69bb ldr r3, [r7, #24] + 8037508: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 80374ca: e333 b.n 8037b34 + 803750a: e333 b.n 8037b74 frequency = 0; - 80374cc: 2300 movs r3, #0 - 80374ce: 63fb str r3, [r7, #60] ; 0x3c + 803750c: 2300 movs r3, #0 + 803750e: 63fb str r3, [r7, #60] ; 0x3c break; - 80374d0: e330 b.n 8037b34 + 8037510: e330 b.n 8037b74 } case RCC_SAI4ACLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI4A */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 80374d2: 4b77 ldr r3, [pc, #476] ; (80376b0 ) - 80374d4: 681b ldr r3, [r3, #0] - 80374d6: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 80374da: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80374de: d107 bne.n 80374f0 + 8037512: 4b77 ldr r3, [pc, #476] ; (80376f0 ) + 8037514: 681b ldr r3, [r3, #0] + 8037516: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 803751a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 803751e: d107 bne.n 8037530 { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 80374e0: f107 030c add.w r3, r7, #12 - 80374e4: 4618 mov r0, r3 - 80374e6: f000 fc9d bl 8037e24 + 8037520: f107 030c add.w r3, r7, #12 + 8037524: 4618 mov r0, r3 + 8037526: f000 fc9d bl 8037e64 frequency = pll3_clocks.PLL3_P_Frequency; - 80374ea: 68fb ldr r3, [r7, #12] - 80374ec: 63fb str r3, [r7, #60] ; 0x3c + 803752a: 68fb ldr r3, [r7, #12] + 803752c: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 80374ee: e321 b.n 8037b34 + 803752e: e321 b.n 8037b74 frequency = 0; - 80374f0: 2300 movs r3, #0 - 80374f2: 63fb str r3, [r7, #60] ; 0x3c + 8037530: 2300 movs r3, #0 + 8037532: 63fb str r3, [r7, #60] ; 0x3c break; - 80374f4: e31e b.n 8037b34 + 8037534: e31e b.n 8037b74 } case RCC_SAI4ACLKSOURCE_CLKP: /* CKPER is the clock source for SAI4A*/ { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 80374f6: 4b6e ldr r3, [pc, #440] ; (80376b0 ) - 80374f8: 6cdb ldr r3, [r3, #76] ; 0x4c - 80374fa: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 80374fe: 637b str r3, [r7, #52] ; 0x34 + 8037536: 4b6e ldr r3, [pc, #440] ; (80376f0 ) + 8037538: 6cdb ldr r3, [r3, #76] ; 0x4c + 803753a: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 803753e: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 8037500: 4b6b ldr r3, [pc, #428] ; (80376b0 ) - 8037502: 681b ldr r3, [r3, #0] - 8037504: f003 0304 and.w r3, r3, #4 - 8037508: 2b04 cmp r3, #4 - 803750a: d10c bne.n 8037526 - 803750c: 6b7b ldr r3, [r7, #52] ; 0x34 - 803750e: 2b00 cmp r3, #0 - 8037510: d109 bne.n 8037526 + 8037540: 4b6b ldr r3, [pc, #428] ; (80376f0 ) + 8037542: 681b ldr r3, [r3, #0] + 8037544: f003 0304 and.w r3, r3, #4 + 8037548: 2b04 cmp r3, #4 + 803754a: d10c bne.n 8037566 + 803754c: 6b7b ldr r3, [r7, #52] ; 0x34 + 803754e: 2b00 cmp r3, #0 + 8037550: d109 bne.n 8037566 { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037512: 4b67 ldr r3, [pc, #412] ; (80376b0 ) - 8037514: 681b ldr r3, [r3, #0] - 8037516: 08db lsrs r3, r3, #3 - 8037518: f003 0303 and.w r3, r3, #3 - 803751c: 4a65 ldr r2, [pc, #404] ; (80376b4 ) - 803751e: fa22 f303 lsr.w r3, r2, r3 - 8037522: 63fb str r3, [r7, #60] ; 0x3c - 8037524: e01e b.n 8037564 + 8037552: 4b67 ldr r3, [pc, #412] ; (80376f0 ) + 8037554: 681b ldr r3, [r3, #0] + 8037556: 08db lsrs r3, r3, #3 + 8037558: f003 0303 and.w r3, r3, #3 + 803755c: 4a65 ldr r2, [pc, #404] ; (80376f4 ) + 803755e: fa22 f303 lsr.w r3, r2, r3 + 8037562: 63fb str r3, [r7, #60] ; 0x3c + 8037564: e01e b.n 80375a4 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 8037526: 4b62 ldr r3, [pc, #392] ; (80376b0 ) - 8037528: 681b ldr r3, [r3, #0] - 803752a: f403 7380 and.w r3, r3, #256 ; 0x100 - 803752e: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8037532: d106 bne.n 8037542 - 8037534: 6b7b ldr r3, [r7, #52] ; 0x34 - 8037536: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 803753a: d102 bne.n 8037542 + 8037566: 4b62 ldr r3, [pc, #392] ; (80376f0 ) + 8037568: 681b ldr r3, [r3, #0] + 803756a: f403 7380 and.w r3, r3, #256 ; 0x100 + 803756e: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8037572: d106 bne.n 8037582 + 8037574: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037576: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 803757a: d102 bne.n 8037582 { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 803753c: 4b5e ldr r3, [pc, #376] ; (80376b8 ) - 803753e: 63fb str r3, [r7, #60] ; 0x3c - 8037540: e010 b.n 8037564 + 803757c: 4b5e ldr r3, [pc, #376] ; (80376f8 ) + 803757e: 63fb str r3, [r7, #60] ; 0x3c + 8037580: e010 b.n 80375a4 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 8037542: 4b5b ldr r3, [pc, #364] ; (80376b0 ) - 8037544: 681b ldr r3, [r3, #0] - 8037546: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 803754a: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 803754e: d106 bne.n 803755e - 8037550: 6b7b ldr r3, [r7, #52] ; 0x34 - 8037552: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037556: d102 bne.n 803755e + 8037582: 4b5b ldr r3, [pc, #364] ; (80376f0 ) + 8037584: 681b ldr r3, [r3, #0] + 8037586: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 803758a: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 803758e: d106 bne.n 803759e + 8037590: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037592: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037596: d102 bne.n 803759e { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 8037558: 4b58 ldr r3, [pc, #352] ; (80376bc ) - 803755a: 63fb str r3, [r7, #60] ; 0x3c - 803755c: e002 b.n 8037564 + 8037598: 4b58 ldr r3, [pc, #352] ; (80376fc ) + 803759a: 63fb str r3, [r7, #60] ; 0x3c + 803759c: e002 b.n 80375a4 } else { /* In Case the CKPER is disabled*/ frequency = 0; - 803755e: 2300 movs r3, #0 - 8037560: 63fb str r3, [r7, #60] ; 0x3c + 803759e: 2300 movs r3, #0 + 80375a0: 63fb str r3, [r7, #60] ; 0x3c } break; - 8037562: e2e7 b.n 8037b34 - 8037564: e2e6 b.n 8037b34 + 80375a2: e2e7 b.n 8037b74 + 80375a4: e2e6 b.n 8037b74 } case RCC_SAI4ACLKSOURCE_PIN: /* External clock is the clock source for SAI4A */ { frequency = EXTERNAL_CLOCK_VALUE; - 8037566: 4b56 ldr r3, [pc, #344] ; (80376c0 ) - 8037568: 63fb str r3, [r7, #60] ; 0x3c + 80375a6: 4b56 ldr r3, [pc, #344] ; (8037700 ) + 80375a8: 63fb str r3, [r7, #60] ; 0x3c break; - 803756a: e2e3 b.n 8037b34 + 80375aa: e2e3 b.n 8037b74 } default : { frequency = 0; - 803756c: 2300 movs r3, #0 - 803756e: 63fb str r3, [r7, #60] ; 0x3c + 80375ac: 2300 movs r3, #0 + 80375ae: 63fb str r3, [r7, #60] ; 0x3c break; - 8037570: e2e0 b.n 8037b34 + 80375b0: e2e0 b.n 8037b74 } } } else if (PeriphClk == RCC_PERIPHCLK_SAI4B) - 8037572: 687b ldr r3, [r7, #4] - 8037574: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 8037578: f040 80a7 bne.w 80376ca + 80375b2: 687b ldr r3, [r7, #4] + 80375b4: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 80375b8: f040 80a7 bne.w 803770a { saiclocksource= __HAL_RCC_GET_SAI4B_SOURCE(); - 803757c: 4b4c ldr r3, [pc, #304] ; (80376b0 ) - 803757e: 6d9b ldr r3, [r3, #88] ; 0x58 - 8037580: f003 63e0 and.w r3, r3, #117440512 ; 0x7000000 - 8037584: 633b str r3, [r7, #48] ; 0x30 + 80375bc: 4b4c ldr r3, [pc, #304] ; (80376f0 ) + 80375be: 6d9b ldr r3, [r3, #88] ; 0x58 + 80375c0: f003 63e0 and.w r3, r3, #117440512 ; 0x7000000 + 80375c4: 633b str r3, [r7, #48] ; 0x30 switch (saiclocksource) - 8037586: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037588: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 - 803758c: d055 beq.n 803763a - 803758e: 6b3b ldr r3, [r7, #48] ; 0x30 - 8037590: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 - 8037594: f200 8096 bhi.w 80376c4 - 8037598: 6b3b ldr r3, [r7, #48] ; 0x30 - 803759a: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 - 803759e: f000 8084 beq.w 80376aa - 80375a2: 6b3b ldr r3, [r7, #48] ; 0x30 - 80375a4: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 - 80375a8: f200 808c bhi.w 80376c4 - 80375ac: 6b3b ldr r3, [r7, #48] ; 0x30 - 80375ae: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80375b2: d030 beq.n 8037616 - 80375b4: 6b3b ldr r3, [r7, #48] ; 0x30 - 80375b6: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80375ba: f200 8083 bhi.w 80376c4 - 80375be: 6b3b ldr r3, [r7, #48] ; 0x30 - 80375c0: 2b00 cmp r3, #0 - 80375c2: d004 beq.n 80375ce - 80375c4: 6b3b ldr r3, [r7, #48] ; 0x30 - 80375c6: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 - 80375ca: d012 beq.n 80375f2 - 80375cc: e07a b.n 80376c4 + 80375c6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375c8: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 + 80375cc: d055 beq.n 803767a + 80375ce: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375d0: f1b3 6f80 cmp.w r3, #67108864 ; 0x4000000 + 80375d4: f200 8096 bhi.w 8037704 + 80375d8: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375da: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 + 80375de: f000 8084 beq.w 80376ea + 80375e2: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375e4: f1b3 7f40 cmp.w r3, #50331648 ; 0x3000000 + 80375e8: f200 808c bhi.w 8037704 + 80375ec: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375ee: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80375f2: d030 beq.n 8037656 + 80375f4: 6b3b ldr r3, [r7, #48] ; 0x30 + 80375f6: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80375fa: f200 8083 bhi.w 8037704 + 80375fe: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037600: 2b00 cmp r3, #0 + 8037602: d004 beq.n 803760e + 8037604: 6b3b ldr r3, [r7, #48] ; 0x30 + 8037606: f1b3 7f80 cmp.w r3, #16777216 ; 0x1000000 + 803760a: d012 beq.n 8037632 + 803760c: e07a b.n 8037704 { case RCC_SAI4BCLKSOURCE_PLL: /* PLL1 is the clock source for SAI4B */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 80375ce: 4b38 ldr r3, [pc, #224] ; (80376b0 ) - 80375d0: 681b ldr r3, [r3, #0] - 80375d2: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 80375d6: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 80375da: d107 bne.n 80375ec + 803760e: 4b38 ldr r3, [pc, #224] ; (80376f0 ) + 8037610: 681b ldr r3, [r3, #0] + 8037612: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8037616: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 803761a: d107 bne.n 803762c { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 80375dc: f107 0324 add.w r3, r7, #36 ; 0x24 - 80375e0: 4618 mov r0, r3 - 80375e2: f000 fd73 bl 80380cc + 803761c: f107 0324 add.w r3, r7, #36 ; 0x24 + 8037620: 4618 mov r0, r3 + 8037622: f000 fd73 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 80375e6: 6abb ldr r3, [r7, #40] ; 0x28 - 80375e8: 63fb str r3, [r7, #60] ; 0x3c + 8037626: 6abb ldr r3, [r7, #40] ; 0x28 + 8037628: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 80375ea: e2a3 b.n 8037b34 + 803762a: e2a3 b.n 8037b74 frequency = 0; - 80375ec: 2300 movs r3, #0 - 80375ee: 63fb str r3, [r7, #60] ; 0x3c + 803762c: 2300 movs r3, #0 + 803762e: 63fb str r3, [r7, #60] ; 0x3c break; - 80375f0: e2a0 b.n 8037b34 + 8037630: e2a0 b.n 8037b74 } case RCC_SAI4BCLKSOURCE_PLL2: /* PLLI2 is the clock source for SAI4B */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 80375f2: 4b2f ldr r3, [pc, #188] ; (80376b0 ) - 80375f4: 681b ldr r3, [r3, #0] - 80375f6: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 80375fa: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 80375fe: d107 bne.n 8037610 + 8037632: 4b2f ldr r3, [pc, #188] ; (80376f0 ) + 8037634: 681b ldr r3, [r3, #0] + 8037636: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 803763a: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 803763e: d107 bne.n 8037650 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037600: f107 0318 add.w r3, r7, #24 - 8037604: 4618 mov r0, r3 - 8037606: f000 fab9 bl 8037b7c + 8037640: f107 0318 add.w r3, r7, #24 + 8037644: 4618 mov r0, r3 + 8037646: f000 fab9 bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 803760a: 69bb ldr r3, [r7, #24] - 803760c: 63fb str r3, [r7, #60] ; 0x3c + 803764a: 69bb ldr r3, [r7, #24] + 803764c: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 803760e: e291 b.n 8037b34 + 803764e: e291 b.n 8037b74 frequency = 0; - 8037610: 2300 movs r3, #0 - 8037612: 63fb str r3, [r7, #60] ; 0x3c + 8037650: 2300 movs r3, #0 + 8037652: 63fb str r3, [r7, #60] ; 0x3c break; - 8037614: e28e b.n 8037b34 + 8037654: e28e b.n 8037b74 } case RCC_SAI4BCLKSOURCE_PLL3: /* PLLI3 is the clock source for SAI4B */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 8037616: 4b26 ldr r3, [pc, #152] ; (80376b0 ) - 8037618: 681b ldr r3, [r3, #0] - 803761a: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 803761e: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037622: d107 bne.n 8037634 + 8037656: 4b26 ldr r3, [pc, #152] ; (80376f0 ) + 8037658: 681b ldr r3, [r3, #0] + 803765a: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 803765e: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037662: d107 bne.n 8037674 { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 8037624: f107 030c add.w r3, r7, #12 - 8037628: 4618 mov r0, r3 - 803762a: f000 fbfb bl 8037e24 + 8037664: f107 030c add.w r3, r7, #12 + 8037668: 4618 mov r0, r3 + 803766a: f000 fbfb bl 8037e64 frequency = pll3_clocks.PLL3_P_Frequency; - 803762e: 68fb ldr r3, [r7, #12] - 8037630: 63fb str r3, [r7, #60] ; 0x3c + 803766e: 68fb ldr r3, [r7, #12] + 8037670: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037632: e27f b.n 8037b34 + 8037672: e27f b.n 8037b74 frequency = 0; - 8037634: 2300 movs r3, #0 - 8037636: 63fb str r3, [r7, #60] ; 0x3c + 8037674: 2300 movs r3, #0 + 8037676: 63fb str r3, [r7, #60] ; 0x3c break; - 8037638: e27c b.n 8037b34 + 8037678: e27c b.n 8037b74 } case RCC_SAI4BCLKSOURCE_CLKP: /* CKPER is the clock source for SAI4B*/ { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 803763a: 4b1d ldr r3, [pc, #116] ; (80376b0 ) - 803763c: 6cdb ldr r3, [r3, #76] ; 0x4c - 803763e: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 8037642: 637b str r3, [r7, #52] ; 0x34 + 803767a: 4b1d ldr r3, [pc, #116] ; (80376f0 ) + 803767c: 6cdb ldr r3, [r3, #76] ; 0x4c + 803767e: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 8037682: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 8037644: 4b1a ldr r3, [pc, #104] ; (80376b0 ) - 8037646: 681b ldr r3, [r3, #0] - 8037648: f003 0304 and.w r3, r3, #4 - 803764c: 2b04 cmp r3, #4 - 803764e: d10c bne.n 803766a - 8037650: 6b7b ldr r3, [r7, #52] ; 0x34 - 8037652: 2b00 cmp r3, #0 - 8037654: d109 bne.n 803766a + 8037684: 4b1a ldr r3, [pc, #104] ; (80376f0 ) + 8037686: 681b ldr r3, [r3, #0] + 8037688: f003 0304 and.w r3, r3, #4 + 803768c: 2b04 cmp r3, #4 + 803768e: d10c bne.n 80376aa + 8037690: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037692: 2b00 cmp r3, #0 + 8037694: d109 bne.n 80376aa { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037656: 4b16 ldr r3, [pc, #88] ; (80376b0 ) - 8037658: 681b ldr r3, [r3, #0] - 803765a: 08db lsrs r3, r3, #3 - 803765c: f003 0303 and.w r3, r3, #3 - 8037660: 4a14 ldr r2, [pc, #80] ; (80376b4 ) - 8037662: fa22 f303 lsr.w r3, r2, r3 - 8037666: 63fb str r3, [r7, #60] ; 0x3c - 8037668: e01e b.n 80376a8 + 8037696: 4b16 ldr r3, [pc, #88] ; (80376f0 ) + 8037698: 681b ldr r3, [r3, #0] + 803769a: 08db lsrs r3, r3, #3 + 803769c: f003 0303 and.w r3, r3, #3 + 80376a0: 4a14 ldr r2, [pc, #80] ; (80376f4 ) + 80376a2: fa22 f303 lsr.w r3, r2, r3 + 80376a6: 63fb str r3, [r7, #60] ; 0x3c + 80376a8: e01e b.n 80376e8 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 803766a: 4b11 ldr r3, [pc, #68] ; (80376b0 ) - 803766c: 681b ldr r3, [r3, #0] - 803766e: f403 7380 and.w r3, r3, #256 ; 0x100 - 8037672: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8037676: d106 bne.n 8037686 - 8037678: 6b7b ldr r3, [r7, #52] ; 0x34 - 803767a: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 803767e: d102 bne.n 8037686 + 80376aa: 4b11 ldr r3, [pc, #68] ; (80376f0 ) + 80376ac: 681b ldr r3, [r3, #0] + 80376ae: f403 7380 and.w r3, r3, #256 ; 0x100 + 80376b2: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 80376b6: d106 bne.n 80376c6 + 80376b8: 6b7b ldr r3, [r7, #52] ; 0x34 + 80376ba: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 80376be: d102 bne.n 80376c6 { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 8037680: 4b0d ldr r3, [pc, #52] ; (80376b8 ) - 8037682: 63fb str r3, [r7, #60] ; 0x3c - 8037684: e010 b.n 80376a8 + 80376c0: 4b0d ldr r3, [pc, #52] ; (80376f8 ) + 80376c2: 63fb str r3, [r7, #60] ; 0x3c + 80376c4: e010 b.n 80376e8 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 8037686: 4b0a ldr r3, [pc, #40] ; (80376b0 ) - 8037688: 681b ldr r3, [r3, #0] - 803768a: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 803768e: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8037692: d106 bne.n 80376a2 - 8037694: 6b7b ldr r3, [r7, #52] ; 0x34 - 8037696: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 803769a: d102 bne.n 80376a2 + 80376c6: 4b0a ldr r3, [pc, #40] ; (80376f0 ) + 80376c8: 681b ldr r3, [r3, #0] + 80376ca: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 80376ce: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 80376d2: d106 bne.n 80376e2 + 80376d4: 6b7b ldr r3, [r7, #52] ; 0x34 + 80376d6: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80376da: d102 bne.n 80376e2 { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 803769c: 4b07 ldr r3, [pc, #28] ; (80376bc ) - 803769e: 63fb str r3, [r7, #60] ; 0x3c - 80376a0: e002 b.n 80376a8 + 80376dc: 4b07 ldr r3, [pc, #28] ; (80376fc ) + 80376de: 63fb str r3, [r7, #60] ; 0x3c + 80376e0: e002 b.n 80376e8 } else { /* In Case the CKPER is disabled*/ frequency = 0; - 80376a2: 2300 movs r3, #0 - 80376a4: 63fb str r3, [r7, #60] ; 0x3c + 80376e2: 2300 movs r3, #0 + 80376e4: 63fb str r3, [r7, #60] ; 0x3c } break; - 80376a6: e245 b.n 8037b34 - 80376a8: e244 b.n 8037b34 + 80376e6: e245 b.n 8037b74 + 80376e8: e244 b.n 8037b74 } case RCC_SAI4BCLKSOURCE_PIN: /* External clock is the clock source for SAI4B */ { frequency = EXTERNAL_CLOCK_VALUE; - 80376aa: 4b05 ldr r3, [pc, #20] ; (80376c0 ) - 80376ac: 63fb str r3, [r7, #60] ; 0x3c + 80376ea: 4b05 ldr r3, [pc, #20] ; (8037700 ) + 80376ec: 63fb str r3, [r7, #60] ; 0x3c break; - 80376ae: e241 b.n 8037b34 - 80376b0: 58024400 .word 0x58024400 - 80376b4: 03d09000 .word 0x03d09000 - 80376b8: 003d0900 .word 0x003d0900 - 80376bc: 017d7840 .word 0x017d7840 - 80376c0: 00bb8000 .word 0x00bb8000 + 80376ee: e241 b.n 8037b74 + 80376f0: 58024400 .word 0x58024400 + 80376f4: 03d09000 .word 0x03d09000 + 80376f8: 003d0900 .word 0x003d0900 + 80376fc: 017d7840 .word 0x017d7840 + 8037700: 00bb8000 .word 0x00bb8000 } default : { frequency = 0; - 80376c4: 2300 movs r3, #0 - 80376c6: 63fb str r3, [r7, #60] ; 0x3c + 8037704: 2300 movs r3, #0 + 8037706: 63fb str r3, [r7, #60] ; 0x3c break; - 80376c8: e234 b.n 8037b34 + 8037708: e234 b.n 8037b74 } } } #endif /*SAI4*/ else if (PeriphClk == RCC_PERIPHCLK_SPI123) - 80376ca: 687b ldr r3, [r7, #4] - 80376cc: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 80376d0: f040 809c bne.w 803780c + 803770a: 687b ldr r3, [r7, #4] + 803770c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8037710: f040 809c bne.w 803784c { /* Get SPI1/2/3 clock source */ srcclk= __HAL_RCC_GET_SPI123_SOURCE(); - 80376d4: 4b9b ldr r3, [pc, #620] ; (8037944 ) - 80376d6: 6d1b ldr r3, [r3, #80] ; 0x50 - 80376d8: f403 43e0 and.w r3, r3, #28672 ; 0x7000 - 80376dc: 63bb str r3, [r7, #56] ; 0x38 + 8037714: 4b9b ldr r3, [pc, #620] ; (8037984 ) + 8037716: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037718: f403 43e0 and.w r3, r3, #28672 ; 0x7000 + 803771c: 63bb str r3, [r7, #56] ; 0x38 switch (srcclk) - 80376de: 6bbb ldr r3, [r7, #56] ; 0x38 - 80376e0: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 80376e4: d054 beq.n 8037790 - 80376e6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80376e8: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 80376ec: f200 808b bhi.w 8037806 - 80376f0: 6bbb ldr r3, [r7, #56] ; 0x38 - 80376f2: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 - 80376f6: f000 8083 beq.w 8037800 - 80376fa: 6bbb ldr r3, [r7, #56] ; 0x38 - 80376fc: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 - 8037700: f200 8081 bhi.w 8037806 - 8037704: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037706: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 803770a: d02f beq.n 803776c - 803770c: 6bbb ldr r3, [r7, #56] ; 0x38 - 803770e: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8037712: d878 bhi.n 8037806 - 8037714: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037716: 2b00 cmp r3, #0 - 8037718: d004 beq.n 8037724 - 803771a: 6bbb ldr r3, [r7, #56] ; 0x38 - 803771c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8037720: d012 beq.n 8037748 - 8037722: e070 b.n 8037806 + 803771e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037720: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8037724: d054 beq.n 80377d0 + 8037726: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037728: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 803772c: f200 808b bhi.w 8037846 + 8037730: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037732: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 + 8037736: f000 8083 beq.w 8037840 + 803773a: 6bbb ldr r3, [r7, #56] ; 0x38 + 803773c: f5b3 5f40 cmp.w r3, #12288 ; 0x3000 + 8037740: f200 8081 bhi.w 8037846 + 8037744: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037746: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 803774a: d02f beq.n 80377ac + 803774c: 6bbb ldr r3, [r7, #56] ; 0x38 + 803774e: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 8037752: d878 bhi.n 8037846 + 8037754: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037756: 2b00 cmp r3, #0 + 8037758: d004 beq.n 8037764 + 803775a: 6bbb ldr r3, [r7, #56] ; 0x38 + 803775c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8037760: d012 beq.n 8037788 + 8037762: e070 b.n 8037846 { case RCC_SPI123CLKSOURCE_PLL: /* PLL1 is the clock source for SPI123 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 8037724: 4b87 ldr r3, [pc, #540] ; (8037944 ) - 8037726: 681b ldr r3, [r3, #0] - 8037728: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 803772c: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8037730: d107 bne.n 8037742 + 8037764: 4b87 ldr r3, [pc, #540] ; (8037984 ) + 8037766: 681b ldr r3, [r3, #0] + 8037768: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 803776c: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8037770: d107 bne.n 8037782 { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 8037732: f107 0324 add.w r3, r7, #36 ; 0x24 - 8037736: 4618 mov r0, r3 - 8037738: f000 fcc8 bl 80380cc + 8037772: f107 0324 add.w r3, r7, #36 ; 0x24 + 8037776: 4618 mov r0, r3 + 8037778: f000 fcc8 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 803773c: 6abb ldr r3, [r7, #40] ; 0x28 - 803773e: 63fb str r3, [r7, #60] ; 0x3c + 803777c: 6abb ldr r3, [r7, #40] ; 0x28 + 803777e: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037740: e1f8 b.n 8037b34 + 8037780: e1f8 b.n 8037b74 frequency = 0; - 8037742: 2300 movs r3, #0 - 8037744: 63fb str r3, [r7, #60] ; 0x3c + 8037782: 2300 movs r3, #0 + 8037784: 63fb str r3, [r7, #60] ; 0x3c break; - 8037746: e1f5 b.n 8037b34 + 8037786: e1f5 b.n 8037b74 } case RCC_SPI123CLKSOURCE_PLL2: /* PLL2 is the clock source for SPI123 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 8037748: 4b7e ldr r3, [pc, #504] ; (8037944 ) - 803774a: 681b ldr r3, [r3, #0] - 803774c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8037750: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 8037754: d107 bne.n 8037766 + 8037788: 4b7e ldr r3, [pc, #504] ; (8037984 ) + 803778a: 681b ldr r3, [r3, #0] + 803778c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8037790: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 8037794: d107 bne.n 80377a6 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037756: f107 0318 add.w r3, r7, #24 - 803775a: 4618 mov r0, r3 - 803775c: f000 fa0e bl 8037b7c + 8037796: f107 0318 add.w r3, r7, #24 + 803779a: 4618 mov r0, r3 + 803779c: f000 fa0e bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 8037760: 69bb ldr r3, [r7, #24] - 8037762: 63fb str r3, [r7, #60] ; 0x3c + 80377a0: 69bb ldr r3, [r7, #24] + 80377a2: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037764: e1e6 b.n 8037b34 + 80377a4: e1e6 b.n 8037b74 frequency = 0; - 8037766: 2300 movs r3, #0 - 8037768: 63fb str r3, [r7, #60] ; 0x3c + 80377a6: 2300 movs r3, #0 + 80377a8: 63fb str r3, [r7, #60] ; 0x3c break; - 803776a: e1e3 b.n 8037b34 + 80377aa: e1e3 b.n 8037b74 } case RCC_SPI123CLKSOURCE_PLL3: /* PLL3 is the clock source for SPI123 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 803776c: 4b75 ldr r3, [pc, #468] ; (8037944 ) - 803776e: 681b ldr r3, [r3, #0] - 8037770: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8037774: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037778: d107 bne.n 803778a + 80377ac: 4b75 ldr r3, [pc, #468] ; (8037984 ) + 80377ae: 681b ldr r3, [r3, #0] + 80377b0: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 80377b4: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80377b8: d107 bne.n 80377ca { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803777a: f107 030c add.w r3, r7, #12 - 803777e: 4618 mov r0, r3 - 8037780: f000 fb50 bl 8037e24 + 80377ba: f107 030c add.w r3, r7, #12 + 80377be: 4618 mov r0, r3 + 80377c0: f000 fb50 bl 8037e64 frequency = pll3_clocks.PLL3_P_Frequency; - 8037784: 68fb ldr r3, [r7, #12] - 8037786: 63fb str r3, [r7, #60] ; 0x3c + 80377c4: 68fb ldr r3, [r7, #12] + 80377c6: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037788: e1d4 b.n 8037b34 + 80377c8: e1d4 b.n 8037b74 frequency = 0; - 803778a: 2300 movs r3, #0 - 803778c: 63fb str r3, [r7, #60] ; 0x3c + 80377ca: 2300 movs r3, #0 + 80377cc: 63fb str r3, [r7, #60] ; 0x3c break; - 803778e: e1d1 b.n 8037b34 + 80377ce: e1d1 b.n 8037b74 } case RCC_SPI123CLKSOURCE_CLKP: /* CKPER is the clock source for SPI123 */ { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 8037790: 4b6c ldr r3, [pc, #432] ; (8037944 ) - 8037792: 6cdb ldr r3, [r3, #76] ; 0x4c - 8037794: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 8037798: 637b str r3, [r7, #52] ; 0x34 + 80377d0: 4b6c ldr r3, [pc, #432] ; (8037984 ) + 80377d2: 6cdb ldr r3, [r3, #76] ; 0x4c + 80377d4: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 80377d8: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 803779a: 4b6a ldr r3, [pc, #424] ; (8037944 ) - 803779c: 681b ldr r3, [r3, #0] - 803779e: f003 0304 and.w r3, r3, #4 - 80377a2: 2b04 cmp r3, #4 - 80377a4: d10c bne.n 80377c0 - 80377a6: 6b7b ldr r3, [r7, #52] ; 0x34 - 80377a8: 2b00 cmp r3, #0 - 80377aa: d109 bne.n 80377c0 + 80377da: 4b6a ldr r3, [pc, #424] ; (8037984 ) + 80377dc: 681b ldr r3, [r3, #0] + 80377de: f003 0304 and.w r3, r3, #4 + 80377e2: 2b04 cmp r3, #4 + 80377e4: d10c bne.n 8037800 + 80377e6: 6b7b ldr r3, [r7, #52] ; 0x34 + 80377e8: 2b00 cmp r3, #0 + 80377ea: d109 bne.n 8037800 { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 80377ac: 4b65 ldr r3, [pc, #404] ; (8037944 ) - 80377ae: 681b ldr r3, [r3, #0] - 80377b0: 08db lsrs r3, r3, #3 - 80377b2: f003 0303 and.w r3, r3, #3 - 80377b6: 4a64 ldr r2, [pc, #400] ; (8037948 ) - 80377b8: fa22 f303 lsr.w r3, r2, r3 - 80377bc: 63fb str r3, [r7, #60] ; 0x3c - 80377be: e01e b.n 80377fe + 80377ec: 4b65 ldr r3, [pc, #404] ; (8037984 ) + 80377ee: 681b ldr r3, [r3, #0] + 80377f0: 08db lsrs r3, r3, #3 + 80377f2: f003 0303 and.w r3, r3, #3 + 80377f6: 4a64 ldr r2, [pc, #400] ; (8037988 ) + 80377f8: fa22 f303 lsr.w r3, r2, r3 + 80377fc: 63fb str r3, [r7, #60] ; 0x3c + 80377fe: e01e b.n 803783e } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 80377c0: 4b60 ldr r3, [pc, #384] ; (8037944 ) - 80377c2: 681b ldr r3, [r3, #0] - 80377c4: f403 7380 and.w r3, r3, #256 ; 0x100 - 80377c8: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80377cc: d106 bne.n 80377dc - 80377ce: 6b7b ldr r3, [r7, #52] ; 0x34 - 80377d0: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 80377d4: d102 bne.n 80377dc + 8037800: 4b60 ldr r3, [pc, #384] ; (8037984 ) + 8037802: 681b ldr r3, [r3, #0] + 8037804: f403 7380 and.w r3, r3, #256 ; 0x100 + 8037808: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803780c: d106 bne.n 803781c + 803780e: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037810: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8037814: d102 bne.n 803781c { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 80377d6: 4b5d ldr r3, [pc, #372] ; (803794c ) - 80377d8: 63fb str r3, [r7, #60] ; 0x3c - 80377da: e010 b.n 80377fe + 8037816: 4b5d ldr r3, [pc, #372] ; (803798c ) + 8037818: 63fb str r3, [r7, #60] ; 0x3c + 803781a: e010 b.n 803783e } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 80377dc: 4b59 ldr r3, [pc, #356] ; (8037944 ) - 80377de: 681b ldr r3, [r3, #0] - 80377e0: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80377e4: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80377e8: d106 bne.n 80377f8 - 80377ea: 6b7b ldr r3, [r7, #52] ; 0x34 - 80377ec: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80377f0: d102 bne.n 80377f8 + 803781c: 4b59 ldr r3, [pc, #356] ; (8037984 ) + 803781e: 681b ldr r3, [r3, #0] + 8037820: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8037824: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8037828: d106 bne.n 8037838 + 803782a: 6b7b ldr r3, [r7, #52] ; 0x34 + 803782c: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037830: d102 bne.n 8037838 { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 80377f2: 4b57 ldr r3, [pc, #348] ; (8037950 ) - 80377f4: 63fb str r3, [r7, #60] ; 0x3c - 80377f6: e002 b.n 80377fe + 8037832: 4b57 ldr r3, [pc, #348] ; (8037990 ) + 8037834: 63fb str r3, [r7, #60] ; 0x3c + 8037836: e002 b.n 803783e } else { /* In Case the CKPER is disabled*/ frequency = 0; - 80377f8: 2300 movs r3, #0 - 80377fa: 63fb str r3, [r7, #60] ; 0x3c + 8037838: 2300 movs r3, #0 + 803783a: 63fb str r3, [r7, #60] ; 0x3c } break; - 80377fc: e19a b.n 8037b34 - 80377fe: e199 b.n 8037b34 + 803783c: e19a b.n 8037b74 + 803783e: e199 b.n 8037b74 } case (RCC_SPI123CLKSOURCE_PIN): /* External clock is the clock source for I2S */ { frequency = EXTERNAL_CLOCK_VALUE; - 8037800: 4b54 ldr r3, [pc, #336] ; (8037954 ) - 8037802: 63fb str r3, [r7, #60] ; 0x3c + 8037840: 4b54 ldr r3, [pc, #336] ; (8037994 ) + 8037842: 63fb str r3, [r7, #60] ; 0x3c break; - 8037804: e196 b.n 8037b34 + 8037844: e196 b.n 8037b74 } default : { frequency = 0; - 8037806: 2300 movs r3, #0 - 8037808: 63fb str r3, [r7, #60] ; 0x3c + 8037846: 2300 movs r3, #0 + 8037848: 63fb str r3, [r7, #60] ; 0x3c break; - 803780a: e193 b.n 8037b34 + 803784a: e193 b.n 8037b74 } } } else if (PeriphClk == RCC_PERIPHCLK_ADC) - 803780c: 687b ldr r3, [r7, #4] - 803780e: f5b3 2f00 cmp.w r3, #524288 ; 0x80000 - 8037812: d173 bne.n 80378fc + 803784c: 687b ldr r3, [r7, #4] + 803784e: f5b3 2f00 cmp.w r3, #524288 ; 0x80000 + 8037852: d173 bne.n 803793c { /* Get ADC clock source */ srcclk= __HAL_RCC_GET_ADC_SOURCE(); - 8037814: 4b4b ldr r3, [pc, #300] ; (8037944 ) - 8037816: 6d9b ldr r3, [r3, #88] ; 0x58 - 8037818: f403 3340 and.w r3, r3, #196608 ; 0x30000 - 803781c: 63bb str r3, [r7, #56] ; 0x38 + 8037854: 4b4b ldr r3, [pc, #300] ; (8037984 ) + 8037856: 6d9b ldr r3, [r3, #88] ; 0x58 + 8037858: f403 3340 and.w r3, r3, #196608 ; 0x30000 + 803785c: 63bb str r3, [r7, #56] ; 0x38 switch (srcclk) - 803781e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037820: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8037824: d02f beq.n 8037886 - 8037826: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037828: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 803782c: d863 bhi.n 80378f6 - 803782e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037830: 2b00 cmp r3, #0 - 8037832: d004 beq.n 803783e - 8037834: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037836: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803783a: d012 beq.n 8037862 - 803783c: e05b b.n 80378f6 + 803785e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037860: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8037864: d02f beq.n 80378c6 + 8037866: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037868: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 803786c: d863 bhi.n 8037936 + 803786e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037870: 2b00 cmp r3, #0 + 8037872: d004 beq.n 803787e + 8037874: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037876: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803787a: d012 beq.n 80378a2 + 803787c: e05b b.n 8037936 { case RCC_ADCCLKSOURCE_PLL2: { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 803783e: 4b41 ldr r3, [pc, #260] ; (8037944 ) - 8037840: 681b ldr r3, [r3, #0] - 8037842: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8037846: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 803784a: d107 bne.n 803785c + 803787e: 4b41 ldr r3, [pc, #260] ; (8037984 ) + 8037880: 681b ldr r3, [r3, #0] + 8037882: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8037886: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 803788a: d107 bne.n 803789c { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 803784c: f107 0318 add.w r3, r7, #24 - 8037850: 4618 mov r0, r3 - 8037852: f000 f993 bl 8037b7c + 803788c: f107 0318 add.w r3, r7, #24 + 8037890: 4618 mov r0, r3 + 8037892: f000 f993 bl 8037bbc frequency = pll2_clocks.PLL2_P_Frequency; - 8037856: 69bb ldr r3, [r7, #24] - 8037858: 63fb str r3, [r7, #60] ; 0x3c + 8037896: 69bb ldr r3, [r7, #24] + 8037898: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 803785a: e16b b.n 8037b34 + 803789a: e16b b.n 8037b74 frequency = 0; - 803785c: 2300 movs r3, #0 - 803785e: 63fb str r3, [r7, #60] ; 0x3c + 803789c: 2300 movs r3, #0 + 803789e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037860: e168 b.n 8037b34 + 80378a0: e168 b.n 8037b74 } case RCC_ADCCLKSOURCE_PLL3: { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 8037862: 4b38 ldr r3, [pc, #224] ; (8037944 ) - 8037864: 681b ldr r3, [r3, #0] - 8037866: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 803786a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 803786e: d107 bne.n 8037880 + 80378a2: 4b38 ldr r3, [pc, #224] ; (8037984 ) + 80378a4: 681b ldr r3, [r3, #0] + 80378a6: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 80378aa: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 80378ae: d107 bne.n 80378c0 { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 8037870: f107 030c add.w r3, r7, #12 - 8037874: 4618 mov r0, r3 - 8037876: f000 fad5 bl 8037e24 + 80378b0: f107 030c add.w r3, r7, #12 + 80378b4: 4618 mov r0, r3 + 80378b6: f000 fad5 bl 8037e64 frequency = pll3_clocks.PLL3_R_Frequency; - 803787a: 697b ldr r3, [r7, #20] - 803787c: 63fb str r3, [r7, #60] ; 0x3c + 80378ba: 697b ldr r3, [r7, #20] + 80378bc: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 803787e: e159 b.n 8037b34 + 80378be: e159 b.n 8037b74 frequency = 0; - 8037880: 2300 movs r3, #0 - 8037882: 63fb str r3, [r7, #60] ; 0x3c + 80378c0: 2300 movs r3, #0 + 80378c2: 63fb str r3, [r7, #60] ; 0x3c break; - 8037884: e156 b.n 8037b34 + 80378c4: e156 b.n 8037b74 } case RCC_ADCCLKSOURCE_CLKP: { ckpclocksource= __HAL_RCC_GET_CLKP_SOURCE(); - 8037886: 4b2f ldr r3, [pc, #188] ; (8037944 ) - 8037888: 6cdb ldr r3, [r3, #76] ; 0x4c - 803788a: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 803788e: 637b str r3, [r7, #52] ; 0x34 + 80378c6: 4b2f ldr r3, [pc, #188] ; (8037984 ) + 80378c8: 6cdb ldr r3, [r3, #76] ; 0x4c + 80378ca: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 80378ce: 637b str r3, [r7, #52] ; 0x34 if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSI)) - 8037890: 4b2c ldr r3, [pc, #176] ; (8037944 ) - 8037892: 681b ldr r3, [r3, #0] - 8037894: f003 0304 and.w r3, r3, #4 - 8037898: 2b04 cmp r3, #4 - 803789a: d10c bne.n 80378b6 - 803789c: 6b7b ldr r3, [r7, #52] ; 0x34 - 803789e: 2b00 cmp r3, #0 - 80378a0: d109 bne.n 80378b6 + 80378d0: 4b2c ldr r3, [pc, #176] ; (8037984 ) + 80378d2: 681b ldr r3, [r3, #0] + 80378d4: f003 0304 and.w r3, r3, #4 + 80378d8: 2b04 cmp r3, #4 + 80378da: d10c bne.n 80378f6 + 80378dc: 6b7b ldr r3, [r7, #52] ; 0x34 + 80378de: 2b00 cmp r3, #0 + 80378e0: d109 bne.n 80378f6 { /* In Case the CKPER Source is HSI */ frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 80378a2: 4b28 ldr r3, [pc, #160] ; (8037944 ) - 80378a4: 681b ldr r3, [r3, #0] - 80378a6: 08db lsrs r3, r3, #3 - 80378a8: f003 0303 and.w r3, r3, #3 - 80378ac: 4a26 ldr r2, [pc, #152] ; (8037948 ) - 80378ae: fa22 f303 lsr.w r3, r2, r3 - 80378b2: 63fb str r3, [r7, #60] ; 0x3c - 80378b4: e01e b.n 80378f4 + 80378e2: 4b28 ldr r3, [pc, #160] ; (8037984 ) + 80378e4: 681b ldr r3, [r3, #0] + 80378e6: 08db lsrs r3, r3, #3 + 80378e8: f003 0303 and.w r3, r3, #3 + 80378ec: 4a26 ldr r2, [pc, #152] ; (8037988 ) + 80378ee: fa22 f303 lsr.w r3, r2, r3 + 80378f2: 63fb str r3, [r7, #60] ; 0x3c + 80378f4: e01e b.n 8037934 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) && (ckpclocksource == RCC_CLKPSOURCE_CSI)) - 80378b6: 4b23 ldr r3, [pc, #140] ; (8037944 ) - 80378b8: 681b ldr r3, [r3, #0] - 80378ba: f403 7380 and.w r3, r3, #256 ; 0x100 - 80378be: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 80378c2: d106 bne.n 80378d2 - 80378c4: 6b7b ldr r3, [r7, #52] ; 0x34 - 80378c6: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 80378ca: d102 bne.n 80378d2 + 80378f6: 4b23 ldr r3, [pc, #140] ; (8037984 ) + 80378f8: 681b ldr r3, [r3, #0] + 80378fa: f403 7380 and.w r3, r3, #256 ; 0x100 + 80378fe: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8037902: d106 bne.n 8037912 + 8037904: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037906: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 803790a: d102 bne.n 8037912 { /* In Case the CKPER Source is CSI */ frequency = CSI_VALUE; - 80378cc: 4b1f ldr r3, [pc, #124] ; (803794c ) - 80378ce: 63fb str r3, [r7, #60] ; 0x3c - 80378d0: e010 b.n 80378f4 + 803790c: 4b1f ldr r3, [pc, #124] ; (803798c ) + 803790e: 63fb str r3, [r7, #60] ; 0x3c + 8037910: e010 b.n 8037934 } else if ((HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) && (ckpclocksource == RCC_CLKPSOURCE_HSE)) - 80378d2: 4b1c ldr r3, [pc, #112] ; (8037944 ) - 80378d4: 681b ldr r3, [r3, #0] - 80378d6: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 80378da: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 80378de: d106 bne.n 80378ee - 80378e0: 6b7b ldr r3, [r7, #52] ; 0x34 - 80378e2: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80378e6: d102 bne.n 80378ee + 8037912: 4b1c ldr r3, [pc, #112] ; (8037984 ) + 8037914: 681b ldr r3, [r3, #0] + 8037916: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 803791a: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 803791e: d106 bne.n 803792e + 8037920: 6b7b ldr r3, [r7, #52] ; 0x34 + 8037922: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037926: d102 bne.n 803792e { /* In Case the CKPER Source is HSE */ frequency = HSE_VALUE; - 80378e8: 4b19 ldr r3, [pc, #100] ; (8037950 ) - 80378ea: 63fb str r3, [r7, #60] ; 0x3c - 80378ec: e002 b.n 80378f4 + 8037928: 4b19 ldr r3, [pc, #100] ; (8037990 ) + 803792a: 63fb str r3, [r7, #60] ; 0x3c + 803792c: e002 b.n 8037934 } else { /* In Case the CKPER is disabled*/ frequency = 0; - 80378ee: 2300 movs r3, #0 - 80378f0: 63fb str r3, [r7, #60] ; 0x3c + 803792e: 2300 movs r3, #0 + 8037930: 63fb str r3, [r7, #60] ; 0x3c } break; - 80378f2: e11f b.n 8037b34 - 80378f4: e11e b.n 8037b34 + 8037932: e11f b.n 8037b74 + 8037934: e11e b.n 8037b74 } default : { frequency = 0; - 80378f6: 2300 movs r3, #0 - 80378f8: 63fb str r3, [r7, #60] ; 0x3c + 8037936: 2300 movs r3, #0 + 8037938: 63fb str r3, [r7, #60] ; 0x3c break; - 80378fa: e11b b.n 8037b34 + 803793a: e11b b.n 8037b74 } } } else if (PeriphClk == RCC_PERIPHCLK_SDMMC) - 80378fc: 687b ldr r3, [r7, #4] - 80378fe: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8037902: d13e bne.n 8037982 + 803793c: 687b ldr r3, [r7, #4] + 803793e: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8037942: d13e bne.n 80379c2 { /* Get SDMMC clock source */ srcclk= __HAL_RCC_GET_SDMMC_SOURCE(); - 8037904: 4b0f ldr r3, [pc, #60] ; (8037944 ) - 8037906: 6cdb ldr r3, [r3, #76] ; 0x4c - 8037908: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 803790c: 63bb str r3, [r7, #56] ; 0x38 + 8037944: 4b0f ldr r3, [pc, #60] ; (8037984 ) + 8037946: 6cdb ldr r3, [r3, #76] ; 0x4c + 8037948: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 803794c: 63bb str r3, [r7, #56] ; 0x38 switch (srcclk) - 803790e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037910: 2b00 cmp r3, #0 - 8037912: d004 beq.n 803791e - 8037914: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037916: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803791a: d01d beq.n 8037958 - 803791c: e02e b.n 803797c + 803794e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037950: 2b00 cmp r3, #0 + 8037952: d004 beq.n 803795e + 8037954: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037956: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803795a: d01d beq.n 8037998 + 803795c: e02e b.n 80379bc { case RCC_SDMMCCLKSOURCE_PLL: /* PLL1 is the clock source for SDMMC */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 803791e: 4b09 ldr r3, [pc, #36] ; (8037944 ) - 8037920: 681b ldr r3, [r3, #0] - 8037922: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8037926: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 803792a: d107 bne.n 803793c + 803795e: 4b09 ldr r3, [pc, #36] ; (8037984 ) + 8037960: 681b ldr r3, [r3, #0] + 8037962: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8037966: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 803796a: d107 bne.n 803797c { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 803792c: f107 0324 add.w r3, r7, #36 ; 0x24 - 8037930: 4618 mov r0, r3 - 8037932: f000 fbcb bl 80380cc + 803796c: f107 0324 add.w r3, r7, #36 ; 0x24 + 8037970: 4618 mov r0, r3 + 8037972: f000 fbcb bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 8037936: 6abb ldr r3, [r7, #40] ; 0x28 - 8037938: 63fb str r3, [r7, #60] ; 0x3c + 8037976: 6abb ldr r3, [r7, #40] ; 0x28 + 8037978: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 803793a: e0fb b.n 8037b34 + 803797a: e0fb b.n 8037b74 frequency = 0; - 803793c: 2300 movs r3, #0 - 803793e: 63fb str r3, [r7, #60] ; 0x3c + 803797c: 2300 movs r3, #0 + 803797e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037940: e0f8 b.n 8037b34 - 8037942: bf00 nop - 8037944: 58024400 .word 0x58024400 - 8037948: 03d09000 .word 0x03d09000 - 803794c: 003d0900 .word 0x003d0900 - 8037950: 017d7840 .word 0x017d7840 - 8037954: 00bb8000 .word 0x00bb8000 + 8037980: e0f8 b.n 8037b74 + 8037982: bf00 nop + 8037984: 58024400 .word 0x58024400 + 8037988: 03d09000 .word 0x03d09000 + 803798c: 003d0900 .word 0x003d0900 + 8037990: 017d7840 .word 0x017d7840 + 8037994: 00bb8000 .word 0x00bb8000 } case RCC_SDMMCCLKSOURCE_PLL2: /* PLL2 is the clock source for SDMMC */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 8037958: 4b79 ldr r3, [pc, #484] ; (8037b40 ) - 803795a: 681b ldr r3, [r3, #0] - 803795c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8037960: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 8037964: d107 bne.n 8037976 + 8037998: 4b79 ldr r3, [pc, #484] ; (8037b80 ) + 803799a: 681b ldr r3, [r3, #0] + 803799c: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 80379a0: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 80379a4: d107 bne.n 80379b6 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037966: f107 0318 add.w r3, r7, #24 - 803796a: 4618 mov r0, r3 - 803796c: f000 f906 bl 8037b7c + 80379a6: f107 0318 add.w r3, r7, #24 + 80379aa: 4618 mov r0, r3 + 80379ac: f000 f906 bl 8037bbc frequency = pll2_clocks.PLL2_R_Frequency; - 8037970: 6a3b ldr r3, [r7, #32] - 8037972: 63fb str r3, [r7, #60] ; 0x3c + 80379b0: 6a3b ldr r3, [r7, #32] + 80379b2: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037974: e0de b.n 8037b34 + 80379b4: e0de b.n 8037b74 frequency = 0; - 8037976: 2300 movs r3, #0 - 8037978: 63fb str r3, [r7, #60] ; 0x3c + 80379b6: 2300 movs r3, #0 + 80379b8: 63fb str r3, [r7, #60] ; 0x3c break; - 803797a: e0db b.n 8037b34 + 80379ba: e0db b.n 8037b74 } default : { frequency = 0; - 803797c: 2300 movs r3, #0 - 803797e: 63fb str r3, [r7, #60] ; 0x3c + 80379bc: 2300 movs r3, #0 + 80379be: 63fb str r3, [r7, #60] ; 0x3c break; - 8037980: e0d8 b.n 8037b34 + 80379c0: e0d8 b.n 8037b74 } } } else if (PeriphClk == RCC_PERIPHCLK_SPI6) - 8037982: 687b ldr r3, [r7, #4] - 8037984: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8037988: f040 8085 bne.w 8037a96 + 80379c2: 687b ldr r3, [r7, #4] + 80379c4: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 80379c8: f040 8085 bne.w 8037ad6 { /* Get SPI6 clock source */ srcclk= __HAL_RCC_GET_SPI6_SOURCE(); - 803798c: 4b6c ldr r3, [pc, #432] ; (8037b40 ) - 803798e: 6d9b ldr r3, [r3, #88] ; 0x58 - 8037990: f003 43e0 and.w r3, r3, #1879048192 ; 0x70000000 - 8037994: 63bb str r3, [r7, #56] ; 0x38 + 80379cc: 4b6c ldr r3, [pc, #432] ; (8037b80 ) + 80379ce: 6d9b ldr r3, [r3, #88] ; 0x58 + 80379d0: f003 43e0 and.w r3, r3, #1879048192 ; 0x70000000 + 80379d4: 63bb str r3, [r7, #56] ; 0x38 switch (srcclk) - 8037996: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037998: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 803799c: d06b beq.n 8037a76 - 803799e: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379a0: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 - 80379a4: d874 bhi.n 8037a90 - 80379a6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379a8: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 80379ac: d056 beq.n 8037a5c - 80379ae: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379b0: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 80379b4: d86c bhi.n 8037a90 - 80379b6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379b8: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 80379bc: d03b beq.n 8037a36 - 80379be: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379c0: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 - 80379c4: d864 bhi.n 8037a90 - 80379c6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379c8: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80379cc: d021 beq.n 8037a12 - 80379ce: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379d0: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 80379d4: d85c bhi.n 8037a90 80379d6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379d8: 2b00 cmp r3, #0 - 80379da: d004 beq.n 80379e6 - 80379dc: 6bbb ldr r3, [r7, #56] ; 0x38 - 80379de: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 80379e2: d004 beq.n 80379ee - 80379e4: e054 b.n 8037a90 + 80379d8: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 80379dc: d06b beq.n 8037ab6 + 80379de: 6bbb ldr r3, [r7, #56] ; 0x38 + 80379e0: f1b3 4fa0 cmp.w r3, #1342177280 ; 0x50000000 + 80379e4: d874 bhi.n 8037ad0 + 80379e6: 6bbb ldr r3, [r7, #56] ; 0x38 + 80379e8: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 80379ec: d056 beq.n 8037a9c + 80379ee: 6bbb ldr r3, [r7, #56] ; 0x38 + 80379f0: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 80379f4: d86c bhi.n 8037ad0 + 80379f6: 6bbb ldr r3, [r7, #56] ; 0x38 + 80379f8: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 80379fc: d03b beq.n 8037a76 + 80379fe: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037a00: f1b3 5f40 cmp.w r3, #805306368 ; 0x30000000 + 8037a04: d864 bhi.n 8037ad0 + 8037a06: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037a08: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037a0c: d021 beq.n 8037a52 + 8037a0e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037a10: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037a14: d85c bhi.n 8037ad0 + 8037a16: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037a18: 2b00 cmp r3, #0 + 8037a1a: d004 beq.n 8037a26 + 8037a1c: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037a1e: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8037a22: d004 beq.n 8037a2e + 8037a24: e054 b.n 8037ad0 { case RCC_SPI6CLKSOURCE_D3PCLK1: /* D3PCLK1 (PCLK4) is the clock source for SPI6 */ { frequency = HAL_RCCEx_GetD3PCLK1Freq(); - 80379e6: f000 f8b3 bl 8037b50 - 80379ea: 63f8 str r0, [r7, #60] ; 0x3c + 8037a26: f000 f8b3 bl 8037b90 + 8037a2a: 63f8 str r0, [r7, #60] ; 0x3c break; - 80379ec: e0a2 b.n 8037b34 + 8037a2c: e0a2 b.n 8037b74 } case RCC_SPI6CLKSOURCE_PLL2: /* PLL2 is the clock source for SPI6 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 80379ee: 4b54 ldr r3, [pc, #336] ; (8037b40 ) - 80379f0: 681b ldr r3, [r3, #0] - 80379f2: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 80379f6: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 80379fa: d107 bne.n 8037a0c + 8037a2e: 4b54 ldr r3, [pc, #336] ; (8037b80 ) + 8037a30: 681b ldr r3, [r3, #0] + 8037a32: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8037a36: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 8037a3a: d107 bne.n 8037a4c { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 80379fc: f107 0318 add.w r3, r7, #24 - 8037a00: 4618 mov r0, r3 - 8037a02: f000 f8bb bl 8037b7c + 8037a3c: f107 0318 add.w r3, r7, #24 + 8037a40: 4618 mov r0, r3 + 8037a42: f000 f8bb bl 8037bbc frequency = pll2_clocks.PLL2_Q_Frequency; - 8037a06: 69fb ldr r3, [r7, #28] - 8037a08: 63fb str r3, [r7, #60] ; 0x3c + 8037a46: 69fb ldr r3, [r7, #28] + 8037a48: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037a0a: e093 b.n 8037b34 + 8037a4a: e093 b.n 8037b74 frequency = 0; - 8037a0c: 2300 movs r3, #0 - 8037a0e: 63fb str r3, [r7, #60] ; 0x3c + 8037a4c: 2300 movs r3, #0 + 8037a4e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a10: e090 b.n 8037b34 + 8037a50: e090 b.n 8037b74 } case RCC_SPI6CLKSOURCE_PLL3: /* PLL3 is the clock source for SPI6 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL3RDY)) - 8037a12: 4b4b ldr r3, [pc, #300] ; (8037b40 ) - 8037a14: 681b ldr r3, [r3, #0] - 8037a16: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8037a1a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037a1e: d107 bne.n 8037a30 + 8037a52: 4b4b ldr r3, [pc, #300] ; (8037b80 ) + 8037a54: 681b ldr r3, [r3, #0] + 8037a56: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 8037a5a: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037a5e: d107 bne.n 8037a70 { HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 8037a20: f107 030c add.w r3, r7, #12 - 8037a24: 4618 mov r0, r3 - 8037a26: f000 f9fd bl 8037e24 + 8037a60: f107 030c add.w r3, r7, #12 + 8037a64: 4618 mov r0, r3 + 8037a66: f000 f9fd bl 8037e64 frequency = pll3_clocks.PLL3_Q_Frequency; - 8037a2a: 693b ldr r3, [r7, #16] - 8037a2c: 63fb str r3, [r7, #60] ; 0x3c + 8037a6a: 693b ldr r3, [r7, #16] + 8037a6c: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037a2e: e081 b.n 8037b34 + 8037a6e: e081 b.n 8037b74 frequency = 0; - 8037a30: 2300 movs r3, #0 - 8037a32: 63fb str r3, [r7, #60] ; 0x3c + 8037a70: 2300 movs r3, #0 + 8037a72: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a34: e07e b.n 8037b34 + 8037a74: e07e b.n 8037b74 } case RCC_SPI6CLKSOURCE_HSI: /* HSI is the clock source for SPI6 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSIRDY)) - 8037a36: 4b42 ldr r3, [pc, #264] ; (8037b40 ) - 8037a38: 681b ldr r3, [r3, #0] - 8037a3a: f003 0304 and.w r3, r3, #4 - 8037a3e: 2b04 cmp r3, #4 - 8037a40: d109 bne.n 8037a56 + 8037a76: 4b42 ldr r3, [pc, #264] ; (8037b80 ) + 8037a78: 681b ldr r3, [r3, #0] + 8037a7a: f003 0304 and.w r3, r3, #4 + 8037a7e: 2b04 cmp r3, #4 + 8037a80: d109 bne.n 8037a96 { frequency = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037a42: 4b3f ldr r3, [pc, #252] ; (8037b40 ) - 8037a44: 681b ldr r3, [r3, #0] - 8037a46: 08db lsrs r3, r3, #3 - 8037a48: f003 0303 and.w r3, r3, #3 - 8037a4c: 4a3d ldr r2, [pc, #244] ; (8037b44 ) - 8037a4e: fa22 f303 lsr.w r3, r2, r3 - 8037a52: 63fb str r3, [r7, #60] ; 0x3c + 8037a82: 4b3f ldr r3, [pc, #252] ; (8037b80 ) + 8037a84: 681b ldr r3, [r3, #0] + 8037a86: 08db lsrs r3, r3, #3 + 8037a88: f003 0303 and.w r3, r3, #3 + 8037a8c: 4a3d ldr r2, [pc, #244] ; (8037b84 ) + 8037a8e: fa22 f303 lsr.w r3, r2, r3 + 8037a92: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037a54: e06e b.n 8037b34 + 8037a94: e06e b.n 8037b74 frequency = 0; - 8037a56: 2300 movs r3, #0 - 8037a58: 63fb str r3, [r7, #60] ; 0x3c + 8037a96: 2300 movs r3, #0 + 8037a98: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a5a: e06b b.n 8037b34 + 8037a9a: e06b b.n 8037b74 } case RCC_SPI6CLKSOURCE_CSI: /* CSI is the clock source for SPI6 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_CSIRDY)) - 8037a5c: 4b38 ldr r3, [pc, #224] ; (8037b40 ) - 8037a5e: 681b ldr r3, [r3, #0] - 8037a60: f403 7380 and.w r3, r3, #256 ; 0x100 - 8037a64: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8037a68: d102 bne.n 8037a70 + 8037a9c: 4b38 ldr r3, [pc, #224] ; (8037b80 ) + 8037a9e: 681b ldr r3, [r3, #0] + 8037aa0: f403 7380 and.w r3, r3, #256 ; 0x100 + 8037aa4: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8037aa8: d102 bne.n 8037ab0 { frequency = CSI_VALUE; - 8037a6a: 4b37 ldr r3, [pc, #220] ; (8037b48 ) - 8037a6c: 63fb str r3, [r7, #60] ; 0x3c + 8037aaa: 4b37 ldr r3, [pc, #220] ; (8037b88 ) + 8037aac: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037a6e: e061 b.n 8037b34 + 8037aae: e061 b.n 8037b74 frequency = 0; - 8037a70: 2300 movs r3, #0 - 8037a72: 63fb str r3, [r7, #60] ; 0x3c + 8037ab0: 2300 movs r3, #0 + 8037ab2: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a74: e05e b.n 8037b34 + 8037ab4: e05e b.n 8037b74 } case RCC_SPI6CLKSOURCE_HSE: /* HSE is the clock source for SPI6 */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) - 8037a76: 4b32 ldr r3, [pc, #200] ; (8037b40 ) - 8037a78: 681b ldr r3, [r3, #0] - 8037a7a: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8037a7e: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8037a82: d102 bne.n 8037a8a + 8037ab6: 4b32 ldr r3, [pc, #200] ; (8037b80 ) + 8037ab8: 681b ldr r3, [r3, #0] + 8037aba: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8037abe: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8037ac2: d102 bne.n 8037aca { frequency = HSE_VALUE; - 8037a84: 4b31 ldr r3, [pc, #196] ; (8037b4c ) - 8037a86: 63fb str r3, [r7, #60] ; 0x3c + 8037ac4: 4b31 ldr r3, [pc, #196] ; (8037b8c ) + 8037ac6: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037a88: e054 b.n 8037b34 + 8037ac8: e054 b.n 8037b74 frequency = 0; - 8037a8a: 2300 movs r3, #0 - 8037a8c: 63fb str r3, [r7, #60] ; 0x3c + 8037aca: 2300 movs r3, #0 + 8037acc: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a8e: e051 b.n 8037b34 + 8037ace: e051 b.n 8037b74 break; } #endif /* RCC_SPI6CLKSOURCE_PIN */ default : { frequency = 0; - 8037a90: 2300 movs r3, #0 - 8037a92: 63fb str r3, [r7, #60] ; 0x3c + 8037ad0: 2300 movs r3, #0 + 8037ad2: 63fb str r3, [r7, #60] ; 0x3c break; - 8037a94: e04e b.n 8037b34 + 8037ad4: e04e b.n 8037b74 } } } else if (PeriphClk == RCC_PERIPHCLK_FDCAN) - 8037a96: 687b ldr r3, [r7, #4] - 8037a98: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 8037a9c: d148 bne.n 8037b30 + 8037ad6: 687b ldr r3, [r7, #4] + 8037ad8: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 8037adc: d148 bne.n 8037b70 { /* Get FDCAN clock source */ srcclk= __HAL_RCC_GET_FDCAN_SOURCE(); - 8037a9e: 4b28 ldr r3, [pc, #160] ; (8037b40 ) - 8037aa0: 6d1b ldr r3, [r3, #80] ; 0x50 - 8037aa2: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 - 8037aa6: 63bb str r3, [r7, #56] ; 0x38 + 8037ade: 4b28 ldr r3, [pc, #160] ; (8037b80 ) + 8037ae0: 6d1b ldr r3, [r3, #80] ; 0x50 + 8037ae2: f003 5340 and.w r3, r3, #805306368 ; 0x30000000 + 8037ae6: 63bb str r3, [r7, #56] ; 0x38 switch (srcclk) - 8037aa8: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037aaa: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037aae: d02a beq.n 8037b06 - 8037ab0: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037ab2: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 8037ab6: d838 bhi.n 8037b2a - 8037ab8: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037aba: 2b00 cmp r3, #0 - 8037abc: d004 beq.n 8037ac8 - 8037abe: 6bbb ldr r3, [r7, #56] ; 0x38 - 8037ac0: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 8037ac4: d00d beq.n 8037ae2 - 8037ac6: e030 b.n 8037b2a + 8037ae8: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037aea: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037aee: d02a beq.n 8037b46 + 8037af0: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037af2: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 8037af6: d838 bhi.n 8037b6a + 8037af8: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037afa: 2b00 cmp r3, #0 + 8037afc: d004 beq.n 8037b08 + 8037afe: 6bbb ldr r3, [r7, #56] ; 0x38 + 8037b00: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 8037b04: d00d beq.n 8037b22 + 8037b06: e030 b.n 8037b6a { case RCC_FDCANCLKSOURCE_HSE: /* HSE is the clock source for FDCAN */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_HSERDY)) - 8037ac8: 4b1d ldr r3, [pc, #116] ; (8037b40 ) - 8037aca: 681b ldr r3, [r3, #0] - 8037acc: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 8037ad0: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 - 8037ad4: d102 bne.n 8037adc + 8037b08: 4b1d ldr r3, [pc, #116] ; (8037b80 ) + 8037b0a: 681b ldr r3, [r3, #0] + 8037b0c: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 8037b10: f5b3 3f00 cmp.w r3, #131072 ; 0x20000 + 8037b14: d102 bne.n 8037b1c { frequency = HSE_VALUE; - 8037ad6: 4b1d ldr r3, [pc, #116] ; (8037b4c ) - 8037ad8: 63fb str r3, [r7, #60] ; 0x3c + 8037b16: 4b1d ldr r3, [pc, #116] ; (8037b8c ) + 8037b18: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037ada: e02b b.n 8037b34 + 8037b1a: e02b b.n 8037b74 frequency = 0; - 8037adc: 2300 movs r3, #0 - 8037ade: 63fb str r3, [r7, #60] ; 0x3c + 8037b1c: 2300 movs r3, #0 + 8037b1e: 63fb str r3, [r7, #60] ; 0x3c break; - 8037ae0: e028 b.n 8037b34 + 8037b20: e028 b.n 8037b74 } case RCC_FDCANCLKSOURCE_PLL: /* PLL is the clock source for FDCAN */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL1RDY)) - 8037ae2: 4b17 ldr r3, [pc, #92] ; (8037b40 ) - 8037ae4: 681b ldr r3, [r3, #0] - 8037ae6: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 - 8037aea: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 - 8037aee: d107 bne.n 8037b00 + 8037b22: 4b17 ldr r3, [pc, #92] ; (8037b80 ) + 8037b24: 681b ldr r3, [r3, #0] + 8037b26: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 8037b2a: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 8037b2e: d107 bne.n 8037b40 { HAL_RCCEx_GetPLL1ClockFreq(&pll1_clocks); - 8037af0: f107 0324 add.w r3, r7, #36 ; 0x24 - 8037af4: 4618 mov r0, r3 - 8037af6: f000 fae9 bl 80380cc + 8037b30: f107 0324 add.w r3, r7, #36 ; 0x24 + 8037b34: 4618 mov r0, r3 + 8037b36: f000 fae9 bl 803810c frequency = pll1_clocks.PLL1_Q_Frequency; - 8037afa: 6abb ldr r3, [r7, #40] ; 0x28 - 8037afc: 63fb str r3, [r7, #60] ; 0x3c + 8037b3a: 6abb ldr r3, [r7, #40] ; 0x28 + 8037b3c: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037afe: e019 b.n 8037b34 + 8037b3e: e019 b.n 8037b74 frequency = 0; - 8037b00: 2300 movs r3, #0 - 8037b02: 63fb str r3, [r7, #60] ; 0x3c + 8037b40: 2300 movs r3, #0 + 8037b42: 63fb str r3, [r7, #60] ; 0x3c break; - 8037b04: e016 b.n 8037b34 + 8037b44: e016 b.n 8037b74 } case RCC_FDCANCLKSOURCE_PLL2: /* PLL2 is the clock source for FDCAN */ { if (HAL_IS_BIT_SET(RCC->CR, RCC_CR_PLL2RDY)) - 8037b06: 4b0e ldr r3, [pc, #56] ; (8037b40 ) - 8037b08: 681b ldr r3, [r3, #0] - 8037b0a: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 8037b0e: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 - 8037b12: d107 bne.n 8037b24 + 8037b46: 4b0e ldr r3, [pc, #56] ; (8037b80 ) + 8037b48: 681b ldr r3, [r3, #0] + 8037b4a: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 8037b4e: f1b3 6f00 cmp.w r3, #134217728 ; 0x8000000 + 8037b52: d107 bne.n 8037b64 { HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 8037b14: f107 0318 add.w r3, r7, #24 - 8037b18: 4618 mov r0, r3 - 8037b1a: f000 f82f bl 8037b7c + 8037b54: f107 0318 add.w r3, r7, #24 + 8037b58: 4618 mov r0, r3 + 8037b5a: f000 f82f bl 8037bbc frequency = pll2_clocks.PLL2_Q_Frequency; - 8037b1e: 69fb ldr r3, [r7, #28] - 8037b20: 63fb str r3, [r7, #60] ; 0x3c + 8037b5e: 69fb ldr r3, [r7, #28] + 8037b60: 63fb str r3, [r7, #60] ; 0x3c } else { frequency = 0; } break; - 8037b22: e007 b.n 8037b34 + 8037b62: e007 b.n 8037b74 frequency = 0; - 8037b24: 2300 movs r3, #0 - 8037b26: 63fb str r3, [r7, #60] ; 0x3c + 8037b64: 2300 movs r3, #0 + 8037b66: 63fb str r3, [r7, #60] ; 0x3c break; - 8037b28: e004 b.n 8037b34 + 8037b68: e004 b.n 8037b74 } default : { frequency = 0; - 8037b2a: 2300 movs r3, #0 - 8037b2c: 63fb str r3, [r7, #60] ; 0x3c + 8037b6a: 2300 movs r3, #0 + 8037b6c: 63fb str r3, [r7, #60] ; 0x3c break; - 8037b2e: e001 b.n 8037b34 + 8037b6e: e001 b.n 8037b74 } } } else { frequency = 0; - 8037b30: 2300 movs r3, #0 - 8037b32: 63fb str r3, [r7, #60] ; 0x3c + 8037b70: 2300 movs r3, #0 + 8037b72: 63fb str r3, [r7, #60] ; 0x3c } return frequency; - 8037b34: 6bfb ldr r3, [r7, #60] ; 0x3c -} - 8037b36: 4618 mov r0, r3 - 8037b38: 3740 adds r7, #64 ; 0x40 - 8037b3a: 46bd mov sp, r7 - 8037b3c: bd80 pop {r7, pc} - 8037b3e: bf00 nop - 8037b40: 58024400 .word 0x58024400 - 8037b44: 03d09000 .word 0x03d09000 - 8037b48: 003d0900 .word 0x003d0900 - 8037b4c: 017d7840 .word 0x017d7840 - -08037b50 : + 8037b74: 6bfb ldr r3, [r7, #60] ; 0x3c +} + 8037b76: 4618 mov r0, r3 + 8037b78: 3740 adds r7, #64 ; 0x40 + 8037b7a: 46bd mov sp, r7 + 8037b7c: bd80 pop {r7, pc} + 8037b7e: bf00 nop + 8037b80: 58024400 .word 0x58024400 + 8037b84: 03d09000 .word 0x03d09000 + 8037b88: 003d0900 .word 0x003d0900 + 8037b8c: 017d7840 .word 0x017d7840 + +08037b90 : * @note Each time D3PCLK1 changes, this function must be called to update the * right D3PCLK1 value. Otherwise, any configuration based on this function will be incorrect. * @retval D3PCLK1 frequency */ uint32_t HAL_RCCEx_GetD3PCLK1Freq(void) { - 8037b50: b580 push {r7, lr} - 8037b52: af00 add r7, sp, #0 + 8037b90: b580 push {r7, lr} + 8037b92: af00 add r7, sp, #0 #if defined(RCC_D3CFGR_D3PPRE) /* Get HCLK source and Compute D3PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->D3CFGR & RCC_D3CFGR_D3PPRE)>> RCC_D3CFGR_D3PPRE_Pos] & 0x1FU)); - 8037b54: f7fe fb6c bl 8036230 - 8037b58: 4602 mov r2, r0 - 8037b5a: 4b06 ldr r3, [pc, #24] ; (8037b74 ) - 8037b5c: 6a1b ldr r3, [r3, #32] - 8037b5e: 091b lsrs r3, r3, #4 - 8037b60: f003 0307 and.w r3, r3, #7 - 8037b64: 4904 ldr r1, [pc, #16] ; (8037b78 ) - 8037b66: 5ccb ldrb r3, [r1, r3] - 8037b68: f003 031f and.w r3, r3, #31 - 8037b6c: fa22 f303 lsr.w r3, r2, r3 + 8037b94: f7fe fb6c bl 8036270 + 8037b98: 4602 mov r2, r0 + 8037b9a: 4b06 ldr r3, [pc, #24] ; (8037bb4 ) + 8037b9c: 6a1b ldr r3, [r3, #32] + 8037b9e: 091b lsrs r3, r3, #4 + 8037ba0: f003 0307 and.w r3, r3, #7 + 8037ba4: 4904 ldr r1, [pc, #16] ; (8037bb8 ) + 8037ba6: 5ccb ldrb r3, [r1, r3] + 8037ba8: f003 031f and.w r3, r3, #31 + 8037bac: fa22 f303 lsr.w r3, r2, r3 #else /* Get HCLK source and Compute D3PCLK1 frequency ---------------------------*/ return (HAL_RCC_GetHCLKFreq() >> (D1CorePrescTable[(RCC->SRDCFGR & RCC_SRDCFGR_SRDPPRE)>> RCC_SRDCFGR_SRDPPRE_Pos] & 0x1FU)); #endif } - 8037b70: 4618 mov r0, r3 - 8037b72: bd80 pop {r7, pc} - 8037b74: 58024400 .word 0x58024400 - 8037b78: 0804d35c .word 0x0804d35c + 8037bb0: 4618 mov r0, r3 + 8037bb2: bd80 pop {r7, pc} + 8037bb4: 58024400 .word 0x58024400 + 8037bb8: 0804d39c .word 0x0804d39c -08037b7c : +08037bbc : * right PLL2CLK value. Otherwise, any configuration based on this function will be incorrect. * @param PLL2_Clocks structure. * @retval None */ void HAL_RCCEx_GetPLL2ClockFreq(PLL2_ClocksTypeDef* PLL2_Clocks) { - 8037b7c: b480 push {r7} - 8037b7e: b089 sub sp, #36 ; 0x24 - 8037b80: af00 add r7, sp, #0 - 8037b82: 6078 str r0, [r7, #4] + 8037bbc: b480 push {r7} + 8037bbe: b089 sub sp, #36 ; 0x24 + 8037bc0: af00 add r7, sp, #0 + 8037bc2: 6078 str r0, [r7, #4] float_t fracn2, pll2vco; /* PLL_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLL2M) * PLL2N PLL2xCLK = PLL2_VCO / PLL2x */ pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC); - 8037b84: 4ba1 ldr r3, [pc, #644] ; (8037e0c ) - 8037b86: 6a9b ldr r3, [r3, #40] ; 0x28 - 8037b88: f003 0303 and.w r3, r3, #3 - 8037b8c: 61bb str r3, [r7, #24] + 8037bc4: 4ba1 ldr r3, [pc, #644] ; (8037e4c ) + 8037bc6: 6a9b ldr r3, [r3, #40] ; 0x28 + 8037bc8: f003 0303 and.w r3, r3, #3 + 8037bcc: 61bb str r3, [r7, #24] pll2m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM2)>> 12); - 8037b8e: 4b9f ldr r3, [pc, #636] ; (8037e0c ) - 8037b90: 6a9b ldr r3, [r3, #40] ; 0x28 - 8037b92: 0b1b lsrs r3, r3, #12 - 8037b94: f003 033f and.w r3, r3, #63 ; 0x3f - 8037b98: 617b str r3, [r7, #20] + 8037bce: 4b9f ldr r3, [pc, #636] ; (8037e4c ) + 8037bd0: 6a9b ldr r3, [r3, #40] ; 0x28 + 8037bd2: 0b1b lsrs r3, r3, #12 + 8037bd4: f003 033f and.w r3, r3, #63 ; 0x3f + 8037bd8: 617b str r3, [r7, #20] pll2fracen = (RCC->PLLCFGR & RCC_PLLCFGR_PLL2FRACEN) >> RCC_PLLCFGR_PLL2FRACEN_Pos; - 8037b9a: 4b9c ldr r3, [pc, #624] ; (8037e0c ) - 8037b9c: 6adb ldr r3, [r3, #44] ; 0x2c - 8037b9e: 091b lsrs r3, r3, #4 - 8037ba0: f003 0301 and.w r3, r3, #1 - 8037ba4: 613b str r3, [r7, #16] + 8037bda: 4b9c ldr r3, [pc, #624] ; (8037e4c ) + 8037bdc: 6adb ldr r3, [r3, #44] ; 0x2c + 8037bde: 091b lsrs r3, r3, #4 + 8037be0: f003 0301 and.w r3, r3, #1 + 8037be4: 613b str r3, [r7, #16] fracn2 =(float_t)(uint32_t)(pll2fracen* ((RCC->PLL2FRACR & RCC_PLL2FRACR_FRACN2)>> 3)); - 8037ba6: 4b99 ldr r3, [pc, #612] ; (8037e0c ) - 8037ba8: 6bdb ldr r3, [r3, #60] ; 0x3c - 8037baa: 08db lsrs r3, r3, #3 - 8037bac: f3c3 030c ubfx r3, r3, #0, #13 - 8037bb0: 693a ldr r2, [r7, #16] - 8037bb2: fb02 f303 mul.w r3, r2, r3 - 8037bb6: ee07 3a90 vmov s15, r3 - 8037bba: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037bbe: edc7 7a03 vstr s15, [r7, #12] + 8037be6: 4b99 ldr r3, [pc, #612] ; (8037e4c ) + 8037be8: 6bdb ldr r3, [r3, #60] ; 0x3c + 8037bea: 08db lsrs r3, r3, #3 + 8037bec: f3c3 030c ubfx r3, r3, #0, #13 + 8037bf0: 693a ldr r2, [r7, #16] + 8037bf2: fb02 f303 mul.w r3, r2, r3 + 8037bf6: ee07 3a90 vmov s15, r3 + 8037bfa: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037bfe: edc7 7a03 vstr s15, [r7, #12] if (pll2m != 0U) - 8037bc2: 697b ldr r3, [r7, #20] - 8037bc4: 2b00 cmp r3, #0 - 8037bc6: f000 8111 beq.w 8037dec + 8037c02: 697b ldr r3, [r7, #20] + 8037c04: 2b00 cmp r3, #0 + 8037c06: f000 8111 beq.w 8037e2c { switch (pllsource) - 8037bca: 69bb ldr r3, [r7, #24] - 8037bcc: 2b02 cmp r3, #2 - 8037bce: f000 8083 beq.w 8037cd8 - 8037bd2: 69bb ldr r3, [r7, #24] - 8037bd4: 2b02 cmp r3, #2 - 8037bd6: f200 80a1 bhi.w 8037d1c - 8037bda: 69bb ldr r3, [r7, #24] - 8037bdc: 2b00 cmp r3, #0 - 8037bde: d003 beq.n 8037be8 - 8037be0: 69bb ldr r3, [r7, #24] - 8037be2: 2b01 cmp r3, #1 - 8037be4: d056 beq.n 8037c94 - 8037be6: e099 b.n 8037d1c + 8037c0a: 69bb ldr r3, [r7, #24] + 8037c0c: 2b02 cmp r3, #2 + 8037c0e: f000 8083 beq.w 8037d18 + 8037c12: 69bb ldr r3, [r7, #24] + 8037c14: 2b02 cmp r3, #2 + 8037c16: f200 80a1 bhi.w 8037d5c + 8037c1a: 69bb ldr r3, [r7, #24] + 8037c1c: 2b00 cmp r3, #0 + 8037c1e: d003 beq.n 8037c28 + 8037c20: 69bb ldr r3, [r7, #24] + 8037c22: 2b01 cmp r3, #1 + 8037c24: d056 beq.n 8037cd4 + 8037c26: e099 b.n 8037d5c { case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 8037be8: 4b88 ldr r3, [pc, #544] ; (8037e0c ) - 8037bea: 681b ldr r3, [r3, #0] - 8037bec: f003 0320 and.w r3, r3, #32 - 8037bf0: 2b00 cmp r3, #0 - 8037bf2: d02d beq.n 8037c50 + 8037c28: 4b88 ldr r3, [pc, #544] ; (8037e4c ) + 8037c2a: 681b ldr r3, [r3, #0] + 8037c2c: f003 0320 and.w r3, r3, #32 + 8037c30: 2b00 cmp r3, #0 + 8037c32: d02d beq.n 8037c90 { hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037bf4: 4b85 ldr r3, [pc, #532] ; (8037e0c ) - 8037bf6: 681b ldr r3, [r3, #0] - 8037bf8: 08db lsrs r3, r3, #3 - 8037bfa: f003 0303 and.w r3, r3, #3 - 8037bfe: 4a84 ldr r2, [pc, #528] ; (8037e10 ) - 8037c00: fa22 f303 lsr.w r3, r2, r3 - 8037c04: 60bb str r3, [r7, #8] + 8037c34: 4b85 ldr r3, [pc, #532] ; (8037e4c ) + 8037c36: 681b ldr r3, [r3, #0] + 8037c38: 08db lsrs r3, r3, #3 + 8037c3a: f003 0303 and.w r3, r3, #3 + 8037c3e: 4a84 ldr r2, [pc, #528] ; (8037e50 ) + 8037c40: fa22 f303 lsr.w r3, r2, r3 + 8037c44: 60bb str r3, [r7, #8] pll2vco = ( (float_t)hsivalue / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); - 8037c06: 68bb ldr r3, [r7, #8] - 8037c08: ee07 3a90 vmov s15, r3 - 8037c0c: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037c10: 697b ldr r3, [r7, #20] - 8037c12: ee07 3a90 vmov s15, r3 - 8037c16: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037c1a: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037c1e: 4b7b ldr r3, [pc, #492] ; (8037e0c ) - 8037c20: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037c22: f3c3 0308 ubfx r3, r3, #0, #9 - 8037c26: ee07 3a90 vmov s15, r3 - 8037c2a: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037c2e: ed97 6a03 vldr s12, [r7, #12] - 8037c32: eddf 5a78 vldr s11, [pc, #480] ; 8037e14 - 8037c36: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037c3a: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037c3e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037c42: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037c46: ee67 7a27 vmul.f32 s15, s14, s15 - 8037c4a: edc7 7a07 vstr s15, [r7, #28] + 8037c46: 68bb ldr r3, [r7, #8] + 8037c48: ee07 3a90 vmov s15, r3 + 8037c4c: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037c50: 697b ldr r3, [r7, #20] + 8037c52: ee07 3a90 vmov s15, r3 + 8037c56: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037c5a: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037c5e: 4b7b ldr r3, [pc, #492] ; (8037e4c ) + 8037c60: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037c62: f3c3 0308 ubfx r3, r3, #0, #9 + 8037c66: ee07 3a90 vmov s15, r3 + 8037c6a: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037c6e: ed97 6a03 vldr s12, [r7, #12] + 8037c72: eddf 5a78 vldr s11, [pc, #480] ; 8037e54 + 8037c76: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037c7a: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037c7e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037c82: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037c86: ee67 7a27 vmul.f32 s15, s14, s15 + 8037c8a: edc7 7a07 vstr s15, [r7, #28] } else { pll2vco = ((float_t)HSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); } break; - 8037c4e: e087 b.n 8037d60 + 8037c8e: e087 b.n 8037da0 pll2vco = ((float_t)HSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); - 8037c50: 697b ldr r3, [r7, #20] - 8037c52: ee07 3a90 vmov s15, r3 - 8037c56: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037c5a: eddf 6a6f vldr s13, [pc, #444] ; 8037e18 - 8037c5e: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037c62: 4b6a ldr r3, [pc, #424] ; (8037e0c ) - 8037c64: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037c66: f3c3 0308 ubfx r3, r3, #0, #9 - 8037c6a: ee07 3a90 vmov s15, r3 - 8037c6e: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037c72: ed97 6a03 vldr s12, [r7, #12] - 8037c76: eddf 5a67 vldr s11, [pc, #412] ; 8037e14 - 8037c7a: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037c7e: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037c82: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037c86: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037c8a: ee67 7a27 vmul.f32 s15, s14, s15 - 8037c8e: edc7 7a07 vstr s15, [r7, #28] + 8037c90: 697b ldr r3, [r7, #20] + 8037c92: ee07 3a90 vmov s15, r3 + 8037c96: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037c9a: eddf 6a6f vldr s13, [pc, #444] ; 8037e58 + 8037c9e: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037ca2: 4b6a ldr r3, [pc, #424] ; (8037e4c ) + 8037ca4: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037ca6: f3c3 0308 ubfx r3, r3, #0, #9 + 8037caa: ee07 3a90 vmov s15, r3 + 8037cae: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037cb2: ed97 6a03 vldr s12, [r7, #12] + 8037cb6: eddf 5a67 vldr s11, [pc, #412] ; 8037e54 + 8037cba: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037cbe: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037cc2: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037cc6: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037cca: ee67 7a27 vmul.f32 s15, s14, s15 + 8037cce: edc7 7a07 vstr s15, [r7, #28] break; - 8037c92: e065 b.n 8037d60 + 8037cd2: e065 b.n 8037da0 case RCC_PLLSOURCE_CSI: /* CSI used as PLL clock source */ pll2vco = ((float_t)CSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); - 8037c94: 697b ldr r3, [r7, #20] - 8037c96: ee07 3a90 vmov s15, r3 - 8037c9a: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037c9e: eddf 6a5f vldr s13, [pc, #380] ; 8037e1c - 8037ca2: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037ca6: 4b59 ldr r3, [pc, #356] ; (8037e0c ) - 8037ca8: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037caa: f3c3 0308 ubfx r3, r3, #0, #9 - 8037cae: ee07 3a90 vmov s15, r3 - 8037cb2: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037cb6: ed97 6a03 vldr s12, [r7, #12] - 8037cba: eddf 5a56 vldr s11, [pc, #344] ; 8037e14 - 8037cbe: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037cc2: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037cc6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037cca: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037cce: ee67 7a27 vmul.f32 s15, s14, s15 - 8037cd2: edc7 7a07 vstr s15, [r7, #28] + 8037cd4: 697b ldr r3, [r7, #20] + 8037cd6: ee07 3a90 vmov s15, r3 + 8037cda: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037cde: eddf 6a5f vldr s13, [pc, #380] ; 8037e5c + 8037ce2: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037ce6: 4b59 ldr r3, [pc, #356] ; (8037e4c ) + 8037ce8: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037cea: f3c3 0308 ubfx r3, r3, #0, #9 + 8037cee: ee07 3a90 vmov s15, r3 + 8037cf2: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037cf6: ed97 6a03 vldr s12, [r7, #12] + 8037cfa: eddf 5a56 vldr s11, [pc, #344] ; 8037e54 + 8037cfe: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037d02: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037d06: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037d0a: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037d0e: ee67 7a27 vmul.f32 s15, s14, s15 + 8037d12: edc7 7a07 vstr s15, [r7, #28] break; - 8037cd6: e043 b.n 8037d60 + 8037d16: e043 b.n 8037da0 case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pll2vco = ((float_t)HSE_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); - 8037cd8: 697b ldr r3, [r7, #20] - 8037cda: ee07 3a90 vmov s15, r3 - 8037cde: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037ce2: eddf 6a4f vldr s13, [pc, #316] ; 8037e20 - 8037ce6: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037cea: 4b48 ldr r3, [pc, #288] ; (8037e0c ) - 8037cec: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037cee: f3c3 0308 ubfx r3, r3, #0, #9 - 8037cf2: ee07 3a90 vmov s15, r3 - 8037cf6: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037cfa: ed97 6a03 vldr s12, [r7, #12] - 8037cfe: eddf 5a45 vldr s11, [pc, #276] ; 8037e14 - 8037d02: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037d06: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037d0a: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037d0e: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037d12: ee67 7a27 vmul.f32 s15, s14, s15 - 8037d16: edc7 7a07 vstr s15, [r7, #28] + 8037d18: 697b ldr r3, [r7, #20] + 8037d1a: ee07 3a90 vmov s15, r3 + 8037d1e: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037d22: eddf 6a4f vldr s13, [pc, #316] ; 8037e60 + 8037d26: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037d2a: 4b48 ldr r3, [pc, #288] ; (8037e4c ) + 8037d2c: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037d2e: f3c3 0308 ubfx r3, r3, #0, #9 + 8037d32: ee07 3a90 vmov s15, r3 + 8037d36: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037d3a: ed97 6a03 vldr s12, [r7, #12] + 8037d3e: eddf 5a45 vldr s11, [pc, #276] ; 8037e54 + 8037d42: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037d46: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037d4a: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037d4e: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037d52: ee67 7a27 vmul.f32 s15, s14, s15 + 8037d56: edc7 7a07 vstr s15, [r7, #28] break; - 8037d1a: e021 b.n 8037d60 + 8037d5a: e021 b.n 8037da0 default: pll2vco = ((float_t)CSI_VALUE / (float_t)pll2m) * ((float_t)(uint32_t)(RCC->PLL2DIVR & RCC_PLL2DIVR_N2) + (fracn2/(float_t)0x2000) +(float_t)1 ); - 8037d1c: 697b ldr r3, [r7, #20] - 8037d1e: ee07 3a90 vmov s15, r3 - 8037d22: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037d26: eddf 6a3d vldr s13, [pc, #244] ; 8037e1c - 8037d2a: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037d2e: 4b37 ldr r3, [pc, #220] ; (8037e0c ) - 8037d30: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037d32: f3c3 0308 ubfx r3, r3, #0, #9 - 8037d36: ee07 3a90 vmov s15, r3 - 8037d3a: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037d3e: ed97 6a03 vldr s12, [r7, #12] - 8037d42: eddf 5a34 vldr s11, [pc, #208] ; 8037e14 - 8037d46: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037d4a: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037d4e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037d52: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037d56: ee67 7a27 vmul.f32 s15, s14, s15 - 8037d5a: edc7 7a07 vstr s15, [r7, #28] + 8037d5c: 697b ldr r3, [r7, #20] + 8037d5e: ee07 3a90 vmov s15, r3 + 8037d62: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037d66: eddf 6a3d vldr s13, [pc, #244] ; 8037e5c + 8037d6a: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037d6e: 4b37 ldr r3, [pc, #220] ; (8037e4c ) + 8037d70: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037d72: f3c3 0308 ubfx r3, r3, #0, #9 + 8037d76: ee07 3a90 vmov s15, r3 + 8037d7a: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037d7e: ed97 6a03 vldr s12, [r7, #12] + 8037d82: eddf 5a34 vldr s11, [pc, #208] ; 8037e54 + 8037d86: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037d8a: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037d8e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037d92: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037d96: ee67 7a27 vmul.f32 s15, s14, s15 + 8037d9a: edc7 7a07 vstr s15, [r7, #28] break; - 8037d5e: bf00 nop + 8037d9e: bf00 nop } PLL2_Clocks->PLL2_P_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_P2) >>9) + (float_t)1 )) ; - 8037d60: 4b2a ldr r3, [pc, #168] ; (8037e0c ) - 8037d62: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037d64: 0a5b lsrs r3, r3, #9 - 8037d66: f003 037f and.w r3, r3, #127 ; 0x7f - 8037d6a: ee07 3a90 vmov s15, r3 - 8037d6e: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037d72: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 8037d76: ee37 7a87 vadd.f32 s14, s15, s14 - 8037d7a: edd7 6a07 vldr s13, [r7, #28] - 8037d7e: eec6 7a87 vdiv.f32 s15, s13, s14 - 8037d82: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8037d86: ee17 2a90 vmov r2, s15 - 8037d8a: 687b ldr r3, [r7, #4] - 8037d8c: 601a str r2, [r3, #0] + 8037da0: 4b2a ldr r3, [pc, #168] ; (8037e4c ) + 8037da2: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037da4: 0a5b lsrs r3, r3, #9 + 8037da6: f003 037f and.w r3, r3, #127 ; 0x7f + 8037daa: ee07 3a90 vmov s15, r3 + 8037dae: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037db2: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8037db6: ee37 7a87 vadd.f32 s14, s15, s14 + 8037dba: edd7 6a07 vldr s13, [r7, #28] + 8037dbe: eec6 7a87 vdiv.f32 s15, s13, s14 + 8037dc2: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8037dc6: ee17 2a90 vmov r2, s15 + 8037dca: 687b ldr r3, [r7, #4] + 8037dcc: 601a str r2, [r3, #0] PLL2_Clocks->PLL2_Q_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_Q2) >>16) + (float_t)1 )) ; - 8037d8e: 4b1f ldr r3, [pc, #124] ; (8037e0c ) - 8037d90: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037d92: 0c1b lsrs r3, r3, #16 - 8037d94: f003 037f and.w r3, r3, #127 ; 0x7f - 8037d98: ee07 3a90 vmov s15, r3 - 8037d9c: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037da0: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 8037da4: ee37 7a87 vadd.f32 s14, s15, s14 - 8037da8: edd7 6a07 vldr s13, [r7, #28] - 8037dac: eec6 7a87 vdiv.f32 s15, s13, s14 - 8037db0: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8037db4: ee17 2a90 vmov r2, s15 - 8037db8: 687b ldr r3, [r7, #4] - 8037dba: 605a str r2, [r3, #4] + 8037dce: 4b1f ldr r3, [pc, #124] ; (8037e4c ) + 8037dd0: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037dd2: 0c1b lsrs r3, r3, #16 + 8037dd4: f003 037f and.w r3, r3, #127 ; 0x7f + 8037dd8: ee07 3a90 vmov s15, r3 + 8037ddc: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037de0: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8037de4: ee37 7a87 vadd.f32 s14, s15, s14 + 8037de8: edd7 6a07 vldr s13, [r7, #28] + 8037dec: eec6 7a87 vdiv.f32 s15, s13, s14 + 8037df0: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8037df4: ee17 2a90 vmov r2, s15 + 8037df8: 687b ldr r3, [r7, #4] + 8037dfa: 605a str r2, [r3, #4] PLL2_Clocks->PLL2_R_Frequency = (uint32_t)(float_t)(pll2vco/((float_t)(uint32_t)((RCC->PLL2DIVR & RCC_PLL2DIVR_R2) >>24) + (float_t)1 )) ; - 8037dbc: 4b13 ldr r3, [pc, #76] ; (8037e0c ) - 8037dbe: 6b9b ldr r3, [r3, #56] ; 0x38 - 8037dc0: 0e1b lsrs r3, r3, #24 - 8037dc2: f003 037f and.w r3, r3, #127 ; 0x7f - 8037dc6: ee07 3a90 vmov s15, r3 - 8037dca: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037dce: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 8037dd2: ee37 7a87 vadd.f32 s14, s15, s14 - 8037dd6: edd7 6a07 vldr s13, [r7, #28] - 8037dda: eec6 7a87 vdiv.f32 s15, s13, s14 - 8037dde: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8037de2: ee17 2a90 vmov r2, s15 - 8037de6: 687b ldr r3, [r7, #4] - 8037de8: 609a str r2, [r3, #8] + 8037dfc: 4b13 ldr r3, [pc, #76] ; (8037e4c ) + 8037dfe: 6b9b ldr r3, [r3, #56] ; 0x38 + 8037e00: 0e1b lsrs r3, r3, #24 + 8037e02: f003 037f and.w r3, r3, #127 ; 0x7f + 8037e06: ee07 3a90 vmov s15, r3 + 8037e0a: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037e0e: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8037e12: ee37 7a87 vadd.f32 s14, s15, s14 + 8037e16: edd7 6a07 vldr s13, [r7, #28] + 8037e1a: eec6 7a87 vdiv.f32 s15, s13, s14 + 8037e1e: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8037e22: ee17 2a90 vmov r2, s15 + 8037e26: 687b ldr r3, [r7, #4] + 8037e28: 609a str r2, [r3, #8] { PLL2_Clocks->PLL2_P_Frequency = 0U; PLL2_Clocks->PLL2_Q_Frequency = 0U; PLL2_Clocks->PLL2_R_Frequency = 0U; } } - 8037dea: e008 b.n 8037dfe + 8037e2a: e008 b.n 8037e3e PLL2_Clocks->PLL2_P_Frequency = 0U; - 8037dec: 687b ldr r3, [r7, #4] - 8037dee: 2200 movs r2, #0 - 8037df0: 601a str r2, [r3, #0] + 8037e2c: 687b ldr r3, [r7, #4] + 8037e2e: 2200 movs r2, #0 + 8037e30: 601a str r2, [r3, #0] PLL2_Clocks->PLL2_Q_Frequency = 0U; - 8037df2: 687b ldr r3, [r7, #4] - 8037df4: 2200 movs r2, #0 - 8037df6: 605a str r2, [r3, #4] + 8037e32: 687b ldr r3, [r7, #4] + 8037e34: 2200 movs r2, #0 + 8037e36: 605a str r2, [r3, #4] PLL2_Clocks->PLL2_R_Frequency = 0U; - 8037df8: 687b ldr r3, [r7, #4] - 8037dfa: 2200 movs r2, #0 - 8037dfc: 609a str r2, [r3, #8] -} - 8037dfe: bf00 nop - 8037e00: 3724 adds r7, #36 ; 0x24 - 8037e02: 46bd mov sp, r7 - 8037e04: f85d 7b04 ldr.w r7, [sp], #4 - 8037e08: 4770 bx lr - 8037e0a: bf00 nop - 8037e0c: 58024400 .word 0x58024400 - 8037e10: 03d09000 .word 0x03d09000 - 8037e14: 46000000 .word 0x46000000 - 8037e18: 4c742400 .word 0x4c742400 - 8037e1c: 4a742400 .word 0x4a742400 - 8037e20: 4bbebc20 .word 0x4bbebc20 - -08037e24 : + 8037e38: 687b ldr r3, [r7, #4] + 8037e3a: 2200 movs r2, #0 + 8037e3c: 609a str r2, [r3, #8] +} + 8037e3e: bf00 nop + 8037e40: 3724 adds r7, #36 ; 0x24 + 8037e42: 46bd mov sp, r7 + 8037e44: f85d 7b04 ldr.w r7, [sp], #4 + 8037e48: 4770 bx lr + 8037e4a: bf00 nop + 8037e4c: 58024400 .word 0x58024400 + 8037e50: 03d09000 .word 0x03d09000 + 8037e54: 46000000 .word 0x46000000 + 8037e58: 4c742400 .word 0x4c742400 + 8037e5c: 4a742400 .word 0x4a742400 + 8037e60: 4bbebc20 .word 0x4bbebc20 + +08037e64 : * right PLL3CLK value. Otherwise, any configuration based on this function will be incorrect. * @param PLL3_Clocks structure. * @retval None */ void HAL_RCCEx_GetPLL3ClockFreq(PLL3_ClocksTypeDef* PLL3_Clocks) { - 8037e24: b480 push {r7} - 8037e26: b089 sub sp, #36 ; 0x24 - 8037e28: af00 add r7, sp, #0 - 8037e2a: 6078 str r0, [r7, #4] + 8037e64: b480 push {r7} + 8037e66: b089 sub sp, #36 ; 0x24 + 8037e68: af00 add r7, sp, #0 + 8037e6a: 6078 str r0, [r7, #4] float_t fracn3, pll3vco; /* PLL3_VCO = (HSE_VALUE or HSI_VALUE or CSI_VALUE/ PLL3M) * PLL3N PLL3xCLK = PLL3_VCO / PLLxR */ pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC); - 8037e2c: 4ba1 ldr r3, [pc, #644] ; (80380b4 ) - 8037e2e: 6a9b ldr r3, [r3, #40] ; 0x28 - 8037e30: f003 0303 and.w r3, r3, #3 - 8037e34: 61bb str r3, [r7, #24] + 8037e6c: 4ba1 ldr r3, [pc, #644] ; (80380f4 ) + 8037e6e: 6a9b ldr r3, [r3, #40] ; 0x28 + 8037e70: f003 0303 and.w r3, r3, #3 + 8037e74: 61bb str r3, [r7, #24] pll3m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM3)>> 20) ; - 8037e36: 4b9f ldr r3, [pc, #636] ; (80380b4 ) - 8037e38: 6a9b ldr r3, [r3, #40] ; 0x28 - 8037e3a: 0d1b lsrs r3, r3, #20 - 8037e3c: f003 033f and.w r3, r3, #63 ; 0x3f - 8037e40: 617b str r3, [r7, #20] + 8037e76: 4b9f ldr r3, [pc, #636] ; (80380f4 ) + 8037e78: 6a9b ldr r3, [r3, #40] ; 0x28 + 8037e7a: 0d1b lsrs r3, r3, #20 + 8037e7c: f003 033f and.w r3, r3, #63 ; 0x3f + 8037e80: 617b str r3, [r7, #20] pll3fracen = (RCC->PLLCFGR & RCC_PLLCFGR_PLL3FRACEN) >> RCC_PLLCFGR_PLL3FRACEN_Pos; - 8037e42: 4b9c ldr r3, [pc, #624] ; (80380b4 ) - 8037e44: 6adb ldr r3, [r3, #44] ; 0x2c - 8037e46: 0a1b lsrs r3, r3, #8 - 8037e48: f003 0301 and.w r3, r3, #1 - 8037e4c: 613b str r3, [r7, #16] + 8037e82: 4b9c ldr r3, [pc, #624] ; (80380f4 ) + 8037e84: 6adb ldr r3, [r3, #44] ; 0x2c + 8037e86: 0a1b lsrs r3, r3, #8 + 8037e88: f003 0301 and.w r3, r3, #1 + 8037e8c: 613b str r3, [r7, #16] fracn3 = (float_t)(uint32_t)(pll3fracen* ((RCC->PLL3FRACR & RCC_PLL3FRACR_FRACN3)>> 3)); - 8037e4e: 4b99 ldr r3, [pc, #612] ; (80380b4 ) - 8037e50: 6c5b ldr r3, [r3, #68] ; 0x44 - 8037e52: 08db lsrs r3, r3, #3 - 8037e54: f3c3 030c ubfx r3, r3, #0, #13 - 8037e58: 693a ldr r2, [r7, #16] - 8037e5a: fb02 f303 mul.w r3, r2, r3 - 8037e5e: ee07 3a90 vmov s15, r3 - 8037e62: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037e66: edc7 7a03 vstr s15, [r7, #12] + 8037e8e: 4b99 ldr r3, [pc, #612] ; (80380f4 ) + 8037e90: 6c5b ldr r3, [r3, #68] ; 0x44 + 8037e92: 08db lsrs r3, r3, #3 + 8037e94: f3c3 030c ubfx r3, r3, #0, #13 + 8037e98: 693a ldr r2, [r7, #16] + 8037e9a: fb02 f303 mul.w r3, r2, r3 + 8037e9e: ee07 3a90 vmov s15, r3 + 8037ea2: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037ea6: edc7 7a03 vstr s15, [r7, #12] if (pll3m != 0U) - 8037e6a: 697b ldr r3, [r7, #20] - 8037e6c: 2b00 cmp r3, #0 - 8037e6e: f000 8111 beq.w 8038094 + 8037eaa: 697b ldr r3, [r7, #20] + 8037eac: 2b00 cmp r3, #0 + 8037eae: f000 8111 beq.w 80380d4 { switch (pllsource) - 8037e72: 69bb ldr r3, [r7, #24] - 8037e74: 2b02 cmp r3, #2 - 8037e76: f000 8083 beq.w 8037f80 - 8037e7a: 69bb ldr r3, [r7, #24] - 8037e7c: 2b02 cmp r3, #2 - 8037e7e: f200 80a1 bhi.w 8037fc4 - 8037e82: 69bb ldr r3, [r7, #24] - 8037e84: 2b00 cmp r3, #0 - 8037e86: d003 beq.n 8037e90 - 8037e88: 69bb ldr r3, [r7, #24] - 8037e8a: 2b01 cmp r3, #1 - 8037e8c: d056 beq.n 8037f3c - 8037e8e: e099 b.n 8037fc4 + 8037eb2: 69bb ldr r3, [r7, #24] + 8037eb4: 2b02 cmp r3, #2 + 8037eb6: f000 8083 beq.w 8037fc0 + 8037eba: 69bb ldr r3, [r7, #24] + 8037ebc: 2b02 cmp r3, #2 + 8037ebe: f200 80a1 bhi.w 8038004 + 8037ec2: 69bb ldr r3, [r7, #24] + 8037ec4: 2b00 cmp r3, #0 + 8037ec6: d003 beq.n 8037ed0 + 8037ec8: 69bb ldr r3, [r7, #24] + 8037eca: 2b01 cmp r3, #1 + 8037ecc: d056 beq.n 8037f7c + 8037ece: e099 b.n 8038004 { case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 8037e90: 4b88 ldr r3, [pc, #544] ; (80380b4 ) - 8037e92: 681b ldr r3, [r3, #0] - 8037e94: f003 0320 and.w r3, r3, #32 - 8037e98: 2b00 cmp r3, #0 - 8037e9a: d02d beq.n 8037ef8 + 8037ed0: 4b88 ldr r3, [pc, #544] ; (80380f4 ) + 8037ed2: 681b ldr r3, [r3, #0] + 8037ed4: f003 0320 and.w r3, r3, #32 + 8037ed8: 2b00 cmp r3, #0 + 8037eda: d02d beq.n 8037f38 { hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8037e9c: 4b85 ldr r3, [pc, #532] ; (80380b4 ) - 8037e9e: 681b ldr r3, [r3, #0] - 8037ea0: 08db lsrs r3, r3, #3 - 8037ea2: f003 0303 and.w r3, r3, #3 - 8037ea6: 4a84 ldr r2, [pc, #528] ; (80380b8 ) - 8037ea8: fa22 f303 lsr.w r3, r2, r3 - 8037eac: 60bb str r3, [r7, #8] + 8037edc: 4b85 ldr r3, [pc, #532] ; (80380f4 ) + 8037ede: 681b ldr r3, [r3, #0] + 8037ee0: 08db lsrs r3, r3, #3 + 8037ee2: f003 0303 and.w r3, r3, #3 + 8037ee6: 4a84 ldr r2, [pc, #528] ; (80380f8 ) + 8037ee8: fa22 f303 lsr.w r3, r2, r3 + 8037eec: 60bb str r3, [r7, #8] pll3vco = ((float_t)hsivalue / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); - 8037eae: 68bb ldr r3, [r7, #8] - 8037eb0: ee07 3a90 vmov s15, r3 - 8037eb4: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037eb8: 697b ldr r3, [r7, #20] - 8037eba: ee07 3a90 vmov s15, r3 - 8037ebe: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037ec2: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037ec6: 4b7b ldr r3, [pc, #492] ; (80380b4 ) - 8037ec8: 6c1b ldr r3, [r3, #64] ; 0x40 - 8037eca: f3c3 0308 ubfx r3, r3, #0, #9 - 8037ece: ee07 3a90 vmov s15, r3 - 8037ed2: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037ed6: ed97 6a03 vldr s12, [r7, #12] - 8037eda: eddf 5a78 vldr s11, [pc, #480] ; 80380bc - 8037ede: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037ee2: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037ee6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037eea: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037eee: ee67 7a27 vmul.f32 s15, s14, s15 - 8037ef2: edc7 7a07 vstr s15, [r7, #28] + 8037eee: 68bb ldr r3, [r7, #8] + 8037ef0: ee07 3a90 vmov s15, r3 + 8037ef4: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037ef8: 697b ldr r3, [r7, #20] + 8037efa: ee07 3a90 vmov s15, r3 + 8037efe: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037f02: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037f06: 4b7b ldr r3, [pc, #492] ; (80380f4 ) + 8037f08: 6c1b ldr r3, [r3, #64] ; 0x40 + 8037f0a: f3c3 0308 ubfx r3, r3, #0, #9 + 8037f0e: ee07 3a90 vmov s15, r3 + 8037f12: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037f16: ed97 6a03 vldr s12, [r7, #12] + 8037f1a: eddf 5a78 vldr s11, [pc, #480] ; 80380fc + 8037f1e: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037f22: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037f26: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037f2a: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037f2e: ee67 7a27 vmul.f32 s15, s14, s15 + 8037f32: edc7 7a07 vstr s15, [r7, #28] } else { pll3vco = ((float_t)HSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); } break; - 8037ef6: e087 b.n 8038008 + 8037f36: e087 b.n 8038048 pll3vco = ((float_t)HSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); - 8037ef8: 697b ldr r3, [r7, #20] - 8037efa: ee07 3a90 vmov s15, r3 - 8037efe: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037f02: eddf 6a6f vldr s13, [pc, #444] ; 80380c0 - 8037f06: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037f0a: 4b6a ldr r3, [pc, #424] ; (80380b4 ) - 8037f0c: 6c1b ldr r3, [r3, #64] ; 0x40 - 8037f0e: f3c3 0308 ubfx r3, r3, #0, #9 - 8037f12: ee07 3a90 vmov s15, r3 - 8037f16: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037f1a: ed97 6a03 vldr s12, [r7, #12] - 8037f1e: eddf 5a67 vldr s11, [pc, #412] ; 80380bc - 8037f22: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037f26: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037f2a: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037f2e: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037f32: ee67 7a27 vmul.f32 s15, s14, s15 - 8037f36: edc7 7a07 vstr s15, [r7, #28] + 8037f38: 697b ldr r3, [r7, #20] + 8037f3a: ee07 3a90 vmov s15, r3 + 8037f3e: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037f42: eddf 6a6f vldr s13, [pc, #444] ; 8038100 + 8037f46: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037f4a: 4b6a ldr r3, [pc, #424] ; (80380f4 ) + 8037f4c: 6c1b ldr r3, [r3, #64] ; 0x40 + 8037f4e: f3c3 0308 ubfx r3, r3, #0, #9 + 8037f52: ee07 3a90 vmov s15, r3 + 8037f56: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037f5a: ed97 6a03 vldr s12, [r7, #12] + 8037f5e: eddf 5a67 vldr s11, [pc, #412] ; 80380fc + 8037f62: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037f66: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037f6a: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037f6e: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037f72: ee67 7a27 vmul.f32 s15, s14, s15 + 8037f76: edc7 7a07 vstr s15, [r7, #28] break; - 8037f3a: e065 b.n 8038008 + 8037f7a: e065 b.n 8038048 case RCC_PLLSOURCE_CSI: /* CSI used as PLL clock source */ pll3vco = ((float_t)CSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); - 8037f3c: 697b ldr r3, [r7, #20] - 8037f3e: ee07 3a90 vmov s15, r3 - 8037f42: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037f46: eddf 6a5f vldr s13, [pc, #380] ; 80380c4 - 8037f4a: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037f4e: 4b59 ldr r3, [pc, #356] ; (80380b4 ) - 8037f50: 6c1b ldr r3, [r3, #64] ; 0x40 - 8037f52: f3c3 0308 ubfx r3, r3, #0, #9 - 8037f56: ee07 3a90 vmov s15, r3 - 8037f5a: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037f5e: ed97 6a03 vldr s12, [r7, #12] - 8037f62: eddf 5a56 vldr s11, [pc, #344] ; 80380bc - 8037f66: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037f6a: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037f6e: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037f72: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037f76: ee67 7a27 vmul.f32 s15, s14, s15 - 8037f7a: edc7 7a07 vstr s15, [r7, #28] + 8037f7c: 697b ldr r3, [r7, #20] + 8037f7e: ee07 3a90 vmov s15, r3 + 8037f82: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037f86: eddf 6a5f vldr s13, [pc, #380] ; 8038104 + 8037f8a: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037f8e: 4b59 ldr r3, [pc, #356] ; (80380f4 ) + 8037f90: 6c1b ldr r3, [r3, #64] ; 0x40 + 8037f92: f3c3 0308 ubfx r3, r3, #0, #9 + 8037f96: ee07 3a90 vmov s15, r3 + 8037f9a: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037f9e: ed97 6a03 vldr s12, [r7, #12] + 8037fa2: eddf 5a56 vldr s11, [pc, #344] ; 80380fc + 8037fa6: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037faa: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037fae: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037fb2: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037fb6: ee67 7a27 vmul.f32 s15, s14, s15 + 8037fba: edc7 7a07 vstr s15, [r7, #28] break; - 8037f7e: e043 b.n 8038008 + 8037fbe: e043 b.n 8038048 case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pll3vco = ((float_t)HSE_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); - 8037f80: 697b ldr r3, [r7, #20] - 8037f82: ee07 3a90 vmov s15, r3 - 8037f86: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037f8a: eddf 6a4f vldr s13, [pc, #316] ; 80380c8 - 8037f8e: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037f92: 4b48 ldr r3, [pc, #288] ; (80380b4 ) - 8037f94: 6c1b ldr r3, [r3, #64] ; 0x40 - 8037f96: f3c3 0308 ubfx r3, r3, #0, #9 - 8037f9a: ee07 3a90 vmov s15, r3 - 8037f9e: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037fa2: ed97 6a03 vldr s12, [r7, #12] - 8037fa6: eddf 5a45 vldr s11, [pc, #276] ; 80380bc - 8037faa: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037fae: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037fb2: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037fb6: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037fba: ee67 7a27 vmul.f32 s15, s14, s15 - 8037fbe: edc7 7a07 vstr s15, [r7, #28] + 8037fc0: 697b ldr r3, [r7, #20] + 8037fc2: ee07 3a90 vmov s15, r3 + 8037fc6: eef8 7a67 vcvt.f32.u32 s15, s15 + 8037fca: eddf 6a4f vldr s13, [pc, #316] ; 8038108 + 8037fce: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8037fd2: 4b48 ldr r3, [pc, #288] ; (80380f4 ) + 8037fd4: 6c1b ldr r3, [r3, #64] ; 0x40 + 8037fd6: f3c3 0308 ubfx r3, r3, #0, #9 + 8037fda: ee07 3a90 vmov s15, r3 + 8037fde: eef8 6a67 vcvt.f32.u32 s13, s15 + 8037fe2: ed97 6a03 vldr s12, [r7, #12] + 8037fe6: eddf 5a45 vldr s11, [pc, #276] ; 80380fc + 8037fea: eec6 7a25 vdiv.f32 s15, s12, s11 + 8037fee: ee76 7aa7 vadd.f32 s15, s13, s15 + 8037ff2: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8037ff6: ee77 7aa6 vadd.f32 s15, s15, s13 + 8037ffa: ee67 7a27 vmul.f32 s15, s14, s15 + 8037ffe: edc7 7a07 vstr s15, [r7, #28] break; - 8037fc2: e021 b.n 8038008 + 8038002: e021 b.n 8038048 default: pll3vco = ((float_t)CSI_VALUE / (float_t)pll3m) * ((float_t)(uint32_t)(RCC->PLL3DIVR & RCC_PLL3DIVR_N3) + (fracn3/(float_t)0x2000) +(float_t)1 ); - 8037fc4: 697b ldr r3, [r7, #20] - 8037fc6: ee07 3a90 vmov s15, r3 - 8037fca: eef8 7a67 vcvt.f32.u32 s15, s15 - 8037fce: eddf 6a3d vldr s13, [pc, #244] ; 80380c4 - 8037fd2: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8037fd6: 4b37 ldr r3, [pc, #220] ; (80380b4 ) - 8037fd8: 6c1b ldr r3, [r3, #64] ; 0x40 - 8037fda: f3c3 0308 ubfx r3, r3, #0, #9 - 8037fde: ee07 3a90 vmov s15, r3 - 8037fe2: eef8 6a67 vcvt.f32.u32 s13, s15 - 8037fe6: ed97 6a03 vldr s12, [r7, #12] - 8037fea: eddf 5a34 vldr s11, [pc, #208] ; 80380bc - 8037fee: eec6 7a25 vdiv.f32 s15, s12, s11 - 8037ff2: ee76 7aa7 vadd.f32 s15, s13, s15 - 8037ff6: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8037ffa: ee77 7aa6 vadd.f32 s15, s15, s13 - 8037ffe: ee67 7a27 vmul.f32 s15, s14, s15 - 8038002: edc7 7a07 vstr s15, [r7, #28] + 8038004: 697b ldr r3, [r7, #20] + 8038006: ee07 3a90 vmov s15, r3 + 803800a: eef8 7a67 vcvt.f32.u32 s15, s15 + 803800e: eddf 6a3d vldr s13, [pc, #244] ; 8038104 + 8038012: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8038016: 4b37 ldr r3, [pc, #220] ; (80380f4 ) + 8038018: 6c1b ldr r3, [r3, #64] ; 0x40 + 803801a: f3c3 0308 ubfx r3, r3, #0, #9 + 803801e: ee07 3a90 vmov s15, r3 + 8038022: eef8 6a67 vcvt.f32.u32 s13, s15 + 8038026: ed97 6a03 vldr s12, [r7, #12] + 803802a: eddf 5a34 vldr s11, [pc, #208] ; 80380fc + 803802e: eec6 7a25 vdiv.f32 s15, s12, s11 + 8038032: ee76 7aa7 vadd.f32 s15, s13, s15 + 8038036: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 803803a: ee77 7aa6 vadd.f32 s15, s15, s13 + 803803e: ee67 7a27 vmul.f32 s15, s14, s15 + 8038042: edc7 7a07 vstr s15, [r7, #28] break; - 8038006: bf00 nop + 8038046: bf00 nop } PLL3_Clocks->PLL3_P_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_P3) >>9) + (float_t)1 )) ; - 8038008: 4b2a ldr r3, [pc, #168] ; (80380b4 ) - 803800a: 6c1b ldr r3, [r3, #64] ; 0x40 - 803800c: 0a5b lsrs r3, r3, #9 - 803800e: f003 037f and.w r3, r3, #127 ; 0x7f - 8038012: ee07 3a90 vmov s15, r3 - 8038016: eef8 7a67 vcvt.f32.u32 s15, s15 - 803801a: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 803801e: ee37 7a87 vadd.f32 s14, s15, s14 - 8038022: edd7 6a07 vldr s13, [r7, #28] - 8038026: eec6 7a87 vdiv.f32 s15, s13, s14 - 803802a: eefc 7ae7 vcvt.u32.f32 s15, s15 - 803802e: ee17 2a90 vmov r2, s15 - 8038032: 687b ldr r3, [r7, #4] - 8038034: 601a str r2, [r3, #0] + 8038048: 4b2a ldr r3, [pc, #168] ; (80380f4 ) + 803804a: 6c1b ldr r3, [r3, #64] ; 0x40 + 803804c: 0a5b lsrs r3, r3, #9 + 803804e: f003 037f and.w r3, r3, #127 ; 0x7f + 8038052: ee07 3a90 vmov s15, r3 + 8038056: eef8 7a67 vcvt.f32.u32 s15, s15 + 803805a: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 803805e: ee37 7a87 vadd.f32 s14, s15, s14 + 8038062: edd7 6a07 vldr s13, [r7, #28] + 8038066: eec6 7a87 vdiv.f32 s15, s13, s14 + 803806a: eefc 7ae7 vcvt.u32.f32 s15, s15 + 803806e: ee17 2a90 vmov r2, s15 + 8038072: 687b ldr r3, [r7, #4] + 8038074: 601a str r2, [r3, #0] PLL3_Clocks->PLL3_Q_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_Q3) >>16) + (float_t)1 )) ; - 8038036: 4b1f ldr r3, [pc, #124] ; (80380b4 ) - 8038038: 6c1b ldr r3, [r3, #64] ; 0x40 - 803803a: 0c1b lsrs r3, r3, #16 - 803803c: f003 037f and.w r3, r3, #127 ; 0x7f - 8038040: ee07 3a90 vmov s15, r3 - 8038044: eef8 7a67 vcvt.f32.u32 s15, s15 - 8038048: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 803804c: ee37 7a87 vadd.f32 s14, s15, s14 - 8038050: edd7 6a07 vldr s13, [r7, #28] - 8038054: eec6 7a87 vdiv.f32 s15, s13, s14 - 8038058: eefc 7ae7 vcvt.u32.f32 s15, s15 - 803805c: ee17 2a90 vmov r2, s15 - 8038060: 687b ldr r3, [r7, #4] - 8038062: 605a str r2, [r3, #4] + 8038076: 4b1f ldr r3, [pc, #124] ; (80380f4 ) + 8038078: 6c1b ldr r3, [r3, #64] ; 0x40 + 803807a: 0c1b lsrs r3, r3, #16 + 803807c: f003 037f and.w r3, r3, #127 ; 0x7f + 8038080: ee07 3a90 vmov s15, r3 + 8038084: eef8 7a67 vcvt.f32.u32 s15, s15 + 8038088: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 803808c: ee37 7a87 vadd.f32 s14, s15, s14 + 8038090: edd7 6a07 vldr s13, [r7, #28] + 8038094: eec6 7a87 vdiv.f32 s15, s13, s14 + 8038098: eefc 7ae7 vcvt.u32.f32 s15, s15 + 803809c: ee17 2a90 vmov r2, s15 + 80380a0: 687b ldr r3, [r7, #4] + 80380a2: 605a str r2, [r3, #4] PLL3_Clocks->PLL3_R_Frequency = (uint32_t)(float_t)(pll3vco/((float_t)(uint32_t)((RCC->PLL3DIVR & RCC_PLL3DIVR_R3) >>24) + (float_t)1 )) ; - 8038064: 4b13 ldr r3, [pc, #76] ; (80380b4 ) - 8038066: 6c1b ldr r3, [r3, #64] ; 0x40 - 8038068: 0e1b lsrs r3, r3, #24 - 803806a: f003 037f and.w r3, r3, #127 ; 0x7f - 803806e: ee07 3a90 vmov s15, r3 - 8038072: eef8 7a67 vcvt.f32.u32 s15, s15 - 8038076: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 803807a: ee37 7a87 vadd.f32 s14, s15, s14 - 803807e: edd7 6a07 vldr s13, [r7, #28] - 8038082: eec6 7a87 vdiv.f32 s15, s13, s14 - 8038086: eefc 7ae7 vcvt.u32.f32 s15, s15 - 803808a: ee17 2a90 vmov r2, s15 - 803808e: 687b ldr r3, [r7, #4] - 8038090: 609a str r2, [r3, #8] + 80380a4: 4b13 ldr r3, [pc, #76] ; (80380f4 ) + 80380a6: 6c1b ldr r3, [r3, #64] ; 0x40 + 80380a8: 0e1b lsrs r3, r3, #24 + 80380aa: f003 037f and.w r3, r3, #127 ; 0x7f + 80380ae: ee07 3a90 vmov s15, r3 + 80380b2: eef8 7a67 vcvt.f32.u32 s15, s15 + 80380b6: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 80380ba: ee37 7a87 vadd.f32 s14, s15, s14 + 80380be: edd7 6a07 vldr s13, [r7, #28] + 80380c2: eec6 7a87 vdiv.f32 s15, s13, s14 + 80380c6: eefc 7ae7 vcvt.u32.f32 s15, s15 + 80380ca: ee17 2a90 vmov r2, s15 + 80380ce: 687b ldr r3, [r7, #4] + 80380d0: 609a str r2, [r3, #8] PLL3_Clocks->PLL3_P_Frequency = 0U; PLL3_Clocks->PLL3_Q_Frequency = 0U; PLL3_Clocks->PLL3_R_Frequency = 0U; } } - 8038092: e008 b.n 80380a6 + 80380d2: e008 b.n 80380e6 PLL3_Clocks->PLL3_P_Frequency = 0U; - 8038094: 687b ldr r3, [r7, #4] - 8038096: 2200 movs r2, #0 - 8038098: 601a str r2, [r3, #0] + 80380d4: 687b ldr r3, [r7, #4] + 80380d6: 2200 movs r2, #0 + 80380d8: 601a str r2, [r3, #0] PLL3_Clocks->PLL3_Q_Frequency = 0U; - 803809a: 687b ldr r3, [r7, #4] - 803809c: 2200 movs r2, #0 - 803809e: 605a str r2, [r3, #4] + 80380da: 687b ldr r3, [r7, #4] + 80380dc: 2200 movs r2, #0 + 80380de: 605a str r2, [r3, #4] PLL3_Clocks->PLL3_R_Frequency = 0U; - 80380a0: 687b ldr r3, [r7, #4] - 80380a2: 2200 movs r2, #0 - 80380a4: 609a str r2, [r3, #8] -} - 80380a6: bf00 nop - 80380a8: 3724 adds r7, #36 ; 0x24 - 80380aa: 46bd mov sp, r7 - 80380ac: f85d 7b04 ldr.w r7, [sp], #4 - 80380b0: 4770 bx lr - 80380b2: bf00 nop - 80380b4: 58024400 .word 0x58024400 - 80380b8: 03d09000 .word 0x03d09000 - 80380bc: 46000000 .word 0x46000000 - 80380c0: 4c742400 .word 0x4c742400 - 80380c4: 4a742400 .word 0x4a742400 - 80380c8: 4bbebc20 .word 0x4bbebc20 - -080380cc : + 80380e0: 687b ldr r3, [r7, #4] + 80380e2: 2200 movs r2, #0 + 80380e4: 609a str r2, [r3, #8] +} + 80380e6: bf00 nop + 80380e8: 3724 adds r7, #36 ; 0x24 + 80380ea: 46bd mov sp, r7 + 80380ec: f85d 7b04 ldr.w r7, [sp], #4 + 80380f0: 4770 bx lr + 80380f2: bf00 nop + 80380f4: 58024400 .word 0x58024400 + 80380f8: 03d09000 .word 0x03d09000 + 80380fc: 46000000 .word 0x46000000 + 8038100: 4c742400 .word 0x4c742400 + 8038104: 4a742400 .word 0x4a742400 + 8038108: 4bbebc20 .word 0x4bbebc20 + +0803810c : * right PLL1CLK value. Otherwise, any configuration based on this function will be incorrect. * @param PLL1_Clocks structure. * @retval None */ void HAL_RCCEx_GetPLL1ClockFreq(PLL1_ClocksTypeDef* PLL1_Clocks) { - 80380cc: b480 push {r7} - 80380ce: b089 sub sp, #36 ; 0x24 - 80380d0: af00 add r7, sp, #0 - 80380d2: 6078 str r0, [r7, #4] + 803810c: b480 push {r7} + 803810e: b089 sub sp, #36 ; 0x24 + 8038110: af00 add r7, sp, #0 + 8038112: 6078 str r0, [r7, #4] uint32_t pllsource, pll1m, pll1fracen, hsivalue; float_t fracn1, pll1vco; pllsource = (RCC->PLLCKSELR & RCC_PLLCKSELR_PLLSRC); - 80380d4: 4ba0 ldr r3, [pc, #640] ; (8038358 ) - 80380d6: 6a9b ldr r3, [r3, #40] ; 0x28 - 80380d8: f003 0303 and.w r3, r3, #3 - 80380dc: 61bb str r3, [r7, #24] + 8038114: 4ba0 ldr r3, [pc, #640] ; (8038398 ) + 8038116: 6a9b ldr r3, [r3, #40] ; 0x28 + 8038118: f003 0303 and.w r3, r3, #3 + 803811c: 61bb str r3, [r7, #24] pll1m = ((RCC->PLLCKSELR & RCC_PLLCKSELR_DIVM1)>> 4); - 80380de: 4b9e ldr r3, [pc, #632] ; (8038358 ) - 80380e0: 6a9b ldr r3, [r3, #40] ; 0x28 - 80380e2: 091b lsrs r3, r3, #4 - 80380e4: f003 033f and.w r3, r3, #63 ; 0x3f - 80380e8: 617b str r3, [r7, #20] + 803811e: 4b9e ldr r3, [pc, #632] ; (8038398 ) + 8038120: 6a9b ldr r3, [r3, #40] ; 0x28 + 8038122: 091b lsrs r3, r3, #4 + 8038124: f003 033f and.w r3, r3, #63 ; 0x3f + 8038128: 617b str r3, [r7, #20] pll1fracen = RCC->PLLCFGR & RCC_PLLCFGR_PLL1FRACEN; - 80380ea: 4b9b ldr r3, [pc, #620] ; (8038358 ) - 80380ec: 6adb ldr r3, [r3, #44] ; 0x2c - 80380ee: f003 0301 and.w r3, r3, #1 - 80380f2: 613b str r3, [r7, #16] + 803812a: 4b9b ldr r3, [pc, #620] ; (8038398 ) + 803812c: 6adb ldr r3, [r3, #44] ; 0x2c + 803812e: f003 0301 and.w r3, r3, #1 + 8038132: 613b str r3, [r7, #16] fracn1 = (float_t)(uint32_t)(pll1fracen * ((RCC->PLL1FRACR & RCC_PLL1FRACR_FRACN1)>> 3)); - 80380f4: 4b98 ldr r3, [pc, #608] ; (8038358 ) - 80380f6: 6b5b ldr r3, [r3, #52] ; 0x34 - 80380f8: 08db lsrs r3, r3, #3 - 80380fa: f3c3 030c ubfx r3, r3, #0, #13 - 80380fe: 693a ldr r2, [r7, #16] - 8038100: fb02 f303 mul.w r3, r2, r3 - 8038104: ee07 3a90 vmov s15, r3 - 8038108: eef8 7a67 vcvt.f32.u32 s15, s15 - 803810c: edc7 7a03 vstr s15, [r7, #12] + 8038134: 4b98 ldr r3, [pc, #608] ; (8038398 ) + 8038136: 6b5b ldr r3, [r3, #52] ; 0x34 + 8038138: 08db lsrs r3, r3, #3 + 803813a: f3c3 030c ubfx r3, r3, #0, #13 + 803813e: 693a ldr r2, [r7, #16] + 8038140: fb02 f303 mul.w r3, r2, r3 + 8038144: ee07 3a90 vmov s15, r3 + 8038148: eef8 7a67 vcvt.f32.u32 s15, s15 + 803814c: edc7 7a03 vstr s15, [r7, #12] if (pll1m != 0U) - 8038110: 697b ldr r3, [r7, #20] - 8038112: 2b00 cmp r3, #0 - 8038114: f000 8111 beq.w 803833a + 8038150: 697b ldr r3, [r7, #20] + 8038152: 2b00 cmp r3, #0 + 8038154: f000 8111 beq.w 803837a { switch (pllsource) - 8038118: 69bb ldr r3, [r7, #24] - 803811a: 2b02 cmp r3, #2 - 803811c: f000 8083 beq.w 8038226 - 8038120: 69bb ldr r3, [r7, #24] - 8038122: 2b02 cmp r3, #2 - 8038124: f200 80a1 bhi.w 803826a - 8038128: 69bb ldr r3, [r7, #24] - 803812a: 2b00 cmp r3, #0 - 803812c: d003 beq.n 8038136 - 803812e: 69bb ldr r3, [r7, #24] - 8038130: 2b01 cmp r3, #1 - 8038132: d056 beq.n 80381e2 - 8038134: e099 b.n 803826a + 8038158: 69bb ldr r3, [r7, #24] + 803815a: 2b02 cmp r3, #2 + 803815c: f000 8083 beq.w 8038266 + 8038160: 69bb ldr r3, [r7, #24] + 8038162: 2b02 cmp r3, #2 + 8038164: f200 80a1 bhi.w 80382aa + 8038168: 69bb ldr r3, [r7, #24] + 803816a: 2b00 cmp r3, #0 + 803816c: d003 beq.n 8038176 + 803816e: 69bb ldr r3, [r7, #24] + 8038170: 2b01 cmp r3, #1 + 8038172: d056 beq.n 8038222 + 8038174: e099 b.n 80382aa { case RCC_PLLSOURCE_HSI: /* HSI used as PLL clock source */ if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 8038136: 4b88 ldr r3, [pc, #544] ; (8038358 ) - 8038138: 681b ldr r3, [r3, #0] - 803813a: f003 0320 and.w r3, r3, #32 - 803813e: 2b00 cmp r3, #0 - 8038140: d02d beq.n 803819e + 8038176: 4b88 ldr r3, [pc, #544] ; (8038398 ) + 8038178: 681b ldr r3, [r3, #0] + 803817a: f003 0320 and.w r3, r3, #32 + 803817e: 2b00 cmp r3, #0 + 8038180: d02d beq.n 80381de { hsivalue = (HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER()>> 3)); - 8038142: 4b85 ldr r3, [pc, #532] ; (8038358 ) - 8038144: 681b ldr r3, [r3, #0] - 8038146: 08db lsrs r3, r3, #3 - 8038148: f003 0303 and.w r3, r3, #3 - 803814c: 4a83 ldr r2, [pc, #524] ; (803835c ) - 803814e: fa22 f303 lsr.w r3, r2, r3 - 8038152: 60bb str r3, [r7, #8] + 8038182: 4b85 ldr r3, [pc, #532] ; (8038398 ) + 8038184: 681b ldr r3, [r3, #0] + 8038186: 08db lsrs r3, r3, #3 + 8038188: f003 0303 and.w r3, r3, #3 + 803818c: 4a83 ldr r2, [pc, #524] ; (803839c ) + 803818e: fa22 f303 lsr.w r3, r2, r3 + 8038192: 60bb str r3, [r7, #8] pll1vco = ((float_t)hsivalue / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 8038154: 68bb ldr r3, [r7, #8] - 8038156: ee07 3a90 vmov s15, r3 - 803815a: eef8 6a67 vcvt.f32.u32 s13, s15 - 803815e: 697b ldr r3, [r7, #20] - 8038160: ee07 3a90 vmov s15, r3 - 8038164: eef8 7a67 vcvt.f32.u32 s15, s15 - 8038168: ee86 7aa7 vdiv.f32 s14, s13, s15 - 803816c: 4b7a ldr r3, [pc, #488] ; (8038358 ) - 803816e: 6b1b ldr r3, [r3, #48] ; 0x30 - 8038170: f3c3 0308 ubfx r3, r3, #0, #9 - 8038174: ee07 3a90 vmov s15, r3 - 8038178: eef8 6a67 vcvt.f32.u32 s13, s15 - 803817c: ed97 6a03 vldr s12, [r7, #12] - 8038180: eddf 5a77 vldr s11, [pc, #476] ; 8038360 - 8038184: eec6 7a25 vdiv.f32 s15, s12, s11 - 8038188: ee76 7aa7 vadd.f32 s15, s13, s15 - 803818c: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8038190: ee77 7aa6 vadd.f32 s15, s15, s13 - 8038194: ee67 7a27 vmul.f32 s15, s14, s15 - 8038198: edc7 7a07 vstr s15, [r7, #28] + 8038194: 68bb ldr r3, [r7, #8] + 8038196: ee07 3a90 vmov s15, r3 + 803819a: eef8 6a67 vcvt.f32.u32 s13, s15 + 803819e: 697b ldr r3, [r7, #20] + 80381a0: ee07 3a90 vmov s15, r3 + 80381a4: eef8 7a67 vcvt.f32.u32 s15, s15 + 80381a8: ee86 7aa7 vdiv.f32 s14, s13, s15 + 80381ac: 4b7a ldr r3, [pc, #488] ; (8038398 ) + 80381ae: 6b1b ldr r3, [r3, #48] ; 0x30 + 80381b0: f3c3 0308 ubfx r3, r3, #0, #9 + 80381b4: ee07 3a90 vmov s15, r3 + 80381b8: eef8 6a67 vcvt.f32.u32 s13, s15 + 80381bc: ed97 6a03 vldr s12, [r7, #12] + 80381c0: eddf 5a77 vldr s11, [pc, #476] ; 80383a0 + 80381c4: eec6 7a25 vdiv.f32 s15, s12, s11 + 80381c8: ee76 7aa7 vadd.f32 s15, s13, s15 + 80381cc: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 80381d0: ee77 7aa6 vadd.f32 s15, s15, s13 + 80381d4: ee67 7a27 vmul.f32 s15, s14, s15 + 80381d8: edc7 7a07 vstr s15, [r7, #28] } else { pll1vco = ((float_t)HSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); } break; - 803819c: e087 b.n 80382ae + 80381dc: e087 b.n 80382ee pll1vco = ((float_t)HSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 803819e: 697b ldr r3, [r7, #20] - 80381a0: ee07 3a90 vmov s15, r3 - 80381a4: eef8 7a67 vcvt.f32.u32 s15, s15 - 80381a8: eddf 6a6e vldr s13, [pc, #440] ; 8038364 - 80381ac: ee86 7aa7 vdiv.f32 s14, s13, s15 - 80381b0: 4b69 ldr r3, [pc, #420] ; (8038358 ) - 80381b2: 6b1b ldr r3, [r3, #48] ; 0x30 - 80381b4: f3c3 0308 ubfx r3, r3, #0, #9 - 80381b8: ee07 3a90 vmov s15, r3 - 80381bc: eef8 6a67 vcvt.f32.u32 s13, s15 - 80381c0: ed97 6a03 vldr s12, [r7, #12] - 80381c4: eddf 5a66 vldr s11, [pc, #408] ; 8038360 - 80381c8: eec6 7a25 vdiv.f32 s15, s12, s11 - 80381cc: ee76 7aa7 vadd.f32 s15, s13, s15 - 80381d0: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 80381d4: ee77 7aa6 vadd.f32 s15, s15, s13 - 80381d8: ee67 7a27 vmul.f32 s15, s14, s15 - 80381dc: edc7 7a07 vstr s15, [r7, #28] + 80381de: 697b ldr r3, [r7, #20] + 80381e0: ee07 3a90 vmov s15, r3 + 80381e4: eef8 7a67 vcvt.f32.u32 s15, s15 + 80381e8: eddf 6a6e vldr s13, [pc, #440] ; 80383a4 + 80381ec: ee86 7aa7 vdiv.f32 s14, s13, s15 + 80381f0: 4b69 ldr r3, [pc, #420] ; (8038398 ) + 80381f2: 6b1b ldr r3, [r3, #48] ; 0x30 + 80381f4: f3c3 0308 ubfx r3, r3, #0, #9 + 80381f8: ee07 3a90 vmov s15, r3 + 80381fc: eef8 6a67 vcvt.f32.u32 s13, s15 + 8038200: ed97 6a03 vldr s12, [r7, #12] + 8038204: eddf 5a66 vldr s11, [pc, #408] ; 80383a0 + 8038208: eec6 7a25 vdiv.f32 s15, s12, s11 + 803820c: ee76 7aa7 vadd.f32 s15, s13, s15 + 8038210: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8038214: ee77 7aa6 vadd.f32 s15, s15, s13 + 8038218: ee67 7a27 vmul.f32 s15, s14, s15 + 803821c: edc7 7a07 vstr s15, [r7, #28] break; - 80381e0: e065 b.n 80382ae + 8038220: e065 b.n 80382ee case RCC_PLLSOURCE_CSI: /* CSI used as PLL clock source */ pll1vco = ((float_t)CSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 80381e2: 697b ldr r3, [r7, #20] - 80381e4: ee07 3a90 vmov s15, r3 - 80381e8: eef8 7a67 vcvt.f32.u32 s15, s15 - 80381ec: eddf 6a5e vldr s13, [pc, #376] ; 8038368 - 80381f0: ee86 7aa7 vdiv.f32 s14, s13, s15 - 80381f4: 4b58 ldr r3, [pc, #352] ; (8038358 ) - 80381f6: 6b1b ldr r3, [r3, #48] ; 0x30 - 80381f8: f3c3 0308 ubfx r3, r3, #0, #9 - 80381fc: ee07 3a90 vmov s15, r3 - 8038200: eef8 6a67 vcvt.f32.u32 s13, s15 - 8038204: ed97 6a03 vldr s12, [r7, #12] - 8038208: eddf 5a55 vldr s11, [pc, #340] ; 8038360 - 803820c: eec6 7a25 vdiv.f32 s15, s12, s11 - 8038210: ee76 7aa7 vadd.f32 s15, s13, s15 - 8038214: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 8038218: ee77 7aa6 vadd.f32 s15, s15, s13 - 803821c: ee67 7a27 vmul.f32 s15, s14, s15 - 8038220: edc7 7a07 vstr s15, [r7, #28] + 8038222: 697b ldr r3, [r7, #20] + 8038224: ee07 3a90 vmov s15, r3 + 8038228: eef8 7a67 vcvt.f32.u32 s15, s15 + 803822c: eddf 6a5e vldr s13, [pc, #376] ; 80383a8 + 8038230: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8038234: 4b58 ldr r3, [pc, #352] ; (8038398 ) + 8038236: 6b1b ldr r3, [r3, #48] ; 0x30 + 8038238: f3c3 0308 ubfx r3, r3, #0, #9 + 803823c: ee07 3a90 vmov s15, r3 + 8038240: eef8 6a67 vcvt.f32.u32 s13, s15 + 8038244: ed97 6a03 vldr s12, [r7, #12] + 8038248: eddf 5a55 vldr s11, [pc, #340] ; 80383a0 + 803824c: eec6 7a25 vdiv.f32 s15, s12, s11 + 8038250: ee76 7aa7 vadd.f32 s15, s13, s15 + 8038254: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 8038258: ee77 7aa6 vadd.f32 s15, s15, s13 + 803825c: ee67 7a27 vmul.f32 s15, s14, s15 + 8038260: edc7 7a07 vstr s15, [r7, #28] break; - 8038224: e043 b.n 80382ae + 8038264: e043 b.n 80382ee case RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ pll1vco = ((float_t)HSE_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 8038226: 697b ldr r3, [r7, #20] - 8038228: ee07 3a90 vmov s15, r3 - 803822c: eef8 7a67 vcvt.f32.u32 s15, s15 - 8038230: eddf 6a4e vldr s13, [pc, #312] ; 803836c - 8038234: ee86 7aa7 vdiv.f32 s14, s13, s15 - 8038238: 4b47 ldr r3, [pc, #284] ; (8038358 ) - 803823a: 6b1b ldr r3, [r3, #48] ; 0x30 - 803823c: f3c3 0308 ubfx r3, r3, #0, #9 - 8038240: ee07 3a90 vmov s15, r3 - 8038244: eef8 6a67 vcvt.f32.u32 s13, s15 - 8038248: ed97 6a03 vldr s12, [r7, #12] - 803824c: eddf 5a44 vldr s11, [pc, #272] ; 8038360 - 8038250: eec6 7a25 vdiv.f32 s15, s12, s11 - 8038254: ee76 7aa7 vadd.f32 s15, s13, s15 - 8038258: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 803825c: ee77 7aa6 vadd.f32 s15, s15, s13 - 8038260: ee67 7a27 vmul.f32 s15, s14, s15 - 8038264: edc7 7a07 vstr s15, [r7, #28] + 8038266: 697b ldr r3, [r7, #20] + 8038268: ee07 3a90 vmov s15, r3 + 803826c: eef8 7a67 vcvt.f32.u32 s15, s15 + 8038270: eddf 6a4e vldr s13, [pc, #312] ; 80383ac + 8038274: ee86 7aa7 vdiv.f32 s14, s13, s15 + 8038278: 4b47 ldr r3, [pc, #284] ; (8038398 ) + 803827a: 6b1b ldr r3, [r3, #48] ; 0x30 + 803827c: f3c3 0308 ubfx r3, r3, #0, #9 + 8038280: ee07 3a90 vmov s15, r3 + 8038284: eef8 6a67 vcvt.f32.u32 s13, s15 + 8038288: ed97 6a03 vldr s12, [r7, #12] + 803828c: eddf 5a44 vldr s11, [pc, #272] ; 80383a0 + 8038290: eec6 7a25 vdiv.f32 s15, s12, s11 + 8038294: ee76 7aa7 vadd.f32 s15, s13, s15 + 8038298: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 803829c: ee77 7aa6 vadd.f32 s15, s15, s13 + 80382a0: ee67 7a27 vmul.f32 s15, s14, s15 + 80382a4: edc7 7a07 vstr s15, [r7, #28] break; - 8038268: e021 b.n 80382ae + 80382a8: e021 b.n 80382ee default: pll1vco = ((float_t)HSI_VALUE / (float_t)pll1m) * ((float_t)(uint32_t)(RCC->PLL1DIVR & RCC_PLL1DIVR_N1) + (fracn1/(float_t)0x2000) +(float_t)1 ); - 803826a: 697b ldr r3, [r7, #20] - 803826c: ee07 3a90 vmov s15, r3 - 8038270: eef8 7a67 vcvt.f32.u32 s15, s15 - 8038274: eddf 6a3b vldr s13, [pc, #236] ; 8038364 - 8038278: ee86 7aa7 vdiv.f32 s14, s13, s15 - 803827c: 4b36 ldr r3, [pc, #216] ; (8038358 ) - 803827e: 6b1b ldr r3, [r3, #48] ; 0x30 - 8038280: f3c3 0308 ubfx r3, r3, #0, #9 - 8038284: ee07 3a90 vmov s15, r3 - 8038288: eef8 6a67 vcvt.f32.u32 s13, s15 - 803828c: ed97 6a03 vldr s12, [r7, #12] - 8038290: eddf 5a33 vldr s11, [pc, #204] ; 8038360 - 8038294: eec6 7a25 vdiv.f32 s15, s12, s11 - 8038298: ee76 7aa7 vadd.f32 s15, s13, s15 - 803829c: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 - 80382a0: ee77 7aa6 vadd.f32 s15, s15, s13 - 80382a4: ee67 7a27 vmul.f32 s15, s14, s15 - 80382a8: edc7 7a07 vstr s15, [r7, #28] + 80382aa: 697b ldr r3, [r7, #20] + 80382ac: ee07 3a90 vmov s15, r3 + 80382b0: eef8 7a67 vcvt.f32.u32 s15, s15 + 80382b4: eddf 6a3b vldr s13, [pc, #236] ; 80383a4 + 80382b8: ee86 7aa7 vdiv.f32 s14, s13, s15 + 80382bc: 4b36 ldr r3, [pc, #216] ; (8038398 ) + 80382be: 6b1b ldr r3, [r3, #48] ; 0x30 + 80382c0: f3c3 0308 ubfx r3, r3, #0, #9 + 80382c4: ee07 3a90 vmov s15, r3 + 80382c8: eef8 6a67 vcvt.f32.u32 s13, s15 + 80382cc: ed97 6a03 vldr s12, [r7, #12] + 80382d0: eddf 5a33 vldr s11, [pc, #204] ; 80383a0 + 80382d4: eec6 7a25 vdiv.f32 s15, s12, s11 + 80382d8: ee76 7aa7 vadd.f32 s15, s13, s15 + 80382dc: eef7 6a00 vmov.f32 s13, #112 ; 0x3f800000 1.0 + 80382e0: ee77 7aa6 vadd.f32 s15, s15, s13 + 80382e4: ee67 7a27 vmul.f32 s15, s14, s15 + 80382e8: edc7 7a07 vstr s15, [r7, #28] break; - 80382ac: bf00 nop + 80382ec: bf00 nop } PLL1_Clocks->PLL1_P_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_P1) >>9) + (float_t)1 )) ; - 80382ae: 4b2a ldr r3, [pc, #168] ; (8038358 ) - 80382b0: 6b1b ldr r3, [r3, #48] ; 0x30 - 80382b2: 0a5b lsrs r3, r3, #9 - 80382b4: f003 037f and.w r3, r3, #127 ; 0x7f - 80382b8: ee07 3a90 vmov s15, r3 - 80382bc: eef8 7a67 vcvt.f32.u32 s15, s15 - 80382c0: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 80382c4: ee37 7a87 vadd.f32 s14, s15, s14 - 80382c8: edd7 6a07 vldr s13, [r7, #28] - 80382cc: eec6 7a87 vdiv.f32 s15, s13, s14 - 80382d0: eefc 7ae7 vcvt.u32.f32 s15, s15 - 80382d4: ee17 2a90 vmov r2, s15 - 80382d8: 687b ldr r3, [r7, #4] - 80382da: 601a str r2, [r3, #0] + 80382ee: 4b2a ldr r3, [pc, #168] ; (8038398 ) + 80382f0: 6b1b ldr r3, [r3, #48] ; 0x30 + 80382f2: 0a5b lsrs r3, r3, #9 + 80382f4: f003 037f and.w r3, r3, #127 ; 0x7f + 80382f8: ee07 3a90 vmov s15, r3 + 80382fc: eef8 7a67 vcvt.f32.u32 s15, s15 + 8038300: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8038304: ee37 7a87 vadd.f32 s14, s15, s14 + 8038308: edd7 6a07 vldr s13, [r7, #28] + 803830c: eec6 7a87 vdiv.f32 s15, s13, s14 + 8038310: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8038314: ee17 2a90 vmov r2, s15 + 8038318: 687b ldr r3, [r7, #4] + 803831a: 601a str r2, [r3, #0] PLL1_Clocks->PLL1_Q_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_Q1) >>16) + (float_t)1 )) ; - 80382dc: 4b1e ldr r3, [pc, #120] ; (8038358 ) - 80382de: 6b1b ldr r3, [r3, #48] ; 0x30 - 80382e0: 0c1b lsrs r3, r3, #16 - 80382e2: f003 037f and.w r3, r3, #127 ; 0x7f - 80382e6: ee07 3a90 vmov s15, r3 - 80382ea: eef8 7a67 vcvt.f32.u32 s15, s15 - 80382ee: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 80382f2: ee37 7a87 vadd.f32 s14, s15, s14 - 80382f6: edd7 6a07 vldr s13, [r7, #28] - 80382fa: eec6 7a87 vdiv.f32 s15, s13, s14 - 80382fe: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8038302: ee17 2a90 vmov r2, s15 - 8038306: 687b ldr r3, [r7, #4] - 8038308: 605a str r2, [r3, #4] + 803831c: 4b1e ldr r3, [pc, #120] ; (8038398 ) + 803831e: 6b1b ldr r3, [r3, #48] ; 0x30 + 8038320: 0c1b lsrs r3, r3, #16 + 8038322: f003 037f and.w r3, r3, #127 ; 0x7f + 8038326: ee07 3a90 vmov s15, r3 + 803832a: eef8 7a67 vcvt.f32.u32 s15, s15 + 803832e: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8038332: ee37 7a87 vadd.f32 s14, s15, s14 + 8038336: edd7 6a07 vldr s13, [r7, #28] + 803833a: eec6 7a87 vdiv.f32 s15, s13, s14 + 803833e: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8038342: ee17 2a90 vmov r2, s15 + 8038346: 687b ldr r3, [r7, #4] + 8038348: 605a str r2, [r3, #4] PLL1_Clocks->PLL1_R_Frequency = (uint32_t)(float_t)(pll1vco/((float_t)(uint32_t)((RCC->PLL1DIVR & RCC_PLL1DIVR_R1) >>24) + (float_t)1 )) ; - 803830a: 4b13 ldr r3, [pc, #76] ; (8038358 ) - 803830c: 6b1b ldr r3, [r3, #48] ; 0x30 - 803830e: 0e1b lsrs r3, r3, #24 - 8038310: f003 037f and.w r3, r3, #127 ; 0x7f - 8038314: ee07 3a90 vmov s15, r3 - 8038318: eef8 7a67 vcvt.f32.u32 s15, s15 - 803831c: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 - 8038320: ee37 7a87 vadd.f32 s14, s15, s14 - 8038324: edd7 6a07 vldr s13, [r7, #28] - 8038328: eec6 7a87 vdiv.f32 s15, s13, s14 - 803832c: eefc 7ae7 vcvt.u32.f32 s15, s15 - 8038330: ee17 2a90 vmov r2, s15 - 8038334: 687b ldr r3, [r7, #4] - 8038336: 609a str r2, [r3, #8] + 803834a: 4b13 ldr r3, [pc, #76] ; (8038398 ) + 803834c: 6b1b ldr r3, [r3, #48] ; 0x30 + 803834e: 0e1b lsrs r3, r3, #24 + 8038350: f003 037f and.w r3, r3, #127 ; 0x7f + 8038354: ee07 3a90 vmov s15, r3 + 8038358: eef8 7a67 vcvt.f32.u32 s15, s15 + 803835c: eeb7 7a00 vmov.f32 s14, #112 ; 0x3f800000 1.0 + 8038360: ee37 7a87 vadd.f32 s14, s15, s14 + 8038364: edd7 6a07 vldr s13, [r7, #28] + 8038368: eec6 7a87 vdiv.f32 s15, s13, s14 + 803836c: eefc 7ae7 vcvt.u32.f32 s15, s15 + 8038370: ee17 2a90 vmov r2, s15 + 8038374: 687b ldr r3, [r7, #4] + 8038376: 609a str r2, [r3, #8] PLL1_Clocks->PLL1_P_Frequency = 0U; PLL1_Clocks->PLL1_Q_Frequency = 0U; PLL1_Clocks->PLL1_R_Frequency = 0U; } } - 8038338: e008 b.n 803834c + 8038378: e008 b.n 803838c PLL1_Clocks->PLL1_P_Frequency = 0U; - 803833a: 687b ldr r3, [r7, #4] - 803833c: 2200 movs r2, #0 - 803833e: 601a str r2, [r3, #0] + 803837a: 687b ldr r3, [r7, #4] + 803837c: 2200 movs r2, #0 + 803837e: 601a str r2, [r3, #0] PLL1_Clocks->PLL1_Q_Frequency = 0U; - 8038340: 687b ldr r3, [r7, #4] - 8038342: 2200 movs r2, #0 - 8038344: 605a str r2, [r3, #4] + 8038380: 687b ldr r3, [r7, #4] + 8038382: 2200 movs r2, #0 + 8038384: 605a str r2, [r3, #4] PLL1_Clocks->PLL1_R_Frequency = 0U; - 8038346: 687b ldr r3, [r7, #4] - 8038348: 2200 movs r2, #0 - 803834a: 609a str r2, [r3, #8] -} - 803834c: bf00 nop - 803834e: 3724 adds r7, #36 ; 0x24 - 8038350: 46bd mov sp, r7 - 8038352: f85d 7b04 ldr.w r7, [sp], #4 - 8038356: 4770 bx lr - 8038358: 58024400 .word 0x58024400 - 803835c: 03d09000 .word 0x03d09000 - 8038360: 46000000 .word 0x46000000 - 8038364: 4c742400 .word 0x4c742400 - 8038368: 4a742400 .word 0x4a742400 - 803836c: 4bbebc20 .word 0x4bbebc20 - -08038370 : + 8038386: 687b ldr r3, [r7, #4] + 8038388: 2200 movs r2, #0 + 803838a: 609a str r2, [r3, #8] +} + 803838c: bf00 nop + 803838e: 3724 adds r7, #36 ; 0x24 + 8038390: 46bd mov sp, r7 + 8038392: f85d 7b04 ldr.w r7, [sp], #4 + 8038396: 4770 bx lr + 8038398: 58024400 .word 0x58024400 + 803839c: 03d09000 .word 0x03d09000 + 80383a0: 46000000 .word 0x46000000 + 80383a4: 4c742400 .word 0x4c742400 + 80383a8: 4a742400 .word 0x4a742400 + 80383ac: 4bbebc20 .word 0x4bbebc20 + +080383b0 : * @note PLL2 is temporary disabled to apply new parameters * * @retval HAL status */ static HAL_StatusTypeDef RCCEx_PLL2_Config(RCC_PLL2InitTypeDef *pll2, uint32_t Divider) { - 8038370: b580 push {r7, lr} - 8038372: b084 sub sp, #16 - 8038374: af00 add r7, sp, #0 - 8038376: 6078 str r0, [r7, #4] - 8038378: 6039 str r1, [r7, #0] + 80383b0: b580 push {r7, lr} + 80383b2: b084 sub sp, #16 + 80383b4: af00 add r7, sp, #0 + 80383b6: 6078 str r0, [r7, #4] + 80383b8: 6039 str r1, [r7, #0] uint32_t tickstart; HAL_StatusTypeDef status = HAL_OK; - 803837a: 2300 movs r3, #0 - 803837c: 73fb strb r3, [r7, #15] + 80383ba: 2300 movs r3, #0 + 80383bc: 73fb strb r3, [r7, #15] assert_param(IS_RCC_PLL2RGE_VALUE(pll2->PLL2RGE)); assert_param(IS_RCC_PLL2VCO_VALUE(pll2->PLL2VCOSEL)); assert_param(IS_RCC_PLLFRACN_VALUE(pll2->PLL2FRACN)); /* Check that PLL2 OSC clock source is already set */ if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_NONE) - 803837e: 4b53 ldr r3, [pc, #332] ; (80384cc ) - 8038380: 6a9b ldr r3, [r3, #40] ; 0x28 - 8038382: f003 0303 and.w r3, r3, #3 - 8038386: 2b03 cmp r3, #3 - 8038388: d101 bne.n 803838e + 80383be: 4b53 ldr r3, [pc, #332] ; (803850c ) + 80383c0: 6a9b ldr r3, [r3, #40] ; 0x28 + 80383c2: f003 0303 and.w r3, r3, #3 + 80383c6: 2b03 cmp r3, #3 + 80383c8: d101 bne.n 80383ce { return HAL_ERROR; - 803838a: 2301 movs r3, #1 - 803838c: e099 b.n 80384c2 + 80383ca: 2301 movs r3, #1 + 80383cc: e099 b.n 8038502 else { /* Disable PLL2. */ __HAL_RCC_PLL2_DISABLE(); - 803838e: 4b4f ldr r3, [pc, #316] ; (80384cc ) - 8038390: 681b ldr r3, [r3, #0] - 8038392: 4a4e ldr r2, [pc, #312] ; (80384cc ) - 8038394: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 - 8038398: 6013 str r3, [r2, #0] + 80383ce: 4b4f ldr r3, [pc, #316] ; (803850c ) + 80383d0: 681b ldr r3, [r3, #0] + 80383d2: 4a4e ldr r2, [pc, #312] ; (803850c ) + 80383d4: f023 6380 bic.w r3, r3, #67108864 ; 0x4000000 + 80383d8: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 803839a: f7f4 fdfb bl 802cf94 - 803839e: 60b8 str r0, [r7, #8] + 80383da: f7f4 fdfb bl 802cfd4 + 80383de: 60b8 str r0, [r7, #8] /* Wait till PLL is disabled */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) != 0U) - 80383a0: e008 b.n 80383b4 + 80383e0: e008 b.n 80383f4 { if( (HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE) - 80383a2: f7f4 fdf7 bl 802cf94 - 80383a6: 4602 mov r2, r0 - 80383a8: 68bb ldr r3, [r7, #8] - 80383aa: 1ad3 subs r3, r2, r3 - 80383ac: 2b02 cmp r3, #2 - 80383ae: d901 bls.n 80383b4 + 80383e2: f7f4 fdf7 bl 802cfd4 + 80383e6: 4602 mov r2, r0 + 80383e8: 68bb ldr r3, [r7, #8] + 80383ea: 1ad3 subs r3, r2, r3 + 80383ec: 2b02 cmp r3, #2 + 80383ee: d901 bls.n 80383f4 { return HAL_TIMEOUT; - 80383b0: 2303 movs r3, #3 - 80383b2: e086 b.n 80384c2 + 80383f0: 2303 movs r3, #3 + 80383f2: e086 b.n 8038502 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) != 0U) - 80383b4: 4b45 ldr r3, [pc, #276] ; (80384cc ) - 80383b6: 681b ldr r3, [r3, #0] - 80383b8: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 80383bc: 2b00 cmp r3, #0 - 80383be: d1f0 bne.n 80383a2 + 80383f4: 4b45 ldr r3, [pc, #276] ; (803850c ) + 80383f6: 681b ldr r3, [r3, #0] + 80383f8: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 80383fc: 2b00 cmp r3, #0 + 80383fe: d1f0 bne.n 80383e2 } } /* Configure PLL2 multiplication and division factors. */ __HAL_RCC_PLL2_CONFIG(pll2->PLL2M, - 80383c0: 4b42 ldr r3, [pc, #264] ; (80384cc ) - 80383c2: 6a9b ldr r3, [r3, #40] ; 0x28 - 80383c4: f423 327c bic.w r2, r3, #258048 ; 0x3f000 - 80383c8: 687b ldr r3, [r7, #4] - 80383ca: 681b ldr r3, [r3, #0] - 80383cc: 031b lsls r3, r3, #12 - 80383ce: 493f ldr r1, [pc, #252] ; (80384cc ) - 80383d0: 4313 orrs r3, r2 - 80383d2: 628b str r3, [r1, #40] ; 0x28 - 80383d4: 687b ldr r3, [r7, #4] - 80383d6: 685b ldr r3, [r3, #4] - 80383d8: 3b01 subs r3, #1 - 80383da: f3c3 0208 ubfx r2, r3, #0, #9 - 80383de: 687b ldr r3, [r7, #4] - 80383e0: 689b ldr r3, [r3, #8] - 80383e2: 3b01 subs r3, #1 - 80383e4: 025b lsls r3, r3, #9 - 80383e6: b29b uxth r3, r3 - 80383e8: 431a orrs r2, r3 - 80383ea: 687b ldr r3, [r7, #4] - 80383ec: 68db ldr r3, [r3, #12] - 80383ee: 3b01 subs r3, #1 - 80383f0: 041b lsls r3, r3, #16 - 80383f2: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 80383f6: 431a orrs r2, r3 - 80383f8: 687b ldr r3, [r7, #4] - 80383fa: 691b ldr r3, [r3, #16] - 80383fc: 3b01 subs r3, #1 - 80383fe: 061b lsls r3, r3, #24 - 8038400: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 8038404: 4931 ldr r1, [pc, #196] ; (80384cc ) - 8038406: 4313 orrs r3, r2 - 8038408: 638b str r3, [r1, #56] ; 0x38 + 8038400: 4b42 ldr r3, [pc, #264] ; (803850c ) + 8038402: 6a9b ldr r3, [r3, #40] ; 0x28 + 8038404: f423 327c bic.w r2, r3, #258048 ; 0x3f000 + 8038408: 687b ldr r3, [r7, #4] + 803840a: 681b ldr r3, [r3, #0] + 803840c: 031b lsls r3, r3, #12 + 803840e: 493f ldr r1, [pc, #252] ; (803850c ) + 8038410: 4313 orrs r3, r2 + 8038412: 628b str r3, [r1, #40] ; 0x28 + 8038414: 687b ldr r3, [r7, #4] + 8038416: 685b ldr r3, [r3, #4] + 8038418: 3b01 subs r3, #1 + 803841a: f3c3 0208 ubfx r2, r3, #0, #9 + 803841e: 687b ldr r3, [r7, #4] + 8038420: 689b ldr r3, [r3, #8] + 8038422: 3b01 subs r3, #1 + 8038424: 025b lsls r3, r3, #9 + 8038426: b29b uxth r3, r3 + 8038428: 431a orrs r2, r3 + 803842a: 687b ldr r3, [r7, #4] + 803842c: 68db ldr r3, [r3, #12] + 803842e: 3b01 subs r3, #1 + 8038430: 041b lsls r3, r3, #16 + 8038432: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 8038436: 431a orrs r2, r3 + 8038438: 687b ldr r3, [r7, #4] + 803843a: 691b ldr r3, [r3, #16] + 803843c: 3b01 subs r3, #1 + 803843e: 061b lsls r3, r3, #24 + 8038440: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 8038444: 4931 ldr r1, [pc, #196] ; (803850c ) + 8038446: 4313 orrs r3, r2 + 8038448: 638b str r3, [r1, #56] ; 0x38 pll2->PLL2P, pll2->PLL2Q, pll2->PLL2R); /* Select PLL2 input reference frequency range: VCI */ __HAL_RCC_PLL2_VCIRANGE(pll2->PLL2RGE) ; - 803840a: 4b30 ldr r3, [pc, #192] ; (80384cc ) - 803840c: 6adb ldr r3, [r3, #44] ; 0x2c - 803840e: f023 02c0 bic.w r2, r3, #192 ; 0xc0 - 8038412: 687b ldr r3, [r7, #4] - 8038414: 695b ldr r3, [r3, #20] - 8038416: 492d ldr r1, [pc, #180] ; (80384cc ) - 8038418: 4313 orrs r3, r2 - 803841a: 62cb str r3, [r1, #44] ; 0x2c + 803844a: 4b30 ldr r3, [pc, #192] ; (803850c ) + 803844c: 6adb ldr r3, [r3, #44] ; 0x2c + 803844e: f023 02c0 bic.w r2, r3, #192 ; 0xc0 + 8038452: 687b ldr r3, [r7, #4] + 8038454: 695b ldr r3, [r3, #20] + 8038456: 492d ldr r1, [pc, #180] ; (803850c ) + 8038458: 4313 orrs r3, r2 + 803845a: 62cb str r3, [r1, #44] ; 0x2c /* Select PLL2 output frequency range : VCO */ __HAL_RCC_PLL2_VCORANGE(pll2->PLL2VCOSEL) ; - 803841c: 4b2b ldr r3, [pc, #172] ; (80384cc ) - 803841e: 6adb ldr r3, [r3, #44] ; 0x2c - 8038420: f023 0220 bic.w r2, r3, #32 - 8038424: 687b ldr r3, [r7, #4] - 8038426: 699b ldr r3, [r3, #24] - 8038428: 4928 ldr r1, [pc, #160] ; (80384cc ) - 803842a: 4313 orrs r3, r2 - 803842c: 62cb str r3, [r1, #44] ; 0x2c + 803845c: 4b2b ldr r3, [pc, #172] ; (803850c ) + 803845e: 6adb ldr r3, [r3, #44] ; 0x2c + 8038460: f023 0220 bic.w r2, r3, #32 + 8038464: 687b ldr r3, [r7, #4] + 8038466: 699b ldr r3, [r3, #24] + 8038468: 4928 ldr r1, [pc, #160] ; (803850c ) + 803846a: 4313 orrs r3, r2 + 803846c: 62cb str r3, [r1, #44] ; 0x2c /* Disable PLL2FRACN . */ __HAL_RCC_PLL2FRACN_DISABLE(); - 803842e: 4b27 ldr r3, [pc, #156] ; (80384cc ) - 8038430: 6adb ldr r3, [r3, #44] ; 0x2c - 8038432: 4a26 ldr r2, [pc, #152] ; (80384cc ) - 8038434: f023 0310 bic.w r3, r3, #16 - 8038438: 62d3 str r3, [r2, #44] ; 0x2c + 803846e: 4b27 ldr r3, [pc, #156] ; (803850c ) + 8038470: 6adb ldr r3, [r3, #44] ; 0x2c + 8038472: 4a26 ldr r2, [pc, #152] ; (803850c ) + 8038474: f023 0310 bic.w r3, r3, #16 + 8038478: 62d3 str r3, [r2, #44] ; 0x2c /* Configures PLL2 clock Fractional Part Of The Multiplication Factor */ __HAL_RCC_PLL2FRACN_CONFIG(pll2->PLL2FRACN); - 803843a: 4b24 ldr r3, [pc, #144] ; (80384cc ) - 803843c: 6bda ldr r2, [r3, #60] ; 0x3c - 803843e: 4b24 ldr r3, [pc, #144] ; (80384d0 ) - 8038440: 4013 ands r3, r2 - 8038442: 687a ldr r2, [r7, #4] - 8038444: 69d2 ldr r2, [r2, #28] - 8038446: 00d2 lsls r2, r2, #3 - 8038448: 4920 ldr r1, [pc, #128] ; (80384cc ) - 803844a: 4313 orrs r3, r2 - 803844c: 63cb str r3, [r1, #60] ; 0x3c + 803847a: 4b24 ldr r3, [pc, #144] ; (803850c ) + 803847c: 6bda ldr r2, [r3, #60] ; 0x3c + 803847e: 4b24 ldr r3, [pc, #144] ; (8038510 ) + 8038480: 4013 ands r3, r2 + 8038482: 687a ldr r2, [r7, #4] + 8038484: 69d2 ldr r2, [r2, #28] + 8038486: 00d2 lsls r2, r2, #3 + 8038488: 4920 ldr r1, [pc, #128] ; (803850c ) + 803848a: 4313 orrs r3, r2 + 803848c: 63cb str r3, [r1, #60] ; 0x3c /* Enable PLL2FRACN . */ __HAL_RCC_PLL2FRACN_ENABLE(); - 803844e: 4b1f ldr r3, [pc, #124] ; (80384cc ) - 8038450: 6adb ldr r3, [r3, #44] ; 0x2c - 8038452: 4a1e ldr r2, [pc, #120] ; (80384cc ) - 8038454: f043 0310 orr.w r3, r3, #16 - 8038458: 62d3 str r3, [r2, #44] ; 0x2c + 803848e: 4b1f ldr r3, [pc, #124] ; (803850c ) + 8038490: 6adb ldr r3, [r3, #44] ; 0x2c + 8038492: 4a1e ldr r2, [pc, #120] ; (803850c ) + 8038494: f043 0310 orr.w r3, r3, #16 + 8038498: 62d3 str r3, [r2, #44] ; 0x2c /* Enable the PLL2 clock output */ if(Divider == DIVIDER_P_UPDATE) - 803845a: 683b ldr r3, [r7, #0] - 803845c: 2b00 cmp r3, #0 - 803845e: d106 bne.n 803846e + 803849a: 683b ldr r3, [r7, #0] + 803849c: 2b00 cmp r3, #0 + 803849e: d106 bne.n 80384ae { __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVP); - 8038460: 4b1a ldr r3, [pc, #104] ; (80384cc ) - 8038462: 6adb ldr r3, [r3, #44] ; 0x2c - 8038464: 4a19 ldr r2, [pc, #100] ; (80384cc ) - 8038466: f443 2300 orr.w r3, r3, #524288 ; 0x80000 - 803846a: 62d3 str r3, [r2, #44] ; 0x2c - 803846c: e00f b.n 803848e + 80384a0: 4b1a ldr r3, [pc, #104] ; (803850c ) + 80384a2: 6adb ldr r3, [r3, #44] ; 0x2c + 80384a4: 4a19 ldr r2, [pc, #100] ; (803850c ) + 80384a6: f443 2300 orr.w r3, r3, #524288 ; 0x80000 + 80384aa: 62d3 str r3, [r2, #44] ; 0x2c + 80384ac: e00f b.n 80384ce } else if(Divider == DIVIDER_Q_UPDATE) - 803846e: 683b ldr r3, [r7, #0] - 8038470: 2b01 cmp r3, #1 - 8038472: d106 bne.n 8038482 + 80384ae: 683b ldr r3, [r7, #0] + 80384b0: 2b01 cmp r3, #1 + 80384b2: d106 bne.n 80384c2 { __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVQ); - 8038474: 4b15 ldr r3, [pc, #84] ; (80384cc ) - 8038476: 6adb ldr r3, [r3, #44] ; 0x2c - 8038478: 4a14 ldr r2, [pc, #80] ; (80384cc ) - 803847a: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 - 803847e: 62d3 str r3, [r2, #44] ; 0x2c - 8038480: e005 b.n 803848e + 80384b4: 4b15 ldr r3, [pc, #84] ; (803850c ) + 80384b6: 6adb ldr r3, [r3, #44] ; 0x2c + 80384b8: 4a14 ldr r2, [pc, #80] ; (803850c ) + 80384ba: f443 1380 orr.w r3, r3, #1048576 ; 0x100000 + 80384be: 62d3 str r3, [r2, #44] ; 0x2c + 80384c0: e005 b.n 80384ce } else { __HAL_RCC_PLL2CLKOUT_ENABLE(RCC_PLL2_DIVR); - 8038482: 4b12 ldr r3, [pc, #72] ; (80384cc ) - 8038484: 6adb ldr r3, [r3, #44] ; 0x2c - 8038486: 4a11 ldr r2, [pc, #68] ; (80384cc ) - 8038488: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 - 803848c: 62d3 str r3, [r2, #44] ; 0x2c + 80384c2: 4b12 ldr r3, [pc, #72] ; (803850c ) + 80384c4: 6adb ldr r3, [r3, #44] ; 0x2c + 80384c6: 4a11 ldr r2, [pc, #68] ; (803850c ) + 80384c8: f443 1300 orr.w r3, r3, #2097152 ; 0x200000 + 80384cc: 62d3 str r3, [r2, #44] ; 0x2c } /* Enable PLL2. */ __HAL_RCC_PLL2_ENABLE(); - 803848e: 4b0f ldr r3, [pc, #60] ; (80384cc ) - 8038490: 681b ldr r3, [r3, #0] - 8038492: 4a0e ldr r2, [pc, #56] ; (80384cc ) - 8038494: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 - 8038498: 6013 str r3, [r2, #0] + 80384ce: 4b0f ldr r3, [pc, #60] ; (803850c ) + 80384d0: 681b ldr r3, [r3, #0] + 80384d2: 4a0e ldr r2, [pc, #56] ; (803850c ) + 80384d4: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + 80384d8: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 803849a: f7f4 fd7b bl 802cf94 - 803849e: 60b8 str r0, [r7, #8] + 80384da: f7f4 fd7b bl 802cfd4 + 80384de: 60b8 str r0, [r7, #8] /* Wait till PLL2 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) == 0U) - 80384a0: e008 b.n 80384b4 + 80384e0: e008 b.n 80384f4 { if( (HAL_GetTick() - tickstart ) > PLL2_TIMEOUT_VALUE) - 80384a2: f7f4 fd77 bl 802cf94 - 80384a6: 4602 mov r2, r0 - 80384a8: 68bb ldr r3, [r7, #8] - 80384aa: 1ad3 subs r3, r2, r3 - 80384ac: 2b02 cmp r3, #2 - 80384ae: d901 bls.n 80384b4 + 80384e2: f7f4 fd77 bl 802cfd4 + 80384e6: 4602 mov r2, r0 + 80384e8: 68bb ldr r3, [r7, #8] + 80384ea: 1ad3 subs r3, r2, r3 + 80384ec: 2b02 cmp r3, #2 + 80384ee: d901 bls.n 80384f4 { return HAL_TIMEOUT; - 80384b0: 2303 movs r3, #3 - 80384b2: e006 b.n 80384c2 + 80384f0: 2303 movs r3, #3 + 80384f2: e006 b.n 8038502 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL2RDY) == 0U) - 80384b4: 4b05 ldr r3, [pc, #20] ; (80384cc ) - 80384b6: 681b ldr r3, [r3, #0] - 80384b8: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 - 80384bc: 2b00 cmp r3, #0 - 80384be: d0f0 beq.n 80384a2 + 80384f4: 4b05 ldr r3, [pc, #20] ; (803850c ) + 80384f6: 681b ldr r3, [r3, #0] + 80384f8: f003 6300 and.w r3, r3, #134217728 ; 0x8000000 + 80384fc: 2b00 cmp r3, #0 + 80384fe: d0f0 beq.n 80384e2 } } return status; - 80384c0: 7bfb ldrb r3, [r7, #15] + 8038500: 7bfb ldrb r3, [r7, #15] } - 80384c2: 4618 mov r0, r3 - 80384c4: 3710 adds r7, #16 - 80384c6: 46bd mov sp, r7 - 80384c8: bd80 pop {r7, pc} - 80384ca: bf00 nop - 80384cc: 58024400 .word 0x58024400 - 80384d0: ffff0007 .word 0xffff0007 + 8038502: 4618 mov r0, r3 + 8038504: 3710 adds r7, #16 + 8038506: 46bd mov sp, r7 + 8038508: bd80 pop {r7, pc} + 803850a: bf00 nop + 803850c: 58024400 .word 0x58024400 + 8038510: ffff0007 .word 0xffff0007 -080384d4 : +08038514 : * @note PLL3 is temporary disabled to apply new parameters * * @retval HAL status */ static HAL_StatusTypeDef RCCEx_PLL3_Config(RCC_PLL3InitTypeDef *pll3, uint32_t Divider) { - 80384d4: b580 push {r7, lr} - 80384d6: b084 sub sp, #16 - 80384d8: af00 add r7, sp, #0 - 80384da: 6078 str r0, [r7, #4] - 80384dc: 6039 str r1, [r7, #0] + 8038514: b580 push {r7, lr} + 8038516: b084 sub sp, #16 + 8038518: af00 add r7, sp, #0 + 803851a: 6078 str r0, [r7, #4] + 803851c: 6039 str r1, [r7, #0] uint32_t tickstart; HAL_StatusTypeDef status = HAL_OK; - 80384de: 2300 movs r3, #0 - 80384e0: 73fb strb r3, [r7, #15] + 803851e: 2300 movs r3, #0 + 8038520: 73fb strb r3, [r7, #15] assert_param(IS_RCC_PLL3RGE_VALUE(pll3->PLL3RGE)); assert_param(IS_RCC_PLL3VCO_VALUE(pll3->PLL3VCOSEL)); assert_param(IS_RCC_PLLFRACN_VALUE(pll3->PLL3FRACN)); /* Check that PLL3 OSC clock source is already set */ if(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_NONE) - 80384e2: 4b53 ldr r3, [pc, #332] ; (8038630 ) - 80384e4: 6a9b ldr r3, [r3, #40] ; 0x28 - 80384e6: f003 0303 and.w r3, r3, #3 - 80384ea: 2b03 cmp r3, #3 - 80384ec: d101 bne.n 80384f2 + 8038522: 4b53 ldr r3, [pc, #332] ; (8038670 ) + 8038524: 6a9b ldr r3, [r3, #40] ; 0x28 + 8038526: f003 0303 and.w r3, r3, #3 + 803852a: 2b03 cmp r3, #3 + 803852c: d101 bne.n 8038532 { return HAL_ERROR; - 80384ee: 2301 movs r3, #1 - 80384f0: e099 b.n 8038626 + 803852e: 2301 movs r3, #1 + 8038530: e099 b.n 8038666 else { /* Disable PLL3. */ __HAL_RCC_PLL3_DISABLE(); - 80384f2: 4b4f ldr r3, [pc, #316] ; (8038630 ) - 80384f4: 681b ldr r3, [r3, #0] - 80384f6: 4a4e ldr r2, [pc, #312] ; (8038630 ) - 80384f8: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 - 80384fc: 6013 str r3, [r2, #0] + 8038532: 4b4f ldr r3, [pc, #316] ; (8038670 ) + 8038534: 681b ldr r3, [r3, #0] + 8038536: 4a4e ldr r2, [pc, #312] ; (8038670 ) + 8038538: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 803853c: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80384fe: f7f4 fd49 bl 802cf94 - 8038502: 60b8 str r0, [r7, #8] + 803853e: f7f4 fd49 bl 802cfd4 + 8038542: 60b8 str r0, [r7, #8] /* Wait till PLL3 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) != 0U) - 8038504: e008 b.n 8038518 + 8038544: e008 b.n 8038558 { if( (HAL_GetTick() - tickstart ) > PLL3_TIMEOUT_VALUE) - 8038506: f7f4 fd45 bl 802cf94 - 803850a: 4602 mov r2, r0 - 803850c: 68bb ldr r3, [r7, #8] - 803850e: 1ad3 subs r3, r2, r3 - 8038510: 2b02 cmp r3, #2 - 8038512: d901 bls.n 8038518 + 8038546: f7f4 fd45 bl 802cfd4 + 803854a: 4602 mov r2, r0 + 803854c: 68bb ldr r3, [r7, #8] + 803854e: 1ad3 subs r3, r2, r3 + 8038550: 2b02 cmp r3, #2 + 8038552: d901 bls.n 8038558 { return HAL_TIMEOUT; - 8038514: 2303 movs r3, #3 - 8038516: e086 b.n 8038626 + 8038554: 2303 movs r3, #3 + 8038556: e086 b.n 8038666 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) != 0U) - 8038518: 4b45 ldr r3, [pc, #276] ; (8038630 ) - 803851a: 681b ldr r3, [r3, #0] - 803851c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8038520: 2b00 cmp r3, #0 - 8038522: d1f0 bne.n 8038506 + 8038558: 4b45 ldr r3, [pc, #276] ; (8038670 ) + 803855a: 681b ldr r3, [r3, #0] + 803855c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 8038560: 2b00 cmp r3, #0 + 8038562: d1f0 bne.n 8038546 } } /* Configure the PLL3 multiplication and division factors. */ __HAL_RCC_PLL3_CONFIG(pll3->PLL3M, - 8038524: 4b42 ldr r3, [pc, #264] ; (8038630 ) - 8038526: 6a9b ldr r3, [r3, #40] ; 0x28 - 8038528: f023 727c bic.w r2, r3, #66060288 ; 0x3f00000 - 803852c: 687b ldr r3, [r7, #4] - 803852e: 681b ldr r3, [r3, #0] - 8038530: 051b lsls r3, r3, #20 - 8038532: 493f ldr r1, [pc, #252] ; (8038630 ) - 8038534: 4313 orrs r3, r2 - 8038536: 628b str r3, [r1, #40] ; 0x28 - 8038538: 687b ldr r3, [r7, #4] - 803853a: 685b ldr r3, [r3, #4] - 803853c: 3b01 subs r3, #1 - 803853e: f3c3 0208 ubfx r2, r3, #0, #9 - 8038542: 687b ldr r3, [r7, #4] - 8038544: 689b ldr r3, [r3, #8] - 8038546: 3b01 subs r3, #1 - 8038548: 025b lsls r3, r3, #9 - 803854a: b29b uxth r3, r3 - 803854c: 431a orrs r2, r3 - 803854e: 687b ldr r3, [r7, #4] - 8038550: 68db ldr r3, [r3, #12] - 8038552: 3b01 subs r3, #1 - 8038554: 041b lsls r3, r3, #16 - 8038556: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 - 803855a: 431a orrs r2, r3 - 803855c: 687b ldr r3, [r7, #4] - 803855e: 691b ldr r3, [r3, #16] - 8038560: 3b01 subs r3, #1 - 8038562: 061b lsls r3, r3, #24 - 8038564: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 - 8038568: 4931 ldr r1, [pc, #196] ; (8038630 ) - 803856a: 4313 orrs r3, r2 - 803856c: 640b str r3, [r1, #64] ; 0x40 + 8038564: 4b42 ldr r3, [pc, #264] ; (8038670 ) + 8038566: 6a9b ldr r3, [r3, #40] ; 0x28 + 8038568: f023 727c bic.w r2, r3, #66060288 ; 0x3f00000 + 803856c: 687b ldr r3, [r7, #4] + 803856e: 681b ldr r3, [r3, #0] + 8038570: 051b lsls r3, r3, #20 + 8038572: 493f ldr r1, [pc, #252] ; (8038670 ) + 8038574: 4313 orrs r3, r2 + 8038576: 628b str r3, [r1, #40] ; 0x28 + 8038578: 687b ldr r3, [r7, #4] + 803857a: 685b ldr r3, [r3, #4] + 803857c: 3b01 subs r3, #1 + 803857e: f3c3 0208 ubfx r2, r3, #0, #9 + 8038582: 687b ldr r3, [r7, #4] + 8038584: 689b ldr r3, [r3, #8] + 8038586: 3b01 subs r3, #1 + 8038588: 025b lsls r3, r3, #9 + 803858a: b29b uxth r3, r3 + 803858c: 431a orrs r2, r3 + 803858e: 687b ldr r3, [r7, #4] + 8038590: 68db ldr r3, [r3, #12] + 8038592: 3b01 subs r3, #1 + 8038594: 041b lsls r3, r3, #16 + 8038596: f403 03fe and.w r3, r3, #8323072 ; 0x7f0000 + 803859a: 431a orrs r2, r3 + 803859c: 687b ldr r3, [r7, #4] + 803859e: 691b ldr r3, [r3, #16] + 80385a0: 3b01 subs r3, #1 + 80385a2: 061b lsls r3, r3, #24 + 80385a4: f003 43fe and.w r3, r3, #2130706432 ; 0x7f000000 + 80385a8: 4931 ldr r1, [pc, #196] ; (8038670 ) + 80385aa: 4313 orrs r3, r2 + 80385ac: 640b str r3, [r1, #64] ; 0x40 pll3->PLL3P, pll3->PLL3Q, pll3->PLL3R); /* Select PLL3 input reference frequency range: VCI */ __HAL_RCC_PLL3_VCIRANGE(pll3->PLL3RGE) ; - 803856e: 4b30 ldr r3, [pc, #192] ; (8038630 ) - 8038570: 6adb ldr r3, [r3, #44] ; 0x2c - 8038572: f423 6240 bic.w r2, r3, #3072 ; 0xc00 - 8038576: 687b ldr r3, [r7, #4] - 8038578: 695b ldr r3, [r3, #20] - 803857a: 492d ldr r1, [pc, #180] ; (8038630 ) - 803857c: 4313 orrs r3, r2 - 803857e: 62cb str r3, [r1, #44] ; 0x2c + 80385ae: 4b30 ldr r3, [pc, #192] ; (8038670 ) + 80385b0: 6adb ldr r3, [r3, #44] ; 0x2c + 80385b2: f423 6240 bic.w r2, r3, #3072 ; 0xc00 + 80385b6: 687b ldr r3, [r7, #4] + 80385b8: 695b ldr r3, [r3, #20] + 80385ba: 492d ldr r1, [pc, #180] ; (8038670 ) + 80385bc: 4313 orrs r3, r2 + 80385be: 62cb str r3, [r1, #44] ; 0x2c /* Select PLL3 output frequency range : VCO */ __HAL_RCC_PLL3_VCORANGE(pll3->PLL3VCOSEL) ; - 8038580: 4b2b ldr r3, [pc, #172] ; (8038630 ) - 8038582: 6adb ldr r3, [r3, #44] ; 0x2c - 8038584: f423 7200 bic.w r2, r3, #512 ; 0x200 - 8038588: 687b ldr r3, [r7, #4] - 803858a: 699b ldr r3, [r3, #24] - 803858c: 4928 ldr r1, [pc, #160] ; (8038630 ) - 803858e: 4313 orrs r3, r2 - 8038590: 62cb str r3, [r1, #44] ; 0x2c + 80385c0: 4b2b ldr r3, [pc, #172] ; (8038670 ) + 80385c2: 6adb ldr r3, [r3, #44] ; 0x2c + 80385c4: f423 7200 bic.w r2, r3, #512 ; 0x200 + 80385c8: 687b ldr r3, [r7, #4] + 80385ca: 699b ldr r3, [r3, #24] + 80385cc: 4928 ldr r1, [pc, #160] ; (8038670 ) + 80385ce: 4313 orrs r3, r2 + 80385d0: 62cb str r3, [r1, #44] ; 0x2c /* Disable PLL3FRACN . */ __HAL_RCC_PLL3FRACN_DISABLE(); - 8038592: 4b27 ldr r3, [pc, #156] ; (8038630 ) - 8038594: 6adb ldr r3, [r3, #44] ; 0x2c - 8038596: 4a26 ldr r2, [pc, #152] ; (8038630 ) - 8038598: f423 7380 bic.w r3, r3, #256 ; 0x100 - 803859c: 62d3 str r3, [r2, #44] ; 0x2c + 80385d2: 4b27 ldr r3, [pc, #156] ; (8038670 ) + 80385d4: 6adb ldr r3, [r3, #44] ; 0x2c + 80385d6: 4a26 ldr r2, [pc, #152] ; (8038670 ) + 80385d8: f423 7380 bic.w r3, r3, #256 ; 0x100 + 80385dc: 62d3 str r3, [r2, #44] ; 0x2c /* Configures PLL3 clock Fractional Part Of The Multiplication Factor */ __HAL_RCC_PLL3FRACN_CONFIG(pll3->PLL3FRACN); - 803859e: 4b24 ldr r3, [pc, #144] ; (8038630 ) - 80385a0: 6c5a ldr r2, [r3, #68] ; 0x44 - 80385a2: 4b24 ldr r3, [pc, #144] ; (8038634 ) - 80385a4: 4013 ands r3, r2 - 80385a6: 687a ldr r2, [r7, #4] - 80385a8: 69d2 ldr r2, [r2, #28] - 80385aa: 00d2 lsls r2, r2, #3 - 80385ac: 4920 ldr r1, [pc, #128] ; (8038630 ) - 80385ae: 4313 orrs r3, r2 - 80385b0: 644b str r3, [r1, #68] ; 0x44 + 80385de: 4b24 ldr r3, [pc, #144] ; (8038670 ) + 80385e0: 6c5a ldr r2, [r3, #68] ; 0x44 + 80385e2: 4b24 ldr r3, [pc, #144] ; (8038674 ) + 80385e4: 4013 ands r3, r2 + 80385e6: 687a ldr r2, [r7, #4] + 80385e8: 69d2 ldr r2, [r2, #28] + 80385ea: 00d2 lsls r2, r2, #3 + 80385ec: 4920 ldr r1, [pc, #128] ; (8038670 ) + 80385ee: 4313 orrs r3, r2 + 80385f0: 644b str r3, [r1, #68] ; 0x44 /* Enable PLL3FRACN . */ __HAL_RCC_PLL3FRACN_ENABLE(); - 80385b2: 4b1f ldr r3, [pc, #124] ; (8038630 ) - 80385b4: 6adb ldr r3, [r3, #44] ; 0x2c - 80385b6: 4a1e ldr r2, [pc, #120] ; (8038630 ) - 80385b8: f443 7380 orr.w r3, r3, #256 ; 0x100 - 80385bc: 62d3 str r3, [r2, #44] ; 0x2c + 80385f2: 4b1f ldr r3, [pc, #124] ; (8038670 ) + 80385f4: 6adb ldr r3, [r3, #44] ; 0x2c + 80385f6: 4a1e ldr r2, [pc, #120] ; (8038670 ) + 80385f8: f443 7380 orr.w r3, r3, #256 ; 0x100 + 80385fc: 62d3 str r3, [r2, #44] ; 0x2c /* Enable the PLL3 clock output */ if(Divider == DIVIDER_P_UPDATE) - 80385be: 683b ldr r3, [r7, #0] - 80385c0: 2b00 cmp r3, #0 - 80385c2: d106 bne.n 80385d2 + 80385fe: 683b ldr r3, [r7, #0] + 8038600: 2b00 cmp r3, #0 + 8038602: d106 bne.n 8038612 { __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVP); - 80385c4: 4b1a ldr r3, [pc, #104] ; (8038630 ) - 80385c6: 6adb ldr r3, [r3, #44] ; 0x2c - 80385c8: 4a19 ldr r2, [pc, #100] ; (8038630 ) - 80385ca: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 - 80385ce: 62d3 str r3, [r2, #44] ; 0x2c - 80385d0: e00f b.n 80385f2 + 8038604: 4b1a ldr r3, [pc, #104] ; (8038670 ) + 8038606: 6adb ldr r3, [r3, #44] ; 0x2c + 8038608: 4a19 ldr r2, [pc, #100] ; (8038670 ) + 803860a: f443 0380 orr.w r3, r3, #4194304 ; 0x400000 + 803860e: 62d3 str r3, [r2, #44] ; 0x2c + 8038610: e00f b.n 8038632 } else if(Divider == DIVIDER_Q_UPDATE) - 80385d2: 683b ldr r3, [r7, #0] - 80385d4: 2b01 cmp r3, #1 - 80385d6: d106 bne.n 80385e6 + 8038612: 683b ldr r3, [r7, #0] + 8038614: 2b01 cmp r3, #1 + 8038616: d106 bne.n 8038626 { __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVQ); - 80385d8: 4b15 ldr r3, [pc, #84] ; (8038630 ) - 80385da: 6adb ldr r3, [r3, #44] ; 0x2c - 80385dc: 4a14 ldr r2, [pc, #80] ; (8038630 ) - 80385de: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 - 80385e2: 62d3 str r3, [r2, #44] ; 0x2c - 80385e4: e005 b.n 80385f2 + 8038618: 4b15 ldr r3, [pc, #84] ; (8038670 ) + 803861a: 6adb ldr r3, [r3, #44] ; 0x2c + 803861c: 4a14 ldr r2, [pc, #80] ; (8038670 ) + 803861e: f443 0300 orr.w r3, r3, #8388608 ; 0x800000 + 8038622: 62d3 str r3, [r2, #44] ; 0x2c + 8038624: e005 b.n 8038632 } else { __HAL_RCC_PLL3CLKOUT_ENABLE(RCC_PLL3_DIVR); - 80385e6: 4b12 ldr r3, [pc, #72] ; (8038630 ) - 80385e8: 6adb ldr r3, [r3, #44] ; 0x2c - 80385ea: 4a11 ldr r2, [pc, #68] ; (8038630 ) - 80385ec: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 - 80385f0: 62d3 str r3, [r2, #44] ; 0x2c + 8038626: 4b12 ldr r3, [pc, #72] ; (8038670 ) + 8038628: 6adb ldr r3, [r3, #44] ; 0x2c + 803862a: 4a11 ldr r2, [pc, #68] ; (8038670 ) + 803862c: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8038630: 62d3 str r3, [r2, #44] ; 0x2c } /* Enable PLL3. */ __HAL_RCC_PLL3_ENABLE(); - 80385f2: 4b0f ldr r3, [pc, #60] ; (8038630 ) - 80385f4: 681b ldr r3, [r3, #0] - 80385f6: 4a0e ldr r2, [pc, #56] ; (8038630 ) - 80385f8: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 80385fc: 6013 str r3, [r2, #0] + 8038632: 4b0f ldr r3, [pc, #60] ; (8038670 ) + 8038634: 681b ldr r3, [r3, #0] + 8038636: 4a0e ldr r2, [pc, #56] ; (8038670 ) + 8038638: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 803863c: 6013 str r3, [r2, #0] /* Get Start Tick*/ tickstart = HAL_GetTick(); - 80385fe: f7f4 fcc9 bl 802cf94 - 8038602: 60b8 str r0, [r7, #8] + 803863e: f7f4 fcc9 bl 802cfd4 + 8038642: 60b8 str r0, [r7, #8] /* Wait till PLL3 is ready */ while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) == 0U) - 8038604: e008 b.n 8038618 + 8038644: e008 b.n 8038658 { if( (HAL_GetTick() - tickstart ) > PLL3_TIMEOUT_VALUE) - 8038606: f7f4 fcc5 bl 802cf94 - 803860a: 4602 mov r2, r0 - 803860c: 68bb ldr r3, [r7, #8] - 803860e: 1ad3 subs r3, r2, r3 - 8038610: 2b02 cmp r3, #2 - 8038612: d901 bls.n 8038618 + 8038646: f7f4 fcc5 bl 802cfd4 + 803864a: 4602 mov r2, r0 + 803864c: 68bb ldr r3, [r7, #8] + 803864e: 1ad3 subs r3, r2, r3 + 8038650: 2b02 cmp r3, #2 + 8038652: d901 bls.n 8038658 { return HAL_TIMEOUT; - 8038614: 2303 movs r3, #3 - 8038616: e006 b.n 8038626 + 8038654: 2303 movs r3, #3 + 8038656: e006 b.n 8038666 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLL3RDY) == 0U) - 8038618: 4b05 ldr r3, [pc, #20] ; (8038630 ) - 803861a: 681b ldr r3, [r3, #0] - 803861c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 - 8038620: 2b00 cmp r3, #0 - 8038622: d0f0 beq.n 8038606 + 8038658: 4b05 ldr r3, [pc, #20] ; (8038670 ) + 803865a: 681b ldr r3, [r3, #0] + 803865c: f003 5300 and.w r3, r3, #536870912 ; 0x20000000 + 8038660: 2b00 cmp r3, #0 + 8038662: d0f0 beq.n 8038646 } } return status; - 8038624: 7bfb ldrb r3, [r7, #15] + 8038664: 7bfb ldrb r3, [r7, #15] } - 8038626: 4618 mov r0, r3 - 8038628: 3710 adds r7, #16 - 803862a: 46bd mov sp, r7 - 803862c: bd80 pop {r7, pc} - 803862e: bf00 nop - 8038630: 58024400 .word 0x58024400 - 8038634: ffff0007 .word 0xffff0007 + 8038666: 4618 mov r0, r3 + 8038668: 3710 adds r7, #16 + 803866a: 46bd mov sp, r7 + 803866c: bd80 pop {r7, pc} + 803866e: bf00 nop + 8038670: 58024400 .word 0x58024400 + 8038674: ffff0007 .word 0xffff0007 -08038638 : +08038678 : * Ex: call @ref HAL_TIM_Base_DeInit() before HAL_TIM_Base_Init() * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim) { - 8038638: b580 push {r7, lr} - 803863a: b082 sub sp, #8 - 803863c: af00 add r7, sp, #0 - 803863e: 6078 str r0, [r7, #4] + 8038678: b580 push {r7, lr} + 803867a: b082 sub sp, #8 + 803867c: af00 add r7, sp, #0 + 803867e: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 8038640: 687b ldr r3, [r7, #4] - 8038642: 2b00 cmp r3, #0 - 8038644: d101 bne.n 803864a + 8038680: 687b ldr r3, [r7, #4] + 8038682: 2b00 cmp r3, #0 + 8038684: d101 bne.n 803868a { return HAL_ERROR; - 8038646: 2301 movs r3, #1 - 8038648: e049 b.n 80386de + 8038686: 2301 movs r3, #1 + 8038688: e049 b.n 803871e assert_param(IS_TIM_INSTANCE(htim->Instance)); assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 803864a: 687b ldr r3, [r7, #4] - 803864c: f893 303d ldrb.w r3, [r3, #61] ; 0x3d - 8038650: b2db uxtb r3, r3 - 8038652: 2b00 cmp r3, #0 - 8038654: d106 bne.n 8038664 + 803868a: 687b ldr r3, [r7, #4] + 803868c: f893 303d ldrb.w r3, [r3, #61] ; 0x3d + 8038690: b2db uxtb r3, r3 + 8038692: 2b00 cmp r3, #0 + 8038694: d106 bne.n 80386a4 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 8038656: 687b ldr r3, [r7, #4] - 8038658: 2200 movs r2, #0 - 803865a: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8038696: 687b ldr r3, [r7, #4] + 8038698: 2200 movs r2, #0 + 803869a: f883 203c strb.w r2, [r3, #60] ; 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->Base_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC */ HAL_TIM_Base_MspInit(htim); - 803865e: 6878 ldr r0, [r7, #4] - 8038660: f7f3 f9e6 bl 802ba30 + 803869e: 6878 ldr r0, [r7, #4] + 80386a0: f7f3 f9e6 bl 802ba70 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8038664: 687b ldr r3, [r7, #4] - 8038666: 2202 movs r2, #2 - 8038668: f883 203d strb.w r2, [r3, #61] ; 0x3d + 80386a4: 687b ldr r3, [r7, #4] + 80386a6: 2202 movs r2, #2 + 80386a8: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Set the Time Base configuration */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 803866c: 687b ldr r3, [r7, #4] - 803866e: 681a ldr r2, [r3, #0] - 8038670: 687b ldr r3, [r7, #4] - 8038672: 3304 adds r3, #4 - 8038674: 4619 mov r1, r3 - 8038676: 4610 mov r0, r2 - 8038678: f000 fd72 bl 8039160 + 80386ac: 687b ldr r3, [r7, #4] + 80386ae: 681a ldr r2, [r3, #0] + 80386b0: 687b ldr r3, [r7, #4] + 80386b2: 3304 adds r3, #4 + 80386b4: 4619 mov r1, r3 + 80386b6: 4610 mov r0, r2 + 80386b8: f000 fd72 bl 80391a0 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 803867c: 687b ldr r3, [r7, #4] - 803867e: 2201 movs r2, #1 - 8038680: f883 2048 strb.w r2, [r3, #72] ; 0x48 + 80386bc: 687b ldr r3, [r7, #4] + 80386be: 2201 movs r2, #1 + 80386c0: f883 2048 strb.w r2, [r3, #72] ; 0x48 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8038684: 687b ldr r3, [r7, #4] - 8038686: 2201 movs r2, #1 - 8038688: f883 203e strb.w r2, [r3, #62] ; 0x3e - 803868c: 687b ldr r3, [r7, #4] - 803868e: 2201 movs r2, #1 - 8038690: f883 203f strb.w r2, [r3, #63] ; 0x3f - 8038694: 687b ldr r3, [r7, #4] - 8038696: 2201 movs r2, #1 - 8038698: f883 2040 strb.w r2, [r3, #64] ; 0x40 - 803869c: 687b ldr r3, [r7, #4] - 803869e: 2201 movs r2, #1 - 80386a0: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 80386a4: 687b ldr r3, [r7, #4] - 80386a6: 2201 movs r2, #1 - 80386a8: f883 2042 strb.w r2, [r3, #66] ; 0x42 - 80386ac: 687b ldr r3, [r7, #4] - 80386ae: 2201 movs r2, #1 - 80386b0: f883 2043 strb.w r2, [r3, #67] ; 0x43 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 80386b4: 687b ldr r3, [r7, #4] - 80386b6: 2201 movs r2, #1 - 80386b8: f883 2044 strb.w r2, [r3, #68] ; 0x44 - 80386bc: 687b ldr r3, [r7, #4] - 80386be: 2201 movs r2, #1 - 80386c0: f883 2045 strb.w r2, [r3, #69] ; 0x45 80386c4: 687b ldr r3, [r7, #4] 80386c6: 2201 movs r2, #1 - 80386c8: f883 2046 strb.w r2, [r3, #70] ; 0x46 + 80386c8: f883 203e strb.w r2, [r3, #62] ; 0x3e 80386cc: 687b ldr r3, [r7, #4] 80386ce: 2201 movs r2, #1 - 80386d0: f883 2047 strb.w r2, [r3, #71] ; 0x47 + 80386d0: f883 203f strb.w r2, [r3, #63] ; 0x3f + 80386d4: 687b ldr r3, [r7, #4] + 80386d6: 2201 movs r2, #1 + 80386d8: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80386dc: 687b ldr r3, [r7, #4] + 80386de: 2201 movs r2, #1 + 80386e0: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80386e4: 687b ldr r3, [r7, #4] + 80386e6: 2201 movs r2, #1 + 80386e8: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 80386ec: 687b ldr r3, [r7, #4] + 80386ee: 2201 movs r2, #1 + 80386f0: f883 2043 strb.w r2, [r3, #67] ; 0x43 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 80386f4: 687b ldr r3, [r7, #4] + 80386f6: 2201 movs r2, #1 + 80386f8: f883 2044 strb.w r2, [r3, #68] ; 0x44 + 80386fc: 687b ldr r3, [r7, #4] + 80386fe: 2201 movs r2, #1 + 8038700: f883 2045 strb.w r2, [r3, #69] ; 0x45 + 8038704: 687b ldr r3, [r7, #4] + 8038706: 2201 movs r2, #1 + 8038708: f883 2046 strb.w r2, [r3, #70] ; 0x46 + 803870c: 687b ldr r3, [r7, #4] + 803870e: 2201 movs r2, #1 + 8038710: f883 2047 strb.w r2, [r3, #71] ; 0x47 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 80386d4: 687b ldr r3, [r7, #4] - 80386d6: 2201 movs r2, #1 - 80386d8: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8038714: 687b ldr r3, [r7, #4] + 8038716: 2201 movs r2, #1 + 8038718: f883 203d strb.w r2, [r3, #61] ; 0x3d return HAL_OK; - 80386dc: 2300 movs r3, #0 + 803871c: 2300 movs r3, #0 } - 80386de: 4618 mov r0, r3 - 80386e0: 3708 adds r7, #8 - 80386e2: 46bd mov sp, r7 - 80386e4: bd80 pop {r7, pc} + 803871e: 4618 mov r0, r3 + 8038720: 3708 adds r7, #8 + 8038722: 46bd mov sp, r7 + 8038724: bd80 pop {r7, pc} ... -080386e8 : +08038728 : * @brief Starts the TIM Base generation in interrupt mode. * @param htim TIM Base handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim) { - 80386e8: b480 push {r7} - 80386ea: b085 sub sp, #20 - 80386ec: af00 add r7, sp, #0 - 80386ee: 6078 str r0, [r7, #4] + 8038728: b480 push {r7} + 803872a: b085 sub sp, #20 + 803872c: af00 add r7, sp, #0 + 803872e: 6078 str r0, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_INSTANCE(htim->Instance)); /* Check the TIM state */ if (htim->State != HAL_TIM_STATE_READY) - 80386f0: 687b ldr r3, [r7, #4] - 80386f2: f893 303d ldrb.w r3, [r3, #61] ; 0x3d - 80386f6: b2db uxtb r3, r3 - 80386f8: 2b01 cmp r3, #1 - 80386fa: d001 beq.n 8038700 + 8038730: 687b ldr r3, [r7, #4] + 8038732: f893 303d ldrb.w r3, [r3, #61] ; 0x3d + 8038736: b2db uxtb r3, r3 + 8038738: 2b01 cmp r3, #1 + 803873a: d001 beq.n 8038740 { return HAL_ERROR; - 80386fc: 2301 movs r3, #1 - 80386fe: e054 b.n 80387aa + 803873c: 2301 movs r3, #1 + 803873e: e054 b.n 80387ea } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8038700: 687b ldr r3, [r7, #4] - 8038702: 2202 movs r2, #2 - 8038704: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8038740: 687b ldr r3, [r7, #4] + 8038742: 2202 movs r2, #2 + 8038744: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Enable the TIM Update interrupt */ __HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE); - 8038708: 687b ldr r3, [r7, #4] - 803870a: 681b ldr r3, [r3, #0] - 803870c: 68da ldr r2, [r3, #12] - 803870e: 687b ldr r3, [r7, #4] - 8038710: 681b ldr r3, [r3, #0] - 8038712: f042 0201 orr.w r2, r2, #1 - 8038716: 60da str r2, [r3, #12] + 8038748: 687b ldr r3, [r7, #4] + 803874a: 681b ldr r3, [r3, #0] + 803874c: 68da ldr r2, [r3, #12] + 803874e: 687b ldr r3, [r7, #4] + 8038750: 681b ldr r3, [r3, #0] + 8038752: f042 0201 orr.w r2, r2, #1 + 8038756: 60da str r2, [r3, #12] /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8038718: 687b ldr r3, [r7, #4] - 803871a: 681b ldr r3, [r3, #0] - 803871c: 4a26 ldr r2, [pc, #152] ; (80387b8 ) - 803871e: 4293 cmp r3, r2 - 8038720: d022 beq.n 8038768 - 8038722: 687b ldr r3, [r7, #4] - 8038724: 681b ldr r3, [r3, #0] - 8038726: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 803872a: d01d beq.n 8038768 - 803872c: 687b ldr r3, [r7, #4] - 803872e: 681b ldr r3, [r3, #0] - 8038730: 4a22 ldr r2, [pc, #136] ; (80387bc ) - 8038732: 4293 cmp r3, r2 - 8038734: d018 beq.n 8038768 - 8038736: 687b ldr r3, [r7, #4] - 8038738: 681b ldr r3, [r3, #0] - 803873a: 4a21 ldr r2, [pc, #132] ; (80387c0 ) - 803873c: 4293 cmp r3, r2 - 803873e: d013 beq.n 8038768 - 8038740: 687b ldr r3, [r7, #4] - 8038742: 681b ldr r3, [r3, #0] - 8038744: 4a1f ldr r2, [pc, #124] ; (80387c4 ) - 8038746: 4293 cmp r3, r2 - 8038748: d00e beq.n 8038768 - 803874a: 687b ldr r3, [r7, #4] - 803874c: 681b ldr r3, [r3, #0] - 803874e: 4a1e ldr r2, [pc, #120] ; (80387c8 ) - 8038750: 4293 cmp r3, r2 - 8038752: d009 beq.n 8038768 - 8038754: 687b ldr r3, [r7, #4] - 8038756: 681b ldr r3, [r3, #0] - 8038758: 4a1c ldr r2, [pc, #112] ; (80387cc ) - 803875a: 4293 cmp r3, r2 - 803875c: d004 beq.n 8038768 - 803875e: 687b ldr r3, [r7, #4] - 8038760: 681b ldr r3, [r3, #0] - 8038762: 4a1b ldr r2, [pc, #108] ; (80387d0 ) - 8038764: 4293 cmp r3, r2 - 8038766: d115 bne.n 8038794 + 8038758: 687b ldr r3, [r7, #4] + 803875a: 681b ldr r3, [r3, #0] + 803875c: 4a26 ldr r2, [pc, #152] ; (80387f8 ) + 803875e: 4293 cmp r3, r2 + 8038760: d022 beq.n 80387a8 + 8038762: 687b ldr r3, [r7, #4] + 8038764: 681b ldr r3, [r3, #0] + 8038766: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 803876a: d01d beq.n 80387a8 + 803876c: 687b ldr r3, [r7, #4] + 803876e: 681b ldr r3, [r3, #0] + 8038770: 4a22 ldr r2, [pc, #136] ; (80387fc ) + 8038772: 4293 cmp r3, r2 + 8038774: d018 beq.n 80387a8 + 8038776: 687b ldr r3, [r7, #4] + 8038778: 681b ldr r3, [r3, #0] + 803877a: 4a21 ldr r2, [pc, #132] ; (8038800 ) + 803877c: 4293 cmp r3, r2 + 803877e: d013 beq.n 80387a8 + 8038780: 687b ldr r3, [r7, #4] + 8038782: 681b ldr r3, [r3, #0] + 8038784: 4a1f ldr r2, [pc, #124] ; (8038804 ) + 8038786: 4293 cmp r3, r2 + 8038788: d00e beq.n 80387a8 + 803878a: 687b ldr r3, [r7, #4] + 803878c: 681b ldr r3, [r3, #0] + 803878e: 4a1e ldr r2, [pc, #120] ; (8038808 ) + 8038790: 4293 cmp r3, r2 + 8038792: d009 beq.n 80387a8 + 8038794: 687b ldr r3, [r7, #4] + 8038796: 681b ldr r3, [r3, #0] + 8038798: 4a1c ldr r2, [pc, #112] ; (803880c ) + 803879a: 4293 cmp r3, r2 + 803879c: d004 beq.n 80387a8 + 803879e: 687b ldr r3, [r7, #4] + 80387a0: 681b ldr r3, [r3, #0] + 80387a2: 4a1b ldr r2, [pc, #108] ; (8038810 ) + 80387a4: 4293 cmp r3, r2 + 80387a6: d115 bne.n 80387d4 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8038768: 687b ldr r3, [r7, #4] - 803876a: 681b ldr r3, [r3, #0] - 803876c: 689a ldr r2, [r3, #8] - 803876e: 4b19 ldr r3, [pc, #100] ; (80387d4 ) - 8038770: 4013 ands r3, r2 - 8038772: 60fb str r3, [r7, #12] + 80387a8: 687b ldr r3, [r7, #4] + 80387aa: 681b ldr r3, [r3, #0] + 80387ac: 689a ldr r2, [r3, #8] + 80387ae: 4b19 ldr r3, [pc, #100] ; (8038814 ) + 80387b0: 4013 ands r3, r2 + 80387b2: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8038774: 68fb ldr r3, [r7, #12] - 8038776: 2b06 cmp r3, #6 - 8038778: d015 beq.n 80387a6 - 803877a: 68fb ldr r3, [r7, #12] - 803877c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8038780: d011 beq.n 80387a6 + 80387b4: 68fb ldr r3, [r7, #12] + 80387b6: 2b06 cmp r3, #6 + 80387b8: d015 beq.n 80387e6 + 80387ba: 68fb ldr r3, [r7, #12] + 80387bc: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 80387c0: d011 beq.n 80387e6 { __HAL_TIM_ENABLE(htim); - 8038782: 687b ldr r3, [r7, #4] - 8038784: 681b ldr r3, [r3, #0] - 8038786: 681a ldr r2, [r3, #0] - 8038788: 687b ldr r3, [r7, #4] - 803878a: 681b ldr r3, [r3, #0] - 803878c: f042 0201 orr.w r2, r2, #1 - 8038790: 601a str r2, [r3, #0] + 80387c2: 687b ldr r3, [r7, #4] + 80387c4: 681b ldr r3, [r3, #0] + 80387c6: 681a ldr r2, [r3, #0] + 80387c8: 687b ldr r3, [r7, #4] + 80387ca: 681b ldr r3, [r3, #0] + 80387cc: f042 0201 orr.w r2, r2, #1 + 80387d0: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8038792: e008 b.n 80387a6 + 80387d2: e008 b.n 80387e6 } } else { __HAL_TIM_ENABLE(htim); - 8038794: 687b ldr r3, [r7, #4] - 8038796: 681b ldr r3, [r3, #0] - 8038798: 681a ldr r2, [r3, #0] - 803879a: 687b ldr r3, [r7, #4] - 803879c: 681b ldr r3, [r3, #0] - 803879e: f042 0201 orr.w r2, r2, #1 - 80387a2: 601a str r2, [r3, #0] - 80387a4: e000 b.n 80387a8 + 80387d4: 687b ldr r3, [r7, #4] + 80387d6: 681b ldr r3, [r3, #0] + 80387d8: 681a ldr r2, [r3, #0] + 80387da: 687b ldr r3, [r7, #4] + 80387dc: 681b ldr r3, [r3, #0] + 80387de: f042 0201 orr.w r2, r2, #1 + 80387e2: 601a str r2, [r3, #0] + 80387e4: e000 b.n 80387e8 if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 80387a6: bf00 nop + 80387e6: bf00 nop } /* Return function status */ return HAL_OK; - 80387a8: 2300 movs r3, #0 -} - 80387aa: 4618 mov r0, r3 - 80387ac: 3714 adds r7, #20 - 80387ae: 46bd mov sp, r7 - 80387b0: f85d 7b04 ldr.w r7, [sp], #4 - 80387b4: 4770 bx lr - 80387b6: bf00 nop - 80387b8: 40010000 .word 0x40010000 - 80387bc: 40000400 .word 0x40000400 - 80387c0: 40000800 .word 0x40000800 - 80387c4: 40000c00 .word 0x40000c00 - 80387c8: 40010400 .word 0x40010400 - 80387cc: 40001800 .word 0x40001800 - 80387d0: 40014000 .word 0x40014000 - 80387d4: 00010007 .word 0x00010007 - -080387d8 : + 80387e8: 2300 movs r3, #0 +} + 80387ea: 4618 mov r0, r3 + 80387ec: 3714 adds r7, #20 + 80387ee: 46bd mov sp, r7 + 80387f0: f85d 7b04 ldr.w r7, [sp], #4 + 80387f4: 4770 bx lr + 80387f6: bf00 nop + 80387f8: 40010000 .word 0x40010000 + 80387fc: 40000400 .word 0x40000400 + 8038800: 40000800 .word 0x40000800 + 8038804: 40000c00 .word 0x40000c00 + 8038808: 40010400 .word 0x40010400 + 803880c: 40001800 .word 0x40001800 + 8038810: 40014000 .word 0x40014000 + 8038814: 00010007 .word 0x00010007 + +08038818 : * Ex: call @ref HAL_TIM_PWM_DeInit() before HAL_TIM_PWM_Init() * @param htim TIM PWM handle * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Init(TIM_HandleTypeDef *htim) { - 80387d8: b580 push {r7, lr} - 80387da: b082 sub sp, #8 - 80387dc: af00 add r7, sp, #0 - 80387de: 6078 str r0, [r7, #4] + 8038818: b580 push {r7, lr} + 803881a: b082 sub sp, #8 + 803881c: af00 add r7, sp, #0 + 803881e: 6078 str r0, [r7, #4] /* Check the TIM handle allocation */ if (htim == NULL) - 80387e0: 687b ldr r3, [r7, #4] - 80387e2: 2b00 cmp r3, #0 - 80387e4: d101 bne.n 80387ea + 8038820: 687b ldr r3, [r7, #4] + 8038822: 2b00 cmp r3, #0 + 8038824: d101 bne.n 803882a { return HAL_ERROR; - 80387e6: 2301 movs r3, #1 - 80387e8: e049 b.n 803887e + 8038826: 2301 movs r3, #1 + 8038828: e049 b.n 80388be assert_param(IS_TIM_INSTANCE(htim->Instance)); assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode)); assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision)); assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload)); if (htim->State == HAL_TIM_STATE_RESET) - 80387ea: 687b ldr r3, [r7, #4] - 80387ec: f893 303d ldrb.w r3, [r3, #61] ; 0x3d - 80387f0: b2db uxtb r3, r3 - 80387f2: 2b00 cmp r3, #0 - 80387f4: d106 bne.n 8038804 + 803882a: 687b ldr r3, [r7, #4] + 803882c: f893 303d ldrb.w r3, [r3, #61] ; 0x3d + 8038830: b2db uxtb r3, r3 + 8038832: 2b00 cmp r3, #0 + 8038834: d106 bne.n 8038844 { /* Allocate lock resource and initialize it */ htim->Lock = HAL_UNLOCKED; - 80387f6: 687b ldr r3, [r7, #4] - 80387f8: 2200 movs r2, #0 - 80387fa: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8038836: 687b ldr r3, [r7, #4] + 8038838: 2200 movs r2, #0 + 803883a: f883 203c strb.w r2, [r3, #60] ; 0x3c } /* Init the low level hardware : GPIO, CLOCK, NVIC */ htim->PWM_MspInitCallback(htim); #else /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */ HAL_TIM_PWM_MspInit(htim); - 80387fe: 6878 ldr r0, [r7, #4] - 8038800: f000 f841 bl 8038886 + 803883e: 6878 ldr r0, [r7, #4] + 8038840: f000 f841 bl 80388c6 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } /* Set the TIM state */ htim->State = HAL_TIM_STATE_BUSY; - 8038804: 687b ldr r3, [r7, #4] - 8038806: 2202 movs r2, #2 - 8038808: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8038844: 687b ldr r3, [r7, #4] + 8038846: 2202 movs r2, #2 + 8038848: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Init the base time for the PWM */ TIM_Base_SetConfig(htim->Instance, &htim->Init); - 803880c: 687b ldr r3, [r7, #4] - 803880e: 681a ldr r2, [r3, #0] - 8038810: 687b ldr r3, [r7, #4] - 8038812: 3304 adds r3, #4 - 8038814: 4619 mov r1, r3 - 8038816: 4610 mov r0, r2 - 8038818: f000 fca2 bl 8039160 + 803884c: 687b ldr r3, [r7, #4] + 803884e: 681a ldr r2, [r3, #0] + 8038850: 687b ldr r3, [r7, #4] + 8038852: 3304 adds r3, #4 + 8038854: 4619 mov r1, r3 + 8038856: 4610 mov r0, r2 + 8038858: f000 fca2 bl 80391a0 /* Initialize the DMA burst operation state */ htim->DMABurstState = HAL_DMA_BURST_STATE_READY; - 803881c: 687b ldr r3, [r7, #4] - 803881e: 2201 movs r2, #1 - 8038820: f883 2048 strb.w r2, [r3, #72] ; 0x48 + 803885c: 687b ldr r3, [r7, #4] + 803885e: 2201 movs r2, #1 + 8038860: f883 2048 strb.w r2, [r3, #72] ; 0x48 /* Initialize the TIM channels state */ TIM_CHANNEL_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8038824: 687b ldr r3, [r7, #4] - 8038826: 2201 movs r2, #1 - 8038828: f883 203e strb.w r2, [r3, #62] ; 0x3e - 803882c: 687b ldr r3, [r7, #4] - 803882e: 2201 movs r2, #1 - 8038830: f883 203f strb.w r2, [r3, #63] ; 0x3f - 8038834: 687b ldr r3, [r7, #4] - 8038836: 2201 movs r2, #1 - 8038838: f883 2040 strb.w r2, [r3, #64] ; 0x40 - 803883c: 687b ldr r3, [r7, #4] - 803883e: 2201 movs r2, #1 - 8038840: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8038844: 687b ldr r3, [r7, #4] - 8038846: 2201 movs r2, #1 - 8038848: f883 2042 strb.w r2, [r3, #66] ; 0x42 - 803884c: 687b ldr r3, [r7, #4] - 803884e: 2201 movs r2, #1 - 8038850: f883 2043 strb.w r2, [r3, #67] ; 0x43 - TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); - 8038854: 687b ldr r3, [r7, #4] - 8038856: 2201 movs r2, #1 - 8038858: f883 2044 strb.w r2, [r3, #68] ; 0x44 - 803885c: 687b ldr r3, [r7, #4] - 803885e: 2201 movs r2, #1 - 8038860: f883 2045 strb.w r2, [r3, #69] ; 0x45 8038864: 687b ldr r3, [r7, #4] 8038866: 2201 movs r2, #1 - 8038868: f883 2046 strb.w r2, [r3, #70] ; 0x46 + 8038868: f883 203e strb.w r2, [r3, #62] ; 0x3e 803886c: 687b ldr r3, [r7, #4] 803886e: 2201 movs r2, #1 - 8038870: f883 2047 strb.w r2, [r3, #71] ; 0x47 + 8038870: f883 203f strb.w r2, [r3, #63] ; 0x3f + 8038874: 687b ldr r3, [r7, #4] + 8038876: 2201 movs r2, #1 + 8038878: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 803887c: 687b ldr r3, [r7, #4] + 803887e: 2201 movs r2, #1 + 8038880: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 8038884: 687b ldr r3, [r7, #4] + 8038886: 2201 movs r2, #1 + 8038888: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 803888c: 687b ldr r3, [r7, #4] + 803888e: 2201 movs r2, #1 + 8038890: f883 2043 strb.w r2, [r3, #67] ; 0x43 + TIM_CHANNEL_N_STATE_SET_ALL(htim, HAL_TIM_CHANNEL_STATE_READY); + 8038894: 687b ldr r3, [r7, #4] + 8038896: 2201 movs r2, #1 + 8038898: f883 2044 strb.w r2, [r3, #68] ; 0x44 + 803889c: 687b ldr r3, [r7, #4] + 803889e: 2201 movs r2, #1 + 80388a0: f883 2045 strb.w r2, [r3, #69] ; 0x45 + 80388a4: 687b ldr r3, [r7, #4] + 80388a6: 2201 movs r2, #1 + 80388a8: f883 2046 strb.w r2, [r3, #70] ; 0x46 + 80388ac: 687b ldr r3, [r7, #4] + 80388ae: 2201 movs r2, #1 + 80388b0: f883 2047 strb.w r2, [r3, #71] ; 0x47 /* Initialize the TIM state*/ htim->State = HAL_TIM_STATE_READY; - 8038874: 687b ldr r3, [r7, #4] - 8038876: 2201 movs r2, #1 - 8038878: f883 203d strb.w r2, [r3, #61] ; 0x3d + 80388b4: 687b ldr r3, [r7, #4] + 80388b6: 2201 movs r2, #1 + 80388b8: f883 203d strb.w r2, [r3, #61] ; 0x3d return HAL_OK; - 803887c: 2300 movs r3, #0 + 80388bc: 2300 movs r3, #0 } - 803887e: 4618 mov r0, r3 - 8038880: 3708 adds r7, #8 - 8038882: 46bd mov sp, r7 - 8038884: bd80 pop {r7, pc} + 80388be: 4618 mov r0, r3 + 80388c0: 3708 adds r7, #8 + 80388c2: 46bd mov sp, r7 + 80388c4: bd80 pop {r7, pc} -08038886 : +080388c6 : * @brief Initializes the TIM PWM MSP. * @param htim TIM PWM handle * @retval None */ __weak void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) { - 8038886: b480 push {r7} - 8038888: b083 sub sp, #12 - 803888a: af00 add r7, sp, #0 - 803888c: 6078 str r0, [r7, #4] + 80388c6: b480 push {r7} + 80388c8: b083 sub sp, #12 + 80388ca: af00 add r7, sp, #0 + 80388cc: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_MspInit could be implemented in the user file */ } - 803888e: bf00 nop - 8038890: 370c adds r7, #12 - 8038892: 46bd mov sp, r7 - 8038894: f85d 7b04 ldr.w r7, [sp], #4 - 8038898: 4770 bx lr + 80388ce: bf00 nop + 80388d0: 370c adds r7, #12 + 80388d2: 46bd mov sp, r7 + 80388d4: f85d 7b04 ldr.w r7, [sp], #4 + 80388d8: 4770 bx lr ... -0803889c : +080388dc : * @arg TIM_CHANNEL_5: TIM Channel 5 selected * @arg TIM_CHANNEL_6: TIM Channel 6 selected * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel) { - 803889c: b580 push {r7, lr} - 803889e: b084 sub sp, #16 - 80388a0: af00 add r7, sp, #0 - 80388a2: 6078 str r0, [r7, #4] - 80388a4: 6039 str r1, [r7, #0] + 80388dc: b580 push {r7, lr} + 80388de: b084 sub sp, #16 + 80388e0: af00 add r7, sp, #0 + 80388e2: 6078 str r0, [r7, #4] + 80388e4: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel)); /* Check the TIM channel state */ if (TIM_CHANNEL_STATE_GET(htim, Channel) != HAL_TIM_CHANNEL_STATE_READY) - 80388a6: 683b ldr r3, [r7, #0] - 80388a8: 2b00 cmp r3, #0 - 80388aa: d109 bne.n 80388c0 - 80388ac: 687b ldr r3, [r7, #4] - 80388ae: f893 303e ldrb.w r3, [r3, #62] ; 0x3e - 80388b2: b2db uxtb r3, r3 - 80388b4: 2b01 cmp r3, #1 - 80388b6: bf14 ite ne - 80388b8: 2301 movne r3, #1 - 80388ba: 2300 moveq r3, #0 - 80388bc: b2db uxtb r3, r3 - 80388be: e03c b.n 803893a - 80388c0: 683b ldr r3, [r7, #0] - 80388c2: 2b04 cmp r3, #4 - 80388c4: d109 bne.n 80388da - 80388c6: 687b ldr r3, [r7, #4] - 80388c8: f893 303f ldrb.w r3, [r3, #63] ; 0x3f - 80388cc: b2db uxtb r3, r3 - 80388ce: 2b01 cmp r3, #1 - 80388d0: bf14 ite ne - 80388d2: 2301 movne r3, #1 - 80388d4: 2300 moveq r3, #0 - 80388d6: b2db uxtb r3, r3 - 80388d8: e02f b.n 803893a - 80388da: 683b ldr r3, [r7, #0] - 80388dc: 2b08 cmp r3, #8 - 80388de: d109 bne.n 80388f4 - 80388e0: 687b ldr r3, [r7, #4] - 80388e2: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 - 80388e6: b2db uxtb r3, r3 - 80388e8: 2b01 cmp r3, #1 - 80388ea: bf14 ite ne - 80388ec: 2301 movne r3, #1 - 80388ee: 2300 moveq r3, #0 - 80388f0: b2db uxtb r3, r3 - 80388f2: e022 b.n 803893a - 80388f4: 683b ldr r3, [r7, #0] - 80388f6: 2b0c cmp r3, #12 - 80388f8: d109 bne.n 803890e - 80388fa: 687b ldr r3, [r7, #4] - 80388fc: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 - 8038900: b2db uxtb r3, r3 - 8038902: 2b01 cmp r3, #1 - 8038904: bf14 ite ne - 8038906: 2301 movne r3, #1 - 8038908: 2300 moveq r3, #0 - 803890a: b2db uxtb r3, r3 - 803890c: e015 b.n 803893a - 803890e: 683b ldr r3, [r7, #0] - 8038910: 2b10 cmp r3, #16 - 8038912: d109 bne.n 8038928 - 8038914: 687b ldr r3, [r7, #4] - 8038916: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 803891a: b2db uxtb r3, r3 - 803891c: 2b01 cmp r3, #1 - 803891e: bf14 ite ne - 8038920: 2301 movne r3, #1 - 8038922: 2300 moveq r3, #0 - 8038924: b2db uxtb r3, r3 - 8038926: e008 b.n 803893a - 8038928: 687b ldr r3, [r7, #4] - 803892a: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 - 803892e: b2db uxtb r3, r3 - 8038930: 2b01 cmp r3, #1 - 8038932: bf14 ite ne - 8038934: 2301 movne r3, #1 - 8038936: 2300 moveq r3, #0 - 8038938: b2db uxtb r3, r3 - 803893a: 2b00 cmp r3, #0 - 803893c: d001 beq.n 8038942 + 80388e6: 683b ldr r3, [r7, #0] + 80388e8: 2b00 cmp r3, #0 + 80388ea: d109 bne.n 8038900 + 80388ec: 687b ldr r3, [r7, #4] + 80388ee: f893 303e ldrb.w r3, [r3, #62] ; 0x3e + 80388f2: b2db uxtb r3, r3 + 80388f4: 2b01 cmp r3, #1 + 80388f6: bf14 ite ne + 80388f8: 2301 movne r3, #1 + 80388fa: 2300 moveq r3, #0 + 80388fc: b2db uxtb r3, r3 + 80388fe: e03c b.n 803897a + 8038900: 683b ldr r3, [r7, #0] + 8038902: 2b04 cmp r3, #4 + 8038904: d109 bne.n 803891a + 8038906: 687b ldr r3, [r7, #4] + 8038908: f893 303f ldrb.w r3, [r3, #63] ; 0x3f + 803890c: b2db uxtb r3, r3 + 803890e: 2b01 cmp r3, #1 + 8038910: bf14 ite ne + 8038912: 2301 movne r3, #1 + 8038914: 2300 moveq r3, #0 + 8038916: b2db uxtb r3, r3 + 8038918: e02f b.n 803897a + 803891a: 683b ldr r3, [r7, #0] + 803891c: 2b08 cmp r3, #8 + 803891e: d109 bne.n 8038934 + 8038920: 687b ldr r3, [r7, #4] + 8038922: f893 3040 ldrb.w r3, [r3, #64] ; 0x40 + 8038926: b2db uxtb r3, r3 + 8038928: 2b01 cmp r3, #1 + 803892a: bf14 ite ne + 803892c: 2301 movne r3, #1 + 803892e: 2300 moveq r3, #0 + 8038930: b2db uxtb r3, r3 + 8038932: e022 b.n 803897a + 8038934: 683b ldr r3, [r7, #0] + 8038936: 2b0c cmp r3, #12 + 8038938: d109 bne.n 803894e + 803893a: 687b ldr r3, [r7, #4] + 803893c: f893 3041 ldrb.w r3, [r3, #65] ; 0x41 + 8038940: b2db uxtb r3, r3 + 8038942: 2b01 cmp r3, #1 + 8038944: bf14 ite ne + 8038946: 2301 movne r3, #1 + 8038948: 2300 moveq r3, #0 + 803894a: b2db uxtb r3, r3 + 803894c: e015 b.n 803897a + 803894e: 683b ldr r3, [r7, #0] + 8038950: 2b10 cmp r3, #16 + 8038952: d109 bne.n 8038968 + 8038954: 687b ldr r3, [r7, #4] + 8038956: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 803895a: b2db uxtb r3, r3 + 803895c: 2b01 cmp r3, #1 + 803895e: bf14 ite ne + 8038960: 2301 movne r3, #1 + 8038962: 2300 moveq r3, #0 + 8038964: b2db uxtb r3, r3 + 8038966: e008 b.n 803897a + 8038968: 687b ldr r3, [r7, #4] + 803896a: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 + 803896e: b2db uxtb r3, r3 + 8038970: 2b01 cmp r3, #1 + 8038972: bf14 ite ne + 8038974: 2301 movne r3, #1 + 8038976: 2300 moveq r3, #0 + 8038978: b2db uxtb r3, r3 + 803897a: 2b00 cmp r3, #0 + 803897c: d001 beq.n 8038982 { return HAL_ERROR; - 803893e: 2301 movs r3, #1 - 8038940: e0a1 b.n 8038a86 + 803897e: 2301 movs r3, #1 + 8038980: e0a1 b.n 8038ac6 } /* Set the TIM channel state */ TIM_CHANNEL_STATE_SET(htim, Channel, HAL_TIM_CHANNEL_STATE_BUSY); - 8038942: 683b ldr r3, [r7, #0] - 8038944: 2b00 cmp r3, #0 - 8038946: d104 bne.n 8038952 - 8038948: 687b ldr r3, [r7, #4] - 803894a: 2202 movs r2, #2 - 803894c: f883 203e strb.w r2, [r3, #62] ; 0x3e - 8038950: e023 b.n 803899a - 8038952: 683b ldr r3, [r7, #0] - 8038954: 2b04 cmp r3, #4 - 8038956: d104 bne.n 8038962 - 8038958: 687b ldr r3, [r7, #4] - 803895a: 2202 movs r2, #2 - 803895c: f883 203f strb.w r2, [r3, #63] ; 0x3f - 8038960: e01b b.n 803899a - 8038962: 683b ldr r3, [r7, #0] - 8038964: 2b08 cmp r3, #8 - 8038966: d104 bne.n 8038972 - 8038968: 687b ldr r3, [r7, #4] - 803896a: 2202 movs r2, #2 - 803896c: f883 2040 strb.w r2, [r3, #64] ; 0x40 - 8038970: e013 b.n 803899a - 8038972: 683b ldr r3, [r7, #0] - 8038974: 2b0c cmp r3, #12 - 8038976: d104 bne.n 8038982 - 8038978: 687b ldr r3, [r7, #4] - 803897a: 2202 movs r2, #2 - 803897c: f883 2041 strb.w r2, [r3, #65] ; 0x41 - 8038980: e00b b.n 803899a 8038982: 683b ldr r3, [r7, #0] - 8038984: 2b10 cmp r3, #16 - 8038986: d104 bne.n 8038992 + 8038984: 2b00 cmp r3, #0 + 8038986: d104 bne.n 8038992 8038988: 687b ldr r3, [r7, #4] 803898a: 2202 movs r2, #2 - 803898c: f883 2042 strb.w r2, [r3, #66] ; 0x42 - 8038990: e003 b.n 803899a - 8038992: 687b ldr r3, [r7, #4] - 8038994: 2202 movs r2, #2 - 8038996: f883 2043 strb.w r2, [r3, #67] ; 0x43 + 803898c: f883 203e strb.w r2, [r3, #62] ; 0x3e + 8038990: e023 b.n 80389da + 8038992: 683b ldr r3, [r7, #0] + 8038994: 2b04 cmp r3, #4 + 8038996: d104 bne.n 80389a2 + 8038998: 687b ldr r3, [r7, #4] + 803899a: 2202 movs r2, #2 + 803899c: f883 203f strb.w r2, [r3, #63] ; 0x3f + 80389a0: e01b b.n 80389da + 80389a2: 683b ldr r3, [r7, #0] + 80389a4: 2b08 cmp r3, #8 + 80389a6: d104 bne.n 80389b2 + 80389a8: 687b ldr r3, [r7, #4] + 80389aa: 2202 movs r2, #2 + 80389ac: f883 2040 strb.w r2, [r3, #64] ; 0x40 + 80389b0: e013 b.n 80389da + 80389b2: 683b ldr r3, [r7, #0] + 80389b4: 2b0c cmp r3, #12 + 80389b6: d104 bne.n 80389c2 + 80389b8: 687b ldr r3, [r7, #4] + 80389ba: 2202 movs r2, #2 + 80389bc: f883 2041 strb.w r2, [r3, #65] ; 0x41 + 80389c0: e00b b.n 80389da + 80389c2: 683b ldr r3, [r7, #0] + 80389c4: 2b10 cmp r3, #16 + 80389c6: d104 bne.n 80389d2 + 80389c8: 687b ldr r3, [r7, #4] + 80389ca: 2202 movs r2, #2 + 80389cc: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 80389d0: e003 b.n 80389da + 80389d2: 687b ldr r3, [r7, #4] + 80389d4: 2202 movs r2, #2 + 80389d6: f883 2043 strb.w r2, [r3, #67] ; 0x43 /* Enable the Capture compare channel */ TIM_CCxChannelCmd(htim->Instance, Channel, TIM_CCx_ENABLE); - 803899a: 687b ldr r3, [r7, #4] - 803899c: 681b ldr r3, [r3, #0] - 803899e: 2201 movs r2, #1 - 80389a0: 6839 ldr r1, [r7, #0] - 80389a2: 4618 mov r0, r3 - 80389a4: f000 ffea bl 803997c + 80389da: 687b ldr r3, [r7, #4] + 80389dc: 681b ldr r3, [r3, #0] + 80389de: 2201 movs r2, #1 + 80389e0: 6839 ldr r1, [r7, #0] + 80389e2: 4618 mov r0, r3 + 80389e4: f000 ffea bl 80399bc if (IS_TIM_BREAK_INSTANCE(htim->Instance) != RESET) - 80389a8: 687b ldr r3, [r7, #4] - 80389aa: 681b ldr r3, [r3, #0] - 80389ac: 4a38 ldr r2, [pc, #224] ; (8038a90 ) - 80389ae: 4293 cmp r3, r2 - 80389b0: d013 beq.n 80389da - 80389b2: 687b ldr r3, [r7, #4] - 80389b4: 681b ldr r3, [r3, #0] - 80389b6: 4a37 ldr r2, [pc, #220] ; (8038a94 ) - 80389b8: 4293 cmp r3, r2 - 80389ba: d00e beq.n 80389da - 80389bc: 687b ldr r3, [r7, #4] - 80389be: 681b ldr r3, [r3, #0] - 80389c0: 4a35 ldr r2, [pc, #212] ; (8038a98 ) - 80389c2: 4293 cmp r3, r2 - 80389c4: d009 beq.n 80389da - 80389c6: 687b ldr r3, [r7, #4] - 80389c8: 681b ldr r3, [r3, #0] - 80389ca: 4a34 ldr r2, [pc, #208] ; (8038a9c ) - 80389cc: 4293 cmp r3, r2 - 80389ce: d004 beq.n 80389da - 80389d0: 687b ldr r3, [r7, #4] - 80389d2: 681b ldr r3, [r3, #0] - 80389d4: 4a32 ldr r2, [pc, #200] ; (8038aa0 ) - 80389d6: 4293 cmp r3, r2 - 80389d8: d101 bne.n 80389de - 80389da: 2301 movs r3, #1 - 80389dc: e000 b.n 80389e0 - 80389de: 2300 movs r3, #0 - 80389e0: 2b00 cmp r3, #0 - 80389e2: d007 beq.n 80389f4 + 80389e8: 687b ldr r3, [r7, #4] + 80389ea: 681b ldr r3, [r3, #0] + 80389ec: 4a38 ldr r2, [pc, #224] ; (8038ad0 ) + 80389ee: 4293 cmp r3, r2 + 80389f0: d013 beq.n 8038a1a + 80389f2: 687b ldr r3, [r7, #4] + 80389f4: 681b ldr r3, [r3, #0] + 80389f6: 4a37 ldr r2, [pc, #220] ; (8038ad4 ) + 80389f8: 4293 cmp r3, r2 + 80389fa: d00e beq.n 8038a1a + 80389fc: 687b ldr r3, [r7, #4] + 80389fe: 681b ldr r3, [r3, #0] + 8038a00: 4a35 ldr r2, [pc, #212] ; (8038ad8 ) + 8038a02: 4293 cmp r3, r2 + 8038a04: d009 beq.n 8038a1a + 8038a06: 687b ldr r3, [r7, #4] + 8038a08: 681b ldr r3, [r3, #0] + 8038a0a: 4a34 ldr r2, [pc, #208] ; (8038adc ) + 8038a0c: 4293 cmp r3, r2 + 8038a0e: d004 beq.n 8038a1a + 8038a10: 687b ldr r3, [r7, #4] + 8038a12: 681b ldr r3, [r3, #0] + 8038a14: 4a32 ldr r2, [pc, #200] ; (8038ae0 ) + 8038a16: 4293 cmp r3, r2 + 8038a18: d101 bne.n 8038a1e + 8038a1a: 2301 movs r3, #1 + 8038a1c: e000 b.n 8038a20 + 8038a1e: 2300 movs r3, #0 + 8038a20: 2b00 cmp r3, #0 + 8038a22: d007 beq.n 8038a34 { /* Enable the main output */ __HAL_TIM_MOE_ENABLE(htim); - 80389e4: 687b ldr r3, [r7, #4] - 80389e6: 681b ldr r3, [r3, #0] - 80389e8: 6c5a ldr r2, [r3, #68] ; 0x44 - 80389ea: 687b ldr r3, [r7, #4] - 80389ec: 681b ldr r3, [r3, #0] - 80389ee: f442 4200 orr.w r2, r2, #32768 ; 0x8000 - 80389f2: 645a str r2, [r3, #68] ; 0x44 + 8038a24: 687b ldr r3, [r7, #4] + 8038a26: 681b ldr r3, [r3, #0] + 8038a28: 6c5a ldr r2, [r3, #68] ; 0x44 + 8038a2a: 687b ldr r3, [r7, #4] + 8038a2c: 681b ldr r3, [r3, #0] + 8038a2e: f442 4200 orr.w r2, r2, #32768 ; 0x8000 + 8038a32: 645a str r2, [r3, #68] ; 0x44 } /* Enable the Peripheral, except in trigger mode where enable is automatically done with trigger */ if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 80389f4: 687b ldr r3, [r7, #4] - 80389f6: 681b ldr r3, [r3, #0] - 80389f8: 4a25 ldr r2, [pc, #148] ; (8038a90 ) - 80389fa: 4293 cmp r3, r2 - 80389fc: d022 beq.n 8038a44 - 80389fe: 687b ldr r3, [r7, #4] - 8038a00: 681b ldr r3, [r3, #0] - 8038a02: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8038a06: d01d beq.n 8038a44 - 8038a08: 687b ldr r3, [r7, #4] - 8038a0a: 681b ldr r3, [r3, #0] - 8038a0c: 4a25 ldr r2, [pc, #148] ; (8038aa4 ) - 8038a0e: 4293 cmp r3, r2 - 8038a10: d018 beq.n 8038a44 - 8038a12: 687b ldr r3, [r7, #4] - 8038a14: 681b ldr r3, [r3, #0] - 8038a16: 4a24 ldr r2, [pc, #144] ; (8038aa8 ) - 8038a18: 4293 cmp r3, r2 - 8038a1a: d013 beq.n 8038a44 - 8038a1c: 687b ldr r3, [r7, #4] - 8038a1e: 681b ldr r3, [r3, #0] - 8038a20: 4a22 ldr r2, [pc, #136] ; (8038aac ) - 8038a22: 4293 cmp r3, r2 - 8038a24: d00e beq.n 8038a44 - 8038a26: 687b ldr r3, [r7, #4] - 8038a28: 681b ldr r3, [r3, #0] - 8038a2a: 4a1a ldr r2, [pc, #104] ; (8038a94 ) - 8038a2c: 4293 cmp r3, r2 - 8038a2e: d009 beq.n 8038a44 - 8038a30: 687b ldr r3, [r7, #4] - 8038a32: 681b ldr r3, [r3, #0] - 8038a34: 4a1e ldr r2, [pc, #120] ; (8038ab0 ) - 8038a36: 4293 cmp r3, r2 - 8038a38: d004 beq.n 8038a44 - 8038a3a: 687b ldr r3, [r7, #4] - 8038a3c: 681b ldr r3, [r3, #0] - 8038a3e: 4a16 ldr r2, [pc, #88] ; (8038a98 ) - 8038a40: 4293 cmp r3, r2 - 8038a42: d115 bne.n 8038a70 + 8038a34: 687b ldr r3, [r7, #4] + 8038a36: 681b ldr r3, [r3, #0] + 8038a38: 4a25 ldr r2, [pc, #148] ; (8038ad0 ) + 8038a3a: 4293 cmp r3, r2 + 8038a3c: d022 beq.n 8038a84 + 8038a3e: 687b ldr r3, [r7, #4] + 8038a40: 681b ldr r3, [r3, #0] + 8038a42: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8038a46: d01d beq.n 8038a84 + 8038a48: 687b ldr r3, [r7, #4] + 8038a4a: 681b ldr r3, [r3, #0] + 8038a4c: 4a25 ldr r2, [pc, #148] ; (8038ae4 ) + 8038a4e: 4293 cmp r3, r2 + 8038a50: d018 beq.n 8038a84 + 8038a52: 687b ldr r3, [r7, #4] + 8038a54: 681b ldr r3, [r3, #0] + 8038a56: 4a24 ldr r2, [pc, #144] ; (8038ae8 ) + 8038a58: 4293 cmp r3, r2 + 8038a5a: d013 beq.n 8038a84 + 8038a5c: 687b ldr r3, [r7, #4] + 8038a5e: 681b ldr r3, [r3, #0] + 8038a60: 4a22 ldr r2, [pc, #136] ; (8038aec ) + 8038a62: 4293 cmp r3, r2 + 8038a64: d00e beq.n 8038a84 + 8038a66: 687b ldr r3, [r7, #4] + 8038a68: 681b ldr r3, [r3, #0] + 8038a6a: 4a1a ldr r2, [pc, #104] ; (8038ad4 ) + 8038a6c: 4293 cmp r3, r2 + 8038a6e: d009 beq.n 8038a84 + 8038a70: 687b ldr r3, [r7, #4] + 8038a72: 681b ldr r3, [r3, #0] + 8038a74: 4a1e ldr r2, [pc, #120] ; (8038af0 ) + 8038a76: 4293 cmp r3, r2 + 8038a78: d004 beq.n 8038a84 + 8038a7a: 687b ldr r3, [r7, #4] + 8038a7c: 681b ldr r3, [r3, #0] + 8038a7e: 4a16 ldr r2, [pc, #88] ; (8038ad8 ) + 8038a80: 4293 cmp r3, r2 + 8038a82: d115 bne.n 8038ab0 { tmpsmcr = htim->Instance->SMCR & TIM_SMCR_SMS; - 8038a44: 687b ldr r3, [r7, #4] - 8038a46: 681b ldr r3, [r3, #0] - 8038a48: 689a ldr r2, [r3, #8] - 8038a4a: 4b1a ldr r3, [pc, #104] ; (8038ab4 ) - 8038a4c: 4013 ands r3, r2 - 8038a4e: 60fb str r3, [r7, #12] + 8038a84: 687b ldr r3, [r7, #4] + 8038a86: 681b ldr r3, [r3, #0] + 8038a88: 689a ldr r2, [r3, #8] + 8038a8a: 4b1a ldr r3, [pc, #104] ; (8038af4 ) + 8038a8c: 4013 ands r3, r2 + 8038a8e: 60fb str r3, [r7, #12] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8038a50: 68fb ldr r3, [r7, #12] - 8038a52: 2b06 cmp r3, #6 - 8038a54: d015 beq.n 8038a82 - 8038a56: 68fb ldr r3, [r7, #12] - 8038a58: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8038a5c: d011 beq.n 8038a82 + 8038a90: 68fb ldr r3, [r7, #12] + 8038a92: 2b06 cmp r3, #6 + 8038a94: d015 beq.n 8038ac2 + 8038a96: 68fb ldr r3, [r7, #12] + 8038a98: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8038a9c: d011 beq.n 8038ac2 { __HAL_TIM_ENABLE(htim); - 8038a5e: 687b ldr r3, [r7, #4] - 8038a60: 681b ldr r3, [r3, #0] - 8038a62: 681a ldr r2, [r3, #0] - 8038a64: 687b ldr r3, [r7, #4] - 8038a66: 681b ldr r3, [r3, #0] - 8038a68: f042 0201 orr.w r2, r2, #1 - 8038a6c: 601a str r2, [r3, #0] + 8038a9e: 687b ldr r3, [r7, #4] + 8038aa0: 681b ldr r3, [r3, #0] + 8038aa2: 681a ldr r2, [r3, #0] + 8038aa4: 687b ldr r3, [r7, #4] + 8038aa6: 681b ldr r3, [r3, #0] + 8038aa8: f042 0201 orr.w r2, r2, #1 + 8038aac: 601a str r2, [r3, #0] if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8038a6e: e008 b.n 8038a82 + 8038aae: e008 b.n 8038ac2 } } else { __HAL_TIM_ENABLE(htim); - 8038a70: 687b ldr r3, [r7, #4] - 8038a72: 681b ldr r3, [r3, #0] - 8038a74: 681a ldr r2, [r3, #0] - 8038a76: 687b ldr r3, [r7, #4] - 8038a78: 681b ldr r3, [r3, #0] - 8038a7a: f042 0201 orr.w r2, r2, #1 - 8038a7e: 601a str r2, [r3, #0] - 8038a80: e000 b.n 8038a84 + 8038ab0: 687b ldr r3, [r7, #4] + 8038ab2: 681b ldr r3, [r3, #0] + 8038ab4: 681a ldr r2, [r3, #0] + 8038ab6: 687b ldr r3, [r7, #4] + 8038ab8: 681b ldr r3, [r3, #0] + 8038aba: f042 0201 orr.w r2, r2, #1 + 8038abe: 601a str r2, [r3, #0] + 8038ac0: e000 b.n 8038ac4 if (!IS_TIM_SLAVEMODE_TRIGGER_ENABLED(tmpsmcr)) - 8038a82: bf00 nop + 8038ac2: bf00 nop } /* Return function status */ return HAL_OK; - 8038a84: 2300 movs r3, #0 -} - 8038a86: 4618 mov r0, r3 - 8038a88: 3710 adds r7, #16 - 8038a8a: 46bd mov sp, r7 - 8038a8c: bd80 pop {r7, pc} - 8038a8e: bf00 nop - 8038a90: 40010000 .word 0x40010000 - 8038a94: 40010400 .word 0x40010400 - 8038a98: 40014000 .word 0x40014000 - 8038a9c: 40014400 .word 0x40014400 - 8038aa0: 40014800 .word 0x40014800 - 8038aa4: 40000400 .word 0x40000400 - 8038aa8: 40000800 .word 0x40000800 - 8038aac: 40000c00 .word 0x40000c00 - 8038ab0: 40001800 .word 0x40001800 - 8038ab4: 00010007 .word 0x00010007 - -08038ab8 : + 8038ac4: 2300 movs r3, #0 +} + 8038ac6: 4618 mov r0, r3 + 8038ac8: 3710 adds r7, #16 + 8038aca: 46bd mov sp, r7 + 8038acc: bd80 pop {r7, pc} + 8038ace: bf00 nop + 8038ad0: 40010000 .word 0x40010000 + 8038ad4: 40010400 .word 0x40010400 + 8038ad8: 40014000 .word 0x40014000 + 8038adc: 40014400 .word 0x40014400 + 8038ae0: 40014800 .word 0x40014800 + 8038ae4: 40000400 .word 0x40000400 + 8038ae8: 40000800 .word 0x40000800 + 8038aec: 40000c00 .word 0x40000c00 + 8038af0: 40001800 .word 0x40001800 + 8038af4: 00010007 .word 0x00010007 + +08038af8 : * @brief This function handles TIM interrupts requests. * @param htim TIM handle * @retval None */ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim) { - 8038ab8: b580 push {r7, lr} - 8038aba: b082 sub sp, #8 - 8038abc: af00 add r7, sp, #0 - 8038abe: 6078 str r0, [r7, #4] + 8038af8: b580 push {r7, lr} + 8038afa: b082 sub sp, #8 + 8038afc: af00 add r7, sp, #0 + 8038afe: 6078 str r0, [r7, #4] /* Capture compare 1 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC1) != RESET) - 8038ac0: 687b ldr r3, [r7, #4] - 8038ac2: 681b ldr r3, [r3, #0] - 8038ac4: 691b ldr r3, [r3, #16] - 8038ac6: f003 0302 and.w r3, r3, #2 - 8038aca: 2b02 cmp r3, #2 - 8038acc: d122 bne.n 8038b14 + 8038b00: 687b ldr r3, [r7, #4] + 8038b02: 681b ldr r3, [r3, #0] + 8038b04: 691b ldr r3, [r3, #16] + 8038b06: f003 0302 and.w r3, r3, #2 + 8038b0a: 2b02 cmp r3, #2 + 8038b0c: d122 bne.n 8038b54 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC1) != RESET) - 8038ace: 687b ldr r3, [r7, #4] - 8038ad0: 681b ldr r3, [r3, #0] - 8038ad2: 68db ldr r3, [r3, #12] - 8038ad4: f003 0302 and.w r3, r3, #2 - 8038ad8: 2b02 cmp r3, #2 - 8038ada: d11b bne.n 8038b14 + 8038b0e: 687b ldr r3, [r7, #4] + 8038b10: 681b ldr r3, [r3, #0] + 8038b12: 68db ldr r3, [r3, #12] + 8038b14: f003 0302 and.w r3, r3, #2 + 8038b18: 2b02 cmp r3, #2 + 8038b1a: d11b bne.n 8038b54 { { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC1); - 8038adc: 687b ldr r3, [r7, #4] - 8038ade: 681b ldr r3, [r3, #0] - 8038ae0: f06f 0202 mvn.w r2, #2 - 8038ae4: 611a str r2, [r3, #16] + 8038b1c: 687b ldr r3, [r7, #4] + 8038b1e: 681b ldr r3, [r3, #0] + 8038b20: f06f 0202 mvn.w r2, #2 + 8038b24: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_1; - 8038ae6: 687b ldr r3, [r7, #4] - 8038ae8: 2201 movs r2, #1 - 8038aea: 771a strb r2, [r3, #28] + 8038b26: 687b ldr r3, [r7, #4] + 8038b28: 2201 movs r2, #1 + 8038b2a: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC1S) != 0x00U) - 8038aec: 687b ldr r3, [r7, #4] - 8038aee: 681b ldr r3, [r3, #0] - 8038af0: 699b ldr r3, [r3, #24] - 8038af2: f003 0303 and.w r3, r3, #3 - 8038af6: 2b00 cmp r3, #0 - 8038af8: d003 beq.n 8038b02 + 8038b2c: 687b ldr r3, [r7, #4] + 8038b2e: 681b ldr r3, [r3, #0] + 8038b30: 699b ldr r3, [r3, #24] + 8038b32: f003 0303 and.w r3, r3, #3 + 8038b36: 2b00 cmp r3, #0 + 8038b38: d003 beq.n 8038b42 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8038afa: 6878 ldr r0, [r7, #4] - 8038afc: f000 fb12 bl 8039124 - 8038b00: e005 b.n 8038b0e + 8038b3a: 6878 ldr r0, [r7, #4] + 8038b3c: f000 fb12 bl 8039164 + 8038b40: e005 b.n 8038b4e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8038b02: 6878 ldr r0, [r7, #4] - 8038b04: f000 fb04 bl 8039110 + 8038b42: 6878 ldr r0, [r7, #4] + 8038b44: f000 fb04 bl 8039150 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8038b08: 6878 ldr r0, [r7, #4] - 8038b0a: f000 fb15 bl 8039138 + 8038b48: 6878 ldr r0, [r7, #4] + 8038b4a: f000 fb15 bl 8039178 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8038b0e: 687b ldr r3, [r7, #4] - 8038b10: 2200 movs r2, #0 - 8038b12: 771a strb r2, [r3, #28] + 8038b4e: 687b ldr r3, [r7, #4] + 8038b50: 2200 movs r2, #0 + 8038b52: 771a strb r2, [r3, #28] } } } /* Capture compare 2 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC2) != RESET) - 8038b14: 687b ldr r3, [r7, #4] - 8038b16: 681b ldr r3, [r3, #0] - 8038b18: 691b ldr r3, [r3, #16] - 8038b1a: f003 0304 and.w r3, r3, #4 - 8038b1e: 2b04 cmp r3, #4 - 8038b20: d122 bne.n 8038b68 + 8038b54: 687b ldr r3, [r7, #4] + 8038b56: 681b ldr r3, [r3, #0] + 8038b58: 691b ldr r3, [r3, #16] + 8038b5a: f003 0304 and.w r3, r3, #4 + 8038b5e: 2b04 cmp r3, #4 + 8038b60: d122 bne.n 8038ba8 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC2) != RESET) - 8038b22: 687b ldr r3, [r7, #4] - 8038b24: 681b ldr r3, [r3, #0] - 8038b26: 68db ldr r3, [r3, #12] - 8038b28: f003 0304 and.w r3, r3, #4 - 8038b2c: 2b04 cmp r3, #4 - 8038b2e: d11b bne.n 8038b68 + 8038b62: 687b ldr r3, [r7, #4] + 8038b64: 681b ldr r3, [r3, #0] + 8038b66: 68db ldr r3, [r3, #12] + 8038b68: f003 0304 and.w r3, r3, #4 + 8038b6c: 2b04 cmp r3, #4 + 8038b6e: d11b bne.n 8038ba8 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC2); - 8038b30: 687b ldr r3, [r7, #4] - 8038b32: 681b ldr r3, [r3, #0] - 8038b34: f06f 0204 mvn.w r2, #4 - 8038b38: 611a str r2, [r3, #16] + 8038b70: 687b ldr r3, [r7, #4] + 8038b72: 681b ldr r3, [r3, #0] + 8038b74: f06f 0204 mvn.w r2, #4 + 8038b78: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_2; - 8038b3a: 687b ldr r3, [r7, #4] - 8038b3c: 2202 movs r2, #2 - 8038b3e: 771a strb r2, [r3, #28] + 8038b7a: 687b ldr r3, [r7, #4] + 8038b7c: 2202 movs r2, #2 + 8038b7e: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR1 & TIM_CCMR1_CC2S) != 0x00U) - 8038b40: 687b ldr r3, [r7, #4] - 8038b42: 681b ldr r3, [r3, #0] - 8038b44: 699b ldr r3, [r3, #24] - 8038b46: f403 7340 and.w r3, r3, #768 ; 0x300 - 8038b4a: 2b00 cmp r3, #0 - 8038b4c: d003 beq.n 8038b56 + 8038b80: 687b ldr r3, [r7, #4] + 8038b82: 681b ldr r3, [r3, #0] + 8038b84: 699b ldr r3, [r3, #24] + 8038b86: f403 7340 and.w r3, r3, #768 ; 0x300 + 8038b8a: 2b00 cmp r3, #0 + 8038b8c: d003 beq.n 8038b96 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8038b4e: 6878 ldr r0, [r7, #4] - 8038b50: f000 fae8 bl 8039124 - 8038b54: e005 b.n 8038b62 + 8038b8e: 6878 ldr r0, [r7, #4] + 8038b90: f000 fae8 bl 8039164 + 8038b94: e005 b.n 8038ba2 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8038b56: 6878 ldr r0, [r7, #4] - 8038b58: f000 fada bl 8039110 + 8038b96: 6878 ldr r0, [r7, #4] + 8038b98: f000 fada bl 8039150 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8038b5c: 6878 ldr r0, [r7, #4] - 8038b5e: f000 faeb bl 8039138 + 8038b9c: 6878 ldr r0, [r7, #4] + 8038b9e: f000 faeb bl 8039178 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8038b62: 687b ldr r3, [r7, #4] - 8038b64: 2200 movs r2, #0 - 8038b66: 771a strb r2, [r3, #28] + 8038ba2: 687b ldr r3, [r7, #4] + 8038ba4: 2200 movs r2, #0 + 8038ba6: 771a strb r2, [r3, #28] } } /* Capture compare 3 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC3) != RESET) - 8038b68: 687b ldr r3, [r7, #4] - 8038b6a: 681b ldr r3, [r3, #0] - 8038b6c: 691b ldr r3, [r3, #16] - 8038b6e: f003 0308 and.w r3, r3, #8 - 8038b72: 2b08 cmp r3, #8 - 8038b74: d122 bne.n 8038bbc + 8038ba8: 687b ldr r3, [r7, #4] + 8038baa: 681b ldr r3, [r3, #0] + 8038bac: 691b ldr r3, [r3, #16] + 8038bae: f003 0308 and.w r3, r3, #8 + 8038bb2: 2b08 cmp r3, #8 + 8038bb4: d122 bne.n 8038bfc { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC3) != RESET) - 8038b76: 687b ldr r3, [r7, #4] - 8038b78: 681b ldr r3, [r3, #0] - 8038b7a: 68db ldr r3, [r3, #12] - 8038b7c: f003 0308 and.w r3, r3, #8 - 8038b80: 2b08 cmp r3, #8 - 8038b82: d11b bne.n 8038bbc + 8038bb6: 687b ldr r3, [r7, #4] + 8038bb8: 681b ldr r3, [r3, #0] + 8038bba: 68db ldr r3, [r3, #12] + 8038bbc: f003 0308 and.w r3, r3, #8 + 8038bc0: 2b08 cmp r3, #8 + 8038bc2: d11b bne.n 8038bfc { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC3); - 8038b84: 687b ldr r3, [r7, #4] - 8038b86: 681b ldr r3, [r3, #0] - 8038b88: f06f 0208 mvn.w r2, #8 - 8038b8c: 611a str r2, [r3, #16] + 8038bc4: 687b ldr r3, [r7, #4] + 8038bc6: 681b ldr r3, [r3, #0] + 8038bc8: f06f 0208 mvn.w r2, #8 + 8038bcc: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_3; - 8038b8e: 687b ldr r3, [r7, #4] - 8038b90: 2204 movs r2, #4 - 8038b92: 771a strb r2, [r3, #28] + 8038bce: 687b ldr r3, [r7, #4] + 8038bd0: 2204 movs r2, #4 + 8038bd2: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC3S) != 0x00U) - 8038b94: 687b ldr r3, [r7, #4] - 8038b96: 681b ldr r3, [r3, #0] - 8038b98: 69db ldr r3, [r3, #28] - 8038b9a: f003 0303 and.w r3, r3, #3 - 8038b9e: 2b00 cmp r3, #0 - 8038ba0: d003 beq.n 8038baa + 8038bd4: 687b ldr r3, [r7, #4] + 8038bd6: 681b ldr r3, [r3, #0] + 8038bd8: 69db ldr r3, [r3, #28] + 8038bda: f003 0303 and.w r3, r3, #3 + 8038bde: 2b00 cmp r3, #0 + 8038be0: d003 beq.n 8038bea { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8038ba2: 6878 ldr r0, [r7, #4] - 8038ba4: f000 fabe bl 8039124 - 8038ba8: e005 b.n 8038bb6 + 8038be2: 6878 ldr r0, [r7, #4] + 8038be4: f000 fabe bl 8039164 + 8038be8: e005 b.n 8038bf6 { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8038baa: 6878 ldr r0, [r7, #4] - 8038bac: f000 fab0 bl 8039110 + 8038bea: 6878 ldr r0, [r7, #4] + 8038bec: f000 fab0 bl 8039150 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8038bb0: 6878 ldr r0, [r7, #4] - 8038bb2: f000 fac1 bl 8039138 + 8038bf0: 6878 ldr r0, [r7, #4] + 8038bf2: f000 fac1 bl 8039178 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8038bb6: 687b ldr r3, [r7, #4] - 8038bb8: 2200 movs r2, #0 - 8038bba: 771a strb r2, [r3, #28] + 8038bf6: 687b ldr r3, [r7, #4] + 8038bf8: 2200 movs r2, #0 + 8038bfa: 771a strb r2, [r3, #28] } } /* Capture compare 4 event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_CC4) != RESET) - 8038bbc: 687b ldr r3, [r7, #4] - 8038bbe: 681b ldr r3, [r3, #0] - 8038bc0: 691b ldr r3, [r3, #16] - 8038bc2: f003 0310 and.w r3, r3, #16 - 8038bc6: 2b10 cmp r3, #16 - 8038bc8: d122 bne.n 8038c10 + 8038bfc: 687b ldr r3, [r7, #4] + 8038bfe: 681b ldr r3, [r3, #0] + 8038c00: 691b ldr r3, [r3, #16] + 8038c02: f003 0310 and.w r3, r3, #16 + 8038c06: 2b10 cmp r3, #16 + 8038c08: d122 bne.n 8038c50 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_CC4) != RESET) - 8038bca: 687b ldr r3, [r7, #4] - 8038bcc: 681b ldr r3, [r3, #0] - 8038bce: 68db ldr r3, [r3, #12] - 8038bd0: f003 0310 and.w r3, r3, #16 - 8038bd4: 2b10 cmp r3, #16 - 8038bd6: d11b bne.n 8038c10 + 8038c0a: 687b ldr r3, [r7, #4] + 8038c0c: 681b ldr r3, [r3, #0] + 8038c0e: 68db ldr r3, [r3, #12] + 8038c10: f003 0310 and.w r3, r3, #16 + 8038c14: 2b10 cmp r3, #16 + 8038c16: d11b bne.n 8038c50 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_CC4); - 8038bd8: 687b ldr r3, [r7, #4] - 8038bda: 681b ldr r3, [r3, #0] - 8038bdc: f06f 0210 mvn.w r2, #16 - 8038be0: 611a str r2, [r3, #16] + 8038c18: 687b ldr r3, [r7, #4] + 8038c1a: 681b ldr r3, [r3, #0] + 8038c1c: f06f 0210 mvn.w r2, #16 + 8038c20: 611a str r2, [r3, #16] htim->Channel = HAL_TIM_ACTIVE_CHANNEL_4; - 8038be2: 687b ldr r3, [r7, #4] - 8038be4: 2208 movs r2, #8 - 8038be6: 771a strb r2, [r3, #28] + 8038c22: 687b ldr r3, [r7, #4] + 8038c24: 2208 movs r2, #8 + 8038c26: 771a strb r2, [r3, #28] /* Input capture event */ if ((htim->Instance->CCMR2 & TIM_CCMR2_CC4S) != 0x00U) - 8038be8: 687b ldr r3, [r7, #4] - 8038bea: 681b ldr r3, [r3, #0] - 8038bec: 69db ldr r3, [r3, #28] - 8038bee: f403 7340 and.w r3, r3, #768 ; 0x300 - 8038bf2: 2b00 cmp r3, #0 - 8038bf4: d003 beq.n 8038bfe + 8038c28: 687b ldr r3, [r7, #4] + 8038c2a: 681b ldr r3, [r3, #0] + 8038c2c: 69db ldr r3, [r3, #28] + 8038c2e: f403 7340 and.w r3, r3, #768 ; 0x300 + 8038c32: 2b00 cmp r3, #0 + 8038c34: d003 beq.n 8038c3e { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->IC_CaptureCallback(htim); #else HAL_TIM_IC_CaptureCallback(htim); - 8038bf6: 6878 ldr r0, [r7, #4] - 8038bf8: f000 fa94 bl 8039124 - 8038bfc: e005 b.n 8038c0a + 8038c36: 6878 ldr r0, [r7, #4] + 8038c38: f000 fa94 bl 8039164 + 8038c3c: e005 b.n 8038c4a { #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->OC_DelayElapsedCallback(htim); htim->PWM_PulseFinishedCallback(htim); #else HAL_TIM_OC_DelayElapsedCallback(htim); - 8038bfe: 6878 ldr r0, [r7, #4] - 8038c00: f000 fa86 bl 8039110 + 8038c3e: 6878 ldr r0, [r7, #4] + 8038c40: f000 fa86 bl 8039150 HAL_TIM_PWM_PulseFinishedCallback(htim); - 8038c04: 6878 ldr r0, [r7, #4] - 8038c06: f000 fa97 bl 8039138 + 8038c44: 6878 ldr r0, [r7, #4] + 8038c46: f000 fa97 bl 8039178 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } htim->Channel = HAL_TIM_ACTIVE_CHANNEL_CLEARED; - 8038c0a: 687b ldr r3, [r7, #4] - 8038c0c: 2200 movs r2, #0 - 8038c0e: 771a strb r2, [r3, #28] + 8038c4a: 687b ldr r3, [r7, #4] + 8038c4c: 2200 movs r2, #0 + 8038c4e: 771a strb r2, [r3, #28] } } /* TIM Update event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_UPDATE) != RESET) - 8038c10: 687b ldr r3, [r7, #4] - 8038c12: 681b ldr r3, [r3, #0] - 8038c14: 691b ldr r3, [r3, #16] - 8038c16: f003 0301 and.w r3, r3, #1 - 8038c1a: 2b01 cmp r3, #1 - 8038c1c: d10e bne.n 8038c3c + 8038c50: 687b ldr r3, [r7, #4] + 8038c52: 681b ldr r3, [r3, #0] + 8038c54: 691b ldr r3, [r3, #16] + 8038c56: f003 0301 and.w r3, r3, #1 + 8038c5a: 2b01 cmp r3, #1 + 8038c5c: d10e bne.n 8038c7c { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) - 8038c1e: 687b ldr r3, [r7, #4] - 8038c20: 681b ldr r3, [r3, #0] - 8038c22: 68db ldr r3, [r3, #12] - 8038c24: f003 0301 and.w r3, r3, #1 - 8038c28: 2b01 cmp r3, #1 - 8038c2a: d107 bne.n 8038c3c + 8038c5e: 687b ldr r3, [r7, #4] + 8038c60: 681b ldr r3, [r3, #0] + 8038c62: 68db ldr r3, [r3, #12] + 8038c64: f003 0301 and.w r3, r3, #1 + 8038c68: 2b01 cmp r3, #1 + 8038c6a: d107 bne.n 8038c7c { __HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE); - 8038c2c: 687b ldr r3, [r7, #4] - 8038c2e: 681b ldr r3, [r3, #0] - 8038c30: f06f 0201 mvn.w r2, #1 - 8038c34: 611a str r2, [r3, #16] + 8038c6c: 687b ldr r3, [r7, #4] + 8038c6e: 681b ldr r3, [r3, #0] + 8038c70: f06f 0201 mvn.w r2, #1 + 8038c74: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->PeriodElapsedCallback(htim); #else HAL_TIM_PeriodElapsedCallback(htim); - 8038c36: 6878 ldr r0, [r7, #4] - 8038c38: f7e8 fbd6 bl 80213e8 + 8038c76: 6878 ldr r0, [r7, #4] + 8038c78: f7e8 fbb6 bl 80213e8 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break input event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK) != RESET) - 8038c3c: 687b ldr r3, [r7, #4] - 8038c3e: 681b ldr r3, [r3, #0] - 8038c40: 691b ldr r3, [r3, #16] - 8038c42: f003 0380 and.w r3, r3, #128 ; 0x80 - 8038c46: 2b80 cmp r3, #128 ; 0x80 - 8038c48: d10e bne.n 8038c68 + 8038c7c: 687b ldr r3, [r7, #4] + 8038c7e: 681b ldr r3, [r3, #0] + 8038c80: 691b ldr r3, [r3, #16] + 8038c82: f003 0380 and.w r3, r3, #128 ; 0x80 + 8038c86: 2b80 cmp r3, #128 ; 0x80 + 8038c88: d10e bne.n 8038ca8 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 8038c4a: 687b ldr r3, [r7, #4] - 8038c4c: 681b ldr r3, [r3, #0] - 8038c4e: 68db ldr r3, [r3, #12] - 8038c50: f003 0380 and.w r3, r3, #128 ; 0x80 - 8038c54: 2b80 cmp r3, #128 ; 0x80 - 8038c56: d107 bne.n 8038c68 + 8038c8a: 687b ldr r3, [r7, #4] + 8038c8c: 681b ldr r3, [r3, #0] + 8038c8e: 68db ldr r3, [r3, #12] + 8038c90: f003 0380 and.w r3, r3, #128 ; 0x80 + 8038c94: 2b80 cmp r3, #128 ; 0x80 + 8038c96: d107 bne.n 8038ca8 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_BREAK); - 8038c58: 687b ldr r3, [r7, #4] - 8038c5a: 681b ldr r3, [r3, #0] - 8038c5c: f06f 0280 mvn.w r2, #128 ; 0x80 - 8038c60: 611a str r2, [r3, #16] + 8038c98: 687b ldr r3, [r7, #4] + 8038c9a: 681b ldr r3, [r3, #0] + 8038c9c: f06f 0280 mvn.w r2, #128 ; 0x80 + 8038ca0: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->BreakCallback(htim); #else HAL_TIMEx_BreakCallback(htim); - 8038c62: 6878 ldr r0, [r7, #4] - 8038c64: f000 ff48 bl 8039af8 + 8038ca2: 6878 ldr r0, [r7, #4] + 8038ca4: f000 ff48 bl 8039b38 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Break2 input event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_BREAK2) != RESET) - 8038c68: 687b ldr r3, [r7, #4] - 8038c6a: 681b ldr r3, [r3, #0] - 8038c6c: 691b ldr r3, [r3, #16] - 8038c6e: f403 7380 and.w r3, r3, #256 ; 0x100 - 8038c72: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8038c76: d10e bne.n 8038c96 + 8038ca8: 687b ldr r3, [r7, #4] + 8038caa: 681b ldr r3, [r3, #0] + 8038cac: 691b ldr r3, [r3, #16] + 8038cae: f403 7380 and.w r3, r3, #256 ; 0x100 + 8038cb2: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8038cb6: d10e bne.n 8038cd6 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_BREAK) != RESET) - 8038c78: 687b ldr r3, [r7, #4] - 8038c7a: 681b ldr r3, [r3, #0] - 8038c7c: 68db ldr r3, [r3, #12] - 8038c7e: f003 0380 and.w r3, r3, #128 ; 0x80 - 8038c82: 2b80 cmp r3, #128 ; 0x80 - 8038c84: d107 bne.n 8038c96 + 8038cb8: 687b ldr r3, [r7, #4] + 8038cba: 681b ldr r3, [r3, #0] + 8038cbc: 68db ldr r3, [r3, #12] + 8038cbe: f003 0380 and.w r3, r3, #128 ; 0x80 + 8038cc2: 2b80 cmp r3, #128 ; 0x80 + 8038cc4: d107 bne.n 8038cd6 { __HAL_TIM_CLEAR_FLAG(htim, TIM_FLAG_BREAK2); - 8038c86: 687b ldr r3, [r7, #4] - 8038c88: 681b ldr r3, [r3, #0] - 8038c8a: f46f 7280 mvn.w r2, #256 ; 0x100 - 8038c8e: 611a str r2, [r3, #16] + 8038cc6: 687b ldr r3, [r7, #4] + 8038cc8: 681b ldr r3, [r3, #0] + 8038cca: f46f 7280 mvn.w r2, #256 ; 0x100 + 8038cce: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->Break2Callback(htim); #else HAL_TIMEx_Break2Callback(htim); - 8038c90: 6878 ldr r0, [r7, #4] - 8038c92: f000 ff3b bl 8039b0c + 8038cd0: 6878 ldr r0, [r7, #4] + 8038cd2: f000 ff3b bl 8039b4c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM Trigger detection event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_TRIGGER) != RESET) - 8038c96: 687b ldr r3, [r7, #4] - 8038c98: 681b ldr r3, [r3, #0] - 8038c9a: 691b ldr r3, [r3, #16] - 8038c9c: f003 0340 and.w r3, r3, #64 ; 0x40 - 8038ca0: 2b40 cmp r3, #64 ; 0x40 - 8038ca2: d10e bne.n 8038cc2 + 8038cd6: 687b ldr r3, [r7, #4] + 8038cd8: 681b ldr r3, [r3, #0] + 8038cda: 691b ldr r3, [r3, #16] + 8038cdc: f003 0340 and.w r3, r3, #64 ; 0x40 + 8038ce0: 2b40 cmp r3, #64 ; 0x40 + 8038ce2: d10e bne.n 8038d02 { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_TRIGGER) != RESET) - 8038ca4: 687b ldr r3, [r7, #4] - 8038ca6: 681b ldr r3, [r3, #0] - 8038ca8: 68db ldr r3, [r3, #12] - 8038caa: f003 0340 and.w r3, r3, #64 ; 0x40 - 8038cae: 2b40 cmp r3, #64 ; 0x40 - 8038cb0: d107 bne.n 8038cc2 + 8038ce4: 687b ldr r3, [r7, #4] + 8038ce6: 681b ldr r3, [r3, #0] + 8038ce8: 68db ldr r3, [r3, #12] + 8038cea: f003 0340 and.w r3, r3, #64 ; 0x40 + 8038cee: 2b40 cmp r3, #64 ; 0x40 + 8038cf0: d107 bne.n 8038d02 { __HAL_TIM_CLEAR_IT(htim, TIM_IT_TRIGGER); - 8038cb2: 687b ldr r3, [r7, #4] - 8038cb4: 681b ldr r3, [r3, #0] - 8038cb6: f06f 0240 mvn.w r2, #64 ; 0x40 - 8038cba: 611a str r2, [r3, #16] + 8038cf2: 687b ldr r3, [r7, #4] + 8038cf4: 681b ldr r3, [r3, #0] + 8038cf6: f06f 0240 mvn.w r2, #64 ; 0x40 + 8038cfa: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->TriggerCallback(htim); #else HAL_TIM_TriggerCallback(htim); - 8038cbc: 6878 ldr r0, [r7, #4] - 8038cbe: f000 fa45 bl 803914c + 8038cfc: 6878 ldr r0, [r7, #4] + 8038cfe: f000 fa45 bl 803918c #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } /* TIM commutation event */ if (__HAL_TIM_GET_FLAG(htim, TIM_FLAG_COM) != RESET) - 8038cc2: 687b ldr r3, [r7, #4] - 8038cc4: 681b ldr r3, [r3, #0] - 8038cc6: 691b ldr r3, [r3, #16] - 8038cc8: f003 0320 and.w r3, r3, #32 - 8038ccc: 2b20 cmp r3, #32 - 8038cce: d10e bne.n 8038cee + 8038d02: 687b ldr r3, [r7, #4] + 8038d04: 681b ldr r3, [r3, #0] + 8038d06: 691b ldr r3, [r3, #16] + 8038d08: f003 0320 and.w r3, r3, #32 + 8038d0c: 2b20 cmp r3, #32 + 8038d0e: d10e bne.n 8038d2e { if (__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_COM) != RESET) - 8038cd0: 687b ldr r3, [r7, #4] - 8038cd2: 681b ldr r3, [r3, #0] - 8038cd4: 68db ldr r3, [r3, #12] - 8038cd6: f003 0320 and.w r3, r3, #32 - 8038cda: 2b20 cmp r3, #32 - 8038cdc: d107 bne.n 8038cee + 8038d10: 687b ldr r3, [r7, #4] + 8038d12: 681b ldr r3, [r3, #0] + 8038d14: 68db ldr r3, [r3, #12] + 8038d16: f003 0320 and.w r3, r3, #32 + 8038d1a: 2b20 cmp r3, #32 + 8038d1c: d107 bne.n 8038d2e { __HAL_TIM_CLEAR_IT(htim, TIM_FLAG_COM); - 8038cde: 687b ldr r3, [r7, #4] - 8038ce0: 681b ldr r3, [r3, #0] - 8038ce2: f06f 0220 mvn.w r2, #32 - 8038ce6: 611a str r2, [r3, #16] + 8038d1e: 687b ldr r3, [r7, #4] + 8038d20: 681b ldr r3, [r3, #0] + 8038d22: f06f 0220 mvn.w r2, #32 + 8038d26: 611a str r2, [r3, #16] #if (USE_HAL_TIM_REGISTER_CALLBACKS == 1) htim->CommutationCallback(htim); #else HAL_TIMEx_CommutCallback(htim); - 8038ce8: 6878 ldr r0, [r7, #4] - 8038cea: f000 fefb bl 8039ae4 + 8038d28: 6878 ldr r0, [r7, #4] + 8038d2a: f000 fefb bl 8039b24 #endif /* USE_HAL_TIM_REGISTER_CALLBACKS */ } } } - 8038cee: bf00 nop - 8038cf0: 3708 adds r7, #8 - 8038cf2: 46bd mov sp, r7 - 8038cf4: bd80 pop {r7, pc} + 8038d2e: bf00 nop + 8038d30: 3708 adds r7, #8 + 8038d32: 46bd mov sp, r7 + 8038d34: bd80 pop {r7, pc} ... -08038cf8 : +08038d38 : * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel) { - 8038cf8: b580 push {r7, lr} - 8038cfa: b086 sub sp, #24 - 8038cfc: af00 add r7, sp, #0 - 8038cfe: 60f8 str r0, [r7, #12] - 8038d00: 60b9 str r1, [r7, #8] - 8038d02: 607a str r2, [r7, #4] + 8038d38: b580 push {r7, lr} + 8038d3a: b086 sub sp, #24 + 8038d3c: af00 add r7, sp, #0 + 8038d3e: 60f8 str r0, [r7, #12] + 8038d40: 60b9 str r1, [r7, #8] + 8038d42: 607a str r2, [r7, #4] HAL_StatusTypeDef status = HAL_OK; - 8038d04: 2300 movs r3, #0 - 8038d06: 75fb strb r3, [r7, #23] + 8038d44: 2300 movs r3, #0 + 8038d46: 75fb strb r3, [r7, #23] assert_param(IS_TIM_PWM_MODE(sConfig->OCMode)); assert_param(IS_TIM_OC_POLARITY(sConfig->OCPolarity)); assert_param(IS_TIM_FAST_STATE(sConfig->OCFastMode)); /* Process Locked */ __HAL_LOCK(htim); - 8038d08: 68fb ldr r3, [r7, #12] - 8038d0a: f893 303c ldrb.w r3, [r3, #60] ; 0x3c - 8038d0e: 2b01 cmp r3, #1 - 8038d10: d101 bne.n 8038d16 - 8038d12: 2302 movs r3, #2 - 8038d14: e0ff b.n 8038f16 - 8038d16: 68fb ldr r3, [r7, #12] - 8038d18: 2201 movs r2, #1 - 8038d1a: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8038d48: 68fb ldr r3, [r7, #12] + 8038d4a: f893 303c ldrb.w r3, [r3, #60] ; 0x3c + 8038d4e: 2b01 cmp r3, #1 + 8038d50: d101 bne.n 8038d56 + 8038d52: 2302 movs r3, #2 + 8038d54: e0ff b.n 8038f56 + 8038d56: 68fb ldr r3, [r7, #12] + 8038d58: 2201 movs r2, #1 + 8038d5a: f883 203c strb.w r2, [r3, #60] ; 0x3c switch (Channel) - 8038d1e: 687b ldr r3, [r7, #4] - 8038d20: 2b14 cmp r3, #20 - 8038d22: f200 80f0 bhi.w 8038f06 - 8038d26: a201 add r2, pc, #4 ; (adr r2, 8038d2c ) - 8038d28: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8038d2c: 08038d81 .word 0x08038d81 - 8038d30: 08038f07 .word 0x08038f07 - 8038d34: 08038f07 .word 0x08038f07 - 8038d38: 08038f07 .word 0x08038f07 - 8038d3c: 08038dc1 .word 0x08038dc1 - 8038d40: 08038f07 .word 0x08038f07 - 8038d44: 08038f07 .word 0x08038f07 - 8038d48: 08038f07 .word 0x08038f07 - 8038d4c: 08038e03 .word 0x08038e03 - 8038d50: 08038f07 .word 0x08038f07 - 8038d54: 08038f07 .word 0x08038f07 - 8038d58: 08038f07 .word 0x08038f07 - 8038d5c: 08038e43 .word 0x08038e43 - 8038d60: 08038f07 .word 0x08038f07 - 8038d64: 08038f07 .word 0x08038f07 - 8038d68: 08038f07 .word 0x08038f07 - 8038d6c: 08038e85 .word 0x08038e85 - 8038d70: 08038f07 .word 0x08038f07 - 8038d74: 08038f07 .word 0x08038f07 - 8038d78: 08038f07 .word 0x08038f07 - 8038d7c: 08038ec5 .word 0x08038ec5 + 8038d5e: 687b ldr r3, [r7, #4] + 8038d60: 2b14 cmp r3, #20 + 8038d62: f200 80f0 bhi.w 8038f46 + 8038d66: a201 add r2, pc, #4 ; (adr r2, 8038d6c ) + 8038d68: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 8038d6c: 08038dc1 .word 0x08038dc1 + 8038d70: 08038f47 .word 0x08038f47 + 8038d74: 08038f47 .word 0x08038f47 + 8038d78: 08038f47 .word 0x08038f47 + 8038d7c: 08038e01 .word 0x08038e01 + 8038d80: 08038f47 .word 0x08038f47 + 8038d84: 08038f47 .word 0x08038f47 + 8038d88: 08038f47 .word 0x08038f47 + 8038d8c: 08038e43 .word 0x08038e43 + 8038d90: 08038f47 .word 0x08038f47 + 8038d94: 08038f47 .word 0x08038f47 + 8038d98: 08038f47 .word 0x08038f47 + 8038d9c: 08038e83 .word 0x08038e83 + 8038da0: 08038f47 .word 0x08038f47 + 8038da4: 08038f47 .word 0x08038f47 + 8038da8: 08038f47 .word 0x08038f47 + 8038dac: 08038ec5 .word 0x08038ec5 + 8038db0: 08038f47 .word 0x08038f47 + 8038db4: 08038f47 .word 0x08038f47 + 8038db8: 08038f47 .word 0x08038f47 + 8038dbc: 08038f05 .word 0x08038f05 { /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(htim->Instance)); /* Configure the Channel 1 in PWM mode */ TIM_OC1_SetConfig(htim->Instance, sConfig); - 8038d80: 68fb ldr r3, [r7, #12] - 8038d82: 681b ldr r3, [r3, #0] - 8038d84: 68b9 ldr r1, [r7, #8] - 8038d86: 4618 mov r0, r3 - 8038d88: f000 fa84 bl 8039294 - - /* Set the Preload enable bit for channel1 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; - 8038d8c: 68fb ldr r3, [r7, #12] - 8038d8e: 681b ldr r3, [r3, #0] - 8038d90: 699a ldr r2, [r3, #24] - 8038d92: 68fb ldr r3, [r7, #12] - 8038d94: 681b ldr r3, [r3, #0] - 8038d96: f042 0208 orr.w r2, r2, #8 - 8038d9a: 619a str r2, [r3, #24] - - /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; - 8038d9c: 68fb ldr r3, [r7, #12] - 8038d9e: 681b ldr r3, [r3, #0] - 8038da0: 699a ldr r2, [r3, #24] - 8038da2: 68fb ldr r3, [r7, #12] - 8038da4: 681b ldr r3, [r3, #0] - 8038da6: f022 0204 bic.w r2, r2, #4 - 8038daa: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode; - 8038dac: 68fb ldr r3, [r7, #12] - 8038dae: 681b ldr r3, [r3, #0] - 8038db0: 6999 ldr r1, [r3, #24] - 8038db2: 68bb ldr r3, [r7, #8] - 8038db4: 691a ldr r2, [r3, #16] - 8038db6: 68fb ldr r3, [r7, #12] - 8038db8: 681b ldr r3, [r3, #0] - 8038dba: 430a orrs r2, r1 - 8038dbc: 619a str r2, [r3, #24] - break; - 8038dbe: e0a5 b.n 8038f0c - { - /* Check the parameters */ - assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - - /* Configure the Channel 2 in PWM mode */ - TIM_OC2_SetConfig(htim->Instance, sConfig); 8038dc0: 68fb ldr r3, [r7, #12] 8038dc2: 681b ldr r3, [r3, #0] 8038dc4: 68b9 ldr r1, [r7, #8] 8038dc6: 4618 mov r0, r3 - 8038dc8: f000 faf4 bl 80393b4 + 8038dc8: f000 fa84 bl 80392d4 - /* Set the Preload enable bit for channel2 */ - htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + /* Set the Preload enable bit for channel1 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC1PE; 8038dcc: 68fb ldr r3, [r7, #12] 8038dce: 681b ldr r3, [r3, #0] 8038dd0: 699a ldr r2, [r3, #24] 8038dd2: 68fb ldr r3, [r7, #12] 8038dd4: 681b ldr r3, [r3, #0] - 8038dd6: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038dd6: f042 0208 orr.w r2, r2, #8 8038dda: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ - htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE; 8038ddc: 68fb ldr r3, [r7, #12] 8038dde: 681b ldr r3, [r3, #0] 8038de0: 699a ldr r2, [r3, #24] 8038de2: 68fb ldr r3, [r7, #12] 8038de4: 681b ldr r3, [r3, #0] - 8038de6: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038de6: f022 0204 bic.w r2, r2, #4 8038dea: 619a str r2, [r3, #24] - htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + htim->Instance->CCMR1 |= sConfig->OCFastMode; 8038dec: 68fb ldr r3, [r7, #12] 8038dee: 681b ldr r3, [r3, #0] 8038df0: 6999 ldr r1, [r3, #24] 8038df2: 68bb ldr r3, [r7, #8] - 8038df4: 691b ldr r3, [r3, #16] - 8038df6: 021a lsls r2, r3, #8 - 8038df8: 68fb ldr r3, [r7, #12] - 8038dfa: 681b ldr r3, [r3, #0] - 8038dfc: 430a orrs r2, r1 - 8038dfe: 619a str r2, [r3, #24] + 8038df4: 691a ldr r2, [r3, #16] + 8038df6: 68fb ldr r3, [r7, #12] + 8038df8: 681b ldr r3, [r3, #0] + 8038dfa: 430a orrs r2, r1 + 8038dfc: 619a str r2, [r3, #24] break; - 8038e00: e084 b.n 8038f0c + 8038dfe: e0a5 b.n 8038f4c { /* Check the parameters */ - assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CC2_INSTANCE(htim->Instance)); - /* Configure the Channel 3 in PWM mode */ - TIM_OC3_SetConfig(htim->Instance, sConfig); - 8038e02: 68fb ldr r3, [r7, #12] - 8038e04: 681b ldr r3, [r3, #0] - 8038e06: 68b9 ldr r1, [r7, #8] - 8038e08: 4618 mov r0, r3 - 8038e0a: f000 fb5d bl 80394c8 + /* Configure the Channel 2 in PWM mode */ + TIM_OC2_SetConfig(htim->Instance, sConfig); + 8038e00: 68fb ldr r3, [r7, #12] + 8038e02: 681b ldr r3, [r3, #0] + 8038e04: 68b9 ldr r1, [r7, #8] + 8038e06: 4618 mov r0, r3 + 8038e08: f000 faf4 bl 80393f4 - /* Set the Preload enable bit for channel3 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; - 8038e0e: 68fb ldr r3, [r7, #12] - 8038e10: 681b ldr r3, [r3, #0] - 8038e12: 69da ldr r2, [r3, #28] - 8038e14: 68fb ldr r3, [r7, #12] - 8038e16: 681b ldr r3, [r3, #0] - 8038e18: f042 0208 orr.w r2, r2, #8 - 8038e1c: 61da str r2, [r3, #28] + /* Set the Preload enable bit for channel2 */ + htim->Instance->CCMR1 |= TIM_CCMR1_OC2PE; + 8038e0c: 68fb ldr r3, [r7, #12] + 8038e0e: 681b ldr r3, [r3, #0] + 8038e10: 699a ldr r2, [r3, #24] + 8038e12: 68fb ldr r3, [r7, #12] + 8038e14: 681b ldr r3, [r3, #0] + 8038e16: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038e1a: 619a str r2, [r3, #24] /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; - 8038e1e: 68fb ldr r3, [r7, #12] - 8038e20: 681b ldr r3, [r3, #0] - 8038e22: 69da ldr r2, [r3, #28] - 8038e24: 68fb ldr r3, [r7, #12] - 8038e26: 681b ldr r3, [r3, #0] - 8038e28: f022 0204 bic.w r2, r2, #4 - 8038e2c: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode; - 8038e2e: 68fb ldr r3, [r7, #12] - 8038e30: 681b ldr r3, [r3, #0] - 8038e32: 69d9 ldr r1, [r3, #28] - 8038e34: 68bb ldr r3, [r7, #8] - 8038e36: 691a ldr r2, [r3, #16] + htim->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE; + 8038e1c: 68fb ldr r3, [r7, #12] + 8038e1e: 681b ldr r3, [r3, #0] + 8038e20: 699a ldr r2, [r3, #24] + 8038e22: 68fb ldr r3, [r7, #12] + 8038e24: 681b ldr r3, [r3, #0] + 8038e26: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038e2a: 619a str r2, [r3, #24] + htim->Instance->CCMR1 |= sConfig->OCFastMode << 8U; + 8038e2c: 68fb ldr r3, [r7, #12] + 8038e2e: 681b ldr r3, [r3, #0] + 8038e30: 6999 ldr r1, [r3, #24] + 8038e32: 68bb ldr r3, [r7, #8] + 8038e34: 691b ldr r3, [r3, #16] + 8038e36: 021a lsls r2, r3, #8 8038e38: 68fb ldr r3, [r7, #12] 8038e3a: 681b ldr r3, [r3, #0] 8038e3c: 430a orrs r2, r1 - 8038e3e: 61da str r2, [r3, #28] + 8038e3e: 619a str r2, [r3, #24] break; - 8038e40: e064 b.n 8038f0c + 8038e40: e084 b.n 8038f4c { /* Check the parameters */ - assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CC3_INSTANCE(htim->Instance)); - /* Configure the Channel 4 in PWM mode */ - TIM_OC4_SetConfig(htim->Instance, sConfig); + /* Configure the Channel 3 in PWM mode */ + TIM_OC3_SetConfig(htim->Instance, sConfig); 8038e42: 68fb ldr r3, [r7, #12] 8038e44: 681b ldr r3, [r3, #0] 8038e46: 68b9 ldr r1, [r7, #8] 8038e48: 4618 mov r0, r3 - 8038e4a: f000 fbc5 bl 80395d8 + 8038e4a: f000 fb5d bl 8039508 - /* Set the Preload enable bit for channel4 */ - htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + /* Set the Preload enable bit for channel3 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC3PE; 8038e4e: 68fb ldr r3, [r7, #12] 8038e50: 681b ldr r3, [r3, #0] 8038e52: 69da ldr r2, [r3, #28] 8038e54: 68fb ldr r3, [r7, #12] 8038e56: 681b ldr r3, [r3, #0] - 8038e58: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038e58: f042 0208 orr.w r2, r2, #8 8038e5c: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ - htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE; 8038e5e: 68fb ldr r3, [r7, #12] 8038e60: 681b ldr r3, [r3, #0] 8038e62: 69da ldr r2, [r3, #28] 8038e64: 68fb ldr r3, [r7, #12] 8038e66: 681b ldr r3, [r3, #0] - 8038e68: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038e68: f022 0204 bic.w r2, r2, #4 8038e6c: 61da str r2, [r3, #28] - htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + htim->Instance->CCMR2 |= sConfig->OCFastMode; 8038e6e: 68fb ldr r3, [r7, #12] 8038e70: 681b ldr r3, [r3, #0] 8038e72: 69d9 ldr r1, [r3, #28] 8038e74: 68bb ldr r3, [r7, #8] - 8038e76: 691b ldr r3, [r3, #16] - 8038e78: 021a lsls r2, r3, #8 - 8038e7a: 68fb ldr r3, [r7, #12] - 8038e7c: 681b ldr r3, [r3, #0] - 8038e7e: 430a orrs r2, r1 - 8038e80: 61da str r2, [r3, #28] + 8038e76: 691a ldr r2, [r3, #16] + 8038e78: 68fb ldr r3, [r7, #12] + 8038e7a: 681b ldr r3, [r3, #0] + 8038e7c: 430a orrs r2, r1 + 8038e7e: 61da str r2, [r3, #28] break; - 8038e82: e043 b.n 8038f0c + 8038e80: e064 b.n 8038f4c { /* Check the parameters */ - assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CC4_INSTANCE(htim->Instance)); - /* Configure the Channel 5 in PWM mode */ - TIM_OC5_SetConfig(htim->Instance, sConfig); - 8038e84: 68fb ldr r3, [r7, #12] - 8038e86: 681b ldr r3, [r3, #0] - 8038e88: 68b9 ldr r1, [r7, #8] - 8038e8a: 4618 mov r0, r3 - 8038e8c: f000 fc0e bl 80396ac + /* Configure the Channel 4 in PWM mode */ + TIM_OC4_SetConfig(htim->Instance, sConfig); + 8038e82: 68fb ldr r3, [r7, #12] + 8038e84: 681b ldr r3, [r3, #0] + 8038e86: 68b9 ldr r1, [r7, #8] + 8038e88: 4618 mov r0, r3 + 8038e8a: f000 fbc5 bl 8039618 - /* Set the Preload enable bit for channel5*/ - htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; - 8038e90: 68fb ldr r3, [r7, #12] - 8038e92: 681b ldr r3, [r3, #0] - 8038e94: 6d5a ldr r2, [r3, #84] ; 0x54 - 8038e96: 68fb ldr r3, [r7, #12] - 8038e98: 681b ldr r3, [r3, #0] - 8038e9a: f042 0208 orr.w r2, r2, #8 - 8038e9e: 655a str r2, [r3, #84] ; 0x54 + /* Set the Preload enable bit for channel4 */ + htim->Instance->CCMR2 |= TIM_CCMR2_OC4PE; + 8038e8e: 68fb ldr r3, [r7, #12] + 8038e90: 681b ldr r3, [r3, #0] + 8038e92: 69da ldr r2, [r3, #28] + 8038e94: 68fb ldr r3, [r7, #12] + 8038e96: 681b ldr r3, [r3, #0] + 8038e98: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038e9c: 61da str r2, [r3, #28] /* Configure the Output Fast mode */ - htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; - 8038ea0: 68fb ldr r3, [r7, #12] - 8038ea2: 681b ldr r3, [r3, #0] - 8038ea4: 6d5a ldr r2, [r3, #84] ; 0x54 - 8038ea6: 68fb ldr r3, [r7, #12] - 8038ea8: 681b ldr r3, [r3, #0] - 8038eaa: f022 0204 bic.w r2, r2, #4 - 8038eae: 655a str r2, [r3, #84] ; 0x54 - htim->Instance->CCMR3 |= sConfig->OCFastMode; - 8038eb0: 68fb ldr r3, [r7, #12] - 8038eb2: 681b ldr r3, [r3, #0] - 8038eb4: 6d59 ldr r1, [r3, #84] ; 0x54 - 8038eb6: 68bb ldr r3, [r7, #8] - 8038eb8: 691a ldr r2, [r3, #16] + htim->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE; + 8038e9e: 68fb ldr r3, [r7, #12] + 8038ea0: 681b ldr r3, [r3, #0] + 8038ea2: 69da ldr r2, [r3, #28] + 8038ea4: 68fb ldr r3, [r7, #12] + 8038ea6: 681b ldr r3, [r3, #0] + 8038ea8: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038eac: 61da str r2, [r3, #28] + htim->Instance->CCMR2 |= sConfig->OCFastMode << 8U; + 8038eae: 68fb ldr r3, [r7, #12] + 8038eb0: 681b ldr r3, [r3, #0] + 8038eb2: 69d9 ldr r1, [r3, #28] + 8038eb4: 68bb ldr r3, [r7, #8] + 8038eb6: 691b ldr r3, [r3, #16] + 8038eb8: 021a lsls r2, r3, #8 8038eba: 68fb ldr r3, [r7, #12] 8038ebc: 681b ldr r3, [r3, #0] 8038ebe: 430a orrs r2, r1 - 8038ec0: 655a str r2, [r3, #84] ; 0x54 + 8038ec0: 61da str r2, [r3, #28] break; - 8038ec2: e023 b.n 8038f0c + 8038ec2: e043 b.n 8038f4c { /* Check the parameters */ - assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + assert_param(IS_TIM_CC5_INSTANCE(htim->Instance)); - /* Configure the Channel 6 in PWM mode */ - TIM_OC6_SetConfig(htim->Instance, sConfig); + /* Configure the Channel 5 in PWM mode */ + TIM_OC5_SetConfig(htim->Instance, sConfig); 8038ec4: 68fb ldr r3, [r7, #12] 8038ec6: 681b ldr r3, [r3, #0] 8038ec8: 68b9 ldr r1, [r7, #8] 8038eca: 4618 mov r0, r3 - 8038ecc: f000 fc52 bl 8039774 + 8038ecc: f000 fc0e bl 80396ec - /* Set the Preload enable bit for channel6 */ - htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; + /* Set the Preload enable bit for channel5*/ + htim->Instance->CCMR3 |= TIM_CCMR3_OC5PE; 8038ed0: 68fb ldr r3, [r7, #12] 8038ed2: 681b ldr r3, [r3, #0] 8038ed4: 6d5a ldr r2, [r3, #84] ; 0x54 8038ed6: 68fb ldr r3, [r7, #12] 8038ed8: 681b ldr r3, [r3, #0] - 8038eda: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038eda: f042 0208 orr.w r2, r2, #8 8038ede: 655a str r2, [r3, #84] ; 0x54 /* Configure the Output Fast mode */ - htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE; 8038ee0: 68fb ldr r3, [r7, #12] 8038ee2: 681b ldr r3, [r3, #0] 8038ee4: 6d5a ldr r2, [r3, #84] ; 0x54 8038ee6: 68fb ldr r3, [r7, #12] 8038ee8: 681b ldr r3, [r3, #0] - 8038eea: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038eea: f022 0204 bic.w r2, r2, #4 8038eee: 655a str r2, [r3, #84] ; 0x54 - htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + htim->Instance->CCMR3 |= sConfig->OCFastMode; 8038ef0: 68fb ldr r3, [r7, #12] 8038ef2: 681b ldr r3, [r3, #0] 8038ef4: 6d59 ldr r1, [r3, #84] ; 0x54 8038ef6: 68bb ldr r3, [r7, #8] - 8038ef8: 691b ldr r3, [r3, #16] - 8038efa: 021a lsls r2, r3, #8 - 8038efc: 68fb ldr r3, [r7, #12] - 8038efe: 681b ldr r3, [r3, #0] - 8038f00: 430a orrs r2, r1 - 8038f02: 655a str r2, [r3, #84] ; 0x54 + 8038ef8: 691a ldr r2, [r3, #16] + 8038efa: 68fb ldr r3, [r7, #12] + 8038efc: 681b ldr r3, [r3, #0] + 8038efe: 430a orrs r2, r1 + 8038f00: 655a str r2, [r3, #84] ; 0x54 break; - 8038f04: e002 b.n 8038f0c + 8038f02: e023 b.n 8038f4c + { + /* Check the parameters */ + assert_param(IS_TIM_CC6_INSTANCE(htim->Instance)); + + /* Configure the Channel 6 in PWM mode */ + TIM_OC6_SetConfig(htim->Instance, sConfig); + 8038f04: 68fb ldr r3, [r7, #12] + 8038f06: 681b ldr r3, [r3, #0] + 8038f08: 68b9 ldr r1, [r7, #8] + 8038f0a: 4618 mov r0, r3 + 8038f0c: f000 fc52 bl 80397b4 + + /* Set the Preload enable bit for channel6 */ + htim->Instance->CCMR3 |= TIM_CCMR3_OC6PE; + 8038f10: 68fb ldr r3, [r7, #12] + 8038f12: 681b ldr r3, [r3, #0] + 8038f14: 6d5a ldr r2, [r3, #84] ; 0x54 + 8038f16: 68fb ldr r3, [r7, #12] + 8038f18: 681b ldr r3, [r3, #0] + 8038f1a: f442 6200 orr.w r2, r2, #2048 ; 0x800 + 8038f1e: 655a str r2, [r3, #84] ; 0x54 + + /* Configure the Output Fast mode */ + htim->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE; + 8038f20: 68fb ldr r3, [r7, #12] + 8038f22: 681b ldr r3, [r3, #0] + 8038f24: 6d5a ldr r2, [r3, #84] ; 0x54 + 8038f26: 68fb ldr r3, [r7, #12] + 8038f28: 681b ldr r3, [r3, #0] + 8038f2a: f422 6280 bic.w r2, r2, #1024 ; 0x400 + 8038f2e: 655a str r2, [r3, #84] ; 0x54 + htim->Instance->CCMR3 |= sConfig->OCFastMode << 8U; + 8038f30: 68fb ldr r3, [r7, #12] + 8038f32: 681b ldr r3, [r3, #0] + 8038f34: 6d59 ldr r1, [r3, #84] ; 0x54 + 8038f36: 68bb ldr r3, [r7, #8] + 8038f38: 691b ldr r3, [r3, #16] + 8038f3a: 021a lsls r2, r3, #8 + 8038f3c: 68fb ldr r3, [r7, #12] + 8038f3e: 681b ldr r3, [r3, #0] + 8038f40: 430a orrs r2, r1 + 8038f42: 655a str r2, [r3, #84] ; 0x54 + break; + 8038f44: e002 b.n 8038f4c } default: status = HAL_ERROR; - 8038f06: 2301 movs r3, #1 - 8038f08: 75fb strb r3, [r7, #23] + 8038f46: 2301 movs r3, #1 + 8038f48: 75fb strb r3, [r7, #23] break; - 8038f0a: bf00 nop + 8038f4a: bf00 nop } __HAL_UNLOCK(htim); - 8038f0c: 68fb ldr r3, [r7, #12] - 8038f0e: 2200 movs r2, #0 - 8038f10: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8038f4c: 68fb ldr r3, [r7, #12] + 8038f4e: 2200 movs r2, #0 + 8038f50: f883 203c strb.w r2, [r3, #60] ; 0x3c return status; - 8038f14: 7dfb ldrb r3, [r7, #23] + 8038f54: 7dfb ldrb r3, [r7, #23] } - 8038f16: 4618 mov r0, r3 - 8038f18: 3718 adds r7, #24 - 8038f1a: 46bd mov sp, r7 - 8038f1c: bd80 pop {r7, pc} - 8038f1e: bf00 nop + 8038f56: 4618 mov r0, r3 + 8038f58: 3718 adds r7, #24 + 8038f5a: 46bd mov sp, r7 + 8038f5c: bd80 pop {r7, pc} + 8038f5e: bf00 nop -08038f20 : +08038f60 : * @param sClockSourceConfig pointer to a TIM_ClockConfigTypeDef structure that * contains the clock source information for the TIM peripheral. * @retval HAL status */ HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig) { - 8038f20: b580 push {r7, lr} - 8038f22: b084 sub sp, #16 - 8038f24: af00 add r7, sp, #0 - 8038f26: 6078 str r0, [r7, #4] - 8038f28: 6039 str r1, [r7, #0] + 8038f60: b580 push {r7, lr} + 8038f62: b084 sub sp, #16 + 8038f64: af00 add r7, sp, #0 + 8038f66: 6078 str r0, [r7, #4] + 8038f68: 6039 str r1, [r7, #0] HAL_StatusTypeDef status = HAL_OK; - 8038f2a: 2300 movs r3, #0 - 8038f2c: 73fb strb r3, [r7, #15] + 8038f6a: 2300 movs r3, #0 + 8038f6c: 73fb strb r3, [r7, #15] uint32_t tmpsmcr; /* Process Locked */ __HAL_LOCK(htim); - 8038f2e: 687b ldr r3, [r7, #4] - 8038f30: f893 303c ldrb.w r3, [r3, #60] ; 0x3c - 8038f34: 2b01 cmp r3, #1 - 8038f36: d101 bne.n 8038f3c - 8038f38: 2302 movs r3, #2 - 8038f3a: e0dc b.n 80390f6 - 8038f3c: 687b ldr r3, [r7, #4] - 8038f3e: 2201 movs r2, #1 - 8038f40: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8038f6e: 687b ldr r3, [r7, #4] + 8038f70: f893 303c ldrb.w r3, [r3, #60] ; 0x3c + 8038f74: 2b01 cmp r3, #1 + 8038f76: d101 bne.n 8038f7c + 8038f78: 2302 movs r3, #2 + 8038f7a: e0dc b.n 8039136 + 8038f7c: 687b ldr r3, [r7, #4] + 8038f7e: 2201 movs r2, #1 + 8038f80: f883 203c strb.w r2, [r3, #60] ; 0x3c htim->State = HAL_TIM_STATE_BUSY; - 8038f44: 687b ldr r3, [r7, #4] - 8038f46: 2202 movs r2, #2 - 8038f48: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8038f84: 687b ldr r3, [r7, #4] + 8038f86: 2202 movs r2, #2 + 8038f88: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Check the parameters */ assert_param(IS_TIM_CLOCKSOURCE(sClockSourceConfig->ClockSource)); /* Reset the SMS, TS, ECE, ETPS and ETRF bits */ tmpsmcr = htim->Instance->SMCR; - 8038f4c: 687b ldr r3, [r7, #4] - 8038f4e: 681b ldr r3, [r3, #0] - 8038f50: 689b ldr r3, [r3, #8] - 8038f52: 60bb str r3, [r7, #8] + 8038f8c: 687b ldr r3, [r7, #4] + 8038f8e: 681b ldr r3, [r3, #0] + 8038f90: 689b ldr r3, [r3, #8] + 8038f92: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_SMS | TIM_SMCR_TS); - 8038f54: 68ba ldr r2, [r7, #8] - 8038f56: 4b6a ldr r3, [pc, #424] ; (8039100 ) - 8038f58: 4013 ands r3, r2 - 8038f5a: 60bb str r3, [r7, #8] + 8038f94: 68ba ldr r2, [r7, #8] + 8038f96: 4b6a ldr r3, [pc, #424] ; (8039140 ) + 8038f98: 4013 ands r3, r2 + 8038f9a: 60bb str r3, [r7, #8] tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8038f5c: 68bb ldr r3, [r7, #8] - 8038f5e: f423 437f bic.w r3, r3, #65280 ; 0xff00 - 8038f62: 60bb str r3, [r7, #8] + 8038f9c: 68bb ldr r3, [r7, #8] + 8038f9e: f423 437f bic.w r3, r3, #65280 ; 0xff00 + 8038fa2: 60bb str r3, [r7, #8] htim->Instance->SMCR = tmpsmcr; - 8038f64: 687b ldr r3, [r7, #4] - 8038f66: 681b ldr r3, [r3, #0] - 8038f68: 68ba ldr r2, [r7, #8] - 8038f6a: 609a str r2, [r3, #8] + 8038fa4: 687b ldr r3, [r7, #4] + 8038fa6: 681b ldr r3, [r3, #0] + 8038fa8: 68ba ldr r2, [r7, #8] + 8038faa: 609a str r2, [r3, #8] switch (sClockSourceConfig->ClockSource) - 8038f6c: 683b ldr r3, [r7, #0] - 8038f6e: 681b ldr r3, [r3, #0] - 8038f70: 4a64 ldr r2, [pc, #400] ; (8039104 ) - 8038f72: 4293 cmp r3, r2 - 8038f74: f000 80a9 beq.w 80390ca - 8038f78: 4a62 ldr r2, [pc, #392] ; (8039104 ) - 8038f7a: 4293 cmp r3, r2 - 8038f7c: f200 80ae bhi.w 80390dc - 8038f80: 4a61 ldr r2, [pc, #388] ; (8039108 ) - 8038f82: 4293 cmp r3, r2 - 8038f84: f000 80a1 beq.w 80390ca - 8038f88: 4a5f ldr r2, [pc, #380] ; (8039108 ) - 8038f8a: 4293 cmp r3, r2 - 8038f8c: f200 80a6 bhi.w 80390dc - 8038f90: 4a5e ldr r2, [pc, #376] ; (803910c ) - 8038f92: 4293 cmp r3, r2 - 8038f94: f000 8099 beq.w 80390ca - 8038f98: 4a5c ldr r2, [pc, #368] ; (803910c ) - 8038f9a: 4293 cmp r3, r2 - 8038f9c: f200 809e bhi.w 80390dc - 8038fa0: f1b3 1f10 cmp.w r3, #1048592 ; 0x100010 - 8038fa4: f000 8091 beq.w 80390ca - 8038fa8: f1b3 1f10 cmp.w r3, #1048592 ; 0x100010 - 8038fac: f200 8096 bhi.w 80390dc - 8038fb0: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 8038fb4: f000 8089 beq.w 80390ca - 8038fb8: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 8038fbc: f200 808e bhi.w 80390dc - 8038fc0: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8038fc4: d03e beq.n 8039044 - 8038fc6: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 - 8038fca: f200 8087 bhi.w 80390dc - 8038fce: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8038fd2: f000 8086 beq.w 80390e2 - 8038fd6: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8038fda: d87f bhi.n 80390dc - 8038fdc: 2b70 cmp r3, #112 ; 0x70 - 8038fde: d01a beq.n 8039016 - 8038fe0: 2b70 cmp r3, #112 ; 0x70 - 8038fe2: d87b bhi.n 80390dc - 8038fe4: 2b60 cmp r3, #96 ; 0x60 - 8038fe6: d050 beq.n 803908a - 8038fe8: 2b60 cmp r3, #96 ; 0x60 - 8038fea: d877 bhi.n 80390dc - 8038fec: 2b50 cmp r3, #80 ; 0x50 - 8038fee: d03c beq.n 803906a - 8038ff0: 2b50 cmp r3, #80 ; 0x50 - 8038ff2: d873 bhi.n 80390dc - 8038ff4: 2b40 cmp r3, #64 ; 0x40 - 8038ff6: d058 beq.n 80390aa - 8038ff8: 2b40 cmp r3, #64 ; 0x40 - 8038ffa: d86f bhi.n 80390dc - 8038ffc: 2b30 cmp r3, #48 ; 0x30 - 8038ffe: d064 beq.n 80390ca - 8039000: 2b30 cmp r3, #48 ; 0x30 - 8039002: d86b bhi.n 80390dc - 8039004: 2b20 cmp r3, #32 - 8039006: d060 beq.n 80390ca - 8039008: 2b20 cmp r3, #32 - 803900a: d867 bhi.n 80390dc - 803900c: 2b00 cmp r3, #0 - 803900e: d05c beq.n 80390ca - 8039010: 2b10 cmp r3, #16 - 8039012: d05a beq.n 80390ca - 8039014: e062 b.n 80390dc + 8038fac: 683b ldr r3, [r7, #0] + 8038fae: 681b ldr r3, [r3, #0] + 8038fb0: 4a64 ldr r2, [pc, #400] ; (8039144 ) + 8038fb2: 4293 cmp r3, r2 + 8038fb4: f000 80a9 beq.w 803910a + 8038fb8: 4a62 ldr r2, [pc, #392] ; (8039144 ) + 8038fba: 4293 cmp r3, r2 + 8038fbc: f200 80ae bhi.w 803911c + 8038fc0: 4a61 ldr r2, [pc, #388] ; (8039148 ) + 8038fc2: 4293 cmp r3, r2 + 8038fc4: f000 80a1 beq.w 803910a + 8038fc8: 4a5f ldr r2, [pc, #380] ; (8039148 ) + 8038fca: 4293 cmp r3, r2 + 8038fcc: f200 80a6 bhi.w 803911c + 8038fd0: 4a5e ldr r2, [pc, #376] ; (803914c ) + 8038fd2: 4293 cmp r3, r2 + 8038fd4: f000 8099 beq.w 803910a + 8038fd8: 4a5c ldr r2, [pc, #368] ; (803914c ) + 8038fda: 4293 cmp r3, r2 + 8038fdc: f200 809e bhi.w 803911c + 8038fe0: f1b3 1f10 cmp.w r3, #1048592 ; 0x100010 + 8038fe4: f000 8091 beq.w 803910a + 8038fe8: f1b3 1f10 cmp.w r3, #1048592 ; 0x100010 + 8038fec: f200 8096 bhi.w 803911c + 8038ff0: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 8038ff4: f000 8089 beq.w 803910a + 8038ff8: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 8038ffc: f200 808e bhi.w 803911c + 8039000: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 8039004: d03e beq.n 8039084 + 8039006: f5b3 5f00 cmp.w r3, #8192 ; 0x2000 + 803900a: f200 8087 bhi.w 803911c + 803900e: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8039012: f000 8086 beq.w 8039122 + 8039016: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 803901a: d87f bhi.n 803911c + 803901c: 2b70 cmp r3, #112 ; 0x70 + 803901e: d01a beq.n 8039056 + 8039020: 2b70 cmp r3, #112 ; 0x70 + 8039022: d87b bhi.n 803911c + 8039024: 2b60 cmp r3, #96 ; 0x60 + 8039026: d050 beq.n 80390ca + 8039028: 2b60 cmp r3, #96 ; 0x60 + 803902a: d877 bhi.n 803911c + 803902c: 2b50 cmp r3, #80 ; 0x50 + 803902e: d03c beq.n 80390aa + 8039030: 2b50 cmp r3, #80 ; 0x50 + 8039032: d873 bhi.n 803911c + 8039034: 2b40 cmp r3, #64 ; 0x40 + 8039036: d058 beq.n 80390ea + 8039038: 2b40 cmp r3, #64 ; 0x40 + 803903a: d86f bhi.n 803911c + 803903c: 2b30 cmp r3, #48 ; 0x30 + 803903e: d064 beq.n 803910a + 8039040: 2b30 cmp r3, #48 ; 0x30 + 8039042: d86b bhi.n 803911c + 8039044: 2b20 cmp r3, #32 + 8039046: d060 beq.n 803910a + 8039048: 2b20 cmp r3, #32 + 803904a: d867 bhi.n 803911c + 803904c: 2b00 cmp r3, #0 + 803904e: d05c beq.n 803910a + 8039050: 2b10 cmp r3, #16 + 8039052: d05a beq.n 803910a + 8039054: e062 b.n 803911c assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8039016: 687b ldr r3, [r7, #4] - 8039018: 6818 ldr r0, [r3, #0] - 803901a: 683b ldr r3, [r7, #0] - 803901c: 6899 ldr r1, [r3, #8] - 803901e: 683b ldr r3, [r7, #0] - 8039020: 685a ldr r2, [r3, #4] - 8039022: 683b ldr r3, [r7, #0] - 8039024: 68db ldr r3, [r3, #12] - 8039026: f000 fc89 bl 803993c + 8039056: 687b ldr r3, [r7, #4] + 8039058: 6818 ldr r0, [r3, #0] + 803905a: 683b ldr r3, [r7, #0] + 803905c: 6899 ldr r1, [r3, #8] + 803905e: 683b ldr r3, [r7, #0] + 8039060: 685a ldr r2, [r3, #4] + 8039062: 683b ldr r3, [r7, #0] + 8039064: 68db ldr r3, [r3, #12] + 8039066: f000 fc89 bl 803997c sClockSourceConfig->ClockPrescaler, sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); /* Select the External clock mode1 and the ETRF trigger */ tmpsmcr = htim->Instance->SMCR; - 803902a: 687b ldr r3, [r7, #4] - 803902c: 681b ldr r3, [r3, #0] - 803902e: 689b ldr r3, [r3, #8] - 8039030: 60bb str r3, [r7, #8] + 803906a: 687b ldr r3, [r7, #4] + 803906c: 681b ldr r3, [r3, #0] + 803906e: 689b ldr r3, [r3, #8] + 8039070: 60bb str r3, [r7, #8] tmpsmcr |= (TIM_SLAVEMODE_EXTERNAL1 | TIM_CLOCKSOURCE_ETRMODE1); - 8039032: 68bb ldr r3, [r7, #8] - 8039034: f043 0377 orr.w r3, r3, #119 ; 0x77 - 8039038: 60bb str r3, [r7, #8] + 8039072: 68bb ldr r3, [r7, #8] + 8039074: f043 0377 orr.w r3, r3, #119 ; 0x77 + 8039078: 60bb str r3, [r7, #8] /* Write to TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 803903a: 687b ldr r3, [r7, #4] - 803903c: 681b ldr r3, [r3, #0] - 803903e: 68ba ldr r2, [r7, #8] - 8039040: 609a str r2, [r3, #8] + 803907a: 687b ldr r3, [r7, #4] + 803907c: 681b ldr r3, [r3, #0] + 803907e: 68ba ldr r2, [r7, #8] + 8039080: 609a str r2, [r3, #8] break; - 8039042: e04f b.n 80390e4 + 8039082: e04f b.n 8039124 assert_param(IS_TIM_CLOCKPRESCALER(sClockSourceConfig->ClockPrescaler)); assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); /* Configure the ETR Clock source */ TIM_ETR_SetConfig(htim->Instance, - 8039044: 687b ldr r3, [r7, #4] - 8039046: 6818 ldr r0, [r3, #0] - 8039048: 683b ldr r3, [r7, #0] - 803904a: 6899 ldr r1, [r3, #8] - 803904c: 683b ldr r3, [r7, #0] - 803904e: 685a ldr r2, [r3, #4] - 8039050: 683b ldr r3, [r7, #0] - 8039052: 68db ldr r3, [r3, #12] - 8039054: f000 fc72 bl 803993c + 8039084: 687b ldr r3, [r7, #4] + 8039086: 6818 ldr r0, [r3, #0] + 8039088: 683b ldr r3, [r7, #0] + 803908a: 6899 ldr r1, [r3, #8] + 803908c: 683b ldr r3, [r7, #0] + 803908e: 685a ldr r2, [r3, #4] + 8039090: 683b ldr r3, [r7, #0] + 8039092: 68db ldr r3, [r3, #12] + 8039094: f000 fc72 bl 803997c sClockSourceConfig->ClockPrescaler, sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); /* Enable the External clock mode2 */ htim->Instance->SMCR |= TIM_SMCR_ECE; - 8039058: 687b ldr r3, [r7, #4] - 803905a: 681b ldr r3, [r3, #0] - 803905c: 689a ldr r2, [r3, #8] - 803905e: 687b ldr r3, [r7, #4] - 8039060: 681b ldr r3, [r3, #0] - 8039062: f442 4280 orr.w r2, r2, #16384 ; 0x4000 - 8039066: 609a str r2, [r3, #8] + 8039098: 687b ldr r3, [r7, #4] + 803909a: 681b ldr r3, [r3, #0] + 803909c: 689a ldr r2, [r3, #8] + 803909e: 687b ldr r3, [r7, #4] + 80390a0: 681b ldr r3, [r3, #0] + 80390a2: f442 4280 orr.w r2, r2, #16384 ; 0x4000 + 80390a6: 609a str r2, [r3, #8] break; - 8039068: e03c b.n 80390e4 + 80390a8: e03c b.n 8039124 /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 803906a: 687b ldr r3, [r7, #4] - 803906c: 6818 ldr r0, [r3, #0] - 803906e: 683b ldr r3, [r7, #0] - 8039070: 6859 ldr r1, [r3, #4] - 8039072: 683b ldr r3, [r7, #0] - 8039074: 68db ldr r3, [r3, #12] - 8039076: 461a mov r2, r3 - 8039078: f000 fbe2 bl 8039840 + 80390aa: 687b ldr r3, [r7, #4] + 80390ac: 6818 ldr r0, [r3, #0] + 80390ae: 683b ldr r3, [r7, #0] + 80390b0: 6859 ldr r1, [r3, #4] + 80390b2: 683b ldr r3, [r7, #0] + 80390b4: 68db ldr r3, [r3, #12] + 80390b6: 461a mov r2, r3 + 80390b8: f000 fbe2 bl 8039880 sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1); - 803907c: 687b ldr r3, [r7, #4] - 803907e: 681b ldr r3, [r3, #0] - 8039080: 2150 movs r1, #80 ; 0x50 - 8039082: 4618 mov r0, r3 - 8039084: f000 fc3c bl 8039900 + 80390bc: 687b ldr r3, [r7, #4] + 80390be: 681b ldr r3, [r3, #0] + 80390c0: 2150 movs r1, #80 ; 0x50 + 80390c2: 4618 mov r0, r3 + 80390c4: f000 fc3c bl 8039940 break; - 8039088: e02c b.n 80390e4 + 80390c8: e02c b.n 8039124 /* Check TI2 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI2_ConfigInputStage(htim->Instance, - 803908a: 687b ldr r3, [r7, #4] - 803908c: 6818 ldr r0, [r3, #0] - 803908e: 683b ldr r3, [r7, #0] - 8039090: 6859 ldr r1, [r3, #4] - 8039092: 683b ldr r3, [r7, #0] - 8039094: 68db ldr r3, [r3, #12] - 8039096: 461a mov r2, r3 - 8039098: f000 fc01 bl 803989e + 80390ca: 687b ldr r3, [r7, #4] + 80390cc: 6818 ldr r0, [r3, #0] + 80390ce: 683b ldr r3, [r7, #0] + 80390d0: 6859 ldr r1, [r3, #4] + 80390d2: 683b ldr r3, [r7, #0] + 80390d4: 68db ldr r3, [r3, #12] + 80390d6: 461a mov r2, r3 + 80390d8: f000 fc01 bl 80398de sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI2); - 803909c: 687b ldr r3, [r7, #4] - 803909e: 681b ldr r3, [r3, #0] - 80390a0: 2160 movs r1, #96 ; 0x60 - 80390a2: 4618 mov r0, r3 - 80390a4: f000 fc2c bl 8039900 + 80390dc: 687b ldr r3, [r7, #4] + 80390de: 681b ldr r3, [r3, #0] + 80390e0: 2160 movs r1, #96 ; 0x60 + 80390e2: 4618 mov r0, r3 + 80390e4: f000 fc2c bl 8039940 break; - 80390a8: e01c b.n 80390e4 + 80390e8: e01c b.n 8039124 /* Check TI1 input conditioning related parameters */ assert_param(IS_TIM_CLOCKPOLARITY(sClockSourceConfig->ClockPolarity)); assert_param(IS_TIM_CLOCKFILTER(sClockSourceConfig->ClockFilter)); TIM_TI1_ConfigInputStage(htim->Instance, - 80390aa: 687b ldr r3, [r7, #4] - 80390ac: 6818 ldr r0, [r3, #0] - 80390ae: 683b ldr r3, [r7, #0] - 80390b0: 6859 ldr r1, [r3, #4] - 80390b2: 683b ldr r3, [r7, #0] - 80390b4: 68db ldr r3, [r3, #12] - 80390b6: 461a mov r2, r3 - 80390b8: f000 fbc2 bl 8039840 + 80390ea: 687b ldr r3, [r7, #4] + 80390ec: 6818 ldr r0, [r3, #0] + 80390ee: 683b ldr r3, [r7, #0] + 80390f0: 6859 ldr r1, [r3, #4] + 80390f2: 683b ldr r3, [r7, #0] + 80390f4: 68db ldr r3, [r3, #12] + 80390f6: 461a mov r2, r3 + 80390f8: f000 fbc2 bl 8039880 sClockSourceConfig->ClockPolarity, sClockSourceConfig->ClockFilter); TIM_ITRx_SetConfig(htim->Instance, TIM_CLOCKSOURCE_TI1ED); - 80390bc: 687b ldr r3, [r7, #4] - 80390be: 681b ldr r3, [r3, #0] - 80390c0: 2140 movs r1, #64 ; 0x40 - 80390c2: 4618 mov r0, r3 - 80390c4: f000 fc1c bl 8039900 + 80390fc: 687b ldr r3, [r7, #4] + 80390fe: 681b ldr r3, [r3, #0] + 8039100: 2140 movs r1, #64 ; 0x40 + 8039102: 4618 mov r0, r3 + 8039104: f000 fc1c bl 8039940 break; - 80390c8: e00c b.n 80390e4 + 8039108: e00c b.n 8039124 case TIM_CLOCKSOURCE_ITR8: { /* Check whether or not the timer instance supports internal trigger input */ assert_param(IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(htim->Instance)); TIM_ITRx_SetConfig(htim->Instance, sClockSourceConfig->ClockSource); - 80390ca: 687b ldr r3, [r7, #4] - 80390cc: 681a ldr r2, [r3, #0] - 80390ce: 683b ldr r3, [r7, #0] - 80390d0: 681b ldr r3, [r3, #0] - 80390d2: 4619 mov r1, r3 - 80390d4: 4610 mov r0, r2 - 80390d6: f000 fc13 bl 8039900 + 803910a: 687b ldr r3, [r7, #4] + 803910c: 681a ldr r2, [r3, #0] + 803910e: 683b ldr r3, [r7, #0] + 8039110: 681b ldr r3, [r3, #0] + 8039112: 4619 mov r1, r3 + 8039114: 4610 mov r0, r2 + 8039116: f000 fc13 bl 8039940 break; - 80390da: e003 b.n 80390e4 + 803911a: e003 b.n 8039124 } default: status = HAL_ERROR; - 80390dc: 2301 movs r3, #1 - 80390de: 73fb strb r3, [r7, #15] + 803911c: 2301 movs r3, #1 + 803911e: 73fb strb r3, [r7, #15] break; - 80390e0: e000 b.n 80390e4 + 8039120: e000 b.n 8039124 break; - 80390e2: bf00 nop + 8039122: bf00 nop } htim->State = HAL_TIM_STATE_READY; - 80390e4: 687b ldr r3, [r7, #4] - 80390e6: 2201 movs r2, #1 - 80390e8: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8039124: 687b ldr r3, [r7, #4] + 8039126: 2201 movs r2, #1 + 8039128: f883 203d strb.w r2, [r3, #61] ; 0x3d __HAL_UNLOCK(htim); - 80390ec: 687b ldr r3, [r7, #4] - 80390ee: 2200 movs r2, #0 - 80390f0: f883 203c strb.w r2, [r3, #60] ; 0x3c + 803912c: 687b ldr r3, [r7, #4] + 803912e: 2200 movs r2, #0 + 8039130: f883 203c strb.w r2, [r3, #60] ; 0x3c return status; - 80390f4: 7bfb ldrb r3, [r7, #15] -} - 80390f6: 4618 mov r0, r3 - 80390f8: 3710 adds r7, #16 - 80390fa: 46bd mov sp, r7 - 80390fc: bd80 pop {r7, pc} - 80390fe: bf00 nop - 8039100: ffceff88 .word 0xffceff88 - 8039104: 00100040 .word 0x00100040 - 8039108: 00100030 .word 0x00100030 - 803910c: 00100020 .word 0x00100020 - -08039110 : + 8039134: 7bfb ldrb r3, [r7, #15] +} + 8039136: 4618 mov r0, r3 + 8039138: 3710 adds r7, #16 + 803913a: 46bd mov sp, r7 + 803913c: bd80 pop {r7, pc} + 803913e: bf00 nop + 8039140: ffceff88 .word 0xffceff88 + 8039144: 00100040 .word 0x00100040 + 8039148: 00100030 .word 0x00100030 + 803914c: 00100020 .word 0x00100020 + +08039150 : * @brief Output Compare callback in non-blocking mode * @param htim TIM OC handle * @retval None */ __weak void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim) { - 8039110: b480 push {r7} - 8039112: b083 sub sp, #12 - 8039114: af00 add r7, sp, #0 - 8039116: 6078 str r0, [r7, #4] + 8039150: b480 push {r7} + 8039152: b083 sub sp, #12 + 8039154: af00 add r7, sp, #0 + 8039156: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_OC_DelayElapsedCallback could be implemented in the user file */ } - 8039118: bf00 nop - 803911a: 370c adds r7, #12 - 803911c: 46bd mov sp, r7 - 803911e: f85d 7b04 ldr.w r7, [sp], #4 - 8039122: 4770 bx lr + 8039158: bf00 nop + 803915a: 370c adds r7, #12 + 803915c: 46bd mov sp, r7 + 803915e: f85d 7b04 ldr.w r7, [sp], #4 + 8039162: 4770 bx lr -08039124 : +08039164 : * @brief Input Capture callback in non-blocking mode * @param htim TIM IC handle * @retval None */ __weak void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { - 8039124: b480 push {r7} - 8039126: b083 sub sp, #12 - 8039128: af00 add r7, sp, #0 - 803912a: 6078 str r0, [r7, #4] + 8039164: b480 push {r7} + 8039166: b083 sub sp, #12 + 8039168: af00 add r7, sp, #0 + 803916a: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_IC_CaptureCallback could be implemented in the user file */ } - 803912c: bf00 nop - 803912e: 370c adds r7, #12 - 8039130: 46bd mov sp, r7 - 8039132: f85d 7b04 ldr.w r7, [sp], #4 - 8039136: 4770 bx lr + 803916c: bf00 nop + 803916e: 370c adds r7, #12 + 8039170: 46bd mov sp, r7 + 8039172: f85d 7b04 ldr.w r7, [sp], #4 + 8039176: 4770 bx lr -08039138 : +08039178 : * @brief PWM Pulse finished callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) { - 8039138: b480 push {r7} - 803913a: b083 sub sp, #12 - 803913c: af00 add r7, sp, #0 - 803913e: 6078 str r0, [r7, #4] + 8039178: b480 push {r7} + 803917a: b083 sub sp, #12 + 803917c: af00 add r7, sp, #0 + 803917e: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_PWM_PulseFinishedCallback could be implemented in the user file */ } - 8039140: bf00 nop - 8039142: 370c adds r7, #12 - 8039144: 46bd mov sp, r7 - 8039146: f85d 7b04 ldr.w r7, [sp], #4 - 803914a: 4770 bx lr + 8039180: bf00 nop + 8039182: 370c adds r7, #12 + 8039184: 46bd mov sp, r7 + 8039186: f85d 7b04 ldr.w r7, [sp], #4 + 803918a: 4770 bx lr -0803914c : +0803918c : * @brief Hall Trigger detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim) { - 803914c: b480 push {r7} - 803914e: b083 sub sp, #12 - 8039150: af00 add r7, sp, #0 - 8039152: 6078 str r0, [r7, #4] + 803918c: b480 push {r7} + 803918e: b083 sub sp, #12 + 8039190: af00 add r7, sp, #0 + 8039192: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIM_TriggerCallback could be implemented in the user file */ } - 8039154: bf00 nop - 8039156: 370c adds r7, #12 - 8039158: 46bd mov sp, r7 - 803915a: f85d 7b04 ldr.w r7, [sp], #4 - 803915e: 4770 bx lr + 8039194: bf00 nop + 8039196: 370c adds r7, #12 + 8039198: 46bd mov sp, r7 + 803919a: f85d 7b04 ldr.w r7, [sp], #4 + 803919e: 4770 bx lr -08039160 : +080391a0 : * @param TIMx TIM peripheral * @param Structure TIM Base configuration structure * @retval None */ void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure) { - 8039160: b480 push {r7} - 8039162: b085 sub sp, #20 - 8039164: af00 add r7, sp, #0 - 8039166: 6078 str r0, [r7, #4] - 8039168: 6039 str r1, [r7, #0] + 80391a0: b480 push {r7} + 80391a2: b085 sub sp, #20 + 80391a4: af00 add r7, sp, #0 + 80391a6: 6078 str r0, [r7, #4] + 80391a8: 6039 str r1, [r7, #0] uint32_t tmpcr1; tmpcr1 = TIMx->CR1; - 803916a: 687b ldr r3, [r7, #4] - 803916c: 681b ldr r3, [r3, #0] - 803916e: 60fb str r3, [r7, #12] + 80391aa: 687b ldr r3, [r7, #4] + 80391ac: 681b ldr r3, [r3, #0] + 80391ae: 60fb str r3, [r7, #12] /* Set TIM Time Base Unit parameters ---------------------------------------*/ if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) - 8039170: 687b ldr r3, [r7, #4] - 8039172: 4a40 ldr r2, [pc, #256] ; (8039274 ) - 8039174: 4293 cmp r3, r2 - 8039176: d013 beq.n 80391a0 - 8039178: 687b ldr r3, [r7, #4] - 803917a: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 803917e: d00f beq.n 80391a0 - 8039180: 687b ldr r3, [r7, #4] - 8039182: 4a3d ldr r2, [pc, #244] ; (8039278 ) - 8039184: 4293 cmp r3, r2 - 8039186: d00b beq.n 80391a0 - 8039188: 687b ldr r3, [r7, #4] - 803918a: 4a3c ldr r2, [pc, #240] ; (803927c ) - 803918c: 4293 cmp r3, r2 - 803918e: d007 beq.n 80391a0 - 8039190: 687b ldr r3, [r7, #4] - 8039192: 4a3b ldr r2, [pc, #236] ; (8039280 ) - 8039194: 4293 cmp r3, r2 - 8039196: d003 beq.n 80391a0 - 8039198: 687b ldr r3, [r7, #4] - 803919a: 4a3a ldr r2, [pc, #232] ; (8039284 ) - 803919c: 4293 cmp r3, r2 - 803919e: d108 bne.n 80391b2 + 80391b0: 687b ldr r3, [r7, #4] + 80391b2: 4a40 ldr r2, [pc, #256] ; (80392b4 ) + 80391b4: 4293 cmp r3, r2 + 80391b6: d013 beq.n 80391e0 + 80391b8: 687b ldr r3, [r7, #4] + 80391ba: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 80391be: d00f beq.n 80391e0 + 80391c0: 687b ldr r3, [r7, #4] + 80391c2: 4a3d ldr r2, [pc, #244] ; (80392b8 ) + 80391c4: 4293 cmp r3, r2 + 80391c6: d00b beq.n 80391e0 + 80391c8: 687b ldr r3, [r7, #4] + 80391ca: 4a3c ldr r2, [pc, #240] ; (80392bc ) + 80391cc: 4293 cmp r3, r2 + 80391ce: d007 beq.n 80391e0 + 80391d0: 687b ldr r3, [r7, #4] + 80391d2: 4a3b ldr r2, [pc, #236] ; (80392c0 ) + 80391d4: 4293 cmp r3, r2 + 80391d6: d003 beq.n 80391e0 + 80391d8: 687b ldr r3, [r7, #4] + 80391da: 4a3a ldr r2, [pc, #232] ; (80392c4 ) + 80391dc: 4293 cmp r3, r2 + 80391de: d108 bne.n 80391f2 { /* Select the Counter Mode */ tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS); - 80391a0: 68fb ldr r3, [r7, #12] - 80391a2: f023 0370 bic.w r3, r3, #112 ; 0x70 - 80391a6: 60fb str r3, [r7, #12] + 80391e0: 68fb ldr r3, [r7, #12] + 80391e2: f023 0370 bic.w r3, r3, #112 ; 0x70 + 80391e6: 60fb str r3, [r7, #12] tmpcr1 |= Structure->CounterMode; - 80391a8: 683b ldr r3, [r7, #0] - 80391aa: 685b ldr r3, [r3, #4] - 80391ac: 68fa ldr r2, [r7, #12] - 80391ae: 4313 orrs r3, r2 - 80391b0: 60fb str r3, [r7, #12] + 80391e8: 683b ldr r3, [r7, #0] + 80391ea: 685b ldr r3, [r3, #4] + 80391ec: 68fa ldr r2, [r7, #12] + 80391ee: 4313 orrs r3, r2 + 80391f0: 60fb str r3, [r7, #12] } if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) - 80391b2: 687b ldr r3, [r7, #4] - 80391b4: 4a2f ldr r2, [pc, #188] ; (8039274 ) - 80391b6: 4293 cmp r3, r2 - 80391b8: d01f beq.n 80391fa - 80391ba: 687b ldr r3, [r7, #4] - 80391bc: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 80391c0: d01b beq.n 80391fa - 80391c2: 687b ldr r3, [r7, #4] - 80391c4: 4a2c ldr r2, [pc, #176] ; (8039278 ) - 80391c6: 4293 cmp r3, r2 - 80391c8: d017 beq.n 80391fa - 80391ca: 687b ldr r3, [r7, #4] - 80391cc: 4a2b ldr r2, [pc, #172] ; (803927c ) - 80391ce: 4293 cmp r3, r2 - 80391d0: d013 beq.n 80391fa - 80391d2: 687b ldr r3, [r7, #4] - 80391d4: 4a2a ldr r2, [pc, #168] ; (8039280 ) - 80391d6: 4293 cmp r3, r2 - 80391d8: d00f beq.n 80391fa - 80391da: 687b ldr r3, [r7, #4] - 80391dc: 4a29 ldr r2, [pc, #164] ; (8039284 ) - 80391de: 4293 cmp r3, r2 - 80391e0: d00b beq.n 80391fa - 80391e2: 687b ldr r3, [r7, #4] - 80391e4: 4a28 ldr r2, [pc, #160] ; (8039288 ) - 80391e6: 4293 cmp r3, r2 - 80391e8: d007 beq.n 80391fa - 80391ea: 687b ldr r3, [r7, #4] - 80391ec: 4a27 ldr r2, [pc, #156] ; (803928c ) - 80391ee: 4293 cmp r3, r2 - 80391f0: d003 beq.n 80391fa 80391f2: 687b ldr r3, [r7, #4] - 80391f4: 4a26 ldr r2, [pc, #152] ; (8039290 ) + 80391f4: 4a2f ldr r2, [pc, #188] ; (80392b4 ) 80391f6: 4293 cmp r3, r2 - 80391f8: d108 bne.n 803920c + 80391f8: d01f beq.n 803923a + 80391fa: 687b ldr r3, [r7, #4] + 80391fc: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8039200: d01b beq.n 803923a + 8039202: 687b ldr r3, [r7, #4] + 8039204: 4a2c ldr r2, [pc, #176] ; (80392b8 ) + 8039206: 4293 cmp r3, r2 + 8039208: d017 beq.n 803923a + 803920a: 687b ldr r3, [r7, #4] + 803920c: 4a2b ldr r2, [pc, #172] ; (80392bc ) + 803920e: 4293 cmp r3, r2 + 8039210: d013 beq.n 803923a + 8039212: 687b ldr r3, [r7, #4] + 8039214: 4a2a ldr r2, [pc, #168] ; (80392c0 ) + 8039216: 4293 cmp r3, r2 + 8039218: d00f beq.n 803923a + 803921a: 687b ldr r3, [r7, #4] + 803921c: 4a29 ldr r2, [pc, #164] ; (80392c4 ) + 803921e: 4293 cmp r3, r2 + 8039220: d00b beq.n 803923a + 8039222: 687b ldr r3, [r7, #4] + 8039224: 4a28 ldr r2, [pc, #160] ; (80392c8 ) + 8039226: 4293 cmp r3, r2 + 8039228: d007 beq.n 803923a + 803922a: 687b ldr r3, [r7, #4] + 803922c: 4a27 ldr r2, [pc, #156] ; (80392cc ) + 803922e: 4293 cmp r3, r2 + 8039230: d003 beq.n 803923a + 8039232: 687b ldr r3, [r7, #4] + 8039234: 4a26 ldr r2, [pc, #152] ; (80392d0 ) + 8039236: 4293 cmp r3, r2 + 8039238: d108 bne.n 803924c { /* Set the clock division */ tmpcr1 &= ~TIM_CR1_CKD; - 80391fa: 68fb ldr r3, [r7, #12] - 80391fc: f423 7340 bic.w r3, r3, #768 ; 0x300 - 8039200: 60fb str r3, [r7, #12] + 803923a: 68fb ldr r3, [r7, #12] + 803923c: f423 7340 bic.w r3, r3, #768 ; 0x300 + 8039240: 60fb str r3, [r7, #12] tmpcr1 |= (uint32_t)Structure->ClockDivision; - 8039202: 683b ldr r3, [r7, #0] - 8039204: 68db ldr r3, [r3, #12] - 8039206: 68fa ldr r2, [r7, #12] - 8039208: 4313 orrs r3, r2 - 803920a: 60fb str r3, [r7, #12] + 8039242: 683b ldr r3, [r7, #0] + 8039244: 68db ldr r3, [r3, #12] + 8039246: 68fa ldr r2, [r7, #12] + 8039248: 4313 orrs r3, r2 + 803924a: 60fb str r3, [r7, #12] } /* Set the auto-reload preload */ MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload); - 803920c: 68fb ldr r3, [r7, #12] - 803920e: f023 0280 bic.w r2, r3, #128 ; 0x80 - 8039212: 683b ldr r3, [r7, #0] - 8039214: 695b ldr r3, [r3, #20] - 8039216: 4313 orrs r3, r2 - 8039218: 60fb str r3, [r7, #12] + 803924c: 68fb ldr r3, [r7, #12] + 803924e: f023 0280 bic.w r2, r3, #128 ; 0x80 + 8039252: 683b ldr r3, [r7, #0] + 8039254: 695b ldr r3, [r3, #20] + 8039256: 4313 orrs r3, r2 + 8039258: 60fb str r3, [r7, #12] TIMx->CR1 = tmpcr1; - 803921a: 687b ldr r3, [r7, #4] - 803921c: 68fa ldr r2, [r7, #12] - 803921e: 601a str r2, [r3, #0] + 803925a: 687b ldr r3, [r7, #4] + 803925c: 68fa ldr r2, [r7, #12] + 803925e: 601a str r2, [r3, #0] /* Set the Autoreload value */ TIMx->ARR = (uint32_t)Structure->Period ; - 8039220: 683b ldr r3, [r7, #0] - 8039222: 689a ldr r2, [r3, #8] - 8039224: 687b ldr r3, [r7, #4] - 8039226: 62da str r2, [r3, #44] ; 0x2c + 8039260: 683b ldr r3, [r7, #0] + 8039262: 689a ldr r2, [r3, #8] + 8039264: 687b ldr r3, [r7, #4] + 8039266: 62da str r2, [r3, #44] ; 0x2c /* Set the Prescaler value */ TIMx->PSC = Structure->Prescaler; - 8039228: 683b ldr r3, [r7, #0] - 803922a: 681a ldr r2, [r3, #0] - 803922c: 687b ldr r3, [r7, #4] - 803922e: 629a str r2, [r3, #40] ; 0x28 + 8039268: 683b ldr r3, [r7, #0] + 803926a: 681a ldr r2, [r3, #0] + 803926c: 687b ldr r3, [r7, #4] + 803926e: 629a str r2, [r3, #40] ; 0x28 if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) - 8039230: 687b ldr r3, [r7, #4] - 8039232: 4a10 ldr r2, [pc, #64] ; (8039274 ) - 8039234: 4293 cmp r3, r2 - 8039236: d00f beq.n 8039258 - 8039238: 687b ldr r3, [r7, #4] - 803923a: 4a12 ldr r2, [pc, #72] ; (8039284 ) - 803923c: 4293 cmp r3, r2 - 803923e: d00b beq.n 8039258 - 8039240: 687b ldr r3, [r7, #4] - 8039242: 4a11 ldr r2, [pc, #68] ; (8039288 ) - 8039244: 4293 cmp r3, r2 - 8039246: d007 beq.n 8039258 - 8039248: 687b ldr r3, [r7, #4] - 803924a: 4a10 ldr r2, [pc, #64] ; (803928c ) - 803924c: 4293 cmp r3, r2 - 803924e: d003 beq.n 8039258 - 8039250: 687b ldr r3, [r7, #4] - 8039252: 4a0f ldr r2, [pc, #60] ; (8039290 ) - 8039254: 4293 cmp r3, r2 - 8039256: d103 bne.n 8039260 + 8039270: 687b ldr r3, [r7, #4] + 8039272: 4a10 ldr r2, [pc, #64] ; (80392b4 ) + 8039274: 4293 cmp r3, r2 + 8039276: d00f beq.n 8039298 + 8039278: 687b ldr r3, [r7, #4] + 803927a: 4a12 ldr r2, [pc, #72] ; (80392c4 ) + 803927c: 4293 cmp r3, r2 + 803927e: d00b beq.n 8039298 + 8039280: 687b ldr r3, [r7, #4] + 8039282: 4a11 ldr r2, [pc, #68] ; (80392c8 ) + 8039284: 4293 cmp r3, r2 + 8039286: d007 beq.n 8039298 + 8039288: 687b ldr r3, [r7, #4] + 803928a: 4a10 ldr r2, [pc, #64] ; (80392cc ) + 803928c: 4293 cmp r3, r2 + 803928e: d003 beq.n 8039298 + 8039290: 687b ldr r3, [r7, #4] + 8039292: 4a0f ldr r2, [pc, #60] ; (80392d0 ) + 8039294: 4293 cmp r3, r2 + 8039296: d103 bne.n 80392a0 { /* Set the Repetition Counter value */ TIMx->RCR = Structure->RepetitionCounter; - 8039258: 683b ldr r3, [r7, #0] - 803925a: 691a ldr r2, [r3, #16] - 803925c: 687b ldr r3, [r7, #4] - 803925e: 631a str r2, [r3, #48] ; 0x30 + 8039298: 683b ldr r3, [r7, #0] + 803929a: 691a ldr r2, [r3, #16] + 803929c: 687b ldr r3, [r7, #4] + 803929e: 631a str r2, [r3, #48] ; 0x30 } /* Generate an update event to reload the Prescaler and the repetition counter (only for advanced timer) value immediately */ TIMx->EGR = TIM_EGR_UG; - 8039260: 687b ldr r3, [r7, #4] - 8039262: 2201 movs r2, #1 - 8039264: 615a str r2, [r3, #20] -} - 8039266: bf00 nop - 8039268: 3714 adds r7, #20 - 803926a: 46bd mov sp, r7 - 803926c: f85d 7b04 ldr.w r7, [sp], #4 - 8039270: 4770 bx lr - 8039272: bf00 nop - 8039274: 40010000 .word 0x40010000 - 8039278: 40000400 .word 0x40000400 - 803927c: 40000800 .word 0x40000800 - 8039280: 40000c00 .word 0x40000c00 - 8039284: 40010400 .word 0x40010400 - 8039288: 40014000 .word 0x40014000 - 803928c: 40014400 .word 0x40014400 - 8039290: 40014800 .word 0x40014800 - -08039294 : + 80392a0: 687b ldr r3, [r7, #4] + 80392a2: 2201 movs r2, #1 + 80392a4: 615a str r2, [r3, #20] +} + 80392a6: bf00 nop + 80392a8: 3714 adds r7, #20 + 80392aa: 46bd mov sp, r7 + 80392ac: f85d 7b04 ldr.w r7, [sp], #4 + 80392b0: 4770 bx lr + 80392b2: bf00 nop + 80392b4: 40010000 .word 0x40010000 + 80392b8: 40000400 .word 0x40000400 + 80392bc: 40000800 .word 0x40000800 + 80392c0: 40000c00 .word 0x40000c00 + 80392c4: 40010400 .word 0x40010400 + 80392c8: 40014000 .word 0x40014000 + 80392cc: 40014400 .word 0x40014400 + 80392d0: 40014800 .word 0x40014800 + +080392d4 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 8039294: b480 push {r7} - 8039296: b087 sub sp, #28 - 8039298: af00 add r7, sp, #0 - 803929a: 6078 str r0, [r7, #4] - 803929c: 6039 str r1, [r7, #0] + 80392d4: b480 push {r7} + 80392d6: b087 sub sp, #28 + 80392d8: af00 add r7, sp, #0 + 80392da: 6078 str r0, [r7, #4] + 80392dc: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 1: Reset the CC1E Bit */ TIMx->CCER &= ~TIM_CCER_CC1E; - 803929e: 687b ldr r3, [r7, #4] - 80392a0: 6a1b ldr r3, [r3, #32] - 80392a2: f023 0201 bic.w r2, r3, #1 - 80392a6: 687b ldr r3, [r7, #4] - 80392a8: 621a str r2, [r3, #32] + 80392de: 687b ldr r3, [r7, #4] + 80392e0: 6a1b ldr r3, [r3, #32] + 80392e2: f023 0201 bic.w r2, r3, #1 + 80392e6: 687b ldr r3, [r7, #4] + 80392e8: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80392aa: 687b ldr r3, [r7, #4] - 80392ac: 6a1b ldr r3, [r3, #32] - 80392ae: 617b str r3, [r7, #20] + 80392ea: 687b ldr r3, [r7, #4] + 80392ec: 6a1b ldr r3, [r3, #32] + 80392ee: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80392b0: 687b ldr r3, [r7, #4] - 80392b2: 685b ldr r3, [r3, #4] - 80392b4: 613b str r3, [r7, #16] + 80392f0: 687b ldr r3, [r7, #4] + 80392f2: 685b ldr r3, [r3, #4] + 80392f4: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 80392b6: 687b ldr r3, [r7, #4] - 80392b8: 699b ldr r3, [r3, #24] - 80392ba: 60fb str r3, [r7, #12] + 80392f6: 687b ldr r3, [r7, #4] + 80392f8: 699b ldr r3, [r3, #24] + 80392fa: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~TIM_CCMR1_OC1M; - 80392bc: 68fa ldr r2, [r7, #12] - 80392be: 4b37 ldr r3, [pc, #220] ; (803939c ) - 80392c0: 4013 ands r3, r2 - 80392c2: 60fb str r3, [r7, #12] + 80392fc: 68fa ldr r2, [r7, #12] + 80392fe: 4b37 ldr r3, [pc, #220] ; (80393dc ) + 8039300: 4013 ands r3, r2 + 8039302: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC1S; - 80392c4: 68fb ldr r3, [r7, #12] - 80392c6: f023 0303 bic.w r3, r3, #3 - 80392ca: 60fb str r3, [r7, #12] + 8039304: 68fb ldr r3, [r7, #12] + 8039306: f023 0303 bic.w r3, r3, #3 + 803930a: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 80392cc: 683b ldr r3, [r7, #0] - 80392ce: 681b ldr r3, [r3, #0] - 80392d0: 68fa ldr r2, [r7, #12] - 80392d2: 4313 orrs r3, r2 - 80392d4: 60fb str r3, [r7, #12] + 803930c: 683b ldr r3, [r7, #0] + 803930e: 681b ldr r3, [r3, #0] + 8039310: 68fa ldr r2, [r7, #12] + 8039312: 4313 orrs r3, r2 + 8039314: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC1P; - 80392d6: 697b ldr r3, [r7, #20] - 80392d8: f023 0302 bic.w r3, r3, #2 - 80392dc: 617b str r3, [r7, #20] + 8039316: 697b ldr r3, [r7, #20] + 8039318: f023 0302 bic.w r3, r3, #2 + 803931c: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= OC_Config->OCPolarity; - 80392de: 683b ldr r3, [r7, #0] - 80392e0: 689b ldr r3, [r3, #8] - 80392e2: 697a ldr r2, [r7, #20] - 80392e4: 4313 orrs r3, r2 - 80392e6: 617b str r3, [r7, #20] + 803931e: 683b ldr r3, [r7, #0] + 8039320: 689b ldr r3, [r3, #8] + 8039322: 697a ldr r2, [r7, #20] + 8039324: 4313 orrs r3, r2 + 8039326: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_1)) - 80392e8: 687b ldr r3, [r7, #4] - 80392ea: 4a2d ldr r2, [pc, #180] ; (80393a0 ) - 80392ec: 4293 cmp r3, r2 - 80392ee: d00f beq.n 8039310 - 80392f0: 687b ldr r3, [r7, #4] - 80392f2: 4a2c ldr r2, [pc, #176] ; (80393a4 ) - 80392f4: 4293 cmp r3, r2 - 80392f6: d00b beq.n 8039310 - 80392f8: 687b ldr r3, [r7, #4] - 80392fa: 4a2b ldr r2, [pc, #172] ; (80393a8 ) - 80392fc: 4293 cmp r3, r2 - 80392fe: d007 beq.n 8039310 - 8039300: 687b ldr r3, [r7, #4] - 8039302: 4a2a ldr r2, [pc, #168] ; (80393ac ) - 8039304: 4293 cmp r3, r2 - 8039306: d003 beq.n 8039310 - 8039308: 687b ldr r3, [r7, #4] - 803930a: 4a29 ldr r2, [pc, #164] ; (80393b0 ) - 803930c: 4293 cmp r3, r2 - 803930e: d10c bne.n 803932a + 8039328: 687b ldr r3, [r7, #4] + 803932a: 4a2d ldr r2, [pc, #180] ; (80393e0 ) + 803932c: 4293 cmp r3, r2 + 803932e: d00f beq.n 8039350 + 8039330: 687b ldr r3, [r7, #4] + 8039332: 4a2c ldr r2, [pc, #176] ; (80393e4 ) + 8039334: 4293 cmp r3, r2 + 8039336: d00b beq.n 8039350 + 8039338: 687b ldr r3, [r7, #4] + 803933a: 4a2b ldr r2, [pc, #172] ; (80393e8 ) + 803933c: 4293 cmp r3, r2 + 803933e: d007 beq.n 8039350 + 8039340: 687b ldr r3, [r7, #4] + 8039342: 4a2a ldr r2, [pc, #168] ; (80393ec ) + 8039344: 4293 cmp r3, r2 + 8039346: d003 beq.n 8039350 + 8039348: 687b ldr r3, [r7, #4] + 803934a: 4a29 ldr r2, [pc, #164] ; (80393f0 ) + 803934c: 4293 cmp r3, r2 + 803934e: d10c bne.n 803936a { /* Check parameters */ assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC1NP; - 8039310: 697b ldr r3, [r7, #20] - 8039312: f023 0308 bic.w r3, r3, #8 - 8039316: 617b str r3, [r7, #20] + 8039350: 697b ldr r3, [r7, #20] + 8039352: f023 0308 bic.w r3, r3, #8 + 8039356: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= OC_Config->OCNPolarity; - 8039318: 683b ldr r3, [r7, #0] - 803931a: 68db ldr r3, [r3, #12] - 803931c: 697a ldr r2, [r7, #20] - 803931e: 4313 orrs r3, r2 - 8039320: 617b str r3, [r7, #20] + 8039358: 683b ldr r3, [r7, #0] + 803935a: 68db ldr r3, [r3, #12] + 803935c: 697a ldr r2, [r7, #20] + 803935e: 4313 orrs r3, r2 + 8039360: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC1NE; - 8039322: 697b ldr r3, [r7, #20] - 8039324: f023 0304 bic.w r3, r3, #4 - 8039328: 617b str r3, [r7, #20] + 8039362: 697b ldr r3, [r7, #20] + 8039364: f023 0304 bic.w r3, r3, #4 + 8039368: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 803932a: 687b ldr r3, [r7, #4] - 803932c: 4a1c ldr r2, [pc, #112] ; (80393a0 ) - 803932e: 4293 cmp r3, r2 - 8039330: d00f beq.n 8039352 - 8039332: 687b ldr r3, [r7, #4] - 8039334: 4a1b ldr r2, [pc, #108] ; (80393a4 ) - 8039336: 4293 cmp r3, r2 - 8039338: d00b beq.n 8039352 - 803933a: 687b ldr r3, [r7, #4] - 803933c: 4a1a ldr r2, [pc, #104] ; (80393a8 ) - 803933e: 4293 cmp r3, r2 - 8039340: d007 beq.n 8039352 - 8039342: 687b ldr r3, [r7, #4] - 8039344: 4a19 ldr r2, [pc, #100] ; (80393ac ) - 8039346: 4293 cmp r3, r2 - 8039348: d003 beq.n 8039352 - 803934a: 687b ldr r3, [r7, #4] - 803934c: 4a18 ldr r2, [pc, #96] ; (80393b0 ) - 803934e: 4293 cmp r3, r2 - 8039350: d111 bne.n 8039376 + 803936a: 687b ldr r3, [r7, #4] + 803936c: 4a1c ldr r2, [pc, #112] ; (80393e0 ) + 803936e: 4293 cmp r3, r2 + 8039370: d00f beq.n 8039392 + 8039372: 687b ldr r3, [r7, #4] + 8039374: 4a1b ldr r2, [pc, #108] ; (80393e4 ) + 8039376: 4293 cmp r3, r2 + 8039378: d00b beq.n 8039392 + 803937a: 687b ldr r3, [r7, #4] + 803937c: 4a1a ldr r2, [pc, #104] ; (80393e8 ) + 803937e: 4293 cmp r3, r2 + 8039380: d007 beq.n 8039392 + 8039382: 687b ldr r3, [r7, #4] + 8039384: 4a19 ldr r2, [pc, #100] ; (80393ec ) + 8039386: 4293 cmp r3, r2 + 8039388: d003 beq.n 8039392 + 803938a: 687b ldr r3, [r7, #4] + 803938c: 4a18 ldr r2, [pc, #96] ; (80393f0 ) + 803938e: 4293 cmp r3, r2 + 8039390: d111 bne.n 80393b6 /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS1; - 8039352: 693b ldr r3, [r7, #16] - 8039354: f423 7380 bic.w r3, r3, #256 ; 0x100 - 8039358: 613b str r3, [r7, #16] + 8039392: 693b ldr r3, [r7, #16] + 8039394: f423 7380 bic.w r3, r3, #256 ; 0x100 + 8039398: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS1N; - 803935a: 693b ldr r3, [r7, #16] - 803935c: f423 7300 bic.w r3, r3, #512 ; 0x200 - 8039360: 613b str r3, [r7, #16] + 803939a: 693b ldr r3, [r7, #16] + 803939c: f423 7300 bic.w r3, r3, #512 ; 0x200 + 80393a0: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= OC_Config->OCIdleState; - 8039362: 683b ldr r3, [r7, #0] - 8039364: 695b ldr r3, [r3, #20] - 8039366: 693a ldr r2, [r7, #16] - 8039368: 4313 orrs r3, r2 - 803936a: 613b str r3, [r7, #16] + 80393a2: 683b ldr r3, [r7, #0] + 80393a4: 695b ldr r3, [r3, #20] + 80393a6: 693a ldr r2, [r7, #16] + 80393a8: 4313 orrs r3, r2 + 80393aa: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= OC_Config->OCNIdleState; - 803936c: 683b ldr r3, [r7, #0] - 803936e: 699b ldr r3, [r3, #24] - 8039370: 693a ldr r2, [r7, #16] - 8039372: 4313 orrs r3, r2 - 8039374: 613b str r3, [r7, #16] + 80393ac: 683b ldr r3, [r7, #0] + 80393ae: 699b ldr r3, [r3, #24] + 80393b0: 693a ldr r2, [r7, #16] + 80393b2: 4313 orrs r3, r2 + 80393b4: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8039376: 687b ldr r3, [r7, #4] - 8039378: 693a ldr r2, [r7, #16] - 803937a: 605a str r2, [r3, #4] + 80393b6: 687b ldr r3, [r7, #4] + 80393b8: 693a ldr r2, [r7, #16] + 80393ba: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 803937c: 687b ldr r3, [r7, #4] - 803937e: 68fa ldr r2, [r7, #12] - 8039380: 619a str r2, [r3, #24] + 80393bc: 687b ldr r3, [r7, #4] + 80393be: 68fa ldr r2, [r7, #12] + 80393c0: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR1 = OC_Config->Pulse; - 8039382: 683b ldr r3, [r7, #0] - 8039384: 685a ldr r2, [r3, #4] - 8039386: 687b ldr r3, [r7, #4] - 8039388: 635a str r2, [r3, #52] ; 0x34 + 80393c2: 683b ldr r3, [r7, #0] + 80393c4: 685a ldr r2, [r3, #4] + 80393c6: 687b ldr r3, [r7, #4] + 80393c8: 635a str r2, [r3, #52] ; 0x34 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 803938a: 687b ldr r3, [r7, #4] - 803938c: 697a ldr r2, [r7, #20] - 803938e: 621a str r2, [r3, #32] -} - 8039390: bf00 nop - 8039392: 371c adds r7, #28 - 8039394: 46bd mov sp, r7 - 8039396: f85d 7b04 ldr.w r7, [sp], #4 - 803939a: 4770 bx lr - 803939c: fffeff8f .word 0xfffeff8f - 80393a0: 40010000 .word 0x40010000 - 80393a4: 40010400 .word 0x40010400 - 80393a8: 40014000 .word 0x40014000 - 80393ac: 40014400 .word 0x40014400 - 80393b0: 40014800 .word 0x40014800 - -080393b4 : + 80393ca: 687b ldr r3, [r7, #4] + 80393cc: 697a ldr r2, [r7, #20] + 80393ce: 621a str r2, [r3, #32] +} + 80393d0: bf00 nop + 80393d2: 371c adds r7, #28 + 80393d4: 46bd mov sp, r7 + 80393d6: f85d 7b04 ldr.w r7, [sp], #4 + 80393da: 4770 bx lr + 80393dc: fffeff8f .word 0xfffeff8f + 80393e0: 40010000 .word 0x40010000 + 80393e4: 40010400 .word 0x40010400 + 80393e8: 40014000 .word 0x40014000 + 80393ec: 40014400 .word 0x40014400 + 80393f0: 40014800 .word 0x40014800 + +080393f4 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 80393b4: b480 push {r7} - 80393b6: b087 sub sp, #28 - 80393b8: af00 add r7, sp, #0 - 80393ba: 6078 str r0, [r7, #4] - 80393bc: 6039 str r1, [r7, #0] + 80393f4: b480 push {r7} + 80393f6: b087 sub sp, #28 + 80393f8: af00 add r7, sp, #0 + 80393fa: 6078 str r0, [r7, #4] + 80393fc: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 2: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC2E; - 80393be: 687b ldr r3, [r7, #4] - 80393c0: 6a1b ldr r3, [r3, #32] - 80393c2: f023 0210 bic.w r2, r3, #16 - 80393c6: 687b ldr r3, [r7, #4] - 80393c8: 621a str r2, [r3, #32] + 80393fe: 687b ldr r3, [r7, #4] + 8039400: 6a1b ldr r3, [r3, #32] + 8039402: f023 0210 bic.w r2, r3, #16 + 8039406: 687b ldr r3, [r7, #4] + 8039408: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80393ca: 687b ldr r3, [r7, #4] - 80393cc: 6a1b ldr r3, [r3, #32] - 80393ce: 617b str r3, [r7, #20] + 803940a: 687b ldr r3, [r7, #4] + 803940c: 6a1b ldr r3, [r3, #32] + 803940e: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80393d0: 687b ldr r3, [r7, #4] - 80393d2: 685b ldr r3, [r3, #4] - 80393d4: 613b str r3, [r7, #16] + 8039410: 687b ldr r3, [r7, #4] + 8039412: 685b ldr r3, [r3, #4] + 8039414: 613b str r3, [r7, #16] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR1; - 80393d6: 687b ldr r3, [r7, #4] - 80393d8: 699b ldr r3, [r3, #24] - 80393da: 60fb str r3, [r7, #12] + 8039416: 687b ldr r3, [r7, #4] + 8039418: 699b ldr r3, [r3, #24] + 803941a: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR1_OC2M; - 80393dc: 68fa ldr r2, [r7, #12] - 80393de: 4b34 ldr r3, [pc, #208] ; (80394b0 ) - 80393e0: 4013 ands r3, r2 - 80393e2: 60fb str r3, [r7, #12] + 803941c: 68fa ldr r2, [r7, #12] + 803941e: 4b34 ldr r3, [pc, #208] ; (80394f0 ) + 8039420: 4013 ands r3, r2 + 8039422: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR1_CC2S; - 80393e4: 68fb ldr r3, [r7, #12] - 80393e6: f423 7340 bic.w r3, r3, #768 ; 0x300 - 80393ea: 60fb str r3, [r7, #12] + 8039424: 68fb ldr r3, [r7, #12] + 8039426: f423 7340 bic.w r3, r3, #768 ; 0x300 + 803942a: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 80393ec: 683b ldr r3, [r7, #0] - 80393ee: 681b ldr r3, [r3, #0] - 80393f0: 021b lsls r3, r3, #8 - 80393f2: 68fa ldr r2, [r7, #12] - 80393f4: 4313 orrs r3, r2 - 80393f6: 60fb str r3, [r7, #12] + 803942c: 683b ldr r3, [r7, #0] + 803942e: 681b ldr r3, [r3, #0] + 8039430: 021b lsls r3, r3, #8 + 8039432: 68fa ldr r2, [r7, #12] + 8039434: 4313 orrs r3, r2 + 8039436: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC2P; - 80393f8: 697b ldr r3, [r7, #20] - 80393fa: f023 0320 bic.w r3, r3, #32 - 80393fe: 617b str r3, [r7, #20] + 8039438: 697b ldr r3, [r7, #20] + 803943a: f023 0320 bic.w r3, r3, #32 + 803943e: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 4U); - 8039400: 683b ldr r3, [r7, #0] - 8039402: 689b ldr r3, [r3, #8] - 8039404: 011b lsls r3, r3, #4 - 8039406: 697a ldr r2, [r7, #20] - 8039408: 4313 orrs r3, r2 - 803940a: 617b str r3, [r7, #20] + 8039440: 683b ldr r3, [r7, #0] + 8039442: 689b ldr r3, [r3, #8] + 8039444: 011b lsls r3, r3, #4 + 8039446: 697a ldr r2, [r7, #20] + 8039448: 4313 orrs r3, r2 + 803944a: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_2)) - 803940c: 687b ldr r3, [r7, #4] - 803940e: 4a29 ldr r2, [pc, #164] ; (80394b4 ) - 8039410: 4293 cmp r3, r2 - 8039412: d003 beq.n 803941c - 8039414: 687b ldr r3, [r7, #4] - 8039416: 4a28 ldr r2, [pc, #160] ; (80394b8 ) - 8039418: 4293 cmp r3, r2 - 803941a: d10d bne.n 8039438 + 803944c: 687b ldr r3, [r7, #4] + 803944e: 4a29 ldr r2, [pc, #164] ; (80394f4 ) + 8039450: 4293 cmp r3, r2 + 8039452: d003 beq.n 803945c + 8039454: 687b ldr r3, [r7, #4] + 8039456: 4a28 ldr r2, [pc, #160] ; (80394f8 ) + 8039458: 4293 cmp r3, r2 + 803945a: d10d bne.n 8039478 { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC2NP; - 803941c: 697b ldr r3, [r7, #20] - 803941e: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8039422: 617b str r3, [r7, #20] + 803945c: 697b ldr r3, [r7, #20] + 803945e: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8039462: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 4U); - 8039424: 683b ldr r3, [r7, #0] - 8039426: 68db ldr r3, [r3, #12] - 8039428: 011b lsls r3, r3, #4 - 803942a: 697a ldr r2, [r7, #20] - 803942c: 4313 orrs r3, r2 - 803942e: 617b str r3, [r7, #20] + 8039464: 683b ldr r3, [r7, #0] + 8039466: 68db ldr r3, [r3, #12] + 8039468: 011b lsls r3, r3, #4 + 803946a: 697a ldr r2, [r7, #20] + 803946c: 4313 orrs r3, r2 + 803946e: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC2NE; - 8039430: 697b ldr r3, [r7, #20] - 8039432: f023 0340 bic.w r3, r3, #64 ; 0x40 - 8039436: 617b str r3, [r7, #20] + 8039470: 697b ldr r3, [r7, #20] + 8039472: f023 0340 bic.w r3, r3, #64 ; 0x40 + 8039476: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8039438: 687b ldr r3, [r7, #4] - 803943a: 4a1e ldr r2, [pc, #120] ; (80394b4 ) - 803943c: 4293 cmp r3, r2 - 803943e: d00f beq.n 8039460 - 8039440: 687b ldr r3, [r7, #4] - 8039442: 4a1d ldr r2, [pc, #116] ; (80394b8 ) - 8039444: 4293 cmp r3, r2 - 8039446: d00b beq.n 8039460 - 8039448: 687b ldr r3, [r7, #4] - 803944a: 4a1c ldr r2, [pc, #112] ; (80394bc ) - 803944c: 4293 cmp r3, r2 - 803944e: d007 beq.n 8039460 - 8039450: 687b ldr r3, [r7, #4] - 8039452: 4a1b ldr r2, [pc, #108] ; (80394c0 ) - 8039454: 4293 cmp r3, r2 - 8039456: d003 beq.n 8039460 - 8039458: 687b ldr r3, [r7, #4] - 803945a: 4a1a ldr r2, [pc, #104] ; (80394c4 ) - 803945c: 4293 cmp r3, r2 - 803945e: d113 bne.n 8039488 + 8039478: 687b ldr r3, [r7, #4] + 803947a: 4a1e ldr r2, [pc, #120] ; (80394f4 ) + 803947c: 4293 cmp r3, r2 + 803947e: d00f beq.n 80394a0 + 8039480: 687b ldr r3, [r7, #4] + 8039482: 4a1d ldr r2, [pc, #116] ; (80394f8 ) + 8039484: 4293 cmp r3, r2 + 8039486: d00b beq.n 80394a0 + 8039488: 687b ldr r3, [r7, #4] + 803948a: 4a1c ldr r2, [pc, #112] ; (80394fc ) + 803948c: 4293 cmp r3, r2 + 803948e: d007 beq.n 80394a0 + 8039490: 687b ldr r3, [r7, #4] + 8039492: 4a1b ldr r2, [pc, #108] ; (8039500 ) + 8039494: 4293 cmp r3, r2 + 8039496: d003 beq.n 80394a0 + 8039498: 687b ldr r3, [r7, #4] + 803949a: 4a1a ldr r2, [pc, #104] ; (8039504 ) + 803949c: 4293 cmp r3, r2 + 803949e: d113 bne.n 80394c8 /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS2; - 8039460: 693b ldr r3, [r7, #16] - 8039462: f423 6380 bic.w r3, r3, #1024 ; 0x400 - 8039466: 613b str r3, [r7, #16] + 80394a0: 693b ldr r3, [r7, #16] + 80394a2: f423 6380 bic.w r3, r3, #1024 ; 0x400 + 80394a6: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS2N; - 8039468: 693b ldr r3, [r7, #16] - 803946a: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 803946e: 613b str r3, [r7, #16] + 80394a8: 693b ldr r3, [r7, #16] + 80394aa: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 80394ae: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 2U); - 8039470: 683b ldr r3, [r7, #0] - 8039472: 695b ldr r3, [r3, #20] - 8039474: 009b lsls r3, r3, #2 - 8039476: 693a ldr r2, [r7, #16] - 8039478: 4313 orrs r3, r2 - 803947a: 613b str r3, [r7, #16] + 80394b0: 683b ldr r3, [r7, #0] + 80394b2: 695b ldr r3, [r3, #20] + 80394b4: 009b lsls r3, r3, #2 + 80394b6: 693a ldr r2, [r7, #16] + 80394b8: 4313 orrs r3, r2 + 80394ba: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 2U); - 803947c: 683b ldr r3, [r7, #0] - 803947e: 699b ldr r3, [r3, #24] - 8039480: 009b lsls r3, r3, #2 - 8039482: 693a ldr r2, [r7, #16] - 8039484: 4313 orrs r3, r2 - 8039486: 613b str r3, [r7, #16] + 80394bc: 683b ldr r3, [r7, #0] + 80394be: 699b ldr r3, [r3, #24] + 80394c0: 009b lsls r3, r3, #2 + 80394c2: 693a ldr r2, [r7, #16] + 80394c4: 4313 orrs r3, r2 + 80394c6: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8039488: 687b ldr r3, [r7, #4] - 803948a: 693a ldr r2, [r7, #16] - 803948c: 605a str r2, [r3, #4] + 80394c8: 687b ldr r3, [r7, #4] + 80394ca: 693a ldr r2, [r7, #16] + 80394cc: 605a str r2, [r3, #4] /* Write to TIMx CCMR1 */ TIMx->CCMR1 = tmpccmrx; - 803948e: 687b ldr r3, [r7, #4] - 8039490: 68fa ldr r2, [r7, #12] - 8039492: 619a str r2, [r3, #24] + 80394ce: 687b ldr r3, [r7, #4] + 80394d0: 68fa ldr r2, [r7, #12] + 80394d2: 619a str r2, [r3, #24] /* Set the Capture Compare Register value */ TIMx->CCR2 = OC_Config->Pulse; - 8039494: 683b ldr r3, [r7, #0] - 8039496: 685a ldr r2, [r3, #4] - 8039498: 687b ldr r3, [r7, #4] - 803949a: 639a str r2, [r3, #56] ; 0x38 + 80394d4: 683b ldr r3, [r7, #0] + 80394d6: 685a ldr r2, [r3, #4] + 80394d8: 687b ldr r3, [r7, #4] + 80394da: 639a str r2, [r3, #56] ; 0x38 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 803949c: 687b ldr r3, [r7, #4] - 803949e: 697a ldr r2, [r7, #20] - 80394a0: 621a str r2, [r3, #32] -} - 80394a2: bf00 nop - 80394a4: 371c adds r7, #28 - 80394a6: 46bd mov sp, r7 - 80394a8: f85d 7b04 ldr.w r7, [sp], #4 - 80394ac: 4770 bx lr - 80394ae: bf00 nop - 80394b0: feff8fff .word 0xfeff8fff - 80394b4: 40010000 .word 0x40010000 - 80394b8: 40010400 .word 0x40010400 - 80394bc: 40014000 .word 0x40014000 - 80394c0: 40014400 .word 0x40014400 - 80394c4: 40014800 .word 0x40014800 - -080394c8 : + 80394dc: 687b ldr r3, [r7, #4] + 80394de: 697a ldr r2, [r7, #20] + 80394e0: 621a str r2, [r3, #32] +} + 80394e2: bf00 nop + 80394e4: 371c adds r7, #28 + 80394e6: 46bd mov sp, r7 + 80394e8: f85d 7b04 ldr.w r7, [sp], #4 + 80394ec: 4770 bx lr + 80394ee: bf00 nop + 80394f0: feff8fff .word 0xfeff8fff + 80394f4: 40010000 .word 0x40010000 + 80394f8: 40010400 .word 0x40010400 + 80394fc: 40014000 .word 0x40014000 + 8039500: 40014400 .word 0x40014400 + 8039504: 40014800 .word 0x40014800 + +08039508 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC3_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 80394c8: b480 push {r7} - 80394ca: b087 sub sp, #28 - 80394cc: af00 add r7, sp, #0 - 80394ce: 6078 str r0, [r7, #4] - 80394d0: 6039 str r1, [r7, #0] + 8039508: b480 push {r7} + 803950a: b087 sub sp, #28 + 803950c: af00 add r7, sp, #0 + 803950e: 6078 str r0, [r7, #4] + 8039510: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 3: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC3E; - 80394d2: 687b ldr r3, [r7, #4] - 80394d4: 6a1b ldr r3, [r3, #32] - 80394d6: f423 7280 bic.w r2, r3, #256 ; 0x100 - 80394da: 687b ldr r3, [r7, #4] - 80394dc: 621a str r2, [r3, #32] + 8039512: 687b ldr r3, [r7, #4] + 8039514: 6a1b ldr r3, [r3, #32] + 8039516: f423 7280 bic.w r2, r3, #256 ; 0x100 + 803951a: 687b ldr r3, [r7, #4] + 803951c: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80394de: 687b ldr r3, [r7, #4] - 80394e0: 6a1b ldr r3, [r3, #32] - 80394e2: 617b str r3, [r7, #20] + 803951e: 687b ldr r3, [r7, #4] + 8039520: 6a1b ldr r3, [r3, #32] + 8039522: 617b str r3, [r7, #20] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80394e4: 687b ldr r3, [r7, #4] - 80394e6: 685b ldr r3, [r3, #4] - 80394e8: 613b str r3, [r7, #16] + 8039524: 687b ldr r3, [r7, #4] + 8039526: 685b ldr r3, [r3, #4] + 8039528: 613b str r3, [r7, #16] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 80394ea: 687b ldr r3, [r7, #4] - 80394ec: 69db ldr r3, [r3, #28] - 80394ee: 60fb str r3, [r7, #12] + 803952a: 687b ldr r3, [r7, #4] + 803952c: 69db ldr r3, [r3, #28] + 803952e: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC3M; - 80394f0: 68fa ldr r2, [r7, #12] - 80394f2: 4b33 ldr r3, [pc, #204] ; (80395c0 ) - 80394f4: 4013 ands r3, r2 - 80394f6: 60fb str r3, [r7, #12] + 8039530: 68fa ldr r2, [r7, #12] + 8039532: 4b33 ldr r3, [pc, #204] ; (8039600 ) + 8039534: 4013 ands r3, r2 + 8039536: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC3S; - 80394f8: 68fb ldr r3, [r7, #12] - 80394fa: f023 0303 bic.w r3, r3, #3 - 80394fe: 60fb str r3, [r7, #12] + 8039538: 68fb ldr r3, [r7, #12] + 803953a: f023 0303 bic.w r3, r3, #3 + 803953e: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 8039500: 683b ldr r3, [r7, #0] - 8039502: 681b ldr r3, [r3, #0] - 8039504: 68fa ldr r2, [r7, #12] - 8039506: 4313 orrs r3, r2 - 8039508: 60fb str r3, [r7, #12] + 8039540: 683b ldr r3, [r7, #0] + 8039542: 681b ldr r3, [r3, #0] + 8039544: 68fa ldr r2, [r7, #12] + 8039546: 4313 orrs r3, r2 + 8039548: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC3P; - 803950a: 697b ldr r3, [r7, #20] - 803950c: f423 7300 bic.w r3, r3, #512 ; 0x200 - 8039510: 617b str r3, [r7, #20] + 803954a: 697b ldr r3, [r7, #20] + 803954c: f423 7300 bic.w r3, r3, #512 ; 0x200 + 8039550: 617b str r3, [r7, #20] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 8U); - 8039512: 683b ldr r3, [r7, #0] - 8039514: 689b ldr r3, [r3, #8] - 8039516: 021b lsls r3, r3, #8 - 8039518: 697a ldr r2, [r7, #20] - 803951a: 4313 orrs r3, r2 - 803951c: 617b str r3, [r7, #20] + 8039552: 683b ldr r3, [r7, #0] + 8039554: 689b ldr r3, [r3, #8] + 8039556: 021b lsls r3, r3, #8 + 8039558: 697a ldr r2, [r7, #20] + 803955a: 4313 orrs r3, r2 + 803955c: 617b str r3, [r7, #20] if (IS_TIM_CCXN_INSTANCE(TIMx, TIM_CHANNEL_3)) - 803951e: 687b ldr r3, [r7, #4] - 8039520: 4a28 ldr r2, [pc, #160] ; (80395c4 ) - 8039522: 4293 cmp r3, r2 - 8039524: d003 beq.n 803952e - 8039526: 687b ldr r3, [r7, #4] - 8039528: 4a27 ldr r2, [pc, #156] ; (80395c8 ) - 803952a: 4293 cmp r3, r2 - 803952c: d10d bne.n 803954a + 803955e: 687b ldr r3, [r7, #4] + 8039560: 4a28 ldr r2, [pc, #160] ; (8039604 ) + 8039562: 4293 cmp r3, r2 + 8039564: d003 beq.n 803956e + 8039566: 687b ldr r3, [r7, #4] + 8039568: 4a27 ldr r2, [pc, #156] ; (8039608 ) + 803956a: 4293 cmp r3, r2 + 803956c: d10d bne.n 803958a { assert_param(IS_TIM_OCN_POLARITY(OC_Config->OCNPolarity)); /* Reset the Output N Polarity level */ tmpccer &= ~TIM_CCER_CC3NP; - 803952e: 697b ldr r3, [r7, #20] - 8039530: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 8039534: 617b str r3, [r7, #20] + 803956e: 697b ldr r3, [r7, #20] + 8039570: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 8039574: 617b str r3, [r7, #20] /* Set the Output N Polarity */ tmpccer |= (OC_Config->OCNPolarity << 8U); - 8039536: 683b ldr r3, [r7, #0] - 8039538: 68db ldr r3, [r3, #12] - 803953a: 021b lsls r3, r3, #8 - 803953c: 697a ldr r2, [r7, #20] - 803953e: 4313 orrs r3, r2 - 8039540: 617b str r3, [r7, #20] + 8039576: 683b ldr r3, [r7, #0] + 8039578: 68db ldr r3, [r3, #12] + 803957a: 021b lsls r3, r3, #8 + 803957c: 697a ldr r2, [r7, #20] + 803957e: 4313 orrs r3, r2 + 8039580: 617b str r3, [r7, #20] /* Reset the Output N State */ tmpccer &= ~TIM_CCER_CC3NE; - 8039542: 697b ldr r3, [r7, #20] - 8039544: f423 6380 bic.w r3, r3, #1024 ; 0x400 - 8039548: 617b str r3, [r7, #20] + 8039582: 697b ldr r3, [r7, #20] + 8039584: f423 6380 bic.w r3, r3, #1024 ; 0x400 + 8039588: 617b str r3, [r7, #20] } if (IS_TIM_BREAK_INSTANCE(TIMx)) - 803954a: 687b ldr r3, [r7, #4] - 803954c: 4a1d ldr r2, [pc, #116] ; (80395c4 ) - 803954e: 4293 cmp r3, r2 - 8039550: d00f beq.n 8039572 - 8039552: 687b ldr r3, [r7, #4] - 8039554: 4a1c ldr r2, [pc, #112] ; (80395c8 ) - 8039556: 4293 cmp r3, r2 - 8039558: d00b beq.n 8039572 - 803955a: 687b ldr r3, [r7, #4] - 803955c: 4a1b ldr r2, [pc, #108] ; (80395cc ) - 803955e: 4293 cmp r3, r2 - 8039560: d007 beq.n 8039572 - 8039562: 687b ldr r3, [r7, #4] - 8039564: 4a1a ldr r2, [pc, #104] ; (80395d0 ) - 8039566: 4293 cmp r3, r2 - 8039568: d003 beq.n 8039572 - 803956a: 687b ldr r3, [r7, #4] - 803956c: 4a19 ldr r2, [pc, #100] ; (80395d4 ) - 803956e: 4293 cmp r3, r2 - 8039570: d113 bne.n 803959a + 803958a: 687b ldr r3, [r7, #4] + 803958c: 4a1d ldr r2, [pc, #116] ; (8039604 ) + 803958e: 4293 cmp r3, r2 + 8039590: d00f beq.n 80395b2 + 8039592: 687b ldr r3, [r7, #4] + 8039594: 4a1c ldr r2, [pc, #112] ; (8039608 ) + 8039596: 4293 cmp r3, r2 + 8039598: d00b beq.n 80395b2 + 803959a: 687b ldr r3, [r7, #4] + 803959c: 4a1b ldr r2, [pc, #108] ; (803960c ) + 803959e: 4293 cmp r3, r2 + 80395a0: d007 beq.n 80395b2 + 80395a2: 687b ldr r3, [r7, #4] + 80395a4: 4a1a ldr r2, [pc, #104] ; (8039610 ) + 80395a6: 4293 cmp r3, r2 + 80395a8: d003 beq.n 80395b2 + 80395aa: 687b ldr r3, [r7, #4] + 80395ac: 4a19 ldr r2, [pc, #100] ; (8039614 ) + 80395ae: 4293 cmp r3, r2 + 80395b0: d113 bne.n 80395da /* Check parameters */ assert_param(IS_TIM_OCNIDLE_STATE(OC_Config->OCNIdleState)); assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare and Output Compare N IDLE State */ tmpcr2 &= ~TIM_CR2_OIS3; - 8039572: 693b ldr r3, [r7, #16] - 8039574: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 8039578: 613b str r3, [r7, #16] + 80395b2: 693b ldr r3, [r7, #16] + 80395b4: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 80395b8: 613b str r3, [r7, #16] tmpcr2 &= ~TIM_CR2_OIS3N; - 803957a: 693b ldr r3, [r7, #16] - 803957c: f423 5300 bic.w r3, r3, #8192 ; 0x2000 - 8039580: 613b str r3, [r7, #16] + 80395ba: 693b ldr r3, [r7, #16] + 80395bc: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 80395c0: 613b str r3, [r7, #16] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 4U); - 8039582: 683b ldr r3, [r7, #0] - 8039584: 695b ldr r3, [r3, #20] - 8039586: 011b lsls r3, r3, #4 - 8039588: 693a ldr r2, [r7, #16] - 803958a: 4313 orrs r3, r2 - 803958c: 613b str r3, [r7, #16] + 80395c2: 683b ldr r3, [r7, #0] + 80395c4: 695b ldr r3, [r3, #20] + 80395c6: 011b lsls r3, r3, #4 + 80395c8: 693a ldr r2, [r7, #16] + 80395ca: 4313 orrs r3, r2 + 80395cc: 613b str r3, [r7, #16] /* Set the Output N Idle state */ tmpcr2 |= (OC_Config->OCNIdleState << 4U); - 803958e: 683b ldr r3, [r7, #0] - 8039590: 699b ldr r3, [r3, #24] - 8039592: 011b lsls r3, r3, #4 - 8039594: 693a ldr r2, [r7, #16] - 8039596: 4313 orrs r3, r2 - 8039598: 613b str r3, [r7, #16] + 80395ce: 683b ldr r3, [r7, #0] + 80395d0: 699b ldr r3, [r3, #24] + 80395d2: 011b lsls r3, r3, #4 + 80395d4: 693a ldr r2, [r7, #16] + 80395d6: 4313 orrs r3, r2 + 80395d8: 613b str r3, [r7, #16] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 803959a: 687b ldr r3, [r7, #4] - 803959c: 693a ldr r2, [r7, #16] - 803959e: 605a str r2, [r3, #4] + 80395da: 687b ldr r3, [r7, #4] + 80395dc: 693a ldr r2, [r7, #16] + 80395de: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 80395a0: 687b ldr r3, [r7, #4] - 80395a2: 68fa ldr r2, [r7, #12] - 80395a4: 61da str r2, [r3, #28] + 80395e0: 687b ldr r3, [r7, #4] + 80395e2: 68fa ldr r2, [r7, #12] + 80395e4: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR3 = OC_Config->Pulse; - 80395a6: 683b ldr r3, [r7, #0] - 80395a8: 685a ldr r2, [r3, #4] - 80395aa: 687b ldr r3, [r7, #4] - 80395ac: 63da str r2, [r3, #60] ; 0x3c + 80395e6: 683b ldr r3, [r7, #0] + 80395e8: 685a ldr r2, [r3, #4] + 80395ea: 687b ldr r3, [r7, #4] + 80395ec: 63da str r2, [r3, #60] ; 0x3c /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 80395ae: 687b ldr r3, [r7, #4] - 80395b0: 697a ldr r2, [r7, #20] - 80395b2: 621a str r2, [r3, #32] -} - 80395b4: bf00 nop - 80395b6: 371c adds r7, #28 - 80395b8: 46bd mov sp, r7 - 80395ba: f85d 7b04 ldr.w r7, [sp], #4 - 80395be: 4770 bx lr - 80395c0: fffeff8f .word 0xfffeff8f - 80395c4: 40010000 .word 0x40010000 - 80395c8: 40010400 .word 0x40010400 - 80395cc: 40014000 .word 0x40014000 - 80395d0: 40014400 .word 0x40014400 - 80395d4: 40014800 .word 0x40014800 - -080395d8 : + 80395ee: 687b ldr r3, [r7, #4] + 80395f0: 697a ldr r2, [r7, #20] + 80395f2: 621a str r2, [r3, #32] +} + 80395f4: bf00 nop + 80395f6: 371c adds r7, #28 + 80395f8: 46bd mov sp, r7 + 80395fa: f85d 7b04 ldr.w r7, [sp], #4 + 80395fe: 4770 bx lr + 8039600: fffeff8f .word 0xfffeff8f + 8039604: 40010000 .word 0x40010000 + 8039608: 40010400 .word 0x40010400 + 803960c: 40014000 .word 0x40014000 + 8039610: 40014400 .word 0x40014400 + 8039614: 40014800 .word 0x40014800 + +08039618 : * @param TIMx to select the TIM peripheral * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC4_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 80395d8: b480 push {r7} - 80395da: b087 sub sp, #28 - 80395dc: af00 add r7, sp, #0 - 80395de: 6078 str r0, [r7, #4] - 80395e0: 6039 str r1, [r7, #0] + 8039618: b480 push {r7} + 803961a: b087 sub sp, #28 + 803961c: af00 add r7, sp, #0 + 803961e: 6078 str r0, [r7, #4] + 8039620: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the Channel 4: Reset the CC4E Bit */ TIMx->CCER &= ~TIM_CCER_CC4E; - 80395e2: 687b ldr r3, [r7, #4] - 80395e4: 6a1b ldr r3, [r3, #32] - 80395e6: f423 5280 bic.w r2, r3, #4096 ; 0x1000 - 80395ea: 687b ldr r3, [r7, #4] - 80395ec: 621a str r2, [r3, #32] + 8039622: 687b ldr r3, [r7, #4] + 8039624: 6a1b ldr r3, [r3, #32] + 8039626: f423 5280 bic.w r2, r3, #4096 ; 0x1000 + 803962a: 687b ldr r3, [r7, #4] + 803962c: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80395ee: 687b ldr r3, [r7, #4] - 80395f0: 6a1b ldr r3, [r3, #32] - 80395f2: 613b str r3, [r7, #16] + 803962e: 687b ldr r3, [r7, #4] + 8039630: 6a1b ldr r3, [r3, #32] + 8039632: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80395f4: 687b ldr r3, [r7, #4] - 80395f6: 685b ldr r3, [r3, #4] - 80395f8: 617b str r3, [r7, #20] + 8039634: 687b ldr r3, [r7, #4] + 8039636: 685b ldr r3, [r3, #4] + 8039638: 617b str r3, [r7, #20] /* Get the TIMx CCMR2 register value */ tmpccmrx = TIMx->CCMR2; - 80395fa: 687b ldr r3, [r7, #4] - 80395fc: 69db ldr r3, [r3, #28] - 80395fe: 60fb str r3, [r7, #12] + 803963a: 687b ldr r3, [r7, #4] + 803963c: 69db ldr r3, [r3, #28] + 803963e: 60fb str r3, [r7, #12] /* Reset the Output Compare mode and Capture/Compare selection Bits */ tmpccmrx &= ~TIM_CCMR2_OC4M; - 8039600: 68fa ldr r2, [r7, #12] - 8039602: 4b24 ldr r3, [pc, #144] ; (8039694 ) - 8039604: 4013 ands r3, r2 - 8039606: 60fb str r3, [r7, #12] + 8039640: 68fa ldr r2, [r7, #12] + 8039642: 4b24 ldr r3, [pc, #144] ; (80396d4 ) + 8039644: 4013 ands r3, r2 + 8039646: 60fb str r3, [r7, #12] tmpccmrx &= ~TIM_CCMR2_CC4S; - 8039608: 68fb ldr r3, [r7, #12] - 803960a: f423 7340 bic.w r3, r3, #768 ; 0x300 - 803960e: 60fb str r3, [r7, #12] + 8039648: 68fb ldr r3, [r7, #12] + 803964a: f423 7340 bic.w r3, r3, #768 ; 0x300 + 803964e: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 8039610: 683b ldr r3, [r7, #0] - 8039612: 681b ldr r3, [r3, #0] - 8039614: 021b lsls r3, r3, #8 - 8039616: 68fa ldr r2, [r7, #12] - 8039618: 4313 orrs r3, r2 - 803961a: 60fb str r3, [r7, #12] + 8039650: 683b ldr r3, [r7, #0] + 8039652: 681b ldr r3, [r3, #0] + 8039654: 021b lsls r3, r3, #8 + 8039656: 68fa ldr r2, [r7, #12] + 8039658: 4313 orrs r3, r2 + 803965a: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC4P; - 803961c: 693b ldr r3, [r7, #16] - 803961e: f423 5300 bic.w r3, r3, #8192 ; 0x2000 - 8039622: 613b str r3, [r7, #16] + 803965c: 693b ldr r3, [r7, #16] + 803965e: f423 5300 bic.w r3, r3, #8192 ; 0x2000 + 8039662: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 12U); - 8039624: 683b ldr r3, [r7, #0] - 8039626: 689b ldr r3, [r3, #8] - 8039628: 031b lsls r3, r3, #12 - 803962a: 693a ldr r2, [r7, #16] - 803962c: 4313 orrs r3, r2 - 803962e: 613b str r3, [r7, #16] + 8039664: 683b ldr r3, [r7, #0] + 8039666: 689b ldr r3, [r3, #8] + 8039668: 031b lsls r3, r3, #12 + 803966a: 693a ldr r2, [r7, #16] + 803966c: 4313 orrs r3, r2 + 803966e: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 8039630: 687b ldr r3, [r7, #4] - 8039632: 4a19 ldr r2, [pc, #100] ; (8039698 ) - 8039634: 4293 cmp r3, r2 - 8039636: d00f beq.n 8039658 - 8039638: 687b ldr r3, [r7, #4] - 803963a: 4a18 ldr r2, [pc, #96] ; (803969c ) - 803963c: 4293 cmp r3, r2 - 803963e: d00b beq.n 8039658 - 8039640: 687b ldr r3, [r7, #4] - 8039642: 4a17 ldr r2, [pc, #92] ; (80396a0 ) - 8039644: 4293 cmp r3, r2 - 8039646: d007 beq.n 8039658 - 8039648: 687b ldr r3, [r7, #4] - 803964a: 4a16 ldr r2, [pc, #88] ; (80396a4 ) - 803964c: 4293 cmp r3, r2 - 803964e: d003 beq.n 8039658 - 8039650: 687b ldr r3, [r7, #4] - 8039652: 4a15 ldr r2, [pc, #84] ; (80396a8 ) - 8039654: 4293 cmp r3, r2 - 8039656: d109 bne.n 803966c + 8039670: 687b ldr r3, [r7, #4] + 8039672: 4a19 ldr r2, [pc, #100] ; (80396d8 ) + 8039674: 4293 cmp r3, r2 + 8039676: d00f beq.n 8039698 + 8039678: 687b ldr r3, [r7, #4] + 803967a: 4a18 ldr r2, [pc, #96] ; (80396dc ) + 803967c: 4293 cmp r3, r2 + 803967e: d00b beq.n 8039698 + 8039680: 687b ldr r3, [r7, #4] + 8039682: 4a17 ldr r2, [pc, #92] ; (80396e0 ) + 8039684: 4293 cmp r3, r2 + 8039686: d007 beq.n 8039698 + 8039688: 687b ldr r3, [r7, #4] + 803968a: 4a16 ldr r2, [pc, #88] ; (80396e4 ) + 803968c: 4293 cmp r3, r2 + 803968e: d003 beq.n 8039698 + 8039690: 687b ldr r3, [r7, #4] + 8039692: 4a15 ldr r2, [pc, #84] ; (80396e8 ) + 8039694: 4293 cmp r3, r2 + 8039696: d109 bne.n 80396ac { /* Check parameters */ assert_param(IS_TIM_OCIDLE_STATE(OC_Config->OCIdleState)); /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS4; - 8039658: 697b ldr r3, [r7, #20] - 803965a: f423 4380 bic.w r3, r3, #16384 ; 0x4000 - 803965e: 617b str r3, [r7, #20] + 8039698: 697b ldr r3, [r7, #20] + 803969a: f423 4380 bic.w r3, r3, #16384 ; 0x4000 + 803969e: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 6U); - 8039660: 683b ldr r3, [r7, #0] - 8039662: 695b ldr r3, [r3, #20] - 8039664: 019b lsls r3, r3, #6 - 8039666: 697a ldr r2, [r7, #20] - 8039668: 4313 orrs r3, r2 - 803966a: 617b str r3, [r7, #20] + 80396a0: 683b ldr r3, [r7, #0] + 80396a2: 695b ldr r3, [r3, #20] + 80396a4: 019b lsls r3, r3, #6 + 80396a6: 697a ldr r2, [r7, #20] + 80396a8: 4313 orrs r3, r2 + 80396aa: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 803966c: 687b ldr r3, [r7, #4] - 803966e: 697a ldr r2, [r7, #20] - 8039670: 605a str r2, [r3, #4] + 80396ac: 687b ldr r3, [r7, #4] + 80396ae: 697a ldr r2, [r7, #20] + 80396b0: 605a str r2, [r3, #4] /* Write to TIMx CCMR2 */ TIMx->CCMR2 = tmpccmrx; - 8039672: 687b ldr r3, [r7, #4] - 8039674: 68fa ldr r2, [r7, #12] - 8039676: 61da str r2, [r3, #28] + 80396b2: 687b ldr r3, [r7, #4] + 80396b4: 68fa ldr r2, [r7, #12] + 80396b6: 61da str r2, [r3, #28] /* Set the Capture Compare Register value */ TIMx->CCR4 = OC_Config->Pulse; - 8039678: 683b ldr r3, [r7, #0] - 803967a: 685a ldr r2, [r3, #4] - 803967c: 687b ldr r3, [r7, #4] - 803967e: 641a str r2, [r3, #64] ; 0x40 + 80396b8: 683b ldr r3, [r7, #0] + 80396ba: 685a ldr r2, [r3, #4] + 80396bc: 687b ldr r3, [r7, #4] + 80396be: 641a str r2, [r3, #64] ; 0x40 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 8039680: 687b ldr r3, [r7, #4] - 8039682: 693a ldr r2, [r7, #16] - 8039684: 621a str r2, [r3, #32] -} - 8039686: bf00 nop - 8039688: 371c adds r7, #28 - 803968a: 46bd mov sp, r7 - 803968c: f85d 7b04 ldr.w r7, [sp], #4 - 8039690: 4770 bx lr - 8039692: bf00 nop - 8039694: feff8fff .word 0xfeff8fff - 8039698: 40010000 .word 0x40010000 - 803969c: 40010400 .word 0x40010400 - 80396a0: 40014000 .word 0x40014000 - 80396a4: 40014400 .word 0x40014400 - 80396a8: 40014800 .word 0x40014800 - -080396ac : + 80396c0: 687b ldr r3, [r7, #4] + 80396c2: 693a ldr r2, [r7, #16] + 80396c4: 621a str r2, [r3, #32] +} + 80396c6: bf00 nop + 80396c8: 371c adds r7, #28 + 80396ca: 46bd mov sp, r7 + 80396cc: f85d 7b04 ldr.w r7, [sp], #4 + 80396d0: 4770 bx lr + 80396d2: bf00 nop + 80396d4: feff8fff .word 0xfeff8fff + 80396d8: 40010000 .word 0x40010000 + 80396dc: 40010400 .word 0x40010400 + 80396e0: 40014000 .word 0x40014000 + 80396e4: 40014400 .word 0x40014400 + 80396e8: 40014800 .word 0x40014800 + +080396ec : * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC5_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 80396ac: b480 push {r7} - 80396ae: b087 sub sp, #28 - 80396b0: af00 add r7, sp, #0 - 80396b2: 6078 str r0, [r7, #4] - 80396b4: 6039 str r1, [r7, #0] + 80396ec: b480 push {r7} + 80396ee: b087 sub sp, #28 + 80396f0: af00 add r7, sp, #0 + 80396f2: 6078 str r0, [r7, #4] + 80396f4: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the output: Reset the CCxE Bit */ TIMx->CCER &= ~TIM_CCER_CC5E; - 80396b6: 687b ldr r3, [r7, #4] - 80396b8: 6a1b ldr r3, [r3, #32] - 80396ba: f423 3280 bic.w r2, r3, #65536 ; 0x10000 - 80396be: 687b ldr r3, [r7, #4] - 80396c0: 621a str r2, [r3, #32] + 80396f6: 687b ldr r3, [r7, #4] + 80396f8: 6a1b ldr r3, [r3, #32] + 80396fa: f423 3280 bic.w r2, r3, #65536 ; 0x10000 + 80396fe: 687b ldr r3, [r7, #4] + 8039700: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 80396c2: 687b ldr r3, [r7, #4] - 80396c4: 6a1b ldr r3, [r3, #32] - 80396c6: 613b str r3, [r7, #16] + 8039702: 687b ldr r3, [r7, #4] + 8039704: 6a1b ldr r3, [r3, #32] + 8039706: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 80396c8: 687b ldr r3, [r7, #4] - 80396ca: 685b ldr r3, [r3, #4] - 80396cc: 617b str r3, [r7, #20] + 8039708: 687b ldr r3, [r7, #4] + 803970a: 685b ldr r3, [r3, #4] + 803970c: 617b str r3, [r7, #20] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR3; - 80396ce: 687b ldr r3, [r7, #4] - 80396d0: 6d5b ldr r3, [r3, #84] ; 0x54 - 80396d2: 60fb str r3, [r7, #12] + 803970e: 687b ldr r3, [r7, #4] + 8039710: 6d5b ldr r3, [r3, #84] ; 0x54 + 8039712: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~(TIM_CCMR3_OC5M); - 80396d4: 68fa ldr r2, [r7, #12] - 80396d6: 4b21 ldr r3, [pc, #132] ; (803975c ) - 80396d8: 4013 ands r3, r2 - 80396da: 60fb str r3, [r7, #12] + 8039714: 68fa ldr r2, [r7, #12] + 8039716: 4b21 ldr r3, [pc, #132] ; (803979c ) + 8039718: 4013 ands r3, r2 + 803971a: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= OC_Config->OCMode; - 80396dc: 683b ldr r3, [r7, #0] - 80396de: 681b ldr r3, [r3, #0] - 80396e0: 68fa ldr r2, [r7, #12] - 80396e2: 4313 orrs r3, r2 - 80396e4: 60fb str r3, [r7, #12] + 803971c: 683b ldr r3, [r7, #0] + 803971e: 681b ldr r3, [r3, #0] + 8039720: 68fa ldr r2, [r7, #12] + 8039722: 4313 orrs r3, r2 + 8039724: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= ~TIM_CCER_CC5P; - 80396e6: 693b ldr r3, [r7, #16] - 80396e8: f423 3300 bic.w r3, r3, #131072 ; 0x20000 - 80396ec: 613b str r3, [r7, #16] + 8039726: 693b ldr r3, [r7, #16] + 8039728: f423 3300 bic.w r3, r3, #131072 ; 0x20000 + 803972c: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 16U); - 80396ee: 683b ldr r3, [r7, #0] - 80396f0: 689b ldr r3, [r3, #8] - 80396f2: 041b lsls r3, r3, #16 - 80396f4: 693a ldr r2, [r7, #16] - 80396f6: 4313 orrs r3, r2 - 80396f8: 613b str r3, [r7, #16] + 803972e: 683b ldr r3, [r7, #0] + 8039730: 689b ldr r3, [r3, #8] + 8039732: 041b lsls r3, r3, #16 + 8039734: 693a ldr r2, [r7, #16] + 8039736: 4313 orrs r3, r2 + 8039738: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 80396fa: 687b ldr r3, [r7, #4] - 80396fc: 4a18 ldr r2, [pc, #96] ; (8039760 ) - 80396fe: 4293 cmp r3, r2 - 8039700: d00f beq.n 8039722 - 8039702: 687b ldr r3, [r7, #4] - 8039704: 4a17 ldr r2, [pc, #92] ; (8039764 ) - 8039706: 4293 cmp r3, r2 - 8039708: d00b beq.n 8039722 - 803970a: 687b ldr r3, [r7, #4] - 803970c: 4a16 ldr r2, [pc, #88] ; (8039768 ) - 803970e: 4293 cmp r3, r2 - 8039710: d007 beq.n 8039722 - 8039712: 687b ldr r3, [r7, #4] - 8039714: 4a15 ldr r2, [pc, #84] ; (803976c ) - 8039716: 4293 cmp r3, r2 - 8039718: d003 beq.n 8039722 - 803971a: 687b ldr r3, [r7, #4] - 803971c: 4a14 ldr r2, [pc, #80] ; (8039770 ) - 803971e: 4293 cmp r3, r2 - 8039720: d109 bne.n 8039736 + 803973a: 687b ldr r3, [r7, #4] + 803973c: 4a18 ldr r2, [pc, #96] ; (80397a0 ) + 803973e: 4293 cmp r3, r2 + 8039740: d00f beq.n 8039762 + 8039742: 687b ldr r3, [r7, #4] + 8039744: 4a17 ldr r2, [pc, #92] ; (80397a4 ) + 8039746: 4293 cmp r3, r2 + 8039748: d00b beq.n 8039762 + 803974a: 687b ldr r3, [r7, #4] + 803974c: 4a16 ldr r2, [pc, #88] ; (80397a8 ) + 803974e: 4293 cmp r3, r2 + 8039750: d007 beq.n 8039762 + 8039752: 687b ldr r3, [r7, #4] + 8039754: 4a15 ldr r2, [pc, #84] ; (80397ac ) + 8039756: 4293 cmp r3, r2 + 8039758: d003 beq.n 8039762 + 803975a: 687b ldr r3, [r7, #4] + 803975c: 4a14 ldr r2, [pc, #80] ; (80397b0 ) + 803975e: 4293 cmp r3, r2 + 8039760: d109 bne.n 8039776 { /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS5; - 8039722: 697b ldr r3, [r7, #20] - 8039724: f423 3380 bic.w r3, r3, #65536 ; 0x10000 - 8039728: 617b str r3, [r7, #20] + 8039762: 697b ldr r3, [r7, #20] + 8039764: f423 3380 bic.w r3, r3, #65536 ; 0x10000 + 8039768: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 8U); - 803972a: 683b ldr r3, [r7, #0] - 803972c: 695b ldr r3, [r3, #20] - 803972e: 021b lsls r3, r3, #8 - 8039730: 697a ldr r2, [r7, #20] - 8039732: 4313 orrs r3, r2 - 8039734: 617b str r3, [r7, #20] + 803976a: 683b ldr r3, [r7, #0] + 803976c: 695b ldr r3, [r3, #20] + 803976e: 021b lsls r3, r3, #8 + 8039770: 697a ldr r2, [r7, #20] + 8039772: 4313 orrs r3, r2 + 8039774: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8039736: 687b ldr r3, [r7, #4] - 8039738: 697a ldr r2, [r7, #20] - 803973a: 605a str r2, [r3, #4] + 8039776: 687b ldr r3, [r7, #4] + 8039778: 697a ldr r2, [r7, #20] + 803977a: 605a str r2, [r3, #4] /* Write to TIMx CCMR3 */ TIMx->CCMR3 = tmpccmrx; - 803973c: 687b ldr r3, [r7, #4] - 803973e: 68fa ldr r2, [r7, #12] - 8039740: 655a str r2, [r3, #84] ; 0x54 + 803977c: 687b ldr r3, [r7, #4] + 803977e: 68fa ldr r2, [r7, #12] + 8039780: 655a str r2, [r3, #84] ; 0x54 /* Set the Capture Compare Register value */ TIMx->CCR5 = OC_Config->Pulse; - 8039742: 683b ldr r3, [r7, #0] - 8039744: 685a ldr r2, [r3, #4] - 8039746: 687b ldr r3, [r7, #4] - 8039748: 659a str r2, [r3, #88] ; 0x58 + 8039782: 683b ldr r3, [r7, #0] + 8039784: 685a ldr r2, [r3, #4] + 8039786: 687b ldr r3, [r7, #4] + 8039788: 659a str r2, [r3, #88] ; 0x58 /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 803974a: 687b ldr r3, [r7, #4] - 803974c: 693a ldr r2, [r7, #16] - 803974e: 621a str r2, [r3, #32] -} - 8039750: bf00 nop - 8039752: 371c adds r7, #28 - 8039754: 46bd mov sp, r7 - 8039756: f85d 7b04 ldr.w r7, [sp], #4 - 803975a: 4770 bx lr - 803975c: fffeff8f .word 0xfffeff8f - 8039760: 40010000 .word 0x40010000 - 8039764: 40010400 .word 0x40010400 - 8039768: 40014000 .word 0x40014000 - 803976c: 40014400 .word 0x40014400 - 8039770: 40014800 .word 0x40014800 - -08039774 : + 803978a: 687b ldr r3, [r7, #4] + 803978c: 693a ldr r2, [r7, #16] + 803978e: 621a str r2, [r3, #32] +} + 8039790: bf00 nop + 8039792: 371c adds r7, #28 + 8039794: 46bd mov sp, r7 + 8039796: f85d 7b04 ldr.w r7, [sp], #4 + 803979a: 4770 bx lr + 803979c: fffeff8f .word 0xfffeff8f + 80397a0: 40010000 .word 0x40010000 + 80397a4: 40010400 .word 0x40010400 + 80397a8: 40014000 .word 0x40014000 + 80397ac: 40014400 .word 0x40014400 + 80397b0: 40014800 .word 0x40014800 + +080397b4 : * @param OC_Config The output configuration structure * @retval None */ static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config) { - 8039774: b480 push {r7} - 8039776: b087 sub sp, #28 - 8039778: af00 add r7, sp, #0 - 803977a: 6078 str r0, [r7, #4] - 803977c: 6039 str r1, [r7, #0] + 80397b4: b480 push {r7} + 80397b6: b087 sub sp, #28 + 80397b8: af00 add r7, sp, #0 + 80397ba: 6078 str r0, [r7, #4] + 80397bc: 6039 str r1, [r7, #0] uint32_t tmpccmrx; uint32_t tmpccer; uint32_t tmpcr2; /* Disable the output: Reset the CCxE Bit */ TIMx->CCER &= ~TIM_CCER_CC6E; - 803977e: 687b ldr r3, [r7, #4] - 8039780: 6a1b ldr r3, [r3, #32] - 8039782: f423 1280 bic.w r2, r3, #1048576 ; 0x100000 - 8039786: 687b ldr r3, [r7, #4] - 8039788: 621a str r2, [r3, #32] + 80397be: 687b ldr r3, [r7, #4] + 80397c0: 6a1b ldr r3, [r3, #32] + 80397c2: f423 1280 bic.w r2, r3, #1048576 ; 0x100000 + 80397c6: 687b ldr r3, [r7, #4] + 80397c8: 621a str r2, [r3, #32] /* Get the TIMx CCER register value */ tmpccer = TIMx->CCER; - 803978a: 687b ldr r3, [r7, #4] - 803978c: 6a1b ldr r3, [r3, #32] - 803978e: 613b str r3, [r7, #16] + 80397ca: 687b ldr r3, [r7, #4] + 80397cc: 6a1b ldr r3, [r3, #32] + 80397ce: 613b str r3, [r7, #16] /* Get the TIMx CR2 register value */ tmpcr2 = TIMx->CR2; - 8039790: 687b ldr r3, [r7, #4] - 8039792: 685b ldr r3, [r3, #4] - 8039794: 617b str r3, [r7, #20] + 80397d0: 687b ldr r3, [r7, #4] + 80397d2: 685b ldr r3, [r3, #4] + 80397d4: 617b str r3, [r7, #20] /* Get the TIMx CCMR1 register value */ tmpccmrx = TIMx->CCMR3; - 8039796: 687b ldr r3, [r7, #4] - 8039798: 6d5b ldr r3, [r3, #84] ; 0x54 - 803979a: 60fb str r3, [r7, #12] + 80397d6: 687b ldr r3, [r7, #4] + 80397d8: 6d5b ldr r3, [r3, #84] ; 0x54 + 80397da: 60fb str r3, [r7, #12] /* Reset the Output Compare Mode Bits */ tmpccmrx &= ~(TIM_CCMR3_OC6M); - 803979c: 68fa ldr r2, [r7, #12] - 803979e: 4b22 ldr r3, [pc, #136] ; (8039828 ) - 80397a0: 4013 ands r3, r2 - 80397a2: 60fb str r3, [r7, #12] + 80397dc: 68fa ldr r2, [r7, #12] + 80397de: 4b22 ldr r3, [pc, #136] ; (8039868 ) + 80397e0: 4013 ands r3, r2 + 80397e2: 60fb str r3, [r7, #12] /* Select the Output Compare Mode */ tmpccmrx |= (OC_Config->OCMode << 8U); - 80397a4: 683b ldr r3, [r7, #0] - 80397a6: 681b ldr r3, [r3, #0] - 80397a8: 021b lsls r3, r3, #8 - 80397aa: 68fa ldr r2, [r7, #12] - 80397ac: 4313 orrs r3, r2 - 80397ae: 60fb str r3, [r7, #12] + 80397e4: 683b ldr r3, [r7, #0] + 80397e6: 681b ldr r3, [r3, #0] + 80397e8: 021b lsls r3, r3, #8 + 80397ea: 68fa ldr r2, [r7, #12] + 80397ec: 4313 orrs r3, r2 + 80397ee: 60fb str r3, [r7, #12] /* Reset the Output Polarity level */ tmpccer &= (uint32_t)~TIM_CCER_CC6P; - 80397b0: 693b ldr r3, [r7, #16] - 80397b2: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 - 80397b6: 613b str r3, [r7, #16] + 80397f0: 693b ldr r3, [r7, #16] + 80397f2: f423 1300 bic.w r3, r3, #2097152 ; 0x200000 + 80397f6: 613b str r3, [r7, #16] /* Set the Output Compare Polarity */ tmpccer |= (OC_Config->OCPolarity << 20U); - 80397b8: 683b ldr r3, [r7, #0] - 80397ba: 689b ldr r3, [r3, #8] - 80397bc: 051b lsls r3, r3, #20 - 80397be: 693a ldr r2, [r7, #16] - 80397c0: 4313 orrs r3, r2 - 80397c2: 613b str r3, [r7, #16] + 80397f8: 683b ldr r3, [r7, #0] + 80397fa: 689b ldr r3, [r3, #8] + 80397fc: 051b lsls r3, r3, #20 + 80397fe: 693a ldr r2, [r7, #16] + 8039800: 4313 orrs r3, r2 + 8039802: 613b str r3, [r7, #16] if (IS_TIM_BREAK_INSTANCE(TIMx)) - 80397c4: 687b ldr r3, [r7, #4] - 80397c6: 4a19 ldr r2, [pc, #100] ; (803982c ) - 80397c8: 4293 cmp r3, r2 - 80397ca: d00f beq.n 80397ec - 80397cc: 687b ldr r3, [r7, #4] - 80397ce: 4a18 ldr r2, [pc, #96] ; (8039830 ) - 80397d0: 4293 cmp r3, r2 - 80397d2: d00b beq.n 80397ec - 80397d4: 687b ldr r3, [r7, #4] - 80397d6: 4a17 ldr r2, [pc, #92] ; (8039834 ) - 80397d8: 4293 cmp r3, r2 - 80397da: d007 beq.n 80397ec - 80397dc: 687b ldr r3, [r7, #4] - 80397de: 4a16 ldr r2, [pc, #88] ; (8039838 ) - 80397e0: 4293 cmp r3, r2 - 80397e2: d003 beq.n 80397ec - 80397e4: 687b ldr r3, [r7, #4] - 80397e6: 4a15 ldr r2, [pc, #84] ; (803983c ) - 80397e8: 4293 cmp r3, r2 - 80397ea: d109 bne.n 8039800 + 8039804: 687b ldr r3, [r7, #4] + 8039806: 4a19 ldr r2, [pc, #100] ; (803986c ) + 8039808: 4293 cmp r3, r2 + 803980a: d00f beq.n 803982c + 803980c: 687b ldr r3, [r7, #4] + 803980e: 4a18 ldr r2, [pc, #96] ; (8039870 ) + 8039810: 4293 cmp r3, r2 + 8039812: d00b beq.n 803982c + 8039814: 687b ldr r3, [r7, #4] + 8039816: 4a17 ldr r2, [pc, #92] ; (8039874 ) + 8039818: 4293 cmp r3, r2 + 803981a: d007 beq.n 803982c + 803981c: 687b ldr r3, [r7, #4] + 803981e: 4a16 ldr r2, [pc, #88] ; (8039878 ) + 8039820: 4293 cmp r3, r2 + 8039822: d003 beq.n 803982c + 8039824: 687b ldr r3, [r7, #4] + 8039826: 4a15 ldr r2, [pc, #84] ; (803987c ) + 8039828: 4293 cmp r3, r2 + 803982a: d109 bne.n 8039840 { /* Reset the Output Compare IDLE State */ tmpcr2 &= ~TIM_CR2_OIS6; - 80397ec: 697b ldr r3, [r7, #20] - 80397ee: f423 2380 bic.w r3, r3, #262144 ; 0x40000 - 80397f2: 617b str r3, [r7, #20] + 803982c: 697b ldr r3, [r7, #20] + 803982e: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 8039832: 617b str r3, [r7, #20] /* Set the Output Idle state */ tmpcr2 |= (OC_Config->OCIdleState << 10U); - 80397f4: 683b ldr r3, [r7, #0] - 80397f6: 695b ldr r3, [r3, #20] - 80397f8: 029b lsls r3, r3, #10 - 80397fa: 697a ldr r2, [r7, #20] - 80397fc: 4313 orrs r3, r2 - 80397fe: 617b str r3, [r7, #20] + 8039834: 683b ldr r3, [r7, #0] + 8039836: 695b ldr r3, [r3, #20] + 8039838: 029b lsls r3, r3, #10 + 803983a: 697a ldr r2, [r7, #20] + 803983c: 4313 orrs r3, r2 + 803983e: 617b str r3, [r7, #20] } /* Write to TIMx CR2 */ TIMx->CR2 = tmpcr2; - 8039800: 687b ldr r3, [r7, #4] - 8039802: 697a ldr r2, [r7, #20] - 8039804: 605a str r2, [r3, #4] + 8039840: 687b ldr r3, [r7, #4] + 8039842: 697a ldr r2, [r7, #20] + 8039844: 605a str r2, [r3, #4] /* Write to TIMx CCMR3 */ TIMx->CCMR3 = tmpccmrx; - 8039806: 687b ldr r3, [r7, #4] - 8039808: 68fa ldr r2, [r7, #12] - 803980a: 655a str r2, [r3, #84] ; 0x54 + 8039846: 687b ldr r3, [r7, #4] + 8039848: 68fa ldr r2, [r7, #12] + 803984a: 655a str r2, [r3, #84] ; 0x54 /* Set the Capture Compare Register value */ TIMx->CCR6 = OC_Config->Pulse; - 803980c: 683b ldr r3, [r7, #0] - 803980e: 685a ldr r2, [r3, #4] - 8039810: 687b ldr r3, [r7, #4] - 8039812: 65da str r2, [r3, #92] ; 0x5c + 803984c: 683b ldr r3, [r7, #0] + 803984e: 685a ldr r2, [r3, #4] + 8039850: 687b ldr r3, [r7, #4] + 8039852: 65da str r2, [r3, #92] ; 0x5c /* Write to TIMx CCER */ TIMx->CCER = tmpccer; - 8039814: 687b ldr r3, [r7, #4] - 8039816: 693a ldr r2, [r7, #16] - 8039818: 621a str r2, [r3, #32] -} - 803981a: bf00 nop - 803981c: 371c adds r7, #28 - 803981e: 46bd mov sp, r7 - 8039820: f85d 7b04 ldr.w r7, [sp], #4 - 8039824: 4770 bx lr - 8039826: bf00 nop - 8039828: feff8fff .word 0xfeff8fff - 803982c: 40010000 .word 0x40010000 - 8039830: 40010400 .word 0x40010400 - 8039834: 40014000 .word 0x40014000 - 8039838: 40014400 .word 0x40014400 - 803983c: 40014800 .word 0x40014800 - -08039840 : + 8039854: 687b ldr r3, [r7, #4] + 8039856: 693a ldr r2, [r7, #16] + 8039858: 621a str r2, [r3, #32] +} + 803985a: bf00 nop + 803985c: 371c adds r7, #28 + 803985e: 46bd mov sp, r7 + 8039860: f85d 7b04 ldr.w r7, [sp], #4 + 8039864: 4770 bx lr + 8039866: bf00 nop + 8039868: feff8fff .word 0xfeff8fff + 803986c: 40010000 .word 0x40010000 + 8039870: 40010400 .word 0x40010400 + 8039874: 40014000 .word 0x40014000 + 8039878: 40014400 .word 0x40014400 + 803987c: 40014800 .word 0x40014800 + +08039880 : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI1_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 8039840: b480 push {r7} - 8039842: b087 sub sp, #28 - 8039844: af00 add r7, sp, #0 - 8039846: 60f8 str r0, [r7, #12] - 8039848: 60b9 str r1, [r7, #8] - 803984a: 607a str r2, [r7, #4] + 8039880: b480 push {r7} + 8039882: b087 sub sp, #28 + 8039884: af00 add r7, sp, #0 + 8039886: 60f8 str r0, [r7, #12] + 8039888: 60b9 str r1, [r7, #8] + 803988a: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 1: Reset the CC1E Bit */ tmpccer = TIMx->CCER; - 803984c: 68fb ldr r3, [r7, #12] - 803984e: 6a1b ldr r3, [r3, #32] - 8039850: 617b str r3, [r7, #20] + 803988c: 68fb ldr r3, [r7, #12] + 803988e: 6a1b ldr r3, [r3, #32] + 8039890: 617b str r3, [r7, #20] TIMx->CCER &= ~TIM_CCER_CC1E; - 8039852: 68fb ldr r3, [r7, #12] - 8039854: 6a1b ldr r3, [r3, #32] - 8039856: f023 0201 bic.w r2, r3, #1 - 803985a: 68fb ldr r3, [r7, #12] - 803985c: 621a str r2, [r3, #32] + 8039892: 68fb ldr r3, [r7, #12] + 8039894: 6a1b ldr r3, [r3, #32] + 8039896: f023 0201 bic.w r2, r3, #1 + 803989a: 68fb ldr r3, [r7, #12] + 803989c: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 803985e: 68fb ldr r3, [r7, #12] - 8039860: 699b ldr r3, [r3, #24] - 8039862: 613b str r3, [r7, #16] + 803989e: 68fb ldr r3, [r7, #12] + 80398a0: 699b ldr r3, [r3, #24] + 80398a2: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC1F; - 8039864: 693b ldr r3, [r7, #16] - 8039866: f023 03f0 bic.w r3, r3, #240 ; 0xf0 - 803986a: 613b str r3, [r7, #16] + 80398a4: 693b ldr r3, [r7, #16] + 80398a6: f023 03f0 bic.w r3, r3, #240 ; 0xf0 + 80398aa: 613b str r3, [r7, #16] tmpccmr1 |= (TIM_ICFilter << 4U); - 803986c: 687b ldr r3, [r7, #4] - 803986e: 011b lsls r3, r3, #4 - 8039870: 693a ldr r2, [r7, #16] - 8039872: 4313 orrs r3, r2 - 8039874: 613b str r3, [r7, #16] + 80398ac: 687b ldr r3, [r7, #4] + 80398ae: 011b lsls r3, r3, #4 + 80398b0: 693a ldr r2, [r7, #16] + 80398b2: 4313 orrs r3, r2 + 80398b4: 613b str r3, [r7, #16] /* Select the Polarity and set the CC1E Bit */ tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP); - 8039876: 697b ldr r3, [r7, #20] - 8039878: f023 030a bic.w r3, r3, #10 - 803987c: 617b str r3, [r7, #20] + 80398b6: 697b ldr r3, [r7, #20] + 80398b8: f023 030a bic.w r3, r3, #10 + 80398bc: 617b str r3, [r7, #20] tmpccer |= TIM_ICPolarity; - 803987e: 697a ldr r2, [r7, #20] - 8039880: 68bb ldr r3, [r7, #8] - 8039882: 4313 orrs r3, r2 - 8039884: 617b str r3, [r7, #20] + 80398be: 697a ldr r2, [r7, #20] + 80398c0: 68bb ldr r3, [r7, #8] + 80398c2: 4313 orrs r3, r2 + 80398c4: 617b str r3, [r7, #20] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1; - 8039886: 68fb ldr r3, [r7, #12] - 8039888: 693a ldr r2, [r7, #16] - 803988a: 619a str r2, [r3, #24] + 80398c6: 68fb ldr r3, [r7, #12] + 80398c8: 693a ldr r2, [r7, #16] + 80398ca: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 803988c: 68fb ldr r3, [r7, #12] - 803988e: 697a ldr r2, [r7, #20] - 8039890: 621a str r2, [r3, #32] + 80398cc: 68fb ldr r3, [r7, #12] + 80398ce: 697a ldr r2, [r7, #20] + 80398d0: 621a str r2, [r3, #32] } - 8039892: bf00 nop - 8039894: 371c adds r7, #28 - 8039896: 46bd mov sp, r7 - 8039898: f85d 7b04 ldr.w r7, [sp], #4 - 803989c: 4770 bx lr + 80398d2: bf00 nop + 80398d4: 371c adds r7, #28 + 80398d6: 46bd mov sp, r7 + 80398d8: f85d 7b04 ldr.w r7, [sp], #4 + 80398dc: 4770 bx lr -0803989e : +080398de : * @param TIM_ICFilter Specifies the Input Capture Filter. * This parameter must be a value between 0x00 and 0x0F. * @retval None */ static void TIM_TI2_ConfigInputStage(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICFilter) { - 803989e: b480 push {r7} - 80398a0: b087 sub sp, #28 - 80398a2: af00 add r7, sp, #0 - 80398a4: 60f8 str r0, [r7, #12] - 80398a6: 60b9 str r1, [r7, #8] - 80398a8: 607a str r2, [r7, #4] + 80398de: b480 push {r7} + 80398e0: b087 sub sp, #28 + 80398e2: af00 add r7, sp, #0 + 80398e4: 60f8 str r0, [r7, #12] + 80398e6: 60b9 str r1, [r7, #8] + 80398e8: 607a str r2, [r7, #4] uint32_t tmpccmr1; uint32_t tmpccer; /* Disable the Channel 2: Reset the CC2E Bit */ TIMx->CCER &= ~TIM_CCER_CC2E; - 80398aa: 68fb ldr r3, [r7, #12] - 80398ac: 6a1b ldr r3, [r3, #32] - 80398ae: f023 0210 bic.w r2, r3, #16 - 80398b2: 68fb ldr r3, [r7, #12] - 80398b4: 621a str r2, [r3, #32] + 80398ea: 68fb ldr r3, [r7, #12] + 80398ec: 6a1b ldr r3, [r3, #32] + 80398ee: f023 0210 bic.w r2, r3, #16 + 80398f2: 68fb ldr r3, [r7, #12] + 80398f4: 621a str r2, [r3, #32] tmpccmr1 = TIMx->CCMR1; - 80398b6: 68fb ldr r3, [r7, #12] - 80398b8: 699b ldr r3, [r3, #24] - 80398ba: 617b str r3, [r7, #20] + 80398f6: 68fb ldr r3, [r7, #12] + 80398f8: 699b ldr r3, [r3, #24] + 80398fa: 617b str r3, [r7, #20] tmpccer = TIMx->CCER; - 80398bc: 68fb ldr r3, [r7, #12] - 80398be: 6a1b ldr r3, [r3, #32] - 80398c0: 613b str r3, [r7, #16] + 80398fc: 68fb ldr r3, [r7, #12] + 80398fe: 6a1b ldr r3, [r3, #32] + 8039900: 613b str r3, [r7, #16] /* Set the filter */ tmpccmr1 &= ~TIM_CCMR1_IC2F; - 80398c2: 697b ldr r3, [r7, #20] - 80398c4: f423 4370 bic.w r3, r3, #61440 ; 0xf000 - 80398c8: 617b str r3, [r7, #20] + 8039902: 697b ldr r3, [r7, #20] + 8039904: f423 4370 bic.w r3, r3, #61440 ; 0xf000 + 8039908: 617b str r3, [r7, #20] tmpccmr1 |= (TIM_ICFilter << 12U); - 80398ca: 687b ldr r3, [r7, #4] - 80398cc: 031b lsls r3, r3, #12 - 80398ce: 697a ldr r2, [r7, #20] - 80398d0: 4313 orrs r3, r2 - 80398d2: 617b str r3, [r7, #20] + 803990a: 687b ldr r3, [r7, #4] + 803990c: 031b lsls r3, r3, #12 + 803990e: 697a ldr r2, [r7, #20] + 8039910: 4313 orrs r3, r2 + 8039912: 617b str r3, [r7, #20] /* Select the Polarity and set the CC2E Bit */ tmpccer &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP); - 80398d4: 693b ldr r3, [r7, #16] - 80398d6: f023 03a0 bic.w r3, r3, #160 ; 0xa0 - 80398da: 613b str r3, [r7, #16] + 8039914: 693b ldr r3, [r7, #16] + 8039916: f023 03a0 bic.w r3, r3, #160 ; 0xa0 + 803991a: 613b str r3, [r7, #16] tmpccer |= (TIM_ICPolarity << 4U); - 80398dc: 68bb ldr r3, [r7, #8] - 80398de: 011b lsls r3, r3, #4 - 80398e0: 693a ldr r2, [r7, #16] - 80398e2: 4313 orrs r3, r2 - 80398e4: 613b str r3, [r7, #16] + 803991c: 68bb ldr r3, [r7, #8] + 803991e: 011b lsls r3, r3, #4 + 8039920: 693a ldr r2, [r7, #16] + 8039922: 4313 orrs r3, r2 + 8039924: 613b str r3, [r7, #16] /* Write to TIMx CCMR1 and CCER registers */ TIMx->CCMR1 = tmpccmr1 ; - 80398e6: 68fb ldr r3, [r7, #12] - 80398e8: 697a ldr r2, [r7, #20] - 80398ea: 619a str r2, [r3, #24] + 8039926: 68fb ldr r3, [r7, #12] + 8039928: 697a ldr r2, [r7, #20] + 803992a: 619a str r2, [r3, #24] TIMx->CCER = tmpccer; - 80398ec: 68fb ldr r3, [r7, #12] - 80398ee: 693a ldr r2, [r7, #16] - 80398f0: 621a str r2, [r3, #32] -} - 80398f2: bf00 nop - 80398f4: 371c adds r7, #28 - 80398f6: 46bd mov sp, r7 - 80398f8: f85d 7b04 ldr.w r7, [sp], #4 - 80398fc: 4770 bx lr + 803992c: 68fb ldr r3, [r7, #12] + 803992e: 693a ldr r2, [r7, #16] + 8039930: 621a str r2, [r3, #32] +} + 8039932: bf00 nop + 8039934: 371c adds r7, #28 + 8039936: 46bd mov sp, r7 + 8039938: f85d 7b04 ldr.w r7, [sp], #4 + 803993c: 4770 bx lr ... -08039900 : +08039940 : * (*) Value not defined in all devices. * * @retval None */ static void TIM_ITRx_SetConfig(TIM_TypeDef *TIMx, uint32_t InputTriggerSource) { - 8039900: b480 push {r7} - 8039902: b085 sub sp, #20 - 8039904: af00 add r7, sp, #0 - 8039906: 6078 str r0, [r7, #4] - 8039908: 6039 str r1, [r7, #0] + 8039940: b480 push {r7} + 8039942: b085 sub sp, #20 + 8039944: af00 add r7, sp, #0 + 8039946: 6078 str r0, [r7, #4] + 8039948: 6039 str r1, [r7, #0] uint32_t tmpsmcr; /* Get the TIMx SMCR register value */ tmpsmcr = TIMx->SMCR; - 803990a: 687b ldr r3, [r7, #4] - 803990c: 689b ldr r3, [r3, #8] - 803990e: 60fb str r3, [r7, #12] + 803994a: 687b ldr r3, [r7, #4] + 803994c: 689b ldr r3, [r3, #8] + 803994e: 60fb str r3, [r7, #12] /* Reset the TS Bits */ tmpsmcr &= ~TIM_SMCR_TS; - 8039910: 68fa ldr r2, [r7, #12] - 8039912: 4b09 ldr r3, [pc, #36] ; (8039938 ) - 8039914: 4013 ands r3, r2 - 8039916: 60fb str r3, [r7, #12] + 8039950: 68fa ldr r2, [r7, #12] + 8039952: 4b09 ldr r3, [pc, #36] ; (8039978 ) + 8039954: 4013 ands r3, r2 + 8039956: 60fb str r3, [r7, #12] /* Set the Input Trigger source and the slave mode*/ tmpsmcr |= (InputTriggerSource | TIM_SLAVEMODE_EXTERNAL1); - 8039918: 683a ldr r2, [r7, #0] - 803991a: 68fb ldr r3, [r7, #12] - 803991c: 4313 orrs r3, r2 - 803991e: f043 0307 orr.w r3, r3, #7 - 8039922: 60fb str r3, [r7, #12] + 8039958: 683a ldr r2, [r7, #0] + 803995a: 68fb ldr r3, [r7, #12] + 803995c: 4313 orrs r3, r2 + 803995e: f043 0307 orr.w r3, r3, #7 + 8039962: 60fb str r3, [r7, #12] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 8039924: 687b ldr r3, [r7, #4] - 8039926: 68fa ldr r2, [r7, #12] - 8039928: 609a str r2, [r3, #8] -} - 803992a: bf00 nop - 803992c: 3714 adds r7, #20 - 803992e: 46bd mov sp, r7 - 8039930: f85d 7b04 ldr.w r7, [sp], #4 - 8039934: 4770 bx lr - 8039936: bf00 nop - 8039938: ffcfff8f .word 0xffcfff8f - -0803993c : + 8039964: 687b ldr r3, [r7, #4] + 8039966: 68fa ldr r2, [r7, #12] + 8039968: 609a str r2, [r3, #8] +} + 803996a: bf00 nop + 803996c: 3714 adds r7, #20 + 803996e: 46bd mov sp, r7 + 8039970: f85d 7b04 ldr.w r7, [sp], #4 + 8039974: 4770 bx lr + 8039976: bf00 nop + 8039978: ffcfff8f .word 0xffcfff8f + +0803997c : * This parameter must be a value between 0x00 and 0x0F * @retval None */ void TIM_ETR_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ExtTRGPrescaler, uint32_t TIM_ExtTRGPolarity, uint32_t ExtTRGFilter) { - 803993c: b480 push {r7} - 803993e: b087 sub sp, #28 - 8039940: af00 add r7, sp, #0 - 8039942: 60f8 str r0, [r7, #12] - 8039944: 60b9 str r1, [r7, #8] - 8039946: 607a str r2, [r7, #4] - 8039948: 603b str r3, [r7, #0] + 803997c: b480 push {r7} + 803997e: b087 sub sp, #28 + 8039980: af00 add r7, sp, #0 + 8039982: 60f8 str r0, [r7, #12] + 8039984: 60b9 str r1, [r7, #8] + 8039986: 607a str r2, [r7, #4] + 8039988: 603b str r3, [r7, #0] uint32_t tmpsmcr; tmpsmcr = TIMx->SMCR; - 803994a: 68fb ldr r3, [r7, #12] - 803994c: 689b ldr r3, [r3, #8] - 803994e: 617b str r3, [r7, #20] + 803998a: 68fb ldr r3, [r7, #12] + 803998c: 689b ldr r3, [r3, #8] + 803998e: 617b str r3, [r7, #20] /* Reset the ETR Bits */ tmpsmcr &= ~(TIM_SMCR_ETF | TIM_SMCR_ETPS | TIM_SMCR_ECE | TIM_SMCR_ETP); - 8039950: 697b ldr r3, [r7, #20] - 8039952: f423 437f bic.w r3, r3, #65280 ; 0xff00 - 8039956: 617b str r3, [r7, #20] + 8039990: 697b ldr r3, [r7, #20] + 8039992: f423 437f bic.w r3, r3, #65280 ; 0xff00 + 8039996: 617b str r3, [r7, #20] /* Set the Prescaler, the Filter value and the Polarity */ tmpsmcr |= (uint32_t)(TIM_ExtTRGPrescaler | (TIM_ExtTRGPolarity | (ExtTRGFilter << 8U))); - 8039958: 683b ldr r3, [r7, #0] - 803995a: 021a lsls r2, r3, #8 - 803995c: 687b ldr r3, [r7, #4] - 803995e: 431a orrs r2, r3 - 8039960: 68bb ldr r3, [r7, #8] - 8039962: 4313 orrs r3, r2 - 8039964: 697a ldr r2, [r7, #20] - 8039966: 4313 orrs r3, r2 - 8039968: 617b str r3, [r7, #20] + 8039998: 683b ldr r3, [r7, #0] + 803999a: 021a lsls r2, r3, #8 + 803999c: 687b ldr r3, [r7, #4] + 803999e: 431a orrs r2, r3 + 80399a0: 68bb ldr r3, [r7, #8] + 80399a2: 4313 orrs r3, r2 + 80399a4: 697a ldr r2, [r7, #20] + 80399a6: 4313 orrs r3, r2 + 80399a8: 617b str r3, [r7, #20] /* Write to TIMx SMCR */ TIMx->SMCR = tmpsmcr; - 803996a: 68fb ldr r3, [r7, #12] - 803996c: 697a ldr r2, [r7, #20] - 803996e: 609a str r2, [r3, #8] + 80399aa: 68fb ldr r3, [r7, #12] + 80399ac: 697a ldr r2, [r7, #20] + 80399ae: 609a str r2, [r3, #8] } - 8039970: bf00 nop - 8039972: 371c adds r7, #28 - 8039974: 46bd mov sp, r7 - 8039976: f85d 7b04 ldr.w r7, [sp], #4 - 803997a: 4770 bx lr + 80399b0: bf00 nop + 80399b2: 371c adds r7, #28 + 80399b4: 46bd mov sp, r7 + 80399b6: f85d 7b04 ldr.w r7, [sp], #4 + 80399ba: 4770 bx lr -0803997c : +080399bc : * @param ChannelState specifies the TIM Channel CCxE bit new state. * This parameter can be: TIM_CCx_ENABLE or TIM_CCx_DISABLE. * @retval None */ void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ChannelState) { - 803997c: b480 push {r7} - 803997e: b087 sub sp, #28 - 8039980: af00 add r7, sp, #0 - 8039982: 60f8 str r0, [r7, #12] - 8039984: 60b9 str r1, [r7, #8] - 8039986: 607a str r2, [r7, #4] + 80399bc: b480 push {r7} + 80399be: b087 sub sp, #28 + 80399c0: af00 add r7, sp, #0 + 80399c2: 60f8 str r0, [r7, #12] + 80399c4: 60b9 str r1, [r7, #8] + 80399c6: 607a str r2, [r7, #4] /* Check the parameters */ assert_param(IS_TIM_CC1_INSTANCE(TIMx)); assert_param(IS_TIM_CHANNELS(Channel)); tmp = TIM_CCER_CC1E << (Channel & 0x1FU); /* 0x1FU = 31 bits max shift */ - 8039988: 68bb ldr r3, [r7, #8] - 803998a: f003 031f and.w r3, r3, #31 - 803998e: 2201 movs r2, #1 - 8039990: fa02 f303 lsl.w r3, r2, r3 - 8039994: 617b str r3, [r7, #20] + 80399c8: 68bb ldr r3, [r7, #8] + 80399ca: f003 031f and.w r3, r3, #31 + 80399ce: 2201 movs r2, #1 + 80399d0: fa02 f303 lsl.w r3, r2, r3 + 80399d4: 617b str r3, [r7, #20] /* Reset the CCxE Bit */ TIMx->CCER &= ~tmp; - 8039996: 68fb ldr r3, [r7, #12] - 8039998: 6a1a ldr r2, [r3, #32] - 803999a: 697b ldr r3, [r7, #20] - 803999c: 43db mvns r3, r3 - 803999e: 401a ands r2, r3 - 80399a0: 68fb ldr r3, [r7, #12] - 80399a2: 621a str r2, [r3, #32] + 80399d6: 68fb ldr r3, [r7, #12] + 80399d8: 6a1a ldr r2, [r3, #32] + 80399da: 697b ldr r3, [r7, #20] + 80399dc: 43db mvns r3, r3 + 80399de: 401a ands r2, r3 + 80399e0: 68fb ldr r3, [r7, #12] + 80399e2: 621a str r2, [r3, #32] /* Set or reset the CCxE Bit */ TIMx->CCER |= (uint32_t)(ChannelState << (Channel & 0x1FU)); /* 0x1FU = 31 bits max shift */ - 80399a4: 68fb ldr r3, [r7, #12] - 80399a6: 6a1a ldr r2, [r3, #32] - 80399a8: 68bb ldr r3, [r7, #8] - 80399aa: f003 031f and.w r3, r3, #31 - 80399ae: 6879 ldr r1, [r7, #4] - 80399b0: fa01 f303 lsl.w r3, r1, r3 - 80399b4: 431a orrs r2, r3 - 80399b6: 68fb ldr r3, [r7, #12] - 80399b8: 621a str r2, [r3, #32] -} - 80399ba: bf00 nop - 80399bc: 371c adds r7, #28 - 80399be: 46bd mov sp, r7 - 80399c0: f85d 7b04 ldr.w r7, [sp], #4 - 80399c4: 4770 bx lr + 80399e4: 68fb ldr r3, [r7, #12] + 80399e6: 6a1a ldr r2, [r3, #32] + 80399e8: 68bb ldr r3, [r7, #8] + 80399ea: f003 031f and.w r3, r3, #31 + 80399ee: 6879 ldr r1, [r7, #4] + 80399f0: fa01 f303 lsl.w r3, r1, r3 + 80399f4: 431a orrs r2, r3 + 80399f6: 68fb ldr r3, [r7, #12] + 80399f8: 621a str r2, [r3, #32] +} + 80399fa: bf00 nop + 80399fc: 371c adds r7, #28 + 80399fe: 46bd mov sp, r7 + 8039a00: f85d 7b04 ldr.w r7, [sp], #4 + 8039a04: 4770 bx lr ... -080399c8 : +08039a08 : * mode. * @retval HAL status */ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig) { - 80399c8: b480 push {r7} - 80399ca: b085 sub sp, #20 - 80399cc: af00 add r7, sp, #0 - 80399ce: 6078 str r0, [r7, #4] - 80399d0: 6039 str r1, [r7, #0] + 8039a08: b480 push {r7} + 8039a0a: b085 sub sp, #20 + 8039a0c: af00 add r7, sp, #0 + 8039a0e: 6078 str r0, [r7, #4] + 8039a10: 6039 str r1, [r7, #0] assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance)); assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger)); assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode)); /* Check input state */ __HAL_LOCK(htim); - 80399d2: 687b ldr r3, [r7, #4] - 80399d4: f893 303c ldrb.w r3, [r3, #60] ; 0x3c - 80399d8: 2b01 cmp r3, #1 - 80399da: d101 bne.n 80399e0 - 80399dc: 2302 movs r3, #2 - 80399de: e06d b.n 8039abc - 80399e0: 687b ldr r3, [r7, #4] - 80399e2: 2201 movs r2, #1 - 80399e4: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8039a12: 687b ldr r3, [r7, #4] + 8039a14: f893 303c ldrb.w r3, [r3, #60] ; 0x3c + 8039a18: 2b01 cmp r3, #1 + 8039a1a: d101 bne.n 8039a20 + 8039a1c: 2302 movs r3, #2 + 8039a1e: e06d b.n 8039afc + 8039a20: 687b ldr r3, [r7, #4] + 8039a22: 2201 movs r2, #1 + 8039a24: f883 203c strb.w r2, [r3, #60] ; 0x3c /* Change the handler state */ htim->State = HAL_TIM_STATE_BUSY; - 80399e8: 687b ldr r3, [r7, #4] - 80399ea: 2202 movs r2, #2 - 80399ec: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8039a28: 687b ldr r3, [r7, #4] + 8039a2a: 2202 movs r2, #2 + 8039a2c: f883 203d strb.w r2, [r3, #61] ; 0x3d /* Get the TIMx CR2 register value */ tmpcr2 = htim->Instance->CR2; - 80399f0: 687b ldr r3, [r7, #4] - 80399f2: 681b ldr r3, [r3, #0] - 80399f4: 685b ldr r3, [r3, #4] - 80399f6: 60fb str r3, [r7, #12] + 8039a30: 687b ldr r3, [r7, #4] + 8039a32: 681b ldr r3, [r3, #0] + 8039a34: 685b ldr r3, [r3, #4] + 8039a36: 60fb str r3, [r7, #12] /* Get the TIMx SMCR register value */ tmpsmcr = htim->Instance->SMCR; - 80399f8: 687b ldr r3, [r7, #4] - 80399fa: 681b ldr r3, [r3, #0] - 80399fc: 689b ldr r3, [r3, #8] - 80399fe: 60bb str r3, [r7, #8] + 8039a38: 687b ldr r3, [r7, #4] + 8039a3a: 681b ldr r3, [r3, #0] + 8039a3c: 689b ldr r3, [r3, #8] + 8039a3e: 60bb str r3, [r7, #8] /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */ if (IS_TIM_TRGO2_INSTANCE(htim->Instance)) - 8039a00: 687b ldr r3, [r7, #4] - 8039a02: 681b ldr r3, [r3, #0] - 8039a04: 4a30 ldr r2, [pc, #192] ; (8039ac8 ) - 8039a06: 4293 cmp r3, r2 - 8039a08: d004 beq.n 8039a14 - 8039a0a: 687b ldr r3, [r7, #4] - 8039a0c: 681b ldr r3, [r3, #0] - 8039a0e: 4a2f ldr r2, [pc, #188] ; (8039acc ) - 8039a10: 4293 cmp r3, r2 - 8039a12: d108 bne.n 8039a26 + 8039a40: 687b ldr r3, [r7, #4] + 8039a42: 681b ldr r3, [r3, #0] + 8039a44: 4a30 ldr r2, [pc, #192] ; (8039b08 ) + 8039a46: 4293 cmp r3, r2 + 8039a48: d004 beq.n 8039a54 + 8039a4a: 687b ldr r3, [r7, #4] + 8039a4c: 681b ldr r3, [r3, #0] + 8039a4e: 4a2f ldr r2, [pc, #188] ; (8039b0c ) + 8039a50: 4293 cmp r3, r2 + 8039a52: d108 bne.n 8039a66 { /* Check the parameters */ assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2)); /* Clear the MMS2 bits */ tmpcr2 &= ~TIM_CR2_MMS2; - 8039a14: 68fb ldr r3, [r7, #12] - 8039a16: f423 0370 bic.w r3, r3, #15728640 ; 0xf00000 - 8039a1a: 60fb str r3, [r7, #12] + 8039a54: 68fb ldr r3, [r7, #12] + 8039a56: f423 0370 bic.w r3, r3, #15728640 ; 0xf00000 + 8039a5a: 60fb str r3, [r7, #12] /* Select the TRGO2 source*/ tmpcr2 |= sMasterConfig->MasterOutputTrigger2; - 8039a1c: 683b ldr r3, [r7, #0] - 8039a1e: 685b ldr r3, [r3, #4] - 8039a20: 68fa ldr r2, [r7, #12] - 8039a22: 4313 orrs r3, r2 - 8039a24: 60fb str r3, [r7, #12] + 8039a5c: 683b ldr r3, [r7, #0] + 8039a5e: 685b ldr r3, [r3, #4] + 8039a60: 68fa ldr r2, [r7, #12] + 8039a62: 4313 orrs r3, r2 + 8039a64: 60fb str r3, [r7, #12] } /* Reset the MMS Bits */ tmpcr2 &= ~TIM_CR2_MMS; - 8039a26: 68fb ldr r3, [r7, #12] - 8039a28: f023 0370 bic.w r3, r3, #112 ; 0x70 - 8039a2c: 60fb str r3, [r7, #12] + 8039a66: 68fb ldr r3, [r7, #12] + 8039a68: f023 0370 bic.w r3, r3, #112 ; 0x70 + 8039a6c: 60fb str r3, [r7, #12] /* Select the TRGO source */ tmpcr2 |= sMasterConfig->MasterOutputTrigger; - 8039a2e: 683b ldr r3, [r7, #0] - 8039a30: 681b ldr r3, [r3, #0] - 8039a32: 68fa ldr r2, [r7, #12] - 8039a34: 4313 orrs r3, r2 - 8039a36: 60fb str r3, [r7, #12] + 8039a6e: 683b ldr r3, [r7, #0] + 8039a70: 681b ldr r3, [r3, #0] + 8039a72: 68fa ldr r2, [r7, #12] + 8039a74: 4313 orrs r3, r2 + 8039a76: 60fb str r3, [r7, #12] /* Update TIMx CR2 */ htim->Instance->CR2 = tmpcr2; - 8039a38: 687b ldr r3, [r7, #4] - 8039a3a: 681b ldr r3, [r3, #0] - 8039a3c: 68fa ldr r2, [r7, #12] - 8039a3e: 605a str r2, [r3, #4] + 8039a78: 687b ldr r3, [r7, #4] + 8039a7a: 681b ldr r3, [r3, #0] + 8039a7c: 68fa ldr r2, [r7, #12] + 8039a7e: 605a str r2, [r3, #4] if (IS_TIM_SLAVE_INSTANCE(htim->Instance)) - 8039a40: 687b ldr r3, [r7, #4] - 8039a42: 681b ldr r3, [r3, #0] - 8039a44: 4a20 ldr r2, [pc, #128] ; (8039ac8 ) - 8039a46: 4293 cmp r3, r2 - 8039a48: d022 beq.n 8039a90 - 8039a4a: 687b ldr r3, [r7, #4] - 8039a4c: 681b ldr r3, [r3, #0] - 8039a4e: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8039a52: d01d beq.n 8039a90 - 8039a54: 687b ldr r3, [r7, #4] - 8039a56: 681b ldr r3, [r3, #0] - 8039a58: 4a1d ldr r2, [pc, #116] ; (8039ad0 ) - 8039a5a: 4293 cmp r3, r2 - 8039a5c: d018 beq.n 8039a90 - 8039a5e: 687b ldr r3, [r7, #4] - 8039a60: 681b ldr r3, [r3, #0] - 8039a62: 4a1c ldr r2, [pc, #112] ; (8039ad4 ) - 8039a64: 4293 cmp r3, r2 - 8039a66: d013 beq.n 8039a90 - 8039a68: 687b ldr r3, [r7, #4] - 8039a6a: 681b ldr r3, [r3, #0] - 8039a6c: 4a1a ldr r2, [pc, #104] ; (8039ad8 ) - 8039a6e: 4293 cmp r3, r2 - 8039a70: d00e beq.n 8039a90 - 8039a72: 687b ldr r3, [r7, #4] - 8039a74: 681b ldr r3, [r3, #0] - 8039a76: 4a15 ldr r2, [pc, #84] ; (8039acc ) - 8039a78: 4293 cmp r3, r2 - 8039a7a: d009 beq.n 8039a90 - 8039a7c: 687b ldr r3, [r7, #4] - 8039a7e: 681b ldr r3, [r3, #0] - 8039a80: 4a16 ldr r2, [pc, #88] ; (8039adc ) - 8039a82: 4293 cmp r3, r2 - 8039a84: d004 beq.n 8039a90 - 8039a86: 687b ldr r3, [r7, #4] - 8039a88: 681b ldr r3, [r3, #0] - 8039a8a: 4a15 ldr r2, [pc, #84] ; (8039ae0 ) - 8039a8c: 4293 cmp r3, r2 - 8039a8e: d10c bne.n 8039aaa + 8039a80: 687b ldr r3, [r7, #4] + 8039a82: 681b ldr r3, [r3, #0] + 8039a84: 4a20 ldr r2, [pc, #128] ; (8039b08 ) + 8039a86: 4293 cmp r3, r2 + 8039a88: d022 beq.n 8039ad0 + 8039a8a: 687b ldr r3, [r7, #4] + 8039a8c: 681b ldr r3, [r3, #0] + 8039a8e: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8039a92: d01d beq.n 8039ad0 + 8039a94: 687b ldr r3, [r7, #4] + 8039a96: 681b ldr r3, [r3, #0] + 8039a98: 4a1d ldr r2, [pc, #116] ; (8039b10 ) + 8039a9a: 4293 cmp r3, r2 + 8039a9c: d018 beq.n 8039ad0 + 8039a9e: 687b ldr r3, [r7, #4] + 8039aa0: 681b ldr r3, [r3, #0] + 8039aa2: 4a1c ldr r2, [pc, #112] ; (8039b14 ) + 8039aa4: 4293 cmp r3, r2 + 8039aa6: d013 beq.n 8039ad0 + 8039aa8: 687b ldr r3, [r7, #4] + 8039aaa: 681b ldr r3, [r3, #0] + 8039aac: 4a1a ldr r2, [pc, #104] ; (8039b18 ) + 8039aae: 4293 cmp r3, r2 + 8039ab0: d00e beq.n 8039ad0 + 8039ab2: 687b ldr r3, [r7, #4] + 8039ab4: 681b ldr r3, [r3, #0] + 8039ab6: 4a15 ldr r2, [pc, #84] ; (8039b0c ) + 8039ab8: 4293 cmp r3, r2 + 8039aba: d009 beq.n 8039ad0 + 8039abc: 687b ldr r3, [r7, #4] + 8039abe: 681b ldr r3, [r3, #0] + 8039ac0: 4a16 ldr r2, [pc, #88] ; (8039b1c ) + 8039ac2: 4293 cmp r3, r2 + 8039ac4: d004 beq.n 8039ad0 + 8039ac6: 687b ldr r3, [r7, #4] + 8039ac8: 681b ldr r3, [r3, #0] + 8039aca: 4a15 ldr r2, [pc, #84] ; (8039b20 ) + 8039acc: 4293 cmp r3, r2 + 8039ace: d10c bne.n 8039aea { /* Reset the MSM Bit */ tmpsmcr &= ~TIM_SMCR_MSM; - 8039a90: 68bb ldr r3, [r7, #8] - 8039a92: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8039a96: 60bb str r3, [r7, #8] + 8039ad0: 68bb ldr r3, [r7, #8] + 8039ad2: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8039ad6: 60bb str r3, [r7, #8] /* Set master mode */ tmpsmcr |= sMasterConfig->MasterSlaveMode; - 8039a98: 683b ldr r3, [r7, #0] - 8039a9a: 689b ldr r3, [r3, #8] - 8039a9c: 68ba ldr r2, [r7, #8] - 8039a9e: 4313 orrs r3, r2 - 8039aa0: 60bb str r3, [r7, #8] + 8039ad8: 683b ldr r3, [r7, #0] + 8039ada: 689b ldr r3, [r3, #8] + 8039adc: 68ba ldr r2, [r7, #8] + 8039ade: 4313 orrs r3, r2 + 8039ae0: 60bb str r3, [r7, #8] /* Update TIMx SMCR */ htim->Instance->SMCR = tmpsmcr; - 8039aa2: 687b ldr r3, [r7, #4] - 8039aa4: 681b ldr r3, [r3, #0] - 8039aa6: 68ba ldr r2, [r7, #8] - 8039aa8: 609a str r2, [r3, #8] + 8039ae2: 687b ldr r3, [r7, #4] + 8039ae4: 681b ldr r3, [r3, #0] + 8039ae6: 68ba ldr r2, [r7, #8] + 8039ae8: 609a str r2, [r3, #8] } /* Change the htim state */ htim->State = HAL_TIM_STATE_READY; - 8039aaa: 687b ldr r3, [r7, #4] - 8039aac: 2201 movs r2, #1 - 8039aae: f883 203d strb.w r2, [r3, #61] ; 0x3d + 8039aea: 687b ldr r3, [r7, #4] + 8039aec: 2201 movs r2, #1 + 8039aee: f883 203d strb.w r2, [r3, #61] ; 0x3d __HAL_UNLOCK(htim); - 8039ab2: 687b ldr r3, [r7, #4] - 8039ab4: 2200 movs r2, #0 - 8039ab6: f883 203c strb.w r2, [r3, #60] ; 0x3c + 8039af2: 687b ldr r3, [r7, #4] + 8039af4: 2200 movs r2, #0 + 8039af6: f883 203c strb.w r2, [r3, #60] ; 0x3c return HAL_OK; - 8039aba: 2300 movs r3, #0 -} - 8039abc: 4618 mov r0, r3 - 8039abe: 3714 adds r7, #20 - 8039ac0: 46bd mov sp, r7 - 8039ac2: f85d 7b04 ldr.w r7, [sp], #4 - 8039ac6: 4770 bx lr - 8039ac8: 40010000 .word 0x40010000 - 8039acc: 40010400 .word 0x40010400 - 8039ad0: 40000400 .word 0x40000400 - 8039ad4: 40000800 .word 0x40000800 - 8039ad8: 40000c00 .word 0x40000c00 - 8039adc: 40001800 .word 0x40001800 - 8039ae0: 40014000 .word 0x40014000 - -08039ae4 : + 8039afa: 2300 movs r3, #0 +} + 8039afc: 4618 mov r0, r3 + 8039afe: 3714 adds r7, #20 + 8039b00: 46bd mov sp, r7 + 8039b02: f85d 7b04 ldr.w r7, [sp], #4 + 8039b06: 4770 bx lr + 8039b08: 40010000 .word 0x40010000 + 8039b0c: 40010400 .word 0x40010400 + 8039b10: 40000400 .word 0x40000400 + 8039b14: 40000800 .word 0x40000800 + 8039b18: 40000c00 .word 0x40000c00 + 8039b1c: 40001800 .word 0x40001800 + 8039b20: 40014000 .word 0x40014000 + +08039b24 : * @brief Hall commutation changed callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_CommutCallback(TIM_HandleTypeDef *htim) { - 8039ae4: b480 push {r7} - 8039ae6: b083 sub sp, #12 - 8039ae8: af00 add r7, sp, #0 - 8039aea: 6078 str r0, [r7, #4] + 8039b24: b480 push {r7} + 8039b26: b083 sub sp, #12 + 8039b28: af00 add r7, sp, #0 + 8039b2a: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_CommutCallback could be implemented in the user file */ } - 8039aec: bf00 nop - 8039aee: 370c adds r7, #12 - 8039af0: 46bd mov sp, r7 - 8039af2: f85d 7b04 ldr.w r7, [sp], #4 - 8039af6: 4770 bx lr + 8039b2c: bf00 nop + 8039b2e: 370c adds r7, #12 + 8039b30: 46bd mov sp, r7 + 8039b32: f85d 7b04 ldr.w r7, [sp], #4 + 8039b36: 4770 bx lr -08039af8 : +08039b38 : * @brief Hall Break detection callback in non-blocking mode * @param htim TIM handle * @retval None */ __weak void HAL_TIMEx_BreakCallback(TIM_HandleTypeDef *htim) { - 8039af8: b480 push {r7} - 8039afa: b083 sub sp, #12 - 8039afc: af00 add r7, sp, #0 - 8039afe: 6078 str r0, [r7, #4] + 8039b38: b480 push {r7} + 8039b3a: b083 sub sp, #12 + 8039b3c: af00 add r7, sp, #0 + 8039b3e: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function should not be modified, when the callback is needed, the HAL_TIMEx_BreakCallback could be implemented in the user file */ } - 8039b00: bf00 nop - 8039b02: 370c adds r7, #12 - 8039b04: 46bd mov sp, r7 - 8039b06: f85d 7b04 ldr.w r7, [sp], #4 - 8039b0a: 4770 bx lr + 8039b40: bf00 nop + 8039b42: 370c adds r7, #12 + 8039b44: 46bd mov sp, r7 + 8039b46: f85d 7b04 ldr.w r7, [sp], #4 + 8039b4a: 4770 bx lr -08039b0c : +08039b4c : * @brief Hall Break2 detection callback in non blocking mode * @param htim: TIM handle * @retval None */ __weak void HAL_TIMEx_Break2Callback(TIM_HandleTypeDef *htim) { - 8039b0c: b480 push {r7} - 8039b0e: b083 sub sp, #12 - 8039b10: af00 add r7, sp, #0 - 8039b12: 6078 str r0, [r7, #4] + 8039b4c: b480 push {r7} + 8039b4e: b083 sub sp, #12 + 8039b50: af00 add r7, sp, #0 + 8039b52: 6078 str r0, [r7, #4] UNUSED(htim); /* NOTE : This function Should not be modified, when the callback is needed, the HAL_TIMEx_Break2Callback could be implemented in the user file */ } - 8039b14: bf00 nop - 8039b16: 370c adds r7, #12 - 8039b18: 46bd mov sp, r7 - 8039b1a: f85d 7b04 ldr.w r7, [sp], #4 - 8039b1e: 4770 bx lr + 8039b54: bf00 nop + 8039b56: 370c adds r7, #12 + 8039b58: 46bd mov sp, r7 + 8039b5a: f85d 7b04 ldr.w r7, [sp], #4 + 8039b5e: 4770 bx lr -08039b20 : +08039b60 : * parameters in the UART_InitTypeDef and initialize the associated handle. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) { - 8039b20: b580 push {r7, lr} - 8039b22: b082 sub sp, #8 - 8039b24: af00 add r7, sp, #0 - 8039b26: 6078 str r0, [r7, #4] + 8039b60: b580 push {r7, lr} + 8039b62: b082 sub sp, #8 + 8039b64: af00 add r7, sp, #0 + 8039b66: 6078 str r0, [r7, #4] /* Check the UART handle allocation */ if (huart == NULL) - 8039b28: 687b ldr r3, [r7, #4] - 8039b2a: 2b00 cmp r3, #0 - 8039b2c: d101 bne.n 8039b32 + 8039b68: 687b ldr r3, [r7, #4] + 8039b6a: 2b00 cmp r3, #0 + 8039b6c: d101 bne.n 8039b72 { return HAL_ERROR; - 8039b2e: 2301 movs r3, #1 - 8039b30: e042 b.n 8039bb8 + 8039b6e: 2301 movs r3, #1 + 8039b70: e042 b.n 8039bf8 { /* Check the parameters */ assert_param((IS_UART_INSTANCE(huart->Instance)) || (IS_LPUART_INSTANCE(huart->Instance))); } if (huart->gState == HAL_UART_STATE_RESET) - 8039b32: 687b ldr r3, [r7, #4] - 8039b34: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8039b38: 2b00 cmp r3, #0 - 8039b3a: d106 bne.n 8039b4a + 8039b72: 687b ldr r3, [r7, #4] + 8039b74: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8039b78: 2b00 cmp r3, #0 + 8039b7a: d106 bne.n 8039b8a { /* Allocate lock resource and initialize it */ huart->Lock = HAL_UNLOCKED; - 8039b3c: 687b ldr r3, [r7, #4] - 8039b3e: 2200 movs r2, #0 - 8039b40: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039b7c: 687b ldr r3, [r7, #4] + 8039b7e: 2200 movs r2, #0 + 8039b80: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Init the low level hardware */ huart->MspInitCallback(huart); #else /* Init the low level hardware : GPIO, CLOCK */ HAL_UART_MspInit(huart); - 8039b44: 6878 ldr r0, [r7, #4] - 8039b46: f7f2 faab bl 802c0a0 + 8039b84: 6878 ldr r0, [r7, #4] + 8039b86: f7f2 faab bl 802c0e0 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } huart->gState = HAL_UART_STATE_BUSY; - 8039b4a: 687b ldr r3, [r7, #4] - 8039b4c: 2224 movs r2, #36 ; 0x24 - 8039b4e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8039b8a: 687b ldr r3, [r7, #4] + 8039b8c: 2224 movs r2, #36 ; 0x24 + 8039b8e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 __HAL_UART_DISABLE(huart); - 8039b52: 687b ldr r3, [r7, #4] - 8039b54: 681b ldr r3, [r3, #0] - 8039b56: 681a ldr r2, [r3, #0] - 8039b58: 687b ldr r3, [r7, #4] - 8039b5a: 681b ldr r3, [r3, #0] - 8039b5c: f022 0201 bic.w r2, r2, #1 - 8039b60: 601a str r2, [r3, #0] + 8039b92: 687b ldr r3, [r7, #4] + 8039b94: 681b ldr r3, [r3, #0] + 8039b96: 681a ldr r2, [r3, #0] + 8039b98: 687b ldr r3, [r7, #4] + 8039b9a: 681b ldr r3, [r3, #0] + 8039b9c: f022 0201 bic.w r2, r2, #1 + 8039ba0: 601a str r2, [r3, #0] /* Set the UART Communication parameters */ if (UART_SetConfig(huart) == HAL_ERROR) - 8039b62: 6878 ldr r0, [r7, #4] - 8039b64: f000 fd68 bl 803a638 - 8039b68: 4603 mov r3, r0 - 8039b6a: 2b01 cmp r3, #1 - 8039b6c: d101 bne.n 8039b72 + 8039ba2: 6878 ldr r0, [r7, #4] + 8039ba4: f000 fd68 bl 803a678 + 8039ba8: 4603 mov r3, r0 + 8039baa: 2b01 cmp r3, #1 + 8039bac: d101 bne.n 8039bb2 { return HAL_ERROR; - 8039b6e: 2301 movs r3, #1 - 8039b70: e022 b.n 8039bb8 + 8039bae: 2301 movs r3, #1 + 8039bb0: e022 b.n 8039bf8 } if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) - 8039b72: 687b ldr r3, [r7, #4] - 8039b74: 6a9b ldr r3, [r3, #40] ; 0x28 - 8039b76: 2b00 cmp r3, #0 - 8039b78: d002 beq.n 8039b80 + 8039bb2: 687b ldr r3, [r7, #4] + 8039bb4: 6a9b ldr r3, [r3, #40] ; 0x28 + 8039bb6: 2b00 cmp r3, #0 + 8039bb8: d002 beq.n 8039bc0 { UART_AdvFeatureConfig(huart); - 8039b7a: 6878 ldr r0, [r7, #4] - 8039b7c: f001 fac4 bl 803b108 + 8039bba: 6878 ldr r0, [r7, #4] + 8039bbc: f001 fac4 bl 803b148 } /* In asynchronous mode, the following bits must be kept cleared: - LINEN and CLKEN bits in the USART_CR2 register, - SCEN, HDSEL and IREN bits in the USART_CR3 register.*/ CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); - 8039b80: 687b ldr r3, [r7, #4] - 8039b82: 681b ldr r3, [r3, #0] - 8039b84: 685a ldr r2, [r3, #4] - 8039b86: 687b ldr r3, [r7, #4] - 8039b88: 681b ldr r3, [r3, #0] - 8039b8a: f422 4290 bic.w r2, r2, #18432 ; 0x4800 - 8039b8e: 605a str r2, [r3, #4] + 8039bc0: 687b ldr r3, [r7, #4] + 8039bc2: 681b ldr r3, [r3, #0] + 8039bc4: 685a ldr r2, [r3, #4] + 8039bc6: 687b ldr r3, [r7, #4] + 8039bc8: 681b ldr r3, [r3, #0] + 8039bca: f422 4290 bic.w r2, r2, #18432 ; 0x4800 + 8039bce: 605a str r2, [r3, #4] CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); - 8039b90: 687b ldr r3, [r7, #4] - 8039b92: 681b ldr r3, [r3, #0] - 8039b94: 689a ldr r2, [r3, #8] - 8039b96: 687b ldr r3, [r7, #4] - 8039b98: 681b ldr r3, [r3, #0] - 8039b9a: f022 022a bic.w r2, r2, #42 ; 0x2a - 8039b9e: 609a str r2, [r3, #8] + 8039bd0: 687b ldr r3, [r7, #4] + 8039bd2: 681b ldr r3, [r3, #0] + 8039bd4: 689a ldr r2, [r3, #8] + 8039bd6: 687b ldr r3, [r7, #4] + 8039bd8: 681b ldr r3, [r3, #0] + 8039bda: f022 022a bic.w r2, r2, #42 ; 0x2a + 8039bde: 609a str r2, [r3, #8] __HAL_UART_ENABLE(huart); - 8039ba0: 687b ldr r3, [r7, #4] - 8039ba2: 681b ldr r3, [r3, #0] - 8039ba4: 681a ldr r2, [r3, #0] - 8039ba6: 687b ldr r3, [r7, #4] - 8039ba8: 681b ldr r3, [r3, #0] - 8039baa: f042 0201 orr.w r2, r2, #1 - 8039bae: 601a str r2, [r3, #0] + 8039be0: 687b ldr r3, [r7, #4] + 8039be2: 681b ldr r3, [r3, #0] + 8039be4: 681a ldr r2, [r3, #0] + 8039be6: 687b ldr r3, [r7, #4] + 8039be8: 681b ldr r3, [r3, #0] + 8039bea: f042 0201 orr.w r2, r2, #1 + 8039bee: 601a str r2, [r3, #0] /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ return (UART_CheckIdleState(huart)); - 8039bb0: 6878 ldr r0, [r7, #4] - 8039bb2: f001 fb4b bl 803b24c - 8039bb6: 4603 mov r3, r0 + 8039bf0: 6878 ldr r0, [r7, #4] + 8039bf2: f001 fb4b bl 803b28c + 8039bf6: 4603 mov r3, r0 } - 8039bb8: 4618 mov r0, r3 - 8039bba: 3708 adds r7, #8 - 8039bbc: 46bd mov sp, r7 - 8039bbe: bd80 pop {r7, pc} + 8039bf8: 4618 mov r0, r3 + 8039bfa: 3708 adds r7, #8 + 8039bfc: 46bd mov sp, r7 + 8039bfe: bd80 pop {r7, pc} -08039bc0 : +08039c00 : * @param Size Amount of data elements (u8 or u16) to be sent. * @param Timeout Timeout duration. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) { - 8039bc0: b580 push {r7, lr} - 8039bc2: b08a sub sp, #40 ; 0x28 - 8039bc4: af02 add r7, sp, #8 - 8039bc6: 60f8 str r0, [r7, #12] - 8039bc8: 60b9 str r1, [r7, #8] - 8039bca: 603b str r3, [r7, #0] - 8039bcc: 4613 mov r3, r2 - 8039bce: 80fb strh r3, [r7, #6] + 8039c00: b580 push {r7, lr} + 8039c02: b08a sub sp, #40 ; 0x28 + 8039c04: af02 add r7, sp, #8 + 8039c06: 60f8 str r0, [r7, #12] + 8039c08: 60b9 str r1, [r7, #8] + 8039c0a: 603b str r3, [r7, #0] + 8039c0c: 4613 mov r3, r2 + 8039c0e: 80fb strh r3, [r7, #6] const uint8_t *pdata8bits; const uint16_t *pdata16bits; uint32_t tickstart; /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) - 8039bd0: 68fb ldr r3, [r7, #12] - 8039bd2: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8039bd6: 2b20 cmp r3, #32 - 8039bd8: f040 8083 bne.w 8039ce2 + 8039c10: 68fb ldr r3, [r7, #12] + 8039c12: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8039c16: 2b20 cmp r3, #32 + 8039c18: f040 8083 bne.w 8039d22 { if ((pData == NULL) || (Size == 0U)) - 8039bdc: 68bb ldr r3, [r7, #8] - 8039bde: 2b00 cmp r3, #0 - 8039be0: d002 beq.n 8039be8 - 8039be2: 88fb ldrh r3, [r7, #6] - 8039be4: 2b00 cmp r3, #0 - 8039be6: d101 bne.n 8039bec + 8039c1c: 68bb ldr r3, [r7, #8] + 8039c1e: 2b00 cmp r3, #0 + 8039c20: d002 beq.n 8039c28 + 8039c22: 88fb ldrh r3, [r7, #6] + 8039c24: 2b00 cmp r3, #0 + 8039c26: d101 bne.n 8039c2c { return HAL_ERROR; - 8039be8: 2301 movs r3, #1 - 8039bea: e07b b.n 8039ce4 + 8039c28: 2301 movs r3, #1 + 8039c2a: e07b b.n 8039d24 } __HAL_LOCK(huart); - 8039bec: 68fb ldr r3, [r7, #12] - 8039bee: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 8039bf2: 2b01 cmp r3, #1 - 8039bf4: d101 bne.n 8039bfa - 8039bf6: 2302 movs r3, #2 - 8039bf8: e074 b.n 8039ce4 - 8039bfa: 68fb ldr r3, [r7, #12] - 8039bfc: 2201 movs r2, #1 - 8039bfe: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039c2c: 68fb ldr r3, [r7, #12] + 8039c2e: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 8039c32: 2b01 cmp r3, #1 + 8039c34: d101 bne.n 8039c3a + 8039c36: 2302 movs r3, #2 + 8039c38: e074 b.n 8039d24 + 8039c3a: 68fb ldr r3, [r7, #12] + 8039c3c: 2201 movs r2, #1 + 8039c3e: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->ErrorCode = HAL_UART_ERROR_NONE; - 8039c02: 68fb ldr r3, [r7, #12] - 8039c04: 2200 movs r2, #0 - 8039c06: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8039c42: 68fb ldr r3, [r7, #12] + 8039c44: 2200 movs r2, #0 + 8039c46: f8c3 208c str.w r2, [r3, #140] ; 0x8c huart->gState = HAL_UART_STATE_BUSY_TX; - 8039c0a: 68fb ldr r3, [r7, #12] - 8039c0c: 2221 movs r2, #33 ; 0x21 - 8039c0e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8039c4a: 68fb ldr r3, [r7, #12] + 8039c4c: 2221 movs r2, #33 ; 0x21 + 8039c4e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 8039c12: f7f3 f9bf bl 802cf94 - 8039c16: 6178 str r0, [r7, #20] + 8039c52: f7f3 f9bf bl 802cfd4 + 8039c56: 6178 str r0, [r7, #20] huart->TxXferSize = Size; - 8039c18: 68fb ldr r3, [r7, #12] - 8039c1a: 88fa ldrh r2, [r7, #6] - 8039c1c: f8a3 2054 strh.w r2, [r3, #84] ; 0x54 + 8039c58: 68fb ldr r3, [r7, #12] + 8039c5a: 88fa ldrh r2, [r7, #6] + 8039c5c: f8a3 2054 strh.w r2, [r3, #84] ; 0x54 huart->TxXferCount = Size; - 8039c20: 68fb ldr r3, [r7, #12] - 8039c22: 88fa ldrh r2, [r7, #6] - 8039c24: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 8039c60: 68fb ldr r3, [r7, #12] + 8039c62: 88fa ldrh r2, [r7, #6] + 8039c64: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 /* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 8039c28: 68fb ldr r3, [r7, #12] - 8039c2a: 689b ldr r3, [r3, #8] - 8039c2c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 8039c30: d108 bne.n 8039c44 - 8039c32: 68fb ldr r3, [r7, #12] - 8039c34: 691b ldr r3, [r3, #16] - 8039c36: 2b00 cmp r3, #0 - 8039c38: d104 bne.n 8039c44 + 8039c68: 68fb ldr r3, [r7, #12] + 8039c6a: 689b ldr r3, [r3, #8] + 8039c6c: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 8039c70: d108 bne.n 8039c84 + 8039c72: 68fb ldr r3, [r7, #12] + 8039c74: 691b ldr r3, [r3, #16] + 8039c76: 2b00 cmp r3, #0 + 8039c78: d104 bne.n 8039c84 { pdata8bits = NULL; - 8039c3a: 2300 movs r3, #0 - 8039c3c: 61fb str r3, [r7, #28] + 8039c7a: 2300 movs r3, #0 + 8039c7c: 61fb str r3, [r7, #28] pdata16bits = (const uint16_t *) pData; - 8039c3e: 68bb ldr r3, [r7, #8] - 8039c40: 61bb str r3, [r7, #24] - 8039c42: e003 b.n 8039c4c + 8039c7e: 68bb ldr r3, [r7, #8] + 8039c80: 61bb str r3, [r7, #24] + 8039c82: e003 b.n 8039c8c } else { pdata8bits = pData; - 8039c44: 68bb ldr r3, [r7, #8] - 8039c46: 61fb str r3, [r7, #28] + 8039c84: 68bb ldr r3, [r7, #8] + 8039c86: 61fb str r3, [r7, #28] pdata16bits = NULL; - 8039c48: 2300 movs r3, #0 - 8039c4a: 61bb str r3, [r7, #24] + 8039c88: 2300 movs r3, #0 + 8039c8a: 61bb str r3, [r7, #24] } __HAL_UNLOCK(huart); - 8039c4c: 68fb ldr r3, [r7, #12] - 8039c4e: 2200 movs r2, #0 - 8039c50: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039c8c: 68fb ldr r3, [r7, #12] + 8039c8e: 2200 movs r2, #0 + 8039c90: f883 2080 strb.w r2, [r3, #128] ; 0x80 while (huart->TxXferCount > 0U) - 8039c54: e02c b.n 8039cb0 + 8039c94: e02c b.n 8039cf0 { if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK) - 8039c56: 683b ldr r3, [r7, #0] - 8039c58: 9300 str r3, [sp, #0] - 8039c5a: 697b ldr r3, [r7, #20] - 8039c5c: 2200 movs r2, #0 - 8039c5e: 2180 movs r1, #128 ; 0x80 - 8039c60: 68f8 ldr r0, [r7, #12] - 8039c62: f001 fb3e bl 803b2e2 - 8039c66: 4603 mov r3, r0 - 8039c68: 2b00 cmp r3, #0 - 8039c6a: d001 beq.n 8039c70 + 8039c96: 683b ldr r3, [r7, #0] + 8039c98: 9300 str r3, [sp, #0] + 8039c9a: 697b ldr r3, [r7, #20] + 8039c9c: 2200 movs r2, #0 + 8039c9e: 2180 movs r1, #128 ; 0x80 + 8039ca0: 68f8 ldr r0, [r7, #12] + 8039ca2: f001 fb3e bl 803b322 + 8039ca6: 4603 mov r3, r0 + 8039ca8: 2b00 cmp r3, #0 + 8039caa: d001 beq.n 8039cb0 { return HAL_TIMEOUT; - 8039c6c: 2303 movs r3, #3 - 8039c6e: e039 b.n 8039ce4 + 8039cac: 2303 movs r3, #3 + 8039cae: e039 b.n 8039d24 } if (pdata8bits == NULL) - 8039c70: 69fb ldr r3, [r7, #28] - 8039c72: 2b00 cmp r3, #0 - 8039c74: d10b bne.n 8039c8e + 8039cb0: 69fb ldr r3, [r7, #28] + 8039cb2: 2b00 cmp r3, #0 + 8039cb4: d10b bne.n 8039cce { huart->Instance->TDR = (uint16_t)(*pdata16bits & 0x01FFU); - 8039c76: 69bb ldr r3, [r7, #24] - 8039c78: 881b ldrh r3, [r3, #0] - 8039c7a: 461a mov r2, r3 - 8039c7c: 68fb ldr r3, [r7, #12] - 8039c7e: 681b ldr r3, [r3, #0] - 8039c80: f3c2 0208 ubfx r2, r2, #0, #9 - 8039c84: 629a str r2, [r3, #40] ; 0x28 + 8039cb6: 69bb ldr r3, [r7, #24] + 8039cb8: 881b ldrh r3, [r3, #0] + 8039cba: 461a mov r2, r3 + 8039cbc: 68fb ldr r3, [r7, #12] + 8039cbe: 681b ldr r3, [r3, #0] + 8039cc0: f3c2 0208 ubfx r2, r2, #0, #9 + 8039cc4: 629a str r2, [r3, #40] ; 0x28 pdata16bits++; - 8039c86: 69bb ldr r3, [r7, #24] - 8039c88: 3302 adds r3, #2 - 8039c8a: 61bb str r3, [r7, #24] - 8039c8c: e007 b.n 8039c9e + 8039cc6: 69bb ldr r3, [r7, #24] + 8039cc8: 3302 adds r3, #2 + 8039cca: 61bb str r3, [r7, #24] + 8039ccc: e007 b.n 8039cde } else { huart->Instance->TDR = (uint8_t)(*pdata8bits & 0xFFU); - 8039c8e: 69fb ldr r3, [r7, #28] - 8039c90: 781a ldrb r2, [r3, #0] - 8039c92: 68fb ldr r3, [r7, #12] - 8039c94: 681b ldr r3, [r3, #0] - 8039c96: 629a str r2, [r3, #40] ; 0x28 + 8039cce: 69fb ldr r3, [r7, #28] + 8039cd0: 781a ldrb r2, [r3, #0] + 8039cd2: 68fb ldr r3, [r7, #12] + 8039cd4: 681b ldr r3, [r3, #0] + 8039cd6: 629a str r2, [r3, #40] ; 0x28 pdata8bits++; - 8039c98: 69fb ldr r3, [r7, #28] - 8039c9a: 3301 adds r3, #1 - 8039c9c: 61fb str r3, [r7, #28] + 8039cd8: 69fb ldr r3, [r7, #28] + 8039cda: 3301 adds r3, #1 + 8039cdc: 61fb str r3, [r7, #28] } huart->TxXferCount--; - 8039c9e: 68fb ldr r3, [r7, #12] - 8039ca0: f8b3 3056 ldrh.w r3, [r3, #86] ; 0x56 - 8039ca4: b29b uxth r3, r3 - 8039ca6: 3b01 subs r3, #1 - 8039ca8: b29a uxth r2, r3 - 8039caa: 68fb ldr r3, [r7, #12] - 8039cac: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 8039cde: 68fb ldr r3, [r7, #12] + 8039ce0: f8b3 3056 ldrh.w r3, [r3, #86] ; 0x56 + 8039ce4: b29b uxth r3, r3 + 8039ce6: 3b01 subs r3, #1 + 8039ce8: b29a uxth r2, r3 + 8039cea: 68fb ldr r3, [r7, #12] + 8039cec: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 while (huart->TxXferCount > 0U) - 8039cb0: 68fb ldr r3, [r7, #12] - 8039cb2: f8b3 3056 ldrh.w r3, [r3, #86] ; 0x56 - 8039cb6: b29b uxth r3, r3 - 8039cb8: 2b00 cmp r3, #0 - 8039cba: d1cc bne.n 8039c56 + 8039cf0: 68fb ldr r3, [r7, #12] + 8039cf2: f8b3 3056 ldrh.w r3, [r3, #86] ; 0x56 + 8039cf6: b29b uxth r3, r3 + 8039cf8: 2b00 cmp r3, #0 + 8039cfa: d1cc bne.n 8039c96 } if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TC, RESET, tickstart, Timeout) != HAL_OK) - 8039cbc: 683b ldr r3, [r7, #0] - 8039cbe: 9300 str r3, [sp, #0] - 8039cc0: 697b ldr r3, [r7, #20] - 8039cc2: 2200 movs r2, #0 - 8039cc4: 2140 movs r1, #64 ; 0x40 - 8039cc6: 68f8 ldr r0, [r7, #12] - 8039cc8: f001 fb0b bl 803b2e2 - 8039ccc: 4603 mov r3, r0 - 8039cce: 2b00 cmp r3, #0 - 8039cd0: d001 beq.n 8039cd6 + 8039cfc: 683b ldr r3, [r7, #0] + 8039cfe: 9300 str r3, [sp, #0] + 8039d00: 697b ldr r3, [r7, #20] + 8039d02: 2200 movs r2, #0 + 8039d04: 2140 movs r1, #64 ; 0x40 + 8039d06: 68f8 ldr r0, [r7, #12] + 8039d08: f001 fb0b bl 803b322 + 8039d0c: 4603 mov r3, r0 + 8039d0e: 2b00 cmp r3, #0 + 8039d10: d001 beq.n 8039d16 { return HAL_TIMEOUT; - 8039cd2: 2303 movs r3, #3 - 8039cd4: e006 b.n 8039ce4 + 8039d12: 2303 movs r3, #3 + 8039d14: e006 b.n 8039d24 } /* At end of Tx process, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 8039cd6: 68fb ldr r3, [r7, #12] - 8039cd8: 2220 movs r2, #32 - 8039cda: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8039d16: 68fb ldr r3, [r7, #12] + 8039d18: 2220 movs r2, #32 + 8039d1a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 return HAL_OK; - 8039cde: 2300 movs r3, #0 - 8039ce0: e000 b.n 8039ce4 + 8039d1e: 2300 movs r3, #0 + 8039d20: e000 b.n 8039d24 } else { return HAL_BUSY; - 8039ce2: 2302 movs r3, #2 + 8039d22: 2302 movs r3, #2 } } - 8039ce4: 4618 mov r0, r3 - 8039ce6: 3720 adds r7, #32 - 8039ce8: 46bd mov sp, r7 - 8039cea: bd80 pop {r7, pc} + 8039d24: 4618 mov r0, r3 + 8039d26: 3720 adds r7, #32 + 8039d28: 46bd mov sp, r7 + 8039d2a: bd80 pop {r7, pc} -08039cec : +08039d2c : * @param pData Pointer to data buffer (u8 or u16 data elements). * @param Size Amount of data elements (u8 or u16) to be received. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) { - 8039cec: b580 push {r7, lr} - 8039cee: b08a sub sp, #40 ; 0x28 - 8039cf0: af00 add r7, sp, #0 - 8039cf2: 60f8 str r0, [r7, #12] - 8039cf4: 60b9 str r1, [r7, #8] - 8039cf6: 4613 mov r3, r2 - 8039cf8: 80fb strh r3, [r7, #6] + 8039d2c: b580 push {r7, lr} + 8039d2e: b08a sub sp, #40 ; 0x28 + 8039d30: af00 add r7, sp, #0 + 8039d32: 60f8 str r0, [r7, #12] + 8039d34: 60b9 str r1, [r7, #8] + 8039d36: 4613 mov r3, r2 + 8039d38: 80fb strh r3, [r7, #6] /* Check that a Rx process is not already ongoing */ if (huart->RxState == HAL_UART_STATE_READY) - 8039cfa: 68fb ldr r3, [r7, #12] - 8039cfc: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8039d00: 2b20 cmp r3, #32 - 8039d02: d142 bne.n 8039d8a + 8039d3a: 68fb ldr r3, [r7, #12] + 8039d3c: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8039d40: 2b20 cmp r3, #32 + 8039d42: d142 bne.n 8039dca { if ((pData == NULL) || (Size == 0U)) - 8039d04: 68bb ldr r3, [r7, #8] - 8039d06: 2b00 cmp r3, #0 - 8039d08: d002 beq.n 8039d10 - 8039d0a: 88fb ldrh r3, [r7, #6] - 8039d0c: 2b00 cmp r3, #0 - 8039d0e: d101 bne.n 8039d14 + 8039d44: 68bb ldr r3, [r7, #8] + 8039d46: 2b00 cmp r3, #0 + 8039d48: d002 beq.n 8039d50 + 8039d4a: 88fb ldrh r3, [r7, #6] + 8039d4c: 2b00 cmp r3, #0 + 8039d4e: d101 bne.n 8039d54 { return HAL_ERROR; - 8039d10: 2301 movs r3, #1 - 8039d12: e03b b.n 8039d8c + 8039d50: 2301 movs r3, #1 + 8039d52: e03b b.n 8039dcc } __HAL_LOCK(huart); - 8039d14: 68fb ldr r3, [r7, #12] - 8039d16: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 8039d1a: 2b01 cmp r3, #1 - 8039d1c: d101 bne.n 8039d22 - 8039d1e: 2302 movs r3, #2 - 8039d20: e034 b.n 8039d8c - 8039d22: 68fb ldr r3, [r7, #12] - 8039d24: 2201 movs r2, #1 - 8039d26: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039d54: 68fb ldr r3, [r7, #12] + 8039d56: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 8039d5a: 2b01 cmp r3, #1 + 8039d5c: d101 bne.n 8039d62 + 8039d5e: 2302 movs r3, #2 + 8039d60: e034 b.n 8039dcc + 8039d62: 68fb ldr r3, [r7, #12] + 8039d64: 2201 movs r2, #1 + 8039d66: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Set Reception type to Standard reception */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 8039d2a: 68fb ldr r3, [r7, #12] - 8039d2c: 2200 movs r2, #0 - 8039d2e: 66da str r2, [r3, #108] ; 0x6c + 8039d6a: 68fb ldr r3, [r7, #12] + 8039d6c: 2200 movs r2, #0 + 8039d6e: 66da str r2, [r3, #108] ; 0x6c if (!(IS_LPUART_INSTANCE(huart->Instance))) - 8039d30: 68fb ldr r3, [r7, #12] - 8039d32: 681b ldr r3, [r3, #0] - 8039d34: 4a17 ldr r2, [pc, #92] ; (8039d94 ) - 8039d36: 4293 cmp r3, r2 - 8039d38: d01f beq.n 8039d7a + 8039d70: 68fb ldr r3, [r7, #12] + 8039d72: 681b ldr r3, [r3, #0] + 8039d74: 4a17 ldr r2, [pc, #92] ; (8039dd4 ) + 8039d76: 4293 cmp r3, r2 + 8039d78: d01f beq.n 8039dba { /* Check that USART RTOEN bit is set */ if (READ_BIT(huart->Instance->CR2, USART_CR2_RTOEN) != 0U) - 8039d3a: 68fb ldr r3, [r7, #12] - 8039d3c: 681b ldr r3, [r3, #0] - 8039d3e: 685b ldr r3, [r3, #4] - 8039d40: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 8039d44: 2b00 cmp r3, #0 - 8039d46: d018 beq.n 8039d7a + 8039d7a: 68fb ldr r3, [r7, #12] + 8039d7c: 681b ldr r3, [r3, #0] + 8039d7e: 685b ldr r3, [r3, #4] + 8039d80: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 8039d84: 2b00 cmp r3, #0 + 8039d86: d018 beq.n 8039dba { /* Enable the UART Receiver Timeout Interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RTOIE); - 8039d48: 68fb ldr r3, [r7, #12] - 8039d4a: 681b ldr r3, [r3, #0] - 8039d4c: 617b str r3, [r7, #20] + 8039d88: 68fb ldr r3, [r7, #12] + 8039d8a: 681b ldr r3, [r3, #0] + 8039d8c: 617b str r3, [r7, #20] */ __STATIC_FORCEINLINE uint32_t __LDREXW(volatile uint32_t *addr) { uint32_t result; __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8039d4e: 697b ldr r3, [r7, #20] - 8039d50: e853 3f00 ldrex r3, [r3] - 8039d54: 613b str r3, [r7, #16] + 8039d8e: 697b ldr r3, [r7, #20] + 8039d90: e853 3f00 ldrex r3, [r3] + 8039d94: 613b str r3, [r7, #16] return(result); - 8039d56: 693b ldr r3, [r7, #16] - 8039d58: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 - 8039d5c: 627b str r3, [r7, #36] ; 0x24 - 8039d5e: 68fb ldr r3, [r7, #12] - 8039d60: 681b ldr r3, [r3, #0] - 8039d62: 461a mov r2, r3 - 8039d64: 6a7b ldr r3, [r7, #36] ; 0x24 - 8039d66: 623b str r3, [r7, #32] - 8039d68: 61fa str r2, [r7, #28] + 8039d96: 693b ldr r3, [r7, #16] + 8039d98: f043 6380 orr.w r3, r3, #67108864 ; 0x4000000 + 8039d9c: 627b str r3, [r7, #36] ; 0x24 + 8039d9e: 68fb ldr r3, [r7, #12] + 8039da0: 681b ldr r3, [r3, #0] + 8039da2: 461a mov r2, r3 + 8039da4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8039da6: 623b str r3, [r7, #32] + 8039da8: 61fa str r2, [r7, #28] */ __STATIC_FORCEINLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr) { uint32_t result; __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8039d6a: 69f9 ldr r1, [r7, #28] - 8039d6c: 6a3a ldr r2, [r7, #32] - 8039d6e: e841 2300 strex r3, r2, [r1] - 8039d72: 61bb str r3, [r7, #24] + 8039daa: 69f9 ldr r1, [r7, #28] + 8039dac: 6a3a ldr r2, [r7, #32] + 8039dae: e841 2300 strex r3, r2, [r1] + 8039db2: 61bb str r3, [r7, #24] return(result); - 8039d74: 69bb ldr r3, [r7, #24] - 8039d76: 2b00 cmp r3, #0 - 8039d78: d1e6 bne.n 8039d48 + 8039db4: 69bb ldr r3, [r7, #24] + 8039db6: 2b00 cmp r3, #0 + 8039db8: d1e6 bne.n 8039d88 } } return (UART_Start_Receive_IT(huart, pData, Size)); - 8039d7a: 88fb ldrh r3, [r7, #6] - 8039d7c: 461a mov r2, r3 - 8039d7e: 68b9 ldr r1, [r7, #8] - 8039d80: 68f8 ldr r0, [r7, #12] - 8039d82: f001 fb77 bl 803b474 - 8039d86: 4603 mov r3, r0 - 8039d88: e000 b.n 8039d8c + 8039dba: 88fb ldrh r3, [r7, #6] + 8039dbc: 461a mov r2, r3 + 8039dbe: 68b9 ldr r1, [r7, #8] + 8039dc0: 68f8 ldr r0, [r7, #12] + 8039dc2: f001 fb77 bl 803b4b4 + 8039dc6: 4603 mov r3, r0 + 8039dc8: e000 b.n 8039dcc } else { return HAL_BUSY; - 8039d8a: 2302 movs r3, #2 + 8039dca: 2302 movs r3, #2 } } - 8039d8c: 4618 mov r0, r3 - 8039d8e: 3728 adds r7, #40 ; 0x28 - 8039d90: 46bd mov sp, r7 - 8039d92: bd80 pop {r7, pc} - 8039d94: 58000c00 .word 0x58000c00 + 8039dcc: 4618 mov r0, r3 + 8039dce: 3728 adds r7, #40 ; 0x28 + 8039dd0: 46bd mov sp, r7 + 8039dd2: bd80 pop {r7, pc} + 8039dd4: 58000c00 .word 0x58000c00 -08039d98 : +08039dd8 : * @param pData Pointer to data buffer (u8 or u16 data elements). * @param Size Amount of data elements (u8 or u16) to be sent. * @retval HAL status */ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) { - 8039d98: b580 push {r7, lr} - 8039d9a: b08a sub sp, #40 ; 0x28 - 8039d9c: af00 add r7, sp, #0 - 8039d9e: 60f8 str r0, [r7, #12] - 8039da0: 60b9 str r1, [r7, #8] - 8039da2: 4613 mov r3, r2 - 8039da4: 80fb strh r3, [r7, #6] + 8039dd8: b580 push {r7, lr} + 8039dda: b08a sub sp, #40 ; 0x28 + 8039ddc: af00 add r7, sp, #0 + 8039dde: 60f8 str r0, [r7, #12] + 8039de0: 60b9 str r1, [r7, #8] + 8039de2: 4613 mov r3, r2 + 8039de4: 80fb strh r3, [r7, #6] /* Check that a Tx process is not already ongoing */ if (huart->gState == HAL_UART_STATE_READY) - 8039da6: 68fb ldr r3, [r7, #12] - 8039da8: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8039dac: 2b20 cmp r3, #32 - 8039dae: d17a bne.n 8039ea6 + 8039de6: 68fb ldr r3, [r7, #12] + 8039de8: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8039dec: 2b20 cmp r3, #32 + 8039dee: d17a bne.n 8039ee6 { if ((pData == NULL) || (Size == 0U)) - 8039db0: 68bb ldr r3, [r7, #8] - 8039db2: 2b00 cmp r3, #0 - 8039db4: d002 beq.n 8039dbc - 8039db6: 88fb ldrh r3, [r7, #6] - 8039db8: 2b00 cmp r3, #0 - 8039dba: d101 bne.n 8039dc0 + 8039df0: 68bb ldr r3, [r7, #8] + 8039df2: 2b00 cmp r3, #0 + 8039df4: d002 beq.n 8039dfc + 8039df6: 88fb ldrh r3, [r7, #6] + 8039df8: 2b00 cmp r3, #0 + 8039dfa: d101 bne.n 8039e00 { return HAL_ERROR; - 8039dbc: 2301 movs r3, #1 - 8039dbe: e073 b.n 8039ea8 + 8039dfc: 2301 movs r3, #1 + 8039dfe: e073 b.n 8039ee8 } __HAL_LOCK(huart); - 8039dc0: 68fb ldr r3, [r7, #12] - 8039dc2: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 8039dc6: 2b01 cmp r3, #1 - 8039dc8: d101 bne.n 8039dce - 8039dca: 2302 movs r3, #2 - 8039dcc: e06c b.n 8039ea8 - 8039dce: 68fb ldr r3, [r7, #12] - 8039dd0: 2201 movs r2, #1 - 8039dd2: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039e00: 68fb ldr r3, [r7, #12] + 8039e02: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 8039e06: 2b01 cmp r3, #1 + 8039e08: d101 bne.n 8039e0e + 8039e0a: 2302 movs r3, #2 + 8039e0c: e06c b.n 8039ee8 + 8039e0e: 68fb ldr r3, [r7, #12] + 8039e10: 2201 movs r2, #1 + 8039e12: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->pTxBuffPtr = pData; - 8039dd6: 68fb ldr r3, [r7, #12] - 8039dd8: 68ba ldr r2, [r7, #8] - 8039dda: 651a str r2, [r3, #80] ; 0x50 + 8039e16: 68fb ldr r3, [r7, #12] + 8039e18: 68ba ldr r2, [r7, #8] + 8039e1a: 651a str r2, [r3, #80] ; 0x50 huart->TxXferSize = Size; - 8039ddc: 68fb ldr r3, [r7, #12] - 8039dde: 88fa ldrh r2, [r7, #6] - 8039de0: f8a3 2054 strh.w r2, [r3, #84] ; 0x54 + 8039e1c: 68fb ldr r3, [r7, #12] + 8039e1e: 88fa ldrh r2, [r7, #6] + 8039e20: f8a3 2054 strh.w r2, [r3, #84] ; 0x54 huart->TxXferCount = Size; - 8039de4: 68fb ldr r3, [r7, #12] - 8039de6: 88fa ldrh r2, [r7, #6] - 8039de8: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 8039e24: 68fb ldr r3, [r7, #12] + 8039e26: 88fa ldrh r2, [r7, #6] + 8039e28: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 huart->ErrorCode = HAL_UART_ERROR_NONE; - 8039dec: 68fb ldr r3, [r7, #12] - 8039dee: 2200 movs r2, #0 - 8039df0: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8039e2c: 68fb ldr r3, [r7, #12] + 8039e2e: 2200 movs r2, #0 + 8039e30: f8c3 208c str.w r2, [r3, #140] ; 0x8c huart->gState = HAL_UART_STATE_BUSY_TX; - 8039df4: 68fb ldr r3, [r7, #12] - 8039df6: 2221 movs r2, #33 ; 0x21 - 8039df8: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8039e34: 68fb ldr r3, [r7, #12] + 8039e36: 2221 movs r2, #33 ; 0x21 + 8039e38: f8c3 2084 str.w r2, [r3, #132] ; 0x84 if (huart->hdmatx != NULL) - 8039dfc: 68fb ldr r3, [r7, #12] - 8039dfe: 6f9b ldr r3, [r3, #120] ; 0x78 - 8039e00: 2b00 cmp r3, #0 - 8039e02: d02c beq.n 8039e5e + 8039e3c: 68fb ldr r3, [r7, #12] + 8039e3e: 6f9b ldr r3, [r3, #120] ; 0x78 + 8039e40: 2b00 cmp r3, #0 + 8039e42: d02c beq.n 8039e9e { /* Set the UART DMA transfer complete callback */ huart->hdmatx->XferCpltCallback = UART_DMATransmitCplt; - 8039e04: 68fb ldr r3, [r7, #12] - 8039e06: 6f9b ldr r3, [r3, #120] ; 0x78 - 8039e08: 4a29 ldr r2, [pc, #164] ; (8039eb0 ) - 8039e0a: 63da str r2, [r3, #60] ; 0x3c + 8039e44: 68fb ldr r3, [r7, #12] + 8039e46: 6f9b ldr r3, [r3, #120] ; 0x78 + 8039e48: 4a29 ldr r2, [pc, #164] ; (8039ef0 ) + 8039e4a: 63da str r2, [r3, #60] ; 0x3c /* Set the UART DMA Half transfer complete callback */ huart->hdmatx->XferHalfCpltCallback = UART_DMATxHalfCplt; - 8039e0c: 68fb ldr r3, [r7, #12] - 8039e0e: 6f9b ldr r3, [r3, #120] ; 0x78 - 8039e10: 4a28 ldr r2, [pc, #160] ; (8039eb4 ) - 8039e12: 641a str r2, [r3, #64] ; 0x40 + 8039e4c: 68fb ldr r3, [r7, #12] + 8039e4e: 6f9b ldr r3, [r3, #120] ; 0x78 + 8039e50: 4a28 ldr r2, [pc, #160] ; (8039ef4 ) + 8039e52: 641a str r2, [r3, #64] ; 0x40 /* Set the DMA error callback */ huart->hdmatx->XferErrorCallback = UART_DMAError; - 8039e14: 68fb ldr r3, [r7, #12] - 8039e16: 6f9b ldr r3, [r3, #120] ; 0x78 - 8039e18: 4a27 ldr r2, [pc, #156] ; (8039eb8 ) - 8039e1a: 64da str r2, [r3, #76] ; 0x4c + 8039e54: 68fb ldr r3, [r7, #12] + 8039e56: 6f9b ldr r3, [r3, #120] ; 0x78 + 8039e58: 4a27 ldr r2, [pc, #156] ; (8039ef8 ) + 8039e5a: 64da str r2, [r3, #76] ; 0x4c /* Set the DMA abort callback */ huart->hdmatx->XferAbortCallback = NULL; - 8039e1c: 68fb ldr r3, [r7, #12] - 8039e1e: 6f9b ldr r3, [r3, #120] ; 0x78 - 8039e20: 2200 movs r2, #0 - 8039e22: 651a str r2, [r3, #80] ; 0x50 + 8039e5c: 68fb ldr r3, [r7, #12] + 8039e5e: 6f9b ldr r3, [r3, #120] ; 0x78 + 8039e60: 2200 movs r2, #0 + 8039e62: 651a str r2, [r3, #80] ; 0x50 /* Enable the UART transmit DMA channel */ if (HAL_DMA_Start_IT(huart->hdmatx, (uint32_t)huart->pTxBuffPtr, (uint32_t)&huart->Instance->TDR, Size) != HAL_OK) - 8039e24: 68fb ldr r3, [r7, #12] - 8039e26: 6f98 ldr r0, [r3, #120] ; 0x78 - 8039e28: 68fb ldr r3, [r7, #12] - 8039e2a: 6d1b ldr r3, [r3, #80] ; 0x50 - 8039e2c: 4619 mov r1, r3 - 8039e2e: 68fb ldr r3, [r7, #12] - 8039e30: 681b ldr r3, [r3, #0] - 8039e32: 3328 adds r3, #40 ; 0x28 - 8039e34: 461a mov r2, r3 - 8039e36: 88fb ldrh r3, [r7, #6] - 8039e38: f7f4 fd6c bl 802e914 - 8039e3c: 4603 mov r3, r0 - 8039e3e: 2b00 cmp r3, #0 - 8039e40: d00d beq.n 8039e5e + 8039e64: 68fb ldr r3, [r7, #12] + 8039e66: 6f98 ldr r0, [r3, #120] ; 0x78 + 8039e68: 68fb ldr r3, [r7, #12] + 8039e6a: 6d1b ldr r3, [r3, #80] ; 0x50 + 8039e6c: 4619 mov r1, r3 + 8039e6e: 68fb ldr r3, [r7, #12] + 8039e70: 681b ldr r3, [r3, #0] + 8039e72: 3328 adds r3, #40 ; 0x28 + 8039e74: 461a mov r2, r3 + 8039e76: 88fb ldrh r3, [r7, #6] + 8039e78: f7f4 fd6c bl 802e954 + 8039e7c: 4603 mov r3, r0 + 8039e7e: 2b00 cmp r3, #0 + 8039e80: d00d beq.n 8039e9e { /* Set error code to DMA */ huart->ErrorCode = HAL_UART_ERROR_DMA; - 8039e42: 68fb ldr r3, [r7, #12] - 8039e44: 2210 movs r2, #16 - 8039e46: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8039e82: 68fb ldr r3, [r7, #12] + 8039e84: 2210 movs r2, #16 + 8039e86: f8c3 208c str.w r2, [r3, #140] ; 0x8c __HAL_UNLOCK(huart); - 8039e4a: 68fb ldr r3, [r7, #12] - 8039e4c: 2200 movs r2, #0 - 8039e4e: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039e8a: 68fb ldr r3, [r7, #12] + 8039e8c: 2200 movs r2, #0 + 8039e8e: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Restore huart->gState to ready */ huart->gState = HAL_UART_STATE_READY; - 8039e52: 68fb ldr r3, [r7, #12] - 8039e54: 2220 movs r2, #32 - 8039e56: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8039e92: 68fb ldr r3, [r7, #12] + 8039e94: 2220 movs r2, #32 + 8039e96: f8c3 2084 str.w r2, [r3, #132] ; 0x84 return HAL_ERROR; - 8039e5a: 2301 movs r3, #1 - 8039e5c: e024 b.n 8039ea8 + 8039e9a: 2301 movs r3, #1 + 8039e9c: e024 b.n 8039ee8 } } /* Clear the TC flag in the ICR register */ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF); - 8039e5e: 68fb ldr r3, [r7, #12] - 8039e60: 681b ldr r3, [r3, #0] - 8039e62: 2240 movs r2, #64 ; 0x40 - 8039e64: 621a str r2, [r3, #32] + 8039e9e: 68fb ldr r3, [r7, #12] + 8039ea0: 681b ldr r3, [r3, #0] + 8039ea2: 2240 movs r2, #64 ; 0x40 + 8039ea4: 621a str r2, [r3, #32] __HAL_UNLOCK(huart); - 8039e66: 68fb ldr r3, [r7, #12] - 8039e68: 2200 movs r2, #0 - 8039e6a: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 8039ea6: 68fb ldr r3, [r7, #12] + 8039ea8: 2200 movs r2, #0 + 8039eaa: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Enable the DMA transfer for transmit request by setting the DMAT bit in the UART CR3 register */ ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_DMAT); - 8039e6e: 68fb ldr r3, [r7, #12] - 8039e70: 681b ldr r3, [r3, #0] - 8039e72: 3308 adds r3, #8 - 8039e74: 617b str r3, [r7, #20] + 8039eae: 68fb ldr r3, [r7, #12] + 8039eb0: 681b ldr r3, [r3, #0] + 8039eb2: 3308 adds r3, #8 + 8039eb4: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 8039e76: 697b ldr r3, [r7, #20] - 8039e78: e853 3f00 ldrex r3, [r3] - 8039e7c: 613b str r3, [r7, #16] + 8039eb6: 697b ldr r3, [r7, #20] + 8039eb8: e853 3f00 ldrex r3, [r3] + 8039ebc: 613b str r3, [r7, #16] return(result); - 8039e7e: 693b ldr r3, [r7, #16] - 8039e80: f043 0380 orr.w r3, r3, #128 ; 0x80 - 8039e84: 627b str r3, [r7, #36] ; 0x24 - 8039e86: 68fb ldr r3, [r7, #12] - 8039e88: 681b ldr r3, [r3, #0] - 8039e8a: 3308 adds r3, #8 - 8039e8c: 6a7a ldr r2, [r7, #36] ; 0x24 - 8039e8e: 623a str r2, [r7, #32] - 8039e90: 61fb str r3, [r7, #28] + 8039ebe: 693b ldr r3, [r7, #16] + 8039ec0: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8039ec4: 627b str r3, [r7, #36] ; 0x24 + 8039ec6: 68fb ldr r3, [r7, #12] + 8039ec8: 681b ldr r3, [r3, #0] + 8039eca: 3308 adds r3, #8 + 8039ecc: 6a7a ldr r2, [r7, #36] ; 0x24 + 8039ece: 623a str r2, [r7, #32] + 8039ed0: 61fb str r3, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 8039e92: 69f9 ldr r1, [r7, #28] - 8039e94: 6a3a ldr r2, [r7, #32] - 8039e96: e841 2300 strex r3, r2, [r1] - 8039e9a: 61bb str r3, [r7, #24] + 8039ed2: 69f9 ldr r1, [r7, #28] + 8039ed4: 6a3a ldr r2, [r7, #32] + 8039ed6: e841 2300 strex r3, r2, [r1] + 8039eda: 61bb str r3, [r7, #24] return(result); - 8039e9c: 69bb ldr r3, [r7, #24] - 8039e9e: 2b00 cmp r3, #0 - 8039ea0: d1e5 bne.n 8039e6e + 8039edc: 69bb ldr r3, [r7, #24] + 8039ede: 2b00 cmp r3, #0 + 8039ee0: d1e5 bne.n 8039eae return HAL_OK; - 8039ea2: 2300 movs r3, #0 - 8039ea4: e000 b.n 8039ea8 + 8039ee2: 2300 movs r3, #0 + 8039ee4: e000 b.n 8039ee8 } else { return HAL_BUSY; - 8039ea6: 2302 movs r3, #2 + 8039ee6: 2302 movs r3, #2 } } - 8039ea8: 4618 mov r0, r3 - 8039eaa: 3728 adds r7, #40 ; 0x28 - 8039eac: 46bd mov sp, r7 - 8039eae: bd80 pop {r7, pc} - 8039eb0: 0803b819 .word 0x0803b819 - 8039eb4: 0803b8af .word 0x0803b8af - 8039eb8: 0803b8cb .word 0x0803b8cb + 8039ee8: 4618 mov r0, r3 + 8039eea: 3728 adds r7, #40 ; 0x28 + 8039eec: 46bd mov sp, r7 + 8039eee: bd80 pop {r7, pc} + 8039ef0: 0803b859 .word 0x0803b859 + 8039ef4: 0803b8ef .word 0x0803b8ef + 8039ef8: 0803b90b .word 0x0803b90b -08039ebc : +08039efc : * @brief Handle UART interrupt request. * @param huart UART handle. * @retval None */ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart) { - 8039ebc: b580 push {r7, lr} - 8039ebe: b0ba sub sp, #232 ; 0xe8 - 8039ec0: af00 add r7, sp, #0 - 8039ec2: 6078 str r0, [r7, #4] + 8039efc: b580 push {r7, lr} + 8039efe: b0ba sub sp, #232 ; 0xe8 + 8039f00: af00 add r7, sp, #0 + 8039f02: 6078 str r0, [r7, #4] uint32_t isrflags = READ_REG(huart->Instance->ISR); - 8039ec4: 687b ldr r3, [r7, #4] - 8039ec6: 681b ldr r3, [r3, #0] - 8039ec8: 69db ldr r3, [r3, #28] - 8039eca: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 + 8039f04: 687b ldr r3, [r7, #4] + 8039f06: 681b ldr r3, [r3, #0] + 8039f08: 69db ldr r3, [r3, #28] + 8039f0a: f8c7 30e4 str.w r3, [r7, #228] ; 0xe4 uint32_t cr1its = READ_REG(huart->Instance->CR1); - 8039ece: 687b ldr r3, [r7, #4] - 8039ed0: 681b ldr r3, [r3, #0] - 8039ed2: 681b ldr r3, [r3, #0] - 8039ed4: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 + 8039f0e: 687b ldr r3, [r7, #4] + 8039f10: 681b ldr r3, [r3, #0] + 8039f12: 681b ldr r3, [r3, #0] + 8039f14: f8c7 30e0 str.w r3, [r7, #224] ; 0xe0 uint32_t cr3its = READ_REG(huart->Instance->CR3); - 8039ed8: 687b ldr r3, [r7, #4] - 8039eda: 681b ldr r3, [r3, #0] - 8039edc: 689b ldr r3, [r3, #8] - 8039ede: f8c7 30dc str.w r3, [r7, #220] ; 0xdc + 8039f18: 687b ldr r3, [r7, #4] + 8039f1a: 681b ldr r3, [r3, #0] + 8039f1c: 689b ldr r3, [r3, #8] + 8039f1e: f8c7 30dc str.w r3, [r7, #220] ; 0xdc uint32_t errorflags; uint32_t errorcode; /* If no error occurs */ errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF)); - 8039ee2: f8d7 20e4 ldr.w r2, [r7, #228] ; 0xe4 - 8039ee6: f640 030f movw r3, #2063 ; 0x80f - 8039eea: 4013 ands r3, r2 - 8039eec: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 + 8039f22: f8d7 20e4 ldr.w r2, [r7, #228] ; 0xe4 + 8039f26: f640 030f movw r3, #2063 ; 0x80f + 8039f2a: 4013 ands r3, r2 + 8039f2c: f8c7 30d8 str.w r3, [r7, #216] ; 0xd8 if (errorflags == 0U) - 8039ef0: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 - 8039ef4: 2b00 cmp r3, #0 - 8039ef6: d11b bne.n 8039f30 + 8039f30: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 8039f34: 2b00 cmp r3, #0 + 8039f36: d11b bne.n 8039f70 { /* UART in mode Receiver ---------------------------------------------------*/ if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U) - 8039ef8: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 8039efc: f003 0320 and.w r3, r3, #32 - 8039f00: 2b00 cmp r3, #0 - 8039f02: d015 beq.n 8039f30 + 8039f38: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 8039f3c: f003 0320 and.w r3, r3, #32 + 8039f40: 2b00 cmp r3, #0 + 8039f42: d015 beq.n 8039f70 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) - 8039f04: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 8039f08: f003 0320 and.w r3, r3, #32 - 8039f0c: 2b00 cmp r3, #0 - 8039f0e: d105 bne.n 8039f1c + 8039f44: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 8039f48: f003 0320 and.w r3, r3, #32 + 8039f4c: 2b00 cmp r3, #0 + 8039f4e: d105 bne.n 8039f5c || ((cr3its & USART_CR3_RXFTIE) != 0U))) - 8039f10: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 8039f14: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 8039f18: 2b00 cmp r3, #0 - 8039f1a: d009 beq.n 8039f30 + 8039f50: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 8039f54: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 8039f58: 2b00 cmp r3, #0 + 8039f5a: d009 beq.n 8039f70 { if (huart->RxISR != NULL) - 8039f1c: 687b ldr r3, [r7, #4] - 8039f1e: 6f1b ldr r3, [r3, #112] ; 0x70 - 8039f20: 2b00 cmp r3, #0 - 8039f22: f000 835a beq.w 803a5da + 8039f5c: 687b ldr r3, [r7, #4] + 8039f5e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8039f60: 2b00 cmp r3, #0 + 8039f62: f000 835a beq.w 803a61a { huart->RxISR(huart); - 8039f26: 687b ldr r3, [r7, #4] - 8039f28: 6f1b ldr r3, [r3, #112] ; 0x70 - 8039f2a: 6878 ldr r0, [r7, #4] - 8039f2c: 4798 blx r3 + 8039f66: 687b ldr r3, [r7, #4] + 8039f68: 6f1b ldr r3, [r3, #112] ; 0x70 + 8039f6a: 6878 ldr r0, [r7, #4] + 8039f6c: 4798 blx r3 } return; - 8039f2e: e354 b.n 803a5da + 8039f6e: e354 b.n 803a61a } } /* If some errors occur */ if ((errorflags != 0U) - 8039f30: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 - 8039f34: 2b00 cmp r3, #0 - 8039f36: f000 811f beq.w 803a178 + 8039f70: f8d7 30d8 ldr.w r3, [r7, #216] ; 0xd8 + 8039f74: 2b00 cmp r3, #0 + 8039f76: f000 811f beq.w 803a1b8 && ((((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U) - 8039f3a: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc - 8039f3e: 4b8b ldr r3, [pc, #556] ; (803a16c ) - 8039f40: 4013 ands r3, r2 - 8039f42: 2b00 cmp r3, #0 - 8039f44: d106 bne.n 8039f54 + 8039f7a: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc + 8039f7e: 4b8b ldr r3, [pc, #556] ; (803a1ac ) + 8039f80: 4013 ands r3, r2 + 8039f82: 2b00 cmp r3, #0 + 8039f84: d106 bne.n 8039f94 || ((cr1its & (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | USART_CR1_RTOIE)) != 0U)))) - 8039f46: f8d7 20e0 ldr.w r2, [r7, #224] ; 0xe0 - 8039f4a: 4b89 ldr r3, [pc, #548] ; (803a170 ) - 8039f4c: 4013 ands r3, r2 - 8039f4e: 2b00 cmp r3, #0 - 8039f50: f000 8112 beq.w 803a178 + 8039f86: f8d7 20e0 ldr.w r2, [r7, #224] ; 0xe0 + 8039f8a: 4b89 ldr r3, [pc, #548] ; (803a1b0 ) + 8039f8c: 4013 ands r3, r2 + 8039f8e: 2b00 cmp r3, #0 + 8039f90: f000 8112 beq.w 803a1b8 { /* UART parity error interrupt occurred -------------------------------------*/ if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) - 8039f54: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 8039f58: f003 0301 and.w r3, r3, #1 - 8039f5c: 2b00 cmp r3, #0 - 8039f5e: d011 beq.n 8039f84 - 8039f60: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 8039f64: f403 7380 and.w r3, r3, #256 ; 0x100 - 8039f68: 2b00 cmp r3, #0 - 8039f6a: d00b beq.n 8039f84 + 8039f94: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 8039f98: f003 0301 and.w r3, r3, #1 + 8039f9c: 2b00 cmp r3, #0 + 8039f9e: d011 beq.n 8039fc4 + 8039fa0: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 8039fa4: f403 7380 and.w r3, r3, #256 ; 0x100 + 8039fa8: 2b00 cmp r3, #0 + 8039faa: d00b beq.n 8039fc4 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); - 8039f6c: 687b ldr r3, [r7, #4] - 8039f6e: 681b ldr r3, [r3, #0] - 8039f70: 2201 movs r2, #1 - 8039f72: 621a str r2, [r3, #32] + 8039fac: 687b ldr r3, [r7, #4] + 8039fae: 681b ldr r3, [r3, #0] + 8039fb0: 2201 movs r2, #1 + 8039fb2: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_PE; - 8039f74: 687b ldr r3, [r7, #4] - 8039f76: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 8039f7a: f043 0201 orr.w r2, r3, #1 - 8039f7e: 687b ldr r3, [r7, #4] - 8039f80: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8039fb4: 687b ldr r3, [r7, #4] + 8039fb6: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 8039fba: f043 0201 orr.w r2, r3, #1 + 8039fbe: 687b ldr r3, [r7, #4] + 8039fc0: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART frame error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 8039f84: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 8039f88: f003 0302 and.w r3, r3, #2 - 8039f8c: 2b00 cmp r3, #0 - 8039f8e: d011 beq.n 8039fb4 - 8039f90: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 8039f94: f003 0301 and.w r3, r3, #1 - 8039f98: 2b00 cmp r3, #0 - 8039f9a: d00b beq.n 8039fb4 + 8039fc4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 8039fc8: f003 0302 and.w r3, r3, #2 + 8039fcc: 2b00 cmp r3, #0 + 8039fce: d011 beq.n 8039ff4 + 8039fd0: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 8039fd4: f003 0301 and.w r3, r3, #1 + 8039fd8: 2b00 cmp r3, #0 + 8039fda: d00b beq.n 8039ff4 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); - 8039f9c: 687b ldr r3, [r7, #4] - 8039f9e: 681b ldr r3, [r3, #0] - 8039fa0: 2202 movs r2, #2 - 8039fa2: 621a str r2, [r3, #32] + 8039fdc: 687b ldr r3, [r7, #4] + 8039fde: 681b ldr r3, [r3, #0] + 8039fe0: 2202 movs r2, #2 + 8039fe2: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_FE; - 8039fa4: 687b ldr r3, [r7, #4] - 8039fa6: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 8039faa: f043 0204 orr.w r2, r3, #4 - 8039fae: 687b ldr r3, [r7, #4] - 8039fb0: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 8039fe4: 687b ldr r3, [r7, #4] + 8039fe6: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 8039fea: f043 0204 orr.w r2, r3, #4 + 8039fee: 687b ldr r3, [r7, #4] + 8039ff0: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART noise error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 8039fb4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 8039fb8: f003 0304 and.w r3, r3, #4 - 8039fbc: 2b00 cmp r3, #0 - 8039fbe: d011 beq.n 8039fe4 - 8039fc0: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 8039fc4: f003 0301 and.w r3, r3, #1 - 8039fc8: 2b00 cmp r3, #0 - 8039fca: d00b beq.n 8039fe4 + 8039ff4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 8039ff8: f003 0304 and.w r3, r3, #4 + 8039ffc: 2b00 cmp r3, #0 + 8039ffe: d011 beq.n 803a024 + 803a000: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 803a004: f003 0301 and.w r3, r3, #1 + 803a008: 2b00 cmp r3, #0 + 803a00a: d00b beq.n 803a024 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); - 8039fcc: 687b ldr r3, [r7, #4] - 8039fce: 681b ldr r3, [r3, #0] - 8039fd0: 2204 movs r2, #4 - 8039fd2: 621a str r2, [r3, #32] + 803a00c: 687b ldr r3, [r7, #4] + 803a00e: 681b ldr r3, [r3, #0] + 803a010: 2204 movs r2, #4 + 803a012: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_NE; - 8039fd4: 687b ldr r3, [r7, #4] - 8039fd6: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 8039fda: f043 0202 orr.w r2, r3, #2 - 8039fde: 687b ldr r3, [r7, #4] - 8039fe0: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803a014: 687b ldr r3, [r7, #4] + 803a016: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803a01a: f043 0202 orr.w r2, r3, #2 + 803a01e: 687b ldr r3, [r7, #4] + 803a020: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART Over-Run interrupt occurred -----------------------------------------*/ if (((isrflags & USART_ISR_ORE) != 0U) - 8039fe4: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 8039fe8: f003 0308 and.w r3, r3, #8 - 8039fec: 2b00 cmp r3, #0 - 8039fee: d017 beq.n 803a020 + 803a024: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a028: f003 0308 and.w r3, r3, #8 + 803a02c: 2b00 cmp r3, #0 + 803a02e: d017 beq.n 803a060 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) || - 8039ff0: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 8039ff4: f003 0320 and.w r3, r3, #32 - 8039ff8: 2b00 cmp r3, #0 - 8039ffa: d105 bne.n 803a008 + 803a030: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a034: f003 0320 and.w r3, r3, #32 + 803a038: 2b00 cmp r3, #0 + 803a03a: d105 bne.n 803a048 ((cr3its & (USART_CR3_RXFTIE | USART_CR3_EIE)) != 0U))) - 8039ffc: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc - 803a000: 4b5a ldr r3, [pc, #360] ; (803a16c ) - 803a002: 4013 ands r3, r2 + 803a03c: f8d7 20dc ldr.w r2, [r7, #220] ; 0xdc + 803a040: 4b5a ldr r3, [pc, #360] ; (803a1ac ) + 803a042: 4013 ands r3, r2 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) || - 803a004: 2b00 cmp r3, #0 - 803a006: d00b beq.n 803a020 + 803a044: 2b00 cmp r3, #0 + 803a046: d00b beq.n 803a060 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF); - 803a008: 687b ldr r3, [r7, #4] - 803a00a: 681b ldr r3, [r3, #0] - 803a00c: 2208 movs r2, #8 - 803a00e: 621a str r2, [r3, #32] + 803a048: 687b ldr r3, [r7, #4] + 803a04a: 681b ldr r3, [r3, #0] + 803a04c: 2208 movs r2, #8 + 803a04e: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_ORE; - 803a010: 687b ldr r3, [r7, #4] - 803a012: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803a016: f043 0208 orr.w r2, r3, #8 - 803a01a: 687b ldr r3, [r7, #4] - 803a01c: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803a050: 687b ldr r3, [r7, #4] + 803a052: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803a056: f043 0208 orr.w r2, r3, #8 + 803a05a: 687b ldr r3, [r7, #4] + 803a05c: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART Receiver Timeout interrupt occurred ---------------------------------*/ if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U)) - 803a020: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a024: f403 6300 and.w r3, r3, #2048 ; 0x800 - 803a028: 2b00 cmp r3, #0 - 803a02a: d012 beq.n 803a052 - 803a02c: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a030: f003 6380 and.w r3, r3, #67108864 ; 0x4000000 - 803a034: 2b00 cmp r3, #0 - 803a036: d00c beq.n 803a052 + 803a060: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a064: f403 6300 and.w r3, r3, #2048 ; 0x800 + 803a068: 2b00 cmp r3, #0 + 803a06a: d012 beq.n 803a092 + 803a06c: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a070: f003 6380 and.w r3, r3, #67108864 ; 0x4000000 + 803a074: 2b00 cmp r3, #0 + 803a076: d00c beq.n 803a092 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 803a038: 687b ldr r3, [r7, #4] - 803a03a: 681b ldr r3, [r3, #0] - 803a03c: f44f 6200 mov.w r2, #2048 ; 0x800 - 803a040: 621a str r2, [r3, #32] + 803a078: 687b ldr r3, [r7, #4] + 803a07a: 681b ldr r3, [r3, #0] + 803a07c: f44f 6200 mov.w r2, #2048 ; 0x800 + 803a080: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_RTO; - 803a042: 687b ldr r3, [r7, #4] - 803a044: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803a048: f043 0220 orr.w r2, r3, #32 - 803a04c: 687b ldr r3, [r7, #4] - 803a04e: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803a082: 687b ldr r3, [r7, #4] + 803a084: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803a088: f043 0220 orr.w r2, r3, #32 + 803a08c: 687b ldr r3, [r7, #4] + 803a08e: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* Call UART Error Call back function if need be ----------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) - 803a052: 687b ldr r3, [r7, #4] - 803a054: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803a058: 2b00 cmp r3, #0 - 803a05a: f000 82c0 beq.w 803a5de + 803a092: 687b ldr r3, [r7, #4] + 803a094: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803a098: 2b00 cmp r3, #0 + 803a09a: f000 82c0 beq.w 803a61e { /* UART in mode Receiver --------------------------------------------------*/ if (((isrflags & USART_ISR_RXNE_RXFNE) != 0U) - 803a05e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a062: f003 0320 and.w r3, r3, #32 - 803a066: 2b00 cmp r3, #0 - 803a068: d013 beq.n 803a092 + 803a09e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a0a2: f003 0320 and.w r3, r3, #32 + 803a0a6: 2b00 cmp r3, #0 + 803a0a8: d013 beq.n 803a0d2 && (((cr1its & USART_CR1_RXNEIE_RXFNEIE) != 0U) - 803a06a: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a06e: f003 0320 and.w r3, r3, #32 - 803a072: 2b00 cmp r3, #0 - 803a074: d105 bne.n 803a082 + 803a0aa: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a0ae: f003 0320 and.w r3, r3, #32 + 803a0b2: 2b00 cmp r3, #0 + 803a0b4: d105 bne.n 803a0c2 || ((cr3its & USART_CR3_RXFTIE) != 0U))) - 803a076: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 803a07a: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 - 803a07e: 2b00 cmp r3, #0 - 803a080: d007 beq.n 803a092 + 803a0b6: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 803a0ba: f003 5380 and.w r3, r3, #268435456 ; 0x10000000 + 803a0be: 2b00 cmp r3, #0 + 803a0c0: d007 beq.n 803a0d2 { if (huart->RxISR != NULL) - 803a082: 687b ldr r3, [r7, #4] - 803a084: 6f1b ldr r3, [r3, #112] ; 0x70 - 803a086: 2b00 cmp r3, #0 - 803a088: d003 beq.n 803a092 + 803a0c2: 687b ldr r3, [r7, #4] + 803a0c4: 6f1b ldr r3, [r3, #112] ; 0x70 + 803a0c6: 2b00 cmp r3, #0 + 803a0c8: d003 beq.n 803a0d2 { huart->RxISR(huart); - 803a08a: 687b ldr r3, [r7, #4] - 803a08c: 6f1b ldr r3, [r3, #112] ; 0x70 - 803a08e: 6878 ldr r0, [r7, #4] - 803a090: 4798 blx r3 + 803a0ca: 687b ldr r3, [r7, #4] + 803a0cc: 6f1b ldr r3, [r3, #112] ; 0x70 + 803a0ce: 6878 ldr r0, [r7, #4] + 803a0d0: 4798 blx r3 /* If Error is to be considered as blocking : - Receiver Timeout error in Reception - Overrun error in Reception - any error occurs in DMA mode reception */ errorcode = huart->ErrorCode; - 803a092: 687b ldr r3, [r7, #4] - 803a094: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803a098: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 + 803a0d2: 687b ldr r3, [r7, #4] + 803a0d4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803a0d8: f8c7 30d4 str.w r3, [r7, #212] ; 0xd4 if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || - 803a09c: 687b ldr r3, [r7, #4] - 803a09e: 681b ldr r3, [r3, #0] - 803a0a0: 689b ldr r3, [r3, #8] - 803a0a2: f003 0340 and.w r3, r3, #64 ; 0x40 - 803a0a6: 2b40 cmp r3, #64 ; 0x40 - 803a0a8: d005 beq.n 803a0b6 + 803a0dc: 687b ldr r3, [r7, #4] + 803a0de: 681b ldr r3, [r3, #0] + 803a0e0: 689b ldr r3, [r3, #8] + 803a0e2: f003 0340 and.w r3, r3, #64 ; 0x40 + 803a0e6: 2b40 cmp r3, #64 ; 0x40 + 803a0e8: d005 beq.n 803a0f6 ((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U)) - 803a0aa: f8d7 30d4 ldr.w r3, [r7, #212] ; 0xd4 - 803a0ae: f003 0328 and.w r3, r3, #40 ; 0x28 + 803a0ea: f8d7 30d4 ldr.w r3, [r7, #212] ; 0xd4 + 803a0ee: f003 0328 and.w r3, r3, #40 ; 0x28 if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) || - 803a0b2: 2b00 cmp r3, #0 - 803a0b4: d04f beq.n 803a156 + 803a0f2: 2b00 cmp r3, #0 + 803a0f4: d04f beq.n 803a196 { /* Blocking error : transfer is aborted Set the UART state ready to be able to start again the process, Disable Rx Interrupts, and disable Rx DMA request, if ongoing */ UART_EndRxTransfer(huart); - 803a0b6: 6878 ldr r0, [r7, #4] - 803a0b8: f001 fb48 bl 803b74c + 803a0f6: 6878 ldr r0, [r7, #4] + 803a0f8: f001 fb48 bl 803b78c /* Abort the UART DMA Rx channel if enabled */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a0bc: 687b ldr r3, [r7, #4] - 803a0be: 681b ldr r3, [r3, #0] - 803a0c0: 689b ldr r3, [r3, #8] - 803a0c2: f003 0340 and.w r3, r3, #64 ; 0x40 - 803a0c6: 2b40 cmp r3, #64 ; 0x40 - 803a0c8: d141 bne.n 803a14e + 803a0fc: 687b ldr r3, [r7, #4] + 803a0fe: 681b ldr r3, [r3, #0] + 803a100: 689b ldr r3, [r3, #8] + 803a102: f003 0340 and.w r3, r3, #64 ; 0x40 + 803a106: 2b40 cmp r3, #64 ; 0x40 + 803a108: d141 bne.n 803a18e { /* Disable the UART DMA Rx request if enabled */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 803a0ca: 687b ldr r3, [r7, #4] - 803a0cc: 681b ldr r3, [r3, #0] - 803a0ce: 3308 adds r3, #8 - 803a0d0: f8c7 309c str.w r3, [r7, #156] ; 0x9c + 803a10a: 687b ldr r3, [r7, #4] + 803a10c: 681b ldr r3, [r3, #0] + 803a10e: 3308 adds r3, #8 + 803a110: f8c7 309c str.w r3, [r7, #156] ; 0x9c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a0d4: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803a0d8: e853 3f00 ldrex r3, [r3] - 803a0dc: f8c7 3098 str.w r3, [r7, #152] ; 0x98 + 803a114: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803a118: e853 3f00 ldrex r3, [r3] + 803a11c: f8c7 3098 str.w r3, [r7, #152] ; 0x98 return(result); - 803a0e0: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 - 803a0e4: f023 0340 bic.w r3, r3, #64 ; 0x40 - 803a0e8: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 - 803a0ec: 687b ldr r3, [r7, #4] - 803a0ee: 681b ldr r3, [r3, #0] - 803a0f0: 3308 adds r3, #8 - 803a0f2: f8d7 20d0 ldr.w r2, [r7, #208] ; 0xd0 - 803a0f6: f8c7 20a8 str.w r2, [r7, #168] ; 0xa8 - 803a0fa: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 + 803a120: f8d7 3098 ldr.w r3, [r7, #152] ; 0x98 + 803a124: f023 0340 bic.w r3, r3, #64 ; 0x40 + 803a128: f8c7 30d0 str.w r3, [r7, #208] ; 0xd0 + 803a12c: 687b ldr r3, [r7, #4] + 803a12e: 681b ldr r3, [r3, #0] + 803a130: 3308 adds r3, #8 + 803a132: f8d7 20d0 ldr.w r2, [r7, #208] ; 0xd0 + 803a136: f8c7 20a8 str.w r2, [r7, #168] ; 0xa8 + 803a13a: f8c7 30a4 str.w r3, [r7, #164] ; 0xa4 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a0fe: f8d7 10a4 ldr.w r1, [r7, #164] ; 0xa4 - 803a102: f8d7 20a8 ldr.w r2, [r7, #168] ; 0xa8 - 803a106: e841 2300 strex r3, r2, [r1] - 803a10a: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0 + 803a13e: f8d7 10a4 ldr.w r1, [r7, #164] ; 0xa4 + 803a142: f8d7 20a8 ldr.w r2, [r7, #168] ; 0xa8 + 803a146: e841 2300 strex r3, r2, [r1] + 803a14a: f8c7 30a0 str.w r3, [r7, #160] ; 0xa0 return(result); - 803a10e: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0 - 803a112: 2b00 cmp r3, #0 - 803a114: d1d9 bne.n 803a0ca + 803a14e: f8d7 30a0 ldr.w r3, [r7, #160] ; 0xa0 + 803a152: 2b00 cmp r3, #0 + 803a154: d1d9 bne.n 803a10a /* Abort the UART DMA Rx channel */ if (huart->hdmarx != NULL) - 803a116: 687b ldr r3, [r7, #4] - 803a118: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a11a: 2b00 cmp r3, #0 - 803a11c: d013 beq.n 803a146 + 803a156: 687b ldr r3, [r7, #4] + 803a158: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a15a: 2b00 cmp r3, #0 + 803a15c: d013 beq.n 803a186 { /* Set the UART DMA Abort callback : will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */ huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError; - 803a11e: 687b ldr r3, [r7, #4] - 803a120: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a122: 4a14 ldr r2, [pc, #80] ; (803a174 ) - 803a124: 651a str r2, [r3, #80] ; 0x50 + 803a15e: 687b ldr r3, [r7, #4] + 803a160: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a162: 4a14 ldr r2, [pc, #80] ; (803a1b4 ) + 803a164: 651a str r2, [r3, #80] ; 0x50 /* Abort DMA RX */ if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK) - 803a126: 687b ldr r3, [r7, #4] - 803a128: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a12a: 4618 mov r0, r3 - 803a12c: f7f5 f97a bl 802f424 - 803a130: 4603 mov r3, r0 - 803a132: 2b00 cmp r3, #0 - 803a134: d017 beq.n 803a166 + 803a166: 687b ldr r3, [r7, #4] + 803a168: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a16a: 4618 mov r0, r3 + 803a16c: f7f5 f97a bl 802f464 + 803a170: 4603 mov r3, r0 + 803a172: 2b00 cmp r3, #0 + 803a174: d017 beq.n 803a1a6 { /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */ huart->hdmarx->XferAbortCallback(huart->hdmarx); - 803a136: 687b ldr r3, [r7, #4] - 803a138: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a13a: 6d1b ldr r3, [r3, #80] ; 0x50 - 803a13c: 687a ldr r2, [r7, #4] - 803a13e: 6fd2 ldr r2, [r2, #124] ; 0x7c - 803a140: 4610 mov r0, r2 - 803a142: 4798 blx r3 + 803a176: 687b ldr r3, [r7, #4] + 803a178: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a17a: 6d1b ldr r3, [r3, #80] ; 0x50 + 803a17c: 687a ldr r2, [r7, #4] + 803a17e: 6fd2 ldr r2, [r2, #124] ; 0x7c + 803a180: 4610 mov r0, r2 + 803a182: 4798 blx r3 if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a144: e00f b.n 803a166 + 803a184: e00f b.n 803a1a6 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803a146: 6878 ldr r0, [r7, #4] - 803a148: f000 fa60 bl 803a60c + 803a186: 6878 ldr r0, [r7, #4] + 803a188: f000 fa60 bl 803a64c if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a14c: e00b b.n 803a166 + 803a18c: e00b b.n 803a1a6 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803a14e: 6878 ldr r0, [r7, #4] - 803a150: f000 fa5c bl 803a60c + 803a18e: 6878 ldr r0, [r7, #4] + 803a190: f000 fa5c bl 803a64c if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a154: e007 b.n 803a166 + 803a194: e007 b.n 803a1a6 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803a156: 6878 ldr r0, [r7, #4] - 803a158: f000 fa58 bl 803a60c + 803a196: 6878 ldr r0, [r7, #4] + 803a198: f000 fa58 bl 803a64c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 803a15c: 687b ldr r3, [r7, #4] - 803a15e: 2200 movs r2, #0 - 803a160: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803a19c: 687b ldr r3, [r7, #4] + 803a19e: 2200 movs r2, #0 + 803a1a0: f8c3 208c str.w r2, [r3, #140] ; 0x8c } } return; - 803a164: e23b b.n 803a5de + 803a1a4: e23b b.n 803a61e if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a166: bf00 nop + 803a1a6: bf00 nop return; - 803a168: e239 b.n 803a5de - 803a16a: bf00 nop - 803a16c: 10000001 .word 0x10000001 - 803a170: 04000120 .word 0x04000120 - 803a174: 0803b94b .word 0x0803b94b + 803a1a8: e239 b.n 803a61e + 803a1aa: bf00 nop + 803a1ac: 10000001 .word 0x10000001 + 803a1b0: 04000120 .word 0x04000120 + 803a1b4: 0803b98b .word 0x0803b98b } /* End if some error occurs */ /* Check current reception Mode : If Reception till IDLE event has been selected : */ if ((huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803a178: 687b ldr r3, [r7, #4] - 803a17a: 6edb ldr r3, [r3, #108] ; 0x6c - 803a17c: 2b01 cmp r3, #1 - 803a17e: f040 81ce bne.w 803a51e + 803a1b8: 687b ldr r3, [r7, #4] + 803a1ba: 6edb ldr r3, [r3, #108] ; 0x6c + 803a1bc: 2b01 cmp r3, #1 + 803a1be: f040 81ce bne.w 803a55e && ((isrflags & USART_ISR_IDLE) != 0U) - 803a182: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a186: f003 0310 and.w r3, r3, #16 - 803a18a: 2b00 cmp r3, #0 - 803a18c: f000 81c7 beq.w 803a51e + 803a1c2: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a1c6: f003 0310 and.w r3, r3, #16 + 803a1ca: 2b00 cmp r3, #0 + 803a1cc: f000 81c7 beq.w 803a55e && ((cr1its & USART_ISR_IDLE) != 0U)) - 803a190: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a194: f003 0310 and.w r3, r3, #16 - 803a198: 2b00 cmp r3, #0 - 803a19a: f000 81c0 beq.w 803a51e + 803a1d0: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a1d4: f003 0310 and.w r3, r3, #16 + 803a1d8: 2b00 cmp r3, #0 + 803a1da: f000 81c0 beq.w 803a55e { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); - 803a19e: 687b ldr r3, [r7, #4] - 803a1a0: 681b ldr r3, [r3, #0] - 803a1a2: 2210 movs r2, #16 - 803a1a4: 621a str r2, [r3, #32] + 803a1de: 687b ldr r3, [r7, #4] + 803a1e0: 681b ldr r3, [r3, #0] + 803a1e2: 2210 movs r2, #16 + 803a1e4: 621a str r2, [r3, #32] /* Check if DMA mode is enabled in UART */ if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) - 803a1a6: 687b ldr r3, [r7, #4] - 803a1a8: 681b ldr r3, [r3, #0] - 803a1aa: 689b ldr r3, [r3, #8] - 803a1ac: f003 0340 and.w r3, r3, #64 ; 0x40 - 803a1b0: 2b40 cmp r3, #64 ; 0x40 - 803a1b2: f040 813b bne.w 803a42c + 803a1e6: 687b ldr r3, [r7, #4] + 803a1e8: 681b ldr r3, [r3, #0] + 803a1ea: 689b ldr r3, [r3, #8] + 803a1ec: f003 0340 and.w r3, r3, #64 ; 0x40 + 803a1f0: 2b40 cmp r3, #64 ; 0x40 + 803a1f2: f040 813b bne.w 803a46c { /* DMA mode enabled */ /* Check received length : If all expected data are received, do nothing, (DMA cplt callback will be called). Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ uint16_t nb_remaining_rx_data = (uint16_t) __HAL_DMA_GET_COUNTER(huart->hdmarx); - 803a1b6: 687b ldr r3, [r7, #4] - 803a1b8: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1ba: 681b ldr r3, [r3, #0] - 803a1bc: 4a8b ldr r2, [pc, #556] ; (803a3ec ) - 803a1be: 4293 cmp r3, r2 - 803a1c0: d059 beq.n 803a276 - 803a1c2: 687b ldr r3, [r7, #4] - 803a1c4: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1c6: 681b ldr r3, [r3, #0] - 803a1c8: 4a89 ldr r2, [pc, #548] ; (803a3f0 ) - 803a1ca: 4293 cmp r3, r2 - 803a1cc: d053 beq.n 803a276 - 803a1ce: 687b ldr r3, [r7, #4] - 803a1d0: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1d2: 681b ldr r3, [r3, #0] - 803a1d4: 4a87 ldr r2, [pc, #540] ; (803a3f4 ) - 803a1d6: 4293 cmp r3, r2 - 803a1d8: d04d beq.n 803a276 - 803a1da: 687b ldr r3, [r7, #4] - 803a1dc: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1de: 681b ldr r3, [r3, #0] - 803a1e0: 4a85 ldr r2, [pc, #532] ; (803a3f8 ) - 803a1e2: 4293 cmp r3, r2 - 803a1e4: d047 beq.n 803a276 - 803a1e6: 687b ldr r3, [r7, #4] - 803a1e8: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1ea: 681b ldr r3, [r3, #0] - 803a1ec: 4a83 ldr r2, [pc, #524] ; (803a3fc ) - 803a1ee: 4293 cmp r3, r2 - 803a1f0: d041 beq.n 803a276 - 803a1f2: 687b ldr r3, [r7, #4] - 803a1f4: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a1f6: 681b ldr r3, [r3, #0] - 803a1f8: 4a81 ldr r2, [pc, #516] ; (803a400 ) - 803a1fa: 4293 cmp r3, r2 - 803a1fc: d03b beq.n 803a276 - 803a1fe: 687b ldr r3, [r7, #4] - 803a200: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a202: 681b ldr r3, [r3, #0] - 803a204: 4a7f ldr r2, [pc, #508] ; (803a404 ) - 803a206: 4293 cmp r3, r2 - 803a208: d035 beq.n 803a276 - 803a20a: 687b ldr r3, [r7, #4] - 803a20c: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a20e: 681b ldr r3, [r3, #0] - 803a210: 4a7d ldr r2, [pc, #500] ; (803a408 ) - 803a212: 4293 cmp r3, r2 - 803a214: d02f beq.n 803a276 - 803a216: 687b ldr r3, [r7, #4] - 803a218: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a21a: 681b ldr r3, [r3, #0] - 803a21c: 4a7b ldr r2, [pc, #492] ; (803a40c ) - 803a21e: 4293 cmp r3, r2 - 803a220: d029 beq.n 803a276 - 803a222: 687b ldr r3, [r7, #4] - 803a224: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a226: 681b ldr r3, [r3, #0] - 803a228: 4a79 ldr r2, [pc, #484] ; (803a410 ) - 803a22a: 4293 cmp r3, r2 - 803a22c: d023 beq.n 803a276 - 803a22e: 687b ldr r3, [r7, #4] - 803a230: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a232: 681b ldr r3, [r3, #0] - 803a234: 4a77 ldr r2, [pc, #476] ; (803a414 ) - 803a236: 4293 cmp r3, r2 - 803a238: d01d beq.n 803a276 - 803a23a: 687b ldr r3, [r7, #4] - 803a23c: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a23e: 681b ldr r3, [r3, #0] - 803a240: 4a75 ldr r2, [pc, #468] ; (803a418 ) - 803a242: 4293 cmp r3, r2 - 803a244: d017 beq.n 803a276 - 803a246: 687b ldr r3, [r7, #4] - 803a248: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a24a: 681b ldr r3, [r3, #0] - 803a24c: 4a73 ldr r2, [pc, #460] ; (803a41c ) - 803a24e: 4293 cmp r3, r2 - 803a250: d011 beq.n 803a276 - 803a252: 687b ldr r3, [r7, #4] - 803a254: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a256: 681b ldr r3, [r3, #0] - 803a258: 4a71 ldr r2, [pc, #452] ; (803a420 ) - 803a25a: 4293 cmp r3, r2 - 803a25c: d00b beq.n 803a276 - 803a25e: 687b ldr r3, [r7, #4] - 803a260: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a262: 681b ldr r3, [r3, #0] - 803a264: 4a6f ldr r2, [pc, #444] ; (803a424 ) - 803a266: 4293 cmp r3, r2 - 803a268: d005 beq.n 803a276 - 803a26a: 687b ldr r3, [r7, #4] - 803a26c: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a26e: 681b ldr r3, [r3, #0] - 803a270: 4a6d ldr r2, [pc, #436] ; (803a428 ) - 803a272: 4293 cmp r3, r2 - 803a274: d105 bne.n 803a282 - 803a276: 687b ldr r3, [r7, #4] - 803a278: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a27a: 681b ldr r3, [r3, #0] - 803a27c: 685b ldr r3, [r3, #4] - 803a27e: b29b uxth r3, r3 - 803a280: e004 b.n 803a28c - 803a282: 687b ldr r3, [r7, #4] - 803a284: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a286: 681b ldr r3, [r3, #0] - 803a288: 685b ldr r3, [r3, #4] - 803a28a: b29b uxth r3, r3 - 803a28c: f8a7 30be strh.w r3, [r7, #190] ; 0xbe + 803a1f6: 687b ldr r3, [r7, #4] + 803a1f8: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a1fa: 681b ldr r3, [r3, #0] + 803a1fc: 4a8b ldr r2, [pc, #556] ; (803a42c ) + 803a1fe: 4293 cmp r3, r2 + 803a200: d059 beq.n 803a2b6 + 803a202: 687b ldr r3, [r7, #4] + 803a204: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a206: 681b ldr r3, [r3, #0] + 803a208: 4a89 ldr r2, [pc, #548] ; (803a430 ) + 803a20a: 4293 cmp r3, r2 + 803a20c: d053 beq.n 803a2b6 + 803a20e: 687b ldr r3, [r7, #4] + 803a210: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a212: 681b ldr r3, [r3, #0] + 803a214: 4a87 ldr r2, [pc, #540] ; (803a434 ) + 803a216: 4293 cmp r3, r2 + 803a218: d04d beq.n 803a2b6 + 803a21a: 687b ldr r3, [r7, #4] + 803a21c: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a21e: 681b ldr r3, [r3, #0] + 803a220: 4a85 ldr r2, [pc, #532] ; (803a438 ) + 803a222: 4293 cmp r3, r2 + 803a224: d047 beq.n 803a2b6 + 803a226: 687b ldr r3, [r7, #4] + 803a228: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a22a: 681b ldr r3, [r3, #0] + 803a22c: 4a83 ldr r2, [pc, #524] ; (803a43c ) + 803a22e: 4293 cmp r3, r2 + 803a230: d041 beq.n 803a2b6 + 803a232: 687b ldr r3, [r7, #4] + 803a234: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a236: 681b ldr r3, [r3, #0] + 803a238: 4a81 ldr r2, [pc, #516] ; (803a440 ) + 803a23a: 4293 cmp r3, r2 + 803a23c: d03b beq.n 803a2b6 + 803a23e: 687b ldr r3, [r7, #4] + 803a240: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a242: 681b ldr r3, [r3, #0] + 803a244: 4a7f ldr r2, [pc, #508] ; (803a444 ) + 803a246: 4293 cmp r3, r2 + 803a248: d035 beq.n 803a2b6 + 803a24a: 687b ldr r3, [r7, #4] + 803a24c: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a24e: 681b ldr r3, [r3, #0] + 803a250: 4a7d ldr r2, [pc, #500] ; (803a448 ) + 803a252: 4293 cmp r3, r2 + 803a254: d02f beq.n 803a2b6 + 803a256: 687b ldr r3, [r7, #4] + 803a258: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a25a: 681b ldr r3, [r3, #0] + 803a25c: 4a7b ldr r2, [pc, #492] ; (803a44c ) + 803a25e: 4293 cmp r3, r2 + 803a260: d029 beq.n 803a2b6 + 803a262: 687b ldr r3, [r7, #4] + 803a264: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a266: 681b ldr r3, [r3, #0] + 803a268: 4a79 ldr r2, [pc, #484] ; (803a450 ) + 803a26a: 4293 cmp r3, r2 + 803a26c: d023 beq.n 803a2b6 + 803a26e: 687b ldr r3, [r7, #4] + 803a270: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a272: 681b ldr r3, [r3, #0] + 803a274: 4a77 ldr r2, [pc, #476] ; (803a454 ) + 803a276: 4293 cmp r3, r2 + 803a278: d01d beq.n 803a2b6 + 803a27a: 687b ldr r3, [r7, #4] + 803a27c: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a27e: 681b ldr r3, [r3, #0] + 803a280: 4a75 ldr r2, [pc, #468] ; (803a458 ) + 803a282: 4293 cmp r3, r2 + 803a284: d017 beq.n 803a2b6 + 803a286: 687b ldr r3, [r7, #4] + 803a288: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a28a: 681b ldr r3, [r3, #0] + 803a28c: 4a73 ldr r2, [pc, #460] ; (803a45c ) + 803a28e: 4293 cmp r3, r2 + 803a290: d011 beq.n 803a2b6 + 803a292: 687b ldr r3, [r7, #4] + 803a294: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a296: 681b ldr r3, [r3, #0] + 803a298: 4a71 ldr r2, [pc, #452] ; (803a460 ) + 803a29a: 4293 cmp r3, r2 + 803a29c: d00b beq.n 803a2b6 + 803a29e: 687b ldr r3, [r7, #4] + 803a2a0: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a2a2: 681b ldr r3, [r3, #0] + 803a2a4: 4a6f ldr r2, [pc, #444] ; (803a464 ) + 803a2a6: 4293 cmp r3, r2 + 803a2a8: d005 beq.n 803a2b6 + 803a2aa: 687b ldr r3, [r7, #4] + 803a2ac: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a2ae: 681b ldr r3, [r3, #0] + 803a2b0: 4a6d ldr r2, [pc, #436] ; (803a468 ) + 803a2b2: 4293 cmp r3, r2 + 803a2b4: d105 bne.n 803a2c2 + 803a2b6: 687b ldr r3, [r7, #4] + 803a2b8: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a2ba: 681b ldr r3, [r3, #0] + 803a2bc: 685b ldr r3, [r3, #4] + 803a2be: b29b uxth r3, r3 + 803a2c0: e004 b.n 803a2cc + 803a2c2: 687b ldr r3, [r7, #4] + 803a2c4: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a2c6: 681b ldr r3, [r3, #0] + 803a2c8: 685b ldr r3, [r3, #4] + 803a2ca: b29b uxth r3, r3 + 803a2cc: f8a7 30be strh.w r3, [r7, #190] ; 0xbe if ((nb_remaining_rx_data > 0U) - 803a290: f8b7 30be ldrh.w r3, [r7, #190] ; 0xbe - 803a294: 2b00 cmp r3, #0 - 803a296: f000 81a4 beq.w 803a5e2 + 803a2d0: f8b7 30be ldrh.w r3, [r7, #190] ; 0xbe + 803a2d4: 2b00 cmp r3, #0 + 803a2d6: f000 81a4 beq.w 803a622 && (nb_remaining_rx_data < huart->RxXferSize)) - 803a29a: 687b ldr r3, [r7, #4] - 803a29c: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c - 803a2a0: f8b7 20be ldrh.w r2, [r7, #190] ; 0xbe - 803a2a4: 429a cmp r2, r3 - 803a2a6: f080 819c bcs.w 803a5e2 + 803a2da: 687b ldr r3, [r7, #4] + 803a2dc: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c + 803a2e0: f8b7 20be ldrh.w r2, [r7, #190] ; 0xbe + 803a2e4: 429a cmp r2, r3 + 803a2e6: f080 819c bcs.w 803a622 { /* Reception is not complete */ huart->RxXferCount = nb_remaining_rx_data; - 803a2aa: 687b ldr r3, [r7, #4] - 803a2ac: f8b7 20be ldrh.w r2, [r7, #190] ; 0xbe - 803a2b0: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803a2ea: 687b ldr r3, [r7, #4] + 803a2ec: f8b7 20be ldrh.w r2, [r7, #190] ; 0xbe + 803a2f0: f8a3 205e strh.w r2, [r3, #94] ; 0x5e /* In Normal mode, end DMA xfer and HAL UART Rx process*/ if (huart->hdmarx->Init.Mode != DMA_CIRCULAR) - 803a2b4: 687b ldr r3, [r7, #4] - 803a2b6: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a2b8: 69db ldr r3, [r3, #28] - 803a2ba: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 803a2be: f000 8086 beq.w 803a3ce + 803a2f4: 687b ldr r3, [r7, #4] + 803a2f6: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a2f8: 69db ldr r3, [r3, #28] + 803a2fa: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803a2fe: f000 8086 beq.w 803a40e { /* Disable PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 803a2c2: 687b ldr r3, [r7, #4] - 803a2c4: 681b ldr r3, [r3, #0] - 803a2c6: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 803a302: 687b ldr r3, [r7, #4] + 803a304: 681b ldr r3, [r3, #0] + 803a306: f8c7 3088 str.w r3, [r7, #136] ; 0x88 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a2ca: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 - 803a2ce: e853 3f00 ldrex r3, [r3] - 803a2d2: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 803a30a: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 803a30e: e853 3f00 ldrex r3, [r3] + 803a312: f8c7 3084 str.w r3, [r7, #132] ; 0x84 return(result); - 803a2d6: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 - 803a2da: f423 7380 bic.w r3, r3, #256 ; 0x100 - 803a2de: f8c7 30b8 str.w r3, [r7, #184] ; 0xb8 - 803a2e2: 687b ldr r3, [r7, #4] - 803a2e4: 681b ldr r3, [r3, #0] - 803a2e6: 461a mov r2, r3 - 803a2e8: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 - 803a2ec: f8c7 3094 str.w r3, [r7, #148] ; 0x94 - 803a2f0: f8c7 2090 str.w r2, [r7, #144] ; 0x90 + 803a316: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 803a31a: f423 7380 bic.w r3, r3, #256 ; 0x100 + 803a31e: f8c7 30b8 str.w r3, [r7, #184] ; 0xb8 + 803a322: 687b ldr r3, [r7, #4] + 803a324: 681b ldr r3, [r3, #0] + 803a326: 461a mov r2, r3 + 803a328: f8d7 30b8 ldr.w r3, [r7, #184] ; 0xb8 + 803a32c: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 803a330: f8c7 2090 str.w r2, [r7, #144] ; 0x90 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a2f4: f8d7 1090 ldr.w r1, [r7, #144] ; 0x90 - 803a2f8: f8d7 2094 ldr.w r2, [r7, #148] ; 0x94 - 803a2fc: e841 2300 strex r3, r2, [r1] - 803a300: f8c7 308c str.w r3, [r7, #140] ; 0x8c + 803a334: f8d7 1090 ldr.w r1, [r7, #144] ; 0x90 + 803a338: f8d7 2094 ldr.w r2, [r7, #148] ; 0x94 + 803a33c: e841 2300 strex r3, r2, [r1] + 803a340: f8c7 308c str.w r3, [r7, #140] ; 0x8c return(result); - 803a304: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c - 803a308: 2b00 cmp r3, #0 - 803a30a: d1da bne.n 803a2c2 + 803a344: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c + 803a348: 2b00 cmp r3, #0 + 803a34a: d1da bne.n 803a302 ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803a30c: 687b ldr r3, [r7, #4] - 803a30e: 681b ldr r3, [r3, #0] - 803a310: 3308 adds r3, #8 - 803a312: 677b str r3, [r7, #116] ; 0x74 + 803a34c: 687b ldr r3, [r7, #4] + 803a34e: 681b ldr r3, [r3, #0] + 803a350: 3308 adds r3, #8 + 803a352: 677b str r3, [r7, #116] ; 0x74 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a314: 6f7b ldr r3, [r7, #116] ; 0x74 - 803a316: e853 3f00 ldrex r3, [r3] - 803a31a: 673b str r3, [r7, #112] ; 0x70 + 803a354: 6f7b ldr r3, [r7, #116] ; 0x74 + 803a356: e853 3f00 ldrex r3, [r3] + 803a35a: 673b str r3, [r7, #112] ; 0x70 return(result); - 803a31c: 6f3b ldr r3, [r7, #112] ; 0x70 - 803a31e: f023 0301 bic.w r3, r3, #1 - 803a322: f8c7 30b4 str.w r3, [r7, #180] ; 0xb4 - 803a326: 687b ldr r3, [r7, #4] - 803a328: 681b ldr r3, [r3, #0] - 803a32a: 3308 adds r3, #8 - 803a32c: f8d7 20b4 ldr.w r2, [r7, #180] ; 0xb4 - 803a330: f8c7 2080 str.w r2, [r7, #128] ; 0x80 - 803a334: 67fb str r3, [r7, #124] ; 0x7c + 803a35c: 6f3b ldr r3, [r7, #112] ; 0x70 + 803a35e: f023 0301 bic.w r3, r3, #1 + 803a362: f8c7 30b4 str.w r3, [r7, #180] ; 0xb4 + 803a366: 687b ldr r3, [r7, #4] + 803a368: 681b ldr r3, [r3, #0] + 803a36a: 3308 adds r3, #8 + 803a36c: f8d7 20b4 ldr.w r2, [r7, #180] ; 0xb4 + 803a370: f8c7 2080 str.w r2, [r7, #128] ; 0x80 + 803a374: 67fb str r3, [r7, #124] ; 0x7c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a336: 6ff9 ldr r1, [r7, #124] ; 0x7c - 803a338: f8d7 2080 ldr.w r2, [r7, #128] ; 0x80 - 803a33c: e841 2300 strex r3, r2, [r1] - 803a340: 67bb str r3, [r7, #120] ; 0x78 + 803a376: 6ff9 ldr r1, [r7, #124] ; 0x7c + 803a378: f8d7 2080 ldr.w r2, [r7, #128] ; 0x80 + 803a37c: e841 2300 strex r3, r2, [r1] + 803a380: 67bb str r3, [r7, #120] ; 0x78 return(result); - 803a342: 6fbb ldr r3, [r7, #120] ; 0x78 - 803a344: 2b00 cmp r3, #0 - 803a346: d1e1 bne.n 803a30c + 803a382: 6fbb ldr r3, [r7, #120] ; 0x78 + 803a384: 2b00 cmp r3, #0 + 803a386: d1e1 bne.n 803a34c /* Disable the DMA transfer for the receiver request by resetting the DMAR bit in the UART CR3 register */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR); - 803a348: 687b ldr r3, [r7, #4] - 803a34a: 681b ldr r3, [r3, #0] - 803a34c: 3308 adds r3, #8 - 803a34e: 663b str r3, [r7, #96] ; 0x60 + 803a388: 687b ldr r3, [r7, #4] + 803a38a: 681b ldr r3, [r3, #0] + 803a38c: 3308 adds r3, #8 + 803a38e: 663b str r3, [r7, #96] ; 0x60 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a350: 6e3b ldr r3, [r7, #96] ; 0x60 - 803a352: e853 3f00 ldrex r3, [r3] - 803a356: 65fb str r3, [r7, #92] ; 0x5c + 803a390: 6e3b ldr r3, [r7, #96] ; 0x60 + 803a392: e853 3f00 ldrex r3, [r3] + 803a396: 65fb str r3, [r7, #92] ; 0x5c return(result); - 803a358: 6dfb ldr r3, [r7, #92] ; 0x5c - 803a35a: f023 0340 bic.w r3, r3, #64 ; 0x40 - 803a35e: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 - 803a362: 687b ldr r3, [r7, #4] - 803a364: 681b ldr r3, [r3, #0] - 803a366: 3308 adds r3, #8 - 803a368: f8d7 20b0 ldr.w r2, [r7, #176] ; 0xb0 - 803a36c: 66fa str r2, [r7, #108] ; 0x6c - 803a36e: 66bb str r3, [r7, #104] ; 0x68 + 803a398: 6dfb ldr r3, [r7, #92] ; 0x5c + 803a39a: f023 0340 bic.w r3, r3, #64 ; 0x40 + 803a39e: f8c7 30b0 str.w r3, [r7, #176] ; 0xb0 + 803a3a2: 687b ldr r3, [r7, #4] + 803a3a4: 681b ldr r3, [r3, #0] + 803a3a6: 3308 adds r3, #8 + 803a3a8: f8d7 20b0 ldr.w r2, [r7, #176] ; 0xb0 + 803a3ac: 66fa str r2, [r7, #108] ; 0x6c + 803a3ae: 66bb str r3, [r7, #104] ; 0x68 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a370: 6eb9 ldr r1, [r7, #104] ; 0x68 - 803a372: 6efa ldr r2, [r7, #108] ; 0x6c - 803a374: e841 2300 strex r3, r2, [r1] - 803a378: 667b str r3, [r7, #100] ; 0x64 + 803a3b0: 6eb9 ldr r1, [r7, #104] ; 0x68 + 803a3b2: 6efa ldr r2, [r7, #108] ; 0x6c + 803a3b4: e841 2300 strex r3, r2, [r1] + 803a3b8: 667b str r3, [r7, #100] ; 0x64 return(result); - 803a37a: 6e7b ldr r3, [r7, #100] ; 0x64 - 803a37c: 2b00 cmp r3, #0 - 803a37e: d1e3 bne.n 803a348 + 803a3ba: 6e7b ldr r3, [r7, #100] ; 0x64 + 803a3bc: 2b00 cmp r3, #0 + 803a3be: d1e3 bne.n 803a388 /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803a380: 687b ldr r3, [r7, #4] - 803a382: 2220 movs r2, #32 - 803a384: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803a3c0: 687b ldr r3, [r7, #4] + 803a3c2: 2220 movs r2, #32 + 803a3c4: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803a388: 687b ldr r3, [r7, #4] - 803a38a: 2200 movs r2, #0 - 803a38c: 66da str r2, [r3, #108] ; 0x6c + 803a3c8: 687b ldr r3, [r7, #4] + 803a3ca: 2200 movs r2, #0 + 803a3cc: 66da str r2, [r3, #108] ; 0x6c ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803a38e: 687b ldr r3, [r7, #4] - 803a390: 681b ldr r3, [r3, #0] - 803a392: 64fb str r3, [r7, #76] ; 0x4c + 803a3ce: 687b ldr r3, [r7, #4] + 803a3d0: 681b ldr r3, [r3, #0] + 803a3d2: 64fb str r3, [r7, #76] ; 0x4c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a394: 6cfb ldr r3, [r7, #76] ; 0x4c - 803a396: e853 3f00 ldrex r3, [r3] - 803a39a: 64bb str r3, [r7, #72] ; 0x48 + 803a3d4: 6cfb ldr r3, [r7, #76] ; 0x4c + 803a3d6: e853 3f00 ldrex r3, [r3] + 803a3da: 64bb str r3, [r7, #72] ; 0x48 return(result); - 803a39c: 6cbb ldr r3, [r7, #72] ; 0x48 - 803a39e: f023 0310 bic.w r3, r3, #16 - 803a3a2: f8c7 30ac str.w r3, [r7, #172] ; 0xac - 803a3a6: 687b ldr r3, [r7, #4] - 803a3a8: 681b ldr r3, [r3, #0] - 803a3aa: 461a mov r2, r3 - 803a3ac: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac - 803a3b0: 65bb str r3, [r7, #88] ; 0x58 - 803a3b2: 657a str r2, [r7, #84] ; 0x54 + 803a3dc: 6cbb ldr r3, [r7, #72] ; 0x48 + 803a3de: f023 0310 bic.w r3, r3, #16 + 803a3e2: f8c7 30ac str.w r3, [r7, #172] ; 0xac + 803a3e6: 687b ldr r3, [r7, #4] + 803a3e8: 681b ldr r3, [r3, #0] + 803a3ea: 461a mov r2, r3 + 803a3ec: f8d7 30ac ldr.w r3, [r7, #172] ; 0xac + 803a3f0: 65bb str r3, [r7, #88] ; 0x58 + 803a3f2: 657a str r2, [r7, #84] ; 0x54 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a3b4: 6d79 ldr r1, [r7, #84] ; 0x54 - 803a3b6: 6dba ldr r2, [r7, #88] ; 0x58 - 803a3b8: e841 2300 strex r3, r2, [r1] - 803a3bc: 653b str r3, [r7, #80] ; 0x50 + 803a3f4: 6d79 ldr r1, [r7, #84] ; 0x54 + 803a3f6: 6dba ldr r2, [r7, #88] ; 0x58 + 803a3f8: e841 2300 strex r3, r2, [r1] + 803a3fc: 653b str r3, [r7, #80] ; 0x50 return(result); - 803a3be: 6d3b ldr r3, [r7, #80] ; 0x50 - 803a3c0: 2b00 cmp r3, #0 - 803a3c2: d1e4 bne.n 803a38e + 803a3fe: 6d3b ldr r3, [r7, #80] ; 0x50 + 803a400: 2b00 cmp r3, #0 + 803a402: d1e4 bne.n 803a3ce /* Last bytes received, so no need as the abort is immediate */ (void)HAL_DMA_Abort(huart->hdmarx); - 803a3c4: 687b ldr r3, [r7, #4] - 803a3c6: 6fdb ldr r3, [r3, #124] ; 0x7c - 803a3c8: 4618 mov r0, r3 - 803a3ca: f7f4 fd0d bl 802ede8 + 803a404: 687b ldr r3, [r7, #4] + 803a406: 6fdb ldr r3, [r3, #124] ; 0x7c + 803a408: 4618 mov r0, r3 + 803a40a: f7f4 fd0d bl 802ee28 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, (huart->RxXferSize - huart->RxXferCount)); - 803a3ce: 687b ldr r3, [r7, #4] - 803a3d0: f8b3 205c ldrh.w r2, [r3, #92] ; 0x5c - 803a3d4: 687b ldr r3, [r7, #4] - 803a3d6: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803a3da: b29b uxth r3, r3 - 803a3dc: 1ad3 subs r3, r2, r3 - 803a3de: b29b uxth r3, r3 - 803a3e0: 4619 mov r1, r3 - 803a3e2: 6878 ldr r0, [r7, #4] - 803a3e4: f000 f91c bl 803a620 + 803a40e: 687b ldr r3, [r7, #4] + 803a410: f8b3 205c ldrh.w r2, [r3, #92] ; 0x5c + 803a414: 687b ldr r3, [r7, #4] + 803a416: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803a41a: b29b uxth r3, r3 + 803a41c: 1ad3 subs r3, r2, r3 + 803a41e: b29b uxth r3, r3 + 803a420: 4619 mov r1, r3 + 803a422: 6878 ldr r0, [r7, #4] + 803a424: f000 f91c bl 803a660 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } return; - 803a3e8: e0fb b.n 803a5e2 - 803a3ea: bf00 nop - 803a3ec: 40020010 .word 0x40020010 - 803a3f0: 40020028 .word 0x40020028 - 803a3f4: 40020040 .word 0x40020040 - 803a3f8: 40020058 .word 0x40020058 - 803a3fc: 40020070 .word 0x40020070 - 803a400: 40020088 .word 0x40020088 - 803a404: 400200a0 .word 0x400200a0 - 803a408: 400200b8 .word 0x400200b8 - 803a40c: 40020410 .word 0x40020410 - 803a410: 40020428 .word 0x40020428 - 803a414: 40020440 .word 0x40020440 - 803a418: 40020458 .word 0x40020458 - 803a41c: 40020470 .word 0x40020470 - 803a420: 40020488 .word 0x40020488 - 803a424: 400204a0 .word 0x400204a0 - 803a428: 400204b8 .word 0x400204b8 + 803a428: e0fb b.n 803a622 + 803a42a: bf00 nop + 803a42c: 40020010 .word 0x40020010 + 803a430: 40020028 .word 0x40020028 + 803a434: 40020040 .word 0x40020040 + 803a438: 40020058 .word 0x40020058 + 803a43c: 40020070 .word 0x40020070 + 803a440: 40020088 .word 0x40020088 + 803a444: 400200a0 .word 0x400200a0 + 803a448: 400200b8 .word 0x400200b8 + 803a44c: 40020410 .word 0x40020410 + 803a450: 40020428 .word 0x40020428 + 803a454: 40020440 .word 0x40020440 + 803a458: 40020458 .word 0x40020458 + 803a45c: 40020470 .word 0x40020470 + 803a460: 40020488 .word 0x40020488 + 803a464: 400204a0 .word 0x400204a0 + 803a468: 400204b8 .word 0x400204b8 else { /* DMA mode not enabled */ /* Check received length : If all expected data are received, do nothing. Otherwise, if at least one data has already been received, IDLE event is to be notified to user */ uint16_t nb_rx_data = huart->RxXferSize - huart->RxXferCount; - 803a42c: 687b ldr r3, [r7, #4] - 803a42e: f8b3 205c ldrh.w r2, [r3, #92] ; 0x5c - 803a432: 687b ldr r3, [r7, #4] - 803a434: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803a438: b29b uxth r3, r3 - 803a43a: 1ad3 subs r3, r2, r3 - 803a43c: f8a7 30ce strh.w r3, [r7, #206] ; 0xce + 803a46c: 687b ldr r3, [r7, #4] + 803a46e: f8b3 205c ldrh.w r2, [r3, #92] ; 0x5c + 803a472: 687b ldr r3, [r7, #4] + 803a474: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803a478: b29b uxth r3, r3 + 803a47a: 1ad3 subs r3, r2, r3 + 803a47c: f8a7 30ce strh.w r3, [r7, #206] ; 0xce if ((huart->RxXferCount > 0U) - 803a440: 687b ldr r3, [r7, #4] - 803a442: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803a446: b29b uxth r3, r3 - 803a448: 2b00 cmp r3, #0 - 803a44a: f000 80cc beq.w 803a5e6 + 803a480: 687b ldr r3, [r7, #4] + 803a482: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803a486: b29b uxth r3, r3 + 803a488: 2b00 cmp r3, #0 + 803a48a: f000 80cc beq.w 803a626 && (nb_rx_data > 0U)) - 803a44e: f8b7 30ce ldrh.w r3, [r7, #206] ; 0xce - 803a452: 2b00 cmp r3, #0 - 803a454: f000 80c7 beq.w 803a5e6 + 803a48e: f8b7 30ce ldrh.w r3, [r7, #206] ; 0xce + 803a492: 2b00 cmp r3, #0 + 803a494: f000 80c7 beq.w 803a626 { /* Disable the UART Parity Error Interrupt and RXNE interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 803a458: 687b ldr r3, [r7, #4] - 803a45a: 681b ldr r3, [r3, #0] - 803a45c: 63bb str r3, [r7, #56] ; 0x38 + 803a498: 687b ldr r3, [r7, #4] + 803a49a: 681b ldr r3, [r3, #0] + 803a49c: 63bb str r3, [r7, #56] ; 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a45e: 6bbb ldr r3, [r7, #56] ; 0x38 - 803a460: e853 3f00 ldrex r3, [r3] - 803a464: 637b str r3, [r7, #52] ; 0x34 + 803a49e: 6bbb ldr r3, [r7, #56] ; 0x38 + 803a4a0: e853 3f00 ldrex r3, [r3] + 803a4a4: 637b str r3, [r7, #52] ; 0x34 return(result); - 803a466: 6b7b ldr r3, [r7, #52] ; 0x34 - 803a468: f423 7390 bic.w r3, r3, #288 ; 0x120 - 803a46c: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 - 803a470: 687b ldr r3, [r7, #4] - 803a472: 681b ldr r3, [r3, #0] - 803a474: 461a mov r2, r3 - 803a476: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 - 803a47a: 647b str r3, [r7, #68] ; 0x44 - 803a47c: 643a str r2, [r7, #64] ; 0x40 + 803a4a6: 6b7b ldr r3, [r7, #52] ; 0x34 + 803a4a8: f423 7390 bic.w r3, r3, #288 ; 0x120 + 803a4ac: f8c7 30c8 str.w r3, [r7, #200] ; 0xc8 + 803a4b0: 687b ldr r3, [r7, #4] + 803a4b2: 681b ldr r3, [r3, #0] + 803a4b4: 461a mov r2, r3 + 803a4b6: f8d7 30c8 ldr.w r3, [r7, #200] ; 0xc8 + 803a4ba: 647b str r3, [r7, #68] ; 0x44 + 803a4bc: 643a str r2, [r7, #64] ; 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a47e: 6c39 ldr r1, [r7, #64] ; 0x40 - 803a480: 6c7a ldr r2, [r7, #68] ; 0x44 - 803a482: e841 2300 strex r3, r2, [r1] - 803a486: 63fb str r3, [r7, #60] ; 0x3c + 803a4be: 6c39 ldr r1, [r7, #64] ; 0x40 + 803a4c0: 6c7a ldr r2, [r7, #68] ; 0x44 + 803a4c2: e841 2300 strex r3, r2, [r1] + 803a4c6: 63fb str r3, [r7, #60] ; 0x3c return(result); - 803a488: 6bfb ldr r3, [r7, #60] ; 0x3c - 803a48a: 2b00 cmp r3, #0 - 803a48c: d1e4 bne.n 803a458 + 803a4c8: 6bfb ldr r3, [r7, #60] ; 0x3c + 803a4ca: 2b00 cmp r3, #0 + 803a4cc: d1e4 bne.n 803a498 /* Disable the UART Error Interrupt:(Frame error, noise error, overrun error) and RX FIFO Threshold interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 803a48e: 687b ldr r3, [r7, #4] - 803a490: 681b ldr r3, [r3, #0] - 803a492: 3308 adds r3, #8 - 803a494: 627b str r3, [r7, #36] ; 0x24 + 803a4ce: 687b ldr r3, [r7, #4] + 803a4d0: 681b ldr r3, [r3, #0] + 803a4d2: 3308 adds r3, #8 + 803a4d4: 627b str r3, [r7, #36] ; 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a496: 6a7b ldr r3, [r7, #36] ; 0x24 - 803a498: e853 3f00 ldrex r3, [r3] - 803a49c: 623b str r3, [r7, #32] + 803a4d6: 6a7b ldr r3, [r7, #36] ; 0x24 + 803a4d8: e853 3f00 ldrex r3, [r3] + 803a4dc: 623b str r3, [r7, #32] return(result); - 803a49e: 6a3a ldr r2, [r7, #32] - 803a4a0: 4b54 ldr r3, [pc, #336] ; (803a5f4 ) - 803a4a2: 4013 ands r3, r2 - 803a4a4: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 - 803a4a8: 687b ldr r3, [r7, #4] - 803a4aa: 681b ldr r3, [r3, #0] - 803a4ac: 3308 adds r3, #8 - 803a4ae: f8d7 20c4 ldr.w r2, [r7, #196] ; 0xc4 - 803a4b2: 633a str r2, [r7, #48] ; 0x30 - 803a4b4: 62fb str r3, [r7, #44] ; 0x2c + 803a4de: 6a3a ldr r2, [r7, #32] + 803a4e0: 4b54 ldr r3, [pc, #336] ; (803a634 ) + 803a4e2: 4013 ands r3, r2 + 803a4e4: f8c7 30c4 str.w r3, [r7, #196] ; 0xc4 + 803a4e8: 687b ldr r3, [r7, #4] + 803a4ea: 681b ldr r3, [r3, #0] + 803a4ec: 3308 adds r3, #8 + 803a4ee: f8d7 20c4 ldr.w r2, [r7, #196] ; 0xc4 + 803a4f2: 633a str r2, [r7, #48] ; 0x30 + 803a4f4: 62fb str r3, [r7, #44] ; 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a4b6: 6af9 ldr r1, [r7, #44] ; 0x2c - 803a4b8: 6b3a ldr r2, [r7, #48] ; 0x30 - 803a4ba: e841 2300 strex r3, r2, [r1] - 803a4be: 62bb str r3, [r7, #40] ; 0x28 + 803a4f6: 6af9 ldr r1, [r7, #44] ; 0x2c + 803a4f8: 6b3a ldr r2, [r7, #48] ; 0x30 + 803a4fa: e841 2300 strex r3, r2, [r1] + 803a4fe: 62bb str r3, [r7, #40] ; 0x28 return(result); - 803a4c0: 6abb ldr r3, [r7, #40] ; 0x28 - 803a4c2: 2b00 cmp r3, #0 - 803a4c4: d1e3 bne.n 803a48e + 803a500: 6abb ldr r3, [r7, #40] ; 0x28 + 803a502: 2b00 cmp r3, #0 + 803a504: d1e3 bne.n 803a4ce /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803a4c6: 687b ldr r3, [r7, #4] - 803a4c8: 2220 movs r2, #32 - 803a4ca: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803a506: 687b ldr r3, [r7, #4] + 803a508: 2220 movs r2, #32 + 803a50a: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803a4ce: 687b ldr r3, [r7, #4] - 803a4d0: 2200 movs r2, #0 - 803a4d2: 66da str r2, [r3, #108] ; 0x6c + 803a50e: 687b ldr r3, [r7, #4] + 803a510: 2200 movs r2, #0 + 803a512: 66da str r2, [r3, #108] ; 0x6c /* Clear RxISR function pointer */ huart->RxISR = NULL; - 803a4d4: 687b ldr r3, [r7, #4] - 803a4d6: 2200 movs r2, #0 - 803a4d8: 671a str r2, [r3, #112] ; 0x70 + 803a514: 687b ldr r3, [r7, #4] + 803a516: 2200 movs r2, #0 + 803a518: 671a str r2, [r3, #112] ; 0x70 ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803a4da: 687b ldr r3, [r7, #4] - 803a4dc: 681b ldr r3, [r3, #0] - 803a4de: 613b str r3, [r7, #16] + 803a51a: 687b ldr r3, [r7, #4] + 803a51c: 681b ldr r3, [r3, #0] + 803a51e: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803a4e0: 693b ldr r3, [r7, #16] - 803a4e2: e853 3f00 ldrex r3, [r3] - 803a4e6: 60fb str r3, [r7, #12] + 803a520: 693b ldr r3, [r7, #16] + 803a522: e853 3f00 ldrex r3, [r3] + 803a526: 60fb str r3, [r7, #12] return(result); - 803a4e8: 68fb ldr r3, [r7, #12] - 803a4ea: f023 0310 bic.w r3, r3, #16 - 803a4ee: f8c7 30c0 str.w r3, [r7, #192] ; 0xc0 - 803a4f2: 687b ldr r3, [r7, #4] - 803a4f4: 681b ldr r3, [r3, #0] - 803a4f6: 461a mov r2, r3 - 803a4f8: f8d7 30c0 ldr.w r3, [r7, #192] ; 0xc0 - 803a4fc: 61fb str r3, [r7, #28] - 803a4fe: 61ba str r2, [r7, #24] + 803a528: 68fb ldr r3, [r7, #12] + 803a52a: f023 0310 bic.w r3, r3, #16 + 803a52e: f8c7 30c0 str.w r3, [r7, #192] ; 0xc0 + 803a532: 687b ldr r3, [r7, #4] + 803a534: 681b ldr r3, [r3, #0] + 803a536: 461a mov r2, r3 + 803a538: f8d7 30c0 ldr.w r3, [r7, #192] ; 0xc0 + 803a53c: 61fb str r3, [r7, #28] + 803a53e: 61ba str r2, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803a500: 69b9 ldr r1, [r7, #24] - 803a502: 69fa ldr r2, [r7, #28] - 803a504: e841 2300 strex r3, r2, [r1] - 803a508: 617b str r3, [r7, #20] + 803a540: 69b9 ldr r1, [r7, #24] + 803a542: 69fa ldr r2, [r7, #28] + 803a544: e841 2300 strex r3, r2, [r1] + 803a548: 617b str r3, [r7, #20] return(result); - 803a50a: 697b ldr r3, [r7, #20] - 803a50c: 2b00 cmp r3, #0 - 803a50e: d1e4 bne.n 803a4da + 803a54a: 697b ldr r3, [r7, #20] + 803a54c: 2b00 cmp r3, #0 + 803a54e: d1e4 bne.n 803a51a #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx complete callback*/ huart->RxEventCallback(huart, nb_rx_data); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, nb_rx_data); - 803a510: f8b7 30ce ldrh.w r3, [r7, #206] ; 0xce - 803a514: 4619 mov r1, r3 - 803a516: 6878 ldr r0, [r7, #4] - 803a518: f000 f882 bl 803a620 + 803a550: f8b7 30ce ldrh.w r3, [r7, #206] ; 0xce + 803a554: 4619 mov r1, r3 + 803a556: 6878 ldr r0, [r7, #4] + 803a558: f000 f882 bl 803a660 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */ } return; - 803a51c: e063 b.n 803a5e6 + 803a55c: e063 b.n 803a626 } } /* UART wakeup from Stop mode interrupt occurred ---------------------------*/ if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U)) - 803a51e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a522: f403 1380 and.w r3, r3, #1048576 ; 0x100000 - 803a526: 2b00 cmp r3, #0 - 803a528: d00e beq.n 803a548 - 803a52a: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 803a52e: f403 0380 and.w r3, r3, #4194304 ; 0x400000 - 803a532: 2b00 cmp r3, #0 - 803a534: d008 beq.n 803a548 + 803a55e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a562: f403 1380 and.w r3, r3, #1048576 ; 0x100000 + 803a566: 2b00 cmp r3, #0 + 803a568: d00e beq.n 803a588 + 803a56a: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 803a56e: f403 0380 and.w r3, r3, #4194304 ; 0x400000 + 803a572: 2b00 cmp r3, #0 + 803a574: d008 beq.n 803a588 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF); - 803a536: 687b ldr r3, [r7, #4] - 803a538: 681b ldr r3, [r3, #0] - 803a53a: f44f 1280 mov.w r2, #1048576 ; 0x100000 - 803a53e: 621a str r2, [r3, #32] + 803a576: 687b ldr r3, [r7, #4] + 803a578: 681b ldr r3, [r3, #0] + 803a57a: f44f 1280 mov.w r2, #1048576 ; 0x100000 + 803a57e: 621a str r2, [r3, #32] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /* Call registered Wakeup Callback */ huart->WakeupCallback(huart); #else /* Call legacy weak Wakeup Callback */ HAL_UARTEx_WakeupCallback(huart); - 803a540: 6878 ldr r0, [r7, #4] - 803a542: f001 fe9f bl 803c284 + 803a580: 6878 ldr r0, [r7, #4] + 803a582: f001 fe9f bl 803c2c4 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return; - 803a546: e051 b.n 803a5ec + 803a586: e051 b.n 803a62c } /* UART in mode Transmitter ------------------------------------------------*/ if (((isrflags & USART_ISR_TXE_TXFNF) != 0U) - 803a548: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a54c: f003 0380 and.w r3, r3, #128 ; 0x80 - 803a550: 2b00 cmp r3, #0 - 803a552: d014 beq.n 803a57e + 803a588: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a58c: f003 0380 and.w r3, r3, #128 ; 0x80 + 803a590: 2b00 cmp r3, #0 + 803a592: d014 beq.n 803a5be && (((cr1its & USART_CR1_TXEIE_TXFNFIE) != 0U) - 803a554: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a558: f003 0380 and.w r3, r3, #128 ; 0x80 - 803a55c: 2b00 cmp r3, #0 - 803a55e: d105 bne.n 803a56c + 803a594: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a598: f003 0380 and.w r3, r3, #128 ; 0x80 + 803a59c: 2b00 cmp r3, #0 + 803a59e: d105 bne.n 803a5ac || ((cr3its & USART_CR3_TXFTIE) != 0U))) - 803a560: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc - 803a564: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 803a568: 2b00 cmp r3, #0 - 803a56a: d008 beq.n 803a57e + 803a5a0: f8d7 30dc ldr.w r3, [r7, #220] ; 0xdc + 803a5a4: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 803a5a8: 2b00 cmp r3, #0 + 803a5aa: d008 beq.n 803a5be { if (huart->TxISR != NULL) - 803a56c: 687b ldr r3, [r7, #4] - 803a56e: 6f5b ldr r3, [r3, #116] ; 0x74 - 803a570: 2b00 cmp r3, #0 - 803a572: d03a beq.n 803a5ea + 803a5ac: 687b ldr r3, [r7, #4] + 803a5ae: 6f5b ldr r3, [r3, #116] ; 0x74 + 803a5b0: 2b00 cmp r3, #0 + 803a5b2: d03a beq.n 803a62a { huart->TxISR(huart); - 803a574: 687b ldr r3, [r7, #4] - 803a576: 6f5b ldr r3, [r3, #116] ; 0x74 - 803a578: 6878 ldr r0, [r7, #4] - 803a57a: 4798 blx r3 + 803a5b4: 687b ldr r3, [r7, #4] + 803a5b6: 6f5b ldr r3, [r3, #116] ; 0x74 + 803a5b8: 6878 ldr r0, [r7, #4] + 803a5ba: 4798 blx r3 } return; - 803a57c: e035 b.n 803a5ea + 803a5bc: e035 b.n 803a62a } /* UART in mode Transmitter (transmission end) -----------------------------*/ if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U)) - 803a57e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a582: f003 0340 and.w r3, r3, #64 ; 0x40 - 803a586: 2b00 cmp r3, #0 - 803a588: d009 beq.n 803a59e - 803a58a: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a58e: f003 0340 and.w r3, r3, #64 ; 0x40 - 803a592: 2b00 cmp r3, #0 - 803a594: d003 beq.n 803a59e + 803a5be: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a5c2: f003 0340 and.w r3, r3, #64 ; 0x40 + 803a5c6: 2b00 cmp r3, #0 + 803a5c8: d009 beq.n 803a5de + 803a5ca: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a5ce: f003 0340 and.w r3, r3, #64 ; 0x40 + 803a5d2: 2b00 cmp r3, #0 + 803a5d4: d003 beq.n 803a5de { UART_EndTransmit_IT(huart); - 803a596: 6878 ldr r0, [r7, #4] - 803a598: f001 f9ed bl 803b976 + 803a5d6: 6878 ldr r0, [r7, #4] + 803a5d8: f001 f9ed bl 803b9b6 return; - 803a59c: e026 b.n 803a5ec + 803a5dc: e026 b.n 803a62c } /* UART TX Fifo Empty occurred ----------------------------------------------*/ if (((isrflags & USART_ISR_TXFE) != 0U) && ((cr1its & USART_CR1_TXFEIE) != 0U)) - 803a59e: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a5a2: f403 0300 and.w r3, r3, #8388608 ; 0x800000 - 803a5a6: 2b00 cmp r3, #0 - 803a5a8: d009 beq.n 803a5be - 803a5aa: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a5ae: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 - 803a5b2: 2b00 cmp r3, #0 - 803a5b4: d003 beq.n 803a5be + 803a5de: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a5e2: f403 0300 and.w r3, r3, #8388608 ; 0x800000 + 803a5e6: 2b00 cmp r3, #0 + 803a5e8: d009 beq.n 803a5fe + 803a5ea: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a5ee: f003 4380 and.w r3, r3, #1073741824 ; 0x40000000 + 803a5f2: 2b00 cmp r3, #0 + 803a5f4: d003 beq.n 803a5fe #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /* Call registered Tx Fifo Empty Callback */ huart->TxFifoEmptyCallback(huart); #else /* Call legacy weak Tx Fifo Empty Callback */ HAL_UARTEx_TxFifoEmptyCallback(huart); - 803a5b6: 6878 ldr r0, [r7, #4] - 803a5b8: f001 fe78 bl 803c2ac + 803a5f6: 6878 ldr r0, [r7, #4] + 803a5f8: f001 fe78 bl 803c2ec #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return; - 803a5bc: e016 b.n 803a5ec + 803a5fc: e016 b.n 803a62c } /* UART RX Fifo Full occurred ----------------------------------------------*/ if (((isrflags & USART_ISR_RXFF) != 0U) && ((cr1its & USART_CR1_RXFFIE) != 0U)) - 803a5be: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 - 803a5c2: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 - 803a5c6: 2b00 cmp r3, #0 - 803a5c8: d010 beq.n 803a5ec - 803a5ca: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 - 803a5ce: 2b00 cmp r3, #0 - 803a5d0: da0c bge.n 803a5ec + 803a5fe: f8d7 30e4 ldr.w r3, [r7, #228] ; 0xe4 + 803a602: f003 7380 and.w r3, r3, #16777216 ; 0x1000000 + 803a606: 2b00 cmp r3, #0 + 803a608: d010 beq.n 803a62c + 803a60a: f8d7 30e0 ldr.w r3, [r7, #224] ; 0xe0 + 803a60e: 2b00 cmp r3, #0 + 803a610: da0c bge.n 803a62c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /* Call registered Rx Fifo Full Callback */ huart->RxFifoFullCallback(huart); #else /* Call legacy weak Rx Fifo Full Callback */ HAL_UARTEx_RxFifoFullCallback(huart); - 803a5d2: 6878 ldr r0, [r7, #4] - 803a5d4: f001 fe60 bl 803c298 + 803a612: 6878 ldr r0, [r7, #4] + 803a614: f001 fe60 bl 803c2d8 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ return; - 803a5d8: e008 b.n 803a5ec + 803a618: e008 b.n 803a62c return; - 803a5da: bf00 nop - 803a5dc: e006 b.n 803a5ec + 803a61a: bf00 nop + 803a61c: e006 b.n 803a62c return; - 803a5de: bf00 nop - 803a5e0: e004 b.n 803a5ec + 803a61e: bf00 nop + 803a620: e004 b.n 803a62c return; - 803a5e2: bf00 nop - 803a5e4: e002 b.n 803a5ec + 803a622: bf00 nop + 803a624: e002 b.n 803a62c return; - 803a5e6: bf00 nop - 803a5e8: e000 b.n 803a5ec + 803a626: bf00 nop + 803a628: e000 b.n 803a62c return; - 803a5ea: bf00 nop + 803a62a: bf00 nop } } - 803a5ec: 37e8 adds r7, #232 ; 0xe8 - 803a5ee: 46bd mov sp, r7 - 803a5f0: bd80 pop {r7, pc} - 803a5f2: bf00 nop - 803a5f4: effffffe .word 0xeffffffe + 803a62c: 37e8 adds r7, #232 ; 0xe8 + 803a62e: 46bd mov sp, r7 + 803a630: bd80 pop {r7, pc} + 803a632: bf00 nop + 803a634: effffffe .word 0xeffffffe -0803a5f8 : +0803a638 : * @brief Tx Half Transfer completed callback. * @param huart UART handle. * @retval None */ __weak void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart) { - 803a5f8: b480 push {r7} - 803a5fa: b083 sub sp, #12 - 803a5fc: af00 add r7, sp, #0 - 803a5fe: 6078 str r0, [r7, #4] + 803a638: b480 push {r7} + 803a63a: b083 sub sp, #12 + 803a63c: af00 add r7, sp, #0 + 803a63e: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE: This function should not be modified, when the callback is needed, the HAL_UART_TxHalfCpltCallback can be implemented in the user file. */ } - 803a600: bf00 nop - 803a602: 370c adds r7, #12 - 803a604: 46bd mov sp, r7 - 803a606: f85d 7b04 ldr.w r7, [sp], #4 - 803a60a: 4770 bx lr + 803a640: bf00 nop + 803a642: 370c adds r7, #12 + 803a644: 46bd mov sp, r7 + 803a646: f85d 7b04 ldr.w r7, [sp], #4 + 803a64a: 4770 bx lr -0803a60c : +0803a64c : * @brief UART error callback. * @param huart UART handle. * @retval None */ __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { - 803a60c: b480 push {r7} - 803a60e: b083 sub sp, #12 - 803a610: af00 add r7, sp, #0 - 803a612: 6078 str r0, [r7, #4] + 803a64c: b480 push {r7} + 803a64e: b083 sub sp, #12 + 803a650: af00 add r7, sp, #0 + 803a652: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UART_ErrorCallback can be implemented in the user file. */ } - 803a614: bf00 nop - 803a616: 370c adds r7, #12 - 803a618: 46bd mov sp, r7 - 803a61a: f85d 7b04 ldr.w r7, [sp], #4 - 803a61e: 4770 bx lr + 803a654: bf00 nop + 803a656: 370c adds r7, #12 + 803a658: 46bd mov sp, r7 + 803a65a: f85d 7b04 ldr.w r7, [sp], #4 + 803a65e: 4770 bx lr -0803a620 : +0803a660 : * @param Size Number of data available in application reception buffer (indicates a position in * reception buffer until which, data are available) * @retval None */ __weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) { - 803a620: b480 push {r7} - 803a622: b083 sub sp, #12 - 803a624: af00 add r7, sp, #0 - 803a626: 6078 str r0, [r7, #4] - 803a628: 460b mov r3, r1 - 803a62a: 807b strh r3, [r7, #2] + 803a660: b480 push {r7} + 803a662: b083 sub sp, #12 + 803a664: af00 add r7, sp, #0 + 803a666: 6078 str r0, [r7, #4] + 803a668: 460b mov r3, r1 + 803a66a: 807b strh r3, [r7, #2] UNUSED(Size); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UARTEx_RxEventCallback can be implemented in the user file. */ } - 803a62c: bf00 nop - 803a62e: 370c adds r7, #12 - 803a630: 46bd mov sp, r7 - 803a632: f85d 7b04 ldr.w r7, [sp], #4 - 803a636: 4770 bx lr + 803a66c: bf00 nop + 803a66e: 370c adds r7, #12 + 803a670: 46bd mov sp, r7 + 803a672: f85d 7b04 ldr.w r7, [sp], #4 + 803a676: 4770 bx lr -0803a638 : +0803a678 : * @brief Configure the UART peripheral. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart) { - 803a638: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} - 803a63c: b092 sub sp, #72 ; 0x48 - 803a63e: af00 add r7, sp, #0 - 803a640: 6178 str r0, [r7, #20] + 803a678: e92d 4fb0 stmdb sp!, {r4, r5, r7, r8, r9, sl, fp, lr} + 803a67c: b092 sub sp, #72 ; 0x48 + 803a67e: af00 add r7, sp, #0 + 803a680: 6178 str r0, [r7, #20] uint32_t tmpreg; uint16_t brrtemp; UART_ClockSourceTypeDef clocksource; uint32_t usartdiv; HAL_StatusTypeDef ret = HAL_OK; - 803a642: 2300 movs r3, #0 - 803a644: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803a682: 2300 movs r3, #0 + 803a684: f887 3042 strb.w r3, [r7, #66] ; 0x42 * the UART Word Length, Parity, Mode and oversampling: * set the M bits according to huart->Init.WordLength value * set PCE and PS bits according to huart->Init.Parity value * set TE and RE bits according to huart->Init.Mode value * set OVER8 bit according to huart->Init.OverSampling value */ tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ; - 803a648: 697b ldr r3, [r7, #20] - 803a64a: 689a ldr r2, [r3, #8] - 803a64c: 697b ldr r3, [r7, #20] - 803a64e: 691b ldr r3, [r3, #16] - 803a650: 431a orrs r2, r3 - 803a652: 697b ldr r3, [r7, #20] - 803a654: 695b ldr r3, [r3, #20] - 803a656: 431a orrs r2, r3 - 803a658: 697b ldr r3, [r7, #20] - 803a65a: 69db ldr r3, [r3, #28] - 803a65c: 4313 orrs r3, r2 - 803a65e: 647b str r3, [r7, #68] ; 0x44 + 803a688: 697b ldr r3, [r7, #20] + 803a68a: 689a ldr r2, [r3, #8] + 803a68c: 697b ldr r3, [r7, #20] + 803a68e: 691b ldr r3, [r3, #16] + 803a690: 431a orrs r2, r3 + 803a692: 697b ldr r3, [r7, #20] + 803a694: 695b ldr r3, [r3, #20] + 803a696: 431a orrs r2, r3 + 803a698: 697b ldr r3, [r7, #20] + 803a69a: 69db ldr r3, [r3, #28] + 803a69c: 4313 orrs r3, r2 + 803a69e: 647b str r3, [r7, #68] ; 0x44 MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg); - 803a660: 697b ldr r3, [r7, #20] - 803a662: 681b ldr r3, [r3, #0] - 803a664: 681a ldr r2, [r3, #0] - 803a666: 4bbe ldr r3, [pc, #760] ; (803a960 ) - 803a668: 4013 ands r3, r2 - 803a66a: 697a ldr r2, [r7, #20] - 803a66c: 6812 ldr r2, [r2, #0] - 803a66e: 6c79 ldr r1, [r7, #68] ; 0x44 - 803a670: 430b orrs r3, r1 - 803a672: 6013 str r3, [r2, #0] + 803a6a0: 697b ldr r3, [r7, #20] + 803a6a2: 681b ldr r3, [r3, #0] + 803a6a4: 681a ldr r2, [r3, #0] + 803a6a6: 4bbe ldr r3, [pc, #760] ; (803a9a0 ) + 803a6a8: 4013 ands r3, r2 + 803a6aa: 697a ldr r2, [r7, #20] + 803a6ac: 6812 ldr r2, [r2, #0] + 803a6ae: 6c79 ldr r1, [r7, #68] ; 0x44 + 803a6b0: 430b orrs r3, r1 + 803a6b2: 6013 str r3, [r2, #0] /*-------------------------- USART CR2 Configuration -----------------------*/ /* Configure the UART Stop Bits: Set STOP[13:12] bits according * to huart->Init.StopBits value */ MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits); - 803a674: 697b ldr r3, [r7, #20] - 803a676: 681b ldr r3, [r3, #0] - 803a678: 685b ldr r3, [r3, #4] - 803a67a: f423 5140 bic.w r1, r3, #12288 ; 0x3000 - 803a67e: 697b ldr r3, [r7, #20] - 803a680: 68da ldr r2, [r3, #12] - 803a682: 697b ldr r3, [r7, #20] - 803a684: 681b ldr r3, [r3, #0] - 803a686: 430a orrs r2, r1 - 803a688: 605a str r2, [r3, #4] + 803a6b4: 697b ldr r3, [r7, #20] + 803a6b6: 681b ldr r3, [r3, #0] + 803a6b8: 685b ldr r3, [r3, #4] + 803a6ba: f423 5140 bic.w r1, r3, #12288 ; 0x3000 + 803a6be: 697b ldr r3, [r7, #20] + 803a6c0: 68da ldr r2, [r3, #12] + 803a6c2: 697b ldr r3, [r7, #20] + 803a6c4: 681b ldr r3, [r3, #0] + 803a6c6: 430a orrs r2, r1 + 803a6c8: 605a str r2, [r3, #4] /* Configure * - UART HardWare Flow Control: set CTSE and RTSE bits according * to huart->Init.HwFlowCtl value * - one-bit sampling method versus three samples' majority rule according * to huart->Init.OneBitSampling (not applicable to LPUART) */ tmpreg = (uint32_t)huart->Init.HwFlowCtl; - 803a68a: 697b ldr r3, [r7, #20] - 803a68c: 699b ldr r3, [r3, #24] - 803a68e: 647b str r3, [r7, #68] ; 0x44 + 803a6ca: 697b ldr r3, [r7, #20] + 803a6cc: 699b ldr r3, [r3, #24] + 803a6ce: 647b str r3, [r7, #68] ; 0x44 if (!(UART_INSTANCE_LOWPOWER(huart))) - 803a690: 697b ldr r3, [r7, #20] - 803a692: 681b ldr r3, [r3, #0] - 803a694: 4ab3 ldr r2, [pc, #716] ; (803a964 ) - 803a696: 4293 cmp r3, r2 - 803a698: d004 beq.n 803a6a4 + 803a6d0: 697b ldr r3, [r7, #20] + 803a6d2: 681b ldr r3, [r3, #0] + 803a6d4: 4ab3 ldr r2, [pc, #716] ; (803a9a4 ) + 803a6d6: 4293 cmp r3, r2 + 803a6d8: d004 beq.n 803a6e4 { tmpreg |= huart->Init.OneBitSampling; - 803a69a: 697b ldr r3, [r7, #20] - 803a69c: 6a1b ldr r3, [r3, #32] - 803a69e: 6c7a ldr r2, [r7, #68] ; 0x44 - 803a6a0: 4313 orrs r3, r2 - 803a6a2: 647b str r3, [r7, #68] ; 0x44 + 803a6da: 697b ldr r3, [r7, #20] + 803a6dc: 6a1b ldr r3, [r3, #32] + 803a6de: 6c7a ldr r2, [r7, #68] ; 0x44 + 803a6e0: 4313 orrs r3, r2 + 803a6e2: 647b str r3, [r7, #68] ; 0x44 } MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg); - 803a6a4: 697b ldr r3, [r7, #20] - 803a6a6: 681b ldr r3, [r3, #0] - 803a6a8: 689a ldr r2, [r3, #8] - 803a6aa: 4baf ldr r3, [pc, #700] ; (803a968 ) - 803a6ac: 4013 ands r3, r2 - 803a6ae: 697a ldr r2, [r7, #20] - 803a6b0: 6812 ldr r2, [r2, #0] - 803a6b2: 6c79 ldr r1, [r7, #68] ; 0x44 - 803a6b4: 430b orrs r3, r1 - 803a6b6: 6093 str r3, [r2, #8] + 803a6e4: 697b ldr r3, [r7, #20] + 803a6e6: 681b ldr r3, [r3, #0] + 803a6e8: 689a ldr r2, [r3, #8] + 803a6ea: 4baf ldr r3, [pc, #700] ; (803a9a8 ) + 803a6ec: 4013 ands r3, r2 + 803a6ee: 697a ldr r2, [r7, #20] + 803a6f0: 6812 ldr r2, [r2, #0] + 803a6f2: 6c79 ldr r1, [r7, #68] ; 0x44 + 803a6f4: 430b orrs r3, r1 + 803a6f6: 6093 str r3, [r2, #8] /*-------------------------- USART PRESC Configuration -----------------------*/ /* Configure * - UART Clock Prescaler : set PRESCALER according to huart->Init.ClockPrescaler value */ MODIFY_REG(huart->Instance->PRESC, USART_PRESC_PRESCALER, huart->Init.ClockPrescaler); - 803a6b8: 697b ldr r3, [r7, #20] - 803a6ba: 681b ldr r3, [r3, #0] - 803a6bc: 6adb ldr r3, [r3, #44] ; 0x2c - 803a6be: f023 010f bic.w r1, r3, #15 - 803a6c2: 697b ldr r3, [r7, #20] - 803a6c4: 6a5a ldr r2, [r3, #36] ; 0x24 - 803a6c6: 697b ldr r3, [r7, #20] - 803a6c8: 681b ldr r3, [r3, #0] - 803a6ca: 430a orrs r2, r1 - 803a6cc: 62da str r2, [r3, #44] ; 0x2c + 803a6f8: 697b ldr r3, [r7, #20] + 803a6fa: 681b ldr r3, [r3, #0] + 803a6fc: 6adb ldr r3, [r3, #44] ; 0x2c + 803a6fe: f023 010f bic.w r1, r3, #15 + 803a702: 697b ldr r3, [r7, #20] + 803a704: 6a5a ldr r2, [r3, #36] ; 0x24 + 803a706: 697b ldr r3, [r7, #20] + 803a708: 681b ldr r3, [r3, #0] + 803a70a: 430a orrs r2, r1 + 803a70c: 62da str r2, [r3, #44] ; 0x2c /*-------------------------- USART BRR Configuration -----------------------*/ UART_GETCLOCKSOURCE(huart, clocksource); - 803a6ce: 697b ldr r3, [r7, #20] - 803a6d0: 681b ldr r3, [r3, #0] - 803a6d2: 4aa6 ldr r2, [pc, #664] ; (803a96c ) - 803a6d4: 4293 cmp r3, r2 - 803a6d6: d177 bne.n 803a7c8 - 803a6d8: 4ba5 ldr r3, [pc, #660] ; (803a970 ) - 803a6da: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a6dc: f003 0338 and.w r3, r3, #56 ; 0x38 - 803a6e0: 2b28 cmp r3, #40 ; 0x28 - 803a6e2: d86d bhi.n 803a7c0 - 803a6e4: a201 add r2, pc, #4 ; (adr r2, 803a6ec ) - 803a6e6: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a6ea: bf00 nop - 803a6ec: 0803a791 .word 0x0803a791 - 803a6f0: 0803a7c1 .word 0x0803a7c1 - 803a6f4: 0803a7c1 .word 0x0803a7c1 - 803a6f8: 0803a7c1 .word 0x0803a7c1 - 803a6fc: 0803a7c1 .word 0x0803a7c1 - 803a700: 0803a7c1 .word 0x0803a7c1 - 803a704: 0803a7c1 .word 0x0803a7c1 - 803a708: 0803a7c1 .word 0x0803a7c1 - 803a70c: 0803a799 .word 0x0803a799 - 803a710: 0803a7c1 .word 0x0803a7c1 - 803a714: 0803a7c1 .word 0x0803a7c1 - 803a718: 0803a7c1 .word 0x0803a7c1 - 803a71c: 0803a7c1 .word 0x0803a7c1 - 803a720: 0803a7c1 .word 0x0803a7c1 - 803a724: 0803a7c1 .word 0x0803a7c1 - 803a728: 0803a7c1 .word 0x0803a7c1 - 803a72c: 0803a7a1 .word 0x0803a7a1 - 803a730: 0803a7c1 .word 0x0803a7c1 - 803a734: 0803a7c1 .word 0x0803a7c1 - 803a738: 0803a7c1 .word 0x0803a7c1 - 803a73c: 0803a7c1 .word 0x0803a7c1 - 803a740: 0803a7c1 .word 0x0803a7c1 - 803a744: 0803a7c1 .word 0x0803a7c1 - 803a748: 0803a7c1 .word 0x0803a7c1 - 803a74c: 0803a7a9 .word 0x0803a7a9 - 803a750: 0803a7c1 .word 0x0803a7c1 - 803a754: 0803a7c1 .word 0x0803a7c1 - 803a758: 0803a7c1 .word 0x0803a7c1 - 803a75c: 0803a7c1 .word 0x0803a7c1 - 803a760: 0803a7c1 .word 0x0803a7c1 - 803a764: 0803a7c1 .word 0x0803a7c1 - 803a768: 0803a7c1 .word 0x0803a7c1 - 803a76c: 0803a7b1 .word 0x0803a7b1 - 803a770: 0803a7c1 .word 0x0803a7c1 - 803a774: 0803a7c1 .word 0x0803a7c1 - 803a778: 0803a7c1 .word 0x0803a7c1 - 803a77c: 0803a7c1 .word 0x0803a7c1 - 803a780: 0803a7c1 .word 0x0803a7c1 - 803a784: 0803a7c1 .word 0x0803a7c1 - 803a788: 0803a7c1 .word 0x0803a7c1 - 803a78c: 0803a7b9 .word 0x0803a7b9 - 803a790: 2301 movs r3, #1 - 803a792: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a796: e222 b.n 803abde - 803a798: 2304 movs r3, #4 - 803a79a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a79e: e21e b.n 803abde - 803a7a0: 2308 movs r3, #8 - 803a7a2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a7a6: e21a b.n 803abde - 803a7a8: 2310 movs r3, #16 - 803a7aa: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a7ae: e216 b.n 803abde - 803a7b0: 2320 movs r3, #32 - 803a7b2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a7b6: e212 b.n 803abde - 803a7b8: 2340 movs r3, #64 ; 0x40 - 803a7ba: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a7be: e20e b.n 803abde - 803a7c0: 2380 movs r3, #128 ; 0x80 - 803a7c2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a7c6: e20a b.n 803abde - 803a7c8: 697b ldr r3, [r7, #20] - 803a7ca: 681b ldr r3, [r3, #0] - 803a7cc: 4a69 ldr r2, [pc, #420] ; (803a974 ) - 803a7ce: 4293 cmp r3, r2 - 803a7d0: d130 bne.n 803a834 - 803a7d2: 4b67 ldr r3, [pc, #412] ; (803a970 ) - 803a7d4: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a7d6: f003 0307 and.w r3, r3, #7 - 803a7da: 2b05 cmp r3, #5 - 803a7dc: d826 bhi.n 803a82c - 803a7de: a201 add r2, pc, #4 ; (adr r2, 803a7e4 ) - 803a7e0: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a7e4: 0803a7fd .word 0x0803a7fd - 803a7e8: 0803a805 .word 0x0803a805 - 803a7ec: 0803a80d .word 0x0803a80d - 803a7f0: 0803a815 .word 0x0803a815 - 803a7f4: 0803a81d .word 0x0803a81d - 803a7f8: 0803a825 .word 0x0803a825 - 803a7fc: 2300 movs r3, #0 - 803a7fe: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a802: e1ec b.n 803abde - 803a804: 2304 movs r3, #4 - 803a806: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a80a: e1e8 b.n 803abde - 803a80c: 2308 movs r3, #8 - 803a80e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a812: e1e4 b.n 803abde - 803a814: 2310 movs r3, #16 - 803a816: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a81a: e1e0 b.n 803abde - 803a81c: 2320 movs r3, #32 - 803a81e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a822: e1dc b.n 803abde - 803a824: 2340 movs r3, #64 ; 0x40 - 803a826: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a82a: e1d8 b.n 803abde - 803a82c: 2380 movs r3, #128 ; 0x80 - 803a82e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a832: e1d4 b.n 803abde - 803a834: 697b ldr r3, [r7, #20] - 803a836: 681b ldr r3, [r3, #0] - 803a838: 4a4f ldr r2, [pc, #316] ; (803a978 ) - 803a83a: 4293 cmp r3, r2 - 803a83c: d130 bne.n 803a8a0 - 803a83e: 4b4c ldr r3, [pc, #304] ; (803a970 ) - 803a840: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a842: f003 0307 and.w r3, r3, #7 - 803a846: 2b05 cmp r3, #5 - 803a848: d826 bhi.n 803a898 - 803a84a: a201 add r2, pc, #4 ; (adr r2, 803a850 ) - 803a84c: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a850: 0803a869 .word 0x0803a869 - 803a854: 0803a871 .word 0x0803a871 - 803a858: 0803a879 .word 0x0803a879 - 803a85c: 0803a881 .word 0x0803a881 - 803a860: 0803a889 .word 0x0803a889 - 803a864: 0803a891 .word 0x0803a891 - 803a868: 2300 movs r3, #0 - 803a86a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a86e: e1b6 b.n 803abde - 803a870: 2304 movs r3, #4 - 803a872: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a876: e1b2 b.n 803abde - 803a878: 2308 movs r3, #8 - 803a87a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a87e: e1ae b.n 803abde - 803a880: 2310 movs r3, #16 - 803a882: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a886: e1aa b.n 803abde - 803a888: 2320 movs r3, #32 - 803a88a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a88e: e1a6 b.n 803abde - 803a890: 2340 movs r3, #64 ; 0x40 - 803a892: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a896: e1a2 b.n 803abde - 803a898: 2380 movs r3, #128 ; 0x80 - 803a89a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a89e: e19e b.n 803abde - 803a8a0: 697b ldr r3, [r7, #20] - 803a8a2: 681b ldr r3, [r3, #0] - 803a8a4: 4a35 ldr r2, [pc, #212] ; (803a97c ) - 803a8a6: 4293 cmp r3, r2 - 803a8a8: d130 bne.n 803a90c - 803a8aa: 4b31 ldr r3, [pc, #196] ; (803a970 ) - 803a8ac: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a8ae: f003 0307 and.w r3, r3, #7 - 803a8b2: 2b05 cmp r3, #5 - 803a8b4: d826 bhi.n 803a904 - 803a8b6: a201 add r2, pc, #4 ; (adr r2, 803a8bc ) - 803a8b8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a8bc: 0803a8d5 .word 0x0803a8d5 - 803a8c0: 0803a8dd .word 0x0803a8dd - 803a8c4: 0803a8e5 .word 0x0803a8e5 - 803a8c8: 0803a8ed .word 0x0803a8ed - 803a8cc: 0803a8f5 .word 0x0803a8f5 - 803a8d0: 0803a8fd .word 0x0803a8fd - 803a8d4: 2300 movs r3, #0 - 803a8d6: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a8da: e180 b.n 803abde - 803a8dc: 2304 movs r3, #4 - 803a8de: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a8e2: e17c b.n 803abde - 803a8e4: 2308 movs r3, #8 - 803a8e6: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a8ea: e178 b.n 803abde - 803a8ec: 2310 movs r3, #16 - 803a8ee: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a8f2: e174 b.n 803abde - 803a8f4: 2320 movs r3, #32 - 803a8f6: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a8fa: e170 b.n 803abde - 803a8fc: 2340 movs r3, #64 ; 0x40 - 803a8fe: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a902: e16c b.n 803abde - 803a904: 2380 movs r3, #128 ; 0x80 - 803a906: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a90a: e168 b.n 803abde - 803a90c: 697b ldr r3, [r7, #20] - 803a90e: 681b ldr r3, [r3, #0] - 803a910: 4a1b ldr r2, [pc, #108] ; (803a980 ) - 803a912: 4293 cmp r3, r2 - 803a914: d142 bne.n 803a99c - 803a916: 4b16 ldr r3, [pc, #88] ; (803a970 ) - 803a918: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a91a: f003 0307 and.w r3, r3, #7 - 803a91e: 2b05 cmp r3, #5 - 803a920: d838 bhi.n 803a994 - 803a922: a201 add r2, pc, #4 ; (adr r2, 803a928 ) - 803a924: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a928: 0803a941 .word 0x0803a941 - 803a92c: 0803a949 .word 0x0803a949 - 803a930: 0803a951 .word 0x0803a951 - 803a934: 0803a959 .word 0x0803a959 - 803a938: 0803a985 .word 0x0803a985 - 803a93c: 0803a98d .word 0x0803a98d - 803a940: 2300 movs r3, #0 - 803a942: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a946: e14a b.n 803abde - 803a948: 2304 movs r3, #4 - 803a94a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a94e: e146 b.n 803abde - 803a950: 2308 movs r3, #8 - 803a952: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a956: e142 b.n 803abde - 803a958: 2310 movs r3, #16 - 803a95a: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a95e: e13e b.n 803abde - 803a960: cfff69f3 .word 0xcfff69f3 - 803a964: 58000c00 .word 0x58000c00 - 803a968: 11fff4ff .word 0x11fff4ff - 803a96c: 40011000 .word 0x40011000 - 803a970: 58024400 .word 0x58024400 - 803a974: 40004400 .word 0x40004400 - 803a978: 40004800 .word 0x40004800 - 803a97c: 40004c00 .word 0x40004c00 - 803a980: 40005000 .word 0x40005000 - 803a984: 2320 movs r3, #32 - 803a986: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a98a: e128 b.n 803abde - 803a98c: 2340 movs r3, #64 ; 0x40 - 803a98e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a992: e124 b.n 803abde - 803a994: 2380 movs r3, #128 ; 0x80 - 803a996: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803a99a: e120 b.n 803abde - 803a99c: 697b ldr r3, [r7, #20] - 803a99e: 681b ldr r3, [r3, #0] - 803a9a0: 4acb ldr r2, [pc, #812] ; (803acd0 ) - 803a9a2: 4293 cmp r3, r2 - 803a9a4: d176 bne.n 803aa94 - 803a9a6: 4bcb ldr r3, [pc, #812] ; (803acd4 ) - 803a9a8: 6d5b ldr r3, [r3, #84] ; 0x54 - 803a9aa: f003 0338 and.w r3, r3, #56 ; 0x38 - 803a9ae: 2b28 cmp r3, #40 ; 0x28 - 803a9b0: d86c bhi.n 803aa8c - 803a9b2: a201 add r2, pc, #4 ; (adr r2, 803a9b8 ) - 803a9b4: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803a9b8: 0803aa5d .word 0x0803aa5d - 803a9bc: 0803aa8d .word 0x0803aa8d - 803a9c0: 0803aa8d .word 0x0803aa8d - 803a9c4: 0803aa8d .word 0x0803aa8d - 803a9c8: 0803aa8d .word 0x0803aa8d - 803a9cc: 0803aa8d .word 0x0803aa8d - 803a9d0: 0803aa8d .word 0x0803aa8d - 803a9d4: 0803aa8d .word 0x0803aa8d - 803a9d8: 0803aa65 .word 0x0803aa65 - 803a9dc: 0803aa8d .word 0x0803aa8d - 803a9e0: 0803aa8d .word 0x0803aa8d - 803a9e4: 0803aa8d .word 0x0803aa8d - 803a9e8: 0803aa8d .word 0x0803aa8d - 803a9ec: 0803aa8d .word 0x0803aa8d - 803a9f0: 0803aa8d .word 0x0803aa8d - 803a9f4: 0803aa8d .word 0x0803aa8d - 803a9f8: 0803aa6d .word 0x0803aa6d - 803a9fc: 0803aa8d .word 0x0803aa8d - 803aa00: 0803aa8d .word 0x0803aa8d - 803aa04: 0803aa8d .word 0x0803aa8d - 803aa08: 0803aa8d .word 0x0803aa8d - 803aa0c: 0803aa8d .word 0x0803aa8d - 803aa10: 0803aa8d .word 0x0803aa8d - 803aa14: 0803aa8d .word 0x0803aa8d - 803aa18: 0803aa75 .word 0x0803aa75 - 803aa1c: 0803aa8d .word 0x0803aa8d - 803aa20: 0803aa8d .word 0x0803aa8d - 803aa24: 0803aa8d .word 0x0803aa8d - 803aa28: 0803aa8d .word 0x0803aa8d - 803aa2c: 0803aa8d .word 0x0803aa8d - 803aa30: 0803aa8d .word 0x0803aa8d - 803aa34: 0803aa8d .word 0x0803aa8d - 803aa38: 0803aa7d .word 0x0803aa7d - 803aa3c: 0803aa8d .word 0x0803aa8d - 803aa40: 0803aa8d .word 0x0803aa8d - 803aa44: 0803aa8d .word 0x0803aa8d - 803aa48: 0803aa8d .word 0x0803aa8d - 803aa4c: 0803aa8d .word 0x0803aa8d - 803aa50: 0803aa8d .word 0x0803aa8d - 803aa54: 0803aa8d .word 0x0803aa8d - 803aa58: 0803aa85 .word 0x0803aa85 - 803aa5c: 2301 movs r3, #1 - 803aa5e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa62: e0bc b.n 803abde - 803aa64: 2304 movs r3, #4 - 803aa66: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa6a: e0b8 b.n 803abde - 803aa6c: 2308 movs r3, #8 - 803aa6e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa72: e0b4 b.n 803abde - 803aa74: 2310 movs r3, #16 - 803aa76: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa7a: e0b0 b.n 803abde - 803aa7c: 2320 movs r3, #32 - 803aa7e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa82: e0ac b.n 803abde - 803aa84: 2340 movs r3, #64 ; 0x40 - 803aa86: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa8a: e0a8 b.n 803abde - 803aa8c: 2380 movs r3, #128 ; 0x80 - 803aa8e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aa92: e0a4 b.n 803abde - 803aa94: 697b ldr r3, [r7, #20] - 803aa96: 681b ldr r3, [r3, #0] - 803aa98: 4a8f ldr r2, [pc, #572] ; (803acd8 ) - 803aa9a: 4293 cmp r3, r2 - 803aa9c: d130 bne.n 803ab00 - 803aa9e: 4b8d ldr r3, [pc, #564] ; (803acd4 ) - 803aaa0: 6d5b ldr r3, [r3, #84] ; 0x54 - 803aaa2: f003 0307 and.w r3, r3, #7 - 803aaa6: 2b05 cmp r3, #5 - 803aaa8: d826 bhi.n 803aaf8 - 803aaaa: a201 add r2, pc, #4 ; (adr r2, 803aab0 ) - 803aaac: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803aab0: 0803aac9 .word 0x0803aac9 - 803aab4: 0803aad1 .word 0x0803aad1 - 803aab8: 0803aad9 .word 0x0803aad9 - 803aabc: 0803aae1 .word 0x0803aae1 - 803aac0: 0803aae9 .word 0x0803aae9 - 803aac4: 0803aaf1 .word 0x0803aaf1 - 803aac8: 2300 movs r3, #0 - 803aaca: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aace: e086 b.n 803abde - 803aad0: 2304 movs r3, #4 - 803aad2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aad6: e082 b.n 803abde - 803aad8: 2308 movs r3, #8 - 803aada: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aade: e07e b.n 803abde - 803aae0: 2310 movs r3, #16 - 803aae2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aae6: e07a b.n 803abde - 803aae8: 2320 movs r3, #32 - 803aaea: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aaee: e076 b.n 803abde - 803aaf0: 2340 movs r3, #64 ; 0x40 - 803aaf2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aaf6: e072 b.n 803abde - 803aaf8: 2380 movs r3, #128 ; 0x80 - 803aafa: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aafe: e06e b.n 803abde - 803ab00: 697b ldr r3, [r7, #20] - 803ab02: 681b ldr r3, [r3, #0] - 803ab04: 4a75 ldr r2, [pc, #468] ; (803acdc ) - 803ab06: 4293 cmp r3, r2 - 803ab08: d130 bne.n 803ab6c - 803ab0a: 4b72 ldr r3, [pc, #456] ; (803acd4 ) - 803ab0c: 6d5b ldr r3, [r3, #84] ; 0x54 - 803ab0e: f003 0307 and.w r3, r3, #7 - 803ab12: 2b05 cmp r3, #5 - 803ab14: d826 bhi.n 803ab64 - 803ab16: a201 add r2, pc, #4 ; (adr r2, 803ab1c ) - 803ab18: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803ab1c: 0803ab35 .word 0x0803ab35 - 803ab20: 0803ab3d .word 0x0803ab3d - 803ab24: 0803ab45 .word 0x0803ab45 - 803ab28: 0803ab4d .word 0x0803ab4d - 803ab2c: 0803ab55 .word 0x0803ab55 - 803ab30: 0803ab5d .word 0x0803ab5d - 803ab34: 2300 movs r3, #0 - 803ab36: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab3a: e050 b.n 803abde - 803ab3c: 2304 movs r3, #4 - 803ab3e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab42: e04c b.n 803abde - 803ab44: 2308 movs r3, #8 - 803ab46: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab4a: e048 b.n 803abde - 803ab4c: 2310 movs r3, #16 - 803ab4e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab52: e044 b.n 803abde - 803ab54: 2320 movs r3, #32 - 803ab56: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab5a: e040 b.n 803abde - 803ab5c: 2340 movs r3, #64 ; 0x40 - 803ab5e: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab62: e03c b.n 803abde - 803ab64: 2380 movs r3, #128 ; 0x80 - 803ab66: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803ab6a: e038 b.n 803abde - 803ab6c: 697b ldr r3, [r7, #20] - 803ab6e: 681b ldr r3, [r3, #0] - 803ab70: 4a5b ldr r2, [pc, #364] ; (803ace0 ) - 803ab72: 4293 cmp r3, r2 - 803ab74: d130 bne.n 803abd8 - 803ab76: 4b57 ldr r3, [pc, #348] ; (803acd4 ) - 803ab78: 6d9b ldr r3, [r3, #88] ; 0x58 - 803ab7a: f003 0307 and.w r3, r3, #7 - 803ab7e: 2b05 cmp r3, #5 - 803ab80: d826 bhi.n 803abd0 - 803ab82: a201 add r2, pc, #4 ; (adr r2, 803ab88 ) - 803ab84: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803ab88: 0803aba1 .word 0x0803aba1 - 803ab8c: 0803aba9 .word 0x0803aba9 - 803ab90: 0803abb1 .word 0x0803abb1 - 803ab94: 0803abb9 .word 0x0803abb9 - 803ab98: 0803abc1 .word 0x0803abc1 - 803ab9c: 0803abc9 .word 0x0803abc9 - 803aba0: 2302 movs r3, #2 - 803aba2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803aba6: e01a b.n 803abde - 803aba8: 2304 movs r3, #4 - 803abaa: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abae: e016 b.n 803abde - 803abb0: 2308 movs r3, #8 - 803abb2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abb6: e012 b.n 803abde - 803abb8: 2310 movs r3, #16 - 803abba: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abbe: e00e b.n 803abde - 803abc0: 2320 movs r3, #32 - 803abc2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abc6: e00a b.n 803abde - 803abc8: 2340 movs r3, #64 ; 0x40 - 803abca: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abce: e006 b.n 803abde - 803abd0: 2380 movs r3, #128 ; 0x80 - 803abd2: f887 3043 strb.w r3, [r7, #67] ; 0x43 - 803abd6: e002 b.n 803abde - 803abd8: 2380 movs r3, #128 ; 0x80 - 803abda: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a70e: 697b ldr r3, [r7, #20] + 803a710: 681b ldr r3, [r3, #0] + 803a712: 4aa6 ldr r2, [pc, #664] ; (803a9ac ) + 803a714: 4293 cmp r3, r2 + 803a716: d177 bne.n 803a808 + 803a718: 4ba5 ldr r3, [pc, #660] ; (803a9b0 ) + 803a71a: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a71c: f003 0338 and.w r3, r3, #56 ; 0x38 + 803a720: 2b28 cmp r3, #40 ; 0x28 + 803a722: d86d bhi.n 803a800 + 803a724: a201 add r2, pc, #4 ; (adr r2, 803a72c ) + 803a726: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a72a: bf00 nop + 803a72c: 0803a7d1 .word 0x0803a7d1 + 803a730: 0803a801 .word 0x0803a801 + 803a734: 0803a801 .word 0x0803a801 + 803a738: 0803a801 .word 0x0803a801 + 803a73c: 0803a801 .word 0x0803a801 + 803a740: 0803a801 .word 0x0803a801 + 803a744: 0803a801 .word 0x0803a801 + 803a748: 0803a801 .word 0x0803a801 + 803a74c: 0803a7d9 .word 0x0803a7d9 + 803a750: 0803a801 .word 0x0803a801 + 803a754: 0803a801 .word 0x0803a801 + 803a758: 0803a801 .word 0x0803a801 + 803a75c: 0803a801 .word 0x0803a801 + 803a760: 0803a801 .word 0x0803a801 + 803a764: 0803a801 .word 0x0803a801 + 803a768: 0803a801 .word 0x0803a801 + 803a76c: 0803a7e1 .word 0x0803a7e1 + 803a770: 0803a801 .word 0x0803a801 + 803a774: 0803a801 .word 0x0803a801 + 803a778: 0803a801 .word 0x0803a801 + 803a77c: 0803a801 .word 0x0803a801 + 803a780: 0803a801 .word 0x0803a801 + 803a784: 0803a801 .word 0x0803a801 + 803a788: 0803a801 .word 0x0803a801 + 803a78c: 0803a7e9 .word 0x0803a7e9 + 803a790: 0803a801 .word 0x0803a801 + 803a794: 0803a801 .word 0x0803a801 + 803a798: 0803a801 .word 0x0803a801 + 803a79c: 0803a801 .word 0x0803a801 + 803a7a0: 0803a801 .word 0x0803a801 + 803a7a4: 0803a801 .word 0x0803a801 + 803a7a8: 0803a801 .word 0x0803a801 + 803a7ac: 0803a7f1 .word 0x0803a7f1 + 803a7b0: 0803a801 .word 0x0803a801 + 803a7b4: 0803a801 .word 0x0803a801 + 803a7b8: 0803a801 .word 0x0803a801 + 803a7bc: 0803a801 .word 0x0803a801 + 803a7c0: 0803a801 .word 0x0803a801 + 803a7c4: 0803a801 .word 0x0803a801 + 803a7c8: 0803a801 .word 0x0803a801 + 803a7cc: 0803a7f9 .word 0x0803a7f9 + 803a7d0: 2301 movs r3, #1 + 803a7d2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7d6: e222 b.n 803ac1e + 803a7d8: 2304 movs r3, #4 + 803a7da: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7de: e21e b.n 803ac1e + 803a7e0: 2308 movs r3, #8 + 803a7e2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7e6: e21a b.n 803ac1e + 803a7e8: 2310 movs r3, #16 + 803a7ea: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7ee: e216 b.n 803ac1e + 803a7f0: 2320 movs r3, #32 + 803a7f2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7f6: e212 b.n 803ac1e + 803a7f8: 2340 movs r3, #64 ; 0x40 + 803a7fa: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a7fe: e20e b.n 803ac1e + 803a800: 2380 movs r3, #128 ; 0x80 + 803a802: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a806: e20a b.n 803ac1e + 803a808: 697b ldr r3, [r7, #20] + 803a80a: 681b ldr r3, [r3, #0] + 803a80c: 4a69 ldr r2, [pc, #420] ; (803a9b4 ) + 803a80e: 4293 cmp r3, r2 + 803a810: d130 bne.n 803a874 + 803a812: 4b67 ldr r3, [pc, #412] ; (803a9b0 ) + 803a814: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a816: f003 0307 and.w r3, r3, #7 + 803a81a: 2b05 cmp r3, #5 + 803a81c: d826 bhi.n 803a86c + 803a81e: a201 add r2, pc, #4 ; (adr r2, 803a824 ) + 803a820: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a824: 0803a83d .word 0x0803a83d + 803a828: 0803a845 .word 0x0803a845 + 803a82c: 0803a84d .word 0x0803a84d + 803a830: 0803a855 .word 0x0803a855 + 803a834: 0803a85d .word 0x0803a85d + 803a838: 0803a865 .word 0x0803a865 + 803a83c: 2300 movs r3, #0 + 803a83e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a842: e1ec b.n 803ac1e + 803a844: 2304 movs r3, #4 + 803a846: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a84a: e1e8 b.n 803ac1e + 803a84c: 2308 movs r3, #8 + 803a84e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a852: e1e4 b.n 803ac1e + 803a854: 2310 movs r3, #16 + 803a856: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a85a: e1e0 b.n 803ac1e + 803a85c: 2320 movs r3, #32 + 803a85e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a862: e1dc b.n 803ac1e + 803a864: 2340 movs r3, #64 ; 0x40 + 803a866: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a86a: e1d8 b.n 803ac1e + 803a86c: 2380 movs r3, #128 ; 0x80 + 803a86e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a872: e1d4 b.n 803ac1e + 803a874: 697b ldr r3, [r7, #20] + 803a876: 681b ldr r3, [r3, #0] + 803a878: 4a4f ldr r2, [pc, #316] ; (803a9b8 ) + 803a87a: 4293 cmp r3, r2 + 803a87c: d130 bne.n 803a8e0 + 803a87e: 4b4c ldr r3, [pc, #304] ; (803a9b0 ) + 803a880: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a882: f003 0307 and.w r3, r3, #7 + 803a886: 2b05 cmp r3, #5 + 803a888: d826 bhi.n 803a8d8 + 803a88a: a201 add r2, pc, #4 ; (adr r2, 803a890 ) + 803a88c: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a890: 0803a8a9 .word 0x0803a8a9 + 803a894: 0803a8b1 .word 0x0803a8b1 + 803a898: 0803a8b9 .word 0x0803a8b9 + 803a89c: 0803a8c1 .word 0x0803a8c1 + 803a8a0: 0803a8c9 .word 0x0803a8c9 + 803a8a4: 0803a8d1 .word 0x0803a8d1 + 803a8a8: 2300 movs r3, #0 + 803a8aa: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8ae: e1b6 b.n 803ac1e + 803a8b0: 2304 movs r3, #4 + 803a8b2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8b6: e1b2 b.n 803ac1e + 803a8b8: 2308 movs r3, #8 + 803a8ba: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8be: e1ae b.n 803ac1e + 803a8c0: 2310 movs r3, #16 + 803a8c2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8c6: e1aa b.n 803ac1e + 803a8c8: 2320 movs r3, #32 + 803a8ca: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8ce: e1a6 b.n 803ac1e + 803a8d0: 2340 movs r3, #64 ; 0x40 + 803a8d2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8d6: e1a2 b.n 803ac1e + 803a8d8: 2380 movs r3, #128 ; 0x80 + 803a8da: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a8de: e19e b.n 803ac1e + 803a8e0: 697b ldr r3, [r7, #20] + 803a8e2: 681b ldr r3, [r3, #0] + 803a8e4: 4a35 ldr r2, [pc, #212] ; (803a9bc ) + 803a8e6: 4293 cmp r3, r2 + 803a8e8: d130 bne.n 803a94c + 803a8ea: 4b31 ldr r3, [pc, #196] ; (803a9b0 ) + 803a8ec: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a8ee: f003 0307 and.w r3, r3, #7 + 803a8f2: 2b05 cmp r3, #5 + 803a8f4: d826 bhi.n 803a944 + 803a8f6: a201 add r2, pc, #4 ; (adr r2, 803a8fc ) + 803a8f8: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a8fc: 0803a915 .word 0x0803a915 + 803a900: 0803a91d .word 0x0803a91d + 803a904: 0803a925 .word 0x0803a925 + 803a908: 0803a92d .word 0x0803a92d + 803a90c: 0803a935 .word 0x0803a935 + 803a910: 0803a93d .word 0x0803a93d + 803a914: 2300 movs r3, #0 + 803a916: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a91a: e180 b.n 803ac1e + 803a91c: 2304 movs r3, #4 + 803a91e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a922: e17c b.n 803ac1e + 803a924: 2308 movs r3, #8 + 803a926: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a92a: e178 b.n 803ac1e + 803a92c: 2310 movs r3, #16 + 803a92e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a932: e174 b.n 803ac1e + 803a934: 2320 movs r3, #32 + 803a936: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a93a: e170 b.n 803ac1e + 803a93c: 2340 movs r3, #64 ; 0x40 + 803a93e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a942: e16c b.n 803ac1e + 803a944: 2380 movs r3, #128 ; 0x80 + 803a946: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a94a: e168 b.n 803ac1e + 803a94c: 697b ldr r3, [r7, #20] + 803a94e: 681b ldr r3, [r3, #0] + 803a950: 4a1b ldr r2, [pc, #108] ; (803a9c0 ) + 803a952: 4293 cmp r3, r2 + 803a954: d142 bne.n 803a9dc + 803a956: 4b16 ldr r3, [pc, #88] ; (803a9b0 ) + 803a958: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a95a: f003 0307 and.w r3, r3, #7 + 803a95e: 2b05 cmp r3, #5 + 803a960: d838 bhi.n 803a9d4 + 803a962: a201 add r2, pc, #4 ; (adr r2, 803a968 ) + 803a964: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a968: 0803a981 .word 0x0803a981 + 803a96c: 0803a989 .word 0x0803a989 + 803a970: 0803a991 .word 0x0803a991 + 803a974: 0803a999 .word 0x0803a999 + 803a978: 0803a9c5 .word 0x0803a9c5 + 803a97c: 0803a9cd .word 0x0803a9cd + 803a980: 2300 movs r3, #0 + 803a982: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a986: e14a b.n 803ac1e + 803a988: 2304 movs r3, #4 + 803a98a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a98e: e146 b.n 803ac1e + 803a990: 2308 movs r3, #8 + 803a992: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a996: e142 b.n 803ac1e + 803a998: 2310 movs r3, #16 + 803a99a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a99e: e13e b.n 803ac1e + 803a9a0: cfff69f3 .word 0xcfff69f3 + 803a9a4: 58000c00 .word 0x58000c00 + 803a9a8: 11fff4ff .word 0x11fff4ff + 803a9ac: 40011000 .word 0x40011000 + 803a9b0: 58024400 .word 0x58024400 + 803a9b4: 40004400 .word 0x40004400 + 803a9b8: 40004800 .word 0x40004800 + 803a9bc: 40004c00 .word 0x40004c00 + 803a9c0: 40005000 .word 0x40005000 + 803a9c4: 2320 movs r3, #32 + 803a9c6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a9ca: e128 b.n 803ac1e + 803a9cc: 2340 movs r3, #64 ; 0x40 + 803a9ce: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a9d2: e124 b.n 803ac1e + 803a9d4: 2380 movs r3, #128 ; 0x80 + 803a9d6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803a9da: e120 b.n 803ac1e + 803a9dc: 697b ldr r3, [r7, #20] + 803a9de: 681b ldr r3, [r3, #0] + 803a9e0: 4acb ldr r2, [pc, #812] ; (803ad10 ) + 803a9e2: 4293 cmp r3, r2 + 803a9e4: d176 bne.n 803aad4 + 803a9e6: 4bcb ldr r3, [pc, #812] ; (803ad14 ) + 803a9e8: 6d5b ldr r3, [r3, #84] ; 0x54 + 803a9ea: f003 0338 and.w r3, r3, #56 ; 0x38 + 803a9ee: 2b28 cmp r3, #40 ; 0x28 + 803a9f0: d86c bhi.n 803aacc + 803a9f2: a201 add r2, pc, #4 ; (adr r2, 803a9f8 ) + 803a9f4: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803a9f8: 0803aa9d .word 0x0803aa9d + 803a9fc: 0803aacd .word 0x0803aacd + 803aa00: 0803aacd .word 0x0803aacd + 803aa04: 0803aacd .word 0x0803aacd + 803aa08: 0803aacd .word 0x0803aacd + 803aa0c: 0803aacd .word 0x0803aacd + 803aa10: 0803aacd .word 0x0803aacd + 803aa14: 0803aacd .word 0x0803aacd + 803aa18: 0803aaa5 .word 0x0803aaa5 + 803aa1c: 0803aacd .word 0x0803aacd + 803aa20: 0803aacd .word 0x0803aacd + 803aa24: 0803aacd .word 0x0803aacd + 803aa28: 0803aacd .word 0x0803aacd + 803aa2c: 0803aacd .word 0x0803aacd + 803aa30: 0803aacd .word 0x0803aacd + 803aa34: 0803aacd .word 0x0803aacd + 803aa38: 0803aaad .word 0x0803aaad + 803aa3c: 0803aacd .word 0x0803aacd + 803aa40: 0803aacd .word 0x0803aacd + 803aa44: 0803aacd .word 0x0803aacd + 803aa48: 0803aacd .word 0x0803aacd + 803aa4c: 0803aacd .word 0x0803aacd + 803aa50: 0803aacd .word 0x0803aacd + 803aa54: 0803aacd .word 0x0803aacd + 803aa58: 0803aab5 .word 0x0803aab5 + 803aa5c: 0803aacd .word 0x0803aacd + 803aa60: 0803aacd .word 0x0803aacd + 803aa64: 0803aacd .word 0x0803aacd + 803aa68: 0803aacd .word 0x0803aacd + 803aa6c: 0803aacd .word 0x0803aacd + 803aa70: 0803aacd .word 0x0803aacd + 803aa74: 0803aacd .word 0x0803aacd + 803aa78: 0803aabd .word 0x0803aabd + 803aa7c: 0803aacd .word 0x0803aacd + 803aa80: 0803aacd .word 0x0803aacd + 803aa84: 0803aacd .word 0x0803aacd + 803aa88: 0803aacd .word 0x0803aacd + 803aa8c: 0803aacd .word 0x0803aacd + 803aa90: 0803aacd .word 0x0803aacd + 803aa94: 0803aacd .word 0x0803aacd + 803aa98: 0803aac5 .word 0x0803aac5 + 803aa9c: 2301 movs r3, #1 + 803aa9e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aaa2: e0bc b.n 803ac1e + 803aaa4: 2304 movs r3, #4 + 803aaa6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aaaa: e0b8 b.n 803ac1e + 803aaac: 2308 movs r3, #8 + 803aaae: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aab2: e0b4 b.n 803ac1e + 803aab4: 2310 movs r3, #16 + 803aab6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aaba: e0b0 b.n 803ac1e + 803aabc: 2320 movs r3, #32 + 803aabe: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aac2: e0ac b.n 803ac1e + 803aac4: 2340 movs r3, #64 ; 0x40 + 803aac6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aaca: e0a8 b.n 803ac1e + 803aacc: 2380 movs r3, #128 ; 0x80 + 803aace: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aad2: e0a4 b.n 803ac1e + 803aad4: 697b ldr r3, [r7, #20] + 803aad6: 681b ldr r3, [r3, #0] + 803aad8: 4a8f ldr r2, [pc, #572] ; (803ad18 ) + 803aada: 4293 cmp r3, r2 + 803aadc: d130 bne.n 803ab40 + 803aade: 4b8d ldr r3, [pc, #564] ; (803ad14 ) + 803aae0: 6d5b ldr r3, [r3, #84] ; 0x54 + 803aae2: f003 0307 and.w r3, r3, #7 + 803aae6: 2b05 cmp r3, #5 + 803aae8: d826 bhi.n 803ab38 + 803aaea: a201 add r2, pc, #4 ; (adr r2, 803aaf0 ) + 803aaec: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803aaf0: 0803ab09 .word 0x0803ab09 + 803aaf4: 0803ab11 .word 0x0803ab11 + 803aaf8: 0803ab19 .word 0x0803ab19 + 803aafc: 0803ab21 .word 0x0803ab21 + 803ab00: 0803ab29 .word 0x0803ab29 + 803ab04: 0803ab31 .word 0x0803ab31 + 803ab08: 2300 movs r3, #0 + 803ab0a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab0e: e086 b.n 803ac1e + 803ab10: 2304 movs r3, #4 + 803ab12: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab16: e082 b.n 803ac1e + 803ab18: 2308 movs r3, #8 + 803ab1a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab1e: e07e b.n 803ac1e + 803ab20: 2310 movs r3, #16 + 803ab22: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab26: e07a b.n 803ac1e + 803ab28: 2320 movs r3, #32 + 803ab2a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab2e: e076 b.n 803ac1e + 803ab30: 2340 movs r3, #64 ; 0x40 + 803ab32: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab36: e072 b.n 803ac1e + 803ab38: 2380 movs r3, #128 ; 0x80 + 803ab3a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab3e: e06e b.n 803ac1e + 803ab40: 697b ldr r3, [r7, #20] + 803ab42: 681b ldr r3, [r3, #0] + 803ab44: 4a75 ldr r2, [pc, #468] ; (803ad1c ) + 803ab46: 4293 cmp r3, r2 + 803ab48: d130 bne.n 803abac + 803ab4a: 4b72 ldr r3, [pc, #456] ; (803ad14 ) + 803ab4c: 6d5b ldr r3, [r3, #84] ; 0x54 + 803ab4e: f003 0307 and.w r3, r3, #7 + 803ab52: 2b05 cmp r3, #5 + 803ab54: d826 bhi.n 803aba4 + 803ab56: a201 add r2, pc, #4 ; (adr r2, 803ab5c ) + 803ab58: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803ab5c: 0803ab75 .word 0x0803ab75 + 803ab60: 0803ab7d .word 0x0803ab7d + 803ab64: 0803ab85 .word 0x0803ab85 + 803ab68: 0803ab8d .word 0x0803ab8d + 803ab6c: 0803ab95 .word 0x0803ab95 + 803ab70: 0803ab9d .word 0x0803ab9d + 803ab74: 2300 movs r3, #0 + 803ab76: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab7a: e050 b.n 803ac1e + 803ab7c: 2304 movs r3, #4 + 803ab7e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab82: e04c b.n 803ac1e + 803ab84: 2308 movs r3, #8 + 803ab86: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab8a: e048 b.n 803ac1e + 803ab8c: 2310 movs r3, #16 + 803ab8e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab92: e044 b.n 803ac1e + 803ab94: 2320 movs r3, #32 + 803ab96: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ab9a: e040 b.n 803ac1e + 803ab9c: 2340 movs r3, #64 ; 0x40 + 803ab9e: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803aba2: e03c b.n 803ac1e + 803aba4: 2380 movs r3, #128 ; 0x80 + 803aba6: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803abaa: e038 b.n 803ac1e + 803abac: 697b ldr r3, [r7, #20] + 803abae: 681b ldr r3, [r3, #0] + 803abb0: 4a5b ldr r2, [pc, #364] ; (803ad20 ) + 803abb2: 4293 cmp r3, r2 + 803abb4: d130 bne.n 803ac18 + 803abb6: 4b57 ldr r3, [pc, #348] ; (803ad14 ) + 803abb8: 6d9b ldr r3, [r3, #88] ; 0x58 + 803abba: f003 0307 and.w r3, r3, #7 + 803abbe: 2b05 cmp r3, #5 + 803abc0: d826 bhi.n 803ac10 + 803abc2: a201 add r2, pc, #4 ; (adr r2, 803abc8 ) + 803abc4: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803abc8: 0803abe1 .word 0x0803abe1 + 803abcc: 0803abe9 .word 0x0803abe9 + 803abd0: 0803abf1 .word 0x0803abf1 + 803abd4: 0803abf9 .word 0x0803abf9 + 803abd8: 0803ac01 .word 0x0803ac01 + 803abdc: 0803ac09 .word 0x0803ac09 + 803abe0: 2302 movs r3, #2 + 803abe2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803abe6: e01a b.n 803ac1e + 803abe8: 2304 movs r3, #4 + 803abea: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803abee: e016 b.n 803ac1e + 803abf0: 2308 movs r3, #8 + 803abf2: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803abf6: e012 b.n 803ac1e + 803abf8: 2310 movs r3, #16 + 803abfa: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803abfe: e00e b.n 803ac1e + 803ac00: 2320 movs r3, #32 + 803ac02: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ac06: e00a b.n 803ac1e + 803ac08: 2340 movs r3, #64 ; 0x40 + 803ac0a: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ac0e: e006 b.n 803ac1e + 803ac10: 2380 movs r3, #128 ; 0x80 + 803ac12: f887 3043 strb.w r3, [r7, #67] ; 0x43 + 803ac16: e002 b.n 803ac1e + 803ac18: 2380 movs r3, #128 ; 0x80 + 803ac1a: f887 3043 strb.w r3, [r7, #67] ; 0x43 /* Check LPUART instance */ if (UART_INSTANCE_LOWPOWER(huart)) - 803abde: 697b ldr r3, [r7, #20] - 803abe0: 681b ldr r3, [r3, #0] - 803abe2: 4a3f ldr r2, [pc, #252] ; (803ace0 ) - 803abe4: 4293 cmp r3, r2 - 803abe6: f040 80f8 bne.w 803adda + 803ac1e: 697b ldr r3, [r7, #20] + 803ac20: 681b ldr r3, [r3, #0] + 803ac22: 4a3f ldr r2, [pc, #252] ; (803ad20 ) + 803ac24: 4293 cmp r3, r2 + 803ac26: f040 80f8 bne.w 803ae1a { /* Retrieve frequency clock */ switch (clocksource) - 803abea: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 - 803abee: 2b20 cmp r3, #32 - 803abf0: dc46 bgt.n 803ac80 - 803abf2: 2b02 cmp r3, #2 - 803abf4: f2c0 8082 blt.w 803acfc - 803abf8: 3b02 subs r3, #2 - 803abfa: 2b1e cmp r3, #30 - 803abfc: d87e bhi.n 803acfc - 803abfe: a201 add r2, pc, #4 ; (adr r2, 803ac04 ) - 803ac00: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803ac04: 0803ac87 .word 0x0803ac87 - 803ac08: 0803acfd .word 0x0803acfd - 803ac0c: 0803ac8f .word 0x0803ac8f - 803ac10: 0803acfd .word 0x0803acfd - 803ac14: 0803acfd .word 0x0803acfd - 803ac18: 0803acfd .word 0x0803acfd - 803ac1c: 0803ac9f .word 0x0803ac9f - 803ac20: 0803acfd .word 0x0803acfd - 803ac24: 0803acfd .word 0x0803acfd - 803ac28: 0803acfd .word 0x0803acfd - 803ac2c: 0803acfd .word 0x0803acfd - 803ac30: 0803acfd .word 0x0803acfd - 803ac34: 0803acfd .word 0x0803acfd - 803ac38: 0803acfd .word 0x0803acfd - 803ac3c: 0803acaf .word 0x0803acaf - 803ac40: 0803acfd .word 0x0803acfd - 803ac44: 0803acfd .word 0x0803acfd - 803ac48: 0803acfd .word 0x0803acfd - 803ac4c: 0803acfd .word 0x0803acfd - 803ac50: 0803acfd .word 0x0803acfd - 803ac54: 0803acfd .word 0x0803acfd - 803ac58: 0803acfd .word 0x0803acfd - 803ac5c: 0803acfd .word 0x0803acfd - 803ac60: 0803acfd .word 0x0803acfd - 803ac64: 0803acfd .word 0x0803acfd - 803ac68: 0803acfd .word 0x0803acfd - 803ac6c: 0803acfd .word 0x0803acfd - 803ac70: 0803acfd .word 0x0803acfd - 803ac74: 0803acfd .word 0x0803acfd - 803ac78: 0803acfd .word 0x0803acfd + 803ac2a: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 + 803ac2e: 2b20 cmp r3, #32 + 803ac30: dc46 bgt.n 803acc0 + 803ac32: 2b02 cmp r3, #2 + 803ac34: f2c0 8082 blt.w 803ad3c + 803ac38: 3b02 subs r3, #2 + 803ac3a: 2b1e cmp r3, #30 + 803ac3c: d87e bhi.n 803ad3c + 803ac3e: a201 add r2, pc, #4 ; (adr r2, 803ac44 ) + 803ac40: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803ac44: 0803acc7 .word 0x0803acc7 + 803ac48: 0803ad3d .word 0x0803ad3d + 803ac4c: 0803accf .word 0x0803accf + 803ac50: 0803ad3d .word 0x0803ad3d + 803ac54: 0803ad3d .word 0x0803ad3d + 803ac58: 0803ad3d .word 0x0803ad3d + 803ac5c: 0803acdf .word 0x0803acdf + 803ac60: 0803ad3d .word 0x0803ad3d + 803ac64: 0803ad3d .word 0x0803ad3d + 803ac68: 0803ad3d .word 0x0803ad3d + 803ac6c: 0803ad3d .word 0x0803ad3d + 803ac70: 0803ad3d .word 0x0803ad3d + 803ac74: 0803ad3d .word 0x0803ad3d + 803ac78: 0803ad3d .word 0x0803ad3d 803ac7c: 0803acef .word 0x0803acef - 803ac80: 2b40 cmp r3, #64 ; 0x40 - 803ac82: d037 beq.n 803acf4 - 803ac84: e03a b.n 803acfc + 803ac80: 0803ad3d .word 0x0803ad3d + 803ac84: 0803ad3d .word 0x0803ad3d + 803ac88: 0803ad3d .word 0x0803ad3d + 803ac8c: 0803ad3d .word 0x0803ad3d + 803ac90: 0803ad3d .word 0x0803ad3d + 803ac94: 0803ad3d .word 0x0803ad3d + 803ac98: 0803ad3d .word 0x0803ad3d + 803ac9c: 0803ad3d .word 0x0803ad3d + 803aca0: 0803ad3d .word 0x0803ad3d + 803aca4: 0803ad3d .word 0x0803ad3d + 803aca8: 0803ad3d .word 0x0803ad3d + 803acac: 0803ad3d .word 0x0803ad3d + 803acb0: 0803ad3d .word 0x0803ad3d + 803acb4: 0803ad3d .word 0x0803ad3d + 803acb8: 0803ad3d .word 0x0803ad3d + 803acbc: 0803ad2f .word 0x0803ad2f + 803acc0: 2b40 cmp r3, #64 ; 0x40 + 803acc2: d037 beq.n 803ad34 + 803acc4: e03a b.n 803ad3c { case UART_CLOCKSOURCE_D3PCLK1: pclk = HAL_RCCEx_GetD3PCLK1Freq(); - 803ac86: f7fc ff63 bl 8037b50 - 803ac8a: 63f8 str r0, [r7, #60] ; 0x3c + 803acc6: f7fc ff63 bl 8037b90 + 803acca: 63f8 str r0, [r7, #60] ; 0x3c break; - 803ac8c: e03c b.n 803ad08 + 803accc: e03c b.n 803ad48 case UART_CLOCKSOURCE_PLL2: HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 803ac8e: f107 0324 add.w r3, r7, #36 ; 0x24 - 803ac92: 4618 mov r0, r3 - 803ac94: f7fc ff72 bl 8037b7c + 803acce: f107 0324 add.w r3, r7, #36 ; 0x24 + 803acd2: 4618 mov r0, r3 + 803acd4: f7fc ff72 bl 8037bbc pclk = pll2_clocks.PLL2_Q_Frequency; - 803ac98: 6abb ldr r3, [r7, #40] ; 0x28 - 803ac9a: 63fb str r3, [r7, #60] ; 0x3c + 803acd8: 6abb ldr r3, [r7, #40] ; 0x28 + 803acda: 63fb str r3, [r7, #60] ; 0x3c break; - 803ac9c: e034 b.n 803ad08 + 803acdc: e034 b.n 803ad48 case UART_CLOCKSOURCE_PLL3: HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803ac9e: f107 0318 add.w r3, r7, #24 - 803aca2: 4618 mov r0, r3 - 803aca4: f7fd f8be bl 8037e24 + 803acde: f107 0318 add.w r3, r7, #24 + 803ace2: 4618 mov r0, r3 + 803ace4: f7fd f8be bl 8037e64 pclk = pll3_clocks.PLL3_Q_Frequency; - 803aca8: 69fb ldr r3, [r7, #28] - 803acaa: 63fb str r3, [r7, #60] ; 0x3c + 803ace8: 69fb ldr r3, [r7, #28] + 803acea: 63fb str r3, [r7, #60] ; 0x3c break; - 803acac: e02c b.n 803ad08 + 803acec: e02c b.n 803ad48 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 803acae: 4b09 ldr r3, [pc, #36] ; (803acd4 ) - 803acb0: 681b ldr r3, [r3, #0] - 803acb2: f003 0320 and.w r3, r3, #32 - 803acb6: 2b00 cmp r3, #0 - 803acb8: d016 beq.n 803ace8 + 803acee: 4b09 ldr r3, [pc, #36] ; (803ad14 ) + 803acf0: 681b ldr r3, [r3, #0] + 803acf2: f003 0320 and.w r3, r3, #32 + 803acf6: 2b00 cmp r3, #0 + 803acf8: d016 beq.n 803ad28 { pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U)); - 803acba: 4b06 ldr r3, [pc, #24] ; (803acd4 ) - 803acbc: 681b ldr r3, [r3, #0] - 803acbe: 08db lsrs r3, r3, #3 - 803acc0: f003 0303 and.w r3, r3, #3 - 803acc4: 4a07 ldr r2, [pc, #28] ; (803ace4 ) - 803acc6: fa22 f303 lsr.w r3, r2, r3 - 803acca: 63fb str r3, [r7, #60] ; 0x3c + 803acfa: 4b06 ldr r3, [pc, #24] ; (803ad14 ) + 803acfc: 681b ldr r3, [r3, #0] + 803acfe: 08db lsrs r3, r3, #3 + 803ad00: f003 0303 and.w r3, r3, #3 + 803ad04: 4a07 ldr r2, [pc, #28] ; (803ad24 ) + 803ad06: fa22 f303 lsr.w r3, r2, r3 + 803ad0a: 63fb str r3, [r7, #60] ; 0x3c } else { pclk = (uint32_t) HSI_VALUE; } break; - 803accc: e01c b.n 803ad08 - 803acce: bf00 nop - 803acd0: 40011400 .word 0x40011400 - 803acd4: 58024400 .word 0x58024400 - 803acd8: 40007800 .word 0x40007800 - 803acdc: 40007c00 .word 0x40007c00 - 803ace0: 58000c00 .word 0x58000c00 - 803ace4: 03d09000 .word 0x03d09000 + 803ad0c: e01c b.n 803ad48 + 803ad0e: bf00 nop + 803ad10: 40011400 .word 0x40011400 + 803ad14: 58024400 .word 0x58024400 + 803ad18: 40007800 .word 0x40007800 + 803ad1c: 40007c00 .word 0x40007c00 + 803ad20: 58000c00 .word 0x58000c00 + 803ad24: 03d09000 .word 0x03d09000 pclk = (uint32_t) HSI_VALUE; - 803ace8: 4b9d ldr r3, [pc, #628] ; (803af60 ) - 803acea: 63fb str r3, [r7, #60] ; 0x3c + 803ad28: 4b9d ldr r3, [pc, #628] ; (803afa0 ) + 803ad2a: 63fb str r3, [r7, #60] ; 0x3c break; - 803acec: e00c b.n 803ad08 + 803ad2c: e00c b.n 803ad48 case UART_CLOCKSOURCE_CSI: pclk = (uint32_t) CSI_VALUE; - 803acee: 4b9d ldr r3, [pc, #628] ; (803af64 ) - 803acf0: 63fb str r3, [r7, #60] ; 0x3c + 803ad2e: 4b9d ldr r3, [pc, #628] ; (803afa4 ) + 803ad30: 63fb str r3, [r7, #60] ; 0x3c break; - 803acf2: e009 b.n 803ad08 + 803ad32: e009 b.n 803ad48 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 803acf4: f44f 4300 mov.w r3, #32768 ; 0x8000 - 803acf8: 63fb str r3, [r7, #60] ; 0x3c + 803ad34: f44f 4300 mov.w r3, #32768 ; 0x8000 + 803ad38: 63fb str r3, [r7, #60] ; 0x3c break; - 803acfa: e005 b.n 803ad08 + 803ad3a: e005 b.n 803ad48 default: pclk = 0U; - 803acfc: 2300 movs r3, #0 - 803acfe: 63fb str r3, [r7, #60] ; 0x3c + 803ad3c: 2300 movs r3, #0 + 803ad3e: 63fb str r3, [r7, #60] ; 0x3c ret = HAL_ERROR; - 803ad00: 2301 movs r3, #1 - 803ad02: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803ad40: 2301 movs r3, #1 + 803ad42: f887 3042 strb.w r3, [r7, #66] ; 0x42 break; - 803ad06: bf00 nop + 803ad46: bf00 nop } /* If proper clock source reported */ if (pclk != 0U) - 803ad08: 6bfb ldr r3, [r7, #60] ; 0x3c - 803ad0a: 2b00 cmp r3, #0 - 803ad0c: f000 81de beq.w 803b0cc + 803ad48: 6bfb ldr r3, [r7, #60] ; 0x3c + 803ad4a: 2b00 cmp r3, #0 + 803ad4c: f000 81de beq.w 803b10c { /* Compute clock after Prescaler */ lpuart_ker_ck_pres = (pclk / UARTPrescTable[huart->Init.ClockPrescaler]); - 803ad10: 697b ldr r3, [r7, #20] - 803ad12: 6a5b ldr r3, [r3, #36] ; 0x24 - 803ad14: 4a94 ldr r2, [pc, #592] ; (803af68 ) - 803ad16: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 803ad1a: 461a mov r2, r3 - 803ad1c: 6bfb ldr r3, [r7, #60] ; 0x3c - 803ad1e: fbb3 f3f2 udiv r3, r3, r2 - 803ad22: 633b str r3, [r7, #48] ; 0x30 + 803ad50: 697b ldr r3, [r7, #20] + 803ad52: 6a5b ldr r3, [r3, #36] ; 0x24 + 803ad54: 4a94 ldr r2, [pc, #592] ; (803afa8 ) + 803ad56: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 803ad5a: 461a mov r2, r3 + 803ad5c: 6bfb ldr r3, [r7, #60] ; 0x3c + 803ad5e: fbb3 f3f2 udiv r3, r3, r2 + 803ad62: 633b str r3, [r7, #48] ; 0x30 /* Ensure that Frequency clock is in the range [3 * baudrate, 4096 * baudrate] */ if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) || - 803ad24: 697b ldr r3, [r7, #20] - 803ad26: 685a ldr r2, [r3, #4] - 803ad28: 4613 mov r3, r2 - 803ad2a: 005b lsls r3, r3, #1 - 803ad2c: 4413 add r3, r2 - 803ad2e: 6b3a ldr r2, [r7, #48] ; 0x30 - 803ad30: 429a cmp r2, r3 - 803ad32: d305 bcc.n 803ad40 + 803ad64: 697b ldr r3, [r7, #20] + 803ad66: 685a ldr r2, [r3, #4] + 803ad68: 4613 mov r3, r2 + 803ad6a: 005b lsls r3, r3, #1 + 803ad6c: 4413 add r3, r2 + 803ad6e: 6b3a ldr r2, [r7, #48] ; 0x30 + 803ad70: 429a cmp r2, r3 + 803ad72: d305 bcc.n 803ad80 (lpuart_ker_ck_pres > (4096U * huart->Init.BaudRate))) - 803ad34: 697b ldr r3, [r7, #20] - 803ad36: 685b ldr r3, [r3, #4] - 803ad38: 031b lsls r3, r3, #12 + 803ad74: 697b ldr r3, [r7, #20] + 803ad76: 685b ldr r3, [r3, #4] + 803ad78: 031b lsls r3, r3, #12 if ((lpuart_ker_ck_pres < (3U * huart->Init.BaudRate)) || - 803ad3a: 6b3a ldr r2, [r7, #48] ; 0x30 - 803ad3c: 429a cmp r2, r3 - 803ad3e: d903 bls.n 803ad48 + 803ad7a: 6b3a ldr r2, [r7, #48] ; 0x30 + 803ad7c: 429a cmp r2, r3 + 803ad7e: d903 bls.n 803ad88 { ret = HAL_ERROR; - 803ad40: 2301 movs r3, #1 - 803ad42: f887 3042 strb.w r3, [r7, #66] ; 0x42 - 803ad46: e1c1 b.n 803b0cc + 803ad80: 2301 movs r3, #1 + 803ad82: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803ad86: e1c1 b.n 803b10c } else { /* Check computed UsartDiv value is in allocated range (it is forbidden to write values lower than 0x300 in the LPUART_BRR register) */ usartdiv = (uint32_t)(UART_DIV_LPUART(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 803ad48: 6bfb ldr r3, [r7, #60] ; 0x3c - 803ad4a: 2200 movs r2, #0 - 803ad4c: 60bb str r3, [r7, #8] - 803ad4e: 60fa str r2, [r7, #12] - 803ad50: 697b ldr r3, [r7, #20] - 803ad52: 6a5b ldr r3, [r3, #36] ; 0x24 - 803ad54: 4a84 ldr r2, [pc, #528] ; (803af68 ) - 803ad56: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 803ad5a: b29b uxth r3, r3 - 803ad5c: 2200 movs r2, #0 - 803ad5e: 603b str r3, [r7, #0] - 803ad60: 607a str r2, [r7, #4] - 803ad62: e9d7 2300 ldrd r2, r3, [r7] - 803ad66: e9d7 0102 ldrd r0, r1, [r7, #8] - 803ad6a: f7e5 fb21 bl 80203b0 <__aeabi_uldivmod> - 803ad6e: 4602 mov r2, r0 - 803ad70: 460b mov r3, r1 - 803ad72: 4610 mov r0, r2 - 803ad74: 4619 mov r1, r3 - 803ad76: f04f 0200 mov.w r2, #0 - 803ad7a: f04f 0300 mov.w r3, #0 - 803ad7e: 020b lsls r3, r1, #8 - 803ad80: ea43 6310 orr.w r3, r3, r0, lsr #24 - 803ad84: 0202 lsls r2, r0, #8 - 803ad86: 6979 ldr r1, [r7, #20] - 803ad88: 6849 ldr r1, [r1, #4] - 803ad8a: 0849 lsrs r1, r1, #1 - 803ad8c: 2000 movs r0, #0 - 803ad8e: 460c mov r4, r1 - 803ad90: 4605 mov r5, r0 - 803ad92: eb12 0804 adds.w r8, r2, r4 - 803ad96: eb43 0905 adc.w r9, r3, r5 - 803ad9a: 697b ldr r3, [r7, #20] - 803ad9c: 685b ldr r3, [r3, #4] - 803ad9e: 2200 movs r2, #0 - 803ada0: 469a mov sl, r3 - 803ada2: 4693 mov fp, r2 - 803ada4: 4652 mov r2, sl - 803ada6: 465b mov r3, fp - 803ada8: 4640 mov r0, r8 - 803adaa: 4649 mov r1, r9 - 803adac: f7e5 fb00 bl 80203b0 <__aeabi_uldivmod> - 803adb0: 4602 mov r2, r0 - 803adb2: 460b mov r3, r1 - 803adb4: 4613 mov r3, r2 - 803adb6: 63bb str r3, [r7, #56] ; 0x38 + 803ad88: 6bfb ldr r3, [r7, #60] ; 0x3c + 803ad8a: 2200 movs r2, #0 + 803ad8c: 60bb str r3, [r7, #8] + 803ad8e: 60fa str r2, [r7, #12] + 803ad90: 697b ldr r3, [r7, #20] + 803ad92: 6a5b ldr r3, [r3, #36] ; 0x24 + 803ad94: 4a84 ldr r2, [pc, #528] ; (803afa8 ) + 803ad96: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 803ad9a: b29b uxth r3, r3 + 803ad9c: 2200 movs r2, #0 + 803ad9e: 603b str r3, [r7, #0] + 803ada0: 607a str r2, [r7, #4] + 803ada2: e9d7 2300 ldrd r2, r3, [r7] + 803ada6: e9d7 0102 ldrd r0, r1, [r7, #8] + 803adaa: f7e5 fb01 bl 80203b0 <__aeabi_uldivmod> + 803adae: 4602 mov r2, r0 + 803adb0: 460b mov r3, r1 + 803adb2: 4610 mov r0, r2 + 803adb4: 4619 mov r1, r3 + 803adb6: f04f 0200 mov.w r2, #0 + 803adba: f04f 0300 mov.w r3, #0 + 803adbe: 020b lsls r3, r1, #8 + 803adc0: ea43 6310 orr.w r3, r3, r0, lsr #24 + 803adc4: 0202 lsls r2, r0, #8 + 803adc6: 6979 ldr r1, [r7, #20] + 803adc8: 6849 ldr r1, [r1, #4] + 803adca: 0849 lsrs r1, r1, #1 + 803adcc: 2000 movs r0, #0 + 803adce: 460c mov r4, r1 + 803add0: 4605 mov r5, r0 + 803add2: eb12 0804 adds.w r8, r2, r4 + 803add6: eb43 0905 adc.w r9, r3, r5 + 803adda: 697b ldr r3, [r7, #20] + 803addc: 685b ldr r3, [r3, #4] + 803adde: 2200 movs r2, #0 + 803ade0: 469a mov sl, r3 + 803ade2: 4693 mov fp, r2 + 803ade4: 4652 mov r2, sl + 803ade6: 465b mov r3, fp + 803ade8: 4640 mov r0, r8 + 803adea: 4649 mov r1, r9 + 803adec: f7e5 fae0 bl 80203b0 <__aeabi_uldivmod> + 803adf0: 4602 mov r2, r0 + 803adf2: 460b mov r3, r1 + 803adf4: 4613 mov r3, r2 + 803adf6: 63bb str r3, [r7, #56] ; 0x38 if ((usartdiv >= LPUART_BRR_MIN) && (usartdiv <= LPUART_BRR_MAX)) - 803adb8: 6bbb ldr r3, [r7, #56] ; 0x38 - 803adba: f5b3 7f40 cmp.w r3, #768 ; 0x300 - 803adbe: d308 bcc.n 803add2 - 803adc0: 6bbb ldr r3, [r7, #56] ; 0x38 - 803adc2: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 803adc6: d204 bcs.n 803add2 + 803adf8: 6bbb ldr r3, [r7, #56] ; 0x38 + 803adfa: f5b3 7f40 cmp.w r3, #768 ; 0x300 + 803adfe: d308 bcc.n 803ae12 + 803ae00: 6bbb ldr r3, [r7, #56] ; 0x38 + 803ae02: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 803ae06: d204 bcs.n 803ae12 { huart->Instance->BRR = usartdiv; - 803adc8: 697b ldr r3, [r7, #20] - 803adca: 681b ldr r3, [r3, #0] - 803adcc: 6bba ldr r2, [r7, #56] ; 0x38 - 803adce: 60da str r2, [r3, #12] - 803add0: e17c b.n 803b0cc + 803ae08: 697b ldr r3, [r7, #20] + 803ae0a: 681b ldr r3, [r3, #0] + 803ae0c: 6bba ldr r2, [r7, #56] ; 0x38 + 803ae0e: 60da str r2, [r3, #12] + 803ae10: e17c b.n 803b10c } else { ret = HAL_ERROR; - 803add2: 2301 movs r3, #1 - 803add4: f887 3042 strb.w r3, [r7, #66] ; 0x42 - 803add8: e178 b.n 803b0cc + 803ae12: 2301 movs r3, #1 + 803ae14: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803ae18: e178 b.n 803b10c } /* if ( (lpuart_ker_ck_pres < (3 * huart->Init.BaudRate) ) || (lpuart_ker_ck_pres > (4096 * huart->Init.BaudRate) )) */ } /* if (pclk != 0) */ } /* Check UART Over Sampling to set Baud Rate Register */ else if (huart->Init.OverSampling == UART_OVERSAMPLING_8) - 803adda: 697b ldr r3, [r7, #20] - 803addc: 69db ldr r3, [r3, #28] - 803adde: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 - 803ade2: f040 80c5 bne.w 803af70 + 803ae1a: 697b ldr r3, [r7, #20] + 803ae1c: 69db ldr r3, [r3, #28] + 803ae1e: f5b3 4f00 cmp.w r3, #32768 ; 0x8000 + 803ae22: f040 80c5 bne.w 803afb0 { switch (clocksource) - 803ade6: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 - 803adea: 2b20 cmp r3, #32 - 803adec: dc48 bgt.n 803ae80 - 803adee: 2b00 cmp r3, #0 - 803adf0: db7b blt.n 803aeea - 803adf2: 2b20 cmp r3, #32 - 803adf4: d879 bhi.n 803aeea - 803adf6: a201 add r2, pc, #4 ; (adr r2, 803adfc ) - 803adf8: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803adfc: 0803ae87 .word 0x0803ae87 - 803ae00: 0803ae8f .word 0x0803ae8f - 803ae04: 0803aeeb .word 0x0803aeeb - 803ae08: 0803aeeb .word 0x0803aeeb - 803ae0c: 0803ae97 .word 0x0803ae97 - 803ae10: 0803aeeb .word 0x0803aeeb - 803ae14: 0803aeeb .word 0x0803aeeb - 803ae18: 0803aeeb .word 0x0803aeeb - 803ae1c: 0803aea7 .word 0x0803aea7 - 803ae20: 0803aeeb .word 0x0803aeeb - 803ae24: 0803aeeb .word 0x0803aeeb - 803ae28: 0803aeeb .word 0x0803aeeb - 803ae2c: 0803aeeb .word 0x0803aeeb - 803ae30: 0803aeeb .word 0x0803aeeb - 803ae34: 0803aeeb .word 0x0803aeeb - 803ae38: 0803aeeb .word 0x0803aeeb - 803ae3c: 0803aeb7 .word 0x0803aeb7 - 803ae40: 0803aeeb .word 0x0803aeeb - 803ae44: 0803aeeb .word 0x0803aeeb - 803ae48: 0803aeeb .word 0x0803aeeb - 803ae4c: 0803aeeb .word 0x0803aeeb - 803ae50: 0803aeeb .word 0x0803aeeb - 803ae54: 0803aeeb .word 0x0803aeeb - 803ae58: 0803aeeb .word 0x0803aeeb - 803ae5c: 0803aeeb .word 0x0803aeeb - 803ae60: 0803aeeb .word 0x0803aeeb - 803ae64: 0803aeeb .word 0x0803aeeb - 803ae68: 0803aeeb .word 0x0803aeeb - 803ae6c: 0803aeeb .word 0x0803aeeb - 803ae70: 0803aeeb .word 0x0803aeeb - 803ae74: 0803aeeb .word 0x0803aeeb - 803ae78: 0803aeeb .word 0x0803aeeb - 803ae7c: 0803aedd .word 0x0803aedd - 803ae80: 2b40 cmp r3, #64 ; 0x40 - 803ae82: d02e beq.n 803aee2 - 803ae84: e031 b.n 803aeea + 803ae26: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 + 803ae2a: 2b20 cmp r3, #32 + 803ae2c: dc48 bgt.n 803aec0 + 803ae2e: 2b00 cmp r3, #0 + 803ae30: db7b blt.n 803af2a + 803ae32: 2b20 cmp r3, #32 + 803ae34: d879 bhi.n 803af2a + 803ae36: a201 add r2, pc, #4 ; (adr r2, 803ae3c ) + 803ae38: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803ae3c: 0803aec7 .word 0x0803aec7 + 803ae40: 0803aecf .word 0x0803aecf + 803ae44: 0803af2b .word 0x0803af2b + 803ae48: 0803af2b .word 0x0803af2b + 803ae4c: 0803aed7 .word 0x0803aed7 + 803ae50: 0803af2b .word 0x0803af2b + 803ae54: 0803af2b .word 0x0803af2b + 803ae58: 0803af2b .word 0x0803af2b + 803ae5c: 0803aee7 .word 0x0803aee7 + 803ae60: 0803af2b .word 0x0803af2b + 803ae64: 0803af2b .word 0x0803af2b + 803ae68: 0803af2b .word 0x0803af2b + 803ae6c: 0803af2b .word 0x0803af2b + 803ae70: 0803af2b .word 0x0803af2b + 803ae74: 0803af2b .word 0x0803af2b + 803ae78: 0803af2b .word 0x0803af2b + 803ae7c: 0803aef7 .word 0x0803aef7 + 803ae80: 0803af2b .word 0x0803af2b + 803ae84: 0803af2b .word 0x0803af2b + 803ae88: 0803af2b .word 0x0803af2b + 803ae8c: 0803af2b .word 0x0803af2b + 803ae90: 0803af2b .word 0x0803af2b + 803ae94: 0803af2b .word 0x0803af2b + 803ae98: 0803af2b .word 0x0803af2b + 803ae9c: 0803af2b .word 0x0803af2b + 803aea0: 0803af2b .word 0x0803af2b + 803aea4: 0803af2b .word 0x0803af2b + 803aea8: 0803af2b .word 0x0803af2b + 803aeac: 0803af2b .word 0x0803af2b + 803aeb0: 0803af2b .word 0x0803af2b + 803aeb4: 0803af2b .word 0x0803af2b + 803aeb8: 0803af2b .word 0x0803af2b + 803aebc: 0803af1d .word 0x0803af1d + 803aec0: 2b40 cmp r3, #64 ; 0x40 + 803aec2: d02e beq.n 803af22 + 803aec4: e031 b.n 803af2a { case UART_CLOCKSOURCE_D2PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 803ae86: f7fb fa03 bl 8036290 - 803ae8a: 63f8 str r0, [r7, #60] ; 0x3c + 803aec6: f7fb fa03 bl 80362d0 + 803aeca: 63f8 str r0, [r7, #60] ; 0x3c break; - 803ae8c: e033 b.n 803aef6 + 803aecc: e033 b.n 803af36 case UART_CLOCKSOURCE_D2PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); - 803ae8e: f7fb fa15 bl 80362bc - 803ae92: 63f8 str r0, [r7, #60] ; 0x3c + 803aece: f7fb fa15 bl 80362fc + 803aed2: 63f8 str r0, [r7, #60] ; 0x3c break; - 803ae94: e02f b.n 803aef6 + 803aed4: e02f b.n 803af36 case UART_CLOCKSOURCE_PLL2: HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 803ae96: f107 0324 add.w r3, r7, #36 ; 0x24 - 803ae9a: 4618 mov r0, r3 - 803ae9c: f7fc fe6e bl 8037b7c + 803aed6: f107 0324 add.w r3, r7, #36 ; 0x24 + 803aeda: 4618 mov r0, r3 + 803aedc: f7fc fe6e bl 8037bbc pclk = pll2_clocks.PLL2_Q_Frequency; - 803aea0: 6abb ldr r3, [r7, #40] ; 0x28 - 803aea2: 63fb str r3, [r7, #60] ; 0x3c + 803aee0: 6abb ldr r3, [r7, #40] ; 0x28 + 803aee2: 63fb str r3, [r7, #60] ; 0x3c break; - 803aea4: e027 b.n 803aef6 + 803aee4: e027 b.n 803af36 case UART_CLOCKSOURCE_PLL3: HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803aea6: f107 0318 add.w r3, r7, #24 - 803aeaa: 4618 mov r0, r3 - 803aeac: f7fc ffba bl 8037e24 + 803aee6: f107 0318 add.w r3, r7, #24 + 803aeea: 4618 mov r0, r3 + 803aeec: f7fc ffba bl 8037e64 pclk = pll3_clocks.PLL3_Q_Frequency; - 803aeb0: 69fb ldr r3, [r7, #28] - 803aeb2: 63fb str r3, [r7, #60] ; 0x3c + 803aef0: 69fb ldr r3, [r7, #28] + 803aef2: 63fb str r3, [r7, #60] ; 0x3c break; - 803aeb4: e01f b.n 803aef6 + 803aef4: e01f b.n 803af36 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 803aeb6: 4b2d ldr r3, [pc, #180] ; (803af6c ) - 803aeb8: 681b ldr r3, [r3, #0] - 803aeba: f003 0320 and.w r3, r3, #32 - 803aebe: 2b00 cmp r3, #0 - 803aec0: d009 beq.n 803aed6 + 803aef6: 4b2d ldr r3, [pc, #180] ; (803afac ) + 803aef8: 681b ldr r3, [r3, #0] + 803aefa: f003 0320 and.w r3, r3, #32 + 803aefe: 2b00 cmp r3, #0 + 803af00: d009 beq.n 803af16 { pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U)); - 803aec2: 4b2a ldr r3, [pc, #168] ; (803af6c ) - 803aec4: 681b ldr r3, [r3, #0] - 803aec6: 08db lsrs r3, r3, #3 - 803aec8: f003 0303 and.w r3, r3, #3 - 803aecc: 4a24 ldr r2, [pc, #144] ; (803af60 ) - 803aece: fa22 f303 lsr.w r3, r2, r3 - 803aed2: 63fb str r3, [r7, #60] ; 0x3c + 803af02: 4b2a ldr r3, [pc, #168] ; (803afac ) + 803af04: 681b ldr r3, [r3, #0] + 803af06: 08db lsrs r3, r3, #3 + 803af08: f003 0303 and.w r3, r3, #3 + 803af0c: 4a24 ldr r2, [pc, #144] ; (803afa0 ) + 803af0e: fa22 f303 lsr.w r3, r2, r3 + 803af12: 63fb str r3, [r7, #60] ; 0x3c } else { pclk = (uint32_t) HSI_VALUE; } break; - 803aed4: e00f b.n 803aef6 + 803af14: e00f b.n 803af36 pclk = (uint32_t) HSI_VALUE; - 803aed6: 4b22 ldr r3, [pc, #136] ; (803af60 ) - 803aed8: 63fb str r3, [r7, #60] ; 0x3c + 803af16: 4b22 ldr r3, [pc, #136] ; (803afa0 ) + 803af18: 63fb str r3, [r7, #60] ; 0x3c break; - 803aeda: e00c b.n 803aef6 + 803af1a: e00c b.n 803af36 case UART_CLOCKSOURCE_CSI: pclk = (uint32_t) CSI_VALUE; - 803aedc: 4b21 ldr r3, [pc, #132] ; (803af64 ) - 803aede: 63fb str r3, [r7, #60] ; 0x3c + 803af1c: 4b21 ldr r3, [pc, #132] ; (803afa4 ) + 803af1e: 63fb str r3, [r7, #60] ; 0x3c break; - 803aee0: e009 b.n 803aef6 + 803af20: e009 b.n 803af36 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 803aee2: f44f 4300 mov.w r3, #32768 ; 0x8000 - 803aee6: 63fb str r3, [r7, #60] ; 0x3c + 803af22: f44f 4300 mov.w r3, #32768 ; 0x8000 + 803af26: 63fb str r3, [r7, #60] ; 0x3c break; - 803aee8: e005 b.n 803aef6 + 803af28: e005 b.n 803af36 default: pclk = 0U; - 803aeea: 2300 movs r3, #0 - 803aeec: 63fb str r3, [r7, #60] ; 0x3c + 803af2a: 2300 movs r3, #0 + 803af2c: 63fb str r3, [r7, #60] ; 0x3c ret = HAL_ERROR; - 803aeee: 2301 movs r3, #1 - 803aef0: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803af2e: 2301 movs r3, #1 + 803af30: f887 3042 strb.w r3, [r7, #66] ; 0x42 break; - 803aef4: bf00 nop + 803af34: bf00 nop } /* USARTDIV must be greater than or equal to 0d16 */ if (pclk != 0U) - 803aef6: 6bfb ldr r3, [r7, #60] ; 0x3c - 803aef8: 2b00 cmp r3, #0 - 803aefa: f000 80e7 beq.w 803b0cc + 803af36: 6bfb ldr r3, [r7, #60] ; 0x3c + 803af38: 2b00 cmp r3, #0 + 803af3a: f000 80e7 beq.w 803b10c { usartdiv = (uint32_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 803aefe: 697b ldr r3, [r7, #20] - 803af00: 6a5b ldr r3, [r3, #36] ; 0x24 - 803af02: 4a19 ldr r2, [pc, #100] ; (803af68 ) - 803af04: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 803af08: 461a mov r2, r3 - 803af0a: 6bfb ldr r3, [r7, #60] ; 0x3c - 803af0c: fbb3 f3f2 udiv r3, r3, r2 - 803af10: 005a lsls r2, r3, #1 - 803af12: 697b ldr r3, [r7, #20] - 803af14: 685b ldr r3, [r3, #4] - 803af16: 085b lsrs r3, r3, #1 - 803af18: 441a add r2, r3 - 803af1a: 697b ldr r3, [r7, #20] - 803af1c: 685b ldr r3, [r3, #4] - 803af1e: fbb2 f3f3 udiv r3, r2, r3 - 803af22: 63bb str r3, [r7, #56] ; 0x38 + 803af3e: 697b ldr r3, [r7, #20] + 803af40: 6a5b ldr r3, [r3, #36] ; 0x24 + 803af42: 4a19 ldr r2, [pc, #100] ; (803afa8 ) + 803af44: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 803af48: 461a mov r2, r3 + 803af4a: 6bfb ldr r3, [r7, #60] ; 0x3c + 803af4c: fbb3 f3f2 udiv r3, r3, r2 + 803af50: 005a lsls r2, r3, #1 + 803af52: 697b ldr r3, [r7, #20] + 803af54: 685b ldr r3, [r3, #4] + 803af56: 085b lsrs r3, r3, #1 + 803af58: 441a add r2, r3 + 803af5a: 697b ldr r3, [r7, #20] + 803af5c: 685b ldr r3, [r3, #4] + 803af5e: fbb2 f3f3 udiv r3, r2, r3 + 803af62: 63bb str r3, [r7, #56] ; 0x38 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 803af24: 6bbb ldr r3, [r7, #56] ; 0x38 - 803af26: 2b0f cmp r3, #15 - 803af28: d916 bls.n 803af58 - 803af2a: 6bbb ldr r3, [r7, #56] ; 0x38 - 803af2c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803af30: d212 bcs.n 803af58 + 803af64: 6bbb ldr r3, [r7, #56] ; 0x38 + 803af66: 2b0f cmp r3, #15 + 803af68: d916 bls.n 803af98 + 803af6a: 6bbb ldr r3, [r7, #56] ; 0x38 + 803af6c: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803af70: d212 bcs.n 803af98 { brrtemp = (uint16_t)(usartdiv & 0xFFF0U); - 803af32: 6bbb ldr r3, [r7, #56] ; 0x38 - 803af34: b29b uxth r3, r3 - 803af36: f023 030f bic.w r3, r3, #15 - 803af3a: 86fb strh r3, [r7, #54] ; 0x36 + 803af72: 6bbb ldr r3, [r7, #56] ; 0x38 + 803af74: b29b uxth r3, r3 + 803af76: f023 030f bic.w r3, r3, #15 + 803af7a: 86fb strh r3, [r7, #54] ; 0x36 brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U); - 803af3c: 6bbb ldr r3, [r7, #56] ; 0x38 - 803af3e: 085b lsrs r3, r3, #1 - 803af40: b29b uxth r3, r3 - 803af42: f003 0307 and.w r3, r3, #7 - 803af46: b29a uxth r2, r3 - 803af48: 8efb ldrh r3, [r7, #54] ; 0x36 - 803af4a: 4313 orrs r3, r2 - 803af4c: 86fb strh r3, [r7, #54] ; 0x36 + 803af7c: 6bbb ldr r3, [r7, #56] ; 0x38 + 803af7e: 085b lsrs r3, r3, #1 + 803af80: b29b uxth r3, r3 + 803af82: f003 0307 and.w r3, r3, #7 + 803af86: b29a uxth r2, r3 + 803af88: 8efb ldrh r3, [r7, #54] ; 0x36 + 803af8a: 4313 orrs r3, r2 + 803af8c: 86fb strh r3, [r7, #54] ; 0x36 huart->Instance->BRR = brrtemp; - 803af4e: 697b ldr r3, [r7, #20] - 803af50: 681b ldr r3, [r3, #0] - 803af52: 8efa ldrh r2, [r7, #54] ; 0x36 - 803af54: 60da str r2, [r3, #12] - 803af56: e0b9 b.n 803b0cc + 803af8e: 697b ldr r3, [r7, #20] + 803af90: 681b ldr r3, [r3, #0] + 803af92: 8efa ldrh r2, [r7, #54] ; 0x36 + 803af94: 60da str r2, [r3, #12] + 803af96: e0b9 b.n 803b10c } else { ret = HAL_ERROR; - 803af58: 2301 movs r3, #1 - 803af5a: f887 3042 strb.w r3, [r7, #66] ; 0x42 - 803af5e: e0b5 b.n 803b0cc - 803af60: 03d09000 .word 0x03d09000 - 803af64: 003d0900 .word 0x003d0900 - 803af68: 0804d384 .word 0x0804d384 - 803af6c: 58024400 .word 0x58024400 + 803af98: 2301 movs r3, #1 + 803af9a: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803af9e: e0b5 b.n 803b10c + 803afa0: 03d09000 .word 0x03d09000 + 803afa4: 003d0900 .word 0x003d0900 + 803afa8: 0804d3c4 .word 0x0804d3c4 + 803afac: 58024400 .word 0x58024400 } } } else { switch (clocksource) - 803af70: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 - 803af74: 2b20 cmp r3, #32 - 803af76: dc49 bgt.n 803b00c - 803af78: 2b00 cmp r3, #0 - 803af7a: db7c blt.n 803b076 - 803af7c: 2b20 cmp r3, #32 - 803af7e: d87a bhi.n 803b076 - 803af80: a201 add r2, pc, #4 ; (adr r2, 803af88 ) - 803af82: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803af86: bf00 nop - 803af88: 0803b013 .word 0x0803b013 - 803af8c: 0803b01b .word 0x0803b01b - 803af90: 0803b077 .word 0x0803b077 - 803af94: 0803b077 .word 0x0803b077 - 803af98: 0803b023 .word 0x0803b023 - 803af9c: 0803b077 .word 0x0803b077 - 803afa0: 0803b077 .word 0x0803b077 - 803afa4: 0803b077 .word 0x0803b077 - 803afa8: 0803b033 .word 0x0803b033 - 803afac: 0803b077 .word 0x0803b077 - 803afb0: 0803b077 .word 0x0803b077 - 803afb4: 0803b077 .word 0x0803b077 - 803afb8: 0803b077 .word 0x0803b077 - 803afbc: 0803b077 .word 0x0803b077 - 803afc0: 0803b077 .word 0x0803b077 - 803afc4: 0803b077 .word 0x0803b077 - 803afc8: 0803b043 .word 0x0803b043 - 803afcc: 0803b077 .word 0x0803b077 - 803afd0: 0803b077 .word 0x0803b077 - 803afd4: 0803b077 .word 0x0803b077 - 803afd8: 0803b077 .word 0x0803b077 - 803afdc: 0803b077 .word 0x0803b077 - 803afe0: 0803b077 .word 0x0803b077 - 803afe4: 0803b077 .word 0x0803b077 - 803afe8: 0803b077 .word 0x0803b077 - 803afec: 0803b077 .word 0x0803b077 - 803aff0: 0803b077 .word 0x0803b077 - 803aff4: 0803b077 .word 0x0803b077 - 803aff8: 0803b077 .word 0x0803b077 - 803affc: 0803b077 .word 0x0803b077 - 803b000: 0803b077 .word 0x0803b077 - 803b004: 0803b077 .word 0x0803b077 - 803b008: 0803b069 .word 0x0803b069 - 803b00c: 2b40 cmp r3, #64 ; 0x40 - 803b00e: d02e beq.n 803b06e - 803b010: e031 b.n 803b076 + 803afb0: f897 3043 ldrb.w r3, [r7, #67] ; 0x43 + 803afb4: 2b20 cmp r3, #32 + 803afb6: dc49 bgt.n 803b04c + 803afb8: 2b00 cmp r3, #0 + 803afba: db7c blt.n 803b0b6 + 803afbc: 2b20 cmp r3, #32 + 803afbe: d87a bhi.n 803b0b6 + 803afc0: a201 add r2, pc, #4 ; (adr r2, 803afc8 ) + 803afc2: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803afc6: bf00 nop + 803afc8: 0803b053 .word 0x0803b053 + 803afcc: 0803b05b .word 0x0803b05b + 803afd0: 0803b0b7 .word 0x0803b0b7 + 803afd4: 0803b0b7 .word 0x0803b0b7 + 803afd8: 0803b063 .word 0x0803b063 + 803afdc: 0803b0b7 .word 0x0803b0b7 + 803afe0: 0803b0b7 .word 0x0803b0b7 + 803afe4: 0803b0b7 .word 0x0803b0b7 + 803afe8: 0803b073 .word 0x0803b073 + 803afec: 0803b0b7 .word 0x0803b0b7 + 803aff0: 0803b0b7 .word 0x0803b0b7 + 803aff4: 0803b0b7 .word 0x0803b0b7 + 803aff8: 0803b0b7 .word 0x0803b0b7 + 803affc: 0803b0b7 .word 0x0803b0b7 + 803b000: 0803b0b7 .word 0x0803b0b7 + 803b004: 0803b0b7 .word 0x0803b0b7 + 803b008: 0803b083 .word 0x0803b083 + 803b00c: 0803b0b7 .word 0x0803b0b7 + 803b010: 0803b0b7 .word 0x0803b0b7 + 803b014: 0803b0b7 .word 0x0803b0b7 + 803b018: 0803b0b7 .word 0x0803b0b7 + 803b01c: 0803b0b7 .word 0x0803b0b7 + 803b020: 0803b0b7 .word 0x0803b0b7 + 803b024: 0803b0b7 .word 0x0803b0b7 + 803b028: 0803b0b7 .word 0x0803b0b7 + 803b02c: 0803b0b7 .word 0x0803b0b7 + 803b030: 0803b0b7 .word 0x0803b0b7 + 803b034: 0803b0b7 .word 0x0803b0b7 + 803b038: 0803b0b7 .word 0x0803b0b7 + 803b03c: 0803b0b7 .word 0x0803b0b7 + 803b040: 0803b0b7 .word 0x0803b0b7 + 803b044: 0803b0b7 .word 0x0803b0b7 + 803b048: 0803b0a9 .word 0x0803b0a9 + 803b04c: 2b40 cmp r3, #64 ; 0x40 + 803b04e: d02e beq.n 803b0ae + 803b050: e031 b.n 803b0b6 { case UART_CLOCKSOURCE_D2PCLK1: pclk = HAL_RCC_GetPCLK1Freq(); - 803b012: f7fb f93d bl 8036290 - 803b016: 63f8 str r0, [r7, #60] ; 0x3c + 803b052: f7fb f93d bl 80362d0 + 803b056: 63f8 str r0, [r7, #60] ; 0x3c break; - 803b018: e033 b.n 803b082 + 803b058: e033 b.n 803b0c2 case UART_CLOCKSOURCE_D2PCLK2: pclk = HAL_RCC_GetPCLK2Freq(); - 803b01a: f7fb f94f bl 80362bc - 803b01e: 63f8 str r0, [r7, #60] ; 0x3c + 803b05a: f7fb f94f bl 80362fc + 803b05e: 63f8 str r0, [r7, #60] ; 0x3c break; - 803b020: e02f b.n 803b082 + 803b060: e02f b.n 803b0c2 case UART_CLOCKSOURCE_PLL2: HAL_RCCEx_GetPLL2ClockFreq(&pll2_clocks); - 803b022: f107 0324 add.w r3, r7, #36 ; 0x24 - 803b026: 4618 mov r0, r3 - 803b028: f7fc fda8 bl 8037b7c + 803b062: f107 0324 add.w r3, r7, #36 ; 0x24 + 803b066: 4618 mov r0, r3 + 803b068: f7fc fda8 bl 8037bbc pclk = pll2_clocks.PLL2_Q_Frequency; - 803b02c: 6abb ldr r3, [r7, #40] ; 0x28 - 803b02e: 63fb str r3, [r7, #60] ; 0x3c + 803b06c: 6abb ldr r3, [r7, #40] ; 0x28 + 803b06e: 63fb str r3, [r7, #60] ; 0x3c break; - 803b030: e027 b.n 803b082 + 803b070: e027 b.n 803b0c2 case UART_CLOCKSOURCE_PLL3: HAL_RCCEx_GetPLL3ClockFreq(&pll3_clocks); - 803b032: f107 0318 add.w r3, r7, #24 - 803b036: 4618 mov r0, r3 - 803b038: f7fc fef4 bl 8037e24 + 803b072: f107 0318 add.w r3, r7, #24 + 803b076: 4618 mov r0, r3 + 803b078: f7fc fef4 bl 8037e64 pclk = pll3_clocks.PLL3_Q_Frequency; - 803b03c: 69fb ldr r3, [r7, #28] - 803b03e: 63fb str r3, [r7, #60] ; 0x3c + 803b07c: 69fb ldr r3, [r7, #28] + 803b07e: 63fb str r3, [r7, #60] ; 0x3c break; - 803b040: e01f b.n 803b082 + 803b080: e01f b.n 803b0c2 case UART_CLOCKSOURCE_HSI: if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIDIV) != 0U) - 803b042: 4b2d ldr r3, [pc, #180] ; (803b0f8 ) - 803b044: 681b ldr r3, [r3, #0] - 803b046: f003 0320 and.w r3, r3, #32 - 803b04a: 2b00 cmp r3, #0 - 803b04c: d009 beq.n 803b062 + 803b082: 4b2d ldr r3, [pc, #180] ; (803b138 ) + 803b084: 681b ldr r3, [r3, #0] + 803b086: f003 0320 and.w r3, r3, #32 + 803b08a: 2b00 cmp r3, #0 + 803b08c: d009 beq.n 803b0a2 { pclk = (uint32_t)(HSI_VALUE >> (__HAL_RCC_GET_HSI_DIVIDER() >> 3U)); - 803b04e: 4b2a ldr r3, [pc, #168] ; (803b0f8 ) - 803b050: 681b ldr r3, [r3, #0] - 803b052: 08db lsrs r3, r3, #3 - 803b054: f003 0303 and.w r3, r3, #3 - 803b058: 4a28 ldr r2, [pc, #160] ; (803b0fc ) - 803b05a: fa22 f303 lsr.w r3, r2, r3 - 803b05e: 63fb str r3, [r7, #60] ; 0x3c + 803b08e: 4b2a ldr r3, [pc, #168] ; (803b138 ) + 803b090: 681b ldr r3, [r3, #0] + 803b092: 08db lsrs r3, r3, #3 + 803b094: f003 0303 and.w r3, r3, #3 + 803b098: 4a28 ldr r2, [pc, #160] ; (803b13c ) + 803b09a: fa22 f303 lsr.w r3, r2, r3 + 803b09e: 63fb str r3, [r7, #60] ; 0x3c } else { pclk = (uint32_t) HSI_VALUE; } break; - 803b060: e00f b.n 803b082 + 803b0a0: e00f b.n 803b0c2 pclk = (uint32_t) HSI_VALUE; - 803b062: 4b26 ldr r3, [pc, #152] ; (803b0fc ) - 803b064: 63fb str r3, [r7, #60] ; 0x3c + 803b0a2: 4b26 ldr r3, [pc, #152] ; (803b13c ) + 803b0a4: 63fb str r3, [r7, #60] ; 0x3c break; - 803b066: e00c b.n 803b082 + 803b0a6: e00c b.n 803b0c2 case UART_CLOCKSOURCE_CSI: pclk = (uint32_t) CSI_VALUE; - 803b068: 4b25 ldr r3, [pc, #148] ; (803b100 ) - 803b06a: 63fb str r3, [r7, #60] ; 0x3c + 803b0a8: 4b25 ldr r3, [pc, #148] ; (803b140 ) + 803b0aa: 63fb str r3, [r7, #60] ; 0x3c break; - 803b06c: e009 b.n 803b082 + 803b0ac: e009 b.n 803b0c2 case UART_CLOCKSOURCE_LSE: pclk = (uint32_t) LSE_VALUE; - 803b06e: f44f 4300 mov.w r3, #32768 ; 0x8000 - 803b072: 63fb str r3, [r7, #60] ; 0x3c + 803b0ae: f44f 4300 mov.w r3, #32768 ; 0x8000 + 803b0b2: 63fb str r3, [r7, #60] ; 0x3c break; - 803b074: e005 b.n 803b082 + 803b0b4: e005 b.n 803b0c2 default: pclk = 0U; - 803b076: 2300 movs r3, #0 - 803b078: 63fb str r3, [r7, #60] ; 0x3c + 803b0b6: 2300 movs r3, #0 + 803b0b8: 63fb str r3, [r7, #60] ; 0x3c ret = HAL_ERROR; - 803b07a: 2301 movs r3, #1 - 803b07c: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803b0ba: 2301 movs r3, #1 + 803b0bc: f887 3042 strb.w r3, [r7, #66] ; 0x42 break; - 803b080: bf00 nop + 803b0c0: bf00 nop } if (pclk != 0U) - 803b082: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b084: 2b00 cmp r3, #0 - 803b086: d021 beq.n 803b0cc + 803b0c2: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b0c4: 2b00 cmp r3, #0 + 803b0c6: d021 beq.n 803b10c { /* USARTDIV must be greater than or equal to 0d16 */ usartdiv = (uint32_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate, huart->Init.ClockPrescaler)); - 803b088: 697b ldr r3, [r7, #20] - 803b08a: 6a5b ldr r3, [r3, #36] ; 0x24 - 803b08c: 4a1d ldr r2, [pc, #116] ; (803b104 ) - 803b08e: f832 3013 ldrh.w r3, [r2, r3, lsl #1] - 803b092: 461a mov r2, r3 - 803b094: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b096: fbb3 f2f2 udiv r2, r3, r2 - 803b09a: 697b ldr r3, [r7, #20] - 803b09c: 685b ldr r3, [r3, #4] - 803b09e: 085b lsrs r3, r3, #1 - 803b0a0: 441a add r2, r3 - 803b0a2: 697b ldr r3, [r7, #20] - 803b0a4: 685b ldr r3, [r3, #4] - 803b0a6: fbb2 f3f3 udiv r3, r2, r3 - 803b0aa: 63bb str r3, [r7, #56] ; 0x38 + 803b0c8: 697b ldr r3, [r7, #20] + 803b0ca: 6a5b ldr r3, [r3, #36] ; 0x24 + 803b0cc: 4a1d ldr r2, [pc, #116] ; (803b144 ) + 803b0ce: f832 3013 ldrh.w r3, [r2, r3, lsl #1] + 803b0d2: 461a mov r2, r3 + 803b0d4: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b0d6: fbb3 f2f2 udiv r2, r3, r2 + 803b0da: 697b ldr r3, [r7, #20] + 803b0dc: 685b ldr r3, [r3, #4] + 803b0de: 085b lsrs r3, r3, #1 + 803b0e0: 441a add r2, r3 + 803b0e2: 697b ldr r3, [r7, #20] + 803b0e4: 685b ldr r3, [r3, #4] + 803b0e6: fbb2 f3f3 udiv r3, r2, r3 + 803b0ea: 63bb str r3, [r7, #56] ; 0x38 if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX)) - 803b0ac: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b0ae: 2b0f cmp r3, #15 - 803b0b0: d909 bls.n 803b0c6 - 803b0b2: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b0b4: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803b0b8: d205 bcs.n 803b0c6 + 803b0ec: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b0ee: 2b0f cmp r3, #15 + 803b0f0: d909 bls.n 803b106 + 803b0f2: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b0f4: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803b0f8: d205 bcs.n 803b106 { huart->Instance->BRR = (uint16_t)usartdiv; - 803b0ba: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b0bc: b29a uxth r2, r3 - 803b0be: 697b ldr r3, [r7, #20] - 803b0c0: 681b ldr r3, [r3, #0] - 803b0c2: 60da str r2, [r3, #12] - 803b0c4: e002 b.n 803b0cc + 803b0fa: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b0fc: b29a uxth r2, r3 + 803b0fe: 697b ldr r3, [r7, #20] + 803b100: 681b ldr r3, [r3, #0] + 803b102: 60da str r2, [r3, #12] + 803b104: e002 b.n 803b10c } else { ret = HAL_ERROR; - 803b0c6: 2301 movs r3, #1 - 803b0c8: f887 3042 strb.w r3, [r7, #66] ; 0x42 + 803b106: 2301 movs r3, #1 + 803b108: f887 3042 strb.w r3, [r7, #66] ; 0x42 } } } /* Initialize the number of data to process during RX/TX ISR execution */ huart->NbTxDataToProcess = 1; - 803b0cc: 697b ldr r3, [r7, #20] - 803b0ce: 2201 movs r2, #1 - 803b0d0: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 803b10c: 697b ldr r3, [r7, #20] + 803b10e: 2201 movs r2, #1 + 803b110: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = 1; - 803b0d4: 697b ldr r3, [r7, #20] - 803b0d6: 2201 movs r2, #1 - 803b0d8: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 803b114: 697b ldr r3, [r7, #20] + 803b116: 2201 movs r2, #1 + 803b118: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 /* Clear ISR function pointers */ huart->RxISR = NULL; - 803b0dc: 697b ldr r3, [r7, #20] - 803b0de: 2200 movs r2, #0 - 803b0e0: 671a str r2, [r3, #112] ; 0x70 + 803b11c: 697b ldr r3, [r7, #20] + 803b11e: 2200 movs r2, #0 + 803b120: 671a str r2, [r3, #112] ; 0x70 huart->TxISR = NULL; - 803b0e2: 697b ldr r3, [r7, #20] - 803b0e4: 2200 movs r2, #0 - 803b0e6: 675a str r2, [r3, #116] ; 0x74 + 803b122: 697b ldr r3, [r7, #20] + 803b124: 2200 movs r2, #0 + 803b126: 675a str r2, [r3, #116] ; 0x74 return ret; - 803b0e8: f897 3042 ldrb.w r3, [r7, #66] ; 0x42 -} - 803b0ec: 4618 mov r0, r3 - 803b0ee: 3748 adds r7, #72 ; 0x48 - 803b0f0: 46bd mov sp, r7 - 803b0f2: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} - 803b0f6: bf00 nop - 803b0f8: 58024400 .word 0x58024400 - 803b0fc: 03d09000 .word 0x03d09000 - 803b100: 003d0900 .word 0x003d0900 - 803b104: 0804d384 .word 0x0804d384 - -0803b108 : + 803b128: f897 3042 ldrb.w r3, [r7, #66] ; 0x42 +} + 803b12c: 4618 mov r0, r3 + 803b12e: 3748 adds r7, #72 ; 0x48 + 803b130: 46bd mov sp, r7 + 803b132: e8bd 8fb0 ldmia.w sp!, {r4, r5, r7, r8, r9, sl, fp, pc} + 803b136: bf00 nop + 803b138: 58024400 .word 0x58024400 + 803b13c: 03d09000 .word 0x03d09000 + 803b140: 003d0900 .word 0x003d0900 + 803b144: 0804d3c4 .word 0x0804d3c4 + +0803b148 : * @brief Configure the UART peripheral advanced features. * @param huart UART handle. * @retval None */ void UART_AdvFeatureConfig(UART_HandleTypeDef *huart) { - 803b108: b480 push {r7} - 803b10a: b083 sub sp, #12 - 803b10c: af00 add r7, sp, #0 - 803b10e: 6078 str r0, [r7, #4] + 803b148: b480 push {r7} + 803b14a: b083 sub sp, #12 + 803b14c: af00 add r7, sp, #0 + 803b14e: 6078 str r0, [r7, #4] /* Check whether the set of advanced features to configure is properly set */ assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit)); /* if required, configure TX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT)) - 803b110: 687b ldr r3, [r7, #4] - 803b112: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b114: f003 0301 and.w r3, r3, #1 - 803b118: 2b00 cmp r3, #0 - 803b11a: d00a beq.n 803b132 + 803b150: 687b ldr r3, [r7, #4] + 803b152: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b154: f003 0301 and.w r3, r3, #1 + 803b158: 2b00 cmp r3, #0 + 803b15a: d00a beq.n 803b172 { assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert); - 803b11c: 687b ldr r3, [r7, #4] - 803b11e: 681b ldr r3, [r3, #0] - 803b120: 685b ldr r3, [r3, #4] - 803b122: f423 3100 bic.w r1, r3, #131072 ; 0x20000 - 803b126: 687b ldr r3, [r7, #4] - 803b128: 6ada ldr r2, [r3, #44] ; 0x2c - 803b12a: 687b ldr r3, [r7, #4] - 803b12c: 681b ldr r3, [r3, #0] - 803b12e: 430a orrs r2, r1 - 803b130: 605a str r2, [r3, #4] + 803b15c: 687b ldr r3, [r7, #4] + 803b15e: 681b ldr r3, [r3, #0] + 803b160: 685b ldr r3, [r3, #4] + 803b162: f423 3100 bic.w r1, r3, #131072 ; 0x20000 + 803b166: 687b ldr r3, [r7, #4] + 803b168: 6ada ldr r2, [r3, #44] ; 0x2c + 803b16a: 687b ldr r3, [r7, #4] + 803b16c: 681b ldr r3, [r3, #0] + 803b16e: 430a orrs r2, r1 + 803b170: 605a str r2, [r3, #4] } /* if required, configure RX pin active level inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT)) - 803b132: 687b ldr r3, [r7, #4] - 803b134: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b136: f003 0302 and.w r3, r3, #2 - 803b13a: 2b00 cmp r3, #0 - 803b13c: d00a beq.n 803b154 + 803b172: 687b ldr r3, [r7, #4] + 803b174: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b176: f003 0302 and.w r3, r3, #2 + 803b17a: 2b00 cmp r3, #0 + 803b17c: d00a beq.n 803b194 { assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert); - 803b13e: 687b ldr r3, [r7, #4] - 803b140: 681b ldr r3, [r3, #0] - 803b142: 685b ldr r3, [r3, #4] - 803b144: f423 3180 bic.w r1, r3, #65536 ; 0x10000 - 803b148: 687b ldr r3, [r7, #4] - 803b14a: 6b1a ldr r2, [r3, #48] ; 0x30 - 803b14c: 687b ldr r3, [r7, #4] - 803b14e: 681b ldr r3, [r3, #0] - 803b150: 430a orrs r2, r1 - 803b152: 605a str r2, [r3, #4] + 803b17e: 687b ldr r3, [r7, #4] + 803b180: 681b ldr r3, [r3, #0] + 803b182: 685b ldr r3, [r3, #4] + 803b184: f423 3180 bic.w r1, r3, #65536 ; 0x10000 + 803b188: 687b ldr r3, [r7, #4] + 803b18a: 6b1a ldr r2, [r3, #48] ; 0x30 + 803b18c: 687b ldr r3, [r7, #4] + 803b18e: 681b ldr r3, [r3, #0] + 803b190: 430a orrs r2, r1 + 803b192: 605a str r2, [r3, #4] } /* if required, configure data inversion */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT)) - 803b154: 687b ldr r3, [r7, #4] - 803b156: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b158: f003 0304 and.w r3, r3, #4 - 803b15c: 2b00 cmp r3, #0 - 803b15e: d00a beq.n 803b176 + 803b194: 687b ldr r3, [r7, #4] + 803b196: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b198: f003 0304 and.w r3, r3, #4 + 803b19c: 2b00 cmp r3, #0 + 803b19e: d00a beq.n 803b1b6 { assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert)); MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert); - 803b160: 687b ldr r3, [r7, #4] - 803b162: 681b ldr r3, [r3, #0] - 803b164: 685b ldr r3, [r3, #4] - 803b166: f423 2180 bic.w r1, r3, #262144 ; 0x40000 - 803b16a: 687b ldr r3, [r7, #4] - 803b16c: 6b5a ldr r2, [r3, #52] ; 0x34 - 803b16e: 687b ldr r3, [r7, #4] - 803b170: 681b ldr r3, [r3, #0] - 803b172: 430a orrs r2, r1 - 803b174: 605a str r2, [r3, #4] + 803b1a0: 687b ldr r3, [r7, #4] + 803b1a2: 681b ldr r3, [r3, #0] + 803b1a4: 685b ldr r3, [r3, #4] + 803b1a6: f423 2180 bic.w r1, r3, #262144 ; 0x40000 + 803b1aa: 687b ldr r3, [r7, #4] + 803b1ac: 6b5a ldr r2, [r3, #52] ; 0x34 + 803b1ae: 687b ldr r3, [r7, #4] + 803b1b0: 681b ldr r3, [r3, #0] + 803b1b2: 430a orrs r2, r1 + 803b1b4: 605a str r2, [r3, #4] } /* if required, configure RX/TX pins swap */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT)) - 803b176: 687b ldr r3, [r7, #4] - 803b178: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b17a: f003 0308 and.w r3, r3, #8 - 803b17e: 2b00 cmp r3, #0 - 803b180: d00a beq.n 803b198 + 803b1b6: 687b ldr r3, [r7, #4] + 803b1b8: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b1ba: f003 0308 and.w r3, r3, #8 + 803b1be: 2b00 cmp r3, #0 + 803b1c0: d00a beq.n 803b1d8 { assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap)); MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap); - 803b182: 687b ldr r3, [r7, #4] - 803b184: 681b ldr r3, [r3, #0] - 803b186: 685b ldr r3, [r3, #4] - 803b188: f423 4100 bic.w r1, r3, #32768 ; 0x8000 - 803b18c: 687b ldr r3, [r7, #4] - 803b18e: 6b9a ldr r2, [r3, #56] ; 0x38 - 803b190: 687b ldr r3, [r7, #4] - 803b192: 681b ldr r3, [r3, #0] - 803b194: 430a orrs r2, r1 - 803b196: 605a str r2, [r3, #4] + 803b1c2: 687b ldr r3, [r7, #4] + 803b1c4: 681b ldr r3, [r3, #0] + 803b1c6: 685b ldr r3, [r3, #4] + 803b1c8: f423 4100 bic.w r1, r3, #32768 ; 0x8000 + 803b1cc: 687b ldr r3, [r7, #4] + 803b1ce: 6b9a ldr r2, [r3, #56] ; 0x38 + 803b1d0: 687b ldr r3, [r7, #4] + 803b1d2: 681b ldr r3, [r3, #0] + 803b1d4: 430a orrs r2, r1 + 803b1d6: 605a str r2, [r3, #4] } /* if required, configure RX overrun detection disabling */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT)) - 803b198: 687b ldr r3, [r7, #4] - 803b19a: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b19c: f003 0310 and.w r3, r3, #16 - 803b1a0: 2b00 cmp r3, #0 - 803b1a2: d00a beq.n 803b1ba + 803b1d8: 687b ldr r3, [r7, #4] + 803b1da: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b1dc: f003 0310 and.w r3, r3, #16 + 803b1e0: 2b00 cmp r3, #0 + 803b1e2: d00a beq.n 803b1fa { assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable)); MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable); - 803b1a4: 687b ldr r3, [r7, #4] - 803b1a6: 681b ldr r3, [r3, #0] - 803b1a8: 689b ldr r3, [r3, #8] - 803b1aa: f423 5180 bic.w r1, r3, #4096 ; 0x1000 - 803b1ae: 687b ldr r3, [r7, #4] - 803b1b0: 6bda ldr r2, [r3, #60] ; 0x3c - 803b1b2: 687b ldr r3, [r7, #4] - 803b1b4: 681b ldr r3, [r3, #0] - 803b1b6: 430a orrs r2, r1 - 803b1b8: 609a str r2, [r3, #8] + 803b1e4: 687b ldr r3, [r7, #4] + 803b1e6: 681b ldr r3, [r3, #0] + 803b1e8: 689b ldr r3, [r3, #8] + 803b1ea: f423 5180 bic.w r1, r3, #4096 ; 0x1000 + 803b1ee: 687b ldr r3, [r7, #4] + 803b1f0: 6bda ldr r2, [r3, #60] ; 0x3c + 803b1f2: 687b ldr r3, [r7, #4] + 803b1f4: 681b ldr r3, [r3, #0] + 803b1f6: 430a orrs r2, r1 + 803b1f8: 609a str r2, [r3, #8] } /* if required, configure DMA disabling on reception error */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT)) - 803b1ba: 687b ldr r3, [r7, #4] - 803b1bc: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b1be: f003 0320 and.w r3, r3, #32 - 803b1c2: 2b00 cmp r3, #0 - 803b1c4: d00a beq.n 803b1dc + 803b1fa: 687b ldr r3, [r7, #4] + 803b1fc: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b1fe: f003 0320 and.w r3, r3, #32 + 803b202: 2b00 cmp r3, #0 + 803b204: d00a beq.n 803b21c { assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError)); MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError); - 803b1c6: 687b ldr r3, [r7, #4] - 803b1c8: 681b ldr r3, [r3, #0] - 803b1ca: 689b ldr r3, [r3, #8] - 803b1cc: f423 5100 bic.w r1, r3, #8192 ; 0x2000 - 803b1d0: 687b ldr r3, [r7, #4] - 803b1d2: 6c1a ldr r2, [r3, #64] ; 0x40 - 803b1d4: 687b ldr r3, [r7, #4] - 803b1d6: 681b ldr r3, [r3, #0] - 803b1d8: 430a orrs r2, r1 - 803b1da: 609a str r2, [r3, #8] + 803b206: 687b ldr r3, [r7, #4] + 803b208: 681b ldr r3, [r3, #0] + 803b20a: 689b ldr r3, [r3, #8] + 803b20c: f423 5100 bic.w r1, r3, #8192 ; 0x2000 + 803b210: 687b ldr r3, [r7, #4] + 803b212: 6c1a ldr r2, [r3, #64] ; 0x40 + 803b214: 687b ldr r3, [r7, #4] + 803b216: 681b ldr r3, [r3, #0] + 803b218: 430a orrs r2, r1 + 803b21a: 609a str r2, [r3, #8] } /* if required, configure auto Baud rate detection scheme */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT)) - 803b1dc: 687b ldr r3, [r7, #4] - 803b1de: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b1e0: f003 0340 and.w r3, r3, #64 ; 0x40 - 803b1e4: 2b00 cmp r3, #0 - 803b1e6: d01a beq.n 803b21e + 803b21c: 687b ldr r3, [r7, #4] + 803b21e: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b220: f003 0340 and.w r3, r3, #64 ; 0x40 + 803b224: 2b00 cmp r3, #0 + 803b226: d01a beq.n 803b25e { assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance)); assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable); - 803b1e8: 687b ldr r3, [r7, #4] - 803b1ea: 681b ldr r3, [r3, #0] - 803b1ec: 685b ldr r3, [r3, #4] - 803b1ee: f423 1180 bic.w r1, r3, #1048576 ; 0x100000 - 803b1f2: 687b ldr r3, [r7, #4] - 803b1f4: 6c5a ldr r2, [r3, #68] ; 0x44 - 803b1f6: 687b ldr r3, [r7, #4] - 803b1f8: 681b ldr r3, [r3, #0] - 803b1fa: 430a orrs r2, r1 - 803b1fc: 605a str r2, [r3, #4] + 803b228: 687b ldr r3, [r7, #4] + 803b22a: 681b ldr r3, [r3, #0] + 803b22c: 685b ldr r3, [r3, #4] + 803b22e: f423 1180 bic.w r1, r3, #1048576 ; 0x100000 + 803b232: 687b ldr r3, [r7, #4] + 803b234: 6c5a ldr r2, [r3, #68] ; 0x44 + 803b236: 687b ldr r3, [r7, #4] + 803b238: 681b ldr r3, [r3, #0] + 803b23a: 430a orrs r2, r1 + 803b23c: 605a str r2, [r3, #4] /* set auto Baudrate detection parameters if detection is enabled */ if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE) - 803b1fe: 687b ldr r3, [r7, #4] - 803b200: 6c5b ldr r3, [r3, #68] ; 0x44 - 803b202: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 - 803b206: d10a bne.n 803b21e + 803b23e: 687b ldr r3, [r7, #4] + 803b240: 6c5b ldr r3, [r3, #68] ; 0x44 + 803b242: f5b3 1f80 cmp.w r3, #1048576 ; 0x100000 + 803b246: d10a bne.n 803b25e { assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode)); MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode); - 803b208: 687b ldr r3, [r7, #4] - 803b20a: 681b ldr r3, [r3, #0] - 803b20c: 685b ldr r3, [r3, #4] - 803b20e: f423 01c0 bic.w r1, r3, #6291456 ; 0x600000 - 803b212: 687b ldr r3, [r7, #4] - 803b214: 6c9a ldr r2, [r3, #72] ; 0x48 - 803b216: 687b ldr r3, [r7, #4] - 803b218: 681b ldr r3, [r3, #0] - 803b21a: 430a orrs r2, r1 - 803b21c: 605a str r2, [r3, #4] + 803b248: 687b ldr r3, [r7, #4] + 803b24a: 681b ldr r3, [r3, #0] + 803b24c: 685b ldr r3, [r3, #4] + 803b24e: f423 01c0 bic.w r1, r3, #6291456 ; 0x600000 + 803b252: 687b ldr r3, [r7, #4] + 803b254: 6c9a ldr r2, [r3, #72] ; 0x48 + 803b256: 687b ldr r3, [r7, #4] + 803b258: 681b ldr r3, [r3, #0] + 803b25a: 430a orrs r2, r1 + 803b25c: 605a str r2, [r3, #4] } } /* if required, configure MSB first on communication line */ if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT)) - 803b21e: 687b ldr r3, [r7, #4] - 803b220: 6a9b ldr r3, [r3, #40] ; 0x28 - 803b222: f003 0380 and.w r3, r3, #128 ; 0x80 - 803b226: 2b00 cmp r3, #0 - 803b228: d00a beq.n 803b240 + 803b25e: 687b ldr r3, [r7, #4] + 803b260: 6a9b ldr r3, [r3, #40] ; 0x28 + 803b262: f003 0380 and.w r3, r3, #128 ; 0x80 + 803b266: 2b00 cmp r3, #0 + 803b268: d00a beq.n 803b280 { assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst)); MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst); - 803b22a: 687b ldr r3, [r7, #4] - 803b22c: 681b ldr r3, [r3, #0] - 803b22e: 685b ldr r3, [r3, #4] - 803b230: f423 2100 bic.w r1, r3, #524288 ; 0x80000 - 803b234: 687b ldr r3, [r7, #4] - 803b236: 6cda ldr r2, [r3, #76] ; 0x4c - 803b238: 687b ldr r3, [r7, #4] - 803b23a: 681b ldr r3, [r3, #0] - 803b23c: 430a orrs r2, r1 - 803b23e: 605a str r2, [r3, #4] - } -} - 803b240: bf00 nop - 803b242: 370c adds r7, #12 - 803b244: 46bd mov sp, r7 - 803b246: f85d 7b04 ldr.w r7, [sp], #4 - 803b24a: 4770 bx lr - -0803b24c : + 803b26a: 687b ldr r3, [r7, #4] + 803b26c: 681b ldr r3, [r3, #0] + 803b26e: 685b ldr r3, [r3, #4] + 803b270: f423 2100 bic.w r1, r3, #524288 ; 0x80000 + 803b274: 687b ldr r3, [r7, #4] + 803b276: 6cda ldr r2, [r3, #76] ; 0x4c + 803b278: 687b ldr r3, [r7, #4] + 803b27a: 681b ldr r3, [r3, #0] + 803b27c: 430a orrs r2, r1 + 803b27e: 605a str r2, [r3, #4] + } +} + 803b280: bf00 nop + 803b282: 370c adds r7, #12 + 803b284: 46bd mov sp, r7 + 803b286: f85d 7b04 ldr.w r7, [sp], #4 + 803b28a: 4770 bx lr + +0803b28c : * @brief Check the UART Idle State. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart) { - 803b24c: b580 push {r7, lr} - 803b24e: b086 sub sp, #24 - 803b250: af02 add r7, sp, #8 - 803b252: 6078 str r0, [r7, #4] + 803b28c: b580 push {r7, lr} + 803b28e: b086 sub sp, #24 + 803b290: af02 add r7, sp, #8 + 803b292: 6078 str r0, [r7, #4] uint32_t tickstart; /* Initialize the UART ErrorCode */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 803b254: 687b ldr r3, [r7, #4] - 803b256: 2200 movs r2, #0 - 803b258: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803b294: 687b ldr r3, [r7, #4] + 803b296: 2200 movs r2, #0 + 803b298: f8c3 208c str.w r2, [r3, #140] ; 0x8c /* Init tickstart for timeout management */ tickstart = HAL_GetTick(); - 803b25c: f7f1 fe9a bl 802cf94 - 803b260: 60f8 str r0, [r7, #12] + 803b29c: f7f1 fe9a bl 802cfd4 + 803b2a0: 60f8 str r0, [r7, #12] /* Check if the Transmitter is enabled */ if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE) - 803b262: 687b ldr r3, [r7, #4] - 803b264: 681b ldr r3, [r3, #0] - 803b266: 681b ldr r3, [r3, #0] - 803b268: f003 0308 and.w r3, r3, #8 - 803b26c: 2b08 cmp r3, #8 - 803b26e: d10e bne.n 803b28e + 803b2a2: 687b ldr r3, [r7, #4] + 803b2a4: 681b ldr r3, [r3, #0] + 803b2a6: 681b ldr r3, [r3, #0] + 803b2a8: f003 0308 and.w r3, r3, #8 + 803b2ac: 2b08 cmp r3, #8 + 803b2ae: d10e bne.n 803b2ce { /* Wait until TEACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 803b270: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 - 803b274: 9300 str r3, [sp, #0] - 803b276: 68fb ldr r3, [r7, #12] - 803b278: 2200 movs r2, #0 - 803b27a: f44f 1100 mov.w r1, #2097152 ; 0x200000 - 803b27e: 6878 ldr r0, [r7, #4] - 803b280: f000 f82f bl 803b2e2 - 803b284: 4603 mov r3, r0 - 803b286: 2b00 cmp r3, #0 - 803b288: d001 beq.n 803b28e + 803b2b0: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 803b2b4: 9300 str r3, [sp, #0] + 803b2b6: 68fb ldr r3, [r7, #12] + 803b2b8: 2200 movs r2, #0 + 803b2ba: f44f 1100 mov.w r1, #2097152 ; 0x200000 + 803b2be: 6878 ldr r0, [r7, #4] + 803b2c0: f000 f82f bl 803b322 + 803b2c4: 4603 mov r3, r0 + 803b2c6: 2b00 cmp r3, #0 + 803b2c8: d001 beq.n 803b2ce { /* Timeout occurred */ return HAL_TIMEOUT; - 803b28a: 2303 movs r3, #3 - 803b28c: e025 b.n 803b2da + 803b2ca: 2303 movs r3, #3 + 803b2cc: e025 b.n 803b31a } } /* Check if the Receiver is enabled */ if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE) - 803b28e: 687b ldr r3, [r7, #4] - 803b290: 681b ldr r3, [r3, #0] - 803b292: 681b ldr r3, [r3, #0] - 803b294: f003 0304 and.w r3, r3, #4 - 803b298: 2b04 cmp r3, #4 - 803b29a: d10e bne.n 803b2ba + 803b2ce: 687b ldr r3, [r7, #4] + 803b2d0: 681b ldr r3, [r3, #0] + 803b2d2: 681b ldr r3, [r3, #0] + 803b2d4: f003 0304 and.w r3, r3, #4 + 803b2d8: 2b04 cmp r3, #4 + 803b2da: d10e bne.n 803b2fa { /* Wait until REACK flag is set */ if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) - 803b29c: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 - 803b2a0: 9300 str r3, [sp, #0] - 803b2a2: 68fb ldr r3, [r7, #12] - 803b2a4: 2200 movs r2, #0 - 803b2a6: f44f 0180 mov.w r1, #4194304 ; 0x400000 - 803b2aa: 6878 ldr r0, [r7, #4] - 803b2ac: f000 f819 bl 803b2e2 - 803b2b0: 4603 mov r3, r0 - 803b2b2: 2b00 cmp r3, #0 - 803b2b4: d001 beq.n 803b2ba + 803b2dc: f06f 437e mvn.w r3, #4261412864 ; 0xfe000000 + 803b2e0: 9300 str r3, [sp, #0] + 803b2e2: 68fb ldr r3, [r7, #12] + 803b2e4: 2200 movs r2, #0 + 803b2e6: f44f 0180 mov.w r1, #4194304 ; 0x400000 + 803b2ea: 6878 ldr r0, [r7, #4] + 803b2ec: f000 f819 bl 803b322 + 803b2f0: 4603 mov r3, r0 + 803b2f2: 2b00 cmp r3, #0 + 803b2f4: d001 beq.n 803b2fa { /* Timeout occurred */ return HAL_TIMEOUT; - 803b2b6: 2303 movs r3, #3 - 803b2b8: e00f b.n 803b2da + 803b2f6: 2303 movs r3, #3 + 803b2f8: e00f b.n 803b31a } } /* Initialize the UART State */ huart->gState = HAL_UART_STATE_READY; - 803b2ba: 687b ldr r3, [r7, #4] - 803b2bc: 2220 movs r2, #32 - 803b2be: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803b2fa: 687b ldr r3, [r7, #4] + 803b2fc: 2220 movs r2, #32 + 803b2fe: f8c3 2084 str.w r2, [r3, #132] ; 0x84 huart->RxState = HAL_UART_STATE_READY; - 803b2c2: 687b ldr r3, [r7, #4] - 803b2c4: 2220 movs r2, #32 - 803b2c6: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803b302: 687b ldr r3, [r7, #4] + 803b304: 2220 movs r2, #32 + 803b306: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803b2ca: 687b ldr r3, [r7, #4] - 803b2cc: 2200 movs r2, #0 - 803b2ce: 66da str r2, [r3, #108] ; 0x6c + 803b30a: 687b ldr r3, [r7, #4] + 803b30c: 2200 movs r2, #0 + 803b30e: 66da str r2, [r3, #108] ; 0x6c __HAL_UNLOCK(huart); - 803b2d0: 687b ldr r3, [r7, #4] - 803b2d2: 2200 movs r2, #0 - 803b2d4: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803b310: 687b ldr r3, [r7, #4] + 803b312: 2200 movs r2, #0 + 803b314: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_OK; - 803b2d8: 2300 movs r3, #0 + 803b318: 2300 movs r3, #0 } - 803b2da: 4618 mov r0, r3 - 803b2dc: 3710 adds r7, #16 - 803b2de: 46bd mov sp, r7 - 803b2e0: bd80 pop {r7, pc} + 803b31a: 4618 mov r0, r3 + 803b31c: 3710 adds r7, #16 + 803b31e: 46bd mov sp, r7 + 803b320: bd80 pop {r7, pc} -0803b2e2 : +0803b322 : * @param Timeout Timeout duration * @retval HAL status */ HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout) { - 803b2e2: b580 push {r7, lr} - 803b2e4: b09c sub sp, #112 ; 0x70 - 803b2e6: af00 add r7, sp, #0 - 803b2e8: 60f8 str r0, [r7, #12] - 803b2ea: 60b9 str r1, [r7, #8] - 803b2ec: 603b str r3, [r7, #0] - 803b2ee: 4613 mov r3, r2 - 803b2f0: 71fb strb r3, [r7, #7] + 803b322: b580 push {r7, lr} + 803b324: b09c sub sp, #112 ; 0x70 + 803b326: af00 add r7, sp, #0 + 803b328: 60f8 str r0, [r7, #12] + 803b32a: 60b9 str r1, [r7, #8] + 803b32c: 603b str r3, [r7, #0] + 803b32e: 4613 mov r3, r2 + 803b330: 71fb strb r3, [r7, #7] /* Wait until flag is set */ while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 803b2f2: e0a9 b.n 803b448 + 803b332: e0a9 b.n 803b488 { /* Check for the Timeout */ if (Timeout != HAL_MAX_DELAY) - 803b2f4: 6fbb ldr r3, [r7, #120] ; 0x78 - 803b2f6: f1b3 3fff cmp.w r3, #4294967295 - 803b2fa: f000 80a5 beq.w 803b448 + 803b334: 6fbb ldr r3, [r7, #120] ; 0x78 + 803b336: f1b3 3fff cmp.w r3, #4294967295 + 803b33a: f000 80a5 beq.w 803b488 { if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U)) - 803b2fe: f7f1 fe49 bl 802cf94 - 803b302: 4602 mov r2, r0 - 803b304: 683b ldr r3, [r7, #0] - 803b306: 1ad3 subs r3, r2, r3 - 803b308: 6fba ldr r2, [r7, #120] ; 0x78 - 803b30a: 429a cmp r2, r3 - 803b30c: d302 bcc.n 803b314 - 803b30e: 6fbb ldr r3, [r7, #120] ; 0x78 - 803b310: 2b00 cmp r3, #0 - 803b312: d140 bne.n 803b396 + 803b33e: f7f1 fe49 bl 802cfd4 + 803b342: 4602 mov r2, r0 + 803b344: 683b ldr r3, [r7, #0] + 803b346: 1ad3 subs r3, r2, r3 + 803b348: 6fba ldr r2, [r7, #120] ; 0x78 + 803b34a: 429a cmp r2, r3 + 803b34c: d302 bcc.n 803b354 + 803b34e: 6fbb ldr r3, [r7, #120] ; 0x78 + 803b350: 2b00 cmp r3, #0 + 803b352: d140 bne.n 803b3d6 { /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | - 803b314: 68fb ldr r3, [r7, #12] - 803b316: 681b ldr r3, [r3, #0] - 803b318: 653b str r3, [r7, #80] ; 0x50 + 803b354: 68fb ldr r3, [r7, #12] + 803b356: 681b ldr r3, [r3, #0] + 803b358: 653b str r3, [r7, #80] ; 0x50 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b31a: 6d3b ldr r3, [r7, #80] ; 0x50 - 803b31c: e853 3f00 ldrex r3, [r3] - 803b320: 64fb str r3, [r7, #76] ; 0x4c + 803b35a: 6d3b ldr r3, [r7, #80] ; 0x50 + 803b35c: e853 3f00 ldrex r3, [r3] + 803b360: 64fb str r3, [r7, #76] ; 0x4c return(result); - 803b322: 6cfb ldr r3, [r7, #76] ; 0x4c - 803b324: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 - 803b328: 667b str r3, [r7, #100] ; 0x64 - 803b32a: 68fb ldr r3, [r7, #12] - 803b32c: 681b ldr r3, [r3, #0] - 803b32e: 461a mov r2, r3 - 803b330: 6e7b ldr r3, [r7, #100] ; 0x64 - 803b332: 65fb str r3, [r7, #92] ; 0x5c - 803b334: 65ba str r2, [r7, #88] ; 0x58 + 803b362: 6cfb ldr r3, [r7, #76] ; 0x4c + 803b364: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 803b368: 667b str r3, [r7, #100] ; 0x64 + 803b36a: 68fb ldr r3, [r7, #12] + 803b36c: 681b ldr r3, [r3, #0] + 803b36e: 461a mov r2, r3 + 803b370: 6e7b ldr r3, [r7, #100] ; 0x64 + 803b372: 65fb str r3, [r7, #92] ; 0x5c + 803b374: 65ba str r2, [r7, #88] ; 0x58 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b336: 6db9 ldr r1, [r7, #88] ; 0x58 - 803b338: 6dfa ldr r2, [r7, #92] ; 0x5c - 803b33a: e841 2300 strex r3, r2, [r1] - 803b33e: 657b str r3, [r7, #84] ; 0x54 + 803b376: 6db9 ldr r1, [r7, #88] ; 0x58 + 803b378: 6dfa ldr r2, [r7, #92] ; 0x5c + 803b37a: e841 2300 strex r3, r2, [r1] + 803b37e: 657b str r3, [r7, #84] ; 0x54 return(result); - 803b340: 6d7b ldr r3, [r7, #84] ; 0x54 - 803b342: 2b00 cmp r3, #0 - 803b344: d1e6 bne.n 803b314 + 803b380: 6d7b ldr r3, [r7, #84] ; 0x54 + 803b382: 2b00 cmp r3, #0 + 803b384: d1e6 bne.n 803b354 USART_CR1_TXEIE_TXFNFIE)); ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803b346: 68fb ldr r3, [r7, #12] - 803b348: 681b ldr r3, [r3, #0] - 803b34a: 3308 adds r3, #8 - 803b34c: 63fb str r3, [r7, #60] ; 0x3c + 803b386: 68fb ldr r3, [r7, #12] + 803b388: 681b ldr r3, [r3, #0] + 803b38a: 3308 adds r3, #8 + 803b38c: 63fb str r3, [r7, #60] ; 0x3c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b34e: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b350: e853 3f00 ldrex r3, [r3] - 803b354: 63bb str r3, [r7, #56] ; 0x38 + 803b38e: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b390: e853 3f00 ldrex r3, [r3] + 803b394: 63bb str r3, [r7, #56] ; 0x38 return(result); - 803b356: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b358: f023 0301 bic.w r3, r3, #1 - 803b35c: 663b str r3, [r7, #96] ; 0x60 - 803b35e: 68fb ldr r3, [r7, #12] - 803b360: 681b ldr r3, [r3, #0] - 803b362: 3308 adds r3, #8 - 803b364: 6e3a ldr r2, [r7, #96] ; 0x60 - 803b366: 64ba str r2, [r7, #72] ; 0x48 - 803b368: 647b str r3, [r7, #68] ; 0x44 + 803b396: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b398: f023 0301 bic.w r3, r3, #1 + 803b39c: 663b str r3, [r7, #96] ; 0x60 + 803b39e: 68fb ldr r3, [r7, #12] + 803b3a0: 681b ldr r3, [r3, #0] + 803b3a2: 3308 adds r3, #8 + 803b3a4: 6e3a ldr r2, [r7, #96] ; 0x60 + 803b3a6: 64ba str r2, [r7, #72] ; 0x48 + 803b3a8: 647b str r3, [r7, #68] ; 0x44 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b36a: 6c79 ldr r1, [r7, #68] ; 0x44 - 803b36c: 6cba ldr r2, [r7, #72] ; 0x48 - 803b36e: e841 2300 strex r3, r2, [r1] - 803b372: 643b str r3, [r7, #64] ; 0x40 + 803b3aa: 6c79 ldr r1, [r7, #68] ; 0x44 + 803b3ac: 6cba ldr r2, [r7, #72] ; 0x48 + 803b3ae: e841 2300 strex r3, r2, [r1] + 803b3b2: 643b str r3, [r7, #64] ; 0x40 return(result); - 803b374: 6c3b ldr r3, [r7, #64] ; 0x40 - 803b376: 2b00 cmp r3, #0 - 803b378: d1e5 bne.n 803b346 + 803b3b4: 6c3b ldr r3, [r7, #64] ; 0x40 + 803b3b6: 2b00 cmp r3, #0 + 803b3b8: d1e5 bne.n 803b386 huart->gState = HAL_UART_STATE_READY; - 803b37a: 68fb ldr r3, [r7, #12] - 803b37c: 2220 movs r2, #32 - 803b37e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803b3ba: 68fb ldr r3, [r7, #12] + 803b3bc: 2220 movs r2, #32 + 803b3be: f8c3 2084 str.w r2, [r3, #132] ; 0x84 huart->RxState = HAL_UART_STATE_READY; - 803b382: 68fb ldr r3, [r7, #12] - 803b384: 2220 movs r2, #32 - 803b386: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803b3c2: 68fb ldr r3, [r7, #12] + 803b3c4: 2220 movs r2, #32 + 803b3c6: f8c3 2088 str.w r2, [r3, #136] ; 0x88 __HAL_UNLOCK(huart); - 803b38a: 68fb ldr r3, [r7, #12] - 803b38c: 2200 movs r2, #0 - 803b38e: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803b3ca: 68fb ldr r3, [r7, #12] + 803b3cc: 2200 movs r2, #0 + 803b3ce: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_TIMEOUT; - 803b392: 2303 movs r3, #3 - 803b394: e069 b.n 803b46a + 803b3d2: 2303 movs r3, #3 + 803b3d4: e069 b.n 803b4aa } if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U) - 803b396: 68fb ldr r3, [r7, #12] - 803b398: 681b ldr r3, [r3, #0] - 803b39a: 681b ldr r3, [r3, #0] - 803b39c: f003 0304 and.w r3, r3, #4 - 803b3a0: 2b00 cmp r3, #0 - 803b3a2: d051 beq.n 803b448 + 803b3d6: 68fb ldr r3, [r7, #12] + 803b3d8: 681b ldr r3, [r3, #0] + 803b3da: 681b ldr r3, [r3, #0] + 803b3dc: f003 0304 and.w r3, r3, #4 + 803b3e0: 2b00 cmp r3, #0 + 803b3e2: d051 beq.n 803b488 { if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET) - 803b3a4: 68fb ldr r3, [r7, #12] - 803b3a6: 681b ldr r3, [r3, #0] - 803b3a8: 69db ldr r3, [r3, #28] - 803b3aa: f403 6300 and.w r3, r3, #2048 ; 0x800 - 803b3ae: f5b3 6f00 cmp.w r3, #2048 ; 0x800 - 803b3b2: d149 bne.n 803b448 + 803b3e4: 68fb ldr r3, [r7, #12] + 803b3e6: 681b ldr r3, [r3, #0] + 803b3e8: 69db ldr r3, [r3, #28] + 803b3ea: f403 6300 and.w r3, r3, #2048 ; 0x800 + 803b3ee: f5b3 6f00 cmp.w r3, #2048 ; 0x800 + 803b3f2: d149 bne.n 803b488 { /* Clear Receiver Timeout flag*/ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF); - 803b3b4: 68fb ldr r3, [r7, #12] - 803b3b6: 681b ldr r3, [r3, #0] - 803b3b8: f44f 6200 mov.w r2, #2048 ; 0x800 - 803b3bc: 621a str r2, [r3, #32] + 803b3f4: 68fb ldr r3, [r7, #12] + 803b3f6: 681b ldr r3, [r3, #0] + 803b3f8: f44f 6200 mov.w r2, #2048 ; 0x800 + 803b3fc: 621a str r2, [r3, #32] /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE | - 803b3be: 68fb ldr r3, [r7, #12] - 803b3c0: 681b ldr r3, [r3, #0] - 803b3c2: 62bb str r3, [r7, #40] ; 0x28 + 803b3fe: 68fb ldr r3, [r7, #12] + 803b400: 681b ldr r3, [r3, #0] + 803b402: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b3c4: 6abb ldr r3, [r7, #40] ; 0x28 - 803b3c6: e853 3f00 ldrex r3, [r3] - 803b3ca: 627b str r3, [r7, #36] ; 0x24 + 803b404: 6abb ldr r3, [r7, #40] ; 0x28 + 803b406: e853 3f00 ldrex r3, [r3] + 803b40a: 627b str r3, [r7, #36] ; 0x24 return(result); - 803b3cc: 6a7b ldr r3, [r7, #36] ; 0x24 - 803b3ce: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 - 803b3d2: 66fb str r3, [r7, #108] ; 0x6c - 803b3d4: 68fb ldr r3, [r7, #12] - 803b3d6: 681b ldr r3, [r3, #0] - 803b3d8: 461a mov r2, r3 - 803b3da: 6efb ldr r3, [r7, #108] ; 0x6c - 803b3dc: 637b str r3, [r7, #52] ; 0x34 - 803b3de: 633a str r2, [r7, #48] ; 0x30 + 803b40c: 6a7b ldr r3, [r7, #36] ; 0x24 + 803b40e: f423 73d0 bic.w r3, r3, #416 ; 0x1a0 + 803b412: 66fb str r3, [r7, #108] ; 0x6c + 803b414: 68fb ldr r3, [r7, #12] + 803b416: 681b ldr r3, [r3, #0] + 803b418: 461a mov r2, r3 + 803b41a: 6efb ldr r3, [r7, #108] ; 0x6c + 803b41c: 637b str r3, [r7, #52] ; 0x34 + 803b41e: 633a str r2, [r7, #48] ; 0x30 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b3e0: 6b39 ldr r1, [r7, #48] ; 0x30 - 803b3e2: 6b7a ldr r2, [r7, #52] ; 0x34 - 803b3e4: e841 2300 strex r3, r2, [r1] - 803b3e8: 62fb str r3, [r7, #44] ; 0x2c + 803b420: 6b39 ldr r1, [r7, #48] ; 0x30 + 803b422: 6b7a ldr r2, [r7, #52] ; 0x34 + 803b424: e841 2300 strex r3, r2, [r1] + 803b428: 62fb str r3, [r7, #44] ; 0x2c return(result); - 803b3ea: 6afb ldr r3, [r7, #44] ; 0x2c - 803b3ec: 2b00 cmp r3, #0 - 803b3ee: d1e6 bne.n 803b3be + 803b42a: 6afb ldr r3, [r7, #44] ; 0x2c + 803b42c: 2b00 cmp r3, #0 + 803b42e: d1e6 bne.n 803b3fe USART_CR1_TXEIE_TXFNFIE)); ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803b3f0: 68fb ldr r3, [r7, #12] - 803b3f2: 681b ldr r3, [r3, #0] - 803b3f4: 3308 adds r3, #8 - 803b3f6: 617b str r3, [r7, #20] + 803b430: 68fb ldr r3, [r7, #12] + 803b432: 681b ldr r3, [r3, #0] + 803b434: 3308 adds r3, #8 + 803b436: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b3f8: 697b ldr r3, [r7, #20] - 803b3fa: e853 3f00 ldrex r3, [r3] - 803b3fe: 613b str r3, [r7, #16] + 803b438: 697b ldr r3, [r7, #20] + 803b43a: e853 3f00 ldrex r3, [r3] + 803b43e: 613b str r3, [r7, #16] return(result); - 803b400: 693b ldr r3, [r7, #16] - 803b402: f023 0301 bic.w r3, r3, #1 - 803b406: 66bb str r3, [r7, #104] ; 0x68 - 803b408: 68fb ldr r3, [r7, #12] - 803b40a: 681b ldr r3, [r3, #0] - 803b40c: 3308 adds r3, #8 - 803b40e: 6eba ldr r2, [r7, #104] ; 0x68 - 803b410: 623a str r2, [r7, #32] - 803b412: 61fb str r3, [r7, #28] + 803b440: 693b ldr r3, [r7, #16] + 803b442: f023 0301 bic.w r3, r3, #1 + 803b446: 66bb str r3, [r7, #104] ; 0x68 + 803b448: 68fb ldr r3, [r7, #12] + 803b44a: 681b ldr r3, [r3, #0] + 803b44c: 3308 adds r3, #8 + 803b44e: 6eba ldr r2, [r7, #104] ; 0x68 + 803b450: 623a str r2, [r7, #32] + 803b452: 61fb str r3, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b414: 69f9 ldr r1, [r7, #28] - 803b416: 6a3a ldr r2, [r7, #32] - 803b418: e841 2300 strex r3, r2, [r1] - 803b41c: 61bb str r3, [r7, #24] + 803b454: 69f9 ldr r1, [r7, #28] + 803b456: 6a3a ldr r2, [r7, #32] + 803b458: e841 2300 strex r3, r2, [r1] + 803b45c: 61bb str r3, [r7, #24] return(result); - 803b41e: 69bb ldr r3, [r7, #24] - 803b420: 2b00 cmp r3, #0 - 803b422: d1e5 bne.n 803b3f0 + 803b45e: 69bb ldr r3, [r7, #24] + 803b460: 2b00 cmp r3, #0 + 803b462: d1e5 bne.n 803b430 huart->gState = HAL_UART_STATE_READY; - 803b424: 68fb ldr r3, [r7, #12] - 803b426: 2220 movs r2, #32 - 803b428: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803b464: 68fb ldr r3, [r7, #12] + 803b466: 2220 movs r2, #32 + 803b468: f8c3 2084 str.w r2, [r3, #132] ; 0x84 huart->RxState = HAL_UART_STATE_READY; - 803b42c: 68fb ldr r3, [r7, #12] - 803b42e: 2220 movs r2, #32 - 803b430: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803b46c: 68fb ldr r3, [r7, #12] + 803b46e: 2220 movs r2, #32 + 803b470: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->ErrorCode = HAL_UART_ERROR_RTO; - 803b434: 68fb ldr r3, [r7, #12] - 803b436: 2220 movs r2, #32 - 803b438: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803b474: 68fb ldr r3, [r7, #12] + 803b476: 2220 movs r2, #32 + 803b478: f8c3 208c str.w r2, [r3, #140] ; 0x8c /* Process Unlocked */ __HAL_UNLOCK(huart); - 803b43c: 68fb ldr r3, [r7, #12] - 803b43e: 2200 movs r2, #0 - 803b440: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803b47c: 68fb ldr r3, [r7, #12] + 803b47e: 2200 movs r2, #0 + 803b480: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_TIMEOUT; - 803b444: 2303 movs r3, #3 - 803b446: e010 b.n 803b46a + 803b484: 2303 movs r3, #3 + 803b486: e010 b.n 803b4aa while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status) - 803b448: 68fb ldr r3, [r7, #12] - 803b44a: 681b ldr r3, [r3, #0] - 803b44c: 69da ldr r2, [r3, #28] - 803b44e: 68bb ldr r3, [r7, #8] - 803b450: 4013 ands r3, r2 - 803b452: 68ba ldr r2, [r7, #8] - 803b454: 429a cmp r2, r3 - 803b456: bf0c ite eq - 803b458: 2301 moveq r3, #1 - 803b45a: 2300 movne r3, #0 - 803b45c: b2db uxtb r3, r3 - 803b45e: 461a mov r2, r3 - 803b460: 79fb ldrb r3, [r7, #7] - 803b462: 429a cmp r2, r3 - 803b464: f43f af46 beq.w 803b2f4 + 803b488: 68fb ldr r3, [r7, #12] + 803b48a: 681b ldr r3, [r3, #0] + 803b48c: 69da ldr r2, [r3, #28] + 803b48e: 68bb ldr r3, [r7, #8] + 803b490: 4013 ands r3, r2 + 803b492: 68ba ldr r2, [r7, #8] + 803b494: 429a cmp r2, r3 + 803b496: bf0c ite eq + 803b498: 2301 moveq r3, #1 + 803b49a: 2300 movne r3, #0 + 803b49c: b2db uxtb r3, r3 + 803b49e: 461a mov r2, r3 + 803b4a0: 79fb ldrb r3, [r7, #7] + 803b4a2: 429a cmp r2, r3 + 803b4a4: f43f af46 beq.w 803b334 } } } } return HAL_OK; - 803b468: 2300 movs r3, #0 + 803b4a8: 2300 movs r3, #0 } - 803b46a: 4618 mov r0, r3 - 803b46c: 3770 adds r7, #112 ; 0x70 - 803b46e: 46bd mov sp, r7 - 803b470: bd80 pop {r7, pc} + 803b4aa: 4618 mov r0, r3 + 803b4ac: 3770 adds r7, #112 ; 0x70 + 803b4ae: 46bd mov sp, r7 + 803b4b0: bd80 pop {r7, pc} ... -0803b474 : +0803b4b4 : * @param pData Pointer to data buffer (u8 or u16 data elements). * @param Size Amount of data elements (u8 or u16) to be received. * @retval HAL status */ HAL_StatusTypeDef UART_Start_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) { - 803b474: b480 push {r7} - 803b476: b0a3 sub sp, #140 ; 0x8c - 803b478: af00 add r7, sp, #0 - 803b47a: 60f8 str r0, [r7, #12] - 803b47c: 60b9 str r1, [r7, #8] - 803b47e: 4613 mov r3, r2 - 803b480: 80fb strh r3, [r7, #6] + 803b4b4: b480 push {r7} + 803b4b6: b0a3 sub sp, #140 ; 0x8c + 803b4b8: af00 add r7, sp, #0 + 803b4ba: 60f8 str r0, [r7, #12] + 803b4bc: 60b9 str r1, [r7, #8] + 803b4be: 4613 mov r3, r2 + 803b4c0: 80fb strh r3, [r7, #6] huart->pRxBuffPtr = pData; - 803b482: 68fb ldr r3, [r7, #12] - 803b484: 68ba ldr r2, [r7, #8] - 803b486: 659a str r2, [r3, #88] ; 0x58 + 803b4c2: 68fb ldr r3, [r7, #12] + 803b4c4: 68ba ldr r2, [r7, #8] + 803b4c6: 659a str r2, [r3, #88] ; 0x58 huart->RxXferSize = Size; - 803b488: 68fb ldr r3, [r7, #12] - 803b48a: 88fa ldrh r2, [r7, #6] - 803b48c: f8a3 205c strh.w r2, [r3, #92] ; 0x5c + 803b4c8: 68fb ldr r3, [r7, #12] + 803b4ca: 88fa ldrh r2, [r7, #6] + 803b4cc: f8a3 205c strh.w r2, [r3, #92] ; 0x5c huart->RxXferCount = Size; - 803b490: 68fb ldr r3, [r7, #12] - 803b492: 88fa ldrh r2, [r7, #6] - 803b494: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803b4d0: 68fb ldr r3, [r7, #12] + 803b4d2: 88fa ldrh r2, [r7, #6] + 803b4d4: f8a3 205e strh.w r2, [r3, #94] ; 0x5e huart->RxISR = NULL; - 803b498: 68fb ldr r3, [r7, #12] - 803b49a: 2200 movs r2, #0 - 803b49c: 671a str r2, [r3, #112] ; 0x70 + 803b4d8: 68fb ldr r3, [r7, #12] + 803b4da: 2200 movs r2, #0 + 803b4dc: 671a str r2, [r3, #112] ; 0x70 /* Computation of UART mask to apply to RDR register */ UART_MASK_COMPUTATION(huart); - 803b49e: 68fb ldr r3, [r7, #12] - 803b4a0: 689b ldr r3, [r3, #8] - 803b4a2: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 803b4a6: d10e bne.n 803b4c6 - 803b4a8: 68fb ldr r3, [r7, #12] - 803b4aa: 691b ldr r3, [r3, #16] - 803b4ac: 2b00 cmp r3, #0 - 803b4ae: d105 bne.n 803b4bc - 803b4b0: 68fb ldr r3, [r7, #12] - 803b4b2: f240 12ff movw r2, #511 ; 0x1ff - 803b4b6: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b4ba: e02d b.n 803b518 - 803b4bc: 68fb ldr r3, [r7, #12] - 803b4be: 22ff movs r2, #255 ; 0xff - 803b4c0: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b4c4: e028 b.n 803b518 - 803b4c6: 68fb ldr r3, [r7, #12] - 803b4c8: 689b ldr r3, [r3, #8] - 803b4ca: 2b00 cmp r3, #0 - 803b4cc: d10d bne.n 803b4ea - 803b4ce: 68fb ldr r3, [r7, #12] - 803b4d0: 691b ldr r3, [r3, #16] - 803b4d2: 2b00 cmp r3, #0 - 803b4d4: d104 bne.n 803b4e0 - 803b4d6: 68fb ldr r3, [r7, #12] - 803b4d8: 22ff movs r2, #255 ; 0xff - 803b4da: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b4de: e01b b.n 803b518 - 803b4e0: 68fb ldr r3, [r7, #12] - 803b4e2: 227f movs r2, #127 ; 0x7f - 803b4e4: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b4e8: e016 b.n 803b518 - 803b4ea: 68fb ldr r3, [r7, #12] - 803b4ec: 689b ldr r3, [r3, #8] - 803b4ee: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 - 803b4f2: d10d bne.n 803b510 - 803b4f4: 68fb ldr r3, [r7, #12] - 803b4f6: 691b ldr r3, [r3, #16] - 803b4f8: 2b00 cmp r3, #0 - 803b4fa: d104 bne.n 803b506 + 803b4de: 68fb ldr r3, [r7, #12] + 803b4e0: 689b ldr r3, [r3, #8] + 803b4e2: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 803b4e6: d10e bne.n 803b506 + 803b4e8: 68fb ldr r3, [r7, #12] + 803b4ea: 691b ldr r3, [r3, #16] + 803b4ec: 2b00 cmp r3, #0 + 803b4ee: d105 bne.n 803b4fc + 803b4f0: 68fb ldr r3, [r7, #12] + 803b4f2: f240 12ff movw r2, #511 ; 0x1ff + 803b4f6: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b4fa: e02d b.n 803b558 803b4fc: 68fb ldr r3, [r7, #12] - 803b4fe: 227f movs r2, #127 ; 0x7f + 803b4fe: 22ff movs r2, #255 ; 0xff 803b500: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b504: e008 b.n 803b518 + 803b504: e028 b.n 803b558 803b506: 68fb ldr r3, [r7, #12] - 803b508: 223f movs r2, #63 ; 0x3f - 803b50a: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 - 803b50e: e003 b.n 803b518 - 803b510: 68fb ldr r3, [r7, #12] - 803b512: 2200 movs r2, #0 - 803b514: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b508: 689b ldr r3, [r3, #8] + 803b50a: 2b00 cmp r3, #0 + 803b50c: d10d bne.n 803b52a + 803b50e: 68fb ldr r3, [r7, #12] + 803b510: 691b ldr r3, [r3, #16] + 803b512: 2b00 cmp r3, #0 + 803b514: d104 bne.n 803b520 + 803b516: 68fb ldr r3, [r7, #12] + 803b518: 22ff movs r2, #255 ; 0xff + 803b51a: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b51e: e01b b.n 803b558 + 803b520: 68fb ldr r3, [r7, #12] + 803b522: 227f movs r2, #127 ; 0x7f + 803b524: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b528: e016 b.n 803b558 + 803b52a: 68fb ldr r3, [r7, #12] + 803b52c: 689b ldr r3, [r3, #8] + 803b52e: f1b3 5f80 cmp.w r3, #268435456 ; 0x10000000 + 803b532: d10d bne.n 803b550 + 803b534: 68fb ldr r3, [r7, #12] + 803b536: 691b ldr r3, [r3, #16] + 803b538: 2b00 cmp r3, #0 + 803b53a: d104 bne.n 803b546 + 803b53c: 68fb ldr r3, [r7, #12] + 803b53e: 227f movs r2, #127 ; 0x7f + 803b540: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b544: e008 b.n 803b558 + 803b546: 68fb ldr r3, [r7, #12] + 803b548: 223f movs r2, #63 ; 0x3f + 803b54a: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 803b54e: e003 b.n 803b558 + 803b550: 68fb ldr r3, [r7, #12] + 803b552: 2200 movs r2, #0 + 803b554: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 huart->ErrorCode = HAL_UART_ERROR_NONE; - 803b518: 68fb ldr r3, [r7, #12] - 803b51a: 2200 movs r2, #0 - 803b51c: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803b558: 68fb ldr r3, [r7, #12] + 803b55a: 2200 movs r2, #0 + 803b55c: f8c3 208c str.w r2, [r3, #140] ; 0x8c huart->RxState = HAL_UART_STATE_BUSY_RX; - 803b520: 68fb ldr r3, [r7, #12] - 803b522: 2222 movs r2, #34 ; 0x22 - 803b524: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803b560: 68fb ldr r3, [r7, #12] + 803b562: 2222 movs r2, #34 ; 0x22 + 803b564: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803b528: 68fb ldr r3, [r7, #12] - 803b52a: 681b ldr r3, [r3, #0] - 803b52c: 3308 adds r3, #8 - 803b52e: 667b str r3, [r7, #100] ; 0x64 + 803b568: 68fb ldr r3, [r7, #12] + 803b56a: 681b ldr r3, [r3, #0] + 803b56c: 3308 adds r3, #8 + 803b56e: 667b str r3, [r7, #100] ; 0x64 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b530: 6e7b ldr r3, [r7, #100] ; 0x64 - 803b532: e853 3f00 ldrex r3, [r3] - 803b536: 663b str r3, [r7, #96] ; 0x60 + 803b570: 6e7b ldr r3, [r7, #100] ; 0x64 + 803b572: e853 3f00 ldrex r3, [r3] + 803b576: 663b str r3, [r7, #96] ; 0x60 return(result); - 803b538: 6e3b ldr r3, [r7, #96] ; 0x60 - 803b53a: f043 0301 orr.w r3, r3, #1 - 803b53e: f8c7 3084 str.w r3, [r7, #132] ; 0x84 - 803b542: 68fb ldr r3, [r7, #12] - 803b544: 681b ldr r3, [r3, #0] - 803b546: 3308 adds r3, #8 - 803b548: f8d7 2084 ldr.w r2, [r7, #132] ; 0x84 - 803b54c: 673a str r2, [r7, #112] ; 0x70 - 803b54e: 66fb str r3, [r7, #108] ; 0x6c + 803b578: 6e3b ldr r3, [r7, #96] ; 0x60 + 803b57a: f043 0301 orr.w r3, r3, #1 + 803b57e: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 803b582: 68fb ldr r3, [r7, #12] + 803b584: 681b ldr r3, [r3, #0] + 803b586: 3308 adds r3, #8 + 803b588: f8d7 2084 ldr.w r2, [r7, #132] ; 0x84 + 803b58c: 673a str r2, [r7, #112] ; 0x70 + 803b58e: 66fb str r3, [r7, #108] ; 0x6c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b550: 6ef9 ldr r1, [r7, #108] ; 0x6c - 803b552: 6f3a ldr r2, [r7, #112] ; 0x70 - 803b554: e841 2300 strex r3, r2, [r1] - 803b558: 66bb str r3, [r7, #104] ; 0x68 + 803b590: 6ef9 ldr r1, [r7, #108] ; 0x6c + 803b592: 6f3a ldr r2, [r7, #112] ; 0x70 + 803b594: e841 2300 strex r3, r2, [r1] + 803b598: 66bb str r3, [r7, #104] ; 0x68 return(result); - 803b55a: 6ebb ldr r3, [r7, #104] ; 0x68 - 803b55c: 2b00 cmp r3, #0 - 803b55e: d1e3 bne.n 803b528 + 803b59a: 6ebb ldr r3, [r7, #104] ; 0x68 + 803b59c: 2b00 cmp r3, #0 + 803b59e: d1e3 bne.n 803b568 /* Configure Rx interrupt processing */ if ((huart->FifoMode == UART_FIFOMODE_ENABLE) && (Size >= huart->NbRxDataToProcess)) - 803b560: 68fb ldr r3, [r7, #12] - 803b562: 6e5b ldr r3, [r3, #100] ; 0x64 - 803b564: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 - 803b568: d153 bne.n 803b612 - 803b56a: 68fb ldr r3, [r7, #12] - 803b56c: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 803b570: 88fa ldrh r2, [r7, #6] - 803b572: 429a cmp r2, r3 - 803b574: d34d bcc.n 803b612 + 803b5a0: 68fb ldr r3, [r7, #12] + 803b5a2: 6e5b ldr r3, [r3, #100] ; 0x64 + 803b5a4: f1b3 5f00 cmp.w r3, #536870912 ; 0x20000000 + 803b5a8: d153 bne.n 803b652 + 803b5aa: 68fb ldr r3, [r7, #12] + 803b5ac: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 803b5b0: 88fa ldrh r2, [r7, #6] + 803b5b2: 429a cmp r2, r3 + 803b5b4: d34d bcc.n 803b652 { /* Set the Rx ISR function pointer according to the data word length */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 803b576: 68fb ldr r3, [r7, #12] - 803b578: 689b ldr r3, [r3, #8] - 803b57a: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 803b57e: d107 bne.n 803b590 - 803b580: 68fb ldr r3, [r7, #12] - 803b582: 691b ldr r3, [r3, #16] - 803b584: 2b00 cmp r3, #0 - 803b586: d103 bne.n 803b590 + 803b5b6: 68fb ldr r3, [r7, #12] + 803b5b8: 689b ldr r3, [r3, #8] + 803b5ba: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 803b5be: d107 bne.n 803b5d0 + 803b5c0: 68fb ldr r3, [r7, #12] + 803b5c2: 691b ldr r3, [r3, #16] + 803b5c4: 2b00 cmp r3, #0 + 803b5c6: d103 bne.n 803b5d0 { huart->RxISR = UART_RxISR_16BIT_FIFOEN; - 803b588: 68fb ldr r3, [r7, #12] - 803b58a: 4a4b ldr r2, [pc, #300] ; (803b6b8 ) - 803b58c: 671a str r2, [r3, #112] ; 0x70 - 803b58e: e002 b.n 803b596 + 803b5c8: 68fb ldr r3, [r7, #12] + 803b5ca: 4a4b ldr r2, [pc, #300] ; (803b6f8 ) + 803b5cc: 671a str r2, [r3, #112] ; 0x70 + 803b5ce: e002 b.n 803b5d6 } else { huart->RxISR = UART_RxISR_8BIT_FIFOEN; - 803b590: 68fb ldr r3, [r7, #12] - 803b592: 4a4a ldr r2, [pc, #296] ; (803b6bc ) - 803b594: 671a str r2, [r3, #112] ; 0x70 + 803b5d0: 68fb ldr r3, [r7, #12] + 803b5d2: 4a4a ldr r2, [pc, #296] ; (803b6fc ) + 803b5d4: 671a str r2, [r3, #112] ; 0x70 } __HAL_UNLOCK(huart); - 803b596: 68fb ldr r3, [r7, #12] - 803b598: 2200 movs r2, #0 - 803b59a: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803b5d6: 68fb ldr r3, [r7, #12] + 803b5d8: 2200 movs r2, #0 + 803b5da: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Enable the UART Parity Error interrupt and RX FIFO Threshold interrupt */ if (huart->Init.Parity != UART_PARITY_NONE) - 803b59e: 68fb ldr r3, [r7, #12] - 803b5a0: 691b ldr r3, [r3, #16] - 803b5a2: 2b00 cmp r3, #0 - 803b5a4: d01a beq.n 803b5dc + 803b5de: 68fb ldr r3, [r7, #12] + 803b5e0: 691b ldr r3, [r3, #16] + 803b5e2: 2b00 cmp r3, #0 + 803b5e4: d01a beq.n 803b61c { ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 803b5a6: 68fb ldr r3, [r7, #12] - 803b5a8: 681b ldr r3, [r3, #0] - 803b5aa: 653b str r3, [r7, #80] ; 0x50 + 803b5e6: 68fb ldr r3, [r7, #12] + 803b5e8: 681b ldr r3, [r3, #0] + 803b5ea: 653b str r3, [r7, #80] ; 0x50 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b5ac: 6d3b ldr r3, [r7, #80] ; 0x50 - 803b5ae: e853 3f00 ldrex r3, [r3] - 803b5b2: 64fb str r3, [r7, #76] ; 0x4c + 803b5ec: 6d3b ldr r3, [r7, #80] ; 0x50 + 803b5ee: e853 3f00 ldrex r3, [r3] + 803b5f2: 64fb str r3, [r7, #76] ; 0x4c return(result); - 803b5b4: 6cfb ldr r3, [r7, #76] ; 0x4c - 803b5b6: f443 7380 orr.w r3, r3, #256 ; 0x100 - 803b5ba: f8c7 3080 str.w r3, [r7, #128] ; 0x80 - 803b5be: 68fb ldr r3, [r7, #12] - 803b5c0: 681b ldr r3, [r3, #0] - 803b5c2: 461a mov r2, r3 - 803b5c4: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 - 803b5c8: 65fb str r3, [r7, #92] ; 0x5c - 803b5ca: 65ba str r2, [r7, #88] ; 0x58 + 803b5f4: 6cfb ldr r3, [r7, #76] ; 0x4c + 803b5f6: f443 7380 orr.w r3, r3, #256 ; 0x100 + 803b5fa: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 803b5fe: 68fb ldr r3, [r7, #12] + 803b600: 681b ldr r3, [r3, #0] + 803b602: 461a mov r2, r3 + 803b604: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 803b608: 65fb str r3, [r7, #92] ; 0x5c + 803b60a: 65ba str r2, [r7, #88] ; 0x58 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b5cc: 6db9 ldr r1, [r7, #88] ; 0x58 - 803b5ce: 6dfa ldr r2, [r7, #92] ; 0x5c - 803b5d0: e841 2300 strex r3, r2, [r1] - 803b5d4: 657b str r3, [r7, #84] ; 0x54 + 803b60c: 6db9 ldr r1, [r7, #88] ; 0x58 + 803b60e: 6dfa ldr r2, [r7, #92] ; 0x5c + 803b610: e841 2300 strex r3, r2, [r1] + 803b614: 657b str r3, [r7, #84] ; 0x54 return(result); - 803b5d6: 6d7b ldr r3, [r7, #84] ; 0x54 - 803b5d8: 2b00 cmp r3, #0 - 803b5da: d1e4 bne.n 803b5a6 + 803b616: 6d7b ldr r3, [r7, #84] ; 0x54 + 803b618: 2b00 cmp r3, #0 + 803b61a: d1e4 bne.n 803b5e6 } ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); - 803b5dc: 68fb ldr r3, [r7, #12] - 803b5de: 681b ldr r3, [r3, #0] - 803b5e0: 3308 adds r3, #8 - 803b5e2: 63fb str r3, [r7, #60] ; 0x3c + 803b61c: 68fb ldr r3, [r7, #12] + 803b61e: 681b ldr r3, [r3, #0] + 803b620: 3308 adds r3, #8 + 803b622: 63fb str r3, [r7, #60] ; 0x3c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b5e4: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b5e6: e853 3f00 ldrex r3, [r3] - 803b5ea: 63bb str r3, [r7, #56] ; 0x38 + 803b624: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b626: e853 3f00 ldrex r3, [r3] + 803b62a: 63bb str r3, [r7, #56] ; 0x38 return(result); - 803b5ec: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b5ee: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 - 803b5f2: 67fb str r3, [r7, #124] ; 0x7c - 803b5f4: 68fb ldr r3, [r7, #12] - 803b5f6: 681b ldr r3, [r3, #0] - 803b5f8: 3308 adds r3, #8 - 803b5fa: 6ffa ldr r2, [r7, #124] ; 0x7c - 803b5fc: 64ba str r2, [r7, #72] ; 0x48 - 803b5fe: 647b str r3, [r7, #68] ; 0x44 + 803b62c: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b62e: f043 5380 orr.w r3, r3, #268435456 ; 0x10000000 + 803b632: 67fb str r3, [r7, #124] ; 0x7c + 803b634: 68fb ldr r3, [r7, #12] + 803b636: 681b ldr r3, [r3, #0] + 803b638: 3308 adds r3, #8 + 803b63a: 6ffa ldr r2, [r7, #124] ; 0x7c + 803b63c: 64ba str r2, [r7, #72] ; 0x48 + 803b63e: 647b str r3, [r7, #68] ; 0x44 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b600: 6c79 ldr r1, [r7, #68] ; 0x44 - 803b602: 6cba ldr r2, [r7, #72] ; 0x48 - 803b604: e841 2300 strex r3, r2, [r1] - 803b608: 643b str r3, [r7, #64] ; 0x40 + 803b640: 6c79 ldr r1, [r7, #68] ; 0x44 + 803b642: 6cba ldr r2, [r7, #72] ; 0x48 + 803b644: e841 2300 strex r3, r2, [r1] + 803b648: 643b str r3, [r7, #64] ; 0x40 return(result); - 803b60a: 6c3b ldr r3, [r7, #64] ; 0x40 - 803b60c: 2b00 cmp r3, #0 - 803b60e: d1e5 bne.n 803b5dc - 803b610: e04a b.n 803b6a8 + 803b64a: 6c3b ldr r3, [r7, #64] ; 0x40 + 803b64c: 2b00 cmp r3, #0 + 803b64e: d1e5 bne.n 803b61c + 803b650: e04a b.n 803b6e8 } else { /* Set the Rx ISR function pointer according to the data word length */ if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE)) - 803b612: 68fb ldr r3, [r7, #12] - 803b614: 689b ldr r3, [r3, #8] - 803b616: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 - 803b61a: d107 bne.n 803b62c - 803b61c: 68fb ldr r3, [r7, #12] - 803b61e: 691b ldr r3, [r3, #16] - 803b620: 2b00 cmp r3, #0 - 803b622: d103 bne.n 803b62c + 803b652: 68fb ldr r3, [r7, #12] + 803b654: 689b ldr r3, [r3, #8] + 803b656: f5b3 5f80 cmp.w r3, #4096 ; 0x1000 + 803b65a: d107 bne.n 803b66c + 803b65c: 68fb ldr r3, [r7, #12] + 803b65e: 691b ldr r3, [r3, #16] + 803b660: 2b00 cmp r3, #0 + 803b662: d103 bne.n 803b66c { huart->RxISR = UART_RxISR_16BIT; - 803b624: 68fb ldr r3, [r7, #12] - 803b626: 4a26 ldr r2, [pc, #152] ; (803b6c0 ) - 803b628: 671a str r2, [r3, #112] ; 0x70 - 803b62a: e002 b.n 803b632 + 803b664: 68fb ldr r3, [r7, #12] + 803b666: 4a26 ldr r2, [pc, #152] ; (803b700 ) + 803b668: 671a str r2, [r3, #112] ; 0x70 + 803b66a: e002 b.n 803b672 } else { huart->RxISR = UART_RxISR_8BIT; - 803b62c: 68fb ldr r3, [r7, #12] - 803b62e: 4a25 ldr r2, [pc, #148] ; (803b6c4 ) - 803b630: 671a str r2, [r3, #112] ; 0x70 + 803b66c: 68fb ldr r3, [r7, #12] + 803b66e: 4a25 ldr r2, [pc, #148] ; (803b704 ) + 803b670: 671a str r2, [r3, #112] ; 0x70 } __HAL_UNLOCK(huart); - 803b632: 68fb ldr r3, [r7, #12] - 803b634: 2200 movs r2, #0 - 803b636: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803b672: 68fb ldr r3, [r7, #12] + 803b674: 2200 movs r2, #0 + 803b676: f883 2080 strb.w r2, [r3, #128] ; 0x80 /* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */ if (huart->Init.Parity != UART_PARITY_NONE) - 803b63a: 68fb ldr r3, [r7, #12] - 803b63c: 691b ldr r3, [r3, #16] - 803b63e: 2b00 cmp r3, #0 - 803b640: d019 beq.n 803b676 + 803b67a: 68fb ldr r3, [r7, #12] + 803b67c: 691b ldr r3, [r3, #16] + 803b67e: 2b00 cmp r3, #0 + 803b680: d019 beq.n 803b6b6 { ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_PEIE | USART_CR1_RXNEIE_RXFNEIE); - 803b642: 68fb ldr r3, [r7, #12] - 803b644: 681b ldr r3, [r3, #0] - 803b646: 62bb str r3, [r7, #40] ; 0x28 + 803b682: 68fb ldr r3, [r7, #12] + 803b684: 681b ldr r3, [r3, #0] + 803b686: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b648: 6abb ldr r3, [r7, #40] ; 0x28 - 803b64a: e853 3f00 ldrex r3, [r3] - 803b64e: 627b str r3, [r7, #36] ; 0x24 + 803b688: 6abb ldr r3, [r7, #40] ; 0x28 + 803b68a: e853 3f00 ldrex r3, [r3] + 803b68e: 627b str r3, [r7, #36] ; 0x24 return(result); - 803b650: 6a7b ldr r3, [r7, #36] ; 0x24 - 803b652: f443 7390 orr.w r3, r3, #288 ; 0x120 - 803b656: 677b str r3, [r7, #116] ; 0x74 - 803b658: 68fb ldr r3, [r7, #12] - 803b65a: 681b ldr r3, [r3, #0] - 803b65c: 461a mov r2, r3 - 803b65e: 6f7b ldr r3, [r7, #116] ; 0x74 - 803b660: 637b str r3, [r7, #52] ; 0x34 - 803b662: 633a str r2, [r7, #48] ; 0x30 + 803b690: 6a7b ldr r3, [r7, #36] ; 0x24 + 803b692: f443 7390 orr.w r3, r3, #288 ; 0x120 + 803b696: 677b str r3, [r7, #116] ; 0x74 + 803b698: 68fb ldr r3, [r7, #12] + 803b69a: 681b ldr r3, [r3, #0] + 803b69c: 461a mov r2, r3 + 803b69e: 6f7b ldr r3, [r7, #116] ; 0x74 + 803b6a0: 637b str r3, [r7, #52] ; 0x34 + 803b6a2: 633a str r2, [r7, #48] ; 0x30 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b664: 6b39 ldr r1, [r7, #48] ; 0x30 - 803b666: 6b7a ldr r2, [r7, #52] ; 0x34 - 803b668: e841 2300 strex r3, r2, [r1] - 803b66c: 62fb str r3, [r7, #44] ; 0x2c + 803b6a4: 6b39 ldr r1, [r7, #48] ; 0x30 + 803b6a6: 6b7a ldr r2, [r7, #52] ; 0x34 + 803b6a8: e841 2300 strex r3, r2, [r1] + 803b6ac: 62fb str r3, [r7, #44] ; 0x2c return(result); - 803b66e: 6afb ldr r3, [r7, #44] ; 0x2c - 803b670: 2b00 cmp r3, #0 - 803b672: d1e6 bne.n 803b642 - 803b674: e018 b.n 803b6a8 + 803b6ae: 6afb ldr r3, [r7, #44] ; 0x2c + 803b6b0: 2b00 cmp r3, #0 + 803b6b2: d1e6 bne.n 803b682 + 803b6b4: e018 b.n 803b6e8 } else { ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); - 803b676: 68fb ldr r3, [r7, #12] - 803b678: 681b ldr r3, [r3, #0] - 803b67a: 617b str r3, [r7, #20] + 803b6b6: 68fb ldr r3, [r7, #12] + 803b6b8: 681b ldr r3, [r3, #0] + 803b6ba: 617b str r3, [r7, #20] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b67c: 697b ldr r3, [r7, #20] - 803b67e: e853 3f00 ldrex r3, [r3] - 803b682: 613b str r3, [r7, #16] + 803b6bc: 697b ldr r3, [r7, #20] + 803b6be: e853 3f00 ldrex r3, [r3] + 803b6c2: 613b str r3, [r7, #16] return(result); - 803b684: 693b ldr r3, [r7, #16] - 803b686: f043 0320 orr.w r3, r3, #32 - 803b68a: 67bb str r3, [r7, #120] ; 0x78 - 803b68c: 68fb ldr r3, [r7, #12] - 803b68e: 681b ldr r3, [r3, #0] - 803b690: 461a mov r2, r3 - 803b692: 6fbb ldr r3, [r7, #120] ; 0x78 - 803b694: 623b str r3, [r7, #32] - 803b696: 61fa str r2, [r7, #28] + 803b6c4: 693b ldr r3, [r7, #16] + 803b6c6: f043 0320 orr.w r3, r3, #32 + 803b6ca: 67bb str r3, [r7, #120] ; 0x78 + 803b6cc: 68fb ldr r3, [r7, #12] + 803b6ce: 681b ldr r3, [r3, #0] + 803b6d0: 461a mov r2, r3 + 803b6d2: 6fbb ldr r3, [r7, #120] ; 0x78 + 803b6d4: 623b str r3, [r7, #32] + 803b6d6: 61fa str r2, [r7, #28] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b698: 69f9 ldr r1, [r7, #28] - 803b69a: 6a3a ldr r2, [r7, #32] - 803b69c: e841 2300 strex r3, r2, [r1] - 803b6a0: 61bb str r3, [r7, #24] + 803b6d8: 69f9 ldr r1, [r7, #28] + 803b6da: 6a3a ldr r2, [r7, #32] + 803b6dc: e841 2300 strex r3, r2, [r1] + 803b6e0: 61bb str r3, [r7, #24] return(result); - 803b6a2: 69bb ldr r3, [r7, #24] - 803b6a4: 2b00 cmp r3, #0 - 803b6a6: d1e6 bne.n 803b676 + 803b6e2: 69bb ldr r3, [r7, #24] + 803b6e4: 2b00 cmp r3, #0 + 803b6e6: d1e6 bne.n 803b6b6 } } return HAL_OK; - 803b6a8: 2300 movs r3, #0 -} - 803b6aa: 4618 mov r0, r3 - 803b6ac: 378c adds r7, #140 ; 0x8c - 803b6ae: 46bd mov sp, r7 - 803b6b0: f85d 7b04 ldr.w r7, [sp], #4 - 803b6b4: 4770 bx lr - 803b6b6: bf00 nop - 803b6b8: 0803bf85 .word 0x0803bf85 - 803b6bc: 0803bc8d .word 0x0803bc8d - 803b6c0: 0803bb2d .word 0x0803bb2d - 803b6c4: 0803b9cd .word 0x0803b9cd - -0803b6c8 : + 803b6e8: 2300 movs r3, #0 +} + 803b6ea: 4618 mov r0, r3 + 803b6ec: 378c adds r7, #140 ; 0x8c + 803b6ee: 46bd mov sp, r7 + 803b6f0: f85d 7b04 ldr.w r7, [sp], #4 + 803b6f4: 4770 bx lr + 803b6f6: bf00 nop + 803b6f8: 0803bfc5 .word 0x0803bfc5 + 803b6fc: 0803bccd .word 0x0803bccd + 803b700: 0803bb6d .word 0x0803bb6d + 803b704: 0803ba0d .word 0x0803ba0d + +0803b708 : * @brief End ongoing Tx transfer on UART peripheral (following error detection or Transmit completion). * @param huart UART handle. * @retval None */ static void UART_EndTxTransfer(UART_HandleTypeDef *huart) { - 803b6c8: b480 push {r7} - 803b6ca: b08f sub sp, #60 ; 0x3c - 803b6cc: af00 add r7, sp, #0 - 803b6ce: 6078 str r0, [r7, #4] + 803b708: b480 push {r7} + 803b70a: b08f sub sp, #60 ; 0x3c + 803b70c: af00 add r7, sp, #0 + 803b70e: 6078 str r0, [r7, #4] /* Disable TXEIE, TCIE, TXFT interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_TXEIE_TXFNFIE | USART_CR1_TCIE)); - 803b6d0: 687b ldr r3, [r7, #4] - 803b6d2: 681b ldr r3, [r3, #0] - 803b6d4: 623b str r3, [r7, #32] + 803b710: 687b ldr r3, [r7, #4] + 803b712: 681b ldr r3, [r3, #0] + 803b714: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b6d6: 6a3b ldr r3, [r7, #32] - 803b6d8: e853 3f00 ldrex r3, [r3] - 803b6dc: 61fb str r3, [r7, #28] + 803b716: 6a3b ldr r3, [r7, #32] + 803b718: e853 3f00 ldrex r3, [r3] + 803b71c: 61fb str r3, [r7, #28] return(result); - 803b6de: 69fb ldr r3, [r7, #28] - 803b6e0: f023 03c0 bic.w r3, r3, #192 ; 0xc0 - 803b6e4: 637b str r3, [r7, #52] ; 0x34 - 803b6e6: 687b ldr r3, [r7, #4] - 803b6e8: 681b ldr r3, [r3, #0] - 803b6ea: 461a mov r2, r3 - 803b6ec: 6b7b ldr r3, [r7, #52] ; 0x34 - 803b6ee: 62fb str r3, [r7, #44] ; 0x2c - 803b6f0: 62ba str r2, [r7, #40] ; 0x28 + 803b71e: 69fb ldr r3, [r7, #28] + 803b720: f023 03c0 bic.w r3, r3, #192 ; 0xc0 + 803b724: 637b str r3, [r7, #52] ; 0x34 + 803b726: 687b ldr r3, [r7, #4] + 803b728: 681b ldr r3, [r3, #0] + 803b72a: 461a mov r2, r3 + 803b72c: 6b7b ldr r3, [r7, #52] ; 0x34 + 803b72e: 62fb str r3, [r7, #44] ; 0x2c + 803b730: 62ba str r2, [r7, #40] ; 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b6f2: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803b6f4: 6afa ldr r2, [r7, #44] ; 0x2c - 803b6f6: e841 2300 strex r3, r2, [r1] - 803b6fa: 627b str r3, [r7, #36] ; 0x24 + 803b732: 6ab9 ldr r1, [r7, #40] ; 0x28 + 803b734: 6afa ldr r2, [r7, #44] ; 0x2c + 803b736: e841 2300 strex r3, r2, [r1] + 803b73a: 627b str r3, [r7, #36] ; 0x24 return(result); - 803b6fc: 6a7b ldr r3, [r7, #36] ; 0x24 - 803b6fe: 2b00 cmp r3, #0 - 803b700: d1e6 bne.n 803b6d0 + 803b73c: 6a7b ldr r3, [r7, #36] ; 0x24 + 803b73e: 2b00 cmp r3, #0 + 803b740: d1e6 bne.n 803b710 ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_TXFTIE)); - 803b702: 687b ldr r3, [r7, #4] - 803b704: 681b ldr r3, [r3, #0] - 803b706: 3308 adds r3, #8 - 803b708: 60fb str r3, [r7, #12] + 803b742: 687b ldr r3, [r7, #4] + 803b744: 681b ldr r3, [r3, #0] + 803b746: 3308 adds r3, #8 + 803b748: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b70a: 68fb ldr r3, [r7, #12] - 803b70c: e853 3f00 ldrex r3, [r3] - 803b710: 60bb str r3, [r7, #8] + 803b74a: 68fb ldr r3, [r7, #12] + 803b74c: e853 3f00 ldrex r3, [r3] + 803b750: 60bb str r3, [r7, #8] return(result); - 803b712: 68bb ldr r3, [r7, #8] - 803b714: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 - 803b718: 633b str r3, [r7, #48] ; 0x30 - 803b71a: 687b ldr r3, [r7, #4] - 803b71c: 681b ldr r3, [r3, #0] - 803b71e: 3308 adds r3, #8 - 803b720: 6b3a ldr r2, [r7, #48] ; 0x30 - 803b722: 61ba str r2, [r7, #24] - 803b724: 617b str r3, [r7, #20] + 803b752: 68bb ldr r3, [r7, #8] + 803b754: f423 0300 bic.w r3, r3, #8388608 ; 0x800000 + 803b758: 633b str r3, [r7, #48] ; 0x30 + 803b75a: 687b ldr r3, [r7, #4] + 803b75c: 681b ldr r3, [r3, #0] + 803b75e: 3308 adds r3, #8 + 803b760: 6b3a ldr r2, [r7, #48] ; 0x30 + 803b762: 61ba str r2, [r7, #24] + 803b764: 617b str r3, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b726: 6979 ldr r1, [r7, #20] - 803b728: 69ba ldr r2, [r7, #24] - 803b72a: e841 2300 strex r3, r2, [r1] - 803b72e: 613b str r3, [r7, #16] + 803b766: 6979 ldr r1, [r7, #20] + 803b768: 69ba ldr r2, [r7, #24] + 803b76a: e841 2300 strex r3, r2, [r1] + 803b76e: 613b str r3, [r7, #16] return(result); - 803b730: 693b ldr r3, [r7, #16] - 803b732: 2b00 cmp r3, #0 - 803b734: d1e5 bne.n 803b702 + 803b770: 693b ldr r3, [r7, #16] + 803b772: 2b00 cmp r3, #0 + 803b774: d1e5 bne.n 803b742 /* At end of Tx process, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 803b736: 687b ldr r3, [r7, #4] - 803b738: 2220 movs r2, #32 - 803b73a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 -} - 803b73e: bf00 nop - 803b740: 373c adds r7, #60 ; 0x3c - 803b742: 46bd mov sp, r7 - 803b744: f85d 7b04 ldr.w r7, [sp], #4 - 803b748: 4770 bx lr + 803b776: 687b ldr r3, [r7, #4] + 803b778: 2220 movs r2, #32 + 803b77a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 +} + 803b77e: bf00 nop + 803b780: 373c adds r7, #60 ; 0x3c + 803b782: 46bd mov sp, r7 + 803b784: f85d 7b04 ldr.w r7, [sp], #4 + 803b788: 4770 bx lr ... -0803b74c : +0803b78c : * @brief End ongoing Rx transfer on UART peripheral (following error detection or Reception completion). * @param huart UART handle. * @retval None */ static void UART_EndRxTransfer(UART_HandleTypeDef *huart) { - 803b74c: b480 push {r7} - 803b74e: b095 sub sp, #84 ; 0x54 - 803b750: af00 add r7, sp, #0 - 803b752: 6078 str r0, [r7, #4] + 803b78c: b480 push {r7} + 803b78e: b095 sub sp, #84 ; 0x54 + 803b790: af00 add r7, sp, #0 + 803b792: 6078 str r0, [r7, #4] /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 803b754: 687b ldr r3, [r7, #4] - 803b756: 681b ldr r3, [r3, #0] - 803b758: 637b str r3, [r7, #52] ; 0x34 + 803b794: 687b ldr r3, [r7, #4] + 803b796: 681b ldr r3, [r3, #0] + 803b798: 637b str r3, [r7, #52] ; 0x34 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b75a: 6b7b ldr r3, [r7, #52] ; 0x34 - 803b75c: e853 3f00 ldrex r3, [r3] - 803b760: 633b str r3, [r7, #48] ; 0x30 + 803b79a: 6b7b ldr r3, [r7, #52] ; 0x34 + 803b79c: e853 3f00 ldrex r3, [r3] + 803b7a0: 633b str r3, [r7, #48] ; 0x30 return(result); - 803b762: 6b3b ldr r3, [r7, #48] ; 0x30 - 803b764: f423 7390 bic.w r3, r3, #288 ; 0x120 - 803b768: 64fb str r3, [r7, #76] ; 0x4c - 803b76a: 687b ldr r3, [r7, #4] - 803b76c: 681b ldr r3, [r3, #0] - 803b76e: 461a mov r2, r3 - 803b770: 6cfb ldr r3, [r7, #76] ; 0x4c - 803b772: 643b str r3, [r7, #64] ; 0x40 - 803b774: 63fa str r2, [r7, #60] ; 0x3c + 803b7a2: 6b3b ldr r3, [r7, #48] ; 0x30 + 803b7a4: f423 7390 bic.w r3, r3, #288 ; 0x120 + 803b7a8: 64fb str r3, [r7, #76] ; 0x4c + 803b7aa: 687b ldr r3, [r7, #4] + 803b7ac: 681b ldr r3, [r3, #0] + 803b7ae: 461a mov r2, r3 + 803b7b0: 6cfb ldr r3, [r7, #76] ; 0x4c + 803b7b2: 643b str r3, [r7, #64] ; 0x40 + 803b7b4: 63fa str r2, [r7, #60] ; 0x3c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b776: 6bf9 ldr r1, [r7, #60] ; 0x3c - 803b778: 6c3a ldr r2, [r7, #64] ; 0x40 - 803b77a: e841 2300 strex r3, r2, [r1] - 803b77e: 63bb str r3, [r7, #56] ; 0x38 + 803b7b6: 6bf9 ldr r1, [r7, #60] ; 0x3c + 803b7b8: 6c3a ldr r2, [r7, #64] ; 0x40 + 803b7ba: e841 2300 strex r3, r2, [r1] + 803b7be: 63bb str r3, [r7, #56] ; 0x38 return(result); - 803b780: 6bbb ldr r3, [r7, #56] ; 0x38 - 803b782: 2b00 cmp r3, #0 - 803b784: d1e6 bne.n 803b754 + 803b7c0: 6bbb ldr r3, [r7, #56] ; 0x38 + 803b7c2: 2b00 cmp r3, #0 + 803b7c4: d1e6 bne.n 803b794 ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 803b786: 687b ldr r3, [r7, #4] - 803b788: 681b ldr r3, [r3, #0] - 803b78a: 3308 adds r3, #8 - 803b78c: 623b str r3, [r7, #32] + 803b7c6: 687b ldr r3, [r7, #4] + 803b7c8: 681b ldr r3, [r3, #0] + 803b7ca: 3308 adds r3, #8 + 803b7cc: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b78e: 6a3b ldr r3, [r7, #32] - 803b790: e853 3f00 ldrex r3, [r3] - 803b794: 61fb str r3, [r7, #28] + 803b7ce: 6a3b ldr r3, [r7, #32] + 803b7d0: e853 3f00 ldrex r3, [r3] + 803b7d4: 61fb str r3, [r7, #28] return(result); - 803b796: 69fa ldr r2, [r7, #28] - 803b798: 4b1e ldr r3, [pc, #120] ; (803b814 ) - 803b79a: 4013 ands r3, r2 - 803b79c: 64bb str r3, [r7, #72] ; 0x48 - 803b79e: 687b ldr r3, [r7, #4] - 803b7a0: 681b ldr r3, [r3, #0] - 803b7a2: 3308 adds r3, #8 - 803b7a4: 6cba ldr r2, [r7, #72] ; 0x48 - 803b7a6: 62fa str r2, [r7, #44] ; 0x2c - 803b7a8: 62bb str r3, [r7, #40] ; 0x28 + 803b7d6: 69fa ldr r2, [r7, #28] + 803b7d8: 4b1e ldr r3, [pc, #120] ; (803b854 ) + 803b7da: 4013 ands r3, r2 + 803b7dc: 64bb str r3, [r7, #72] ; 0x48 + 803b7de: 687b ldr r3, [r7, #4] + 803b7e0: 681b ldr r3, [r3, #0] + 803b7e2: 3308 adds r3, #8 + 803b7e4: 6cba ldr r2, [r7, #72] ; 0x48 + 803b7e6: 62fa str r2, [r7, #44] ; 0x2c + 803b7e8: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b7aa: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803b7ac: 6afa ldr r2, [r7, #44] ; 0x2c - 803b7ae: e841 2300 strex r3, r2, [r1] - 803b7b2: 627b str r3, [r7, #36] ; 0x24 + 803b7ea: 6ab9 ldr r1, [r7, #40] ; 0x28 + 803b7ec: 6afa ldr r2, [r7, #44] ; 0x2c + 803b7ee: e841 2300 strex r3, r2, [r1] + 803b7f2: 627b str r3, [r7, #36] ; 0x24 return(result); - 803b7b4: 6a7b ldr r3, [r7, #36] ; 0x24 - 803b7b6: 2b00 cmp r3, #0 - 803b7b8: d1e5 bne.n 803b786 + 803b7f4: 6a7b ldr r3, [r7, #36] ; 0x24 + 803b7f6: 2b00 cmp r3, #0 + 803b7f8: d1e5 bne.n 803b7c6 /* In case of reception waiting for IDLE event, disable also the IDLE IE interrupt source */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803b7ba: 687b ldr r3, [r7, #4] - 803b7bc: 6edb ldr r3, [r3, #108] ; 0x6c - 803b7be: 2b01 cmp r3, #1 - 803b7c0: d118 bne.n 803b7f4 + 803b7fa: 687b ldr r3, [r7, #4] + 803b7fc: 6edb ldr r3, [r3, #108] ; 0x6c + 803b7fe: 2b01 cmp r3, #1 + 803b800: d118 bne.n 803b834 { ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803b7c2: 687b ldr r3, [r7, #4] - 803b7c4: 681b ldr r3, [r3, #0] - 803b7c6: 60fb str r3, [r7, #12] + 803b802: 687b ldr r3, [r7, #4] + 803b804: 681b ldr r3, [r3, #0] + 803b806: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b7c8: 68fb ldr r3, [r7, #12] - 803b7ca: e853 3f00 ldrex r3, [r3] - 803b7ce: 60bb str r3, [r7, #8] + 803b808: 68fb ldr r3, [r7, #12] + 803b80a: e853 3f00 ldrex r3, [r3] + 803b80e: 60bb str r3, [r7, #8] return(result); - 803b7d0: 68bb ldr r3, [r7, #8] - 803b7d2: f023 0310 bic.w r3, r3, #16 - 803b7d6: 647b str r3, [r7, #68] ; 0x44 - 803b7d8: 687b ldr r3, [r7, #4] - 803b7da: 681b ldr r3, [r3, #0] - 803b7dc: 461a mov r2, r3 - 803b7de: 6c7b ldr r3, [r7, #68] ; 0x44 - 803b7e0: 61bb str r3, [r7, #24] - 803b7e2: 617a str r2, [r7, #20] + 803b810: 68bb ldr r3, [r7, #8] + 803b812: f023 0310 bic.w r3, r3, #16 + 803b816: 647b str r3, [r7, #68] ; 0x44 + 803b818: 687b ldr r3, [r7, #4] + 803b81a: 681b ldr r3, [r3, #0] + 803b81c: 461a mov r2, r3 + 803b81e: 6c7b ldr r3, [r7, #68] ; 0x44 + 803b820: 61bb str r3, [r7, #24] + 803b822: 617a str r2, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b7e4: 6979 ldr r1, [r7, #20] - 803b7e6: 69ba ldr r2, [r7, #24] - 803b7e8: e841 2300 strex r3, r2, [r1] - 803b7ec: 613b str r3, [r7, #16] + 803b824: 6979 ldr r1, [r7, #20] + 803b826: 69ba ldr r2, [r7, #24] + 803b828: e841 2300 strex r3, r2, [r1] + 803b82c: 613b str r3, [r7, #16] return(result); - 803b7ee: 693b ldr r3, [r7, #16] - 803b7f0: 2b00 cmp r3, #0 - 803b7f2: d1e6 bne.n 803b7c2 + 803b82e: 693b ldr r3, [r7, #16] + 803b830: 2b00 cmp r3, #0 + 803b832: d1e6 bne.n 803b802 } /* At end of Rx process, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803b7f4: 687b ldr r3, [r7, #4] - 803b7f6: 2220 movs r2, #32 - 803b7f8: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803b834: 687b ldr r3, [r7, #4] + 803b836: 2220 movs r2, #32 + 803b838: f8c3 2088 str.w r2, [r3, #136] ; 0x88 huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803b7fc: 687b ldr r3, [r7, #4] - 803b7fe: 2200 movs r2, #0 - 803b800: 66da str r2, [r3, #108] ; 0x6c + 803b83c: 687b ldr r3, [r7, #4] + 803b83e: 2200 movs r2, #0 + 803b840: 66da str r2, [r3, #108] ; 0x6c /* Reset RxIsr function pointer */ huart->RxISR = NULL; - 803b802: 687b ldr r3, [r7, #4] - 803b804: 2200 movs r2, #0 - 803b806: 671a str r2, [r3, #112] ; 0x70 -} - 803b808: bf00 nop - 803b80a: 3754 adds r7, #84 ; 0x54 - 803b80c: 46bd mov sp, r7 - 803b80e: f85d 7b04 ldr.w r7, [sp], #4 - 803b812: 4770 bx lr - 803b814: effffffe .word 0xeffffffe - -0803b818 : + 803b842: 687b ldr r3, [r7, #4] + 803b844: 2200 movs r2, #0 + 803b846: 671a str r2, [r3, #112] ; 0x70 +} + 803b848: bf00 nop + 803b84a: 3754 adds r7, #84 ; 0x54 + 803b84c: 46bd mov sp, r7 + 803b84e: f85d 7b04 ldr.w r7, [sp], #4 + 803b852: 4770 bx lr + 803b854: effffffe .word 0xeffffffe + +0803b858 : * @brief DMA UART transmit process complete callback. * @param hdma DMA handle. * @retval None */ static void UART_DMATransmitCplt(DMA_HandleTypeDef *hdma) { - 803b818: b580 push {r7, lr} - 803b81a: b090 sub sp, #64 ; 0x40 - 803b81c: af00 add r7, sp, #0 - 803b81e: 6078 str r0, [r7, #4] + 803b858: b580 push {r7, lr} + 803b85a: b090 sub sp, #64 ; 0x40 + 803b85c: af00 add r7, sp, #0 + 803b85e: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); - 803b820: 687b ldr r3, [r7, #4] - 803b822: 6b9b ldr r3, [r3, #56] ; 0x38 - 803b824: 63fb str r3, [r7, #60] ; 0x3c + 803b860: 687b ldr r3, [r7, #4] + 803b862: 6b9b ldr r3, [r3, #56] ; 0x38 + 803b864: 63fb str r3, [r7, #60] ; 0x3c /* DMA Normal mode */ if (hdma->Init.Mode != DMA_CIRCULAR) - 803b826: 687b ldr r3, [r7, #4] - 803b828: 69db ldr r3, [r3, #28] - 803b82a: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 803b82e: d037 beq.n 803b8a0 + 803b866: 687b ldr r3, [r7, #4] + 803b868: 69db ldr r3, [r3, #28] + 803b86a: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 803b86e: d037 beq.n 803b8e0 { huart->TxXferCount = 0U; - 803b830: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b832: 2200 movs r2, #0 - 803b834: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 803b870: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b872: 2200 movs r2, #0 + 803b874: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 /* Disable the DMA transfer for transmit request by resetting the DMAT bit in the UART CR3 register */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT); - 803b838: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b83a: 681b ldr r3, [r3, #0] - 803b83c: 3308 adds r3, #8 - 803b83e: 627b str r3, [r7, #36] ; 0x24 + 803b878: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b87a: 681b ldr r3, [r3, #0] + 803b87c: 3308 adds r3, #8 + 803b87e: 627b str r3, [r7, #36] ; 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b840: 6a7b ldr r3, [r7, #36] ; 0x24 - 803b842: e853 3f00 ldrex r3, [r3] - 803b846: 623b str r3, [r7, #32] + 803b880: 6a7b ldr r3, [r7, #36] ; 0x24 + 803b882: e853 3f00 ldrex r3, [r3] + 803b886: 623b str r3, [r7, #32] return(result); - 803b848: 6a3b ldr r3, [r7, #32] - 803b84a: f023 0380 bic.w r3, r3, #128 ; 0x80 - 803b84e: 63bb str r3, [r7, #56] ; 0x38 - 803b850: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b852: 681b ldr r3, [r3, #0] - 803b854: 3308 adds r3, #8 - 803b856: 6bba ldr r2, [r7, #56] ; 0x38 - 803b858: 633a str r2, [r7, #48] ; 0x30 - 803b85a: 62fb str r3, [r7, #44] ; 0x2c + 803b888: 6a3b ldr r3, [r7, #32] + 803b88a: f023 0380 bic.w r3, r3, #128 ; 0x80 + 803b88e: 63bb str r3, [r7, #56] ; 0x38 + 803b890: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b892: 681b ldr r3, [r3, #0] + 803b894: 3308 adds r3, #8 + 803b896: 6bba ldr r2, [r7, #56] ; 0x38 + 803b898: 633a str r2, [r7, #48] ; 0x30 + 803b89a: 62fb str r3, [r7, #44] ; 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b85c: 6af9 ldr r1, [r7, #44] ; 0x2c - 803b85e: 6b3a ldr r2, [r7, #48] ; 0x30 - 803b860: e841 2300 strex r3, r2, [r1] - 803b864: 62bb str r3, [r7, #40] ; 0x28 + 803b89c: 6af9 ldr r1, [r7, #44] ; 0x2c + 803b89e: 6b3a ldr r2, [r7, #48] ; 0x30 + 803b8a0: e841 2300 strex r3, r2, [r1] + 803b8a4: 62bb str r3, [r7, #40] ; 0x28 return(result); - 803b866: 6abb ldr r3, [r7, #40] ; 0x28 - 803b868: 2b00 cmp r3, #0 - 803b86a: d1e5 bne.n 803b838 + 803b8a6: 6abb ldr r3, [r7, #40] ; 0x28 + 803b8a8: 2b00 cmp r3, #0 + 803b8aa: d1e5 bne.n 803b878 /* Enable the UART Transmit Complete Interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_TCIE); - 803b86c: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b86e: 681b ldr r3, [r3, #0] - 803b870: 613b str r3, [r7, #16] + 803b8ac: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b8ae: 681b ldr r3, [r3, #0] + 803b8b0: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b872: 693b ldr r3, [r7, #16] - 803b874: e853 3f00 ldrex r3, [r3] - 803b878: 60fb str r3, [r7, #12] + 803b8b2: 693b ldr r3, [r7, #16] + 803b8b4: e853 3f00 ldrex r3, [r3] + 803b8b8: 60fb str r3, [r7, #12] return(result); - 803b87a: 68fb ldr r3, [r7, #12] - 803b87c: f043 0340 orr.w r3, r3, #64 ; 0x40 - 803b880: 637b str r3, [r7, #52] ; 0x34 - 803b882: 6bfb ldr r3, [r7, #60] ; 0x3c - 803b884: 681b ldr r3, [r3, #0] - 803b886: 461a mov r2, r3 - 803b888: 6b7b ldr r3, [r7, #52] ; 0x34 - 803b88a: 61fb str r3, [r7, #28] - 803b88c: 61ba str r2, [r7, #24] + 803b8ba: 68fb ldr r3, [r7, #12] + 803b8bc: f043 0340 orr.w r3, r3, #64 ; 0x40 + 803b8c0: 637b str r3, [r7, #52] ; 0x34 + 803b8c2: 6bfb ldr r3, [r7, #60] ; 0x3c + 803b8c4: 681b ldr r3, [r3, #0] + 803b8c6: 461a mov r2, r3 + 803b8c8: 6b7b ldr r3, [r7, #52] ; 0x34 + 803b8ca: 61fb str r3, [r7, #28] + 803b8cc: 61ba str r2, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b88e: 69b9 ldr r1, [r7, #24] - 803b890: 69fa ldr r2, [r7, #28] - 803b892: e841 2300 strex r3, r2, [r1] - 803b896: 617b str r3, [r7, #20] + 803b8ce: 69b9 ldr r1, [r7, #24] + 803b8d0: 69fa ldr r2, [r7, #28] + 803b8d2: e841 2300 strex r3, r2, [r1] + 803b8d6: 617b str r3, [r7, #20] return(result); - 803b898: 697b ldr r3, [r7, #20] - 803b89a: 2b00 cmp r3, #0 - 803b89c: d1e6 bne.n 803b86c + 803b8d8: 697b ldr r3, [r7, #20] + 803b8da: 2b00 cmp r3, #0 + 803b8dc: d1e6 bne.n 803b8ac #else /*Call legacy weak Tx complete callback*/ HAL_UART_TxCpltCallback(huart); #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } } - 803b89e: e002 b.n 803b8a6 + 803b8de: e002 b.n 803b8e6 HAL_UART_TxCpltCallback(huart); - 803b8a0: 6bf8 ldr r0, [r7, #60] ; 0x3c - 803b8a2: f7e6 f9d7 bl 8021c54 + 803b8e0: 6bf8 ldr r0, [r7, #60] ; 0x3c + 803b8e2: f7e6 f9b7 bl 8021c54 } - 803b8a6: bf00 nop - 803b8a8: 3740 adds r7, #64 ; 0x40 - 803b8aa: 46bd mov sp, r7 - 803b8ac: bd80 pop {r7, pc} + 803b8e6: bf00 nop + 803b8e8: 3740 adds r7, #64 ; 0x40 + 803b8ea: 46bd mov sp, r7 + 803b8ec: bd80 pop {r7, pc} -0803b8ae : +0803b8ee : * @brief DMA UART transmit process half complete callback. * @param hdma DMA handle. * @retval None */ static void UART_DMATxHalfCplt(DMA_HandleTypeDef *hdma) { - 803b8ae: b580 push {r7, lr} - 803b8b0: b084 sub sp, #16 - 803b8b2: af00 add r7, sp, #0 - 803b8b4: 6078 str r0, [r7, #4] + 803b8ee: b580 push {r7, lr} + 803b8f0: b084 sub sp, #16 + 803b8f2: af00 add r7, sp, #0 + 803b8f4: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); - 803b8b6: 687b ldr r3, [r7, #4] - 803b8b8: 6b9b ldr r3, [r3, #56] ; 0x38 - 803b8ba: 60fb str r3, [r7, #12] + 803b8f6: 687b ldr r3, [r7, #4] + 803b8f8: 6b9b ldr r3, [r3, #56] ; 0x38 + 803b8fa: 60fb str r3, [r7, #12] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Tx Half complete callback*/ huart->TxHalfCpltCallback(huart); #else /*Call legacy weak Tx Half complete callback*/ HAL_UART_TxHalfCpltCallback(huart); - 803b8bc: 68f8 ldr r0, [r7, #12] - 803b8be: f7fe fe9b bl 803a5f8 + 803b8fc: 68f8 ldr r0, [r7, #12] + 803b8fe: f7fe fe9b bl 803a638 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 803b8c2: bf00 nop - 803b8c4: 3710 adds r7, #16 - 803b8c6: 46bd mov sp, r7 - 803b8c8: bd80 pop {r7, pc} + 803b902: bf00 nop + 803b904: 3710 adds r7, #16 + 803b906: 46bd mov sp, r7 + 803b908: bd80 pop {r7, pc} -0803b8ca : +0803b90a : * @brief DMA UART communication error callback. * @param hdma DMA handle. * @retval None */ static void UART_DMAError(DMA_HandleTypeDef *hdma) { - 803b8ca: b580 push {r7, lr} - 803b8cc: b086 sub sp, #24 - 803b8ce: af00 add r7, sp, #0 - 803b8d0: 6078 str r0, [r7, #4] + 803b90a: b580 push {r7, lr} + 803b90c: b086 sub sp, #24 + 803b90e: af00 add r7, sp, #0 + 803b910: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); - 803b8d2: 687b ldr r3, [r7, #4] - 803b8d4: 6b9b ldr r3, [r3, #56] ; 0x38 - 803b8d6: 617b str r3, [r7, #20] + 803b912: 687b ldr r3, [r7, #4] + 803b914: 6b9b ldr r3, [r3, #56] ; 0x38 + 803b916: 617b str r3, [r7, #20] const HAL_UART_StateTypeDef gstate = huart->gState; - 803b8d8: 697b ldr r3, [r7, #20] - 803b8da: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 803b8de: 613b str r3, [r7, #16] + 803b918: 697b ldr r3, [r7, #20] + 803b91a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803b91e: 613b str r3, [r7, #16] const HAL_UART_StateTypeDef rxstate = huart->RxState; - 803b8e0: 697b ldr r3, [r7, #20] - 803b8e2: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803b8e6: 60fb str r3, [r7, #12] + 803b920: 697b ldr r3, [r7, #20] + 803b922: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803b926: 60fb str r3, [r7, #12] /* Stop UART DMA Tx request if ongoing */ if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) && - 803b8e8: 697b ldr r3, [r7, #20] - 803b8ea: 681b ldr r3, [r3, #0] - 803b8ec: 689b ldr r3, [r3, #8] - 803b8ee: f003 0380 and.w r3, r3, #128 ; 0x80 - 803b8f2: 2b80 cmp r3, #128 ; 0x80 - 803b8f4: d109 bne.n 803b90a - 803b8f6: 693b ldr r3, [r7, #16] - 803b8f8: 2b21 cmp r3, #33 ; 0x21 - 803b8fa: d106 bne.n 803b90a + 803b928: 697b ldr r3, [r7, #20] + 803b92a: 681b ldr r3, [r3, #0] + 803b92c: 689b ldr r3, [r3, #8] + 803b92e: f003 0380 and.w r3, r3, #128 ; 0x80 + 803b932: 2b80 cmp r3, #128 ; 0x80 + 803b934: d109 bne.n 803b94a + 803b936: 693b ldr r3, [r7, #16] + 803b938: 2b21 cmp r3, #33 ; 0x21 + 803b93a: d106 bne.n 803b94a (gstate == HAL_UART_STATE_BUSY_TX)) { huart->TxXferCount = 0U; - 803b8fc: 697b ldr r3, [r7, #20] - 803b8fe: 2200 movs r2, #0 - 803b900: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 803b93c: 697b ldr r3, [r7, #20] + 803b93e: 2200 movs r2, #0 + 803b940: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 UART_EndTxTransfer(huart); - 803b904: 6978 ldr r0, [r7, #20] - 803b906: f7ff fedf bl 803b6c8 + 803b944: 6978 ldr r0, [r7, #20] + 803b946: f7ff fedf bl 803b708 } /* Stop UART DMA Rx request if ongoing */ if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) && - 803b90a: 697b ldr r3, [r7, #20] - 803b90c: 681b ldr r3, [r3, #0] - 803b90e: 689b ldr r3, [r3, #8] - 803b910: f003 0340 and.w r3, r3, #64 ; 0x40 - 803b914: 2b40 cmp r3, #64 ; 0x40 - 803b916: d109 bne.n 803b92c - 803b918: 68fb ldr r3, [r7, #12] - 803b91a: 2b22 cmp r3, #34 ; 0x22 - 803b91c: d106 bne.n 803b92c + 803b94a: 697b ldr r3, [r7, #20] + 803b94c: 681b ldr r3, [r3, #0] + 803b94e: 689b ldr r3, [r3, #8] + 803b950: f003 0340 and.w r3, r3, #64 ; 0x40 + 803b954: 2b40 cmp r3, #64 ; 0x40 + 803b956: d109 bne.n 803b96c + 803b958: 68fb ldr r3, [r7, #12] + 803b95a: 2b22 cmp r3, #34 ; 0x22 + 803b95c: d106 bne.n 803b96c (rxstate == HAL_UART_STATE_BUSY_RX)) { huart->RxXferCount = 0U; - 803b91e: 697b ldr r3, [r7, #20] - 803b920: 2200 movs r2, #0 - 803b922: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803b95e: 697b ldr r3, [r7, #20] + 803b960: 2200 movs r2, #0 + 803b962: f8a3 205e strh.w r2, [r3, #94] ; 0x5e UART_EndRxTransfer(huart); - 803b926: 6978 ldr r0, [r7, #20] - 803b928: f7ff ff10 bl 803b74c + 803b966: 6978 ldr r0, [r7, #20] + 803b968: f7ff ff10 bl 803b78c } huart->ErrorCode |= HAL_UART_ERROR_DMA; - 803b92c: 697b ldr r3, [r7, #20] - 803b92e: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803b932: f043 0210 orr.w r2, r3, #16 - 803b936: 697b ldr r3, [r7, #20] - 803b938: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803b96c: 697b ldr r3, [r7, #20] + 803b96e: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803b972: f043 0210 orr.w r2, r3, #16 + 803b976: 697b ldr r3, [r7, #20] + 803b978: f8c3 208c str.w r2, [r3, #140] ; 0x8c #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803b93c: 6978 ldr r0, [r7, #20] - 803b93e: f7fe fe65 bl 803a60c + 803b97c: 6978 ldr r0, [r7, #20] + 803b97e: f7fe fe65 bl 803a64c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 803b942: bf00 nop - 803b944: 3718 adds r7, #24 - 803b946: 46bd mov sp, r7 - 803b948: bd80 pop {r7, pc} + 803b982: bf00 nop + 803b984: 3718 adds r7, #24 + 803b986: 46bd mov sp, r7 + 803b988: bd80 pop {r7, pc} -0803b94a : +0803b98a : * (To be called at end of DMA Abort procedure following error occurrence). * @param hdma DMA handle. * @retval None */ static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma) { - 803b94a: b580 push {r7, lr} - 803b94c: b084 sub sp, #16 - 803b94e: af00 add r7, sp, #0 - 803b950: 6078 str r0, [r7, #4] + 803b98a: b580 push {r7, lr} + 803b98c: b084 sub sp, #16 + 803b98e: af00 add r7, sp, #0 + 803b990: 6078 str r0, [r7, #4] UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent); - 803b952: 687b ldr r3, [r7, #4] - 803b954: 6b9b ldr r3, [r3, #56] ; 0x38 - 803b956: 60fb str r3, [r7, #12] + 803b992: 687b ldr r3, [r7, #4] + 803b994: 6b9b ldr r3, [r3, #56] ; 0x38 + 803b996: 60fb str r3, [r7, #12] huart->RxXferCount = 0U; - 803b958: 68fb ldr r3, [r7, #12] - 803b95a: 2200 movs r2, #0 - 803b95c: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803b998: 68fb ldr r3, [r7, #12] + 803b99a: 2200 movs r2, #0 + 803b99c: f8a3 205e strh.w r2, [r3, #94] ; 0x5e huart->TxXferCount = 0U; - 803b960: 68fb ldr r3, [r7, #12] - 803b962: 2200 movs r2, #0 - 803b964: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 + 803b9a0: 68fb ldr r3, [r7, #12] + 803b9a2: 2200 movs r2, #0 + 803b9a4: f8a3 2056 strh.w r2, [r3, #86] ; 0x56 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803b968: 68f8 ldr r0, [r7, #12] - 803b96a: f7fe fe4f bl 803a60c + 803b9a8: 68f8 ldr r0, [r7, #12] + 803b9aa: f7fe fe4f bl 803a64c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 803b96e: bf00 nop - 803b970: 3710 adds r7, #16 - 803b972: 46bd mov sp, r7 - 803b974: bd80 pop {r7, pc} + 803b9ae: bf00 nop + 803b9b0: 3710 adds r7, #16 + 803b9b2: 46bd mov sp, r7 + 803b9b4: bd80 pop {r7, pc} -0803b976 : +0803b9b6 : * @param huart pointer to a UART_HandleTypeDef structure that contains * the configuration information for the specified UART module. * @retval None */ static void UART_EndTransmit_IT(UART_HandleTypeDef *huart) { - 803b976: b580 push {r7, lr} - 803b978: b088 sub sp, #32 - 803b97a: af00 add r7, sp, #0 - 803b97c: 6078 str r0, [r7, #4] + 803b9b6: b580 push {r7, lr} + 803b9b8: b088 sub sp, #32 + 803b9ba: af00 add r7, sp, #0 + 803b9bc: 6078 str r0, [r7, #4] /* Disable the UART Transmit Complete Interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE); - 803b97e: 687b ldr r3, [r7, #4] - 803b980: 681b ldr r3, [r3, #0] - 803b982: 60fb str r3, [r7, #12] + 803b9be: 687b ldr r3, [r7, #4] + 803b9c0: 681b ldr r3, [r3, #0] + 803b9c2: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803b984: 68fb ldr r3, [r7, #12] - 803b986: e853 3f00 ldrex r3, [r3] - 803b98a: 60bb str r3, [r7, #8] + 803b9c4: 68fb ldr r3, [r7, #12] + 803b9c6: e853 3f00 ldrex r3, [r3] + 803b9ca: 60bb str r3, [r7, #8] return(result); - 803b98c: 68bb ldr r3, [r7, #8] - 803b98e: f023 0340 bic.w r3, r3, #64 ; 0x40 - 803b992: 61fb str r3, [r7, #28] - 803b994: 687b ldr r3, [r7, #4] - 803b996: 681b ldr r3, [r3, #0] - 803b998: 461a mov r2, r3 - 803b99a: 69fb ldr r3, [r7, #28] - 803b99c: 61bb str r3, [r7, #24] - 803b99e: 617a str r2, [r7, #20] + 803b9cc: 68bb ldr r3, [r7, #8] + 803b9ce: f023 0340 bic.w r3, r3, #64 ; 0x40 + 803b9d2: 61fb str r3, [r7, #28] + 803b9d4: 687b ldr r3, [r7, #4] + 803b9d6: 681b ldr r3, [r3, #0] + 803b9d8: 461a mov r2, r3 + 803b9da: 69fb ldr r3, [r7, #28] + 803b9dc: 61bb str r3, [r7, #24] + 803b9de: 617a str r2, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803b9a0: 6979 ldr r1, [r7, #20] - 803b9a2: 69ba ldr r2, [r7, #24] - 803b9a4: e841 2300 strex r3, r2, [r1] - 803b9a8: 613b str r3, [r7, #16] + 803b9e0: 6979 ldr r1, [r7, #20] + 803b9e2: 69ba ldr r2, [r7, #24] + 803b9e4: e841 2300 strex r3, r2, [r1] + 803b9e8: 613b str r3, [r7, #16] return(result); - 803b9aa: 693b ldr r3, [r7, #16] - 803b9ac: 2b00 cmp r3, #0 - 803b9ae: d1e6 bne.n 803b97e + 803b9ea: 693b ldr r3, [r7, #16] + 803b9ec: 2b00 cmp r3, #0 + 803b9ee: d1e6 bne.n 803b9be /* Tx process is ended, restore huart->gState to Ready */ huart->gState = HAL_UART_STATE_READY; - 803b9b0: 687b ldr r3, [r7, #4] - 803b9b2: 2220 movs r2, #32 - 803b9b4: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803b9f0: 687b ldr r3, [r7, #4] + 803b9f2: 2220 movs r2, #32 + 803b9f4: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Cleat TxISR function pointer */ huart->TxISR = NULL; - 803b9b8: 687b ldr r3, [r7, #4] - 803b9ba: 2200 movs r2, #0 - 803b9bc: 675a str r2, [r3, #116] ; 0x74 + 803b9f8: 687b ldr r3, [r7, #4] + 803b9fa: 2200 movs r2, #0 + 803b9fc: 675a str r2, [r3, #116] ; 0x74 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Tx complete callback*/ huart->TxCpltCallback(huart); #else /*Call legacy weak Tx complete callback*/ HAL_UART_TxCpltCallback(huart); - 803b9be: 6878 ldr r0, [r7, #4] - 803b9c0: f7e6 f948 bl 8021c54 + 803b9fe: 6878 ldr r0, [r7, #4] + 803ba00: f7e6 f928 bl 8021c54 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ } - 803b9c4: bf00 nop - 803b9c6: 3720 adds r7, #32 - 803b9c8: 46bd mov sp, r7 - 803b9ca: bd80 pop {r7, pc} + 803ba04: bf00 nop + 803ba06: 3720 adds r7, #32 + 803ba08: 46bd mov sp, r7 + 803ba0a: bd80 pop {r7, pc} -0803b9cc : +0803ba0c : * @brief RX interrupt handler for 7 or 8 bits data word length . * @param huart UART handle. * @retval None */ static void UART_RxISR_8BIT(UART_HandleTypeDef *huart) { - 803b9cc: b580 push {r7, lr} - 803b9ce: b096 sub sp, #88 ; 0x58 - 803b9d0: af00 add r7, sp, #0 - 803b9d2: 6078 str r0, [r7, #4] + 803ba0c: b580 push {r7, lr} + 803ba0e: b096 sub sp, #88 ; 0x58 + 803ba10: af00 add r7, sp, #0 + 803ba12: 6078 str r0, [r7, #4] uint16_t uhMask = huart->Mask; - 803b9d4: 687b ldr r3, [r7, #4] - 803b9d6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803b9da: f8a7 3056 strh.w r3, [r7, #86] ; 0x56 + 803ba14: 687b ldr r3, [r7, #4] + 803ba16: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803ba1a: f8a7 3056 strh.w r3, [r7, #86] ; 0x56 uint16_t uhdata; /* Check that a Rx process is ongoing */ if (huart->RxState == HAL_UART_STATE_BUSY_RX) - 803b9de: 687b ldr r3, [r7, #4] - 803b9e0: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803b9e4: 2b22 cmp r3, #34 ; 0x22 - 803b9e6: f040 8095 bne.w 803bb14 + 803ba1e: 687b ldr r3, [r7, #4] + 803ba20: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803ba24: 2b22 cmp r3, #34 ; 0x22 + 803ba26: f040 8095 bne.w 803bb54 { uhdata = (uint16_t) READ_REG(huart->Instance->RDR); - 803b9ea: 687b ldr r3, [r7, #4] - 803b9ec: 681b ldr r3, [r3, #0] - 803b9ee: 6a5b ldr r3, [r3, #36] ; 0x24 - 803b9f0: f8a7 3054 strh.w r3, [r7, #84] ; 0x54 + 803ba2a: 687b ldr r3, [r7, #4] + 803ba2c: 681b ldr r3, [r3, #0] + 803ba2e: 6a5b ldr r3, [r3, #36] ; 0x24 + 803ba30: f8a7 3054 strh.w r3, [r7, #84] ; 0x54 *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); - 803b9f4: f8b7 3054 ldrh.w r3, [r7, #84] ; 0x54 - 803b9f8: b2d9 uxtb r1, r3 - 803b9fa: f8b7 3056 ldrh.w r3, [r7, #86] ; 0x56 - 803b9fe: b2da uxtb r2, r3 - 803ba00: 687b ldr r3, [r7, #4] - 803ba02: 6d9b ldr r3, [r3, #88] ; 0x58 - 803ba04: 400a ands r2, r1 - 803ba06: b2d2 uxtb r2, r2 - 803ba08: 701a strb r2, [r3, #0] + 803ba34: f8b7 3054 ldrh.w r3, [r7, #84] ; 0x54 + 803ba38: b2d9 uxtb r1, r3 + 803ba3a: f8b7 3056 ldrh.w r3, [r7, #86] ; 0x56 + 803ba3e: b2da uxtb r2, r3 + 803ba40: 687b ldr r3, [r7, #4] + 803ba42: 6d9b ldr r3, [r3, #88] ; 0x58 + 803ba44: 400a ands r2, r1 + 803ba46: b2d2 uxtb r2, r2 + 803ba48: 701a strb r2, [r3, #0] huart->pRxBuffPtr++; - 803ba0a: 687b ldr r3, [r7, #4] - 803ba0c: 6d9b ldr r3, [r3, #88] ; 0x58 - 803ba0e: 1c5a adds r2, r3, #1 - 803ba10: 687b ldr r3, [r7, #4] - 803ba12: 659a str r2, [r3, #88] ; 0x58 + 803ba4a: 687b ldr r3, [r7, #4] + 803ba4c: 6d9b ldr r3, [r3, #88] ; 0x58 + 803ba4e: 1c5a adds r2, r3, #1 + 803ba50: 687b ldr r3, [r7, #4] + 803ba52: 659a str r2, [r3, #88] ; 0x58 huart->RxXferCount--; - 803ba14: 687b ldr r3, [r7, #4] - 803ba16: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803ba1a: b29b uxth r3, r3 - 803ba1c: 3b01 subs r3, #1 - 803ba1e: b29a uxth r2, r3 - 803ba20: 687b ldr r3, [r7, #4] - 803ba22: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803ba54: 687b ldr r3, [r7, #4] + 803ba56: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803ba5a: b29b uxth r3, r3 + 803ba5c: 3b01 subs r3, #1 + 803ba5e: b29a uxth r2, r3 + 803ba60: 687b ldr r3, [r7, #4] + 803ba62: f8a3 205e strh.w r2, [r3, #94] ; 0x5e if (huart->RxXferCount == 0U) - 803ba26: 687b ldr r3, [r7, #4] - 803ba28: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803ba2c: b29b uxth r3, r3 - 803ba2e: 2b00 cmp r3, #0 - 803ba30: d178 bne.n 803bb24 + 803ba66: 687b ldr r3, [r7, #4] + 803ba68: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803ba6c: b29b uxth r3, r3 + 803ba6e: 2b00 cmp r3, #0 + 803ba70: d178 bne.n 803bb64 { /* Disable the UART Parity Error Interrupt and RXNE interrupts */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 803ba32: 687b ldr r3, [r7, #4] - 803ba34: 681b ldr r3, [r3, #0] - 803ba36: 63bb str r3, [r7, #56] ; 0x38 + 803ba72: 687b ldr r3, [r7, #4] + 803ba74: 681b ldr r3, [r3, #0] + 803ba76: 63bb str r3, [r7, #56] ; 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803ba38: 6bbb ldr r3, [r7, #56] ; 0x38 - 803ba3a: e853 3f00 ldrex r3, [r3] - 803ba3e: 637b str r3, [r7, #52] ; 0x34 + 803ba78: 6bbb ldr r3, [r7, #56] ; 0x38 + 803ba7a: e853 3f00 ldrex r3, [r3] + 803ba7e: 637b str r3, [r7, #52] ; 0x34 return(result); - 803ba40: 6b7b ldr r3, [r7, #52] ; 0x34 - 803ba42: f423 7390 bic.w r3, r3, #288 ; 0x120 - 803ba46: 653b str r3, [r7, #80] ; 0x50 - 803ba48: 687b ldr r3, [r7, #4] - 803ba4a: 681b ldr r3, [r3, #0] - 803ba4c: 461a mov r2, r3 - 803ba4e: 6d3b ldr r3, [r7, #80] ; 0x50 - 803ba50: 647b str r3, [r7, #68] ; 0x44 - 803ba52: 643a str r2, [r7, #64] ; 0x40 + 803ba80: 6b7b ldr r3, [r7, #52] ; 0x34 + 803ba82: f423 7390 bic.w r3, r3, #288 ; 0x120 + 803ba86: 653b str r3, [r7, #80] ; 0x50 + 803ba88: 687b ldr r3, [r7, #4] + 803ba8a: 681b ldr r3, [r3, #0] + 803ba8c: 461a mov r2, r3 + 803ba8e: 6d3b ldr r3, [r7, #80] ; 0x50 + 803ba90: 647b str r3, [r7, #68] ; 0x44 + 803ba92: 643a str r2, [r7, #64] ; 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803ba54: 6c39 ldr r1, [r7, #64] ; 0x40 - 803ba56: 6c7a ldr r2, [r7, #68] ; 0x44 - 803ba58: e841 2300 strex r3, r2, [r1] - 803ba5c: 63fb str r3, [r7, #60] ; 0x3c + 803ba94: 6c39 ldr r1, [r7, #64] ; 0x40 + 803ba96: 6c7a ldr r2, [r7, #68] ; 0x44 + 803ba98: e841 2300 strex r3, r2, [r1] + 803ba9c: 63fb str r3, [r7, #60] ; 0x3c return(result); - 803ba5e: 6bfb ldr r3, [r7, #60] ; 0x3c - 803ba60: 2b00 cmp r3, #0 - 803ba62: d1e6 bne.n 803ba32 + 803ba9e: 6bfb ldr r3, [r7, #60] ; 0x3c + 803baa0: 2b00 cmp r3, #0 + 803baa2: d1e6 bne.n 803ba72 /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803ba64: 687b ldr r3, [r7, #4] - 803ba66: 681b ldr r3, [r3, #0] - 803ba68: 3308 adds r3, #8 - 803ba6a: 627b str r3, [r7, #36] ; 0x24 + 803baa4: 687b ldr r3, [r7, #4] + 803baa6: 681b ldr r3, [r3, #0] + 803baa8: 3308 adds r3, #8 + 803baaa: 627b str r3, [r7, #36] ; 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803ba6c: 6a7b ldr r3, [r7, #36] ; 0x24 - 803ba6e: e853 3f00 ldrex r3, [r3] - 803ba72: 623b str r3, [r7, #32] + 803baac: 6a7b ldr r3, [r7, #36] ; 0x24 + 803baae: e853 3f00 ldrex r3, [r3] + 803bab2: 623b str r3, [r7, #32] return(result); - 803ba74: 6a3b ldr r3, [r7, #32] - 803ba76: f023 0301 bic.w r3, r3, #1 - 803ba7a: 64fb str r3, [r7, #76] ; 0x4c - 803ba7c: 687b ldr r3, [r7, #4] - 803ba7e: 681b ldr r3, [r3, #0] - 803ba80: 3308 adds r3, #8 - 803ba82: 6cfa ldr r2, [r7, #76] ; 0x4c - 803ba84: 633a str r2, [r7, #48] ; 0x30 - 803ba86: 62fb str r3, [r7, #44] ; 0x2c + 803bab4: 6a3b ldr r3, [r7, #32] + 803bab6: f023 0301 bic.w r3, r3, #1 + 803baba: 64fb str r3, [r7, #76] ; 0x4c + 803babc: 687b ldr r3, [r7, #4] + 803babe: 681b ldr r3, [r3, #0] + 803bac0: 3308 adds r3, #8 + 803bac2: 6cfa ldr r2, [r7, #76] ; 0x4c + 803bac4: 633a str r2, [r7, #48] ; 0x30 + 803bac6: 62fb str r3, [r7, #44] ; 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803ba88: 6af9 ldr r1, [r7, #44] ; 0x2c - 803ba8a: 6b3a ldr r2, [r7, #48] ; 0x30 - 803ba8c: e841 2300 strex r3, r2, [r1] - 803ba90: 62bb str r3, [r7, #40] ; 0x28 + 803bac8: 6af9 ldr r1, [r7, #44] ; 0x2c + 803baca: 6b3a ldr r2, [r7, #48] ; 0x30 + 803bacc: e841 2300 strex r3, r2, [r1] + 803bad0: 62bb str r3, [r7, #40] ; 0x28 return(result); - 803ba92: 6abb ldr r3, [r7, #40] ; 0x28 - 803ba94: 2b00 cmp r3, #0 - 803ba96: d1e5 bne.n 803ba64 + 803bad2: 6abb ldr r3, [r7, #40] ; 0x28 + 803bad4: 2b00 cmp r3, #0 + 803bad6: d1e5 bne.n 803baa4 /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803ba98: 687b ldr r3, [r7, #4] - 803ba9a: 2220 movs r2, #32 - 803ba9c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803bad8: 687b ldr r3, [r7, #4] + 803bada: 2220 movs r2, #32 + 803badc: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Clear RxISR function pointer */ huart->RxISR = NULL; - 803baa0: 687b ldr r3, [r7, #4] - 803baa2: 2200 movs r2, #0 - 803baa4: 671a str r2, [r3, #112] ; 0x70 + 803bae0: 687b ldr r3, [r7, #4] + 803bae2: 2200 movs r2, #0 + 803bae4: 671a str r2, [r3, #112] ; 0x70 /* Check current reception Mode : If Reception till IDLE event has been selected : */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803baa6: 687b ldr r3, [r7, #4] - 803baa8: 6edb ldr r3, [r3, #108] ; 0x6c - 803baaa: 2b01 cmp r3, #1 - 803baac: d12e bne.n 803bb0c + 803bae6: 687b ldr r3, [r7, #4] + 803bae8: 6edb ldr r3, [r3, #108] ; 0x6c + 803baea: 2b01 cmp r3, #1 + 803baec: d12e bne.n 803bb4c { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803baae: 687b ldr r3, [r7, #4] - 803bab0: 2200 movs r2, #0 - 803bab2: 66da str r2, [r3, #108] ; 0x6c + 803baee: 687b ldr r3, [r7, #4] + 803baf0: 2200 movs r2, #0 + 803baf2: 66da str r2, [r3, #108] ; 0x6c /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803bab4: 687b ldr r3, [r7, #4] - 803bab6: 681b ldr r3, [r3, #0] - 803bab8: 613b str r3, [r7, #16] + 803baf4: 687b ldr r3, [r7, #4] + 803baf6: 681b ldr r3, [r3, #0] + 803baf8: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803baba: 693b ldr r3, [r7, #16] - 803babc: e853 3f00 ldrex r3, [r3] - 803bac0: 60fb str r3, [r7, #12] + 803bafa: 693b ldr r3, [r7, #16] + 803bafc: e853 3f00 ldrex r3, [r3] + 803bb00: 60fb str r3, [r7, #12] return(result); - 803bac2: 68fb ldr r3, [r7, #12] - 803bac4: f023 0310 bic.w r3, r3, #16 - 803bac8: 64bb str r3, [r7, #72] ; 0x48 - 803baca: 687b ldr r3, [r7, #4] - 803bacc: 681b ldr r3, [r3, #0] - 803bace: 461a mov r2, r3 - 803bad0: 6cbb ldr r3, [r7, #72] ; 0x48 - 803bad2: 61fb str r3, [r7, #28] - 803bad4: 61ba str r2, [r7, #24] + 803bb02: 68fb ldr r3, [r7, #12] + 803bb04: f023 0310 bic.w r3, r3, #16 + 803bb08: 64bb str r3, [r7, #72] ; 0x48 + 803bb0a: 687b ldr r3, [r7, #4] + 803bb0c: 681b ldr r3, [r3, #0] + 803bb0e: 461a mov r2, r3 + 803bb10: 6cbb ldr r3, [r7, #72] ; 0x48 + 803bb12: 61fb str r3, [r7, #28] + 803bb14: 61ba str r2, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bad6: 69b9 ldr r1, [r7, #24] - 803bad8: 69fa ldr r2, [r7, #28] - 803bada: e841 2300 strex r3, r2, [r1] - 803bade: 617b str r3, [r7, #20] + 803bb16: 69b9 ldr r1, [r7, #24] + 803bb18: 69fa ldr r2, [r7, #28] + 803bb1a: e841 2300 strex r3, r2, [r1] + 803bb1e: 617b str r3, [r7, #20] return(result); - 803bae0: 697b ldr r3, [r7, #20] - 803bae2: 2b00 cmp r3, #0 - 803bae4: d1e6 bne.n 803bab4 + 803bb20: 697b ldr r3, [r7, #20] + 803bb22: 2b00 cmp r3, #0 + 803bb24: d1e6 bne.n 803baf4 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) - 803bae6: 687b ldr r3, [r7, #4] - 803bae8: 681b ldr r3, [r3, #0] - 803baea: 69db ldr r3, [r3, #28] - 803baec: f003 0310 and.w r3, r3, #16 - 803baf0: 2b10 cmp r3, #16 - 803baf2: d103 bne.n 803bafc + 803bb26: 687b ldr r3, [r7, #4] + 803bb28: 681b ldr r3, [r3, #0] + 803bb2a: 69db ldr r3, [r3, #28] + 803bb2c: f003 0310 and.w r3, r3, #16 + 803bb30: 2b10 cmp r3, #16 + 803bb32: d103 bne.n 803bb3c { /* Clear IDLE Flag */ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); - 803baf4: 687b ldr r3, [r7, #4] - 803baf6: 681b ldr r3, [r3, #0] - 803baf8: 2210 movs r2, #16 - 803bafa: 621a str r2, [r3, #32] + 803bb34: 687b ldr r3, [r7, #4] + 803bb36: 681b ldr r3, [r3, #0] + 803bb38: 2210 movs r2, #16 + 803bb3a: 621a str r2, [r3, #32] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); - 803bafc: 687b ldr r3, [r7, #4] - 803bafe: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c - 803bb02: 4619 mov r1, r3 - 803bb04: 6878 ldr r0, [r7, #4] - 803bb06: f7fe fd8b bl 803a620 + 803bb3c: 687b ldr r3, [r7, #4] + 803bb3e: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c + 803bb42: 4619 mov r1, r3 + 803bb44: 6878 ldr r0, [r7, #4] + 803bb46: f7fe fd8b bl 803a660 else { /* Clear RXNE interrupt flag */ __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); } } - 803bb0a: e00b b.n 803bb24 + 803bb4a: e00b b.n 803bb64 HAL_UART_RxCpltCallback(huart); - 803bb0c: 6878 ldr r0, [r7, #4] - 803bb0e: f7e6 f831 bl 8021b74 + 803bb4c: 6878 ldr r0, [r7, #4] + 803bb4e: f7e6 f811 bl 8021b74 } - 803bb12: e007 b.n 803bb24 + 803bb52: e007 b.n 803bb64 __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); - 803bb14: 687b ldr r3, [r7, #4] - 803bb16: 681b ldr r3, [r3, #0] - 803bb18: 699a ldr r2, [r3, #24] - 803bb1a: 687b ldr r3, [r7, #4] - 803bb1c: 681b ldr r3, [r3, #0] - 803bb1e: f042 0208 orr.w r2, r2, #8 - 803bb22: 619a str r2, [r3, #24] -} - 803bb24: bf00 nop - 803bb26: 3758 adds r7, #88 ; 0x58 - 803bb28: 46bd mov sp, r7 - 803bb2a: bd80 pop {r7, pc} - -0803bb2c : + 803bb54: 687b ldr r3, [r7, #4] + 803bb56: 681b ldr r3, [r3, #0] + 803bb58: 699a ldr r2, [r3, #24] + 803bb5a: 687b ldr r3, [r7, #4] + 803bb5c: 681b ldr r3, [r3, #0] + 803bb5e: f042 0208 orr.w r2, r2, #8 + 803bb62: 619a str r2, [r3, #24] +} + 803bb64: bf00 nop + 803bb66: 3758 adds r7, #88 ; 0x58 + 803bb68: 46bd mov sp, r7 + 803bb6a: bd80 pop {r7, pc} + +0803bb6c : * interruptions have been enabled by HAL_UART_Receive_IT() * @param huart UART handle. * @retval None */ static void UART_RxISR_16BIT(UART_HandleTypeDef *huart) { - 803bb2c: b580 push {r7, lr} - 803bb2e: b096 sub sp, #88 ; 0x58 - 803bb30: af00 add r7, sp, #0 - 803bb32: 6078 str r0, [r7, #4] + 803bb6c: b580 push {r7, lr} + 803bb6e: b096 sub sp, #88 ; 0x58 + 803bb70: af00 add r7, sp, #0 + 803bb72: 6078 str r0, [r7, #4] uint16_t *tmp; uint16_t uhMask = huart->Mask; - 803bb34: 687b ldr r3, [r7, #4] - 803bb36: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803bb3a: f8a7 3056 strh.w r3, [r7, #86] ; 0x56 + 803bb74: 687b ldr r3, [r7, #4] + 803bb76: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803bb7a: f8a7 3056 strh.w r3, [r7, #86] ; 0x56 uint16_t uhdata; /* Check that a Rx process is ongoing */ if (huart->RxState == HAL_UART_STATE_BUSY_RX) - 803bb3e: 687b ldr r3, [r7, #4] - 803bb40: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803bb44: 2b22 cmp r3, #34 ; 0x22 - 803bb46: f040 8095 bne.w 803bc74 + 803bb7e: 687b ldr r3, [r7, #4] + 803bb80: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803bb84: 2b22 cmp r3, #34 ; 0x22 + 803bb86: f040 8095 bne.w 803bcb4 { uhdata = (uint16_t) READ_REG(huart->Instance->RDR); - 803bb4a: 687b ldr r3, [r7, #4] - 803bb4c: 681b ldr r3, [r3, #0] - 803bb4e: 6a5b ldr r3, [r3, #36] ; 0x24 - 803bb50: f8a7 3054 strh.w r3, [r7, #84] ; 0x54 + 803bb8a: 687b ldr r3, [r7, #4] + 803bb8c: 681b ldr r3, [r3, #0] + 803bb8e: 6a5b ldr r3, [r3, #36] ; 0x24 + 803bb90: f8a7 3054 strh.w r3, [r7, #84] ; 0x54 tmp = (uint16_t *) huart->pRxBuffPtr ; - 803bb54: 687b ldr r3, [r7, #4] - 803bb56: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bb58: 653b str r3, [r7, #80] ; 0x50 + 803bb94: 687b ldr r3, [r7, #4] + 803bb96: 6d9b ldr r3, [r3, #88] ; 0x58 + 803bb98: 653b str r3, [r7, #80] ; 0x50 *tmp = (uint16_t)(uhdata & uhMask); - 803bb5a: f8b7 2054 ldrh.w r2, [r7, #84] ; 0x54 - 803bb5e: f8b7 3056 ldrh.w r3, [r7, #86] ; 0x56 - 803bb62: 4013 ands r3, r2 - 803bb64: b29a uxth r2, r3 - 803bb66: 6d3b ldr r3, [r7, #80] ; 0x50 - 803bb68: 801a strh r2, [r3, #0] + 803bb9a: f8b7 2054 ldrh.w r2, [r7, #84] ; 0x54 + 803bb9e: f8b7 3056 ldrh.w r3, [r7, #86] ; 0x56 + 803bba2: 4013 ands r3, r2 + 803bba4: b29a uxth r2, r3 + 803bba6: 6d3b ldr r3, [r7, #80] ; 0x50 + 803bba8: 801a strh r2, [r3, #0] huart->pRxBuffPtr += 2U; - 803bb6a: 687b ldr r3, [r7, #4] - 803bb6c: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bb6e: 1c9a adds r2, r3, #2 - 803bb70: 687b ldr r3, [r7, #4] - 803bb72: 659a str r2, [r3, #88] ; 0x58 + 803bbaa: 687b ldr r3, [r7, #4] + 803bbac: 6d9b ldr r3, [r3, #88] ; 0x58 + 803bbae: 1c9a adds r2, r3, #2 + 803bbb0: 687b ldr r3, [r7, #4] + 803bbb2: 659a str r2, [r3, #88] ; 0x58 huart->RxXferCount--; - 803bb74: 687b ldr r3, [r7, #4] - 803bb76: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803bb7a: b29b uxth r3, r3 - 803bb7c: 3b01 subs r3, #1 - 803bb7e: b29a uxth r2, r3 - 803bb80: 687b ldr r3, [r7, #4] - 803bb82: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803bbb4: 687b ldr r3, [r7, #4] + 803bbb6: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803bbba: b29b uxth r3, r3 + 803bbbc: 3b01 subs r3, #1 + 803bbbe: b29a uxth r2, r3 + 803bbc0: 687b ldr r3, [r7, #4] + 803bbc2: f8a3 205e strh.w r2, [r3, #94] ; 0x5e if (huart->RxXferCount == 0U) - 803bb86: 687b ldr r3, [r7, #4] - 803bb88: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803bb8c: b29b uxth r3, r3 - 803bb8e: 2b00 cmp r3, #0 - 803bb90: d178 bne.n 803bc84 + 803bbc6: 687b ldr r3, [r7, #4] + 803bbc8: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803bbcc: b29b uxth r3, r3 + 803bbce: 2b00 cmp r3, #0 + 803bbd0: d178 bne.n 803bcc4 { /* Disable the UART Parity Error Interrupt and RXNE interrupt*/ ATOMIC_CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE_RXFNEIE | USART_CR1_PEIE)); - 803bb92: 687b ldr r3, [r7, #4] - 803bb94: 681b ldr r3, [r3, #0] - 803bb96: 637b str r3, [r7, #52] ; 0x34 + 803bbd2: 687b ldr r3, [r7, #4] + 803bbd4: 681b ldr r3, [r3, #0] + 803bbd6: 637b str r3, [r7, #52] ; 0x34 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803bb98: 6b7b ldr r3, [r7, #52] ; 0x34 - 803bb9a: e853 3f00 ldrex r3, [r3] - 803bb9e: 633b str r3, [r7, #48] ; 0x30 + 803bbd8: 6b7b ldr r3, [r7, #52] ; 0x34 + 803bbda: e853 3f00 ldrex r3, [r3] + 803bbde: 633b str r3, [r7, #48] ; 0x30 return(result); - 803bba0: 6b3b ldr r3, [r7, #48] ; 0x30 - 803bba2: f423 7390 bic.w r3, r3, #288 ; 0x120 - 803bba6: 64fb str r3, [r7, #76] ; 0x4c - 803bba8: 687b ldr r3, [r7, #4] - 803bbaa: 681b ldr r3, [r3, #0] - 803bbac: 461a mov r2, r3 - 803bbae: 6cfb ldr r3, [r7, #76] ; 0x4c - 803bbb0: 643b str r3, [r7, #64] ; 0x40 - 803bbb2: 63fa str r2, [r7, #60] ; 0x3c + 803bbe0: 6b3b ldr r3, [r7, #48] ; 0x30 + 803bbe2: f423 7390 bic.w r3, r3, #288 ; 0x120 + 803bbe6: 64fb str r3, [r7, #76] ; 0x4c + 803bbe8: 687b ldr r3, [r7, #4] + 803bbea: 681b ldr r3, [r3, #0] + 803bbec: 461a mov r2, r3 + 803bbee: 6cfb ldr r3, [r7, #76] ; 0x4c + 803bbf0: 643b str r3, [r7, #64] ; 0x40 + 803bbf2: 63fa str r2, [r7, #60] ; 0x3c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bbb4: 6bf9 ldr r1, [r7, #60] ; 0x3c - 803bbb6: 6c3a ldr r2, [r7, #64] ; 0x40 - 803bbb8: e841 2300 strex r3, r2, [r1] - 803bbbc: 63bb str r3, [r7, #56] ; 0x38 + 803bbf4: 6bf9 ldr r1, [r7, #60] ; 0x3c + 803bbf6: 6c3a ldr r2, [r7, #64] ; 0x40 + 803bbf8: e841 2300 strex r3, r2, [r1] + 803bbfc: 63bb str r3, [r7, #56] ; 0x38 return(result); - 803bbbe: 6bbb ldr r3, [r7, #56] ; 0x38 - 803bbc0: 2b00 cmp r3, #0 - 803bbc2: d1e6 bne.n 803bb92 + 803bbfe: 6bbb ldr r3, [r7, #56] ; 0x38 + 803bc00: 2b00 cmp r3, #0 + 803bc02: d1e6 bne.n 803bbd2 /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE); - 803bbc4: 687b ldr r3, [r7, #4] - 803bbc6: 681b ldr r3, [r3, #0] - 803bbc8: 3308 adds r3, #8 - 803bbca: 623b str r3, [r7, #32] + 803bc04: 687b ldr r3, [r7, #4] + 803bc06: 681b ldr r3, [r3, #0] + 803bc08: 3308 adds r3, #8 + 803bc0a: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803bbcc: 6a3b ldr r3, [r7, #32] - 803bbce: e853 3f00 ldrex r3, [r3] - 803bbd2: 61fb str r3, [r7, #28] + 803bc0c: 6a3b ldr r3, [r7, #32] + 803bc0e: e853 3f00 ldrex r3, [r3] + 803bc12: 61fb str r3, [r7, #28] return(result); - 803bbd4: 69fb ldr r3, [r7, #28] - 803bbd6: f023 0301 bic.w r3, r3, #1 - 803bbda: 64bb str r3, [r7, #72] ; 0x48 - 803bbdc: 687b ldr r3, [r7, #4] - 803bbde: 681b ldr r3, [r3, #0] - 803bbe0: 3308 adds r3, #8 - 803bbe2: 6cba ldr r2, [r7, #72] ; 0x48 - 803bbe4: 62fa str r2, [r7, #44] ; 0x2c - 803bbe6: 62bb str r3, [r7, #40] ; 0x28 + 803bc14: 69fb ldr r3, [r7, #28] + 803bc16: f023 0301 bic.w r3, r3, #1 + 803bc1a: 64bb str r3, [r7, #72] ; 0x48 + 803bc1c: 687b ldr r3, [r7, #4] + 803bc1e: 681b ldr r3, [r3, #0] + 803bc20: 3308 adds r3, #8 + 803bc22: 6cba ldr r2, [r7, #72] ; 0x48 + 803bc24: 62fa str r2, [r7, #44] ; 0x2c + 803bc26: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bbe8: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803bbea: 6afa ldr r2, [r7, #44] ; 0x2c - 803bbec: e841 2300 strex r3, r2, [r1] - 803bbf0: 627b str r3, [r7, #36] ; 0x24 + 803bc28: 6ab9 ldr r1, [r7, #40] ; 0x28 + 803bc2a: 6afa ldr r2, [r7, #44] ; 0x2c + 803bc2c: e841 2300 strex r3, r2, [r1] + 803bc30: 627b str r3, [r7, #36] ; 0x24 return(result); - 803bbf2: 6a7b ldr r3, [r7, #36] ; 0x24 - 803bbf4: 2b00 cmp r3, #0 - 803bbf6: d1e5 bne.n 803bbc4 + 803bc32: 6a7b ldr r3, [r7, #36] ; 0x24 + 803bc34: 2b00 cmp r3, #0 + 803bc36: d1e5 bne.n 803bc04 /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803bbf8: 687b ldr r3, [r7, #4] - 803bbfa: 2220 movs r2, #32 - 803bbfc: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803bc38: 687b ldr r3, [r7, #4] + 803bc3a: 2220 movs r2, #32 + 803bc3c: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Clear RxISR function pointer */ huart->RxISR = NULL; - 803bc00: 687b ldr r3, [r7, #4] - 803bc02: 2200 movs r2, #0 - 803bc04: 671a str r2, [r3, #112] ; 0x70 + 803bc40: 687b ldr r3, [r7, #4] + 803bc42: 2200 movs r2, #0 + 803bc44: 671a str r2, [r3, #112] ; 0x70 /* Check current reception Mode : If Reception till IDLE event has been selected : */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803bc06: 687b ldr r3, [r7, #4] - 803bc08: 6edb ldr r3, [r3, #108] ; 0x6c - 803bc0a: 2b01 cmp r3, #1 - 803bc0c: d12e bne.n 803bc6c + 803bc46: 687b ldr r3, [r7, #4] + 803bc48: 6edb ldr r3, [r3, #108] ; 0x6c + 803bc4a: 2b01 cmp r3, #1 + 803bc4c: d12e bne.n 803bcac { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803bc0e: 687b ldr r3, [r7, #4] - 803bc10: 2200 movs r2, #0 - 803bc12: 66da str r2, [r3, #108] ; 0x6c + 803bc4e: 687b ldr r3, [r7, #4] + 803bc50: 2200 movs r2, #0 + 803bc52: 66da str r2, [r3, #108] ; 0x6c /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803bc14: 687b ldr r3, [r7, #4] - 803bc16: 681b ldr r3, [r3, #0] - 803bc18: 60fb str r3, [r7, #12] + 803bc54: 687b ldr r3, [r7, #4] + 803bc56: 681b ldr r3, [r3, #0] + 803bc58: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803bc1a: 68fb ldr r3, [r7, #12] - 803bc1c: e853 3f00 ldrex r3, [r3] - 803bc20: 60bb str r3, [r7, #8] + 803bc5a: 68fb ldr r3, [r7, #12] + 803bc5c: e853 3f00 ldrex r3, [r3] + 803bc60: 60bb str r3, [r7, #8] return(result); - 803bc22: 68bb ldr r3, [r7, #8] - 803bc24: f023 0310 bic.w r3, r3, #16 - 803bc28: 647b str r3, [r7, #68] ; 0x44 - 803bc2a: 687b ldr r3, [r7, #4] - 803bc2c: 681b ldr r3, [r3, #0] - 803bc2e: 461a mov r2, r3 - 803bc30: 6c7b ldr r3, [r7, #68] ; 0x44 - 803bc32: 61bb str r3, [r7, #24] - 803bc34: 617a str r2, [r7, #20] + 803bc62: 68bb ldr r3, [r7, #8] + 803bc64: f023 0310 bic.w r3, r3, #16 + 803bc68: 647b str r3, [r7, #68] ; 0x44 + 803bc6a: 687b ldr r3, [r7, #4] + 803bc6c: 681b ldr r3, [r3, #0] + 803bc6e: 461a mov r2, r3 + 803bc70: 6c7b ldr r3, [r7, #68] ; 0x44 + 803bc72: 61bb str r3, [r7, #24] + 803bc74: 617a str r2, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bc36: 6979 ldr r1, [r7, #20] - 803bc38: 69ba ldr r2, [r7, #24] - 803bc3a: e841 2300 strex r3, r2, [r1] - 803bc3e: 613b str r3, [r7, #16] + 803bc76: 6979 ldr r1, [r7, #20] + 803bc78: 69ba ldr r2, [r7, #24] + 803bc7a: e841 2300 strex r3, r2, [r1] + 803bc7e: 613b str r3, [r7, #16] return(result); - 803bc40: 693b ldr r3, [r7, #16] - 803bc42: 2b00 cmp r3, #0 - 803bc44: d1e6 bne.n 803bc14 + 803bc80: 693b ldr r3, [r7, #16] + 803bc82: 2b00 cmp r3, #0 + 803bc84: d1e6 bne.n 803bc54 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) - 803bc46: 687b ldr r3, [r7, #4] - 803bc48: 681b ldr r3, [r3, #0] - 803bc4a: 69db ldr r3, [r3, #28] - 803bc4c: f003 0310 and.w r3, r3, #16 - 803bc50: 2b10 cmp r3, #16 - 803bc52: d103 bne.n 803bc5c + 803bc86: 687b ldr r3, [r7, #4] + 803bc88: 681b ldr r3, [r3, #0] + 803bc8a: 69db ldr r3, [r3, #28] + 803bc8c: f003 0310 and.w r3, r3, #16 + 803bc90: 2b10 cmp r3, #16 + 803bc92: d103 bne.n 803bc9c { /* Clear IDLE Flag */ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); - 803bc54: 687b ldr r3, [r7, #4] - 803bc56: 681b ldr r3, [r3, #0] - 803bc58: 2210 movs r2, #16 - 803bc5a: 621a str r2, [r3, #32] + 803bc94: 687b ldr r3, [r7, #4] + 803bc96: 681b ldr r3, [r3, #0] + 803bc98: 2210 movs r2, #16 + 803bc9a: 621a str r2, [r3, #32] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); - 803bc5c: 687b ldr r3, [r7, #4] - 803bc5e: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c - 803bc62: 4619 mov r1, r3 - 803bc64: 6878 ldr r0, [r7, #4] - 803bc66: f7fe fcdb bl 803a620 + 803bc9c: 687b ldr r3, [r7, #4] + 803bc9e: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c + 803bca2: 4619 mov r1, r3 + 803bca4: 6878 ldr r0, [r7, #4] + 803bca6: f7fe fcdb bl 803a660 else { /* Clear RXNE interrupt flag */ __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); } } - 803bc6a: e00b b.n 803bc84 + 803bcaa: e00b b.n 803bcc4 HAL_UART_RxCpltCallback(huart); - 803bc6c: 6878 ldr r0, [r7, #4] - 803bc6e: f7e5 ff81 bl 8021b74 + 803bcac: 6878 ldr r0, [r7, #4] + 803bcae: f7e5 ff61 bl 8021b74 } - 803bc72: e007 b.n 803bc84 + 803bcb2: e007 b.n 803bcc4 __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); - 803bc74: 687b ldr r3, [r7, #4] - 803bc76: 681b ldr r3, [r3, #0] - 803bc78: 699a ldr r2, [r3, #24] - 803bc7a: 687b ldr r3, [r7, #4] - 803bc7c: 681b ldr r3, [r3, #0] - 803bc7e: f042 0208 orr.w r2, r2, #8 - 803bc82: 619a str r2, [r3, #24] -} - 803bc84: bf00 nop - 803bc86: 3758 adds r7, #88 ; 0x58 - 803bc88: 46bd mov sp, r7 - 803bc8a: bd80 pop {r7, pc} - -0803bc8c : + 803bcb4: 687b ldr r3, [r7, #4] + 803bcb6: 681b ldr r3, [r3, #0] + 803bcb8: 699a ldr r2, [r3, #24] + 803bcba: 687b ldr r3, [r7, #4] + 803bcbc: 681b ldr r3, [r3, #0] + 803bcbe: f042 0208 orr.w r2, r2, #8 + 803bcc2: 619a str r2, [r3, #24] +} + 803bcc4: bf00 nop + 803bcc6: 3758 adds r7, #88 ; 0x58 + 803bcc8: 46bd mov sp, r7 + 803bcca: bd80 pop {r7, pc} + +0803bccc : * interruptions have been enabled by HAL_UART_Receive_IT() * @param huart UART handle. * @retval None */ static void UART_RxISR_8BIT_FIFOEN(UART_HandleTypeDef *huart) { - 803bc8c: b580 push {r7, lr} - 803bc8e: b0a6 sub sp, #152 ; 0x98 - 803bc90: af00 add r7, sp, #0 - 803bc92: 6078 str r0, [r7, #4] + 803bccc: b580 push {r7, lr} + 803bcce: b0a6 sub sp, #152 ; 0x98 + 803bcd0: af00 add r7, sp, #0 + 803bcd2: 6078 str r0, [r7, #4] uint16_t uhMask = huart->Mask; - 803bc94: 687b ldr r3, [r7, #4] - 803bc96: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803bc9a: f8a7 3092 strh.w r3, [r7, #146] ; 0x92 + 803bcd4: 687b ldr r3, [r7, #4] + 803bcd6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803bcda: f8a7 3092 strh.w r3, [r7, #146] ; 0x92 uint16_t uhdata; uint16_t nb_rx_data; uint16_t rxdatacount; uint32_t isrflags = READ_REG(huart->Instance->ISR); - 803bc9e: 687b ldr r3, [r7, #4] - 803bca0: 681b ldr r3, [r3, #0] - 803bca2: 69db ldr r3, [r3, #28] - 803bca4: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 803bcde: 687b ldr r3, [r7, #4] + 803bce0: 681b ldr r3, [r3, #0] + 803bce2: 69db ldr r3, [r3, #28] + 803bce4: f8c7 3094 str.w r3, [r7, #148] ; 0x94 uint32_t cr1its = READ_REG(huart->Instance->CR1); - 803bca8: 687b ldr r3, [r7, #4] - 803bcaa: 681b ldr r3, [r3, #0] - 803bcac: 681b ldr r3, [r3, #0] - 803bcae: f8c7 308c str.w r3, [r7, #140] ; 0x8c + 803bce8: 687b ldr r3, [r7, #4] + 803bcea: 681b ldr r3, [r3, #0] + 803bcec: 681b ldr r3, [r3, #0] + 803bcee: f8c7 308c str.w r3, [r7, #140] ; 0x8c uint32_t cr3its = READ_REG(huart->Instance->CR3); - 803bcb2: 687b ldr r3, [r7, #4] - 803bcb4: 681b ldr r3, [r3, #0] - 803bcb6: 689b ldr r3, [r3, #8] - 803bcb8: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 803bcf2: 687b ldr r3, [r7, #4] + 803bcf4: 681b ldr r3, [r3, #0] + 803bcf6: 689b ldr r3, [r3, #8] + 803bcf8: f8c7 3088 str.w r3, [r7, #136] ; 0x88 /* Check that a Rx process is ongoing */ if (huart->RxState == HAL_UART_STATE_BUSY_RX) - 803bcbc: 687b ldr r3, [r7, #4] - 803bcbe: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803bcc2: 2b22 cmp r3, #34 ; 0x22 - 803bcc4: f040 814d bne.w 803bf62 + 803bcfc: 687b ldr r3, [r7, #4] + 803bcfe: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803bd02: 2b22 cmp r3, #34 ; 0x22 + 803bd04: f040 814d bne.w 803bfa2 { nb_rx_data = huart->NbRxDataToProcess; - 803bcc8: 687b ldr r3, [r7, #4] - 803bcca: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 803bcce: f8a7 3086 strh.w r3, [r7, #134] ; 0x86 + 803bd08: 687b ldr r3, [r7, #4] + 803bd0a: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 803bd0e: f8a7 3086 strh.w r3, [r7, #134] ; 0x86 while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) - 803bcd2: e0f4 b.n 803bebe + 803bd12: e0f4 b.n 803befe { uhdata = (uint16_t) READ_REG(huart->Instance->RDR); - 803bcd4: 687b ldr r3, [r7, #4] - 803bcd6: 681b ldr r3, [r3, #0] - 803bcd8: 6a5b ldr r3, [r3, #36] ; 0x24 - 803bcda: f8a7 3084 strh.w r3, [r7, #132] ; 0x84 + 803bd14: 687b ldr r3, [r7, #4] + 803bd16: 681b ldr r3, [r3, #0] + 803bd18: 6a5b ldr r3, [r3, #36] ; 0x24 + 803bd1a: f8a7 3084 strh.w r3, [r7, #132] ; 0x84 *huart->pRxBuffPtr = (uint8_t)(uhdata & (uint8_t)uhMask); - 803bcde: f8b7 3084 ldrh.w r3, [r7, #132] ; 0x84 - 803bce2: b2d9 uxtb r1, r3 - 803bce4: f8b7 3092 ldrh.w r3, [r7, #146] ; 0x92 - 803bce8: b2da uxtb r2, r3 - 803bcea: 687b ldr r3, [r7, #4] - 803bcec: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bcee: 400a ands r2, r1 - 803bcf0: b2d2 uxtb r2, r2 - 803bcf2: 701a strb r2, [r3, #0] + 803bd1e: f8b7 3084 ldrh.w r3, [r7, #132] ; 0x84 + 803bd22: b2d9 uxtb r1, r3 + 803bd24: f8b7 3092 ldrh.w r3, [r7, #146] ; 0x92 + 803bd28: b2da uxtb r2, r3 + 803bd2a: 687b ldr r3, [r7, #4] + 803bd2c: 6d9b ldr r3, [r3, #88] ; 0x58 + 803bd2e: 400a ands r2, r1 + 803bd30: b2d2 uxtb r2, r2 + 803bd32: 701a strb r2, [r3, #0] huart->pRxBuffPtr++; - 803bcf4: 687b ldr r3, [r7, #4] - 803bcf6: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bcf8: 1c5a adds r2, r3, #1 - 803bcfa: 687b ldr r3, [r7, #4] - 803bcfc: 659a str r2, [r3, #88] ; 0x58 + 803bd34: 687b ldr r3, [r7, #4] + 803bd36: 6d9b ldr r3, [r3, #88] ; 0x58 + 803bd38: 1c5a adds r2, r3, #1 + 803bd3a: 687b ldr r3, [r7, #4] + 803bd3c: 659a str r2, [r3, #88] ; 0x58 huart->RxXferCount--; - 803bcfe: 687b ldr r3, [r7, #4] - 803bd00: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803bd04: b29b uxth r3, r3 - 803bd06: 3b01 subs r3, #1 - 803bd08: b29a uxth r2, r3 - 803bd0a: 687b ldr r3, [r7, #4] - 803bd0c: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803bd3e: 687b ldr r3, [r7, #4] + 803bd40: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803bd44: b29b uxth r3, r3 + 803bd46: 3b01 subs r3, #1 + 803bd48: b29a uxth r2, r3 + 803bd4a: 687b ldr r3, [r7, #4] + 803bd4c: f8a3 205e strh.w r2, [r3, #94] ; 0x5e isrflags = READ_REG(huart->Instance->ISR); - 803bd10: 687b ldr r3, [r7, #4] - 803bd12: 681b ldr r3, [r3, #0] - 803bd14: 69db ldr r3, [r3, #28] - 803bd16: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 803bd50: 687b ldr r3, [r7, #4] + 803bd52: 681b ldr r3, [r3, #0] + 803bd54: 69db ldr r3, [r3, #28] + 803bd56: f8c7 3094 str.w r3, [r7, #148] ; 0x94 /* If some non blocking errors occurred */ if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U) - 803bd1a: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803bd1e: f003 0307 and.w r3, r3, #7 - 803bd22: 2b00 cmp r3, #0 - 803bd24: d053 beq.n 803bdce + 803bd5a: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803bd5e: f003 0307 and.w r3, r3, #7 + 803bd62: 2b00 cmp r3, #0 + 803bd64: d053 beq.n 803be0e { /* UART parity error interrupt occurred -------------------------------------*/ if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) - 803bd26: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803bd2a: f003 0301 and.w r3, r3, #1 - 803bd2e: 2b00 cmp r3, #0 - 803bd30: d011 beq.n 803bd56 - 803bd32: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c - 803bd36: f403 7380 and.w r3, r3, #256 ; 0x100 - 803bd3a: 2b00 cmp r3, #0 - 803bd3c: d00b beq.n 803bd56 + 803bd66: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803bd6a: f003 0301 and.w r3, r3, #1 + 803bd6e: 2b00 cmp r3, #0 + 803bd70: d011 beq.n 803bd96 + 803bd72: f8d7 308c ldr.w r3, [r7, #140] ; 0x8c + 803bd76: f403 7380 and.w r3, r3, #256 ; 0x100 + 803bd7a: 2b00 cmp r3, #0 + 803bd7c: d00b beq.n 803bd96 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); - 803bd3e: 687b ldr r3, [r7, #4] - 803bd40: 681b ldr r3, [r3, #0] - 803bd42: 2201 movs r2, #1 - 803bd44: 621a str r2, [r3, #32] + 803bd7e: 687b ldr r3, [r7, #4] + 803bd80: 681b ldr r3, [r3, #0] + 803bd82: 2201 movs r2, #1 + 803bd84: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_PE; - 803bd46: 687b ldr r3, [r7, #4] - 803bd48: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803bd4c: f043 0201 orr.w r2, r3, #1 - 803bd50: 687b ldr r3, [r7, #4] - 803bd52: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803bd86: 687b ldr r3, [r7, #4] + 803bd88: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803bd8c: f043 0201 orr.w r2, r3, #1 + 803bd90: 687b ldr r3, [r7, #4] + 803bd92: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART frame error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 803bd56: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803bd5a: f003 0302 and.w r3, r3, #2 - 803bd5e: 2b00 cmp r3, #0 - 803bd60: d011 beq.n 803bd86 - 803bd62: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 - 803bd66: f003 0301 and.w r3, r3, #1 - 803bd6a: 2b00 cmp r3, #0 - 803bd6c: d00b beq.n 803bd86 + 803bd96: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803bd9a: f003 0302 and.w r3, r3, #2 + 803bd9e: 2b00 cmp r3, #0 + 803bda0: d011 beq.n 803bdc6 + 803bda2: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 803bda6: f003 0301 and.w r3, r3, #1 + 803bdaa: 2b00 cmp r3, #0 + 803bdac: d00b beq.n 803bdc6 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); - 803bd6e: 687b ldr r3, [r7, #4] - 803bd70: 681b ldr r3, [r3, #0] - 803bd72: 2202 movs r2, #2 - 803bd74: 621a str r2, [r3, #32] + 803bdae: 687b ldr r3, [r7, #4] + 803bdb0: 681b ldr r3, [r3, #0] + 803bdb2: 2202 movs r2, #2 + 803bdb4: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_FE; - 803bd76: 687b ldr r3, [r7, #4] - 803bd78: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803bd7c: f043 0204 orr.w r2, r3, #4 - 803bd80: 687b ldr r3, [r7, #4] - 803bd82: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803bdb6: 687b ldr r3, [r7, #4] + 803bdb8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803bdbc: f043 0204 orr.w r2, r3, #4 + 803bdc0: 687b ldr r3, [r7, #4] + 803bdc2: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART noise error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 803bd86: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803bd8a: f003 0304 and.w r3, r3, #4 - 803bd8e: 2b00 cmp r3, #0 - 803bd90: d011 beq.n 803bdb6 - 803bd92: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 - 803bd96: f003 0301 and.w r3, r3, #1 - 803bd9a: 2b00 cmp r3, #0 - 803bd9c: d00b beq.n 803bdb6 + 803bdc6: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803bdca: f003 0304 and.w r3, r3, #4 + 803bdce: 2b00 cmp r3, #0 + 803bdd0: d011 beq.n 803bdf6 + 803bdd2: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 803bdd6: f003 0301 and.w r3, r3, #1 + 803bdda: 2b00 cmp r3, #0 + 803bddc: d00b beq.n 803bdf6 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); - 803bd9e: 687b ldr r3, [r7, #4] - 803bda0: 681b ldr r3, [r3, #0] - 803bda2: 2204 movs r2, #4 - 803bda4: 621a str r2, [r3, #32] + 803bdde: 687b ldr r3, [r7, #4] + 803bde0: 681b ldr r3, [r3, #0] + 803bde2: 2204 movs r2, #4 + 803bde4: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_NE; - 803bda6: 687b ldr r3, [r7, #4] - 803bda8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803bdac: f043 0202 orr.w r2, r3, #2 - 803bdb0: 687b ldr r3, [r7, #4] - 803bdb2: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803bde6: 687b ldr r3, [r7, #4] + 803bde8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803bdec: f043 0202 orr.w r2, r3, #2 + 803bdf0: 687b ldr r3, [r7, #4] + 803bdf2: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* Call UART Error Call back function if need be ----------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) - 803bdb6: 687b ldr r3, [r7, #4] - 803bdb8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803bdbc: 2b00 cmp r3, #0 - 803bdbe: d006 beq.n 803bdce + 803bdf6: 687b ldr r3, [r7, #4] + 803bdf8: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803bdfc: 2b00 cmp r3, #0 + 803bdfe: d006 beq.n 803be0e #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803bdc0: 6878 ldr r0, [r7, #4] - 803bdc2: f7fe fc23 bl 803a60c + 803be00: 6878 ldr r0, [r7, #4] + 803be02: f7fe fc23 bl 803a64c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 803bdc6: 687b ldr r3, [r7, #4] - 803bdc8: 2200 movs r2, #0 - 803bdca: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803be06: 687b ldr r3, [r7, #4] + 803be08: 2200 movs r2, #0 + 803be0a: f8c3 208c str.w r2, [r3, #140] ; 0x8c } } if (huart->RxXferCount == 0U) - 803bdce: 687b ldr r3, [r7, #4] - 803bdd0: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803bdd4: b29b uxth r3, r3 - 803bdd6: 2b00 cmp r3, #0 - 803bdd8: d171 bne.n 803bebe + 803be0e: 687b ldr r3, [r7, #4] + 803be10: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803be14: b29b uxth r3, r3 + 803be16: 2b00 cmp r3, #0 + 803be18: d171 bne.n 803befe { /* Disable the UART Parity Error Interrupt and RXFT interrupt*/ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 803bdda: 687b ldr r3, [r7, #4] - 803bddc: 681b ldr r3, [r3, #0] - 803bdde: 65fb str r3, [r7, #92] ; 0x5c + 803be1a: 687b ldr r3, [r7, #4] + 803be1c: 681b ldr r3, [r3, #0] + 803be1e: 65fb str r3, [r7, #92] ; 0x5c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803bde0: 6dfb ldr r3, [r7, #92] ; 0x5c - 803bde2: e853 3f00 ldrex r3, [r3] - 803bde6: 65bb str r3, [r7, #88] ; 0x58 + 803be20: 6dfb ldr r3, [r7, #92] ; 0x5c + 803be22: e853 3f00 ldrex r3, [r3] + 803be26: 65bb str r3, [r7, #88] ; 0x58 return(result); - 803bde8: 6dbb ldr r3, [r7, #88] ; 0x58 - 803bdea: f423 7380 bic.w r3, r3, #256 ; 0x100 - 803bdee: f8c7 3080 str.w r3, [r7, #128] ; 0x80 - 803bdf2: 687b ldr r3, [r7, #4] - 803bdf4: 681b ldr r3, [r3, #0] - 803bdf6: 461a mov r2, r3 - 803bdf8: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 - 803bdfc: 66bb str r3, [r7, #104] ; 0x68 - 803bdfe: 667a str r2, [r7, #100] ; 0x64 + 803be28: 6dbb ldr r3, [r7, #88] ; 0x58 + 803be2a: f423 7380 bic.w r3, r3, #256 ; 0x100 + 803be2e: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 803be32: 687b ldr r3, [r7, #4] + 803be34: 681b ldr r3, [r3, #0] + 803be36: 461a mov r2, r3 + 803be38: f8d7 3080 ldr.w r3, [r7, #128] ; 0x80 + 803be3c: 66bb str r3, [r7, #104] ; 0x68 + 803be3e: 667a str r2, [r7, #100] ; 0x64 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803be00: 6e79 ldr r1, [r7, #100] ; 0x64 - 803be02: 6eba ldr r2, [r7, #104] ; 0x68 - 803be04: e841 2300 strex r3, r2, [r1] - 803be08: 663b str r3, [r7, #96] ; 0x60 + 803be40: 6e79 ldr r1, [r7, #100] ; 0x64 + 803be42: 6eba ldr r2, [r7, #104] ; 0x68 + 803be44: e841 2300 strex r3, r2, [r1] + 803be48: 663b str r3, [r7, #96] ; 0x60 return(result); - 803be0a: 6e3b ldr r3, [r7, #96] ; 0x60 - 803be0c: 2b00 cmp r3, #0 - 803be0e: d1e4 bne.n 803bdda + 803be4a: 6e3b ldr r3, [r7, #96] ; 0x60 + 803be4c: 2b00 cmp r3, #0 + 803be4e: d1e4 bne.n 803be1a /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) and RX FIFO Threshold interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 803be10: 687b ldr r3, [r7, #4] - 803be12: 681b ldr r3, [r3, #0] - 803be14: 3308 adds r3, #8 - 803be16: 64bb str r3, [r7, #72] ; 0x48 + 803be50: 687b ldr r3, [r7, #4] + 803be52: 681b ldr r3, [r3, #0] + 803be54: 3308 adds r3, #8 + 803be56: 64bb str r3, [r7, #72] ; 0x48 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803be18: 6cbb ldr r3, [r7, #72] ; 0x48 - 803be1a: e853 3f00 ldrex r3, [r3] - 803be1e: 647b str r3, [r7, #68] ; 0x44 + 803be58: 6cbb ldr r3, [r7, #72] ; 0x48 + 803be5a: e853 3f00 ldrex r3, [r3] + 803be5e: 647b str r3, [r7, #68] ; 0x44 return(result); - 803be20: 6c7a ldr r2, [r7, #68] ; 0x44 - 803be22: 4b56 ldr r3, [pc, #344] ; (803bf7c ) - 803be24: 4013 ands r3, r2 - 803be26: 67fb str r3, [r7, #124] ; 0x7c - 803be28: 687b ldr r3, [r7, #4] - 803be2a: 681b ldr r3, [r3, #0] - 803be2c: 3308 adds r3, #8 - 803be2e: 6ffa ldr r2, [r7, #124] ; 0x7c - 803be30: 657a str r2, [r7, #84] ; 0x54 - 803be32: 653b str r3, [r7, #80] ; 0x50 + 803be60: 6c7a ldr r2, [r7, #68] ; 0x44 + 803be62: 4b56 ldr r3, [pc, #344] ; (803bfbc ) + 803be64: 4013 ands r3, r2 + 803be66: 67fb str r3, [r7, #124] ; 0x7c + 803be68: 687b ldr r3, [r7, #4] + 803be6a: 681b ldr r3, [r3, #0] + 803be6c: 3308 adds r3, #8 + 803be6e: 6ffa ldr r2, [r7, #124] ; 0x7c + 803be70: 657a str r2, [r7, #84] ; 0x54 + 803be72: 653b str r3, [r7, #80] ; 0x50 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803be34: 6d39 ldr r1, [r7, #80] ; 0x50 - 803be36: 6d7a ldr r2, [r7, #84] ; 0x54 - 803be38: e841 2300 strex r3, r2, [r1] - 803be3c: 64fb str r3, [r7, #76] ; 0x4c + 803be74: 6d39 ldr r1, [r7, #80] ; 0x50 + 803be76: 6d7a ldr r2, [r7, #84] ; 0x54 + 803be78: e841 2300 strex r3, r2, [r1] + 803be7c: 64fb str r3, [r7, #76] ; 0x4c return(result); - 803be3e: 6cfb ldr r3, [r7, #76] ; 0x4c - 803be40: 2b00 cmp r3, #0 - 803be42: d1e5 bne.n 803be10 + 803be7e: 6cfb ldr r3, [r7, #76] ; 0x4c + 803be80: 2b00 cmp r3, #0 + 803be82: d1e5 bne.n 803be50 /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803be44: 687b ldr r3, [r7, #4] - 803be46: 2220 movs r2, #32 - 803be48: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803be84: 687b ldr r3, [r7, #4] + 803be86: 2220 movs r2, #32 + 803be88: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Clear RxISR function pointer */ huart->RxISR = NULL; - 803be4c: 687b ldr r3, [r7, #4] - 803be4e: 2200 movs r2, #0 - 803be50: 671a str r2, [r3, #112] ; 0x70 + 803be8c: 687b ldr r3, [r7, #4] + 803be8e: 2200 movs r2, #0 + 803be90: 671a str r2, [r3, #112] ; 0x70 /* Check current reception Mode : If Reception till IDLE event has been selected : */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803be52: 687b ldr r3, [r7, #4] - 803be54: 6edb ldr r3, [r3, #108] ; 0x6c - 803be56: 2b01 cmp r3, #1 - 803be58: d12e bne.n 803beb8 + 803be92: 687b ldr r3, [r7, #4] + 803be94: 6edb ldr r3, [r3, #108] ; 0x6c + 803be96: 2b01 cmp r3, #1 + 803be98: d12e bne.n 803bef8 { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803be5a: 687b ldr r3, [r7, #4] - 803be5c: 2200 movs r2, #0 - 803be5e: 66da str r2, [r3, #108] ; 0x6c + 803be9a: 687b ldr r3, [r7, #4] + 803be9c: 2200 movs r2, #0 + 803be9e: 66da str r2, [r3, #108] ; 0x6c /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803be60: 687b ldr r3, [r7, #4] - 803be62: 681b ldr r3, [r3, #0] - 803be64: 637b str r3, [r7, #52] ; 0x34 + 803bea0: 687b ldr r3, [r7, #4] + 803bea2: 681b ldr r3, [r3, #0] + 803bea4: 637b str r3, [r7, #52] ; 0x34 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803be66: 6b7b ldr r3, [r7, #52] ; 0x34 - 803be68: e853 3f00 ldrex r3, [r3] - 803be6c: 633b str r3, [r7, #48] ; 0x30 + 803bea6: 6b7b ldr r3, [r7, #52] ; 0x34 + 803bea8: e853 3f00 ldrex r3, [r3] + 803beac: 633b str r3, [r7, #48] ; 0x30 return(result); - 803be6e: 6b3b ldr r3, [r7, #48] ; 0x30 - 803be70: f023 0310 bic.w r3, r3, #16 - 803be74: 67bb str r3, [r7, #120] ; 0x78 - 803be76: 687b ldr r3, [r7, #4] - 803be78: 681b ldr r3, [r3, #0] - 803be7a: 461a mov r2, r3 - 803be7c: 6fbb ldr r3, [r7, #120] ; 0x78 - 803be7e: 643b str r3, [r7, #64] ; 0x40 - 803be80: 63fa str r2, [r7, #60] ; 0x3c + 803beae: 6b3b ldr r3, [r7, #48] ; 0x30 + 803beb0: f023 0310 bic.w r3, r3, #16 + 803beb4: 67bb str r3, [r7, #120] ; 0x78 + 803beb6: 687b ldr r3, [r7, #4] + 803beb8: 681b ldr r3, [r3, #0] + 803beba: 461a mov r2, r3 + 803bebc: 6fbb ldr r3, [r7, #120] ; 0x78 + 803bebe: 643b str r3, [r7, #64] ; 0x40 + 803bec0: 63fa str r2, [r7, #60] ; 0x3c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803be82: 6bf9 ldr r1, [r7, #60] ; 0x3c - 803be84: 6c3a ldr r2, [r7, #64] ; 0x40 - 803be86: e841 2300 strex r3, r2, [r1] - 803be8a: 63bb str r3, [r7, #56] ; 0x38 + 803bec2: 6bf9 ldr r1, [r7, #60] ; 0x3c + 803bec4: 6c3a ldr r2, [r7, #64] ; 0x40 + 803bec6: e841 2300 strex r3, r2, [r1] + 803beca: 63bb str r3, [r7, #56] ; 0x38 return(result); - 803be8c: 6bbb ldr r3, [r7, #56] ; 0x38 - 803be8e: 2b00 cmp r3, #0 - 803be90: d1e6 bne.n 803be60 + 803becc: 6bbb ldr r3, [r7, #56] ; 0x38 + 803bece: 2b00 cmp r3, #0 + 803bed0: d1e6 bne.n 803bea0 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) - 803be92: 687b ldr r3, [r7, #4] - 803be94: 681b ldr r3, [r3, #0] - 803be96: 69db ldr r3, [r3, #28] - 803be98: f003 0310 and.w r3, r3, #16 - 803be9c: 2b10 cmp r3, #16 - 803be9e: d103 bne.n 803bea8 + 803bed2: 687b ldr r3, [r7, #4] + 803bed4: 681b ldr r3, [r3, #0] + 803bed6: 69db ldr r3, [r3, #28] + 803bed8: f003 0310 and.w r3, r3, #16 + 803bedc: 2b10 cmp r3, #16 + 803bede: d103 bne.n 803bee8 { /* Clear IDLE Flag */ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); - 803bea0: 687b ldr r3, [r7, #4] - 803bea2: 681b ldr r3, [r3, #0] - 803bea4: 2210 movs r2, #16 - 803bea6: 621a str r2, [r3, #32] + 803bee0: 687b ldr r3, [r7, #4] + 803bee2: 681b ldr r3, [r3, #0] + 803bee4: 2210 movs r2, #16 + 803bee6: 621a str r2, [r3, #32] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); - 803bea8: 687b ldr r3, [r7, #4] - 803beaa: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c - 803beae: 4619 mov r1, r3 - 803beb0: 6878 ldr r0, [r7, #4] - 803beb2: f7fe fbb5 bl 803a620 - 803beb6: e002 b.n 803bebe + 803bee8: 687b ldr r3, [r7, #4] + 803beea: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c + 803beee: 4619 mov r1, r3 + 803bef0: 6878 ldr r0, [r7, #4] + 803bef2: f7fe fbb5 bl 803a660 + 803bef6: e002 b.n 803befe #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx complete callback*/ huart->RxCpltCallback(huart); #else /*Call legacy weak Rx complete callback*/ HAL_UART_RxCpltCallback(huart); - 803beb8: 6878 ldr r0, [r7, #4] - 803beba: f7e5 fe5b bl 8021b74 + 803bef8: 6878 ldr r0, [r7, #4] + 803befa: f7e5 fe3b bl 8021b74 while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) - 803bebe: f8b7 3086 ldrh.w r3, [r7, #134] ; 0x86 - 803bec2: 2b00 cmp r3, #0 - 803bec4: d006 beq.n 803bed4 - 803bec6: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803beca: f003 0320 and.w r3, r3, #32 - 803bece: 2b00 cmp r3, #0 - 803bed0: f47f af00 bne.w 803bcd4 + 803befe: f8b7 3086 ldrh.w r3, [r7, #134] ; 0x86 + 803bf02: 2b00 cmp r3, #0 + 803bf04: d006 beq.n 803bf14 + 803bf06: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803bf0a: f003 0320 and.w r3, r3, #32 + 803bf0e: 2b00 cmp r3, #0 + 803bf10: f47f af00 bne.w 803bd14 /* When remaining number of bytes to receive is less than the RX FIFO threshold, next incoming frames are processed as if FIFO mode was disabled (i.e. one interrupt per received frame). */ rxdatacount = huart->RxXferCount; - 803bed4: 687b ldr r3, [r7, #4] - 803bed6: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803beda: f8a7 3076 strh.w r3, [r7, #118] ; 0x76 + 803bf14: 687b ldr r3, [r7, #4] + 803bf16: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803bf1a: f8a7 3076 strh.w r3, [r7, #118] ; 0x76 if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess)) - 803bede: f8b7 3076 ldrh.w r3, [r7, #118] ; 0x76 - 803bee2: 2b00 cmp r3, #0 - 803bee4: d045 beq.n 803bf72 - 803bee6: 687b ldr r3, [r7, #4] - 803bee8: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 803beec: f8b7 2076 ldrh.w r2, [r7, #118] ; 0x76 - 803bef0: 429a cmp r2, r3 - 803bef2: d23e bcs.n 803bf72 + 803bf1e: f8b7 3076 ldrh.w r3, [r7, #118] ; 0x76 + 803bf22: 2b00 cmp r3, #0 + 803bf24: d045 beq.n 803bfb2 + 803bf26: 687b ldr r3, [r7, #4] + 803bf28: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 803bf2c: f8b7 2076 ldrh.w r2, [r7, #118] ; 0x76 + 803bf30: 429a cmp r2, r3 + 803bf32: d23e bcs.n 803bfb2 { /* Disable the UART RXFT interrupt*/ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); - 803bef4: 687b ldr r3, [r7, #4] - 803bef6: 681b ldr r3, [r3, #0] - 803bef8: 3308 adds r3, #8 - 803befa: 623b str r3, [r7, #32] + 803bf34: 687b ldr r3, [r7, #4] + 803bf36: 681b ldr r3, [r3, #0] + 803bf38: 3308 adds r3, #8 + 803bf3a: 623b str r3, [r7, #32] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803befc: 6a3b ldr r3, [r7, #32] - 803befe: e853 3f00 ldrex r3, [r3] - 803bf02: 61fb str r3, [r7, #28] + 803bf3c: 6a3b ldr r3, [r7, #32] + 803bf3e: e853 3f00 ldrex r3, [r3] + 803bf42: 61fb str r3, [r7, #28] return(result); - 803bf04: 69fb ldr r3, [r7, #28] - 803bf06: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 - 803bf0a: 673b str r3, [r7, #112] ; 0x70 - 803bf0c: 687b ldr r3, [r7, #4] - 803bf0e: 681b ldr r3, [r3, #0] - 803bf10: 3308 adds r3, #8 - 803bf12: 6f3a ldr r2, [r7, #112] ; 0x70 - 803bf14: 62fa str r2, [r7, #44] ; 0x2c - 803bf16: 62bb str r3, [r7, #40] ; 0x28 + 803bf44: 69fb ldr r3, [r7, #28] + 803bf46: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 803bf4a: 673b str r3, [r7, #112] ; 0x70 + 803bf4c: 687b ldr r3, [r7, #4] + 803bf4e: 681b ldr r3, [r3, #0] + 803bf50: 3308 adds r3, #8 + 803bf52: 6f3a ldr r2, [r7, #112] ; 0x70 + 803bf54: 62fa str r2, [r7, #44] ; 0x2c + 803bf56: 62bb str r3, [r7, #40] ; 0x28 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bf18: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803bf1a: 6afa ldr r2, [r7, #44] ; 0x2c - 803bf1c: e841 2300 strex r3, r2, [r1] - 803bf20: 627b str r3, [r7, #36] ; 0x24 + 803bf58: 6ab9 ldr r1, [r7, #40] ; 0x28 + 803bf5a: 6afa ldr r2, [r7, #44] ; 0x2c + 803bf5c: e841 2300 strex r3, r2, [r1] + 803bf60: 627b str r3, [r7, #36] ; 0x24 return(result); - 803bf22: 6a7b ldr r3, [r7, #36] ; 0x24 - 803bf24: 2b00 cmp r3, #0 - 803bf26: d1e5 bne.n 803bef4 + 803bf62: 6a7b ldr r3, [r7, #36] ; 0x24 + 803bf64: 2b00 cmp r3, #0 + 803bf66: d1e5 bne.n 803bf34 /* Update the RxISR function pointer */ huart->RxISR = UART_RxISR_8BIT; - 803bf28: 687b ldr r3, [r7, #4] - 803bf2a: 4a15 ldr r2, [pc, #84] ; (803bf80 ) - 803bf2c: 671a str r2, [r3, #112] ; 0x70 + 803bf68: 687b ldr r3, [r7, #4] + 803bf6a: 4a15 ldr r2, [pc, #84] ; (803bfc0 ) + 803bf6c: 671a str r2, [r3, #112] ; 0x70 /* Enable the UART Data Register Not Empty interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); - 803bf2e: 687b ldr r3, [r7, #4] - 803bf30: 681b ldr r3, [r3, #0] - 803bf32: 60fb str r3, [r7, #12] + 803bf6e: 687b ldr r3, [r7, #4] + 803bf70: 681b ldr r3, [r3, #0] + 803bf72: 60fb str r3, [r7, #12] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803bf34: 68fb ldr r3, [r7, #12] - 803bf36: e853 3f00 ldrex r3, [r3] - 803bf3a: 60bb str r3, [r7, #8] + 803bf74: 68fb ldr r3, [r7, #12] + 803bf76: e853 3f00 ldrex r3, [r3] + 803bf7a: 60bb str r3, [r7, #8] return(result); - 803bf3c: 68bb ldr r3, [r7, #8] - 803bf3e: f043 0320 orr.w r3, r3, #32 - 803bf42: 66fb str r3, [r7, #108] ; 0x6c - 803bf44: 687b ldr r3, [r7, #4] - 803bf46: 681b ldr r3, [r3, #0] - 803bf48: 461a mov r2, r3 - 803bf4a: 6efb ldr r3, [r7, #108] ; 0x6c - 803bf4c: 61bb str r3, [r7, #24] - 803bf4e: 617a str r2, [r7, #20] + 803bf7c: 68bb ldr r3, [r7, #8] + 803bf7e: f043 0320 orr.w r3, r3, #32 + 803bf82: 66fb str r3, [r7, #108] ; 0x6c + 803bf84: 687b ldr r3, [r7, #4] + 803bf86: 681b ldr r3, [r3, #0] + 803bf88: 461a mov r2, r3 + 803bf8a: 6efb ldr r3, [r7, #108] ; 0x6c + 803bf8c: 61bb str r3, [r7, #24] + 803bf8e: 617a str r2, [r7, #20] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803bf50: 6979 ldr r1, [r7, #20] - 803bf52: 69ba ldr r2, [r7, #24] - 803bf54: e841 2300 strex r3, r2, [r1] - 803bf58: 613b str r3, [r7, #16] + 803bf90: 6979 ldr r1, [r7, #20] + 803bf92: 69ba ldr r2, [r7, #24] + 803bf94: e841 2300 strex r3, r2, [r1] + 803bf98: 613b str r3, [r7, #16] return(result); - 803bf5a: 693b ldr r3, [r7, #16] - 803bf5c: 2b00 cmp r3, #0 - 803bf5e: d1e6 bne.n 803bf2e + 803bf9a: 693b ldr r3, [r7, #16] + 803bf9c: 2b00 cmp r3, #0 + 803bf9e: d1e6 bne.n 803bf6e else { /* Clear RXNE interrupt flag */ __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); } } - 803bf60: e007 b.n 803bf72 + 803bfa0: e007 b.n 803bfb2 __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); - 803bf62: 687b ldr r3, [r7, #4] - 803bf64: 681b ldr r3, [r3, #0] - 803bf66: 699a ldr r2, [r3, #24] - 803bf68: 687b ldr r3, [r7, #4] - 803bf6a: 681b ldr r3, [r3, #0] - 803bf6c: f042 0208 orr.w r2, r2, #8 - 803bf70: 619a str r2, [r3, #24] -} - 803bf72: bf00 nop - 803bf74: 3798 adds r7, #152 ; 0x98 - 803bf76: 46bd mov sp, r7 - 803bf78: bd80 pop {r7, pc} - 803bf7a: bf00 nop - 803bf7c: effffffe .word 0xeffffffe - 803bf80: 0803b9cd .word 0x0803b9cd - -0803bf84 : + 803bfa2: 687b ldr r3, [r7, #4] + 803bfa4: 681b ldr r3, [r3, #0] + 803bfa6: 699a ldr r2, [r3, #24] + 803bfa8: 687b ldr r3, [r7, #4] + 803bfaa: 681b ldr r3, [r3, #0] + 803bfac: f042 0208 orr.w r2, r2, #8 + 803bfb0: 619a str r2, [r3, #24] +} + 803bfb2: bf00 nop + 803bfb4: 3798 adds r7, #152 ; 0x98 + 803bfb6: 46bd mov sp, r7 + 803bfb8: bd80 pop {r7, pc} + 803bfba: bf00 nop + 803bfbc: effffffe .word 0xeffffffe + 803bfc0: 0803ba0d .word 0x0803ba0d + +0803bfc4 : * interruptions have been enabled by HAL_UART_Receive_IT() * @param huart UART handle. * @retval None */ static void UART_RxISR_16BIT_FIFOEN(UART_HandleTypeDef *huart) { - 803bf84: b580 push {r7, lr} - 803bf86: b0a8 sub sp, #160 ; 0xa0 - 803bf88: af00 add r7, sp, #0 - 803bf8a: 6078 str r0, [r7, #4] + 803bfc4: b580 push {r7, lr} + 803bfc6: b0a8 sub sp, #160 ; 0xa0 + 803bfc8: af00 add r7, sp, #0 + 803bfca: 6078 str r0, [r7, #4] uint16_t *tmp; uint16_t uhMask = huart->Mask; - 803bf8c: 687b ldr r3, [r7, #4] - 803bf8e: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803bf92: f8a7 309a strh.w r3, [r7, #154] ; 0x9a + 803bfcc: 687b ldr r3, [r7, #4] + 803bfce: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803bfd2: f8a7 309a strh.w r3, [r7, #154] ; 0x9a uint16_t uhdata; uint16_t nb_rx_data; uint16_t rxdatacount; uint32_t isrflags = READ_REG(huart->Instance->ISR); - 803bf96: 687b ldr r3, [r7, #4] - 803bf98: 681b ldr r3, [r3, #0] - 803bf9a: 69db ldr r3, [r3, #28] - 803bf9c: f8c7 309c str.w r3, [r7, #156] ; 0x9c + 803bfd6: 687b ldr r3, [r7, #4] + 803bfd8: 681b ldr r3, [r3, #0] + 803bfda: 69db ldr r3, [r3, #28] + 803bfdc: f8c7 309c str.w r3, [r7, #156] ; 0x9c uint32_t cr1its = READ_REG(huart->Instance->CR1); - 803bfa0: 687b ldr r3, [r7, #4] - 803bfa2: 681b ldr r3, [r3, #0] - 803bfa4: 681b ldr r3, [r3, #0] - 803bfa6: f8c7 3094 str.w r3, [r7, #148] ; 0x94 + 803bfe0: 687b ldr r3, [r7, #4] + 803bfe2: 681b ldr r3, [r3, #0] + 803bfe4: 681b ldr r3, [r3, #0] + 803bfe6: f8c7 3094 str.w r3, [r7, #148] ; 0x94 uint32_t cr3its = READ_REG(huart->Instance->CR3); - 803bfaa: 687b ldr r3, [r7, #4] - 803bfac: 681b ldr r3, [r3, #0] - 803bfae: 689b ldr r3, [r3, #8] - 803bfb0: f8c7 3090 str.w r3, [r7, #144] ; 0x90 + 803bfea: 687b ldr r3, [r7, #4] + 803bfec: 681b ldr r3, [r3, #0] + 803bfee: 689b ldr r3, [r3, #8] + 803bff0: f8c7 3090 str.w r3, [r7, #144] ; 0x90 /* Check that a Rx process is ongoing */ if (huart->RxState == HAL_UART_STATE_BUSY_RX) - 803bfb4: 687b ldr r3, [r7, #4] - 803bfb6: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 803bfba: 2b22 cmp r3, #34 ; 0x22 - 803bfbc: f040 8151 bne.w 803c262 + 803bff4: 687b ldr r3, [r7, #4] + 803bff6: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 803bffa: 2b22 cmp r3, #34 ; 0x22 + 803bffc: f040 8151 bne.w 803c2a2 { nb_rx_data = huart->NbRxDataToProcess; - 803bfc0: 687b ldr r3, [r7, #4] - 803bfc2: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 803bfc6: f8a7 308e strh.w r3, [r7, #142] ; 0x8e + 803c000: 687b ldr r3, [r7, #4] + 803c002: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 803c006: f8a7 308e strh.w r3, [r7, #142] ; 0x8e while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) - 803bfca: e0f8 b.n 803c1be + 803c00a: e0f8 b.n 803c1fe { uhdata = (uint16_t) READ_REG(huart->Instance->RDR); - 803bfcc: 687b ldr r3, [r7, #4] - 803bfce: 681b ldr r3, [r3, #0] - 803bfd0: 6a5b ldr r3, [r3, #36] ; 0x24 - 803bfd2: f8a7 308c strh.w r3, [r7, #140] ; 0x8c + 803c00c: 687b ldr r3, [r7, #4] + 803c00e: 681b ldr r3, [r3, #0] + 803c010: 6a5b ldr r3, [r3, #36] ; 0x24 + 803c012: f8a7 308c strh.w r3, [r7, #140] ; 0x8c tmp = (uint16_t *) huart->pRxBuffPtr ; - 803bfd6: 687b ldr r3, [r7, #4] - 803bfd8: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bfda: f8c7 3088 str.w r3, [r7, #136] ; 0x88 + 803c016: 687b ldr r3, [r7, #4] + 803c018: 6d9b ldr r3, [r3, #88] ; 0x58 + 803c01a: f8c7 3088 str.w r3, [r7, #136] ; 0x88 *tmp = (uint16_t)(uhdata & uhMask); - 803bfde: f8b7 208c ldrh.w r2, [r7, #140] ; 0x8c - 803bfe2: f8b7 309a ldrh.w r3, [r7, #154] ; 0x9a - 803bfe6: 4013 ands r3, r2 - 803bfe8: b29a uxth r2, r3 - 803bfea: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 - 803bfee: 801a strh r2, [r3, #0] + 803c01e: f8b7 208c ldrh.w r2, [r7, #140] ; 0x8c + 803c022: f8b7 309a ldrh.w r3, [r7, #154] ; 0x9a + 803c026: 4013 ands r3, r2 + 803c028: b29a uxth r2, r3 + 803c02a: f8d7 3088 ldr.w r3, [r7, #136] ; 0x88 + 803c02e: 801a strh r2, [r3, #0] huart->pRxBuffPtr += 2U; - 803bff0: 687b ldr r3, [r7, #4] - 803bff2: 6d9b ldr r3, [r3, #88] ; 0x58 - 803bff4: 1c9a adds r2, r3, #2 - 803bff6: 687b ldr r3, [r7, #4] - 803bff8: 659a str r2, [r3, #88] ; 0x58 + 803c030: 687b ldr r3, [r7, #4] + 803c032: 6d9b ldr r3, [r3, #88] ; 0x58 + 803c034: 1c9a adds r2, r3, #2 + 803c036: 687b ldr r3, [r7, #4] + 803c038: 659a str r2, [r3, #88] ; 0x58 huart->RxXferCount--; - 803bffa: 687b ldr r3, [r7, #4] - 803bffc: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803c000: b29b uxth r3, r3 - 803c002: 3b01 subs r3, #1 - 803c004: b29a uxth r2, r3 - 803c006: 687b ldr r3, [r7, #4] - 803c008: f8a3 205e strh.w r2, [r3, #94] ; 0x5e + 803c03a: 687b ldr r3, [r7, #4] + 803c03c: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803c040: b29b uxth r3, r3 + 803c042: 3b01 subs r3, #1 + 803c044: b29a uxth r2, r3 + 803c046: 687b ldr r3, [r7, #4] + 803c048: f8a3 205e strh.w r2, [r3, #94] ; 0x5e isrflags = READ_REG(huart->Instance->ISR); - 803c00c: 687b ldr r3, [r7, #4] - 803c00e: 681b ldr r3, [r3, #0] - 803c010: 69db ldr r3, [r3, #28] - 803c012: f8c7 309c str.w r3, [r7, #156] ; 0x9c + 803c04c: 687b ldr r3, [r7, #4] + 803c04e: 681b ldr r3, [r3, #0] + 803c050: 69db ldr r3, [r3, #28] + 803c052: f8c7 309c str.w r3, [r7, #156] ; 0x9c /* If some non blocking errors occurred */ if ((isrflags & (USART_ISR_PE | USART_ISR_FE | USART_ISR_NE)) != 0U) - 803c016: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803c01a: f003 0307 and.w r3, r3, #7 - 803c01e: 2b00 cmp r3, #0 - 803c020: d053 beq.n 803c0ca + 803c056: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803c05a: f003 0307 and.w r3, r3, #7 + 803c05e: 2b00 cmp r3, #0 + 803c060: d053 beq.n 803c10a { /* UART parity error interrupt occurred -------------------------------------*/ if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U)) - 803c022: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803c026: f003 0301 and.w r3, r3, #1 - 803c02a: 2b00 cmp r3, #0 - 803c02c: d011 beq.n 803c052 - 803c02e: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 - 803c032: f403 7380 and.w r3, r3, #256 ; 0x100 - 803c036: 2b00 cmp r3, #0 - 803c038: d00b beq.n 803c052 + 803c062: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803c066: f003 0301 and.w r3, r3, #1 + 803c06a: 2b00 cmp r3, #0 + 803c06c: d011 beq.n 803c092 + 803c06e: f8d7 3094 ldr.w r3, [r7, #148] ; 0x94 + 803c072: f403 7380 and.w r3, r3, #256 ; 0x100 + 803c076: 2b00 cmp r3, #0 + 803c078: d00b beq.n 803c092 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF); - 803c03a: 687b ldr r3, [r7, #4] - 803c03c: 681b ldr r3, [r3, #0] - 803c03e: 2201 movs r2, #1 - 803c040: 621a str r2, [r3, #32] + 803c07a: 687b ldr r3, [r7, #4] + 803c07c: 681b ldr r3, [r3, #0] + 803c07e: 2201 movs r2, #1 + 803c080: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_PE; - 803c042: 687b ldr r3, [r7, #4] - 803c044: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803c048: f043 0201 orr.w r2, r3, #1 - 803c04c: 687b ldr r3, [r7, #4] - 803c04e: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803c082: 687b ldr r3, [r7, #4] + 803c084: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803c088: f043 0201 orr.w r2, r3, #1 + 803c08c: 687b ldr r3, [r7, #4] + 803c08e: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART frame error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 803c052: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803c056: f003 0302 and.w r3, r3, #2 - 803c05a: 2b00 cmp r3, #0 - 803c05c: d011 beq.n 803c082 - 803c05e: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 - 803c062: f003 0301 and.w r3, r3, #1 - 803c066: 2b00 cmp r3, #0 - 803c068: d00b beq.n 803c082 + 803c092: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803c096: f003 0302 and.w r3, r3, #2 + 803c09a: 2b00 cmp r3, #0 + 803c09c: d011 beq.n 803c0c2 + 803c09e: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 + 803c0a2: f003 0301 and.w r3, r3, #1 + 803c0a6: 2b00 cmp r3, #0 + 803c0a8: d00b beq.n 803c0c2 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF); - 803c06a: 687b ldr r3, [r7, #4] - 803c06c: 681b ldr r3, [r3, #0] - 803c06e: 2202 movs r2, #2 - 803c070: 621a str r2, [r3, #32] + 803c0aa: 687b ldr r3, [r7, #4] + 803c0ac: 681b ldr r3, [r3, #0] + 803c0ae: 2202 movs r2, #2 + 803c0b0: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_FE; - 803c072: 687b ldr r3, [r7, #4] - 803c074: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803c078: f043 0204 orr.w r2, r3, #4 - 803c07c: 687b ldr r3, [r7, #4] - 803c07e: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803c0b2: 687b ldr r3, [r7, #4] + 803c0b4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803c0b8: f043 0204 orr.w r2, r3, #4 + 803c0bc: 687b ldr r3, [r7, #4] + 803c0be: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* UART noise error interrupt occurred --------------------------------------*/ if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U)) - 803c082: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803c086: f003 0304 and.w r3, r3, #4 - 803c08a: 2b00 cmp r3, #0 - 803c08c: d011 beq.n 803c0b2 - 803c08e: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 - 803c092: f003 0301 and.w r3, r3, #1 - 803c096: 2b00 cmp r3, #0 - 803c098: d00b beq.n 803c0b2 + 803c0c2: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803c0c6: f003 0304 and.w r3, r3, #4 + 803c0ca: 2b00 cmp r3, #0 + 803c0cc: d011 beq.n 803c0f2 + 803c0ce: f8d7 3090 ldr.w r3, [r7, #144] ; 0x90 + 803c0d2: f003 0301 and.w r3, r3, #1 + 803c0d6: 2b00 cmp r3, #0 + 803c0d8: d00b beq.n 803c0f2 { __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF); - 803c09a: 687b ldr r3, [r7, #4] - 803c09c: 681b ldr r3, [r3, #0] - 803c09e: 2204 movs r2, #4 - 803c0a0: 621a str r2, [r3, #32] + 803c0da: 687b ldr r3, [r7, #4] + 803c0dc: 681b ldr r3, [r3, #0] + 803c0de: 2204 movs r2, #4 + 803c0e0: 621a str r2, [r3, #32] huart->ErrorCode |= HAL_UART_ERROR_NE; - 803c0a2: 687b ldr r3, [r7, #4] - 803c0a4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803c0a8: f043 0202 orr.w r2, r3, #2 - 803c0ac: 687b ldr r3, [r7, #4] - 803c0ae: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803c0e2: 687b ldr r3, [r7, #4] + 803c0e4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803c0e8: f043 0202 orr.w r2, r3, #2 + 803c0ec: 687b ldr r3, [r7, #4] + 803c0ee: f8c3 208c str.w r2, [r3, #140] ; 0x8c } /* Call UART Error Call back function if need be ----------------------------*/ if (huart->ErrorCode != HAL_UART_ERROR_NONE) - 803c0b2: 687b ldr r3, [r7, #4] - 803c0b4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803c0b8: 2b00 cmp r3, #0 - 803c0ba: d006 beq.n 803c0ca + 803c0f2: 687b ldr r3, [r7, #4] + 803c0f4: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803c0f8: 2b00 cmp r3, #0 + 803c0fa: d006 beq.n 803c10a #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered error callback*/ huart->ErrorCallback(huart); #else /*Call legacy weak error callback*/ HAL_UART_ErrorCallback(huart); - 803c0bc: 6878 ldr r0, [r7, #4] - 803c0be: f7fe faa5 bl 803a60c + 803c0fc: 6878 ldr r0, [r7, #4] + 803c0fe: f7fe faa5 bl 803a64c #endif /* USE_HAL_UART_REGISTER_CALLBACKS */ huart->ErrorCode = HAL_UART_ERROR_NONE; - 803c0c2: 687b ldr r3, [r7, #4] - 803c0c4: 2200 movs r2, #0 - 803c0c6: f8c3 208c str.w r2, [r3, #140] ; 0x8c + 803c102: 687b ldr r3, [r7, #4] + 803c104: 2200 movs r2, #0 + 803c106: f8c3 208c str.w r2, [r3, #140] ; 0x8c } } if (huart->RxXferCount == 0U) - 803c0ca: 687b ldr r3, [r7, #4] - 803c0cc: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803c0d0: b29b uxth r3, r3 - 803c0d2: 2b00 cmp r3, #0 - 803c0d4: d173 bne.n 803c1be + 803c10a: 687b ldr r3, [r7, #4] + 803c10c: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803c110: b29b uxth r3, r3 + 803c112: 2b00 cmp r3, #0 + 803c114: d173 bne.n 803c1fe { /* Disable the UART Parity Error Interrupt and RXFT interrupt*/ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_PEIE); - 803c0d6: 687b ldr r3, [r7, #4] - 803c0d8: 681b ldr r3, [r3, #0] - 803c0da: 663b str r3, [r7, #96] ; 0x60 + 803c116: 687b ldr r3, [r7, #4] + 803c118: 681b ldr r3, [r3, #0] + 803c11a: 663b str r3, [r7, #96] ; 0x60 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803c0dc: 6e3b ldr r3, [r7, #96] ; 0x60 - 803c0de: e853 3f00 ldrex r3, [r3] - 803c0e2: 65fb str r3, [r7, #92] ; 0x5c + 803c11c: 6e3b ldr r3, [r7, #96] ; 0x60 + 803c11e: e853 3f00 ldrex r3, [r3] + 803c122: 65fb str r3, [r7, #92] ; 0x5c return(result); - 803c0e4: 6dfb ldr r3, [r7, #92] ; 0x5c - 803c0e6: f423 7380 bic.w r3, r3, #256 ; 0x100 - 803c0ea: f8c7 3084 str.w r3, [r7, #132] ; 0x84 - 803c0ee: 687b ldr r3, [r7, #4] - 803c0f0: 681b ldr r3, [r3, #0] - 803c0f2: 461a mov r2, r3 - 803c0f4: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 - 803c0f8: 66fb str r3, [r7, #108] ; 0x6c - 803c0fa: 66ba str r2, [r7, #104] ; 0x68 + 803c124: 6dfb ldr r3, [r7, #92] ; 0x5c + 803c126: f423 7380 bic.w r3, r3, #256 ; 0x100 + 803c12a: f8c7 3084 str.w r3, [r7, #132] ; 0x84 + 803c12e: 687b ldr r3, [r7, #4] + 803c130: 681b ldr r3, [r3, #0] + 803c132: 461a mov r2, r3 + 803c134: f8d7 3084 ldr.w r3, [r7, #132] ; 0x84 + 803c138: 66fb str r3, [r7, #108] ; 0x6c + 803c13a: 66ba str r2, [r7, #104] ; 0x68 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803c0fc: 6eb9 ldr r1, [r7, #104] ; 0x68 - 803c0fe: 6efa ldr r2, [r7, #108] ; 0x6c - 803c100: e841 2300 strex r3, r2, [r1] - 803c104: 667b str r3, [r7, #100] ; 0x64 + 803c13c: 6eb9 ldr r1, [r7, #104] ; 0x68 + 803c13e: 6efa ldr r2, [r7, #108] ; 0x6c + 803c140: e841 2300 strex r3, r2, [r1] + 803c144: 667b str r3, [r7, #100] ; 0x64 return(result); - 803c106: 6e7b ldr r3, [r7, #100] ; 0x64 - 803c108: 2b00 cmp r3, #0 - 803c10a: d1e4 bne.n 803c0d6 + 803c146: 6e7b ldr r3, [r7, #100] ; 0x64 + 803c148: 2b00 cmp r3, #0 + 803c14a: d1e4 bne.n 803c116 /* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) and RX FIFO Threshold interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR3, (USART_CR3_EIE | USART_CR3_RXFTIE)); - 803c10c: 687b ldr r3, [r7, #4] - 803c10e: 681b ldr r3, [r3, #0] - 803c110: 3308 adds r3, #8 - 803c112: 64fb str r3, [r7, #76] ; 0x4c + 803c14c: 687b ldr r3, [r7, #4] + 803c14e: 681b ldr r3, [r3, #0] + 803c150: 3308 adds r3, #8 + 803c152: 64fb str r3, [r7, #76] ; 0x4c __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803c114: 6cfb ldr r3, [r7, #76] ; 0x4c - 803c116: e853 3f00 ldrex r3, [r3] - 803c11a: 64bb str r3, [r7, #72] ; 0x48 + 803c154: 6cfb ldr r3, [r7, #76] ; 0x4c + 803c156: e853 3f00 ldrex r3, [r3] + 803c15a: 64bb str r3, [r7, #72] ; 0x48 return(result); - 803c11c: 6cba ldr r2, [r7, #72] ; 0x48 - 803c11e: 4b57 ldr r3, [pc, #348] ; (803c27c ) - 803c120: 4013 ands r3, r2 - 803c122: f8c7 3080 str.w r3, [r7, #128] ; 0x80 - 803c126: 687b ldr r3, [r7, #4] - 803c128: 681b ldr r3, [r3, #0] - 803c12a: 3308 adds r3, #8 - 803c12c: f8d7 2080 ldr.w r2, [r7, #128] ; 0x80 - 803c130: 65ba str r2, [r7, #88] ; 0x58 - 803c132: 657b str r3, [r7, #84] ; 0x54 + 803c15c: 6cba ldr r2, [r7, #72] ; 0x48 + 803c15e: 4b57 ldr r3, [pc, #348] ; (803c2bc ) + 803c160: 4013 ands r3, r2 + 803c162: f8c7 3080 str.w r3, [r7, #128] ; 0x80 + 803c166: 687b ldr r3, [r7, #4] + 803c168: 681b ldr r3, [r3, #0] + 803c16a: 3308 adds r3, #8 + 803c16c: f8d7 2080 ldr.w r2, [r7, #128] ; 0x80 + 803c170: 65ba str r2, [r7, #88] ; 0x58 + 803c172: 657b str r3, [r7, #84] ; 0x54 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803c134: 6d79 ldr r1, [r7, #84] ; 0x54 - 803c136: 6dba ldr r2, [r7, #88] ; 0x58 - 803c138: e841 2300 strex r3, r2, [r1] - 803c13c: 653b str r3, [r7, #80] ; 0x50 + 803c174: 6d79 ldr r1, [r7, #84] ; 0x54 + 803c176: 6dba ldr r2, [r7, #88] ; 0x58 + 803c178: e841 2300 strex r3, r2, [r1] + 803c17c: 653b str r3, [r7, #80] ; 0x50 return(result); - 803c13e: 6d3b ldr r3, [r7, #80] ; 0x50 - 803c140: 2b00 cmp r3, #0 - 803c142: d1e3 bne.n 803c10c + 803c17e: 6d3b ldr r3, [r7, #80] ; 0x50 + 803c180: 2b00 cmp r3, #0 + 803c182: d1e3 bne.n 803c14c /* Rx process is completed, restore huart->RxState to Ready */ huart->RxState = HAL_UART_STATE_READY; - 803c144: 687b ldr r3, [r7, #4] - 803c146: 2220 movs r2, #32 - 803c148: f8c3 2088 str.w r2, [r3, #136] ; 0x88 + 803c184: 687b ldr r3, [r7, #4] + 803c186: 2220 movs r2, #32 + 803c188: f8c3 2088 str.w r2, [r3, #136] ; 0x88 /* Clear RxISR function pointer */ huart->RxISR = NULL; - 803c14c: 687b ldr r3, [r7, #4] - 803c14e: 2200 movs r2, #0 - 803c150: 671a str r2, [r3, #112] ; 0x70 + 803c18c: 687b ldr r3, [r7, #4] + 803c18e: 2200 movs r2, #0 + 803c190: 671a str r2, [r3, #112] ; 0x70 /* Check current reception Mode : If Reception till IDLE event has been selected : */ if (huart->ReceptionType == HAL_UART_RECEPTION_TOIDLE) - 803c152: 687b ldr r3, [r7, #4] - 803c154: 6edb ldr r3, [r3, #108] ; 0x6c - 803c156: 2b01 cmp r3, #1 - 803c158: d12e bne.n 803c1b8 + 803c192: 687b ldr r3, [r7, #4] + 803c194: 6edb ldr r3, [r3, #108] ; 0x6c + 803c196: 2b01 cmp r3, #1 + 803c198: d12e bne.n 803c1f8 { /* Set reception type to Standard */ huart->ReceptionType = HAL_UART_RECEPTION_STANDARD; - 803c15a: 687b ldr r3, [r7, #4] - 803c15c: 2200 movs r2, #0 - 803c15e: 66da str r2, [r3, #108] ; 0x6c + 803c19a: 687b ldr r3, [r7, #4] + 803c19c: 2200 movs r2, #0 + 803c19e: 66da str r2, [r3, #108] ; 0x6c /* Disable IDLE interrupt */ ATOMIC_CLEAR_BIT(huart->Instance->CR1, USART_CR1_IDLEIE); - 803c160: 687b ldr r3, [r7, #4] - 803c162: 681b ldr r3, [r3, #0] - 803c164: 63bb str r3, [r7, #56] ; 0x38 + 803c1a0: 687b ldr r3, [r7, #4] + 803c1a2: 681b ldr r3, [r3, #0] + 803c1a4: 63bb str r3, [r7, #56] ; 0x38 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803c166: 6bbb ldr r3, [r7, #56] ; 0x38 - 803c168: e853 3f00 ldrex r3, [r3] - 803c16c: 637b str r3, [r7, #52] ; 0x34 + 803c1a6: 6bbb ldr r3, [r7, #56] ; 0x38 + 803c1a8: e853 3f00 ldrex r3, [r3] + 803c1ac: 637b str r3, [r7, #52] ; 0x34 return(result); - 803c16e: 6b7b ldr r3, [r7, #52] ; 0x34 - 803c170: f023 0310 bic.w r3, r3, #16 - 803c174: 67fb str r3, [r7, #124] ; 0x7c - 803c176: 687b ldr r3, [r7, #4] - 803c178: 681b ldr r3, [r3, #0] - 803c17a: 461a mov r2, r3 - 803c17c: 6ffb ldr r3, [r7, #124] ; 0x7c - 803c17e: 647b str r3, [r7, #68] ; 0x44 - 803c180: 643a str r2, [r7, #64] ; 0x40 + 803c1ae: 6b7b ldr r3, [r7, #52] ; 0x34 + 803c1b0: f023 0310 bic.w r3, r3, #16 + 803c1b4: 67fb str r3, [r7, #124] ; 0x7c + 803c1b6: 687b ldr r3, [r7, #4] + 803c1b8: 681b ldr r3, [r3, #0] + 803c1ba: 461a mov r2, r3 + 803c1bc: 6ffb ldr r3, [r7, #124] ; 0x7c + 803c1be: 647b str r3, [r7, #68] ; 0x44 + 803c1c0: 643a str r2, [r7, #64] ; 0x40 __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803c182: 6c39 ldr r1, [r7, #64] ; 0x40 - 803c184: 6c7a ldr r2, [r7, #68] ; 0x44 - 803c186: e841 2300 strex r3, r2, [r1] - 803c18a: 63fb str r3, [r7, #60] ; 0x3c + 803c1c2: 6c39 ldr r1, [r7, #64] ; 0x40 + 803c1c4: 6c7a ldr r2, [r7, #68] ; 0x44 + 803c1c6: e841 2300 strex r3, r2, [r1] + 803c1ca: 63fb str r3, [r7, #60] ; 0x3c return(result); - 803c18c: 6bfb ldr r3, [r7, #60] ; 0x3c - 803c18e: 2b00 cmp r3, #0 - 803c190: d1e6 bne.n 803c160 + 803c1cc: 6bfb ldr r3, [r7, #60] ; 0x3c + 803c1ce: 2b00 cmp r3, #0 + 803c1d0: d1e6 bne.n 803c1a0 if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE) == SET) - 803c192: 687b ldr r3, [r7, #4] - 803c194: 681b ldr r3, [r3, #0] - 803c196: 69db ldr r3, [r3, #28] - 803c198: f003 0310 and.w r3, r3, #16 - 803c19c: 2b10 cmp r3, #16 - 803c19e: d103 bne.n 803c1a8 + 803c1d2: 687b ldr r3, [r7, #4] + 803c1d4: 681b ldr r3, [r3, #0] + 803c1d6: 69db ldr r3, [r3, #28] + 803c1d8: f003 0310 and.w r3, r3, #16 + 803c1dc: 2b10 cmp r3, #16 + 803c1de: d103 bne.n 803c1e8 { /* Clear IDLE Flag */ __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_IDLEF); - 803c1a0: 687b ldr r3, [r7, #4] - 803c1a2: 681b ldr r3, [r3, #0] - 803c1a4: 2210 movs r2, #16 - 803c1a6: 621a str r2, [r3, #32] + 803c1e0: 687b ldr r3, [r7, #4] + 803c1e2: 681b ldr r3, [r3, #0] + 803c1e4: 2210 movs r2, #16 + 803c1e6: 621a str r2, [r3, #32] #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx Event callback*/ huart->RxEventCallback(huart, huart->RxXferSize); #else /*Call legacy weak Rx Event callback*/ HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize); - 803c1a8: 687b ldr r3, [r7, #4] - 803c1aa: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c - 803c1ae: 4619 mov r1, r3 - 803c1b0: 6878 ldr r0, [r7, #4] - 803c1b2: f7fe fa35 bl 803a620 - 803c1b6: e002 b.n 803c1be + 803c1e8: 687b ldr r3, [r7, #4] + 803c1ea: f8b3 305c ldrh.w r3, [r3, #92] ; 0x5c + 803c1ee: 4619 mov r1, r3 + 803c1f0: 6878 ldr r0, [r7, #4] + 803c1f2: f7fe fa35 bl 803a660 + 803c1f6: e002 b.n 803c1fe #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) /*Call registered Rx complete callback*/ huart->RxCpltCallback(huart); #else /*Call legacy weak Rx complete callback*/ HAL_UART_RxCpltCallback(huart); - 803c1b8: 6878 ldr r0, [r7, #4] - 803c1ba: f7e5 fcdb bl 8021b74 + 803c1f8: 6878 ldr r0, [r7, #4] + 803c1fa: f7e5 fcbb bl 8021b74 while ((nb_rx_data > 0U) && ((isrflags & USART_ISR_RXNE_RXFNE) != 0U)) - 803c1be: f8b7 308e ldrh.w r3, [r7, #142] ; 0x8e - 803c1c2: 2b00 cmp r3, #0 - 803c1c4: d006 beq.n 803c1d4 - 803c1c6: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c - 803c1ca: f003 0320 and.w r3, r3, #32 - 803c1ce: 2b00 cmp r3, #0 - 803c1d0: f47f aefc bne.w 803bfcc + 803c1fe: f8b7 308e ldrh.w r3, [r7, #142] ; 0x8e + 803c202: 2b00 cmp r3, #0 + 803c204: d006 beq.n 803c214 + 803c206: f8d7 309c ldr.w r3, [r7, #156] ; 0x9c + 803c20a: f003 0320 and.w r3, r3, #32 + 803c20e: 2b00 cmp r3, #0 + 803c210: f47f aefc bne.w 803c00c /* When remaining number of bytes to receive is less than the RX FIFO threshold, next incoming frames are processed as if FIFO mode was disabled (i.e. one interrupt per received frame). */ rxdatacount = huart->RxXferCount; - 803c1d4: 687b ldr r3, [r7, #4] - 803c1d6: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e - 803c1da: f8a7 307a strh.w r3, [r7, #122] ; 0x7a + 803c214: 687b ldr r3, [r7, #4] + 803c216: f8b3 305e ldrh.w r3, [r3, #94] ; 0x5e + 803c21a: f8a7 307a strh.w r3, [r7, #122] ; 0x7a if ((rxdatacount != 0U) && (rxdatacount < huart->NbRxDataToProcess)) - 803c1de: f8b7 307a ldrh.w r3, [r7, #122] ; 0x7a - 803c1e2: 2b00 cmp r3, #0 - 803c1e4: d045 beq.n 803c272 - 803c1e6: 687b ldr r3, [r7, #4] - 803c1e8: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 803c1ec: f8b7 207a ldrh.w r2, [r7, #122] ; 0x7a - 803c1f0: 429a cmp r2, r3 - 803c1f2: d23e bcs.n 803c272 + 803c21e: f8b7 307a ldrh.w r3, [r7, #122] ; 0x7a + 803c222: 2b00 cmp r3, #0 + 803c224: d045 beq.n 803c2b2 + 803c226: 687b ldr r3, [r7, #4] + 803c228: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 803c22c: f8b7 207a ldrh.w r2, [r7, #122] ; 0x7a + 803c230: 429a cmp r2, r3 + 803c232: d23e bcs.n 803c2b2 { /* Disable the UART RXFT interrupt*/ ATOMIC_CLEAR_BIT(huart->Instance->CR3, USART_CR3_RXFTIE); - 803c1f4: 687b ldr r3, [r7, #4] - 803c1f6: 681b ldr r3, [r3, #0] - 803c1f8: 3308 adds r3, #8 - 803c1fa: 627b str r3, [r7, #36] ; 0x24 + 803c234: 687b ldr r3, [r7, #4] + 803c236: 681b ldr r3, [r3, #0] + 803c238: 3308 adds r3, #8 + 803c23a: 627b str r3, [r7, #36] ; 0x24 __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803c1fc: 6a7b ldr r3, [r7, #36] ; 0x24 - 803c1fe: e853 3f00 ldrex r3, [r3] - 803c202: 623b str r3, [r7, #32] + 803c23c: 6a7b ldr r3, [r7, #36] ; 0x24 + 803c23e: e853 3f00 ldrex r3, [r3] + 803c242: 623b str r3, [r7, #32] return(result); - 803c204: 6a3b ldr r3, [r7, #32] - 803c206: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 - 803c20a: 677b str r3, [r7, #116] ; 0x74 - 803c20c: 687b ldr r3, [r7, #4] - 803c20e: 681b ldr r3, [r3, #0] - 803c210: 3308 adds r3, #8 - 803c212: 6f7a ldr r2, [r7, #116] ; 0x74 - 803c214: 633a str r2, [r7, #48] ; 0x30 - 803c216: 62fb str r3, [r7, #44] ; 0x2c + 803c244: 6a3b ldr r3, [r7, #32] + 803c246: f023 5380 bic.w r3, r3, #268435456 ; 0x10000000 + 803c24a: 677b str r3, [r7, #116] ; 0x74 + 803c24c: 687b ldr r3, [r7, #4] + 803c24e: 681b ldr r3, [r3, #0] + 803c250: 3308 adds r3, #8 + 803c252: 6f7a ldr r2, [r7, #116] ; 0x74 + 803c254: 633a str r2, [r7, #48] ; 0x30 + 803c256: 62fb str r3, [r7, #44] ; 0x2c __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803c218: 6af9 ldr r1, [r7, #44] ; 0x2c - 803c21a: 6b3a ldr r2, [r7, #48] ; 0x30 - 803c21c: e841 2300 strex r3, r2, [r1] - 803c220: 62bb str r3, [r7, #40] ; 0x28 + 803c258: 6af9 ldr r1, [r7, #44] ; 0x2c + 803c25a: 6b3a ldr r2, [r7, #48] ; 0x30 + 803c25c: e841 2300 strex r3, r2, [r1] + 803c260: 62bb str r3, [r7, #40] ; 0x28 return(result); - 803c222: 6abb ldr r3, [r7, #40] ; 0x28 - 803c224: 2b00 cmp r3, #0 - 803c226: d1e5 bne.n 803c1f4 + 803c262: 6abb ldr r3, [r7, #40] ; 0x28 + 803c264: 2b00 cmp r3, #0 + 803c266: d1e5 bne.n 803c234 /* Update the RxISR function pointer */ huart->RxISR = UART_RxISR_16BIT; - 803c228: 687b ldr r3, [r7, #4] - 803c22a: 4a15 ldr r2, [pc, #84] ; (803c280 ) - 803c22c: 671a str r2, [r3, #112] ; 0x70 + 803c268: 687b ldr r3, [r7, #4] + 803c26a: 4a15 ldr r2, [pc, #84] ; (803c2c0 ) + 803c26c: 671a str r2, [r3, #112] ; 0x70 /* Enable the UART Data Register Not Empty interrupt */ ATOMIC_SET_BIT(huart->Instance->CR1, USART_CR1_RXNEIE_RXFNEIE); - 803c22e: 687b ldr r3, [r7, #4] - 803c230: 681b ldr r3, [r3, #0] - 803c232: 613b str r3, [r7, #16] + 803c26e: 687b ldr r3, [r7, #4] + 803c270: 681b ldr r3, [r3, #0] + 803c272: 613b str r3, [r7, #16] __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) ); - 803c234: 693b ldr r3, [r7, #16] - 803c236: e853 3f00 ldrex r3, [r3] - 803c23a: 60fb str r3, [r7, #12] + 803c274: 693b ldr r3, [r7, #16] + 803c276: e853 3f00 ldrex r3, [r3] + 803c27a: 60fb str r3, [r7, #12] return(result); - 803c23c: 68fb ldr r3, [r7, #12] - 803c23e: f043 0320 orr.w r3, r3, #32 - 803c242: 673b str r3, [r7, #112] ; 0x70 - 803c244: 687b ldr r3, [r7, #4] - 803c246: 681b ldr r3, [r3, #0] - 803c248: 461a mov r2, r3 - 803c24a: 6f3b ldr r3, [r7, #112] ; 0x70 - 803c24c: 61fb str r3, [r7, #28] - 803c24e: 61ba str r2, [r7, #24] + 803c27c: 68fb ldr r3, [r7, #12] + 803c27e: f043 0320 orr.w r3, r3, #32 + 803c282: 673b str r3, [r7, #112] ; 0x70 + 803c284: 687b ldr r3, [r7, #4] + 803c286: 681b ldr r3, [r3, #0] + 803c288: 461a mov r2, r3 + 803c28a: 6f3b ldr r3, [r7, #112] ; 0x70 + 803c28c: 61fb str r3, [r7, #28] + 803c28e: 61ba str r2, [r7, #24] __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) ); - 803c250: 69b9 ldr r1, [r7, #24] - 803c252: 69fa ldr r2, [r7, #28] - 803c254: e841 2300 strex r3, r2, [r1] - 803c258: 617b str r3, [r7, #20] + 803c290: 69b9 ldr r1, [r7, #24] + 803c292: 69fa ldr r2, [r7, #28] + 803c294: e841 2300 strex r3, r2, [r1] + 803c298: 617b str r3, [r7, #20] return(result); - 803c25a: 697b ldr r3, [r7, #20] - 803c25c: 2b00 cmp r3, #0 - 803c25e: d1e6 bne.n 803c22e + 803c29a: 697b ldr r3, [r7, #20] + 803c29c: 2b00 cmp r3, #0 + 803c29e: d1e6 bne.n 803c26e else { /* Clear RXNE interrupt flag */ __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); } } - 803c260: e007 b.n 803c272 + 803c2a0: e007 b.n 803c2b2 __HAL_UART_SEND_REQ(huart, UART_RXDATA_FLUSH_REQUEST); - 803c262: 687b ldr r3, [r7, #4] - 803c264: 681b ldr r3, [r3, #0] - 803c266: 699a ldr r2, [r3, #24] - 803c268: 687b ldr r3, [r7, #4] - 803c26a: 681b ldr r3, [r3, #0] - 803c26c: f042 0208 orr.w r2, r2, #8 - 803c270: 619a str r2, [r3, #24] -} - 803c272: bf00 nop - 803c274: 37a0 adds r7, #160 ; 0xa0 - 803c276: 46bd mov sp, r7 - 803c278: bd80 pop {r7, pc} - 803c27a: bf00 nop - 803c27c: effffffe .word 0xeffffffe - 803c280: 0803bb2d .word 0x0803bb2d - -0803c284 : + 803c2a2: 687b ldr r3, [r7, #4] + 803c2a4: 681b ldr r3, [r3, #0] + 803c2a6: 699a ldr r2, [r3, #24] + 803c2a8: 687b ldr r3, [r7, #4] + 803c2aa: 681b ldr r3, [r3, #0] + 803c2ac: f042 0208 orr.w r2, r2, #8 + 803c2b0: 619a str r2, [r3, #24] +} + 803c2b2: bf00 nop + 803c2b4: 37a0 adds r7, #160 ; 0xa0 + 803c2b6: 46bd mov sp, r7 + 803c2b8: bd80 pop {r7, pc} + 803c2ba: bf00 nop + 803c2bc: effffffe .word 0xeffffffe + 803c2c0: 0803bb6d .word 0x0803bb6d + +0803c2c4 : * @brief UART wakeup from Stop mode callback. * @param huart UART handle. * @retval None */ __weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) { - 803c284: b480 push {r7} - 803c286: b083 sub sp, #12 - 803c288: af00 add r7, sp, #0 - 803c28a: 6078 str r0, [r7, #4] + 803c2c4: b480 push {r7} + 803c2c6: b083 sub sp, #12 + 803c2c8: af00 add r7, sp, #0 + 803c2ca: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UARTEx_WakeupCallback can be implemented in the user file. */ } - 803c28c: bf00 nop - 803c28e: 370c adds r7, #12 - 803c290: 46bd mov sp, r7 - 803c292: f85d 7b04 ldr.w r7, [sp], #4 - 803c296: 4770 bx lr + 803c2cc: bf00 nop + 803c2ce: 370c adds r7, #12 + 803c2d0: 46bd mov sp, r7 + 803c2d2: f85d 7b04 ldr.w r7, [sp], #4 + 803c2d6: 4770 bx lr -0803c298 : +0803c2d8 : * @brief UART RX Fifo full callback. * @param huart UART handle. * @retval None */ __weak void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart) { - 803c298: b480 push {r7} - 803c29a: b083 sub sp, #12 - 803c29c: af00 add r7, sp, #0 - 803c29e: 6078 str r0, [r7, #4] + 803c2d8: b480 push {r7} + 803c2da: b083 sub sp, #12 + 803c2dc: af00 add r7, sp, #0 + 803c2de: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UARTEx_RxFifoFullCallback can be implemented in the user file. */ } - 803c2a0: bf00 nop - 803c2a2: 370c adds r7, #12 - 803c2a4: 46bd mov sp, r7 - 803c2a6: f85d 7b04 ldr.w r7, [sp], #4 - 803c2aa: 4770 bx lr + 803c2e0: bf00 nop + 803c2e2: 370c adds r7, #12 + 803c2e4: 46bd mov sp, r7 + 803c2e6: f85d 7b04 ldr.w r7, [sp], #4 + 803c2ea: 4770 bx lr -0803c2ac : +0803c2ec : * @brief UART TX Fifo empty callback. * @param huart UART handle. * @retval None */ __weak void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart) { - 803c2ac: b480 push {r7} - 803c2ae: b083 sub sp, #12 - 803c2b0: af00 add r7, sp, #0 - 803c2b2: 6078 str r0, [r7, #4] + 803c2ec: b480 push {r7} + 803c2ee: b083 sub sp, #12 + 803c2f0: af00 add r7, sp, #0 + 803c2f2: 6078 str r0, [r7, #4] UNUSED(huart); /* NOTE : This function should not be modified, when the callback is needed, the HAL_UARTEx_TxFifoEmptyCallback can be implemented in the user file. */ } - 803c2b4: bf00 nop - 803c2b6: 370c adds r7, #12 - 803c2b8: 46bd mov sp, r7 - 803c2ba: f85d 7b04 ldr.w r7, [sp], #4 - 803c2be: 4770 bx lr + 803c2f4: bf00 nop + 803c2f6: 370c adds r7, #12 + 803c2f8: 46bd mov sp, r7 + 803c2fa: f85d 7b04 ldr.w r7, [sp], #4 + 803c2fe: 4770 bx lr -0803c2c0 : +0803c300 : * @brief Enable the FIFO mode. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_EnableFifoMode(UART_HandleTypeDef *huart) { - 803c2c0: b580 push {r7, lr} - 803c2c2: b084 sub sp, #16 - 803c2c4: af00 add r7, sp, #0 - 803c2c6: 6078 str r0, [r7, #4] + 803c300: b580 push {r7, lr} + 803c302: b084 sub sp, #16 + 803c304: af00 add r7, sp, #0 + 803c306: 6078 str r0, [r7, #4] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); /* Process Locked */ __HAL_LOCK(huart); - 803c2c8: 687b ldr r3, [r7, #4] - 803c2ca: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 803c2ce: 2b01 cmp r3, #1 - 803c2d0: d101 bne.n 803c2d6 - 803c2d2: 2302 movs r3, #2 - 803c2d4: e02b b.n 803c32e - 803c2d6: 687b ldr r3, [r7, #4] - 803c2d8: 2201 movs r2, #1 - 803c2da: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c308: 687b ldr r3, [r7, #4] + 803c30a: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 803c30e: 2b01 cmp r3, #1 + 803c310: d101 bne.n 803c316 + 803c312: 2302 movs r3, #2 + 803c314: e02b b.n 803c36e + 803c316: 687b ldr r3, [r7, #4] + 803c318: 2201 movs r2, #1 + 803c31a: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->gState = HAL_UART_STATE_BUSY; - 803c2de: 687b ldr r3, [r7, #4] - 803c2e0: 2224 movs r2, #36 ; 0x24 - 803c2e2: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c31e: 687b ldr r3, [r7, #4] + 803c320: 2224 movs r2, #36 ; 0x24 + 803c322: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 803c2e6: 687b ldr r3, [r7, #4] - 803c2e8: 681b ldr r3, [r3, #0] - 803c2ea: 681b ldr r3, [r3, #0] - 803c2ec: 60fb str r3, [r7, #12] + 803c326: 687b ldr r3, [r7, #4] + 803c328: 681b ldr r3, [r3, #0] + 803c32a: 681b ldr r3, [r3, #0] + 803c32c: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 803c2ee: 687b ldr r3, [r7, #4] - 803c2f0: 681b ldr r3, [r3, #0] - 803c2f2: 681a ldr r2, [r3, #0] - 803c2f4: 687b ldr r3, [r7, #4] - 803c2f6: 681b ldr r3, [r3, #0] - 803c2f8: f022 0201 bic.w r2, r2, #1 - 803c2fc: 601a str r2, [r3, #0] + 803c32e: 687b ldr r3, [r7, #4] + 803c330: 681b ldr r3, [r3, #0] + 803c332: 681a ldr r2, [r3, #0] + 803c334: 687b ldr r3, [r7, #4] + 803c336: 681b ldr r3, [r3, #0] + 803c338: f022 0201 bic.w r2, r2, #1 + 803c33c: 601a str r2, [r3, #0] /* Enable FIFO mode */ SET_BIT(tmpcr1, USART_CR1_FIFOEN); - 803c2fe: 68fb ldr r3, [r7, #12] - 803c300: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 - 803c304: 60fb str r3, [r7, #12] + 803c33e: 68fb ldr r3, [r7, #12] + 803c340: f043 5300 orr.w r3, r3, #536870912 ; 0x20000000 + 803c344: 60fb str r3, [r7, #12] huart->FifoMode = UART_FIFOMODE_ENABLE; - 803c306: 687b ldr r3, [r7, #4] - 803c308: f04f 5200 mov.w r2, #536870912 ; 0x20000000 - 803c30c: 665a str r2, [r3, #100] ; 0x64 + 803c346: 687b ldr r3, [r7, #4] + 803c348: f04f 5200 mov.w r2, #536870912 ; 0x20000000 + 803c34c: 665a str r2, [r3, #100] ; 0x64 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 803c30e: 687b ldr r3, [r7, #4] - 803c310: 681b ldr r3, [r3, #0] - 803c312: 68fa ldr r2, [r7, #12] - 803c314: 601a str r2, [r3, #0] + 803c34e: 687b ldr r3, [r7, #4] + 803c350: 681b ldr r3, [r3, #0] + 803c352: 68fa ldr r2, [r7, #12] + 803c354: 601a str r2, [r3, #0] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 803c316: 6878 ldr r0, [r7, #4] - 803c318: f000 f8c2 bl 803c4a0 + 803c356: 6878 ldr r0, [r7, #4] + 803c358: f000 f8c2 bl 803c4e0 huart->gState = HAL_UART_STATE_READY; - 803c31c: 687b ldr r3, [r7, #4] - 803c31e: 2220 movs r2, #32 - 803c320: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c35c: 687b ldr r3, [r7, #4] + 803c35e: 2220 movs r2, #32 + 803c360: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Process Unlocked */ __HAL_UNLOCK(huart); - 803c324: 687b ldr r3, [r7, #4] - 803c326: 2200 movs r2, #0 - 803c328: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c364: 687b ldr r3, [r7, #4] + 803c366: 2200 movs r2, #0 + 803c368: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_OK; - 803c32c: 2300 movs r3, #0 + 803c36c: 2300 movs r3, #0 } - 803c32e: 4618 mov r0, r3 - 803c330: 3710 adds r7, #16 - 803c332: 46bd mov sp, r7 - 803c334: bd80 pop {r7, pc} + 803c36e: 4618 mov r0, r3 + 803c370: 3710 adds r7, #16 + 803c372: 46bd mov sp, r7 + 803c374: bd80 pop {r7, pc} -0803c336 : +0803c376 : * @brief Disable the FIFO mode. * @param huart UART handle. * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_DisableFifoMode(UART_HandleTypeDef *huart) { - 803c336: b480 push {r7} - 803c338: b085 sub sp, #20 - 803c33a: af00 add r7, sp, #0 - 803c33c: 6078 str r0, [r7, #4] + 803c376: b480 push {r7} + 803c378: b085 sub sp, #20 + 803c37a: af00 add r7, sp, #0 + 803c37c: 6078 str r0, [r7, #4] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); /* Process Locked */ __HAL_LOCK(huart); - 803c33e: 687b ldr r3, [r7, #4] - 803c340: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 803c344: 2b01 cmp r3, #1 - 803c346: d101 bne.n 803c34c - 803c348: 2302 movs r3, #2 - 803c34a: e027 b.n 803c39c - 803c34c: 687b ldr r3, [r7, #4] - 803c34e: 2201 movs r2, #1 - 803c350: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c37e: 687b ldr r3, [r7, #4] + 803c380: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 803c384: 2b01 cmp r3, #1 + 803c386: d101 bne.n 803c38c + 803c388: 2302 movs r3, #2 + 803c38a: e027 b.n 803c3dc + 803c38c: 687b ldr r3, [r7, #4] + 803c38e: 2201 movs r2, #1 + 803c390: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->gState = HAL_UART_STATE_BUSY; - 803c354: 687b ldr r3, [r7, #4] - 803c356: 2224 movs r2, #36 ; 0x24 - 803c358: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c394: 687b ldr r3, [r7, #4] + 803c396: 2224 movs r2, #36 ; 0x24 + 803c398: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 803c35c: 687b ldr r3, [r7, #4] - 803c35e: 681b ldr r3, [r3, #0] - 803c360: 681b ldr r3, [r3, #0] - 803c362: 60fb str r3, [r7, #12] + 803c39c: 687b ldr r3, [r7, #4] + 803c39e: 681b ldr r3, [r3, #0] + 803c3a0: 681b ldr r3, [r3, #0] + 803c3a2: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 803c364: 687b ldr r3, [r7, #4] - 803c366: 681b ldr r3, [r3, #0] - 803c368: 681a ldr r2, [r3, #0] - 803c36a: 687b ldr r3, [r7, #4] - 803c36c: 681b ldr r3, [r3, #0] - 803c36e: f022 0201 bic.w r2, r2, #1 - 803c372: 601a str r2, [r3, #0] + 803c3a4: 687b ldr r3, [r7, #4] + 803c3a6: 681b ldr r3, [r3, #0] + 803c3a8: 681a ldr r2, [r3, #0] + 803c3aa: 687b ldr r3, [r7, #4] + 803c3ac: 681b ldr r3, [r3, #0] + 803c3ae: f022 0201 bic.w r2, r2, #1 + 803c3b2: 601a str r2, [r3, #0] /* Enable FIFO mode */ CLEAR_BIT(tmpcr1, USART_CR1_FIFOEN); - 803c374: 68fb ldr r3, [r7, #12] - 803c376: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 - 803c37a: 60fb str r3, [r7, #12] + 803c3b4: 68fb ldr r3, [r7, #12] + 803c3b6: f023 5300 bic.w r3, r3, #536870912 ; 0x20000000 + 803c3ba: 60fb str r3, [r7, #12] huart->FifoMode = UART_FIFOMODE_DISABLE; - 803c37c: 687b ldr r3, [r7, #4] - 803c37e: 2200 movs r2, #0 - 803c380: 665a str r2, [r3, #100] ; 0x64 + 803c3bc: 687b ldr r3, [r7, #4] + 803c3be: 2200 movs r2, #0 + 803c3c0: 665a str r2, [r3, #100] ; 0x64 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 803c382: 687b ldr r3, [r7, #4] - 803c384: 681b ldr r3, [r3, #0] - 803c386: 68fa ldr r2, [r7, #12] - 803c388: 601a str r2, [r3, #0] + 803c3c2: 687b ldr r3, [r7, #4] + 803c3c4: 681b ldr r3, [r3, #0] + 803c3c6: 68fa ldr r2, [r7, #12] + 803c3c8: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 803c38a: 687b ldr r3, [r7, #4] - 803c38c: 2220 movs r2, #32 - 803c38e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c3ca: 687b ldr r3, [r7, #4] + 803c3cc: 2220 movs r2, #32 + 803c3ce: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Process Unlocked */ __HAL_UNLOCK(huart); - 803c392: 687b ldr r3, [r7, #4] - 803c394: 2200 movs r2, #0 - 803c396: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c3d2: 687b ldr r3, [r7, #4] + 803c3d4: 2200 movs r2, #0 + 803c3d6: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_OK; - 803c39a: 2300 movs r3, #0 + 803c3da: 2300 movs r3, #0 } - 803c39c: 4618 mov r0, r3 - 803c39e: 3714 adds r7, #20 - 803c3a0: 46bd mov sp, r7 - 803c3a2: f85d 7b04 ldr.w r7, [sp], #4 - 803c3a6: 4770 bx lr + 803c3dc: 4618 mov r0, r3 + 803c3de: 3714 adds r7, #20 + 803c3e0: 46bd mov sp, r7 + 803c3e2: f85d 7b04 ldr.w r7, [sp], #4 + 803c3e6: 4770 bx lr -0803c3a8 : +0803c3e8 : * @arg @ref UART_TXFIFO_THRESHOLD_7_8 * @arg @ref UART_TXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetTxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 803c3a8: b580 push {r7, lr} - 803c3aa: b084 sub sp, #16 - 803c3ac: af00 add r7, sp, #0 - 803c3ae: 6078 str r0, [r7, #4] - 803c3b0: 6039 str r1, [r7, #0] + 803c3e8: b580 push {r7, lr} + 803c3ea: b084 sub sp, #16 + 803c3ec: af00 add r7, sp, #0 + 803c3ee: 6078 str r0, [r7, #4] + 803c3f0: 6039 str r1, [r7, #0] /* Check parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_TXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 803c3b2: 687b ldr r3, [r7, #4] - 803c3b4: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 803c3b8: 2b01 cmp r3, #1 - 803c3ba: d101 bne.n 803c3c0 - 803c3bc: 2302 movs r3, #2 - 803c3be: e02d b.n 803c41c - 803c3c0: 687b ldr r3, [r7, #4] - 803c3c2: 2201 movs r2, #1 - 803c3c4: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c3f2: 687b ldr r3, [r7, #4] + 803c3f4: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 803c3f8: 2b01 cmp r3, #1 + 803c3fa: d101 bne.n 803c400 + 803c3fc: 2302 movs r3, #2 + 803c3fe: e02d b.n 803c45c + 803c400: 687b ldr r3, [r7, #4] + 803c402: 2201 movs r2, #1 + 803c404: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->gState = HAL_UART_STATE_BUSY; - 803c3c8: 687b ldr r3, [r7, #4] - 803c3ca: 2224 movs r2, #36 ; 0x24 - 803c3cc: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c408: 687b ldr r3, [r7, #4] + 803c40a: 2224 movs r2, #36 ; 0x24 + 803c40c: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 803c3d0: 687b ldr r3, [r7, #4] - 803c3d2: 681b ldr r3, [r3, #0] - 803c3d4: 681b ldr r3, [r3, #0] - 803c3d6: 60fb str r3, [r7, #12] + 803c410: 687b ldr r3, [r7, #4] + 803c412: 681b ldr r3, [r3, #0] + 803c414: 681b ldr r3, [r3, #0] + 803c416: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 803c3d8: 687b ldr r3, [r7, #4] - 803c3da: 681b ldr r3, [r3, #0] - 803c3dc: 681a ldr r2, [r3, #0] - 803c3de: 687b ldr r3, [r7, #4] - 803c3e0: 681b ldr r3, [r3, #0] - 803c3e2: f022 0201 bic.w r2, r2, #1 - 803c3e6: 601a str r2, [r3, #0] + 803c418: 687b ldr r3, [r7, #4] + 803c41a: 681b ldr r3, [r3, #0] + 803c41c: 681a ldr r2, [r3, #0] + 803c41e: 687b ldr r3, [r7, #4] + 803c420: 681b ldr r3, [r3, #0] + 803c422: f022 0201 bic.w r2, r2, #1 + 803c426: 601a str r2, [r3, #0] /* Update TX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_TXFTCFG, Threshold); - 803c3e8: 687b ldr r3, [r7, #4] - 803c3ea: 681b ldr r3, [r3, #0] - 803c3ec: 689b ldr r3, [r3, #8] - 803c3ee: f023 4160 bic.w r1, r3, #3758096384 ; 0xe0000000 - 803c3f2: 687b ldr r3, [r7, #4] - 803c3f4: 681b ldr r3, [r3, #0] - 803c3f6: 683a ldr r2, [r7, #0] - 803c3f8: 430a orrs r2, r1 - 803c3fa: 609a str r2, [r3, #8] + 803c428: 687b ldr r3, [r7, #4] + 803c42a: 681b ldr r3, [r3, #0] + 803c42c: 689b ldr r3, [r3, #8] + 803c42e: f023 4160 bic.w r1, r3, #3758096384 ; 0xe0000000 + 803c432: 687b ldr r3, [r7, #4] + 803c434: 681b ldr r3, [r3, #0] + 803c436: 683a ldr r2, [r7, #0] + 803c438: 430a orrs r2, r1 + 803c43a: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 803c3fc: 6878 ldr r0, [r7, #4] - 803c3fe: f000 f84f bl 803c4a0 + 803c43c: 6878 ldr r0, [r7, #4] + 803c43e: f000 f84f bl 803c4e0 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 803c402: 687b ldr r3, [r7, #4] - 803c404: 681b ldr r3, [r3, #0] - 803c406: 68fa ldr r2, [r7, #12] - 803c408: 601a str r2, [r3, #0] + 803c442: 687b ldr r3, [r7, #4] + 803c444: 681b ldr r3, [r3, #0] + 803c446: 68fa ldr r2, [r7, #12] + 803c448: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 803c40a: 687b ldr r3, [r7, #4] - 803c40c: 2220 movs r2, #32 - 803c40e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c44a: 687b ldr r3, [r7, #4] + 803c44c: 2220 movs r2, #32 + 803c44e: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Process Unlocked */ __HAL_UNLOCK(huart); - 803c412: 687b ldr r3, [r7, #4] - 803c414: 2200 movs r2, #0 - 803c416: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c452: 687b ldr r3, [r7, #4] + 803c454: 2200 movs r2, #0 + 803c456: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_OK; - 803c41a: 2300 movs r3, #0 + 803c45a: 2300 movs r3, #0 } - 803c41c: 4618 mov r0, r3 - 803c41e: 3710 adds r7, #16 - 803c420: 46bd mov sp, r7 - 803c422: bd80 pop {r7, pc} + 803c45c: 4618 mov r0, r3 + 803c45e: 3710 adds r7, #16 + 803c460: 46bd mov sp, r7 + 803c462: bd80 pop {r7, pc} -0803c424 : +0803c464 : * @arg @ref UART_RXFIFO_THRESHOLD_7_8 * @arg @ref UART_RXFIFO_THRESHOLD_8_8 * @retval HAL status */ HAL_StatusTypeDef HAL_UARTEx_SetRxFifoThreshold(UART_HandleTypeDef *huart, uint32_t Threshold) { - 803c424: b580 push {r7, lr} - 803c426: b084 sub sp, #16 - 803c428: af00 add r7, sp, #0 - 803c42a: 6078 str r0, [r7, #4] - 803c42c: 6039 str r1, [r7, #0] + 803c464: b580 push {r7, lr} + 803c466: b084 sub sp, #16 + 803c468: af00 add r7, sp, #0 + 803c46a: 6078 str r0, [r7, #4] + 803c46c: 6039 str r1, [r7, #0] /* Check the parameters */ assert_param(IS_UART_FIFO_INSTANCE(huart->Instance)); assert_param(IS_UART_RXFIFO_THRESHOLD(Threshold)); /* Process Locked */ __HAL_LOCK(huart); - 803c42e: 687b ldr r3, [r7, #4] - 803c430: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 - 803c434: 2b01 cmp r3, #1 - 803c436: d101 bne.n 803c43c - 803c438: 2302 movs r3, #2 - 803c43a: e02d b.n 803c498 - 803c43c: 687b ldr r3, [r7, #4] - 803c43e: 2201 movs r2, #1 - 803c440: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c46e: 687b ldr r3, [r7, #4] + 803c470: f893 3080 ldrb.w r3, [r3, #128] ; 0x80 + 803c474: 2b01 cmp r3, #1 + 803c476: d101 bne.n 803c47c + 803c478: 2302 movs r3, #2 + 803c47a: e02d b.n 803c4d8 + 803c47c: 687b ldr r3, [r7, #4] + 803c47e: 2201 movs r2, #1 + 803c480: f883 2080 strb.w r2, [r3, #128] ; 0x80 huart->gState = HAL_UART_STATE_BUSY; - 803c444: 687b ldr r3, [r7, #4] - 803c446: 2224 movs r2, #36 ; 0x24 - 803c448: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c484: 687b ldr r3, [r7, #4] + 803c486: 2224 movs r2, #36 ; 0x24 + 803c488: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Save actual UART configuration */ tmpcr1 = READ_REG(huart->Instance->CR1); - 803c44c: 687b ldr r3, [r7, #4] - 803c44e: 681b ldr r3, [r3, #0] - 803c450: 681b ldr r3, [r3, #0] - 803c452: 60fb str r3, [r7, #12] + 803c48c: 687b ldr r3, [r7, #4] + 803c48e: 681b ldr r3, [r3, #0] + 803c490: 681b ldr r3, [r3, #0] + 803c492: 60fb str r3, [r7, #12] /* Disable UART */ __HAL_UART_DISABLE(huart); - 803c454: 687b ldr r3, [r7, #4] - 803c456: 681b ldr r3, [r3, #0] - 803c458: 681a ldr r2, [r3, #0] - 803c45a: 687b ldr r3, [r7, #4] - 803c45c: 681b ldr r3, [r3, #0] - 803c45e: f022 0201 bic.w r2, r2, #1 - 803c462: 601a str r2, [r3, #0] + 803c494: 687b ldr r3, [r7, #4] + 803c496: 681b ldr r3, [r3, #0] + 803c498: 681a ldr r2, [r3, #0] + 803c49a: 687b ldr r3, [r7, #4] + 803c49c: 681b ldr r3, [r3, #0] + 803c49e: f022 0201 bic.w r2, r2, #1 + 803c4a2: 601a str r2, [r3, #0] /* Update RX threshold configuration */ MODIFY_REG(huart->Instance->CR3, USART_CR3_RXFTCFG, Threshold); - 803c464: 687b ldr r3, [r7, #4] - 803c466: 681b ldr r3, [r3, #0] - 803c468: 689b ldr r3, [r3, #8] - 803c46a: f023 6160 bic.w r1, r3, #234881024 ; 0xe000000 - 803c46e: 687b ldr r3, [r7, #4] - 803c470: 681b ldr r3, [r3, #0] - 803c472: 683a ldr r2, [r7, #0] - 803c474: 430a orrs r2, r1 - 803c476: 609a str r2, [r3, #8] + 803c4a4: 687b ldr r3, [r7, #4] + 803c4a6: 681b ldr r3, [r3, #0] + 803c4a8: 689b ldr r3, [r3, #8] + 803c4aa: f023 6160 bic.w r1, r3, #234881024 ; 0xe000000 + 803c4ae: 687b ldr r3, [r7, #4] + 803c4b0: 681b ldr r3, [r3, #0] + 803c4b2: 683a ldr r2, [r7, #0] + 803c4b4: 430a orrs r2, r1 + 803c4b6: 609a str r2, [r3, #8] /* Determine the number of data to process during RX/TX ISR execution */ UARTEx_SetNbDataToProcess(huart); - 803c478: 6878 ldr r0, [r7, #4] - 803c47a: f000 f811 bl 803c4a0 + 803c4b8: 6878 ldr r0, [r7, #4] + 803c4ba: f000 f811 bl 803c4e0 /* Restore UART configuration */ WRITE_REG(huart->Instance->CR1, tmpcr1); - 803c47e: 687b ldr r3, [r7, #4] - 803c480: 681b ldr r3, [r3, #0] - 803c482: 68fa ldr r2, [r7, #12] - 803c484: 601a str r2, [r3, #0] + 803c4be: 687b ldr r3, [r7, #4] + 803c4c0: 681b ldr r3, [r3, #0] + 803c4c2: 68fa ldr r2, [r7, #12] + 803c4c4: 601a str r2, [r3, #0] huart->gState = HAL_UART_STATE_READY; - 803c486: 687b ldr r3, [r7, #4] - 803c488: 2220 movs r2, #32 - 803c48a: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 803c4c6: 687b ldr r3, [r7, #4] + 803c4c8: 2220 movs r2, #32 + 803c4ca: f8c3 2084 str.w r2, [r3, #132] ; 0x84 /* Process Unlocked */ __HAL_UNLOCK(huart); - 803c48e: 687b ldr r3, [r7, #4] - 803c490: 2200 movs r2, #0 - 803c492: f883 2080 strb.w r2, [r3, #128] ; 0x80 + 803c4ce: 687b ldr r3, [r7, #4] + 803c4d0: 2200 movs r2, #0 + 803c4d2: f883 2080 strb.w r2, [r3, #128] ; 0x80 return HAL_OK; - 803c496: 2300 movs r3, #0 + 803c4d6: 2300 movs r3, #0 } - 803c498: 4618 mov r0, r3 - 803c49a: 3710 adds r7, #16 - 803c49c: 46bd mov sp, r7 - 803c49e: bd80 pop {r7, pc} + 803c4d8: 4618 mov r0, r3 + 803c4da: 3710 adds r7, #16 + 803c4dc: 46bd mov sp, r7 + 803c4de: bd80 pop {r7, pc} -0803c4a0 : +0803c4e0 : * the UART configuration registers. * @param huart UART handle. * @retval None */ static void UARTEx_SetNbDataToProcess(UART_HandleTypeDef *huart) { - 803c4a0: b480 push {r7} - 803c4a2: b085 sub sp, #20 - 803c4a4: af00 add r7, sp, #0 - 803c4a6: 6078 str r0, [r7, #4] + 803c4e0: b480 push {r7} + 803c4e2: b085 sub sp, #20 + 803c4e4: af00 add r7, sp, #0 + 803c4e6: 6078 str r0, [r7, #4] uint8_t rx_fifo_threshold; uint8_t tx_fifo_threshold; static const uint8_t numerator[] = {1U, 1U, 1U, 3U, 7U, 1U, 0U, 0U}; static const uint8_t denominator[] = {8U, 4U, 2U, 4U, 8U, 1U, 1U, 1U}; if (huart->FifoMode == UART_FIFOMODE_DISABLE) - 803c4a8: 687b ldr r3, [r7, #4] - 803c4aa: 6e5b ldr r3, [r3, #100] ; 0x64 - 803c4ac: 2b00 cmp r3, #0 - 803c4ae: d108 bne.n 803c4c2 + 803c4e8: 687b ldr r3, [r7, #4] + 803c4ea: 6e5b ldr r3, [r3, #100] ; 0x64 + 803c4ec: 2b00 cmp r3, #0 + 803c4ee: d108 bne.n 803c502 { huart->NbTxDataToProcess = 1U; - 803c4b0: 687b ldr r3, [r7, #4] - 803c4b2: 2201 movs r2, #1 - 803c4b4: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 803c4f0: 687b ldr r3, [r7, #4] + 803c4f2: 2201 movs r2, #1 + 803c4f4: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = 1U; - 803c4b8: 687b ldr r3, [r7, #4] - 803c4ba: 2201 movs r2, #1 - 803c4bc: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 803c4f8: 687b ldr r3, [r7, #4] + 803c4fa: 2201 movs r2, #1 + 803c4fc: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / (uint16_t)denominator[tx_fifo_threshold]; huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / (uint16_t)denominator[rx_fifo_threshold]; } } - 803c4c0: e031 b.n 803c526 + 803c500: e031 b.n 803c566 rx_fifo_depth = RX_FIFO_DEPTH; - 803c4c2: 2310 movs r3, #16 - 803c4c4: 73fb strb r3, [r7, #15] + 803c502: 2310 movs r3, #16 + 803c504: 73fb strb r3, [r7, #15] tx_fifo_depth = TX_FIFO_DEPTH; - 803c4c6: 2310 movs r3, #16 - 803c4c8: 73bb strb r3, [r7, #14] + 803c506: 2310 movs r3, #16 + 803c508: 73bb strb r3, [r7, #14] rx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_RXFTCFG) >> USART_CR3_RXFTCFG_Pos); - 803c4ca: 687b ldr r3, [r7, #4] - 803c4cc: 681b ldr r3, [r3, #0] - 803c4ce: 689b ldr r3, [r3, #8] - 803c4d0: 0e5b lsrs r3, r3, #25 - 803c4d2: b2db uxtb r3, r3 - 803c4d4: f003 0307 and.w r3, r3, #7 - 803c4d8: 737b strb r3, [r7, #13] + 803c50a: 687b ldr r3, [r7, #4] + 803c50c: 681b ldr r3, [r3, #0] + 803c50e: 689b ldr r3, [r3, #8] + 803c510: 0e5b lsrs r3, r3, #25 + 803c512: b2db uxtb r3, r3 + 803c514: f003 0307 and.w r3, r3, #7 + 803c518: 737b strb r3, [r7, #13] tx_fifo_threshold = (uint8_t)(READ_BIT(huart->Instance->CR3, USART_CR3_TXFTCFG) >> USART_CR3_TXFTCFG_Pos); - 803c4da: 687b ldr r3, [r7, #4] - 803c4dc: 681b ldr r3, [r3, #0] - 803c4de: 689b ldr r3, [r3, #8] - 803c4e0: 0f5b lsrs r3, r3, #29 - 803c4e2: b2db uxtb r3, r3 - 803c4e4: f003 0307 and.w r3, r3, #7 - 803c4e8: 733b strb r3, [r7, #12] + 803c51a: 687b ldr r3, [r7, #4] + 803c51c: 681b ldr r3, [r3, #0] + 803c51e: 689b ldr r3, [r3, #8] + 803c520: 0f5b lsrs r3, r3, #29 + 803c522: b2db uxtb r3, r3 + 803c524: f003 0307 and.w r3, r3, #7 + 803c528: 733b strb r3, [r7, #12] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 803c4ea: 7bbb ldrb r3, [r7, #14] - 803c4ec: 7b3a ldrb r2, [r7, #12] - 803c4ee: 4911 ldr r1, [pc, #68] ; (803c534 ) - 803c4f0: 5c8a ldrb r2, [r1, r2] - 803c4f2: fb02 f303 mul.w r3, r2, r3 + 803c52a: 7bbb ldrb r3, [r7, #14] + 803c52c: 7b3a ldrb r2, [r7, #12] + 803c52e: 4911 ldr r1, [pc, #68] ; (803c574 ) + 803c530: 5c8a ldrb r2, [r1, r2] + 803c532: fb02 f303 mul.w r3, r2, r3 (uint16_t)denominator[tx_fifo_threshold]; - 803c4f6: 7b3a ldrb r2, [r7, #12] - 803c4f8: 490f ldr r1, [pc, #60] ; (803c538 ) - 803c4fa: 5c8a ldrb r2, [r1, r2] + 803c536: 7b3a ldrb r2, [r7, #12] + 803c538: 490f ldr r1, [pc, #60] ; (803c578 ) + 803c53a: 5c8a ldrb r2, [r1, r2] huart->NbTxDataToProcess = ((uint16_t)tx_fifo_depth * numerator[tx_fifo_threshold]) / - 803c4fc: fb93 f3f2 sdiv r3, r3, r2 - 803c500: b29a uxth r2, r3 - 803c502: 687b ldr r3, [r7, #4] - 803c504: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 803c53c: fb93 f3f2 sdiv r3, r3, r2 + 803c540: b29a uxth r2, r3 + 803c542: 687b ldr r3, [r7, #4] + 803c544: f8a3 206a strh.w r2, [r3, #106] ; 0x6a huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 803c508: 7bfb ldrb r3, [r7, #15] - 803c50a: 7b7a ldrb r2, [r7, #13] - 803c50c: 4909 ldr r1, [pc, #36] ; (803c534 ) - 803c50e: 5c8a ldrb r2, [r1, r2] - 803c510: fb02 f303 mul.w r3, r2, r3 + 803c548: 7bfb ldrb r3, [r7, #15] + 803c54a: 7b7a ldrb r2, [r7, #13] + 803c54c: 4909 ldr r1, [pc, #36] ; (803c574 ) + 803c54e: 5c8a ldrb r2, [r1, r2] + 803c550: fb02 f303 mul.w r3, r2, r3 (uint16_t)denominator[rx_fifo_threshold]; - 803c514: 7b7a ldrb r2, [r7, #13] - 803c516: 4908 ldr r1, [pc, #32] ; (803c538 ) - 803c518: 5c8a ldrb r2, [r1, r2] + 803c554: 7b7a ldrb r2, [r7, #13] + 803c556: 4908 ldr r1, [pc, #32] ; (803c578 ) + 803c558: 5c8a ldrb r2, [r1, r2] huart->NbRxDataToProcess = ((uint16_t)rx_fifo_depth * numerator[rx_fifo_threshold]) / - 803c51a: fb93 f3f2 sdiv r3, r3, r2 - 803c51e: b29a uxth r2, r3 - 803c520: 687b ldr r3, [r7, #4] - 803c522: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 -} - 803c526: bf00 nop - 803c528: 3714 adds r7, #20 - 803c52a: 46bd mov sp, r7 - 803c52c: f85d 7b04 ldr.w r7, [sp], #4 - 803c530: 4770 bx lr - 803c532: bf00 nop - 803c534: 0804d39c .word 0x0804d39c - 803c538: 0804d3a4 .word 0x0804d3a4 - -0803c53c : + 803c55a: fb93 f3f2 sdiv r3, r3, r2 + 803c55e: b29a uxth r2, r3 + 803c560: 687b ldr r3, [r7, #4] + 803c562: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 +} + 803c566: bf00 nop + 803c568: 3714 adds r7, #20 + 803c56a: 46bd mov sp, r7 + 803c56c: f85d 7b04 ldr.w r7, [sp], #4 + 803c570: 4770 bx lr + 803c572: bf00 nop + 803c574: 0804d3dc .word 0x0804d3dc + 803c578: 0804d3e4 .word 0x0804d3e4 + +0803c57c : /** * LwIP initialization function */ void MX_LWIP_Init(void) { - 803c53c: b580 push {r7, lr} - 803c53e: b084 sub sp, #16 - 803c540: af04 add r7, sp, #16 + 803c57c: b580 push {r7, lr} + 803c57e: b084 sub sp, #16 + 803c580: af04 add r7, sp, #16 /* IP addresses initialization */ IP_ADDRESS[0] = 192; - 803c542: 4b8d ldr r3, [pc, #564] ; (803c778 ) - 803c544: 22c0 movs r2, #192 ; 0xc0 - 803c546: 701a strb r2, [r3, #0] + 803c582: 4b8d ldr r3, [pc, #564] ; (803c7b8 ) + 803c584: 22c0 movs r2, #192 ; 0xc0 + 803c586: 701a strb r2, [r3, #0] IP_ADDRESS[1] = 168; - 803c548: 4b8b ldr r3, [pc, #556] ; (803c778 ) - 803c54a: 22a8 movs r2, #168 ; 0xa8 - 803c54c: 705a strb r2, [r3, #1] + 803c588: 4b8b ldr r3, [pc, #556] ; (803c7b8 ) + 803c58a: 22a8 movs r2, #168 ; 0xa8 + 803c58c: 705a strb r2, [r3, #1] IP_ADDRESS[2] = 144; - 803c54e: 4b8a ldr r3, [pc, #552] ; (803c778 ) - 803c550: 2290 movs r2, #144 ; 0x90 - 803c552: 709a strb r2, [r3, #2] + 803c58e: 4b8a ldr r3, [pc, #552] ; (803c7b8 ) + 803c590: 2290 movs r2, #144 ; 0x90 + 803c592: 709a strb r2, [r3, #2] IP_ADDRESS[3] = 98; - 803c554: 4b88 ldr r3, [pc, #544] ; (803c778 ) - 803c556: 2262 movs r2, #98 ; 0x62 - 803c558: 70da strb r2, [r3, #3] + 803c594: 4b88 ldr r3, [pc, #544] ; (803c7b8 ) + 803c596: 2262 movs r2, #98 ; 0x62 + 803c598: 70da strb r2, [r3, #3] NETMASK_ADDRESS[0] = 255; - 803c55a: 4b88 ldr r3, [pc, #544] ; (803c77c ) - 803c55c: 22ff movs r2, #255 ; 0xff - 803c55e: 701a strb r2, [r3, #0] + 803c59a: 4b88 ldr r3, [pc, #544] ; (803c7bc ) + 803c59c: 22ff movs r2, #255 ; 0xff + 803c59e: 701a strb r2, [r3, #0] NETMASK_ADDRESS[1] = 255; - 803c560: 4b86 ldr r3, [pc, #536] ; (803c77c ) - 803c562: 22ff movs r2, #255 ; 0xff - 803c564: 705a strb r2, [r3, #1] + 803c5a0: 4b86 ldr r3, [pc, #536] ; (803c7bc ) + 803c5a2: 22ff movs r2, #255 ; 0xff + 803c5a4: 705a strb r2, [r3, #1] NETMASK_ADDRESS[2] = 255; - 803c566: 4b85 ldr r3, [pc, #532] ; (803c77c ) - 803c568: 22ff movs r2, #255 ; 0xff - 803c56a: 709a strb r2, [r3, #2] + 803c5a6: 4b85 ldr r3, [pc, #532] ; (803c7bc ) + 803c5a8: 22ff movs r2, #255 ; 0xff + 803c5aa: 709a strb r2, [r3, #2] NETMASK_ADDRESS[3] = 0; - 803c56c: 4b83 ldr r3, [pc, #524] ; (803c77c ) - 803c56e: 2200 movs r2, #0 - 803c570: 70da strb r2, [r3, #3] + 803c5ac: 4b83 ldr r3, [pc, #524] ; (803c7bc ) + 803c5ae: 2200 movs r2, #0 + 803c5b0: 70da strb r2, [r3, #3] GATEWAY_ADDRESS[0] = 192; - 803c572: 4b83 ldr r3, [pc, #524] ; (803c780 ) - 803c574: 22c0 movs r2, #192 ; 0xc0 - 803c576: 701a strb r2, [r3, #0] + 803c5b2: 4b83 ldr r3, [pc, #524] ; (803c7c0 ) + 803c5b4: 22c0 movs r2, #192 ; 0xc0 + 803c5b6: 701a strb r2, [r3, #0] GATEWAY_ADDRESS[1] = 168; - 803c578: 4b81 ldr r3, [pc, #516] ; (803c780 ) - 803c57a: 22a8 movs r2, #168 ; 0xa8 - 803c57c: 705a strb r2, [r3, #1] + 803c5b8: 4b81 ldr r3, [pc, #516] ; (803c7c0 ) + 803c5ba: 22a8 movs r2, #168 ; 0xa8 + 803c5bc: 705a strb r2, [r3, #1] GATEWAY_ADDRESS[2] = 144; - 803c57e: 4b80 ldr r3, [pc, #512] ; (803c780 ) - 803c580: 2290 movs r2, #144 ; 0x90 - 803c582: 709a strb r2, [r3, #2] + 803c5be: 4b80 ldr r3, [pc, #512] ; (803c7c0 ) + 803c5c0: 2290 movs r2, #144 ; 0x90 + 803c5c2: 709a strb r2, [r3, #2] GATEWAY_ADDRESS[3] = 1; - 803c584: 4b7e ldr r3, [pc, #504] ; (803c780 ) - 803c586: 2201 movs r2, #1 - 803c588: 70da strb r2, [r3, #3] + 803c5c4: 4b7e ldr r3, [pc, #504] ; (803c7c0 ) + 803c5c6: 2201 movs r2, #1 + 803c5c8: 70da strb r2, [r3, #3] /* USER CODE BEGIN IP_ADDRESSES */ /* USER CODE END IP_ADDRESSES */ /* Initilialize the LwIP stack without RTOS */ lwip_init(); - 803c58a: f000 fe09 bl 803d1a0 + 803c5ca: f000 fe09 bl 803d1e0 /* IP addresses initialization without DHCP (IPv4) */ IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]); - 803c58e: 4b7a ldr r3, [pc, #488] ; (803c778 ) - 803c590: 781b ldrb r3, [r3, #0] - 803c592: 061a lsls r2, r3, #24 - 803c594: 4b78 ldr r3, [pc, #480] ; (803c778 ) - 803c596: 785b ldrb r3, [r3, #1] - 803c598: 041b lsls r3, r3, #16 - 803c59a: 431a orrs r2, r3 - 803c59c: 4b76 ldr r3, [pc, #472] ; (803c778 ) - 803c59e: 789b ldrb r3, [r3, #2] - 803c5a0: 021b lsls r3, r3, #8 - 803c5a2: 4313 orrs r3, r2 - 803c5a4: 4a74 ldr r2, [pc, #464] ; (803c778 ) - 803c5a6: 78d2 ldrb r2, [r2, #3] - 803c5a8: 4313 orrs r3, r2 - 803c5aa: 061a lsls r2, r3, #24 - 803c5ac: 4b72 ldr r3, [pc, #456] ; (803c778 ) - 803c5ae: 781b ldrb r3, [r3, #0] - 803c5b0: 0619 lsls r1, r3, #24 - 803c5b2: 4b71 ldr r3, [pc, #452] ; (803c778 ) - 803c5b4: 785b ldrb r3, [r3, #1] - 803c5b6: 041b lsls r3, r3, #16 - 803c5b8: 4319 orrs r1, r3 - 803c5ba: 4b6f ldr r3, [pc, #444] ; (803c778 ) - 803c5bc: 789b ldrb r3, [r3, #2] - 803c5be: 021b lsls r3, r3, #8 - 803c5c0: 430b orrs r3, r1 - 803c5c2: 496d ldr r1, [pc, #436] ; (803c778 ) - 803c5c4: 78c9 ldrb r1, [r1, #3] - 803c5c6: 430b orrs r3, r1 - 803c5c8: 021b lsls r3, r3, #8 - 803c5ca: f403 037f and.w r3, r3, #16711680 ; 0xff0000 - 803c5ce: 431a orrs r2, r3 - 803c5d0: 4b69 ldr r3, [pc, #420] ; (803c778 ) - 803c5d2: 781b ldrb r3, [r3, #0] - 803c5d4: 0619 lsls r1, r3, #24 - 803c5d6: 4b68 ldr r3, [pc, #416] ; (803c778 ) - 803c5d8: 785b ldrb r3, [r3, #1] - 803c5da: 041b lsls r3, r3, #16 - 803c5dc: 4319 orrs r1, r3 - 803c5de: 4b66 ldr r3, [pc, #408] ; (803c778 ) - 803c5e0: 789b ldrb r3, [r3, #2] - 803c5e2: 021b lsls r3, r3, #8 - 803c5e4: 430b orrs r3, r1 - 803c5e6: 4964 ldr r1, [pc, #400] ; (803c778 ) - 803c5e8: 78c9 ldrb r1, [r1, #3] - 803c5ea: 430b orrs r3, r1 - 803c5ec: 0a1b lsrs r3, r3, #8 - 803c5ee: f403 437f and.w r3, r3, #65280 ; 0xff00 - 803c5f2: 431a orrs r2, r3 - 803c5f4: 4b60 ldr r3, [pc, #384] ; (803c778 ) - 803c5f6: 781b ldrb r3, [r3, #0] - 803c5f8: 0619 lsls r1, r3, #24 - 803c5fa: 4b5f ldr r3, [pc, #380] ; (803c778 ) - 803c5fc: 785b ldrb r3, [r3, #1] - 803c5fe: 041b lsls r3, r3, #16 - 803c600: 4319 orrs r1, r3 - 803c602: 4b5d ldr r3, [pc, #372] ; (803c778 ) - 803c604: 789b ldrb r3, [r3, #2] - 803c606: 021b lsls r3, r3, #8 - 803c608: 430b orrs r3, r1 - 803c60a: 495b ldr r1, [pc, #364] ; (803c778 ) - 803c60c: 78c9 ldrb r1, [r1, #3] - 803c60e: 430b orrs r3, r1 - 803c610: 0e1b lsrs r3, r3, #24 - 803c612: 4313 orrs r3, r2 - 803c614: 4a5b ldr r2, [pc, #364] ; (803c784 ) - 803c616: 6013 str r3, [r2, #0] + 803c5ce: 4b7a ldr r3, [pc, #488] ; (803c7b8 ) + 803c5d0: 781b ldrb r3, [r3, #0] + 803c5d2: 061a lsls r2, r3, #24 + 803c5d4: 4b78 ldr r3, [pc, #480] ; (803c7b8 ) + 803c5d6: 785b ldrb r3, [r3, #1] + 803c5d8: 041b lsls r3, r3, #16 + 803c5da: 431a orrs r2, r3 + 803c5dc: 4b76 ldr r3, [pc, #472] ; (803c7b8 ) + 803c5de: 789b ldrb r3, [r3, #2] + 803c5e0: 021b lsls r3, r3, #8 + 803c5e2: 4313 orrs r3, r2 + 803c5e4: 4a74 ldr r2, [pc, #464] ; (803c7b8 ) + 803c5e6: 78d2 ldrb r2, [r2, #3] + 803c5e8: 4313 orrs r3, r2 + 803c5ea: 061a lsls r2, r3, #24 + 803c5ec: 4b72 ldr r3, [pc, #456] ; (803c7b8 ) + 803c5ee: 781b ldrb r3, [r3, #0] + 803c5f0: 0619 lsls r1, r3, #24 + 803c5f2: 4b71 ldr r3, [pc, #452] ; (803c7b8 ) + 803c5f4: 785b ldrb r3, [r3, #1] + 803c5f6: 041b lsls r3, r3, #16 + 803c5f8: 4319 orrs r1, r3 + 803c5fa: 4b6f ldr r3, [pc, #444] ; (803c7b8 ) + 803c5fc: 789b ldrb r3, [r3, #2] + 803c5fe: 021b lsls r3, r3, #8 + 803c600: 430b orrs r3, r1 + 803c602: 496d ldr r1, [pc, #436] ; (803c7b8 ) + 803c604: 78c9 ldrb r1, [r1, #3] + 803c606: 430b orrs r3, r1 + 803c608: 021b lsls r3, r3, #8 + 803c60a: f403 037f and.w r3, r3, #16711680 ; 0xff0000 + 803c60e: 431a orrs r2, r3 + 803c610: 4b69 ldr r3, [pc, #420] ; (803c7b8 ) + 803c612: 781b ldrb r3, [r3, #0] + 803c614: 0619 lsls r1, r3, #24 + 803c616: 4b68 ldr r3, [pc, #416] ; (803c7b8 ) + 803c618: 785b ldrb r3, [r3, #1] + 803c61a: 041b lsls r3, r3, #16 + 803c61c: 4319 orrs r1, r3 + 803c61e: 4b66 ldr r3, [pc, #408] ; (803c7b8 ) + 803c620: 789b ldrb r3, [r3, #2] + 803c622: 021b lsls r3, r3, #8 + 803c624: 430b orrs r3, r1 + 803c626: 4964 ldr r1, [pc, #400] ; (803c7b8 ) + 803c628: 78c9 ldrb r1, [r1, #3] + 803c62a: 430b orrs r3, r1 + 803c62c: 0a1b lsrs r3, r3, #8 + 803c62e: f403 437f and.w r3, r3, #65280 ; 0xff00 + 803c632: 431a orrs r2, r3 + 803c634: 4b60 ldr r3, [pc, #384] ; (803c7b8 ) + 803c636: 781b ldrb r3, [r3, #0] + 803c638: 0619 lsls r1, r3, #24 + 803c63a: 4b5f ldr r3, [pc, #380] ; (803c7b8 ) + 803c63c: 785b ldrb r3, [r3, #1] + 803c63e: 041b lsls r3, r3, #16 + 803c640: 4319 orrs r1, r3 + 803c642: 4b5d ldr r3, [pc, #372] ; (803c7b8 ) + 803c644: 789b ldrb r3, [r3, #2] + 803c646: 021b lsls r3, r3, #8 + 803c648: 430b orrs r3, r1 + 803c64a: 495b ldr r1, [pc, #364] ; (803c7b8 ) + 803c64c: 78c9 ldrb r1, [r1, #3] + 803c64e: 430b orrs r3, r1 + 803c650: 0e1b lsrs r3, r3, #24 + 803c652: 4313 orrs r3, r2 + 803c654: 4a5b ldr r2, [pc, #364] ; (803c7c4 ) + 803c656: 6013 str r3, [r2, #0] IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]); - 803c618: 4b58 ldr r3, [pc, #352] ; (803c77c ) - 803c61a: 781b ldrb r3, [r3, #0] - 803c61c: 061a lsls r2, r3, #24 - 803c61e: 4b57 ldr r3, [pc, #348] ; (803c77c ) - 803c620: 785b ldrb r3, [r3, #1] - 803c622: 041b lsls r3, r3, #16 - 803c624: 431a orrs r2, r3 - 803c626: 4b55 ldr r3, [pc, #340] ; (803c77c ) - 803c628: 789b ldrb r3, [r3, #2] - 803c62a: 021b lsls r3, r3, #8 - 803c62c: 4313 orrs r3, r2 - 803c62e: 4a53 ldr r2, [pc, #332] ; (803c77c ) - 803c630: 78d2 ldrb r2, [r2, #3] - 803c632: 4313 orrs r3, r2 - 803c634: 061a lsls r2, r3, #24 - 803c636: 4b51 ldr r3, [pc, #324] ; (803c77c ) - 803c638: 781b ldrb r3, [r3, #0] - 803c63a: 0619 lsls r1, r3, #24 - 803c63c: 4b4f ldr r3, [pc, #316] ; (803c77c ) - 803c63e: 785b ldrb r3, [r3, #1] - 803c640: 041b lsls r3, r3, #16 - 803c642: 4319 orrs r1, r3 - 803c644: 4b4d ldr r3, [pc, #308] ; (803c77c ) - 803c646: 789b ldrb r3, [r3, #2] - 803c648: 021b lsls r3, r3, #8 - 803c64a: 430b orrs r3, r1 - 803c64c: 494b ldr r1, [pc, #300] ; (803c77c ) - 803c64e: 78c9 ldrb r1, [r1, #3] - 803c650: 430b orrs r3, r1 - 803c652: 021b lsls r3, r3, #8 - 803c654: f403 037f and.w r3, r3, #16711680 ; 0xff0000 - 803c658: 431a orrs r2, r3 - 803c65a: 4b48 ldr r3, [pc, #288] ; (803c77c ) - 803c65c: 781b ldrb r3, [r3, #0] - 803c65e: 0619 lsls r1, r3, #24 - 803c660: 4b46 ldr r3, [pc, #280] ; (803c77c ) - 803c662: 785b ldrb r3, [r3, #1] - 803c664: 041b lsls r3, r3, #16 - 803c666: 4319 orrs r1, r3 - 803c668: 4b44 ldr r3, [pc, #272] ; (803c77c ) - 803c66a: 789b ldrb r3, [r3, #2] - 803c66c: 021b lsls r3, r3, #8 - 803c66e: 430b orrs r3, r1 - 803c670: 4942 ldr r1, [pc, #264] ; (803c77c ) - 803c672: 78c9 ldrb r1, [r1, #3] - 803c674: 430b orrs r3, r1 - 803c676: 0a1b lsrs r3, r3, #8 - 803c678: f403 437f and.w r3, r3, #65280 ; 0xff00 - 803c67c: 431a orrs r2, r3 - 803c67e: 4b3f ldr r3, [pc, #252] ; (803c77c ) - 803c680: 781b ldrb r3, [r3, #0] - 803c682: 0619 lsls r1, r3, #24 - 803c684: 4b3d ldr r3, [pc, #244] ; (803c77c ) - 803c686: 785b ldrb r3, [r3, #1] - 803c688: 041b lsls r3, r3, #16 - 803c68a: 4319 orrs r1, r3 - 803c68c: 4b3b ldr r3, [pc, #236] ; (803c77c ) - 803c68e: 789b ldrb r3, [r3, #2] - 803c690: 021b lsls r3, r3, #8 - 803c692: 430b orrs r3, r1 - 803c694: 4939 ldr r1, [pc, #228] ; (803c77c ) - 803c696: 78c9 ldrb r1, [r1, #3] - 803c698: 430b orrs r3, r1 - 803c69a: 0e1b lsrs r3, r3, #24 - 803c69c: 4313 orrs r3, r2 - 803c69e: 4a3a ldr r2, [pc, #232] ; (803c788 ) - 803c6a0: 6013 str r3, [r2, #0] + 803c658: 4b58 ldr r3, [pc, #352] ; (803c7bc ) + 803c65a: 781b ldrb r3, [r3, #0] + 803c65c: 061a lsls r2, r3, #24 + 803c65e: 4b57 ldr r3, [pc, #348] ; (803c7bc ) + 803c660: 785b ldrb r3, [r3, #1] + 803c662: 041b lsls r3, r3, #16 + 803c664: 431a orrs r2, r3 + 803c666: 4b55 ldr r3, [pc, #340] ; (803c7bc ) + 803c668: 789b ldrb r3, [r3, #2] + 803c66a: 021b lsls r3, r3, #8 + 803c66c: 4313 orrs r3, r2 + 803c66e: 4a53 ldr r2, [pc, #332] ; (803c7bc ) + 803c670: 78d2 ldrb r2, [r2, #3] + 803c672: 4313 orrs r3, r2 + 803c674: 061a lsls r2, r3, #24 + 803c676: 4b51 ldr r3, [pc, #324] ; (803c7bc ) + 803c678: 781b ldrb r3, [r3, #0] + 803c67a: 0619 lsls r1, r3, #24 + 803c67c: 4b4f ldr r3, [pc, #316] ; (803c7bc ) + 803c67e: 785b ldrb r3, [r3, #1] + 803c680: 041b lsls r3, r3, #16 + 803c682: 4319 orrs r1, r3 + 803c684: 4b4d ldr r3, [pc, #308] ; (803c7bc ) + 803c686: 789b ldrb r3, [r3, #2] + 803c688: 021b lsls r3, r3, #8 + 803c68a: 430b orrs r3, r1 + 803c68c: 494b ldr r1, [pc, #300] ; (803c7bc ) + 803c68e: 78c9 ldrb r1, [r1, #3] + 803c690: 430b orrs r3, r1 + 803c692: 021b lsls r3, r3, #8 + 803c694: f403 037f and.w r3, r3, #16711680 ; 0xff0000 + 803c698: 431a orrs r2, r3 + 803c69a: 4b48 ldr r3, [pc, #288] ; (803c7bc ) + 803c69c: 781b ldrb r3, [r3, #0] + 803c69e: 0619 lsls r1, r3, #24 + 803c6a0: 4b46 ldr r3, [pc, #280] ; (803c7bc ) + 803c6a2: 785b ldrb r3, [r3, #1] + 803c6a4: 041b lsls r3, r3, #16 + 803c6a6: 4319 orrs r1, r3 + 803c6a8: 4b44 ldr r3, [pc, #272] ; (803c7bc ) + 803c6aa: 789b ldrb r3, [r3, #2] + 803c6ac: 021b lsls r3, r3, #8 + 803c6ae: 430b orrs r3, r1 + 803c6b0: 4942 ldr r1, [pc, #264] ; (803c7bc ) + 803c6b2: 78c9 ldrb r1, [r1, #3] + 803c6b4: 430b orrs r3, r1 + 803c6b6: 0a1b lsrs r3, r3, #8 + 803c6b8: f403 437f and.w r3, r3, #65280 ; 0xff00 + 803c6bc: 431a orrs r2, r3 + 803c6be: 4b3f ldr r3, [pc, #252] ; (803c7bc ) + 803c6c0: 781b ldrb r3, [r3, #0] + 803c6c2: 0619 lsls r1, r3, #24 + 803c6c4: 4b3d ldr r3, [pc, #244] ; (803c7bc ) + 803c6c6: 785b ldrb r3, [r3, #1] + 803c6c8: 041b lsls r3, r3, #16 + 803c6ca: 4319 orrs r1, r3 + 803c6cc: 4b3b ldr r3, [pc, #236] ; (803c7bc ) + 803c6ce: 789b ldrb r3, [r3, #2] + 803c6d0: 021b lsls r3, r3, #8 + 803c6d2: 430b orrs r3, r1 + 803c6d4: 4939 ldr r1, [pc, #228] ; (803c7bc ) + 803c6d6: 78c9 ldrb r1, [r1, #3] + 803c6d8: 430b orrs r3, r1 + 803c6da: 0e1b lsrs r3, r3, #24 + 803c6dc: 4313 orrs r3, r2 + 803c6de: 4a3a ldr r2, [pc, #232] ; (803c7c8 ) + 803c6e0: 6013 str r3, [r2, #0] IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]); - 803c6a2: 4b37 ldr r3, [pc, #220] ; (803c780 ) - 803c6a4: 781b ldrb r3, [r3, #0] - 803c6a6: 061a lsls r2, r3, #24 - 803c6a8: 4b35 ldr r3, [pc, #212] ; (803c780 ) - 803c6aa: 785b ldrb r3, [r3, #1] - 803c6ac: 041b lsls r3, r3, #16 - 803c6ae: 431a orrs r2, r3 - 803c6b0: 4b33 ldr r3, [pc, #204] ; (803c780 ) - 803c6b2: 789b ldrb r3, [r3, #2] - 803c6b4: 021b lsls r3, r3, #8 - 803c6b6: 4313 orrs r3, r2 - 803c6b8: 4a31 ldr r2, [pc, #196] ; (803c780 ) - 803c6ba: 78d2 ldrb r2, [r2, #3] - 803c6bc: 4313 orrs r3, r2 - 803c6be: 061a lsls r2, r3, #24 - 803c6c0: 4b2f ldr r3, [pc, #188] ; (803c780 ) - 803c6c2: 781b ldrb r3, [r3, #0] - 803c6c4: 0619 lsls r1, r3, #24 - 803c6c6: 4b2e ldr r3, [pc, #184] ; (803c780 ) - 803c6c8: 785b ldrb r3, [r3, #1] - 803c6ca: 041b lsls r3, r3, #16 - 803c6cc: 4319 orrs r1, r3 - 803c6ce: 4b2c ldr r3, [pc, #176] ; (803c780 ) - 803c6d0: 789b ldrb r3, [r3, #2] - 803c6d2: 021b lsls r3, r3, #8 - 803c6d4: 430b orrs r3, r1 - 803c6d6: 492a ldr r1, [pc, #168] ; (803c780 ) - 803c6d8: 78c9 ldrb r1, [r1, #3] - 803c6da: 430b orrs r3, r1 - 803c6dc: 021b lsls r3, r3, #8 - 803c6de: f403 037f and.w r3, r3, #16711680 ; 0xff0000 - 803c6e2: 431a orrs r2, r3 - 803c6e4: 4b26 ldr r3, [pc, #152] ; (803c780 ) - 803c6e6: 781b ldrb r3, [r3, #0] - 803c6e8: 0619 lsls r1, r3, #24 - 803c6ea: 4b25 ldr r3, [pc, #148] ; (803c780 ) - 803c6ec: 785b ldrb r3, [r3, #1] - 803c6ee: 041b lsls r3, r3, #16 - 803c6f0: 4319 orrs r1, r3 - 803c6f2: 4b23 ldr r3, [pc, #140] ; (803c780 ) - 803c6f4: 789b ldrb r3, [r3, #2] - 803c6f6: 021b lsls r3, r3, #8 - 803c6f8: 430b orrs r3, r1 - 803c6fa: 4921 ldr r1, [pc, #132] ; (803c780 ) - 803c6fc: 78c9 ldrb r1, [r1, #3] - 803c6fe: 430b orrs r3, r1 - 803c700: 0a1b lsrs r3, r3, #8 - 803c702: f403 437f and.w r3, r3, #65280 ; 0xff00 - 803c706: 431a orrs r2, r3 - 803c708: 4b1d ldr r3, [pc, #116] ; (803c780 ) - 803c70a: 781b ldrb r3, [r3, #0] - 803c70c: 0619 lsls r1, r3, #24 - 803c70e: 4b1c ldr r3, [pc, #112] ; (803c780 ) - 803c710: 785b ldrb r3, [r3, #1] - 803c712: 041b lsls r3, r3, #16 - 803c714: 4319 orrs r1, r3 - 803c716: 4b1a ldr r3, [pc, #104] ; (803c780 ) - 803c718: 789b ldrb r3, [r3, #2] - 803c71a: 021b lsls r3, r3, #8 - 803c71c: 430b orrs r3, r1 - 803c71e: 4918 ldr r1, [pc, #96] ; (803c780 ) - 803c720: 78c9 ldrb r1, [r1, #3] - 803c722: 430b orrs r3, r1 - 803c724: 0e1b lsrs r3, r3, #24 - 803c726: 4313 orrs r3, r2 - 803c728: 4a18 ldr r2, [pc, #96] ; (803c78c ) - 803c72a: 6013 str r3, [r2, #0] + 803c6e2: 4b37 ldr r3, [pc, #220] ; (803c7c0 ) + 803c6e4: 781b ldrb r3, [r3, #0] + 803c6e6: 061a lsls r2, r3, #24 + 803c6e8: 4b35 ldr r3, [pc, #212] ; (803c7c0 ) + 803c6ea: 785b ldrb r3, [r3, #1] + 803c6ec: 041b lsls r3, r3, #16 + 803c6ee: 431a orrs r2, r3 + 803c6f0: 4b33 ldr r3, [pc, #204] ; (803c7c0 ) + 803c6f2: 789b ldrb r3, [r3, #2] + 803c6f4: 021b lsls r3, r3, #8 + 803c6f6: 4313 orrs r3, r2 + 803c6f8: 4a31 ldr r2, [pc, #196] ; (803c7c0 ) + 803c6fa: 78d2 ldrb r2, [r2, #3] + 803c6fc: 4313 orrs r3, r2 + 803c6fe: 061a lsls r2, r3, #24 + 803c700: 4b2f ldr r3, [pc, #188] ; (803c7c0 ) + 803c702: 781b ldrb r3, [r3, #0] + 803c704: 0619 lsls r1, r3, #24 + 803c706: 4b2e ldr r3, [pc, #184] ; (803c7c0 ) + 803c708: 785b ldrb r3, [r3, #1] + 803c70a: 041b lsls r3, r3, #16 + 803c70c: 4319 orrs r1, r3 + 803c70e: 4b2c ldr r3, [pc, #176] ; (803c7c0 ) + 803c710: 789b ldrb r3, [r3, #2] + 803c712: 021b lsls r3, r3, #8 + 803c714: 430b orrs r3, r1 + 803c716: 492a ldr r1, [pc, #168] ; (803c7c0 ) + 803c718: 78c9 ldrb r1, [r1, #3] + 803c71a: 430b orrs r3, r1 + 803c71c: 021b lsls r3, r3, #8 + 803c71e: f403 037f and.w r3, r3, #16711680 ; 0xff0000 + 803c722: 431a orrs r2, r3 + 803c724: 4b26 ldr r3, [pc, #152] ; (803c7c0 ) + 803c726: 781b ldrb r3, [r3, #0] + 803c728: 0619 lsls r1, r3, #24 + 803c72a: 4b25 ldr r3, [pc, #148] ; (803c7c0 ) + 803c72c: 785b ldrb r3, [r3, #1] + 803c72e: 041b lsls r3, r3, #16 + 803c730: 4319 orrs r1, r3 + 803c732: 4b23 ldr r3, [pc, #140] ; (803c7c0 ) + 803c734: 789b ldrb r3, [r3, #2] + 803c736: 021b lsls r3, r3, #8 + 803c738: 430b orrs r3, r1 + 803c73a: 4921 ldr r1, [pc, #132] ; (803c7c0 ) + 803c73c: 78c9 ldrb r1, [r1, #3] + 803c73e: 430b orrs r3, r1 + 803c740: 0a1b lsrs r3, r3, #8 + 803c742: f403 437f and.w r3, r3, #65280 ; 0xff00 + 803c746: 431a orrs r2, r3 + 803c748: 4b1d ldr r3, [pc, #116] ; (803c7c0 ) + 803c74a: 781b ldrb r3, [r3, #0] + 803c74c: 0619 lsls r1, r3, #24 + 803c74e: 4b1c ldr r3, [pc, #112] ; (803c7c0 ) + 803c750: 785b ldrb r3, [r3, #1] + 803c752: 041b lsls r3, r3, #16 + 803c754: 4319 orrs r1, r3 + 803c756: 4b1a ldr r3, [pc, #104] ; (803c7c0 ) + 803c758: 789b ldrb r3, [r3, #2] + 803c75a: 021b lsls r3, r3, #8 + 803c75c: 430b orrs r3, r1 + 803c75e: 4918 ldr r1, [pc, #96] ; (803c7c0 ) + 803c760: 78c9 ldrb r1, [r1, #3] + 803c762: 430b orrs r3, r1 + 803c764: 0e1b lsrs r3, r3, #24 + 803c766: 4313 orrs r3, r2 + 803c768: 4a18 ldr r2, [pc, #96] ; (803c7cc ) + 803c76a: 6013 str r3, [r2, #0] /* add the network interface (IPv4/IPv6) without RTOS */ netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input); - 803c72c: 4b18 ldr r3, [pc, #96] ; (803c790 ) - 803c72e: 9302 str r3, [sp, #8] - 803c730: 4b18 ldr r3, [pc, #96] ; (803c794 ) - 803c732: 9301 str r3, [sp, #4] - 803c734: 2300 movs r3, #0 - 803c736: 9300 str r3, [sp, #0] - 803c738: 4b14 ldr r3, [pc, #80] ; (803c78c ) - 803c73a: 4a13 ldr r2, [pc, #76] ; (803c788 ) - 803c73c: 4911 ldr r1, [pc, #68] ; (803c784 ) - 803c73e: 4816 ldr r0, [pc, #88] ; (803c798 ) - 803c740: f001 fa16 bl 803db70 + 803c76c: 4b18 ldr r3, [pc, #96] ; (803c7d0 ) + 803c76e: 9302 str r3, [sp, #8] + 803c770: 4b18 ldr r3, [pc, #96] ; (803c7d4 ) + 803c772: 9301 str r3, [sp, #4] + 803c774: 2300 movs r3, #0 + 803c776: 9300 str r3, [sp, #0] + 803c778: 4b14 ldr r3, [pc, #80] ; (803c7cc ) + 803c77a: 4a13 ldr r2, [pc, #76] ; (803c7c8 ) + 803c77c: 4911 ldr r1, [pc, #68] ; (803c7c4 ) + 803c77e: 4816 ldr r0, [pc, #88] ; (803c7d8 ) + 803c780: f001 fa16 bl 803dbb0 /* Registers the default network interface */ netif_set_default(&gnetif); - 803c744: 4814 ldr r0, [pc, #80] ; (803c798 ) - 803c746: f001 fbd1 bl 803deec + 803c784: 4814 ldr r0, [pc, #80] ; (803c7d8 ) + 803c786: f001 fbd1 bl 803df2c if (netif_is_link_up(&gnetif)) - 803c74a: 4b13 ldr r3, [pc, #76] ; (803c798 ) - 803c74c: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803c750: 089b lsrs r3, r3, #2 - 803c752: f003 0301 and.w r3, r3, #1 - 803c756: b2db uxtb r3, r3 - 803c758: 2b00 cmp r3, #0 - 803c75a: d003 beq.n 803c764 + 803c78a: 4b13 ldr r3, [pc, #76] ; (803c7d8 ) + 803c78c: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803c790: 089b lsrs r3, r3, #2 + 803c792: f003 0301 and.w r3, r3, #1 + 803c796: b2db uxtb r3, r3 + 803c798: 2b00 cmp r3, #0 + 803c79a: d003 beq.n 803c7a4 { /* When the netif is fully configured this function must be called */ netif_set_up(&gnetif); - 803c75c: 480e ldr r0, [pc, #56] ; (803c798 ) - 803c75e: f001 fbd5 bl 803df0c - 803c762: e002 b.n 803c76a + 803c79c: 480e ldr r0, [pc, #56] ; (803c7d8 ) + 803c79e: f001 fbd5 bl 803df4c + 803c7a2: e002 b.n 803c7aa } else { /* When the netif link is down this function must be called */ netif_set_down(&gnetif); - 803c764: 480c ldr r0, [pc, #48] ; (803c798 ) - 803c766: f001 fc45 bl 803dff4 + 803c7a4: 480c ldr r0, [pc, #48] ; (803c7d8 ) + 803c7a6: f001 fc45 bl 803e034 } /* Set the link callback function, this function is called on change of link status*/ netif_set_link_callback(&gnetif, ethernet_link_status_updated); - 803c76a: 490c ldr r1, [pc, #48] ; (803c79c ) - 803c76c: 480a ldr r0, [pc, #40] ; (803c798 ) - 803c76e: f001 fcdf bl 803e130 + 803c7aa: 490c ldr r1, [pc, #48] ; (803c7dc ) + 803c7ac: 480a ldr r0, [pc, #40] ; (803c7d8 ) + 803c7ae: f001 fcdf bl 803e170 /* Create the Ethernet link handler thread */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ } - 803c772: bf00 nop - 803c774: 46bd mov sp, r7 - 803c776: bd80 pop {r7, pc} - 803c778: 2400ba30 .word 0x2400ba30 - 803c77c: 2400ba34 .word 0x2400ba34 - 803c780: 2400ba38 .word 0x2400ba38 - 803c784: 2400ba24 .word 0x2400ba24 - 803c788: 2400ba28 .word 0x2400ba28 - 803c78c: 2400ba2c .word 0x2400ba2c - 803c790: 08047b51 .word 0x08047b51 - 803c794: 0803cad1 .word 0x0803cad1 - 803c798: 2400b9ec .word 0x2400b9ec - 803c79c: 0803c7f1 .word 0x0803c7f1 - -0803c7a0 : + 803c7b2: bf00 nop + 803c7b4: 46bd mov sp, r7 + 803c7b6: bd80 pop {r7, pc} + 803c7b8: 2400ba30 .word 0x2400ba30 + 803c7bc: 2400ba34 .word 0x2400ba34 + 803c7c0: 2400ba38 .word 0x2400ba38 + 803c7c4: 2400ba24 .word 0x2400ba24 + 803c7c8: 2400ba28 .word 0x2400ba28 + 803c7cc: 2400ba2c .word 0x2400ba2c + 803c7d0: 08047b91 .word 0x08047b91 + 803c7d4: 0803cb11 .word 0x0803cb11 + 803c7d8: 2400b9ec .word 0x2400b9ec + 803c7dc: 0803c831 .word 0x0803c831 + +0803c7e0 : * @brief Ethernet Link periodic check * @param netif * @retval None */ static void Ethernet_Link_Periodic_Handle(struct netif *netif) { - 803c7a0: b580 push {r7, lr} - 803c7a2: b082 sub sp, #8 - 803c7a4: af00 add r7, sp, #0 - 803c7a6: 6078 str r0, [r7, #4] + 803c7e0: b580 push {r7, lr} + 803c7e2: b082 sub sp, #8 + 803c7e4: af00 add r7, sp, #0 + 803c7e6: 6078 str r0, [r7, #4] /* USER CODE BEGIN 4_4_1 */ /* USER CODE END 4_4_1 */ /* Ethernet Link every 100ms */ if (HAL_GetTick() - EthernetLinkTimer >= 100) - 803c7a8: f7f0 fbf4 bl 802cf94 - 803c7ac: 4602 mov r2, r0 - 803c7ae: 4b08 ldr r3, [pc, #32] ; (803c7d0 ) - 803c7b0: 681b ldr r3, [r3, #0] - 803c7b2: 1ad3 subs r3, r2, r3 - 803c7b4: 2b63 cmp r3, #99 ; 0x63 - 803c7b6: d907 bls.n 803c7c8 + 803c7e8: f7f0 fbf4 bl 802cfd4 + 803c7ec: 4602 mov r2, r0 + 803c7ee: 4b08 ldr r3, [pc, #32] ; (803c810 ) + 803c7f0: 681b ldr r3, [r3, #0] + 803c7f2: 1ad3 subs r3, r2, r3 + 803c7f4: 2b63 cmp r3, #99 ; 0x63 + 803c7f6: d907 bls.n 803c808 { EthernetLinkTimer = HAL_GetTick(); - 803c7b8: f7f0 fbec bl 802cf94 - 803c7bc: 4603 mov r3, r0 - 803c7be: 4a04 ldr r2, [pc, #16] ; (803c7d0 ) - 803c7c0: 6013 str r3, [r2, #0] + 803c7f8: f7f0 fbec bl 802cfd4 + 803c7fc: 4603 mov r3, r0 + 803c7fe: 4a04 ldr r2, [pc, #16] ; (803c810 ) + 803c800: 6013 str r3, [r2, #0] ethernet_link_check_state(netif); - 803c7c2: 6878 ldr r0, [r7, #4] - 803c7c4: f000 fade bl 803cd84 + 803c802: 6878 ldr r0, [r7, #4] + 803c804: f000 fade bl 803cdc4 } /* USER CODE BEGIN 4_4 */ /* USER CODE END 4_4 */ } - 803c7c8: bf00 nop - 803c7ca: 3708 adds r7, #8 - 803c7cc: 46bd mov sp, r7 - 803c7ce: bd80 pop {r7, pc} - 803c7d0: 2400b9e8 .word 0x2400b9e8 + 803c808: bf00 nop + 803c80a: 3708 adds r7, #8 + 803c80c: 46bd mov sp, r7 + 803c80e: bd80 pop {r7, pc} + 803c810: 2400b9e8 .word 0x2400b9e8 -0803c7d4 : +0803c814 : * Send it to the lwIP stack for handling * Handle timeouts if LWIP_TIMERS is set and without RTOS * Handle the llink status if LWIP_NETIF_LINK_CALLBACK is set and without RTOS */ void MX_LWIP_Process(void) { - 803c7d4: b580 push {r7, lr} - 803c7d6: af00 add r7, sp, #0 + 803c814: b580 push {r7, lr} + 803c816: af00 add r7, sp, #0 /* USER CODE BEGIN 4_1 */ /* USER CODE END 4_1 */ ethernetif_input(&gnetif); - 803c7d8: 4804 ldr r0, [pc, #16] ; (803c7ec ) - 803c7da: f000 f959 bl 803ca90 + 803c818: 4804 ldr r0, [pc, #16] ; (803c82c ) + 803c81a: f000 f959 bl 803cad0 /* USER CODE BEGIN 4_2 */ /* USER CODE END 4_2 */ /* Handle timeouts */ sys_check_timeouts(); - 803c7de: f008 fa13 bl 8044c08 + 803c81e: f008 fa13 bl 8044c48 Ethernet_Link_Periodic_Handle(&gnetif); - 803c7e2: 4802 ldr r0, [pc, #8] ; (803c7ec ) - 803c7e4: f7ff ffdc bl 803c7a0 + 803c822: 4802 ldr r0, [pc, #8] ; (803c82c ) + 803c824: f7ff ffdc bl 803c7e0 /* USER CODE BEGIN 4_3 */ /* USER CODE END 4_3 */ } - 803c7e8: bf00 nop - 803c7ea: bd80 pop {r7, pc} - 803c7ec: 2400b9ec .word 0x2400b9ec + 803c828: bf00 nop + 803c82a: bd80 pop {r7, pc} + 803c82c: 2400b9ec .word 0x2400b9ec -0803c7f0 : +0803c830 : * @brief Notify the User about the network interface config status * @param netif: the network interface * @retval None */ static void ethernet_link_status_updated(struct netif *netif) { - 803c7f0: b480 push {r7} - 803c7f2: b083 sub sp, #12 - 803c7f4: af00 add r7, sp, #0 - 803c7f6: 6078 str r0, [r7, #4] + 803c830: b480 push {r7} + 803c832: b083 sub sp, #12 + 803c834: af00 add r7, sp, #0 + 803c836: 6078 str r0, [r7, #4] else /* netif is down */ { /* USER CODE BEGIN 6 */ /* USER CODE END 6 */ } } - 803c7f8: bf00 nop - 803c7fa: 370c adds r7, #12 - 803c7fc: 46bd mov sp, r7 - 803c7fe: f85d 7b04 ldr.w r7, [sp], #4 - 803c802: 4770 bx lr + 803c838: bf00 nop + 803c83a: 370c adds r7, #12 + 803c83c: 46bd mov sp, r7 + 803c83e: f85d 7b04 ldr.w r7, [sp], #4 + 803c842: 4770 bx lr -0803c804 : +0803c844 : * * @param netif the already initialized lwip network interface structure * for this ethernetif */ static void low_level_init(struct netif *netif) { - 803c804: b580 push {r7, lr} - 803c806: b084 sub sp, #16 - 803c808: af00 add r7, sp, #0 - 803c80a: 6078 str r0, [r7, #4] + 803c844: b580 push {r7, lr} + 803c846: b084 sub sp, #16 + 803c848: af00 add r7, sp, #0 + 803c84a: 6078 str r0, [r7, #4] HAL_StatusTypeDef hal_eth_init_status = HAL_OK; - 803c80c: 2300 movs r3, #0 - 803c80e: 73fb strb r3, [r7, #15] + 803c84c: 2300 movs r3, #0 + 803c84e: 73fb strb r3, [r7, #15] /* Start ETH HAL Init */ uint8_t MACAddr[6] ; heth.Instance = ETH; - 803c810: 4b48 ldr r3, [pc, #288] ; (803c934 ) - 803c812: 4a49 ldr r2, [pc, #292] ; (803c938 ) - 803c814: 601a str r2, [r3, #0] + 803c850: 4b48 ldr r3, [pc, #288] ; (803c974 ) + 803c852: 4a49 ldr r2, [pc, #292] ; (803c978 ) + 803c854: 601a str r2, [r3, #0] MACAddr[0] = 0x00; - 803c816: 2300 movs r3, #0 - 803c818: 723b strb r3, [r7, #8] + 803c856: 2300 movs r3, #0 + 803c858: 723b strb r3, [r7, #8] MACAddr[1] = 0x80; - 803c81a: 2380 movs r3, #128 ; 0x80 - 803c81c: 727b strb r3, [r7, #9] + 803c85a: 2380 movs r3, #128 ; 0x80 + 803c85c: 727b strb r3, [r7, #9] MACAddr[2] = 0xE1; - 803c81e: 23e1 movs r3, #225 ; 0xe1 - 803c820: 72bb strb r3, [r7, #10] + 803c85e: 23e1 movs r3, #225 ; 0xe1 + 803c860: 72bb strb r3, [r7, #10] MACAddr[3] = 0x00; - 803c822: 2300 movs r3, #0 - 803c824: 72fb strb r3, [r7, #11] + 803c862: 2300 movs r3, #0 + 803c864: 72fb strb r3, [r7, #11] MACAddr[4] = 0x00; - 803c826: 2300 movs r3, #0 - 803c828: 733b strb r3, [r7, #12] + 803c866: 2300 movs r3, #0 + 803c868: 733b strb r3, [r7, #12] MACAddr[5] = 0x00; - 803c82a: 2300 movs r3, #0 - 803c82c: 737b strb r3, [r7, #13] + 803c86a: 2300 movs r3, #0 + 803c86c: 737b strb r3, [r7, #13] heth.Init.MACAddr = &MACAddr[0]; - 803c82e: 4a41 ldr r2, [pc, #260] ; (803c934 ) - 803c830: f107 0308 add.w r3, r7, #8 - 803c834: 6053 str r3, [r2, #4] + 803c86e: 4a41 ldr r2, [pc, #260] ; (803c974 ) + 803c870: f107 0308 add.w r3, r7, #8 + 803c874: 6053 str r3, [r2, #4] heth.Init.MediaInterface = HAL_ETH_RMII_MODE; - 803c836: 4b3f ldr r3, [pc, #252] ; (803c934 ) - 803c838: 2201 movs r2, #1 - 803c83a: 721a strb r2, [r3, #8] + 803c876: 4b3f ldr r3, [pc, #252] ; (803c974 ) + 803c878: 2201 movs r2, #1 + 803c87a: 721a strb r2, [r3, #8] heth.Init.TxDesc = DMATxDscrTab; - 803c83c: 4b3d ldr r3, [pc, #244] ; (803c934 ) - 803c83e: 4a3f ldr r2, [pc, #252] ; (803c93c ) - 803c840: 60da str r2, [r3, #12] + 803c87c: 4b3d ldr r3, [pc, #244] ; (803c974 ) + 803c87e: 4a3f ldr r2, [pc, #252] ; (803c97c ) + 803c880: 60da str r2, [r3, #12] heth.Init.RxDesc = DMARxDscrTab; - 803c842: 4b3c ldr r3, [pc, #240] ; (803c934 ) - 803c844: 4a3e ldr r2, [pc, #248] ; (803c940 ) - 803c846: 611a str r2, [r3, #16] + 803c882: 4b3c ldr r3, [pc, #240] ; (803c974 ) + 803c884: 4a3e ldr r2, [pc, #248] ; (803c980 ) + 803c886: 611a str r2, [r3, #16] heth.Init.RxBuffLen = 1528; - 803c848: 4b3a ldr r3, [pc, #232] ; (803c934 ) - 803c84a: f44f 62bf mov.w r2, #1528 ; 0x5f8 - 803c84e: 615a str r2, [r3, #20] + 803c888: 4b3a ldr r3, [pc, #232] ; (803c974 ) + 803c88a: f44f 62bf mov.w r2, #1528 ; 0x5f8 + 803c88e: 615a str r2, [r3, #20] /* USER CODE BEGIN MACADDRESS */ /* USER CODE END MACADDRESS */ hal_eth_init_status = HAL_ETH_Init(&heth); - 803c850: 4838 ldr r0, [pc, #224] ; (803c934 ) - 803c852: f7f4 fb4d bl 8030ef0 - 803c856: 4603 mov r3, r0 - 803c858: 73fb strb r3, [r7, #15] + 803c890: 4838 ldr r0, [pc, #224] ; (803c974 ) + 803c892: f7f4 fb4d bl 8030f30 + 803c896: 4603 mov r3, r0 + 803c898: 73fb strb r3, [r7, #15] memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig)); - 803c85a: 2238 movs r2, #56 ; 0x38 - 803c85c: 2100 movs r1, #0 - 803c85e: 4839 ldr r0, [pc, #228] ; (803c944 ) - 803c860: f00b fab8 bl 8047dd4 + 803c89a: 2238 movs r2, #56 ; 0x38 + 803c89c: 2100 movs r1, #0 + 803c89e: 4839 ldr r0, [pc, #228] ; (803c984 ) + 803c8a0: f00b fab8 bl 8047e14 TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD; - 803c864: 4b37 ldr r3, [pc, #220] ; (803c944 ) - 803c866: 2221 movs r2, #33 ; 0x21 - 803c868: 601a str r2, [r3, #0] + 803c8a4: 4b37 ldr r3, [pc, #220] ; (803c984 ) + 803c8a6: 2221 movs r2, #33 ; 0x21 + 803c8a8: 601a str r2, [r3, #0] TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC; - 803c86a: 4b36 ldr r3, [pc, #216] ; (803c944 ) - 803c86c: f44f 3240 mov.w r2, #196608 ; 0x30000 - 803c870: 615a str r2, [r3, #20] + 803c8aa: 4b36 ldr r3, [pc, #216] ; (803c984 ) + 803c8ac: f44f 3240 mov.w r2, #196608 ; 0x30000 + 803c8b0: 615a str r2, [r3, #20] TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT; - 803c872: 4b34 ldr r3, [pc, #208] ; (803c944 ) - 803c874: 2200 movs r2, #0 - 803c876: 611a str r2, [r3, #16] + 803c8b2: 4b34 ldr r3, [pc, #208] ; (803c984 ) + 803c8b4: 2200 movs r2, #0 + 803c8b6: 611a str r2, [r3, #16] /* End ETH HAL Init */ /* Initialize the RX POOL */ LWIP_MEMPOOL_INIT(RX_POOL); - 803c878: 4833 ldr r0, [pc, #204] ; (803c948 ) - 803c87a: f001 f841 bl 803d900 + 803c8b8: 4833 ldr r0, [pc, #204] ; (803c988 ) + 803c8ba: f001 f841 bl 803d940 #if LWIP_ARP || LWIP_ETHERNET /* set MAC hardware address length */ netif->hwaddr_len = ETH_HWADDR_LEN; - 803c87e: 687b ldr r3, [r7, #4] - 803c880: 2206 movs r2, #6 - 803c882: f883 2030 strb.w r2, [r3, #48] ; 0x30 + 803c8be: 687b ldr r3, [r7, #4] + 803c8c0: 2206 movs r2, #6 + 803c8c2: f883 2030 strb.w r2, [r3, #48] ; 0x30 /* set MAC hardware address */ netif->hwaddr[0] = heth.Init.MACAddr[0]; - 803c886: 4b2b ldr r3, [pc, #172] ; (803c934 ) - 803c888: 685b ldr r3, [r3, #4] - 803c88a: 781a ldrb r2, [r3, #0] - 803c88c: 687b ldr r3, [r7, #4] - 803c88e: f883 202a strb.w r2, [r3, #42] ; 0x2a + 803c8c6: 4b2b ldr r3, [pc, #172] ; (803c974 ) + 803c8c8: 685b ldr r3, [r3, #4] + 803c8ca: 781a ldrb r2, [r3, #0] + 803c8cc: 687b ldr r3, [r7, #4] + 803c8ce: f883 202a strb.w r2, [r3, #42] ; 0x2a netif->hwaddr[1] = heth.Init.MACAddr[1]; - 803c892: 4b28 ldr r3, [pc, #160] ; (803c934 ) - 803c894: 685b ldr r3, [r3, #4] - 803c896: 785a ldrb r2, [r3, #1] - 803c898: 687b ldr r3, [r7, #4] - 803c89a: f883 202b strb.w r2, [r3, #43] ; 0x2b + 803c8d2: 4b28 ldr r3, [pc, #160] ; (803c974 ) + 803c8d4: 685b ldr r3, [r3, #4] + 803c8d6: 785a ldrb r2, [r3, #1] + 803c8d8: 687b ldr r3, [r7, #4] + 803c8da: f883 202b strb.w r2, [r3, #43] ; 0x2b netif->hwaddr[2] = heth.Init.MACAddr[2]; - 803c89e: 4b25 ldr r3, [pc, #148] ; (803c934 ) - 803c8a0: 685b ldr r3, [r3, #4] - 803c8a2: 789a ldrb r2, [r3, #2] - 803c8a4: 687b ldr r3, [r7, #4] - 803c8a6: f883 202c strb.w r2, [r3, #44] ; 0x2c + 803c8de: 4b25 ldr r3, [pc, #148] ; (803c974 ) + 803c8e0: 685b ldr r3, [r3, #4] + 803c8e2: 789a ldrb r2, [r3, #2] + 803c8e4: 687b ldr r3, [r7, #4] + 803c8e6: f883 202c strb.w r2, [r3, #44] ; 0x2c netif->hwaddr[3] = heth.Init.MACAddr[3]; - 803c8aa: 4b22 ldr r3, [pc, #136] ; (803c934 ) - 803c8ac: 685b ldr r3, [r3, #4] - 803c8ae: 78da ldrb r2, [r3, #3] - 803c8b0: 687b ldr r3, [r7, #4] - 803c8b2: f883 202d strb.w r2, [r3, #45] ; 0x2d + 803c8ea: 4b22 ldr r3, [pc, #136] ; (803c974 ) + 803c8ec: 685b ldr r3, [r3, #4] + 803c8ee: 78da ldrb r2, [r3, #3] + 803c8f0: 687b ldr r3, [r7, #4] + 803c8f2: f883 202d strb.w r2, [r3, #45] ; 0x2d netif->hwaddr[4] = heth.Init.MACAddr[4]; - 803c8b6: 4b1f ldr r3, [pc, #124] ; (803c934 ) - 803c8b8: 685b ldr r3, [r3, #4] - 803c8ba: 791a ldrb r2, [r3, #4] - 803c8bc: 687b ldr r3, [r7, #4] - 803c8be: f883 202e strb.w r2, [r3, #46] ; 0x2e + 803c8f6: 4b1f ldr r3, [pc, #124] ; (803c974 ) + 803c8f8: 685b ldr r3, [r3, #4] + 803c8fa: 791a ldrb r2, [r3, #4] + 803c8fc: 687b ldr r3, [r7, #4] + 803c8fe: f883 202e strb.w r2, [r3, #46] ; 0x2e netif->hwaddr[5] = heth.Init.MACAddr[5]; - 803c8c2: 4b1c ldr r3, [pc, #112] ; (803c934 ) - 803c8c4: 685b ldr r3, [r3, #4] - 803c8c6: 795a ldrb r2, [r3, #5] - 803c8c8: 687b ldr r3, [r7, #4] - 803c8ca: f883 202f strb.w r2, [r3, #47] ; 0x2f + 803c902: 4b1c ldr r3, [pc, #112] ; (803c974 ) + 803c904: 685b ldr r3, [r3, #4] + 803c906: 795a ldrb r2, [r3, #5] + 803c908: 687b ldr r3, [r7, #4] + 803c90a: f883 202f strb.w r2, [r3, #47] ; 0x2f /* maximum transfer unit */ netif->mtu = ETH_MAX_PAYLOAD; - 803c8ce: 687b ldr r3, [r7, #4] - 803c8d0: f240 52dc movw r2, #1500 ; 0x5dc - 803c8d4: 851a strh r2, [r3, #40] ; 0x28 + 803c90e: 687b ldr r3, [r7, #4] + 803c910: f240 52dc movw r2, #1500 ; 0x5dc + 803c914: 851a strh r2, [r3, #40] ; 0x28 /* Accept broadcast address and ARP traffic */ /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */ #if LWIP_ARP netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP; - 803c8d6: 687b ldr r3, [r7, #4] - 803c8d8: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803c8dc: f043 030a orr.w r3, r3, #10 - 803c8e0: b2da uxtb r2, r3 - 803c8e2: 687b ldr r3, [r7, #4] - 803c8e4: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803c916: 687b ldr r3, [r7, #4] + 803c918: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803c91c: f043 030a orr.w r3, r3, #10 + 803c920: b2da uxtb r2, r3 + 803c922: 687b ldr r3, [r7, #4] + 803c924: f883 2031 strb.w r2, [r3, #49] ; 0x31 netif->flags |= NETIF_FLAG_BROADCAST; #endif /* LWIP_ARP */ /* USER CODE BEGIN PHY_PRE_CONFIG */ HAL_GPIO_WritePin(ETH_RST_GPIO_Port,ETH_RST_Pin,GPIO_PIN_RESET); - 803c8e8: 2200 movs r2, #0 - 803c8ea: 2140 movs r1, #64 ; 0x40 - 803c8ec: 4817 ldr r0, [pc, #92] ; (803c94c ) - 803c8ee: f7f7 f98b bl 8033c08 + 803c928: 2200 movs r2, #0 + 803c92a: 2140 movs r1, #64 ; 0x40 + 803c92c: 4817 ldr r0, [pc, #92] ; (803c98c ) + 803c92e: f7f7 f98b bl 8033c48 HAL_Delay(1000); - 803c8f2: f44f 707a mov.w r0, #1000 ; 0x3e8 - 803c8f6: f7f0 fb59 bl 802cfac + 803c932: f44f 707a mov.w r0, #1000 ; 0x3e8 + 803c936: f7f0 fb59 bl 802cfec HAL_GPIO_WritePin(ETH_RST_GPIO_Port,ETH_RST_Pin,GPIO_PIN_SET); - 803c8fa: 2201 movs r2, #1 - 803c8fc: 2140 movs r1, #64 ; 0x40 - 803c8fe: 4813 ldr r0, [pc, #76] ; (803c94c ) - 803c900: f7f7 f982 bl 8033c08 + 803c93a: 2201 movs r2, #1 + 803c93c: 2140 movs r1, #64 ; 0x40 + 803c93e: 4813 ldr r0, [pc, #76] ; (803c98c ) + 803c940: f7f7 f982 bl 8033c48 HAL_Delay(1000); - 803c904: f44f 707a mov.w r0, #1000 ; 0x3e8 - 803c908: f7f0 fb50 bl 802cfac + 803c944: f44f 707a mov.w r0, #1000 ; 0x3e8 + 803c948: f7f0 fb50 bl 802cfec /* USER CODE END PHY_PRE_CONFIG */ /* Set PHY IO functions */ LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx); - 803c90c: 4910 ldr r1, [pc, #64] ; (803c950 ) - 803c90e: 4811 ldr r0, [pc, #68] ; (803c954 ) - 803c910: f7f0 f959 bl 802cbc6 + 803c94c: 4910 ldr r1, [pc, #64] ; (803c990 ) + 803c94e: 4811 ldr r0, [pc, #68] ; (803c994 ) + 803c950: f7f0 f959 bl 802cc06 /* Initialize the LAN8742 ETH PHY */ LAN8742_Init(&LAN8742); - 803c914: 480f ldr r0, [pc, #60] ; (803c954 ) - 803c916: f7f0 f988 bl 802cc2a + 803c954: 480f ldr r0, [pc, #60] ; (803c994 ) + 803c956: f7f0 f988 bl 802cc6a if (hal_eth_init_status == HAL_OK) - 803c91a: 7bfb ldrb r3, [r7, #15] - 803c91c: 2b00 cmp r3, #0 - 803c91e: d103 bne.n 803c928 + 803c95a: 7bfb ldrb r3, [r7, #15] + 803c95c: 2b00 cmp r3, #0 + 803c95e: d103 bne.n 803c968 { /* Get link state */ ethernet_link_check_state(netif); - 803c920: 6878 ldr r0, [r7, #4] - 803c922: f000 fa2f bl 803cd84 + 803c960: 6878 ldr r0, [r7, #4] + 803c962: f000 fa2f bl 803cdc4 #endif /* LWIP_ARP || LWIP_ETHERNET */ /* USER CODE BEGIN LOW_LEVEL_INIT */ /* USER CODE END LOW_LEVEL_INIT */ } - 803c926: e001 b.n 803c92c + 803c966: e001 b.n 803c96c Error_Handler(); - 803c928: f7ee fbc8 bl 802b0bc -} - 803c92c: bf00 nop - 803c92e: 3710 adds r7, #16 - 803c930: 46bd mov sp, r7 - 803c932: bd80 pop {r7, pc} - 803c934: 2400ba44 .word 0x2400ba44 - 803c938: 40028000 .word 0x40028000 - 803c93c: 30040200 .word 0x30040200 - 803c940: 30040000 .word 0x30040000 - 803c944: 2400baf4 .word 0x2400baf4 - 803c948: 0804d3ac .word 0x0804d3ac - 803c94c: 58020000 .word 0x58020000 - 803c950: 24000128 .word 0x24000128 - 803c954: 2400bb2c .word 0x2400bb2c - -0803c958 : + 803c968: f7ee fbc8 bl 802b0fc +} + 803c96c: bf00 nop + 803c96e: 3710 adds r7, #16 + 803c970: 46bd mov sp, r7 + 803c972: bd80 pop {r7, pc} + 803c974: 2400ba44 .word 0x2400ba44 + 803c978: 40028000 .word 0x40028000 + 803c97c: 30040200 .word 0x30040200 + 803c980: 30040000 .word 0x30040000 + 803c984: 2400baf4 .word 0x2400baf4 + 803c988: 0804d3ec .word 0x0804d3ec + 803c98c: 58020000 .word 0x58020000 + 803c990: 24000128 .word 0x24000128 + 803c994: 2400bb2c .word 0x2400bb2c + +0803c998 : * to become available since the stack doesn't retry to send a packet * dropped because of memory failure (except for the TCP timers). */ static err_t low_level_output(struct netif *netif, struct pbuf *p) { - 803c958: b580 push {r7, lr} - 803c95a: b092 sub sp, #72 ; 0x48 - 803c95c: af00 add r7, sp, #0 - 803c95e: 6078 str r0, [r7, #4] - 803c960: 6039 str r1, [r7, #0] + 803c998: b580 push {r7, lr} + 803c99a: b092 sub sp, #72 ; 0x48 + 803c99c: af00 add r7, sp, #0 + 803c99e: 6078 str r0, [r7, #4] + 803c9a0: 6039 str r1, [r7, #0] uint32_t i = 0U; - 803c962: 2300 movs r3, #0 - 803c964: 647b str r3, [r7, #68] ; 0x44 + 803c9a2: 2300 movs r3, #0 + 803c9a4: 647b str r3, [r7, #68] ; 0x44 struct pbuf *q = NULL; - 803c966: 2300 movs r3, #0 - 803c968: 643b str r3, [r7, #64] ; 0x40 + 803c9a6: 2300 movs r3, #0 + 803c9a8: 643b str r3, [r7, #64] ; 0x40 err_t errval = ERR_OK; - 803c96a: 2300 movs r3, #0 - 803c96c: f887 303f strb.w r3, [r7, #63] ; 0x3f + 803c9aa: 2300 movs r3, #0 + 803c9ac: f887 303f strb.w r3, [r7, #63] ; 0x3f ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0}; - 803c970: f107 030c add.w r3, r7, #12 - 803c974: 2230 movs r2, #48 ; 0x30 - 803c976: 2100 movs r1, #0 - 803c978: 4618 mov r0, r3 - 803c97a: f00b fa2b bl 8047dd4 + 803c9b0: f107 030c add.w r3, r7, #12 + 803c9b4: 2230 movs r2, #48 ; 0x30 + 803c9b6: 2100 movs r1, #0 + 803c9b8: 4618 mov r0, r3 + 803c9ba: f00b fa2b bl 8047e14 memset(Txbuffer, 0 , ETH_TX_DESC_CNT*sizeof(ETH_BufferTypeDef)); - 803c97e: f107 030c add.w r3, r7, #12 - 803c982: 2230 movs r2, #48 ; 0x30 - 803c984: 2100 movs r1, #0 - 803c986: 4618 mov r0, r3 - 803c988: f00b fa24 bl 8047dd4 + 803c9be: f107 030c add.w r3, r7, #12 + 803c9c2: 2230 movs r2, #48 ; 0x30 + 803c9c4: 2100 movs r1, #0 + 803c9c6: 4618 mov r0, r3 + 803c9c8: f00b fa24 bl 8047e14 for(q = p; q != NULL; q = q->next) - 803c98c: 683b ldr r3, [r7, #0] - 803c98e: 643b str r3, [r7, #64] ; 0x40 - 803c990: e045 b.n 803ca1e + 803c9cc: 683b ldr r3, [r7, #0] + 803c9ce: 643b str r3, [r7, #64] ; 0x40 + 803c9d0: e045 b.n 803ca5e { if(i >= ETH_TX_DESC_CNT) - 803c992: 6c7b ldr r3, [r7, #68] ; 0x44 - 803c994: 2b03 cmp r3, #3 - 803c996: d902 bls.n 803c99e + 803c9d2: 6c7b ldr r3, [r7, #68] ; 0x44 + 803c9d4: 2b03 cmp r3, #3 + 803c9d6: d902 bls.n 803c9de return ERR_IF; - 803c998: f06f 030b mvn.w r3, #11 - 803c99c: e055 b.n 803ca4a + 803c9d8: f06f 030b mvn.w r3, #11 + 803c9dc: e055 b.n 803ca8a Txbuffer[i].buffer = q->payload; - 803c99e: 6c3b ldr r3, [r7, #64] ; 0x40 - 803c9a0: 6859 ldr r1, [r3, #4] - 803c9a2: 6c7a ldr r2, [r7, #68] ; 0x44 - 803c9a4: 4613 mov r3, r2 - 803c9a6: 005b lsls r3, r3, #1 - 803c9a8: 4413 add r3, r2 - 803c9aa: 009b lsls r3, r3, #2 - 803c9ac: 3348 adds r3, #72 ; 0x48 - 803c9ae: 443b add r3, r7 - 803c9b0: 3b3c subs r3, #60 ; 0x3c - 803c9b2: 6019 str r1, [r3, #0] + 803c9de: 6c3b ldr r3, [r7, #64] ; 0x40 + 803c9e0: 6859 ldr r1, [r3, #4] + 803c9e2: 6c7a ldr r2, [r7, #68] ; 0x44 + 803c9e4: 4613 mov r3, r2 + 803c9e6: 005b lsls r3, r3, #1 + 803c9e8: 4413 add r3, r2 + 803c9ea: 009b lsls r3, r3, #2 + 803c9ec: 3348 adds r3, #72 ; 0x48 + 803c9ee: 443b add r3, r7 + 803c9f0: 3b3c subs r3, #60 ; 0x3c + 803c9f2: 6019 str r1, [r3, #0] Txbuffer[i].len = q->len; - 803c9b4: 6c3b ldr r3, [r7, #64] ; 0x40 - 803c9b6: 895b ldrh r3, [r3, #10] - 803c9b8: 4619 mov r1, r3 - 803c9ba: 6c7a ldr r2, [r7, #68] ; 0x44 - 803c9bc: 4613 mov r3, r2 - 803c9be: 005b lsls r3, r3, #1 - 803c9c0: 4413 add r3, r2 - 803c9c2: 009b lsls r3, r3, #2 - 803c9c4: 3348 adds r3, #72 ; 0x48 - 803c9c6: 443b add r3, r7 - 803c9c8: 3b38 subs r3, #56 ; 0x38 - 803c9ca: 6019 str r1, [r3, #0] + 803c9f4: 6c3b ldr r3, [r7, #64] ; 0x40 + 803c9f6: 895b ldrh r3, [r3, #10] + 803c9f8: 4619 mov r1, r3 + 803c9fa: 6c7a ldr r2, [r7, #68] ; 0x44 + 803c9fc: 4613 mov r3, r2 + 803c9fe: 005b lsls r3, r3, #1 + 803ca00: 4413 add r3, r2 + 803ca02: 009b lsls r3, r3, #2 + 803ca04: 3348 adds r3, #72 ; 0x48 + 803ca06: 443b add r3, r7 + 803ca08: 3b38 subs r3, #56 ; 0x38 + 803ca0a: 6019 str r1, [r3, #0] if(i>0) - 803c9cc: 6c7b ldr r3, [r7, #68] ; 0x44 - 803c9ce: 2b00 cmp r3, #0 - 803c9d0: d011 beq.n 803c9f6 + 803ca0c: 6c7b ldr r3, [r7, #68] ; 0x44 + 803ca0e: 2b00 cmp r3, #0 + 803ca10: d011 beq.n 803ca36 { Txbuffer[i-1].next = &Txbuffer[i]; - 803c9d2: 6c7b ldr r3, [r7, #68] ; 0x44 - 803c9d4: 1e5a subs r2, r3, #1 - 803c9d6: f107 000c add.w r0, r7, #12 - 803c9da: 6c79 ldr r1, [r7, #68] ; 0x44 - 803c9dc: 460b mov r3, r1 - 803c9de: 005b lsls r3, r3, #1 - 803c9e0: 440b add r3, r1 - 803c9e2: 009b lsls r3, r3, #2 - 803c9e4: 18c1 adds r1, r0, r3 - 803c9e6: 4613 mov r3, r2 - 803c9e8: 005b lsls r3, r3, #1 - 803c9ea: 4413 add r3, r2 - 803c9ec: 009b lsls r3, r3, #2 - 803c9ee: 3348 adds r3, #72 ; 0x48 - 803c9f0: 443b add r3, r7 - 803c9f2: 3b34 subs r3, #52 ; 0x34 - 803c9f4: 6019 str r1, [r3, #0] + 803ca12: 6c7b ldr r3, [r7, #68] ; 0x44 + 803ca14: 1e5a subs r2, r3, #1 + 803ca16: f107 000c add.w r0, r7, #12 + 803ca1a: 6c79 ldr r1, [r7, #68] ; 0x44 + 803ca1c: 460b mov r3, r1 + 803ca1e: 005b lsls r3, r3, #1 + 803ca20: 440b add r3, r1 + 803ca22: 009b lsls r3, r3, #2 + 803ca24: 18c1 adds r1, r0, r3 + 803ca26: 4613 mov r3, r2 + 803ca28: 005b lsls r3, r3, #1 + 803ca2a: 4413 add r3, r2 + 803ca2c: 009b lsls r3, r3, #2 + 803ca2e: 3348 adds r3, #72 ; 0x48 + 803ca30: 443b add r3, r7 + 803ca32: 3b34 subs r3, #52 ; 0x34 + 803ca34: 6019 str r1, [r3, #0] } if(q->next == NULL) - 803c9f6: 6c3b ldr r3, [r7, #64] ; 0x40 - 803c9f8: 681b ldr r3, [r3, #0] - 803c9fa: 2b00 cmp r3, #0 - 803c9fc: d109 bne.n 803ca12 + 803ca36: 6c3b ldr r3, [r7, #64] ; 0x40 + 803ca38: 681b ldr r3, [r3, #0] + 803ca3a: 2b00 cmp r3, #0 + 803ca3c: d109 bne.n 803ca52 { Txbuffer[i].next = NULL; - 803c9fe: 6c7a ldr r2, [r7, #68] ; 0x44 - 803ca00: 4613 mov r3, r2 - 803ca02: 005b lsls r3, r3, #1 - 803ca04: 4413 add r3, r2 - 803ca06: 009b lsls r3, r3, #2 - 803ca08: 3348 adds r3, #72 ; 0x48 - 803ca0a: 443b add r3, r7 - 803ca0c: 3b34 subs r3, #52 ; 0x34 - 803ca0e: 2200 movs r2, #0 - 803ca10: 601a str r2, [r3, #0] + 803ca3e: 6c7a ldr r2, [r7, #68] ; 0x44 + 803ca40: 4613 mov r3, r2 + 803ca42: 005b lsls r3, r3, #1 + 803ca44: 4413 add r3, r2 + 803ca46: 009b lsls r3, r3, #2 + 803ca48: 3348 adds r3, #72 ; 0x48 + 803ca4a: 443b add r3, r7 + 803ca4c: 3b34 subs r3, #52 ; 0x34 + 803ca4e: 2200 movs r2, #0 + 803ca50: 601a str r2, [r3, #0] } i++; - 803ca12: 6c7b ldr r3, [r7, #68] ; 0x44 - 803ca14: 3301 adds r3, #1 - 803ca16: 647b str r3, [r7, #68] ; 0x44 + 803ca52: 6c7b ldr r3, [r7, #68] ; 0x44 + 803ca54: 3301 adds r3, #1 + 803ca56: 647b str r3, [r7, #68] ; 0x44 for(q = p; q != NULL; q = q->next) - 803ca18: 6c3b ldr r3, [r7, #64] ; 0x40 - 803ca1a: 681b ldr r3, [r3, #0] - 803ca1c: 643b str r3, [r7, #64] ; 0x40 - 803ca1e: 6c3b ldr r3, [r7, #64] ; 0x40 - 803ca20: 2b00 cmp r3, #0 - 803ca22: d1b6 bne.n 803c992 + 803ca58: 6c3b ldr r3, [r7, #64] ; 0x40 + 803ca5a: 681b ldr r3, [r3, #0] + 803ca5c: 643b str r3, [r7, #64] ; 0x40 + 803ca5e: 6c3b ldr r3, [r7, #64] ; 0x40 + 803ca60: 2b00 cmp r3, #0 + 803ca62: d1b6 bne.n 803c9d2 } TxConfig.Length = p->tot_len; - 803ca24: 683b ldr r3, [r7, #0] - 803ca26: 891b ldrh r3, [r3, #8] - 803ca28: 461a mov r2, r3 - 803ca2a: 4b0a ldr r3, [pc, #40] ; (803ca54 ) - 803ca2c: 605a str r2, [r3, #4] + 803ca64: 683b ldr r3, [r7, #0] + 803ca66: 891b ldrh r3, [r3, #8] + 803ca68: 461a mov r2, r3 + 803ca6a: 4b0a ldr r3, [pc, #40] ; (803ca94 ) + 803ca6c: 605a str r2, [r3, #4] TxConfig.TxBuffer = Txbuffer; - 803ca2e: 4a09 ldr r2, [pc, #36] ; (803ca54 ) - 803ca30: f107 030c add.w r3, r7, #12 - 803ca34: 6093 str r3, [r2, #8] + 803ca6e: 4a09 ldr r2, [pc, #36] ; (803ca94 ) + 803ca70: f107 030c add.w r3, r7, #12 + 803ca74: 6093 str r3, [r2, #8] TxConfig.pData = p; - 803ca36: 4a07 ldr r2, [pc, #28] ; (803ca54 ) - 803ca38: 683b ldr r3, [r7, #0] - 803ca3a: 6353 str r3, [r2, #52] ; 0x34 + 803ca76: 4a07 ldr r2, [pc, #28] ; (803ca94 ) + 803ca78: 683b ldr r3, [r7, #0] + 803ca7a: 6353 str r3, [r2, #52] ; 0x34 HAL_ETH_Transmit(&heth, &TxConfig, ETH_DMA_TRANSMIT_TIMEOUT); - 803ca3c: 2214 movs r2, #20 - 803ca3e: 4905 ldr r1, [pc, #20] ; (803ca54 ) - 803ca40: 4805 ldr r0, [pc, #20] ; (803ca58 ) - 803ca42: f7f4 fbed bl 8031220 + 803ca7c: 2214 movs r2, #20 + 803ca7e: 4905 ldr r1, [pc, #20] ; (803ca94 ) + 803ca80: 4805 ldr r0, [pc, #20] ; (803ca98 ) + 803ca82: f7f4 fbed bl 8031260 return errval; - 803ca46: f997 303f ldrsb.w r3, [r7, #63] ; 0x3f + 803ca86: f997 303f ldrsb.w r3, [r7, #63] ; 0x3f } - 803ca4a: 4618 mov r0, r3 - 803ca4c: 3748 adds r7, #72 ; 0x48 - 803ca4e: 46bd mov sp, r7 - 803ca50: bd80 pop {r7, pc} - 803ca52: bf00 nop - 803ca54: 2400baf4 .word 0x2400baf4 - 803ca58: 2400ba44 .word 0x2400ba44 + 803ca8a: 4618 mov r0, r3 + 803ca8c: 3748 adds r7, #72 ; 0x48 + 803ca8e: 46bd mov sp, r7 + 803ca90: bd80 pop {r7, pc} + 803ca92: bf00 nop + 803ca94: 2400baf4 .word 0x2400baf4 + 803ca98: 2400ba44 .word 0x2400ba44 -0803ca5c : +0803ca9c : * @param netif the lwip network interface structure for this ethernetif * @return a pbuf filled with the received packet (including MAC header) * NULL on memory error */ static struct pbuf * low_level_input(struct netif *netif) { - 803ca5c: b580 push {r7, lr} - 803ca5e: b084 sub sp, #16 - 803ca60: af00 add r7, sp, #0 - 803ca62: 6078 str r0, [r7, #4] + 803ca9c: b580 push {r7, lr} + 803ca9e: b084 sub sp, #16 + 803caa0: af00 add r7, sp, #0 + 803caa2: 6078 str r0, [r7, #4] struct pbuf *p = NULL; - 803ca64: 2300 movs r3, #0 - 803ca66: 60fb str r3, [r7, #12] + 803caa4: 2300 movs r3, #0 + 803caa6: 60fb str r3, [r7, #12] if(RxAllocStatus == RX_ALLOC_OK) - 803ca68: 4b07 ldr r3, [pc, #28] ; (803ca88 ) - 803ca6a: 781b ldrb r3, [r3, #0] - 803ca6c: 2b00 cmp r3, #0 - 803ca6e: d105 bne.n 803ca7c + 803caa8: 4b07 ldr r3, [pc, #28] ; (803cac8 ) + 803caaa: 781b ldrb r3, [r3, #0] + 803caac: 2b00 cmp r3, #0 + 803caae: d105 bne.n 803cabc { HAL_ETH_ReadData(&heth, (void **)&p); - 803ca70: f107 030c add.w r3, r7, #12 - 803ca74: 4619 mov r1, r3 - 803ca76: 4805 ldr r0, [pc, #20] ; (803ca8c ) - 803ca78: f7f4 fc69 bl 803134e + 803cab0: f107 030c add.w r3, r7, #12 + 803cab4: 4619 mov r1, r3 + 803cab6: 4805 ldr r0, [pc, #20] ; (803cacc ) + 803cab8: f7f4 fc69 bl 803138e } return p; - 803ca7c: 68fb ldr r3, [r7, #12] + 803cabc: 68fb ldr r3, [r7, #12] } - 803ca7e: 4618 mov r0, r3 - 803ca80: 3710 adds r7, #16 - 803ca82: 46bd mov sp, r7 - 803ca84: bd80 pop {r7, pc} - 803ca86: bf00 nop - 803ca88: 2400ba40 .word 0x2400ba40 - 803ca8c: 2400ba44 .word 0x2400ba44 + 803cabe: 4618 mov r0, r3 + 803cac0: 3710 adds r7, #16 + 803cac2: 46bd mov sp, r7 + 803cac4: bd80 pop {r7, pc} + 803cac6: bf00 nop + 803cac8: 2400ba40 .word 0x2400ba40 + 803cacc: 2400ba44 .word 0x2400ba44 -0803ca90 : +0803cad0 : * the appropriate input function is called. * * @param netif the lwip network interface structure for this ethernetif */ void ethernetif_input(struct netif *netif) { - 803ca90: b580 push {r7, lr} - 803ca92: b084 sub sp, #16 - 803ca94: af00 add r7, sp, #0 - 803ca96: 6078 str r0, [r7, #4] + 803cad0: b580 push {r7, lr} + 803cad2: b084 sub sp, #16 + 803cad4: af00 add r7, sp, #0 + 803cad6: 6078 str r0, [r7, #4] struct pbuf *p = NULL; - 803ca98: 2300 movs r3, #0 - 803ca9a: 60fb str r3, [r7, #12] + 803cad8: 2300 movs r3, #0 + 803cada: 60fb str r3, [r7, #12] do { p = low_level_input( netif ); - 803ca9c: 6878 ldr r0, [r7, #4] - 803ca9e: f7ff ffdd bl 803ca5c - 803caa2: 60f8 str r0, [r7, #12] + 803cadc: 6878 ldr r0, [r7, #4] + 803cade: f7ff ffdd bl 803ca9c + 803cae2: 60f8 str r0, [r7, #12] if (p != NULL) - 803caa4: 68fb ldr r3, [r7, #12] - 803caa6: 2b00 cmp r3, #0 - 803caa8: d00a beq.n 803cac0 + 803cae4: 68fb ldr r3, [r7, #12] + 803cae6: 2b00 cmp r3, #0 + 803cae8: d00a beq.n 803cb00 { if (netif->input( p, netif) != ERR_OK ) - 803caaa: 687b ldr r3, [r7, #4] - 803caac: 691b ldr r3, [r3, #16] - 803caae: 6879 ldr r1, [r7, #4] - 803cab0: 68f8 ldr r0, [r7, #12] - 803cab2: 4798 blx r3 - 803cab4: 4603 mov r3, r0 - 803cab6: 2b00 cmp r3, #0 - 803cab8: d002 beq.n 803cac0 + 803caea: 687b ldr r3, [r7, #4] + 803caec: 691b ldr r3, [r3, #16] + 803caee: 6879 ldr r1, [r7, #4] + 803caf0: 68f8 ldr r0, [r7, #12] + 803caf2: 4798 blx r3 + 803caf4: 4603 mov r3, r0 + 803caf6: 2b00 cmp r3, #0 + 803caf8: d002 beq.n 803cb00 { pbuf_free(p); - 803caba: 68f8 ldr r0, [r7, #12] - 803cabc: f001 feb8 bl 803e830 + 803cafa: 68f8 ldr r0, [r7, #12] + 803cafc: f001 feb8 bl 803e870 } } } while(p!=NULL); - 803cac0: 68fb ldr r3, [r7, #12] - 803cac2: 2b00 cmp r3, #0 - 803cac4: d1ea bne.n 803ca9c + 803cb00: 68fb ldr r3, [r7, #12] + 803cb02: 2b00 cmp r3, #0 + 803cb04: d1ea bne.n 803cadc } - 803cac6: bf00 nop - 803cac8: bf00 nop - 803caca: 3710 adds r7, #16 - 803cacc: 46bd mov sp, r7 - 803cace: bd80 pop {r7, pc} + 803cb06: bf00 nop + 803cb08: bf00 nop + 803cb0a: 3710 adds r7, #16 + 803cb0c: 46bd mov sp, r7 + 803cb0e: bd80 pop {r7, pc} -0803cad0 : +0803cb10 : * @return ERR_OK if the loopif is initialized * ERR_MEM if private data couldn't be allocated * any other err_t on error */ err_t ethernetif_init(struct netif *netif) { - 803cad0: b580 push {r7, lr} - 803cad2: b082 sub sp, #8 - 803cad4: af00 add r7, sp, #0 - 803cad6: 6078 str r0, [r7, #4] + 803cb10: b580 push {r7, lr} + 803cb12: b082 sub sp, #8 + 803cb14: af00 add r7, sp, #0 + 803cb16: 6078 str r0, [r7, #4] LWIP_ASSERT("netif != NULL", (netif != NULL)); - 803cad8: 687b ldr r3, [r7, #4] - 803cada: 2b00 cmp r3, #0 - 803cadc: d106 bne.n 803caec - 803cade: 4b0e ldr r3, [pc, #56] ; (803cb18 ) - 803cae0: f240 128b movw r2, #395 ; 0x18b - 803cae4: 490d ldr r1, [pc, #52] ; (803cb1c ) - 803cae6: 480e ldr r0, [pc, #56] ; (803cb20 ) - 803cae8: f00b fa5c bl 8047fa4 + 803cb18: 687b ldr r3, [r7, #4] + 803cb1a: 2b00 cmp r3, #0 + 803cb1c: d106 bne.n 803cb2c + 803cb1e: 4b0e ldr r3, [pc, #56] ; (803cb58 ) + 803cb20: f240 128b movw r2, #395 ; 0x18b + 803cb24: 490d ldr r1, [pc, #52] ; (803cb5c ) + 803cb26: 480e ldr r0, [pc, #56] ; (803cb60 ) + 803cb28: f00b fa5c bl 8047fe4 * The last argument should be replaced with your link speed, in units * of bits per second. */ // MIB2_INIT_NETIF(netif, snmp_ifType_ethernet_csmacd, LINK_SPEED_OF_YOUR_NETIF_IN_BPS); netif->name[0] = IFNAME0; - 803caec: 687b ldr r3, [r7, #4] - 803caee: 2273 movs r2, #115 ; 0x73 - 803caf0: f883 2032 strb.w r2, [r3, #50] ; 0x32 + 803cb2c: 687b ldr r3, [r7, #4] + 803cb2e: 2273 movs r2, #115 ; 0x73 + 803cb30: f883 2032 strb.w r2, [r3, #50] ; 0x32 netif->name[1] = IFNAME1; - 803caf4: 687b ldr r3, [r7, #4] - 803caf6: 2274 movs r2, #116 ; 0x74 - 803caf8: f883 2033 strb.w r2, [r3, #51] ; 0x33 + 803cb34: 687b ldr r3, [r7, #4] + 803cb36: 2274 movs r2, #116 ; 0x74 + 803cb38: f883 2033 strb.w r2, [r3, #51] ; 0x33 * is available...) */ #if LWIP_IPV4 #if LWIP_ARP || LWIP_ETHERNET #if LWIP_ARP netif->output = etharp_output; - 803cafc: 687b ldr r3, [r7, #4] - 803cafe: 4a09 ldr r2, [pc, #36] ; (803cb24 ) - 803cb00: 615a str r2, [r3, #20] + 803cb3c: 687b ldr r3, [r7, #4] + 803cb3e: 4a09 ldr r2, [pc, #36] ; (803cb64 ) + 803cb40: 615a str r2, [r3, #20] #if LWIP_IPV6 netif->output_ip6 = ethip6_output; #endif /* LWIP_IPV6 */ netif->linkoutput = low_level_output; - 803cb02: 687b ldr r3, [r7, #4] - 803cb04: 4a08 ldr r2, [pc, #32] ; (803cb28 ) - 803cb06: 619a str r2, [r3, #24] + 803cb42: 687b ldr r3, [r7, #4] + 803cb44: 4a08 ldr r2, [pc, #32] ; (803cb68 ) + 803cb46: 619a str r2, [r3, #24] /* initialize the hardware */ low_level_init(netif); - 803cb08: 6878 ldr r0, [r7, #4] - 803cb0a: f7ff fe7b bl 803c804 + 803cb48: 6878 ldr r0, [r7, #4] + 803cb4a: f7ff fe7b bl 803c844 return ERR_OK; - 803cb0e: 2300 movs r3, #0 -} - 803cb10: 4618 mov r0, r3 - 803cb12: 3708 adds r7, #8 - 803cb14: 46bd mov sp, r7 - 803cb16: bd80 pop {r7, pc} - 803cb18: 0804a164 .word 0x0804a164 - 803cb1c: 0804a180 .word 0x0804a180 - 803cb20: 0804a190 .word 0x0804a190 - 803cb24: 08045fbd .word 0x08045fbd - 803cb28: 0803c959 .word 0x0803c959 - -0803cb2c : + 803cb4e: 2300 movs r3, #0 +} + 803cb50: 4618 mov r0, r3 + 803cb52: 3708 adds r7, #8 + 803cb54: 46bd mov sp, r7 + 803cb56: bd80 pop {r7, pc} + 803cb58: 0804a1a4 .word 0x0804a1a4 + 803cb5c: 0804a1c0 .word 0x0804a1c0 + 803cb60: 0804a1d0 .word 0x0804a1d0 + 803cb64: 08045ffd .word 0x08045ffd + 803cb68: 0803c999 .word 0x0803c999 + +0803cb6c : * @brief Custom Rx pbuf free callback * @param pbuf: pbuf to be freed * @retval None */ void pbuf_free_custom(struct pbuf *p) { - 803cb2c: b580 push {r7, lr} - 803cb2e: b084 sub sp, #16 - 803cb30: af00 add r7, sp, #0 - 803cb32: 6078 str r0, [r7, #4] + 803cb6c: b580 push {r7, lr} + 803cb6e: b084 sub sp, #16 + 803cb70: af00 add r7, sp, #0 + 803cb72: 6078 str r0, [r7, #4] struct pbuf_custom* custom_pbuf = (struct pbuf_custom*)p; - 803cb34: 687b ldr r3, [r7, #4] - 803cb36: 60fb str r3, [r7, #12] + 803cb74: 687b ldr r3, [r7, #4] + 803cb76: 60fb str r3, [r7, #12] LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf); - 803cb38: 68f9 ldr r1, [r7, #12] - 803cb3a: 4807 ldr r0, [pc, #28] ; (803cb58 ) - 803cb3c: f000 ffc2 bl 803dac4 + 803cb78: 68f9 ldr r1, [r7, #12] + 803cb7a: 4807 ldr r0, [pc, #28] ; (803cb98 ) + 803cb7c: f000 ffc2 bl 803db04 /* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to * call HAL_ETH_GetRxDataBuffer to rebuild the Rx descriptors. */ if (RxAllocStatus == RX_ALLOC_ERROR) - 803cb40: 4b06 ldr r3, [pc, #24] ; (803cb5c ) - 803cb42: 781b ldrb r3, [r3, #0] - 803cb44: 2b01 cmp r3, #1 - 803cb46: d102 bne.n 803cb4e + 803cb80: 4b06 ldr r3, [pc, #24] ; (803cb9c ) + 803cb82: 781b ldrb r3, [r3, #0] + 803cb84: 2b01 cmp r3, #1 + 803cb86: d102 bne.n 803cb8e { RxAllocStatus = RX_ALLOC_OK; - 803cb48: 4b04 ldr r3, [pc, #16] ; (803cb5c ) - 803cb4a: 2200 movs r2, #0 - 803cb4c: 701a strb r2, [r3, #0] + 803cb88: 4b04 ldr r3, [pc, #16] ; (803cb9c ) + 803cb8a: 2200 movs r2, #0 + 803cb8c: 701a strb r2, [r3, #0] } } - 803cb4e: bf00 nop - 803cb50: 3710 adds r7, #16 - 803cb52: 46bd mov sp, r7 - 803cb54: bd80 pop {r7, pc} - 803cb56: bf00 nop - 803cb58: 0804d3ac .word 0x0804d3ac - 803cb5c: 2400ba40 .word 0x2400ba40 + 803cb8e: bf00 nop + 803cb90: 3710 adds r7, #16 + 803cb92: 46bd mov sp, r7 + 803cb94: bd80 pop {r7, pc} + 803cb96: bf00 nop + 803cb98: 0804d3ec .word 0x0804d3ec + 803cb9c: 2400ba40 .word 0x2400ba40 -0803cb60 : +0803cba0 : * when LWIP_TIMERS == 1 and NO_SYS == 1 * @param None * @retval Current Time value */ u32_t sys_now(void) { - 803cb60: b580 push {r7, lr} - 803cb62: af00 add r7, sp, #0 + 803cba0: b580 push {r7, lr} + 803cba2: af00 add r7, sp, #0 return HAL_GetTick(); - 803cb64: f7f0 fa16 bl 802cf94 - 803cb68: 4603 mov r3, r0 + 803cba4: f7f0 fa16 bl 802cfd4 + 803cba8: 4603 mov r3, r0 } - 803cb6a: 4618 mov r0, r3 - 803cb6c: bd80 pop {r7, pc} + 803cbaa: 4618 mov r0, r3 + 803cbac: bd80 pop {r7, pc} ... -0803cb70 : +0803cbb0 : * @param ethHandle: ETH handle * @retval None */ void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle) { - 803cb70: b580 push {r7, lr} - 803cb72: b08e sub sp, #56 ; 0x38 - 803cb74: af00 add r7, sp, #0 - 803cb76: 6078 str r0, [r7, #4] + 803cbb0: b580 push {r7, lr} + 803cbb2: b08e sub sp, #56 ; 0x38 + 803cbb4: af00 add r7, sp, #0 + 803cbb6: 6078 str r0, [r7, #4] GPIO_InitTypeDef GPIO_InitStruct = {0}; - 803cb78: f107 0324 add.w r3, r7, #36 ; 0x24 - 803cb7c: 2200 movs r2, #0 - 803cb7e: 601a str r2, [r3, #0] - 803cb80: 605a str r2, [r3, #4] - 803cb82: 609a str r2, [r3, #8] - 803cb84: 60da str r2, [r3, #12] - 803cb86: 611a str r2, [r3, #16] + 803cbb8: f107 0324 add.w r3, r7, #36 ; 0x24 + 803cbbc: 2200 movs r2, #0 + 803cbbe: 601a str r2, [r3, #0] + 803cbc0: 605a str r2, [r3, #4] + 803cbc2: 609a str r2, [r3, #8] + 803cbc4: 60da str r2, [r3, #12] + 803cbc6: 611a str r2, [r3, #16] if(ethHandle->Instance==ETH) - 803cb88: 687b ldr r3, [r7, #4] - 803cb8a: 681b ldr r3, [r3, #0] - 803cb8c: 4a51 ldr r2, [pc, #324] ; (803ccd4 ) - 803cb8e: 4293 cmp r3, r2 - 803cb90: f040 809b bne.w 803ccca + 803cbc8: 687b ldr r3, [r7, #4] + 803cbca: 681b ldr r3, [r3, #0] + 803cbcc: 4a51 ldr r2, [pc, #324] ; (803cd14 ) + 803cbce: 4293 cmp r3, r2 + 803cbd0: f040 809b bne.w 803cd0a { /* USER CODE BEGIN ETH_MspInit 0 */ /* USER CODE END ETH_MspInit 0 */ /* Enable Peripheral clock */ __HAL_RCC_ETH1MAC_CLK_ENABLE(); - 803cb94: 4b50 ldr r3, [pc, #320] ; (803ccd8 ) - 803cb96: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cb9a: 4a4f ldr r2, [pc, #316] ; (803ccd8 ) - 803cb9c: f443 4300 orr.w r3, r3, #32768 ; 0x8000 - 803cba0: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 - 803cba4: 4b4c ldr r3, [pc, #304] ; (803ccd8 ) - 803cba6: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cbaa: f403 4300 and.w r3, r3, #32768 ; 0x8000 - 803cbae: 623b str r3, [r7, #32] - 803cbb0: 6a3b ldr r3, [r7, #32] + 803cbd4: 4b50 ldr r3, [pc, #320] ; (803cd18 ) + 803cbd6: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cbda: 4a4f ldr r2, [pc, #316] ; (803cd18 ) + 803cbdc: f443 4300 orr.w r3, r3, #32768 ; 0x8000 + 803cbe0: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 + 803cbe4: 4b4c ldr r3, [pc, #304] ; (803cd18 ) + 803cbe6: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cbea: f403 4300 and.w r3, r3, #32768 ; 0x8000 + 803cbee: 623b str r3, [r7, #32] + 803cbf0: 6a3b ldr r3, [r7, #32] __HAL_RCC_ETH1TX_CLK_ENABLE(); - 803cbb2: 4b49 ldr r3, [pc, #292] ; (803ccd8 ) - 803cbb4: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cbb8: 4a47 ldr r2, [pc, #284] ; (803ccd8 ) - 803cbba: f443 3380 orr.w r3, r3, #65536 ; 0x10000 - 803cbbe: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 - 803cbc2: 4b45 ldr r3, [pc, #276] ; (803ccd8 ) - 803cbc4: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cbc8: f403 3380 and.w r3, r3, #65536 ; 0x10000 - 803cbcc: 61fb str r3, [r7, #28] - 803cbce: 69fb ldr r3, [r7, #28] + 803cbf2: 4b49 ldr r3, [pc, #292] ; (803cd18 ) + 803cbf4: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cbf8: 4a47 ldr r2, [pc, #284] ; (803cd18 ) + 803cbfa: f443 3380 orr.w r3, r3, #65536 ; 0x10000 + 803cbfe: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 + 803cc02: 4b45 ldr r3, [pc, #276] ; (803cd18 ) + 803cc04: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cc08: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 803cc0c: 61fb str r3, [r7, #28] + 803cc0e: 69fb ldr r3, [r7, #28] __HAL_RCC_ETH1RX_CLK_ENABLE(); - 803cbd0: 4b41 ldr r3, [pc, #260] ; (803ccd8 ) - 803cbd2: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cbd6: 4a40 ldr r2, [pc, #256] ; (803ccd8 ) - 803cbd8: f443 3300 orr.w r3, r3, #131072 ; 0x20000 - 803cbdc: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 - 803cbe0: 4b3d ldr r3, [pc, #244] ; (803ccd8 ) - 803cbe2: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 - 803cbe6: f403 3300 and.w r3, r3, #131072 ; 0x20000 - 803cbea: 61bb str r3, [r7, #24] - 803cbec: 69bb ldr r3, [r7, #24] + 803cc10: 4b41 ldr r3, [pc, #260] ; (803cd18 ) + 803cc12: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cc16: 4a40 ldr r2, [pc, #256] ; (803cd18 ) + 803cc18: f443 3300 orr.w r3, r3, #131072 ; 0x20000 + 803cc1c: f8c2 30d8 str.w r3, [r2, #216] ; 0xd8 + 803cc20: 4b3d ldr r3, [pc, #244] ; (803cd18 ) + 803cc22: f8d3 30d8 ldr.w r3, [r3, #216] ; 0xd8 + 803cc26: f403 3300 and.w r3, r3, #131072 ; 0x20000 + 803cc2a: 61bb str r3, [r7, #24] + 803cc2c: 69bb ldr r3, [r7, #24] __HAL_RCC_GPIOC_CLK_ENABLE(); - 803cbee: 4b3a ldr r3, [pc, #232] ; (803ccd8 ) - 803cbf0: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cbf4: 4a38 ldr r2, [pc, #224] ; (803ccd8 ) - 803cbf6: f043 0304 orr.w r3, r3, #4 - 803cbfa: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 803cbfe: 4b36 ldr r3, [pc, #216] ; (803ccd8 ) - 803cc00: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cc04: f003 0304 and.w r3, r3, #4 - 803cc08: 617b str r3, [r7, #20] - 803cc0a: 697b ldr r3, [r7, #20] + 803cc2e: 4b3a ldr r3, [pc, #232] ; (803cd18 ) + 803cc30: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc34: 4a38 ldr r2, [pc, #224] ; (803cd18 ) + 803cc36: f043 0304 orr.w r3, r3, #4 + 803cc3a: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 803cc3e: 4b36 ldr r3, [pc, #216] ; (803cd18 ) + 803cc40: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc44: f003 0304 and.w r3, r3, #4 + 803cc48: 617b str r3, [r7, #20] + 803cc4a: 697b ldr r3, [r7, #20] __HAL_RCC_GPIOA_CLK_ENABLE(); - 803cc0c: 4b32 ldr r3, [pc, #200] ; (803ccd8 ) - 803cc0e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cc12: 4a31 ldr r2, [pc, #196] ; (803ccd8 ) - 803cc14: f043 0301 orr.w r3, r3, #1 - 803cc18: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 803cc1c: 4b2e ldr r3, [pc, #184] ; (803ccd8 ) - 803cc1e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cc22: f003 0301 and.w r3, r3, #1 - 803cc26: 613b str r3, [r7, #16] - 803cc28: 693b ldr r3, [r7, #16] + 803cc4c: 4b32 ldr r3, [pc, #200] ; (803cd18 ) + 803cc4e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc52: 4a31 ldr r2, [pc, #196] ; (803cd18 ) + 803cc54: f043 0301 orr.w r3, r3, #1 + 803cc58: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 803cc5c: 4b2e ldr r3, [pc, #184] ; (803cd18 ) + 803cc5e: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc62: f003 0301 and.w r3, r3, #1 + 803cc66: 613b str r3, [r7, #16] + 803cc68: 693b ldr r3, [r7, #16] __HAL_RCC_GPIOB_CLK_ENABLE(); - 803cc2a: 4b2b ldr r3, [pc, #172] ; (803ccd8 ) - 803cc2c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cc30: 4a29 ldr r2, [pc, #164] ; (803ccd8 ) - 803cc32: f043 0302 orr.w r3, r3, #2 - 803cc36: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 - 803cc3a: 4b27 ldr r3, [pc, #156] ; (803ccd8 ) - 803cc3c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 - 803cc40: f003 0302 and.w r3, r3, #2 - 803cc44: 60fb str r3, [r7, #12] - 803cc46: 68fb ldr r3, [r7, #12] + 803cc6a: 4b2b ldr r3, [pc, #172] ; (803cd18 ) + 803cc6c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc70: 4a29 ldr r2, [pc, #164] ; (803cd18 ) + 803cc72: f043 0302 orr.w r3, r3, #2 + 803cc76: f8c2 30e0 str.w r3, [r2, #224] ; 0xe0 + 803cc7a: 4b27 ldr r3, [pc, #156] ; (803cd18 ) + 803cc7c: f8d3 30e0 ldr.w r3, [r3, #224] ; 0xe0 + 803cc80: f003 0302 and.w r3, r3, #2 + 803cc84: 60fb str r3, [r7, #12] + 803cc86: 68fb ldr r3, [r7, #12] PC5 ------> ETH_RXD1 PB11 ------> ETH_TX_EN PB12 ------> ETH_TXD0 PB13 ------> ETH_TXD1 */ GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5; - 803cc48: 2332 movs r3, #50 ; 0x32 - 803cc4a: 627b str r3, [r7, #36] ; 0x24 + 803cc88: 2332 movs r3, #50 ; 0x32 + 803cc8a: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 803cc4c: 2302 movs r3, #2 - 803cc4e: 62bb str r3, [r7, #40] ; 0x28 + 803cc8c: 2302 movs r3, #2 + 803cc8e: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 803cc50: 2300 movs r3, #0 - 803cc52: 62fb str r3, [r7, #44] ; 0x2c + 803cc90: 2300 movs r3, #0 + 803cc92: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 803cc54: 2303 movs r3, #3 - 803cc56: 633b str r3, [r7, #48] ; 0x30 + 803cc94: 2303 movs r3, #3 + 803cc96: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 803cc58: 230b movs r3, #11 - 803cc5a: 637b str r3, [r7, #52] ; 0x34 + 803cc98: 230b movs r3, #11 + 803cc9a: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - 803cc5c: f107 0324 add.w r3, r7, #36 ; 0x24 - 803cc60: 4619 mov r1, r3 - 803cc62: 481e ldr r0, [pc, #120] ; (803ccdc ) - 803cc64: f7f6 fe20 bl 80338a8 + 803cc9c: f107 0324 add.w r3, r7, #36 ; 0x24 + 803cca0: 4619 mov r1, r3 + 803cca2: 481e ldr r0, [pc, #120] ; (803cd1c ) + 803cca4: f7f6 fe20 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7; - 803cc68: 2386 movs r3, #134 ; 0x86 - 803cc6a: 627b str r3, [r7, #36] ; 0x24 + 803cca8: 2386 movs r3, #134 ; 0x86 + 803ccaa: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 803cc6c: 2302 movs r3, #2 - 803cc6e: 62bb str r3, [r7, #40] ; 0x28 + 803ccac: 2302 movs r3, #2 + 803ccae: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 803cc70: 2300 movs r3, #0 - 803cc72: 62fb str r3, [r7, #44] ; 0x2c + 803ccb0: 2300 movs r3, #0 + 803ccb2: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 803cc74: 2303 movs r3, #3 - 803cc76: 633b str r3, [r7, #48] ; 0x30 + 803ccb4: 2303 movs r3, #3 + 803ccb6: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 803cc78: 230b movs r3, #11 - 803cc7a: 637b str r3, [r7, #52] ; 0x34 + 803ccb8: 230b movs r3, #11 + 803ccba: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - 803cc7c: f107 0324 add.w r3, r7, #36 ; 0x24 - 803cc80: 4619 mov r1, r3 - 803cc82: 4817 ldr r0, [pc, #92] ; (803cce0 ) - 803cc84: f7f6 fe10 bl 80338a8 + 803ccbc: f107 0324 add.w r3, r7, #36 ; 0x24 + 803ccc0: 4619 mov r1, r3 + 803ccc2: 4817 ldr r0, [pc, #92] ; (803cd20 ) + 803ccc4: f7f6 fe10 bl 80338e8 GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13; - 803cc88: f44f 5360 mov.w r3, #14336 ; 0x3800 - 803cc8c: 627b str r3, [r7, #36] ; 0x24 + 803ccc8: f44f 5360 mov.w r3, #14336 ; 0x3800 + 803cccc: 627b str r3, [r7, #36] ; 0x24 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - 803cc8e: 2302 movs r3, #2 - 803cc90: 62bb str r3, [r7, #40] ; 0x28 + 803ccce: 2302 movs r3, #2 + 803ccd0: 62bb str r3, [r7, #40] ; 0x28 GPIO_InitStruct.Pull = GPIO_NOPULL; - 803cc92: 2300 movs r3, #0 - 803cc94: 62fb str r3, [r7, #44] ; 0x2c + 803ccd2: 2300 movs r3, #0 + 803ccd4: 62fb str r3, [r7, #44] ; 0x2c GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - 803cc96: 2303 movs r3, #3 - 803cc98: 633b str r3, [r7, #48] ; 0x30 + 803ccd6: 2303 movs r3, #3 + 803ccd8: 633b str r3, [r7, #48] ; 0x30 GPIO_InitStruct.Alternate = GPIO_AF11_ETH; - 803cc9a: 230b movs r3, #11 - 803cc9c: 637b str r3, [r7, #52] ; 0x34 + 803ccda: 230b movs r3, #11 + 803ccdc: 637b str r3, [r7, #52] ; 0x34 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - 803cc9e: f107 0324 add.w r3, r7, #36 ; 0x24 - 803cca2: 4619 mov r1, r3 - 803cca4: 480f ldr r0, [pc, #60] ; (803cce4 ) - 803cca6: f7f6 fdff bl 80338a8 + 803ccde: f107 0324 add.w r3, r7, #36 ; 0x24 + 803cce2: 4619 mov r1, r3 + 803cce4: 480f ldr r0, [pc, #60] ; (803cd24 ) + 803cce6: f7f6 fdff bl 80338e8 /* Peripheral interrupt init */ HAL_NVIC_SetPriority(ETH_IRQn, 6, 0); - 803ccaa: 2200 movs r2, #0 - 803ccac: 2106 movs r1, #6 - 803ccae: 203d movs r0, #61 ; 0x3d - 803ccb0: f7f1 fa23 bl 802e0fa + 803ccea: 2200 movs r2, #0 + 803ccec: 2106 movs r1, #6 + 803ccee: 203d movs r0, #61 ; 0x3d + 803ccf0: f7f1 fa23 bl 802e13a HAL_NVIC_EnableIRQ(ETH_IRQn); - 803ccb4: 203d movs r0, #61 ; 0x3d - 803ccb6: f7f1 fa3a bl 802e12e + 803ccf4: 203d movs r0, #61 ; 0x3d + 803ccf6: f7f1 fa3a bl 802e16e HAL_NVIC_SetPriority(ETH_WKUP_IRQn, 0, 0); - 803ccba: 2200 movs r2, #0 - 803ccbc: 2100 movs r1, #0 - 803ccbe: 203e movs r0, #62 ; 0x3e - 803ccc0: f7f1 fa1b bl 802e0fa + 803ccfa: 2200 movs r2, #0 + 803ccfc: 2100 movs r1, #0 + 803ccfe: 203e movs r0, #62 ; 0x3e + 803cd00: f7f1 fa1b bl 802e13a HAL_NVIC_EnableIRQ(ETH_WKUP_IRQn); - 803ccc4: 203e movs r0, #62 ; 0x3e - 803ccc6: f7f1 fa32 bl 802e12e + 803cd04: 203e movs r0, #62 ; 0x3e + 803cd06: f7f1 fa32 bl 802e16e /* USER CODE BEGIN ETH_MspInit 1 */ /* USER CODE END ETH_MspInit 1 */ } } - 803ccca: bf00 nop - 803cccc: 3738 adds r7, #56 ; 0x38 - 803ccce: 46bd mov sp, r7 - 803ccd0: bd80 pop {r7, pc} - 803ccd2: bf00 nop - 803ccd4: 40028000 .word 0x40028000 - 803ccd8: 58024400 .word 0x58024400 - 803ccdc: 58020800 .word 0x58020800 - 803cce0: 58020000 .word 0x58020000 - 803cce4: 58020400 .word 0x58020400 + 803cd0a: bf00 nop + 803cd0c: 3738 adds r7, #56 ; 0x38 + 803cd0e: 46bd mov sp, r7 + 803cd10: bd80 pop {r7, pc} + 803cd12: bf00 nop + 803cd14: 40028000 .word 0x40028000 + 803cd18: 58024400 .word 0x58024400 + 803cd1c: 58020800 .word 0x58020800 + 803cd20: 58020000 .word 0x58020000 + 803cd24: 58020400 .word 0x58020400 -0803cce8 : +0803cd28 : * @brief Initializes the MDIO interface GPIO and clocks. * @param None * @retval 0 if OK, -1 if ERROR */ int32_t ETH_PHY_IO_Init(void) { - 803cce8: b580 push {r7, lr} - 803ccea: af00 add r7, sp, #0 + 803cd28: b580 push {r7, lr} + 803cd2a: af00 add r7, sp, #0 /* We assume that MDIO GPIO configuration is already done in the ETH_MspInit() else it should be done here */ /* Configure the MDIO Clock */ HAL_ETH_SetMDIOClockRange(&heth); - 803ccec: 4802 ldr r0, [pc, #8] ; (803ccf8 ) - 803ccee: f7f5 f83f bl 8031d70 + 803cd2c: 4802 ldr r0, [pc, #8] ; (803cd38 ) + 803cd2e: f7f5 f83f bl 8031db0 return 0; - 803ccf2: 2300 movs r3, #0 + 803cd32: 2300 movs r3, #0 } - 803ccf4: 4618 mov r0, r3 - 803ccf6: bd80 pop {r7, pc} - 803ccf8: 2400ba44 .word 0x2400ba44 + 803cd34: 4618 mov r0, r3 + 803cd36: bd80 pop {r7, pc} + 803cd38: 2400ba44 .word 0x2400ba44 -0803ccfc : +0803cd3c : * @brief De-Initializes the MDIO interface . * @param None * @retval 0 if OK, -1 if ERROR */ int32_t ETH_PHY_IO_DeInit (void) { - 803ccfc: b480 push {r7} - 803ccfe: af00 add r7, sp, #0 + 803cd3c: b480 push {r7} + 803cd3e: af00 add r7, sp, #0 return 0; - 803cd00: 2300 movs r3, #0 + 803cd40: 2300 movs r3, #0 } - 803cd02: 4618 mov r0, r3 - 803cd04: 46bd mov sp, r7 - 803cd06: f85d 7b04 ldr.w r7, [sp], #4 - 803cd0a: 4770 bx lr + 803cd42: 4618 mov r0, r3 + 803cd44: 46bd mov sp, r7 + 803cd46: f85d 7b04 ldr.w r7, [sp], #4 + 803cd4a: 4770 bx lr -0803cd0c : +0803cd4c : * @param RegAddr: PHY register address * @param pRegVal: pointer to hold the register value * @retval 0 if OK -1 if Error */ int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal) { - 803cd0c: b580 push {r7, lr} - 803cd0e: b084 sub sp, #16 - 803cd10: af00 add r7, sp, #0 - 803cd12: 60f8 str r0, [r7, #12] - 803cd14: 60b9 str r1, [r7, #8] - 803cd16: 607a str r2, [r7, #4] + 803cd4c: b580 push {r7, lr} + 803cd4e: b084 sub sp, #16 + 803cd50: af00 add r7, sp, #0 + 803cd52: 60f8 str r0, [r7, #12] + 803cd54: 60b9 str r1, [r7, #8] + 803cd56: 607a str r2, [r7, #4] if(HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK) - 803cd18: 687b ldr r3, [r7, #4] - 803cd1a: 68ba ldr r2, [r7, #8] - 803cd1c: 68f9 ldr r1, [r7, #12] - 803cd1e: 4807 ldr r0, [pc, #28] ; (803cd3c ) - 803cd20: f7f4 fd90 bl 8031844 - 803cd24: 4603 mov r3, r0 - 803cd26: 2b00 cmp r3, #0 - 803cd28: d002 beq.n 803cd30 + 803cd58: 687b ldr r3, [r7, #4] + 803cd5a: 68ba ldr r2, [r7, #8] + 803cd5c: 68f9 ldr r1, [r7, #12] + 803cd5e: 4807 ldr r0, [pc, #28] ; (803cd7c ) + 803cd60: f7f4 fd90 bl 8031884 + 803cd64: 4603 mov r3, r0 + 803cd66: 2b00 cmp r3, #0 + 803cd68: d002 beq.n 803cd70 { return -1; - 803cd2a: f04f 33ff mov.w r3, #4294967295 - 803cd2e: e000 b.n 803cd32 + 803cd6a: f04f 33ff mov.w r3, #4294967295 + 803cd6e: e000 b.n 803cd72 } return 0; - 803cd30: 2300 movs r3, #0 + 803cd70: 2300 movs r3, #0 } - 803cd32: 4618 mov r0, r3 - 803cd34: 3710 adds r7, #16 - 803cd36: 46bd mov sp, r7 - 803cd38: bd80 pop {r7, pc} - 803cd3a: bf00 nop - 803cd3c: 2400ba44 .word 0x2400ba44 + 803cd72: 4618 mov r0, r3 + 803cd74: 3710 adds r7, #16 + 803cd76: 46bd mov sp, r7 + 803cd78: bd80 pop {r7, pc} + 803cd7a: bf00 nop + 803cd7c: 2400ba44 .word 0x2400ba44 -0803cd40 : +0803cd80 : * @param RegAddr: PHY register address * @param RegVal: Value to be written * @retval 0 if OK -1 if Error */ int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal) { - 803cd40: b580 push {r7, lr} - 803cd42: b084 sub sp, #16 - 803cd44: af00 add r7, sp, #0 - 803cd46: 60f8 str r0, [r7, #12] - 803cd48: 60b9 str r1, [r7, #8] - 803cd4a: 607a str r2, [r7, #4] + 803cd80: b580 push {r7, lr} + 803cd82: b084 sub sp, #16 + 803cd84: af00 add r7, sp, #0 + 803cd86: 60f8 str r0, [r7, #12] + 803cd88: 60b9 str r1, [r7, #8] + 803cd8a: 607a str r2, [r7, #4] if(HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK) - 803cd4c: 687b ldr r3, [r7, #4] - 803cd4e: 68ba ldr r2, [r7, #8] - 803cd50: 68f9 ldr r1, [r7, #12] - 803cd52: 4807 ldr r0, [pc, #28] ; (803cd70 ) - 803cd54: f7f4 fdca bl 80318ec - 803cd58: 4603 mov r3, r0 - 803cd5a: 2b00 cmp r3, #0 - 803cd5c: d002 beq.n 803cd64 + 803cd8c: 687b ldr r3, [r7, #4] + 803cd8e: 68ba ldr r2, [r7, #8] + 803cd90: 68f9 ldr r1, [r7, #12] + 803cd92: 4807 ldr r0, [pc, #28] ; (803cdb0 ) + 803cd94: f7f4 fdca bl 803192c + 803cd98: 4603 mov r3, r0 + 803cd9a: 2b00 cmp r3, #0 + 803cd9c: d002 beq.n 803cda4 { return -1; - 803cd5e: f04f 33ff mov.w r3, #4294967295 - 803cd62: e000 b.n 803cd66 + 803cd9e: f04f 33ff mov.w r3, #4294967295 + 803cda2: e000 b.n 803cda6 } return 0; - 803cd64: 2300 movs r3, #0 + 803cda4: 2300 movs r3, #0 } - 803cd66: 4618 mov r0, r3 - 803cd68: 3710 adds r7, #16 - 803cd6a: 46bd mov sp, r7 - 803cd6c: bd80 pop {r7, pc} - 803cd6e: bf00 nop - 803cd70: 2400ba44 .word 0x2400ba44 + 803cda6: 4618 mov r0, r3 + 803cda8: 3710 adds r7, #16 + 803cdaa: 46bd mov sp, r7 + 803cdac: bd80 pop {r7, pc} + 803cdae: bf00 nop + 803cdb0: 2400ba44 .word 0x2400ba44 -0803cd74 : +0803cdb4 : /** * @brief Get the time in millisecons used for internal PHY driver process. * @retval Time value */ int32_t ETH_PHY_IO_GetTick(void) { - 803cd74: b580 push {r7, lr} - 803cd76: af00 add r7, sp, #0 + 803cdb4: b580 push {r7, lr} + 803cdb6: af00 add r7, sp, #0 return HAL_GetTick(); - 803cd78: f7f0 f90c bl 802cf94 - 803cd7c: 4603 mov r3, r0 + 803cdb8: f7f0 f90c bl 802cfd4 + 803cdbc: 4603 mov r3, r0 } - 803cd7e: 4618 mov r0, r3 - 803cd80: bd80 pop {r7, pc} + 803cdbe: 4618 mov r0, r3 + 803cdc0: bd80 pop {r7, pc} ... -0803cd84 : +0803cdc4 : /** * @brief Check the ETH link state then update ETH driver and netif link accordingly. * @retval None */ void ethernet_link_check_state(struct netif *netif) { - 803cd84: b580 push {r7, lr} - 803cd86: b0a0 sub sp, #128 ; 0x80 - 803cd88: af00 add r7, sp, #0 - 803cd8a: 6078 str r0, [r7, #4] + 803cdc4: b580 push {r7, lr} + 803cdc6: b0a0 sub sp, #128 ; 0x80 + 803cdc8: af00 add r7, sp, #0 + 803cdca: 6078 str r0, [r7, #4] ETH_MACConfigTypeDef MACConf = {0}; - 803cd8c: f107 030c add.w r3, r7, #12 - 803cd90: 2264 movs r2, #100 ; 0x64 - 803cd92: 2100 movs r1, #0 - 803cd94: 4618 mov r0, r3 - 803cd96: f00b f81d bl 8047dd4 + 803cdcc: f107 030c add.w r3, r7, #12 + 803cdd0: 2264 movs r2, #100 ; 0x64 + 803cdd2: 2100 movs r1, #0 + 803cdd4: 4618 mov r0, r3 + 803cdd6: f00b f81d bl 8047e14 int32_t PHYLinkState = 0; - 803cd9a: 2300 movs r3, #0 - 803cd9c: 673b str r3, [r7, #112] ; 0x70 + 803cdda: 2300 movs r3, #0 + 803cddc: 673b str r3, [r7, #112] ; 0x70 uint32_t linkchanged = 0U, speed = 0U, duplex = 0U; - 803cd9e: 2300 movs r3, #0 - 803cda0: 67fb str r3, [r7, #124] ; 0x7c - 803cda2: 2300 movs r3, #0 - 803cda4: 67bb str r3, [r7, #120] ; 0x78 - 803cda6: 2300 movs r3, #0 - 803cda8: 677b str r3, [r7, #116] ; 0x74 + 803cdde: 2300 movs r3, #0 + 803cde0: 67fb str r3, [r7, #124] ; 0x7c + 803cde2: 2300 movs r3, #0 + 803cde4: 67bb str r3, [r7, #120] ; 0x78 + 803cde6: 2300 movs r3, #0 + 803cde8: 677b str r3, [r7, #116] ; 0x74 PHYLinkState = LAN8742_GetLinkState(&LAN8742); - 803cdaa: 483a ldr r0, [pc, #232] ; (803ce94 ) - 803cdac: f7ef ffe5 bl 802cd7a - 803cdb0: 6738 str r0, [r7, #112] ; 0x70 + 803cdea: 483a ldr r0, [pc, #232] ; (803ced4 ) + 803cdec: f7ef ffe5 bl 802cdba + 803cdf0: 6738 str r0, [r7, #112] ; 0x70 if(netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN)) - 803cdb2: 687b ldr r3, [r7, #4] - 803cdb4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803cdb8: 089b lsrs r3, r3, #2 - 803cdba: f003 0301 and.w r3, r3, #1 - 803cdbe: b2db uxtb r3, r3 - 803cdc0: 2b00 cmp r3, #0 - 803cdc2: d00c beq.n 803cdde - 803cdc4: 6f3b ldr r3, [r7, #112] ; 0x70 - 803cdc6: 2b01 cmp r3, #1 - 803cdc8: dc09 bgt.n 803cdde + 803cdf2: 687b ldr r3, [r7, #4] + 803cdf4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803cdf8: 089b lsrs r3, r3, #2 + 803cdfa: f003 0301 and.w r3, r3, #1 + 803cdfe: b2db uxtb r3, r3 + 803ce00: 2b00 cmp r3, #0 + 803ce02: d00c beq.n 803ce1e + 803ce04: 6f3b ldr r3, [r7, #112] ; 0x70 + 803ce06: 2b01 cmp r3, #1 + 803ce08: dc09 bgt.n 803ce1e { HAL_ETH_Stop(&heth); - 803cdca: 4833 ldr r0, [pc, #204] ; (803ce98 ) - 803cdcc: f7f4 f9d8 bl 8031180 + 803ce0a: 4833 ldr r0, [pc, #204] ; (803ced8 ) + 803ce0c: f7f4 f9d8 bl 80311c0 netif_set_down(netif); - 803cdd0: 6878 ldr r0, [r7, #4] - 803cdd2: f001 f90f bl 803dff4 + 803ce10: 6878 ldr r0, [r7, #4] + 803ce12: f001 f90f bl 803e034 netif_set_link_down(netif); - 803cdd6: 6878 ldr r0, [r7, #4] - 803cdd8: f001 f97a bl 803e0d0 + 803ce16: 6878 ldr r0, [r7, #4] + 803ce18: f001 f97a bl 803e110 netif_set_up(netif); netif_set_link_up(netif); } } } - 803cddc: e055 b.n 803ce8a + 803ce1c: e055 b.n 803ceca else if(!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN)) - 803cdde: 687b ldr r3, [r7, #4] - 803cde0: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803cde4: f003 0304 and.w r3, r3, #4 - 803cde8: 2b00 cmp r3, #0 - 803cdea: d14e bne.n 803ce8a - 803cdec: 6f3b ldr r3, [r7, #112] ; 0x70 - 803cdee: 2b01 cmp r3, #1 - 803cdf0: dd4b ble.n 803ce8a + 803ce1e: 687b ldr r3, [r7, #4] + 803ce20: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803ce24: f003 0304 and.w r3, r3, #4 + 803ce28: 2b00 cmp r3, #0 + 803ce2a: d14e bne.n 803ceca + 803ce2c: 6f3b ldr r3, [r7, #112] ; 0x70 + 803ce2e: 2b01 cmp r3, #1 + 803ce30: dd4b ble.n 803ceca switch (PHYLinkState) - 803cdf2: 6f3b ldr r3, [r7, #112] ; 0x70 - 803cdf4: 3b02 subs r3, #2 - 803cdf6: 2b03 cmp r3, #3 - 803cdf8: d82a bhi.n 803ce50 - 803cdfa: a201 add r2, pc, #4 ; (adr r2, 803ce00 ) - 803cdfc: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 803ce00: 0803ce11 .word 0x0803ce11 - 803ce04: 0803ce23 .word 0x0803ce23 - 803ce08: 0803ce33 .word 0x0803ce33 - 803ce0c: 0803ce43 .word 0x0803ce43 + 803ce32: 6f3b ldr r3, [r7, #112] ; 0x70 + 803ce34: 3b02 subs r3, #2 + 803ce36: 2b03 cmp r3, #3 + 803ce38: d82a bhi.n 803ce90 + 803ce3a: a201 add r2, pc, #4 ; (adr r2, 803ce40 ) + 803ce3c: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 803ce40: 0803ce51 .word 0x0803ce51 + 803ce44: 0803ce63 .word 0x0803ce63 + 803ce48: 0803ce73 .word 0x0803ce73 + 803ce4c: 0803ce83 .word 0x0803ce83 duplex = ETH_FULLDUPLEX_MODE; - 803ce10: f44f 5300 mov.w r3, #8192 ; 0x2000 - 803ce14: 677b str r3, [r7, #116] ; 0x74 + 803ce50: f44f 5300 mov.w r3, #8192 ; 0x2000 + 803ce54: 677b str r3, [r7, #116] ; 0x74 speed = ETH_SPEED_100M; - 803ce16: f44f 4380 mov.w r3, #16384 ; 0x4000 - 803ce1a: 67bb str r3, [r7, #120] ; 0x78 + 803ce56: f44f 4380 mov.w r3, #16384 ; 0x4000 + 803ce5a: 67bb str r3, [r7, #120] ; 0x78 linkchanged = 1; - 803ce1c: 2301 movs r3, #1 - 803ce1e: 67fb str r3, [r7, #124] ; 0x7c + 803ce5c: 2301 movs r3, #1 + 803ce5e: 67fb str r3, [r7, #124] ; 0x7c break; - 803ce20: e017 b.n 803ce52 + 803ce60: e017 b.n 803ce92 duplex = ETH_HALFDUPLEX_MODE; - 803ce22: 2300 movs r3, #0 - 803ce24: 677b str r3, [r7, #116] ; 0x74 + 803ce62: 2300 movs r3, #0 + 803ce64: 677b str r3, [r7, #116] ; 0x74 speed = ETH_SPEED_100M; - 803ce26: f44f 4380 mov.w r3, #16384 ; 0x4000 - 803ce2a: 67bb str r3, [r7, #120] ; 0x78 + 803ce66: f44f 4380 mov.w r3, #16384 ; 0x4000 + 803ce6a: 67bb str r3, [r7, #120] ; 0x78 linkchanged = 1; - 803ce2c: 2301 movs r3, #1 - 803ce2e: 67fb str r3, [r7, #124] ; 0x7c + 803ce6c: 2301 movs r3, #1 + 803ce6e: 67fb str r3, [r7, #124] ; 0x7c break; - 803ce30: e00f b.n 803ce52 + 803ce70: e00f b.n 803ce92 duplex = ETH_FULLDUPLEX_MODE; - 803ce32: f44f 5300 mov.w r3, #8192 ; 0x2000 - 803ce36: 677b str r3, [r7, #116] ; 0x74 + 803ce72: f44f 5300 mov.w r3, #8192 ; 0x2000 + 803ce76: 677b str r3, [r7, #116] ; 0x74 speed = ETH_SPEED_10M; - 803ce38: 2300 movs r3, #0 - 803ce3a: 67bb str r3, [r7, #120] ; 0x78 + 803ce78: 2300 movs r3, #0 + 803ce7a: 67bb str r3, [r7, #120] ; 0x78 linkchanged = 1; - 803ce3c: 2301 movs r3, #1 - 803ce3e: 67fb str r3, [r7, #124] ; 0x7c + 803ce7c: 2301 movs r3, #1 + 803ce7e: 67fb str r3, [r7, #124] ; 0x7c break; - 803ce40: e007 b.n 803ce52 + 803ce80: e007 b.n 803ce92 duplex = ETH_HALFDUPLEX_MODE; - 803ce42: 2300 movs r3, #0 - 803ce44: 677b str r3, [r7, #116] ; 0x74 + 803ce82: 2300 movs r3, #0 + 803ce84: 677b str r3, [r7, #116] ; 0x74 speed = ETH_SPEED_10M; - 803ce46: 2300 movs r3, #0 - 803ce48: 67bb str r3, [r7, #120] ; 0x78 + 803ce86: 2300 movs r3, #0 + 803ce88: 67bb str r3, [r7, #120] ; 0x78 linkchanged = 1; - 803ce4a: 2301 movs r3, #1 - 803ce4c: 67fb str r3, [r7, #124] ; 0x7c + 803ce8a: 2301 movs r3, #1 + 803ce8c: 67fb str r3, [r7, #124] ; 0x7c break; - 803ce4e: e000 b.n 803ce52 + 803ce8e: e000 b.n 803ce92 break; - 803ce50: bf00 nop + 803ce90: bf00 nop if(linkchanged) - 803ce52: 6ffb ldr r3, [r7, #124] ; 0x7c - 803ce54: 2b00 cmp r3, #0 - 803ce56: d018 beq.n 803ce8a + 803ce92: 6ffb ldr r3, [r7, #124] ; 0x7c + 803ce94: 2b00 cmp r3, #0 + 803ce96: d018 beq.n 803ceca HAL_ETH_GetMACConfig(&heth, &MACConf); - 803ce58: f107 030c add.w r3, r7, #12 - 803ce5c: 4619 mov r1, r3 - 803ce5e: 480e ldr r0, [pc, #56] ; (803ce98 ) - 803ce60: f7f4 fd98 bl 8031994 + 803ce98: f107 030c add.w r3, r7, #12 + 803ce9c: 4619 mov r1, r3 + 803ce9e: 480e ldr r0, [pc, #56] ; (803ced8 ) + 803cea0: f7f4 fd98 bl 80319d4 MACConf.DuplexMode = duplex; - 803ce64: 6f7b ldr r3, [r7, #116] ; 0x74 - 803ce66: 627b str r3, [r7, #36] ; 0x24 + 803cea4: 6f7b ldr r3, [r7, #116] ; 0x74 + 803cea6: 627b str r3, [r7, #36] ; 0x24 MACConf.Speed = speed; - 803ce68: 6fbb ldr r3, [r7, #120] ; 0x78 - 803ce6a: 623b str r3, [r7, #32] + 803cea8: 6fbb ldr r3, [r7, #120] ; 0x78 + 803ceaa: 623b str r3, [r7, #32] HAL_ETH_SetMACConfig(&heth, &MACConf); - 803ce6c: f107 030c add.w r3, r7, #12 - 803ce70: 4619 mov r1, r3 - 803ce72: 4809 ldr r0, [pc, #36] ; (803ce98 ) - 803ce74: f7f4 ff62 bl 8031d3c + 803ceac: f107 030c add.w r3, r7, #12 + 803ceb0: 4619 mov r1, r3 + 803ceb2: 4809 ldr r0, [pc, #36] ; (803ced8 ) + 803ceb4: f7f4 ff62 bl 8031d7c HAL_ETH_Start(&heth); - 803ce78: 4807 ldr r0, [pc, #28] ; (803ce98 ) - 803ce7a: f7f4 f91f bl 80310bc + 803ceb8: 4807 ldr r0, [pc, #28] ; (803ced8 ) + 803ceba: f7f4 f91f bl 80310fc netif_set_up(netif); - 803ce7e: 6878 ldr r0, [r7, #4] - 803ce80: f001 f844 bl 803df0c + 803cebe: 6878 ldr r0, [r7, #4] + 803cec0: f001 f844 bl 803df4c netif_set_link_up(netif); - 803ce84: 6878 ldr r0, [r7, #4] - 803ce86: f001 f8ef bl 803e068 + 803cec4: 6878 ldr r0, [r7, #4] + 803cec6: f001 f8ef bl 803e0a8 } - 803ce8a: bf00 nop - 803ce8c: 3780 adds r7, #128 ; 0x80 - 803ce8e: 46bd mov sp, r7 - 803ce90: bd80 pop {r7, pc} - 803ce92: bf00 nop - 803ce94: 2400bb2c .word 0x2400bb2c - 803ce98: 2400ba44 .word 0x2400ba44 + 803ceca: bf00 nop + 803cecc: 3780 adds r7, #128 ; 0x80 + 803cece: 46bd mov sp, r7 + 803ced0: bd80 pop {r7, pc} + 803ced2: bf00 nop + 803ced4: 2400bb2c .word 0x2400bb2c + 803ced8: 2400ba44 .word 0x2400ba44 -0803ce9c : +0803cedc : void HAL_ETH_RxAllocateCallback(uint8_t **buff) { - 803ce9c: b580 push {r7, lr} - 803ce9e: b086 sub sp, #24 - 803cea0: af02 add r7, sp, #8 - 803cea2: 6078 str r0, [r7, #4] + 803cedc: b580 push {r7, lr} + 803cede: b086 sub sp, #24 + 803cee0: af02 add r7, sp, #8 + 803cee2: 6078 str r0, [r7, #4] /* USER CODE BEGIN HAL ETH RxAllocateCallback */ struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL); - 803cea4: 4812 ldr r0, [pc, #72] ; (803cef0 ) - 803cea6: f000 fd9f bl 803d9e8 - 803ceaa: 60f8 str r0, [r7, #12] + 803cee4: 4812 ldr r0, [pc, #72] ; (803cf30 ) + 803cee6: f000 fd9f bl 803da28 + 803ceea: 60f8 str r0, [r7, #12] if (p) - 803ceac: 68fb ldr r3, [r7, #12] - 803ceae: 2b00 cmp r3, #0 - 803ceb0: d014 beq.n 803cedc + 803ceec: 68fb ldr r3, [r7, #12] + 803ceee: 2b00 cmp r3, #0 + 803cef0: d014 beq.n 803cf1c { /* Get the buff from the struct pbuf address. */ *buff = (uint8_t *)p + offsetof(RxBuff_t, buff); - 803ceb2: 68fb ldr r3, [r7, #12] - 803ceb4: f103 0220 add.w r2, r3, #32 - 803ceb8: 687b ldr r3, [r7, #4] - 803ceba: 601a str r2, [r3, #0] + 803cef2: 68fb ldr r3, [r7, #12] + 803cef4: f103 0220 add.w r2, r3, #32 + 803cef8: 687b ldr r3, [r7, #4] + 803cefa: 601a str r2, [r3, #0] p->custom_free_function = pbuf_free_custom; - 803cebc: 68fb ldr r3, [r7, #12] - 803cebe: 4a0d ldr r2, [pc, #52] ; (803cef4 ) - 803cec0: 611a str r2, [r3, #16] + 803cefc: 68fb ldr r3, [r7, #12] + 803cefe: 4a0d ldr r2, [pc, #52] ; (803cf34 ) + 803cf00: 611a str r2, [r3, #16] /* Initialize the struct pbuf. * This must be performed whenever a buffer's allocated because it may be * changed by lwIP or the app, e.g., pbuf_free decrements ref. */ pbuf_alloced_custom(PBUF_RAW, 0, PBUF_REF, p, *buff, ETH_RX_BUFFER_SIZE); - 803cec2: 687b ldr r3, [r7, #4] - 803cec4: 681b ldr r3, [r3, #0] - 803cec6: f44f 62bf mov.w r2, #1528 ; 0x5f8 - 803ceca: 9201 str r2, [sp, #4] - 803cecc: 9300 str r3, [sp, #0] - 803cece: 68fb ldr r3, [r7, #12] - 803ced0: 2241 movs r2, #65 ; 0x41 - 803ced2: 2100 movs r1, #0 - 803ced4: 2000 movs r0, #0 - 803ced6: f001 faf1 bl 803e4bc + 803cf02: 687b ldr r3, [r7, #4] + 803cf04: 681b ldr r3, [r3, #0] + 803cf06: f44f 62bf mov.w r2, #1528 ; 0x5f8 + 803cf0a: 9201 str r2, [sp, #4] + 803cf0c: 9300 str r3, [sp, #0] + 803cf0e: 68fb ldr r3, [r7, #12] + 803cf10: 2241 movs r2, #65 ; 0x41 + 803cf12: 2100 movs r1, #0 + 803cf14: 2000 movs r0, #0 + 803cf16: f001 faf1 bl 803e4fc { RxAllocStatus = RX_ALLOC_ERROR; *buff = NULL; } /* USER CODE END HAL ETH RxAllocateCallback */ } - 803ceda: e005 b.n 803cee8 + 803cf1a: e005 b.n 803cf28 RxAllocStatus = RX_ALLOC_ERROR; - 803cedc: 4b06 ldr r3, [pc, #24] ; (803cef8 ) - 803cede: 2201 movs r2, #1 - 803cee0: 701a strb r2, [r3, #0] + 803cf1c: 4b06 ldr r3, [pc, #24] ; (803cf38 ) + 803cf1e: 2201 movs r2, #1 + 803cf20: 701a strb r2, [r3, #0] *buff = NULL; - 803cee2: 687b ldr r3, [r7, #4] - 803cee4: 2200 movs r2, #0 - 803cee6: 601a str r2, [r3, #0] + 803cf22: 687b ldr r3, [r7, #4] + 803cf24: 2200 movs r2, #0 + 803cf26: 601a str r2, [r3, #0] } - 803cee8: bf00 nop - 803ceea: 3710 adds r7, #16 - 803ceec: 46bd mov sp, r7 - 803ceee: bd80 pop {r7, pc} - 803cef0: 0804d3ac .word 0x0804d3ac - 803cef4: 0803cb2d .word 0x0803cb2d - 803cef8: 2400ba40 .word 0x2400ba40 + 803cf28: bf00 nop + 803cf2a: 3710 adds r7, #16 + 803cf2c: 46bd mov sp, r7 + 803cf2e: bd80 pop {r7, pc} + 803cf30: 0804d3ec .word 0x0804d3ec + 803cf34: 0803cb6d .word 0x0803cb6d + 803cf38: 2400ba40 .word 0x2400ba40 -0803cefc : +0803cf3c : void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length) { - 803cefc: b480 push {r7} - 803cefe: b08d sub sp, #52 ; 0x34 - 803cf00: af00 add r7, sp, #0 - 803cf02: 60f8 str r0, [r7, #12] - 803cf04: 60b9 str r1, [r7, #8] - 803cf06: 607a str r2, [r7, #4] - 803cf08: 807b strh r3, [r7, #2] + 803cf3c: b480 push {r7} + 803cf3e: b08d sub sp, #52 ; 0x34 + 803cf40: af00 add r7, sp, #0 + 803cf42: 60f8 str r0, [r7, #12] + 803cf44: 60b9 str r1, [r7, #8] + 803cf46: 607a str r2, [r7, #4] + 803cf48: 807b strh r3, [r7, #2] /* USER CODE BEGIN HAL ETH RxLinkCallback */ struct pbuf **ppStart = (struct pbuf **)pStart; - 803cf0a: 68fb ldr r3, [r7, #12] - 803cf0c: 62bb str r3, [r7, #40] ; 0x28 + 803cf4a: 68fb ldr r3, [r7, #12] + 803cf4c: 62bb str r3, [r7, #40] ; 0x28 struct pbuf **ppEnd = (struct pbuf **)pEnd; - 803cf0e: 68bb ldr r3, [r7, #8] - 803cf10: 627b str r3, [r7, #36] ; 0x24 + 803cf4e: 68bb ldr r3, [r7, #8] + 803cf50: 627b str r3, [r7, #36] ; 0x24 struct pbuf *p = NULL; - 803cf12: 2300 movs r3, #0 - 803cf14: 62fb str r3, [r7, #44] ; 0x2c + 803cf52: 2300 movs r3, #0 + 803cf54: 62fb str r3, [r7, #44] ; 0x2c /* Get the struct pbuf from the buff address. */ p = (struct pbuf *)(buff - offsetof(RxBuff_t, buff)); - 803cf16: 687b ldr r3, [r7, #4] - 803cf18: 3b20 subs r3, #32 - 803cf1a: 62fb str r3, [r7, #44] ; 0x2c + 803cf56: 687b ldr r3, [r7, #4] + 803cf58: 3b20 subs r3, #32 + 803cf5a: 62fb str r3, [r7, #44] ; 0x2c p->next = NULL; - 803cf1c: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf1e: 2200 movs r2, #0 - 803cf20: 601a str r2, [r3, #0] + 803cf5c: 6afb ldr r3, [r7, #44] ; 0x2c + 803cf5e: 2200 movs r2, #0 + 803cf60: 601a str r2, [r3, #0] p->tot_len = 0; - 803cf22: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf24: 2200 movs r2, #0 - 803cf26: 811a strh r2, [r3, #8] + 803cf62: 6afb ldr r3, [r7, #44] ; 0x2c + 803cf64: 2200 movs r2, #0 + 803cf66: 811a strh r2, [r3, #8] p->len = Length; - 803cf28: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf2a: 887a ldrh r2, [r7, #2] - 803cf2c: 815a strh r2, [r3, #10] + 803cf68: 6afb ldr r3, [r7, #44] ; 0x2c + 803cf6a: 887a ldrh r2, [r7, #2] + 803cf6c: 815a strh r2, [r3, #10] /* Chain the buffer. */ if (!*ppStart) - 803cf2e: 6abb ldr r3, [r7, #40] ; 0x28 - 803cf30: 681b ldr r3, [r3, #0] - 803cf32: 2b00 cmp r3, #0 - 803cf34: d103 bne.n 803cf3e + 803cf6e: 6abb ldr r3, [r7, #40] ; 0x28 + 803cf70: 681b ldr r3, [r3, #0] + 803cf72: 2b00 cmp r3, #0 + 803cf74: d103 bne.n 803cf7e { /* The first buffer of the packet. */ *ppStart = p; - 803cf36: 6abb ldr r3, [r7, #40] ; 0x28 - 803cf38: 6afa ldr r2, [r7, #44] ; 0x2c - 803cf3a: 601a str r2, [r3, #0] - 803cf3c: e003 b.n 803cf46 + 803cf76: 6abb ldr r3, [r7, #40] ; 0x28 + 803cf78: 6afa ldr r2, [r7, #44] ; 0x2c + 803cf7a: 601a str r2, [r3, #0] + 803cf7c: e003 b.n 803cf86 } else { /* Chain the buffer to the end of the packet. */ (*ppEnd)->next = p; - 803cf3e: 6a7b ldr r3, [r7, #36] ; 0x24 - 803cf40: 681b ldr r3, [r3, #0] - 803cf42: 6afa ldr r2, [r7, #44] ; 0x2c - 803cf44: 601a str r2, [r3, #0] + 803cf7e: 6a7b ldr r3, [r7, #36] ; 0x24 + 803cf80: 681b ldr r3, [r3, #0] + 803cf82: 6afa ldr r2, [r7, #44] ; 0x2c + 803cf84: 601a str r2, [r3, #0] } *ppEnd = p; - 803cf46: 6a7b ldr r3, [r7, #36] ; 0x24 - 803cf48: 6afa ldr r2, [r7, #44] ; 0x2c - 803cf4a: 601a str r2, [r3, #0] + 803cf86: 6a7b ldr r3, [r7, #36] ; 0x24 + 803cf88: 6afa ldr r2, [r7, #44] ; 0x2c + 803cf8a: 601a str r2, [r3, #0] /* Update the total length of all the buffers of the chain. Each pbuf in the chain should have its tot_len * set to its own length, plus the length of all the following pbufs in the chain. */ for (p = *ppStart; p != NULL; p = p->next) - 803cf4c: 6abb ldr r3, [r7, #40] ; 0x28 - 803cf4e: 681b ldr r3, [r3, #0] - 803cf50: 62fb str r3, [r7, #44] ; 0x2c - 803cf52: e009 b.n 803cf68 + 803cf8c: 6abb ldr r3, [r7, #40] ; 0x28 + 803cf8e: 681b ldr r3, [r3, #0] + 803cf90: 62fb str r3, [r7, #44] ; 0x2c + 803cf92: e009 b.n 803cfa8 { p->tot_len += Length; - 803cf54: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf56: 891a ldrh r2, [r3, #8] - 803cf58: 887b ldrh r3, [r7, #2] - 803cf5a: 4413 add r3, r2 - 803cf5c: b29a uxth r2, r3 - 803cf5e: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf60: 811a strh r2, [r3, #8] + 803cf94: 6afb ldr r3, [r7, #44] ; 0x2c + 803cf96: 891a ldrh r2, [r3, #8] + 803cf98: 887b ldrh r3, [r7, #2] + 803cf9a: 4413 add r3, r2 + 803cf9c: b29a uxth r2, r3 + 803cf9e: 6afb ldr r3, [r7, #44] ; 0x2c + 803cfa0: 811a strh r2, [r3, #8] for (p = *ppStart; p != NULL; p = p->next) - 803cf62: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf64: 681b ldr r3, [r3, #0] - 803cf66: 62fb str r3, [r7, #44] ; 0x2c - 803cf68: 6afb ldr r3, [r7, #44] ; 0x2c - 803cf6a: 2b00 cmp r3, #0 - 803cf6c: d1f2 bne.n 803cf54 + 803cfa2: 6afb ldr r3, [r7, #44] ; 0x2c + 803cfa4: 681b ldr r3, [r3, #0] + 803cfa6: 62fb str r3, [r7, #44] ; 0x2c + 803cfa8: 6afb ldr r3, [r7, #44] ; 0x2c + 803cfaa: 2b00 cmp r3, #0 + 803cfac: d1f2 bne.n 803cf94 } /* Invalidate data cache because Rx DMA's writing to physical memory makes it stale. */ SCB_InvalidateDCache_by_Addr((uint32_t *)buff, Length); - 803cf6e: 887b ldrh r3, [r7, #2] - 803cf70: 687a ldr r2, [r7, #4] - 803cf72: 623a str r2, [r7, #32] - 803cf74: 61fb str r3, [r7, #28] + 803cfae: 887b ldrh r3, [r7, #2] + 803cfb0: 687a ldr r2, [r7, #4] + 803cfb2: 623a str r2, [r7, #32] + 803cfb4: 61fb str r3, [r7, #28] if ( dsize > 0 ) { - 803cf76: 69fb ldr r3, [r7, #28] - 803cf78: 2b00 cmp r3, #0 - 803cf7a: dd1d ble.n 803cfb8 + 803cfb6: 69fb ldr r3, [r7, #28] + 803cfb8: 2b00 cmp r3, #0 + 803cfba: dd1d ble.n 803cff8 int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); - 803cf7c: 6a3b ldr r3, [r7, #32] - 803cf7e: f003 021f and.w r2, r3, #31 - 803cf82: 69fb ldr r3, [r7, #28] - 803cf84: 4413 add r3, r2 - 803cf86: 61bb str r3, [r7, #24] + 803cfbc: 6a3b ldr r3, [r7, #32] + 803cfbe: f003 021f and.w r2, r3, #31 + 803cfc2: 69fb ldr r3, [r7, #28] + 803cfc4: 4413 add r3, r2 + 803cfc6: 61bb str r3, [r7, #24] uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; - 803cf88: 6a3b ldr r3, [r7, #32] - 803cf8a: 617b str r3, [r7, #20] + 803cfc8: 6a3b ldr r3, [r7, #32] + 803cfca: 617b str r3, [r7, #20] __ASM volatile ("dsb 0xF":::"memory"); - 803cf8c: f3bf 8f4f dsb sy + 803cfcc: f3bf 8f4f dsb sy } - 803cf90: bf00 nop + 803cfd0: bf00 nop SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ - 803cf92: 4a0d ldr r2, [pc, #52] ; (803cfc8 ) - 803cf94: 697b ldr r3, [r7, #20] - 803cf96: f8c2 325c str.w r3, [r2, #604] ; 0x25c + 803cfd2: 4a0d ldr r2, [pc, #52] ; (803d008 ) + 803cfd4: 697b ldr r3, [r7, #20] + 803cfd6: f8c2 325c str.w r3, [r2, #604] ; 0x25c op_addr += __SCB_DCACHE_LINE_SIZE; - 803cf9a: 697b ldr r3, [r7, #20] - 803cf9c: 3320 adds r3, #32 - 803cf9e: 617b str r3, [r7, #20] + 803cfda: 697b ldr r3, [r7, #20] + 803cfdc: 3320 adds r3, #32 + 803cfde: 617b str r3, [r7, #20] op_size -= __SCB_DCACHE_LINE_SIZE; - 803cfa0: 69bb ldr r3, [r7, #24] - 803cfa2: 3b20 subs r3, #32 - 803cfa4: 61bb str r3, [r7, #24] + 803cfe0: 69bb ldr r3, [r7, #24] + 803cfe2: 3b20 subs r3, #32 + 803cfe4: 61bb str r3, [r7, #24] } while ( op_size > 0 ); - 803cfa6: 69bb ldr r3, [r7, #24] - 803cfa8: 2b00 cmp r3, #0 - 803cfaa: dcf2 bgt.n 803cf92 + 803cfe6: 69bb ldr r3, [r7, #24] + 803cfe8: 2b00 cmp r3, #0 + 803cfea: dcf2 bgt.n 803cfd2 __ASM volatile ("dsb 0xF":::"memory"); - 803cfac: f3bf 8f4f dsb sy + 803cfec: f3bf 8f4f dsb sy } - 803cfb0: bf00 nop + 803cff0: bf00 nop __ASM volatile ("isb 0xF":::"memory"); - 803cfb2: f3bf 8f6f isb sy + 803cff2: f3bf 8f6f isb sy } - 803cfb6: bf00 nop + 803cff6: bf00 nop } - 803cfb8: bf00 nop + 803cff8: bf00 nop /* USER CODE END HAL ETH RxLinkCallback */ } - 803cfba: bf00 nop - 803cfbc: 3734 adds r7, #52 ; 0x34 - 803cfbe: 46bd mov sp, r7 - 803cfc0: f85d 7b04 ldr.w r7, [sp], #4 - 803cfc4: 4770 bx lr - 803cfc6: bf00 nop - 803cfc8: e000ed00 .word 0xe000ed00 + 803cffa: bf00 nop + 803cffc: 3734 adds r7, #52 ; 0x34 + 803cffe: 46bd mov sp, r7 + 803d000: f85d 7b04 ldr.w r7, [sp], #4 + 803d004: 4770 bx lr + 803d006: bf00 nop + 803d008: e000ed00 .word 0xe000ed00 -0803cfcc : +0803d00c : * @param n u16_t in host byte order * @return n in network byte order */ u16_t lwip_htons(u16_t n) { - 803cfcc: b480 push {r7} - 803cfce: b083 sub sp, #12 - 803cfd0: af00 add r7, sp, #0 - 803cfd2: 4603 mov r3, r0 - 803cfd4: 80fb strh r3, [r7, #6] + 803d00c: b480 push {r7} + 803d00e: b083 sub sp, #12 + 803d010: af00 add r7, sp, #0 + 803d012: 4603 mov r3, r0 + 803d014: 80fb strh r3, [r7, #6] return PP_HTONS(n); - 803cfd6: 88fb ldrh r3, [r7, #6] - 803cfd8: 021b lsls r3, r3, #8 - 803cfda: b21a sxth r2, r3 - 803cfdc: 88fb ldrh r3, [r7, #6] - 803cfde: 0a1b lsrs r3, r3, #8 - 803cfe0: b29b uxth r3, r3 - 803cfe2: b21b sxth r3, r3 - 803cfe4: 4313 orrs r3, r2 - 803cfe6: b21b sxth r3, r3 - 803cfe8: b29b uxth r3, r3 -} - 803cfea: 4618 mov r0, r3 - 803cfec: 370c adds r7, #12 - 803cfee: 46bd mov sp, r7 - 803cff0: f85d 7b04 ldr.w r7, [sp], #4 - 803cff4: 4770 bx lr - -0803cff6 : + 803d016: 88fb ldrh r3, [r7, #6] + 803d018: 021b lsls r3, r3, #8 + 803d01a: b21a sxth r2, r3 + 803d01c: 88fb ldrh r3, [r7, #6] + 803d01e: 0a1b lsrs r3, r3, #8 + 803d020: b29b uxth r3, r3 + 803d022: b21b sxth r3, r3 + 803d024: 4313 orrs r3, r2 + 803d026: b21b sxth r3, r3 + 803d028: b29b uxth r3, r3 +} + 803d02a: 4618 mov r0, r3 + 803d02c: 370c adds r7, #12 + 803d02e: 46bd mov sp, r7 + 803d030: f85d 7b04 ldr.w r7, [sp], #4 + 803d034: 4770 bx lr + +0803d036 : * @param n u32_t in host byte order * @return n in network byte order */ u32_t lwip_htonl(u32_t n) { - 803cff6: b480 push {r7} - 803cff8: b083 sub sp, #12 - 803cffa: af00 add r7, sp, #0 - 803cffc: 6078 str r0, [r7, #4] + 803d036: b480 push {r7} + 803d038: b083 sub sp, #12 + 803d03a: af00 add r7, sp, #0 + 803d03c: 6078 str r0, [r7, #4] return PP_HTONL(n); - 803cffe: 687b ldr r3, [r7, #4] - 803d000: 061a lsls r2, r3, #24 - 803d002: 687b ldr r3, [r7, #4] - 803d004: 021b lsls r3, r3, #8 - 803d006: f403 037f and.w r3, r3, #16711680 ; 0xff0000 - 803d00a: 431a orrs r2, r3 - 803d00c: 687b ldr r3, [r7, #4] - 803d00e: 0a1b lsrs r3, r3, #8 - 803d010: f403 437f and.w r3, r3, #65280 ; 0xff00 - 803d014: 431a orrs r2, r3 - 803d016: 687b ldr r3, [r7, #4] - 803d018: 0e1b lsrs r3, r3, #24 - 803d01a: 4313 orrs r3, r2 -} - 803d01c: 4618 mov r0, r3 - 803d01e: 370c adds r7, #12 - 803d020: 46bd mov sp, r7 - 803d022: f85d 7b04 ldr.w r7, [sp], #4 - 803d026: 4770 bx lr - -0803d028 : + 803d03e: 687b ldr r3, [r7, #4] + 803d040: 061a lsls r2, r3, #24 + 803d042: 687b ldr r3, [r7, #4] + 803d044: 021b lsls r3, r3, #8 + 803d046: f403 037f and.w r3, r3, #16711680 ; 0xff0000 + 803d04a: 431a orrs r2, r3 + 803d04c: 687b ldr r3, [r7, #4] + 803d04e: 0a1b lsrs r3, r3, #8 + 803d050: f403 437f and.w r3, r3, #65280 ; 0xff00 + 803d054: 431a orrs r2, r3 + 803d056: 687b ldr r3, [r7, #4] + 803d058: 0e1b lsrs r3, r3, #24 + 803d05a: 4313 orrs r3, r2 +} + 803d05c: 4618 mov r0, r3 + 803d05e: 370c adds r7, #12 + 803d060: 46bd mov sp, r7 + 803d062: f85d 7b04 ldr.w r7, [sp], #4 + 803d066: 4770 bx lr + +0803d068 : * @param len length of data to be summed * @return host order (!) lwip checksum (non-inverted Internet sum) */ u16_t lwip_standard_chksum(const void *dataptr, int len) { - 803d028: b480 push {r7} - 803d02a: b089 sub sp, #36 ; 0x24 - 803d02c: af00 add r7, sp, #0 - 803d02e: 6078 str r0, [r7, #4] - 803d030: 6039 str r1, [r7, #0] + 803d068: b480 push {r7} + 803d06a: b089 sub sp, #36 ; 0x24 + 803d06c: af00 add r7, sp, #0 + 803d06e: 6078 str r0, [r7, #4] + 803d070: 6039 str r1, [r7, #0] const u8_t *pb = (const u8_t *)dataptr; - 803d032: 687b ldr r3, [r7, #4] - 803d034: 61fb str r3, [r7, #28] + 803d072: 687b ldr r3, [r7, #4] + 803d074: 61fb str r3, [r7, #28] const u16_t *ps; u16_t t = 0; - 803d036: 2300 movs r3, #0 - 803d038: 81fb strh r3, [r7, #14] + 803d076: 2300 movs r3, #0 + 803d078: 81fb strh r3, [r7, #14] u32_t sum = 0; - 803d03a: 2300 movs r3, #0 - 803d03c: 617b str r3, [r7, #20] + 803d07a: 2300 movs r3, #0 + 803d07c: 617b str r3, [r7, #20] int odd = ((mem_ptr_t)pb & 1); - 803d03e: 69fb ldr r3, [r7, #28] - 803d040: f003 0301 and.w r3, r3, #1 - 803d044: 613b str r3, [r7, #16] + 803d07e: 69fb ldr r3, [r7, #28] + 803d080: f003 0301 and.w r3, r3, #1 + 803d084: 613b str r3, [r7, #16] /* Get aligned to u16_t */ if (odd && len > 0) { - 803d046: 693b ldr r3, [r7, #16] - 803d048: 2b00 cmp r3, #0 - 803d04a: d00d beq.n 803d068 - 803d04c: 683b ldr r3, [r7, #0] - 803d04e: 2b00 cmp r3, #0 - 803d050: dd0a ble.n 803d068 + 803d086: 693b ldr r3, [r7, #16] + 803d088: 2b00 cmp r3, #0 + 803d08a: d00d beq.n 803d0a8 + 803d08c: 683b ldr r3, [r7, #0] + 803d08e: 2b00 cmp r3, #0 + 803d090: dd0a ble.n 803d0a8 ((u8_t *)&t)[1] = *pb++; - 803d052: 69fa ldr r2, [r7, #28] - 803d054: 1c53 adds r3, r2, #1 - 803d056: 61fb str r3, [r7, #28] - 803d058: f107 030e add.w r3, r7, #14 - 803d05c: 3301 adds r3, #1 - 803d05e: 7812 ldrb r2, [r2, #0] - 803d060: 701a strb r2, [r3, #0] + 803d092: 69fa ldr r2, [r7, #28] + 803d094: 1c53 adds r3, r2, #1 + 803d096: 61fb str r3, [r7, #28] + 803d098: f107 030e add.w r3, r7, #14 + 803d09c: 3301 adds r3, #1 + 803d09e: 7812 ldrb r2, [r2, #0] + 803d0a0: 701a strb r2, [r3, #0] len--; - 803d062: 683b ldr r3, [r7, #0] - 803d064: 3b01 subs r3, #1 - 803d066: 603b str r3, [r7, #0] + 803d0a2: 683b ldr r3, [r7, #0] + 803d0a4: 3b01 subs r3, #1 + 803d0a6: 603b str r3, [r7, #0] } /* Add the bulk of the data */ ps = (const u16_t *)(const void *)pb; - 803d068: 69fb ldr r3, [r7, #28] - 803d06a: 61bb str r3, [r7, #24] + 803d0a8: 69fb ldr r3, [r7, #28] + 803d0aa: 61bb str r3, [r7, #24] while (len > 1) { - 803d06c: e00a b.n 803d084 + 803d0ac: e00a b.n 803d0c4 sum += *ps++; - 803d06e: 69bb ldr r3, [r7, #24] - 803d070: 1c9a adds r2, r3, #2 - 803d072: 61ba str r2, [r7, #24] - 803d074: 881b ldrh r3, [r3, #0] - 803d076: 461a mov r2, r3 - 803d078: 697b ldr r3, [r7, #20] - 803d07a: 4413 add r3, r2 - 803d07c: 617b str r3, [r7, #20] + 803d0ae: 69bb ldr r3, [r7, #24] + 803d0b0: 1c9a adds r2, r3, #2 + 803d0b2: 61ba str r2, [r7, #24] + 803d0b4: 881b ldrh r3, [r3, #0] + 803d0b6: 461a mov r2, r3 + 803d0b8: 697b ldr r3, [r7, #20] + 803d0ba: 4413 add r3, r2 + 803d0bc: 617b str r3, [r7, #20] len -= 2; - 803d07e: 683b ldr r3, [r7, #0] - 803d080: 3b02 subs r3, #2 - 803d082: 603b str r3, [r7, #0] + 803d0be: 683b ldr r3, [r7, #0] + 803d0c0: 3b02 subs r3, #2 + 803d0c2: 603b str r3, [r7, #0] while (len > 1) { - 803d084: 683b ldr r3, [r7, #0] - 803d086: 2b01 cmp r3, #1 - 803d088: dcf1 bgt.n 803d06e + 803d0c4: 683b ldr r3, [r7, #0] + 803d0c6: 2b01 cmp r3, #1 + 803d0c8: dcf1 bgt.n 803d0ae } /* Consume left-over byte, if any */ if (len > 0) { - 803d08a: 683b ldr r3, [r7, #0] - 803d08c: 2b00 cmp r3, #0 - 803d08e: dd04 ble.n 803d09a + 803d0ca: 683b ldr r3, [r7, #0] + 803d0cc: 2b00 cmp r3, #0 + 803d0ce: dd04 ble.n 803d0da ((u8_t *)&t)[0] = *(const u8_t *)ps; - 803d090: f107 030e add.w r3, r7, #14 - 803d094: 69ba ldr r2, [r7, #24] - 803d096: 7812 ldrb r2, [r2, #0] - 803d098: 701a strb r2, [r3, #0] + 803d0d0: f107 030e add.w r3, r7, #14 + 803d0d4: 69ba ldr r2, [r7, #24] + 803d0d6: 7812 ldrb r2, [r2, #0] + 803d0d8: 701a strb r2, [r3, #0] } /* Add end bytes */ sum += t; - 803d09a: 89fb ldrh r3, [r7, #14] - 803d09c: 461a mov r2, r3 - 803d09e: 697b ldr r3, [r7, #20] - 803d0a0: 4413 add r3, r2 - 803d0a2: 617b str r3, [r7, #20] + 803d0da: 89fb ldrh r3, [r7, #14] + 803d0dc: 461a mov r2, r3 + 803d0de: 697b ldr r3, [r7, #20] + 803d0e0: 4413 add r3, r2 + 803d0e2: 617b str r3, [r7, #20] /* Fold 32-bit sum to 16 bits calling this twice is probably faster than if statements... */ sum = FOLD_U32T(sum); - 803d0a4: 697b ldr r3, [r7, #20] - 803d0a6: 0c1a lsrs r2, r3, #16 - 803d0a8: 697b ldr r3, [r7, #20] - 803d0aa: b29b uxth r3, r3 - 803d0ac: 4413 add r3, r2 - 803d0ae: 617b str r3, [r7, #20] + 803d0e4: 697b ldr r3, [r7, #20] + 803d0e6: 0c1a lsrs r2, r3, #16 + 803d0e8: 697b ldr r3, [r7, #20] + 803d0ea: b29b uxth r3, r3 + 803d0ec: 4413 add r3, r2 + 803d0ee: 617b str r3, [r7, #20] sum = FOLD_U32T(sum); - 803d0b0: 697b ldr r3, [r7, #20] - 803d0b2: 0c1a lsrs r2, r3, #16 - 803d0b4: 697b ldr r3, [r7, #20] - 803d0b6: b29b uxth r3, r3 - 803d0b8: 4413 add r3, r2 - 803d0ba: 617b str r3, [r7, #20] + 803d0f0: 697b ldr r3, [r7, #20] + 803d0f2: 0c1a lsrs r2, r3, #16 + 803d0f4: 697b ldr r3, [r7, #20] + 803d0f6: b29b uxth r3, r3 + 803d0f8: 4413 add r3, r2 + 803d0fa: 617b str r3, [r7, #20] /* Swap if alignment was odd */ if (odd) { - 803d0bc: 693b ldr r3, [r7, #16] - 803d0be: 2b00 cmp r3, #0 - 803d0c0: d007 beq.n 803d0d2 + 803d0fc: 693b ldr r3, [r7, #16] + 803d0fe: 2b00 cmp r3, #0 + 803d100: d007 beq.n 803d112 sum = SWAP_BYTES_IN_WORD(sum); - 803d0c2: 697b ldr r3, [r7, #20] - 803d0c4: 021b lsls r3, r3, #8 - 803d0c6: b29a uxth r2, r3 - 803d0c8: 697b ldr r3, [r7, #20] - 803d0ca: 0a1b lsrs r3, r3, #8 - 803d0cc: b2db uxtb r3, r3 - 803d0ce: 4313 orrs r3, r2 - 803d0d0: 617b str r3, [r7, #20] + 803d102: 697b ldr r3, [r7, #20] + 803d104: 021b lsls r3, r3, #8 + 803d106: b29a uxth r2, r3 + 803d108: 697b ldr r3, [r7, #20] + 803d10a: 0a1b lsrs r3, r3, #8 + 803d10c: b2db uxtb r3, r3 + 803d10e: 4313 orrs r3, r2 + 803d110: 617b str r3, [r7, #20] } return (u16_t)sum; - 803d0d2: 697b ldr r3, [r7, #20] - 803d0d4: b29b uxth r3, r3 + 803d112: 697b ldr r3, [r7, #20] + 803d114: b29b uxth r3, r3 } - 803d0d6: 4618 mov r0, r3 - 803d0d8: 3724 adds r7, #36 ; 0x24 - 803d0da: 46bd mov sp, r7 - 803d0dc: f85d 7b04 ldr.w r7, [sp], #4 - 803d0e0: 4770 bx lr + 803d116: 4618 mov r0, r3 + 803d118: 3724 adds r7, #36 ; 0x24 + 803d11a: 46bd mov sp, r7 + 803d11c: f85d 7b04 ldr.w r7, [sp], #4 + 803d120: 4770 bx lr -0803d0e2 : +0803d122 : * @return checksum (as u16_t) to be saved directly in the protocol header */ u16_t inet_chksum(const void *dataptr, u16_t len) { - 803d0e2: b580 push {r7, lr} - 803d0e4: b082 sub sp, #8 - 803d0e6: af00 add r7, sp, #0 - 803d0e8: 6078 str r0, [r7, #4] - 803d0ea: 460b mov r3, r1 - 803d0ec: 807b strh r3, [r7, #2] + 803d122: b580 push {r7, lr} + 803d124: b082 sub sp, #8 + 803d126: af00 add r7, sp, #0 + 803d128: 6078 str r0, [r7, #4] + 803d12a: 460b mov r3, r1 + 803d12c: 807b strh r3, [r7, #2] return (u16_t)~(unsigned int)LWIP_CHKSUM(dataptr, len); - 803d0ee: 887b ldrh r3, [r7, #2] - 803d0f0: 4619 mov r1, r3 - 803d0f2: 6878 ldr r0, [r7, #4] - 803d0f4: f7ff ff98 bl 803d028 - 803d0f8: 4603 mov r3, r0 - 803d0fa: 43db mvns r3, r3 - 803d0fc: b29b uxth r3, r3 -} - 803d0fe: 4618 mov r0, r3 - 803d100: 3708 adds r7, #8 - 803d102: 46bd mov sp, r7 - 803d104: bd80 pop {r7, pc} - -0803d106 : + 803d12e: 887b ldrh r3, [r7, #2] + 803d130: 4619 mov r1, r3 + 803d132: 6878 ldr r0, [r7, #4] + 803d134: f7ff ff98 bl 803d068 + 803d138: 4603 mov r3, r0 + 803d13a: 43db mvns r3, r3 + 803d13c: b29b uxth r3, r3 +} + 803d13e: 4618 mov r0, r3 + 803d140: 3708 adds r7, #8 + 803d142: 46bd mov sp, r7 + 803d144: bd80 pop {r7, pc} + +0803d146 : * @param p pbuf chain over that the checksum should be calculated * @return checksum (as u16_t) to be saved directly in the protocol header */ u16_t inet_chksum_pbuf(struct pbuf *p) { - 803d106: b580 push {r7, lr} - 803d108: b086 sub sp, #24 - 803d10a: af00 add r7, sp, #0 - 803d10c: 6078 str r0, [r7, #4] + 803d146: b580 push {r7, lr} + 803d148: b086 sub sp, #24 + 803d14a: af00 add r7, sp, #0 + 803d14c: 6078 str r0, [r7, #4] u32_t acc; struct pbuf *q; int swapped = 0; - 803d10e: 2300 movs r3, #0 - 803d110: 60fb str r3, [r7, #12] + 803d14e: 2300 movs r3, #0 + 803d150: 60fb str r3, [r7, #12] acc = 0; - 803d112: 2300 movs r3, #0 - 803d114: 617b str r3, [r7, #20] + 803d152: 2300 movs r3, #0 + 803d154: 617b str r3, [r7, #20] for (q = p; q != NULL; q = q->next) { - 803d116: 687b ldr r3, [r7, #4] - 803d118: 613b str r3, [r7, #16] - 803d11a: e02b b.n 803d174 + 803d156: 687b ldr r3, [r7, #4] + 803d158: 613b str r3, [r7, #16] + 803d15a: e02b b.n 803d1b4 acc += LWIP_CHKSUM(q->payload, q->len); - 803d11c: 693b ldr r3, [r7, #16] - 803d11e: 685a ldr r2, [r3, #4] - 803d120: 693b ldr r3, [r7, #16] - 803d122: 895b ldrh r3, [r3, #10] - 803d124: 4619 mov r1, r3 - 803d126: 4610 mov r0, r2 - 803d128: f7ff ff7e bl 803d028 - 803d12c: 4603 mov r3, r0 - 803d12e: 461a mov r2, r3 - 803d130: 697b ldr r3, [r7, #20] - 803d132: 4413 add r3, r2 - 803d134: 617b str r3, [r7, #20] + 803d15c: 693b ldr r3, [r7, #16] + 803d15e: 685a ldr r2, [r3, #4] + 803d160: 693b ldr r3, [r7, #16] + 803d162: 895b ldrh r3, [r3, #10] + 803d164: 4619 mov r1, r3 + 803d166: 4610 mov r0, r2 + 803d168: f7ff ff7e bl 803d068 + 803d16c: 4603 mov r3, r0 + 803d16e: 461a mov r2, r3 + 803d170: 697b ldr r3, [r7, #20] + 803d172: 4413 add r3, r2 + 803d174: 617b str r3, [r7, #20] acc = FOLD_U32T(acc); - 803d136: 697b ldr r3, [r7, #20] - 803d138: 0c1a lsrs r2, r3, #16 - 803d13a: 697b ldr r3, [r7, #20] - 803d13c: b29b uxth r3, r3 - 803d13e: 4413 add r3, r2 - 803d140: 617b str r3, [r7, #20] + 803d176: 697b ldr r3, [r7, #20] + 803d178: 0c1a lsrs r2, r3, #16 + 803d17a: 697b ldr r3, [r7, #20] + 803d17c: b29b uxth r3, r3 + 803d17e: 4413 add r3, r2 + 803d180: 617b str r3, [r7, #20] if (q->len % 2 != 0) { - 803d142: 693b ldr r3, [r7, #16] - 803d144: 895b ldrh r3, [r3, #10] - 803d146: f003 0301 and.w r3, r3, #1 - 803d14a: b29b uxth r3, r3 - 803d14c: 2b00 cmp r3, #0 - 803d14e: d00e beq.n 803d16e + 803d182: 693b ldr r3, [r7, #16] + 803d184: 895b ldrh r3, [r3, #10] + 803d186: f003 0301 and.w r3, r3, #1 + 803d18a: b29b uxth r3, r3 + 803d18c: 2b00 cmp r3, #0 + 803d18e: d00e beq.n 803d1ae swapped = !swapped; - 803d150: 68fb ldr r3, [r7, #12] - 803d152: 2b00 cmp r3, #0 - 803d154: bf0c ite eq - 803d156: 2301 moveq r3, #1 - 803d158: 2300 movne r3, #0 - 803d15a: b2db uxtb r3, r3 - 803d15c: 60fb str r3, [r7, #12] + 803d190: 68fb ldr r3, [r7, #12] + 803d192: 2b00 cmp r3, #0 + 803d194: bf0c ite eq + 803d196: 2301 moveq r3, #1 + 803d198: 2300 movne r3, #0 + 803d19a: b2db uxtb r3, r3 + 803d19c: 60fb str r3, [r7, #12] acc = SWAP_BYTES_IN_WORD(acc); - 803d15e: 697b ldr r3, [r7, #20] - 803d160: 021b lsls r3, r3, #8 - 803d162: b29a uxth r2, r3 - 803d164: 697b ldr r3, [r7, #20] - 803d166: 0a1b lsrs r3, r3, #8 - 803d168: b2db uxtb r3, r3 - 803d16a: 4313 orrs r3, r2 - 803d16c: 617b str r3, [r7, #20] + 803d19e: 697b ldr r3, [r7, #20] + 803d1a0: 021b lsls r3, r3, #8 + 803d1a2: b29a uxth r2, r3 + 803d1a4: 697b ldr r3, [r7, #20] + 803d1a6: 0a1b lsrs r3, r3, #8 + 803d1a8: b2db uxtb r3, r3 + 803d1aa: 4313 orrs r3, r2 + 803d1ac: 617b str r3, [r7, #20] for (q = p; q != NULL; q = q->next) { - 803d16e: 693b ldr r3, [r7, #16] - 803d170: 681b ldr r3, [r3, #0] - 803d172: 613b str r3, [r7, #16] - 803d174: 693b ldr r3, [r7, #16] - 803d176: 2b00 cmp r3, #0 - 803d178: d1d0 bne.n 803d11c + 803d1ae: 693b ldr r3, [r7, #16] + 803d1b0: 681b ldr r3, [r3, #0] + 803d1b2: 613b str r3, [r7, #16] + 803d1b4: 693b ldr r3, [r7, #16] + 803d1b6: 2b00 cmp r3, #0 + 803d1b8: d1d0 bne.n 803d15c } } if (swapped) { - 803d17a: 68fb ldr r3, [r7, #12] - 803d17c: 2b00 cmp r3, #0 - 803d17e: d007 beq.n 803d190 + 803d1ba: 68fb ldr r3, [r7, #12] + 803d1bc: 2b00 cmp r3, #0 + 803d1be: d007 beq.n 803d1d0 acc = SWAP_BYTES_IN_WORD(acc); - 803d180: 697b ldr r3, [r7, #20] - 803d182: 021b lsls r3, r3, #8 - 803d184: b29a uxth r2, r3 - 803d186: 697b ldr r3, [r7, #20] - 803d188: 0a1b lsrs r3, r3, #8 - 803d18a: b2db uxtb r3, r3 - 803d18c: 4313 orrs r3, r2 - 803d18e: 617b str r3, [r7, #20] + 803d1c0: 697b ldr r3, [r7, #20] + 803d1c2: 021b lsls r3, r3, #8 + 803d1c4: b29a uxth r2, r3 + 803d1c6: 697b ldr r3, [r7, #20] + 803d1c8: 0a1b lsrs r3, r3, #8 + 803d1ca: b2db uxtb r3, r3 + 803d1cc: 4313 orrs r3, r2 + 803d1ce: 617b str r3, [r7, #20] } return (u16_t)~(acc & 0xffffUL); - 803d190: 697b ldr r3, [r7, #20] - 803d192: b29b uxth r3, r3 - 803d194: 43db mvns r3, r3 - 803d196: b29b uxth r3, r3 + 803d1d0: 697b ldr r3, [r7, #20] + 803d1d2: b29b uxth r3, r3 + 803d1d4: 43db mvns r3, r3 + 803d1d6: b29b uxth r3, r3 } - 803d198: 4618 mov r0, r3 - 803d19a: 3718 adds r7, #24 - 803d19c: 46bd mov sp, r7 - 803d19e: bd80 pop {r7, pc} + 803d1d8: 4618 mov r0, r3 + 803d1da: 3718 adds r7, #24 + 803d1dc: 46bd mov sp, r7 + 803d1de: bd80 pop {r7, pc} -0803d1a0 : +0803d1e0 : * Initialize all modules. * Use this in NO_SYS mode. Use tcpip_init() otherwise. */ void lwip_init(void) { - 803d1a0: b580 push {r7, lr} - 803d1a2: b082 sub sp, #8 - 803d1a4: af00 add r7, sp, #0 + 803d1e0: b580 push {r7, lr} + 803d1e2: b082 sub sp, #8 + 803d1e4: af00 add r7, sp, #0 #ifndef LWIP_SKIP_CONST_CHECK int a = 0; - 803d1a6: 2300 movs r3, #0 - 803d1a8: 607b str r3, [r7, #4] + 803d1e6: 2300 movs r3, #0 + 803d1e8: 607b str r3, [r7, #4] /* Modules initialization */ stats_init(); #if !NO_SYS sys_init(); #endif /* !NO_SYS */ mem_init(); - 803d1aa: f000 f8d5 bl 803d358 + 803d1ea: f000 f8d5 bl 803d398 memp_init(); - 803d1ae: f000 fbd7 bl 803d960 + 803d1ee: f000 fbd7 bl 803d9a0 pbuf_init(); netif_init(); - 803d1b2: f000 fcd5 bl 803db60 + 803d1f2: f000 fcd5 bl 803dba0 #endif /* LWIP_IPV4 */ #if LWIP_RAW raw_init(); #endif /* LWIP_RAW */ #if LWIP_UDP udp_init(); - 803d1b6: f007 fd69 bl 8044c8c + 803d1f6: f007 fd69 bl 8044ccc #endif /* LWIP_UDP */ #if LWIP_TCP tcp_init(); - 803d1ba: f001 fe69 bl 803ee90 + 803d1fa: f001 fe69 bl 803eed0 #if PPP_SUPPORT ppp_init(); #endif #if LWIP_TIMERS sys_timeouts_init(); - 803d1be: f007 fcdb bl 8044b78 + 803d1fe: f007 fcdb bl 8044bb8 #endif /* LWIP_TIMERS */ } - 803d1c2: bf00 nop - 803d1c4: 3708 adds r7, #8 - 803d1c6: 46bd mov sp, r7 - 803d1c8: bd80 pop {r7, pc} + 803d202: bf00 nop + 803d204: 3708 adds r7, #8 + 803d206: 46bd mov sp, r7 + 803d208: bd80 pop {r7, pc} ... -0803d1cc : +0803d20c : #define mem_overflow_check_element(mem) #endif /* MEM_OVERFLOW_CHECK */ static struct mem * ptr_to_mem(mem_size_t ptr) { - 803d1cc: b480 push {r7} - 803d1ce: b083 sub sp, #12 - 803d1d0: af00 add r7, sp, #0 - 803d1d2: 4603 mov r3, r0 - 803d1d4: 80fb strh r3, [r7, #6] + 803d20c: b480 push {r7} + 803d20e: b083 sub sp, #12 + 803d210: af00 add r7, sp, #0 + 803d212: 4603 mov r3, r0 + 803d214: 80fb strh r3, [r7, #6] return (struct mem *)(void *)&ram[ptr]; - 803d1d6: 4b05 ldr r3, [pc, #20] ; (803d1ec ) - 803d1d8: 681a ldr r2, [r3, #0] - 803d1da: 88fb ldrh r3, [r7, #6] - 803d1dc: 4413 add r3, r2 + 803d216: 4b05 ldr r3, [pc, #20] ; (803d22c ) + 803d218: 681a ldr r2, [r3, #0] + 803d21a: 88fb ldrh r3, [r7, #6] + 803d21c: 4413 add r3, r2 } - 803d1de: 4618 mov r0, r3 - 803d1e0: 370c adds r7, #12 - 803d1e2: 46bd mov sp, r7 - 803d1e4: f85d 7b04 ldr.w r7, [sp], #4 - 803d1e8: 4770 bx lr - 803d1ea: bf00 nop - 803d1ec: 2400bb64 .word 0x2400bb64 + 803d21e: 4618 mov r0, r3 + 803d220: 370c adds r7, #12 + 803d222: 46bd mov sp, r7 + 803d224: f85d 7b04 ldr.w r7, [sp], #4 + 803d228: 4770 bx lr + 803d22a: bf00 nop + 803d22c: 2400bb64 .word 0x2400bb64 -0803d1f0 : +0803d230 : static mem_size_t mem_to_ptr(void *mem) { - 803d1f0: b480 push {r7} - 803d1f2: b083 sub sp, #12 - 803d1f4: af00 add r7, sp, #0 - 803d1f6: 6078 str r0, [r7, #4] + 803d230: b480 push {r7} + 803d232: b083 sub sp, #12 + 803d234: af00 add r7, sp, #0 + 803d236: 6078 str r0, [r7, #4] return (mem_size_t)((u8_t *)mem - ram); - 803d1f8: 4b05 ldr r3, [pc, #20] ; (803d210 ) - 803d1fa: 681b ldr r3, [r3, #0] - 803d1fc: 687a ldr r2, [r7, #4] - 803d1fe: 1ad3 subs r3, r2, r3 - 803d200: b29b uxth r3, r3 -} - 803d202: 4618 mov r0, r3 - 803d204: 370c adds r7, #12 - 803d206: 46bd mov sp, r7 - 803d208: f85d 7b04 ldr.w r7, [sp], #4 - 803d20c: 4770 bx lr - 803d20e: bf00 nop - 803d210: 2400bb64 .word 0x2400bb64 - -0803d214 : + 803d238: 4b05 ldr r3, [pc, #20] ; (803d250 ) + 803d23a: 681b ldr r3, [r3, #0] + 803d23c: 687a ldr r2, [r7, #4] + 803d23e: 1ad3 subs r3, r2, r3 + 803d240: b29b uxth r3, r3 +} + 803d242: 4618 mov r0, r3 + 803d244: 370c adds r7, #12 + 803d246: 46bd mov sp, r7 + 803d248: f85d 7b04 ldr.w r7, [sp], #4 + 803d24c: 4770 bx lr + 803d24e: bf00 nop + 803d250: 2400bb64 .word 0x2400bb64 + +0803d254 : * This assumes access to the heap is protected by the calling function * already. */ static void plug_holes(struct mem *mem) { - 803d214: b590 push {r4, r7, lr} - 803d216: b085 sub sp, #20 - 803d218: af00 add r7, sp, #0 - 803d21a: 6078 str r0, [r7, #4] + 803d254: b590 push {r4, r7, lr} + 803d256: b085 sub sp, #20 + 803d258: af00 add r7, sp, #0 + 803d25a: 6078 str r0, [r7, #4] struct mem *nmem; struct mem *pmem; LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram); - 803d21c: 4b45 ldr r3, [pc, #276] ; (803d334 ) - 803d21e: 681b ldr r3, [r3, #0] - 803d220: 687a ldr r2, [r7, #4] - 803d222: 429a cmp r2, r3 - 803d224: d206 bcs.n 803d234 - 803d226: 4b44 ldr r3, [pc, #272] ; (803d338 ) - 803d228: f240 12df movw r2, #479 ; 0x1df - 803d22c: 4943 ldr r1, [pc, #268] ; (803d33c ) - 803d22e: 4844 ldr r0, [pc, #272] ; (803d340 ) - 803d230: f00a feb8 bl 8047fa4 + 803d25c: 4b45 ldr r3, [pc, #276] ; (803d374 ) + 803d25e: 681b ldr r3, [r3, #0] + 803d260: 687a ldr r2, [r7, #4] + 803d262: 429a cmp r2, r3 + 803d264: d206 bcs.n 803d274 + 803d266: 4b44 ldr r3, [pc, #272] ; (803d378 ) + 803d268: f240 12df movw r2, #479 ; 0x1df + 803d26c: 4943 ldr r1, [pc, #268] ; (803d37c ) + 803d26e: 4844 ldr r0, [pc, #272] ; (803d380 ) + 803d270: f00a feb8 bl 8047fe4 LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end); - 803d234: 4b43 ldr r3, [pc, #268] ; (803d344 ) - 803d236: 681b ldr r3, [r3, #0] - 803d238: 687a ldr r2, [r7, #4] - 803d23a: 429a cmp r2, r3 - 803d23c: d306 bcc.n 803d24c - 803d23e: 4b3e ldr r3, [pc, #248] ; (803d338 ) - 803d240: f44f 72f0 mov.w r2, #480 ; 0x1e0 - 803d244: 4940 ldr r1, [pc, #256] ; (803d348 ) - 803d246: 483e ldr r0, [pc, #248] ; (803d340 ) - 803d248: f00a feac bl 8047fa4 + 803d274: 4b43 ldr r3, [pc, #268] ; (803d384 ) + 803d276: 681b ldr r3, [r3, #0] + 803d278: 687a ldr r2, [r7, #4] + 803d27a: 429a cmp r2, r3 + 803d27c: d306 bcc.n 803d28c + 803d27e: 4b3e ldr r3, [pc, #248] ; (803d378 ) + 803d280: f44f 72f0 mov.w r2, #480 ; 0x1e0 + 803d284: 4940 ldr r1, [pc, #256] ; (803d388 ) + 803d286: 483e ldr r0, [pc, #248] ; (803d380 ) + 803d288: f00a feac bl 8047fe4 LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0); - 803d24c: 687b ldr r3, [r7, #4] - 803d24e: 791b ldrb r3, [r3, #4] - 803d250: 2b00 cmp r3, #0 - 803d252: d006 beq.n 803d262 - 803d254: 4b38 ldr r3, [pc, #224] ; (803d338 ) - 803d256: f240 12e1 movw r2, #481 ; 0x1e1 - 803d25a: 493c ldr r1, [pc, #240] ; (803d34c ) - 803d25c: 4838 ldr r0, [pc, #224] ; (803d340 ) - 803d25e: f00a fea1 bl 8047fa4 + 803d28c: 687b ldr r3, [r7, #4] + 803d28e: 791b ldrb r3, [r3, #4] + 803d290: 2b00 cmp r3, #0 + 803d292: d006 beq.n 803d2a2 + 803d294: 4b38 ldr r3, [pc, #224] ; (803d378 ) + 803d296: f240 12e1 movw r2, #481 ; 0x1e1 + 803d29a: 493c ldr r1, [pc, #240] ; (803d38c ) + 803d29c: 4838 ldr r0, [pc, #224] ; (803d380 ) + 803d29e: f00a fea1 bl 8047fe4 /* plug hole forward */ LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED); - 803d262: 687b ldr r3, [r7, #4] - 803d264: 881b ldrh r3, [r3, #0] - 803d266: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d26a: d906 bls.n 803d27a - 803d26c: 4b32 ldr r3, [pc, #200] ; (803d338 ) - 803d26e: f44f 72f2 mov.w r2, #484 ; 0x1e4 - 803d272: 4937 ldr r1, [pc, #220] ; (803d350 ) - 803d274: 4832 ldr r0, [pc, #200] ; (803d340 ) - 803d276: f00a fe95 bl 8047fa4 + 803d2a2: 687b ldr r3, [r7, #4] + 803d2a4: 881b ldrh r3, [r3, #0] + 803d2a6: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d2aa: d906 bls.n 803d2ba + 803d2ac: 4b32 ldr r3, [pc, #200] ; (803d378 ) + 803d2ae: f44f 72f2 mov.w r2, #484 ; 0x1e4 + 803d2b2: 4937 ldr r1, [pc, #220] ; (803d390 ) + 803d2b4: 4832 ldr r0, [pc, #200] ; (803d380 ) + 803d2b6: f00a fe95 bl 8047fe4 nmem = ptr_to_mem(mem->next); - 803d27a: 687b ldr r3, [r7, #4] - 803d27c: 881b ldrh r3, [r3, #0] - 803d27e: 4618 mov r0, r3 - 803d280: f7ff ffa4 bl 803d1cc - 803d284: 60f8 str r0, [r7, #12] + 803d2ba: 687b ldr r3, [r7, #4] + 803d2bc: 881b ldrh r3, [r3, #0] + 803d2be: 4618 mov r0, r3 + 803d2c0: f7ff ffa4 bl 803d20c + 803d2c4: 60f8 str r0, [r7, #12] if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { - 803d286: 687a ldr r2, [r7, #4] - 803d288: 68fb ldr r3, [r7, #12] - 803d28a: 429a cmp r2, r3 - 803d28c: d024 beq.n 803d2d8 - 803d28e: 68fb ldr r3, [r7, #12] - 803d290: 791b ldrb r3, [r3, #4] - 803d292: 2b00 cmp r3, #0 - 803d294: d120 bne.n 803d2d8 - 803d296: 4b2b ldr r3, [pc, #172] ; (803d344 ) - 803d298: 681b ldr r3, [r3, #0] - 803d29a: 68fa ldr r2, [r7, #12] - 803d29c: 429a cmp r2, r3 - 803d29e: d01b beq.n 803d2d8 + 803d2c6: 687a ldr r2, [r7, #4] + 803d2c8: 68fb ldr r3, [r7, #12] + 803d2ca: 429a cmp r2, r3 + 803d2cc: d024 beq.n 803d318 + 803d2ce: 68fb ldr r3, [r7, #12] + 803d2d0: 791b ldrb r3, [r3, #4] + 803d2d2: 2b00 cmp r3, #0 + 803d2d4: d120 bne.n 803d318 + 803d2d6: 4b2b ldr r3, [pc, #172] ; (803d384 ) + 803d2d8: 681b ldr r3, [r3, #0] + 803d2da: 68fa ldr r2, [r7, #12] + 803d2dc: 429a cmp r2, r3 + 803d2de: d01b beq.n 803d318 /* if mem->next is unused and not end of ram, combine mem and mem->next */ if (lfree == nmem) { - 803d2a0: 4b2c ldr r3, [pc, #176] ; (803d354 ) - 803d2a2: 681b ldr r3, [r3, #0] - 803d2a4: 68fa ldr r2, [r7, #12] - 803d2a6: 429a cmp r2, r3 - 803d2a8: d102 bne.n 803d2b0 + 803d2e0: 4b2c ldr r3, [pc, #176] ; (803d394 ) + 803d2e2: 681b ldr r3, [r3, #0] + 803d2e4: 68fa ldr r2, [r7, #12] + 803d2e6: 429a cmp r2, r3 + 803d2e8: d102 bne.n 803d2f0 lfree = mem; - 803d2aa: 4a2a ldr r2, [pc, #168] ; (803d354 ) - 803d2ac: 687b ldr r3, [r7, #4] - 803d2ae: 6013 str r3, [r2, #0] + 803d2ea: 4a2a ldr r2, [pc, #168] ; (803d394 ) + 803d2ec: 687b ldr r3, [r7, #4] + 803d2ee: 6013 str r3, [r2, #0] } mem->next = nmem->next; - 803d2b0: 68fb ldr r3, [r7, #12] - 803d2b2: 881a ldrh r2, [r3, #0] - 803d2b4: 687b ldr r3, [r7, #4] - 803d2b6: 801a strh r2, [r3, #0] + 803d2f0: 68fb ldr r3, [r7, #12] + 803d2f2: 881a ldrh r2, [r3, #0] + 803d2f4: 687b ldr r3, [r7, #4] + 803d2f6: 801a strh r2, [r3, #0] if (nmem->next != MEM_SIZE_ALIGNED) { - 803d2b8: 68fb ldr r3, [r7, #12] - 803d2ba: 881b ldrh r3, [r3, #0] - 803d2bc: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d2c0: d00a beq.n 803d2d8 + 803d2f8: 68fb ldr r3, [r7, #12] + 803d2fa: 881b ldrh r3, [r3, #0] + 803d2fc: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d300: d00a beq.n 803d318 ptr_to_mem(nmem->next)->prev = mem_to_ptr(mem); - 803d2c2: 68fb ldr r3, [r7, #12] - 803d2c4: 881b ldrh r3, [r3, #0] - 803d2c6: 4618 mov r0, r3 - 803d2c8: f7ff ff80 bl 803d1cc - 803d2cc: 4604 mov r4, r0 - 803d2ce: 6878 ldr r0, [r7, #4] - 803d2d0: f7ff ff8e bl 803d1f0 - 803d2d4: 4603 mov r3, r0 - 803d2d6: 8063 strh r3, [r4, #2] + 803d302: 68fb ldr r3, [r7, #12] + 803d304: 881b ldrh r3, [r3, #0] + 803d306: 4618 mov r0, r3 + 803d308: f7ff ff80 bl 803d20c + 803d30c: 4604 mov r4, r0 + 803d30e: 6878 ldr r0, [r7, #4] + 803d310: f7ff ff8e bl 803d230 + 803d314: 4603 mov r3, r0 + 803d316: 8063 strh r3, [r4, #2] } } /* plug hole backward */ pmem = ptr_to_mem(mem->prev); - 803d2d8: 687b ldr r3, [r7, #4] - 803d2da: 885b ldrh r3, [r3, #2] - 803d2dc: 4618 mov r0, r3 - 803d2de: f7ff ff75 bl 803d1cc - 803d2e2: 60b8 str r0, [r7, #8] + 803d318: 687b ldr r3, [r7, #4] + 803d31a: 885b ldrh r3, [r3, #2] + 803d31c: 4618 mov r0, r3 + 803d31e: f7ff ff75 bl 803d20c + 803d322: 60b8 str r0, [r7, #8] if (pmem != mem && pmem->used == 0) { - 803d2e4: 68ba ldr r2, [r7, #8] - 803d2e6: 687b ldr r3, [r7, #4] - 803d2e8: 429a cmp r2, r3 - 803d2ea: d01f beq.n 803d32c - 803d2ec: 68bb ldr r3, [r7, #8] - 803d2ee: 791b ldrb r3, [r3, #4] - 803d2f0: 2b00 cmp r3, #0 - 803d2f2: d11b bne.n 803d32c + 803d324: 68ba ldr r2, [r7, #8] + 803d326: 687b ldr r3, [r7, #4] + 803d328: 429a cmp r2, r3 + 803d32a: d01f beq.n 803d36c + 803d32c: 68bb ldr r3, [r7, #8] + 803d32e: 791b ldrb r3, [r3, #4] + 803d330: 2b00 cmp r3, #0 + 803d332: d11b bne.n 803d36c /* if mem->prev is unused, combine mem and mem->prev */ if (lfree == mem) { - 803d2f4: 4b17 ldr r3, [pc, #92] ; (803d354 ) - 803d2f6: 681b ldr r3, [r3, #0] - 803d2f8: 687a ldr r2, [r7, #4] - 803d2fa: 429a cmp r2, r3 - 803d2fc: d102 bne.n 803d304 + 803d334: 4b17 ldr r3, [pc, #92] ; (803d394 ) + 803d336: 681b ldr r3, [r3, #0] + 803d338: 687a ldr r2, [r7, #4] + 803d33a: 429a cmp r2, r3 + 803d33c: d102 bne.n 803d344 lfree = pmem; - 803d2fe: 4a15 ldr r2, [pc, #84] ; (803d354 ) - 803d300: 68bb ldr r3, [r7, #8] - 803d302: 6013 str r3, [r2, #0] + 803d33e: 4a15 ldr r2, [pc, #84] ; (803d394 ) + 803d340: 68bb ldr r3, [r7, #8] + 803d342: 6013 str r3, [r2, #0] } pmem->next = mem->next; - 803d304: 687b ldr r3, [r7, #4] - 803d306: 881a ldrh r2, [r3, #0] - 803d308: 68bb ldr r3, [r7, #8] - 803d30a: 801a strh r2, [r3, #0] + 803d344: 687b ldr r3, [r7, #4] + 803d346: 881a ldrh r2, [r3, #0] + 803d348: 68bb ldr r3, [r7, #8] + 803d34a: 801a strh r2, [r3, #0] if (mem->next != MEM_SIZE_ALIGNED) { - 803d30c: 687b ldr r3, [r7, #4] - 803d30e: 881b ldrh r3, [r3, #0] - 803d310: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d314: d00a beq.n 803d32c + 803d34c: 687b ldr r3, [r7, #4] + 803d34e: 881b ldrh r3, [r3, #0] + 803d350: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d354: d00a beq.n 803d36c ptr_to_mem(mem->next)->prev = mem_to_ptr(pmem); - 803d316: 687b ldr r3, [r7, #4] - 803d318: 881b ldrh r3, [r3, #0] - 803d31a: 4618 mov r0, r3 - 803d31c: f7ff ff56 bl 803d1cc - 803d320: 4604 mov r4, r0 - 803d322: 68b8 ldr r0, [r7, #8] - 803d324: f7ff ff64 bl 803d1f0 - 803d328: 4603 mov r3, r0 - 803d32a: 8063 strh r3, [r4, #2] - } - } -} - 803d32c: bf00 nop - 803d32e: 3714 adds r7, #20 - 803d330: 46bd mov sp, r7 - 803d332: bd90 pop {r4, r7, pc} - 803d334: 2400bb64 .word 0x2400bb64 - 803d338: 0804a1b8 .word 0x0804a1b8 - 803d33c: 0804a1e8 .word 0x0804a1e8 - 803d340: 0804a200 .word 0x0804a200 - 803d344: 2400bb68 .word 0x2400bb68 - 803d348: 0804a228 .word 0x0804a228 - 803d34c: 0804a244 .word 0x0804a244 - 803d350: 0804a260 .word 0x0804a260 - 803d354: 2400bb6c .word 0x2400bb6c - -0803d358 : + 803d356: 687b ldr r3, [r7, #4] + 803d358: 881b ldrh r3, [r3, #0] + 803d35a: 4618 mov r0, r3 + 803d35c: f7ff ff56 bl 803d20c + 803d360: 4604 mov r4, r0 + 803d362: 68b8 ldr r0, [r7, #8] + 803d364: f7ff ff64 bl 803d230 + 803d368: 4603 mov r3, r0 + 803d36a: 8063 strh r3, [r4, #2] + } + } +} + 803d36c: bf00 nop + 803d36e: 3714 adds r7, #20 + 803d370: 46bd mov sp, r7 + 803d372: bd90 pop {r4, r7, pc} + 803d374: 2400bb64 .word 0x2400bb64 + 803d378: 0804a1f8 .word 0x0804a1f8 + 803d37c: 0804a228 .word 0x0804a228 + 803d380: 0804a240 .word 0x0804a240 + 803d384: 2400bb68 .word 0x2400bb68 + 803d388: 0804a268 .word 0x0804a268 + 803d38c: 0804a284 .word 0x0804a284 + 803d390: 0804a2a0 .word 0x0804a2a0 + 803d394: 2400bb6c .word 0x2400bb6c + +0803d398 : /** * Zero the heap and initialize start, end and lowest-free */ void mem_init(void) { - 803d358: b580 push {r7, lr} - 803d35a: b082 sub sp, #8 - 803d35c: af00 add r7, sp, #0 + 803d398: b580 push {r7, lr} + 803d39a: b082 sub sp, #8 + 803d39c: af00 add r7, sp, #0 LWIP_ASSERT("Sanity check alignment", (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT - 1)) == 0); /* align the heap */ ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER); - 803d35e: 4b16 ldr r3, [pc, #88] ; (803d3b8 ) - 803d360: 4a16 ldr r2, [pc, #88] ; (803d3bc ) - 803d362: 601a str r2, [r3, #0] + 803d39e: 4b16 ldr r3, [pc, #88] ; (803d3f8 ) + 803d3a0: 4a16 ldr r2, [pc, #88] ; (803d3fc ) + 803d3a2: 601a str r2, [r3, #0] /* initialize the start of the heap */ mem = (struct mem *)(void *)ram; - 803d364: 4b14 ldr r3, [pc, #80] ; (803d3b8 ) - 803d366: 681b ldr r3, [r3, #0] - 803d368: 607b str r3, [r7, #4] + 803d3a4: 4b14 ldr r3, [pc, #80] ; (803d3f8 ) + 803d3a6: 681b ldr r3, [r3, #0] + 803d3a8: 607b str r3, [r7, #4] mem->next = MEM_SIZE_ALIGNED; - 803d36a: 687b ldr r3, [r7, #4] - 803d36c: f44f 62c8 mov.w r2, #1600 ; 0x640 - 803d370: 801a strh r2, [r3, #0] + 803d3aa: 687b ldr r3, [r7, #4] + 803d3ac: f44f 62c8 mov.w r2, #1600 ; 0x640 + 803d3b0: 801a strh r2, [r3, #0] mem->prev = 0; - 803d372: 687b ldr r3, [r7, #4] - 803d374: 2200 movs r2, #0 - 803d376: 805a strh r2, [r3, #2] + 803d3b2: 687b ldr r3, [r7, #4] + 803d3b4: 2200 movs r2, #0 + 803d3b6: 805a strh r2, [r3, #2] mem->used = 0; - 803d378: 687b ldr r3, [r7, #4] - 803d37a: 2200 movs r2, #0 - 803d37c: 711a strb r2, [r3, #4] + 803d3b8: 687b ldr r3, [r7, #4] + 803d3ba: 2200 movs r2, #0 + 803d3bc: 711a strb r2, [r3, #4] /* initialize the end of the heap */ ram_end = ptr_to_mem(MEM_SIZE_ALIGNED); - 803d37e: f44f 60c8 mov.w r0, #1600 ; 0x640 - 803d382: f7ff ff23 bl 803d1cc - 803d386: 4603 mov r3, r0 - 803d388: 4a0d ldr r2, [pc, #52] ; (803d3c0 ) - 803d38a: 6013 str r3, [r2, #0] + 803d3be: f44f 60c8 mov.w r0, #1600 ; 0x640 + 803d3c2: f7ff ff23 bl 803d20c + 803d3c6: 4603 mov r3, r0 + 803d3c8: 4a0d ldr r2, [pc, #52] ; (803d400 ) + 803d3ca: 6013 str r3, [r2, #0] ram_end->used = 1; - 803d38c: 4b0c ldr r3, [pc, #48] ; (803d3c0 ) - 803d38e: 681b ldr r3, [r3, #0] - 803d390: 2201 movs r2, #1 - 803d392: 711a strb r2, [r3, #4] + 803d3cc: 4b0c ldr r3, [pc, #48] ; (803d400 ) + 803d3ce: 681b ldr r3, [r3, #0] + 803d3d0: 2201 movs r2, #1 + 803d3d2: 711a strb r2, [r3, #4] ram_end->next = MEM_SIZE_ALIGNED; - 803d394: 4b0a ldr r3, [pc, #40] ; (803d3c0 ) - 803d396: 681b ldr r3, [r3, #0] - 803d398: f44f 62c8 mov.w r2, #1600 ; 0x640 - 803d39c: 801a strh r2, [r3, #0] + 803d3d4: 4b0a ldr r3, [pc, #40] ; (803d400 ) + 803d3d6: 681b ldr r3, [r3, #0] + 803d3d8: f44f 62c8 mov.w r2, #1600 ; 0x640 + 803d3dc: 801a strh r2, [r3, #0] ram_end->prev = MEM_SIZE_ALIGNED; - 803d39e: 4b08 ldr r3, [pc, #32] ; (803d3c0 ) - 803d3a0: 681b ldr r3, [r3, #0] - 803d3a2: f44f 62c8 mov.w r2, #1600 ; 0x640 - 803d3a6: 805a strh r2, [r3, #2] + 803d3de: 4b08 ldr r3, [pc, #32] ; (803d400 ) + 803d3e0: 681b ldr r3, [r3, #0] + 803d3e2: f44f 62c8 mov.w r2, #1600 ; 0x640 + 803d3e6: 805a strh r2, [r3, #2] MEM_SANITY(); /* initialize the lowest-free pointer to the start of the heap */ lfree = (struct mem *)(void *)ram; - 803d3a8: 4b03 ldr r3, [pc, #12] ; (803d3b8 ) - 803d3aa: 681b ldr r3, [r3, #0] - 803d3ac: 4a05 ldr r2, [pc, #20] ; (803d3c4 ) - 803d3ae: 6013 str r3, [r2, #0] + 803d3e8: 4b03 ldr r3, [pc, #12] ; (803d3f8 ) + 803d3ea: 681b ldr r3, [r3, #0] + 803d3ec: 4a05 ldr r2, [pc, #20] ; (803d404 ) + 803d3ee: 6013 str r3, [r2, #0] MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED); if (sys_mutex_new(&mem_mutex) != ERR_OK) { LWIP_ASSERT("failed to create mem_mutex", 0); } } - 803d3b0: bf00 nop - 803d3b2: 3708 adds r7, #8 - 803d3b4: 46bd mov sp, r7 - 803d3b6: bd80 pop {r7, pc} - 803d3b8: 2400bb64 .word 0x2400bb64 - 803d3bc: 30044000 .word 0x30044000 - 803d3c0: 2400bb68 .word 0x2400bb68 - 803d3c4: 2400bb6c .word 0x2400bb6c + 803d3f0: bf00 nop + 803d3f2: 3708 adds r7, #8 + 803d3f4: 46bd mov sp, r7 + 803d3f6: bd80 pop {r7, pc} + 803d3f8: 2400bb64 .word 0x2400bb64 + 803d3fc: 30044000 .word 0x30044000 + 803d400: 2400bb68 .word 0x2400bb68 + 803d404: 2400bb6c .word 0x2400bb6c -0803d3c8 : +0803d408 : /* Check if a struct mem is correctly linked. * If not, double-free is a possible reason. */ static int mem_link_valid(struct mem *mem) { - 803d3c8: b580 push {r7, lr} - 803d3ca: b086 sub sp, #24 - 803d3cc: af00 add r7, sp, #0 - 803d3ce: 6078 str r0, [r7, #4] + 803d408: b580 push {r7, lr} + 803d40a: b086 sub sp, #24 + 803d40c: af00 add r7, sp, #0 + 803d40e: 6078 str r0, [r7, #4] struct mem *nmem, *pmem; mem_size_t rmem_idx; rmem_idx = mem_to_ptr(mem); - 803d3d0: 6878 ldr r0, [r7, #4] - 803d3d2: f7ff ff0d bl 803d1f0 - 803d3d6: 4603 mov r3, r0 - 803d3d8: 82fb strh r3, [r7, #22] + 803d410: 6878 ldr r0, [r7, #4] + 803d412: f7ff ff0d bl 803d230 + 803d416: 4603 mov r3, r0 + 803d418: 82fb strh r3, [r7, #22] nmem = ptr_to_mem(mem->next); - 803d3da: 687b ldr r3, [r7, #4] - 803d3dc: 881b ldrh r3, [r3, #0] - 803d3de: 4618 mov r0, r3 - 803d3e0: f7ff fef4 bl 803d1cc - 803d3e4: 6138 str r0, [r7, #16] + 803d41a: 687b ldr r3, [r7, #4] + 803d41c: 881b ldrh r3, [r3, #0] + 803d41e: 4618 mov r0, r3 + 803d420: f7ff fef4 bl 803d20c + 803d424: 6138 str r0, [r7, #16] pmem = ptr_to_mem(mem->prev); - 803d3e6: 687b ldr r3, [r7, #4] - 803d3e8: 885b ldrh r3, [r3, #2] - 803d3ea: 4618 mov r0, r3 - 803d3ec: f7ff feee bl 803d1cc - 803d3f0: 60f8 str r0, [r7, #12] + 803d426: 687b ldr r3, [r7, #4] + 803d428: 885b ldrh r3, [r3, #2] + 803d42a: 4618 mov r0, r3 + 803d42c: f7ff feee bl 803d20c + 803d430: 60f8 str r0, [r7, #12] if ((mem->next > MEM_SIZE_ALIGNED) || (mem->prev > MEM_SIZE_ALIGNED) || - 803d3f2: 687b ldr r3, [r7, #4] - 803d3f4: 881b ldrh r3, [r3, #0] - 803d3f6: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d3fa: d818 bhi.n 803d42e - 803d3fc: 687b ldr r3, [r7, #4] - 803d3fe: 885b ldrh r3, [r3, #2] - 803d400: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d404: d813 bhi.n 803d42e + 803d432: 687b ldr r3, [r7, #4] + 803d434: 881b ldrh r3, [r3, #0] + 803d436: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d43a: d818 bhi.n 803d46e + 803d43c: 687b ldr r3, [r7, #4] + 803d43e: 885b ldrh r3, [r3, #2] + 803d440: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d444: d813 bhi.n 803d46e ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 803d406: 687b ldr r3, [r7, #4] - 803d408: 885b ldrh r3, [r3, #2] + 803d446: 687b ldr r3, [r7, #4] + 803d448: 885b ldrh r3, [r3, #2] if ((mem->next > MEM_SIZE_ALIGNED) || (mem->prev > MEM_SIZE_ALIGNED) || - 803d40a: 8afa ldrh r2, [r7, #22] - 803d40c: 429a cmp r2, r3 - 803d40e: d004 beq.n 803d41a + 803d44a: 8afa ldrh r2, [r7, #22] + 803d44c: 429a cmp r2, r3 + 803d44e: d004 beq.n 803d45a ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 803d410: 68fb ldr r3, [r7, #12] - 803d412: 881b ldrh r3, [r3, #0] - 803d414: 8afa ldrh r2, [r7, #22] - 803d416: 429a cmp r2, r3 - 803d418: d109 bne.n 803d42e + 803d450: 68fb ldr r3, [r7, #12] + 803d452: 881b ldrh r3, [r3, #0] + 803d454: 8afa ldrh r2, [r7, #22] + 803d456: 429a cmp r2, r3 + 803d458: d109 bne.n 803d46e ((nmem != ram_end) && (nmem->prev != rmem_idx))) { - 803d41a: 4b08 ldr r3, [pc, #32] ; (803d43c ) - 803d41c: 681b ldr r3, [r3, #0] + 803d45a: 4b08 ldr r3, [pc, #32] ; (803d47c ) + 803d45c: 681b ldr r3, [r3, #0] ((mem->prev != rmem_idx) && (pmem->next != rmem_idx)) || - 803d41e: 693a ldr r2, [r7, #16] - 803d420: 429a cmp r2, r3 - 803d422: d006 beq.n 803d432 + 803d45e: 693a ldr r2, [r7, #16] + 803d460: 429a cmp r2, r3 + 803d462: d006 beq.n 803d472 ((nmem != ram_end) && (nmem->prev != rmem_idx))) { - 803d424: 693b ldr r3, [r7, #16] - 803d426: 885b ldrh r3, [r3, #2] - 803d428: 8afa ldrh r2, [r7, #22] - 803d42a: 429a cmp r2, r3 - 803d42c: d001 beq.n 803d432 + 803d464: 693b ldr r3, [r7, #16] + 803d466: 885b ldrh r3, [r3, #2] + 803d468: 8afa ldrh r2, [r7, #22] + 803d46a: 429a cmp r2, r3 + 803d46c: d001 beq.n 803d472 return 0; - 803d42e: 2300 movs r3, #0 - 803d430: e000 b.n 803d434 + 803d46e: 2300 movs r3, #0 + 803d470: e000 b.n 803d474 } return 1; - 803d432: 2301 movs r3, #1 + 803d472: 2301 movs r3, #1 } - 803d434: 4618 mov r0, r3 - 803d436: 3718 adds r7, #24 - 803d438: 46bd mov sp, r7 - 803d43a: bd80 pop {r7, pc} - 803d43c: 2400bb68 .word 0x2400bb68 + 803d474: 4618 mov r0, r3 + 803d476: 3718 adds r7, #24 + 803d478: 46bd mov sp, r7 + 803d47a: bd80 pop {r7, pc} + 803d47c: 2400bb68 .word 0x2400bb68 -0803d440 : +0803d480 : * @param rmem is the data portion of a struct mem as returned by a previous * call to mem_malloc() */ void mem_free(void *rmem) { - 803d440: b580 push {r7, lr} - 803d442: b084 sub sp, #16 - 803d444: af00 add r7, sp, #0 - 803d446: 6078 str r0, [r7, #4] + 803d480: b580 push {r7, lr} + 803d482: b084 sub sp, #16 + 803d484: af00 add r7, sp, #0 + 803d486: 6078 str r0, [r7, #4] struct mem *mem; LWIP_MEM_FREE_DECL_PROTECT(); if (rmem == NULL) { - 803d448: 687b ldr r3, [r7, #4] - 803d44a: 2b00 cmp r3, #0 - 803d44c: d04c beq.n 803d4e8 + 803d488: 687b ldr r3, [r7, #4] + 803d48a: 2b00 cmp r3, #0 + 803d48c: d04c beq.n 803d528 LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n")); return; } if ((((mem_ptr_t)rmem) & (MEM_ALIGNMENT - 1)) != 0) { - 803d44e: 687b ldr r3, [r7, #4] - 803d450: f003 0303 and.w r3, r3, #3 - 803d454: 2b00 cmp r3, #0 - 803d456: d007 beq.n 803d468 + 803d48e: 687b ldr r3, [r7, #4] + 803d490: f003 0303 and.w r3, r3, #3 + 803d494: 2b00 cmp r3, #0 + 803d496: d007 beq.n 803d4a8 LWIP_MEM_ILLEGAL_FREE("mem_free: sanity check alignment"); - 803d458: 4b25 ldr r3, [pc, #148] ; (803d4f0 ) - 803d45a: f240 2273 movw r2, #627 ; 0x273 - 803d45e: 4925 ldr r1, [pc, #148] ; (803d4f4 ) - 803d460: 4825 ldr r0, [pc, #148] ; (803d4f8 ) - 803d462: f00a fd9f bl 8047fa4 + 803d498: 4b25 ldr r3, [pc, #148] ; (803d530 ) + 803d49a: f240 2273 movw r2, #627 ; 0x273 + 803d49e: 4925 ldr r1, [pc, #148] ; (803d534 ) + 803d4a0: 4825 ldr r0, [pc, #148] ; (803d538 ) + 803d4a2: f00a fd9f bl 8047fe4 LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: sanity check alignment\n")); /* protect mem stats from concurrent access */ MEM_STATS_INC_LOCKED(illegal); return; - 803d466: e040 b.n 803d4ea + 803d4a6: e040 b.n 803d52a } /* Get the corresponding struct mem: */ /* cast through void* to get rid of alignment warnings */ mem = (struct mem *)(void *)((u8_t *)rmem - (SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET)); - 803d468: 687b ldr r3, [r7, #4] - 803d46a: 3b08 subs r3, #8 - 803d46c: 60fb str r3, [r7, #12] + 803d4a8: 687b ldr r3, [r7, #4] + 803d4aa: 3b08 subs r3, #8 + 803d4ac: 60fb str r3, [r7, #12] if ((u8_t *)mem < ram || (u8_t *)rmem + MIN_SIZE_ALIGNED > (u8_t *)ram_end) { - 803d46e: 4b23 ldr r3, [pc, #140] ; (803d4fc ) - 803d470: 681b ldr r3, [r3, #0] - 803d472: 68fa ldr r2, [r7, #12] - 803d474: 429a cmp r2, r3 - 803d476: d306 bcc.n 803d486 - 803d478: 687b ldr r3, [r7, #4] - 803d47a: f103 020c add.w r2, r3, #12 - 803d47e: 4b20 ldr r3, [pc, #128] ; (803d500 ) - 803d480: 681b ldr r3, [r3, #0] - 803d482: 429a cmp r2, r3 - 803d484: d907 bls.n 803d496 + 803d4ae: 4b23 ldr r3, [pc, #140] ; (803d53c ) + 803d4b0: 681b ldr r3, [r3, #0] + 803d4b2: 68fa ldr r2, [r7, #12] + 803d4b4: 429a cmp r2, r3 + 803d4b6: d306 bcc.n 803d4c6 + 803d4b8: 687b ldr r3, [r7, #4] + 803d4ba: f103 020c add.w r2, r3, #12 + 803d4be: 4b20 ldr r3, [pc, #128] ; (803d540 ) + 803d4c0: 681b ldr r3, [r3, #0] + 803d4c2: 429a cmp r2, r3 + 803d4c4: d907 bls.n 803d4d6 LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory"); - 803d486: 4b1a ldr r3, [pc, #104] ; (803d4f0 ) - 803d488: f240 227f movw r2, #639 ; 0x27f - 803d48c: 491d ldr r1, [pc, #116] ; (803d504 ) - 803d48e: 481a ldr r0, [pc, #104] ; (803d4f8 ) - 803d490: f00a fd88 bl 8047fa4 + 803d4c6: 4b1a ldr r3, [pc, #104] ; (803d530 ) + 803d4c8: f240 227f movw r2, #639 ; 0x27f + 803d4cc: 491d ldr r1, [pc, #116] ; (803d544 ) + 803d4ce: 481a ldr r0, [pc, #104] ; (803d538 ) + 803d4d0: f00a fd88 bl 8047fe4 LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n")); /* protect mem stats from concurrent access */ MEM_STATS_INC_LOCKED(illegal); return; - 803d494: e029 b.n 803d4ea + 803d4d4: e029 b.n 803d52a mem_overflow_check_element(mem); #endif /* protect the heap from concurrent access */ LWIP_MEM_FREE_PROTECT(); /* mem has to be in a used state */ if (!mem->used) { - 803d496: 68fb ldr r3, [r7, #12] - 803d498: 791b ldrb r3, [r3, #4] - 803d49a: 2b00 cmp r3, #0 - 803d49c: d107 bne.n 803d4ae + 803d4d6: 68fb ldr r3, [r7, #12] + 803d4d8: 791b ldrb r3, [r3, #4] + 803d4da: 2b00 cmp r3, #0 + 803d4dc: d107 bne.n 803d4ee LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory: double free"); - 803d49e: 4b14 ldr r3, [pc, #80] ; (803d4f0 ) - 803d4a0: f44f 7223 mov.w r2, #652 ; 0x28c - 803d4a4: 4918 ldr r1, [pc, #96] ; (803d508 ) - 803d4a6: 4814 ldr r0, [pc, #80] ; (803d4f8 ) - 803d4a8: f00a fd7c bl 8047fa4 + 803d4de: 4b14 ldr r3, [pc, #80] ; (803d530 ) + 803d4e0: f44f 7223 mov.w r2, #652 ; 0x28c + 803d4e4: 4918 ldr r1, [pc, #96] ; (803d548 ) + 803d4e6: 4814 ldr r0, [pc, #80] ; (803d538 ) + 803d4e8: f00a fd7c bl 8047fe4 LWIP_MEM_FREE_UNPROTECT(); LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory: double free?\n")); /* protect mem stats from concurrent access */ MEM_STATS_INC_LOCKED(illegal); return; - 803d4ac: e01d b.n 803d4ea + 803d4ec: e01d b.n 803d52a } if (!mem_link_valid(mem)) { - 803d4ae: 68f8 ldr r0, [r7, #12] - 803d4b0: f7ff ff8a bl 803d3c8 - 803d4b4: 4603 mov r3, r0 - 803d4b6: 2b00 cmp r3, #0 - 803d4b8: d107 bne.n 803d4ca + 803d4ee: 68f8 ldr r0, [r7, #12] + 803d4f0: f7ff ff8a bl 803d408 + 803d4f4: 4603 mov r3, r0 + 803d4f6: 2b00 cmp r3, #0 + 803d4f8: d107 bne.n 803d50a LWIP_MEM_ILLEGAL_FREE("mem_free: illegal memory: non-linked: double free"); - 803d4ba: 4b0d ldr r3, [pc, #52] ; (803d4f0 ) - 803d4bc: f240 2295 movw r2, #661 ; 0x295 - 803d4c0: 4912 ldr r1, [pc, #72] ; (803d50c ) - 803d4c2: 480d ldr r0, [pc, #52] ; (803d4f8 ) - 803d4c4: f00a fd6e bl 8047fa4 + 803d4fa: 4b0d ldr r3, [pc, #52] ; (803d530 ) + 803d4fc: f240 2295 movw r2, #661 ; 0x295 + 803d500: 4912 ldr r1, [pc, #72] ; (803d54c ) + 803d502: 480d ldr r0, [pc, #52] ; (803d538 ) + 803d504: f00a fd6e bl 8047fe4 LWIP_MEM_FREE_UNPROTECT(); LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory: non-linked: double free?\n")); /* protect mem stats from concurrent access */ MEM_STATS_INC_LOCKED(illegal); return; - 803d4c8: e00f b.n 803d4ea + 803d508: e00f b.n 803d52a } /* mem is now unused. */ mem->used = 0; - 803d4ca: 68fb ldr r3, [r7, #12] - 803d4cc: 2200 movs r2, #0 - 803d4ce: 711a strb r2, [r3, #4] + 803d50a: 68fb ldr r3, [r7, #12] + 803d50c: 2200 movs r2, #0 + 803d50e: 711a strb r2, [r3, #4] if (mem < lfree) { - 803d4d0: 4b0f ldr r3, [pc, #60] ; (803d510 ) - 803d4d2: 681b ldr r3, [r3, #0] - 803d4d4: 68fa ldr r2, [r7, #12] - 803d4d6: 429a cmp r2, r3 - 803d4d8: d202 bcs.n 803d4e0 + 803d510: 4b0f ldr r3, [pc, #60] ; (803d550 ) + 803d512: 681b ldr r3, [r3, #0] + 803d514: 68fa ldr r2, [r7, #12] + 803d516: 429a cmp r2, r3 + 803d518: d202 bcs.n 803d520 /* the newly freed struct is now the lowest */ lfree = mem; - 803d4da: 4a0d ldr r2, [pc, #52] ; (803d510 ) - 803d4dc: 68fb ldr r3, [r7, #12] - 803d4de: 6013 str r3, [r2, #0] + 803d51a: 4a0d ldr r2, [pc, #52] ; (803d550 ) + 803d51c: 68fb ldr r3, [r7, #12] + 803d51e: 6013 str r3, [r2, #0] } MEM_STATS_DEC_USED(used, mem->next - (mem_size_t)(((u8_t *)mem - ram))); /* finally, see if prev or next are free also */ plug_holes(mem); - 803d4e0: 68f8 ldr r0, [r7, #12] - 803d4e2: f7ff fe97 bl 803d214 - 803d4e6: e000 b.n 803d4ea + 803d520: 68f8 ldr r0, [r7, #12] + 803d522: f7ff fe97 bl 803d254 + 803d526: e000 b.n 803d52a return; - 803d4e8: bf00 nop + 803d528: bf00 nop MEM_SANITY(); #if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT mem_free_count = 1; #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ LWIP_MEM_FREE_UNPROTECT(); } - 803d4ea: 3710 adds r7, #16 - 803d4ec: 46bd mov sp, r7 - 803d4ee: bd80 pop {r7, pc} - 803d4f0: 0804a1b8 .word 0x0804a1b8 - 803d4f4: 0804a28c .word 0x0804a28c - 803d4f8: 0804a200 .word 0x0804a200 - 803d4fc: 2400bb64 .word 0x2400bb64 - 803d500: 2400bb68 .word 0x2400bb68 - 803d504: 0804a2b0 .word 0x0804a2b0 - 803d508: 0804a2cc .word 0x0804a2cc - 803d50c: 0804a2f4 .word 0x0804a2f4 - 803d510: 2400bb6c .word 0x2400bb6c - -0803d514 : + 803d52a: 3710 adds r7, #16 + 803d52c: 46bd mov sp, r7 + 803d52e: bd80 pop {r7, pc} + 803d530: 0804a1f8 .word 0x0804a1f8 + 803d534: 0804a2cc .word 0x0804a2cc + 803d538: 0804a240 .word 0x0804a240 + 803d53c: 2400bb64 .word 0x2400bb64 + 803d540: 2400bb68 .word 0x2400bb68 + 803d544: 0804a2f0 .word 0x0804a2f0 + 803d548: 0804a30c .word 0x0804a30c + 803d54c: 0804a334 .word 0x0804a334 + 803d550: 2400bb6c .word 0x2400bb6c + +0803d554 : * or NULL if newsize is > old size, in which case rmem is NOT touched * or freed! */ void * mem_trim(void *rmem, mem_size_t new_size) { - 803d514: b580 push {r7, lr} - 803d516: b088 sub sp, #32 - 803d518: af00 add r7, sp, #0 - 803d51a: 6078 str r0, [r7, #4] - 803d51c: 460b mov r3, r1 - 803d51e: 807b strh r3, [r7, #2] + 803d554: b580 push {r7, lr} + 803d556: b088 sub sp, #32 + 803d558: af00 add r7, sp, #0 + 803d55a: 6078 str r0, [r7, #4] + 803d55c: 460b mov r3, r1 + 803d55e: 807b strh r3, [r7, #2] /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */ LWIP_MEM_FREE_DECL_PROTECT(); /* Expand the size of the allocated memory region so that we can adjust for alignment. */ newsize = (mem_size_t)LWIP_MEM_ALIGN_SIZE(new_size); - 803d520: 887b ldrh r3, [r7, #2] - 803d522: 3303 adds r3, #3 - 803d524: b29b uxth r3, r3 - 803d526: f023 0303 bic.w r3, r3, #3 - 803d52a: 83fb strh r3, [r7, #30] + 803d560: 887b ldrh r3, [r7, #2] + 803d562: 3303 adds r3, #3 + 803d564: b29b uxth r3, r3 + 803d566: f023 0303 bic.w r3, r3, #3 + 803d56a: 83fb strh r3, [r7, #30] if (newsize < MIN_SIZE_ALIGNED) { - 803d52c: 8bfb ldrh r3, [r7, #30] - 803d52e: 2b0b cmp r3, #11 - 803d530: d801 bhi.n 803d536 + 803d56c: 8bfb ldrh r3, [r7, #30] + 803d56e: 2b0b cmp r3, #11 + 803d570: d801 bhi.n 803d576 /* every data block must be at least MIN_SIZE_ALIGNED long */ newsize = MIN_SIZE_ALIGNED; - 803d532: 230c movs r3, #12 - 803d534: 83fb strh r3, [r7, #30] + 803d572: 230c movs r3, #12 + 803d574: 83fb strh r3, [r7, #30] } #if MEM_OVERFLOW_CHECK newsize += MEM_SANITY_REGION_BEFORE_ALIGNED + MEM_SANITY_REGION_AFTER_ALIGNED; #endif if ((newsize > MEM_SIZE_ALIGNED) || (newsize < new_size)) { - 803d536: 8bfb ldrh r3, [r7, #30] - 803d538: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d53c: d803 bhi.n 803d546 - 803d53e: 8bfa ldrh r2, [r7, #30] - 803d540: 887b ldrh r3, [r7, #2] - 803d542: 429a cmp r2, r3 - 803d544: d201 bcs.n 803d54a + 803d576: 8bfb ldrh r3, [r7, #30] + 803d578: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d57c: d803 bhi.n 803d586 + 803d57e: 8bfa ldrh r2, [r7, #30] + 803d580: 887b ldrh r3, [r7, #2] + 803d582: 429a cmp r2, r3 + 803d584: d201 bcs.n 803d58a return NULL; - 803d546: 2300 movs r3, #0 - 803d548: e0cc b.n 803d6e4 + 803d586: 2300 movs r3, #0 + 803d588: e0cc b.n 803d724 } LWIP_ASSERT("mem_trim: legal memory", (u8_t *)rmem >= (u8_t *)ram && - 803d54a: 4b68 ldr r3, [pc, #416] ; (803d6ec ) - 803d54c: 681b ldr r3, [r3, #0] - 803d54e: 687a ldr r2, [r7, #4] - 803d550: 429a cmp r2, r3 - 803d552: d304 bcc.n 803d55e - 803d554: 4b66 ldr r3, [pc, #408] ; (803d6f0 ) - 803d556: 681b ldr r3, [r3, #0] - 803d558: 687a ldr r2, [r7, #4] - 803d55a: 429a cmp r2, r3 - 803d55c: d306 bcc.n 803d56c - 803d55e: 4b65 ldr r3, [pc, #404] ; (803d6f4 ) - 803d560: f240 22d1 movw r2, #721 ; 0x2d1 - 803d564: 4964 ldr r1, [pc, #400] ; (803d6f8 ) - 803d566: 4865 ldr r0, [pc, #404] ; (803d6fc ) - 803d568: f00a fd1c bl 8047fa4 + 803d58a: 4b68 ldr r3, [pc, #416] ; (803d72c ) + 803d58c: 681b ldr r3, [r3, #0] + 803d58e: 687a ldr r2, [r7, #4] + 803d590: 429a cmp r2, r3 + 803d592: d304 bcc.n 803d59e + 803d594: 4b66 ldr r3, [pc, #408] ; (803d730 ) + 803d596: 681b ldr r3, [r3, #0] + 803d598: 687a ldr r2, [r7, #4] + 803d59a: 429a cmp r2, r3 + 803d59c: d306 bcc.n 803d5ac + 803d59e: 4b65 ldr r3, [pc, #404] ; (803d734 ) + 803d5a0: f240 22d1 movw r2, #721 ; 0x2d1 + 803d5a4: 4964 ldr r1, [pc, #400] ; (803d738 ) + 803d5a6: 4865 ldr r0, [pc, #404] ; (803d73c ) + 803d5a8: f00a fd1c bl 8047fe4 (u8_t *)rmem < (u8_t *)ram_end); if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - 803d56c: 4b5f ldr r3, [pc, #380] ; (803d6ec ) - 803d56e: 681b ldr r3, [r3, #0] - 803d570: 687a ldr r2, [r7, #4] - 803d572: 429a cmp r2, r3 - 803d574: d304 bcc.n 803d580 - 803d576: 4b5e ldr r3, [pc, #376] ; (803d6f0 ) - 803d578: 681b ldr r3, [r3, #0] - 803d57a: 687a ldr r2, [r7, #4] - 803d57c: 429a cmp r2, r3 - 803d57e: d301 bcc.n 803d584 + 803d5ac: 4b5f ldr r3, [pc, #380] ; (803d72c ) + 803d5ae: 681b ldr r3, [r3, #0] + 803d5b0: 687a ldr r2, [r7, #4] + 803d5b2: 429a cmp r2, r3 + 803d5b4: d304 bcc.n 803d5c0 + 803d5b6: 4b5e ldr r3, [pc, #376] ; (803d730 ) + 803d5b8: 681b ldr r3, [r3, #0] + 803d5ba: 687a ldr r2, [r7, #4] + 803d5bc: 429a cmp r2, r3 + 803d5be: d301 bcc.n 803d5c4 LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_trim: illegal memory\n")); /* protect mem stats from concurrent access */ MEM_STATS_INC_LOCKED(illegal); return rmem; - 803d580: 687b ldr r3, [r7, #4] - 803d582: e0af b.n 803d6e4 + 803d5c0: 687b ldr r3, [r7, #4] + 803d5c2: e0af b.n 803d724 } /* Get the corresponding struct mem ... */ /* cast through void* to get rid of alignment warnings */ mem = (struct mem *)(void *)((u8_t *)rmem - (SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET)); - 803d584: 687b ldr r3, [r7, #4] - 803d586: 3b08 subs r3, #8 - 803d588: 61bb str r3, [r7, #24] + 803d5c4: 687b ldr r3, [r7, #4] + 803d5c6: 3b08 subs r3, #8 + 803d5c8: 61bb str r3, [r7, #24] #if MEM_OVERFLOW_CHECK mem_overflow_check_element(mem); #endif /* ... and its offset pointer */ ptr = mem_to_ptr(mem); - 803d58a: 69b8 ldr r0, [r7, #24] - 803d58c: f7ff fe30 bl 803d1f0 - 803d590: 4603 mov r3, r0 - 803d592: 82fb strh r3, [r7, #22] + 803d5ca: 69b8 ldr r0, [r7, #24] + 803d5cc: f7ff fe30 bl 803d230 + 803d5d0: 4603 mov r3, r0 + 803d5d2: 82fb strh r3, [r7, #22] size = (mem_size_t)((mem_size_t)(mem->next - ptr) - (SIZEOF_STRUCT_MEM + MEM_SANITY_OVERHEAD)); - 803d594: 69bb ldr r3, [r7, #24] - 803d596: 881a ldrh r2, [r3, #0] - 803d598: 8afb ldrh r3, [r7, #22] - 803d59a: 1ad3 subs r3, r2, r3 - 803d59c: b29b uxth r3, r3 - 803d59e: 3b08 subs r3, #8 - 803d5a0: 82bb strh r3, [r7, #20] + 803d5d4: 69bb ldr r3, [r7, #24] + 803d5d6: 881a ldrh r2, [r3, #0] + 803d5d8: 8afb ldrh r3, [r7, #22] + 803d5da: 1ad3 subs r3, r2, r3 + 803d5dc: b29b uxth r3, r3 + 803d5de: 3b08 subs r3, #8 + 803d5e0: 82bb strh r3, [r7, #20] LWIP_ASSERT("mem_trim can only shrink memory", newsize <= size); - 803d5a2: 8bfa ldrh r2, [r7, #30] - 803d5a4: 8abb ldrh r3, [r7, #20] - 803d5a6: 429a cmp r2, r3 - 803d5a8: d906 bls.n 803d5b8 - 803d5aa: 4b52 ldr r3, [pc, #328] ; (803d6f4 ) - 803d5ac: f44f 7239 mov.w r2, #740 ; 0x2e4 - 803d5b0: 4953 ldr r1, [pc, #332] ; (803d700 ) - 803d5b2: 4852 ldr r0, [pc, #328] ; (803d6fc ) - 803d5b4: f00a fcf6 bl 8047fa4 + 803d5e2: 8bfa ldrh r2, [r7, #30] + 803d5e4: 8abb ldrh r3, [r7, #20] + 803d5e6: 429a cmp r2, r3 + 803d5e8: d906 bls.n 803d5f8 + 803d5ea: 4b52 ldr r3, [pc, #328] ; (803d734 ) + 803d5ec: f44f 7239 mov.w r2, #740 ; 0x2e4 + 803d5f0: 4953 ldr r1, [pc, #332] ; (803d740 ) + 803d5f2: 4852 ldr r0, [pc, #328] ; (803d73c ) + 803d5f4: f00a fcf6 bl 8047fe4 if (newsize > size) { - 803d5b8: 8bfa ldrh r2, [r7, #30] - 803d5ba: 8abb ldrh r3, [r7, #20] - 803d5bc: 429a cmp r2, r3 - 803d5be: d901 bls.n 803d5c4 + 803d5f8: 8bfa ldrh r2, [r7, #30] + 803d5fa: 8abb ldrh r3, [r7, #20] + 803d5fc: 429a cmp r2, r3 + 803d5fe: d901 bls.n 803d604 /* not supported */ return NULL; - 803d5c0: 2300 movs r3, #0 - 803d5c2: e08f b.n 803d6e4 + 803d600: 2300 movs r3, #0 + 803d602: e08f b.n 803d724 } if (newsize == size) { - 803d5c4: 8bfa ldrh r2, [r7, #30] - 803d5c6: 8abb ldrh r3, [r7, #20] - 803d5c8: 429a cmp r2, r3 - 803d5ca: d101 bne.n 803d5d0 + 803d604: 8bfa ldrh r2, [r7, #30] + 803d606: 8abb ldrh r3, [r7, #20] + 803d608: 429a cmp r2, r3 + 803d60a: d101 bne.n 803d610 /* No change in size, simply return */ return rmem; - 803d5cc: 687b ldr r3, [r7, #4] - 803d5ce: e089 b.n 803d6e4 + 803d60c: 687b ldr r3, [r7, #4] + 803d60e: e089 b.n 803d724 } /* protect the heap from concurrent access */ LWIP_MEM_FREE_PROTECT(); mem2 = ptr_to_mem(mem->next); - 803d5d0: 69bb ldr r3, [r7, #24] - 803d5d2: 881b ldrh r3, [r3, #0] - 803d5d4: 4618 mov r0, r3 - 803d5d6: f7ff fdf9 bl 803d1cc - 803d5da: 6138 str r0, [r7, #16] + 803d610: 69bb ldr r3, [r7, #24] + 803d612: 881b ldrh r3, [r3, #0] + 803d614: 4618 mov r0, r3 + 803d616: f7ff fdf9 bl 803d20c + 803d61a: 6138 str r0, [r7, #16] if (mem2->used == 0) { - 803d5dc: 693b ldr r3, [r7, #16] - 803d5de: 791b ldrb r3, [r3, #4] - 803d5e0: 2b00 cmp r3, #0 - 803d5e2: d13f bne.n 803d664 + 803d61c: 693b ldr r3, [r7, #16] + 803d61e: 791b ldrb r3, [r3, #4] + 803d620: 2b00 cmp r3, #0 + 803d622: d13f bne.n 803d6a4 /* The next struct is unused, we can simply move it at little */ mem_size_t next; LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED); - 803d5e4: 69bb ldr r3, [r7, #24] - 803d5e6: 881b ldrh r3, [r3, #0] - 803d5e8: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d5ec: d106 bne.n 803d5fc - 803d5ee: 4b41 ldr r3, [pc, #260] ; (803d6f4 ) - 803d5f0: f240 22f5 movw r2, #757 ; 0x2f5 - 803d5f4: 4943 ldr r1, [pc, #268] ; (803d704 ) - 803d5f6: 4841 ldr r0, [pc, #260] ; (803d6fc ) - 803d5f8: f00a fcd4 bl 8047fa4 + 803d624: 69bb ldr r3, [r7, #24] + 803d626: 881b ldrh r3, [r3, #0] + 803d628: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d62c: d106 bne.n 803d63c + 803d62e: 4b41 ldr r3, [pc, #260] ; (803d734 ) + 803d630: f240 22f5 movw r2, #757 ; 0x2f5 + 803d634: 4943 ldr r1, [pc, #268] ; (803d744 ) + 803d636: 4841 ldr r0, [pc, #260] ; (803d73c ) + 803d638: f00a fcd4 bl 8047fe4 /* remember the old next pointer */ next = mem2->next; - 803d5fc: 693b ldr r3, [r7, #16] - 803d5fe: 881b ldrh r3, [r3, #0] - 803d600: 81bb strh r3, [r7, #12] + 803d63c: 693b ldr r3, [r7, #16] + 803d63e: 881b ldrh r3, [r3, #0] + 803d640: 81bb strh r3, [r7, #12] /* create new struct mem which is moved directly after the shrinked mem */ ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + newsize); - 803d602: 8afa ldrh r2, [r7, #22] - 803d604: 8bfb ldrh r3, [r7, #30] - 803d606: 4413 add r3, r2 - 803d608: b29b uxth r3, r3 - 803d60a: 3308 adds r3, #8 - 803d60c: 81fb strh r3, [r7, #14] + 803d642: 8afa ldrh r2, [r7, #22] + 803d644: 8bfb ldrh r3, [r7, #30] + 803d646: 4413 add r3, r2 + 803d648: b29b uxth r3, r3 + 803d64a: 3308 adds r3, #8 + 803d64c: 81fb strh r3, [r7, #14] if (lfree == mem2) { - 803d60e: 4b3e ldr r3, [pc, #248] ; (803d708 ) - 803d610: 681b ldr r3, [r3, #0] - 803d612: 693a ldr r2, [r7, #16] - 803d614: 429a cmp r2, r3 - 803d616: d106 bne.n 803d626 + 803d64e: 4b3e ldr r3, [pc, #248] ; (803d748 ) + 803d650: 681b ldr r3, [r3, #0] + 803d652: 693a ldr r2, [r7, #16] + 803d654: 429a cmp r2, r3 + 803d656: d106 bne.n 803d666 lfree = ptr_to_mem(ptr2); - 803d618: 89fb ldrh r3, [r7, #14] - 803d61a: 4618 mov r0, r3 - 803d61c: f7ff fdd6 bl 803d1cc - 803d620: 4603 mov r3, r0 - 803d622: 4a39 ldr r2, [pc, #228] ; (803d708 ) - 803d624: 6013 str r3, [r2, #0] + 803d658: 89fb ldrh r3, [r7, #14] + 803d65a: 4618 mov r0, r3 + 803d65c: f7ff fdd6 bl 803d20c + 803d660: 4603 mov r3, r0 + 803d662: 4a39 ldr r2, [pc, #228] ; (803d748 ) + 803d664: 6013 str r3, [r2, #0] } mem2 = ptr_to_mem(ptr2); - 803d626: 89fb ldrh r3, [r7, #14] - 803d628: 4618 mov r0, r3 - 803d62a: f7ff fdcf bl 803d1cc - 803d62e: 6138 str r0, [r7, #16] + 803d666: 89fb ldrh r3, [r7, #14] + 803d668: 4618 mov r0, r3 + 803d66a: f7ff fdcf bl 803d20c + 803d66e: 6138 str r0, [r7, #16] mem2->used = 0; - 803d630: 693b ldr r3, [r7, #16] - 803d632: 2200 movs r2, #0 - 803d634: 711a strb r2, [r3, #4] + 803d670: 693b ldr r3, [r7, #16] + 803d672: 2200 movs r2, #0 + 803d674: 711a strb r2, [r3, #4] /* restore the next pointer */ mem2->next = next; - 803d636: 693b ldr r3, [r7, #16] - 803d638: 89ba ldrh r2, [r7, #12] - 803d63a: 801a strh r2, [r3, #0] + 803d676: 693b ldr r3, [r7, #16] + 803d678: 89ba ldrh r2, [r7, #12] + 803d67a: 801a strh r2, [r3, #0] /* link it back to mem */ mem2->prev = ptr; - 803d63c: 693b ldr r3, [r7, #16] - 803d63e: 8afa ldrh r2, [r7, #22] - 803d640: 805a strh r2, [r3, #2] + 803d67c: 693b ldr r3, [r7, #16] + 803d67e: 8afa ldrh r2, [r7, #22] + 803d680: 805a strh r2, [r3, #2] /* link mem to it */ mem->next = ptr2; - 803d642: 69bb ldr r3, [r7, #24] - 803d644: 89fa ldrh r2, [r7, #14] - 803d646: 801a strh r2, [r3, #0] + 803d682: 69bb ldr r3, [r7, #24] + 803d684: 89fa ldrh r2, [r7, #14] + 803d686: 801a strh r2, [r3, #0] /* last thing to restore linked list: as we have moved mem2, * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not * the end of the heap */ if (mem2->next != MEM_SIZE_ALIGNED) { - 803d648: 693b ldr r3, [r7, #16] - 803d64a: 881b ldrh r3, [r3, #0] - 803d64c: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d650: d047 beq.n 803d6e2 + 803d688: 693b ldr r3, [r7, #16] + 803d68a: 881b ldrh r3, [r3, #0] + 803d68c: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d690: d047 beq.n 803d722 ptr_to_mem(mem2->next)->prev = ptr2; - 803d652: 693b ldr r3, [r7, #16] - 803d654: 881b ldrh r3, [r3, #0] - 803d656: 4618 mov r0, r3 - 803d658: f7ff fdb8 bl 803d1cc - 803d65c: 4602 mov r2, r0 - 803d65e: 89fb ldrh r3, [r7, #14] - 803d660: 8053 strh r3, [r2, #2] - 803d662: e03e b.n 803d6e2 + 803d692: 693b ldr r3, [r7, #16] + 803d694: 881b ldrh r3, [r3, #0] + 803d696: 4618 mov r0, r3 + 803d698: f7ff fdb8 bl 803d20c + 803d69c: 4602 mov r2, r0 + 803d69e: 89fb ldrh r3, [r7, #14] + 803d6a0: 8053 strh r3, [r2, #2] + 803d6a2: e03e b.n 803d722 } MEM_STATS_DEC_USED(used, (size - newsize)); /* no need to plug holes, we've already done that */ } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { - 803d664: 8bfb ldrh r3, [r7, #30] - 803d666: f103 0214 add.w r2, r3, #20 - 803d66a: 8abb ldrh r3, [r7, #20] - 803d66c: 429a cmp r2, r3 - 803d66e: d838 bhi.n 803d6e2 + 803d6a4: 8bfb ldrh r3, [r7, #30] + 803d6a6: f103 0214 add.w r2, r3, #20 + 803d6aa: 8abb ldrh r3, [r7, #20] + 803d6ac: 429a cmp r2, r3 + 803d6ae: d838 bhi.n 803d722 * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED'). * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty * region that couldn't hold data, but when mem->next gets freed, * the 2 regions would be combined, resulting in more free memory */ ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + newsize); - 803d670: 8afa ldrh r2, [r7, #22] - 803d672: 8bfb ldrh r3, [r7, #30] - 803d674: 4413 add r3, r2 - 803d676: b29b uxth r3, r3 - 803d678: 3308 adds r3, #8 - 803d67a: 81fb strh r3, [r7, #14] + 803d6b0: 8afa ldrh r2, [r7, #22] + 803d6b2: 8bfb ldrh r3, [r7, #30] + 803d6b4: 4413 add r3, r2 + 803d6b6: b29b uxth r3, r3 + 803d6b8: 3308 adds r3, #8 + 803d6ba: 81fb strh r3, [r7, #14] LWIP_ASSERT("invalid next ptr", mem->next != MEM_SIZE_ALIGNED); - 803d67c: 69bb ldr r3, [r7, #24] - 803d67e: 881b ldrh r3, [r3, #0] - 803d680: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d684: d106 bne.n 803d694 - 803d686: 4b1b ldr r3, [pc, #108] ; (803d6f4 ) - 803d688: f240 3216 movw r2, #790 ; 0x316 - 803d68c: 491d ldr r1, [pc, #116] ; (803d704 ) - 803d68e: 481b ldr r0, [pc, #108] ; (803d6fc ) - 803d690: f00a fc88 bl 8047fa4 + 803d6bc: 69bb ldr r3, [r7, #24] + 803d6be: 881b ldrh r3, [r3, #0] + 803d6c0: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d6c4: d106 bne.n 803d6d4 + 803d6c6: 4b1b ldr r3, [pc, #108] ; (803d734 ) + 803d6c8: f240 3216 movw r2, #790 ; 0x316 + 803d6cc: 491d ldr r1, [pc, #116] ; (803d744 ) + 803d6ce: 481b ldr r0, [pc, #108] ; (803d73c ) + 803d6d0: f00a fc88 bl 8047fe4 mem2 = ptr_to_mem(ptr2); - 803d694: 89fb ldrh r3, [r7, #14] - 803d696: 4618 mov r0, r3 - 803d698: f7ff fd98 bl 803d1cc - 803d69c: 6138 str r0, [r7, #16] + 803d6d4: 89fb ldrh r3, [r7, #14] + 803d6d6: 4618 mov r0, r3 + 803d6d8: f7ff fd98 bl 803d20c + 803d6dc: 6138 str r0, [r7, #16] if (mem2 < lfree) { - 803d69e: 4b1a ldr r3, [pc, #104] ; (803d708 ) - 803d6a0: 681b ldr r3, [r3, #0] - 803d6a2: 693a ldr r2, [r7, #16] - 803d6a4: 429a cmp r2, r3 - 803d6a6: d202 bcs.n 803d6ae + 803d6de: 4b1a ldr r3, [pc, #104] ; (803d748 ) + 803d6e0: 681b ldr r3, [r3, #0] + 803d6e2: 693a ldr r2, [r7, #16] + 803d6e4: 429a cmp r2, r3 + 803d6e6: d202 bcs.n 803d6ee lfree = mem2; - 803d6a8: 4a17 ldr r2, [pc, #92] ; (803d708 ) - 803d6aa: 693b ldr r3, [r7, #16] - 803d6ac: 6013 str r3, [r2, #0] + 803d6e8: 4a17 ldr r2, [pc, #92] ; (803d748 ) + 803d6ea: 693b ldr r3, [r7, #16] + 803d6ec: 6013 str r3, [r2, #0] } mem2->used = 0; - 803d6ae: 693b ldr r3, [r7, #16] - 803d6b0: 2200 movs r2, #0 - 803d6b2: 711a strb r2, [r3, #4] + 803d6ee: 693b ldr r3, [r7, #16] + 803d6f0: 2200 movs r2, #0 + 803d6f2: 711a strb r2, [r3, #4] mem2->next = mem->next; - 803d6b4: 69bb ldr r3, [r7, #24] - 803d6b6: 881a ldrh r2, [r3, #0] - 803d6b8: 693b ldr r3, [r7, #16] - 803d6ba: 801a strh r2, [r3, #0] + 803d6f4: 69bb ldr r3, [r7, #24] + 803d6f6: 881a ldrh r2, [r3, #0] + 803d6f8: 693b ldr r3, [r7, #16] + 803d6fa: 801a strh r2, [r3, #0] mem2->prev = ptr; - 803d6bc: 693b ldr r3, [r7, #16] - 803d6be: 8afa ldrh r2, [r7, #22] - 803d6c0: 805a strh r2, [r3, #2] + 803d6fc: 693b ldr r3, [r7, #16] + 803d6fe: 8afa ldrh r2, [r7, #22] + 803d700: 805a strh r2, [r3, #2] mem->next = ptr2; - 803d6c2: 69bb ldr r3, [r7, #24] - 803d6c4: 89fa ldrh r2, [r7, #14] - 803d6c6: 801a strh r2, [r3, #0] + 803d702: 69bb ldr r3, [r7, #24] + 803d704: 89fa ldrh r2, [r7, #14] + 803d706: 801a strh r2, [r3, #0] if (mem2->next != MEM_SIZE_ALIGNED) { - 803d6c8: 693b ldr r3, [r7, #16] - 803d6ca: 881b ldrh r3, [r3, #0] - 803d6cc: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d6d0: d007 beq.n 803d6e2 + 803d708: 693b ldr r3, [r7, #16] + 803d70a: 881b ldrh r3, [r3, #0] + 803d70c: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d710: d007 beq.n 803d722 ptr_to_mem(mem2->next)->prev = ptr2; - 803d6d2: 693b ldr r3, [r7, #16] - 803d6d4: 881b ldrh r3, [r3, #0] - 803d6d6: 4618 mov r0, r3 - 803d6d8: f7ff fd78 bl 803d1cc - 803d6dc: 4602 mov r2, r0 - 803d6de: 89fb ldrh r3, [r7, #14] - 803d6e0: 8053 strh r3, [r2, #2] + 803d712: 693b ldr r3, [r7, #16] + 803d714: 881b ldrh r3, [r3, #0] + 803d716: 4618 mov r0, r3 + 803d718: f7ff fd78 bl 803d20c + 803d71c: 4602 mov r2, r0 + 803d71e: 89fb ldrh r3, [r7, #14] + 803d720: 8053 strh r3, [r2, #2] MEM_SANITY(); #if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT mem_free_count = 1; #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ LWIP_MEM_FREE_UNPROTECT(); return rmem; - 803d6e2: 687b ldr r3, [r7, #4] -} - 803d6e4: 4618 mov r0, r3 - 803d6e6: 3720 adds r7, #32 - 803d6e8: 46bd mov sp, r7 - 803d6ea: bd80 pop {r7, pc} - 803d6ec: 2400bb64 .word 0x2400bb64 - 803d6f0: 2400bb68 .word 0x2400bb68 - 803d6f4: 0804a1b8 .word 0x0804a1b8 - 803d6f8: 0804a328 .word 0x0804a328 - 803d6fc: 0804a200 .word 0x0804a200 - 803d700: 0804a340 .word 0x0804a340 - 803d704: 0804a360 .word 0x0804a360 - 803d708: 2400bb6c .word 0x2400bb6c - -0803d70c : + 803d722: 687b ldr r3, [r7, #4] +} + 803d724: 4618 mov r0, r3 + 803d726: 3720 adds r7, #32 + 803d728: 46bd mov sp, r7 + 803d72a: bd80 pop {r7, pc} + 803d72c: 2400bb64 .word 0x2400bb64 + 803d730: 2400bb68 .word 0x2400bb68 + 803d734: 0804a1f8 .word 0x0804a1f8 + 803d738: 0804a368 .word 0x0804a368 + 803d73c: 0804a240 .word 0x0804a240 + 803d740: 0804a380 .word 0x0804a380 + 803d744: 0804a3a0 .word 0x0804a3a0 + 803d748: 2400bb6c .word 0x2400bb6c + +0803d74c : * * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). */ void * mem_malloc(mem_size_t size_in) { - 803d70c: b580 push {r7, lr} - 803d70e: b088 sub sp, #32 - 803d710: af00 add r7, sp, #0 - 803d712: 4603 mov r3, r0 - 803d714: 80fb strh r3, [r7, #6] + 803d74c: b580 push {r7, lr} + 803d74e: b088 sub sp, #32 + 803d750: af00 add r7, sp, #0 + 803d752: 4603 mov r3, r0 + 803d754: 80fb strh r3, [r7, #6] #if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT u8_t local_mem_free_count = 0; #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ LWIP_MEM_ALLOC_DECL_PROTECT(); if (size_in == 0) { - 803d716: 88fb ldrh r3, [r7, #6] - 803d718: 2b00 cmp r3, #0 - 803d71a: d101 bne.n 803d720 + 803d756: 88fb ldrh r3, [r7, #6] + 803d758: 2b00 cmp r3, #0 + 803d75a: d101 bne.n 803d760 return NULL; - 803d71c: 2300 movs r3, #0 - 803d71e: e0d9 b.n 803d8d4 + 803d75c: 2300 movs r3, #0 + 803d75e: e0d9 b.n 803d914 } /* Expand the size of the allocated memory region so that we can adjust for alignment. */ size = (mem_size_t)LWIP_MEM_ALIGN_SIZE(size_in); - 803d720: 88fb ldrh r3, [r7, #6] - 803d722: 3303 adds r3, #3 - 803d724: b29b uxth r3, r3 - 803d726: f023 0303 bic.w r3, r3, #3 - 803d72a: 83bb strh r3, [r7, #28] + 803d760: 88fb ldrh r3, [r7, #6] + 803d762: 3303 adds r3, #3 + 803d764: b29b uxth r3, r3 + 803d766: f023 0303 bic.w r3, r3, #3 + 803d76a: 83bb strh r3, [r7, #28] if (size < MIN_SIZE_ALIGNED) { - 803d72c: 8bbb ldrh r3, [r7, #28] - 803d72e: 2b0b cmp r3, #11 - 803d730: d801 bhi.n 803d736 + 803d76c: 8bbb ldrh r3, [r7, #28] + 803d76e: 2b0b cmp r3, #11 + 803d770: d801 bhi.n 803d776 /* every data block must be at least MIN_SIZE_ALIGNED long */ size = MIN_SIZE_ALIGNED; - 803d732: 230c movs r3, #12 - 803d734: 83bb strh r3, [r7, #28] + 803d772: 230c movs r3, #12 + 803d774: 83bb strh r3, [r7, #28] } #if MEM_OVERFLOW_CHECK size += MEM_SANITY_REGION_BEFORE_ALIGNED + MEM_SANITY_REGION_AFTER_ALIGNED; #endif if ((size > MEM_SIZE_ALIGNED) || (size < size_in)) { - 803d736: 8bbb ldrh r3, [r7, #28] - 803d738: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d73c: d803 bhi.n 803d746 - 803d73e: 8bba ldrh r2, [r7, #28] - 803d740: 88fb ldrh r3, [r7, #6] - 803d742: 429a cmp r2, r3 - 803d744: d201 bcs.n 803d74a + 803d776: 8bbb ldrh r3, [r7, #28] + 803d778: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d77c: d803 bhi.n 803d786 + 803d77e: 8bba ldrh r2, [r7, #28] + 803d780: 88fb ldrh r3, [r7, #6] + 803d782: 429a cmp r2, r3 + 803d784: d201 bcs.n 803d78a return NULL; - 803d746: 2300 movs r3, #0 - 803d748: e0c4 b.n 803d8d4 + 803d786: 2300 movs r3, #0 + 803d788: e0c4 b.n 803d914 #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ /* Scan through the heap searching for a free block that is big enough, * beginning with the lowest free block. */ for (ptr = mem_to_ptr(lfree); ptr < MEM_SIZE_ALIGNED - size; - 803d74a: 4b64 ldr r3, [pc, #400] ; (803d8dc ) - 803d74c: 681b ldr r3, [r3, #0] - 803d74e: 4618 mov r0, r3 - 803d750: f7ff fd4e bl 803d1f0 - 803d754: 4603 mov r3, r0 - 803d756: 83fb strh r3, [r7, #30] - 803d758: e0b4 b.n 803d8c4 + 803d78a: 4b64 ldr r3, [pc, #400] ; (803d91c ) + 803d78c: 681b ldr r3, [r3, #0] + 803d78e: 4618 mov r0, r3 + 803d790: f7ff fd4e bl 803d230 + 803d794: 4603 mov r3, r0 + 803d796: 83fb strh r3, [r7, #30] + 803d798: e0b4 b.n 803d904 ptr = ptr_to_mem(ptr)->next) { mem = ptr_to_mem(ptr); - 803d75a: 8bfb ldrh r3, [r7, #30] - 803d75c: 4618 mov r0, r3 - 803d75e: f7ff fd35 bl 803d1cc - 803d762: 6178 str r0, [r7, #20] + 803d79a: 8bfb ldrh r3, [r7, #30] + 803d79c: 4618 mov r0, r3 + 803d79e: f7ff fd35 bl 803d20c + 803d7a2: 6178 str r0, [r7, #20] local_mem_free_count = 1; break; } #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ if ((!mem->used) && - 803d764: 697b ldr r3, [r7, #20] - 803d766: 791b ldrb r3, [r3, #4] - 803d768: 2b00 cmp r3, #0 - 803d76a: f040 80a4 bne.w 803d8b6 + 803d7a4: 697b ldr r3, [r7, #20] + 803d7a6: 791b ldrb r3, [r3, #4] + 803d7a8: 2b00 cmp r3, #0 + 803d7aa: f040 80a4 bne.w 803d8f6 (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { - 803d76e: 697b ldr r3, [r7, #20] - 803d770: 881b ldrh r3, [r3, #0] - 803d772: 461a mov r2, r3 - 803d774: 8bfb ldrh r3, [r7, #30] - 803d776: 1ad3 subs r3, r2, r3 - 803d778: f1a3 0208 sub.w r2, r3, #8 - 803d77c: 8bbb ldrh r3, [r7, #28] + 803d7ae: 697b ldr r3, [r7, #20] + 803d7b0: 881b ldrh r3, [r3, #0] + 803d7b2: 461a mov r2, r3 + 803d7b4: 8bfb ldrh r3, [r7, #30] + 803d7b6: 1ad3 subs r3, r2, r3 + 803d7b8: f1a3 0208 sub.w r2, r3, #8 + 803d7bc: 8bbb ldrh r3, [r7, #28] if ((!mem->used) && - 803d77e: 429a cmp r2, r3 - 803d780: f0c0 8099 bcc.w 803d8b6 + 803d7be: 429a cmp r2, r3 + 803d7c0: f0c0 8099 bcc.w 803d8f6 /* mem is not used and at least perfect fit is possible: * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */ if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { - 803d784: 697b ldr r3, [r7, #20] - 803d786: 881b ldrh r3, [r3, #0] - 803d788: 461a mov r2, r3 - 803d78a: 8bfb ldrh r3, [r7, #30] - 803d78c: 1ad3 subs r3, r2, r3 - 803d78e: f1a3 0208 sub.w r2, r3, #8 - 803d792: 8bbb ldrh r3, [r7, #28] - 803d794: 3314 adds r3, #20 - 803d796: 429a cmp r2, r3 - 803d798: d333 bcc.n 803d802 + 803d7c4: 697b ldr r3, [r7, #20] + 803d7c6: 881b ldrh r3, [r3, #0] + 803d7c8: 461a mov r2, r3 + 803d7ca: 8bfb ldrh r3, [r7, #30] + 803d7cc: 1ad3 subs r3, r2, r3 + 803d7ce: f1a3 0208 sub.w r2, r3, #8 + 803d7d2: 8bbb ldrh r3, [r7, #28] + 803d7d4: 3314 adds r3, #20 + 803d7d6: 429a cmp r2, r3 + 803d7d8: d333 bcc.n 803d842 * struct mem would fit in but no data between mem2 and mem2->next * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty * region that couldn't hold data, but when mem->next gets freed, * the 2 regions would be combined, resulting in more free memory */ ptr2 = (mem_size_t)(ptr + SIZEOF_STRUCT_MEM + size); - 803d79a: 8bfa ldrh r2, [r7, #30] - 803d79c: 8bbb ldrh r3, [r7, #28] - 803d79e: 4413 add r3, r2 - 803d7a0: b29b uxth r3, r3 - 803d7a2: 3308 adds r3, #8 - 803d7a4: 827b strh r3, [r7, #18] + 803d7da: 8bfa ldrh r2, [r7, #30] + 803d7dc: 8bbb ldrh r3, [r7, #28] + 803d7de: 4413 add r3, r2 + 803d7e0: b29b uxth r3, r3 + 803d7e2: 3308 adds r3, #8 + 803d7e4: 827b strh r3, [r7, #18] LWIP_ASSERT("invalid next ptr",ptr2 != MEM_SIZE_ALIGNED); - 803d7a6: 8a7b ldrh r3, [r7, #18] - 803d7a8: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d7ac: d106 bne.n 803d7bc - 803d7ae: 4b4c ldr r3, [pc, #304] ; (803d8e0 ) - 803d7b0: f240 3287 movw r2, #903 ; 0x387 - 803d7b4: 494b ldr r1, [pc, #300] ; (803d8e4 ) - 803d7b6: 484c ldr r0, [pc, #304] ; (803d8e8 ) - 803d7b8: f00a fbf4 bl 8047fa4 + 803d7e6: 8a7b ldrh r3, [r7, #18] + 803d7e8: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d7ec: d106 bne.n 803d7fc + 803d7ee: 4b4c ldr r3, [pc, #304] ; (803d920 ) + 803d7f0: f240 3287 movw r2, #903 ; 0x387 + 803d7f4: 494b ldr r1, [pc, #300] ; (803d924 ) + 803d7f6: 484c ldr r0, [pc, #304] ; (803d928 ) + 803d7f8: f00a fbf4 bl 8047fe4 /* create mem2 struct */ mem2 = ptr_to_mem(ptr2); - 803d7bc: 8a7b ldrh r3, [r7, #18] - 803d7be: 4618 mov r0, r3 - 803d7c0: f7ff fd04 bl 803d1cc - 803d7c4: 60f8 str r0, [r7, #12] + 803d7fc: 8a7b ldrh r3, [r7, #18] + 803d7fe: 4618 mov r0, r3 + 803d800: f7ff fd04 bl 803d20c + 803d804: 60f8 str r0, [r7, #12] mem2->used = 0; - 803d7c6: 68fb ldr r3, [r7, #12] - 803d7c8: 2200 movs r2, #0 - 803d7ca: 711a strb r2, [r3, #4] + 803d806: 68fb ldr r3, [r7, #12] + 803d808: 2200 movs r2, #0 + 803d80a: 711a strb r2, [r3, #4] mem2->next = mem->next; - 803d7cc: 697b ldr r3, [r7, #20] - 803d7ce: 881a ldrh r2, [r3, #0] - 803d7d0: 68fb ldr r3, [r7, #12] - 803d7d2: 801a strh r2, [r3, #0] + 803d80c: 697b ldr r3, [r7, #20] + 803d80e: 881a ldrh r2, [r3, #0] + 803d810: 68fb ldr r3, [r7, #12] + 803d812: 801a strh r2, [r3, #0] mem2->prev = ptr; - 803d7d4: 68fb ldr r3, [r7, #12] - 803d7d6: 8bfa ldrh r2, [r7, #30] - 803d7d8: 805a strh r2, [r3, #2] + 803d814: 68fb ldr r3, [r7, #12] + 803d816: 8bfa ldrh r2, [r7, #30] + 803d818: 805a strh r2, [r3, #2] /* and insert it between mem and mem->next */ mem->next = ptr2; - 803d7da: 697b ldr r3, [r7, #20] - 803d7dc: 8a7a ldrh r2, [r7, #18] - 803d7de: 801a strh r2, [r3, #0] + 803d81a: 697b ldr r3, [r7, #20] + 803d81c: 8a7a ldrh r2, [r7, #18] + 803d81e: 801a strh r2, [r3, #0] mem->used = 1; - 803d7e0: 697b ldr r3, [r7, #20] - 803d7e2: 2201 movs r2, #1 - 803d7e4: 711a strb r2, [r3, #4] + 803d820: 697b ldr r3, [r7, #20] + 803d822: 2201 movs r2, #1 + 803d824: 711a strb r2, [r3, #4] if (mem2->next != MEM_SIZE_ALIGNED) { - 803d7e6: 68fb ldr r3, [r7, #12] - 803d7e8: 881b ldrh r3, [r3, #0] - 803d7ea: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 - 803d7ee: d00b beq.n 803d808 + 803d826: 68fb ldr r3, [r7, #12] + 803d828: 881b ldrh r3, [r3, #0] + 803d82a: f5b3 6fc8 cmp.w r3, #1600 ; 0x640 + 803d82e: d00b beq.n 803d848 ptr_to_mem(mem2->next)->prev = ptr2; - 803d7f0: 68fb ldr r3, [r7, #12] - 803d7f2: 881b ldrh r3, [r3, #0] - 803d7f4: 4618 mov r0, r3 - 803d7f6: f7ff fce9 bl 803d1cc - 803d7fa: 4602 mov r2, r0 - 803d7fc: 8a7b ldrh r3, [r7, #18] - 803d7fe: 8053 strh r3, [r2, #2] - 803d800: e002 b.n 803d808 + 803d830: 68fb ldr r3, [r7, #12] + 803d832: 881b ldrh r3, [r3, #0] + 803d834: 4618 mov r0, r3 + 803d836: f7ff fce9 bl 803d20c + 803d83a: 4602 mov r2, r0 + 803d83c: 8a7b ldrh r3, [r7, #18] + 803d83e: 8053 strh r3, [r2, #2] + 803d840: e002 b.n 803d848 * take care of this). * -> near fit or exact fit: do not split, no mem2 creation * also can't move mem->next directly behind mem, since mem->next * will always be used at this point! */ mem->used = 1; - 803d802: 697b ldr r3, [r7, #20] - 803d804: 2201 movs r2, #1 - 803d806: 711a strb r2, [r3, #4] + 803d842: 697b ldr r3, [r7, #20] + 803d844: 2201 movs r2, #1 + 803d846: 711a strb r2, [r3, #4] MEM_STATS_INC_USED(used, mem->next - mem_to_ptr(mem)); } #if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT mem_malloc_adjust_lfree: #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ if (mem == lfree) { - 803d808: 4b34 ldr r3, [pc, #208] ; (803d8dc ) - 803d80a: 681b ldr r3, [r3, #0] - 803d80c: 697a ldr r2, [r7, #20] - 803d80e: 429a cmp r2, r3 - 803d810: d127 bne.n 803d862 + 803d848: 4b34 ldr r3, [pc, #208] ; (803d91c ) + 803d84a: 681b ldr r3, [r3, #0] + 803d84c: 697a ldr r2, [r7, #20] + 803d84e: 429a cmp r2, r3 + 803d850: d127 bne.n 803d8a2 struct mem *cur = lfree; - 803d812: 4b32 ldr r3, [pc, #200] ; (803d8dc ) - 803d814: 681b ldr r3, [r3, #0] - 803d816: 61bb str r3, [r7, #24] + 803d852: 4b32 ldr r3, [pc, #200] ; (803d91c ) + 803d854: 681b ldr r3, [r3, #0] + 803d856: 61bb str r3, [r7, #24] /* Find next free block after mem and update lowest free pointer */ while (cur->used && cur != ram_end) { - 803d818: e005 b.n 803d826 + 803d858: e005 b.n 803d866 /* If mem_free or mem_trim have run, we have to restart since they could have altered our current struct mem or lfree. */ goto mem_malloc_adjust_lfree; } #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ cur = ptr_to_mem(cur->next); - 803d81a: 69bb ldr r3, [r7, #24] - 803d81c: 881b ldrh r3, [r3, #0] - 803d81e: 4618 mov r0, r3 - 803d820: f7ff fcd4 bl 803d1cc - 803d824: 61b8 str r0, [r7, #24] + 803d85a: 69bb ldr r3, [r7, #24] + 803d85c: 881b ldrh r3, [r3, #0] + 803d85e: 4618 mov r0, r3 + 803d860: f7ff fcd4 bl 803d20c + 803d864: 61b8 str r0, [r7, #24] while (cur->used && cur != ram_end) { - 803d826: 69bb ldr r3, [r7, #24] - 803d828: 791b ldrb r3, [r3, #4] - 803d82a: 2b00 cmp r3, #0 - 803d82c: d004 beq.n 803d838 - 803d82e: 4b2f ldr r3, [pc, #188] ; (803d8ec ) - 803d830: 681b ldr r3, [r3, #0] - 803d832: 69ba ldr r2, [r7, #24] - 803d834: 429a cmp r2, r3 - 803d836: d1f0 bne.n 803d81a + 803d866: 69bb ldr r3, [r7, #24] + 803d868: 791b ldrb r3, [r3, #4] + 803d86a: 2b00 cmp r3, #0 + 803d86c: d004 beq.n 803d878 + 803d86e: 4b2f ldr r3, [pc, #188] ; (803d92c ) + 803d870: 681b ldr r3, [r3, #0] + 803d872: 69ba ldr r2, [r7, #24] + 803d874: 429a cmp r2, r3 + 803d876: d1f0 bne.n 803d85a } lfree = cur; - 803d838: 4a28 ldr r2, [pc, #160] ; (803d8dc ) - 803d83a: 69bb ldr r3, [r7, #24] - 803d83c: 6013 str r3, [r2, #0] + 803d878: 4a28 ldr r2, [pc, #160] ; (803d91c ) + 803d87a: 69bb ldr r3, [r7, #24] + 803d87c: 6013 str r3, [r2, #0] LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used))); - 803d83e: 4b27 ldr r3, [pc, #156] ; (803d8dc ) - 803d840: 681a ldr r2, [r3, #0] - 803d842: 4b2a ldr r3, [pc, #168] ; (803d8ec ) - 803d844: 681b ldr r3, [r3, #0] - 803d846: 429a cmp r2, r3 - 803d848: d00b beq.n 803d862 - 803d84a: 4b24 ldr r3, [pc, #144] ; (803d8dc ) - 803d84c: 681b ldr r3, [r3, #0] - 803d84e: 791b ldrb r3, [r3, #4] - 803d850: 2b00 cmp r3, #0 - 803d852: d006 beq.n 803d862 - 803d854: 4b22 ldr r3, [pc, #136] ; (803d8e0 ) - 803d856: f240 32b5 movw r2, #949 ; 0x3b5 - 803d85a: 4925 ldr r1, [pc, #148] ; (803d8f0 ) - 803d85c: 4822 ldr r0, [pc, #136] ; (803d8e8 ) - 803d85e: f00a fba1 bl 8047fa4 + 803d87e: 4b27 ldr r3, [pc, #156] ; (803d91c ) + 803d880: 681a ldr r2, [r3, #0] + 803d882: 4b2a ldr r3, [pc, #168] ; (803d92c ) + 803d884: 681b ldr r3, [r3, #0] + 803d886: 429a cmp r2, r3 + 803d888: d00b beq.n 803d8a2 + 803d88a: 4b24 ldr r3, [pc, #144] ; (803d91c ) + 803d88c: 681b ldr r3, [r3, #0] + 803d88e: 791b ldrb r3, [r3, #4] + 803d890: 2b00 cmp r3, #0 + 803d892: d006 beq.n 803d8a2 + 803d894: 4b22 ldr r3, [pc, #136] ; (803d920 ) + 803d896: f240 32b5 movw r2, #949 ; 0x3b5 + 803d89a: 4925 ldr r1, [pc, #148] ; (803d930 ) + 803d89c: 4822 ldr r0, [pc, #136] ; (803d928 ) + 803d89e: f00a fba1 bl 8047fe4 } LWIP_MEM_ALLOC_UNPROTECT(); sys_mutex_unlock(&mem_mutex); LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.", - 803d862: 8bba ldrh r2, [r7, #28] - 803d864: 697b ldr r3, [r7, #20] - 803d866: 4413 add r3, r2 - 803d868: 3308 adds r3, #8 - 803d86a: 4a20 ldr r2, [pc, #128] ; (803d8ec ) - 803d86c: 6812 ldr r2, [r2, #0] - 803d86e: 4293 cmp r3, r2 - 803d870: d906 bls.n 803d880 - 803d872: 4b1b ldr r3, [pc, #108] ; (803d8e0 ) - 803d874: f240 32b9 movw r2, #953 ; 0x3b9 - 803d878: 491e ldr r1, [pc, #120] ; (803d8f4 ) - 803d87a: 481b ldr r0, [pc, #108] ; (803d8e8 ) - 803d87c: f00a fb92 bl 8047fa4 + 803d8a2: 8bba ldrh r2, [r7, #28] + 803d8a4: 697b ldr r3, [r7, #20] + 803d8a6: 4413 add r3, r2 + 803d8a8: 3308 adds r3, #8 + 803d8aa: 4a20 ldr r2, [pc, #128] ; (803d92c ) + 803d8ac: 6812 ldr r2, [r2, #0] + 803d8ae: 4293 cmp r3, r2 + 803d8b0: d906 bls.n 803d8c0 + 803d8b2: 4b1b ldr r3, [pc, #108] ; (803d920 ) + 803d8b4: f240 32b9 movw r2, #953 ; 0x3b9 + 803d8b8: 491e ldr r1, [pc, #120] ; (803d934 ) + 803d8ba: 481b ldr r0, [pc, #108] ; (803d928 ) + 803d8bc: f00a fb92 bl 8047fe4 (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end); LWIP_ASSERT("mem_malloc: allocated memory properly aligned.", - 803d880: 697b ldr r3, [r7, #20] - 803d882: f003 0303 and.w r3, r3, #3 - 803d886: 2b00 cmp r3, #0 - 803d888: d006 beq.n 803d898 - 803d88a: 4b15 ldr r3, [pc, #84] ; (803d8e0 ) - 803d88c: f240 32bb movw r2, #955 ; 0x3bb - 803d890: 4919 ldr r1, [pc, #100] ; (803d8f8 ) - 803d892: 4815 ldr r0, [pc, #84] ; (803d8e8 ) - 803d894: f00a fb86 bl 8047fa4 + 803d8c0: 697b ldr r3, [r7, #20] + 803d8c2: f003 0303 and.w r3, r3, #3 + 803d8c6: 2b00 cmp r3, #0 + 803d8c8: d006 beq.n 803d8d8 + 803d8ca: 4b15 ldr r3, [pc, #84] ; (803d920 ) + 803d8cc: f240 32bb movw r2, #955 ; 0x3bb + 803d8d0: 4919 ldr r1, [pc, #100] ; (803d938 ) + 803d8d2: 4815 ldr r0, [pc, #84] ; (803d928 ) + 803d8d4: f00a fb86 bl 8047fe4 ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0); LWIP_ASSERT("mem_malloc: sanity check alignment", - 803d898: 697b ldr r3, [r7, #20] - 803d89a: f003 0303 and.w r3, r3, #3 - 803d89e: 2b00 cmp r3, #0 - 803d8a0: d006 beq.n 803d8b0 - 803d8a2: 4b0f ldr r3, [pc, #60] ; (803d8e0 ) - 803d8a4: f240 32bd movw r2, #957 ; 0x3bd - 803d8a8: 4914 ldr r1, [pc, #80] ; (803d8fc ) - 803d8aa: 480f ldr r0, [pc, #60] ; (803d8e8 ) - 803d8ac: f00a fb7a bl 8047fa4 + 803d8d8: 697b ldr r3, [r7, #20] + 803d8da: f003 0303 and.w r3, r3, #3 + 803d8de: 2b00 cmp r3, #0 + 803d8e0: d006 beq.n 803d8f0 + 803d8e2: 4b0f ldr r3, [pc, #60] ; (803d920 ) + 803d8e4: f240 32bd movw r2, #957 ; 0x3bd + 803d8e8: 4914 ldr r1, [pc, #80] ; (803d93c ) + 803d8ea: 480f ldr r0, [pc, #60] ; (803d928 ) + 803d8ec: f00a fb7a bl 8047fe4 #if MEM_OVERFLOW_CHECK mem_overflow_init_element(mem, size_in); #endif MEM_SANITY(); return (u8_t *)mem + SIZEOF_STRUCT_MEM + MEM_SANITY_OFFSET; - 803d8b0: 697b ldr r3, [r7, #20] - 803d8b2: 3308 adds r3, #8 - 803d8b4: e00e b.n 803d8d4 + 803d8f0: 697b ldr r3, [r7, #20] + 803d8f2: 3308 adds r3, #8 + 803d8f4: e00e b.n 803d914 ptr = ptr_to_mem(ptr)->next) { - 803d8b6: 8bfb ldrh r3, [r7, #30] - 803d8b8: 4618 mov r0, r3 - 803d8ba: f7ff fc87 bl 803d1cc - 803d8be: 4603 mov r3, r0 - 803d8c0: 881b ldrh r3, [r3, #0] - 803d8c2: 83fb strh r3, [r7, #30] + 803d8f6: 8bfb ldrh r3, [r7, #30] + 803d8f8: 4618 mov r0, r3 + 803d8fa: f7ff fc87 bl 803d20c + 803d8fe: 4603 mov r3, r0 + 803d900: 881b ldrh r3, [r3, #0] + 803d902: 83fb strh r3, [r7, #30] for (ptr = mem_to_ptr(lfree); ptr < MEM_SIZE_ALIGNED - size; - 803d8c4: 8bfa ldrh r2, [r7, #30] - 803d8c6: 8bbb ldrh r3, [r7, #28] - 803d8c8: f5c3 63c8 rsb r3, r3, #1600 ; 0x640 - 803d8cc: 429a cmp r2, r3 - 803d8ce: f4ff af44 bcc.w 803d75a + 803d904: 8bfa ldrh r2, [r7, #30] + 803d906: 8bbb ldrh r3, [r7, #28] + 803d908: f5c3 63c8 rsb r3, r3, #1600 ; 0x640 + 803d90c: 429a cmp r2, r3 + 803d90e: f4ff af44 bcc.w 803d79a #endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ MEM_STATS_INC(err); LWIP_MEM_ALLOC_UNPROTECT(); sys_mutex_unlock(&mem_mutex); LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size)); return NULL; - 803d8d2: 2300 movs r3, #0 -} - 803d8d4: 4618 mov r0, r3 - 803d8d6: 3720 adds r7, #32 - 803d8d8: 46bd mov sp, r7 - 803d8da: bd80 pop {r7, pc} - 803d8dc: 2400bb6c .word 0x2400bb6c - 803d8e0: 0804a1b8 .word 0x0804a1b8 - 803d8e4: 0804a360 .word 0x0804a360 - 803d8e8: 0804a200 .word 0x0804a200 - 803d8ec: 2400bb68 .word 0x2400bb68 - 803d8f0: 0804a374 .word 0x0804a374 - 803d8f4: 0804a390 .word 0x0804a390 - 803d8f8: 0804a3c0 .word 0x0804a3c0 - 803d8fc: 0804a3f0 .word 0x0804a3f0 - -0803d900 : + 803d912: 2300 movs r3, #0 +} + 803d914: 4618 mov r0, r3 + 803d916: 3720 adds r7, #32 + 803d918: 46bd mov sp, r7 + 803d91a: bd80 pop {r7, pc} + 803d91c: 2400bb6c .word 0x2400bb6c + 803d920: 0804a1f8 .word 0x0804a1f8 + 803d924: 0804a3a0 .word 0x0804a3a0 + 803d928: 0804a240 .word 0x0804a240 + 803d92c: 2400bb68 .word 0x2400bb68 + 803d930: 0804a3b4 .word 0x0804a3b4 + 803d934: 0804a3d0 .word 0x0804a3d0 + 803d938: 0804a400 .word 0x0804a400 + 803d93c: 0804a430 .word 0x0804a430 + +0803d940 : * * @param desc pool to initialize */ void memp_init_pool(const struct memp_desc *desc) { - 803d900: b480 push {r7} - 803d902: b085 sub sp, #20 - 803d904: af00 add r7, sp, #0 - 803d906: 6078 str r0, [r7, #4] + 803d940: b480 push {r7} + 803d942: b085 sub sp, #20 + 803d944: af00 add r7, sp, #0 + 803d946: 6078 str r0, [r7, #4] LWIP_UNUSED_ARG(desc); #else int i; struct memp *memp; *desc->tab = NULL; - 803d908: 687b ldr r3, [r7, #4] - 803d90a: 689b ldr r3, [r3, #8] - 803d90c: 2200 movs r2, #0 - 803d90e: 601a str r2, [r3, #0] + 803d948: 687b ldr r3, [r7, #4] + 803d94a: 689b ldr r3, [r3, #8] + 803d94c: 2200 movs r2, #0 + 803d94e: 601a str r2, [r3, #0] memp = (struct memp *)LWIP_MEM_ALIGN(desc->base); - 803d910: 687b ldr r3, [r7, #4] - 803d912: 685b ldr r3, [r3, #4] - 803d914: 3303 adds r3, #3 - 803d916: f023 0303 bic.w r3, r3, #3 - 803d91a: 60bb str r3, [r7, #8] + 803d950: 687b ldr r3, [r7, #4] + 803d952: 685b ldr r3, [r3, #4] + 803d954: 3303 adds r3, #3 + 803d956: f023 0303 bic.w r3, r3, #3 + 803d95a: 60bb str r3, [r7, #8] + MEM_SANITY_REGION_AFTER_ALIGNED #endif )); #endif /* create a linked list of memp elements */ for (i = 0; i < desc->num; ++i) { - 803d91c: 2300 movs r3, #0 - 803d91e: 60fb str r3, [r7, #12] - 803d920: e011 b.n 803d946 + 803d95c: 2300 movs r3, #0 + 803d95e: 60fb str r3, [r7, #12] + 803d960: e011 b.n 803d986 memp->next = *desc->tab; - 803d922: 687b ldr r3, [r7, #4] - 803d924: 689b ldr r3, [r3, #8] - 803d926: 681a ldr r2, [r3, #0] - 803d928: 68bb ldr r3, [r7, #8] - 803d92a: 601a str r2, [r3, #0] + 803d962: 687b ldr r3, [r7, #4] + 803d964: 689b ldr r3, [r3, #8] + 803d966: 681a ldr r2, [r3, #0] + 803d968: 68bb ldr r3, [r7, #8] + 803d96a: 601a str r2, [r3, #0] *desc->tab = memp; - 803d92c: 687b ldr r3, [r7, #4] - 803d92e: 689b ldr r3, [r3, #8] - 803d930: 68ba ldr r2, [r7, #8] - 803d932: 601a str r2, [r3, #0] + 803d96c: 687b ldr r3, [r7, #4] + 803d96e: 689b ldr r3, [r3, #8] + 803d970: 68ba ldr r2, [r7, #8] + 803d972: 601a str r2, [r3, #0] #if MEMP_OVERFLOW_CHECK memp_overflow_init_element(memp, desc); #endif /* MEMP_OVERFLOW_CHECK */ /* cast through void* to get rid of alignment warnings */ memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + desc->size - 803d934: 687b ldr r3, [r7, #4] - 803d936: 881b ldrh r3, [r3, #0] - 803d938: 461a mov r2, r3 - 803d93a: 68bb ldr r3, [r7, #8] - 803d93c: 4413 add r3, r2 - 803d93e: 60bb str r3, [r7, #8] + 803d974: 687b ldr r3, [r7, #4] + 803d976: 881b ldrh r3, [r3, #0] + 803d978: 461a mov r2, r3 + 803d97a: 68bb ldr r3, [r7, #8] + 803d97c: 4413 add r3, r2 + 803d97e: 60bb str r3, [r7, #8] for (i = 0; i < desc->num; ++i) { - 803d940: 68fb ldr r3, [r7, #12] - 803d942: 3301 adds r3, #1 - 803d944: 60fb str r3, [r7, #12] - 803d946: 687b ldr r3, [r7, #4] - 803d948: 885b ldrh r3, [r3, #2] - 803d94a: 461a mov r2, r3 - 803d94c: 68fb ldr r3, [r7, #12] - 803d94e: 4293 cmp r3, r2 - 803d950: dbe7 blt.n 803d922 + 803d980: 68fb ldr r3, [r7, #12] + 803d982: 3301 adds r3, #1 + 803d984: 60fb str r3, [r7, #12] + 803d986: 687b ldr r3, [r7, #4] + 803d988: 885b ldrh r3, [r3, #2] + 803d98a: 461a mov r2, r3 + 803d98c: 68fb ldr r3, [r7, #12] + 803d98e: 4293 cmp r3, r2 + 803d990: dbe7 blt.n 803d962 #endif /* !MEMP_MEM_MALLOC */ #if MEMP_STATS && (defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY) desc->stats->name = desc->desc; #endif /* MEMP_STATS && (defined(LWIP_DEBUG) || LWIP_STATS_DISPLAY) */ } - 803d952: bf00 nop - 803d954: bf00 nop - 803d956: 3714 adds r7, #20 - 803d958: 46bd mov sp, r7 - 803d95a: f85d 7b04 ldr.w r7, [sp], #4 - 803d95e: 4770 bx lr + 803d992: bf00 nop + 803d994: bf00 nop + 803d996: 3714 adds r7, #20 + 803d998: 46bd mov sp, r7 + 803d99a: f85d 7b04 ldr.w r7, [sp], #4 + 803d99e: 4770 bx lr -0803d960 : +0803d9a0 : * * Carves out memp_memory into linked lists for each pool-type. */ void memp_init(void) { - 803d960: b580 push {r7, lr} - 803d962: b082 sub sp, #8 - 803d964: af00 add r7, sp, #0 + 803d9a0: b580 push {r7, lr} + 803d9a2: b082 sub sp, #8 + 803d9a4: af00 add r7, sp, #0 u16_t i; /* for every pool: */ for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { - 803d966: 2300 movs r3, #0 - 803d968: 80fb strh r3, [r7, #6] - 803d96a: e009 b.n 803d980 + 803d9a6: 2300 movs r3, #0 + 803d9a8: 80fb strh r3, [r7, #6] + 803d9aa: e009 b.n 803d9c0 memp_init_pool(memp_pools[i]); - 803d96c: 88fb ldrh r3, [r7, #6] - 803d96e: 4a08 ldr r2, [pc, #32] ; (803d990 ) - 803d970: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 803d974: 4618 mov r0, r3 - 803d976: f7ff ffc3 bl 803d900 + 803d9ac: 88fb ldrh r3, [r7, #6] + 803d9ae: 4a08 ldr r2, [pc, #32] ; (803d9d0 ) + 803d9b0: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 803d9b4: 4618 mov r0, r3 + 803d9b6: f7ff ffc3 bl 803d940 for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { - 803d97a: 88fb ldrh r3, [r7, #6] - 803d97c: 3301 adds r3, #1 - 803d97e: 80fb strh r3, [r7, #6] - 803d980: 88fb ldrh r3, [r7, #6] - 803d982: 2b08 cmp r3, #8 - 803d984: d9f2 bls.n 803d96c + 803d9ba: 88fb ldrh r3, [r7, #6] + 803d9bc: 3301 adds r3, #1 + 803d9be: 80fb strh r3, [r7, #6] + 803d9c0: 88fb ldrh r3, [r7, #6] + 803d9c2: 2b08 cmp r3, #8 + 803d9c4: d9f2 bls.n 803d9ac #if MEMP_OVERFLOW_CHECK >= 2 /* check everything a first time to see if it worked */ memp_overflow_check_all(); #endif /* MEMP_OVERFLOW_CHECK >= 2 */ } - 803d986: bf00 nop - 803d988: bf00 nop - 803d98a: 3708 adds r7, #8 - 803d98c: 46bd mov sp, r7 - 803d98e: bd80 pop {r7, pc} - 803d990: 0804d424 .word 0x0804d424 + 803d9c6: bf00 nop + 803d9c8: bf00 nop + 803d9ca: 3708 adds r7, #8 + 803d9cc: 46bd mov sp, r7 + 803d9ce: bd80 pop {r7, pc} + 803d9d0: 0804d464 .word 0x0804d464 -0803d994 : +0803d9d4 : #if !MEMP_OVERFLOW_CHECK do_memp_malloc_pool(const struct memp_desc *desc) #else do_memp_malloc_pool_fn(const struct memp_desc *desc, const char *file, const int line) #endif { - 803d994: b580 push {r7, lr} - 803d996: b084 sub sp, #16 - 803d998: af00 add r7, sp, #0 - 803d99a: 6078 str r0, [r7, #4] + 803d9d4: b580 push {r7, lr} + 803d9d6: b084 sub sp, #16 + 803d9d8: af00 add r7, sp, #0 + 803d9da: 6078 str r0, [r7, #4] memp = (struct memp *)mem_malloc(MEMP_SIZE + MEMP_ALIGN_SIZE(desc->size)); SYS_ARCH_PROTECT(old_level); #else /* MEMP_MEM_MALLOC */ SYS_ARCH_PROTECT(old_level); memp = *desc->tab; - 803d99c: 687b ldr r3, [r7, #4] - 803d99e: 689b ldr r3, [r3, #8] - 803d9a0: 681b ldr r3, [r3, #0] - 803d9a2: 60fb str r3, [r7, #12] + 803d9dc: 687b ldr r3, [r7, #4] + 803d9de: 689b ldr r3, [r3, #8] + 803d9e0: 681b ldr r3, [r3, #0] + 803d9e2: 60fb str r3, [r7, #12] #endif /* MEMP_MEM_MALLOC */ if (memp != NULL) { - 803d9a4: 68fb ldr r3, [r7, #12] - 803d9a6: 2b00 cmp r3, #0 - 803d9a8: d012 beq.n 803d9d0 + 803d9e4: 68fb ldr r3, [r7, #12] + 803d9e6: 2b00 cmp r3, #0 + 803d9e8: d012 beq.n 803da10 #if !MEMP_MEM_MALLOC #if MEMP_OVERFLOW_CHECK == 1 memp_overflow_check_element(memp, desc); #endif /* MEMP_OVERFLOW_CHECK */ *desc->tab = memp->next; - 803d9aa: 687b ldr r3, [r7, #4] - 803d9ac: 689b ldr r3, [r3, #8] - 803d9ae: 68fa ldr r2, [r7, #12] - 803d9b0: 6812 ldr r2, [r2, #0] - 803d9b2: 601a str r2, [r3, #0] + 803d9ea: 687b ldr r3, [r7, #4] + 803d9ec: 689b ldr r3, [r3, #8] + 803d9ee: 68fa ldr r2, [r7, #12] + 803d9f0: 6812 ldr r2, [r2, #0] + 803d9f2: 601a str r2, [r3, #0] memp->line = line; #if MEMP_MEM_MALLOC memp_overflow_init_element(memp, desc); #endif /* MEMP_MEM_MALLOC */ #endif /* MEMP_OVERFLOW_CHECK */ LWIP_ASSERT("memp_malloc: memp properly aligned", - 803d9b4: 68fb ldr r3, [r7, #12] - 803d9b6: f003 0303 and.w r3, r3, #3 - 803d9ba: 2b00 cmp r3, #0 - 803d9bc: d006 beq.n 803d9cc - 803d9be: 4b07 ldr r3, [pc, #28] ; (803d9dc ) - 803d9c0: f44f 728c mov.w r2, #280 ; 0x118 - 803d9c4: 4906 ldr r1, [pc, #24] ; (803d9e0 ) - 803d9c6: 4807 ldr r0, [pc, #28] ; (803d9e4 ) - 803d9c8: f00a faec bl 8047fa4 + 803d9f4: 68fb ldr r3, [r7, #12] + 803d9f6: f003 0303 and.w r3, r3, #3 + 803d9fa: 2b00 cmp r3, #0 + 803d9fc: d006 beq.n 803da0c + 803d9fe: 4b07 ldr r3, [pc, #28] ; (803da1c ) + 803da00: f44f 728c mov.w r2, #280 ; 0x118 + 803da04: 4906 ldr r1, [pc, #24] ; (803da20 ) + 803da06: 4807 ldr r0, [pc, #28] ; (803da24 ) + 803da08: f00a faec bl 8047fe4 desc->stats->max = desc->stats->used; } #endif SYS_ARCH_UNPROTECT(old_level); /* cast through u8_t* to get rid of alignment warnings */ return ((u8_t *)memp + MEMP_SIZE); - 803d9cc: 68fb ldr r3, [r7, #12] - 803d9ce: e000 b.n 803d9d2 + 803da0c: 68fb ldr r3, [r7, #12] + 803da0e: e000 b.n 803da12 #endif SYS_ARCH_UNPROTECT(old_level); LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", desc->desc)); } return NULL; - 803d9d0: 2300 movs r3, #0 -} - 803d9d2: 4618 mov r0, r3 - 803d9d4: 3710 adds r7, #16 - 803d9d6: 46bd mov sp, r7 - 803d9d8: bd80 pop {r7, pc} - 803d9da: bf00 nop - 803d9dc: 0804a414 .word 0x0804a414 - 803d9e0: 0804a444 .word 0x0804a444 - 803d9e4: 0804a468 .word 0x0804a468 - -0803d9e8 : + 803da10: 2300 movs r3, #0 +} + 803da12: 4618 mov r0, r3 + 803da14: 3710 adds r7, #16 + 803da16: 46bd mov sp, r7 + 803da18: bd80 pop {r7, pc} + 803da1a: bf00 nop + 803da1c: 0804a454 .word 0x0804a454 + 803da20: 0804a484 .word 0x0804a484 + 803da24: 0804a4a8 .word 0x0804a4a8 + +0803da28 : #if !MEMP_OVERFLOW_CHECK memp_malloc_pool(const struct memp_desc *desc) #else memp_malloc_pool_fn(const struct memp_desc *desc, const char *file, const int line) #endif { - 803d9e8: b580 push {r7, lr} - 803d9ea: b082 sub sp, #8 - 803d9ec: af00 add r7, sp, #0 - 803d9ee: 6078 str r0, [r7, #4] + 803da28: b580 push {r7, lr} + 803da2a: b082 sub sp, #8 + 803da2c: af00 add r7, sp, #0 + 803da2e: 6078 str r0, [r7, #4] LWIP_ASSERT("invalid pool desc", desc != NULL); - 803d9f0: 687b ldr r3, [r7, #4] - 803d9f2: 2b00 cmp r3, #0 - 803d9f4: d106 bne.n 803da04 - 803d9f6: 4b0a ldr r3, [pc, #40] ; (803da20 ) - 803d9f8: f44f 729e mov.w r2, #316 ; 0x13c - 803d9fc: 4909 ldr r1, [pc, #36] ; (803da24 ) - 803d9fe: 480a ldr r0, [pc, #40] ; (803da28 ) - 803da00: f00a fad0 bl 8047fa4 + 803da30: 687b ldr r3, [r7, #4] + 803da32: 2b00 cmp r3, #0 + 803da34: d106 bne.n 803da44 + 803da36: 4b0a ldr r3, [pc, #40] ; (803da60 ) + 803da38: f44f 729e mov.w r2, #316 ; 0x13c + 803da3c: 4909 ldr r1, [pc, #36] ; (803da64 ) + 803da3e: 480a ldr r0, [pc, #40] ; (803da68 ) + 803da40: f00a fad0 bl 8047fe4 if (desc == NULL) { - 803da04: 687b ldr r3, [r7, #4] - 803da06: 2b00 cmp r3, #0 - 803da08: d101 bne.n 803da0e + 803da44: 687b ldr r3, [r7, #4] + 803da46: 2b00 cmp r3, #0 + 803da48: d101 bne.n 803da4e return NULL; - 803da0a: 2300 movs r3, #0 - 803da0c: e003 b.n 803da16 + 803da4a: 2300 movs r3, #0 + 803da4c: e003 b.n 803da56 } #if !MEMP_OVERFLOW_CHECK return do_memp_malloc_pool(desc); - 803da0e: 6878 ldr r0, [r7, #4] - 803da10: f7ff ffc0 bl 803d994 - 803da14: 4603 mov r3, r0 + 803da4e: 6878 ldr r0, [r7, #4] + 803da50: f7ff ffc0 bl 803d9d4 + 803da54: 4603 mov r3, r0 #else return do_memp_malloc_pool_fn(desc, file, line); #endif } - 803da16: 4618 mov r0, r3 - 803da18: 3708 adds r7, #8 - 803da1a: 46bd mov sp, r7 - 803da1c: bd80 pop {r7, pc} - 803da1e: bf00 nop - 803da20: 0804a414 .word 0x0804a414 - 803da24: 0804a490 .word 0x0804a490 - 803da28: 0804a468 .word 0x0804a468 - -0803da2c : + 803da56: 4618 mov r0, r3 + 803da58: 3708 adds r7, #8 + 803da5a: 46bd mov sp, r7 + 803da5c: bd80 pop {r7, pc} + 803da5e: bf00 nop + 803da60: 0804a454 .word 0x0804a454 + 803da64: 0804a4d0 .word 0x0804a4d0 + 803da68: 0804a4a8 .word 0x0804a4a8 + +0803da6c : #if !MEMP_OVERFLOW_CHECK memp_malloc(memp_t type) #else memp_malloc_fn(memp_t type, const char *file, const int line) #endif { - 803da2c: b580 push {r7, lr} - 803da2e: b084 sub sp, #16 - 803da30: af00 add r7, sp, #0 - 803da32: 4603 mov r3, r0 - 803da34: 71fb strb r3, [r7, #7] + 803da6c: b580 push {r7, lr} + 803da6e: b084 sub sp, #16 + 803da70: af00 add r7, sp, #0 + 803da72: 4603 mov r3, r0 + 803da74: 71fb strb r3, [r7, #7] void *memp; LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); - 803da36: 79fb ldrb r3, [r7, #7] - 803da38: 2b08 cmp r3, #8 - 803da3a: d908 bls.n 803da4e - 803da3c: 4b0a ldr r3, [pc, #40] ; (803da68 ) - 803da3e: f240 1257 movw r2, #343 ; 0x157 - 803da42: 490a ldr r1, [pc, #40] ; (803da6c ) - 803da44: 480a ldr r0, [pc, #40] ; (803da70 ) - 803da46: f00a faad bl 8047fa4 - 803da4a: 2300 movs r3, #0 - 803da4c: e008 b.n 803da60 + 803da76: 79fb ldrb r3, [r7, #7] + 803da78: 2b08 cmp r3, #8 + 803da7a: d908 bls.n 803da8e + 803da7c: 4b0a ldr r3, [pc, #40] ; (803daa8 ) + 803da7e: f240 1257 movw r2, #343 ; 0x157 + 803da82: 490a ldr r1, [pc, #40] ; (803daac ) + 803da84: 480a ldr r0, [pc, #40] ; (803dab0 ) + 803da86: f00a faad bl 8047fe4 + 803da8a: 2300 movs r3, #0 + 803da8c: e008 b.n 803daa0 #if MEMP_OVERFLOW_CHECK >= 2 memp_overflow_check_all(); #endif /* MEMP_OVERFLOW_CHECK >= 2 */ #if !MEMP_OVERFLOW_CHECK memp = do_memp_malloc_pool(memp_pools[type]); - 803da4e: 79fb ldrb r3, [r7, #7] - 803da50: 4a08 ldr r2, [pc, #32] ; (803da74 ) - 803da52: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 803da56: 4618 mov r0, r3 - 803da58: f7ff ff9c bl 803d994 - 803da5c: 60f8 str r0, [r7, #12] + 803da8e: 79fb ldrb r3, [r7, #7] + 803da90: 4a08 ldr r2, [pc, #32] ; (803dab4 ) + 803da92: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 803da96: 4618 mov r0, r3 + 803da98: f7ff ff9c bl 803d9d4 + 803da9c: 60f8 str r0, [r7, #12] #else memp = do_memp_malloc_pool_fn(memp_pools[type], file, line); #endif return memp; - 803da5e: 68fb ldr r3, [r7, #12] + 803da9e: 68fb ldr r3, [r7, #12] } - 803da60: 4618 mov r0, r3 - 803da62: 3710 adds r7, #16 - 803da64: 46bd mov sp, r7 - 803da66: bd80 pop {r7, pc} - 803da68: 0804a414 .word 0x0804a414 - 803da6c: 0804a4a4 .word 0x0804a4a4 - 803da70: 0804a468 .word 0x0804a468 - 803da74: 0804d424 .word 0x0804d424 + 803daa0: 4618 mov r0, r3 + 803daa2: 3710 adds r7, #16 + 803daa4: 46bd mov sp, r7 + 803daa6: bd80 pop {r7, pc} + 803daa8: 0804a454 .word 0x0804a454 + 803daac: 0804a4e4 .word 0x0804a4e4 + 803dab0: 0804a4a8 .word 0x0804a4a8 + 803dab4: 0804d464 .word 0x0804d464 -0803da78 : +0803dab8 : static void do_memp_free_pool(const struct memp_desc *desc, void *mem) { - 803da78: b580 push {r7, lr} - 803da7a: b084 sub sp, #16 - 803da7c: af00 add r7, sp, #0 - 803da7e: 6078 str r0, [r7, #4] - 803da80: 6039 str r1, [r7, #0] + 803dab8: b580 push {r7, lr} + 803daba: b084 sub sp, #16 + 803dabc: af00 add r7, sp, #0 + 803dabe: 6078 str r0, [r7, #4] + 803dac0: 6039 str r1, [r7, #0] struct memp *memp; SYS_ARCH_DECL_PROTECT(old_level); LWIP_ASSERT("memp_free: mem properly aligned", - 803da82: 683b ldr r3, [r7, #0] - 803da84: f003 0303 and.w r3, r3, #3 - 803da88: 2b00 cmp r3, #0 - 803da8a: d006 beq.n 803da9a - 803da8c: 4b0a ldr r3, [pc, #40] ; (803dab8 ) - 803da8e: f44f 72b6 mov.w r2, #364 ; 0x16c - 803da92: 490a ldr r1, [pc, #40] ; (803dabc ) - 803da94: 480a ldr r0, [pc, #40] ; (803dac0 ) - 803da96: f00a fa85 bl 8047fa4 + 803dac2: 683b ldr r3, [r7, #0] + 803dac4: f003 0303 and.w r3, r3, #3 + 803dac8: 2b00 cmp r3, #0 + 803daca: d006 beq.n 803dada + 803dacc: 4b0a ldr r3, [pc, #40] ; (803daf8 ) + 803dace: f44f 72b6 mov.w r2, #364 ; 0x16c + 803dad2: 490a ldr r1, [pc, #40] ; (803dafc ) + 803dad4: 480a ldr r0, [pc, #40] ; (803db00 ) + 803dad6: f00a fa85 bl 8047fe4 ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); /* cast through void* to get rid of alignment warnings */ memp = (struct memp *)(void *)((u8_t *)mem - MEMP_SIZE); - 803da9a: 683b ldr r3, [r7, #0] - 803da9c: 60fb str r3, [r7, #12] + 803dada: 683b ldr r3, [r7, #0] + 803dadc: 60fb str r3, [r7, #12] #if MEMP_MEM_MALLOC LWIP_UNUSED_ARG(desc); SYS_ARCH_UNPROTECT(old_level); mem_free(memp); #else /* MEMP_MEM_MALLOC */ memp->next = *desc->tab; - 803da9e: 687b ldr r3, [r7, #4] - 803daa0: 689b ldr r3, [r3, #8] - 803daa2: 681a ldr r2, [r3, #0] - 803daa4: 68fb ldr r3, [r7, #12] - 803daa6: 601a str r2, [r3, #0] + 803dade: 687b ldr r3, [r7, #4] + 803dae0: 689b ldr r3, [r3, #8] + 803dae2: 681a ldr r2, [r3, #0] + 803dae4: 68fb ldr r3, [r7, #12] + 803dae6: 601a str r2, [r3, #0] *desc->tab = memp; - 803daa8: 687b ldr r3, [r7, #4] - 803daaa: 689b ldr r3, [r3, #8] - 803daac: 68fa ldr r2, [r7, #12] - 803daae: 601a str r2, [r3, #0] + 803dae8: 687b ldr r3, [r7, #4] + 803daea: 689b ldr r3, [r3, #8] + 803daec: 68fa ldr r2, [r7, #12] + 803daee: 601a str r2, [r3, #0] LWIP_ASSERT("memp sanity", memp_sanity(desc)); #endif /* MEMP_SANITY_CHECK */ SYS_ARCH_UNPROTECT(old_level); #endif /* !MEMP_MEM_MALLOC */ } - 803dab0: bf00 nop - 803dab2: 3710 adds r7, #16 - 803dab4: 46bd mov sp, r7 - 803dab6: bd80 pop {r7, pc} - 803dab8: 0804a414 .word 0x0804a414 - 803dabc: 0804a4c4 .word 0x0804a4c4 - 803dac0: 0804a468 .word 0x0804a468 + 803daf0: bf00 nop + 803daf2: 3710 adds r7, #16 + 803daf4: 46bd mov sp, r7 + 803daf6: bd80 pop {r7, pc} + 803daf8: 0804a454 .word 0x0804a454 + 803dafc: 0804a504 .word 0x0804a504 + 803db00: 0804a4a8 .word 0x0804a4a8 -0803dac4 : +0803db04 : * @param desc the pool where to put mem * @param mem the memp element to free */ void memp_free_pool(const struct memp_desc *desc, void *mem) { - 803dac4: b580 push {r7, lr} - 803dac6: b082 sub sp, #8 - 803dac8: af00 add r7, sp, #0 - 803daca: 6078 str r0, [r7, #4] - 803dacc: 6039 str r1, [r7, #0] + 803db04: b580 push {r7, lr} + 803db06: b082 sub sp, #8 + 803db08: af00 add r7, sp, #0 + 803db0a: 6078 str r0, [r7, #4] + 803db0c: 6039 str r1, [r7, #0] LWIP_ASSERT("invalid pool desc", desc != NULL); - 803dace: 687b ldr r3, [r7, #4] - 803dad0: 2b00 cmp r3, #0 - 803dad2: d106 bne.n 803dae2 - 803dad4: 4b0a ldr r3, [pc, #40] ; (803db00 ) - 803dad6: f240 1295 movw r2, #405 ; 0x195 - 803dada: 490a ldr r1, [pc, #40] ; (803db04 ) - 803dadc: 480a ldr r0, [pc, #40] ; (803db08 ) - 803dade: f00a fa61 bl 8047fa4 + 803db0e: 687b ldr r3, [r7, #4] + 803db10: 2b00 cmp r3, #0 + 803db12: d106 bne.n 803db22 + 803db14: 4b0a ldr r3, [pc, #40] ; (803db40 ) + 803db16: f240 1295 movw r2, #405 ; 0x195 + 803db1a: 490a ldr r1, [pc, #40] ; (803db44 ) + 803db1c: 480a ldr r0, [pc, #40] ; (803db48 ) + 803db1e: f00a fa61 bl 8047fe4 if ((desc == NULL) || (mem == NULL)) { - 803dae2: 687b ldr r3, [r7, #4] - 803dae4: 2b00 cmp r3, #0 - 803dae6: d007 beq.n 803daf8 - 803dae8: 683b ldr r3, [r7, #0] - 803daea: 2b00 cmp r3, #0 - 803daec: d004 beq.n 803daf8 + 803db22: 687b ldr r3, [r7, #4] + 803db24: 2b00 cmp r3, #0 + 803db26: d007 beq.n 803db38 + 803db28: 683b ldr r3, [r7, #0] + 803db2a: 2b00 cmp r3, #0 + 803db2c: d004 beq.n 803db38 return; } do_memp_free_pool(desc, mem); - 803daee: 6839 ldr r1, [r7, #0] - 803daf0: 6878 ldr r0, [r7, #4] - 803daf2: f7ff ffc1 bl 803da78 - 803daf6: e000 b.n 803dafa + 803db2e: 6839 ldr r1, [r7, #0] + 803db30: 6878 ldr r0, [r7, #4] + 803db32: f7ff ffc1 bl 803dab8 + 803db36: e000 b.n 803db3a return; - 803daf8: bf00 nop + 803db38: bf00 nop } - 803dafa: 3708 adds r7, #8 - 803dafc: 46bd mov sp, r7 - 803dafe: bd80 pop {r7, pc} - 803db00: 0804a414 .word 0x0804a414 - 803db04: 0804a490 .word 0x0804a490 - 803db08: 0804a468 .word 0x0804a468 + 803db3a: 3708 adds r7, #8 + 803db3c: 46bd mov sp, r7 + 803db3e: bd80 pop {r7, pc} + 803db40: 0804a454 .word 0x0804a454 + 803db44: 0804a4d0 .word 0x0804a4d0 + 803db48: 0804a4a8 .word 0x0804a4a8 -0803db0c : +0803db4c : * @param type the pool where to put mem * @param mem the memp element to free */ void memp_free(memp_t type, void *mem) { - 803db0c: b580 push {r7, lr} - 803db0e: b082 sub sp, #8 - 803db10: af00 add r7, sp, #0 - 803db12: 4603 mov r3, r0 - 803db14: 6039 str r1, [r7, #0] - 803db16: 71fb strb r3, [r7, #7] + 803db4c: b580 push {r7, lr} + 803db4e: b082 sub sp, #8 + 803db50: af00 add r7, sp, #0 + 803db52: 4603 mov r3, r0 + 803db54: 6039 str r1, [r7, #0] + 803db56: 71fb strb r3, [r7, #7] #ifdef LWIP_HOOK_MEMP_AVAILABLE struct memp *old_first; #endif LWIP_ERROR("memp_free: type < MEMP_MAX", (type < MEMP_MAX), return;); - 803db18: 79fb ldrb r3, [r7, #7] - 803db1a: 2b08 cmp r3, #8 - 803db1c: d907 bls.n 803db2e - 803db1e: 4b0c ldr r3, [pc, #48] ; (803db50 ) - 803db20: f44f 72d5 mov.w r2, #426 ; 0x1aa - 803db24: 490b ldr r1, [pc, #44] ; (803db54 ) - 803db26: 480c ldr r0, [pc, #48] ; (803db58 ) - 803db28: f00a fa3c bl 8047fa4 - 803db2c: e00c b.n 803db48 + 803db58: 79fb ldrb r3, [r7, #7] + 803db5a: 2b08 cmp r3, #8 + 803db5c: d907 bls.n 803db6e + 803db5e: 4b0c ldr r3, [pc, #48] ; (803db90 ) + 803db60: f44f 72d5 mov.w r2, #426 ; 0x1aa + 803db64: 490b ldr r1, [pc, #44] ; (803db94 ) + 803db66: 480c ldr r0, [pc, #48] ; (803db98 ) + 803db68: f00a fa3c bl 8047fe4 + 803db6c: e00c b.n 803db88 if (mem == NULL) { - 803db2e: 683b ldr r3, [r7, #0] - 803db30: 2b00 cmp r3, #0 - 803db32: d008 beq.n 803db46 + 803db6e: 683b ldr r3, [r7, #0] + 803db70: 2b00 cmp r3, #0 + 803db72: d008 beq.n 803db86 #ifdef LWIP_HOOK_MEMP_AVAILABLE old_first = *memp_pools[type]->tab; #endif do_memp_free_pool(memp_pools[type], mem); - 803db34: 79fb ldrb r3, [r7, #7] - 803db36: 4a09 ldr r2, [pc, #36] ; (803db5c ) - 803db38: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 803db3c: 6839 ldr r1, [r7, #0] - 803db3e: 4618 mov r0, r3 - 803db40: f7ff ff9a bl 803da78 - 803db44: e000 b.n 803db48 + 803db74: 79fb ldrb r3, [r7, #7] + 803db76: 4a09 ldr r2, [pc, #36] ; (803db9c ) + 803db78: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 803db7c: 6839 ldr r1, [r7, #0] + 803db7e: 4618 mov r0, r3 + 803db80: f7ff ff9a bl 803dab8 + 803db84: e000 b.n 803db88 return; - 803db46: bf00 nop + 803db86: bf00 nop #ifdef LWIP_HOOK_MEMP_AVAILABLE if (old_first == NULL) { LWIP_HOOK_MEMP_AVAILABLE(type); } #endif } - 803db48: 3708 adds r7, #8 - 803db4a: 46bd mov sp, r7 - 803db4c: bd80 pop {r7, pc} - 803db4e: bf00 nop - 803db50: 0804a414 .word 0x0804a414 - 803db54: 0804a4e4 .word 0x0804a4e4 - 803db58: 0804a468 .word 0x0804a468 - 803db5c: 0804d424 .word 0x0804d424 + 803db88: 3708 adds r7, #8 + 803db8a: 46bd mov sp, r7 + 803db8c: bd80 pop {r7, pc} + 803db8e: bf00 nop + 803db90: 0804a454 .word 0x0804a454 + 803db94: 0804a524 .word 0x0804a524 + 803db98: 0804a4a8 .word 0x0804a4a8 + 803db9c: 0804d464 .word 0x0804d464 -0803db60 : +0803dba0 : } #endif /* LWIP_HAVE_LOOPIF */ void netif_init(void) { - 803db60: b480 push {r7} - 803db62: af00 add r7, sp, #0 + 803dba0: b480 push {r7} + 803dba2: af00 add r7, sp, #0 netif_set_link_up(&loop_netif); netif_set_up(&loop_netif); #endif /* LWIP_HAVE_LOOPIF */ } - 803db64: bf00 nop - 803db66: 46bd mov sp, r7 - 803db68: f85d 7b04 ldr.w r7, [sp], #4 - 803db6c: 4770 bx lr + 803dba4: bf00 nop + 803dba6: 46bd mov sp, r7 + 803dba8: f85d 7b04 ldr.w r7, [sp], #4 + 803dbac: 4770 bx lr ... -0803db70 : +0803dbb0 : netif_add(struct netif *netif, #if LWIP_IPV4 const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, #endif /* LWIP_IPV4 */ void *state, netif_init_fn init, netif_input_fn input) { - 803db70: b580 push {r7, lr} - 803db72: b086 sub sp, #24 - 803db74: af00 add r7, sp, #0 - 803db76: 60f8 str r0, [r7, #12] - 803db78: 60b9 str r1, [r7, #8] - 803db7a: 607a str r2, [r7, #4] - 803db7c: 603b str r3, [r7, #0] + 803dbb0: b580 push {r7, lr} + 803dbb2: b086 sub sp, #24 + 803dbb4: af00 add r7, sp, #0 + 803dbb6: 60f8 str r0, [r7, #12] + 803dbb8: 60b9 str r1, [r7, #8] + 803dbba: 607a str r2, [r7, #4] + 803dbbc: 603b str r3, [r7, #0] LWIP_ASSERT("single netif already set", 0); return NULL; } #endif LWIP_ERROR("netif_add: invalid netif", netif != NULL, return NULL); - 803db7e: 68fb ldr r3, [r7, #12] - 803db80: 2b00 cmp r3, #0 - 803db82: d108 bne.n 803db96 - 803db84: 4b59 ldr r3, [pc, #356] ; (803dcec ) - 803db86: f240 1227 movw r2, #295 ; 0x127 - 803db8a: 4959 ldr r1, [pc, #356] ; (803dcf0 ) - 803db8c: 4859 ldr r0, [pc, #356] ; (803dcf4 ) - 803db8e: f00a fa09 bl 8047fa4 - 803db92: 2300 movs r3, #0 - 803db94: e0a5 b.n 803dce2 + 803dbbe: 68fb ldr r3, [r7, #12] + 803dbc0: 2b00 cmp r3, #0 + 803dbc2: d108 bne.n 803dbd6 + 803dbc4: 4b59 ldr r3, [pc, #356] ; (803dd2c ) + 803dbc6: f240 1227 movw r2, #295 ; 0x127 + 803dbca: 4959 ldr r1, [pc, #356] ; (803dd30 ) + 803dbcc: 4859 ldr r0, [pc, #356] ; (803dd34 ) + 803dbce: f00a fa09 bl 8047fe4 + 803dbd2: 2300 movs r3, #0 + 803dbd4: e0a5 b.n 803dd22 LWIP_ERROR("netif_add: No init function given", init != NULL, return NULL); - 803db96: 6a7b ldr r3, [r7, #36] ; 0x24 - 803db98: 2b00 cmp r3, #0 - 803db9a: d108 bne.n 803dbae - 803db9c: 4b53 ldr r3, [pc, #332] ; (803dcec ) - 803db9e: f44f 7294 mov.w r2, #296 ; 0x128 - 803dba2: 4955 ldr r1, [pc, #340] ; (803dcf8 ) - 803dba4: 4853 ldr r0, [pc, #332] ; (803dcf4 ) - 803dba6: f00a f9fd bl 8047fa4 - 803dbaa: 2300 movs r3, #0 - 803dbac: e099 b.n 803dce2 + 803dbd6: 6a7b ldr r3, [r7, #36] ; 0x24 + 803dbd8: 2b00 cmp r3, #0 + 803dbda: d108 bne.n 803dbee + 803dbdc: 4b53 ldr r3, [pc, #332] ; (803dd2c ) + 803dbde: f44f 7294 mov.w r2, #296 ; 0x128 + 803dbe2: 4955 ldr r1, [pc, #340] ; (803dd38 ) + 803dbe4: 4853 ldr r0, [pc, #332] ; (803dd34 ) + 803dbe6: f00a f9fd bl 8047fe4 + 803dbea: 2300 movs r3, #0 + 803dbec: e099 b.n 803dd22 #if LWIP_IPV4 if (ipaddr == NULL) { - 803dbae: 68bb ldr r3, [r7, #8] - 803dbb0: 2b00 cmp r3, #0 - 803dbb2: d101 bne.n 803dbb8 + 803dbee: 68bb ldr r3, [r7, #8] + 803dbf0: 2b00 cmp r3, #0 + 803dbf2: d101 bne.n 803dbf8 ipaddr = ip_2_ip4(IP4_ADDR_ANY); - 803dbb4: 4b51 ldr r3, [pc, #324] ; (803dcfc ) - 803dbb6: 60bb str r3, [r7, #8] + 803dbf4: 4b51 ldr r3, [pc, #324] ; (803dd3c ) + 803dbf6: 60bb str r3, [r7, #8] } if (netmask == NULL) { - 803dbb8: 687b ldr r3, [r7, #4] - 803dbba: 2b00 cmp r3, #0 - 803dbbc: d101 bne.n 803dbc2 + 803dbf8: 687b ldr r3, [r7, #4] + 803dbfa: 2b00 cmp r3, #0 + 803dbfc: d101 bne.n 803dc02 netmask = ip_2_ip4(IP4_ADDR_ANY); - 803dbbe: 4b4f ldr r3, [pc, #316] ; (803dcfc ) - 803dbc0: 607b str r3, [r7, #4] + 803dbfe: 4b4f ldr r3, [pc, #316] ; (803dd3c ) + 803dc00: 607b str r3, [r7, #4] } if (gw == NULL) { - 803dbc2: 683b ldr r3, [r7, #0] - 803dbc4: 2b00 cmp r3, #0 - 803dbc6: d101 bne.n 803dbcc + 803dc02: 683b ldr r3, [r7, #0] + 803dc04: 2b00 cmp r3, #0 + 803dc06: d101 bne.n 803dc0c gw = ip_2_ip4(IP4_ADDR_ANY); - 803dbc8: 4b4c ldr r3, [pc, #304] ; (803dcfc ) - 803dbca: 603b str r3, [r7, #0] + 803dc08: 4b4c ldr r3, [pc, #304] ; (803dd3c ) + 803dc0a: 603b str r3, [r7, #0] } /* reset new interface configuration state */ ip_addr_set_zero_ip4(&netif->ip_addr); - 803dbcc: 68fb ldr r3, [r7, #12] - 803dbce: 2200 movs r2, #0 - 803dbd0: 605a str r2, [r3, #4] + 803dc0c: 68fb ldr r3, [r7, #12] + 803dc0e: 2200 movs r2, #0 + 803dc10: 605a str r2, [r3, #4] ip_addr_set_zero_ip4(&netif->netmask); - 803dbd2: 68fb ldr r3, [r7, #12] - 803dbd4: 2200 movs r2, #0 - 803dbd6: 609a str r2, [r3, #8] + 803dc12: 68fb ldr r3, [r7, #12] + 803dc14: 2200 movs r2, #0 + 803dc16: 609a str r2, [r3, #8] ip_addr_set_zero_ip4(&netif->gw); - 803dbd8: 68fb ldr r3, [r7, #12] - 803dbda: 2200 movs r2, #0 - 803dbdc: 60da str r2, [r3, #12] + 803dc18: 68fb ldr r3, [r7, #12] + 803dc1a: 2200 movs r2, #0 + 803dc1c: 60da str r2, [r3, #12] netif->output = netif_null_output_ip4; - 803dbde: 68fb ldr r3, [r7, #12] - 803dbe0: 4a47 ldr r2, [pc, #284] ; (803dd00 ) - 803dbe2: 615a str r2, [r3, #20] + 803dc1e: 68fb ldr r3, [r7, #12] + 803dc20: 4a47 ldr r2, [pc, #284] ; (803dd40 ) + 803dc22: 615a str r2, [r3, #20] #endif /* LWIP_IPV6_ADDRESS_LIFETIMES */ } netif->output_ip6 = netif_null_output_ip6; #endif /* LWIP_IPV6 */ NETIF_SET_CHECKSUM_CTRL(netif, NETIF_CHECKSUM_ENABLE_ALL); netif->mtu = 0; - 803dbe4: 68fb ldr r3, [r7, #12] - 803dbe6: 2200 movs r2, #0 - 803dbe8: 851a strh r2, [r3, #40] ; 0x28 + 803dc24: 68fb ldr r3, [r7, #12] + 803dc26: 2200 movs r2, #0 + 803dc28: 851a strh r2, [r3, #40] ; 0x28 netif->flags = 0; - 803dbea: 68fb ldr r3, [r7, #12] - 803dbec: 2200 movs r2, #0 - 803dbee: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803dc2a: 68fb ldr r3, [r7, #12] + 803dc2c: 2200 movs r2, #0 + 803dc2e: f883 2031 strb.w r2, [r3, #49] ; 0x31 netif->ip6_autoconfig_enabled = 0; #endif /* LWIP_IPV6_AUTOCONFIG */ nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ #if LWIP_NETIF_STATUS_CALLBACK netif->status_callback = NULL; - 803dbf2: 68fb ldr r3, [r7, #12] - 803dbf4: 2200 movs r2, #0 - 803dbf6: 61da str r2, [r3, #28] + 803dc32: 68fb ldr r3, [r7, #12] + 803dc34: 2200 movs r2, #0 + 803dc36: 61da str r2, [r3, #28] #endif /* LWIP_NETIF_STATUS_CALLBACK */ #if LWIP_NETIF_LINK_CALLBACK netif->link_callback = NULL; - 803dbf8: 68fb ldr r3, [r7, #12] - 803dbfa: 2200 movs r2, #0 - 803dbfc: 621a str r2, [r3, #32] + 803dc38: 68fb ldr r3, [r7, #12] + 803dc3a: 2200 movs r2, #0 + 803dc3c: 621a str r2, [r3, #32] netif->loop_first = NULL; netif->loop_last = NULL; #endif /* ENABLE_LOOPBACK */ /* remember netif specific state information data */ netif->state = state; - 803dbfe: 68fb ldr r3, [r7, #12] - 803dc00: 6a3a ldr r2, [r7, #32] - 803dc02: 625a str r2, [r3, #36] ; 0x24 + 803dc3e: 68fb ldr r3, [r7, #12] + 803dc40: 6a3a ldr r2, [r7, #32] + 803dc42: 625a str r2, [r3, #36] ; 0x24 netif->num = netif_num; - 803dc04: 4b3f ldr r3, [pc, #252] ; (803dd04 ) - 803dc06: 781a ldrb r2, [r3, #0] - 803dc08: 68fb ldr r3, [r7, #12] - 803dc0a: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 803dc44: 4b3f ldr r3, [pc, #252] ; (803dd44 ) + 803dc46: 781a ldrb r2, [r3, #0] + 803dc48: 68fb ldr r3, [r7, #12] + 803dc4a: f883 2034 strb.w r2, [r3, #52] ; 0x34 netif->input = input; - 803dc0e: 68fb ldr r3, [r7, #12] - 803dc10: 6aba ldr r2, [r7, #40] ; 0x28 - 803dc12: 611a str r2, [r3, #16] + 803dc4e: 68fb ldr r3, [r7, #12] + 803dc50: 6aba ldr r2, [r7, #40] ; 0x28 + 803dc52: 611a str r2, [r3, #16] #if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS netif->loop_cnt_current = 0; #endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ #if LWIP_IPV4 netif_set_addr(netif, ipaddr, netmask, gw); - 803dc14: 683b ldr r3, [r7, #0] - 803dc16: 687a ldr r2, [r7, #4] - 803dc18: 68b9 ldr r1, [r7, #8] - 803dc1a: 68f8 ldr r0, [r7, #12] - 803dc1c: f000 f91c bl 803de58 + 803dc54: 683b ldr r3, [r7, #0] + 803dc56: 687a ldr r2, [r7, #4] + 803dc58: 68b9 ldr r1, [r7, #8] + 803dc5a: 68f8 ldr r0, [r7, #12] + 803dc5c: f000 f91c bl 803de98 #endif /* LWIP_IPV4 */ /* call user specified initialization function for netif */ if (init(netif) != ERR_OK) { - 803dc20: 6a7b ldr r3, [r7, #36] ; 0x24 - 803dc22: 68f8 ldr r0, [r7, #12] - 803dc24: 4798 blx r3 - 803dc26: 4603 mov r3, r0 - 803dc28: 2b00 cmp r3, #0 - 803dc2a: d001 beq.n 803dc30 + 803dc60: 6a7b ldr r3, [r7, #36] ; 0x24 + 803dc62: 68f8 ldr r0, [r7, #12] + 803dc64: 4798 blx r3 + 803dc66: 4603 mov r3, r0 + 803dc68: 2b00 cmp r3, #0 + 803dc6a: d001 beq.n 803dc70 return NULL; - 803dc2c: 2300 movs r3, #0 - 803dc2e: e058 b.n 803dce2 + 803dc6c: 2300 movs r3, #0 + 803dc6e: e058 b.n 803dd22 */ { struct netif *netif2; int num_netifs; do { if (netif->num == 255) { - 803dc30: 68fb ldr r3, [r7, #12] - 803dc32: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803dc36: 2bff cmp r3, #255 ; 0xff - 803dc38: d103 bne.n 803dc42 + 803dc70: 68fb ldr r3, [r7, #12] + 803dc72: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803dc76: 2bff cmp r3, #255 ; 0xff + 803dc78: d103 bne.n 803dc82 netif->num = 0; - 803dc3a: 68fb ldr r3, [r7, #12] - 803dc3c: 2200 movs r2, #0 - 803dc3e: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 803dc7a: 68fb ldr r3, [r7, #12] + 803dc7c: 2200 movs r2, #0 + 803dc7e: f883 2034 strb.w r2, [r3, #52] ; 0x34 } num_netifs = 0; - 803dc42: 2300 movs r3, #0 - 803dc44: 613b str r3, [r7, #16] + 803dc82: 2300 movs r3, #0 + 803dc84: 613b str r3, [r7, #16] for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) { - 803dc46: 4b30 ldr r3, [pc, #192] ; (803dd08 ) - 803dc48: 681b ldr r3, [r3, #0] - 803dc4a: 617b str r3, [r7, #20] - 803dc4c: e02b b.n 803dca6 + 803dc86: 4b30 ldr r3, [pc, #192] ; (803dd48 ) + 803dc88: 681b ldr r3, [r3, #0] + 803dc8a: 617b str r3, [r7, #20] + 803dc8c: e02b b.n 803dce6 LWIP_ASSERT("netif already added", netif2 != netif); - 803dc4e: 697a ldr r2, [r7, #20] - 803dc50: 68fb ldr r3, [r7, #12] - 803dc52: 429a cmp r2, r3 - 803dc54: d106 bne.n 803dc64 - 803dc56: 4b25 ldr r3, [pc, #148] ; (803dcec ) - 803dc58: f240 128b movw r2, #395 ; 0x18b - 803dc5c: 492b ldr r1, [pc, #172] ; (803dd0c ) - 803dc5e: 4825 ldr r0, [pc, #148] ; (803dcf4 ) - 803dc60: f00a f9a0 bl 8047fa4 + 803dc8e: 697a ldr r2, [r7, #20] + 803dc90: 68fb ldr r3, [r7, #12] + 803dc92: 429a cmp r2, r3 + 803dc94: d106 bne.n 803dca4 + 803dc96: 4b25 ldr r3, [pc, #148] ; (803dd2c ) + 803dc98: f240 128b movw r2, #395 ; 0x18b + 803dc9c: 492b ldr r1, [pc, #172] ; (803dd4c ) + 803dc9e: 4825 ldr r0, [pc, #148] ; (803dd34 ) + 803dca0: f00a f9a0 bl 8047fe4 num_netifs++; - 803dc64: 693b ldr r3, [r7, #16] - 803dc66: 3301 adds r3, #1 - 803dc68: 613b str r3, [r7, #16] + 803dca4: 693b ldr r3, [r7, #16] + 803dca6: 3301 adds r3, #1 + 803dca8: 613b str r3, [r7, #16] LWIP_ASSERT("too many netifs, max. supported number is 255", num_netifs <= 255); - 803dc6a: 693b ldr r3, [r7, #16] - 803dc6c: 2bff cmp r3, #255 ; 0xff - 803dc6e: dd06 ble.n 803dc7e - 803dc70: 4b1e ldr r3, [pc, #120] ; (803dcec ) - 803dc72: f240 128d movw r2, #397 ; 0x18d - 803dc76: 4926 ldr r1, [pc, #152] ; (803dd10 ) - 803dc78: 481e ldr r0, [pc, #120] ; (803dcf4 ) - 803dc7a: f00a f993 bl 8047fa4 + 803dcaa: 693b ldr r3, [r7, #16] + 803dcac: 2bff cmp r3, #255 ; 0xff + 803dcae: dd06 ble.n 803dcbe + 803dcb0: 4b1e ldr r3, [pc, #120] ; (803dd2c ) + 803dcb2: f240 128d movw r2, #397 ; 0x18d + 803dcb6: 4926 ldr r1, [pc, #152] ; (803dd50 ) + 803dcb8: 481e ldr r0, [pc, #120] ; (803dd34 ) + 803dcba: f00a f993 bl 8047fe4 if (netif2->num == netif->num) { - 803dc7e: 697b ldr r3, [r7, #20] - 803dc80: f893 2034 ldrb.w r2, [r3, #52] ; 0x34 - 803dc84: 68fb ldr r3, [r7, #12] - 803dc86: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803dc8a: 429a cmp r2, r3 - 803dc8c: d108 bne.n 803dca0 + 803dcbe: 697b ldr r3, [r7, #20] + 803dcc0: f893 2034 ldrb.w r2, [r3, #52] ; 0x34 + 803dcc4: 68fb ldr r3, [r7, #12] + 803dcc6: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803dcca: 429a cmp r2, r3 + 803dccc: d108 bne.n 803dce0 netif->num++; - 803dc8e: 68fb ldr r3, [r7, #12] - 803dc90: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803dc94: 3301 adds r3, #1 - 803dc96: b2da uxtb r2, r3 - 803dc98: 68fb ldr r3, [r7, #12] - 803dc9a: f883 2034 strb.w r2, [r3, #52] ; 0x34 + 803dcce: 68fb ldr r3, [r7, #12] + 803dcd0: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803dcd4: 3301 adds r3, #1 + 803dcd6: b2da uxtb r2, r3 + 803dcd8: 68fb ldr r3, [r7, #12] + 803dcda: f883 2034 strb.w r2, [r3, #52] ; 0x34 break; - 803dc9e: e005 b.n 803dcac + 803dcde: e005 b.n 803dcec for (netif2 = netif_list; netif2 != NULL; netif2 = netif2->next) { - 803dca0: 697b ldr r3, [r7, #20] - 803dca2: 681b ldr r3, [r3, #0] - 803dca4: 617b str r3, [r7, #20] - 803dca6: 697b ldr r3, [r7, #20] - 803dca8: 2b00 cmp r3, #0 - 803dcaa: d1d0 bne.n 803dc4e + 803dce0: 697b ldr r3, [r7, #20] + 803dce2: 681b ldr r3, [r3, #0] + 803dce4: 617b str r3, [r7, #20] + 803dce6: 697b ldr r3, [r7, #20] + 803dce8: 2b00 cmp r3, #0 + 803dcea: d1d0 bne.n 803dc8e } } } while (netif2 != NULL); - 803dcac: 697b ldr r3, [r7, #20] - 803dcae: 2b00 cmp r3, #0 - 803dcb0: d1be bne.n 803dc30 + 803dcec: 697b ldr r3, [r7, #20] + 803dcee: 2b00 cmp r3, #0 + 803dcf0: d1be bne.n 803dc70 } if (netif->num == 254) { - 803dcb2: 68fb ldr r3, [r7, #12] - 803dcb4: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803dcb8: 2bfe cmp r3, #254 ; 0xfe - 803dcba: d103 bne.n 803dcc4 + 803dcf2: 68fb ldr r3, [r7, #12] + 803dcf4: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803dcf8: 2bfe cmp r3, #254 ; 0xfe + 803dcfa: d103 bne.n 803dd04 netif_num = 0; - 803dcbc: 4b11 ldr r3, [pc, #68] ; (803dd04 ) - 803dcbe: 2200 movs r2, #0 - 803dcc0: 701a strb r2, [r3, #0] - 803dcc2: e006 b.n 803dcd2 + 803dcfc: 4b11 ldr r3, [pc, #68] ; (803dd44 ) + 803dcfe: 2200 movs r2, #0 + 803dd00: 701a strb r2, [r3, #0] + 803dd02: e006 b.n 803dd12 } else { netif_num = (u8_t)(netif->num + 1); - 803dcc4: 68fb ldr r3, [r7, #12] - 803dcc6: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803dcca: 3301 adds r3, #1 - 803dccc: b2da uxtb r2, r3 - 803dcce: 4b0d ldr r3, [pc, #52] ; (803dd04 ) - 803dcd0: 701a strb r2, [r3, #0] + 803dd04: 68fb ldr r3, [r7, #12] + 803dd06: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803dd0a: 3301 adds r3, #1 + 803dd0c: b2da uxtb r2, r3 + 803dd0e: 4b0d ldr r3, [pc, #52] ; (803dd44 ) + 803dd10: 701a strb r2, [r3, #0] } /* add this netif to the list */ netif->next = netif_list; - 803dcd2: 4b0d ldr r3, [pc, #52] ; (803dd08 ) - 803dcd4: 681a ldr r2, [r3, #0] - 803dcd6: 68fb ldr r3, [r7, #12] - 803dcd8: 601a str r2, [r3, #0] + 803dd12: 4b0d ldr r3, [pc, #52] ; (803dd48 ) + 803dd14: 681a ldr r2, [r3, #0] + 803dd16: 68fb ldr r3, [r7, #12] + 803dd18: 601a str r2, [r3, #0] netif_list = netif; - 803dcda: 4a0b ldr r2, [pc, #44] ; (803dd08 ) - 803dcdc: 68fb ldr r3, [r7, #12] - 803dcde: 6013 str r3, [r2, #0] + 803dd1a: 4a0b ldr r2, [pc, #44] ; (803dd48 ) + 803dd1c: 68fb ldr r3, [r7, #12] + 803dd1e: 6013 str r3, [r2, #0] #endif /* LWIP_IPV4 */ LWIP_DEBUGF(NETIF_DEBUG, ("\n")); netif_invoke_ext_callback(netif, LWIP_NSC_NETIF_ADDED, NULL); return netif; - 803dce0: 68fb ldr r3, [r7, #12] -} - 803dce2: 4618 mov r0, r3 - 803dce4: 3718 adds r7, #24 - 803dce6: 46bd mov sp, r7 - 803dce8: bd80 pop {r7, pc} - 803dcea: bf00 nop - 803dcec: 0804a500 .word 0x0804a500 - 803dcf0: 0804a594 .word 0x0804a594 - 803dcf4: 0804a550 .word 0x0804a550 - 803dcf8: 0804a5b0 .word 0x0804a5b0 - 803dcfc: 0804d488 .word 0x0804d488 - 803dd00: 0803e153 .word 0x0803e153 - 803dd04: 2400eae4 .word 0x2400eae4 - 803dd08: 2400eadc .word 0x2400eadc - 803dd0c: 0804a5d4 .word 0x0804a5d4 - 803dd10: 0804a5e8 .word 0x0804a5e8 - -0803dd14 : + 803dd20: 68fb ldr r3, [r7, #12] +} + 803dd22: 4618 mov r0, r3 + 803dd24: 3718 adds r7, #24 + 803dd26: 46bd mov sp, r7 + 803dd28: bd80 pop {r7, pc} + 803dd2a: bf00 nop + 803dd2c: 0804a540 .word 0x0804a540 + 803dd30: 0804a5d4 .word 0x0804a5d4 + 803dd34: 0804a590 .word 0x0804a590 + 803dd38: 0804a5f0 .word 0x0804a5f0 + 803dd3c: 0804d4c8 .word 0x0804d4c8 + 803dd40: 0803e193 .word 0x0803e193 + 803dd44: 2400eae4 .word 0x2400eae4 + 803dd48: 2400eadc .word 0x2400eadc + 803dd4c: 0804a614 .word 0x0804a614 + 803dd50: 0804a628 .word 0x0804a628 + +0803dd54 : static void netif_do_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) { - 803dd14: b580 push {r7, lr} - 803dd16: b082 sub sp, #8 - 803dd18: af00 add r7, sp, #0 - 803dd1a: 6078 str r0, [r7, #4] - 803dd1c: 6039 str r1, [r7, #0] + 803dd54: b580 push {r7, lr} + 803dd56: b082 sub sp, #8 + 803dd58: af00 add r7, sp, #0 + 803dd5a: 6078 str r0, [r7, #4] + 803dd5c: 6039 str r1, [r7, #0] #if LWIP_TCP tcp_netif_ip_addr_changed(old_addr, new_addr); - 803dd1e: 6839 ldr r1, [r7, #0] - 803dd20: 6878 ldr r0, [r7, #4] - 803dd22: f002 fbfd bl 8040520 + 803dd5e: 6839 ldr r1, [r7, #0] + 803dd60: 6878 ldr r0, [r7, #4] + 803dd62: f002 fbfd bl 8040560 #endif /* LWIP_TCP */ #if LWIP_UDP udp_netif_ip_addr_changed(old_addr, new_addr); - 803dd26: 6839 ldr r1, [r7, #0] - 803dd28: 6878 ldr r0, [r7, #4] - 803dd2a: f007 fccb bl 80456c4 + 803dd66: 6839 ldr r1, [r7, #0] + 803dd68: 6878 ldr r0, [r7, #4] + 803dd6a: f007 fccb bl 8045704 #endif /* LWIP_UDP */ #if LWIP_RAW raw_netif_ip_addr_changed(old_addr, new_addr); #endif /* LWIP_RAW */ } - 803dd2e: bf00 nop - 803dd30: 3708 adds r7, #8 - 803dd32: 46bd mov sp, r7 - 803dd34: bd80 pop {r7, pc} + 803dd6e: bf00 nop + 803dd70: 3708 adds r7, #8 + 803dd72: 46bd mov sp, r7 + 803dd74: bd80 pop {r7, pc} ... -0803dd38 : +0803dd78 : #if LWIP_IPV4 static int netif_do_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr, ip_addr_t *old_addr) { - 803dd38: b580 push {r7, lr} - 803dd3a: b086 sub sp, #24 - 803dd3c: af00 add r7, sp, #0 - 803dd3e: 60f8 str r0, [r7, #12] - 803dd40: 60b9 str r1, [r7, #8] - 803dd42: 607a str r2, [r7, #4] + 803dd78: b580 push {r7, lr} + 803dd7a: b086 sub sp, #24 + 803dd7c: af00 add r7, sp, #0 + 803dd7e: 60f8 str r0, [r7, #12] + 803dd80: 60b9 str r1, [r7, #8] + 803dd82: 607a str r2, [r7, #4] LWIP_ASSERT("invalid pointer", ipaddr != NULL); - 803dd44: 68bb ldr r3, [r7, #8] - 803dd46: 2b00 cmp r3, #0 - 803dd48: d106 bne.n 803dd58 - 803dd4a: 4b21 ldr r3, [pc, #132] ; (803ddd0 ) - 803dd4c: f240 12cb movw r2, #459 ; 0x1cb - 803dd50: 4920 ldr r1, [pc, #128] ; (803ddd4 ) - 803dd52: 4821 ldr r0, [pc, #132] ; (803ddd8 ) - 803dd54: f00a f926 bl 8047fa4 + 803dd84: 68bb ldr r3, [r7, #8] + 803dd86: 2b00 cmp r3, #0 + 803dd88: d106 bne.n 803dd98 + 803dd8a: 4b21 ldr r3, [pc, #132] ; (803de10 ) + 803dd8c: f240 12cb movw r2, #459 ; 0x1cb + 803dd90: 4920 ldr r1, [pc, #128] ; (803de14 ) + 803dd92: 4821 ldr r0, [pc, #132] ; (803de18 ) + 803dd94: f00a f926 bl 8047fe4 LWIP_ASSERT("invalid pointer", old_addr != NULL); - 803dd58: 687b ldr r3, [r7, #4] - 803dd5a: 2b00 cmp r3, #0 - 803dd5c: d106 bne.n 803dd6c - 803dd5e: 4b1c ldr r3, [pc, #112] ; (803ddd0 ) - 803dd60: f44f 72e6 mov.w r2, #460 ; 0x1cc - 803dd64: 491b ldr r1, [pc, #108] ; (803ddd4 ) - 803dd66: 481c ldr r0, [pc, #112] ; (803ddd8 ) - 803dd68: f00a f91c bl 8047fa4 + 803dd98: 687b ldr r3, [r7, #4] + 803dd9a: 2b00 cmp r3, #0 + 803dd9c: d106 bne.n 803ddac + 803dd9e: 4b1c ldr r3, [pc, #112] ; (803de10 ) + 803dda0: f44f 72e6 mov.w r2, #460 ; 0x1cc + 803dda4: 491b ldr r1, [pc, #108] ; (803de14 ) + 803dda6: 481c ldr r0, [pc, #112] ; (803de18 ) + 803dda8: f00a f91c bl 8047fe4 /* address is actually being changed? */ if (ip4_addr_cmp(ipaddr, netif_ip4_addr(netif)) == 0) { - 803dd6c: 68bb ldr r3, [r7, #8] - 803dd6e: 681a ldr r2, [r3, #0] - 803dd70: 68fb ldr r3, [r7, #12] - 803dd72: 3304 adds r3, #4 - 803dd74: 681b ldr r3, [r3, #0] - 803dd76: 429a cmp r2, r3 - 803dd78: d024 beq.n 803ddc4 + 803ddac: 68bb ldr r3, [r7, #8] + 803ddae: 681a ldr r2, [r3, #0] + 803ddb0: 68fb ldr r3, [r7, #12] + 803ddb2: 3304 adds r3, #4 + 803ddb4: 681b ldr r3, [r3, #0] + 803ddb6: 429a cmp r2, r3 + 803ddb8: d024 beq.n 803de04 ip_addr_t new_addr; *ip_2_ip4(&new_addr) = *ipaddr; - 803dd7a: 68bb ldr r3, [r7, #8] - 803dd7c: 681b ldr r3, [r3, #0] - 803dd7e: 617b str r3, [r7, #20] + 803ddba: 68bb ldr r3, [r7, #8] + 803ddbc: 681b ldr r3, [r3, #0] + 803ddbe: 617b str r3, [r7, #20] IP_SET_TYPE_VAL(new_addr, IPADDR_TYPE_V4); ip_addr_copy(*old_addr, *netif_ip_addr4(netif)); - 803dd80: 68fb ldr r3, [r7, #12] - 803dd82: 3304 adds r3, #4 - 803dd84: 681a ldr r2, [r3, #0] - 803dd86: 687b ldr r3, [r7, #4] - 803dd88: 601a str r2, [r3, #0] + 803ddc0: 68fb ldr r3, [r7, #12] + 803ddc2: 3304 adds r3, #4 + 803ddc4: 681a ldr r2, [r3, #0] + 803ddc6: 687b ldr r3, [r7, #4] + 803ddc8: 601a str r2, [r3, #0] LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n")); netif_do_ip_addr_changed(old_addr, &new_addr); - 803dd8a: f107 0314 add.w r3, r7, #20 - 803dd8e: 4619 mov r1, r3 - 803dd90: 6878 ldr r0, [r7, #4] - 803dd92: f7ff ffbf bl 803dd14 + 803ddca: f107 0314 add.w r3, r7, #20 + 803ddce: 4619 mov r1, r3 + 803ddd0: 6878 ldr r0, [r7, #4] + 803ddd2: f7ff ffbf bl 803dd54 mib2_remove_ip4(netif); mib2_remove_route_ip4(0, netif); /* set new IP address to netif */ ip4_addr_set(ip_2_ip4(&netif->ip_addr), ipaddr); - 803dd96: 68bb ldr r3, [r7, #8] - 803dd98: 2b00 cmp r3, #0 - 803dd9a: d002 beq.n 803dda2 - 803dd9c: 68bb ldr r3, [r7, #8] - 803dd9e: 681b ldr r3, [r3, #0] - 803dda0: e000 b.n 803dda4 - 803dda2: 2300 movs r3, #0 - 803dda4: 68fa ldr r2, [r7, #12] - 803dda6: 6053 str r3, [r2, #4] + 803ddd6: 68bb ldr r3, [r7, #8] + 803ddd8: 2b00 cmp r3, #0 + 803ddda: d002 beq.n 803dde2 + 803dddc: 68bb ldr r3, [r7, #8] + 803ddde: 681b ldr r3, [r3, #0] + 803dde0: e000 b.n 803dde4 + 803dde2: 2300 movs r3, #0 + 803dde4: 68fa ldr r2, [r7, #12] + 803dde6: 6053 str r3, [r2, #4] IP_SET_TYPE_VAL(netif->ip_addr, IPADDR_TYPE_V4); mib2_add_ip4(netif); mib2_add_route_ip4(0, netif); netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4); - 803dda8: 2101 movs r1, #1 - 803ddaa: 68f8 ldr r0, [r7, #12] - 803ddac: f000 f8e2 bl 803df74 + 803dde8: 2101 movs r1, #1 + 803ddea: 68f8 ldr r0, [r7, #12] + 803ddec: f000 f8e2 bl 803dfb4 NETIF_STATUS_CALLBACK(netif); - 803ddb0: 68fb ldr r3, [r7, #12] - 803ddb2: 69db ldr r3, [r3, #28] - 803ddb4: 2b00 cmp r3, #0 - 803ddb6: d003 beq.n 803ddc0 - 803ddb8: 68fb ldr r3, [r7, #12] - 803ddba: 69db ldr r3, [r3, #28] - 803ddbc: 68f8 ldr r0, [r7, #12] - 803ddbe: 4798 blx r3 + 803ddf0: 68fb ldr r3, [r7, #12] + 803ddf2: 69db ldr r3, [r3, #28] + 803ddf4: 2b00 cmp r3, #0 + 803ddf6: d003 beq.n 803de00 + 803ddf8: 68fb ldr r3, [r7, #12] + 803ddfa: 69db ldr r3, [r3, #28] + 803ddfc: 68f8 ldr r0, [r7, #12] + 803ddfe: 4798 blx r3 return 1; /* address changed */ - 803ddc0: 2301 movs r3, #1 - 803ddc2: e000 b.n 803ddc6 + 803de00: 2301 movs r3, #1 + 803de02: e000 b.n 803de06 } return 0; /* address unchanged */ - 803ddc4: 2300 movs r3, #0 + 803de04: 2300 movs r3, #0 } - 803ddc6: 4618 mov r0, r3 - 803ddc8: 3718 adds r7, #24 - 803ddca: 46bd mov sp, r7 - 803ddcc: bd80 pop {r7, pc} - 803ddce: bf00 nop - 803ddd0: 0804a500 .word 0x0804a500 - 803ddd4: 0804a618 .word 0x0804a618 - 803ddd8: 0804a550 .word 0x0804a550 + 803de06: 4618 mov r0, r3 + 803de08: 3718 adds r7, #24 + 803de0a: 46bd mov sp, r7 + 803de0c: bd80 pop {r7, pc} + 803de0e: bf00 nop + 803de10: 0804a540 .word 0x0804a540 + 803de14: 0804a658 .word 0x0804a658 + 803de18: 0804a590 .word 0x0804a590 -0803dddc : +0803de1c : } } static int netif_do_set_netmask(struct netif *netif, const ip4_addr_t *netmask, ip_addr_t *old_nm) { - 803dddc: b480 push {r7} - 803ddde: b085 sub sp, #20 - 803dde0: af00 add r7, sp, #0 - 803dde2: 60f8 str r0, [r7, #12] - 803dde4: 60b9 str r1, [r7, #8] - 803dde6: 607a str r2, [r7, #4] + 803de1c: b480 push {r7} + 803de1e: b085 sub sp, #20 + 803de20: af00 add r7, sp, #0 + 803de22: 60f8 str r0, [r7, #12] + 803de24: 60b9 str r1, [r7, #8] + 803de26: 607a str r2, [r7, #4] /* address is actually being changed? */ if (ip4_addr_cmp(netmask, netif_ip4_netmask(netif)) == 0) { - 803dde8: 68bb ldr r3, [r7, #8] - 803ddea: 681a ldr r2, [r3, #0] - 803ddec: 68fb ldr r3, [r7, #12] - 803ddee: 3308 adds r3, #8 - 803ddf0: 681b ldr r3, [r3, #0] - 803ddf2: 429a cmp r2, r3 - 803ddf4: d00a beq.n 803de0c + 803de28: 68bb ldr r3, [r7, #8] + 803de2a: 681a ldr r2, [r3, #0] + 803de2c: 68fb ldr r3, [r7, #12] + 803de2e: 3308 adds r3, #8 + 803de30: 681b ldr r3, [r3, #0] + 803de32: 429a cmp r2, r3 + 803de34: d00a beq.n 803de4c #else LWIP_UNUSED_ARG(old_nm); #endif mib2_remove_route_ip4(0, netif); /* set new netmask to netif */ ip4_addr_set(ip_2_ip4(&netif->netmask), netmask); - 803ddf6: 68bb ldr r3, [r7, #8] - 803ddf8: 2b00 cmp r3, #0 - 803ddfa: d002 beq.n 803de02 - 803ddfc: 68bb ldr r3, [r7, #8] - 803ddfe: 681b ldr r3, [r3, #0] - 803de00: e000 b.n 803de04 - 803de02: 2300 movs r3, #0 - 803de04: 68fa ldr r2, [r7, #12] - 803de06: 6093 str r3, [r2, #8] + 803de36: 68bb ldr r3, [r7, #8] + 803de38: 2b00 cmp r3, #0 + 803de3a: d002 beq.n 803de42 + 803de3c: 68bb ldr r3, [r7, #8] + 803de3e: 681b ldr r3, [r3, #0] + 803de40: e000 b.n 803de44 + 803de42: 2300 movs r3, #0 + 803de44: 68fa ldr r2, [r7, #12] + 803de46: 6093 str r3, [r2, #8] netif->name[0], netif->name[1], ip4_addr1_16(netif_ip4_netmask(netif)), ip4_addr2_16(netif_ip4_netmask(netif)), ip4_addr3_16(netif_ip4_netmask(netif)), ip4_addr4_16(netif_ip4_netmask(netif)))); return 1; /* netmask changed */ - 803de08: 2301 movs r3, #1 - 803de0a: e000 b.n 803de0e + 803de48: 2301 movs r3, #1 + 803de4a: e000 b.n 803de4e } return 0; /* netmask unchanged */ - 803de0c: 2300 movs r3, #0 + 803de4c: 2300 movs r3, #0 } - 803de0e: 4618 mov r0, r3 - 803de10: 3714 adds r7, #20 - 803de12: 46bd mov sp, r7 - 803de14: f85d 7b04 ldr.w r7, [sp], #4 - 803de18: 4770 bx lr + 803de4e: 4618 mov r0, r3 + 803de50: 3714 adds r7, #20 + 803de52: 46bd mov sp, r7 + 803de54: f85d 7b04 ldr.w r7, [sp], #4 + 803de58: 4770 bx lr -0803de1a : +0803de5a : } } static int netif_do_set_gw(struct netif *netif, const ip4_addr_t *gw, ip_addr_t *old_gw) { - 803de1a: b480 push {r7} - 803de1c: b085 sub sp, #20 - 803de1e: af00 add r7, sp, #0 - 803de20: 60f8 str r0, [r7, #12] - 803de22: 60b9 str r1, [r7, #8] - 803de24: 607a str r2, [r7, #4] + 803de5a: b480 push {r7} + 803de5c: b085 sub sp, #20 + 803de5e: af00 add r7, sp, #0 + 803de60: 60f8 str r0, [r7, #12] + 803de62: 60b9 str r1, [r7, #8] + 803de64: 607a str r2, [r7, #4] /* address is actually being changed? */ if (ip4_addr_cmp(gw, netif_ip4_gw(netif)) == 0) { - 803de26: 68bb ldr r3, [r7, #8] - 803de28: 681a ldr r2, [r3, #0] - 803de2a: 68fb ldr r3, [r7, #12] - 803de2c: 330c adds r3, #12 - 803de2e: 681b ldr r3, [r3, #0] - 803de30: 429a cmp r2, r3 - 803de32: d00a beq.n 803de4a + 803de66: 68bb ldr r3, [r7, #8] + 803de68: 681a ldr r2, [r3, #0] + 803de6a: 68fb ldr r3, [r7, #12] + 803de6c: 330c adds r3, #12 + 803de6e: 681b ldr r3, [r3, #0] + 803de70: 429a cmp r2, r3 + 803de72: d00a beq.n 803de8a ip_addr_copy(*old_gw, *netif_ip_gw4(netif)); #else LWIP_UNUSED_ARG(old_gw); #endif ip4_addr_set(ip_2_ip4(&netif->gw), gw); - 803de34: 68bb ldr r3, [r7, #8] - 803de36: 2b00 cmp r3, #0 - 803de38: d002 beq.n 803de40 - 803de3a: 68bb ldr r3, [r7, #8] - 803de3c: 681b ldr r3, [r3, #0] - 803de3e: e000 b.n 803de42 - 803de40: 2300 movs r3, #0 - 803de42: 68fa ldr r2, [r7, #12] - 803de44: 60d3 str r3, [r2, #12] + 803de74: 68bb ldr r3, [r7, #8] + 803de76: 2b00 cmp r3, #0 + 803de78: d002 beq.n 803de80 + 803de7a: 68bb ldr r3, [r7, #8] + 803de7c: 681b ldr r3, [r3, #0] + 803de7e: e000 b.n 803de82 + 803de80: 2300 movs r3, #0 + 803de82: 68fa ldr r2, [r7, #12] + 803de84: 60d3 str r3, [r2, #12] netif->name[0], netif->name[1], ip4_addr1_16(netif_ip4_gw(netif)), ip4_addr2_16(netif_ip4_gw(netif)), ip4_addr3_16(netif_ip4_gw(netif)), ip4_addr4_16(netif_ip4_gw(netif)))); return 1; /* gateway changed */ - 803de46: 2301 movs r3, #1 - 803de48: e000 b.n 803de4c + 803de86: 2301 movs r3, #1 + 803de88: e000 b.n 803de8c } return 0; /* gateway unchanged */ - 803de4a: 2300 movs r3, #0 + 803de8a: 2300 movs r3, #0 } - 803de4c: 4618 mov r0, r3 - 803de4e: 3714 adds r7, #20 - 803de50: 46bd mov sp, r7 - 803de52: f85d 7b04 ldr.w r7, [sp], #4 - 803de56: 4770 bx lr + 803de8c: 4618 mov r0, r3 + 803de8e: 3714 adds r7, #20 + 803de90: 46bd mov sp, r7 + 803de92: f85d 7b04 ldr.w r7, [sp], #4 + 803de96: 4770 bx lr -0803de58 : +0803de98 : * @param gw the new default gateway */ void netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw) { - 803de58: b580 push {r7, lr} - 803de5a: b088 sub sp, #32 - 803de5c: af00 add r7, sp, #0 - 803de5e: 60f8 str r0, [r7, #12] - 803de60: 60b9 str r1, [r7, #8] - 803de62: 607a str r2, [r7, #4] - 803de64: 603b str r3, [r7, #0] + 803de98: b580 push {r7, lr} + 803de9a: b088 sub sp, #32 + 803de9c: af00 add r7, sp, #0 + 803de9e: 60f8 str r0, [r7, #12] + 803dea0: 60b9 str r1, [r7, #8] + 803dea2: 607a str r2, [r7, #4] + 803dea4: 603b str r3, [r7, #0] ip_addr_t old_nm_val; ip_addr_t old_gw_val; ip_addr_t *old_nm = &old_nm_val; ip_addr_t *old_gw = &old_gw_val; #else ip_addr_t *old_nm = NULL; - 803de66: 2300 movs r3, #0 - 803de68: 61fb str r3, [r7, #28] + 803dea6: 2300 movs r3, #0 + 803dea8: 61fb str r3, [r7, #28] ip_addr_t *old_gw = NULL; - 803de6a: 2300 movs r3, #0 - 803de6c: 61bb str r3, [r7, #24] + 803deaa: 2300 movs r3, #0 + 803deac: 61bb str r3, [r7, #24] int remove; LWIP_ASSERT_CORE_LOCKED(); /* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */ if (ipaddr == NULL) { - 803de6e: 68bb ldr r3, [r7, #8] - 803de70: 2b00 cmp r3, #0 - 803de72: d101 bne.n 803de78 + 803deae: 68bb ldr r3, [r7, #8] + 803deb0: 2b00 cmp r3, #0 + 803deb2: d101 bne.n 803deb8 ipaddr = IP4_ADDR_ANY4; - 803de74: 4b1c ldr r3, [pc, #112] ; (803dee8 ) - 803de76: 60bb str r3, [r7, #8] + 803deb4: 4b1c ldr r3, [pc, #112] ; (803df28 ) + 803deb6: 60bb str r3, [r7, #8] } if (netmask == NULL) { - 803de78: 687b ldr r3, [r7, #4] - 803de7a: 2b00 cmp r3, #0 - 803de7c: d101 bne.n 803de82 + 803deb8: 687b ldr r3, [r7, #4] + 803deba: 2b00 cmp r3, #0 + 803debc: d101 bne.n 803dec2 netmask = IP4_ADDR_ANY4; - 803de7e: 4b1a ldr r3, [pc, #104] ; (803dee8 ) - 803de80: 607b str r3, [r7, #4] + 803debe: 4b1a ldr r3, [pc, #104] ; (803df28 ) + 803dec0: 607b str r3, [r7, #4] } if (gw == NULL) { - 803de82: 683b ldr r3, [r7, #0] - 803de84: 2b00 cmp r3, #0 - 803de86: d101 bne.n 803de8c + 803dec2: 683b ldr r3, [r7, #0] + 803dec4: 2b00 cmp r3, #0 + 803dec6: d101 bne.n 803decc gw = IP4_ADDR_ANY4; - 803de88: 4b17 ldr r3, [pc, #92] ; (803dee8 ) - 803de8a: 603b str r3, [r7, #0] + 803dec8: 4b17 ldr r3, [pc, #92] ; (803df28 ) + 803deca: 603b str r3, [r7, #0] } remove = ip4_addr_isany(ipaddr); - 803de8c: 68bb ldr r3, [r7, #8] - 803de8e: 2b00 cmp r3, #0 - 803de90: d003 beq.n 803de9a - 803de92: 68bb ldr r3, [r7, #8] - 803de94: 681b ldr r3, [r3, #0] - 803de96: 2b00 cmp r3, #0 - 803de98: d101 bne.n 803de9e - 803de9a: 2301 movs r3, #1 - 803de9c: e000 b.n 803dea0 - 803de9e: 2300 movs r3, #0 - 803dea0: 617b str r3, [r7, #20] + 803decc: 68bb ldr r3, [r7, #8] + 803dece: 2b00 cmp r3, #0 + 803ded0: d003 beq.n 803deda + 803ded2: 68bb ldr r3, [r7, #8] + 803ded4: 681b ldr r3, [r3, #0] + 803ded6: 2b00 cmp r3, #0 + 803ded8: d101 bne.n 803dede + 803deda: 2301 movs r3, #1 + 803dedc: e000 b.n 803dee0 + 803dede: 2300 movs r3, #0 + 803dee0: 617b str r3, [r7, #20] if (remove) { - 803dea2: 697b ldr r3, [r7, #20] - 803dea4: 2b00 cmp r3, #0 - 803dea6: d006 beq.n 803deb6 + 803dee2: 697b ldr r3, [r7, #20] + 803dee4: 2b00 cmp r3, #0 + 803dee6: d006 beq.n 803def6 /* when removing an address, we have to remove it *before* changing netmask/gw to ensure that tcp RST segment can be sent correctly */ if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) { - 803dea8: f107 0310 add.w r3, r7, #16 - 803deac: 461a mov r2, r3 - 803deae: 68b9 ldr r1, [r7, #8] - 803deb0: 68f8 ldr r0, [r7, #12] - 803deb2: f7ff ff41 bl 803dd38 + 803dee8: f107 0310 add.w r3, r7, #16 + 803deec: 461a mov r2, r3 + 803deee: 68b9 ldr r1, [r7, #8] + 803def0: 68f8 ldr r0, [r7, #12] + 803def2: f7ff ff41 bl 803dd78 change_reason |= LWIP_NSC_IPV4_ADDRESS_CHANGED; cb_args.ipv4_changed.old_address = &old_addr; #endif } } if (netif_do_set_netmask(netif, netmask, old_nm)) { - 803deb6: 69fa ldr r2, [r7, #28] - 803deb8: 6879 ldr r1, [r7, #4] - 803deba: 68f8 ldr r0, [r7, #12] - 803debc: f7ff ff8e bl 803dddc + 803def6: 69fa ldr r2, [r7, #28] + 803def8: 6879 ldr r1, [r7, #4] + 803defa: 68f8 ldr r0, [r7, #12] + 803defc: f7ff ff8e bl 803de1c #if LWIP_NETIF_EXT_STATUS_CALLBACK change_reason |= LWIP_NSC_IPV4_NETMASK_CHANGED; cb_args.ipv4_changed.old_netmask = old_nm; #endif } if (netif_do_set_gw(netif, gw, old_gw)) { - 803dec0: 69ba ldr r2, [r7, #24] - 803dec2: 6839 ldr r1, [r7, #0] - 803dec4: 68f8 ldr r0, [r7, #12] - 803dec6: f7ff ffa8 bl 803de1a + 803df00: 69ba ldr r2, [r7, #24] + 803df02: 6839 ldr r1, [r7, #0] + 803df04: 68f8 ldr r0, [r7, #12] + 803df06: f7ff ffa8 bl 803de5a #if LWIP_NETIF_EXT_STATUS_CALLBACK change_reason |= LWIP_NSC_IPV4_GATEWAY_CHANGED; cb_args.ipv4_changed.old_gw = old_gw; #endif } if (!remove) { - 803deca: 697b ldr r3, [r7, #20] - 803decc: 2b00 cmp r3, #0 - 803dece: d106 bne.n 803dede + 803df0a: 697b ldr r3, [r7, #20] + 803df0c: 2b00 cmp r3, #0 + 803df0e: d106 bne.n 803df1e /* set ipaddr last to ensure netmask/gw have been set when status callback is called */ if (netif_do_set_ipaddr(netif, ipaddr, &old_addr)) { - 803ded0: f107 0310 add.w r3, r7, #16 - 803ded4: 461a mov r2, r3 - 803ded6: 68b9 ldr r1, [r7, #8] - 803ded8: 68f8 ldr r0, [r7, #12] - 803deda: f7ff ff2d bl 803dd38 + 803df10: f107 0310 add.w r3, r7, #16 + 803df14: 461a mov r2, r3 + 803df16: 68b9 ldr r1, [r7, #8] + 803df18: 68f8 ldr r0, [r7, #12] + 803df1a: f7ff ff2d bl 803dd78 if (change_reason != LWIP_NSC_NONE) { change_reason |= LWIP_NSC_IPV4_SETTINGS_CHANGED; netif_invoke_ext_callback(netif, change_reason, &cb_args); } #endif } - 803dede: bf00 nop - 803dee0: 3720 adds r7, #32 - 803dee2: 46bd mov sp, r7 - 803dee4: bd80 pop {r7, pc} - 803dee6: bf00 nop - 803dee8: 0804d488 .word 0x0804d488 + 803df1e: bf00 nop + 803df20: 3720 adds r7, #32 + 803df22: 46bd mov sp, r7 + 803df24: bd80 pop {r7, pc} + 803df26: bf00 nop + 803df28: 0804d4c8 .word 0x0804d4c8 -0803deec : +0803df2c : * * @param netif the default network interface */ void netif_set_default(struct netif *netif) { - 803deec: b480 push {r7} - 803deee: b083 sub sp, #12 - 803def0: af00 add r7, sp, #0 - 803def2: 6078 str r0, [r7, #4] + 803df2c: b480 push {r7} + 803df2e: b083 sub sp, #12 + 803df30: af00 add r7, sp, #0 + 803df32: 6078 str r0, [r7, #4] mib2_remove_route_ip4(1, netif); } else { /* install default route */ mib2_add_route_ip4(1, netif); } netif_default = netif; - 803def4: 4a04 ldr r2, [pc, #16] ; (803df08 ) - 803def6: 687b ldr r3, [r7, #4] - 803def8: 6013 str r3, [r2, #0] + 803df34: 4a04 ldr r2, [pc, #16] ; (803df48 ) + 803df36: 687b ldr r3, [r7, #4] + 803df38: 6013 str r3, [r2, #0] LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n", netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); } - 803defa: bf00 nop - 803defc: 370c adds r7, #12 - 803defe: 46bd mov sp, r7 - 803df00: f85d 7b04 ldr.w r7, [sp], #4 - 803df04: 4770 bx lr - 803df06: bf00 nop - 803df08: 2400eae0 .word 0x2400eae0 + 803df3a: bf00 nop + 803df3c: 370c adds r7, #12 + 803df3e: 46bd mov sp, r7 + 803df40: f85d 7b04 ldr.w r7, [sp], #4 + 803df44: 4770 bx lr + 803df46: bf00 nop + 803df48: 2400eae0 .word 0x2400eae0 -0803df0c : +0803df4c : * Bring an interface up, available for processing * traffic. */ void netif_set_up(struct netif *netif) { - 803df0c: b580 push {r7, lr} - 803df0e: b082 sub sp, #8 - 803df10: af00 add r7, sp, #0 - 803df12: 6078 str r0, [r7, #4] + 803df4c: b580 push {r7, lr} + 803df4e: b082 sub sp, #8 + 803df50: af00 add r7, sp, #0 + 803df52: 6078 str r0, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_up: invalid netif", netif != NULL, return); - 803df14: 687b ldr r3, [r7, #4] - 803df16: 2b00 cmp r3, #0 - 803df18: d107 bne.n 803df2a - 803df1a: 4b13 ldr r3, [pc, #76] ; (803df68 ) - 803df1c: f44f 7254 mov.w r2, #848 ; 0x350 - 803df20: 4912 ldr r1, [pc, #72] ; (803df6c ) - 803df22: 4813 ldr r0, [pc, #76] ; (803df70 ) - 803df24: f00a f83e bl 8047fa4 - 803df28: e01b b.n 803df62 + 803df54: 687b ldr r3, [r7, #4] + 803df56: 2b00 cmp r3, #0 + 803df58: d107 bne.n 803df6a + 803df5a: 4b13 ldr r3, [pc, #76] ; (803dfa8 ) + 803df5c: f44f 7254 mov.w r2, #848 ; 0x350 + 803df60: 4912 ldr r1, [pc, #72] ; (803dfac ) + 803df62: 4813 ldr r0, [pc, #76] ; (803dfb0 ) + 803df64: f00a f83e bl 8047fe4 + 803df68: e01b b.n 803dfa2 if (!(netif->flags & NETIF_FLAG_UP)) { - 803df2a: 687b ldr r3, [r7, #4] - 803df2c: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803df30: f003 0301 and.w r3, r3, #1 - 803df34: 2b00 cmp r3, #0 - 803df36: d114 bne.n 803df62 + 803df6a: 687b ldr r3, [r7, #4] + 803df6c: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803df70: f003 0301 and.w r3, r3, #1 + 803df74: 2b00 cmp r3, #0 + 803df76: d114 bne.n 803dfa2 netif_set_flags(netif, NETIF_FLAG_UP); - 803df38: 687b ldr r3, [r7, #4] - 803df3a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803df3e: f043 0301 orr.w r3, r3, #1 - 803df42: b2da uxtb r2, r3 - 803df44: 687b ldr r3, [r7, #4] - 803df46: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803df78: 687b ldr r3, [r7, #4] + 803df7a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803df7e: f043 0301 orr.w r3, r3, #1 + 803df82: b2da uxtb r2, r3 + 803df84: 687b ldr r3, [r7, #4] + 803df86: f883 2031 strb.w r2, [r3, #49] ; 0x31 MIB2_COPY_SYSUPTIME_TO(&netif->ts); NETIF_STATUS_CALLBACK(netif); - 803df4a: 687b ldr r3, [r7, #4] - 803df4c: 69db ldr r3, [r3, #28] - 803df4e: 2b00 cmp r3, #0 - 803df50: d003 beq.n 803df5a - 803df52: 687b ldr r3, [r7, #4] - 803df54: 69db ldr r3, [r3, #28] - 803df56: 6878 ldr r0, [r7, #4] - 803df58: 4798 blx r3 + 803df8a: 687b ldr r3, [r7, #4] + 803df8c: 69db ldr r3, [r3, #28] + 803df8e: 2b00 cmp r3, #0 + 803df90: d003 beq.n 803df9a + 803df92: 687b ldr r3, [r7, #4] + 803df94: 69db ldr r3, [r3, #28] + 803df96: 6878 ldr r0, [r7, #4] + 803df98: 4798 blx r3 args.status_changed.state = 1; netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); } #endif netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - 803df5a: 2103 movs r1, #3 - 803df5c: 6878 ldr r0, [r7, #4] - 803df5e: f000 f809 bl 803df74 + 803df9a: 2103 movs r1, #3 + 803df9c: 6878 ldr r0, [r7, #4] + 803df9e: f000 f809 bl 803dfb4 #if LWIP_IPV6 nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ } } - 803df62: 3708 adds r7, #8 - 803df64: 46bd mov sp, r7 - 803df66: bd80 pop {r7, pc} - 803df68: 0804a500 .word 0x0804a500 - 803df6c: 0804a688 .word 0x0804a688 - 803df70: 0804a550 .word 0x0804a550 + 803dfa2: 3708 adds r7, #8 + 803dfa4: 46bd mov sp, r7 + 803dfa6: bd80 pop {r7, pc} + 803dfa8: 0804a540 .word 0x0804a540 + 803dfac: 0804a6c8 .word 0x0804a6c8 + 803dfb0: 0804a590 .word 0x0804a590 -0803df74 : +0803dfb4 : /** Send ARP/IGMP/MLD/RS events, e.g. on link-up/netif-up or addr-change */ static void netif_issue_reports(struct netif *netif, u8_t report_type) { - 803df74: b580 push {r7, lr} - 803df76: b082 sub sp, #8 - 803df78: af00 add r7, sp, #0 - 803df7a: 6078 str r0, [r7, #4] - 803df7c: 460b mov r3, r1 - 803df7e: 70fb strb r3, [r7, #3] + 803dfb4: b580 push {r7, lr} + 803dfb6: b082 sub sp, #8 + 803dfb8: af00 add r7, sp, #0 + 803dfba: 6078 str r0, [r7, #4] + 803dfbc: 460b mov r3, r1 + 803dfbe: 70fb strb r3, [r7, #3] LWIP_ASSERT("netif_issue_reports: invalid netif", netif != NULL); - 803df80: 687b ldr r3, [r7, #4] - 803df82: 2b00 cmp r3, #0 - 803df84: d106 bne.n 803df94 - 803df86: 4b18 ldr r3, [pc, #96] ; (803dfe8 ) - 803df88: f240 326d movw r2, #877 ; 0x36d - 803df8c: 4917 ldr r1, [pc, #92] ; (803dfec ) - 803df8e: 4818 ldr r0, [pc, #96] ; (803dff0 ) - 803df90: f00a f808 bl 8047fa4 + 803dfc0: 687b ldr r3, [r7, #4] + 803dfc2: 2b00 cmp r3, #0 + 803dfc4: d106 bne.n 803dfd4 + 803dfc6: 4b18 ldr r3, [pc, #96] ; (803e028 ) + 803dfc8: f240 326d movw r2, #877 ; 0x36d + 803dfcc: 4917 ldr r1, [pc, #92] ; (803e02c ) + 803dfce: 4818 ldr r0, [pc, #96] ; (803e030 ) + 803dfd0: f00a f808 bl 8047fe4 /* Only send reports when both link and admin states are up */ if (!(netif->flags & NETIF_FLAG_LINK_UP) || - 803df94: 687b ldr r3, [r7, #4] - 803df96: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803df9a: f003 0304 and.w r3, r3, #4 - 803df9e: 2b00 cmp r3, #0 - 803dfa0: d01e beq.n 803dfe0 + 803dfd4: 687b ldr r3, [r7, #4] + 803dfd6: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803dfda: f003 0304 and.w r3, r3, #4 + 803dfde: 2b00 cmp r3, #0 + 803dfe0: d01e beq.n 803e020 !(netif->flags & NETIF_FLAG_UP)) { - 803dfa2: 687b ldr r3, [r7, #4] - 803dfa4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803dfa8: f003 0301 and.w r3, r3, #1 + 803dfe2: 687b ldr r3, [r7, #4] + 803dfe4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803dfe8: f003 0301 and.w r3, r3, #1 if (!(netif->flags & NETIF_FLAG_LINK_UP) || - 803dfac: 2b00 cmp r3, #0 - 803dfae: d017 beq.n 803dfe0 + 803dfec: 2b00 cmp r3, #0 + 803dfee: d017 beq.n 803e020 return; } #if LWIP_IPV4 if ((report_type & NETIF_REPORT_TYPE_IPV4) && - 803dfb0: 78fb ldrb r3, [r7, #3] - 803dfb2: f003 0301 and.w r3, r3, #1 - 803dfb6: 2b00 cmp r3, #0 - 803dfb8: d013 beq.n 803dfe2 + 803dff0: 78fb ldrb r3, [r7, #3] + 803dff2: f003 0301 and.w r3, r3, #1 + 803dff6: 2b00 cmp r3, #0 + 803dff8: d013 beq.n 803e022 !ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 803dfba: 687b ldr r3, [r7, #4] - 803dfbc: 3304 adds r3, #4 - 803dfbe: 681b ldr r3, [r3, #0] + 803dffa: 687b ldr r3, [r7, #4] + 803dffc: 3304 adds r3, #4 + 803dffe: 681b ldr r3, [r3, #0] if ((report_type & NETIF_REPORT_TYPE_IPV4) && - 803dfc0: 2b00 cmp r3, #0 - 803dfc2: d00e beq.n 803dfe2 + 803e000: 2b00 cmp r3, #0 + 803e002: d00e beq.n 803e022 #if LWIP_ARP /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ if (netif->flags & (NETIF_FLAG_ETHARP)) { - 803dfc4: 687b ldr r3, [r7, #4] - 803dfc6: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803dfca: f003 0308 and.w r3, r3, #8 - 803dfce: 2b00 cmp r3, #0 - 803dfd0: d007 beq.n 803dfe2 + 803e004: 687b ldr r3, [r7, #4] + 803e006: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e00a: f003 0308 and.w r3, r3, #8 + 803e00e: 2b00 cmp r3, #0 + 803e010: d007 beq.n 803e022 etharp_gratuitous(netif); - 803dfd2: 687b ldr r3, [r7, #4] - 803dfd4: 3304 adds r3, #4 - 803dfd6: 4619 mov r1, r3 - 803dfd8: 6878 ldr r0, [r7, #4] - 803dfda: f008 fadd bl 8046598 - 803dfde: e000 b.n 803dfe2 + 803e012: 687b ldr r3, [r7, #4] + 803e014: 3304 adds r3, #4 + 803e016: 4619 mov r1, r3 + 803e018: 6878 ldr r0, [r7, #4] + 803e01a: f008 fadd bl 80465d8 + 803e01e: e000 b.n 803e022 return; - 803dfe0: bf00 nop + 803e020: bf00 nop /* send mld memberships */ mld6_report_groups(netif); #endif /* LWIP_IPV6_MLD */ } #endif /* LWIP_IPV6 */ } - 803dfe2: 3708 adds r7, #8 - 803dfe4: 46bd mov sp, r7 - 803dfe6: bd80 pop {r7, pc} - 803dfe8: 0804a500 .word 0x0804a500 - 803dfec: 0804a6a4 .word 0x0804a6a4 - 803dff0: 0804a550 .word 0x0804a550 + 803e022: 3708 adds r7, #8 + 803e024: 46bd mov sp, r7 + 803e026: bd80 pop {r7, pc} + 803e028: 0804a540 .word 0x0804a540 + 803e02c: 0804a6e4 .word 0x0804a6e4 + 803e030: 0804a590 .word 0x0804a590 -0803dff4 : +0803e034 : * @ingroup netif * Bring an interface down, disabling any traffic processing. */ void netif_set_down(struct netif *netif) { - 803dff4: b580 push {r7, lr} - 803dff6: b082 sub sp, #8 - 803dff8: af00 add r7, sp, #0 - 803dffa: 6078 str r0, [r7, #4] + 803e034: b580 push {r7, lr} + 803e036: b082 sub sp, #8 + 803e038: af00 add r7, sp, #0 + 803e03a: 6078 str r0, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_down: invalid netif", netif != NULL, return); - 803dffc: 687b ldr r3, [r7, #4] - 803dffe: 2b00 cmp r3, #0 - 803e000: d107 bne.n 803e012 - 803e002: 4b16 ldr r3, [pc, #88] ; (803e05c ) - 803e004: f240 329b movw r2, #923 ; 0x39b - 803e008: 4915 ldr r1, [pc, #84] ; (803e060 ) - 803e00a: 4816 ldr r0, [pc, #88] ; (803e064 ) - 803e00c: f009 ffca bl 8047fa4 - 803e010: e021 b.n 803e056 + 803e03c: 687b ldr r3, [r7, #4] + 803e03e: 2b00 cmp r3, #0 + 803e040: d107 bne.n 803e052 + 803e042: 4b16 ldr r3, [pc, #88] ; (803e09c ) + 803e044: f240 329b movw r2, #923 ; 0x39b + 803e048: 4915 ldr r1, [pc, #84] ; (803e0a0 ) + 803e04a: 4816 ldr r0, [pc, #88] ; (803e0a4 ) + 803e04c: f009 ffca bl 8047fe4 + 803e050: e021 b.n 803e096 if (netif->flags & NETIF_FLAG_UP) { - 803e012: 687b ldr r3, [r7, #4] - 803e014: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e018: f003 0301 and.w r3, r3, #1 - 803e01c: 2b00 cmp r3, #0 - 803e01e: d01a beq.n 803e056 + 803e052: 687b ldr r3, [r7, #4] + 803e054: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e058: f003 0301 and.w r3, r3, #1 + 803e05c: 2b00 cmp r3, #0 + 803e05e: d01a beq.n 803e096 args.status_changed.state = 0; netif_invoke_ext_callback(netif, LWIP_NSC_STATUS_CHANGED, &args); } #endif netif_clear_flags(netif, NETIF_FLAG_UP); - 803e020: 687b ldr r3, [r7, #4] - 803e022: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e026: f023 0301 bic.w r3, r3, #1 - 803e02a: b2da uxtb r2, r3 - 803e02c: 687b ldr r3, [r7, #4] - 803e02e: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803e060: 687b ldr r3, [r7, #4] + 803e062: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e066: f023 0301 bic.w r3, r3, #1 + 803e06a: b2da uxtb r2, r3 + 803e06c: 687b ldr r3, [r7, #4] + 803e06e: f883 2031 strb.w r2, [r3, #49] ; 0x31 MIB2_COPY_SYSUPTIME_TO(&netif->ts); #if LWIP_IPV4 && LWIP_ARP if (netif->flags & NETIF_FLAG_ETHARP) { - 803e032: 687b ldr r3, [r7, #4] - 803e034: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e038: f003 0308 and.w r3, r3, #8 - 803e03c: 2b00 cmp r3, #0 - 803e03e: d002 beq.n 803e046 + 803e072: 687b ldr r3, [r7, #4] + 803e074: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e078: f003 0308 and.w r3, r3, #8 + 803e07c: 2b00 cmp r3, #0 + 803e07e: d002 beq.n 803e086 etharp_cleanup_netif(netif); - 803e040: 6878 ldr r0, [r7, #4] - 803e042: f007 fe67 bl 8045d14 + 803e080: 6878 ldr r0, [r7, #4] + 803e082: f007 fe67 bl 8045d54 #if LWIP_IPV6 nd6_cleanup_netif(netif); #endif /* LWIP_IPV6 */ NETIF_STATUS_CALLBACK(netif); - 803e046: 687b ldr r3, [r7, #4] - 803e048: 69db ldr r3, [r3, #28] - 803e04a: 2b00 cmp r3, #0 - 803e04c: d003 beq.n 803e056 - 803e04e: 687b ldr r3, [r7, #4] - 803e050: 69db ldr r3, [r3, #28] - 803e052: 6878 ldr r0, [r7, #4] - 803e054: 4798 blx r3 - } -} - 803e056: 3708 adds r7, #8 - 803e058: 46bd mov sp, r7 - 803e05a: bd80 pop {r7, pc} - 803e05c: 0804a500 .word 0x0804a500 - 803e060: 0804a6c8 .word 0x0804a6c8 - 803e064: 0804a550 .word 0x0804a550 - -0803e068 : + 803e086: 687b ldr r3, [r7, #4] + 803e088: 69db ldr r3, [r3, #28] + 803e08a: 2b00 cmp r3, #0 + 803e08c: d003 beq.n 803e096 + 803e08e: 687b ldr r3, [r7, #4] + 803e090: 69db ldr r3, [r3, #28] + 803e092: 6878 ldr r0, [r7, #4] + 803e094: 4798 blx r3 + } +} + 803e096: 3708 adds r7, #8 + 803e098: 46bd mov sp, r7 + 803e09a: bd80 pop {r7, pc} + 803e09c: 0804a540 .word 0x0804a540 + 803e0a0: 0804a708 .word 0x0804a708 + 803e0a4: 0804a590 .word 0x0804a590 + +0803e0a8 : * @ingroup netif * Called by a driver when its link goes up */ void netif_set_link_up(struct netif *netif) { - 803e068: b580 push {r7, lr} - 803e06a: b082 sub sp, #8 - 803e06c: af00 add r7, sp, #0 - 803e06e: 6078 str r0, [r7, #4] + 803e0a8: b580 push {r7, lr} + 803e0aa: b082 sub sp, #8 + 803e0ac: af00 add r7, sp, #0 + 803e0ae: 6078 str r0, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_link_up: invalid netif", netif != NULL, return); - 803e070: 687b ldr r3, [r7, #4] - 803e072: 2b00 cmp r3, #0 - 803e074: d107 bne.n 803e086 - 803e076: 4b13 ldr r3, [pc, #76] ; (803e0c4 ) - 803e078: f44f 7278 mov.w r2, #992 ; 0x3e0 - 803e07c: 4912 ldr r1, [pc, #72] ; (803e0c8 ) - 803e07e: 4813 ldr r0, [pc, #76] ; (803e0cc ) - 803e080: f009 ff90 bl 8047fa4 - 803e084: e01b b.n 803e0be + 803e0b0: 687b ldr r3, [r7, #4] + 803e0b2: 2b00 cmp r3, #0 + 803e0b4: d107 bne.n 803e0c6 + 803e0b6: 4b13 ldr r3, [pc, #76] ; (803e104 ) + 803e0b8: f44f 7278 mov.w r2, #992 ; 0x3e0 + 803e0bc: 4912 ldr r1, [pc, #72] ; (803e108 ) + 803e0be: 4813 ldr r0, [pc, #76] ; (803e10c ) + 803e0c0: f009 ff90 bl 8047fe4 + 803e0c4: e01b b.n 803e0fe if (!(netif->flags & NETIF_FLAG_LINK_UP)) { - 803e086: 687b ldr r3, [r7, #4] - 803e088: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e08c: f003 0304 and.w r3, r3, #4 - 803e090: 2b00 cmp r3, #0 - 803e092: d114 bne.n 803e0be + 803e0c6: 687b ldr r3, [r7, #4] + 803e0c8: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e0cc: f003 0304 and.w r3, r3, #4 + 803e0d0: 2b00 cmp r3, #0 + 803e0d2: d114 bne.n 803e0fe netif_set_flags(netif, NETIF_FLAG_LINK_UP); - 803e094: 687b ldr r3, [r7, #4] - 803e096: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e09a: f043 0304 orr.w r3, r3, #4 - 803e09e: b2da uxtb r2, r3 - 803e0a0: 687b ldr r3, [r7, #4] - 803e0a2: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803e0d4: 687b ldr r3, [r7, #4] + 803e0d6: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e0da: f043 0304 orr.w r3, r3, #4 + 803e0de: b2da uxtb r2, r3 + 803e0e0: 687b ldr r3, [r7, #4] + 803e0e2: f883 2031 strb.w r2, [r3, #49] ; 0x31 #if LWIP_AUTOIP autoip_network_changed(netif); #endif /* LWIP_AUTOIP */ netif_issue_reports(netif, NETIF_REPORT_TYPE_IPV4 | NETIF_REPORT_TYPE_IPV6); - 803e0a6: 2103 movs r1, #3 - 803e0a8: 6878 ldr r0, [r7, #4] - 803e0aa: f7ff ff63 bl 803df74 + 803e0e6: 2103 movs r1, #3 + 803e0e8: 6878 ldr r0, [r7, #4] + 803e0ea: f7ff ff63 bl 803dfb4 #if LWIP_IPV6 nd6_restart_netif(netif); #endif /* LWIP_IPV6 */ NETIF_LINK_CALLBACK(netif); - 803e0ae: 687b ldr r3, [r7, #4] - 803e0b0: 6a1b ldr r3, [r3, #32] - 803e0b2: 2b00 cmp r3, #0 - 803e0b4: d003 beq.n 803e0be - 803e0b6: 687b ldr r3, [r7, #4] - 803e0b8: 6a1b ldr r3, [r3, #32] - 803e0ba: 6878 ldr r0, [r7, #4] - 803e0bc: 4798 blx r3 + 803e0ee: 687b ldr r3, [r7, #4] + 803e0f0: 6a1b ldr r3, [r3, #32] + 803e0f2: 2b00 cmp r3, #0 + 803e0f4: d003 beq.n 803e0fe + 803e0f6: 687b ldr r3, [r7, #4] + 803e0f8: 6a1b ldr r3, [r3, #32] + 803e0fa: 6878 ldr r0, [r7, #4] + 803e0fc: 4798 blx r3 args.link_changed.state = 1; netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); } #endif } } - 803e0be: 3708 adds r7, #8 - 803e0c0: 46bd mov sp, r7 - 803e0c2: bd80 pop {r7, pc} - 803e0c4: 0804a500 .word 0x0804a500 - 803e0c8: 0804a6e8 .word 0x0804a6e8 - 803e0cc: 0804a550 .word 0x0804a550 + 803e0fe: 3708 adds r7, #8 + 803e100: 46bd mov sp, r7 + 803e102: bd80 pop {r7, pc} + 803e104: 0804a540 .word 0x0804a540 + 803e108: 0804a728 .word 0x0804a728 + 803e10c: 0804a590 .word 0x0804a590 -0803e0d0 : +0803e110 : * @ingroup netif * Called by a driver when its link goes down */ void netif_set_link_down(struct netif *netif) { - 803e0d0: b580 push {r7, lr} - 803e0d2: b082 sub sp, #8 - 803e0d4: af00 add r7, sp, #0 - 803e0d6: 6078 str r0, [r7, #4] + 803e110: b580 push {r7, lr} + 803e112: b082 sub sp, #8 + 803e114: af00 add r7, sp, #0 + 803e116: 6078 str r0, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif_set_link_down: invalid netif", netif != NULL, return); - 803e0d8: 687b ldr r3, [r7, #4] - 803e0da: 2b00 cmp r3, #0 - 803e0dc: d107 bne.n 803e0ee - 803e0de: 4b11 ldr r3, [pc, #68] ; (803e124 ) - 803e0e0: f240 4206 movw r2, #1030 ; 0x406 - 803e0e4: 4910 ldr r1, [pc, #64] ; (803e128 ) - 803e0e6: 4811 ldr r0, [pc, #68] ; (803e12c ) - 803e0e8: f009 ff5c bl 8047fa4 - 803e0ec: e017 b.n 803e11e + 803e118: 687b ldr r3, [r7, #4] + 803e11a: 2b00 cmp r3, #0 + 803e11c: d107 bne.n 803e12e + 803e11e: 4b11 ldr r3, [pc, #68] ; (803e164 ) + 803e120: f240 4206 movw r2, #1030 ; 0x406 + 803e124: 4910 ldr r1, [pc, #64] ; (803e168 ) + 803e126: 4811 ldr r0, [pc, #68] ; (803e16c ) + 803e128: f009 ff5c bl 8047fe4 + 803e12c: e017 b.n 803e15e if (netif->flags & NETIF_FLAG_LINK_UP) { - 803e0ee: 687b ldr r3, [r7, #4] - 803e0f0: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e0f4: f003 0304 and.w r3, r3, #4 - 803e0f8: 2b00 cmp r3, #0 - 803e0fa: d010 beq.n 803e11e + 803e12e: 687b ldr r3, [r7, #4] + 803e130: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e134: f003 0304 and.w r3, r3, #4 + 803e138: 2b00 cmp r3, #0 + 803e13a: d010 beq.n 803e15e netif_clear_flags(netif, NETIF_FLAG_LINK_UP); - 803e0fc: 687b ldr r3, [r7, #4] - 803e0fe: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 803e102: f023 0304 bic.w r3, r3, #4 - 803e106: b2da uxtb r2, r3 - 803e108: 687b ldr r3, [r7, #4] - 803e10a: f883 2031 strb.w r2, [r3, #49] ; 0x31 + 803e13c: 687b ldr r3, [r7, #4] + 803e13e: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 803e142: f023 0304 bic.w r3, r3, #4 + 803e146: b2da uxtb r2, r3 + 803e148: 687b ldr r3, [r7, #4] + 803e14a: f883 2031 strb.w r2, [r3, #49] ; 0x31 NETIF_LINK_CALLBACK(netif); - 803e10e: 687b ldr r3, [r7, #4] - 803e110: 6a1b ldr r3, [r3, #32] - 803e112: 2b00 cmp r3, #0 - 803e114: d003 beq.n 803e11e - 803e116: 687b ldr r3, [r7, #4] - 803e118: 6a1b ldr r3, [r3, #32] - 803e11a: 6878 ldr r0, [r7, #4] - 803e11c: 4798 blx r3 + 803e14e: 687b ldr r3, [r7, #4] + 803e150: 6a1b ldr r3, [r3, #32] + 803e152: 2b00 cmp r3, #0 + 803e154: d003 beq.n 803e15e + 803e156: 687b ldr r3, [r7, #4] + 803e158: 6a1b ldr r3, [r3, #32] + 803e15a: 6878 ldr r0, [r7, #4] + 803e15c: 4798 blx r3 args.link_changed.state = 0; netif_invoke_ext_callback(netif, LWIP_NSC_LINK_CHANGED, &args); } #endif } } - 803e11e: 3708 adds r7, #8 - 803e120: 46bd mov sp, r7 - 803e122: bd80 pop {r7, pc} - 803e124: 0804a500 .word 0x0804a500 - 803e128: 0804a70c .word 0x0804a70c - 803e12c: 0804a550 .word 0x0804a550 + 803e15e: 3708 adds r7, #8 + 803e160: 46bd mov sp, r7 + 803e162: bd80 pop {r7, pc} + 803e164: 0804a540 .word 0x0804a540 + 803e168: 0804a74c .word 0x0804a74c + 803e16c: 0804a590 .word 0x0804a590 -0803e130 : +0803e170 : * @ingroup netif * Set callback to be called when link is brought up/down */ void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback) { - 803e130: b480 push {r7} - 803e132: b083 sub sp, #12 - 803e134: af00 add r7, sp, #0 - 803e136: 6078 str r0, [r7, #4] - 803e138: 6039 str r1, [r7, #0] + 803e170: b480 push {r7} + 803e172: b083 sub sp, #12 + 803e174: af00 add r7, sp, #0 + 803e176: 6078 str r0, [r7, #4] + 803e178: 6039 str r1, [r7, #0] LWIP_ASSERT_CORE_LOCKED(); if (netif) { - 803e13a: 687b ldr r3, [r7, #4] - 803e13c: 2b00 cmp r3, #0 - 803e13e: d002 beq.n 803e146 + 803e17a: 687b ldr r3, [r7, #4] + 803e17c: 2b00 cmp r3, #0 + 803e17e: d002 beq.n 803e186 netif->link_callback = link_callback; - 803e140: 687b ldr r3, [r7, #4] - 803e142: 683a ldr r2, [r7, #0] - 803e144: 621a str r2, [r3, #32] + 803e180: 687b ldr r3, [r7, #4] + 803e182: 683a ldr r2, [r7, #0] + 803e184: 621a str r2, [r3, #32] } } - 803e146: bf00 nop - 803e148: 370c adds r7, #12 - 803e14a: 46bd mov sp, r7 - 803e14c: f85d 7b04 ldr.w r7, [sp], #4 - 803e150: 4770 bx lr + 803e186: bf00 nop + 803e188: 370c adds r7, #12 + 803e18a: 46bd mov sp, r7 + 803e18c: f85d 7b04 ldr.w r7, [sp], #4 + 803e190: 4770 bx lr -0803e152 : +0803e192 : #if LWIP_IPV4 /** Dummy IPv4 output function for netifs not supporting IPv4 */ static err_t netif_null_output_ip4(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr) { - 803e152: b480 push {r7} - 803e154: b085 sub sp, #20 - 803e156: af00 add r7, sp, #0 - 803e158: 60f8 str r0, [r7, #12] - 803e15a: 60b9 str r1, [r7, #8] - 803e15c: 607a str r2, [r7, #4] + 803e192: b480 push {r7} + 803e194: b085 sub sp, #20 + 803e196: af00 add r7, sp, #0 + 803e198: 60f8 str r0, [r7, #12] + 803e19a: 60b9 str r1, [r7, #8] + 803e19c: 607a str r2, [r7, #4] LWIP_UNUSED_ARG(netif); LWIP_UNUSED_ARG(p); LWIP_UNUSED_ARG(ipaddr); return ERR_IF; - 803e15e: f06f 030b mvn.w r3, #11 + 803e19e: f06f 030b mvn.w r3, #11 } - 803e162: 4618 mov r0, r3 - 803e164: 3714 adds r7, #20 - 803e166: 46bd mov sp, r7 - 803e168: f85d 7b04 ldr.w r7, [sp], #4 - 803e16c: 4770 bx lr + 803e1a2: 4618 mov r0, r3 + 803e1a4: 3714 adds r7, #20 + 803e1a6: 46bd mov sp, r7 + 803e1a8: f85d 7b04 ldr.w r7, [sp], #4 + 803e1ac: 4770 bx lr ... -0803e170 : +0803e1b0 : * * @param idx index of netif to find */ struct netif * netif_get_by_index(u8_t idx) { - 803e170: b480 push {r7} - 803e172: b085 sub sp, #20 - 803e174: af00 add r7, sp, #0 - 803e176: 4603 mov r3, r0 - 803e178: 71fb strb r3, [r7, #7] + 803e1b0: b480 push {r7} + 803e1b2: b085 sub sp, #20 + 803e1b4: af00 add r7, sp, #0 + 803e1b6: 4603 mov r3, r0 + 803e1b8: 71fb strb r3, [r7, #7] struct netif *netif; LWIP_ASSERT_CORE_LOCKED(); if (idx != NETIF_NO_INDEX) { - 803e17a: 79fb ldrb r3, [r7, #7] - 803e17c: 2b00 cmp r3, #0 - 803e17e: d013 beq.n 803e1a8 + 803e1ba: 79fb ldrb r3, [r7, #7] + 803e1bc: 2b00 cmp r3, #0 + 803e1be: d013 beq.n 803e1e8 NETIF_FOREACH(netif) { - 803e180: 4b0d ldr r3, [pc, #52] ; (803e1b8 ) - 803e182: 681b ldr r3, [r3, #0] - 803e184: 60fb str r3, [r7, #12] - 803e186: e00c b.n 803e1a2 + 803e1c0: 4b0d ldr r3, [pc, #52] ; (803e1f8 ) + 803e1c2: 681b ldr r3, [r3, #0] + 803e1c4: 60fb str r3, [r7, #12] + 803e1c6: e00c b.n 803e1e2 if (idx == netif_get_index(netif)) { - 803e188: 68fb ldr r3, [r7, #12] - 803e18a: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 803e18e: 3301 adds r3, #1 - 803e190: b2db uxtb r3, r3 - 803e192: 79fa ldrb r2, [r7, #7] - 803e194: 429a cmp r2, r3 - 803e196: d101 bne.n 803e19c + 803e1c8: 68fb ldr r3, [r7, #12] + 803e1ca: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 803e1ce: 3301 adds r3, #1 + 803e1d0: b2db uxtb r3, r3 + 803e1d2: 79fa ldrb r2, [r7, #7] + 803e1d4: 429a cmp r2, r3 + 803e1d6: d101 bne.n 803e1dc return netif; /* found! */ - 803e198: 68fb ldr r3, [r7, #12] - 803e19a: e006 b.n 803e1aa + 803e1d8: 68fb ldr r3, [r7, #12] + 803e1da: e006 b.n 803e1ea NETIF_FOREACH(netif) { - 803e19c: 68fb ldr r3, [r7, #12] - 803e19e: 681b ldr r3, [r3, #0] - 803e1a0: 60fb str r3, [r7, #12] - 803e1a2: 68fb ldr r3, [r7, #12] - 803e1a4: 2b00 cmp r3, #0 - 803e1a6: d1ef bne.n 803e188 + 803e1dc: 68fb ldr r3, [r7, #12] + 803e1de: 681b ldr r3, [r3, #0] + 803e1e0: 60fb str r3, [r7, #12] + 803e1e2: 68fb ldr r3, [r7, #12] + 803e1e4: 2b00 cmp r3, #0 + 803e1e6: d1ef bne.n 803e1c8 } } } return NULL; - 803e1a8: 2300 movs r3, #0 + 803e1e8: 2300 movs r3, #0 } - 803e1aa: 4618 mov r0, r3 - 803e1ac: 3714 adds r7, #20 - 803e1ae: 46bd mov sp, r7 - 803e1b0: f85d 7b04 ldr.w r7, [sp], #4 - 803e1b4: 4770 bx lr - 803e1b6: bf00 nop - 803e1b8: 2400eadc .word 0x2400eadc + 803e1ea: 4618 mov r0, r3 + 803e1ec: 3714 adds r7, #20 + 803e1ee: 46bd mov sp, r7 + 803e1f0: f85d 7b04 ldr.w r7, [sp], #4 + 803e1f4: 4770 bx lr + 803e1f6: bf00 nop + 803e1f8: 2400eadc .word 0x2400eadc -0803e1bc : +0803e1fc : #if !NO_SYS static #endif /* !NO_SYS */ void pbuf_free_ooseq(void) { - 803e1bc: b580 push {r7, lr} - 803e1be: b082 sub sp, #8 - 803e1c0: af00 add r7, sp, #0 + 803e1fc: b580 push {r7, lr} + 803e1fe: b082 sub sp, #8 + 803e200: af00 add r7, sp, #0 struct tcp_pcb *pcb; SYS_ARCH_SET(pbuf_free_ooseq_pending, 0); - 803e1c2: 4b0c ldr r3, [pc, #48] ; (803e1f4 ) - 803e1c4: 2200 movs r2, #0 - 803e1c6: 701a strb r2, [r3, #0] + 803e202: 4b0c ldr r3, [pc, #48] ; (803e234 ) + 803e204: 2200 movs r2, #0 + 803e206: 701a strb r2, [r3, #0] for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - 803e1c8: 4b0b ldr r3, [pc, #44] ; (803e1f8 ) - 803e1ca: 681b ldr r3, [r3, #0] - 803e1cc: 607b str r3, [r7, #4] - 803e1ce: e00a b.n 803e1e6 + 803e208: 4b0b ldr r3, [pc, #44] ; (803e238 ) + 803e20a: 681b ldr r3, [r3, #0] + 803e20c: 607b str r3, [r7, #4] + 803e20e: e00a b.n 803e226 if (pcb->ooseq != NULL) { - 803e1d0: 687b ldr r3, [r7, #4] - 803e1d2: 6f5b ldr r3, [r3, #116] ; 0x74 - 803e1d4: 2b00 cmp r3, #0 - 803e1d6: d003 beq.n 803e1e0 + 803e210: 687b ldr r3, [r7, #4] + 803e212: 6f5b ldr r3, [r3, #116] ; 0x74 + 803e214: 2b00 cmp r3, #0 + 803e216: d003 beq.n 803e220 /** Free the ooseq pbufs of one PCB only */ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n")); tcp_free_ooseq(pcb); - 803e1d8: 6878 ldr r0, [r7, #4] - 803e1da: f002 f9df bl 804059c + 803e218: 6878 ldr r0, [r7, #4] + 803e21a: f002 f9df bl 80405dc return; - 803e1de: e005 b.n 803e1ec + 803e21e: e005 b.n 803e22c for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - 803e1e0: 687b ldr r3, [r7, #4] - 803e1e2: 68db ldr r3, [r3, #12] - 803e1e4: 607b str r3, [r7, #4] - 803e1e6: 687b ldr r3, [r7, #4] - 803e1e8: 2b00 cmp r3, #0 - 803e1ea: d1f1 bne.n 803e1d0 + 803e220: 687b ldr r3, [r7, #4] + 803e222: 68db ldr r3, [r3, #12] + 803e224: 607b str r3, [r7, #4] + 803e226: 687b ldr r3, [r7, #4] + 803e228: 2b00 cmp r3, #0 + 803e22a: d1f1 bne.n 803e210 } } } - 803e1ec: 3708 adds r7, #8 - 803e1ee: 46bd mov sp, r7 - 803e1f0: bd80 pop {r7, pc} - 803e1f2: bf00 nop - 803e1f4: 2400eae5 .word 0x2400eae5 - 803e1f8: 2400eaf4 .word 0x2400eaf4 + 803e22c: 3708 adds r7, #8 + 803e22e: 46bd mov sp, r7 + 803e230: bd80 pop {r7, pc} + 803e232: bf00 nop + 803e234: 2400eae5 .word 0x2400eae5 + 803e238: 2400eaf4 .word 0x2400eaf4 -0803e1fc : +0803e23c : #endif /* !NO_SYS */ /** Queue a call to pbuf_free_ooseq if not already queued. */ static void pbuf_pool_is_empty(void) { - 803e1fc: b480 push {r7} - 803e1fe: af00 add r7, sp, #0 + 803e23c: b480 push {r7} + 803e23e: af00 add r7, sp, #0 #ifndef PBUF_POOL_FREE_OOSEQ_QUEUE_CALL SYS_ARCH_SET(pbuf_free_ooseq_pending, 1); - 803e200: 4b03 ldr r3, [pc, #12] ; (803e210 ) - 803e202: 2201 movs r2, #1 - 803e204: 701a strb r2, [r3, #0] + 803e240: 4b03 ldr r3, [pc, #12] ; (803e250 ) + 803e242: 2201 movs r2, #1 + 803e244: 701a strb r2, [r3, #0] if (!queued) { /* queue a call to pbuf_free_ooseq if not already queued */ PBUF_POOL_FREE_OOSEQ_QUEUE_CALL(); } #endif /* PBUF_POOL_FREE_OOSEQ_QUEUE_CALL */ } - 803e206: bf00 nop - 803e208: 46bd mov sp, r7 - 803e20a: f85d 7b04 ldr.w r7, [sp], #4 - 803e20e: 4770 bx lr - 803e210: 2400eae5 .word 0x2400eae5 + 803e246: bf00 nop + 803e248: 46bd mov sp, r7 + 803e24a: f85d 7b04 ldr.w r7, [sp], #4 + 803e24e: 4770 bx lr + 803e250: 2400eae5 .word 0x2400eae5 -0803e214 : +0803e254 : #endif /* !LWIP_TCP || !TCP_QUEUE_OOSEQ || !PBUF_POOL_FREE_OOSEQ */ /* Initialize members of struct pbuf after allocation */ static void pbuf_init_alloced_pbuf(struct pbuf *p, void *payload, u16_t tot_len, u16_t len, pbuf_type type, u8_t flags) { - 803e214: b480 push {r7} - 803e216: b085 sub sp, #20 - 803e218: af00 add r7, sp, #0 - 803e21a: 60f8 str r0, [r7, #12] - 803e21c: 60b9 str r1, [r7, #8] - 803e21e: 4611 mov r1, r2 - 803e220: 461a mov r2, r3 - 803e222: 460b mov r3, r1 - 803e224: 80fb strh r3, [r7, #6] - 803e226: 4613 mov r3, r2 - 803e228: 80bb strh r3, [r7, #4] + 803e254: b480 push {r7} + 803e256: b085 sub sp, #20 + 803e258: af00 add r7, sp, #0 + 803e25a: 60f8 str r0, [r7, #12] + 803e25c: 60b9 str r1, [r7, #8] + 803e25e: 4611 mov r1, r2 + 803e260: 461a mov r2, r3 + 803e262: 460b mov r3, r1 + 803e264: 80fb strh r3, [r7, #6] + 803e266: 4613 mov r3, r2 + 803e268: 80bb strh r3, [r7, #4] p->next = NULL; - 803e22a: 68fb ldr r3, [r7, #12] - 803e22c: 2200 movs r2, #0 - 803e22e: 601a str r2, [r3, #0] + 803e26a: 68fb ldr r3, [r7, #12] + 803e26c: 2200 movs r2, #0 + 803e26e: 601a str r2, [r3, #0] p->payload = payload; - 803e230: 68fb ldr r3, [r7, #12] - 803e232: 68ba ldr r2, [r7, #8] - 803e234: 605a str r2, [r3, #4] + 803e270: 68fb ldr r3, [r7, #12] + 803e272: 68ba ldr r2, [r7, #8] + 803e274: 605a str r2, [r3, #4] p->tot_len = tot_len; - 803e236: 68fb ldr r3, [r7, #12] - 803e238: 88fa ldrh r2, [r7, #6] - 803e23a: 811a strh r2, [r3, #8] + 803e276: 68fb ldr r3, [r7, #12] + 803e278: 88fa ldrh r2, [r7, #6] + 803e27a: 811a strh r2, [r3, #8] p->len = len; - 803e23c: 68fb ldr r3, [r7, #12] - 803e23e: 88ba ldrh r2, [r7, #4] - 803e240: 815a strh r2, [r3, #10] + 803e27c: 68fb ldr r3, [r7, #12] + 803e27e: 88ba ldrh r2, [r7, #4] + 803e280: 815a strh r2, [r3, #10] p->type_internal = (u8_t)type; - 803e242: 8b3b ldrh r3, [r7, #24] - 803e244: b2da uxtb r2, r3 - 803e246: 68fb ldr r3, [r7, #12] - 803e248: 731a strb r2, [r3, #12] + 803e282: 8b3b ldrh r3, [r7, #24] + 803e284: b2da uxtb r2, r3 + 803e286: 68fb ldr r3, [r7, #12] + 803e288: 731a strb r2, [r3, #12] p->flags = flags; - 803e24a: 68fb ldr r3, [r7, #12] - 803e24c: 7f3a ldrb r2, [r7, #28] - 803e24e: 735a strb r2, [r3, #13] + 803e28a: 68fb ldr r3, [r7, #12] + 803e28c: 7f3a ldrb r2, [r7, #28] + 803e28e: 735a strb r2, [r3, #13] p->ref = 1; - 803e250: 68fb ldr r3, [r7, #12] - 803e252: 2201 movs r2, #1 - 803e254: 739a strb r2, [r3, #14] + 803e290: 68fb ldr r3, [r7, #12] + 803e292: 2201 movs r2, #1 + 803e294: 739a strb r2, [r3, #14] p->if_idx = NETIF_NO_INDEX; - 803e256: 68fb ldr r3, [r7, #12] - 803e258: 2200 movs r2, #0 - 803e25a: 73da strb r2, [r3, #15] + 803e296: 68fb ldr r3, [r7, #12] + 803e298: 2200 movs r2, #0 + 803e29a: 73da strb r2, [r3, #15] } - 803e25c: bf00 nop - 803e25e: 3714 adds r7, #20 - 803e260: 46bd mov sp, r7 - 803e262: f85d 7b04 ldr.w r7, [sp], #4 - 803e266: 4770 bx lr + 803e29c: bf00 nop + 803e29e: 3714 adds r7, #20 + 803e2a0: 46bd mov sp, r7 + 803e2a2: f85d 7b04 ldr.w r7, [sp], #4 + 803e2a6: 4770 bx lr -0803e268 : +0803e2a8 : * @return the allocated pbuf. If multiple pbufs where allocated, this * is the first pbuf of a pbuf chain. */ struct pbuf * pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) { - 803e268: b580 push {r7, lr} - 803e26a: b08c sub sp, #48 ; 0x30 - 803e26c: af02 add r7, sp, #8 - 803e26e: 4603 mov r3, r0 - 803e270: 71fb strb r3, [r7, #7] - 803e272: 460b mov r3, r1 - 803e274: 80bb strh r3, [r7, #4] - 803e276: 4613 mov r3, r2 - 803e278: 807b strh r3, [r7, #2] + 803e2a8: b580 push {r7, lr} + 803e2aa: b08c sub sp, #48 ; 0x30 + 803e2ac: af02 add r7, sp, #8 + 803e2ae: 4603 mov r3, r0 + 803e2b0: 71fb strb r3, [r7, #7] + 803e2b2: 460b mov r3, r1 + 803e2b4: 80bb strh r3, [r7, #4] + 803e2b6: 4613 mov r3, r2 + 803e2b8: 807b strh r3, [r7, #2] struct pbuf *p; u16_t offset = (u16_t)layer; - 803e27a: 79fb ldrb r3, [r7, #7] - 803e27c: 847b strh r3, [r7, #34] ; 0x22 + 803e2ba: 79fb ldrb r3, [r7, #7] + 803e2bc: 847b strh r3, [r7, #34] ; 0x22 LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); switch (type) { - 803e27e: 887b ldrh r3, [r7, #2] - 803e280: f5b3 7f20 cmp.w r3, #640 ; 0x280 - 803e284: d07f beq.n 803e386 - 803e286: f5b3 7f20 cmp.w r3, #640 ; 0x280 - 803e28a: f300 80c8 bgt.w 803e41e - 803e28e: f5b3 7fc1 cmp.w r3, #386 ; 0x182 - 803e292: d010 beq.n 803e2b6 - 803e294: f5b3 7fc1 cmp.w r3, #386 ; 0x182 - 803e298: f300 80c1 bgt.w 803e41e - 803e29c: 2b01 cmp r3, #1 - 803e29e: d002 beq.n 803e2a6 - 803e2a0: 2b41 cmp r3, #65 ; 0x41 - 803e2a2: f040 80bc bne.w 803e41e + 803e2be: 887b ldrh r3, [r7, #2] + 803e2c0: f5b3 7f20 cmp.w r3, #640 ; 0x280 + 803e2c4: d07f beq.n 803e3c6 + 803e2c6: f5b3 7f20 cmp.w r3, #640 ; 0x280 + 803e2ca: f300 80c8 bgt.w 803e45e + 803e2ce: f5b3 7fc1 cmp.w r3, #386 ; 0x182 + 803e2d2: d010 beq.n 803e2f6 + 803e2d4: f5b3 7fc1 cmp.w r3, #386 ; 0x182 + 803e2d8: f300 80c1 bgt.w 803e45e + 803e2dc: 2b01 cmp r3, #1 + 803e2de: d002 beq.n 803e2e6 + 803e2e0: 2b41 cmp r3, #65 ; 0x41 + 803e2e2: f040 80bc bne.w 803e45e case PBUF_REF: /* fall through */ case PBUF_ROM: p = pbuf_alloc_reference(NULL, length, type); - 803e2a6: 887a ldrh r2, [r7, #2] - 803e2a8: 88bb ldrh r3, [r7, #4] - 803e2aa: 4619 mov r1, r3 - 803e2ac: 2000 movs r0, #0 - 803e2ae: f000 f8d1 bl 803e454 - 803e2b2: 6278 str r0, [r7, #36] ; 0x24 + 803e2e6: 887a ldrh r2, [r7, #2] + 803e2e8: 88bb ldrh r3, [r7, #4] + 803e2ea: 4619 mov r1, r3 + 803e2ec: 2000 movs r0, #0 + 803e2ee: f000 f8d1 bl 803e494 + 803e2f2: 6278 str r0, [r7, #36] ; 0x24 break; - 803e2b4: e0bd b.n 803e432 + 803e2f4: e0bd b.n 803e472 case PBUF_POOL: { struct pbuf *q, *last; u16_t rem_len; /* remaining length */ p = NULL; - 803e2b6: 2300 movs r3, #0 - 803e2b8: 627b str r3, [r7, #36] ; 0x24 + 803e2f6: 2300 movs r3, #0 + 803e2f8: 627b str r3, [r7, #36] ; 0x24 last = NULL; - 803e2ba: 2300 movs r3, #0 - 803e2bc: 61fb str r3, [r7, #28] + 803e2fa: 2300 movs r3, #0 + 803e2fc: 61fb str r3, [r7, #28] rem_len = length; - 803e2be: 88bb ldrh r3, [r7, #4] - 803e2c0: 837b strh r3, [r7, #26] + 803e2fe: 88bb ldrh r3, [r7, #4] + 803e300: 837b strh r3, [r7, #26] do { u16_t qlen; q = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); - 803e2c2: 2008 movs r0, #8 - 803e2c4: f7ff fbb2 bl 803da2c - 803e2c8: 6138 str r0, [r7, #16] + 803e302: 2008 movs r0, #8 + 803e304: f7ff fbb2 bl 803da6c + 803e308: 6138 str r0, [r7, #16] if (q == NULL) { - 803e2ca: 693b ldr r3, [r7, #16] - 803e2cc: 2b00 cmp r3, #0 - 803e2ce: d109 bne.n 803e2e4 + 803e30a: 693b ldr r3, [r7, #16] + 803e30c: 2b00 cmp r3, #0 + 803e30e: d109 bne.n 803e324 PBUF_POOL_IS_EMPTY(); - 803e2d0: f7ff ff94 bl 803e1fc + 803e310: f7ff ff94 bl 803e23c /* free chain so far allocated */ if (p) { - 803e2d4: 6a7b ldr r3, [r7, #36] ; 0x24 - 803e2d6: 2b00 cmp r3, #0 - 803e2d8: d002 beq.n 803e2e0 + 803e314: 6a7b ldr r3, [r7, #36] ; 0x24 + 803e316: 2b00 cmp r3, #0 + 803e318: d002 beq.n 803e320 pbuf_free(p); - 803e2da: 6a78 ldr r0, [r7, #36] ; 0x24 - 803e2dc: f000 faa8 bl 803e830 + 803e31a: 6a78 ldr r0, [r7, #36] ; 0x24 + 803e31c: f000 faa8 bl 803e870 } /* bail out unsuccessfully */ return NULL; - 803e2e0: 2300 movs r3, #0 - 803e2e2: e0a7 b.n 803e434 + 803e320: 2300 movs r3, #0 + 803e322: e0a7 b.n 803e474 } qlen = LWIP_MIN(rem_len, (u16_t)(PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset))); - 803e2e4: 8c7b ldrh r3, [r7, #34] ; 0x22 - 803e2e6: 3303 adds r3, #3 - 803e2e8: b29b uxth r3, r3 - 803e2ea: f023 0303 bic.w r3, r3, #3 - 803e2ee: b29b uxth r3, r3 - 803e2f0: f5c3 7314 rsb r3, r3, #592 ; 0x250 - 803e2f4: b29b uxth r3, r3 - 803e2f6: 8b7a ldrh r2, [r7, #26] - 803e2f8: 4293 cmp r3, r2 - 803e2fa: bf28 it cs - 803e2fc: 4613 movcs r3, r2 - 803e2fe: 81fb strh r3, [r7, #14] + 803e324: 8c7b ldrh r3, [r7, #34] ; 0x22 + 803e326: 3303 adds r3, #3 + 803e328: b29b uxth r3, r3 + 803e32a: f023 0303 bic.w r3, r3, #3 + 803e32e: b29b uxth r3, r3 + 803e330: f5c3 7314 rsb r3, r3, #592 ; 0x250 + 803e334: b29b uxth r3, r3 + 803e336: 8b7a ldrh r2, [r7, #26] + 803e338: 4293 cmp r3, r2 + 803e33a: bf28 it cs + 803e33c: 4613 movcs r3, r2 + 803e33e: 81fb strh r3, [r7, #14] pbuf_init_alloced_pbuf(q, LWIP_MEM_ALIGN((void *)((u8_t *)q + SIZEOF_STRUCT_PBUF + offset)), - 803e300: 8c7b ldrh r3, [r7, #34] ; 0x22 - 803e302: 3310 adds r3, #16 - 803e304: 693a ldr r2, [r7, #16] - 803e306: 4413 add r3, r2 - 803e308: 3303 adds r3, #3 - 803e30a: f023 0303 bic.w r3, r3, #3 - 803e30e: 4618 mov r0, r3 - 803e310: 89f9 ldrh r1, [r7, #14] - 803e312: 8b7a ldrh r2, [r7, #26] - 803e314: 2300 movs r3, #0 - 803e316: 9301 str r3, [sp, #4] - 803e318: 887b ldrh r3, [r7, #2] - 803e31a: 9300 str r3, [sp, #0] - 803e31c: 460b mov r3, r1 - 803e31e: 4601 mov r1, r0 - 803e320: 6938 ldr r0, [r7, #16] - 803e322: f7ff ff77 bl 803e214 + 803e340: 8c7b ldrh r3, [r7, #34] ; 0x22 + 803e342: 3310 adds r3, #16 + 803e344: 693a ldr r2, [r7, #16] + 803e346: 4413 add r3, r2 + 803e348: 3303 adds r3, #3 + 803e34a: f023 0303 bic.w r3, r3, #3 + 803e34e: 4618 mov r0, r3 + 803e350: 89f9 ldrh r1, [r7, #14] + 803e352: 8b7a ldrh r2, [r7, #26] + 803e354: 2300 movs r3, #0 + 803e356: 9301 str r3, [sp, #4] + 803e358: 887b ldrh r3, [r7, #2] + 803e35a: 9300 str r3, [sp, #0] + 803e35c: 460b mov r3, r1 + 803e35e: 4601 mov r1, r0 + 803e360: 6938 ldr r0, [r7, #16] + 803e362: f7ff ff77 bl 803e254 rem_len, qlen, type, 0); LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned", - 803e326: 693b ldr r3, [r7, #16] - 803e328: 685b ldr r3, [r3, #4] - 803e32a: f003 0303 and.w r3, r3, #3 - 803e32e: 2b00 cmp r3, #0 - 803e330: d006 beq.n 803e340 - 803e332: 4b42 ldr r3, [pc, #264] ; (803e43c ) - 803e334: f44f 7280 mov.w r2, #256 ; 0x100 - 803e338: 4941 ldr r1, [pc, #260] ; (803e440 ) - 803e33a: 4842 ldr r0, [pc, #264] ; (803e444 ) - 803e33c: f009 fe32 bl 8047fa4 + 803e366: 693b ldr r3, [r7, #16] + 803e368: 685b ldr r3, [r3, #4] + 803e36a: f003 0303 and.w r3, r3, #3 + 803e36e: 2b00 cmp r3, #0 + 803e370: d006 beq.n 803e380 + 803e372: 4b42 ldr r3, [pc, #264] ; (803e47c ) + 803e374: f44f 7280 mov.w r2, #256 ; 0x100 + 803e378: 4941 ldr r1, [pc, #260] ; (803e480 ) + 803e37a: 4842 ldr r0, [pc, #264] ; (803e484 ) + 803e37c: f009 fe32 bl 8047fe4 ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0); LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT", - 803e340: 8c7b ldrh r3, [r7, #34] ; 0x22 - 803e342: 3303 adds r3, #3 - 803e344: f023 0303 bic.w r3, r3, #3 - 803e348: f5b3 7f14 cmp.w r3, #592 ; 0x250 - 803e34c: d106 bne.n 803e35c - 803e34e: 4b3b ldr r3, [pc, #236] ; (803e43c ) - 803e350: f44f 7281 mov.w r2, #258 ; 0x102 - 803e354: 493c ldr r1, [pc, #240] ; (803e448 ) - 803e356: 483b ldr r0, [pc, #236] ; (803e444 ) - 803e358: f009 fe24 bl 8047fa4 + 803e380: 8c7b ldrh r3, [r7, #34] ; 0x22 + 803e382: 3303 adds r3, #3 + 803e384: f023 0303 bic.w r3, r3, #3 + 803e388: f5b3 7f14 cmp.w r3, #592 ; 0x250 + 803e38c: d106 bne.n 803e39c + 803e38e: 4b3b ldr r3, [pc, #236] ; (803e47c ) + 803e390: f44f 7281 mov.w r2, #258 ; 0x102 + 803e394: 493c ldr r1, [pc, #240] ; (803e488 ) + 803e396: 483b ldr r0, [pc, #236] ; (803e484 ) + 803e398: f009 fe24 bl 8047fe4 (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 ); if (p == NULL) { - 803e35c: 6a7b ldr r3, [r7, #36] ; 0x24 - 803e35e: 2b00 cmp r3, #0 - 803e360: d102 bne.n 803e368 + 803e39c: 6a7b ldr r3, [r7, #36] ; 0x24 + 803e39e: 2b00 cmp r3, #0 + 803e3a0: d102 bne.n 803e3a8 /* allocated head of pbuf chain (into p) */ p = q; - 803e362: 693b ldr r3, [r7, #16] - 803e364: 627b str r3, [r7, #36] ; 0x24 - 803e366: e002 b.n 803e36e + 803e3a2: 693b ldr r3, [r7, #16] + 803e3a4: 627b str r3, [r7, #36] ; 0x24 + 803e3a6: e002 b.n 803e3ae } else { /* make previous pbuf point to this pbuf */ last->next = q; - 803e368: 69fb ldr r3, [r7, #28] - 803e36a: 693a ldr r2, [r7, #16] - 803e36c: 601a str r2, [r3, #0] + 803e3a8: 69fb ldr r3, [r7, #28] + 803e3aa: 693a ldr r2, [r7, #16] + 803e3ac: 601a str r2, [r3, #0] } last = q; - 803e36e: 693b ldr r3, [r7, #16] - 803e370: 61fb str r3, [r7, #28] + 803e3ae: 693b ldr r3, [r7, #16] + 803e3b0: 61fb str r3, [r7, #28] rem_len = (u16_t)(rem_len - qlen); - 803e372: 8b7a ldrh r2, [r7, #26] - 803e374: 89fb ldrh r3, [r7, #14] - 803e376: 1ad3 subs r3, r2, r3 - 803e378: 837b strh r3, [r7, #26] + 803e3b2: 8b7a ldrh r2, [r7, #26] + 803e3b4: 89fb ldrh r3, [r7, #14] + 803e3b6: 1ad3 subs r3, r2, r3 + 803e3b8: 837b strh r3, [r7, #26] offset = 0; - 803e37a: 2300 movs r3, #0 - 803e37c: 847b strh r3, [r7, #34] ; 0x22 + 803e3ba: 2300 movs r3, #0 + 803e3bc: 847b strh r3, [r7, #34] ; 0x22 } while (rem_len > 0); - 803e37e: 8b7b ldrh r3, [r7, #26] - 803e380: 2b00 cmp r3, #0 - 803e382: d19e bne.n 803e2c2 + 803e3be: 8b7b ldrh r3, [r7, #26] + 803e3c0: 2b00 cmp r3, #0 + 803e3c2: d19e bne.n 803e302 break; - 803e384: e055 b.n 803e432 + 803e3c4: e055 b.n 803e472 } case PBUF_RAM: { u16_t payload_len = (u16_t)(LWIP_MEM_ALIGN_SIZE(offset) + LWIP_MEM_ALIGN_SIZE(length)); - 803e386: 8c7b ldrh r3, [r7, #34] ; 0x22 - 803e388: 3303 adds r3, #3 - 803e38a: b29b uxth r3, r3 - 803e38c: f023 0303 bic.w r3, r3, #3 - 803e390: b29a uxth r2, r3 - 803e392: 88bb ldrh r3, [r7, #4] - 803e394: 3303 adds r3, #3 - 803e396: b29b uxth r3, r3 - 803e398: f023 0303 bic.w r3, r3, #3 - 803e39c: b29b uxth r3, r3 - 803e39e: 4413 add r3, r2 - 803e3a0: 833b strh r3, [r7, #24] + 803e3c6: 8c7b ldrh r3, [r7, #34] ; 0x22 + 803e3c8: 3303 adds r3, #3 + 803e3ca: b29b uxth r3, r3 + 803e3cc: f023 0303 bic.w r3, r3, #3 + 803e3d0: b29a uxth r2, r3 + 803e3d2: 88bb ldrh r3, [r7, #4] + 803e3d4: 3303 adds r3, #3 + 803e3d6: b29b uxth r3, r3 + 803e3d8: f023 0303 bic.w r3, r3, #3 + 803e3dc: b29b uxth r3, r3 + 803e3de: 4413 add r3, r2 + 803e3e0: 833b strh r3, [r7, #24] mem_size_t alloc_len = (mem_size_t)(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF) + payload_len); - 803e3a2: 8b3b ldrh r3, [r7, #24] - 803e3a4: 3310 adds r3, #16 - 803e3a6: 82fb strh r3, [r7, #22] + 803e3e2: 8b3b ldrh r3, [r7, #24] + 803e3e4: 3310 adds r3, #16 + 803e3e6: 82fb strh r3, [r7, #22] /* bug #50040: Check for integer overflow when calculating alloc_len */ if ((payload_len < LWIP_MEM_ALIGN_SIZE(length)) || - 803e3a8: 8b3a ldrh r2, [r7, #24] - 803e3aa: 88bb ldrh r3, [r7, #4] - 803e3ac: 3303 adds r3, #3 - 803e3ae: f023 0303 bic.w r3, r3, #3 - 803e3b2: 429a cmp r2, r3 - 803e3b4: d306 bcc.n 803e3c4 + 803e3e8: 8b3a ldrh r2, [r7, #24] + 803e3ea: 88bb ldrh r3, [r7, #4] + 803e3ec: 3303 adds r3, #3 + 803e3ee: f023 0303 bic.w r3, r3, #3 + 803e3f2: 429a cmp r2, r3 + 803e3f4: d306 bcc.n 803e404 (alloc_len < LWIP_MEM_ALIGN_SIZE(length))) { - 803e3b6: 8afa ldrh r2, [r7, #22] - 803e3b8: 88bb ldrh r3, [r7, #4] - 803e3ba: 3303 adds r3, #3 - 803e3bc: f023 0303 bic.w r3, r3, #3 + 803e3f6: 8afa ldrh r2, [r7, #22] + 803e3f8: 88bb ldrh r3, [r7, #4] + 803e3fa: 3303 adds r3, #3 + 803e3fc: f023 0303 bic.w r3, r3, #3 if ((payload_len < LWIP_MEM_ALIGN_SIZE(length)) || - 803e3c0: 429a cmp r2, r3 - 803e3c2: d201 bcs.n 803e3c8 + 803e400: 429a cmp r2, r3 + 803e402: d201 bcs.n 803e408 return NULL; - 803e3c4: 2300 movs r3, #0 - 803e3c6: e035 b.n 803e434 + 803e404: 2300 movs r3, #0 + 803e406: e035 b.n 803e474 } /* If pbuf is to be allocated in RAM, allocate memory for it. */ p = (struct pbuf *)mem_malloc(alloc_len); - 803e3c8: 8afb ldrh r3, [r7, #22] - 803e3ca: 4618 mov r0, r3 - 803e3cc: f7ff f99e bl 803d70c - 803e3d0: 6278 str r0, [r7, #36] ; 0x24 + 803e408: 8afb ldrh r3, [r7, #22] + 803e40a: 4618 mov r0, r3 + 803e40c: f7ff f99e bl 803d74c + 803e410: 6278 str r0, [r7, #36] ; 0x24 if (p == NULL) { - 803e3d2: 6a7b ldr r3, [r7, #36] ; 0x24 - 803e3d4: 2b00 cmp r3, #0 - 803e3d6: d101 bne.n 803e3dc + 803e412: 6a7b ldr r3, [r7, #36] ; 0x24 + 803e414: 2b00 cmp r3, #0 + 803e416: d101 bne.n 803e41c return NULL; - 803e3d8: 2300 movs r3, #0 - 803e3da: e02b b.n 803e434 + 803e418: 2300 movs r3, #0 + 803e41a: e02b b.n 803e474 } pbuf_init_alloced_pbuf(p, LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)), - 803e3dc: 8c7b ldrh r3, [r7, #34] ; 0x22 - 803e3de: 3310 adds r3, #16 - 803e3e0: 6a7a ldr r2, [r7, #36] ; 0x24 - 803e3e2: 4413 add r3, r2 - 803e3e4: 3303 adds r3, #3 - 803e3e6: f023 0303 bic.w r3, r3, #3 - 803e3ea: 4618 mov r0, r3 - 803e3ec: 88b9 ldrh r1, [r7, #4] - 803e3ee: 88ba ldrh r2, [r7, #4] - 803e3f0: 2300 movs r3, #0 - 803e3f2: 9301 str r3, [sp, #4] - 803e3f4: 887b ldrh r3, [r7, #2] - 803e3f6: 9300 str r3, [sp, #0] - 803e3f8: 460b mov r3, r1 - 803e3fa: 4601 mov r1, r0 - 803e3fc: 6a78 ldr r0, [r7, #36] ; 0x24 - 803e3fe: f7ff ff09 bl 803e214 + 803e41c: 8c7b ldrh r3, [r7, #34] ; 0x22 + 803e41e: 3310 adds r3, #16 + 803e420: 6a7a ldr r2, [r7, #36] ; 0x24 + 803e422: 4413 add r3, r2 + 803e424: 3303 adds r3, #3 + 803e426: f023 0303 bic.w r3, r3, #3 + 803e42a: 4618 mov r0, r3 + 803e42c: 88b9 ldrh r1, [r7, #4] + 803e42e: 88ba ldrh r2, [r7, #4] + 803e430: 2300 movs r3, #0 + 803e432: 9301 str r3, [sp, #4] + 803e434: 887b ldrh r3, [r7, #2] + 803e436: 9300 str r3, [sp, #0] + 803e438: 460b mov r3, r1 + 803e43a: 4601 mov r1, r0 + 803e43c: 6a78 ldr r0, [r7, #36] ; 0x24 + 803e43e: f7ff ff09 bl 803e254 length, length, type, 0); LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned", - 803e402: 6a7b ldr r3, [r7, #36] ; 0x24 - 803e404: 685b ldr r3, [r3, #4] - 803e406: f003 0303 and.w r3, r3, #3 - 803e40a: 2b00 cmp r3, #0 - 803e40c: d010 beq.n 803e430 - 803e40e: 4b0b ldr r3, [pc, #44] ; (803e43c ) - 803e410: f44f 7291 mov.w r2, #290 ; 0x122 - 803e414: 490d ldr r1, [pc, #52] ; (803e44c ) - 803e416: 480b ldr r0, [pc, #44] ; (803e444 ) - 803e418: f009 fdc4 bl 8047fa4 + 803e442: 6a7b ldr r3, [r7, #36] ; 0x24 + 803e444: 685b ldr r3, [r3, #4] + 803e446: f003 0303 and.w r3, r3, #3 + 803e44a: 2b00 cmp r3, #0 + 803e44c: d010 beq.n 803e470 + 803e44e: 4b0b ldr r3, [pc, #44] ; (803e47c ) + 803e450: f44f 7291 mov.w r2, #290 ; 0x122 + 803e454: 490d ldr r1, [pc, #52] ; (803e48c ) + 803e456: 480b ldr r0, [pc, #44] ; (803e484 ) + 803e458: f009 fdc4 bl 8047fe4 ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); break; - 803e41c: e008 b.n 803e430 + 803e45c: e008 b.n 803e470 } default: LWIP_ASSERT("pbuf_alloc: erroneous type", 0); - 803e41e: 4b07 ldr r3, [pc, #28] ; (803e43c ) - 803e420: f240 1227 movw r2, #295 ; 0x127 - 803e424: 490a ldr r1, [pc, #40] ; (803e450 ) - 803e426: 4807 ldr r0, [pc, #28] ; (803e444 ) - 803e428: f009 fdbc bl 8047fa4 + 803e45e: 4b07 ldr r3, [pc, #28] ; (803e47c ) + 803e460: f240 1227 movw r2, #295 ; 0x127 + 803e464: 490a ldr r1, [pc, #40] ; (803e490 ) + 803e466: 4807 ldr r0, [pc, #28] ; (803e484 ) + 803e468: f009 fdbc bl 8047fe4 return NULL; - 803e42c: 2300 movs r3, #0 - 803e42e: e001 b.n 803e434 + 803e46c: 2300 movs r3, #0 + 803e46e: e001 b.n 803e474 break; - 803e430: bf00 nop + 803e470: bf00 nop } LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p)); return p; - 803e432: 6a7b ldr r3, [r7, #36] ; 0x24 -} - 803e434: 4618 mov r0, r3 - 803e436: 3728 adds r7, #40 ; 0x28 - 803e438: 46bd mov sp, r7 - 803e43a: bd80 pop {r7, pc} - 803e43c: 0804a730 .word 0x0804a730 - 803e440: 0804a760 .word 0x0804a760 - 803e444: 0804a790 .word 0x0804a790 - 803e448: 0804a7b8 .word 0x0804a7b8 - 803e44c: 0804a7ec .word 0x0804a7ec - 803e450: 0804a818 .word 0x0804a818 - -0803e454 : + 803e472: 6a7b ldr r3, [r7, #36] ; 0x24 +} + 803e474: 4618 mov r0, r3 + 803e476: 3728 adds r7, #40 ; 0x28 + 803e478: 46bd mov sp, r7 + 803e47a: bd80 pop {r7, pc} + 803e47c: 0804a770 .word 0x0804a770 + 803e480: 0804a7a0 .word 0x0804a7a0 + 803e484: 0804a7d0 .word 0x0804a7d0 + 803e488: 0804a7f8 .word 0x0804a7f8 + 803e48c: 0804a82c .word 0x0804a82c + 803e490: 0804a858 .word 0x0804a858 + +0803e494 : * * @return the allocated pbuf. */ struct pbuf * pbuf_alloc_reference(void *payload, u16_t length, pbuf_type type) { - 803e454: b580 push {r7, lr} - 803e456: b086 sub sp, #24 - 803e458: af02 add r7, sp, #8 - 803e45a: 6078 str r0, [r7, #4] - 803e45c: 460b mov r3, r1 - 803e45e: 807b strh r3, [r7, #2] - 803e460: 4613 mov r3, r2 - 803e462: 803b strh r3, [r7, #0] + 803e494: b580 push {r7, lr} + 803e496: b086 sub sp, #24 + 803e498: af02 add r7, sp, #8 + 803e49a: 6078 str r0, [r7, #4] + 803e49c: 460b mov r3, r1 + 803e49e: 807b strh r3, [r7, #2] + 803e4a0: 4613 mov r3, r2 + 803e4a2: 803b strh r3, [r7, #0] struct pbuf *p; LWIP_ASSERT("invalid pbuf_type", (type == PBUF_REF) || (type == PBUF_ROM)); - 803e464: 883b ldrh r3, [r7, #0] - 803e466: 2b41 cmp r3, #65 ; 0x41 - 803e468: d009 beq.n 803e47e - 803e46a: 883b ldrh r3, [r7, #0] - 803e46c: 2b01 cmp r3, #1 - 803e46e: d006 beq.n 803e47e - 803e470: 4b0f ldr r3, [pc, #60] ; (803e4b0 ) - 803e472: f44f 72a5 mov.w r2, #330 ; 0x14a - 803e476: 490f ldr r1, [pc, #60] ; (803e4b4 ) - 803e478: 480f ldr r0, [pc, #60] ; (803e4b8 ) - 803e47a: f009 fd93 bl 8047fa4 + 803e4a4: 883b ldrh r3, [r7, #0] + 803e4a6: 2b41 cmp r3, #65 ; 0x41 + 803e4a8: d009 beq.n 803e4be + 803e4aa: 883b ldrh r3, [r7, #0] + 803e4ac: 2b01 cmp r3, #1 + 803e4ae: d006 beq.n 803e4be + 803e4b0: 4b0f ldr r3, [pc, #60] ; (803e4f0 ) + 803e4b2: f44f 72a5 mov.w r2, #330 ; 0x14a + 803e4b6: 490f ldr r1, [pc, #60] ; (803e4f4 ) + 803e4b8: 480f ldr r0, [pc, #60] ; (803e4f8 ) + 803e4ba: f009 fd93 bl 8047fe4 /* only allocate memory for the pbuf structure */ p = (struct pbuf *)memp_malloc(MEMP_PBUF); - 803e47e: 2007 movs r0, #7 - 803e480: f7ff fad4 bl 803da2c - 803e484: 60f8 str r0, [r7, #12] + 803e4be: 2007 movs r0, #7 + 803e4c0: f7ff fad4 bl 803da6c + 803e4c4: 60f8 str r0, [r7, #12] if (p == NULL) { - 803e486: 68fb ldr r3, [r7, #12] - 803e488: 2b00 cmp r3, #0 - 803e48a: d101 bne.n 803e490 + 803e4c6: 68fb ldr r3, [r7, #12] + 803e4c8: 2b00 cmp r3, #0 + 803e4ca: d101 bne.n 803e4d0 LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("pbuf_alloc_reference: Could not allocate MEMP_PBUF for PBUF_%s.\n", (type == PBUF_ROM) ? "ROM" : "REF")); return NULL; - 803e48c: 2300 movs r3, #0 - 803e48e: e00b b.n 803e4a8 + 803e4cc: 2300 movs r3, #0 + 803e4ce: e00b b.n 803e4e8 } pbuf_init_alloced_pbuf(p, payload, length, length, type, 0); - 803e490: 8879 ldrh r1, [r7, #2] - 803e492: 887a ldrh r2, [r7, #2] - 803e494: 2300 movs r3, #0 - 803e496: 9301 str r3, [sp, #4] - 803e498: 883b ldrh r3, [r7, #0] - 803e49a: 9300 str r3, [sp, #0] - 803e49c: 460b mov r3, r1 - 803e49e: 6879 ldr r1, [r7, #4] - 803e4a0: 68f8 ldr r0, [r7, #12] - 803e4a2: f7ff feb7 bl 803e214 + 803e4d0: 8879 ldrh r1, [r7, #2] + 803e4d2: 887a ldrh r2, [r7, #2] + 803e4d4: 2300 movs r3, #0 + 803e4d6: 9301 str r3, [sp, #4] + 803e4d8: 883b ldrh r3, [r7, #0] + 803e4da: 9300 str r3, [sp, #0] + 803e4dc: 460b mov r3, r1 + 803e4de: 6879 ldr r1, [r7, #4] + 803e4e0: 68f8 ldr r0, [r7, #12] + 803e4e2: f7ff feb7 bl 803e254 return p; - 803e4a6: 68fb ldr r3, [r7, #12] + 803e4e6: 68fb ldr r3, [r7, #12] } - 803e4a8: 4618 mov r0, r3 - 803e4aa: 3710 adds r7, #16 - 803e4ac: 46bd mov sp, r7 - 803e4ae: bd80 pop {r7, pc} - 803e4b0: 0804a730 .word 0x0804a730 - 803e4b4: 0804a834 .word 0x0804a834 - 803e4b8: 0804a790 .word 0x0804a790 + 803e4e8: 4618 mov r0, r3 + 803e4ea: 3710 adds r7, #16 + 803e4ec: 46bd mov sp, r7 + 803e4ee: bd80 pop {r7, pc} + 803e4f0: 0804a770 .word 0x0804a770 + 803e4f4: 0804a874 .word 0x0804a874 + 803e4f8: 0804a7d0 .word 0x0804a7d0 -0803e4bc : +0803e4fc : * big enough to hold 'length' plus the header size */ struct pbuf * pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type, struct pbuf_custom *p, void *payload_mem, u16_t payload_mem_len) { - 803e4bc: b580 push {r7, lr} - 803e4be: b088 sub sp, #32 - 803e4c0: af02 add r7, sp, #8 - 803e4c2: 607b str r3, [r7, #4] - 803e4c4: 4603 mov r3, r0 - 803e4c6: 73fb strb r3, [r7, #15] - 803e4c8: 460b mov r3, r1 - 803e4ca: 81bb strh r3, [r7, #12] - 803e4cc: 4613 mov r3, r2 - 803e4ce: 817b strh r3, [r7, #10] + 803e4fc: b580 push {r7, lr} + 803e4fe: b088 sub sp, #32 + 803e500: af02 add r7, sp, #8 + 803e502: 607b str r3, [r7, #4] + 803e504: 4603 mov r3, r0 + 803e506: 73fb strb r3, [r7, #15] + 803e508: 460b mov r3, r1 + 803e50a: 81bb strh r3, [r7, #12] + 803e50c: 4613 mov r3, r2 + 803e50e: 817b strh r3, [r7, #10] u16_t offset = (u16_t)l; - 803e4d0: 7bfb ldrb r3, [r7, #15] - 803e4d2: 827b strh r3, [r7, #18] + 803e510: 7bfb ldrb r3, [r7, #15] + 803e512: 827b strh r3, [r7, #18] void *payload; LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloced_custom(length=%"U16_F")\n", length)); if (LWIP_MEM_ALIGN_SIZE(offset) + length > payload_mem_len) { - 803e4d4: 8a7b ldrh r3, [r7, #18] - 803e4d6: 3303 adds r3, #3 - 803e4d8: f023 0203 bic.w r2, r3, #3 - 803e4dc: 89bb ldrh r3, [r7, #12] - 803e4de: 441a add r2, r3 - 803e4e0: 8cbb ldrh r3, [r7, #36] ; 0x24 - 803e4e2: 429a cmp r2, r3 - 803e4e4: d901 bls.n 803e4ea + 803e514: 8a7b ldrh r3, [r7, #18] + 803e516: 3303 adds r3, #3 + 803e518: f023 0203 bic.w r2, r3, #3 + 803e51c: 89bb ldrh r3, [r7, #12] + 803e51e: 441a add r2, r3 + 803e520: 8cbb ldrh r3, [r7, #36] ; 0x24 + 803e522: 429a cmp r2, r3 + 803e524: d901 bls.n 803e52a LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_WARNING, ("pbuf_alloced_custom(length=%"U16_F") buffer too short\n", length)); return NULL; - 803e4e6: 2300 movs r3, #0 - 803e4e8: e018 b.n 803e51c + 803e526: 2300 movs r3, #0 + 803e528: e018 b.n 803e55c } if (payload_mem != NULL) { - 803e4ea: 6a3b ldr r3, [r7, #32] - 803e4ec: 2b00 cmp r3, #0 - 803e4ee: d007 beq.n 803e500 + 803e52a: 6a3b ldr r3, [r7, #32] + 803e52c: 2b00 cmp r3, #0 + 803e52e: d007 beq.n 803e540 payload = (u8_t *)payload_mem + LWIP_MEM_ALIGN_SIZE(offset); - 803e4f0: 8a7b ldrh r3, [r7, #18] - 803e4f2: 3303 adds r3, #3 - 803e4f4: f023 0303 bic.w r3, r3, #3 - 803e4f8: 6a3a ldr r2, [r7, #32] - 803e4fa: 4413 add r3, r2 - 803e4fc: 617b str r3, [r7, #20] - 803e4fe: e001 b.n 803e504 + 803e530: 8a7b ldrh r3, [r7, #18] + 803e532: 3303 adds r3, #3 + 803e534: f023 0303 bic.w r3, r3, #3 + 803e538: 6a3a ldr r2, [r7, #32] + 803e53a: 4413 add r3, r2 + 803e53c: 617b str r3, [r7, #20] + 803e53e: e001 b.n 803e544 } else { payload = NULL; - 803e500: 2300 movs r3, #0 - 803e502: 617b str r3, [r7, #20] + 803e540: 2300 movs r3, #0 + 803e542: 617b str r3, [r7, #20] } pbuf_init_alloced_pbuf(&p->pbuf, payload, length, length, type, PBUF_FLAG_IS_CUSTOM); - 803e504: 6878 ldr r0, [r7, #4] - 803e506: 89b9 ldrh r1, [r7, #12] - 803e508: 89ba ldrh r2, [r7, #12] - 803e50a: 2302 movs r3, #2 - 803e50c: 9301 str r3, [sp, #4] - 803e50e: 897b ldrh r3, [r7, #10] - 803e510: 9300 str r3, [sp, #0] - 803e512: 460b mov r3, r1 - 803e514: 6979 ldr r1, [r7, #20] - 803e516: f7ff fe7d bl 803e214 + 803e544: 6878 ldr r0, [r7, #4] + 803e546: 89b9 ldrh r1, [r7, #12] + 803e548: 89ba ldrh r2, [r7, #12] + 803e54a: 2302 movs r3, #2 + 803e54c: 9301 str r3, [sp, #4] + 803e54e: 897b ldrh r3, [r7, #10] + 803e550: 9300 str r3, [sp, #0] + 803e552: 460b mov r3, r1 + 803e554: 6979 ldr r1, [r7, #20] + 803e556: f7ff fe7d bl 803e254 return &p->pbuf; - 803e51a: 687b ldr r3, [r7, #4] + 803e55a: 687b ldr r3, [r7, #4] } - 803e51c: 4618 mov r0, r3 - 803e51e: 3718 adds r7, #24 - 803e520: 46bd mov sp, r7 - 803e522: bd80 pop {r7, pc} + 803e55c: 4618 mov r0, r3 + 803e55e: 3718 adds r7, #24 + 803e560: 46bd mov sp, r7 + 803e562: bd80 pop {r7, pc} -0803e524 : +0803e564 : * * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). */ void pbuf_realloc(struct pbuf *p, u16_t new_len) { - 803e524: b580 push {r7, lr} - 803e526: b084 sub sp, #16 - 803e528: af00 add r7, sp, #0 - 803e52a: 6078 str r0, [r7, #4] - 803e52c: 460b mov r3, r1 - 803e52e: 807b strh r3, [r7, #2] + 803e564: b580 push {r7, lr} + 803e566: b084 sub sp, #16 + 803e568: af00 add r7, sp, #0 + 803e56a: 6078 str r0, [r7, #4] + 803e56c: 460b mov r3, r1 + 803e56e: 807b strh r3, [r7, #2] struct pbuf *q; u16_t rem_len; /* remaining length */ u16_t shrink; LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL); - 803e530: 687b ldr r3, [r7, #4] - 803e532: 2b00 cmp r3, #0 - 803e534: d106 bne.n 803e544 - 803e536: 4b3a ldr r3, [pc, #232] ; (803e620 ) - 803e538: f44f 72cc mov.w r2, #408 ; 0x198 - 803e53c: 4939 ldr r1, [pc, #228] ; (803e624 ) - 803e53e: 483a ldr r0, [pc, #232] ; (803e628 ) - 803e540: f009 fd30 bl 8047fa4 + 803e570: 687b ldr r3, [r7, #4] + 803e572: 2b00 cmp r3, #0 + 803e574: d106 bne.n 803e584 + 803e576: 4b3a ldr r3, [pc, #232] ; (803e660 ) + 803e578: f44f 72cc mov.w r2, #408 ; 0x198 + 803e57c: 4939 ldr r1, [pc, #228] ; (803e664 ) + 803e57e: 483a ldr r0, [pc, #232] ; (803e668 ) + 803e580: f009 fd30 bl 8047fe4 /* desired length larger than current length? */ if (new_len >= p->tot_len) { - 803e544: 687b ldr r3, [r7, #4] - 803e546: 891b ldrh r3, [r3, #8] - 803e548: 887a ldrh r2, [r7, #2] - 803e54a: 429a cmp r2, r3 - 803e54c: d263 bcs.n 803e616 + 803e584: 687b ldr r3, [r7, #4] + 803e586: 891b ldrh r3, [r3, #8] + 803e588: 887a ldrh r2, [r7, #2] + 803e58a: 429a cmp r2, r3 + 803e58c: d263 bcs.n 803e656 return; } /* the pbuf chain grows by (new_len - p->tot_len) bytes * (which may be negative in case of shrinking) */ shrink = (u16_t)(p->tot_len - new_len); - 803e54e: 687b ldr r3, [r7, #4] - 803e550: 891a ldrh r2, [r3, #8] - 803e552: 887b ldrh r3, [r7, #2] - 803e554: 1ad3 subs r3, r2, r3 - 803e556: 813b strh r3, [r7, #8] + 803e58e: 687b ldr r3, [r7, #4] + 803e590: 891a ldrh r2, [r3, #8] + 803e592: 887b ldrh r3, [r7, #2] + 803e594: 1ad3 subs r3, r2, r3 + 803e596: 813b strh r3, [r7, #8] /* first, step over any pbufs that should remain in the chain */ rem_len = new_len; - 803e558: 887b ldrh r3, [r7, #2] - 803e55a: 817b strh r3, [r7, #10] + 803e598: 887b ldrh r3, [r7, #2] + 803e59a: 817b strh r3, [r7, #10] q = p; - 803e55c: 687b ldr r3, [r7, #4] - 803e55e: 60fb str r3, [r7, #12] + 803e59c: 687b ldr r3, [r7, #4] + 803e59e: 60fb str r3, [r7, #12] /* should this pbuf be kept? */ while (rem_len > q->len) { - 803e560: e018 b.n 803e594 + 803e5a0: e018 b.n 803e5d4 /* decrease remaining length by pbuf length */ rem_len = (u16_t)(rem_len - q->len); - 803e562: 68fb ldr r3, [r7, #12] - 803e564: 895b ldrh r3, [r3, #10] - 803e566: 897a ldrh r2, [r7, #10] - 803e568: 1ad3 subs r3, r2, r3 - 803e56a: 817b strh r3, [r7, #10] + 803e5a2: 68fb ldr r3, [r7, #12] + 803e5a4: 895b ldrh r3, [r3, #10] + 803e5a6: 897a ldrh r2, [r7, #10] + 803e5a8: 1ad3 subs r3, r2, r3 + 803e5aa: 817b strh r3, [r7, #10] /* decrease total length indicator */ q->tot_len = (u16_t)(q->tot_len - shrink); - 803e56c: 68fb ldr r3, [r7, #12] - 803e56e: 891a ldrh r2, [r3, #8] - 803e570: 893b ldrh r3, [r7, #8] - 803e572: 1ad3 subs r3, r2, r3 - 803e574: b29a uxth r2, r3 - 803e576: 68fb ldr r3, [r7, #12] - 803e578: 811a strh r2, [r3, #8] + 803e5ac: 68fb ldr r3, [r7, #12] + 803e5ae: 891a ldrh r2, [r3, #8] + 803e5b0: 893b ldrh r3, [r7, #8] + 803e5b2: 1ad3 subs r3, r2, r3 + 803e5b4: b29a uxth r2, r3 + 803e5b6: 68fb ldr r3, [r7, #12] + 803e5b8: 811a strh r2, [r3, #8] /* proceed to next pbuf in chain */ q = q->next; - 803e57a: 68fb ldr r3, [r7, #12] - 803e57c: 681b ldr r3, [r3, #0] - 803e57e: 60fb str r3, [r7, #12] + 803e5ba: 68fb ldr r3, [r7, #12] + 803e5bc: 681b ldr r3, [r3, #0] + 803e5be: 60fb str r3, [r7, #12] LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL); - 803e580: 68fb ldr r3, [r7, #12] - 803e582: 2b00 cmp r3, #0 - 803e584: d106 bne.n 803e594 - 803e586: 4b26 ldr r3, [pc, #152] ; (803e620 ) - 803e588: f240 12af movw r2, #431 ; 0x1af - 803e58c: 4927 ldr r1, [pc, #156] ; (803e62c ) - 803e58e: 4826 ldr r0, [pc, #152] ; (803e628 ) - 803e590: f009 fd08 bl 8047fa4 + 803e5c0: 68fb ldr r3, [r7, #12] + 803e5c2: 2b00 cmp r3, #0 + 803e5c4: d106 bne.n 803e5d4 + 803e5c6: 4b26 ldr r3, [pc, #152] ; (803e660 ) + 803e5c8: f240 12af movw r2, #431 ; 0x1af + 803e5cc: 4927 ldr r1, [pc, #156] ; (803e66c ) + 803e5ce: 4826 ldr r0, [pc, #152] ; (803e668 ) + 803e5d0: f009 fd08 bl 8047fe4 while (rem_len > q->len) { - 803e594: 68fb ldr r3, [r7, #12] - 803e596: 895b ldrh r3, [r3, #10] - 803e598: 897a ldrh r2, [r7, #10] - 803e59a: 429a cmp r2, r3 - 803e59c: d8e1 bhi.n 803e562 + 803e5d4: 68fb ldr r3, [r7, #12] + 803e5d6: 895b ldrh r3, [r3, #10] + 803e5d8: 897a ldrh r2, [r7, #10] + 803e5da: 429a cmp r2, r3 + 803e5dc: d8e1 bhi.n 803e5a2 /* we have now reached the new last pbuf (in q) */ /* rem_len == desired length for pbuf q */ /* shrink allocated memory for PBUF_RAM */ /* (other types merely adjust their length fields */ if (pbuf_match_allocsrc(q, PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) && (rem_len != q->len) - 803e59e: 68fb ldr r3, [r7, #12] - 803e5a0: 7b1b ldrb r3, [r3, #12] - 803e5a2: f003 030f and.w r3, r3, #15 - 803e5a6: 2b00 cmp r3, #0 - 803e5a8: d121 bne.n 803e5ee - 803e5aa: 68fb ldr r3, [r7, #12] - 803e5ac: 895b ldrh r3, [r3, #10] - 803e5ae: 897a ldrh r2, [r7, #10] - 803e5b0: 429a cmp r2, r3 - 803e5b2: d01c beq.n 803e5ee + 803e5de: 68fb ldr r3, [r7, #12] + 803e5e0: 7b1b ldrb r3, [r3, #12] + 803e5e2: f003 030f and.w r3, r3, #15 + 803e5e6: 2b00 cmp r3, #0 + 803e5e8: d121 bne.n 803e62e + 803e5ea: 68fb ldr r3, [r7, #12] + 803e5ec: 895b ldrh r3, [r3, #10] + 803e5ee: 897a ldrh r2, [r7, #10] + 803e5f0: 429a cmp r2, r3 + 803e5f2: d01c beq.n 803e62e #if LWIP_SUPPORT_CUSTOM_PBUF && ((q->flags & PBUF_FLAG_IS_CUSTOM) == 0) - 803e5b4: 68fb ldr r3, [r7, #12] - 803e5b6: 7b5b ldrb r3, [r3, #13] - 803e5b8: f003 0302 and.w r3, r3, #2 - 803e5bc: 2b00 cmp r3, #0 - 803e5be: d116 bne.n 803e5ee + 803e5f4: 68fb ldr r3, [r7, #12] + 803e5f6: 7b5b ldrb r3, [r3, #13] + 803e5f8: f003 0302 and.w r3, r3, #2 + 803e5fc: 2b00 cmp r3, #0 + 803e5fe: d116 bne.n 803e62e #endif /* LWIP_SUPPORT_CUSTOM_PBUF */ ) { /* reallocate and adjust the length of the pbuf that will be split */ q = (struct pbuf *)mem_trim(q, (mem_size_t)(((u8_t *)q->payload - (u8_t *)q) + rem_len)); - 803e5c0: 68fb ldr r3, [r7, #12] - 803e5c2: 685a ldr r2, [r3, #4] - 803e5c4: 68fb ldr r3, [r7, #12] - 803e5c6: 1ad3 subs r3, r2, r3 - 803e5c8: b29a uxth r2, r3 - 803e5ca: 897b ldrh r3, [r7, #10] - 803e5cc: 4413 add r3, r2 - 803e5ce: b29b uxth r3, r3 - 803e5d0: 4619 mov r1, r3 - 803e5d2: 68f8 ldr r0, [r7, #12] - 803e5d4: f7fe ff9e bl 803d514 - 803e5d8: 60f8 str r0, [r7, #12] + 803e600: 68fb ldr r3, [r7, #12] + 803e602: 685a ldr r2, [r3, #4] + 803e604: 68fb ldr r3, [r7, #12] + 803e606: 1ad3 subs r3, r2, r3 + 803e608: b29a uxth r2, r3 + 803e60a: 897b ldrh r3, [r7, #10] + 803e60c: 4413 add r3, r2 + 803e60e: b29b uxth r3, r3 + 803e610: 4619 mov r1, r3 + 803e612: 68f8 ldr r0, [r7, #12] + 803e614: f7fe ff9e bl 803d554 + 803e618: 60f8 str r0, [r7, #12] LWIP_ASSERT("mem_trim returned q == NULL", q != NULL); - 803e5da: 68fb ldr r3, [r7, #12] - 803e5dc: 2b00 cmp r3, #0 - 803e5de: d106 bne.n 803e5ee - 803e5e0: 4b0f ldr r3, [pc, #60] ; (803e620 ) - 803e5e2: f240 12bd movw r2, #445 ; 0x1bd - 803e5e6: 4912 ldr r1, [pc, #72] ; (803e630 ) - 803e5e8: 480f ldr r0, [pc, #60] ; (803e628 ) - 803e5ea: f009 fcdb bl 8047fa4 + 803e61a: 68fb ldr r3, [r7, #12] + 803e61c: 2b00 cmp r3, #0 + 803e61e: d106 bne.n 803e62e + 803e620: 4b0f ldr r3, [pc, #60] ; (803e660 ) + 803e622: f240 12bd movw r2, #445 ; 0x1bd + 803e626: 4912 ldr r1, [pc, #72] ; (803e670 ) + 803e628: 480f ldr r0, [pc, #60] ; (803e668 ) + 803e62a: f009 fcdb bl 8047fe4 } /* adjust length fields for new last pbuf */ q->len = rem_len; - 803e5ee: 68fb ldr r3, [r7, #12] - 803e5f0: 897a ldrh r2, [r7, #10] - 803e5f2: 815a strh r2, [r3, #10] + 803e62e: 68fb ldr r3, [r7, #12] + 803e630: 897a ldrh r2, [r7, #10] + 803e632: 815a strh r2, [r3, #10] q->tot_len = q->len; - 803e5f4: 68fb ldr r3, [r7, #12] - 803e5f6: 895a ldrh r2, [r3, #10] - 803e5f8: 68fb ldr r3, [r7, #12] - 803e5fa: 811a strh r2, [r3, #8] + 803e634: 68fb ldr r3, [r7, #12] + 803e636: 895a ldrh r2, [r3, #10] + 803e638: 68fb ldr r3, [r7, #12] + 803e63a: 811a strh r2, [r3, #8] /* any remaining pbufs in chain? */ if (q->next != NULL) { - 803e5fc: 68fb ldr r3, [r7, #12] - 803e5fe: 681b ldr r3, [r3, #0] - 803e600: 2b00 cmp r3, #0 - 803e602: d004 beq.n 803e60e + 803e63c: 68fb ldr r3, [r7, #12] + 803e63e: 681b ldr r3, [r3, #0] + 803e640: 2b00 cmp r3, #0 + 803e642: d004 beq.n 803e64e /* free remaining pbufs in chain */ pbuf_free(q->next); - 803e604: 68fb ldr r3, [r7, #12] - 803e606: 681b ldr r3, [r3, #0] - 803e608: 4618 mov r0, r3 - 803e60a: f000 f911 bl 803e830 + 803e644: 68fb ldr r3, [r7, #12] + 803e646: 681b ldr r3, [r3, #0] + 803e648: 4618 mov r0, r3 + 803e64a: f000 f911 bl 803e870 } /* q is last packet in chain */ q->next = NULL; - 803e60e: 68fb ldr r3, [r7, #12] - 803e610: 2200 movs r2, #0 - 803e612: 601a str r2, [r3, #0] - 803e614: e000 b.n 803e618 + 803e64e: 68fb ldr r3, [r7, #12] + 803e650: 2200 movs r2, #0 + 803e652: 601a str r2, [r3, #0] + 803e654: e000 b.n 803e658 return; - 803e616: bf00 nop + 803e656: bf00 nop } - 803e618: 3710 adds r7, #16 - 803e61a: 46bd mov sp, r7 - 803e61c: bd80 pop {r7, pc} - 803e61e: bf00 nop - 803e620: 0804a730 .word 0x0804a730 - 803e624: 0804a848 .word 0x0804a848 - 803e628: 0804a790 .word 0x0804a790 - 803e62c: 0804a860 .word 0x0804a860 - 803e630: 0804a878 .word 0x0804a878 + 803e658: 3710 adds r7, #16 + 803e65a: 46bd mov sp, r7 + 803e65c: bd80 pop {r7, pc} + 803e65e: bf00 nop + 803e660: 0804a770 .word 0x0804a770 + 803e664: 0804a888 .word 0x0804a888 + 803e668: 0804a7d0 .word 0x0804a7d0 + 803e66c: 0804a8a0 .word 0x0804a8a0 + 803e670: 0804a8b8 .word 0x0804a8b8 -0803e634 : +0803e674 : * @return non-zero on failure, zero on success. * */ static u8_t pbuf_add_header_impl(struct pbuf *p, size_t header_size_increment, u8_t force) { - 803e634: b580 push {r7, lr} - 803e636: b086 sub sp, #24 - 803e638: af00 add r7, sp, #0 - 803e63a: 60f8 str r0, [r7, #12] - 803e63c: 60b9 str r1, [r7, #8] - 803e63e: 4613 mov r3, r2 - 803e640: 71fb strb r3, [r7, #7] + 803e674: b580 push {r7, lr} + 803e676: b086 sub sp, #24 + 803e678: af00 add r7, sp, #0 + 803e67a: 60f8 str r0, [r7, #12] + 803e67c: 60b9 str r1, [r7, #8] + 803e67e: 4613 mov r3, r2 + 803e680: 71fb strb r3, [r7, #7] u16_t type_internal; void *payload; u16_t increment_magnitude; LWIP_ASSERT("p != NULL", p != NULL); - 803e642: 68fb ldr r3, [r7, #12] - 803e644: 2b00 cmp r3, #0 - 803e646: d106 bne.n 803e656 - 803e648: 4b2b ldr r3, [pc, #172] ; (803e6f8 ) - 803e64a: f240 12df movw r2, #479 ; 0x1df - 803e64e: 492b ldr r1, [pc, #172] ; (803e6fc ) - 803e650: 482b ldr r0, [pc, #172] ; (803e700 ) - 803e652: f009 fca7 bl 8047fa4 + 803e682: 68fb ldr r3, [r7, #12] + 803e684: 2b00 cmp r3, #0 + 803e686: d106 bne.n 803e696 + 803e688: 4b2b ldr r3, [pc, #172] ; (803e738 ) + 803e68a: f240 12df movw r2, #479 ; 0x1df + 803e68e: 492b ldr r1, [pc, #172] ; (803e73c ) + 803e690: 482b ldr r0, [pc, #172] ; (803e740 ) + 803e692: f009 fca7 bl 8047fe4 if ((p == NULL) || (header_size_increment > 0xFFFF)) { - 803e656: 68fb ldr r3, [r7, #12] - 803e658: 2b00 cmp r3, #0 - 803e65a: d003 beq.n 803e664 - 803e65c: 68bb ldr r3, [r7, #8] - 803e65e: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803e662: d301 bcc.n 803e668 + 803e696: 68fb ldr r3, [r7, #12] + 803e698: 2b00 cmp r3, #0 + 803e69a: d003 beq.n 803e6a4 + 803e69c: 68bb ldr r3, [r7, #8] + 803e69e: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803e6a2: d301 bcc.n 803e6a8 return 1; - 803e664: 2301 movs r3, #1 - 803e666: e043 b.n 803e6f0 + 803e6a4: 2301 movs r3, #1 + 803e6a6: e043 b.n 803e730 } if (header_size_increment == 0) { - 803e668: 68bb ldr r3, [r7, #8] - 803e66a: 2b00 cmp r3, #0 - 803e66c: d101 bne.n 803e672 + 803e6a8: 68bb ldr r3, [r7, #8] + 803e6aa: 2b00 cmp r3, #0 + 803e6ac: d101 bne.n 803e6b2 return 0; - 803e66e: 2300 movs r3, #0 - 803e670: e03e b.n 803e6f0 + 803e6ae: 2300 movs r3, #0 + 803e6b0: e03e b.n 803e730 } increment_magnitude = (u16_t)header_size_increment; - 803e672: 68bb ldr r3, [r7, #8] - 803e674: 827b strh r3, [r7, #18] + 803e6b2: 68bb ldr r3, [r7, #8] + 803e6b4: 827b strh r3, [r7, #18] /* Do not allow tot_len to wrap as a result. */ if ((u16_t)(increment_magnitude + p->tot_len) < increment_magnitude) { - 803e676: 68fb ldr r3, [r7, #12] - 803e678: 891a ldrh r2, [r3, #8] - 803e67a: 8a7b ldrh r3, [r7, #18] - 803e67c: 4413 add r3, r2 - 803e67e: b29b uxth r3, r3 - 803e680: 8a7a ldrh r2, [r7, #18] - 803e682: 429a cmp r2, r3 - 803e684: d901 bls.n 803e68a + 803e6b6: 68fb ldr r3, [r7, #12] + 803e6b8: 891a ldrh r2, [r3, #8] + 803e6ba: 8a7b ldrh r3, [r7, #18] + 803e6bc: 4413 add r3, r2 + 803e6be: b29b uxth r3, r3 + 803e6c0: 8a7a ldrh r2, [r7, #18] + 803e6c2: 429a cmp r2, r3 + 803e6c4: d901 bls.n 803e6ca return 1; - 803e686: 2301 movs r3, #1 - 803e688: e032 b.n 803e6f0 + 803e6c6: 2301 movs r3, #1 + 803e6c8: e032 b.n 803e730 } type_internal = p->type_internal; - 803e68a: 68fb ldr r3, [r7, #12] - 803e68c: 7b1b ldrb r3, [r3, #12] - 803e68e: 823b strh r3, [r7, #16] + 803e6ca: 68fb ldr r3, [r7, #12] + 803e6cc: 7b1b ldrb r3, [r3, #12] + 803e6ce: 823b strh r3, [r7, #16] /* pbuf types containing payloads? */ if (type_internal & PBUF_TYPE_FLAG_STRUCT_DATA_CONTIGUOUS) { - 803e690: 8a3b ldrh r3, [r7, #16] - 803e692: f003 0380 and.w r3, r3, #128 ; 0x80 - 803e696: 2b00 cmp r3, #0 - 803e698: d00c beq.n 803e6b4 + 803e6d0: 8a3b ldrh r3, [r7, #16] + 803e6d2: f003 0380 and.w r3, r3, #128 ; 0x80 + 803e6d6: 2b00 cmp r3, #0 + 803e6d8: d00c beq.n 803e6f4 /* set new payload pointer */ payload = (u8_t *)p->payload - header_size_increment; - 803e69a: 68fb ldr r3, [r7, #12] - 803e69c: 685a ldr r2, [r3, #4] - 803e69e: 68bb ldr r3, [r7, #8] - 803e6a0: 425b negs r3, r3 - 803e6a2: 4413 add r3, r2 - 803e6a4: 617b str r3, [r7, #20] + 803e6da: 68fb ldr r3, [r7, #12] + 803e6dc: 685a ldr r2, [r3, #4] + 803e6de: 68bb ldr r3, [r7, #8] + 803e6e0: 425b negs r3, r3 + 803e6e2: 4413 add r3, r2 + 803e6e4: 617b str r3, [r7, #20] /* boundary check fails? */ if ((u8_t *)payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { - 803e6a6: 68fb ldr r3, [r7, #12] - 803e6a8: 3310 adds r3, #16 - 803e6aa: 697a ldr r2, [r7, #20] - 803e6ac: 429a cmp r2, r3 - 803e6ae: d20d bcs.n 803e6cc + 803e6e6: 68fb ldr r3, [r7, #12] + 803e6e8: 3310 adds r3, #16 + 803e6ea: 697a ldr r2, [r7, #20] + 803e6ec: 429a cmp r2, r3 + 803e6ee: d20d bcs.n 803e70c LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_add_header: failed as %p < %p (not enough space for new header size)\n", (void *)payload, (void *)((u8_t *)p + SIZEOF_STRUCT_PBUF))); /* bail out unsuccessfully */ return 1; - 803e6b0: 2301 movs r3, #1 - 803e6b2: e01d b.n 803e6f0 + 803e6f0: 2301 movs r3, #1 + 803e6f2: e01d b.n 803e730 } /* pbuf types referring to external payloads? */ } else { /* hide a header in the payload? */ if (force) { - 803e6b4: 79fb ldrb r3, [r7, #7] - 803e6b6: 2b00 cmp r3, #0 - 803e6b8: d006 beq.n 803e6c8 + 803e6f4: 79fb ldrb r3, [r7, #7] + 803e6f6: 2b00 cmp r3, #0 + 803e6f8: d006 beq.n 803e708 payload = (u8_t *)p->payload - header_size_increment; - 803e6ba: 68fb ldr r3, [r7, #12] - 803e6bc: 685a ldr r2, [r3, #4] - 803e6be: 68bb ldr r3, [r7, #8] - 803e6c0: 425b negs r3, r3 - 803e6c2: 4413 add r3, r2 - 803e6c4: 617b str r3, [r7, #20] - 803e6c6: e001 b.n 803e6cc + 803e6fa: 68fb ldr r3, [r7, #12] + 803e6fc: 685a ldr r2, [r3, #4] + 803e6fe: 68bb ldr r3, [r7, #8] + 803e700: 425b negs r3, r3 + 803e702: 4413 add r3, r2 + 803e704: 617b str r3, [r7, #20] + 803e706: e001 b.n 803e70c } else { /* cannot expand payload to front (yet!) * bail out unsuccessfully */ return 1; - 803e6c8: 2301 movs r3, #1 - 803e6ca: e011 b.n 803e6f0 + 803e708: 2301 movs r3, #1 + 803e70a: e011 b.n 803e730 } LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_add_header: old %p new %p (%"U16_F")\n", (void *)p->payload, (void *)payload, increment_magnitude)); /* modify pbuf fields */ p->payload = payload; - 803e6cc: 68fb ldr r3, [r7, #12] - 803e6ce: 697a ldr r2, [r7, #20] - 803e6d0: 605a str r2, [r3, #4] + 803e70c: 68fb ldr r3, [r7, #12] + 803e70e: 697a ldr r2, [r7, #20] + 803e710: 605a str r2, [r3, #4] p->len = (u16_t)(p->len + increment_magnitude); - 803e6d2: 68fb ldr r3, [r7, #12] - 803e6d4: 895a ldrh r2, [r3, #10] - 803e6d6: 8a7b ldrh r3, [r7, #18] - 803e6d8: 4413 add r3, r2 - 803e6da: b29a uxth r2, r3 - 803e6dc: 68fb ldr r3, [r7, #12] - 803e6de: 815a strh r2, [r3, #10] + 803e712: 68fb ldr r3, [r7, #12] + 803e714: 895a ldrh r2, [r3, #10] + 803e716: 8a7b ldrh r3, [r7, #18] + 803e718: 4413 add r3, r2 + 803e71a: b29a uxth r2, r3 + 803e71c: 68fb ldr r3, [r7, #12] + 803e71e: 815a strh r2, [r3, #10] p->tot_len = (u16_t)(p->tot_len + increment_magnitude); - 803e6e0: 68fb ldr r3, [r7, #12] - 803e6e2: 891a ldrh r2, [r3, #8] - 803e6e4: 8a7b ldrh r3, [r7, #18] - 803e6e6: 4413 add r3, r2 - 803e6e8: b29a uxth r2, r3 - 803e6ea: 68fb ldr r3, [r7, #12] - 803e6ec: 811a strh r2, [r3, #8] + 803e720: 68fb ldr r3, [r7, #12] + 803e722: 891a ldrh r2, [r3, #8] + 803e724: 8a7b ldrh r3, [r7, #18] + 803e726: 4413 add r3, r2 + 803e728: b29a uxth r2, r3 + 803e72a: 68fb ldr r3, [r7, #12] + 803e72c: 811a strh r2, [r3, #8] return 0; - 803e6ee: 2300 movs r3, #0 + 803e72e: 2300 movs r3, #0 } - 803e6f0: 4618 mov r0, r3 - 803e6f2: 3718 adds r7, #24 - 803e6f4: 46bd mov sp, r7 - 803e6f6: bd80 pop {r7, pc} - 803e6f8: 0804a730 .word 0x0804a730 - 803e6fc: 0804a894 .word 0x0804a894 - 803e700: 0804a790 .word 0x0804a790 + 803e730: 4618 mov r0, r3 + 803e732: 3718 adds r7, #24 + 803e734: 46bd mov sp, r7 + 803e736: bd80 pop {r7, pc} + 803e738: 0804a770 .word 0x0804a770 + 803e73c: 0804a8d4 .word 0x0804a8d4 + 803e740: 0804a7d0 .word 0x0804a7d0 -0803e704 : +0803e744 : * @return non-zero on failure, zero on success. * */ u8_t pbuf_add_header(struct pbuf *p, size_t header_size_increment) { - 803e704: b580 push {r7, lr} - 803e706: b082 sub sp, #8 - 803e708: af00 add r7, sp, #0 - 803e70a: 6078 str r0, [r7, #4] - 803e70c: 6039 str r1, [r7, #0] + 803e744: b580 push {r7, lr} + 803e746: b082 sub sp, #8 + 803e748: af00 add r7, sp, #0 + 803e74a: 6078 str r0, [r7, #4] + 803e74c: 6039 str r1, [r7, #0] return pbuf_add_header_impl(p, header_size_increment, 0); - 803e70e: 2200 movs r2, #0 - 803e710: 6839 ldr r1, [r7, #0] - 803e712: 6878 ldr r0, [r7, #4] - 803e714: f7ff ff8e bl 803e634 - 803e718: 4603 mov r3, r0 -} - 803e71a: 4618 mov r0, r3 - 803e71c: 3708 adds r7, #8 - 803e71e: 46bd mov sp, r7 - 803e720: bd80 pop {r7, pc} + 803e74e: 2200 movs r2, #0 + 803e750: 6839 ldr r1, [r7, #0] + 803e752: 6878 ldr r0, [r7, #4] + 803e754: f7ff ff8e bl 803e674 + 803e758: 4603 mov r3, r0 +} + 803e75a: 4618 mov r0, r3 + 803e75c: 3708 adds r7, #8 + 803e75e: 46bd mov sp, r7 + 803e760: bd80 pop {r7, pc} ... -0803e724 : +0803e764 : * @return non-zero on failure, zero on success. * */ u8_t pbuf_remove_header(struct pbuf *p, size_t header_size_decrement) { - 803e724: b580 push {r7, lr} - 803e726: b084 sub sp, #16 - 803e728: af00 add r7, sp, #0 - 803e72a: 6078 str r0, [r7, #4] - 803e72c: 6039 str r1, [r7, #0] + 803e764: b580 push {r7, lr} + 803e766: b084 sub sp, #16 + 803e768: af00 add r7, sp, #0 + 803e76a: 6078 str r0, [r7, #4] + 803e76c: 6039 str r1, [r7, #0] void *payload; u16_t increment_magnitude; LWIP_ASSERT("p != NULL", p != NULL); - 803e72e: 687b ldr r3, [r7, #4] - 803e730: 2b00 cmp r3, #0 - 803e732: d106 bne.n 803e742 - 803e734: 4b20 ldr r3, [pc, #128] ; (803e7b8 ) - 803e736: f240 224b movw r2, #587 ; 0x24b - 803e73a: 4920 ldr r1, [pc, #128] ; (803e7bc ) - 803e73c: 4820 ldr r0, [pc, #128] ; (803e7c0 ) - 803e73e: f009 fc31 bl 8047fa4 + 803e76e: 687b ldr r3, [r7, #4] + 803e770: 2b00 cmp r3, #0 + 803e772: d106 bne.n 803e782 + 803e774: 4b20 ldr r3, [pc, #128] ; (803e7f8 ) + 803e776: f240 224b movw r2, #587 ; 0x24b + 803e77a: 4920 ldr r1, [pc, #128] ; (803e7fc ) + 803e77c: 4820 ldr r0, [pc, #128] ; (803e800 ) + 803e77e: f009 fc31 bl 8047fe4 if ((p == NULL) || (header_size_decrement > 0xFFFF)) { - 803e742: 687b ldr r3, [r7, #4] - 803e744: 2b00 cmp r3, #0 - 803e746: d003 beq.n 803e750 - 803e748: 683b ldr r3, [r7, #0] - 803e74a: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803e74e: d301 bcc.n 803e754 + 803e782: 687b ldr r3, [r7, #4] + 803e784: 2b00 cmp r3, #0 + 803e786: d003 beq.n 803e790 + 803e788: 683b ldr r3, [r7, #0] + 803e78a: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803e78e: d301 bcc.n 803e794 return 1; - 803e750: 2301 movs r3, #1 - 803e752: e02c b.n 803e7ae + 803e790: 2301 movs r3, #1 + 803e792: e02c b.n 803e7ee } if (header_size_decrement == 0) { - 803e754: 683b ldr r3, [r7, #0] - 803e756: 2b00 cmp r3, #0 - 803e758: d101 bne.n 803e75e + 803e794: 683b ldr r3, [r7, #0] + 803e796: 2b00 cmp r3, #0 + 803e798: d101 bne.n 803e79e return 0; - 803e75a: 2300 movs r3, #0 - 803e75c: e027 b.n 803e7ae + 803e79a: 2300 movs r3, #0 + 803e79c: e027 b.n 803e7ee } increment_magnitude = (u16_t)header_size_decrement; - 803e75e: 683b ldr r3, [r7, #0] - 803e760: 81fb strh r3, [r7, #14] + 803e79e: 683b ldr r3, [r7, #0] + 803e7a0: 81fb strh r3, [r7, #14] /* Check that we aren't going to move off the end of the pbuf */ LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); - 803e762: 687b ldr r3, [r7, #4] - 803e764: 895b ldrh r3, [r3, #10] - 803e766: 89fa ldrh r2, [r7, #14] - 803e768: 429a cmp r2, r3 - 803e76a: d908 bls.n 803e77e - 803e76c: 4b12 ldr r3, [pc, #72] ; (803e7b8 ) - 803e76e: f240 2255 movw r2, #597 ; 0x255 - 803e772: 4914 ldr r1, [pc, #80] ; (803e7c4 ) - 803e774: 4812 ldr r0, [pc, #72] ; (803e7c0 ) - 803e776: f009 fc15 bl 8047fa4 - 803e77a: 2301 movs r3, #1 - 803e77c: e017 b.n 803e7ae + 803e7a2: 687b ldr r3, [r7, #4] + 803e7a4: 895b ldrh r3, [r3, #10] + 803e7a6: 89fa ldrh r2, [r7, #14] + 803e7a8: 429a cmp r2, r3 + 803e7aa: d908 bls.n 803e7be + 803e7ac: 4b12 ldr r3, [pc, #72] ; (803e7f8 ) + 803e7ae: f240 2255 movw r2, #597 ; 0x255 + 803e7b2: 4914 ldr r1, [pc, #80] ; (803e804 ) + 803e7b4: 4812 ldr r0, [pc, #72] ; (803e800 ) + 803e7b6: f009 fc15 bl 8047fe4 + 803e7ba: 2301 movs r3, #1 + 803e7bc: e017 b.n 803e7ee /* remember current payload pointer */ payload = p->payload; - 803e77e: 687b ldr r3, [r7, #4] - 803e780: 685b ldr r3, [r3, #4] - 803e782: 60bb str r3, [r7, #8] + 803e7be: 687b ldr r3, [r7, #4] + 803e7c0: 685b ldr r3, [r3, #4] + 803e7c2: 60bb str r3, [r7, #8] LWIP_UNUSED_ARG(payload); /* only used in LWIP_DEBUGF below */ /* increase payload pointer (guarded by length check above) */ p->payload = (u8_t *)p->payload + header_size_decrement; - 803e784: 687b ldr r3, [r7, #4] - 803e786: 685a ldr r2, [r3, #4] - 803e788: 683b ldr r3, [r7, #0] - 803e78a: 441a add r2, r3 - 803e78c: 687b ldr r3, [r7, #4] - 803e78e: 605a str r2, [r3, #4] + 803e7c4: 687b ldr r3, [r7, #4] + 803e7c6: 685a ldr r2, [r3, #4] + 803e7c8: 683b ldr r3, [r7, #0] + 803e7ca: 441a add r2, r3 + 803e7cc: 687b ldr r3, [r7, #4] + 803e7ce: 605a str r2, [r3, #4] /* modify pbuf length fields */ p->len = (u16_t)(p->len - increment_magnitude); - 803e790: 687b ldr r3, [r7, #4] - 803e792: 895a ldrh r2, [r3, #10] - 803e794: 89fb ldrh r3, [r7, #14] - 803e796: 1ad3 subs r3, r2, r3 - 803e798: b29a uxth r2, r3 - 803e79a: 687b ldr r3, [r7, #4] - 803e79c: 815a strh r2, [r3, #10] + 803e7d0: 687b ldr r3, [r7, #4] + 803e7d2: 895a ldrh r2, [r3, #10] + 803e7d4: 89fb ldrh r3, [r7, #14] + 803e7d6: 1ad3 subs r3, r2, r3 + 803e7d8: b29a uxth r2, r3 + 803e7da: 687b ldr r3, [r7, #4] + 803e7dc: 815a strh r2, [r3, #10] p->tot_len = (u16_t)(p->tot_len - increment_magnitude); - 803e79e: 687b ldr r3, [r7, #4] - 803e7a0: 891a ldrh r2, [r3, #8] - 803e7a2: 89fb ldrh r3, [r7, #14] - 803e7a4: 1ad3 subs r3, r2, r3 - 803e7a6: b29a uxth r2, r3 - 803e7a8: 687b ldr r3, [r7, #4] - 803e7aa: 811a strh r2, [r3, #8] + 803e7de: 687b ldr r3, [r7, #4] + 803e7e0: 891a ldrh r2, [r3, #8] + 803e7e2: 89fb ldrh r3, [r7, #14] + 803e7e4: 1ad3 subs r3, r2, r3 + 803e7e6: b29a uxth r2, r3 + 803e7e8: 687b ldr r3, [r7, #4] + 803e7ea: 811a strh r2, [r3, #8] LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_remove_header: old %p new %p (%"U16_F")\n", (void *)payload, (void *)p->payload, increment_magnitude)); return 0; - 803e7ac: 2300 movs r3, #0 + 803e7ec: 2300 movs r3, #0 } - 803e7ae: 4618 mov r0, r3 - 803e7b0: 3710 adds r7, #16 - 803e7b2: 46bd mov sp, r7 - 803e7b4: bd80 pop {r7, pc} - 803e7b6: bf00 nop - 803e7b8: 0804a730 .word 0x0804a730 - 803e7bc: 0804a894 .word 0x0804a894 - 803e7c0: 0804a790 .word 0x0804a790 - 803e7c4: 0804a8a0 .word 0x0804a8a0 + 803e7ee: 4618 mov r0, r3 + 803e7f0: 3710 adds r7, #16 + 803e7f2: 46bd mov sp, r7 + 803e7f4: bd80 pop {r7, pc} + 803e7f6: bf00 nop + 803e7f8: 0804a770 .word 0x0804a770 + 803e7fc: 0804a8d4 .word 0x0804a8d4 + 803e800: 0804a7d0 .word 0x0804a7d0 + 803e804: 0804a8e0 .word 0x0804a8e0 -0803e7c8 : +0803e808 : static u8_t pbuf_header_impl(struct pbuf *p, s16_t header_size_increment, u8_t force) { - 803e7c8: b580 push {r7, lr} - 803e7ca: b082 sub sp, #8 - 803e7cc: af00 add r7, sp, #0 - 803e7ce: 6078 str r0, [r7, #4] - 803e7d0: 460b mov r3, r1 - 803e7d2: 807b strh r3, [r7, #2] - 803e7d4: 4613 mov r3, r2 - 803e7d6: 707b strb r3, [r7, #1] + 803e808: b580 push {r7, lr} + 803e80a: b082 sub sp, #8 + 803e80c: af00 add r7, sp, #0 + 803e80e: 6078 str r0, [r7, #4] + 803e810: 460b mov r3, r1 + 803e812: 807b strh r3, [r7, #2] + 803e814: 4613 mov r3, r2 + 803e816: 707b strb r3, [r7, #1] if (header_size_increment < 0) { - 803e7d8: f9b7 3002 ldrsh.w r3, [r7, #2] - 803e7dc: 2b00 cmp r3, #0 - 803e7de: da08 bge.n 803e7f2 + 803e818: f9b7 3002 ldrsh.w r3, [r7, #2] + 803e81c: 2b00 cmp r3, #0 + 803e81e: da08 bge.n 803e832 return pbuf_remove_header(p, (size_t) - header_size_increment); - 803e7e0: f9b7 3002 ldrsh.w r3, [r7, #2] - 803e7e4: 425b negs r3, r3 - 803e7e6: 4619 mov r1, r3 - 803e7e8: 6878 ldr r0, [r7, #4] - 803e7ea: f7ff ff9b bl 803e724 - 803e7ee: 4603 mov r3, r0 - 803e7f0: e007 b.n 803e802 + 803e820: f9b7 3002 ldrsh.w r3, [r7, #2] + 803e824: 425b negs r3, r3 + 803e826: 4619 mov r1, r3 + 803e828: 6878 ldr r0, [r7, #4] + 803e82a: f7ff ff9b bl 803e764 + 803e82e: 4603 mov r3, r0 + 803e830: e007 b.n 803e842 } else { return pbuf_add_header_impl(p, (size_t)header_size_increment, force); - 803e7f2: f9b7 3002 ldrsh.w r3, [r7, #2] - 803e7f6: 787a ldrb r2, [r7, #1] - 803e7f8: 4619 mov r1, r3 - 803e7fa: 6878 ldr r0, [r7, #4] - 803e7fc: f7ff ff1a bl 803e634 - 803e800: 4603 mov r3, r0 + 803e832: f9b7 3002 ldrsh.w r3, [r7, #2] + 803e836: 787a ldrb r2, [r7, #1] + 803e838: 4619 mov r1, r3 + 803e83a: 6878 ldr r0, [r7, #4] + 803e83c: f7ff ff1a bl 803e674 + 803e840: 4603 mov r3, r0 } } - 803e802: 4618 mov r0, r3 - 803e804: 3708 adds r7, #8 - 803e806: 46bd mov sp, r7 - 803e808: bd80 pop {r7, pc} + 803e842: 4618 mov r0, r3 + 803e844: 3708 adds r7, #8 + 803e846: 46bd mov sp, r7 + 803e848: bd80 pop {r7, pc} -0803e80a : +0803e84a : * Same as pbuf_header but does not check if 'header_size > 0' is allowed. * This is used internally only, to allow PBUF_REF for RX. */ u8_t pbuf_header_force(struct pbuf *p, s16_t header_size_increment) { - 803e80a: b580 push {r7, lr} - 803e80c: b082 sub sp, #8 - 803e80e: af00 add r7, sp, #0 - 803e810: 6078 str r0, [r7, #4] - 803e812: 460b mov r3, r1 - 803e814: 807b strh r3, [r7, #2] + 803e84a: b580 push {r7, lr} + 803e84c: b082 sub sp, #8 + 803e84e: af00 add r7, sp, #0 + 803e850: 6078 str r0, [r7, #4] + 803e852: 460b mov r3, r1 + 803e854: 807b strh r3, [r7, #2] return pbuf_header_impl(p, header_size_increment, 1); - 803e816: f9b7 3002 ldrsh.w r3, [r7, #2] - 803e81a: 2201 movs r2, #1 - 803e81c: 4619 mov r1, r3 - 803e81e: 6878 ldr r0, [r7, #4] - 803e820: f7ff ffd2 bl 803e7c8 - 803e824: 4603 mov r3, r0 -} - 803e826: 4618 mov r0, r3 - 803e828: 3708 adds r7, #8 - 803e82a: 46bd mov sp, r7 - 803e82c: bd80 pop {r7, pc} + 803e856: f9b7 3002 ldrsh.w r3, [r7, #2] + 803e85a: 2201 movs r2, #1 + 803e85c: 4619 mov r1, r3 + 803e85e: 6878 ldr r0, [r7, #4] + 803e860: f7ff ffd2 bl 803e808 + 803e864: 4603 mov r3, r0 +} + 803e866: 4618 mov r0, r3 + 803e868: 3708 adds r7, #8 + 803e86a: 46bd mov sp, r7 + 803e86c: bd80 pop {r7, pc} ... -0803e830 : +0803e870 : * 1->1->1 becomes ....... * */ u8_t pbuf_free(struct pbuf *p) { - 803e830: b580 push {r7, lr} - 803e832: b086 sub sp, #24 - 803e834: af00 add r7, sp, #0 - 803e836: 6078 str r0, [r7, #4] + 803e870: b580 push {r7, lr} + 803e872: b086 sub sp, #24 + 803e874: af00 add r7, sp, #0 + 803e876: 6078 str r0, [r7, #4] u8_t alloc_src; struct pbuf *q; u8_t count; if (p == NULL) { - 803e838: 687b ldr r3, [r7, #4] - 803e83a: 2b00 cmp r3, #0 - 803e83c: d10b bne.n 803e856 + 803e878: 687b ldr r3, [r7, #4] + 803e87a: 2b00 cmp r3, #0 + 803e87c: d10b bne.n 803e896 LWIP_ASSERT("p != NULL", p != NULL); - 803e83e: 687b ldr r3, [r7, #4] - 803e840: 2b00 cmp r3, #0 - 803e842: d106 bne.n 803e852 - 803e844: 4b38 ldr r3, [pc, #224] ; (803e928 ) - 803e846: f44f 7237 mov.w r2, #732 ; 0x2dc - 803e84a: 4938 ldr r1, [pc, #224] ; (803e92c ) - 803e84c: 4838 ldr r0, [pc, #224] ; (803e930 ) - 803e84e: f009 fba9 bl 8047fa4 + 803e87e: 687b ldr r3, [r7, #4] + 803e880: 2b00 cmp r3, #0 + 803e882: d106 bne.n 803e892 + 803e884: 4b38 ldr r3, [pc, #224] ; (803e968 ) + 803e886: f44f 7237 mov.w r2, #732 ; 0x2dc + 803e88a: 4938 ldr r1, [pc, #224] ; (803e96c ) + 803e88c: 4838 ldr r0, [pc, #224] ; (803e970 ) + 803e88e: f009 fba9 bl 8047fe4 /* if assertions are disabled, proceed with debug output */ LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("pbuf_free(p == NULL) was called.\n")); return 0; - 803e852: 2300 movs r3, #0 - 803e854: e063 b.n 803e91e + 803e892: 2300 movs r3, #0 + 803e894: e063 b.n 803e95e } LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p)); PERF_START; count = 0; - 803e856: 2300 movs r3, #0 - 803e858: 75fb strb r3, [r7, #23] + 803e896: 2300 movs r3, #0 + 803e898: 75fb strb r3, [r7, #23] /* de-allocate all consecutive pbufs from the head of the chain that * obtain a zero reference count after decrementing*/ while (p != NULL) { - 803e85a: e05c b.n 803e916 + 803e89a: e05c b.n 803e956 /* Since decrementing ref cannot be guaranteed to be a single machine operation * we must protect it. We put the new ref into a local variable to prevent * further protection. */ SYS_ARCH_PROTECT(old_level); /* all pbufs in a chain are referenced at least once */ LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); - 803e85c: 687b ldr r3, [r7, #4] - 803e85e: 7b9b ldrb r3, [r3, #14] - 803e860: 2b00 cmp r3, #0 - 803e862: d106 bne.n 803e872 - 803e864: 4b30 ldr r3, [pc, #192] ; (803e928 ) - 803e866: f240 22f1 movw r2, #753 ; 0x2f1 - 803e86a: 4932 ldr r1, [pc, #200] ; (803e934 ) - 803e86c: 4830 ldr r0, [pc, #192] ; (803e930 ) - 803e86e: f009 fb99 bl 8047fa4 + 803e89c: 687b ldr r3, [r7, #4] + 803e89e: 7b9b ldrb r3, [r3, #14] + 803e8a0: 2b00 cmp r3, #0 + 803e8a2: d106 bne.n 803e8b2 + 803e8a4: 4b30 ldr r3, [pc, #192] ; (803e968 ) + 803e8a6: f240 22f1 movw r2, #753 ; 0x2f1 + 803e8aa: 4932 ldr r1, [pc, #200] ; (803e974 ) + 803e8ac: 4830 ldr r0, [pc, #192] ; (803e970 ) + 803e8ae: f009 fb99 bl 8047fe4 /* decrease reference count (number of pointers to pbuf) */ ref = --(p->ref); - 803e872: 687b ldr r3, [r7, #4] - 803e874: 7b9b ldrb r3, [r3, #14] - 803e876: 3b01 subs r3, #1 - 803e878: b2da uxtb r2, r3 - 803e87a: 687b ldr r3, [r7, #4] - 803e87c: 739a strb r2, [r3, #14] - 803e87e: 687b ldr r3, [r7, #4] - 803e880: 7b9b ldrb r3, [r3, #14] - 803e882: 75bb strb r3, [r7, #22] + 803e8b2: 687b ldr r3, [r7, #4] + 803e8b4: 7b9b ldrb r3, [r3, #14] + 803e8b6: 3b01 subs r3, #1 + 803e8b8: b2da uxtb r2, r3 + 803e8ba: 687b ldr r3, [r7, #4] + 803e8bc: 739a strb r2, [r3, #14] + 803e8be: 687b ldr r3, [r7, #4] + 803e8c0: 7b9b ldrb r3, [r3, #14] + 803e8c2: 75bb strb r3, [r7, #22] SYS_ARCH_UNPROTECT(old_level); /* this pbuf is no longer referenced to? */ if (ref == 0) { - 803e884: 7dbb ldrb r3, [r7, #22] - 803e886: 2b00 cmp r3, #0 - 803e888: d143 bne.n 803e912 + 803e8c4: 7dbb ldrb r3, [r7, #22] + 803e8c6: 2b00 cmp r3, #0 + 803e8c8: d143 bne.n 803e952 /* remember next pbuf in chain for next iteration */ q = p->next; - 803e88a: 687b ldr r3, [r7, #4] - 803e88c: 681b ldr r3, [r3, #0] - 803e88e: 613b str r3, [r7, #16] + 803e8ca: 687b ldr r3, [r7, #4] + 803e8cc: 681b ldr r3, [r3, #0] + 803e8ce: 613b str r3, [r7, #16] LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p)); alloc_src = pbuf_get_allocsrc(p); - 803e890: 687b ldr r3, [r7, #4] - 803e892: 7b1b ldrb r3, [r3, #12] - 803e894: f003 030f and.w r3, r3, #15 - 803e898: 73fb strb r3, [r7, #15] + 803e8d0: 687b ldr r3, [r7, #4] + 803e8d2: 7b1b ldrb r3, [r3, #12] + 803e8d4: f003 030f and.w r3, r3, #15 + 803e8d8: 73fb strb r3, [r7, #15] #if LWIP_SUPPORT_CUSTOM_PBUF /* is this a custom pbuf? */ if ((p->flags & PBUF_FLAG_IS_CUSTOM) != 0) { - 803e89a: 687b ldr r3, [r7, #4] - 803e89c: 7b5b ldrb r3, [r3, #13] - 803e89e: f003 0302 and.w r3, r3, #2 - 803e8a2: 2b00 cmp r3, #0 - 803e8a4: d011 beq.n 803e8ca + 803e8da: 687b ldr r3, [r7, #4] + 803e8dc: 7b5b ldrb r3, [r3, #13] + 803e8de: f003 0302 and.w r3, r3, #2 + 803e8e2: 2b00 cmp r3, #0 + 803e8e4: d011 beq.n 803e90a struct pbuf_custom *pc = (struct pbuf_custom *)p; - 803e8a6: 687b ldr r3, [r7, #4] - 803e8a8: 60bb str r3, [r7, #8] + 803e8e6: 687b ldr r3, [r7, #4] + 803e8e8: 60bb str r3, [r7, #8] LWIP_ASSERT("pc->custom_free_function != NULL", pc->custom_free_function != NULL); - 803e8aa: 68bb ldr r3, [r7, #8] - 803e8ac: 691b ldr r3, [r3, #16] - 803e8ae: 2b00 cmp r3, #0 - 803e8b0: d106 bne.n 803e8c0 - 803e8b2: 4b1d ldr r3, [pc, #116] ; (803e928 ) - 803e8b4: f240 22ff movw r2, #767 ; 0x2ff - 803e8b8: 491f ldr r1, [pc, #124] ; (803e938 ) - 803e8ba: 481d ldr r0, [pc, #116] ; (803e930 ) - 803e8bc: f009 fb72 bl 8047fa4 + 803e8ea: 68bb ldr r3, [r7, #8] + 803e8ec: 691b ldr r3, [r3, #16] + 803e8ee: 2b00 cmp r3, #0 + 803e8f0: d106 bne.n 803e900 + 803e8f2: 4b1d ldr r3, [pc, #116] ; (803e968 ) + 803e8f4: f240 22ff movw r2, #767 ; 0x2ff + 803e8f8: 491f ldr r1, [pc, #124] ; (803e978 ) + 803e8fa: 481d ldr r0, [pc, #116] ; (803e970 ) + 803e8fc: f009 fb72 bl 8047fe4 pc->custom_free_function(p); - 803e8c0: 68bb ldr r3, [r7, #8] - 803e8c2: 691b ldr r3, [r3, #16] - 803e8c4: 6878 ldr r0, [r7, #4] - 803e8c6: 4798 blx r3 - 803e8c8: e01d b.n 803e906 + 803e900: 68bb ldr r3, [r7, #8] + 803e902: 691b ldr r3, [r3, #16] + 803e904: 6878 ldr r0, [r7, #4] + 803e906: 4798 blx r3 + 803e908: e01d b.n 803e946 } else #endif /* LWIP_SUPPORT_CUSTOM_PBUF */ { /* is this a pbuf from the pool? */ if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF_POOL) { - 803e8ca: 7bfb ldrb r3, [r7, #15] - 803e8cc: 2b02 cmp r3, #2 - 803e8ce: d104 bne.n 803e8da + 803e90a: 7bfb ldrb r3, [r7, #15] + 803e90c: 2b02 cmp r3, #2 + 803e90e: d104 bne.n 803e91a memp_free(MEMP_PBUF_POOL, p); - 803e8d0: 6879 ldr r1, [r7, #4] - 803e8d2: 2008 movs r0, #8 - 803e8d4: f7ff f91a bl 803db0c - 803e8d8: e015 b.n 803e906 + 803e910: 6879 ldr r1, [r7, #4] + 803e912: 2008 movs r0, #8 + 803e914: f7ff f91a bl 803db4c + 803e918: e015 b.n 803e946 /* is this a ROM or RAM referencing pbuf? */ } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_MEMP_PBUF) { - 803e8da: 7bfb ldrb r3, [r7, #15] - 803e8dc: 2b01 cmp r3, #1 - 803e8de: d104 bne.n 803e8ea + 803e91a: 7bfb ldrb r3, [r7, #15] + 803e91c: 2b01 cmp r3, #1 + 803e91e: d104 bne.n 803e92a memp_free(MEMP_PBUF, p); - 803e8e0: 6879 ldr r1, [r7, #4] - 803e8e2: 2007 movs r0, #7 - 803e8e4: f7ff f912 bl 803db0c - 803e8e8: e00d b.n 803e906 + 803e920: 6879 ldr r1, [r7, #4] + 803e922: 2007 movs r0, #7 + 803e924: f7ff f912 bl 803db4c + 803e928: e00d b.n 803e946 /* type == PBUF_RAM */ } else if (alloc_src == PBUF_TYPE_ALLOC_SRC_MASK_STD_HEAP) { - 803e8ea: 7bfb ldrb r3, [r7, #15] - 803e8ec: 2b00 cmp r3, #0 - 803e8ee: d103 bne.n 803e8f8 + 803e92a: 7bfb ldrb r3, [r7, #15] + 803e92c: 2b00 cmp r3, #0 + 803e92e: d103 bne.n 803e938 mem_free(p); - 803e8f0: 6878 ldr r0, [r7, #4] - 803e8f2: f7fe fda5 bl 803d440 - 803e8f6: e006 b.n 803e906 + 803e930: 6878 ldr r0, [r7, #4] + 803e932: f7fe fda5 bl 803d480 + 803e936: e006 b.n 803e946 } else { /* @todo: support freeing other types */ LWIP_ASSERT("invalid pbuf type", 0); - 803e8f8: 4b0b ldr r3, [pc, #44] ; (803e928 ) - 803e8fa: f240 320f movw r2, #783 ; 0x30f - 803e8fe: 490f ldr r1, [pc, #60] ; (803e93c ) - 803e900: 480b ldr r0, [pc, #44] ; (803e930 ) - 803e902: f009 fb4f bl 8047fa4 + 803e938: 4b0b ldr r3, [pc, #44] ; (803e968 ) + 803e93a: f240 320f movw r2, #783 ; 0x30f + 803e93e: 490f ldr r1, [pc, #60] ; (803e97c ) + 803e940: 480b ldr r0, [pc, #44] ; (803e970 ) + 803e942: f009 fb4f bl 8047fe4 } } count++; - 803e906: 7dfb ldrb r3, [r7, #23] - 803e908: 3301 adds r3, #1 - 803e90a: 75fb strb r3, [r7, #23] + 803e946: 7dfb ldrb r3, [r7, #23] + 803e948: 3301 adds r3, #1 + 803e94a: 75fb strb r3, [r7, #23] /* proceed to next pbuf */ p = q; - 803e90c: 693b ldr r3, [r7, #16] - 803e90e: 607b str r3, [r7, #4] - 803e910: e001 b.n 803e916 + 803e94c: 693b ldr r3, [r7, #16] + 803e94e: 607b str r3, [r7, #4] + 803e950: e001 b.n 803e956 /* p->ref > 0, this pbuf is still referenced to */ /* (and so the remaining pbufs in chain as well) */ } else { LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, (u16_t)ref)); /* stop walking through the chain */ p = NULL; - 803e912: 2300 movs r3, #0 - 803e914: 607b str r3, [r7, #4] + 803e952: 2300 movs r3, #0 + 803e954: 607b str r3, [r7, #4] while (p != NULL) { - 803e916: 687b ldr r3, [r7, #4] - 803e918: 2b00 cmp r3, #0 - 803e91a: d19f bne.n 803e85c + 803e956: 687b ldr r3, [r7, #4] + 803e958: 2b00 cmp r3, #0 + 803e95a: d19f bne.n 803e89c } } PERF_STOP("pbuf_free"); /* return number of de-allocated pbufs */ return count; - 803e91c: 7dfb ldrb r3, [r7, #23] -} - 803e91e: 4618 mov r0, r3 - 803e920: 3718 adds r7, #24 - 803e922: 46bd mov sp, r7 - 803e924: bd80 pop {r7, pc} - 803e926: bf00 nop - 803e928: 0804a730 .word 0x0804a730 - 803e92c: 0804a894 .word 0x0804a894 - 803e930: 0804a790 .word 0x0804a790 - 803e934: 0804a8c0 .word 0x0804a8c0 - 803e938: 0804a8d8 .word 0x0804a8d8 - 803e93c: 0804a8fc .word 0x0804a8fc - -0803e940 : + 803e95c: 7dfb ldrb r3, [r7, #23] +} + 803e95e: 4618 mov r0, r3 + 803e960: 3718 adds r7, #24 + 803e962: 46bd mov sp, r7 + 803e964: bd80 pop {r7, pc} + 803e966: bf00 nop + 803e968: 0804a770 .word 0x0804a770 + 803e96c: 0804a8d4 .word 0x0804a8d4 + 803e970: 0804a7d0 .word 0x0804a7d0 + 803e974: 0804a900 .word 0x0804a900 + 803e978: 0804a918 .word 0x0804a918 + 803e97c: 0804a93c .word 0x0804a93c + +0803e980 : * @param p first pbuf of chain * @return the number of pbufs in a chain */ u16_t pbuf_clen(const struct pbuf *p) { - 803e940: b480 push {r7} - 803e942: b085 sub sp, #20 - 803e944: af00 add r7, sp, #0 - 803e946: 6078 str r0, [r7, #4] + 803e980: b480 push {r7} + 803e982: b085 sub sp, #20 + 803e984: af00 add r7, sp, #0 + 803e986: 6078 str r0, [r7, #4] u16_t len; len = 0; - 803e948: 2300 movs r3, #0 - 803e94a: 81fb strh r3, [r7, #14] + 803e988: 2300 movs r3, #0 + 803e98a: 81fb strh r3, [r7, #14] while (p != NULL) { - 803e94c: e005 b.n 803e95a + 803e98c: e005 b.n 803e99a ++len; - 803e94e: 89fb ldrh r3, [r7, #14] - 803e950: 3301 adds r3, #1 - 803e952: 81fb strh r3, [r7, #14] + 803e98e: 89fb ldrh r3, [r7, #14] + 803e990: 3301 adds r3, #1 + 803e992: 81fb strh r3, [r7, #14] p = p->next; - 803e954: 687b ldr r3, [r7, #4] - 803e956: 681b ldr r3, [r3, #0] - 803e958: 607b str r3, [r7, #4] + 803e994: 687b ldr r3, [r7, #4] + 803e996: 681b ldr r3, [r3, #0] + 803e998: 607b str r3, [r7, #4] while (p != NULL) { - 803e95a: 687b ldr r3, [r7, #4] - 803e95c: 2b00 cmp r3, #0 - 803e95e: d1f6 bne.n 803e94e + 803e99a: 687b ldr r3, [r7, #4] + 803e99c: 2b00 cmp r3, #0 + 803e99e: d1f6 bne.n 803e98e } return len; - 803e960: 89fb ldrh r3, [r7, #14] + 803e9a0: 89fb ldrh r3, [r7, #14] } - 803e962: 4618 mov r0, r3 - 803e964: 3714 adds r7, #20 - 803e966: 46bd mov sp, r7 - 803e968: f85d 7b04 ldr.w r7, [sp], #4 - 803e96c: 4770 bx lr + 803e9a2: 4618 mov r0, r3 + 803e9a4: 3714 adds r7, #20 + 803e9a6: 46bd mov sp, r7 + 803e9a8: f85d 7b04 ldr.w r7, [sp], #4 + 803e9ac: 4770 bx lr ... -0803e970 : +0803e9b0 : * @param p pbuf to increase reference counter of * */ void pbuf_ref(struct pbuf *p) { - 803e970: b580 push {r7, lr} - 803e972: b082 sub sp, #8 - 803e974: af00 add r7, sp, #0 - 803e976: 6078 str r0, [r7, #4] + 803e9b0: b580 push {r7, lr} + 803e9b2: b082 sub sp, #8 + 803e9b4: af00 add r7, sp, #0 + 803e9b6: 6078 str r0, [r7, #4] /* pbuf given? */ if (p != NULL) { - 803e978: 687b ldr r3, [r7, #4] - 803e97a: 2b00 cmp r3, #0 - 803e97c: d010 beq.n 803e9a0 + 803e9b8: 687b ldr r3, [r7, #4] + 803e9ba: 2b00 cmp r3, #0 + 803e9bc: d010 beq.n 803e9e0 SYS_ARCH_SET(p->ref, (LWIP_PBUF_REF_T)(p->ref + 1)); - 803e97e: 687b ldr r3, [r7, #4] - 803e980: 7b9b ldrb r3, [r3, #14] - 803e982: 3301 adds r3, #1 - 803e984: b2da uxtb r2, r3 - 803e986: 687b ldr r3, [r7, #4] - 803e988: 739a strb r2, [r3, #14] + 803e9be: 687b ldr r3, [r7, #4] + 803e9c0: 7b9b ldrb r3, [r3, #14] + 803e9c2: 3301 adds r3, #1 + 803e9c4: b2da uxtb r2, r3 + 803e9c6: 687b ldr r3, [r7, #4] + 803e9c8: 739a strb r2, [r3, #14] LWIP_ASSERT("pbuf ref overflow", p->ref > 0); - 803e98a: 687b ldr r3, [r7, #4] - 803e98c: 7b9b ldrb r3, [r3, #14] - 803e98e: 2b00 cmp r3, #0 - 803e990: d106 bne.n 803e9a0 - 803e992: 4b05 ldr r3, [pc, #20] ; (803e9a8 ) - 803e994: f240 3242 movw r2, #834 ; 0x342 - 803e998: 4904 ldr r1, [pc, #16] ; (803e9ac ) - 803e99a: 4805 ldr r0, [pc, #20] ; (803e9b0 ) - 803e99c: f009 fb02 bl 8047fa4 - } -} - 803e9a0: bf00 nop - 803e9a2: 3708 adds r7, #8 - 803e9a4: 46bd mov sp, r7 - 803e9a6: bd80 pop {r7, pc} - 803e9a8: 0804a730 .word 0x0804a730 - 803e9ac: 0804a910 .word 0x0804a910 - 803e9b0: 0804a790 .word 0x0804a790 - -0803e9b4 : + 803e9ca: 687b ldr r3, [r7, #4] + 803e9cc: 7b9b ldrb r3, [r3, #14] + 803e9ce: 2b00 cmp r3, #0 + 803e9d0: d106 bne.n 803e9e0 + 803e9d2: 4b05 ldr r3, [pc, #20] ; (803e9e8 ) + 803e9d4: f240 3242 movw r2, #834 ; 0x342 + 803e9d8: 4904 ldr r1, [pc, #16] ; (803e9ec ) + 803e9da: 4805 ldr r0, [pc, #20] ; (803e9f0 ) + 803e9dc: f009 fb02 bl 8047fe4 + } +} + 803e9e0: bf00 nop + 803e9e2: 3708 adds r7, #8 + 803e9e4: 46bd mov sp, r7 + 803e9e6: bd80 pop {r7, pc} + 803e9e8: 0804a770 .word 0x0804a770 + 803e9ec: 0804a950 .word 0x0804a950 + 803e9f0: 0804a7d0 .word 0x0804a7d0 + +0803e9f4 : * * @see pbuf_chain() */ void pbuf_cat(struct pbuf *h, struct pbuf *t) { - 803e9b4: b580 push {r7, lr} - 803e9b6: b084 sub sp, #16 - 803e9b8: af00 add r7, sp, #0 - 803e9ba: 6078 str r0, [r7, #4] - 803e9bc: 6039 str r1, [r7, #0] + 803e9f4: b580 push {r7, lr} + 803e9f6: b084 sub sp, #16 + 803e9f8: af00 add r7, sp, #0 + 803e9fa: 6078 str r0, [r7, #4] + 803e9fc: 6039 str r1, [r7, #0] struct pbuf *p; LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", - 803e9be: 687b ldr r3, [r7, #4] - 803e9c0: 2b00 cmp r3, #0 - 803e9c2: d002 beq.n 803e9ca - 803e9c4: 683b ldr r3, [r7, #0] - 803e9c6: 2b00 cmp r3, #0 - 803e9c8: d107 bne.n 803e9da - 803e9ca: 4b20 ldr r3, [pc, #128] ; (803ea4c ) - 803e9cc: f240 3259 movw r2, #857 ; 0x359 - 803e9d0: 491f ldr r1, [pc, #124] ; (803ea50 ) - 803e9d2: 4820 ldr r0, [pc, #128] ; (803ea54 ) - 803e9d4: f009 fae6 bl 8047fa4 - 803e9d8: e034 b.n 803ea44 + 803e9fe: 687b ldr r3, [r7, #4] + 803ea00: 2b00 cmp r3, #0 + 803ea02: d002 beq.n 803ea0a + 803ea04: 683b ldr r3, [r7, #0] + 803ea06: 2b00 cmp r3, #0 + 803ea08: d107 bne.n 803ea1a + 803ea0a: 4b20 ldr r3, [pc, #128] ; (803ea8c ) + 803ea0c: f240 3259 movw r2, #857 ; 0x359 + 803ea10: 491f ldr r1, [pc, #124] ; (803ea90 ) + 803ea12: 4820 ldr r0, [pc, #128] ; (803ea94 ) + 803ea14: f009 fae6 bl 8047fe4 + 803ea18: e034 b.n 803ea84 ((h != NULL) && (t != NULL)), return;); /* proceed to last pbuf of chain */ for (p = h; p->next != NULL; p = p->next) { - 803e9da: 687b ldr r3, [r7, #4] - 803e9dc: 60fb str r3, [r7, #12] - 803e9de: e00a b.n 803e9f6 + 803ea1a: 687b ldr r3, [r7, #4] + 803ea1c: 60fb str r3, [r7, #12] + 803ea1e: e00a b.n 803ea36 /* add total length of second chain to all totals of first chain */ p->tot_len = (u16_t)(p->tot_len + t->tot_len); - 803e9e0: 68fb ldr r3, [r7, #12] - 803e9e2: 891a ldrh r2, [r3, #8] - 803e9e4: 683b ldr r3, [r7, #0] - 803e9e6: 891b ldrh r3, [r3, #8] - 803e9e8: 4413 add r3, r2 - 803e9ea: b29a uxth r2, r3 - 803e9ec: 68fb ldr r3, [r7, #12] - 803e9ee: 811a strh r2, [r3, #8] + 803ea20: 68fb ldr r3, [r7, #12] + 803ea22: 891a ldrh r2, [r3, #8] + 803ea24: 683b ldr r3, [r7, #0] + 803ea26: 891b ldrh r3, [r3, #8] + 803ea28: 4413 add r3, r2 + 803ea2a: b29a uxth r2, r3 + 803ea2c: 68fb ldr r3, [r7, #12] + 803ea2e: 811a strh r2, [r3, #8] for (p = h; p->next != NULL; p = p->next) { - 803e9f0: 68fb ldr r3, [r7, #12] - 803e9f2: 681b ldr r3, [r3, #0] - 803e9f4: 60fb str r3, [r7, #12] - 803e9f6: 68fb ldr r3, [r7, #12] - 803e9f8: 681b ldr r3, [r3, #0] - 803e9fa: 2b00 cmp r3, #0 - 803e9fc: d1f0 bne.n 803e9e0 + 803ea30: 68fb ldr r3, [r7, #12] + 803ea32: 681b ldr r3, [r3, #0] + 803ea34: 60fb str r3, [r7, #12] + 803ea36: 68fb ldr r3, [r7, #12] + 803ea38: 681b ldr r3, [r3, #0] + 803ea3a: 2b00 cmp r3, #0 + 803ea3c: d1f0 bne.n 803ea20 } /* { p is last pbuf of first h chain, p->next == NULL } */ LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len); - 803e9fe: 68fb ldr r3, [r7, #12] - 803ea00: 891a ldrh r2, [r3, #8] - 803ea02: 68fb ldr r3, [r7, #12] - 803ea04: 895b ldrh r3, [r3, #10] - 803ea06: 429a cmp r2, r3 - 803ea08: d006 beq.n 803ea18 - 803ea0a: 4b10 ldr r3, [pc, #64] ; (803ea4c ) - 803ea0c: f240 3262 movw r2, #866 ; 0x362 - 803ea10: 4911 ldr r1, [pc, #68] ; (803ea58 ) - 803ea12: 4810 ldr r0, [pc, #64] ; (803ea54 ) - 803ea14: f009 fac6 bl 8047fa4 + 803ea3e: 68fb ldr r3, [r7, #12] + 803ea40: 891a ldrh r2, [r3, #8] + 803ea42: 68fb ldr r3, [r7, #12] + 803ea44: 895b ldrh r3, [r3, #10] + 803ea46: 429a cmp r2, r3 + 803ea48: d006 beq.n 803ea58 + 803ea4a: 4b10 ldr r3, [pc, #64] ; (803ea8c ) + 803ea4c: f240 3262 movw r2, #866 ; 0x362 + 803ea50: 4911 ldr r1, [pc, #68] ; (803ea98 ) + 803ea52: 4810 ldr r0, [pc, #64] ; (803ea94 ) + 803ea54: f009 fac6 bl 8047fe4 LWIP_ASSERT("p->next == NULL", p->next == NULL); - 803ea18: 68fb ldr r3, [r7, #12] - 803ea1a: 681b ldr r3, [r3, #0] - 803ea1c: 2b00 cmp r3, #0 - 803ea1e: d006 beq.n 803ea2e - 803ea20: 4b0a ldr r3, [pc, #40] ; (803ea4c ) - 803ea22: f240 3263 movw r2, #867 ; 0x363 - 803ea26: 490d ldr r1, [pc, #52] ; (803ea5c ) - 803ea28: 480a ldr r0, [pc, #40] ; (803ea54 ) - 803ea2a: f009 fabb bl 8047fa4 + 803ea58: 68fb ldr r3, [r7, #12] + 803ea5a: 681b ldr r3, [r3, #0] + 803ea5c: 2b00 cmp r3, #0 + 803ea5e: d006 beq.n 803ea6e + 803ea60: 4b0a ldr r3, [pc, #40] ; (803ea8c ) + 803ea62: f240 3263 movw r2, #867 ; 0x363 + 803ea66: 490d ldr r1, [pc, #52] ; (803ea9c ) + 803ea68: 480a ldr r0, [pc, #40] ; (803ea94 ) + 803ea6a: f009 fabb bl 8047fe4 /* add total length of second chain to last pbuf total of first chain */ p->tot_len = (u16_t)(p->tot_len + t->tot_len); - 803ea2e: 68fb ldr r3, [r7, #12] - 803ea30: 891a ldrh r2, [r3, #8] - 803ea32: 683b ldr r3, [r7, #0] - 803ea34: 891b ldrh r3, [r3, #8] - 803ea36: 4413 add r3, r2 - 803ea38: b29a uxth r2, r3 - 803ea3a: 68fb ldr r3, [r7, #12] - 803ea3c: 811a strh r2, [r3, #8] + 803ea6e: 68fb ldr r3, [r7, #12] + 803ea70: 891a ldrh r2, [r3, #8] + 803ea72: 683b ldr r3, [r7, #0] + 803ea74: 891b ldrh r3, [r3, #8] + 803ea76: 4413 add r3, r2 + 803ea78: b29a uxth r2, r3 + 803ea7a: 68fb ldr r3, [r7, #12] + 803ea7c: 811a strh r2, [r3, #8] /* chain last pbuf of head (p) with first of tail (t) */ p->next = t; - 803ea3e: 68fb ldr r3, [r7, #12] - 803ea40: 683a ldr r2, [r7, #0] - 803ea42: 601a str r2, [r3, #0] + 803ea7e: 68fb ldr r3, [r7, #12] + 803ea80: 683a ldr r2, [r7, #0] + 803ea82: 601a str r2, [r3, #0] /* p->next now references t, but the caller will drop its reference to t, * so netto there is no change to the reference count of t. */ } - 803ea44: 3710 adds r7, #16 - 803ea46: 46bd mov sp, r7 - 803ea48: bd80 pop {r7, pc} - 803ea4a: bf00 nop - 803ea4c: 0804a730 .word 0x0804a730 - 803ea50: 0804a924 .word 0x0804a924 - 803ea54: 0804a790 .word 0x0804a790 - 803ea58: 0804a95c .word 0x0804a95c - 803ea5c: 0804a98c .word 0x0804a98c - -0803ea60 : + 803ea84: 3710 adds r7, #16 + 803ea86: 46bd mov sp, r7 + 803ea88: bd80 pop {r7, pc} + 803ea8a: bf00 nop + 803ea8c: 0804a770 .word 0x0804a770 + 803ea90: 0804a964 .word 0x0804a964 + 803ea94: 0804a7d0 .word 0x0804a7d0 + 803ea98: 0804a99c .word 0x0804a99c + 803ea9c: 0804a9cc .word 0x0804a9cc + +0803eaa0 : * The ->ref field of the first pbuf of the tail chain is adjusted. * */ void pbuf_chain(struct pbuf *h, struct pbuf *t) { - 803ea60: b580 push {r7, lr} - 803ea62: b082 sub sp, #8 - 803ea64: af00 add r7, sp, #0 - 803ea66: 6078 str r0, [r7, #4] - 803ea68: 6039 str r1, [r7, #0] + 803eaa0: b580 push {r7, lr} + 803eaa2: b082 sub sp, #8 + 803eaa4: af00 add r7, sp, #0 + 803eaa6: 6078 str r0, [r7, #4] + 803eaa8: 6039 str r1, [r7, #0] pbuf_cat(h, t); - 803ea6a: 6839 ldr r1, [r7, #0] - 803ea6c: 6878 ldr r0, [r7, #4] - 803ea6e: f7ff ffa1 bl 803e9b4 + 803eaaa: 6839 ldr r1, [r7, #0] + 803eaac: 6878 ldr r0, [r7, #4] + 803eaae: f7ff ffa1 bl 803e9f4 /* t is now referenced by h */ pbuf_ref(t); - 803ea72: 6838 ldr r0, [r7, #0] - 803ea74: f7ff ff7c bl 803e970 + 803eab2: 6838 ldr r0, [r7, #0] + 803eab4: f7ff ff7c bl 803e9b0 LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t)); } - 803ea78: bf00 nop - 803ea7a: 3708 adds r7, #8 - 803ea7c: 46bd mov sp, r7 - 803ea7e: bd80 pop {r7, pc} + 803eab8: bf00 nop + 803eaba: 3708 adds r7, #8 + 803eabc: 46bd mov sp, r7 + 803eabe: bd80 pop {r7, pc} -0803ea80 : +0803eac0 : * ERR_ARG if one of the pbufs is NULL or p_to is not big * enough to hold p_from */ err_t pbuf_copy(struct pbuf *p_to, const struct pbuf *p_from) { - 803ea80: b580 push {r7, lr} - 803ea82: b086 sub sp, #24 - 803ea84: af00 add r7, sp, #0 - 803ea86: 6078 str r0, [r7, #4] - 803ea88: 6039 str r1, [r7, #0] + 803eac0: b580 push {r7, lr} + 803eac2: b086 sub sp, #24 + 803eac4: af00 add r7, sp, #0 + 803eac6: 6078 str r0, [r7, #4] + 803eac8: 6039 str r1, [r7, #0] size_t offset_to = 0, offset_from = 0, len; - 803ea8a: 2300 movs r3, #0 - 803ea8c: 617b str r3, [r7, #20] - 803ea8e: 2300 movs r3, #0 - 803ea90: 613b str r3, [r7, #16] + 803eaca: 2300 movs r3, #0 + 803eacc: 617b str r3, [r7, #20] + 803eace: 2300 movs r3, #0 + 803ead0: 613b str r3, [r7, #16] LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n", (const void *)p_to, (const void *)p_from)); /* is the target big enough to hold the source? */ LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && - 803ea92: 687b ldr r3, [r7, #4] - 803ea94: 2b00 cmp r3, #0 - 803ea96: d008 beq.n 803eaaa - 803ea98: 683b ldr r3, [r7, #0] - 803ea9a: 2b00 cmp r3, #0 - 803ea9c: d005 beq.n 803eaaa - 803ea9e: 687b ldr r3, [r7, #4] - 803eaa0: 891a ldrh r2, [r3, #8] - 803eaa2: 683b ldr r3, [r7, #0] - 803eaa4: 891b ldrh r3, [r3, #8] - 803eaa6: 429a cmp r2, r3 - 803eaa8: d209 bcs.n 803eabe - 803eaaa: 4b57 ldr r3, [pc, #348] ; (803ec08 ) - 803eaac: f240 32c9 movw r2, #969 ; 0x3c9 - 803eab0: 4956 ldr r1, [pc, #344] ; (803ec0c ) - 803eab2: 4857 ldr r0, [pc, #348] ; (803ec10 ) - 803eab4: f009 fa76 bl 8047fa4 - 803eab8: f06f 030f mvn.w r3, #15 - 803eabc: e09f b.n 803ebfe + 803ead2: 687b ldr r3, [r7, #4] + 803ead4: 2b00 cmp r3, #0 + 803ead6: d008 beq.n 803eaea + 803ead8: 683b ldr r3, [r7, #0] + 803eada: 2b00 cmp r3, #0 + 803eadc: d005 beq.n 803eaea + 803eade: 687b ldr r3, [r7, #4] + 803eae0: 891a ldrh r2, [r3, #8] + 803eae2: 683b ldr r3, [r7, #0] + 803eae4: 891b ldrh r3, [r3, #8] + 803eae6: 429a cmp r2, r3 + 803eae8: d209 bcs.n 803eafe + 803eaea: 4b57 ldr r3, [pc, #348] ; (803ec48 ) + 803eaec: f240 32c9 movw r2, #969 ; 0x3c9 + 803eaf0: 4956 ldr r1, [pc, #344] ; (803ec4c ) + 803eaf2: 4857 ldr r0, [pc, #348] ; (803ec50 ) + 803eaf4: f009 fa76 bl 8047fe4 + 803eaf8: f06f 030f mvn.w r3, #15 + 803eafc: e09f b.n 803ec3e (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;); /* iterate through pbuf chain */ do { /* copy one part of the original chain */ if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { - 803eabe: 687b ldr r3, [r7, #4] - 803eac0: 895b ldrh r3, [r3, #10] - 803eac2: 461a mov r2, r3 - 803eac4: 697b ldr r3, [r7, #20] - 803eac6: 1ad2 subs r2, r2, r3 - 803eac8: 683b ldr r3, [r7, #0] - 803eaca: 895b ldrh r3, [r3, #10] - 803eacc: 4619 mov r1, r3 - 803eace: 693b ldr r3, [r7, #16] - 803ead0: 1acb subs r3, r1, r3 - 803ead2: 429a cmp r2, r3 - 803ead4: d306 bcc.n 803eae4 + 803eafe: 687b ldr r3, [r7, #4] + 803eb00: 895b ldrh r3, [r3, #10] + 803eb02: 461a mov r2, r3 + 803eb04: 697b ldr r3, [r7, #20] + 803eb06: 1ad2 subs r2, r2, r3 + 803eb08: 683b ldr r3, [r7, #0] + 803eb0a: 895b ldrh r3, [r3, #10] + 803eb0c: 4619 mov r1, r3 + 803eb0e: 693b ldr r3, [r7, #16] + 803eb10: 1acb subs r3, r1, r3 + 803eb12: 429a cmp r2, r3 + 803eb14: d306 bcc.n 803eb24 /* complete current p_from fits into current p_to */ len = p_from->len - offset_from; - 803ead6: 683b ldr r3, [r7, #0] - 803ead8: 895b ldrh r3, [r3, #10] - 803eada: 461a mov r2, r3 - 803eadc: 693b ldr r3, [r7, #16] - 803eade: 1ad3 subs r3, r2, r3 - 803eae0: 60fb str r3, [r7, #12] - 803eae2: e005 b.n 803eaf0 + 803eb16: 683b ldr r3, [r7, #0] + 803eb18: 895b ldrh r3, [r3, #10] + 803eb1a: 461a mov r2, r3 + 803eb1c: 693b ldr r3, [r7, #16] + 803eb1e: 1ad3 subs r3, r2, r3 + 803eb20: 60fb str r3, [r7, #12] + 803eb22: e005 b.n 803eb30 } else { /* current p_from does not fit into current p_to */ len = p_to->len - offset_to; - 803eae4: 687b ldr r3, [r7, #4] - 803eae6: 895b ldrh r3, [r3, #10] - 803eae8: 461a mov r2, r3 - 803eaea: 697b ldr r3, [r7, #20] - 803eaec: 1ad3 subs r3, r2, r3 - 803eaee: 60fb str r3, [r7, #12] + 803eb24: 687b ldr r3, [r7, #4] + 803eb26: 895b ldrh r3, [r3, #10] + 803eb28: 461a mov r2, r3 + 803eb2a: 697b ldr r3, [r7, #20] + 803eb2c: 1ad3 subs r3, r2, r3 + 803eb2e: 60fb str r3, [r7, #12] } MEMCPY((u8_t *)p_to->payload + offset_to, (u8_t *)p_from->payload + offset_from, len); - 803eaf0: 687b ldr r3, [r7, #4] - 803eaf2: 685a ldr r2, [r3, #4] - 803eaf4: 697b ldr r3, [r7, #20] - 803eaf6: 18d0 adds r0, r2, r3 - 803eaf8: 683b ldr r3, [r7, #0] - 803eafa: 685a ldr r2, [r3, #4] - 803eafc: 693b ldr r3, [r7, #16] - 803eafe: 4413 add r3, r2 - 803eb00: 68fa ldr r2, [r7, #12] - 803eb02: 4619 mov r1, r3 - 803eb04: f009 f93e bl 8047d84 + 803eb30: 687b ldr r3, [r7, #4] + 803eb32: 685a ldr r2, [r3, #4] + 803eb34: 697b ldr r3, [r7, #20] + 803eb36: 18d0 adds r0, r2, r3 + 803eb38: 683b ldr r3, [r7, #0] + 803eb3a: 685a ldr r2, [r3, #4] + 803eb3c: 693b ldr r3, [r7, #16] + 803eb3e: 4413 add r3, r2 + 803eb40: 68fa ldr r2, [r7, #12] + 803eb42: 4619 mov r1, r3 + 803eb44: f009 f93e bl 8047dc4 offset_to += len; - 803eb08: 697a ldr r2, [r7, #20] - 803eb0a: 68fb ldr r3, [r7, #12] - 803eb0c: 4413 add r3, r2 - 803eb0e: 617b str r3, [r7, #20] + 803eb48: 697a ldr r2, [r7, #20] + 803eb4a: 68fb ldr r3, [r7, #12] + 803eb4c: 4413 add r3, r2 + 803eb4e: 617b str r3, [r7, #20] offset_from += len; - 803eb10: 693a ldr r2, [r7, #16] - 803eb12: 68fb ldr r3, [r7, #12] - 803eb14: 4413 add r3, r2 - 803eb16: 613b str r3, [r7, #16] + 803eb50: 693a ldr r2, [r7, #16] + 803eb52: 68fb ldr r3, [r7, #12] + 803eb54: 4413 add r3, r2 + 803eb56: 613b str r3, [r7, #16] LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len); - 803eb18: 687b ldr r3, [r7, #4] - 803eb1a: 895b ldrh r3, [r3, #10] - 803eb1c: 461a mov r2, r3 - 803eb1e: 697b ldr r3, [r7, #20] - 803eb20: 4293 cmp r3, r2 - 803eb22: d906 bls.n 803eb32 - 803eb24: 4b38 ldr r3, [pc, #224] ; (803ec08 ) - 803eb26: f240 32d9 movw r2, #985 ; 0x3d9 - 803eb2a: 493a ldr r1, [pc, #232] ; (803ec14 ) - 803eb2c: 4838 ldr r0, [pc, #224] ; (803ec10 ) - 803eb2e: f009 fa39 bl 8047fa4 + 803eb58: 687b ldr r3, [r7, #4] + 803eb5a: 895b ldrh r3, [r3, #10] + 803eb5c: 461a mov r2, r3 + 803eb5e: 697b ldr r3, [r7, #20] + 803eb60: 4293 cmp r3, r2 + 803eb62: d906 bls.n 803eb72 + 803eb64: 4b38 ldr r3, [pc, #224] ; (803ec48 ) + 803eb66: f240 32d9 movw r2, #985 ; 0x3d9 + 803eb6a: 493a ldr r1, [pc, #232] ; (803ec54 ) + 803eb6c: 4838 ldr r0, [pc, #224] ; (803ec50 ) + 803eb6e: f009 fa39 bl 8047fe4 LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len); - 803eb32: 683b ldr r3, [r7, #0] - 803eb34: 895b ldrh r3, [r3, #10] - 803eb36: 461a mov r2, r3 - 803eb38: 693b ldr r3, [r7, #16] - 803eb3a: 4293 cmp r3, r2 - 803eb3c: d906 bls.n 803eb4c - 803eb3e: 4b32 ldr r3, [pc, #200] ; (803ec08 ) - 803eb40: f240 32da movw r2, #986 ; 0x3da - 803eb44: 4934 ldr r1, [pc, #208] ; (803ec18 ) - 803eb46: 4832 ldr r0, [pc, #200] ; (803ec10 ) - 803eb48: f009 fa2c bl 8047fa4 + 803eb72: 683b ldr r3, [r7, #0] + 803eb74: 895b ldrh r3, [r3, #10] + 803eb76: 461a mov r2, r3 + 803eb78: 693b ldr r3, [r7, #16] + 803eb7a: 4293 cmp r3, r2 + 803eb7c: d906 bls.n 803eb8c + 803eb7e: 4b32 ldr r3, [pc, #200] ; (803ec48 ) + 803eb80: f240 32da movw r2, #986 ; 0x3da + 803eb84: 4934 ldr r1, [pc, #208] ; (803ec58 ) + 803eb86: 4832 ldr r0, [pc, #200] ; (803ec50 ) + 803eb88: f009 fa2c bl 8047fe4 if (offset_from >= p_from->len) { - 803eb4c: 683b ldr r3, [r7, #0] - 803eb4e: 895b ldrh r3, [r3, #10] - 803eb50: 461a mov r2, r3 - 803eb52: 693b ldr r3, [r7, #16] - 803eb54: 4293 cmp r3, r2 - 803eb56: d304 bcc.n 803eb62 + 803eb8c: 683b ldr r3, [r7, #0] + 803eb8e: 895b ldrh r3, [r3, #10] + 803eb90: 461a mov r2, r3 + 803eb92: 693b ldr r3, [r7, #16] + 803eb94: 4293 cmp r3, r2 + 803eb96: d304 bcc.n 803eba2 /* on to next p_from (if any) */ offset_from = 0; - 803eb58: 2300 movs r3, #0 - 803eb5a: 613b str r3, [r7, #16] + 803eb98: 2300 movs r3, #0 + 803eb9a: 613b str r3, [r7, #16] p_from = p_from->next; - 803eb5c: 683b ldr r3, [r7, #0] - 803eb5e: 681b ldr r3, [r3, #0] - 803eb60: 603b str r3, [r7, #0] + 803eb9c: 683b ldr r3, [r7, #0] + 803eb9e: 681b ldr r3, [r3, #0] + 803eba0: 603b str r3, [r7, #0] } if (offset_to == p_to->len) { - 803eb62: 687b ldr r3, [r7, #4] - 803eb64: 895b ldrh r3, [r3, #10] - 803eb66: 461a mov r2, r3 - 803eb68: 697b ldr r3, [r7, #20] - 803eb6a: 4293 cmp r3, r2 - 803eb6c: d114 bne.n 803eb98 + 803eba2: 687b ldr r3, [r7, #4] + 803eba4: 895b ldrh r3, [r3, #10] + 803eba6: 461a mov r2, r3 + 803eba8: 697b ldr r3, [r7, #20] + 803ebaa: 4293 cmp r3, r2 + 803ebac: d114 bne.n 803ebd8 /* on to next p_to (if any) */ offset_to = 0; - 803eb6e: 2300 movs r3, #0 - 803eb70: 617b str r3, [r7, #20] + 803ebae: 2300 movs r3, #0 + 803ebb0: 617b str r3, [r7, #20] p_to = p_to->next; - 803eb72: 687b ldr r3, [r7, #4] - 803eb74: 681b ldr r3, [r3, #0] - 803eb76: 607b str r3, [r7, #4] + 803ebb2: 687b ldr r3, [r7, #4] + 803ebb4: 681b ldr r3, [r3, #0] + 803ebb6: 607b str r3, [r7, #4] LWIP_ERROR("p_to != NULL", (p_to != NULL) || (p_from == NULL), return ERR_ARG;); - 803eb78: 687b ldr r3, [r7, #4] - 803eb7a: 2b00 cmp r3, #0 - 803eb7c: d10c bne.n 803eb98 - 803eb7e: 683b ldr r3, [r7, #0] - 803eb80: 2b00 cmp r3, #0 - 803eb82: d009 beq.n 803eb98 - 803eb84: 4b20 ldr r3, [pc, #128] ; (803ec08 ) - 803eb86: f44f 7279 mov.w r2, #996 ; 0x3e4 - 803eb8a: 4924 ldr r1, [pc, #144] ; (803ec1c ) - 803eb8c: 4820 ldr r0, [pc, #128] ; (803ec10 ) - 803eb8e: f009 fa09 bl 8047fa4 - 803eb92: f06f 030f mvn.w r3, #15 - 803eb96: e032 b.n 803ebfe + 803ebb8: 687b ldr r3, [r7, #4] + 803ebba: 2b00 cmp r3, #0 + 803ebbc: d10c bne.n 803ebd8 + 803ebbe: 683b ldr r3, [r7, #0] + 803ebc0: 2b00 cmp r3, #0 + 803ebc2: d009 beq.n 803ebd8 + 803ebc4: 4b20 ldr r3, [pc, #128] ; (803ec48 ) + 803ebc6: f44f 7279 mov.w r2, #996 ; 0x3e4 + 803ebca: 4924 ldr r1, [pc, #144] ; (803ec5c ) + 803ebcc: 4820 ldr r0, [pc, #128] ; (803ec50 ) + 803ebce: f009 fa09 bl 8047fe4 + 803ebd2: f06f 030f mvn.w r3, #15 + 803ebd6: e032 b.n 803ec3e } if ((p_from != NULL) && (p_from->len == p_from->tot_len)) { - 803eb98: 683b ldr r3, [r7, #0] - 803eb9a: 2b00 cmp r3, #0 - 803eb9c: d013 beq.n 803ebc6 - 803eb9e: 683b ldr r3, [r7, #0] - 803eba0: 895a ldrh r2, [r3, #10] - 803eba2: 683b ldr r3, [r7, #0] - 803eba4: 891b ldrh r3, [r3, #8] - 803eba6: 429a cmp r2, r3 - 803eba8: d10d bne.n 803ebc6 + 803ebd8: 683b ldr r3, [r7, #0] + 803ebda: 2b00 cmp r3, #0 + 803ebdc: d013 beq.n 803ec06 + 803ebde: 683b ldr r3, [r7, #0] + 803ebe0: 895a ldrh r2, [r3, #10] + 803ebe2: 683b ldr r3, [r7, #0] + 803ebe4: 891b ldrh r3, [r3, #8] + 803ebe6: 429a cmp r2, r3 + 803ebe8: d10d bne.n 803ec06 /* don't copy more than one packet! */ LWIP_ERROR("pbuf_copy() does not allow packet queues!", - 803ebaa: 683b ldr r3, [r7, #0] - 803ebac: 681b ldr r3, [r3, #0] - 803ebae: 2b00 cmp r3, #0 - 803ebb0: d009 beq.n 803ebc6 - 803ebb2: 4b15 ldr r3, [pc, #84] ; (803ec08 ) - 803ebb4: f240 32e9 movw r2, #1001 ; 0x3e9 - 803ebb8: 4919 ldr r1, [pc, #100] ; (803ec20 ) - 803ebba: 4815 ldr r0, [pc, #84] ; (803ec10 ) - 803ebbc: f009 f9f2 bl 8047fa4 - 803ebc0: f06f 0305 mvn.w r3, #5 - 803ebc4: e01b b.n 803ebfe + 803ebea: 683b ldr r3, [r7, #0] + 803ebec: 681b ldr r3, [r3, #0] + 803ebee: 2b00 cmp r3, #0 + 803ebf0: d009 beq.n 803ec06 + 803ebf2: 4b15 ldr r3, [pc, #84] ; (803ec48 ) + 803ebf4: f240 32e9 movw r2, #1001 ; 0x3e9 + 803ebf8: 4919 ldr r1, [pc, #100] ; (803ec60 ) + 803ebfa: 4815 ldr r0, [pc, #84] ; (803ec50 ) + 803ebfc: f009 f9f2 bl 8047fe4 + 803ec00: f06f 0305 mvn.w r3, #5 + 803ec04: e01b b.n 803ec3e (p_from->next == NULL), return ERR_VAL;); } if ((p_to != NULL) && (p_to->len == p_to->tot_len)) { - 803ebc6: 687b ldr r3, [r7, #4] - 803ebc8: 2b00 cmp r3, #0 - 803ebca: d013 beq.n 803ebf4 - 803ebcc: 687b ldr r3, [r7, #4] - 803ebce: 895a ldrh r2, [r3, #10] - 803ebd0: 687b ldr r3, [r7, #4] - 803ebd2: 891b ldrh r3, [r3, #8] - 803ebd4: 429a cmp r2, r3 - 803ebd6: d10d bne.n 803ebf4 + 803ec06: 687b ldr r3, [r7, #4] + 803ec08: 2b00 cmp r3, #0 + 803ec0a: d013 beq.n 803ec34 + 803ec0c: 687b ldr r3, [r7, #4] + 803ec0e: 895a ldrh r2, [r3, #10] + 803ec10: 687b ldr r3, [r7, #4] + 803ec12: 891b ldrh r3, [r3, #8] + 803ec14: 429a cmp r2, r3 + 803ec16: d10d bne.n 803ec34 /* don't copy more than one packet! */ LWIP_ERROR("pbuf_copy() does not allow packet queues!", - 803ebd8: 687b ldr r3, [r7, #4] - 803ebda: 681b ldr r3, [r3, #0] - 803ebdc: 2b00 cmp r3, #0 - 803ebde: d009 beq.n 803ebf4 - 803ebe0: 4b09 ldr r3, [pc, #36] ; (803ec08 ) - 803ebe2: f240 32ee movw r2, #1006 ; 0x3ee - 803ebe6: 490e ldr r1, [pc, #56] ; (803ec20 ) - 803ebe8: 4809 ldr r0, [pc, #36] ; (803ec10 ) - 803ebea: f009 f9db bl 8047fa4 - 803ebee: f06f 0305 mvn.w r3, #5 - 803ebf2: e004 b.n 803ebfe + 803ec18: 687b ldr r3, [r7, #4] + 803ec1a: 681b ldr r3, [r3, #0] + 803ec1c: 2b00 cmp r3, #0 + 803ec1e: d009 beq.n 803ec34 + 803ec20: 4b09 ldr r3, [pc, #36] ; (803ec48 ) + 803ec22: f240 32ee movw r2, #1006 ; 0x3ee + 803ec26: 490e ldr r1, [pc, #56] ; (803ec60 ) + 803ec28: 4809 ldr r0, [pc, #36] ; (803ec50 ) + 803ec2a: f009 f9db bl 8047fe4 + 803ec2e: f06f 0305 mvn.w r3, #5 + 803ec32: e004 b.n 803ec3e (p_to->next == NULL), return ERR_VAL;); } } while (p_from); - 803ebf4: 683b ldr r3, [r7, #0] - 803ebf6: 2b00 cmp r3, #0 - 803ebf8: f47f af61 bne.w 803eabe + 803ec34: 683b ldr r3, [r7, #0] + 803ec36: 2b00 cmp r3, #0 + 803ec38: f47f af61 bne.w 803eafe LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n")); return ERR_OK; - 803ebfc: 2300 movs r3, #0 -} - 803ebfe: 4618 mov r0, r3 - 803ec00: 3718 adds r7, #24 - 803ec02: 46bd mov sp, r7 - 803ec04: bd80 pop {r7, pc} - 803ec06: bf00 nop - 803ec08: 0804a730 .word 0x0804a730 - 803ec0c: 0804a9d8 .word 0x0804a9d8 - 803ec10: 0804a790 .word 0x0804a790 - 803ec14: 0804aa08 .word 0x0804aa08 - 803ec18: 0804aa20 .word 0x0804aa20 - 803ec1c: 0804aa3c .word 0x0804aa3c - 803ec20: 0804aa4c .word 0x0804aa4c - -0803ec24 : + 803ec3c: 2300 movs r3, #0 +} + 803ec3e: 4618 mov r0, r3 + 803ec40: 3718 adds r7, #24 + 803ec42: 46bd mov sp, r7 + 803ec44: bd80 pop {r7, pc} + 803ec46: bf00 nop + 803ec48: 0804a770 .word 0x0804a770 + 803ec4c: 0804aa18 .word 0x0804aa18 + 803ec50: 0804a7d0 .word 0x0804a7d0 + 803ec54: 0804aa48 .word 0x0804aa48 + 803ec58: 0804aa60 .word 0x0804aa60 + 803ec5c: 0804aa7c .word 0x0804aa7c + 803ec60: 0804aa8c .word 0x0804aa8c + +0803ec64 : * @param offset offset into the packet buffer from where to begin copying len bytes * @return the number of bytes copied, or 0 on failure */ u16_t pbuf_copy_partial(const struct pbuf *buf, void *dataptr, u16_t len, u16_t offset) { - 803ec24: b580 push {r7, lr} - 803ec26: b088 sub sp, #32 - 803ec28: af00 add r7, sp, #0 - 803ec2a: 60f8 str r0, [r7, #12] - 803ec2c: 60b9 str r1, [r7, #8] - 803ec2e: 4611 mov r1, r2 - 803ec30: 461a mov r2, r3 - 803ec32: 460b mov r3, r1 - 803ec34: 80fb strh r3, [r7, #6] - 803ec36: 4613 mov r3, r2 - 803ec38: 80bb strh r3, [r7, #4] + 803ec64: b580 push {r7, lr} + 803ec66: b088 sub sp, #32 + 803ec68: af00 add r7, sp, #0 + 803ec6a: 60f8 str r0, [r7, #12] + 803ec6c: 60b9 str r1, [r7, #8] + 803ec6e: 4611 mov r1, r2 + 803ec70: 461a mov r2, r3 + 803ec72: 460b mov r3, r1 + 803ec74: 80fb strh r3, [r7, #6] + 803ec76: 4613 mov r3, r2 + 803ec78: 80bb strh r3, [r7, #4] const struct pbuf *p; u16_t left = 0; - 803ec3a: 2300 movs r3, #0 - 803ec3c: 837b strh r3, [r7, #26] + 803ec7a: 2300 movs r3, #0 + 803ec7c: 837b strh r3, [r7, #26] u16_t buf_copy_len; u16_t copied_total = 0; - 803ec3e: 2300 movs r3, #0 - 803ec40: 82fb strh r3, [r7, #22] + 803ec7e: 2300 movs r3, #0 + 803ec80: 82fb strh r3, [r7, #22] LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); - 803ec42: 68fb ldr r3, [r7, #12] - 803ec44: 2b00 cmp r3, #0 - 803ec46: d108 bne.n 803ec5a - 803ec48: 4b2b ldr r3, [pc, #172] ; (803ecf8 ) - 803ec4a: f240 420a movw r2, #1034 ; 0x40a - 803ec4e: 492b ldr r1, [pc, #172] ; (803ecfc ) - 803ec50: 482b ldr r0, [pc, #172] ; (803ed00 ) - 803ec52: f009 f9a7 bl 8047fa4 - 803ec56: 2300 movs r3, #0 - 803ec58: e04a b.n 803ecf0 + 803ec82: 68fb ldr r3, [r7, #12] + 803ec84: 2b00 cmp r3, #0 + 803ec86: d108 bne.n 803ec9a + 803ec88: 4b2b ldr r3, [pc, #172] ; (803ed38 ) + 803ec8a: f240 420a movw r2, #1034 ; 0x40a + 803ec8e: 492b ldr r1, [pc, #172] ; (803ed3c ) + 803ec90: 482b ldr r0, [pc, #172] ; (803ed40 ) + 803ec92: f009 f9a7 bl 8047fe4 + 803ec96: 2300 movs r3, #0 + 803ec98: e04a b.n 803ed30 LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); - 803ec5a: 68bb ldr r3, [r7, #8] - 803ec5c: 2b00 cmp r3, #0 - 803ec5e: d108 bne.n 803ec72 - 803ec60: 4b25 ldr r3, [pc, #148] ; (803ecf8 ) - 803ec62: f240 420b movw r2, #1035 ; 0x40b - 803ec66: 4927 ldr r1, [pc, #156] ; (803ed04 ) - 803ec68: 4825 ldr r0, [pc, #148] ; (803ed00 ) - 803ec6a: f009 f99b bl 8047fa4 - 803ec6e: 2300 movs r3, #0 - 803ec70: e03e b.n 803ecf0 + 803ec9a: 68bb ldr r3, [r7, #8] + 803ec9c: 2b00 cmp r3, #0 + 803ec9e: d108 bne.n 803ecb2 + 803eca0: 4b25 ldr r3, [pc, #148] ; (803ed38 ) + 803eca2: f240 420b movw r2, #1035 ; 0x40b + 803eca6: 4927 ldr r1, [pc, #156] ; (803ed44 ) + 803eca8: 4825 ldr r0, [pc, #148] ; (803ed40 ) + 803ecaa: f009 f99b bl 8047fe4 + 803ecae: 2300 movs r3, #0 + 803ecb0: e03e b.n 803ed30 /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ for (p = buf; len != 0 && p != NULL; p = p->next) { - 803ec72: 68fb ldr r3, [r7, #12] - 803ec74: 61fb str r3, [r7, #28] - 803ec76: e034 b.n 803ece2 + 803ecb2: 68fb ldr r3, [r7, #12] + 803ecb4: 61fb str r3, [r7, #28] + 803ecb6: e034 b.n 803ed22 if ((offset != 0) && (offset >= p->len)) { - 803ec78: 88bb ldrh r3, [r7, #4] - 803ec7a: 2b00 cmp r3, #0 - 803ec7c: d00a beq.n 803ec94 - 803ec7e: 69fb ldr r3, [r7, #28] - 803ec80: 895b ldrh r3, [r3, #10] - 803ec82: 88ba ldrh r2, [r7, #4] - 803ec84: 429a cmp r2, r3 - 803ec86: d305 bcc.n 803ec94 + 803ecb8: 88bb ldrh r3, [r7, #4] + 803ecba: 2b00 cmp r3, #0 + 803ecbc: d00a beq.n 803ecd4 + 803ecbe: 69fb ldr r3, [r7, #28] + 803ecc0: 895b ldrh r3, [r3, #10] + 803ecc2: 88ba ldrh r2, [r7, #4] + 803ecc4: 429a cmp r2, r3 + 803ecc6: d305 bcc.n 803ecd4 /* don't copy from this buffer -> on to the next */ offset = (u16_t)(offset - p->len); - 803ec88: 69fb ldr r3, [r7, #28] - 803ec8a: 895b ldrh r3, [r3, #10] - 803ec8c: 88ba ldrh r2, [r7, #4] - 803ec8e: 1ad3 subs r3, r2, r3 - 803ec90: 80bb strh r3, [r7, #4] - 803ec92: e023 b.n 803ecdc + 803ecc8: 69fb ldr r3, [r7, #28] + 803ecca: 895b ldrh r3, [r3, #10] + 803eccc: 88ba ldrh r2, [r7, #4] + 803ecce: 1ad3 subs r3, r2, r3 + 803ecd0: 80bb strh r3, [r7, #4] + 803ecd2: e023 b.n 803ed1c } else { /* copy from this buffer. maybe only partially. */ buf_copy_len = (u16_t)(p->len - offset); - 803ec94: 69fb ldr r3, [r7, #28] - 803ec96: 895a ldrh r2, [r3, #10] - 803ec98: 88bb ldrh r3, [r7, #4] - 803ec9a: 1ad3 subs r3, r2, r3 - 803ec9c: 833b strh r3, [r7, #24] + 803ecd4: 69fb ldr r3, [r7, #28] + 803ecd6: 895a ldrh r2, [r3, #10] + 803ecd8: 88bb ldrh r3, [r7, #4] + 803ecda: 1ad3 subs r3, r2, r3 + 803ecdc: 833b strh r3, [r7, #24] if (buf_copy_len > len) { - 803ec9e: 8b3a ldrh r2, [r7, #24] - 803eca0: 88fb ldrh r3, [r7, #6] - 803eca2: 429a cmp r2, r3 - 803eca4: d901 bls.n 803ecaa + 803ecde: 8b3a ldrh r2, [r7, #24] + 803ece0: 88fb ldrh r3, [r7, #6] + 803ece2: 429a cmp r2, r3 + 803ece4: d901 bls.n 803ecea buf_copy_len = len; - 803eca6: 88fb ldrh r3, [r7, #6] - 803eca8: 833b strh r3, [r7, #24] + 803ece6: 88fb ldrh r3, [r7, #6] + 803ece8: 833b strh r3, [r7, #24] } /* copy the necessary parts of the buffer */ MEMCPY(&((char *)dataptr)[left], &((char *)p->payload)[offset], buf_copy_len); - 803ecaa: 8b7b ldrh r3, [r7, #26] - 803ecac: 68ba ldr r2, [r7, #8] - 803ecae: 18d0 adds r0, r2, r3 - 803ecb0: 69fb ldr r3, [r7, #28] - 803ecb2: 685a ldr r2, [r3, #4] - 803ecb4: 88bb ldrh r3, [r7, #4] - 803ecb6: 4413 add r3, r2 - 803ecb8: 8b3a ldrh r2, [r7, #24] - 803ecba: 4619 mov r1, r3 - 803ecbc: f009 f862 bl 8047d84 + 803ecea: 8b7b ldrh r3, [r7, #26] + 803ecec: 68ba ldr r2, [r7, #8] + 803ecee: 18d0 adds r0, r2, r3 + 803ecf0: 69fb ldr r3, [r7, #28] + 803ecf2: 685a ldr r2, [r3, #4] + 803ecf4: 88bb ldrh r3, [r7, #4] + 803ecf6: 4413 add r3, r2 + 803ecf8: 8b3a ldrh r2, [r7, #24] + 803ecfa: 4619 mov r1, r3 + 803ecfc: f009 f862 bl 8047dc4 copied_total = (u16_t)(copied_total + buf_copy_len); - 803ecc0: 8afa ldrh r2, [r7, #22] - 803ecc2: 8b3b ldrh r3, [r7, #24] - 803ecc4: 4413 add r3, r2 - 803ecc6: 82fb strh r3, [r7, #22] + 803ed00: 8afa ldrh r2, [r7, #22] + 803ed02: 8b3b ldrh r3, [r7, #24] + 803ed04: 4413 add r3, r2 + 803ed06: 82fb strh r3, [r7, #22] left = (u16_t)(left + buf_copy_len); - 803ecc8: 8b7a ldrh r2, [r7, #26] - 803ecca: 8b3b ldrh r3, [r7, #24] - 803eccc: 4413 add r3, r2 - 803ecce: 837b strh r3, [r7, #26] + 803ed08: 8b7a ldrh r2, [r7, #26] + 803ed0a: 8b3b ldrh r3, [r7, #24] + 803ed0c: 4413 add r3, r2 + 803ed0e: 837b strh r3, [r7, #26] len = (u16_t)(len - buf_copy_len); - 803ecd0: 88fa ldrh r2, [r7, #6] - 803ecd2: 8b3b ldrh r3, [r7, #24] - 803ecd4: 1ad3 subs r3, r2, r3 - 803ecd6: 80fb strh r3, [r7, #6] + 803ed10: 88fa ldrh r2, [r7, #6] + 803ed12: 8b3b ldrh r3, [r7, #24] + 803ed14: 1ad3 subs r3, r2, r3 + 803ed16: 80fb strh r3, [r7, #6] offset = 0; - 803ecd8: 2300 movs r3, #0 - 803ecda: 80bb strh r3, [r7, #4] + 803ed18: 2300 movs r3, #0 + 803ed1a: 80bb strh r3, [r7, #4] for (p = buf; len != 0 && p != NULL; p = p->next) { - 803ecdc: 69fb ldr r3, [r7, #28] - 803ecde: 681b ldr r3, [r3, #0] - 803ece0: 61fb str r3, [r7, #28] - 803ece2: 88fb ldrh r3, [r7, #6] - 803ece4: 2b00 cmp r3, #0 - 803ece6: d002 beq.n 803ecee - 803ece8: 69fb ldr r3, [r7, #28] - 803ecea: 2b00 cmp r3, #0 - 803ecec: d1c4 bne.n 803ec78 + 803ed1c: 69fb ldr r3, [r7, #28] + 803ed1e: 681b ldr r3, [r3, #0] + 803ed20: 61fb str r3, [r7, #28] + 803ed22: 88fb ldrh r3, [r7, #6] + 803ed24: 2b00 cmp r3, #0 + 803ed26: d002 beq.n 803ed2e + 803ed28: 69fb ldr r3, [r7, #28] + 803ed2a: 2b00 cmp r3, #0 + 803ed2c: d1c4 bne.n 803ecb8 } } return copied_total; - 803ecee: 8afb ldrh r3, [r7, #22] -} - 803ecf0: 4618 mov r0, r3 - 803ecf2: 3720 adds r7, #32 - 803ecf4: 46bd mov sp, r7 - 803ecf6: bd80 pop {r7, pc} - 803ecf8: 0804a730 .word 0x0804a730 - 803ecfc: 0804aa78 .word 0x0804aa78 - 803ed00: 0804a790 .word 0x0804a790 - 803ed04: 0804aa98 .word 0x0804aa98 - -0803ed08 : + 803ed2e: 8afb ldrh r3, [r7, #22] +} + 803ed30: 4618 mov r0, r3 + 803ed32: 3720 adds r7, #32 + 803ed34: 46bd mov sp, r7 + 803ed36: bd80 pop {r7, pc} + 803ed38: 0804a770 .word 0x0804a770 + 803ed3c: 0804aab8 .word 0x0804aab8 + 803ed40: 0804a7d0 .word 0x0804a7d0 + 803ed44: 0804aad8 .word 0x0804aad8 + +0803ed48 : * * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough */ err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) { - 803ed08: b580 push {r7, lr} - 803ed0a: b088 sub sp, #32 - 803ed0c: af00 add r7, sp, #0 - 803ed0e: 60f8 str r0, [r7, #12] - 803ed10: 60b9 str r1, [r7, #8] - 803ed12: 4613 mov r3, r2 - 803ed14: 80fb strh r3, [r7, #6] + 803ed48: b580 push {r7, lr} + 803ed4a: b088 sub sp, #32 + 803ed4c: af00 add r7, sp, #0 + 803ed4e: 60f8 str r0, [r7, #12] + 803ed50: 60b9 str r1, [r7, #8] + 803ed52: 4613 mov r3, r2 + 803ed54: 80fb strh r3, [r7, #6] struct pbuf *p; size_t buf_copy_len; size_t total_copy_len = len; - 803ed16: 88fb ldrh r3, [r7, #6] - 803ed18: 617b str r3, [r7, #20] + 803ed56: 88fb ldrh r3, [r7, #6] + 803ed58: 617b str r3, [r7, #20] size_t copied_total = 0; - 803ed1a: 2300 movs r3, #0 - 803ed1c: 613b str r3, [r7, #16] + 803ed5a: 2300 movs r3, #0 + 803ed5c: 613b str r3, [r7, #16] LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return ERR_ARG;); - 803ed1e: 68fb ldr r3, [r7, #12] - 803ed20: 2b00 cmp r3, #0 - 803ed22: d109 bne.n 803ed38 - 803ed24: 4b3a ldr r3, [pc, #232] ; (803ee10 ) - 803ed26: f240 42b3 movw r2, #1203 ; 0x4b3 - 803ed2a: 493a ldr r1, [pc, #232] ; (803ee14 ) - 803ed2c: 483a ldr r0, [pc, #232] ; (803ee18 ) - 803ed2e: f009 f939 bl 8047fa4 - 803ed32: f06f 030f mvn.w r3, #15 - 803ed36: e067 b.n 803ee08 + 803ed5e: 68fb ldr r3, [r7, #12] + 803ed60: 2b00 cmp r3, #0 + 803ed62: d109 bne.n 803ed78 + 803ed64: 4b3a ldr r3, [pc, #232] ; (803ee50 ) + 803ed66: f240 42b3 movw r2, #1203 ; 0x4b3 + 803ed6a: 493a ldr r1, [pc, #232] ; (803ee54 ) + 803ed6c: 483a ldr r0, [pc, #232] ; (803ee58 ) + 803ed6e: f009 f939 bl 8047fe4 + 803ed72: f06f 030f mvn.w r3, #15 + 803ed76: e067 b.n 803ee48 LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return ERR_ARG;); - 803ed38: 68bb ldr r3, [r7, #8] - 803ed3a: 2b00 cmp r3, #0 - 803ed3c: d109 bne.n 803ed52 - 803ed3e: 4b34 ldr r3, [pc, #208] ; (803ee10 ) - 803ed40: f240 42b4 movw r2, #1204 ; 0x4b4 - 803ed44: 4935 ldr r1, [pc, #212] ; (803ee1c ) - 803ed46: 4834 ldr r0, [pc, #208] ; (803ee18 ) - 803ed48: f009 f92c bl 8047fa4 - 803ed4c: f06f 030f mvn.w r3, #15 - 803ed50: e05a b.n 803ee08 + 803ed78: 68bb ldr r3, [r7, #8] + 803ed7a: 2b00 cmp r3, #0 + 803ed7c: d109 bne.n 803ed92 + 803ed7e: 4b34 ldr r3, [pc, #208] ; (803ee50 ) + 803ed80: f240 42b4 movw r2, #1204 ; 0x4b4 + 803ed84: 4935 ldr r1, [pc, #212] ; (803ee5c ) + 803ed86: 4834 ldr r0, [pc, #208] ; (803ee58 ) + 803ed88: f009 f92c bl 8047fe4 + 803ed8c: f06f 030f mvn.w r3, #15 + 803ed90: e05a b.n 803ee48 LWIP_ERROR("pbuf_take: buf not large enough", (buf->tot_len >= len), return ERR_MEM;); - 803ed52: 68fb ldr r3, [r7, #12] - 803ed54: 891b ldrh r3, [r3, #8] - 803ed56: 88fa ldrh r2, [r7, #6] - 803ed58: 429a cmp r2, r3 - 803ed5a: d909 bls.n 803ed70 - 803ed5c: 4b2c ldr r3, [pc, #176] ; (803ee10 ) - 803ed5e: f240 42b5 movw r2, #1205 ; 0x4b5 - 803ed62: 492f ldr r1, [pc, #188] ; (803ee20 ) - 803ed64: 482c ldr r0, [pc, #176] ; (803ee18 ) - 803ed66: f009 f91d bl 8047fa4 - 803ed6a: f04f 33ff mov.w r3, #4294967295 - 803ed6e: e04b b.n 803ee08 + 803ed92: 68fb ldr r3, [r7, #12] + 803ed94: 891b ldrh r3, [r3, #8] + 803ed96: 88fa ldrh r2, [r7, #6] + 803ed98: 429a cmp r2, r3 + 803ed9a: d909 bls.n 803edb0 + 803ed9c: 4b2c ldr r3, [pc, #176] ; (803ee50 ) + 803ed9e: f240 42b5 movw r2, #1205 ; 0x4b5 + 803eda2: 492f ldr r1, [pc, #188] ; (803ee60 ) + 803eda4: 482c ldr r0, [pc, #176] ; (803ee58 ) + 803eda6: f009 f91d bl 8047fe4 + 803edaa: f04f 33ff mov.w r3, #4294967295 + 803edae: e04b b.n 803ee48 if ((buf == NULL) || (dataptr == NULL) || (buf->tot_len < len)) { - 803ed70: 68fb ldr r3, [r7, #12] - 803ed72: 2b00 cmp r3, #0 - 803ed74: d007 beq.n 803ed86 - 803ed76: 68bb ldr r3, [r7, #8] - 803ed78: 2b00 cmp r3, #0 - 803ed7a: d004 beq.n 803ed86 - 803ed7c: 68fb ldr r3, [r7, #12] - 803ed7e: 891b ldrh r3, [r3, #8] - 803ed80: 88fa ldrh r2, [r7, #6] - 803ed82: 429a cmp r2, r3 - 803ed84: d902 bls.n 803ed8c + 803edb0: 68fb ldr r3, [r7, #12] + 803edb2: 2b00 cmp r3, #0 + 803edb4: d007 beq.n 803edc6 + 803edb6: 68bb ldr r3, [r7, #8] + 803edb8: 2b00 cmp r3, #0 + 803edba: d004 beq.n 803edc6 + 803edbc: 68fb ldr r3, [r7, #12] + 803edbe: 891b ldrh r3, [r3, #8] + 803edc0: 88fa ldrh r2, [r7, #6] + 803edc2: 429a cmp r2, r3 + 803edc4: d902 bls.n 803edcc return ERR_ARG; - 803ed86: f06f 030f mvn.w r3, #15 - 803ed8a: e03d b.n 803ee08 + 803edc6: f06f 030f mvn.w r3, #15 + 803edca: e03d b.n 803ee48 } /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ for (p = buf; total_copy_len != 0; p = p->next) { - 803ed8c: 68fb ldr r3, [r7, #12] - 803ed8e: 61fb str r3, [r7, #28] - 803ed90: e028 b.n 803ede4 + 803edcc: 68fb ldr r3, [r7, #12] + 803edce: 61fb str r3, [r7, #28] + 803edd0: e028 b.n 803ee24 LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL); - 803ed92: 69fb ldr r3, [r7, #28] - 803ed94: 2b00 cmp r3, #0 - 803ed96: d106 bne.n 803eda6 - 803ed98: 4b1d ldr r3, [pc, #116] ; (803ee10 ) - 803ed9a: f240 42bd movw r2, #1213 ; 0x4bd - 803ed9e: 4921 ldr r1, [pc, #132] ; (803ee24 ) - 803eda0: 481d ldr r0, [pc, #116] ; (803ee18 ) - 803eda2: f009 f8ff bl 8047fa4 + 803edd2: 69fb ldr r3, [r7, #28] + 803edd4: 2b00 cmp r3, #0 + 803edd6: d106 bne.n 803ede6 + 803edd8: 4b1d ldr r3, [pc, #116] ; (803ee50 ) + 803edda: f240 42bd movw r2, #1213 ; 0x4bd + 803edde: 4921 ldr r1, [pc, #132] ; (803ee64 ) + 803ede0: 481d ldr r0, [pc, #116] ; (803ee58 ) + 803ede2: f009 f8ff bl 8047fe4 buf_copy_len = total_copy_len; - 803eda6: 697b ldr r3, [r7, #20] - 803eda8: 61bb str r3, [r7, #24] + 803ede6: 697b ldr r3, [r7, #20] + 803ede8: 61bb str r3, [r7, #24] if (buf_copy_len > p->len) { - 803edaa: 69fb ldr r3, [r7, #28] - 803edac: 895b ldrh r3, [r3, #10] - 803edae: 461a mov r2, r3 - 803edb0: 69bb ldr r3, [r7, #24] - 803edb2: 4293 cmp r3, r2 - 803edb4: d902 bls.n 803edbc + 803edea: 69fb ldr r3, [r7, #28] + 803edec: 895b ldrh r3, [r3, #10] + 803edee: 461a mov r2, r3 + 803edf0: 69bb ldr r3, [r7, #24] + 803edf2: 4293 cmp r3, r2 + 803edf4: d902 bls.n 803edfc /* this pbuf cannot hold all remaining data */ buf_copy_len = p->len; - 803edb6: 69fb ldr r3, [r7, #28] - 803edb8: 895b ldrh r3, [r3, #10] - 803edba: 61bb str r3, [r7, #24] + 803edf6: 69fb ldr r3, [r7, #28] + 803edf8: 895b ldrh r3, [r3, #10] + 803edfa: 61bb str r3, [r7, #24] } /* copy the necessary parts of the buffer */ MEMCPY(p->payload, &((const char *)dataptr)[copied_total], buf_copy_len); - 803edbc: 69fb ldr r3, [r7, #28] - 803edbe: 6858 ldr r0, [r3, #4] - 803edc0: 68ba ldr r2, [r7, #8] - 803edc2: 693b ldr r3, [r7, #16] - 803edc4: 4413 add r3, r2 - 803edc6: 69ba ldr r2, [r7, #24] - 803edc8: 4619 mov r1, r3 - 803edca: f008 ffdb bl 8047d84 + 803edfc: 69fb ldr r3, [r7, #28] + 803edfe: 6858 ldr r0, [r3, #4] + 803ee00: 68ba ldr r2, [r7, #8] + 803ee02: 693b ldr r3, [r7, #16] + 803ee04: 4413 add r3, r2 + 803ee06: 69ba ldr r2, [r7, #24] + 803ee08: 4619 mov r1, r3 + 803ee0a: f008 ffdb bl 8047dc4 total_copy_len -= buf_copy_len; - 803edce: 697a ldr r2, [r7, #20] - 803edd0: 69bb ldr r3, [r7, #24] - 803edd2: 1ad3 subs r3, r2, r3 - 803edd4: 617b str r3, [r7, #20] + 803ee0e: 697a ldr r2, [r7, #20] + 803ee10: 69bb ldr r3, [r7, #24] + 803ee12: 1ad3 subs r3, r2, r3 + 803ee14: 617b str r3, [r7, #20] copied_total += buf_copy_len; - 803edd6: 693a ldr r2, [r7, #16] - 803edd8: 69bb ldr r3, [r7, #24] - 803edda: 4413 add r3, r2 - 803eddc: 613b str r3, [r7, #16] + 803ee16: 693a ldr r2, [r7, #16] + 803ee18: 69bb ldr r3, [r7, #24] + 803ee1a: 4413 add r3, r2 + 803ee1c: 613b str r3, [r7, #16] for (p = buf; total_copy_len != 0; p = p->next) { - 803edde: 69fb ldr r3, [r7, #28] - 803ede0: 681b ldr r3, [r3, #0] - 803ede2: 61fb str r3, [r7, #28] - 803ede4: 697b ldr r3, [r7, #20] - 803ede6: 2b00 cmp r3, #0 - 803ede8: d1d3 bne.n 803ed92 + 803ee1e: 69fb ldr r3, [r7, #28] + 803ee20: 681b ldr r3, [r3, #0] + 803ee22: 61fb str r3, [r7, #28] + 803ee24: 697b ldr r3, [r7, #20] + 803ee26: 2b00 cmp r3, #0 + 803ee28: d1d3 bne.n 803edd2 } LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len); - 803edea: 697b ldr r3, [r7, #20] - 803edec: 2b00 cmp r3, #0 - 803edee: d103 bne.n 803edf8 - 803edf0: 88fb ldrh r3, [r7, #6] - 803edf2: 693a ldr r2, [r7, #16] - 803edf4: 429a cmp r2, r3 - 803edf6: d006 beq.n 803ee06 - 803edf8: 4b05 ldr r3, [pc, #20] ; (803ee10 ) - 803edfa: f44f 6299 mov.w r2, #1224 ; 0x4c8 - 803edfe: 490a ldr r1, [pc, #40] ; (803ee28 ) - 803ee00: 4805 ldr r0, [pc, #20] ; (803ee18 ) - 803ee02: f009 f8cf bl 8047fa4 + 803ee2a: 697b ldr r3, [r7, #20] + 803ee2c: 2b00 cmp r3, #0 + 803ee2e: d103 bne.n 803ee38 + 803ee30: 88fb ldrh r3, [r7, #6] + 803ee32: 693a ldr r2, [r7, #16] + 803ee34: 429a cmp r2, r3 + 803ee36: d006 beq.n 803ee46 + 803ee38: 4b05 ldr r3, [pc, #20] ; (803ee50 ) + 803ee3a: f44f 6299 mov.w r2, #1224 ; 0x4c8 + 803ee3e: 490a ldr r1, [pc, #40] ; (803ee68 ) + 803ee40: 4805 ldr r0, [pc, #20] ; (803ee58 ) + 803ee42: f009 f8cf bl 8047fe4 return ERR_OK; - 803ee06: 2300 movs r3, #0 -} - 803ee08: 4618 mov r0, r3 - 803ee0a: 3720 adds r7, #32 - 803ee0c: 46bd mov sp, r7 - 803ee0e: bd80 pop {r7, pc} - 803ee10: 0804a730 .word 0x0804a730 - 803ee14: 0804ab08 .word 0x0804ab08 - 803ee18: 0804a790 .word 0x0804a790 - 803ee1c: 0804ab20 .word 0x0804ab20 - 803ee20: 0804ab3c .word 0x0804ab3c - 803ee24: 0804ab5c .word 0x0804ab5c - 803ee28: 0804ab74 .word 0x0804ab74 - -0803ee2c : + 803ee46: 2300 movs r3, #0 +} + 803ee48: 4618 mov r0, r3 + 803ee4a: 3720 adds r7, #32 + 803ee4c: 46bd mov sp, r7 + 803ee4e: bd80 pop {r7, pc} + 803ee50: 0804a770 .word 0x0804a770 + 803ee54: 0804ab48 .word 0x0804ab48 + 803ee58: 0804a7d0 .word 0x0804a7d0 + 803ee5c: 0804ab60 .word 0x0804ab60 + 803ee60: 0804ab7c .word 0x0804ab7c + 803ee64: 0804ab9c .word 0x0804ab9c + 803ee68: 0804abb4 .word 0x0804abb4 + +0803ee6c : * * @return a new pbuf or NULL if allocation fails */ struct pbuf * pbuf_clone(pbuf_layer layer, pbuf_type type, struct pbuf *p) { - 803ee2c: b580 push {r7, lr} - 803ee2e: b084 sub sp, #16 - 803ee30: af00 add r7, sp, #0 - 803ee32: 4603 mov r3, r0 - 803ee34: 603a str r2, [r7, #0] - 803ee36: 71fb strb r3, [r7, #7] - 803ee38: 460b mov r3, r1 - 803ee3a: 80bb strh r3, [r7, #4] + 803ee6c: b580 push {r7, lr} + 803ee6e: b084 sub sp, #16 + 803ee70: af00 add r7, sp, #0 + 803ee72: 4603 mov r3, r0 + 803ee74: 603a str r2, [r7, #0] + 803ee76: 71fb strb r3, [r7, #7] + 803ee78: 460b mov r3, r1 + 803ee7a: 80bb strh r3, [r7, #4] struct pbuf *q; err_t err; q = pbuf_alloc(layer, p->tot_len, type); - 803ee3c: 683b ldr r3, [r7, #0] - 803ee3e: 8919 ldrh r1, [r3, #8] - 803ee40: 88ba ldrh r2, [r7, #4] - 803ee42: 79fb ldrb r3, [r7, #7] - 803ee44: 4618 mov r0, r3 - 803ee46: f7ff fa0f bl 803e268 - 803ee4a: 60f8 str r0, [r7, #12] + 803ee7c: 683b ldr r3, [r7, #0] + 803ee7e: 8919 ldrh r1, [r3, #8] + 803ee80: 88ba ldrh r2, [r7, #4] + 803ee82: 79fb ldrb r3, [r7, #7] + 803ee84: 4618 mov r0, r3 + 803ee86: f7ff fa0f bl 803e2a8 + 803ee8a: 60f8 str r0, [r7, #12] if (q == NULL) { - 803ee4c: 68fb ldr r3, [r7, #12] - 803ee4e: 2b00 cmp r3, #0 - 803ee50: d101 bne.n 803ee56 + 803ee8c: 68fb ldr r3, [r7, #12] + 803ee8e: 2b00 cmp r3, #0 + 803ee90: d101 bne.n 803ee96 return NULL; - 803ee52: 2300 movs r3, #0 - 803ee54: e011 b.n 803ee7a + 803ee92: 2300 movs r3, #0 + 803ee94: e011 b.n 803eeba } err = pbuf_copy(q, p); - 803ee56: 6839 ldr r1, [r7, #0] - 803ee58: 68f8 ldr r0, [r7, #12] - 803ee5a: f7ff fe11 bl 803ea80 - 803ee5e: 4603 mov r3, r0 - 803ee60: 72fb strb r3, [r7, #11] + 803ee96: 6839 ldr r1, [r7, #0] + 803ee98: 68f8 ldr r0, [r7, #12] + 803ee9a: f7ff fe11 bl 803eac0 + 803ee9e: 4603 mov r3, r0 + 803eea0: 72fb strb r3, [r7, #11] LWIP_UNUSED_ARG(err); /* in case of LWIP_NOASSERT */ LWIP_ASSERT("pbuf_copy failed", err == ERR_OK); - 803ee62: f997 300b ldrsb.w r3, [r7, #11] - 803ee66: 2b00 cmp r3, #0 - 803ee68: d006 beq.n 803ee78 - 803ee6a: 4b06 ldr r3, [pc, #24] ; (803ee84 ) - 803ee6c: f240 5224 movw r2, #1316 ; 0x524 - 803ee70: 4905 ldr r1, [pc, #20] ; (803ee88 ) - 803ee72: 4806 ldr r0, [pc, #24] ; (803ee8c ) - 803ee74: f009 f896 bl 8047fa4 + 803eea2: f997 300b ldrsb.w r3, [r7, #11] + 803eea6: 2b00 cmp r3, #0 + 803eea8: d006 beq.n 803eeb8 + 803eeaa: 4b06 ldr r3, [pc, #24] ; (803eec4 ) + 803eeac: f240 5224 movw r2, #1316 ; 0x524 + 803eeb0: 4905 ldr r1, [pc, #20] ; (803eec8 ) + 803eeb2: 4806 ldr r0, [pc, #24] ; (803eecc ) + 803eeb4: f009 f896 bl 8047fe4 return q; - 803ee78: 68fb ldr r3, [r7, #12] -} - 803ee7a: 4618 mov r0, r3 - 803ee7c: 3710 adds r7, #16 - 803ee7e: 46bd mov sp, r7 - 803ee80: bd80 pop {r7, pc} - 803ee82: bf00 nop - 803ee84: 0804a730 .word 0x0804a730 - 803ee88: 0804aba4 .word 0x0804aba4 - 803ee8c: 0804a790 .word 0x0804a790 - -0803ee90 : + 803eeb8: 68fb ldr r3, [r7, #12] +} + 803eeba: 4618 mov r0, r3 + 803eebc: 3710 adds r7, #16 + 803eebe: 46bd mov sp, r7 + 803eec0: bd80 pop {r7, pc} + 803eec2: bf00 nop + 803eec4: 0804a770 .word 0x0804a770 + 803eec8: 0804abe4 .word 0x0804abe4 + 803eecc: 0804a7d0 .word 0x0804a7d0 + +0803eed0 : /** * Initialize this module. */ void tcp_init(void) { - 803ee90: b580 push {r7, lr} - 803ee92: af00 add r7, sp, #0 + 803eed0: b580 push {r7, lr} + 803eed2: af00 add r7, sp, #0 #ifdef LWIP_RAND tcp_port = TCP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND()); - 803ee94: f009 f89e bl 8047fd4 - 803ee98: 4603 mov r3, r0 - 803ee9a: b29b uxth r3, r3 - 803ee9c: f3c3 030d ubfx r3, r3, #0, #14 - 803eea0: b29b uxth r3, r3 - 803eea2: f5a3 4380 sub.w r3, r3, #16384 ; 0x4000 - 803eea6: b29a uxth r2, r3 - 803eea8: 4b01 ldr r3, [pc, #4] ; (803eeb0 ) - 803eeaa: 801a strh r2, [r3, #0] + 803eed4: f009 f89e bl 8048014 + 803eed8: 4603 mov r3, r0 + 803eeda: b29b uxth r3, r3 + 803eedc: f3c3 030d ubfx r3, r3, #0, #14 + 803eee0: b29b uxth r3, r3 + 803eee2: f5a3 4380 sub.w r3, r3, #16384 ; 0x4000 + 803eee6: b29a uxth r2, r3 + 803eee8: 4b01 ldr r3, [pc, #4] ; (803eef0 ) + 803eeea: 801a strh r2, [r3, #0] #endif /* LWIP_RAND */ } - 803eeac: bf00 nop - 803eeae: bd80 pop {r7, pc} - 803eeb0: 2400013c .word 0x2400013c + 803eeec: bf00 nop + 803eeee: bd80 pop {r7, pc} + 803eef0: 2400013c .word 0x2400013c -0803eeb4 : +0803eef4 : /** Free a tcp pcb */ void tcp_free(struct tcp_pcb *pcb) { - 803eeb4: b580 push {r7, lr} - 803eeb6: b082 sub sp, #8 - 803eeb8: af00 add r7, sp, #0 - 803eeba: 6078 str r0, [r7, #4] + 803eef4: b580 push {r7, lr} + 803eef6: b082 sub sp, #8 + 803eef8: af00 add r7, sp, #0 + 803eefa: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_free: LISTEN", pcb->state != LISTEN); - 803eebc: 687b ldr r3, [r7, #4] - 803eebe: 7d1b ldrb r3, [r3, #20] - 803eec0: 2b01 cmp r3, #1 - 803eec2: d105 bne.n 803eed0 - 803eec4: 4b06 ldr r3, [pc, #24] ; (803eee0 ) - 803eec6: 22d4 movs r2, #212 ; 0xd4 - 803eec8: 4906 ldr r1, [pc, #24] ; (803eee4 ) - 803eeca: 4807 ldr r0, [pc, #28] ; (803eee8 ) - 803eecc: f009 f86a bl 8047fa4 + 803eefc: 687b ldr r3, [r7, #4] + 803eefe: 7d1b ldrb r3, [r3, #20] + 803ef00: 2b01 cmp r3, #1 + 803ef02: d105 bne.n 803ef10 + 803ef04: 4b06 ldr r3, [pc, #24] ; (803ef20 ) + 803ef06: 22d4 movs r2, #212 ; 0xd4 + 803ef08: 4906 ldr r1, [pc, #24] ; (803ef24 ) + 803ef0a: 4807 ldr r0, [pc, #28] ; (803ef28 ) + 803ef0c: f009 f86a bl 8047fe4 #if LWIP_TCP_PCB_NUM_EXT_ARGS tcp_ext_arg_invoke_callbacks_destroyed(pcb->ext_args); #endif memp_free(MEMP_TCP_PCB, pcb); - 803eed0: 6879 ldr r1, [r7, #4] - 803eed2: 2001 movs r0, #1 - 803eed4: f7fe fe1a bl 803db0c + 803ef10: 6879 ldr r1, [r7, #4] + 803ef12: 2001 movs r0, #1 + 803ef14: f7fe fe1a bl 803db4c } - 803eed8: bf00 nop - 803eeda: 3708 adds r7, #8 - 803eedc: 46bd mov sp, r7 - 803eede: bd80 pop {r7, pc} - 803eee0: 0804ac30 .word 0x0804ac30 - 803eee4: 0804ac60 .word 0x0804ac60 - 803eee8: 0804ac74 .word 0x0804ac74 + 803ef18: bf00 nop + 803ef1a: 3708 adds r7, #8 + 803ef1c: 46bd mov sp, r7 + 803ef1e: bd80 pop {r7, pc} + 803ef20: 0804ac70 .word 0x0804ac70 + 803ef24: 0804aca0 .word 0x0804aca0 + 803ef28: 0804acb4 .word 0x0804acb4 -0803eeec : +0803ef2c : /** Free a tcp listen pcb */ static void tcp_free_listen(struct tcp_pcb *pcb) { - 803eeec: b580 push {r7, lr} - 803eeee: b082 sub sp, #8 - 803eef0: af00 add r7, sp, #0 - 803eef2: 6078 str r0, [r7, #4] + 803ef2c: b580 push {r7, lr} + 803ef2e: b082 sub sp, #8 + 803ef30: af00 add r7, sp, #0 + 803ef32: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_free_listen: !LISTEN", pcb->state != LISTEN); - 803eef4: 687b ldr r3, [r7, #4] - 803eef6: 7d1b ldrb r3, [r3, #20] - 803eef8: 2b01 cmp r3, #1 - 803eefa: d105 bne.n 803ef08 - 803eefc: 4b06 ldr r3, [pc, #24] ; (803ef18 ) - 803eefe: 22df movs r2, #223 ; 0xdf - 803ef00: 4906 ldr r1, [pc, #24] ; (803ef1c ) - 803ef02: 4807 ldr r0, [pc, #28] ; (803ef20 ) - 803ef04: f009 f84e bl 8047fa4 + 803ef34: 687b ldr r3, [r7, #4] + 803ef36: 7d1b ldrb r3, [r3, #20] + 803ef38: 2b01 cmp r3, #1 + 803ef3a: d105 bne.n 803ef48 + 803ef3c: 4b06 ldr r3, [pc, #24] ; (803ef58 ) + 803ef3e: 22df movs r2, #223 ; 0xdf + 803ef40: 4906 ldr r1, [pc, #24] ; (803ef5c ) + 803ef42: 4807 ldr r0, [pc, #28] ; (803ef60 ) + 803ef44: f009 f84e bl 8047fe4 #if LWIP_TCP_PCB_NUM_EXT_ARGS tcp_ext_arg_invoke_callbacks_destroyed(pcb->ext_args); #endif memp_free(MEMP_TCP_PCB_LISTEN, pcb); - 803ef08: 6879 ldr r1, [r7, #4] - 803ef0a: 2002 movs r0, #2 - 803ef0c: f7fe fdfe bl 803db0c -} - 803ef10: bf00 nop - 803ef12: 3708 adds r7, #8 - 803ef14: 46bd mov sp, r7 - 803ef16: bd80 pop {r7, pc} - 803ef18: 0804ac30 .word 0x0804ac30 - 803ef1c: 0804ac9c .word 0x0804ac9c - 803ef20: 0804ac74 .word 0x0804ac74 - -0803ef24 : + 803ef48: 6879 ldr r1, [r7, #4] + 803ef4a: 2002 movs r0, #2 + 803ef4c: f7fe fdfe bl 803db4c +} + 803ef50: bf00 nop + 803ef52: 3708 adds r7, #8 + 803ef54: 46bd mov sp, r7 + 803ef56: bd80 pop {r7, pc} + 803ef58: 0804ac70 .word 0x0804ac70 + 803ef5c: 0804acdc .word 0x0804acdc + 803ef60: 0804acb4 .word 0x0804acb4 + +0803ef64 : /** * Called periodically to dispatch TCP timers. */ void tcp_tmr(void) { - 803ef24: b580 push {r7, lr} - 803ef26: af00 add r7, sp, #0 + 803ef64: b580 push {r7, lr} + 803ef66: af00 add r7, sp, #0 /* Call tcp_fasttmr() every 250 ms */ tcp_fasttmr(); - 803ef28: f000 fea2 bl 803fc70 + 803ef68: f000 fea2 bl 803fcb0 if (++tcp_timer & 1) { - 803ef2c: 4b07 ldr r3, [pc, #28] ; (803ef4c ) - 803ef2e: 781b ldrb r3, [r3, #0] - 803ef30: 3301 adds r3, #1 - 803ef32: b2da uxtb r2, r3 - 803ef34: 4b05 ldr r3, [pc, #20] ; (803ef4c ) - 803ef36: 701a strb r2, [r3, #0] - 803ef38: 4b04 ldr r3, [pc, #16] ; (803ef4c ) - 803ef3a: 781b ldrb r3, [r3, #0] - 803ef3c: f003 0301 and.w r3, r3, #1 - 803ef40: 2b00 cmp r3, #0 - 803ef42: d001 beq.n 803ef48 + 803ef6c: 4b07 ldr r3, [pc, #28] ; (803ef8c ) + 803ef6e: 781b ldrb r3, [r3, #0] + 803ef70: 3301 adds r3, #1 + 803ef72: b2da uxtb r2, r3 + 803ef74: 4b05 ldr r3, [pc, #20] ; (803ef8c ) + 803ef76: 701a strb r2, [r3, #0] + 803ef78: 4b04 ldr r3, [pc, #16] ; (803ef8c ) + 803ef7a: 781b ldrb r3, [r3, #0] + 803ef7c: f003 0301 and.w r3, r3, #1 + 803ef80: 2b00 cmp r3, #0 + 803ef82: d001 beq.n 803ef88 /* Call tcp_slowtmr() every 500 ms, i.e., every other timer tcp_tmr() is called. */ tcp_slowtmr(); - 803ef44: f000 fb54 bl 803f5f0 + 803ef84: f000 fb54 bl 803f630 } } - 803ef48: bf00 nop - 803ef4a: bd80 pop {r7, pc} - 803ef4c: 2400eafd .word 0x2400eafd + 803ef88: bf00 nop + 803ef8a: bd80 pop {r7, pc} + 803ef8c: 2400eafd .word 0x2400eafd -0803ef50 : +0803ef90 : /** Called when a listen pcb is closed. Iterates one pcb list and removes the * closed listener pcb from pcb->listener if matching. */ static void tcp_remove_listener(struct tcp_pcb *list, struct tcp_pcb_listen *lpcb) { - 803ef50: b580 push {r7, lr} - 803ef52: b084 sub sp, #16 - 803ef54: af00 add r7, sp, #0 - 803ef56: 6078 str r0, [r7, #4] - 803ef58: 6039 str r1, [r7, #0] + 803ef90: b580 push {r7, lr} + 803ef92: b084 sub sp, #16 + 803ef94: af00 add r7, sp, #0 + 803ef96: 6078 str r0, [r7, #4] + 803ef98: 6039 str r1, [r7, #0] struct tcp_pcb *pcb; LWIP_ASSERT("tcp_remove_listener: invalid listener", lpcb != NULL); - 803ef5a: 683b ldr r3, [r7, #0] - 803ef5c: 2b00 cmp r3, #0 - 803ef5e: d105 bne.n 803ef6c - 803ef60: 4b0d ldr r3, [pc, #52] ; (803ef98 ) - 803ef62: 22ff movs r2, #255 ; 0xff - 803ef64: 490d ldr r1, [pc, #52] ; (803ef9c ) - 803ef66: 480e ldr r0, [pc, #56] ; (803efa0 ) - 803ef68: f009 f81c bl 8047fa4 + 803ef9a: 683b ldr r3, [r7, #0] + 803ef9c: 2b00 cmp r3, #0 + 803ef9e: d105 bne.n 803efac + 803efa0: 4b0d ldr r3, [pc, #52] ; (803efd8 ) + 803efa2: 22ff movs r2, #255 ; 0xff + 803efa4: 490d ldr r1, [pc, #52] ; (803efdc ) + 803efa6: 480e ldr r0, [pc, #56] ; (803efe0 ) + 803efa8: f009 f81c bl 8047fe4 for (pcb = list; pcb != NULL; pcb = pcb->next) { - 803ef6c: 687b ldr r3, [r7, #4] - 803ef6e: 60fb str r3, [r7, #12] - 803ef70: e00a b.n 803ef88 + 803efac: 687b ldr r3, [r7, #4] + 803efae: 60fb str r3, [r7, #12] + 803efb0: e00a b.n 803efc8 if (pcb->listener == lpcb) { - 803ef72: 68fb ldr r3, [r7, #12] - 803ef74: 6fdb ldr r3, [r3, #124] ; 0x7c - 803ef76: 683a ldr r2, [r7, #0] - 803ef78: 429a cmp r2, r3 - 803ef7a: d102 bne.n 803ef82 + 803efb2: 68fb ldr r3, [r7, #12] + 803efb4: 6fdb ldr r3, [r3, #124] ; 0x7c + 803efb6: 683a ldr r2, [r7, #0] + 803efb8: 429a cmp r2, r3 + 803efba: d102 bne.n 803efc2 pcb->listener = NULL; - 803ef7c: 68fb ldr r3, [r7, #12] - 803ef7e: 2200 movs r2, #0 - 803ef80: 67da str r2, [r3, #124] ; 0x7c + 803efbc: 68fb ldr r3, [r7, #12] + 803efbe: 2200 movs r2, #0 + 803efc0: 67da str r2, [r3, #124] ; 0x7c for (pcb = list; pcb != NULL; pcb = pcb->next) { - 803ef82: 68fb ldr r3, [r7, #12] - 803ef84: 68db ldr r3, [r3, #12] - 803ef86: 60fb str r3, [r7, #12] - 803ef88: 68fb ldr r3, [r7, #12] - 803ef8a: 2b00 cmp r3, #0 - 803ef8c: d1f1 bne.n 803ef72 + 803efc2: 68fb ldr r3, [r7, #12] + 803efc4: 68db ldr r3, [r3, #12] + 803efc6: 60fb str r3, [r7, #12] + 803efc8: 68fb ldr r3, [r7, #12] + 803efca: 2b00 cmp r3, #0 + 803efcc: d1f1 bne.n 803efb2 } } } - 803ef8e: bf00 nop - 803ef90: bf00 nop - 803ef92: 3710 adds r7, #16 - 803ef94: 46bd mov sp, r7 - 803ef96: bd80 pop {r7, pc} - 803ef98: 0804ac30 .word 0x0804ac30 - 803ef9c: 0804acb8 .word 0x0804acb8 - 803efa0: 0804ac74 .word 0x0804ac74 + 803efce: bf00 nop + 803efd0: bf00 nop + 803efd2: 3710 adds r7, #16 + 803efd4: 46bd mov sp, r7 + 803efd6: bd80 pop {r7, pc} + 803efd8: 0804ac70 .word 0x0804ac70 + 803efdc: 0804acf8 .word 0x0804acf8 + 803efe0: 0804acb4 .word 0x0804acb4 -0803efa4 : +0803efe4 : /** Called when a listen pcb is closed. Iterates all pcb lists and removes the * closed listener pcb from pcb->listener if matching. */ static void tcp_listen_closed(struct tcp_pcb *pcb) { - 803efa4: b580 push {r7, lr} - 803efa6: b084 sub sp, #16 - 803efa8: af00 add r7, sp, #0 - 803efaa: 6078 str r0, [r7, #4] + 803efe4: b580 push {r7, lr} + 803efe6: b084 sub sp, #16 + 803efe8: af00 add r7, sp, #0 + 803efea: 6078 str r0, [r7, #4] #if LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG size_t i; LWIP_ASSERT("pcb != NULL", pcb != NULL); - 803efac: 687b ldr r3, [r7, #4] - 803efae: 2b00 cmp r3, #0 - 803efb0: d106 bne.n 803efc0 - 803efb2: 4b14 ldr r3, [pc, #80] ; (803f004 ) - 803efb4: f240 1211 movw r2, #273 ; 0x111 - 803efb8: 4913 ldr r1, [pc, #76] ; (803f008 ) - 803efba: 4814 ldr r0, [pc, #80] ; (803f00c ) - 803efbc: f008 fff2 bl 8047fa4 + 803efec: 687b ldr r3, [r7, #4] + 803efee: 2b00 cmp r3, #0 + 803eff0: d106 bne.n 803f000 + 803eff2: 4b14 ldr r3, [pc, #80] ; (803f044 ) + 803eff4: f240 1211 movw r2, #273 ; 0x111 + 803eff8: 4913 ldr r1, [pc, #76] ; (803f048 ) + 803effa: 4814 ldr r0, [pc, #80] ; (803f04c ) + 803effc: f008 fff2 bl 8047fe4 LWIP_ASSERT("pcb->state == LISTEN", pcb->state == LISTEN); - 803efc0: 687b ldr r3, [r7, #4] - 803efc2: 7d1b ldrb r3, [r3, #20] - 803efc4: 2b01 cmp r3, #1 - 803efc6: d006 beq.n 803efd6 - 803efc8: 4b0e ldr r3, [pc, #56] ; (803f004 ) - 803efca: f44f 7289 mov.w r2, #274 ; 0x112 - 803efce: 4910 ldr r1, [pc, #64] ; (803f010 ) - 803efd0: 480e ldr r0, [pc, #56] ; (803f00c ) - 803efd2: f008 ffe7 bl 8047fa4 + 803f000: 687b ldr r3, [r7, #4] + 803f002: 7d1b ldrb r3, [r3, #20] + 803f004: 2b01 cmp r3, #1 + 803f006: d006 beq.n 803f016 + 803f008: 4b0e ldr r3, [pc, #56] ; (803f044 ) + 803f00a: f44f 7289 mov.w r2, #274 ; 0x112 + 803f00e: 4910 ldr r1, [pc, #64] ; (803f050 ) + 803f010: 480e ldr r0, [pc, #56] ; (803f04c ) + 803f012: f008 ffe7 bl 8047fe4 for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) { - 803efd6: 2301 movs r3, #1 - 803efd8: 60fb str r3, [r7, #12] - 803efda: e00b b.n 803eff4 + 803f016: 2301 movs r3, #1 + 803f018: 60fb str r3, [r7, #12] + 803f01a: e00b b.n 803f034 tcp_remove_listener(*tcp_pcb_lists[i], (struct tcp_pcb_listen *)pcb); - 803efdc: 4a0d ldr r2, [pc, #52] ; (803f014 ) - 803efde: 68fb ldr r3, [r7, #12] - 803efe0: f852 3023 ldr.w r3, [r2, r3, lsl #2] - 803efe4: 681b ldr r3, [r3, #0] - 803efe6: 6879 ldr r1, [r7, #4] - 803efe8: 4618 mov r0, r3 - 803efea: f7ff ffb1 bl 803ef50 + 803f01c: 4a0d ldr r2, [pc, #52] ; (803f054 ) + 803f01e: 68fb ldr r3, [r7, #12] + 803f020: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 803f024: 681b ldr r3, [r3, #0] + 803f026: 6879 ldr r1, [r7, #4] + 803f028: 4618 mov r0, r3 + 803f02a: f7ff ffb1 bl 803ef90 for (i = 1; i < LWIP_ARRAYSIZE(tcp_pcb_lists); i++) { - 803efee: 68fb ldr r3, [r7, #12] - 803eff0: 3301 adds r3, #1 - 803eff2: 60fb str r3, [r7, #12] - 803eff4: 68fb ldr r3, [r7, #12] - 803eff6: 2b03 cmp r3, #3 - 803eff8: d9f0 bls.n 803efdc + 803f02e: 68fb ldr r3, [r7, #12] + 803f030: 3301 adds r3, #1 + 803f032: 60fb str r3, [r7, #12] + 803f034: 68fb ldr r3, [r7, #12] + 803f036: 2b03 cmp r3, #3 + 803f038: d9f0 bls.n 803f01c } #endif LWIP_UNUSED_ARG(pcb); } - 803effa: bf00 nop - 803effc: bf00 nop - 803effe: 3710 adds r7, #16 - 803f000: 46bd mov sp, r7 - 803f002: bd80 pop {r7, pc} - 803f004: 0804ac30 .word 0x0804ac30 - 803f008: 0804ace0 .word 0x0804ace0 - 803f00c: 0804ac74 .word 0x0804ac74 - 803f010: 0804acec .word 0x0804acec - 803f014: 0804d460 .word 0x0804d460 - -0803f018 : + 803f03a: bf00 nop + 803f03c: bf00 nop + 803f03e: 3710 adds r7, #16 + 803f040: 46bd mov sp, r7 + 803f042: bd80 pop {r7, pc} + 803f044: 0804ac70 .word 0x0804ac70 + 803f048: 0804ad20 .word 0x0804ad20 + 803f04c: 0804acb4 .word 0x0804acb4 + 803f050: 0804ad2c .word 0x0804ad2c + 803f054: 0804d4a0 .word 0x0804d4a0 + +0803f058 : * @return ERR_OK if connection has been closed * another err_t if closing failed and pcb is not freed */ static err_t tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data) { - 803f018: b5b0 push {r4, r5, r7, lr} - 803f01a: b088 sub sp, #32 - 803f01c: af04 add r7, sp, #16 - 803f01e: 6078 str r0, [r7, #4] - 803f020: 460b mov r3, r1 - 803f022: 70fb strb r3, [r7, #3] + 803f058: b5b0 push {r4, r5, r7, lr} + 803f05a: b088 sub sp, #32 + 803f05c: af04 add r7, sp, #16 + 803f05e: 6078 str r0, [r7, #4] + 803f060: 460b mov r3, r1 + 803f062: 70fb strb r3, [r7, #3] LWIP_ASSERT("tcp_close_shutdown: invalid pcb", pcb != NULL); - 803f024: 687b ldr r3, [r7, #4] - 803f026: 2b00 cmp r3, #0 - 803f028: d106 bne.n 803f038 - 803f02a: 4b63 ldr r3, [pc, #396] ; (803f1b8 ) - 803f02c: f44f 72af mov.w r2, #350 ; 0x15e - 803f030: 4962 ldr r1, [pc, #392] ; (803f1bc ) - 803f032: 4863 ldr r0, [pc, #396] ; (803f1c0 ) - 803f034: f008 ffb6 bl 8047fa4 + 803f064: 687b ldr r3, [r7, #4] + 803f066: 2b00 cmp r3, #0 + 803f068: d106 bne.n 803f078 + 803f06a: 4b63 ldr r3, [pc, #396] ; (803f1f8 ) + 803f06c: f44f 72af mov.w r2, #350 ; 0x15e + 803f070: 4962 ldr r1, [pc, #392] ; (803f1fc ) + 803f072: 4863 ldr r0, [pc, #396] ; (803f200 ) + 803f074: f008 ffb6 bl 8047fe4 if (rst_on_unacked_data && ((pcb->state == ESTABLISHED) || (pcb->state == CLOSE_WAIT))) { - 803f038: 78fb ldrb r3, [r7, #3] - 803f03a: 2b00 cmp r3, #0 - 803f03c: d066 beq.n 803f10c - 803f03e: 687b ldr r3, [r7, #4] - 803f040: 7d1b ldrb r3, [r3, #20] - 803f042: 2b04 cmp r3, #4 - 803f044: d003 beq.n 803f04e - 803f046: 687b ldr r3, [r7, #4] - 803f048: 7d1b ldrb r3, [r3, #20] - 803f04a: 2b07 cmp r3, #7 - 803f04c: d15e bne.n 803f10c + 803f078: 78fb ldrb r3, [r7, #3] + 803f07a: 2b00 cmp r3, #0 + 803f07c: d066 beq.n 803f14c + 803f07e: 687b ldr r3, [r7, #4] + 803f080: 7d1b ldrb r3, [r3, #20] + 803f082: 2b04 cmp r3, #4 + 803f084: d003 beq.n 803f08e + 803f086: 687b ldr r3, [r7, #4] + 803f088: 7d1b ldrb r3, [r3, #20] + 803f08a: 2b07 cmp r3, #7 + 803f08c: d15e bne.n 803f14c if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND_MAX(pcb))) { - 803f04e: 687b ldr r3, [r7, #4] - 803f050: 6f9b ldr r3, [r3, #120] ; 0x78 - 803f052: 2b00 cmp r3, #0 - 803f054: d104 bne.n 803f060 - 803f056: 687b ldr r3, [r7, #4] - 803f058: 8d1b ldrh r3, [r3, #40] ; 0x28 - 803f05a: f5b3 6f06 cmp.w r3, #2144 ; 0x860 - 803f05e: d055 beq.n 803f10c + 803f08e: 687b ldr r3, [r7, #4] + 803f090: 6f9b ldr r3, [r3, #120] ; 0x78 + 803f092: 2b00 cmp r3, #0 + 803f094: d104 bne.n 803f0a0 + 803f096: 687b ldr r3, [r7, #4] + 803f098: 8d1b ldrh r3, [r3, #40] ; 0x28 + 803f09a: f5b3 6f06 cmp.w r3, #2144 ; 0x860 + 803f09e: d055 beq.n 803f14c /* Not all data received by application, send RST to tell the remote side about this. */ LWIP_ASSERT("pcb->flags & TF_RXCLOSED", pcb->flags & TF_RXCLOSED); - 803f060: 687b ldr r3, [r7, #4] - 803f062: 8b5b ldrh r3, [r3, #26] - 803f064: f003 0310 and.w r3, r3, #16 - 803f068: 2b00 cmp r3, #0 - 803f06a: d106 bne.n 803f07a - 803f06c: 4b52 ldr r3, [pc, #328] ; (803f1b8 ) - 803f06e: f44f 72b2 mov.w r2, #356 ; 0x164 - 803f072: 4954 ldr r1, [pc, #336] ; (803f1c4 ) - 803f074: 4852 ldr r0, [pc, #328] ; (803f1c0 ) - 803f076: f008 ff95 bl 8047fa4 + 803f0a0: 687b ldr r3, [r7, #4] + 803f0a2: 8b5b ldrh r3, [r3, #26] + 803f0a4: f003 0310 and.w r3, r3, #16 + 803f0a8: 2b00 cmp r3, #0 + 803f0aa: d106 bne.n 803f0ba + 803f0ac: 4b52 ldr r3, [pc, #328] ; (803f1f8 ) + 803f0ae: f44f 72b2 mov.w r2, #356 ; 0x164 + 803f0b2: 4954 ldr r1, [pc, #336] ; (803f204 ) + 803f0b4: 4852 ldr r0, [pc, #328] ; (803f200 ) + 803f0b6: f008 ff95 bl 8047fe4 /* don't call tcp_abort here: we must not deallocate the pcb since that might not be expected when calling tcp_close */ tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - 803f07a: 687b ldr r3, [r7, #4] - 803f07c: 6d18 ldr r0, [r3, #80] ; 0x50 - 803f07e: 687b ldr r3, [r7, #4] - 803f080: 6a5c ldr r4, [r3, #36] ; 0x24 - 803f082: 687d ldr r5, [r7, #4] - 803f084: 687b ldr r3, [r7, #4] - 803f086: 3304 adds r3, #4 - 803f088: 687a ldr r2, [r7, #4] - 803f08a: 8ad2 ldrh r2, [r2, #22] - 803f08c: 6879 ldr r1, [r7, #4] - 803f08e: 8b09 ldrh r1, [r1, #24] - 803f090: 9102 str r1, [sp, #8] - 803f092: 9201 str r2, [sp, #4] - 803f094: 9300 str r3, [sp, #0] - 803f096: 462b mov r3, r5 - 803f098: 4622 mov r2, r4 - 803f09a: 4601 mov r1, r0 - 803f09c: 6878 ldr r0, [r7, #4] - 803f09e: f005 fae9 bl 8044674 + 803f0ba: 687b ldr r3, [r7, #4] + 803f0bc: 6d18 ldr r0, [r3, #80] ; 0x50 + 803f0be: 687b ldr r3, [r7, #4] + 803f0c0: 6a5c ldr r4, [r3, #36] ; 0x24 + 803f0c2: 687d ldr r5, [r7, #4] + 803f0c4: 687b ldr r3, [r7, #4] + 803f0c6: 3304 adds r3, #4 + 803f0c8: 687a ldr r2, [r7, #4] + 803f0ca: 8ad2 ldrh r2, [r2, #22] + 803f0cc: 6879 ldr r1, [r7, #4] + 803f0ce: 8b09 ldrh r1, [r1, #24] + 803f0d0: 9102 str r1, [sp, #8] + 803f0d2: 9201 str r2, [sp, #4] + 803f0d4: 9300 str r3, [sp, #0] + 803f0d6: 462b mov r3, r5 + 803f0d8: 4622 mov r2, r4 + 803f0da: 4601 mov r1, r0 + 803f0dc: 6878 ldr r0, [r7, #4] + 803f0de: f005 fae9 bl 80446b4 pcb->local_port, pcb->remote_port); tcp_pcb_purge(pcb); - 803f0a2: 6878 ldr r0, [r7, #4] - 803f0a4: f001 f8c6 bl 8040234 + 803f0e2: 6878 ldr r0, [r7, #4] + 803f0e4: f001 f8c6 bl 8040274 TCP_RMV_ACTIVE(pcb); - 803f0a8: 4b47 ldr r3, [pc, #284] ; (803f1c8 ) - 803f0aa: 681b ldr r3, [r3, #0] - 803f0ac: 687a ldr r2, [r7, #4] - 803f0ae: 429a cmp r2, r3 - 803f0b0: d105 bne.n 803f0be - 803f0b2: 4b45 ldr r3, [pc, #276] ; (803f1c8 ) - 803f0b4: 681b ldr r3, [r3, #0] - 803f0b6: 68db ldr r3, [r3, #12] - 803f0b8: 4a43 ldr r2, [pc, #268] ; (803f1c8 ) - 803f0ba: 6013 str r3, [r2, #0] - 803f0bc: e013 b.n 803f0e6 - 803f0be: 4b42 ldr r3, [pc, #264] ; (803f1c8 ) - 803f0c0: 681b ldr r3, [r3, #0] - 803f0c2: 60fb str r3, [r7, #12] - 803f0c4: e00c b.n 803f0e0 - 803f0c6: 68fb ldr r3, [r7, #12] - 803f0c8: 68db ldr r3, [r3, #12] - 803f0ca: 687a ldr r2, [r7, #4] - 803f0cc: 429a cmp r2, r3 - 803f0ce: d104 bne.n 803f0da - 803f0d0: 687b ldr r3, [r7, #4] - 803f0d2: 68da ldr r2, [r3, #12] - 803f0d4: 68fb ldr r3, [r7, #12] - 803f0d6: 60da str r2, [r3, #12] - 803f0d8: e005 b.n 803f0e6 - 803f0da: 68fb ldr r3, [r7, #12] - 803f0dc: 68db ldr r3, [r3, #12] - 803f0de: 60fb str r3, [r7, #12] - 803f0e0: 68fb ldr r3, [r7, #12] - 803f0e2: 2b00 cmp r3, #0 - 803f0e4: d1ef bne.n 803f0c6 - 803f0e6: 687b ldr r3, [r7, #4] - 803f0e8: 2200 movs r2, #0 - 803f0ea: 60da str r2, [r3, #12] - 803f0ec: 4b37 ldr r3, [pc, #220] ; (803f1cc ) - 803f0ee: 2201 movs r2, #1 - 803f0f0: 701a strb r2, [r3, #0] + 803f0e8: 4b47 ldr r3, [pc, #284] ; (803f208 ) + 803f0ea: 681b ldr r3, [r3, #0] + 803f0ec: 687a ldr r2, [r7, #4] + 803f0ee: 429a cmp r2, r3 + 803f0f0: d105 bne.n 803f0fe + 803f0f2: 4b45 ldr r3, [pc, #276] ; (803f208 ) + 803f0f4: 681b ldr r3, [r3, #0] + 803f0f6: 68db ldr r3, [r3, #12] + 803f0f8: 4a43 ldr r2, [pc, #268] ; (803f208 ) + 803f0fa: 6013 str r3, [r2, #0] + 803f0fc: e013 b.n 803f126 + 803f0fe: 4b42 ldr r3, [pc, #264] ; (803f208 ) + 803f100: 681b ldr r3, [r3, #0] + 803f102: 60fb str r3, [r7, #12] + 803f104: e00c b.n 803f120 + 803f106: 68fb ldr r3, [r7, #12] + 803f108: 68db ldr r3, [r3, #12] + 803f10a: 687a ldr r2, [r7, #4] + 803f10c: 429a cmp r2, r3 + 803f10e: d104 bne.n 803f11a + 803f110: 687b ldr r3, [r7, #4] + 803f112: 68da ldr r2, [r3, #12] + 803f114: 68fb ldr r3, [r7, #12] + 803f116: 60da str r2, [r3, #12] + 803f118: e005 b.n 803f126 + 803f11a: 68fb ldr r3, [r7, #12] + 803f11c: 68db ldr r3, [r3, #12] + 803f11e: 60fb str r3, [r7, #12] + 803f120: 68fb ldr r3, [r7, #12] + 803f122: 2b00 cmp r3, #0 + 803f124: d1ef bne.n 803f106 + 803f126: 687b ldr r3, [r7, #4] + 803f128: 2200 movs r2, #0 + 803f12a: 60da str r2, [r3, #12] + 803f12c: 4b37 ldr r3, [pc, #220] ; (803f20c ) + 803f12e: 2201 movs r2, #1 + 803f130: 701a strb r2, [r3, #0] /* Deallocate the pcb since we already sent a RST for it */ if (tcp_input_pcb == pcb) { - 803f0f2: 4b37 ldr r3, [pc, #220] ; (803f1d0 ) - 803f0f4: 681b ldr r3, [r3, #0] - 803f0f6: 687a ldr r2, [r7, #4] - 803f0f8: 429a cmp r2, r3 - 803f0fa: d102 bne.n 803f102 + 803f132: 4b37 ldr r3, [pc, #220] ; (803f210 ) + 803f134: 681b ldr r3, [r3, #0] + 803f136: 687a ldr r2, [r7, #4] + 803f138: 429a cmp r2, r3 + 803f13a: d102 bne.n 803f142 /* prevent using a deallocated pcb: free it from tcp_input later */ tcp_trigger_input_pcb_close(); - 803f0fc: f003 fd5e bl 8042bbc - 803f100: e002 b.n 803f108 + 803f13c: f003 fd5e bl 8042bfc + 803f140: e002 b.n 803f148 } else { tcp_free(pcb); - 803f102: 6878 ldr r0, [r7, #4] - 803f104: f7ff fed6 bl 803eeb4 + 803f142: 6878 ldr r0, [r7, #4] + 803f144: f7ff fed6 bl 803eef4 } return ERR_OK; - 803f108: 2300 movs r3, #0 - 803f10a: e050 b.n 803f1ae + 803f148: 2300 movs r3, #0 + 803f14a: e050 b.n 803f1ee } } /* - states which free the pcb are handled here, - states which send FIN and change state are handled in tcp_close_shutdown_fin() */ switch (pcb->state) { - 803f10c: 687b ldr r3, [r7, #4] - 803f10e: 7d1b ldrb r3, [r3, #20] - 803f110: 2b02 cmp r3, #2 - 803f112: d03b beq.n 803f18c - 803f114: 2b02 cmp r3, #2 - 803f116: dc44 bgt.n 803f1a2 - 803f118: 2b00 cmp r3, #0 - 803f11a: d002 beq.n 803f122 - 803f11c: 2b01 cmp r3, #1 - 803f11e: d02a beq.n 803f176 - 803f120: e03f b.n 803f1a2 + 803f14c: 687b ldr r3, [r7, #4] + 803f14e: 7d1b ldrb r3, [r3, #20] + 803f150: 2b02 cmp r3, #2 + 803f152: d03b beq.n 803f1cc + 803f154: 2b02 cmp r3, #2 + 803f156: dc44 bgt.n 803f1e2 + 803f158: 2b00 cmp r3, #0 + 803f15a: d002 beq.n 803f162 + 803f15c: 2b01 cmp r3, #1 + 803f15e: d02a beq.n 803f1b6 + 803f160: e03f b.n 803f1e2 * and the user needs some way to free it should the need arise. * Calling tcp_close() with a pcb that has already been closed, (i.e. twice) * or for a pcb that has been used and then entered the CLOSED state * is erroneous, but this should never happen as the pcb has in those cases * been freed, and so any remaining handles are bogus. */ if (pcb->local_port != 0) { - 803f122: 687b ldr r3, [r7, #4] - 803f124: 8adb ldrh r3, [r3, #22] - 803f126: 2b00 cmp r3, #0 - 803f128: d021 beq.n 803f16e + 803f162: 687b ldr r3, [r7, #4] + 803f164: 8adb ldrh r3, [r3, #22] + 803f166: 2b00 cmp r3, #0 + 803f168: d021 beq.n 803f1ae TCP_RMV(&tcp_bound_pcbs, pcb); - 803f12a: 4b2a ldr r3, [pc, #168] ; (803f1d4 ) - 803f12c: 681b ldr r3, [r3, #0] - 803f12e: 687a ldr r2, [r7, #4] - 803f130: 429a cmp r2, r3 - 803f132: d105 bne.n 803f140 - 803f134: 4b27 ldr r3, [pc, #156] ; (803f1d4 ) - 803f136: 681b ldr r3, [r3, #0] - 803f138: 68db ldr r3, [r3, #12] - 803f13a: 4a26 ldr r2, [pc, #152] ; (803f1d4 ) - 803f13c: 6013 str r3, [r2, #0] - 803f13e: e013 b.n 803f168 - 803f140: 4b24 ldr r3, [pc, #144] ; (803f1d4 ) - 803f142: 681b ldr r3, [r3, #0] - 803f144: 60bb str r3, [r7, #8] - 803f146: e00c b.n 803f162 - 803f148: 68bb ldr r3, [r7, #8] - 803f14a: 68db ldr r3, [r3, #12] - 803f14c: 687a ldr r2, [r7, #4] - 803f14e: 429a cmp r2, r3 - 803f150: d104 bne.n 803f15c - 803f152: 687b ldr r3, [r7, #4] - 803f154: 68da ldr r2, [r3, #12] - 803f156: 68bb ldr r3, [r7, #8] - 803f158: 60da str r2, [r3, #12] - 803f15a: e005 b.n 803f168 - 803f15c: 68bb ldr r3, [r7, #8] - 803f15e: 68db ldr r3, [r3, #12] - 803f160: 60bb str r3, [r7, #8] - 803f162: 68bb ldr r3, [r7, #8] - 803f164: 2b00 cmp r3, #0 - 803f166: d1ef bne.n 803f148 - 803f168: 687b ldr r3, [r7, #4] - 803f16a: 2200 movs r2, #0 - 803f16c: 60da str r2, [r3, #12] + 803f16a: 4b2a ldr r3, [pc, #168] ; (803f214 ) + 803f16c: 681b ldr r3, [r3, #0] + 803f16e: 687a ldr r2, [r7, #4] + 803f170: 429a cmp r2, r3 + 803f172: d105 bne.n 803f180 + 803f174: 4b27 ldr r3, [pc, #156] ; (803f214 ) + 803f176: 681b ldr r3, [r3, #0] + 803f178: 68db ldr r3, [r3, #12] + 803f17a: 4a26 ldr r2, [pc, #152] ; (803f214 ) + 803f17c: 6013 str r3, [r2, #0] + 803f17e: e013 b.n 803f1a8 + 803f180: 4b24 ldr r3, [pc, #144] ; (803f214 ) + 803f182: 681b ldr r3, [r3, #0] + 803f184: 60bb str r3, [r7, #8] + 803f186: e00c b.n 803f1a2 + 803f188: 68bb ldr r3, [r7, #8] + 803f18a: 68db ldr r3, [r3, #12] + 803f18c: 687a ldr r2, [r7, #4] + 803f18e: 429a cmp r2, r3 + 803f190: d104 bne.n 803f19c + 803f192: 687b ldr r3, [r7, #4] + 803f194: 68da ldr r2, [r3, #12] + 803f196: 68bb ldr r3, [r7, #8] + 803f198: 60da str r2, [r3, #12] + 803f19a: e005 b.n 803f1a8 + 803f19c: 68bb ldr r3, [r7, #8] + 803f19e: 68db ldr r3, [r3, #12] + 803f1a0: 60bb str r3, [r7, #8] + 803f1a2: 68bb ldr r3, [r7, #8] + 803f1a4: 2b00 cmp r3, #0 + 803f1a6: d1ef bne.n 803f188 + 803f1a8: 687b ldr r3, [r7, #4] + 803f1aa: 2200 movs r2, #0 + 803f1ac: 60da str r2, [r3, #12] } tcp_free(pcb); - 803f16e: 6878 ldr r0, [r7, #4] - 803f170: f7ff fea0 bl 803eeb4 + 803f1ae: 6878 ldr r0, [r7, #4] + 803f1b0: f7ff fea0 bl 803eef4 break; - 803f174: e01a b.n 803f1ac + 803f1b4: e01a b.n 803f1ec case LISTEN: tcp_listen_closed(pcb); - 803f176: 6878 ldr r0, [r7, #4] - 803f178: f7ff ff14 bl 803efa4 + 803f1b6: 6878 ldr r0, [r7, #4] + 803f1b8: f7ff ff14 bl 803efe4 tcp_pcb_remove(&tcp_listen_pcbs.pcbs, pcb); - 803f17c: 6879 ldr r1, [r7, #4] - 803f17e: 4816 ldr r0, [pc, #88] ; (803f1d8 ) - 803f180: f001 f8a8 bl 80402d4 + 803f1bc: 6879 ldr r1, [r7, #4] + 803f1be: 4816 ldr r0, [pc, #88] ; (803f218 ) + 803f1c0: f001 f8a8 bl 8040314 tcp_free_listen(pcb); - 803f184: 6878 ldr r0, [r7, #4] - 803f186: f7ff feb1 bl 803eeec + 803f1c4: 6878 ldr r0, [r7, #4] + 803f1c6: f7ff feb1 bl 803ef2c break; - 803f18a: e00f b.n 803f1ac + 803f1ca: e00f b.n 803f1ec case SYN_SENT: TCP_PCB_REMOVE_ACTIVE(pcb); - 803f18c: 6879 ldr r1, [r7, #4] - 803f18e: 480e ldr r0, [pc, #56] ; (803f1c8 ) - 803f190: f001 f8a0 bl 80402d4 - 803f194: 4b0d ldr r3, [pc, #52] ; (803f1cc ) - 803f196: 2201 movs r2, #1 - 803f198: 701a strb r2, [r3, #0] + 803f1cc: 6879 ldr r1, [r7, #4] + 803f1ce: 480e ldr r0, [pc, #56] ; (803f208 ) + 803f1d0: f001 f8a0 bl 8040314 + 803f1d4: 4b0d ldr r3, [pc, #52] ; (803f20c ) + 803f1d6: 2201 movs r2, #1 + 803f1d8: 701a strb r2, [r3, #0] tcp_free(pcb); - 803f19a: 6878 ldr r0, [r7, #4] - 803f19c: f7ff fe8a bl 803eeb4 + 803f1da: 6878 ldr r0, [r7, #4] + 803f1dc: f7ff fe8a bl 803eef4 MIB2_STATS_INC(mib2.tcpattemptfails); break; - 803f1a0: e004 b.n 803f1ac + 803f1e0: e004 b.n 803f1ec default: return tcp_close_shutdown_fin(pcb); - 803f1a2: 6878 ldr r0, [r7, #4] - 803f1a4: f000 f81a bl 803f1dc - 803f1a8: 4603 mov r3, r0 - 803f1aa: e000 b.n 803f1ae + 803f1e2: 6878 ldr r0, [r7, #4] + 803f1e4: f000 f81a bl 803f21c + 803f1e8: 4603 mov r3, r0 + 803f1ea: e000 b.n 803f1ee } return ERR_OK; - 803f1ac: 2300 movs r3, #0 -} - 803f1ae: 4618 mov r0, r3 - 803f1b0: 3710 adds r7, #16 - 803f1b2: 46bd mov sp, r7 - 803f1b4: bdb0 pop {r4, r5, r7, pc} - 803f1b6: bf00 nop - 803f1b8: 0804ac30 .word 0x0804ac30 - 803f1bc: 0804ad04 .word 0x0804ad04 - 803f1c0: 0804ac74 .word 0x0804ac74 - 803f1c4: 0804ad24 .word 0x0804ad24 - 803f1c8: 2400eaf4 .word 0x2400eaf4 - 803f1cc: 2400eafc .word 0x2400eafc - 803f1d0: 2400eb34 .word 0x2400eb34 - 803f1d4: 2400eaec .word 0x2400eaec - 803f1d8: 2400eaf0 .word 0x2400eaf0 - -0803f1dc : + 803f1ec: 2300 movs r3, #0 +} + 803f1ee: 4618 mov r0, r3 + 803f1f0: 3710 adds r7, #16 + 803f1f2: 46bd mov sp, r7 + 803f1f4: bdb0 pop {r4, r5, r7, pc} + 803f1f6: bf00 nop + 803f1f8: 0804ac70 .word 0x0804ac70 + 803f1fc: 0804ad44 .word 0x0804ad44 + 803f200: 0804acb4 .word 0x0804acb4 + 803f204: 0804ad64 .word 0x0804ad64 + 803f208: 2400eaf4 .word 0x2400eaf4 + 803f20c: 2400eafc .word 0x2400eafc + 803f210: 2400eb34 .word 0x2400eb34 + 803f214: 2400eaec .word 0x2400eaec + 803f218: 2400eaf0 .word 0x2400eaf0 + +0803f21c : static err_t tcp_close_shutdown_fin(struct tcp_pcb *pcb) { - 803f1dc: b580 push {r7, lr} - 803f1de: b084 sub sp, #16 - 803f1e0: af00 add r7, sp, #0 - 803f1e2: 6078 str r0, [r7, #4] + 803f21c: b580 push {r7, lr} + 803f21e: b084 sub sp, #16 + 803f220: af00 add r7, sp, #0 + 803f222: 6078 str r0, [r7, #4] err_t err; LWIP_ASSERT("pcb != NULL", pcb != NULL); - 803f1e4: 687b ldr r3, [r7, #4] - 803f1e6: 2b00 cmp r3, #0 - 803f1e8: d106 bne.n 803f1f8 - 803f1ea: 4b2e ldr r3, [pc, #184] ; (803f2a4 ) - 803f1ec: f44f 72ce mov.w r2, #412 ; 0x19c - 803f1f0: 492d ldr r1, [pc, #180] ; (803f2a8 ) - 803f1f2: 482e ldr r0, [pc, #184] ; (803f2ac ) - 803f1f4: f008 fed6 bl 8047fa4 + 803f224: 687b ldr r3, [r7, #4] + 803f226: 2b00 cmp r3, #0 + 803f228: d106 bne.n 803f238 + 803f22a: 4b2e ldr r3, [pc, #184] ; (803f2e4 ) + 803f22c: f44f 72ce mov.w r2, #412 ; 0x19c + 803f230: 492d ldr r1, [pc, #180] ; (803f2e8 ) + 803f232: 482e ldr r0, [pc, #184] ; (803f2ec ) + 803f234: f008 fed6 bl 8047fe4 switch (pcb->state) { - 803f1f8: 687b ldr r3, [r7, #4] - 803f1fa: 7d1b ldrb r3, [r3, #20] - 803f1fc: 2b07 cmp r3, #7 - 803f1fe: d020 beq.n 803f242 - 803f200: 2b07 cmp r3, #7 - 803f202: dc2b bgt.n 803f25c - 803f204: 2b03 cmp r3, #3 - 803f206: d002 beq.n 803f20e - 803f208: 2b04 cmp r3, #4 - 803f20a: d00d beq.n 803f228 - 803f20c: e026 b.n 803f25c + 803f238: 687b ldr r3, [r7, #4] + 803f23a: 7d1b ldrb r3, [r3, #20] + 803f23c: 2b07 cmp r3, #7 + 803f23e: d020 beq.n 803f282 + 803f240: 2b07 cmp r3, #7 + 803f242: dc2b bgt.n 803f29c + 803f244: 2b03 cmp r3, #3 + 803f246: d002 beq.n 803f24e + 803f248: 2b04 cmp r3, #4 + 803f24a: d00d beq.n 803f268 + 803f24c: e026 b.n 803f29c case SYN_RCVD: err = tcp_send_fin(pcb); - 803f20e: 6878 ldr r0, [r7, #4] - 803f210: f004 fb3e bl 8043890 - 803f214: 4603 mov r3, r0 - 803f216: 73fb strb r3, [r7, #15] + 803f24e: 6878 ldr r0, [r7, #4] + 803f250: f004 fb3e bl 80438d0 + 803f254: 4603 mov r3, r0 + 803f256: 73fb strb r3, [r7, #15] if (err == ERR_OK) { - 803f218: f997 300f ldrsb.w r3, [r7, #15] - 803f21c: 2b00 cmp r3, #0 - 803f21e: d11f bne.n 803f260 + 803f258: f997 300f ldrsb.w r3, [r7, #15] + 803f25c: 2b00 cmp r3, #0 + 803f25e: d11f bne.n 803f2a0 tcp_backlog_accepted(pcb); MIB2_STATS_INC(mib2.tcpattemptfails); pcb->state = FIN_WAIT_1; - 803f220: 687b ldr r3, [r7, #4] - 803f222: 2205 movs r2, #5 - 803f224: 751a strb r2, [r3, #20] + 803f260: 687b ldr r3, [r7, #4] + 803f262: 2205 movs r2, #5 + 803f264: 751a strb r2, [r3, #20] } break; - 803f226: e01b b.n 803f260 + 803f266: e01b b.n 803f2a0 case ESTABLISHED: err = tcp_send_fin(pcb); - 803f228: 6878 ldr r0, [r7, #4] - 803f22a: f004 fb31 bl 8043890 - 803f22e: 4603 mov r3, r0 - 803f230: 73fb strb r3, [r7, #15] + 803f268: 6878 ldr r0, [r7, #4] + 803f26a: f004 fb31 bl 80438d0 + 803f26e: 4603 mov r3, r0 + 803f270: 73fb strb r3, [r7, #15] if (err == ERR_OK) { - 803f232: f997 300f ldrsb.w r3, [r7, #15] - 803f236: 2b00 cmp r3, #0 - 803f238: d114 bne.n 803f264 + 803f272: f997 300f ldrsb.w r3, [r7, #15] + 803f276: 2b00 cmp r3, #0 + 803f278: d114 bne.n 803f2a4 MIB2_STATS_INC(mib2.tcpestabresets); pcb->state = FIN_WAIT_1; - 803f23a: 687b ldr r3, [r7, #4] - 803f23c: 2205 movs r2, #5 - 803f23e: 751a strb r2, [r3, #20] + 803f27a: 687b ldr r3, [r7, #4] + 803f27c: 2205 movs r2, #5 + 803f27e: 751a strb r2, [r3, #20] } break; - 803f240: e010 b.n 803f264 + 803f280: e010 b.n 803f2a4 case CLOSE_WAIT: err = tcp_send_fin(pcb); - 803f242: 6878 ldr r0, [r7, #4] - 803f244: f004 fb24 bl 8043890 - 803f248: 4603 mov r3, r0 - 803f24a: 73fb strb r3, [r7, #15] + 803f282: 6878 ldr r0, [r7, #4] + 803f284: f004 fb24 bl 80438d0 + 803f288: 4603 mov r3, r0 + 803f28a: 73fb strb r3, [r7, #15] if (err == ERR_OK) { - 803f24c: f997 300f ldrsb.w r3, [r7, #15] - 803f250: 2b00 cmp r3, #0 - 803f252: d109 bne.n 803f268 + 803f28c: f997 300f ldrsb.w r3, [r7, #15] + 803f290: 2b00 cmp r3, #0 + 803f292: d109 bne.n 803f2a8 MIB2_STATS_INC(mib2.tcpestabresets); pcb->state = LAST_ACK; - 803f254: 687b ldr r3, [r7, #4] - 803f256: 2209 movs r2, #9 - 803f258: 751a strb r2, [r3, #20] + 803f294: 687b ldr r3, [r7, #4] + 803f296: 2209 movs r2, #9 + 803f298: 751a strb r2, [r3, #20] } break; - 803f25a: e005 b.n 803f268 + 803f29a: e005 b.n 803f2a8 default: /* Has already been closed, do nothing. */ return ERR_OK; - 803f25c: 2300 movs r3, #0 - 803f25e: e01c b.n 803f29a + 803f29c: 2300 movs r3, #0 + 803f29e: e01c b.n 803f2da break; - 803f260: bf00 nop - 803f262: e002 b.n 803f26a + 803f2a0: bf00 nop + 803f2a2: e002 b.n 803f2aa break; - 803f264: bf00 nop - 803f266: e000 b.n 803f26a + 803f2a4: bf00 nop + 803f2a6: e000 b.n 803f2aa break; - 803f268: bf00 nop + 803f2a8: bf00 nop } if (err == ERR_OK) { - 803f26a: f997 300f ldrsb.w r3, [r7, #15] - 803f26e: 2b00 cmp r3, #0 - 803f270: d103 bne.n 803f27a + 803f2aa: f997 300f ldrsb.w r3, [r7, #15] + 803f2ae: 2b00 cmp r3, #0 + 803f2b0: d103 bne.n 803f2ba /* To ensure all data has been sent when tcp_close returns, we have to make sure tcp_output doesn't fail. Since we don't really have to ensure all data has been sent when tcp_close returns (unsent data is sent from tcp timer functions, also), we don't care for the return value of tcp_output for now. */ tcp_output(pcb); - 803f272: 6878 ldr r0, [r7, #4] - 803f274: f004 fc4a bl 8043b0c - 803f278: e00d b.n 803f296 + 803f2b2: 6878 ldr r0, [r7, #4] + 803f2b4: f004 fc4a bl 8043b4c + 803f2b8: e00d b.n 803f2d6 } else if (err == ERR_MEM) { - 803f27a: f997 300f ldrsb.w r3, [r7, #15] - 803f27e: f1b3 3fff cmp.w r3, #4294967295 - 803f282: d108 bne.n 803f296 + 803f2ba: f997 300f ldrsb.w r3, [r7, #15] + 803f2be: f1b3 3fff cmp.w r3, #4294967295 + 803f2c2: d108 bne.n 803f2d6 /* Mark this pcb for closing. Closing is retried from tcp_tmr. */ tcp_set_flags(pcb, TF_CLOSEPEND); - 803f284: 687b ldr r3, [r7, #4] - 803f286: 8b5b ldrh r3, [r3, #26] - 803f288: f043 0308 orr.w r3, r3, #8 - 803f28c: b29a uxth r2, r3 - 803f28e: 687b ldr r3, [r7, #4] - 803f290: 835a strh r2, [r3, #26] + 803f2c4: 687b ldr r3, [r7, #4] + 803f2c6: 8b5b ldrh r3, [r3, #26] + 803f2c8: f043 0308 orr.w r3, r3, #8 + 803f2cc: b29a uxth r2, r3 + 803f2ce: 687b ldr r3, [r7, #4] + 803f2d0: 835a strh r2, [r3, #26] /* We have to return ERR_OK from here to indicate to the callers that this pcb should not be used any more as it will be freed soon via tcp_tmr. This is OK here since sending FIN does not guarantee a time frime for actually freeing the pcb, either (it is left in closure states for remote ACK or timeout) */ return ERR_OK; - 803f292: 2300 movs r3, #0 - 803f294: e001 b.n 803f29a + 803f2d2: 2300 movs r3, #0 + 803f2d4: e001 b.n 803f2da } return err; - 803f296: f997 300f ldrsb.w r3, [r7, #15] -} - 803f29a: 4618 mov r0, r3 - 803f29c: 3710 adds r7, #16 - 803f29e: 46bd mov sp, r7 - 803f2a0: bd80 pop {r7, pc} - 803f2a2: bf00 nop - 803f2a4: 0804ac30 .word 0x0804ac30 - 803f2a8: 0804ace0 .word 0x0804ace0 - 803f2ac: 0804ac74 .word 0x0804ac74 - -0803f2b0 : + 803f2d6: f997 300f ldrsb.w r3, [r7, #15] +} + 803f2da: 4618 mov r0, r3 + 803f2dc: 3710 adds r7, #16 + 803f2de: 46bd mov sp, r7 + 803f2e0: bd80 pop {r7, pc} + 803f2e2: bf00 nop + 803f2e4: 0804ac70 .word 0x0804ac70 + 803f2e8: 0804ad20 .word 0x0804ad20 + 803f2ec: 0804acb4 .word 0x0804acb4 + +0803f2f0 : * @return ERR_OK if connection has been closed * another err_t if closing failed and pcb is not freed */ err_t tcp_close(struct tcp_pcb *pcb) { - 803f2b0: b580 push {r7, lr} - 803f2b2: b082 sub sp, #8 - 803f2b4: af00 add r7, sp, #0 - 803f2b6: 6078 str r0, [r7, #4] + 803f2f0: b580 push {r7, lr} + 803f2f2: b082 sub sp, #8 + 803f2f4: af00 add r7, sp, #0 + 803f2f6: 6078 str r0, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("tcp_close: invalid pcb", pcb != NULL, return ERR_ARG); - 803f2b8: 687b ldr r3, [r7, #4] - 803f2ba: 2b00 cmp r3, #0 - 803f2bc: d109 bne.n 803f2d2 - 803f2be: 4b0f ldr r3, [pc, #60] ; (803f2fc ) - 803f2c0: f44f 72f4 mov.w r2, #488 ; 0x1e8 - 803f2c4: 490e ldr r1, [pc, #56] ; (803f300 ) - 803f2c6: 480f ldr r0, [pc, #60] ; (803f304 ) - 803f2c8: f008 fe6c bl 8047fa4 - 803f2cc: f06f 030f mvn.w r3, #15 - 803f2d0: e00f b.n 803f2f2 + 803f2f8: 687b ldr r3, [r7, #4] + 803f2fa: 2b00 cmp r3, #0 + 803f2fc: d109 bne.n 803f312 + 803f2fe: 4b0f ldr r3, [pc, #60] ; (803f33c ) + 803f300: f44f 72f4 mov.w r2, #488 ; 0x1e8 + 803f304: 490e ldr r1, [pc, #56] ; (803f340 ) + 803f306: 480f ldr r0, [pc, #60] ; (803f344 ) + 803f308: f008 fe6c bl 8047fe4 + 803f30c: f06f 030f mvn.w r3, #15 + 803f310: e00f b.n 803f332 LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in ")); tcp_debug_print_state(pcb->state); if (pcb->state != LISTEN) { - 803f2d2: 687b ldr r3, [r7, #4] - 803f2d4: 7d1b ldrb r3, [r3, #20] - 803f2d6: 2b01 cmp r3, #1 - 803f2d8: d006 beq.n 803f2e8 + 803f312: 687b ldr r3, [r7, #4] + 803f314: 7d1b ldrb r3, [r3, #20] + 803f316: 2b01 cmp r3, #1 + 803f318: d006 beq.n 803f328 /* Set a flag not to receive any more data... */ tcp_set_flags(pcb, TF_RXCLOSED); - 803f2da: 687b ldr r3, [r7, #4] - 803f2dc: 8b5b ldrh r3, [r3, #26] - 803f2de: f043 0310 orr.w r3, r3, #16 - 803f2e2: b29a uxth r2, r3 - 803f2e4: 687b ldr r3, [r7, #4] - 803f2e6: 835a strh r2, [r3, #26] + 803f31a: 687b ldr r3, [r7, #4] + 803f31c: 8b5b ldrh r3, [r3, #26] + 803f31e: f043 0310 orr.w r3, r3, #16 + 803f322: b29a uxth r2, r3 + 803f324: 687b ldr r3, [r7, #4] + 803f326: 835a strh r2, [r3, #26] } /* ... and close */ return tcp_close_shutdown(pcb, 1); - 803f2e8: 2101 movs r1, #1 - 803f2ea: 6878 ldr r0, [r7, #4] - 803f2ec: f7ff fe94 bl 803f018 - 803f2f0: 4603 mov r3, r0 -} - 803f2f2: 4618 mov r0, r3 - 803f2f4: 3708 adds r7, #8 - 803f2f6: 46bd mov sp, r7 - 803f2f8: bd80 pop {r7, pc} - 803f2fa: bf00 nop - 803f2fc: 0804ac30 .word 0x0804ac30 - 803f300: 0804ad40 .word 0x0804ad40 - 803f304: 0804ac74 .word 0x0804ac74 - -0803f308 : + 803f328: 2101 movs r1, #1 + 803f32a: 6878 ldr r0, [r7, #4] + 803f32c: f7ff fe94 bl 803f058 + 803f330: 4603 mov r3, r0 +} + 803f332: 4618 mov r0, r3 + 803f334: 3708 adds r7, #8 + 803f336: 46bd mov sp, r7 + 803f338: bd80 pop {r7, pc} + 803f33a: bf00 nop + 803f33c: 0804ac70 .word 0x0804ac70 + 803f340: 0804ad80 .word 0x0804ad80 + 803f344: 0804acb4 .word 0x0804acb4 + +0803f348 : * @param pcb the tcp_pcb to abort * @param reset boolean to indicate whether a reset should be sent */ void tcp_abandon(struct tcp_pcb *pcb, int reset) { - 803f308: b580 push {r7, lr} - 803f30a: b08e sub sp, #56 ; 0x38 - 803f30c: af04 add r7, sp, #16 - 803f30e: 6078 str r0, [r7, #4] - 803f310: 6039 str r1, [r7, #0] + 803f348: b580 push {r7, lr} + 803f34a: b08e sub sp, #56 ; 0x38 + 803f34c: af04 add r7, sp, #16 + 803f34e: 6078 str r0, [r7, #4] + 803f350: 6039 str r1, [r7, #0] #endif /* LWIP_CALLBACK_API */ void *errf_arg; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("tcp_abandon: invalid pcb", pcb != NULL, return); - 803f312: 687b ldr r3, [r7, #4] - 803f314: 2b00 cmp r3, #0 - 803f316: d107 bne.n 803f328 - 803f318: 4b52 ldr r3, [pc, #328] ; (803f464 ) - 803f31a: f240 223d movw r2, #573 ; 0x23d - 803f31e: 4952 ldr r1, [pc, #328] ; (803f468 ) - 803f320: 4852 ldr r0, [pc, #328] ; (803f46c ) - 803f322: f008 fe3f bl 8047fa4 - 803f326: e099 b.n 803f45c + 803f352: 687b ldr r3, [r7, #4] + 803f354: 2b00 cmp r3, #0 + 803f356: d107 bne.n 803f368 + 803f358: 4b52 ldr r3, [pc, #328] ; (803f4a4 ) + 803f35a: f240 223d movw r2, #573 ; 0x23d + 803f35e: 4952 ldr r1, [pc, #328] ; (803f4a8 ) + 803f360: 4852 ldr r0, [pc, #328] ; (803f4ac ) + 803f362: f008 fe3f bl 8047fe4 + 803f366: e099 b.n 803f49c /* pcb->state LISTEN not allowed here */ LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs", - 803f328: 687b ldr r3, [r7, #4] - 803f32a: 7d1b ldrb r3, [r3, #20] - 803f32c: 2b01 cmp r3, #1 - 803f32e: d106 bne.n 803f33e - 803f330: 4b4c ldr r3, [pc, #304] ; (803f464 ) - 803f332: f44f 7210 mov.w r2, #576 ; 0x240 - 803f336: 494e ldr r1, [pc, #312] ; (803f470 ) - 803f338: 484c ldr r0, [pc, #304] ; (803f46c ) - 803f33a: f008 fe33 bl 8047fa4 + 803f368: 687b ldr r3, [r7, #4] + 803f36a: 7d1b ldrb r3, [r3, #20] + 803f36c: 2b01 cmp r3, #1 + 803f36e: d106 bne.n 803f37e + 803f370: 4b4c ldr r3, [pc, #304] ; (803f4a4 ) + 803f372: f44f 7210 mov.w r2, #576 ; 0x240 + 803f376: 494e ldr r1, [pc, #312] ; (803f4b0 ) + 803f378: 484c ldr r0, [pc, #304] ; (803f4ac ) + 803f37a: f008 fe33 bl 8047fe4 pcb->state != LISTEN); /* Figure out on which TCP PCB list we are, and remove us. If we are in an active state, call the receive function associated with the PCB with a NULL argument, and send an RST to the remote end. */ if (pcb->state == TIME_WAIT) { - 803f33e: 687b ldr r3, [r7, #4] - 803f340: 7d1b ldrb r3, [r3, #20] - 803f342: 2b0a cmp r3, #10 - 803f344: d107 bne.n 803f356 + 803f37e: 687b ldr r3, [r7, #4] + 803f380: 7d1b ldrb r3, [r3, #20] + 803f382: 2b0a cmp r3, #10 + 803f384: d107 bne.n 803f396 tcp_pcb_remove(&tcp_tw_pcbs, pcb); - 803f346: 6879 ldr r1, [r7, #4] - 803f348: 484a ldr r0, [pc, #296] ; (803f474 ) - 803f34a: f000 ffc3 bl 80402d4 + 803f386: 6879 ldr r1, [r7, #4] + 803f388: 484a ldr r0, [pc, #296] ; (803f4b4 ) + 803f38a: f000 ffc3 bl 8040314 tcp_free(pcb); - 803f34e: 6878 ldr r0, [r7, #4] - 803f350: f7ff fdb0 bl 803eeb4 - 803f354: e082 b.n 803f45c + 803f38e: 6878 ldr r0, [r7, #4] + 803f390: f7ff fdb0 bl 803eef4 + 803f394: e082 b.n 803f49c } else { int send_rst = 0; - 803f356: 2300 movs r3, #0 - 803f358: 627b str r3, [r7, #36] ; 0x24 + 803f396: 2300 movs r3, #0 + 803f398: 627b str r3, [r7, #36] ; 0x24 u16_t local_port = 0; - 803f35a: 2300 movs r3, #0 - 803f35c: 847b strh r3, [r7, #34] ; 0x22 + 803f39a: 2300 movs r3, #0 + 803f39c: 847b strh r3, [r7, #34] ; 0x22 enum tcp_state last_state; seqno = pcb->snd_nxt; - 803f35e: 687b ldr r3, [r7, #4] - 803f360: 6d1b ldr r3, [r3, #80] ; 0x50 - 803f362: 61bb str r3, [r7, #24] + 803f39e: 687b ldr r3, [r7, #4] + 803f3a0: 6d1b ldr r3, [r3, #80] ; 0x50 + 803f3a2: 61bb str r3, [r7, #24] ackno = pcb->rcv_nxt; - 803f364: 687b ldr r3, [r7, #4] - 803f366: 6a5b ldr r3, [r3, #36] ; 0x24 - 803f368: 617b str r3, [r7, #20] + 803f3a4: 687b ldr r3, [r7, #4] + 803f3a6: 6a5b ldr r3, [r3, #36] ; 0x24 + 803f3a8: 617b str r3, [r7, #20] #if LWIP_CALLBACK_API errf = pcb->errf; - 803f36a: 687b ldr r3, [r7, #4] - 803f36c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 803f370: 613b str r3, [r7, #16] + 803f3aa: 687b ldr r3, [r7, #4] + 803f3ac: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 803f3b0: 613b str r3, [r7, #16] #endif /* LWIP_CALLBACK_API */ errf_arg = pcb->callback_arg; - 803f372: 687b ldr r3, [r7, #4] - 803f374: 691b ldr r3, [r3, #16] - 803f376: 60fb str r3, [r7, #12] + 803f3b2: 687b ldr r3, [r7, #4] + 803f3b4: 691b ldr r3, [r3, #16] + 803f3b6: 60fb str r3, [r7, #12] if (pcb->state == CLOSED) { - 803f378: 687b ldr r3, [r7, #4] - 803f37a: 7d1b ldrb r3, [r3, #20] - 803f37c: 2b00 cmp r3, #0 - 803f37e: d126 bne.n 803f3ce + 803f3b8: 687b ldr r3, [r7, #4] + 803f3ba: 7d1b ldrb r3, [r3, #20] + 803f3bc: 2b00 cmp r3, #0 + 803f3be: d126 bne.n 803f40e if (pcb->local_port != 0) { - 803f380: 687b ldr r3, [r7, #4] - 803f382: 8adb ldrh r3, [r3, #22] - 803f384: 2b00 cmp r3, #0 - 803f386: d02e beq.n 803f3e6 + 803f3c0: 687b ldr r3, [r7, #4] + 803f3c2: 8adb ldrh r3, [r3, #22] + 803f3c4: 2b00 cmp r3, #0 + 803f3c6: d02e beq.n 803f426 /* bound, not yet opened */ TCP_RMV(&tcp_bound_pcbs, pcb); - 803f388: 4b3b ldr r3, [pc, #236] ; (803f478 ) - 803f38a: 681b ldr r3, [r3, #0] - 803f38c: 687a ldr r2, [r7, #4] - 803f38e: 429a cmp r2, r3 - 803f390: d105 bne.n 803f39e - 803f392: 4b39 ldr r3, [pc, #228] ; (803f478 ) - 803f394: 681b ldr r3, [r3, #0] - 803f396: 68db ldr r3, [r3, #12] - 803f398: 4a37 ldr r2, [pc, #220] ; (803f478 ) - 803f39a: 6013 str r3, [r2, #0] - 803f39c: e013 b.n 803f3c6 - 803f39e: 4b36 ldr r3, [pc, #216] ; (803f478 ) - 803f3a0: 681b ldr r3, [r3, #0] - 803f3a2: 61fb str r3, [r7, #28] - 803f3a4: e00c b.n 803f3c0 - 803f3a6: 69fb ldr r3, [r7, #28] - 803f3a8: 68db ldr r3, [r3, #12] - 803f3aa: 687a ldr r2, [r7, #4] - 803f3ac: 429a cmp r2, r3 - 803f3ae: d104 bne.n 803f3ba - 803f3b0: 687b ldr r3, [r7, #4] - 803f3b2: 68da ldr r2, [r3, #12] - 803f3b4: 69fb ldr r3, [r7, #28] - 803f3b6: 60da str r2, [r3, #12] - 803f3b8: e005 b.n 803f3c6 - 803f3ba: 69fb ldr r3, [r7, #28] - 803f3bc: 68db ldr r3, [r3, #12] - 803f3be: 61fb str r3, [r7, #28] - 803f3c0: 69fb ldr r3, [r7, #28] - 803f3c2: 2b00 cmp r3, #0 - 803f3c4: d1ef bne.n 803f3a6 - 803f3c6: 687b ldr r3, [r7, #4] - 803f3c8: 2200 movs r2, #0 - 803f3ca: 60da str r2, [r3, #12] - 803f3cc: e00b b.n 803f3e6 + 803f3c8: 4b3b ldr r3, [pc, #236] ; (803f4b8 ) + 803f3ca: 681b ldr r3, [r3, #0] + 803f3cc: 687a ldr r2, [r7, #4] + 803f3ce: 429a cmp r2, r3 + 803f3d0: d105 bne.n 803f3de + 803f3d2: 4b39 ldr r3, [pc, #228] ; (803f4b8 ) + 803f3d4: 681b ldr r3, [r3, #0] + 803f3d6: 68db ldr r3, [r3, #12] + 803f3d8: 4a37 ldr r2, [pc, #220] ; (803f4b8 ) + 803f3da: 6013 str r3, [r2, #0] + 803f3dc: e013 b.n 803f406 + 803f3de: 4b36 ldr r3, [pc, #216] ; (803f4b8 ) + 803f3e0: 681b ldr r3, [r3, #0] + 803f3e2: 61fb str r3, [r7, #28] + 803f3e4: e00c b.n 803f400 + 803f3e6: 69fb ldr r3, [r7, #28] + 803f3e8: 68db ldr r3, [r3, #12] + 803f3ea: 687a ldr r2, [r7, #4] + 803f3ec: 429a cmp r2, r3 + 803f3ee: d104 bne.n 803f3fa + 803f3f0: 687b ldr r3, [r7, #4] + 803f3f2: 68da ldr r2, [r3, #12] + 803f3f4: 69fb ldr r3, [r7, #28] + 803f3f6: 60da str r2, [r3, #12] + 803f3f8: e005 b.n 803f406 + 803f3fa: 69fb ldr r3, [r7, #28] + 803f3fc: 68db ldr r3, [r3, #12] + 803f3fe: 61fb str r3, [r7, #28] + 803f400: 69fb ldr r3, [r7, #28] + 803f402: 2b00 cmp r3, #0 + 803f404: d1ef bne.n 803f3e6 + 803f406: 687b ldr r3, [r7, #4] + 803f408: 2200 movs r2, #0 + 803f40a: 60da str r2, [r3, #12] + 803f40c: e00b b.n 803f426 } } else { send_rst = reset; - 803f3ce: 683b ldr r3, [r7, #0] - 803f3d0: 627b str r3, [r7, #36] ; 0x24 + 803f40e: 683b ldr r3, [r7, #0] + 803f410: 627b str r3, [r7, #36] ; 0x24 local_port = pcb->local_port; - 803f3d2: 687b ldr r3, [r7, #4] - 803f3d4: 8adb ldrh r3, [r3, #22] - 803f3d6: 847b strh r3, [r7, #34] ; 0x22 + 803f412: 687b ldr r3, [r7, #4] + 803f414: 8adb ldrh r3, [r3, #22] + 803f416: 847b strh r3, [r7, #34] ; 0x22 TCP_PCB_REMOVE_ACTIVE(pcb); - 803f3d8: 6879 ldr r1, [r7, #4] - 803f3da: 4828 ldr r0, [pc, #160] ; (803f47c ) - 803f3dc: f000 ff7a bl 80402d4 - 803f3e0: 4b27 ldr r3, [pc, #156] ; (803f480 ) - 803f3e2: 2201 movs r2, #1 - 803f3e4: 701a strb r2, [r3, #0] + 803f418: 6879 ldr r1, [r7, #4] + 803f41a: 4828 ldr r0, [pc, #160] ; (803f4bc ) + 803f41c: f000 ff7a bl 8040314 + 803f420: 4b27 ldr r3, [pc, #156] ; (803f4c0 ) + 803f422: 2201 movs r2, #1 + 803f424: 701a strb r2, [r3, #0] } if (pcb->unacked != NULL) { - 803f3e6: 687b ldr r3, [r7, #4] - 803f3e8: 6f1b ldr r3, [r3, #112] ; 0x70 - 803f3ea: 2b00 cmp r3, #0 - 803f3ec: d004 beq.n 803f3f8 + 803f426: 687b ldr r3, [r7, #4] + 803f428: 6f1b ldr r3, [r3, #112] ; 0x70 + 803f42a: 2b00 cmp r3, #0 + 803f42c: d004 beq.n 803f438 tcp_segs_free(pcb->unacked); - 803f3ee: 687b ldr r3, [r7, #4] - 803f3f0: 6f1b ldr r3, [r3, #112] ; 0x70 - 803f3f2: 4618 mov r0, r3 - 803f3f4: f000 fd1c bl 803fe30 + 803f42e: 687b ldr r3, [r7, #4] + 803f430: 6f1b ldr r3, [r3, #112] ; 0x70 + 803f432: 4618 mov r0, r3 + 803f434: f000 fd1c bl 803fe70 } if (pcb->unsent != NULL) { - 803f3f8: 687b ldr r3, [r7, #4] - 803f3fa: 6edb ldr r3, [r3, #108] ; 0x6c - 803f3fc: 2b00 cmp r3, #0 - 803f3fe: d004 beq.n 803f40a + 803f438: 687b ldr r3, [r7, #4] + 803f43a: 6edb ldr r3, [r3, #108] ; 0x6c + 803f43c: 2b00 cmp r3, #0 + 803f43e: d004 beq.n 803f44a tcp_segs_free(pcb->unsent); - 803f400: 687b ldr r3, [r7, #4] - 803f402: 6edb ldr r3, [r3, #108] ; 0x6c - 803f404: 4618 mov r0, r3 - 803f406: f000 fd13 bl 803fe30 + 803f440: 687b ldr r3, [r7, #4] + 803f442: 6edb ldr r3, [r3, #108] ; 0x6c + 803f444: 4618 mov r0, r3 + 803f446: f000 fd13 bl 803fe70 } #if TCP_QUEUE_OOSEQ if (pcb->ooseq != NULL) { - 803f40a: 687b ldr r3, [r7, #4] - 803f40c: 6f5b ldr r3, [r3, #116] ; 0x74 - 803f40e: 2b00 cmp r3, #0 - 803f410: d004 beq.n 803f41c + 803f44a: 687b ldr r3, [r7, #4] + 803f44c: 6f5b ldr r3, [r3, #116] ; 0x74 + 803f44e: 2b00 cmp r3, #0 + 803f450: d004 beq.n 803f45c tcp_segs_free(pcb->ooseq); - 803f412: 687b ldr r3, [r7, #4] - 803f414: 6f5b ldr r3, [r3, #116] ; 0x74 - 803f416: 4618 mov r0, r3 - 803f418: f000 fd0a bl 803fe30 + 803f452: 687b ldr r3, [r7, #4] + 803f454: 6f5b ldr r3, [r3, #116] ; 0x74 + 803f456: 4618 mov r0, r3 + 803f458: f000 fd0a bl 803fe70 } #endif /* TCP_QUEUE_OOSEQ */ tcp_backlog_accepted(pcb); if (send_rst) { - 803f41c: 6a7b ldr r3, [r7, #36] ; 0x24 - 803f41e: 2b00 cmp r3, #0 - 803f420: d00e beq.n 803f440 + 803f45c: 6a7b ldr r3, [r7, #36] ; 0x24 + 803f45e: 2b00 cmp r3, #0 + 803f460: d00e beq.n 803f480 LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); tcp_rst(pcb, seqno, ackno, &pcb->local_ip, &pcb->remote_ip, local_port, pcb->remote_port); - 803f422: 6879 ldr r1, [r7, #4] - 803f424: 687b ldr r3, [r7, #4] - 803f426: 3304 adds r3, #4 - 803f428: 687a ldr r2, [r7, #4] - 803f42a: 8b12 ldrh r2, [r2, #24] - 803f42c: 9202 str r2, [sp, #8] - 803f42e: 8c7a ldrh r2, [r7, #34] ; 0x22 - 803f430: 9201 str r2, [sp, #4] - 803f432: 9300 str r3, [sp, #0] - 803f434: 460b mov r3, r1 - 803f436: 697a ldr r2, [r7, #20] - 803f438: 69b9 ldr r1, [r7, #24] - 803f43a: 6878 ldr r0, [r7, #4] - 803f43c: f005 f91a bl 8044674 + 803f462: 6879 ldr r1, [r7, #4] + 803f464: 687b ldr r3, [r7, #4] + 803f466: 3304 adds r3, #4 + 803f468: 687a ldr r2, [r7, #4] + 803f46a: 8b12 ldrh r2, [r2, #24] + 803f46c: 9202 str r2, [sp, #8] + 803f46e: 8c7a ldrh r2, [r7, #34] ; 0x22 + 803f470: 9201 str r2, [sp, #4] + 803f472: 9300 str r3, [sp, #0] + 803f474: 460b mov r3, r1 + 803f476: 697a ldr r2, [r7, #20] + 803f478: 69b9 ldr r1, [r7, #24] + 803f47a: 6878 ldr r0, [r7, #4] + 803f47c: f005 f91a bl 80446b4 } last_state = pcb->state; - 803f440: 687b ldr r3, [r7, #4] - 803f442: 7d1b ldrb r3, [r3, #20] - 803f444: 72fb strb r3, [r7, #11] + 803f480: 687b ldr r3, [r7, #4] + 803f482: 7d1b ldrb r3, [r3, #20] + 803f484: 72fb strb r3, [r7, #11] tcp_free(pcb); - 803f446: 6878 ldr r0, [r7, #4] - 803f448: f7ff fd34 bl 803eeb4 + 803f486: 6878 ldr r0, [r7, #4] + 803f488: f7ff fd34 bl 803eef4 TCP_EVENT_ERR(last_state, errf, errf_arg, ERR_ABRT); - 803f44c: 693b ldr r3, [r7, #16] - 803f44e: 2b00 cmp r3, #0 - 803f450: d004 beq.n 803f45c - 803f452: 693b ldr r3, [r7, #16] - 803f454: f06f 010c mvn.w r1, #12 - 803f458: 68f8 ldr r0, [r7, #12] - 803f45a: 4798 blx r3 - } -} - 803f45c: 3728 adds r7, #40 ; 0x28 - 803f45e: 46bd mov sp, r7 - 803f460: bd80 pop {r7, pc} - 803f462: bf00 nop - 803f464: 0804ac30 .word 0x0804ac30 - 803f468: 0804ad74 .word 0x0804ad74 - 803f46c: 0804ac74 .word 0x0804ac74 - 803f470: 0804ad90 .word 0x0804ad90 - 803f474: 2400eaf8 .word 0x2400eaf8 - 803f478: 2400eaec .word 0x2400eaec - 803f47c: 2400eaf4 .word 0x2400eaf4 - 803f480: 2400eafc .word 0x2400eafc - -0803f484 : + 803f48c: 693b ldr r3, [r7, #16] + 803f48e: 2b00 cmp r3, #0 + 803f490: d004 beq.n 803f49c + 803f492: 693b ldr r3, [r7, #16] + 803f494: f06f 010c mvn.w r1, #12 + 803f498: 68f8 ldr r0, [r7, #12] + 803f49a: 4798 blx r3 + } +} + 803f49c: 3728 adds r7, #40 ; 0x28 + 803f49e: 46bd mov sp, r7 + 803f4a0: bd80 pop {r7, pc} + 803f4a2: bf00 nop + 803f4a4: 0804ac70 .word 0x0804ac70 + 803f4a8: 0804adb4 .word 0x0804adb4 + 803f4ac: 0804acb4 .word 0x0804acb4 + 803f4b0: 0804add0 .word 0x0804add0 + 803f4b4: 2400eaf8 .word 0x2400eaf8 + 803f4b8: 2400eaec .word 0x2400eaec + 803f4bc: 2400eaf4 .word 0x2400eaf4 + 803f4c0: 2400eafc .word 0x2400eafc + +0803f4c4 : * * @param pcb the tcp pcb to abort */ void tcp_abort(struct tcp_pcb *pcb) { - 803f484: b580 push {r7, lr} - 803f486: b082 sub sp, #8 - 803f488: af00 add r7, sp, #0 - 803f48a: 6078 str r0, [r7, #4] + 803f4c4: b580 push {r7, lr} + 803f4c6: b082 sub sp, #8 + 803f4c8: af00 add r7, sp, #0 + 803f4ca: 6078 str r0, [r7, #4] tcp_abandon(pcb, 1); - 803f48c: 2101 movs r1, #1 - 803f48e: 6878 ldr r0, [r7, #4] - 803f490: f7ff ff3a bl 803f308 + 803f4cc: 2101 movs r1, #1 + 803f4ce: 6878 ldr r0, [r7, #4] + 803f4d0: f7ff ff3a bl 803f348 } - 803f494: bf00 nop - 803f496: 3708 adds r7, #8 - 803f498: 46bd mov sp, r7 - 803f49a: bd80 pop {r7, pc} + 803f4d4: bf00 nop + 803f4d6: 3708 adds r7, #8 + 803f4d8: 46bd mov sp, r7 + 803f4da: bd80 pop {r7, pc} -0803f49c : +0803f4dc : * Returns how much extra window would be advertised if we sent an * update now. */ u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) { - 803f49c: b580 push {r7, lr} - 803f49e: b084 sub sp, #16 - 803f4a0: af00 add r7, sp, #0 - 803f4a2: 6078 str r0, [r7, #4] + 803f4dc: b580 push {r7, lr} + 803f4de: b084 sub sp, #16 + 803f4e0: af00 add r7, sp, #0 + 803f4e2: 6078 str r0, [r7, #4] u32_t new_right_edge; LWIP_ASSERT("tcp_update_rcv_ann_wnd: invalid pcb", pcb != NULL); - 803f4a4: 687b ldr r3, [r7, #4] - 803f4a6: 2b00 cmp r3, #0 - 803f4a8: d106 bne.n 803f4b8 - 803f4aa: 4b25 ldr r3, [pc, #148] ; (803f540 ) - 803f4ac: f240 32a6 movw r2, #934 ; 0x3a6 - 803f4b0: 4924 ldr r1, [pc, #144] ; (803f544 ) - 803f4b2: 4825 ldr r0, [pc, #148] ; (803f548 ) - 803f4b4: f008 fd76 bl 8047fa4 + 803f4e4: 687b ldr r3, [r7, #4] + 803f4e6: 2b00 cmp r3, #0 + 803f4e8: d106 bne.n 803f4f8 + 803f4ea: 4b25 ldr r3, [pc, #148] ; (803f580 ) + 803f4ec: f240 32a6 movw r2, #934 ; 0x3a6 + 803f4f0: 4924 ldr r1, [pc, #144] ; (803f584 ) + 803f4f2: 4825 ldr r0, [pc, #148] ; (803f588 ) + 803f4f4: f008 fd76 bl 8047fe4 new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - 803f4b8: 687b ldr r3, [r7, #4] - 803f4ba: 6a5b ldr r3, [r3, #36] ; 0x24 - 803f4bc: 687a ldr r2, [r7, #4] - 803f4be: 8d12 ldrh r2, [r2, #40] ; 0x28 - 803f4c0: 4413 add r3, r2 - 803f4c2: 60fb str r3, [r7, #12] + 803f4f8: 687b ldr r3, [r7, #4] + 803f4fa: 6a5b ldr r3, [r3, #36] ; 0x24 + 803f4fc: 687a ldr r2, [r7, #4] + 803f4fe: 8d12 ldrh r2, [r2, #40] ; 0x28 + 803f500: 4413 add r3, r2 + 803f502: 60fb str r3, [r7, #12] if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { - 803f4c4: 687b ldr r3, [r7, #4] - 803f4c6: 6adb ldr r3, [r3, #44] ; 0x2c - 803f4c8: 687a ldr r2, [r7, #4] - 803f4ca: 8e52 ldrh r2, [r2, #50] ; 0x32 - 803f4cc: f5b2 6f86 cmp.w r2, #1072 ; 0x430 - 803f4d0: bf28 it cs - 803f4d2: f44f 6286 movcs.w r2, #1072 ; 0x430 - 803f4d6: b292 uxth r2, r2 - 803f4d8: 4413 add r3, r2 - 803f4da: 68fa ldr r2, [r7, #12] - 803f4dc: 1ad3 subs r3, r2, r3 - 803f4de: 2b00 cmp r3, #0 - 803f4e0: db08 blt.n 803f4f4 + 803f504: 687b ldr r3, [r7, #4] + 803f506: 6adb ldr r3, [r3, #44] ; 0x2c + 803f508: 687a ldr r2, [r7, #4] + 803f50a: 8e52 ldrh r2, [r2, #50] ; 0x32 + 803f50c: f5b2 6f86 cmp.w r2, #1072 ; 0x430 + 803f510: bf28 it cs + 803f512: f44f 6286 movcs.w r2, #1072 ; 0x430 + 803f516: b292 uxth r2, r2 + 803f518: 4413 add r3, r2 + 803f51a: 68fa ldr r2, [r7, #12] + 803f51c: 1ad3 subs r3, r2, r3 + 803f51e: 2b00 cmp r3, #0 + 803f520: db08 blt.n 803f534 /* we can advertise more window */ pcb->rcv_ann_wnd = pcb->rcv_wnd; - 803f4e2: 687b ldr r3, [r7, #4] - 803f4e4: 8d1a ldrh r2, [r3, #40] ; 0x28 - 803f4e6: 687b ldr r3, [r7, #4] - 803f4e8: 855a strh r2, [r3, #42] ; 0x2a + 803f522: 687b ldr r3, [r7, #4] + 803f524: 8d1a ldrh r2, [r3, #40] ; 0x28 + 803f526: 687b ldr r3, [r7, #4] + 803f528: 855a strh r2, [r3, #42] ; 0x2a return new_right_edge - pcb->rcv_ann_right_edge; - 803f4ea: 687b ldr r3, [r7, #4] - 803f4ec: 6adb ldr r3, [r3, #44] ; 0x2c - 803f4ee: 68fa ldr r2, [r7, #12] - 803f4f0: 1ad3 subs r3, r2, r3 - 803f4f2: e020 b.n 803f536 + 803f52a: 687b ldr r3, [r7, #4] + 803f52c: 6adb ldr r3, [r3, #44] ; 0x2c + 803f52e: 68fa ldr r2, [r7, #12] + 803f530: 1ad3 subs r3, r2, r3 + 803f532: e020 b.n 803f576 } else { if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { - 803f4f4: 687b ldr r3, [r7, #4] - 803f4f6: 6a5a ldr r2, [r3, #36] ; 0x24 - 803f4f8: 687b ldr r3, [r7, #4] - 803f4fa: 6adb ldr r3, [r3, #44] ; 0x2c - 803f4fc: 1ad3 subs r3, r2, r3 - 803f4fe: 2b00 cmp r3, #0 - 803f500: dd03 ble.n 803f50a + 803f534: 687b ldr r3, [r7, #4] + 803f536: 6a5a ldr r2, [r3, #36] ; 0x24 + 803f538: 687b ldr r3, [r7, #4] + 803f53a: 6adb ldr r3, [r3, #44] ; 0x2c + 803f53c: 1ad3 subs r3, r2, r3 + 803f53e: 2b00 cmp r3, #0 + 803f540: dd03 ble.n 803f54a /* Can happen due to other end sending out of advertised window, * but within actual available (but not yet advertised) window */ pcb->rcv_ann_wnd = 0; - 803f502: 687b ldr r3, [r7, #4] - 803f504: 2200 movs r2, #0 - 803f506: 855a strh r2, [r3, #42] ; 0x2a - 803f508: e014 b.n 803f534 + 803f542: 687b ldr r3, [r7, #4] + 803f544: 2200 movs r2, #0 + 803f546: 855a strh r2, [r3, #42] ; 0x2a + 803f548: e014 b.n 803f574 } else { /* keep the right edge of window constant */ u32_t new_rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; - 803f50a: 687b ldr r3, [r7, #4] - 803f50c: 6ada ldr r2, [r3, #44] ; 0x2c - 803f50e: 687b ldr r3, [r7, #4] - 803f510: 6a5b ldr r3, [r3, #36] ; 0x24 - 803f512: 1ad3 subs r3, r2, r3 - 803f514: 60bb str r3, [r7, #8] + 803f54a: 687b ldr r3, [r7, #4] + 803f54c: 6ada ldr r2, [r3, #44] ; 0x2c + 803f54e: 687b ldr r3, [r7, #4] + 803f550: 6a5b ldr r3, [r3, #36] ; 0x24 + 803f552: 1ad3 subs r3, r2, r3 + 803f554: 60bb str r3, [r7, #8] #if !LWIP_WND_SCALE LWIP_ASSERT("new_rcv_ann_wnd <= 0xffff", new_rcv_ann_wnd <= 0xffff); - 803f516: 68bb ldr r3, [r7, #8] - 803f518: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 803f51c: d306 bcc.n 803f52c - 803f51e: 4b08 ldr r3, [pc, #32] ; (803f540 ) - 803f520: f240 32b6 movw r2, #950 ; 0x3b6 - 803f524: 4909 ldr r1, [pc, #36] ; (803f54c ) - 803f526: 4808 ldr r0, [pc, #32] ; (803f548 ) - 803f528: f008 fd3c bl 8047fa4 + 803f556: 68bb ldr r3, [r7, #8] + 803f558: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 803f55c: d306 bcc.n 803f56c + 803f55e: 4b08 ldr r3, [pc, #32] ; (803f580 ) + 803f560: f240 32b6 movw r2, #950 ; 0x3b6 + 803f564: 4909 ldr r1, [pc, #36] ; (803f58c ) + 803f566: 4808 ldr r0, [pc, #32] ; (803f588 ) + 803f568: f008 fd3c bl 8047fe4 #endif pcb->rcv_ann_wnd = (tcpwnd_size_t)new_rcv_ann_wnd; - 803f52c: 68bb ldr r3, [r7, #8] - 803f52e: b29a uxth r2, r3 - 803f530: 687b ldr r3, [r7, #4] - 803f532: 855a strh r2, [r3, #42] ; 0x2a + 803f56c: 68bb ldr r3, [r7, #8] + 803f56e: b29a uxth r2, r3 + 803f570: 687b ldr r3, [r7, #4] + 803f572: 855a strh r2, [r3, #42] ; 0x2a } return 0; - 803f534: 2300 movs r3, #0 + 803f574: 2300 movs r3, #0 } } - 803f536: 4618 mov r0, r3 - 803f538: 3710 adds r7, #16 - 803f53a: 46bd mov sp, r7 - 803f53c: bd80 pop {r7, pc} - 803f53e: bf00 nop - 803f540: 0804ac30 .word 0x0804ac30 - 803f544: 0804ae8c .word 0x0804ae8c - 803f548: 0804ac74 .word 0x0804ac74 - 803f54c: 0804aeb0 .word 0x0804aeb0 + 803f576: 4618 mov r0, r3 + 803f578: 3710 adds r7, #16 + 803f57a: 46bd mov sp, r7 + 803f57c: bd80 pop {r7, pc} + 803f57e: bf00 nop + 803f580: 0804ac70 .word 0x0804ac70 + 803f584: 0804aecc .word 0x0804aecc + 803f588: 0804acb4 .word 0x0804acb4 + 803f58c: 0804aef0 .word 0x0804aef0 -0803f550 : +0803f590 : * @param pcb the tcp_pcb for which data is read * @param len the amount of bytes that have been read by the application */ void tcp_recved(struct tcp_pcb *pcb, u16_t len) { - 803f550: b580 push {r7, lr} - 803f552: b084 sub sp, #16 - 803f554: af00 add r7, sp, #0 - 803f556: 6078 str r0, [r7, #4] - 803f558: 460b mov r3, r1 - 803f55a: 807b strh r3, [r7, #2] + 803f590: b580 push {r7, lr} + 803f592: b084 sub sp, #16 + 803f594: af00 add r7, sp, #0 + 803f596: 6078 str r0, [r7, #4] + 803f598: 460b mov r3, r1 + 803f59a: 807b strh r3, [r7, #2] u32_t wnd_inflation; tcpwnd_size_t rcv_wnd; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("tcp_recved: invalid pcb", pcb != NULL, return); - 803f55c: 687b ldr r3, [r7, #4] - 803f55e: 2b00 cmp r3, #0 - 803f560: d107 bne.n 803f572 - 803f562: 4b1f ldr r3, [pc, #124] ; (803f5e0 ) - 803f564: f240 32cf movw r2, #975 ; 0x3cf - 803f568: 491e ldr r1, [pc, #120] ; (803f5e4 ) - 803f56a: 481f ldr r0, [pc, #124] ; (803f5e8 ) - 803f56c: f008 fd1a bl 8047fa4 - 803f570: e032 b.n 803f5d8 + 803f59c: 687b ldr r3, [r7, #4] + 803f59e: 2b00 cmp r3, #0 + 803f5a0: d107 bne.n 803f5b2 + 803f5a2: 4b1f ldr r3, [pc, #124] ; (803f620 ) + 803f5a4: f240 32cf movw r2, #975 ; 0x3cf + 803f5a8: 491e ldr r1, [pc, #120] ; (803f624 ) + 803f5aa: 481f ldr r0, [pc, #124] ; (803f628 ) + 803f5ac: f008 fd1a bl 8047fe4 + 803f5b0: e032 b.n 803f618 /* pcb->state LISTEN not allowed here */ LWIP_ASSERT("don't call tcp_recved for listen-pcbs", - 803f572: 687b ldr r3, [r7, #4] - 803f574: 7d1b ldrb r3, [r3, #20] - 803f576: 2b01 cmp r3, #1 - 803f578: d106 bne.n 803f588 - 803f57a: 4b19 ldr r3, [pc, #100] ; (803f5e0 ) - 803f57c: f240 32d2 movw r2, #978 ; 0x3d2 - 803f580: 491a ldr r1, [pc, #104] ; (803f5ec ) - 803f582: 4819 ldr r0, [pc, #100] ; (803f5e8 ) - 803f584: f008 fd0e bl 8047fa4 + 803f5b2: 687b ldr r3, [r7, #4] + 803f5b4: 7d1b ldrb r3, [r3, #20] + 803f5b6: 2b01 cmp r3, #1 + 803f5b8: d106 bne.n 803f5c8 + 803f5ba: 4b19 ldr r3, [pc, #100] ; (803f620 ) + 803f5bc: f240 32d2 movw r2, #978 ; 0x3d2 + 803f5c0: 491a ldr r1, [pc, #104] ; (803f62c ) + 803f5c2: 4819 ldr r0, [pc, #100] ; (803f628 ) + 803f5c4: f008 fd0e bl 8047fe4 pcb->state != LISTEN); rcv_wnd = (tcpwnd_size_t)(pcb->rcv_wnd + len); - 803f588: 687b ldr r3, [r7, #4] - 803f58a: 8d1a ldrh r2, [r3, #40] ; 0x28 - 803f58c: 887b ldrh r3, [r7, #2] - 803f58e: 4413 add r3, r2 - 803f590: 81fb strh r3, [r7, #14] + 803f5c8: 687b ldr r3, [r7, #4] + 803f5ca: 8d1a ldrh r2, [r3, #40] ; 0x28 + 803f5cc: 887b ldrh r3, [r7, #2] + 803f5ce: 4413 add r3, r2 + 803f5d0: 81fb strh r3, [r7, #14] if ((rcv_wnd > TCP_WND_MAX(pcb)) || (rcv_wnd < pcb->rcv_wnd)) { - 803f592: 89fb ldrh r3, [r7, #14] - 803f594: f5b3 6f06 cmp.w r3, #2144 ; 0x860 - 803f598: d804 bhi.n 803f5a4 - 803f59a: 687b ldr r3, [r7, #4] - 803f59c: 8d1b ldrh r3, [r3, #40] ; 0x28 - 803f59e: 89fa ldrh r2, [r7, #14] - 803f5a0: 429a cmp r2, r3 - 803f5a2: d204 bcs.n 803f5ae + 803f5d2: 89fb ldrh r3, [r7, #14] + 803f5d4: f5b3 6f06 cmp.w r3, #2144 ; 0x860 + 803f5d8: d804 bhi.n 803f5e4 + 803f5da: 687b ldr r3, [r7, #4] + 803f5dc: 8d1b ldrh r3, [r3, #40] ; 0x28 + 803f5de: 89fa ldrh r2, [r7, #14] + 803f5e0: 429a cmp r2, r3 + 803f5e2: d204 bcs.n 803f5ee /* window got too big or tcpwnd_size_t overflow */ LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: window got too big or tcpwnd_size_t overflow\n")); pcb->rcv_wnd = TCP_WND_MAX(pcb); - 803f5a4: 687b ldr r3, [r7, #4] - 803f5a6: f44f 6206 mov.w r2, #2144 ; 0x860 - 803f5aa: 851a strh r2, [r3, #40] ; 0x28 - 803f5ac: e002 b.n 803f5b4 + 803f5e4: 687b ldr r3, [r7, #4] + 803f5e6: f44f 6206 mov.w r2, #2144 ; 0x860 + 803f5ea: 851a strh r2, [r3, #40] ; 0x28 + 803f5ec: e002 b.n 803f5f4 } else { pcb->rcv_wnd = rcv_wnd; - 803f5ae: 687b ldr r3, [r7, #4] - 803f5b0: 89fa ldrh r2, [r7, #14] - 803f5b2: 851a strh r2, [r3, #40] ; 0x28 + 803f5ee: 687b ldr r3, [r7, #4] + 803f5f0: 89fa ldrh r2, [r7, #14] + 803f5f2: 851a strh r2, [r3, #40] ; 0x28 } wnd_inflation = tcp_update_rcv_ann_wnd(pcb); - 803f5b4: 6878 ldr r0, [r7, #4] - 803f5b6: f7ff ff71 bl 803f49c - 803f5ba: 60b8 str r0, [r7, #8] + 803f5f4: 6878 ldr r0, [r7, #4] + 803f5f6: f7ff ff71 bl 803f4dc + 803f5fa: 60b8 str r0, [r7, #8] /* If the change in the right edge of window is significant (default * watermark is TCP_WND/4), then send an explicit update now. * Otherwise wait for a packet to be sent in the normal course of * events (or more window to be available later) */ if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) { - 803f5bc: 68bb ldr r3, [r7, #8] - 803f5be: f5b3 7f06 cmp.w r3, #536 ; 0x218 - 803f5c2: d309 bcc.n 803f5d8 + 803f5fc: 68bb ldr r3, [r7, #8] + 803f5fe: f5b3 7f06 cmp.w r3, #536 ; 0x218 + 803f602: d309 bcc.n 803f618 tcp_ack_now(pcb); - 803f5c4: 687b ldr r3, [r7, #4] - 803f5c6: 8b5b ldrh r3, [r3, #26] - 803f5c8: f043 0302 orr.w r3, r3, #2 - 803f5cc: b29a uxth r2, r3 - 803f5ce: 687b ldr r3, [r7, #4] - 803f5d0: 835a strh r2, [r3, #26] + 803f604: 687b ldr r3, [r7, #4] + 803f606: 8b5b ldrh r3, [r3, #26] + 803f608: f043 0302 orr.w r3, r3, #2 + 803f60c: b29a uxth r2, r3 + 803f60e: 687b ldr r3, [r7, #4] + 803f610: 835a strh r2, [r3, #26] tcp_output(pcb); - 803f5d2: 6878 ldr r0, [r7, #4] - 803f5d4: f004 fa9a bl 8043b0c + 803f612: 6878 ldr r0, [r7, #4] + 803f614: f004 fa9a bl 8043b4c } LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: received %"U16_F" bytes, wnd %"TCPWNDSIZE_F" (%"TCPWNDSIZE_F").\n", len, pcb->rcv_wnd, (u16_t)(TCP_WND_MAX(pcb) - pcb->rcv_wnd))); } - 803f5d8: 3710 adds r7, #16 - 803f5da: 46bd mov sp, r7 - 803f5dc: bd80 pop {r7, pc} - 803f5de: bf00 nop - 803f5e0: 0804ac30 .word 0x0804ac30 - 803f5e4: 0804aecc .word 0x0804aecc - 803f5e8: 0804ac74 .word 0x0804ac74 - 803f5ec: 0804aee4 .word 0x0804aee4 + 803f618: 3710 adds r7, #16 + 803f61a: 46bd mov sp, r7 + 803f61c: bd80 pop {r7, pc} + 803f61e: bf00 nop + 803f620: 0804ac70 .word 0x0804ac70 + 803f624: 0804af0c .word 0x0804af0c + 803f628: 0804acb4 .word 0x0804acb4 + 803f62c: 0804af24 .word 0x0804af24 -0803f5f0 : +0803f630 : * * Automatically called from tcp_tmr(). */ void tcp_slowtmr(void) { - 803f5f0: b5b0 push {r4, r5, r7, lr} - 803f5f2: b090 sub sp, #64 ; 0x40 - 803f5f4: af04 add r7, sp, #16 + 803f630: b5b0 push {r4, r5, r7, lr} + 803f632: b090 sub sp, #64 ; 0x40 + 803f634: af04 add r7, sp, #16 tcpwnd_size_t eff_wnd; u8_t pcb_remove; /* flag if a PCB should be removed */ u8_t pcb_reset; /* flag if a RST should be sent when removing */ err_t err; err = ERR_OK; - 803f5f6: 2300 movs r3, #0 - 803f5f8: f887 3025 strb.w r3, [r7, #37] ; 0x25 + 803f636: 2300 movs r3, #0 + 803f638: f887 3025 strb.w r3, [r7, #37] ; 0x25 ++tcp_ticks; - 803f5fc: 4b94 ldr r3, [pc, #592] ; (803f850 ) - 803f5fe: 681b ldr r3, [r3, #0] - 803f600: 3301 adds r3, #1 - 803f602: 4a93 ldr r2, [pc, #588] ; (803f850 ) - 803f604: 6013 str r3, [r2, #0] + 803f63c: 4b94 ldr r3, [pc, #592] ; (803f890 ) + 803f63e: 681b ldr r3, [r3, #0] + 803f640: 3301 adds r3, #1 + 803f642: 4a93 ldr r2, [pc, #588] ; (803f890 ) + 803f644: 6013 str r3, [r2, #0] ++tcp_timer_ctr; - 803f606: 4b93 ldr r3, [pc, #588] ; (803f854 ) - 803f608: 781b ldrb r3, [r3, #0] - 803f60a: 3301 adds r3, #1 - 803f60c: b2da uxtb r2, r3 - 803f60e: 4b91 ldr r3, [pc, #580] ; (803f854 ) - 803f610: 701a strb r2, [r3, #0] + 803f646: 4b93 ldr r3, [pc, #588] ; (803f894 ) + 803f648: 781b ldrb r3, [r3, #0] + 803f64a: 3301 adds r3, #1 + 803f64c: b2da uxtb r2, r3 + 803f64e: 4b91 ldr r3, [pc, #580] ; (803f894 ) + 803f650: 701a strb r2, [r3, #0] tcp_slowtmr_start: /* Steps through all of the active PCBs. */ prev = NULL; - 803f612: 2300 movs r3, #0 - 803f614: 62bb str r3, [r7, #40] ; 0x28 + 803f652: 2300 movs r3, #0 + 803f654: 62bb str r3, [r7, #40] ; 0x28 pcb = tcp_active_pcbs; - 803f616: 4b90 ldr r3, [pc, #576] ; (803f858 ) - 803f618: 681b ldr r3, [r3, #0] - 803f61a: 62fb str r3, [r7, #44] ; 0x2c + 803f656: 4b90 ldr r3, [pc, #576] ; (803f898 ) + 803f658: 681b ldr r3, [r3, #0] + 803f65a: 62fb str r3, [r7, #44] ; 0x2c if (pcb == NULL) { LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n")); } while (pcb != NULL) { - 803f61c: e29d b.n 803fb5a + 803f65c: e29d b.n 803fb9a LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n")); LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED); - 803f61e: 6afb ldr r3, [r7, #44] ; 0x2c - 803f620: 7d1b ldrb r3, [r3, #20] - 803f622: 2b00 cmp r3, #0 - 803f624: d106 bne.n 803f634 - 803f626: 4b8d ldr r3, [pc, #564] ; (803f85c ) - 803f628: f240 42be movw r2, #1214 ; 0x4be - 803f62c: 498c ldr r1, [pc, #560] ; (803f860 ) - 803f62e: 488d ldr r0, [pc, #564] ; (803f864 ) - 803f630: f008 fcb8 bl 8047fa4 + 803f65e: 6afb ldr r3, [r7, #44] ; 0x2c + 803f660: 7d1b ldrb r3, [r3, #20] + 803f662: 2b00 cmp r3, #0 + 803f664: d106 bne.n 803f674 + 803f666: 4b8d ldr r3, [pc, #564] ; (803f89c ) + 803f668: f240 42be movw r2, #1214 ; 0x4be + 803f66c: 498c ldr r1, [pc, #560] ; (803f8a0 ) + 803f66e: 488d ldr r0, [pc, #564] ; (803f8a4 ) + 803f670: f008 fcb8 bl 8047fe4 LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN); - 803f634: 6afb ldr r3, [r7, #44] ; 0x2c - 803f636: 7d1b ldrb r3, [r3, #20] - 803f638: 2b01 cmp r3, #1 - 803f63a: d106 bne.n 803f64a - 803f63c: 4b87 ldr r3, [pc, #540] ; (803f85c ) - 803f63e: f240 42bf movw r2, #1215 ; 0x4bf - 803f642: 4989 ldr r1, [pc, #548] ; (803f868 ) - 803f644: 4887 ldr r0, [pc, #540] ; (803f864 ) - 803f646: f008 fcad bl 8047fa4 + 803f674: 6afb ldr r3, [r7, #44] ; 0x2c + 803f676: 7d1b ldrb r3, [r3, #20] + 803f678: 2b01 cmp r3, #1 + 803f67a: d106 bne.n 803f68a + 803f67c: 4b87 ldr r3, [pc, #540] ; (803f89c ) + 803f67e: f240 42bf movw r2, #1215 ; 0x4bf + 803f682: 4989 ldr r1, [pc, #548] ; (803f8a8 ) + 803f684: 4887 ldr r0, [pc, #540] ; (803f8a4 ) + 803f686: f008 fcad bl 8047fe4 LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT); - 803f64a: 6afb ldr r3, [r7, #44] ; 0x2c - 803f64c: 7d1b ldrb r3, [r3, #20] - 803f64e: 2b0a cmp r3, #10 - 803f650: d106 bne.n 803f660 - 803f652: 4b82 ldr r3, [pc, #520] ; (803f85c ) - 803f654: f44f 6298 mov.w r2, #1216 ; 0x4c0 - 803f658: 4984 ldr r1, [pc, #528] ; (803f86c ) - 803f65a: 4882 ldr r0, [pc, #520] ; (803f864 ) - 803f65c: f008 fca2 bl 8047fa4 + 803f68a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f68c: 7d1b ldrb r3, [r3, #20] + 803f68e: 2b0a cmp r3, #10 + 803f690: d106 bne.n 803f6a0 + 803f692: 4b82 ldr r3, [pc, #520] ; (803f89c ) + 803f694: f44f 6298 mov.w r2, #1216 ; 0x4c0 + 803f698: 4984 ldr r1, [pc, #528] ; (803f8ac ) + 803f69a: 4882 ldr r0, [pc, #520] ; (803f8a4 ) + 803f69c: f008 fca2 bl 8047fe4 if (pcb->last_timer == tcp_timer_ctr) { - 803f660: 6afb ldr r3, [r7, #44] ; 0x2c - 803f662: 7f9a ldrb r2, [r3, #30] - 803f664: 4b7b ldr r3, [pc, #492] ; (803f854 ) - 803f666: 781b ldrb r3, [r3, #0] - 803f668: 429a cmp r2, r3 - 803f66a: d105 bne.n 803f678 + 803f6a0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6a2: 7f9a ldrb r2, [r3, #30] + 803f6a4: 4b7b ldr r3, [pc, #492] ; (803f894 ) + 803f6a6: 781b ldrb r3, [r3, #0] + 803f6a8: 429a cmp r2, r3 + 803f6aa: d105 bne.n 803f6b8 /* skip this pcb, we have already processed it */ prev = pcb; - 803f66c: 6afb ldr r3, [r7, #44] ; 0x2c - 803f66e: 62bb str r3, [r7, #40] ; 0x28 + 803f6ac: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6ae: 62bb str r3, [r7, #40] ; 0x28 pcb = pcb->next; - 803f670: 6afb ldr r3, [r7, #44] ; 0x2c - 803f672: 68db ldr r3, [r3, #12] - 803f674: 62fb str r3, [r7, #44] ; 0x2c + 803f6b0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6b2: 68db ldr r3, [r3, #12] + 803f6b4: 62fb str r3, [r7, #44] ; 0x2c continue; - 803f676: e270 b.n 803fb5a + 803f6b6: e270 b.n 803fb9a } pcb->last_timer = tcp_timer_ctr; - 803f678: 4b76 ldr r3, [pc, #472] ; (803f854 ) - 803f67a: 781a ldrb r2, [r3, #0] - 803f67c: 6afb ldr r3, [r7, #44] ; 0x2c - 803f67e: 779a strb r2, [r3, #30] + 803f6b8: 4b76 ldr r3, [pc, #472] ; (803f894 ) + 803f6ba: 781a ldrb r2, [r3, #0] + 803f6bc: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6be: 779a strb r2, [r3, #30] pcb_remove = 0; - 803f680: 2300 movs r3, #0 - 803f682: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f6c0: 2300 movs r3, #0 + 803f6c2: f887 3027 strb.w r3, [r7, #39] ; 0x27 pcb_reset = 0; - 803f686: 2300 movs r3, #0 - 803f688: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 803f6c6: 2300 movs r3, #0 + 803f6c8: f887 3026 strb.w r3, [r7, #38] ; 0x26 if (pcb->state == SYN_SENT && pcb->nrtx >= TCP_SYNMAXRTX) { - 803f68c: 6afb ldr r3, [r7, #44] ; 0x2c - 803f68e: 7d1b ldrb r3, [r3, #20] - 803f690: 2b02 cmp r3, #2 - 803f692: d10a bne.n 803f6aa - 803f694: 6afb ldr r3, [r7, #44] ; 0x2c - 803f696: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 803f69a: 2b05 cmp r3, #5 - 803f69c: d905 bls.n 803f6aa + 803f6cc: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6ce: 7d1b ldrb r3, [r3, #20] + 803f6d0: 2b02 cmp r3, #2 + 803f6d2: d10a bne.n 803f6ea + 803f6d4: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6d6: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 803f6da: 2b05 cmp r3, #5 + 803f6dc: d905 bls.n 803f6ea ++pcb_remove; - 803f69e: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f6a2: 3301 adds r3, #1 - 803f6a4: f887 3027 strb.w r3, [r7, #39] ; 0x27 - 803f6a8: e11e b.n 803f8e8 + 803f6de: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803f6e2: 3301 adds r3, #1 + 803f6e4: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f6e8: e11e b.n 803f928 LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n")); } else if (pcb->nrtx >= TCP_MAXRTX) { - 803f6aa: 6afb ldr r3, [r7, #44] ; 0x2c - 803f6ac: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 803f6b0: 2b0b cmp r3, #11 - 803f6b2: d905 bls.n 803f6c0 + 803f6ea: 6afb ldr r3, [r7, #44] ; 0x2c + 803f6ec: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 803f6f0: 2b0b cmp r3, #11 + 803f6f2: d905 bls.n 803f700 ++pcb_remove; - 803f6b4: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f6b8: 3301 adds r3, #1 - 803f6ba: f887 3027 strb.w r3, [r7, #39] ; 0x27 - 803f6be: e113 b.n 803f8e8 + 803f6f4: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803f6f8: 3301 adds r3, #1 + 803f6fa: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f6fe: e113 b.n 803f928 LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n")); } else { if (pcb->persist_backoff > 0) { - 803f6c0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f6c2: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 - 803f6c6: 2b00 cmp r3, #0 - 803f6c8: d075 beq.n 803f7b6 + 803f700: 6afb ldr r3, [r7, #44] ; 0x2c + 803f702: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 + 803f706: 2b00 cmp r3, #0 + 803f708: d075 beq.n 803f7f6 LWIP_ASSERT("tcp_slowtimr: persist ticking with in-flight data", pcb->unacked == NULL); - 803f6ca: 6afb ldr r3, [r7, #44] ; 0x2c - 803f6cc: 6f1b ldr r3, [r3, #112] ; 0x70 - 803f6ce: 2b00 cmp r3, #0 - 803f6d0: d006 beq.n 803f6e0 - 803f6d2: 4b62 ldr r3, [pc, #392] ; (803f85c ) - 803f6d4: f240 42d4 movw r2, #1236 ; 0x4d4 - 803f6d8: 4965 ldr r1, [pc, #404] ; (803f870 ) - 803f6da: 4862 ldr r0, [pc, #392] ; (803f864 ) - 803f6dc: f008 fc62 bl 8047fa4 + 803f70a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f70c: 6f1b ldr r3, [r3, #112] ; 0x70 + 803f70e: 2b00 cmp r3, #0 + 803f710: d006 beq.n 803f720 + 803f712: 4b62 ldr r3, [pc, #392] ; (803f89c ) + 803f714: f240 42d4 movw r2, #1236 ; 0x4d4 + 803f718: 4965 ldr r1, [pc, #404] ; (803f8b0 ) + 803f71a: 4862 ldr r0, [pc, #392] ; (803f8a4 ) + 803f71c: f008 fc62 bl 8047fe4 LWIP_ASSERT("tcp_slowtimr: persist ticking with empty send buffer", pcb->unsent != NULL); - 803f6e0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f6e2: 6edb ldr r3, [r3, #108] ; 0x6c - 803f6e4: 2b00 cmp r3, #0 - 803f6e6: d106 bne.n 803f6f6 - 803f6e8: 4b5c ldr r3, [pc, #368] ; (803f85c ) - 803f6ea: f240 42d5 movw r2, #1237 ; 0x4d5 - 803f6ee: 4961 ldr r1, [pc, #388] ; (803f874 ) - 803f6f0: 485c ldr r0, [pc, #368] ; (803f864 ) - 803f6f2: f008 fc57 bl 8047fa4 + 803f720: 6afb ldr r3, [r7, #44] ; 0x2c + 803f722: 6edb ldr r3, [r3, #108] ; 0x6c + 803f724: 2b00 cmp r3, #0 + 803f726: d106 bne.n 803f736 + 803f728: 4b5c ldr r3, [pc, #368] ; (803f89c ) + 803f72a: f240 42d5 movw r2, #1237 ; 0x4d5 + 803f72e: 4961 ldr r1, [pc, #388] ; (803f8b4 ) + 803f730: 485c ldr r0, [pc, #368] ; (803f8a4 ) + 803f732: f008 fc57 bl 8047fe4 if (pcb->persist_probe >= TCP_MAXRTX) { - 803f6f6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f6f8: f893 309a ldrb.w r3, [r3, #154] ; 0x9a - 803f6fc: 2b0b cmp r3, #11 - 803f6fe: d905 bls.n 803f70c + 803f736: 6afb ldr r3, [r7, #44] ; 0x2c + 803f738: f893 309a ldrb.w r3, [r3, #154] ; 0x9a + 803f73c: 2b0b cmp r3, #11 + 803f73e: d905 bls.n 803f74c ++pcb_remove; /* max probes reached */ - 803f700: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f704: 3301 adds r3, #1 - 803f706: f887 3027 strb.w r3, [r7, #39] ; 0x27 - 803f70a: e0ed b.n 803f8e8 + 803f740: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803f744: 3301 adds r3, #1 + 803f746: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f74a: e0ed b.n 803f928 } else { u8_t backoff_cnt = tcp_persist_backoff[pcb->persist_backoff - 1]; - 803f70c: 6afb ldr r3, [r7, #44] ; 0x2c - 803f70e: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 - 803f712: 3b01 subs r3, #1 - 803f714: 4a58 ldr r2, [pc, #352] ; (803f878 ) - 803f716: 5cd3 ldrb r3, [r2, r3] - 803f718: 747b strb r3, [r7, #17] + 803f74c: 6afb ldr r3, [r7, #44] ; 0x2c + 803f74e: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 + 803f752: 3b01 subs r3, #1 + 803f754: 4a58 ldr r2, [pc, #352] ; (803f8b8 ) + 803f756: 5cd3 ldrb r3, [r2, r3] + 803f758: 747b strb r3, [r7, #17] if (pcb->persist_cnt < backoff_cnt) { - 803f71a: 6afb ldr r3, [r7, #44] ; 0x2c - 803f71c: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 - 803f720: 7c7a ldrb r2, [r7, #17] - 803f722: 429a cmp r2, r3 - 803f724: d907 bls.n 803f736 + 803f75a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f75c: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 + 803f760: 7c7a ldrb r2, [r7, #17] + 803f762: 429a cmp r2, r3 + 803f764: d907 bls.n 803f776 pcb->persist_cnt++; - 803f726: 6afb ldr r3, [r7, #44] ; 0x2c - 803f728: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 - 803f72c: 3301 adds r3, #1 - 803f72e: b2da uxtb r2, r3 - 803f730: 6afb ldr r3, [r7, #44] ; 0x2c - 803f732: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 803f766: 6afb ldr r3, [r7, #44] ; 0x2c + 803f768: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 + 803f76c: 3301 adds r3, #1 + 803f76e: b2da uxtb r2, r3 + 803f770: 6afb ldr r3, [r7, #44] ; 0x2c + 803f772: f883 2098 strb.w r2, [r3, #152] ; 0x98 } if (pcb->persist_cnt >= backoff_cnt) { - 803f736: 6afb ldr r3, [r7, #44] ; 0x2c - 803f738: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 - 803f73c: 7c7a ldrb r2, [r7, #17] - 803f73e: 429a cmp r2, r3 - 803f740: f200 80d2 bhi.w 803f8e8 + 803f776: 6afb ldr r3, [r7, #44] ; 0x2c + 803f778: f893 3098 ldrb.w r3, [r3, #152] ; 0x98 + 803f77c: 7c7a ldrb r2, [r7, #17] + 803f77e: 429a cmp r2, r3 + 803f780: f200 80d2 bhi.w 803f928 int next_slot = 1; /* increment timer to next slot */ - 803f744: 2301 movs r3, #1 - 803f746: 623b str r3, [r7, #32] + 803f784: 2301 movs r3, #1 + 803f786: 623b str r3, [r7, #32] /* If snd_wnd is zero, send 1 byte probes */ if (pcb->snd_wnd == 0) { - 803f748: 6afb ldr r3, [r7, #44] ; 0x2c - 803f74a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803f74e: 2b00 cmp r3, #0 - 803f750: d108 bne.n 803f764 + 803f788: 6afb ldr r3, [r7, #44] ; 0x2c + 803f78a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803f78e: 2b00 cmp r3, #0 + 803f790: d108 bne.n 803f7a4 if (tcp_zero_window_probe(pcb) != ERR_OK) { - 803f752: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f754: f005 f882 bl 804485c - 803f758: 4603 mov r3, r0 - 803f75a: 2b00 cmp r3, #0 - 803f75c: d014 beq.n 803f788 + 803f792: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f794: f005 f882 bl 804489c + 803f798: 4603 mov r3, r0 + 803f79a: 2b00 cmp r3, #0 + 803f79c: d014 beq.n 803f7c8 next_slot = 0; /* try probe again with current slot */ - 803f75e: 2300 movs r3, #0 - 803f760: 623b str r3, [r7, #32] - 803f762: e011 b.n 803f788 + 803f79e: 2300 movs r3, #0 + 803f7a0: 623b str r3, [r7, #32] + 803f7a2: e011 b.n 803f7c8 } /* snd_wnd not fully closed, split unsent head and fill window */ } else { if (tcp_split_unsent_seg(pcb, (u16_t)pcb->snd_wnd) == ERR_OK) { - 803f764: 6afb ldr r3, [r7, #44] ; 0x2c - 803f766: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 803f76a: 4619 mov r1, r3 - 803f76c: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f76e: f003 ff47 bl 8043600 - 803f772: 4603 mov r3, r0 - 803f774: 2b00 cmp r3, #0 - 803f776: d107 bne.n 803f788 + 803f7a4: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7a6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 803f7aa: 4619 mov r1, r3 + 803f7ac: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f7ae: f003 ff47 bl 8043640 + 803f7b2: 4603 mov r3, r0 + 803f7b4: 2b00 cmp r3, #0 + 803f7b6: d107 bne.n 803f7c8 if (tcp_output(pcb) == ERR_OK) { - 803f778: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f77a: f004 f9c7 bl 8043b0c - 803f77e: 4603 mov r3, r0 - 803f780: 2b00 cmp r3, #0 - 803f782: d101 bne.n 803f788 + 803f7b8: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f7ba: f004 f9c7 bl 8043b4c + 803f7be: 4603 mov r3, r0 + 803f7c0: 2b00 cmp r3, #0 + 803f7c2: d101 bne.n 803f7c8 /* sending will cancel persist timer, else retry with current slot */ next_slot = 0; - 803f784: 2300 movs r3, #0 - 803f786: 623b str r3, [r7, #32] + 803f7c4: 2300 movs r3, #0 + 803f7c6: 623b str r3, [r7, #32] } } } if (next_slot) { - 803f788: 6a3b ldr r3, [r7, #32] - 803f78a: 2b00 cmp r3, #0 - 803f78c: f000 80ac beq.w 803f8e8 + 803f7c8: 6a3b ldr r3, [r7, #32] + 803f7ca: 2b00 cmp r3, #0 + 803f7cc: f000 80ac beq.w 803f928 pcb->persist_cnt = 0; - 803f790: 6afb ldr r3, [r7, #44] ; 0x2c - 803f792: 2200 movs r2, #0 - 803f794: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 803f7d0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7d2: 2200 movs r2, #0 + 803f7d4: f883 2098 strb.w r2, [r3, #152] ; 0x98 if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { - 803f798: 6afb ldr r3, [r7, #44] ; 0x2c - 803f79a: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 - 803f79e: 2b06 cmp r3, #6 - 803f7a0: f200 80a2 bhi.w 803f8e8 + 803f7d8: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7da: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 + 803f7de: 2b06 cmp r3, #6 + 803f7e0: f200 80a2 bhi.w 803f928 pcb->persist_backoff++; - 803f7a4: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7a6: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 - 803f7aa: 3301 adds r3, #1 - 803f7ac: b2da uxtb r2, r3 - 803f7ae: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7b0: f883 2099 strb.w r2, [r3, #153] ; 0x99 - 803f7b4: e098 b.n 803f8e8 + 803f7e4: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7e6: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 + 803f7ea: 3301 adds r3, #1 + 803f7ec: b2da uxtb r2, r3 + 803f7ee: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7f0: f883 2099 strb.w r2, [r3, #153] ; 0x99 + 803f7f4: e098 b.n 803f928 } } } } else { /* Increase the retransmission timer if it is running */ if ((pcb->rtime >= 0) && (pcb->rtime < 0x7FFF)) { - 803f7b6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7b8: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 - 803f7bc: 2b00 cmp r3, #0 - 803f7be: db0f blt.n 803f7e0 - 803f7c0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7c2: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 - 803f7c6: f647 72ff movw r2, #32767 ; 0x7fff - 803f7ca: 4293 cmp r3, r2 - 803f7cc: d008 beq.n 803f7e0 + 803f7f6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f7f8: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 + 803f7fc: 2b00 cmp r3, #0 + 803f7fe: db0f blt.n 803f820 + 803f800: 6afb ldr r3, [r7, #44] ; 0x2c + 803f802: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 + 803f806: f647 72ff movw r2, #32767 ; 0x7fff + 803f80a: 4293 cmp r3, r2 + 803f80c: d008 beq.n 803f820 ++pcb->rtime; - 803f7ce: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7d0: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 - 803f7d4: b29b uxth r3, r3 - 803f7d6: 3301 adds r3, #1 - 803f7d8: b29b uxth r3, r3 - 803f7da: b21a sxth r2, r3 - 803f7dc: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7de: 861a strh r2, [r3, #48] ; 0x30 + 803f80e: 6afb ldr r3, [r7, #44] ; 0x2c + 803f810: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 + 803f814: b29b uxth r3, r3 + 803f816: 3301 adds r3, #1 + 803f818: b29b uxth r3, r3 + 803f81a: b21a sxth r2, r3 + 803f81c: 6afb ldr r3, [r7, #44] ; 0x2c + 803f81e: 861a strh r2, [r3, #48] ; 0x30 } if (pcb->rtime >= pcb->rto) { - 803f7e0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7e2: f9b3 2030 ldrsh.w r2, [r3, #48] ; 0x30 - 803f7e6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7e8: f9b3 3040 ldrsh.w r3, [r3, #64] ; 0x40 - 803f7ec: 429a cmp r2, r3 - 803f7ee: db7b blt.n 803f8e8 + 803f820: 6afb ldr r3, [r7, #44] ; 0x2c + 803f822: f9b3 2030 ldrsh.w r2, [r3, #48] ; 0x30 + 803f826: 6afb ldr r3, [r7, #44] ; 0x2c + 803f828: f9b3 3040 ldrsh.w r3, [r3, #64] ; 0x40 + 803f82c: 429a cmp r2, r3 + 803f82e: db7b blt.n 803f928 " pcb->rto %"S16_F"\n", pcb->rtime, pcb->rto)); /* If prepare phase fails but we have unsent data but no unacked data, still execute the backoff calculations below, as this means we somehow failed to send segment. */ if ((tcp_rexmit_rto_prepare(pcb) == ERR_OK) || ((pcb->unacked == NULL) && (pcb->unsent != NULL))) { - 803f7f0: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f7f2: f004 fc7d bl 80440f0 - 803f7f6: 4603 mov r3, r0 - 803f7f8: 2b00 cmp r3, #0 - 803f7fa: d007 beq.n 803f80c - 803f7fc: 6afb ldr r3, [r7, #44] ; 0x2c - 803f7fe: 6f1b ldr r3, [r3, #112] ; 0x70 - 803f800: 2b00 cmp r3, #0 - 803f802: d171 bne.n 803f8e8 - 803f804: 6afb ldr r3, [r7, #44] ; 0x2c - 803f806: 6edb ldr r3, [r3, #108] ; 0x6c - 803f808: 2b00 cmp r3, #0 - 803f80a: d06d beq.n 803f8e8 + 803f830: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f832: f004 fc7d bl 8044130 + 803f836: 4603 mov r3, r0 + 803f838: 2b00 cmp r3, #0 + 803f83a: d007 beq.n 803f84c + 803f83c: 6afb ldr r3, [r7, #44] ; 0x2c + 803f83e: 6f1b ldr r3, [r3, #112] ; 0x70 + 803f840: 2b00 cmp r3, #0 + 803f842: d171 bne.n 803f928 + 803f844: 6afb ldr r3, [r7, #44] ; 0x2c + 803f846: 6edb ldr r3, [r3, #108] ; 0x6c + 803f848: 2b00 cmp r3, #0 + 803f84a: d06d beq.n 803f928 /* Double retransmission time-out unless we are trying to * connect to somebody (i.e., we are in SYN_SENT). */ if (pcb->state != SYN_SENT) { - 803f80c: 6afb ldr r3, [r7, #44] ; 0x2c - 803f80e: 7d1b ldrb r3, [r3, #20] - 803f810: 2b02 cmp r3, #2 - 803f812: d03a beq.n 803f88a + 803f84c: 6afb ldr r3, [r7, #44] ; 0x2c + 803f84e: 7d1b ldrb r3, [r3, #20] + 803f850: 2b02 cmp r3, #2 + 803f852: d03a beq.n 803f8ca u8_t backoff_idx = LWIP_MIN(pcb->nrtx, sizeof(tcp_backoff) - 1); - 803f814: 6afb ldr r3, [r7, #44] ; 0x2c - 803f816: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 803f81a: 2b0c cmp r3, #12 - 803f81c: bf28 it cs - 803f81e: 230c movcs r3, #12 - 803f820: 76fb strb r3, [r7, #27] + 803f854: 6afb ldr r3, [r7, #44] ; 0x2c + 803f856: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 803f85a: 2b0c cmp r3, #12 + 803f85c: bf28 it cs + 803f85e: 230c movcs r3, #12 + 803f860: 76fb strb r3, [r7, #27] int calc_rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[backoff_idx]; - 803f822: 6afb ldr r3, [r7, #44] ; 0x2c - 803f824: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c - 803f828: 10db asrs r3, r3, #3 - 803f82a: b21b sxth r3, r3 - 803f82c: 461a mov r2, r3 - 803f82e: 6afb ldr r3, [r7, #44] ; 0x2c - 803f830: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e - 803f834: 4413 add r3, r2 - 803f836: 7efa ldrb r2, [r7, #27] - 803f838: 4910 ldr r1, [pc, #64] ; (803f87c ) - 803f83a: 5c8a ldrb r2, [r1, r2] - 803f83c: 4093 lsls r3, r2 - 803f83e: 617b str r3, [r7, #20] + 803f862: 6afb ldr r3, [r7, #44] ; 0x2c + 803f864: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c + 803f868: 10db asrs r3, r3, #3 + 803f86a: b21b sxth r3, r3 + 803f86c: 461a mov r2, r3 + 803f86e: 6afb ldr r3, [r7, #44] ; 0x2c + 803f870: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e + 803f874: 4413 add r3, r2 + 803f876: 7efa ldrb r2, [r7, #27] + 803f878: 4910 ldr r1, [pc, #64] ; (803f8bc ) + 803f87a: 5c8a ldrb r2, [r1, r2] + 803f87c: 4093 lsls r3, r2 + 803f87e: 617b str r3, [r7, #20] pcb->rto = (s16_t)LWIP_MIN(calc_rto, 0x7FFF); - 803f840: 697b ldr r3, [r7, #20] - 803f842: f647 72fe movw r2, #32766 ; 0x7ffe - 803f846: 4293 cmp r3, r2 - 803f848: dc1a bgt.n 803f880 - 803f84a: 697b ldr r3, [r7, #20] - 803f84c: b21a sxth r2, r3 - 803f84e: e019 b.n 803f884 - 803f850: 2400eae8 .word 0x2400eae8 - 803f854: 2400eafe .word 0x2400eafe - 803f858: 2400eaf4 .word 0x2400eaf4 - 803f85c: 0804ac30 .word 0x0804ac30 - 803f860: 0804af74 .word 0x0804af74 - 803f864: 0804ac74 .word 0x0804ac74 - 803f868: 0804afa0 .word 0x0804afa0 - 803f86c: 0804afcc .word 0x0804afcc - 803f870: 0804affc .word 0x0804affc - 803f874: 0804b030 .word 0x0804b030 - 803f878: 0804d458 .word 0x0804d458 - 803f87c: 0804d448 .word 0x0804d448 - 803f880: f647 72ff movw r2, #32767 ; 0x7fff - 803f884: 6afb ldr r3, [r7, #44] ; 0x2c - 803f886: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + 803f880: 697b ldr r3, [r7, #20] + 803f882: f647 72fe movw r2, #32766 ; 0x7ffe + 803f886: 4293 cmp r3, r2 + 803f888: dc1a bgt.n 803f8c0 + 803f88a: 697b ldr r3, [r7, #20] + 803f88c: b21a sxth r2, r3 + 803f88e: e019 b.n 803f8c4 + 803f890: 2400eae8 .word 0x2400eae8 + 803f894: 2400eafe .word 0x2400eafe + 803f898: 2400eaf4 .word 0x2400eaf4 + 803f89c: 0804ac70 .word 0x0804ac70 + 803f8a0: 0804afb4 .word 0x0804afb4 + 803f8a4: 0804acb4 .word 0x0804acb4 + 803f8a8: 0804afe0 .word 0x0804afe0 + 803f8ac: 0804b00c .word 0x0804b00c + 803f8b0: 0804b03c .word 0x0804b03c + 803f8b4: 0804b070 .word 0x0804b070 + 803f8b8: 0804d498 .word 0x0804d498 + 803f8bc: 0804d488 .word 0x0804d488 + 803f8c0: f647 72ff movw r2, #32767 ; 0x7fff + 803f8c4: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8c6: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 } /* Reset the retransmission timer. */ pcb->rtime = 0; - 803f88a: 6afb ldr r3, [r7, #44] ; 0x2c - 803f88c: 2200 movs r2, #0 - 803f88e: 861a strh r2, [r3, #48] ; 0x30 + 803f8ca: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8cc: 2200 movs r2, #0 + 803f8ce: 861a strh r2, [r3, #48] ; 0x30 /* Reduce congestion window and ssthresh. */ eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); - 803f890: 6afb ldr r3, [r7, #44] ; 0x2c - 803f892: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 803f896: 6afb ldr r3, [r7, #44] ; 0x2c - 803f898: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 803f89c: 4293 cmp r3, r2 - 803f89e: bf28 it cs - 803f8a0: 4613 movcs r3, r2 - 803f8a2: 827b strh r3, [r7, #18] + 803f8d0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8d2: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 803f8d6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8d8: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 803f8dc: 4293 cmp r3, r2 + 803f8de: bf28 it cs + 803f8e0: 4613 movcs r3, r2 + 803f8e2: 827b strh r3, [r7, #18] pcb->ssthresh = eff_wnd >> 1; - 803f8a4: 8a7b ldrh r3, [r7, #18] - 803f8a6: 085b lsrs r3, r3, #1 - 803f8a8: b29a uxth r2, r3 - 803f8aa: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8ac: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 803f8e4: 8a7b ldrh r3, [r7, #18] + 803f8e6: 085b lsrs r3, r3, #1 + 803f8e8: b29a uxth r2, r3 + 803f8ea: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8ec: f8a3 204a strh.w r2, [r3, #74] ; 0x4a if (pcb->ssthresh < (tcpwnd_size_t)(pcb->mss << 1)) { - 803f8b0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8b2: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a - 803f8b6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8b8: 8e5b ldrh r3, [r3, #50] ; 0x32 - 803f8ba: 005b lsls r3, r3, #1 - 803f8bc: b29b uxth r3, r3 - 803f8be: 429a cmp r2, r3 - 803f8c0: d206 bcs.n 803f8d0 + 803f8f0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8f2: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a + 803f8f6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f8f8: 8e5b ldrh r3, [r3, #50] ; 0x32 + 803f8fa: 005b lsls r3, r3, #1 + 803f8fc: b29b uxth r3, r3 + 803f8fe: 429a cmp r2, r3 + 803f900: d206 bcs.n 803f910 pcb->ssthresh = (tcpwnd_size_t)(pcb->mss << 1); - 803f8c2: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8c4: 8e5b ldrh r3, [r3, #50] ; 0x32 - 803f8c6: 005b lsls r3, r3, #1 - 803f8c8: b29a uxth r2, r3 - 803f8ca: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8cc: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 803f902: 6afb ldr r3, [r7, #44] ; 0x2c + 803f904: 8e5b ldrh r3, [r3, #50] ; 0x32 + 803f906: 005b lsls r3, r3, #1 + 803f908: b29a uxth r2, r3 + 803f90a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f90c: f8a3 204a strh.w r2, [r3, #74] ; 0x4a } pcb->cwnd = pcb->mss; - 803f8d0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8d2: 8e5a ldrh r2, [r3, #50] ; 0x32 - 803f8d4: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8d6: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 803f910: 6afb ldr r3, [r7, #44] ; 0x2c + 803f912: 8e5a ldrh r2, [r3, #50] ; 0x32 + 803f914: 6afb ldr r3, [r7, #44] ; 0x2c + 803f916: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"TCPWNDSIZE_F " ssthresh %"TCPWNDSIZE_F"\n", pcb->cwnd, pcb->ssthresh)); pcb->bytes_acked = 0; - 803f8da: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8dc: 2200 movs r2, #0 - 803f8de: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 803f91a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f91c: 2200 movs r2, #0 + 803f91e: f8a3 206a strh.w r2, [r3, #106] ; 0x6a /* The following needs to be called AFTER cwnd is set to one mss - STJ */ tcp_rexmit_rto_commit(pcb); - 803f8e2: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f8e4: f004 fc74 bl 80441d0 + 803f922: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f924: f004 fc74 bl 8044210 } } } } /* Check if this PCB has stayed too long in FIN-WAIT-2 */ if (pcb->state == FIN_WAIT_2) { - 803f8e8: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8ea: 7d1b ldrb r3, [r3, #20] - 803f8ec: 2b06 cmp r3, #6 - 803f8ee: d111 bne.n 803f914 + 803f928: 6afb ldr r3, [r7, #44] ; 0x2c + 803f92a: 7d1b ldrb r3, [r3, #20] + 803f92c: 2b06 cmp r3, #6 + 803f92e: d111 bne.n 803f954 /* If this PCB is in FIN_WAIT_2 because of SHUT_WR don't let it time out. */ if (pcb->flags & TF_RXCLOSED) { - 803f8f0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f8f2: 8b5b ldrh r3, [r3, #26] - 803f8f4: f003 0310 and.w r3, r3, #16 - 803f8f8: 2b00 cmp r3, #0 - 803f8fa: d00b beq.n 803f914 + 803f930: 6afb ldr r3, [r7, #44] ; 0x2c + 803f932: 8b5b ldrh r3, [r3, #26] + 803f934: f003 0310 and.w r3, r3, #16 + 803f938: 2b00 cmp r3, #0 + 803f93a: d00b beq.n 803f954 /* PCB was fully closed (either through close() or SHUT_RDWR): normal FIN-WAIT timeout handling. */ if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f8fc: 4b9c ldr r3, [pc, #624] ; (803fb70 ) - 803f8fe: 681a ldr r2, [r3, #0] - 803f900: 6afb ldr r3, [r7, #44] ; 0x2c - 803f902: 6a1b ldr r3, [r3, #32] - 803f904: 1ad3 subs r3, r2, r3 - 803f906: 2b28 cmp r3, #40 ; 0x28 - 803f908: d904 bls.n 803f914 + 803f93c: 4b9c ldr r3, [pc, #624] ; (803fbb0 ) + 803f93e: 681a ldr r2, [r3, #0] + 803f940: 6afb ldr r3, [r7, #44] ; 0x2c + 803f942: 6a1b ldr r3, [r3, #32] + 803f944: 1ad3 subs r3, r2, r3 + 803f946: 2b28 cmp r3, #40 ; 0x28 + 803f948: d904 bls.n 803f954 TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) { ++pcb_remove; - 803f90a: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f90e: 3301 adds r3, #1 - 803f910: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f94a: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803f94e: 3301 adds r3, #1 + 803f950: f887 3027 strb.w r3, [r7, #39] ; 0x27 } } } /* Check if KEEPALIVE should be sent */ if (ip_get_option(pcb, SOF_KEEPALIVE) && - 803f914: 6afb ldr r3, [r7, #44] ; 0x2c - 803f916: 7a5b ldrb r3, [r3, #9] - 803f918: f003 0308 and.w r3, r3, #8 - 803f91c: 2b00 cmp r3, #0 - 803f91e: d04a beq.n 803f9b6 + 803f954: 6afb ldr r3, [r7, #44] ; 0x2c + 803f956: 7a5b ldrb r3, [r3, #9] + 803f958: f003 0308 and.w r3, r3, #8 + 803f95c: 2b00 cmp r3, #0 + 803f95e: d04a beq.n 803f9f6 ((pcb->state == ESTABLISHED) || - 803f920: 6afb ldr r3, [r7, #44] ; 0x2c - 803f922: 7d1b ldrb r3, [r3, #20] + 803f960: 6afb ldr r3, [r7, #44] ; 0x2c + 803f962: 7d1b ldrb r3, [r3, #20] if (ip_get_option(pcb, SOF_KEEPALIVE) && - 803f924: 2b04 cmp r3, #4 - 803f926: d003 beq.n 803f930 + 803f964: 2b04 cmp r3, #4 + 803f966: d003 beq.n 803f970 (pcb->state == CLOSE_WAIT))) { - 803f928: 6afb ldr r3, [r7, #44] ; 0x2c - 803f92a: 7d1b ldrb r3, [r3, #20] + 803f968: 6afb ldr r3, [r7, #44] ; 0x2c + 803f96a: 7d1b ldrb r3, [r3, #20] ((pcb->state == ESTABLISHED) || - 803f92c: 2b07 cmp r3, #7 - 803f92e: d142 bne.n 803f9b6 + 803f96c: 2b07 cmp r3, #7 + 803f96e: d142 bne.n 803f9f6 if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f930: 4b8f ldr r3, [pc, #572] ; (803fb70 ) - 803f932: 681a ldr r2, [r3, #0] - 803f934: 6afb ldr r3, [r7, #44] ; 0x2c - 803f936: 6a1b ldr r3, [r3, #32] - 803f938: 1ad2 subs r2, r2, r3 + 803f970: 4b8f ldr r3, [pc, #572] ; (803fbb0 ) + 803f972: 681a ldr r2, [r3, #0] + 803f974: 6afb ldr r3, [r7, #44] ; 0x2c + 803f976: 6a1b ldr r3, [r3, #32] + 803f978: 1ad2 subs r2, r2, r3 (pcb->keep_idle + TCP_KEEP_DUR(pcb)) / TCP_SLOW_INTERVAL) { - 803f93a: 6afb ldr r3, [r7, #44] ; 0x2c - 803f93c: f8d3 1094 ldr.w r1, [r3, #148] ; 0x94 - 803f940: 4b8c ldr r3, [pc, #560] ; (803fb74 ) - 803f942: 440b add r3, r1 - 803f944: 498c ldr r1, [pc, #560] ; (803fb78 ) - 803f946: fba1 1303 umull r1, r3, r1, r3 - 803f94a: 095b lsrs r3, r3, #5 + 803f97a: 6afb ldr r3, [r7, #44] ; 0x2c + 803f97c: f8d3 1094 ldr.w r1, [r3, #148] ; 0x94 + 803f980: 4b8c ldr r3, [pc, #560] ; (803fbb4 ) + 803f982: 440b add r3, r1 + 803f984: 498c ldr r1, [pc, #560] ; (803fbb8 ) + 803f986: fba1 1303 umull r1, r3, r1, r3 + 803f98a: 095b lsrs r3, r3, #5 if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f94c: 429a cmp r2, r3 - 803f94e: d90a bls.n 803f966 + 803f98c: 429a cmp r2, r3 + 803f98e: d90a bls.n 803f9a6 LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to ")); ip_addr_debug_print_val(TCP_DEBUG, pcb->remote_ip); LWIP_DEBUGF(TCP_DEBUG, ("\n")); ++pcb_remove; - 803f950: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f954: 3301 adds r3, #1 - 803f956: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803f990: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803f994: 3301 adds r3, #1 + 803f996: f887 3027 strb.w r3, [r7, #39] ; 0x27 ++pcb_reset; - 803f95a: f897 3026 ldrb.w r3, [r7, #38] ; 0x26 - 803f95e: 3301 adds r3, #1 - 803f960: f887 3026 strb.w r3, [r7, #38] ; 0x26 - 803f964: e027 b.n 803f9b6 + 803f99a: f897 3026 ldrb.w r3, [r7, #38] ; 0x26 + 803f99e: 3301 adds r3, #1 + 803f9a0: f887 3026 strb.w r3, [r7, #38] ; 0x26 + 803f9a4: e027 b.n 803f9f6 } else if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f966: 4b82 ldr r3, [pc, #520] ; (803fb70 ) - 803f968: 681a ldr r2, [r3, #0] - 803f96a: 6afb ldr r3, [r7, #44] ; 0x2c - 803f96c: 6a1b ldr r3, [r3, #32] - 803f96e: 1ad2 subs r2, r2, r3 + 803f9a6: 4b82 ldr r3, [pc, #520] ; (803fbb0 ) + 803f9a8: 681a ldr r2, [r3, #0] + 803f9aa: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9ac: 6a1b ldr r3, [r3, #32] + 803f9ae: 1ad2 subs r2, r2, r3 (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEP_INTVL(pcb)) - 803f970: 6afb ldr r3, [r7, #44] ; 0x2c - 803f972: f8d3 1094 ldr.w r1, [r3, #148] ; 0x94 - 803f976: 6afb ldr r3, [r7, #44] ; 0x2c - 803f978: f893 309b ldrb.w r3, [r3, #155] ; 0x9b - 803f97c: 4618 mov r0, r3 - 803f97e: 4b7f ldr r3, [pc, #508] ; (803fb7c ) - 803f980: fb00 f303 mul.w r3, r0, r3 - 803f984: 440b add r3, r1 + 803f9b0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9b2: f8d3 1094 ldr.w r1, [r3, #148] ; 0x94 + 803f9b6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9b8: f893 309b ldrb.w r3, [r3, #155] ; 0x9b + 803f9bc: 4618 mov r0, r3 + 803f9be: 4b7f ldr r3, [pc, #508] ; (803fbbc ) + 803f9c0: fb00 f303 mul.w r3, r0, r3 + 803f9c4: 440b add r3, r1 / TCP_SLOW_INTERVAL) { - 803f986: 497c ldr r1, [pc, #496] ; (803fb78 ) - 803f988: fba1 1303 umull r1, r3, r1, r3 - 803f98c: 095b lsrs r3, r3, #5 + 803f9c6: 497c ldr r1, [pc, #496] ; (803fbb8 ) + 803f9c8: fba1 1303 umull r1, r3, r1, r3 + 803f9cc: 095b lsrs r3, r3, #5 } else if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f98e: 429a cmp r2, r3 - 803f990: d911 bls.n 803f9b6 + 803f9ce: 429a cmp r2, r3 + 803f9d0: d911 bls.n 803f9f6 err = tcp_keepalive(pcb); - 803f992: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f994: f004 ff22 bl 80447dc - 803f998: 4603 mov r3, r0 - 803f99a: f887 3025 strb.w r3, [r7, #37] ; 0x25 + 803f9d2: 6af8 ldr r0, [r7, #44] ; 0x2c + 803f9d4: f004 ff22 bl 804481c + 803f9d8: 4603 mov r3, r0 + 803f9da: f887 3025 strb.w r3, [r7, #37] ; 0x25 if (err == ERR_OK) { - 803f99e: f997 3025 ldrsb.w r3, [r7, #37] ; 0x25 - 803f9a2: 2b00 cmp r3, #0 - 803f9a4: d107 bne.n 803f9b6 + 803f9de: f997 3025 ldrsb.w r3, [r7, #37] ; 0x25 + 803f9e2: 2b00 cmp r3, #0 + 803f9e4: d107 bne.n 803f9f6 pcb->keep_cnt_sent++; - 803f9a6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9a8: f893 309b ldrb.w r3, [r3, #155] ; 0x9b - 803f9ac: 3301 adds r3, #1 - 803f9ae: b2da uxtb r2, r3 - 803f9b0: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9b2: f883 209b strb.w r2, [r3, #155] ; 0x9b + 803f9e6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9e8: f893 309b ldrb.w r3, [r3, #155] ; 0x9b + 803f9ec: 3301 adds r3, #1 + 803f9ee: b2da uxtb r2, r3 + 803f9f0: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9f2: f883 209b strb.w r2, [r3, #155] ; 0x9b /* If this PCB has queued out of sequence data, but has been inactive for too long, will drop the data (it will eventually be retransmitted). */ #if TCP_QUEUE_OOSEQ if (pcb->ooseq != NULL && - 803f9b6: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9b8: 6f5b ldr r3, [r3, #116] ; 0x74 - 803f9ba: 2b00 cmp r3, #0 - 803f9bc: d011 beq.n 803f9e2 + 803f9f6: 6afb ldr r3, [r7, #44] ; 0x2c + 803f9f8: 6f5b ldr r3, [r3, #116] ; 0x74 + 803f9fa: 2b00 cmp r3, #0 + 803f9fc: d011 beq.n 803fa22 (tcp_ticks - pcb->tmr >= (u32_t)pcb->rto * TCP_OOSEQ_TIMEOUT)) { - 803f9be: 4b6c ldr r3, [pc, #432] ; (803fb70 ) - 803f9c0: 681a ldr r2, [r3, #0] - 803f9c2: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9c4: 6a1b ldr r3, [r3, #32] - 803f9c6: 1ad2 subs r2, r2, r3 - 803f9c8: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9ca: f9b3 3040 ldrsh.w r3, [r3, #64] ; 0x40 - 803f9ce: 4619 mov r1, r3 - 803f9d0: 460b mov r3, r1 - 803f9d2: 005b lsls r3, r3, #1 - 803f9d4: 440b add r3, r1 - 803f9d6: 005b lsls r3, r3, #1 + 803f9fe: 4b6c ldr r3, [pc, #432] ; (803fbb0 ) + 803fa00: 681a ldr r2, [r3, #0] + 803fa02: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa04: 6a1b ldr r3, [r3, #32] + 803fa06: 1ad2 subs r2, r2, r3 + 803fa08: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa0a: f9b3 3040 ldrsh.w r3, [r3, #64] ; 0x40 + 803fa0e: 4619 mov r1, r3 + 803fa10: 460b mov r3, r1 + 803fa12: 005b lsls r3, r3, #1 + 803fa14: 440b add r3, r1 + 803fa16: 005b lsls r3, r3, #1 if (pcb->ooseq != NULL && - 803f9d8: 429a cmp r2, r3 - 803f9da: d302 bcc.n 803f9e2 + 803fa18: 429a cmp r2, r3 + 803fa1a: d302 bcc.n 803fa22 LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n")); tcp_free_ooseq(pcb); - 803f9dc: 6af8 ldr r0, [r7, #44] ; 0x2c - 803f9de: f000 fddd bl 804059c + 803fa1c: 6af8 ldr r0, [r7, #44] ; 0x2c + 803fa1e: f000 fddd bl 80405dc } #endif /* TCP_QUEUE_OOSEQ */ /* Check if this PCB has stayed too long in SYN-RCVD */ if (pcb->state == SYN_RCVD) { - 803f9e2: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9e4: 7d1b ldrb r3, [r3, #20] - 803f9e6: 2b03 cmp r3, #3 - 803f9e8: d10b bne.n 803fa02 + 803fa22: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa24: 7d1b ldrb r3, [r3, #20] + 803fa26: 2b03 cmp r3, #3 + 803fa28: d10b bne.n 803fa42 if ((u32_t)(tcp_ticks - pcb->tmr) > - 803f9ea: 4b61 ldr r3, [pc, #388] ; (803fb70 ) - 803f9ec: 681a ldr r2, [r3, #0] - 803f9ee: 6afb ldr r3, [r7, #44] ; 0x2c - 803f9f0: 6a1b ldr r3, [r3, #32] - 803f9f2: 1ad3 subs r3, r2, r3 - 803f9f4: 2b28 cmp r3, #40 ; 0x28 - 803f9f6: d904 bls.n 803fa02 + 803fa2a: 4b61 ldr r3, [pc, #388] ; (803fbb0 ) + 803fa2c: 681a ldr r2, [r3, #0] + 803fa2e: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa30: 6a1b ldr r3, [r3, #32] + 803fa32: 1ad3 subs r3, r2, r3 + 803fa34: 2b28 cmp r3, #40 ; 0x28 + 803fa36: d904 bls.n 803fa42 TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) { ++pcb_remove; - 803f9f8: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803f9fc: 3301 adds r3, #1 - 803f9fe: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803fa38: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803fa3c: 3301 adds r3, #1 + 803fa3e: f887 3027 strb.w r3, [r7, #39] ; 0x27 LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n")); } } /* Check if this PCB has stayed too long in LAST-ACK */ if (pcb->state == LAST_ACK) { - 803fa02: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa04: 7d1b ldrb r3, [r3, #20] - 803fa06: 2b09 cmp r3, #9 - 803fa08: d10b bne.n 803fa22 + 803fa42: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa44: 7d1b ldrb r3, [r3, #20] + 803fa46: 2b09 cmp r3, #9 + 803fa48: d10b bne.n 803fa62 if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - 803fa0a: 4b59 ldr r3, [pc, #356] ; (803fb70 ) - 803fa0c: 681a ldr r2, [r3, #0] - 803fa0e: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa10: 6a1b ldr r3, [r3, #32] - 803fa12: 1ad3 subs r3, r2, r3 - 803fa14: 2bf0 cmp r3, #240 ; 0xf0 - 803fa16: d904 bls.n 803fa22 + 803fa4a: 4b59 ldr r3, [pc, #356] ; (803fbb0 ) + 803fa4c: 681a ldr r2, [r3, #0] + 803fa4e: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa50: 6a1b ldr r3, [r3, #32] + 803fa52: 1ad3 subs r3, r2, r3 + 803fa54: 2bf0 cmp r3, #240 ; 0xf0 + 803fa56: d904 bls.n 803fa62 ++pcb_remove; - 803fa18: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803fa1c: 3301 adds r3, #1 - 803fa1e: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803fa58: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803fa5c: 3301 adds r3, #1 + 803fa5e: f887 3027 strb.w r3, [r7, #39] ; 0x27 LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n")); } } /* If the PCB should be removed, do it. */ if (pcb_remove) { - 803fa22: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803fa26: 2b00 cmp r3, #0 - 803fa28: d060 beq.n 803faec + 803fa62: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803fa66: 2b00 cmp r3, #0 + 803fa68: d060 beq.n 803fb2c struct tcp_pcb *pcb2; #if LWIP_CALLBACK_API tcp_err_fn err_fn = pcb->errf; - 803fa2a: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa2c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 803fa30: 60fb str r3, [r7, #12] + 803fa6a: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa6c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 803fa70: 60fb str r3, [r7, #12] #endif /* LWIP_CALLBACK_API */ void *err_arg; enum tcp_state last_state; tcp_pcb_purge(pcb); - 803fa32: 6af8 ldr r0, [r7, #44] ; 0x2c - 803fa34: f000 fbfe bl 8040234 + 803fa72: 6af8 ldr r0, [r7, #44] ; 0x2c + 803fa74: f000 fbfe bl 8040274 /* Remove PCB from tcp_active_pcbs list. */ if (prev != NULL) { - 803fa38: 6abb ldr r3, [r7, #40] ; 0x28 - 803fa3a: 2b00 cmp r3, #0 - 803fa3c: d010 beq.n 803fa60 + 803fa78: 6abb ldr r3, [r7, #40] ; 0x28 + 803fa7a: 2b00 cmp r3, #0 + 803fa7c: d010 beq.n 803faa0 LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs); - 803fa3e: 4b50 ldr r3, [pc, #320] ; (803fb80 ) - 803fa40: 681b ldr r3, [r3, #0] - 803fa42: 6afa ldr r2, [r7, #44] ; 0x2c - 803fa44: 429a cmp r2, r3 - 803fa46: d106 bne.n 803fa56 - 803fa48: 4b4e ldr r3, [pc, #312] ; (803fb84 ) - 803fa4a: f240 526d movw r2, #1389 ; 0x56d - 803fa4e: 494e ldr r1, [pc, #312] ; (803fb88 ) - 803fa50: 484e ldr r0, [pc, #312] ; (803fb8c ) - 803fa52: f008 faa7 bl 8047fa4 + 803fa7e: 4b50 ldr r3, [pc, #320] ; (803fbc0 ) + 803fa80: 681b ldr r3, [r3, #0] + 803fa82: 6afa ldr r2, [r7, #44] ; 0x2c + 803fa84: 429a cmp r2, r3 + 803fa86: d106 bne.n 803fa96 + 803fa88: 4b4e ldr r3, [pc, #312] ; (803fbc4 ) + 803fa8a: f240 526d movw r2, #1389 ; 0x56d + 803fa8e: 494e ldr r1, [pc, #312] ; (803fbc8 ) + 803fa90: 484e ldr r0, [pc, #312] ; (803fbcc ) + 803fa92: f008 faa7 bl 8047fe4 prev->next = pcb->next; - 803fa56: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa58: 68da ldr r2, [r3, #12] - 803fa5a: 6abb ldr r3, [r7, #40] ; 0x28 - 803fa5c: 60da str r2, [r3, #12] - 803fa5e: e00f b.n 803fa80 + 803fa96: 6afb ldr r3, [r7, #44] ; 0x2c + 803fa98: 68da ldr r2, [r3, #12] + 803fa9a: 6abb ldr r3, [r7, #40] ; 0x28 + 803fa9c: 60da str r2, [r3, #12] + 803fa9e: e00f b.n 803fac0 } else { /* This PCB was the first. */ LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb); - 803fa60: 4b47 ldr r3, [pc, #284] ; (803fb80 ) - 803fa62: 681b ldr r3, [r3, #0] - 803fa64: 6afa ldr r2, [r7, #44] ; 0x2c - 803fa66: 429a cmp r2, r3 - 803fa68: d006 beq.n 803fa78 - 803fa6a: 4b46 ldr r3, [pc, #280] ; (803fb84 ) - 803fa6c: f240 5271 movw r2, #1393 ; 0x571 - 803fa70: 4947 ldr r1, [pc, #284] ; (803fb90 ) - 803fa72: 4846 ldr r0, [pc, #280] ; (803fb8c ) - 803fa74: f008 fa96 bl 8047fa4 + 803faa0: 4b47 ldr r3, [pc, #284] ; (803fbc0 ) + 803faa2: 681b ldr r3, [r3, #0] + 803faa4: 6afa ldr r2, [r7, #44] ; 0x2c + 803faa6: 429a cmp r2, r3 + 803faa8: d006 beq.n 803fab8 + 803faaa: 4b46 ldr r3, [pc, #280] ; (803fbc4 ) + 803faac: f240 5271 movw r2, #1393 ; 0x571 + 803fab0: 4947 ldr r1, [pc, #284] ; (803fbd0 ) + 803fab2: 4846 ldr r0, [pc, #280] ; (803fbcc ) + 803fab4: f008 fa96 bl 8047fe4 tcp_active_pcbs = pcb->next; - 803fa78: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa7a: 68db ldr r3, [r3, #12] - 803fa7c: 4a40 ldr r2, [pc, #256] ; (803fb80 ) - 803fa7e: 6013 str r3, [r2, #0] + 803fab8: 6afb ldr r3, [r7, #44] ; 0x2c + 803faba: 68db ldr r3, [r3, #12] + 803fabc: 4a40 ldr r2, [pc, #256] ; (803fbc0 ) + 803fabe: 6013 str r3, [r2, #0] } if (pcb_reset) { - 803fa80: f897 3026 ldrb.w r3, [r7, #38] ; 0x26 - 803fa84: 2b00 cmp r3, #0 - 803fa86: d013 beq.n 803fab0 + 803fac0: f897 3026 ldrb.w r3, [r7, #38] ; 0x26 + 803fac4: 2b00 cmp r3, #0 + 803fac6: d013 beq.n 803faf0 tcp_rst(pcb, pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - 803fa88: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa8a: 6d18 ldr r0, [r3, #80] ; 0x50 - 803fa8c: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa8e: 6a5c ldr r4, [r3, #36] ; 0x24 - 803fa90: 6afd ldr r5, [r7, #44] ; 0x2c - 803fa92: 6afb ldr r3, [r7, #44] ; 0x2c - 803fa94: 3304 adds r3, #4 - 803fa96: 6afa ldr r2, [r7, #44] ; 0x2c - 803fa98: 8ad2 ldrh r2, [r2, #22] - 803fa9a: 6af9 ldr r1, [r7, #44] ; 0x2c - 803fa9c: 8b09 ldrh r1, [r1, #24] - 803fa9e: 9102 str r1, [sp, #8] - 803faa0: 9201 str r2, [sp, #4] - 803faa2: 9300 str r3, [sp, #0] - 803faa4: 462b mov r3, r5 - 803faa6: 4622 mov r2, r4 - 803faa8: 4601 mov r1, r0 - 803faaa: 6af8 ldr r0, [r7, #44] ; 0x2c - 803faac: f004 fde2 bl 8044674 + 803fac8: 6afb ldr r3, [r7, #44] ; 0x2c + 803faca: 6d18 ldr r0, [r3, #80] ; 0x50 + 803facc: 6afb ldr r3, [r7, #44] ; 0x2c + 803face: 6a5c ldr r4, [r3, #36] ; 0x24 + 803fad0: 6afd ldr r5, [r7, #44] ; 0x2c + 803fad2: 6afb ldr r3, [r7, #44] ; 0x2c + 803fad4: 3304 adds r3, #4 + 803fad6: 6afa ldr r2, [r7, #44] ; 0x2c + 803fad8: 8ad2 ldrh r2, [r2, #22] + 803fada: 6af9 ldr r1, [r7, #44] ; 0x2c + 803fadc: 8b09 ldrh r1, [r1, #24] + 803fade: 9102 str r1, [sp, #8] + 803fae0: 9201 str r2, [sp, #4] + 803fae2: 9300 str r3, [sp, #0] + 803fae4: 462b mov r3, r5 + 803fae6: 4622 mov r2, r4 + 803fae8: 4601 mov r1, r0 + 803faea: 6af8 ldr r0, [r7, #44] ; 0x2c + 803faec: f004 fde2 bl 80446b4 pcb->local_port, pcb->remote_port); } err_arg = pcb->callback_arg; - 803fab0: 6afb ldr r3, [r7, #44] ; 0x2c - 803fab2: 691b ldr r3, [r3, #16] - 803fab4: 60bb str r3, [r7, #8] + 803faf0: 6afb ldr r3, [r7, #44] ; 0x2c + 803faf2: 691b ldr r3, [r3, #16] + 803faf4: 60bb str r3, [r7, #8] last_state = pcb->state; - 803fab6: 6afb ldr r3, [r7, #44] ; 0x2c - 803fab8: 7d1b ldrb r3, [r3, #20] - 803faba: 71fb strb r3, [r7, #7] + 803faf6: 6afb ldr r3, [r7, #44] ; 0x2c + 803faf8: 7d1b ldrb r3, [r3, #20] + 803fafa: 71fb strb r3, [r7, #7] pcb2 = pcb; - 803fabc: 6afb ldr r3, [r7, #44] ; 0x2c - 803fabe: 603b str r3, [r7, #0] + 803fafc: 6afb ldr r3, [r7, #44] ; 0x2c + 803fafe: 603b str r3, [r7, #0] pcb = pcb->next; - 803fac0: 6afb ldr r3, [r7, #44] ; 0x2c - 803fac2: 68db ldr r3, [r3, #12] - 803fac4: 62fb str r3, [r7, #44] ; 0x2c + 803fb00: 6afb ldr r3, [r7, #44] ; 0x2c + 803fb02: 68db ldr r3, [r3, #12] + 803fb04: 62fb str r3, [r7, #44] ; 0x2c tcp_free(pcb2); - 803fac6: 6838 ldr r0, [r7, #0] - 803fac8: f7ff f9f4 bl 803eeb4 + 803fb06: 6838 ldr r0, [r7, #0] + 803fb08: f7ff f9f4 bl 803eef4 tcp_active_pcbs_changed = 0; - 803facc: 4b31 ldr r3, [pc, #196] ; (803fb94 ) - 803face: 2200 movs r2, #0 - 803fad0: 701a strb r2, [r3, #0] + 803fb0c: 4b31 ldr r3, [pc, #196] ; (803fbd4 ) + 803fb0e: 2200 movs r2, #0 + 803fb10: 701a strb r2, [r3, #0] TCP_EVENT_ERR(last_state, err_fn, err_arg, ERR_ABRT); - 803fad2: 68fb ldr r3, [r7, #12] - 803fad4: 2b00 cmp r3, #0 - 803fad6: d004 beq.n 803fae2 - 803fad8: 68fb ldr r3, [r7, #12] - 803fada: f06f 010c mvn.w r1, #12 - 803fade: 68b8 ldr r0, [r7, #8] - 803fae0: 4798 blx r3 + 803fb12: 68fb ldr r3, [r7, #12] + 803fb14: 2b00 cmp r3, #0 + 803fb16: d004 beq.n 803fb22 + 803fb18: 68fb ldr r3, [r7, #12] + 803fb1a: f06f 010c mvn.w r1, #12 + 803fb1e: 68b8 ldr r0, [r7, #8] + 803fb20: 4798 blx r3 if (tcp_active_pcbs_changed) { - 803fae2: 4b2c ldr r3, [pc, #176] ; (803fb94 ) - 803fae4: 781b ldrb r3, [r3, #0] - 803fae6: 2b00 cmp r3, #0 - 803fae8: d037 beq.n 803fb5a + 803fb22: 4b2c ldr r3, [pc, #176] ; (803fbd4 ) + 803fb24: 781b ldrb r3, [r3, #0] + 803fb26: 2b00 cmp r3, #0 + 803fb28: d037 beq.n 803fb9a goto tcp_slowtmr_start; - 803faea: e592 b.n 803f612 + 803fb2a: e592 b.n 803f652 } } else { /* get the 'next' element now and work with 'prev' below (in case of abort) */ prev = pcb; - 803faec: 6afb ldr r3, [r7, #44] ; 0x2c - 803faee: 62bb str r3, [r7, #40] ; 0x28 + 803fb2c: 6afb ldr r3, [r7, #44] ; 0x2c + 803fb2e: 62bb str r3, [r7, #40] ; 0x28 pcb = pcb->next; - 803faf0: 6afb ldr r3, [r7, #44] ; 0x2c - 803faf2: 68db ldr r3, [r3, #12] - 803faf4: 62fb str r3, [r7, #44] ; 0x2c + 803fb30: 6afb ldr r3, [r7, #44] ; 0x2c + 803fb32: 68db ldr r3, [r3, #12] + 803fb34: 62fb str r3, [r7, #44] ; 0x2c /* We check if we should poll the connection. */ ++prev->polltmr; - 803faf6: 6abb ldr r3, [r7, #40] ; 0x28 - 803faf8: 7f1b ldrb r3, [r3, #28] - 803fafa: 3301 adds r3, #1 - 803fafc: b2da uxtb r2, r3 - 803fafe: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb00: 771a strb r2, [r3, #28] + 803fb36: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb38: 7f1b ldrb r3, [r3, #28] + 803fb3a: 3301 adds r3, #1 + 803fb3c: b2da uxtb r2, r3 + 803fb3e: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb40: 771a strb r2, [r3, #28] if (prev->polltmr >= prev->pollinterval) { - 803fb02: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb04: 7f1a ldrb r2, [r3, #28] - 803fb06: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb08: 7f5b ldrb r3, [r3, #29] - 803fb0a: 429a cmp r2, r3 - 803fb0c: d325 bcc.n 803fb5a + 803fb42: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb44: 7f1a ldrb r2, [r3, #28] + 803fb46: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb48: 7f5b ldrb r3, [r3, #29] + 803fb4a: 429a cmp r2, r3 + 803fb4c: d325 bcc.n 803fb9a prev->polltmr = 0; - 803fb0e: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb10: 2200 movs r2, #0 - 803fb12: 771a strb r2, [r3, #28] + 803fb4e: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb50: 2200 movs r2, #0 + 803fb52: 771a strb r2, [r3, #28] LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n")); tcp_active_pcbs_changed = 0; - 803fb14: 4b1f ldr r3, [pc, #124] ; (803fb94 ) - 803fb16: 2200 movs r2, #0 - 803fb18: 701a strb r2, [r3, #0] + 803fb54: 4b1f ldr r3, [pc, #124] ; (803fbd4 ) + 803fb56: 2200 movs r2, #0 + 803fb58: 701a strb r2, [r3, #0] TCP_EVENT_POLL(prev, err); - 803fb1a: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb1c: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803fb20: 2b00 cmp r3, #0 - 803fb22: d00b beq.n 803fb3c - 803fb24: 6abb ldr r3, [r7, #40] ; 0x28 - 803fb26: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c - 803fb2a: 6aba ldr r2, [r7, #40] ; 0x28 - 803fb2c: 6912 ldr r2, [r2, #16] - 803fb2e: 6ab9 ldr r1, [r7, #40] ; 0x28 - 803fb30: 4610 mov r0, r2 - 803fb32: 4798 blx r3 - 803fb34: 4603 mov r3, r0 - 803fb36: f887 3025 strb.w r3, [r7, #37] ; 0x25 - 803fb3a: e002 b.n 803fb42 - 803fb3c: 2300 movs r3, #0 - 803fb3e: f887 3025 strb.w r3, [r7, #37] ; 0x25 + 803fb5a: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb5c: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803fb60: 2b00 cmp r3, #0 + 803fb62: d00b beq.n 803fb7c + 803fb64: 6abb ldr r3, [r7, #40] ; 0x28 + 803fb66: f8d3 308c ldr.w r3, [r3, #140] ; 0x8c + 803fb6a: 6aba ldr r2, [r7, #40] ; 0x28 + 803fb6c: 6912 ldr r2, [r2, #16] + 803fb6e: 6ab9 ldr r1, [r7, #40] ; 0x28 + 803fb70: 4610 mov r0, r2 + 803fb72: 4798 blx r3 + 803fb74: 4603 mov r3, r0 + 803fb76: f887 3025 strb.w r3, [r7, #37] ; 0x25 + 803fb7a: e002 b.n 803fb82 + 803fb7c: 2300 movs r3, #0 + 803fb7e: f887 3025 strb.w r3, [r7, #37] ; 0x25 if (tcp_active_pcbs_changed) { - 803fb42: 4b14 ldr r3, [pc, #80] ; (803fb94 ) - 803fb44: 781b ldrb r3, [r3, #0] - 803fb46: 2b00 cmp r3, #0 - 803fb48: d000 beq.n 803fb4c + 803fb82: 4b14 ldr r3, [pc, #80] ; (803fbd4 ) + 803fb84: 781b ldrb r3, [r3, #0] + 803fb86: 2b00 cmp r3, #0 + 803fb88: d000 beq.n 803fb8c goto tcp_slowtmr_start; - 803fb4a: e562 b.n 803f612 + 803fb8a: e562 b.n 803f652 } /* if err == ERR_ABRT, 'prev' is already deallocated */ if (err == ERR_OK) { - 803fb4c: f997 3025 ldrsb.w r3, [r7, #37] ; 0x25 - 803fb50: 2b00 cmp r3, #0 - 803fb52: d102 bne.n 803fb5a + 803fb8c: f997 3025 ldrsb.w r3, [r7, #37] ; 0x25 + 803fb90: 2b00 cmp r3, #0 + 803fb92: d102 bne.n 803fb9a tcp_output(prev); - 803fb54: 6ab8 ldr r0, [r7, #40] ; 0x28 - 803fb56: f003 ffd9 bl 8043b0c + 803fb94: 6ab8 ldr r0, [r7, #40] ; 0x28 + 803fb96: f003 ffd9 bl 8043b4c while (pcb != NULL) { - 803fb5a: 6afb ldr r3, [r7, #44] ; 0x2c - 803fb5c: 2b00 cmp r3, #0 - 803fb5e: f47f ad5e bne.w 803f61e + 803fb9a: 6afb ldr r3, [r7, #44] ; 0x2c + 803fb9c: 2b00 cmp r3, #0 + 803fb9e: f47f ad5e bne.w 803f65e } } /* Steps through all of the TIME-WAIT PCBs. */ prev = NULL; - 803fb62: 2300 movs r3, #0 - 803fb64: 62bb str r3, [r7, #40] ; 0x28 + 803fba2: 2300 movs r3, #0 + 803fba4: 62bb str r3, [r7, #40] ; 0x28 pcb = tcp_tw_pcbs; - 803fb66: 4b0c ldr r3, [pc, #48] ; (803fb98 ) - 803fb68: 681b ldr r3, [r3, #0] - 803fb6a: 62fb str r3, [r7, #44] ; 0x2c + 803fba6: 4b0c ldr r3, [pc, #48] ; (803fbd8 ) + 803fba8: 681b ldr r3, [r3, #0] + 803fbaa: 62fb str r3, [r7, #44] ; 0x2c while (pcb != NULL) { - 803fb6c: e069 b.n 803fc42 - 803fb6e: bf00 nop - 803fb70: 2400eae8 .word 0x2400eae8 - 803fb74: 000a4cb8 .word 0x000a4cb8 - 803fb78: 10624dd3 .word 0x10624dd3 - 803fb7c: 000124f8 .word 0x000124f8 - 803fb80: 2400eaf4 .word 0x2400eaf4 - 803fb84: 0804ac30 .word 0x0804ac30 - 803fb88: 0804b068 .word 0x0804b068 - 803fb8c: 0804ac74 .word 0x0804ac74 - 803fb90: 0804b094 .word 0x0804b094 - 803fb94: 2400eafc .word 0x2400eafc - 803fb98: 2400eaf8 .word 0x2400eaf8 + 803fbac: e069 b.n 803fc82 + 803fbae: bf00 nop + 803fbb0: 2400eae8 .word 0x2400eae8 + 803fbb4: 000a4cb8 .word 0x000a4cb8 + 803fbb8: 10624dd3 .word 0x10624dd3 + 803fbbc: 000124f8 .word 0x000124f8 + 803fbc0: 2400eaf4 .word 0x2400eaf4 + 803fbc4: 0804ac70 .word 0x0804ac70 + 803fbc8: 0804b0a8 .word 0x0804b0a8 + 803fbcc: 0804acb4 .word 0x0804acb4 + 803fbd0: 0804b0d4 .word 0x0804b0d4 + 803fbd4: 2400eafc .word 0x2400eafc + 803fbd8: 2400eaf8 .word 0x2400eaf8 LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - 803fb9c: 6afb ldr r3, [r7, #44] ; 0x2c - 803fb9e: 7d1b ldrb r3, [r3, #20] - 803fba0: 2b0a cmp r3, #10 - 803fba2: d006 beq.n 803fbb2 - 803fba4: 4b2b ldr r3, [pc, #172] ; (803fc54 ) - 803fba6: f240 52a1 movw r2, #1441 ; 0x5a1 - 803fbaa: 492b ldr r1, [pc, #172] ; (803fc58 ) - 803fbac: 482b ldr r0, [pc, #172] ; (803fc5c ) - 803fbae: f008 f9f9 bl 8047fa4 + 803fbdc: 6afb ldr r3, [r7, #44] ; 0x2c + 803fbde: 7d1b ldrb r3, [r3, #20] + 803fbe0: 2b0a cmp r3, #10 + 803fbe2: d006 beq.n 803fbf2 + 803fbe4: 4b2b ldr r3, [pc, #172] ; (803fc94 ) + 803fbe6: f240 52a1 movw r2, #1441 ; 0x5a1 + 803fbea: 492b ldr r1, [pc, #172] ; (803fc98 ) + 803fbec: 482b ldr r0, [pc, #172] ; (803fc9c ) + 803fbee: f008 f9f9 bl 8047fe4 pcb_remove = 0; - 803fbb2: 2300 movs r3, #0 - 803fbb4: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803fbf2: 2300 movs r3, #0 + 803fbf4: f887 3027 strb.w r3, [r7, #39] ; 0x27 /* Check if this PCB has stayed long enough in TIME-WAIT */ if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - 803fbb8: 4b29 ldr r3, [pc, #164] ; (803fc60 ) - 803fbba: 681a ldr r2, [r3, #0] - 803fbbc: 6afb ldr r3, [r7, #44] ; 0x2c - 803fbbe: 6a1b ldr r3, [r3, #32] - 803fbc0: 1ad3 subs r3, r2, r3 - 803fbc2: 2bf0 cmp r3, #240 ; 0xf0 - 803fbc4: d904 bls.n 803fbd0 + 803fbf8: 4b29 ldr r3, [pc, #164] ; (803fca0 ) + 803fbfa: 681a ldr r2, [r3, #0] + 803fbfc: 6afb ldr r3, [r7, #44] ; 0x2c + 803fbfe: 6a1b ldr r3, [r3, #32] + 803fc00: 1ad3 subs r3, r2, r3 + 803fc02: 2bf0 cmp r3, #240 ; 0xf0 + 803fc04: d904 bls.n 803fc10 ++pcb_remove; - 803fbc6: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803fbca: 3301 adds r3, #1 - 803fbcc: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 803fc06: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803fc0a: 3301 adds r3, #1 + 803fc0c: f887 3027 strb.w r3, [r7, #39] ; 0x27 } /* If the PCB should be removed, do it. */ if (pcb_remove) { - 803fbd0: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 803fbd4: 2b00 cmp r3, #0 - 803fbd6: d02f beq.n 803fc38 + 803fc10: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 803fc14: 2b00 cmp r3, #0 + 803fc16: d02f beq.n 803fc78 struct tcp_pcb *pcb2; tcp_pcb_purge(pcb); - 803fbd8: 6af8 ldr r0, [r7, #44] ; 0x2c - 803fbda: f000 fb2b bl 8040234 + 803fc18: 6af8 ldr r0, [r7, #44] ; 0x2c + 803fc1a: f000 fb2b bl 8040274 /* Remove PCB from tcp_tw_pcbs list. */ if (prev != NULL) { - 803fbde: 6abb ldr r3, [r7, #40] ; 0x28 - 803fbe0: 2b00 cmp r3, #0 - 803fbe2: d010 beq.n 803fc06 + 803fc1e: 6abb ldr r3, [r7, #40] ; 0x28 + 803fc20: 2b00 cmp r3, #0 + 803fc22: d010 beq.n 803fc46 LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs); - 803fbe4: 4b1f ldr r3, [pc, #124] ; (803fc64 ) - 803fbe6: 681b ldr r3, [r3, #0] - 803fbe8: 6afa ldr r2, [r7, #44] ; 0x2c - 803fbea: 429a cmp r2, r3 - 803fbec: d106 bne.n 803fbfc - 803fbee: 4b19 ldr r3, [pc, #100] ; (803fc54 ) - 803fbf0: f240 52af movw r2, #1455 ; 0x5af - 803fbf4: 491c ldr r1, [pc, #112] ; (803fc68 ) - 803fbf6: 4819 ldr r0, [pc, #100] ; (803fc5c ) - 803fbf8: f008 f9d4 bl 8047fa4 + 803fc24: 4b1f ldr r3, [pc, #124] ; (803fca4 ) + 803fc26: 681b ldr r3, [r3, #0] + 803fc28: 6afa ldr r2, [r7, #44] ; 0x2c + 803fc2a: 429a cmp r2, r3 + 803fc2c: d106 bne.n 803fc3c + 803fc2e: 4b19 ldr r3, [pc, #100] ; (803fc94 ) + 803fc30: f240 52af movw r2, #1455 ; 0x5af + 803fc34: 491c ldr r1, [pc, #112] ; (803fca8 ) + 803fc36: 4819 ldr r0, [pc, #100] ; (803fc9c ) + 803fc38: f008 f9d4 bl 8047fe4 prev->next = pcb->next; - 803fbfc: 6afb ldr r3, [r7, #44] ; 0x2c - 803fbfe: 68da ldr r2, [r3, #12] - 803fc00: 6abb ldr r3, [r7, #40] ; 0x28 - 803fc02: 60da str r2, [r3, #12] - 803fc04: e00f b.n 803fc26 + 803fc3c: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc3e: 68da ldr r2, [r3, #12] + 803fc40: 6abb ldr r3, [r7, #40] ; 0x28 + 803fc42: 60da str r2, [r3, #12] + 803fc44: e00f b.n 803fc66 } else { /* This PCB was the first. */ LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb); - 803fc06: 4b17 ldr r3, [pc, #92] ; (803fc64 ) - 803fc08: 681b ldr r3, [r3, #0] - 803fc0a: 6afa ldr r2, [r7, #44] ; 0x2c - 803fc0c: 429a cmp r2, r3 - 803fc0e: d006 beq.n 803fc1e - 803fc10: 4b10 ldr r3, [pc, #64] ; (803fc54 ) - 803fc12: f240 52b3 movw r2, #1459 ; 0x5b3 - 803fc16: 4915 ldr r1, [pc, #84] ; (803fc6c ) - 803fc18: 4810 ldr r0, [pc, #64] ; (803fc5c ) - 803fc1a: f008 f9c3 bl 8047fa4 + 803fc46: 4b17 ldr r3, [pc, #92] ; (803fca4 ) + 803fc48: 681b ldr r3, [r3, #0] + 803fc4a: 6afa ldr r2, [r7, #44] ; 0x2c + 803fc4c: 429a cmp r2, r3 + 803fc4e: d006 beq.n 803fc5e + 803fc50: 4b10 ldr r3, [pc, #64] ; (803fc94 ) + 803fc52: f240 52b3 movw r2, #1459 ; 0x5b3 + 803fc56: 4915 ldr r1, [pc, #84] ; (803fcac ) + 803fc58: 4810 ldr r0, [pc, #64] ; (803fc9c ) + 803fc5a: f008 f9c3 bl 8047fe4 tcp_tw_pcbs = pcb->next; - 803fc1e: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc20: 68db ldr r3, [r3, #12] - 803fc22: 4a10 ldr r2, [pc, #64] ; (803fc64 ) - 803fc24: 6013 str r3, [r2, #0] + 803fc5e: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc60: 68db ldr r3, [r3, #12] + 803fc62: 4a10 ldr r2, [pc, #64] ; (803fca4 ) + 803fc64: 6013 str r3, [r2, #0] } pcb2 = pcb; - 803fc26: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc28: 61fb str r3, [r7, #28] + 803fc66: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc68: 61fb str r3, [r7, #28] pcb = pcb->next; - 803fc2a: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc2c: 68db ldr r3, [r3, #12] - 803fc2e: 62fb str r3, [r7, #44] ; 0x2c + 803fc6a: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc6c: 68db ldr r3, [r3, #12] + 803fc6e: 62fb str r3, [r7, #44] ; 0x2c tcp_free(pcb2); - 803fc30: 69f8 ldr r0, [r7, #28] - 803fc32: f7ff f93f bl 803eeb4 - 803fc36: e004 b.n 803fc42 + 803fc70: 69f8 ldr r0, [r7, #28] + 803fc72: f7ff f93f bl 803eef4 + 803fc76: e004 b.n 803fc82 } else { prev = pcb; - 803fc38: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc3a: 62bb str r3, [r7, #40] ; 0x28 + 803fc78: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc7a: 62bb str r3, [r7, #40] ; 0x28 pcb = pcb->next; - 803fc3c: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc3e: 68db ldr r3, [r3, #12] - 803fc40: 62fb str r3, [r7, #44] ; 0x2c + 803fc7c: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc7e: 68db ldr r3, [r3, #12] + 803fc80: 62fb str r3, [r7, #44] ; 0x2c while (pcb != NULL) { - 803fc42: 6afb ldr r3, [r7, #44] ; 0x2c - 803fc44: 2b00 cmp r3, #0 - 803fc46: d1a9 bne.n 803fb9c - } - } -} - 803fc48: bf00 nop - 803fc4a: bf00 nop - 803fc4c: 3730 adds r7, #48 ; 0x30 - 803fc4e: 46bd mov sp, r7 - 803fc50: bdb0 pop {r4, r5, r7, pc} - 803fc52: bf00 nop - 803fc54: 0804ac30 .word 0x0804ac30 - 803fc58: 0804b0c0 .word 0x0804b0c0 - 803fc5c: 0804ac74 .word 0x0804ac74 - 803fc60: 2400eae8 .word 0x2400eae8 - 803fc64: 2400eaf8 .word 0x2400eaf8 - 803fc68: 0804b0f0 .word 0x0804b0f0 - 803fc6c: 0804b118 .word 0x0804b118 - -0803fc70 : + 803fc82: 6afb ldr r3, [r7, #44] ; 0x2c + 803fc84: 2b00 cmp r3, #0 + 803fc86: d1a9 bne.n 803fbdc + } + } +} + 803fc88: bf00 nop + 803fc8a: bf00 nop + 803fc8c: 3730 adds r7, #48 ; 0x30 + 803fc8e: 46bd mov sp, r7 + 803fc90: bdb0 pop {r4, r5, r7, pc} + 803fc92: bf00 nop + 803fc94: 0804ac70 .word 0x0804ac70 + 803fc98: 0804b100 .word 0x0804b100 + 803fc9c: 0804acb4 .word 0x0804acb4 + 803fca0: 2400eae8 .word 0x2400eae8 + 803fca4: 2400eaf8 .word 0x2400eaf8 + 803fca8: 0804b130 .word 0x0804b130 + 803fcac: 0804b158 .word 0x0804b158 + +0803fcb0 : * * Automatically called from tcp_tmr(). */ void tcp_fasttmr(void) { - 803fc70: b580 push {r7, lr} - 803fc72: b082 sub sp, #8 - 803fc74: af00 add r7, sp, #0 + 803fcb0: b580 push {r7, lr} + 803fcb2: b082 sub sp, #8 + 803fcb4: af00 add r7, sp, #0 struct tcp_pcb *pcb; ++tcp_timer_ctr; - 803fc76: 4b2d ldr r3, [pc, #180] ; (803fd2c ) - 803fc78: 781b ldrb r3, [r3, #0] - 803fc7a: 3301 adds r3, #1 - 803fc7c: b2da uxtb r2, r3 - 803fc7e: 4b2b ldr r3, [pc, #172] ; (803fd2c ) - 803fc80: 701a strb r2, [r3, #0] + 803fcb6: 4b2d ldr r3, [pc, #180] ; (803fd6c ) + 803fcb8: 781b ldrb r3, [r3, #0] + 803fcba: 3301 adds r3, #1 + 803fcbc: b2da uxtb r2, r3 + 803fcbe: 4b2b ldr r3, [pc, #172] ; (803fd6c ) + 803fcc0: 701a strb r2, [r3, #0] tcp_fasttmr_start: pcb = tcp_active_pcbs; - 803fc82: 4b2b ldr r3, [pc, #172] ; (803fd30 ) - 803fc84: 681b ldr r3, [r3, #0] - 803fc86: 607b str r3, [r7, #4] + 803fcc2: 4b2b ldr r3, [pc, #172] ; (803fd70 ) + 803fcc4: 681b ldr r3, [r3, #0] + 803fcc6: 607b str r3, [r7, #4] while (pcb != NULL) { - 803fc88: e048 b.n 803fd1c + 803fcc8: e048 b.n 803fd5c if (pcb->last_timer != tcp_timer_ctr) { - 803fc8a: 687b ldr r3, [r7, #4] - 803fc8c: 7f9a ldrb r2, [r3, #30] - 803fc8e: 4b27 ldr r3, [pc, #156] ; (803fd2c ) - 803fc90: 781b ldrb r3, [r3, #0] - 803fc92: 429a cmp r2, r3 - 803fc94: d03f beq.n 803fd16 + 803fcca: 687b ldr r3, [r7, #4] + 803fccc: 7f9a ldrb r2, [r3, #30] + 803fcce: 4b27 ldr r3, [pc, #156] ; (803fd6c ) + 803fcd0: 781b ldrb r3, [r3, #0] + 803fcd2: 429a cmp r2, r3 + 803fcd4: d03f beq.n 803fd56 struct tcp_pcb *next; pcb->last_timer = tcp_timer_ctr; - 803fc96: 4b25 ldr r3, [pc, #148] ; (803fd2c ) - 803fc98: 781a ldrb r2, [r3, #0] - 803fc9a: 687b ldr r3, [r7, #4] - 803fc9c: 779a strb r2, [r3, #30] + 803fcd6: 4b25 ldr r3, [pc, #148] ; (803fd6c ) + 803fcd8: 781a ldrb r2, [r3, #0] + 803fcda: 687b ldr r3, [r7, #4] + 803fcdc: 779a strb r2, [r3, #30] /* send delayed ACKs */ if (pcb->flags & TF_ACK_DELAY) { - 803fc9e: 687b ldr r3, [r7, #4] - 803fca0: 8b5b ldrh r3, [r3, #26] - 803fca2: f003 0301 and.w r3, r3, #1 - 803fca6: 2b00 cmp r3, #0 - 803fca8: d010 beq.n 803fccc + 803fcde: 687b ldr r3, [r7, #4] + 803fce0: 8b5b ldrh r3, [r3, #26] + 803fce2: f003 0301 and.w r3, r3, #1 + 803fce6: 2b00 cmp r3, #0 + 803fce8: d010 beq.n 803fd0c LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n")); tcp_ack_now(pcb); - 803fcaa: 687b ldr r3, [r7, #4] - 803fcac: 8b5b ldrh r3, [r3, #26] - 803fcae: f043 0302 orr.w r3, r3, #2 - 803fcb2: b29a uxth r2, r3 - 803fcb4: 687b ldr r3, [r7, #4] - 803fcb6: 835a strh r2, [r3, #26] + 803fcea: 687b ldr r3, [r7, #4] + 803fcec: 8b5b ldrh r3, [r3, #26] + 803fcee: f043 0302 orr.w r3, r3, #2 + 803fcf2: b29a uxth r2, r3 + 803fcf4: 687b ldr r3, [r7, #4] + 803fcf6: 835a strh r2, [r3, #26] tcp_output(pcb); - 803fcb8: 6878 ldr r0, [r7, #4] - 803fcba: f003 ff27 bl 8043b0c + 803fcf8: 6878 ldr r0, [r7, #4] + 803fcfa: f003 ff27 bl 8043b4c tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 803fcbe: 687b ldr r3, [r7, #4] - 803fcc0: 8b5b ldrh r3, [r3, #26] - 803fcc2: f023 0303 bic.w r3, r3, #3 - 803fcc6: b29a uxth r2, r3 - 803fcc8: 687b ldr r3, [r7, #4] - 803fcca: 835a strh r2, [r3, #26] + 803fcfe: 687b ldr r3, [r7, #4] + 803fd00: 8b5b ldrh r3, [r3, #26] + 803fd02: f023 0303 bic.w r3, r3, #3 + 803fd06: b29a uxth r2, r3 + 803fd08: 687b ldr r3, [r7, #4] + 803fd0a: 835a strh r2, [r3, #26] } /* send pending FIN */ if (pcb->flags & TF_CLOSEPEND) { - 803fccc: 687b ldr r3, [r7, #4] - 803fcce: 8b5b ldrh r3, [r3, #26] - 803fcd0: f003 0308 and.w r3, r3, #8 - 803fcd4: 2b00 cmp r3, #0 - 803fcd6: d009 beq.n 803fcec + 803fd0c: 687b ldr r3, [r7, #4] + 803fd0e: 8b5b ldrh r3, [r3, #26] + 803fd10: f003 0308 and.w r3, r3, #8 + 803fd14: 2b00 cmp r3, #0 + 803fd16: d009 beq.n 803fd2c LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: pending FIN\n")); tcp_clear_flags(pcb, TF_CLOSEPEND); - 803fcd8: 687b ldr r3, [r7, #4] - 803fcda: 8b5b ldrh r3, [r3, #26] - 803fcdc: f023 0308 bic.w r3, r3, #8 - 803fce0: b29a uxth r2, r3 - 803fce2: 687b ldr r3, [r7, #4] - 803fce4: 835a strh r2, [r3, #26] + 803fd18: 687b ldr r3, [r7, #4] + 803fd1a: 8b5b ldrh r3, [r3, #26] + 803fd1c: f023 0308 bic.w r3, r3, #8 + 803fd20: b29a uxth r2, r3 + 803fd22: 687b ldr r3, [r7, #4] + 803fd24: 835a strh r2, [r3, #26] tcp_close_shutdown_fin(pcb); - 803fce6: 6878 ldr r0, [r7, #4] - 803fce8: f7ff fa78 bl 803f1dc + 803fd26: 6878 ldr r0, [r7, #4] + 803fd28: f7ff fa78 bl 803f21c } next = pcb->next; - 803fcec: 687b ldr r3, [r7, #4] - 803fcee: 68db ldr r3, [r3, #12] - 803fcf0: 603b str r3, [r7, #0] + 803fd2c: 687b ldr r3, [r7, #4] + 803fd2e: 68db ldr r3, [r3, #12] + 803fd30: 603b str r3, [r7, #0] /* If there is data which was previously "refused" by upper layer */ if (pcb->refused_data != NULL) { - 803fcf2: 687b ldr r3, [r7, #4] - 803fcf4: 6f9b ldr r3, [r3, #120] ; 0x78 - 803fcf6: 2b00 cmp r3, #0 - 803fcf8: d00a beq.n 803fd10 + 803fd32: 687b ldr r3, [r7, #4] + 803fd34: 6f9b ldr r3, [r3, #120] ; 0x78 + 803fd36: 2b00 cmp r3, #0 + 803fd38: d00a beq.n 803fd50 tcp_active_pcbs_changed = 0; - 803fcfa: 4b0e ldr r3, [pc, #56] ; (803fd34 ) - 803fcfc: 2200 movs r2, #0 - 803fcfe: 701a strb r2, [r3, #0] + 803fd3a: 4b0e ldr r3, [pc, #56] ; (803fd74 ) + 803fd3c: 2200 movs r2, #0 + 803fd3e: 701a strb r2, [r3, #0] tcp_process_refused_data(pcb); - 803fd00: 6878 ldr r0, [r7, #4] - 803fd02: f000 f819 bl 803fd38 + 803fd40: 6878 ldr r0, [r7, #4] + 803fd42: f000 f819 bl 803fd78 if (tcp_active_pcbs_changed) { - 803fd06: 4b0b ldr r3, [pc, #44] ; (803fd34 ) - 803fd08: 781b ldrb r3, [r3, #0] - 803fd0a: 2b00 cmp r3, #0 - 803fd0c: d000 beq.n 803fd10 + 803fd46: 4b0b ldr r3, [pc, #44] ; (803fd74 ) + 803fd48: 781b ldrb r3, [r3, #0] + 803fd4a: 2b00 cmp r3, #0 + 803fd4c: d000 beq.n 803fd50 /* application callback has changed the pcb list: restart the loop */ goto tcp_fasttmr_start; - 803fd0e: e7b8 b.n 803fc82 + 803fd4e: e7b8 b.n 803fcc2 } } pcb = next; - 803fd10: 683b ldr r3, [r7, #0] - 803fd12: 607b str r3, [r7, #4] - 803fd14: e002 b.n 803fd1c + 803fd50: 683b ldr r3, [r7, #0] + 803fd52: 607b str r3, [r7, #4] + 803fd54: e002 b.n 803fd5c } else { pcb = pcb->next; - 803fd16: 687b ldr r3, [r7, #4] - 803fd18: 68db ldr r3, [r3, #12] - 803fd1a: 607b str r3, [r7, #4] + 803fd56: 687b ldr r3, [r7, #4] + 803fd58: 68db ldr r3, [r3, #12] + 803fd5a: 607b str r3, [r7, #4] while (pcb != NULL) { - 803fd1c: 687b ldr r3, [r7, #4] - 803fd1e: 2b00 cmp r3, #0 - 803fd20: d1b3 bne.n 803fc8a + 803fd5c: 687b ldr r3, [r7, #4] + 803fd5e: 2b00 cmp r3, #0 + 803fd60: d1b3 bne.n 803fcca } } } - 803fd22: bf00 nop - 803fd24: bf00 nop - 803fd26: 3708 adds r7, #8 - 803fd28: 46bd mov sp, r7 - 803fd2a: bd80 pop {r7, pc} - 803fd2c: 2400eafe .word 0x2400eafe - 803fd30: 2400eaf4 .word 0x2400eaf4 - 803fd34: 2400eafc .word 0x2400eafc + 803fd62: bf00 nop + 803fd64: bf00 nop + 803fd66: 3708 adds r7, #8 + 803fd68: 46bd mov sp, r7 + 803fd6a: bd80 pop {r7, pc} + 803fd6c: 2400eafe .word 0x2400eafe + 803fd70: 2400eaf4 .word 0x2400eaf4 + 803fd74: 2400eafc .word 0x2400eafc -0803fd38 : +0803fd78 : } /** Pass pcb->refused_data to the recv callback */ err_t tcp_process_refused_data(struct tcp_pcb *pcb) { - 803fd38: b590 push {r4, r7, lr} - 803fd3a: b085 sub sp, #20 - 803fd3c: af00 add r7, sp, #0 - 803fd3e: 6078 str r0, [r7, #4] + 803fd78: b590 push {r4, r7, lr} + 803fd7a: b085 sub sp, #20 + 803fd7c: af00 add r7, sp, #0 + 803fd7e: 6078 str r0, [r7, #4] #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE struct pbuf *rest; #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ LWIP_ERROR("tcp_process_refused_data: invalid pcb", pcb != NULL, return ERR_ARG); - 803fd40: 687b ldr r3, [r7, #4] - 803fd42: 2b00 cmp r3, #0 - 803fd44: d109 bne.n 803fd5a - 803fd46: 4b37 ldr r3, [pc, #220] ; (803fe24 ) - 803fd48: f240 6209 movw r2, #1545 ; 0x609 - 803fd4c: 4936 ldr r1, [pc, #216] ; (803fe28 ) - 803fd4e: 4837 ldr r0, [pc, #220] ; (803fe2c ) - 803fd50: f008 f928 bl 8047fa4 - 803fd54: f06f 030f mvn.w r3, #15 - 803fd58: e060 b.n 803fe1c + 803fd80: 687b ldr r3, [r7, #4] + 803fd82: 2b00 cmp r3, #0 + 803fd84: d109 bne.n 803fd9a + 803fd86: 4b37 ldr r3, [pc, #220] ; (803fe64 ) + 803fd88: f240 6209 movw r2, #1545 ; 0x609 + 803fd8c: 4936 ldr r1, [pc, #216] ; (803fe68 ) + 803fd8e: 4837 ldr r0, [pc, #220] ; (803fe6c ) + 803fd90: f008 f928 bl 8047fe4 + 803fd94: f06f 030f mvn.w r3, #15 + 803fd98: e060 b.n 803fe5c #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE while (pcb->refused_data != NULL) #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ { err_t err; u8_t refused_flags = pcb->refused_data->flags; - 803fd5a: 687b ldr r3, [r7, #4] - 803fd5c: 6f9b ldr r3, [r3, #120] ; 0x78 - 803fd5e: 7b5b ldrb r3, [r3, #13] - 803fd60: 73bb strb r3, [r7, #14] + 803fd9a: 687b ldr r3, [r7, #4] + 803fd9c: 6f9b ldr r3, [r3, #120] ; 0x78 + 803fd9e: 7b5b ldrb r3, [r3, #13] + 803fda0: 73bb strb r3, [r7, #14] /* set pcb->refused_data to NULL in case the callback frees it and then closes the pcb */ struct pbuf *refused_data = pcb->refused_data; - 803fd62: 687b ldr r3, [r7, #4] - 803fd64: 6f9b ldr r3, [r3, #120] ; 0x78 - 803fd66: 60bb str r3, [r7, #8] + 803fda2: 687b ldr r3, [r7, #4] + 803fda4: 6f9b ldr r3, [r3, #120] ; 0x78 + 803fda6: 60bb str r3, [r7, #8] #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE pbuf_split_64k(refused_data, &rest); pcb->refused_data = rest; #else /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ pcb->refused_data = NULL; - 803fd68: 687b ldr r3, [r7, #4] - 803fd6a: 2200 movs r2, #0 - 803fd6c: 679a str r2, [r3, #120] ; 0x78 + 803fda8: 687b ldr r3, [r7, #4] + 803fdaa: 2200 movs r2, #0 + 803fdac: 679a str r2, [r3, #120] ; 0x78 #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ /* Notify again application with data previously received. */ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n")); TCP_EVENT_RECV(pcb, refused_data, ERR_OK, err); - 803fd6e: 687b ldr r3, [r7, #4] - 803fd70: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 803fd74: 2b00 cmp r3, #0 - 803fd76: d00b beq.n 803fd90 - 803fd78: 687b ldr r3, [r7, #4] - 803fd7a: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 - 803fd7e: 687b ldr r3, [r7, #4] - 803fd80: 6918 ldr r0, [r3, #16] - 803fd82: 2300 movs r3, #0 - 803fd84: 68ba ldr r2, [r7, #8] - 803fd86: 6879 ldr r1, [r7, #4] - 803fd88: 47a0 blx r4 - 803fd8a: 4603 mov r3, r0 - 803fd8c: 73fb strb r3, [r7, #15] - 803fd8e: e007 b.n 803fda0 - 803fd90: 2300 movs r3, #0 - 803fd92: 68ba ldr r2, [r7, #8] - 803fd94: 6879 ldr r1, [r7, #4] - 803fd96: 2000 movs r0, #0 - 803fd98: f000 f8a4 bl 803fee4 - 803fd9c: 4603 mov r3, r0 - 803fd9e: 73fb strb r3, [r7, #15] + 803fdae: 687b ldr r3, [r7, #4] + 803fdb0: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803fdb4: 2b00 cmp r3, #0 + 803fdb6: d00b beq.n 803fdd0 + 803fdb8: 687b ldr r3, [r7, #4] + 803fdba: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 + 803fdbe: 687b ldr r3, [r7, #4] + 803fdc0: 6918 ldr r0, [r3, #16] + 803fdc2: 2300 movs r3, #0 + 803fdc4: 68ba ldr r2, [r7, #8] + 803fdc6: 6879 ldr r1, [r7, #4] + 803fdc8: 47a0 blx r4 + 803fdca: 4603 mov r3, r0 + 803fdcc: 73fb strb r3, [r7, #15] + 803fdce: e007 b.n 803fde0 + 803fdd0: 2300 movs r3, #0 + 803fdd2: 68ba ldr r2, [r7, #8] + 803fdd4: 6879 ldr r1, [r7, #4] + 803fdd6: 2000 movs r0, #0 + 803fdd8: f000 f8a4 bl 803ff24 + 803fddc: 4603 mov r3, r0 + 803fdde: 73fb strb r3, [r7, #15] if (err == ERR_OK) { - 803fda0: f997 300f ldrsb.w r3, [r7, #15] - 803fda4: 2b00 cmp r3, #0 - 803fda6: d12a bne.n 803fdfe + 803fde0: f997 300f ldrsb.w r3, [r7, #15] + 803fde4: 2b00 cmp r3, #0 + 803fde6: d12a bne.n 803fe3e /* did refused_data include a FIN? */ if ((refused_flags & PBUF_FLAG_TCP_FIN) - 803fda8: 7bbb ldrb r3, [r7, #14] - 803fdaa: f003 0320 and.w r3, r3, #32 - 803fdae: 2b00 cmp r3, #0 - 803fdb0: d033 beq.n 803fe1a + 803fde8: 7bbb ldrb r3, [r7, #14] + 803fdea: f003 0320 and.w r3, r3, #32 + 803fdee: 2b00 cmp r3, #0 + 803fdf0: d033 beq.n 803fe5a && (rest == NULL) #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ ) { /* correct rcv_wnd as the application won't call tcp_recved() for the FIN's seqno */ if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) { - 803fdb2: 687b ldr r3, [r7, #4] - 803fdb4: 8d1b ldrh r3, [r3, #40] ; 0x28 - 803fdb6: f5b3 6f06 cmp.w r3, #2144 ; 0x860 - 803fdba: d005 beq.n 803fdc8 + 803fdf2: 687b ldr r3, [r7, #4] + 803fdf4: 8d1b ldrh r3, [r3, #40] ; 0x28 + 803fdf6: f5b3 6f06 cmp.w r3, #2144 ; 0x860 + 803fdfa: d005 beq.n 803fe08 pcb->rcv_wnd++; - 803fdbc: 687b ldr r3, [r7, #4] - 803fdbe: 8d1b ldrh r3, [r3, #40] ; 0x28 - 803fdc0: 3301 adds r3, #1 - 803fdc2: b29a uxth r2, r3 - 803fdc4: 687b ldr r3, [r7, #4] - 803fdc6: 851a strh r2, [r3, #40] ; 0x28 + 803fdfc: 687b ldr r3, [r7, #4] + 803fdfe: 8d1b ldrh r3, [r3, #40] ; 0x28 + 803fe00: 3301 adds r3, #1 + 803fe02: b29a uxth r2, r3 + 803fe04: 687b ldr r3, [r7, #4] + 803fe06: 851a strh r2, [r3, #40] ; 0x28 } TCP_EVENT_CLOSED(pcb, err); - 803fdc8: 687b ldr r3, [r7, #4] - 803fdca: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 803fdce: 2b00 cmp r3, #0 - 803fdd0: d00b beq.n 803fdea - 803fdd2: 687b ldr r3, [r7, #4] - 803fdd4: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 - 803fdd8: 687b ldr r3, [r7, #4] - 803fdda: 6918 ldr r0, [r3, #16] - 803fddc: 2300 movs r3, #0 - 803fdde: 2200 movs r2, #0 - 803fde0: 6879 ldr r1, [r7, #4] - 803fde2: 47a0 blx r4 - 803fde4: 4603 mov r3, r0 - 803fde6: 73fb strb r3, [r7, #15] - 803fde8: e001 b.n 803fdee - 803fdea: 2300 movs r3, #0 - 803fdec: 73fb strb r3, [r7, #15] + 803fe08: 687b ldr r3, [r7, #4] + 803fe0a: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 803fe0e: 2b00 cmp r3, #0 + 803fe10: d00b beq.n 803fe2a + 803fe12: 687b ldr r3, [r7, #4] + 803fe14: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 + 803fe18: 687b ldr r3, [r7, #4] + 803fe1a: 6918 ldr r0, [r3, #16] + 803fe1c: 2300 movs r3, #0 + 803fe1e: 2200 movs r2, #0 + 803fe20: 6879 ldr r1, [r7, #4] + 803fe22: 47a0 blx r4 + 803fe24: 4603 mov r3, r0 + 803fe26: 73fb strb r3, [r7, #15] + 803fe28: e001 b.n 803fe2e + 803fe2a: 2300 movs r3, #0 + 803fe2c: 73fb strb r3, [r7, #15] if (err == ERR_ABRT) { - 803fdee: f997 300f ldrsb.w r3, [r7, #15] - 803fdf2: f113 0f0d cmn.w r3, #13 - 803fdf6: d110 bne.n 803fe1a + 803fe2e: f997 300f ldrsb.w r3, [r7, #15] + 803fe32: f113 0f0d cmn.w r3, #13 + 803fe36: d110 bne.n 803fe5a return ERR_ABRT; - 803fdf8: f06f 030c mvn.w r3, #12 - 803fdfc: e00e b.n 803fe1c + 803fe38: f06f 030c mvn.w r3, #12 + 803fe3c: e00e b.n 803fe5c } } } else if (err == ERR_ABRT) { - 803fdfe: f997 300f ldrsb.w r3, [r7, #15] - 803fe02: f113 0f0d cmn.w r3, #13 - 803fe06: d102 bne.n 803fe0e + 803fe3e: f997 300f ldrsb.w r3, [r7, #15] + 803fe42: f113 0f0d cmn.w r3, #13 + 803fe46: d102 bne.n 803fe4e /* if err == ERR_ABRT, 'pcb' is already deallocated */ /* Drop incoming packets because pcb is "full" (only if the incoming segment contains data). */ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n")); return ERR_ABRT; - 803fe08: f06f 030c mvn.w r3, #12 - 803fe0c: e006 b.n 803fe1c + 803fe48: f06f 030c mvn.w r3, #12 + 803fe4c: e006 b.n 803fe5c #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE if (rest != NULL) { pbuf_cat(refused_data, rest); } #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ pcb->refused_data = refused_data; - 803fe0e: 687b ldr r3, [r7, #4] - 803fe10: 68ba ldr r2, [r7, #8] - 803fe12: 679a str r2, [r3, #120] ; 0x78 + 803fe4e: 687b ldr r3, [r7, #4] + 803fe50: 68ba ldr r2, [r7, #8] + 803fe52: 679a str r2, [r3, #120] ; 0x78 return ERR_INPROGRESS; - 803fe14: f06f 0304 mvn.w r3, #4 - 803fe18: e000 b.n 803fe1c + 803fe54: f06f 0304 mvn.w r3, #4 + 803fe58: e000 b.n 803fe5c } } return ERR_OK; - 803fe1a: 2300 movs r3, #0 + 803fe5a: 2300 movs r3, #0 } - 803fe1c: 4618 mov r0, r3 - 803fe1e: 3714 adds r7, #20 - 803fe20: 46bd mov sp, r7 - 803fe22: bd90 pop {r4, r7, pc} - 803fe24: 0804ac30 .word 0x0804ac30 - 803fe28: 0804b140 .word 0x0804b140 - 803fe2c: 0804ac74 .word 0x0804ac74 + 803fe5c: 4618 mov r0, r3 + 803fe5e: 3714 adds r7, #20 + 803fe60: 46bd mov sp, r7 + 803fe62: bd90 pop {r4, r7, pc} + 803fe64: 0804ac70 .word 0x0804ac70 + 803fe68: 0804b180 .word 0x0804b180 + 803fe6c: 0804acb4 .word 0x0804acb4 -0803fe30 : +0803fe70 : * * @param seg tcp_seg list of TCP segments to free */ void tcp_segs_free(struct tcp_seg *seg) { - 803fe30: b580 push {r7, lr} - 803fe32: b084 sub sp, #16 - 803fe34: af00 add r7, sp, #0 - 803fe36: 6078 str r0, [r7, #4] + 803fe70: b580 push {r7, lr} + 803fe72: b084 sub sp, #16 + 803fe74: af00 add r7, sp, #0 + 803fe76: 6078 str r0, [r7, #4] while (seg != NULL) { - 803fe38: e007 b.n 803fe4a + 803fe78: e007 b.n 803fe8a struct tcp_seg *next = seg->next; - 803fe3a: 687b ldr r3, [r7, #4] - 803fe3c: 681b ldr r3, [r3, #0] - 803fe3e: 60fb str r3, [r7, #12] + 803fe7a: 687b ldr r3, [r7, #4] + 803fe7c: 681b ldr r3, [r3, #0] + 803fe7e: 60fb str r3, [r7, #12] tcp_seg_free(seg); - 803fe40: 6878 ldr r0, [r7, #4] - 803fe42: f000 f80a bl 803fe5a + 803fe80: 6878 ldr r0, [r7, #4] + 803fe82: f000 f80a bl 803fe9a seg = next; - 803fe46: 68fb ldr r3, [r7, #12] - 803fe48: 607b str r3, [r7, #4] + 803fe86: 68fb ldr r3, [r7, #12] + 803fe88: 607b str r3, [r7, #4] while (seg != NULL) { - 803fe4a: 687b ldr r3, [r7, #4] - 803fe4c: 2b00 cmp r3, #0 - 803fe4e: d1f4 bne.n 803fe3a + 803fe8a: 687b ldr r3, [r7, #4] + 803fe8c: 2b00 cmp r3, #0 + 803fe8e: d1f4 bne.n 803fe7a } } - 803fe50: bf00 nop - 803fe52: bf00 nop - 803fe54: 3710 adds r7, #16 - 803fe56: 46bd mov sp, r7 - 803fe58: bd80 pop {r7, pc} + 803fe90: bf00 nop + 803fe92: bf00 nop + 803fe94: 3710 adds r7, #16 + 803fe96: 46bd mov sp, r7 + 803fe98: bd80 pop {r7, pc} -0803fe5a : +0803fe9a : * * @param seg single tcp_seg to free */ void tcp_seg_free(struct tcp_seg *seg) { - 803fe5a: b580 push {r7, lr} - 803fe5c: b082 sub sp, #8 - 803fe5e: af00 add r7, sp, #0 - 803fe60: 6078 str r0, [r7, #4] + 803fe9a: b580 push {r7, lr} + 803fe9c: b082 sub sp, #8 + 803fe9e: af00 add r7, sp, #0 + 803fea0: 6078 str r0, [r7, #4] if (seg != NULL) { - 803fe62: 687b ldr r3, [r7, #4] - 803fe64: 2b00 cmp r3, #0 - 803fe66: d00c beq.n 803fe82 + 803fea2: 687b ldr r3, [r7, #4] + 803fea4: 2b00 cmp r3, #0 + 803fea6: d00c beq.n 803fec2 if (seg->p != NULL) { - 803fe68: 687b ldr r3, [r7, #4] - 803fe6a: 685b ldr r3, [r3, #4] - 803fe6c: 2b00 cmp r3, #0 - 803fe6e: d004 beq.n 803fe7a + 803fea8: 687b ldr r3, [r7, #4] + 803feaa: 685b ldr r3, [r3, #4] + 803feac: 2b00 cmp r3, #0 + 803feae: d004 beq.n 803feba pbuf_free(seg->p); - 803fe70: 687b ldr r3, [r7, #4] - 803fe72: 685b ldr r3, [r3, #4] - 803fe74: 4618 mov r0, r3 - 803fe76: f7fe fcdb bl 803e830 + 803feb0: 687b ldr r3, [r7, #4] + 803feb2: 685b ldr r3, [r3, #4] + 803feb4: 4618 mov r0, r3 + 803feb6: f7fe fcdb bl 803e870 #if TCP_DEBUG seg->p = NULL; #endif /* TCP_DEBUG */ } memp_free(MEMP_TCP_SEG, seg); - 803fe7a: 6879 ldr r1, [r7, #4] - 803fe7c: 2003 movs r0, #3 - 803fe7e: f7fd fe45 bl 803db0c + 803feba: 6879 ldr r1, [r7, #4] + 803febc: 2003 movs r0, #3 + 803febe: f7fd fe45 bl 803db4c } } - 803fe82: bf00 nop - 803fe84: 3708 adds r7, #8 - 803fe86: 46bd mov sp, r7 - 803fe88: bd80 pop {r7, pc} + 803fec2: bf00 nop + 803fec4: 3708 adds r7, #8 + 803fec6: 46bd mov sp, r7 + 803fec8: bd80 pop {r7, pc} ... -0803fe8c : +0803fecc : * @param seg the old tcp_seg * @return a copy of seg */ struct tcp_seg * tcp_seg_copy(struct tcp_seg *seg) { - 803fe8c: b580 push {r7, lr} - 803fe8e: b084 sub sp, #16 - 803fe90: af00 add r7, sp, #0 - 803fe92: 6078 str r0, [r7, #4] + 803fecc: b580 push {r7, lr} + 803fece: b084 sub sp, #16 + 803fed0: af00 add r7, sp, #0 + 803fed2: 6078 str r0, [r7, #4] struct tcp_seg *cseg; LWIP_ASSERT("tcp_seg_copy: invalid seg", seg != NULL); - 803fe94: 687b ldr r3, [r7, #4] - 803fe96: 2b00 cmp r3, #0 - 803fe98: d106 bne.n 803fea8 - 803fe9a: 4b0f ldr r3, [pc, #60] ; (803fed8 ) - 803fe9c: f240 6282 movw r2, #1666 ; 0x682 - 803fea0: 490e ldr r1, [pc, #56] ; (803fedc ) - 803fea2: 480f ldr r0, [pc, #60] ; (803fee0 ) - 803fea4: f008 f87e bl 8047fa4 + 803fed4: 687b ldr r3, [r7, #4] + 803fed6: 2b00 cmp r3, #0 + 803fed8: d106 bne.n 803fee8 + 803feda: 4b0f ldr r3, [pc, #60] ; (803ff18 ) + 803fedc: f240 6282 movw r2, #1666 ; 0x682 + 803fee0: 490e ldr r1, [pc, #56] ; (803ff1c ) + 803fee2: 480f ldr r0, [pc, #60] ; (803ff20 ) + 803fee4: f008 f87e bl 8047fe4 cseg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG); - 803fea8: 2003 movs r0, #3 - 803feaa: f7fd fdbf bl 803da2c - 803feae: 60f8 str r0, [r7, #12] + 803fee8: 2003 movs r0, #3 + 803feea: f7fd fdbf bl 803da6c + 803feee: 60f8 str r0, [r7, #12] if (cseg == NULL) { - 803feb0: 68fb ldr r3, [r7, #12] - 803feb2: 2b00 cmp r3, #0 - 803feb4: d101 bne.n 803feba + 803fef0: 68fb ldr r3, [r7, #12] + 803fef2: 2b00 cmp r3, #0 + 803fef4: d101 bne.n 803fefa return NULL; - 803feb6: 2300 movs r3, #0 - 803feb8: e00a b.n 803fed0 + 803fef6: 2300 movs r3, #0 + 803fef8: e00a b.n 803ff10 } SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg)); - 803feba: 2210 movs r2, #16 - 803febc: 6879 ldr r1, [r7, #4] - 803febe: 68f8 ldr r0, [r7, #12] - 803fec0: f007 ff60 bl 8047d84 + 803fefa: 2210 movs r2, #16 + 803fefc: 6879 ldr r1, [r7, #4] + 803fefe: 68f8 ldr r0, [r7, #12] + 803ff00: f007 ff60 bl 8047dc4 pbuf_ref(cseg->p); - 803fec4: 68fb ldr r3, [r7, #12] - 803fec6: 685b ldr r3, [r3, #4] - 803fec8: 4618 mov r0, r3 - 803feca: f7fe fd51 bl 803e970 + 803ff04: 68fb ldr r3, [r7, #12] + 803ff06: 685b ldr r3, [r3, #4] + 803ff08: 4618 mov r0, r3 + 803ff0a: f7fe fd51 bl 803e9b0 return cseg; - 803fece: 68fb ldr r3, [r7, #12] + 803ff0e: 68fb ldr r3, [r7, #12] } - 803fed0: 4618 mov r0, r3 - 803fed2: 3710 adds r7, #16 - 803fed4: 46bd mov sp, r7 - 803fed6: bd80 pop {r7, pc} - 803fed8: 0804ac30 .word 0x0804ac30 - 803fedc: 0804b184 .word 0x0804b184 - 803fee0: 0804ac74 .word 0x0804ac74 + 803ff10: 4618 mov r0, r3 + 803ff12: 3710 adds r7, #16 + 803ff14: 46bd mov sp, r7 + 803ff16: bd80 pop {r7, pc} + 803ff18: 0804ac70 .word 0x0804ac70 + 803ff1c: 0804b1c4 .word 0x0804b1c4 + 803ff20: 0804acb4 .word 0x0804acb4 -0803fee4 : +0803ff24 : * Default receive callback that is called if the user didn't register * a recv callback for the pcb. */ err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) { - 803fee4: b580 push {r7, lr} - 803fee6: b084 sub sp, #16 - 803fee8: af00 add r7, sp, #0 - 803feea: 60f8 str r0, [r7, #12] - 803feec: 60b9 str r1, [r7, #8] - 803feee: 607a str r2, [r7, #4] - 803fef0: 70fb strb r3, [r7, #3] + 803ff24: b580 push {r7, lr} + 803ff26: b084 sub sp, #16 + 803ff28: af00 add r7, sp, #0 + 803ff2a: 60f8 str r0, [r7, #12] + 803ff2c: 60b9 str r1, [r7, #8] + 803ff2e: 607a str r2, [r7, #4] + 803ff30: 70fb strb r3, [r7, #3] LWIP_UNUSED_ARG(arg); LWIP_ERROR("tcp_recv_null: invalid pcb", pcb != NULL, return ERR_ARG); - 803fef2: 68bb ldr r3, [r7, #8] - 803fef4: 2b00 cmp r3, #0 - 803fef6: d109 bne.n 803ff0c - 803fef8: 4b12 ldr r3, [pc, #72] ; (803ff44 ) - 803fefa: f44f 62d3 mov.w r2, #1688 ; 0x698 - 803fefe: 4912 ldr r1, [pc, #72] ; (803ff48 ) - 803ff00: 4812 ldr r0, [pc, #72] ; (803ff4c ) - 803ff02: f008 f84f bl 8047fa4 - 803ff06: f06f 030f mvn.w r3, #15 - 803ff0a: e016 b.n 803ff3a + 803ff32: 68bb ldr r3, [r7, #8] + 803ff34: 2b00 cmp r3, #0 + 803ff36: d109 bne.n 803ff4c + 803ff38: 4b12 ldr r3, [pc, #72] ; (803ff84 ) + 803ff3a: f44f 62d3 mov.w r2, #1688 ; 0x698 + 803ff3e: 4912 ldr r1, [pc, #72] ; (803ff88 ) + 803ff40: 4812 ldr r0, [pc, #72] ; (803ff8c ) + 803ff42: f008 f84f bl 8047fe4 + 803ff46: f06f 030f mvn.w r3, #15 + 803ff4a: e016 b.n 803ff7a if (p != NULL) { - 803ff0c: 687b ldr r3, [r7, #4] - 803ff0e: 2b00 cmp r3, #0 - 803ff10: d009 beq.n 803ff26 + 803ff4c: 687b ldr r3, [r7, #4] + 803ff4e: 2b00 cmp r3, #0 + 803ff50: d009 beq.n 803ff66 tcp_recved(pcb, p->tot_len); - 803ff12: 687b ldr r3, [r7, #4] - 803ff14: 891b ldrh r3, [r3, #8] - 803ff16: 4619 mov r1, r3 - 803ff18: 68b8 ldr r0, [r7, #8] - 803ff1a: f7ff fb19 bl 803f550 + 803ff52: 687b ldr r3, [r7, #4] + 803ff54: 891b ldrh r3, [r3, #8] + 803ff56: 4619 mov r1, r3 + 803ff58: 68b8 ldr r0, [r7, #8] + 803ff5a: f7ff fb19 bl 803f590 pbuf_free(p); - 803ff1e: 6878 ldr r0, [r7, #4] - 803ff20: f7fe fc86 bl 803e830 - 803ff24: e008 b.n 803ff38 + 803ff5e: 6878 ldr r0, [r7, #4] + 803ff60: f7fe fc86 bl 803e870 + 803ff64: e008 b.n 803ff78 } else if (err == ERR_OK) { - 803ff26: f997 3003 ldrsb.w r3, [r7, #3] - 803ff2a: 2b00 cmp r3, #0 - 803ff2c: d104 bne.n 803ff38 + 803ff66: f997 3003 ldrsb.w r3, [r7, #3] + 803ff6a: 2b00 cmp r3, #0 + 803ff6c: d104 bne.n 803ff78 return tcp_close(pcb); - 803ff2e: 68b8 ldr r0, [r7, #8] - 803ff30: f7ff f9be bl 803f2b0 - 803ff34: 4603 mov r3, r0 - 803ff36: e000 b.n 803ff3a + 803ff6e: 68b8 ldr r0, [r7, #8] + 803ff70: f7ff f9be bl 803f2f0 + 803ff74: 4603 mov r3, r0 + 803ff76: e000 b.n 803ff7a } return ERR_OK; - 803ff38: 2300 movs r3, #0 -} - 803ff3a: 4618 mov r0, r3 - 803ff3c: 3710 adds r7, #16 - 803ff3e: 46bd mov sp, r7 - 803ff40: bd80 pop {r7, pc} - 803ff42: bf00 nop - 803ff44: 0804ac30 .word 0x0804ac30 - 803ff48: 0804b1a0 .word 0x0804b1a0 - 803ff4c: 0804ac74 .word 0x0804ac74 - -0803ff50 : + 803ff78: 2300 movs r3, #0 +} + 803ff7a: 4618 mov r0, r3 + 803ff7c: 3710 adds r7, #16 + 803ff7e: 46bd mov sp, r7 + 803ff80: bd80 pop {r7, pc} + 803ff82: bf00 nop + 803ff84: 0804ac70 .word 0x0804ac70 + 803ff88: 0804b1e0 .word 0x0804b1e0 + 803ff8c: 0804acb4 .word 0x0804acb4 + +0803ff90 : * * @param prio minimum priority */ static void tcp_kill_prio(u8_t prio) { - 803ff50: b580 push {r7, lr} - 803ff52: b086 sub sp, #24 - 803ff54: af00 add r7, sp, #0 - 803ff56: 4603 mov r3, r0 - 803ff58: 71fb strb r3, [r7, #7] + 803ff90: b580 push {r7, lr} + 803ff92: b086 sub sp, #24 + 803ff94: af00 add r7, sp, #0 + 803ff96: 4603 mov r3, r0 + 803ff98: 71fb strb r3, [r7, #7] struct tcp_pcb *pcb, *inactive; u32_t inactivity; u8_t mprio; mprio = LWIP_MIN(TCP_PRIO_MAX, prio); - 803ff5a: f997 3007 ldrsb.w r3, [r7, #7] - 803ff5e: 2b00 cmp r3, #0 - 803ff60: db01 blt.n 803ff66 - 803ff62: 79fb ldrb r3, [r7, #7] - 803ff64: e000 b.n 803ff68 - 803ff66: 237f movs r3, #127 ; 0x7f - 803ff68: 72fb strb r3, [r7, #11] + 803ff9a: f997 3007 ldrsb.w r3, [r7, #7] + 803ff9e: 2b00 cmp r3, #0 + 803ffa0: db01 blt.n 803ffa6 + 803ffa2: 79fb ldrb r3, [r7, #7] + 803ffa4: e000 b.n 803ffa8 + 803ffa6: 237f movs r3, #127 ; 0x7f + 803ffa8: 72fb strb r3, [r7, #11] /* We want to kill connections with a lower prio, so bail out if * supplied prio is 0 - there can never be a lower prio */ if (mprio == 0) { - 803ff6a: 7afb ldrb r3, [r7, #11] - 803ff6c: 2b00 cmp r3, #0 - 803ff6e: d034 beq.n 803ffda + 803ffaa: 7afb ldrb r3, [r7, #11] + 803ffac: 2b00 cmp r3, #0 + 803ffae: d034 beq.n 804001a /* We only want kill connections with a lower prio, so decrement prio by one * and start searching for oldest connection with same or lower priority than mprio. * We want to find the connections with the lowest possible prio, and among * these the one with the longest inactivity time. */ mprio--; - 803ff70: 7afb ldrb r3, [r7, #11] - 803ff72: 3b01 subs r3, #1 - 803ff74: 72fb strb r3, [r7, #11] + 803ffb0: 7afb ldrb r3, [r7, #11] + 803ffb2: 3b01 subs r3, #1 + 803ffb4: 72fb strb r3, [r7, #11] inactivity = 0; - 803ff76: 2300 movs r3, #0 - 803ff78: 60fb str r3, [r7, #12] + 803ffb6: 2300 movs r3, #0 + 803ffb8: 60fb str r3, [r7, #12] inactive = NULL; - 803ff7a: 2300 movs r3, #0 - 803ff7c: 613b str r3, [r7, #16] + 803ffba: 2300 movs r3, #0 + 803ffbc: 613b str r3, [r7, #16] for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 803ff7e: 4b19 ldr r3, [pc, #100] ; (803ffe4 ) - 803ff80: 681b ldr r3, [r3, #0] - 803ff82: 617b str r3, [r7, #20] - 803ff84: e01f b.n 803ffc6 + 803ffbe: 4b19 ldr r3, [pc, #100] ; (8040024 ) + 803ffc0: 681b ldr r3, [r3, #0] + 803ffc2: 617b str r3, [r7, #20] + 803ffc4: e01f b.n 8040006 /* lower prio is always a kill candidate */ if ((pcb->prio < mprio) || - 803ff86: 697b ldr r3, [r7, #20] - 803ff88: 7d5b ldrb r3, [r3, #21] - 803ff8a: 7afa ldrb r2, [r7, #11] - 803ff8c: 429a cmp r2, r3 - 803ff8e: d80c bhi.n 803ffaa + 803ffc6: 697b ldr r3, [r7, #20] + 803ffc8: 7d5b ldrb r3, [r3, #21] + 803ffca: 7afa ldrb r2, [r7, #11] + 803ffcc: 429a cmp r2, r3 + 803ffce: d80c bhi.n 803ffea /* longer inactivity is also a kill candidate */ ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) { - 803ff90: 697b ldr r3, [r7, #20] - 803ff92: 7d5b ldrb r3, [r3, #21] + 803ffd0: 697b ldr r3, [r7, #20] + 803ffd2: 7d5b ldrb r3, [r3, #21] if ((pcb->prio < mprio) || - 803ff94: 7afa ldrb r2, [r7, #11] - 803ff96: 429a cmp r2, r3 - 803ff98: d112 bne.n 803ffc0 + 803ffd4: 7afa ldrb r2, [r7, #11] + 803ffd6: 429a cmp r2, r3 + 803ffd8: d112 bne.n 8040000 ((pcb->prio == mprio) && ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity))) { - 803ff9a: 4b13 ldr r3, [pc, #76] ; (803ffe8 ) - 803ff9c: 681a ldr r2, [r3, #0] - 803ff9e: 697b ldr r3, [r7, #20] - 803ffa0: 6a1b ldr r3, [r3, #32] - 803ffa2: 1ad3 subs r3, r2, r3 - 803ffa4: 68fa ldr r2, [r7, #12] - 803ffa6: 429a cmp r2, r3 - 803ffa8: d80a bhi.n 803ffc0 + 803ffda: 4b13 ldr r3, [pc, #76] ; (8040028 ) + 803ffdc: 681a ldr r2, [r3, #0] + 803ffde: 697b ldr r3, [r7, #20] + 803ffe0: 6a1b ldr r3, [r3, #32] + 803ffe2: 1ad3 subs r3, r2, r3 + 803ffe4: 68fa ldr r2, [r7, #12] + 803ffe6: 429a cmp r2, r3 + 803ffe8: d80a bhi.n 8040000 inactivity = tcp_ticks - pcb->tmr; - 803ffaa: 4b0f ldr r3, [pc, #60] ; (803ffe8 ) - 803ffac: 681a ldr r2, [r3, #0] - 803ffae: 697b ldr r3, [r7, #20] - 803ffb0: 6a1b ldr r3, [r3, #32] - 803ffb2: 1ad3 subs r3, r2, r3 - 803ffb4: 60fb str r3, [r7, #12] + 803ffea: 4b0f ldr r3, [pc, #60] ; (8040028 ) + 803ffec: 681a ldr r2, [r3, #0] + 803ffee: 697b ldr r3, [r7, #20] + 803fff0: 6a1b ldr r3, [r3, #32] + 803fff2: 1ad3 subs r3, r2, r3 + 803fff4: 60fb str r3, [r7, #12] inactive = pcb; - 803ffb6: 697b ldr r3, [r7, #20] - 803ffb8: 613b str r3, [r7, #16] + 803fff6: 697b ldr r3, [r7, #20] + 803fff8: 613b str r3, [r7, #16] mprio = pcb->prio; - 803ffba: 697b ldr r3, [r7, #20] - 803ffbc: 7d5b ldrb r3, [r3, #21] - 803ffbe: 72fb strb r3, [r7, #11] + 803fffa: 697b ldr r3, [r7, #20] + 803fffc: 7d5b ldrb r3, [r3, #21] + 803fffe: 72fb strb r3, [r7, #11] for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 803ffc0: 697b ldr r3, [r7, #20] - 803ffc2: 68db ldr r3, [r3, #12] - 803ffc4: 617b str r3, [r7, #20] - 803ffc6: 697b ldr r3, [r7, #20] - 803ffc8: 2b00 cmp r3, #0 - 803ffca: d1dc bne.n 803ff86 + 8040000: 697b ldr r3, [r7, #20] + 8040002: 68db ldr r3, [r3, #12] + 8040004: 617b str r3, [r7, #20] + 8040006: 697b ldr r3, [r7, #20] + 8040008: 2b00 cmp r3, #0 + 804000a: d1dc bne.n 803ffc6 } } if (inactive != NULL) { - 803ffcc: 693b ldr r3, [r7, #16] - 803ffce: 2b00 cmp r3, #0 - 803ffd0: d004 beq.n 803ffdc + 804000c: 693b ldr r3, [r7, #16] + 804000e: 2b00 cmp r3, #0 + 8040010: d004 beq.n 804001c LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n", (void *)inactive, inactivity)); tcp_abort(inactive); - 803ffd2: 6938 ldr r0, [r7, #16] - 803ffd4: f7ff fa56 bl 803f484 - 803ffd8: e000 b.n 803ffdc + 8040012: 6938 ldr r0, [r7, #16] + 8040014: f7ff fa56 bl 803f4c4 + 8040018: e000 b.n 804001c return; - 803ffda: bf00 nop + 804001a: bf00 nop } } - 803ffdc: 3718 adds r7, #24 - 803ffde: 46bd mov sp, r7 - 803ffe0: bd80 pop {r7, pc} - 803ffe2: bf00 nop - 803ffe4: 2400eaf4 .word 0x2400eaf4 - 803ffe8: 2400eae8 .word 0x2400eae8 + 804001c: 3718 adds r7, #24 + 804001e: 46bd mov sp, r7 + 8040020: bd80 pop {r7, pc} + 8040022: bf00 nop + 8040024: 2400eaf4 .word 0x2400eaf4 + 8040028: 2400eae8 .word 0x2400eae8 -0803ffec : +0804002c : * Kills the oldest connection that is in specific state. * Called from tcp_alloc() for LAST_ACK and CLOSING if no more connections are available. */ static void tcp_kill_state(enum tcp_state state) { - 803ffec: b580 push {r7, lr} - 803ffee: b086 sub sp, #24 - 803fff0: af00 add r7, sp, #0 - 803fff2: 4603 mov r3, r0 - 803fff4: 71fb strb r3, [r7, #7] + 804002c: b580 push {r7, lr} + 804002e: b086 sub sp, #24 + 8040030: af00 add r7, sp, #0 + 8040032: 4603 mov r3, r0 + 8040034: 71fb strb r3, [r7, #7] struct tcp_pcb *pcb, *inactive; u32_t inactivity; LWIP_ASSERT("invalid state", (state == CLOSING) || (state == LAST_ACK)); - 803fff6: 79fb ldrb r3, [r7, #7] - 803fff8: 2b08 cmp r3, #8 - 803fffa: d009 beq.n 8040010 - 803fffc: 79fb ldrb r3, [r7, #7] - 803fffe: 2b09 cmp r3, #9 - 8040000: d006 beq.n 8040010 - 8040002: 4b1a ldr r3, [pc, #104] ; (804006c ) - 8040004: f240 62dd movw r2, #1757 ; 0x6dd - 8040008: 4919 ldr r1, [pc, #100] ; (8040070 ) - 804000a: 481a ldr r0, [pc, #104] ; (8040074 ) - 804000c: f007 ffca bl 8047fa4 + 8040036: 79fb ldrb r3, [r7, #7] + 8040038: 2b08 cmp r3, #8 + 804003a: d009 beq.n 8040050 + 804003c: 79fb ldrb r3, [r7, #7] + 804003e: 2b09 cmp r3, #9 + 8040040: d006 beq.n 8040050 + 8040042: 4b1a ldr r3, [pc, #104] ; (80400ac ) + 8040044: f240 62dd movw r2, #1757 ; 0x6dd + 8040048: 4919 ldr r1, [pc, #100] ; (80400b0 ) + 804004a: 481a ldr r0, [pc, #104] ; (80400b4 ) + 804004c: f007 ffca bl 8047fe4 inactivity = 0; - 8040010: 2300 movs r3, #0 - 8040012: 60fb str r3, [r7, #12] + 8040050: 2300 movs r3, #0 + 8040052: 60fb str r3, [r7, #12] inactive = NULL; - 8040014: 2300 movs r3, #0 - 8040016: 613b str r3, [r7, #16] + 8040054: 2300 movs r3, #0 + 8040056: 613b str r3, [r7, #16] /* Go through the list of active pcbs and get the oldest pcb that is in state CLOSING/LAST_ACK. */ for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 8040018: 4b17 ldr r3, [pc, #92] ; (8040078 ) - 804001a: 681b ldr r3, [r3, #0] - 804001c: 617b str r3, [r7, #20] - 804001e: e017 b.n 8040050 + 8040058: 4b17 ldr r3, [pc, #92] ; (80400b8 ) + 804005a: 681b ldr r3, [r3, #0] + 804005c: 617b str r3, [r7, #20] + 804005e: e017 b.n 8040090 if (pcb->state == state) { - 8040020: 697b ldr r3, [r7, #20] - 8040022: 7d1b ldrb r3, [r3, #20] - 8040024: 79fa ldrb r2, [r7, #7] - 8040026: 429a cmp r2, r3 - 8040028: d10f bne.n 804004a + 8040060: 697b ldr r3, [r7, #20] + 8040062: 7d1b ldrb r3, [r3, #20] + 8040064: 79fa ldrb r2, [r7, #7] + 8040066: 429a cmp r2, r3 + 8040068: d10f bne.n 804008a if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - 804002a: 4b14 ldr r3, [pc, #80] ; (804007c ) - 804002c: 681a ldr r2, [r3, #0] - 804002e: 697b ldr r3, [r7, #20] - 8040030: 6a1b ldr r3, [r3, #32] - 8040032: 1ad3 subs r3, r2, r3 - 8040034: 68fa ldr r2, [r7, #12] - 8040036: 429a cmp r2, r3 - 8040038: d807 bhi.n 804004a + 804006a: 4b14 ldr r3, [pc, #80] ; (80400bc ) + 804006c: 681a ldr r2, [r3, #0] + 804006e: 697b ldr r3, [r7, #20] + 8040070: 6a1b ldr r3, [r3, #32] + 8040072: 1ad3 subs r3, r2, r3 + 8040074: 68fa ldr r2, [r7, #12] + 8040076: 429a cmp r2, r3 + 8040078: d807 bhi.n 804008a inactivity = tcp_ticks - pcb->tmr; - 804003a: 4b10 ldr r3, [pc, #64] ; (804007c ) - 804003c: 681a ldr r2, [r3, #0] - 804003e: 697b ldr r3, [r7, #20] - 8040040: 6a1b ldr r3, [r3, #32] - 8040042: 1ad3 subs r3, r2, r3 - 8040044: 60fb str r3, [r7, #12] + 804007a: 4b10 ldr r3, [pc, #64] ; (80400bc ) + 804007c: 681a ldr r2, [r3, #0] + 804007e: 697b ldr r3, [r7, #20] + 8040080: 6a1b ldr r3, [r3, #32] + 8040082: 1ad3 subs r3, r2, r3 + 8040084: 60fb str r3, [r7, #12] inactive = pcb; - 8040046: 697b ldr r3, [r7, #20] - 8040048: 613b str r3, [r7, #16] + 8040086: 697b ldr r3, [r7, #20] + 8040088: 613b str r3, [r7, #16] for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 804004a: 697b ldr r3, [r7, #20] - 804004c: 68db ldr r3, [r3, #12] - 804004e: 617b str r3, [r7, #20] - 8040050: 697b ldr r3, [r7, #20] - 8040052: 2b00 cmp r3, #0 - 8040054: d1e4 bne.n 8040020 + 804008a: 697b ldr r3, [r7, #20] + 804008c: 68db ldr r3, [r3, #12] + 804008e: 617b str r3, [r7, #20] + 8040090: 697b ldr r3, [r7, #20] + 8040092: 2b00 cmp r3, #0 + 8040094: d1e4 bne.n 8040060 } } } if (inactive != NULL) { - 8040056: 693b ldr r3, [r7, #16] - 8040058: 2b00 cmp r3, #0 - 804005a: d003 beq.n 8040064 + 8040096: 693b ldr r3, [r7, #16] + 8040098: 2b00 cmp r3, #0 + 804009a: d003 beq.n 80400a4 LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_closing: killing oldest %s PCB %p (%"S32_F")\n", tcp_state_str[state], (void *)inactive, inactivity)); /* Don't send a RST, since no data is lost. */ tcp_abandon(inactive, 0); - 804005c: 2100 movs r1, #0 - 804005e: 6938 ldr r0, [r7, #16] - 8040060: f7ff f952 bl 803f308 - } -} - 8040064: bf00 nop - 8040066: 3718 adds r7, #24 - 8040068: 46bd mov sp, r7 - 804006a: bd80 pop {r7, pc} - 804006c: 0804ac30 .word 0x0804ac30 - 8040070: 0804b1bc .word 0x0804b1bc - 8040074: 0804ac74 .word 0x0804ac74 - 8040078: 2400eaf4 .word 0x2400eaf4 - 804007c: 2400eae8 .word 0x2400eae8 - -08040080 : + 804009c: 2100 movs r1, #0 + 804009e: 6938 ldr r0, [r7, #16] + 80400a0: f7ff f952 bl 803f348 + } +} + 80400a4: bf00 nop + 80400a6: 3718 adds r7, #24 + 80400a8: 46bd mov sp, r7 + 80400aa: bd80 pop {r7, pc} + 80400ac: 0804ac70 .word 0x0804ac70 + 80400b0: 0804b1fc .word 0x0804b1fc + 80400b4: 0804acb4 .word 0x0804acb4 + 80400b8: 2400eaf4 .word 0x2400eaf4 + 80400bc: 2400eae8 .word 0x2400eae8 + +080400c0 : * Kills the oldest connection that is in TIME_WAIT state. * Called from tcp_alloc() if no more connections are available. */ static void tcp_kill_timewait(void) { - 8040080: b580 push {r7, lr} - 8040082: b084 sub sp, #16 - 8040084: af00 add r7, sp, #0 + 80400c0: b580 push {r7, lr} + 80400c2: b084 sub sp, #16 + 80400c4: af00 add r7, sp, #0 struct tcp_pcb *pcb, *inactive; u32_t inactivity; inactivity = 0; - 8040086: 2300 movs r3, #0 - 8040088: 607b str r3, [r7, #4] + 80400c6: 2300 movs r3, #0 + 80400c8: 607b str r3, [r7, #4] inactive = NULL; - 804008a: 2300 movs r3, #0 - 804008c: 60bb str r3, [r7, #8] + 80400ca: 2300 movs r3, #0 + 80400cc: 60bb str r3, [r7, #8] /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */ for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 804008e: 4b12 ldr r3, [pc, #72] ; (80400d8 ) - 8040090: 681b ldr r3, [r3, #0] - 8040092: 60fb str r3, [r7, #12] - 8040094: e012 b.n 80400bc + 80400ce: 4b12 ldr r3, [pc, #72] ; (8040118 ) + 80400d0: 681b ldr r3, [r3, #0] + 80400d2: 60fb str r3, [r7, #12] + 80400d4: e012 b.n 80400fc if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - 8040096: 4b11 ldr r3, [pc, #68] ; (80400dc ) - 8040098: 681a ldr r2, [r3, #0] - 804009a: 68fb ldr r3, [r7, #12] - 804009c: 6a1b ldr r3, [r3, #32] - 804009e: 1ad3 subs r3, r2, r3 - 80400a0: 687a ldr r2, [r7, #4] - 80400a2: 429a cmp r2, r3 - 80400a4: d807 bhi.n 80400b6 + 80400d6: 4b11 ldr r3, [pc, #68] ; (804011c ) + 80400d8: 681a ldr r2, [r3, #0] + 80400da: 68fb ldr r3, [r7, #12] + 80400dc: 6a1b ldr r3, [r3, #32] + 80400de: 1ad3 subs r3, r2, r3 + 80400e0: 687a ldr r2, [r7, #4] + 80400e2: 429a cmp r2, r3 + 80400e4: d807 bhi.n 80400f6 inactivity = tcp_ticks - pcb->tmr; - 80400a6: 4b0d ldr r3, [pc, #52] ; (80400dc ) - 80400a8: 681a ldr r2, [r3, #0] - 80400aa: 68fb ldr r3, [r7, #12] - 80400ac: 6a1b ldr r3, [r3, #32] - 80400ae: 1ad3 subs r3, r2, r3 - 80400b0: 607b str r3, [r7, #4] + 80400e6: 4b0d ldr r3, [pc, #52] ; (804011c ) + 80400e8: 681a ldr r2, [r3, #0] + 80400ea: 68fb ldr r3, [r7, #12] + 80400ec: 6a1b ldr r3, [r3, #32] + 80400ee: 1ad3 subs r3, r2, r3 + 80400f0: 607b str r3, [r7, #4] inactive = pcb; - 80400b2: 68fb ldr r3, [r7, #12] - 80400b4: 60bb str r3, [r7, #8] + 80400f2: 68fb ldr r3, [r7, #12] + 80400f4: 60bb str r3, [r7, #8] for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 80400b6: 68fb ldr r3, [r7, #12] - 80400b8: 68db ldr r3, [r3, #12] - 80400ba: 60fb str r3, [r7, #12] - 80400bc: 68fb ldr r3, [r7, #12] - 80400be: 2b00 cmp r3, #0 - 80400c0: d1e9 bne.n 8040096 + 80400f6: 68fb ldr r3, [r7, #12] + 80400f8: 68db ldr r3, [r3, #12] + 80400fa: 60fb str r3, [r7, #12] + 80400fc: 68fb ldr r3, [r7, #12] + 80400fe: 2b00 cmp r3, #0 + 8040100: d1e9 bne.n 80400d6 } } if (inactive != NULL) { - 80400c2: 68bb ldr r3, [r7, #8] - 80400c4: 2b00 cmp r3, #0 - 80400c6: d002 beq.n 80400ce + 8040102: 68bb ldr r3, [r7, #8] + 8040104: 2b00 cmp r3, #0 + 8040106: d002 beq.n 804010e LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n", (void *)inactive, inactivity)); tcp_abort(inactive); - 80400c8: 68b8 ldr r0, [r7, #8] - 80400ca: f7ff f9db bl 803f484 + 8040108: 68b8 ldr r0, [r7, #8] + 804010a: f7ff f9db bl 803f4c4 } } - 80400ce: bf00 nop - 80400d0: 3710 adds r7, #16 - 80400d2: 46bd mov sp, r7 - 80400d4: bd80 pop {r7, pc} - 80400d6: bf00 nop - 80400d8: 2400eaf8 .word 0x2400eaf8 - 80400dc: 2400eae8 .word 0x2400eae8 + 804010e: bf00 nop + 8040110: 3710 adds r7, #16 + 8040112: 46bd mov sp, r7 + 8040114: bd80 pop {r7, pc} + 8040116: bf00 nop + 8040118: 2400eaf8 .word 0x2400eaf8 + 804011c: 2400eae8 .word 0x2400eae8 -080400e0 : +08040120 : * now send the FIN (which failed before), the pcb might be in a state that is * OK for us to now free it. */ static void tcp_handle_closepend(void) { - 80400e0: b580 push {r7, lr} - 80400e2: b082 sub sp, #8 - 80400e4: af00 add r7, sp, #0 + 8040120: b580 push {r7, lr} + 8040122: b082 sub sp, #8 + 8040124: af00 add r7, sp, #0 struct tcp_pcb *pcb = tcp_active_pcbs; - 80400e6: 4b10 ldr r3, [pc, #64] ; (8040128 ) - 80400e8: 681b ldr r3, [r3, #0] - 80400ea: 607b str r3, [r7, #4] + 8040126: 4b10 ldr r3, [pc, #64] ; (8040168 ) + 8040128: 681b ldr r3, [r3, #0] + 804012a: 607b str r3, [r7, #4] while (pcb != NULL) { - 80400ec: e014 b.n 8040118 + 804012c: e014 b.n 8040158 struct tcp_pcb *next = pcb->next; - 80400ee: 687b ldr r3, [r7, #4] - 80400f0: 68db ldr r3, [r3, #12] - 80400f2: 603b str r3, [r7, #0] + 804012e: 687b ldr r3, [r7, #4] + 8040130: 68db ldr r3, [r3, #12] + 8040132: 603b str r3, [r7, #0] /* send pending FIN */ if (pcb->flags & TF_CLOSEPEND) { - 80400f4: 687b ldr r3, [r7, #4] - 80400f6: 8b5b ldrh r3, [r3, #26] - 80400f8: f003 0308 and.w r3, r3, #8 - 80400fc: 2b00 cmp r3, #0 - 80400fe: d009 beq.n 8040114 + 8040134: 687b ldr r3, [r7, #4] + 8040136: 8b5b ldrh r3, [r3, #26] + 8040138: f003 0308 and.w r3, r3, #8 + 804013c: 2b00 cmp r3, #0 + 804013e: d009 beq.n 8040154 LWIP_DEBUGF(TCP_DEBUG, ("tcp_handle_closepend: pending FIN\n")); tcp_clear_flags(pcb, TF_CLOSEPEND); - 8040100: 687b ldr r3, [r7, #4] - 8040102: 8b5b ldrh r3, [r3, #26] - 8040104: f023 0308 bic.w r3, r3, #8 - 8040108: b29a uxth r2, r3 - 804010a: 687b ldr r3, [r7, #4] - 804010c: 835a strh r2, [r3, #26] + 8040140: 687b ldr r3, [r7, #4] + 8040142: 8b5b ldrh r3, [r3, #26] + 8040144: f023 0308 bic.w r3, r3, #8 + 8040148: b29a uxth r2, r3 + 804014a: 687b ldr r3, [r7, #4] + 804014c: 835a strh r2, [r3, #26] tcp_close_shutdown_fin(pcb); - 804010e: 6878 ldr r0, [r7, #4] - 8040110: f7ff f864 bl 803f1dc + 804014e: 6878 ldr r0, [r7, #4] + 8040150: f7ff f864 bl 803f21c } pcb = next; - 8040114: 683b ldr r3, [r7, #0] - 8040116: 607b str r3, [r7, #4] + 8040154: 683b ldr r3, [r7, #0] + 8040156: 607b str r3, [r7, #4] while (pcb != NULL) { - 8040118: 687b ldr r3, [r7, #4] - 804011a: 2b00 cmp r3, #0 - 804011c: d1e7 bne.n 80400ee + 8040158: 687b ldr r3, [r7, #4] + 804015a: 2b00 cmp r3, #0 + 804015c: d1e7 bne.n 804012e } } - 804011e: bf00 nop - 8040120: bf00 nop - 8040122: 3708 adds r7, #8 - 8040124: 46bd mov sp, r7 - 8040126: bd80 pop {r7, pc} - 8040128: 2400eaf4 .word 0x2400eaf4 + 804015e: bf00 nop + 8040160: bf00 nop + 8040162: 3708 adds r7, #8 + 8040164: 46bd mov sp, r7 + 8040166: bd80 pop {r7, pc} + 8040168: 2400eaf4 .word 0x2400eaf4 -0804012c : +0804016c : * @param prio priority for the new pcb * @return a new tcp_pcb that initially is in state CLOSED */ struct tcp_pcb * tcp_alloc(u8_t prio) { - 804012c: b580 push {r7, lr} - 804012e: b084 sub sp, #16 - 8040130: af00 add r7, sp, #0 - 8040132: 4603 mov r3, r0 - 8040134: 71fb strb r3, [r7, #7] + 804016c: b580 push {r7, lr} + 804016e: b084 sub sp, #16 + 8040170: af00 add r7, sp, #0 + 8040172: 4603 mov r3, r0 + 8040174: 71fb strb r3, [r7, #7] struct tcp_pcb *pcb; LWIP_ASSERT_CORE_LOCKED(); pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 8040136: 2001 movs r0, #1 - 8040138: f7fd fc78 bl 803da2c - 804013c: 60f8 str r0, [r7, #12] + 8040176: 2001 movs r0, #1 + 8040178: f7fd fc78 bl 803da6c + 804017c: 60f8 str r0, [r7, #12] if (pcb == NULL) { - 804013e: 68fb ldr r3, [r7, #12] - 8040140: 2b00 cmp r3, #0 - 8040142: d126 bne.n 8040192 + 804017e: 68fb ldr r3, [r7, #12] + 8040180: 2b00 cmp r3, #0 + 8040182: d126 bne.n 80401d2 /* Try to send FIN for all pcbs stuck in TF_CLOSEPEND first */ tcp_handle_closepend(); - 8040144: f7ff ffcc bl 80400e0 + 8040184: f7ff ffcc bl 8040120 /* Try killing oldest connection in TIME-WAIT. */ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n")); tcp_kill_timewait(); - 8040148: f7ff ff9a bl 8040080 + 8040188: f7ff ff9a bl 80400c0 /* Try to allocate a tcp_pcb again. */ pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 804014c: 2001 movs r0, #1 - 804014e: f7fd fc6d bl 803da2c - 8040152: 60f8 str r0, [r7, #12] + 804018c: 2001 movs r0, #1 + 804018e: f7fd fc6d bl 803da6c + 8040192: 60f8 str r0, [r7, #12] if (pcb == NULL) { - 8040154: 68fb ldr r3, [r7, #12] - 8040156: 2b00 cmp r3, #0 - 8040158: d11b bne.n 8040192 + 8040194: 68fb ldr r3, [r7, #12] + 8040196: 2b00 cmp r3, #0 + 8040198: d11b bne.n 80401d2 /* Try killing oldest connection in LAST-ACK (these wouldn't go to TIME-WAIT). */ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest LAST-ACK connection\n")); tcp_kill_state(LAST_ACK); - 804015a: 2009 movs r0, #9 - 804015c: f7ff ff46 bl 803ffec + 804019a: 2009 movs r0, #9 + 804019c: f7ff ff46 bl 804002c /* Try to allocate a tcp_pcb again. */ pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 8040160: 2001 movs r0, #1 - 8040162: f7fd fc63 bl 803da2c - 8040166: 60f8 str r0, [r7, #12] + 80401a0: 2001 movs r0, #1 + 80401a2: f7fd fc63 bl 803da6c + 80401a6: 60f8 str r0, [r7, #12] if (pcb == NULL) { - 8040168: 68fb ldr r3, [r7, #12] - 804016a: 2b00 cmp r3, #0 - 804016c: d111 bne.n 8040192 + 80401a8: 68fb ldr r3, [r7, #12] + 80401aa: 2b00 cmp r3, #0 + 80401ac: d111 bne.n 80401d2 /* Try killing oldest connection in CLOSING. */ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest CLOSING connection\n")); tcp_kill_state(CLOSING); - 804016e: 2008 movs r0, #8 - 8040170: f7ff ff3c bl 803ffec + 80401ae: 2008 movs r0, #8 + 80401b0: f7ff ff3c bl 804002c /* Try to allocate a tcp_pcb again. */ pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 8040174: 2001 movs r0, #1 - 8040176: f7fd fc59 bl 803da2c - 804017a: 60f8 str r0, [r7, #12] + 80401b4: 2001 movs r0, #1 + 80401b6: f7fd fc59 bl 803da6c + 80401ba: 60f8 str r0, [r7, #12] if (pcb == NULL) { - 804017c: 68fb ldr r3, [r7, #12] - 804017e: 2b00 cmp r3, #0 - 8040180: d107 bne.n 8040192 + 80401bc: 68fb ldr r3, [r7, #12] + 80401be: 2b00 cmp r3, #0 + 80401c0: d107 bne.n 80401d2 /* Try killing oldest active connection with lower priority than the new one. */ LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing oldest connection with prio lower than %d\n", prio)); tcp_kill_prio(prio); - 8040182: 79fb ldrb r3, [r7, #7] - 8040184: 4618 mov r0, r3 - 8040186: f7ff fee3 bl 803ff50 + 80401c2: 79fb ldrb r3, [r7, #7] + 80401c4: 4618 mov r0, r3 + 80401c6: f7ff fee3 bl 803ff90 /* Try to allocate a tcp_pcb again. */ pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - 804018a: 2001 movs r0, #1 - 804018c: f7fd fc4e bl 803da2c - 8040190: 60f8 str r0, [r7, #12] + 80401ca: 2001 movs r0, #1 + 80401cc: f7fd fc4e bl 803da6c + 80401d0: 60f8 str r0, [r7, #12] if (pcb != NULL) { /* adjust err stats: memp_malloc failed above */ MEMP_STATS_DEC(err, MEMP_TCP_PCB); } } if (pcb != NULL) { - 8040192: 68fb ldr r3, [r7, #12] - 8040194: 2b00 cmp r3, #0 - 8040196: d03f beq.n 8040218 + 80401d2: 68fb ldr r3, [r7, #12] + 80401d4: 2b00 cmp r3, #0 + 80401d6: d03f beq.n 8040258 /* zero out the whole pcb, so there is no need to initialize members to zero */ memset(pcb, 0, sizeof(struct tcp_pcb)); - 8040198: 229c movs r2, #156 ; 0x9c - 804019a: 2100 movs r1, #0 - 804019c: 68f8 ldr r0, [r7, #12] - 804019e: f007 fe19 bl 8047dd4 + 80401d8: 229c movs r2, #156 ; 0x9c + 80401da: 2100 movs r1, #0 + 80401dc: 68f8 ldr r0, [r7, #12] + 80401de: f007 fe19 bl 8047e14 pcb->prio = prio; - 80401a2: 68fb ldr r3, [r7, #12] - 80401a4: 79fa ldrb r2, [r7, #7] - 80401a6: 755a strb r2, [r3, #21] + 80401e2: 68fb ldr r3, [r7, #12] + 80401e4: 79fa ldrb r2, [r7, #7] + 80401e6: 755a strb r2, [r3, #21] pcb->snd_buf = TCP_SND_BUF; - 80401a8: 68fb ldr r3, [r7, #12] - 80401aa: f44f 6206 mov.w r2, #2144 ; 0x860 - 80401ae: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 + 80401e8: 68fb ldr r3, [r7, #12] + 80401ea: f44f 6206 mov.w r2, #2144 ; 0x860 + 80401ee: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 /* Start with a window that does not need scaling. When window scaling is enabled and used, the window is enlarged when both sides agree on scaling. */ pcb->rcv_wnd = pcb->rcv_ann_wnd = TCPWND_MIN16(TCP_WND); - 80401b2: 68fb ldr r3, [r7, #12] - 80401b4: f44f 6206 mov.w r2, #2144 ; 0x860 - 80401b8: 855a strh r2, [r3, #42] ; 0x2a - 80401ba: 68fb ldr r3, [r7, #12] - 80401bc: 8d5a ldrh r2, [r3, #42] ; 0x2a - 80401be: 68fb ldr r3, [r7, #12] - 80401c0: 851a strh r2, [r3, #40] ; 0x28 + 80401f2: 68fb ldr r3, [r7, #12] + 80401f4: f44f 6206 mov.w r2, #2144 ; 0x860 + 80401f8: 855a strh r2, [r3, #42] ; 0x2a + 80401fa: 68fb ldr r3, [r7, #12] + 80401fc: 8d5a ldrh r2, [r3, #42] ; 0x2a + 80401fe: 68fb ldr r3, [r7, #12] + 8040200: 851a strh r2, [r3, #40] ; 0x28 pcb->ttl = TCP_TTL; - 80401c2: 68fb ldr r3, [r7, #12] - 80401c4: 22ff movs r2, #255 ; 0xff - 80401c6: 72da strb r2, [r3, #11] + 8040202: 68fb ldr r3, [r7, #12] + 8040204: 22ff movs r2, #255 ; 0xff + 8040206: 72da strb r2, [r3, #11] /* As initial send MSS, we use TCP_MSS but limit it to 536. The send MSS is updated when an MSS option is received. */ pcb->mss = INITIAL_MSS; - 80401c8: 68fb ldr r3, [r7, #12] - 80401ca: f44f 7206 mov.w r2, #536 ; 0x218 - 80401ce: 865a strh r2, [r3, #50] ; 0x32 + 8040208: 68fb ldr r3, [r7, #12] + 804020a: f44f 7206 mov.w r2, #536 ; 0x218 + 804020e: 865a strh r2, [r3, #50] ; 0x32 pcb->rto = 3000 / TCP_SLOW_INTERVAL; - 80401d0: 68fb ldr r3, [r7, #12] - 80401d2: 2206 movs r2, #6 - 80401d4: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + 8040210: 68fb ldr r3, [r7, #12] + 8040212: 2206 movs r2, #6 + 8040214: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 pcb->sv = 3000 / TCP_SLOW_INTERVAL; - 80401d8: 68fb ldr r3, [r7, #12] - 80401da: 2206 movs r2, #6 - 80401dc: 87da strh r2, [r3, #62] ; 0x3e + 8040218: 68fb ldr r3, [r7, #12] + 804021a: 2206 movs r2, #6 + 804021c: 87da strh r2, [r3, #62] ; 0x3e pcb->rtime = -1; - 80401de: 68fb ldr r3, [r7, #12] - 80401e0: f64f 72ff movw r2, #65535 ; 0xffff - 80401e4: 861a strh r2, [r3, #48] ; 0x30 + 804021e: 68fb ldr r3, [r7, #12] + 8040220: f64f 72ff movw r2, #65535 ; 0xffff + 8040224: 861a strh r2, [r3, #48] ; 0x30 pcb->cwnd = 1; - 80401e6: 68fb ldr r3, [r7, #12] - 80401e8: 2201 movs r2, #1 - 80401ea: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8040226: 68fb ldr r3, [r7, #12] + 8040228: 2201 movs r2, #1 + 804022a: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 pcb->tmr = tcp_ticks; - 80401ee: 4b0d ldr r3, [pc, #52] ; (8040224 ) - 80401f0: 681a ldr r2, [r3, #0] - 80401f2: 68fb ldr r3, [r7, #12] - 80401f4: 621a str r2, [r3, #32] + 804022e: 4b0d ldr r3, [pc, #52] ; (8040264 ) + 8040230: 681a ldr r2, [r3, #0] + 8040232: 68fb ldr r3, [r7, #12] + 8040234: 621a str r2, [r3, #32] pcb->last_timer = tcp_timer_ctr; - 80401f6: 4b0c ldr r3, [pc, #48] ; (8040228 ) - 80401f8: 781a ldrb r2, [r3, #0] - 80401fa: 68fb ldr r3, [r7, #12] - 80401fc: 779a strb r2, [r3, #30] + 8040236: 4b0c ldr r3, [pc, #48] ; (8040268 ) + 8040238: 781a ldrb r2, [r3, #0] + 804023a: 68fb ldr r3, [r7, #12] + 804023c: 779a strb r2, [r3, #30] of using the largest advertised receive window. We've seen complications with receiving TCPs that use window scaling and/or window auto-tuning where the initial advertised window is very small and then grows rapidly once the connection is established. To avoid these complications, we set ssthresh to the largest effective cwnd (amount of in-flight data) that the sender can have. */ pcb->ssthresh = TCP_SND_BUF; - 80401fe: 68fb ldr r3, [r7, #12] - 8040200: f44f 6206 mov.w r2, #2144 ; 0x860 - 8040204: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 804023e: 68fb ldr r3, [r7, #12] + 8040240: f44f 6206 mov.w r2, #2144 ; 0x860 + 8040244: f8a3 204a strh.w r2, [r3, #74] ; 0x4a #if LWIP_CALLBACK_API pcb->recv = tcp_recv_null; - 8040208: 68fb ldr r3, [r7, #12] - 804020a: 4a08 ldr r2, [pc, #32] ; (804022c ) - 804020c: f8c3 2084 str.w r2, [r3, #132] ; 0x84 + 8040248: 68fb ldr r3, [r7, #12] + 804024a: 4a08 ldr r2, [pc, #32] ; (804026c ) + 804024c: f8c3 2084 str.w r2, [r3, #132] ; 0x84 #endif /* LWIP_CALLBACK_API */ /* Init KEEPALIVE timer */ pcb->keep_idle = TCP_KEEPIDLE_DEFAULT; - 8040210: 68fb ldr r3, [r7, #12] - 8040212: 4a07 ldr r2, [pc, #28] ; (8040230 ) - 8040214: f8c3 2094 str.w r2, [r3, #148] ; 0x94 + 8040250: 68fb ldr r3, [r7, #12] + 8040252: 4a07 ldr r2, [pc, #28] ; (8040270 ) + 8040254: f8c3 2094 str.w r2, [r3, #148] ; 0x94 #if LWIP_TCP_KEEPALIVE pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT; pcb->keep_cnt = TCP_KEEPCNT_DEFAULT; #endif /* LWIP_TCP_KEEPALIVE */ } return pcb; - 8040218: 68fb ldr r3, [r7, #12] -} - 804021a: 4618 mov r0, r3 - 804021c: 3710 adds r7, #16 - 804021e: 46bd mov sp, r7 - 8040220: bd80 pop {r7, pc} - 8040222: bf00 nop - 8040224: 2400eae8 .word 0x2400eae8 - 8040228: 2400eafe .word 0x2400eafe - 804022c: 0803fee5 .word 0x0803fee5 - 8040230: 006ddd00 .word 0x006ddd00 - -08040234 : + 8040258: 68fb ldr r3, [r7, #12] +} + 804025a: 4618 mov r0, r3 + 804025c: 3710 adds r7, #16 + 804025e: 46bd mov sp, r7 + 8040260: bd80 pop {r7, pc} + 8040262: bf00 nop + 8040264: 2400eae8 .word 0x2400eae8 + 8040268: 2400eafe .word 0x2400eafe + 804026c: 0803ff25 .word 0x0803ff25 + 8040270: 006ddd00 .word 0x006ddd00 + +08040274 : * * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! */ void tcp_pcb_purge(struct tcp_pcb *pcb) { - 8040234: b580 push {r7, lr} - 8040236: b082 sub sp, #8 - 8040238: af00 add r7, sp, #0 - 804023a: 6078 str r0, [r7, #4] + 8040274: b580 push {r7, lr} + 8040276: b082 sub sp, #8 + 8040278: af00 add r7, sp, #0 + 804027a: 6078 str r0, [r7, #4] LWIP_ERROR("tcp_pcb_purge: invalid pcb", pcb != NULL, return); - 804023c: 687b ldr r3, [r7, #4] - 804023e: 2b00 cmp r3, #0 - 8040240: d107 bne.n 8040252 - 8040242: 4b21 ldr r3, [pc, #132] ; (80402c8 ) - 8040244: f640 0251 movw r2, #2129 ; 0x851 - 8040248: 4920 ldr r1, [pc, #128] ; (80402cc ) - 804024a: 4821 ldr r0, [pc, #132] ; (80402d0 ) - 804024c: f007 feaa bl 8047fa4 - 8040250: e037 b.n 80402c2 + 804027c: 687b ldr r3, [r7, #4] + 804027e: 2b00 cmp r3, #0 + 8040280: d107 bne.n 8040292 + 8040282: 4b21 ldr r3, [pc, #132] ; (8040308 ) + 8040284: f640 0251 movw r2, #2129 ; 0x851 + 8040288: 4920 ldr r1, [pc, #128] ; (804030c ) + 804028a: 4821 ldr r0, [pc, #132] ; (8040310 ) + 804028c: f007 feaa bl 8047fe4 + 8040290: e037 b.n 8040302 if (pcb->state != CLOSED && - 8040252: 687b ldr r3, [r7, #4] - 8040254: 7d1b ldrb r3, [r3, #20] - 8040256: 2b00 cmp r3, #0 - 8040258: d033 beq.n 80402c2 + 8040292: 687b ldr r3, [r7, #4] + 8040294: 7d1b ldrb r3, [r3, #20] + 8040296: 2b00 cmp r3, #0 + 8040298: d033 beq.n 8040302 pcb->state != TIME_WAIT && - 804025a: 687b ldr r3, [r7, #4] - 804025c: 7d1b ldrb r3, [r3, #20] + 804029a: 687b ldr r3, [r7, #4] + 804029c: 7d1b ldrb r3, [r3, #20] if (pcb->state != CLOSED && - 804025e: 2b0a cmp r3, #10 - 8040260: d02f beq.n 80402c2 + 804029e: 2b0a cmp r3, #10 + 80402a0: d02f beq.n 8040302 pcb->state != LISTEN) { - 8040262: 687b ldr r3, [r7, #4] - 8040264: 7d1b ldrb r3, [r3, #20] + 80402a2: 687b ldr r3, [r7, #4] + 80402a4: 7d1b ldrb r3, [r3, #20] pcb->state != TIME_WAIT && - 8040266: 2b01 cmp r3, #1 - 8040268: d02b beq.n 80402c2 + 80402a6: 2b01 cmp r3, #1 + 80402a8: d02b beq.n 8040302 LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n")); tcp_backlog_accepted(pcb); if (pcb->refused_data != NULL) { - 804026a: 687b ldr r3, [r7, #4] - 804026c: 6f9b ldr r3, [r3, #120] ; 0x78 - 804026e: 2b00 cmp r3, #0 - 8040270: d007 beq.n 8040282 + 80402aa: 687b ldr r3, [r7, #4] + 80402ac: 6f9b ldr r3, [r3, #120] ; 0x78 + 80402ae: 2b00 cmp r3, #0 + 80402b0: d007 beq.n 80402c2 LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n")); pbuf_free(pcb->refused_data); - 8040272: 687b ldr r3, [r7, #4] - 8040274: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040276: 4618 mov r0, r3 - 8040278: f7fe fada bl 803e830 + 80402b2: 687b ldr r3, [r7, #4] + 80402b4: 6f9b ldr r3, [r3, #120] ; 0x78 + 80402b6: 4618 mov r0, r3 + 80402b8: f7fe fada bl 803e870 pcb->refused_data = NULL; - 804027c: 687b ldr r3, [r7, #4] - 804027e: 2200 movs r2, #0 - 8040280: 679a str r2, [r3, #120] ; 0x78 + 80402bc: 687b ldr r3, [r7, #4] + 80402be: 2200 movs r2, #0 + 80402c0: 679a str r2, [r3, #120] ; 0x78 } if (pcb->unacked != NULL) { LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n")); } #if TCP_QUEUE_OOSEQ if (pcb->ooseq != NULL) { - 8040282: 687b ldr r3, [r7, #4] - 8040284: 6f5b ldr r3, [r3, #116] ; 0x74 - 8040286: 2b00 cmp r3, #0 - 8040288: d002 beq.n 8040290 + 80402c2: 687b ldr r3, [r7, #4] + 80402c4: 6f5b ldr r3, [r3, #116] ; 0x74 + 80402c6: 2b00 cmp r3, #0 + 80402c8: d002 beq.n 80402d0 LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n")); tcp_free_ooseq(pcb); - 804028a: 6878 ldr r0, [r7, #4] - 804028c: f000 f986 bl 804059c + 80402ca: 6878 ldr r0, [r7, #4] + 80402cc: f000 f986 bl 80405dc } #endif /* TCP_QUEUE_OOSEQ */ /* Stop the retransmission timer as it will expect data on unacked queue if it fires */ pcb->rtime = -1; - 8040290: 687b ldr r3, [r7, #4] - 8040292: f64f 72ff movw r2, #65535 ; 0xffff - 8040296: 861a strh r2, [r3, #48] ; 0x30 + 80402d0: 687b ldr r3, [r7, #4] + 80402d2: f64f 72ff movw r2, #65535 ; 0xffff + 80402d6: 861a strh r2, [r3, #48] ; 0x30 tcp_segs_free(pcb->unsent); - 8040298: 687b ldr r3, [r7, #4] - 804029a: 6edb ldr r3, [r3, #108] ; 0x6c - 804029c: 4618 mov r0, r3 - 804029e: f7ff fdc7 bl 803fe30 + 80402d8: 687b ldr r3, [r7, #4] + 80402da: 6edb ldr r3, [r3, #108] ; 0x6c + 80402dc: 4618 mov r0, r3 + 80402de: f7ff fdc7 bl 803fe70 tcp_segs_free(pcb->unacked); - 80402a2: 687b ldr r3, [r7, #4] - 80402a4: 6f1b ldr r3, [r3, #112] ; 0x70 - 80402a6: 4618 mov r0, r3 - 80402a8: f7ff fdc2 bl 803fe30 + 80402e2: 687b ldr r3, [r7, #4] + 80402e4: 6f1b ldr r3, [r3, #112] ; 0x70 + 80402e6: 4618 mov r0, r3 + 80402e8: f7ff fdc2 bl 803fe70 pcb->unacked = pcb->unsent = NULL; - 80402ac: 687b ldr r3, [r7, #4] - 80402ae: 2200 movs r2, #0 - 80402b0: 66da str r2, [r3, #108] ; 0x6c - 80402b2: 687b ldr r3, [r7, #4] - 80402b4: 6eda ldr r2, [r3, #108] ; 0x6c - 80402b6: 687b ldr r3, [r7, #4] - 80402b8: 671a str r2, [r3, #112] ; 0x70 + 80402ec: 687b ldr r3, [r7, #4] + 80402ee: 2200 movs r2, #0 + 80402f0: 66da str r2, [r3, #108] ; 0x6c + 80402f2: 687b ldr r3, [r7, #4] + 80402f4: 6eda ldr r2, [r3, #108] ; 0x6c + 80402f6: 687b ldr r3, [r7, #4] + 80402f8: 671a str r2, [r3, #112] ; 0x70 #if TCP_OVERSIZE pcb->unsent_oversize = 0; - 80402ba: 687b ldr r3, [r7, #4] - 80402bc: 2200 movs r2, #0 - 80402be: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 80402fa: 687b ldr r3, [r7, #4] + 80402fc: 2200 movs r2, #0 + 80402fe: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 #endif /* TCP_OVERSIZE */ } } - 80402c2: 3708 adds r7, #8 - 80402c4: 46bd mov sp, r7 - 80402c6: bd80 pop {r7, pc} - 80402c8: 0804ac30 .word 0x0804ac30 - 80402cc: 0804b27c .word 0x0804b27c - 80402d0: 0804ac74 .word 0x0804ac74 + 8040302: 3708 adds r7, #8 + 8040304: 46bd mov sp, r7 + 8040306: bd80 pop {r7, pc} + 8040308: 0804ac70 .word 0x0804ac70 + 804030c: 0804b2bc .word 0x0804b2bc + 8040310: 0804acb4 .word 0x0804acb4 -080402d4 : +08040314 : * @param pcblist PCB list to purge. * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! */ void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb) { - 80402d4: b580 push {r7, lr} - 80402d6: b084 sub sp, #16 - 80402d8: af00 add r7, sp, #0 - 80402da: 6078 str r0, [r7, #4] - 80402dc: 6039 str r1, [r7, #0] + 8040314: b580 push {r7, lr} + 8040316: b084 sub sp, #16 + 8040318: af00 add r7, sp, #0 + 804031a: 6078 str r0, [r7, #4] + 804031c: 6039 str r1, [r7, #0] LWIP_ASSERT("tcp_pcb_remove: invalid pcb", pcb != NULL); - 80402de: 683b ldr r3, [r7, #0] - 80402e0: 2b00 cmp r3, #0 - 80402e2: d106 bne.n 80402f2 - 80402e4: 4b3e ldr r3, [pc, #248] ; (80403e0 ) - 80402e6: f640 0283 movw r2, #2179 ; 0x883 - 80402ea: 493e ldr r1, [pc, #248] ; (80403e4 ) - 80402ec: 483e ldr r0, [pc, #248] ; (80403e8 ) - 80402ee: f007 fe59 bl 8047fa4 + 804031e: 683b ldr r3, [r7, #0] + 8040320: 2b00 cmp r3, #0 + 8040322: d106 bne.n 8040332 + 8040324: 4b3e ldr r3, [pc, #248] ; (8040420 ) + 8040326: f640 0283 movw r2, #2179 ; 0x883 + 804032a: 493e ldr r1, [pc, #248] ; (8040424 ) + 804032c: 483e ldr r0, [pc, #248] ; (8040428 ) + 804032e: f007 fe59 bl 8047fe4 LWIP_ASSERT("tcp_pcb_remove: invalid pcblist", pcblist != NULL); - 80402f2: 687b ldr r3, [r7, #4] - 80402f4: 2b00 cmp r3, #0 - 80402f6: d106 bne.n 8040306 - 80402f8: 4b39 ldr r3, [pc, #228] ; (80403e0 ) - 80402fa: f640 0284 movw r2, #2180 ; 0x884 - 80402fe: 493b ldr r1, [pc, #236] ; (80403ec ) - 8040300: 4839 ldr r0, [pc, #228] ; (80403e8 ) - 8040302: f007 fe4f bl 8047fa4 + 8040332: 687b ldr r3, [r7, #4] + 8040334: 2b00 cmp r3, #0 + 8040336: d106 bne.n 8040346 + 8040338: 4b39 ldr r3, [pc, #228] ; (8040420 ) + 804033a: f640 0284 movw r2, #2180 ; 0x884 + 804033e: 493b ldr r1, [pc, #236] ; (804042c ) + 8040340: 4839 ldr r0, [pc, #228] ; (8040428 ) + 8040342: f007 fe4f bl 8047fe4 TCP_RMV(pcblist, pcb); - 8040306: 687b ldr r3, [r7, #4] - 8040308: 681b ldr r3, [r3, #0] - 804030a: 683a ldr r2, [r7, #0] - 804030c: 429a cmp r2, r3 - 804030e: d105 bne.n 804031c - 8040310: 687b ldr r3, [r7, #4] - 8040312: 681b ldr r3, [r3, #0] - 8040314: 68da ldr r2, [r3, #12] - 8040316: 687b ldr r3, [r7, #4] - 8040318: 601a str r2, [r3, #0] - 804031a: e013 b.n 8040344 - 804031c: 687b ldr r3, [r7, #4] - 804031e: 681b ldr r3, [r3, #0] - 8040320: 60fb str r3, [r7, #12] - 8040322: e00c b.n 804033e - 8040324: 68fb ldr r3, [r7, #12] - 8040326: 68db ldr r3, [r3, #12] - 8040328: 683a ldr r2, [r7, #0] - 804032a: 429a cmp r2, r3 - 804032c: d104 bne.n 8040338 - 804032e: 683b ldr r3, [r7, #0] - 8040330: 68da ldr r2, [r3, #12] - 8040332: 68fb ldr r3, [r7, #12] - 8040334: 60da str r2, [r3, #12] - 8040336: e005 b.n 8040344 - 8040338: 68fb ldr r3, [r7, #12] - 804033a: 68db ldr r3, [r3, #12] - 804033c: 60fb str r3, [r7, #12] - 804033e: 68fb ldr r3, [r7, #12] - 8040340: 2b00 cmp r3, #0 - 8040342: d1ef bne.n 8040324 - 8040344: 683b ldr r3, [r7, #0] - 8040346: 2200 movs r2, #0 - 8040348: 60da str r2, [r3, #12] + 8040346: 687b ldr r3, [r7, #4] + 8040348: 681b ldr r3, [r3, #0] + 804034a: 683a ldr r2, [r7, #0] + 804034c: 429a cmp r2, r3 + 804034e: d105 bne.n 804035c + 8040350: 687b ldr r3, [r7, #4] + 8040352: 681b ldr r3, [r3, #0] + 8040354: 68da ldr r2, [r3, #12] + 8040356: 687b ldr r3, [r7, #4] + 8040358: 601a str r2, [r3, #0] + 804035a: e013 b.n 8040384 + 804035c: 687b ldr r3, [r7, #4] + 804035e: 681b ldr r3, [r3, #0] + 8040360: 60fb str r3, [r7, #12] + 8040362: e00c b.n 804037e + 8040364: 68fb ldr r3, [r7, #12] + 8040366: 68db ldr r3, [r3, #12] + 8040368: 683a ldr r2, [r7, #0] + 804036a: 429a cmp r2, r3 + 804036c: d104 bne.n 8040378 + 804036e: 683b ldr r3, [r7, #0] + 8040370: 68da ldr r2, [r3, #12] + 8040372: 68fb ldr r3, [r7, #12] + 8040374: 60da str r2, [r3, #12] + 8040376: e005 b.n 8040384 + 8040378: 68fb ldr r3, [r7, #12] + 804037a: 68db ldr r3, [r3, #12] + 804037c: 60fb str r3, [r7, #12] + 804037e: 68fb ldr r3, [r7, #12] + 8040380: 2b00 cmp r3, #0 + 8040382: d1ef bne.n 8040364 + 8040384: 683b ldr r3, [r7, #0] + 8040386: 2200 movs r2, #0 + 8040388: 60da str r2, [r3, #12] tcp_pcb_purge(pcb); - 804034a: 6838 ldr r0, [r7, #0] - 804034c: f7ff ff72 bl 8040234 + 804038a: 6838 ldr r0, [r7, #0] + 804038c: f7ff ff72 bl 8040274 /* if there is an outstanding delayed ACKs, send it */ if ((pcb->state != TIME_WAIT) && - 8040350: 683b ldr r3, [r7, #0] - 8040352: 7d1b ldrb r3, [r3, #20] - 8040354: 2b0a cmp r3, #10 - 8040356: d013 beq.n 8040380 + 8040390: 683b ldr r3, [r7, #0] + 8040392: 7d1b ldrb r3, [r3, #20] + 8040394: 2b0a cmp r3, #10 + 8040396: d013 beq.n 80403c0 (pcb->state != LISTEN) && - 8040358: 683b ldr r3, [r7, #0] - 804035a: 7d1b ldrb r3, [r3, #20] + 8040398: 683b ldr r3, [r7, #0] + 804039a: 7d1b ldrb r3, [r3, #20] if ((pcb->state != TIME_WAIT) && - 804035c: 2b01 cmp r3, #1 - 804035e: d00f beq.n 8040380 + 804039c: 2b01 cmp r3, #1 + 804039e: d00f beq.n 80403c0 (pcb->flags & TF_ACK_DELAY)) { - 8040360: 683b ldr r3, [r7, #0] - 8040362: 8b5b ldrh r3, [r3, #26] - 8040364: f003 0301 and.w r3, r3, #1 + 80403a0: 683b ldr r3, [r7, #0] + 80403a2: 8b5b ldrh r3, [r3, #26] + 80403a4: f003 0301 and.w r3, r3, #1 (pcb->state != LISTEN) && - 8040368: 2b00 cmp r3, #0 - 804036a: d009 beq.n 8040380 + 80403a8: 2b00 cmp r3, #0 + 80403aa: d009 beq.n 80403c0 tcp_ack_now(pcb); - 804036c: 683b ldr r3, [r7, #0] - 804036e: 8b5b ldrh r3, [r3, #26] - 8040370: f043 0302 orr.w r3, r3, #2 - 8040374: b29a uxth r2, r3 - 8040376: 683b ldr r3, [r7, #0] - 8040378: 835a strh r2, [r3, #26] + 80403ac: 683b ldr r3, [r7, #0] + 80403ae: 8b5b ldrh r3, [r3, #26] + 80403b0: f043 0302 orr.w r3, r3, #2 + 80403b4: b29a uxth r2, r3 + 80403b6: 683b ldr r3, [r7, #0] + 80403b8: 835a strh r2, [r3, #26] tcp_output(pcb); - 804037a: 6838 ldr r0, [r7, #0] - 804037c: f003 fbc6 bl 8043b0c + 80403ba: 6838 ldr r0, [r7, #0] + 80403bc: f003 fbc6 bl 8043b4c } if (pcb->state != LISTEN) { - 8040380: 683b ldr r3, [r7, #0] - 8040382: 7d1b ldrb r3, [r3, #20] - 8040384: 2b01 cmp r3, #1 - 8040386: d020 beq.n 80403ca + 80403c0: 683b ldr r3, [r7, #0] + 80403c2: 7d1b ldrb r3, [r3, #20] + 80403c4: 2b01 cmp r3, #1 + 80403c6: d020 beq.n 804040a LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL); - 8040388: 683b ldr r3, [r7, #0] - 804038a: 6edb ldr r3, [r3, #108] ; 0x6c - 804038c: 2b00 cmp r3, #0 - 804038e: d006 beq.n 804039e - 8040390: 4b13 ldr r3, [pc, #76] ; (80403e0 ) - 8040392: f640 0293 movw r2, #2195 ; 0x893 - 8040396: 4916 ldr r1, [pc, #88] ; (80403f0 ) - 8040398: 4813 ldr r0, [pc, #76] ; (80403e8 ) - 804039a: f007 fe03 bl 8047fa4 + 80403c8: 683b ldr r3, [r7, #0] + 80403ca: 6edb ldr r3, [r3, #108] ; 0x6c + 80403cc: 2b00 cmp r3, #0 + 80403ce: d006 beq.n 80403de + 80403d0: 4b13 ldr r3, [pc, #76] ; (8040420 ) + 80403d2: f640 0293 movw r2, #2195 ; 0x893 + 80403d6: 4916 ldr r1, [pc, #88] ; (8040430 ) + 80403d8: 4813 ldr r0, [pc, #76] ; (8040428 ) + 80403da: f007 fe03 bl 8047fe4 LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL); - 804039e: 683b ldr r3, [r7, #0] - 80403a0: 6f1b ldr r3, [r3, #112] ; 0x70 - 80403a2: 2b00 cmp r3, #0 - 80403a4: d006 beq.n 80403b4 - 80403a6: 4b0e ldr r3, [pc, #56] ; (80403e0 ) - 80403a8: f640 0294 movw r2, #2196 ; 0x894 - 80403ac: 4911 ldr r1, [pc, #68] ; (80403f4 ) - 80403ae: 480e ldr r0, [pc, #56] ; (80403e8 ) - 80403b0: f007 fdf8 bl 8047fa4 + 80403de: 683b ldr r3, [r7, #0] + 80403e0: 6f1b ldr r3, [r3, #112] ; 0x70 + 80403e2: 2b00 cmp r3, #0 + 80403e4: d006 beq.n 80403f4 + 80403e6: 4b0e ldr r3, [pc, #56] ; (8040420 ) + 80403e8: f640 0294 movw r2, #2196 ; 0x894 + 80403ec: 4911 ldr r1, [pc, #68] ; (8040434 ) + 80403ee: 480e ldr r0, [pc, #56] ; (8040428 ) + 80403f0: f007 fdf8 bl 8047fe4 #if TCP_QUEUE_OOSEQ LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL); - 80403b4: 683b ldr r3, [r7, #0] - 80403b6: 6f5b ldr r3, [r3, #116] ; 0x74 - 80403b8: 2b00 cmp r3, #0 - 80403ba: d006 beq.n 80403ca - 80403bc: 4b08 ldr r3, [pc, #32] ; (80403e0 ) - 80403be: f640 0296 movw r2, #2198 ; 0x896 - 80403c2: 490d ldr r1, [pc, #52] ; (80403f8 ) - 80403c4: 4808 ldr r0, [pc, #32] ; (80403e8 ) - 80403c6: f007 fded bl 8047fa4 + 80403f4: 683b ldr r3, [r7, #0] + 80403f6: 6f5b ldr r3, [r3, #116] ; 0x74 + 80403f8: 2b00 cmp r3, #0 + 80403fa: d006 beq.n 804040a + 80403fc: 4b08 ldr r3, [pc, #32] ; (8040420 ) + 80403fe: f640 0296 movw r2, #2198 ; 0x896 + 8040402: 490d ldr r1, [pc, #52] ; (8040438 ) + 8040404: 4808 ldr r0, [pc, #32] ; (8040428 ) + 8040406: f007 fded bl 8047fe4 #endif /* TCP_QUEUE_OOSEQ */ } pcb->state = CLOSED; - 80403ca: 683b ldr r3, [r7, #0] - 80403cc: 2200 movs r2, #0 - 80403ce: 751a strb r2, [r3, #20] + 804040a: 683b ldr r3, [r7, #0] + 804040c: 2200 movs r2, #0 + 804040e: 751a strb r2, [r3, #20] /* reset the local port to prevent the pcb from being 'bound' */ pcb->local_port = 0; - 80403d0: 683b ldr r3, [r7, #0] - 80403d2: 2200 movs r2, #0 - 80403d4: 82da strh r2, [r3, #22] + 8040410: 683b ldr r3, [r7, #0] + 8040412: 2200 movs r2, #0 + 8040414: 82da strh r2, [r3, #22] LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane()); } - 80403d6: bf00 nop - 80403d8: 3710 adds r7, #16 - 80403da: 46bd mov sp, r7 - 80403dc: bd80 pop {r7, pc} - 80403de: bf00 nop - 80403e0: 0804ac30 .word 0x0804ac30 - 80403e4: 0804b298 .word 0x0804b298 - 80403e8: 0804ac74 .word 0x0804ac74 - 80403ec: 0804b2b4 .word 0x0804b2b4 - 80403f0: 0804b2d4 .word 0x0804b2d4 - 80403f4: 0804b2ec .word 0x0804b2ec - 80403f8: 0804b308 .word 0x0804b308 - -080403fc : + 8040416: bf00 nop + 8040418: 3710 adds r7, #16 + 804041a: 46bd mov sp, r7 + 804041c: bd80 pop {r7, pc} + 804041e: bf00 nop + 8040420: 0804ac70 .word 0x0804ac70 + 8040424: 0804b2d8 .word 0x0804b2d8 + 8040428: 0804acb4 .word 0x0804acb4 + 804042c: 0804b2f4 .word 0x0804b2f4 + 8040430: 0804b314 .word 0x0804b314 + 8040434: 0804b32c .word 0x0804b32c + 8040438: 0804b348 .word 0x0804b348 + +0804043c : * * @return u32_t pseudo random sequence number */ u32_t tcp_next_iss(struct tcp_pcb *pcb) { - 80403fc: b580 push {r7, lr} - 80403fe: b082 sub sp, #8 - 8040400: af00 add r7, sp, #0 - 8040402: 6078 str r0, [r7, #4] + 804043c: b580 push {r7, lr} + 804043e: b082 sub sp, #8 + 8040440: af00 add r7, sp, #0 + 8040442: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL); return LWIP_HOOK_TCP_ISN(&pcb->local_ip, pcb->local_port, &pcb->remote_ip, pcb->remote_port); #else /* LWIP_HOOK_TCP_ISN */ static u32_t iss = 6510; LWIP_ASSERT("tcp_next_iss: invalid pcb", pcb != NULL); - 8040404: 687b ldr r3, [r7, #4] - 8040406: 2b00 cmp r3, #0 - 8040408: d106 bne.n 8040418 - 804040a: 4b0a ldr r3, [pc, #40] ; (8040434 ) - 804040c: f640 02af movw r2, #2223 ; 0x8af - 8040410: 4909 ldr r1, [pc, #36] ; (8040438 ) - 8040412: 480a ldr r0, [pc, #40] ; (804043c ) - 8040414: f007 fdc6 bl 8047fa4 + 8040444: 687b ldr r3, [r7, #4] + 8040446: 2b00 cmp r3, #0 + 8040448: d106 bne.n 8040458 + 804044a: 4b0a ldr r3, [pc, #40] ; (8040474 ) + 804044c: f640 02af movw r2, #2223 ; 0x8af + 8040450: 4909 ldr r1, [pc, #36] ; (8040478 ) + 8040452: 480a ldr r0, [pc, #40] ; (804047c ) + 8040454: f007 fdc6 bl 8047fe4 LWIP_UNUSED_ARG(pcb); iss += tcp_ticks; /* XXX */ - 8040418: 4b09 ldr r3, [pc, #36] ; (8040440 ) - 804041a: 681a ldr r2, [r3, #0] - 804041c: 4b09 ldr r3, [pc, #36] ; (8040444 ) - 804041e: 681b ldr r3, [r3, #0] - 8040420: 4413 add r3, r2 - 8040422: 4a07 ldr r2, [pc, #28] ; (8040440 ) - 8040424: 6013 str r3, [r2, #0] + 8040458: 4b09 ldr r3, [pc, #36] ; (8040480 ) + 804045a: 681a ldr r2, [r3, #0] + 804045c: 4b09 ldr r3, [pc, #36] ; (8040484 ) + 804045e: 681b ldr r3, [r3, #0] + 8040460: 4413 add r3, r2 + 8040462: 4a07 ldr r2, [pc, #28] ; (8040480 ) + 8040464: 6013 str r3, [r2, #0] return iss; - 8040426: 4b06 ldr r3, [pc, #24] ; (8040440 ) - 8040428: 681b ldr r3, [r3, #0] + 8040466: 4b06 ldr r3, [pc, #24] ; (8040480 ) + 8040468: 681b ldr r3, [r3, #0] #endif /* LWIP_HOOK_TCP_ISN */ } - 804042a: 4618 mov r0, r3 - 804042c: 3708 adds r7, #8 - 804042e: 46bd mov sp, r7 - 8040430: bd80 pop {r7, pc} - 8040432: bf00 nop - 8040434: 0804ac30 .word 0x0804ac30 - 8040438: 0804b320 .word 0x0804b320 - 804043c: 0804ac74 .word 0x0804ac74 - 8040440: 24000140 .word 0x24000140 - 8040444: 2400eae8 .word 0x2400eae8 - -08040448 : + 804046a: 4618 mov r0, r3 + 804046c: 3708 adds r7, #8 + 804046e: 46bd mov sp, r7 + 8040470: bd80 pop {r7, pc} + 8040472: bf00 nop + 8040474: 0804ac70 .word 0x0804ac70 + 8040478: 0804b360 .word 0x0804b360 + 804047c: 0804acb4 .word 0x0804acb4 + 8040480: 24000140 .word 0x24000140 + 8040484: 2400eae8 .word 0x2400eae8 + +08040488 : * by calculating the minimum of TCP_MSS and the mtu (if set) of the target * netif (if not NULL). */ u16_t tcp_eff_send_mss_netif(u16_t sendmss, struct netif *outif, const ip_addr_t *dest) { - 8040448: b580 push {r7, lr} - 804044a: b086 sub sp, #24 - 804044c: af00 add r7, sp, #0 - 804044e: 4603 mov r3, r0 - 8040450: 60b9 str r1, [r7, #8] - 8040452: 607a str r2, [r7, #4] - 8040454: 81fb strh r3, [r7, #14] + 8040488: b580 push {r7, lr} + 804048a: b086 sub sp, #24 + 804048c: af00 add r7, sp, #0 + 804048e: 4603 mov r3, r0 + 8040490: 60b9 str r1, [r7, #8] + 8040492: 607a str r2, [r7, #4] + 8040494: 81fb strh r3, [r7, #14] u16_t mss_s; u16_t mtu; LWIP_UNUSED_ARG(dest); /* in case IPv6 is disabled */ LWIP_ASSERT("tcp_eff_send_mss_netif: invalid dst_ip", dest != NULL); - 8040456: 687b ldr r3, [r7, #4] - 8040458: 2b00 cmp r3, #0 - 804045a: d106 bne.n 804046a - 804045c: 4b14 ldr r3, [pc, #80] ; (80404b0 ) - 804045e: f640 02c5 movw r2, #2245 ; 0x8c5 - 8040462: 4914 ldr r1, [pc, #80] ; (80404b4 ) - 8040464: 4814 ldr r0, [pc, #80] ; (80404b8 ) - 8040466: f007 fd9d bl 8047fa4 + 8040496: 687b ldr r3, [r7, #4] + 8040498: 2b00 cmp r3, #0 + 804049a: d106 bne.n 80404aa + 804049c: 4b14 ldr r3, [pc, #80] ; (80404f0 ) + 804049e: f640 02c5 movw r2, #2245 ; 0x8c5 + 80404a2: 4914 ldr r1, [pc, #80] ; (80404f4 ) + 80404a4: 4814 ldr r0, [pc, #80] ; (80404f8 ) + 80404a6: f007 fd9d bl 8047fe4 else #endif /* LWIP_IPV4 */ #endif /* LWIP_IPV6 */ #if LWIP_IPV4 { if (outif == NULL) { - 804046a: 68bb ldr r3, [r7, #8] - 804046c: 2b00 cmp r3, #0 - 804046e: d101 bne.n 8040474 + 80404aa: 68bb ldr r3, [r7, #8] + 80404ac: 2b00 cmp r3, #0 + 80404ae: d101 bne.n 80404b4 return sendmss; - 8040470: 89fb ldrh r3, [r7, #14] - 8040472: e019 b.n 80404a8 + 80404b0: 89fb ldrh r3, [r7, #14] + 80404b2: e019 b.n 80404e8 } mtu = outif->mtu; - 8040474: 68bb ldr r3, [r7, #8] - 8040476: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8040478: 82fb strh r3, [r7, #22] + 80404b4: 68bb ldr r3, [r7, #8] + 80404b6: 8d1b ldrh r3, [r3, #40] ; 0x28 + 80404b8: 82fb strh r3, [r7, #22] } #endif /* LWIP_IPV4 */ if (mtu != 0) { - 804047a: 8afb ldrh r3, [r7, #22] - 804047c: 2b00 cmp r3, #0 - 804047e: d012 beq.n 80404a6 + 80404ba: 8afb ldrh r3, [r7, #22] + 80404bc: 2b00 cmp r3, #0 + 80404be: d012 beq.n 80404e6 else #endif /* LWIP_IPV4 */ #endif /* LWIP_IPV6 */ #if LWIP_IPV4 { offset = IP_HLEN + TCP_HLEN; - 8040480: 2328 movs r3, #40 ; 0x28 - 8040482: 82bb strh r3, [r7, #20] + 80404c0: 2328 movs r3, #40 ; 0x28 + 80404c2: 82bb strh r3, [r7, #20] } #endif /* LWIP_IPV4 */ mss_s = (mtu > offset) ? (u16_t)(mtu - offset) : 0; - 8040484: 8afa ldrh r2, [r7, #22] - 8040486: 8abb ldrh r3, [r7, #20] - 8040488: 429a cmp r2, r3 - 804048a: d904 bls.n 8040496 - 804048c: 8afa ldrh r2, [r7, #22] - 804048e: 8abb ldrh r3, [r7, #20] - 8040490: 1ad3 subs r3, r2, r3 - 8040492: b29b uxth r3, r3 - 8040494: e000 b.n 8040498 - 8040496: 2300 movs r3, #0 - 8040498: 827b strh r3, [r7, #18] + 80404c4: 8afa ldrh r2, [r7, #22] + 80404c6: 8abb ldrh r3, [r7, #20] + 80404c8: 429a cmp r2, r3 + 80404ca: d904 bls.n 80404d6 + 80404cc: 8afa ldrh r2, [r7, #22] + 80404ce: 8abb ldrh r3, [r7, #20] + 80404d0: 1ad3 subs r3, r2, r3 + 80404d2: b29b uxth r3, r3 + 80404d4: e000 b.n 80404d8 + 80404d6: 2300 movs r3, #0 + 80404d8: 827b strh r3, [r7, #18] /* RFC 1122, chap 4.2.2.6: * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize * We correct for TCP options in tcp_write(), and don't support IP options. */ sendmss = LWIP_MIN(sendmss, mss_s); - 804049a: 8a7a ldrh r2, [r7, #18] - 804049c: 89fb ldrh r3, [r7, #14] - 804049e: 4293 cmp r3, r2 - 80404a0: bf28 it cs - 80404a2: 4613 movcs r3, r2 - 80404a4: 81fb strh r3, [r7, #14] + 80404da: 8a7a ldrh r2, [r7, #18] + 80404dc: 89fb ldrh r3, [r7, #14] + 80404de: 4293 cmp r3, r2 + 80404e0: bf28 it cs + 80404e2: 4613 movcs r3, r2 + 80404e4: 81fb strh r3, [r7, #14] } return sendmss; - 80404a6: 89fb ldrh r3, [r7, #14] + 80404e6: 89fb ldrh r3, [r7, #14] } - 80404a8: 4618 mov r0, r3 - 80404aa: 3718 adds r7, #24 - 80404ac: 46bd mov sp, r7 - 80404ae: bd80 pop {r7, pc} - 80404b0: 0804ac30 .word 0x0804ac30 - 80404b4: 0804b33c .word 0x0804b33c - 80404b8: 0804ac74 .word 0x0804ac74 + 80404e8: 4618 mov r0, r3 + 80404ea: 3718 adds r7, #24 + 80404ec: 46bd mov sp, r7 + 80404ee: bd80 pop {r7, pc} + 80404f0: 0804ac70 .word 0x0804ac70 + 80404f4: 0804b37c .word 0x0804b37c + 80404f8: 0804acb4 .word 0x0804acb4 -080404bc : +080404fc : #endif /* TCP_CALCULATE_EFF_SEND_MSS */ /** Helper function for tcp_netif_ip_addr_changed() that iterates a pcb list */ static void tcp_netif_ip_addr_changed_pcblist(const ip_addr_t *old_addr, struct tcp_pcb *pcb_list) { - 80404bc: b580 push {r7, lr} - 80404be: b084 sub sp, #16 - 80404c0: af00 add r7, sp, #0 - 80404c2: 6078 str r0, [r7, #4] - 80404c4: 6039 str r1, [r7, #0] + 80404fc: b580 push {r7, lr} + 80404fe: b084 sub sp, #16 + 8040500: af00 add r7, sp, #0 + 8040502: 6078 str r0, [r7, #4] + 8040504: 6039 str r1, [r7, #0] struct tcp_pcb *pcb; pcb = pcb_list; - 80404c6: 683b ldr r3, [r7, #0] - 80404c8: 60fb str r3, [r7, #12] + 8040506: 683b ldr r3, [r7, #0] + 8040508: 60fb str r3, [r7, #12] LWIP_ASSERT("tcp_netif_ip_addr_changed_pcblist: invalid old_addr", old_addr != NULL); - 80404ca: 687b ldr r3, [r7, #4] - 80404cc: 2b00 cmp r3, #0 - 80404ce: d119 bne.n 8040504 - 80404d0: 4b10 ldr r3, [pc, #64] ; (8040514 ) - 80404d2: f44f 6210 mov.w r2, #2304 ; 0x900 - 80404d6: 4910 ldr r1, [pc, #64] ; (8040518 ) - 80404d8: 4810 ldr r0, [pc, #64] ; (804051c ) - 80404da: f007 fd63 bl 8047fa4 + 804050a: 687b ldr r3, [r7, #4] + 804050c: 2b00 cmp r3, #0 + 804050e: d119 bne.n 8040544 + 8040510: 4b10 ldr r3, [pc, #64] ; (8040554 ) + 8040512: f44f 6210 mov.w r2, #2304 ; 0x900 + 8040516: 4910 ldr r1, [pc, #64] ; (8040558 ) + 8040518: 4810 ldr r0, [pc, #64] ; (804055c ) + 804051a: f007 fd63 bl 8047fe4 while (pcb != NULL) { - 80404de: e011 b.n 8040504 + 804051e: e011 b.n 8040544 /* PCB bound to current local interface address? */ if (ip_addr_cmp(&pcb->local_ip, old_addr) - 80404e0: 68fb ldr r3, [r7, #12] - 80404e2: 681a ldr r2, [r3, #0] - 80404e4: 687b ldr r3, [r7, #4] - 80404e6: 681b ldr r3, [r3, #0] - 80404e8: 429a cmp r2, r3 - 80404ea: d108 bne.n 80404fe + 8040520: 68fb ldr r3, [r7, #12] + 8040522: 681a ldr r2, [r3, #0] + 8040524: 687b ldr r3, [r7, #4] + 8040526: 681b ldr r3, [r3, #0] + 8040528: 429a cmp r2, r3 + 804052a: d108 bne.n 804053e /* connections to link-local addresses must persist (RFC3927 ch. 1.9) */ && (!IP_IS_V4_VAL(pcb->local_ip) || !ip4_addr_islinklocal(ip_2_ip4(&pcb->local_ip))) #endif /* LWIP_AUTOIP */ ) { /* this connection must be aborted */ struct tcp_pcb *next = pcb->next; - 80404ec: 68fb ldr r3, [r7, #12] - 80404ee: 68db ldr r3, [r3, #12] - 80404f0: 60bb str r3, [r7, #8] + 804052c: 68fb ldr r3, [r7, #12] + 804052e: 68db ldr r3, [r3, #12] + 8040530: 60bb str r3, [r7, #8] LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb)); tcp_abort(pcb); - 80404f2: 68f8 ldr r0, [r7, #12] - 80404f4: f7fe ffc6 bl 803f484 + 8040532: 68f8 ldr r0, [r7, #12] + 8040534: f7fe ffc6 bl 803f4c4 pcb = next; - 80404f8: 68bb ldr r3, [r7, #8] - 80404fa: 60fb str r3, [r7, #12] - 80404fc: e002 b.n 8040504 + 8040538: 68bb ldr r3, [r7, #8] + 804053a: 60fb str r3, [r7, #12] + 804053c: e002 b.n 8040544 } else { pcb = pcb->next; - 80404fe: 68fb ldr r3, [r7, #12] - 8040500: 68db ldr r3, [r3, #12] - 8040502: 60fb str r3, [r7, #12] + 804053e: 68fb ldr r3, [r7, #12] + 8040540: 68db ldr r3, [r3, #12] + 8040542: 60fb str r3, [r7, #12] while (pcb != NULL) { - 8040504: 68fb ldr r3, [r7, #12] - 8040506: 2b00 cmp r3, #0 - 8040508: d1ea bne.n 80404e0 + 8040544: 68fb ldr r3, [r7, #12] + 8040546: 2b00 cmp r3, #0 + 8040548: d1ea bne.n 8040520 } } } - 804050a: bf00 nop - 804050c: bf00 nop - 804050e: 3710 adds r7, #16 - 8040510: 46bd mov sp, r7 - 8040512: bd80 pop {r7, pc} - 8040514: 0804ac30 .word 0x0804ac30 - 8040518: 0804b364 .word 0x0804b364 - 804051c: 0804ac74 .word 0x0804ac74 + 804054a: bf00 nop + 804054c: bf00 nop + 804054e: 3710 adds r7, #16 + 8040550: 46bd mov sp, r7 + 8040552: bd80 pop {r7, pc} + 8040554: 0804ac70 .word 0x0804ac70 + 8040558: 0804b3a4 .word 0x0804b3a4 + 804055c: 0804acb4 .word 0x0804acb4 -08040520 : +08040560 : * @param old_addr IP address of the netif before change * @param new_addr IP address of the netif after change or NULL if netif has been removed */ void tcp_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) { - 8040520: b580 push {r7, lr} - 8040522: b084 sub sp, #16 - 8040524: af00 add r7, sp, #0 - 8040526: 6078 str r0, [r7, #4] - 8040528: 6039 str r1, [r7, #0] + 8040560: b580 push {r7, lr} + 8040562: b084 sub sp, #16 + 8040564: af00 add r7, sp, #0 + 8040566: 6078 str r0, [r7, #4] + 8040568: 6039 str r1, [r7, #0] struct tcp_pcb_listen *lpcb; if (!ip_addr_isany(old_addr)) { - 804052a: 687b ldr r3, [r7, #4] - 804052c: 2b00 cmp r3, #0 - 804052e: d02a beq.n 8040586 - 8040530: 687b ldr r3, [r7, #4] - 8040532: 681b ldr r3, [r3, #0] - 8040534: 2b00 cmp r3, #0 - 8040536: d026 beq.n 8040586 + 804056a: 687b ldr r3, [r7, #4] + 804056c: 2b00 cmp r3, #0 + 804056e: d02a beq.n 80405c6 + 8040570: 687b ldr r3, [r7, #4] + 8040572: 681b ldr r3, [r3, #0] + 8040574: 2b00 cmp r3, #0 + 8040576: d026 beq.n 80405c6 tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_active_pcbs); - 8040538: 4b15 ldr r3, [pc, #84] ; (8040590 ) - 804053a: 681b ldr r3, [r3, #0] - 804053c: 4619 mov r1, r3 - 804053e: 6878 ldr r0, [r7, #4] - 8040540: f7ff ffbc bl 80404bc + 8040578: 4b15 ldr r3, [pc, #84] ; (80405d0 ) + 804057a: 681b ldr r3, [r3, #0] + 804057c: 4619 mov r1, r3 + 804057e: 6878 ldr r0, [r7, #4] + 8040580: f7ff ffbc bl 80404fc tcp_netif_ip_addr_changed_pcblist(old_addr, tcp_bound_pcbs); - 8040544: 4b13 ldr r3, [pc, #76] ; (8040594 ) - 8040546: 681b ldr r3, [r3, #0] - 8040548: 4619 mov r1, r3 - 804054a: 6878 ldr r0, [r7, #4] - 804054c: f7ff ffb6 bl 80404bc + 8040584: 4b13 ldr r3, [pc, #76] ; (80405d4 ) + 8040586: 681b ldr r3, [r3, #0] + 8040588: 4619 mov r1, r3 + 804058a: 6878 ldr r0, [r7, #4] + 804058c: f7ff ffb6 bl 80404fc if (!ip_addr_isany(new_addr)) { - 8040550: 683b ldr r3, [r7, #0] - 8040552: 2b00 cmp r3, #0 - 8040554: d017 beq.n 8040586 - 8040556: 683b ldr r3, [r7, #0] - 8040558: 681b ldr r3, [r3, #0] - 804055a: 2b00 cmp r3, #0 - 804055c: d013 beq.n 8040586 + 8040590: 683b ldr r3, [r7, #0] + 8040592: 2b00 cmp r3, #0 + 8040594: d017 beq.n 80405c6 + 8040596: 683b ldr r3, [r7, #0] + 8040598: 681b ldr r3, [r3, #0] + 804059a: 2b00 cmp r3, #0 + 804059c: d013 beq.n 80405c6 /* PCB bound to current local interface address? */ for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 804055e: 4b0e ldr r3, [pc, #56] ; (8040598 ) - 8040560: 681b ldr r3, [r3, #0] - 8040562: 60fb str r3, [r7, #12] - 8040564: e00c b.n 8040580 + 804059e: 4b0e ldr r3, [pc, #56] ; (80405d8 ) + 80405a0: 681b ldr r3, [r3, #0] + 80405a2: 60fb str r3, [r7, #12] + 80405a4: e00c b.n 80405c0 /* PCB bound to current local interface address? */ if (ip_addr_cmp(&lpcb->local_ip, old_addr)) { - 8040566: 68fb ldr r3, [r7, #12] - 8040568: 681a ldr r2, [r3, #0] - 804056a: 687b ldr r3, [r7, #4] - 804056c: 681b ldr r3, [r3, #0] - 804056e: 429a cmp r2, r3 - 8040570: d103 bne.n 804057a + 80405a6: 68fb ldr r3, [r7, #12] + 80405a8: 681a ldr r2, [r3, #0] + 80405aa: 687b ldr r3, [r7, #4] + 80405ac: 681b ldr r3, [r3, #0] + 80405ae: 429a cmp r2, r3 + 80405b0: d103 bne.n 80405ba /* The PCB is listening to the old ipaddr and * is set to listen to the new one instead */ ip_addr_copy(lpcb->local_ip, *new_addr); - 8040572: 683b ldr r3, [r7, #0] - 8040574: 681a ldr r2, [r3, #0] - 8040576: 68fb ldr r3, [r7, #12] - 8040578: 601a str r2, [r3, #0] + 80405b2: 683b ldr r3, [r7, #0] + 80405b4: 681a ldr r2, [r3, #0] + 80405b6: 68fb ldr r3, [r7, #12] + 80405b8: 601a str r2, [r3, #0] for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 804057a: 68fb ldr r3, [r7, #12] - 804057c: 68db ldr r3, [r3, #12] - 804057e: 60fb str r3, [r7, #12] - 8040580: 68fb ldr r3, [r7, #12] - 8040582: 2b00 cmp r3, #0 - 8040584: d1ef bne.n 8040566 + 80405ba: 68fb ldr r3, [r7, #12] + 80405bc: 68db ldr r3, [r3, #12] + 80405be: 60fb str r3, [r7, #12] + 80405c0: 68fb ldr r3, [r7, #12] + 80405c2: 2b00 cmp r3, #0 + 80405c4: d1ef bne.n 80405a6 } } } } } - 8040586: bf00 nop - 8040588: 3710 adds r7, #16 - 804058a: 46bd mov sp, r7 - 804058c: bd80 pop {r7, pc} - 804058e: bf00 nop - 8040590: 2400eaf4 .word 0x2400eaf4 - 8040594: 2400eaec .word 0x2400eaec - 8040598: 2400eaf0 .word 0x2400eaf0 + 80405c6: bf00 nop + 80405c8: 3710 adds r7, #16 + 80405ca: 46bd mov sp, r7 + 80405cc: bd80 pop {r7, pc} + 80405ce: bf00 nop + 80405d0: 2400eaf4 .word 0x2400eaf4 + 80405d4: 2400eaec .word 0x2400eaec + 80405d8: 2400eaf0 .word 0x2400eaf0 -0804059c : +080405dc : #if TCP_QUEUE_OOSEQ /* Free all ooseq pbufs (and possibly reset SACK state) */ void tcp_free_ooseq(struct tcp_pcb *pcb) { - 804059c: b580 push {r7, lr} - 804059e: b082 sub sp, #8 - 80405a0: af00 add r7, sp, #0 - 80405a2: 6078 str r0, [r7, #4] + 80405dc: b580 push {r7, lr} + 80405de: b082 sub sp, #8 + 80405e0: af00 add r7, sp, #0 + 80405e2: 6078 str r0, [r7, #4] if (pcb->ooseq) { - 80405a4: 687b ldr r3, [r7, #4] - 80405a6: 6f5b ldr r3, [r3, #116] ; 0x74 - 80405a8: 2b00 cmp r3, #0 - 80405aa: d007 beq.n 80405bc + 80405e4: 687b ldr r3, [r7, #4] + 80405e6: 6f5b ldr r3, [r3, #116] ; 0x74 + 80405e8: 2b00 cmp r3, #0 + 80405ea: d007 beq.n 80405fc tcp_segs_free(pcb->ooseq); - 80405ac: 687b ldr r3, [r7, #4] - 80405ae: 6f5b ldr r3, [r3, #116] ; 0x74 - 80405b0: 4618 mov r0, r3 - 80405b2: f7ff fc3d bl 803fe30 + 80405ec: 687b ldr r3, [r7, #4] + 80405ee: 6f5b ldr r3, [r3, #116] ; 0x74 + 80405f0: 4618 mov r0, r3 + 80405f2: f7ff fc3d bl 803fe70 pcb->ooseq = NULL; - 80405b6: 687b ldr r3, [r7, #4] - 80405b8: 2200 movs r2, #0 - 80405ba: 675a str r2, [r3, #116] ; 0x74 + 80405f6: 687b ldr r3, [r7, #4] + 80405f8: 2200 movs r2, #0 + 80405fa: 675a str r2, [r3, #116] ; 0x74 #if LWIP_TCP_SACK_OUT memset(pcb->rcv_sacks, 0, sizeof(pcb->rcv_sacks)); #endif /* LWIP_TCP_SACK_OUT */ } } - 80405bc: bf00 nop - 80405be: 3708 adds r7, #8 - 80405c0: 46bd mov sp, r7 - 80405c2: bd80 pop {r7, pc} + 80405fc: bf00 nop + 80405fe: 3708 adds r7, #8 + 8040600: 46bd mov sp, r7 + 8040602: bd80 pop {r7, pc} -080405c4 : +08040604 : * @param p received TCP segment to process (p->payload pointing to the TCP header) * @param inp network interface on which this segment was received */ void tcp_input(struct pbuf *p, struct netif *inp) { - 80405c4: b590 push {r4, r7, lr} - 80405c6: b08d sub sp, #52 ; 0x34 - 80405c8: af04 add r7, sp, #16 - 80405ca: 6078 str r0, [r7, #4] - 80405cc: 6039 str r1, [r7, #0] + 8040604: b590 push {r4, r7, lr} + 8040606: b08d sub sp, #52 ; 0x34 + 8040608: af04 add r7, sp, #16 + 804060a: 6078 str r0, [r7, #4] + 804060c: 6039 str r1, [r7, #0] u8_t hdrlen_bytes; err_t err; LWIP_UNUSED_ARG(inp); LWIP_ASSERT_CORE_LOCKED(); LWIP_ASSERT("tcp_input: invalid pbuf", p != NULL); - 80405ce: 687b ldr r3, [r7, #4] - 80405d0: 2b00 cmp r3, #0 - 80405d2: d105 bne.n 80405e0 - 80405d4: 4b9b ldr r3, [pc, #620] ; (8040844 ) - 80405d6: 2283 movs r2, #131 ; 0x83 - 80405d8: 499b ldr r1, [pc, #620] ; (8040848 ) - 80405da: 489c ldr r0, [pc, #624] ; (804084c ) - 80405dc: f007 fce2 bl 8047fa4 + 804060e: 687b ldr r3, [r7, #4] + 8040610: 2b00 cmp r3, #0 + 8040612: d105 bne.n 8040620 + 8040614: 4b9b ldr r3, [pc, #620] ; (8040884 ) + 8040616: 2283 movs r2, #131 ; 0x83 + 8040618: 499b ldr r1, [pc, #620] ; (8040888 ) + 804061a: 489c ldr r0, [pc, #624] ; (804088c ) + 804061c: f007 fce2 bl 8047fe4 PERF_START; TCP_STATS_INC(tcp.recv); MIB2_STATS_INC(mib2.tcpinsegs); tcphdr = (struct tcp_hdr *)p->payload; - 80405e0: 687b ldr r3, [r7, #4] - 80405e2: 685b ldr r3, [r3, #4] - 80405e4: 4a9a ldr r2, [pc, #616] ; (8040850 ) - 80405e6: 6013 str r3, [r2, #0] + 8040620: 687b ldr r3, [r7, #4] + 8040622: 685b ldr r3, [r3, #4] + 8040624: 4a9a ldr r2, [pc, #616] ; (8040890 ) + 8040626: 6013 str r3, [r2, #0] #if TCP_INPUT_DEBUG tcp_debug_print(tcphdr); #endif /* Check that TCP header fits in payload */ if (p->len < TCP_HLEN) { - 80405e8: 687b ldr r3, [r7, #4] - 80405ea: 895b ldrh r3, [r3, #10] - 80405ec: 2b13 cmp r3, #19 - 80405ee: f240 83d1 bls.w 8040d94 + 8040628: 687b ldr r3, [r7, #4] + 804062a: 895b ldrh r3, [r3, #10] + 804062c: 2b13 cmp r3, #19 + 804062e: f240 83d1 bls.w 8040dd4 TCP_STATS_INC(tcp.lenerr); goto dropped; } /* Don't even process incoming broadcasts/multicasts. */ if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) || - 80405f2: 4b98 ldr r3, [pc, #608] ; (8040854 ) - 80405f4: 695b ldr r3, [r3, #20] - 80405f6: 4a97 ldr r2, [pc, #604] ; (8040854 ) - 80405f8: 6812 ldr r2, [r2, #0] - 80405fa: 4611 mov r1, r2 - 80405fc: 4618 mov r0, r3 - 80405fe: f006 fc27 bl 8046e50 - 8040602: 4603 mov r3, r0 - 8040604: 2b00 cmp r3, #0 - 8040606: f040 83c7 bne.w 8040d98 + 8040632: 4b98 ldr r3, [pc, #608] ; (8040894 ) + 8040634: 695b ldr r3, [r3, #20] + 8040636: 4a97 ldr r2, [pc, #604] ; (8040894 ) + 8040638: 6812 ldr r2, [r2, #0] + 804063a: 4611 mov r1, r2 + 804063c: 4618 mov r0, r3 + 804063e: f006 fc27 bl 8046e90 + 8040642: 4603 mov r3, r0 + 8040644: 2b00 cmp r3, #0 + 8040646: f040 83c7 bne.w 8040dd8 ip_addr_ismulticast(ip_current_dest_addr())) { - 804060a: 4b92 ldr r3, [pc, #584] ; (8040854 ) - 804060c: 695b ldr r3, [r3, #20] - 804060e: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 804064a: 4b92 ldr r3, [pc, #584] ; (8040894 ) + 804064c: 695b ldr r3, [r3, #20] + 804064e: f003 03f0 and.w r3, r3, #240 ; 0xf0 if (ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()) || - 8040612: 2be0 cmp r3, #224 ; 0xe0 - 8040614: f000 83c0 beq.w 8040d98 + 8040652: 2be0 cmp r3, #224 ; 0xe0 + 8040654: f000 83c0 beq.w 8040dd8 } } #endif /* CHECKSUM_CHECK_TCP */ /* sanity-check header length */ hdrlen_bytes = TCPH_HDRLEN_BYTES(tcphdr); - 8040618: 4b8d ldr r3, [pc, #564] ; (8040850 ) - 804061a: 681b ldr r3, [r3, #0] - 804061c: 899b ldrh r3, [r3, #12] - 804061e: b29b uxth r3, r3 - 8040620: 4618 mov r0, r3 - 8040622: f7fc fcd3 bl 803cfcc - 8040626: 4603 mov r3, r0 - 8040628: 0b1b lsrs r3, r3, #12 - 804062a: b29b uxth r3, r3 - 804062c: b2db uxtb r3, r3 - 804062e: 009b lsls r3, r3, #2 - 8040630: 74bb strb r3, [r7, #18] + 8040658: 4b8d ldr r3, [pc, #564] ; (8040890 ) + 804065a: 681b ldr r3, [r3, #0] + 804065c: 899b ldrh r3, [r3, #12] + 804065e: b29b uxth r3, r3 + 8040660: 4618 mov r0, r3 + 8040662: f7fc fcd3 bl 803d00c + 8040666: 4603 mov r3, r0 + 8040668: 0b1b lsrs r3, r3, #12 + 804066a: b29b uxth r3, r3 + 804066c: b2db uxtb r3, r3 + 804066e: 009b lsls r3, r3, #2 + 8040670: 74bb strb r3, [r7, #18] if ((hdrlen_bytes < TCP_HLEN) || (hdrlen_bytes > p->tot_len)) { - 8040632: 7cbb ldrb r3, [r7, #18] - 8040634: 2b13 cmp r3, #19 - 8040636: f240 83b1 bls.w 8040d9c - 804063a: 7cbb ldrb r3, [r7, #18] - 804063c: b29a uxth r2, r3 - 804063e: 687b ldr r3, [r7, #4] - 8040640: 891b ldrh r3, [r3, #8] - 8040642: 429a cmp r2, r3 - 8040644: f200 83aa bhi.w 8040d9c + 8040672: 7cbb ldrb r3, [r7, #18] + 8040674: 2b13 cmp r3, #19 + 8040676: f240 83b1 bls.w 8040ddc + 804067a: 7cbb ldrb r3, [r7, #18] + 804067c: b29a uxth r2, r3 + 804067e: 687b ldr r3, [r7, #4] + 8040680: 891b ldrh r3, [r3, #8] + 8040682: 429a cmp r2, r3 + 8040684: f200 83aa bhi.w 8040ddc goto dropped; } /* Move the payload pointer in the pbuf so that it points to the TCP data instead of the TCP header. */ tcphdr_optlen = (u16_t)(hdrlen_bytes - TCP_HLEN); - 8040648: 7cbb ldrb r3, [r7, #18] - 804064a: b29b uxth r3, r3 - 804064c: 3b14 subs r3, #20 - 804064e: b29a uxth r2, r3 - 8040650: 4b81 ldr r3, [pc, #516] ; (8040858 ) - 8040652: 801a strh r2, [r3, #0] + 8040688: 7cbb ldrb r3, [r7, #18] + 804068a: b29b uxth r3, r3 + 804068c: 3b14 subs r3, #20 + 804068e: b29a uxth r2, r3 + 8040690: 4b81 ldr r3, [pc, #516] ; (8040898 ) + 8040692: 801a strh r2, [r3, #0] tcphdr_opt2 = NULL; - 8040654: 4b81 ldr r3, [pc, #516] ; (804085c ) - 8040656: 2200 movs r2, #0 - 8040658: 601a str r2, [r3, #0] + 8040694: 4b81 ldr r3, [pc, #516] ; (804089c ) + 8040696: 2200 movs r2, #0 + 8040698: 601a str r2, [r3, #0] if (p->len >= hdrlen_bytes) { - 804065a: 687b ldr r3, [r7, #4] - 804065c: 895a ldrh r2, [r3, #10] - 804065e: 7cbb ldrb r3, [r7, #18] - 8040660: b29b uxth r3, r3 - 8040662: 429a cmp r2, r3 - 8040664: d309 bcc.n 804067a + 804069a: 687b ldr r3, [r7, #4] + 804069c: 895a ldrh r2, [r3, #10] + 804069e: 7cbb ldrb r3, [r7, #18] + 80406a0: b29b uxth r3, r3 + 80406a2: 429a cmp r2, r3 + 80406a4: d309 bcc.n 80406ba /* all options are in the first pbuf */ tcphdr_opt1len = tcphdr_optlen; - 8040666: 4b7c ldr r3, [pc, #496] ; (8040858 ) - 8040668: 881a ldrh r2, [r3, #0] - 804066a: 4b7d ldr r3, [pc, #500] ; (8040860 ) - 804066c: 801a strh r2, [r3, #0] + 80406a6: 4b7c ldr r3, [pc, #496] ; (8040898 ) + 80406a8: 881a ldrh r2, [r3, #0] + 80406aa: 4b7d ldr r3, [pc, #500] ; (80408a0 ) + 80406ac: 801a strh r2, [r3, #0] pbuf_remove_header(p, hdrlen_bytes); /* cannot fail */ - 804066e: 7cbb ldrb r3, [r7, #18] - 8040670: 4619 mov r1, r3 - 8040672: 6878 ldr r0, [r7, #4] - 8040674: f7fe f856 bl 803e724 - 8040678: e04e b.n 8040718 + 80406ae: 7cbb ldrb r3, [r7, #18] + 80406b0: 4619 mov r1, r3 + 80406b2: 6878 ldr r0, [r7, #4] + 80406b4: f7fe f856 bl 803e764 + 80406b8: e04e b.n 8040758 } else { u16_t opt2len; /* TCP header fits into first pbuf, options don't - data is in the next pbuf */ /* there must be a next pbuf, due to hdrlen_bytes sanity check above */ LWIP_ASSERT("p->next != NULL", p->next != NULL); - 804067a: 687b ldr r3, [r7, #4] - 804067c: 681b ldr r3, [r3, #0] - 804067e: 2b00 cmp r3, #0 - 8040680: d105 bne.n 804068e - 8040682: 4b70 ldr r3, [pc, #448] ; (8040844 ) - 8040684: 22c2 movs r2, #194 ; 0xc2 - 8040686: 4977 ldr r1, [pc, #476] ; (8040864 ) - 8040688: 4870 ldr r0, [pc, #448] ; (804084c ) - 804068a: f007 fc8b bl 8047fa4 + 80406ba: 687b ldr r3, [r7, #4] + 80406bc: 681b ldr r3, [r3, #0] + 80406be: 2b00 cmp r3, #0 + 80406c0: d105 bne.n 80406ce + 80406c2: 4b70 ldr r3, [pc, #448] ; (8040884 ) + 80406c4: 22c2 movs r2, #194 ; 0xc2 + 80406c6: 4977 ldr r1, [pc, #476] ; (80408a4 ) + 80406c8: 4870 ldr r0, [pc, #448] ; (804088c ) + 80406ca: f007 fc8b bl 8047fe4 /* advance over the TCP header (cannot fail) */ pbuf_remove_header(p, TCP_HLEN); - 804068e: 2114 movs r1, #20 - 8040690: 6878 ldr r0, [r7, #4] - 8040692: f7fe f847 bl 803e724 + 80406ce: 2114 movs r1, #20 + 80406d0: 6878 ldr r0, [r7, #4] + 80406d2: f7fe f847 bl 803e764 /* determine how long the first and second parts of the options are */ tcphdr_opt1len = p->len; - 8040696: 687b ldr r3, [r7, #4] - 8040698: 895a ldrh r2, [r3, #10] - 804069a: 4b71 ldr r3, [pc, #452] ; (8040860 ) - 804069c: 801a strh r2, [r3, #0] + 80406d6: 687b ldr r3, [r7, #4] + 80406d8: 895a ldrh r2, [r3, #10] + 80406da: 4b71 ldr r3, [pc, #452] ; (80408a0 ) + 80406dc: 801a strh r2, [r3, #0] opt2len = (u16_t)(tcphdr_optlen - tcphdr_opt1len); - 804069e: 4b6e ldr r3, [pc, #440] ; (8040858 ) - 80406a0: 881a ldrh r2, [r3, #0] - 80406a2: 4b6f ldr r3, [pc, #444] ; (8040860 ) - 80406a4: 881b ldrh r3, [r3, #0] - 80406a6: 1ad3 subs r3, r2, r3 - 80406a8: 823b strh r3, [r7, #16] + 80406de: 4b6e ldr r3, [pc, #440] ; (8040898 ) + 80406e0: 881a ldrh r2, [r3, #0] + 80406e2: 4b6f ldr r3, [pc, #444] ; (80408a0 ) + 80406e4: 881b ldrh r3, [r3, #0] + 80406e6: 1ad3 subs r3, r2, r3 + 80406e8: 823b strh r3, [r7, #16] /* options continue in the next pbuf: set p to zero length and hide the options in the next pbuf (adjusting p->tot_len) */ pbuf_remove_header(p, tcphdr_opt1len); - 80406aa: 4b6d ldr r3, [pc, #436] ; (8040860 ) - 80406ac: 881b ldrh r3, [r3, #0] - 80406ae: 4619 mov r1, r3 - 80406b0: 6878 ldr r0, [r7, #4] - 80406b2: f7fe f837 bl 803e724 + 80406ea: 4b6d ldr r3, [pc, #436] ; (80408a0 ) + 80406ec: 881b ldrh r3, [r3, #0] + 80406ee: 4619 mov r1, r3 + 80406f0: 6878 ldr r0, [r7, #4] + 80406f2: f7fe f837 bl 803e764 /* check that the options fit in the second pbuf */ if (opt2len > p->next->len) { - 80406b6: 687b ldr r3, [r7, #4] - 80406b8: 681b ldr r3, [r3, #0] - 80406ba: 895b ldrh r3, [r3, #10] - 80406bc: 8a3a ldrh r2, [r7, #16] - 80406be: 429a cmp r2, r3 - 80406c0: f200 836e bhi.w 8040da0 + 80406f6: 687b ldr r3, [r7, #4] + 80406f8: 681b ldr r3, [r3, #0] + 80406fa: 895b ldrh r3, [r3, #10] + 80406fc: 8a3a ldrh r2, [r7, #16] + 80406fe: 429a cmp r2, r3 + 8040700: f200 836e bhi.w 8040de0 TCP_STATS_INC(tcp.lenerr); goto dropped; } /* remember the pointer to the second part of the options */ tcphdr_opt2 = (u8_t *)p->next->payload; - 80406c4: 687b ldr r3, [r7, #4] - 80406c6: 681b ldr r3, [r3, #0] - 80406c8: 685b ldr r3, [r3, #4] - 80406ca: 4a64 ldr r2, [pc, #400] ; (804085c ) - 80406cc: 6013 str r3, [r2, #0] + 8040704: 687b ldr r3, [r7, #4] + 8040706: 681b ldr r3, [r3, #0] + 8040708: 685b ldr r3, [r3, #4] + 804070a: 4a64 ldr r2, [pc, #400] ; (804089c ) + 804070c: 6013 str r3, [r2, #0] /* advance p->next to point after the options, and manually adjust p->tot_len to keep it consistent with the changed p->next */ pbuf_remove_header(p->next, opt2len); - 80406ce: 687b ldr r3, [r7, #4] - 80406d0: 681b ldr r3, [r3, #0] - 80406d2: 8a3a ldrh r2, [r7, #16] - 80406d4: 4611 mov r1, r2 - 80406d6: 4618 mov r0, r3 - 80406d8: f7fe f824 bl 803e724 + 804070e: 687b ldr r3, [r7, #4] + 8040710: 681b ldr r3, [r3, #0] + 8040712: 8a3a ldrh r2, [r7, #16] + 8040714: 4611 mov r1, r2 + 8040716: 4618 mov r0, r3 + 8040718: f7fe f824 bl 803e764 p->tot_len = (u16_t)(p->tot_len - opt2len); - 80406dc: 687b ldr r3, [r7, #4] - 80406de: 891a ldrh r2, [r3, #8] - 80406e0: 8a3b ldrh r3, [r7, #16] - 80406e2: 1ad3 subs r3, r2, r3 - 80406e4: b29a uxth r2, r3 - 80406e6: 687b ldr r3, [r7, #4] - 80406e8: 811a strh r2, [r3, #8] + 804071c: 687b ldr r3, [r7, #4] + 804071e: 891a ldrh r2, [r3, #8] + 8040720: 8a3b ldrh r3, [r7, #16] + 8040722: 1ad3 subs r3, r2, r3 + 8040724: b29a uxth r2, r3 + 8040726: 687b ldr r3, [r7, #4] + 8040728: 811a strh r2, [r3, #8] LWIP_ASSERT("p->len == 0", p->len == 0); - 80406ea: 687b ldr r3, [r7, #4] - 80406ec: 895b ldrh r3, [r3, #10] - 80406ee: 2b00 cmp r3, #0 - 80406f0: d005 beq.n 80406fe - 80406f2: 4b54 ldr r3, [pc, #336] ; (8040844 ) - 80406f4: 22df movs r2, #223 ; 0xdf - 80406f6: 495c ldr r1, [pc, #368] ; (8040868 ) - 80406f8: 4854 ldr r0, [pc, #336] ; (804084c ) - 80406fa: f007 fc53 bl 8047fa4 + 804072a: 687b ldr r3, [r7, #4] + 804072c: 895b ldrh r3, [r3, #10] + 804072e: 2b00 cmp r3, #0 + 8040730: d005 beq.n 804073e + 8040732: 4b54 ldr r3, [pc, #336] ; (8040884 ) + 8040734: 22df movs r2, #223 ; 0xdf + 8040736: 495c ldr r1, [pc, #368] ; (80408a8 ) + 8040738: 4854 ldr r0, [pc, #336] ; (804088c ) + 804073a: f007 fc53 bl 8047fe4 LWIP_ASSERT("p->tot_len == p->next->tot_len", p->tot_len == p->next->tot_len); - 80406fe: 687b ldr r3, [r7, #4] - 8040700: 891a ldrh r2, [r3, #8] - 8040702: 687b ldr r3, [r7, #4] - 8040704: 681b ldr r3, [r3, #0] - 8040706: 891b ldrh r3, [r3, #8] - 8040708: 429a cmp r2, r3 - 804070a: d005 beq.n 8040718 - 804070c: 4b4d ldr r3, [pc, #308] ; (8040844 ) - 804070e: 22e0 movs r2, #224 ; 0xe0 - 8040710: 4956 ldr r1, [pc, #344] ; (804086c ) - 8040712: 484e ldr r0, [pc, #312] ; (804084c ) - 8040714: f007 fc46 bl 8047fa4 + 804073e: 687b ldr r3, [r7, #4] + 8040740: 891a ldrh r2, [r3, #8] + 8040742: 687b ldr r3, [r7, #4] + 8040744: 681b ldr r3, [r3, #0] + 8040746: 891b ldrh r3, [r3, #8] + 8040748: 429a cmp r2, r3 + 804074a: d005 beq.n 8040758 + 804074c: 4b4d ldr r3, [pc, #308] ; (8040884 ) + 804074e: 22e0 movs r2, #224 ; 0xe0 + 8040750: 4956 ldr r1, [pc, #344] ; (80408ac ) + 8040752: 484e ldr r0, [pc, #312] ; (804088c ) + 8040754: f007 fc46 bl 8047fe4 } /* Convert fields in TCP header to host byte order. */ tcphdr->src = lwip_ntohs(tcphdr->src); - 8040718: 4b4d ldr r3, [pc, #308] ; (8040850 ) - 804071a: 681b ldr r3, [r3, #0] - 804071c: 881b ldrh r3, [r3, #0] - 804071e: b29b uxth r3, r3 - 8040720: 4a4b ldr r2, [pc, #300] ; (8040850 ) - 8040722: 6814 ldr r4, [r2, #0] - 8040724: 4618 mov r0, r3 - 8040726: f7fc fc51 bl 803cfcc - 804072a: 4603 mov r3, r0 - 804072c: 8023 strh r3, [r4, #0] + 8040758: 4b4d ldr r3, [pc, #308] ; (8040890 ) + 804075a: 681b ldr r3, [r3, #0] + 804075c: 881b ldrh r3, [r3, #0] + 804075e: b29b uxth r3, r3 + 8040760: 4a4b ldr r2, [pc, #300] ; (8040890 ) + 8040762: 6814 ldr r4, [r2, #0] + 8040764: 4618 mov r0, r3 + 8040766: f7fc fc51 bl 803d00c + 804076a: 4603 mov r3, r0 + 804076c: 8023 strh r3, [r4, #0] tcphdr->dest = lwip_ntohs(tcphdr->dest); - 804072e: 4b48 ldr r3, [pc, #288] ; (8040850 ) - 8040730: 681b ldr r3, [r3, #0] - 8040732: 885b ldrh r3, [r3, #2] - 8040734: b29b uxth r3, r3 - 8040736: 4a46 ldr r2, [pc, #280] ; (8040850 ) - 8040738: 6814 ldr r4, [r2, #0] - 804073a: 4618 mov r0, r3 - 804073c: f7fc fc46 bl 803cfcc - 8040740: 4603 mov r3, r0 - 8040742: 8063 strh r3, [r4, #2] + 804076e: 4b48 ldr r3, [pc, #288] ; (8040890 ) + 8040770: 681b ldr r3, [r3, #0] + 8040772: 885b ldrh r3, [r3, #2] + 8040774: b29b uxth r3, r3 + 8040776: 4a46 ldr r2, [pc, #280] ; (8040890 ) + 8040778: 6814 ldr r4, [r2, #0] + 804077a: 4618 mov r0, r3 + 804077c: f7fc fc46 bl 803d00c + 8040780: 4603 mov r3, r0 + 8040782: 8063 strh r3, [r4, #2] seqno = tcphdr->seqno = lwip_ntohl(tcphdr->seqno); - 8040744: 4b42 ldr r3, [pc, #264] ; (8040850 ) - 8040746: 681b ldr r3, [r3, #0] - 8040748: 685b ldr r3, [r3, #4] - 804074a: 4a41 ldr r2, [pc, #260] ; (8040850 ) - 804074c: 6814 ldr r4, [r2, #0] - 804074e: 4618 mov r0, r3 - 8040750: f7fc fc51 bl 803cff6 - 8040754: 4603 mov r3, r0 - 8040756: 6063 str r3, [r4, #4] - 8040758: 6863 ldr r3, [r4, #4] - 804075a: 4a45 ldr r2, [pc, #276] ; (8040870 ) - 804075c: 6013 str r3, [r2, #0] + 8040784: 4b42 ldr r3, [pc, #264] ; (8040890 ) + 8040786: 681b ldr r3, [r3, #0] + 8040788: 685b ldr r3, [r3, #4] + 804078a: 4a41 ldr r2, [pc, #260] ; (8040890 ) + 804078c: 6814 ldr r4, [r2, #0] + 804078e: 4618 mov r0, r3 + 8040790: f7fc fc51 bl 803d036 + 8040794: 4603 mov r3, r0 + 8040796: 6063 str r3, [r4, #4] + 8040798: 6863 ldr r3, [r4, #4] + 804079a: 4a45 ldr r2, [pc, #276] ; (80408b0 ) + 804079c: 6013 str r3, [r2, #0] ackno = tcphdr->ackno = lwip_ntohl(tcphdr->ackno); - 804075e: 4b3c ldr r3, [pc, #240] ; (8040850 ) - 8040760: 681b ldr r3, [r3, #0] - 8040762: 689b ldr r3, [r3, #8] - 8040764: 4a3a ldr r2, [pc, #232] ; (8040850 ) - 8040766: 6814 ldr r4, [r2, #0] - 8040768: 4618 mov r0, r3 - 804076a: f7fc fc44 bl 803cff6 - 804076e: 4603 mov r3, r0 - 8040770: 60a3 str r3, [r4, #8] - 8040772: 68a3 ldr r3, [r4, #8] - 8040774: 4a3f ldr r2, [pc, #252] ; (8040874 ) - 8040776: 6013 str r3, [r2, #0] + 804079e: 4b3c ldr r3, [pc, #240] ; (8040890 ) + 80407a0: 681b ldr r3, [r3, #0] + 80407a2: 689b ldr r3, [r3, #8] + 80407a4: 4a3a ldr r2, [pc, #232] ; (8040890 ) + 80407a6: 6814 ldr r4, [r2, #0] + 80407a8: 4618 mov r0, r3 + 80407aa: f7fc fc44 bl 803d036 + 80407ae: 4603 mov r3, r0 + 80407b0: 60a3 str r3, [r4, #8] + 80407b2: 68a3 ldr r3, [r4, #8] + 80407b4: 4a3f ldr r2, [pc, #252] ; (80408b4 ) + 80407b6: 6013 str r3, [r2, #0] tcphdr->wnd = lwip_ntohs(tcphdr->wnd); - 8040778: 4b35 ldr r3, [pc, #212] ; (8040850 ) - 804077a: 681b ldr r3, [r3, #0] - 804077c: 89db ldrh r3, [r3, #14] - 804077e: b29b uxth r3, r3 - 8040780: 4a33 ldr r2, [pc, #204] ; (8040850 ) - 8040782: 6814 ldr r4, [r2, #0] - 8040784: 4618 mov r0, r3 - 8040786: f7fc fc21 bl 803cfcc - 804078a: 4603 mov r3, r0 - 804078c: 81e3 strh r3, [r4, #14] + 80407b8: 4b35 ldr r3, [pc, #212] ; (8040890 ) + 80407ba: 681b ldr r3, [r3, #0] + 80407bc: 89db ldrh r3, [r3, #14] + 80407be: b29b uxth r3, r3 + 80407c0: 4a33 ldr r2, [pc, #204] ; (8040890 ) + 80407c2: 6814 ldr r4, [r2, #0] + 80407c4: 4618 mov r0, r3 + 80407c6: f7fc fc21 bl 803d00c + 80407ca: 4603 mov r3, r0 + 80407cc: 81e3 strh r3, [r4, #14] flags = TCPH_FLAGS(tcphdr); - 804078e: 4b30 ldr r3, [pc, #192] ; (8040850 ) - 8040790: 681b ldr r3, [r3, #0] - 8040792: 899b ldrh r3, [r3, #12] - 8040794: b29b uxth r3, r3 - 8040796: 4618 mov r0, r3 - 8040798: f7fc fc18 bl 803cfcc - 804079c: 4603 mov r3, r0 - 804079e: b2db uxtb r3, r3 - 80407a0: f003 033f and.w r3, r3, #63 ; 0x3f - 80407a4: b2da uxtb r2, r3 - 80407a6: 4b34 ldr r3, [pc, #208] ; (8040878 ) - 80407a8: 701a strb r2, [r3, #0] + 80407ce: 4b30 ldr r3, [pc, #192] ; (8040890 ) + 80407d0: 681b ldr r3, [r3, #0] + 80407d2: 899b ldrh r3, [r3, #12] + 80407d4: b29b uxth r3, r3 + 80407d6: 4618 mov r0, r3 + 80407d8: f7fc fc18 bl 803d00c + 80407dc: 4603 mov r3, r0 + 80407de: b2db uxtb r3, r3 + 80407e0: f003 033f and.w r3, r3, #63 ; 0x3f + 80407e4: b2da uxtb r2, r3 + 80407e6: 4b34 ldr r3, [pc, #208] ; (80408b8 ) + 80407e8: 701a strb r2, [r3, #0] tcplen = p->tot_len; - 80407aa: 687b ldr r3, [r7, #4] - 80407ac: 891a ldrh r2, [r3, #8] - 80407ae: 4b33 ldr r3, [pc, #204] ; (804087c ) - 80407b0: 801a strh r2, [r3, #0] + 80407ea: 687b ldr r3, [r7, #4] + 80407ec: 891a ldrh r2, [r3, #8] + 80407ee: 4b33 ldr r3, [pc, #204] ; (80408bc ) + 80407f0: 801a strh r2, [r3, #0] if (flags & (TCP_FIN | TCP_SYN)) { - 80407b2: 4b31 ldr r3, [pc, #196] ; (8040878 ) - 80407b4: 781b ldrb r3, [r3, #0] - 80407b6: f003 0303 and.w r3, r3, #3 - 80407ba: 2b00 cmp r3, #0 - 80407bc: d00c beq.n 80407d8 + 80407f2: 4b31 ldr r3, [pc, #196] ; (80408b8 ) + 80407f4: 781b ldrb r3, [r3, #0] + 80407f6: f003 0303 and.w r3, r3, #3 + 80407fa: 2b00 cmp r3, #0 + 80407fc: d00c beq.n 8040818 tcplen++; - 80407be: 4b2f ldr r3, [pc, #188] ; (804087c ) - 80407c0: 881b ldrh r3, [r3, #0] - 80407c2: 3301 adds r3, #1 - 80407c4: b29a uxth r2, r3 - 80407c6: 4b2d ldr r3, [pc, #180] ; (804087c ) - 80407c8: 801a strh r2, [r3, #0] + 80407fe: 4b2f ldr r3, [pc, #188] ; (80408bc ) + 8040800: 881b ldrh r3, [r3, #0] + 8040802: 3301 adds r3, #1 + 8040804: b29a uxth r2, r3 + 8040806: 4b2d ldr r3, [pc, #180] ; (80408bc ) + 8040808: 801a strh r2, [r3, #0] if (tcplen < p->tot_len) { - 80407ca: 687b ldr r3, [r7, #4] - 80407cc: 891a ldrh r2, [r3, #8] - 80407ce: 4b2b ldr r3, [pc, #172] ; (804087c ) - 80407d0: 881b ldrh r3, [r3, #0] - 80407d2: 429a cmp r2, r3 - 80407d4: f200 82e6 bhi.w 8040da4 + 804080a: 687b ldr r3, [r7, #4] + 804080c: 891a ldrh r2, [r3, #8] + 804080e: 4b2b ldr r3, [pc, #172] ; (80408bc ) + 8040810: 881b ldrh r3, [r3, #0] + 8040812: 429a cmp r2, r3 + 8040814: f200 82e6 bhi.w 8040de4 } } /* Demultiplex an incoming segment. First, we check if it is destined for an active connection. */ prev = NULL; - 80407d8: 2300 movs r3, #0 - 80407da: 61bb str r3, [r7, #24] + 8040818: 2300 movs r3, #0 + 804081a: 61bb str r3, [r7, #24] for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 80407dc: 4b28 ldr r3, [pc, #160] ; (8040880 ) - 80407de: 681b ldr r3, [r3, #0] - 80407e0: 61fb str r3, [r7, #28] - 80407e2: e09d b.n 8040920 + 804081c: 4b28 ldr r3, [pc, #160] ; (80408c0 ) + 804081e: 681b ldr r3, [r3, #0] + 8040820: 61fb str r3, [r7, #28] + 8040822: e09d b.n 8040960 LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED); - 80407e4: 69fb ldr r3, [r7, #28] - 80407e6: 7d1b ldrb r3, [r3, #20] - 80407e8: 2b00 cmp r3, #0 - 80407ea: d105 bne.n 80407f8 - 80407ec: 4b15 ldr r3, [pc, #84] ; (8040844 ) - 80407ee: 22fb movs r2, #251 ; 0xfb - 80407f0: 4924 ldr r1, [pc, #144] ; (8040884 ) - 80407f2: 4816 ldr r0, [pc, #88] ; (804084c ) - 80407f4: f007 fbd6 bl 8047fa4 + 8040824: 69fb ldr r3, [r7, #28] + 8040826: 7d1b ldrb r3, [r3, #20] + 8040828: 2b00 cmp r3, #0 + 804082a: d105 bne.n 8040838 + 804082c: 4b15 ldr r3, [pc, #84] ; (8040884 ) + 804082e: 22fb movs r2, #251 ; 0xfb + 8040830: 4924 ldr r1, [pc, #144] ; (80408c4 ) + 8040832: 4816 ldr r0, [pc, #88] ; (804088c ) + 8040834: f007 fbd6 bl 8047fe4 LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - 80407f8: 69fb ldr r3, [r7, #28] - 80407fa: 7d1b ldrb r3, [r3, #20] - 80407fc: 2b0a cmp r3, #10 - 80407fe: d105 bne.n 804080c - 8040800: 4b10 ldr r3, [pc, #64] ; (8040844 ) - 8040802: 22fc movs r2, #252 ; 0xfc - 8040804: 4920 ldr r1, [pc, #128] ; (8040888 ) - 8040806: 4811 ldr r0, [pc, #68] ; (804084c ) - 8040808: f007 fbcc bl 8047fa4 + 8040838: 69fb ldr r3, [r7, #28] + 804083a: 7d1b ldrb r3, [r3, #20] + 804083c: 2b0a cmp r3, #10 + 804083e: d105 bne.n 804084c + 8040840: 4b10 ldr r3, [pc, #64] ; (8040884 ) + 8040842: 22fc movs r2, #252 ; 0xfc + 8040844: 4920 ldr r1, [pc, #128] ; (80408c8 ) + 8040846: 4811 ldr r0, [pc, #68] ; (804088c ) + 8040848: f007 fbcc bl 8047fe4 LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN); - 804080c: 69fb ldr r3, [r7, #28] - 804080e: 7d1b ldrb r3, [r3, #20] - 8040810: 2b01 cmp r3, #1 - 8040812: d105 bne.n 8040820 - 8040814: 4b0b ldr r3, [pc, #44] ; (8040844 ) - 8040816: 22fd movs r2, #253 ; 0xfd - 8040818: 491c ldr r1, [pc, #112] ; (804088c ) - 804081a: 480c ldr r0, [pc, #48] ; (804084c ) - 804081c: f007 fbc2 bl 8047fa4 + 804084c: 69fb ldr r3, [r7, #28] + 804084e: 7d1b ldrb r3, [r3, #20] + 8040850: 2b01 cmp r3, #1 + 8040852: d105 bne.n 8040860 + 8040854: 4b0b ldr r3, [pc, #44] ; (8040884 ) + 8040856: 22fd movs r2, #253 ; 0xfd + 8040858: 491c ldr r1, [pc, #112] ; (80408cc ) + 804085a: 480c ldr r0, [pc, #48] ; (804088c ) + 804085c: f007 fbc2 bl 8047fe4 /* check if PCB is bound to specific netif */ if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8040820: 69fb ldr r3, [r7, #28] - 8040822: 7a1b ldrb r3, [r3, #8] - 8040824: 2b00 cmp r3, #0 - 8040826: d033 beq.n 8040890 + 8040860: 69fb ldr r3, [r7, #28] + 8040862: 7a1b ldrb r3, [r3, #8] + 8040864: 2b00 cmp r3, #0 + 8040866: d033 beq.n 80408d0 (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 8040828: 69fb ldr r3, [r7, #28] - 804082a: 7a1a ldrb r2, [r3, #8] - 804082c: 4b09 ldr r3, [pc, #36] ; (8040854 ) - 804082e: 685b ldr r3, [r3, #4] - 8040830: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 8040834: 3301 adds r3, #1 - 8040836: b2db uxtb r3, r3 + 8040868: 69fb ldr r3, [r7, #28] + 804086a: 7a1a ldrb r2, [r3, #8] + 804086c: 4b09 ldr r3, [pc, #36] ; (8040894 ) + 804086e: 685b ldr r3, [r3, #4] + 8040870: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 8040874: 3301 adds r3, #1 + 8040876: b2db uxtb r3, r3 if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8040838: 429a cmp r2, r3 - 804083a: d029 beq.n 8040890 + 8040878: 429a cmp r2, r3 + 804087a: d029 beq.n 80408d0 prev = pcb; - 804083c: 69fb ldr r3, [r7, #28] - 804083e: 61bb str r3, [r7, #24] + 804087c: 69fb ldr r3, [r7, #28] + 804087e: 61bb str r3, [r7, #24] continue; - 8040840: e06b b.n 804091a - 8040842: bf00 nop - 8040844: 0804b398 .word 0x0804b398 - 8040848: 0804b3cc .word 0x0804b3cc - 804084c: 0804b3e4 .word 0x0804b3e4 - 8040850: 2400eb10 .word 0x2400eb10 - 8040854: 2400bb4c .word 0x2400bb4c - 8040858: 2400eb14 .word 0x2400eb14 - 804085c: 2400eb18 .word 0x2400eb18 - 8040860: 2400eb16 .word 0x2400eb16 - 8040864: 0804b40c .word 0x0804b40c - 8040868: 0804b41c .word 0x0804b41c - 804086c: 0804b428 .word 0x0804b428 - 8040870: 2400eb20 .word 0x2400eb20 - 8040874: 2400eb24 .word 0x2400eb24 - 8040878: 2400eb2c .word 0x2400eb2c - 804087c: 2400eb2a .word 0x2400eb2a - 8040880: 2400eaf4 .word 0x2400eaf4 - 8040884: 0804b448 .word 0x0804b448 - 8040888: 0804b470 .word 0x0804b470 - 804088c: 0804b49c .word 0x0804b49c + 8040880: e06b b.n 804095a + 8040882: bf00 nop + 8040884: 0804b3d8 .word 0x0804b3d8 + 8040888: 0804b40c .word 0x0804b40c + 804088c: 0804b424 .word 0x0804b424 + 8040890: 2400eb10 .word 0x2400eb10 + 8040894: 2400bb4c .word 0x2400bb4c + 8040898: 2400eb14 .word 0x2400eb14 + 804089c: 2400eb18 .word 0x2400eb18 + 80408a0: 2400eb16 .word 0x2400eb16 + 80408a4: 0804b44c .word 0x0804b44c + 80408a8: 0804b45c .word 0x0804b45c + 80408ac: 0804b468 .word 0x0804b468 + 80408b0: 2400eb20 .word 0x2400eb20 + 80408b4: 2400eb24 .word 0x2400eb24 + 80408b8: 2400eb2c .word 0x2400eb2c + 80408bc: 2400eb2a .word 0x2400eb2a + 80408c0: 2400eaf4 .word 0x2400eaf4 + 80408c4: 0804b488 .word 0x0804b488 + 80408c8: 0804b4b0 .word 0x0804b4b0 + 80408cc: 0804b4dc .word 0x0804b4dc } if (pcb->remote_port == tcphdr->src && - 8040890: 69fb ldr r3, [r7, #28] - 8040892: 8b1a ldrh r2, [r3, #24] - 8040894: 4b72 ldr r3, [pc, #456] ; (8040a60 ) - 8040896: 681b ldr r3, [r3, #0] - 8040898: 881b ldrh r3, [r3, #0] - 804089a: b29b uxth r3, r3 - 804089c: 429a cmp r2, r3 - 804089e: d13a bne.n 8040916 + 80408d0: 69fb ldr r3, [r7, #28] + 80408d2: 8b1a ldrh r2, [r3, #24] + 80408d4: 4b72 ldr r3, [pc, #456] ; (8040aa0 ) + 80408d6: 681b ldr r3, [r3, #0] + 80408d8: 881b ldrh r3, [r3, #0] + 80408da: b29b uxth r3, r3 + 80408dc: 429a cmp r2, r3 + 80408de: d13a bne.n 8040956 pcb->local_port == tcphdr->dest && - 80408a0: 69fb ldr r3, [r7, #28] - 80408a2: 8ada ldrh r2, [r3, #22] - 80408a4: 4b6e ldr r3, [pc, #440] ; (8040a60 ) - 80408a6: 681b ldr r3, [r3, #0] - 80408a8: 885b ldrh r3, [r3, #2] - 80408aa: b29b uxth r3, r3 + 80408e0: 69fb ldr r3, [r7, #28] + 80408e2: 8ada ldrh r2, [r3, #22] + 80408e4: 4b6e ldr r3, [pc, #440] ; (8040aa0 ) + 80408e6: 681b ldr r3, [r3, #0] + 80408e8: 885b ldrh r3, [r3, #2] + 80408ea: b29b uxth r3, r3 if (pcb->remote_port == tcphdr->src && - 80408ac: 429a cmp r2, r3 - 80408ae: d132 bne.n 8040916 + 80408ec: 429a cmp r2, r3 + 80408ee: d132 bne.n 8040956 ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 80408b0: 69fb ldr r3, [r7, #28] - 80408b2: 685a ldr r2, [r3, #4] - 80408b4: 4b6b ldr r3, [pc, #428] ; (8040a64 ) - 80408b6: 691b ldr r3, [r3, #16] + 80408f0: 69fb ldr r3, [r7, #28] + 80408f2: 685a ldr r2, [r3, #4] + 80408f4: 4b6b ldr r3, [pc, #428] ; (8040aa4 ) + 80408f6: 691b ldr r3, [r3, #16] pcb->local_port == tcphdr->dest && - 80408b8: 429a cmp r2, r3 - 80408ba: d12c bne.n 8040916 + 80408f8: 429a cmp r2, r3 + 80408fa: d12c bne.n 8040956 ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 80408bc: 69fb ldr r3, [r7, #28] - 80408be: 681a ldr r2, [r3, #0] - 80408c0: 4b68 ldr r3, [pc, #416] ; (8040a64 ) - 80408c2: 695b ldr r3, [r3, #20] + 80408fc: 69fb ldr r3, [r7, #28] + 80408fe: 681a ldr r2, [r3, #0] + 8040900: 4b68 ldr r3, [pc, #416] ; (8040aa4 ) + 8040902: 695b ldr r3, [r3, #20] ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 80408c4: 429a cmp r2, r3 - 80408c6: d126 bne.n 8040916 + 8040904: 429a cmp r2, r3 + 8040906: d126 bne.n 8040956 /* Move this PCB to the front of the list so that subsequent lookups will be faster (we exploit locality in TCP segment arrivals). */ LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb); - 80408c8: 69fb ldr r3, [r7, #28] - 80408ca: 68db ldr r3, [r3, #12] - 80408cc: 69fa ldr r2, [r7, #28] - 80408ce: 429a cmp r2, r3 - 80408d0: d106 bne.n 80408e0 - 80408d2: 4b65 ldr r3, [pc, #404] ; (8040a68 ) - 80408d4: f240 120d movw r2, #269 ; 0x10d - 80408d8: 4964 ldr r1, [pc, #400] ; (8040a6c ) - 80408da: 4865 ldr r0, [pc, #404] ; (8040a70 ) - 80408dc: f007 fb62 bl 8047fa4 + 8040908: 69fb ldr r3, [r7, #28] + 804090a: 68db ldr r3, [r3, #12] + 804090c: 69fa ldr r2, [r7, #28] + 804090e: 429a cmp r2, r3 + 8040910: d106 bne.n 8040920 + 8040912: 4b65 ldr r3, [pc, #404] ; (8040aa8 ) + 8040914: f240 120d movw r2, #269 ; 0x10d + 8040918: 4964 ldr r1, [pc, #400] ; (8040aac ) + 804091a: 4865 ldr r0, [pc, #404] ; (8040ab0 ) + 804091c: f007 fb62 bl 8047fe4 if (prev != NULL) { - 80408e0: 69bb ldr r3, [r7, #24] - 80408e2: 2b00 cmp r3, #0 - 80408e4: d00a beq.n 80408fc + 8040920: 69bb ldr r3, [r7, #24] + 8040922: 2b00 cmp r3, #0 + 8040924: d00a beq.n 804093c prev->next = pcb->next; - 80408e6: 69fb ldr r3, [r7, #28] - 80408e8: 68da ldr r2, [r3, #12] - 80408ea: 69bb ldr r3, [r7, #24] - 80408ec: 60da str r2, [r3, #12] + 8040926: 69fb ldr r3, [r7, #28] + 8040928: 68da ldr r2, [r3, #12] + 804092a: 69bb ldr r3, [r7, #24] + 804092c: 60da str r2, [r3, #12] pcb->next = tcp_active_pcbs; - 80408ee: 4b61 ldr r3, [pc, #388] ; (8040a74 ) - 80408f0: 681a ldr r2, [r3, #0] - 80408f2: 69fb ldr r3, [r7, #28] - 80408f4: 60da str r2, [r3, #12] + 804092e: 4b61 ldr r3, [pc, #388] ; (8040ab4 ) + 8040930: 681a ldr r2, [r3, #0] + 8040932: 69fb ldr r3, [r7, #28] + 8040934: 60da str r2, [r3, #12] tcp_active_pcbs = pcb; - 80408f6: 4a5f ldr r2, [pc, #380] ; (8040a74 ) - 80408f8: 69fb ldr r3, [r7, #28] - 80408fa: 6013 str r3, [r2, #0] + 8040936: 4a5f ldr r2, [pc, #380] ; (8040ab4 ) + 8040938: 69fb ldr r3, [r7, #28] + 804093a: 6013 str r3, [r2, #0] } else { TCP_STATS_INC(tcp.cachehit); } LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb); - 80408fc: 69fb ldr r3, [r7, #28] - 80408fe: 68db ldr r3, [r3, #12] - 8040900: 69fa ldr r2, [r7, #28] - 8040902: 429a cmp r2, r3 - 8040904: d111 bne.n 804092a - 8040906: 4b58 ldr r3, [pc, #352] ; (8040a68 ) - 8040908: f240 1215 movw r2, #277 ; 0x115 - 804090c: 495a ldr r1, [pc, #360] ; (8040a78 ) - 804090e: 4858 ldr r0, [pc, #352] ; (8040a70 ) - 8040910: f007 fb48 bl 8047fa4 + 804093c: 69fb ldr r3, [r7, #28] + 804093e: 68db ldr r3, [r3, #12] + 8040940: 69fa ldr r2, [r7, #28] + 8040942: 429a cmp r2, r3 + 8040944: d111 bne.n 804096a + 8040946: 4b58 ldr r3, [pc, #352] ; (8040aa8 ) + 8040948: f240 1215 movw r2, #277 ; 0x115 + 804094c: 495a ldr r1, [pc, #360] ; (8040ab8 ) + 804094e: 4858 ldr r0, [pc, #352] ; (8040ab0 ) + 8040950: f007 fb48 bl 8047fe4 break; - 8040914: e009 b.n 804092a + 8040954: e009 b.n 804096a } prev = pcb; - 8040916: 69fb ldr r3, [r7, #28] - 8040918: 61bb str r3, [r7, #24] + 8040956: 69fb ldr r3, [r7, #28] + 8040958: 61bb str r3, [r7, #24] for (pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - 804091a: 69fb ldr r3, [r7, #28] - 804091c: 68db ldr r3, [r3, #12] - 804091e: 61fb str r3, [r7, #28] - 8040920: 69fb ldr r3, [r7, #28] - 8040922: 2b00 cmp r3, #0 - 8040924: f47f af5e bne.w 80407e4 - 8040928: e000 b.n 804092c + 804095a: 69fb ldr r3, [r7, #28] + 804095c: 68db ldr r3, [r3, #12] + 804095e: 61fb str r3, [r7, #28] + 8040960: 69fb ldr r3, [r7, #28] + 8040962: 2b00 cmp r3, #0 + 8040964: f47f af5e bne.w 8040824 + 8040968: e000 b.n 804096c break; - 804092a: bf00 nop + 804096a: bf00 nop } if (pcb == NULL) { - 804092c: 69fb ldr r3, [r7, #28] - 804092e: 2b00 cmp r3, #0 - 8040930: f040 80aa bne.w 8040a88 + 804096c: 69fb ldr r3, [r7, #28] + 804096e: 2b00 cmp r3, #0 + 8040970: f040 80aa bne.w 8040ac8 /* If it did not go to an active connection, we check the connections in the TIME-WAIT state. */ for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 8040934: 4b51 ldr r3, [pc, #324] ; (8040a7c ) - 8040936: 681b ldr r3, [r3, #0] - 8040938: 61fb str r3, [r7, #28] - 804093a: e03f b.n 80409bc + 8040974: 4b51 ldr r3, [pc, #324] ; (8040abc ) + 8040976: 681b ldr r3, [r3, #0] + 8040978: 61fb str r3, [r7, #28] + 804097a: e03f b.n 80409fc LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - 804093c: 69fb ldr r3, [r7, #28] - 804093e: 7d1b ldrb r3, [r3, #20] - 8040940: 2b0a cmp r3, #10 - 8040942: d006 beq.n 8040952 - 8040944: 4b48 ldr r3, [pc, #288] ; (8040a68 ) - 8040946: f240 121f movw r2, #287 ; 0x11f - 804094a: 494d ldr r1, [pc, #308] ; (8040a80 ) - 804094c: 4848 ldr r0, [pc, #288] ; (8040a70 ) - 804094e: f007 fb29 bl 8047fa4 + 804097c: 69fb ldr r3, [r7, #28] + 804097e: 7d1b ldrb r3, [r3, #20] + 8040980: 2b0a cmp r3, #10 + 8040982: d006 beq.n 8040992 + 8040984: 4b48 ldr r3, [pc, #288] ; (8040aa8 ) + 8040986: f240 121f movw r2, #287 ; 0x11f + 804098a: 494d ldr r1, [pc, #308] ; (8040ac0 ) + 804098c: 4848 ldr r0, [pc, #288] ; (8040ab0 ) + 804098e: f007 fb29 bl 8047fe4 /* check if PCB is bound to specific netif */ if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8040952: 69fb ldr r3, [r7, #28] - 8040954: 7a1b ldrb r3, [r3, #8] - 8040956: 2b00 cmp r3, #0 - 8040958: d009 beq.n 804096e + 8040992: 69fb ldr r3, [r7, #28] + 8040994: 7a1b ldrb r3, [r3, #8] + 8040996: 2b00 cmp r3, #0 + 8040998: d009 beq.n 80409ae (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 804095a: 69fb ldr r3, [r7, #28] - 804095c: 7a1a ldrb r2, [r3, #8] - 804095e: 4b41 ldr r3, [pc, #260] ; (8040a64 ) - 8040960: 685b ldr r3, [r3, #4] - 8040962: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 8040966: 3301 adds r3, #1 - 8040968: b2db uxtb r3, r3 + 804099a: 69fb ldr r3, [r7, #28] + 804099c: 7a1a ldrb r2, [r3, #8] + 804099e: 4b41 ldr r3, [pc, #260] ; (8040aa4 ) + 80409a0: 685b ldr r3, [r3, #4] + 80409a2: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 80409a6: 3301 adds r3, #1 + 80409a8: b2db uxtb r3, r3 if ((pcb->netif_idx != NETIF_NO_INDEX) && - 804096a: 429a cmp r2, r3 - 804096c: d122 bne.n 80409b4 + 80409aa: 429a cmp r2, r3 + 80409ac: d122 bne.n 80409f4 continue; } if (pcb->remote_port == tcphdr->src && - 804096e: 69fb ldr r3, [r7, #28] - 8040970: 8b1a ldrh r2, [r3, #24] - 8040972: 4b3b ldr r3, [pc, #236] ; (8040a60 ) - 8040974: 681b ldr r3, [r3, #0] - 8040976: 881b ldrh r3, [r3, #0] - 8040978: b29b uxth r3, r3 - 804097a: 429a cmp r2, r3 - 804097c: d11b bne.n 80409b6 + 80409ae: 69fb ldr r3, [r7, #28] + 80409b0: 8b1a ldrh r2, [r3, #24] + 80409b2: 4b3b ldr r3, [pc, #236] ; (8040aa0 ) + 80409b4: 681b ldr r3, [r3, #0] + 80409b6: 881b ldrh r3, [r3, #0] + 80409b8: b29b uxth r3, r3 + 80409ba: 429a cmp r2, r3 + 80409bc: d11b bne.n 80409f6 pcb->local_port == tcphdr->dest && - 804097e: 69fb ldr r3, [r7, #28] - 8040980: 8ada ldrh r2, [r3, #22] - 8040982: 4b37 ldr r3, [pc, #220] ; (8040a60 ) - 8040984: 681b ldr r3, [r3, #0] - 8040986: 885b ldrh r3, [r3, #2] - 8040988: b29b uxth r3, r3 + 80409be: 69fb ldr r3, [r7, #28] + 80409c0: 8ada ldrh r2, [r3, #22] + 80409c2: 4b37 ldr r3, [pc, #220] ; (8040aa0 ) + 80409c4: 681b ldr r3, [r3, #0] + 80409c6: 885b ldrh r3, [r3, #2] + 80409c8: b29b uxth r3, r3 if (pcb->remote_port == tcphdr->src && - 804098a: 429a cmp r2, r3 - 804098c: d113 bne.n 80409b6 + 80409ca: 429a cmp r2, r3 + 80409cc: d113 bne.n 80409f6 ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 804098e: 69fb ldr r3, [r7, #28] - 8040990: 685a ldr r2, [r3, #4] - 8040992: 4b34 ldr r3, [pc, #208] ; (8040a64 ) - 8040994: 691b ldr r3, [r3, #16] + 80409ce: 69fb ldr r3, [r7, #28] + 80409d0: 685a ldr r2, [r3, #4] + 80409d2: 4b34 ldr r3, [pc, #208] ; (8040aa4 ) + 80409d4: 691b ldr r3, [r3, #16] pcb->local_port == tcphdr->dest && - 8040996: 429a cmp r2, r3 - 8040998: d10d bne.n 80409b6 + 80409d6: 429a cmp r2, r3 + 80409d8: d10d bne.n 80409f6 ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 804099a: 69fb ldr r3, [r7, #28] - 804099c: 681a ldr r2, [r3, #0] - 804099e: 4b31 ldr r3, [pc, #196] ; (8040a64 ) - 80409a0: 695b ldr r3, [r3, #20] + 80409da: 69fb ldr r3, [r7, #28] + 80409dc: 681a ldr r2, [r3, #0] + 80409de: 4b31 ldr r3, [pc, #196] ; (8040aa4 ) + 80409e0: 695b ldr r3, [r3, #20] ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()) && - 80409a2: 429a cmp r2, r3 - 80409a4: d107 bne.n 80409b6 + 80409e2: 429a cmp r2, r3 + 80409e4: d107 bne.n 80409f6 #ifdef LWIP_HOOK_TCP_INPACKET_PCB if (LWIP_HOOK_TCP_INPACKET_PCB(pcb, tcphdr, tcphdr_optlen, tcphdr_opt1len, tcphdr_opt2, p) == ERR_OK) #endif { tcp_timewait_input(pcb); - 80409a6: 69f8 ldr r0, [r7, #28] - 80409a8: f000 fb56 bl 8041058 + 80409e6: 69f8 ldr r0, [r7, #28] + 80409e8: f000 fb56 bl 8041098 } pbuf_free(p); - 80409ac: 6878 ldr r0, [r7, #4] - 80409ae: f7fd ff3f bl 803e830 + 80409ec: 6878 ldr r0, [r7, #4] + 80409ee: f7fd ff3f bl 803e870 return; - 80409b2: e1fd b.n 8040db0 + 80409f2: e1fd b.n 8040df0 continue; - 80409b4: bf00 nop + 80409f4: bf00 nop for (pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - 80409b6: 69fb ldr r3, [r7, #28] - 80409b8: 68db ldr r3, [r3, #12] - 80409ba: 61fb str r3, [r7, #28] - 80409bc: 69fb ldr r3, [r7, #28] - 80409be: 2b00 cmp r3, #0 - 80409c0: d1bc bne.n 804093c + 80409f6: 69fb ldr r3, [r7, #28] + 80409f8: 68db ldr r3, [r3, #12] + 80409fa: 61fb str r3, [r7, #28] + 80409fc: 69fb ldr r3, [r7, #28] + 80409fe: 2b00 cmp r3, #0 + 8040a00: d1bc bne.n 804097c } } /* Finally, if we still did not get a match, we check all PCBs that are LISTENing for incoming connections. */ prev = NULL; - 80409c2: 2300 movs r3, #0 - 80409c4: 61bb str r3, [r7, #24] + 8040a02: 2300 movs r3, #0 + 8040a04: 61bb str r3, [r7, #24] for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 80409c6: 4b2f ldr r3, [pc, #188] ; (8040a84 ) - 80409c8: 681b ldr r3, [r3, #0] - 80409ca: 617b str r3, [r7, #20] - 80409cc: e02a b.n 8040a24 + 8040a06: 4b2f ldr r3, [pc, #188] ; (8040ac4 ) + 8040a08: 681b ldr r3, [r3, #0] + 8040a0a: 617b str r3, [r7, #20] + 8040a0c: e02a b.n 8040a64 /* check if PCB is bound to specific netif */ if ((lpcb->netif_idx != NETIF_NO_INDEX) && - 80409ce: 697b ldr r3, [r7, #20] - 80409d0: 7a1b ldrb r3, [r3, #8] - 80409d2: 2b00 cmp r3, #0 - 80409d4: d00c beq.n 80409f0 + 8040a0e: 697b ldr r3, [r7, #20] + 8040a10: 7a1b ldrb r3, [r3, #8] + 8040a12: 2b00 cmp r3, #0 + 8040a14: d00c beq.n 8040a30 (lpcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 80409d6: 697b ldr r3, [r7, #20] - 80409d8: 7a1a ldrb r2, [r3, #8] - 80409da: 4b22 ldr r3, [pc, #136] ; (8040a64 ) - 80409dc: 685b ldr r3, [r3, #4] - 80409de: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 80409e2: 3301 adds r3, #1 - 80409e4: b2db uxtb r3, r3 + 8040a16: 697b ldr r3, [r7, #20] + 8040a18: 7a1a ldrb r2, [r3, #8] + 8040a1a: 4b22 ldr r3, [pc, #136] ; (8040aa4 ) + 8040a1c: 685b ldr r3, [r3, #4] + 8040a1e: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 8040a22: 3301 adds r3, #1 + 8040a24: b2db uxtb r3, r3 if ((lpcb->netif_idx != NETIF_NO_INDEX) && - 80409e6: 429a cmp r2, r3 - 80409e8: d002 beq.n 80409f0 + 8040a26: 429a cmp r2, r3 + 8040a28: d002 beq.n 8040a30 prev = (struct tcp_pcb *)lpcb; - 80409ea: 697b ldr r3, [r7, #20] - 80409ec: 61bb str r3, [r7, #24] + 8040a2a: 697b ldr r3, [r7, #20] + 8040a2c: 61bb str r3, [r7, #24] continue; - 80409ee: e016 b.n 8040a1e + 8040a2e: e016 b.n 8040a5e } if (lpcb->local_port == tcphdr->dest) { - 80409f0: 697b ldr r3, [r7, #20] - 80409f2: 8ada ldrh r2, [r3, #22] - 80409f4: 4b1a ldr r3, [pc, #104] ; (8040a60 ) - 80409f6: 681b ldr r3, [r3, #0] - 80409f8: 885b ldrh r3, [r3, #2] - 80409fa: b29b uxth r3, r3 - 80409fc: 429a cmp r2, r3 - 80409fe: d10c bne.n 8040a1a + 8040a30: 697b ldr r3, [r7, #20] + 8040a32: 8ada ldrh r2, [r3, #22] + 8040a34: 4b1a ldr r3, [pc, #104] ; (8040aa0 ) + 8040a36: 681b ldr r3, [r3, #0] + 8040a38: 885b ldrh r3, [r3, #2] + 8040a3a: b29b uxth r3, r3 + 8040a3c: 429a cmp r2, r3 + 8040a3e: d10c bne.n 8040a5a lpcb_prev = prev; #else /* SO_REUSE */ break; #endif /* SO_REUSE */ } else if (IP_ADDR_PCB_VERSION_MATCH_EXACT(lpcb, ip_current_dest_addr())) { if (ip_addr_cmp(&lpcb->local_ip, ip_current_dest_addr())) { - 8040a00: 697b ldr r3, [r7, #20] - 8040a02: 681a ldr r2, [r3, #0] - 8040a04: 4b17 ldr r3, [pc, #92] ; (8040a64 ) - 8040a06: 695b ldr r3, [r3, #20] - 8040a08: 429a cmp r2, r3 - 8040a0a: d00f beq.n 8040a2c + 8040a40: 697b ldr r3, [r7, #20] + 8040a42: 681a ldr r2, [r3, #0] + 8040a44: 4b17 ldr r3, [pc, #92] ; (8040aa4 ) + 8040a46: 695b ldr r3, [r3, #20] + 8040a48: 429a cmp r2, r3 + 8040a4a: d00f beq.n 8040a6c /* found an exact match */ break; } else if (ip_addr_isany(&lpcb->local_ip)) { - 8040a0c: 697b ldr r3, [r7, #20] - 8040a0e: 2b00 cmp r3, #0 - 8040a10: d00d beq.n 8040a2e - 8040a12: 697b ldr r3, [r7, #20] - 8040a14: 681b ldr r3, [r3, #0] - 8040a16: 2b00 cmp r3, #0 - 8040a18: d009 beq.n 8040a2e + 8040a4c: 697b ldr r3, [r7, #20] + 8040a4e: 2b00 cmp r3, #0 + 8040a50: d00d beq.n 8040a6e + 8040a52: 697b ldr r3, [r7, #20] + 8040a54: 681b ldr r3, [r3, #0] + 8040a56: 2b00 cmp r3, #0 + 8040a58: d009 beq.n 8040a6e break; #endif /* SO_REUSE */ } } } prev = (struct tcp_pcb *)lpcb; - 8040a1a: 697b ldr r3, [r7, #20] - 8040a1c: 61bb str r3, [r7, #24] + 8040a5a: 697b ldr r3, [r7, #20] + 8040a5c: 61bb str r3, [r7, #24] for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - 8040a1e: 697b ldr r3, [r7, #20] - 8040a20: 68db ldr r3, [r3, #12] - 8040a22: 617b str r3, [r7, #20] - 8040a24: 697b ldr r3, [r7, #20] - 8040a26: 2b00 cmp r3, #0 - 8040a28: d1d1 bne.n 80409ce - 8040a2a: e000 b.n 8040a2e + 8040a5e: 697b ldr r3, [r7, #20] + 8040a60: 68db ldr r3, [r3, #12] + 8040a62: 617b str r3, [r7, #20] + 8040a64: 697b ldr r3, [r7, #20] + 8040a66: 2b00 cmp r3, #0 + 8040a68: d1d1 bne.n 8040a0e + 8040a6a: e000 b.n 8040a6e break; - 8040a2c: bf00 nop + 8040a6c: bf00 nop /* only pass to ANY if no specific local IP has been found */ lpcb = lpcb_any; prev = lpcb_prev; } #endif /* SO_REUSE */ if (lpcb != NULL) { - 8040a2e: 697b ldr r3, [r7, #20] - 8040a30: 2b00 cmp r3, #0 - 8040a32: d029 beq.n 8040a88 + 8040a6e: 697b ldr r3, [r7, #20] + 8040a70: 2b00 cmp r3, #0 + 8040a72: d029 beq.n 8040ac8 /* Move this PCB to the front of the list so that subsequent lookups will be faster (we exploit locality in TCP segment arrivals). */ if (prev != NULL) { - 8040a34: 69bb ldr r3, [r7, #24] - 8040a36: 2b00 cmp r3, #0 - 8040a38: d00a beq.n 8040a50 + 8040a74: 69bb ldr r3, [r7, #24] + 8040a76: 2b00 cmp r3, #0 + 8040a78: d00a beq.n 8040a90 ((struct tcp_pcb_listen *)prev)->next = lpcb->next; - 8040a3a: 697b ldr r3, [r7, #20] - 8040a3c: 68da ldr r2, [r3, #12] - 8040a3e: 69bb ldr r3, [r7, #24] - 8040a40: 60da str r2, [r3, #12] + 8040a7a: 697b ldr r3, [r7, #20] + 8040a7c: 68da ldr r2, [r3, #12] + 8040a7e: 69bb ldr r3, [r7, #24] + 8040a80: 60da str r2, [r3, #12] /* our successor is the remainder of the listening list */ lpcb->next = tcp_listen_pcbs.listen_pcbs; - 8040a42: 4b10 ldr r3, [pc, #64] ; (8040a84 ) - 8040a44: 681a ldr r2, [r3, #0] - 8040a46: 697b ldr r3, [r7, #20] - 8040a48: 60da str r2, [r3, #12] + 8040a82: 4b10 ldr r3, [pc, #64] ; (8040ac4 ) + 8040a84: 681a ldr r2, [r3, #0] + 8040a86: 697b ldr r3, [r7, #20] + 8040a88: 60da str r2, [r3, #12] /* put this listening pcb at the head of the listening list */ tcp_listen_pcbs.listen_pcbs = lpcb; - 8040a4a: 4a0e ldr r2, [pc, #56] ; (8040a84 ) - 8040a4c: 697b ldr r3, [r7, #20] - 8040a4e: 6013 str r3, [r2, #0] + 8040a8a: 4a0e ldr r2, [pc, #56] ; (8040ac4 ) + 8040a8c: 697b ldr r3, [r7, #20] + 8040a8e: 6013 str r3, [r2, #0] #ifdef LWIP_HOOK_TCP_INPACKET_PCB if (LWIP_HOOK_TCP_INPACKET_PCB((struct tcp_pcb *)lpcb, tcphdr, tcphdr_optlen, tcphdr_opt1len, tcphdr_opt2, p) == ERR_OK) #endif { tcp_listen_input(lpcb); - 8040a50: 6978 ldr r0, [r7, #20] - 8040a52: f000 fa03 bl 8040e5c + 8040a90: 6978 ldr r0, [r7, #20] + 8040a92: f000 fa03 bl 8040e9c } pbuf_free(p); - 8040a56: 6878 ldr r0, [r7, #4] - 8040a58: f7fd feea bl 803e830 + 8040a96: 6878 ldr r0, [r7, #4] + 8040a98: f7fd feea bl 803e870 return; - 8040a5c: e1a8 b.n 8040db0 - 8040a5e: bf00 nop - 8040a60: 2400eb10 .word 0x2400eb10 - 8040a64: 2400bb4c .word 0x2400bb4c - 8040a68: 0804b398 .word 0x0804b398 - 8040a6c: 0804b4c4 .word 0x0804b4c4 - 8040a70: 0804b3e4 .word 0x0804b3e4 - 8040a74: 2400eaf4 .word 0x2400eaf4 - 8040a78: 0804b4f0 .word 0x0804b4f0 - 8040a7c: 2400eaf8 .word 0x2400eaf8 - 8040a80: 0804b51c .word 0x0804b51c - 8040a84: 2400eaf0 .word 0x2400eaf0 + 8040a9c: e1a8 b.n 8040df0 + 8040a9e: bf00 nop + 8040aa0: 2400eb10 .word 0x2400eb10 + 8040aa4: 2400bb4c .word 0x2400bb4c + 8040aa8: 0804b3d8 .word 0x0804b3d8 + 8040aac: 0804b504 .word 0x0804b504 + 8040ab0: 0804b424 .word 0x0804b424 + 8040ab4: 2400eaf4 .word 0x2400eaf4 + 8040ab8: 0804b530 .word 0x0804b530 + 8040abc: 2400eaf8 .word 0x2400eaf8 + 8040ac0: 0804b55c .word 0x0804b55c + 8040ac4: 2400eaf0 .word 0x2400eaf0 tcphdr_opt1len, tcphdr_opt2, p) != ERR_OK) { pbuf_free(p); return; } #endif if (pcb != NULL) { - 8040a88: 69fb ldr r3, [r7, #28] - 8040a8a: 2b00 cmp r3, #0 - 8040a8c: f000 8158 beq.w 8040d40 + 8040ac8: 69fb ldr r3, [r7, #28] + 8040aca: 2b00 cmp r3, #0 + 8040acc: f000 8158 beq.w 8040d80 #if TCP_INPUT_DEBUG tcp_debug_print_state(pcb->state); #endif /* TCP_INPUT_DEBUG */ /* Set up a tcp_seg structure. */ inseg.next = NULL; - 8040a90: 4b95 ldr r3, [pc, #596] ; (8040ce8 ) - 8040a92: 2200 movs r2, #0 - 8040a94: 601a str r2, [r3, #0] + 8040ad0: 4b95 ldr r3, [pc, #596] ; (8040d28 ) + 8040ad2: 2200 movs r2, #0 + 8040ad4: 601a str r2, [r3, #0] inseg.len = p->tot_len; - 8040a96: 687b ldr r3, [r7, #4] - 8040a98: 891a ldrh r2, [r3, #8] - 8040a9a: 4b93 ldr r3, [pc, #588] ; (8040ce8 ) - 8040a9c: 811a strh r2, [r3, #8] + 8040ad6: 687b ldr r3, [r7, #4] + 8040ad8: 891a ldrh r2, [r3, #8] + 8040ada: 4b93 ldr r3, [pc, #588] ; (8040d28 ) + 8040adc: 811a strh r2, [r3, #8] inseg.p = p; - 8040a9e: 4a92 ldr r2, [pc, #584] ; (8040ce8 ) - 8040aa0: 687b ldr r3, [r7, #4] - 8040aa2: 6053 str r3, [r2, #4] + 8040ade: 4a92 ldr r2, [pc, #584] ; (8040d28 ) + 8040ae0: 687b ldr r3, [r7, #4] + 8040ae2: 6053 str r3, [r2, #4] inseg.tcphdr = tcphdr; - 8040aa4: 4b91 ldr r3, [pc, #580] ; (8040cec ) - 8040aa6: 681b ldr r3, [r3, #0] - 8040aa8: 4a8f ldr r2, [pc, #572] ; (8040ce8 ) - 8040aaa: 60d3 str r3, [r2, #12] + 8040ae4: 4b91 ldr r3, [pc, #580] ; (8040d2c ) + 8040ae6: 681b ldr r3, [r3, #0] + 8040ae8: 4a8f ldr r2, [pc, #572] ; (8040d28 ) + 8040aea: 60d3 str r3, [r2, #12] recv_data = NULL; - 8040aac: 4b90 ldr r3, [pc, #576] ; (8040cf0 ) - 8040aae: 2200 movs r2, #0 - 8040ab0: 601a str r2, [r3, #0] + 8040aec: 4b90 ldr r3, [pc, #576] ; (8040d30 ) + 8040aee: 2200 movs r2, #0 + 8040af0: 601a str r2, [r3, #0] recv_flags = 0; - 8040ab2: 4b90 ldr r3, [pc, #576] ; (8040cf4 ) - 8040ab4: 2200 movs r2, #0 - 8040ab6: 701a strb r2, [r3, #0] + 8040af2: 4b90 ldr r3, [pc, #576] ; (8040d34 ) + 8040af4: 2200 movs r2, #0 + 8040af6: 701a strb r2, [r3, #0] recv_acked = 0; - 8040ab8: 4b8f ldr r3, [pc, #572] ; (8040cf8 ) - 8040aba: 2200 movs r2, #0 - 8040abc: 801a strh r2, [r3, #0] + 8040af8: 4b8f ldr r3, [pc, #572] ; (8040d38 ) + 8040afa: 2200 movs r2, #0 + 8040afc: 801a strh r2, [r3, #0] if (flags & TCP_PSH) { - 8040abe: 4b8f ldr r3, [pc, #572] ; (8040cfc ) - 8040ac0: 781b ldrb r3, [r3, #0] - 8040ac2: f003 0308 and.w r3, r3, #8 - 8040ac6: 2b00 cmp r3, #0 - 8040ac8: d006 beq.n 8040ad8 + 8040afe: 4b8f ldr r3, [pc, #572] ; (8040d3c ) + 8040b00: 781b ldrb r3, [r3, #0] + 8040b02: f003 0308 and.w r3, r3, #8 + 8040b06: 2b00 cmp r3, #0 + 8040b08: d006 beq.n 8040b18 p->flags |= PBUF_FLAG_PUSH; - 8040aca: 687b ldr r3, [r7, #4] - 8040acc: 7b5b ldrb r3, [r3, #13] - 8040ace: f043 0301 orr.w r3, r3, #1 - 8040ad2: b2da uxtb r2, r3 - 8040ad4: 687b ldr r3, [r7, #4] - 8040ad6: 735a strb r2, [r3, #13] + 8040b0a: 687b ldr r3, [r7, #4] + 8040b0c: 7b5b ldrb r3, [r3, #13] + 8040b0e: f043 0301 orr.w r3, r3, #1 + 8040b12: b2da uxtb r2, r3 + 8040b14: 687b ldr r3, [r7, #4] + 8040b16: 735a strb r2, [r3, #13] } /* If there is data which was previously "refused" by upper layer */ if (pcb->refused_data != NULL) { - 8040ad8: 69fb ldr r3, [r7, #28] - 8040ada: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040adc: 2b00 cmp r3, #0 - 8040ade: d017 beq.n 8040b10 + 8040b18: 69fb ldr r3, [r7, #28] + 8040b1a: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040b1c: 2b00 cmp r3, #0 + 8040b1e: d017 beq.n 8040b50 if ((tcp_process_refused_data(pcb) == ERR_ABRT) || - 8040ae0: 69f8 ldr r0, [r7, #28] - 8040ae2: f7ff f929 bl 803fd38 - 8040ae6: 4603 mov r3, r0 - 8040ae8: f113 0f0d cmn.w r3, #13 - 8040aec: d007 beq.n 8040afe + 8040b20: 69f8 ldr r0, [r7, #28] + 8040b22: f7ff f929 bl 803fd78 + 8040b26: 4603 mov r3, r0 + 8040b28: f113 0f0d cmn.w r3, #13 + 8040b2c: d007 beq.n 8040b3e ((pcb->refused_data != NULL) && (tcplen > 0))) { - 8040aee: 69fb ldr r3, [r7, #28] - 8040af0: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040b2e: 69fb ldr r3, [r7, #28] + 8040b30: 6f9b ldr r3, [r3, #120] ; 0x78 if ((tcp_process_refused_data(pcb) == ERR_ABRT) || - 8040af2: 2b00 cmp r3, #0 - 8040af4: d00c beq.n 8040b10 + 8040b32: 2b00 cmp r3, #0 + 8040b34: d00c beq.n 8040b50 ((pcb->refused_data != NULL) && (tcplen > 0))) { - 8040af6: 4b82 ldr r3, [pc, #520] ; (8040d00 ) - 8040af8: 881b ldrh r3, [r3, #0] - 8040afa: 2b00 cmp r3, #0 - 8040afc: d008 beq.n 8040b10 + 8040b36: 4b82 ldr r3, [pc, #520] ; (8040d40 ) + 8040b38: 881b ldrh r3, [r3, #0] + 8040b3a: 2b00 cmp r3, #0 + 8040b3c: d008 beq.n 8040b50 /* pcb has been aborted or refused data is still refused and the new segment contains data */ if (pcb->rcv_ann_wnd == 0) { - 8040afe: 69fb ldr r3, [r7, #28] - 8040b00: 8d5b ldrh r3, [r3, #42] ; 0x2a - 8040b02: 2b00 cmp r3, #0 - 8040b04: f040 80e3 bne.w 8040cce + 8040b3e: 69fb ldr r3, [r7, #28] + 8040b40: 8d5b ldrh r3, [r3, #42] ; 0x2a + 8040b42: 2b00 cmp r3, #0 + 8040b44: f040 80e3 bne.w 8040d0e /* this is a zero-window probe, we respond to it with current RCV.NXT and drop the data segment */ tcp_send_empty_ack(pcb); - 8040b08: 69f8 ldr r0, [r7, #28] - 8040b0a: f003 fe05 bl 8044718 + 8040b48: 69f8 ldr r0, [r7, #28] + 8040b4a: f003 fe05 bl 8044758 } TCP_STATS_INC(tcp.drop); MIB2_STATS_INC(mib2.tcpinerrs); goto aborted; - 8040b0e: e0de b.n 8040cce + 8040b4e: e0de b.n 8040d0e } } tcp_input_pcb = pcb; - 8040b10: 4a7c ldr r2, [pc, #496] ; (8040d04 ) - 8040b12: 69fb ldr r3, [r7, #28] - 8040b14: 6013 str r3, [r2, #0] + 8040b50: 4a7c ldr r2, [pc, #496] ; (8040d44 ) + 8040b52: 69fb ldr r3, [r7, #28] + 8040b54: 6013 str r3, [r2, #0] err = tcp_process(pcb); - 8040b16: 69f8 ldr r0, [r7, #28] - 8040b18: f000 fb18 bl 804114c - 8040b1c: 4603 mov r3, r0 - 8040b1e: 74fb strb r3, [r7, #19] + 8040b56: 69f8 ldr r0, [r7, #28] + 8040b58: f000 fb18 bl 804118c + 8040b5c: 4603 mov r3, r0 + 8040b5e: 74fb strb r3, [r7, #19] /* A return value of ERR_ABRT means that tcp_abort() was called and that the pcb has been freed. If so, we don't do anything. */ if (err != ERR_ABRT) { - 8040b20: f997 3013 ldrsb.w r3, [r7, #19] - 8040b24: f113 0f0d cmn.w r3, #13 - 8040b28: f000 80d3 beq.w 8040cd2 + 8040b60: f997 3013 ldrsb.w r3, [r7, #19] + 8040b64: f113 0f0d cmn.w r3, #13 + 8040b68: f000 80d3 beq.w 8040d12 if (recv_flags & TF_RESET) { - 8040b2c: 4b71 ldr r3, [pc, #452] ; (8040cf4 ) - 8040b2e: 781b ldrb r3, [r3, #0] - 8040b30: f003 0308 and.w r3, r3, #8 - 8040b34: 2b00 cmp r3, #0 - 8040b36: d015 beq.n 8040b64 + 8040b6c: 4b71 ldr r3, [pc, #452] ; (8040d34 ) + 8040b6e: 781b ldrb r3, [r3, #0] + 8040b70: f003 0308 and.w r3, r3, #8 + 8040b74: 2b00 cmp r3, #0 + 8040b76: d015 beq.n 8040ba4 /* TF_RESET means that the connection was reset by the other end. We then call the error callback to inform the application that the connection is dead before we deallocate the PCB. */ TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_RST); - 8040b38: 69fb ldr r3, [r7, #28] - 8040b3a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8040b3e: 2b00 cmp r3, #0 - 8040b40: d008 beq.n 8040b54 - 8040b42: 69fb ldr r3, [r7, #28] - 8040b44: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8040b48: 69fa ldr r2, [r7, #28] - 8040b4a: 6912 ldr r2, [r2, #16] - 8040b4c: f06f 010d mvn.w r1, #13 - 8040b50: 4610 mov r0, r2 - 8040b52: 4798 blx r3 + 8040b78: 69fb ldr r3, [r7, #28] + 8040b7a: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8040b7e: 2b00 cmp r3, #0 + 8040b80: d008 beq.n 8040b94 + 8040b82: 69fb ldr r3, [r7, #28] + 8040b84: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8040b88: 69fa ldr r2, [r7, #28] + 8040b8a: 6912 ldr r2, [r2, #16] + 8040b8c: f06f 010d mvn.w r1, #13 + 8040b90: 4610 mov r0, r2 + 8040b92: 4798 blx r3 tcp_pcb_remove(&tcp_active_pcbs, pcb); - 8040b54: 69f9 ldr r1, [r7, #28] - 8040b56: 486c ldr r0, [pc, #432] ; (8040d08 ) - 8040b58: f7ff fbbc bl 80402d4 + 8040b94: 69f9 ldr r1, [r7, #28] + 8040b96: 486c ldr r0, [pc, #432] ; (8040d48 ) + 8040b98: f7ff fbbc bl 8040314 tcp_free(pcb); - 8040b5c: 69f8 ldr r0, [r7, #28] - 8040b5e: f7fe f9a9 bl 803eeb4 - 8040b62: e0da b.n 8040d1a + 8040b9c: 69f8 ldr r0, [r7, #28] + 8040b9e: f7fe f9a9 bl 803eef4 + 8040ba2: e0da b.n 8040d5a } else { err = ERR_OK; - 8040b64: 2300 movs r3, #0 - 8040b66: 74fb strb r3, [r7, #19] + 8040ba4: 2300 movs r3, #0 + 8040ba6: 74fb strb r3, [r7, #19] /* If the application has registered a "sent" function to be called when new send buffer space is available, we call it now. */ if (recv_acked > 0) { - 8040b68: 4b63 ldr r3, [pc, #396] ; (8040cf8 ) - 8040b6a: 881b ldrh r3, [r3, #0] - 8040b6c: 2b00 cmp r3, #0 - 8040b6e: d01d beq.n 8040bac + 8040ba8: 4b63 ldr r3, [pc, #396] ; (8040d38 ) + 8040baa: 881b ldrh r3, [r3, #0] + 8040bac: 2b00 cmp r3, #0 + 8040bae: d01d beq.n 8040bec while (acked > 0) { acked16 = (u16_t)LWIP_MIN(acked, 0xffffu); acked -= acked16; #else { acked16 = recv_acked; - 8040b70: 4b61 ldr r3, [pc, #388] ; (8040cf8 ) - 8040b72: 881b ldrh r3, [r3, #0] - 8040b74: 81fb strh r3, [r7, #14] + 8040bb0: 4b61 ldr r3, [pc, #388] ; (8040d38 ) + 8040bb2: 881b ldrh r3, [r3, #0] + 8040bb4: 81fb strh r3, [r7, #14] #endif TCP_EVENT_SENT(pcb, (u16_t)acked16, err); - 8040b76: 69fb ldr r3, [r7, #28] - 8040b78: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 8040b7c: 2b00 cmp r3, #0 - 8040b7e: d00a beq.n 8040b96 - 8040b80: 69fb ldr r3, [r7, #28] - 8040b82: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 - 8040b86: 69fa ldr r2, [r7, #28] - 8040b88: 6910 ldr r0, [r2, #16] - 8040b8a: 89fa ldrh r2, [r7, #14] - 8040b8c: 69f9 ldr r1, [r7, #28] - 8040b8e: 4798 blx r3 - 8040b90: 4603 mov r3, r0 - 8040b92: 74fb strb r3, [r7, #19] - 8040b94: e001 b.n 8040b9a - 8040b96: 2300 movs r3, #0 - 8040b98: 74fb strb r3, [r7, #19] + 8040bb6: 69fb ldr r3, [r7, #28] + 8040bb8: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 8040bbc: 2b00 cmp r3, #0 + 8040bbe: d00a beq.n 8040bd6 + 8040bc0: 69fb ldr r3, [r7, #28] + 8040bc2: f8d3 3080 ldr.w r3, [r3, #128] ; 0x80 + 8040bc6: 69fa ldr r2, [r7, #28] + 8040bc8: 6910 ldr r0, [r2, #16] + 8040bca: 89fa ldrh r2, [r7, #14] + 8040bcc: 69f9 ldr r1, [r7, #28] + 8040bce: 4798 blx r3 + 8040bd0: 4603 mov r3, r0 + 8040bd2: 74fb strb r3, [r7, #19] + 8040bd4: e001 b.n 8040bda + 8040bd6: 2300 movs r3, #0 + 8040bd8: 74fb strb r3, [r7, #19] if (err == ERR_ABRT) { - 8040b9a: f997 3013 ldrsb.w r3, [r7, #19] - 8040b9e: f113 0f0d cmn.w r3, #13 - 8040ba2: f000 8098 beq.w 8040cd6 + 8040bda: f997 3013 ldrsb.w r3, [r7, #19] + 8040bde: f113 0f0d cmn.w r3, #13 + 8040be2: f000 8098 beq.w 8040d16 goto aborted; } } recv_acked = 0; - 8040ba6: 4b54 ldr r3, [pc, #336] ; (8040cf8 ) - 8040ba8: 2200 movs r2, #0 - 8040baa: 801a strh r2, [r3, #0] + 8040be6: 4b54 ldr r3, [pc, #336] ; (8040d38 ) + 8040be8: 2200 movs r2, #0 + 8040bea: 801a strh r2, [r3, #0] } if (tcp_input_delayed_close(pcb)) { - 8040bac: 69f8 ldr r0, [r7, #28] - 8040bae: f000 f915 bl 8040ddc - 8040bb2: 4603 mov r3, r0 - 8040bb4: 2b00 cmp r3, #0 - 8040bb6: f040 8090 bne.w 8040cda + 8040bec: 69f8 ldr r0, [r7, #28] + 8040bee: f000 f915 bl 8040e1c + 8040bf2: 4603 mov r3, r0 + 8040bf4: 2b00 cmp r3, #0 + 8040bf6: f040 8090 bne.w 8040d1a #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE while (recv_data != NULL) { struct pbuf *rest = NULL; pbuf_split_64k(recv_data, &rest); #else /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ if (recv_data != NULL) { - 8040bba: 4b4d ldr r3, [pc, #308] ; (8040cf0 ) - 8040bbc: 681b ldr r3, [r3, #0] - 8040bbe: 2b00 cmp r3, #0 - 8040bc0: d041 beq.n 8040c46 + 8040bfa: 4b4d ldr r3, [pc, #308] ; (8040d30 ) + 8040bfc: 681b ldr r3, [r3, #0] + 8040bfe: 2b00 cmp r3, #0 + 8040c00: d041 beq.n 8040c86 #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL); - 8040bc2: 69fb ldr r3, [r7, #28] - 8040bc4: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040bc6: 2b00 cmp r3, #0 - 8040bc8: d006 beq.n 8040bd8 - 8040bca: 4b50 ldr r3, [pc, #320] ; (8040d0c ) - 8040bcc: f44f 72f3 mov.w r2, #486 ; 0x1e6 - 8040bd0: 494f ldr r1, [pc, #316] ; (8040d10 ) - 8040bd2: 4850 ldr r0, [pc, #320] ; (8040d14 ) - 8040bd4: f007 f9e6 bl 8047fa4 + 8040c02: 69fb ldr r3, [r7, #28] + 8040c04: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040c06: 2b00 cmp r3, #0 + 8040c08: d006 beq.n 8040c18 + 8040c0a: 4b50 ldr r3, [pc, #320] ; (8040d4c ) + 8040c0c: f44f 72f3 mov.w r2, #486 ; 0x1e6 + 8040c10: 494f ldr r1, [pc, #316] ; (8040d50 ) + 8040c12: 4850 ldr r0, [pc, #320] ; (8040d54 ) + 8040c14: f007 f9e6 bl 8047fe4 if (pcb->flags & TF_RXCLOSED) { - 8040bd8: 69fb ldr r3, [r7, #28] - 8040bda: 8b5b ldrh r3, [r3, #26] - 8040bdc: f003 0310 and.w r3, r3, #16 - 8040be0: 2b00 cmp r3, #0 - 8040be2: d008 beq.n 8040bf6 + 8040c18: 69fb ldr r3, [r7, #28] + 8040c1a: 8b5b ldrh r3, [r3, #26] + 8040c1c: f003 0310 and.w r3, r3, #16 + 8040c20: 2b00 cmp r3, #0 + 8040c22: d008 beq.n 8040c36 /* received data although already closed -> abort (send RST) to notify the remote host that not all data has been processed */ pbuf_free(recv_data); - 8040be4: 4b42 ldr r3, [pc, #264] ; (8040cf0 ) - 8040be6: 681b ldr r3, [r3, #0] - 8040be8: 4618 mov r0, r3 - 8040bea: f7fd fe21 bl 803e830 + 8040c24: 4b42 ldr r3, [pc, #264] ; (8040d30 ) + 8040c26: 681b ldr r3, [r3, #0] + 8040c28: 4618 mov r0, r3 + 8040c2a: f7fd fe21 bl 803e870 #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE if (rest != NULL) { pbuf_free(rest); } #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ tcp_abort(pcb); - 8040bee: 69f8 ldr r0, [r7, #28] - 8040bf0: f7fe fc48 bl 803f484 + 8040c2e: 69f8 ldr r0, [r7, #28] + 8040c30: f7fe fc48 bl 803f4c4 goto aborted; - 8040bf4: e091 b.n 8040d1a + 8040c34: e091 b.n 8040d5a } /* Notify application that data has been received. */ TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); - 8040bf6: 69fb ldr r3, [r7, #28] - 8040bf8: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8040bfc: 2b00 cmp r3, #0 - 8040bfe: d00c beq.n 8040c1a - 8040c00: 69fb ldr r3, [r7, #28] - 8040c02: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 - 8040c06: 69fb ldr r3, [r7, #28] - 8040c08: 6918 ldr r0, [r3, #16] - 8040c0a: 4b39 ldr r3, [pc, #228] ; (8040cf0 ) - 8040c0c: 681a ldr r2, [r3, #0] - 8040c0e: 2300 movs r3, #0 - 8040c10: 69f9 ldr r1, [r7, #28] - 8040c12: 47a0 blx r4 - 8040c14: 4603 mov r3, r0 - 8040c16: 74fb strb r3, [r7, #19] - 8040c18: e008 b.n 8040c2c - 8040c1a: 4b35 ldr r3, [pc, #212] ; (8040cf0 ) - 8040c1c: 681a ldr r2, [r3, #0] - 8040c1e: 2300 movs r3, #0 - 8040c20: 69f9 ldr r1, [r7, #28] - 8040c22: 2000 movs r0, #0 - 8040c24: f7ff f95e bl 803fee4 - 8040c28: 4603 mov r3, r0 - 8040c2a: 74fb strb r3, [r7, #19] + 8040c36: 69fb ldr r3, [r7, #28] + 8040c38: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8040c3c: 2b00 cmp r3, #0 + 8040c3e: d00c beq.n 8040c5a + 8040c40: 69fb ldr r3, [r7, #28] + 8040c42: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 + 8040c46: 69fb ldr r3, [r7, #28] + 8040c48: 6918 ldr r0, [r3, #16] + 8040c4a: 4b39 ldr r3, [pc, #228] ; (8040d30 ) + 8040c4c: 681a ldr r2, [r3, #0] + 8040c4e: 2300 movs r3, #0 + 8040c50: 69f9 ldr r1, [r7, #28] + 8040c52: 47a0 blx r4 + 8040c54: 4603 mov r3, r0 + 8040c56: 74fb strb r3, [r7, #19] + 8040c58: e008 b.n 8040c6c + 8040c5a: 4b35 ldr r3, [pc, #212] ; (8040d30 ) + 8040c5c: 681a ldr r2, [r3, #0] + 8040c5e: 2300 movs r3, #0 + 8040c60: 69f9 ldr r1, [r7, #28] + 8040c62: 2000 movs r0, #0 + 8040c64: f7ff f95e bl 803ff24 + 8040c68: 4603 mov r3, r0 + 8040c6a: 74fb strb r3, [r7, #19] if (err == ERR_ABRT) { - 8040c2c: f997 3013 ldrsb.w r3, [r7, #19] - 8040c30: f113 0f0d cmn.w r3, #13 - 8040c34: d053 beq.n 8040cde + 8040c6c: f997 3013 ldrsb.w r3, [r7, #19] + 8040c70: f113 0f0d cmn.w r3, #13 + 8040c74: d053 beq.n 8040d1e #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ goto aborted; } /* If the upper layer can't receive this data, store it */ if (err != ERR_OK) { - 8040c36: f997 3013 ldrsb.w r3, [r7, #19] - 8040c3a: 2b00 cmp r3, #0 - 8040c3c: d003 beq.n 8040c46 + 8040c76: f997 3013 ldrsb.w r3, [r7, #19] + 8040c7a: 2b00 cmp r3, #0 + 8040c7c: d003 beq.n 8040c86 #if TCP_QUEUE_OOSEQ && LWIP_WND_SCALE if (rest != NULL) { pbuf_cat(recv_data, rest); } #endif /* TCP_QUEUE_OOSEQ && LWIP_WND_SCALE */ pcb->refused_data = recv_data; - 8040c3e: 4b2c ldr r3, [pc, #176] ; (8040cf0 ) - 8040c40: 681a ldr r2, [r3, #0] - 8040c42: 69fb ldr r3, [r7, #28] - 8040c44: 679a str r2, [r3, #120] ; 0x78 + 8040c7e: 4b2c ldr r3, [pc, #176] ; (8040d30 ) + 8040c80: 681a ldr r2, [r3, #0] + 8040c82: 69fb ldr r3, [r7, #28] + 8040c84: 679a str r2, [r3, #120] ; 0x78 } } /* If a FIN segment was received, we call the callback function with a NULL buffer to indicate EOF. */ if (recv_flags & TF_GOT_FIN) { - 8040c46: 4b2b ldr r3, [pc, #172] ; (8040cf4 ) - 8040c48: 781b ldrb r3, [r3, #0] - 8040c4a: f003 0320 and.w r3, r3, #32 - 8040c4e: 2b00 cmp r3, #0 - 8040c50: d030 beq.n 8040cb4 + 8040c86: 4b2b ldr r3, [pc, #172] ; (8040d34 ) + 8040c88: 781b ldrb r3, [r3, #0] + 8040c8a: f003 0320 and.w r3, r3, #32 + 8040c8e: 2b00 cmp r3, #0 + 8040c90: d030 beq.n 8040cf4 if (pcb->refused_data != NULL) { - 8040c52: 69fb ldr r3, [r7, #28] - 8040c54: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040c56: 2b00 cmp r3, #0 - 8040c58: d009 beq.n 8040c6e + 8040c92: 69fb ldr r3, [r7, #28] + 8040c94: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040c96: 2b00 cmp r3, #0 + 8040c98: d009 beq.n 8040cae /* Delay this if we have refused data. */ pcb->refused_data->flags |= PBUF_FLAG_TCP_FIN; - 8040c5a: 69fb ldr r3, [r7, #28] - 8040c5c: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040c5e: 7b5a ldrb r2, [r3, #13] - 8040c60: 69fb ldr r3, [r7, #28] - 8040c62: 6f9b ldr r3, [r3, #120] ; 0x78 - 8040c64: f042 0220 orr.w r2, r2, #32 - 8040c68: b2d2 uxtb r2, r2 - 8040c6a: 735a strb r2, [r3, #13] - 8040c6c: e022 b.n 8040cb4 + 8040c9a: 69fb ldr r3, [r7, #28] + 8040c9c: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040c9e: 7b5a ldrb r2, [r3, #13] + 8040ca0: 69fb ldr r3, [r7, #28] + 8040ca2: 6f9b ldr r3, [r3, #120] ; 0x78 + 8040ca4: f042 0220 orr.w r2, r2, #32 + 8040ca8: b2d2 uxtb r2, r2 + 8040caa: 735a strb r2, [r3, #13] + 8040cac: e022 b.n 8040cf4 } else { /* correct rcv_wnd as the application won't call tcp_recved() for the FIN's seqno */ if (pcb->rcv_wnd != TCP_WND_MAX(pcb)) { - 8040c6e: 69fb ldr r3, [r7, #28] - 8040c70: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8040c72: f5b3 6f06 cmp.w r3, #2144 ; 0x860 - 8040c76: d005 beq.n 8040c84 + 8040cae: 69fb ldr r3, [r7, #28] + 8040cb0: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8040cb2: f5b3 6f06 cmp.w r3, #2144 ; 0x860 + 8040cb6: d005 beq.n 8040cc4 pcb->rcv_wnd++; - 8040c78: 69fb ldr r3, [r7, #28] - 8040c7a: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8040c7c: 3301 adds r3, #1 - 8040c7e: b29a uxth r2, r3 - 8040c80: 69fb ldr r3, [r7, #28] - 8040c82: 851a strh r2, [r3, #40] ; 0x28 + 8040cb8: 69fb ldr r3, [r7, #28] + 8040cba: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8040cbc: 3301 adds r3, #1 + 8040cbe: b29a uxth r2, r3 + 8040cc0: 69fb ldr r3, [r7, #28] + 8040cc2: 851a strh r2, [r3, #40] ; 0x28 } TCP_EVENT_CLOSED(pcb, err); - 8040c84: 69fb ldr r3, [r7, #28] - 8040c86: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 - 8040c8a: 2b00 cmp r3, #0 - 8040c8c: d00b beq.n 8040ca6 - 8040c8e: 69fb ldr r3, [r7, #28] - 8040c90: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 - 8040c94: 69fb ldr r3, [r7, #28] - 8040c96: 6918 ldr r0, [r3, #16] - 8040c98: 2300 movs r3, #0 - 8040c9a: 2200 movs r2, #0 - 8040c9c: 69f9 ldr r1, [r7, #28] - 8040c9e: 47a0 blx r4 - 8040ca0: 4603 mov r3, r0 - 8040ca2: 74fb strb r3, [r7, #19] - 8040ca4: e001 b.n 8040caa - 8040ca6: 2300 movs r3, #0 - 8040ca8: 74fb strb r3, [r7, #19] + 8040cc4: 69fb ldr r3, [r7, #28] + 8040cc6: f8d3 3084 ldr.w r3, [r3, #132] ; 0x84 + 8040cca: 2b00 cmp r3, #0 + 8040ccc: d00b beq.n 8040ce6 + 8040cce: 69fb ldr r3, [r7, #28] + 8040cd0: f8d3 4084 ldr.w r4, [r3, #132] ; 0x84 + 8040cd4: 69fb ldr r3, [r7, #28] + 8040cd6: 6918 ldr r0, [r3, #16] + 8040cd8: 2300 movs r3, #0 + 8040cda: 2200 movs r2, #0 + 8040cdc: 69f9 ldr r1, [r7, #28] + 8040cde: 47a0 blx r4 + 8040ce0: 4603 mov r3, r0 + 8040ce2: 74fb strb r3, [r7, #19] + 8040ce4: e001 b.n 8040cea + 8040ce6: 2300 movs r3, #0 + 8040ce8: 74fb strb r3, [r7, #19] if (err == ERR_ABRT) { - 8040caa: f997 3013 ldrsb.w r3, [r7, #19] - 8040cae: f113 0f0d cmn.w r3, #13 - 8040cb2: d016 beq.n 8040ce2 + 8040cea: f997 3013 ldrsb.w r3, [r7, #19] + 8040cee: f113 0f0d cmn.w r3, #13 + 8040cf2: d016 beq.n 8040d22 goto aborted; } } } tcp_input_pcb = NULL; - 8040cb4: 4b13 ldr r3, [pc, #76] ; (8040d04 ) - 8040cb6: 2200 movs r2, #0 - 8040cb8: 601a str r2, [r3, #0] + 8040cf4: 4b13 ldr r3, [pc, #76] ; (8040d44 ) + 8040cf6: 2200 movs r2, #0 + 8040cf8: 601a str r2, [r3, #0] if (tcp_input_delayed_close(pcb)) { - 8040cba: 69f8 ldr r0, [r7, #28] - 8040cbc: f000 f88e bl 8040ddc - 8040cc0: 4603 mov r3, r0 - 8040cc2: 2b00 cmp r3, #0 - 8040cc4: d128 bne.n 8040d18 + 8040cfa: 69f8 ldr r0, [r7, #28] + 8040cfc: f000 f88e bl 8040e1c + 8040d00: 4603 mov r3, r0 + 8040d02: 2b00 cmp r3, #0 + 8040d04: d128 bne.n 8040d58 goto aborted; } /* Try to send something out. */ tcp_output(pcb); - 8040cc6: 69f8 ldr r0, [r7, #28] - 8040cc8: f002 ff20 bl 8043b0c - 8040ccc: e025 b.n 8040d1a + 8040d06: 69f8 ldr r0, [r7, #28] + 8040d08: f002 ff20 bl 8043b4c + 8040d0c: e025 b.n 8040d5a goto aborted; - 8040cce: bf00 nop - 8040cd0: e023 b.n 8040d1a + 8040d0e: bf00 nop + 8040d10: e023 b.n 8040d5a #endif /* TCP_INPUT_DEBUG */ } } /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()). Below this line, 'pcb' may not be dereferenced! */ aborted: - 8040cd2: bf00 nop - 8040cd4: e021 b.n 8040d1a + 8040d12: bf00 nop + 8040d14: e021 b.n 8040d5a goto aborted; - 8040cd6: bf00 nop - 8040cd8: e01f b.n 8040d1a + 8040d16: bf00 nop + 8040d18: e01f b.n 8040d5a goto aborted; - 8040cda: bf00 nop - 8040cdc: e01d b.n 8040d1a + 8040d1a: bf00 nop + 8040d1c: e01d b.n 8040d5a goto aborted; - 8040cde: bf00 nop - 8040ce0: e01b b.n 8040d1a + 8040d1e: bf00 nop + 8040d20: e01b b.n 8040d5a goto aborted; - 8040ce2: bf00 nop - 8040ce4: e019 b.n 8040d1a - 8040ce6: bf00 nop - 8040ce8: 2400eb00 .word 0x2400eb00 - 8040cec: 2400eb10 .word 0x2400eb10 - 8040cf0: 2400eb30 .word 0x2400eb30 - 8040cf4: 2400eb2d .word 0x2400eb2d - 8040cf8: 2400eb28 .word 0x2400eb28 - 8040cfc: 2400eb2c .word 0x2400eb2c - 8040d00: 2400eb2a .word 0x2400eb2a - 8040d04: 2400eb34 .word 0x2400eb34 - 8040d08: 2400eaf4 .word 0x2400eaf4 - 8040d0c: 0804b398 .word 0x0804b398 - 8040d10: 0804b54c .word 0x0804b54c - 8040d14: 0804b3e4 .word 0x0804b3e4 + 8040d22: bf00 nop + 8040d24: e019 b.n 8040d5a + 8040d26: bf00 nop + 8040d28: 2400eb00 .word 0x2400eb00 + 8040d2c: 2400eb10 .word 0x2400eb10 + 8040d30: 2400eb30 .word 0x2400eb30 + 8040d34: 2400eb2d .word 0x2400eb2d + 8040d38: 2400eb28 .word 0x2400eb28 + 8040d3c: 2400eb2c .word 0x2400eb2c + 8040d40: 2400eb2a .word 0x2400eb2a + 8040d44: 2400eb34 .word 0x2400eb34 + 8040d48: 2400eaf4 .word 0x2400eaf4 + 8040d4c: 0804b3d8 .word 0x0804b3d8 + 8040d50: 0804b58c .word 0x0804b58c + 8040d54: 0804b424 .word 0x0804b424 goto aborted; - 8040d18: bf00 nop + 8040d58: bf00 nop tcp_input_pcb = NULL; - 8040d1a: 4b27 ldr r3, [pc, #156] ; (8040db8 ) - 8040d1c: 2200 movs r2, #0 - 8040d1e: 601a str r2, [r3, #0] + 8040d5a: 4b27 ldr r3, [pc, #156] ; (8040df8 ) + 8040d5c: 2200 movs r2, #0 + 8040d5e: 601a str r2, [r3, #0] recv_data = NULL; - 8040d20: 4b26 ldr r3, [pc, #152] ; (8040dbc ) - 8040d22: 2200 movs r2, #0 - 8040d24: 601a str r2, [r3, #0] + 8040d60: 4b26 ldr r3, [pc, #152] ; (8040dfc ) + 8040d62: 2200 movs r2, #0 + 8040d64: 601a str r2, [r3, #0] /* give up our reference to inseg.p */ if (inseg.p != NULL) { - 8040d26: 4b26 ldr r3, [pc, #152] ; (8040dc0 ) - 8040d28: 685b ldr r3, [r3, #4] - 8040d2a: 2b00 cmp r3, #0 - 8040d2c: d03f beq.n 8040dae + 8040d66: 4b26 ldr r3, [pc, #152] ; (8040e00 ) + 8040d68: 685b ldr r3, [r3, #4] + 8040d6a: 2b00 cmp r3, #0 + 8040d6c: d03f beq.n 8040dee pbuf_free(inseg.p); - 8040d2e: 4b24 ldr r3, [pc, #144] ; (8040dc0 ) - 8040d30: 685b ldr r3, [r3, #4] - 8040d32: 4618 mov r0, r3 - 8040d34: f7fd fd7c bl 803e830 + 8040d6e: 4b24 ldr r3, [pc, #144] ; (8040e00 ) + 8040d70: 685b ldr r3, [r3, #4] + 8040d72: 4618 mov r0, r3 + 8040d74: f7fd fd7c bl 803e870 inseg.p = NULL; - 8040d38: 4b21 ldr r3, [pc, #132] ; (8040dc0 ) - 8040d3a: 2200 movs r2, #0 - 8040d3c: 605a str r2, [r3, #4] + 8040d78: 4b21 ldr r3, [pc, #132] ; (8040e00 ) + 8040d7a: 2200 movs r2, #0 + 8040d7c: 605a str r2, [r3, #4] pbuf_free(p); } LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane()); PERF_STOP("tcp_input"); return; - 8040d3e: e036 b.n 8040dae + 8040d7e: e036 b.n 8040dee if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { - 8040d40: 4b20 ldr r3, [pc, #128] ; (8040dc4 ) - 8040d42: 681b ldr r3, [r3, #0] - 8040d44: 899b ldrh r3, [r3, #12] - 8040d46: b29b uxth r3, r3 - 8040d48: 4618 mov r0, r3 - 8040d4a: f7fc f93f bl 803cfcc - 8040d4e: 4603 mov r3, r0 - 8040d50: b2db uxtb r3, r3 - 8040d52: f003 0304 and.w r3, r3, #4 - 8040d56: 2b00 cmp r3, #0 - 8040d58: d118 bne.n 8040d8c + 8040d80: 4b20 ldr r3, [pc, #128] ; (8040e04 ) + 8040d82: 681b ldr r3, [r3, #0] + 8040d84: 899b ldrh r3, [r3, #12] + 8040d86: b29b uxth r3, r3 + 8040d88: 4618 mov r0, r3 + 8040d8a: f7fc f93f bl 803d00c + 8040d8e: 4603 mov r3, r0 + 8040d90: b2db uxtb r3, r3 + 8040d92: f003 0304 and.w r3, r3, #4 + 8040d96: 2b00 cmp r3, #0 + 8040d98: d118 bne.n 8040dcc tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040d5a: 4b1b ldr r3, [pc, #108] ; (8040dc8 ) - 8040d5c: 6819 ldr r1, [r3, #0] - 8040d5e: 4b1b ldr r3, [pc, #108] ; (8040dcc ) - 8040d60: 881b ldrh r3, [r3, #0] - 8040d62: 461a mov r2, r3 - 8040d64: 4b1a ldr r3, [pc, #104] ; (8040dd0 ) - 8040d66: 681b ldr r3, [r3, #0] - 8040d68: 18d0 adds r0, r2, r3 + 8040d9a: 4b1b ldr r3, [pc, #108] ; (8040e08 ) + 8040d9c: 6819 ldr r1, [r3, #0] + 8040d9e: 4b1b ldr r3, [pc, #108] ; (8040e0c ) + 8040da0: 881b ldrh r3, [r3, #0] + 8040da2: 461a mov r2, r3 + 8040da4: 4b1a ldr r3, [pc, #104] ; (8040e10 ) + 8040da6: 681b ldr r3, [r3, #0] + 8040da8: 18d0 adds r0, r2, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8040d6a: 4b16 ldr r3, [pc, #88] ; (8040dc4 ) - 8040d6c: 681b ldr r3, [r3, #0] + 8040daa: 4b16 ldr r3, [pc, #88] ; (8040e04 ) + 8040dac: 681b ldr r3, [r3, #0] tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040d6e: 885b ldrh r3, [r3, #2] - 8040d70: b29b uxth r3, r3 + 8040dae: 885b ldrh r3, [r3, #2] + 8040db0: b29b uxth r3, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8040d72: 4a14 ldr r2, [pc, #80] ; (8040dc4 ) - 8040d74: 6812 ldr r2, [r2, #0] + 8040db2: 4a14 ldr r2, [pc, #80] ; (8040e04 ) + 8040db4: 6812 ldr r2, [r2, #0] tcp_rst(NULL, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040d76: 8812 ldrh r2, [r2, #0] - 8040d78: b292 uxth r2, r2 - 8040d7a: 9202 str r2, [sp, #8] - 8040d7c: 9301 str r3, [sp, #4] - 8040d7e: 4b15 ldr r3, [pc, #84] ; (8040dd4 ) - 8040d80: 9300 str r3, [sp, #0] - 8040d82: 4b15 ldr r3, [pc, #84] ; (8040dd8 ) - 8040d84: 4602 mov r2, r0 - 8040d86: 2000 movs r0, #0 - 8040d88: f003 fc74 bl 8044674 + 8040db6: 8812 ldrh r2, [r2, #0] + 8040db8: b292 uxth r2, r2 + 8040dba: 9202 str r2, [sp, #8] + 8040dbc: 9301 str r3, [sp, #4] + 8040dbe: 4b15 ldr r3, [pc, #84] ; (8040e14 ) + 8040dc0: 9300 str r3, [sp, #0] + 8040dc2: 4b15 ldr r3, [pc, #84] ; (8040e18 ) + 8040dc4: 4602 mov r2, r0 + 8040dc6: 2000 movs r0, #0 + 8040dc8: f003 fc74 bl 80446b4 pbuf_free(p); - 8040d8c: 6878 ldr r0, [r7, #4] - 8040d8e: f7fd fd4f bl 803e830 + 8040dcc: 6878 ldr r0, [r7, #4] + 8040dce: f7fd fd4f bl 803e870 return; - 8040d92: e00c b.n 8040dae + 8040dd2: e00c b.n 8040dee goto dropped; - 8040d94: bf00 nop - 8040d96: e006 b.n 8040da6 + 8040dd4: bf00 nop + 8040dd6: e006 b.n 8040de6 goto dropped; - 8040d98: bf00 nop - 8040d9a: e004 b.n 8040da6 + 8040dd8: bf00 nop + 8040dda: e004 b.n 8040de6 goto dropped; - 8040d9c: bf00 nop - 8040d9e: e002 b.n 8040da6 + 8040ddc: bf00 nop + 8040dde: e002 b.n 8040de6 goto dropped; - 8040da0: bf00 nop - 8040da2: e000 b.n 8040da6 + 8040de0: bf00 nop + 8040de2: e000 b.n 8040de6 goto dropped; - 8040da4: bf00 nop + 8040de4: bf00 nop dropped: TCP_STATS_INC(tcp.drop); MIB2_STATS_INC(mib2.tcpinerrs); pbuf_free(p); - 8040da6: 6878 ldr r0, [r7, #4] - 8040da8: f7fd fd42 bl 803e830 - 8040dac: e000 b.n 8040db0 + 8040de6: 6878 ldr r0, [r7, #4] + 8040de8: f7fd fd42 bl 803e870 + 8040dec: e000 b.n 8040df0 return; - 8040dae: bf00 nop -} - 8040db0: 3724 adds r7, #36 ; 0x24 - 8040db2: 46bd mov sp, r7 - 8040db4: bd90 pop {r4, r7, pc} - 8040db6: bf00 nop - 8040db8: 2400eb34 .word 0x2400eb34 - 8040dbc: 2400eb30 .word 0x2400eb30 - 8040dc0: 2400eb00 .word 0x2400eb00 - 8040dc4: 2400eb10 .word 0x2400eb10 - 8040dc8: 2400eb24 .word 0x2400eb24 - 8040dcc: 2400eb2a .word 0x2400eb2a - 8040dd0: 2400eb20 .word 0x2400eb20 - 8040dd4: 2400bb5c .word 0x2400bb5c - 8040dd8: 2400bb60 .word 0x2400bb60 - -08040ddc : + 8040dee: bf00 nop +} + 8040df0: 3724 adds r7, #36 ; 0x24 + 8040df2: 46bd mov sp, r7 + 8040df4: bd90 pop {r4, r7, pc} + 8040df6: bf00 nop + 8040df8: 2400eb34 .word 0x2400eb34 + 8040dfc: 2400eb30 .word 0x2400eb30 + 8040e00: 2400eb00 .word 0x2400eb00 + 8040e04: 2400eb10 .word 0x2400eb10 + 8040e08: 2400eb24 .word 0x2400eb24 + 8040e0c: 2400eb2a .word 0x2400eb2a + 8040e10: 2400eb20 .word 0x2400eb20 + 8040e14: 2400bb5c .word 0x2400bb5c + 8040e18: 2400bb60 .word 0x2400bb60 + +08040e1c : * any more. * @returns 1 if the pcb has been closed and deallocated, 0 otherwise */ static int tcp_input_delayed_close(struct tcp_pcb *pcb) { - 8040ddc: b580 push {r7, lr} - 8040dde: b082 sub sp, #8 - 8040de0: af00 add r7, sp, #0 - 8040de2: 6078 str r0, [r7, #4] + 8040e1c: b580 push {r7, lr} + 8040e1e: b082 sub sp, #8 + 8040e20: af00 add r7, sp, #0 + 8040e22: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_input_delayed_close: invalid pcb", pcb != NULL); - 8040de4: 687b ldr r3, [r7, #4] - 8040de6: 2b00 cmp r3, #0 - 8040de8: d106 bne.n 8040df8 - 8040dea: 4b17 ldr r3, [pc, #92] ; (8040e48 ) - 8040dec: f240 225a movw r2, #602 ; 0x25a - 8040df0: 4916 ldr r1, [pc, #88] ; (8040e4c ) - 8040df2: 4817 ldr r0, [pc, #92] ; (8040e50 ) - 8040df4: f007 f8d6 bl 8047fa4 + 8040e24: 687b ldr r3, [r7, #4] + 8040e26: 2b00 cmp r3, #0 + 8040e28: d106 bne.n 8040e38 + 8040e2a: 4b17 ldr r3, [pc, #92] ; (8040e88 ) + 8040e2c: f240 225a movw r2, #602 ; 0x25a + 8040e30: 4916 ldr r1, [pc, #88] ; (8040e8c ) + 8040e32: 4817 ldr r0, [pc, #92] ; (8040e90 ) + 8040e34: f007 f8d6 bl 8047fe4 if (recv_flags & TF_CLOSED) { - 8040df8: 4b16 ldr r3, [pc, #88] ; (8040e54 ) - 8040dfa: 781b ldrb r3, [r3, #0] - 8040dfc: f003 0310 and.w r3, r3, #16 - 8040e00: 2b00 cmp r3, #0 - 8040e02: d01c beq.n 8040e3e + 8040e38: 4b16 ldr r3, [pc, #88] ; (8040e94 ) + 8040e3a: 781b ldrb r3, [r3, #0] + 8040e3c: f003 0310 and.w r3, r3, #16 + 8040e40: 2b00 cmp r3, #0 + 8040e42: d01c beq.n 8040e7e /* The connection has been closed and we will deallocate the PCB. */ if (!(pcb->flags & TF_RXCLOSED)) { - 8040e04: 687b ldr r3, [r7, #4] - 8040e06: 8b5b ldrh r3, [r3, #26] - 8040e08: f003 0310 and.w r3, r3, #16 - 8040e0c: 2b00 cmp r3, #0 - 8040e0e: d10d bne.n 8040e2c + 8040e44: 687b ldr r3, [r7, #4] + 8040e46: 8b5b ldrh r3, [r3, #26] + 8040e48: f003 0310 and.w r3, r3, #16 + 8040e4c: 2b00 cmp r3, #0 + 8040e4e: d10d bne.n 8040e6c /* Connection closed although the application has only shut down the tx side: call the PCB's err callback and indicate the closure to ensure the application doesn't continue using the PCB. */ TCP_EVENT_ERR(pcb->state, pcb->errf, pcb->callback_arg, ERR_CLSD); - 8040e10: 687b ldr r3, [r7, #4] - 8040e12: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8040e16: 2b00 cmp r3, #0 - 8040e18: d008 beq.n 8040e2c - 8040e1a: 687b ldr r3, [r7, #4] - 8040e1c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 - 8040e20: 687a ldr r2, [r7, #4] - 8040e22: 6912 ldr r2, [r2, #16] - 8040e24: f06f 010e mvn.w r1, #14 - 8040e28: 4610 mov r0, r2 - 8040e2a: 4798 blx r3 + 8040e50: 687b ldr r3, [r7, #4] + 8040e52: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8040e56: 2b00 cmp r3, #0 + 8040e58: d008 beq.n 8040e6c + 8040e5a: 687b ldr r3, [r7, #4] + 8040e5c: f8d3 3090 ldr.w r3, [r3, #144] ; 0x90 + 8040e60: 687a ldr r2, [r7, #4] + 8040e62: 6912 ldr r2, [r2, #16] + 8040e64: f06f 010e mvn.w r1, #14 + 8040e68: 4610 mov r0, r2 + 8040e6a: 4798 blx r3 } tcp_pcb_remove(&tcp_active_pcbs, pcb); - 8040e2c: 6879 ldr r1, [r7, #4] - 8040e2e: 480a ldr r0, [pc, #40] ; (8040e58 ) - 8040e30: f7ff fa50 bl 80402d4 + 8040e6c: 6879 ldr r1, [r7, #4] + 8040e6e: 480a ldr r0, [pc, #40] ; (8040e98 ) + 8040e70: f7ff fa50 bl 8040314 tcp_free(pcb); - 8040e34: 6878 ldr r0, [r7, #4] - 8040e36: f7fe f83d bl 803eeb4 + 8040e74: 6878 ldr r0, [r7, #4] + 8040e76: f7fe f83d bl 803eef4 return 1; - 8040e3a: 2301 movs r3, #1 - 8040e3c: e000 b.n 8040e40 + 8040e7a: 2301 movs r3, #1 + 8040e7c: e000 b.n 8040e80 } return 0; - 8040e3e: 2300 movs r3, #0 -} - 8040e40: 4618 mov r0, r3 - 8040e42: 3708 adds r7, #8 - 8040e44: 46bd mov sp, r7 - 8040e46: bd80 pop {r7, pc} - 8040e48: 0804b398 .word 0x0804b398 - 8040e4c: 0804b568 .word 0x0804b568 - 8040e50: 0804b3e4 .word 0x0804b3e4 - 8040e54: 2400eb2d .word 0x2400eb2d - 8040e58: 2400eaf4 .word 0x2400eaf4 - -08040e5c : + 8040e7e: 2300 movs r3, #0 +} + 8040e80: 4618 mov r0, r3 + 8040e82: 3708 adds r7, #8 + 8040e84: 46bd mov sp, r7 + 8040e86: bd80 pop {r7, pc} + 8040e88: 0804b3d8 .word 0x0804b3d8 + 8040e8c: 0804b5a8 .word 0x0804b5a8 + 8040e90: 0804b424 .word 0x0804b424 + 8040e94: 2400eb2d .word 0x2400eb2d + 8040e98: 2400eaf4 .word 0x2400eaf4 + +08040e9c : * @note the segment which arrived is saved in global variables, therefore only the pcb * involved is passed as a parameter to this function */ static void tcp_listen_input(struct tcp_pcb_listen *pcb) { - 8040e5c: b590 push {r4, r7, lr} - 8040e5e: b08b sub sp, #44 ; 0x2c - 8040e60: af04 add r7, sp, #16 - 8040e62: 6078 str r0, [r7, #4] + 8040e9c: b590 push {r4, r7, lr} + 8040e9e: b08b sub sp, #44 ; 0x2c + 8040ea0: af04 add r7, sp, #16 + 8040ea2: 6078 str r0, [r7, #4] struct tcp_pcb *npcb; u32_t iss; err_t rc; if (flags & TCP_RST) { - 8040e64: 4b6f ldr r3, [pc, #444] ; (8041024 ) - 8040e66: 781b ldrb r3, [r3, #0] - 8040e68: f003 0304 and.w r3, r3, #4 - 8040e6c: 2b00 cmp r3, #0 - 8040e6e: f040 80d2 bne.w 8041016 + 8040ea4: 4b6f ldr r3, [pc, #444] ; (8041064 ) + 8040ea6: 781b ldrb r3, [r3, #0] + 8040ea8: f003 0304 and.w r3, r3, #4 + 8040eac: 2b00 cmp r3, #0 + 8040eae: f040 80d2 bne.w 8041056 /* An incoming RST should be ignored. Return. */ return; } LWIP_ASSERT("tcp_listen_input: invalid pcb", pcb != NULL); - 8040e72: 687b ldr r3, [r7, #4] - 8040e74: 2b00 cmp r3, #0 - 8040e76: d106 bne.n 8040e86 - 8040e78: 4b6b ldr r3, [pc, #428] ; (8041028 ) - 8040e7a: f240 2281 movw r2, #641 ; 0x281 - 8040e7e: 496b ldr r1, [pc, #428] ; (804102c ) - 8040e80: 486b ldr r0, [pc, #428] ; (8041030 ) - 8040e82: f007 f88f bl 8047fa4 + 8040eb2: 687b ldr r3, [r7, #4] + 8040eb4: 2b00 cmp r3, #0 + 8040eb6: d106 bne.n 8040ec6 + 8040eb8: 4b6b ldr r3, [pc, #428] ; (8041068 ) + 8040eba: f240 2281 movw r2, #641 ; 0x281 + 8040ebe: 496b ldr r1, [pc, #428] ; (804106c ) + 8040ec0: 486b ldr r0, [pc, #428] ; (8041070 ) + 8040ec2: f007 f88f bl 8047fe4 /* In the LISTEN state, we check for incoming SYN segments, creates a new PCB, and responds with a SYN|ACK. */ if (flags & TCP_ACK) { - 8040e86: 4b67 ldr r3, [pc, #412] ; (8041024 ) - 8040e88: 781b ldrb r3, [r3, #0] - 8040e8a: f003 0310 and.w r3, r3, #16 - 8040e8e: 2b00 cmp r3, #0 - 8040e90: d019 beq.n 8040ec6 + 8040ec6: 4b67 ldr r3, [pc, #412] ; (8041064 ) + 8040ec8: 781b ldrb r3, [r3, #0] + 8040eca: f003 0310 and.w r3, r3, #16 + 8040ece: 2b00 cmp r3, #0 + 8040ed0: d019 beq.n 8040f06 /* For incoming segments with the ACK flag set, respond with a RST. */ LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040e92: 4b68 ldr r3, [pc, #416] ; (8041034 ) - 8040e94: 6819 ldr r1, [r3, #0] - 8040e96: 4b68 ldr r3, [pc, #416] ; (8041038 ) - 8040e98: 881b ldrh r3, [r3, #0] - 8040e9a: 461a mov r2, r3 - 8040e9c: 4b67 ldr r3, [pc, #412] ; (804103c ) - 8040e9e: 681b ldr r3, [r3, #0] - 8040ea0: 18d0 adds r0, r2, r3 + 8040ed2: 4b68 ldr r3, [pc, #416] ; (8041074 ) + 8040ed4: 6819 ldr r1, [r3, #0] + 8040ed6: 4b68 ldr r3, [pc, #416] ; (8041078 ) + 8040ed8: 881b ldrh r3, [r3, #0] + 8040eda: 461a mov r2, r3 + 8040edc: 4b67 ldr r3, [pc, #412] ; (804107c ) + 8040ede: 681b ldr r3, [r3, #0] + 8040ee0: 18d0 adds r0, r2, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8040ea2: 4b67 ldr r3, [pc, #412] ; (8041040 ) - 8040ea4: 681b ldr r3, [r3, #0] + 8040ee2: 4b67 ldr r3, [pc, #412] ; (8041080 ) + 8040ee4: 681b ldr r3, [r3, #0] tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040ea6: 885b ldrh r3, [r3, #2] - 8040ea8: b29b uxth r3, r3 + 8040ee6: 885b ldrh r3, [r3, #2] + 8040ee8: b29b uxth r3, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8040eaa: 4a65 ldr r2, [pc, #404] ; (8041040 ) - 8040eac: 6812 ldr r2, [r2, #0] + 8040eea: 4a65 ldr r2, [pc, #404] ; (8041080 ) + 8040eec: 6812 ldr r2, [r2, #0] tcp_rst((const struct tcp_pcb *)pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 8040eae: 8812 ldrh r2, [r2, #0] - 8040eb0: b292 uxth r2, r2 - 8040eb2: 9202 str r2, [sp, #8] - 8040eb4: 9301 str r3, [sp, #4] - 8040eb6: 4b63 ldr r3, [pc, #396] ; (8041044 ) - 8040eb8: 9300 str r3, [sp, #0] - 8040eba: 4b63 ldr r3, [pc, #396] ; (8041048 ) - 8040ebc: 4602 mov r2, r0 - 8040ebe: 6878 ldr r0, [r7, #4] - 8040ec0: f003 fbd8 bl 8044674 + 8040eee: 8812 ldrh r2, [r2, #0] + 8040ef0: b292 uxth r2, r2 + 8040ef2: 9202 str r2, [sp, #8] + 8040ef4: 9301 str r3, [sp, #4] + 8040ef6: 4b63 ldr r3, [pc, #396] ; (8041084 ) + 8040ef8: 9300 str r3, [sp, #0] + 8040efa: 4b63 ldr r3, [pc, #396] ; (8041088 ) + 8040efc: 4602 mov r2, r0 + 8040efe: 6878 ldr r0, [r7, #4] + 8040f00: f003 fbd8 bl 80446b4 tcp_abandon(npcb, 0); return; } tcp_output(npcb); } return; - 8040ec4: e0a9 b.n 804101a + 8040f04: e0a9 b.n 804105a } else if (flags & TCP_SYN) { - 8040ec6: 4b57 ldr r3, [pc, #348] ; (8041024 ) - 8040ec8: 781b ldrb r3, [r3, #0] - 8040eca: f003 0302 and.w r3, r3, #2 - 8040ece: 2b00 cmp r3, #0 - 8040ed0: f000 80a3 beq.w 804101a + 8040f06: 4b57 ldr r3, [pc, #348] ; (8041064 ) + 8040f08: 781b ldrb r3, [r3, #0] + 8040f0a: f003 0302 and.w r3, r3, #2 + 8040f0e: 2b00 cmp r3, #0 + 8040f10: f000 80a3 beq.w 804105a npcb = tcp_alloc(pcb->prio); - 8040ed4: 687b ldr r3, [r7, #4] - 8040ed6: 7d5b ldrb r3, [r3, #21] - 8040ed8: 4618 mov r0, r3 - 8040eda: f7ff f927 bl 804012c - 8040ede: 6178 str r0, [r7, #20] + 8040f14: 687b ldr r3, [r7, #4] + 8040f16: 7d5b ldrb r3, [r3, #21] + 8040f18: 4618 mov r0, r3 + 8040f1a: f7ff f927 bl 804016c + 8040f1e: 6178 str r0, [r7, #20] if (npcb == NULL) { - 8040ee0: 697b ldr r3, [r7, #20] - 8040ee2: 2b00 cmp r3, #0 - 8040ee4: d111 bne.n 8040f0a + 8040f20: 697b ldr r3, [r7, #20] + 8040f22: 2b00 cmp r3, #0 + 8040f24: d111 bne.n 8040f4a TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err); - 8040ee6: 687b ldr r3, [r7, #4] - 8040ee8: 699b ldr r3, [r3, #24] - 8040eea: 2b00 cmp r3, #0 - 8040eec: d00a beq.n 8040f04 - 8040eee: 687b ldr r3, [r7, #4] - 8040ef0: 699b ldr r3, [r3, #24] - 8040ef2: 687a ldr r2, [r7, #4] - 8040ef4: 6910 ldr r0, [r2, #16] - 8040ef6: f04f 32ff mov.w r2, #4294967295 - 8040efa: 2100 movs r1, #0 - 8040efc: 4798 blx r3 - 8040efe: 4603 mov r3, r0 - 8040f00: 73bb strb r3, [r7, #14] + 8040f26: 687b ldr r3, [r7, #4] + 8040f28: 699b ldr r3, [r3, #24] + 8040f2a: 2b00 cmp r3, #0 + 8040f2c: d00a beq.n 8040f44 + 8040f2e: 687b ldr r3, [r7, #4] + 8040f30: 699b ldr r3, [r3, #24] + 8040f32: 687a ldr r2, [r7, #4] + 8040f34: 6910 ldr r0, [r2, #16] + 8040f36: f04f 32ff mov.w r2, #4294967295 + 8040f3a: 2100 movs r1, #0 + 8040f3c: 4798 blx r3 + 8040f3e: 4603 mov r3, r0 + 8040f40: 73bb strb r3, [r7, #14] return; - 8040f02: e08b b.n 804101c + 8040f42: e08b b.n 804105c TCP_EVENT_ACCEPT(pcb, NULL, pcb->callback_arg, ERR_MEM, err); - 8040f04: 23f0 movs r3, #240 ; 0xf0 - 8040f06: 73bb strb r3, [r7, #14] + 8040f44: 23f0 movs r3, #240 ; 0xf0 + 8040f46: 73bb strb r3, [r7, #14] return; - 8040f08: e088 b.n 804101c + 8040f48: e088 b.n 804105c ip_addr_copy(npcb->local_ip, *ip_current_dest_addr()); - 8040f0a: 4b50 ldr r3, [pc, #320] ; (804104c ) - 8040f0c: 695a ldr r2, [r3, #20] - 8040f0e: 697b ldr r3, [r7, #20] - 8040f10: 601a str r2, [r3, #0] + 8040f4a: 4b50 ldr r3, [pc, #320] ; (804108c ) + 8040f4c: 695a ldr r2, [r3, #20] + 8040f4e: 697b ldr r3, [r7, #20] + 8040f50: 601a str r2, [r3, #0] ip_addr_copy(npcb->remote_ip, *ip_current_src_addr()); - 8040f12: 4b4e ldr r3, [pc, #312] ; (804104c ) - 8040f14: 691a ldr r2, [r3, #16] - 8040f16: 697b ldr r3, [r7, #20] - 8040f18: 605a str r2, [r3, #4] + 8040f52: 4b4e ldr r3, [pc, #312] ; (804108c ) + 8040f54: 691a ldr r2, [r3, #16] + 8040f56: 697b ldr r3, [r7, #20] + 8040f58: 605a str r2, [r3, #4] npcb->local_port = pcb->local_port; - 8040f1a: 687b ldr r3, [r7, #4] - 8040f1c: 8ada ldrh r2, [r3, #22] - 8040f1e: 697b ldr r3, [r7, #20] - 8040f20: 82da strh r2, [r3, #22] + 8040f5a: 687b ldr r3, [r7, #4] + 8040f5c: 8ada ldrh r2, [r3, #22] + 8040f5e: 697b ldr r3, [r7, #20] + 8040f60: 82da strh r2, [r3, #22] npcb->remote_port = tcphdr->src; - 8040f22: 4b47 ldr r3, [pc, #284] ; (8041040 ) - 8040f24: 681b ldr r3, [r3, #0] - 8040f26: 881b ldrh r3, [r3, #0] - 8040f28: b29a uxth r2, r3 - 8040f2a: 697b ldr r3, [r7, #20] - 8040f2c: 831a strh r2, [r3, #24] + 8040f62: 4b47 ldr r3, [pc, #284] ; (8041080 ) + 8040f64: 681b ldr r3, [r3, #0] + 8040f66: 881b ldrh r3, [r3, #0] + 8040f68: b29a uxth r2, r3 + 8040f6a: 697b ldr r3, [r7, #20] + 8040f6c: 831a strh r2, [r3, #24] npcb->state = SYN_RCVD; - 8040f2e: 697b ldr r3, [r7, #20] - 8040f30: 2203 movs r2, #3 - 8040f32: 751a strb r2, [r3, #20] + 8040f6e: 697b ldr r3, [r7, #20] + 8040f70: 2203 movs r2, #3 + 8040f72: 751a strb r2, [r3, #20] npcb->rcv_nxt = seqno + 1; - 8040f34: 4b41 ldr r3, [pc, #260] ; (804103c ) - 8040f36: 681b ldr r3, [r3, #0] - 8040f38: 1c5a adds r2, r3, #1 - 8040f3a: 697b ldr r3, [r7, #20] - 8040f3c: 625a str r2, [r3, #36] ; 0x24 + 8040f74: 4b41 ldr r3, [pc, #260] ; (804107c ) + 8040f76: 681b ldr r3, [r3, #0] + 8040f78: 1c5a adds r2, r3, #1 + 8040f7a: 697b ldr r3, [r7, #20] + 8040f7c: 625a str r2, [r3, #36] ; 0x24 npcb->rcv_ann_right_edge = npcb->rcv_nxt; - 8040f3e: 697b ldr r3, [r7, #20] - 8040f40: 6a5a ldr r2, [r3, #36] ; 0x24 - 8040f42: 697b ldr r3, [r7, #20] - 8040f44: 62da str r2, [r3, #44] ; 0x2c + 8040f7e: 697b ldr r3, [r7, #20] + 8040f80: 6a5a ldr r2, [r3, #36] ; 0x24 + 8040f82: 697b ldr r3, [r7, #20] + 8040f84: 62da str r2, [r3, #44] ; 0x2c iss = tcp_next_iss(npcb); - 8040f46: 6978 ldr r0, [r7, #20] - 8040f48: f7ff fa58 bl 80403fc - 8040f4c: 6138 str r0, [r7, #16] + 8040f86: 6978 ldr r0, [r7, #20] + 8040f88: f7ff fa58 bl 804043c + 8040f8c: 6138 str r0, [r7, #16] npcb->snd_wl2 = iss; - 8040f4e: 697b ldr r3, [r7, #20] - 8040f50: 693a ldr r2, [r7, #16] - 8040f52: 659a str r2, [r3, #88] ; 0x58 + 8040f8e: 697b ldr r3, [r7, #20] + 8040f90: 693a ldr r2, [r7, #16] + 8040f92: 659a str r2, [r3, #88] ; 0x58 npcb->snd_nxt = iss; - 8040f54: 697b ldr r3, [r7, #20] - 8040f56: 693a ldr r2, [r7, #16] - 8040f58: 651a str r2, [r3, #80] ; 0x50 + 8040f94: 697b ldr r3, [r7, #20] + 8040f96: 693a ldr r2, [r7, #16] + 8040f98: 651a str r2, [r3, #80] ; 0x50 npcb->lastack = iss; - 8040f5a: 697b ldr r3, [r7, #20] - 8040f5c: 693a ldr r2, [r7, #16] - 8040f5e: 645a str r2, [r3, #68] ; 0x44 + 8040f9a: 697b ldr r3, [r7, #20] + 8040f9c: 693a ldr r2, [r7, #16] + 8040f9e: 645a str r2, [r3, #68] ; 0x44 npcb->snd_lbb = iss; - 8040f60: 697b ldr r3, [r7, #20] - 8040f62: 693a ldr r2, [r7, #16] - 8040f64: 65da str r2, [r3, #92] ; 0x5c + 8040fa0: 697b ldr r3, [r7, #20] + 8040fa2: 693a ldr r2, [r7, #16] + 8040fa4: 65da str r2, [r3, #92] ; 0x5c npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ - 8040f66: 4b35 ldr r3, [pc, #212] ; (804103c ) - 8040f68: 681b ldr r3, [r3, #0] - 8040f6a: 1e5a subs r2, r3, #1 - 8040f6c: 697b ldr r3, [r7, #20] - 8040f6e: 655a str r2, [r3, #84] ; 0x54 + 8040fa6: 4b35 ldr r3, [pc, #212] ; (804107c ) + 8040fa8: 681b ldr r3, [r3, #0] + 8040faa: 1e5a subs r2, r3, #1 + 8040fac: 697b ldr r3, [r7, #20] + 8040fae: 655a str r2, [r3, #84] ; 0x54 npcb->callback_arg = pcb->callback_arg; - 8040f70: 687b ldr r3, [r7, #4] - 8040f72: 691a ldr r2, [r3, #16] - 8040f74: 697b ldr r3, [r7, #20] - 8040f76: 611a str r2, [r3, #16] + 8040fb0: 687b ldr r3, [r7, #4] + 8040fb2: 691a ldr r2, [r3, #16] + 8040fb4: 697b ldr r3, [r7, #20] + 8040fb6: 611a str r2, [r3, #16] npcb->listener = pcb; - 8040f78: 697b ldr r3, [r7, #20] - 8040f7a: 687a ldr r2, [r7, #4] - 8040f7c: 67da str r2, [r3, #124] ; 0x7c + 8040fb8: 697b ldr r3, [r7, #20] + 8040fba: 687a ldr r2, [r7, #4] + 8040fbc: 67da str r2, [r3, #124] ; 0x7c npcb->so_options = pcb->so_options & SOF_INHERITED; - 8040f7e: 687b ldr r3, [r7, #4] - 8040f80: 7a5b ldrb r3, [r3, #9] - 8040f82: f003 030c and.w r3, r3, #12 - 8040f86: b2da uxtb r2, r3 - 8040f88: 697b ldr r3, [r7, #20] - 8040f8a: 725a strb r2, [r3, #9] + 8040fbe: 687b ldr r3, [r7, #4] + 8040fc0: 7a5b ldrb r3, [r3, #9] + 8040fc2: f003 030c and.w r3, r3, #12 + 8040fc6: b2da uxtb r2, r3 + 8040fc8: 697b ldr r3, [r7, #20] + 8040fca: 725a strb r2, [r3, #9] npcb->netif_idx = pcb->netif_idx; - 8040f8c: 687b ldr r3, [r7, #4] - 8040f8e: 7a1a ldrb r2, [r3, #8] - 8040f90: 697b ldr r3, [r7, #20] - 8040f92: 721a strb r2, [r3, #8] + 8040fcc: 687b ldr r3, [r7, #4] + 8040fce: 7a1a ldrb r2, [r3, #8] + 8040fd0: 697b ldr r3, [r7, #20] + 8040fd2: 721a strb r2, [r3, #8] TCP_REG_ACTIVE(npcb); - 8040f94: 4b2e ldr r3, [pc, #184] ; (8041050 ) - 8040f96: 681a ldr r2, [r3, #0] - 8040f98: 697b ldr r3, [r7, #20] - 8040f9a: 60da str r2, [r3, #12] - 8040f9c: 4a2c ldr r2, [pc, #176] ; (8041050 ) - 8040f9e: 697b ldr r3, [r7, #20] - 8040fa0: 6013 str r3, [r2, #0] - 8040fa2: f003 fd29 bl 80449f8 - 8040fa6: 4b2b ldr r3, [pc, #172] ; (8041054 ) - 8040fa8: 2201 movs r2, #1 - 8040faa: 701a strb r2, [r3, #0] + 8040fd4: 4b2e ldr r3, [pc, #184] ; (8041090 ) + 8040fd6: 681a ldr r2, [r3, #0] + 8040fd8: 697b ldr r3, [r7, #20] + 8040fda: 60da str r2, [r3, #12] + 8040fdc: 4a2c ldr r2, [pc, #176] ; (8041090 ) + 8040fde: 697b ldr r3, [r7, #20] + 8040fe0: 6013 str r3, [r2, #0] + 8040fe2: f003 fd29 bl 8044a38 + 8040fe6: 4b2b ldr r3, [pc, #172] ; (8041094 ) + 8040fe8: 2201 movs r2, #1 + 8040fea: 701a strb r2, [r3, #0] tcp_parseopt(npcb); - 8040fac: 6978 ldr r0, [r7, #20] - 8040fae: f001 fd8f bl 8042ad0 + 8040fec: 6978 ldr r0, [r7, #20] + 8040fee: f001 fd8f bl 8042b10 npcb->snd_wnd = tcphdr->wnd; - 8040fb2: 4b23 ldr r3, [pc, #140] ; (8041040 ) - 8040fb4: 681b ldr r3, [r3, #0] - 8040fb6: 89db ldrh r3, [r3, #14] - 8040fb8: b29a uxth r2, r3 - 8040fba: 697b ldr r3, [r7, #20] - 8040fbc: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 8040ff2: 4b23 ldr r3, [pc, #140] ; (8041080 ) + 8040ff4: 681b ldr r3, [r3, #0] + 8040ff6: 89db ldrh r3, [r3, #14] + 8040ff8: b29a uxth r2, r3 + 8040ffa: 697b ldr r3, [r7, #20] + 8040ffc: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 npcb->snd_wnd_max = npcb->snd_wnd; - 8040fc0: 697b ldr r3, [r7, #20] - 8040fc2: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 8040fc6: 697b ldr r3, [r7, #20] - 8040fc8: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 + 8041000: 697b ldr r3, [r7, #20] + 8041002: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 8041006: 697b ldr r3, [r7, #20] + 8041008: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, &npcb->remote_ip); - 8040fcc: 697b ldr r3, [r7, #20] - 8040fce: 8e5c ldrh r4, [r3, #50] ; 0x32 - 8040fd0: 697b ldr r3, [r7, #20] - 8040fd2: 3304 adds r3, #4 - 8040fd4: 4618 mov r0, r3 - 8040fd6: f005 fca5 bl 8046924 - 8040fda: 4601 mov r1, r0 - 8040fdc: 697b ldr r3, [r7, #20] - 8040fde: 3304 adds r3, #4 - 8040fe0: 461a mov r2, r3 - 8040fe2: 4620 mov r0, r4 - 8040fe4: f7ff fa30 bl 8040448 - 8040fe8: 4603 mov r3, r0 - 8040fea: 461a mov r2, r3 - 8040fec: 697b ldr r3, [r7, #20] - 8040fee: 865a strh r2, [r3, #50] ; 0x32 + 804100c: 697b ldr r3, [r7, #20] + 804100e: 8e5c ldrh r4, [r3, #50] ; 0x32 + 8041010: 697b ldr r3, [r7, #20] + 8041012: 3304 adds r3, #4 + 8041014: 4618 mov r0, r3 + 8041016: f005 fca5 bl 8046964 + 804101a: 4601 mov r1, r0 + 804101c: 697b ldr r3, [r7, #20] + 804101e: 3304 adds r3, #4 + 8041020: 461a mov r2, r3 + 8041022: 4620 mov r0, r4 + 8041024: f7ff fa30 bl 8040488 + 8041028: 4603 mov r3, r0 + 804102a: 461a mov r2, r3 + 804102c: 697b ldr r3, [r7, #20] + 804102e: 865a strh r2, [r3, #50] ; 0x32 rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK); - 8040ff0: 2112 movs r1, #18 - 8040ff2: 6978 ldr r0, [r7, #20] - 8040ff4: f002 fc9c bl 8043930 - 8040ff8: 4603 mov r3, r0 - 8040ffa: 73fb strb r3, [r7, #15] + 8041030: 2112 movs r1, #18 + 8041032: 6978 ldr r0, [r7, #20] + 8041034: f002 fc9c bl 8043970 + 8041038: 4603 mov r3, r0 + 804103a: 73fb strb r3, [r7, #15] if (rc != ERR_OK) { - 8040ffc: f997 300f ldrsb.w r3, [r7, #15] - 8041000: 2b00 cmp r3, #0 - 8041002: d004 beq.n 804100e + 804103c: f997 300f ldrsb.w r3, [r7, #15] + 8041040: 2b00 cmp r3, #0 + 8041042: d004 beq.n 804104e tcp_abandon(npcb, 0); - 8041004: 2100 movs r1, #0 - 8041006: 6978 ldr r0, [r7, #20] - 8041008: f7fe f97e bl 803f308 + 8041044: 2100 movs r1, #0 + 8041046: 6978 ldr r0, [r7, #20] + 8041048: f7fe f97e bl 803f348 return; - 804100c: e006 b.n 804101c + 804104c: e006 b.n 804105c tcp_output(npcb); - 804100e: 6978 ldr r0, [r7, #20] - 8041010: f002 fd7c bl 8043b0c + 804104e: 6978 ldr r0, [r7, #20] + 8041050: f002 fd7c bl 8043b4c return; - 8041014: e001 b.n 804101a + 8041054: e001 b.n 804105a return; - 8041016: bf00 nop - 8041018: e000 b.n 804101c + 8041056: bf00 nop + 8041058: e000 b.n 804105c return; - 804101a: bf00 nop -} - 804101c: 371c adds r7, #28 - 804101e: 46bd mov sp, r7 - 8041020: bd90 pop {r4, r7, pc} - 8041022: bf00 nop - 8041024: 2400eb2c .word 0x2400eb2c - 8041028: 0804b398 .word 0x0804b398 - 804102c: 0804b590 .word 0x0804b590 - 8041030: 0804b3e4 .word 0x0804b3e4 - 8041034: 2400eb24 .word 0x2400eb24 - 8041038: 2400eb2a .word 0x2400eb2a - 804103c: 2400eb20 .word 0x2400eb20 - 8041040: 2400eb10 .word 0x2400eb10 - 8041044: 2400bb5c .word 0x2400bb5c - 8041048: 2400bb60 .word 0x2400bb60 - 804104c: 2400bb4c .word 0x2400bb4c - 8041050: 2400eaf4 .word 0x2400eaf4 - 8041054: 2400eafc .word 0x2400eafc - -08041058 : + 804105a: bf00 nop +} + 804105c: 371c adds r7, #28 + 804105e: 46bd mov sp, r7 + 8041060: bd90 pop {r4, r7, pc} + 8041062: bf00 nop + 8041064: 2400eb2c .word 0x2400eb2c + 8041068: 0804b3d8 .word 0x0804b3d8 + 804106c: 0804b5d0 .word 0x0804b5d0 + 8041070: 0804b424 .word 0x0804b424 + 8041074: 2400eb24 .word 0x2400eb24 + 8041078: 2400eb2a .word 0x2400eb2a + 804107c: 2400eb20 .word 0x2400eb20 + 8041080: 2400eb10 .word 0x2400eb10 + 8041084: 2400bb5c .word 0x2400bb5c + 8041088: 2400bb60 .word 0x2400bb60 + 804108c: 2400bb4c .word 0x2400bb4c + 8041090: 2400eaf4 .word 0x2400eaf4 + 8041094: 2400eafc .word 0x2400eafc + +08041098 : * @note the segment which arrived is saved in global variables, therefore only the pcb * involved is passed as a parameter to this function */ static void tcp_timewait_input(struct tcp_pcb *pcb) { - 8041058: b580 push {r7, lr} - 804105a: b086 sub sp, #24 - 804105c: af04 add r7, sp, #16 - 804105e: 6078 str r0, [r7, #4] + 8041098: b580 push {r7, lr} + 804109a: b086 sub sp, #24 + 804109c: af04 add r7, sp, #16 + 804109e: 6078 str r0, [r7, #4] /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */ /* RFC 793 3.9 Event Processing - Segment Arrives: * - first check sequence number - we skip that one in TIME_WAIT (always * acceptable since we only send ACKs) * - second check the RST bit (... return) */ if (flags & TCP_RST) { - 8041060: 4b2f ldr r3, [pc, #188] ; (8041120 ) - 8041062: 781b ldrb r3, [r3, #0] - 8041064: f003 0304 and.w r3, r3, #4 - 8041068: 2b00 cmp r3, #0 - 804106a: d153 bne.n 8041114 + 80410a0: 4b2f ldr r3, [pc, #188] ; (8041160 ) + 80410a2: 781b ldrb r3, [r3, #0] + 80410a4: f003 0304 and.w r3, r3, #4 + 80410a8: 2b00 cmp r3, #0 + 80410aa: d153 bne.n 8041154 return; } LWIP_ASSERT("tcp_timewait_input: invalid pcb", pcb != NULL); - 804106c: 687b ldr r3, [r7, #4] - 804106e: 2b00 cmp r3, #0 - 8041070: d106 bne.n 8041080 - 8041072: 4b2c ldr r3, [pc, #176] ; (8041124 ) - 8041074: f240 22ee movw r2, #750 ; 0x2ee - 8041078: 492b ldr r1, [pc, #172] ; (8041128 ) - 804107a: 482c ldr r0, [pc, #176] ; (804112c ) - 804107c: f006 ff92 bl 8047fa4 + 80410ac: 687b ldr r3, [r7, #4] + 80410ae: 2b00 cmp r3, #0 + 80410b0: d106 bne.n 80410c0 + 80410b2: 4b2c ldr r3, [pc, #176] ; (8041164 ) + 80410b4: f240 22ee movw r2, #750 ; 0x2ee + 80410b8: 492b ldr r1, [pc, #172] ; (8041168 ) + 80410ba: 482c ldr r0, [pc, #176] ; (804116c ) + 80410bc: f006 ff92 bl 8047fe4 /* - fourth, check the SYN bit, */ if (flags & TCP_SYN) { - 8041080: 4b27 ldr r3, [pc, #156] ; (8041120 ) - 8041082: 781b ldrb r3, [r3, #0] - 8041084: f003 0302 and.w r3, r3, #2 - 8041088: 2b00 cmp r3, #0 - 804108a: d02a beq.n 80410e2 + 80410c0: 4b27 ldr r3, [pc, #156] ; (8041160 ) + 80410c2: 781b ldrb r3, [r3, #0] + 80410c4: f003 0302 and.w r3, r3, #2 + 80410c8: 2b00 cmp r3, #0 + 80410ca: d02a beq.n 8041122 /* If an incoming segment is not acceptable, an acknowledgment should be sent in reply */ if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd)) { - 804108c: 4b28 ldr r3, [pc, #160] ; (8041130 ) - 804108e: 681a ldr r2, [r3, #0] - 8041090: 687b ldr r3, [r7, #4] - 8041092: 6a5b ldr r3, [r3, #36] ; 0x24 - 8041094: 1ad3 subs r3, r2, r3 - 8041096: 2b00 cmp r3, #0 - 8041098: db2d blt.n 80410f6 - 804109a: 4b25 ldr r3, [pc, #148] ; (8041130 ) - 804109c: 681a ldr r2, [r3, #0] - 804109e: 687b ldr r3, [r7, #4] - 80410a0: 6a5b ldr r3, [r3, #36] ; 0x24 - 80410a2: 6879 ldr r1, [r7, #4] - 80410a4: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80410a6: 440b add r3, r1 - 80410a8: 1ad3 subs r3, r2, r3 - 80410aa: 2b00 cmp r3, #0 - 80410ac: dc23 bgt.n 80410f6 + 80410cc: 4b28 ldr r3, [pc, #160] ; (8041170 ) + 80410ce: 681a ldr r2, [r3, #0] + 80410d0: 687b ldr r3, [r7, #4] + 80410d2: 6a5b ldr r3, [r3, #36] ; 0x24 + 80410d4: 1ad3 subs r3, r2, r3 + 80410d6: 2b00 cmp r3, #0 + 80410d8: db2d blt.n 8041136 + 80410da: 4b25 ldr r3, [pc, #148] ; (8041170 ) + 80410dc: 681a ldr r2, [r3, #0] + 80410de: 687b ldr r3, [r7, #4] + 80410e0: 6a5b ldr r3, [r3, #36] ; 0x24 + 80410e2: 6879 ldr r1, [r7, #4] + 80410e4: 8d09 ldrh r1, [r1, #40] ; 0x28 + 80410e6: 440b add r3, r1 + 80410e8: 1ad3 subs r3, r2, r3 + 80410ea: 2b00 cmp r3, #0 + 80410ec: dc23 bgt.n 8041136 /* If the SYN is in the window it is an error, send a reset */ tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 80410ae: 4b21 ldr r3, [pc, #132] ; (8041134 ) - 80410b0: 6819 ldr r1, [r3, #0] - 80410b2: 4b21 ldr r3, [pc, #132] ; (8041138 ) - 80410b4: 881b ldrh r3, [r3, #0] - 80410b6: 461a mov r2, r3 - 80410b8: 4b1d ldr r3, [pc, #116] ; (8041130 ) - 80410ba: 681b ldr r3, [r3, #0] - 80410bc: 18d0 adds r0, r2, r3 + 80410ee: 4b21 ldr r3, [pc, #132] ; (8041174 ) + 80410f0: 6819 ldr r1, [r3, #0] + 80410f2: 4b21 ldr r3, [pc, #132] ; (8041178 ) + 80410f4: 881b ldrh r3, [r3, #0] + 80410f6: 461a mov r2, r3 + 80410f8: 4b1d ldr r3, [pc, #116] ; (8041170 ) + 80410fa: 681b ldr r3, [r3, #0] + 80410fc: 18d0 adds r0, r2, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 80410be: 4b1f ldr r3, [pc, #124] ; (804113c ) - 80410c0: 681b ldr r3, [r3, #0] + 80410fe: 4b1f ldr r3, [pc, #124] ; (804117c ) + 8041100: 681b ldr r3, [r3, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 80410c2: 885b ldrh r3, [r3, #2] - 80410c4: b29b uxth r3, r3 + 8041102: 885b ldrh r3, [r3, #2] + 8041104: b29b uxth r3, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 80410c6: 4a1d ldr r2, [pc, #116] ; (804113c ) - 80410c8: 6812 ldr r2, [r2, #0] + 8041106: 4a1d ldr r2, [pc, #116] ; (804117c ) + 8041108: 6812 ldr r2, [r2, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 80410ca: 8812 ldrh r2, [r2, #0] - 80410cc: b292 uxth r2, r2 - 80410ce: 9202 str r2, [sp, #8] - 80410d0: 9301 str r3, [sp, #4] - 80410d2: 4b1b ldr r3, [pc, #108] ; (8041140 ) - 80410d4: 9300 str r3, [sp, #0] - 80410d6: 4b1b ldr r3, [pc, #108] ; (8041144 ) - 80410d8: 4602 mov r2, r0 - 80410da: 6878 ldr r0, [r7, #4] - 80410dc: f003 faca bl 8044674 + 804110a: 8812 ldrh r2, [r2, #0] + 804110c: b292 uxth r2, r2 + 804110e: 9202 str r2, [sp, #8] + 8041110: 9301 str r3, [sp, #4] + 8041112: 4b1b ldr r3, [pc, #108] ; (8041180 ) + 8041114: 9300 str r3, [sp, #0] + 8041116: 4b1b ldr r3, [pc, #108] ; (8041184 ) + 8041118: 4602 mov r2, r0 + 804111a: 6878 ldr r0, [r7, #4] + 804111c: f003 faca bl 80446b4 return; - 80410e0: e01b b.n 804111a + 8041120: e01b b.n 804115a } } else if (flags & TCP_FIN) { - 80410e2: 4b0f ldr r3, [pc, #60] ; (8041120 ) - 80410e4: 781b ldrb r3, [r3, #0] - 80410e6: f003 0301 and.w r3, r3, #1 - 80410ea: 2b00 cmp r3, #0 - 80410ec: d003 beq.n 80410f6 + 8041122: 4b0f ldr r3, [pc, #60] ; (8041160 ) + 8041124: 781b ldrb r3, [r3, #0] + 8041126: f003 0301 and.w r3, r3, #1 + 804112a: 2b00 cmp r3, #0 + 804112c: d003 beq.n 8041136 /* - eighth, check the FIN bit: Remain in the TIME-WAIT state. Restart the 2 MSL time-wait timeout.*/ pcb->tmr = tcp_ticks; - 80410ee: 4b16 ldr r3, [pc, #88] ; (8041148 ) - 80410f0: 681a ldr r2, [r3, #0] - 80410f2: 687b ldr r3, [r7, #4] - 80410f4: 621a str r2, [r3, #32] + 804112e: 4b16 ldr r3, [pc, #88] ; (8041188 ) + 8041130: 681a ldr r2, [r3, #0] + 8041132: 687b ldr r3, [r7, #4] + 8041134: 621a str r2, [r3, #32] } if ((tcplen > 0)) { - 80410f6: 4b10 ldr r3, [pc, #64] ; (8041138 ) - 80410f8: 881b ldrh r3, [r3, #0] - 80410fa: 2b00 cmp r3, #0 - 80410fc: d00c beq.n 8041118 + 8041136: 4b10 ldr r3, [pc, #64] ; (8041178 ) + 8041138: 881b ldrh r3, [r3, #0] + 804113a: 2b00 cmp r3, #0 + 804113c: d00c beq.n 8041158 /* Acknowledge data, FIN or out-of-window SYN */ tcp_ack_now(pcb); - 80410fe: 687b ldr r3, [r7, #4] - 8041100: 8b5b ldrh r3, [r3, #26] - 8041102: f043 0302 orr.w r3, r3, #2 - 8041106: b29a uxth r2, r3 - 8041108: 687b ldr r3, [r7, #4] - 804110a: 835a strh r2, [r3, #26] + 804113e: 687b ldr r3, [r7, #4] + 8041140: 8b5b ldrh r3, [r3, #26] + 8041142: f043 0302 orr.w r3, r3, #2 + 8041146: b29a uxth r2, r3 + 8041148: 687b ldr r3, [r7, #4] + 804114a: 835a strh r2, [r3, #26] tcp_output(pcb); - 804110c: 6878 ldr r0, [r7, #4] - 804110e: f002 fcfd bl 8043b0c + 804114c: 6878 ldr r0, [r7, #4] + 804114e: f002 fcfd bl 8043b4c } return; - 8041112: e001 b.n 8041118 + 8041152: e001 b.n 8041158 return; - 8041114: bf00 nop - 8041116: e000 b.n 804111a + 8041154: bf00 nop + 8041156: e000 b.n 804115a return; - 8041118: bf00 nop -} - 804111a: 3708 adds r7, #8 - 804111c: 46bd mov sp, r7 - 804111e: bd80 pop {r7, pc} - 8041120: 2400eb2c .word 0x2400eb2c - 8041124: 0804b398 .word 0x0804b398 - 8041128: 0804b5b0 .word 0x0804b5b0 - 804112c: 0804b3e4 .word 0x0804b3e4 - 8041130: 2400eb20 .word 0x2400eb20 - 8041134: 2400eb24 .word 0x2400eb24 - 8041138: 2400eb2a .word 0x2400eb2a - 804113c: 2400eb10 .word 0x2400eb10 - 8041140: 2400bb5c .word 0x2400bb5c - 8041144: 2400bb60 .word 0x2400bb60 - 8041148: 2400eae8 .word 0x2400eae8 - -0804114c : + 8041158: bf00 nop +} + 804115a: 3708 adds r7, #8 + 804115c: 46bd mov sp, r7 + 804115e: bd80 pop {r7, pc} + 8041160: 2400eb2c .word 0x2400eb2c + 8041164: 0804b3d8 .word 0x0804b3d8 + 8041168: 0804b5f0 .word 0x0804b5f0 + 804116c: 0804b424 .word 0x0804b424 + 8041170: 2400eb20 .word 0x2400eb20 + 8041174: 2400eb24 .word 0x2400eb24 + 8041178: 2400eb2a .word 0x2400eb2a + 804117c: 2400eb10 .word 0x2400eb10 + 8041180: 2400bb5c .word 0x2400bb5c + 8041184: 2400bb60 .word 0x2400bb60 + 8041188: 2400eae8 .word 0x2400eae8 + +0804118c : * @note the segment which arrived is saved in global variables, therefore only the pcb * involved is passed as a parameter to this function */ static err_t tcp_process(struct tcp_pcb *pcb) { - 804114c: b590 push {r4, r7, lr} - 804114e: b08d sub sp, #52 ; 0x34 - 8041150: af04 add r7, sp, #16 - 8041152: 6078 str r0, [r7, #4] + 804118c: b590 push {r4, r7, lr} + 804118e: b08d sub sp, #52 ; 0x34 + 8041190: af04 add r7, sp, #16 + 8041192: 6078 str r0, [r7, #4] struct tcp_seg *rseg; u8_t acceptable = 0; - 8041154: 2300 movs r3, #0 - 8041156: 76fb strb r3, [r7, #27] + 8041194: 2300 movs r3, #0 + 8041196: 76fb strb r3, [r7, #27] err_t err; err = ERR_OK; - 8041158: 2300 movs r3, #0 - 804115a: 76bb strb r3, [r7, #26] + 8041198: 2300 movs r3, #0 + 804119a: 76bb strb r3, [r7, #26] LWIP_ASSERT("tcp_process: invalid pcb", pcb != NULL); - 804115c: 687b ldr r3, [r7, #4] - 804115e: 2b00 cmp r3, #0 - 8041160: d106 bne.n 8041170 - 8041162: 4b9d ldr r3, [pc, #628] ; (80413d8 ) - 8041164: f44f 7247 mov.w r2, #796 ; 0x31c - 8041168: 499c ldr r1, [pc, #624] ; (80413dc ) - 804116a: 489d ldr r0, [pc, #628] ; (80413e0 ) - 804116c: f006 ff1a bl 8047fa4 + 804119c: 687b ldr r3, [r7, #4] + 804119e: 2b00 cmp r3, #0 + 80411a0: d106 bne.n 80411b0 + 80411a2: 4b9d ldr r3, [pc, #628] ; (8041418 ) + 80411a4: f44f 7247 mov.w r2, #796 ; 0x31c + 80411a8: 499c ldr r1, [pc, #624] ; (804141c ) + 80411aa: 489d ldr r0, [pc, #628] ; (8041420 ) + 80411ac: f006 ff1a bl 8047fe4 /* Process incoming RST segments. */ if (flags & TCP_RST) { - 8041170: 4b9c ldr r3, [pc, #624] ; (80413e4 ) - 8041172: 781b ldrb r3, [r3, #0] - 8041174: f003 0304 and.w r3, r3, #4 - 8041178: 2b00 cmp r3, #0 - 804117a: d04e beq.n 804121a + 80411b0: 4b9c ldr r3, [pc, #624] ; (8041424 ) + 80411b2: 781b ldrb r3, [r3, #0] + 80411b4: f003 0304 and.w r3, r3, #4 + 80411b8: 2b00 cmp r3, #0 + 80411ba: d04e beq.n 804125a /* First, determine if the reset is acceptable. */ if (pcb->state == SYN_SENT) { - 804117c: 687b ldr r3, [r7, #4] - 804117e: 7d1b ldrb r3, [r3, #20] - 8041180: 2b02 cmp r3, #2 - 8041182: d108 bne.n 8041196 + 80411bc: 687b ldr r3, [r7, #4] + 80411be: 7d1b ldrb r3, [r3, #20] + 80411c0: 2b02 cmp r3, #2 + 80411c2: d108 bne.n 80411d6 /* "In the SYN-SENT state (a RST received in response to an initial SYN), the RST is acceptable if the ACK field acknowledges the SYN." */ if (ackno == pcb->snd_nxt) { - 8041184: 687b ldr r3, [r7, #4] - 8041186: 6d1a ldr r2, [r3, #80] ; 0x50 - 8041188: 4b97 ldr r3, [pc, #604] ; (80413e8 ) - 804118a: 681b ldr r3, [r3, #0] - 804118c: 429a cmp r2, r3 - 804118e: d123 bne.n 80411d8 + 80411c4: 687b ldr r3, [r7, #4] + 80411c6: 6d1a ldr r2, [r3, #80] ; 0x50 + 80411c8: 4b97 ldr r3, [pc, #604] ; (8041428 ) + 80411ca: 681b ldr r3, [r3, #0] + 80411cc: 429a cmp r2, r3 + 80411ce: d123 bne.n 8041218 acceptable = 1; - 8041190: 2301 movs r3, #1 - 8041192: 76fb strb r3, [r7, #27] - 8041194: e020 b.n 80411d8 + 80411d0: 2301 movs r3, #1 + 80411d2: 76fb strb r3, [r7, #27] + 80411d4: e020 b.n 8041218 } } else { /* "In all states except SYN-SENT, all reset (RST) segments are validated by checking their SEQ-fields." */ if (seqno == pcb->rcv_nxt) { - 8041196: 687b ldr r3, [r7, #4] - 8041198: 6a5a ldr r2, [r3, #36] ; 0x24 - 804119a: 4b94 ldr r3, [pc, #592] ; (80413ec ) - 804119c: 681b ldr r3, [r3, #0] - 804119e: 429a cmp r2, r3 - 80411a0: d102 bne.n 80411a8 + 80411d6: 687b ldr r3, [r7, #4] + 80411d8: 6a5a ldr r2, [r3, #36] ; 0x24 + 80411da: 4b94 ldr r3, [pc, #592] ; (804142c ) + 80411dc: 681b ldr r3, [r3, #0] + 80411de: 429a cmp r2, r3 + 80411e0: d102 bne.n 80411e8 acceptable = 1; - 80411a2: 2301 movs r3, #1 - 80411a4: 76fb strb r3, [r7, #27] - 80411a6: e017 b.n 80411d8 + 80411e2: 2301 movs r3, #1 + 80411e4: 76fb strb r3, [r7, #27] + 80411e6: e017 b.n 8041218 } else if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 80411a8: 4b90 ldr r3, [pc, #576] ; (80413ec ) - 80411aa: 681a ldr r2, [r3, #0] - 80411ac: 687b ldr r3, [r7, #4] - 80411ae: 6a5b ldr r3, [r3, #36] ; 0x24 - 80411b0: 1ad3 subs r3, r2, r3 - 80411b2: 2b00 cmp r3, #0 - 80411b4: db10 blt.n 80411d8 - 80411b6: 4b8d ldr r3, [pc, #564] ; (80413ec ) - 80411b8: 681a ldr r2, [r3, #0] - 80411ba: 687b ldr r3, [r7, #4] - 80411bc: 6a5b ldr r3, [r3, #36] ; 0x24 - 80411be: 6879 ldr r1, [r7, #4] - 80411c0: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80411c2: 440b add r3, r1 - 80411c4: 1ad3 subs r3, r2, r3 - 80411c6: 2b00 cmp r3, #0 - 80411c8: dc06 bgt.n 80411d8 + 80411e8: 4b90 ldr r3, [pc, #576] ; (804142c ) + 80411ea: 681a ldr r2, [r3, #0] + 80411ec: 687b ldr r3, [r7, #4] + 80411ee: 6a5b ldr r3, [r3, #36] ; 0x24 + 80411f0: 1ad3 subs r3, r2, r3 + 80411f2: 2b00 cmp r3, #0 + 80411f4: db10 blt.n 8041218 + 80411f6: 4b8d ldr r3, [pc, #564] ; (804142c ) + 80411f8: 681a ldr r2, [r3, #0] + 80411fa: 687b ldr r3, [r7, #4] + 80411fc: 6a5b ldr r3, [r3, #36] ; 0x24 + 80411fe: 6879 ldr r1, [r7, #4] + 8041200: 8d09 ldrh r1, [r1, #40] ; 0x28 + 8041202: 440b add r3, r1 + 8041204: 1ad3 subs r3, r2, r3 + 8041206: 2b00 cmp r3, #0 + 8041208: dc06 bgt.n 8041218 pcb->rcv_nxt + pcb->rcv_wnd)) { /* If the sequence number is inside the window, we send a challenge ACK and wait for a re-send with matching sequence number. This follows RFC 5961 section 3.2 and addresses CVE-2004-0230 (RST spoofing attack), which is present in RFC 793 RST handling. */ tcp_ack_now(pcb); - 80411ca: 687b ldr r3, [r7, #4] - 80411cc: 8b5b ldrh r3, [r3, #26] - 80411ce: f043 0302 orr.w r3, r3, #2 - 80411d2: b29a uxth r2, r3 - 80411d4: 687b ldr r3, [r7, #4] - 80411d6: 835a strh r2, [r3, #26] + 804120a: 687b ldr r3, [r7, #4] + 804120c: 8b5b ldrh r3, [r3, #26] + 804120e: f043 0302 orr.w r3, r3, #2 + 8041212: b29a uxth r2, r3 + 8041214: 687b ldr r3, [r7, #4] + 8041216: 835a strh r2, [r3, #26] } } if (acceptable) { - 80411d8: 7efb ldrb r3, [r7, #27] - 80411da: 2b00 cmp r3, #0 - 80411dc: d01b beq.n 8041216 + 8041218: 7efb ldrb r3, [r7, #27] + 804121a: 2b00 cmp r3, #0 + 804121c: d01b beq.n 8041256 LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n")); LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED); - 80411de: 687b ldr r3, [r7, #4] - 80411e0: 7d1b ldrb r3, [r3, #20] - 80411e2: 2b00 cmp r3, #0 - 80411e4: d106 bne.n 80411f4 - 80411e6: 4b7c ldr r3, [pc, #496] ; (80413d8 ) - 80411e8: f44f 724e mov.w r2, #824 ; 0x338 - 80411ec: 4980 ldr r1, [pc, #512] ; (80413f0 ) - 80411ee: 487c ldr r0, [pc, #496] ; (80413e0 ) - 80411f0: f006 fed8 bl 8047fa4 + 804121e: 687b ldr r3, [r7, #4] + 8041220: 7d1b ldrb r3, [r3, #20] + 8041222: 2b00 cmp r3, #0 + 8041224: d106 bne.n 8041234 + 8041226: 4b7c ldr r3, [pc, #496] ; (8041418 ) + 8041228: f44f 724e mov.w r2, #824 ; 0x338 + 804122c: 4980 ldr r1, [pc, #512] ; (8041430 ) + 804122e: 487c ldr r0, [pc, #496] ; (8041420 ) + 8041230: f006 fed8 bl 8047fe4 recv_flags |= TF_RESET; - 80411f4: 4b7f ldr r3, [pc, #508] ; (80413f4 ) - 80411f6: 781b ldrb r3, [r3, #0] - 80411f8: f043 0308 orr.w r3, r3, #8 - 80411fc: b2da uxtb r2, r3 - 80411fe: 4b7d ldr r3, [pc, #500] ; (80413f4 ) - 8041200: 701a strb r2, [r3, #0] + 8041234: 4b7f ldr r3, [pc, #508] ; (8041434 ) + 8041236: 781b ldrb r3, [r3, #0] + 8041238: f043 0308 orr.w r3, r3, #8 + 804123c: b2da uxtb r2, r3 + 804123e: 4b7d ldr r3, [pc, #500] ; (8041434 ) + 8041240: 701a strb r2, [r3, #0] tcp_clear_flags(pcb, TF_ACK_DELAY); - 8041202: 687b ldr r3, [r7, #4] - 8041204: 8b5b ldrh r3, [r3, #26] - 8041206: f023 0301 bic.w r3, r3, #1 - 804120a: b29a uxth r2, r3 - 804120c: 687b ldr r3, [r7, #4] - 804120e: 835a strh r2, [r3, #26] + 8041242: 687b ldr r3, [r7, #4] + 8041244: 8b5b ldrh r3, [r3, #26] + 8041246: f023 0301 bic.w r3, r3, #1 + 804124a: b29a uxth r2, r3 + 804124c: 687b ldr r3, [r7, #4] + 804124e: 835a strh r2, [r3, #26] return ERR_RST; - 8041210: f06f 030d mvn.w r3, #13 - 8041214: e37a b.n 804190c + 8041250: f06f 030d mvn.w r3, #13 + 8041254: e37a b.n 804194c } else { LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", seqno, pcb->rcv_nxt)); LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", seqno, pcb->rcv_nxt)); return ERR_OK; - 8041216: 2300 movs r3, #0 - 8041218: e378 b.n 804190c + 8041256: 2300 movs r3, #0 + 8041258: e378 b.n 804194c } } if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) { - 804121a: 4b72 ldr r3, [pc, #456] ; (80413e4 ) - 804121c: 781b ldrb r3, [r3, #0] - 804121e: f003 0302 and.w r3, r3, #2 - 8041222: 2b00 cmp r3, #0 - 8041224: d010 beq.n 8041248 - 8041226: 687b ldr r3, [r7, #4] - 8041228: 7d1b ldrb r3, [r3, #20] - 804122a: 2b02 cmp r3, #2 - 804122c: d00c beq.n 8041248 - 804122e: 687b ldr r3, [r7, #4] - 8041230: 7d1b ldrb r3, [r3, #20] - 8041232: 2b03 cmp r3, #3 - 8041234: d008 beq.n 8041248 + 804125a: 4b72 ldr r3, [pc, #456] ; (8041424 ) + 804125c: 781b ldrb r3, [r3, #0] + 804125e: f003 0302 and.w r3, r3, #2 + 8041262: 2b00 cmp r3, #0 + 8041264: d010 beq.n 8041288 + 8041266: 687b ldr r3, [r7, #4] + 8041268: 7d1b ldrb r3, [r3, #20] + 804126a: 2b02 cmp r3, #2 + 804126c: d00c beq.n 8041288 + 804126e: 687b ldr r3, [r7, #4] + 8041270: 7d1b ldrb r3, [r3, #20] + 8041272: 2b03 cmp r3, #3 + 8041274: d008 beq.n 8041288 /* Cope with new connection attempt after remote end crashed */ tcp_ack_now(pcb); - 8041236: 687b ldr r3, [r7, #4] - 8041238: 8b5b ldrh r3, [r3, #26] - 804123a: f043 0302 orr.w r3, r3, #2 - 804123e: b29a uxth r2, r3 - 8041240: 687b ldr r3, [r7, #4] - 8041242: 835a strh r2, [r3, #26] + 8041276: 687b ldr r3, [r7, #4] + 8041278: 8b5b ldrh r3, [r3, #26] + 804127a: f043 0302 orr.w r3, r3, #2 + 804127e: b29a uxth r2, r3 + 8041280: 687b ldr r3, [r7, #4] + 8041282: 835a strh r2, [r3, #26] return ERR_OK; - 8041244: 2300 movs r3, #0 - 8041246: e361 b.n 804190c + 8041284: 2300 movs r3, #0 + 8041286: e361 b.n 804194c } if ((pcb->flags & TF_RXCLOSED) == 0) { - 8041248: 687b ldr r3, [r7, #4] - 804124a: 8b5b ldrh r3, [r3, #26] - 804124c: f003 0310 and.w r3, r3, #16 - 8041250: 2b00 cmp r3, #0 - 8041252: d103 bne.n 804125c + 8041288: 687b ldr r3, [r7, #4] + 804128a: 8b5b ldrh r3, [r3, #26] + 804128c: f003 0310 and.w r3, r3, #16 + 8041290: 2b00 cmp r3, #0 + 8041292: d103 bne.n 804129c /* Update the PCB (in)activity timer unless rx is closed (see tcp_shutdown) */ pcb->tmr = tcp_ticks; - 8041254: 4b68 ldr r3, [pc, #416] ; (80413f8 ) - 8041256: 681a ldr r2, [r3, #0] - 8041258: 687b ldr r3, [r7, #4] - 804125a: 621a str r2, [r3, #32] + 8041294: 4b68 ldr r3, [pc, #416] ; (8041438 ) + 8041296: 681a ldr r2, [r3, #0] + 8041298: 687b ldr r3, [r7, #4] + 804129a: 621a str r2, [r3, #32] } pcb->keep_cnt_sent = 0; - 804125c: 687b ldr r3, [r7, #4] - 804125e: 2200 movs r2, #0 - 8041260: f883 209b strb.w r2, [r3, #155] ; 0x9b + 804129c: 687b ldr r3, [r7, #4] + 804129e: 2200 movs r2, #0 + 80412a0: f883 209b strb.w r2, [r3, #155] ; 0x9b pcb->persist_probe = 0; - 8041264: 687b ldr r3, [r7, #4] - 8041266: 2200 movs r2, #0 - 8041268: f883 209a strb.w r2, [r3, #154] ; 0x9a + 80412a4: 687b ldr r3, [r7, #4] + 80412a6: 2200 movs r2, #0 + 80412a8: f883 209a strb.w r2, [r3, #154] ; 0x9a tcp_parseopt(pcb); - 804126c: 6878 ldr r0, [r7, #4] - 804126e: f001 fc2f bl 8042ad0 + 80412ac: 6878 ldr r0, [r7, #4] + 80412ae: f001 fc2f bl 8042b10 /* Do different things depending on the TCP state. */ switch (pcb->state) { - 8041272: 687b ldr r3, [r7, #4] - 8041274: 7d1b ldrb r3, [r3, #20] - 8041276: 3b02 subs r3, #2 - 8041278: 2b07 cmp r3, #7 - 804127a: f200 8337 bhi.w 80418ec - 804127e: a201 add r2, pc, #4 ; (adr r2, 8041284 ) - 8041280: f852 f023 ldr.w pc, [r2, r3, lsl #2] - 8041284: 080412a5 .word 0x080412a5 - 8041288: 080414d5 .word 0x080414d5 - 804128c: 0804164d .word 0x0804164d - 8041290: 08041677 .word 0x08041677 - 8041294: 0804179b .word 0x0804179b - 8041298: 0804164d .word 0x0804164d - 804129c: 08041827 .word 0x08041827 - 80412a0: 080418b7 .word 0x080418b7 + 80412b2: 687b ldr r3, [r7, #4] + 80412b4: 7d1b ldrb r3, [r3, #20] + 80412b6: 3b02 subs r3, #2 + 80412b8: 2b07 cmp r3, #7 + 80412ba: f200 8337 bhi.w 804192c + 80412be: a201 add r2, pc, #4 ; (adr r2, 80412c4 ) + 80412c0: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 80412c4: 080412e5 .word 0x080412e5 + 80412c8: 08041515 .word 0x08041515 + 80412cc: 0804168d .word 0x0804168d + 80412d0: 080416b7 .word 0x080416b7 + 80412d4: 080417db .word 0x080417db + 80412d8: 0804168d .word 0x0804168d + 80412dc: 08041867 .word 0x08041867 + 80412e0: 080418f7 .word 0x080418f7 case SYN_SENT: LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno, pcb->snd_nxt, lwip_ntohl(pcb->unacked->tcphdr->seqno))); /* received SYN ACK with expected sequence number? */ if ((flags & TCP_ACK) && (flags & TCP_SYN) - 80412a4: 4b4f ldr r3, [pc, #316] ; (80413e4 ) - 80412a6: 781b ldrb r3, [r3, #0] - 80412a8: f003 0310 and.w r3, r3, #16 - 80412ac: 2b00 cmp r3, #0 - 80412ae: f000 80e4 beq.w 804147a - 80412b2: 4b4c ldr r3, [pc, #304] ; (80413e4 ) - 80412b4: 781b ldrb r3, [r3, #0] - 80412b6: f003 0302 and.w r3, r3, #2 - 80412ba: 2b00 cmp r3, #0 - 80412bc: f000 80dd beq.w 804147a + 80412e4: 4b4f ldr r3, [pc, #316] ; (8041424 ) + 80412e6: 781b ldrb r3, [r3, #0] + 80412e8: f003 0310 and.w r3, r3, #16 + 80412ec: 2b00 cmp r3, #0 + 80412ee: f000 80e4 beq.w 80414ba + 80412f2: 4b4c ldr r3, [pc, #304] ; (8041424 ) + 80412f4: 781b ldrb r3, [r3, #0] + 80412f6: f003 0302 and.w r3, r3, #2 + 80412fa: 2b00 cmp r3, #0 + 80412fc: f000 80dd beq.w 80414ba && (ackno == pcb->lastack + 1)) { - 80412c0: 687b ldr r3, [r7, #4] - 80412c2: 6c5b ldr r3, [r3, #68] ; 0x44 - 80412c4: 1c5a adds r2, r3, #1 - 80412c6: 4b48 ldr r3, [pc, #288] ; (80413e8 ) - 80412c8: 681b ldr r3, [r3, #0] - 80412ca: 429a cmp r2, r3 - 80412cc: f040 80d5 bne.w 804147a + 8041300: 687b ldr r3, [r7, #4] + 8041302: 6c5b ldr r3, [r3, #68] ; 0x44 + 8041304: 1c5a adds r2, r3, #1 + 8041306: 4b48 ldr r3, [pc, #288] ; (8041428 ) + 8041308: 681b ldr r3, [r3, #0] + 804130a: 429a cmp r2, r3 + 804130c: f040 80d5 bne.w 80414ba pcb->rcv_nxt = seqno + 1; - 80412d0: 4b46 ldr r3, [pc, #280] ; (80413ec ) - 80412d2: 681b ldr r3, [r3, #0] - 80412d4: 1c5a adds r2, r3, #1 - 80412d6: 687b ldr r3, [r7, #4] - 80412d8: 625a str r2, [r3, #36] ; 0x24 + 8041310: 4b46 ldr r3, [pc, #280] ; (804142c ) + 8041312: 681b ldr r3, [r3, #0] + 8041314: 1c5a adds r2, r3, #1 + 8041316: 687b ldr r3, [r7, #4] + 8041318: 625a str r2, [r3, #36] ; 0x24 pcb->rcv_ann_right_edge = pcb->rcv_nxt; - 80412da: 687b ldr r3, [r7, #4] - 80412dc: 6a5a ldr r2, [r3, #36] ; 0x24 - 80412de: 687b ldr r3, [r7, #4] - 80412e0: 62da str r2, [r3, #44] ; 0x2c + 804131a: 687b ldr r3, [r7, #4] + 804131c: 6a5a ldr r2, [r3, #36] ; 0x24 + 804131e: 687b ldr r3, [r7, #4] + 8041320: 62da str r2, [r3, #44] ; 0x2c pcb->lastack = ackno; - 80412e2: 4b41 ldr r3, [pc, #260] ; (80413e8 ) - 80412e4: 681a ldr r2, [r3, #0] - 80412e6: 687b ldr r3, [r7, #4] - 80412e8: 645a str r2, [r3, #68] ; 0x44 + 8041322: 4b41 ldr r3, [pc, #260] ; (8041428 ) + 8041324: 681a ldr r2, [r3, #0] + 8041326: 687b ldr r3, [r7, #4] + 8041328: 645a str r2, [r3, #68] ; 0x44 pcb->snd_wnd = tcphdr->wnd; - 80412ea: 4b44 ldr r3, [pc, #272] ; (80413fc ) - 80412ec: 681b ldr r3, [r3, #0] - 80412ee: 89db ldrh r3, [r3, #14] - 80412f0: b29a uxth r2, r3 - 80412f2: 687b ldr r3, [r7, #4] - 80412f4: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 804132a: 4b44 ldr r3, [pc, #272] ; (804143c ) + 804132c: 681b ldr r3, [r3, #0] + 804132e: 89db ldrh r3, [r3, #14] + 8041330: b29a uxth r2, r3 + 8041332: 687b ldr r3, [r7, #4] + 8041334: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 pcb->snd_wnd_max = pcb->snd_wnd; - 80412f8: 687b ldr r3, [r7, #4] - 80412fa: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 80412fe: 687b ldr r3, [r7, #4] - 8041300: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 + 8041338: 687b ldr r3, [r7, #4] + 804133a: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 804133e: 687b ldr r3, [r7, #4] + 8041340: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ - 8041304: 4b39 ldr r3, [pc, #228] ; (80413ec ) - 8041306: 681b ldr r3, [r3, #0] - 8041308: 1e5a subs r2, r3, #1 - 804130a: 687b ldr r3, [r7, #4] - 804130c: 655a str r2, [r3, #84] ; 0x54 + 8041344: 4b39 ldr r3, [pc, #228] ; (804142c ) + 8041346: 681b ldr r3, [r3, #0] + 8041348: 1e5a subs r2, r3, #1 + 804134a: 687b ldr r3, [r7, #4] + 804134c: 655a str r2, [r3, #84] ; 0x54 pcb->state = ESTABLISHED; - 804130e: 687b ldr r3, [r7, #4] - 8041310: 2204 movs r2, #4 - 8041312: 751a strb r2, [r3, #20] + 804134e: 687b ldr r3, [r7, #4] + 8041350: 2204 movs r2, #4 + 8041352: 751a strb r2, [r3, #20] #if TCP_CALCULATE_EFF_SEND_MSS pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip); - 8041314: 687b ldr r3, [r7, #4] - 8041316: 8e5c ldrh r4, [r3, #50] ; 0x32 - 8041318: 687b ldr r3, [r7, #4] - 804131a: 3304 adds r3, #4 - 804131c: 4618 mov r0, r3 - 804131e: f005 fb01 bl 8046924 - 8041322: 4601 mov r1, r0 - 8041324: 687b ldr r3, [r7, #4] - 8041326: 3304 adds r3, #4 - 8041328: 461a mov r2, r3 - 804132a: 4620 mov r0, r4 - 804132c: f7ff f88c bl 8040448 - 8041330: 4603 mov r3, r0 - 8041332: 461a mov r2, r3 - 8041334: 687b ldr r3, [r7, #4] - 8041336: 865a strh r2, [r3, #50] ; 0x32 + 8041354: 687b ldr r3, [r7, #4] + 8041356: 8e5c ldrh r4, [r3, #50] ; 0x32 + 8041358: 687b ldr r3, [r7, #4] + 804135a: 3304 adds r3, #4 + 804135c: 4618 mov r0, r3 + 804135e: f005 fb01 bl 8046964 + 8041362: 4601 mov r1, r0 + 8041364: 687b ldr r3, [r7, #4] + 8041366: 3304 adds r3, #4 + 8041368: 461a mov r2, r3 + 804136a: 4620 mov r0, r4 + 804136c: f7ff f88c bl 8040488 + 8041370: 4603 mov r3, r0 + 8041372: 461a mov r2, r3 + 8041374: 687b ldr r3, [r7, #4] + 8041376: 865a strh r2, [r3, #50] ; 0x32 #endif /* TCP_CALCULATE_EFF_SEND_MSS */ pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss); - 8041338: 687b ldr r3, [r7, #4] - 804133a: 8e5b ldrh r3, [r3, #50] ; 0x32 - 804133c: 009a lsls r2, r3, #2 - 804133e: 687b ldr r3, [r7, #4] - 8041340: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041342: 005b lsls r3, r3, #1 - 8041344: f241 111c movw r1, #4380 ; 0x111c - 8041348: 428b cmp r3, r1 - 804134a: bf38 it cc - 804134c: 460b movcc r3, r1 - 804134e: 429a cmp r2, r3 - 8041350: d204 bcs.n 804135c - 8041352: 687b ldr r3, [r7, #4] - 8041354: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041356: 009b lsls r3, r3, #2 - 8041358: b29b uxth r3, r3 - 804135a: e00d b.n 8041378 - 804135c: 687b ldr r3, [r7, #4] - 804135e: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041360: 005b lsls r3, r3, #1 - 8041362: f241 121c movw r2, #4380 ; 0x111c - 8041366: 4293 cmp r3, r2 - 8041368: d904 bls.n 8041374 - 804136a: 687b ldr r3, [r7, #4] - 804136c: 8e5b ldrh r3, [r3, #50] ; 0x32 - 804136e: 005b lsls r3, r3, #1 - 8041370: b29b uxth r3, r3 - 8041372: e001 b.n 8041378 - 8041374: f241 131c movw r3, #4380 ; 0x111c - 8041378: 687a ldr r2, [r7, #4] - 804137a: f8a2 3048 strh.w r3, [r2, #72] ; 0x48 + 8041378: 687b ldr r3, [r7, #4] + 804137a: 8e5b ldrh r3, [r3, #50] ; 0x32 + 804137c: 009a lsls r2, r3, #2 + 804137e: 687b ldr r3, [r7, #4] + 8041380: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041382: 005b lsls r3, r3, #1 + 8041384: f241 111c movw r1, #4380 ; 0x111c + 8041388: 428b cmp r3, r1 + 804138a: bf38 it cc + 804138c: 460b movcc r3, r1 + 804138e: 429a cmp r2, r3 + 8041390: d204 bcs.n 804139c + 8041392: 687b ldr r3, [r7, #4] + 8041394: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041396: 009b lsls r3, r3, #2 + 8041398: b29b uxth r3, r3 + 804139a: e00d b.n 80413b8 + 804139c: 687b ldr r3, [r7, #4] + 804139e: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80413a0: 005b lsls r3, r3, #1 + 80413a2: f241 121c movw r2, #4380 ; 0x111c + 80413a6: 4293 cmp r3, r2 + 80413a8: d904 bls.n 80413b4 + 80413aa: 687b ldr r3, [r7, #4] + 80413ac: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80413ae: 005b lsls r3, r3, #1 + 80413b0: b29b uxth r3, r3 + 80413b2: e001 b.n 80413b8 + 80413b4: f241 131c movw r3, #4380 ; 0x111c + 80413b8: 687a ldr r2, [r7, #4] + 80413ba: f8a2 3048 strh.w r3, [r2, #72] ; 0x48 LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_process (SENT): cwnd %"TCPWNDSIZE_F " ssthresh %"TCPWNDSIZE_F"\n", pcb->cwnd, pcb->ssthresh)); LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0)); - 804137e: 687b ldr r3, [r7, #4] - 8041380: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8041384: 2b00 cmp r3, #0 - 8041386: d106 bne.n 8041396 - 8041388: 4b13 ldr r3, [pc, #76] ; (80413d8 ) - 804138a: f44f 725b mov.w r2, #876 ; 0x36c - 804138e: 491c ldr r1, [pc, #112] ; (8041400 ) - 8041390: 4813 ldr r0, [pc, #76] ; (80413e0 ) - 8041392: f006 fe07 bl 8047fa4 + 80413be: 687b ldr r3, [r7, #4] + 80413c0: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 80413c4: 2b00 cmp r3, #0 + 80413c6: d106 bne.n 80413d6 + 80413c8: 4b13 ldr r3, [pc, #76] ; (8041418 ) + 80413ca: f44f 725b mov.w r2, #876 ; 0x36c + 80413ce: 491c ldr r1, [pc, #112] ; (8041440 ) + 80413d0: 4813 ldr r0, [pc, #76] ; (8041420 ) + 80413d2: f006 fe07 bl 8047fe4 --pcb->snd_queuelen; - 8041396: 687b ldr r3, [r7, #4] - 8041398: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 804139c: 3b01 subs r3, #1 - 804139e: b29a uxth r2, r3 - 80413a0: 687b ldr r3, [r7, #4] - 80413a2: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 80413d6: 687b ldr r3, [r7, #4] + 80413d8: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 80413dc: 3b01 subs r3, #1 + 80413de: b29a uxth r2, r3 + 80413e0: 687b ldr r3, [r7, #4] + 80413e2: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"TCPWNDSIZE_F"\n", (tcpwnd_size_t)pcb->snd_queuelen)); rseg = pcb->unacked; - 80413a6: 687b ldr r3, [r7, #4] - 80413a8: 6f1b ldr r3, [r3, #112] ; 0x70 - 80413aa: 61fb str r3, [r7, #28] + 80413e6: 687b ldr r3, [r7, #4] + 80413e8: 6f1b ldr r3, [r3, #112] ; 0x70 + 80413ea: 61fb str r3, [r7, #28] if (rseg == NULL) { - 80413ac: 69fb ldr r3, [r7, #28] - 80413ae: 2b00 cmp r3, #0 - 80413b0: d12a bne.n 8041408 + 80413ec: 69fb ldr r3, [r7, #28] + 80413ee: 2b00 cmp r3, #0 + 80413f0: d12a bne.n 8041448 /* might happen if tcp_output fails in tcp_rexmit_rto() in which case the segment is on the unsent list */ rseg = pcb->unsent; - 80413b2: 687b ldr r3, [r7, #4] - 80413b4: 6edb ldr r3, [r3, #108] ; 0x6c - 80413b6: 61fb str r3, [r7, #28] + 80413f2: 687b ldr r3, [r7, #4] + 80413f4: 6edb ldr r3, [r3, #108] ; 0x6c + 80413f6: 61fb str r3, [r7, #28] LWIP_ASSERT("no segment to free", rseg != NULL); - 80413b8: 69fb ldr r3, [r7, #28] - 80413ba: 2b00 cmp r3, #0 - 80413bc: d106 bne.n 80413cc - 80413be: 4b06 ldr r3, [pc, #24] ; (80413d8 ) - 80413c0: f44f 725d mov.w r2, #884 ; 0x374 - 80413c4: 490f ldr r1, [pc, #60] ; (8041404 ) - 80413c6: 4806 ldr r0, [pc, #24] ; (80413e0 ) - 80413c8: f006 fdec bl 8047fa4 + 80413f8: 69fb ldr r3, [r7, #28] + 80413fa: 2b00 cmp r3, #0 + 80413fc: d106 bne.n 804140c + 80413fe: 4b06 ldr r3, [pc, #24] ; (8041418 ) + 8041400: f44f 725d mov.w r2, #884 ; 0x374 + 8041404: 490f ldr r1, [pc, #60] ; (8041444 ) + 8041406: 4806 ldr r0, [pc, #24] ; (8041420 ) + 8041408: f006 fdec bl 8047fe4 pcb->unsent = rseg->next; - 80413cc: 69fb ldr r3, [r7, #28] - 80413ce: 681a ldr r2, [r3, #0] - 80413d0: 687b ldr r3, [r7, #4] - 80413d2: 66da str r2, [r3, #108] ; 0x6c - 80413d4: e01c b.n 8041410 - 80413d6: bf00 nop - 80413d8: 0804b398 .word 0x0804b398 - 80413dc: 0804b5d0 .word 0x0804b5d0 - 80413e0: 0804b3e4 .word 0x0804b3e4 - 80413e4: 2400eb2c .word 0x2400eb2c - 80413e8: 2400eb24 .word 0x2400eb24 - 80413ec: 2400eb20 .word 0x2400eb20 - 80413f0: 0804b5ec .word 0x0804b5ec - 80413f4: 2400eb2d .word 0x2400eb2d - 80413f8: 2400eae8 .word 0x2400eae8 - 80413fc: 2400eb10 .word 0x2400eb10 - 8041400: 0804b60c .word 0x0804b60c - 8041404: 0804b624 .word 0x0804b624 + 804140c: 69fb ldr r3, [r7, #28] + 804140e: 681a ldr r2, [r3, #0] + 8041410: 687b ldr r3, [r7, #4] + 8041412: 66da str r2, [r3, #108] ; 0x6c + 8041414: e01c b.n 8041450 + 8041416: bf00 nop + 8041418: 0804b3d8 .word 0x0804b3d8 + 804141c: 0804b610 .word 0x0804b610 + 8041420: 0804b424 .word 0x0804b424 + 8041424: 2400eb2c .word 0x2400eb2c + 8041428: 2400eb24 .word 0x2400eb24 + 804142c: 2400eb20 .word 0x2400eb20 + 8041430: 0804b62c .word 0x0804b62c + 8041434: 2400eb2d .word 0x2400eb2d + 8041438: 2400eae8 .word 0x2400eae8 + 804143c: 2400eb10 .word 0x2400eb10 + 8041440: 0804b64c .word 0x0804b64c + 8041444: 0804b664 .word 0x0804b664 } else { pcb->unacked = rseg->next; - 8041408: 69fb ldr r3, [r7, #28] - 804140a: 681a ldr r2, [r3, #0] - 804140c: 687b ldr r3, [r7, #4] - 804140e: 671a str r2, [r3, #112] ; 0x70 + 8041448: 69fb ldr r3, [r7, #28] + 804144a: 681a ldr r2, [r3, #0] + 804144c: 687b ldr r3, [r7, #4] + 804144e: 671a str r2, [r3, #112] ; 0x70 } tcp_seg_free(rseg); - 8041410: 69f8 ldr r0, [r7, #28] - 8041412: f7fe fd22 bl 803fe5a + 8041450: 69f8 ldr r0, [r7, #28] + 8041452: f7fe fd22 bl 803fe9a /* If there's nothing left to acknowledge, stop the retransmit timer, otherwise reset it to start again */ if (pcb->unacked == NULL) { - 8041416: 687b ldr r3, [r7, #4] - 8041418: 6f1b ldr r3, [r3, #112] ; 0x70 - 804141a: 2b00 cmp r3, #0 - 804141c: d104 bne.n 8041428 + 8041456: 687b ldr r3, [r7, #4] + 8041458: 6f1b ldr r3, [r3, #112] ; 0x70 + 804145a: 2b00 cmp r3, #0 + 804145c: d104 bne.n 8041468 pcb->rtime = -1; - 804141e: 687b ldr r3, [r7, #4] - 8041420: f64f 72ff movw r2, #65535 ; 0xffff - 8041424: 861a strh r2, [r3, #48] ; 0x30 - 8041426: e006 b.n 8041436 + 804145e: 687b ldr r3, [r7, #4] + 8041460: f64f 72ff movw r2, #65535 ; 0xffff + 8041464: 861a strh r2, [r3, #48] ; 0x30 + 8041466: e006 b.n 8041476 } else { pcb->rtime = 0; - 8041428: 687b ldr r3, [r7, #4] - 804142a: 2200 movs r2, #0 - 804142c: 861a strh r2, [r3, #48] ; 0x30 + 8041468: 687b ldr r3, [r7, #4] + 804146a: 2200 movs r2, #0 + 804146c: 861a strh r2, [r3, #48] ; 0x30 pcb->nrtx = 0; - 804142e: 687b ldr r3, [r7, #4] - 8041430: 2200 movs r2, #0 - 8041432: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 804146e: 687b ldr r3, [r7, #4] + 8041470: 2200 movs r2, #0 + 8041472: f883 2042 strb.w r2, [r3, #66] ; 0x42 } /* Call the user specified function to call when successfully * connected. */ TCP_EVENT_CONNECTED(pcb, ERR_OK, err); - 8041436: 687b ldr r3, [r7, #4] - 8041438: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 804143c: 2b00 cmp r3, #0 - 804143e: d00a beq.n 8041456 - 8041440: 687b ldr r3, [r7, #4] - 8041442: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 - 8041446: 687a ldr r2, [r7, #4] - 8041448: 6910 ldr r0, [r2, #16] - 804144a: 2200 movs r2, #0 - 804144c: 6879 ldr r1, [r7, #4] - 804144e: 4798 blx r3 - 8041450: 4603 mov r3, r0 - 8041452: 76bb strb r3, [r7, #26] - 8041454: e001 b.n 804145a - 8041456: 2300 movs r3, #0 - 8041458: 76bb strb r3, [r7, #26] + 8041476: 687b ldr r3, [r7, #4] + 8041478: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 804147c: 2b00 cmp r3, #0 + 804147e: d00a beq.n 8041496 + 8041480: 687b ldr r3, [r7, #4] + 8041482: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8041486: 687a ldr r2, [r7, #4] + 8041488: 6910 ldr r0, [r2, #16] + 804148a: 2200 movs r2, #0 + 804148c: 6879 ldr r1, [r7, #4] + 804148e: 4798 blx r3 + 8041490: 4603 mov r3, r0 + 8041492: 76bb strb r3, [r7, #26] + 8041494: e001 b.n 804149a + 8041496: 2300 movs r3, #0 + 8041498: 76bb strb r3, [r7, #26] if (err == ERR_ABRT) { - 804145a: f997 301a ldrsb.w r3, [r7, #26] - 804145e: f113 0f0d cmn.w r3, #13 - 8041462: d102 bne.n 804146a + 804149a: f997 301a ldrsb.w r3, [r7, #26] + 804149e: f113 0f0d cmn.w r3, #13 + 80414a2: d102 bne.n 80414aa return ERR_ABRT; - 8041464: f06f 030c mvn.w r3, #12 - 8041468: e250 b.n 804190c + 80414a4: f06f 030c mvn.w r3, #12 + 80414a8: e250 b.n 804194c } tcp_ack_now(pcb); - 804146a: 687b ldr r3, [r7, #4] - 804146c: 8b5b ldrh r3, [r3, #26] - 804146e: f043 0302 orr.w r3, r3, #2 - 8041472: b29a uxth r2, r3 - 8041474: 687b ldr r3, [r7, #4] - 8041476: 835a strh r2, [r3, #26] + 80414aa: 687b ldr r3, [r7, #4] + 80414ac: 8b5b ldrh r3, [r3, #26] + 80414ae: f043 0302 orr.w r3, r3, #2 + 80414b2: b29a uxth r2, r3 + 80414b4: 687b ldr r3, [r7, #4] + 80414b6: 835a strh r2, [r3, #26] if (pcb->nrtx < TCP_SYNMAXRTX) { pcb->rtime = 0; tcp_rexmit_rto(pcb); } } break; - 8041478: e23a b.n 80418f0 + 80414b8: e23a b.n 8041930 else if (flags & TCP_ACK) { - 804147a: 4b98 ldr r3, [pc, #608] ; (80416dc ) - 804147c: 781b ldrb r3, [r3, #0] - 804147e: f003 0310 and.w r3, r3, #16 - 8041482: 2b00 cmp r3, #0 - 8041484: f000 8234 beq.w 80418f0 + 80414ba: 4b98 ldr r3, [pc, #608] ; (804171c ) + 80414bc: 781b ldrb r3, [r3, #0] + 80414be: f003 0310 and.w r3, r3, #16 + 80414c2: 2b00 cmp r3, #0 + 80414c4: f000 8234 beq.w 8041930 tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 8041488: 4b95 ldr r3, [pc, #596] ; (80416e0 ) - 804148a: 6819 ldr r1, [r3, #0] - 804148c: 4b95 ldr r3, [pc, #596] ; (80416e4 ) - 804148e: 881b ldrh r3, [r3, #0] - 8041490: 461a mov r2, r3 - 8041492: 4b95 ldr r3, [pc, #596] ; (80416e8 ) - 8041494: 681b ldr r3, [r3, #0] - 8041496: 18d0 adds r0, r2, r3 + 80414c8: 4b95 ldr r3, [pc, #596] ; (8041720 ) + 80414ca: 6819 ldr r1, [r3, #0] + 80414cc: 4b95 ldr r3, [pc, #596] ; (8041724 ) + 80414ce: 881b ldrh r3, [r3, #0] + 80414d0: 461a mov r2, r3 + 80414d2: 4b95 ldr r3, [pc, #596] ; (8041728 ) + 80414d4: 681b ldr r3, [r3, #0] + 80414d6: 18d0 adds r0, r2, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8041498: 4b94 ldr r3, [pc, #592] ; (80416ec ) - 804149a: 681b ldr r3, [r3, #0] + 80414d8: 4b94 ldr r3, [pc, #592] ; (804172c ) + 80414da: 681b ldr r3, [r3, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 804149c: 885b ldrh r3, [r3, #2] - 804149e: b29b uxth r3, r3 + 80414dc: 885b ldrh r3, [r3, #2] + 80414de: b29b uxth r3, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 80414a0: 4a92 ldr r2, [pc, #584] ; (80416ec ) - 80414a2: 6812 ldr r2, [r2, #0] + 80414e0: 4a92 ldr r2, [pc, #584] ; (804172c ) + 80414e2: 6812 ldr r2, [r2, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 80414a4: 8812 ldrh r2, [r2, #0] - 80414a6: b292 uxth r2, r2 - 80414a8: 9202 str r2, [sp, #8] - 80414aa: 9301 str r3, [sp, #4] - 80414ac: 4b90 ldr r3, [pc, #576] ; (80416f0 ) - 80414ae: 9300 str r3, [sp, #0] - 80414b0: 4b90 ldr r3, [pc, #576] ; (80416f4 ) - 80414b2: 4602 mov r2, r0 - 80414b4: 6878 ldr r0, [r7, #4] - 80414b6: f003 f8dd bl 8044674 + 80414e4: 8812 ldrh r2, [r2, #0] + 80414e6: b292 uxth r2, r2 + 80414e8: 9202 str r2, [sp, #8] + 80414ea: 9301 str r3, [sp, #4] + 80414ec: 4b90 ldr r3, [pc, #576] ; (8041730 ) + 80414ee: 9300 str r3, [sp, #0] + 80414f0: 4b90 ldr r3, [pc, #576] ; (8041734 ) + 80414f2: 4602 mov r2, r0 + 80414f4: 6878 ldr r0, [r7, #4] + 80414f6: f003 f8dd bl 80446b4 if (pcb->nrtx < TCP_SYNMAXRTX) { - 80414ba: 687b ldr r3, [r7, #4] - 80414bc: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 80414c0: 2b05 cmp r3, #5 - 80414c2: f200 8215 bhi.w 80418f0 + 80414fa: 687b ldr r3, [r7, #4] + 80414fc: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 8041500: 2b05 cmp r3, #5 + 8041502: f200 8215 bhi.w 8041930 pcb->rtime = 0; - 80414c6: 687b ldr r3, [r7, #4] - 80414c8: 2200 movs r2, #0 - 80414ca: 861a strh r2, [r3, #48] ; 0x30 + 8041506: 687b ldr r3, [r7, #4] + 8041508: 2200 movs r2, #0 + 804150a: 861a strh r2, [r3, #48] ; 0x30 tcp_rexmit_rto(pcb); - 80414cc: 6878 ldr r0, [r7, #4] - 80414ce: f002 fea7 bl 8044220 + 804150c: 6878 ldr r0, [r7, #4] + 804150e: f002 fea7 bl 8044260 break; - 80414d2: e20d b.n 80418f0 + 8041512: e20d b.n 8041930 case SYN_RCVD: if (flags & TCP_ACK) { - 80414d4: 4b81 ldr r3, [pc, #516] ; (80416dc ) - 80414d6: 781b ldrb r3, [r3, #0] - 80414d8: f003 0310 and.w r3, r3, #16 - 80414dc: 2b00 cmp r3, #0 - 80414de: f000 80a1 beq.w 8041624 + 8041514: 4b81 ldr r3, [pc, #516] ; (804171c ) + 8041516: 781b ldrb r3, [r3, #0] + 8041518: f003 0310 and.w r3, r3, #16 + 804151c: 2b00 cmp r3, #0 + 804151e: f000 80a1 beq.w 8041664 /* expected ACK number? */ if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 80414e2: 4b7f ldr r3, [pc, #508] ; (80416e0 ) - 80414e4: 681a ldr r2, [r3, #0] - 80414e6: 687b ldr r3, [r7, #4] - 80414e8: 6c5b ldr r3, [r3, #68] ; 0x44 - 80414ea: 1ad3 subs r3, r2, r3 - 80414ec: 3b01 subs r3, #1 - 80414ee: 2b00 cmp r3, #0 - 80414f0: db7e blt.n 80415f0 - 80414f2: 4b7b ldr r3, [pc, #492] ; (80416e0 ) - 80414f4: 681a ldr r2, [r3, #0] - 80414f6: 687b ldr r3, [r7, #4] - 80414f8: 6d1b ldr r3, [r3, #80] ; 0x50 - 80414fa: 1ad3 subs r3, r2, r3 - 80414fc: 2b00 cmp r3, #0 - 80414fe: dc77 bgt.n 80415f0 + 8041522: 4b7f ldr r3, [pc, #508] ; (8041720 ) + 8041524: 681a ldr r2, [r3, #0] + 8041526: 687b ldr r3, [r7, #4] + 8041528: 6c5b ldr r3, [r3, #68] ; 0x44 + 804152a: 1ad3 subs r3, r2, r3 + 804152c: 3b01 subs r3, #1 + 804152e: 2b00 cmp r3, #0 + 8041530: db7e blt.n 8041630 + 8041532: 4b7b ldr r3, [pc, #492] ; (8041720 ) + 8041534: 681a ldr r2, [r3, #0] + 8041536: 687b ldr r3, [r7, #4] + 8041538: 6d1b ldr r3, [r3, #80] ; 0x50 + 804153a: 1ad3 subs r3, r2, r3 + 804153c: 2b00 cmp r3, #0 + 804153e: dc77 bgt.n 8041630 pcb->state = ESTABLISHED; - 8041500: 687b ldr r3, [r7, #4] - 8041502: 2204 movs r2, #4 - 8041504: 751a strb r2, [r3, #20] + 8041540: 687b ldr r3, [r7, #4] + 8041542: 2204 movs r2, #4 + 8041544: 751a strb r2, [r3, #20] LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); #if LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG if (pcb->listener == NULL) { - 8041506: 687b ldr r3, [r7, #4] - 8041508: 6fdb ldr r3, [r3, #124] ; 0x7c - 804150a: 2b00 cmp r3, #0 - 804150c: d102 bne.n 8041514 + 8041546: 687b ldr r3, [r7, #4] + 8041548: 6fdb ldr r3, [r3, #124] ; 0x7c + 804154a: 2b00 cmp r3, #0 + 804154c: d102 bne.n 8041554 /* listen pcb might be closed by now */ err = ERR_VAL; - 804150e: 23fa movs r3, #250 ; 0xfa - 8041510: 76bb strb r3, [r7, #26] - 8041512: e01d b.n 8041550 + 804154e: 23fa movs r3, #250 ; 0xfa + 8041550: 76bb strb r3, [r7, #26] + 8041552: e01d b.n 8041590 } else #endif /* LWIP_CALLBACK_API || TCP_LISTEN_BACKLOG */ { #if LWIP_CALLBACK_API LWIP_ASSERT("pcb->listener->accept != NULL", pcb->listener->accept != NULL); - 8041514: 687b ldr r3, [r7, #4] - 8041516: 6fdb ldr r3, [r3, #124] ; 0x7c - 8041518: 699b ldr r3, [r3, #24] - 804151a: 2b00 cmp r3, #0 - 804151c: d106 bne.n 804152c - 804151e: 4b76 ldr r3, [pc, #472] ; (80416f8 ) - 8041520: f44f 726a mov.w r2, #936 ; 0x3a8 - 8041524: 4975 ldr r1, [pc, #468] ; (80416fc ) - 8041526: 4876 ldr r0, [pc, #472] ; (8041700 ) - 8041528: f006 fd3c bl 8047fa4 + 8041554: 687b ldr r3, [r7, #4] + 8041556: 6fdb ldr r3, [r3, #124] ; 0x7c + 8041558: 699b ldr r3, [r3, #24] + 804155a: 2b00 cmp r3, #0 + 804155c: d106 bne.n 804156c + 804155e: 4b76 ldr r3, [pc, #472] ; (8041738 ) + 8041560: f44f 726a mov.w r2, #936 ; 0x3a8 + 8041564: 4975 ldr r1, [pc, #468] ; (804173c ) + 8041566: 4876 ldr r0, [pc, #472] ; (8041740 ) + 8041568: f006 fd3c bl 8047fe4 #endif tcp_backlog_accepted(pcb); /* Call the accept function. */ TCP_EVENT_ACCEPT(pcb->listener, pcb, pcb->callback_arg, ERR_OK, err); - 804152c: 687b ldr r3, [r7, #4] - 804152e: 6fdb ldr r3, [r3, #124] ; 0x7c - 8041530: 699b ldr r3, [r3, #24] - 8041532: 2b00 cmp r3, #0 - 8041534: d00a beq.n 804154c - 8041536: 687b ldr r3, [r7, #4] - 8041538: 6fdb ldr r3, [r3, #124] ; 0x7c - 804153a: 699b ldr r3, [r3, #24] - 804153c: 687a ldr r2, [r7, #4] - 804153e: 6910 ldr r0, [r2, #16] - 8041540: 2200 movs r2, #0 - 8041542: 6879 ldr r1, [r7, #4] - 8041544: 4798 blx r3 - 8041546: 4603 mov r3, r0 - 8041548: 76bb strb r3, [r7, #26] - 804154a: e001 b.n 8041550 - 804154c: 23f0 movs r3, #240 ; 0xf0 - 804154e: 76bb strb r3, [r7, #26] + 804156c: 687b ldr r3, [r7, #4] + 804156e: 6fdb ldr r3, [r3, #124] ; 0x7c + 8041570: 699b ldr r3, [r3, #24] + 8041572: 2b00 cmp r3, #0 + 8041574: d00a beq.n 804158c + 8041576: 687b ldr r3, [r7, #4] + 8041578: 6fdb ldr r3, [r3, #124] ; 0x7c + 804157a: 699b ldr r3, [r3, #24] + 804157c: 687a ldr r2, [r7, #4] + 804157e: 6910 ldr r0, [r2, #16] + 8041580: 2200 movs r2, #0 + 8041582: 6879 ldr r1, [r7, #4] + 8041584: 4798 blx r3 + 8041586: 4603 mov r3, r0 + 8041588: 76bb strb r3, [r7, #26] + 804158a: e001 b.n 8041590 + 804158c: 23f0 movs r3, #240 ; 0xf0 + 804158e: 76bb strb r3, [r7, #26] } if (err != ERR_OK) { - 8041550: f997 301a ldrsb.w r3, [r7, #26] - 8041554: 2b00 cmp r3, #0 - 8041556: d00a beq.n 804156e + 8041590: f997 301a ldrsb.w r3, [r7, #26] + 8041594: 2b00 cmp r3, #0 + 8041596: d00a beq.n 80415ae /* If the accept function returns with an error, we abort * the connection. */ /* Already aborted? */ if (err != ERR_ABRT) { - 8041558: f997 301a ldrsb.w r3, [r7, #26] - 804155c: f113 0f0d cmn.w r3, #13 - 8041560: d002 beq.n 8041568 + 8041598: f997 301a ldrsb.w r3, [r7, #26] + 804159c: f113 0f0d cmn.w r3, #13 + 80415a0: d002 beq.n 80415a8 tcp_abort(pcb); - 8041562: 6878 ldr r0, [r7, #4] - 8041564: f7fd ff8e bl 803f484 + 80415a2: 6878 ldr r0, [r7, #4] + 80415a4: f7fd ff8e bl 803f4c4 } return ERR_ABRT; - 8041568: f06f 030c mvn.w r3, #12 - 804156c: e1ce b.n 804190c + 80415a8: f06f 030c mvn.w r3, #12 + 80415ac: e1ce b.n 804194c } /* If there was any data contained within this ACK, * we'd better pass it on to the application as well. */ tcp_receive(pcb); - 804156e: 6878 ldr r0, [r7, #4] - 8041570: f000 fae0 bl 8041b34 + 80415ae: 6878 ldr r0, [r7, #4] + 80415b0: f000 fae0 bl 8041b74 /* Prevent ACK for SYN to generate a sent event */ if (recv_acked != 0) { - 8041574: 4b63 ldr r3, [pc, #396] ; (8041704 ) - 8041576: 881b ldrh r3, [r3, #0] - 8041578: 2b00 cmp r3, #0 - 804157a: d005 beq.n 8041588 + 80415b4: 4b63 ldr r3, [pc, #396] ; (8041744 ) + 80415b6: 881b ldrh r3, [r3, #0] + 80415b8: 2b00 cmp r3, #0 + 80415ba: d005 beq.n 80415c8 recv_acked--; - 804157c: 4b61 ldr r3, [pc, #388] ; (8041704 ) - 804157e: 881b ldrh r3, [r3, #0] - 8041580: 3b01 subs r3, #1 - 8041582: b29a uxth r2, r3 - 8041584: 4b5f ldr r3, [pc, #380] ; (8041704 ) - 8041586: 801a strh r2, [r3, #0] + 80415bc: 4b61 ldr r3, [pc, #388] ; (8041744 ) + 80415be: 881b ldrh r3, [r3, #0] + 80415c0: 3b01 subs r3, #1 + 80415c2: b29a uxth r2, r3 + 80415c4: 4b5f ldr r3, [pc, #380] ; (8041744 ) + 80415c6: 801a strh r2, [r3, #0] } pcb->cwnd = LWIP_TCP_CALC_INITIAL_CWND(pcb->mss); - 8041588: 687b ldr r3, [r7, #4] - 804158a: 8e5b ldrh r3, [r3, #50] ; 0x32 - 804158c: 009a lsls r2, r3, #2 - 804158e: 687b ldr r3, [r7, #4] - 8041590: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041592: 005b lsls r3, r3, #1 - 8041594: f241 111c movw r1, #4380 ; 0x111c - 8041598: 428b cmp r3, r1 - 804159a: bf38 it cc - 804159c: 460b movcc r3, r1 - 804159e: 429a cmp r2, r3 - 80415a0: d204 bcs.n 80415ac - 80415a2: 687b ldr r3, [r7, #4] - 80415a4: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80415a6: 009b lsls r3, r3, #2 - 80415a8: b29b uxth r3, r3 - 80415aa: e00d b.n 80415c8 - 80415ac: 687b ldr r3, [r7, #4] - 80415ae: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80415b0: 005b lsls r3, r3, #1 - 80415b2: f241 121c movw r2, #4380 ; 0x111c - 80415b6: 4293 cmp r3, r2 - 80415b8: d904 bls.n 80415c4 - 80415ba: 687b ldr r3, [r7, #4] - 80415bc: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80415be: 005b lsls r3, r3, #1 - 80415c0: b29b uxth r3, r3 - 80415c2: e001 b.n 80415c8 - 80415c4: f241 131c movw r3, #4380 ; 0x111c - 80415c8: 687a ldr r2, [r7, #4] - 80415ca: f8a2 3048 strh.w r3, [r2, #72] ; 0x48 + 80415c8: 687b ldr r3, [r7, #4] + 80415ca: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80415cc: 009a lsls r2, r3, #2 + 80415ce: 687b ldr r3, [r7, #4] + 80415d0: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80415d2: 005b lsls r3, r3, #1 + 80415d4: f241 111c movw r1, #4380 ; 0x111c + 80415d8: 428b cmp r3, r1 + 80415da: bf38 it cc + 80415dc: 460b movcc r3, r1 + 80415de: 429a cmp r2, r3 + 80415e0: d204 bcs.n 80415ec + 80415e2: 687b ldr r3, [r7, #4] + 80415e4: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80415e6: 009b lsls r3, r3, #2 + 80415e8: b29b uxth r3, r3 + 80415ea: e00d b.n 8041608 + 80415ec: 687b ldr r3, [r7, #4] + 80415ee: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80415f0: 005b lsls r3, r3, #1 + 80415f2: f241 121c movw r2, #4380 ; 0x111c + 80415f6: 4293 cmp r3, r2 + 80415f8: d904 bls.n 8041604 + 80415fa: 687b ldr r3, [r7, #4] + 80415fc: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80415fe: 005b lsls r3, r3, #1 + 8041600: b29b uxth r3, r3 + 8041602: e001 b.n 8041608 + 8041604: f241 131c movw r3, #4380 ; 0x111c + 8041608: 687a ldr r2, [r7, #4] + 804160a: f8a2 3048 strh.w r3, [r2, #72] ; 0x48 LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_process (SYN_RCVD): cwnd %"TCPWNDSIZE_F " ssthresh %"TCPWNDSIZE_F"\n", pcb->cwnd, pcb->ssthresh)); if (recv_flags & TF_GOT_FIN) { - 80415ce: 4b4e ldr r3, [pc, #312] ; (8041708 ) - 80415d0: 781b ldrb r3, [r3, #0] - 80415d2: f003 0320 and.w r3, r3, #32 - 80415d6: 2b00 cmp r3, #0 - 80415d8: d037 beq.n 804164a + 804160e: 4b4e ldr r3, [pc, #312] ; (8041748 ) + 8041610: 781b ldrb r3, [r3, #0] + 8041612: f003 0320 and.w r3, r3, #32 + 8041616: 2b00 cmp r3, #0 + 8041618: d037 beq.n 804168a tcp_ack_now(pcb); - 80415da: 687b ldr r3, [r7, #4] - 80415dc: 8b5b ldrh r3, [r3, #26] - 80415de: f043 0302 orr.w r3, r3, #2 - 80415e2: b29a uxth r2, r3 - 80415e4: 687b ldr r3, [r7, #4] - 80415e6: 835a strh r2, [r3, #26] + 804161a: 687b ldr r3, [r7, #4] + 804161c: 8b5b ldrh r3, [r3, #26] + 804161e: f043 0302 orr.w r3, r3, #2 + 8041622: b29a uxth r2, r3 + 8041624: 687b ldr r3, [r7, #4] + 8041626: 835a strh r2, [r3, #26] pcb->state = CLOSE_WAIT; - 80415e8: 687b ldr r3, [r7, #4] - 80415ea: 2207 movs r2, #7 - 80415ec: 751a strb r2, [r3, #20] + 8041628: 687b ldr r3, [r7, #4] + 804162a: 2207 movs r2, #7 + 804162c: 751a strb r2, [r3, #20] if (recv_flags & TF_GOT_FIN) { - 80415ee: e02c b.n 804164a + 804162e: e02c b.n 804168a } } else { /* incorrect ACK number, send RST */ tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 80415f0: 4b3b ldr r3, [pc, #236] ; (80416e0 ) - 80415f2: 6819 ldr r1, [r3, #0] - 80415f4: 4b3b ldr r3, [pc, #236] ; (80416e4 ) - 80415f6: 881b ldrh r3, [r3, #0] - 80415f8: 461a mov r2, r3 - 80415fa: 4b3b ldr r3, [pc, #236] ; (80416e8 ) - 80415fc: 681b ldr r3, [r3, #0] - 80415fe: 18d0 adds r0, r2, r3 + 8041630: 4b3b ldr r3, [pc, #236] ; (8041720 ) + 8041632: 6819 ldr r1, [r3, #0] + 8041634: 4b3b ldr r3, [pc, #236] ; (8041724 ) + 8041636: 881b ldrh r3, [r3, #0] + 8041638: 461a mov r2, r3 + 804163a: 4b3b ldr r3, [pc, #236] ; (8041728 ) + 804163c: 681b ldr r3, [r3, #0] + 804163e: 18d0 adds r0, r2, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8041600: 4b3a ldr r3, [pc, #232] ; (80416ec ) - 8041602: 681b ldr r3, [r3, #0] + 8041640: 4b3a ldr r3, [pc, #232] ; (804172c ) + 8041642: 681b ldr r3, [r3, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 8041604: 885b ldrh r3, [r3, #2] - 8041606: b29b uxth r3, r3 + 8041644: 885b ldrh r3, [r3, #2] + 8041646: b29b uxth r3, r3 ip_current_src_addr(), tcphdr->dest, tcphdr->src); - 8041608: 4a38 ldr r2, [pc, #224] ; (80416ec ) - 804160a: 6812 ldr r2, [r2, #0] + 8041648: 4a38 ldr r2, [pc, #224] ; (804172c ) + 804164a: 6812 ldr r2, [r2, #0] tcp_rst(pcb, ackno, seqno + tcplen, ip_current_dest_addr(), - 804160c: 8812 ldrh r2, [r2, #0] - 804160e: b292 uxth r2, r2 - 8041610: 9202 str r2, [sp, #8] - 8041612: 9301 str r3, [sp, #4] - 8041614: 4b36 ldr r3, [pc, #216] ; (80416f0 ) - 8041616: 9300 str r3, [sp, #0] - 8041618: 4b36 ldr r3, [pc, #216] ; (80416f4 ) - 804161a: 4602 mov r2, r0 - 804161c: 6878 ldr r0, [r7, #4] - 804161e: f003 f829 bl 8044674 + 804164c: 8812 ldrh r2, [r2, #0] + 804164e: b292 uxth r2, r2 + 8041650: 9202 str r2, [sp, #8] + 8041652: 9301 str r3, [sp, #4] + 8041654: 4b36 ldr r3, [pc, #216] ; (8041730 ) + 8041656: 9300 str r3, [sp, #0] + 8041658: 4b36 ldr r3, [pc, #216] ; (8041734 ) + 804165a: 4602 mov r2, r0 + 804165c: 6878 ldr r0, [r7, #4] + 804165e: f003 f829 bl 80446b4 } } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { /* Looks like another copy of the SYN - retransmit our SYN-ACK */ tcp_rexmit(pcb); } break; - 8041622: e167 b.n 80418f4 + 8041662: e167 b.n 8041934 } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - 8041624: 4b2d ldr r3, [pc, #180] ; (80416dc ) - 8041626: 781b ldrb r3, [r3, #0] - 8041628: f003 0302 and.w r3, r3, #2 - 804162c: 2b00 cmp r3, #0 - 804162e: f000 8161 beq.w 80418f4 - 8041632: 687b ldr r3, [r7, #4] - 8041634: 6a5b ldr r3, [r3, #36] ; 0x24 - 8041636: 1e5a subs r2, r3, #1 - 8041638: 4b2b ldr r3, [pc, #172] ; (80416e8 ) - 804163a: 681b ldr r3, [r3, #0] - 804163c: 429a cmp r2, r3 - 804163e: f040 8159 bne.w 80418f4 + 8041664: 4b2d ldr r3, [pc, #180] ; (804171c ) + 8041666: 781b ldrb r3, [r3, #0] + 8041668: f003 0302 and.w r3, r3, #2 + 804166c: 2b00 cmp r3, #0 + 804166e: f000 8161 beq.w 8041934 + 8041672: 687b ldr r3, [r7, #4] + 8041674: 6a5b ldr r3, [r3, #36] ; 0x24 + 8041676: 1e5a subs r2, r3, #1 + 8041678: 4b2b ldr r3, [pc, #172] ; (8041728 ) + 804167a: 681b ldr r3, [r3, #0] + 804167c: 429a cmp r2, r3 + 804167e: f040 8159 bne.w 8041934 tcp_rexmit(pcb); - 8041642: 6878 ldr r0, [r7, #4] - 8041644: f002 fe0e bl 8044264 + 8041682: 6878 ldr r0, [r7, #4] + 8041684: f002 fe0e bl 80442a4 break; - 8041648: e154 b.n 80418f4 - 804164a: e153 b.n 80418f4 + 8041688: e154 b.n 8041934 + 804168a: e153 b.n 8041934 case CLOSE_WAIT: /* FALLTHROUGH */ case ESTABLISHED: tcp_receive(pcb); - 804164c: 6878 ldr r0, [r7, #4] - 804164e: f000 fa71 bl 8041b34 + 804168c: 6878 ldr r0, [r7, #4] + 804168e: f000 fa71 bl 8041b74 if (recv_flags & TF_GOT_FIN) { /* passive close */ - 8041652: 4b2d ldr r3, [pc, #180] ; (8041708 ) - 8041654: 781b ldrb r3, [r3, #0] - 8041656: f003 0320 and.w r3, r3, #32 - 804165a: 2b00 cmp r3, #0 - 804165c: f000 814c beq.w 80418f8 + 8041692: 4b2d ldr r3, [pc, #180] ; (8041748 ) + 8041694: 781b ldrb r3, [r3, #0] + 8041696: f003 0320 and.w r3, r3, #32 + 804169a: 2b00 cmp r3, #0 + 804169c: f000 814c beq.w 8041938 tcp_ack_now(pcb); - 8041660: 687b ldr r3, [r7, #4] - 8041662: 8b5b ldrh r3, [r3, #26] - 8041664: f043 0302 orr.w r3, r3, #2 - 8041668: b29a uxth r2, r3 - 804166a: 687b ldr r3, [r7, #4] - 804166c: 835a strh r2, [r3, #26] + 80416a0: 687b ldr r3, [r7, #4] + 80416a2: 8b5b ldrh r3, [r3, #26] + 80416a4: f043 0302 orr.w r3, r3, #2 + 80416a8: b29a uxth r2, r3 + 80416aa: 687b ldr r3, [r7, #4] + 80416ac: 835a strh r2, [r3, #26] pcb->state = CLOSE_WAIT; - 804166e: 687b ldr r3, [r7, #4] - 8041670: 2207 movs r2, #7 - 8041672: 751a strb r2, [r3, #20] + 80416ae: 687b ldr r3, [r7, #4] + 80416b0: 2207 movs r2, #7 + 80416b2: 751a strb r2, [r3, #20] } break; - 8041674: e140 b.n 80418f8 + 80416b4: e140 b.n 8041938 case FIN_WAIT_1: tcp_receive(pcb); - 8041676: 6878 ldr r0, [r7, #4] - 8041678: f000 fa5c bl 8041b34 + 80416b6: 6878 ldr r0, [r7, #4] + 80416b8: f000 fa5c bl 8041b74 if (recv_flags & TF_GOT_FIN) { - 804167c: 4b22 ldr r3, [pc, #136] ; (8041708 ) - 804167e: 781b ldrb r3, [r3, #0] - 8041680: f003 0320 and.w r3, r3, #32 - 8041684: 2b00 cmp r3, #0 - 8041686: d071 beq.n 804176c + 80416bc: 4b22 ldr r3, [pc, #136] ; (8041748 ) + 80416be: 781b ldrb r3, [r3, #0] + 80416c0: f003 0320 and.w r3, r3, #32 + 80416c4: 2b00 cmp r3, #0 + 80416c6: d071 beq.n 80417ac if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 8041688: 4b14 ldr r3, [pc, #80] ; (80416dc ) - 804168a: 781b ldrb r3, [r3, #0] - 804168c: f003 0310 and.w r3, r3, #16 - 8041690: 2b00 cmp r3, #0 - 8041692: d060 beq.n 8041756 - 8041694: 687b ldr r3, [r7, #4] - 8041696: 6d1a ldr r2, [r3, #80] ; 0x50 - 8041698: 4b11 ldr r3, [pc, #68] ; (80416e0 ) - 804169a: 681b ldr r3, [r3, #0] - 804169c: 429a cmp r2, r3 - 804169e: d15a bne.n 8041756 + 80416c8: 4b14 ldr r3, [pc, #80] ; (804171c ) + 80416ca: 781b ldrb r3, [r3, #0] + 80416cc: f003 0310 and.w r3, r3, #16 + 80416d0: 2b00 cmp r3, #0 + 80416d2: d060 beq.n 8041796 + 80416d4: 687b ldr r3, [r7, #4] + 80416d6: 6d1a ldr r2, [r3, #80] ; 0x50 + 80416d8: 4b11 ldr r3, [pc, #68] ; (8041720 ) + 80416da: 681b ldr r3, [r3, #0] + 80416dc: 429a cmp r2, r3 + 80416de: d15a bne.n 8041796 pcb->unsent == NULL) { - 80416a0: 687b ldr r3, [r7, #4] - 80416a2: 6edb ldr r3, [r3, #108] ; 0x6c + 80416e0: 687b ldr r3, [r7, #4] + 80416e2: 6edb ldr r3, [r3, #108] ; 0x6c if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 80416a4: 2b00 cmp r3, #0 - 80416a6: d156 bne.n 8041756 + 80416e4: 2b00 cmp r3, #0 + 80416e6: d156 bne.n 8041796 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); tcp_ack_now(pcb); - 80416a8: 687b ldr r3, [r7, #4] - 80416aa: 8b5b ldrh r3, [r3, #26] - 80416ac: f043 0302 orr.w r3, r3, #2 - 80416b0: b29a uxth r2, r3 - 80416b2: 687b ldr r3, [r7, #4] - 80416b4: 835a strh r2, [r3, #26] + 80416e8: 687b ldr r3, [r7, #4] + 80416ea: 8b5b ldrh r3, [r3, #26] + 80416ec: f043 0302 orr.w r3, r3, #2 + 80416f0: b29a uxth r2, r3 + 80416f2: 687b ldr r3, [r7, #4] + 80416f4: 835a strh r2, [r3, #26] tcp_pcb_purge(pcb); - 80416b6: 6878 ldr r0, [r7, #4] - 80416b8: f7fe fdbc bl 8040234 + 80416f6: 6878 ldr r0, [r7, #4] + 80416f8: f7fe fdbc bl 8040274 TCP_RMV_ACTIVE(pcb); - 80416bc: 4b13 ldr r3, [pc, #76] ; (804170c ) - 80416be: 681b ldr r3, [r3, #0] - 80416c0: 687a ldr r2, [r7, #4] - 80416c2: 429a cmp r2, r3 - 80416c4: d105 bne.n 80416d2 - 80416c6: 4b11 ldr r3, [pc, #68] ; (804170c ) - 80416c8: 681b ldr r3, [r3, #0] - 80416ca: 68db ldr r3, [r3, #12] - 80416cc: 4a0f ldr r2, [pc, #60] ; (804170c ) - 80416ce: 6013 str r3, [r2, #0] - 80416d0: e02e b.n 8041730 - 80416d2: 4b0e ldr r3, [pc, #56] ; (804170c ) - 80416d4: 681b ldr r3, [r3, #0] - 80416d6: 617b str r3, [r7, #20] - 80416d8: e027 b.n 804172a - 80416da: bf00 nop - 80416dc: 2400eb2c .word 0x2400eb2c - 80416e0: 2400eb24 .word 0x2400eb24 - 80416e4: 2400eb2a .word 0x2400eb2a - 80416e8: 2400eb20 .word 0x2400eb20 - 80416ec: 2400eb10 .word 0x2400eb10 - 80416f0: 2400bb5c .word 0x2400bb5c - 80416f4: 2400bb60 .word 0x2400bb60 - 80416f8: 0804b398 .word 0x0804b398 - 80416fc: 0804b638 .word 0x0804b638 - 8041700: 0804b3e4 .word 0x0804b3e4 - 8041704: 2400eb28 .word 0x2400eb28 - 8041708: 2400eb2d .word 0x2400eb2d - 804170c: 2400eaf4 .word 0x2400eaf4 - 8041710: 697b ldr r3, [r7, #20] - 8041712: 68db ldr r3, [r3, #12] - 8041714: 687a ldr r2, [r7, #4] - 8041716: 429a cmp r2, r3 - 8041718: d104 bne.n 8041724 - 804171a: 687b ldr r3, [r7, #4] - 804171c: 68da ldr r2, [r3, #12] - 804171e: 697b ldr r3, [r7, #20] - 8041720: 60da str r2, [r3, #12] - 8041722: e005 b.n 8041730 - 8041724: 697b ldr r3, [r7, #20] - 8041726: 68db ldr r3, [r3, #12] - 8041728: 617b str r3, [r7, #20] - 804172a: 697b ldr r3, [r7, #20] - 804172c: 2b00 cmp r3, #0 - 804172e: d1ef bne.n 8041710 - 8041730: 687b ldr r3, [r7, #4] - 8041732: 2200 movs r2, #0 - 8041734: 60da str r2, [r3, #12] - 8041736: 4b77 ldr r3, [pc, #476] ; (8041914 ) - 8041738: 2201 movs r2, #1 - 804173a: 701a strb r2, [r3, #0] + 80416fc: 4b13 ldr r3, [pc, #76] ; (804174c ) + 80416fe: 681b ldr r3, [r3, #0] + 8041700: 687a ldr r2, [r7, #4] + 8041702: 429a cmp r2, r3 + 8041704: d105 bne.n 8041712 + 8041706: 4b11 ldr r3, [pc, #68] ; (804174c ) + 8041708: 681b ldr r3, [r3, #0] + 804170a: 68db ldr r3, [r3, #12] + 804170c: 4a0f ldr r2, [pc, #60] ; (804174c ) + 804170e: 6013 str r3, [r2, #0] + 8041710: e02e b.n 8041770 + 8041712: 4b0e ldr r3, [pc, #56] ; (804174c ) + 8041714: 681b ldr r3, [r3, #0] + 8041716: 617b str r3, [r7, #20] + 8041718: e027 b.n 804176a + 804171a: bf00 nop + 804171c: 2400eb2c .word 0x2400eb2c + 8041720: 2400eb24 .word 0x2400eb24 + 8041724: 2400eb2a .word 0x2400eb2a + 8041728: 2400eb20 .word 0x2400eb20 + 804172c: 2400eb10 .word 0x2400eb10 + 8041730: 2400bb5c .word 0x2400bb5c + 8041734: 2400bb60 .word 0x2400bb60 + 8041738: 0804b3d8 .word 0x0804b3d8 + 804173c: 0804b678 .word 0x0804b678 + 8041740: 0804b424 .word 0x0804b424 + 8041744: 2400eb28 .word 0x2400eb28 + 8041748: 2400eb2d .word 0x2400eb2d + 804174c: 2400eaf4 .word 0x2400eaf4 + 8041750: 697b ldr r3, [r7, #20] + 8041752: 68db ldr r3, [r3, #12] + 8041754: 687a ldr r2, [r7, #4] + 8041756: 429a cmp r2, r3 + 8041758: d104 bne.n 8041764 + 804175a: 687b ldr r3, [r7, #4] + 804175c: 68da ldr r2, [r3, #12] + 804175e: 697b ldr r3, [r7, #20] + 8041760: 60da str r2, [r3, #12] + 8041762: e005 b.n 8041770 + 8041764: 697b ldr r3, [r7, #20] + 8041766: 68db ldr r3, [r3, #12] + 8041768: 617b str r3, [r7, #20] + 804176a: 697b ldr r3, [r7, #20] + 804176c: 2b00 cmp r3, #0 + 804176e: d1ef bne.n 8041750 + 8041770: 687b ldr r3, [r7, #4] + 8041772: 2200 movs r2, #0 + 8041774: 60da str r2, [r3, #12] + 8041776: 4b77 ldr r3, [pc, #476] ; (8041954 ) + 8041778: 2201 movs r2, #1 + 804177a: 701a strb r2, [r3, #0] pcb->state = TIME_WAIT; - 804173c: 687b ldr r3, [r7, #4] - 804173e: 220a movs r2, #10 - 8041740: 751a strb r2, [r3, #20] + 804177c: 687b ldr r3, [r7, #4] + 804177e: 220a movs r2, #10 + 8041780: 751a strb r2, [r3, #20] TCP_REG(&tcp_tw_pcbs, pcb); - 8041742: 4b75 ldr r3, [pc, #468] ; (8041918 ) - 8041744: 681a ldr r2, [r3, #0] - 8041746: 687b ldr r3, [r7, #4] - 8041748: 60da str r2, [r3, #12] - 804174a: 4a73 ldr r2, [pc, #460] ; (8041918 ) - 804174c: 687b ldr r3, [r7, #4] - 804174e: 6013 str r3, [r2, #0] - 8041750: f003 f952 bl 80449f8 + 8041782: 4b75 ldr r3, [pc, #468] ; (8041958 ) + 8041784: 681a ldr r2, [r3, #0] + 8041786: 687b ldr r3, [r7, #4] + 8041788: 60da str r2, [r3, #12] + 804178a: 4a73 ldr r2, [pc, #460] ; (8041958 ) + 804178c: 687b ldr r3, [r7, #4] + 804178e: 6013 str r3, [r2, #0] + 8041790: f003 f952 bl 8044a38 } } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && pcb->unsent == NULL) { pcb->state = FIN_WAIT_2; } break; - 8041754: e0d2 b.n 80418fc + 8041794: e0d2 b.n 804193c tcp_ack_now(pcb); - 8041756: 687b ldr r3, [r7, #4] - 8041758: 8b5b ldrh r3, [r3, #26] - 804175a: f043 0302 orr.w r3, r3, #2 - 804175e: b29a uxth r2, r3 - 8041760: 687b ldr r3, [r7, #4] - 8041762: 835a strh r2, [r3, #26] + 8041796: 687b ldr r3, [r7, #4] + 8041798: 8b5b ldrh r3, [r3, #26] + 804179a: f043 0302 orr.w r3, r3, #2 + 804179e: b29a uxth r2, r3 + 80417a0: 687b ldr r3, [r7, #4] + 80417a2: 835a strh r2, [r3, #26] pcb->state = CLOSING; - 8041764: 687b ldr r3, [r7, #4] - 8041766: 2208 movs r2, #8 - 8041768: 751a strb r2, [r3, #20] + 80417a4: 687b ldr r3, [r7, #4] + 80417a6: 2208 movs r2, #8 + 80417a8: 751a strb r2, [r3, #20] break; - 804176a: e0c7 b.n 80418fc + 80417aa: e0c7 b.n 804193c } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 804176c: 4b6b ldr r3, [pc, #428] ; (804191c ) - 804176e: 781b ldrb r3, [r3, #0] - 8041770: f003 0310 and.w r3, r3, #16 - 8041774: 2b00 cmp r3, #0 - 8041776: f000 80c1 beq.w 80418fc - 804177a: 687b ldr r3, [r7, #4] - 804177c: 6d1a ldr r2, [r3, #80] ; 0x50 - 804177e: 4b68 ldr r3, [pc, #416] ; (8041920 ) - 8041780: 681b ldr r3, [r3, #0] - 8041782: 429a cmp r2, r3 - 8041784: f040 80ba bne.w 80418fc + 80417ac: 4b6b ldr r3, [pc, #428] ; (804195c ) + 80417ae: 781b ldrb r3, [r3, #0] + 80417b0: f003 0310 and.w r3, r3, #16 + 80417b4: 2b00 cmp r3, #0 + 80417b6: f000 80c1 beq.w 804193c + 80417ba: 687b ldr r3, [r7, #4] + 80417bc: 6d1a ldr r2, [r3, #80] ; 0x50 + 80417be: 4b68 ldr r3, [pc, #416] ; (8041960 ) + 80417c0: 681b ldr r3, [r3, #0] + 80417c2: 429a cmp r2, r3 + 80417c4: f040 80ba bne.w 804193c pcb->unsent == NULL) { - 8041788: 687b ldr r3, [r7, #4] - 804178a: 6edb ldr r3, [r3, #108] ; 0x6c + 80417c8: 687b ldr r3, [r7, #4] + 80417ca: 6edb ldr r3, [r3, #108] ; 0x6c } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt) && - 804178c: 2b00 cmp r3, #0 - 804178e: f040 80b5 bne.w 80418fc + 80417cc: 2b00 cmp r3, #0 + 80417ce: f040 80b5 bne.w 804193c pcb->state = FIN_WAIT_2; - 8041792: 687b ldr r3, [r7, #4] - 8041794: 2206 movs r2, #6 - 8041796: 751a strb r2, [r3, #20] + 80417d2: 687b ldr r3, [r7, #4] + 80417d4: 2206 movs r2, #6 + 80417d6: 751a strb r2, [r3, #20] break; - 8041798: e0b0 b.n 80418fc + 80417d8: e0b0 b.n 804193c case FIN_WAIT_2: tcp_receive(pcb); - 804179a: 6878 ldr r0, [r7, #4] - 804179c: f000 f9ca bl 8041b34 + 80417da: 6878 ldr r0, [r7, #4] + 80417dc: f000 f9ca bl 8041b74 if (recv_flags & TF_GOT_FIN) { - 80417a0: 4b60 ldr r3, [pc, #384] ; (8041924 ) - 80417a2: 781b ldrb r3, [r3, #0] - 80417a4: f003 0320 and.w r3, r3, #32 - 80417a8: 2b00 cmp r3, #0 - 80417aa: f000 80a9 beq.w 8041900 + 80417e0: 4b60 ldr r3, [pc, #384] ; (8041964 ) + 80417e2: 781b ldrb r3, [r3, #0] + 80417e4: f003 0320 and.w r3, r3, #32 + 80417e8: 2b00 cmp r3, #0 + 80417ea: f000 80a9 beq.w 8041940 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); tcp_ack_now(pcb); - 80417ae: 687b ldr r3, [r7, #4] - 80417b0: 8b5b ldrh r3, [r3, #26] - 80417b2: f043 0302 orr.w r3, r3, #2 - 80417b6: b29a uxth r2, r3 - 80417b8: 687b ldr r3, [r7, #4] - 80417ba: 835a strh r2, [r3, #26] + 80417ee: 687b ldr r3, [r7, #4] + 80417f0: 8b5b ldrh r3, [r3, #26] + 80417f2: f043 0302 orr.w r3, r3, #2 + 80417f6: b29a uxth r2, r3 + 80417f8: 687b ldr r3, [r7, #4] + 80417fa: 835a strh r2, [r3, #26] tcp_pcb_purge(pcb); - 80417bc: 6878 ldr r0, [r7, #4] - 80417be: f7fe fd39 bl 8040234 + 80417fc: 6878 ldr r0, [r7, #4] + 80417fe: f7fe fd39 bl 8040274 TCP_RMV_ACTIVE(pcb); - 80417c2: 4b59 ldr r3, [pc, #356] ; (8041928 ) - 80417c4: 681b ldr r3, [r3, #0] - 80417c6: 687a ldr r2, [r7, #4] - 80417c8: 429a cmp r2, r3 - 80417ca: d105 bne.n 80417d8 - 80417cc: 4b56 ldr r3, [pc, #344] ; (8041928 ) - 80417ce: 681b ldr r3, [r3, #0] - 80417d0: 68db ldr r3, [r3, #12] - 80417d2: 4a55 ldr r2, [pc, #340] ; (8041928 ) - 80417d4: 6013 str r3, [r2, #0] - 80417d6: e013 b.n 8041800 - 80417d8: 4b53 ldr r3, [pc, #332] ; (8041928 ) - 80417da: 681b ldr r3, [r3, #0] - 80417dc: 613b str r3, [r7, #16] - 80417de: e00c b.n 80417fa - 80417e0: 693b ldr r3, [r7, #16] - 80417e2: 68db ldr r3, [r3, #12] - 80417e4: 687a ldr r2, [r7, #4] - 80417e6: 429a cmp r2, r3 - 80417e8: d104 bne.n 80417f4 - 80417ea: 687b ldr r3, [r7, #4] - 80417ec: 68da ldr r2, [r3, #12] - 80417ee: 693b ldr r3, [r7, #16] - 80417f0: 60da str r2, [r3, #12] - 80417f2: e005 b.n 8041800 - 80417f4: 693b ldr r3, [r7, #16] - 80417f6: 68db ldr r3, [r3, #12] - 80417f8: 613b str r3, [r7, #16] - 80417fa: 693b ldr r3, [r7, #16] - 80417fc: 2b00 cmp r3, #0 - 80417fe: d1ef bne.n 80417e0 - 8041800: 687b ldr r3, [r7, #4] - 8041802: 2200 movs r2, #0 - 8041804: 60da str r2, [r3, #12] - 8041806: 4b43 ldr r3, [pc, #268] ; (8041914 ) - 8041808: 2201 movs r2, #1 - 804180a: 701a strb r2, [r3, #0] + 8041802: 4b59 ldr r3, [pc, #356] ; (8041968 ) + 8041804: 681b ldr r3, [r3, #0] + 8041806: 687a ldr r2, [r7, #4] + 8041808: 429a cmp r2, r3 + 804180a: d105 bne.n 8041818 + 804180c: 4b56 ldr r3, [pc, #344] ; (8041968 ) + 804180e: 681b ldr r3, [r3, #0] + 8041810: 68db ldr r3, [r3, #12] + 8041812: 4a55 ldr r2, [pc, #340] ; (8041968 ) + 8041814: 6013 str r3, [r2, #0] + 8041816: e013 b.n 8041840 + 8041818: 4b53 ldr r3, [pc, #332] ; (8041968 ) + 804181a: 681b ldr r3, [r3, #0] + 804181c: 613b str r3, [r7, #16] + 804181e: e00c b.n 804183a + 8041820: 693b ldr r3, [r7, #16] + 8041822: 68db ldr r3, [r3, #12] + 8041824: 687a ldr r2, [r7, #4] + 8041826: 429a cmp r2, r3 + 8041828: d104 bne.n 8041834 + 804182a: 687b ldr r3, [r7, #4] + 804182c: 68da ldr r2, [r3, #12] + 804182e: 693b ldr r3, [r7, #16] + 8041830: 60da str r2, [r3, #12] + 8041832: e005 b.n 8041840 + 8041834: 693b ldr r3, [r7, #16] + 8041836: 68db ldr r3, [r3, #12] + 8041838: 613b str r3, [r7, #16] + 804183a: 693b ldr r3, [r7, #16] + 804183c: 2b00 cmp r3, #0 + 804183e: d1ef bne.n 8041820 + 8041840: 687b ldr r3, [r7, #4] + 8041842: 2200 movs r2, #0 + 8041844: 60da str r2, [r3, #12] + 8041846: 4b43 ldr r3, [pc, #268] ; (8041954 ) + 8041848: 2201 movs r2, #1 + 804184a: 701a strb r2, [r3, #0] pcb->state = TIME_WAIT; - 804180c: 687b ldr r3, [r7, #4] - 804180e: 220a movs r2, #10 - 8041810: 751a strb r2, [r3, #20] + 804184c: 687b ldr r3, [r7, #4] + 804184e: 220a movs r2, #10 + 8041850: 751a strb r2, [r3, #20] TCP_REG(&tcp_tw_pcbs, pcb); - 8041812: 4b41 ldr r3, [pc, #260] ; (8041918 ) - 8041814: 681a ldr r2, [r3, #0] - 8041816: 687b ldr r3, [r7, #4] - 8041818: 60da str r2, [r3, #12] - 804181a: 4a3f ldr r2, [pc, #252] ; (8041918 ) - 804181c: 687b ldr r3, [r7, #4] - 804181e: 6013 str r3, [r2, #0] - 8041820: f003 f8ea bl 80449f8 + 8041852: 4b41 ldr r3, [pc, #260] ; (8041958 ) + 8041854: 681a ldr r2, [r3, #0] + 8041856: 687b ldr r3, [r7, #4] + 8041858: 60da str r2, [r3, #12] + 804185a: 4a3f ldr r2, [pc, #252] ; (8041958 ) + 804185c: 687b ldr r3, [r7, #4] + 804185e: 6013 str r3, [r2, #0] + 8041860: f003 f8ea bl 8044a38 } break; - 8041824: e06c b.n 8041900 + 8041864: e06c b.n 8041940 case CLOSING: tcp_receive(pcb); - 8041826: 6878 ldr r0, [r7, #4] - 8041828: f000 f984 bl 8041b34 + 8041866: 6878 ldr r0, [r7, #4] + 8041868: f000 f984 bl 8041b74 if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) { - 804182c: 4b3b ldr r3, [pc, #236] ; (804191c ) - 804182e: 781b ldrb r3, [r3, #0] - 8041830: f003 0310 and.w r3, r3, #16 - 8041834: 2b00 cmp r3, #0 - 8041836: d065 beq.n 8041904 - 8041838: 687b ldr r3, [r7, #4] - 804183a: 6d1a ldr r2, [r3, #80] ; 0x50 - 804183c: 4b38 ldr r3, [pc, #224] ; (8041920 ) - 804183e: 681b ldr r3, [r3, #0] - 8041840: 429a cmp r2, r3 - 8041842: d15f bne.n 8041904 - 8041844: 687b ldr r3, [r7, #4] - 8041846: 6edb ldr r3, [r3, #108] ; 0x6c - 8041848: 2b00 cmp r3, #0 - 804184a: d15b bne.n 8041904 + 804186c: 4b3b ldr r3, [pc, #236] ; (804195c ) + 804186e: 781b ldrb r3, [r3, #0] + 8041870: f003 0310 and.w r3, r3, #16 + 8041874: 2b00 cmp r3, #0 + 8041876: d065 beq.n 8041944 + 8041878: 687b ldr r3, [r7, #4] + 804187a: 6d1a ldr r2, [r3, #80] ; 0x50 + 804187c: 4b38 ldr r3, [pc, #224] ; (8041960 ) + 804187e: 681b ldr r3, [r3, #0] + 8041880: 429a cmp r2, r3 + 8041882: d15f bne.n 8041944 + 8041884: 687b ldr r3, [r7, #4] + 8041886: 6edb ldr r3, [r3, #108] ; 0x6c + 8041888: 2b00 cmp r3, #0 + 804188a: d15b bne.n 8041944 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); tcp_pcb_purge(pcb); - 804184c: 6878 ldr r0, [r7, #4] - 804184e: f7fe fcf1 bl 8040234 + 804188c: 6878 ldr r0, [r7, #4] + 804188e: f7fe fcf1 bl 8040274 TCP_RMV_ACTIVE(pcb); - 8041852: 4b35 ldr r3, [pc, #212] ; (8041928 ) - 8041854: 681b ldr r3, [r3, #0] - 8041856: 687a ldr r2, [r7, #4] - 8041858: 429a cmp r2, r3 - 804185a: d105 bne.n 8041868 - 804185c: 4b32 ldr r3, [pc, #200] ; (8041928 ) - 804185e: 681b ldr r3, [r3, #0] - 8041860: 68db ldr r3, [r3, #12] - 8041862: 4a31 ldr r2, [pc, #196] ; (8041928 ) - 8041864: 6013 str r3, [r2, #0] - 8041866: e013 b.n 8041890 - 8041868: 4b2f ldr r3, [pc, #188] ; (8041928 ) - 804186a: 681b ldr r3, [r3, #0] - 804186c: 60fb str r3, [r7, #12] - 804186e: e00c b.n 804188a - 8041870: 68fb ldr r3, [r7, #12] - 8041872: 68db ldr r3, [r3, #12] - 8041874: 687a ldr r2, [r7, #4] - 8041876: 429a cmp r2, r3 - 8041878: d104 bne.n 8041884 - 804187a: 687b ldr r3, [r7, #4] - 804187c: 68da ldr r2, [r3, #12] - 804187e: 68fb ldr r3, [r7, #12] - 8041880: 60da str r2, [r3, #12] - 8041882: e005 b.n 8041890 - 8041884: 68fb ldr r3, [r7, #12] - 8041886: 68db ldr r3, [r3, #12] - 8041888: 60fb str r3, [r7, #12] - 804188a: 68fb ldr r3, [r7, #12] - 804188c: 2b00 cmp r3, #0 - 804188e: d1ef bne.n 8041870 - 8041890: 687b ldr r3, [r7, #4] - 8041892: 2200 movs r2, #0 - 8041894: 60da str r2, [r3, #12] - 8041896: 4b1f ldr r3, [pc, #124] ; (8041914 ) - 8041898: 2201 movs r2, #1 - 804189a: 701a strb r2, [r3, #0] + 8041892: 4b35 ldr r3, [pc, #212] ; (8041968 ) + 8041894: 681b ldr r3, [r3, #0] + 8041896: 687a ldr r2, [r7, #4] + 8041898: 429a cmp r2, r3 + 804189a: d105 bne.n 80418a8 + 804189c: 4b32 ldr r3, [pc, #200] ; (8041968 ) + 804189e: 681b ldr r3, [r3, #0] + 80418a0: 68db ldr r3, [r3, #12] + 80418a2: 4a31 ldr r2, [pc, #196] ; (8041968 ) + 80418a4: 6013 str r3, [r2, #0] + 80418a6: e013 b.n 80418d0 + 80418a8: 4b2f ldr r3, [pc, #188] ; (8041968 ) + 80418aa: 681b ldr r3, [r3, #0] + 80418ac: 60fb str r3, [r7, #12] + 80418ae: e00c b.n 80418ca + 80418b0: 68fb ldr r3, [r7, #12] + 80418b2: 68db ldr r3, [r3, #12] + 80418b4: 687a ldr r2, [r7, #4] + 80418b6: 429a cmp r2, r3 + 80418b8: d104 bne.n 80418c4 + 80418ba: 687b ldr r3, [r7, #4] + 80418bc: 68da ldr r2, [r3, #12] + 80418be: 68fb ldr r3, [r7, #12] + 80418c0: 60da str r2, [r3, #12] + 80418c2: e005 b.n 80418d0 + 80418c4: 68fb ldr r3, [r7, #12] + 80418c6: 68db ldr r3, [r3, #12] + 80418c8: 60fb str r3, [r7, #12] + 80418ca: 68fb ldr r3, [r7, #12] + 80418cc: 2b00 cmp r3, #0 + 80418ce: d1ef bne.n 80418b0 + 80418d0: 687b ldr r3, [r7, #4] + 80418d2: 2200 movs r2, #0 + 80418d4: 60da str r2, [r3, #12] + 80418d6: 4b1f ldr r3, [pc, #124] ; (8041954 ) + 80418d8: 2201 movs r2, #1 + 80418da: 701a strb r2, [r3, #0] pcb->state = TIME_WAIT; - 804189c: 687b ldr r3, [r7, #4] - 804189e: 220a movs r2, #10 - 80418a0: 751a strb r2, [r3, #20] + 80418dc: 687b ldr r3, [r7, #4] + 80418de: 220a movs r2, #10 + 80418e0: 751a strb r2, [r3, #20] TCP_REG(&tcp_tw_pcbs, pcb); - 80418a2: 4b1d ldr r3, [pc, #116] ; (8041918 ) - 80418a4: 681a ldr r2, [r3, #0] - 80418a6: 687b ldr r3, [r7, #4] - 80418a8: 60da str r2, [r3, #12] - 80418aa: 4a1b ldr r2, [pc, #108] ; (8041918 ) - 80418ac: 687b ldr r3, [r7, #4] - 80418ae: 6013 str r3, [r2, #0] - 80418b0: f003 f8a2 bl 80449f8 + 80418e2: 4b1d ldr r3, [pc, #116] ; (8041958 ) + 80418e4: 681a ldr r2, [r3, #0] + 80418e6: 687b ldr r3, [r7, #4] + 80418e8: 60da str r2, [r3, #12] + 80418ea: 4a1b ldr r2, [pc, #108] ; (8041958 ) + 80418ec: 687b ldr r3, [r7, #4] + 80418ee: 6013 str r3, [r2, #0] + 80418f0: f003 f8a2 bl 8044a38 } break; - 80418b4: e026 b.n 8041904 + 80418f4: e026 b.n 8041944 case LAST_ACK: tcp_receive(pcb); - 80418b6: 6878 ldr r0, [r7, #4] - 80418b8: f000 f93c bl 8041b34 + 80418f6: 6878 ldr r0, [r7, #4] + 80418f8: f000 f93c bl 8041b74 if ((flags & TCP_ACK) && ackno == pcb->snd_nxt && pcb->unsent == NULL) { - 80418bc: 4b17 ldr r3, [pc, #92] ; (804191c ) - 80418be: 781b ldrb r3, [r3, #0] - 80418c0: f003 0310 and.w r3, r3, #16 - 80418c4: 2b00 cmp r3, #0 - 80418c6: d01f beq.n 8041908 - 80418c8: 687b ldr r3, [r7, #4] - 80418ca: 6d1a ldr r2, [r3, #80] ; 0x50 - 80418cc: 4b14 ldr r3, [pc, #80] ; (8041920 ) - 80418ce: 681b ldr r3, [r3, #0] - 80418d0: 429a cmp r2, r3 - 80418d2: d119 bne.n 8041908 - 80418d4: 687b ldr r3, [r7, #4] - 80418d6: 6edb ldr r3, [r3, #108] ; 0x6c - 80418d8: 2b00 cmp r3, #0 - 80418da: d115 bne.n 8041908 + 80418fc: 4b17 ldr r3, [pc, #92] ; (804195c ) + 80418fe: 781b ldrb r3, [r3, #0] + 8041900: f003 0310 and.w r3, r3, #16 + 8041904: 2b00 cmp r3, #0 + 8041906: d01f beq.n 8041948 + 8041908: 687b ldr r3, [r7, #4] + 804190a: 6d1a ldr r2, [r3, #80] ; 0x50 + 804190c: 4b14 ldr r3, [pc, #80] ; (8041960 ) + 804190e: 681b ldr r3, [r3, #0] + 8041910: 429a cmp r2, r3 + 8041912: d119 bne.n 8041948 + 8041914: 687b ldr r3, [r7, #4] + 8041916: 6edb ldr r3, [r3, #108] ; 0x6c + 8041918: 2b00 cmp r3, #0 + 804191a: d115 bne.n 8041948 LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */ recv_flags |= TF_CLOSED; - 80418dc: 4b11 ldr r3, [pc, #68] ; (8041924 ) - 80418de: 781b ldrb r3, [r3, #0] - 80418e0: f043 0310 orr.w r3, r3, #16 - 80418e4: b2da uxtb r2, r3 - 80418e6: 4b0f ldr r3, [pc, #60] ; (8041924 ) - 80418e8: 701a strb r2, [r3, #0] + 804191c: 4b11 ldr r3, [pc, #68] ; (8041964 ) + 804191e: 781b ldrb r3, [r3, #0] + 8041920: f043 0310 orr.w r3, r3, #16 + 8041924: b2da uxtb r2, r3 + 8041926: 4b0f ldr r3, [pc, #60] ; (8041964 ) + 8041928: 701a strb r2, [r3, #0] } break; - 80418ea: e00d b.n 8041908 + 804192a: e00d b.n 8041948 default: break; - 80418ec: bf00 nop - 80418ee: e00c b.n 804190a + 804192c: bf00 nop + 804192e: e00c b.n 804194a break; - 80418f0: bf00 nop - 80418f2: e00a b.n 804190a + 8041930: bf00 nop + 8041932: e00a b.n 804194a break; - 80418f4: bf00 nop - 80418f6: e008 b.n 804190a + 8041934: bf00 nop + 8041936: e008 b.n 804194a break; - 80418f8: bf00 nop - 80418fa: e006 b.n 804190a + 8041938: bf00 nop + 804193a: e006 b.n 804194a break; - 80418fc: bf00 nop - 80418fe: e004 b.n 804190a + 804193c: bf00 nop + 804193e: e004 b.n 804194a break; - 8041900: bf00 nop - 8041902: e002 b.n 804190a + 8041940: bf00 nop + 8041942: e002 b.n 804194a break; - 8041904: bf00 nop - 8041906: e000 b.n 804190a + 8041944: bf00 nop + 8041946: e000 b.n 804194a break; - 8041908: bf00 nop + 8041948: bf00 nop } return ERR_OK; - 804190a: 2300 movs r3, #0 -} - 804190c: 4618 mov r0, r3 - 804190e: 3724 adds r7, #36 ; 0x24 - 8041910: 46bd mov sp, r7 - 8041912: bd90 pop {r4, r7, pc} - 8041914: 2400eafc .word 0x2400eafc - 8041918: 2400eaf8 .word 0x2400eaf8 - 804191c: 2400eb2c .word 0x2400eb2c - 8041920: 2400eb24 .word 0x2400eb24 - 8041924: 2400eb2d .word 0x2400eb2d - 8041928: 2400eaf4 .word 0x2400eaf4 - -0804192c : + 804194a: 2300 movs r3, #0 +} + 804194c: 4618 mov r0, r3 + 804194e: 3724 adds r7, #36 ; 0x24 + 8041950: 46bd mov sp, r7 + 8041952: bd90 pop {r4, r7, pc} + 8041954: 2400eafc .word 0x2400eafc + 8041958: 2400eaf8 .word 0x2400eaf8 + 804195c: 2400eb2c .word 0x2400eb2c + 8041960: 2400eb24 .word 0x2400eb24 + 8041964: 2400eb2d .word 0x2400eb2d + 8041968: 2400eaf4 .word 0x2400eaf4 + +0804196c : * * Called from tcp_receive() */ static void tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next) { - 804192c: b590 push {r4, r7, lr} - 804192e: b085 sub sp, #20 - 8041930: af00 add r7, sp, #0 - 8041932: 6078 str r0, [r7, #4] - 8041934: 6039 str r1, [r7, #0] + 804196c: b590 push {r4, r7, lr} + 804196e: b085 sub sp, #20 + 8041970: af00 add r7, sp, #0 + 8041972: 6078 str r0, [r7, #4] + 8041974: 6039 str r1, [r7, #0] struct tcp_seg *old_seg; LWIP_ASSERT("tcp_oos_insert_segment: invalid cseg", cseg != NULL); - 8041936: 687b ldr r3, [r7, #4] - 8041938: 2b00 cmp r3, #0 - 804193a: d106 bne.n 804194a - 804193c: 4b3b ldr r3, [pc, #236] ; (8041a2c ) - 804193e: f240 421f movw r2, #1055 ; 0x41f - 8041942: 493b ldr r1, [pc, #236] ; (8041a30 ) - 8041944: 483b ldr r0, [pc, #236] ; (8041a34 ) - 8041946: f006 fb2d bl 8047fa4 + 8041976: 687b ldr r3, [r7, #4] + 8041978: 2b00 cmp r3, #0 + 804197a: d106 bne.n 804198a + 804197c: 4b3b ldr r3, [pc, #236] ; (8041a6c ) + 804197e: f240 421f movw r2, #1055 ; 0x41f + 8041982: 493b ldr r1, [pc, #236] ; (8041a70 ) + 8041984: 483b ldr r0, [pc, #236] ; (8041a74 ) + 8041986: f006 fb2d bl 8047fe4 if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - 804194a: 687b ldr r3, [r7, #4] - 804194c: 68db ldr r3, [r3, #12] - 804194e: 899b ldrh r3, [r3, #12] - 8041950: b29b uxth r3, r3 - 8041952: 4618 mov r0, r3 - 8041954: f7fb fb3a bl 803cfcc - 8041958: 4603 mov r3, r0 - 804195a: b2db uxtb r3, r3 - 804195c: f003 0301 and.w r3, r3, #1 - 8041960: 2b00 cmp r3, #0 - 8041962: d028 beq.n 80419b6 + 804198a: 687b ldr r3, [r7, #4] + 804198c: 68db ldr r3, [r3, #12] + 804198e: 899b ldrh r3, [r3, #12] + 8041990: b29b uxth r3, r3 + 8041992: 4618 mov r0, r3 + 8041994: f7fb fb3a bl 803d00c + 8041998: 4603 mov r3, r0 + 804199a: b2db uxtb r3, r3 + 804199c: f003 0301 and.w r3, r3, #1 + 80419a0: 2b00 cmp r3, #0 + 80419a2: d028 beq.n 80419f6 /* received segment overlaps all following segments */ tcp_segs_free(next); - 8041964: 6838 ldr r0, [r7, #0] - 8041966: f7fe fa63 bl 803fe30 + 80419a4: 6838 ldr r0, [r7, #0] + 80419a6: f7fe fa63 bl 803fe70 next = NULL; - 804196a: 2300 movs r3, #0 - 804196c: 603b str r3, [r7, #0] - 804196e: e056 b.n 8041a1e + 80419aa: 2300 movs r3, #0 + 80419ac: 603b str r3, [r7, #0] + 80419ae: e056 b.n 8041a5e oos queue may have segments with FIN flag */ while (next && TCP_SEQ_GEQ((seqno + cseg->len), (next->tcphdr->seqno + next->len))) { /* cseg with FIN already processed */ if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - 8041970: 683b ldr r3, [r7, #0] - 8041972: 68db ldr r3, [r3, #12] - 8041974: 899b ldrh r3, [r3, #12] - 8041976: b29b uxth r3, r3 - 8041978: 4618 mov r0, r3 - 804197a: f7fb fb27 bl 803cfcc - 804197e: 4603 mov r3, r0 - 8041980: b2db uxtb r3, r3 - 8041982: f003 0301 and.w r3, r3, #1 - 8041986: 2b00 cmp r3, #0 - 8041988: d00d beq.n 80419a6 + 80419b0: 683b ldr r3, [r7, #0] + 80419b2: 68db ldr r3, [r3, #12] + 80419b4: 899b ldrh r3, [r3, #12] + 80419b6: b29b uxth r3, r3 + 80419b8: 4618 mov r0, r3 + 80419ba: f7fb fb27 bl 803d00c + 80419be: 4603 mov r3, r0 + 80419c0: b2db uxtb r3, r3 + 80419c2: f003 0301 and.w r3, r3, #1 + 80419c6: 2b00 cmp r3, #0 + 80419c8: d00d beq.n 80419e6 TCPH_SET_FLAG(cseg->tcphdr, TCP_FIN); - 804198a: 687b ldr r3, [r7, #4] - 804198c: 68db ldr r3, [r3, #12] - 804198e: 899b ldrh r3, [r3, #12] - 8041990: b29c uxth r4, r3 - 8041992: 2001 movs r0, #1 - 8041994: f7fb fb1a bl 803cfcc - 8041998: 4603 mov r3, r0 - 804199a: 461a mov r2, r3 - 804199c: 687b ldr r3, [r7, #4] - 804199e: 68db ldr r3, [r3, #12] - 80419a0: 4322 orrs r2, r4 - 80419a2: b292 uxth r2, r2 - 80419a4: 819a strh r2, [r3, #12] + 80419ca: 687b ldr r3, [r7, #4] + 80419cc: 68db ldr r3, [r3, #12] + 80419ce: 899b ldrh r3, [r3, #12] + 80419d0: b29c uxth r4, r3 + 80419d2: 2001 movs r0, #1 + 80419d4: f7fb fb1a bl 803d00c + 80419d8: 4603 mov r3, r0 + 80419da: 461a mov r2, r3 + 80419dc: 687b ldr r3, [r7, #4] + 80419de: 68db ldr r3, [r3, #12] + 80419e0: 4322 orrs r2, r4 + 80419e2: b292 uxth r2, r2 + 80419e4: 819a strh r2, [r3, #12] } old_seg = next; - 80419a6: 683b ldr r3, [r7, #0] - 80419a8: 60fb str r3, [r7, #12] + 80419e6: 683b ldr r3, [r7, #0] + 80419e8: 60fb str r3, [r7, #12] next = next->next; - 80419aa: 683b ldr r3, [r7, #0] - 80419ac: 681b ldr r3, [r3, #0] - 80419ae: 603b str r3, [r7, #0] + 80419ea: 683b ldr r3, [r7, #0] + 80419ec: 681b ldr r3, [r3, #0] + 80419ee: 603b str r3, [r7, #0] tcp_seg_free(old_seg); - 80419b0: 68f8 ldr r0, [r7, #12] - 80419b2: f7fe fa52 bl 803fe5a + 80419f0: 68f8 ldr r0, [r7, #12] + 80419f2: f7fe fa52 bl 803fe9a while (next && - 80419b6: 683b ldr r3, [r7, #0] - 80419b8: 2b00 cmp r3, #0 - 80419ba: d00e beq.n 80419da + 80419f6: 683b ldr r3, [r7, #0] + 80419f8: 2b00 cmp r3, #0 + 80419fa: d00e beq.n 8041a1a TCP_SEQ_GEQ((seqno + cseg->len), - 80419bc: 687b ldr r3, [r7, #4] - 80419be: 891b ldrh r3, [r3, #8] - 80419c0: 461a mov r2, r3 - 80419c2: 4b1d ldr r3, [pc, #116] ; (8041a38 ) - 80419c4: 681b ldr r3, [r3, #0] - 80419c6: 441a add r2, r3 - 80419c8: 683b ldr r3, [r7, #0] - 80419ca: 68db ldr r3, [r3, #12] - 80419cc: 685b ldr r3, [r3, #4] - 80419ce: 6839 ldr r1, [r7, #0] - 80419d0: 8909 ldrh r1, [r1, #8] - 80419d2: 440b add r3, r1 - 80419d4: 1ad3 subs r3, r2, r3 + 80419fc: 687b ldr r3, [r7, #4] + 80419fe: 891b ldrh r3, [r3, #8] + 8041a00: 461a mov r2, r3 + 8041a02: 4b1d ldr r3, [pc, #116] ; (8041a78 ) + 8041a04: 681b ldr r3, [r3, #0] + 8041a06: 441a add r2, r3 + 8041a08: 683b ldr r3, [r7, #0] + 8041a0a: 68db ldr r3, [r3, #12] + 8041a0c: 685b ldr r3, [r3, #4] + 8041a0e: 6839 ldr r1, [r7, #0] + 8041a10: 8909 ldrh r1, [r1, #8] + 8041a12: 440b add r3, r1 + 8041a14: 1ad3 subs r3, r2, r3 while (next && - 80419d6: 2b00 cmp r3, #0 - 80419d8: daca bge.n 8041970 + 8041a16: 2b00 cmp r3, #0 + 8041a18: daca bge.n 80419b0 } if (next && - 80419da: 683b ldr r3, [r7, #0] - 80419dc: 2b00 cmp r3, #0 - 80419de: d01e beq.n 8041a1e + 8041a1a: 683b ldr r3, [r7, #0] + 8041a1c: 2b00 cmp r3, #0 + 8041a1e: d01e beq.n 8041a5e TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) { - 80419e0: 687b ldr r3, [r7, #4] - 80419e2: 891b ldrh r3, [r3, #8] - 80419e4: 461a mov r2, r3 - 80419e6: 4b14 ldr r3, [pc, #80] ; (8041a38 ) - 80419e8: 681b ldr r3, [r3, #0] - 80419ea: 441a add r2, r3 - 80419ec: 683b ldr r3, [r7, #0] - 80419ee: 68db ldr r3, [r3, #12] - 80419f0: 685b ldr r3, [r3, #4] - 80419f2: 1ad3 subs r3, r2, r3 + 8041a20: 687b ldr r3, [r7, #4] + 8041a22: 891b ldrh r3, [r3, #8] + 8041a24: 461a mov r2, r3 + 8041a26: 4b14 ldr r3, [pc, #80] ; (8041a78 ) + 8041a28: 681b ldr r3, [r3, #0] + 8041a2a: 441a add r2, r3 + 8041a2c: 683b ldr r3, [r7, #0] + 8041a2e: 68db ldr r3, [r3, #12] + 8041a30: 685b ldr r3, [r3, #4] + 8041a32: 1ad3 subs r3, r2, r3 if (next && - 80419f4: 2b00 cmp r3, #0 - 80419f6: dd12 ble.n 8041a1e + 8041a34: 2b00 cmp r3, #0 + 8041a36: dd12 ble.n 8041a5e /* We need to trim the incoming segment. */ cseg->len = (u16_t)(next->tcphdr->seqno - seqno); - 80419f8: 683b ldr r3, [r7, #0] - 80419fa: 68db ldr r3, [r3, #12] - 80419fc: 685b ldr r3, [r3, #4] - 80419fe: b29a uxth r2, r3 - 8041a00: 4b0d ldr r3, [pc, #52] ; (8041a38 ) - 8041a02: 681b ldr r3, [r3, #0] - 8041a04: b29b uxth r3, r3 - 8041a06: 1ad3 subs r3, r2, r3 - 8041a08: b29a uxth r2, r3 - 8041a0a: 687b ldr r3, [r7, #4] - 8041a0c: 811a strh r2, [r3, #8] + 8041a38: 683b ldr r3, [r7, #0] + 8041a3a: 68db ldr r3, [r3, #12] + 8041a3c: 685b ldr r3, [r3, #4] + 8041a3e: b29a uxth r2, r3 + 8041a40: 4b0d ldr r3, [pc, #52] ; (8041a78 ) + 8041a42: 681b ldr r3, [r3, #0] + 8041a44: b29b uxth r3, r3 + 8041a46: 1ad3 subs r3, r2, r3 + 8041a48: b29a uxth r2, r3 + 8041a4a: 687b ldr r3, [r7, #4] + 8041a4c: 811a strh r2, [r3, #8] pbuf_realloc(cseg->p, cseg->len); - 8041a0e: 687b ldr r3, [r7, #4] - 8041a10: 685a ldr r2, [r3, #4] - 8041a12: 687b ldr r3, [r7, #4] - 8041a14: 891b ldrh r3, [r3, #8] - 8041a16: 4619 mov r1, r3 - 8041a18: 4610 mov r0, r2 - 8041a1a: f7fc fd83 bl 803e524 + 8041a4e: 687b ldr r3, [r7, #4] + 8041a50: 685a ldr r2, [r3, #4] + 8041a52: 687b ldr r3, [r7, #4] + 8041a54: 891b ldrh r3, [r3, #8] + 8041a56: 4619 mov r1, r3 + 8041a58: 4610 mov r0, r2 + 8041a5a: f7fc fd83 bl 803e564 } } cseg->next = next; - 8041a1e: 687b ldr r3, [r7, #4] - 8041a20: 683a ldr r2, [r7, #0] - 8041a22: 601a str r2, [r3, #0] + 8041a5e: 687b ldr r3, [r7, #4] + 8041a60: 683a ldr r2, [r7, #0] + 8041a62: 601a str r2, [r3, #0] } - 8041a24: bf00 nop - 8041a26: 3714 adds r7, #20 - 8041a28: 46bd mov sp, r7 - 8041a2a: bd90 pop {r4, r7, pc} - 8041a2c: 0804b398 .word 0x0804b398 - 8041a30: 0804b658 .word 0x0804b658 - 8041a34: 0804b3e4 .word 0x0804b3e4 - 8041a38: 2400eb20 .word 0x2400eb20 + 8041a64: bf00 nop + 8041a66: 3714 adds r7, #20 + 8041a68: 46bd mov sp, r7 + 8041a6a: bd90 pop {r4, r7, pc} + 8041a6c: 0804b3d8 .word 0x0804b3d8 + 8041a70: 0804b698 .word 0x0804b698 + 8041a74: 0804b424 .word 0x0804b424 + 8041a78: 2400eb20 .word 0x2400eb20 -08041a3c : +08041a7c : /** Remove segments from a list if the incoming ACK acknowledges them */ static struct tcp_seg * tcp_free_acked_segments(struct tcp_pcb *pcb, struct tcp_seg *seg_list, const char *dbg_list_name, struct tcp_seg *dbg_other_seg_list) { - 8041a3c: b5b0 push {r4, r5, r7, lr} - 8041a3e: b086 sub sp, #24 - 8041a40: af00 add r7, sp, #0 - 8041a42: 60f8 str r0, [r7, #12] - 8041a44: 60b9 str r1, [r7, #8] - 8041a46: 607a str r2, [r7, #4] - 8041a48: 603b str r3, [r7, #0] + 8041a7c: b5b0 push {r4, r5, r7, lr} + 8041a7e: b086 sub sp, #24 + 8041a80: af00 add r7, sp, #0 + 8041a82: 60f8 str r0, [r7, #12] + 8041a84: 60b9 str r1, [r7, #8] + 8041a86: 607a str r2, [r7, #4] + 8041a88: 603b str r3, [r7, #0] u16_t clen; LWIP_UNUSED_ARG(dbg_list_name); LWIP_UNUSED_ARG(dbg_other_seg_list); while (seg_list != NULL && - 8041a4a: e03e b.n 8041aca + 8041a8a: e03e b.n 8041b0a LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->%s\n", lwip_ntohl(seg_list->tcphdr->seqno), lwip_ntohl(seg_list->tcphdr->seqno) + TCP_TCPLEN(seg_list), dbg_list_name)); next = seg_list; - 8041a4c: 68bb ldr r3, [r7, #8] - 8041a4e: 617b str r3, [r7, #20] + 8041a8c: 68bb ldr r3, [r7, #8] + 8041a8e: 617b str r3, [r7, #20] seg_list = seg_list->next; - 8041a50: 68bb ldr r3, [r7, #8] - 8041a52: 681b ldr r3, [r3, #0] - 8041a54: 60bb str r3, [r7, #8] + 8041a90: 68bb ldr r3, [r7, #8] + 8041a92: 681b ldr r3, [r3, #0] + 8041a94: 60bb str r3, [r7, #8] clen = pbuf_clen(next->p); - 8041a56: 697b ldr r3, [r7, #20] - 8041a58: 685b ldr r3, [r3, #4] - 8041a5a: 4618 mov r0, r3 - 8041a5c: f7fc ff70 bl 803e940 - 8041a60: 4603 mov r3, r0 - 8041a62: 827b strh r3, [r7, #18] + 8041a96: 697b ldr r3, [r7, #20] + 8041a98: 685b ldr r3, [r3, #4] + 8041a9a: 4618 mov r0, r3 + 8041a9c: f7fc ff70 bl 803e980 + 8041aa0: 4603 mov r3, r0 + 8041aa2: 827b strh r3, [r7, #18] LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"TCPWNDSIZE_F" ... ", (tcpwnd_size_t)pcb->snd_queuelen)); LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= clen)); - 8041a64: 68fb ldr r3, [r7, #12] - 8041a66: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8041a6a: 8a7a ldrh r2, [r7, #18] - 8041a6c: 429a cmp r2, r3 - 8041a6e: d906 bls.n 8041a7e - 8041a70: 4b2a ldr r3, [pc, #168] ; (8041b1c ) - 8041a72: f240 4257 movw r2, #1111 ; 0x457 - 8041a76: 492a ldr r1, [pc, #168] ; (8041b20 ) - 8041a78: 482a ldr r0, [pc, #168] ; (8041b24 ) - 8041a7a: f006 fa93 bl 8047fa4 + 8041aa4: 68fb ldr r3, [r7, #12] + 8041aa6: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8041aaa: 8a7a ldrh r2, [r7, #18] + 8041aac: 429a cmp r2, r3 + 8041aae: d906 bls.n 8041abe + 8041ab0: 4b2a ldr r3, [pc, #168] ; (8041b5c ) + 8041ab2: f240 4257 movw r2, #1111 ; 0x457 + 8041ab6: 492a ldr r1, [pc, #168] ; (8041b60 ) + 8041ab8: 482a ldr r0, [pc, #168] ; (8041b64 ) + 8041aba: f006 fa93 bl 8047fe4 pcb->snd_queuelen = (u16_t)(pcb->snd_queuelen - clen); - 8041a7e: 68fb ldr r3, [r7, #12] - 8041a80: f8b3 2066 ldrh.w r2, [r3, #102] ; 0x66 - 8041a84: 8a7b ldrh r3, [r7, #18] - 8041a86: 1ad3 subs r3, r2, r3 - 8041a88: b29a uxth r2, r3 - 8041a8a: 68fb ldr r3, [r7, #12] - 8041a8c: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 8041abe: 68fb ldr r3, [r7, #12] + 8041ac0: f8b3 2066 ldrh.w r2, [r3, #102] ; 0x66 + 8041ac4: 8a7b ldrh r3, [r7, #18] + 8041ac6: 1ad3 subs r3, r2, r3 + 8041ac8: b29a uxth r2, r3 + 8041aca: 68fb ldr r3, [r7, #12] + 8041acc: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 recv_acked = (tcpwnd_size_t)(recv_acked + next->len); - 8041a90: 697b ldr r3, [r7, #20] - 8041a92: 891a ldrh r2, [r3, #8] - 8041a94: 4b24 ldr r3, [pc, #144] ; (8041b28 ) - 8041a96: 881b ldrh r3, [r3, #0] - 8041a98: 4413 add r3, r2 - 8041a9a: b29a uxth r2, r3 - 8041a9c: 4b22 ldr r3, [pc, #136] ; (8041b28 ) - 8041a9e: 801a strh r2, [r3, #0] + 8041ad0: 697b ldr r3, [r7, #20] + 8041ad2: 891a ldrh r2, [r3, #8] + 8041ad4: 4b24 ldr r3, [pc, #144] ; (8041b68 ) + 8041ad6: 881b ldrh r3, [r3, #0] + 8041ad8: 4413 add r3, r2 + 8041ada: b29a uxth r2, r3 + 8041adc: 4b22 ldr r3, [pc, #136] ; (8041b68 ) + 8041ade: 801a strh r2, [r3, #0] tcp_seg_free(next); - 8041aa0: 6978 ldr r0, [r7, #20] - 8041aa2: f7fe f9da bl 803fe5a + 8041ae0: 6978 ldr r0, [r7, #20] + 8041ae2: f7fe f9da bl 803fe9a LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"TCPWNDSIZE_F" (after freeing %s)\n", (tcpwnd_size_t)pcb->snd_queuelen, dbg_list_name)); if (pcb->snd_queuelen != 0) { - 8041aa6: 68fb ldr r3, [r7, #12] - 8041aa8: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8041aac: 2b00 cmp r3, #0 - 8041aae: d00c beq.n 8041aca + 8041ae6: 68fb ldr r3, [r7, #12] + 8041ae8: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8041aec: 2b00 cmp r3, #0 + 8041aee: d00c beq.n 8041b0a LWIP_ASSERT("tcp_receive: valid queue length", - 8041ab0: 68bb ldr r3, [r7, #8] - 8041ab2: 2b00 cmp r3, #0 - 8041ab4: d109 bne.n 8041aca - 8041ab6: 683b ldr r3, [r7, #0] - 8041ab8: 2b00 cmp r3, #0 - 8041aba: d106 bne.n 8041aca - 8041abc: 4b17 ldr r3, [pc, #92] ; (8041b1c ) - 8041abe: f240 4261 movw r2, #1121 ; 0x461 - 8041ac2: 491a ldr r1, [pc, #104] ; (8041b2c ) - 8041ac4: 4817 ldr r0, [pc, #92] ; (8041b24 ) - 8041ac6: f006 fa6d bl 8047fa4 + 8041af0: 68bb ldr r3, [r7, #8] + 8041af2: 2b00 cmp r3, #0 + 8041af4: d109 bne.n 8041b0a + 8041af6: 683b ldr r3, [r7, #0] + 8041af8: 2b00 cmp r3, #0 + 8041afa: d106 bne.n 8041b0a + 8041afc: 4b17 ldr r3, [pc, #92] ; (8041b5c ) + 8041afe: f240 4261 movw r2, #1121 ; 0x461 + 8041b02: 491a ldr r1, [pc, #104] ; (8041b6c ) + 8041b04: 4817 ldr r0, [pc, #92] ; (8041b64 ) + 8041b06: f006 fa6d bl 8047fe4 while (seg_list != NULL && - 8041aca: 68bb ldr r3, [r7, #8] - 8041acc: 2b00 cmp r3, #0 - 8041ace: d020 beq.n 8041b12 + 8041b0a: 68bb ldr r3, [r7, #8] + 8041b0c: 2b00 cmp r3, #0 + 8041b0e: d020 beq.n 8041b52 TCP_SEQ_LEQ(lwip_ntohl(seg_list->tcphdr->seqno) + - 8041ad0: 68bb ldr r3, [r7, #8] - 8041ad2: 68db ldr r3, [r3, #12] - 8041ad4: 685b ldr r3, [r3, #4] - 8041ad6: 4618 mov r0, r3 - 8041ad8: f7fb fa8d bl 803cff6 - 8041adc: 4604 mov r4, r0 - 8041ade: 68bb ldr r3, [r7, #8] - 8041ae0: 891b ldrh r3, [r3, #8] - 8041ae2: 461d mov r5, r3 - 8041ae4: 68bb ldr r3, [r7, #8] - 8041ae6: 68db ldr r3, [r3, #12] - 8041ae8: 899b ldrh r3, [r3, #12] - 8041aea: b29b uxth r3, r3 - 8041aec: 4618 mov r0, r3 - 8041aee: f7fb fa6d bl 803cfcc - 8041af2: 4603 mov r3, r0 - 8041af4: b2db uxtb r3, r3 - 8041af6: f003 0303 and.w r3, r3, #3 - 8041afa: 2b00 cmp r3, #0 - 8041afc: d001 beq.n 8041b02 - 8041afe: 2301 movs r3, #1 - 8041b00: e000 b.n 8041b04 - 8041b02: 2300 movs r3, #0 - 8041b04: 442b add r3, r5 - 8041b06: 18e2 adds r2, r4, r3 - 8041b08: 4b09 ldr r3, [pc, #36] ; (8041b30 ) - 8041b0a: 681b ldr r3, [r3, #0] - 8041b0c: 1ad3 subs r3, r2, r3 + 8041b10: 68bb ldr r3, [r7, #8] + 8041b12: 68db ldr r3, [r3, #12] + 8041b14: 685b ldr r3, [r3, #4] + 8041b16: 4618 mov r0, r3 + 8041b18: f7fb fa8d bl 803d036 + 8041b1c: 4604 mov r4, r0 + 8041b1e: 68bb ldr r3, [r7, #8] + 8041b20: 891b ldrh r3, [r3, #8] + 8041b22: 461d mov r5, r3 + 8041b24: 68bb ldr r3, [r7, #8] + 8041b26: 68db ldr r3, [r3, #12] + 8041b28: 899b ldrh r3, [r3, #12] + 8041b2a: b29b uxth r3, r3 + 8041b2c: 4618 mov r0, r3 + 8041b2e: f7fb fa6d bl 803d00c + 8041b32: 4603 mov r3, r0 + 8041b34: b2db uxtb r3, r3 + 8041b36: f003 0303 and.w r3, r3, #3 + 8041b3a: 2b00 cmp r3, #0 + 8041b3c: d001 beq.n 8041b42 + 8041b3e: 2301 movs r3, #1 + 8041b40: e000 b.n 8041b44 + 8041b42: 2300 movs r3, #0 + 8041b44: 442b add r3, r5 + 8041b46: 18e2 adds r2, r4, r3 + 8041b48: 4b09 ldr r3, [pc, #36] ; (8041b70 ) + 8041b4a: 681b ldr r3, [r3, #0] + 8041b4c: 1ad3 subs r3, r2, r3 while (seg_list != NULL && - 8041b0e: 2b00 cmp r3, #0 - 8041b10: dd9c ble.n 8041a4c + 8041b4e: 2b00 cmp r3, #0 + 8041b50: dd9c ble.n 8041a8c seg_list != NULL || dbg_other_seg_list != NULL); } } return seg_list; - 8041b12: 68bb ldr r3, [r7, #8] -} - 8041b14: 4618 mov r0, r3 - 8041b16: 3718 adds r7, #24 - 8041b18: 46bd mov sp, r7 - 8041b1a: bdb0 pop {r4, r5, r7, pc} - 8041b1c: 0804b398 .word 0x0804b398 - 8041b20: 0804b680 .word 0x0804b680 - 8041b24: 0804b3e4 .word 0x0804b3e4 - 8041b28: 2400eb28 .word 0x2400eb28 - 8041b2c: 0804b6a8 .word 0x0804b6a8 - 8041b30: 2400eb24 .word 0x2400eb24 - -08041b34 : + 8041b52: 68bb ldr r3, [r7, #8] +} + 8041b54: 4618 mov r0, r3 + 8041b56: 3718 adds r7, #24 + 8041b58: 46bd mov sp, r7 + 8041b5a: bdb0 pop {r4, r5, r7, pc} + 8041b5c: 0804b3d8 .word 0x0804b3d8 + 8041b60: 0804b6c0 .word 0x0804b6c0 + 8041b64: 0804b424 .word 0x0804b424 + 8041b68: 2400eb28 .word 0x2400eb28 + 8041b6c: 0804b6e8 .word 0x0804b6e8 + 8041b70: 2400eb24 .word 0x2400eb24 + +08041b74 : * * Called from tcp_process(). */ static void tcp_receive(struct tcp_pcb *pcb) { - 8041b34: b5b0 push {r4, r5, r7, lr} - 8041b36: b094 sub sp, #80 ; 0x50 - 8041b38: af00 add r7, sp, #0 - 8041b3a: 6078 str r0, [r7, #4] + 8041b74: b5b0 push {r4, r5, r7, lr} + 8041b76: b094 sub sp, #80 ; 0x50 + 8041b78: af00 add r7, sp, #0 + 8041b7a: 6078 str r0, [r7, #4] s16_t m; u32_t right_wnd_edge; int found_dupack = 0; - 8041b3c: 2300 movs r3, #0 - 8041b3e: 64bb str r3, [r7, #72] ; 0x48 + 8041b7c: 2300 movs r3, #0 + 8041b7e: 64bb str r3, [r7, #72] ; 0x48 LWIP_ASSERT("tcp_receive: invalid pcb", pcb != NULL); - 8041b40: 687b ldr r3, [r7, #4] - 8041b42: 2b00 cmp r3, #0 - 8041b44: d106 bne.n 8041b54 - 8041b46: 4b91 ldr r3, [pc, #580] ; (8041d8c ) - 8041b48: f240 427b movw r2, #1147 ; 0x47b - 8041b4c: 4990 ldr r1, [pc, #576] ; (8041d90 ) - 8041b4e: 4891 ldr r0, [pc, #580] ; (8041d94 ) - 8041b50: f006 fa28 bl 8047fa4 + 8041b80: 687b ldr r3, [r7, #4] + 8041b82: 2b00 cmp r3, #0 + 8041b84: d106 bne.n 8041b94 + 8041b86: 4b91 ldr r3, [pc, #580] ; (8041dcc ) + 8041b88: f240 427b movw r2, #1147 ; 0x47b + 8041b8c: 4990 ldr r1, [pc, #576] ; (8041dd0 ) + 8041b8e: 4891 ldr r0, [pc, #580] ; (8041dd4 ) + 8041b90: f006 fa28 bl 8047fe4 LWIP_ASSERT("tcp_receive: wrong state", pcb->state >= ESTABLISHED); - 8041b54: 687b ldr r3, [r7, #4] - 8041b56: 7d1b ldrb r3, [r3, #20] - 8041b58: 2b03 cmp r3, #3 - 8041b5a: d806 bhi.n 8041b6a - 8041b5c: 4b8b ldr r3, [pc, #556] ; (8041d8c ) - 8041b5e: f240 427c movw r2, #1148 ; 0x47c - 8041b62: 498d ldr r1, [pc, #564] ; (8041d98 ) - 8041b64: 488b ldr r0, [pc, #556] ; (8041d94 ) - 8041b66: f006 fa1d bl 8047fa4 + 8041b94: 687b ldr r3, [r7, #4] + 8041b96: 7d1b ldrb r3, [r3, #20] + 8041b98: 2b03 cmp r3, #3 + 8041b9a: d806 bhi.n 8041baa + 8041b9c: 4b8b ldr r3, [pc, #556] ; (8041dcc ) + 8041b9e: f240 427c movw r2, #1148 ; 0x47c + 8041ba2: 498d ldr r1, [pc, #564] ; (8041dd8 ) + 8041ba4: 488b ldr r0, [pc, #556] ; (8041dd4 ) + 8041ba6: f006 fa1d bl 8047fe4 if (flags & TCP_ACK) { - 8041b6a: 4b8c ldr r3, [pc, #560] ; (8041d9c ) - 8041b6c: 781b ldrb r3, [r3, #0] - 8041b6e: f003 0310 and.w r3, r3, #16 - 8041b72: 2b00 cmp r3, #0 - 8041b74: f000 8264 beq.w 8042040 + 8041baa: 4b8c ldr r3, [pc, #560] ; (8041ddc ) + 8041bac: 781b ldrb r3, [r3, #0] + 8041bae: f003 0310 and.w r3, r3, #16 + 8041bb2: 2b00 cmp r3, #0 + 8041bb4: f000 8264 beq.w 8042080 right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; - 8041b78: 687b ldr r3, [r7, #4] - 8041b7a: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 8041b7e: 461a mov r2, r3 - 8041b80: 687b ldr r3, [r7, #4] - 8041b82: 6d9b ldr r3, [r3, #88] ; 0x58 - 8041b84: 4413 add r3, r2 - 8041b86: 633b str r3, [r7, #48] ; 0x30 + 8041bb8: 687b ldr r3, [r7, #4] + 8041bba: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 8041bbe: 461a mov r2, r3 + 8041bc0: 687b ldr r3, [r7, #4] + 8041bc2: 6d9b ldr r3, [r3, #88] ; 0x58 + 8041bc4: 4413 add r3, r2 + 8041bc6: 633b str r3, [r7, #48] ; 0x30 /* Update window. */ if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - 8041b88: 687b ldr r3, [r7, #4] - 8041b8a: 6d5a ldr r2, [r3, #84] ; 0x54 - 8041b8c: 4b84 ldr r3, [pc, #528] ; (8041da0 ) - 8041b8e: 681b ldr r3, [r3, #0] - 8041b90: 1ad3 subs r3, r2, r3 - 8041b92: 2b00 cmp r3, #0 - 8041b94: db1b blt.n 8041bce + 8041bc8: 687b ldr r3, [r7, #4] + 8041bca: 6d5a ldr r2, [r3, #84] ; 0x54 + 8041bcc: 4b84 ldr r3, [pc, #528] ; (8041de0 ) + 8041bce: 681b ldr r3, [r3, #0] + 8041bd0: 1ad3 subs r3, r2, r3 + 8041bd2: 2b00 cmp r3, #0 + 8041bd4: db1b blt.n 8041c0e (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 8041b96: 687b ldr r3, [r7, #4] - 8041b98: 6d5a ldr r2, [r3, #84] ; 0x54 - 8041b9a: 4b81 ldr r3, [pc, #516] ; (8041da0 ) - 8041b9c: 681b ldr r3, [r3, #0] + 8041bd6: 687b ldr r3, [r7, #4] + 8041bd8: 6d5a ldr r2, [r3, #84] ; 0x54 + 8041bda: 4b81 ldr r3, [pc, #516] ; (8041de0 ) + 8041bdc: 681b ldr r3, [r3, #0] if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - 8041b9e: 429a cmp r2, r3 - 8041ba0: d106 bne.n 8041bb0 + 8041bde: 429a cmp r2, r3 + 8041be0: d106 bne.n 8041bf0 (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 8041ba2: 687b ldr r3, [r7, #4] - 8041ba4: 6d9a ldr r2, [r3, #88] ; 0x58 - 8041ba6: 4b7f ldr r3, [pc, #508] ; (8041da4 ) - 8041ba8: 681b ldr r3, [r3, #0] - 8041baa: 1ad3 subs r3, r2, r3 - 8041bac: 2b00 cmp r3, #0 - 8041bae: db0e blt.n 8041bce + 8041be2: 687b ldr r3, [r7, #4] + 8041be4: 6d9a ldr r2, [r3, #88] ; 0x58 + 8041be6: 4b7f ldr r3, [pc, #508] ; (8041de4 ) + 8041be8: 681b ldr r3, [r3, #0] + 8041bea: 1ad3 subs r3, r2, r3 + 8041bec: 2b00 cmp r3, #0 + 8041bee: db0e blt.n 8041c0e (pcb->snd_wl2 == ackno && (u32_t)SND_WND_SCALE(pcb, tcphdr->wnd) > pcb->snd_wnd)) { - 8041bb0: 687b ldr r3, [r7, #4] - 8041bb2: 6d9a ldr r2, [r3, #88] ; 0x58 - 8041bb4: 4b7b ldr r3, [pc, #492] ; (8041da4 ) - 8041bb6: 681b ldr r3, [r3, #0] + 8041bf0: 687b ldr r3, [r7, #4] + 8041bf2: 6d9a ldr r2, [r3, #88] ; 0x58 + 8041bf4: 4b7b ldr r3, [pc, #492] ; (8041de4 ) + 8041bf6: 681b ldr r3, [r3, #0] (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - 8041bb8: 429a cmp r2, r3 - 8041bba: d125 bne.n 8041c08 + 8041bf8: 429a cmp r2, r3 + 8041bfa: d125 bne.n 8041c48 (pcb->snd_wl2 == ackno && (u32_t)SND_WND_SCALE(pcb, tcphdr->wnd) > pcb->snd_wnd)) { - 8041bbc: 4b7a ldr r3, [pc, #488] ; (8041da8 ) - 8041bbe: 681b ldr r3, [r3, #0] - 8041bc0: 89db ldrh r3, [r3, #14] - 8041bc2: b29a uxth r2, r3 - 8041bc4: 687b ldr r3, [r7, #4] - 8041bc6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 8041bca: 429a cmp r2, r3 - 8041bcc: d91c bls.n 8041c08 + 8041bfc: 4b7a ldr r3, [pc, #488] ; (8041de8 ) + 8041bfe: 681b ldr r3, [r3, #0] + 8041c00: 89db ldrh r3, [r3, #14] + 8041c02: b29a uxth r2, r3 + 8041c04: 687b ldr r3, [r7, #4] + 8041c06: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 8041c0a: 429a cmp r2, r3 + 8041c0c: d91c bls.n 8041c48 pcb->snd_wnd = SND_WND_SCALE(pcb, tcphdr->wnd); - 8041bce: 4b76 ldr r3, [pc, #472] ; (8041da8 ) - 8041bd0: 681b ldr r3, [r3, #0] - 8041bd2: 89db ldrh r3, [r3, #14] - 8041bd4: b29a uxth r2, r3 - 8041bd6: 687b ldr r3, [r7, #4] - 8041bd8: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 + 8041c0e: 4b76 ldr r3, [pc, #472] ; (8041de8 ) + 8041c10: 681b ldr r3, [r3, #0] + 8041c12: 89db ldrh r3, [r3, #14] + 8041c14: b29a uxth r2, r3 + 8041c16: 687b ldr r3, [r7, #4] + 8041c18: f8a3 2060 strh.w r2, [r3, #96] ; 0x60 /* keep track of the biggest window announced by the remote host to calculate the maximum segment size */ if (pcb->snd_wnd_max < pcb->snd_wnd) { - 8041bdc: 687b ldr r3, [r7, #4] - 8041bde: f8b3 2062 ldrh.w r2, [r3, #98] ; 0x62 - 8041be2: 687b ldr r3, [r7, #4] - 8041be4: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 8041be8: 429a cmp r2, r3 - 8041bea: d205 bcs.n 8041bf8 + 8041c1c: 687b ldr r3, [r7, #4] + 8041c1e: f8b3 2062 ldrh.w r2, [r3, #98] ; 0x62 + 8041c22: 687b ldr r3, [r7, #4] + 8041c24: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 8041c28: 429a cmp r2, r3 + 8041c2a: d205 bcs.n 8041c38 pcb->snd_wnd_max = pcb->snd_wnd; - 8041bec: 687b ldr r3, [r7, #4] - 8041bee: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 8041bf2: 687b ldr r3, [r7, #4] - 8041bf4: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 + 8041c2c: 687b ldr r3, [r7, #4] + 8041c2e: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 8041c32: 687b ldr r3, [r7, #4] + 8041c34: f8a3 2062 strh.w r2, [r3, #98] ; 0x62 } pcb->snd_wl1 = seqno; - 8041bf8: 4b69 ldr r3, [pc, #420] ; (8041da0 ) - 8041bfa: 681a ldr r2, [r3, #0] - 8041bfc: 687b ldr r3, [r7, #4] - 8041bfe: 655a str r2, [r3, #84] ; 0x54 + 8041c38: 4b69 ldr r3, [pc, #420] ; (8041de0 ) + 8041c3a: 681a ldr r2, [r3, #0] + 8041c3c: 687b ldr r3, [r7, #4] + 8041c3e: 655a str r2, [r3, #84] ; 0x54 pcb->snd_wl2 = ackno; - 8041c00: 4b68 ldr r3, [pc, #416] ; (8041da4 ) - 8041c02: 681a ldr r2, [r3, #0] - 8041c04: 687b ldr r3, [r7, #4] - 8041c06: 659a str r2, [r3, #88] ; 0x58 + 8041c40: 4b68 ldr r3, [pc, #416] ; (8041de4 ) + 8041c42: 681a ldr r2, [r3, #0] + 8041c44: 687b ldr r3, [r7, #4] + 8041c46: 659a str r2, [r3, #88] ; 0x58 * If it only passes 1, should reset dupack counter * */ /* Clause 1 */ if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { - 8041c08: 4b66 ldr r3, [pc, #408] ; (8041da4 ) - 8041c0a: 681a ldr r2, [r3, #0] - 8041c0c: 687b ldr r3, [r7, #4] - 8041c0e: 6c5b ldr r3, [r3, #68] ; 0x44 - 8041c10: 1ad3 subs r3, r2, r3 - 8041c12: 2b00 cmp r3, #0 - 8041c14: dc58 bgt.n 8041cc8 + 8041c48: 4b66 ldr r3, [pc, #408] ; (8041de4 ) + 8041c4a: 681a ldr r2, [r3, #0] + 8041c4c: 687b ldr r3, [r7, #4] + 8041c4e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8041c50: 1ad3 subs r3, r2, r3 + 8041c52: 2b00 cmp r3, #0 + 8041c54: dc58 bgt.n 8041d08 /* Clause 2 */ if (tcplen == 0) { - 8041c16: 4b65 ldr r3, [pc, #404] ; (8041dac ) - 8041c18: 881b ldrh r3, [r3, #0] - 8041c1a: 2b00 cmp r3, #0 - 8041c1c: d14b bne.n 8041cb6 + 8041c56: 4b65 ldr r3, [pc, #404] ; (8041dec ) + 8041c58: 881b ldrh r3, [r3, #0] + 8041c5a: 2b00 cmp r3, #0 + 8041c5c: d14b bne.n 8041cf6 /* Clause 3 */ if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge) { - 8041c1e: 687b ldr r3, [r7, #4] - 8041c20: 6d9b ldr r3, [r3, #88] ; 0x58 - 8041c22: 687a ldr r2, [r7, #4] - 8041c24: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 - 8041c28: 4413 add r3, r2 - 8041c2a: 6b3a ldr r2, [r7, #48] ; 0x30 - 8041c2c: 429a cmp r2, r3 - 8041c2e: d142 bne.n 8041cb6 + 8041c5e: 687b ldr r3, [r7, #4] + 8041c60: 6d9b ldr r3, [r3, #88] ; 0x58 + 8041c62: 687a ldr r2, [r7, #4] + 8041c64: f8b2 2060 ldrh.w r2, [r2, #96] ; 0x60 + 8041c68: 4413 add r3, r2 + 8041c6a: 6b3a ldr r2, [r7, #48] ; 0x30 + 8041c6c: 429a cmp r2, r3 + 8041c6e: d142 bne.n 8041cf6 /* Clause 4 */ if (pcb->rtime >= 0) { - 8041c30: 687b ldr r3, [r7, #4] - 8041c32: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 - 8041c36: 2b00 cmp r3, #0 - 8041c38: db3d blt.n 8041cb6 + 8041c70: 687b ldr r3, [r7, #4] + 8041c72: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 + 8041c76: 2b00 cmp r3, #0 + 8041c78: db3d blt.n 8041cf6 /* Clause 5 */ if (pcb->lastack == ackno) { - 8041c3a: 687b ldr r3, [r7, #4] - 8041c3c: 6c5a ldr r2, [r3, #68] ; 0x44 - 8041c3e: 4b59 ldr r3, [pc, #356] ; (8041da4 ) - 8041c40: 681b ldr r3, [r3, #0] - 8041c42: 429a cmp r2, r3 - 8041c44: d137 bne.n 8041cb6 + 8041c7a: 687b ldr r3, [r7, #4] + 8041c7c: 6c5a ldr r2, [r3, #68] ; 0x44 + 8041c7e: 4b59 ldr r3, [pc, #356] ; (8041de4 ) + 8041c80: 681b ldr r3, [r3, #0] + 8041c82: 429a cmp r2, r3 + 8041c84: d137 bne.n 8041cf6 found_dupack = 1; - 8041c46: 2301 movs r3, #1 - 8041c48: 64bb str r3, [r7, #72] ; 0x48 + 8041c86: 2301 movs r3, #1 + 8041c88: 64bb str r3, [r7, #72] ; 0x48 if ((u8_t)(pcb->dupacks + 1) > pcb->dupacks) { - 8041c4a: 687b ldr r3, [r7, #4] - 8041c4c: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 - 8041c50: 2bff cmp r3, #255 ; 0xff - 8041c52: d007 beq.n 8041c64 + 8041c8a: 687b ldr r3, [r7, #4] + 8041c8c: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 + 8041c90: 2bff cmp r3, #255 ; 0xff + 8041c92: d007 beq.n 8041ca4 ++pcb->dupacks; - 8041c54: 687b ldr r3, [r7, #4] - 8041c56: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 - 8041c5a: 3301 adds r3, #1 - 8041c5c: b2da uxtb r2, r3 - 8041c5e: 687b ldr r3, [r7, #4] - 8041c60: f883 2043 strb.w r2, [r3, #67] ; 0x43 + 8041c94: 687b ldr r3, [r7, #4] + 8041c96: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 + 8041c9a: 3301 adds r3, #1 + 8041c9c: b2da uxtb r2, r3 + 8041c9e: 687b ldr r3, [r7, #4] + 8041ca0: f883 2043 strb.w r2, [r3, #67] ; 0x43 } if (pcb->dupacks > 3) { - 8041c64: 687b ldr r3, [r7, #4] - 8041c66: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 - 8041c6a: 2b03 cmp r3, #3 - 8041c6c: d91b bls.n 8041ca6 + 8041ca4: 687b ldr r3, [r7, #4] + 8041ca6: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 + 8041caa: 2b03 cmp r3, #3 + 8041cac: d91b bls.n 8041ce6 /* Inflate the congestion window */ TCP_WND_INC(pcb->cwnd, pcb->mss); - 8041c6e: 687b ldr r3, [r7, #4] - 8041c70: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041c74: 687b ldr r3, [r7, #4] - 8041c76: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041c78: 4413 add r3, r2 - 8041c7a: b29a uxth r2, r3 - 8041c7c: 687b ldr r3, [r7, #4] - 8041c7e: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8041c82: 429a cmp r2, r3 - 8041c84: d30a bcc.n 8041c9c - 8041c86: 687b ldr r3, [r7, #4] - 8041c88: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041c8c: 687b ldr r3, [r7, #4] - 8041c8e: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041c90: 4413 add r3, r2 - 8041c92: b29a uxth r2, r3 - 8041c94: 687b ldr r3, [r7, #4] - 8041c96: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 8041c9a: e004 b.n 8041ca6 - 8041c9c: 687b ldr r3, [r7, #4] - 8041c9e: f64f 72ff movw r2, #65535 ; 0xffff - 8041ca2: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041cae: 687b ldr r3, [r7, #4] + 8041cb0: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041cb4: 687b ldr r3, [r7, #4] + 8041cb6: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041cb8: 4413 add r3, r2 + 8041cba: b29a uxth r2, r3 + 8041cbc: 687b ldr r3, [r7, #4] + 8041cbe: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 8041cc2: 429a cmp r2, r3 + 8041cc4: d30a bcc.n 8041cdc + 8041cc6: 687b ldr r3, [r7, #4] + 8041cc8: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041ccc: 687b ldr r3, [r7, #4] + 8041cce: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041cd0: 4413 add r3, r2 + 8041cd2: b29a uxth r2, r3 + 8041cd4: 687b ldr r3, [r7, #4] + 8041cd6: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041cda: e004 b.n 8041ce6 + 8041cdc: 687b ldr r3, [r7, #4] + 8041cde: f64f 72ff movw r2, #65535 ; 0xffff + 8041ce2: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 } if (pcb->dupacks >= 3) { - 8041ca6: 687b ldr r3, [r7, #4] - 8041ca8: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 - 8041cac: 2b02 cmp r3, #2 - 8041cae: d902 bls.n 8041cb6 + 8041ce6: 687b ldr r3, [r7, #4] + 8041ce8: f893 3043 ldrb.w r3, [r3, #67] ; 0x43 + 8041cec: 2b02 cmp r3, #2 + 8041cee: d902 bls.n 8041cf6 /* Do fast retransmit (checked via TF_INFR, not via dupacks count) */ tcp_rexmit_fast(pcb); - 8041cb0: 6878 ldr r0, [r7, #4] - 8041cb2: f002 fb43 bl 804433c + 8041cf0: 6878 ldr r0, [r7, #4] + 8041cf2: f002 fb43 bl 804437c } } } /* If Clause (1) or more is true, but not a duplicate ack, reset * count of consecutive duplicate acks */ if (!found_dupack) { - 8041cb6: 6cbb ldr r3, [r7, #72] ; 0x48 - 8041cb8: 2b00 cmp r3, #0 - 8041cba: f040 8161 bne.w 8041f80 + 8041cf6: 6cbb ldr r3, [r7, #72] ; 0x48 + 8041cf8: 2b00 cmp r3, #0 + 8041cfa: f040 8161 bne.w 8041fc0 pcb->dupacks = 0; - 8041cbe: 687b ldr r3, [r7, #4] - 8041cc0: 2200 movs r2, #0 - 8041cc2: f883 2043 strb.w r2, [r3, #67] ; 0x43 - 8041cc6: e15b b.n 8041f80 + 8041cfe: 687b ldr r3, [r7, #4] + 8041d00: 2200 movs r2, #0 + 8041d02: f883 2043 strb.w r2, [r3, #67] ; 0x43 + 8041d06: e15b b.n 8041fc0 } } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 8041cc8: 4b36 ldr r3, [pc, #216] ; (8041da4 ) - 8041cca: 681a ldr r2, [r3, #0] - 8041ccc: 687b ldr r3, [r7, #4] - 8041cce: 6c5b ldr r3, [r3, #68] ; 0x44 - 8041cd0: 1ad3 subs r3, r2, r3 - 8041cd2: 3b01 subs r3, #1 - 8041cd4: 2b00 cmp r3, #0 - 8041cd6: f2c0 814e blt.w 8041f76 - 8041cda: 4b32 ldr r3, [pc, #200] ; (8041da4 ) - 8041cdc: 681a ldr r2, [r3, #0] - 8041cde: 687b ldr r3, [r7, #4] - 8041ce0: 6d1b ldr r3, [r3, #80] ; 0x50 - 8041ce2: 1ad3 subs r3, r2, r3 - 8041ce4: 2b00 cmp r3, #0 - 8041ce6: f300 8146 bgt.w 8041f76 + 8041d08: 4b36 ldr r3, [pc, #216] ; (8041de4 ) + 8041d0a: 681a ldr r2, [r3, #0] + 8041d0c: 687b ldr r3, [r7, #4] + 8041d0e: 6c5b ldr r3, [r3, #68] ; 0x44 + 8041d10: 1ad3 subs r3, r2, r3 + 8041d12: 3b01 subs r3, #1 + 8041d14: 2b00 cmp r3, #0 + 8041d16: f2c0 814e blt.w 8041fb6 + 8041d1a: 4b32 ldr r3, [pc, #200] ; (8041de4 ) + 8041d1c: 681a ldr r2, [r3, #0] + 8041d1e: 687b ldr r3, [r7, #4] + 8041d20: 6d1b ldr r3, [r3, #80] ; 0x50 + 8041d22: 1ad3 subs r3, r2, r3 + 8041d24: 2b00 cmp r3, #0 + 8041d26: f300 8146 bgt.w 8041fb6 tcpwnd_size_t acked; /* Reset the "IN Fast Retransmit" flag, since we are no longer in fast retransmit. Also reset the congestion window to the slow start threshold. */ if (pcb->flags & TF_INFR) { - 8041cea: 687b ldr r3, [r7, #4] - 8041cec: 8b5b ldrh r3, [r3, #26] - 8041cee: f003 0304 and.w r3, r3, #4 - 8041cf2: 2b00 cmp r3, #0 - 8041cf4: d010 beq.n 8041d18 + 8041d2a: 687b ldr r3, [r7, #4] + 8041d2c: 8b5b ldrh r3, [r3, #26] + 8041d2e: f003 0304 and.w r3, r3, #4 + 8041d32: 2b00 cmp r3, #0 + 8041d34: d010 beq.n 8041d58 tcp_clear_flags(pcb, TF_INFR); - 8041cf6: 687b ldr r3, [r7, #4] - 8041cf8: 8b5b ldrh r3, [r3, #26] - 8041cfa: f023 0304 bic.w r3, r3, #4 - 8041cfe: b29a uxth r2, r3 - 8041d00: 687b ldr r3, [r7, #4] - 8041d02: 835a strh r2, [r3, #26] + 8041d36: 687b ldr r3, [r7, #4] + 8041d38: 8b5b ldrh r3, [r3, #26] + 8041d3a: f023 0304 bic.w r3, r3, #4 + 8041d3e: b29a uxth r2, r3 + 8041d40: 687b ldr r3, [r7, #4] + 8041d42: 835a strh r2, [r3, #26] pcb->cwnd = pcb->ssthresh; - 8041d04: 687b ldr r3, [r7, #4] - 8041d06: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a - 8041d0a: 687b ldr r3, [r7, #4] - 8041d0c: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041d44: 687b ldr r3, [r7, #4] + 8041d46: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a + 8041d4a: 687b ldr r3, [r7, #4] + 8041d4c: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 pcb->bytes_acked = 0; - 8041d10: 687b ldr r3, [r7, #4] - 8041d12: 2200 movs r2, #0 - 8041d14: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8041d50: 687b ldr r3, [r7, #4] + 8041d52: 2200 movs r2, #0 + 8041d54: f8a3 206a strh.w r2, [r3, #106] ; 0x6a } /* Reset the number of retransmissions. */ pcb->nrtx = 0; - 8041d18: 687b ldr r3, [r7, #4] - 8041d1a: 2200 movs r2, #0 - 8041d1c: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 8041d58: 687b ldr r3, [r7, #4] + 8041d5a: 2200 movs r2, #0 + 8041d5c: f883 2042 strb.w r2, [r3, #66] ; 0x42 /* Reset the retransmission time-out. */ pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv); - 8041d20: 687b ldr r3, [r7, #4] - 8041d22: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c - 8041d26: 10db asrs r3, r3, #3 - 8041d28: b21b sxth r3, r3 - 8041d2a: b29a uxth r2, r3 - 8041d2c: 687b ldr r3, [r7, #4] - 8041d2e: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e - 8041d32: b29b uxth r3, r3 - 8041d34: 4413 add r3, r2 - 8041d36: b29b uxth r3, r3 - 8041d38: b21a sxth r2, r3 - 8041d3a: 687b ldr r3, [r7, #4] - 8041d3c: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + 8041d60: 687b ldr r3, [r7, #4] + 8041d62: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c + 8041d66: 10db asrs r3, r3, #3 + 8041d68: b21b sxth r3, r3 + 8041d6a: b29a uxth r2, r3 + 8041d6c: 687b ldr r3, [r7, #4] + 8041d6e: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e + 8041d72: b29b uxth r3, r3 + 8041d74: 4413 add r3, r2 + 8041d76: b29b uxth r3, r3 + 8041d78: b21a sxth r2, r3 + 8041d7a: 687b ldr r3, [r7, #4] + 8041d7c: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 /* Record how much data this ACK acks */ acked = (tcpwnd_size_t)(ackno - pcb->lastack); - 8041d40: 4b18 ldr r3, [pc, #96] ; (8041da4 ) - 8041d42: 681b ldr r3, [r3, #0] - 8041d44: b29a uxth r2, r3 - 8041d46: 687b ldr r3, [r7, #4] - 8041d48: 6c5b ldr r3, [r3, #68] ; 0x44 - 8041d4a: b29b uxth r3, r3 - 8041d4c: 1ad3 subs r3, r2, r3 - 8041d4e: 85fb strh r3, [r7, #46] ; 0x2e + 8041d80: 4b18 ldr r3, [pc, #96] ; (8041de4 ) + 8041d82: 681b ldr r3, [r3, #0] + 8041d84: b29a uxth r2, r3 + 8041d86: 687b ldr r3, [r7, #4] + 8041d88: 6c5b ldr r3, [r3, #68] ; 0x44 + 8041d8a: b29b uxth r3, r3 + 8041d8c: 1ad3 subs r3, r2, r3 + 8041d8e: 85fb strh r3, [r7, #46] ; 0x2e /* Reset the fast retransmit variables. */ pcb->dupacks = 0; - 8041d50: 687b ldr r3, [r7, #4] - 8041d52: 2200 movs r2, #0 - 8041d54: f883 2043 strb.w r2, [r3, #67] ; 0x43 + 8041d90: 687b ldr r3, [r7, #4] + 8041d92: 2200 movs r2, #0 + 8041d94: f883 2043 strb.w r2, [r3, #67] ; 0x43 pcb->lastack = ackno; - 8041d58: 4b12 ldr r3, [pc, #72] ; (8041da4 ) - 8041d5a: 681a ldr r2, [r3, #0] - 8041d5c: 687b ldr r3, [r7, #4] - 8041d5e: 645a str r2, [r3, #68] ; 0x44 + 8041d98: 4b12 ldr r3, [pc, #72] ; (8041de4 ) + 8041d9a: 681a ldr r2, [r3, #0] + 8041d9c: 687b ldr r3, [r7, #4] + 8041d9e: 645a str r2, [r3, #68] ; 0x44 /* Update the congestion control variables (cwnd and ssthresh). */ if (pcb->state >= ESTABLISHED) { - 8041d60: 687b ldr r3, [r7, #4] - 8041d62: 7d1b ldrb r3, [r3, #20] - 8041d64: 2b03 cmp r3, #3 - 8041d66: f240 8097 bls.w 8041e98 + 8041da0: 687b ldr r3, [r7, #4] + 8041da2: 7d1b ldrb r3, [r3, #20] + 8041da4: 2b03 cmp r3, #3 + 8041da6: f240 8097 bls.w 8041ed8 if (pcb->cwnd < pcb->ssthresh) { - 8041d6a: 687b ldr r3, [r7, #4] - 8041d6c: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041d70: 687b ldr r3, [r7, #4] - 8041d72: f8b3 304a ldrh.w r3, [r3, #74] ; 0x4a - 8041d76: 429a cmp r2, r3 - 8041d78: d245 bcs.n 8041e06 + 8041daa: 687b ldr r3, [r7, #4] + 8041dac: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041db0: 687b ldr r3, [r7, #4] + 8041db2: f8b3 304a ldrh.w r3, [r3, #74] ; 0x4a + 8041db6: 429a cmp r2, r3 + 8041db8: d245 bcs.n 8041e46 tcpwnd_size_t increase; /* limit to 1 SMSS segment during period following RTO */ u8_t num_seg = (pcb->flags & TF_RTO) ? 1 : 2; - 8041d7a: 687b ldr r3, [r7, #4] - 8041d7c: 8b5b ldrh r3, [r3, #26] - 8041d7e: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8041d82: 2b00 cmp r3, #0 - 8041d84: d014 beq.n 8041db0 - 8041d86: 2301 movs r3, #1 - 8041d88: e013 b.n 8041db2 - 8041d8a: bf00 nop - 8041d8c: 0804b398 .word 0x0804b398 - 8041d90: 0804b6c8 .word 0x0804b6c8 - 8041d94: 0804b3e4 .word 0x0804b3e4 - 8041d98: 0804b6e4 .word 0x0804b6e4 - 8041d9c: 2400eb2c .word 0x2400eb2c - 8041da0: 2400eb20 .word 0x2400eb20 - 8041da4: 2400eb24 .word 0x2400eb24 - 8041da8: 2400eb10 .word 0x2400eb10 - 8041dac: 2400eb2a .word 0x2400eb2a - 8041db0: 2302 movs r3, #2 - 8041db2: f887 302d strb.w r3, [r7, #45] ; 0x2d + 8041dba: 687b ldr r3, [r7, #4] + 8041dbc: 8b5b ldrh r3, [r3, #26] + 8041dbe: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8041dc2: 2b00 cmp r3, #0 + 8041dc4: d014 beq.n 8041df0 + 8041dc6: 2301 movs r3, #1 + 8041dc8: e013 b.n 8041df2 + 8041dca: bf00 nop + 8041dcc: 0804b3d8 .word 0x0804b3d8 + 8041dd0: 0804b708 .word 0x0804b708 + 8041dd4: 0804b424 .word 0x0804b424 + 8041dd8: 0804b724 .word 0x0804b724 + 8041ddc: 2400eb2c .word 0x2400eb2c + 8041de0: 2400eb20 .word 0x2400eb20 + 8041de4: 2400eb24 .word 0x2400eb24 + 8041de8: 2400eb10 .word 0x2400eb10 + 8041dec: 2400eb2a .word 0x2400eb2a + 8041df0: 2302 movs r3, #2 + 8041df2: f887 302d strb.w r3, [r7, #45] ; 0x2d /* RFC 3465, section 2.2 Slow Start */ increase = LWIP_MIN(acked, (tcpwnd_size_t)(num_seg * pcb->mss)); - 8041db6: f897 302d ldrb.w r3, [r7, #45] ; 0x2d - 8041dba: b29a uxth r2, r3 - 8041dbc: 687b ldr r3, [r7, #4] - 8041dbe: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041dc0: fb12 f303 smulbb r3, r2, r3 - 8041dc4: b29b uxth r3, r3 - 8041dc6: 8dfa ldrh r2, [r7, #46] ; 0x2e - 8041dc8: 4293 cmp r3, r2 - 8041dca: bf28 it cs - 8041dcc: 4613 movcs r3, r2 - 8041dce: 857b strh r3, [r7, #42] ; 0x2a + 8041df6: f897 302d ldrb.w r3, [r7, #45] ; 0x2d + 8041dfa: b29a uxth r2, r3 + 8041dfc: 687b ldr r3, [r7, #4] + 8041dfe: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041e00: fb12 f303 smulbb r3, r2, r3 + 8041e04: b29b uxth r3, r3 + 8041e06: 8dfa ldrh r2, [r7, #46] ; 0x2e + 8041e08: 4293 cmp r3, r2 + 8041e0a: bf28 it cs + 8041e0c: 4613 movcs r3, r2 + 8041e0e: 857b strh r3, [r7, #42] ; 0x2a TCP_WND_INC(pcb->cwnd, increase); - 8041dd0: 687b ldr r3, [r7, #4] - 8041dd2: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041dd6: 8d7b ldrh r3, [r7, #42] ; 0x2a - 8041dd8: 4413 add r3, r2 - 8041dda: b29a uxth r2, r3 - 8041ddc: 687b ldr r3, [r7, #4] - 8041dde: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8041de2: 429a cmp r2, r3 - 8041de4: d309 bcc.n 8041dfa - 8041de6: 687b ldr r3, [r7, #4] - 8041de8: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041dec: 8d7b ldrh r3, [r7, #42] ; 0x2a - 8041dee: 4413 add r3, r2 - 8041df0: b29a uxth r2, r3 - 8041df2: 687b ldr r3, [r7, #4] - 8041df4: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 8041df8: e04e b.n 8041e98 - 8041dfa: 687b ldr r3, [r7, #4] - 8041dfc: f64f 72ff movw r2, #65535 ; 0xffff - 8041e00: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 8041e04: e048 b.n 8041e98 + 8041e10: 687b ldr r3, [r7, #4] + 8041e12: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041e16: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8041e18: 4413 add r3, r2 + 8041e1a: b29a uxth r2, r3 + 8041e1c: 687b ldr r3, [r7, #4] + 8041e1e: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 8041e22: 429a cmp r2, r3 + 8041e24: d309 bcc.n 8041e3a + 8041e26: 687b ldr r3, [r7, #4] + 8041e28: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041e2c: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8041e2e: 4413 add r3, r2 + 8041e30: b29a uxth r2, r3 + 8041e32: 687b ldr r3, [r7, #4] + 8041e34: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041e38: e04e b.n 8041ed8 + 8041e3a: 687b ldr r3, [r7, #4] + 8041e3c: f64f 72ff movw r2, #65535 ; 0xffff + 8041e40: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041e44: e048 b.n 8041ed8 LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"TCPWNDSIZE_F"\n", pcb->cwnd)); } else { /* RFC 3465, section 2.1 Congestion Avoidance */ TCP_WND_INC(pcb->bytes_acked, acked); - 8041e06: 687b ldr r3, [r7, #4] - 8041e08: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a - 8041e0c: 8dfb ldrh r3, [r7, #46] ; 0x2e - 8041e0e: 4413 add r3, r2 - 8041e10: b29a uxth r2, r3 - 8041e12: 687b ldr r3, [r7, #4] - 8041e14: f8b3 306a ldrh.w r3, [r3, #106] ; 0x6a - 8041e18: 429a cmp r2, r3 - 8041e1a: d309 bcc.n 8041e30 - 8041e1c: 687b ldr r3, [r7, #4] - 8041e1e: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a - 8041e22: 8dfb ldrh r3, [r7, #46] ; 0x2e - 8041e24: 4413 add r3, r2 - 8041e26: b29a uxth r2, r3 - 8041e28: 687b ldr r3, [r7, #4] - 8041e2a: f8a3 206a strh.w r2, [r3, #106] ; 0x6a - 8041e2e: e004 b.n 8041e3a - 8041e30: 687b ldr r3, [r7, #4] - 8041e32: f64f 72ff movw r2, #65535 ; 0xffff - 8041e36: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8041e46: 687b ldr r3, [r7, #4] + 8041e48: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a + 8041e4c: 8dfb ldrh r3, [r7, #46] ; 0x2e + 8041e4e: 4413 add r3, r2 + 8041e50: b29a uxth r2, r3 + 8041e52: 687b ldr r3, [r7, #4] + 8041e54: f8b3 306a ldrh.w r3, [r3, #106] ; 0x6a + 8041e58: 429a cmp r2, r3 + 8041e5a: d309 bcc.n 8041e70 + 8041e5c: 687b ldr r3, [r7, #4] + 8041e5e: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a + 8041e62: 8dfb ldrh r3, [r7, #46] ; 0x2e + 8041e64: 4413 add r3, r2 + 8041e66: b29a uxth r2, r3 + 8041e68: 687b ldr r3, [r7, #4] + 8041e6a: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8041e6e: e004 b.n 8041e7a + 8041e70: 687b ldr r3, [r7, #4] + 8041e72: f64f 72ff movw r2, #65535 ; 0xffff + 8041e76: f8a3 206a strh.w r2, [r3, #106] ; 0x6a if (pcb->bytes_acked >= pcb->cwnd) { - 8041e3a: 687b ldr r3, [r7, #4] - 8041e3c: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a - 8041e40: 687b ldr r3, [r7, #4] - 8041e42: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8041e46: 429a cmp r2, r3 - 8041e48: d326 bcc.n 8041e98 + 8041e7a: 687b ldr r3, [r7, #4] + 8041e7c: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a + 8041e80: 687b ldr r3, [r7, #4] + 8041e82: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 8041e86: 429a cmp r2, r3 + 8041e88: d326 bcc.n 8041ed8 pcb->bytes_acked = (tcpwnd_size_t)(pcb->bytes_acked - pcb->cwnd); - 8041e4a: 687b ldr r3, [r7, #4] - 8041e4c: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a - 8041e50: 687b ldr r3, [r7, #4] - 8041e52: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8041e56: 1ad3 subs r3, r2, r3 - 8041e58: b29a uxth r2, r3 - 8041e5a: 687b ldr r3, [r7, #4] - 8041e5c: f8a3 206a strh.w r2, [r3, #106] ; 0x6a + 8041e8a: 687b ldr r3, [r7, #4] + 8041e8c: f8b3 206a ldrh.w r2, [r3, #106] ; 0x6a + 8041e90: 687b ldr r3, [r7, #4] + 8041e92: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 8041e96: 1ad3 subs r3, r2, r3 + 8041e98: b29a uxth r2, r3 + 8041e9a: 687b ldr r3, [r7, #4] + 8041e9c: f8a3 206a strh.w r2, [r3, #106] ; 0x6a TCP_WND_INC(pcb->cwnd, pcb->mss); - 8041e60: 687b ldr r3, [r7, #4] - 8041e62: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041e66: 687b ldr r3, [r7, #4] - 8041e68: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041e6a: 4413 add r3, r2 - 8041e6c: b29a uxth r2, r3 - 8041e6e: 687b ldr r3, [r7, #4] - 8041e70: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8041e74: 429a cmp r2, r3 - 8041e76: d30a bcc.n 8041e8e - 8041e78: 687b ldr r3, [r7, #4] - 8041e7a: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8041e7e: 687b ldr r3, [r7, #4] - 8041e80: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8041e82: 4413 add r3, r2 - 8041e84: b29a uxth r2, r3 - 8041e86: 687b ldr r3, [r7, #4] - 8041e88: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 - 8041e8c: e004 b.n 8041e98 - 8041e8e: 687b ldr r3, [r7, #4] - 8041e90: f64f 72ff movw r2, #65535 ; 0xffff - 8041e94: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041ea0: 687b ldr r3, [r7, #4] + 8041ea2: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041ea6: 687b ldr r3, [r7, #4] + 8041ea8: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041eaa: 4413 add r3, r2 + 8041eac: b29a uxth r2, r3 + 8041eae: 687b ldr r3, [r7, #4] + 8041eb0: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 8041eb4: 429a cmp r2, r3 + 8041eb6: d30a bcc.n 8041ece + 8041eb8: 687b ldr r3, [r7, #4] + 8041eba: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8041ebe: 687b ldr r3, [r7, #4] + 8041ec0: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8041ec2: 4413 add r3, r2 + 8041ec4: b29a uxth r2, r3 + 8041ec6: 687b ldr r3, [r7, #4] + 8041ec8: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 8041ecc: e004 b.n 8041ed8 + 8041ece: 687b ldr r3, [r7, #4] + 8041ed0: f64f 72ff movw r2, #65535 ; 0xffff + 8041ed4: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 pcb->unacked != NULL ? lwip_ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked) : 0)); /* Remove segment from the unacknowledged list if the incoming ACK acknowledges them. */ pcb->unacked = tcp_free_acked_segments(pcb, pcb->unacked, "unacked", pcb->unsent); - 8041e98: 687b ldr r3, [r7, #4] - 8041e9a: 6f19 ldr r1, [r3, #112] ; 0x70 - 8041e9c: 687b ldr r3, [r7, #4] - 8041e9e: 6edb ldr r3, [r3, #108] ; 0x6c - 8041ea0: 4a98 ldr r2, [pc, #608] ; (8042104 ) - 8041ea2: 6878 ldr r0, [r7, #4] - 8041ea4: f7ff fdca bl 8041a3c - 8041ea8: 4602 mov r2, r0 - 8041eaa: 687b ldr r3, [r7, #4] - 8041eac: 671a str r2, [r3, #112] ; 0x70 + 8041ed8: 687b ldr r3, [r7, #4] + 8041eda: 6f19 ldr r1, [r3, #112] ; 0x70 + 8041edc: 687b ldr r3, [r7, #4] + 8041ede: 6edb ldr r3, [r3, #108] ; 0x6c + 8041ee0: 4a98 ldr r2, [pc, #608] ; (8042144 ) + 8041ee2: 6878 ldr r0, [r7, #4] + 8041ee4: f7ff fdca bl 8041a7c + 8041ee8: 4602 mov r2, r0 + 8041eea: 687b ldr r3, [r7, #4] + 8041eec: 671a str r2, [r3, #112] ; 0x70 on the list are acknowledged by the ACK. This may seem strange since an "unsent" segment shouldn't be acked. The rationale is that lwIP puts all outstanding segments on the ->unsent list after a retransmission, so these segments may in fact have been sent once. */ pcb->unsent = tcp_free_acked_segments(pcb, pcb->unsent, "unsent", pcb->unacked); - 8041eae: 687b ldr r3, [r7, #4] - 8041eb0: 6ed9 ldr r1, [r3, #108] ; 0x6c - 8041eb2: 687b ldr r3, [r7, #4] - 8041eb4: 6f1b ldr r3, [r3, #112] ; 0x70 - 8041eb6: 4a94 ldr r2, [pc, #592] ; (8042108 ) - 8041eb8: 6878 ldr r0, [r7, #4] - 8041eba: f7ff fdbf bl 8041a3c - 8041ebe: 4602 mov r2, r0 - 8041ec0: 687b ldr r3, [r7, #4] - 8041ec2: 66da str r2, [r3, #108] ; 0x6c + 8041eee: 687b ldr r3, [r7, #4] + 8041ef0: 6ed9 ldr r1, [r3, #108] ; 0x6c + 8041ef2: 687b ldr r3, [r7, #4] + 8041ef4: 6f1b ldr r3, [r3, #112] ; 0x70 + 8041ef6: 4a94 ldr r2, [pc, #592] ; (8042148 ) + 8041ef8: 6878 ldr r0, [r7, #4] + 8041efa: f7ff fdbf bl 8041a7c + 8041efe: 4602 mov r2, r0 + 8041f00: 687b ldr r3, [r7, #4] + 8041f02: 66da str r2, [r3, #108] ; 0x6c /* If there's nothing left to acknowledge, stop the retransmit timer, otherwise reset it to start again */ if (pcb->unacked == NULL) { - 8041ec4: 687b ldr r3, [r7, #4] - 8041ec6: 6f1b ldr r3, [r3, #112] ; 0x70 - 8041ec8: 2b00 cmp r3, #0 - 8041eca: d104 bne.n 8041ed6 + 8041f04: 687b ldr r3, [r7, #4] + 8041f06: 6f1b ldr r3, [r3, #112] ; 0x70 + 8041f08: 2b00 cmp r3, #0 + 8041f0a: d104 bne.n 8041f16 pcb->rtime = -1; - 8041ecc: 687b ldr r3, [r7, #4] - 8041ece: f64f 72ff movw r2, #65535 ; 0xffff - 8041ed2: 861a strh r2, [r3, #48] ; 0x30 - 8041ed4: e002 b.n 8041edc + 8041f0c: 687b ldr r3, [r7, #4] + 8041f0e: f64f 72ff movw r2, #65535 ; 0xffff + 8041f12: 861a strh r2, [r3, #48] ; 0x30 + 8041f14: e002 b.n 8041f1c } else { pcb->rtime = 0; - 8041ed6: 687b ldr r3, [r7, #4] - 8041ed8: 2200 movs r2, #0 - 8041eda: 861a strh r2, [r3, #48] ; 0x30 + 8041f16: 687b ldr r3, [r7, #4] + 8041f18: 2200 movs r2, #0 + 8041f1a: 861a strh r2, [r3, #48] ; 0x30 } pcb->polltmr = 0; - 8041edc: 687b ldr r3, [r7, #4] - 8041ede: 2200 movs r2, #0 - 8041ee0: 771a strb r2, [r3, #28] + 8041f1c: 687b ldr r3, [r7, #4] + 8041f1e: 2200 movs r2, #0 + 8041f20: 771a strb r2, [r3, #28] #if TCP_OVERSIZE if (pcb->unsent == NULL) { - 8041ee2: 687b ldr r3, [r7, #4] - 8041ee4: 6edb ldr r3, [r3, #108] ; 0x6c - 8041ee6: 2b00 cmp r3, #0 - 8041ee8: d103 bne.n 8041ef2 + 8041f22: 687b ldr r3, [r7, #4] + 8041f24: 6edb ldr r3, [r3, #108] ; 0x6c + 8041f26: 2b00 cmp r3, #0 + 8041f28: d103 bne.n 8041f32 pcb->unsent_oversize = 0; - 8041eea: 687b ldr r3, [r7, #4] - 8041eec: 2200 movs r2, #0 - 8041eee: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 8041f2a: 687b ldr r3, [r7, #4] + 8041f2c: 2200 movs r2, #0 + 8041f2e: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 /* Inform neighbor reachability of forward progress. */ nd6_reachability_hint(ip6_current_src_addr()); } #endif /* LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS*/ pcb->snd_buf = (tcpwnd_size_t)(pcb->snd_buf + recv_acked); - 8041ef2: 687b ldr r3, [r7, #4] - 8041ef4: f8b3 2064 ldrh.w r2, [r3, #100] ; 0x64 - 8041ef8: 4b84 ldr r3, [pc, #528] ; (804210c ) - 8041efa: 881b ldrh r3, [r3, #0] - 8041efc: 4413 add r3, r2 - 8041efe: b29a uxth r2, r3 - 8041f00: 687b ldr r3, [r7, #4] - 8041f02: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 + 8041f32: 687b ldr r3, [r7, #4] + 8041f34: f8b3 2064 ldrh.w r2, [r3, #100] ; 0x64 + 8041f38: 4b84 ldr r3, [pc, #528] ; (804214c ) + 8041f3a: 881b ldrh r3, [r3, #0] + 8041f3c: 4413 add r3, r2 + 8041f3e: b29a uxth r2, r3 + 8041f40: 687b ldr r3, [r7, #4] + 8041f42: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 /* check if this ACK ends our retransmission of in-flight data */ if (pcb->flags & TF_RTO) { - 8041f06: 687b ldr r3, [r7, #4] - 8041f08: 8b5b ldrh r3, [r3, #26] - 8041f0a: f403 6300 and.w r3, r3, #2048 ; 0x800 - 8041f0e: 2b00 cmp r3, #0 - 8041f10: d035 beq.n 8041f7e + 8041f46: 687b ldr r3, [r7, #4] + 8041f48: 8b5b ldrh r3, [r3, #26] + 8041f4a: f403 6300 and.w r3, r3, #2048 ; 0x800 + 8041f4e: 2b00 cmp r3, #0 + 8041f50: d035 beq.n 8041fbe /* RTO is done if 1) both queues are empty or 2) unacked is empty and unsent head contains data not part of RTO or 3) unacked head contains data not part of RTO */ if (pcb->unacked == NULL) { - 8041f12: 687b ldr r3, [r7, #4] - 8041f14: 6f1b ldr r3, [r3, #112] ; 0x70 - 8041f16: 2b00 cmp r3, #0 - 8041f18: d118 bne.n 8041f4c + 8041f52: 687b ldr r3, [r7, #4] + 8041f54: 6f1b ldr r3, [r3, #112] ; 0x70 + 8041f56: 2b00 cmp r3, #0 + 8041f58: d118 bne.n 8041f8c if ((pcb->unsent == NULL) || - 8041f1a: 687b ldr r3, [r7, #4] - 8041f1c: 6edb ldr r3, [r3, #108] ; 0x6c - 8041f1e: 2b00 cmp r3, #0 - 8041f20: d00c beq.n 8041f3c + 8041f5a: 687b ldr r3, [r7, #4] + 8041f5c: 6edb ldr r3, [r3, #108] ; 0x6c + 8041f5e: 2b00 cmp r3, #0 + 8041f60: d00c beq.n 8041f7c (TCP_SEQ_LEQ(pcb->rto_end, lwip_ntohl(pcb->unsent->tcphdr->seqno)))) { - 8041f22: 687b ldr r3, [r7, #4] - 8041f24: 6cdc ldr r4, [r3, #76] ; 0x4c - 8041f26: 687b ldr r3, [r7, #4] - 8041f28: 6edb ldr r3, [r3, #108] ; 0x6c - 8041f2a: 68db ldr r3, [r3, #12] - 8041f2c: 685b ldr r3, [r3, #4] - 8041f2e: 4618 mov r0, r3 - 8041f30: f7fb f861 bl 803cff6 - 8041f34: 4603 mov r3, r0 - 8041f36: 1ae3 subs r3, r4, r3 + 8041f62: 687b ldr r3, [r7, #4] + 8041f64: 6cdc ldr r4, [r3, #76] ; 0x4c + 8041f66: 687b ldr r3, [r7, #4] + 8041f68: 6edb ldr r3, [r3, #108] ; 0x6c + 8041f6a: 68db ldr r3, [r3, #12] + 8041f6c: 685b ldr r3, [r3, #4] + 8041f6e: 4618 mov r0, r3 + 8041f70: f7fb f861 bl 803d036 + 8041f74: 4603 mov r3, r0 + 8041f76: 1ae3 subs r3, r4, r3 if ((pcb->unsent == NULL) || - 8041f38: 2b00 cmp r3, #0 - 8041f3a: dc20 bgt.n 8041f7e + 8041f78: 2b00 cmp r3, #0 + 8041f7a: dc20 bgt.n 8041fbe tcp_clear_flags(pcb, TF_RTO); - 8041f3c: 687b ldr r3, [r7, #4] - 8041f3e: 8b5b ldrh r3, [r3, #26] - 8041f40: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 8041f44: b29a uxth r2, r3 - 8041f46: 687b ldr r3, [r7, #4] - 8041f48: 835a strh r2, [r3, #26] + 8041f7c: 687b ldr r3, [r7, #4] + 8041f7e: 8b5b ldrh r3, [r3, #26] + 8041f80: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 8041f84: b29a uxth r2, r3 + 8041f86: 687b ldr r3, [r7, #4] + 8041f88: 835a strh r2, [r3, #26] } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 8041f4a: e018 b.n 8041f7e + 8041f8a: e018 b.n 8041fbe } } else if (TCP_SEQ_LEQ(pcb->rto_end, lwip_ntohl(pcb->unacked->tcphdr->seqno))) { - 8041f4c: 687b ldr r3, [r7, #4] - 8041f4e: 6cdc ldr r4, [r3, #76] ; 0x4c - 8041f50: 687b ldr r3, [r7, #4] - 8041f52: 6f1b ldr r3, [r3, #112] ; 0x70 - 8041f54: 68db ldr r3, [r3, #12] - 8041f56: 685b ldr r3, [r3, #4] - 8041f58: 4618 mov r0, r3 - 8041f5a: f7fb f84c bl 803cff6 - 8041f5e: 4603 mov r3, r0 - 8041f60: 1ae3 subs r3, r4, r3 - 8041f62: 2b00 cmp r3, #0 - 8041f64: dc0b bgt.n 8041f7e + 8041f8c: 687b ldr r3, [r7, #4] + 8041f8e: 6cdc ldr r4, [r3, #76] ; 0x4c + 8041f90: 687b ldr r3, [r7, #4] + 8041f92: 6f1b ldr r3, [r3, #112] ; 0x70 + 8041f94: 68db ldr r3, [r3, #12] + 8041f96: 685b ldr r3, [r3, #4] + 8041f98: 4618 mov r0, r3 + 8041f9a: f7fb f84c bl 803d036 + 8041f9e: 4603 mov r3, r0 + 8041fa0: 1ae3 subs r3, r4, r3 + 8041fa2: 2b00 cmp r3, #0 + 8041fa4: dc0b bgt.n 8041fbe tcp_clear_flags(pcb, TF_RTO); - 8041f66: 687b ldr r3, [r7, #4] - 8041f68: 8b5b ldrh r3, [r3, #26] - 8041f6a: f423 6300 bic.w r3, r3, #2048 ; 0x800 - 8041f6e: b29a uxth r2, r3 - 8041f70: 687b ldr r3, [r7, #4] - 8041f72: 835a strh r2, [r3, #26] + 8041fa6: 687b ldr r3, [r7, #4] + 8041fa8: 8b5b ldrh r3, [r3, #26] + 8041faa: f423 6300 bic.w r3, r3, #2048 ; 0x800 + 8041fae: b29a uxth r2, r3 + 8041fb0: 687b ldr r3, [r7, #4] + 8041fb2: 835a strh r2, [r3, #26] } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 8041f74: e003 b.n 8041f7e + 8041fb4: e003 b.n 8041fbe } } /* End of ACK for new data processing. */ } else { /* Out of sequence ACK, didn't really ack anything */ tcp_send_empty_ack(pcb); - 8041f76: 6878 ldr r0, [r7, #4] - 8041f78: f002 fbce bl 8044718 - 8041f7c: e000 b.n 8041f80 + 8041fb6: 6878 ldr r0, [r7, #4] + 8041fb8: f002 fbce bl 8044758 + 8041fbc: e000 b.n 8041fc0 } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack + 1, pcb->snd_nxt)) { - 8041f7e: bf00 nop + 8041fbe: bf00 nop pcb->rttest, pcb->rtseq, ackno)); /* RTT estimation calculations. This is done by checking if the incoming segment acknowledges the segment we use to take a round-trip time measurement. */ if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { - 8041f80: 687b ldr r3, [r7, #4] - 8041f82: 6b5b ldr r3, [r3, #52] ; 0x34 - 8041f84: 2b00 cmp r3, #0 - 8041f86: d05b beq.n 8042040 - 8041f88: 687b ldr r3, [r7, #4] - 8041f8a: 6b9a ldr r2, [r3, #56] ; 0x38 - 8041f8c: 4b60 ldr r3, [pc, #384] ; (8042110 ) - 8041f8e: 681b ldr r3, [r3, #0] - 8041f90: 1ad3 subs r3, r2, r3 - 8041f92: 2b00 cmp r3, #0 - 8041f94: da54 bge.n 8042040 + 8041fc0: 687b ldr r3, [r7, #4] + 8041fc2: 6b5b ldr r3, [r3, #52] ; 0x34 + 8041fc4: 2b00 cmp r3, #0 + 8041fc6: d05b beq.n 8042080 + 8041fc8: 687b ldr r3, [r7, #4] + 8041fca: 6b9a ldr r2, [r3, #56] ; 0x38 + 8041fcc: 4b60 ldr r3, [pc, #384] ; (8042150 ) + 8041fce: 681b ldr r3, [r3, #0] + 8041fd0: 1ad3 subs r3, r2, r3 + 8041fd2: 2b00 cmp r3, #0 + 8041fd4: da54 bge.n 8042080 /* diff between this shouldn't exceed 32K since this are tcp timer ticks and a round-trip shouldn't be that long... */ m = (s16_t)(tcp_ticks - pcb->rttest); - 8041f96: 4b5f ldr r3, [pc, #380] ; (8042114 ) - 8041f98: 681b ldr r3, [r3, #0] - 8041f9a: b29a uxth r2, r3 - 8041f9c: 687b ldr r3, [r7, #4] - 8041f9e: 6b5b ldr r3, [r3, #52] ; 0x34 - 8041fa0: b29b uxth r3, r3 - 8041fa2: 1ad3 subs r3, r2, r3 - 8041fa4: b29b uxth r3, r3 - 8041fa6: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + 8041fd6: 4b5f ldr r3, [pc, #380] ; (8042154 ) + 8041fd8: 681b ldr r3, [r3, #0] + 8041fda: b29a uxth r2, r3 + 8041fdc: 687b ldr r3, [r7, #4] + 8041fde: 6b5b ldr r3, [r3, #52] ; 0x34 + 8041fe0: b29b uxth r3, r3 + 8041fe2: 1ad3 subs r3, r2, r3 + 8041fe4: b29b uxth r3, r3 + 8041fe6: f8a7 304e strh.w r3, [r7, #78] ; 0x4e LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n", m, (u16_t)(m * TCP_SLOW_INTERVAL))); /* This is taken directly from VJs original code in his paper */ m = (s16_t)(m - (pcb->sa >> 3)); - 8041faa: f8b7 204e ldrh.w r2, [r7, #78] ; 0x4e - 8041fae: 687b ldr r3, [r7, #4] - 8041fb0: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c - 8041fb4: 10db asrs r3, r3, #3 - 8041fb6: b21b sxth r3, r3 - 8041fb8: b29b uxth r3, r3 - 8041fba: 1ad3 subs r3, r2, r3 - 8041fbc: b29b uxth r3, r3 - 8041fbe: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + 8041fea: f8b7 204e ldrh.w r2, [r7, #78] ; 0x4e + 8041fee: 687b ldr r3, [r7, #4] + 8041ff0: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c + 8041ff4: 10db asrs r3, r3, #3 + 8041ff6: b21b sxth r3, r3 + 8041ff8: b29b uxth r3, r3 + 8041ffa: 1ad3 subs r3, r2, r3 + 8041ffc: b29b uxth r3, r3 + 8041ffe: f8a7 304e strh.w r3, [r7, #78] ; 0x4e pcb->sa = (s16_t)(pcb->sa + m); - 8041fc2: 687b ldr r3, [r7, #4] - 8041fc4: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c - 8041fc8: b29a uxth r2, r3 - 8041fca: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e - 8041fce: 4413 add r3, r2 - 8041fd0: b29b uxth r3, r3 - 8041fd2: b21a sxth r2, r3 - 8041fd4: 687b ldr r3, [r7, #4] - 8041fd6: 879a strh r2, [r3, #60] ; 0x3c + 8042002: 687b ldr r3, [r7, #4] + 8042004: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c + 8042008: b29a uxth r2, r3 + 804200a: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 804200e: 4413 add r3, r2 + 8042010: b29b uxth r3, r3 + 8042012: b21a sxth r2, r3 + 8042014: 687b ldr r3, [r7, #4] + 8042016: 879a strh r2, [r3, #60] ; 0x3c if (m < 0) { - 8041fd8: f9b7 304e ldrsh.w r3, [r7, #78] ; 0x4e - 8041fdc: 2b00 cmp r3, #0 - 8041fde: da05 bge.n 8041fec + 8042018: f9b7 304e ldrsh.w r3, [r7, #78] ; 0x4e + 804201c: 2b00 cmp r3, #0 + 804201e: da05 bge.n 804202c m = (s16_t) - m; - 8041fe0: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e - 8041fe4: 425b negs r3, r3 - 8041fe6: b29b uxth r3, r3 - 8041fe8: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + 8042020: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8042024: 425b negs r3, r3 + 8042026: b29b uxth r3, r3 + 8042028: f8a7 304e strh.w r3, [r7, #78] ; 0x4e } m = (s16_t)(m - (pcb->sv >> 2)); - 8041fec: f8b7 204e ldrh.w r2, [r7, #78] ; 0x4e - 8041ff0: 687b ldr r3, [r7, #4] - 8041ff2: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e - 8041ff6: 109b asrs r3, r3, #2 - 8041ff8: b21b sxth r3, r3 - 8041ffa: b29b uxth r3, r3 - 8041ffc: 1ad3 subs r3, r2, r3 - 8041ffe: b29b uxth r3, r3 - 8042000: f8a7 304e strh.w r3, [r7, #78] ; 0x4e + 804202c: f8b7 204e ldrh.w r2, [r7, #78] ; 0x4e + 8042030: 687b ldr r3, [r7, #4] + 8042032: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e + 8042036: 109b asrs r3, r3, #2 + 8042038: b21b sxth r3, r3 + 804203a: b29b uxth r3, r3 + 804203c: 1ad3 subs r3, r2, r3 + 804203e: b29b uxth r3, r3 + 8042040: f8a7 304e strh.w r3, [r7, #78] ; 0x4e pcb->sv = (s16_t)(pcb->sv + m); - 8042004: 687b ldr r3, [r7, #4] - 8042006: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e - 804200a: b29a uxth r2, r3 - 804200c: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e - 8042010: 4413 add r3, r2 - 8042012: b29b uxth r3, r3 - 8042014: b21a sxth r2, r3 - 8042016: 687b ldr r3, [r7, #4] - 8042018: 87da strh r2, [r3, #62] ; 0x3e + 8042044: 687b ldr r3, [r7, #4] + 8042046: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e + 804204a: b29a uxth r2, r3 + 804204c: f8b7 304e ldrh.w r3, [r7, #78] ; 0x4e + 8042050: 4413 add r3, r2 + 8042052: b29b uxth r3, r3 + 8042054: b21a sxth r2, r3 + 8042056: 687b ldr r3, [r7, #4] + 8042058: 87da strh r2, [r3, #62] ; 0x3e pcb->rto = (s16_t)((pcb->sa >> 3) + pcb->sv); - 804201a: 687b ldr r3, [r7, #4] - 804201c: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c - 8042020: 10db asrs r3, r3, #3 - 8042022: b21b sxth r3, r3 - 8042024: b29a uxth r2, r3 - 8042026: 687b ldr r3, [r7, #4] - 8042028: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e - 804202c: b29b uxth r3, r3 - 804202e: 4413 add r3, r2 - 8042030: b29b uxth r3, r3 - 8042032: b21a sxth r2, r3 - 8042034: 687b ldr r3, [r7, #4] - 8042036: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 + 804205a: 687b ldr r3, [r7, #4] + 804205c: f9b3 303c ldrsh.w r3, [r3, #60] ; 0x3c + 8042060: 10db asrs r3, r3, #3 + 8042062: b21b sxth r3, r3 + 8042064: b29a uxth r2, r3 + 8042066: 687b ldr r3, [r7, #4] + 8042068: f9b3 303e ldrsh.w r3, [r3, #62] ; 0x3e + 804206c: b29b uxth r3, r3 + 804206e: 4413 add r3, r2 + 8042070: b29b uxth r3, r3 + 8042072: b21a sxth r2, r3 + 8042074: 687b ldr r3, [r7, #4] + 8042076: f8a3 2040 strh.w r2, [r3, #64] ; 0x40 LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n", pcb->rto, (u16_t)(pcb->rto * TCP_SLOW_INTERVAL))); pcb->rttest = 0; - 804203a: 687b ldr r3, [r7, #4] - 804203c: 2200 movs r2, #0 - 804203e: 635a str r2, [r3, #52] ; 0x34 + 804207a: 687b ldr r3, [r7, #4] + 804207c: 2200 movs r2, #0 + 804207e: 635a str r2, [r3, #52] ; 0x34 /* If the incoming segment contains data, we must process it further unless the pcb already received a FIN. (RFC 793, chapter 3.9, "SEGMENT ARRIVES" in states CLOSE-WAIT, CLOSING, LAST-ACK and TIME-WAIT: "Ignore the segment text.") */ if ((tcplen > 0) && (pcb->state < CLOSE_WAIT)) { - 8042040: 4b35 ldr r3, [pc, #212] ; (8042118 ) - 8042042: 881b ldrh r3, [r3, #0] - 8042044: 2b00 cmp r3, #0 - 8042046: f000 84e2 beq.w 8042a0e - 804204a: 687b ldr r3, [r7, #4] - 804204c: 7d1b ldrb r3, [r3, #20] - 804204e: 2b06 cmp r3, #6 - 8042050: f200 84dd bhi.w 8042a0e + 8042080: 4b35 ldr r3, [pc, #212] ; (8042158 ) + 8042082: 881b ldrh r3, [r3, #0] + 8042084: 2b00 cmp r3, #0 + 8042086: f000 84e2 beq.w 8042a4e + 804208a: 687b ldr r3, [r7, #4] + 804208c: 7d1b ldrb r3, [r3, #20] + 804208e: 2b06 cmp r3, #6 + 8042090: f200 84dd bhi.w 8042a4e this if the sequence number of the incoming segment is less than rcv_nxt, and the sequence number plus the length of the segment is larger than rcv_nxt. */ /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)) { if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/ if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)) { - 8042054: 687b ldr r3, [r7, #4] - 8042056: 6a5a ldr r2, [r3, #36] ; 0x24 - 8042058: 4b30 ldr r3, [pc, #192] ; (804211c ) - 804205a: 681b ldr r3, [r3, #0] - 804205c: 1ad3 subs r3, r2, r3 - 804205e: 3b01 subs r3, #1 - 8042060: 2b00 cmp r3, #0 - 8042062: f2c0 808f blt.w 8042184 - 8042066: 687b ldr r3, [r7, #4] - 8042068: 6a5a ldr r2, [r3, #36] ; 0x24 - 804206a: 4b2b ldr r3, [pc, #172] ; (8042118 ) - 804206c: 881b ldrh r3, [r3, #0] - 804206e: 4619 mov r1, r3 - 8042070: 4b2a ldr r3, [pc, #168] ; (804211c ) - 8042072: 681b ldr r3, [r3, #0] - 8042074: 440b add r3, r1 - 8042076: 1ad3 subs r3, r2, r3 - 8042078: 3301 adds r3, #1 - 804207a: 2b00 cmp r3, #0 - 804207c: f300 8082 bgt.w 8042184 + 8042094: 687b ldr r3, [r7, #4] + 8042096: 6a5a ldr r2, [r3, #36] ; 0x24 + 8042098: 4b30 ldr r3, [pc, #192] ; (804215c ) + 804209a: 681b ldr r3, [r3, #0] + 804209c: 1ad3 subs r3, r2, r3 + 804209e: 3b01 subs r3, #1 + 80420a0: 2b00 cmp r3, #0 + 80420a2: f2c0 808f blt.w 80421c4 + 80420a6: 687b ldr r3, [r7, #4] + 80420a8: 6a5a ldr r2, [r3, #36] ; 0x24 + 80420aa: 4b2b ldr r3, [pc, #172] ; (8042158 ) + 80420ac: 881b ldrh r3, [r3, #0] + 80420ae: 4619 mov r1, r3 + 80420b0: 4b2a ldr r3, [pc, #168] ; (804215c ) + 80420b2: 681b ldr r3, [r3, #0] + 80420b4: 440b add r3, r1 + 80420b6: 1ad3 subs r3, r2, r3 + 80420b8: 3301 adds r3, #1 + 80420ba: 2b00 cmp r3, #0 + 80420bc: f300 8082 bgt.w 80421c4 After we are done with adjusting the pbuf pointers we must adjust the ->data pointer in the seg and the segment length.*/ struct pbuf *p = inseg.p; - 8042080: 4b27 ldr r3, [pc, #156] ; (8042120 ) - 8042082: 685b ldr r3, [r3, #4] - 8042084: 647b str r3, [r7, #68] ; 0x44 + 80420c0: 4b27 ldr r3, [pc, #156] ; (8042160 ) + 80420c2: 685b ldr r3, [r3, #4] + 80420c4: 647b str r3, [r7, #68] ; 0x44 u32_t off32 = pcb->rcv_nxt - seqno; - 8042086: 687b ldr r3, [r7, #4] - 8042088: 6a5a ldr r2, [r3, #36] ; 0x24 - 804208a: 4b24 ldr r3, [pc, #144] ; (804211c ) - 804208c: 681b ldr r3, [r3, #0] - 804208e: 1ad3 subs r3, r2, r3 - 8042090: 627b str r3, [r7, #36] ; 0x24 + 80420c6: 687b ldr r3, [r7, #4] + 80420c8: 6a5a ldr r2, [r3, #36] ; 0x24 + 80420ca: 4b24 ldr r3, [pc, #144] ; (804215c ) + 80420cc: 681b ldr r3, [r3, #0] + 80420ce: 1ad3 subs r3, r2, r3 + 80420d0: 627b str r3, [r7, #36] ; 0x24 u16_t new_tot_len, off; LWIP_ASSERT("inseg.p != NULL", inseg.p); - 8042092: 4b23 ldr r3, [pc, #140] ; (8042120 ) - 8042094: 685b ldr r3, [r3, #4] - 8042096: 2b00 cmp r3, #0 - 8042098: d106 bne.n 80420a8 - 804209a: 4b22 ldr r3, [pc, #136] ; (8042124 ) - 804209c: f240 5294 movw r2, #1428 ; 0x594 - 80420a0: 4921 ldr r1, [pc, #132] ; (8042128 ) - 80420a2: 4822 ldr r0, [pc, #136] ; (804212c ) - 80420a4: f005 ff7e bl 8047fa4 + 80420d2: 4b23 ldr r3, [pc, #140] ; (8042160 ) + 80420d4: 685b ldr r3, [r3, #4] + 80420d6: 2b00 cmp r3, #0 + 80420d8: d106 bne.n 80420e8 + 80420da: 4b22 ldr r3, [pc, #136] ; (8042164 ) + 80420dc: f240 5294 movw r2, #1428 ; 0x594 + 80420e0: 4921 ldr r1, [pc, #132] ; (8042168 ) + 80420e2: 4822 ldr r0, [pc, #136] ; (804216c ) + 80420e4: f005 ff7e bl 8047fe4 LWIP_ASSERT("insane offset!", (off32 < 0xffff)); - 80420a8: 6a7b ldr r3, [r7, #36] ; 0x24 - 80420aa: f64f 72fe movw r2, #65534 ; 0xfffe - 80420ae: 4293 cmp r3, r2 - 80420b0: d906 bls.n 80420c0 - 80420b2: 4b1c ldr r3, [pc, #112] ; (8042124 ) - 80420b4: f240 5295 movw r2, #1429 ; 0x595 - 80420b8: 491d ldr r1, [pc, #116] ; (8042130 ) - 80420ba: 481c ldr r0, [pc, #112] ; (804212c ) - 80420bc: f005 ff72 bl 8047fa4 + 80420e8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80420ea: f64f 72fe movw r2, #65534 ; 0xfffe + 80420ee: 4293 cmp r3, r2 + 80420f0: d906 bls.n 8042100 + 80420f2: 4b1c ldr r3, [pc, #112] ; (8042164 ) + 80420f4: f240 5295 movw r2, #1429 ; 0x595 + 80420f8: 491d ldr r1, [pc, #116] ; (8042170 ) + 80420fa: 481c ldr r0, [pc, #112] ; (804216c ) + 80420fc: f005 ff72 bl 8047fe4 off = (u16_t)off32; - 80420c0: 6a7b ldr r3, [r7, #36] ; 0x24 - 80420c2: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8042100: 6a7b ldr r3, [r7, #36] ; 0x24 + 8042102: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off)); - 80420c6: 4b16 ldr r3, [pc, #88] ; (8042120 ) - 80420c8: 685b ldr r3, [r3, #4] - 80420ca: 891b ldrh r3, [r3, #8] - 80420cc: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80420d0: 429a cmp r2, r3 - 80420d2: d906 bls.n 80420e2 - 80420d4: 4b13 ldr r3, [pc, #76] ; (8042124 ) - 80420d6: f240 5297 movw r2, #1431 ; 0x597 - 80420da: 4916 ldr r1, [pc, #88] ; (8042134 ) - 80420dc: 4813 ldr r0, [pc, #76] ; (804212c ) - 80420de: f005 ff61 bl 8047fa4 + 8042106: 4b16 ldr r3, [pc, #88] ; (8042160 ) + 8042108: 685b ldr r3, [r3, #4] + 804210a: 891b ldrh r3, [r3, #8] + 804210c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 8042110: 429a cmp r2, r3 + 8042112: d906 bls.n 8042122 + 8042114: 4b13 ldr r3, [pc, #76] ; (8042164 ) + 8042116: f240 5297 movw r2, #1431 ; 0x597 + 804211a: 4916 ldr r1, [pc, #88] ; (8042174 ) + 804211c: 4813 ldr r0, [pc, #76] ; (804216c ) + 804211e: f005 ff61 bl 8047fe4 inseg.len -= off; - 80420e2: 4b0f ldr r3, [pc, #60] ; (8042120 ) - 80420e4: 891a ldrh r2, [r3, #8] - 80420e6: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 80420ea: 1ad3 subs r3, r2, r3 - 80420ec: b29a uxth r2, r3 - 80420ee: 4b0c ldr r3, [pc, #48] ; (8042120 ) - 80420f0: 811a strh r2, [r3, #8] + 8042122: 4b0f ldr r3, [pc, #60] ; (8042160 ) + 8042124: 891a ldrh r2, [r3, #8] + 8042126: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804212a: 1ad3 subs r3, r2, r3 + 804212c: b29a uxth r2, r3 + 804212e: 4b0c ldr r3, [pc, #48] ; (8042160 ) + 8042130: 811a strh r2, [r3, #8] new_tot_len = (u16_t)(inseg.p->tot_len - off); - 80420f2: 4b0b ldr r3, [pc, #44] ; (8042120 ) - 80420f4: 685b ldr r3, [r3, #4] - 80420f6: 891a ldrh r2, [r3, #8] - 80420f8: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 80420fc: 1ad3 subs r3, r2, r3 - 80420fe: 847b strh r3, [r7, #34] ; 0x22 + 8042132: 4b0b ldr r3, [pc, #44] ; (8042160 ) + 8042134: 685b ldr r3, [r3, #4] + 8042136: 891a ldrh r2, [r3, #8] + 8042138: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804213c: 1ad3 subs r3, r2, r3 + 804213e: 847b strh r3, [r7, #34] ; 0x22 while (p->len < off) { - 8042100: e02a b.n 8042158 - 8042102: bf00 nop - 8042104: 0804b700 .word 0x0804b700 - 8042108: 0804b708 .word 0x0804b708 - 804210c: 2400eb28 .word 0x2400eb28 - 8042110: 2400eb24 .word 0x2400eb24 - 8042114: 2400eae8 .word 0x2400eae8 - 8042118: 2400eb2a .word 0x2400eb2a - 804211c: 2400eb20 .word 0x2400eb20 - 8042120: 2400eb00 .word 0x2400eb00 - 8042124: 0804b398 .word 0x0804b398 - 8042128: 0804b710 .word 0x0804b710 - 804212c: 0804b3e4 .word 0x0804b3e4 - 8042130: 0804b720 .word 0x0804b720 - 8042134: 0804b730 .word 0x0804b730 + 8042140: e02a b.n 8042198 + 8042142: bf00 nop + 8042144: 0804b740 .word 0x0804b740 + 8042148: 0804b748 .word 0x0804b748 + 804214c: 2400eb28 .word 0x2400eb28 + 8042150: 2400eb24 .word 0x2400eb24 + 8042154: 2400eae8 .word 0x2400eae8 + 8042158: 2400eb2a .word 0x2400eb2a + 804215c: 2400eb20 .word 0x2400eb20 + 8042160: 2400eb00 .word 0x2400eb00 + 8042164: 0804b3d8 .word 0x0804b3d8 + 8042168: 0804b750 .word 0x0804b750 + 804216c: 0804b424 .word 0x0804b424 + 8042170: 0804b760 .word 0x0804b760 + 8042174: 0804b770 .word 0x0804b770 off -= p->len; - 8042138: 6c7b ldr r3, [r7, #68] ; 0x44 - 804213a: 895b ldrh r3, [r3, #10] - 804213c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 8042140: 1ad3 subs r3, r2, r3 - 8042142: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8042178: 6c7b ldr r3, [r7, #68] ; 0x44 + 804217a: 895b ldrh r3, [r3, #10] + 804217c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 8042180: 1ad3 subs r3, r2, r3 + 8042182: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 /* all pbufs up to and including this one have len==0, so tot_len is equal */ p->tot_len = new_tot_len; - 8042146: 6c7b ldr r3, [r7, #68] ; 0x44 - 8042148: 8c7a ldrh r2, [r7, #34] ; 0x22 - 804214a: 811a strh r2, [r3, #8] + 8042186: 6c7b ldr r3, [r7, #68] ; 0x44 + 8042188: 8c7a ldrh r2, [r7, #34] ; 0x22 + 804218a: 811a strh r2, [r3, #8] p->len = 0; - 804214c: 6c7b ldr r3, [r7, #68] ; 0x44 - 804214e: 2200 movs r2, #0 - 8042150: 815a strh r2, [r3, #10] + 804218c: 6c7b ldr r3, [r7, #68] ; 0x44 + 804218e: 2200 movs r2, #0 + 8042190: 815a strh r2, [r3, #10] p = p->next; - 8042152: 6c7b ldr r3, [r7, #68] ; 0x44 - 8042154: 681b ldr r3, [r3, #0] - 8042156: 647b str r3, [r7, #68] ; 0x44 + 8042192: 6c7b ldr r3, [r7, #68] ; 0x44 + 8042194: 681b ldr r3, [r3, #0] + 8042196: 647b str r3, [r7, #68] ; 0x44 while (p->len < off) { - 8042158: 6c7b ldr r3, [r7, #68] ; 0x44 - 804215a: 895b ldrh r3, [r3, #10] - 804215c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 8042160: 429a cmp r2, r3 - 8042162: d8e9 bhi.n 8042138 + 8042198: 6c7b ldr r3, [r7, #68] ; 0x44 + 804219a: 895b ldrh r3, [r3, #10] + 804219c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 80421a0: 429a cmp r2, r3 + 80421a2: d8e9 bhi.n 8042178 } /* cannot fail... */ pbuf_remove_header(p, off); - 8042164: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 8042168: 4619 mov r1, r3 - 804216a: 6c78 ldr r0, [r7, #68] ; 0x44 - 804216c: f7fc fada bl 803e724 + 80421a4: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 80421a8: 4619 mov r1, r3 + 80421aa: 6c78 ldr r0, [r7, #68] ; 0x44 + 80421ac: f7fc fada bl 803e764 inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; - 8042170: 687b ldr r3, [r7, #4] - 8042172: 6a5b ldr r3, [r3, #36] ; 0x24 - 8042174: 4a91 ldr r2, [pc, #580] ; (80423bc ) - 8042176: 6013 str r3, [r2, #0] - 8042178: 4b91 ldr r3, [pc, #580] ; (80423c0 ) - 804217a: 68db ldr r3, [r3, #12] - 804217c: 4a8f ldr r2, [pc, #572] ; (80423bc ) - 804217e: 6812 ldr r2, [r2, #0] - 8042180: 605a str r2, [r3, #4] + 80421b0: 687b ldr r3, [r7, #4] + 80421b2: 6a5b ldr r3, [r3, #36] ; 0x24 + 80421b4: 4a91 ldr r2, [pc, #580] ; (80423fc ) + 80421b6: 6013 str r3, [r2, #0] + 80421b8: 4b91 ldr r3, [pc, #580] ; (8042400 ) + 80421ba: 68db ldr r3, [r3, #12] + 80421bc: 4a8f ldr r2, [pc, #572] ; (80423fc ) + 80421be: 6812 ldr r2, [r2, #0] + 80421c0: 605a str r2, [r3, #4] if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)) { - 8042182: e00d b.n 80421a0 + 80421c2: e00d b.n 80421e0 } else { if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)) { - 8042184: 4b8d ldr r3, [pc, #564] ; (80423bc ) - 8042186: 681a ldr r2, [r3, #0] - 8042188: 687b ldr r3, [r7, #4] - 804218a: 6a5b ldr r3, [r3, #36] ; 0x24 - 804218c: 1ad3 subs r3, r2, r3 - 804218e: 2b00 cmp r3, #0 - 8042190: da06 bge.n 80421a0 + 80421c4: 4b8d ldr r3, [pc, #564] ; (80423fc ) + 80421c6: 681a ldr r2, [r3, #0] + 80421c8: 687b ldr r3, [r7, #4] + 80421ca: 6a5b ldr r3, [r3, #36] ; 0x24 + 80421cc: 1ad3 subs r3, r2, r3 + 80421ce: 2b00 cmp r3, #0 + 80421d0: da06 bge.n 80421e0 /* the whole segment is < rcv_nxt */ /* must be a duplicate of a packet that has already been correctly handled */ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno)); tcp_ack_now(pcb); - 8042192: 687b ldr r3, [r7, #4] - 8042194: 8b5b ldrh r3, [r3, #26] - 8042196: f043 0302 orr.w r3, r3, #2 - 804219a: b29a uxth r2, r3 - 804219c: 687b ldr r3, [r7, #4] - 804219e: 835a strh r2, [r3, #26] + 80421d2: 687b ldr r3, [r7, #4] + 80421d4: 8b5b ldrh r3, [r3, #26] + 80421d6: f043 0302 orr.w r3, r3, #2 + 80421da: b29a uxth r2, r3 + 80421dc: 687b ldr r3, [r7, #4] + 80421de: 835a strh r2, [r3, #26] } /* The sequence number must be within the window (above rcv_nxt and below rcv_nxt + rcv_wnd) in order to be further processed. */ if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 80421a0: 4b86 ldr r3, [pc, #536] ; (80423bc ) - 80421a2: 681a ldr r2, [r3, #0] - 80421a4: 687b ldr r3, [r7, #4] - 80421a6: 6a5b ldr r3, [r3, #36] ; 0x24 - 80421a8: 1ad3 subs r3, r2, r3 - 80421aa: 2b00 cmp r3, #0 - 80421ac: f2c0 842a blt.w 8042a04 - 80421b0: 4b82 ldr r3, [pc, #520] ; (80423bc ) - 80421b2: 681a ldr r2, [r3, #0] - 80421b4: 687b ldr r3, [r7, #4] - 80421b6: 6a5b ldr r3, [r3, #36] ; 0x24 - 80421b8: 6879 ldr r1, [r7, #4] - 80421ba: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80421bc: 440b add r3, r1 - 80421be: 1ad3 subs r3, r2, r3 - 80421c0: 3301 adds r3, #1 - 80421c2: 2b00 cmp r3, #0 - 80421c4: f300 841e bgt.w 8042a04 + 80421e0: 4b86 ldr r3, [pc, #536] ; (80423fc ) + 80421e2: 681a ldr r2, [r3, #0] + 80421e4: 687b ldr r3, [r7, #4] + 80421e6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80421e8: 1ad3 subs r3, r2, r3 + 80421ea: 2b00 cmp r3, #0 + 80421ec: f2c0 842a blt.w 8042a44 + 80421f0: 4b82 ldr r3, [pc, #520] ; (80423fc ) + 80421f2: 681a ldr r2, [r3, #0] + 80421f4: 687b ldr r3, [r7, #4] + 80421f6: 6a5b ldr r3, [r3, #36] ; 0x24 + 80421f8: 6879 ldr r1, [r7, #4] + 80421fa: 8d09 ldrh r1, [r1, #40] ; 0x28 + 80421fc: 440b add r3, r1 + 80421fe: 1ad3 subs r3, r2, r3 + 8042200: 3301 adds r3, #1 + 8042202: 2b00 cmp r3, #0 + 8042204: f300 841e bgt.w 8042a44 pcb->rcv_nxt + pcb->rcv_wnd - 1)) { if (pcb->rcv_nxt == seqno) { - 80421c8: 687b ldr r3, [r7, #4] - 80421ca: 6a5a ldr r2, [r3, #36] ; 0x24 - 80421cc: 4b7b ldr r3, [pc, #492] ; (80423bc ) - 80421ce: 681b ldr r3, [r3, #0] - 80421d0: 429a cmp r2, r3 - 80421d2: f040 829a bne.w 804270a + 8042208: 687b ldr r3, [r7, #4] + 804220a: 6a5a ldr r2, [r3, #36] ; 0x24 + 804220c: 4b7b ldr r3, [pc, #492] ; (80423fc ) + 804220e: 681b ldr r3, [r3, #0] + 8042210: 429a cmp r2, r3 + 8042212: f040 829a bne.w 804274a /* The incoming segment is the next in sequence. We check if we have to trim the end of the segment and update rcv_nxt and pass the data to the application. */ tcplen = TCP_TCPLEN(&inseg); - 80421d6: 4b7a ldr r3, [pc, #488] ; (80423c0 ) - 80421d8: 891c ldrh r4, [r3, #8] - 80421da: 4b79 ldr r3, [pc, #484] ; (80423c0 ) - 80421dc: 68db ldr r3, [r3, #12] - 80421de: 899b ldrh r3, [r3, #12] - 80421e0: b29b uxth r3, r3 - 80421e2: 4618 mov r0, r3 - 80421e4: f7fa fef2 bl 803cfcc - 80421e8: 4603 mov r3, r0 - 80421ea: b2db uxtb r3, r3 - 80421ec: f003 0303 and.w r3, r3, #3 - 80421f0: 2b00 cmp r3, #0 - 80421f2: d001 beq.n 80421f8 - 80421f4: 2301 movs r3, #1 - 80421f6: e000 b.n 80421fa - 80421f8: 2300 movs r3, #0 - 80421fa: 4423 add r3, r4 - 80421fc: b29a uxth r2, r3 - 80421fe: 4b71 ldr r3, [pc, #452] ; (80423c4 ) - 8042200: 801a strh r2, [r3, #0] + 8042216: 4b7a ldr r3, [pc, #488] ; (8042400 ) + 8042218: 891c ldrh r4, [r3, #8] + 804221a: 4b79 ldr r3, [pc, #484] ; (8042400 ) + 804221c: 68db ldr r3, [r3, #12] + 804221e: 899b ldrh r3, [r3, #12] + 8042220: b29b uxth r3, r3 + 8042222: 4618 mov r0, r3 + 8042224: f7fa fef2 bl 803d00c + 8042228: 4603 mov r3, r0 + 804222a: b2db uxtb r3, r3 + 804222c: f003 0303 and.w r3, r3, #3 + 8042230: 2b00 cmp r3, #0 + 8042232: d001 beq.n 8042238 + 8042234: 2301 movs r3, #1 + 8042236: e000 b.n 804223a + 8042238: 2300 movs r3, #0 + 804223a: 4423 add r3, r4 + 804223c: b29a uxth r2, r3 + 804223e: 4b71 ldr r3, [pc, #452] ; (8042404 ) + 8042240: 801a strh r2, [r3, #0] if (tcplen > pcb->rcv_wnd) { - 8042202: 687b ldr r3, [r7, #4] - 8042204: 8d1a ldrh r2, [r3, #40] ; 0x28 - 8042206: 4b6f ldr r3, [pc, #444] ; (80423c4 ) - 8042208: 881b ldrh r3, [r3, #0] - 804220a: 429a cmp r2, r3 - 804220c: d275 bcs.n 80422fa + 8042242: 687b ldr r3, [r7, #4] + 8042244: 8d1a ldrh r2, [r3, #40] ; 0x28 + 8042246: 4b6f ldr r3, [pc, #444] ; (8042404 ) + 8042248: 881b ldrh r3, [r3, #0] + 804224a: 429a cmp r2, r3 + 804224c: d275 bcs.n 804233a LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: other end overran receive window" "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 804220e: 4b6c ldr r3, [pc, #432] ; (80423c0 ) - 8042210: 68db ldr r3, [r3, #12] - 8042212: 899b ldrh r3, [r3, #12] - 8042214: b29b uxth r3, r3 - 8042216: 4618 mov r0, r3 - 8042218: f7fa fed8 bl 803cfcc - 804221c: 4603 mov r3, r0 - 804221e: b2db uxtb r3, r3 - 8042220: f003 0301 and.w r3, r3, #1 - 8042224: 2b00 cmp r3, #0 - 8042226: d01f beq.n 8042268 + 804224e: 4b6c ldr r3, [pc, #432] ; (8042400 ) + 8042250: 68db ldr r3, [r3, #12] + 8042252: 899b ldrh r3, [r3, #12] + 8042254: b29b uxth r3, r3 + 8042256: 4618 mov r0, r3 + 8042258: f7fa fed8 bl 803d00c + 804225c: 4603 mov r3, r0 + 804225e: b2db uxtb r3, r3 + 8042260: f003 0301 and.w r3, r3, #1 + 8042264: 2b00 cmp r3, #0 + 8042266: d01f beq.n 80422a8 /* Must remove the FIN from the header as we're trimming * that byte of sequence-space from the packet */ TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) & ~(unsigned int)TCP_FIN); - 8042228: 4b65 ldr r3, [pc, #404] ; (80423c0 ) - 804222a: 68db ldr r3, [r3, #12] - 804222c: 899b ldrh r3, [r3, #12] - 804222e: b29b uxth r3, r3 - 8042230: b21b sxth r3, r3 - 8042232: f423 537c bic.w r3, r3, #16128 ; 0x3f00 - 8042236: b21c sxth r4, r3 - 8042238: 4b61 ldr r3, [pc, #388] ; (80423c0 ) - 804223a: 68db ldr r3, [r3, #12] - 804223c: 899b ldrh r3, [r3, #12] - 804223e: b29b uxth r3, r3 - 8042240: 4618 mov r0, r3 - 8042242: f7fa fec3 bl 803cfcc - 8042246: 4603 mov r3, r0 - 8042248: b2db uxtb r3, r3 - 804224a: b29b uxth r3, r3 - 804224c: f003 033e and.w r3, r3, #62 ; 0x3e - 8042250: b29b uxth r3, r3 - 8042252: 4618 mov r0, r3 - 8042254: f7fa feba bl 803cfcc - 8042258: 4603 mov r3, r0 - 804225a: b21b sxth r3, r3 - 804225c: 4323 orrs r3, r4 - 804225e: b21a sxth r2, r3 - 8042260: 4b57 ldr r3, [pc, #348] ; (80423c0 ) - 8042262: 68db ldr r3, [r3, #12] - 8042264: b292 uxth r2, r2 - 8042266: 819a strh r2, [r3, #12] + 8042268: 4b65 ldr r3, [pc, #404] ; (8042400 ) + 804226a: 68db ldr r3, [r3, #12] + 804226c: 899b ldrh r3, [r3, #12] + 804226e: b29b uxth r3, r3 + 8042270: b21b sxth r3, r3 + 8042272: f423 537c bic.w r3, r3, #16128 ; 0x3f00 + 8042276: b21c sxth r4, r3 + 8042278: 4b61 ldr r3, [pc, #388] ; (8042400 ) + 804227a: 68db ldr r3, [r3, #12] + 804227c: 899b ldrh r3, [r3, #12] + 804227e: b29b uxth r3, r3 + 8042280: 4618 mov r0, r3 + 8042282: f7fa fec3 bl 803d00c + 8042286: 4603 mov r3, r0 + 8042288: b2db uxtb r3, r3 + 804228a: b29b uxth r3, r3 + 804228c: f003 033e and.w r3, r3, #62 ; 0x3e + 8042290: b29b uxth r3, r3 + 8042292: 4618 mov r0, r3 + 8042294: f7fa feba bl 803d00c + 8042298: 4603 mov r3, r0 + 804229a: b21b sxth r3, r3 + 804229c: 4323 orrs r3, r4 + 804229e: b21a sxth r2, r3 + 80422a0: 4b57 ldr r3, [pc, #348] ; (8042400 ) + 80422a2: 68db ldr r3, [r3, #12] + 80422a4: b292 uxth r2, r2 + 80422a6: 819a strh r2, [r3, #12] } /* Adjust length of segment to fit in the window. */ TCPWND_CHECK16(pcb->rcv_wnd); inseg.len = (u16_t)pcb->rcv_wnd; - 8042268: 687b ldr r3, [r7, #4] - 804226a: 8d1a ldrh r2, [r3, #40] ; 0x28 - 804226c: 4b54 ldr r3, [pc, #336] ; (80423c0 ) - 804226e: 811a strh r2, [r3, #8] + 80422a8: 687b ldr r3, [r7, #4] + 80422aa: 8d1a ldrh r2, [r3, #40] ; 0x28 + 80422ac: 4b54 ldr r3, [pc, #336] ; (8042400 ) + 80422ae: 811a strh r2, [r3, #8] if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - 8042270: 4b53 ldr r3, [pc, #332] ; (80423c0 ) - 8042272: 68db ldr r3, [r3, #12] - 8042274: 899b ldrh r3, [r3, #12] - 8042276: b29b uxth r3, r3 - 8042278: 4618 mov r0, r3 - 804227a: f7fa fea7 bl 803cfcc - 804227e: 4603 mov r3, r0 - 8042280: b2db uxtb r3, r3 - 8042282: f003 0302 and.w r3, r3, #2 - 8042286: 2b00 cmp r3, #0 - 8042288: d005 beq.n 8042296 + 80422b0: 4b53 ldr r3, [pc, #332] ; (8042400 ) + 80422b2: 68db ldr r3, [r3, #12] + 80422b4: 899b ldrh r3, [r3, #12] + 80422b6: b29b uxth r3, r3 + 80422b8: 4618 mov r0, r3 + 80422ba: f7fa fea7 bl 803d00c + 80422be: 4603 mov r3, r0 + 80422c0: b2db uxtb r3, r3 + 80422c2: f003 0302 and.w r3, r3, #2 + 80422c6: 2b00 cmp r3, #0 + 80422c8: d005 beq.n 80422d6 inseg.len -= 1; - 804228a: 4b4d ldr r3, [pc, #308] ; (80423c0 ) - 804228c: 891b ldrh r3, [r3, #8] - 804228e: 3b01 subs r3, #1 - 8042290: b29a uxth r2, r3 - 8042292: 4b4b ldr r3, [pc, #300] ; (80423c0 ) - 8042294: 811a strh r2, [r3, #8] + 80422ca: 4b4d ldr r3, [pc, #308] ; (8042400 ) + 80422cc: 891b ldrh r3, [r3, #8] + 80422ce: 3b01 subs r3, #1 + 80422d0: b29a uxth r2, r3 + 80422d2: 4b4b ldr r3, [pc, #300] ; (8042400 ) + 80422d4: 811a strh r2, [r3, #8] } pbuf_realloc(inseg.p, inseg.len); - 8042296: 4b4a ldr r3, [pc, #296] ; (80423c0 ) - 8042298: 685b ldr r3, [r3, #4] - 804229a: 4a49 ldr r2, [pc, #292] ; (80423c0 ) - 804229c: 8912 ldrh r2, [r2, #8] - 804229e: 4611 mov r1, r2 - 80422a0: 4618 mov r0, r3 - 80422a2: f7fc f93f bl 803e524 + 80422d6: 4b4a ldr r3, [pc, #296] ; (8042400 ) + 80422d8: 685b ldr r3, [r3, #4] + 80422da: 4a49 ldr r2, [pc, #292] ; (8042400 ) + 80422dc: 8912 ldrh r2, [r2, #8] + 80422de: 4611 mov r1, r2 + 80422e0: 4618 mov r0, r3 + 80422e2: f7fc f93f bl 803e564 tcplen = TCP_TCPLEN(&inseg); - 80422a6: 4b46 ldr r3, [pc, #280] ; (80423c0 ) - 80422a8: 891c ldrh r4, [r3, #8] - 80422aa: 4b45 ldr r3, [pc, #276] ; (80423c0 ) - 80422ac: 68db ldr r3, [r3, #12] - 80422ae: 899b ldrh r3, [r3, #12] - 80422b0: b29b uxth r3, r3 - 80422b2: 4618 mov r0, r3 - 80422b4: f7fa fe8a bl 803cfcc - 80422b8: 4603 mov r3, r0 - 80422ba: b2db uxtb r3, r3 - 80422bc: f003 0303 and.w r3, r3, #3 - 80422c0: 2b00 cmp r3, #0 - 80422c2: d001 beq.n 80422c8 - 80422c4: 2301 movs r3, #1 - 80422c6: e000 b.n 80422ca - 80422c8: 2300 movs r3, #0 - 80422ca: 4423 add r3, r4 - 80422cc: b29a uxth r2, r3 - 80422ce: 4b3d ldr r3, [pc, #244] ; (80423c4 ) - 80422d0: 801a strh r2, [r3, #0] + 80422e6: 4b46 ldr r3, [pc, #280] ; (8042400 ) + 80422e8: 891c ldrh r4, [r3, #8] + 80422ea: 4b45 ldr r3, [pc, #276] ; (8042400 ) + 80422ec: 68db ldr r3, [r3, #12] + 80422ee: 899b ldrh r3, [r3, #12] + 80422f0: b29b uxth r3, r3 + 80422f2: 4618 mov r0, r3 + 80422f4: f7fa fe8a bl 803d00c + 80422f8: 4603 mov r3, r0 + 80422fa: b2db uxtb r3, r3 + 80422fc: f003 0303 and.w r3, r3, #3 + 8042300: 2b00 cmp r3, #0 + 8042302: d001 beq.n 8042308 + 8042304: 2301 movs r3, #1 + 8042306: e000 b.n 804230a + 8042308: 2300 movs r3, #0 + 804230a: 4423 add r3, r4 + 804230c: b29a uxth r2, r3 + 804230e: 4b3d ldr r3, [pc, #244] ; (8042404 ) + 8042310: 801a strh r2, [r3, #0] LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - 80422d2: 4b3c ldr r3, [pc, #240] ; (80423c4 ) - 80422d4: 881b ldrh r3, [r3, #0] - 80422d6: 461a mov r2, r3 - 80422d8: 4b38 ldr r3, [pc, #224] ; (80423bc ) - 80422da: 681b ldr r3, [r3, #0] - 80422dc: 441a add r2, r3 - 80422de: 687b ldr r3, [r7, #4] - 80422e0: 6a5b ldr r3, [r3, #36] ; 0x24 - 80422e2: 6879 ldr r1, [r7, #4] - 80422e4: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80422e6: 440b add r3, r1 - 80422e8: 429a cmp r2, r3 - 80422ea: d006 beq.n 80422fa - 80422ec: 4b36 ldr r3, [pc, #216] ; (80423c8 ) - 80422ee: f240 52cb movw r2, #1483 ; 0x5cb - 80422f2: 4936 ldr r1, [pc, #216] ; (80423cc ) - 80422f4: 4836 ldr r0, [pc, #216] ; (80423d0 ) - 80422f6: f005 fe55 bl 8047fa4 + 8042312: 4b3c ldr r3, [pc, #240] ; (8042404 ) + 8042314: 881b ldrh r3, [r3, #0] + 8042316: 461a mov r2, r3 + 8042318: 4b38 ldr r3, [pc, #224] ; (80423fc ) + 804231a: 681b ldr r3, [r3, #0] + 804231c: 441a add r2, r3 + 804231e: 687b ldr r3, [r7, #4] + 8042320: 6a5b ldr r3, [r3, #36] ; 0x24 + 8042322: 6879 ldr r1, [r7, #4] + 8042324: 8d09 ldrh r1, [r1, #40] ; 0x28 + 8042326: 440b add r3, r1 + 8042328: 429a cmp r2, r3 + 804232a: d006 beq.n 804233a + 804232c: 4b36 ldr r3, [pc, #216] ; (8042408 ) + 804232e: f240 52cb movw r2, #1483 ; 0x5cb + 8042332: 4936 ldr r1, [pc, #216] ; (804240c ) + 8042334: 4836 ldr r0, [pc, #216] ; (8042410 ) + 8042336: f005 fe55 bl 8047fe4 } #if TCP_QUEUE_OOSEQ /* Received in-sequence data, adjust ooseq data if: - FIN has been received or - inseq overlaps with ooseq */ if (pcb->ooseq != NULL) { - 80422fa: 687b ldr r3, [r7, #4] - 80422fc: 6f5b ldr r3, [r3, #116] ; 0x74 - 80422fe: 2b00 cmp r3, #0 - 8042300: f000 80e7 beq.w 80424d2 + 804233a: 687b ldr r3, [r7, #4] + 804233c: 6f5b ldr r3, [r3, #116] ; 0x74 + 804233e: 2b00 cmp r3, #0 + 8042340: f000 80e7 beq.w 8042512 if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 8042304: 4b2e ldr r3, [pc, #184] ; (80423c0 ) - 8042306: 68db ldr r3, [r3, #12] - 8042308: 899b ldrh r3, [r3, #12] - 804230a: b29b uxth r3, r3 - 804230c: 4618 mov r0, r3 - 804230e: f7fa fe5d bl 803cfcc - 8042312: 4603 mov r3, r0 - 8042314: b2db uxtb r3, r3 - 8042316: f003 0301 and.w r3, r3, #1 - 804231a: 2b00 cmp r3, #0 - 804231c: d010 beq.n 8042340 + 8042344: 4b2e ldr r3, [pc, #184] ; (8042400 ) + 8042346: 68db ldr r3, [r3, #12] + 8042348: 899b ldrh r3, [r3, #12] + 804234a: b29b uxth r3, r3 + 804234c: 4618 mov r0, r3 + 804234e: f7fa fe5d bl 803d00c + 8042352: 4603 mov r3, r0 + 8042354: b2db uxtb r3, r3 + 8042356: f003 0301 and.w r3, r3, #1 + 804235a: 2b00 cmp r3, #0 + 804235c: d010 beq.n 8042380 LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received in-order FIN, binning ooseq queue\n")); /* Received in-order FIN means anything that was received * out of order must now have been received in-order, so * bin the ooseq queue */ while (pcb->ooseq != NULL) { - 804231e: e00a b.n 8042336 + 804235e: e00a b.n 8042376 struct tcp_seg *old_ooseq = pcb->ooseq; - 8042320: 687b ldr r3, [r7, #4] - 8042322: 6f5b ldr r3, [r3, #116] ; 0x74 - 8042324: 60fb str r3, [r7, #12] + 8042360: 687b ldr r3, [r7, #4] + 8042362: 6f5b ldr r3, [r3, #116] ; 0x74 + 8042364: 60fb str r3, [r7, #12] pcb->ooseq = pcb->ooseq->next; - 8042326: 687b ldr r3, [r7, #4] - 8042328: 6f5b ldr r3, [r3, #116] ; 0x74 - 804232a: 681a ldr r2, [r3, #0] - 804232c: 687b ldr r3, [r7, #4] - 804232e: 675a str r2, [r3, #116] ; 0x74 + 8042366: 687b ldr r3, [r7, #4] + 8042368: 6f5b ldr r3, [r3, #116] ; 0x74 + 804236a: 681a ldr r2, [r3, #0] + 804236c: 687b ldr r3, [r7, #4] + 804236e: 675a str r2, [r3, #116] ; 0x74 tcp_seg_free(old_ooseq); - 8042330: 68f8 ldr r0, [r7, #12] - 8042332: f7fd fd92 bl 803fe5a + 8042370: 68f8 ldr r0, [r7, #12] + 8042372: f7fd fd92 bl 803fe9a while (pcb->ooseq != NULL) { - 8042336: 687b ldr r3, [r7, #4] - 8042338: 6f5b ldr r3, [r3, #116] ; 0x74 - 804233a: 2b00 cmp r3, #0 - 804233c: d1f0 bne.n 8042320 - 804233e: e0c8 b.n 80424d2 + 8042376: 687b ldr r3, [r7, #4] + 8042378: 6f5b ldr r3, [r3, #116] ; 0x74 + 804237a: 2b00 cmp r3, #0 + 804237c: d1f0 bne.n 8042360 + 804237e: e0c8 b.n 8042512 } } else { struct tcp_seg *next = pcb->ooseq; - 8042340: 687b ldr r3, [r7, #4] - 8042342: 6f5b ldr r3, [r3, #116] ; 0x74 - 8042344: 63fb str r3, [r7, #60] ; 0x3c + 8042380: 687b ldr r3, [r7, #4] + 8042382: 6f5b ldr r3, [r3, #116] ; 0x74 + 8042384: 63fb str r3, [r7, #60] ; 0x3c /* Remove all segments on ooseq that are covered by inseg already. * FIN is copied from ooseq to inseg if present. */ while (next && - 8042346: e052 b.n 80423ee + 8042386: e052 b.n 804242e TCP_SEQ_GEQ(seqno + tcplen, next->tcphdr->seqno + next->len)) { struct tcp_seg *tmp; /* inseg cannot have FIN here (already processed above) */ if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 && - 8042348: 6bfb ldr r3, [r7, #60] ; 0x3c - 804234a: 68db ldr r3, [r3, #12] - 804234c: 899b ldrh r3, [r3, #12] - 804234e: b29b uxth r3, r3 - 8042350: 4618 mov r0, r3 - 8042352: f7fa fe3b bl 803cfcc - 8042356: 4603 mov r3, r0 - 8042358: b2db uxtb r3, r3 - 804235a: f003 0301 and.w r3, r3, #1 - 804235e: 2b00 cmp r3, #0 - 8042360: d03d beq.n 80423de + 8042388: 6bfb ldr r3, [r7, #60] ; 0x3c + 804238a: 68db ldr r3, [r3, #12] + 804238c: 899b ldrh r3, [r3, #12] + 804238e: b29b uxth r3, r3 + 8042390: 4618 mov r0, r3 + 8042392: f7fa fe3b bl 803d00c + 8042396: 4603 mov r3, r0 + 8042398: b2db uxtb r3, r3 + 804239a: f003 0301 and.w r3, r3, #1 + 804239e: 2b00 cmp r3, #0 + 80423a0: d03d beq.n 804241e (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) { - 8042362: 4b17 ldr r3, [pc, #92] ; (80423c0 ) - 8042364: 68db ldr r3, [r3, #12] - 8042366: 899b ldrh r3, [r3, #12] - 8042368: b29b uxth r3, r3 - 804236a: 4618 mov r0, r3 - 804236c: f7fa fe2e bl 803cfcc - 8042370: 4603 mov r3, r0 - 8042372: b2db uxtb r3, r3 - 8042374: f003 0302 and.w r3, r3, #2 + 80423a2: 4b17 ldr r3, [pc, #92] ; (8042400 ) + 80423a4: 68db ldr r3, [r3, #12] + 80423a6: 899b ldrh r3, [r3, #12] + 80423a8: b29b uxth r3, r3 + 80423aa: 4618 mov r0, r3 + 80423ac: f7fa fe2e bl 803d00c + 80423b0: 4603 mov r3, r0 + 80423b2: b2db uxtb r3, r3 + 80423b4: f003 0302 and.w r3, r3, #2 if ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0 && - 8042378: 2b00 cmp r3, #0 - 804237a: d130 bne.n 80423de + 80423b8: 2b00 cmp r3, #0 + 80423ba: d130 bne.n 804241e TCPH_SET_FLAG(inseg.tcphdr, TCP_FIN); - 804237c: 4b10 ldr r3, [pc, #64] ; (80423c0 ) - 804237e: 68db ldr r3, [r3, #12] - 8042380: 899b ldrh r3, [r3, #12] - 8042382: b29c uxth r4, r3 - 8042384: 2001 movs r0, #1 - 8042386: f7fa fe21 bl 803cfcc - 804238a: 4603 mov r3, r0 - 804238c: 461a mov r2, r3 - 804238e: 4b0c ldr r3, [pc, #48] ; (80423c0 ) - 8042390: 68db ldr r3, [r3, #12] - 8042392: 4322 orrs r2, r4 - 8042394: b292 uxth r2, r2 - 8042396: 819a strh r2, [r3, #12] + 80423bc: 4b10 ldr r3, [pc, #64] ; (8042400 ) + 80423be: 68db ldr r3, [r3, #12] + 80423c0: 899b ldrh r3, [r3, #12] + 80423c2: b29c uxth r4, r3 + 80423c4: 2001 movs r0, #1 + 80423c6: f7fa fe21 bl 803d00c + 80423ca: 4603 mov r3, r0 + 80423cc: 461a mov r2, r3 + 80423ce: 4b0c ldr r3, [pc, #48] ; (8042400 ) + 80423d0: 68db ldr r3, [r3, #12] + 80423d2: 4322 orrs r2, r4 + 80423d4: b292 uxth r2, r2 + 80423d6: 819a strh r2, [r3, #12] tcplen = TCP_TCPLEN(&inseg); - 8042398: 4b09 ldr r3, [pc, #36] ; (80423c0 ) - 804239a: 891c ldrh r4, [r3, #8] - 804239c: 4b08 ldr r3, [pc, #32] ; (80423c0 ) - 804239e: 68db ldr r3, [r3, #12] - 80423a0: 899b ldrh r3, [r3, #12] - 80423a2: b29b uxth r3, r3 - 80423a4: 4618 mov r0, r3 - 80423a6: f7fa fe11 bl 803cfcc - 80423aa: 4603 mov r3, r0 - 80423ac: b2db uxtb r3, r3 - 80423ae: f003 0303 and.w r3, r3, #3 - 80423b2: 2b00 cmp r3, #0 - 80423b4: d00e beq.n 80423d4 - 80423b6: 2301 movs r3, #1 - 80423b8: e00d b.n 80423d6 - 80423ba: bf00 nop - 80423bc: 2400eb20 .word 0x2400eb20 - 80423c0: 2400eb00 .word 0x2400eb00 - 80423c4: 2400eb2a .word 0x2400eb2a - 80423c8: 0804b398 .word 0x0804b398 - 80423cc: 0804b740 .word 0x0804b740 - 80423d0: 0804b3e4 .word 0x0804b3e4 - 80423d4: 2300 movs r3, #0 - 80423d6: 4423 add r3, r4 - 80423d8: b29a uxth r2, r3 - 80423da: 4b98 ldr r3, [pc, #608] ; (804263c ) - 80423dc: 801a strh r2, [r3, #0] + 80423d8: 4b09 ldr r3, [pc, #36] ; (8042400 ) + 80423da: 891c ldrh r4, [r3, #8] + 80423dc: 4b08 ldr r3, [pc, #32] ; (8042400 ) + 80423de: 68db ldr r3, [r3, #12] + 80423e0: 899b ldrh r3, [r3, #12] + 80423e2: b29b uxth r3, r3 + 80423e4: 4618 mov r0, r3 + 80423e6: f7fa fe11 bl 803d00c + 80423ea: 4603 mov r3, r0 + 80423ec: b2db uxtb r3, r3 + 80423ee: f003 0303 and.w r3, r3, #3 + 80423f2: 2b00 cmp r3, #0 + 80423f4: d00e beq.n 8042414 + 80423f6: 2301 movs r3, #1 + 80423f8: e00d b.n 8042416 + 80423fa: bf00 nop + 80423fc: 2400eb20 .word 0x2400eb20 + 8042400: 2400eb00 .word 0x2400eb00 + 8042404: 2400eb2a .word 0x2400eb2a + 8042408: 0804b3d8 .word 0x0804b3d8 + 804240c: 0804b780 .word 0x0804b780 + 8042410: 0804b424 .word 0x0804b424 + 8042414: 2300 movs r3, #0 + 8042416: 4423 add r3, r4 + 8042418: b29a uxth r2, r3 + 804241a: 4b98 ldr r3, [pc, #608] ; (804267c ) + 804241c: 801a strh r2, [r3, #0] } tmp = next; - 80423de: 6bfb ldr r3, [r7, #60] ; 0x3c - 80423e0: 613b str r3, [r7, #16] + 804241e: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042420: 613b str r3, [r7, #16] next = next->next; - 80423e2: 6bfb ldr r3, [r7, #60] ; 0x3c - 80423e4: 681b ldr r3, [r3, #0] - 80423e6: 63fb str r3, [r7, #60] ; 0x3c + 8042422: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042424: 681b ldr r3, [r3, #0] + 8042426: 63fb str r3, [r7, #60] ; 0x3c tcp_seg_free(tmp); - 80423e8: 6938 ldr r0, [r7, #16] - 80423ea: f7fd fd36 bl 803fe5a + 8042428: 6938 ldr r0, [r7, #16] + 804242a: f7fd fd36 bl 803fe9a while (next && - 80423ee: 6bfb ldr r3, [r7, #60] ; 0x3c - 80423f0: 2b00 cmp r3, #0 - 80423f2: d00e beq.n 8042412 + 804242e: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042430: 2b00 cmp r3, #0 + 8042432: d00e beq.n 8042452 TCP_SEQ_GEQ(seqno + tcplen, - 80423f4: 4b91 ldr r3, [pc, #580] ; (804263c ) - 80423f6: 881b ldrh r3, [r3, #0] - 80423f8: 461a mov r2, r3 - 80423fa: 4b91 ldr r3, [pc, #580] ; (8042640 ) - 80423fc: 681b ldr r3, [r3, #0] - 80423fe: 441a add r2, r3 - 8042400: 6bfb ldr r3, [r7, #60] ; 0x3c - 8042402: 68db ldr r3, [r3, #12] - 8042404: 685b ldr r3, [r3, #4] - 8042406: 6bf9 ldr r1, [r7, #60] ; 0x3c - 8042408: 8909 ldrh r1, [r1, #8] - 804240a: 440b add r3, r1 - 804240c: 1ad3 subs r3, r2, r3 + 8042434: 4b91 ldr r3, [pc, #580] ; (804267c ) + 8042436: 881b ldrh r3, [r3, #0] + 8042438: 461a mov r2, r3 + 804243a: 4b91 ldr r3, [pc, #580] ; (8042680 ) + 804243c: 681b ldr r3, [r3, #0] + 804243e: 441a add r2, r3 + 8042440: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042442: 68db ldr r3, [r3, #12] + 8042444: 685b ldr r3, [r3, #4] + 8042446: 6bf9 ldr r1, [r7, #60] ; 0x3c + 8042448: 8909 ldrh r1, [r1, #8] + 804244a: 440b add r3, r1 + 804244c: 1ad3 subs r3, r2, r3 while (next && - 804240e: 2b00 cmp r3, #0 - 8042410: da9a bge.n 8042348 + 804244e: 2b00 cmp r3, #0 + 8042450: da9a bge.n 8042388 } /* Now trim right side of inseg if it overlaps with the first * segment on ooseq */ if (next && - 8042412: 6bfb ldr r3, [r7, #60] ; 0x3c - 8042414: 2b00 cmp r3, #0 - 8042416: d059 beq.n 80424cc + 8042452: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042454: 2b00 cmp r3, #0 + 8042456: d059 beq.n 804250c TCP_SEQ_GT(seqno + tcplen, - 8042418: 4b88 ldr r3, [pc, #544] ; (804263c ) - 804241a: 881b ldrh r3, [r3, #0] - 804241c: 461a mov r2, r3 - 804241e: 4b88 ldr r3, [pc, #544] ; (8042640 ) - 8042420: 681b ldr r3, [r3, #0] - 8042422: 441a add r2, r3 - 8042424: 6bfb ldr r3, [r7, #60] ; 0x3c - 8042426: 68db ldr r3, [r3, #12] - 8042428: 685b ldr r3, [r3, #4] - 804242a: 1ad3 subs r3, r2, r3 + 8042458: 4b88 ldr r3, [pc, #544] ; (804267c ) + 804245a: 881b ldrh r3, [r3, #0] + 804245c: 461a mov r2, r3 + 804245e: 4b88 ldr r3, [pc, #544] ; (8042680 ) + 8042460: 681b ldr r3, [r3, #0] + 8042462: 441a add r2, r3 + 8042464: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042466: 68db ldr r3, [r3, #12] + 8042468: 685b ldr r3, [r3, #4] + 804246a: 1ad3 subs r3, r2, r3 if (next && - 804242c: 2b00 cmp r3, #0 - 804242e: dd4d ble.n 80424cc + 804246c: 2b00 cmp r3, #0 + 804246e: dd4d ble.n 804250c next->tcphdr->seqno)) { /* inseg cannot have FIN here (already processed above) */ inseg.len = (u16_t)(next->tcphdr->seqno - seqno); - 8042430: 6bfb ldr r3, [r7, #60] ; 0x3c - 8042432: 68db ldr r3, [r3, #12] - 8042434: 685b ldr r3, [r3, #4] - 8042436: b29a uxth r2, r3 - 8042438: 4b81 ldr r3, [pc, #516] ; (8042640 ) - 804243a: 681b ldr r3, [r3, #0] - 804243c: b29b uxth r3, r3 - 804243e: 1ad3 subs r3, r2, r3 - 8042440: b29a uxth r2, r3 - 8042442: 4b80 ldr r3, [pc, #512] ; (8042644 ) - 8042444: 811a strh r2, [r3, #8] + 8042470: 6bfb ldr r3, [r7, #60] ; 0x3c + 8042472: 68db ldr r3, [r3, #12] + 8042474: 685b ldr r3, [r3, #4] + 8042476: b29a uxth r2, r3 + 8042478: 4b81 ldr r3, [pc, #516] ; (8042680 ) + 804247a: 681b ldr r3, [r3, #0] + 804247c: b29b uxth r3, r3 + 804247e: 1ad3 subs r3, r2, r3 + 8042480: b29a uxth r2, r3 + 8042482: 4b80 ldr r3, [pc, #512] ; (8042684 ) + 8042484: 811a strh r2, [r3, #8] if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - 8042446: 4b7f ldr r3, [pc, #508] ; (8042644 ) - 8042448: 68db ldr r3, [r3, #12] - 804244a: 899b ldrh r3, [r3, #12] - 804244c: b29b uxth r3, r3 - 804244e: 4618 mov r0, r3 - 8042450: f7fa fdbc bl 803cfcc - 8042454: 4603 mov r3, r0 - 8042456: b2db uxtb r3, r3 - 8042458: f003 0302 and.w r3, r3, #2 - 804245c: 2b00 cmp r3, #0 - 804245e: d005 beq.n 804246c + 8042486: 4b7f ldr r3, [pc, #508] ; (8042684 ) + 8042488: 68db ldr r3, [r3, #12] + 804248a: 899b ldrh r3, [r3, #12] + 804248c: b29b uxth r3, r3 + 804248e: 4618 mov r0, r3 + 8042490: f7fa fdbc bl 803d00c + 8042494: 4603 mov r3, r0 + 8042496: b2db uxtb r3, r3 + 8042498: f003 0302 and.w r3, r3, #2 + 804249c: 2b00 cmp r3, #0 + 804249e: d005 beq.n 80424ac inseg.len -= 1; - 8042460: 4b78 ldr r3, [pc, #480] ; (8042644 ) - 8042462: 891b ldrh r3, [r3, #8] - 8042464: 3b01 subs r3, #1 - 8042466: b29a uxth r2, r3 - 8042468: 4b76 ldr r3, [pc, #472] ; (8042644 ) - 804246a: 811a strh r2, [r3, #8] + 80424a0: 4b78 ldr r3, [pc, #480] ; (8042684 ) + 80424a2: 891b ldrh r3, [r3, #8] + 80424a4: 3b01 subs r3, #1 + 80424a6: b29a uxth r2, r3 + 80424a8: 4b76 ldr r3, [pc, #472] ; (8042684 ) + 80424aa: 811a strh r2, [r3, #8] } pbuf_realloc(inseg.p, inseg.len); - 804246c: 4b75 ldr r3, [pc, #468] ; (8042644 ) - 804246e: 685b ldr r3, [r3, #4] - 8042470: 4a74 ldr r2, [pc, #464] ; (8042644 ) - 8042472: 8912 ldrh r2, [r2, #8] - 8042474: 4611 mov r1, r2 - 8042476: 4618 mov r0, r3 - 8042478: f7fc f854 bl 803e524 + 80424ac: 4b75 ldr r3, [pc, #468] ; (8042684 ) + 80424ae: 685b ldr r3, [r3, #4] + 80424b0: 4a74 ldr r2, [pc, #464] ; (8042684 ) + 80424b2: 8912 ldrh r2, [r2, #8] + 80424b4: 4611 mov r1, r2 + 80424b6: 4618 mov r0, r3 + 80424b8: f7fc f854 bl 803e564 tcplen = TCP_TCPLEN(&inseg); - 804247c: 4b71 ldr r3, [pc, #452] ; (8042644 ) - 804247e: 891c ldrh r4, [r3, #8] - 8042480: 4b70 ldr r3, [pc, #448] ; (8042644 ) - 8042482: 68db ldr r3, [r3, #12] - 8042484: 899b ldrh r3, [r3, #12] - 8042486: b29b uxth r3, r3 - 8042488: 4618 mov r0, r3 - 804248a: f7fa fd9f bl 803cfcc - 804248e: 4603 mov r3, r0 - 8042490: b2db uxtb r3, r3 - 8042492: f003 0303 and.w r3, r3, #3 - 8042496: 2b00 cmp r3, #0 - 8042498: d001 beq.n 804249e - 804249a: 2301 movs r3, #1 - 804249c: e000 b.n 80424a0 - 804249e: 2300 movs r3, #0 - 80424a0: 4423 add r3, r4 - 80424a2: b29a uxth r2, r3 - 80424a4: 4b65 ldr r3, [pc, #404] ; (804263c ) - 80424a6: 801a strh r2, [r3, #0] + 80424bc: 4b71 ldr r3, [pc, #452] ; (8042684 ) + 80424be: 891c ldrh r4, [r3, #8] + 80424c0: 4b70 ldr r3, [pc, #448] ; (8042684 ) + 80424c2: 68db ldr r3, [r3, #12] + 80424c4: 899b ldrh r3, [r3, #12] + 80424c6: b29b uxth r3, r3 + 80424c8: 4618 mov r0, r3 + 80424ca: f7fa fd9f bl 803d00c + 80424ce: 4603 mov r3, r0 + 80424d0: b2db uxtb r3, r3 + 80424d2: f003 0303 and.w r3, r3, #3 + 80424d6: 2b00 cmp r3, #0 + 80424d8: d001 beq.n 80424de + 80424da: 2301 movs r3, #1 + 80424dc: e000 b.n 80424e0 + 80424de: 2300 movs r3, #0 + 80424e0: 4423 add r3, r4 + 80424e2: b29a uxth r2, r3 + 80424e4: 4b65 ldr r3, [pc, #404] ; (804267c ) + 80424e6: 801a strh r2, [r3, #0] LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n", - 80424a8: 4b64 ldr r3, [pc, #400] ; (804263c ) - 80424aa: 881b ldrh r3, [r3, #0] - 80424ac: 461a mov r2, r3 - 80424ae: 4b64 ldr r3, [pc, #400] ; (8042640 ) - 80424b0: 681b ldr r3, [r3, #0] - 80424b2: 441a add r2, r3 - 80424b4: 6bfb ldr r3, [r7, #60] ; 0x3c - 80424b6: 68db ldr r3, [r3, #12] - 80424b8: 685b ldr r3, [r3, #4] - 80424ba: 429a cmp r2, r3 - 80424bc: d006 beq.n 80424cc - 80424be: 4b62 ldr r3, [pc, #392] ; (8042648 ) - 80424c0: f240 52fc movw r2, #1532 ; 0x5fc - 80424c4: 4961 ldr r1, [pc, #388] ; (804264c ) - 80424c6: 4862 ldr r0, [pc, #392] ; (8042650 ) - 80424c8: f005 fd6c bl 8047fa4 + 80424e8: 4b64 ldr r3, [pc, #400] ; (804267c ) + 80424ea: 881b ldrh r3, [r3, #0] + 80424ec: 461a mov r2, r3 + 80424ee: 4b64 ldr r3, [pc, #400] ; (8042680 ) + 80424f0: 681b ldr r3, [r3, #0] + 80424f2: 441a add r2, r3 + 80424f4: 6bfb ldr r3, [r7, #60] ; 0x3c + 80424f6: 68db ldr r3, [r3, #12] + 80424f8: 685b ldr r3, [r3, #4] + 80424fa: 429a cmp r2, r3 + 80424fc: d006 beq.n 804250c + 80424fe: 4b62 ldr r3, [pc, #392] ; (8042688 ) + 8042500: f240 52fc movw r2, #1532 ; 0x5fc + 8042504: 4961 ldr r1, [pc, #388] ; (804268c ) + 8042506: 4862 ldr r0, [pc, #392] ; (8042690 ) + 8042508: f005 fd6c bl 8047fe4 (seqno + tcplen) == next->tcphdr->seqno); } pcb->ooseq = next; - 80424cc: 687b ldr r3, [r7, #4] - 80424ce: 6bfa ldr r2, [r7, #60] ; 0x3c - 80424d0: 675a str r2, [r3, #116] ; 0x74 + 804250c: 687b ldr r3, [r7, #4] + 804250e: 6bfa ldr r2, [r7, #60] ; 0x3c + 8042510: 675a str r2, [r3, #116] ; 0x74 } } #endif /* TCP_QUEUE_OOSEQ */ pcb->rcv_nxt = seqno + tcplen; - 80424d2: 4b5a ldr r3, [pc, #360] ; (804263c ) - 80424d4: 881b ldrh r3, [r3, #0] - 80424d6: 461a mov r2, r3 - 80424d8: 4b59 ldr r3, [pc, #356] ; (8042640 ) - 80424da: 681b ldr r3, [r3, #0] - 80424dc: 441a add r2, r3 - 80424de: 687b ldr r3, [r7, #4] - 80424e0: 625a str r2, [r3, #36] ; 0x24 + 8042512: 4b5a ldr r3, [pc, #360] ; (804267c ) + 8042514: 881b ldrh r3, [r3, #0] + 8042516: 461a mov r2, r3 + 8042518: 4b59 ldr r3, [pc, #356] ; (8042680 ) + 804251a: 681b ldr r3, [r3, #0] + 804251c: 441a add r2, r3 + 804251e: 687b ldr r3, [r7, #4] + 8042520: 625a str r2, [r3, #36] ; 0x24 /* Update the receiver's (our) window. */ LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen); - 80424e2: 687b ldr r3, [r7, #4] - 80424e4: 8d1a ldrh r2, [r3, #40] ; 0x28 - 80424e6: 4b55 ldr r3, [pc, #340] ; (804263c ) - 80424e8: 881b ldrh r3, [r3, #0] - 80424ea: 429a cmp r2, r3 - 80424ec: d206 bcs.n 80424fc - 80424ee: 4b56 ldr r3, [pc, #344] ; (8042648 ) - 80424f0: f240 6207 movw r2, #1543 ; 0x607 - 80424f4: 4957 ldr r1, [pc, #348] ; (8042654 ) - 80424f6: 4856 ldr r0, [pc, #344] ; (8042650 ) - 80424f8: f005 fd54 bl 8047fa4 + 8042522: 687b ldr r3, [r7, #4] + 8042524: 8d1a ldrh r2, [r3, #40] ; 0x28 + 8042526: 4b55 ldr r3, [pc, #340] ; (804267c ) + 8042528: 881b ldrh r3, [r3, #0] + 804252a: 429a cmp r2, r3 + 804252c: d206 bcs.n 804253c + 804252e: 4b56 ldr r3, [pc, #344] ; (8042688 ) + 8042530: f240 6207 movw r2, #1543 ; 0x607 + 8042534: 4957 ldr r1, [pc, #348] ; (8042694 ) + 8042536: 4856 ldr r0, [pc, #344] ; (8042690 ) + 8042538: f005 fd54 bl 8047fe4 pcb->rcv_wnd -= tcplen; - 80424fc: 687b ldr r3, [r7, #4] - 80424fe: 8d1a ldrh r2, [r3, #40] ; 0x28 - 8042500: 4b4e ldr r3, [pc, #312] ; (804263c ) - 8042502: 881b ldrh r3, [r3, #0] - 8042504: 1ad3 subs r3, r2, r3 - 8042506: b29a uxth r2, r3 - 8042508: 687b ldr r3, [r7, #4] - 804250a: 851a strh r2, [r3, #40] ; 0x28 + 804253c: 687b ldr r3, [r7, #4] + 804253e: 8d1a ldrh r2, [r3, #40] ; 0x28 + 8042540: 4b4e ldr r3, [pc, #312] ; (804267c ) + 8042542: 881b ldrh r3, [r3, #0] + 8042544: 1ad3 subs r3, r2, r3 + 8042546: b29a uxth r2, r3 + 8042548: 687b ldr r3, [r7, #4] + 804254a: 851a strh r2, [r3, #40] ; 0x28 tcp_update_rcv_ann_wnd(pcb); - 804250c: 6878 ldr r0, [r7, #4] - 804250e: f7fc ffc5 bl 803f49c + 804254c: 6878 ldr r0, [r7, #4] + 804254e: f7fc ffc5 bl 803f4dc chains its data on this pbuf as well. If the segment was a FIN, we set the TF_GOT_FIN flag that will be used to indicate to the application that the remote side has closed its end of the connection. */ if (inseg.p->tot_len > 0) { - 8042512: 4b4c ldr r3, [pc, #304] ; (8042644 ) - 8042514: 685b ldr r3, [r3, #4] - 8042516: 891b ldrh r3, [r3, #8] - 8042518: 2b00 cmp r3, #0 - 804251a: d006 beq.n 804252a + 8042552: 4b4c ldr r3, [pc, #304] ; (8042684 ) + 8042554: 685b ldr r3, [r3, #4] + 8042556: 891b ldrh r3, [r3, #8] + 8042558: 2b00 cmp r3, #0 + 804255a: d006 beq.n 804256a recv_data = inseg.p; - 804251c: 4b49 ldr r3, [pc, #292] ; (8042644 ) - 804251e: 685b ldr r3, [r3, #4] - 8042520: 4a4d ldr r2, [pc, #308] ; (8042658 ) - 8042522: 6013 str r3, [r2, #0] + 804255c: 4b49 ldr r3, [pc, #292] ; (8042684 ) + 804255e: 685b ldr r3, [r3, #4] + 8042560: 4a4d ldr r2, [pc, #308] ; (8042698 ) + 8042562: 6013 str r3, [r2, #0] /* Since this pbuf now is the responsibility of the application, we delete our reference to it so that we won't (mistakingly) deallocate it. */ inseg.p = NULL; - 8042524: 4b47 ldr r3, [pc, #284] ; (8042644 ) - 8042526: 2200 movs r2, #0 - 8042528: 605a str r2, [r3, #4] + 8042564: 4b47 ldr r3, [pc, #284] ; (8042684 ) + 8042566: 2200 movs r2, #0 + 8042568: 605a str r2, [r3, #4] } if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - 804252a: 4b46 ldr r3, [pc, #280] ; (8042644 ) - 804252c: 68db ldr r3, [r3, #12] - 804252e: 899b ldrh r3, [r3, #12] - 8042530: b29b uxth r3, r3 - 8042532: 4618 mov r0, r3 - 8042534: f7fa fd4a bl 803cfcc - 8042538: 4603 mov r3, r0 - 804253a: b2db uxtb r3, r3 - 804253c: f003 0301 and.w r3, r3, #1 - 8042540: 2b00 cmp r3, #0 - 8042542: f000 80b8 beq.w 80426b6 + 804256a: 4b46 ldr r3, [pc, #280] ; (8042684 ) + 804256c: 68db ldr r3, [r3, #12] + 804256e: 899b ldrh r3, [r3, #12] + 8042570: b29b uxth r3, r3 + 8042572: 4618 mov r0, r3 + 8042574: f7fa fd4a bl 803d00c + 8042578: 4603 mov r3, r0 + 804257a: b2db uxtb r3, r3 + 804257c: f003 0301 and.w r3, r3, #1 + 8042580: 2b00 cmp r3, #0 + 8042582: f000 80b8 beq.w 80426f6 LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n")); recv_flags |= TF_GOT_FIN; - 8042546: 4b45 ldr r3, [pc, #276] ; (804265c ) - 8042548: 781b ldrb r3, [r3, #0] - 804254a: f043 0320 orr.w r3, r3, #32 - 804254e: b2da uxtb r2, r3 - 8042550: 4b42 ldr r3, [pc, #264] ; (804265c ) - 8042552: 701a strb r2, [r3, #0] + 8042586: 4b45 ldr r3, [pc, #276] ; (804269c ) + 8042588: 781b ldrb r3, [r3, #0] + 804258a: f043 0320 orr.w r3, r3, #32 + 804258e: b2da uxtb r2, r3 + 8042590: 4b42 ldr r3, [pc, #264] ; (804269c ) + 8042592: 701a strb r2, [r3, #0] } #if TCP_QUEUE_OOSEQ /* We now check if we have segments on the ->ooseq queue that are now in sequence. */ while (pcb->ooseq != NULL && - 8042554: e0af b.n 80426b6 + 8042594: e0af b.n 80426f6 pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { struct tcp_seg *cseg = pcb->ooseq; - 8042556: 687b ldr r3, [r7, #4] - 8042558: 6f5b ldr r3, [r3, #116] ; 0x74 - 804255a: 60bb str r3, [r7, #8] + 8042596: 687b ldr r3, [r7, #4] + 8042598: 6f5b ldr r3, [r3, #116] ; 0x74 + 804259a: 60bb str r3, [r7, #8] seqno = pcb->ooseq->tcphdr->seqno; - 804255c: 687b ldr r3, [r7, #4] - 804255e: 6f5b ldr r3, [r3, #116] ; 0x74 - 8042560: 68db ldr r3, [r3, #12] - 8042562: 685b ldr r3, [r3, #4] - 8042564: 4a36 ldr r2, [pc, #216] ; (8042640 ) - 8042566: 6013 str r3, [r2, #0] + 804259c: 687b ldr r3, [r7, #4] + 804259e: 6f5b ldr r3, [r3, #116] ; 0x74 + 80425a0: 68db ldr r3, [r3, #12] + 80425a2: 685b ldr r3, [r3, #4] + 80425a4: 4a36 ldr r2, [pc, #216] ; (8042680 ) + 80425a6: 6013 str r3, [r2, #0] pcb->rcv_nxt += TCP_TCPLEN(cseg); - 8042568: 68bb ldr r3, [r7, #8] - 804256a: 891b ldrh r3, [r3, #8] - 804256c: 461c mov r4, r3 - 804256e: 68bb ldr r3, [r7, #8] - 8042570: 68db ldr r3, [r3, #12] - 8042572: 899b ldrh r3, [r3, #12] - 8042574: b29b uxth r3, r3 - 8042576: 4618 mov r0, r3 - 8042578: f7fa fd28 bl 803cfcc - 804257c: 4603 mov r3, r0 - 804257e: b2db uxtb r3, r3 - 8042580: f003 0303 and.w r3, r3, #3 - 8042584: 2b00 cmp r3, #0 - 8042586: d001 beq.n 804258c - 8042588: 2301 movs r3, #1 - 804258a: e000 b.n 804258e - 804258c: 2300 movs r3, #0 - 804258e: 191a adds r2, r3, r4 - 8042590: 687b ldr r3, [r7, #4] - 8042592: 6a5b ldr r3, [r3, #36] ; 0x24 - 8042594: 441a add r2, r3 - 8042596: 687b ldr r3, [r7, #4] - 8042598: 625a str r2, [r3, #36] ; 0x24 + 80425a8: 68bb ldr r3, [r7, #8] + 80425aa: 891b ldrh r3, [r3, #8] + 80425ac: 461c mov r4, r3 + 80425ae: 68bb ldr r3, [r7, #8] + 80425b0: 68db ldr r3, [r3, #12] + 80425b2: 899b ldrh r3, [r3, #12] + 80425b4: b29b uxth r3, r3 + 80425b6: 4618 mov r0, r3 + 80425b8: f7fa fd28 bl 803d00c + 80425bc: 4603 mov r3, r0 + 80425be: b2db uxtb r3, r3 + 80425c0: f003 0303 and.w r3, r3, #3 + 80425c4: 2b00 cmp r3, #0 + 80425c6: d001 beq.n 80425cc + 80425c8: 2301 movs r3, #1 + 80425ca: e000 b.n 80425ce + 80425cc: 2300 movs r3, #0 + 80425ce: 191a adds r2, r3, r4 + 80425d0: 687b ldr r3, [r7, #4] + 80425d2: 6a5b ldr r3, [r3, #36] ; 0x24 + 80425d4: 441a add r2, r3 + 80425d6: 687b ldr r3, [r7, #4] + 80425d8: 625a str r2, [r3, #36] ; 0x24 LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n", - 804259a: 687b ldr r3, [r7, #4] - 804259c: 8d1b ldrh r3, [r3, #40] ; 0x28 - 804259e: 461c mov r4, r3 - 80425a0: 68bb ldr r3, [r7, #8] - 80425a2: 891b ldrh r3, [r3, #8] - 80425a4: 461d mov r5, r3 - 80425a6: 68bb ldr r3, [r7, #8] - 80425a8: 68db ldr r3, [r3, #12] - 80425aa: 899b ldrh r3, [r3, #12] - 80425ac: b29b uxth r3, r3 - 80425ae: 4618 mov r0, r3 - 80425b0: f7fa fd0c bl 803cfcc - 80425b4: 4603 mov r3, r0 - 80425b6: b2db uxtb r3, r3 - 80425b8: f003 0303 and.w r3, r3, #3 - 80425bc: 2b00 cmp r3, #0 - 80425be: d001 beq.n 80425c4 - 80425c0: 2301 movs r3, #1 - 80425c2: e000 b.n 80425c6 - 80425c4: 2300 movs r3, #0 - 80425c6: 442b add r3, r5 - 80425c8: 429c cmp r4, r3 - 80425ca: d206 bcs.n 80425da - 80425cc: 4b1e ldr r3, [pc, #120] ; (8042648 ) - 80425ce: f240 622b movw r2, #1579 ; 0x62b - 80425d2: 4923 ldr r1, [pc, #140] ; (8042660 ) - 80425d4: 481e ldr r0, [pc, #120] ; (8042650 ) - 80425d6: f005 fce5 bl 8047fa4 - pcb->rcv_wnd >= TCP_TCPLEN(cseg)); - pcb->rcv_wnd -= TCP_TCPLEN(cseg); - 80425da: 68bb ldr r3, [r7, #8] - 80425dc: 891b ldrh r3, [r3, #8] + 80425da: 687b ldr r3, [r7, #4] + 80425dc: 8d1b ldrh r3, [r3, #40] ; 0x28 80425de: 461c mov r4, r3 80425e0: 68bb ldr r3, [r7, #8] - 80425e2: 68db ldr r3, [r3, #12] - 80425e4: 899b ldrh r3, [r3, #12] - 80425e6: b29b uxth r3, r3 - 80425e8: 4618 mov r0, r3 - 80425ea: f7fa fcef bl 803cfcc - 80425ee: 4603 mov r3, r0 - 80425f0: b2db uxtb r3, r3 - 80425f2: f003 0303 and.w r3, r3, #3 - 80425f6: 2b00 cmp r3, #0 - 80425f8: d001 beq.n 80425fe - 80425fa: 2301 movs r3, #1 - 80425fc: e000 b.n 8042600 - 80425fe: 2300 movs r3, #0 - 8042600: 1919 adds r1, r3, r4 - 8042602: 687b ldr r3, [r7, #4] - 8042604: 8d1a ldrh r2, [r3, #40] ; 0x28 - 8042606: b28b uxth r3, r1 - 8042608: 1ad3 subs r3, r2, r3 - 804260a: b29a uxth r2, r3 - 804260c: 687b ldr r3, [r7, #4] - 804260e: 851a strh r2, [r3, #40] ; 0x28 + 80425e2: 891b ldrh r3, [r3, #8] + 80425e4: 461d mov r5, r3 + 80425e6: 68bb ldr r3, [r7, #8] + 80425e8: 68db ldr r3, [r3, #12] + 80425ea: 899b ldrh r3, [r3, #12] + 80425ec: b29b uxth r3, r3 + 80425ee: 4618 mov r0, r3 + 80425f0: f7fa fd0c bl 803d00c + 80425f4: 4603 mov r3, r0 + 80425f6: b2db uxtb r3, r3 + 80425f8: f003 0303 and.w r3, r3, #3 + 80425fc: 2b00 cmp r3, #0 + 80425fe: d001 beq.n 8042604 + 8042600: 2301 movs r3, #1 + 8042602: e000 b.n 8042606 + 8042604: 2300 movs r3, #0 + 8042606: 442b add r3, r5 + 8042608: 429c cmp r4, r3 + 804260a: d206 bcs.n 804261a + 804260c: 4b1e ldr r3, [pc, #120] ; (8042688 ) + 804260e: f240 622b movw r2, #1579 ; 0x62b + 8042612: 4923 ldr r1, [pc, #140] ; (80426a0 ) + 8042614: 481e ldr r0, [pc, #120] ; (8042690 ) + 8042616: f005 fce5 bl 8047fe4 + pcb->rcv_wnd >= TCP_TCPLEN(cseg)); + pcb->rcv_wnd -= TCP_TCPLEN(cseg); + 804261a: 68bb ldr r3, [r7, #8] + 804261c: 891b ldrh r3, [r3, #8] + 804261e: 461c mov r4, r3 + 8042620: 68bb ldr r3, [r7, #8] + 8042622: 68db ldr r3, [r3, #12] + 8042624: 899b ldrh r3, [r3, #12] + 8042626: b29b uxth r3, r3 + 8042628: 4618 mov r0, r3 + 804262a: f7fa fcef bl 803d00c + 804262e: 4603 mov r3, r0 + 8042630: b2db uxtb r3, r3 + 8042632: f003 0303 and.w r3, r3, #3 + 8042636: 2b00 cmp r3, #0 + 8042638: d001 beq.n 804263e + 804263a: 2301 movs r3, #1 + 804263c: e000 b.n 8042640 + 804263e: 2300 movs r3, #0 + 8042640: 1919 adds r1, r3, r4 + 8042642: 687b ldr r3, [r7, #4] + 8042644: 8d1a ldrh r2, [r3, #40] ; 0x28 + 8042646: b28b uxth r3, r1 + 8042648: 1ad3 subs r3, r2, r3 + 804264a: b29a uxth r2, r3 + 804264c: 687b ldr r3, [r7, #4] + 804264e: 851a strh r2, [r3, #40] ; 0x28 tcp_update_rcv_ann_wnd(pcb); - 8042610: 6878 ldr r0, [r7, #4] - 8042612: f7fc ff43 bl 803f49c + 8042650: 6878 ldr r0, [r7, #4] + 8042652: f7fc ff43 bl 803f4dc if (cseg->p->tot_len > 0) { - 8042616: 68bb ldr r3, [r7, #8] - 8042618: 685b ldr r3, [r3, #4] - 804261a: 891b ldrh r3, [r3, #8] - 804261c: 2b00 cmp r3, #0 - 804261e: d028 beq.n 8042672 + 8042656: 68bb ldr r3, [r7, #8] + 8042658: 685b ldr r3, [r3, #4] + 804265a: 891b ldrh r3, [r3, #8] + 804265c: 2b00 cmp r3, #0 + 804265e: d028 beq.n 80426b2 /* Chain this pbuf onto the pbuf that we will pass to the application. */ /* With window scaling, this can overflow recv_data->tot_len, but that's not a problem since we explicitly fix that before passing recv_data to the application. */ if (recv_data) { - 8042620: 4b0d ldr r3, [pc, #52] ; (8042658 ) - 8042622: 681b ldr r3, [r3, #0] - 8042624: 2b00 cmp r3, #0 - 8042626: d01d beq.n 8042664 + 8042660: 4b0d ldr r3, [pc, #52] ; (8042698 ) + 8042662: 681b ldr r3, [r3, #0] + 8042664: 2b00 cmp r3, #0 + 8042666: d01d beq.n 80426a4 pbuf_cat(recv_data, cseg->p); - 8042628: 4b0b ldr r3, [pc, #44] ; (8042658 ) - 804262a: 681a ldr r2, [r3, #0] - 804262c: 68bb ldr r3, [r7, #8] - 804262e: 685b ldr r3, [r3, #4] - 8042630: 4619 mov r1, r3 - 8042632: 4610 mov r0, r2 - 8042634: f7fc f9be bl 803e9b4 - 8042638: e018 b.n 804266c - 804263a: bf00 nop - 804263c: 2400eb2a .word 0x2400eb2a - 8042640: 2400eb20 .word 0x2400eb20 - 8042644: 2400eb00 .word 0x2400eb00 - 8042648: 0804b398 .word 0x0804b398 - 804264c: 0804b778 .word 0x0804b778 - 8042650: 0804b3e4 .word 0x0804b3e4 - 8042654: 0804b7b4 .word 0x0804b7b4 - 8042658: 2400eb30 .word 0x2400eb30 - 804265c: 2400eb2d .word 0x2400eb2d - 8042660: 0804b7d4 .word 0x0804b7d4 + 8042668: 4b0b ldr r3, [pc, #44] ; (8042698 ) + 804266a: 681a ldr r2, [r3, #0] + 804266c: 68bb ldr r3, [r7, #8] + 804266e: 685b ldr r3, [r3, #4] + 8042670: 4619 mov r1, r3 + 8042672: 4610 mov r0, r2 + 8042674: f7fc f9be bl 803e9f4 + 8042678: e018 b.n 80426ac + 804267a: bf00 nop + 804267c: 2400eb2a .word 0x2400eb2a + 8042680: 2400eb20 .word 0x2400eb20 + 8042684: 2400eb00 .word 0x2400eb00 + 8042688: 0804b3d8 .word 0x0804b3d8 + 804268c: 0804b7b8 .word 0x0804b7b8 + 8042690: 0804b424 .word 0x0804b424 + 8042694: 0804b7f4 .word 0x0804b7f4 + 8042698: 2400eb30 .word 0x2400eb30 + 804269c: 2400eb2d .word 0x2400eb2d + 80426a0: 0804b814 .word 0x0804b814 } else { recv_data = cseg->p; - 8042664: 68bb ldr r3, [r7, #8] - 8042666: 685b ldr r3, [r3, #4] - 8042668: 4a70 ldr r2, [pc, #448] ; (804282c ) - 804266a: 6013 str r3, [r2, #0] + 80426a4: 68bb ldr r3, [r7, #8] + 80426a6: 685b ldr r3, [r3, #4] + 80426a8: 4a70 ldr r2, [pc, #448] ; (804286c ) + 80426aa: 6013 str r3, [r2, #0] } cseg->p = NULL; - 804266c: 68bb ldr r3, [r7, #8] - 804266e: 2200 movs r2, #0 - 8042670: 605a str r2, [r3, #4] + 80426ac: 68bb ldr r3, [r7, #8] + 80426ae: 2200 movs r2, #0 + 80426b0: 605a str r2, [r3, #4] } if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - 8042672: 68bb ldr r3, [r7, #8] - 8042674: 68db ldr r3, [r3, #12] - 8042676: 899b ldrh r3, [r3, #12] - 8042678: b29b uxth r3, r3 - 804267a: 4618 mov r0, r3 - 804267c: f7fa fca6 bl 803cfcc - 8042680: 4603 mov r3, r0 - 8042682: b2db uxtb r3, r3 - 8042684: f003 0301 and.w r3, r3, #1 - 8042688: 2b00 cmp r3, #0 - 804268a: d00d beq.n 80426a8 + 80426b2: 68bb ldr r3, [r7, #8] + 80426b4: 68db ldr r3, [r3, #12] + 80426b6: 899b ldrh r3, [r3, #12] + 80426b8: b29b uxth r3, r3 + 80426ba: 4618 mov r0, r3 + 80426bc: f7fa fca6 bl 803d00c + 80426c0: 4603 mov r3, r0 + 80426c2: b2db uxtb r3, r3 + 80426c4: f003 0301 and.w r3, r3, #1 + 80426c8: 2b00 cmp r3, #0 + 80426ca: d00d beq.n 80426e8 LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n")); recv_flags |= TF_GOT_FIN; - 804268c: 4b68 ldr r3, [pc, #416] ; (8042830 ) - 804268e: 781b ldrb r3, [r3, #0] - 8042690: f043 0320 orr.w r3, r3, #32 - 8042694: b2da uxtb r2, r3 - 8042696: 4b66 ldr r3, [pc, #408] ; (8042830 ) - 8042698: 701a strb r2, [r3, #0] + 80426cc: 4b68 ldr r3, [pc, #416] ; (8042870 ) + 80426ce: 781b ldrb r3, [r3, #0] + 80426d0: f043 0320 orr.w r3, r3, #32 + 80426d4: b2da uxtb r2, r3 + 80426d6: 4b66 ldr r3, [pc, #408] ; (8042870 ) + 80426d8: 701a strb r2, [r3, #0] if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */ - 804269a: 687b ldr r3, [r7, #4] - 804269c: 7d1b ldrb r3, [r3, #20] - 804269e: 2b04 cmp r3, #4 - 80426a0: d102 bne.n 80426a8 + 80426da: 687b ldr r3, [r7, #4] + 80426dc: 7d1b ldrb r3, [r3, #20] + 80426de: 2b04 cmp r3, #4 + 80426e0: d102 bne.n 80426e8 pcb->state = CLOSE_WAIT; - 80426a2: 687b ldr r3, [r7, #4] - 80426a4: 2207 movs r2, #7 - 80426a6: 751a strb r2, [r3, #20] + 80426e2: 687b ldr r3, [r7, #4] + 80426e4: 2207 movs r2, #7 + 80426e6: 751a strb r2, [r3, #20] } } pcb->ooseq = cseg->next; - 80426a8: 68bb ldr r3, [r7, #8] - 80426aa: 681a ldr r2, [r3, #0] - 80426ac: 687b ldr r3, [r7, #4] - 80426ae: 675a str r2, [r3, #116] ; 0x74 + 80426e8: 68bb ldr r3, [r7, #8] + 80426ea: 681a ldr r2, [r3, #0] + 80426ec: 687b ldr r3, [r7, #4] + 80426ee: 675a str r2, [r3, #116] ; 0x74 tcp_seg_free(cseg); - 80426b0: 68b8 ldr r0, [r7, #8] - 80426b2: f7fd fbd2 bl 803fe5a + 80426f0: 68b8 ldr r0, [r7, #8] + 80426f2: f7fd fbd2 bl 803fe9a while (pcb->ooseq != NULL && - 80426b6: 687b ldr r3, [r7, #4] - 80426b8: 6f5b ldr r3, [r3, #116] ; 0x74 - 80426ba: 2b00 cmp r3, #0 - 80426bc: d008 beq.n 80426d0 + 80426f6: 687b ldr r3, [r7, #4] + 80426f8: 6f5b ldr r3, [r3, #116] ; 0x74 + 80426fa: 2b00 cmp r3, #0 + 80426fc: d008 beq.n 8042710 pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - 80426be: 687b ldr r3, [r7, #4] - 80426c0: 6f5b ldr r3, [r3, #116] ; 0x74 - 80426c2: 68db ldr r3, [r3, #12] - 80426c4: 685a ldr r2, [r3, #4] - 80426c6: 687b ldr r3, [r7, #4] - 80426c8: 6a5b ldr r3, [r3, #36] ; 0x24 + 80426fe: 687b ldr r3, [r7, #4] + 8042700: 6f5b ldr r3, [r3, #116] ; 0x74 + 8042702: 68db ldr r3, [r3, #12] + 8042704: 685a ldr r2, [r3, #4] + 8042706: 687b ldr r3, [r7, #4] + 8042708: 6a5b ldr r3, [r3, #36] ; 0x24 while (pcb->ooseq != NULL && - 80426ca: 429a cmp r2, r3 - 80426cc: f43f af43 beq.w 8042556 + 804270a: 429a cmp r2, r3 + 804270c: f43f af43 beq.w 8042596 #endif /* LWIP_TCP_SACK_OUT */ #endif /* TCP_QUEUE_OOSEQ */ /* Acknowledge the segment(s). */ tcp_ack(pcb); - 80426d0: 687b ldr r3, [r7, #4] - 80426d2: 8b5b ldrh r3, [r3, #26] - 80426d4: f003 0301 and.w r3, r3, #1 - 80426d8: 2b00 cmp r3, #0 - 80426da: d00e beq.n 80426fa - 80426dc: 687b ldr r3, [r7, #4] - 80426de: 8b5b ldrh r3, [r3, #26] - 80426e0: f023 0301 bic.w r3, r3, #1 - 80426e4: b29a uxth r2, r3 - 80426e6: 687b ldr r3, [r7, #4] - 80426e8: 835a strh r2, [r3, #26] - 80426ea: 687b ldr r3, [r7, #4] - 80426ec: 8b5b ldrh r3, [r3, #26] - 80426ee: f043 0302 orr.w r3, r3, #2 - 80426f2: b29a uxth r2, r3 - 80426f4: 687b ldr r3, [r7, #4] - 80426f6: 835a strh r2, [r3, #26] + 8042710: 687b ldr r3, [r7, #4] + 8042712: 8b5b ldrh r3, [r3, #26] + 8042714: f003 0301 and.w r3, r3, #1 + 8042718: 2b00 cmp r3, #0 + 804271a: d00e beq.n 804273a + 804271c: 687b ldr r3, [r7, #4] + 804271e: 8b5b ldrh r3, [r3, #26] + 8042720: f023 0301 bic.w r3, r3, #1 + 8042724: b29a uxth r2, r3 + 8042726: 687b ldr r3, [r7, #4] + 8042728: 835a strh r2, [r3, #26] + 804272a: 687b ldr r3, [r7, #4] + 804272c: 8b5b ldrh r3, [r3, #26] + 804272e: f043 0302 orr.w r3, r3, #2 + 8042732: b29a uxth r2, r3 + 8042734: 687b ldr r3, [r7, #4] + 8042736: 835a strh r2, [r3, #26] if (pcb->rcv_nxt == seqno) { - 80426f8: e188 b.n 8042a0c + 8042738: e188 b.n 8042a4c tcp_ack(pcb); - 80426fa: 687b ldr r3, [r7, #4] - 80426fc: 8b5b ldrh r3, [r3, #26] - 80426fe: f043 0301 orr.w r3, r3, #1 - 8042702: b29a uxth r2, r3 - 8042704: 687b ldr r3, [r7, #4] - 8042706: 835a strh r2, [r3, #26] + 804273a: 687b ldr r3, [r7, #4] + 804273c: 8b5b ldrh r3, [r3, #26] + 804273e: f043 0301 orr.w r3, r3, #1 + 8042742: b29a uxth r2, r3 + 8042744: 687b ldr r3, [r7, #4] + 8042746: 835a strh r2, [r3, #26] if (pcb->rcv_nxt == seqno) { - 8042708: e180 b.n 8042a0c + 8042748: e180 b.n 8042a4c } else { /* We get here if the incoming segment is out-of-sequence. */ #if TCP_QUEUE_OOSEQ /* We queue the segment on the ->ooseq queue. */ if (pcb->ooseq == NULL) { - 804270a: 687b ldr r3, [r7, #4] - 804270c: 6f5b ldr r3, [r3, #116] ; 0x74 - 804270e: 2b00 cmp r3, #0 - 8042710: d106 bne.n 8042720 + 804274a: 687b ldr r3, [r7, #4] + 804274c: 6f5b ldr r3, [r3, #116] ; 0x74 + 804274e: 2b00 cmp r3, #0 + 8042750: d106 bne.n 8042760 pcb->ooseq = tcp_seg_copy(&inseg); - 8042712: 4848 ldr r0, [pc, #288] ; (8042834 ) - 8042714: f7fd fbba bl 803fe8c - 8042718: 4602 mov r2, r0 - 804271a: 687b ldr r3, [r7, #4] - 804271c: 675a str r2, [r3, #116] ; 0x74 - 804271e: e16d b.n 80429fc + 8042752: 4848 ldr r0, [pc, #288] ; (8042874 ) + 8042754: f7fd fbba bl 803fecc + 8042758: 4602 mov r2, r0 + 804275a: 687b ldr r3, [r7, #4] + 804275c: 675a str r2, [r3, #116] ; 0x74 + 804275e: e16d b.n 8042a3c #if LWIP_TCP_SACK_OUT /* This is the left edge of the lowest possible SACK range. It may start before the newly received segment (possibly adjusted below). */ u32_t sackbeg = TCP_SEQ_LT(seqno, pcb->ooseq->tcphdr->seqno) ? seqno : pcb->ooseq->tcphdr->seqno; #endif /* LWIP_TCP_SACK_OUT */ struct tcp_seg *next, *prev = NULL; - 8042720: 2300 movs r3, #0 - 8042722: 637b str r3, [r7, #52] ; 0x34 + 8042760: 2300 movs r3, #0 + 8042762: 637b str r3, [r7, #52] ; 0x34 for (next = pcb->ooseq; next != NULL; next = next->next) { - 8042724: 687b ldr r3, [r7, #4] - 8042726: 6f5b ldr r3, [r3, #116] ; 0x74 - 8042728: 63bb str r3, [r7, #56] ; 0x38 - 804272a: e157 b.n 80429dc + 8042764: 687b ldr r3, [r7, #4] + 8042766: 6f5b ldr r3, [r3, #116] ; 0x74 + 8042768: 63bb str r3, [r7, #56] ; 0x38 + 804276a: e157 b.n 8042a1c if (seqno == next->tcphdr->seqno) { - 804272c: 6bbb ldr r3, [r7, #56] ; 0x38 - 804272e: 68db ldr r3, [r3, #12] - 8042730: 685a ldr r2, [r3, #4] - 8042732: 4b41 ldr r3, [pc, #260] ; (8042838 ) - 8042734: 681b ldr r3, [r3, #0] - 8042736: 429a cmp r2, r3 - 8042738: d11d bne.n 8042776 + 804276c: 6bbb ldr r3, [r7, #56] ; 0x38 + 804276e: 68db ldr r3, [r3, #12] + 8042770: 685a ldr r2, [r3, #4] + 8042772: 4b41 ldr r3, [pc, #260] ; (8042878 ) + 8042774: 681b ldr r3, [r3, #0] + 8042776: 429a cmp r2, r3 + 8042778: d11d bne.n 80427b6 /* The sequence number of the incoming segment is the same as the sequence number of the segment on ->ooseq. We check the lengths to see which one to discard. */ if (inseg.len > next->len) { - 804273a: 4b3e ldr r3, [pc, #248] ; (8042834 ) - 804273c: 891a ldrh r2, [r3, #8] - 804273e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042740: 891b ldrh r3, [r3, #8] - 8042742: 429a cmp r2, r3 - 8042744: f240 814f bls.w 80429e6 + 804277a: 4b3e ldr r3, [pc, #248] ; (8042874 ) + 804277c: 891a ldrh r2, [r3, #8] + 804277e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042780: 891b ldrh r3, [r3, #8] + 8042782: 429a cmp r2, r3 + 8042784: f240 814f bls.w 8042a26 /* The incoming segment is larger than the old segment. We replace some segments with the new one. */ struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 8042748: 483a ldr r0, [pc, #232] ; (8042834 ) - 804274a: f7fd fb9f bl 803fe8c - 804274e: 6178 str r0, [r7, #20] + 8042788: 483a ldr r0, [pc, #232] ; (8042874 ) + 804278a: f7fd fb9f bl 803fecc + 804278e: 6178 str r0, [r7, #20] if (cseg != NULL) { - 8042750: 697b ldr r3, [r7, #20] - 8042752: 2b00 cmp r3, #0 - 8042754: f000 8149 beq.w 80429ea + 8042790: 697b ldr r3, [r7, #20] + 8042792: 2b00 cmp r3, #0 + 8042794: f000 8149 beq.w 8042a2a if (prev != NULL) { - 8042758: 6b7b ldr r3, [r7, #52] ; 0x34 - 804275a: 2b00 cmp r3, #0 - 804275c: d003 beq.n 8042766 + 8042798: 6b7b ldr r3, [r7, #52] ; 0x34 + 804279a: 2b00 cmp r3, #0 + 804279c: d003 beq.n 80427a6 prev->next = cseg; - 804275e: 6b7b ldr r3, [r7, #52] ; 0x34 - 8042760: 697a ldr r2, [r7, #20] - 8042762: 601a str r2, [r3, #0] - 8042764: e002 b.n 804276c + 804279e: 6b7b ldr r3, [r7, #52] ; 0x34 + 80427a0: 697a ldr r2, [r7, #20] + 80427a2: 601a str r2, [r3, #0] + 80427a4: e002 b.n 80427ac } else { pcb->ooseq = cseg; - 8042766: 687b ldr r3, [r7, #4] - 8042768: 697a ldr r2, [r7, #20] - 804276a: 675a str r2, [r3, #116] ; 0x74 + 80427a6: 687b ldr r3, [r7, #4] + 80427a8: 697a ldr r2, [r7, #20] + 80427aa: 675a str r2, [r3, #116] ; 0x74 } tcp_oos_insert_segment(cseg, next); - 804276c: 6bb9 ldr r1, [r7, #56] ; 0x38 - 804276e: 6978 ldr r0, [r7, #20] - 8042770: f7ff f8dc bl 804192c + 80427ac: 6bb9 ldr r1, [r7, #56] ; 0x38 + 80427ae: 6978 ldr r0, [r7, #20] + 80427b0: f7ff f8dc bl 804196c } break; - 8042774: e139 b.n 80429ea + 80427b4: e139 b.n 8042a2a segment was smaller than the old one; in either case, we ditch the incoming segment. */ break; } } else { if (prev == NULL) { - 8042776: 6b7b ldr r3, [r7, #52] ; 0x34 - 8042778: 2b00 cmp r3, #0 - 804277a: d117 bne.n 80427ac + 80427b6: 6b7b ldr r3, [r7, #52] ; 0x34 + 80427b8: 2b00 cmp r3, #0 + 80427ba: d117 bne.n 80427ec if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) { - 804277c: 4b2e ldr r3, [pc, #184] ; (8042838 ) - 804277e: 681a ldr r2, [r3, #0] - 8042780: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042782: 68db ldr r3, [r3, #12] - 8042784: 685b ldr r3, [r3, #4] - 8042786: 1ad3 subs r3, r2, r3 - 8042788: 2b00 cmp r3, #0 - 804278a: da57 bge.n 804283c + 80427bc: 4b2e ldr r3, [pc, #184] ; (8042878 ) + 80427be: 681a ldr r2, [r3, #0] + 80427c0: 6bbb ldr r3, [r7, #56] ; 0x38 + 80427c2: 68db ldr r3, [r3, #12] + 80427c4: 685b ldr r3, [r3, #4] + 80427c6: 1ad3 subs r3, r2, r3 + 80427c8: 2b00 cmp r3, #0 + 80427ca: da57 bge.n 804287c /* The sequence number of the incoming segment is lower than the sequence number of the first segment on the queue. We put the incoming segment first on the queue. */ struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 804278c: 4829 ldr r0, [pc, #164] ; (8042834 ) - 804278e: f7fd fb7d bl 803fe8c - 8042792: 61b8 str r0, [r7, #24] + 80427cc: 4829 ldr r0, [pc, #164] ; (8042874 ) + 80427ce: f7fd fb7d bl 803fecc + 80427d2: 61b8 str r0, [r7, #24] if (cseg != NULL) { - 8042794: 69bb ldr r3, [r7, #24] - 8042796: 2b00 cmp r3, #0 - 8042798: f000 8129 beq.w 80429ee + 80427d4: 69bb ldr r3, [r7, #24] + 80427d6: 2b00 cmp r3, #0 + 80427d8: f000 8129 beq.w 8042a2e pcb->ooseq = cseg; - 804279c: 687b ldr r3, [r7, #4] - 804279e: 69ba ldr r2, [r7, #24] - 80427a0: 675a str r2, [r3, #116] ; 0x74 + 80427dc: 687b ldr r3, [r7, #4] + 80427de: 69ba ldr r2, [r7, #24] + 80427e0: 675a str r2, [r3, #116] ; 0x74 tcp_oos_insert_segment(cseg, next); - 80427a2: 6bb9 ldr r1, [r7, #56] ; 0x38 - 80427a4: 69b8 ldr r0, [r7, #24] - 80427a6: f7ff f8c1 bl 804192c + 80427e2: 6bb9 ldr r1, [r7, #56] ; 0x38 + 80427e4: 69b8 ldr r0, [r7, #24] + 80427e6: f7ff f8c1 bl 804196c } break; - 80427aa: e120 b.n 80429ee + 80427ea: e120 b.n 8042a2e } } else { /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) && TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/ if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno + 1, next->tcphdr->seqno - 1)) { - 80427ac: 4b22 ldr r3, [pc, #136] ; (8042838 ) - 80427ae: 681a ldr r2, [r3, #0] - 80427b0: 6b7b ldr r3, [r7, #52] ; 0x34 - 80427b2: 68db ldr r3, [r3, #12] - 80427b4: 685b ldr r3, [r3, #4] - 80427b6: 1ad3 subs r3, r2, r3 - 80427b8: 3b01 subs r3, #1 - 80427ba: 2b00 cmp r3, #0 - 80427bc: db3e blt.n 804283c - 80427be: 4b1e ldr r3, [pc, #120] ; (8042838 ) - 80427c0: 681a ldr r2, [r3, #0] - 80427c2: 6bbb ldr r3, [r7, #56] ; 0x38 - 80427c4: 68db ldr r3, [r3, #12] - 80427c6: 685b ldr r3, [r3, #4] - 80427c8: 1ad3 subs r3, r2, r3 - 80427ca: 3301 adds r3, #1 - 80427cc: 2b00 cmp r3, #0 - 80427ce: dc35 bgt.n 804283c + 80427ec: 4b22 ldr r3, [pc, #136] ; (8042878 ) + 80427ee: 681a ldr r2, [r3, #0] + 80427f0: 6b7b ldr r3, [r7, #52] ; 0x34 + 80427f2: 68db ldr r3, [r3, #12] + 80427f4: 685b ldr r3, [r3, #4] + 80427f6: 1ad3 subs r3, r2, r3 + 80427f8: 3b01 subs r3, #1 + 80427fa: 2b00 cmp r3, #0 + 80427fc: db3e blt.n 804287c + 80427fe: 4b1e ldr r3, [pc, #120] ; (8042878 ) + 8042800: 681a ldr r2, [r3, #0] + 8042802: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042804: 68db ldr r3, [r3, #12] + 8042806: 685b ldr r3, [r3, #4] + 8042808: 1ad3 subs r3, r2, r3 + 804280a: 3301 adds r3, #1 + 804280c: 2b00 cmp r3, #0 + 804280e: dc35 bgt.n 804287c /* The sequence number of the incoming segment is in between the sequence numbers of the previous and the next segment on ->ooseq. We trim trim the previous segment, delete next segments that included in received segment and trim received, if needed. */ struct tcp_seg *cseg = tcp_seg_copy(&inseg); - 80427d0: 4818 ldr r0, [pc, #96] ; (8042834 ) - 80427d2: f7fd fb5b bl 803fe8c - 80427d6: 61f8 str r0, [r7, #28] + 8042810: 4818 ldr r0, [pc, #96] ; (8042874 ) + 8042812: f7fd fb5b bl 803fecc + 8042816: 61f8 str r0, [r7, #28] if (cseg != NULL) { - 80427d8: 69fb ldr r3, [r7, #28] - 80427da: 2b00 cmp r3, #0 - 80427dc: f000 8109 beq.w 80429f2 + 8042818: 69fb ldr r3, [r7, #28] + 804281a: 2b00 cmp r3, #0 + 804281c: f000 8109 beq.w 8042a32 if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) { - 80427e0: 6b7b ldr r3, [r7, #52] ; 0x34 - 80427e2: 68db ldr r3, [r3, #12] - 80427e4: 685b ldr r3, [r3, #4] - 80427e6: 6b7a ldr r2, [r7, #52] ; 0x34 - 80427e8: 8912 ldrh r2, [r2, #8] - 80427ea: 441a add r2, r3 - 80427ec: 4b12 ldr r3, [pc, #72] ; (8042838 ) - 80427ee: 681b ldr r3, [r3, #0] - 80427f0: 1ad3 subs r3, r2, r3 - 80427f2: 2b00 cmp r3, #0 - 80427f4: dd12 ble.n 804281c + 8042820: 6b7b ldr r3, [r7, #52] ; 0x34 + 8042822: 68db ldr r3, [r3, #12] + 8042824: 685b ldr r3, [r3, #4] + 8042826: 6b7a ldr r2, [r7, #52] ; 0x34 + 8042828: 8912 ldrh r2, [r2, #8] + 804282a: 441a add r2, r3 + 804282c: 4b12 ldr r3, [pc, #72] ; (8042878 ) + 804282e: 681b ldr r3, [r3, #0] + 8042830: 1ad3 subs r3, r2, r3 + 8042832: 2b00 cmp r3, #0 + 8042834: dd12 ble.n 804285c /* We need to trim the prev segment. */ prev->len = (u16_t)(seqno - prev->tcphdr->seqno); - 80427f6: 4b10 ldr r3, [pc, #64] ; (8042838 ) - 80427f8: 681b ldr r3, [r3, #0] - 80427fa: b29a uxth r2, r3 - 80427fc: 6b7b ldr r3, [r7, #52] ; 0x34 - 80427fe: 68db ldr r3, [r3, #12] - 8042800: 685b ldr r3, [r3, #4] - 8042802: b29b uxth r3, r3 - 8042804: 1ad3 subs r3, r2, r3 - 8042806: b29a uxth r2, r3 - 8042808: 6b7b ldr r3, [r7, #52] ; 0x34 - 804280a: 811a strh r2, [r3, #8] + 8042836: 4b10 ldr r3, [pc, #64] ; (8042878 ) + 8042838: 681b ldr r3, [r3, #0] + 804283a: b29a uxth r2, r3 + 804283c: 6b7b ldr r3, [r7, #52] ; 0x34 + 804283e: 68db ldr r3, [r3, #12] + 8042840: 685b ldr r3, [r3, #4] + 8042842: b29b uxth r3, r3 + 8042844: 1ad3 subs r3, r2, r3 + 8042846: b29a uxth r2, r3 + 8042848: 6b7b ldr r3, [r7, #52] ; 0x34 + 804284a: 811a strh r2, [r3, #8] pbuf_realloc(prev->p, prev->len); - 804280c: 6b7b ldr r3, [r7, #52] ; 0x34 - 804280e: 685a ldr r2, [r3, #4] - 8042810: 6b7b ldr r3, [r7, #52] ; 0x34 - 8042812: 891b ldrh r3, [r3, #8] - 8042814: 4619 mov r1, r3 - 8042816: 4610 mov r0, r2 - 8042818: f7fb fe84 bl 803e524 + 804284c: 6b7b ldr r3, [r7, #52] ; 0x34 + 804284e: 685a ldr r2, [r3, #4] + 8042850: 6b7b ldr r3, [r7, #52] ; 0x34 + 8042852: 891b ldrh r3, [r3, #8] + 8042854: 4619 mov r1, r3 + 8042856: 4610 mov r0, r2 + 8042858: f7fb fe84 bl 803e564 } prev->next = cseg; - 804281c: 6b7b ldr r3, [r7, #52] ; 0x34 - 804281e: 69fa ldr r2, [r7, #28] - 8042820: 601a str r2, [r3, #0] + 804285c: 6b7b ldr r3, [r7, #52] ; 0x34 + 804285e: 69fa ldr r2, [r7, #28] + 8042860: 601a str r2, [r3, #0] tcp_oos_insert_segment(cseg, next); - 8042822: 6bb9 ldr r1, [r7, #56] ; 0x38 - 8042824: 69f8 ldr r0, [r7, #28] - 8042826: f7ff f881 bl 804192c + 8042862: 6bb9 ldr r1, [r7, #56] ; 0x38 + 8042864: 69f8 ldr r0, [r7, #28] + 8042866: f7ff f881 bl 804196c } break; - 804282a: e0e2 b.n 80429f2 - 804282c: 2400eb30 .word 0x2400eb30 - 8042830: 2400eb2d .word 0x2400eb2d - 8042834: 2400eb00 .word 0x2400eb00 - 8042838: 2400eb20 .word 0x2400eb20 + 804286a: e0e2 b.n 8042a32 + 804286c: 2400eb30 .word 0x2400eb30 + 8042870: 2400eb2d .word 0x2400eb2d + 8042874: 2400eb00 .word 0x2400eb00 + 8042878: 2400eb20 .word 0x2400eb20 #endif /* LWIP_TCP_SACK_OUT */ /* We don't use 'prev' below, so let's set it to current 'next'. This way even if we break the loop below, 'prev' will be pointing at the segment right in front of the newly added one. */ prev = next; - 804283c: 6bbb ldr r3, [r7, #56] ; 0x38 - 804283e: 637b str r3, [r7, #52] ; 0x34 + 804287c: 6bbb ldr r3, [r7, #56] ; 0x38 + 804287e: 637b str r3, [r7, #52] ; 0x34 /* If the "next" segment is the last segment on the ooseq queue, we add the incoming segment to the end of the list. */ if (next->next == NULL && - 8042840: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042842: 681b ldr r3, [r3, #0] - 8042844: 2b00 cmp r3, #0 - 8042846: f040 80c6 bne.w 80429d6 + 8042880: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042882: 681b ldr r3, [r3, #0] + 8042884: 2b00 cmp r3, #0 + 8042886: f040 80c6 bne.w 8042a16 TCP_SEQ_GT(seqno, next->tcphdr->seqno)) { - 804284a: 4b80 ldr r3, [pc, #512] ; (8042a4c ) - 804284c: 681a ldr r2, [r3, #0] - 804284e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042850: 68db ldr r3, [r3, #12] - 8042852: 685b ldr r3, [r3, #4] - 8042854: 1ad3 subs r3, r2, r3 + 804288a: 4b80 ldr r3, [pc, #512] ; (8042a8c ) + 804288c: 681a ldr r2, [r3, #0] + 804288e: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042890: 68db ldr r3, [r3, #12] + 8042892: 685b ldr r3, [r3, #4] + 8042894: 1ad3 subs r3, r2, r3 if (next->next == NULL && - 8042856: 2b00 cmp r3, #0 - 8042858: f340 80bd ble.w 80429d6 + 8042896: 2b00 cmp r3, #0 + 8042898: f340 80bd ble.w 8042a16 if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - 804285c: 6bbb ldr r3, [r7, #56] ; 0x38 - 804285e: 68db ldr r3, [r3, #12] - 8042860: 899b ldrh r3, [r3, #12] - 8042862: b29b uxth r3, r3 - 8042864: 4618 mov r0, r3 - 8042866: f7fa fbb1 bl 803cfcc - 804286a: 4603 mov r3, r0 - 804286c: b2db uxtb r3, r3 - 804286e: f003 0301 and.w r3, r3, #1 - 8042872: 2b00 cmp r3, #0 - 8042874: f040 80bf bne.w 80429f6 + 804289c: 6bbb ldr r3, [r7, #56] ; 0x38 + 804289e: 68db ldr r3, [r3, #12] + 80428a0: 899b ldrh r3, [r3, #12] + 80428a2: b29b uxth r3, r3 + 80428a4: 4618 mov r0, r3 + 80428a6: f7fa fbb1 bl 803d00c + 80428aa: 4603 mov r3, r0 + 80428ac: b2db uxtb r3, r3 + 80428ae: f003 0301 and.w r3, r3, #1 + 80428b2: 2b00 cmp r3, #0 + 80428b4: f040 80bf bne.w 8042a36 /* segment "next" already contains all data */ break; } next->next = tcp_seg_copy(&inseg); - 8042878: 4875 ldr r0, [pc, #468] ; (8042a50 ) - 804287a: f7fd fb07 bl 803fe8c - 804287e: 4602 mov r2, r0 - 8042880: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042882: 601a str r2, [r3, #0] + 80428b8: 4875 ldr r0, [pc, #468] ; (8042a90 ) + 80428ba: f7fd fb07 bl 803fecc + 80428be: 4602 mov r2, r0 + 80428c0: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428c2: 601a str r2, [r3, #0] if (next->next != NULL) { - 8042884: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042886: 681b ldr r3, [r3, #0] - 8042888: 2b00 cmp r3, #0 - 804288a: f000 80b6 beq.w 80429fa + 80428c4: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428c6: 681b ldr r3, [r3, #0] + 80428c8: 2b00 cmp r3, #0 + 80428ca: f000 80b6 beq.w 8042a3a if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) { - 804288e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042890: 68db ldr r3, [r3, #12] - 8042892: 685b ldr r3, [r3, #4] - 8042894: 6bba ldr r2, [r7, #56] ; 0x38 - 8042896: 8912 ldrh r2, [r2, #8] - 8042898: 441a add r2, r3 - 804289a: 4b6c ldr r3, [pc, #432] ; (8042a4c ) - 804289c: 681b ldr r3, [r3, #0] - 804289e: 1ad3 subs r3, r2, r3 - 80428a0: 2b00 cmp r3, #0 - 80428a2: dd12 ble.n 80428ca + 80428ce: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428d0: 68db ldr r3, [r3, #12] + 80428d2: 685b ldr r3, [r3, #4] + 80428d4: 6bba ldr r2, [r7, #56] ; 0x38 + 80428d6: 8912 ldrh r2, [r2, #8] + 80428d8: 441a add r2, r3 + 80428da: 4b6c ldr r3, [pc, #432] ; (8042a8c ) + 80428dc: 681b ldr r3, [r3, #0] + 80428de: 1ad3 subs r3, r2, r3 + 80428e0: 2b00 cmp r3, #0 + 80428e2: dd12 ble.n 804290a /* We need to trim the last segment. */ next->len = (u16_t)(seqno - next->tcphdr->seqno); - 80428a4: 4b69 ldr r3, [pc, #420] ; (8042a4c ) - 80428a6: 681b ldr r3, [r3, #0] - 80428a8: b29a uxth r2, r3 - 80428aa: 6bbb ldr r3, [r7, #56] ; 0x38 - 80428ac: 68db ldr r3, [r3, #12] - 80428ae: 685b ldr r3, [r3, #4] - 80428b0: b29b uxth r3, r3 - 80428b2: 1ad3 subs r3, r2, r3 - 80428b4: b29a uxth r2, r3 - 80428b6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80428b8: 811a strh r2, [r3, #8] + 80428e4: 4b69 ldr r3, [pc, #420] ; (8042a8c ) + 80428e6: 681b ldr r3, [r3, #0] + 80428e8: b29a uxth r2, r3 + 80428ea: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428ec: 68db ldr r3, [r3, #12] + 80428ee: 685b ldr r3, [r3, #4] + 80428f0: b29b uxth r3, r3 + 80428f2: 1ad3 subs r3, r2, r3 + 80428f4: b29a uxth r2, r3 + 80428f6: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428f8: 811a strh r2, [r3, #8] pbuf_realloc(next->p, next->len); - 80428ba: 6bbb ldr r3, [r7, #56] ; 0x38 - 80428bc: 685a ldr r2, [r3, #4] - 80428be: 6bbb ldr r3, [r7, #56] ; 0x38 - 80428c0: 891b ldrh r3, [r3, #8] - 80428c2: 4619 mov r1, r3 - 80428c4: 4610 mov r0, r2 - 80428c6: f7fb fe2d bl 803e524 + 80428fa: 6bbb ldr r3, [r7, #56] ; 0x38 + 80428fc: 685a ldr r2, [r3, #4] + 80428fe: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042900: 891b ldrh r3, [r3, #8] + 8042902: 4619 mov r1, r3 + 8042904: 4610 mov r0, r2 + 8042906: f7fb fe2d bl 803e564 } /* check if the remote side overruns our receive window */ if (TCP_SEQ_GT((u32_t)tcplen + seqno, pcb->rcv_nxt + (u32_t)pcb->rcv_wnd)) { - 80428ca: 4b62 ldr r3, [pc, #392] ; (8042a54 ) - 80428cc: 881b ldrh r3, [r3, #0] - 80428ce: 461a mov r2, r3 - 80428d0: 4b5e ldr r3, [pc, #376] ; (8042a4c ) - 80428d2: 681b ldr r3, [r3, #0] - 80428d4: 441a add r2, r3 - 80428d6: 687b ldr r3, [r7, #4] - 80428d8: 6a5b ldr r3, [r3, #36] ; 0x24 - 80428da: 6879 ldr r1, [r7, #4] - 80428dc: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80428de: 440b add r3, r1 - 80428e0: 1ad3 subs r3, r2, r3 - 80428e2: 2b00 cmp r3, #0 - 80428e4: f340 8089 ble.w 80429fa + 804290a: 4b62 ldr r3, [pc, #392] ; (8042a94 ) + 804290c: 881b ldrh r3, [r3, #0] + 804290e: 461a mov r2, r3 + 8042910: 4b5e ldr r3, [pc, #376] ; (8042a8c ) + 8042912: 681b ldr r3, [r3, #0] + 8042914: 441a add r2, r3 + 8042916: 687b ldr r3, [r7, #4] + 8042918: 6a5b ldr r3, [r3, #36] ; 0x24 + 804291a: 6879 ldr r1, [r7, #4] + 804291c: 8d09 ldrh r1, [r1, #40] ; 0x28 + 804291e: 440b add r3, r1 + 8042920: 1ad3 subs r3, r2, r3 + 8042922: 2b00 cmp r3, #0 + 8042924: f340 8089 ble.w 8042a3a LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: other end overran receive window" "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); if (TCPH_FLAGS(next->next->tcphdr) & TCP_FIN) { - 80428e8: 6bbb ldr r3, [r7, #56] ; 0x38 - 80428ea: 681b ldr r3, [r3, #0] - 80428ec: 68db ldr r3, [r3, #12] - 80428ee: 899b ldrh r3, [r3, #12] - 80428f0: b29b uxth r3, r3 - 80428f2: 4618 mov r0, r3 - 80428f4: f7fa fb6a bl 803cfcc - 80428f8: 4603 mov r3, r0 - 80428fa: b2db uxtb r3, r3 - 80428fc: f003 0301 and.w r3, r3, #1 - 8042900: 2b00 cmp r3, #0 - 8042902: d022 beq.n 804294a - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(next->next->tcphdr, TCPH_FLAGS(next->next->tcphdr) & ~TCP_FIN); - 8042904: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042906: 681b ldr r3, [r3, #0] - 8042908: 68db ldr r3, [r3, #12] - 804290a: 899b ldrh r3, [r3, #12] - 804290c: b29b uxth r3, r3 - 804290e: b21b sxth r3, r3 - 8042910: f423 537c bic.w r3, r3, #16128 ; 0x3f00 - 8042914: b21c sxth r4, r3 - 8042916: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042918: 681b ldr r3, [r3, #0] - 804291a: 68db ldr r3, [r3, #12] - 804291c: 899b ldrh r3, [r3, #12] - 804291e: b29b uxth r3, r3 - 8042920: 4618 mov r0, r3 - 8042922: f7fa fb53 bl 803cfcc - 8042926: 4603 mov r3, r0 - 8042928: b2db uxtb r3, r3 - 804292a: b29b uxth r3, r3 - 804292c: f003 033e and.w r3, r3, #62 ; 0x3e + 8042928: 6bbb ldr r3, [r7, #56] ; 0x38 + 804292a: 681b ldr r3, [r3, #0] + 804292c: 68db ldr r3, [r3, #12] + 804292e: 899b ldrh r3, [r3, #12] 8042930: b29b uxth r3, r3 8042932: 4618 mov r0, r3 - 8042934: f7fa fb4a bl 803cfcc + 8042934: f7fa fb6a bl 803d00c 8042938: 4603 mov r3, r0 - 804293a: b21b sxth r3, r3 - 804293c: 4323 orrs r3, r4 - 804293e: b21a sxth r2, r3 - 8042940: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042942: 681b ldr r3, [r3, #0] - 8042944: 68db ldr r3, [r3, #12] - 8042946: b292 uxth r2, r2 - 8042948: 819a strh r2, [r3, #12] + 804293a: b2db uxtb r3, r3 + 804293c: f003 0301 and.w r3, r3, #1 + 8042940: 2b00 cmp r3, #0 + 8042942: d022 beq.n 804298a + /* Must remove the FIN from the header as we're trimming + * that byte of sequence-space from the packet */ + TCPH_FLAGS_SET(next->next->tcphdr, TCPH_FLAGS(next->next->tcphdr) & ~TCP_FIN); + 8042944: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042946: 681b ldr r3, [r3, #0] + 8042948: 68db ldr r3, [r3, #12] + 804294a: 899b ldrh r3, [r3, #12] + 804294c: b29b uxth r3, r3 + 804294e: b21b sxth r3, r3 + 8042950: f423 537c bic.w r3, r3, #16128 ; 0x3f00 + 8042954: b21c sxth r4, r3 + 8042956: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042958: 681b ldr r3, [r3, #0] + 804295a: 68db ldr r3, [r3, #12] + 804295c: 899b ldrh r3, [r3, #12] + 804295e: b29b uxth r3, r3 + 8042960: 4618 mov r0, r3 + 8042962: f7fa fb53 bl 803d00c + 8042966: 4603 mov r3, r0 + 8042968: b2db uxtb r3, r3 + 804296a: b29b uxth r3, r3 + 804296c: f003 033e and.w r3, r3, #62 ; 0x3e + 8042970: b29b uxth r3, r3 + 8042972: 4618 mov r0, r3 + 8042974: f7fa fb4a bl 803d00c + 8042978: 4603 mov r3, r0 + 804297a: b21b sxth r3, r3 + 804297c: 4323 orrs r3, r4 + 804297e: b21a sxth r2, r3 + 8042980: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042982: 681b ldr r3, [r3, #0] + 8042984: 68db ldr r3, [r3, #12] + 8042986: b292 uxth r2, r2 + 8042988: 819a strh r2, [r3, #12] } /* Adjust length of segment to fit in the window. */ next->next->len = (u16_t)(pcb->rcv_nxt + pcb->rcv_wnd - seqno); - 804294a: 687b ldr r3, [r7, #4] - 804294c: 6a5b ldr r3, [r3, #36] ; 0x24 - 804294e: b29a uxth r2, r3 - 8042950: 687b ldr r3, [r7, #4] - 8042952: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8042954: 4413 add r3, r2 - 8042956: b299 uxth r1, r3 - 8042958: 4b3c ldr r3, [pc, #240] ; (8042a4c ) - 804295a: 681b ldr r3, [r3, #0] - 804295c: b29a uxth r2, r3 - 804295e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042960: 681b ldr r3, [r3, #0] - 8042962: 1a8a subs r2, r1, r2 - 8042964: b292 uxth r2, r2 - 8042966: 811a strh r2, [r3, #8] + 804298a: 687b ldr r3, [r7, #4] + 804298c: 6a5b ldr r3, [r3, #36] ; 0x24 + 804298e: b29a uxth r2, r3 + 8042990: 687b ldr r3, [r7, #4] + 8042992: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8042994: 4413 add r3, r2 + 8042996: b299 uxth r1, r3 + 8042998: 4b3c ldr r3, [pc, #240] ; (8042a8c ) + 804299a: 681b ldr r3, [r3, #0] + 804299c: b29a uxth r2, r3 + 804299e: 6bbb ldr r3, [r7, #56] ; 0x38 + 80429a0: 681b ldr r3, [r3, #0] + 80429a2: 1a8a subs r2, r1, r2 + 80429a4: b292 uxth r2, r2 + 80429a6: 811a strh r2, [r3, #8] pbuf_realloc(next->next->p, next->next->len); - 8042968: 6bbb ldr r3, [r7, #56] ; 0x38 - 804296a: 681b ldr r3, [r3, #0] - 804296c: 685a ldr r2, [r3, #4] - 804296e: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042970: 681b ldr r3, [r3, #0] - 8042972: 891b ldrh r3, [r3, #8] - 8042974: 4619 mov r1, r3 - 8042976: 4610 mov r0, r2 - 8042978: f7fb fdd4 bl 803e524 + 80429a8: 6bbb ldr r3, [r7, #56] ; 0x38 + 80429aa: 681b ldr r3, [r3, #0] + 80429ac: 685a ldr r2, [r3, #4] + 80429ae: 6bbb ldr r3, [r7, #56] ; 0x38 + 80429b0: 681b ldr r3, [r3, #0] + 80429b2: 891b ldrh r3, [r3, #8] + 80429b4: 4619 mov r1, r3 + 80429b6: 4610 mov r0, r2 + 80429b8: f7fb fdd4 bl 803e564 tcplen = TCP_TCPLEN(next->next); - 804297c: 6bbb ldr r3, [r7, #56] ; 0x38 - 804297e: 681b ldr r3, [r3, #0] - 8042980: 891c ldrh r4, [r3, #8] - 8042982: 6bbb ldr r3, [r7, #56] ; 0x38 - 8042984: 681b ldr r3, [r3, #0] - 8042986: 68db ldr r3, [r3, #12] - 8042988: 899b ldrh r3, [r3, #12] - 804298a: b29b uxth r3, r3 - 804298c: 4618 mov r0, r3 - 804298e: f7fa fb1d bl 803cfcc - 8042992: 4603 mov r3, r0 - 8042994: b2db uxtb r3, r3 - 8042996: f003 0303 and.w r3, r3, #3 - 804299a: 2b00 cmp r3, #0 - 804299c: d001 beq.n 80429a2 - 804299e: 2301 movs r3, #1 - 80429a0: e000 b.n 80429a4 - 80429a2: 2300 movs r3, #0 - 80429a4: 4423 add r3, r4 - 80429a6: b29a uxth r2, r3 - 80429a8: 4b2a ldr r3, [pc, #168] ; (8042a54 ) - 80429aa: 801a strh r2, [r3, #0] + 80429bc: 6bbb ldr r3, [r7, #56] ; 0x38 + 80429be: 681b ldr r3, [r3, #0] + 80429c0: 891c ldrh r4, [r3, #8] + 80429c2: 6bbb ldr r3, [r7, #56] ; 0x38 + 80429c4: 681b ldr r3, [r3, #0] + 80429c6: 68db ldr r3, [r3, #12] + 80429c8: 899b ldrh r3, [r3, #12] + 80429ca: b29b uxth r3, r3 + 80429cc: 4618 mov r0, r3 + 80429ce: f7fa fb1d bl 803d00c + 80429d2: 4603 mov r3, r0 + 80429d4: b2db uxtb r3, r3 + 80429d6: f003 0303 and.w r3, r3, #3 + 80429da: 2b00 cmp r3, #0 + 80429dc: d001 beq.n 80429e2 + 80429de: 2301 movs r3, #1 + 80429e0: e000 b.n 80429e4 + 80429e2: 2300 movs r3, #0 + 80429e4: 4423 add r3, r4 + 80429e6: b29a uxth r2, r3 + 80429e8: 4b2a ldr r3, [pc, #168] ; (8042a94 ) + 80429ea: 801a strh r2, [r3, #0] LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - 80429ac: 4b29 ldr r3, [pc, #164] ; (8042a54 ) - 80429ae: 881b ldrh r3, [r3, #0] - 80429b0: 461a mov r2, r3 - 80429b2: 4b26 ldr r3, [pc, #152] ; (8042a4c ) - 80429b4: 681b ldr r3, [r3, #0] - 80429b6: 441a add r2, r3 - 80429b8: 687b ldr r3, [r7, #4] - 80429ba: 6a5b ldr r3, [r3, #36] ; 0x24 - 80429bc: 6879 ldr r1, [r7, #4] - 80429be: 8d09 ldrh r1, [r1, #40] ; 0x28 - 80429c0: 440b add r3, r1 - 80429c2: 429a cmp r2, r3 - 80429c4: d019 beq.n 80429fa - 80429c6: 4b24 ldr r3, [pc, #144] ; (8042a58 ) - 80429c8: f44f 62df mov.w r2, #1784 ; 0x6f8 - 80429cc: 4923 ldr r1, [pc, #140] ; (8042a5c ) - 80429ce: 4824 ldr r0, [pc, #144] ; (8042a60 ) - 80429d0: f005 fae8 bl 8047fa4 + 80429ec: 4b29 ldr r3, [pc, #164] ; (8042a94 ) + 80429ee: 881b ldrh r3, [r3, #0] + 80429f0: 461a mov r2, r3 + 80429f2: 4b26 ldr r3, [pc, #152] ; (8042a8c ) + 80429f4: 681b ldr r3, [r3, #0] + 80429f6: 441a add r2, r3 + 80429f8: 687b ldr r3, [r7, #4] + 80429fa: 6a5b ldr r3, [r3, #36] ; 0x24 + 80429fc: 6879 ldr r1, [r7, #4] + 80429fe: 8d09 ldrh r1, [r1, #40] ; 0x28 + 8042a00: 440b add r3, r1 + 8042a02: 429a cmp r2, r3 + 8042a04: d019 beq.n 8042a3a + 8042a06: 4b24 ldr r3, [pc, #144] ; (8042a98 ) + 8042a08: f44f 62df mov.w r2, #1784 ; 0x6f8 + 8042a0c: 4923 ldr r1, [pc, #140] ; (8042a9c ) + 8042a0e: 4824 ldr r0, [pc, #144] ; (8042aa0 ) + 8042a10: f005 fae8 bl 8047fe4 (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); } } break; - 80429d4: e011 b.n 80429fa + 8042a14: e011 b.n 8042a3a for (next = pcb->ooseq; next != NULL; next = next->next) { - 80429d6: 6bbb ldr r3, [r7, #56] ; 0x38 - 80429d8: 681b ldr r3, [r3, #0] - 80429da: 63bb str r3, [r7, #56] ; 0x38 - 80429dc: 6bbb ldr r3, [r7, #56] ; 0x38 - 80429de: 2b00 cmp r3, #0 - 80429e0: f47f aea4 bne.w 804272c - 80429e4: e00a b.n 80429fc + 8042a16: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042a18: 681b ldr r3, [r3, #0] + 8042a1a: 63bb str r3, [r7, #56] ; 0x38 + 8042a1c: 6bbb ldr r3, [r7, #56] ; 0x38 + 8042a1e: 2b00 cmp r3, #0 + 8042a20: f47f aea4 bne.w 804276c + 8042a24: e00a b.n 8042a3c break; - 80429e6: bf00 nop - 80429e8: e008 b.n 80429fc + 8042a26: bf00 nop + 8042a28: e008 b.n 8042a3c break; - 80429ea: bf00 nop - 80429ec: e006 b.n 80429fc + 8042a2a: bf00 nop + 8042a2c: e006 b.n 8042a3c break; - 80429ee: bf00 nop - 80429f0: e004 b.n 80429fc + 8042a2e: bf00 nop + 8042a30: e004 b.n 8042a3c break; - 80429f2: bf00 nop - 80429f4: e002 b.n 80429fc + 8042a32: bf00 nop + 8042a34: e002 b.n 8042a3c break; - 80429f6: bf00 nop - 80429f8: e000 b.n 80429fc + 8042a36: bf00 nop + 8042a38: e000 b.n 8042a3c break; - 80429fa: bf00 nop + 8042a3a: bf00 nop #endif /* TCP_OOSEQ_BYTES_LIMIT || TCP_OOSEQ_PBUFS_LIMIT */ #endif /* TCP_QUEUE_OOSEQ */ /* We send the ACK packet after we've (potentially) dealt with SACKs, so they can be included in the acknowledgment. */ tcp_send_empty_ack(pcb); - 80429fc: 6878 ldr r0, [r7, #4] - 80429fe: f001 fe8b bl 8044718 + 8042a3c: 6878 ldr r0, [r7, #4] + 8042a3e: f001 fe8b bl 8044758 if (pcb->rcv_nxt == seqno) { - 8042a02: e003 b.n 8042a0c + 8042a42: e003 b.n 8042a4c } } else { /* The incoming segment is not within the window. */ tcp_send_empty_ack(pcb); - 8042a04: 6878 ldr r0, [r7, #4] - 8042a06: f001 fe87 bl 8044718 + 8042a44: 6878 ldr r0, [r7, #4] + 8042a46: f001 fe87 bl 8044758 if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - 8042a0a: e01a b.n 8042a42 - 8042a0c: e019 b.n 8042a42 + 8042a4a: e01a b.n 8042a82 + 8042a4c: e019 b.n 8042a82 } } else { /* Segments with length 0 is taken care of here. Segments that fall out of the window are ACKed. */ if (!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd - 1)) { - 8042a0e: 4b0f ldr r3, [pc, #60] ; (8042a4c ) - 8042a10: 681a ldr r2, [r3, #0] - 8042a12: 687b ldr r3, [r7, #4] - 8042a14: 6a5b ldr r3, [r3, #36] ; 0x24 - 8042a16: 1ad3 subs r3, r2, r3 - 8042a18: 2b00 cmp r3, #0 - 8042a1a: db0a blt.n 8042a32 - 8042a1c: 4b0b ldr r3, [pc, #44] ; (8042a4c ) - 8042a1e: 681a ldr r2, [r3, #0] - 8042a20: 687b ldr r3, [r7, #4] - 8042a22: 6a5b ldr r3, [r3, #36] ; 0x24 - 8042a24: 6879 ldr r1, [r7, #4] - 8042a26: 8d09 ldrh r1, [r1, #40] ; 0x28 - 8042a28: 440b add r3, r1 - 8042a2a: 1ad3 subs r3, r2, r3 - 8042a2c: 3301 adds r3, #1 - 8042a2e: 2b00 cmp r3, #0 - 8042a30: dd07 ble.n 8042a42 + 8042a4e: 4b0f ldr r3, [pc, #60] ; (8042a8c ) + 8042a50: 681a ldr r2, [r3, #0] + 8042a52: 687b ldr r3, [r7, #4] + 8042a54: 6a5b ldr r3, [r3, #36] ; 0x24 + 8042a56: 1ad3 subs r3, r2, r3 + 8042a58: 2b00 cmp r3, #0 + 8042a5a: db0a blt.n 8042a72 + 8042a5c: 4b0b ldr r3, [pc, #44] ; (8042a8c ) + 8042a5e: 681a ldr r2, [r3, #0] + 8042a60: 687b ldr r3, [r7, #4] + 8042a62: 6a5b ldr r3, [r3, #36] ; 0x24 + 8042a64: 6879 ldr r1, [r7, #4] + 8042a66: 8d09 ldrh r1, [r1, #40] ; 0x28 + 8042a68: 440b add r3, r1 + 8042a6a: 1ad3 subs r3, r2, r3 + 8042a6c: 3301 adds r3, #1 + 8042a6e: 2b00 cmp r3, #0 + 8042a70: dd07 ble.n 8042a82 tcp_ack_now(pcb); - 8042a32: 687b ldr r3, [r7, #4] - 8042a34: 8b5b ldrh r3, [r3, #26] - 8042a36: f043 0302 orr.w r3, r3, #2 - 8042a3a: b29a uxth r2, r3 - 8042a3c: 687b ldr r3, [r7, #4] - 8042a3e: 835a strh r2, [r3, #26] - } - } -} - 8042a40: e7ff b.n 8042a42 - 8042a42: bf00 nop - 8042a44: 3750 adds r7, #80 ; 0x50 - 8042a46: 46bd mov sp, r7 - 8042a48: bdb0 pop {r4, r5, r7, pc} - 8042a4a: bf00 nop - 8042a4c: 2400eb20 .word 0x2400eb20 - 8042a50: 2400eb00 .word 0x2400eb00 - 8042a54: 2400eb2a .word 0x2400eb2a - 8042a58: 0804b398 .word 0x0804b398 - 8042a5c: 0804b740 .word 0x0804b740 - 8042a60: 0804b3e4 .word 0x0804b3e4 - -08042a64 : + 8042a72: 687b ldr r3, [r7, #4] + 8042a74: 8b5b ldrh r3, [r3, #26] + 8042a76: f043 0302 orr.w r3, r3, #2 + 8042a7a: b29a uxth r2, r3 + 8042a7c: 687b ldr r3, [r7, #4] + 8042a7e: 835a strh r2, [r3, #26] + } + } +} + 8042a80: e7ff b.n 8042a82 + 8042a82: bf00 nop + 8042a84: 3750 adds r7, #80 ; 0x50 + 8042a86: 46bd mov sp, r7 + 8042a88: bdb0 pop {r4, r5, r7, pc} + 8042a8a: bf00 nop + 8042a8c: 2400eb20 .word 0x2400eb20 + 8042a90: 2400eb00 .word 0x2400eb00 + 8042a94: 2400eb2a .word 0x2400eb2a + 8042a98: 0804b3d8 .word 0x0804b3d8 + 8042a9c: 0804b780 .word 0x0804b780 + 8042aa0: 0804b424 .word 0x0804b424 + +08042aa4 : static u8_t tcp_get_next_optbyte(void) { - 8042a64: b480 push {r7} - 8042a66: b083 sub sp, #12 - 8042a68: af00 add r7, sp, #0 + 8042aa4: b480 push {r7} + 8042aa6: b083 sub sp, #12 + 8042aa8: af00 add r7, sp, #0 u16_t optidx = tcp_optidx++; - 8042a6a: 4b15 ldr r3, [pc, #84] ; (8042ac0 ) - 8042a6c: 881b ldrh r3, [r3, #0] - 8042a6e: 1c5a adds r2, r3, #1 - 8042a70: b291 uxth r1, r2 - 8042a72: 4a13 ldr r2, [pc, #76] ; (8042ac0 ) - 8042a74: 8011 strh r1, [r2, #0] - 8042a76: 80fb strh r3, [r7, #6] + 8042aaa: 4b15 ldr r3, [pc, #84] ; (8042b00 ) + 8042aac: 881b ldrh r3, [r3, #0] + 8042aae: 1c5a adds r2, r3, #1 + 8042ab0: b291 uxth r1, r2 + 8042ab2: 4a13 ldr r2, [pc, #76] ; (8042b00 ) + 8042ab4: 8011 strh r1, [r2, #0] + 8042ab6: 80fb strh r3, [r7, #6] if ((tcphdr_opt2 == NULL) || (optidx < tcphdr_opt1len)) { - 8042a78: 4b12 ldr r3, [pc, #72] ; (8042ac4 ) - 8042a7a: 681b ldr r3, [r3, #0] - 8042a7c: 2b00 cmp r3, #0 - 8042a7e: d004 beq.n 8042a8a - 8042a80: 4b11 ldr r3, [pc, #68] ; (8042ac8 ) - 8042a82: 881b ldrh r3, [r3, #0] - 8042a84: 88fa ldrh r2, [r7, #6] - 8042a86: 429a cmp r2, r3 - 8042a88: d208 bcs.n 8042a9c + 8042ab8: 4b12 ldr r3, [pc, #72] ; (8042b04 ) + 8042aba: 681b ldr r3, [r3, #0] + 8042abc: 2b00 cmp r3, #0 + 8042abe: d004 beq.n 8042aca + 8042ac0: 4b11 ldr r3, [pc, #68] ; (8042b08 ) + 8042ac2: 881b ldrh r3, [r3, #0] + 8042ac4: 88fa ldrh r2, [r7, #6] + 8042ac6: 429a cmp r2, r3 + 8042ac8: d208 bcs.n 8042adc u8_t *opts = (u8_t *)tcphdr + TCP_HLEN; - 8042a8a: 4b10 ldr r3, [pc, #64] ; (8042acc ) - 8042a8c: 681b ldr r3, [r3, #0] - 8042a8e: 3314 adds r3, #20 - 8042a90: 603b str r3, [r7, #0] + 8042aca: 4b10 ldr r3, [pc, #64] ; (8042b0c ) + 8042acc: 681b ldr r3, [r3, #0] + 8042ace: 3314 adds r3, #20 + 8042ad0: 603b str r3, [r7, #0] return opts[optidx]; - 8042a92: 88fb ldrh r3, [r7, #6] - 8042a94: 683a ldr r2, [r7, #0] - 8042a96: 4413 add r3, r2 - 8042a98: 781b ldrb r3, [r3, #0] - 8042a9a: e00b b.n 8042ab4 + 8042ad2: 88fb ldrh r3, [r7, #6] + 8042ad4: 683a ldr r2, [r7, #0] + 8042ad6: 4413 add r3, r2 + 8042ad8: 781b ldrb r3, [r3, #0] + 8042ada: e00b b.n 8042af4 } else { u8_t idx = (u8_t)(optidx - tcphdr_opt1len); - 8042a9c: 88fb ldrh r3, [r7, #6] - 8042a9e: b2da uxtb r2, r3 - 8042aa0: 4b09 ldr r3, [pc, #36] ; (8042ac8 ) - 8042aa2: 881b ldrh r3, [r3, #0] - 8042aa4: b2db uxtb r3, r3 - 8042aa6: 1ad3 subs r3, r2, r3 - 8042aa8: 717b strb r3, [r7, #5] + 8042adc: 88fb ldrh r3, [r7, #6] + 8042ade: b2da uxtb r2, r3 + 8042ae0: 4b09 ldr r3, [pc, #36] ; (8042b08 ) + 8042ae2: 881b ldrh r3, [r3, #0] + 8042ae4: b2db uxtb r3, r3 + 8042ae6: 1ad3 subs r3, r2, r3 + 8042ae8: 717b strb r3, [r7, #5] return tcphdr_opt2[idx]; - 8042aaa: 4b06 ldr r3, [pc, #24] ; (8042ac4 ) - 8042aac: 681a ldr r2, [r3, #0] - 8042aae: 797b ldrb r3, [r7, #5] - 8042ab0: 4413 add r3, r2 - 8042ab2: 781b ldrb r3, [r3, #0] - } -} - 8042ab4: 4618 mov r0, r3 - 8042ab6: 370c adds r7, #12 - 8042ab8: 46bd mov sp, r7 - 8042aba: f85d 7b04 ldr.w r7, [sp], #4 - 8042abe: 4770 bx lr - 8042ac0: 2400eb1c .word 0x2400eb1c - 8042ac4: 2400eb18 .word 0x2400eb18 - 8042ac8: 2400eb16 .word 0x2400eb16 - 8042acc: 2400eb10 .word 0x2400eb10 - -08042ad0 : + 8042aea: 4b06 ldr r3, [pc, #24] ; (8042b04 ) + 8042aec: 681a ldr r2, [r3, #0] + 8042aee: 797b ldrb r3, [r7, #5] + 8042af0: 4413 add r3, r2 + 8042af2: 781b ldrb r3, [r3, #0] + } +} + 8042af4: 4618 mov r0, r3 + 8042af6: 370c adds r7, #12 + 8042af8: 46bd mov sp, r7 + 8042afa: f85d 7b04 ldr.w r7, [sp], #4 + 8042afe: 4770 bx lr + 8042b00: 2400eb1c .word 0x2400eb1c + 8042b04: 2400eb18 .word 0x2400eb18 + 8042b08: 2400eb16 .word 0x2400eb16 + 8042b0c: 2400eb10 .word 0x2400eb10 + +08042b10 : * * @param pcb the tcp_pcb for which a segment arrived */ static void tcp_parseopt(struct tcp_pcb *pcb) { - 8042ad0: b580 push {r7, lr} - 8042ad2: b084 sub sp, #16 - 8042ad4: af00 add r7, sp, #0 - 8042ad6: 6078 str r0, [r7, #4] + 8042b10: b580 push {r7, lr} + 8042b12: b084 sub sp, #16 + 8042b14: af00 add r7, sp, #0 + 8042b16: 6078 str r0, [r7, #4] u16_t mss; #if LWIP_TCP_TIMESTAMPS u32_t tsval; #endif LWIP_ASSERT("tcp_parseopt: invalid pcb", pcb != NULL); - 8042ad8: 687b ldr r3, [r7, #4] - 8042ada: 2b00 cmp r3, #0 - 8042adc: d106 bne.n 8042aec - 8042ade: 4b32 ldr r3, [pc, #200] ; (8042ba8 ) - 8042ae0: f240 727d movw r2, #1917 ; 0x77d - 8042ae4: 4931 ldr r1, [pc, #196] ; (8042bac ) - 8042ae6: 4832 ldr r0, [pc, #200] ; (8042bb0 ) - 8042ae8: f005 fa5c bl 8047fa4 + 8042b18: 687b ldr r3, [r7, #4] + 8042b1a: 2b00 cmp r3, #0 + 8042b1c: d106 bne.n 8042b2c + 8042b1e: 4b32 ldr r3, [pc, #200] ; (8042be8 ) + 8042b20: f240 727d movw r2, #1917 ; 0x77d + 8042b24: 4931 ldr r1, [pc, #196] ; (8042bec ) + 8042b26: 4832 ldr r0, [pc, #200] ; (8042bf0 ) + 8042b28: f005 fa5c bl 8047fe4 /* Parse the TCP MSS option, if present. */ if (tcphdr_optlen != 0) { - 8042aec: 4b31 ldr r3, [pc, #196] ; (8042bb4 ) - 8042aee: 881b ldrh r3, [r3, #0] - 8042af0: 2b00 cmp r3, #0 - 8042af2: d055 beq.n 8042ba0 + 8042b2c: 4b31 ldr r3, [pc, #196] ; (8042bf4 ) + 8042b2e: 881b ldrh r3, [r3, #0] + 8042b30: 2b00 cmp r3, #0 + 8042b32: d055 beq.n 8042be0 for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) { - 8042af4: 4b30 ldr r3, [pc, #192] ; (8042bb8 ) - 8042af6: 2200 movs r2, #0 - 8042af8: 801a strh r2, [r3, #0] - 8042afa: e045 b.n 8042b88 + 8042b34: 4b30 ldr r3, [pc, #192] ; (8042bf8 ) + 8042b36: 2200 movs r2, #0 + 8042b38: 801a strh r2, [r3, #0] + 8042b3a: e045 b.n 8042bc8 u8_t opt = tcp_get_next_optbyte(); - 8042afc: f7ff ffb2 bl 8042a64 - 8042b00: 4603 mov r3, r0 - 8042b02: 73fb strb r3, [r7, #15] + 8042b3c: f7ff ffb2 bl 8042aa4 + 8042b40: 4603 mov r3, r0 + 8042b42: 73fb strb r3, [r7, #15] switch (opt) { - 8042b04: 7bfb ldrb r3, [r7, #15] - 8042b06: 2b02 cmp r3, #2 - 8042b08: d006 beq.n 8042b18 - 8042b0a: 2b02 cmp r3, #2 - 8042b0c: dc2b bgt.n 8042b66 - 8042b0e: 2b00 cmp r3, #0 - 8042b10: d041 beq.n 8042b96 - 8042b12: 2b01 cmp r3, #1 - 8042b14: d127 bne.n 8042b66 + 8042b44: 7bfb ldrb r3, [r7, #15] + 8042b46: 2b02 cmp r3, #2 + 8042b48: d006 beq.n 8042b58 + 8042b4a: 2b02 cmp r3, #2 + 8042b4c: dc2b bgt.n 8042ba6 + 8042b4e: 2b00 cmp r3, #0 + 8042b50: d041 beq.n 8042bd6 + 8042b52: 2b01 cmp r3, #1 + 8042b54: d127 bne.n 8042ba6 LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n")); return; case LWIP_TCP_OPT_NOP: /* NOP option. */ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n")); break; - 8042b16: e037 b.n 8042b88 + 8042b56: e037 b.n 8042bc8 case LWIP_TCP_OPT_MSS: LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n")); if (tcp_get_next_optbyte() != LWIP_TCP_OPT_LEN_MSS || (tcp_optidx - 2 + LWIP_TCP_OPT_LEN_MSS) > tcphdr_optlen) { - 8042b18: f7ff ffa4 bl 8042a64 - 8042b1c: 4603 mov r3, r0 - 8042b1e: 2b04 cmp r3, #4 - 8042b20: d13b bne.n 8042b9a - 8042b22: 4b25 ldr r3, [pc, #148] ; (8042bb8 ) - 8042b24: 881b ldrh r3, [r3, #0] - 8042b26: 3301 adds r3, #1 - 8042b28: 4a22 ldr r2, [pc, #136] ; (8042bb4 ) - 8042b2a: 8812 ldrh r2, [r2, #0] - 8042b2c: 4293 cmp r3, r2 - 8042b2e: da34 bge.n 8042b9a + 8042b58: f7ff ffa4 bl 8042aa4 + 8042b5c: 4603 mov r3, r0 + 8042b5e: 2b04 cmp r3, #4 + 8042b60: d13b bne.n 8042bda + 8042b62: 4b25 ldr r3, [pc, #148] ; (8042bf8 ) + 8042b64: 881b ldrh r3, [r3, #0] + 8042b66: 3301 adds r3, #1 + 8042b68: 4a22 ldr r2, [pc, #136] ; (8042bf4 ) + 8042b6a: 8812 ldrh r2, [r2, #0] + 8042b6c: 4293 cmp r3, r2 + 8042b6e: da34 bge.n 8042bda /* Bad length */ LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); return; } /* An MSS option with the right option length. */ mss = (u16_t)(tcp_get_next_optbyte() << 8); - 8042b30: f7ff ff98 bl 8042a64 - 8042b34: 4603 mov r3, r0 - 8042b36: b29b uxth r3, r3 - 8042b38: 021b lsls r3, r3, #8 - 8042b3a: 81bb strh r3, [r7, #12] + 8042b70: f7ff ff98 bl 8042aa4 + 8042b74: 4603 mov r3, r0 + 8042b76: b29b uxth r3, r3 + 8042b78: 021b lsls r3, r3, #8 + 8042b7a: 81bb strh r3, [r7, #12] mss |= tcp_get_next_optbyte(); - 8042b3c: f7ff ff92 bl 8042a64 - 8042b40: 4603 mov r3, r0 - 8042b42: b29a uxth r2, r3 - 8042b44: 89bb ldrh r3, [r7, #12] - 8042b46: 4313 orrs r3, r2 - 8042b48: 81bb strh r3, [r7, #12] + 8042b7c: f7ff ff92 bl 8042aa4 + 8042b80: 4603 mov r3, r0 + 8042b82: b29a uxth r2, r3 + 8042b84: 89bb ldrh r3, [r7, #12] + 8042b86: 4313 orrs r3, r2 + 8042b88: 81bb strh r3, [r7, #12] /* Limit the mss to the configured TCP_MSS and prevent division by zero */ pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; - 8042b4a: 89bb ldrh r3, [r7, #12] - 8042b4c: f5b3 7f06 cmp.w r3, #536 ; 0x218 - 8042b50: d804 bhi.n 8042b5c - 8042b52: 89bb ldrh r3, [r7, #12] - 8042b54: 2b00 cmp r3, #0 - 8042b56: d001 beq.n 8042b5c - 8042b58: 89ba ldrh r2, [r7, #12] - 8042b5a: e001 b.n 8042b60 - 8042b5c: f44f 7206 mov.w r2, #536 ; 0x218 - 8042b60: 687b ldr r3, [r7, #4] - 8042b62: 865a strh r2, [r3, #50] ; 0x32 + 8042b8a: 89bb ldrh r3, [r7, #12] + 8042b8c: f5b3 7f06 cmp.w r3, #536 ; 0x218 + 8042b90: d804 bhi.n 8042b9c + 8042b92: 89bb ldrh r3, [r7, #12] + 8042b94: 2b00 cmp r3, #0 + 8042b96: d001 beq.n 8042b9c + 8042b98: 89ba ldrh r2, [r7, #12] + 8042b9a: e001 b.n 8042ba0 + 8042b9c: f44f 7206 mov.w r2, #536 ; 0x218 + 8042ba0: 687b ldr r3, [r7, #4] + 8042ba2: 865a strh r2, [r3, #50] ; 0x32 break; - 8042b64: e010 b.n 8042b88 + 8042ba4: e010 b.n 8042bc8 } break; #endif /* LWIP_TCP_SACK_OUT */ default: LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n")); data = tcp_get_next_optbyte(); - 8042b66: f7ff ff7d bl 8042a64 - 8042b6a: 4603 mov r3, r0 - 8042b6c: 72fb strb r3, [r7, #11] + 8042ba6: f7ff ff7d bl 8042aa4 + 8042baa: 4603 mov r3, r0 + 8042bac: 72fb strb r3, [r7, #11] if (data < 2) { - 8042b6e: 7afb ldrb r3, [r7, #11] - 8042b70: 2b01 cmp r3, #1 - 8042b72: d914 bls.n 8042b9e + 8042bae: 7afb ldrb r3, [r7, #11] + 8042bb0: 2b01 cmp r3, #1 + 8042bb2: d914 bls.n 8042bde and we don't process them further. */ return; } /* All other options have a length field, so that we easily can skip past them. */ tcp_optidx += data - 2; - 8042b74: 7afb ldrb r3, [r7, #11] - 8042b76: b29a uxth r2, r3 - 8042b78: 4b0f ldr r3, [pc, #60] ; (8042bb8 ) - 8042b7a: 881b ldrh r3, [r3, #0] - 8042b7c: 4413 add r3, r2 - 8042b7e: b29b uxth r3, r3 - 8042b80: 3b02 subs r3, #2 - 8042b82: b29a uxth r2, r3 - 8042b84: 4b0c ldr r3, [pc, #48] ; (8042bb8 ) - 8042b86: 801a strh r2, [r3, #0] + 8042bb4: 7afb ldrb r3, [r7, #11] + 8042bb6: b29a uxth r2, r3 + 8042bb8: 4b0f ldr r3, [pc, #60] ; (8042bf8 ) + 8042bba: 881b ldrh r3, [r3, #0] + 8042bbc: 4413 add r3, r2 + 8042bbe: b29b uxth r3, r3 + 8042bc0: 3b02 subs r3, #2 + 8042bc2: b29a uxth r2, r3 + 8042bc4: 4b0c ldr r3, [pc, #48] ; (8042bf8 ) + 8042bc6: 801a strh r2, [r3, #0] for (tcp_optidx = 0; tcp_optidx < tcphdr_optlen; ) { - 8042b88: 4b0b ldr r3, [pc, #44] ; (8042bb8 ) - 8042b8a: 881a ldrh r2, [r3, #0] - 8042b8c: 4b09 ldr r3, [pc, #36] ; (8042bb4 ) - 8042b8e: 881b ldrh r3, [r3, #0] - 8042b90: 429a cmp r2, r3 - 8042b92: d3b3 bcc.n 8042afc - 8042b94: e004 b.n 8042ba0 + 8042bc8: 4b0b ldr r3, [pc, #44] ; (8042bf8 ) + 8042bca: 881a ldrh r2, [r3, #0] + 8042bcc: 4b09 ldr r3, [pc, #36] ; (8042bf4 ) + 8042bce: 881b ldrh r3, [r3, #0] + 8042bd0: 429a cmp r2, r3 + 8042bd2: d3b3 bcc.n 8042b3c + 8042bd4: e004 b.n 8042be0 return; - 8042b96: bf00 nop - 8042b98: e002 b.n 8042ba0 + 8042bd6: bf00 nop + 8042bd8: e002 b.n 8042be0 return; - 8042b9a: bf00 nop - 8042b9c: e000 b.n 8042ba0 + 8042bda: bf00 nop + 8042bdc: e000 b.n 8042be0 return; - 8042b9e: bf00 nop + 8042bde: bf00 nop } } } } - 8042ba0: 3710 adds r7, #16 - 8042ba2: 46bd mov sp, r7 - 8042ba4: bd80 pop {r7, pc} - 8042ba6: bf00 nop - 8042ba8: 0804b398 .word 0x0804b398 - 8042bac: 0804b7fc .word 0x0804b7fc - 8042bb0: 0804b3e4 .word 0x0804b3e4 - 8042bb4: 2400eb14 .word 0x2400eb14 - 8042bb8: 2400eb1c .word 0x2400eb1c + 8042be0: 3710 adds r7, #16 + 8042be2: 46bd mov sp, r7 + 8042be4: bd80 pop {r7, pc} + 8042be6: bf00 nop + 8042be8: 0804b3d8 .word 0x0804b3d8 + 8042bec: 0804b83c .word 0x0804b83c + 8042bf0: 0804b424 .word 0x0804b424 + 8042bf4: 2400eb14 .word 0x2400eb14 + 8042bf8: 2400eb1c .word 0x2400eb1c -08042bbc : +08042bfc : void tcp_trigger_input_pcb_close(void) { - 8042bbc: b480 push {r7} - 8042bbe: af00 add r7, sp, #0 + 8042bfc: b480 push {r7} + 8042bfe: af00 add r7, sp, #0 recv_flags |= TF_CLOSED; - 8042bc0: 4b05 ldr r3, [pc, #20] ; (8042bd8 ) - 8042bc2: 781b ldrb r3, [r3, #0] - 8042bc4: f043 0310 orr.w r3, r3, #16 - 8042bc8: b2da uxtb r2, r3 - 8042bca: 4b03 ldr r3, [pc, #12] ; (8042bd8 ) - 8042bcc: 701a strb r2, [r3, #0] -} - 8042bce: bf00 nop - 8042bd0: 46bd mov sp, r7 - 8042bd2: f85d 7b04 ldr.w r7, [sp], #4 - 8042bd6: 4770 bx lr - 8042bd8: 2400eb2d .word 0x2400eb2d - -08042bdc : + 8042c00: 4b05 ldr r3, [pc, #20] ; (8042c18 ) + 8042c02: 781b ldrb r3, [r3, #0] + 8042c04: f043 0310 orr.w r3, r3, #16 + 8042c08: b2da uxtb r2, r3 + 8042c0a: 4b03 ldr r3, [pc, #12] ; (8042c18 ) + 8042c0c: 701a strb r2, [r3, #0] +} + 8042c0e: bf00 nop + 8042c10: 46bd mov sp, r7 + 8042c12: f85d 7b04 ldr.w r7, [sp], #4 + 8042c16: 4770 bx lr + 8042c18: 2400eb2d .word 0x2400eb2d + +08042c1c : static err_t tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif); /* tcp_route: common code that returns a fixed bound netif or calls ip_route */ static struct netif * tcp_route(const struct tcp_pcb *pcb, const ip_addr_t *src, const ip_addr_t *dst) { - 8042bdc: b580 push {r7, lr} - 8042bde: b084 sub sp, #16 - 8042be0: af00 add r7, sp, #0 - 8042be2: 60f8 str r0, [r7, #12] - 8042be4: 60b9 str r1, [r7, #8] - 8042be6: 607a str r2, [r7, #4] + 8042c1c: b580 push {r7, lr} + 8042c1e: b084 sub sp, #16 + 8042c20: af00 add r7, sp, #0 + 8042c22: 60f8 str r0, [r7, #12] + 8042c24: 60b9 str r1, [r7, #8] + 8042c26: 607a str r2, [r7, #4] LWIP_UNUSED_ARG(src); /* in case IPv4-only and source-based routing is disabled */ if ((pcb != NULL) && (pcb->netif_idx != NETIF_NO_INDEX)) { - 8042be8: 68fb ldr r3, [r7, #12] - 8042bea: 2b00 cmp r3, #0 - 8042bec: d00a beq.n 8042c04 - 8042bee: 68fb ldr r3, [r7, #12] - 8042bf0: 7a1b ldrb r3, [r3, #8] - 8042bf2: 2b00 cmp r3, #0 - 8042bf4: d006 beq.n 8042c04 + 8042c28: 68fb ldr r3, [r7, #12] + 8042c2a: 2b00 cmp r3, #0 + 8042c2c: d00a beq.n 8042c44 + 8042c2e: 68fb ldr r3, [r7, #12] + 8042c30: 7a1b ldrb r3, [r3, #8] + 8042c32: 2b00 cmp r3, #0 + 8042c34: d006 beq.n 8042c44 return netif_get_by_index(pcb->netif_idx); - 8042bf6: 68fb ldr r3, [r7, #12] - 8042bf8: 7a1b ldrb r3, [r3, #8] - 8042bfa: 4618 mov r0, r3 - 8042bfc: f7fb fab8 bl 803e170 - 8042c00: 4603 mov r3, r0 - 8042c02: e003 b.n 8042c0c + 8042c36: 68fb ldr r3, [r7, #12] + 8042c38: 7a1b ldrb r3, [r3, #8] + 8042c3a: 4618 mov r0, r3 + 8042c3c: f7fb fab8 bl 803e1b0 + 8042c40: 4603 mov r3, r0 + 8042c42: e003 b.n 8042c4c } else { return ip_route(src, dst); - 8042c04: 6878 ldr r0, [r7, #4] - 8042c06: f003 fe8d bl 8046924 - 8042c0a: 4603 mov r3, r0 + 8042c44: 6878 ldr r0, [r7, #4] + 8042c46: f003 fe8d bl 8046964 + 8042c4a: 4603 mov r3, r0 } } - 8042c0c: 4618 mov r0, r3 - 8042c0e: 3710 adds r7, #16 - 8042c10: 46bd mov sp, r7 - 8042c12: bd80 pop {r7, pc} + 8042c4c: 4618 mov r0, r3 + 8042c4e: 3710 adds r7, #16 + 8042c50: 46bd mov sp, r7 + 8042c52: bd80 pop {r7, pc} -08042c14 : +08042c54 : * The TCP header is filled in except ackno and wnd. * p is freed on failure. */ static struct tcp_seg * tcp_create_segment(const struct tcp_pcb *pcb, struct pbuf *p, u8_t hdrflags, u32_t seqno, u8_t optflags) { - 8042c14: b590 push {r4, r7, lr} - 8042c16: b087 sub sp, #28 - 8042c18: af00 add r7, sp, #0 - 8042c1a: 60f8 str r0, [r7, #12] - 8042c1c: 60b9 str r1, [r7, #8] - 8042c1e: 603b str r3, [r7, #0] - 8042c20: 4613 mov r3, r2 - 8042c22: 71fb strb r3, [r7, #7] + 8042c54: b590 push {r4, r7, lr} + 8042c56: b087 sub sp, #28 + 8042c58: af00 add r7, sp, #0 + 8042c5a: 60f8 str r0, [r7, #12] + 8042c5c: 60b9 str r1, [r7, #8] + 8042c5e: 603b str r3, [r7, #0] + 8042c60: 4613 mov r3, r2 + 8042c62: 71fb strb r3, [r7, #7] struct tcp_seg *seg; u8_t optlen; LWIP_ASSERT("tcp_create_segment: invalid pcb", pcb != NULL); - 8042c24: 68fb ldr r3, [r7, #12] - 8042c26: 2b00 cmp r3, #0 - 8042c28: d105 bne.n 8042c36 - 8042c2a: 4b44 ldr r3, [pc, #272] ; (8042d3c ) - 8042c2c: 22a3 movs r2, #163 ; 0xa3 - 8042c2e: 4944 ldr r1, [pc, #272] ; (8042d40 ) - 8042c30: 4844 ldr r0, [pc, #272] ; (8042d44 ) - 8042c32: f005 f9b7 bl 8047fa4 + 8042c64: 68fb ldr r3, [r7, #12] + 8042c66: 2b00 cmp r3, #0 + 8042c68: d105 bne.n 8042c76 + 8042c6a: 4b44 ldr r3, [pc, #272] ; (8042d7c ) + 8042c6c: 22a3 movs r2, #163 ; 0xa3 + 8042c6e: 4944 ldr r1, [pc, #272] ; (8042d80 ) + 8042c70: 4844 ldr r0, [pc, #272] ; (8042d84 ) + 8042c72: f005 f9b7 bl 8047fe4 LWIP_ASSERT("tcp_create_segment: invalid pbuf", p != NULL); - 8042c36: 68bb ldr r3, [r7, #8] - 8042c38: 2b00 cmp r3, #0 - 8042c3a: d105 bne.n 8042c48 - 8042c3c: 4b3f ldr r3, [pc, #252] ; (8042d3c ) - 8042c3e: 22a4 movs r2, #164 ; 0xa4 - 8042c40: 4941 ldr r1, [pc, #260] ; (8042d48 ) - 8042c42: 4840 ldr r0, [pc, #256] ; (8042d44 ) - 8042c44: f005 f9ae bl 8047fa4 + 8042c76: 68bb ldr r3, [r7, #8] + 8042c78: 2b00 cmp r3, #0 + 8042c7a: d105 bne.n 8042c88 + 8042c7c: 4b3f ldr r3, [pc, #252] ; (8042d7c ) + 8042c7e: 22a4 movs r2, #164 ; 0xa4 + 8042c80: 4941 ldr r1, [pc, #260] ; (8042d88 ) + 8042c82: 4840 ldr r0, [pc, #256] ; (8042d84 ) + 8042c84: f005 f9ae bl 8047fe4 optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 8042c48: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 - 8042c4c: 009b lsls r3, r3, #2 - 8042c4e: b2db uxtb r3, r3 - 8042c50: f003 0304 and.w r3, r3, #4 - 8042c54: 75fb strb r3, [r7, #23] + 8042c88: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 8042c8c: 009b lsls r3, r3, #2 + 8042c8e: b2db uxtb r3, r3 + 8042c90: f003 0304 and.w r3, r3, #4 + 8042c94: 75fb strb r3, [r7, #23] if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) { - 8042c56: 2003 movs r0, #3 - 8042c58: f7fa fee8 bl 803da2c - 8042c5c: 6138 str r0, [r7, #16] - 8042c5e: 693b ldr r3, [r7, #16] - 8042c60: 2b00 cmp r3, #0 - 8042c62: d104 bne.n 8042c6e + 8042c96: 2003 movs r0, #3 + 8042c98: f7fa fee8 bl 803da6c + 8042c9c: 6138 str r0, [r7, #16] + 8042c9e: 693b ldr r3, [r7, #16] + 8042ca0: 2b00 cmp r3, #0 + 8042ca2: d104 bne.n 8042cae LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_create_segment: no memory.\n")); pbuf_free(p); - 8042c64: 68b8 ldr r0, [r7, #8] - 8042c66: f7fb fde3 bl 803e830 + 8042ca4: 68b8 ldr r0, [r7, #8] + 8042ca6: f7fb fde3 bl 803e870 return NULL; - 8042c6a: 2300 movs r3, #0 - 8042c6c: e061 b.n 8042d32 + 8042caa: 2300 movs r3, #0 + 8042cac: e061 b.n 8042d72 } seg->flags = optflags; - 8042c6e: 693b ldr r3, [r7, #16] - 8042c70: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 - 8042c74: 729a strb r2, [r3, #10] + 8042cae: 693b ldr r3, [r7, #16] + 8042cb0: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 + 8042cb4: 729a strb r2, [r3, #10] seg->next = NULL; - 8042c76: 693b ldr r3, [r7, #16] - 8042c78: 2200 movs r2, #0 - 8042c7a: 601a str r2, [r3, #0] + 8042cb6: 693b ldr r3, [r7, #16] + 8042cb8: 2200 movs r2, #0 + 8042cba: 601a str r2, [r3, #0] seg->p = p; - 8042c7c: 693b ldr r3, [r7, #16] - 8042c7e: 68ba ldr r2, [r7, #8] - 8042c80: 605a str r2, [r3, #4] + 8042cbc: 693b ldr r3, [r7, #16] + 8042cbe: 68ba ldr r2, [r7, #8] + 8042cc0: 605a str r2, [r3, #4] LWIP_ASSERT("p->tot_len >= optlen", p->tot_len >= optlen); - 8042c82: 68bb ldr r3, [r7, #8] - 8042c84: 891a ldrh r2, [r3, #8] - 8042c86: 7dfb ldrb r3, [r7, #23] - 8042c88: b29b uxth r3, r3 - 8042c8a: 429a cmp r2, r3 - 8042c8c: d205 bcs.n 8042c9a - 8042c8e: 4b2b ldr r3, [pc, #172] ; (8042d3c ) - 8042c90: 22b0 movs r2, #176 ; 0xb0 - 8042c92: 492e ldr r1, [pc, #184] ; (8042d4c ) - 8042c94: 482b ldr r0, [pc, #172] ; (8042d44 ) - 8042c96: f005 f985 bl 8047fa4 + 8042cc2: 68bb ldr r3, [r7, #8] + 8042cc4: 891a ldrh r2, [r3, #8] + 8042cc6: 7dfb ldrb r3, [r7, #23] + 8042cc8: b29b uxth r3, r3 + 8042cca: 429a cmp r2, r3 + 8042ccc: d205 bcs.n 8042cda + 8042cce: 4b2b ldr r3, [pc, #172] ; (8042d7c ) + 8042cd0: 22b0 movs r2, #176 ; 0xb0 + 8042cd2: 492e ldr r1, [pc, #184] ; (8042d8c ) + 8042cd4: 482b ldr r0, [pc, #172] ; (8042d84 ) + 8042cd6: f005 f985 bl 8047fe4 seg->len = p->tot_len - optlen; - 8042c9a: 68bb ldr r3, [r7, #8] - 8042c9c: 891a ldrh r2, [r3, #8] - 8042c9e: 7dfb ldrb r3, [r7, #23] - 8042ca0: b29b uxth r3, r3 - 8042ca2: 1ad3 subs r3, r2, r3 - 8042ca4: b29a uxth r2, r3 - 8042ca6: 693b ldr r3, [r7, #16] - 8042ca8: 811a strh r2, [r3, #8] + 8042cda: 68bb ldr r3, [r7, #8] + 8042cdc: 891a ldrh r2, [r3, #8] + 8042cde: 7dfb ldrb r3, [r7, #23] + 8042ce0: b29b uxth r3, r3 + 8042ce2: 1ad3 subs r3, r2, r3 + 8042ce4: b29a uxth r2, r3 + 8042ce6: 693b ldr r3, [r7, #16] + 8042ce8: 811a strh r2, [r3, #8] LWIP_ASSERT("invalid optflags passed: TF_SEG_DATA_CHECKSUMMED", (optflags & TF_SEG_DATA_CHECKSUMMED) == 0); #endif /* TCP_CHECKSUM_ON_COPY */ /* build TCP header */ if (pbuf_add_header(p, TCP_HLEN)) { - 8042caa: 2114 movs r1, #20 - 8042cac: 68b8 ldr r0, [r7, #8] - 8042cae: f7fb fd29 bl 803e704 - 8042cb2: 4603 mov r3, r0 - 8042cb4: 2b00 cmp r3, #0 - 8042cb6: d004 beq.n 8042cc2 + 8042cea: 2114 movs r1, #20 + 8042cec: 68b8 ldr r0, [r7, #8] + 8042cee: f7fb fd29 bl 803e744 + 8042cf2: 4603 mov r3, r0 + 8042cf4: 2b00 cmp r3, #0 + 8042cf6: d004 beq.n 8042d02 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_create_segment: no room for TCP header in pbuf.\n")); TCP_STATS_INC(tcp.err); tcp_seg_free(seg); - 8042cb8: 6938 ldr r0, [r7, #16] - 8042cba: f7fd f8ce bl 803fe5a + 8042cf8: 6938 ldr r0, [r7, #16] + 8042cfa: f7fd f8ce bl 803fe9a return NULL; - 8042cbe: 2300 movs r3, #0 - 8042cc0: e037 b.n 8042d32 + 8042cfe: 2300 movs r3, #0 + 8042d00: e037 b.n 8042d72 } seg->tcphdr = (struct tcp_hdr *)seg->p->payload; - 8042cc2: 693b ldr r3, [r7, #16] - 8042cc4: 685b ldr r3, [r3, #4] - 8042cc6: 685a ldr r2, [r3, #4] - 8042cc8: 693b ldr r3, [r7, #16] - 8042cca: 60da str r2, [r3, #12] + 8042d02: 693b ldr r3, [r7, #16] + 8042d04: 685b ldr r3, [r3, #4] + 8042d06: 685a ldr r2, [r3, #4] + 8042d08: 693b ldr r3, [r7, #16] + 8042d0a: 60da str r2, [r3, #12] seg->tcphdr->src = lwip_htons(pcb->local_port); - 8042ccc: 68fb ldr r3, [r7, #12] - 8042cce: 8ada ldrh r2, [r3, #22] - 8042cd0: 693b ldr r3, [r7, #16] - 8042cd2: 68dc ldr r4, [r3, #12] - 8042cd4: 4610 mov r0, r2 - 8042cd6: f7fa f979 bl 803cfcc - 8042cda: 4603 mov r3, r0 - 8042cdc: 8023 strh r3, [r4, #0] + 8042d0c: 68fb ldr r3, [r7, #12] + 8042d0e: 8ada ldrh r2, [r3, #22] + 8042d10: 693b ldr r3, [r7, #16] + 8042d12: 68dc ldr r4, [r3, #12] + 8042d14: 4610 mov r0, r2 + 8042d16: f7fa f979 bl 803d00c + 8042d1a: 4603 mov r3, r0 + 8042d1c: 8023 strh r3, [r4, #0] seg->tcphdr->dest = lwip_htons(pcb->remote_port); - 8042cde: 68fb ldr r3, [r7, #12] - 8042ce0: 8b1a ldrh r2, [r3, #24] - 8042ce2: 693b ldr r3, [r7, #16] - 8042ce4: 68dc ldr r4, [r3, #12] - 8042ce6: 4610 mov r0, r2 - 8042ce8: f7fa f970 bl 803cfcc - 8042cec: 4603 mov r3, r0 - 8042cee: 8063 strh r3, [r4, #2] + 8042d1e: 68fb ldr r3, [r7, #12] + 8042d20: 8b1a ldrh r2, [r3, #24] + 8042d22: 693b ldr r3, [r7, #16] + 8042d24: 68dc ldr r4, [r3, #12] + 8042d26: 4610 mov r0, r2 + 8042d28: f7fa f970 bl 803d00c + 8042d2c: 4603 mov r3, r0 + 8042d2e: 8063 strh r3, [r4, #2] seg->tcphdr->seqno = lwip_htonl(seqno); - 8042cf0: 693b ldr r3, [r7, #16] - 8042cf2: 68dc ldr r4, [r3, #12] - 8042cf4: 6838 ldr r0, [r7, #0] - 8042cf6: f7fa f97e bl 803cff6 - 8042cfa: 4603 mov r3, r0 - 8042cfc: 6063 str r3, [r4, #4] + 8042d30: 693b ldr r3, [r7, #16] + 8042d32: 68dc ldr r4, [r3, #12] + 8042d34: 6838 ldr r0, [r7, #0] + 8042d36: f7fa f97e bl 803d036 + 8042d3a: 4603 mov r3, r0 + 8042d3c: 6063 str r3, [r4, #4] /* ackno is set in tcp_output */ TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), hdrflags); - 8042cfe: 7dfb ldrb r3, [r7, #23] - 8042d00: 089b lsrs r3, r3, #2 - 8042d02: b2db uxtb r3, r3 - 8042d04: b29b uxth r3, r3 - 8042d06: 3305 adds r3, #5 - 8042d08: b29b uxth r3, r3 - 8042d0a: 031b lsls r3, r3, #12 - 8042d0c: b29a uxth r2, r3 - 8042d0e: 79fb ldrb r3, [r7, #7] - 8042d10: b29b uxth r3, r3 - 8042d12: 4313 orrs r3, r2 - 8042d14: b29a uxth r2, r3 - 8042d16: 693b ldr r3, [r7, #16] - 8042d18: 68dc ldr r4, [r3, #12] - 8042d1a: 4610 mov r0, r2 - 8042d1c: f7fa f956 bl 803cfcc - 8042d20: 4603 mov r3, r0 - 8042d22: 81a3 strh r3, [r4, #12] + 8042d3e: 7dfb ldrb r3, [r7, #23] + 8042d40: 089b lsrs r3, r3, #2 + 8042d42: b2db uxtb r3, r3 + 8042d44: b29b uxth r3, r3 + 8042d46: 3305 adds r3, #5 + 8042d48: b29b uxth r3, r3 + 8042d4a: 031b lsls r3, r3, #12 + 8042d4c: b29a uxth r2, r3 + 8042d4e: 79fb ldrb r3, [r7, #7] + 8042d50: b29b uxth r3, r3 + 8042d52: 4313 orrs r3, r2 + 8042d54: b29a uxth r2, r3 + 8042d56: 693b ldr r3, [r7, #16] + 8042d58: 68dc ldr r4, [r3, #12] + 8042d5a: 4610 mov r0, r2 + 8042d5c: f7fa f956 bl 803d00c + 8042d60: 4603 mov r3, r0 + 8042d62: 81a3 strh r3, [r4, #12] /* wnd and chksum are set in tcp_output */ seg->tcphdr->urgp = 0; - 8042d24: 693b ldr r3, [r7, #16] - 8042d26: 68db ldr r3, [r3, #12] - 8042d28: 2200 movs r2, #0 - 8042d2a: 749a strb r2, [r3, #18] - 8042d2c: 2200 movs r2, #0 - 8042d2e: 74da strb r2, [r3, #19] + 8042d64: 693b ldr r3, [r7, #16] + 8042d66: 68db ldr r3, [r3, #12] + 8042d68: 2200 movs r2, #0 + 8042d6a: 749a strb r2, [r3, #18] + 8042d6c: 2200 movs r2, #0 + 8042d6e: 74da strb r2, [r3, #19] return seg; - 8042d30: 693b ldr r3, [r7, #16] -} - 8042d32: 4618 mov r0, r3 - 8042d34: 371c adds r7, #28 - 8042d36: 46bd mov sp, r7 - 8042d38: bd90 pop {r4, r7, pc} - 8042d3a: bf00 nop - 8042d3c: 0804b818 .word 0x0804b818 - 8042d40: 0804b84c .word 0x0804b84c - 8042d44: 0804b86c .word 0x0804b86c - 8042d48: 0804b894 .word 0x0804b894 - 8042d4c: 0804b8b8 .word 0x0804b8b8 - -08042d50 : + 8042d70: 693b ldr r3, [r7, #16] +} + 8042d72: 4618 mov r0, r3 + 8042d74: 371c adds r7, #28 + 8042d76: 46bd mov sp, r7 + 8042d78: bd90 pop {r4, r7, pc} + 8042d7a: bf00 nop + 8042d7c: 0804b858 .word 0x0804b858 + 8042d80: 0804b88c .word 0x0804b88c + 8042d84: 0804b8ac .word 0x0804b8ac + 8042d88: 0804b8d4 .word 0x0804b8d4 + 8042d8c: 0804b8f8 .word 0x0804b8f8 + +08042d90 : #if TCP_OVERSIZE static struct pbuf * tcp_pbuf_prealloc(pbuf_layer layer, u16_t length, u16_t max_length, u16_t *oversize, const struct tcp_pcb *pcb, u8_t apiflags, u8_t first_seg) { - 8042d50: b580 push {r7, lr} - 8042d52: b086 sub sp, #24 - 8042d54: af00 add r7, sp, #0 - 8042d56: 607b str r3, [r7, #4] - 8042d58: 4603 mov r3, r0 - 8042d5a: 73fb strb r3, [r7, #15] - 8042d5c: 460b mov r3, r1 - 8042d5e: 81bb strh r3, [r7, #12] - 8042d60: 4613 mov r3, r2 - 8042d62: 817b strh r3, [r7, #10] + 8042d90: b580 push {r7, lr} + 8042d92: b086 sub sp, #24 + 8042d94: af00 add r7, sp, #0 + 8042d96: 607b str r3, [r7, #4] + 8042d98: 4603 mov r3, r0 + 8042d9a: 73fb strb r3, [r7, #15] + 8042d9c: 460b mov r3, r1 + 8042d9e: 81bb strh r3, [r7, #12] + 8042da0: 4613 mov r3, r2 + 8042da2: 817b strh r3, [r7, #10] struct pbuf *p; u16_t alloc = length; - 8042d64: 89bb ldrh r3, [r7, #12] - 8042d66: 82fb strh r3, [r7, #22] + 8042da4: 89bb ldrh r3, [r7, #12] + 8042da6: 82fb strh r3, [r7, #22] LWIP_ASSERT("tcp_pbuf_prealloc: invalid oversize", oversize != NULL); - 8042d68: 687b ldr r3, [r7, #4] - 8042d6a: 2b00 cmp r3, #0 - 8042d6c: d105 bne.n 8042d7a - 8042d6e: 4b30 ldr r3, [pc, #192] ; (8042e30 ) - 8042d70: 22e8 movs r2, #232 ; 0xe8 - 8042d72: 4930 ldr r1, [pc, #192] ; (8042e34 ) - 8042d74: 4830 ldr r0, [pc, #192] ; (8042e38 ) - 8042d76: f005 f915 bl 8047fa4 + 8042da8: 687b ldr r3, [r7, #4] + 8042daa: 2b00 cmp r3, #0 + 8042dac: d105 bne.n 8042dba + 8042dae: 4b30 ldr r3, [pc, #192] ; (8042e70 ) + 8042db0: 22e8 movs r2, #232 ; 0xe8 + 8042db2: 4930 ldr r1, [pc, #192] ; (8042e74 ) + 8042db4: 4830 ldr r0, [pc, #192] ; (8042e78 ) + 8042db6: f005 f915 bl 8047fe4 LWIP_ASSERT("tcp_pbuf_prealloc: invalid pcb", pcb != NULL); - 8042d7a: 6a3b ldr r3, [r7, #32] - 8042d7c: 2b00 cmp r3, #0 - 8042d7e: d105 bne.n 8042d8c - 8042d80: 4b2b ldr r3, [pc, #172] ; (8042e30 ) - 8042d82: 22e9 movs r2, #233 ; 0xe9 - 8042d84: 492d ldr r1, [pc, #180] ; (8042e3c ) - 8042d86: 482c ldr r0, [pc, #176] ; (8042e38 ) - 8042d88: f005 f90c bl 8047fa4 + 8042dba: 6a3b ldr r3, [r7, #32] + 8042dbc: 2b00 cmp r3, #0 + 8042dbe: d105 bne.n 8042dcc + 8042dc0: 4b2b ldr r3, [pc, #172] ; (8042e70 ) + 8042dc2: 22e9 movs r2, #233 ; 0xe9 + 8042dc4: 492d ldr r1, [pc, #180] ; (8042e7c ) + 8042dc6: 482c ldr r0, [pc, #176] ; (8042e78 ) + 8042dc8: f005 f90c bl 8047fe4 LWIP_UNUSED_ARG(pcb); LWIP_UNUSED_ARG(apiflags); LWIP_UNUSED_ARG(first_seg); alloc = max_length; #else /* LWIP_NETIF_TX_SINGLE_PBUF */ if (length < max_length) { - 8042d8c: 89ba ldrh r2, [r7, #12] - 8042d8e: 897b ldrh r3, [r7, #10] - 8042d90: 429a cmp r2, r3 - 8042d92: d221 bcs.n 8042dd8 + 8042dcc: 89ba ldrh r2, [r7, #12] + 8042dce: 897b ldrh r3, [r7, #10] + 8042dd0: 429a cmp r2, r3 + 8042dd2: d221 bcs.n 8042e18 * * Did the user set TCP_WRITE_FLAG_MORE? * * Will the Nagle algorithm defer transmission of this segment? */ if ((apiflags & TCP_WRITE_FLAG_MORE) || - 8042d94: f897 3024 ldrb.w r3, [r7, #36] ; 0x24 - 8042d98: f003 0302 and.w r3, r3, #2 - 8042d9c: 2b00 cmp r3, #0 - 8042d9e: d111 bne.n 8042dc4 + 8042dd4: f897 3024 ldrb.w r3, [r7, #36] ; 0x24 + 8042dd8: f003 0302 and.w r3, r3, #2 + 8042ddc: 2b00 cmp r3, #0 + 8042dde: d111 bne.n 8042e04 (!(pcb->flags & TF_NODELAY) && - 8042da0: 6a3b ldr r3, [r7, #32] - 8042da2: 8b5b ldrh r3, [r3, #26] - 8042da4: f003 0340 and.w r3, r3, #64 ; 0x40 + 8042de0: 6a3b ldr r3, [r7, #32] + 8042de2: 8b5b ldrh r3, [r3, #26] + 8042de4: f003 0340 and.w r3, r3, #64 ; 0x40 if ((apiflags & TCP_WRITE_FLAG_MORE) || - 8042da8: 2b00 cmp r3, #0 - 8042daa: d115 bne.n 8042dd8 + 8042de8: 2b00 cmp r3, #0 + 8042dea: d115 bne.n 8042e18 (!(pcb->flags & TF_NODELAY) && - 8042dac: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 - 8042db0: 2b00 cmp r3, #0 - 8042db2: d007 beq.n 8042dc4 + 8042dec: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 8042df0: 2b00 cmp r3, #0 + 8042df2: d007 beq.n 8042e04 (!first_seg || pcb->unsent != NULL || - 8042db4: 6a3b ldr r3, [r7, #32] - 8042db6: 6edb ldr r3, [r3, #108] ; 0x6c + 8042df4: 6a3b ldr r3, [r7, #32] + 8042df6: 6edb ldr r3, [r3, #108] ; 0x6c (!first_seg || - 8042db8: 2b00 cmp r3, #0 - 8042dba: d103 bne.n 8042dc4 + 8042df8: 2b00 cmp r3, #0 + 8042dfa: d103 bne.n 8042e04 pcb->unacked != NULL))) { - 8042dbc: 6a3b ldr r3, [r7, #32] - 8042dbe: 6f1b ldr r3, [r3, #112] ; 0x70 + 8042dfc: 6a3b ldr r3, [r7, #32] + 8042dfe: 6f1b ldr r3, [r3, #112] ; 0x70 pcb->unsent != NULL || - 8042dc0: 2b00 cmp r3, #0 - 8042dc2: d009 beq.n 8042dd8 + 8042e00: 2b00 cmp r3, #0 + 8042e02: d009 beq.n 8042e18 alloc = LWIP_MIN(max_length, LWIP_MEM_ALIGN_SIZE(TCP_OVERSIZE_CALC_LENGTH(length))); - 8042dc4: 89bb ldrh r3, [r7, #12] - 8042dc6: f203 231b addw r3, r3, #539 ; 0x21b - 8042dca: f023 0203 bic.w r2, r3, #3 - 8042dce: 897b ldrh r3, [r7, #10] - 8042dd0: 4293 cmp r3, r2 - 8042dd2: bf28 it cs - 8042dd4: 4613 movcs r3, r2 - 8042dd6: 82fb strh r3, [r7, #22] + 8042e04: 89bb ldrh r3, [r7, #12] + 8042e06: f203 231b addw r3, r3, #539 ; 0x21b + 8042e0a: f023 0203 bic.w r2, r3, #3 + 8042e0e: 897b ldrh r3, [r7, #10] + 8042e10: 4293 cmp r3, r2 + 8042e12: bf28 it cs + 8042e14: 4613 movcs r3, r2 + 8042e16: 82fb strh r3, [r7, #22] } } #endif /* LWIP_NETIF_TX_SINGLE_PBUF */ p = pbuf_alloc(layer, alloc, PBUF_RAM); - 8042dd8: 8af9 ldrh r1, [r7, #22] - 8042dda: 7bfb ldrb r3, [r7, #15] - 8042ddc: f44f 7220 mov.w r2, #640 ; 0x280 - 8042de0: 4618 mov r0, r3 - 8042de2: f7fb fa41 bl 803e268 - 8042de6: 6138 str r0, [r7, #16] + 8042e18: 8af9 ldrh r1, [r7, #22] + 8042e1a: 7bfb ldrb r3, [r7, #15] + 8042e1c: f44f 7220 mov.w r2, #640 ; 0x280 + 8042e20: 4618 mov r0, r3 + 8042e22: f7fb fa41 bl 803e2a8 + 8042e26: 6138 str r0, [r7, #16] if (p == NULL) { - 8042de8: 693b ldr r3, [r7, #16] - 8042dea: 2b00 cmp r3, #0 - 8042dec: d101 bne.n 8042df2 + 8042e28: 693b ldr r3, [r7, #16] + 8042e2a: 2b00 cmp r3, #0 + 8042e2c: d101 bne.n 8042e32 return NULL; - 8042dee: 2300 movs r3, #0 - 8042df0: e019 b.n 8042e26 + 8042e2e: 2300 movs r3, #0 + 8042e30: e019 b.n 8042e66 } LWIP_ASSERT("need unchained pbuf", p->next == NULL); - 8042df2: 693b ldr r3, [r7, #16] - 8042df4: 681b ldr r3, [r3, #0] - 8042df6: 2b00 cmp r3, #0 - 8042df8: d006 beq.n 8042e08 - 8042dfa: 4b0d ldr r3, [pc, #52] ; (8042e30 ) - 8042dfc: f240 120b movw r2, #267 ; 0x10b - 8042e00: 490f ldr r1, [pc, #60] ; (8042e40 ) - 8042e02: 480d ldr r0, [pc, #52] ; (8042e38 ) - 8042e04: f005 f8ce bl 8047fa4 + 8042e32: 693b ldr r3, [r7, #16] + 8042e34: 681b ldr r3, [r3, #0] + 8042e36: 2b00 cmp r3, #0 + 8042e38: d006 beq.n 8042e48 + 8042e3a: 4b0d ldr r3, [pc, #52] ; (8042e70 ) + 8042e3c: f240 120b movw r2, #267 ; 0x10b + 8042e40: 490f ldr r1, [pc, #60] ; (8042e80 ) + 8042e42: 480d ldr r0, [pc, #52] ; (8042e78 ) + 8042e44: f005 f8ce bl 8047fe4 *oversize = p->len - length; - 8042e08: 693b ldr r3, [r7, #16] - 8042e0a: 895a ldrh r2, [r3, #10] - 8042e0c: 89bb ldrh r3, [r7, #12] - 8042e0e: 1ad3 subs r3, r2, r3 - 8042e10: b29a uxth r2, r3 - 8042e12: 687b ldr r3, [r7, #4] - 8042e14: 801a strh r2, [r3, #0] + 8042e48: 693b ldr r3, [r7, #16] + 8042e4a: 895a ldrh r2, [r3, #10] + 8042e4c: 89bb ldrh r3, [r7, #12] + 8042e4e: 1ad3 subs r3, r2, r3 + 8042e50: b29a uxth r2, r3 + 8042e52: 687b ldr r3, [r7, #4] + 8042e54: 801a strh r2, [r3, #0] /* trim p->len to the currently used size */ p->len = p->tot_len = length; - 8042e16: 693b ldr r3, [r7, #16] - 8042e18: 89ba ldrh r2, [r7, #12] - 8042e1a: 811a strh r2, [r3, #8] - 8042e1c: 693b ldr r3, [r7, #16] - 8042e1e: 891a ldrh r2, [r3, #8] - 8042e20: 693b ldr r3, [r7, #16] - 8042e22: 815a strh r2, [r3, #10] + 8042e56: 693b ldr r3, [r7, #16] + 8042e58: 89ba ldrh r2, [r7, #12] + 8042e5a: 811a strh r2, [r3, #8] + 8042e5c: 693b ldr r3, [r7, #16] + 8042e5e: 891a ldrh r2, [r3, #8] + 8042e60: 693b ldr r3, [r7, #16] + 8042e62: 815a strh r2, [r3, #10] return p; - 8042e24: 693b ldr r3, [r7, #16] -} - 8042e26: 4618 mov r0, r3 - 8042e28: 3718 adds r7, #24 - 8042e2a: 46bd mov sp, r7 - 8042e2c: bd80 pop {r7, pc} - 8042e2e: bf00 nop - 8042e30: 0804b818 .word 0x0804b818 - 8042e34: 0804b8d0 .word 0x0804b8d0 - 8042e38: 0804b86c .word 0x0804b86c - 8042e3c: 0804b8f4 .word 0x0804b8f4 - 8042e40: 0804b914 .word 0x0804b914 - -08042e44 : + 8042e64: 693b ldr r3, [r7, #16] +} + 8042e66: 4618 mov r0, r3 + 8042e68: 3718 adds r7, #24 + 8042e6a: 46bd mov sp, r7 + 8042e6c: bd80 pop {r7, pc} + 8042e6e: bf00 nop + 8042e70: 0804b858 .word 0x0804b858 + 8042e74: 0804b910 .word 0x0804b910 + 8042e78: 0804b8ac .word 0x0804b8ac + 8042e7c: 0804b934 .word 0x0804b934 + 8042e80: 0804b954 .word 0x0804b954 + +08042e84 : * @param len length of data to send (checked agains snd_buf) * @return ERR_OK if tcp_write is allowed to proceed, another err_t otherwise */ static err_t tcp_write_checks(struct tcp_pcb *pcb, u16_t len) { - 8042e44: b580 push {r7, lr} - 8042e46: b082 sub sp, #8 - 8042e48: af00 add r7, sp, #0 - 8042e4a: 6078 str r0, [r7, #4] - 8042e4c: 460b mov r3, r1 - 8042e4e: 807b strh r3, [r7, #2] + 8042e84: b580 push {r7, lr} + 8042e86: b082 sub sp, #8 + 8042e88: af00 add r7, sp, #0 + 8042e8a: 6078 str r0, [r7, #4] + 8042e8c: 460b mov r3, r1 + 8042e8e: 807b strh r3, [r7, #2] LWIP_ASSERT("tcp_write_checks: invalid pcb", pcb != NULL); - 8042e50: 687b ldr r3, [r7, #4] - 8042e52: 2b00 cmp r3, #0 - 8042e54: d106 bne.n 8042e64 - 8042e56: 4b33 ldr r3, [pc, #204] ; (8042f24 ) - 8042e58: f240 1233 movw r2, #307 ; 0x133 - 8042e5c: 4932 ldr r1, [pc, #200] ; (8042f28 ) - 8042e5e: 4833 ldr r0, [pc, #204] ; (8042f2c ) - 8042e60: f005 f8a0 bl 8047fa4 + 8042e90: 687b ldr r3, [r7, #4] + 8042e92: 2b00 cmp r3, #0 + 8042e94: d106 bne.n 8042ea4 + 8042e96: 4b33 ldr r3, [pc, #204] ; (8042f64 ) + 8042e98: f240 1233 movw r2, #307 ; 0x133 + 8042e9c: 4932 ldr r1, [pc, #200] ; (8042f68 ) + 8042e9e: 4833 ldr r0, [pc, #204] ; (8042f6c ) + 8042ea0: f005 f8a0 bl 8047fe4 /* connection is in invalid state for data transmission? */ if ((pcb->state != ESTABLISHED) && - 8042e64: 687b ldr r3, [r7, #4] - 8042e66: 7d1b ldrb r3, [r3, #20] - 8042e68: 2b04 cmp r3, #4 - 8042e6a: d00e beq.n 8042e8a + 8042ea4: 687b ldr r3, [r7, #4] + 8042ea6: 7d1b ldrb r3, [r3, #20] + 8042ea8: 2b04 cmp r3, #4 + 8042eaa: d00e beq.n 8042eca (pcb->state != CLOSE_WAIT) && - 8042e6c: 687b ldr r3, [r7, #4] - 8042e6e: 7d1b ldrb r3, [r3, #20] + 8042eac: 687b ldr r3, [r7, #4] + 8042eae: 7d1b ldrb r3, [r3, #20] if ((pcb->state != ESTABLISHED) && - 8042e70: 2b07 cmp r3, #7 - 8042e72: d00a beq.n 8042e8a + 8042eb0: 2b07 cmp r3, #7 + 8042eb2: d00a beq.n 8042eca (pcb->state != SYN_SENT) && - 8042e74: 687b ldr r3, [r7, #4] - 8042e76: 7d1b ldrb r3, [r3, #20] + 8042eb4: 687b ldr r3, [r7, #4] + 8042eb6: 7d1b ldrb r3, [r3, #20] (pcb->state != CLOSE_WAIT) && - 8042e78: 2b02 cmp r3, #2 - 8042e7a: d006 beq.n 8042e8a + 8042eb8: 2b02 cmp r3, #2 + 8042eba: d006 beq.n 8042eca (pcb->state != SYN_RCVD)) { - 8042e7c: 687b ldr r3, [r7, #4] - 8042e7e: 7d1b ldrb r3, [r3, #20] + 8042ebc: 687b ldr r3, [r7, #4] + 8042ebe: 7d1b ldrb r3, [r3, #20] (pcb->state != SYN_SENT) && - 8042e80: 2b03 cmp r3, #3 - 8042e82: d002 beq.n 8042e8a + 8042ec0: 2b03 cmp r3, #3 + 8042ec2: d002 beq.n 8042eca LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n")); return ERR_CONN; - 8042e84: f06f 030a mvn.w r3, #10 - 8042e88: e048 b.n 8042f1c + 8042ec4: f06f 030a mvn.w r3, #10 + 8042ec8: e048 b.n 8042f5c } else if (len == 0) { - 8042e8a: 887b ldrh r3, [r7, #2] - 8042e8c: 2b00 cmp r3, #0 - 8042e8e: d101 bne.n 8042e94 + 8042eca: 887b ldrh r3, [r7, #2] + 8042ecc: 2b00 cmp r3, #0 + 8042ece: d101 bne.n 8042ed4 return ERR_OK; - 8042e90: 2300 movs r3, #0 - 8042e92: e043 b.n 8042f1c + 8042ed0: 2300 movs r3, #0 + 8042ed2: e043 b.n 8042f5c } /* fail on too much data */ if (len > pcb->snd_buf) { - 8042e94: 687b ldr r3, [r7, #4] - 8042e96: f8b3 3064 ldrh.w r3, [r3, #100] ; 0x64 - 8042e9a: 887a ldrh r2, [r7, #2] - 8042e9c: 429a cmp r2, r3 - 8042e9e: d909 bls.n 8042eb4 + 8042ed4: 687b ldr r3, [r7, #4] + 8042ed6: f8b3 3064 ldrh.w r3, [r3, #100] ; 0x64 + 8042eda: 887a ldrh r2, [r7, #2] + 8042edc: 429a cmp r2, r3 + 8042ede: d909 bls.n 8042ef4 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("tcp_write: too much data (len=%"U16_F" > snd_buf=%"TCPWNDSIZE_F")\n", len, pcb->snd_buf)); tcp_set_flags(pcb, TF_NAGLEMEMERR); - 8042ea0: 687b ldr r3, [r7, #4] - 8042ea2: 8b5b ldrh r3, [r3, #26] - 8042ea4: f043 0380 orr.w r3, r3, #128 ; 0x80 - 8042ea8: b29a uxth r2, r3 - 8042eaa: 687b ldr r3, [r7, #4] - 8042eac: 835a strh r2, [r3, #26] + 8042ee0: 687b ldr r3, [r7, #4] + 8042ee2: 8b5b ldrh r3, [r3, #26] + 8042ee4: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8042ee8: b29a uxth r2, r3 + 8042eea: 687b ldr r3, [r7, #4] + 8042eec: 835a strh r2, [r3, #26] return ERR_MEM; - 8042eae: f04f 33ff mov.w r3, #4294967295 - 8042eb2: e033 b.n 8042f1c + 8042eee: f04f 33ff mov.w r3, #4294967295 + 8042ef2: e033 b.n 8042f5c LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_write: queuelen: %"TCPWNDSIZE_F"\n", (tcpwnd_size_t)pcb->snd_queuelen)); /* If total number of pbufs on the unsent/unacked queues exceeds the * configured maximum, return an error */ /* check for configured max queuelen and possible overflow */ if (pcb->snd_queuelen >= LWIP_MIN(TCP_SND_QUEUELEN, (TCP_SNDQUEUELEN_OVERFLOW + 1))) { - 8042eb4: 687b ldr r3, [r7, #4] - 8042eb6: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8042eba: 2b08 cmp r3, #8 - 8042ebc: d909 bls.n 8042ed2 + 8042ef4: 687b ldr r3, [r7, #4] + 8042ef6: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8042efa: 2b08 cmp r3, #8 + 8042efc: d909 bls.n 8042f12 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("tcp_write: too long queue %"U16_F" (max %"U16_F")\n", pcb->snd_queuelen, (u16_t)TCP_SND_QUEUELEN)); TCP_STATS_INC(tcp.memerr); tcp_set_flags(pcb, TF_NAGLEMEMERR); - 8042ebe: 687b ldr r3, [r7, #4] - 8042ec0: 8b5b ldrh r3, [r3, #26] - 8042ec2: f043 0380 orr.w r3, r3, #128 ; 0x80 - 8042ec6: b29a uxth r2, r3 - 8042ec8: 687b ldr r3, [r7, #4] - 8042eca: 835a strh r2, [r3, #26] + 8042efe: 687b ldr r3, [r7, #4] + 8042f00: 8b5b ldrh r3, [r3, #26] + 8042f02: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8042f06: b29a uxth r2, r3 + 8042f08: 687b ldr r3, [r7, #4] + 8042f0a: 835a strh r2, [r3, #26] return ERR_MEM; - 8042ecc: f04f 33ff mov.w r3, #4294967295 - 8042ed0: e024 b.n 8042f1c + 8042f0c: f04f 33ff mov.w r3, #4294967295 + 8042f10: e024 b.n 8042f5c } if (pcb->snd_queuelen != 0) { - 8042ed2: 687b ldr r3, [r7, #4] - 8042ed4: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8042ed8: 2b00 cmp r3, #0 - 8042eda: d00f beq.n 8042efc + 8042f12: 687b ldr r3, [r7, #4] + 8042f14: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8042f18: 2b00 cmp r3, #0 + 8042f1a: d00f beq.n 8042f3c LWIP_ASSERT("tcp_write: pbufs on queue => at least one queue non-empty", - 8042edc: 687b ldr r3, [r7, #4] - 8042ede: 6f1b ldr r3, [r3, #112] ; 0x70 - 8042ee0: 2b00 cmp r3, #0 - 8042ee2: d11a bne.n 8042f1a - 8042ee4: 687b ldr r3, [r7, #4] - 8042ee6: 6edb ldr r3, [r3, #108] ; 0x6c - 8042ee8: 2b00 cmp r3, #0 - 8042eea: d116 bne.n 8042f1a - 8042eec: 4b0d ldr r3, [pc, #52] ; (8042f24 ) - 8042eee: f240 1255 movw r2, #341 ; 0x155 - 8042ef2: 490f ldr r1, [pc, #60] ; (8042f30 ) - 8042ef4: 480d ldr r0, [pc, #52] ; (8042f2c ) - 8042ef6: f005 f855 bl 8047fa4 - 8042efa: e00e b.n 8042f1a + 8042f1c: 687b ldr r3, [r7, #4] + 8042f1e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8042f20: 2b00 cmp r3, #0 + 8042f22: d11a bne.n 8042f5a + 8042f24: 687b ldr r3, [r7, #4] + 8042f26: 6edb ldr r3, [r3, #108] ; 0x6c + 8042f28: 2b00 cmp r3, #0 + 8042f2a: d116 bne.n 8042f5a + 8042f2c: 4b0d ldr r3, [pc, #52] ; (8042f64 ) + 8042f2e: f240 1255 movw r2, #341 ; 0x155 + 8042f32: 490f ldr r1, [pc, #60] ; (8042f70 ) + 8042f34: 480d ldr r0, [pc, #52] ; (8042f6c ) + 8042f36: f005 f855 bl 8047fe4 + 8042f3a: e00e b.n 8042f5a pcb->unacked != NULL || pcb->unsent != NULL); } else { LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty", - 8042efc: 687b ldr r3, [r7, #4] - 8042efe: 6f1b ldr r3, [r3, #112] ; 0x70 - 8042f00: 2b00 cmp r3, #0 - 8042f02: d103 bne.n 8042f0c - 8042f04: 687b ldr r3, [r7, #4] - 8042f06: 6edb ldr r3, [r3, #108] ; 0x6c - 8042f08: 2b00 cmp r3, #0 - 8042f0a: d006 beq.n 8042f1a - 8042f0c: 4b05 ldr r3, [pc, #20] ; (8042f24 ) - 8042f0e: f44f 72ac mov.w r2, #344 ; 0x158 - 8042f12: 4908 ldr r1, [pc, #32] ; (8042f34 ) - 8042f14: 4805 ldr r0, [pc, #20] ; (8042f2c ) - 8042f16: f005 f845 bl 8047fa4 + 8042f3c: 687b ldr r3, [r7, #4] + 8042f3e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8042f40: 2b00 cmp r3, #0 + 8042f42: d103 bne.n 8042f4c + 8042f44: 687b ldr r3, [r7, #4] + 8042f46: 6edb ldr r3, [r3, #108] ; 0x6c + 8042f48: 2b00 cmp r3, #0 + 8042f4a: d006 beq.n 8042f5a + 8042f4c: 4b05 ldr r3, [pc, #20] ; (8042f64 ) + 8042f4e: f44f 72ac mov.w r2, #344 ; 0x158 + 8042f52: 4908 ldr r1, [pc, #32] ; (8042f74 ) + 8042f54: 4805 ldr r0, [pc, #20] ; (8042f6c ) + 8042f56: f005 f845 bl 8047fe4 pcb->unacked == NULL && pcb->unsent == NULL); } return ERR_OK; - 8042f1a: 2300 movs r3, #0 -} - 8042f1c: 4618 mov r0, r3 - 8042f1e: 3708 adds r7, #8 - 8042f20: 46bd mov sp, r7 - 8042f22: bd80 pop {r7, pc} - 8042f24: 0804b818 .word 0x0804b818 - 8042f28: 0804b928 .word 0x0804b928 - 8042f2c: 0804b86c .word 0x0804b86c - 8042f30: 0804b948 .word 0x0804b948 - 8042f34: 0804b984 .word 0x0804b984 - -08042f38 : + 8042f5a: 2300 movs r3, #0 +} + 8042f5c: 4618 mov r0, r3 + 8042f5e: 3708 adds r7, #8 + 8042f60: 46bd mov sp, r7 + 8042f62: bd80 pop {r7, pc} + 8042f64: 0804b858 .word 0x0804b858 + 8042f68: 0804b968 .word 0x0804b968 + 8042f6c: 0804b8ac .word 0x0804b8ac + 8042f70: 0804b988 .word 0x0804b988 + 8042f74: 0804b9c4 .word 0x0804b9c4 + +08042f78 : * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will not be set on last segment sent, * @return ERR_OK if enqueued, another err_t on error */ err_t tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags) { - 8042f38: b590 push {r4, r7, lr} - 8042f3a: b09b sub sp, #108 ; 0x6c - 8042f3c: af04 add r7, sp, #16 - 8042f3e: 60f8 str r0, [r7, #12] - 8042f40: 60b9 str r1, [r7, #8] - 8042f42: 4611 mov r1, r2 - 8042f44: 461a mov r2, r3 - 8042f46: 460b mov r3, r1 - 8042f48: 80fb strh r3, [r7, #6] - 8042f4a: 4613 mov r3, r2 - 8042f4c: 717b strb r3, [r7, #5] + 8042f78: b590 push {r4, r7, lr} + 8042f7a: b09b sub sp, #108 ; 0x6c + 8042f7c: af04 add r7, sp, #16 + 8042f7e: 60f8 str r0, [r7, #12] + 8042f80: 60b9 str r1, [r7, #8] + 8042f82: 4611 mov r1, r2 + 8042f84: 461a mov r2, r3 + 8042f86: 460b mov r3, r1 + 8042f88: 80fb strh r3, [r7, #6] + 8042f8a: 4613 mov r3, r2 + 8042f8c: 717b strb r3, [r7, #5] struct pbuf *concat_p = NULL; - 8042f4e: 2300 movs r3, #0 - 8042f50: 657b str r3, [r7, #84] ; 0x54 + 8042f8e: 2300 movs r3, #0 + 8042f90: 657b str r3, [r7, #84] ; 0x54 struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL; - 8042f52: 2300 movs r3, #0 - 8042f54: 653b str r3, [r7, #80] ; 0x50 - 8042f56: 2300 movs r3, #0 - 8042f58: 64fb str r3, [r7, #76] ; 0x4c - 8042f5a: 2300 movs r3, #0 - 8042f5c: 64bb str r3, [r7, #72] ; 0x48 - 8042f5e: 2300 movs r3, #0 - 8042f60: 647b str r3, [r7, #68] ; 0x44 + 8042f92: 2300 movs r3, #0 + 8042f94: 653b str r3, [r7, #80] ; 0x50 + 8042f96: 2300 movs r3, #0 + 8042f98: 64fb str r3, [r7, #76] ; 0x4c + 8042f9a: 2300 movs r3, #0 + 8042f9c: 64bb str r3, [r7, #72] ; 0x48 + 8042f9e: 2300 movs r3, #0 + 8042fa0: 647b str r3, [r7, #68] ; 0x44 u16_t pos = 0; /* position in 'arg' data */ - 8042f62: 2300 movs r3, #0 - 8042f64: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8042fa2: 2300 movs r3, #0 + 8042fa4: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 u16_t queuelen; u8_t optlen; u8_t optflags = 0; - 8042f68: 2300 movs r3, #0 - 8042f6a: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 8042fa8: 2300 movs r3, #0 + 8042faa: f887 3027 strb.w r3, [r7, #39] ; 0x27 #if TCP_OVERSIZE u16_t oversize = 0; - 8042f6e: 2300 movs r3, #0 - 8042f70: 827b strh r3, [r7, #18] + 8042fae: 2300 movs r3, #0 + 8042fb0: 827b strh r3, [r7, #18] u16_t oversize_used = 0; - 8042f72: 2300 movs r3, #0 - 8042f74: 87fb strh r3, [r7, #62] ; 0x3e + 8042fb2: 2300 movs r3, #0 + 8042fb4: 87fb strh r3, [r7, #62] ; 0x3e #if TCP_OVERSIZE_DBGCHECK u16_t oversize_add = 0; #endif /* TCP_OVERSIZE_DBGCHECK*/ #endif /* TCP_OVERSIZE */ u16_t extendlen = 0; - 8042f76: 2300 movs r3, #0 - 8042f78: 87bb strh r3, [r7, #60] ; 0x3c + 8042fb6: 2300 movs r3, #0 + 8042fb8: 87bb strh r3, [r7, #60] ; 0x3c u16_t concat_chksummed = 0; #endif /* TCP_CHECKSUM_ON_COPY */ err_t err; u16_t mss_local; LWIP_ERROR("tcp_write: invalid pcb", pcb != NULL, return ERR_ARG); - 8042f7a: 68fb ldr r3, [r7, #12] - 8042f7c: 2b00 cmp r3, #0 - 8042f7e: d109 bne.n 8042f94 - 8042f80: 4ba4 ldr r3, [pc, #656] ; (8043214 ) - 8042f82: f44f 72cf mov.w r2, #414 ; 0x19e - 8042f86: 49a4 ldr r1, [pc, #656] ; (8043218 ) - 8042f88: 48a4 ldr r0, [pc, #656] ; (804321c ) - 8042f8a: f005 f80b bl 8047fa4 - 8042f8e: f06f 030f mvn.w r3, #15 - 8042f92: e32a b.n 80435ea + 8042fba: 68fb ldr r3, [r7, #12] + 8042fbc: 2b00 cmp r3, #0 + 8042fbe: d109 bne.n 8042fd4 + 8042fc0: 4ba4 ldr r3, [pc, #656] ; (8043254 ) + 8042fc2: f44f 72cf mov.w r2, #414 ; 0x19e + 8042fc6: 49a4 ldr r1, [pc, #656] ; (8043258 ) + 8042fc8: 48a4 ldr r0, [pc, #656] ; (804325c ) + 8042fca: f005 f80b bl 8047fe4 + 8042fce: f06f 030f mvn.w r3, #15 + 8042fd2: e32a b.n 804362a /* don't allocate segments bigger than half the maximum window we ever received */ mss_local = LWIP_MIN(pcb->mss, TCPWND_MIN16(pcb->snd_wnd_max / 2)); - 8042f94: 68fb ldr r3, [r7, #12] - 8042f96: f8b3 3062 ldrh.w r3, [r3, #98] ; 0x62 - 8042f9a: 085b lsrs r3, r3, #1 - 8042f9c: b29a uxth r2, r3 - 8042f9e: 68fb ldr r3, [r7, #12] - 8042fa0: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8042fa2: 4293 cmp r3, r2 - 8042fa4: bf28 it cs - 8042fa6: 4613 movcs r3, r2 - 8042fa8: 84bb strh r3, [r7, #36] ; 0x24 + 8042fd4: 68fb ldr r3, [r7, #12] + 8042fd6: f8b3 3062 ldrh.w r3, [r3, #98] ; 0x62 + 8042fda: 085b lsrs r3, r3, #1 + 8042fdc: b29a uxth r2, r3 + 8042fde: 68fb ldr r3, [r7, #12] + 8042fe0: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8042fe2: 4293 cmp r3, r2 + 8042fe4: bf28 it cs + 8042fe6: 4613 movcs r3, r2 + 8042fe8: 84bb strh r3, [r7, #36] ; 0x24 mss_local = mss_local ? mss_local : pcb->mss; - 8042faa: 8cbb ldrh r3, [r7, #36] ; 0x24 - 8042fac: 2b00 cmp r3, #0 - 8042fae: d102 bne.n 8042fb6 - 8042fb0: 68fb ldr r3, [r7, #12] - 8042fb2: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8042fb4: e000 b.n 8042fb8 - 8042fb6: 8cbb ldrh r3, [r7, #36] ; 0x24 - 8042fb8: 84bb strh r3, [r7, #36] ; 0x24 + 8042fea: 8cbb ldrh r3, [r7, #36] ; 0x24 + 8042fec: 2b00 cmp r3, #0 + 8042fee: d102 bne.n 8042ff6 + 8042ff0: 68fb ldr r3, [r7, #12] + 8042ff2: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8042ff4: e000 b.n 8042ff8 + 8042ff6: 8cbb ldrh r3, [r7, #36] ; 0x24 + 8042ff8: 84bb strh r3, [r7, #36] ; 0x24 apiflags |= TCP_WRITE_FLAG_COPY; #endif /* LWIP_NETIF_TX_SINGLE_PBUF */ LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n", (void *)pcb, arg, len, (u16_t)apiflags)); LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)", - 8042fba: 68bb ldr r3, [r7, #8] - 8042fbc: 2b00 cmp r3, #0 - 8042fbe: d109 bne.n 8042fd4 - 8042fc0: 4b94 ldr r3, [pc, #592] ; (8043214 ) - 8042fc2: f240 12ad movw r2, #429 ; 0x1ad - 8042fc6: 4996 ldr r1, [pc, #600] ; (8043220 ) - 8042fc8: 4894 ldr r0, [pc, #592] ; (804321c ) - 8042fca: f004 ffeb bl 8047fa4 - 8042fce: f06f 030f mvn.w r3, #15 - 8042fd2: e30a b.n 80435ea + 8042ffa: 68bb ldr r3, [r7, #8] + 8042ffc: 2b00 cmp r3, #0 + 8042ffe: d109 bne.n 8043014 + 8043000: 4b94 ldr r3, [pc, #592] ; (8043254 ) + 8043002: f240 12ad movw r2, #429 ; 0x1ad + 8043006: 4996 ldr r1, [pc, #600] ; (8043260 ) + 8043008: 4894 ldr r0, [pc, #592] ; (804325c ) + 804300a: f004 ffeb bl 8047fe4 + 804300e: f06f 030f mvn.w r3, #15 + 8043012: e30a b.n 804362a arg != NULL, return ERR_ARG;); err = tcp_write_checks(pcb, len); - 8042fd4: 88fb ldrh r3, [r7, #6] - 8042fd6: 4619 mov r1, r3 - 8042fd8: 68f8 ldr r0, [r7, #12] - 8042fda: f7ff ff33 bl 8042e44 - 8042fde: 4603 mov r3, r0 - 8042fe0: f887 3023 strb.w r3, [r7, #35] ; 0x23 + 8043014: 88fb ldrh r3, [r7, #6] + 8043016: 4619 mov r1, r3 + 8043018: 68f8 ldr r0, [r7, #12] + 804301a: f7ff ff33 bl 8042e84 + 804301e: 4603 mov r3, r0 + 8043020: f887 3023 strb.w r3, [r7, #35] ; 0x23 if (err != ERR_OK) { - 8042fe4: f997 3023 ldrsb.w r3, [r7, #35] ; 0x23 - 8042fe8: 2b00 cmp r3, #0 - 8042fea: d002 beq.n 8042ff2 + 8043024: f997 3023 ldrsb.w r3, [r7, #35] ; 0x23 + 8043028: 2b00 cmp r3, #0 + 804302a: d002 beq.n 8043032 return err; - 8042fec: f997 3023 ldrsb.w r3, [r7, #35] ; 0x23 - 8042ff0: e2fb b.n 80435ea + 804302c: f997 3023 ldrsb.w r3, [r7, #35] ; 0x23 + 8043030: e2fb b.n 804362a } queuelen = pcb->snd_queuelen; - 8042ff2: 68fb ldr r3, [r7, #12] - 8042ff4: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8042ff8: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8043032: 68fb ldr r3, [r7, #12] + 8043034: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043038: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 /* ensure that segments can hold at least one data byte... */ mss_local = LWIP_MAX(mss_local, LWIP_TCP_OPT_LEN_TS + 1); } else #endif /* LWIP_TCP_TIMESTAMPS */ { optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 8042ffc: 2300 movs r3, #0 - 8042ffe: f887 3022 strb.w r3, [r7, #34] ; 0x22 + 804303c: 2300 movs r3, #0 + 804303e: f887 3022 strb.w r3, [r7, #34] ; 0x22 * * pos records progress as data is segmented. */ /* Find the tail of the unsent queue. */ if (pcb->unsent != NULL) { - 8043002: 68fb ldr r3, [r7, #12] - 8043004: 6edb ldr r3, [r3, #108] ; 0x6c - 8043006: 2b00 cmp r3, #0 - 8043008: f000 80f6 beq.w 80431f8 + 8043042: 68fb ldr r3, [r7, #12] + 8043044: 6edb ldr r3, [r3, #108] ; 0x6c + 8043046: 2b00 cmp r3, #0 + 8043048: f000 80f6 beq.w 8043238 u16_t space; u16_t unsent_optlen; /* @todo: this could be sped up by keeping last_unsent in the pcb */ for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 804300c: 68fb ldr r3, [r7, #12] - 804300e: 6edb ldr r3, [r3, #108] ; 0x6c - 8043010: 653b str r3, [r7, #80] ; 0x50 - 8043012: e002 b.n 804301a + 804304c: 68fb ldr r3, [r7, #12] + 804304e: 6edb ldr r3, [r3, #108] ; 0x6c + 8043050: 653b str r3, [r7, #80] ; 0x50 + 8043052: e002 b.n 804305a last_unsent = last_unsent->next); - 8043014: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043016: 681b ldr r3, [r3, #0] - 8043018: 653b str r3, [r7, #80] ; 0x50 + 8043054: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043056: 681b ldr r3, [r3, #0] + 8043058: 653b str r3, [r7, #80] ; 0x50 for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 804301a: 6d3b ldr r3, [r7, #80] ; 0x50 - 804301c: 681b ldr r3, [r3, #0] - 804301e: 2b00 cmp r3, #0 - 8043020: d1f8 bne.n 8043014 + 804305a: 6d3b ldr r3, [r7, #80] ; 0x50 + 804305c: 681b ldr r3, [r3, #0] + 804305e: 2b00 cmp r3, #0 + 8043060: d1f8 bne.n 8043054 /* Usable space at the end of the last unsent segment */ unsent_optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(last_unsent->flags, pcb); - 8043022: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043024: 7a9b ldrb r3, [r3, #10] - 8043026: 009b lsls r3, r3, #2 - 8043028: b29b uxth r3, r3 - 804302a: f003 0304 and.w r3, r3, #4 - 804302e: 843b strh r3, [r7, #32] + 8043062: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043064: 7a9b ldrb r3, [r3, #10] + 8043066: 009b lsls r3, r3, #2 + 8043068: b29b uxth r3, r3 + 804306a: f003 0304 and.w r3, r3, #4 + 804306e: 843b strh r3, [r7, #32] LWIP_ASSERT("mss_local is too small", mss_local >= last_unsent->len + unsent_optlen); - 8043030: 8cba ldrh r2, [r7, #36] ; 0x24 - 8043032: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043034: 891b ldrh r3, [r3, #8] - 8043036: 4619 mov r1, r3 - 8043038: 8c3b ldrh r3, [r7, #32] - 804303a: 440b add r3, r1 - 804303c: 429a cmp r2, r3 - 804303e: da06 bge.n 804304e - 8043040: 4b74 ldr r3, [pc, #464] ; (8043214 ) - 8043042: f44f 72f3 mov.w r2, #486 ; 0x1e6 - 8043046: 4977 ldr r1, [pc, #476] ; (8043224 ) - 8043048: 4874 ldr r0, [pc, #464] ; (804321c ) - 804304a: f004 ffab bl 8047fa4 + 8043070: 8cba ldrh r2, [r7, #36] ; 0x24 + 8043072: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043074: 891b ldrh r3, [r3, #8] + 8043076: 4619 mov r1, r3 + 8043078: 8c3b ldrh r3, [r7, #32] + 804307a: 440b add r3, r1 + 804307c: 429a cmp r2, r3 + 804307e: da06 bge.n 804308e + 8043080: 4b74 ldr r3, [pc, #464] ; (8043254 ) + 8043082: f44f 72f3 mov.w r2, #486 ; 0x1e6 + 8043086: 4977 ldr r1, [pc, #476] ; (8043264 ) + 8043088: 4874 ldr r0, [pc, #464] ; (804325c ) + 804308a: f004 ffab bl 8047fe4 space = mss_local - (last_unsent->len + unsent_optlen); - 804304e: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043050: 891a ldrh r2, [r3, #8] - 8043052: 8c3b ldrh r3, [r7, #32] - 8043054: 4413 add r3, r2 - 8043056: b29b uxth r3, r3 - 8043058: 8cba ldrh r2, [r7, #36] ; 0x24 - 804305a: 1ad3 subs r3, r2, r3 - 804305c: 877b strh r3, [r7, #58] ; 0x3a + 804308e: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043090: 891a ldrh r2, [r3, #8] + 8043092: 8c3b ldrh r3, [r7, #32] + 8043094: 4413 add r3, r2 + 8043096: b29b uxth r3, r3 + 8043098: 8cba ldrh r2, [r7, #36] ; 0x24 + 804309a: 1ad3 subs r3, r2, r3 + 804309c: 877b strh r3, [r7, #58] ; 0x3a #if TCP_OVERSIZE_DBGCHECK /* check that pcb->unsent_oversize matches last_unsent->oversize_left */ LWIP_ASSERT("unsent_oversize mismatch (pcb vs. last_unsent)", pcb->unsent_oversize == last_unsent->oversize_left); #endif /* TCP_OVERSIZE_DBGCHECK */ oversize = pcb->unsent_oversize; - 804305e: 68fb ldr r3, [r7, #12] - 8043060: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 8043064: 827b strh r3, [r7, #18] + 804309e: 68fb ldr r3, [r7, #12] + 80430a0: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 80430a4: 827b strh r3, [r7, #18] if (oversize > 0) { - 8043066: 8a7b ldrh r3, [r7, #18] - 8043068: 2b00 cmp r3, #0 - 804306a: d026 beq.n 80430ba + 80430a6: 8a7b ldrh r3, [r7, #18] + 80430a8: 2b00 cmp r3, #0 + 80430aa: d026 beq.n 80430fa LWIP_ASSERT("inconsistent oversize vs. space", oversize <= space); - 804306c: 8a7b ldrh r3, [r7, #18] - 804306e: 8f7a ldrh r2, [r7, #58] ; 0x3a - 8043070: 429a cmp r2, r3 - 8043072: d206 bcs.n 8043082 - 8043074: 4b67 ldr r3, [pc, #412] ; (8043214 ) - 8043076: f44f 72fc mov.w r2, #504 ; 0x1f8 - 804307a: 496b ldr r1, [pc, #428] ; (8043228 ) - 804307c: 4867 ldr r0, [pc, #412] ; (804321c ) - 804307e: f004 ff91 bl 8047fa4 + 80430ac: 8a7b ldrh r3, [r7, #18] + 80430ae: 8f7a ldrh r2, [r7, #58] ; 0x3a + 80430b0: 429a cmp r2, r3 + 80430b2: d206 bcs.n 80430c2 + 80430b4: 4b67 ldr r3, [pc, #412] ; (8043254 ) + 80430b6: f44f 72fc mov.w r2, #504 ; 0x1f8 + 80430ba: 496b ldr r1, [pc, #428] ; (8043268 ) + 80430bc: 4867 ldr r0, [pc, #412] ; (804325c ) + 80430be: f004 ff91 bl 8047fe4 seg = last_unsent; - 8043082: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043084: 64fb str r3, [r7, #76] ; 0x4c + 80430c2: 6d3b ldr r3, [r7, #80] ; 0x50 + 80430c4: 64fb str r3, [r7, #76] ; 0x4c oversize_used = LWIP_MIN(space, LWIP_MIN(oversize, len)); - 8043086: 8a7b ldrh r3, [r7, #18] - 8043088: 88fa ldrh r2, [r7, #6] - 804308a: 4293 cmp r3, r2 - 804308c: bf28 it cs - 804308e: 4613 movcs r3, r2 - 8043090: b29b uxth r3, r3 - 8043092: 8f7a ldrh r2, [r7, #58] ; 0x3a - 8043094: 4293 cmp r3, r2 - 8043096: bf28 it cs - 8043098: 4613 movcs r3, r2 - 804309a: 87fb strh r3, [r7, #62] ; 0x3e + 80430c6: 8a7b ldrh r3, [r7, #18] + 80430c8: 88fa ldrh r2, [r7, #6] + 80430ca: 4293 cmp r3, r2 + 80430cc: bf28 it cs + 80430ce: 4613 movcs r3, r2 + 80430d0: b29b uxth r3, r3 + 80430d2: 8f7a ldrh r2, [r7, #58] ; 0x3a + 80430d4: 4293 cmp r3, r2 + 80430d6: bf28 it cs + 80430d8: 4613 movcs r3, r2 + 80430da: 87fb strh r3, [r7, #62] ; 0x3e pos += oversize_used; - 804309c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80430a0: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80430a2: 4413 add r3, r2 - 80430a4: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 80430dc: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 80430e0: 8ffb ldrh r3, [r7, #62] ; 0x3e + 80430e2: 4413 add r3, r2 + 80430e4: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 oversize -= oversize_used; - 80430a8: 8a7a ldrh r2, [r7, #18] - 80430aa: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80430ac: 1ad3 subs r3, r2, r3 - 80430ae: b29b uxth r3, r3 - 80430b0: 827b strh r3, [r7, #18] + 80430e8: 8a7a ldrh r2, [r7, #18] + 80430ea: 8ffb ldrh r3, [r7, #62] ; 0x3e + 80430ec: 1ad3 subs r3, r2, r3 + 80430ee: b29b uxth r3, r3 + 80430f0: 827b strh r3, [r7, #18] space -= oversize_used; - 80430b2: 8f7a ldrh r2, [r7, #58] ; 0x3a - 80430b4: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80430b6: 1ad3 subs r3, r2, r3 - 80430b8: 877b strh r3, [r7, #58] ; 0x3a + 80430f2: 8f7a ldrh r2, [r7, #58] ; 0x3a + 80430f4: 8ffb ldrh r3, [r7, #62] ; 0x3e + 80430f6: 1ad3 subs r3, r2, r3 + 80430f8: 877b strh r3, [r7, #58] ; 0x3a } /* now we are either finished or oversize is zero */ LWIP_ASSERT("inconsistent oversize vs. len", (oversize == 0) || (pos == len)); - 80430ba: 8a7b ldrh r3, [r7, #18] - 80430bc: 2b00 cmp r3, #0 - 80430be: d00b beq.n 80430d8 - 80430c0: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80430c4: 88fb ldrh r3, [r7, #6] - 80430c6: 429a cmp r2, r3 - 80430c8: d006 beq.n 80430d8 - 80430ca: 4b52 ldr r3, [pc, #328] ; (8043214 ) - 80430cc: f44f 7200 mov.w r2, #512 ; 0x200 - 80430d0: 4956 ldr r1, [pc, #344] ; (804322c ) - 80430d2: 4852 ldr r0, [pc, #328] ; (804321c ) - 80430d4: f004 ff66 bl 8047fa4 + 80430fa: 8a7b ldrh r3, [r7, #18] + 80430fc: 2b00 cmp r3, #0 + 80430fe: d00b beq.n 8043118 + 8043100: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 8043104: 88fb ldrh r3, [r7, #6] + 8043106: 429a cmp r2, r3 + 8043108: d006 beq.n 8043118 + 804310a: 4b52 ldr r3, [pc, #328] ; (8043254 ) + 804310c: f44f 7200 mov.w r2, #512 ; 0x200 + 8043110: 4956 ldr r1, [pc, #344] ; (804326c ) + 8043112: 4852 ldr r0, [pc, #328] ; (804325c ) + 8043114: f004 ff66 bl 8047fe4 * * This phase is skipped for LWIP_NETIF_TX_SINGLE_PBUF as we could only execute * it after rexmit puts a segment from unacked to unsent and at this point, * oversize info is lost. */ if ((pos < len) && (space > 0) && (last_unsent->len > 0)) { - 80430d8: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80430dc: 88fb ldrh r3, [r7, #6] - 80430de: 429a cmp r2, r3 - 80430e0: f080 8167 bcs.w 80433b2 - 80430e4: 8f7b ldrh r3, [r7, #58] ; 0x3a - 80430e6: 2b00 cmp r3, #0 - 80430e8: f000 8163 beq.w 80433b2 - 80430ec: 6d3b ldr r3, [r7, #80] ; 0x50 - 80430ee: 891b ldrh r3, [r3, #8] - 80430f0: 2b00 cmp r3, #0 - 80430f2: f000 815e beq.w 80433b2 + 8043118: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 804311c: 88fb ldrh r3, [r7, #6] + 804311e: 429a cmp r2, r3 + 8043120: f080 8167 bcs.w 80433f2 + 8043124: 8f7b ldrh r3, [r7, #58] ; 0x3a + 8043126: 2b00 cmp r3, #0 + 8043128: f000 8163 beq.w 80433f2 + 804312c: 6d3b ldr r3, [r7, #80] ; 0x50 + 804312e: 891b ldrh r3, [r3, #8] + 8043130: 2b00 cmp r3, #0 + 8043132: f000 815e beq.w 80433f2 u16_t seglen = LWIP_MIN(space, len - pos); - 80430f6: 88fa ldrh r2, [r7, #6] - 80430f8: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 80430fc: 1ad2 subs r2, r2, r3 - 80430fe: 8f7b ldrh r3, [r7, #58] ; 0x3a - 8043100: 4293 cmp r3, r2 - 8043102: bfa8 it ge - 8043104: 4613 movge r3, r2 - 8043106: 83fb strh r3, [r7, #30] + 8043136: 88fa ldrh r2, [r7, #6] + 8043138: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804313c: 1ad2 subs r2, r2, r3 + 804313e: 8f7b ldrh r3, [r7, #58] ; 0x3a + 8043140: 4293 cmp r3, r2 + 8043142: bfa8 it ge + 8043144: 4613 movge r3, r2 + 8043146: 83fb strh r3, [r7, #30] seg = last_unsent; - 8043108: 6d3b ldr r3, [r7, #80] ; 0x50 - 804310a: 64fb str r3, [r7, #76] ; 0x4c + 8043148: 6d3b ldr r3, [r7, #80] ; 0x50 + 804314a: 64fb str r3, [r7, #76] ; 0x4c /* Create a pbuf with a copy or reference to seglen bytes. We * can use PBUF_RAW here since the data appears in the middle of * a segment. A header will never be prepended. */ if (apiflags & TCP_WRITE_FLAG_COPY) { - 804310c: 797b ldrb r3, [r7, #5] - 804310e: f003 0301 and.w r3, r3, #1 - 8043112: 2b00 cmp r3, #0 - 8043114: d027 beq.n 8043166 + 804314c: 797b ldrb r3, [r7, #5] + 804314e: f003 0301 and.w r3, r3, #1 + 8043152: 2b00 cmp r3, #0 + 8043154: d027 beq.n 80431a6 /* Data is copied */ if ((concat_p = tcp_pbuf_prealloc(PBUF_RAW, seglen, space, &oversize, pcb, apiflags, 1)) == NULL) { - 8043116: f107 0012 add.w r0, r7, #18 - 804311a: 8f7a ldrh r2, [r7, #58] ; 0x3a - 804311c: 8bf9 ldrh r1, [r7, #30] - 804311e: 2301 movs r3, #1 - 8043120: 9302 str r3, [sp, #8] - 8043122: 797b ldrb r3, [r7, #5] - 8043124: 9301 str r3, [sp, #4] - 8043126: 68fb ldr r3, [r7, #12] - 8043128: 9300 str r3, [sp, #0] - 804312a: 4603 mov r3, r0 - 804312c: 2000 movs r0, #0 - 804312e: f7ff fe0f bl 8042d50 - 8043132: 6578 str r0, [r7, #84] ; 0x54 - 8043134: 6d7b ldr r3, [r7, #84] ; 0x54 - 8043136: 2b00 cmp r3, #0 - 8043138: f000 8225 beq.w 8043586 + 8043156: f107 0012 add.w r0, r7, #18 + 804315a: 8f7a ldrh r2, [r7, #58] ; 0x3a + 804315c: 8bf9 ldrh r1, [r7, #30] + 804315e: 2301 movs r3, #1 + 8043160: 9302 str r3, [sp, #8] + 8043162: 797b ldrb r3, [r7, #5] + 8043164: 9301 str r3, [sp, #4] + 8043166: 68fb ldr r3, [r7, #12] + 8043168: 9300 str r3, [sp, #0] + 804316a: 4603 mov r3, r0 + 804316c: 2000 movs r0, #0 + 804316e: f7ff fe0f bl 8042d90 + 8043172: 6578 str r0, [r7, #84] ; 0x54 + 8043174: 6d7b ldr r3, [r7, #84] ; 0x54 + 8043176: 2b00 cmp r3, #0 + 8043178: f000 8225 beq.w 80435c6 goto memerr; } #if TCP_OVERSIZE_DBGCHECK oversize_add = oversize; #endif /* TCP_OVERSIZE_DBGCHECK */ TCP_DATA_COPY2(concat_p->payload, (const u8_t *)arg + pos, seglen, &concat_chksum, &concat_chksum_swapped); - 804313c: 6d7b ldr r3, [r7, #84] ; 0x54 - 804313e: 6858 ldr r0, [r3, #4] - 8043140: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 8043144: 68ba ldr r2, [r7, #8] - 8043146: 4413 add r3, r2 - 8043148: 8bfa ldrh r2, [r7, #30] - 804314a: 4619 mov r1, r3 - 804314c: f004 fe1a bl 8047d84 + 804317c: 6d7b ldr r3, [r7, #84] ; 0x54 + 804317e: 6858 ldr r0, [r3, #4] + 8043180: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8043184: 68ba ldr r2, [r7, #8] + 8043186: 4413 add r3, r2 + 8043188: 8bfa ldrh r2, [r7, #30] + 804318a: 4619 mov r1, r3 + 804318c: f004 fe1a bl 8047dc4 #if TCP_CHECKSUM_ON_COPY concat_chksummed += seglen; #endif /* TCP_CHECKSUM_ON_COPY */ queuelen += pbuf_clen(concat_p); - 8043150: 6d78 ldr r0, [r7, #84] ; 0x54 - 8043152: f7fb fbf5 bl 803e940 - 8043156: 4603 mov r3, r0 - 8043158: 461a mov r2, r3 - 804315a: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 - 804315e: 4413 add r3, r2 - 8043160: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 - 8043164: e041 b.n 80431ea + 8043190: 6d78 ldr r0, [r7, #84] ; 0x54 + 8043192: f7fb fbf5 bl 803e980 + 8043196: 4603 mov r3, r0 + 8043198: 461a mov r2, r3 + 804319a: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 804319e: 4413 add r3, r2 + 80431a0: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 80431a4: e041 b.n 804322a } else { /* Data is not copied */ /* If the last unsent pbuf is of type PBUF_ROM, try to extend it. */ struct pbuf *p; for (p = last_unsent->p; p->next != NULL; p = p->next); - 8043166: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043168: 685b ldr r3, [r3, #4] - 804316a: 637b str r3, [r7, #52] ; 0x34 - 804316c: e002 b.n 8043174 - 804316e: 6b7b ldr r3, [r7, #52] ; 0x34 - 8043170: 681b ldr r3, [r3, #0] - 8043172: 637b str r3, [r7, #52] ; 0x34 - 8043174: 6b7b ldr r3, [r7, #52] ; 0x34 - 8043176: 681b ldr r3, [r3, #0] - 8043178: 2b00 cmp r3, #0 - 804317a: d1f8 bne.n 804316e + 80431a6: 6d3b ldr r3, [r7, #80] ; 0x50 + 80431a8: 685b ldr r3, [r3, #4] + 80431aa: 637b str r3, [r7, #52] ; 0x34 + 80431ac: e002 b.n 80431b4 + 80431ae: 6b7b ldr r3, [r7, #52] ; 0x34 + 80431b0: 681b ldr r3, [r3, #0] + 80431b2: 637b str r3, [r7, #52] ; 0x34 + 80431b4: 6b7b ldr r3, [r7, #52] ; 0x34 + 80431b6: 681b ldr r3, [r3, #0] + 80431b8: 2b00 cmp r3, #0 + 80431ba: d1f8 bne.n 80431ae if (((p->type_internal & (PBUF_TYPE_FLAG_STRUCT_DATA_CONTIGUOUS | PBUF_TYPE_FLAG_DATA_VOLATILE)) == 0) && - 804317c: 6b7b ldr r3, [r7, #52] ; 0x34 - 804317e: 7b1b ldrb r3, [r3, #12] - 8043180: f003 03c0 and.w r3, r3, #192 ; 0xc0 - 8043184: 2b00 cmp r3, #0 - 8043186: d115 bne.n 80431b4 + 80431bc: 6b7b ldr r3, [r7, #52] ; 0x34 + 80431be: 7b1b ldrb r3, [r3, #12] + 80431c0: f003 03c0 and.w r3, r3, #192 ; 0xc0 + 80431c4: 2b00 cmp r3, #0 + 80431c6: d115 bne.n 80431f4 (const u8_t *)p->payload + p->len == (const u8_t *)arg) { - 8043188: 6b7b ldr r3, [r7, #52] ; 0x34 - 804318a: 685b ldr r3, [r3, #4] - 804318c: 6b7a ldr r2, [r7, #52] ; 0x34 - 804318e: 8952 ldrh r2, [r2, #10] - 8043190: 4413 add r3, r2 + 80431c8: 6b7b ldr r3, [r7, #52] ; 0x34 + 80431ca: 685b ldr r3, [r3, #4] + 80431cc: 6b7a ldr r2, [r7, #52] ; 0x34 + 80431ce: 8952 ldrh r2, [r2, #10] + 80431d0: 4413 add r3, r2 if (((p->type_internal & (PBUF_TYPE_FLAG_STRUCT_DATA_CONTIGUOUS | PBUF_TYPE_FLAG_DATA_VOLATILE)) == 0) && - 8043192: 68ba ldr r2, [r7, #8] - 8043194: 429a cmp r2, r3 - 8043196: d10d bne.n 80431b4 + 80431d2: 68ba ldr r2, [r7, #8] + 80431d4: 429a cmp r2, r3 + 80431d6: d10d bne.n 80431f4 LWIP_ASSERT("tcp_write: ROM pbufs cannot be oversized", pos == 0); - 8043198: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 804319c: 2b00 cmp r3, #0 - 804319e: d006 beq.n 80431ae - 80431a0: 4b1c ldr r3, [pc, #112] ; (8043214 ) - 80431a2: f240 2231 movw r2, #561 ; 0x231 - 80431a6: 4922 ldr r1, [pc, #136] ; (8043230 ) - 80431a8: 481c ldr r0, [pc, #112] ; (804321c ) - 80431aa: f004 fefb bl 8047fa4 + 80431d8: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 80431dc: 2b00 cmp r3, #0 + 80431de: d006 beq.n 80431ee + 80431e0: 4b1c ldr r3, [pc, #112] ; (8043254 ) + 80431e2: f240 2231 movw r2, #561 ; 0x231 + 80431e6: 4922 ldr r1, [pc, #136] ; (8043270 ) + 80431e8: 481c ldr r0, [pc, #112] ; (804325c ) + 80431ea: f004 fefb bl 8047fe4 extendlen = seglen; - 80431ae: 8bfb ldrh r3, [r7, #30] - 80431b0: 87bb strh r3, [r7, #60] ; 0x3c - 80431b2: e01a b.n 80431ea + 80431ee: 8bfb ldrh r3, [r7, #30] + 80431f0: 87bb strh r3, [r7, #60] ; 0x3c + 80431f2: e01a b.n 804322a } else { if ((concat_p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) { - 80431b4: 8bfb ldrh r3, [r7, #30] - 80431b6: 2201 movs r2, #1 - 80431b8: 4619 mov r1, r3 - 80431ba: 2000 movs r0, #0 - 80431bc: f7fb f854 bl 803e268 - 80431c0: 6578 str r0, [r7, #84] ; 0x54 - 80431c2: 6d7b ldr r3, [r7, #84] ; 0x54 - 80431c4: 2b00 cmp r3, #0 - 80431c6: f000 81e0 beq.w 804358a + 80431f4: 8bfb ldrh r3, [r7, #30] + 80431f6: 2201 movs r2, #1 + 80431f8: 4619 mov r1, r3 + 80431fa: 2000 movs r0, #0 + 80431fc: f7fb f854 bl 803e2a8 + 8043200: 6578 str r0, [r7, #84] ; 0x54 + 8043202: 6d7b ldr r3, [r7, #84] ; 0x54 + 8043204: 2b00 cmp r3, #0 + 8043206: f000 81e0 beq.w 80435ca LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_write: could not allocate memory for zero-copy pbuf\n")); goto memerr; } /* reference the non-volatile payload data */ ((struct pbuf_rom *)concat_p)->payload = (const u8_t *)arg + pos; - 80431ca: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 80431ce: 68ba ldr r2, [r7, #8] - 80431d0: 441a add r2, r3 - 80431d2: 6d7b ldr r3, [r7, #84] ; 0x54 - 80431d4: 605a str r2, [r3, #4] + 804320a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804320e: 68ba ldr r2, [r7, #8] + 8043210: 441a add r2, r3 + 8043212: 6d7b ldr r3, [r7, #84] ; 0x54 + 8043214: 605a str r2, [r3, #4] queuelen += pbuf_clen(concat_p); - 80431d6: 6d78 ldr r0, [r7, #84] ; 0x54 - 80431d8: f7fb fbb2 bl 803e940 - 80431dc: 4603 mov r3, r0 - 80431de: 461a mov r2, r3 - 80431e0: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 - 80431e4: 4413 add r3, r2 - 80431e6: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8043216: 6d78 ldr r0, [r7, #84] ; 0x54 + 8043218: f7fb fbb2 bl 803e980 + 804321c: 4603 mov r3, r0 + 804321e: 461a mov r2, r3 + 8043220: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 8043224: 4413 add r3, r2 + 8043226: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 &concat_chksum, &concat_chksum_swapped); concat_chksummed += seglen; #endif /* TCP_CHECKSUM_ON_COPY */ } pos += seglen; - 80431ea: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80431ee: 8bfb ldrh r3, [r7, #30] - 80431f0: 4413 add r3, r2 - 80431f2: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 - 80431f6: e0dc b.n 80433b2 + 804322a: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 804322e: 8bfb ldrh r3, [r7, #30] + 8043230: 4413 add r3, r2 + 8043232: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8043236: e0dc b.n 80433f2 } #endif /* !LWIP_NETIF_TX_SINGLE_PBUF */ } else { #if TCP_OVERSIZE LWIP_ASSERT("unsent_oversize mismatch (pcb->unsent is NULL)", - 80431f8: 68fb ldr r3, [r7, #12] - 80431fa: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 - 80431fe: 2b00 cmp r3, #0 - 8043200: f000 80d7 beq.w 80433b2 - 8043204: 4b03 ldr r3, [pc, #12] ; (8043214 ) - 8043206: f240 224a movw r2, #586 ; 0x24a - 804320a: 490a ldr r1, [pc, #40] ; (8043234 ) - 804320c: 4803 ldr r0, [pc, #12] ; (804321c ) - 804320e: f004 fec9 bl 8047fa4 + 8043238: 68fb ldr r3, [r7, #12] + 804323a: f8b3 3068 ldrh.w r3, [r3, #104] ; 0x68 + 804323e: 2b00 cmp r3, #0 + 8043240: f000 80d7 beq.w 80433f2 + 8043244: 4b03 ldr r3, [pc, #12] ; (8043254 ) + 8043246: f240 224a movw r2, #586 ; 0x24a + 804324a: 490a ldr r1, [pc, #40] ; (8043274 ) + 804324c: 4803 ldr r0, [pc, #12] ; (804325c ) + 804324e: f004 fec9 bl 8047fe4 * Phase 3: Create new segments. * * The new segments are chained together in the local 'queue' * variable, ready to be appended to pcb->unsent. */ while (pos < len) { - 8043212: e0ce b.n 80433b2 - 8043214: 0804b818 .word 0x0804b818 - 8043218: 0804b9b8 .word 0x0804b9b8 - 804321c: 0804b86c .word 0x0804b86c - 8043220: 0804b9d0 .word 0x0804b9d0 - 8043224: 0804ba04 .word 0x0804ba04 - 8043228: 0804ba1c .word 0x0804ba1c - 804322c: 0804ba3c .word 0x0804ba3c - 8043230: 0804ba5c .word 0x0804ba5c - 8043234: 0804ba88 .word 0x0804ba88 + 8043252: e0ce b.n 80433f2 + 8043254: 0804b858 .word 0x0804b858 + 8043258: 0804b9f8 .word 0x0804b9f8 + 804325c: 0804b8ac .word 0x0804b8ac + 8043260: 0804ba10 .word 0x0804ba10 + 8043264: 0804ba44 .word 0x0804ba44 + 8043268: 0804ba5c .word 0x0804ba5c + 804326c: 0804ba7c .word 0x0804ba7c + 8043270: 0804ba9c .word 0x0804ba9c + 8043274: 0804bac8 .word 0x0804bac8 struct pbuf *p; u16_t left = len - pos; - 8043238: 88fa ldrh r2, [r7, #6] - 804323a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 804323e: 1ad3 subs r3, r2, r3 - 8043240: 83bb strh r3, [r7, #28] + 8043278: 88fa ldrh r2, [r7, #6] + 804327a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804327e: 1ad3 subs r3, r2, r3 + 8043280: 83bb strh r3, [r7, #28] u16_t max_len = mss_local - optlen; - 8043242: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 - 8043246: b29b uxth r3, r3 - 8043248: 8cba ldrh r2, [r7, #36] ; 0x24 - 804324a: 1ad3 subs r3, r2, r3 - 804324c: 837b strh r3, [r7, #26] + 8043282: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 + 8043286: b29b uxth r3, r3 + 8043288: 8cba ldrh r2, [r7, #36] ; 0x24 + 804328a: 1ad3 subs r3, r2, r3 + 804328c: 837b strh r3, [r7, #26] u16_t seglen = LWIP_MIN(left, max_len); - 804324e: 8b7a ldrh r2, [r7, #26] - 8043250: 8bbb ldrh r3, [r7, #28] - 8043252: 4293 cmp r3, r2 - 8043254: bf28 it cs - 8043256: 4613 movcs r3, r2 - 8043258: 833b strh r3, [r7, #24] + 804328e: 8b7a ldrh r2, [r7, #26] + 8043290: 8bbb ldrh r3, [r7, #28] + 8043292: 4293 cmp r3, r2 + 8043294: bf28 it cs + 8043296: 4613 movcs r3, r2 + 8043298: 833b strh r3, [r7, #24] #if TCP_CHECKSUM_ON_COPY u16_t chksum = 0; u8_t chksum_swapped = 0; #endif /* TCP_CHECKSUM_ON_COPY */ if (apiflags & TCP_WRITE_FLAG_COPY) { - 804325a: 797b ldrb r3, [r7, #5] - 804325c: f003 0301 and.w r3, r3, #1 - 8043260: 2b00 cmp r3, #0 - 8043262: d036 beq.n 80432d2 + 804329a: 797b ldrb r3, [r7, #5] + 804329c: f003 0301 and.w r3, r3, #1 + 80432a0: 2b00 cmp r3, #0 + 80432a2: d036 beq.n 8043312 /* If copy is set, memory should be allocated and data copied * into pbuf */ if ((p = tcp_pbuf_prealloc(PBUF_TRANSPORT, seglen + optlen, mss_local, &oversize, pcb, apiflags, queue == NULL)) == NULL) { - 8043264: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 - 8043268: b29a uxth r2, r3 - 804326a: 8b3b ldrh r3, [r7, #24] - 804326c: 4413 add r3, r2 - 804326e: b299 uxth r1, r3 - 8043270: 6c7b ldr r3, [r7, #68] ; 0x44 - 8043272: 2b00 cmp r3, #0 - 8043274: bf0c ite eq - 8043276: 2301 moveq r3, #1 - 8043278: 2300 movne r3, #0 - 804327a: b2db uxtb r3, r3 - 804327c: f107 0012 add.w r0, r7, #18 - 8043280: 8cba ldrh r2, [r7, #36] ; 0x24 - 8043282: 9302 str r3, [sp, #8] - 8043284: 797b ldrb r3, [r7, #5] - 8043286: 9301 str r3, [sp, #4] - 8043288: 68fb ldr r3, [r7, #12] - 804328a: 9300 str r3, [sp, #0] - 804328c: 4603 mov r3, r0 - 804328e: 2036 movs r0, #54 ; 0x36 - 8043290: f7ff fd5e bl 8042d50 - 8043294: 6338 str r0, [r7, #48] ; 0x30 - 8043296: 6b3b ldr r3, [r7, #48] ; 0x30 - 8043298: 2b00 cmp r3, #0 - 804329a: f000 8178 beq.w 804358e + 80432a4: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 + 80432a8: b29a uxth r2, r3 + 80432aa: 8b3b ldrh r3, [r7, #24] + 80432ac: 4413 add r3, r2 + 80432ae: b299 uxth r1, r3 + 80432b0: 6c7b ldr r3, [r7, #68] ; 0x44 + 80432b2: 2b00 cmp r3, #0 + 80432b4: bf0c ite eq + 80432b6: 2301 moveq r3, #1 + 80432b8: 2300 movne r3, #0 + 80432ba: b2db uxtb r3, r3 + 80432bc: f107 0012 add.w r0, r7, #18 + 80432c0: 8cba ldrh r2, [r7, #36] ; 0x24 + 80432c2: 9302 str r3, [sp, #8] + 80432c4: 797b ldrb r3, [r7, #5] + 80432c6: 9301 str r3, [sp, #4] + 80432c8: 68fb ldr r3, [r7, #12] + 80432ca: 9300 str r3, [sp, #0] + 80432cc: 4603 mov r3, r0 + 80432ce: 2036 movs r0, #54 ; 0x36 + 80432d0: f7ff fd5e bl 8042d90 + 80432d4: 6338 str r0, [r7, #48] ; 0x30 + 80432d6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80432d8: 2b00 cmp r3, #0 + 80432da: f000 8178 beq.w 80435ce LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_write : could not allocate memory for pbuf copy size %"U16_F"\n", seglen)); goto memerr; } LWIP_ASSERT("tcp_write: check that first pbuf can hold the complete seglen", - 804329e: 6b3b ldr r3, [r7, #48] ; 0x30 - 80432a0: 895b ldrh r3, [r3, #10] - 80432a2: 8b3a ldrh r2, [r7, #24] - 80432a4: 429a cmp r2, r3 - 80432a6: d906 bls.n 80432b6 - 80432a8: 4b8c ldr r3, [pc, #560] ; (80434dc ) - 80432aa: f240 2266 movw r2, #614 ; 0x266 - 80432ae: 498c ldr r1, [pc, #560] ; (80434e0 ) - 80432b0: 488c ldr r0, [pc, #560] ; (80434e4 ) - 80432b2: f004 fe77 bl 8047fa4 + 80432de: 6b3b ldr r3, [r7, #48] ; 0x30 + 80432e0: 895b ldrh r3, [r3, #10] + 80432e2: 8b3a ldrh r2, [r7, #24] + 80432e4: 429a cmp r2, r3 + 80432e6: d906 bls.n 80432f6 + 80432e8: 4b8c ldr r3, [pc, #560] ; (804351c ) + 80432ea: f240 2266 movw r2, #614 ; 0x266 + 80432ee: 498c ldr r1, [pc, #560] ; (8043520 ) + 80432f0: 488c ldr r0, [pc, #560] ; (8043524 ) + 80432f2: f004 fe77 bl 8047fe4 (p->len >= seglen)); TCP_DATA_COPY2((char *)p->payload + optlen, (const u8_t *)arg + pos, seglen, &chksum, &chksum_swapped); - 80432b6: 6b3b ldr r3, [r7, #48] ; 0x30 - 80432b8: 685a ldr r2, [r3, #4] - 80432ba: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 - 80432be: 18d0 adds r0, r2, r3 - 80432c0: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 80432c4: 68ba ldr r2, [r7, #8] - 80432c6: 4413 add r3, r2 - 80432c8: 8b3a ldrh r2, [r7, #24] - 80432ca: 4619 mov r1, r3 - 80432cc: f004 fd5a bl 8047d84 - 80432d0: e02f b.n 8043332 + 80432f6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80432f8: 685a ldr r2, [r3, #4] + 80432fa: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 + 80432fe: 18d0 adds r0, r2, r3 + 8043300: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8043304: 68ba ldr r2, [r7, #8] + 8043306: 4413 add r3, r2 + 8043308: 8b3a ldrh r2, [r7, #24] + 804330a: 4619 mov r1, r3 + 804330c: f004 fd5a bl 8047dc4 + 8043310: e02f b.n 8043372 * sent out on the link (as it has to be ACKed by the remote * party) we can safely use PBUF_ROM instead of PBUF_REF here. */ struct pbuf *p2; #if TCP_OVERSIZE LWIP_ASSERT("oversize == 0", oversize == 0); - 80432d2: 8a7b ldrh r3, [r7, #18] - 80432d4: 2b00 cmp r3, #0 - 80432d6: d006 beq.n 80432e6 - 80432d8: 4b80 ldr r3, [pc, #512] ; (80434dc ) - 80432da: f240 2271 movw r2, #625 ; 0x271 - 80432de: 4982 ldr r1, [pc, #520] ; (80434e8 ) - 80432e0: 4880 ldr r0, [pc, #512] ; (80434e4 ) - 80432e2: f004 fe5f bl 8047fa4 + 8043312: 8a7b ldrh r3, [r7, #18] + 8043314: 2b00 cmp r3, #0 + 8043316: d006 beq.n 8043326 + 8043318: 4b80 ldr r3, [pc, #512] ; (804351c ) + 804331a: f240 2271 movw r2, #625 ; 0x271 + 804331e: 4982 ldr r1, [pc, #520] ; (8043528 ) + 8043320: 4880 ldr r0, [pc, #512] ; (8043524 ) + 8043322: f004 fe5f bl 8047fe4 #endif /* TCP_OVERSIZE */ if ((p2 = pbuf_alloc(PBUF_TRANSPORT, seglen, PBUF_ROM)) == NULL) { - 80432e6: 8b3b ldrh r3, [r7, #24] - 80432e8: 2201 movs r2, #1 - 80432ea: 4619 mov r1, r3 - 80432ec: 2036 movs r0, #54 ; 0x36 - 80432ee: f7fa ffbb bl 803e268 - 80432f2: 6178 str r0, [r7, #20] - 80432f4: 697b ldr r3, [r7, #20] - 80432f6: 2b00 cmp r3, #0 - 80432f8: f000 814b beq.w 8043592 + 8043326: 8b3b ldrh r3, [r7, #24] + 8043328: 2201 movs r2, #1 + 804332a: 4619 mov r1, r3 + 804332c: 2036 movs r0, #54 ; 0x36 + 804332e: f7fa ffbb bl 803e2a8 + 8043332: 6178 str r0, [r7, #20] + 8043334: 697b ldr r3, [r7, #20] + 8043336: 2b00 cmp r3, #0 + 8043338: f000 814b beq.w 80435d2 chksum_swapped = 1; chksum = SWAP_BYTES_IN_WORD(chksum); } #endif /* TCP_CHECKSUM_ON_COPY */ /* reference the non-volatile payload data */ ((struct pbuf_rom *)p2)->payload = (const u8_t *)arg + pos; - 80432fc: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 8043300: 68ba ldr r2, [r7, #8] - 8043302: 441a add r2, r3 - 8043304: 697b ldr r3, [r7, #20] - 8043306: 605a str r2, [r3, #4] + 804333c: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8043340: 68ba ldr r2, [r7, #8] + 8043342: 441a add r2, r3 + 8043344: 697b ldr r3, [r7, #20] + 8043346: 605a str r2, [r3, #4] /* Second, allocate a pbuf for the headers. */ if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - 8043308: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 - 804330c: b29b uxth r3, r3 - 804330e: f44f 7220 mov.w r2, #640 ; 0x280 - 8043312: 4619 mov r1, r3 - 8043314: 2036 movs r0, #54 ; 0x36 - 8043316: f7fa ffa7 bl 803e268 - 804331a: 6338 str r0, [r7, #48] ; 0x30 - 804331c: 6b3b ldr r3, [r7, #48] ; 0x30 - 804331e: 2b00 cmp r3, #0 - 8043320: d103 bne.n 804332a + 8043348: f897 3022 ldrb.w r3, [r7, #34] ; 0x22 + 804334c: b29b uxth r3, r3 + 804334e: f44f 7220 mov.w r2, #640 ; 0x280 + 8043352: 4619 mov r1, r3 + 8043354: 2036 movs r0, #54 ; 0x36 + 8043356: f7fa ffa7 bl 803e2a8 + 804335a: 6338 str r0, [r7, #48] ; 0x30 + 804335c: 6b3b ldr r3, [r7, #48] ; 0x30 + 804335e: 2b00 cmp r3, #0 + 8043360: d103 bne.n 804336a /* If allocation fails, we have to deallocate the data pbuf as * well. */ pbuf_free(p2); - 8043322: 6978 ldr r0, [r7, #20] - 8043324: f7fb fa84 bl 803e830 + 8043362: 6978 ldr r0, [r7, #20] + 8043364: f7fb fa84 bl 803e870 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_write: could not allocate memory for header pbuf\n")); goto memerr; - 8043328: e136 b.n 8043598 + 8043368: e136 b.n 80435d8 } /* Concatenate the headers and data pbufs together. */ pbuf_cat(p/*header*/, p2/*data*/); - 804332a: 6979 ldr r1, [r7, #20] - 804332c: 6b38 ldr r0, [r7, #48] ; 0x30 - 804332e: f7fb fb41 bl 803e9b4 + 804336a: 6979 ldr r1, [r7, #20] + 804336c: 6b38 ldr r0, [r7, #48] ; 0x30 + 804336e: f7fb fb41 bl 803e9f4 } queuelen += pbuf_clen(p); - 8043332: 6b38 ldr r0, [r7, #48] ; 0x30 - 8043334: f7fb fb04 bl 803e940 - 8043338: 4603 mov r3, r0 - 804333a: 461a mov r2, r3 - 804333c: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 - 8043340: 4413 add r3, r2 - 8043342: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8043372: 6b38 ldr r0, [r7, #48] ; 0x30 + 8043374: f7fb fb04 bl 803e980 + 8043378: 4603 mov r3, r0 + 804337a: 461a mov r2, r3 + 804337c: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 8043380: 4413 add r3, r2 + 8043382: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 /* Now that there are more segments queued, we check again if the * length of the queue exceeds the configured maximum or * overflows. */ if (queuelen > LWIP_MIN(TCP_SND_QUEUELEN, TCP_SNDQUEUELEN_OVERFLOW)) { - 8043346: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 - 804334a: 2b09 cmp r3, #9 - 804334c: d903 bls.n 8043356 + 8043386: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 804338a: 2b09 cmp r3, #9 + 804338c: d903 bls.n 8043396 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_write: queue too long %"U16_F" (%d)\n", queuelen, (int)TCP_SND_QUEUELEN)); pbuf_free(p); - 804334e: 6b38 ldr r0, [r7, #48] ; 0x30 - 8043350: f7fb fa6e bl 803e830 + 804338e: 6b38 ldr r0, [r7, #48] ; 0x30 + 8043390: f7fb fa6e bl 803e870 goto memerr; - 8043354: e120 b.n 8043598 + 8043394: e120 b.n 80435d8 } if ((seg = tcp_create_segment(pcb, p, 0, pcb->snd_lbb + pos, optflags)) == NULL) { - 8043356: 68fb ldr r3, [r7, #12] - 8043358: 6dda ldr r2, [r3, #92] ; 0x5c - 804335a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 804335e: 441a add r2, r3 - 8043360: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 8043364: 9300 str r3, [sp, #0] - 8043366: 4613 mov r3, r2 - 8043368: 2200 movs r2, #0 - 804336a: 6b39 ldr r1, [r7, #48] ; 0x30 - 804336c: 68f8 ldr r0, [r7, #12] - 804336e: f7ff fc51 bl 8042c14 - 8043372: 64f8 str r0, [r7, #76] ; 0x4c - 8043374: 6cfb ldr r3, [r7, #76] ; 0x4c - 8043376: 2b00 cmp r3, #0 - 8043378: f000 810d beq.w 8043596 + 8043396: 68fb ldr r3, [r7, #12] + 8043398: 6dda ldr r2, [r3, #92] ; 0x5c + 804339a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 804339e: 441a add r2, r3 + 80433a0: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 80433a4: 9300 str r3, [sp, #0] + 80433a6: 4613 mov r3, r2 + 80433a8: 2200 movs r2, #0 + 80433aa: 6b39 ldr r1, [r7, #48] ; 0x30 + 80433ac: 68f8 ldr r0, [r7, #12] + 80433ae: f7ff fc51 bl 8042c54 + 80433b2: 64f8 str r0, [r7, #76] ; 0x4c + 80433b4: 6cfb ldr r3, [r7, #76] ; 0x4c + 80433b6: 2b00 cmp r3, #0 + 80433b8: f000 810d beq.w 80435d6 seg->chksum_swapped = chksum_swapped; seg->flags |= TF_SEG_DATA_CHECKSUMMED; #endif /* TCP_CHECKSUM_ON_COPY */ /* first segment of to-be-queued data? */ if (queue == NULL) { - 804337c: 6c7b ldr r3, [r7, #68] ; 0x44 - 804337e: 2b00 cmp r3, #0 - 8043380: d102 bne.n 8043388 + 80433bc: 6c7b ldr r3, [r7, #68] ; 0x44 + 80433be: 2b00 cmp r3, #0 + 80433c0: d102 bne.n 80433c8 queue = seg; - 8043382: 6cfb ldr r3, [r7, #76] ; 0x4c - 8043384: 647b str r3, [r7, #68] ; 0x44 - 8043386: e00c b.n 80433a2 + 80433c2: 6cfb ldr r3, [r7, #76] ; 0x4c + 80433c4: 647b str r3, [r7, #68] ; 0x44 + 80433c6: e00c b.n 80433e2 } else { /* Attach the segment to the end of the queued segments */ LWIP_ASSERT("prev_seg != NULL", prev_seg != NULL); - 8043388: 6cbb ldr r3, [r7, #72] ; 0x48 - 804338a: 2b00 cmp r3, #0 - 804338c: d106 bne.n 804339c - 804338e: 4b53 ldr r3, [pc, #332] ; (80434dc ) - 8043390: f240 22ab movw r2, #683 ; 0x2ab - 8043394: 4955 ldr r1, [pc, #340] ; (80434ec ) - 8043396: 4853 ldr r0, [pc, #332] ; (80434e4 ) - 8043398: f004 fe04 bl 8047fa4 + 80433c8: 6cbb ldr r3, [r7, #72] ; 0x48 + 80433ca: 2b00 cmp r3, #0 + 80433cc: d106 bne.n 80433dc + 80433ce: 4b53 ldr r3, [pc, #332] ; (804351c ) + 80433d0: f240 22ab movw r2, #683 ; 0x2ab + 80433d4: 4955 ldr r1, [pc, #340] ; (804352c ) + 80433d6: 4853 ldr r0, [pc, #332] ; (8043524 ) + 80433d8: f004 fe04 bl 8047fe4 prev_seg->next = seg; - 804339c: 6cbb ldr r3, [r7, #72] ; 0x48 - 804339e: 6cfa ldr r2, [r7, #76] ; 0x4c - 80433a0: 601a str r2, [r3, #0] + 80433dc: 6cbb ldr r3, [r7, #72] ; 0x48 + 80433de: 6cfa ldr r2, [r7, #76] ; 0x4c + 80433e0: 601a str r2, [r3, #0] } /* remember last segment of to-be-queued data for next iteration */ prev_seg = seg; - 80433a2: 6cfb ldr r3, [r7, #76] ; 0x4c - 80433a4: 64bb str r3, [r7, #72] ; 0x48 + 80433e2: 6cfb ldr r3, [r7, #76] ; 0x4c + 80433e4: 64bb str r3, [r7, #72] ; 0x48 LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_write: queueing %"U32_F":%"U32_F"\n", lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg))); pos += seglen; - 80433a6: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80433aa: 8b3b ldrh r3, [r7, #24] - 80433ac: 4413 add r3, r2 - 80433ae: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 80433e6: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 80433ea: 8b3b ldrh r3, [r7, #24] + 80433ec: 4413 add r3, r2 + 80433ee: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 while (pos < len) { - 80433b2: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 80433b6: 88fb ldrh r3, [r7, #6] - 80433b8: 429a cmp r2, r3 - 80433ba: f4ff af3d bcc.w 8043238 + 80433f2: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 80433f6: 88fb ldrh r3, [r7, #6] + 80433f8: 429a cmp r2, r3 + 80433fa: f4ff af3d bcc.w 8043278 /* * Phase 1: If data has been added to the preallocated tail of * last_unsent, we update the length fields of the pbuf chain. */ #if TCP_OVERSIZE if (oversize_used > 0) { - 80433be: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80433c0: 2b00 cmp r3, #0 - 80433c2: d02c beq.n 804341e + 80433fe: 8ffb ldrh r3, [r7, #62] ; 0x3e + 8043400: 2b00 cmp r3, #0 + 8043402: d02c beq.n 804345e struct pbuf *p; /* Bump tot_len of whole chain, len of tail */ for (p = last_unsent->p; p; p = p->next) { - 80433c4: 6d3b ldr r3, [r7, #80] ; 0x50 - 80433c6: 685b ldr r3, [r3, #4] - 80433c8: 62fb str r3, [r7, #44] ; 0x2c - 80433ca: e01e b.n 804340a + 8043404: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043406: 685b ldr r3, [r3, #4] + 8043408: 62fb str r3, [r7, #44] ; 0x2c + 804340a: e01e b.n 804344a p->tot_len += oversize_used; - 80433cc: 6afb ldr r3, [r7, #44] ; 0x2c - 80433ce: 891a ldrh r2, [r3, #8] - 80433d0: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80433d2: 4413 add r3, r2 - 80433d4: b29a uxth r2, r3 - 80433d6: 6afb ldr r3, [r7, #44] ; 0x2c - 80433d8: 811a strh r2, [r3, #8] + 804340c: 6afb ldr r3, [r7, #44] ; 0x2c + 804340e: 891a ldrh r2, [r3, #8] + 8043410: 8ffb ldrh r3, [r7, #62] ; 0x3e + 8043412: 4413 add r3, r2 + 8043414: b29a uxth r2, r3 + 8043416: 6afb ldr r3, [r7, #44] ; 0x2c + 8043418: 811a strh r2, [r3, #8] if (p->next == NULL) { - 80433da: 6afb ldr r3, [r7, #44] ; 0x2c - 80433dc: 681b ldr r3, [r3, #0] - 80433de: 2b00 cmp r3, #0 - 80433e0: d110 bne.n 8043404 + 804341a: 6afb ldr r3, [r7, #44] ; 0x2c + 804341c: 681b ldr r3, [r3, #0] + 804341e: 2b00 cmp r3, #0 + 8043420: d110 bne.n 8043444 TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent); - 80433e2: 6afb ldr r3, [r7, #44] ; 0x2c - 80433e4: 685b ldr r3, [r3, #4] - 80433e6: 6afa ldr r2, [r7, #44] ; 0x2c - 80433e8: 8952 ldrh r2, [r2, #10] - 80433ea: 4413 add r3, r2 - 80433ec: 8ffa ldrh r2, [r7, #62] ; 0x3e - 80433ee: 68b9 ldr r1, [r7, #8] - 80433f0: 4618 mov r0, r3 - 80433f2: f004 fcc7 bl 8047d84 + 8043422: 6afb ldr r3, [r7, #44] ; 0x2c + 8043424: 685b ldr r3, [r3, #4] + 8043426: 6afa ldr r2, [r7, #44] ; 0x2c + 8043428: 8952 ldrh r2, [r2, #10] + 804342a: 4413 add r3, r2 + 804342c: 8ffa ldrh r2, [r7, #62] ; 0x3e + 804342e: 68b9 ldr r1, [r7, #8] + 8043430: 4618 mov r0, r3 + 8043432: f004 fcc7 bl 8047dc4 p->len += oversize_used; - 80433f6: 6afb ldr r3, [r7, #44] ; 0x2c - 80433f8: 895a ldrh r2, [r3, #10] - 80433fa: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80433fc: 4413 add r3, r2 - 80433fe: b29a uxth r2, r3 - 8043400: 6afb ldr r3, [r7, #44] ; 0x2c - 8043402: 815a strh r2, [r3, #10] + 8043436: 6afb ldr r3, [r7, #44] ; 0x2c + 8043438: 895a ldrh r2, [r3, #10] + 804343a: 8ffb ldrh r3, [r7, #62] ; 0x3e + 804343c: 4413 add r3, r2 + 804343e: b29a uxth r2, r3 + 8043440: 6afb ldr r3, [r7, #44] ; 0x2c + 8043442: 815a strh r2, [r3, #10] for (p = last_unsent->p; p; p = p->next) { - 8043404: 6afb ldr r3, [r7, #44] ; 0x2c - 8043406: 681b ldr r3, [r3, #0] - 8043408: 62fb str r3, [r7, #44] ; 0x2c - 804340a: 6afb ldr r3, [r7, #44] ; 0x2c - 804340c: 2b00 cmp r3, #0 - 804340e: d1dd bne.n 80433cc + 8043444: 6afb ldr r3, [r7, #44] ; 0x2c + 8043446: 681b ldr r3, [r3, #0] + 8043448: 62fb str r3, [r7, #44] ; 0x2c + 804344a: 6afb ldr r3, [r7, #44] ; 0x2c + 804344c: 2b00 cmp r3, #0 + 804344e: d1dd bne.n 804340c } } last_unsent->len += oversize_used; - 8043410: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043412: 891a ldrh r2, [r3, #8] - 8043414: 8ffb ldrh r3, [r7, #62] ; 0x3e - 8043416: 4413 add r3, r2 - 8043418: b29a uxth r2, r3 - 804341a: 6d3b ldr r3, [r7, #80] ; 0x50 - 804341c: 811a strh r2, [r3, #8] + 8043450: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043452: 891a ldrh r2, [r3, #8] + 8043454: 8ffb ldrh r3, [r7, #62] ; 0x3e + 8043456: 4413 add r3, r2 + 8043458: b29a uxth r2, r3 + 804345a: 6d3b ldr r3, [r7, #80] ; 0x50 + 804345c: 811a strh r2, [r3, #8] LWIP_ASSERT("last_unsent->oversize_left >= oversize_used", last_unsent->oversize_left >= oversize_used); last_unsent->oversize_left -= oversize_used; #endif /* TCP_OVERSIZE_DBGCHECK */ } pcb->unsent_oversize = oversize; - 804341e: 8a7a ldrh r2, [r7, #18] - 8043420: 68fb ldr r3, [r7, #12] - 8043422: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 804345e: 8a7a ldrh r2, [r7, #18] + 8043460: 68fb ldr r3, [r7, #12] + 8043462: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 /* * Phase 2: concat_p can be concatenated onto last_unsent->p, unless we * determined that the last ROM pbuf can be extended to include the new data. */ if (concat_p != NULL) { - 8043426: 6d7b ldr r3, [r7, #84] ; 0x54 - 8043428: 2b00 cmp r3, #0 - 804342a: d018 beq.n 804345e + 8043466: 6d7b ldr r3, [r7, #84] ; 0x54 + 8043468: 2b00 cmp r3, #0 + 804346a: d018 beq.n 804349e LWIP_ASSERT("tcp_write: cannot concatenate when pcb->unsent is empty", - 804342c: 6d3b ldr r3, [r7, #80] ; 0x50 - 804342e: 2b00 cmp r3, #0 - 8043430: d106 bne.n 8043440 - 8043432: 4b2a ldr r3, [pc, #168] ; (80434dc ) - 8043434: f44f 7238 mov.w r2, #736 ; 0x2e0 - 8043438: 492d ldr r1, [pc, #180] ; (80434f0 ) - 804343a: 482a ldr r0, [pc, #168] ; (80434e4 ) - 804343c: f004 fdb2 bl 8047fa4 + 804346c: 6d3b ldr r3, [r7, #80] ; 0x50 + 804346e: 2b00 cmp r3, #0 + 8043470: d106 bne.n 8043480 + 8043472: 4b2a ldr r3, [pc, #168] ; (804351c ) + 8043474: f44f 7238 mov.w r2, #736 ; 0x2e0 + 8043478: 492d ldr r1, [pc, #180] ; (8043530 ) + 804347a: 482a ldr r0, [pc, #168] ; (8043524 ) + 804347c: f004 fdb2 bl 8047fe4 (last_unsent != NULL)); pbuf_cat(last_unsent->p, concat_p); - 8043440: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043442: 685b ldr r3, [r3, #4] - 8043444: 6d79 ldr r1, [r7, #84] ; 0x54 - 8043446: 4618 mov r0, r3 - 8043448: f7fb fab4 bl 803e9b4 + 8043480: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043482: 685b ldr r3, [r3, #4] + 8043484: 6d79 ldr r1, [r7, #84] ; 0x54 + 8043486: 4618 mov r0, r3 + 8043488: f7fb fab4 bl 803e9f4 last_unsent->len += concat_p->tot_len; - 804344c: 6d3b ldr r3, [r7, #80] ; 0x50 - 804344e: 891a ldrh r2, [r3, #8] - 8043450: 6d7b ldr r3, [r7, #84] ; 0x54 - 8043452: 891b ldrh r3, [r3, #8] - 8043454: 4413 add r3, r2 - 8043456: b29a uxth r2, r3 - 8043458: 6d3b ldr r3, [r7, #80] ; 0x50 - 804345a: 811a strh r2, [r3, #8] - 804345c: e037 b.n 80434ce + 804348c: 6d3b ldr r3, [r7, #80] ; 0x50 + 804348e: 891a ldrh r2, [r3, #8] + 8043490: 6d7b ldr r3, [r7, #84] ; 0x54 + 8043492: 891b ldrh r3, [r3, #8] + 8043494: 4413 add r3, r2 + 8043496: b29a uxth r2, r3 + 8043498: 6d3b ldr r3, [r7, #80] ; 0x50 + 804349a: 811a strh r2, [r3, #8] + 804349c: e037 b.n 804350e } else if (extendlen > 0) { - 804345e: 8fbb ldrh r3, [r7, #60] ; 0x3c - 8043460: 2b00 cmp r3, #0 - 8043462: d034 beq.n 80434ce + 804349e: 8fbb ldrh r3, [r7, #60] ; 0x3c + 80434a0: 2b00 cmp r3, #0 + 80434a2: d034 beq.n 804350e struct pbuf *p; LWIP_ASSERT("tcp_write: extension of reference requires reference", - 8043464: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043466: 2b00 cmp r3, #0 - 8043468: d003 beq.n 8043472 - 804346a: 6d3b ldr r3, [r7, #80] ; 0x50 - 804346c: 685b ldr r3, [r3, #4] - 804346e: 2b00 cmp r3, #0 - 8043470: d106 bne.n 8043480 - 8043472: 4b1a ldr r3, [pc, #104] ; (80434dc ) - 8043474: f240 22e6 movw r2, #742 ; 0x2e6 - 8043478: 491e ldr r1, [pc, #120] ; (80434f4 ) - 804347a: 481a ldr r0, [pc, #104] ; (80434e4 ) - 804347c: f004 fd92 bl 8047fa4 + 80434a4: 6d3b ldr r3, [r7, #80] ; 0x50 + 80434a6: 2b00 cmp r3, #0 + 80434a8: d003 beq.n 80434b2 + 80434aa: 6d3b ldr r3, [r7, #80] ; 0x50 + 80434ac: 685b ldr r3, [r3, #4] + 80434ae: 2b00 cmp r3, #0 + 80434b0: d106 bne.n 80434c0 + 80434b2: 4b1a ldr r3, [pc, #104] ; (804351c ) + 80434b4: f240 22e6 movw r2, #742 ; 0x2e6 + 80434b8: 491e ldr r1, [pc, #120] ; (8043534 ) + 80434ba: 481a ldr r0, [pc, #104] ; (8043524 ) + 80434bc: f004 fd92 bl 8047fe4 last_unsent != NULL && last_unsent->p != NULL); for (p = last_unsent->p; p->next != NULL; p = p->next) { - 8043480: 6d3b ldr r3, [r7, #80] ; 0x50 - 8043482: 685b ldr r3, [r3, #4] - 8043484: 62bb str r3, [r7, #40] ; 0x28 - 8043486: e009 b.n 804349c + 80434c0: 6d3b ldr r3, [r7, #80] ; 0x50 + 80434c2: 685b ldr r3, [r3, #4] + 80434c4: 62bb str r3, [r7, #40] ; 0x28 + 80434c6: e009 b.n 80434dc p->tot_len += extendlen; - 8043488: 6abb ldr r3, [r7, #40] ; 0x28 - 804348a: 891a ldrh r2, [r3, #8] - 804348c: 8fbb ldrh r3, [r7, #60] ; 0x3c - 804348e: 4413 add r3, r2 - 8043490: b29a uxth r2, r3 - 8043492: 6abb ldr r3, [r7, #40] ; 0x28 - 8043494: 811a strh r2, [r3, #8] + 80434c8: 6abb ldr r3, [r7, #40] ; 0x28 + 80434ca: 891a ldrh r2, [r3, #8] + 80434cc: 8fbb ldrh r3, [r7, #60] ; 0x3c + 80434ce: 4413 add r3, r2 + 80434d0: b29a uxth r2, r3 + 80434d2: 6abb ldr r3, [r7, #40] ; 0x28 + 80434d4: 811a strh r2, [r3, #8] for (p = last_unsent->p; p->next != NULL; p = p->next) { - 8043496: 6abb ldr r3, [r7, #40] ; 0x28 - 8043498: 681b ldr r3, [r3, #0] - 804349a: 62bb str r3, [r7, #40] ; 0x28 - 804349c: 6abb ldr r3, [r7, #40] ; 0x28 - 804349e: 681b ldr r3, [r3, #0] - 80434a0: 2b00 cmp r3, #0 - 80434a2: d1f1 bne.n 8043488 + 80434d6: 6abb ldr r3, [r7, #40] ; 0x28 + 80434d8: 681b ldr r3, [r3, #0] + 80434da: 62bb str r3, [r7, #40] ; 0x28 + 80434dc: 6abb ldr r3, [r7, #40] ; 0x28 + 80434de: 681b ldr r3, [r3, #0] + 80434e0: 2b00 cmp r3, #0 + 80434e2: d1f1 bne.n 80434c8 } p->tot_len += extendlen; - 80434a4: 6abb ldr r3, [r7, #40] ; 0x28 - 80434a6: 891a ldrh r2, [r3, #8] - 80434a8: 8fbb ldrh r3, [r7, #60] ; 0x3c - 80434aa: 4413 add r3, r2 - 80434ac: b29a uxth r2, r3 - 80434ae: 6abb ldr r3, [r7, #40] ; 0x28 - 80434b0: 811a strh r2, [r3, #8] + 80434e4: 6abb ldr r3, [r7, #40] ; 0x28 + 80434e6: 891a ldrh r2, [r3, #8] + 80434e8: 8fbb ldrh r3, [r7, #60] ; 0x3c + 80434ea: 4413 add r3, r2 + 80434ec: b29a uxth r2, r3 + 80434ee: 6abb ldr r3, [r7, #40] ; 0x28 + 80434f0: 811a strh r2, [r3, #8] p->len += extendlen; - 80434b2: 6abb ldr r3, [r7, #40] ; 0x28 - 80434b4: 895a ldrh r2, [r3, #10] - 80434b6: 8fbb ldrh r3, [r7, #60] ; 0x3c - 80434b8: 4413 add r3, r2 - 80434ba: b29a uxth r2, r3 - 80434bc: 6abb ldr r3, [r7, #40] ; 0x28 - 80434be: 815a strh r2, [r3, #10] + 80434f2: 6abb ldr r3, [r7, #40] ; 0x28 + 80434f4: 895a ldrh r2, [r3, #10] + 80434f6: 8fbb ldrh r3, [r7, #60] ; 0x3c + 80434f8: 4413 add r3, r2 + 80434fa: b29a uxth r2, r3 + 80434fc: 6abb ldr r3, [r7, #40] ; 0x28 + 80434fe: 815a strh r2, [r3, #10] last_unsent->len += extendlen; - 80434c0: 6d3b ldr r3, [r7, #80] ; 0x50 - 80434c2: 891a ldrh r2, [r3, #8] - 80434c4: 8fbb ldrh r3, [r7, #60] ; 0x3c - 80434c6: 4413 add r3, r2 - 80434c8: b29a uxth r2, r3 - 80434ca: 6d3b ldr r3, [r7, #80] ; 0x50 - 80434cc: 811a strh r2, [r3, #8] + 8043500: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043502: 891a ldrh r2, [r3, #8] + 8043504: 8fbb ldrh r3, [r7, #60] ; 0x3c + 8043506: 4413 add r3, r2 + 8043508: b29a uxth r2, r3 + 804350a: 6d3b ldr r3, [r7, #80] ; 0x50 + 804350c: 811a strh r2, [r3, #8] /* * Phase 3: Append queue to pcb->unsent. Queue may be NULL, but that * is harmless */ if (last_unsent == NULL) { - 80434ce: 6d3b ldr r3, [r7, #80] ; 0x50 - 80434d0: 2b00 cmp r3, #0 - 80434d2: d111 bne.n 80434f8 + 804350e: 6d3b ldr r3, [r7, #80] ; 0x50 + 8043510: 2b00 cmp r3, #0 + 8043512: d111 bne.n 8043538 pcb->unsent = queue; - 80434d4: 68fb ldr r3, [r7, #12] - 80434d6: 6c7a ldr r2, [r7, #68] ; 0x44 - 80434d8: 66da str r2, [r3, #108] ; 0x6c - 80434da: e010 b.n 80434fe - 80434dc: 0804b818 .word 0x0804b818 - 80434e0: 0804bab8 .word 0x0804bab8 - 80434e4: 0804b86c .word 0x0804b86c - 80434e8: 0804baf8 .word 0x0804baf8 - 80434ec: 0804bb08 .word 0x0804bb08 - 80434f0: 0804bb1c .word 0x0804bb1c - 80434f4: 0804bb54 .word 0x0804bb54 + 8043514: 68fb ldr r3, [r7, #12] + 8043516: 6c7a ldr r2, [r7, #68] ; 0x44 + 8043518: 66da str r2, [r3, #108] ; 0x6c + 804351a: e010 b.n 804353e + 804351c: 0804b858 .word 0x0804b858 + 8043520: 0804baf8 .word 0x0804baf8 + 8043524: 0804b8ac .word 0x0804b8ac + 8043528: 0804bb38 .word 0x0804bb38 + 804352c: 0804bb48 .word 0x0804bb48 + 8043530: 0804bb5c .word 0x0804bb5c + 8043534: 0804bb94 .word 0x0804bb94 } else { last_unsent->next = queue; - 80434f8: 6d3b ldr r3, [r7, #80] ; 0x50 - 80434fa: 6c7a ldr r2, [r7, #68] ; 0x44 - 80434fc: 601a str r2, [r3, #0] + 8043538: 6d3b ldr r3, [r7, #80] ; 0x50 + 804353a: 6c7a ldr r2, [r7, #68] ; 0x44 + 804353c: 601a str r2, [r3, #0] } /* * Finally update the pcb state. */ pcb->snd_lbb += len; - 80434fe: 68fb ldr r3, [r7, #12] - 8043500: 6dda ldr r2, [r3, #92] ; 0x5c - 8043502: 88fb ldrh r3, [r7, #6] - 8043504: 441a add r2, r3 - 8043506: 68fb ldr r3, [r7, #12] - 8043508: 65da str r2, [r3, #92] ; 0x5c + 804353e: 68fb ldr r3, [r7, #12] + 8043540: 6dda ldr r2, [r3, #92] ; 0x5c + 8043542: 88fb ldrh r3, [r7, #6] + 8043544: 441a add r2, r3 + 8043546: 68fb ldr r3, [r7, #12] + 8043548: 65da str r2, [r3, #92] ; 0x5c pcb->snd_buf -= len; - 804350a: 68fb ldr r3, [r7, #12] - 804350c: f8b3 2064 ldrh.w r2, [r3, #100] ; 0x64 - 8043510: 88fb ldrh r3, [r7, #6] - 8043512: 1ad3 subs r3, r2, r3 - 8043514: b29a uxth r2, r3 - 8043516: 68fb ldr r3, [r7, #12] - 8043518: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 + 804354a: 68fb ldr r3, [r7, #12] + 804354c: f8b3 2064 ldrh.w r2, [r3, #100] ; 0x64 + 8043550: 88fb ldrh r3, [r7, #6] + 8043552: 1ad3 subs r3, r2, r3 + 8043554: b29a uxth r2, r3 + 8043556: 68fb ldr r3, [r7, #12] + 8043558: f8a3 2064 strh.w r2, [r3, #100] ; 0x64 pcb->snd_queuelen = queuelen; - 804351c: 68fb ldr r3, [r7, #12] - 804351e: f8b7 2040 ldrh.w r2, [r7, #64] ; 0x40 - 8043522: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 804355c: 68fb ldr r3, [r7, #12] + 804355e: f8b7 2040 ldrh.w r2, [r7, #64] ; 0x40 + 8043562: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_write: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); if (pcb->snd_queuelen != 0) { - 8043526: 68fb ldr r3, [r7, #12] - 8043528: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 804352c: 2b00 cmp r3, #0 - 804352e: d00e beq.n 804354e + 8043566: 68fb ldr r3, [r7, #12] + 8043568: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 804356c: 2b00 cmp r3, #0 + 804356e: d00e beq.n 804358e LWIP_ASSERT("tcp_write: valid queue length", - 8043530: 68fb ldr r3, [r7, #12] - 8043532: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043534: 2b00 cmp r3, #0 - 8043536: d10a bne.n 804354e - 8043538: 68fb ldr r3, [r7, #12] - 804353a: 6edb ldr r3, [r3, #108] ; 0x6c - 804353c: 2b00 cmp r3, #0 - 804353e: d106 bne.n 804354e - 8043540: 4b2c ldr r3, [pc, #176] ; (80435f4 ) - 8043542: f240 3212 movw r2, #786 ; 0x312 - 8043546: 492c ldr r1, [pc, #176] ; (80435f8 ) - 8043548: 482c ldr r0, [pc, #176] ; (80435fc ) - 804354a: f004 fd2b bl 8047fa4 + 8043570: 68fb ldr r3, [r7, #12] + 8043572: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043574: 2b00 cmp r3, #0 + 8043576: d10a bne.n 804358e + 8043578: 68fb ldr r3, [r7, #12] + 804357a: 6edb ldr r3, [r3, #108] ; 0x6c + 804357c: 2b00 cmp r3, #0 + 804357e: d106 bne.n 804358e + 8043580: 4b2c ldr r3, [pc, #176] ; (8043634 ) + 8043582: f240 3212 movw r2, #786 ; 0x312 + 8043586: 492c ldr r1, [pc, #176] ; (8043638 ) + 8043588: 482c ldr r0, [pc, #176] ; (804363c ) + 804358a: f004 fd2b bl 8047fe4 pcb->unacked != NULL || pcb->unsent != NULL); } /* Set the PSH flag in the last segment that we enqueued. */ if (seg != NULL && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE) == 0)) { - 804354e: 6cfb ldr r3, [r7, #76] ; 0x4c - 8043550: 2b00 cmp r3, #0 - 8043552: d016 beq.n 8043582 - 8043554: 6cfb ldr r3, [r7, #76] ; 0x4c - 8043556: 68db ldr r3, [r3, #12] - 8043558: 2b00 cmp r3, #0 - 804355a: d012 beq.n 8043582 - 804355c: 797b ldrb r3, [r7, #5] - 804355e: f003 0302 and.w r3, r3, #2 - 8043562: 2b00 cmp r3, #0 - 8043564: d10d bne.n 8043582 + 804358e: 6cfb ldr r3, [r7, #76] ; 0x4c + 8043590: 2b00 cmp r3, #0 + 8043592: d016 beq.n 80435c2 + 8043594: 6cfb ldr r3, [r7, #76] ; 0x4c + 8043596: 68db ldr r3, [r3, #12] + 8043598: 2b00 cmp r3, #0 + 804359a: d012 beq.n 80435c2 + 804359c: 797b ldrb r3, [r7, #5] + 804359e: f003 0302 and.w r3, r3, #2 + 80435a2: 2b00 cmp r3, #0 + 80435a4: d10d bne.n 80435c2 TCPH_SET_FLAG(seg->tcphdr, TCP_PSH); - 8043566: 6cfb ldr r3, [r7, #76] ; 0x4c - 8043568: 68db ldr r3, [r3, #12] - 804356a: 899b ldrh r3, [r3, #12] - 804356c: b29c uxth r4, r3 - 804356e: 2008 movs r0, #8 - 8043570: f7f9 fd2c bl 803cfcc - 8043574: 4603 mov r3, r0 - 8043576: 461a mov r2, r3 - 8043578: 6cfb ldr r3, [r7, #76] ; 0x4c - 804357a: 68db ldr r3, [r3, #12] - 804357c: 4322 orrs r2, r4 - 804357e: b292 uxth r2, r2 - 8043580: 819a strh r2, [r3, #12] + 80435a6: 6cfb ldr r3, [r7, #76] ; 0x4c + 80435a8: 68db ldr r3, [r3, #12] + 80435aa: 899b ldrh r3, [r3, #12] + 80435ac: b29c uxth r4, r3 + 80435ae: 2008 movs r0, #8 + 80435b0: f7f9 fd2c bl 803d00c + 80435b4: 4603 mov r3, r0 + 80435b6: 461a mov r2, r3 + 80435b8: 6cfb ldr r3, [r7, #76] ; 0x4c + 80435ba: 68db ldr r3, [r3, #12] + 80435bc: 4322 orrs r2, r4 + 80435be: b292 uxth r2, r2 + 80435c0: 819a strh r2, [r3, #12] } return ERR_OK; - 8043582: 2300 movs r3, #0 - 8043584: e031 b.n 80435ea + 80435c2: 2300 movs r3, #0 + 80435c4: e031 b.n 804362a goto memerr; - 8043586: bf00 nop - 8043588: e006 b.n 8043598 + 80435c6: bf00 nop + 80435c8: e006 b.n 80435d8 goto memerr; - 804358a: bf00 nop - 804358c: e004 b.n 8043598 + 80435ca: bf00 nop + 80435cc: e004 b.n 80435d8 goto memerr; - 804358e: bf00 nop - 8043590: e002 b.n 8043598 + 80435ce: bf00 nop + 80435d0: e002 b.n 80435d8 goto memerr; - 8043592: bf00 nop - 8043594: e000 b.n 8043598 + 80435d2: bf00 nop + 80435d4: e000 b.n 80435d8 goto memerr; - 8043596: bf00 nop + 80435d6: bf00 nop memerr: tcp_set_flags(pcb, TF_NAGLEMEMERR); - 8043598: 68fb ldr r3, [r7, #12] - 804359a: 8b5b ldrh r3, [r3, #26] - 804359c: f043 0380 orr.w r3, r3, #128 ; 0x80 - 80435a0: b29a uxth r2, r3 - 80435a2: 68fb ldr r3, [r7, #12] - 80435a4: 835a strh r2, [r3, #26] + 80435d8: 68fb ldr r3, [r7, #12] + 80435da: 8b5b ldrh r3, [r3, #26] + 80435dc: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80435e0: b29a uxth r2, r3 + 80435e2: 68fb ldr r3, [r7, #12] + 80435e4: 835a strh r2, [r3, #26] TCP_STATS_INC(tcp.memerr); if (concat_p != NULL) { - 80435a6: 6d7b ldr r3, [r7, #84] ; 0x54 - 80435a8: 2b00 cmp r3, #0 - 80435aa: d002 beq.n 80435b2 + 80435e6: 6d7b ldr r3, [r7, #84] ; 0x54 + 80435e8: 2b00 cmp r3, #0 + 80435ea: d002 beq.n 80435f2 pbuf_free(concat_p); - 80435ac: 6d78 ldr r0, [r7, #84] ; 0x54 - 80435ae: f7fb f93f bl 803e830 + 80435ec: 6d78 ldr r0, [r7, #84] ; 0x54 + 80435ee: f7fb f93f bl 803e870 } if (queue != NULL) { - 80435b2: 6c7b ldr r3, [r7, #68] ; 0x44 - 80435b4: 2b00 cmp r3, #0 - 80435b6: d002 beq.n 80435be + 80435f2: 6c7b ldr r3, [r7, #68] ; 0x44 + 80435f4: 2b00 cmp r3, #0 + 80435f6: d002 beq.n 80435fe tcp_segs_free(queue); - 80435b8: 6c78 ldr r0, [r7, #68] ; 0x44 - 80435ba: f7fc fc39 bl 803fe30 + 80435f8: 6c78 ldr r0, [r7, #68] ; 0x44 + 80435fa: f7fc fc39 bl 803fe70 } if (pcb->snd_queuelen != 0) { - 80435be: 68fb ldr r3, [r7, #12] - 80435c0: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 80435c4: 2b00 cmp r3, #0 - 80435c6: d00e beq.n 80435e6 + 80435fe: 68fb ldr r3, [r7, #12] + 8043600: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043604: 2b00 cmp r3, #0 + 8043606: d00e beq.n 8043626 LWIP_ASSERT("tcp_write: valid queue length", pcb->unacked != NULL || - 80435c8: 68fb ldr r3, [r7, #12] - 80435ca: 6f1b ldr r3, [r3, #112] ; 0x70 - 80435cc: 2b00 cmp r3, #0 - 80435ce: d10a bne.n 80435e6 - 80435d0: 68fb ldr r3, [r7, #12] - 80435d2: 6edb ldr r3, [r3, #108] ; 0x6c - 80435d4: 2b00 cmp r3, #0 - 80435d6: d106 bne.n 80435e6 - 80435d8: 4b06 ldr r3, [pc, #24] ; (80435f4 ) - 80435da: f240 3227 movw r2, #807 ; 0x327 - 80435de: 4906 ldr r1, [pc, #24] ; (80435f8 ) - 80435e0: 4806 ldr r0, [pc, #24] ; (80435fc ) - 80435e2: f004 fcdf bl 8047fa4 + 8043608: 68fb ldr r3, [r7, #12] + 804360a: 6f1b ldr r3, [r3, #112] ; 0x70 + 804360c: 2b00 cmp r3, #0 + 804360e: d10a bne.n 8043626 + 8043610: 68fb ldr r3, [r7, #12] + 8043612: 6edb ldr r3, [r3, #108] ; 0x6c + 8043614: 2b00 cmp r3, #0 + 8043616: d106 bne.n 8043626 + 8043618: 4b06 ldr r3, [pc, #24] ; (8043634 ) + 804361a: f240 3227 movw r2, #807 ; 0x327 + 804361e: 4906 ldr r1, [pc, #24] ; (8043638 ) + 8043620: 4806 ldr r0, [pc, #24] ; (804363c ) + 8043622: f004 fcdf bl 8047fe4 pcb->unsent != NULL); } LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_write: %"S16_F" (with mem err)\n", pcb->snd_queuelen)); return ERR_MEM; - 80435e6: f04f 33ff mov.w r3, #4294967295 -} - 80435ea: 4618 mov r0, r3 - 80435ec: 375c adds r7, #92 ; 0x5c - 80435ee: 46bd mov sp, r7 - 80435f0: bd90 pop {r4, r7, pc} - 80435f2: bf00 nop - 80435f4: 0804b818 .word 0x0804b818 - 80435f8: 0804bb8c .word 0x0804bb8c - 80435fc: 0804b86c .word 0x0804b86c - -08043600 : + 8043626: f04f 33ff mov.w r3, #4294967295 +} + 804362a: 4618 mov r0, r3 + 804362c: 375c adds r7, #92 ; 0x5c + 804362e: 46bd mov sp, r7 + 8043630: bd90 pop {r4, r7, pc} + 8043632: bf00 nop + 8043634: 0804b858 .word 0x0804b858 + 8043638: 0804bbcc .word 0x0804bbcc + 804363c: 0804b8ac .word 0x0804b8ac + +08043640 : * @param pcb the tcp_pcb for which to split the unsent head * @param split the amount of payload to remain in the head */ err_t tcp_split_unsent_seg(struct tcp_pcb *pcb, u16_t split) { - 8043600: b590 push {r4, r7, lr} - 8043602: b08b sub sp, #44 ; 0x2c - 8043604: af02 add r7, sp, #8 - 8043606: 6078 str r0, [r7, #4] - 8043608: 460b mov r3, r1 - 804360a: 807b strh r3, [r7, #2] + 8043640: b590 push {r4, r7, lr} + 8043642: b08b sub sp, #44 ; 0x2c + 8043644: af02 add r7, sp, #8 + 8043646: 6078 str r0, [r7, #4] + 8043648: 460b mov r3, r1 + 804364a: 807b strh r3, [r7, #2] struct tcp_seg *seg = NULL, *useg = NULL; - 804360c: 2300 movs r3, #0 - 804360e: 61fb str r3, [r7, #28] - 8043610: 2300 movs r3, #0 - 8043612: 617b str r3, [r7, #20] + 804364c: 2300 movs r3, #0 + 804364e: 61fb str r3, [r7, #28] + 8043650: 2300 movs r3, #0 + 8043652: 617b str r3, [r7, #20] struct pbuf *p = NULL; - 8043614: 2300 movs r3, #0 - 8043616: 613b str r3, [r7, #16] + 8043654: 2300 movs r3, #0 + 8043656: 613b str r3, [r7, #16] u16_t chksum = 0; u8_t chksum_swapped = 0; struct pbuf *q; #endif /* TCP_CHECKSUM_ON_COPY */ LWIP_ASSERT("tcp_split_unsent_seg: invalid pcb", pcb != NULL); - 8043618: 687b ldr r3, [r7, #4] - 804361a: 2b00 cmp r3, #0 - 804361c: d106 bne.n 804362c - 804361e: 4b95 ldr r3, [pc, #596] ; (8043874 ) - 8043620: f240 324b movw r2, #843 ; 0x34b - 8043624: 4994 ldr r1, [pc, #592] ; (8043878 ) - 8043626: 4895 ldr r0, [pc, #596] ; (804387c ) - 8043628: f004 fcbc bl 8047fa4 + 8043658: 687b ldr r3, [r7, #4] + 804365a: 2b00 cmp r3, #0 + 804365c: d106 bne.n 804366c + 804365e: 4b95 ldr r3, [pc, #596] ; (80438b4 ) + 8043660: f240 324b movw r2, #843 ; 0x34b + 8043664: 4994 ldr r1, [pc, #592] ; (80438b8 ) + 8043666: 4895 ldr r0, [pc, #596] ; (80438bc ) + 8043668: f004 fcbc bl 8047fe4 useg = pcb->unsent; - 804362c: 687b ldr r3, [r7, #4] - 804362e: 6edb ldr r3, [r3, #108] ; 0x6c - 8043630: 617b str r3, [r7, #20] + 804366c: 687b ldr r3, [r7, #4] + 804366e: 6edb ldr r3, [r3, #108] ; 0x6c + 8043670: 617b str r3, [r7, #20] if (useg == NULL) { - 8043632: 697b ldr r3, [r7, #20] - 8043634: 2b00 cmp r3, #0 - 8043636: d102 bne.n 804363e + 8043672: 697b ldr r3, [r7, #20] + 8043674: 2b00 cmp r3, #0 + 8043676: d102 bne.n 804367e return ERR_MEM; - 8043638: f04f 33ff mov.w r3, #4294967295 - 804363c: e116 b.n 804386c + 8043678: f04f 33ff mov.w r3, #4294967295 + 804367c: e116 b.n 80438ac } if (split == 0) { - 804363e: 887b ldrh r3, [r7, #2] - 8043640: 2b00 cmp r3, #0 - 8043642: d109 bne.n 8043658 + 804367e: 887b ldrh r3, [r7, #2] + 8043680: 2b00 cmp r3, #0 + 8043682: d109 bne.n 8043698 LWIP_ASSERT("Can't split segment into length 0", 0); - 8043644: 4b8b ldr r3, [pc, #556] ; (8043874 ) - 8043646: f240 3253 movw r2, #851 ; 0x353 - 804364a: 498d ldr r1, [pc, #564] ; (8043880 ) - 804364c: 488b ldr r0, [pc, #556] ; (804387c ) - 804364e: f004 fca9 bl 8047fa4 + 8043684: 4b8b ldr r3, [pc, #556] ; (80438b4 ) + 8043686: f240 3253 movw r2, #851 ; 0x353 + 804368a: 498d ldr r1, [pc, #564] ; (80438c0 ) + 804368c: 488b ldr r0, [pc, #556] ; (80438bc ) + 804368e: f004 fca9 bl 8047fe4 return ERR_VAL; - 8043652: f06f 0305 mvn.w r3, #5 - 8043656: e109 b.n 804386c + 8043692: f06f 0305 mvn.w r3, #5 + 8043696: e109 b.n 80438ac } if (useg->len <= split) { - 8043658: 697b ldr r3, [r7, #20] - 804365a: 891b ldrh r3, [r3, #8] - 804365c: 887a ldrh r2, [r7, #2] - 804365e: 429a cmp r2, r3 - 8043660: d301 bcc.n 8043666 + 8043698: 697b ldr r3, [r7, #20] + 804369a: 891b ldrh r3, [r3, #8] + 804369c: 887a ldrh r2, [r7, #2] + 804369e: 429a cmp r2, r3 + 80436a0: d301 bcc.n 80436a6 return ERR_OK; - 8043662: 2300 movs r3, #0 - 8043664: e102 b.n 804386c + 80436a2: 2300 movs r3, #0 + 80436a4: e102 b.n 80438ac } LWIP_ASSERT("split <= mss", split <= pcb->mss); - 8043666: 687b ldr r3, [r7, #4] - 8043668: 8e5b ldrh r3, [r3, #50] ; 0x32 - 804366a: 887a ldrh r2, [r7, #2] - 804366c: 429a cmp r2, r3 - 804366e: d906 bls.n 804367e - 8043670: 4b80 ldr r3, [pc, #512] ; (8043874 ) - 8043672: f240 325b movw r2, #859 ; 0x35b - 8043676: 4983 ldr r1, [pc, #524] ; (8043884 ) - 8043678: 4880 ldr r0, [pc, #512] ; (804387c ) - 804367a: f004 fc93 bl 8047fa4 + 80436a6: 687b ldr r3, [r7, #4] + 80436a8: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80436aa: 887a ldrh r2, [r7, #2] + 80436ac: 429a cmp r2, r3 + 80436ae: d906 bls.n 80436be + 80436b0: 4b80 ldr r3, [pc, #512] ; (80438b4 ) + 80436b2: f240 325b movw r2, #859 ; 0x35b + 80436b6: 4983 ldr r1, [pc, #524] ; (80438c4 ) + 80436b8: 4880 ldr r0, [pc, #512] ; (80438bc ) + 80436ba: f004 fc93 bl 8047fe4 LWIP_ASSERT("useg->len > 0", useg->len > 0); - 804367e: 697b ldr r3, [r7, #20] - 8043680: 891b ldrh r3, [r3, #8] - 8043682: 2b00 cmp r3, #0 - 8043684: d106 bne.n 8043694 - 8043686: 4b7b ldr r3, [pc, #492] ; (8043874 ) - 8043688: f44f 7257 mov.w r2, #860 ; 0x35c - 804368c: 497e ldr r1, [pc, #504] ; (8043888 ) - 804368e: 487b ldr r0, [pc, #492] ; (804387c ) - 8043690: f004 fc88 bl 8047fa4 + 80436be: 697b ldr r3, [r7, #20] + 80436c0: 891b ldrh r3, [r3, #8] + 80436c2: 2b00 cmp r3, #0 + 80436c4: d106 bne.n 80436d4 + 80436c6: 4b7b ldr r3, [pc, #492] ; (80438b4 ) + 80436c8: f44f 7257 mov.w r2, #860 ; 0x35c + 80436cc: 497e ldr r1, [pc, #504] ; (80438c8 ) + 80436ce: 487b ldr r0, [pc, #492] ; (80438bc ) + 80436d0: f004 fc88 bl 8047fe4 * to split this packet so we may actually exceed the max value by * one! */ LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: split_unsent_seg: %u\n", (unsigned int)pcb->snd_queuelen)); optflags = useg->flags; - 8043694: 697b ldr r3, [r7, #20] - 8043696: 7a9b ldrb r3, [r3, #10] - 8043698: 73fb strb r3, [r7, #15] + 80436d4: 697b ldr r3, [r7, #20] + 80436d6: 7a9b ldrb r3, [r3, #10] + 80436d8: 73fb strb r3, [r7, #15] #if TCP_CHECKSUM_ON_COPY /* Remove since checksum is not stored until after tcp_create_segment() */ optflags &= ~TF_SEG_DATA_CHECKSUMMED; #endif /* TCP_CHECKSUM_ON_COPY */ optlen = LWIP_TCP_OPT_LENGTH(optflags); - 804369a: 7bfb ldrb r3, [r7, #15] - 804369c: 009b lsls r3, r3, #2 - 804369e: b2db uxtb r3, r3 - 80436a0: f003 0304 and.w r3, r3, #4 - 80436a4: 73bb strb r3, [r7, #14] + 80436da: 7bfb ldrb r3, [r7, #15] + 80436dc: 009b lsls r3, r3, #2 + 80436de: b2db uxtb r3, r3 + 80436e0: f003 0304 and.w r3, r3, #4 + 80436e4: 73bb strb r3, [r7, #14] remainder = useg->len - split; - 80436a6: 697b ldr r3, [r7, #20] - 80436a8: 891a ldrh r2, [r3, #8] - 80436aa: 887b ldrh r3, [r7, #2] - 80436ac: 1ad3 subs r3, r2, r3 - 80436ae: 81bb strh r3, [r7, #12] + 80436e6: 697b ldr r3, [r7, #20] + 80436e8: 891a ldrh r2, [r3, #8] + 80436ea: 887b ldrh r3, [r7, #2] + 80436ec: 1ad3 subs r3, r2, r3 + 80436ee: 81bb strh r3, [r7, #12] /* Create new pbuf for the remainder of the split */ p = pbuf_alloc(PBUF_TRANSPORT, remainder + optlen, PBUF_RAM); - 80436b0: 7bbb ldrb r3, [r7, #14] - 80436b2: b29a uxth r2, r3 - 80436b4: 89bb ldrh r3, [r7, #12] - 80436b6: 4413 add r3, r2 - 80436b8: b29b uxth r3, r3 - 80436ba: f44f 7220 mov.w r2, #640 ; 0x280 - 80436be: 4619 mov r1, r3 - 80436c0: 2036 movs r0, #54 ; 0x36 - 80436c2: f7fa fdd1 bl 803e268 - 80436c6: 6138 str r0, [r7, #16] + 80436f0: 7bbb ldrb r3, [r7, #14] + 80436f2: b29a uxth r2, r3 + 80436f4: 89bb ldrh r3, [r7, #12] + 80436f6: 4413 add r3, r2 + 80436f8: b29b uxth r3, r3 + 80436fa: f44f 7220 mov.w r2, #640 ; 0x280 + 80436fe: 4619 mov r1, r3 + 8043700: 2036 movs r0, #54 ; 0x36 + 8043702: f7fa fdd1 bl 803e2a8 + 8043706: 6138 str r0, [r7, #16] if (p == NULL) { - 80436c8: 693b ldr r3, [r7, #16] - 80436ca: 2b00 cmp r3, #0 - 80436cc: f000 80b7 beq.w 804383e + 8043708: 693b ldr r3, [r7, #16] + 804370a: 2b00 cmp r3, #0 + 804370c: f000 80b7 beq.w 804387e ("tcp_split_unsent_seg: could not allocate memory for pbuf remainder %u\n", remainder)); goto memerr; } /* Offset into the original pbuf is past TCP/IP headers, options, and split amount */ offset = useg->p->tot_len - useg->len + split; - 80436d0: 697b ldr r3, [r7, #20] - 80436d2: 685b ldr r3, [r3, #4] - 80436d4: 891a ldrh r2, [r3, #8] - 80436d6: 697b ldr r3, [r7, #20] - 80436d8: 891b ldrh r3, [r3, #8] - 80436da: 1ad3 subs r3, r2, r3 - 80436dc: b29a uxth r2, r3 - 80436de: 887b ldrh r3, [r7, #2] - 80436e0: 4413 add r3, r2 - 80436e2: 817b strh r3, [r7, #10] + 8043710: 697b ldr r3, [r7, #20] + 8043712: 685b ldr r3, [r3, #4] + 8043714: 891a ldrh r2, [r3, #8] + 8043716: 697b ldr r3, [r7, #20] + 8043718: 891b ldrh r3, [r3, #8] + 804371a: 1ad3 subs r3, r2, r3 + 804371c: b29a uxth r2, r3 + 804371e: 887b ldrh r3, [r7, #2] + 8043720: 4413 add r3, r2 + 8043722: 817b strh r3, [r7, #10] /* Copy remainder into new pbuf, headers and options will not be filled out */ if (pbuf_copy_partial(useg->p, (u8_t *)p->payload + optlen, remainder, offset ) != remainder) { - 80436e4: 697b ldr r3, [r7, #20] - 80436e6: 6858 ldr r0, [r3, #4] - 80436e8: 693b ldr r3, [r7, #16] - 80436ea: 685a ldr r2, [r3, #4] - 80436ec: 7bbb ldrb r3, [r7, #14] - 80436ee: 18d1 adds r1, r2, r3 - 80436f0: 897b ldrh r3, [r7, #10] - 80436f2: 89ba ldrh r2, [r7, #12] - 80436f4: f7fb fa96 bl 803ec24 - 80436f8: 4603 mov r3, r0 - 80436fa: 461a mov r2, r3 - 80436fc: 89bb ldrh r3, [r7, #12] - 80436fe: 4293 cmp r3, r2 - 8043700: f040 809f bne.w 8043842 + 8043724: 697b ldr r3, [r7, #20] + 8043726: 6858 ldr r0, [r3, #4] + 8043728: 693b ldr r3, [r7, #16] + 804372a: 685a ldr r2, [r3, #4] + 804372c: 7bbb ldrb r3, [r7, #14] + 804372e: 18d1 adds r1, r2, r3 + 8043730: 897b ldrh r3, [r7, #10] + 8043732: 89ba ldrh r2, [r7, #12] + 8043734: f7fb fa96 bl 803ec64 + 8043738: 4603 mov r3, r0 + 804373a: 461a mov r2, r3 + 804373c: 89bb ldrh r3, [r7, #12] + 804373e: 4293 cmp r3, r2 + 8043740: f040 809f bne.w 8043882 #endif /* TCP_CHECKSUM_ON_COPY */ /* Options are created when calling tcp_output() */ /* Migrate flags from original segment */ split_flags = TCPH_FLAGS(useg->tcphdr); - 8043704: 697b ldr r3, [r7, #20] - 8043706: 68db ldr r3, [r3, #12] - 8043708: 899b ldrh r3, [r3, #12] - 804370a: b29b uxth r3, r3 - 804370c: 4618 mov r0, r3 - 804370e: f7f9 fc5d bl 803cfcc - 8043712: 4603 mov r3, r0 - 8043714: b2db uxtb r3, r3 - 8043716: f003 033f and.w r3, r3, #63 ; 0x3f - 804371a: 76fb strb r3, [r7, #27] + 8043744: 697b ldr r3, [r7, #20] + 8043746: 68db ldr r3, [r3, #12] + 8043748: 899b ldrh r3, [r3, #12] + 804374a: b29b uxth r3, r3 + 804374c: 4618 mov r0, r3 + 804374e: f7f9 fc5d bl 803d00c + 8043752: 4603 mov r3, r0 + 8043754: b2db uxtb r3, r3 + 8043756: f003 033f and.w r3, r3, #63 ; 0x3f + 804375a: 76fb strb r3, [r7, #27] remainder_flags = 0; /* ACK added in tcp_output() */ - 804371c: 2300 movs r3, #0 - 804371e: 76bb strb r3, [r7, #26] + 804375c: 2300 movs r3, #0 + 804375e: 76bb strb r3, [r7, #26] if (split_flags & TCP_PSH) { - 8043720: 7efb ldrb r3, [r7, #27] - 8043722: f003 0308 and.w r3, r3, #8 - 8043726: 2b00 cmp r3, #0 - 8043728: d007 beq.n 804373a + 8043760: 7efb ldrb r3, [r7, #27] + 8043762: f003 0308 and.w r3, r3, #8 + 8043766: 2b00 cmp r3, #0 + 8043768: d007 beq.n 804377a split_flags &= ~TCP_PSH; - 804372a: 7efb ldrb r3, [r7, #27] - 804372c: f023 0308 bic.w r3, r3, #8 - 8043730: 76fb strb r3, [r7, #27] + 804376a: 7efb ldrb r3, [r7, #27] + 804376c: f023 0308 bic.w r3, r3, #8 + 8043770: 76fb strb r3, [r7, #27] remainder_flags |= TCP_PSH; - 8043732: 7ebb ldrb r3, [r7, #26] - 8043734: f043 0308 orr.w r3, r3, #8 - 8043738: 76bb strb r3, [r7, #26] + 8043772: 7ebb ldrb r3, [r7, #26] + 8043774: f043 0308 orr.w r3, r3, #8 + 8043778: 76bb strb r3, [r7, #26] } if (split_flags & TCP_FIN) { - 804373a: 7efb ldrb r3, [r7, #27] - 804373c: f003 0301 and.w r3, r3, #1 - 8043740: 2b00 cmp r3, #0 - 8043742: d007 beq.n 8043754 + 804377a: 7efb ldrb r3, [r7, #27] + 804377c: f003 0301 and.w r3, r3, #1 + 8043780: 2b00 cmp r3, #0 + 8043782: d007 beq.n 8043794 split_flags &= ~TCP_FIN; - 8043744: 7efb ldrb r3, [r7, #27] - 8043746: f023 0301 bic.w r3, r3, #1 - 804374a: 76fb strb r3, [r7, #27] + 8043784: 7efb ldrb r3, [r7, #27] + 8043786: f023 0301 bic.w r3, r3, #1 + 804378a: 76fb strb r3, [r7, #27] remainder_flags |= TCP_FIN; - 804374c: 7ebb ldrb r3, [r7, #26] - 804374e: f043 0301 orr.w r3, r3, #1 - 8043752: 76bb strb r3, [r7, #26] + 804378c: 7ebb ldrb r3, [r7, #26] + 804378e: f043 0301 orr.w r3, r3, #1 + 8043792: 76bb strb r3, [r7, #26] } /* SYN should be left on split, RST should not be present with data */ seg = tcp_create_segment(pcb, p, remainder_flags, lwip_ntohl(useg->tcphdr->seqno) + split, optflags); - 8043754: 697b ldr r3, [r7, #20] - 8043756: 68db ldr r3, [r3, #12] - 8043758: 685b ldr r3, [r3, #4] - 804375a: 4618 mov r0, r3 - 804375c: f7f9 fc4b bl 803cff6 - 8043760: 4602 mov r2, r0 - 8043762: 887b ldrh r3, [r7, #2] - 8043764: 18d1 adds r1, r2, r3 - 8043766: 7eba ldrb r2, [r7, #26] - 8043768: 7bfb ldrb r3, [r7, #15] - 804376a: 9300 str r3, [sp, #0] - 804376c: 460b mov r3, r1 - 804376e: 6939 ldr r1, [r7, #16] - 8043770: 6878 ldr r0, [r7, #4] - 8043772: f7ff fa4f bl 8042c14 - 8043776: 61f8 str r0, [r7, #28] + 8043794: 697b ldr r3, [r7, #20] + 8043796: 68db ldr r3, [r3, #12] + 8043798: 685b ldr r3, [r3, #4] + 804379a: 4618 mov r0, r3 + 804379c: f7f9 fc4b bl 803d036 + 80437a0: 4602 mov r2, r0 + 80437a2: 887b ldrh r3, [r7, #2] + 80437a4: 18d1 adds r1, r2, r3 + 80437a6: 7eba ldrb r2, [r7, #26] + 80437a8: 7bfb ldrb r3, [r7, #15] + 80437aa: 9300 str r3, [sp, #0] + 80437ac: 460b mov r3, r1 + 80437ae: 6939 ldr r1, [r7, #16] + 80437b0: 6878 ldr r0, [r7, #4] + 80437b2: f7ff fa4f bl 8042c54 + 80437b6: 61f8 str r0, [r7, #28] if (seg == NULL) { - 8043778: 69fb ldr r3, [r7, #28] - 804377a: 2b00 cmp r3, #0 - 804377c: d063 beq.n 8043846 + 80437b8: 69fb ldr r3, [r7, #28] + 80437ba: 2b00 cmp r3, #0 + 80437bc: d063 beq.n 8043886 seg->chksum_swapped = chksum_swapped; seg->flags |= TF_SEG_DATA_CHECKSUMMED; #endif /* TCP_CHECKSUM_ON_COPY */ /* Remove this segment from the queue since trimming it may free pbufs */ pcb->snd_queuelen -= pbuf_clen(useg->p); - 804377e: 697b ldr r3, [r7, #20] - 8043780: 685b ldr r3, [r3, #4] - 8043782: 4618 mov r0, r3 - 8043784: f7fb f8dc bl 803e940 - 8043788: 4603 mov r3, r0 - 804378a: 461a mov r2, r3 - 804378c: 687b ldr r3, [r7, #4] - 804378e: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8043792: 1a9b subs r3, r3, r2 - 8043794: b29a uxth r2, r3 - 8043796: 687b ldr r3, [r7, #4] - 8043798: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 80437be: 697b ldr r3, [r7, #20] + 80437c0: 685b ldr r3, [r3, #4] + 80437c2: 4618 mov r0, r3 + 80437c4: f7fb f8dc bl 803e980 + 80437c8: 4603 mov r3, r0 + 80437ca: 461a mov r2, r3 + 80437cc: 687b ldr r3, [r7, #4] + 80437ce: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 80437d2: 1a9b subs r3, r3, r2 + 80437d4: b29a uxth r2, r3 + 80437d6: 687b ldr r3, [r7, #4] + 80437d8: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 /* Trim the original pbuf into our split size. At this point our remainder segment must be setup successfully because we are modifying the original segment */ pbuf_realloc(useg->p, useg->p->tot_len - remainder); - 804379c: 697b ldr r3, [r7, #20] - 804379e: 6858 ldr r0, [r3, #4] - 80437a0: 697b ldr r3, [r7, #20] - 80437a2: 685b ldr r3, [r3, #4] - 80437a4: 891a ldrh r2, [r3, #8] - 80437a6: 89bb ldrh r3, [r7, #12] - 80437a8: 1ad3 subs r3, r2, r3 - 80437aa: b29b uxth r3, r3 - 80437ac: 4619 mov r1, r3 - 80437ae: f7fa feb9 bl 803e524 + 80437dc: 697b ldr r3, [r7, #20] + 80437de: 6858 ldr r0, [r3, #4] + 80437e0: 697b ldr r3, [r7, #20] + 80437e2: 685b ldr r3, [r3, #4] + 80437e4: 891a ldrh r2, [r3, #8] + 80437e6: 89bb ldrh r3, [r7, #12] + 80437e8: 1ad3 subs r3, r2, r3 + 80437ea: b29b uxth r3, r3 + 80437ec: 4619 mov r1, r3 + 80437ee: f7fa feb9 bl 803e564 useg->len -= remainder; - 80437b2: 697b ldr r3, [r7, #20] - 80437b4: 891a ldrh r2, [r3, #8] - 80437b6: 89bb ldrh r3, [r7, #12] - 80437b8: 1ad3 subs r3, r2, r3 - 80437ba: b29a uxth r2, r3 - 80437bc: 697b ldr r3, [r7, #20] - 80437be: 811a strh r2, [r3, #8] + 80437f2: 697b ldr r3, [r7, #20] + 80437f4: 891a ldrh r2, [r3, #8] + 80437f6: 89bb ldrh r3, [r7, #12] + 80437f8: 1ad3 subs r3, r2, r3 + 80437fa: b29a uxth r2, r3 + 80437fc: 697b ldr r3, [r7, #20] + 80437fe: 811a strh r2, [r3, #8] TCPH_SET_FLAG(useg->tcphdr, split_flags); - 80437c0: 697b ldr r3, [r7, #20] - 80437c2: 68db ldr r3, [r3, #12] - 80437c4: 899b ldrh r3, [r3, #12] - 80437c6: b29c uxth r4, r3 - 80437c8: 7efb ldrb r3, [r7, #27] - 80437ca: b29b uxth r3, r3 - 80437cc: 4618 mov r0, r3 - 80437ce: f7f9 fbfd bl 803cfcc - 80437d2: 4603 mov r3, r0 - 80437d4: 461a mov r2, r3 - 80437d6: 697b ldr r3, [r7, #20] - 80437d8: 68db ldr r3, [r3, #12] - 80437da: 4322 orrs r2, r4 - 80437dc: b292 uxth r2, r2 - 80437de: 819a strh r2, [r3, #12] + 8043800: 697b ldr r3, [r7, #20] + 8043802: 68db ldr r3, [r3, #12] + 8043804: 899b ldrh r3, [r3, #12] + 8043806: b29c uxth r4, r3 + 8043808: 7efb ldrb r3, [r7, #27] + 804380a: b29b uxth r3, r3 + 804380c: 4618 mov r0, r3 + 804380e: f7f9 fbfd bl 803d00c + 8043812: 4603 mov r3, r0 + 8043814: 461a mov r2, r3 + 8043816: 697b ldr r3, [r7, #20] + 8043818: 68db ldr r3, [r3, #12] + 804381a: 4322 orrs r2, r4 + 804381c: b292 uxth r2, r2 + 804381e: 819a strh r2, [r3, #12] /* By trimming, realloc may have actually shrunk the pbuf, so clear oversize_left */ useg->oversize_left = 0; #endif /* TCP_OVERSIZE_DBGCHECK */ /* Add back to the queue with new trimmed pbuf */ pcb->snd_queuelen += pbuf_clen(useg->p); - 80437e0: 697b ldr r3, [r7, #20] - 80437e2: 685b ldr r3, [r3, #4] - 80437e4: 4618 mov r0, r3 - 80437e6: f7fb f8ab bl 803e940 - 80437ea: 4603 mov r3, r0 - 80437ec: 461a mov r2, r3 - 80437ee: 687b ldr r3, [r7, #4] - 80437f0: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 80437f4: 4413 add r3, r2 - 80437f6: b29a uxth r2, r3 - 80437f8: 687b ldr r3, [r7, #4] - 80437fa: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 8043820: 697b ldr r3, [r7, #20] + 8043822: 685b ldr r3, [r3, #4] + 8043824: 4618 mov r0, r3 + 8043826: f7fb f8ab bl 803e980 + 804382a: 4603 mov r3, r0 + 804382c: 461a mov r2, r3 + 804382e: 687b ldr r3, [r7, #4] + 8043830: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043834: 4413 add r3, r2 + 8043836: b29a uxth r2, r3 + 8043838: 687b ldr r3, [r7, #4] + 804383a: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 #endif /* TCP_CHECKSUM_ON_COPY */ /* Update number of segments on the queues. Note that length now may * exceed TCP_SND_QUEUELEN! We don't have to touch pcb->snd_buf * because the total amount of data is constant when packet is split */ pcb->snd_queuelen += pbuf_clen(seg->p); - 80437fe: 69fb ldr r3, [r7, #28] - 8043800: 685b ldr r3, [r3, #4] - 8043802: 4618 mov r0, r3 - 8043804: f7fb f89c bl 803e940 - 8043808: 4603 mov r3, r0 - 804380a: 461a mov r2, r3 - 804380c: 687b ldr r3, [r7, #4] - 804380e: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8043812: 4413 add r3, r2 - 8043814: b29a uxth r2, r3 - 8043816: 687b ldr r3, [r7, #4] - 8043818: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 804383e: 69fb ldr r3, [r7, #28] + 8043840: 685b ldr r3, [r3, #4] + 8043842: 4618 mov r0, r3 + 8043844: f7fb f89c bl 803e980 + 8043848: 4603 mov r3, r0 + 804384a: 461a mov r2, r3 + 804384c: 687b ldr r3, [r7, #4] + 804384e: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043852: 4413 add r3, r2 + 8043854: b29a uxth r2, r3 + 8043856: 687b ldr r3, [r7, #4] + 8043858: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 /* Finally insert remainder into queue after split (which stays head) */ seg->next = useg->next; - 804381c: 697b ldr r3, [r7, #20] - 804381e: 681a ldr r2, [r3, #0] - 8043820: 69fb ldr r3, [r7, #28] - 8043822: 601a str r2, [r3, #0] + 804385c: 697b ldr r3, [r7, #20] + 804385e: 681a ldr r2, [r3, #0] + 8043860: 69fb ldr r3, [r7, #28] + 8043862: 601a str r2, [r3, #0] useg->next = seg; - 8043824: 697b ldr r3, [r7, #20] - 8043826: 69fa ldr r2, [r7, #28] - 8043828: 601a str r2, [r3, #0] + 8043864: 697b ldr r3, [r7, #20] + 8043866: 69fa ldr r2, [r7, #28] + 8043868: 601a str r2, [r3, #0] #if TCP_OVERSIZE /* If remainder is last segment on the unsent, ensure we clear the oversize amount * because the remainder is always sized to the exact remaining amount */ if (seg->next == NULL) { - 804382a: 69fb ldr r3, [r7, #28] - 804382c: 681b ldr r3, [r3, #0] - 804382e: 2b00 cmp r3, #0 - 8043830: d103 bne.n 804383a + 804386a: 69fb ldr r3, [r7, #28] + 804386c: 681b ldr r3, [r3, #0] + 804386e: 2b00 cmp r3, #0 + 8043870: d103 bne.n 804387a pcb->unsent_oversize = 0; - 8043832: 687b ldr r3, [r7, #4] - 8043834: 2200 movs r2, #0 - 8043836: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 8043872: 687b ldr r3, [r7, #4] + 8043874: 2200 movs r2, #0 + 8043876: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 } #endif /* TCP_OVERSIZE */ return ERR_OK; - 804383a: 2300 movs r3, #0 - 804383c: e016 b.n 804386c + 804387a: 2300 movs r3, #0 + 804387c: e016 b.n 80438ac goto memerr; - 804383e: bf00 nop - 8043840: e002 b.n 8043848 + 804387e: bf00 nop + 8043880: e002 b.n 8043888 goto memerr; - 8043842: bf00 nop - 8043844: e000 b.n 8043848 + 8043882: bf00 nop + 8043884: e000 b.n 8043888 goto memerr; - 8043846: bf00 nop + 8043886: bf00 nop memerr: TCP_STATS_INC(tcp.memerr); LWIP_ASSERT("seg == NULL", seg == NULL); - 8043848: 69fb ldr r3, [r7, #28] - 804384a: 2b00 cmp r3, #0 - 804384c: d006 beq.n 804385c - 804384e: 4b09 ldr r3, [pc, #36] ; (8043874 ) - 8043850: f44f 7276 mov.w r2, #984 ; 0x3d8 - 8043854: 490d ldr r1, [pc, #52] ; (804388c ) - 8043856: 4809 ldr r0, [pc, #36] ; (804387c ) - 8043858: f004 fba4 bl 8047fa4 + 8043888: 69fb ldr r3, [r7, #28] + 804388a: 2b00 cmp r3, #0 + 804388c: d006 beq.n 804389c + 804388e: 4b09 ldr r3, [pc, #36] ; (80438b4 ) + 8043890: f44f 7276 mov.w r2, #984 ; 0x3d8 + 8043894: 490d ldr r1, [pc, #52] ; (80438cc ) + 8043896: 4809 ldr r0, [pc, #36] ; (80438bc ) + 8043898: f004 fba4 bl 8047fe4 if (p != NULL) { - 804385c: 693b ldr r3, [r7, #16] - 804385e: 2b00 cmp r3, #0 - 8043860: d002 beq.n 8043868 + 804389c: 693b ldr r3, [r7, #16] + 804389e: 2b00 cmp r3, #0 + 80438a0: d002 beq.n 80438a8 pbuf_free(p); - 8043862: 6938 ldr r0, [r7, #16] - 8043864: f7fa ffe4 bl 803e830 + 80438a2: 6938 ldr r0, [r7, #16] + 80438a4: f7fa ffe4 bl 803e870 } return ERR_MEM; - 8043868: f04f 33ff mov.w r3, #4294967295 -} - 804386c: 4618 mov r0, r3 - 804386e: 3724 adds r7, #36 ; 0x24 - 8043870: 46bd mov sp, r7 - 8043872: bd90 pop {r4, r7, pc} - 8043874: 0804b818 .word 0x0804b818 - 8043878: 0804bbac .word 0x0804bbac - 804387c: 0804b86c .word 0x0804b86c - 8043880: 0804bbd0 .word 0x0804bbd0 - 8043884: 0804bbf4 .word 0x0804bbf4 - 8043888: 0804bc04 .word 0x0804bc04 - 804388c: 0804bc14 .word 0x0804bc14 - -08043890 : + 80438a8: f04f 33ff mov.w r3, #4294967295 +} + 80438ac: 4618 mov r0, r3 + 80438ae: 3724 adds r7, #36 ; 0x24 + 80438b0: 46bd mov sp, r7 + 80438b2: bd90 pop {r4, r7, pc} + 80438b4: 0804b858 .word 0x0804b858 + 80438b8: 0804bbec .word 0x0804bbec + 80438bc: 0804b8ac .word 0x0804b8ac + 80438c0: 0804bc10 .word 0x0804bc10 + 80438c4: 0804bc34 .word 0x0804bc34 + 80438c8: 0804bc44 .word 0x0804bc44 + 80438cc: 0804bc54 .word 0x0804bc54 + +080438d0 : * @param pcb the tcp_pcb over which to send a segment * @return ERR_OK if sent, another err_t otherwise */ err_t tcp_send_fin(struct tcp_pcb *pcb) { - 8043890: b590 push {r4, r7, lr} - 8043892: b085 sub sp, #20 - 8043894: af00 add r7, sp, #0 - 8043896: 6078 str r0, [r7, #4] + 80438d0: b590 push {r4, r7, lr} + 80438d2: b085 sub sp, #20 + 80438d4: af00 add r7, sp, #0 + 80438d6: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_send_fin: invalid pcb", pcb != NULL); - 8043898: 687b ldr r3, [r7, #4] - 804389a: 2b00 cmp r3, #0 - 804389c: d106 bne.n 80438ac - 804389e: 4b21 ldr r3, [pc, #132] ; (8043924 ) - 80438a0: f240 32eb movw r2, #1003 ; 0x3eb - 80438a4: 4920 ldr r1, [pc, #128] ; (8043928 ) - 80438a6: 4821 ldr r0, [pc, #132] ; (804392c ) - 80438a8: f004 fb7c bl 8047fa4 + 80438d8: 687b ldr r3, [r7, #4] + 80438da: 2b00 cmp r3, #0 + 80438dc: d106 bne.n 80438ec + 80438de: 4b21 ldr r3, [pc, #132] ; (8043964 ) + 80438e0: f240 32eb movw r2, #1003 ; 0x3eb + 80438e4: 4920 ldr r1, [pc, #128] ; (8043968 ) + 80438e6: 4821 ldr r0, [pc, #132] ; (804396c ) + 80438e8: f004 fb7c bl 8047fe4 /* first, try to add the fin to the last unsent segment */ if (pcb->unsent != NULL) { - 80438ac: 687b ldr r3, [r7, #4] - 80438ae: 6edb ldr r3, [r3, #108] ; 0x6c - 80438b0: 2b00 cmp r3, #0 - 80438b2: d02e beq.n 8043912 + 80438ec: 687b ldr r3, [r7, #4] + 80438ee: 6edb ldr r3, [r3, #108] ; 0x6c + 80438f0: 2b00 cmp r3, #0 + 80438f2: d02e beq.n 8043952 struct tcp_seg *last_unsent; for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 80438b4: 687b ldr r3, [r7, #4] - 80438b6: 6edb ldr r3, [r3, #108] ; 0x6c - 80438b8: 60fb str r3, [r7, #12] - 80438ba: e002 b.n 80438c2 + 80438f4: 687b ldr r3, [r7, #4] + 80438f6: 6edb ldr r3, [r3, #108] ; 0x6c + 80438f8: 60fb str r3, [r7, #12] + 80438fa: e002 b.n 8043902 last_unsent = last_unsent->next); - 80438bc: 68fb ldr r3, [r7, #12] - 80438be: 681b ldr r3, [r3, #0] - 80438c0: 60fb str r3, [r7, #12] + 80438fc: 68fb ldr r3, [r7, #12] + 80438fe: 681b ldr r3, [r3, #0] + 8043900: 60fb str r3, [r7, #12] for (last_unsent = pcb->unsent; last_unsent->next != NULL; - 80438c2: 68fb ldr r3, [r7, #12] - 80438c4: 681b ldr r3, [r3, #0] - 80438c6: 2b00 cmp r3, #0 - 80438c8: d1f8 bne.n 80438bc + 8043902: 68fb ldr r3, [r7, #12] + 8043904: 681b ldr r3, [r3, #0] + 8043906: 2b00 cmp r3, #0 + 8043908: d1f8 bne.n 80438fc if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) { - 80438ca: 68fb ldr r3, [r7, #12] - 80438cc: 68db ldr r3, [r3, #12] - 80438ce: 899b ldrh r3, [r3, #12] - 80438d0: b29b uxth r3, r3 - 80438d2: 4618 mov r0, r3 - 80438d4: f7f9 fb7a bl 803cfcc - 80438d8: 4603 mov r3, r0 - 80438da: b2db uxtb r3, r3 - 80438dc: f003 0307 and.w r3, r3, #7 - 80438e0: 2b00 cmp r3, #0 - 80438e2: d116 bne.n 8043912 + 804390a: 68fb ldr r3, [r7, #12] + 804390c: 68db ldr r3, [r3, #12] + 804390e: 899b ldrh r3, [r3, #12] + 8043910: b29b uxth r3, r3 + 8043912: 4618 mov r0, r3 + 8043914: f7f9 fb7a bl 803d00c + 8043918: 4603 mov r3, r0 + 804391a: b2db uxtb r3, r3 + 804391c: f003 0307 and.w r3, r3, #7 + 8043920: 2b00 cmp r3, #0 + 8043922: d116 bne.n 8043952 /* no SYN/FIN/RST flag in the header, we can add the FIN flag */ TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN); - 80438e4: 68fb ldr r3, [r7, #12] - 80438e6: 68db ldr r3, [r3, #12] - 80438e8: 899b ldrh r3, [r3, #12] - 80438ea: b29c uxth r4, r3 - 80438ec: 2001 movs r0, #1 - 80438ee: f7f9 fb6d bl 803cfcc - 80438f2: 4603 mov r3, r0 - 80438f4: 461a mov r2, r3 - 80438f6: 68fb ldr r3, [r7, #12] - 80438f8: 68db ldr r3, [r3, #12] - 80438fa: 4322 orrs r2, r4 - 80438fc: b292 uxth r2, r2 - 80438fe: 819a strh r2, [r3, #12] + 8043924: 68fb ldr r3, [r7, #12] + 8043926: 68db ldr r3, [r3, #12] + 8043928: 899b ldrh r3, [r3, #12] + 804392a: b29c uxth r4, r3 + 804392c: 2001 movs r0, #1 + 804392e: f7f9 fb6d bl 803d00c + 8043932: 4603 mov r3, r0 + 8043934: 461a mov r2, r3 + 8043936: 68fb ldr r3, [r7, #12] + 8043938: 68db ldr r3, [r3, #12] + 804393a: 4322 orrs r2, r4 + 804393c: b292 uxth r2, r2 + 804393e: 819a strh r2, [r3, #12] tcp_set_flags(pcb, TF_FIN); - 8043900: 687b ldr r3, [r7, #4] - 8043902: 8b5b ldrh r3, [r3, #26] - 8043904: f043 0320 orr.w r3, r3, #32 - 8043908: b29a uxth r2, r3 - 804390a: 687b ldr r3, [r7, #4] - 804390c: 835a strh r2, [r3, #26] + 8043940: 687b ldr r3, [r7, #4] + 8043942: 8b5b ldrh r3, [r3, #26] + 8043944: f043 0320 orr.w r3, r3, #32 + 8043948: b29a uxth r2, r3 + 804394a: 687b ldr r3, [r7, #4] + 804394c: 835a strh r2, [r3, #26] return ERR_OK; - 804390e: 2300 movs r3, #0 - 8043910: e004 b.n 804391c + 804394e: 2300 movs r3, #0 + 8043950: e004 b.n 804395c } } /* no data, no length, flags, copy=1, no optdata */ return tcp_enqueue_flags(pcb, TCP_FIN); - 8043912: 2101 movs r1, #1 - 8043914: 6878 ldr r0, [r7, #4] - 8043916: f000 f80b bl 8043930 - 804391a: 4603 mov r3, r0 -} - 804391c: 4618 mov r0, r3 - 804391e: 3714 adds r7, #20 - 8043920: 46bd mov sp, r7 - 8043922: bd90 pop {r4, r7, pc} - 8043924: 0804b818 .word 0x0804b818 - 8043928: 0804bc20 .word 0x0804bc20 - 804392c: 0804b86c .word 0x0804b86c - -08043930 : + 8043952: 2101 movs r1, #1 + 8043954: 6878 ldr r0, [r7, #4] + 8043956: f000 f80b bl 8043970 + 804395a: 4603 mov r3, r0 +} + 804395c: 4618 mov r0, r3 + 804395e: 3714 adds r7, #20 + 8043960: 46bd mov sp, r7 + 8043962: bd90 pop {r4, r7, pc} + 8043964: 0804b858 .word 0x0804b858 + 8043968: 0804bc60 .word 0x0804bc60 + 804396c: 0804b8ac .word 0x0804b8ac + +08043970 : * @param pcb Protocol control block for the TCP connection. * @param flags TCP header flags to set in the outgoing segment. */ err_t tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags) { - 8043930: b580 push {r7, lr} - 8043932: b08a sub sp, #40 ; 0x28 - 8043934: af02 add r7, sp, #8 - 8043936: 6078 str r0, [r7, #4] - 8043938: 460b mov r3, r1 - 804393a: 70fb strb r3, [r7, #3] + 8043970: b580 push {r7, lr} + 8043972: b08a sub sp, #40 ; 0x28 + 8043974: af02 add r7, sp, #8 + 8043976: 6078 str r0, [r7, #4] + 8043978: 460b mov r3, r1 + 804397a: 70fb strb r3, [r7, #3] struct pbuf *p; struct tcp_seg *seg; u8_t optflags = 0; - 804393c: 2300 movs r3, #0 - 804393e: 77fb strb r3, [r7, #31] + 804397c: 2300 movs r3, #0 + 804397e: 77fb strb r3, [r7, #31] u8_t optlen = 0; - 8043940: 2300 movs r3, #0 - 8043942: 75fb strb r3, [r7, #23] + 8043980: 2300 movs r3, #0 + 8043982: 75fb strb r3, [r7, #23] LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)", - 8043944: 78fb ldrb r3, [r7, #3] - 8043946: f003 0303 and.w r3, r3, #3 - 804394a: 2b00 cmp r3, #0 - 804394c: d106 bne.n 804395c - 804394e: 4b67 ldr r3, [pc, #412] ; (8043aec ) - 8043950: f240 4211 movw r2, #1041 ; 0x411 - 8043954: 4966 ldr r1, [pc, #408] ; (8043af0 ) - 8043956: 4867 ldr r0, [pc, #412] ; (8043af4 ) - 8043958: f004 fb24 bl 8047fa4 + 8043984: 78fb ldrb r3, [r7, #3] + 8043986: f003 0303 and.w r3, r3, #3 + 804398a: 2b00 cmp r3, #0 + 804398c: d106 bne.n 804399c + 804398e: 4b67 ldr r3, [pc, #412] ; (8043b2c ) + 8043990: f240 4211 movw r2, #1041 ; 0x411 + 8043994: 4966 ldr r1, [pc, #408] ; (8043b30 ) + 8043996: 4867 ldr r0, [pc, #412] ; (8043b34 ) + 8043998: f004 fb24 bl 8047fe4 (flags & (TCP_SYN | TCP_FIN)) != 0); LWIP_ASSERT("tcp_enqueue_flags: invalid pcb", pcb != NULL); - 804395c: 687b ldr r3, [r7, #4] - 804395e: 2b00 cmp r3, #0 - 8043960: d106 bne.n 8043970 - 8043962: 4b62 ldr r3, [pc, #392] ; (8043aec ) - 8043964: f240 4213 movw r2, #1043 ; 0x413 - 8043968: 4963 ldr r1, [pc, #396] ; (8043af8 ) - 804396a: 4862 ldr r0, [pc, #392] ; (8043af4 ) - 804396c: f004 fb1a bl 8047fa4 + 804399c: 687b ldr r3, [r7, #4] + 804399e: 2b00 cmp r3, #0 + 80439a0: d106 bne.n 80439b0 + 80439a2: 4b62 ldr r3, [pc, #392] ; (8043b2c ) + 80439a4: f240 4213 movw r2, #1043 ; 0x413 + 80439a8: 4963 ldr r1, [pc, #396] ; (8043b38 ) + 80439aa: 4862 ldr r0, [pc, #392] ; (8043b34 ) + 80439ac: f004 fb1a bl 8047fe4 /* No need to check pcb->snd_queuelen if only SYN or FIN are allowed! */ /* Get options for this segment. This is a special case since this is the only place where a SYN can be sent. */ if (flags & TCP_SYN) { - 8043970: 78fb ldrb r3, [r7, #3] - 8043972: f003 0302 and.w r3, r3, #2 - 8043976: 2b00 cmp r3, #0 - 8043978: d001 beq.n 804397e + 80439b0: 78fb ldrb r3, [r7, #3] + 80439b2: f003 0302 and.w r3, r3, #2 + 80439b6: 2b00 cmp r3, #0 + 80439b8: d001 beq.n 80439be optflags = TF_SEG_OPTS_MSS; - 804397a: 2301 movs r3, #1 - 804397c: 77fb strb r3, [r7, #31] + 80439ba: 2301 movs r3, #1 + 80439bc: 77fb strb r3, [r7, #31] /* Make sure the timestamp option is only included in data segments if we agreed about it with the remote host (and in active open SYN segments). */ optflags |= TF_SEG_OPTS_TS; } #endif /* LWIP_TCP_TIMESTAMPS */ optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 804397e: 7ffb ldrb r3, [r7, #31] - 8043980: 009b lsls r3, r3, #2 - 8043982: b2db uxtb r3, r3 - 8043984: f003 0304 and.w r3, r3, #4 - 8043988: 75fb strb r3, [r7, #23] + 80439be: 7ffb ldrb r3, [r7, #31] + 80439c0: 009b lsls r3, r3, #2 + 80439c2: b2db uxtb r3, r3 + 80439c4: f003 0304 and.w r3, r3, #4 + 80439c8: 75fb strb r3, [r7, #23] /* Allocate pbuf with room for TCP header + options */ if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - 804398a: 7dfb ldrb r3, [r7, #23] - 804398c: b29b uxth r3, r3 - 804398e: f44f 7220 mov.w r2, #640 ; 0x280 - 8043992: 4619 mov r1, r3 - 8043994: 2036 movs r0, #54 ; 0x36 - 8043996: f7fa fc67 bl 803e268 - 804399a: 6138 str r0, [r7, #16] - 804399c: 693b ldr r3, [r7, #16] - 804399e: 2b00 cmp r3, #0 - 80439a0: d109 bne.n 80439b6 + 80439ca: 7dfb ldrb r3, [r7, #23] + 80439cc: b29b uxth r3, r3 + 80439ce: f44f 7220 mov.w r2, #640 ; 0x280 + 80439d2: 4619 mov r1, r3 + 80439d4: 2036 movs r0, #54 ; 0x36 + 80439d6: f7fa fc67 bl 803e2a8 + 80439da: 6138 str r0, [r7, #16] + 80439dc: 693b ldr r3, [r7, #16] + 80439de: 2b00 cmp r3, #0 + 80439e0: d109 bne.n 80439f6 tcp_set_flags(pcb, TF_NAGLEMEMERR); - 80439a2: 687b ldr r3, [r7, #4] - 80439a4: 8b5b ldrh r3, [r3, #26] - 80439a6: f043 0380 orr.w r3, r3, #128 ; 0x80 - 80439aa: b29a uxth r2, r3 - 80439ac: 687b ldr r3, [r7, #4] - 80439ae: 835a strh r2, [r3, #26] + 80439e2: 687b ldr r3, [r7, #4] + 80439e4: 8b5b ldrh r3, [r3, #26] + 80439e6: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80439ea: b29a uxth r2, r3 + 80439ec: 687b ldr r3, [r7, #4] + 80439ee: 835a strh r2, [r3, #26] TCP_STATS_INC(tcp.memerr); return ERR_MEM; - 80439b0: f04f 33ff mov.w r3, #4294967295 - 80439b4: e095 b.n 8043ae2 + 80439f0: f04f 33ff mov.w r3, #4294967295 + 80439f4: e095 b.n 8043b22 } LWIP_ASSERT("tcp_enqueue_flags: check that first pbuf can hold optlen", - 80439b6: 693b ldr r3, [r7, #16] - 80439b8: 895a ldrh r2, [r3, #10] - 80439ba: 7dfb ldrb r3, [r7, #23] - 80439bc: b29b uxth r3, r3 - 80439be: 429a cmp r2, r3 - 80439c0: d206 bcs.n 80439d0 - 80439c2: 4b4a ldr r3, [pc, #296] ; (8043aec ) - 80439c4: f240 4239 movw r2, #1081 ; 0x439 - 80439c8: 494c ldr r1, [pc, #304] ; (8043afc ) - 80439ca: 484a ldr r0, [pc, #296] ; (8043af4 ) - 80439cc: f004 faea bl 8047fa4 + 80439f6: 693b ldr r3, [r7, #16] + 80439f8: 895a ldrh r2, [r3, #10] + 80439fa: 7dfb ldrb r3, [r7, #23] + 80439fc: b29b uxth r3, r3 + 80439fe: 429a cmp r2, r3 + 8043a00: d206 bcs.n 8043a10 + 8043a02: 4b4a ldr r3, [pc, #296] ; (8043b2c ) + 8043a04: f240 4239 movw r2, #1081 ; 0x439 + 8043a08: 494c ldr r1, [pc, #304] ; (8043b3c ) + 8043a0a: 484a ldr r0, [pc, #296] ; (8043b34 ) + 8043a0c: f004 faea bl 8047fe4 (p->len >= optlen)); /* Allocate memory for tcp_seg, and fill in fields. */ if ((seg = tcp_create_segment(pcb, p, flags, pcb->snd_lbb, optflags)) == NULL) { - 80439d0: 687b ldr r3, [r7, #4] - 80439d2: 6dd9 ldr r1, [r3, #92] ; 0x5c - 80439d4: 78fa ldrb r2, [r7, #3] - 80439d6: 7ffb ldrb r3, [r7, #31] - 80439d8: 9300 str r3, [sp, #0] - 80439da: 460b mov r3, r1 - 80439dc: 6939 ldr r1, [r7, #16] - 80439de: 6878 ldr r0, [r7, #4] - 80439e0: f7ff f918 bl 8042c14 - 80439e4: 60f8 str r0, [r7, #12] - 80439e6: 68fb ldr r3, [r7, #12] - 80439e8: 2b00 cmp r3, #0 - 80439ea: d109 bne.n 8043a00 + 8043a10: 687b ldr r3, [r7, #4] + 8043a12: 6dd9 ldr r1, [r3, #92] ; 0x5c + 8043a14: 78fa ldrb r2, [r7, #3] + 8043a16: 7ffb ldrb r3, [r7, #31] + 8043a18: 9300 str r3, [sp, #0] + 8043a1a: 460b mov r3, r1 + 8043a1c: 6939 ldr r1, [r7, #16] + 8043a1e: 6878 ldr r0, [r7, #4] + 8043a20: f7ff f918 bl 8042c54 + 8043a24: 60f8 str r0, [r7, #12] + 8043a26: 68fb ldr r3, [r7, #12] + 8043a28: 2b00 cmp r3, #0 + 8043a2a: d109 bne.n 8043a40 tcp_set_flags(pcb, TF_NAGLEMEMERR); - 80439ec: 687b ldr r3, [r7, #4] - 80439ee: 8b5b ldrh r3, [r3, #26] - 80439f0: f043 0380 orr.w r3, r3, #128 ; 0x80 - 80439f4: b29a uxth r2, r3 - 80439f6: 687b ldr r3, [r7, #4] - 80439f8: 835a strh r2, [r3, #26] + 8043a2c: 687b ldr r3, [r7, #4] + 8043a2e: 8b5b ldrh r3, [r3, #26] + 8043a30: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8043a34: b29a uxth r2, r3 + 8043a36: 687b ldr r3, [r7, #4] + 8043a38: 835a strh r2, [r3, #26] TCP_STATS_INC(tcp.memerr); return ERR_MEM; - 80439fa: f04f 33ff mov.w r3, #4294967295 - 80439fe: e070 b.n 8043ae2 + 8043a3a: f04f 33ff mov.w r3, #4294967295 + 8043a3e: e070 b.n 8043b22 } LWIP_ASSERT("seg->tcphdr not aligned", ((mem_ptr_t)seg->tcphdr % LWIP_MIN(MEM_ALIGNMENT, 4)) == 0); - 8043a00: 68fb ldr r3, [r7, #12] - 8043a02: 68db ldr r3, [r3, #12] - 8043a04: f003 0303 and.w r3, r3, #3 - 8043a08: 2b00 cmp r3, #0 - 8043a0a: d006 beq.n 8043a1a - 8043a0c: 4b37 ldr r3, [pc, #220] ; (8043aec ) - 8043a0e: f240 4242 movw r2, #1090 ; 0x442 - 8043a12: 493b ldr r1, [pc, #236] ; (8043b00 ) - 8043a14: 4837 ldr r0, [pc, #220] ; (8043af4 ) - 8043a16: f004 fac5 bl 8047fa4 + 8043a40: 68fb ldr r3, [r7, #12] + 8043a42: 68db ldr r3, [r3, #12] + 8043a44: f003 0303 and.w r3, r3, #3 + 8043a48: 2b00 cmp r3, #0 + 8043a4a: d006 beq.n 8043a5a + 8043a4c: 4b37 ldr r3, [pc, #220] ; (8043b2c ) + 8043a4e: f240 4242 movw r2, #1090 ; 0x442 + 8043a52: 493b ldr r1, [pc, #236] ; (8043b40 ) + 8043a54: 4837 ldr r0, [pc, #220] ; (8043b34 ) + 8043a56: f004 fac5 bl 8047fe4 LWIP_ASSERT("tcp_enqueue_flags: invalid segment length", seg->len == 0); - 8043a1a: 68fb ldr r3, [r7, #12] - 8043a1c: 891b ldrh r3, [r3, #8] - 8043a1e: 2b00 cmp r3, #0 - 8043a20: d006 beq.n 8043a30 - 8043a22: 4b32 ldr r3, [pc, #200] ; (8043aec ) - 8043a24: f240 4243 movw r2, #1091 ; 0x443 - 8043a28: 4936 ldr r1, [pc, #216] ; (8043b04 ) - 8043a2a: 4832 ldr r0, [pc, #200] ; (8043af4 ) - 8043a2c: f004 faba bl 8047fa4 + 8043a5a: 68fb ldr r3, [r7, #12] + 8043a5c: 891b ldrh r3, [r3, #8] + 8043a5e: 2b00 cmp r3, #0 + 8043a60: d006 beq.n 8043a70 + 8043a62: 4b32 ldr r3, [pc, #200] ; (8043b2c ) + 8043a64: f240 4243 movw r2, #1091 ; 0x443 + 8043a68: 4936 ldr r1, [pc, #216] ; (8043b44 ) + 8043a6a: 4832 ldr r0, [pc, #200] ; (8043b34 ) + 8043a6c: f004 faba bl 8047fe4 lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg), (u16_t)flags)); /* Now append seg to pcb->unsent queue */ if (pcb->unsent == NULL) { - 8043a30: 687b ldr r3, [r7, #4] - 8043a32: 6edb ldr r3, [r3, #108] ; 0x6c - 8043a34: 2b00 cmp r3, #0 - 8043a36: d103 bne.n 8043a40 + 8043a70: 687b ldr r3, [r7, #4] + 8043a72: 6edb ldr r3, [r3, #108] ; 0x6c + 8043a74: 2b00 cmp r3, #0 + 8043a76: d103 bne.n 8043a80 pcb->unsent = seg; - 8043a38: 687b ldr r3, [r7, #4] - 8043a3a: 68fa ldr r2, [r7, #12] - 8043a3c: 66da str r2, [r3, #108] ; 0x6c - 8043a3e: e00d b.n 8043a5c + 8043a78: 687b ldr r3, [r7, #4] + 8043a7a: 68fa ldr r2, [r7, #12] + 8043a7c: 66da str r2, [r3, #108] ; 0x6c + 8043a7e: e00d b.n 8043a9c } else { struct tcp_seg *useg; for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); - 8043a40: 687b ldr r3, [r7, #4] - 8043a42: 6edb ldr r3, [r3, #108] ; 0x6c - 8043a44: 61bb str r3, [r7, #24] - 8043a46: e002 b.n 8043a4e - 8043a48: 69bb ldr r3, [r7, #24] - 8043a4a: 681b ldr r3, [r3, #0] - 8043a4c: 61bb str r3, [r7, #24] - 8043a4e: 69bb ldr r3, [r7, #24] - 8043a50: 681b ldr r3, [r3, #0] - 8043a52: 2b00 cmp r3, #0 - 8043a54: d1f8 bne.n 8043a48 + 8043a80: 687b ldr r3, [r7, #4] + 8043a82: 6edb ldr r3, [r3, #108] ; 0x6c + 8043a84: 61bb str r3, [r7, #24] + 8043a86: e002 b.n 8043a8e + 8043a88: 69bb ldr r3, [r7, #24] + 8043a8a: 681b ldr r3, [r3, #0] + 8043a8c: 61bb str r3, [r7, #24] + 8043a8e: 69bb ldr r3, [r7, #24] + 8043a90: 681b ldr r3, [r3, #0] + 8043a92: 2b00 cmp r3, #0 + 8043a94: d1f8 bne.n 8043a88 useg->next = seg; - 8043a56: 69bb ldr r3, [r7, #24] - 8043a58: 68fa ldr r2, [r7, #12] - 8043a5a: 601a str r2, [r3, #0] + 8043a96: 69bb ldr r3, [r7, #24] + 8043a98: 68fa ldr r2, [r7, #12] + 8043a9a: 601a str r2, [r3, #0] } #if TCP_OVERSIZE /* The new unsent tail has no space */ pcb->unsent_oversize = 0; - 8043a5c: 687b ldr r3, [r7, #4] - 8043a5e: 2200 movs r2, #0 - 8043a60: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 8043a9c: 687b ldr r3, [r7, #4] + 8043a9e: 2200 movs r2, #0 + 8043aa0: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 #endif /* TCP_OVERSIZE */ /* SYN and FIN bump the sequence number */ if ((flags & TCP_SYN) || (flags & TCP_FIN)) { - 8043a64: 78fb ldrb r3, [r7, #3] - 8043a66: f003 0302 and.w r3, r3, #2 - 8043a6a: 2b00 cmp r3, #0 - 8043a6c: d104 bne.n 8043a78 - 8043a6e: 78fb ldrb r3, [r7, #3] - 8043a70: f003 0301 and.w r3, r3, #1 - 8043a74: 2b00 cmp r3, #0 - 8043a76: d004 beq.n 8043a82 + 8043aa4: 78fb ldrb r3, [r7, #3] + 8043aa6: f003 0302 and.w r3, r3, #2 + 8043aaa: 2b00 cmp r3, #0 + 8043aac: d104 bne.n 8043ab8 + 8043aae: 78fb ldrb r3, [r7, #3] + 8043ab0: f003 0301 and.w r3, r3, #1 + 8043ab4: 2b00 cmp r3, #0 + 8043ab6: d004 beq.n 8043ac2 pcb->snd_lbb++; - 8043a78: 687b ldr r3, [r7, #4] - 8043a7a: 6ddb ldr r3, [r3, #92] ; 0x5c - 8043a7c: 1c5a adds r2, r3, #1 - 8043a7e: 687b ldr r3, [r7, #4] - 8043a80: 65da str r2, [r3, #92] ; 0x5c + 8043ab8: 687b ldr r3, [r7, #4] + 8043aba: 6ddb ldr r3, [r3, #92] ; 0x5c + 8043abc: 1c5a adds r2, r3, #1 + 8043abe: 687b ldr r3, [r7, #4] + 8043ac0: 65da str r2, [r3, #92] ; 0x5c /* optlen does not influence snd_buf */ } if (flags & TCP_FIN) { - 8043a82: 78fb ldrb r3, [r7, #3] - 8043a84: f003 0301 and.w r3, r3, #1 - 8043a88: 2b00 cmp r3, #0 - 8043a8a: d006 beq.n 8043a9a + 8043ac2: 78fb ldrb r3, [r7, #3] + 8043ac4: f003 0301 and.w r3, r3, #1 + 8043ac8: 2b00 cmp r3, #0 + 8043aca: d006 beq.n 8043ada tcp_set_flags(pcb, TF_FIN); - 8043a8c: 687b ldr r3, [r7, #4] - 8043a8e: 8b5b ldrh r3, [r3, #26] - 8043a90: f043 0320 orr.w r3, r3, #32 - 8043a94: b29a uxth r2, r3 - 8043a96: 687b ldr r3, [r7, #4] - 8043a98: 835a strh r2, [r3, #26] + 8043acc: 687b ldr r3, [r7, #4] + 8043ace: 8b5b ldrh r3, [r3, #26] + 8043ad0: f043 0320 orr.w r3, r3, #32 + 8043ad4: b29a uxth r2, r3 + 8043ad6: 687b ldr r3, [r7, #4] + 8043ad8: 835a strh r2, [r3, #26] } /* update number of segments on the queues */ pcb->snd_queuelen += pbuf_clen(seg->p); - 8043a9a: 68fb ldr r3, [r7, #12] - 8043a9c: 685b ldr r3, [r3, #4] - 8043a9e: 4618 mov r0, r3 - 8043aa0: f7fa ff4e bl 803e940 - 8043aa4: 4603 mov r3, r0 - 8043aa6: 461a mov r2, r3 - 8043aa8: 687b ldr r3, [r7, #4] - 8043aaa: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8043aae: 4413 add r3, r2 - 8043ab0: b29a uxth r2, r3 - 8043ab2: 687b ldr r3, [r7, #4] - 8043ab4: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 + 8043ada: 68fb ldr r3, [r7, #12] + 8043adc: 685b ldr r3, [r3, #4] + 8043ade: 4618 mov r0, r3 + 8043ae0: f7fa ff4e bl 803e980 + 8043ae4: 4603 mov r3, r0 + 8043ae6: 461a mov r2, r3 + 8043ae8: 687b ldr r3, [r7, #4] + 8043aea: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043aee: 4413 add r3, r2 + 8043af0: b29a uxth r2, r3 + 8043af2: 687b ldr r3, [r7, #4] + 8043af4: f8a3 2066 strh.w r2, [r3, #102] ; 0x66 LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); if (pcb->snd_queuelen != 0) { - 8043ab8: 687b ldr r3, [r7, #4] - 8043aba: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8043abe: 2b00 cmp r3, #0 - 8043ac0: d00e beq.n 8043ae0 + 8043af8: 687b ldr r3, [r7, #4] + 8043afa: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043afe: 2b00 cmp r3, #0 + 8043b00: d00e beq.n 8043b20 LWIP_ASSERT("tcp_enqueue_flags: invalid queue length", - 8043ac2: 687b ldr r3, [r7, #4] - 8043ac4: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043ac6: 2b00 cmp r3, #0 - 8043ac8: d10a bne.n 8043ae0 - 8043aca: 687b ldr r3, [r7, #4] - 8043acc: 6edb ldr r3, [r3, #108] ; 0x6c - 8043ace: 2b00 cmp r3, #0 - 8043ad0: d106 bne.n 8043ae0 - 8043ad2: 4b06 ldr r3, [pc, #24] ; (8043aec ) - 8043ad4: f240 4265 movw r2, #1125 ; 0x465 - 8043ad8: 490b ldr r1, [pc, #44] ; (8043b08 ) - 8043ada: 4806 ldr r0, [pc, #24] ; (8043af4 ) - 8043adc: f004 fa62 bl 8047fa4 + 8043b02: 687b ldr r3, [r7, #4] + 8043b04: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043b06: 2b00 cmp r3, #0 + 8043b08: d10a bne.n 8043b20 + 8043b0a: 687b ldr r3, [r7, #4] + 8043b0c: 6edb ldr r3, [r3, #108] ; 0x6c + 8043b0e: 2b00 cmp r3, #0 + 8043b10: d106 bne.n 8043b20 + 8043b12: 4b06 ldr r3, [pc, #24] ; (8043b2c ) + 8043b14: f240 4265 movw r2, #1125 ; 0x465 + 8043b18: 490b ldr r1, [pc, #44] ; (8043b48 ) + 8043b1a: 4806 ldr r0, [pc, #24] ; (8043b34 ) + 8043b1c: f004 fa62 bl 8047fe4 pcb->unacked != NULL || pcb->unsent != NULL); } return ERR_OK; - 8043ae0: 2300 movs r3, #0 -} - 8043ae2: 4618 mov r0, r3 - 8043ae4: 3720 adds r7, #32 - 8043ae6: 46bd mov sp, r7 - 8043ae8: bd80 pop {r7, pc} - 8043aea: bf00 nop - 8043aec: 0804b818 .word 0x0804b818 - 8043af0: 0804bc3c .word 0x0804bc3c - 8043af4: 0804b86c .word 0x0804b86c - 8043af8: 0804bc94 .word 0x0804bc94 - 8043afc: 0804bcb4 .word 0x0804bcb4 - 8043b00: 0804bcf0 .word 0x0804bcf0 - 8043b04: 0804bd08 .word 0x0804bd08 - 8043b08: 0804bd34 .word 0x0804bd34 - -08043b0c : + 8043b20: 2300 movs r3, #0 +} + 8043b22: 4618 mov r0, r3 + 8043b24: 3720 adds r7, #32 + 8043b26: 46bd mov sp, r7 + 8043b28: bd80 pop {r7, pc} + 8043b2a: bf00 nop + 8043b2c: 0804b858 .word 0x0804b858 + 8043b30: 0804bc7c .word 0x0804bc7c + 8043b34: 0804b8ac .word 0x0804b8ac + 8043b38: 0804bcd4 .word 0x0804bcd4 + 8043b3c: 0804bcf4 .word 0x0804bcf4 + 8043b40: 0804bd30 .word 0x0804bd30 + 8043b44: 0804bd48 .word 0x0804bd48 + 8043b48: 0804bd74 .word 0x0804bd74 + +08043b4c : * @return ERR_OK if data has been sent or nothing to send * another err_t on error */ err_t tcp_output(struct tcp_pcb *pcb) { - 8043b0c: b5b0 push {r4, r5, r7, lr} - 8043b0e: b08a sub sp, #40 ; 0x28 - 8043b10: af00 add r7, sp, #0 - 8043b12: 6078 str r0, [r7, #4] + 8043b4c: b5b0 push {r4, r5, r7, lr} + 8043b4e: b08a sub sp, #40 ; 0x28 + 8043b50: af00 add r7, sp, #0 + 8043b52: 6078 str r0, [r7, #4] s16_t i = 0; #endif /* TCP_CWND_DEBUG */ LWIP_ASSERT_CORE_LOCKED(); LWIP_ASSERT("tcp_output: invalid pcb", pcb != NULL); - 8043b14: 687b ldr r3, [r7, #4] - 8043b16: 2b00 cmp r3, #0 - 8043b18: d106 bne.n 8043b28 - 8043b1a: 4b8a ldr r3, [pc, #552] ; (8043d44 ) - 8043b1c: f240 42e1 movw r2, #1249 ; 0x4e1 - 8043b20: 4989 ldr r1, [pc, #548] ; (8043d48 ) - 8043b22: 488a ldr r0, [pc, #552] ; (8043d4c ) - 8043b24: f004 fa3e bl 8047fa4 + 8043b54: 687b ldr r3, [r7, #4] + 8043b56: 2b00 cmp r3, #0 + 8043b58: d106 bne.n 8043b68 + 8043b5a: 4b8a ldr r3, [pc, #552] ; (8043d84 ) + 8043b5c: f240 42e1 movw r2, #1249 ; 0x4e1 + 8043b60: 4989 ldr r1, [pc, #548] ; (8043d88 ) + 8043b62: 488a ldr r0, [pc, #552] ; (8043d8c ) + 8043b64: f004 fa3e bl 8047fe4 /* pcb->state LISTEN not allowed here */ LWIP_ASSERT("don't call tcp_output for listen-pcbs", - 8043b28: 687b ldr r3, [r7, #4] - 8043b2a: 7d1b ldrb r3, [r3, #20] - 8043b2c: 2b01 cmp r3, #1 - 8043b2e: d106 bne.n 8043b3e - 8043b30: 4b84 ldr r3, [pc, #528] ; (8043d44 ) - 8043b32: f240 42e3 movw r2, #1251 ; 0x4e3 - 8043b36: 4986 ldr r1, [pc, #536] ; (8043d50 ) - 8043b38: 4884 ldr r0, [pc, #528] ; (8043d4c ) - 8043b3a: f004 fa33 bl 8047fa4 + 8043b68: 687b ldr r3, [r7, #4] + 8043b6a: 7d1b ldrb r3, [r3, #20] + 8043b6c: 2b01 cmp r3, #1 + 8043b6e: d106 bne.n 8043b7e + 8043b70: 4b84 ldr r3, [pc, #528] ; (8043d84 ) + 8043b72: f240 42e3 movw r2, #1251 ; 0x4e3 + 8043b76: 4986 ldr r1, [pc, #536] ; (8043d90 ) + 8043b78: 4884 ldr r0, [pc, #528] ; (8043d8c ) + 8043b7a: f004 fa33 bl 8047fe4 /* First, check if we are invoked by the TCP input processing code. If so, we do not output anything. Instead, we rely on the input processing code to call us when input processing is done with. */ if (tcp_input_pcb == pcb) { - 8043b3e: 4b85 ldr r3, [pc, #532] ; (8043d54 ) - 8043b40: 681b ldr r3, [r3, #0] - 8043b42: 687a ldr r2, [r7, #4] - 8043b44: 429a cmp r2, r3 - 8043b46: d101 bne.n 8043b4c + 8043b7e: 4b85 ldr r3, [pc, #532] ; (8043d94 ) + 8043b80: 681b ldr r3, [r3, #0] + 8043b82: 687a ldr r2, [r7, #4] + 8043b84: 429a cmp r2, r3 + 8043b86: d101 bne.n 8043b8c return ERR_OK; - 8043b48: 2300 movs r3, #0 - 8043b4a: e1ce b.n 8043eea + 8043b88: 2300 movs r3, #0 + 8043b8a: e1ce b.n 8043f2a } wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); - 8043b4c: 687b ldr r3, [r7, #4] - 8043b4e: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 - 8043b52: 687b ldr r3, [r7, #4] - 8043b54: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 8043b58: 4293 cmp r3, r2 - 8043b5a: bf28 it cs - 8043b5c: 4613 movcs r3, r2 - 8043b5e: b29b uxth r3, r3 - 8043b60: 61bb str r3, [r7, #24] + 8043b8c: 687b ldr r3, [r7, #4] + 8043b8e: f8b3 2048 ldrh.w r2, [r3, #72] ; 0x48 + 8043b92: 687b ldr r3, [r7, #4] + 8043b94: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 8043b98: 4293 cmp r3, r2 + 8043b9a: bf28 it cs + 8043b9c: 4613 movcs r3, r2 + 8043b9e: b29b uxth r3, r3 + 8043ba0: 61bb str r3, [r7, #24] seg = pcb->unsent; - 8043b62: 687b ldr r3, [r7, #4] - 8043b64: 6edb ldr r3, [r3, #108] ; 0x6c - 8043b66: 627b str r3, [r7, #36] ; 0x24 + 8043ba2: 687b ldr r3, [r7, #4] + 8043ba4: 6edb ldr r3, [r3, #108] ; 0x6c + 8043ba6: 627b str r3, [r7, #36] ; 0x24 if (seg == NULL) { - 8043b68: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043b6a: 2b00 cmp r3, #0 - 8043b6c: d10b bne.n 8043b86 + 8043ba8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043baa: 2b00 cmp r3, #0 + 8043bac: d10b bne.n 8043bc6 ", seg == NULL, ack %"U32_F"\n", pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack)); /* If the TF_ACK_NOW flag is set and the ->unsent queue is empty, construct * an empty ACK segment and send it. */ if (pcb->flags & TF_ACK_NOW) { - 8043b6e: 687b ldr r3, [r7, #4] - 8043b70: 8b5b ldrh r3, [r3, #26] - 8043b72: f003 0302 and.w r3, r3, #2 - 8043b76: 2b00 cmp r3, #0 - 8043b78: f000 81aa beq.w 8043ed0 + 8043bae: 687b ldr r3, [r7, #4] + 8043bb0: 8b5b ldrh r3, [r3, #26] + 8043bb2: f003 0302 and.w r3, r3, #2 + 8043bb6: 2b00 cmp r3, #0 + 8043bb8: f000 81aa beq.w 8043f10 return tcp_send_empty_ack(pcb); - 8043b7c: 6878 ldr r0, [r7, #4] - 8043b7e: f000 fdcb bl 8044718 - 8043b82: 4603 mov r3, r0 - 8043b84: e1b1 b.n 8043eea + 8043bbc: 6878 ldr r0, [r7, #4] + 8043bbe: f000 fdcb bl 8044758 + 8043bc2: 4603 mov r3, r0 + 8043bc4: e1b1 b.n 8043f2a pcb->snd_wnd, pcb->cwnd, wnd, lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len, lwip_ntohl(seg->tcphdr->seqno), pcb->lastack)); } netif = tcp_route(pcb, &pcb->local_ip, &pcb->remote_ip); - 8043b86: 6879 ldr r1, [r7, #4] - 8043b88: 687b ldr r3, [r7, #4] - 8043b8a: 3304 adds r3, #4 - 8043b8c: 461a mov r2, r3 - 8043b8e: 6878 ldr r0, [r7, #4] - 8043b90: f7ff f824 bl 8042bdc - 8043b94: 6178 str r0, [r7, #20] + 8043bc6: 6879 ldr r1, [r7, #4] + 8043bc8: 687b ldr r3, [r7, #4] + 8043bca: 3304 adds r3, #4 + 8043bcc: 461a mov r2, r3 + 8043bce: 6878 ldr r0, [r7, #4] + 8043bd0: f7ff f824 bl 8042c1c + 8043bd4: 6178 str r0, [r7, #20] if (netif == NULL) { - 8043b96: 697b ldr r3, [r7, #20] - 8043b98: 2b00 cmp r3, #0 - 8043b9a: d102 bne.n 8043ba2 + 8043bd6: 697b ldr r3, [r7, #20] + 8043bd8: 2b00 cmp r3, #0 + 8043bda: d102 bne.n 8043be2 return ERR_RTE; - 8043b9c: f06f 0303 mvn.w r3, #3 - 8043ba0: e1a3 b.n 8043eea + 8043bdc: f06f 0303 mvn.w r3, #3 + 8043be0: e1a3 b.n 8043f2a } /* If we don't have a local IP address, we get one from netif */ if (ip_addr_isany(&pcb->local_ip)) { - 8043ba2: 687b ldr r3, [r7, #4] - 8043ba4: 2b00 cmp r3, #0 - 8043ba6: d003 beq.n 8043bb0 - 8043ba8: 687b ldr r3, [r7, #4] - 8043baa: 681b ldr r3, [r3, #0] - 8043bac: 2b00 cmp r3, #0 - 8043bae: d111 bne.n 8043bd4 + 8043be2: 687b ldr r3, [r7, #4] + 8043be4: 2b00 cmp r3, #0 + 8043be6: d003 beq.n 8043bf0 + 8043be8: 687b ldr r3, [r7, #4] + 8043bea: 681b ldr r3, [r3, #0] + 8043bec: 2b00 cmp r3, #0 + 8043bee: d111 bne.n 8043c14 const ip_addr_t *local_ip = ip_netif_get_local_ip(netif, &pcb->remote_ip); - 8043bb0: 697b ldr r3, [r7, #20] - 8043bb2: 2b00 cmp r3, #0 - 8043bb4: d002 beq.n 8043bbc - 8043bb6: 697b ldr r3, [r7, #20] - 8043bb8: 3304 adds r3, #4 - 8043bba: e000 b.n 8043bbe - 8043bbc: 2300 movs r3, #0 - 8043bbe: 613b str r3, [r7, #16] + 8043bf0: 697b ldr r3, [r7, #20] + 8043bf2: 2b00 cmp r3, #0 + 8043bf4: d002 beq.n 8043bfc + 8043bf6: 697b ldr r3, [r7, #20] + 8043bf8: 3304 adds r3, #4 + 8043bfa: e000 b.n 8043bfe + 8043bfc: 2300 movs r3, #0 + 8043bfe: 613b str r3, [r7, #16] if (local_ip == NULL) { - 8043bc0: 693b ldr r3, [r7, #16] - 8043bc2: 2b00 cmp r3, #0 - 8043bc4: d102 bne.n 8043bcc + 8043c00: 693b ldr r3, [r7, #16] + 8043c02: 2b00 cmp r3, #0 + 8043c04: d102 bne.n 8043c0c return ERR_RTE; - 8043bc6: f06f 0303 mvn.w r3, #3 - 8043bca: e18e b.n 8043eea + 8043c06: f06f 0303 mvn.w r3, #3 + 8043c0a: e18e b.n 8043f2a } ip_addr_copy(pcb->local_ip, *local_ip); - 8043bcc: 693b ldr r3, [r7, #16] - 8043bce: 681a ldr r2, [r3, #0] - 8043bd0: 687b ldr r3, [r7, #4] - 8043bd2: 601a str r2, [r3, #0] + 8043c0c: 693b ldr r3, [r7, #16] + 8043c0e: 681a ldr r2, [r3, #0] + 8043c10: 687b ldr r3, [r7, #4] + 8043c12: 601a str r2, [r3, #0] } /* Handle the current segment not fitting within the window */ if (lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd) { - 8043bd4: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043bd6: 68db ldr r3, [r3, #12] - 8043bd8: 685b ldr r3, [r3, #4] - 8043bda: 4618 mov r0, r3 - 8043bdc: f7f9 fa0b bl 803cff6 - 8043be0: 4602 mov r2, r0 - 8043be2: 687b ldr r3, [r7, #4] - 8043be4: 6c5b ldr r3, [r3, #68] ; 0x44 - 8043be6: 1ad3 subs r3, r2, r3 - 8043be8: 6a7a ldr r2, [r7, #36] ; 0x24 - 8043bea: 8912 ldrh r2, [r2, #8] - 8043bec: 4413 add r3, r2 - 8043bee: 69ba ldr r2, [r7, #24] - 8043bf0: 429a cmp r2, r3 - 8043bf2: d227 bcs.n 8043c44 + 8043c14: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043c16: 68db ldr r3, [r3, #12] + 8043c18: 685b ldr r3, [r3, #4] + 8043c1a: 4618 mov r0, r3 + 8043c1c: f7f9 fa0b bl 803d036 + 8043c20: 4602 mov r2, r0 + 8043c22: 687b ldr r3, [r7, #4] + 8043c24: 6c5b ldr r3, [r3, #68] ; 0x44 + 8043c26: 1ad3 subs r3, r2, r3 + 8043c28: 6a7a ldr r2, [r7, #36] ; 0x24 + 8043c2a: 8912 ldrh r2, [r2, #8] + 8043c2c: 4413 add r3, r2 + 8043c2e: 69ba ldr r2, [r7, #24] + 8043c30: 429a cmp r2, r3 + 8043c32: d227 bcs.n 8043c84 * within the remaining (could be 0) send window and RTO timer is not running (we * have no in-flight data). If window is still too small after persist timer fires, * then we split the segment. We don't consider the congestion window since a cwnd * smaller than 1 SMSS implies in-flight data */ if (wnd == pcb->snd_wnd && pcb->unacked == NULL && pcb->persist_backoff == 0) { - 8043bf4: 687b ldr r3, [r7, #4] - 8043bf6: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 - 8043bfa: 461a mov r2, r3 - 8043bfc: 69bb ldr r3, [r7, #24] - 8043bfe: 4293 cmp r3, r2 - 8043c00: d114 bne.n 8043c2c - 8043c02: 687b ldr r3, [r7, #4] - 8043c04: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043c06: 2b00 cmp r3, #0 - 8043c08: d110 bne.n 8043c2c - 8043c0a: 687b ldr r3, [r7, #4] - 8043c0c: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 - 8043c10: 2b00 cmp r3, #0 - 8043c12: d10b bne.n 8043c2c + 8043c34: 687b ldr r3, [r7, #4] + 8043c36: f8b3 3060 ldrh.w r3, [r3, #96] ; 0x60 + 8043c3a: 461a mov r2, r3 + 8043c3c: 69bb ldr r3, [r7, #24] + 8043c3e: 4293 cmp r3, r2 + 8043c40: d114 bne.n 8043c6c + 8043c42: 687b ldr r3, [r7, #4] + 8043c44: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043c46: 2b00 cmp r3, #0 + 8043c48: d110 bne.n 8043c6c + 8043c4a: 687b ldr r3, [r7, #4] + 8043c4c: f893 3099 ldrb.w r3, [r3, #153] ; 0x99 + 8043c50: 2b00 cmp r3, #0 + 8043c52: d10b bne.n 8043c6c pcb->persist_cnt = 0; - 8043c14: 687b ldr r3, [r7, #4] - 8043c16: 2200 movs r2, #0 - 8043c18: f883 2098 strb.w r2, [r3, #152] ; 0x98 + 8043c54: 687b ldr r3, [r7, #4] + 8043c56: 2200 movs r2, #0 + 8043c58: f883 2098 strb.w r2, [r3, #152] ; 0x98 pcb->persist_backoff = 1; - 8043c1c: 687b ldr r3, [r7, #4] - 8043c1e: 2201 movs r2, #1 - 8043c20: f883 2099 strb.w r2, [r3, #153] ; 0x99 + 8043c5c: 687b ldr r3, [r7, #4] + 8043c5e: 2201 movs r2, #1 + 8043c60: f883 2099 strb.w r2, [r3, #153] ; 0x99 pcb->persist_probe = 0; - 8043c24: 687b ldr r3, [r7, #4] - 8043c26: 2200 movs r2, #0 - 8043c28: f883 209a strb.w r2, [r3, #154] ; 0x9a + 8043c64: 687b ldr r3, [r7, #4] + 8043c66: 2200 movs r2, #0 + 8043c68: f883 209a strb.w r2, [r3, #154] ; 0x9a } /* We need an ACK, but can't send data now, so send an empty ACK */ if (pcb->flags & TF_ACK_NOW) { - 8043c2c: 687b ldr r3, [r7, #4] - 8043c2e: 8b5b ldrh r3, [r3, #26] - 8043c30: f003 0302 and.w r3, r3, #2 - 8043c34: 2b00 cmp r3, #0 - 8043c36: f000 814d beq.w 8043ed4 + 8043c6c: 687b ldr r3, [r7, #4] + 8043c6e: 8b5b ldrh r3, [r3, #26] + 8043c70: f003 0302 and.w r3, r3, #2 + 8043c74: 2b00 cmp r3, #0 + 8043c76: f000 814d beq.w 8043f14 return tcp_send_empty_ack(pcb); - 8043c3a: 6878 ldr r0, [r7, #4] - 8043c3c: f000 fd6c bl 8044718 - 8043c40: 4603 mov r3, r0 - 8043c42: e152 b.n 8043eea + 8043c7a: 6878 ldr r0, [r7, #4] + 8043c7c: f000 fd6c bl 8044758 + 8043c80: 4603 mov r3, r0 + 8043c82: e152 b.n 8043f2a } goto output_done; } /* Stop persist timer, above conditions are not active */ pcb->persist_backoff = 0; - 8043c44: 687b ldr r3, [r7, #4] - 8043c46: 2200 movs r2, #0 - 8043c48: f883 2099 strb.w r2, [r3, #153] ; 0x99 + 8043c84: 687b ldr r3, [r7, #4] + 8043c86: 2200 movs r2, #0 + 8043c88: f883 2099 strb.w r2, [r3, #153] ; 0x99 /* useg should point to last segment on unacked queue */ useg = pcb->unacked; - 8043c4c: 687b ldr r3, [r7, #4] - 8043c4e: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043c50: 623b str r3, [r7, #32] + 8043c8c: 687b ldr r3, [r7, #4] + 8043c8e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043c90: 623b str r3, [r7, #32] if (useg != NULL) { - 8043c52: 6a3b ldr r3, [r7, #32] - 8043c54: 2b00 cmp r3, #0 - 8043c56: f000 811c beq.w 8043e92 + 8043c92: 6a3b ldr r3, [r7, #32] + 8043c94: 2b00 cmp r3, #0 + 8043c96: f000 811c beq.w 8043ed2 for (; useg->next != NULL; useg = useg->next); - 8043c5a: e002 b.n 8043c62 - 8043c5c: 6a3b ldr r3, [r7, #32] - 8043c5e: 681b ldr r3, [r3, #0] - 8043c60: 623b str r3, [r7, #32] - 8043c62: 6a3b ldr r3, [r7, #32] - 8043c64: 681b ldr r3, [r3, #0] - 8043c66: 2b00 cmp r3, #0 - 8043c68: d1f8 bne.n 8043c5c + 8043c9a: e002 b.n 8043ca2 + 8043c9c: 6a3b ldr r3, [r7, #32] + 8043c9e: 681b ldr r3, [r3, #0] + 8043ca0: 623b str r3, [r7, #32] + 8043ca2: 6a3b ldr r3, [r7, #32] + 8043ca4: 681b ldr r3, [r3, #0] + 8043ca6: 2b00 cmp r3, #0 + 8043ca8: d1f8 bne.n 8043c9c } /* data available and window allows it to be sent? */ while (seg != NULL && - 8043c6a: e112 b.n 8043e92 + 8043caa: e112 b.n 8043ed2 lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { LWIP_ASSERT("RST not expected here!", - 8043c6c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043c6e: 68db ldr r3, [r3, #12] - 8043c70: 899b ldrh r3, [r3, #12] - 8043c72: b29b uxth r3, r3 - 8043c74: 4618 mov r0, r3 - 8043c76: f7f9 f9a9 bl 803cfcc - 8043c7a: 4603 mov r3, r0 - 8043c7c: b2db uxtb r3, r3 - 8043c7e: f003 0304 and.w r3, r3, #4 - 8043c82: 2b00 cmp r3, #0 - 8043c84: d006 beq.n 8043c94 - 8043c86: 4b2f ldr r3, [pc, #188] ; (8043d44 ) - 8043c88: f240 5236 movw r2, #1334 ; 0x536 - 8043c8c: 4932 ldr r1, [pc, #200] ; (8043d58 ) - 8043c8e: 482f ldr r0, [pc, #188] ; (8043d4c ) - 8043c90: f004 f988 bl 8047fa4 + 8043cac: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043cae: 68db ldr r3, [r3, #12] + 8043cb0: 899b ldrh r3, [r3, #12] + 8043cb2: b29b uxth r3, r3 + 8043cb4: 4618 mov r0, r3 + 8043cb6: f7f9 f9a9 bl 803d00c + 8043cba: 4603 mov r3, r0 + 8043cbc: b2db uxtb r3, r3 + 8043cbe: f003 0304 and.w r3, r3, #4 + 8043cc2: 2b00 cmp r3, #0 + 8043cc4: d006 beq.n 8043cd4 + 8043cc6: 4b2f ldr r3, [pc, #188] ; (8043d84 ) + 8043cc8: f240 5236 movw r2, #1334 ; 0x536 + 8043ccc: 4932 ldr r1, [pc, #200] ; (8043d98 ) + 8043cce: 482f ldr r0, [pc, #188] ; (8043d8c ) + 8043cd0: f004 f988 bl 8047fe4 * - if tcp_write had a memory error before (prevent delayed ACK timeout) or * - if FIN was already enqueued for this PCB (SYN is always alone in a segment - * either seg->next != NULL or pcb->unacked == NULL; * RST is no sent using tcp_write/tcp_output. */ if ((tcp_do_output_nagle(pcb) == 0) && - 8043c94: 687b ldr r3, [r7, #4] - 8043c96: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043c98: 2b00 cmp r3, #0 - 8043c9a: d01f beq.n 8043cdc - 8043c9c: 687b ldr r3, [r7, #4] - 8043c9e: 8b5b ldrh r3, [r3, #26] - 8043ca0: f003 0344 and.w r3, r3, #68 ; 0x44 - 8043ca4: 2b00 cmp r3, #0 - 8043ca6: d119 bne.n 8043cdc - 8043ca8: 687b ldr r3, [r7, #4] - 8043caa: 6edb ldr r3, [r3, #108] ; 0x6c - 8043cac: 2b00 cmp r3, #0 - 8043cae: d00b beq.n 8043cc8 - 8043cb0: 687b ldr r3, [r7, #4] - 8043cb2: 6edb ldr r3, [r3, #108] ; 0x6c - 8043cb4: 681b ldr r3, [r3, #0] - 8043cb6: 2b00 cmp r3, #0 - 8043cb8: d110 bne.n 8043cdc - 8043cba: 687b ldr r3, [r7, #4] - 8043cbc: 6edb ldr r3, [r3, #108] ; 0x6c - 8043cbe: 891a ldrh r2, [r3, #8] - 8043cc0: 687b ldr r3, [r7, #4] - 8043cc2: 8e5b ldrh r3, [r3, #50] ; 0x32 - 8043cc4: 429a cmp r2, r3 - 8043cc6: d209 bcs.n 8043cdc - 8043cc8: 687b ldr r3, [r7, #4] - 8043cca: f8b3 3064 ldrh.w r3, [r3, #100] ; 0x64 - 8043cce: 2b00 cmp r3, #0 - 8043cd0: d004 beq.n 8043cdc - 8043cd2: 687b ldr r3, [r7, #4] - 8043cd4: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 - 8043cd8: 2b08 cmp r3, #8 - 8043cda: d901 bls.n 8043ce0 - 8043cdc: 2301 movs r3, #1 - 8043cde: e000 b.n 8043ce2 - 8043ce0: 2300 movs r3, #0 - 8043ce2: 2b00 cmp r3, #0 - 8043ce4: d106 bne.n 8043cf4 + 8043cd4: 687b ldr r3, [r7, #4] + 8043cd6: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043cd8: 2b00 cmp r3, #0 + 8043cda: d01f beq.n 8043d1c + 8043cdc: 687b ldr r3, [r7, #4] + 8043cde: 8b5b ldrh r3, [r3, #26] + 8043ce0: f003 0344 and.w r3, r3, #68 ; 0x44 + 8043ce4: 2b00 cmp r3, #0 + 8043ce6: d119 bne.n 8043d1c + 8043ce8: 687b ldr r3, [r7, #4] + 8043cea: 6edb ldr r3, [r3, #108] ; 0x6c + 8043cec: 2b00 cmp r3, #0 + 8043cee: d00b beq.n 8043d08 + 8043cf0: 687b ldr r3, [r7, #4] + 8043cf2: 6edb ldr r3, [r3, #108] ; 0x6c + 8043cf4: 681b ldr r3, [r3, #0] + 8043cf6: 2b00 cmp r3, #0 + 8043cf8: d110 bne.n 8043d1c + 8043cfa: 687b ldr r3, [r7, #4] + 8043cfc: 6edb ldr r3, [r3, #108] ; 0x6c + 8043cfe: 891a ldrh r2, [r3, #8] + 8043d00: 687b ldr r3, [r7, #4] + 8043d02: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8043d04: 429a cmp r2, r3 + 8043d06: d209 bcs.n 8043d1c + 8043d08: 687b ldr r3, [r7, #4] + 8043d0a: f8b3 3064 ldrh.w r3, [r3, #100] ; 0x64 + 8043d0e: 2b00 cmp r3, #0 + 8043d10: d004 beq.n 8043d1c + 8043d12: 687b ldr r3, [r7, #4] + 8043d14: f8b3 3066 ldrh.w r3, [r3, #102] ; 0x66 + 8043d18: 2b08 cmp r3, #8 + 8043d1a: d901 bls.n 8043d20 + 8043d1c: 2301 movs r3, #1 + 8043d1e: e000 b.n 8043d22 + 8043d20: 2300 movs r3, #0 + 8043d22: 2b00 cmp r3, #0 + 8043d24: d106 bne.n 8043d34 ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)) { - 8043ce6: 687b ldr r3, [r7, #4] - 8043ce8: 8b5b ldrh r3, [r3, #26] - 8043cea: f003 03a0 and.w r3, r3, #160 ; 0xa0 + 8043d26: 687b ldr r3, [r7, #4] + 8043d28: 8b5b ldrh r3, [r3, #26] + 8043d2a: f003 03a0 and.w r3, r3, #160 ; 0xa0 if ((tcp_do_output_nagle(pcb) == 0) && - 8043cee: 2b00 cmp r3, #0 - 8043cf0: f000 80e4 beq.w 8043ebc + 8043d2e: 2b00 cmp r3, #0 + 8043d30: f000 80e4 beq.w 8043efc pcb->lastack, lwip_ntohl(seg->tcphdr->seqno), pcb->lastack, i)); ++i; #endif /* TCP_CWND_DEBUG */ if (pcb->state != SYN_SENT) { - 8043cf4: 687b ldr r3, [r7, #4] - 8043cf6: 7d1b ldrb r3, [r3, #20] - 8043cf8: 2b02 cmp r3, #2 - 8043cfa: d00d beq.n 8043d18 + 8043d34: 687b ldr r3, [r7, #4] + 8043d36: 7d1b ldrb r3, [r3, #20] + 8043d38: 2b02 cmp r3, #2 + 8043d3a: d00d beq.n 8043d58 TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); - 8043cfc: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043cfe: 68db ldr r3, [r3, #12] - 8043d00: 899b ldrh r3, [r3, #12] - 8043d02: b29c uxth r4, r3 - 8043d04: 2010 movs r0, #16 - 8043d06: f7f9 f961 bl 803cfcc - 8043d0a: 4603 mov r3, r0 - 8043d0c: 461a mov r2, r3 - 8043d0e: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043d10: 68db ldr r3, [r3, #12] - 8043d12: 4322 orrs r2, r4 - 8043d14: b292 uxth r2, r2 - 8043d16: 819a strh r2, [r3, #12] + 8043d3c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043d3e: 68db ldr r3, [r3, #12] + 8043d40: 899b ldrh r3, [r3, #12] + 8043d42: b29c uxth r4, r3 + 8043d44: 2010 movs r0, #16 + 8043d46: f7f9 f961 bl 803d00c + 8043d4a: 4603 mov r3, r0 + 8043d4c: 461a mov r2, r3 + 8043d4e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043d50: 68db ldr r3, [r3, #12] + 8043d52: 4322 orrs r2, r4 + 8043d54: b292 uxth r2, r2 + 8043d56: 819a strh r2, [r3, #12] } err = tcp_output_segment(seg, pcb, netif); - 8043d18: 697a ldr r2, [r7, #20] - 8043d1a: 6879 ldr r1, [r7, #4] - 8043d1c: 6a78 ldr r0, [r7, #36] ; 0x24 - 8043d1e: f000 f909 bl 8043f34 - 8043d22: 4603 mov r3, r0 - 8043d24: 73fb strb r3, [r7, #15] + 8043d58: 697a ldr r2, [r7, #20] + 8043d5a: 6879 ldr r1, [r7, #4] + 8043d5c: 6a78 ldr r0, [r7, #36] ; 0x24 + 8043d5e: f000 f909 bl 8043f74 + 8043d62: 4603 mov r3, r0 + 8043d64: 73fb strb r3, [r7, #15] if (err != ERR_OK) { - 8043d26: f997 300f ldrsb.w r3, [r7, #15] - 8043d2a: 2b00 cmp r3, #0 - 8043d2c: d016 beq.n 8043d5c + 8043d66: f997 300f ldrsb.w r3, [r7, #15] + 8043d6a: 2b00 cmp r3, #0 + 8043d6c: d016 beq.n 8043d9c /* segment could not be sent, for whatever reason */ tcp_set_flags(pcb, TF_NAGLEMEMERR); - 8043d2e: 687b ldr r3, [r7, #4] - 8043d30: 8b5b ldrh r3, [r3, #26] - 8043d32: f043 0380 orr.w r3, r3, #128 ; 0x80 - 8043d36: b29a uxth r2, r3 - 8043d38: 687b ldr r3, [r7, #4] - 8043d3a: 835a strh r2, [r3, #26] + 8043d6e: 687b ldr r3, [r7, #4] + 8043d70: 8b5b ldrh r3, [r3, #26] + 8043d72: f043 0380 orr.w r3, r3, #128 ; 0x80 + 8043d76: b29a uxth r2, r3 + 8043d78: 687b ldr r3, [r7, #4] + 8043d7a: 835a strh r2, [r3, #26] return err; - 8043d3c: f997 300f ldrsb.w r3, [r7, #15] - 8043d40: e0d3 b.n 8043eea - 8043d42: bf00 nop - 8043d44: 0804b818 .word 0x0804b818 - 8043d48: 0804bd5c .word 0x0804bd5c - 8043d4c: 0804b86c .word 0x0804b86c - 8043d50: 0804bd74 .word 0x0804bd74 - 8043d54: 2400eb34 .word 0x2400eb34 - 8043d58: 0804bd9c .word 0x0804bd9c + 8043d7c: f997 300f ldrsb.w r3, [r7, #15] + 8043d80: e0d3 b.n 8043f2a + 8043d82: bf00 nop + 8043d84: 0804b858 .word 0x0804b858 + 8043d88: 0804bd9c .word 0x0804bd9c + 8043d8c: 0804b8ac .word 0x0804b8ac + 8043d90: 0804bdb4 .word 0x0804bdb4 + 8043d94: 2400eb34 .word 0x2400eb34 + 8043d98: 0804bddc .word 0x0804bddc } #if TCP_OVERSIZE_DBGCHECK seg->oversize_left = 0; #endif /* TCP_OVERSIZE_DBGCHECK */ pcb->unsent = seg->next; - 8043d5c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043d5e: 681a ldr r2, [r3, #0] - 8043d60: 687b ldr r3, [r7, #4] - 8043d62: 66da str r2, [r3, #108] ; 0x6c + 8043d9c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043d9e: 681a ldr r2, [r3, #0] + 8043da0: 687b ldr r3, [r7, #4] + 8043da2: 66da str r2, [r3, #108] ; 0x6c if (pcb->state != SYN_SENT) { - 8043d64: 687b ldr r3, [r7, #4] - 8043d66: 7d1b ldrb r3, [r3, #20] - 8043d68: 2b02 cmp r3, #2 - 8043d6a: d006 beq.n 8043d7a + 8043da4: 687b ldr r3, [r7, #4] + 8043da6: 7d1b ldrb r3, [r3, #20] + 8043da8: 2b02 cmp r3, #2 + 8043daa: d006 beq.n 8043dba tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 8043d6c: 687b ldr r3, [r7, #4] - 8043d6e: 8b5b ldrh r3, [r3, #26] - 8043d70: f023 0303 bic.w r3, r3, #3 - 8043d74: b29a uxth r2, r3 - 8043d76: 687b ldr r3, [r7, #4] - 8043d78: 835a strh r2, [r3, #26] + 8043dac: 687b ldr r3, [r7, #4] + 8043dae: 8b5b ldrh r3, [r3, #26] + 8043db0: f023 0303 bic.w r3, r3, #3 + 8043db4: b29a uxth r2, r3 + 8043db6: 687b ldr r3, [r7, #4] + 8043db8: 835a strh r2, [r3, #26] } snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - 8043d7a: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043d7c: 68db ldr r3, [r3, #12] - 8043d7e: 685b ldr r3, [r3, #4] - 8043d80: 4618 mov r0, r3 - 8043d82: f7f9 f938 bl 803cff6 - 8043d86: 4604 mov r4, r0 - 8043d88: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043d8a: 891b ldrh r3, [r3, #8] - 8043d8c: 461d mov r5, r3 - 8043d8e: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043d90: 68db ldr r3, [r3, #12] - 8043d92: 899b ldrh r3, [r3, #12] - 8043d94: b29b uxth r3, r3 - 8043d96: 4618 mov r0, r3 - 8043d98: f7f9 f918 bl 803cfcc - 8043d9c: 4603 mov r3, r0 - 8043d9e: b2db uxtb r3, r3 - 8043da0: f003 0303 and.w r3, r3, #3 - 8043da4: 2b00 cmp r3, #0 - 8043da6: d001 beq.n 8043dac - 8043da8: 2301 movs r3, #1 - 8043daa: e000 b.n 8043dae - 8043dac: 2300 movs r3, #0 - 8043dae: 442b add r3, r5 - 8043db0: 4423 add r3, r4 - 8043db2: 60bb str r3, [r7, #8] + 8043dba: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043dbc: 68db ldr r3, [r3, #12] + 8043dbe: 685b ldr r3, [r3, #4] + 8043dc0: 4618 mov r0, r3 + 8043dc2: f7f9 f938 bl 803d036 + 8043dc6: 4604 mov r4, r0 + 8043dc8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043dca: 891b ldrh r3, [r3, #8] + 8043dcc: 461d mov r5, r3 + 8043dce: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043dd0: 68db ldr r3, [r3, #12] + 8043dd2: 899b ldrh r3, [r3, #12] + 8043dd4: b29b uxth r3, r3 + 8043dd6: 4618 mov r0, r3 + 8043dd8: f7f9 f918 bl 803d00c + 8043ddc: 4603 mov r3, r0 + 8043dde: b2db uxtb r3, r3 + 8043de0: f003 0303 and.w r3, r3, #3 + 8043de4: 2b00 cmp r3, #0 + 8043de6: d001 beq.n 8043dec + 8043de8: 2301 movs r3, #1 + 8043dea: e000 b.n 8043dee + 8043dec: 2300 movs r3, #0 + 8043dee: 442b add r3, r5 + 8043df0: 4423 add r3, r4 + 8043df2: 60bb str r3, [r7, #8] if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - 8043db4: 687b ldr r3, [r7, #4] - 8043db6: 6d1a ldr r2, [r3, #80] ; 0x50 - 8043db8: 68bb ldr r3, [r7, #8] - 8043dba: 1ad3 subs r3, r2, r3 - 8043dbc: 2b00 cmp r3, #0 - 8043dbe: da02 bge.n 8043dc6 + 8043df4: 687b ldr r3, [r7, #4] + 8043df6: 6d1a ldr r2, [r3, #80] ; 0x50 + 8043df8: 68bb ldr r3, [r7, #8] + 8043dfa: 1ad3 subs r3, r2, r3 + 8043dfc: 2b00 cmp r3, #0 + 8043dfe: da02 bge.n 8043e06 pcb->snd_nxt = snd_nxt; - 8043dc0: 687b ldr r3, [r7, #4] - 8043dc2: 68ba ldr r2, [r7, #8] - 8043dc4: 651a str r2, [r3, #80] ; 0x50 + 8043e00: 687b ldr r3, [r7, #4] + 8043e02: 68ba ldr r2, [r7, #8] + 8043e04: 651a str r2, [r3, #80] ; 0x50 } /* put segment on unacknowledged list if length > 0 */ if (TCP_TCPLEN(seg) > 0) { - 8043dc6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043dc8: 891b ldrh r3, [r3, #8] - 8043dca: 461c mov r4, r3 - 8043dcc: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043dce: 68db ldr r3, [r3, #12] - 8043dd0: 899b ldrh r3, [r3, #12] - 8043dd2: b29b uxth r3, r3 - 8043dd4: 4618 mov r0, r3 - 8043dd6: f7f9 f8f9 bl 803cfcc - 8043dda: 4603 mov r3, r0 - 8043ddc: b2db uxtb r3, r3 - 8043dde: f003 0303 and.w r3, r3, #3 - 8043de2: 2b00 cmp r3, #0 - 8043de4: d001 beq.n 8043dea - 8043de6: 2301 movs r3, #1 - 8043de8: e000 b.n 8043dec - 8043dea: 2300 movs r3, #0 - 8043dec: 4423 add r3, r4 - 8043dee: 2b00 cmp r3, #0 - 8043df0: d049 beq.n 8043e86 + 8043e06: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e08: 891b ldrh r3, [r3, #8] + 8043e0a: 461c mov r4, r3 + 8043e0c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e0e: 68db ldr r3, [r3, #12] + 8043e10: 899b ldrh r3, [r3, #12] + 8043e12: b29b uxth r3, r3 + 8043e14: 4618 mov r0, r3 + 8043e16: f7f9 f8f9 bl 803d00c + 8043e1a: 4603 mov r3, r0 + 8043e1c: b2db uxtb r3, r3 + 8043e1e: f003 0303 and.w r3, r3, #3 + 8043e22: 2b00 cmp r3, #0 + 8043e24: d001 beq.n 8043e2a + 8043e26: 2301 movs r3, #1 + 8043e28: e000 b.n 8043e2c + 8043e2a: 2300 movs r3, #0 + 8043e2c: 4423 add r3, r4 + 8043e2e: 2b00 cmp r3, #0 + 8043e30: d049 beq.n 8043ec6 seg->next = NULL; - 8043df2: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043df4: 2200 movs r2, #0 - 8043df6: 601a str r2, [r3, #0] + 8043e32: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e34: 2200 movs r2, #0 + 8043e36: 601a str r2, [r3, #0] /* unacked list is empty? */ if (pcb->unacked == NULL) { - 8043df8: 687b ldr r3, [r7, #4] - 8043dfa: 6f1b ldr r3, [r3, #112] ; 0x70 - 8043dfc: 2b00 cmp r3, #0 - 8043dfe: d105 bne.n 8043e0c + 8043e38: 687b ldr r3, [r7, #4] + 8043e3a: 6f1b ldr r3, [r3, #112] ; 0x70 + 8043e3c: 2b00 cmp r3, #0 + 8043e3e: d105 bne.n 8043e4c pcb->unacked = seg; - 8043e00: 687b ldr r3, [r7, #4] - 8043e02: 6a7a ldr r2, [r7, #36] ; 0x24 - 8043e04: 671a str r2, [r3, #112] ; 0x70 + 8043e40: 687b ldr r3, [r7, #4] + 8043e42: 6a7a ldr r2, [r7, #36] ; 0x24 + 8043e44: 671a str r2, [r3, #112] ; 0x70 useg = seg; - 8043e06: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e08: 623b str r3, [r7, #32] - 8043e0a: e03f b.n 8043e8c + 8043e46: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e48: 623b str r3, [r7, #32] + 8043e4a: e03f b.n 8043ecc /* unacked list is not empty? */ } else { /* In the case of fast retransmit, the packet should not go to the tail * of the unacked queue, but rather somewhere before it. We need to check for * this case. -STJ Jul 27, 2004 */ if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) { - 8043e0c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e0e: 68db ldr r3, [r3, #12] - 8043e10: 685b ldr r3, [r3, #4] - 8043e12: 4618 mov r0, r3 - 8043e14: f7f9 f8ef bl 803cff6 - 8043e18: 4604 mov r4, r0 - 8043e1a: 6a3b ldr r3, [r7, #32] - 8043e1c: 68db ldr r3, [r3, #12] - 8043e1e: 685b ldr r3, [r3, #4] - 8043e20: 4618 mov r0, r3 - 8043e22: f7f9 f8e8 bl 803cff6 - 8043e26: 4603 mov r3, r0 - 8043e28: 1ae3 subs r3, r4, r3 - 8043e2a: 2b00 cmp r3, #0 - 8043e2c: da24 bge.n 8043e78 + 8043e4c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e4e: 68db ldr r3, [r3, #12] + 8043e50: 685b ldr r3, [r3, #4] + 8043e52: 4618 mov r0, r3 + 8043e54: f7f9 f8ef bl 803d036 + 8043e58: 4604 mov r4, r0 + 8043e5a: 6a3b ldr r3, [r7, #32] + 8043e5c: 68db ldr r3, [r3, #12] + 8043e5e: 685b ldr r3, [r3, #4] + 8043e60: 4618 mov r0, r3 + 8043e62: f7f9 f8e8 bl 803d036 + 8043e66: 4603 mov r3, r0 + 8043e68: 1ae3 subs r3, r4, r3 + 8043e6a: 2b00 cmp r3, #0 + 8043e6c: da24 bge.n 8043eb8 /* add segment to before tail of unacked list, keeping the list sorted */ struct tcp_seg **cur_seg = &(pcb->unacked); - 8043e2e: 687b ldr r3, [r7, #4] - 8043e30: 3370 adds r3, #112 ; 0x70 - 8043e32: 61fb str r3, [r7, #28] + 8043e6e: 687b ldr r3, [r7, #4] + 8043e70: 3370 adds r3, #112 ; 0x70 + 8043e72: 61fb str r3, [r7, #28] while (*cur_seg && - 8043e34: e002 b.n 8043e3c + 8043e74: e002 b.n 8043e7c TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { cur_seg = &((*cur_seg)->next ); - 8043e36: 69fb ldr r3, [r7, #28] - 8043e38: 681b ldr r3, [r3, #0] - 8043e3a: 61fb str r3, [r7, #28] + 8043e76: 69fb ldr r3, [r7, #28] + 8043e78: 681b ldr r3, [r3, #0] + 8043e7a: 61fb str r3, [r7, #28] while (*cur_seg && - 8043e3c: 69fb ldr r3, [r7, #28] - 8043e3e: 681b ldr r3, [r3, #0] - 8043e40: 2b00 cmp r3, #0 - 8043e42: d011 beq.n 8043e68 + 8043e7c: 69fb ldr r3, [r7, #28] + 8043e7e: 681b ldr r3, [r3, #0] + 8043e80: 2b00 cmp r3, #0 + 8043e82: d011 beq.n 8043ea8 TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - 8043e44: 69fb ldr r3, [r7, #28] - 8043e46: 681b ldr r3, [r3, #0] - 8043e48: 68db ldr r3, [r3, #12] - 8043e4a: 685b ldr r3, [r3, #4] - 8043e4c: 4618 mov r0, r3 - 8043e4e: f7f9 f8d2 bl 803cff6 - 8043e52: 4604 mov r4, r0 - 8043e54: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e56: 68db ldr r3, [r3, #12] - 8043e58: 685b ldr r3, [r3, #4] - 8043e5a: 4618 mov r0, r3 - 8043e5c: f7f9 f8cb bl 803cff6 - 8043e60: 4603 mov r3, r0 - 8043e62: 1ae3 subs r3, r4, r3 + 8043e84: 69fb ldr r3, [r7, #28] + 8043e86: 681b ldr r3, [r3, #0] + 8043e88: 68db ldr r3, [r3, #12] + 8043e8a: 685b ldr r3, [r3, #4] + 8043e8c: 4618 mov r0, r3 + 8043e8e: f7f9 f8d2 bl 803d036 + 8043e92: 4604 mov r4, r0 + 8043e94: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043e96: 68db ldr r3, [r3, #12] + 8043e98: 685b ldr r3, [r3, #4] + 8043e9a: 4618 mov r0, r3 + 8043e9c: f7f9 f8cb bl 803d036 + 8043ea0: 4603 mov r3, r0 + 8043ea2: 1ae3 subs r3, r4, r3 while (*cur_seg && - 8043e64: 2b00 cmp r3, #0 - 8043e66: dbe6 blt.n 8043e36 + 8043ea4: 2b00 cmp r3, #0 + 8043ea6: dbe6 blt.n 8043e76 } seg->next = (*cur_seg); - 8043e68: 69fb ldr r3, [r7, #28] - 8043e6a: 681a ldr r2, [r3, #0] - 8043e6c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e6e: 601a str r2, [r3, #0] + 8043ea8: 69fb ldr r3, [r7, #28] + 8043eaa: 681a ldr r2, [r3, #0] + 8043eac: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043eae: 601a str r2, [r3, #0] (*cur_seg) = seg; - 8043e70: 69fb ldr r3, [r7, #28] - 8043e72: 6a7a ldr r2, [r7, #36] ; 0x24 - 8043e74: 601a str r2, [r3, #0] - 8043e76: e009 b.n 8043e8c + 8043eb0: 69fb ldr r3, [r7, #28] + 8043eb2: 6a7a ldr r2, [r7, #36] ; 0x24 + 8043eb4: 601a str r2, [r3, #0] + 8043eb6: e009 b.n 8043ecc } else { /* add segment to tail of unacked list */ useg->next = seg; - 8043e78: 6a3b ldr r3, [r7, #32] - 8043e7a: 6a7a ldr r2, [r7, #36] ; 0x24 - 8043e7c: 601a str r2, [r3, #0] + 8043eb8: 6a3b ldr r3, [r7, #32] + 8043eba: 6a7a ldr r2, [r7, #36] ; 0x24 + 8043ebc: 601a str r2, [r3, #0] useg = useg->next; - 8043e7e: 6a3b ldr r3, [r7, #32] - 8043e80: 681b ldr r3, [r3, #0] - 8043e82: 623b str r3, [r7, #32] - 8043e84: e002 b.n 8043e8c + 8043ebe: 6a3b ldr r3, [r7, #32] + 8043ec0: 681b ldr r3, [r3, #0] + 8043ec2: 623b str r3, [r7, #32] + 8043ec4: e002 b.n 8043ecc } } /* do not queue empty segments on the unacked list */ } else { tcp_seg_free(seg); - 8043e86: 6a78 ldr r0, [r7, #36] ; 0x24 - 8043e88: f7fb ffe7 bl 803fe5a + 8043ec6: 6a78 ldr r0, [r7, #36] ; 0x24 + 8043ec8: f7fb ffe7 bl 803fe9a } seg = pcb->unsent; - 8043e8c: 687b ldr r3, [r7, #4] - 8043e8e: 6edb ldr r3, [r3, #108] ; 0x6c - 8043e90: 627b str r3, [r7, #36] ; 0x24 + 8043ecc: 687b ldr r3, [r7, #4] + 8043ece: 6edb ldr r3, [r3, #108] ; 0x6c + 8043ed0: 627b str r3, [r7, #36] ; 0x24 while (seg != NULL && - 8043e92: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e94: 2b00 cmp r3, #0 - 8043e96: d012 beq.n 8043ebe + 8043ed2: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043ed4: 2b00 cmp r3, #0 + 8043ed6: d012 beq.n 8043efe lwip_ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - 8043e98: 6a7b ldr r3, [r7, #36] ; 0x24 - 8043e9a: 68db ldr r3, [r3, #12] - 8043e9c: 685b ldr r3, [r3, #4] - 8043e9e: 4618 mov r0, r3 - 8043ea0: f7f9 f8a9 bl 803cff6 - 8043ea4: 4602 mov r2, r0 - 8043ea6: 687b ldr r3, [r7, #4] - 8043ea8: 6c5b ldr r3, [r3, #68] ; 0x44 - 8043eaa: 1ad3 subs r3, r2, r3 - 8043eac: 6a7a ldr r2, [r7, #36] ; 0x24 - 8043eae: 8912 ldrh r2, [r2, #8] - 8043eb0: 4413 add r3, r2 + 8043ed8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8043eda: 68db ldr r3, [r3, #12] + 8043edc: 685b ldr r3, [r3, #4] + 8043ede: 4618 mov r0, r3 + 8043ee0: f7f9 f8a9 bl 803d036 + 8043ee4: 4602 mov r2, r0 + 8043ee6: 687b ldr r3, [r7, #4] + 8043ee8: 6c5b ldr r3, [r3, #68] ; 0x44 + 8043eea: 1ad3 subs r3, r2, r3 + 8043eec: 6a7a ldr r2, [r7, #36] ; 0x24 + 8043eee: 8912 ldrh r2, [r2, #8] + 8043ef0: 4413 add r3, r2 while (seg != NULL && - 8043eb2: 69ba ldr r2, [r7, #24] - 8043eb4: 429a cmp r2, r3 - 8043eb6: f4bf aed9 bcs.w 8043c6c - 8043eba: e000 b.n 8043ebe + 8043ef2: 69ba ldr r2, [r7, #24] + 8043ef4: 429a cmp r2, r3 + 8043ef6: f4bf aed9 bcs.w 8043cac + 8043efa: e000 b.n 8043efe break; - 8043ebc: bf00 nop + 8043efc: bf00 nop } #if TCP_OVERSIZE if (pcb->unsent == NULL) { - 8043ebe: 687b ldr r3, [r7, #4] - 8043ec0: 6edb ldr r3, [r3, #108] ; 0x6c - 8043ec2: 2b00 cmp r3, #0 - 8043ec4: d108 bne.n 8043ed8 + 8043efe: 687b ldr r3, [r7, #4] + 8043f00: 6edb ldr r3, [r3, #108] ; 0x6c + 8043f02: 2b00 cmp r3, #0 + 8043f04: d108 bne.n 8043f18 /* last unsent has been removed, reset unsent_oversize */ pcb->unsent_oversize = 0; - 8043ec6: 687b ldr r3, [r7, #4] - 8043ec8: 2200 movs r2, #0 - 8043eca: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 - 8043ece: e004 b.n 8043eda + 8043f06: 687b ldr r3, [r7, #4] + 8043f08: 2200 movs r2, #0 + 8043f0a: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 8043f0e: e004 b.n 8043f1a goto output_done; - 8043ed0: bf00 nop - 8043ed2: e002 b.n 8043eda + 8043f10: bf00 nop + 8043f12: e002 b.n 8043f1a goto output_done; - 8043ed4: bf00 nop - 8043ed6: e000 b.n 8043eda + 8043f14: bf00 nop + 8043f16: e000 b.n 8043f1a } #endif /* TCP_OVERSIZE */ output_done: - 8043ed8: bf00 nop + 8043f18: bf00 nop tcp_clear_flags(pcb, TF_NAGLEMEMERR); - 8043eda: 687b ldr r3, [r7, #4] - 8043edc: 8b5b ldrh r3, [r3, #26] - 8043ede: f023 0380 bic.w r3, r3, #128 ; 0x80 - 8043ee2: b29a uxth r2, r3 - 8043ee4: 687b ldr r3, [r7, #4] - 8043ee6: 835a strh r2, [r3, #26] + 8043f1a: 687b ldr r3, [r7, #4] + 8043f1c: 8b5b ldrh r3, [r3, #26] + 8043f1e: f023 0380 bic.w r3, r3, #128 ; 0x80 + 8043f22: b29a uxth r2, r3 + 8043f24: 687b ldr r3, [r7, #4] + 8043f26: 835a strh r2, [r3, #26] return ERR_OK; - 8043ee8: 2300 movs r3, #0 + 8043f28: 2300 movs r3, #0 } - 8043eea: 4618 mov r0, r3 - 8043eec: 3728 adds r7, #40 ; 0x28 - 8043eee: 46bd mov sp, r7 - 8043ef0: bdb0 pop {r4, r5, r7, pc} - 8043ef2: bf00 nop + 8043f2a: 4618 mov r0, r3 + 8043f2c: 3728 adds r7, #40 ; 0x28 + 8043f2e: 46bd mov sp, r7 + 8043f30: bdb0 pop {r4, r5, r7, pc} + 8043f32: bf00 nop -08043ef4 : +08043f34 : * @arg seg the tcp segment to check * @return 1 if ref != 1, 0 if ref == 1 */ static int tcp_output_segment_busy(const struct tcp_seg *seg) { - 8043ef4: b580 push {r7, lr} - 8043ef6: b082 sub sp, #8 - 8043ef8: af00 add r7, sp, #0 - 8043efa: 6078 str r0, [r7, #4] + 8043f34: b580 push {r7, lr} + 8043f36: b082 sub sp, #8 + 8043f38: af00 add r7, sp, #0 + 8043f3a: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_output_segment_busy: invalid seg", seg != NULL); - 8043efc: 687b ldr r3, [r7, #4] - 8043efe: 2b00 cmp r3, #0 - 8043f00: d106 bne.n 8043f10 - 8043f02: 4b09 ldr r3, [pc, #36] ; (8043f28 ) - 8043f04: f240 529a movw r2, #1434 ; 0x59a - 8043f08: 4908 ldr r1, [pc, #32] ; (8043f2c ) - 8043f0a: 4809 ldr r0, [pc, #36] ; (8043f30 ) - 8043f0c: f004 f84a bl 8047fa4 + 8043f3c: 687b ldr r3, [r7, #4] + 8043f3e: 2b00 cmp r3, #0 + 8043f40: d106 bne.n 8043f50 + 8043f42: 4b09 ldr r3, [pc, #36] ; (8043f68 ) + 8043f44: f240 529a movw r2, #1434 ; 0x59a + 8043f48: 4908 ldr r1, [pc, #32] ; (8043f6c ) + 8043f4a: 4809 ldr r0, [pc, #36] ; (8043f70 ) + 8043f4c: f004 f84a bl 8047fe4 /* We only need to check the first pbuf here: If a pbuf is queued for transmission, a driver calls pbuf_ref(), which only changes the ref count of the first pbuf */ if (seg->p->ref != 1) { - 8043f10: 687b ldr r3, [r7, #4] - 8043f12: 685b ldr r3, [r3, #4] - 8043f14: 7b9b ldrb r3, [r3, #14] - 8043f16: 2b01 cmp r3, #1 - 8043f18: d001 beq.n 8043f1e + 8043f50: 687b ldr r3, [r7, #4] + 8043f52: 685b ldr r3, [r3, #4] + 8043f54: 7b9b ldrb r3, [r3, #14] + 8043f56: 2b01 cmp r3, #1 + 8043f58: d001 beq.n 8043f5e /* other reference found */ return 1; - 8043f1a: 2301 movs r3, #1 - 8043f1c: e000 b.n 8043f20 + 8043f5a: 2301 movs r3, #1 + 8043f5c: e000 b.n 8043f60 } /* no other references found */ return 0; - 8043f1e: 2300 movs r3, #0 + 8043f5e: 2300 movs r3, #0 } - 8043f20: 4618 mov r0, r3 - 8043f22: 3708 adds r7, #8 - 8043f24: 46bd mov sp, r7 - 8043f26: bd80 pop {r7, pc} - 8043f28: 0804b818 .word 0x0804b818 - 8043f2c: 0804bdb4 .word 0x0804bdb4 - 8043f30: 0804b86c .word 0x0804b86c + 8043f60: 4618 mov r0, r3 + 8043f62: 3708 adds r7, #8 + 8043f64: 46bd mov sp, r7 + 8043f66: bd80 pop {r7, pc} + 8043f68: 0804b858 .word 0x0804b858 + 8043f6c: 0804bdf4 .word 0x0804bdf4 + 8043f70: 0804b8ac .word 0x0804b8ac -08043f34 : +08043f74 : * @param pcb the tcp_pcb for the TCP connection used to send the segment * @param netif the netif used to send the segment */ static err_t tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb, struct netif *netif) { - 8043f34: b5b0 push {r4, r5, r7, lr} - 8043f36: b08c sub sp, #48 ; 0x30 - 8043f38: af04 add r7, sp, #16 - 8043f3a: 60f8 str r0, [r7, #12] - 8043f3c: 60b9 str r1, [r7, #8] - 8043f3e: 607a str r2, [r7, #4] + 8043f74: b5b0 push {r4, r5, r7, lr} + 8043f76: b08c sub sp, #48 ; 0x30 + 8043f78: af04 add r7, sp, #16 + 8043f7a: 60f8 str r0, [r7, #12] + 8043f7c: 60b9 str r1, [r7, #8] + 8043f7e: 607a str r2, [r7, #4] u32_t *opts; #if TCP_CHECKSUM_ON_COPY int seg_chksum_was_swapped = 0; #endif LWIP_ASSERT("tcp_output_segment: invalid seg", seg != NULL); - 8043f40: 68fb ldr r3, [r7, #12] - 8043f42: 2b00 cmp r3, #0 - 8043f44: d106 bne.n 8043f54 - 8043f46: 4b63 ldr r3, [pc, #396] ; (80440d4 ) - 8043f48: f44f 62b7 mov.w r2, #1464 ; 0x5b8 - 8043f4c: 4962 ldr r1, [pc, #392] ; (80440d8 ) - 8043f4e: 4863 ldr r0, [pc, #396] ; (80440dc ) - 8043f50: f004 f828 bl 8047fa4 + 8043f80: 68fb ldr r3, [r7, #12] + 8043f82: 2b00 cmp r3, #0 + 8043f84: d106 bne.n 8043f94 + 8043f86: 4b63 ldr r3, [pc, #396] ; (8044114 ) + 8043f88: f44f 62b7 mov.w r2, #1464 ; 0x5b8 + 8043f8c: 4962 ldr r1, [pc, #392] ; (8044118 ) + 8043f8e: 4863 ldr r0, [pc, #396] ; (804411c ) + 8043f90: f004 f828 bl 8047fe4 LWIP_ASSERT("tcp_output_segment: invalid pcb", pcb != NULL); - 8043f54: 68bb ldr r3, [r7, #8] - 8043f56: 2b00 cmp r3, #0 - 8043f58: d106 bne.n 8043f68 - 8043f5a: 4b5e ldr r3, [pc, #376] ; (80440d4 ) - 8043f5c: f240 52b9 movw r2, #1465 ; 0x5b9 - 8043f60: 495f ldr r1, [pc, #380] ; (80440e0 ) - 8043f62: 485e ldr r0, [pc, #376] ; (80440dc ) - 8043f64: f004 f81e bl 8047fa4 + 8043f94: 68bb ldr r3, [r7, #8] + 8043f96: 2b00 cmp r3, #0 + 8043f98: d106 bne.n 8043fa8 + 8043f9a: 4b5e ldr r3, [pc, #376] ; (8044114 ) + 8043f9c: f240 52b9 movw r2, #1465 ; 0x5b9 + 8043fa0: 495f ldr r1, [pc, #380] ; (8044120 ) + 8043fa2: 485e ldr r0, [pc, #376] ; (804411c ) + 8043fa4: f004 f81e bl 8047fe4 LWIP_ASSERT("tcp_output_segment: invalid netif", netif != NULL); - 8043f68: 687b ldr r3, [r7, #4] - 8043f6a: 2b00 cmp r3, #0 - 8043f6c: d106 bne.n 8043f7c - 8043f6e: 4b59 ldr r3, [pc, #356] ; (80440d4 ) - 8043f70: f240 52ba movw r2, #1466 ; 0x5ba - 8043f74: 495b ldr r1, [pc, #364] ; (80440e4 ) - 8043f76: 4859 ldr r0, [pc, #356] ; (80440dc ) - 8043f78: f004 f814 bl 8047fa4 + 8043fa8: 687b ldr r3, [r7, #4] + 8043faa: 2b00 cmp r3, #0 + 8043fac: d106 bne.n 8043fbc + 8043fae: 4b59 ldr r3, [pc, #356] ; (8044114 ) + 8043fb0: f240 52ba movw r2, #1466 ; 0x5ba + 8043fb4: 495b ldr r1, [pc, #364] ; (8044124 ) + 8043fb6: 4859 ldr r0, [pc, #356] ; (804411c ) + 8043fb8: f004 f814 bl 8047fe4 if (tcp_output_segment_busy(seg)) { - 8043f7c: 68f8 ldr r0, [r7, #12] - 8043f7e: f7ff ffb9 bl 8043ef4 - 8043f82: 4603 mov r3, r0 - 8043f84: 2b00 cmp r3, #0 - 8043f86: d001 beq.n 8043f8c + 8043fbc: 68f8 ldr r0, [r7, #12] + 8043fbe: f7ff ffb9 bl 8043f34 + 8043fc2: 4603 mov r3, r0 + 8043fc4: 2b00 cmp r3, #0 + 8043fc6: d001 beq.n 8043fcc /* This should not happen: rexmit functions should have checked this. However, since this function modifies p->len, we must not continue in this case. */ LWIP_DEBUGF(TCP_RTO_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_output_segment: segment busy\n")); return ERR_OK; - 8043f88: 2300 movs r3, #0 - 8043f8a: e09f b.n 80440cc + 8043fc8: 2300 movs r3, #0 + 8043fca: e09f b.n 804410c } /* The TCP header has already been constructed, but the ackno and wnd fields remain. */ seg->tcphdr->ackno = lwip_htonl(pcb->rcv_nxt); - 8043f8c: 68bb ldr r3, [r7, #8] - 8043f8e: 6a5a ldr r2, [r3, #36] ; 0x24 - 8043f90: 68fb ldr r3, [r7, #12] - 8043f92: 68dc ldr r4, [r3, #12] - 8043f94: 4610 mov r0, r2 - 8043f96: f7f9 f82e bl 803cff6 - 8043f9a: 4603 mov r3, r0 - 8043f9c: 60a3 str r3, [r4, #8] + 8043fcc: 68bb ldr r3, [r7, #8] + 8043fce: 6a5a ldr r2, [r3, #36] ; 0x24 + 8043fd0: 68fb ldr r3, [r7, #12] + 8043fd2: 68dc ldr r4, [r3, #12] + 8043fd4: 4610 mov r0, r2 + 8043fd6: f7f9 f82e bl 803d036 + 8043fda: 4603 mov r3, r0 + 8043fdc: 60a3 str r3, [r4, #8] the window scale option) is never scaled. */ seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(pcb->rcv_ann_wnd)); } else #endif /* LWIP_WND_SCALE */ { seg->tcphdr->wnd = lwip_htons(TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd))); - 8043f9e: 68bb ldr r3, [r7, #8] - 8043fa0: 8d5a ldrh r2, [r3, #42] ; 0x2a - 8043fa2: 68fb ldr r3, [r7, #12] - 8043fa4: 68dc ldr r4, [r3, #12] - 8043fa6: 4610 mov r0, r2 - 8043fa8: f7f9 f810 bl 803cfcc - 8043fac: 4603 mov r3, r0 - 8043fae: 81e3 strh r3, [r4, #14] + 8043fde: 68bb ldr r3, [r7, #8] + 8043fe0: 8d5a ldrh r2, [r3, #42] ; 0x2a + 8043fe2: 68fb ldr r3, [r7, #12] + 8043fe4: 68dc ldr r4, [r3, #12] + 8043fe6: 4610 mov r0, r2 + 8043fe8: f7f9 f810 bl 803d00c + 8043fec: 4603 mov r3, r0 + 8043fee: 81e3 strh r3, [r4, #14] } pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - 8043fb0: 68bb ldr r3, [r7, #8] - 8043fb2: 6a5b ldr r3, [r3, #36] ; 0x24 - 8043fb4: 68ba ldr r2, [r7, #8] - 8043fb6: 8d52 ldrh r2, [r2, #42] ; 0x2a - 8043fb8: 441a add r2, r3 - 8043fba: 68bb ldr r3, [r7, #8] - 8043fbc: 62da str r2, [r3, #44] ; 0x2c + 8043ff0: 68bb ldr r3, [r7, #8] + 8043ff2: 6a5b ldr r3, [r3, #36] ; 0x24 + 8043ff4: 68ba ldr r2, [r7, #8] + 8043ff6: 8d52 ldrh r2, [r2, #42] ; 0x2a + 8043ff8: 441a add r2, r3 + 8043ffa: 68bb ldr r3, [r7, #8] + 8043ffc: 62da str r2, [r3, #44] ; 0x2c /* Add any requested options. NB MSS option is only set on SYN packets, so ignore it here */ /* cast through void* to get rid of alignment warnings */ opts = (u32_t *)(void *)(seg->tcphdr + 1); - 8043fbe: 68fb ldr r3, [r7, #12] - 8043fc0: 68db ldr r3, [r3, #12] - 8043fc2: 3314 adds r3, #20 - 8043fc4: 61fb str r3, [r7, #28] + 8043ffe: 68fb ldr r3, [r7, #12] + 8044000: 68db ldr r3, [r3, #12] + 8044002: 3314 adds r3, #20 + 8044004: 61fb str r3, [r7, #28] if (seg->flags & TF_SEG_OPTS_MSS) { - 8043fc6: 68fb ldr r3, [r7, #12] - 8043fc8: 7a9b ldrb r3, [r3, #10] - 8043fca: f003 0301 and.w r3, r3, #1 - 8043fce: 2b00 cmp r3, #0 - 8043fd0: d015 beq.n 8043ffe + 8044006: 68fb ldr r3, [r7, #12] + 8044008: 7a9b ldrb r3, [r3, #10] + 804400a: f003 0301 and.w r3, r3, #1 + 804400e: 2b00 cmp r3, #0 + 8044010: d015 beq.n 804403e u16_t mss; #if TCP_CALCULATE_EFF_SEND_MSS mss = tcp_eff_send_mss_netif(TCP_MSS, netif, &pcb->remote_ip); - 8043fd2: 68bb ldr r3, [r7, #8] - 8043fd4: 3304 adds r3, #4 - 8043fd6: 461a mov r2, r3 - 8043fd8: 6879 ldr r1, [r7, #4] - 8043fda: f44f 7006 mov.w r0, #536 ; 0x218 - 8043fde: f7fc fa33 bl 8040448 - 8043fe2: 4603 mov r3, r0 - 8043fe4: 837b strh r3, [r7, #26] + 8044012: 68bb ldr r3, [r7, #8] + 8044014: 3304 adds r3, #4 + 8044016: 461a mov r2, r3 + 8044018: 6879 ldr r1, [r7, #4] + 804401a: f44f 7006 mov.w r0, #536 ; 0x218 + 804401e: f7fc fa33 bl 8040488 + 8044022: 4603 mov r3, r0 + 8044024: 837b strh r3, [r7, #26] #else /* TCP_CALCULATE_EFF_SEND_MSS */ mss = TCP_MSS; #endif /* TCP_CALCULATE_EFF_SEND_MSS */ *opts = TCP_BUILD_MSS_OPTION(mss); - 8043fe6: 8b7b ldrh r3, [r7, #26] - 8043fe8: f043 7301 orr.w r3, r3, #33816576 ; 0x2040000 - 8043fec: 4618 mov r0, r3 - 8043fee: f7f9 f802 bl 803cff6 - 8043ff2: 4602 mov r2, r0 - 8043ff4: 69fb ldr r3, [r7, #28] - 8043ff6: 601a str r2, [r3, #0] + 8044026: 8b7b ldrh r3, [r7, #26] + 8044028: f043 7301 orr.w r3, r3, #33816576 ; 0x2040000 + 804402c: 4618 mov r0, r3 + 804402e: f7f9 f802 bl 803d036 + 8044032: 4602 mov r2, r0 + 8044034: 69fb ldr r3, [r7, #28] + 8044036: 601a str r2, [r3, #0] opts += 1; - 8043ff8: 69fb ldr r3, [r7, #28] - 8043ffa: 3304 adds r3, #4 - 8043ffc: 61fb str r3, [r7, #28] + 8044038: 69fb ldr r3, [r7, #28] + 804403a: 3304 adds r3, #4 + 804403c: 61fb str r3, [r7, #28] } #endif /* Set retransmission timer running if it is not currently enabled This must be set before checking the route. */ if (pcb->rtime < 0) { - 8043ffe: 68bb ldr r3, [r7, #8] - 8044000: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 - 8044004: 2b00 cmp r3, #0 - 8044006: da02 bge.n 804400e + 804403e: 68bb ldr r3, [r7, #8] + 8044040: f9b3 3030 ldrsh.w r3, [r3, #48] ; 0x30 + 8044044: 2b00 cmp r3, #0 + 8044046: da02 bge.n 804404e pcb->rtime = 0; - 8044008: 68bb ldr r3, [r7, #8] - 804400a: 2200 movs r2, #0 - 804400c: 861a strh r2, [r3, #48] ; 0x30 + 8044048: 68bb ldr r3, [r7, #8] + 804404a: 2200 movs r2, #0 + 804404c: 861a strh r2, [r3, #48] ; 0x30 } if (pcb->rttest == 0) { - 804400e: 68bb ldr r3, [r7, #8] - 8044010: 6b5b ldr r3, [r3, #52] ; 0x34 - 8044012: 2b00 cmp r3, #0 - 8044014: d10c bne.n 8044030 + 804404e: 68bb ldr r3, [r7, #8] + 8044050: 6b5b ldr r3, [r3, #52] ; 0x34 + 8044052: 2b00 cmp r3, #0 + 8044054: d10c bne.n 8044070 pcb->rttest = tcp_ticks; - 8044016: 4b34 ldr r3, [pc, #208] ; (80440e8 ) - 8044018: 681a ldr r2, [r3, #0] - 804401a: 68bb ldr r3, [r7, #8] - 804401c: 635a str r2, [r3, #52] ; 0x34 + 8044056: 4b34 ldr r3, [pc, #208] ; (8044128 ) + 8044058: 681a ldr r2, [r3, #0] + 804405a: 68bb ldr r3, [r7, #8] + 804405c: 635a str r2, [r3, #52] ; 0x34 pcb->rtseq = lwip_ntohl(seg->tcphdr->seqno); - 804401e: 68fb ldr r3, [r7, #12] - 8044020: 68db ldr r3, [r3, #12] - 8044022: 685b ldr r3, [r3, #4] - 8044024: 4618 mov r0, r3 - 8044026: f7f8 ffe6 bl 803cff6 - 804402a: 4602 mov r2, r0 - 804402c: 68bb ldr r3, [r7, #8] - 804402e: 639a str r2, [r3, #56] ; 0x38 + 804405e: 68fb ldr r3, [r7, #12] + 8044060: 68db ldr r3, [r3, #12] + 8044062: 685b ldr r3, [r3, #4] + 8044064: 4618 mov r0, r3 + 8044066: f7f8 ffe6 bl 803d036 + 804406a: 4602 mov r2, r0 + 804406c: 68bb ldr r3, [r7, #8] + 804406e: 639a str r2, [r3, #56] ; 0x38 } LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n", lwip_htonl(seg->tcphdr->seqno), lwip_htonl(seg->tcphdr->seqno) + seg->len)); len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); - 8044030: 68fb ldr r3, [r7, #12] - 8044032: 68da ldr r2, [r3, #12] - 8044034: 68fb ldr r3, [r7, #12] - 8044036: 685b ldr r3, [r3, #4] - 8044038: 685b ldr r3, [r3, #4] - 804403a: 1ad3 subs r3, r2, r3 - 804403c: 833b strh r3, [r7, #24] + 8044070: 68fb ldr r3, [r7, #12] + 8044072: 68da ldr r2, [r3, #12] + 8044074: 68fb ldr r3, [r7, #12] + 8044076: 685b ldr r3, [r3, #4] + 8044078: 685b ldr r3, [r3, #4] + 804407a: 1ad3 subs r3, r2, r3 + 804407c: 833b strh r3, [r7, #24] if (len == 0) { /** Exclude retransmitted segments from this count. */ MIB2_STATS_INC(mib2.tcpoutsegs); } seg->p->len -= len; - 804403e: 68fb ldr r3, [r7, #12] - 8044040: 685b ldr r3, [r3, #4] - 8044042: 8959 ldrh r1, [r3, #10] - 8044044: 68fb ldr r3, [r7, #12] - 8044046: 685b ldr r3, [r3, #4] - 8044048: 8b3a ldrh r2, [r7, #24] - 804404a: 1a8a subs r2, r1, r2 - 804404c: b292 uxth r2, r2 - 804404e: 815a strh r2, [r3, #10] + 804407e: 68fb ldr r3, [r7, #12] + 8044080: 685b ldr r3, [r3, #4] + 8044082: 8959 ldrh r1, [r3, #10] + 8044084: 68fb ldr r3, [r7, #12] + 8044086: 685b ldr r3, [r3, #4] + 8044088: 8b3a ldrh r2, [r7, #24] + 804408a: 1a8a subs r2, r1, r2 + 804408c: b292 uxth r2, r2 + 804408e: 815a strh r2, [r3, #10] seg->p->tot_len -= len; - 8044050: 68fb ldr r3, [r7, #12] - 8044052: 685b ldr r3, [r3, #4] - 8044054: 8919 ldrh r1, [r3, #8] - 8044056: 68fb ldr r3, [r7, #12] - 8044058: 685b ldr r3, [r3, #4] - 804405a: 8b3a ldrh r2, [r7, #24] - 804405c: 1a8a subs r2, r1, r2 - 804405e: b292 uxth r2, r2 - 8044060: 811a strh r2, [r3, #8] + 8044090: 68fb ldr r3, [r7, #12] + 8044092: 685b ldr r3, [r3, #4] + 8044094: 8919 ldrh r1, [r3, #8] + 8044096: 68fb ldr r3, [r7, #12] + 8044098: 685b ldr r3, [r3, #4] + 804409a: 8b3a ldrh r2, [r7, #24] + 804409c: 1a8a subs r2, r1, r2 + 804409e: b292 uxth r2, r2 + 80440a0: 811a strh r2, [r3, #8] seg->p->payload = seg->tcphdr; - 8044062: 68fb ldr r3, [r7, #12] - 8044064: 685b ldr r3, [r3, #4] - 8044066: 68fa ldr r2, [r7, #12] - 8044068: 68d2 ldr r2, [r2, #12] - 804406a: 605a str r2, [r3, #4] + 80440a2: 68fb ldr r3, [r7, #12] + 80440a4: 685b ldr r3, [r3, #4] + 80440a6: 68fa ldr r2, [r7, #12] + 80440a8: 68d2 ldr r2, [r2, #12] + 80440aa: 605a str r2, [r3, #4] seg->tcphdr->chksum = 0; - 804406c: 68fb ldr r3, [r7, #12] - 804406e: 68db ldr r3, [r3, #12] - 8044070: 2200 movs r2, #0 - 8044072: 741a strb r2, [r3, #16] - 8044074: 2200 movs r2, #0 - 8044076: 745a strb r2, [r3, #17] + 80440ac: 68fb ldr r3, [r7, #12] + 80440ae: 68db ldr r3, [r3, #12] + 80440b0: 2200 movs r2, #0 + 80440b2: 741a strb r2, [r3, #16] + 80440b4: 2200 movs r2, #0 + 80440b6: 745a strb r2, [r3, #17] #ifdef LWIP_HOOK_TCP_OUT_ADD_TCPOPTS opts = LWIP_HOOK_TCP_OUT_ADD_TCPOPTS(seg->p, seg->tcphdr, pcb, opts); #endif LWIP_ASSERT("options not filled", (u8_t *)opts == ((u8_t *)(seg->tcphdr + 1)) + LWIP_TCP_OPT_LENGTH_SEGMENT(seg->flags, pcb)); - 8044078: 68fb ldr r3, [r7, #12] - 804407a: 68db ldr r3, [r3, #12] - 804407c: f103 0214 add.w r2, r3, #20 - 8044080: 68fb ldr r3, [r7, #12] - 8044082: 7a9b ldrb r3, [r3, #10] - 8044084: 009b lsls r3, r3, #2 - 8044086: f003 0304 and.w r3, r3, #4 - 804408a: 4413 add r3, r2 - 804408c: 69fa ldr r2, [r7, #28] - 804408e: 429a cmp r2, r3 - 8044090: d006 beq.n 80440a0 - 8044092: 4b10 ldr r3, [pc, #64] ; (80440d4 ) - 8044094: f240 621c movw r2, #1564 ; 0x61c - 8044098: 4914 ldr r1, [pc, #80] ; (80440ec ) - 804409a: 4810 ldr r0, [pc, #64] ; (80440dc ) - 804409c: f003 ff82 bl 8047fa4 + 80440b8: 68fb ldr r3, [r7, #12] + 80440ba: 68db ldr r3, [r3, #12] + 80440bc: f103 0214 add.w r2, r3, #20 + 80440c0: 68fb ldr r3, [r7, #12] + 80440c2: 7a9b ldrb r3, [r3, #10] + 80440c4: 009b lsls r3, r3, #2 + 80440c6: f003 0304 and.w r3, r3, #4 + 80440ca: 4413 add r3, r2 + 80440cc: 69fa ldr r2, [r7, #28] + 80440ce: 429a cmp r2, r3 + 80440d0: d006 beq.n 80440e0 + 80440d2: 4b10 ldr r3, [pc, #64] ; (8044114 ) + 80440d4: f240 621c movw r2, #1564 ; 0x61c + 80440d8: 4914 ldr r1, [pc, #80] ; (804412c ) + 80440da: 4810 ldr r0, [pc, #64] ; (804411c ) + 80440dc: f003 ff82 bl 8047fe4 } #endif /* CHECKSUM_GEN_TCP */ TCP_STATS_INC(tcp.xmit); NETIF_SET_HINTS(netif, &(pcb->netif_hints)); err = ip_output_if(seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, - 80440a0: 68fb ldr r3, [r7, #12] - 80440a2: 6858 ldr r0, [r3, #4] - 80440a4: 68b9 ldr r1, [r7, #8] - 80440a6: 68bb ldr r3, [r7, #8] - 80440a8: 1d1c adds r4, r3, #4 - 80440aa: 68bb ldr r3, [r7, #8] - 80440ac: 7add ldrb r5, [r3, #11] - 80440ae: 68bb ldr r3, [r7, #8] - 80440b0: 7a9b ldrb r3, [r3, #10] - 80440b2: 687a ldr r2, [r7, #4] - 80440b4: 9202 str r2, [sp, #8] - 80440b6: 2206 movs r2, #6 - 80440b8: 9201 str r2, [sp, #4] - 80440ba: 9300 str r3, [sp, #0] - 80440bc: 462b mov r3, r5 - 80440be: 4622 mov r2, r4 - 80440c0: f002 fdee bl 8046ca0 - 80440c4: 4603 mov r3, r0 - 80440c6: 75fb strb r3, [r7, #23] + 80440e0: 68fb ldr r3, [r7, #12] + 80440e2: 6858 ldr r0, [r3, #4] + 80440e4: 68b9 ldr r1, [r7, #8] + 80440e6: 68bb ldr r3, [r7, #8] + 80440e8: 1d1c adds r4, r3, #4 + 80440ea: 68bb ldr r3, [r7, #8] + 80440ec: 7add ldrb r5, [r3, #11] + 80440ee: 68bb ldr r3, [r7, #8] + 80440f0: 7a9b ldrb r3, [r3, #10] + 80440f2: 687a ldr r2, [r7, #4] + 80440f4: 9202 str r2, [sp, #8] + 80440f6: 2206 movs r2, #6 + 80440f8: 9201 str r2, [sp, #4] + 80440fa: 9300 str r3, [sp, #0] + 80440fc: 462b mov r3, r5 + 80440fe: 4622 mov r2, r4 + 8044100: f002 fdee bl 8046ce0 + 8044104: 4603 mov r3, r0 + 8044106: 75fb strb r3, [r7, #23] seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum); seg->chksum_swapped = 1; } #endif return err; - 80440c8: f997 3017 ldrsb.w r3, [r7, #23] -} - 80440cc: 4618 mov r0, r3 - 80440ce: 3720 adds r7, #32 - 80440d0: 46bd mov sp, r7 - 80440d2: bdb0 pop {r4, r5, r7, pc} - 80440d4: 0804b818 .word 0x0804b818 - 80440d8: 0804bddc .word 0x0804bddc - 80440dc: 0804b86c .word 0x0804b86c - 80440e0: 0804bdfc .word 0x0804bdfc - 80440e4: 0804be1c .word 0x0804be1c - 80440e8: 2400eae8 .word 0x2400eae8 - 80440ec: 0804be40 .word 0x0804be40 - -080440f0 : + 8044108: f997 3017 ldrsb.w r3, [r7, #23] +} + 804410c: 4618 mov r0, r3 + 804410e: 3720 adds r7, #32 + 8044110: 46bd mov sp, r7 + 8044112: bdb0 pop {r4, r5, r7, pc} + 8044114: 0804b858 .word 0x0804b858 + 8044118: 0804be1c .word 0x0804be1c + 804411c: 0804b8ac .word 0x0804b8ac + 8044120: 0804be3c .word 0x0804be3c + 8044124: 0804be5c .word 0x0804be5c + 8044128: 2400eae8 .word 0x2400eae8 + 804412c: 0804be80 .word 0x0804be80 + +08044130 : * * @param pcb the tcp_pcb for which to re-enqueue all unacked segments */ err_t tcp_rexmit_rto_prepare(struct tcp_pcb *pcb) { - 80440f0: b5b0 push {r4, r5, r7, lr} - 80440f2: b084 sub sp, #16 - 80440f4: af00 add r7, sp, #0 - 80440f6: 6078 str r0, [r7, #4] + 8044130: b5b0 push {r4, r5, r7, lr} + 8044132: b084 sub sp, #16 + 8044134: af00 add r7, sp, #0 + 8044136: 6078 str r0, [r7, #4] struct tcp_seg *seg; LWIP_ASSERT("tcp_rexmit_rto_prepare: invalid pcb", pcb != NULL); - 80440f8: 687b ldr r3, [r7, #4] - 80440fa: 2b00 cmp r3, #0 - 80440fc: d106 bne.n 804410c - 80440fe: 4b31 ldr r3, [pc, #196] ; (80441c4 ) - 8044100: f240 6263 movw r2, #1635 ; 0x663 - 8044104: 4930 ldr r1, [pc, #192] ; (80441c8 ) - 8044106: 4831 ldr r0, [pc, #196] ; (80441cc ) - 8044108: f003 ff4c bl 8047fa4 + 8044138: 687b ldr r3, [r7, #4] + 804413a: 2b00 cmp r3, #0 + 804413c: d106 bne.n 804414c + 804413e: 4b31 ldr r3, [pc, #196] ; (8044204 ) + 8044140: f240 6263 movw r2, #1635 ; 0x663 + 8044144: 4930 ldr r1, [pc, #192] ; (8044208 ) + 8044146: 4831 ldr r0, [pc, #196] ; (804420c ) + 8044148: f003 ff4c bl 8047fe4 if (pcb->unacked == NULL) { - 804410c: 687b ldr r3, [r7, #4] - 804410e: 6f1b ldr r3, [r3, #112] ; 0x70 - 8044110: 2b00 cmp r3, #0 - 8044112: d102 bne.n 804411a + 804414c: 687b ldr r3, [r7, #4] + 804414e: 6f1b ldr r3, [r3, #112] ; 0x70 + 8044150: 2b00 cmp r3, #0 + 8044152: d102 bne.n 804415a return ERR_VAL; - 8044114: f06f 0305 mvn.w r3, #5 - 8044118: e050 b.n 80441bc + 8044154: f06f 0305 mvn.w r3, #5 + 8044158: e050 b.n 80441fc /* Move all unacked segments to the head of the unsent queue. However, give up if any of the unsent pbufs are still referenced by the netif driver due to deferred transmission. No point loading the link further if it is struggling to flush its buffered writes. */ for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) { - 804411a: 687b ldr r3, [r7, #4] - 804411c: 6f1b ldr r3, [r3, #112] ; 0x70 - 804411e: 60fb str r3, [r7, #12] - 8044120: e00b b.n 804413a + 804415a: 687b ldr r3, [r7, #4] + 804415c: 6f1b ldr r3, [r3, #112] ; 0x70 + 804415e: 60fb str r3, [r7, #12] + 8044160: e00b b.n 804417a if (tcp_output_segment_busy(seg)) { - 8044122: 68f8 ldr r0, [r7, #12] - 8044124: f7ff fee6 bl 8043ef4 - 8044128: 4603 mov r3, r0 - 804412a: 2b00 cmp r3, #0 - 804412c: d002 beq.n 8044134 + 8044162: 68f8 ldr r0, [r7, #12] + 8044164: f7ff fee6 bl 8043f34 + 8044168: 4603 mov r3, r0 + 804416a: 2b00 cmp r3, #0 + 804416c: d002 beq.n 8044174 LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit_rto: segment busy\n")); return ERR_VAL; - 804412e: f06f 0305 mvn.w r3, #5 - 8044132: e043 b.n 80441bc + 804416e: f06f 0305 mvn.w r3, #5 + 8044172: e043 b.n 80441fc for (seg = pcb->unacked; seg->next != NULL; seg = seg->next) { - 8044134: 68fb ldr r3, [r7, #12] - 8044136: 681b ldr r3, [r3, #0] - 8044138: 60fb str r3, [r7, #12] - 804413a: 68fb ldr r3, [r7, #12] - 804413c: 681b ldr r3, [r3, #0] - 804413e: 2b00 cmp r3, #0 - 8044140: d1ef bne.n 8044122 + 8044174: 68fb ldr r3, [r7, #12] + 8044176: 681b ldr r3, [r3, #0] + 8044178: 60fb str r3, [r7, #12] + 804417a: 68fb ldr r3, [r7, #12] + 804417c: 681b ldr r3, [r3, #0] + 804417e: 2b00 cmp r3, #0 + 8044180: d1ef bne.n 8044162 } } if (tcp_output_segment_busy(seg)) { - 8044142: 68f8 ldr r0, [r7, #12] - 8044144: f7ff fed6 bl 8043ef4 - 8044148: 4603 mov r3, r0 - 804414a: 2b00 cmp r3, #0 - 804414c: d002 beq.n 8044154 + 8044182: 68f8 ldr r0, [r7, #12] + 8044184: f7ff fed6 bl 8043f34 + 8044188: 4603 mov r3, r0 + 804418a: 2b00 cmp r3, #0 + 804418c: d002 beq.n 8044194 LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit_rto: segment busy\n")); return ERR_VAL; - 804414e: f06f 0305 mvn.w r3, #5 - 8044152: e033 b.n 80441bc + 804418e: f06f 0305 mvn.w r3, #5 + 8044192: e033 b.n 80441fc } /* concatenate unsent queue after unacked queue */ seg->next = pcb->unsent; - 8044154: 687b ldr r3, [r7, #4] - 8044156: 6eda ldr r2, [r3, #108] ; 0x6c - 8044158: 68fb ldr r3, [r7, #12] - 804415a: 601a str r2, [r3, #0] + 8044194: 687b ldr r3, [r7, #4] + 8044196: 6eda ldr r2, [r3, #108] ; 0x6c + 8044198: 68fb ldr r3, [r7, #12] + 804419a: 601a str r2, [r3, #0] if (pcb->unsent == NULL) { pcb->unsent_oversize = seg->oversize_left; } #endif /* TCP_OVERSIZE_DBGCHECK */ /* unsent queue is the concatenated queue (of unacked, unsent) */ pcb->unsent = pcb->unacked; - 804415c: 687b ldr r3, [r7, #4] - 804415e: 6f1a ldr r2, [r3, #112] ; 0x70 - 8044160: 687b ldr r3, [r7, #4] - 8044162: 66da str r2, [r3, #108] ; 0x6c + 804419c: 687b ldr r3, [r7, #4] + 804419e: 6f1a ldr r2, [r3, #112] ; 0x70 + 80441a0: 687b ldr r3, [r7, #4] + 80441a2: 66da str r2, [r3, #108] ; 0x6c /* unacked queue is now empty */ pcb->unacked = NULL; - 8044164: 687b ldr r3, [r7, #4] - 8044166: 2200 movs r2, #0 - 8044168: 671a str r2, [r3, #112] ; 0x70 + 80441a4: 687b ldr r3, [r7, #4] + 80441a6: 2200 movs r2, #0 + 80441a8: 671a str r2, [r3, #112] ; 0x70 /* Mark RTO in-progress */ tcp_set_flags(pcb, TF_RTO); - 804416a: 687b ldr r3, [r7, #4] - 804416c: 8b5b ldrh r3, [r3, #26] - 804416e: f443 6300 orr.w r3, r3, #2048 ; 0x800 - 8044172: b29a uxth r2, r3 - 8044174: 687b ldr r3, [r7, #4] - 8044176: 835a strh r2, [r3, #26] + 80441aa: 687b ldr r3, [r7, #4] + 80441ac: 8b5b ldrh r3, [r3, #26] + 80441ae: f443 6300 orr.w r3, r3, #2048 ; 0x800 + 80441b2: b29a uxth r2, r3 + 80441b4: 687b ldr r3, [r7, #4] + 80441b6: 835a strh r2, [r3, #26] /* Record the next byte following retransmit */ pcb->rto_end = lwip_ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - 8044178: 68fb ldr r3, [r7, #12] - 804417a: 68db ldr r3, [r3, #12] - 804417c: 685b ldr r3, [r3, #4] - 804417e: 4618 mov r0, r3 - 8044180: f7f8 ff39 bl 803cff6 - 8044184: 4604 mov r4, r0 - 8044186: 68fb ldr r3, [r7, #12] - 8044188: 891b ldrh r3, [r3, #8] - 804418a: 461d mov r5, r3 - 804418c: 68fb ldr r3, [r7, #12] - 804418e: 68db ldr r3, [r3, #12] - 8044190: 899b ldrh r3, [r3, #12] - 8044192: b29b uxth r3, r3 - 8044194: 4618 mov r0, r3 - 8044196: f7f8 ff19 bl 803cfcc - 804419a: 4603 mov r3, r0 - 804419c: b2db uxtb r3, r3 - 804419e: f003 0303 and.w r3, r3, #3 - 80441a2: 2b00 cmp r3, #0 - 80441a4: d001 beq.n 80441aa - 80441a6: 2301 movs r3, #1 - 80441a8: e000 b.n 80441ac - 80441aa: 2300 movs r3, #0 - 80441ac: 442b add r3, r5 - 80441ae: 18e2 adds r2, r4, r3 - 80441b0: 687b ldr r3, [r7, #4] - 80441b2: 64da str r2, [r3, #76] ; 0x4c + 80441b8: 68fb ldr r3, [r7, #12] + 80441ba: 68db ldr r3, [r3, #12] + 80441bc: 685b ldr r3, [r3, #4] + 80441be: 4618 mov r0, r3 + 80441c0: f7f8 ff39 bl 803d036 + 80441c4: 4604 mov r4, r0 + 80441c6: 68fb ldr r3, [r7, #12] + 80441c8: 891b ldrh r3, [r3, #8] + 80441ca: 461d mov r5, r3 + 80441cc: 68fb ldr r3, [r7, #12] + 80441ce: 68db ldr r3, [r3, #12] + 80441d0: 899b ldrh r3, [r3, #12] + 80441d2: b29b uxth r3, r3 + 80441d4: 4618 mov r0, r3 + 80441d6: f7f8 ff19 bl 803d00c + 80441da: 4603 mov r3, r0 + 80441dc: b2db uxtb r3, r3 + 80441de: f003 0303 and.w r3, r3, #3 + 80441e2: 2b00 cmp r3, #0 + 80441e4: d001 beq.n 80441ea + 80441e6: 2301 movs r3, #1 + 80441e8: e000 b.n 80441ec + 80441ea: 2300 movs r3, #0 + 80441ec: 442b add r3, r5 + 80441ee: 18e2 adds r2, r4, r3 + 80441f0: 687b ldr r3, [r7, #4] + 80441f2: 64da str r2, [r3, #76] ; 0x4c /* Don't take any RTT measurements after retransmitting. */ pcb->rttest = 0; - 80441b4: 687b ldr r3, [r7, #4] - 80441b6: 2200 movs r2, #0 - 80441b8: 635a str r2, [r3, #52] ; 0x34 + 80441f4: 687b ldr r3, [r7, #4] + 80441f6: 2200 movs r2, #0 + 80441f8: 635a str r2, [r3, #52] ; 0x34 return ERR_OK; - 80441ba: 2300 movs r3, #0 + 80441fa: 2300 movs r3, #0 } - 80441bc: 4618 mov r0, r3 - 80441be: 3710 adds r7, #16 - 80441c0: 46bd mov sp, r7 - 80441c2: bdb0 pop {r4, r5, r7, pc} - 80441c4: 0804b818 .word 0x0804b818 - 80441c8: 0804be54 .word 0x0804be54 - 80441cc: 0804b86c .word 0x0804b86c + 80441fc: 4618 mov r0, r3 + 80441fe: 3710 adds r7, #16 + 8044200: 46bd mov sp, r7 + 8044202: bdb0 pop {r4, r5, r7, pc} + 8044204: 0804b858 .word 0x0804b858 + 8044208: 0804be94 .word 0x0804be94 + 804420c: 0804b8ac .word 0x0804b8ac -080441d0 : +08044210 : * * @param pcb the tcp_pcb for which to re-enqueue all unacked segments */ void tcp_rexmit_rto_commit(struct tcp_pcb *pcb) { - 80441d0: b580 push {r7, lr} - 80441d2: b082 sub sp, #8 - 80441d4: af00 add r7, sp, #0 - 80441d6: 6078 str r0, [r7, #4] + 8044210: b580 push {r7, lr} + 8044212: b082 sub sp, #8 + 8044214: af00 add r7, sp, #0 + 8044216: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_rexmit_rto_commit: invalid pcb", pcb != NULL); - 80441d8: 687b ldr r3, [r7, #4] - 80441da: 2b00 cmp r3, #0 - 80441dc: d106 bne.n 80441ec - 80441de: 4b0d ldr r3, [pc, #52] ; (8044214 ) - 80441e0: f44f 62d3 mov.w r2, #1688 ; 0x698 - 80441e4: 490c ldr r1, [pc, #48] ; (8044218 ) - 80441e6: 480d ldr r0, [pc, #52] ; (804421c ) - 80441e8: f003 fedc bl 8047fa4 + 8044218: 687b ldr r3, [r7, #4] + 804421a: 2b00 cmp r3, #0 + 804421c: d106 bne.n 804422c + 804421e: 4b0d ldr r3, [pc, #52] ; (8044254 ) + 8044220: f44f 62d3 mov.w r2, #1688 ; 0x698 + 8044224: 490c ldr r1, [pc, #48] ; (8044258 ) + 8044226: 480d ldr r0, [pc, #52] ; (804425c ) + 8044228: f003 fedc bl 8047fe4 /* increment number of retransmissions */ if (pcb->nrtx < 0xFF) { - 80441ec: 687b ldr r3, [r7, #4] - 80441ee: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 80441f2: 2bff cmp r3, #255 ; 0xff - 80441f4: d007 beq.n 8044206 + 804422c: 687b ldr r3, [r7, #4] + 804422e: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 8044232: 2bff cmp r3, #255 ; 0xff + 8044234: d007 beq.n 8044246 ++pcb->nrtx; - 80441f6: 687b ldr r3, [r7, #4] - 80441f8: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 80441fc: 3301 adds r3, #1 - 80441fe: b2da uxtb r2, r3 - 8044200: 687b ldr r3, [r7, #4] - 8044202: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 8044236: 687b ldr r3, [r7, #4] + 8044238: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 804423c: 3301 adds r3, #1 + 804423e: b2da uxtb r2, r3 + 8044240: 687b ldr r3, [r7, #4] + 8044242: f883 2042 strb.w r2, [r3, #66] ; 0x42 } /* Do the actual retransmission */ tcp_output(pcb); - 8044206: 6878 ldr r0, [r7, #4] - 8044208: f7ff fc80 bl 8043b0c -} - 804420c: bf00 nop - 804420e: 3708 adds r7, #8 - 8044210: 46bd mov sp, r7 - 8044212: bd80 pop {r7, pc} - 8044214: 0804b818 .word 0x0804b818 - 8044218: 0804be78 .word 0x0804be78 - 804421c: 0804b86c .word 0x0804b86c - -08044220 : + 8044246: 6878 ldr r0, [r7, #4] + 8044248: f7ff fc80 bl 8043b4c +} + 804424c: bf00 nop + 804424e: 3708 adds r7, #8 + 8044250: 46bd mov sp, r7 + 8044252: bd80 pop {r7, pc} + 8044254: 0804b858 .word 0x0804b858 + 8044258: 0804beb8 .word 0x0804beb8 + 804425c: 0804b8ac .word 0x0804b8ac + +08044260 : * * @param pcb the tcp_pcb for which to re-enqueue all unacked segments */ void tcp_rexmit_rto(struct tcp_pcb *pcb) { - 8044220: b580 push {r7, lr} - 8044222: b082 sub sp, #8 - 8044224: af00 add r7, sp, #0 - 8044226: 6078 str r0, [r7, #4] + 8044260: b580 push {r7, lr} + 8044262: b082 sub sp, #8 + 8044264: af00 add r7, sp, #0 + 8044266: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_rexmit_rto: invalid pcb", pcb != NULL); - 8044228: 687b ldr r3, [r7, #4] - 804422a: 2b00 cmp r3, #0 - 804422c: d106 bne.n 804423c - 804422e: 4b0a ldr r3, [pc, #40] ; (8044258 ) - 8044230: f240 62ad movw r2, #1709 ; 0x6ad - 8044234: 4909 ldr r1, [pc, #36] ; (804425c ) - 8044236: 480a ldr r0, [pc, #40] ; (8044260 ) - 8044238: f003 feb4 bl 8047fa4 + 8044268: 687b ldr r3, [r7, #4] + 804426a: 2b00 cmp r3, #0 + 804426c: d106 bne.n 804427c + 804426e: 4b0a ldr r3, [pc, #40] ; (8044298 ) + 8044270: f240 62ad movw r2, #1709 ; 0x6ad + 8044274: 4909 ldr r1, [pc, #36] ; (804429c ) + 8044276: 480a ldr r0, [pc, #40] ; (80442a0 ) + 8044278: f003 feb4 bl 8047fe4 if (tcp_rexmit_rto_prepare(pcb) == ERR_OK) { - 804423c: 6878 ldr r0, [r7, #4] - 804423e: f7ff ff57 bl 80440f0 - 8044242: 4603 mov r3, r0 - 8044244: 2b00 cmp r3, #0 - 8044246: d102 bne.n 804424e + 804427c: 6878 ldr r0, [r7, #4] + 804427e: f7ff ff57 bl 8044130 + 8044282: 4603 mov r3, r0 + 8044284: 2b00 cmp r3, #0 + 8044286: d102 bne.n 804428e tcp_rexmit_rto_commit(pcb); - 8044248: 6878 ldr r0, [r7, #4] - 804424a: f7ff ffc1 bl 80441d0 + 8044288: 6878 ldr r0, [r7, #4] + 804428a: f7ff ffc1 bl 8044210 } } - 804424e: bf00 nop - 8044250: 3708 adds r7, #8 - 8044252: 46bd mov sp, r7 - 8044254: bd80 pop {r7, pc} - 8044256: bf00 nop - 8044258: 0804b818 .word 0x0804b818 - 804425c: 0804be9c .word 0x0804be9c - 8044260: 0804b86c .word 0x0804b86c + 804428e: bf00 nop + 8044290: 3708 adds r7, #8 + 8044292: 46bd mov sp, r7 + 8044294: bd80 pop {r7, pc} + 8044296: bf00 nop + 8044298: 0804b858 .word 0x0804b858 + 804429c: 0804bedc .word 0x0804bedc + 80442a0: 0804b8ac .word 0x0804b8ac -08044264 : +080442a4 : * * @param pcb the tcp_pcb for which to retransmit the first unacked segment */ err_t tcp_rexmit(struct tcp_pcb *pcb) { - 8044264: b590 push {r4, r7, lr} - 8044266: b085 sub sp, #20 - 8044268: af00 add r7, sp, #0 - 804426a: 6078 str r0, [r7, #4] + 80442a4: b590 push {r4, r7, lr} + 80442a6: b085 sub sp, #20 + 80442a8: af00 add r7, sp, #0 + 80442aa: 6078 str r0, [r7, #4] struct tcp_seg *seg; struct tcp_seg **cur_seg; LWIP_ASSERT("tcp_rexmit: invalid pcb", pcb != NULL); - 804426c: 687b ldr r3, [r7, #4] - 804426e: 2b00 cmp r3, #0 - 8044270: d106 bne.n 8044280 - 8044272: 4b2f ldr r3, [pc, #188] ; (8044330 ) - 8044274: f240 62c1 movw r2, #1729 ; 0x6c1 - 8044278: 492e ldr r1, [pc, #184] ; (8044334 ) - 804427a: 482f ldr r0, [pc, #188] ; (8044338 ) - 804427c: f003 fe92 bl 8047fa4 + 80442ac: 687b ldr r3, [r7, #4] + 80442ae: 2b00 cmp r3, #0 + 80442b0: d106 bne.n 80442c0 + 80442b2: 4b2f ldr r3, [pc, #188] ; (8044370 ) + 80442b4: f240 62c1 movw r2, #1729 ; 0x6c1 + 80442b8: 492e ldr r1, [pc, #184] ; (8044374 ) + 80442ba: 482f ldr r0, [pc, #188] ; (8044378 ) + 80442bc: f003 fe92 bl 8047fe4 if (pcb->unacked == NULL) { - 8044280: 687b ldr r3, [r7, #4] - 8044282: 6f1b ldr r3, [r3, #112] ; 0x70 - 8044284: 2b00 cmp r3, #0 - 8044286: d102 bne.n 804428e + 80442c0: 687b ldr r3, [r7, #4] + 80442c2: 6f1b ldr r3, [r3, #112] ; 0x70 + 80442c4: 2b00 cmp r3, #0 + 80442c6: d102 bne.n 80442ce return ERR_VAL; - 8044288: f06f 0305 mvn.w r3, #5 - 804428c: e04c b.n 8044328 + 80442c8: f06f 0305 mvn.w r3, #5 + 80442cc: e04c b.n 8044368 } seg = pcb->unacked; - 804428e: 687b ldr r3, [r7, #4] - 8044290: 6f1b ldr r3, [r3, #112] ; 0x70 - 8044292: 60bb str r3, [r7, #8] + 80442ce: 687b ldr r3, [r7, #4] + 80442d0: 6f1b ldr r3, [r3, #112] ; 0x70 + 80442d2: 60bb str r3, [r7, #8] /* Give up if the segment is still referenced by the netif driver due to deferred transmission. */ if (tcp_output_segment_busy(seg)) { - 8044294: 68b8 ldr r0, [r7, #8] - 8044296: f7ff fe2d bl 8043ef4 - 804429a: 4603 mov r3, r0 - 804429c: 2b00 cmp r3, #0 - 804429e: d002 beq.n 80442a6 + 80442d4: 68b8 ldr r0, [r7, #8] + 80442d6: f7ff fe2d bl 8043f34 + 80442da: 4603 mov r3, r0 + 80442dc: 2b00 cmp r3, #0 + 80442de: d002 beq.n 80442e6 LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_rexmit busy\n")); return ERR_VAL; - 80442a0: f06f 0305 mvn.w r3, #5 - 80442a4: e040 b.n 8044328 + 80442e0: f06f 0305 mvn.w r3, #5 + 80442e4: e040 b.n 8044368 } /* Move the first unacked segment to the unsent queue */ /* Keep the unsent queue sorted. */ pcb->unacked = seg->next; - 80442a6: 68bb ldr r3, [r7, #8] - 80442a8: 681a ldr r2, [r3, #0] - 80442aa: 687b ldr r3, [r7, #4] - 80442ac: 671a str r2, [r3, #112] ; 0x70 + 80442e6: 68bb ldr r3, [r7, #8] + 80442e8: 681a ldr r2, [r3, #0] + 80442ea: 687b ldr r3, [r7, #4] + 80442ec: 671a str r2, [r3, #112] ; 0x70 cur_seg = &(pcb->unsent); - 80442ae: 687b ldr r3, [r7, #4] - 80442b0: 336c adds r3, #108 ; 0x6c - 80442b2: 60fb str r3, [r7, #12] + 80442ee: 687b ldr r3, [r7, #4] + 80442f0: 336c adds r3, #108 ; 0x6c + 80442f2: 60fb str r3, [r7, #12] while (*cur_seg && - 80442b4: e002 b.n 80442bc + 80442f4: e002 b.n 80442fc TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { cur_seg = &((*cur_seg)->next ); - 80442b6: 68fb ldr r3, [r7, #12] - 80442b8: 681b ldr r3, [r3, #0] - 80442ba: 60fb str r3, [r7, #12] + 80442f6: 68fb ldr r3, [r7, #12] + 80442f8: 681b ldr r3, [r3, #0] + 80442fa: 60fb str r3, [r7, #12] while (*cur_seg && - 80442bc: 68fb ldr r3, [r7, #12] - 80442be: 681b ldr r3, [r3, #0] - 80442c0: 2b00 cmp r3, #0 - 80442c2: d011 beq.n 80442e8 + 80442fc: 68fb ldr r3, [r7, #12] + 80442fe: 681b ldr r3, [r3, #0] + 8044300: 2b00 cmp r3, #0 + 8044302: d011 beq.n 8044328 TCP_SEQ_LT(lwip_ntohl((*cur_seg)->tcphdr->seqno), lwip_ntohl(seg->tcphdr->seqno))) { - 80442c4: 68fb ldr r3, [r7, #12] - 80442c6: 681b ldr r3, [r3, #0] - 80442c8: 68db ldr r3, [r3, #12] - 80442ca: 685b ldr r3, [r3, #4] - 80442cc: 4618 mov r0, r3 - 80442ce: f7f8 fe92 bl 803cff6 - 80442d2: 4604 mov r4, r0 - 80442d4: 68bb ldr r3, [r7, #8] - 80442d6: 68db ldr r3, [r3, #12] - 80442d8: 685b ldr r3, [r3, #4] - 80442da: 4618 mov r0, r3 - 80442dc: f7f8 fe8b bl 803cff6 - 80442e0: 4603 mov r3, r0 - 80442e2: 1ae3 subs r3, r4, r3 + 8044304: 68fb ldr r3, [r7, #12] + 8044306: 681b ldr r3, [r3, #0] + 8044308: 68db ldr r3, [r3, #12] + 804430a: 685b ldr r3, [r3, #4] + 804430c: 4618 mov r0, r3 + 804430e: f7f8 fe92 bl 803d036 + 8044312: 4604 mov r4, r0 + 8044314: 68bb ldr r3, [r7, #8] + 8044316: 68db ldr r3, [r3, #12] + 8044318: 685b ldr r3, [r3, #4] + 804431a: 4618 mov r0, r3 + 804431c: f7f8 fe8b bl 803d036 + 8044320: 4603 mov r3, r0 + 8044322: 1ae3 subs r3, r4, r3 while (*cur_seg && - 80442e4: 2b00 cmp r3, #0 - 80442e6: dbe6 blt.n 80442b6 + 8044324: 2b00 cmp r3, #0 + 8044326: dbe6 blt.n 80442f6 } seg->next = *cur_seg; - 80442e8: 68fb ldr r3, [r7, #12] - 80442ea: 681a ldr r2, [r3, #0] - 80442ec: 68bb ldr r3, [r7, #8] - 80442ee: 601a str r2, [r3, #0] + 8044328: 68fb ldr r3, [r7, #12] + 804432a: 681a ldr r2, [r3, #0] + 804432c: 68bb ldr r3, [r7, #8] + 804432e: 601a str r2, [r3, #0] *cur_seg = seg; - 80442f0: 68fb ldr r3, [r7, #12] - 80442f2: 68ba ldr r2, [r7, #8] - 80442f4: 601a str r2, [r3, #0] + 8044330: 68fb ldr r3, [r7, #12] + 8044332: 68ba ldr r2, [r7, #8] + 8044334: 601a str r2, [r3, #0] #if TCP_OVERSIZE if (seg->next == NULL) { - 80442f6: 68bb ldr r3, [r7, #8] - 80442f8: 681b ldr r3, [r3, #0] - 80442fa: 2b00 cmp r3, #0 - 80442fc: d103 bne.n 8044306 + 8044336: 68bb ldr r3, [r7, #8] + 8044338: 681b ldr r3, [r3, #0] + 804433a: 2b00 cmp r3, #0 + 804433c: d103 bne.n 8044346 /* the retransmitted segment is last in unsent, so reset unsent_oversize */ pcb->unsent_oversize = 0; - 80442fe: 687b ldr r3, [r7, #4] - 8044300: 2200 movs r2, #0 - 8044302: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 + 804433e: 687b ldr r3, [r7, #4] + 8044340: 2200 movs r2, #0 + 8044342: f8a3 2068 strh.w r2, [r3, #104] ; 0x68 } #endif /* TCP_OVERSIZE */ if (pcb->nrtx < 0xFF) { - 8044306: 687b ldr r3, [r7, #4] - 8044308: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 804430c: 2bff cmp r3, #255 ; 0xff - 804430e: d007 beq.n 8044320 + 8044346: 687b ldr r3, [r7, #4] + 8044348: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 804434c: 2bff cmp r3, #255 ; 0xff + 804434e: d007 beq.n 8044360 ++pcb->nrtx; - 8044310: 687b ldr r3, [r7, #4] - 8044312: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 - 8044316: 3301 adds r3, #1 - 8044318: b2da uxtb r2, r3 - 804431a: 687b ldr r3, [r7, #4] - 804431c: f883 2042 strb.w r2, [r3, #66] ; 0x42 + 8044350: 687b ldr r3, [r7, #4] + 8044352: f893 3042 ldrb.w r3, [r3, #66] ; 0x42 + 8044356: 3301 adds r3, #1 + 8044358: b2da uxtb r2, r3 + 804435a: 687b ldr r3, [r7, #4] + 804435c: f883 2042 strb.w r2, [r3, #66] ; 0x42 } /* Don't take any rtt measurements after retransmitting. */ pcb->rttest = 0; - 8044320: 687b ldr r3, [r7, #4] - 8044322: 2200 movs r2, #0 - 8044324: 635a str r2, [r3, #52] ; 0x34 + 8044360: 687b ldr r3, [r7, #4] + 8044362: 2200 movs r2, #0 + 8044364: 635a str r2, [r3, #52] ; 0x34 /* Do the actual retransmission. */ MIB2_STATS_INC(mib2.tcpretranssegs); /* No need to call tcp_output: we are always called from tcp_input() and thus tcp_output directly returns. */ return ERR_OK; - 8044326: 2300 movs r3, #0 + 8044366: 2300 movs r3, #0 } - 8044328: 4618 mov r0, r3 - 804432a: 3714 adds r7, #20 - 804432c: 46bd mov sp, r7 - 804432e: bd90 pop {r4, r7, pc} - 8044330: 0804b818 .word 0x0804b818 - 8044334: 0804beb8 .word 0x0804beb8 - 8044338: 0804b86c .word 0x0804b86c + 8044368: 4618 mov r0, r3 + 804436a: 3714 adds r7, #20 + 804436c: 46bd mov sp, r7 + 804436e: bd90 pop {r4, r7, pc} + 8044370: 0804b858 .word 0x0804b858 + 8044374: 0804bef8 .word 0x0804bef8 + 8044378: 0804b8ac .word 0x0804b8ac -0804433c : +0804437c : * * @param pcb the tcp_pcb for which to retransmit the first unacked segment */ void tcp_rexmit_fast(struct tcp_pcb *pcb) { - 804433c: b580 push {r7, lr} - 804433e: b082 sub sp, #8 - 8044340: af00 add r7, sp, #0 - 8044342: 6078 str r0, [r7, #4] + 804437c: b580 push {r7, lr} + 804437e: b082 sub sp, #8 + 8044380: af00 add r7, sp, #0 + 8044382: 6078 str r0, [r7, #4] LWIP_ASSERT("tcp_rexmit_fast: invalid pcb", pcb != NULL); - 8044344: 687b ldr r3, [r7, #4] - 8044346: 2b00 cmp r3, #0 - 8044348: d106 bne.n 8044358 - 804434a: 4b2a ldr r3, [pc, #168] ; (80443f4 ) - 804434c: f240 62f9 movw r2, #1785 ; 0x6f9 - 8044350: 4929 ldr r1, [pc, #164] ; (80443f8 ) - 8044352: 482a ldr r0, [pc, #168] ; (80443fc ) - 8044354: f003 fe26 bl 8047fa4 + 8044384: 687b ldr r3, [r7, #4] + 8044386: 2b00 cmp r3, #0 + 8044388: d106 bne.n 8044398 + 804438a: 4b2a ldr r3, [pc, #168] ; (8044434 ) + 804438c: f240 62f9 movw r2, #1785 ; 0x6f9 + 8044390: 4929 ldr r1, [pc, #164] ; (8044438 ) + 8044392: 482a ldr r0, [pc, #168] ; (804443c ) + 8044394: f003 fe26 bl 8047fe4 if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { - 8044358: 687b ldr r3, [r7, #4] - 804435a: 6f1b ldr r3, [r3, #112] ; 0x70 - 804435c: 2b00 cmp r3, #0 - 804435e: d045 beq.n 80443ec - 8044360: 687b ldr r3, [r7, #4] - 8044362: 8b5b ldrh r3, [r3, #26] - 8044364: f003 0304 and.w r3, r3, #4 - 8044368: 2b00 cmp r3, #0 - 804436a: d13f bne.n 80443ec + 8044398: 687b ldr r3, [r7, #4] + 804439a: 6f1b ldr r3, [r3, #112] ; 0x70 + 804439c: 2b00 cmp r3, #0 + 804439e: d045 beq.n 804442c + 80443a0: 687b ldr r3, [r7, #4] + 80443a2: 8b5b ldrh r3, [r3, #26] + 80443a4: f003 0304 and.w r3, r3, #4 + 80443a8: 2b00 cmp r3, #0 + 80443aa: d13f bne.n 804442c LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: dupacks %"U16_F" (%"U32_F "), fast retransmit %"U32_F"\n", (u16_t)pcb->dupacks, pcb->lastack, lwip_ntohl(pcb->unacked->tcphdr->seqno))); if (tcp_rexmit(pcb) == ERR_OK) { - 804436c: 6878 ldr r0, [r7, #4] - 804436e: f7ff ff79 bl 8044264 - 8044372: 4603 mov r3, r0 - 8044374: 2b00 cmp r3, #0 - 8044376: d139 bne.n 80443ec + 80443ac: 6878 ldr r0, [r7, #4] + 80443ae: f7ff ff79 bl 80442a4 + 80443b2: 4603 mov r3, r0 + 80443b4: 2b00 cmp r3, #0 + 80443b6: d139 bne.n 804442c /* Set ssthresh to half of the minimum of the current * cwnd and the advertised window */ pcb->ssthresh = LWIP_MIN(pcb->cwnd, pcb->snd_wnd) / 2; - 8044378: 687b ldr r3, [r7, #4] - 804437a: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 - 804437e: 687b ldr r3, [r7, #4] - 8044380: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 - 8044384: 4293 cmp r3, r2 - 8044386: bf28 it cs - 8044388: 4613 movcs r3, r2 - 804438a: b29b uxth r3, r3 - 804438c: 2b00 cmp r3, #0 - 804438e: da00 bge.n 8044392 - 8044390: 3301 adds r3, #1 - 8044392: 105b asrs r3, r3, #1 - 8044394: b29a uxth r2, r3 - 8044396: 687b ldr r3, [r7, #4] - 8044398: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 80443b8: 687b ldr r3, [r7, #4] + 80443ba: f8b3 2060 ldrh.w r2, [r3, #96] ; 0x60 + 80443be: 687b ldr r3, [r7, #4] + 80443c0: f8b3 3048 ldrh.w r3, [r3, #72] ; 0x48 + 80443c4: 4293 cmp r3, r2 + 80443c6: bf28 it cs + 80443c8: 4613 movcs r3, r2 + 80443ca: b29b uxth r3, r3 + 80443cc: 2b00 cmp r3, #0 + 80443ce: da00 bge.n 80443d2 + 80443d0: 3301 adds r3, #1 + 80443d2: 105b asrs r3, r3, #1 + 80443d4: b29a uxth r2, r3 + 80443d6: 687b ldr r3, [r7, #4] + 80443d8: f8a3 204a strh.w r2, [r3, #74] ; 0x4a /* The minimum value for ssthresh should be 2 MSS */ if (pcb->ssthresh < (2U * pcb->mss)) { - 804439c: 687b ldr r3, [r7, #4] - 804439e: f8b3 304a ldrh.w r3, [r3, #74] ; 0x4a - 80443a2: 461a mov r2, r3 - 80443a4: 687b ldr r3, [r7, #4] - 80443a6: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80443a8: 005b lsls r3, r3, #1 - 80443aa: 429a cmp r2, r3 - 80443ac: d206 bcs.n 80443bc + 80443dc: 687b ldr r3, [r7, #4] + 80443de: f8b3 304a ldrh.w r3, [r3, #74] ; 0x4a + 80443e2: 461a mov r2, r3 + 80443e4: 687b ldr r3, [r7, #4] + 80443e6: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80443e8: 005b lsls r3, r3, #1 + 80443ea: 429a cmp r2, r3 + 80443ec: d206 bcs.n 80443fc LWIP_DEBUGF(TCP_FR_DEBUG, ("tcp_receive: The minimum value for ssthresh %"TCPWNDSIZE_F " should be min 2 mss %"U16_F"...\n", pcb->ssthresh, (u16_t)(2 * pcb->mss))); pcb->ssthresh = 2 * pcb->mss; - 80443ae: 687b ldr r3, [r7, #4] - 80443b0: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80443b2: 005b lsls r3, r3, #1 - 80443b4: b29a uxth r2, r3 - 80443b6: 687b ldr r3, [r7, #4] - 80443b8: f8a3 204a strh.w r2, [r3, #74] ; 0x4a + 80443ee: 687b ldr r3, [r7, #4] + 80443f0: 8e5b ldrh r3, [r3, #50] ; 0x32 + 80443f2: 005b lsls r3, r3, #1 + 80443f4: b29a uxth r2, r3 + 80443f6: 687b ldr r3, [r7, #4] + 80443f8: f8a3 204a strh.w r2, [r3, #74] ; 0x4a } pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; - 80443bc: 687b ldr r3, [r7, #4] - 80443be: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a - 80443c2: 687b ldr r3, [r7, #4] - 80443c4: 8e5b ldrh r3, [r3, #50] ; 0x32 - 80443c6: 4619 mov r1, r3 - 80443c8: 0049 lsls r1, r1, #1 - 80443ca: 440b add r3, r1 - 80443cc: b29b uxth r3, r3 - 80443ce: 4413 add r3, r2 - 80443d0: b29a uxth r2, r3 - 80443d2: 687b ldr r3, [r7, #4] - 80443d4: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 + 80443fc: 687b ldr r3, [r7, #4] + 80443fe: f8b3 204a ldrh.w r2, [r3, #74] ; 0x4a + 8044402: 687b ldr r3, [r7, #4] + 8044404: 8e5b ldrh r3, [r3, #50] ; 0x32 + 8044406: 4619 mov r1, r3 + 8044408: 0049 lsls r1, r1, #1 + 804440a: 440b add r3, r1 + 804440c: b29b uxth r3, r3 + 804440e: 4413 add r3, r2 + 8044410: b29a uxth r2, r3 + 8044412: 687b ldr r3, [r7, #4] + 8044414: f8a3 2048 strh.w r2, [r3, #72] ; 0x48 tcp_set_flags(pcb, TF_INFR); - 80443d8: 687b ldr r3, [r7, #4] - 80443da: 8b5b ldrh r3, [r3, #26] - 80443dc: f043 0304 orr.w r3, r3, #4 - 80443e0: b29a uxth r2, r3 - 80443e2: 687b ldr r3, [r7, #4] - 80443e4: 835a strh r2, [r3, #26] + 8044418: 687b ldr r3, [r7, #4] + 804441a: 8b5b ldrh r3, [r3, #26] + 804441c: f043 0304 orr.w r3, r3, #4 + 8044420: b29a uxth r2, r3 + 8044422: 687b ldr r3, [r7, #4] + 8044424: 835a strh r2, [r3, #26] /* Reset the retransmission timer to prevent immediate rto retransmissions */ pcb->rtime = 0; - 80443e6: 687b ldr r3, [r7, #4] - 80443e8: 2200 movs r2, #0 - 80443ea: 861a strh r2, [r3, #48] ; 0x30 + 8044426: 687b ldr r3, [r7, #4] + 8044428: 2200 movs r2, #0 + 804442a: 861a strh r2, [r3, #48] ; 0x30 } } } - 80443ec: bf00 nop - 80443ee: 3708 adds r7, #8 - 80443f0: 46bd mov sp, r7 - 80443f2: bd80 pop {r7, pc} - 80443f4: 0804b818 .word 0x0804b818 - 80443f8: 0804bed0 .word 0x0804bed0 - 80443fc: 0804b86c .word 0x0804b86c + 804442c: bf00 nop + 804442e: 3708 adds r7, #8 + 8044430: 46bd mov sp, r7 + 8044432: bd80 pop {r7, pc} + 8044434: 0804b858 .word 0x0804b858 + 8044438: 0804bf10 .word 0x0804bf10 + 804443c: 0804b8ac .word 0x0804b8ac -08044400 : +08044440 : static struct pbuf * tcp_output_alloc_header_common(u32_t ackno, u16_t optlen, u16_t datalen, u32_t seqno_be /* already in network byte order */, u16_t src_port, u16_t dst_port, u8_t flags, u16_t wnd) { - 8044400: b580 push {r7, lr} - 8044402: b086 sub sp, #24 - 8044404: af00 add r7, sp, #0 - 8044406: 60f8 str r0, [r7, #12] - 8044408: 607b str r3, [r7, #4] - 804440a: 460b mov r3, r1 - 804440c: 817b strh r3, [r7, #10] - 804440e: 4613 mov r3, r2 - 8044410: 813b strh r3, [r7, #8] + 8044440: b580 push {r7, lr} + 8044442: b086 sub sp, #24 + 8044444: af00 add r7, sp, #0 + 8044446: 60f8 str r0, [r7, #12] + 8044448: 607b str r3, [r7, #4] + 804444a: 460b mov r3, r1 + 804444c: 817b strh r3, [r7, #10] + 804444e: 4613 mov r3, r2 + 8044450: 813b strh r3, [r7, #8] struct tcp_hdr *tcphdr; struct pbuf *p; p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); - 8044412: 897a ldrh r2, [r7, #10] - 8044414: 893b ldrh r3, [r7, #8] - 8044416: 4413 add r3, r2 - 8044418: b29b uxth r3, r3 - 804441a: 3314 adds r3, #20 - 804441c: b29b uxth r3, r3 - 804441e: f44f 7220 mov.w r2, #640 ; 0x280 - 8044422: 4619 mov r1, r3 - 8044424: 2022 movs r0, #34 ; 0x22 - 8044426: f7f9 ff1f bl 803e268 - 804442a: 6178 str r0, [r7, #20] + 8044452: 897a ldrh r2, [r7, #10] + 8044454: 893b ldrh r3, [r7, #8] + 8044456: 4413 add r3, r2 + 8044458: b29b uxth r3, r3 + 804445a: 3314 adds r3, #20 + 804445c: b29b uxth r3, r3 + 804445e: f44f 7220 mov.w r2, #640 ; 0x280 + 8044462: 4619 mov r1, r3 + 8044464: 2022 movs r0, #34 ; 0x22 + 8044466: f7f9 ff1f bl 803e2a8 + 804446a: 6178 str r0, [r7, #20] if (p != NULL) { - 804442c: 697b ldr r3, [r7, #20] - 804442e: 2b00 cmp r3, #0 - 8044430: d04d beq.n 80444ce + 804446c: 697b ldr r3, [r7, #20] + 804446e: 2b00 cmp r3, #0 + 8044470: d04d beq.n 804450e LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - 8044432: 897b ldrh r3, [r7, #10] - 8044434: 3313 adds r3, #19 - 8044436: 697a ldr r2, [r7, #20] - 8044438: 8952 ldrh r2, [r2, #10] - 804443a: 4293 cmp r3, r2 - 804443c: db06 blt.n 804444c - 804443e: 4b26 ldr r3, [pc, #152] ; (80444d8 ) - 8044440: f240 7223 movw r2, #1827 ; 0x723 - 8044444: 4925 ldr r1, [pc, #148] ; (80444dc ) - 8044446: 4826 ldr r0, [pc, #152] ; (80444e0 ) - 8044448: f003 fdac bl 8047fa4 + 8044472: 897b ldrh r3, [r7, #10] + 8044474: 3313 adds r3, #19 + 8044476: 697a ldr r2, [r7, #20] + 8044478: 8952 ldrh r2, [r2, #10] + 804447a: 4293 cmp r3, r2 + 804447c: db06 blt.n 804448c + 804447e: 4b26 ldr r3, [pc, #152] ; (8044518 ) + 8044480: f240 7223 movw r2, #1827 ; 0x723 + 8044484: 4925 ldr r1, [pc, #148] ; (804451c ) + 8044486: 4826 ldr r0, [pc, #152] ; (8044520 ) + 8044488: f003 fdac bl 8047fe4 (p->len >= TCP_HLEN + optlen)); tcphdr = (struct tcp_hdr *)p->payload; - 804444c: 697b ldr r3, [r7, #20] - 804444e: 685b ldr r3, [r3, #4] - 8044450: 613b str r3, [r7, #16] + 804448c: 697b ldr r3, [r7, #20] + 804448e: 685b ldr r3, [r3, #4] + 8044490: 613b str r3, [r7, #16] tcphdr->src = lwip_htons(src_port); - 8044452: 8c3b ldrh r3, [r7, #32] - 8044454: 4618 mov r0, r3 - 8044456: f7f8 fdb9 bl 803cfcc - 804445a: 4603 mov r3, r0 - 804445c: 461a mov r2, r3 - 804445e: 693b ldr r3, [r7, #16] - 8044460: 801a strh r2, [r3, #0] + 8044492: 8c3b ldrh r3, [r7, #32] + 8044494: 4618 mov r0, r3 + 8044496: f7f8 fdb9 bl 803d00c + 804449a: 4603 mov r3, r0 + 804449c: 461a mov r2, r3 + 804449e: 693b ldr r3, [r7, #16] + 80444a0: 801a strh r2, [r3, #0] tcphdr->dest = lwip_htons(dst_port); - 8044462: 8cbb ldrh r3, [r7, #36] ; 0x24 - 8044464: 4618 mov r0, r3 - 8044466: f7f8 fdb1 bl 803cfcc - 804446a: 4603 mov r3, r0 - 804446c: 461a mov r2, r3 - 804446e: 693b ldr r3, [r7, #16] - 8044470: 805a strh r2, [r3, #2] + 80444a2: 8cbb ldrh r3, [r7, #36] ; 0x24 + 80444a4: 4618 mov r0, r3 + 80444a6: f7f8 fdb1 bl 803d00c + 80444aa: 4603 mov r3, r0 + 80444ac: 461a mov r2, r3 + 80444ae: 693b ldr r3, [r7, #16] + 80444b0: 805a strh r2, [r3, #2] tcphdr->seqno = seqno_be; - 8044472: 693b ldr r3, [r7, #16] - 8044474: 687a ldr r2, [r7, #4] - 8044476: 605a str r2, [r3, #4] + 80444b2: 693b ldr r3, [r7, #16] + 80444b4: 687a ldr r2, [r7, #4] + 80444b6: 605a str r2, [r3, #4] tcphdr->ackno = lwip_htonl(ackno); - 8044478: 68f8 ldr r0, [r7, #12] - 804447a: f7f8 fdbc bl 803cff6 - 804447e: 4602 mov r2, r0 - 8044480: 693b ldr r3, [r7, #16] - 8044482: 609a str r2, [r3, #8] + 80444b8: 68f8 ldr r0, [r7, #12] + 80444ba: f7f8 fdbc bl 803d036 + 80444be: 4602 mov r2, r0 + 80444c0: 693b ldr r3, [r7, #16] + 80444c2: 609a str r2, [r3, #8] TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), flags); - 8044484: 897b ldrh r3, [r7, #10] - 8044486: 089b lsrs r3, r3, #2 - 8044488: b29b uxth r3, r3 - 804448a: 3305 adds r3, #5 - 804448c: b29b uxth r3, r3 - 804448e: 031b lsls r3, r3, #12 - 8044490: b29a uxth r2, r3 - 8044492: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 - 8044496: b29b uxth r3, r3 - 8044498: 4313 orrs r3, r2 - 804449a: b29b uxth r3, r3 - 804449c: 4618 mov r0, r3 - 804449e: f7f8 fd95 bl 803cfcc - 80444a2: 4603 mov r3, r0 - 80444a4: 461a mov r2, r3 - 80444a6: 693b ldr r3, [r7, #16] - 80444a8: 819a strh r2, [r3, #12] + 80444c4: 897b ldrh r3, [r7, #10] + 80444c6: 089b lsrs r3, r3, #2 + 80444c8: b29b uxth r3, r3 + 80444ca: 3305 adds r3, #5 + 80444cc: b29b uxth r3, r3 + 80444ce: 031b lsls r3, r3, #12 + 80444d0: b29a uxth r2, r3 + 80444d2: f897 3028 ldrb.w r3, [r7, #40] ; 0x28 + 80444d6: b29b uxth r3, r3 + 80444d8: 4313 orrs r3, r2 + 80444da: b29b uxth r3, r3 + 80444dc: 4618 mov r0, r3 + 80444de: f7f8 fd95 bl 803d00c + 80444e2: 4603 mov r3, r0 + 80444e4: 461a mov r2, r3 + 80444e6: 693b ldr r3, [r7, #16] + 80444e8: 819a strh r2, [r3, #12] tcphdr->wnd = lwip_htons(wnd); - 80444aa: 8dbb ldrh r3, [r7, #44] ; 0x2c - 80444ac: 4618 mov r0, r3 - 80444ae: f7f8 fd8d bl 803cfcc - 80444b2: 4603 mov r3, r0 - 80444b4: 461a mov r2, r3 - 80444b6: 693b ldr r3, [r7, #16] - 80444b8: 81da strh r2, [r3, #14] + 80444ea: 8dbb ldrh r3, [r7, #44] ; 0x2c + 80444ec: 4618 mov r0, r3 + 80444ee: f7f8 fd8d bl 803d00c + 80444f2: 4603 mov r3, r0 + 80444f4: 461a mov r2, r3 + 80444f6: 693b ldr r3, [r7, #16] + 80444f8: 81da strh r2, [r3, #14] tcphdr->chksum = 0; - 80444ba: 693b ldr r3, [r7, #16] - 80444bc: 2200 movs r2, #0 - 80444be: 741a strb r2, [r3, #16] - 80444c0: 2200 movs r2, #0 - 80444c2: 745a strb r2, [r3, #17] + 80444fa: 693b ldr r3, [r7, #16] + 80444fc: 2200 movs r2, #0 + 80444fe: 741a strb r2, [r3, #16] + 8044500: 2200 movs r2, #0 + 8044502: 745a strb r2, [r3, #17] tcphdr->urgp = 0; - 80444c4: 693b ldr r3, [r7, #16] - 80444c6: 2200 movs r2, #0 - 80444c8: 749a strb r2, [r3, #18] - 80444ca: 2200 movs r2, #0 - 80444cc: 74da strb r2, [r3, #19] + 8044504: 693b ldr r3, [r7, #16] + 8044506: 2200 movs r2, #0 + 8044508: 749a strb r2, [r3, #18] + 804450a: 2200 movs r2, #0 + 804450c: 74da strb r2, [r3, #19] } return p; - 80444ce: 697b ldr r3, [r7, #20] + 804450e: 697b ldr r3, [r7, #20] } - 80444d0: 4618 mov r0, r3 - 80444d2: 3718 adds r7, #24 - 80444d4: 46bd mov sp, r7 - 80444d6: bd80 pop {r7, pc} - 80444d8: 0804b818 .word 0x0804b818 - 80444dc: 0804bef0 .word 0x0804bef0 - 80444e0: 0804b86c .word 0x0804b86c + 8044510: 4618 mov r0, r3 + 8044512: 3718 adds r7, #24 + 8044514: 46bd mov sp, r7 + 8044516: bd80 pop {r7, pc} + 8044518: 0804b858 .word 0x0804b858 + 804451c: 0804bf30 .word 0x0804bf30 + 8044520: 0804b8ac .word 0x0804b8ac -080444e4 : +08044524 : * @return pbuf with p->payload being the tcp_hdr */ static struct pbuf * tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen, u32_t seqno_be /* already in network byte order */) { - 80444e4: b5b0 push {r4, r5, r7, lr} - 80444e6: b08a sub sp, #40 ; 0x28 - 80444e8: af04 add r7, sp, #16 - 80444ea: 60f8 str r0, [r7, #12] - 80444ec: 607b str r3, [r7, #4] - 80444ee: 460b mov r3, r1 - 80444f0: 817b strh r3, [r7, #10] - 80444f2: 4613 mov r3, r2 - 80444f4: 813b strh r3, [r7, #8] + 8044524: b5b0 push {r4, r5, r7, lr} + 8044526: b08a sub sp, #40 ; 0x28 + 8044528: af04 add r7, sp, #16 + 804452a: 60f8 str r0, [r7, #12] + 804452c: 607b str r3, [r7, #4] + 804452e: 460b mov r3, r1 + 8044530: 817b strh r3, [r7, #10] + 8044532: 4613 mov r3, r2 + 8044534: 813b strh r3, [r7, #8] struct pbuf *p; LWIP_ASSERT("tcp_output_alloc_header: invalid pcb", pcb != NULL); - 80444f6: 68fb ldr r3, [r7, #12] - 80444f8: 2b00 cmp r3, #0 - 80444fa: d106 bne.n 804450a - 80444fc: 4b15 ldr r3, [pc, #84] ; (8044554 ) - 80444fe: f240 7242 movw r2, #1858 ; 0x742 - 8044502: 4915 ldr r1, [pc, #84] ; (8044558 ) - 8044504: 4815 ldr r0, [pc, #84] ; (804455c ) - 8044506: f003 fd4d bl 8047fa4 + 8044536: 68fb ldr r3, [r7, #12] + 8044538: 2b00 cmp r3, #0 + 804453a: d106 bne.n 804454a + 804453c: 4b15 ldr r3, [pc, #84] ; (8044594 ) + 804453e: f240 7242 movw r2, #1858 ; 0x742 + 8044542: 4915 ldr r1, [pc, #84] ; (8044598 ) + 8044544: 4815 ldr r0, [pc, #84] ; (804459c ) + 8044546: f003 fd4d bl 8047fe4 p = tcp_output_alloc_header_common(pcb->rcv_nxt, optlen, datalen, - 804450a: 68fb ldr r3, [r7, #12] - 804450c: 6a58 ldr r0, [r3, #36] ; 0x24 - 804450e: 68fb ldr r3, [r7, #12] - 8044510: 8adb ldrh r3, [r3, #22] - 8044512: 68fa ldr r2, [r7, #12] - 8044514: 8b12 ldrh r2, [r2, #24] - 8044516: 68f9 ldr r1, [r7, #12] - 8044518: 8d49 ldrh r1, [r1, #42] ; 0x2a - 804451a: 893d ldrh r5, [r7, #8] - 804451c: 897c ldrh r4, [r7, #10] - 804451e: 9103 str r1, [sp, #12] - 8044520: 2110 movs r1, #16 - 8044522: 9102 str r1, [sp, #8] - 8044524: 9201 str r2, [sp, #4] - 8044526: 9300 str r3, [sp, #0] - 8044528: 687b ldr r3, [r7, #4] - 804452a: 462a mov r2, r5 - 804452c: 4621 mov r1, r4 - 804452e: f7ff ff67 bl 8044400 - 8044532: 6178 str r0, [r7, #20] + 804454a: 68fb ldr r3, [r7, #12] + 804454c: 6a58 ldr r0, [r3, #36] ; 0x24 + 804454e: 68fb ldr r3, [r7, #12] + 8044550: 8adb ldrh r3, [r3, #22] + 8044552: 68fa ldr r2, [r7, #12] + 8044554: 8b12 ldrh r2, [r2, #24] + 8044556: 68f9 ldr r1, [r7, #12] + 8044558: 8d49 ldrh r1, [r1, #42] ; 0x2a + 804455a: 893d ldrh r5, [r7, #8] + 804455c: 897c ldrh r4, [r7, #10] + 804455e: 9103 str r1, [sp, #12] + 8044560: 2110 movs r1, #16 + 8044562: 9102 str r1, [sp, #8] + 8044564: 9201 str r2, [sp, #4] + 8044566: 9300 str r3, [sp, #0] + 8044568: 687b ldr r3, [r7, #4] + 804456a: 462a mov r2, r5 + 804456c: 4621 mov r1, r4 + 804456e: f7ff ff67 bl 8044440 + 8044572: 6178 str r0, [r7, #20] seqno_be, pcb->local_port, pcb->remote_port, TCP_ACK, TCPWND_MIN16(RCV_WND_SCALE(pcb, pcb->rcv_ann_wnd))); if (p != NULL) { - 8044534: 697b ldr r3, [r7, #20] - 8044536: 2b00 cmp r3, #0 - 8044538: d006 beq.n 8044548 + 8044574: 697b ldr r3, [r7, #20] + 8044576: 2b00 cmp r3, #0 + 8044578: d006 beq.n 8044588 /* If we're sending a packet, update the announced right window edge */ pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - 804453a: 68fb ldr r3, [r7, #12] - 804453c: 6a5b ldr r3, [r3, #36] ; 0x24 - 804453e: 68fa ldr r2, [r7, #12] - 8044540: 8d52 ldrh r2, [r2, #42] ; 0x2a - 8044542: 441a add r2, r3 - 8044544: 68fb ldr r3, [r7, #12] - 8044546: 62da str r2, [r3, #44] ; 0x2c + 804457a: 68fb ldr r3, [r7, #12] + 804457c: 6a5b ldr r3, [r3, #36] ; 0x24 + 804457e: 68fa ldr r2, [r7, #12] + 8044580: 8d52 ldrh r2, [r2, #42] ; 0x2a + 8044582: 441a add r2, r3 + 8044584: 68fb ldr r3, [r7, #12] + 8044586: 62da str r2, [r3, #44] ; 0x2c } return p; - 8044548: 697b ldr r3, [r7, #20] + 8044588: 697b ldr r3, [r7, #20] } - 804454a: 4618 mov r0, r3 - 804454c: 3718 adds r7, #24 - 804454e: 46bd mov sp, r7 - 8044550: bdb0 pop {r4, r5, r7, pc} - 8044552: bf00 nop - 8044554: 0804b818 .word 0x0804b818 - 8044558: 0804bf20 .word 0x0804bf20 - 804455c: 0804b86c .word 0x0804b86c + 804458a: 4618 mov r0, r3 + 804458c: 3718 adds r7, #24 + 804458e: 46bd mov sp, r7 + 8044590: bdb0 pop {r4, r5, r7, pc} + 8044592: bf00 nop + 8044594: 0804b858 .word 0x0804b858 + 8044598: 0804bf60 .word 0x0804bf60 + 804459c: 0804b8ac .word 0x0804b8ac -08044560 : +080445a0 : /* Fill in options for control segments */ static void tcp_output_fill_options(const struct tcp_pcb *pcb, struct pbuf *p, u8_t optflags, u8_t num_sacks) { - 8044560: b580 push {r7, lr} - 8044562: b088 sub sp, #32 - 8044564: af00 add r7, sp, #0 - 8044566: 60f8 str r0, [r7, #12] - 8044568: 60b9 str r1, [r7, #8] - 804456a: 4611 mov r1, r2 - 804456c: 461a mov r2, r3 - 804456e: 460b mov r3, r1 - 8044570: 71fb strb r3, [r7, #7] - 8044572: 4613 mov r3, r2 - 8044574: 71bb strb r3, [r7, #6] + 80445a0: b580 push {r7, lr} + 80445a2: b088 sub sp, #32 + 80445a4: af00 add r7, sp, #0 + 80445a6: 60f8 str r0, [r7, #12] + 80445a8: 60b9 str r1, [r7, #8] + 80445aa: 4611 mov r1, r2 + 80445ac: 461a mov r2, r3 + 80445ae: 460b mov r3, r1 + 80445b0: 71fb strb r3, [r7, #7] + 80445b2: 4613 mov r3, r2 + 80445b4: 71bb strb r3, [r7, #6] struct tcp_hdr *tcphdr; u32_t *opts; u16_t sacks_len = 0; - 8044576: 2300 movs r3, #0 - 8044578: 83fb strh r3, [r7, #30] + 80445b6: 2300 movs r3, #0 + 80445b8: 83fb strh r3, [r7, #30] LWIP_ASSERT("tcp_output_fill_options: invalid pbuf", p != NULL); - 804457a: 68bb ldr r3, [r7, #8] - 804457c: 2b00 cmp r3, #0 - 804457e: d106 bne.n 804458e - 8044580: 4b13 ldr r3, [pc, #76] ; (80445d0 ) - 8044582: f240 7256 movw r2, #1878 ; 0x756 - 8044586: 4913 ldr r1, [pc, #76] ; (80445d4 ) - 8044588: 4813 ldr r0, [pc, #76] ; (80445d8 ) - 804458a: f003 fd0b bl 8047fa4 + 80445ba: 68bb ldr r3, [r7, #8] + 80445bc: 2b00 cmp r3, #0 + 80445be: d106 bne.n 80445ce + 80445c0: 4b13 ldr r3, [pc, #76] ; (8044610 ) + 80445c2: f240 7256 movw r2, #1878 ; 0x756 + 80445c6: 4913 ldr r1, [pc, #76] ; (8044614 ) + 80445c8: 4813 ldr r0, [pc, #76] ; (8044618 ) + 80445ca: f003 fd0b bl 8047fe4 tcphdr = (struct tcp_hdr *)p->payload; - 804458e: 68bb ldr r3, [r7, #8] - 8044590: 685b ldr r3, [r3, #4] - 8044592: 61bb str r3, [r7, #24] + 80445ce: 68bb ldr r3, [r7, #8] + 80445d0: 685b ldr r3, [r3, #4] + 80445d2: 61bb str r3, [r7, #24] opts = (u32_t *)(void *)(tcphdr + 1); - 8044594: 69bb ldr r3, [r7, #24] - 8044596: 3314 adds r3, #20 - 8044598: 617b str r3, [r7, #20] + 80445d4: 69bb ldr r3, [r7, #24] + 80445d6: 3314 adds r3, #20 + 80445d8: 617b str r3, [r7, #20] opts = LWIP_HOOK_TCP_OUT_ADD_TCPOPTS(p, tcphdr, pcb, opts); #endif LWIP_UNUSED_ARG(pcb); LWIP_UNUSED_ARG(sacks_len); LWIP_ASSERT("options not filled", (u8_t *)opts == ((u8_t *)(tcphdr + 1)) + sacks_len * 4 + LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb)); - 804459a: 69bb ldr r3, [r7, #24] - 804459c: f103 0214 add.w r2, r3, #20 - 80445a0: 8bfb ldrh r3, [r7, #30] - 80445a2: 009b lsls r3, r3, #2 - 80445a4: 4619 mov r1, r3 - 80445a6: 79fb ldrb r3, [r7, #7] - 80445a8: 009b lsls r3, r3, #2 - 80445aa: f003 0304 and.w r3, r3, #4 - 80445ae: 440b add r3, r1 - 80445b0: 4413 add r3, r2 - 80445b2: 697a ldr r2, [r7, #20] - 80445b4: 429a cmp r2, r3 - 80445b6: d006 beq.n 80445c6 - 80445b8: 4b05 ldr r3, [pc, #20] ; (80445d0 ) - 80445ba: f240 7275 movw r2, #1909 ; 0x775 - 80445be: 4907 ldr r1, [pc, #28] ; (80445dc ) - 80445c0: 4805 ldr r0, [pc, #20] ; (80445d8 ) - 80445c2: f003 fcef bl 8047fa4 + 80445da: 69bb ldr r3, [r7, #24] + 80445dc: f103 0214 add.w r2, r3, #20 + 80445e0: 8bfb ldrh r3, [r7, #30] + 80445e2: 009b lsls r3, r3, #2 + 80445e4: 4619 mov r1, r3 + 80445e6: 79fb ldrb r3, [r7, #7] + 80445e8: 009b lsls r3, r3, #2 + 80445ea: f003 0304 and.w r3, r3, #4 + 80445ee: 440b add r3, r1 + 80445f0: 4413 add r3, r2 + 80445f2: 697a ldr r2, [r7, #20] + 80445f4: 429a cmp r2, r3 + 80445f6: d006 beq.n 8044606 + 80445f8: 4b05 ldr r3, [pc, #20] ; (8044610 ) + 80445fa: f240 7275 movw r2, #1909 ; 0x775 + 80445fe: 4907 ldr r1, [pc, #28] ; (804461c ) + 8044600: 4805 ldr r0, [pc, #20] ; (8044618 ) + 8044602: f003 fcef bl 8047fe4 LWIP_UNUSED_ARG(optflags); /* for LWIP_NOASSERT */ LWIP_UNUSED_ARG(opts); /* for LWIP_NOASSERT */ } - 80445c6: bf00 nop - 80445c8: 3720 adds r7, #32 - 80445ca: 46bd mov sp, r7 - 80445cc: bd80 pop {r7, pc} - 80445ce: bf00 nop - 80445d0: 0804b818 .word 0x0804b818 - 80445d4: 0804bf48 .word 0x0804bf48 - 80445d8: 0804b86c .word 0x0804b86c - 80445dc: 0804be40 .word 0x0804be40 - -080445e0 : + 8044606: bf00 nop + 8044608: 3720 adds r7, #32 + 804460a: 46bd mov sp, r7 + 804460c: bd80 pop {r7, pc} + 804460e: bf00 nop + 8044610: 0804b858 .word 0x0804b858 + 8044614: 0804bf88 .word 0x0804bf88 + 8044618: 0804b8ac .word 0x0804b8ac + 804461c: 0804be80 .word 0x0804be80 + +08044620 : * header checksum and calling ip_output_if while handling netif hints and stats. */ static err_t tcp_output_control_segment(const struct tcp_pcb *pcb, struct pbuf *p, const ip_addr_t *src, const ip_addr_t *dst) { - 80445e0: b580 push {r7, lr} - 80445e2: b08a sub sp, #40 ; 0x28 - 80445e4: af04 add r7, sp, #16 - 80445e6: 60f8 str r0, [r7, #12] - 80445e8: 60b9 str r1, [r7, #8] - 80445ea: 607a str r2, [r7, #4] - 80445ec: 603b str r3, [r7, #0] + 8044620: b580 push {r7, lr} + 8044622: b08a sub sp, #40 ; 0x28 + 8044624: af04 add r7, sp, #16 + 8044626: 60f8 str r0, [r7, #12] + 8044628: 60b9 str r1, [r7, #8] + 804462a: 607a str r2, [r7, #4] + 804462c: 603b str r3, [r7, #0] err_t err; struct netif *netif; LWIP_ASSERT("tcp_output_control_segment: invalid pbuf", p != NULL); - 80445ee: 68bb ldr r3, [r7, #8] - 80445f0: 2b00 cmp r3, #0 - 80445f2: d106 bne.n 8044602 - 80445f4: 4b1c ldr r3, [pc, #112] ; (8044668 ) - 80445f6: f240 7287 movw r2, #1927 ; 0x787 - 80445fa: 491c ldr r1, [pc, #112] ; (804466c ) - 80445fc: 481c ldr r0, [pc, #112] ; (8044670 ) - 80445fe: f003 fcd1 bl 8047fa4 + 804462e: 68bb ldr r3, [r7, #8] + 8044630: 2b00 cmp r3, #0 + 8044632: d106 bne.n 8044642 + 8044634: 4b1c ldr r3, [pc, #112] ; (80446a8 ) + 8044636: f240 7287 movw r2, #1927 ; 0x787 + 804463a: 491c ldr r1, [pc, #112] ; (80446ac ) + 804463c: 481c ldr r0, [pc, #112] ; (80446b0 ) + 804463e: f003 fcd1 bl 8047fe4 netif = tcp_route(pcb, src, dst); - 8044602: 683a ldr r2, [r7, #0] - 8044604: 6879 ldr r1, [r7, #4] - 8044606: 68f8 ldr r0, [r7, #12] - 8044608: f7fe fae8 bl 8042bdc - 804460c: 6138 str r0, [r7, #16] + 8044642: 683a ldr r2, [r7, #0] + 8044644: 6879 ldr r1, [r7, #4] + 8044646: 68f8 ldr r0, [r7, #12] + 8044648: f7fe fae8 bl 8042c1c + 804464c: 6138 str r0, [r7, #16] if (netif == NULL) { - 804460e: 693b ldr r3, [r7, #16] - 8044610: 2b00 cmp r3, #0 - 8044612: d102 bne.n 804461a + 804464e: 693b ldr r3, [r7, #16] + 8044650: 2b00 cmp r3, #0 + 8044652: d102 bne.n 804465a err = ERR_RTE; - 8044614: 23fc movs r3, #252 ; 0xfc - 8044616: 75fb strb r3, [r7, #23] - 8044618: e01c b.n 8044654 + 8044654: 23fc movs r3, #252 ; 0xfc + 8044656: 75fb strb r3, [r7, #23] + 8044658: e01c b.n 8044694 struct tcp_hdr *tcphdr = (struct tcp_hdr *)p->payload; tcphdr->chksum = ip_chksum_pseudo(p, IP_PROTO_TCP, p->tot_len, src, dst); } #endif if (pcb != NULL) { - 804461a: 68fb ldr r3, [r7, #12] - 804461c: 2b00 cmp r3, #0 - 804461e: d006 beq.n 804462e + 804465a: 68fb ldr r3, [r7, #12] + 804465c: 2b00 cmp r3, #0 + 804465e: d006 beq.n 804466e NETIF_SET_HINTS(netif, LWIP_CONST_CAST(struct netif_hint*, &(pcb->netif_hints))); ttl = pcb->ttl; - 8044620: 68fb ldr r3, [r7, #12] - 8044622: 7adb ldrb r3, [r3, #11] - 8044624: 75bb strb r3, [r7, #22] + 8044660: 68fb ldr r3, [r7, #12] + 8044662: 7adb ldrb r3, [r3, #11] + 8044664: 75bb strb r3, [r7, #22] tos = pcb->tos; - 8044626: 68fb ldr r3, [r7, #12] - 8044628: 7a9b ldrb r3, [r3, #10] - 804462a: 757b strb r3, [r7, #21] - 804462c: e003 b.n 8044636 + 8044666: 68fb ldr r3, [r7, #12] + 8044668: 7a9b ldrb r3, [r3, #10] + 804466a: 757b strb r3, [r7, #21] + 804466c: e003 b.n 8044676 } else { /* Send output with hardcoded TTL/HL since we have no access to the pcb */ ttl = TCP_TTL; - 804462e: 23ff movs r3, #255 ; 0xff - 8044630: 75bb strb r3, [r7, #22] + 804466e: 23ff movs r3, #255 ; 0xff + 8044670: 75bb strb r3, [r7, #22] tos = 0; - 8044632: 2300 movs r3, #0 - 8044634: 757b strb r3, [r7, #21] + 8044672: 2300 movs r3, #0 + 8044674: 757b strb r3, [r7, #21] } TCP_STATS_INC(tcp.xmit); err = ip_output_if(p, src, dst, ttl, tos, IP_PROTO_TCP, netif); - 8044636: 7dba ldrb r2, [r7, #22] - 8044638: 693b ldr r3, [r7, #16] - 804463a: 9302 str r3, [sp, #8] - 804463c: 2306 movs r3, #6 - 804463e: 9301 str r3, [sp, #4] - 8044640: 7d7b ldrb r3, [r7, #21] - 8044642: 9300 str r3, [sp, #0] - 8044644: 4613 mov r3, r2 - 8044646: 683a ldr r2, [r7, #0] - 8044648: 6879 ldr r1, [r7, #4] - 804464a: 68b8 ldr r0, [r7, #8] - 804464c: f002 fb28 bl 8046ca0 - 8044650: 4603 mov r3, r0 - 8044652: 75fb strb r3, [r7, #23] + 8044676: 7dba ldrb r2, [r7, #22] + 8044678: 693b ldr r3, [r7, #16] + 804467a: 9302 str r3, [sp, #8] + 804467c: 2306 movs r3, #6 + 804467e: 9301 str r3, [sp, #4] + 8044680: 7d7b ldrb r3, [r7, #21] + 8044682: 9300 str r3, [sp, #0] + 8044684: 4613 mov r3, r2 + 8044686: 683a ldr r2, [r7, #0] + 8044688: 6879 ldr r1, [r7, #4] + 804468a: 68b8 ldr r0, [r7, #8] + 804468c: f002 fb28 bl 8046ce0 + 8044690: 4603 mov r3, r0 + 8044692: 75fb strb r3, [r7, #23] NETIF_RESET_HINTS(netif); } pbuf_free(p); - 8044654: 68b8 ldr r0, [r7, #8] - 8044656: f7fa f8eb bl 803e830 + 8044694: 68b8 ldr r0, [r7, #8] + 8044696: f7fa f8eb bl 803e870 return err; - 804465a: f997 3017 ldrsb.w r3, [r7, #23] -} - 804465e: 4618 mov r0, r3 - 8044660: 3718 adds r7, #24 - 8044662: 46bd mov sp, r7 - 8044664: bd80 pop {r7, pc} - 8044666: bf00 nop - 8044668: 0804b818 .word 0x0804b818 - 804466c: 0804bf70 .word 0x0804bf70 - 8044670: 0804b86c .word 0x0804b86c - -08044674 : + 804469a: f997 3017 ldrsb.w r3, [r7, #23] +} + 804469e: 4618 mov r0, r3 + 80446a0: 3718 adds r7, #24 + 80446a2: 46bd mov sp, r7 + 80446a4: bd80 pop {r7, pc} + 80446a6: bf00 nop + 80446a8: 0804b858 .word 0x0804b858 + 80446ac: 0804bfb0 .word 0x0804bfb0 + 80446b0: 0804b8ac .word 0x0804b8ac + +080446b4 : */ void tcp_rst(const struct tcp_pcb *pcb, u32_t seqno, u32_t ackno, const ip_addr_t *local_ip, const ip_addr_t *remote_ip, u16_t local_port, u16_t remote_port) { - 8044674: b590 push {r4, r7, lr} - 8044676: b08b sub sp, #44 ; 0x2c - 8044678: af04 add r7, sp, #16 - 804467a: 60f8 str r0, [r7, #12] - 804467c: 60b9 str r1, [r7, #8] - 804467e: 607a str r2, [r7, #4] - 8044680: 603b str r3, [r7, #0] + 80446b4: b590 push {r4, r7, lr} + 80446b6: b08b sub sp, #44 ; 0x2c + 80446b8: af04 add r7, sp, #16 + 80446ba: 60f8 str r0, [r7, #12] + 80446bc: 60b9 str r1, [r7, #8] + 80446be: 607a str r2, [r7, #4] + 80446c0: 603b str r3, [r7, #0] struct pbuf *p; u16_t wnd; u8_t optlen; LWIP_ASSERT("tcp_rst: invalid local_ip", local_ip != NULL); - 8044682: 683b ldr r3, [r7, #0] - 8044684: 2b00 cmp r3, #0 - 8044686: d106 bne.n 8044696 - 8044688: 4b1f ldr r3, [pc, #124] ; (8044708 ) - 804468a: f240 72c4 movw r2, #1988 ; 0x7c4 - 804468e: 491f ldr r1, [pc, #124] ; (804470c ) - 8044690: 481f ldr r0, [pc, #124] ; (8044710 ) - 8044692: f003 fc87 bl 8047fa4 + 80446c2: 683b ldr r3, [r7, #0] + 80446c4: 2b00 cmp r3, #0 + 80446c6: d106 bne.n 80446d6 + 80446c8: 4b1f ldr r3, [pc, #124] ; (8044748 ) + 80446ca: f240 72c4 movw r2, #1988 ; 0x7c4 + 80446ce: 491f ldr r1, [pc, #124] ; (804474c ) + 80446d0: 481f ldr r0, [pc, #124] ; (8044750 ) + 80446d2: f003 fc87 bl 8047fe4 LWIP_ASSERT("tcp_rst: invalid remote_ip", remote_ip != NULL); - 8044696: 6abb ldr r3, [r7, #40] ; 0x28 - 8044698: 2b00 cmp r3, #0 - 804469a: d106 bne.n 80446aa - 804469c: 4b1a ldr r3, [pc, #104] ; (8044708 ) - 804469e: f240 72c5 movw r2, #1989 ; 0x7c5 - 80446a2: 491c ldr r1, [pc, #112] ; (8044714 ) - 80446a4: 481a ldr r0, [pc, #104] ; (8044710 ) - 80446a6: f003 fc7d bl 8047fa4 + 80446d6: 6abb ldr r3, [r7, #40] ; 0x28 + 80446d8: 2b00 cmp r3, #0 + 80446da: d106 bne.n 80446ea + 80446dc: 4b1a ldr r3, [pc, #104] ; (8044748 ) + 80446de: f240 72c5 movw r2, #1989 ; 0x7c5 + 80446e2: 491c ldr r1, [pc, #112] ; (8044754 ) + 80446e4: 481a ldr r0, [pc, #104] ; (8044750 ) + 80446e6: f003 fc7d bl 8047fe4 optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 80446aa: 2300 movs r3, #0 - 80446ac: 75fb strb r3, [r7, #23] + 80446ea: 2300 movs r3, #0 + 80446ec: 75fb strb r3, [r7, #23] #if LWIP_WND_SCALE wnd = PP_HTONS(((TCP_WND >> TCP_RCV_SCALE) & 0xFFFF)); #else wnd = PP_HTONS(TCP_WND); - 80446ae: f246 0308 movw r3, #24584 ; 0x6008 - 80446b2: 82bb strh r3, [r7, #20] + 80446ee: f246 0308 movw r3, #24584 ; 0x6008 + 80446f2: 82bb strh r3, [r7, #20] #endif p = tcp_output_alloc_header_common(ackno, optlen, 0, lwip_htonl(seqno), local_port, - 80446b4: 7dfb ldrb r3, [r7, #23] - 80446b6: b29c uxth r4, r3 - 80446b8: 68b8 ldr r0, [r7, #8] - 80446ba: f7f8 fc9c bl 803cff6 - 80446be: 4602 mov r2, r0 - 80446c0: 8abb ldrh r3, [r7, #20] - 80446c2: 9303 str r3, [sp, #12] - 80446c4: 2314 movs r3, #20 - 80446c6: 9302 str r3, [sp, #8] - 80446c8: 8e3b ldrh r3, [r7, #48] ; 0x30 - 80446ca: 9301 str r3, [sp, #4] - 80446cc: 8dbb ldrh r3, [r7, #44] ; 0x2c - 80446ce: 9300 str r3, [sp, #0] - 80446d0: 4613 mov r3, r2 - 80446d2: 2200 movs r2, #0 - 80446d4: 4621 mov r1, r4 - 80446d6: 6878 ldr r0, [r7, #4] - 80446d8: f7ff fe92 bl 8044400 - 80446dc: 6138 str r0, [r7, #16] + 80446f4: 7dfb ldrb r3, [r7, #23] + 80446f6: b29c uxth r4, r3 + 80446f8: 68b8 ldr r0, [r7, #8] + 80446fa: f7f8 fc9c bl 803d036 + 80446fe: 4602 mov r2, r0 + 8044700: 8abb ldrh r3, [r7, #20] + 8044702: 9303 str r3, [sp, #12] + 8044704: 2314 movs r3, #20 + 8044706: 9302 str r3, [sp, #8] + 8044708: 8e3b ldrh r3, [r7, #48] ; 0x30 + 804470a: 9301 str r3, [sp, #4] + 804470c: 8dbb ldrh r3, [r7, #44] ; 0x2c + 804470e: 9300 str r3, [sp, #0] + 8044710: 4613 mov r3, r2 + 8044712: 2200 movs r2, #0 + 8044714: 4621 mov r1, r4 + 8044716: 6878 ldr r0, [r7, #4] + 8044718: f7ff fe92 bl 8044440 + 804471c: 6138 str r0, [r7, #16] remote_port, TCP_RST | TCP_ACK, wnd); if (p == NULL) { - 80446de: 693b ldr r3, [r7, #16] - 80446e0: 2b00 cmp r3, #0 - 80446e2: d00c beq.n 80446fe + 804471e: 693b ldr r3, [r7, #16] + 8044720: 2b00 cmp r3, #0 + 8044722: d00c beq.n 804473e LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n")); return; } tcp_output_fill_options(pcb, p, 0, optlen); - 80446e4: 7dfb ldrb r3, [r7, #23] - 80446e6: 2200 movs r2, #0 - 80446e8: 6939 ldr r1, [r7, #16] - 80446ea: 68f8 ldr r0, [r7, #12] - 80446ec: f7ff ff38 bl 8044560 + 8044724: 7dfb ldrb r3, [r7, #23] + 8044726: 2200 movs r2, #0 + 8044728: 6939 ldr r1, [r7, #16] + 804472a: 68f8 ldr r0, [r7, #12] + 804472c: f7ff ff38 bl 80445a0 MIB2_STATS_INC(mib2.tcpoutrsts); tcp_output_control_segment(pcb, p, local_ip, remote_ip); - 80446f0: 6abb ldr r3, [r7, #40] ; 0x28 - 80446f2: 683a ldr r2, [r7, #0] - 80446f4: 6939 ldr r1, [r7, #16] - 80446f6: 68f8 ldr r0, [r7, #12] - 80446f8: f7ff ff72 bl 80445e0 - 80446fc: e000 b.n 8044700 + 8044730: 6abb ldr r3, [r7, #40] ; 0x28 + 8044732: 683a ldr r2, [r7, #0] + 8044734: 6939 ldr r1, [r7, #16] + 8044736: 68f8 ldr r0, [r7, #12] + 8044738: f7ff ff72 bl 8044620 + 804473c: e000 b.n 8044740 return; - 80446fe: bf00 nop + 804473e: bf00 nop LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno)); } - 8044700: 371c adds r7, #28 - 8044702: 46bd mov sp, r7 - 8044704: bd90 pop {r4, r7, pc} - 8044706: bf00 nop - 8044708: 0804b818 .word 0x0804b818 - 804470c: 0804bf9c .word 0x0804bf9c - 8044710: 0804b86c .word 0x0804b86c - 8044714: 0804bfb8 .word 0x0804bfb8 + 8044740: 371c adds r7, #28 + 8044742: 46bd mov sp, r7 + 8044744: bd90 pop {r4, r7, pc} + 8044746: bf00 nop + 8044748: 0804b858 .word 0x0804b858 + 804474c: 0804bfdc .word 0x0804bfdc + 8044750: 0804b8ac .word 0x0804b8ac + 8044754: 0804bff8 .word 0x0804bff8 -08044718 : +08044758 : * * @param pcb Protocol control block for the TCP connection to send the ACK */ err_t tcp_send_empty_ack(struct tcp_pcb *pcb) { - 8044718: b590 push {r4, r7, lr} - 804471a: b087 sub sp, #28 - 804471c: af00 add r7, sp, #0 - 804471e: 6078 str r0, [r7, #4] + 8044758: b590 push {r4, r7, lr} + 804475a: b087 sub sp, #28 + 804475c: af00 add r7, sp, #0 + 804475e: 6078 str r0, [r7, #4] err_t err; struct pbuf *p; u8_t optlen, optflags = 0; - 8044720: 2300 movs r3, #0 - 8044722: 75fb strb r3, [r7, #23] + 8044760: 2300 movs r3, #0 + 8044762: 75fb strb r3, [r7, #23] u8_t num_sacks = 0; - 8044724: 2300 movs r3, #0 - 8044726: 75bb strb r3, [r7, #22] + 8044764: 2300 movs r3, #0 + 8044766: 75bb strb r3, [r7, #22] LWIP_ASSERT("tcp_send_empty_ack: invalid pcb", pcb != NULL); - 8044728: 687b ldr r3, [r7, #4] - 804472a: 2b00 cmp r3, #0 - 804472c: d106 bne.n 804473c - 804472e: 4b28 ldr r3, [pc, #160] ; (80447d0 ) - 8044730: f240 72ea movw r2, #2026 ; 0x7ea - 8044734: 4927 ldr r1, [pc, #156] ; (80447d4 ) - 8044736: 4828 ldr r0, [pc, #160] ; (80447d8 ) - 8044738: f003 fc34 bl 8047fa4 + 8044768: 687b ldr r3, [r7, #4] + 804476a: 2b00 cmp r3, #0 + 804476c: d106 bne.n 804477c + 804476e: 4b28 ldr r3, [pc, #160] ; (8044810 ) + 8044770: f240 72ea movw r2, #2026 ; 0x7ea + 8044774: 4927 ldr r1, [pc, #156] ; (8044814 ) + 8044776: 4828 ldr r0, [pc, #160] ; (8044818 ) + 8044778: f003 fc34 bl 8047fe4 #if LWIP_TCP_TIMESTAMPS if (pcb->flags & TF_TIMESTAMP) { optflags = TF_SEG_OPTS_TS; } #endif optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(optflags, pcb); - 804473c: 7dfb ldrb r3, [r7, #23] - 804473e: 009b lsls r3, r3, #2 - 8044740: b2db uxtb r3, r3 - 8044742: f003 0304 and.w r3, r3, #4 - 8044746: 757b strb r3, [r7, #21] + 804477c: 7dfb ldrb r3, [r7, #23] + 804477e: 009b lsls r3, r3, #2 + 8044780: b2db uxtb r3, r3 + 8044782: f003 0304 and.w r3, r3, #4 + 8044786: 757b strb r3, [r7, #21] if ((num_sacks = tcp_get_num_sacks(pcb, optlen)) > 0) { optlen += 4 + num_sacks * 8; /* 4 bytes for header (including 2*NOP), plus 8B for each SACK */ } #endif p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt)); - 8044748: 7d7b ldrb r3, [r7, #21] - 804474a: b29c uxth r4, r3 - 804474c: 687b ldr r3, [r7, #4] - 804474e: 6d1b ldr r3, [r3, #80] ; 0x50 - 8044750: 4618 mov r0, r3 - 8044752: f7f8 fc50 bl 803cff6 - 8044756: 4603 mov r3, r0 - 8044758: 2200 movs r2, #0 - 804475a: 4621 mov r1, r4 - 804475c: 6878 ldr r0, [r7, #4] - 804475e: f7ff fec1 bl 80444e4 - 8044762: 6138 str r0, [r7, #16] + 8044788: 7d7b ldrb r3, [r7, #21] + 804478a: b29c uxth r4, r3 + 804478c: 687b ldr r3, [r7, #4] + 804478e: 6d1b ldr r3, [r3, #80] ; 0x50 + 8044790: 4618 mov r0, r3 + 8044792: f7f8 fc50 bl 803d036 + 8044796: 4603 mov r3, r0 + 8044798: 2200 movs r2, #0 + 804479a: 4621 mov r1, r4 + 804479c: 6878 ldr r0, [r7, #4] + 804479e: f7ff fec1 bl 8044524 + 80447a2: 6138 str r0, [r7, #16] if (p == NULL) { - 8044764: 693b ldr r3, [r7, #16] - 8044766: 2b00 cmp r3, #0 - 8044768: d109 bne.n 804477e + 80447a4: 693b ldr r3, [r7, #16] + 80447a6: 2b00 cmp r3, #0 + 80447a8: d109 bne.n 80447be /* let tcp_fasttmr retry sending this ACK */ tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 804476a: 687b ldr r3, [r7, #4] - 804476c: 8b5b ldrh r3, [r3, #26] - 804476e: f043 0303 orr.w r3, r3, #3 - 8044772: b29a uxth r2, r3 - 8044774: 687b ldr r3, [r7, #4] - 8044776: 835a strh r2, [r3, #26] + 80447aa: 687b ldr r3, [r7, #4] + 80447ac: 8b5b ldrh r3, [r3, #26] + 80447ae: f043 0303 orr.w r3, r3, #3 + 80447b2: b29a uxth r2, r3 + 80447b4: 687b ldr r3, [r7, #4] + 80447b6: 835a strh r2, [r3, #26] LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n")); return ERR_BUF; - 8044778: f06f 0301 mvn.w r3, #1 - 804477c: e023 b.n 80447c6 + 80447b8: f06f 0301 mvn.w r3, #1 + 80447bc: e023 b.n 8044806 } tcp_output_fill_options(pcb, p, optflags, num_sacks); - 804477e: 7dbb ldrb r3, [r7, #22] - 8044780: 7dfa ldrb r2, [r7, #23] - 8044782: 6939 ldr r1, [r7, #16] - 8044784: 6878 ldr r0, [r7, #4] - 8044786: f7ff feeb bl 8044560 + 80447be: 7dbb ldrb r3, [r7, #22] + 80447c0: 7dfa ldrb r2, [r7, #23] + 80447c2: 6939 ldr r1, [r7, #16] + 80447c4: 6878 ldr r0, [r7, #4] + 80447c6: f7ff feeb bl 80445a0 pcb->ts_lastacksent = pcb->rcv_nxt; #endif LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt)); err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 804478a: 687a ldr r2, [r7, #4] - 804478c: 687b ldr r3, [r7, #4] - 804478e: 3304 adds r3, #4 - 8044790: 6939 ldr r1, [r7, #16] - 8044792: 6878 ldr r0, [r7, #4] - 8044794: f7ff ff24 bl 80445e0 - 8044798: 4603 mov r3, r0 - 804479a: 73fb strb r3, [r7, #15] + 80447ca: 687a ldr r2, [r7, #4] + 80447cc: 687b ldr r3, [r7, #4] + 80447ce: 3304 adds r3, #4 + 80447d0: 6939 ldr r1, [r7, #16] + 80447d2: 6878 ldr r0, [r7, #4] + 80447d4: f7ff ff24 bl 8044620 + 80447d8: 4603 mov r3, r0 + 80447da: 73fb strb r3, [r7, #15] if (err != ERR_OK) { - 804479c: f997 300f ldrsb.w r3, [r7, #15] - 80447a0: 2b00 cmp r3, #0 - 80447a2: d007 beq.n 80447b4 + 80447dc: f997 300f ldrsb.w r3, [r7, #15] + 80447e0: 2b00 cmp r3, #0 + 80447e2: d007 beq.n 80447f4 /* let tcp_fasttmr retry sending this ACK */ tcp_set_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 80447a4: 687b ldr r3, [r7, #4] - 80447a6: 8b5b ldrh r3, [r3, #26] - 80447a8: f043 0303 orr.w r3, r3, #3 - 80447ac: b29a uxth r2, r3 - 80447ae: 687b ldr r3, [r7, #4] - 80447b0: 835a strh r2, [r3, #26] - 80447b2: e006 b.n 80447c2 + 80447e4: 687b ldr r3, [r7, #4] + 80447e6: 8b5b ldrh r3, [r3, #26] + 80447e8: f043 0303 orr.w r3, r3, #3 + 80447ec: b29a uxth r2, r3 + 80447ee: 687b ldr r3, [r7, #4] + 80447f0: 835a strh r2, [r3, #26] + 80447f2: e006 b.n 8044802 } else { /* remove ACK flags from the PCB, as we sent an empty ACK now */ tcp_clear_flags(pcb, TF_ACK_DELAY | TF_ACK_NOW); - 80447b4: 687b ldr r3, [r7, #4] - 80447b6: 8b5b ldrh r3, [r3, #26] - 80447b8: f023 0303 bic.w r3, r3, #3 - 80447bc: b29a uxth r2, r3 - 80447be: 687b ldr r3, [r7, #4] - 80447c0: 835a strh r2, [r3, #26] + 80447f4: 687b ldr r3, [r7, #4] + 80447f6: 8b5b ldrh r3, [r3, #26] + 80447f8: f023 0303 bic.w r3, r3, #3 + 80447fc: b29a uxth r2, r3 + 80447fe: 687b ldr r3, [r7, #4] + 8044800: 835a strh r2, [r3, #26] } return err; - 80447c2: f997 300f ldrsb.w r3, [r7, #15] -} - 80447c6: 4618 mov r0, r3 - 80447c8: 371c adds r7, #28 - 80447ca: 46bd mov sp, r7 - 80447cc: bd90 pop {r4, r7, pc} - 80447ce: bf00 nop - 80447d0: 0804b818 .word 0x0804b818 - 80447d4: 0804bfd4 .word 0x0804bfd4 - 80447d8: 0804b86c .word 0x0804b86c - -080447dc : + 8044802: f997 300f ldrsb.w r3, [r7, #15] +} + 8044806: 4618 mov r0, r3 + 8044808: 371c adds r7, #28 + 804480a: 46bd mov sp, r7 + 804480c: bd90 pop {r4, r7, pc} + 804480e: bf00 nop + 8044810: 0804b858 .word 0x0804b858 + 8044814: 0804c014 .word 0x0804c014 + 8044818: 0804b8ac .word 0x0804b8ac + +0804481c : * * @param pcb the tcp_pcb for which to send a keepalive packet */ err_t tcp_keepalive(struct tcp_pcb *pcb) { - 80447dc: b590 push {r4, r7, lr} - 80447de: b087 sub sp, #28 - 80447e0: af00 add r7, sp, #0 - 80447e2: 6078 str r0, [r7, #4] + 804481c: b590 push {r4, r7, lr} + 804481e: b087 sub sp, #28 + 8044820: af00 add r7, sp, #0 + 8044822: 6078 str r0, [r7, #4] err_t err; struct pbuf *p; u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 80447e4: 2300 movs r3, #0 - 80447e6: 75fb strb r3, [r7, #23] + 8044824: 2300 movs r3, #0 + 8044826: 75fb strb r3, [r7, #23] LWIP_ASSERT("tcp_keepalive: invalid pcb", pcb != NULL); - 80447e8: 687b ldr r3, [r7, #4] - 80447ea: 2b00 cmp r3, #0 - 80447ec: d106 bne.n 80447fc - 80447ee: 4b18 ldr r3, [pc, #96] ; (8044850 ) - 80447f0: f640 0224 movw r2, #2084 ; 0x824 - 80447f4: 4917 ldr r1, [pc, #92] ; (8044854 ) - 80447f6: 4818 ldr r0, [pc, #96] ; (8044858 ) - 80447f8: f003 fbd4 bl 8047fa4 + 8044828: 687b ldr r3, [r7, #4] + 804482a: 2b00 cmp r3, #0 + 804482c: d106 bne.n 804483c + 804482e: 4b18 ldr r3, [pc, #96] ; (8044890 ) + 8044830: f640 0224 movw r2, #2084 ; 0x824 + 8044834: 4917 ldr r1, [pc, #92] ; (8044894 ) + 8044836: 4818 ldr r0, [pc, #96] ; (8044898 ) + 8044838: f003 fbd4 bl 8047fe4 LWIP_DEBUGF(TCP_DEBUG, ("\n")); LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent)); p = tcp_output_alloc_header(pcb, optlen, 0, lwip_htonl(pcb->snd_nxt - 1)); - 80447fc: 7dfb ldrb r3, [r7, #23] - 80447fe: b29c uxth r4, r3 - 8044800: 687b ldr r3, [r7, #4] - 8044802: 6d1b ldr r3, [r3, #80] ; 0x50 - 8044804: 3b01 subs r3, #1 - 8044806: 4618 mov r0, r3 - 8044808: f7f8 fbf5 bl 803cff6 - 804480c: 4603 mov r3, r0 - 804480e: 2200 movs r2, #0 - 8044810: 4621 mov r1, r4 - 8044812: 6878 ldr r0, [r7, #4] - 8044814: f7ff fe66 bl 80444e4 - 8044818: 6138 str r0, [r7, #16] + 804483c: 7dfb ldrb r3, [r7, #23] + 804483e: b29c uxth r4, r3 + 8044840: 687b ldr r3, [r7, #4] + 8044842: 6d1b ldr r3, [r3, #80] ; 0x50 + 8044844: 3b01 subs r3, #1 + 8044846: 4618 mov r0, r3 + 8044848: f7f8 fbf5 bl 803d036 + 804484c: 4603 mov r3, r0 + 804484e: 2200 movs r2, #0 + 8044850: 4621 mov r1, r4 + 8044852: 6878 ldr r0, [r7, #4] + 8044854: f7ff fe66 bl 8044524 + 8044858: 6138 str r0, [r7, #16] if (p == NULL) { - 804481a: 693b ldr r3, [r7, #16] - 804481c: 2b00 cmp r3, #0 - 804481e: d102 bne.n 8044826 + 804485a: 693b ldr r3, [r7, #16] + 804485c: 2b00 cmp r3, #0 + 804485e: d102 bne.n 8044866 LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: could not allocate memory for pbuf\n")); return ERR_MEM; - 8044820: f04f 33ff mov.w r3, #4294967295 - 8044824: e010 b.n 8044848 + 8044860: f04f 33ff mov.w r3, #4294967295 + 8044864: e010 b.n 8044888 } tcp_output_fill_options(pcb, p, 0, optlen); - 8044826: 7dfb ldrb r3, [r7, #23] - 8044828: 2200 movs r2, #0 - 804482a: 6939 ldr r1, [r7, #16] - 804482c: 6878 ldr r0, [r7, #4] - 804482e: f7ff fe97 bl 8044560 + 8044866: 7dfb ldrb r3, [r7, #23] + 8044868: 2200 movs r2, #0 + 804486a: 6939 ldr r1, [r7, #16] + 804486c: 6878 ldr r0, [r7, #4] + 804486e: f7ff fe97 bl 80445a0 err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 8044832: 687a ldr r2, [r7, #4] - 8044834: 687b ldr r3, [r7, #4] - 8044836: 3304 adds r3, #4 - 8044838: 6939 ldr r1, [r7, #16] - 804483a: 6878 ldr r0, [r7, #4] - 804483c: f7ff fed0 bl 80445e0 - 8044840: 4603 mov r3, r0 - 8044842: 73fb strb r3, [r7, #15] + 8044872: 687a ldr r2, [r7, #4] + 8044874: 687b ldr r3, [r7, #4] + 8044876: 3304 adds r3, #4 + 8044878: 6939 ldr r1, [r7, #16] + 804487a: 6878 ldr r0, [r7, #4] + 804487c: f7ff fed0 bl 8044620 + 8044880: 4603 mov r3, r0 + 8044882: 73fb strb r3, [r7, #15] LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F" err %d.\n", pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err)); return err; - 8044844: f997 300f ldrsb.w r3, [r7, #15] + 8044884: f997 300f ldrsb.w r3, [r7, #15] } - 8044848: 4618 mov r0, r3 - 804484a: 371c adds r7, #28 - 804484c: 46bd mov sp, r7 - 804484e: bd90 pop {r4, r7, pc} - 8044850: 0804b818 .word 0x0804b818 - 8044854: 0804bff4 .word 0x0804bff4 - 8044858: 0804b86c .word 0x0804b86c + 8044888: 4618 mov r0, r3 + 804488a: 371c adds r7, #28 + 804488c: 46bd mov sp, r7 + 804488e: bd90 pop {r4, r7, pc} + 8044890: 0804b858 .word 0x0804b858 + 8044894: 0804c034 .word 0x0804c034 + 8044898: 0804b8ac .word 0x0804b8ac -0804485c : +0804489c : * * @param pcb the tcp_pcb for which to send a zero-window probe packet */ err_t tcp_zero_window_probe(struct tcp_pcb *pcb) { - 804485c: b590 push {r4, r7, lr} - 804485e: b08b sub sp, #44 ; 0x2c - 8044860: af00 add r7, sp, #0 - 8044862: 6078 str r0, [r7, #4] + 804489c: b590 push {r4, r7, lr} + 804489e: b08b sub sp, #44 ; 0x2c + 80448a0: af00 add r7, sp, #0 + 80448a2: 6078 str r0, [r7, #4] struct tcp_hdr *tcphdr; struct tcp_seg *seg; u16_t len; u8_t is_fin; u32_t snd_nxt; u8_t optlen = LWIP_TCP_OPT_LENGTH_SEGMENT(0, pcb); - 8044864: 2300 movs r3, #0 - 8044866: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 80448a4: 2300 movs r3, #0 + 80448a6: f887 3027 strb.w r3, [r7, #39] ; 0x27 LWIP_ASSERT("tcp_zero_window_probe: invalid pcb", pcb != NULL); - 804486a: 687b ldr r3, [r7, #4] - 804486c: 2b00 cmp r3, #0 - 804486e: d106 bne.n 804487e - 8044870: 4b4c ldr r3, [pc, #304] ; (80449a4 ) - 8044872: f640 024f movw r2, #2127 ; 0x84f - 8044876: 494c ldr r1, [pc, #304] ; (80449a8 ) - 8044878: 484c ldr r0, [pc, #304] ; (80449ac ) - 804487a: f003 fb93 bl 8047fa4 + 80448aa: 687b ldr r3, [r7, #4] + 80448ac: 2b00 cmp r3, #0 + 80448ae: d106 bne.n 80448be + 80448b0: 4b4c ldr r3, [pc, #304] ; (80449e4 ) + 80448b2: f640 024f movw r2, #2127 ; 0x84f + 80448b6: 494c ldr r1, [pc, #304] ; (80449e8 ) + 80448b8: 484c ldr r0, [pc, #304] ; (80449ec ) + 80448ba: f003 fb93 bl 8047fe4 ("tcp_zero_window_probe: tcp_ticks %"U32_F " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", tcp_ticks, pcb->tmr, (u16_t)pcb->keep_cnt_sent)); /* Only consider unsent, persist timer should be off when there is data in-flight */ seg = pcb->unsent; - 804487e: 687b ldr r3, [r7, #4] - 8044880: 6edb ldr r3, [r3, #108] ; 0x6c - 8044882: 623b str r3, [r7, #32] + 80448be: 687b ldr r3, [r7, #4] + 80448c0: 6edb ldr r3, [r3, #108] ; 0x6c + 80448c2: 623b str r3, [r7, #32] if (seg == NULL) { - 8044884: 6a3b ldr r3, [r7, #32] - 8044886: 2b00 cmp r3, #0 - 8044888: d101 bne.n 804488e + 80448c4: 6a3b ldr r3, [r7, #32] + 80448c6: 2b00 cmp r3, #0 + 80448c8: d101 bne.n 80448ce /* Not expected, persist timer should be off when the send buffer is empty */ return ERR_OK; - 804488a: 2300 movs r3, #0 - 804488c: e086 b.n 804499c + 80448ca: 2300 movs r3, #0 + 80448cc: e086 b.n 80449dc /* increment probe count. NOTE: we record probe even if it fails to actually transmit due to an error. This ensures memory exhaustion/ routing problem doesn't leave a zero-window pcb as an indefinite zombie. RTO mechanism has similar behavior, see pcb->nrtx */ if (pcb->persist_probe < 0xFF) { - 804488e: 687b ldr r3, [r7, #4] - 8044890: f893 309a ldrb.w r3, [r3, #154] ; 0x9a - 8044894: 2bff cmp r3, #255 ; 0xff - 8044896: d007 beq.n 80448a8 + 80448ce: 687b ldr r3, [r7, #4] + 80448d0: f893 309a ldrb.w r3, [r3, #154] ; 0x9a + 80448d4: 2bff cmp r3, #255 ; 0xff + 80448d6: d007 beq.n 80448e8 ++pcb->persist_probe; - 8044898: 687b ldr r3, [r7, #4] - 804489a: f893 309a ldrb.w r3, [r3, #154] ; 0x9a - 804489e: 3301 adds r3, #1 - 80448a0: b2da uxtb r2, r3 - 80448a2: 687b ldr r3, [r7, #4] - 80448a4: f883 209a strb.w r2, [r3, #154] ; 0x9a + 80448d8: 687b ldr r3, [r7, #4] + 80448da: f893 309a ldrb.w r3, [r3, #154] ; 0x9a + 80448de: 3301 adds r3, #1 + 80448e0: b2da uxtb r2, r3 + 80448e2: 687b ldr r3, [r7, #4] + 80448e4: f883 209a strb.w r2, [r3, #154] ; 0x9a } is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); - 80448a8: 6a3b ldr r3, [r7, #32] - 80448aa: 68db ldr r3, [r3, #12] - 80448ac: 899b ldrh r3, [r3, #12] - 80448ae: b29b uxth r3, r3 - 80448b0: 4618 mov r0, r3 - 80448b2: f7f8 fb8b bl 803cfcc - 80448b6: 4603 mov r3, r0 - 80448b8: b2db uxtb r3, r3 - 80448ba: f003 0301 and.w r3, r3, #1 - 80448be: 2b00 cmp r3, #0 - 80448c0: d005 beq.n 80448ce - 80448c2: 6a3b ldr r3, [r7, #32] - 80448c4: 891b ldrh r3, [r3, #8] - 80448c6: 2b00 cmp r3, #0 - 80448c8: d101 bne.n 80448ce - 80448ca: 2301 movs r3, #1 - 80448cc: e000 b.n 80448d0 - 80448ce: 2300 movs r3, #0 - 80448d0: 77fb strb r3, [r7, #31] + 80448e8: 6a3b ldr r3, [r7, #32] + 80448ea: 68db ldr r3, [r3, #12] + 80448ec: 899b ldrh r3, [r3, #12] + 80448ee: b29b uxth r3, r3 + 80448f0: 4618 mov r0, r3 + 80448f2: f7f8 fb8b bl 803d00c + 80448f6: 4603 mov r3, r0 + 80448f8: b2db uxtb r3, r3 + 80448fa: f003 0301 and.w r3, r3, #1 + 80448fe: 2b00 cmp r3, #0 + 8044900: d005 beq.n 804490e + 8044902: 6a3b ldr r3, [r7, #32] + 8044904: 891b ldrh r3, [r3, #8] + 8044906: 2b00 cmp r3, #0 + 8044908: d101 bne.n 804490e + 804490a: 2301 movs r3, #1 + 804490c: e000 b.n 8044910 + 804490e: 2300 movs r3, #0 + 8044910: 77fb strb r3, [r7, #31] /* we want to send one seqno: either FIN or data (no options) */ len = is_fin ? 0 : 1; - 80448d2: 7ffb ldrb r3, [r7, #31] - 80448d4: 2b00 cmp r3, #0 - 80448d6: bf0c ite eq - 80448d8: 2301 moveq r3, #1 - 80448da: 2300 movne r3, #0 - 80448dc: b2db uxtb r3, r3 - 80448de: 83bb strh r3, [r7, #28] + 8044912: 7ffb ldrb r3, [r7, #31] + 8044914: 2b00 cmp r3, #0 + 8044916: bf0c ite eq + 8044918: 2301 moveq r3, #1 + 804491a: 2300 movne r3, #0 + 804491c: b2db uxtb r3, r3 + 804491e: 83bb strh r3, [r7, #28] p = tcp_output_alloc_header(pcb, optlen, len, seg->tcphdr->seqno); - 80448e0: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 80448e4: b299 uxth r1, r3 - 80448e6: 6a3b ldr r3, [r7, #32] - 80448e8: 68db ldr r3, [r3, #12] - 80448ea: 685b ldr r3, [r3, #4] - 80448ec: 8bba ldrh r2, [r7, #28] - 80448ee: 6878 ldr r0, [r7, #4] - 80448f0: f7ff fdf8 bl 80444e4 - 80448f4: 61b8 str r0, [r7, #24] + 8044920: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 8044924: b299 uxth r1, r3 + 8044926: 6a3b ldr r3, [r7, #32] + 8044928: 68db ldr r3, [r3, #12] + 804492a: 685b ldr r3, [r3, #4] + 804492c: 8bba ldrh r2, [r7, #28] + 804492e: 6878 ldr r0, [r7, #4] + 8044930: f7ff fdf8 bl 8044524 + 8044934: 61b8 str r0, [r7, #24] if (p == NULL) { - 80448f6: 69bb ldr r3, [r7, #24] - 80448f8: 2b00 cmp r3, #0 - 80448fa: d102 bne.n 8044902 + 8044936: 69bb ldr r3, [r7, #24] + 8044938: 2b00 cmp r3, #0 + 804493a: d102 bne.n 8044942 LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n")); return ERR_MEM; - 80448fc: f04f 33ff mov.w r3, #4294967295 - 8044900: e04c b.n 804499c + 804493c: f04f 33ff mov.w r3, #4294967295 + 8044940: e04c b.n 80449dc } tcphdr = (struct tcp_hdr *)p->payload; - 8044902: 69bb ldr r3, [r7, #24] - 8044904: 685b ldr r3, [r3, #4] - 8044906: 617b str r3, [r7, #20] + 8044942: 69bb ldr r3, [r7, #24] + 8044944: 685b ldr r3, [r3, #4] + 8044946: 617b str r3, [r7, #20] if (is_fin) { - 8044908: 7ffb ldrb r3, [r7, #31] - 804490a: 2b00 cmp r3, #0 - 804490c: d011 beq.n 8044932 + 8044948: 7ffb ldrb r3, [r7, #31] + 804494a: 2b00 cmp r3, #0 + 804494c: d011 beq.n 8044972 /* FIN segment, no data */ TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); - 804490e: 697b ldr r3, [r7, #20] - 8044910: 899b ldrh r3, [r3, #12] - 8044912: b29b uxth r3, r3 - 8044914: b21b sxth r3, r3 - 8044916: f423 537c bic.w r3, r3, #16128 ; 0x3f00 - 804491a: b21c sxth r4, r3 - 804491c: 2011 movs r0, #17 - 804491e: f7f8 fb55 bl 803cfcc - 8044922: 4603 mov r3, r0 - 8044924: b21b sxth r3, r3 - 8044926: 4323 orrs r3, r4 - 8044928: b21b sxth r3, r3 - 804492a: b29a uxth r2, r3 - 804492c: 697b ldr r3, [r7, #20] - 804492e: 819a strh r2, [r3, #12] - 8044930: e010 b.n 8044954 + 804494e: 697b ldr r3, [r7, #20] + 8044950: 899b ldrh r3, [r3, #12] + 8044952: b29b uxth r3, r3 + 8044954: b21b sxth r3, r3 + 8044956: f423 537c bic.w r3, r3, #16128 ; 0x3f00 + 804495a: b21c sxth r4, r3 + 804495c: 2011 movs r0, #17 + 804495e: f7f8 fb55 bl 803d00c + 8044962: 4603 mov r3, r0 + 8044964: b21b sxth r3, r3 + 8044966: 4323 orrs r3, r4 + 8044968: b21b sxth r3, r3 + 804496a: b29a uxth r2, r3 + 804496c: 697b ldr r3, [r7, #20] + 804496e: 819a strh r2, [r3, #12] + 8044970: e010 b.n 8044994 } else { /* Data segment, copy in one byte from the head of the unacked queue */ char *d = ((char *)p->payload + TCP_HLEN); - 8044932: 69bb ldr r3, [r7, #24] - 8044934: 685b ldr r3, [r3, #4] - 8044936: 3314 adds r3, #20 - 8044938: 613b str r3, [r7, #16] + 8044972: 69bb ldr r3, [r7, #24] + 8044974: 685b ldr r3, [r3, #4] + 8044976: 3314 adds r3, #20 + 8044978: 613b str r3, [r7, #16] /* Depending on whether the segment has already been sent (unacked) or not (unsent), seg->p->payload points to the IP header or TCP header. Ensure we copy the first TCP data byte: */ pbuf_copy_partial(seg->p, d, 1, seg->p->tot_len - seg->len); - 804493a: 6a3b ldr r3, [r7, #32] - 804493c: 6858 ldr r0, [r3, #4] - 804493e: 6a3b ldr r3, [r7, #32] - 8044940: 685b ldr r3, [r3, #4] - 8044942: 891a ldrh r2, [r3, #8] - 8044944: 6a3b ldr r3, [r7, #32] - 8044946: 891b ldrh r3, [r3, #8] - 8044948: 1ad3 subs r3, r2, r3 - 804494a: b29b uxth r3, r3 - 804494c: 2201 movs r2, #1 - 804494e: 6939 ldr r1, [r7, #16] - 8044950: f7fa f968 bl 803ec24 + 804497a: 6a3b ldr r3, [r7, #32] + 804497c: 6858 ldr r0, [r3, #4] + 804497e: 6a3b ldr r3, [r7, #32] + 8044980: 685b ldr r3, [r3, #4] + 8044982: 891a ldrh r2, [r3, #8] + 8044984: 6a3b ldr r3, [r7, #32] + 8044986: 891b ldrh r3, [r3, #8] + 8044988: 1ad3 subs r3, r2, r3 + 804498a: b29b uxth r3, r3 + 804498c: 2201 movs r2, #1 + 804498e: 6939 ldr r1, [r7, #16] + 8044990: f7fa f968 bl 803ec64 } /* The byte may be acknowledged without the window being opened. */ snd_nxt = lwip_ntohl(seg->tcphdr->seqno) + 1; - 8044954: 6a3b ldr r3, [r7, #32] - 8044956: 68db ldr r3, [r3, #12] - 8044958: 685b ldr r3, [r3, #4] - 804495a: 4618 mov r0, r3 - 804495c: f7f8 fb4b bl 803cff6 - 8044960: 4603 mov r3, r0 - 8044962: 3301 adds r3, #1 - 8044964: 60fb str r3, [r7, #12] + 8044994: 6a3b ldr r3, [r7, #32] + 8044996: 68db ldr r3, [r3, #12] + 8044998: 685b ldr r3, [r3, #4] + 804499a: 4618 mov r0, r3 + 804499c: f7f8 fb4b bl 803d036 + 80449a0: 4603 mov r3, r0 + 80449a2: 3301 adds r3, #1 + 80449a4: 60fb str r3, [r7, #12] if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - 8044966: 687b ldr r3, [r7, #4] - 8044968: 6d1a ldr r2, [r3, #80] ; 0x50 - 804496a: 68fb ldr r3, [r7, #12] - 804496c: 1ad3 subs r3, r2, r3 - 804496e: 2b00 cmp r3, #0 - 8044970: da02 bge.n 8044978 + 80449a6: 687b ldr r3, [r7, #4] + 80449a8: 6d1a ldr r2, [r3, #80] ; 0x50 + 80449aa: 68fb ldr r3, [r7, #12] + 80449ac: 1ad3 subs r3, r2, r3 + 80449ae: 2b00 cmp r3, #0 + 80449b0: da02 bge.n 80449b8 pcb->snd_nxt = snd_nxt; - 8044972: 687b ldr r3, [r7, #4] - 8044974: 68fa ldr r2, [r7, #12] - 8044976: 651a str r2, [r3, #80] ; 0x50 + 80449b2: 687b ldr r3, [r7, #4] + 80449b4: 68fa ldr r2, [r7, #12] + 80449b6: 651a str r2, [r3, #80] ; 0x50 } tcp_output_fill_options(pcb, p, 0, optlen); - 8044978: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 - 804497c: 2200 movs r2, #0 - 804497e: 69b9 ldr r1, [r7, #24] - 8044980: 6878 ldr r0, [r7, #4] - 8044982: f7ff fded bl 8044560 + 80449b8: f897 3027 ldrb.w r3, [r7, #39] ; 0x27 + 80449bc: 2200 movs r2, #0 + 80449be: 69b9 ldr r1, [r7, #24] + 80449c0: 6878 ldr r0, [r7, #4] + 80449c2: f7ff fded bl 80445a0 err = tcp_output_control_segment(pcb, p, &pcb->local_ip, &pcb->remote_ip); - 8044986: 687a ldr r2, [r7, #4] - 8044988: 687b ldr r3, [r7, #4] - 804498a: 3304 adds r3, #4 - 804498c: 69b9 ldr r1, [r7, #24] - 804498e: 6878 ldr r0, [r7, #4] - 8044990: f7ff fe26 bl 80445e0 - 8044994: 4603 mov r3, r0 - 8044996: 72fb strb r3, [r7, #11] + 80449c6: 687a ldr r2, [r7, #4] + 80449c8: 687b ldr r3, [r7, #4] + 80449ca: 3304 adds r3, #4 + 80449cc: 69b9 ldr r1, [r7, #24] + 80449ce: 6878 ldr r0, [r7, #4] + 80449d0: f7ff fe26 bl 8044620 + 80449d4: 4603 mov r3, r0 + 80449d6: 72fb strb r3, [r7, #11] LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F " ackno %"U32_F" err %d.\n", pcb->snd_nxt - 1, pcb->rcv_nxt, (int)err)); return err; - 8044998: f997 300b ldrsb.w r3, [r7, #11] + 80449d8: f997 300b ldrsb.w r3, [r7, #11] } - 804499c: 4618 mov r0, r3 - 804499e: 372c adds r7, #44 ; 0x2c - 80449a0: 46bd mov sp, r7 - 80449a2: bd90 pop {r4, r7, pc} - 80449a4: 0804b818 .word 0x0804b818 - 80449a8: 0804c010 .word 0x0804c010 - 80449ac: 0804b86c .word 0x0804b86c + 80449dc: 4618 mov r0, r3 + 80449de: 372c adds r7, #44 ; 0x2c + 80449e0: 46bd mov sp, r7 + 80449e2: bd90 pop {r4, r7, pc} + 80449e4: 0804b858 .word 0x0804b858 + 80449e8: 0804c050 .word 0x0804c050 + 80449ec: 0804b8ac .word 0x0804b8ac -080449b0 : +080449f0 : * * @param arg unused argument */ static void tcpip_tcp_timer(void *arg) { - 80449b0: b580 push {r7, lr} - 80449b2: b082 sub sp, #8 - 80449b4: af00 add r7, sp, #0 - 80449b6: 6078 str r0, [r7, #4] + 80449f0: b580 push {r7, lr} + 80449f2: b082 sub sp, #8 + 80449f4: af00 add r7, sp, #0 + 80449f6: 6078 str r0, [r7, #4] LWIP_UNUSED_ARG(arg); /* call TCP timer handler */ tcp_tmr(); - 80449b8: f7fa fab4 bl 803ef24 + 80449f8: f7fa fab4 bl 803ef64 /* timer still needed? */ if (tcp_active_pcbs || tcp_tw_pcbs) { - 80449bc: 4b0a ldr r3, [pc, #40] ; (80449e8 ) - 80449be: 681b ldr r3, [r3, #0] - 80449c0: 2b00 cmp r3, #0 - 80449c2: d103 bne.n 80449cc - 80449c4: 4b09 ldr r3, [pc, #36] ; (80449ec ) - 80449c6: 681b ldr r3, [r3, #0] - 80449c8: 2b00 cmp r3, #0 - 80449ca: d005 beq.n 80449d8 + 80449fc: 4b0a ldr r3, [pc, #40] ; (8044a28 ) + 80449fe: 681b ldr r3, [r3, #0] + 8044a00: 2b00 cmp r3, #0 + 8044a02: d103 bne.n 8044a0c + 8044a04: 4b09 ldr r3, [pc, #36] ; (8044a2c ) + 8044a06: 681b ldr r3, [r3, #0] + 8044a08: 2b00 cmp r3, #0 + 8044a0a: d005 beq.n 8044a18 /* restart timer */ sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - 80449cc: 2200 movs r2, #0 - 80449ce: 4908 ldr r1, [pc, #32] ; (80449f0 ) - 80449d0: 20fa movs r0, #250 ; 0xfa - 80449d2: f000 f8f3 bl 8044bbc - 80449d6: e003 b.n 80449e0 + 8044a0c: 2200 movs r2, #0 + 8044a0e: 4908 ldr r1, [pc, #32] ; (8044a30 ) + 8044a10: 20fa movs r0, #250 ; 0xfa + 8044a12: f000 f8f3 bl 8044bfc + 8044a16: e003 b.n 8044a20 } else { /* disable timer */ tcpip_tcp_timer_active = 0; - 80449d8: 4b06 ldr r3, [pc, #24] ; (80449f4 ) - 80449da: 2200 movs r2, #0 - 80449dc: 601a str r2, [r3, #0] - } -} - 80449de: bf00 nop - 80449e0: bf00 nop - 80449e2: 3708 adds r7, #8 - 80449e4: 46bd mov sp, r7 - 80449e6: bd80 pop {r7, pc} - 80449e8: 2400eaf4 .word 0x2400eaf4 - 80449ec: 2400eaf8 .word 0x2400eaf8 - 80449f0: 080449b1 .word 0x080449b1 - 80449f4: 2400eb40 .word 0x2400eb40 - -080449f8 : + 8044a18: 4b06 ldr r3, [pc, #24] ; (8044a34 ) + 8044a1a: 2200 movs r2, #0 + 8044a1c: 601a str r2, [r3, #0] + } +} + 8044a1e: bf00 nop + 8044a20: bf00 nop + 8044a22: 3708 adds r7, #8 + 8044a24: 46bd mov sp, r7 + 8044a26: bd80 pop {r7, pc} + 8044a28: 2400eaf4 .word 0x2400eaf4 + 8044a2c: 2400eaf8 .word 0x2400eaf8 + 8044a30: 080449f1 .word 0x080449f1 + 8044a34: 2400eb40 .word 0x2400eb40 + +08044a38 : * the reason is to have the TCP timer only running when * there are active (or time-wait) PCBs. */ void tcp_timer_needed(void) { - 80449f8: b580 push {r7, lr} - 80449fa: af00 add r7, sp, #0 + 8044a38: b580 push {r7, lr} + 8044a3a: af00 add r7, sp, #0 LWIP_ASSERT_CORE_LOCKED(); /* timer is off but needed again? */ if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) { - 80449fc: 4b0a ldr r3, [pc, #40] ; (8044a28 ) - 80449fe: 681b ldr r3, [r3, #0] - 8044a00: 2b00 cmp r3, #0 - 8044a02: d10f bne.n 8044a24 - 8044a04: 4b09 ldr r3, [pc, #36] ; (8044a2c ) - 8044a06: 681b ldr r3, [r3, #0] - 8044a08: 2b00 cmp r3, #0 - 8044a0a: d103 bne.n 8044a14 - 8044a0c: 4b08 ldr r3, [pc, #32] ; (8044a30 ) - 8044a0e: 681b ldr r3, [r3, #0] - 8044a10: 2b00 cmp r3, #0 - 8044a12: d007 beq.n 8044a24 + 8044a3c: 4b0a ldr r3, [pc, #40] ; (8044a68 ) + 8044a3e: 681b ldr r3, [r3, #0] + 8044a40: 2b00 cmp r3, #0 + 8044a42: d10f bne.n 8044a64 + 8044a44: 4b09 ldr r3, [pc, #36] ; (8044a6c ) + 8044a46: 681b ldr r3, [r3, #0] + 8044a48: 2b00 cmp r3, #0 + 8044a4a: d103 bne.n 8044a54 + 8044a4c: 4b08 ldr r3, [pc, #32] ; (8044a70 ) + 8044a4e: 681b ldr r3, [r3, #0] + 8044a50: 2b00 cmp r3, #0 + 8044a52: d007 beq.n 8044a64 /* enable and start timer */ tcpip_tcp_timer_active = 1; - 8044a14: 4b04 ldr r3, [pc, #16] ; (8044a28 ) - 8044a16: 2201 movs r2, #1 - 8044a18: 601a str r2, [r3, #0] + 8044a54: 4b04 ldr r3, [pc, #16] ; (8044a68 ) + 8044a56: 2201 movs r2, #1 + 8044a58: 601a str r2, [r3, #0] sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - 8044a1a: 2200 movs r2, #0 - 8044a1c: 4905 ldr r1, [pc, #20] ; (8044a34 ) - 8044a1e: 20fa movs r0, #250 ; 0xfa - 8044a20: f000 f8cc bl 8044bbc + 8044a5a: 2200 movs r2, #0 + 8044a5c: 4905 ldr r1, [pc, #20] ; (8044a74 ) + 8044a5e: 20fa movs r0, #250 ; 0xfa + 8044a60: f000 f8cc bl 8044bfc } } - 8044a24: bf00 nop - 8044a26: bd80 pop {r7, pc} - 8044a28: 2400eb40 .word 0x2400eb40 - 8044a2c: 2400eaf4 .word 0x2400eaf4 - 8044a30: 2400eaf8 .word 0x2400eaf8 - 8044a34: 080449b1 .word 0x080449b1 + 8044a64: bf00 nop + 8044a66: bd80 pop {r7, pc} + 8044a68: 2400eb40 .word 0x2400eb40 + 8044a6c: 2400eaf4 .word 0x2400eaf4 + 8044a70: 2400eaf8 .word 0x2400eaf8 + 8044a74: 080449f1 .word 0x080449f1 -08044a38 : +08044a78 : #if LWIP_DEBUG_TIMERNAMES sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg, const char *handler_name) #else /* LWIP_DEBUG_TIMERNAMES */ sys_timeout_abs(u32_t abs_time, sys_timeout_handler handler, void *arg) #endif { - 8044a38: b580 push {r7, lr} - 8044a3a: b086 sub sp, #24 - 8044a3c: af00 add r7, sp, #0 - 8044a3e: 60f8 str r0, [r7, #12] - 8044a40: 60b9 str r1, [r7, #8] - 8044a42: 607a str r2, [r7, #4] + 8044a78: b580 push {r7, lr} + 8044a7a: b086 sub sp, #24 + 8044a7c: af00 add r7, sp, #0 + 8044a7e: 60f8 str r0, [r7, #12] + 8044a80: 60b9 str r1, [r7, #8] + 8044a82: 607a str r2, [r7, #4] struct sys_timeo *timeout, *t; timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT); - 8044a44: 2006 movs r0, #6 - 8044a46: f7f8 fff1 bl 803da2c - 8044a4a: 6138 str r0, [r7, #16] + 8044a84: 2006 movs r0, #6 + 8044a86: f7f8 fff1 bl 803da6c + 8044a8a: 6138 str r0, [r7, #16] if (timeout == NULL) { - 8044a4c: 693b ldr r3, [r7, #16] - 8044a4e: 2b00 cmp r3, #0 - 8044a50: d109 bne.n 8044a66 + 8044a8c: 693b ldr r3, [r7, #16] + 8044a8e: 2b00 cmp r3, #0 + 8044a90: d109 bne.n 8044aa6 LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL); - 8044a52: 693b ldr r3, [r7, #16] - 8044a54: 2b00 cmp r3, #0 - 8044a56: d151 bne.n 8044afc - 8044a58: 4b2a ldr r3, [pc, #168] ; (8044b04 ) - 8044a5a: 22be movs r2, #190 ; 0xbe - 8044a5c: 492a ldr r1, [pc, #168] ; (8044b08 ) - 8044a5e: 482b ldr r0, [pc, #172] ; (8044b0c ) - 8044a60: f003 faa0 bl 8047fa4 + 8044a92: 693b ldr r3, [r7, #16] + 8044a94: 2b00 cmp r3, #0 + 8044a96: d151 bne.n 8044b3c + 8044a98: 4b2a ldr r3, [pc, #168] ; (8044b44 ) + 8044a9a: 22be movs r2, #190 ; 0xbe + 8044a9c: 492a ldr r1, [pc, #168] ; (8044b48 ) + 8044a9e: 482b ldr r0, [pc, #172] ; (8044b4c ) + 8044aa0: f003 faa0 bl 8047fe4 return; - 8044a64: e04a b.n 8044afc + 8044aa4: e04a b.n 8044b3c } timeout->next = NULL; - 8044a66: 693b ldr r3, [r7, #16] - 8044a68: 2200 movs r2, #0 - 8044a6a: 601a str r2, [r3, #0] + 8044aa6: 693b ldr r3, [r7, #16] + 8044aa8: 2200 movs r2, #0 + 8044aaa: 601a str r2, [r3, #0] timeout->h = handler; - 8044a6c: 693b ldr r3, [r7, #16] - 8044a6e: 68ba ldr r2, [r7, #8] - 8044a70: 609a str r2, [r3, #8] + 8044aac: 693b ldr r3, [r7, #16] + 8044aae: 68ba ldr r2, [r7, #8] + 8044ab0: 609a str r2, [r3, #8] timeout->arg = arg; - 8044a72: 693b ldr r3, [r7, #16] - 8044a74: 687a ldr r2, [r7, #4] - 8044a76: 60da str r2, [r3, #12] + 8044ab2: 693b ldr r3, [r7, #16] + 8044ab4: 687a ldr r2, [r7, #4] + 8044ab6: 60da str r2, [r3, #12] timeout->time = abs_time; - 8044a78: 693b ldr r3, [r7, #16] - 8044a7a: 68fa ldr r2, [r7, #12] - 8044a7c: 605a str r2, [r3, #4] + 8044ab8: 693b ldr r3, [r7, #16] + 8044aba: 68fa ldr r2, [r7, #12] + 8044abc: 605a str r2, [r3, #4] timeout->handler_name = handler_name; LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p abs_time=%"U32_F" handler=%s arg=%p\n", (void *)timeout, abs_time, handler_name, (void *)arg)); #endif /* LWIP_DEBUG_TIMERNAMES */ if (next_timeout == NULL) { - 8044a7e: 4b24 ldr r3, [pc, #144] ; (8044b10 ) - 8044a80: 681b ldr r3, [r3, #0] - 8044a82: 2b00 cmp r3, #0 - 8044a84: d103 bne.n 8044a8e + 8044abe: 4b24 ldr r3, [pc, #144] ; (8044b50 ) + 8044ac0: 681b ldr r3, [r3, #0] + 8044ac2: 2b00 cmp r3, #0 + 8044ac4: d103 bne.n 8044ace next_timeout = timeout; - 8044a86: 4a22 ldr r2, [pc, #136] ; (8044b10 ) - 8044a88: 693b ldr r3, [r7, #16] - 8044a8a: 6013 str r3, [r2, #0] + 8044ac6: 4a22 ldr r2, [pc, #136] ; (8044b50 ) + 8044ac8: 693b ldr r3, [r7, #16] + 8044aca: 6013 str r3, [r2, #0] return; - 8044a8c: e037 b.n 8044afe + 8044acc: e037 b.n 8044b3e } if (TIME_LESS_THAN(timeout->time, next_timeout->time)) { - 8044a8e: 693b ldr r3, [r7, #16] - 8044a90: 685a ldr r2, [r3, #4] - 8044a92: 4b1f ldr r3, [pc, #124] ; (8044b10 ) - 8044a94: 681b ldr r3, [r3, #0] - 8044a96: 685b ldr r3, [r3, #4] - 8044a98: 1ad3 subs r3, r2, r3 - 8044a9a: 0fdb lsrs r3, r3, #31 - 8044a9c: f003 0301 and.w r3, r3, #1 - 8044aa0: b2db uxtb r3, r3 - 8044aa2: 2b00 cmp r3, #0 - 8044aa4: d007 beq.n 8044ab6 + 8044ace: 693b ldr r3, [r7, #16] + 8044ad0: 685a ldr r2, [r3, #4] + 8044ad2: 4b1f ldr r3, [pc, #124] ; (8044b50 ) + 8044ad4: 681b ldr r3, [r3, #0] + 8044ad6: 685b ldr r3, [r3, #4] + 8044ad8: 1ad3 subs r3, r2, r3 + 8044ada: 0fdb lsrs r3, r3, #31 + 8044adc: f003 0301 and.w r3, r3, #1 + 8044ae0: b2db uxtb r3, r3 + 8044ae2: 2b00 cmp r3, #0 + 8044ae4: d007 beq.n 8044af6 timeout->next = next_timeout; - 8044aa6: 4b1a ldr r3, [pc, #104] ; (8044b10 ) - 8044aa8: 681a ldr r2, [r3, #0] - 8044aaa: 693b ldr r3, [r7, #16] - 8044aac: 601a str r2, [r3, #0] + 8044ae6: 4b1a ldr r3, [pc, #104] ; (8044b50 ) + 8044ae8: 681a ldr r2, [r3, #0] + 8044aea: 693b ldr r3, [r7, #16] + 8044aec: 601a str r2, [r3, #0] next_timeout = timeout; - 8044aae: 4a18 ldr r2, [pc, #96] ; (8044b10 ) - 8044ab0: 693b ldr r3, [r7, #16] - 8044ab2: 6013 str r3, [r2, #0] - 8044ab4: e023 b.n 8044afe + 8044aee: 4a18 ldr r2, [pc, #96] ; (8044b50 ) + 8044af0: 693b ldr r3, [r7, #16] + 8044af2: 6013 str r3, [r2, #0] + 8044af4: e023 b.n 8044b3e } else { for (t = next_timeout; t != NULL; t = t->next) { - 8044ab6: 4b16 ldr r3, [pc, #88] ; (8044b10 ) - 8044ab8: 681b ldr r3, [r3, #0] - 8044aba: 617b str r3, [r7, #20] - 8044abc: e01a b.n 8044af4 + 8044af6: 4b16 ldr r3, [pc, #88] ; (8044b50 ) + 8044af8: 681b ldr r3, [r3, #0] + 8044afa: 617b str r3, [r7, #20] + 8044afc: e01a b.n 8044b34 if ((t->next == NULL) || TIME_LESS_THAN(timeout->time, t->next->time)) { - 8044abe: 697b ldr r3, [r7, #20] - 8044ac0: 681b ldr r3, [r3, #0] - 8044ac2: 2b00 cmp r3, #0 - 8044ac4: d00b beq.n 8044ade - 8044ac6: 693b ldr r3, [r7, #16] - 8044ac8: 685a ldr r2, [r3, #4] - 8044aca: 697b ldr r3, [r7, #20] - 8044acc: 681b ldr r3, [r3, #0] - 8044ace: 685b ldr r3, [r3, #4] - 8044ad0: 1ad3 subs r3, r2, r3 - 8044ad2: 0fdb lsrs r3, r3, #31 - 8044ad4: f003 0301 and.w r3, r3, #1 - 8044ad8: b2db uxtb r3, r3 - 8044ada: 2b00 cmp r3, #0 - 8044adc: d007 beq.n 8044aee + 8044afe: 697b ldr r3, [r7, #20] + 8044b00: 681b ldr r3, [r3, #0] + 8044b02: 2b00 cmp r3, #0 + 8044b04: d00b beq.n 8044b1e + 8044b06: 693b ldr r3, [r7, #16] + 8044b08: 685a ldr r2, [r3, #4] + 8044b0a: 697b ldr r3, [r7, #20] + 8044b0c: 681b ldr r3, [r3, #0] + 8044b0e: 685b ldr r3, [r3, #4] + 8044b10: 1ad3 subs r3, r2, r3 + 8044b12: 0fdb lsrs r3, r3, #31 + 8044b14: f003 0301 and.w r3, r3, #1 + 8044b18: b2db uxtb r3, r3 + 8044b1a: 2b00 cmp r3, #0 + 8044b1c: d007 beq.n 8044b2e timeout->next = t->next; - 8044ade: 697b ldr r3, [r7, #20] - 8044ae0: 681a ldr r2, [r3, #0] - 8044ae2: 693b ldr r3, [r7, #16] - 8044ae4: 601a str r2, [r3, #0] + 8044b1e: 697b ldr r3, [r7, #20] + 8044b20: 681a ldr r2, [r3, #0] + 8044b22: 693b ldr r3, [r7, #16] + 8044b24: 601a str r2, [r3, #0] t->next = timeout; - 8044ae6: 697b ldr r3, [r7, #20] - 8044ae8: 693a ldr r2, [r7, #16] - 8044aea: 601a str r2, [r3, #0] + 8044b26: 697b ldr r3, [r7, #20] + 8044b28: 693a ldr r2, [r7, #16] + 8044b2a: 601a str r2, [r3, #0] break; - 8044aec: e007 b.n 8044afe + 8044b2c: e007 b.n 8044b3e for (t = next_timeout; t != NULL; t = t->next) { - 8044aee: 697b ldr r3, [r7, #20] - 8044af0: 681b ldr r3, [r3, #0] - 8044af2: 617b str r3, [r7, #20] - 8044af4: 697b ldr r3, [r7, #20] - 8044af6: 2b00 cmp r3, #0 - 8044af8: d1e1 bne.n 8044abe - 8044afa: e000 b.n 8044afe + 8044b2e: 697b ldr r3, [r7, #20] + 8044b30: 681b ldr r3, [r3, #0] + 8044b32: 617b str r3, [r7, #20] + 8044b34: 697b ldr r3, [r7, #20] + 8044b36: 2b00 cmp r3, #0 + 8044b38: d1e1 bne.n 8044afe + 8044b3a: e000 b.n 8044b3e return; - 8044afc: bf00 nop + 8044b3c: bf00 nop } } } } - 8044afe: 3718 adds r7, #24 - 8044b00: 46bd mov sp, r7 - 8044b02: bd80 pop {r7, pc} - 8044b04: 0804c034 .word 0x0804c034 - 8044b08: 0804c068 .word 0x0804c068 - 8044b0c: 0804c0a8 .word 0x0804c0a8 - 8044b10: 2400eb38 .word 0x2400eb38 + 8044b3e: 3718 adds r7, #24 + 8044b40: 46bd mov sp, r7 + 8044b42: bd80 pop {r7, pc} + 8044b44: 0804c074 .word 0x0804c074 + 8044b48: 0804c0a8 .word 0x0804c0a8 + 8044b4c: 0804c0e8 .word 0x0804c0e8 + 8044b50: 2400eb38 .word 0x2400eb38 -08044b14 : +08044b54 : #if !LWIP_TESTMODE static #endif void lwip_cyclic_timer(void *arg) { - 8044b14: b580 push {r7, lr} - 8044b16: b086 sub sp, #24 - 8044b18: af00 add r7, sp, #0 - 8044b1a: 6078 str r0, [r7, #4] + 8044b54: b580 push {r7, lr} + 8044b56: b086 sub sp, #24 + 8044b58: af00 add r7, sp, #0 + 8044b5a: 6078 str r0, [r7, #4] u32_t now; u32_t next_timeout_time; const struct lwip_cyclic_timer *cyclic = (const struct lwip_cyclic_timer *)arg; - 8044b1c: 687b ldr r3, [r7, #4] - 8044b1e: 617b str r3, [r7, #20] + 8044b5c: 687b ldr r3, [r7, #4] + 8044b5e: 617b str r3, [r7, #20] #if LWIP_DEBUG_TIMERNAMES LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: %s()\n", cyclic->handler_name)); #endif cyclic->handler(); - 8044b20: 697b ldr r3, [r7, #20] - 8044b22: 685b ldr r3, [r3, #4] - 8044b24: 4798 blx r3 + 8044b60: 697b ldr r3, [r7, #20] + 8044b62: 685b ldr r3, [r3, #4] + 8044b64: 4798 blx r3 now = sys_now(); - 8044b26: f7f8 f81b bl 803cb60 - 8044b2a: 6138 str r0, [r7, #16] + 8044b66: f7f8 f81b bl 803cba0 + 8044b6a: 6138 str r0, [r7, #16] next_timeout_time = (u32_t)(current_timeout_due_time + cyclic->interval_ms); /* overflow handled by TIME_LESS_THAN macro */ - 8044b2c: 697b ldr r3, [r7, #20] - 8044b2e: 681a ldr r2, [r3, #0] - 8044b30: 4b0f ldr r3, [pc, #60] ; (8044b70 ) - 8044b32: 681b ldr r3, [r3, #0] - 8044b34: 4413 add r3, r2 - 8044b36: 60fb str r3, [r7, #12] + 8044b6c: 697b ldr r3, [r7, #20] + 8044b6e: 681a ldr r2, [r3, #0] + 8044b70: 4b0f ldr r3, [pc, #60] ; (8044bb0 ) + 8044b72: 681b ldr r3, [r3, #0] + 8044b74: 4413 add r3, r2 + 8044b76: 60fb str r3, [r7, #12] if (TIME_LESS_THAN(next_timeout_time, now)) { - 8044b38: 68fa ldr r2, [r7, #12] - 8044b3a: 693b ldr r3, [r7, #16] - 8044b3c: 1ad3 subs r3, r2, r3 - 8044b3e: 0fdb lsrs r3, r3, #31 - 8044b40: f003 0301 and.w r3, r3, #1 - 8044b44: b2db uxtb r3, r3 - 8044b46: 2b00 cmp r3, #0 - 8044b48: d009 beq.n 8044b5e + 8044b78: 68fa ldr r2, [r7, #12] + 8044b7a: 693b ldr r3, [r7, #16] + 8044b7c: 1ad3 subs r3, r2, r3 + 8044b7e: 0fdb lsrs r3, r3, #31 + 8044b80: f003 0301 and.w r3, r3, #1 + 8044b84: b2db uxtb r3, r3 + 8044b86: 2b00 cmp r3, #0 + 8044b88: d009 beq.n 8044b9e /* timer would immediately expire again -> "overload" -> restart without any correction */ #if LWIP_DEBUG_TIMERNAMES sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg, cyclic->handler_name); #else sys_timeout_abs((u32_t)(now + cyclic->interval_ms), lwip_cyclic_timer, arg); - 8044b4a: 697b ldr r3, [r7, #20] - 8044b4c: 681a ldr r2, [r3, #0] - 8044b4e: 693b ldr r3, [r7, #16] - 8044b50: 4413 add r3, r2 - 8044b52: 687a ldr r2, [r7, #4] - 8044b54: 4907 ldr r1, [pc, #28] ; (8044b74 ) - 8044b56: 4618 mov r0, r3 - 8044b58: f7ff ff6e bl 8044a38 + 8044b8a: 697b ldr r3, [r7, #20] + 8044b8c: 681a ldr r2, [r3, #0] + 8044b8e: 693b ldr r3, [r7, #16] + 8044b90: 4413 add r3, r2 + 8044b92: 687a ldr r2, [r7, #4] + 8044b94: 4907 ldr r1, [pc, #28] ; (8044bb4 ) + 8044b96: 4618 mov r0, r3 + 8044b98: f7ff ff6e bl 8044a78 sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg, cyclic->handler_name); #else sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg); #endif } } - 8044b5c: e004 b.n 8044b68 + 8044b9c: e004 b.n 8044ba8 sys_timeout_abs(next_timeout_time, lwip_cyclic_timer, arg); - 8044b5e: 687a ldr r2, [r7, #4] - 8044b60: 4904 ldr r1, [pc, #16] ; (8044b74 ) - 8044b62: 68f8 ldr r0, [r7, #12] - 8044b64: f7ff ff68 bl 8044a38 + 8044b9e: 687a ldr r2, [r7, #4] + 8044ba0: 4904 ldr r1, [pc, #16] ; (8044bb4 ) + 8044ba2: 68f8 ldr r0, [r7, #12] + 8044ba4: f7ff ff68 bl 8044a78 } - 8044b68: bf00 nop - 8044b6a: 3718 adds r7, #24 - 8044b6c: 46bd mov sp, r7 - 8044b6e: bd80 pop {r7, pc} - 8044b70: 2400eb3c .word 0x2400eb3c - 8044b74: 08044b15 .word 0x08044b15 + 8044ba8: bf00 nop + 8044baa: 3718 adds r7, #24 + 8044bac: 46bd mov sp, r7 + 8044bae: bd80 pop {r7, pc} + 8044bb0: 2400eb3c .word 0x2400eb3c + 8044bb4: 08044b55 .word 0x08044b55 -08044b78 : +08044bb8 : /** Initialize this module */ void sys_timeouts_init(void) { - 8044b78: b580 push {r7, lr} - 8044b7a: b082 sub sp, #8 - 8044b7c: af00 add r7, sp, #0 + 8044bb8: b580 push {r7, lr} + 8044bba: b082 sub sp, #8 + 8044bbc: af00 add r7, sp, #0 size_t i; /* tcp_tmr() at index 0 is started on demand */ for (i = (LWIP_TCP ? 1 : 0); i < LWIP_ARRAYSIZE(lwip_cyclic_timers); i++) { - 8044b7e: 2301 movs r3, #1 - 8044b80: 607b str r3, [r7, #4] - 8044b82: e00e b.n 8044ba2 + 8044bbe: 2301 movs r3, #1 + 8044bc0: 607b str r3, [r7, #4] + 8044bc2: e00e b.n 8044be2 /* we have to cast via size_t to get rid of const warning (this is OK as cyclic_timer() casts back to const* */ sys_timeout(lwip_cyclic_timers[i].interval_ms, lwip_cyclic_timer, LWIP_CONST_CAST(void *, &lwip_cyclic_timers[i])); - 8044b84: 4a0b ldr r2, [pc, #44] ; (8044bb4 ) - 8044b86: 687b ldr r3, [r7, #4] - 8044b88: f852 0033 ldr.w r0, [r2, r3, lsl #3] - 8044b8c: 687b ldr r3, [r7, #4] - 8044b8e: 00db lsls r3, r3, #3 - 8044b90: 4a08 ldr r2, [pc, #32] ; (8044bb4 ) - 8044b92: 4413 add r3, r2 - 8044b94: 461a mov r2, r3 - 8044b96: 4908 ldr r1, [pc, #32] ; (8044bb8 ) - 8044b98: f000 f810 bl 8044bbc + 8044bc4: 4a0b ldr r2, [pc, #44] ; (8044bf4 ) + 8044bc6: 687b ldr r3, [r7, #4] + 8044bc8: f852 0033 ldr.w r0, [r2, r3, lsl #3] + 8044bcc: 687b ldr r3, [r7, #4] + 8044bce: 00db lsls r3, r3, #3 + 8044bd0: 4a08 ldr r2, [pc, #32] ; (8044bf4 ) + 8044bd2: 4413 add r3, r2 + 8044bd4: 461a mov r2, r3 + 8044bd6: 4908 ldr r1, [pc, #32] ; (8044bf8 ) + 8044bd8: f000 f810 bl 8044bfc for (i = (LWIP_TCP ? 1 : 0); i < LWIP_ARRAYSIZE(lwip_cyclic_timers); i++) { - 8044b9c: 687b ldr r3, [r7, #4] - 8044b9e: 3301 adds r3, #1 - 8044ba0: 607b str r3, [r7, #4] - 8044ba2: 687b ldr r3, [r7, #4] - 8044ba4: 2b02 cmp r3, #2 - 8044ba6: d9ed bls.n 8044b84 - } -} - 8044ba8: bf00 nop - 8044baa: bf00 nop - 8044bac: 3708 adds r7, #8 - 8044bae: 46bd mov sp, r7 - 8044bb0: bd80 pop {r7, pc} - 8044bb2: bf00 nop - 8044bb4: 0804d470 .word 0x0804d470 - 8044bb8: 08044b15 .word 0x08044b15 - -08044bbc : + 8044bdc: 687b ldr r3, [r7, #4] + 8044bde: 3301 adds r3, #1 + 8044be0: 607b str r3, [r7, #4] + 8044be2: 687b ldr r3, [r7, #4] + 8044be4: 2b02 cmp r3, #2 + 8044be6: d9ed bls.n 8044bc4 + } +} + 8044be8: bf00 nop + 8044bea: bf00 nop + 8044bec: 3708 adds r7, #8 + 8044bee: 46bd mov sp, r7 + 8044bf0: bd80 pop {r7, pc} + 8044bf2: bf00 nop + 8044bf4: 0804d4b0 .word 0x0804d4b0 + 8044bf8: 08044b55 .word 0x08044b55 + +08044bfc : sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char *handler_name) #else /* LWIP_DEBUG_TIMERNAMES */ void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg) #endif /* LWIP_DEBUG_TIMERNAMES */ { - 8044bbc: b580 push {r7, lr} - 8044bbe: b086 sub sp, #24 - 8044bc0: af00 add r7, sp, #0 - 8044bc2: 60f8 str r0, [r7, #12] - 8044bc4: 60b9 str r1, [r7, #8] - 8044bc6: 607a str r2, [r7, #4] + 8044bfc: b580 push {r7, lr} + 8044bfe: b086 sub sp, #24 + 8044c00: af00 add r7, sp, #0 + 8044c02: 60f8 str r0, [r7, #12] + 8044c04: 60b9 str r1, [r7, #8] + 8044c06: 607a str r2, [r7, #4] u32_t next_timeout_time; LWIP_ASSERT_CORE_LOCKED(); LWIP_ASSERT("Timeout time too long, max is LWIP_UINT32_MAX/4 msecs", msecs <= (LWIP_UINT32_MAX / 4)); - 8044bc8: 68fb ldr r3, [r7, #12] - 8044bca: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 - 8044bce: d306 bcc.n 8044bde - 8044bd0: 4b0a ldr r3, [pc, #40] ; (8044bfc ) - 8044bd2: f240 1229 movw r2, #297 ; 0x129 - 8044bd6: 490a ldr r1, [pc, #40] ; (8044c00 ) - 8044bd8: 480a ldr r0, [pc, #40] ; (8044c04 ) - 8044bda: f003 f9e3 bl 8047fa4 + 8044c08: 68fb ldr r3, [r7, #12] + 8044c0a: f1b3 4f80 cmp.w r3, #1073741824 ; 0x40000000 + 8044c0e: d306 bcc.n 8044c1e + 8044c10: 4b0a ldr r3, [pc, #40] ; (8044c3c ) + 8044c12: f240 1229 movw r2, #297 ; 0x129 + 8044c16: 490a ldr r1, [pc, #40] ; (8044c40 ) + 8044c18: 480a ldr r0, [pc, #40] ; (8044c44 ) + 8044c1a: f003 f9e3 bl 8047fe4 next_timeout_time = (u32_t)(sys_now() + msecs); /* overflow handled by TIME_LESS_THAN macro */ - 8044bde: f7f7 ffbf bl 803cb60 - 8044be2: 4602 mov r2, r0 - 8044be4: 68fb ldr r3, [r7, #12] - 8044be6: 4413 add r3, r2 - 8044be8: 617b str r3, [r7, #20] + 8044c1e: f7f7 ffbf bl 803cba0 + 8044c22: 4602 mov r2, r0 + 8044c24: 68fb ldr r3, [r7, #12] + 8044c26: 4413 add r3, r2 + 8044c28: 617b str r3, [r7, #20] #if LWIP_DEBUG_TIMERNAMES sys_timeout_abs(next_timeout_time, handler, arg, handler_name); #else sys_timeout_abs(next_timeout_time, handler, arg); - 8044bea: 687a ldr r2, [r7, #4] - 8044bec: 68b9 ldr r1, [r7, #8] - 8044bee: 6978 ldr r0, [r7, #20] - 8044bf0: f7ff ff22 bl 8044a38 + 8044c2a: 687a ldr r2, [r7, #4] + 8044c2c: 68b9 ldr r1, [r7, #8] + 8044c2e: 6978 ldr r0, [r7, #20] + 8044c30: f7ff ff22 bl 8044a78 #endif } - 8044bf4: bf00 nop - 8044bf6: 3718 adds r7, #24 - 8044bf8: 46bd mov sp, r7 - 8044bfa: bd80 pop {r7, pc} - 8044bfc: 0804c034 .word 0x0804c034 - 8044c00: 0804c0d0 .word 0x0804c0d0 - 8044c04: 0804c0a8 .word 0x0804c0a8 + 8044c34: bf00 nop + 8044c36: 3718 adds r7, #24 + 8044c38: 46bd mov sp, r7 + 8044c3a: bd80 pop {r7, pc} + 8044c3c: 0804c074 .word 0x0804c074 + 8044c40: 0804c110 .word 0x0804c110 + 8044c44: 0804c0e8 .word 0x0804c0e8 -08044c08 : +08044c48 : * * Must be called periodically from your main loop. */ void sys_check_timeouts(void) { - 8044c08: b580 push {r7, lr} - 8044c0a: b084 sub sp, #16 - 8044c0c: af00 add r7, sp, #0 + 8044c48: b580 push {r7, lr} + 8044c4a: b084 sub sp, #16 + 8044c4c: af00 add r7, sp, #0 u32_t now; LWIP_ASSERT_CORE_LOCKED(); /* Process only timers expired at the start of the function. */ now = sys_now(); - 8044c0e: f7f7 ffa7 bl 803cb60 - 8044c12: 60f8 str r0, [r7, #12] + 8044c4e: f7f7 ffa7 bl 803cba0 + 8044c52: 60f8 str r0, [r7, #12] do { struct sys_timeo *tmptimeout; sys_timeout_handler handler; void *arg; PBUF_CHECK_FREE_OOSEQ(); - 8044c14: 4b1a ldr r3, [pc, #104] ; (8044c80 ) - 8044c16: 781b ldrb r3, [r3, #0] - 8044c18: b2db uxtb r3, r3 - 8044c1a: 2b00 cmp r3, #0 - 8044c1c: d001 beq.n 8044c22 - 8044c1e: f7f9 facd bl 803e1bc + 8044c54: 4b1a ldr r3, [pc, #104] ; (8044cc0 ) + 8044c56: 781b ldrb r3, [r3, #0] + 8044c58: b2db uxtb r3, r3 + 8044c5a: 2b00 cmp r3, #0 + 8044c5c: d001 beq.n 8044c62 + 8044c5e: f7f9 facd bl 803e1fc tmptimeout = next_timeout; - 8044c22: 4b18 ldr r3, [pc, #96] ; (8044c84 ) - 8044c24: 681b ldr r3, [r3, #0] - 8044c26: 60bb str r3, [r7, #8] + 8044c62: 4b18 ldr r3, [pc, #96] ; (8044cc4 ) + 8044c64: 681b ldr r3, [r3, #0] + 8044c66: 60bb str r3, [r7, #8] if (tmptimeout == NULL) { - 8044c28: 68bb ldr r3, [r7, #8] - 8044c2a: 2b00 cmp r3, #0 - 8044c2c: d022 beq.n 8044c74 + 8044c68: 68bb ldr r3, [r7, #8] + 8044c6a: 2b00 cmp r3, #0 + 8044c6c: d022 beq.n 8044cb4 return; } if (TIME_LESS_THAN(now, tmptimeout->time)) { - 8044c2e: 68bb ldr r3, [r7, #8] - 8044c30: 685b ldr r3, [r3, #4] - 8044c32: 68fa ldr r2, [r7, #12] - 8044c34: 1ad3 subs r3, r2, r3 - 8044c36: 0fdb lsrs r3, r3, #31 - 8044c38: f003 0301 and.w r3, r3, #1 - 8044c3c: b2db uxtb r3, r3 - 8044c3e: 2b00 cmp r3, #0 - 8044c40: d11a bne.n 8044c78 + 8044c6e: 68bb ldr r3, [r7, #8] + 8044c70: 685b ldr r3, [r3, #4] + 8044c72: 68fa ldr r2, [r7, #12] + 8044c74: 1ad3 subs r3, r2, r3 + 8044c76: 0fdb lsrs r3, r3, #31 + 8044c78: f003 0301 and.w r3, r3, #1 + 8044c7c: b2db uxtb r3, r3 + 8044c7e: 2b00 cmp r3, #0 + 8044c80: d11a bne.n 8044cb8 return; } /* Timeout has expired */ next_timeout = tmptimeout->next; - 8044c42: 68bb ldr r3, [r7, #8] - 8044c44: 681b ldr r3, [r3, #0] - 8044c46: 4a0f ldr r2, [pc, #60] ; (8044c84 ) - 8044c48: 6013 str r3, [r2, #0] + 8044c82: 68bb ldr r3, [r7, #8] + 8044c84: 681b ldr r3, [r3, #0] + 8044c86: 4a0f ldr r2, [pc, #60] ; (8044cc4 ) + 8044c88: 6013 str r3, [r2, #0] handler = tmptimeout->h; - 8044c4a: 68bb ldr r3, [r7, #8] - 8044c4c: 689b ldr r3, [r3, #8] - 8044c4e: 607b str r3, [r7, #4] + 8044c8a: 68bb ldr r3, [r7, #8] + 8044c8c: 689b ldr r3, [r3, #8] + 8044c8e: 607b str r3, [r7, #4] arg = tmptimeout->arg; - 8044c50: 68bb ldr r3, [r7, #8] - 8044c52: 68db ldr r3, [r3, #12] - 8044c54: 603b str r3, [r7, #0] + 8044c90: 68bb ldr r3, [r7, #8] + 8044c92: 68db ldr r3, [r3, #12] + 8044c94: 603b str r3, [r7, #0] current_timeout_due_time = tmptimeout->time; - 8044c56: 68bb ldr r3, [r7, #8] - 8044c58: 685b ldr r3, [r3, #4] - 8044c5a: 4a0b ldr r2, [pc, #44] ; (8044c88 ) - 8044c5c: 6013 str r3, [r2, #0] + 8044c96: 68bb ldr r3, [r7, #8] + 8044c98: 685b ldr r3, [r3, #4] + 8044c9a: 4a0b ldr r2, [pc, #44] ; (8044cc8 ) + 8044c9c: 6013 str r3, [r2, #0] if (handler != NULL) { LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%s t=%"U32_F" arg=%p\n", tmptimeout->handler_name, sys_now() - tmptimeout->time, arg)); } #endif /* LWIP_DEBUG_TIMERNAMES */ memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - 8044c5e: 68b9 ldr r1, [r7, #8] - 8044c60: 2006 movs r0, #6 - 8044c62: f7f8 ff53 bl 803db0c + 8044c9e: 68b9 ldr r1, [r7, #8] + 8044ca0: 2006 movs r0, #6 + 8044ca2: f7f8 ff53 bl 803db4c if (handler != NULL) { - 8044c66: 687b ldr r3, [r7, #4] - 8044c68: 2b00 cmp r3, #0 - 8044c6a: d0d3 beq.n 8044c14 + 8044ca6: 687b ldr r3, [r7, #4] + 8044ca8: 2b00 cmp r3, #0 + 8044caa: d0d3 beq.n 8044c54 handler(arg); - 8044c6c: 687b ldr r3, [r7, #4] - 8044c6e: 6838 ldr r0, [r7, #0] - 8044c70: 4798 blx r3 + 8044cac: 687b ldr r3, [r7, #4] + 8044cae: 6838 ldr r0, [r7, #0] + 8044cb0: 4798 blx r3 do { - 8044c72: e7cf b.n 8044c14 + 8044cb2: e7cf b.n 8044c54 return; - 8044c74: bf00 nop - 8044c76: e000 b.n 8044c7a + 8044cb4: bf00 nop + 8044cb6: e000 b.n 8044cba return; - 8044c78: bf00 nop + 8044cb8: bf00 nop } LWIP_TCPIP_THREAD_ALIVE(); /* Repeat until all expired timers have been called */ } while (1); } - 8044c7a: 3710 adds r7, #16 - 8044c7c: 46bd mov sp, r7 - 8044c7e: bd80 pop {r7, pc} - 8044c80: 2400eae5 .word 0x2400eae5 - 8044c84: 2400eb38 .word 0x2400eb38 - 8044c88: 2400eb3c .word 0x2400eb3c + 8044cba: 3710 adds r7, #16 + 8044cbc: 46bd mov sp, r7 + 8044cbe: bd80 pop {r7, pc} + 8044cc0: 2400eae5 .word 0x2400eae5 + 8044cc4: 2400eb38 .word 0x2400eb38 + 8044cc8: 2400eb3c .word 0x2400eb3c -08044c8c : +08044ccc : /** * Initialize this module. */ void udp_init(void) { - 8044c8c: b580 push {r7, lr} - 8044c8e: af00 add r7, sp, #0 + 8044ccc: b580 push {r7, lr} + 8044cce: af00 add r7, sp, #0 #ifdef LWIP_RAND udp_port = UDP_ENSURE_LOCAL_PORT_RANGE(LWIP_RAND()); - 8044c90: f003 f9a0 bl 8047fd4 - 8044c94: 4603 mov r3, r0 - 8044c96: b29b uxth r3, r3 - 8044c98: f3c3 030d ubfx r3, r3, #0, #14 - 8044c9c: b29b uxth r3, r3 - 8044c9e: f5a3 4380 sub.w r3, r3, #16384 ; 0x4000 - 8044ca2: b29a uxth r2, r3 - 8044ca4: 4b01 ldr r3, [pc, #4] ; (8044cac ) - 8044ca6: 801a strh r2, [r3, #0] + 8044cd0: f003 f9a0 bl 8048014 + 8044cd4: 4603 mov r3, r0 + 8044cd6: b29b uxth r3, r3 + 8044cd8: f3c3 030d ubfx r3, r3, #0, #14 + 8044cdc: b29b uxth r3, r3 + 8044cde: f5a3 4380 sub.w r3, r3, #16384 ; 0x4000 + 8044ce2: b29a uxth r2, r3 + 8044ce4: 4b01 ldr r3, [pc, #4] ; (8044cec ) + 8044ce6: 801a strh r2, [r3, #0] #endif /* LWIP_RAND */ } - 8044ca8: bf00 nop - 8044caa: bd80 pop {r7, pc} - 8044cac: 24000144 .word 0x24000144 + 8044ce8: bf00 nop + 8044cea: bd80 pop {r7, pc} + 8044cec: 24000144 .word 0x24000144 -08044cb0 : +08044cf0 : * * @return a new (free) local UDP port number */ static u16_t udp_new_port(void) { - 8044cb0: b480 push {r7} - 8044cb2: b083 sub sp, #12 - 8044cb4: af00 add r7, sp, #0 + 8044cf0: b480 push {r7} + 8044cf2: b083 sub sp, #12 + 8044cf4: af00 add r7, sp, #0 u16_t n = 0; - 8044cb6: 2300 movs r3, #0 - 8044cb8: 80fb strh r3, [r7, #6] + 8044cf6: 2300 movs r3, #0 + 8044cf8: 80fb strh r3, [r7, #6] struct udp_pcb *pcb; again: if (udp_port++ == UDP_LOCAL_PORT_RANGE_END) { - 8044cba: 4b17 ldr r3, [pc, #92] ; (8044d18 ) - 8044cbc: 881b ldrh r3, [r3, #0] - 8044cbe: 1c5a adds r2, r3, #1 - 8044cc0: b291 uxth r1, r2 - 8044cc2: 4a15 ldr r2, [pc, #84] ; (8044d18 ) - 8044cc4: 8011 strh r1, [r2, #0] - 8044cc6: f64f 72ff movw r2, #65535 ; 0xffff - 8044cca: 4293 cmp r3, r2 - 8044ccc: d103 bne.n 8044cd6 + 8044cfa: 4b17 ldr r3, [pc, #92] ; (8044d58 ) + 8044cfc: 881b ldrh r3, [r3, #0] + 8044cfe: 1c5a adds r2, r3, #1 + 8044d00: b291 uxth r1, r2 + 8044d02: 4a15 ldr r2, [pc, #84] ; (8044d58 ) + 8044d04: 8011 strh r1, [r2, #0] + 8044d06: f64f 72ff movw r2, #65535 ; 0xffff + 8044d0a: 4293 cmp r3, r2 + 8044d0c: d103 bne.n 8044d16 udp_port = UDP_LOCAL_PORT_RANGE_START; - 8044cce: 4b12 ldr r3, [pc, #72] ; (8044d18 ) - 8044cd0: f44f 4240 mov.w r2, #49152 ; 0xc000 - 8044cd4: 801a strh r2, [r3, #0] + 8044d0e: 4b12 ldr r3, [pc, #72] ; (8044d58 ) + 8044d10: f44f 4240 mov.w r2, #49152 ; 0xc000 + 8044d14: 801a strh r2, [r3, #0] } /* Check all PCBs. */ for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 8044cd6: 4b11 ldr r3, [pc, #68] ; (8044d1c ) - 8044cd8: 681b ldr r3, [r3, #0] - 8044cda: 603b str r3, [r7, #0] - 8044cdc: e011 b.n 8044d02 + 8044d16: 4b11 ldr r3, [pc, #68] ; (8044d5c ) + 8044d18: 681b ldr r3, [r3, #0] + 8044d1a: 603b str r3, [r7, #0] + 8044d1c: e011 b.n 8044d42 if (pcb->local_port == udp_port) { - 8044cde: 683b ldr r3, [r7, #0] - 8044ce0: 8a5a ldrh r2, [r3, #18] - 8044ce2: 4b0d ldr r3, [pc, #52] ; (8044d18 ) - 8044ce4: 881b ldrh r3, [r3, #0] - 8044ce6: 429a cmp r2, r3 - 8044ce8: d108 bne.n 8044cfc + 8044d1e: 683b ldr r3, [r7, #0] + 8044d20: 8a5a ldrh r2, [r3, #18] + 8044d22: 4b0d ldr r3, [pc, #52] ; (8044d58 ) + 8044d24: 881b ldrh r3, [r3, #0] + 8044d26: 429a cmp r2, r3 + 8044d28: d108 bne.n 8044d3c if (++n > (UDP_LOCAL_PORT_RANGE_END - UDP_LOCAL_PORT_RANGE_START)) { - 8044cea: 88fb ldrh r3, [r7, #6] - 8044cec: 3301 adds r3, #1 - 8044cee: 80fb strh r3, [r7, #6] - 8044cf0: 88fb ldrh r3, [r7, #6] - 8044cf2: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 - 8044cf6: d3e0 bcc.n 8044cba + 8044d2a: 88fb ldrh r3, [r7, #6] + 8044d2c: 3301 adds r3, #1 + 8044d2e: 80fb strh r3, [r7, #6] + 8044d30: 88fb ldrh r3, [r7, #6] + 8044d32: f5b3 4f80 cmp.w r3, #16384 ; 0x4000 + 8044d36: d3e0 bcc.n 8044cfa return 0; - 8044cf8: 2300 movs r3, #0 - 8044cfa: e007 b.n 8044d0c + 8044d38: 2300 movs r3, #0 + 8044d3a: e007 b.n 8044d4c for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 8044cfc: 683b ldr r3, [r7, #0] - 8044cfe: 68db ldr r3, [r3, #12] - 8044d00: 603b str r3, [r7, #0] - 8044d02: 683b ldr r3, [r7, #0] - 8044d04: 2b00 cmp r3, #0 - 8044d06: d1ea bne.n 8044cde + 8044d3c: 683b ldr r3, [r7, #0] + 8044d3e: 68db ldr r3, [r3, #12] + 8044d40: 603b str r3, [r7, #0] + 8044d42: 683b ldr r3, [r7, #0] + 8044d44: 2b00 cmp r3, #0 + 8044d46: d1ea bne.n 8044d1e } goto again; } } return udp_port; - 8044d08: 4b03 ldr r3, [pc, #12] ; (8044d18 ) - 8044d0a: 881b ldrh r3, [r3, #0] -} - 8044d0c: 4618 mov r0, r3 - 8044d0e: 370c adds r7, #12 - 8044d10: 46bd mov sp, r7 - 8044d12: f85d 7b04 ldr.w r7, [sp], #4 - 8044d16: 4770 bx lr - 8044d18: 24000144 .word 0x24000144 - 8044d1c: 2400eb44 .word 0x2400eb44 - -08044d20 : + 8044d48: 4b03 ldr r3, [pc, #12] ; (8044d58 ) + 8044d4a: 881b ldrh r3, [r3, #0] +} + 8044d4c: 4618 mov r0, r3 + 8044d4e: 370c adds r7, #12 + 8044d50: 46bd mov sp, r7 + 8044d52: f85d 7b04 ldr.w r7, [sp], #4 + 8044d56: 4770 bx lr + 8044d58: 24000144 .word 0x24000144 + 8044d5c: 2400eb44 .word 0x2400eb44 + +08044d60 : * @param broadcast 1 if his is an IPv4 broadcast (global or subnet-only), 0 otherwise (only used for IPv4) * @return 1 on match, 0 otherwise */ static u8_t udp_input_local_match(struct udp_pcb *pcb, struct netif *inp, u8_t broadcast) { - 8044d20: b580 push {r7, lr} - 8044d22: b084 sub sp, #16 - 8044d24: af00 add r7, sp, #0 - 8044d26: 60f8 str r0, [r7, #12] - 8044d28: 60b9 str r1, [r7, #8] - 8044d2a: 4613 mov r3, r2 - 8044d2c: 71fb strb r3, [r7, #7] + 8044d60: b580 push {r7, lr} + 8044d62: b084 sub sp, #16 + 8044d64: af00 add r7, sp, #0 + 8044d66: 60f8 str r0, [r7, #12] + 8044d68: 60b9 str r1, [r7, #8] + 8044d6a: 4613 mov r3, r2 + 8044d6c: 71fb strb r3, [r7, #7] LWIP_UNUSED_ARG(inp); /* in IPv6 only case */ LWIP_UNUSED_ARG(broadcast); /* in IPv6 only case */ LWIP_ASSERT("udp_input_local_match: invalid pcb", pcb != NULL); - 8044d2e: 68fb ldr r3, [r7, #12] - 8044d30: 2b00 cmp r3, #0 - 8044d32: d105 bne.n 8044d40 - 8044d34: 4b27 ldr r3, [pc, #156] ; (8044dd4 ) - 8044d36: 2287 movs r2, #135 ; 0x87 - 8044d38: 4927 ldr r1, [pc, #156] ; (8044dd8 ) - 8044d3a: 4828 ldr r0, [pc, #160] ; (8044ddc ) - 8044d3c: f003 f932 bl 8047fa4 + 8044d6e: 68fb ldr r3, [r7, #12] + 8044d70: 2b00 cmp r3, #0 + 8044d72: d105 bne.n 8044d80 + 8044d74: 4b27 ldr r3, [pc, #156] ; (8044e14 ) + 8044d76: 2287 movs r2, #135 ; 0x87 + 8044d78: 4927 ldr r1, [pc, #156] ; (8044e18 ) + 8044d7a: 4828 ldr r0, [pc, #160] ; (8044e1c ) + 8044d7c: f003 f932 bl 8047fe4 LWIP_ASSERT("udp_input_local_match: invalid netif", inp != NULL); - 8044d40: 68bb ldr r3, [r7, #8] - 8044d42: 2b00 cmp r3, #0 - 8044d44: d105 bne.n 8044d52 - 8044d46: 4b23 ldr r3, [pc, #140] ; (8044dd4 ) - 8044d48: 2288 movs r2, #136 ; 0x88 - 8044d4a: 4925 ldr r1, [pc, #148] ; (8044de0 ) - 8044d4c: 4823 ldr r0, [pc, #140] ; (8044ddc ) - 8044d4e: f003 f929 bl 8047fa4 + 8044d80: 68bb ldr r3, [r7, #8] + 8044d82: 2b00 cmp r3, #0 + 8044d84: d105 bne.n 8044d92 + 8044d86: 4b23 ldr r3, [pc, #140] ; (8044e14 ) + 8044d88: 2288 movs r2, #136 ; 0x88 + 8044d8a: 4925 ldr r1, [pc, #148] ; (8044e20 ) + 8044d8c: 4823 ldr r0, [pc, #140] ; (8044e1c ) + 8044d8e: f003 f929 bl 8047fe4 /* check if PCB is bound to specific netif */ if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8044d52: 68fb ldr r3, [r7, #12] - 8044d54: 7a1b ldrb r3, [r3, #8] - 8044d56: 2b00 cmp r3, #0 - 8044d58: d00b beq.n 8044d72 + 8044d92: 68fb ldr r3, [r7, #12] + 8044d94: 7a1b ldrb r3, [r3, #8] + 8044d96: 2b00 cmp r3, #0 + 8044d98: d00b beq.n 8044db2 (pcb->netif_idx != netif_get_index(ip_data.current_input_netif))) { - 8044d5a: 68fb ldr r3, [r7, #12] - 8044d5c: 7a1a ldrb r2, [r3, #8] - 8044d5e: 4b21 ldr r3, [pc, #132] ; (8044de4 ) - 8044d60: 685b ldr r3, [r3, #4] - 8044d62: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 8044d66: 3301 adds r3, #1 - 8044d68: b2db uxtb r3, r3 + 8044d9a: 68fb ldr r3, [r7, #12] + 8044d9c: 7a1a ldrb r2, [r3, #8] + 8044d9e: 4b21 ldr r3, [pc, #132] ; (8044e24 ) + 8044da0: 685b ldr r3, [r3, #4] + 8044da2: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 8044da6: 3301 adds r3, #1 + 8044da8: b2db uxtb r3, r3 if ((pcb->netif_idx != NETIF_NO_INDEX) && - 8044d6a: 429a cmp r2, r3 - 8044d6c: d001 beq.n 8044d72 + 8044daa: 429a cmp r2, r3 + 8044dac: d001 beq.n 8044db2 return 0; - 8044d6e: 2300 movs r3, #0 - 8044d70: e02b b.n 8044dca + 8044dae: 2300 movs r3, #0 + 8044db0: e02b b.n 8044e0a /* Only need to check PCB if incoming IP version matches PCB IP version */ if (IP_ADDR_PCB_VERSION_MATCH_EXACT(pcb, ip_current_dest_addr())) { #if LWIP_IPV4 /* Special case: IPv4 broadcast: all or broadcasts in my subnet * Note: broadcast variable can only be 1 if it is an IPv4 broadcast */ if (broadcast != 0) { - 8044d72: 79fb ldrb r3, [r7, #7] - 8044d74: 2b00 cmp r3, #0 - 8044d76: d018 beq.n 8044daa + 8044db2: 79fb ldrb r3, [r7, #7] + 8044db4: 2b00 cmp r3, #0 + 8044db6: d018 beq.n 8044dea #if IP_SOF_BROADCAST_RECV if (ip_get_option(pcb, SOF_BROADCAST)) #endif /* IP_SOF_BROADCAST_RECV */ { if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 8044d78: 68fb ldr r3, [r7, #12] - 8044d7a: 2b00 cmp r3, #0 - 8044d7c: d013 beq.n 8044da6 - 8044d7e: 68fb ldr r3, [r7, #12] - 8044d80: 681b ldr r3, [r3, #0] - 8044d82: 2b00 cmp r3, #0 - 8044d84: d00f beq.n 8044da6 + 8044db8: 68fb ldr r3, [r7, #12] + 8044dba: 2b00 cmp r3, #0 + 8044dbc: d013 beq.n 8044de6 + 8044dbe: 68fb ldr r3, [r7, #12] + 8044dc0: 681b ldr r3, [r3, #0] + 8044dc2: 2b00 cmp r3, #0 + 8044dc4: d00f beq.n 8044de6 ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) || - 8044d86: 4b17 ldr r3, [pc, #92] ; (8044de4 ) - 8044d88: 695b ldr r3, [r3, #20] + 8044dc6: 4b17 ldr r3, [pc, #92] ; (8044e24 ) + 8044dc8: 695b ldr r3, [r3, #20] if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 8044d8a: f1b3 3fff cmp.w r3, #4294967295 - 8044d8e: d00a beq.n 8044da6 + 8044dca: f1b3 3fff cmp.w r3, #4294967295 + 8044dce: d00a beq.n 8044de6 ip4_addr_netcmp(ip_2_ip4(&pcb->local_ip), ip4_current_dest_addr(), netif_ip4_netmask(inp))) { - 8044d90: 68fb ldr r3, [r7, #12] - 8044d92: 681a ldr r2, [r3, #0] - 8044d94: 4b13 ldr r3, [pc, #76] ; (8044de4 ) - 8044d96: 695b ldr r3, [r3, #20] - 8044d98: 405a eors r2, r3 - 8044d9a: 68bb ldr r3, [r7, #8] - 8044d9c: 3308 adds r3, #8 - 8044d9e: 681b ldr r3, [r3, #0] - 8044da0: 4013 ands r3, r2 + 8044dd0: 68fb ldr r3, [r7, #12] + 8044dd2: 681a ldr r2, [r3, #0] + 8044dd4: 4b13 ldr r3, [pc, #76] ; (8044e24 ) + 8044dd6: 695b ldr r3, [r3, #20] + 8044dd8: 405a eors r2, r3 + 8044dda: 68bb ldr r3, [r7, #8] + 8044ddc: 3308 adds r3, #8 + 8044dde: 681b ldr r3, [r3, #0] + 8044de0: 4013 ands r3, r2 ((ip4_current_dest_addr()->addr == IPADDR_BROADCAST)) || - 8044da2: 2b00 cmp r3, #0 - 8044da4: d110 bne.n 8044dc8 + 8044de2: 2b00 cmp r3, #0 + 8044de4: d110 bne.n 8044e08 return 1; - 8044da6: 2301 movs r3, #1 - 8044da8: e00f b.n 8044dca + 8044de6: 2301 movs r3, #1 + 8044de8: e00f b.n 8044e0a } } } else #endif /* LWIP_IPV4 */ /* Handle IPv4 and IPv6: all or exact match */ if (ip_addr_isany(&pcb->local_ip) || ip_addr_cmp(&pcb->local_ip, ip_current_dest_addr())) { - 8044daa: 68fb ldr r3, [r7, #12] - 8044dac: 2b00 cmp r3, #0 - 8044dae: d009 beq.n 8044dc4 - 8044db0: 68fb ldr r3, [r7, #12] - 8044db2: 681b ldr r3, [r3, #0] - 8044db4: 2b00 cmp r3, #0 - 8044db6: d005 beq.n 8044dc4 - 8044db8: 68fb ldr r3, [r7, #12] - 8044dba: 681a ldr r2, [r3, #0] - 8044dbc: 4b09 ldr r3, [pc, #36] ; (8044de4 ) - 8044dbe: 695b ldr r3, [r3, #20] - 8044dc0: 429a cmp r2, r3 - 8044dc2: d101 bne.n 8044dc8 + 8044dea: 68fb ldr r3, [r7, #12] + 8044dec: 2b00 cmp r3, #0 + 8044dee: d009 beq.n 8044e04 + 8044df0: 68fb ldr r3, [r7, #12] + 8044df2: 681b ldr r3, [r3, #0] + 8044df4: 2b00 cmp r3, #0 + 8044df6: d005 beq.n 8044e04 + 8044df8: 68fb ldr r3, [r7, #12] + 8044dfa: 681a ldr r2, [r3, #0] + 8044dfc: 4b09 ldr r3, [pc, #36] ; (8044e24 ) + 8044dfe: 695b ldr r3, [r3, #20] + 8044e00: 429a cmp r2, r3 + 8044e02: d101 bne.n 8044e08 return 1; - 8044dc4: 2301 movs r3, #1 - 8044dc6: e000 b.n 8044dca + 8044e04: 2301 movs r3, #1 + 8044e06: e000 b.n 8044e0a } } return 0; - 8044dc8: 2300 movs r3, #0 -} - 8044dca: 4618 mov r0, r3 - 8044dcc: 3710 adds r7, #16 - 8044dce: 46bd mov sp, r7 - 8044dd0: bd80 pop {r7, pc} - 8044dd2: bf00 nop - 8044dd4: 0804c11c .word 0x0804c11c - 8044dd8: 0804c14c .word 0x0804c14c - 8044ddc: 0804c170 .word 0x0804c170 - 8044de0: 0804c198 .word 0x0804c198 - 8044de4: 2400bb4c .word 0x2400bb4c - -08044de8 : + 8044e08: 2300 movs r3, #0 +} + 8044e0a: 4618 mov r0, r3 + 8044e0c: 3710 adds r7, #16 + 8044e0e: 46bd mov sp, r7 + 8044e10: bd80 pop {r7, pc} + 8044e12: bf00 nop + 8044e14: 0804c15c .word 0x0804c15c + 8044e18: 0804c18c .word 0x0804c18c + 8044e1c: 0804c1b0 .word 0x0804c1b0 + 8044e20: 0804c1d8 .word 0x0804c1d8 + 8044e24: 2400bb4c .word 0x2400bb4c + +08044e28 : * @param inp network interface on which the datagram was received. * */ void udp_input(struct pbuf *p, struct netif *inp) { - 8044de8: b590 push {r4, r7, lr} - 8044dea: b08d sub sp, #52 ; 0x34 - 8044dec: af02 add r7, sp, #8 - 8044dee: 6078 str r0, [r7, #4] - 8044df0: 6039 str r1, [r7, #0] + 8044e28: b590 push {r4, r7, lr} + 8044e2a: b08d sub sp, #52 ; 0x34 + 8044e2c: af02 add r7, sp, #8 + 8044e2e: 6078 str r0, [r7, #4] + 8044e30: 6039 str r1, [r7, #0] struct udp_hdr *udphdr; struct udp_pcb *pcb, *prev; struct udp_pcb *uncon_pcb; u16_t src, dest; u8_t broadcast; u8_t for_us = 0; - 8044df2: 2300 movs r3, #0 - 8044df4: 76fb strb r3, [r7, #27] + 8044e32: 2300 movs r3, #0 + 8044e34: 76fb strb r3, [r7, #27] LWIP_UNUSED_ARG(inp); LWIP_ASSERT_CORE_LOCKED(); LWIP_ASSERT("udp_input: invalid pbuf", p != NULL); - 8044df6: 687b ldr r3, [r7, #4] - 8044df8: 2b00 cmp r3, #0 - 8044dfa: d105 bne.n 8044e08 - 8044dfc: 4b7c ldr r3, [pc, #496] ; (8044ff0 ) - 8044dfe: 22cf movs r2, #207 ; 0xcf - 8044e00: 497c ldr r1, [pc, #496] ; (8044ff4 ) - 8044e02: 487d ldr r0, [pc, #500] ; (8044ff8 ) - 8044e04: f003 f8ce bl 8047fa4 + 8044e36: 687b ldr r3, [r7, #4] + 8044e38: 2b00 cmp r3, #0 + 8044e3a: d105 bne.n 8044e48 + 8044e3c: 4b7c ldr r3, [pc, #496] ; (8045030 ) + 8044e3e: 22cf movs r2, #207 ; 0xcf + 8044e40: 497c ldr r1, [pc, #496] ; (8045034 ) + 8044e42: 487d ldr r0, [pc, #500] ; (8045038 ) + 8044e44: f003 f8ce bl 8047fe4 LWIP_ASSERT("udp_input: invalid netif", inp != NULL); - 8044e08: 683b ldr r3, [r7, #0] - 8044e0a: 2b00 cmp r3, #0 - 8044e0c: d105 bne.n 8044e1a - 8044e0e: 4b78 ldr r3, [pc, #480] ; (8044ff0 ) - 8044e10: 22d0 movs r2, #208 ; 0xd0 - 8044e12: 497a ldr r1, [pc, #488] ; (8044ffc ) - 8044e14: 4878 ldr r0, [pc, #480] ; (8044ff8 ) - 8044e16: f003 f8c5 bl 8047fa4 + 8044e48: 683b ldr r3, [r7, #0] + 8044e4a: 2b00 cmp r3, #0 + 8044e4c: d105 bne.n 8044e5a + 8044e4e: 4b78 ldr r3, [pc, #480] ; (8045030 ) + 8044e50: 22d0 movs r2, #208 ; 0xd0 + 8044e52: 497a ldr r1, [pc, #488] ; (804503c ) + 8044e54: 4878 ldr r0, [pc, #480] ; (8045038 ) + 8044e56: f003 f8c5 bl 8047fe4 PERF_START; UDP_STATS_INC(udp.recv); /* Check minimum length (UDP header) */ if (p->len < UDP_HLEN) { - 8044e1a: 687b ldr r3, [r7, #4] - 8044e1c: 895b ldrh r3, [r3, #10] - 8044e1e: 2b07 cmp r3, #7 - 8044e20: d803 bhi.n 8044e2a + 8044e5a: 687b ldr r3, [r7, #4] + 8044e5c: 895b ldrh r3, [r3, #10] + 8044e5e: 2b07 cmp r3, #7 + 8044e60: d803 bhi.n 8044e6a LWIP_DEBUGF(UDP_DEBUG, ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len)); UDP_STATS_INC(udp.lenerr); UDP_STATS_INC(udp.drop); MIB2_STATS_INC(mib2.udpinerrors); pbuf_free(p); - 8044e22: 6878 ldr r0, [r7, #4] - 8044e24: f7f9 fd04 bl 803e830 + 8044e62: 6878 ldr r0, [r7, #4] + 8044e64: f7f9 fd04 bl 803e870 goto end; - 8044e28: e0de b.n 8044fe8 + 8044e68: e0de b.n 8045028 } udphdr = (struct udp_hdr *)p->payload; - 8044e2a: 687b ldr r3, [r7, #4] - 8044e2c: 685b ldr r3, [r3, #4] - 8044e2e: 617b str r3, [r7, #20] + 8044e6a: 687b ldr r3, [r7, #4] + 8044e6c: 685b ldr r3, [r3, #4] + 8044e6e: 617b str r3, [r7, #20] /* is broadcast packet ? */ broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), ip_current_netif()); - 8044e30: 4b73 ldr r3, [pc, #460] ; (8045000 ) - 8044e32: 695b ldr r3, [r3, #20] - 8044e34: 4a72 ldr r2, [pc, #456] ; (8045000 ) - 8044e36: 6812 ldr r2, [r2, #0] - 8044e38: 4611 mov r1, r2 - 8044e3a: 4618 mov r0, r3 - 8044e3c: f002 f808 bl 8046e50 - 8044e40: 4603 mov r3, r0 - 8044e42: 74fb strb r3, [r7, #19] + 8044e70: 4b73 ldr r3, [pc, #460] ; (8045040 ) + 8044e72: 695b ldr r3, [r3, #20] + 8044e74: 4a72 ldr r2, [pc, #456] ; (8045040 ) + 8044e76: 6812 ldr r2, [r2, #0] + 8044e78: 4611 mov r1, r2 + 8044e7a: 4618 mov r0, r3 + 8044e7c: f002 f808 bl 8046e90 + 8044e80: 4603 mov r3, r0 + 8044e82: 74fb strb r3, [r7, #19] LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len)); /* convert src and dest ports to host byte order */ src = lwip_ntohs(udphdr->src); - 8044e44: 697b ldr r3, [r7, #20] - 8044e46: 881b ldrh r3, [r3, #0] - 8044e48: b29b uxth r3, r3 - 8044e4a: 4618 mov r0, r3 - 8044e4c: f7f8 f8be bl 803cfcc - 8044e50: 4603 mov r3, r0 - 8044e52: 823b strh r3, [r7, #16] + 8044e84: 697b ldr r3, [r7, #20] + 8044e86: 881b ldrh r3, [r3, #0] + 8044e88: b29b uxth r3, r3 + 8044e8a: 4618 mov r0, r3 + 8044e8c: f7f8 f8be bl 803d00c + 8044e90: 4603 mov r3, r0 + 8044e92: 823b strh r3, [r7, #16] dest = lwip_ntohs(udphdr->dest); - 8044e54: 697b ldr r3, [r7, #20] - 8044e56: 885b ldrh r3, [r3, #2] - 8044e58: b29b uxth r3, r3 - 8044e5a: 4618 mov r0, r3 - 8044e5c: f7f8 f8b6 bl 803cfcc - 8044e60: 4603 mov r3, r0 - 8044e62: 81fb strh r3, [r7, #14] + 8044e94: 697b ldr r3, [r7, #20] + 8044e96: 885b ldrh r3, [r3, #2] + 8044e98: b29b uxth r3, r3 + 8044e9a: 4618 mov r0, r3 + 8044e9c: f7f8 f8b6 bl 803d00c + 8044ea0: 4603 mov r3, r0 + 8044ea2: 81fb strh r3, [r7, #14] ip_addr_debug_print_val(UDP_DEBUG, *ip_current_dest_addr()); LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", lwip_ntohs(udphdr->dest))); ip_addr_debug_print_val(UDP_DEBUG, *ip_current_src_addr()); LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", lwip_ntohs(udphdr->src))); pcb = NULL; - 8044e64: 2300 movs r3, #0 - 8044e66: 627b str r3, [r7, #36] ; 0x24 + 8044ea4: 2300 movs r3, #0 + 8044ea6: 627b str r3, [r7, #36] ; 0x24 prev = NULL; - 8044e68: 2300 movs r3, #0 - 8044e6a: 623b str r3, [r7, #32] + 8044ea8: 2300 movs r3, #0 + 8044eaa: 623b str r3, [r7, #32] uncon_pcb = NULL; - 8044e6c: 2300 movs r3, #0 - 8044e6e: 61fb str r3, [r7, #28] + 8044eac: 2300 movs r3, #0 + 8044eae: 61fb str r3, [r7, #28] /* Iterate through the UDP pcb list for a matching pcb. * 'Perfect match' pcbs (connected to the remote port & ip address) are * preferred. If no perfect match is found, the first unconnected pcb that * matches the local port and ip address gets the datagram. */ for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 8044e70: 4b64 ldr r3, [pc, #400] ; (8045004 ) - 8044e72: 681b ldr r3, [r3, #0] - 8044e74: 627b str r3, [r7, #36] ; 0x24 - 8044e76: e054 b.n 8044f22 + 8044eb0: 4b64 ldr r3, [pc, #400] ; (8045044 ) + 8044eb2: 681b ldr r3, [r3, #0] + 8044eb4: 627b str r3, [r7, #36] ; 0x24 + 8044eb6: e054 b.n 8044f62 LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", pcb->local_port)); ip_addr_debug_print_val(UDP_DEBUG, pcb->remote_ip); LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", pcb->remote_port)); /* compare PCB local addr+port to UDP destination addr+port */ if ((pcb->local_port == dest) && - 8044e78: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044e7a: 8a5b ldrh r3, [r3, #18] - 8044e7c: 89fa ldrh r2, [r7, #14] - 8044e7e: 429a cmp r2, r3 - 8044e80: d14a bne.n 8044f18 + 8044eb8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044eba: 8a5b ldrh r3, [r3, #18] + 8044ebc: 89fa ldrh r2, [r7, #14] + 8044ebe: 429a cmp r2, r3 + 8044ec0: d14a bne.n 8044f58 (udp_input_local_match(pcb, inp, broadcast) != 0)) { - 8044e82: 7cfb ldrb r3, [r7, #19] - 8044e84: 461a mov r2, r3 - 8044e86: 6839 ldr r1, [r7, #0] - 8044e88: 6a78 ldr r0, [r7, #36] ; 0x24 - 8044e8a: f7ff ff49 bl 8044d20 - 8044e8e: 4603 mov r3, r0 + 8044ec2: 7cfb ldrb r3, [r7, #19] + 8044ec4: 461a mov r2, r3 + 8044ec6: 6839 ldr r1, [r7, #0] + 8044ec8: 6a78 ldr r0, [r7, #36] ; 0x24 + 8044eca: f7ff ff49 bl 8044d60 + 8044ece: 4603 mov r3, r0 if ((pcb->local_port == dest) && - 8044e90: 2b00 cmp r3, #0 - 8044e92: d041 beq.n 8044f18 + 8044ed0: 2b00 cmp r3, #0 + 8044ed2: d041 beq.n 8044f58 if ((pcb->flags & UDP_FLAGS_CONNECTED) == 0) { - 8044e94: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044e96: 7c1b ldrb r3, [r3, #16] - 8044e98: f003 0304 and.w r3, r3, #4 - 8044e9c: 2b00 cmp r3, #0 - 8044e9e: d11d bne.n 8044edc + 8044ed4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044ed6: 7c1b ldrb r3, [r3, #16] + 8044ed8: f003 0304 and.w r3, r3, #4 + 8044edc: 2b00 cmp r3, #0 + 8044ede: d11d bne.n 8044f1c if (uncon_pcb == NULL) { - 8044ea0: 69fb ldr r3, [r7, #28] - 8044ea2: 2b00 cmp r3, #0 - 8044ea4: d102 bne.n 8044eac + 8044ee0: 69fb ldr r3, [r7, #28] + 8044ee2: 2b00 cmp r3, #0 + 8044ee4: d102 bne.n 8044eec /* the first unconnected matching PCB */ uncon_pcb = pcb; - 8044ea6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044ea8: 61fb str r3, [r7, #28] - 8044eaa: e017 b.n 8044edc + 8044ee6: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044ee8: 61fb str r3, [r7, #28] + 8044eea: e017 b.n 8044f1c #if LWIP_IPV4 } else if (broadcast && ip4_current_dest_addr()->addr == IPADDR_BROADCAST) { - 8044eac: 7cfb ldrb r3, [r7, #19] - 8044eae: 2b00 cmp r3, #0 - 8044eb0: d014 beq.n 8044edc - 8044eb2: 4b53 ldr r3, [pc, #332] ; (8045000 ) - 8044eb4: 695b ldr r3, [r3, #20] - 8044eb6: f1b3 3fff cmp.w r3, #4294967295 - 8044eba: d10f bne.n 8044edc + 8044eec: 7cfb ldrb r3, [r7, #19] + 8044eee: 2b00 cmp r3, #0 + 8044ef0: d014 beq.n 8044f1c + 8044ef2: 4b53 ldr r3, [pc, #332] ; (8045040 ) + 8044ef4: 695b ldr r3, [r3, #20] + 8044ef6: f1b3 3fff cmp.w r3, #4294967295 + 8044efa: d10f bne.n 8044f1c /* global broadcast address (only valid for IPv4; match was checked before) */ if (!IP_IS_V4_VAL(uncon_pcb->local_ip) || !ip4_addr_cmp(ip_2_ip4(&uncon_pcb->local_ip), netif_ip4_addr(inp))) { - 8044ebc: 69fb ldr r3, [r7, #28] - 8044ebe: 681a ldr r2, [r3, #0] - 8044ec0: 683b ldr r3, [r7, #0] - 8044ec2: 3304 adds r3, #4 - 8044ec4: 681b ldr r3, [r3, #0] - 8044ec6: 429a cmp r2, r3 - 8044ec8: d008 beq.n 8044edc + 8044efc: 69fb ldr r3, [r7, #28] + 8044efe: 681a ldr r2, [r3, #0] + 8044f00: 683b ldr r3, [r7, #0] + 8044f02: 3304 adds r3, #4 + 8044f04: 681b ldr r3, [r3, #0] + 8044f06: 429a cmp r2, r3 + 8044f08: d008 beq.n 8044f1c /* uncon_pcb does not match the input netif, check this pcb */ if (IP_IS_V4_VAL(pcb->local_ip) && ip4_addr_cmp(ip_2_ip4(&pcb->local_ip), netif_ip4_addr(inp))) { - 8044eca: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044ecc: 681a ldr r2, [r3, #0] - 8044ece: 683b ldr r3, [r7, #0] - 8044ed0: 3304 adds r3, #4 - 8044ed2: 681b ldr r3, [r3, #0] - 8044ed4: 429a cmp r2, r3 - 8044ed6: d101 bne.n 8044edc + 8044f0a: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f0c: 681a ldr r2, [r3, #0] + 8044f0e: 683b ldr r3, [r7, #0] + 8044f10: 3304 adds r3, #4 + 8044f12: 681b ldr r3, [r3, #0] + 8044f14: 429a cmp r2, r3 + 8044f16: d101 bne.n 8044f1c /* better match */ uncon_pcb = pcb; - 8044ed8: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044eda: 61fb str r3, [r7, #28] + 8044f18: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f1a: 61fb str r3, [r7, #28] } #endif /* SO_REUSE */ } /* compare PCB remote addr+port to UDP source addr+port */ if ((pcb->remote_port == src) && - 8044edc: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044ede: 8a9b ldrh r3, [r3, #20] - 8044ee0: 8a3a ldrh r2, [r7, #16] - 8044ee2: 429a cmp r2, r3 - 8044ee4: d118 bne.n 8044f18 + 8044f1c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f1e: 8a9b ldrh r3, [r3, #20] + 8044f20: 8a3a ldrh r2, [r7, #16] + 8044f22: 429a cmp r2, r3 + 8044f24: d118 bne.n 8044f58 (ip_addr_isany_val(pcb->remote_ip) || - 8044ee6: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044ee8: 685b ldr r3, [r3, #4] + 8044f26: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f28: 685b ldr r3, [r3, #4] if ((pcb->remote_port == src) && - 8044eea: 2b00 cmp r3, #0 - 8044eec: d005 beq.n 8044efa + 8044f2a: 2b00 cmp r3, #0 + 8044f2c: d005 beq.n 8044f3a ip_addr_cmp(&pcb->remote_ip, ip_current_src_addr()))) { - 8044eee: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044ef0: 685a ldr r2, [r3, #4] - 8044ef2: 4b43 ldr r3, [pc, #268] ; (8045000 ) - 8044ef4: 691b ldr r3, [r3, #16] + 8044f2e: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f30: 685a ldr r2, [r3, #4] + 8044f32: 4b43 ldr r3, [pc, #268] ; (8045040 ) + 8044f34: 691b ldr r3, [r3, #16] (ip_addr_isany_val(pcb->remote_ip) || - 8044ef6: 429a cmp r2, r3 - 8044ef8: d10e bne.n 8044f18 + 8044f36: 429a cmp r2, r3 + 8044f38: d10e bne.n 8044f58 /* the first fully matching PCB */ if (prev != NULL) { - 8044efa: 6a3b ldr r3, [r7, #32] - 8044efc: 2b00 cmp r3, #0 - 8044efe: d014 beq.n 8044f2a + 8044f3a: 6a3b ldr r3, [r7, #32] + 8044f3c: 2b00 cmp r3, #0 + 8044f3e: d014 beq.n 8044f6a /* move the pcb to the front of udp_pcbs so that is found faster next time */ prev->next = pcb->next; - 8044f00: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f02: 68da ldr r2, [r3, #12] - 8044f04: 6a3b ldr r3, [r7, #32] - 8044f06: 60da str r2, [r3, #12] + 8044f40: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f42: 68da ldr r2, [r3, #12] + 8044f44: 6a3b ldr r3, [r7, #32] + 8044f46: 60da str r2, [r3, #12] pcb->next = udp_pcbs; - 8044f08: 4b3e ldr r3, [pc, #248] ; (8045004 ) - 8044f0a: 681a ldr r2, [r3, #0] - 8044f0c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f0e: 60da str r2, [r3, #12] + 8044f48: 4b3e ldr r3, [pc, #248] ; (8045044 ) + 8044f4a: 681a ldr r2, [r3, #0] + 8044f4c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f4e: 60da str r2, [r3, #12] udp_pcbs = pcb; - 8044f10: 4a3c ldr r2, [pc, #240] ; (8045004 ) - 8044f12: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f14: 6013 str r3, [r2, #0] + 8044f50: 4a3c ldr r2, [pc, #240] ; (8045044 ) + 8044f52: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f54: 6013 str r3, [r2, #0] } else { UDP_STATS_INC(udp.cachehit); } break; - 8044f16: e008 b.n 8044f2a + 8044f56: e008 b.n 8044f6a } } prev = pcb; - 8044f18: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f1a: 623b str r3, [r7, #32] + 8044f58: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f5a: 623b str r3, [r7, #32] for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - 8044f1c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f1e: 68db ldr r3, [r3, #12] - 8044f20: 627b str r3, [r7, #36] ; 0x24 - 8044f22: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f24: 2b00 cmp r3, #0 - 8044f26: d1a7 bne.n 8044e78 - 8044f28: e000 b.n 8044f2c + 8044f5c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f5e: 68db ldr r3, [r3, #12] + 8044f60: 627b str r3, [r7, #36] ; 0x24 + 8044f62: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f64: 2b00 cmp r3, #0 + 8044f66: d1a7 bne.n 8044eb8 + 8044f68: e000 b.n 8044f6c break; - 8044f2a: bf00 nop + 8044f6a: bf00 nop } /* no fully matching pcb found? then look for an unconnected pcb */ if (pcb == NULL) { - 8044f2c: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f2e: 2b00 cmp r3, #0 - 8044f30: d101 bne.n 8044f36 + 8044f6c: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f6e: 2b00 cmp r3, #0 + 8044f70: d101 bne.n 8044f76 pcb = uncon_pcb; - 8044f32: 69fb ldr r3, [r7, #28] - 8044f34: 627b str r3, [r7, #36] ; 0x24 + 8044f72: 69fb ldr r3, [r7, #28] + 8044f74: 627b str r3, [r7, #36] ; 0x24 } /* Check checksum if this is a match or if it was directed at us. */ if (pcb != NULL) { - 8044f36: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f38: 2b00 cmp r3, #0 - 8044f3a: d002 beq.n 8044f42 + 8044f76: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044f78: 2b00 cmp r3, #0 + 8044f7a: d002 beq.n 8044f82 for_us = 1; - 8044f3c: 2301 movs r3, #1 - 8044f3e: 76fb strb r3, [r7, #27] - 8044f40: e00a b.n 8044f58 + 8044f7c: 2301 movs r3, #1 + 8044f7e: 76fb strb r3, [r7, #27] + 8044f80: e00a b.n 8044f98 for_us = netif_get_ip6_addr_match(inp, ip6_current_dest_addr()) >= 0; } #endif /* LWIP_IPV6 */ #if LWIP_IPV4 if (!ip_current_is_v6()) { for_us = ip4_addr_cmp(netif_ip4_addr(inp), ip4_current_dest_addr()); - 8044f42: 683b ldr r3, [r7, #0] - 8044f44: 3304 adds r3, #4 - 8044f46: 681a ldr r2, [r3, #0] - 8044f48: 4b2d ldr r3, [pc, #180] ; (8045000 ) - 8044f4a: 695b ldr r3, [r3, #20] - 8044f4c: 429a cmp r2, r3 - 8044f4e: bf0c ite eq - 8044f50: 2301 moveq r3, #1 - 8044f52: 2300 movne r3, #0 - 8044f54: b2db uxtb r3, r3 - 8044f56: 76fb strb r3, [r7, #27] + 8044f82: 683b ldr r3, [r7, #0] + 8044f84: 3304 adds r3, #4 + 8044f86: 681a ldr r2, [r3, #0] + 8044f88: 4b2d ldr r3, [pc, #180] ; (8045040 ) + 8044f8a: 695b ldr r3, [r3, #20] + 8044f8c: 429a cmp r2, r3 + 8044f8e: bf0c ite eq + 8044f90: 2301 moveq r3, #1 + 8044f92: 2300 movne r3, #0 + 8044f94: b2db uxtb r3, r3 + 8044f96: 76fb strb r3, [r7, #27] } #endif /* LWIP_IPV4 */ } if (for_us) { - 8044f58: 7efb ldrb r3, [r7, #27] - 8044f5a: 2b00 cmp r3, #0 - 8044f5c: d041 beq.n 8044fe2 + 8044f98: 7efb ldrb r3, [r7, #27] + 8044f9a: 2b00 cmp r3, #0 + 8044f9c: d041 beq.n 8045022 } } } } #endif /* CHECKSUM_CHECK_UDP */ if (pbuf_remove_header(p, UDP_HLEN)) { - 8044f5e: 2108 movs r1, #8 - 8044f60: 6878 ldr r0, [r7, #4] - 8044f62: f7f9 fbdf bl 803e724 - 8044f66: 4603 mov r3, r0 - 8044f68: 2b00 cmp r3, #0 - 8044f6a: d00a beq.n 8044f82 + 8044f9e: 2108 movs r1, #8 + 8044fa0: 6878 ldr r0, [r7, #4] + 8044fa2: f7f9 fbdf bl 803e764 + 8044fa6: 4603 mov r3, r0 + 8044fa8: 2b00 cmp r3, #0 + 8044faa: d00a beq.n 8044fc2 /* Can we cope with this failing? Just assert for now */ LWIP_ASSERT("pbuf_remove_header failed\n", 0); - 8044f6c: 4b20 ldr r3, [pc, #128] ; (8044ff0 ) - 8044f6e: f44f 72b8 mov.w r2, #368 ; 0x170 - 8044f72: 4925 ldr r1, [pc, #148] ; (8045008 ) - 8044f74: 4820 ldr r0, [pc, #128] ; (8044ff8 ) - 8044f76: f003 f815 bl 8047fa4 + 8044fac: 4b20 ldr r3, [pc, #128] ; (8045030 ) + 8044fae: f44f 72b8 mov.w r2, #368 ; 0x170 + 8044fb2: 4925 ldr r1, [pc, #148] ; (8045048 ) + 8044fb4: 4820 ldr r0, [pc, #128] ; (8045038 ) + 8044fb6: f003 f815 bl 8047fe4 UDP_STATS_INC(udp.drop); MIB2_STATS_INC(mib2.udpinerrors); pbuf_free(p); - 8044f7a: 6878 ldr r0, [r7, #4] - 8044f7c: f7f9 fc58 bl 803e830 + 8044fba: 6878 ldr r0, [r7, #4] + 8044fbc: f7f9 fc58 bl 803e870 goto end; - 8044f80: e032 b.n 8044fe8 + 8044fc0: e032 b.n 8045028 } if (pcb != NULL) { - 8044f82: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f84: 2b00 cmp r3, #0 - 8044f86: d012 beq.n 8044fae + 8044fc2: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044fc4: 2b00 cmp r3, #0 + 8044fc6: d012 beq.n 8044fee } } } #endif /* SO_REUSE && SO_REUSE_RXTOALL */ /* callback */ if (pcb->recv != NULL) { - 8044f88: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f8a: 699b ldr r3, [r3, #24] - 8044f8c: 2b00 cmp r3, #0 - 8044f8e: d00a beq.n 8044fa6 + 8044fc8: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044fca: 699b ldr r3, [r3, #24] + 8044fcc: 2b00 cmp r3, #0 + 8044fce: d00a beq.n 8044fe6 /* now the recv function is responsible for freeing p */ pcb->recv(pcb->recv_arg, pcb, p, ip_current_src_addr(), src); - 8044f90: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f92: 699c ldr r4, [r3, #24] - 8044f94: 6a7b ldr r3, [r7, #36] ; 0x24 - 8044f96: 69d8 ldr r0, [r3, #28] - 8044f98: 8a3b ldrh r3, [r7, #16] - 8044f9a: 9300 str r3, [sp, #0] - 8044f9c: 4b1b ldr r3, [pc, #108] ; (804500c ) - 8044f9e: 687a ldr r2, [r7, #4] - 8044fa0: 6a79 ldr r1, [r7, #36] ; 0x24 - 8044fa2: 47a0 blx r4 + 8044fd0: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044fd2: 699c ldr r4, [r3, #24] + 8044fd4: 6a7b ldr r3, [r7, #36] ; 0x24 + 8044fd6: 69d8 ldr r0, [r3, #28] + 8044fd8: 8a3b ldrh r3, [r7, #16] + 8044fda: 9300 str r3, [sp, #0] + 8044fdc: 4b1b ldr r3, [pc, #108] ; (804504c ) + 8044fde: 687a ldr r2, [r7, #4] + 8044fe0: 6a79 ldr r1, [r7, #36] ; 0x24 + 8044fe2: 47a0 blx r4 } else { pbuf_free(p); } end: PERF_STOP("udp_input"); return; - 8044fa4: e021 b.n 8044fea + 8044fe4: e021 b.n 804502a pbuf_free(p); - 8044fa6: 6878 ldr r0, [r7, #4] - 8044fa8: f7f9 fc42 bl 803e830 + 8044fe6: 6878 ldr r0, [r7, #4] + 8044fe8: f7f9 fc42 bl 803e870 goto end; - 8044fac: e01c b.n 8044fe8 + 8044fec: e01c b.n 8045028 if (!broadcast && !ip_addr_ismulticast(ip_current_dest_addr())) { - 8044fae: 7cfb ldrb r3, [r7, #19] - 8044fb0: 2b00 cmp r3, #0 - 8044fb2: d112 bne.n 8044fda - 8044fb4: 4b12 ldr r3, [pc, #72] ; (8045000 ) - 8044fb6: 695b ldr r3, [r3, #20] - 8044fb8: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8044fbc: 2be0 cmp r3, #224 ; 0xe0 - 8044fbe: d00c beq.n 8044fda + 8044fee: 7cfb ldrb r3, [r7, #19] + 8044ff0: 2b00 cmp r3, #0 + 8044ff2: d112 bne.n 804501a + 8044ff4: 4b12 ldr r3, [pc, #72] ; (8045040 ) + 8044ff6: 695b ldr r3, [r3, #20] + 8044ff8: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8044ffc: 2be0 cmp r3, #224 ; 0xe0 + 8044ffe: d00c beq.n 804501a pbuf_header_force(p, (s16_t)(ip_current_header_tot_len() + UDP_HLEN)); - 8044fc0: 4b0f ldr r3, [pc, #60] ; (8045000 ) - 8044fc2: 899b ldrh r3, [r3, #12] - 8044fc4: 3308 adds r3, #8 - 8044fc6: b29b uxth r3, r3 - 8044fc8: b21b sxth r3, r3 - 8044fca: 4619 mov r1, r3 - 8044fcc: 6878 ldr r0, [r7, #4] - 8044fce: f7f9 fc1c bl 803e80a + 8045000: 4b0f ldr r3, [pc, #60] ; (8045040 ) + 8045002: 899b ldrh r3, [r3, #12] + 8045004: 3308 adds r3, #8 + 8045006: b29b uxth r3, r3 + 8045008: b21b sxth r3, r3 + 804500a: 4619 mov r1, r3 + 804500c: 6878 ldr r0, [r7, #4] + 804500e: f7f9 fc1c bl 803e84a icmp_port_unreach(ip_current_is_v6(), p); - 8044fd2: 2103 movs r1, #3 - 8044fd4: 6878 ldr r0, [r7, #4] - 8044fd6: f001 fc11 bl 80467fc + 8045012: 2103 movs r1, #3 + 8045014: 6878 ldr r0, [r7, #4] + 8045016: f001 fc11 bl 804683c pbuf_free(p); - 8044fda: 6878 ldr r0, [r7, #4] - 8044fdc: f7f9 fc28 bl 803e830 + 804501a: 6878 ldr r0, [r7, #4] + 804501c: f7f9 fc28 bl 803e870 return; - 8044fe0: e003 b.n 8044fea + 8045020: e003 b.n 804502a pbuf_free(p); - 8044fe2: 6878 ldr r0, [r7, #4] - 8044fe4: f7f9 fc24 bl 803e830 + 8045022: 6878 ldr r0, [r7, #4] + 8045024: f7f9 fc24 bl 803e870 return; - 8044fe8: bf00 nop + 8045028: bf00 nop UDP_STATS_INC(udp.drop); MIB2_STATS_INC(mib2.udpinerrors); pbuf_free(p); PERF_STOP("udp_input"); #endif /* CHECKSUM_CHECK_UDP */ } - 8044fea: 372c adds r7, #44 ; 0x2c - 8044fec: 46bd mov sp, r7 - 8044fee: bd90 pop {r4, r7, pc} - 8044ff0: 0804c11c .word 0x0804c11c - 8044ff4: 0804c1c0 .word 0x0804c1c0 - 8044ff8: 0804c170 .word 0x0804c170 - 8044ffc: 0804c1d8 .word 0x0804c1d8 - 8045000: 2400bb4c .word 0x2400bb4c - 8045004: 2400eb44 .word 0x2400eb44 - 8045008: 0804c1f4 .word 0x0804c1f4 - 804500c: 2400bb5c .word 0x2400bb5c - -08045010 : + 804502a: 372c adds r7, #44 ; 0x2c + 804502c: 46bd mov sp, r7 + 804502e: bd90 pop {r4, r7, pc} + 8045030: 0804c15c .word 0x0804c15c + 8045034: 0804c200 .word 0x0804c200 + 8045038: 0804c1b0 .word 0x0804c1b0 + 804503c: 0804c218 .word 0x0804c218 + 8045040: 2400bb4c .word 0x2400bb4c + 8045044: 2400eb44 .word 0x2400eb44 + 8045048: 0804c234 .word 0x0804c234 + 804504c: 2400bb5c .word 0x2400bb5c + +08045050 : * * @see udp_disconnect() udp_sendto() */ err_t udp_send(struct udp_pcb *pcb, struct pbuf *p) { - 8045010: b580 push {r7, lr} - 8045012: b082 sub sp, #8 - 8045014: af00 add r7, sp, #0 - 8045016: 6078 str r0, [r7, #4] - 8045018: 6039 str r1, [r7, #0] + 8045050: b580 push {r7, lr} + 8045052: b082 sub sp, #8 + 8045054: af00 add r7, sp, #0 + 8045056: 6078 str r0, [r7, #4] + 8045058: 6039 str r1, [r7, #0] LWIP_ERROR("udp_send: invalid pcb", pcb != NULL, return ERR_ARG); - 804501a: 687b ldr r3, [r7, #4] - 804501c: 2b00 cmp r3, #0 - 804501e: d109 bne.n 8045034 - 8045020: 4b11 ldr r3, [pc, #68] ; (8045068 ) - 8045022: f240 12d5 movw r2, #469 ; 0x1d5 - 8045026: 4911 ldr r1, [pc, #68] ; (804506c ) - 8045028: 4811 ldr r0, [pc, #68] ; (8045070 ) - 804502a: f002 ffbb bl 8047fa4 - 804502e: f06f 030f mvn.w r3, #15 - 8045032: e015 b.n 8045060 + 804505a: 687b ldr r3, [r7, #4] + 804505c: 2b00 cmp r3, #0 + 804505e: d109 bne.n 8045074 + 8045060: 4b11 ldr r3, [pc, #68] ; (80450a8 ) + 8045062: f240 12d5 movw r2, #469 ; 0x1d5 + 8045066: 4911 ldr r1, [pc, #68] ; (80450ac ) + 8045068: 4811 ldr r0, [pc, #68] ; (80450b0 ) + 804506a: f002 ffbb bl 8047fe4 + 804506e: f06f 030f mvn.w r3, #15 + 8045072: e015 b.n 80450a0 LWIP_ERROR("udp_send: invalid pbuf", p != NULL, return ERR_ARG); - 8045034: 683b ldr r3, [r7, #0] - 8045036: 2b00 cmp r3, #0 - 8045038: d109 bne.n 804504e - 804503a: 4b0b ldr r3, [pc, #44] ; (8045068 ) - 804503c: f44f 72eb mov.w r2, #470 ; 0x1d6 - 8045040: 490c ldr r1, [pc, #48] ; (8045074 ) - 8045042: 480b ldr r0, [pc, #44] ; (8045070 ) - 8045044: f002 ffae bl 8047fa4 - 8045048: f06f 030f mvn.w r3, #15 - 804504c: e008 b.n 8045060 + 8045074: 683b ldr r3, [r7, #0] + 8045076: 2b00 cmp r3, #0 + 8045078: d109 bne.n 804508e + 804507a: 4b0b ldr r3, [pc, #44] ; (80450a8 ) + 804507c: f44f 72eb mov.w r2, #470 ; 0x1d6 + 8045080: 490c ldr r1, [pc, #48] ; (80450b4 ) + 8045082: 480b ldr r0, [pc, #44] ; (80450b0 ) + 8045084: f002 ffae bl 8047fe4 + 8045088: f06f 030f mvn.w r3, #15 + 804508c: e008 b.n 80450a0 if (IP_IS_ANY_TYPE_VAL(pcb->remote_ip)) { return ERR_VAL; } /* send to the packet using remote ip and port stored in the pcb */ return udp_sendto(pcb, p, &pcb->remote_ip, pcb->remote_port); - 804504e: 687b ldr r3, [r7, #4] - 8045050: 1d1a adds r2, r3, #4 - 8045052: 687b ldr r3, [r7, #4] - 8045054: 8a9b ldrh r3, [r3, #20] - 8045056: 6839 ldr r1, [r7, #0] - 8045058: 6878 ldr r0, [r7, #4] - 804505a: f000 f80d bl 8045078 - 804505e: 4603 mov r3, r0 -} - 8045060: 4618 mov r0, r3 - 8045062: 3708 adds r7, #8 - 8045064: 46bd mov sp, r7 - 8045066: bd80 pop {r7, pc} - 8045068: 0804c11c .word 0x0804c11c - 804506c: 0804c210 .word 0x0804c210 - 8045070: 0804c170 .word 0x0804c170 - 8045074: 0804c228 .word 0x0804c228 - -08045078 : + 804508e: 687b ldr r3, [r7, #4] + 8045090: 1d1a adds r2, r3, #4 + 8045092: 687b ldr r3, [r7, #4] + 8045094: 8a9b ldrh r3, [r3, #20] + 8045096: 6839 ldr r1, [r7, #0] + 8045098: 6878 ldr r0, [r7, #4] + 804509a: f000 f80d bl 80450b8 + 804509e: 4603 mov r3, r0 +} + 80450a0: 4618 mov r0, r3 + 80450a2: 3708 adds r7, #8 + 80450a4: 46bd mov sp, r7 + 80450a6: bd80 pop {r7, pc} + 80450a8: 0804c15c .word 0x0804c15c + 80450ac: 0804c250 .word 0x0804c250 + 80450b0: 0804c1b0 .word 0x0804c1b0 + 80450b4: 0804c268 .word 0x0804c268 + +080450b8 : * @see udp_disconnect() udp_send() */ err_t udp_sendto(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port) { - 8045078: b580 push {r7, lr} - 804507a: b088 sub sp, #32 - 804507c: af02 add r7, sp, #8 - 804507e: 60f8 str r0, [r7, #12] - 8045080: 60b9 str r1, [r7, #8] - 8045082: 607a str r2, [r7, #4] - 8045084: 807b strh r3, [r7, #2] + 80450b8: b580 push {r7, lr} + 80450ba: b088 sub sp, #32 + 80450bc: af02 add r7, sp, #8 + 80450be: 60f8 str r0, [r7, #12] + 80450c0: 60b9 str r1, [r7, #8] + 80450c2: 607a str r2, [r7, #4] + 80450c4: 807b strh r3, [r7, #2] u16_t dst_port, u8_t have_chksum, u16_t chksum) { #endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ struct netif *netif; LWIP_ERROR("udp_sendto: invalid pcb", pcb != NULL, return ERR_ARG); - 8045086: 68fb ldr r3, [r7, #12] - 8045088: 2b00 cmp r3, #0 - 804508a: d109 bne.n 80450a0 - 804508c: 4b23 ldr r3, [pc, #140] ; (804511c ) - 804508e: f44f 7206 mov.w r2, #536 ; 0x218 - 8045092: 4923 ldr r1, [pc, #140] ; (8045120 ) - 8045094: 4823 ldr r0, [pc, #140] ; (8045124 ) - 8045096: f002 ff85 bl 8047fa4 - 804509a: f06f 030f mvn.w r3, #15 - 804509e: e038 b.n 8045112 + 80450c6: 68fb ldr r3, [r7, #12] + 80450c8: 2b00 cmp r3, #0 + 80450ca: d109 bne.n 80450e0 + 80450cc: 4b23 ldr r3, [pc, #140] ; (804515c ) + 80450ce: f44f 7206 mov.w r2, #536 ; 0x218 + 80450d2: 4923 ldr r1, [pc, #140] ; (8045160 ) + 80450d4: 4823 ldr r0, [pc, #140] ; (8045164 ) + 80450d6: f002 ff85 bl 8047fe4 + 80450da: f06f 030f mvn.w r3, #15 + 80450de: e038 b.n 8045152 LWIP_ERROR("udp_sendto: invalid pbuf", p != NULL, return ERR_ARG); - 80450a0: 68bb ldr r3, [r7, #8] - 80450a2: 2b00 cmp r3, #0 - 80450a4: d109 bne.n 80450ba - 80450a6: 4b1d ldr r3, [pc, #116] ; (804511c ) - 80450a8: f240 2219 movw r2, #537 ; 0x219 - 80450ac: 491e ldr r1, [pc, #120] ; (8045128 ) - 80450ae: 481d ldr r0, [pc, #116] ; (8045124 ) - 80450b0: f002 ff78 bl 8047fa4 - 80450b4: f06f 030f mvn.w r3, #15 - 80450b8: e02b b.n 8045112 + 80450e0: 68bb ldr r3, [r7, #8] + 80450e2: 2b00 cmp r3, #0 + 80450e4: d109 bne.n 80450fa + 80450e6: 4b1d ldr r3, [pc, #116] ; (804515c ) + 80450e8: f240 2219 movw r2, #537 ; 0x219 + 80450ec: 491e ldr r1, [pc, #120] ; (8045168 ) + 80450ee: 481d ldr r0, [pc, #116] ; (8045164 ) + 80450f0: f002 ff78 bl 8047fe4 + 80450f4: f06f 030f mvn.w r3, #15 + 80450f8: e02b b.n 8045152 LWIP_ERROR("udp_sendto: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 80450ba: 687b ldr r3, [r7, #4] - 80450bc: 2b00 cmp r3, #0 - 80450be: d109 bne.n 80450d4 - 80450c0: 4b16 ldr r3, [pc, #88] ; (804511c ) - 80450c2: f240 221a movw r2, #538 ; 0x21a - 80450c6: 4919 ldr r1, [pc, #100] ; (804512c ) - 80450c8: 4816 ldr r0, [pc, #88] ; (8045124 ) - 80450ca: f002 ff6b bl 8047fa4 - 80450ce: f06f 030f mvn.w r3, #15 - 80450d2: e01e b.n 8045112 + 80450fa: 687b ldr r3, [r7, #4] + 80450fc: 2b00 cmp r3, #0 + 80450fe: d109 bne.n 8045114 + 8045100: 4b16 ldr r3, [pc, #88] ; (804515c ) + 8045102: f240 221a movw r2, #538 ; 0x21a + 8045106: 4919 ldr r1, [pc, #100] ; (804516c ) + 8045108: 4816 ldr r0, [pc, #88] ; (8045164 ) + 804510a: f002 ff6b bl 8047fe4 + 804510e: f06f 030f mvn.w r3, #15 + 8045112: e01e b.n 8045152 return ERR_VAL; } LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n")); if (pcb->netif_idx != NETIF_NO_INDEX) { - 80450d4: 68fb ldr r3, [r7, #12] - 80450d6: 7a1b ldrb r3, [r3, #8] - 80450d8: 2b00 cmp r3, #0 - 80450da: d006 beq.n 80450ea + 8045114: 68fb ldr r3, [r7, #12] + 8045116: 7a1b ldrb r3, [r3, #8] + 8045118: 2b00 cmp r3, #0 + 804511a: d006 beq.n 804512a netif = netif_get_by_index(pcb->netif_idx); - 80450dc: 68fb ldr r3, [r7, #12] - 80450de: 7a1b ldrb r3, [r3, #8] - 80450e0: 4618 mov r0, r3 - 80450e2: f7f9 f845 bl 803e170 - 80450e6: 6178 str r0, [r7, #20] - 80450e8: e003 b.n 80450f2 + 804511c: 68fb ldr r3, [r7, #12] + 804511e: 7a1b ldrb r3, [r3, #8] + 8045120: 4618 mov r0, r3 + 8045122: f7f9 f845 bl 803e1b0 + 8045126: 6178 str r0, [r7, #20] + 8045128: e003 b.n 8045132 if (netif == NULL) #endif /* LWIP_MULTICAST_TX_OPTIONS */ { /* find the outgoing network interface for this packet */ netif = ip_route(&pcb->local_ip, dst_ip); - 80450ea: 6878 ldr r0, [r7, #4] - 80450ec: f001 fc1a bl 8046924 - 80450f0: 6178 str r0, [r7, #20] + 804512a: 6878 ldr r0, [r7, #4] + 804512c: f001 fc1a bl 8046964 + 8045130: 6178 str r0, [r7, #20] } } /* no outgoing network interface could be found? */ if (netif == NULL) { - 80450f2: 697b ldr r3, [r7, #20] - 80450f4: 2b00 cmp r3, #0 - 80450f6: d102 bne.n 80450fe + 8045132: 697b ldr r3, [r7, #20] + 8045134: 2b00 cmp r3, #0 + 8045136: d102 bne.n 804513e LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to ")); ip_addr_debug_print(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, dst_ip); LWIP_DEBUGF(UDP_DEBUG, ("\n")); UDP_STATS_INC(udp.rterr); return ERR_RTE; - 80450f8: f06f 0303 mvn.w r3, #3 - 80450fc: e009 b.n 8045112 + 8045138: f06f 0303 mvn.w r3, #3 + 804513c: e009 b.n 8045152 } #if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum); #else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); - 80450fe: 887a ldrh r2, [r7, #2] - 8045100: 697b ldr r3, [r7, #20] - 8045102: 9300 str r3, [sp, #0] - 8045104: 4613 mov r3, r2 - 8045106: 687a ldr r2, [r7, #4] - 8045108: 68b9 ldr r1, [r7, #8] - 804510a: 68f8 ldr r0, [r7, #12] - 804510c: f000 f810 bl 8045130 - 8045110: 4603 mov r3, r0 + 804513e: 887a ldrh r2, [r7, #2] + 8045140: 697b ldr r3, [r7, #20] + 8045142: 9300 str r3, [sp, #0] + 8045144: 4613 mov r3, r2 + 8045146: 687a ldr r2, [r7, #4] + 8045148: 68b9 ldr r1, [r7, #8] + 804514a: 68f8 ldr r0, [r7, #12] + 804514c: f000 f810 bl 8045170 + 8045150: 4603 mov r3, r0 #endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ } - 8045112: 4618 mov r0, r3 - 8045114: 3718 adds r7, #24 - 8045116: 46bd mov sp, r7 - 8045118: bd80 pop {r7, pc} - 804511a: bf00 nop - 804511c: 0804c11c .word 0x0804c11c - 8045120: 0804c240 .word 0x0804c240 - 8045124: 0804c170 .word 0x0804c170 - 8045128: 0804c258 .word 0x0804c258 - 804512c: 0804c274 .word 0x0804c274 - -08045130 : + 8045152: 4618 mov r0, r3 + 8045154: 3718 adds r7, #24 + 8045156: 46bd mov sp, r7 + 8045158: bd80 pop {r7, pc} + 804515a: bf00 nop + 804515c: 0804c15c .word 0x0804c15c + 8045160: 0804c280 .word 0x0804c280 + 8045164: 0804c1b0 .word 0x0804c1b0 + 8045168: 0804c298 .word 0x0804c298 + 804516c: 0804c2b4 .word 0x0804c2b4 + +08045170 : * @see udp_disconnect() udp_send() */ err_t udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) { - 8045130: b580 push {r7, lr} - 8045132: b088 sub sp, #32 - 8045134: af02 add r7, sp, #8 - 8045136: 60f8 str r0, [r7, #12] - 8045138: 60b9 str r1, [r7, #8] - 804513a: 607a str r2, [r7, #4] - 804513c: 807b strh r3, [r7, #2] + 8045170: b580 push {r7, lr} + 8045172: b088 sub sp, #32 + 8045174: af02 add r7, sp, #8 + 8045176: 60f8 str r0, [r7, #12] + 8045178: 60b9 str r1, [r7, #8] + 804517a: 607a str r2, [r7, #4] + 804517c: 807b strh r3, [r7, #2] u16_t chksum) { #endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ const ip_addr_t *src_ip; LWIP_ERROR("udp_sendto_if: invalid pcb", pcb != NULL, return ERR_ARG); - 804513e: 68fb ldr r3, [r7, #12] - 8045140: 2b00 cmp r3, #0 - 8045142: d109 bne.n 8045158 - 8045144: 4b2e ldr r3, [pc, #184] ; (8045200 ) - 8045146: f44f 7220 mov.w r2, #640 ; 0x280 - 804514a: 492e ldr r1, [pc, #184] ; (8045204 ) - 804514c: 482e ldr r0, [pc, #184] ; (8045208 ) - 804514e: f002 ff29 bl 8047fa4 - 8045152: f06f 030f mvn.w r3, #15 - 8045156: e04f b.n 80451f8 + 804517e: 68fb ldr r3, [r7, #12] + 8045180: 2b00 cmp r3, #0 + 8045182: d109 bne.n 8045198 + 8045184: 4b2e ldr r3, [pc, #184] ; (8045240 ) + 8045186: f44f 7220 mov.w r2, #640 ; 0x280 + 804518a: 492e ldr r1, [pc, #184] ; (8045244 ) + 804518c: 482e ldr r0, [pc, #184] ; (8045248 ) + 804518e: f002 ff29 bl 8047fe4 + 8045192: f06f 030f mvn.w r3, #15 + 8045196: e04f b.n 8045238 LWIP_ERROR("udp_sendto_if: invalid pbuf", p != NULL, return ERR_ARG); - 8045158: 68bb ldr r3, [r7, #8] - 804515a: 2b00 cmp r3, #0 - 804515c: d109 bne.n 8045172 - 804515e: 4b28 ldr r3, [pc, #160] ; (8045200 ) - 8045160: f240 2281 movw r2, #641 ; 0x281 - 8045164: 4929 ldr r1, [pc, #164] ; (804520c ) - 8045166: 4828 ldr r0, [pc, #160] ; (8045208 ) - 8045168: f002 ff1c bl 8047fa4 - 804516c: f06f 030f mvn.w r3, #15 - 8045170: e042 b.n 80451f8 + 8045198: 68bb ldr r3, [r7, #8] + 804519a: 2b00 cmp r3, #0 + 804519c: d109 bne.n 80451b2 + 804519e: 4b28 ldr r3, [pc, #160] ; (8045240 ) + 80451a0: f240 2281 movw r2, #641 ; 0x281 + 80451a4: 4929 ldr r1, [pc, #164] ; (804524c ) + 80451a6: 4828 ldr r0, [pc, #160] ; (8045248 ) + 80451a8: f002 ff1c bl 8047fe4 + 80451ac: f06f 030f mvn.w r3, #15 + 80451b0: e042 b.n 8045238 LWIP_ERROR("udp_sendto_if: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 8045172: 687b ldr r3, [r7, #4] - 8045174: 2b00 cmp r3, #0 - 8045176: d109 bne.n 804518c - 8045178: 4b21 ldr r3, [pc, #132] ; (8045200 ) - 804517a: f240 2282 movw r2, #642 ; 0x282 - 804517e: 4924 ldr r1, [pc, #144] ; (8045210 ) - 8045180: 4821 ldr r0, [pc, #132] ; (8045208 ) - 8045182: f002 ff0f bl 8047fa4 - 8045186: f06f 030f mvn.w r3, #15 - 804518a: e035 b.n 80451f8 + 80451b2: 687b ldr r3, [r7, #4] + 80451b4: 2b00 cmp r3, #0 + 80451b6: d109 bne.n 80451cc + 80451b8: 4b21 ldr r3, [pc, #132] ; (8045240 ) + 80451ba: f240 2282 movw r2, #642 ; 0x282 + 80451be: 4924 ldr r1, [pc, #144] ; (8045250 ) + 80451c0: 4821 ldr r0, [pc, #132] ; (8045248 ) + 80451c2: f002 ff0f bl 8047fe4 + 80451c6: f06f 030f mvn.w r3, #15 + 80451ca: e035 b.n 8045238 LWIP_ERROR("udp_sendto_if: invalid netif", netif != NULL, return ERR_ARG); - 804518c: 6a3b ldr r3, [r7, #32] - 804518e: 2b00 cmp r3, #0 - 8045190: d109 bne.n 80451a6 - 8045192: 4b1b ldr r3, [pc, #108] ; (8045200 ) - 8045194: f240 2283 movw r2, #643 ; 0x283 - 8045198: 491e ldr r1, [pc, #120] ; (8045214 ) - 804519a: 481b ldr r0, [pc, #108] ; (8045208 ) - 804519c: f002 ff02 bl 8047fa4 - 80451a0: f06f 030f mvn.w r3, #15 - 80451a4: e028 b.n 80451f8 + 80451cc: 6a3b ldr r3, [r7, #32] + 80451ce: 2b00 cmp r3, #0 + 80451d0: d109 bne.n 80451e6 + 80451d2: 4b1b ldr r3, [pc, #108] ; (8045240 ) + 80451d4: f240 2283 movw r2, #643 ; 0x283 + 80451d8: 491e ldr r1, [pc, #120] ; (8045254 ) + 80451da: 481b ldr r0, [pc, #108] ; (8045248 ) + 80451dc: f002 ff02 bl 8047fe4 + 80451e0: f06f 030f mvn.w r3, #15 + 80451e4: e028 b.n 8045238 #endif /* LWIP_IPV6 */ #if LWIP_IPV4 && LWIP_IPV6 else #endif /* LWIP_IPV4 && LWIP_IPV6 */ #if LWIP_IPV4 if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 80451a6: 68fb ldr r3, [r7, #12] - 80451a8: 2b00 cmp r3, #0 - 80451aa: d009 beq.n 80451c0 - 80451ac: 68fb ldr r3, [r7, #12] - 80451ae: 681b ldr r3, [r3, #0] - 80451b0: 2b00 cmp r3, #0 - 80451b2: d005 beq.n 80451c0 + 80451e6: 68fb ldr r3, [r7, #12] + 80451e8: 2b00 cmp r3, #0 + 80451ea: d009 beq.n 8045200 + 80451ec: 68fb ldr r3, [r7, #12] + 80451ee: 681b ldr r3, [r3, #0] + 80451f0: 2b00 cmp r3, #0 + 80451f2: d005 beq.n 8045200 ip4_addr_ismulticast(ip_2_ip4(&pcb->local_ip))) { - 80451b4: 68fb ldr r3, [r7, #12] - 80451b6: 681b ldr r3, [r3, #0] - 80451b8: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 80451f4: 68fb ldr r3, [r7, #12] + 80451f6: 681b ldr r3, [r3, #0] + 80451f8: f003 03f0 and.w r3, r3, #240 ; 0xf0 if (ip4_addr_isany(ip_2_ip4(&pcb->local_ip)) || - 80451bc: 2be0 cmp r3, #224 ; 0xe0 - 80451be: d103 bne.n 80451c8 + 80451fc: 2be0 cmp r3, #224 ; 0xe0 + 80451fe: d103 bne.n 8045208 /* if the local_ip is any or multicast * use the outgoing network interface IP address as source address */ src_ip = netif_ip_addr4(netif); - 80451c0: 6a3b ldr r3, [r7, #32] - 80451c2: 3304 adds r3, #4 - 80451c4: 617b str r3, [r7, #20] - 80451c6: e00b b.n 80451e0 + 8045200: 6a3b ldr r3, [r7, #32] + 8045202: 3304 adds r3, #4 + 8045204: 617b str r3, [r7, #20] + 8045206: e00b b.n 8045220 } else { /* check if UDP PCB local IP address is correct * this could be an old address if netif->ip_addr has changed */ if (!ip4_addr_cmp(ip_2_ip4(&(pcb->local_ip)), netif_ip4_addr(netif))) { - 80451c8: 68fb ldr r3, [r7, #12] - 80451ca: 681a ldr r2, [r3, #0] - 80451cc: 6a3b ldr r3, [r7, #32] - 80451ce: 3304 adds r3, #4 - 80451d0: 681b ldr r3, [r3, #0] - 80451d2: 429a cmp r2, r3 - 80451d4: d002 beq.n 80451dc + 8045208: 68fb ldr r3, [r7, #12] + 804520a: 681a ldr r2, [r3, #0] + 804520c: 6a3b ldr r3, [r7, #32] + 804520e: 3304 adds r3, #4 + 8045210: 681b ldr r3, [r3, #0] + 8045212: 429a cmp r2, r3 + 8045214: d002 beq.n 804521c /* local_ip doesn't match, drop the packet */ return ERR_RTE; - 80451d6: f06f 0303 mvn.w r3, #3 - 80451da: e00d b.n 80451f8 + 8045216: f06f 0303 mvn.w r3, #3 + 804521a: e00d b.n 8045238 } /* use UDP PCB local IP address as source address */ src_ip = &pcb->local_ip; - 80451dc: 68fb ldr r3, [r7, #12] - 80451de: 617b str r3, [r7, #20] + 804521c: 68fb ldr r3, [r7, #12] + 804521e: 617b str r3, [r7, #20] } #endif /* LWIP_IPV4 */ #if LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP return udp_sendto_if_src_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum, src_ip); #else /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ return udp_sendto_if_src(pcb, p, dst_ip, dst_port, netif, src_ip); - 80451e0: 887a ldrh r2, [r7, #2] - 80451e2: 697b ldr r3, [r7, #20] - 80451e4: 9301 str r3, [sp, #4] - 80451e6: 6a3b ldr r3, [r7, #32] - 80451e8: 9300 str r3, [sp, #0] - 80451ea: 4613 mov r3, r2 - 80451ec: 687a ldr r2, [r7, #4] - 80451ee: 68b9 ldr r1, [r7, #8] - 80451f0: 68f8 ldr r0, [r7, #12] - 80451f2: f000 f811 bl 8045218 - 80451f6: 4603 mov r3, r0 + 8045220: 887a ldrh r2, [r7, #2] + 8045222: 697b ldr r3, [r7, #20] + 8045224: 9301 str r3, [sp, #4] + 8045226: 6a3b ldr r3, [r7, #32] + 8045228: 9300 str r3, [sp, #0] + 804522a: 4613 mov r3, r2 + 804522c: 687a ldr r2, [r7, #4] + 804522e: 68b9 ldr r1, [r7, #8] + 8045230: 68f8 ldr r0, [r7, #12] + 8045232: f000 f811 bl 8045258 + 8045236: 4603 mov r3, r0 #endif /* LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_UDP */ } - 80451f8: 4618 mov r0, r3 - 80451fa: 3718 adds r7, #24 - 80451fc: 46bd mov sp, r7 - 80451fe: bd80 pop {r7, pc} - 8045200: 0804c11c .word 0x0804c11c - 8045204: 0804c290 .word 0x0804c290 - 8045208: 0804c170 .word 0x0804c170 - 804520c: 0804c2ac .word 0x0804c2ac - 8045210: 0804c2c8 .word 0x0804c2c8 - 8045214: 0804c2e8 .word 0x0804c2e8 - -08045218 : + 8045238: 4618 mov r0, r3 + 804523a: 3718 adds r7, #24 + 804523c: 46bd mov sp, r7 + 804523e: bd80 pop {r7, pc} + 8045240: 0804c15c .word 0x0804c15c + 8045244: 0804c2d0 .word 0x0804c2d0 + 8045248: 0804c1b0 .word 0x0804c1b0 + 804524c: 0804c2ec .word 0x0804c2ec + 8045250: 0804c308 .word 0x0804c308 + 8045254: 0804c328 .word 0x0804c328 + +08045258 : /** @ingroup udp_raw * Same as @ref udp_sendto_if, but with source address */ err_t udp_sendto_if_src(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip) { - 8045218: b580 push {r7, lr} - 804521a: b08c sub sp, #48 ; 0x30 - 804521c: af04 add r7, sp, #16 - 804521e: 60f8 str r0, [r7, #12] - 8045220: 60b9 str r1, [r7, #8] - 8045222: 607a str r2, [r7, #4] - 8045224: 807b strh r3, [r7, #2] + 8045258: b580 push {r7, lr} + 804525a: b08c sub sp, #48 ; 0x30 + 804525c: af04 add r7, sp, #16 + 804525e: 60f8 str r0, [r7, #12] + 8045260: 60b9 str r1, [r7, #8] + 8045262: 607a str r2, [r7, #4] + 8045264: 807b strh r3, [r7, #2] u8_t ip_proto; u8_t ttl; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("udp_sendto_if_src: invalid pcb", pcb != NULL, return ERR_ARG); - 8045226: 68fb ldr r3, [r7, #12] - 8045228: 2b00 cmp r3, #0 - 804522a: d109 bne.n 8045240 - 804522c: 4b65 ldr r3, [pc, #404] ; (80453c4 ) - 804522e: f240 22d1 movw r2, #721 ; 0x2d1 - 8045232: 4965 ldr r1, [pc, #404] ; (80453c8 ) - 8045234: 4865 ldr r0, [pc, #404] ; (80453cc ) - 8045236: f002 feb5 bl 8047fa4 - 804523a: f06f 030f mvn.w r3, #15 - 804523e: e0bc b.n 80453ba + 8045266: 68fb ldr r3, [r7, #12] + 8045268: 2b00 cmp r3, #0 + 804526a: d109 bne.n 8045280 + 804526c: 4b65 ldr r3, [pc, #404] ; (8045404 ) + 804526e: f240 22d1 movw r2, #721 ; 0x2d1 + 8045272: 4965 ldr r1, [pc, #404] ; (8045408 ) + 8045274: 4865 ldr r0, [pc, #404] ; (804540c ) + 8045276: f002 feb5 bl 8047fe4 + 804527a: f06f 030f mvn.w r3, #15 + 804527e: e0bc b.n 80453fa LWIP_ERROR("udp_sendto_if_src: invalid pbuf", p != NULL, return ERR_ARG); - 8045240: 68bb ldr r3, [r7, #8] - 8045242: 2b00 cmp r3, #0 - 8045244: d109 bne.n 804525a - 8045246: 4b5f ldr r3, [pc, #380] ; (80453c4 ) - 8045248: f240 22d2 movw r2, #722 ; 0x2d2 - 804524c: 4960 ldr r1, [pc, #384] ; (80453d0 ) - 804524e: 485f ldr r0, [pc, #380] ; (80453cc ) - 8045250: f002 fea8 bl 8047fa4 - 8045254: f06f 030f mvn.w r3, #15 - 8045258: e0af b.n 80453ba + 8045280: 68bb ldr r3, [r7, #8] + 8045282: 2b00 cmp r3, #0 + 8045284: d109 bne.n 804529a + 8045286: 4b5f ldr r3, [pc, #380] ; (8045404 ) + 8045288: f240 22d2 movw r2, #722 ; 0x2d2 + 804528c: 4960 ldr r1, [pc, #384] ; (8045410 ) + 804528e: 485f ldr r0, [pc, #380] ; (804540c ) + 8045290: f002 fea8 bl 8047fe4 + 8045294: f06f 030f mvn.w r3, #15 + 8045298: e0af b.n 80453fa LWIP_ERROR("udp_sendto_if_src: invalid dst_ip", dst_ip != NULL, return ERR_ARG); - 804525a: 687b ldr r3, [r7, #4] - 804525c: 2b00 cmp r3, #0 - 804525e: d109 bne.n 8045274 - 8045260: 4b58 ldr r3, [pc, #352] ; (80453c4 ) - 8045262: f240 22d3 movw r2, #723 ; 0x2d3 - 8045266: 495b ldr r1, [pc, #364] ; (80453d4 ) - 8045268: 4858 ldr r0, [pc, #352] ; (80453cc ) - 804526a: f002 fe9b bl 8047fa4 - 804526e: f06f 030f mvn.w r3, #15 - 8045272: e0a2 b.n 80453ba + 804529a: 687b ldr r3, [r7, #4] + 804529c: 2b00 cmp r3, #0 + 804529e: d109 bne.n 80452b4 + 80452a0: 4b58 ldr r3, [pc, #352] ; (8045404 ) + 80452a2: f240 22d3 movw r2, #723 ; 0x2d3 + 80452a6: 495b ldr r1, [pc, #364] ; (8045414 ) + 80452a8: 4858 ldr r0, [pc, #352] ; (804540c ) + 80452aa: f002 fe9b bl 8047fe4 + 80452ae: f06f 030f mvn.w r3, #15 + 80452b2: e0a2 b.n 80453fa LWIP_ERROR("udp_sendto_if_src: invalid src_ip", src_ip != NULL, return ERR_ARG); - 8045274: 6afb ldr r3, [r7, #44] ; 0x2c - 8045276: 2b00 cmp r3, #0 - 8045278: d109 bne.n 804528e - 804527a: 4b52 ldr r3, [pc, #328] ; (80453c4 ) - 804527c: f44f 7235 mov.w r2, #724 ; 0x2d4 - 8045280: 4955 ldr r1, [pc, #340] ; (80453d8 ) - 8045282: 4852 ldr r0, [pc, #328] ; (80453cc ) - 8045284: f002 fe8e bl 8047fa4 - 8045288: f06f 030f mvn.w r3, #15 - 804528c: e095 b.n 80453ba + 80452b4: 6afb ldr r3, [r7, #44] ; 0x2c + 80452b6: 2b00 cmp r3, #0 + 80452b8: d109 bne.n 80452ce + 80452ba: 4b52 ldr r3, [pc, #328] ; (8045404 ) + 80452bc: f44f 7235 mov.w r2, #724 ; 0x2d4 + 80452c0: 4955 ldr r1, [pc, #340] ; (8045418 ) + 80452c2: 4852 ldr r0, [pc, #328] ; (804540c ) + 80452c4: f002 fe8e bl 8047fe4 + 80452c8: f06f 030f mvn.w r3, #15 + 80452cc: e095 b.n 80453fa LWIP_ERROR("udp_sendto_if_src: invalid netif", netif != NULL, return ERR_ARG); - 804528e: 6abb ldr r3, [r7, #40] ; 0x28 - 8045290: 2b00 cmp r3, #0 - 8045292: d109 bne.n 80452a8 - 8045294: 4b4b ldr r3, [pc, #300] ; (80453c4 ) - 8045296: f240 22d5 movw r2, #725 ; 0x2d5 - 804529a: 4950 ldr r1, [pc, #320] ; (80453dc ) - 804529c: 484b ldr r0, [pc, #300] ; (80453cc ) - 804529e: f002 fe81 bl 8047fa4 - 80452a2: f06f 030f mvn.w r3, #15 - 80452a6: e088 b.n 80453ba + 80452ce: 6abb ldr r3, [r7, #40] ; 0x28 + 80452d0: 2b00 cmp r3, #0 + 80452d2: d109 bne.n 80452e8 + 80452d4: 4b4b ldr r3, [pc, #300] ; (8045404 ) + 80452d6: f240 22d5 movw r2, #725 ; 0x2d5 + 80452da: 4950 ldr r1, [pc, #320] ; (804541c ) + 80452dc: 484b ldr r0, [pc, #300] ; (804540c ) + 80452de: f002 fe81 bl 8047fe4 + 80452e2: f06f 030f mvn.w r3, #15 + 80452e6: e088 b.n 80453fa return ERR_VAL; } #endif /* LWIP_IPV4 && IP_SOF_BROADCAST */ /* if the PCB is not yet bound to a port, bind it here */ if (pcb->local_port == 0) { - 80452a8: 68fb ldr r3, [r7, #12] - 80452aa: 8a5b ldrh r3, [r3, #18] - 80452ac: 2b00 cmp r3, #0 - 80452ae: d10f bne.n 80452d0 + 80452e8: 68fb ldr r3, [r7, #12] + 80452ea: 8a5b ldrh r3, [r3, #18] + 80452ec: 2b00 cmp r3, #0 + 80452ee: d10f bne.n 8045310 LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n")); err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - 80452b0: 68f9 ldr r1, [r7, #12] - 80452b2: 68fb ldr r3, [r7, #12] - 80452b4: 8a5b ldrh r3, [r3, #18] - 80452b6: 461a mov r2, r3 - 80452b8: 68f8 ldr r0, [r7, #12] - 80452ba: f000 f893 bl 80453e4 - 80452be: 4603 mov r3, r0 - 80452c0: 76fb strb r3, [r7, #27] + 80452f0: 68f9 ldr r1, [r7, #12] + 80452f2: 68fb ldr r3, [r7, #12] + 80452f4: 8a5b ldrh r3, [r3, #18] + 80452f6: 461a mov r2, r3 + 80452f8: 68f8 ldr r0, [r7, #12] + 80452fa: f000 f893 bl 8045424 + 80452fe: 4603 mov r3, r0 + 8045300: 76fb strb r3, [r7, #27] if (err != ERR_OK) { - 80452c2: f997 301b ldrsb.w r3, [r7, #27] - 80452c6: 2b00 cmp r3, #0 - 80452c8: d002 beq.n 80452d0 + 8045302: f997 301b ldrsb.w r3, [r7, #27] + 8045306: 2b00 cmp r3, #0 + 8045308: d002 beq.n 8045310 LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n")); return err; - 80452ca: f997 301b ldrsb.w r3, [r7, #27] - 80452ce: e074 b.n 80453ba + 804530a: f997 301b ldrsb.w r3, [r7, #27] + 804530e: e074 b.n 80453fa } } /* packet too large to add a UDP header without causing an overflow? */ if ((u16_t)(p->tot_len + UDP_HLEN) < p->tot_len) { - 80452d0: 68bb ldr r3, [r7, #8] - 80452d2: 891b ldrh r3, [r3, #8] - 80452d4: f64f 72f7 movw r2, #65527 ; 0xfff7 - 80452d8: 4293 cmp r3, r2 - 80452da: d902 bls.n 80452e2 + 8045310: 68bb ldr r3, [r7, #8] + 8045312: 891b ldrh r3, [r3, #8] + 8045314: f64f 72f7 movw r2, #65527 ; 0xfff7 + 8045318: 4293 cmp r3, r2 + 804531a: d902 bls.n 8045322 return ERR_MEM; - 80452dc: f04f 33ff mov.w r3, #4294967295 - 80452e0: e06b b.n 80453ba + 804531c: f04f 33ff mov.w r3, #4294967295 + 8045320: e06b b.n 80453fa } /* not enough space to add an UDP header to first pbuf in given p chain? */ if (pbuf_add_header(p, UDP_HLEN)) { - 80452e2: 2108 movs r1, #8 - 80452e4: 68b8 ldr r0, [r7, #8] - 80452e6: f7f9 fa0d bl 803e704 - 80452ea: 4603 mov r3, r0 - 80452ec: 2b00 cmp r3, #0 - 80452ee: d015 beq.n 804531c + 8045322: 2108 movs r1, #8 + 8045324: 68b8 ldr r0, [r7, #8] + 8045326: f7f9 fa0d bl 803e744 + 804532a: 4603 mov r3, r0 + 804532c: 2b00 cmp r3, #0 + 804532e: d015 beq.n 804535c /* allocate header in a separate new pbuf */ q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); - 80452f0: f44f 7220 mov.w r2, #640 ; 0x280 - 80452f4: 2108 movs r1, #8 - 80452f6: 2022 movs r0, #34 ; 0x22 - 80452f8: f7f8 ffb6 bl 803e268 - 80452fc: 61f8 str r0, [r7, #28] + 8045330: f44f 7220 mov.w r2, #640 ; 0x280 + 8045334: 2108 movs r1, #8 + 8045336: 2022 movs r0, #34 ; 0x22 + 8045338: f7f8 ffb6 bl 803e2a8 + 804533c: 61f8 str r0, [r7, #28] /* new header pbuf could not be allocated? */ if (q == NULL) { - 80452fe: 69fb ldr r3, [r7, #28] - 8045300: 2b00 cmp r3, #0 - 8045302: d102 bne.n 804530a + 804533e: 69fb ldr r3, [r7, #28] + 8045340: 2b00 cmp r3, #0 + 8045342: d102 bne.n 804534a LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n")); return ERR_MEM; - 8045304: f04f 33ff mov.w r3, #4294967295 - 8045308: e057 b.n 80453ba + 8045344: f04f 33ff mov.w r3, #4294967295 + 8045348: e057 b.n 80453fa } if (p->tot_len != 0) { - 804530a: 68bb ldr r3, [r7, #8] - 804530c: 891b ldrh r3, [r3, #8] - 804530e: 2b00 cmp r3, #0 - 8045310: d006 beq.n 8045320 + 804534a: 68bb ldr r3, [r7, #8] + 804534c: 891b ldrh r3, [r3, #8] + 804534e: 2b00 cmp r3, #0 + 8045350: d006 beq.n 8045360 /* chain header q in front of given pbuf p (only if p contains data) */ pbuf_chain(q, p); - 8045312: 68b9 ldr r1, [r7, #8] - 8045314: 69f8 ldr r0, [r7, #28] - 8045316: f7f9 fba3 bl 803ea60 - 804531a: e001 b.n 8045320 + 8045352: 68b9 ldr r1, [r7, #8] + 8045354: 69f8 ldr r0, [r7, #28] + 8045356: f7f9 fba3 bl 803eaa0 + 804535a: e001 b.n 8045360 LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); } else { /* adding space for header within p succeeded */ /* first pbuf q equals given pbuf */ q = p; - 804531c: 68bb ldr r3, [r7, #8] - 804531e: 61fb str r3, [r7, #28] + 804535c: 68bb ldr r3, [r7, #8] + 804535e: 61fb str r3, [r7, #28] LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p)); } LWIP_ASSERT("check that first pbuf can hold struct udp_hdr", - 8045320: 69fb ldr r3, [r7, #28] - 8045322: 895b ldrh r3, [r3, #10] - 8045324: 2b07 cmp r3, #7 - 8045326: d806 bhi.n 8045336 - 8045328: 4b26 ldr r3, [pc, #152] ; (80453c4 ) - 804532a: f240 320d movw r2, #781 ; 0x30d - 804532e: 492c ldr r1, [pc, #176] ; (80453e0 ) - 8045330: 4826 ldr r0, [pc, #152] ; (80453cc ) - 8045332: f002 fe37 bl 8047fa4 + 8045360: 69fb ldr r3, [r7, #28] + 8045362: 895b ldrh r3, [r3, #10] + 8045364: 2b07 cmp r3, #7 + 8045366: d806 bhi.n 8045376 + 8045368: 4b26 ldr r3, [pc, #152] ; (8045404 ) + 804536a: f240 320d movw r2, #781 ; 0x30d + 804536e: 492c ldr r1, [pc, #176] ; (8045420 ) + 8045370: 4826 ldr r0, [pc, #152] ; (804540c ) + 8045372: f002 fe37 bl 8047fe4 (q->len >= sizeof(struct udp_hdr))); /* q now represents the packet to be sent */ udphdr = (struct udp_hdr *)q->payload; - 8045336: 69fb ldr r3, [r7, #28] - 8045338: 685b ldr r3, [r3, #4] - 804533a: 617b str r3, [r7, #20] + 8045376: 69fb ldr r3, [r7, #28] + 8045378: 685b ldr r3, [r3, #4] + 804537a: 617b str r3, [r7, #20] udphdr->src = lwip_htons(pcb->local_port); - 804533c: 68fb ldr r3, [r7, #12] - 804533e: 8a5b ldrh r3, [r3, #18] - 8045340: 4618 mov r0, r3 - 8045342: f7f7 fe43 bl 803cfcc - 8045346: 4603 mov r3, r0 - 8045348: 461a mov r2, r3 - 804534a: 697b ldr r3, [r7, #20] - 804534c: 801a strh r2, [r3, #0] + 804537c: 68fb ldr r3, [r7, #12] + 804537e: 8a5b ldrh r3, [r3, #18] + 8045380: 4618 mov r0, r3 + 8045382: f7f7 fe43 bl 803d00c + 8045386: 4603 mov r3, r0 + 8045388: 461a mov r2, r3 + 804538a: 697b ldr r3, [r7, #20] + 804538c: 801a strh r2, [r3, #0] udphdr->dest = lwip_htons(dst_port); - 804534e: 887b ldrh r3, [r7, #2] - 8045350: 4618 mov r0, r3 - 8045352: f7f7 fe3b bl 803cfcc - 8045356: 4603 mov r3, r0 - 8045358: 461a mov r2, r3 - 804535a: 697b ldr r3, [r7, #20] - 804535c: 805a strh r2, [r3, #2] + 804538e: 887b ldrh r3, [r7, #2] + 8045390: 4618 mov r0, r3 + 8045392: f7f7 fe3b bl 803d00c + 8045396: 4603 mov r3, r0 + 8045398: 461a mov r2, r3 + 804539a: 697b ldr r3, [r7, #20] + 804539c: 805a strh r2, [r3, #2] /* in UDP, 0 checksum means 'no checksum' */ udphdr->chksum = 0x0000; - 804535e: 697b ldr r3, [r7, #20] - 8045360: 2200 movs r2, #0 - 8045362: 719a strb r2, [r3, #6] - 8045364: 2200 movs r2, #0 - 8045366: 71da strb r2, [r3, #7] + 804539e: 697b ldr r3, [r7, #20] + 80453a0: 2200 movs r2, #0 + 80453a2: 719a strb r2, [r3, #6] + 80453a4: 2200 movs r2, #0 + 80453a6: 71da strb r2, [r3, #7] ip_proto = IP_PROTO_UDPLITE; } else #endif /* LWIP_UDPLITE */ { /* UDP */ LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len)); udphdr->len = lwip_htons(q->tot_len); - 8045368: 69fb ldr r3, [r7, #28] - 804536a: 891b ldrh r3, [r3, #8] - 804536c: 4618 mov r0, r3 - 804536e: f7f7 fe2d bl 803cfcc - 8045372: 4603 mov r3, r0 - 8045374: 461a mov r2, r3 - 8045376: 697b ldr r3, [r7, #20] - 8045378: 809a strh r2, [r3, #4] + 80453a8: 69fb ldr r3, [r7, #28] + 80453aa: 891b ldrh r3, [r3, #8] + 80453ac: 4618 mov r0, r3 + 80453ae: f7f7 fe2d bl 803d00c + 80453b2: 4603 mov r3, r0 + 80453b4: 461a mov r2, r3 + 80453b6: 697b ldr r3, [r7, #20] + 80453b8: 809a strh r2, [r3, #4] } udphdr->chksum = udpchksum; } } #endif /* CHECKSUM_GEN_UDP */ ip_proto = IP_PROTO_UDP; - 804537a: 2311 movs r3, #17 - 804537c: 74fb strb r3, [r7, #19] + 80453ba: 2311 movs r3, #17 + 80453bc: 74fb strb r3, [r7, #19] /* Determine TTL to use */ #if LWIP_MULTICAST_TX_OPTIONS ttl = (ip_addr_ismulticast(dst_ip) ? udp_get_multicast_ttl(pcb) : pcb->ttl); #else /* LWIP_MULTICAST_TX_OPTIONS */ ttl = pcb->ttl; - 804537e: 68fb ldr r3, [r7, #12] - 8045380: 7adb ldrb r3, [r3, #11] - 8045382: 74bb strb r3, [r7, #18] + 80453be: 68fb ldr r3, [r7, #12] + 80453c0: 7adb ldrb r3, [r3, #11] + 80453c2: 74bb strb r3, [r7, #18] LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum)); LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,0x%02"X16_F",)\n", (u16_t)ip_proto)); /* output to IP */ NETIF_SET_HINTS(netif, &(pcb->netif_hints)); err = ip_output_if_src(q, src_ip, dst_ip, ttl, pcb->tos, ip_proto, netif); - 8045384: 68fb ldr r3, [r7, #12] - 8045386: 7a9b ldrb r3, [r3, #10] - 8045388: 7cb9 ldrb r1, [r7, #18] - 804538a: 6aba ldr r2, [r7, #40] ; 0x28 - 804538c: 9202 str r2, [sp, #8] - 804538e: 7cfa ldrb r2, [r7, #19] - 8045390: 9201 str r2, [sp, #4] - 8045392: 9300 str r3, [sp, #0] - 8045394: 460b mov r3, r1 - 8045396: 687a ldr r2, [r7, #4] - 8045398: 6af9 ldr r1, [r7, #44] ; 0x2c - 804539a: 69f8 ldr r0, [r7, #28] - 804539c: f001 fcaa bl 8046cf4 - 80453a0: 4603 mov r3, r0 - 80453a2: 76fb strb r3, [r7, #27] + 80453c4: 68fb ldr r3, [r7, #12] + 80453c6: 7a9b ldrb r3, [r3, #10] + 80453c8: 7cb9 ldrb r1, [r7, #18] + 80453ca: 6aba ldr r2, [r7, #40] ; 0x28 + 80453cc: 9202 str r2, [sp, #8] + 80453ce: 7cfa ldrb r2, [r7, #19] + 80453d0: 9201 str r2, [sp, #4] + 80453d2: 9300 str r3, [sp, #0] + 80453d4: 460b mov r3, r1 + 80453d6: 687a ldr r2, [r7, #4] + 80453d8: 6af9 ldr r1, [r7, #44] ; 0x2c + 80453da: 69f8 ldr r0, [r7, #28] + 80453dc: f001 fcaa bl 8046d34 + 80453e0: 4603 mov r3, r0 + 80453e2: 76fb strb r3, [r7, #27] /* @todo: must this be increased even if error occurred? */ MIB2_STATS_INC(mib2.udpoutdatagrams); /* did we chain a separate header pbuf earlier? */ if (q != p) { - 80453a4: 69fa ldr r2, [r7, #28] - 80453a6: 68bb ldr r3, [r7, #8] - 80453a8: 429a cmp r2, r3 - 80453aa: d004 beq.n 80453b6 + 80453e4: 69fa ldr r2, [r7, #28] + 80453e6: 68bb ldr r3, [r7, #8] + 80453e8: 429a cmp r2, r3 + 80453ea: d004 beq.n 80453f6 /* free the header pbuf */ pbuf_free(q); - 80453ac: 69f8 ldr r0, [r7, #28] - 80453ae: f7f9 fa3f bl 803e830 + 80453ec: 69f8 ldr r0, [r7, #28] + 80453ee: f7f9 fa3f bl 803e870 q = NULL; - 80453b2: 2300 movs r3, #0 - 80453b4: 61fb str r3, [r7, #28] + 80453f2: 2300 movs r3, #0 + 80453f4: 61fb str r3, [r7, #28] /* p is still referenced by the caller, and will live on */ } UDP_STATS_INC(udp.xmit); return err; - 80453b6: f997 301b ldrsb.w r3, [r7, #27] -} - 80453ba: 4618 mov r0, r3 - 80453bc: 3720 adds r7, #32 - 80453be: 46bd mov sp, r7 - 80453c0: bd80 pop {r7, pc} - 80453c2: bf00 nop - 80453c4: 0804c11c .word 0x0804c11c - 80453c8: 0804c308 .word 0x0804c308 - 80453cc: 0804c170 .word 0x0804c170 - 80453d0: 0804c328 .word 0x0804c328 - 80453d4: 0804c348 .word 0x0804c348 - 80453d8: 0804c36c .word 0x0804c36c - 80453dc: 0804c390 .word 0x0804c390 - 80453e0: 0804c3b4 .word 0x0804c3b4 - -080453e4 : + 80453f6: f997 301b ldrsb.w r3, [r7, #27] +} + 80453fa: 4618 mov r0, r3 + 80453fc: 3720 adds r7, #32 + 80453fe: 46bd mov sp, r7 + 8045400: bd80 pop {r7, pc} + 8045402: bf00 nop + 8045404: 0804c15c .word 0x0804c15c + 8045408: 0804c348 .word 0x0804c348 + 804540c: 0804c1b0 .word 0x0804c1b0 + 8045410: 0804c368 .word 0x0804c368 + 8045414: 0804c388 .word 0x0804c388 + 8045418: 0804c3ac .word 0x0804c3ac + 804541c: 0804c3d0 .word 0x0804c3d0 + 8045420: 0804c3f4 .word 0x0804c3f4 + +08045424 : * * @see udp_disconnect() */ err_t udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) { - 80453e4: b580 push {r7, lr} - 80453e6: b086 sub sp, #24 - 80453e8: af00 add r7, sp, #0 - 80453ea: 60f8 str r0, [r7, #12] - 80453ec: 60b9 str r1, [r7, #8] - 80453ee: 4613 mov r3, r2 - 80453f0: 80fb strh r3, [r7, #6] + 8045424: b580 push {r7, lr} + 8045426: b086 sub sp, #24 + 8045428: af00 add r7, sp, #0 + 804542a: 60f8 str r0, [r7, #12] + 804542c: 60b9 str r1, [r7, #8] + 804542e: 4613 mov r3, r2 + 8045430: 80fb strh r3, [r7, #6] LWIP_ASSERT_CORE_LOCKED(); #if LWIP_IPV4 /* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */ if (ipaddr == NULL) { - 80453f2: 68bb ldr r3, [r7, #8] - 80453f4: 2b00 cmp r3, #0 - 80453f6: d101 bne.n 80453fc + 8045432: 68bb ldr r3, [r7, #8] + 8045434: 2b00 cmp r3, #0 + 8045436: d101 bne.n 804543c ipaddr = IP4_ADDR_ANY; - 80453f8: 4b39 ldr r3, [pc, #228] ; (80454e0 ) - 80453fa: 60bb str r3, [r7, #8] + 8045438: 4b39 ldr r3, [pc, #228] ; (8045520 ) + 804543a: 60bb str r3, [r7, #8] } #else /* LWIP_IPV4 */ LWIP_ERROR("udp_bind: invalid ipaddr", ipaddr != NULL, return ERR_ARG); #endif /* LWIP_IPV4 */ LWIP_ERROR("udp_bind: invalid pcb", pcb != NULL, return ERR_ARG); - 80453fc: 68fb ldr r3, [r7, #12] - 80453fe: 2b00 cmp r3, #0 - 8045400: d109 bne.n 8045416 - 8045402: 4b38 ldr r3, [pc, #224] ; (80454e4 ) - 8045404: f240 32b7 movw r2, #951 ; 0x3b7 - 8045408: 4937 ldr r1, [pc, #220] ; (80454e8 ) - 804540a: 4838 ldr r0, [pc, #224] ; (80454ec ) - 804540c: f002 fdca bl 8047fa4 - 8045410: f06f 030f mvn.w r3, #15 - 8045414: e060 b.n 80454d8 + 804543c: 68fb ldr r3, [r7, #12] + 804543e: 2b00 cmp r3, #0 + 8045440: d109 bne.n 8045456 + 8045442: 4b38 ldr r3, [pc, #224] ; (8045524 ) + 8045444: f240 32b7 movw r2, #951 ; 0x3b7 + 8045448: 4937 ldr r1, [pc, #220] ; (8045528 ) + 804544a: 4838 ldr r0, [pc, #224] ; (804552c ) + 804544c: f002 fdca bl 8047fe4 + 8045450: f06f 030f mvn.w r3, #15 + 8045454: e060 b.n 8045518 LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = ")); ip_addr_debug_print(UDP_DEBUG | LWIP_DBG_TRACE, ipaddr); LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port)); rebind = 0; - 8045416: 2300 movs r3, #0 - 8045418: 74fb strb r3, [r7, #19] + 8045456: 2300 movs r3, #0 + 8045458: 74fb strb r3, [r7, #19] /* Check for double bind and rebind of the same pcb */ for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 804541a: 4b35 ldr r3, [pc, #212] ; (80454f0 ) - 804541c: 681b ldr r3, [r3, #0] - 804541e: 617b str r3, [r7, #20] - 8045420: e009 b.n 8045436 + 804545a: 4b35 ldr r3, [pc, #212] ; (8045530 ) + 804545c: 681b ldr r3, [r3, #0] + 804545e: 617b str r3, [r7, #20] + 8045460: e009 b.n 8045476 /* is this UDP PCB already on active list? */ if (pcb == ipcb) { - 8045422: 68fa ldr r2, [r7, #12] - 8045424: 697b ldr r3, [r7, #20] - 8045426: 429a cmp r2, r3 - 8045428: d102 bne.n 8045430 + 8045462: 68fa ldr r2, [r7, #12] + 8045464: 697b ldr r3, [r7, #20] + 8045466: 429a cmp r2, r3 + 8045468: d102 bne.n 8045470 rebind = 1; - 804542a: 2301 movs r3, #1 - 804542c: 74fb strb r3, [r7, #19] + 804546a: 2301 movs r3, #1 + 804546c: 74fb strb r3, [r7, #19] break; - 804542e: e005 b.n 804543c + 804546e: e005 b.n 804547c for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 8045430: 697b ldr r3, [r7, #20] - 8045432: 68db ldr r3, [r3, #12] - 8045434: 617b str r3, [r7, #20] - 8045436: 697b ldr r3, [r7, #20] - 8045438: 2b00 cmp r3, #0 - 804543a: d1f2 bne.n 8045422 + 8045470: 697b ldr r3, [r7, #20] + 8045472: 68db ldr r3, [r3, #12] + 8045474: 617b str r3, [r7, #20] + 8045476: 697b ldr r3, [r7, #20] + 8045478: 2b00 cmp r3, #0 + 804547a: d1f2 bne.n 8045462 ipaddr = &zoned_ipaddr; } #endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */ /* no port specified? */ if (port == 0) { - 804543c: 88fb ldrh r3, [r7, #6] - 804543e: 2b00 cmp r3, #0 - 8045440: d109 bne.n 8045456 + 804547c: 88fb ldrh r3, [r7, #6] + 804547e: 2b00 cmp r3, #0 + 8045480: d109 bne.n 8045496 port = udp_new_port(); - 8045442: f7ff fc35 bl 8044cb0 - 8045446: 4603 mov r3, r0 - 8045448: 80fb strh r3, [r7, #6] + 8045482: f7ff fc35 bl 8044cf0 + 8045486: 4603 mov r3, r0 + 8045488: 80fb strh r3, [r7, #6] if (port == 0) { - 804544a: 88fb ldrh r3, [r7, #6] - 804544c: 2b00 cmp r3, #0 - 804544e: d12c bne.n 80454aa + 804548a: 88fb ldrh r3, [r7, #6] + 804548c: 2b00 cmp r3, #0 + 804548e: d12c bne.n 80454ea /* no more ports available in local range */ LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n")); return ERR_USE; - 8045450: f06f 0307 mvn.w r3, #7 - 8045454: e040 b.n 80454d8 + 8045490: f06f 0307 mvn.w r3, #7 + 8045494: e040 b.n 8045518 } } else { for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 8045456: 4b26 ldr r3, [pc, #152] ; (80454f0 ) - 8045458: 681b ldr r3, [r3, #0] - 804545a: 617b str r3, [r7, #20] - 804545c: e022 b.n 80454a4 + 8045496: 4b26 ldr r3, [pc, #152] ; (8045530 ) + 8045498: 681b ldr r3, [r3, #0] + 804549a: 617b str r3, [r7, #20] + 804549c: e022 b.n 80454e4 if (pcb != ipcb) { - 804545e: 68fa ldr r2, [r7, #12] - 8045460: 697b ldr r3, [r7, #20] - 8045462: 429a cmp r2, r3 - 8045464: d01b beq.n 804549e + 804549e: 68fa ldr r2, [r7, #12] + 80454a0: 697b ldr r3, [r7, #20] + 80454a2: 429a cmp r2, r3 + 80454a4: d01b beq.n 80454de if (!ip_get_option(pcb, SOF_REUSEADDR) || !ip_get_option(ipcb, SOF_REUSEADDR)) #endif /* SO_REUSE */ { /* port matches that of PCB in list and REUSEADDR not set -> reject */ if ((ipcb->local_port == port) && - 8045466: 697b ldr r3, [r7, #20] - 8045468: 8a5b ldrh r3, [r3, #18] - 804546a: 88fa ldrh r2, [r7, #6] - 804546c: 429a cmp r2, r3 - 804546e: d116 bne.n 804549e + 80454a6: 697b ldr r3, [r7, #20] + 80454a8: 8a5b ldrh r3, [r3, #18] + 80454aa: 88fa ldrh r2, [r7, #6] + 80454ac: 429a cmp r2, r3 + 80454ae: d116 bne.n 80454de /* IP address matches or any IP used? */ (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 8045470: 697b ldr r3, [r7, #20] - 8045472: 681a ldr r2, [r3, #0] - 8045474: 68bb ldr r3, [r7, #8] - 8045476: 681b ldr r3, [r3, #0] + 80454b0: 697b ldr r3, [r7, #20] + 80454b2: 681a ldr r2, [r3, #0] + 80454b4: 68bb ldr r3, [r7, #8] + 80454b6: 681b ldr r3, [r3, #0] if ((ipcb->local_port == port) && - 8045478: 429a cmp r2, r3 - 804547a: d00d beq.n 8045498 + 80454b8: 429a cmp r2, r3 + 80454ba: d00d beq.n 80454d8 (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 804547c: 68bb ldr r3, [r7, #8] - 804547e: 2b00 cmp r3, #0 - 8045480: d00a beq.n 8045498 - 8045482: 68bb ldr r3, [r7, #8] - 8045484: 681b ldr r3, [r3, #0] - 8045486: 2b00 cmp r3, #0 - 8045488: d006 beq.n 8045498 + 80454bc: 68bb ldr r3, [r7, #8] + 80454be: 2b00 cmp r3, #0 + 80454c0: d00a beq.n 80454d8 + 80454c2: 68bb ldr r3, [r7, #8] + 80454c4: 681b ldr r3, [r3, #0] + 80454c6: 2b00 cmp r3, #0 + 80454c8: d006 beq.n 80454d8 ip_addr_isany(&ipcb->local_ip))) { - 804548a: 697b ldr r3, [r7, #20] + 80454ca: 697b ldr r3, [r7, #20] (ip_addr_cmp(&ipcb->local_ip, ipaddr) || ip_addr_isany(ipaddr) || - 804548c: 2b00 cmp r3, #0 - 804548e: d003 beq.n 8045498 + 80454cc: 2b00 cmp r3, #0 + 80454ce: d003 beq.n 80454d8 ip_addr_isany(&ipcb->local_ip))) { - 8045490: 697b ldr r3, [r7, #20] - 8045492: 681b ldr r3, [r3, #0] - 8045494: 2b00 cmp r3, #0 - 8045496: d102 bne.n 804549e + 80454d0: 697b ldr r3, [r7, #20] + 80454d2: 681b ldr r3, [r3, #0] + 80454d4: 2b00 cmp r3, #0 + 80454d6: d102 bne.n 80454de /* other PCB already binds to this local IP and port */ LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); return ERR_USE; - 8045498: f06f 0307 mvn.w r3, #7 - 804549c: e01c b.n 80454d8 + 80454d8: f06f 0307 mvn.w r3, #7 + 80454dc: e01c b.n 8045518 for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 804549e: 697b ldr r3, [r7, #20] - 80454a0: 68db ldr r3, [r3, #12] - 80454a2: 617b str r3, [r7, #20] - 80454a4: 697b ldr r3, [r7, #20] - 80454a6: 2b00 cmp r3, #0 - 80454a8: d1d9 bne.n 804545e + 80454de: 697b ldr r3, [r7, #20] + 80454e0: 68db ldr r3, [r3, #12] + 80454e2: 617b str r3, [r7, #20] + 80454e4: 697b ldr r3, [r7, #20] + 80454e6: 2b00 cmp r3, #0 + 80454e8: d1d9 bne.n 804549e } } } } ip_addr_set_ipaddr(&pcb->local_ip, ipaddr); - 80454aa: 68bb ldr r3, [r7, #8] - 80454ac: 2b00 cmp r3, #0 - 80454ae: d002 beq.n 80454b6 - 80454b0: 68bb ldr r3, [r7, #8] - 80454b2: 681b ldr r3, [r3, #0] - 80454b4: e000 b.n 80454b8 - 80454b6: 2300 movs r3, #0 - 80454b8: 68fa ldr r2, [r7, #12] - 80454ba: 6013 str r3, [r2, #0] + 80454ea: 68bb ldr r3, [r7, #8] + 80454ec: 2b00 cmp r3, #0 + 80454ee: d002 beq.n 80454f6 + 80454f0: 68bb ldr r3, [r7, #8] + 80454f2: 681b ldr r3, [r3, #0] + 80454f4: e000 b.n 80454f8 + 80454f6: 2300 movs r3, #0 + 80454f8: 68fa ldr r2, [r7, #12] + 80454fa: 6013 str r3, [r2, #0] pcb->local_port = port; - 80454bc: 68fb ldr r3, [r7, #12] - 80454be: 88fa ldrh r2, [r7, #6] - 80454c0: 825a strh r2, [r3, #18] + 80454fc: 68fb ldr r3, [r7, #12] + 80454fe: 88fa ldrh r2, [r7, #6] + 8045500: 825a strh r2, [r3, #18] mib2_udp_bind(pcb); /* pcb not active yet? */ if (rebind == 0) { - 80454c2: 7cfb ldrb r3, [r7, #19] - 80454c4: 2b00 cmp r3, #0 - 80454c6: d106 bne.n 80454d6 + 8045502: 7cfb ldrb r3, [r7, #19] + 8045504: 2b00 cmp r3, #0 + 8045506: d106 bne.n 8045516 /* place the PCB on the active list if not already there */ pcb->next = udp_pcbs; - 80454c8: 4b09 ldr r3, [pc, #36] ; (80454f0 ) - 80454ca: 681a ldr r2, [r3, #0] - 80454cc: 68fb ldr r3, [r7, #12] - 80454ce: 60da str r2, [r3, #12] + 8045508: 4b09 ldr r3, [pc, #36] ; (8045530 ) + 804550a: 681a ldr r2, [r3, #0] + 804550c: 68fb ldr r3, [r7, #12] + 804550e: 60da str r2, [r3, #12] udp_pcbs = pcb; - 80454d0: 4a07 ldr r2, [pc, #28] ; (80454f0 ) - 80454d2: 68fb ldr r3, [r7, #12] - 80454d4: 6013 str r3, [r2, #0] + 8045510: 4a07 ldr r2, [pc, #28] ; (8045530 ) + 8045512: 68fb ldr r3, [r7, #12] + 8045514: 6013 str r3, [r2, #0] } LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("udp_bind: bound to ")); ip_addr_debug_print_val(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, pcb->local_ip); LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->local_port)); return ERR_OK; - 80454d6: 2300 movs r3, #0 -} - 80454d8: 4618 mov r0, r3 - 80454da: 3718 adds r7, #24 - 80454dc: 46bd mov sp, r7 - 80454de: bd80 pop {r7, pc} - 80454e0: 0804d488 .word 0x0804d488 - 80454e4: 0804c11c .word 0x0804c11c - 80454e8: 0804c3e4 .word 0x0804c3e4 - 80454ec: 0804c170 .word 0x0804c170 - 80454f0: 2400eb44 .word 0x2400eb44 - -080454f4 : + 8045516: 2300 movs r3, #0 +} + 8045518: 4618 mov r0, r3 + 804551a: 3718 adds r7, #24 + 804551c: 46bd mov sp, r7 + 804551e: bd80 pop {r7, pc} + 8045520: 0804d4c8 .word 0x0804d4c8 + 8045524: 0804c15c .word 0x0804c15c + 8045528: 0804c424 .word 0x0804c424 + 804552c: 0804c1b0 .word 0x0804c1b0 + 8045530: 2400eb44 .word 0x2400eb44 + +08045534 : * * @see udp_disconnect() */ err_t udp_connect(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) { - 80454f4: b580 push {r7, lr} - 80454f6: b086 sub sp, #24 - 80454f8: af00 add r7, sp, #0 - 80454fa: 60f8 str r0, [r7, #12] - 80454fc: 60b9 str r1, [r7, #8] - 80454fe: 4613 mov r3, r2 - 8045500: 80fb strh r3, [r7, #6] + 8045534: b580 push {r7, lr} + 8045536: b086 sub sp, #24 + 8045538: af00 add r7, sp, #0 + 804553a: 60f8 str r0, [r7, #12] + 804553c: 60b9 str r1, [r7, #8] + 804553e: 4613 mov r3, r2 + 8045540: 80fb strh r3, [r7, #6] struct udp_pcb *ipcb; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("udp_connect: invalid pcb", pcb != NULL, return ERR_ARG); - 8045502: 68fb ldr r3, [r7, #12] - 8045504: 2b00 cmp r3, #0 - 8045506: d109 bne.n 804551c - 8045508: 4b2c ldr r3, [pc, #176] ; (80455bc ) - 804550a: f240 4235 movw r2, #1077 ; 0x435 - 804550e: 492c ldr r1, [pc, #176] ; (80455c0 ) - 8045510: 482c ldr r0, [pc, #176] ; (80455c4 ) - 8045512: f002 fd47 bl 8047fa4 - 8045516: f06f 030f mvn.w r3, #15 - 804551a: e04b b.n 80455b4 + 8045542: 68fb ldr r3, [r7, #12] + 8045544: 2b00 cmp r3, #0 + 8045546: d109 bne.n 804555c + 8045548: 4b2c ldr r3, [pc, #176] ; (80455fc ) + 804554a: f240 4235 movw r2, #1077 ; 0x435 + 804554e: 492c ldr r1, [pc, #176] ; (8045600 ) + 8045550: 482c ldr r0, [pc, #176] ; (8045604 ) + 8045552: f002 fd47 bl 8047fe4 + 8045556: f06f 030f mvn.w r3, #15 + 804555a: e04b b.n 80455f4 LWIP_ERROR("udp_connect: invalid ipaddr", ipaddr != NULL, return ERR_ARG); - 804551c: 68bb ldr r3, [r7, #8] - 804551e: 2b00 cmp r3, #0 - 8045520: d109 bne.n 8045536 - 8045522: 4b26 ldr r3, [pc, #152] ; (80455bc ) - 8045524: f240 4236 movw r2, #1078 ; 0x436 - 8045528: 4927 ldr r1, [pc, #156] ; (80455c8 ) - 804552a: 4826 ldr r0, [pc, #152] ; (80455c4 ) - 804552c: f002 fd3a bl 8047fa4 - 8045530: f06f 030f mvn.w r3, #15 - 8045534: e03e b.n 80455b4 + 804555c: 68bb ldr r3, [r7, #8] + 804555e: 2b00 cmp r3, #0 + 8045560: d109 bne.n 8045576 + 8045562: 4b26 ldr r3, [pc, #152] ; (80455fc ) + 8045564: f240 4236 movw r2, #1078 ; 0x436 + 8045568: 4927 ldr r1, [pc, #156] ; (8045608 ) + 804556a: 4826 ldr r0, [pc, #152] ; (8045604 ) + 804556c: f002 fd3a bl 8047fe4 + 8045570: f06f 030f mvn.w r3, #15 + 8045574: e03e b.n 80455f4 if (pcb->local_port == 0) { - 8045536: 68fb ldr r3, [r7, #12] - 8045538: 8a5b ldrh r3, [r3, #18] - 804553a: 2b00 cmp r3, #0 - 804553c: d10f bne.n 804555e + 8045576: 68fb ldr r3, [r7, #12] + 8045578: 8a5b ldrh r3, [r3, #18] + 804557a: 2b00 cmp r3, #0 + 804557c: d10f bne.n 804559e err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - 804553e: 68f9 ldr r1, [r7, #12] - 8045540: 68fb ldr r3, [r7, #12] - 8045542: 8a5b ldrh r3, [r3, #18] - 8045544: 461a mov r2, r3 - 8045546: 68f8 ldr r0, [r7, #12] - 8045548: f7ff ff4c bl 80453e4 - 804554c: 4603 mov r3, r0 - 804554e: 74fb strb r3, [r7, #19] + 804557e: 68f9 ldr r1, [r7, #12] + 8045580: 68fb ldr r3, [r7, #12] + 8045582: 8a5b ldrh r3, [r3, #18] + 8045584: 461a mov r2, r3 + 8045586: 68f8 ldr r0, [r7, #12] + 8045588: f7ff ff4c bl 8045424 + 804558c: 4603 mov r3, r0 + 804558e: 74fb strb r3, [r7, #19] if (err != ERR_OK) { - 8045550: f997 3013 ldrsb.w r3, [r7, #19] - 8045554: 2b00 cmp r3, #0 - 8045556: d002 beq.n 804555e + 8045590: f997 3013 ldrsb.w r3, [r7, #19] + 8045594: 2b00 cmp r3, #0 + 8045596: d002 beq.n 804559e return err; - 8045558: f997 3013 ldrsb.w r3, [r7, #19] - 804555c: e02a b.n 80455b4 + 8045598: f997 3013 ldrsb.w r3, [r7, #19] + 804559c: e02a b.n 80455f4 } } ip_addr_set_ipaddr(&pcb->remote_ip, ipaddr); - 804555e: 68bb ldr r3, [r7, #8] - 8045560: 2b00 cmp r3, #0 - 8045562: d002 beq.n 804556a - 8045564: 68bb ldr r3, [r7, #8] - 8045566: 681b ldr r3, [r3, #0] - 8045568: e000 b.n 804556c - 804556a: 2300 movs r3, #0 - 804556c: 68fa ldr r2, [r7, #12] - 804556e: 6053 str r3, [r2, #4] + 804559e: 68bb ldr r3, [r7, #8] + 80455a0: 2b00 cmp r3, #0 + 80455a2: d002 beq.n 80455aa + 80455a4: 68bb ldr r3, [r7, #8] + 80455a6: 681b ldr r3, [r3, #0] + 80455a8: e000 b.n 80455ac + 80455aa: 2300 movs r3, #0 + 80455ac: 68fa ldr r2, [r7, #12] + 80455ae: 6053 str r3, [r2, #4] ip6_addr_lacks_zone(ip_2_ip6(&pcb->remote_ip), IP6_UNKNOWN)) { ip6_addr_select_zone(ip_2_ip6(&pcb->remote_ip), ip_2_ip6(&pcb->local_ip)); } #endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */ pcb->remote_port = port; - 8045570: 68fb ldr r3, [r7, #12] - 8045572: 88fa ldrh r2, [r7, #6] - 8045574: 829a strh r2, [r3, #20] + 80455b0: 68fb ldr r3, [r7, #12] + 80455b2: 88fa ldrh r2, [r7, #6] + 80455b4: 829a strh r2, [r3, #20] pcb->flags |= UDP_FLAGS_CONNECTED; - 8045576: 68fb ldr r3, [r7, #12] - 8045578: 7c1b ldrb r3, [r3, #16] - 804557a: f043 0304 orr.w r3, r3, #4 - 804557e: b2da uxtb r2, r3 - 8045580: 68fb ldr r3, [r7, #12] - 8045582: 741a strb r2, [r3, #16] + 80455b6: 68fb ldr r3, [r7, #12] + 80455b8: 7c1b ldrb r3, [r3, #16] + 80455ba: f043 0304 orr.w r3, r3, #4 + 80455be: b2da uxtb r2, r3 + 80455c0: 68fb ldr r3, [r7, #12] + 80455c2: 741a strb r2, [r3, #16] ip_addr_debug_print_val(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, pcb->remote_ip); LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->remote_port)); /* Insert UDP PCB into the list of active UDP PCBs. */ for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 8045584: 4b11 ldr r3, [pc, #68] ; (80455cc ) - 8045586: 681b ldr r3, [r3, #0] - 8045588: 617b str r3, [r7, #20] - 804558a: e008 b.n 804559e + 80455c4: 4b11 ldr r3, [pc, #68] ; (804560c ) + 80455c6: 681b ldr r3, [r3, #0] + 80455c8: 617b str r3, [r7, #20] + 80455ca: e008 b.n 80455de if (pcb == ipcb) { - 804558c: 68fa ldr r2, [r7, #12] - 804558e: 697b ldr r3, [r7, #20] - 8045590: 429a cmp r2, r3 - 8045592: d101 bne.n 8045598 + 80455cc: 68fa ldr r2, [r7, #12] + 80455ce: 697b ldr r3, [r7, #20] + 80455d0: 429a cmp r2, r3 + 80455d2: d101 bne.n 80455d8 /* already on the list, just return */ return ERR_OK; - 8045594: 2300 movs r3, #0 - 8045596: e00d b.n 80455b4 + 80455d4: 2300 movs r3, #0 + 80455d6: e00d b.n 80455f4 for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - 8045598: 697b ldr r3, [r7, #20] - 804559a: 68db ldr r3, [r3, #12] - 804559c: 617b str r3, [r7, #20] - 804559e: 697b ldr r3, [r7, #20] - 80455a0: 2b00 cmp r3, #0 - 80455a2: d1f3 bne.n 804558c + 80455d8: 697b ldr r3, [r7, #20] + 80455da: 68db ldr r3, [r3, #12] + 80455dc: 617b str r3, [r7, #20] + 80455de: 697b ldr r3, [r7, #20] + 80455e0: 2b00 cmp r3, #0 + 80455e2: d1f3 bne.n 80455cc } } /* PCB not yet on the list, add PCB now */ pcb->next = udp_pcbs; - 80455a4: 4b09 ldr r3, [pc, #36] ; (80455cc ) - 80455a6: 681a ldr r2, [r3, #0] - 80455a8: 68fb ldr r3, [r7, #12] - 80455aa: 60da str r2, [r3, #12] + 80455e4: 4b09 ldr r3, [pc, #36] ; (804560c ) + 80455e6: 681a ldr r2, [r3, #0] + 80455e8: 68fb ldr r3, [r7, #12] + 80455ea: 60da str r2, [r3, #12] udp_pcbs = pcb; - 80455ac: 4a07 ldr r2, [pc, #28] ; (80455cc ) - 80455ae: 68fb ldr r3, [r7, #12] - 80455b0: 6013 str r3, [r2, #0] + 80455ec: 4a07 ldr r2, [pc, #28] ; (804560c ) + 80455ee: 68fb ldr r3, [r7, #12] + 80455f0: 6013 str r3, [r2, #0] return ERR_OK; - 80455b2: 2300 movs r3, #0 -} - 80455b4: 4618 mov r0, r3 - 80455b6: 3718 adds r7, #24 - 80455b8: 46bd mov sp, r7 - 80455ba: bd80 pop {r7, pc} - 80455bc: 0804c11c .word 0x0804c11c - 80455c0: 0804c3fc .word 0x0804c3fc - 80455c4: 0804c170 .word 0x0804c170 - 80455c8: 0804c418 .word 0x0804c418 - 80455cc: 2400eb44 .word 0x2400eb44 - -080455d0 : + 80455f2: 2300 movs r3, #0 +} + 80455f4: 4618 mov r0, r3 + 80455f6: 3718 adds r7, #24 + 80455f8: 46bd mov sp, r7 + 80455fa: bd80 pop {r7, pc} + 80455fc: 0804c15c .word 0x0804c15c + 8045600: 0804c43c .word 0x0804c43c + 8045604: 0804c1b0 .word 0x0804c1b0 + 8045608: 0804c458 .word 0x0804c458 + 804560c: 2400eb44 .word 0x2400eb44 + +08045610 : * @param recv function pointer of the callback function * @param recv_arg additional argument to pass to the callback function */ void udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg) { - 80455d0: b580 push {r7, lr} - 80455d2: b084 sub sp, #16 - 80455d4: af00 add r7, sp, #0 - 80455d6: 60f8 str r0, [r7, #12] - 80455d8: 60b9 str r1, [r7, #8] - 80455da: 607a str r2, [r7, #4] + 8045610: b580 push {r7, lr} + 8045612: b084 sub sp, #16 + 8045614: af00 add r7, sp, #0 + 8045616: 60f8 str r0, [r7, #12] + 8045618: 60b9 str r1, [r7, #8] + 804561a: 607a str r2, [r7, #4] LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("udp_recv: invalid pcb", pcb != NULL, return); - 80455dc: 68fb ldr r3, [r7, #12] - 80455de: 2b00 cmp r3, #0 - 80455e0: d107 bne.n 80455f2 - 80455e2: 4b08 ldr r3, [pc, #32] ; (8045604 ) - 80455e4: f240 428a movw r2, #1162 ; 0x48a - 80455e8: 4907 ldr r1, [pc, #28] ; (8045608 ) - 80455ea: 4808 ldr r0, [pc, #32] ; (804560c ) - 80455ec: f002 fcda bl 8047fa4 - 80455f0: e005 b.n 80455fe + 804561c: 68fb ldr r3, [r7, #12] + 804561e: 2b00 cmp r3, #0 + 8045620: d107 bne.n 8045632 + 8045622: 4b08 ldr r3, [pc, #32] ; (8045644 ) + 8045624: f240 428a movw r2, #1162 ; 0x48a + 8045628: 4907 ldr r1, [pc, #28] ; (8045648 ) + 804562a: 4808 ldr r0, [pc, #32] ; (804564c ) + 804562c: f002 fcda bl 8047fe4 + 8045630: e005 b.n 804563e /* remember recv() callback and user data */ pcb->recv = recv; - 80455f2: 68fb ldr r3, [r7, #12] - 80455f4: 68ba ldr r2, [r7, #8] - 80455f6: 619a str r2, [r3, #24] + 8045632: 68fb ldr r3, [r7, #12] + 8045634: 68ba ldr r2, [r7, #8] + 8045636: 619a str r2, [r3, #24] pcb->recv_arg = recv_arg; - 80455f8: 68fb ldr r3, [r7, #12] - 80455fa: 687a ldr r2, [r7, #4] - 80455fc: 61da str r2, [r3, #28] -} - 80455fe: 3710 adds r7, #16 - 8045600: 46bd mov sp, r7 - 8045602: bd80 pop {r7, pc} - 8045604: 0804c11c .word 0x0804c11c - 8045608: 0804c450 .word 0x0804c450 - 804560c: 0804c170 .word 0x0804c170 - -08045610 : + 8045638: 68fb ldr r3, [r7, #12] + 804563a: 687a ldr r2, [r7, #4] + 804563c: 61da str r2, [r3, #28] +} + 804563e: 3710 adds r7, #16 + 8045640: 46bd mov sp, r7 + 8045642: bd80 pop {r7, pc} + 8045644: 0804c15c .word 0x0804c15c + 8045648: 0804c490 .word 0x0804c490 + 804564c: 0804c1b0 .word 0x0804c1b0 + +08045650 : * * @see udp_new() */ void udp_remove(struct udp_pcb *pcb) { - 8045610: b580 push {r7, lr} - 8045612: b084 sub sp, #16 - 8045614: af00 add r7, sp, #0 - 8045616: 6078 str r0, [r7, #4] + 8045650: b580 push {r7, lr} + 8045652: b084 sub sp, #16 + 8045654: af00 add r7, sp, #0 + 8045656: 6078 str r0, [r7, #4] struct udp_pcb *pcb2; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("udp_remove: invalid pcb", pcb != NULL, return); - 8045618: 687b ldr r3, [r7, #4] - 804561a: 2b00 cmp r3, #0 - 804561c: d107 bne.n 804562e - 804561e: 4b19 ldr r3, [pc, #100] ; (8045684 ) - 8045620: f240 42a1 movw r2, #1185 ; 0x4a1 - 8045624: 4918 ldr r1, [pc, #96] ; (8045688 ) - 8045626: 4819 ldr r0, [pc, #100] ; (804568c ) - 8045628: f002 fcbc bl 8047fa4 - 804562c: e026 b.n 804567c + 8045658: 687b ldr r3, [r7, #4] + 804565a: 2b00 cmp r3, #0 + 804565c: d107 bne.n 804566e + 804565e: 4b19 ldr r3, [pc, #100] ; (80456c4 ) + 8045660: f240 42a1 movw r2, #1185 ; 0x4a1 + 8045664: 4918 ldr r1, [pc, #96] ; (80456c8 ) + 8045666: 4819 ldr r0, [pc, #100] ; (80456cc ) + 8045668: f002 fcbc bl 8047fe4 + 804566c: e026 b.n 80456bc mib2_udp_unbind(pcb); /* pcb to be removed is first in list? */ if (udp_pcbs == pcb) { - 804562e: 4b18 ldr r3, [pc, #96] ; (8045690 ) - 8045630: 681b ldr r3, [r3, #0] - 8045632: 687a ldr r2, [r7, #4] - 8045634: 429a cmp r2, r3 - 8045636: d105 bne.n 8045644 + 804566e: 4b18 ldr r3, [pc, #96] ; (80456d0 ) + 8045670: 681b ldr r3, [r3, #0] + 8045672: 687a ldr r2, [r7, #4] + 8045674: 429a cmp r2, r3 + 8045676: d105 bne.n 8045684 /* make list start at 2nd pcb */ udp_pcbs = udp_pcbs->next; - 8045638: 4b15 ldr r3, [pc, #84] ; (8045690 ) - 804563a: 681b ldr r3, [r3, #0] - 804563c: 68db ldr r3, [r3, #12] - 804563e: 4a14 ldr r2, [pc, #80] ; (8045690 ) - 8045640: 6013 str r3, [r2, #0] - 8045642: e017 b.n 8045674 + 8045678: 4b15 ldr r3, [pc, #84] ; (80456d0 ) + 804567a: 681b ldr r3, [r3, #0] + 804567c: 68db ldr r3, [r3, #12] + 804567e: 4a14 ldr r2, [pc, #80] ; (80456d0 ) + 8045680: 6013 str r3, [r2, #0] + 8045682: e017 b.n 80456b4 /* pcb not 1st in list */ } else { for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - 8045644: 4b12 ldr r3, [pc, #72] ; (8045690 ) - 8045646: 681b ldr r3, [r3, #0] - 8045648: 60fb str r3, [r7, #12] - 804564a: e010 b.n 804566e + 8045684: 4b12 ldr r3, [pc, #72] ; (80456d0 ) + 8045686: 681b ldr r3, [r3, #0] + 8045688: 60fb str r3, [r7, #12] + 804568a: e010 b.n 80456ae /* find pcb in udp_pcbs list */ if (pcb2->next != NULL && pcb2->next == pcb) { - 804564c: 68fb ldr r3, [r7, #12] - 804564e: 68db ldr r3, [r3, #12] - 8045650: 2b00 cmp r3, #0 - 8045652: d009 beq.n 8045668 - 8045654: 68fb ldr r3, [r7, #12] - 8045656: 68db ldr r3, [r3, #12] - 8045658: 687a ldr r2, [r7, #4] - 804565a: 429a cmp r2, r3 - 804565c: d104 bne.n 8045668 + 804568c: 68fb ldr r3, [r7, #12] + 804568e: 68db ldr r3, [r3, #12] + 8045690: 2b00 cmp r3, #0 + 8045692: d009 beq.n 80456a8 + 8045694: 68fb ldr r3, [r7, #12] + 8045696: 68db ldr r3, [r3, #12] + 8045698: 687a ldr r2, [r7, #4] + 804569a: 429a cmp r2, r3 + 804569c: d104 bne.n 80456a8 /* remove pcb from list */ pcb2->next = pcb->next; - 804565e: 687b ldr r3, [r7, #4] - 8045660: 68da ldr r2, [r3, #12] - 8045662: 68fb ldr r3, [r7, #12] - 8045664: 60da str r2, [r3, #12] + 804569e: 687b ldr r3, [r7, #4] + 80456a0: 68da ldr r2, [r3, #12] + 80456a2: 68fb ldr r3, [r7, #12] + 80456a4: 60da str r2, [r3, #12] break; - 8045666: e005 b.n 8045674 + 80456a6: e005 b.n 80456b4 for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - 8045668: 68fb ldr r3, [r7, #12] - 804566a: 68db ldr r3, [r3, #12] - 804566c: 60fb str r3, [r7, #12] - 804566e: 68fb ldr r3, [r7, #12] - 8045670: 2b00 cmp r3, #0 - 8045672: d1eb bne.n 804564c + 80456a8: 68fb ldr r3, [r7, #12] + 80456aa: 68db ldr r3, [r3, #12] + 80456ac: 60fb str r3, [r7, #12] + 80456ae: 68fb ldr r3, [r7, #12] + 80456b0: 2b00 cmp r3, #0 + 80456b2: d1eb bne.n 804568c } } } memp_free(MEMP_UDP_PCB, pcb); - 8045674: 6879 ldr r1, [r7, #4] - 8045676: 2000 movs r0, #0 - 8045678: f7f8 fa48 bl 803db0c -} - 804567c: 3710 adds r7, #16 - 804567e: 46bd mov sp, r7 - 8045680: bd80 pop {r7, pc} - 8045682: bf00 nop - 8045684: 0804c11c .word 0x0804c11c - 8045688: 0804c468 .word 0x0804c468 - 804568c: 0804c170 .word 0x0804c170 - 8045690: 2400eb44 .word 0x2400eb44 - -08045694 : + 80456b4: 6879 ldr r1, [r7, #4] + 80456b6: 2000 movs r0, #0 + 80456b8: f7f8 fa48 bl 803db4c +} + 80456bc: 3710 adds r7, #16 + 80456be: 46bd mov sp, r7 + 80456c0: bd80 pop {r7, pc} + 80456c2: bf00 nop + 80456c4: 0804c15c .word 0x0804c15c + 80456c8: 0804c4a8 .word 0x0804c4a8 + 80456cc: 0804c1b0 .word 0x0804c1b0 + 80456d0: 2400eb44 .word 0x2400eb44 + +080456d4 : * * @see udp_remove() */ struct udp_pcb * udp_new(void) { - 8045694: b580 push {r7, lr} - 8045696: b082 sub sp, #8 - 8045698: af00 add r7, sp, #0 + 80456d4: b580 push {r7, lr} + 80456d6: b082 sub sp, #8 + 80456d8: af00 add r7, sp, #0 struct udp_pcb *pcb; LWIP_ASSERT_CORE_LOCKED(); pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB); - 804569a: 2000 movs r0, #0 - 804569c: f7f8 f9c6 bl 803da2c - 80456a0: 6078 str r0, [r7, #4] + 80456da: 2000 movs r0, #0 + 80456dc: f7f8 f9c6 bl 803da6c + 80456e0: 6078 str r0, [r7, #4] /* could allocate UDP PCB? */ if (pcb != NULL) { - 80456a2: 687b ldr r3, [r7, #4] - 80456a4: 2b00 cmp r3, #0 - 80456a6: d007 beq.n 80456b8 + 80456e2: 687b ldr r3, [r7, #4] + 80456e4: 2b00 cmp r3, #0 + 80456e6: d007 beq.n 80456f8 /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0 * which means checksum is generated over the whole datagram per default * (recommended as default by RFC 3828). */ /* initialize PCB to all zeroes */ memset(pcb, 0, sizeof(struct udp_pcb)); - 80456a8: 2220 movs r2, #32 - 80456aa: 2100 movs r1, #0 - 80456ac: 6878 ldr r0, [r7, #4] - 80456ae: f002 fb91 bl 8047dd4 + 80456e8: 2220 movs r2, #32 + 80456ea: 2100 movs r1, #0 + 80456ec: 6878 ldr r0, [r7, #4] + 80456ee: f002 fb91 bl 8047e14 pcb->ttl = UDP_TTL; - 80456b2: 687b ldr r3, [r7, #4] - 80456b4: 22ff movs r2, #255 ; 0xff - 80456b6: 72da strb r2, [r3, #11] + 80456f2: 687b ldr r3, [r7, #4] + 80456f4: 22ff movs r2, #255 ; 0xff + 80456f6: 72da strb r2, [r3, #11] #if LWIP_MULTICAST_TX_OPTIONS udp_set_multicast_ttl(pcb, UDP_TTL); #endif /* LWIP_MULTICAST_TX_OPTIONS */ } return pcb; - 80456b8: 687b ldr r3, [r7, #4] + 80456f8: 687b ldr r3, [r7, #4] } - 80456ba: 4618 mov r0, r3 - 80456bc: 3708 adds r7, #8 - 80456be: 46bd mov sp, r7 - 80456c0: bd80 pop {r7, pc} + 80456fa: 4618 mov r0, r3 + 80456fc: 3708 adds r7, #8 + 80456fe: 46bd mov sp, r7 + 8045700: bd80 pop {r7, pc} ... -080456c4 : +08045704 : * * @param old_addr IP address of the netif before change * @param new_addr IP address of the netif after change */ void udp_netif_ip_addr_changed(const ip_addr_t *old_addr, const ip_addr_t *new_addr) { - 80456c4: b480 push {r7} - 80456c6: b085 sub sp, #20 - 80456c8: af00 add r7, sp, #0 - 80456ca: 6078 str r0, [r7, #4] - 80456cc: 6039 str r1, [r7, #0] + 8045704: b480 push {r7} + 8045706: b085 sub sp, #20 + 8045708: af00 add r7, sp, #0 + 804570a: 6078 str r0, [r7, #4] + 804570c: 6039 str r1, [r7, #0] struct udp_pcb *upcb; if (!ip_addr_isany(old_addr) && !ip_addr_isany(new_addr)) { - 80456ce: 687b ldr r3, [r7, #4] - 80456d0: 2b00 cmp r3, #0 - 80456d2: d01e beq.n 8045712 - 80456d4: 687b ldr r3, [r7, #4] - 80456d6: 681b ldr r3, [r3, #0] - 80456d8: 2b00 cmp r3, #0 - 80456da: d01a beq.n 8045712 - 80456dc: 683b ldr r3, [r7, #0] - 80456de: 2b00 cmp r3, #0 - 80456e0: d017 beq.n 8045712 - 80456e2: 683b ldr r3, [r7, #0] - 80456e4: 681b ldr r3, [r3, #0] - 80456e6: 2b00 cmp r3, #0 - 80456e8: d013 beq.n 8045712 + 804570e: 687b ldr r3, [r7, #4] + 8045710: 2b00 cmp r3, #0 + 8045712: d01e beq.n 8045752 + 8045714: 687b ldr r3, [r7, #4] + 8045716: 681b ldr r3, [r3, #0] + 8045718: 2b00 cmp r3, #0 + 804571a: d01a beq.n 8045752 + 804571c: 683b ldr r3, [r7, #0] + 804571e: 2b00 cmp r3, #0 + 8045720: d017 beq.n 8045752 + 8045722: 683b ldr r3, [r7, #0] + 8045724: 681b ldr r3, [r3, #0] + 8045726: 2b00 cmp r3, #0 + 8045728: d013 beq.n 8045752 for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) { - 80456ea: 4b0d ldr r3, [pc, #52] ; (8045720 ) - 80456ec: 681b ldr r3, [r3, #0] - 80456ee: 60fb str r3, [r7, #12] - 80456f0: e00c b.n 804570c + 804572a: 4b0d ldr r3, [pc, #52] ; (8045760 ) + 804572c: 681b ldr r3, [r3, #0] + 804572e: 60fb str r3, [r7, #12] + 8045730: e00c b.n 804574c /* PCB bound to current local interface address? */ if (ip_addr_cmp(&upcb->local_ip, old_addr)) { - 80456f2: 68fb ldr r3, [r7, #12] - 80456f4: 681a ldr r2, [r3, #0] - 80456f6: 687b ldr r3, [r7, #4] - 80456f8: 681b ldr r3, [r3, #0] - 80456fa: 429a cmp r2, r3 - 80456fc: d103 bne.n 8045706 + 8045732: 68fb ldr r3, [r7, #12] + 8045734: 681a ldr r2, [r3, #0] + 8045736: 687b ldr r3, [r7, #4] + 8045738: 681b ldr r3, [r3, #0] + 804573a: 429a cmp r2, r3 + 804573c: d103 bne.n 8045746 /* The PCB is bound to the old ipaddr and * is set to bound to the new one instead */ ip_addr_copy(upcb->local_ip, *new_addr); - 80456fe: 683b ldr r3, [r7, #0] - 8045700: 681a ldr r2, [r3, #0] - 8045702: 68fb ldr r3, [r7, #12] - 8045704: 601a str r2, [r3, #0] + 804573e: 683b ldr r3, [r7, #0] + 8045740: 681a ldr r2, [r3, #0] + 8045742: 68fb ldr r3, [r7, #12] + 8045744: 601a str r2, [r3, #0] for (upcb = udp_pcbs; upcb != NULL; upcb = upcb->next) { - 8045706: 68fb ldr r3, [r7, #12] - 8045708: 68db ldr r3, [r3, #12] - 804570a: 60fb str r3, [r7, #12] - 804570c: 68fb ldr r3, [r7, #12] - 804570e: 2b00 cmp r3, #0 - 8045710: d1ef bne.n 80456f2 + 8045746: 68fb ldr r3, [r7, #12] + 8045748: 68db ldr r3, [r3, #12] + 804574a: 60fb str r3, [r7, #12] + 804574c: 68fb ldr r3, [r7, #12] + 804574e: 2b00 cmp r3, #0 + 8045750: d1ef bne.n 8045732 } } } } - 8045712: bf00 nop - 8045714: 3714 adds r7, #20 - 8045716: 46bd mov sp, r7 - 8045718: f85d 7b04 ldr.w r7, [sp], #4 - 804571c: 4770 bx lr - 804571e: bf00 nop - 8045720: 2400eb44 .word 0x2400eb44 + 8045752: bf00 nop + 8045754: 3714 adds r7, #20 + 8045756: 46bd mov sp, r7 + 8045758: f85d 7b04 ldr.w r7, [sp], #4 + 804575c: 4770 bx lr + 804575e: bf00 nop + 8045760: 2400eb44 .word 0x2400eb44 -08045724 : +08045764 : #endif /* ARP_QUEUEING */ /** Clean up ARP table entries */ static void etharp_free_entry(int i) { - 8045724: b580 push {r7, lr} - 8045726: b082 sub sp, #8 - 8045728: af00 add r7, sp, #0 - 804572a: 6078 str r0, [r7, #4] + 8045764: b580 push {r7, lr} + 8045766: b082 sub sp, #8 + 8045768: af00 add r7, sp, #0 + 804576a: 6078 str r0, [r7, #4] /* remove from SNMP ARP index tree */ mib2_remove_arp_entry(arp_table[i].netif, &arp_table[i].ipaddr); /* and empty packet queue */ if (arp_table[i].q != NULL) { - 804572c: 4915 ldr r1, [pc, #84] ; (8045784 ) - 804572e: 687a ldr r2, [r7, #4] - 8045730: 4613 mov r3, r2 - 8045732: 005b lsls r3, r3, #1 - 8045734: 4413 add r3, r2 - 8045736: 00db lsls r3, r3, #3 - 8045738: 440b add r3, r1 - 804573a: 681b ldr r3, [r3, #0] - 804573c: 2b00 cmp r3, #0 - 804573e: d013 beq.n 8045768 + 804576c: 4915 ldr r1, [pc, #84] ; (80457c4 ) + 804576e: 687a ldr r2, [r7, #4] + 8045770: 4613 mov r3, r2 + 8045772: 005b lsls r3, r3, #1 + 8045774: 4413 add r3, r2 + 8045776: 00db lsls r3, r3, #3 + 8045778: 440b add r3, r1 + 804577a: 681b ldr r3, [r3, #0] + 804577c: 2b00 cmp r3, #0 + 804577e: d013 beq.n 80457a8 /* remove all queued packets */ LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_free_entry: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q))); free_etharp_q(arp_table[i].q); - 8045740: 4910 ldr r1, [pc, #64] ; (8045784 ) - 8045742: 687a ldr r2, [r7, #4] - 8045744: 4613 mov r3, r2 - 8045746: 005b lsls r3, r3, #1 - 8045748: 4413 add r3, r2 - 804574a: 00db lsls r3, r3, #3 - 804574c: 440b add r3, r1 - 804574e: 681b ldr r3, [r3, #0] - 8045750: 4618 mov r0, r3 - 8045752: f7f9 f86d bl 803e830 + 8045780: 4910 ldr r1, [pc, #64] ; (80457c4 ) + 8045782: 687a ldr r2, [r7, #4] + 8045784: 4613 mov r3, r2 + 8045786: 005b lsls r3, r3, #1 + 8045788: 4413 add r3, r2 + 804578a: 00db lsls r3, r3, #3 + 804578c: 440b add r3, r1 + 804578e: 681b ldr r3, [r3, #0] + 8045790: 4618 mov r0, r3 + 8045792: f7f9 f86d bl 803e870 arp_table[i].q = NULL; - 8045756: 490b ldr r1, [pc, #44] ; (8045784 ) - 8045758: 687a ldr r2, [r7, #4] - 804575a: 4613 mov r3, r2 - 804575c: 005b lsls r3, r3, #1 - 804575e: 4413 add r3, r2 - 8045760: 00db lsls r3, r3, #3 - 8045762: 440b add r3, r1 - 8045764: 2200 movs r2, #0 - 8045766: 601a str r2, [r3, #0] + 8045796: 490b ldr r1, [pc, #44] ; (80457c4 ) + 8045798: 687a ldr r2, [r7, #4] + 804579a: 4613 mov r3, r2 + 804579c: 005b lsls r3, r3, #1 + 804579e: 4413 add r3, r2 + 80457a0: 00db lsls r3, r3, #3 + 80457a2: 440b add r3, r1 + 80457a4: 2200 movs r2, #0 + 80457a6: 601a str r2, [r3, #0] } /* recycle entry for re-use */ arp_table[i].state = ETHARP_STATE_EMPTY; - 8045768: 4906 ldr r1, [pc, #24] ; (8045784 ) - 804576a: 687a ldr r2, [r7, #4] - 804576c: 4613 mov r3, r2 - 804576e: 005b lsls r3, r3, #1 - 8045770: 4413 add r3, r2 - 8045772: 00db lsls r3, r3, #3 - 8045774: 440b add r3, r1 - 8045776: 3314 adds r3, #20 - 8045778: 2200 movs r2, #0 - 804577a: 701a strb r2, [r3, #0] + 80457a8: 4906 ldr r1, [pc, #24] ; (80457c4 ) + 80457aa: 687a ldr r2, [r7, #4] + 80457ac: 4613 mov r3, r2 + 80457ae: 005b lsls r3, r3, #1 + 80457b0: 4413 add r3, r2 + 80457b2: 00db lsls r3, r3, #3 + 80457b4: 440b add r3, r1 + 80457b6: 3314 adds r3, #20 + 80457b8: 2200 movs r2, #0 + 80457ba: 701a strb r2, [r3, #0] arp_table[i].ctime = 0; arp_table[i].netif = NULL; ip4_addr_set_zero(&arp_table[i].ipaddr); arp_table[i].ethaddr = ethzero; #endif /* LWIP_DEBUG */ } - 804577c: bf00 nop - 804577e: 3708 adds r7, #8 - 8045780: 46bd mov sp, r7 - 8045782: bd80 pop {r7, pc} - 8045784: 2400eb48 .word 0x2400eb48 + 80457bc: bf00 nop + 80457be: 3708 adds r7, #8 + 80457c0: 46bd mov sp, r7 + 80457c2: bd80 pop {r7, pc} + 80457c4: 2400eb48 .word 0x2400eb48 -08045788 : +080457c8 : * This function should be called every ARP_TMR_INTERVAL milliseconds (1 second), * in order to expire entries in the ARP table. */ void etharp_tmr(void) { - 8045788: b580 push {r7, lr} - 804578a: b082 sub sp, #8 - 804578c: af00 add r7, sp, #0 + 80457c8: b580 push {r7, lr} + 80457ca: b082 sub sp, #8 + 80457cc: af00 add r7, sp, #0 int i; LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n")); /* remove expired entries from the ARP table */ for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 804578e: 2300 movs r3, #0 - 8045790: 607b str r3, [r7, #4] - 8045792: e096 b.n 80458c2 + 80457ce: 2300 movs r3, #0 + 80457d0: 607b str r3, [r7, #4] + 80457d2: e096 b.n 8045902 u8_t state = arp_table[i].state; - 8045794: 494f ldr r1, [pc, #316] ; (80458d4 ) - 8045796: 687a ldr r2, [r7, #4] - 8045798: 4613 mov r3, r2 - 804579a: 005b lsls r3, r3, #1 - 804579c: 4413 add r3, r2 - 804579e: 00db lsls r3, r3, #3 - 80457a0: 440b add r3, r1 - 80457a2: 3314 adds r3, #20 - 80457a4: 781b ldrb r3, [r3, #0] - 80457a6: 70fb strb r3, [r7, #3] + 80457d4: 494f ldr r1, [pc, #316] ; (8045914 ) + 80457d6: 687a ldr r2, [r7, #4] + 80457d8: 4613 mov r3, r2 + 80457da: 005b lsls r3, r3, #1 + 80457dc: 4413 add r3, r2 + 80457de: 00db lsls r3, r3, #3 + 80457e0: 440b add r3, r1 + 80457e2: 3314 adds r3, #20 + 80457e4: 781b ldrb r3, [r3, #0] + 80457e6: 70fb strb r3, [r7, #3] if (state != ETHARP_STATE_EMPTY - 80457a8: 78fb ldrb r3, [r7, #3] - 80457aa: 2b00 cmp r3, #0 - 80457ac: f000 8086 beq.w 80458bc + 80457e8: 78fb ldrb r3, [r7, #3] + 80457ea: 2b00 cmp r3, #0 + 80457ec: f000 8086 beq.w 80458fc #if ETHARP_SUPPORT_STATIC_ENTRIES && (state != ETHARP_STATE_STATIC) #endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ ) { arp_table[i].ctime++; - 80457b0: 4948 ldr r1, [pc, #288] ; (80458d4 ) - 80457b2: 687a ldr r2, [r7, #4] - 80457b4: 4613 mov r3, r2 - 80457b6: 005b lsls r3, r3, #1 - 80457b8: 4413 add r3, r2 - 80457ba: 00db lsls r3, r3, #3 - 80457bc: 440b add r3, r1 - 80457be: 3312 adds r3, #18 - 80457c0: 881b ldrh r3, [r3, #0] - 80457c2: 3301 adds r3, #1 - 80457c4: b298 uxth r0, r3 - 80457c6: 4943 ldr r1, [pc, #268] ; (80458d4 ) - 80457c8: 687a ldr r2, [r7, #4] - 80457ca: 4613 mov r3, r2 - 80457cc: 005b lsls r3, r3, #1 - 80457ce: 4413 add r3, r2 - 80457d0: 00db lsls r3, r3, #3 - 80457d2: 440b add r3, r1 - 80457d4: 3312 adds r3, #18 - 80457d6: 4602 mov r2, r0 - 80457d8: 801a strh r2, [r3, #0] + 80457f0: 4948 ldr r1, [pc, #288] ; (8045914 ) + 80457f2: 687a ldr r2, [r7, #4] + 80457f4: 4613 mov r3, r2 + 80457f6: 005b lsls r3, r3, #1 + 80457f8: 4413 add r3, r2 + 80457fa: 00db lsls r3, r3, #3 + 80457fc: 440b add r3, r1 + 80457fe: 3312 adds r3, #18 + 8045800: 881b ldrh r3, [r3, #0] + 8045802: 3301 adds r3, #1 + 8045804: b298 uxth r0, r3 + 8045806: 4943 ldr r1, [pc, #268] ; (8045914 ) + 8045808: 687a ldr r2, [r7, #4] + 804580a: 4613 mov r3, r2 + 804580c: 005b lsls r3, r3, #1 + 804580e: 4413 add r3, r2 + 8045810: 00db lsls r3, r3, #3 + 8045812: 440b add r3, r1 + 8045814: 3312 adds r3, #18 + 8045816: 4602 mov r2, r0 + 8045818: 801a strh r2, [r3, #0] if ((arp_table[i].ctime >= ARP_MAXAGE) || - 80457da: 493e ldr r1, [pc, #248] ; (80458d4 ) - 80457dc: 687a ldr r2, [r7, #4] - 80457de: 4613 mov r3, r2 - 80457e0: 005b lsls r3, r3, #1 - 80457e2: 4413 add r3, r2 - 80457e4: 00db lsls r3, r3, #3 - 80457e6: 440b add r3, r1 - 80457e8: 3312 adds r3, #18 - 80457ea: 881b ldrh r3, [r3, #0] - 80457ec: f5b3 7f96 cmp.w r3, #300 ; 0x12c - 80457f0: d215 bcs.n 804581e + 804581a: 493e ldr r1, [pc, #248] ; (8045914 ) + 804581c: 687a ldr r2, [r7, #4] + 804581e: 4613 mov r3, r2 + 8045820: 005b lsls r3, r3, #1 + 8045822: 4413 add r3, r2 + 8045824: 00db lsls r3, r3, #3 + 8045826: 440b add r3, r1 + 8045828: 3312 adds r3, #18 + 804582a: 881b ldrh r3, [r3, #0] + 804582c: f5b3 7f96 cmp.w r3, #300 ; 0x12c + 8045830: d215 bcs.n 804585e ((arp_table[i].state == ETHARP_STATE_PENDING) && - 80457f2: 4938 ldr r1, [pc, #224] ; (80458d4 ) - 80457f4: 687a ldr r2, [r7, #4] - 80457f6: 4613 mov r3, r2 - 80457f8: 005b lsls r3, r3, #1 - 80457fa: 4413 add r3, r2 - 80457fc: 00db lsls r3, r3, #3 - 80457fe: 440b add r3, r1 - 8045800: 3314 adds r3, #20 - 8045802: 781b ldrb r3, [r3, #0] + 8045832: 4938 ldr r1, [pc, #224] ; (8045914 ) + 8045834: 687a ldr r2, [r7, #4] + 8045836: 4613 mov r3, r2 + 8045838: 005b lsls r3, r3, #1 + 804583a: 4413 add r3, r2 + 804583c: 00db lsls r3, r3, #3 + 804583e: 440b add r3, r1 + 8045840: 3314 adds r3, #20 + 8045842: 781b ldrb r3, [r3, #0] if ((arp_table[i].ctime >= ARP_MAXAGE) || - 8045804: 2b01 cmp r3, #1 - 8045806: d10e bne.n 8045826 + 8045844: 2b01 cmp r3, #1 + 8045846: d10e bne.n 8045866 (arp_table[i].ctime >= ARP_MAXPENDING))) { - 8045808: 4932 ldr r1, [pc, #200] ; (80458d4 ) - 804580a: 687a ldr r2, [r7, #4] - 804580c: 4613 mov r3, r2 - 804580e: 005b lsls r3, r3, #1 - 8045810: 4413 add r3, r2 - 8045812: 00db lsls r3, r3, #3 - 8045814: 440b add r3, r1 - 8045816: 3312 adds r3, #18 - 8045818: 881b ldrh r3, [r3, #0] + 8045848: 4932 ldr r1, [pc, #200] ; (8045914 ) + 804584a: 687a ldr r2, [r7, #4] + 804584c: 4613 mov r3, r2 + 804584e: 005b lsls r3, r3, #1 + 8045850: 4413 add r3, r2 + 8045852: 00db lsls r3, r3, #3 + 8045854: 440b add r3, r1 + 8045856: 3312 adds r3, #18 + 8045858: 881b ldrh r3, [r3, #0] ((arp_table[i].state == ETHARP_STATE_PENDING) && - 804581a: 2b04 cmp r3, #4 - 804581c: d903 bls.n 8045826 + 804585a: 2b04 cmp r3, #4 + 804585c: d903 bls.n 8045866 /* pending or stable entry has become old! */ LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %d.\n", arp_table[i].state >= ETHARP_STATE_STABLE ? "stable" : "pending", i)); /* clean up entries that have just been expired */ etharp_free_entry(i); - 804581e: 6878 ldr r0, [r7, #4] - 8045820: f7ff ff80 bl 8045724 - 8045824: e04a b.n 80458bc + 804585e: 6878 ldr r0, [r7, #4] + 8045860: f7ff ff80 bl 8045764 + 8045864: e04a b.n 80458fc } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_1) { - 8045826: 492b ldr r1, [pc, #172] ; (80458d4 ) - 8045828: 687a ldr r2, [r7, #4] - 804582a: 4613 mov r3, r2 - 804582c: 005b lsls r3, r3, #1 - 804582e: 4413 add r3, r2 - 8045830: 00db lsls r3, r3, #3 - 8045832: 440b add r3, r1 - 8045834: 3314 adds r3, #20 - 8045836: 781b ldrb r3, [r3, #0] - 8045838: 2b03 cmp r3, #3 - 804583a: d10a bne.n 8045852 + 8045866: 492b ldr r1, [pc, #172] ; (8045914 ) + 8045868: 687a ldr r2, [r7, #4] + 804586a: 4613 mov r3, r2 + 804586c: 005b lsls r3, r3, #1 + 804586e: 4413 add r3, r2 + 8045870: 00db lsls r3, r3, #3 + 8045872: 440b add r3, r1 + 8045874: 3314 adds r3, #20 + 8045876: 781b ldrb r3, [r3, #0] + 8045878: 2b03 cmp r3, #3 + 804587a: d10a bne.n 8045892 /* Don't send more than one request every 2 seconds. */ arp_table[i].state = ETHARP_STATE_STABLE_REREQUESTING_2; - 804583c: 4925 ldr r1, [pc, #148] ; (80458d4 ) - 804583e: 687a ldr r2, [r7, #4] - 8045840: 4613 mov r3, r2 - 8045842: 005b lsls r3, r3, #1 - 8045844: 4413 add r3, r2 - 8045846: 00db lsls r3, r3, #3 - 8045848: 440b add r3, r1 - 804584a: 3314 adds r3, #20 - 804584c: 2204 movs r2, #4 - 804584e: 701a strb r2, [r3, #0] - 8045850: e034 b.n 80458bc + 804587c: 4925 ldr r1, [pc, #148] ; (8045914 ) + 804587e: 687a ldr r2, [r7, #4] + 8045880: 4613 mov r3, r2 + 8045882: 005b lsls r3, r3, #1 + 8045884: 4413 add r3, r2 + 8045886: 00db lsls r3, r3, #3 + 8045888: 440b add r3, r1 + 804588a: 3314 adds r3, #20 + 804588c: 2204 movs r2, #4 + 804588e: 701a strb r2, [r3, #0] + 8045890: e034 b.n 80458fc } else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING_2) { - 8045852: 4920 ldr r1, [pc, #128] ; (80458d4 ) - 8045854: 687a ldr r2, [r7, #4] - 8045856: 4613 mov r3, r2 - 8045858: 005b lsls r3, r3, #1 - 804585a: 4413 add r3, r2 - 804585c: 00db lsls r3, r3, #3 - 804585e: 440b add r3, r1 - 8045860: 3314 adds r3, #20 - 8045862: 781b ldrb r3, [r3, #0] - 8045864: 2b04 cmp r3, #4 - 8045866: d10a bne.n 804587e + 8045892: 4920 ldr r1, [pc, #128] ; (8045914 ) + 8045894: 687a ldr r2, [r7, #4] + 8045896: 4613 mov r3, r2 + 8045898: 005b lsls r3, r3, #1 + 804589a: 4413 add r3, r2 + 804589c: 00db lsls r3, r3, #3 + 804589e: 440b add r3, r1 + 80458a0: 3314 adds r3, #20 + 80458a2: 781b ldrb r3, [r3, #0] + 80458a4: 2b04 cmp r3, #4 + 80458a6: d10a bne.n 80458be /* Reset state to stable, so that the next transmitted packet will re-send an ARP request. */ arp_table[i].state = ETHARP_STATE_STABLE; - 8045868: 491a ldr r1, [pc, #104] ; (80458d4 ) - 804586a: 687a ldr r2, [r7, #4] - 804586c: 4613 mov r3, r2 - 804586e: 005b lsls r3, r3, #1 - 8045870: 4413 add r3, r2 - 8045872: 00db lsls r3, r3, #3 - 8045874: 440b add r3, r1 - 8045876: 3314 adds r3, #20 - 8045878: 2202 movs r2, #2 - 804587a: 701a strb r2, [r3, #0] - 804587c: e01e b.n 80458bc + 80458a8: 491a ldr r1, [pc, #104] ; (8045914 ) + 80458aa: 687a ldr r2, [r7, #4] + 80458ac: 4613 mov r3, r2 + 80458ae: 005b lsls r3, r3, #1 + 80458b0: 4413 add r3, r2 + 80458b2: 00db lsls r3, r3, #3 + 80458b4: 440b add r3, r1 + 80458b6: 3314 adds r3, #20 + 80458b8: 2202 movs r2, #2 + 80458ba: 701a strb r2, [r3, #0] + 80458bc: e01e b.n 80458fc } else if (arp_table[i].state == ETHARP_STATE_PENDING) { - 804587e: 4915 ldr r1, [pc, #84] ; (80458d4 ) - 8045880: 687a ldr r2, [r7, #4] - 8045882: 4613 mov r3, r2 - 8045884: 005b lsls r3, r3, #1 - 8045886: 4413 add r3, r2 - 8045888: 00db lsls r3, r3, #3 - 804588a: 440b add r3, r1 - 804588c: 3314 adds r3, #20 - 804588e: 781b ldrb r3, [r3, #0] - 8045890: 2b01 cmp r3, #1 - 8045892: d113 bne.n 80458bc + 80458be: 4915 ldr r1, [pc, #84] ; (8045914 ) + 80458c0: 687a ldr r2, [r7, #4] + 80458c2: 4613 mov r3, r2 + 80458c4: 005b lsls r3, r3, #1 + 80458c6: 4413 add r3, r2 + 80458c8: 00db lsls r3, r3, #3 + 80458ca: 440b add r3, r1 + 80458cc: 3314 adds r3, #20 + 80458ce: 781b ldrb r3, [r3, #0] + 80458d0: 2b01 cmp r3, #1 + 80458d2: d113 bne.n 80458fc /* still pending, resend an ARP query */ etharp_request(arp_table[i].netif, &arp_table[i].ipaddr); - 8045894: 490f ldr r1, [pc, #60] ; (80458d4 ) - 8045896: 687a ldr r2, [r7, #4] - 8045898: 4613 mov r3, r2 - 804589a: 005b lsls r3, r3, #1 - 804589c: 4413 add r3, r2 - 804589e: 00db lsls r3, r3, #3 - 80458a0: 440b add r3, r1 - 80458a2: 3308 adds r3, #8 - 80458a4: 6818 ldr r0, [r3, #0] - 80458a6: 687a ldr r2, [r7, #4] - 80458a8: 4613 mov r3, r2 - 80458aa: 005b lsls r3, r3, #1 - 80458ac: 4413 add r3, r2 - 80458ae: 00db lsls r3, r3, #3 - 80458b0: 4a08 ldr r2, [pc, #32] ; (80458d4 ) - 80458b2: 4413 add r3, r2 - 80458b4: 3304 adds r3, #4 - 80458b6: 4619 mov r1, r3 - 80458b8: f000 fe6e bl 8046598 + 80458d4: 490f ldr r1, [pc, #60] ; (8045914 ) + 80458d6: 687a ldr r2, [r7, #4] + 80458d8: 4613 mov r3, r2 + 80458da: 005b lsls r3, r3, #1 + 80458dc: 4413 add r3, r2 + 80458de: 00db lsls r3, r3, #3 + 80458e0: 440b add r3, r1 + 80458e2: 3308 adds r3, #8 + 80458e4: 6818 ldr r0, [r3, #0] + 80458e6: 687a ldr r2, [r7, #4] + 80458e8: 4613 mov r3, r2 + 80458ea: 005b lsls r3, r3, #1 + 80458ec: 4413 add r3, r2 + 80458ee: 00db lsls r3, r3, #3 + 80458f0: 4a08 ldr r2, [pc, #32] ; (8045914 ) + 80458f2: 4413 add r3, r2 + 80458f4: 3304 adds r3, #4 + 80458f6: 4619 mov r1, r3 + 80458f8: f000 fe6e bl 80465d8 for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 80458bc: 687b ldr r3, [r7, #4] - 80458be: 3301 adds r3, #1 - 80458c0: 607b str r3, [r7, #4] - 80458c2: 687b ldr r3, [r7, #4] - 80458c4: 2b09 cmp r3, #9 - 80458c6: f77f af65 ble.w 8045794 + 80458fc: 687b ldr r3, [r7, #4] + 80458fe: 3301 adds r3, #1 + 8045900: 607b str r3, [r7, #4] + 8045902: 687b ldr r3, [r7, #4] + 8045904: 2b09 cmp r3, #9 + 8045906: f77f af65 ble.w 80457d4 } } } } - 80458ca: bf00 nop - 80458cc: bf00 nop - 80458ce: 3708 adds r7, #8 - 80458d0: 46bd mov sp, r7 - 80458d2: bd80 pop {r7, pc} - 80458d4: 2400eb48 .word 0x2400eb48 + 804590a: bf00 nop + 804590c: bf00 nop + 804590e: 3708 adds r7, #8 + 8045910: 46bd mov sp, r7 + 8045912: bd80 pop {r7, pc} + 8045914: 2400eb48 .word 0x2400eb48 -080458d8 : +08045918 : * @return The ARP entry index that matched or is created, ERR_MEM if no * entry is found or could be recycled. */ static s16_t etharp_find_entry(const ip4_addr_t *ipaddr, u8_t flags, struct netif *netif) { - 80458d8: b580 push {r7, lr} - 80458da: b08a sub sp, #40 ; 0x28 - 80458dc: af00 add r7, sp, #0 - 80458de: 60f8 str r0, [r7, #12] - 80458e0: 460b mov r3, r1 - 80458e2: 607a str r2, [r7, #4] - 80458e4: 72fb strb r3, [r7, #11] + 8045918: b580 push {r7, lr} + 804591a: b08a sub sp, #40 ; 0x28 + 804591c: af00 add r7, sp, #0 + 804591e: 60f8 str r0, [r7, #12] + 8045920: 460b mov r3, r1 + 8045922: 607a str r2, [r7, #4] + 8045924: 72fb strb r3, [r7, #11] s16_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; - 80458e6: 230a movs r3, #10 - 80458e8: 84fb strh r3, [r7, #38] ; 0x26 - 80458ea: 230a movs r3, #10 - 80458ec: 84bb strh r3, [r7, #36] ; 0x24 + 8045926: 230a movs r3, #10 + 8045928: 84fb strh r3, [r7, #38] ; 0x26 + 804592a: 230a movs r3, #10 + 804592c: 84bb strh r3, [r7, #36] ; 0x24 s16_t empty = ARP_TABLE_SIZE; - 80458ee: 230a movs r3, #10 - 80458f0: 847b strh r3, [r7, #34] ; 0x22 + 804592e: 230a movs r3, #10 + 8045930: 847b strh r3, [r7, #34] ; 0x22 s16_t i = 0; - 80458f2: 2300 movs r3, #0 - 80458f4: 843b strh r3, [r7, #32] + 8045932: 2300 movs r3, #0 + 8045934: 843b strh r3, [r7, #32] /* oldest entry with packets on queue */ s16_t old_queue = ARP_TABLE_SIZE; - 80458f6: 230a movs r3, #10 - 80458f8: 83fb strh r3, [r7, #30] + 8045936: 230a movs r3, #10 + 8045938: 83fb strh r3, [r7, #30] /* its age */ u16_t age_queue = 0, age_pending = 0, age_stable = 0; - 80458fa: 2300 movs r3, #0 - 80458fc: 83bb strh r3, [r7, #28] - 80458fe: 2300 movs r3, #0 - 8045900: 837b strh r3, [r7, #26] - 8045902: 2300 movs r3, #0 - 8045904: 833b strh r3, [r7, #24] + 804593a: 2300 movs r3, #0 + 804593c: 83bb strh r3, [r7, #28] + 804593e: 2300 movs r3, #0 + 8045940: 837b strh r3, [r7, #26] + 8045942: 2300 movs r3, #0 + 8045944: 833b strh r3, [r7, #24] * 4) remember the oldest pending entry with queued packets (if any) * 5) search for a matching IP entry, either pending or stable * until 5 matches, or all entries are searched for. */ for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8045906: 2300 movs r3, #0 - 8045908: 843b strh r3, [r7, #32] - 804590a: e0ae b.n 8045a6a + 8045946: 2300 movs r3, #0 + 8045948: 843b strh r3, [r7, #32] + 804594a: e0ae b.n 8045aaa u8_t state = arp_table[i].state; - 804590c: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045910: 49a6 ldr r1, [pc, #664] ; (8045bac ) - 8045912: 4613 mov r3, r2 - 8045914: 005b lsls r3, r3, #1 - 8045916: 4413 add r3, r2 - 8045918: 00db lsls r3, r3, #3 - 804591a: 440b add r3, r1 - 804591c: 3314 adds r3, #20 - 804591e: 781b ldrb r3, [r3, #0] - 8045920: 75fb strb r3, [r7, #23] + 804594c: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045950: 49a6 ldr r1, [pc, #664] ; (8045bec ) + 8045952: 4613 mov r3, r2 + 8045954: 005b lsls r3, r3, #1 + 8045956: 4413 add r3, r2 + 8045958: 00db lsls r3, r3, #3 + 804595a: 440b add r3, r1 + 804595c: 3314 adds r3, #20 + 804595e: 781b ldrb r3, [r3, #0] + 8045960: 75fb strb r3, [r7, #23] /* no empty entry found yet and now we do find one? */ if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) { - 8045922: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 - 8045926: 2b0a cmp r3, #10 - 8045928: d105 bne.n 8045936 - 804592a: 7dfb ldrb r3, [r7, #23] - 804592c: 2b00 cmp r3, #0 - 804592e: d102 bne.n 8045936 + 8045962: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 + 8045966: 2b0a cmp r3, #10 + 8045968: d105 bne.n 8045976 + 804596a: 7dfb ldrb r3, [r7, #23] + 804596c: 2b00 cmp r3, #0 + 804596e: d102 bne.n 8045976 LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_find_entry: found empty entry %d\n", (int)i)); /* remember first empty entry */ empty = i; - 8045930: 8c3b ldrh r3, [r7, #32] - 8045932: 847b strh r3, [r7, #34] ; 0x22 - 8045934: e095 b.n 8045a62 + 8045970: 8c3b ldrh r3, [r7, #32] + 8045972: 847b strh r3, [r7, #34] ; 0x22 + 8045974: e095 b.n 8045aa2 } else if (state != ETHARP_STATE_EMPTY) { - 8045936: 7dfb ldrb r3, [r7, #23] - 8045938: 2b00 cmp r3, #0 - 804593a: f000 8092 beq.w 8045a62 + 8045976: 7dfb ldrb r3, [r7, #23] + 8045978: 2b00 cmp r3, #0 + 804597a: f000 8092 beq.w 8045aa2 LWIP_ASSERT("state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE", - 804593e: 7dfb ldrb r3, [r7, #23] - 8045940: 2b01 cmp r3, #1 - 8045942: d009 beq.n 8045958 - 8045944: 7dfb ldrb r3, [r7, #23] - 8045946: 2b01 cmp r3, #1 - 8045948: d806 bhi.n 8045958 - 804594a: 4b99 ldr r3, [pc, #612] ; (8045bb0 ) - 804594c: f240 1223 movw r2, #291 ; 0x123 - 8045950: 4998 ldr r1, [pc, #608] ; (8045bb4 ) - 8045952: 4899 ldr r0, [pc, #612] ; (8045bb8 ) - 8045954: f002 fb26 bl 8047fa4 + 804597e: 7dfb ldrb r3, [r7, #23] + 8045980: 2b01 cmp r3, #1 + 8045982: d009 beq.n 8045998 + 8045984: 7dfb ldrb r3, [r7, #23] + 8045986: 2b01 cmp r3, #1 + 8045988: d806 bhi.n 8045998 + 804598a: 4b99 ldr r3, [pc, #612] ; (8045bf0 ) + 804598c: f240 1223 movw r2, #291 ; 0x123 + 8045990: 4998 ldr r1, [pc, #608] ; (8045bf4 ) + 8045992: 4899 ldr r0, [pc, #612] ; (8045bf8 ) + 8045994: f002 fb26 bl 8047fe4 state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE); /* if given, does IP address match IP address in ARP entry? */ if (ipaddr && ip4_addr_cmp(ipaddr, &arp_table[i].ipaddr) - 8045958: 68fb ldr r3, [r7, #12] - 804595a: 2b00 cmp r3, #0 - 804595c: d020 beq.n 80459a0 - 804595e: 68fb ldr r3, [r7, #12] - 8045960: 6819 ldr r1, [r3, #0] - 8045962: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045966: 4891 ldr r0, [pc, #580] ; (8045bac ) - 8045968: 4613 mov r3, r2 - 804596a: 005b lsls r3, r3, #1 - 804596c: 4413 add r3, r2 - 804596e: 00db lsls r3, r3, #3 - 8045970: 4403 add r3, r0 - 8045972: 3304 adds r3, #4 - 8045974: 681b ldr r3, [r3, #0] - 8045976: 4299 cmp r1, r3 - 8045978: d112 bne.n 80459a0 + 8045998: 68fb ldr r3, [r7, #12] + 804599a: 2b00 cmp r3, #0 + 804599c: d020 beq.n 80459e0 + 804599e: 68fb ldr r3, [r7, #12] + 80459a0: 6819 ldr r1, [r3, #0] + 80459a2: f9b7 2020 ldrsh.w r2, [r7, #32] + 80459a6: 4891 ldr r0, [pc, #580] ; (8045bec ) + 80459a8: 4613 mov r3, r2 + 80459aa: 005b lsls r3, r3, #1 + 80459ac: 4413 add r3, r2 + 80459ae: 00db lsls r3, r3, #3 + 80459b0: 4403 add r3, r0 + 80459b2: 3304 adds r3, #4 + 80459b4: 681b ldr r3, [r3, #0] + 80459b6: 4299 cmp r1, r3 + 80459b8: d112 bne.n 80459e0 #if ETHARP_TABLE_MATCH_NETIF && ((netif == NULL) || (netif == arp_table[i].netif)) - 804597a: 687b ldr r3, [r7, #4] - 804597c: 2b00 cmp r3, #0 - 804597e: d00c beq.n 804599a - 8045980: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045984: 4989 ldr r1, [pc, #548] ; (8045bac ) - 8045986: 4613 mov r3, r2 - 8045988: 005b lsls r3, r3, #1 - 804598a: 4413 add r3, r2 - 804598c: 00db lsls r3, r3, #3 - 804598e: 440b add r3, r1 - 8045990: 3308 adds r3, #8 - 8045992: 681b ldr r3, [r3, #0] - 8045994: 687a ldr r2, [r7, #4] - 8045996: 429a cmp r2, r3 - 8045998: d102 bne.n 80459a0 + 80459ba: 687b ldr r3, [r7, #4] + 80459bc: 2b00 cmp r3, #0 + 80459be: d00c beq.n 80459da + 80459c0: f9b7 2020 ldrsh.w r2, [r7, #32] + 80459c4: 4989 ldr r1, [pc, #548] ; (8045bec ) + 80459c6: 4613 mov r3, r2 + 80459c8: 005b lsls r3, r3, #1 + 80459ca: 4413 add r3, r2 + 80459cc: 00db lsls r3, r3, #3 + 80459ce: 440b add r3, r1 + 80459d0: 3308 adds r3, #8 + 80459d2: 681b ldr r3, [r3, #0] + 80459d4: 687a ldr r2, [r7, #4] + 80459d6: 429a cmp r2, r3 + 80459d8: d102 bne.n 80459e0 #endif /* ETHARP_TABLE_MATCH_NETIF */ ) { LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: found matching entry %d\n", (int)i)); /* found exact IP address match, simply bail out */ return i; - 804599a: f9b7 3020 ldrsh.w r3, [r7, #32] - 804599e: e100 b.n 8045ba2 + 80459da: f9b7 3020 ldrsh.w r3, [r7, #32] + 80459de: e100 b.n 8045be2 } /* pending entry? */ if (state == ETHARP_STATE_PENDING) { - 80459a0: 7dfb ldrb r3, [r7, #23] - 80459a2: 2b01 cmp r3, #1 - 80459a4: d140 bne.n 8045a28 + 80459e0: 7dfb ldrb r3, [r7, #23] + 80459e2: 2b01 cmp r3, #1 + 80459e4: d140 bne.n 8045a68 /* pending with queued packets? */ if (arp_table[i].q != NULL) { - 80459a6: f9b7 2020 ldrsh.w r2, [r7, #32] - 80459aa: 4980 ldr r1, [pc, #512] ; (8045bac ) - 80459ac: 4613 mov r3, r2 - 80459ae: 005b lsls r3, r3, #1 - 80459b0: 4413 add r3, r2 - 80459b2: 00db lsls r3, r3, #3 - 80459b4: 440b add r3, r1 - 80459b6: 681b ldr r3, [r3, #0] - 80459b8: 2b00 cmp r3, #0 - 80459ba: d01a beq.n 80459f2 + 80459e6: f9b7 2020 ldrsh.w r2, [r7, #32] + 80459ea: 4980 ldr r1, [pc, #512] ; (8045bec ) + 80459ec: 4613 mov r3, r2 + 80459ee: 005b lsls r3, r3, #1 + 80459f0: 4413 add r3, r2 + 80459f2: 00db lsls r3, r3, #3 + 80459f4: 440b add r3, r1 + 80459f6: 681b ldr r3, [r3, #0] + 80459f8: 2b00 cmp r3, #0 + 80459fa: d01a beq.n 8045a32 if (arp_table[i].ctime >= age_queue) { - 80459bc: f9b7 2020 ldrsh.w r2, [r7, #32] - 80459c0: 497a ldr r1, [pc, #488] ; (8045bac ) - 80459c2: 4613 mov r3, r2 - 80459c4: 005b lsls r3, r3, #1 - 80459c6: 4413 add r3, r2 - 80459c8: 00db lsls r3, r3, #3 - 80459ca: 440b add r3, r1 - 80459cc: 3312 adds r3, #18 - 80459ce: 881b ldrh r3, [r3, #0] - 80459d0: 8bba ldrh r2, [r7, #28] - 80459d2: 429a cmp r2, r3 - 80459d4: d845 bhi.n 8045a62 + 80459fc: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a00: 497a ldr r1, [pc, #488] ; (8045bec ) + 8045a02: 4613 mov r3, r2 + 8045a04: 005b lsls r3, r3, #1 + 8045a06: 4413 add r3, r2 + 8045a08: 00db lsls r3, r3, #3 + 8045a0a: 440b add r3, r1 + 8045a0c: 3312 adds r3, #18 + 8045a0e: 881b ldrh r3, [r3, #0] + 8045a10: 8bba ldrh r2, [r7, #28] + 8045a12: 429a cmp r2, r3 + 8045a14: d845 bhi.n 8045aa2 old_queue = i; - 80459d6: 8c3b ldrh r3, [r7, #32] - 80459d8: 83fb strh r3, [r7, #30] + 8045a16: 8c3b ldrh r3, [r7, #32] + 8045a18: 83fb strh r3, [r7, #30] age_queue = arp_table[i].ctime; - 80459da: f9b7 2020 ldrsh.w r2, [r7, #32] - 80459de: 4973 ldr r1, [pc, #460] ; (8045bac ) - 80459e0: 4613 mov r3, r2 - 80459e2: 005b lsls r3, r3, #1 - 80459e4: 4413 add r3, r2 - 80459e6: 00db lsls r3, r3, #3 - 80459e8: 440b add r3, r1 - 80459ea: 3312 adds r3, #18 - 80459ec: 881b ldrh r3, [r3, #0] - 80459ee: 83bb strh r3, [r7, #28] - 80459f0: e037 b.n 8045a62 + 8045a1a: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a1e: 4973 ldr r1, [pc, #460] ; (8045bec ) + 8045a20: 4613 mov r3, r2 + 8045a22: 005b lsls r3, r3, #1 + 8045a24: 4413 add r3, r2 + 8045a26: 00db lsls r3, r3, #3 + 8045a28: 440b add r3, r1 + 8045a2a: 3312 adds r3, #18 + 8045a2c: 881b ldrh r3, [r3, #0] + 8045a2e: 83bb strh r3, [r7, #28] + 8045a30: e037 b.n 8045aa2 } } else /* pending without queued packets? */ { if (arp_table[i].ctime >= age_pending) { - 80459f2: f9b7 2020 ldrsh.w r2, [r7, #32] - 80459f6: 496d ldr r1, [pc, #436] ; (8045bac ) - 80459f8: 4613 mov r3, r2 - 80459fa: 005b lsls r3, r3, #1 - 80459fc: 4413 add r3, r2 - 80459fe: 00db lsls r3, r3, #3 - 8045a00: 440b add r3, r1 - 8045a02: 3312 adds r3, #18 - 8045a04: 881b ldrh r3, [r3, #0] - 8045a06: 8b7a ldrh r2, [r7, #26] - 8045a08: 429a cmp r2, r3 - 8045a0a: d82a bhi.n 8045a62 + 8045a32: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a36: 496d ldr r1, [pc, #436] ; (8045bec ) + 8045a38: 4613 mov r3, r2 + 8045a3a: 005b lsls r3, r3, #1 + 8045a3c: 4413 add r3, r2 + 8045a3e: 00db lsls r3, r3, #3 + 8045a40: 440b add r3, r1 + 8045a42: 3312 adds r3, #18 + 8045a44: 881b ldrh r3, [r3, #0] + 8045a46: 8b7a ldrh r2, [r7, #26] + 8045a48: 429a cmp r2, r3 + 8045a4a: d82a bhi.n 8045aa2 old_pending = i; - 8045a0c: 8c3b ldrh r3, [r7, #32] - 8045a0e: 84fb strh r3, [r7, #38] ; 0x26 + 8045a4c: 8c3b ldrh r3, [r7, #32] + 8045a4e: 84fb strh r3, [r7, #38] ; 0x26 age_pending = arp_table[i].ctime; - 8045a10: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045a14: 4965 ldr r1, [pc, #404] ; (8045bac ) - 8045a16: 4613 mov r3, r2 - 8045a18: 005b lsls r3, r3, #1 - 8045a1a: 4413 add r3, r2 - 8045a1c: 00db lsls r3, r3, #3 - 8045a1e: 440b add r3, r1 - 8045a20: 3312 adds r3, #18 - 8045a22: 881b ldrh r3, [r3, #0] - 8045a24: 837b strh r3, [r7, #26] - 8045a26: e01c b.n 8045a62 + 8045a50: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a54: 4965 ldr r1, [pc, #404] ; (8045bec ) + 8045a56: 4613 mov r3, r2 + 8045a58: 005b lsls r3, r3, #1 + 8045a5a: 4413 add r3, r2 + 8045a5c: 00db lsls r3, r3, #3 + 8045a5e: 440b add r3, r1 + 8045a60: 3312 adds r3, #18 + 8045a62: 881b ldrh r3, [r3, #0] + 8045a64: 837b strh r3, [r7, #26] + 8045a66: e01c b.n 8045aa2 } } /* stable entry? */ } else if (state >= ETHARP_STATE_STABLE) { - 8045a28: 7dfb ldrb r3, [r7, #23] - 8045a2a: 2b01 cmp r3, #1 - 8045a2c: d919 bls.n 8045a62 + 8045a68: 7dfb ldrb r3, [r7, #23] + 8045a6a: 2b01 cmp r3, #1 + 8045a6c: d919 bls.n 8045aa2 /* don't record old_stable for static entries since they never expire */ if (state < ETHARP_STATE_STATIC) #endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ { /* remember entry with oldest stable entry in oldest, its age in maxtime */ if (arp_table[i].ctime >= age_stable) { - 8045a2e: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045a32: 495e ldr r1, [pc, #376] ; (8045bac ) - 8045a34: 4613 mov r3, r2 - 8045a36: 005b lsls r3, r3, #1 - 8045a38: 4413 add r3, r2 - 8045a3a: 00db lsls r3, r3, #3 - 8045a3c: 440b add r3, r1 - 8045a3e: 3312 adds r3, #18 - 8045a40: 881b ldrh r3, [r3, #0] - 8045a42: 8b3a ldrh r2, [r7, #24] - 8045a44: 429a cmp r2, r3 - 8045a46: d80c bhi.n 8045a62 + 8045a6e: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a72: 495e ldr r1, [pc, #376] ; (8045bec ) + 8045a74: 4613 mov r3, r2 + 8045a76: 005b lsls r3, r3, #1 + 8045a78: 4413 add r3, r2 + 8045a7a: 00db lsls r3, r3, #3 + 8045a7c: 440b add r3, r1 + 8045a7e: 3312 adds r3, #18 + 8045a80: 881b ldrh r3, [r3, #0] + 8045a82: 8b3a ldrh r2, [r7, #24] + 8045a84: 429a cmp r2, r3 + 8045a86: d80c bhi.n 8045aa2 old_stable = i; - 8045a48: 8c3b ldrh r3, [r7, #32] - 8045a4a: 84bb strh r3, [r7, #36] ; 0x24 + 8045a88: 8c3b ldrh r3, [r7, #32] + 8045a8a: 84bb strh r3, [r7, #36] ; 0x24 age_stable = arp_table[i].ctime; - 8045a4c: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045a50: 4956 ldr r1, [pc, #344] ; (8045bac ) - 8045a52: 4613 mov r3, r2 - 8045a54: 005b lsls r3, r3, #1 - 8045a56: 4413 add r3, r2 - 8045a58: 00db lsls r3, r3, #3 - 8045a5a: 440b add r3, r1 - 8045a5c: 3312 adds r3, #18 - 8045a5e: 881b ldrh r3, [r3, #0] - 8045a60: 833b strh r3, [r7, #24] + 8045a8c: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045a90: 4956 ldr r1, [pc, #344] ; (8045bec ) + 8045a92: 4613 mov r3, r2 + 8045a94: 005b lsls r3, r3, #1 + 8045a96: 4413 add r3, r2 + 8045a98: 00db lsls r3, r3, #3 + 8045a9a: 440b add r3, r1 + 8045a9c: 3312 adds r3, #18 + 8045a9e: 881b ldrh r3, [r3, #0] + 8045aa0: 833b strh r3, [r7, #24] for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8045a62: 8c3b ldrh r3, [r7, #32] - 8045a64: 3301 adds r3, #1 - 8045a66: b29b uxth r3, r3 - 8045a68: 843b strh r3, [r7, #32] - 8045a6a: f9b7 3020 ldrsh.w r3, [r7, #32] - 8045a6e: 2b09 cmp r3, #9 - 8045a70: f77f af4c ble.w 804590c + 8045aa2: 8c3b ldrh r3, [r7, #32] + 8045aa4: 3301 adds r3, #1 + 8045aa6: b29b uxth r3, r3 + 8045aa8: 843b strh r3, [r7, #32] + 8045aaa: f9b7 3020 ldrsh.w r3, [r7, #32] + 8045aae: 2b09 cmp r3, #9 + 8045ab0: f77f af4c ble.w 804594c } } /* { we have no match } => try to create a new entry */ /* don't create new entry, only search? */ if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) || - 8045a74: 7afb ldrb r3, [r7, #11] - 8045a76: f003 0302 and.w r3, r3, #2 - 8045a7a: 2b00 cmp r3, #0 - 8045a7c: d108 bne.n 8045a90 - 8045a7e: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 - 8045a82: 2b0a cmp r3, #10 - 8045a84: d107 bne.n 8045a96 + 8045ab4: 7afb ldrb r3, [r7, #11] + 8045ab6: f003 0302 and.w r3, r3, #2 + 8045aba: 2b00 cmp r3, #0 + 8045abc: d108 bne.n 8045ad0 + 8045abe: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 + 8045ac2: 2b0a cmp r3, #10 + 8045ac4: d107 bne.n 8045ad6 /* or no empty entry found and not allowed to recycle? */ ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) { - 8045a86: 7afb ldrb r3, [r7, #11] - 8045a88: f003 0301 and.w r3, r3, #1 - 8045a8c: 2b00 cmp r3, #0 - 8045a8e: d102 bne.n 8045a96 + 8045ac6: 7afb ldrb r3, [r7, #11] + 8045ac8: f003 0301 and.w r3, r3, #1 + 8045acc: 2b00 cmp r3, #0 + 8045ace: d102 bne.n 8045ad6 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty entry found and not allowed to recycle\n")); return (s16_t)ERR_MEM; - 8045a90: f04f 33ff mov.w r3, #4294967295 - 8045a94: e085 b.n 8045ba2 + 8045ad0: f04f 33ff mov.w r3, #4294967295 + 8045ad4: e085 b.n 8045be2 * * { ETHARP_FLAG_TRY_HARD is set at this point } */ /* 1) empty entry available? */ if (empty < ARP_TABLE_SIZE) { - 8045a96: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 - 8045a9a: 2b09 cmp r3, #9 - 8045a9c: dc02 bgt.n 8045aa4 + 8045ad6: f9b7 3022 ldrsh.w r3, [r7, #34] ; 0x22 + 8045ada: 2b09 cmp r3, #9 + 8045adc: dc02 bgt.n 8045ae4 i = empty; - 8045a9e: 8c7b ldrh r3, [r7, #34] ; 0x22 - 8045aa0: 843b strh r3, [r7, #32] - 8045aa2: e039 b.n 8045b18 + 8045ade: 8c7b ldrh r3, [r7, #34] ; 0x22 + 8045ae0: 843b strh r3, [r7, #32] + 8045ae2: e039 b.n 8045b58 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %d\n", (int)i)); } else { /* 2) found recyclable stable entry? */ if (old_stable < ARP_TABLE_SIZE) { - 8045aa4: f9b7 3024 ldrsh.w r3, [r7, #36] ; 0x24 - 8045aa8: 2b09 cmp r3, #9 - 8045aaa: dc14 bgt.n 8045ad6 + 8045ae4: f9b7 3024 ldrsh.w r3, [r7, #36] ; 0x24 + 8045ae8: 2b09 cmp r3, #9 + 8045aea: dc14 bgt.n 8045b16 /* recycle oldest stable*/ i = old_stable; - 8045aac: 8cbb ldrh r3, [r7, #36] ; 0x24 - 8045aae: 843b strh r3, [r7, #32] + 8045aec: 8cbb ldrh r3, [r7, #36] ; 0x24 + 8045aee: 843b strh r3, [r7, #32] LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %d\n", (int)i)); /* no queued packets should exist on stable entries */ LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL); - 8045ab0: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045ab4: 493d ldr r1, [pc, #244] ; (8045bac ) - 8045ab6: 4613 mov r3, r2 - 8045ab8: 005b lsls r3, r3, #1 - 8045aba: 4413 add r3, r2 - 8045abc: 00db lsls r3, r3, #3 - 8045abe: 440b add r3, r1 - 8045ac0: 681b ldr r3, [r3, #0] - 8045ac2: 2b00 cmp r3, #0 - 8045ac4: d018 beq.n 8045af8 - 8045ac6: 4b3a ldr r3, [pc, #232] ; (8045bb0 ) - 8045ac8: f240 126d movw r2, #365 ; 0x16d - 8045acc: 493b ldr r1, [pc, #236] ; (8045bbc ) - 8045ace: 483a ldr r0, [pc, #232] ; (8045bb8 ) - 8045ad0: f002 fa68 bl 8047fa4 - 8045ad4: e010 b.n 8045af8 + 8045af0: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045af4: 493d ldr r1, [pc, #244] ; (8045bec ) + 8045af6: 4613 mov r3, r2 + 8045af8: 005b lsls r3, r3, #1 + 8045afa: 4413 add r3, r2 + 8045afc: 00db lsls r3, r3, #3 + 8045afe: 440b add r3, r1 + 8045b00: 681b ldr r3, [r3, #0] + 8045b02: 2b00 cmp r3, #0 + 8045b04: d018 beq.n 8045b38 + 8045b06: 4b3a ldr r3, [pc, #232] ; (8045bf0 ) + 8045b08: f240 126d movw r2, #365 ; 0x16d + 8045b0c: 493b ldr r1, [pc, #236] ; (8045bfc ) + 8045b0e: 483a ldr r0, [pc, #232] ; (8045bf8 ) + 8045b10: f002 fa68 bl 8047fe4 + 8045b14: e010 b.n 8045b38 /* 3) found recyclable pending entry without queued packets? */ } else if (old_pending < ARP_TABLE_SIZE) { - 8045ad6: f9b7 3026 ldrsh.w r3, [r7, #38] ; 0x26 - 8045ada: 2b09 cmp r3, #9 - 8045adc: dc02 bgt.n 8045ae4 + 8045b16: f9b7 3026 ldrsh.w r3, [r7, #38] ; 0x26 + 8045b1a: 2b09 cmp r3, #9 + 8045b1c: dc02 bgt.n 8045b24 /* recycle oldest pending */ i = old_pending; - 8045ade: 8cfb ldrh r3, [r7, #38] ; 0x26 - 8045ae0: 843b strh r3, [r7, #32] - 8045ae2: e009 b.n 8045af8 + 8045b1e: 8cfb ldrh r3, [r7, #38] ; 0x26 + 8045b20: 843b strh r3, [r7, #32] + 8045b22: e009 b.n 8045b38 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %d (without queue)\n", (int)i)); /* 4) found recyclable pending entry with queued packets? */ } else if (old_queue < ARP_TABLE_SIZE) { - 8045ae4: f9b7 301e ldrsh.w r3, [r7, #30] - 8045ae8: 2b09 cmp r3, #9 - 8045aea: dc02 bgt.n 8045af2 + 8045b24: f9b7 301e ldrsh.w r3, [r7, #30] + 8045b28: 2b09 cmp r3, #9 + 8045b2a: dc02 bgt.n 8045b32 /* recycle oldest pending (queued packets are free in etharp_free_entry) */ i = old_queue; - 8045aec: 8bfb ldrh r3, [r7, #30] - 8045aee: 843b strh r3, [r7, #32] - 8045af0: e002 b.n 8045af8 + 8045b2c: 8bfb ldrh r3, [r7, #30] + 8045b2e: 843b strh r3, [r7, #32] + 8045b30: e002 b.n 8045b38 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %d, freeing packet queue %p\n", (int)i, (void *)(arp_table[i].q))); /* no empty or recyclable entries found */ } else { LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty or recyclable entries found\n")); return (s16_t)ERR_MEM; - 8045af2: f04f 33ff mov.w r3, #4294967295 - 8045af6: e054 b.n 8045ba2 + 8045b32: f04f 33ff mov.w r3, #4294967295 + 8045b36: e054 b.n 8045be2 } /* { empty or recyclable entry found } */ LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - 8045af8: f9b7 3020 ldrsh.w r3, [r7, #32] - 8045afc: 2b09 cmp r3, #9 - 8045afe: dd06 ble.n 8045b0e - 8045b00: 4b2b ldr r3, [pc, #172] ; (8045bb0 ) - 8045b02: f240 127f movw r2, #383 ; 0x17f - 8045b06: 492e ldr r1, [pc, #184] ; (8045bc0 ) - 8045b08: 482b ldr r0, [pc, #172] ; (8045bb8 ) - 8045b0a: f002 fa4b bl 8047fa4 + 8045b38: f9b7 3020 ldrsh.w r3, [r7, #32] + 8045b3c: 2b09 cmp r3, #9 + 8045b3e: dd06 ble.n 8045b4e + 8045b40: 4b2b ldr r3, [pc, #172] ; (8045bf0 ) + 8045b42: f240 127f movw r2, #383 ; 0x17f + 8045b46: 492e ldr r1, [pc, #184] ; (8045c00 ) + 8045b48: 482b ldr r0, [pc, #172] ; (8045bf8 ) + 8045b4a: f002 fa4b bl 8047fe4 etharp_free_entry(i); - 8045b0e: f9b7 3020 ldrsh.w r3, [r7, #32] - 8045b12: 4618 mov r0, r3 - 8045b14: f7ff fe06 bl 8045724 + 8045b4e: f9b7 3020 ldrsh.w r3, [r7, #32] + 8045b52: 4618 mov r0, r3 + 8045b54: f7ff fe06 bl 8045764 } LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - 8045b18: f9b7 3020 ldrsh.w r3, [r7, #32] - 8045b1c: 2b09 cmp r3, #9 - 8045b1e: dd06 ble.n 8045b2e - 8045b20: 4b23 ldr r3, [pc, #140] ; (8045bb0 ) - 8045b22: f240 1283 movw r2, #387 ; 0x183 - 8045b26: 4926 ldr r1, [pc, #152] ; (8045bc0 ) - 8045b28: 4823 ldr r0, [pc, #140] ; (8045bb8 ) - 8045b2a: f002 fa3b bl 8047fa4 + 8045b58: f9b7 3020 ldrsh.w r3, [r7, #32] + 8045b5c: 2b09 cmp r3, #9 + 8045b5e: dd06 ble.n 8045b6e + 8045b60: 4b23 ldr r3, [pc, #140] ; (8045bf0 ) + 8045b62: f240 1283 movw r2, #387 ; 0x183 + 8045b66: 4926 ldr r1, [pc, #152] ; (8045c00 ) + 8045b68: 4823 ldr r0, [pc, #140] ; (8045bf8 ) + 8045b6a: f002 fa3b bl 8047fe4 LWIP_ASSERT("arp_table[i].state == ETHARP_STATE_EMPTY", - 8045b2e: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045b32: 491e ldr r1, [pc, #120] ; (8045bac ) - 8045b34: 4613 mov r3, r2 - 8045b36: 005b lsls r3, r3, #1 - 8045b38: 4413 add r3, r2 - 8045b3a: 00db lsls r3, r3, #3 - 8045b3c: 440b add r3, r1 - 8045b3e: 3314 adds r3, #20 - 8045b40: 781b ldrb r3, [r3, #0] - 8045b42: 2b00 cmp r3, #0 - 8045b44: d006 beq.n 8045b54 - 8045b46: 4b1a ldr r3, [pc, #104] ; (8045bb0 ) - 8045b48: f44f 72c2 mov.w r2, #388 ; 0x184 - 8045b4c: 491d ldr r1, [pc, #116] ; (8045bc4 ) - 8045b4e: 481a ldr r0, [pc, #104] ; (8045bb8 ) - 8045b50: f002 fa28 bl 8047fa4 + 8045b6e: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045b72: 491e ldr r1, [pc, #120] ; (8045bec ) + 8045b74: 4613 mov r3, r2 + 8045b76: 005b lsls r3, r3, #1 + 8045b78: 4413 add r3, r2 + 8045b7a: 00db lsls r3, r3, #3 + 8045b7c: 440b add r3, r1 + 8045b7e: 3314 adds r3, #20 + 8045b80: 781b ldrb r3, [r3, #0] + 8045b82: 2b00 cmp r3, #0 + 8045b84: d006 beq.n 8045b94 + 8045b86: 4b1a ldr r3, [pc, #104] ; (8045bf0 ) + 8045b88: f44f 72c2 mov.w r2, #388 ; 0x184 + 8045b8c: 491d ldr r1, [pc, #116] ; (8045c04 ) + 8045b8e: 481a ldr r0, [pc, #104] ; (8045bf8 ) + 8045b90: f002 fa28 bl 8047fe4 arp_table[i].state == ETHARP_STATE_EMPTY); /* IP address given? */ if (ipaddr != NULL) { - 8045b54: 68fb ldr r3, [r7, #12] - 8045b56: 2b00 cmp r3, #0 - 8045b58: d00b beq.n 8045b72 + 8045b94: 68fb ldr r3, [r7, #12] + 8045b96: 2b00 cmp r3, #0 + 8045b98: d00b beq.n 8045bb2 /* set IP address */ ip4_addr_copy(arp_table[i].ipaddr, *ipaddr); - 8045b5a: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045b5e: 68fb ldr r3, [r7, #12] - 8045b60: 6819 ldr r1, [r3, #0] - 8045b62: 4812 ldr r0, [pc, #72] ; (8045bac ) - 8045b64: 4613 mov r3, r2 - 8045b66: 005b lsls r3, r3, #1 - 8045b68: 4413 add r3, r2 - 8045b6a: 00db lsls r3, r3, #3 - 8045b6c: 4403 add r3, r0 - 8045b6e: 3304 adds r3, #4 - 8045b70: 6019 str r1, [r3, #0] + 8045b9a: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045b9e: 68fb ldr r3, [r7, #12] + 8045ba0: 6819 ldr r1, [r3, #0] + 8045ba2: 4812 ldr r0, [pc, #72] ; (8045bec ) + 8045ba4: 4613 mov r3, r2 + 8045ba6: 005b lsls r3, r3, #1 + 8045ba8: 4413 add r3, r2 + 8045baa: 00db lsls r3, r3, #3 + 8045bac: 4403 add r3, r0 + 8045bae: 3304 adds r3, #4 + 8045bb0: 6019 str r1, [r3, #0] } arp_table[i].ctime = 0; - 8045b72: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045b76: 490d ldr r1, [pc, #52] ; (8045bac ) - 8045b78: 4613 mov r3, r2 - 8045b7a: 005b lsls r3, r3, #1 - 8045b7c: 4413 add r3, r2 - 8045b7e: 00db lsls r3, r3, #3 - 8045b80: 440b add r3, r1 - 8045b82: 3312 adds r3, #18 - 8045b84: 2200 movs r2, #0 - 8045b86: 801a strh r2, [r3, #0] + 8045bb2: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045bb6: 490d ldr r1, [pc, #52] ; (8045bec ) + 8045bb8: 4613 mov r3, r2 + 8045bba: 005b lsls r3, r3, #1 + 8045bbc: 4413 add r3, r2 + 8045bbe: 00db lsls r3, r3, #3 + 8045bc0: 440b add r3, r1 + 8045bc2: 3312 adds r3, #18 + 8045bc4: 2200 movs r2, #0 + 8045bc6: 801a strh r2, [r3, #0] #if ETHARP_TABLE_MATCH_NETIF arp_table[i].netif = netif; - 8045b88: f9b7 2020 ldrsh.w r2, [r7, #32] - 8045b8c: 4907 ldr r1, [pc, #28] ; (8045bac ) - 8045b8e: 4613 mov r3, r2 - 8045b90: 005b lsls r3, r3, #1 - 8045b92: 4413 add r3, r2 - 8045b94: 00db lsls r3, r3, #3 - 8045b96: 440b add r3, r1 - 8045b98: 3308 adds r3, #8 - 8045b9a: 687a ldr r2, [r7, #4] - 8045b9c: 601a str r2, [r3, #0] + 8045bc8: f9b7 2020 ldrsh.w r2, [r7, #32] + 8045bcc: 4907 ldr r1, [pc, #28] ; (8045bec ) + 8045bce: 4613 mov r3, r2 + 8045bd0: 005b lsls r3, r3, #1 + 8045bd2: 4413 add r3, r2 + 8045bd4: 00db lsls r3, r3, #3 + 8045bd6: 440b add r3, r1 + 8045bd8: 3308 adds r3, #8 + 8045bda: 687a ldr r2, [r7, #4] + 8045bdc: 601a str r2, [r3, #0] #endif /* ETHARP_TABLE_MATCH_NETIF */ return (s16_t)i; - 8045b9e: f9b7 3020 ldrsh.w r3, [r7, #32] -} - 8045ba2: 4618 mov r0, r3 - 8045ba4: 3728 adds r7, #40 ; 0x28 - 8045ba6: 46bd mov sp, r7 - 8045ba8: bd80 pop {r7, pc} - 8045baa: bf00 nop - 8045bac: 2400eb48 .word 0x2400eb48 - 8045bb0: 0804c480 .word 0x0804c480 - 8045bb4: 0804c4b8 .word 0x0804c4b8 - 8045bb8: 0804c4f8 .word 0x0804c4f8 - 8045bbc: 0804c520 .word 0x0804c520 - 8045bc0: 0804c538 .word 0x0804c538 - 8045bc4: 0804c54c .word 0x0804c54c - -08045bc8 : + 8045bde: f9b7 3020 ldrsh.w r3, [r7, #32] +} + 8045be2: 4618 mov r0, r3 + 8045be4: 3728 adds r7, #40 ; 0x28 + 8045be6: 46bd mov sp, r7 + 8045be8: bd80 pop {r7, pc} + 8045bea: bf00 nop + 8045bec: 2400eb48 .word 0x2400eb48 + 8045bf0: 0804c4c0 .word 0x0804c4c0 + 8045bf4: 0804c4f8 .word 0x0804c4f8 + 8045bf8: 0804c538 .word 0x0804c538 + 8045bfc: 0804c560 .word 0x0804c560 + 8045c00: 0804c578 .word 0x0804c578 + 8045c04: 0804c58c .word 0x0804c58c + +08045c08 : * * @see pbuf_free() */ static err_t etharp_update_arp_entry(struct netif *netif, const ip4_addr_t *ipaddr, struct eth_addr *ethaddr, u8_t flags) { - 8045bc8: b580 push {r7, lr} - 8045bca: b088 sub sp, #32 - 8045bcc: af02 add r7, sp, #8 - 8045bce: 60f8 str r0, [r7, #12] - 8045bd0: 60b9 str r1, [r7, #8] - 8045bd2: 607a str r2, [r7, #4] - 8045bd4: 70fb strb r3, [r7, #3] + 8045c08: b580 push {r7, lr} + 8045c0a: b088 sub sp, #32 + 8045c0c: af02 add r7, sp, #8 + 8045c0e: 60f8 str r0, [r7, #12] + 8045c10: 60b9 str r1, [r7, #8] + 8045c12: 607a str r2, [r7, #4] + 8045c14: 70fb strb r3, [r7, #3] s16_t i; LWIP_ASSERT("netif->hwaddr_len == ETH_HWADDR_LEN", netif->hwaddr_len == ETH_HWADDR_LEN); - 8045bd6: 68fb ldr r3, [r7, #12] - 8045bd8: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 - 8045bdc: 2b06 cmp r3, #6 - 8045bde: d006 beq.n 8045bee - 8045be0: 4b48 ldr r3, [pc, #288] ; (8045d04 ) - 8045be2: f240 12a9 movw r2, #425 ; 0x1a9 - 8045be6: 4948 ldr r1, [pc, #288] ; (8045d08 ) - 8045be8: 4848 ldr r0, [pc, #288] ; (8045d0c ) - 8045bea: f002 f9db bl 8047fa4 + 8045c16: 68fb ldr r3, [r7, #12] + 8045c18: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 + 8045c1c: 2b06 cmp r3, #6 + 8045c1e: d006 beq.n 8045c2e + 8045c20: 4b48 ldr r3, [pc, #288] ; (8045d44 ) + 8045c22: f240 12a9 movw r2, #425 ; 0x1a9 + 8045c26: 4948 ldr r1, [pc, #288] ; (8045d48 ) + 8045c28: 4848 ldr r0, [pc, #288] ; (8045d4c ) + 8045c2a: f002 f9db bl 8047fe4 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr), (u16_t)ethaddr->addr[0], (u16_t)ethaddr->addr[1], (u16_t)ethaddr->addr[2], (u16_t)ethaddr->addr[3], (u16_t)ethaddr->addr[4], (u16_t)ethaddr->addr[5])); /* non-unicast address? */ if (ip4_addr_isany(ipaddr) || - 8045bee: 68bb ldr r3, [r7, #8] - 8045bf0: 2b00 cmp r3, #0 - 8045bf2: d012 beq.n 8045c1a - 8045bf4: 68bb ldr r3, [r7, #8] - 8045bf6: 681b ldr r3, [r3, #0] - 8045bf8: 2b00 cmp r3, #0 - 8045bfa: d00e beq.n 8045c1a + 8045c2e: 68bb ldr r3, [r7, #8] + 8045c30: 2b00 cmp r3, #0 + 8045c32: d012 beq.n 8045c5a + 8045c34: 68bb ldr r3, [r7, #8] + 8045c36: 681b ldr r3, [r3, #0] + 8045c38: 2b00 cmp r3, #0 + 8045c3a: d00e beq.n 8045c5a ip4_addr_isbroadcast(ipaddr, netif) || - 8045bfc: 68bb ldr r3, [r7, #8] - 8045bfe: 681b ldr r3, [r3, #0] - 8045c00: 68f9 ldr r1, [r7, #12] - 8045c02: 4618 mov r0, r3 - 8045c04: f001 f924 bl 8046e50 - 8045c08: 4603 mov r3, r0 + 8045c3c: 68bb ldr r3, [r7, #8] + 8045c3e: 681b ldr r3, [r3, #0] + 8045c40: 68f9 ldr r1, [r7, #12] + 8045c42: 4618 mov r0, r3 + 8045c44: f001 f924 bl 8046e90 + 8045c48: 4603 mov r3, r0 if (ip4_addr_isany(ipaddr) || - 8045c0a: 2b00 cmp r3, #0 - 8045c0c: d105 bne.n 8045c1a + 8045c4a: 2b00 cmp r3, #0 + 8045c4c: d105 bne.n 8045c5a ip4_addr_ismulticast(ipaddr)) { - 8045c0e: 68bb ldr r3, [r7, #8] - 8045c10: 681b ldr r3, [r3, #0] - 8045c12: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8045c4e: 68bb ldr r3, [r7, #8] + 8045c50: 681b ldr r3, [r3, #0] + 8045c52: f003 03f0 and.w r3, r3, #240 ; 0xf0 ip4_addr_isbroadcast(ipaddr, netif) || - 8045c16: 2be0 cmp r3, #224 ; 0xe0 - 8045c18: d102 bne.n 8045c20 + 8045c56: 2be0 cmp r3, #224 ; 0xe0 + 8045c58: d102 bne.n 8045c60 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cache\n")); return ERR_ARG; - 8045c1a: f06f 030f mvn.w r3, #15 - 8045c1e: e06c b.n 8045cfa + 8045c5a: f06f 030f mvn.w r3, #15 + 8045c5e: e06c b.n 8045d3a } /* find or create ARP entry */ i = etharp_find_entry(ipaddr, flags, netif); - 8045c20: 78fb ldrb r3, [r7, #3] - 8045c22: 68fa ldr r2, [r7, #12] - 8045c24: 4619 mov r1, r3 - 8045c26: 68b8 ldr r0, [r7, #8] - 8045c28: f7ff fe56 bl 80458d8 - 8045c2c: 4603 mov r3, r0 - 8045c2e: 82fb strh r3, [r7, #22] + 8045c60: 78fb ldrb r3, [r7, #3] + 8045c62: 68fa ldr r2, [r7, #12] + 8045c64: 4619 mov r1, r3 + 8045c66: 68b8 ldr r0, [r7, #8] + 8045c68: f7ff fe56 bl 8045918 + 8045c6c: 4603 mov r3, r0 + 8045c6e: 82fb strh r3, [r7, #22] /* bail out if no entry could be found */ if (i < 0) { - 8045c30: f9b7 3016 ldrsh.w r3, [r7, #22] - 8045c34: 2b00 cmp r3, #0 - 8045c36: da02 bge.n 8045c3e + 8045c70: f9b7 3016 ldrsh.w r3, [r7, #22] + 8045c74: 2b00 cmp r3, #0 + 8045c76: da02 bge.n 8045c7e return (err_t)i; - 8045c38: 8afb ldrh r3, [r7, #22] - 8045c3a: b25b sxtb r3, r3 - 8045c3c: e05d b.n 8045cfa + 8045c78: 8afb ldrh r3, [r7, #22] + 8045c7a: b25b sxtb r3, r3 + 8045c7c: e05d b.n 8045d3a return ERR_VAL; } else #endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ { /* mark it stable */ arp_table[i].state = ETHARP_STATE_STABLE; - 8045c3e: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045c42: 4933 ldr r1, [pc, #204] ; (8045d10 ) - 8045c44: 4613 mov r3, r2 - 8045c46: 005b lsls r3, r3, #1 - 8045c48: 4413 add r3, r2 - 8045c4a: 00db lsls r3, r3, #3 - 8045c4c: 440b add r3, r1 - 8045c4e: 3314 adds r3, #20 - 8045c50: 2202 movs r2, #2 - 8045c52: 701a strb r2, [r3, #0] + 8045c7e: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045c82: 4933 ldr r1, [pc, #204] ; (8045d50 ) + 8045c84: 4613 mov r3, r2 + 8045c86: 005b lsls r3, r3, #1 + 8045c88: 4413 add r3, r2 + 8045c8a: 00db lsls r3, r3, #3 + 8045c8c: 440b add r3, r1 + 8045c8e: 3314 adds r3, #20 + 8045c90: 2202 movs r2, #2 + 8045c92: 701a strb r2, [r3, #0] } /* record network interface */ arp_table[i].netif = netif; - 8045c54: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045c58: 492d ldr r1, [pc, #180] ; (8045d10 ) - 8045c5a: 4613 mov r3, r2 - 8045c5c: 005b lsls r3, r3, #1 - 8045c5e: 4413 add r3, r2 - 8045c60: 00db lsls r3, r3, #3 - 8045c62: 440b add r3, r1 - 8045c64: 3308 adds r3, #8 - 8045c66: 68fa ldr r2, [r7, #12] - 8045c68: 601a str r2, [r3, #0] + 8045c94: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045c98: 492d ldr r1, [pc, #180] ; (8045d50 ) + 8045c9a: 4613 mov r3, r2 + 8045c9c: 005b lsls r3, r3, #1 + 8045c9e: 4413 add r3, r2 + 8045ca0: 00db lsls r3, r3, #3 + 8045ca2: 440b add r3, r1 + 8045ca4: 3308 adds r3, #8 + 8045ca6: 68fa ldr r2, [r7, #12] + 8045ca8: 601a str r2, [r3, #0] /* insert in SNMP ARP index tree */ mib2_add_arp_entry(netif, &arp_table[i].ipaddr); LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: updating stable entry %"S16_F"\n", i)); /* update address */ SMEMCPY(&arp_table[i].ethaddr, ethaddr, ETH_HWADDR_LEN); - 8045c6a: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045c6e: 4613 mov r3, r2 - 8045c70: 005b lsls r3, r3, #1 - 8045c72: 4413 add r3, r2 - 8045c74: 00db lsls r3, r3, #3 - 8045c76: 3308 adds r3, #8 - 8045c78: 4a25 ldr r2, [pc, #148] ; (8045d10 ) - 8045c7a: 4413 add r3, r2 - 8045c7c: 3304 adds r3, #4 - 8045c7e: 2206 movs r2, #6 - 8045c80: 6879 ldr r1, [r7, #4] - 8045c82: 4618 mov r0, r3 - 8045c84: f002 f87e bl 8047d84 + 8045caa: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045cae: 4613 mov r3, r2 + 8045cb0: 005b lsls r3, r3, #1 + 8045cb2: 4413 add r3, r2 + 8045cb4: 00db lsls r3, r3, #3 + 8045cb6: 3308 adds r3, #8 + 8045cb8: 4a25 ldr r2, [pc, #148] ; (8045d50 ) + 8045cba: 4413 add r3, r2 + 8045cbc: 3304 adds r3, #4 + 8045cbe: 2206 movs r2, #6 + 8045cc0: 6879 ldr r1, [r7, #4] + 8045cc2: 4618 mov r0, r3 + 8045cc4: f002 f87e bl 8047dc4 /* reset time stamp */ arp_table[i].ctime = 0; - 8045c88: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045c8c: 4920 ldr r1, [pc, #128] ; (8045d10 ) - 8045c8e: 4613 mov r3, r2 - 8045c90: 005b lsls r3, r3, #1 - 8045c92: 4413 add r3, r2 - 8045c94: 00db lsls r3, r3, #3 - 8045c96: 440b add r3, r1 - 8045c98: 3312 adds r3, #18 - 8045c9a: 2200 movs r2, #0 - 8045c9c: 801a strh r2, [r3, #0] + 8045cc8: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045ccc: 4920 ldr r1, [pc, #128] ; (8045d50 ) + 8045cce: 4613 mov r3, r2 + 8045cd0: 005b lsls r3, r3, #1 + 8045cd2: 4413 add r3, r2 + 8045cd4: 00db lsls r3, r3, #3 + 8045cd6: 440b add r3, r1 + 8045cd8: 3312 adds r3, #18 + 8045cda: 2200 movs r2, #0 + 8045cdc: 801a strh r2, [r3, #0] /* get the packet pointer */ p = q->p; /* now queue entry can be freed */ memp_free(MEMP_ARP_QUEUE, q); #else /* ARP_QUEUEING */ if (arp_table[i].q != NULL) { - 8045c9e: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045ca2: 491b ldr r1, [pc, #108] ; (8045d10 ) - 8045ca4: 4613 mov r3, r2 - 8045ca6: 005b lsls r3, r3, #1 - 8045ca8: 4413 add r3, r2 - 8045caa: 00db lsls r3, r3, #3 - 8045cac: 440b add r3, r1 - 8045cae: 681b ldr r3, [r3, #0] - 8045cb0: 2b00 cmp r3, #0 - 8045cb2: d021 beq.n 8045cf8 + 8045cde: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045ce2: 491b ldr r1, [pc, #108] ; (8045d50 ) + 8045ce4: 4613 mov r3, r2 + 8045ce6: 005b lsls r3, r3, #1 + 8045ce8: 4413 add r3, r2 + 8045cea: 00db lsls r3, r3, #3 + 8045cec: 440b add r3, r1 + 8045cee: 681b ldr r3, [r3, #0] + 8045cf0: 2b00 cmp r3, #0 + 8045cf2: d021 beq.n 8045d38 struct pbuf *p = arp_table[i].q; - 8045cb4: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045cb8: 4915 ldr r1, [pc, #84] ; (8045d10 ) - 8045cba: 4613 mov r3, r2 - 8045cbc: 005b lsls r3, r3, #1 - 8045cbe: 4413 add r3, r2 - 8045cc0: 00db lsls r3, r3, #3 - 8045cc2: 440b add r3, r1 - 8045cc4: 681b ldr r3, [r3, #0] - 8045cc6: 613b str r3, [r7, #16] + 8045cf4: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045cf8: 4915 ldr r1, [pc, #84] ; (8045d50 ) + 8045cfa: 4613 mov r3, r2 + 8045cfc: 005b lsls r3, r3, #1 + 8045cfe: 4413 add r3, r2 + 8045d00: 00db lsls r3, r3, #3 + 8045d02: 440b add r3, r1 + 8045d04: 681b ldr r3, [r3, #0] + 8045d06: 613b str r3, [r7, #16] arp_table[i].q = NULL; - 8045cc8: f9b7 2016 ldrsh.w r2, [r7, #22] - 8045ccc: 4910 ldr r1, [pc, #64] ; (8045d10 ) - 8045cce: 4613 mov r3, r2 - 8045cd0: 005b lsls r3, r3, #1 - 8045cd2: 4413 add r3, r2 - 8045cd4: 00db lsls r3, r3, #3 - 8045cd6: 440b add r3, r1 - 8045cd8: 2200 movs r2, #0 - 8045cda: 601a str r2, [r3, #0] + 8045d08: f9b7 2016 ldrsh.w r2, [r7, #22] + 8045d0c: 4910 ldr r1, [pc, #64] ; (8045d50 ) + 8045d0e: 4613 mov r3, r2 + 8045d10: 005b lsls r3, r3, #1 + 8045d12: 4413 add r3, r2 + 8045d14: 00db lsls r3, r3, #3 + 8045d16: 440b add r3, r1 + 8045d18: 2200 movs r2, #0 + 8045d1a: 601a str r2, [r3, #0] #endif /* ARP_QUEUEING */ /* send the queued IP packet */ ethernet_output(netif, p, (struct eth_addr *)(netif->hwaddr), ethaddr, ETHTYPE_IP); - 8045cdc: 68fb ldr r3, [r7, #12] - 8045cde: f103 022a add.w r2, r3, #42 ; 0x2a - 8045ce2: f44f 6300 mov.w r3, #2048 ; 0x800 - 8045ce6: 9300 str r3, [sp, #0] - 8045ce8: 687b ldr r3, [r7, #4] - 8045cea: 6939 ldr r1, [r7, #16] - 8045cec: 68f8 ldr r0, [r7, #12] - 8045cee: f001 ffbd bl 8047c6c + 8045d1c: 68fb ldr r3, [r7, #12] + 8045d1e: f103 022a add.w r2, r3, #42 ; 0x2a + 8045d22: f44f 6300 mov.w r3, #2048 ; 0x800 + 8045d26: 9300 str r3, [sp, #0] + 8045d28: 687b ldr r3, [r7, #4] + 8045d2a: 6939 ldr r1, [r7, #16] + 8045d2c: 68f8 ldr r0, [r7, #12] + 8045d2e: f001 ffbd bl 8047cac /* free the queued IP packet */ pbuf_free(p); - 8045cf2: 6938 ldr r0, [r7, #16] - 8045cf4: f7f8 fd9c bl 803e830 + 8045d32: 6938 ldr r0, [r7, #16] + 8045d34: f7f8 fd9c bl 803e870 } return ERR_OK; - 8045cf8: 2300 movs r3, #0 -} - 8045cfa: 4618 mov r0, r3 - 8045cfc: 3718 adds r7, #24 - 8045cfe: 46bd mov sp, r7 - 8045d00: bd80 pop {r7, pc} - 8045d02: bf00 nop - 8045d04: 0804c480 .word 0x0804c480 - 8045d08: 0804c578 .word 0x0804c578 - 8045d0c: 0804c4f8 .word 0x0804c4f8 - 8045d10: 2400eb48 .word 0x2400eb48 - -08045d14 : + 8045d38: 2300 movs r3, #0 +} + 8045d3a: 4618 mov r0, r3 + 8045d3c: 3718 adds r7, #24 + 8045d3e: 46bd mov sp, r7 + 8045d40: bd80 pop {r7, pc} + 8045d42: bf00 nop + 8045d44: 0804c4c0 .word 0x0804c4c0 + 8045d48: 0804c5b8 .word 0x0804c5b8 + 8045d4c: 0804c538 .word 0x0804c538 + 8045d50: 2400eb48 .word 0x2400eb48 + +08045d54 : * * @param netif points to a network interface */ void etharp_cleanup_netif(struct netif *netif) { - 8045d14: b580 push {r7, lr} - 8045d16: b084 sub sp, #16 - 8045d18: af00 add r7, sp, #0 - 8045d1a: 6078 str r0, [r7, #4] + 8045d54: b580 push {r7, lr} + 8045d56: b084 sub sp, #16 + 8045d58: af00 add r7, sp, #0 + 8045d5a: 6078 str r0, [r7, #4] int i; for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8045d1c: 2300 movs r3, #0 - 8045d1e: 60fb str r3, [r7, #12] - 8045d20: e01e b.n 8045d60 + 8045d5c: 2300 movs r3, #0 + 8045d5e: 60fb str r3, [r7, #12] + 8045d60: e01e b.n 8045da0 u8_t state = arp_table[i].state; - 8045d22: 4913 ldr r1, [pc, #76] ; (8045d70 ) - 8045d24: 68fa ldr r2, [r7, #12] - 8045d26: 4613 mov r3, r2 - 8045d28: 005b lsls r3, r3, #1 - 8045d2a: 4413 add r3, r2 - 8045d2c: 00db lsls r3, r3, #3 - 8045d2e: 440b add r3, r1 - 8045d30: 3314 adds r3, #20 - 8045d32: 781b ldrb r3, [r3, #0] - 8045d34: 72fb strb r3, [r7, #11] + 8045d62: 4913 ldr r1, [pc, #76] ; (8045db0 ) + 8045d64: 68fa ldr r2, [r7, #12] + 8045d66: 4613 mov r3, r2 + 8045d68: 005b lsls r3, r3, #1 + 8045d6a: 4413 add r3, r2 + 8045d6c: 00db lsls r3, r3, #3 + 8045d6e: 440b add r3, r1 + 8045d70: 3314 adds r3, #20 + 8045d72: 781b ldrb r3, [r3, #0] + 8045d74: 72fb strb r3, [r7, #11] if ((state != ETHARP_STATE_EMPTY) && (arp_table[i].netif == netif)) { - 8045d36: 7afb ldrb r3, [r7, #11] - 8045d38: 2b00 cmp r3, #0 - 8045d3a: d00e beq.n 8045d5a - 8045d3c: 490c ldr r1, [pc, #48] ; (8045d70 ) - 8045d3e: 68fa ldr r2, [r7, #12] - 8045d40: 4613 mov r3, r2 - 8045d42: 005b lsls r3, r3, #1 - 8045d44: 4413 add r3, r2 - 8045d46: 00db lsls r3, r3, #3 - 8045d48: 440b add r3, r1 - 8045d4a: 3308 adds r3, #8 - 8045d4c: 681b ldr r3, [r3, #0] - 8045d4e: 687a ldr r2, [r7, #4] - 8045d50: 429a cmp r2, r3 - 8045d52: d102 bne.n 8045d5a + 8045d76: 7afb ldrb r3, [r7, #11] + 8045d78: 2b00 cmp r3, #0 + 8045d7a: d00e beq.n 8045d9a + 8045d7c: 490c ldr r1, [pc, #48] ; (8045db0 ) + 8045d7e: 68fa ldr r2, [r7, #12] + 8045d80: 4613 mov r3, r2 + 8045d82: 005b lsls r3, r3, #1 + 8045d84: 4413 add r3, r2 + 8045d86: 00db lsls r3, r3, #3 + 8045d88: 440b add r3, r1 + 8045d8a: 3308 adds r3, #8 + 8045d8c: 681b ldr r3, [r3, #0] + 8045d8e: 687a ldr r2, [r7, #4] + 8045d90: 429a cmp r2, r3 + 8045d92: d102 bne.n 8045d9a etharp_free_entry(i); - 8045d54: 68f8 ldr r0, [r7, #12] - 8045d56: f7ff fce5 bl 8045724 + 8045d94: 68f8 ldr r0, [r7, #12] + 8045d96: f7ff fce5 bl 8045764 for (i = 0; i < ARP_TABLE_SIZE; ++i) { - 8045d5a: 68fb ldr r3, [r7, #12] - 8045d5c: 3301 adds r3, #1 - 8045d5e: 60fb str r3, [r7, #12] - 8045d60: 68fb ldr r3, [r7, #12] - 8045d62: 2b09 cmp r3, #9 - 8045d64: dddd ble.n 8045d22 + 8045d9a: 68fb ldr r3, [r7, #12] + 8045d9c: 3301 adds r3, #1 + 8045d9e: 60fb str r3, [r7, #12] + 8045da0: 68fb ldr r3, [r7, #12] + 8045da2: 2b09 cmp r3, #9 + 8045da4: dddd ble.n 8045d62 } } } - 8045d66: bf00 nop - 8045d68: bf00 nop - 8045d6a: 3710 adds r7, #16 - 8045d6c: 46bd mov sp, r7 - 8045d6e: bd80 pop {r7, pc} - 8045d70: 2400eb48 .word 0x2400eb48 + 8045da6: bf00 nop + 8045da8: bf00 nop + 8045daa: 3710 adds r7, #16 + 8045dac: 46bd mov sp, r7 + 8045dae: bd80 pop {r7, pc} + 8045db0: 2400eb48 .word 0x2400eb48 -08045d74 : +08045db4 : * * @see pbuf_free() */ void etharp_input(struct pbuf *p, struct netif *netif) { - 8045d74: b5b0 push {r4, r5, r7, lr} - 8045d76: b08a sub sp, #40 ; 0x28 - 8045d78: af04 add r7, sp, #16 - 8045d7a: 6078 str r0, [r7, #4] - 8045d7c: 6039 str r1, [r7, #0] + 8045db4: b5b0 push {r4, r5, r7, lr} + 8045db6: b08a sub sp, #40 ; 0x28 + 8045db8: af04 add r7, sp, #16 + 8045dba: 6078 str r0, [r7, #4] + 8045dbc: 6039 str r1, [r7, #0] ip4_addr_t sipaddr, dipaddr; u8_t for_us; LWIP_ASSERT_CORE_LOCKED(); LWIP_ERROR("netif != NULL", (netif != NULL), return;); - 8045d7e: 683b ldr r3, [r7, #0] - 8045d80: 2b00 cmp r3, #0 - 8045d82: d107 bne.n 8045d94 - 8045d84: 4b3d ldr r3, [pc, #244] ; (8045e7c ) - 8045d86: f240 228a movw r2, #650 ; 0x28a - 8045d8a: 493d ldr r1, [pc, #244] ; (8045e80 ) - 8045d8c: 483d ldr r0, [pc, #244] ; (8045e84 ) - 8045d8e: f002 f909 bl 8047fa4 - 8045d92: e06f b.n 8045e74 + 8045dbe: 683b ldr r3, [r7, #0] + 8045dc0: 2b00 cmp r3, #0 + 8045dc2: d107 bne.n 8045dd4 + 8045dc4: 4b3d ldr r3, [pc, #244] ; (8045ebc ) + 8045dc6: f240 228a movw r2, #650 ; 0x28a + 8045dca: 493d ldr r1, [pc, #244] ; (8045ec0 ) + 8045dcc: 483d ldr r0, [pc, #244] ; (8045ec4 ) + 8045dce: f002 f909 bl 8047fe4 + 8045dd2: e06f b.n 8045eb4 hdr = (struct etharp_hdr *)p->payload; - 8045d94: 687b ldr r3, [r7, #4] - 8045d96: 685b ldr r3, [r3, #4] - 8045d98: 613b str r3, [r7, #16] + 8045dd4: 687b ldr r3, [r7, #4] + 8045dd6: 685b ldr r3, [r3, #4] + 8045dd8: 613b str r3, [r7, #16] /* RFC 826 "Packet Reception": */ if ((hdr->hwtype != PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET)) || - 8045d9a: 693b ldr r3, [r7, #16] - 8045d9c: 881b ldrh r3, [r3, #0] - 8045d9e: b29b uxth r3, r3 - 8045da0: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8045da4: d10c bne.n 8045dc0 + 8045dda: 693b ldr r3, [r7, #16] + 8045ddc: 881b ldrh r3, [r3, #0] + 8045dde: b29b uxth r3, r3 + 8045de0: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8045de4: d10c bne.n 8045e00 (hdr->hwlen != ETH_HWADDR_LEN) || - 8045da6: 693b ldr r3, [r7, #16] - 8045da8: 791b ldrb r3, [r3, #4] + 8045de6: 693b ldr r3, [r7, #16] + 8045de8: 791b ldrb r3, [r3, #4] if ((hdr->hwtype != PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET)) || - 8045daa: 2b06 cmp r3, #6 - 8045dac: d108 bne.n 8045dc0 + 8045dea: 2b06 cmp r3, #6 + 8045dec: d108 bne.n 8045e00 (hdr->protolen != sizeof(ip4_addr_t)) || - 8045dae: 693b ldr r3, [r7, #16] - 8045db0: 795b ldrb r3, [r3, #5] + 8045dee: 693b ldr r3, [r7, #16] + 8045df0: 795b ldrb r3, [r3, #5] (hdr->hwlen != ETH_HWADDR_LEN) || - 8045db2: 2b04 cmp r3, #4 - 8045db4: d104 bne.n 8045dc0 + 8045df2: 2b04 cmp r3, #4 + 8045df4: d104 bne.n 8045e00 (hdr->proto != PP_HTONS(ETHTYPE_IP))) { - 8045db6: 693b ldr r3, [r7, #16] - 8045db8: 885b ldrh r3, [r3, #2] - 8045dba: b29b uxth r3, r3 + 8045df6: 693b ldr r3, [r7, #16] + 8045df8: 885b ldrh r3, [r3, #2] + 8045dfa: b29b uxth r3, r3 (hdr->protolen != sizeof(ip4_addr_t)) || - 8045dbc: 2b08 cmp r3, #8 - 8045dbe: d003 beq.n 8045dc8 + 8045dfc: 2b08 cmp r3, #8 + 8045dfe: d003 beq.n 8045e08 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("etharp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n", hdr->hwtype, (u16_t)hdr->hwlen, hdr->proto, (u16_t)hdr->protolen)); ETHARP_STATS_INC(etharp.proterr); ETHARP_STATS_INC(etharp.drop); pbuf_free(p); - 8045dc0: 6878 ldr r0, [r7, #4] - 8045dc2: f7f8 fd35 bl 803e830 + 8045e00: 6878 ldr r0, [r7, #4] + 8045e02: f7f8 fd35 bl 803e870 return; - 8045dc6: e055 b.n 8045e74 + 8045e06: e055 b.n 8045eb4 autoip_arp_reply(netif, hdr); #endif /* LWIP_AUTOIP */ /* Copy struct ip4_addr_wordaligned to aligned ip4_addr, to support compilers without * structure packing (not using structure copy which breaks strict-aliasing rules). */ IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&sipaddr, &hdr->sipaddr); - 8045dc8: 693b ldr r3, [r7, #16] - 8045dca: 330e adds r3, #14 - 8045dcc: 681b ldr r3, [r3, #0] - 8045dce: 60fb str r3, [r7, #12] + 8045e08: 693b ldr r3, [r7, #16] + 8045e0a: 330e adds r3, #14 + 8045e0c: 681b ldr r3, [r3, #0] + 8045e0e: 60fb str r3, [r7, #12] IPADDR_WORDALIGNED_COPY_TO_IP4_ADDR_T(&dipaddr, &hdr->dipaddr); - 8045dd0: 693b ldr r3, [r7, #16] - 8045dd2: 3318 adds r3, #24 - 8045dd4: 681b ldr r3, [r3, #0] - 8045dd6: 60bb str r3, [r7, #8] + 8045e10: 693b ldr r3, [r7, #16] + 8045e12: 3318 adds r3, #24 + 8045e14: 681b ldr r3, [r3, #0] + 8045e16: 60bb str r3, [r7, #8] /* this interface is not configured? */ if (ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 8045dd8: 683b ldr r3, [r7, #0] - 8045dda: 3304 adds r3, #4 - 8045ddc: 681b ldr r3, [r3, #0] - 8045dde: 2b00 cmp r3, #0 - 8045de0: d102 bne.n 8045de8 + 8045e18: 683b ldr r3, [r7, #0] + 8045e1a: 3304 adds r3, #4 + 8045e1c: 681b ldr r3, [r3, #0] + 8045e1e: 2b00 cmp r3, #0 + 8045e20: d102 bne.n 8045e28 for_us = 0; - 8045de2: 2300 movs r3, #0 - 8045de4: 75fb strb r3, [r7, #23] - 8045de6: e009 b.n 8045dfc + 8045e22: 2300 movs r3, #0 + 8045e24: 75fb strb r3, [r7, #23] + 8045e26: e009 b.n 8045e3c } else { /* ARP packet directed to us? */ for_us = (u8_t)ip4_addr_cmp(&dipaddr, netif_ip4_addr(netif)); - 8045de8: 68ba ldr r2, [r7, #8] - 8045dea: 683b ldr r3, [r7, #0] - 8045dec: 3304 adds r3, #4 - 8045dee: 681b ldr r3, [r3, #0] - 8045df0: 429a cmp r2, r3 - 8045df2: bf0c ite eq - 8045df4: 2301 moveq r3, #1 - 8045df6: 2300 movne r3, #0 - 8045df8: b2db uxtb r3, r3 - 8045dfa: 75fb strb r3, [r7, #23] + 8045e28: 68ba ldr r2, [r7, #8] + 8045e2a: 683b ldr r3, [r7, #0] + 8045e2c: 3304 adds r3, #4 + 8045e2e: 681b ldr r3, [r3, #0] + 8045e30: 429a cmp r2, r3 + 8045e32: bf0c ite eq + 8045e34: 2301 moveq r3, #1 + 8045e36: 2300 movne r3, #0 + 8045e38: b2db uxtb r3, r3 + 8045e3a: 75fb strb r3, [r7, #23] /* ARP message directed to us? -> add IP address in ARP cache; assume requester wants to talk to us, can result in directly sending the queued packets for this host. ARP message not directed to us? -> update the source IP address in the cache, if present */ etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), - 8045dfc: 693b ldr r3, [r7, #16] - 8045dfe: f103 0208 add.w r2, r3, #8 - 8045e02: 7dfb ldrb r3, [r7, #23] - 8045e04: 2b00 cmp r3, #0 - 8045e06: d001 beq.n 8045e0c - 8045e08: 2301 movs r3, #1 - 8045e0a: e000 b.n 8045e0e - 8045e0c: 2302 movs r3, #2 - 8045e0e: f107 010c add.w r1, r7, #12 - 8045e12: 6838 ldr r0, [r7, #0] - 8045e14: f7ff fed8 bl 8045bc8 + 8045e3c: 693b ldr r3, [r7, #16] + 8045e3e: f103 0208 add.w r2, r3, #8 + 8045e42: 7dfb ldrb r3, [r7, #23] + 8045e44: 2b00 cmp r3, #0 + 8045e46: d001 beq.n 8045e4c + 8045e48: 2301 movs r3, #1 + 8045e4a: e000 b.n 8045e4e + 8045e4c: 2302 movs r3, #2 + 8045e4e: f107 010c add.w r1, r7, #12 + 8045e52: 6838 ldr r0, [r7, #0] + 8045e54: f7ff fed8 bl 8045c08 for_us ? ETHARP_FLAG_TRY_HARD : ETHARP_FLAG_FIND_ONLY); /* now act on the message itself */ switch (hdr->opcode) { - 8045e18: 693b ldr r3, [r7, #16] - 8045e1a: 88db ldrh r3, [r3, #6] - 8045e1c: b29b uxth r3, r3 - 8045e1e: f5b3 7f80 cmp.w r3, #256 ; 0x100 - 8045e22: d003 beq.n 8045e2c - 8045e24: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 8045e28: d01e beq.n 8045e68 + 8045e58: 693b ldr r3, [r7, #16] + 8045e5a: 88db ldrh r3, [r3, #6] + 8045e5c: b29b uxth r3, r3 + 8045e5e: f5b3 7f80 cmp.w r3, #256 ; 0x100 + 8045e62: d003 beq.n 8045e6c + 8045e64: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8045e68: d01e beq.n 8045ea8 #endif /* (LWIP_DHCP && DHCP_DOES_ARP_CHECK) */ break; default: LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_input: ARP unknown opcode type %"S16_F"\n", lwip_htons(hdr->opcode))); ETHARP_STATS_INC(etharp.err); break; - 8045e2a: e020 b.n 8045e6e + 8045e6a: e020 b.n 8045eae if (for_us) { - 8045e2c: 7dfb ldrb r3, [r7, #23] - 8045e2e: 2b00 cmp r3, #0 - 8045e30: d01c beq.n 8045e6c + 8045e6c: 7dfb ldrb r3, [r7, #23] + 8045e6e: 2b00 cmp r3, #0 + 8045e70: d01c beq.n 8045eac (struct eth_addr *)netif->hwaddr, &hdr->shwaddr, - 8045e32: 683b ldr r3, [r7, #0] - 8045e34: f103 002a add.w r0, r3, #42 ; 0x2a - 8045e38: 693b ldr r3, [r7, #16] - 8045e3a: f103 0408 add.w r4, r3, #8 + 8045e72: 683b ldr r3, [r7, #0] + 8045e74: f103 002a add.w r0, r3, #42 ; 0x2a + 8045e78: 693b ldr r3, [r7, #16] + 8045e7a: f103 0408 add.w r4, r3, #8 (struct eth_addr *)netif->hwaddr, netif_ip4_addr(netif), - 8045e3e: 683b ldr r3, [r7, #0] - 8045e40: f103 052a add.w r5, r3, #42 ; 0x2a - 8045e44: 683b ldr r3, [r7, #0] - 8045e46: 3304 adds r3, #4 + 8045e7e: 683b ldr r3, [r7, #0] + 8045e80: f103 052a add.w r5, r3, #42 ; 0x2a + 8045e84: 683b ldr r3, [r7, #0] + 8045e86: 3304 adds r3, #4 &hdr->shwaddr, &sipaddr, - 8045e48: 693a ldr r2, [r7, #16] - 8045e4a: 3208 adds r2, #8 + 8045e88: 693a ldr r2, [r7, #16] + 8045e8a: 3208 adds r2, #8 etharp_raw(netif, - 8045e4c: 2102 movs r1, #2 - 8045e4e: 9103 str r1, [sp, #12] - 8045e50: f107 010c add.w r1, r7, #12 - 8045e54: 9102 str r1, [sp, #8] - 8045e56: 9201 str r2, [sp, #4] - 8045e58: 9300 str r3, [sp, #0] - 8045e5a: 462b mov r3, r5 - 8045e5c: 4622 mov r2, r4 - 8045e5e: 4601 mov r1, r0 - 8045e60: 6838 ldr r0, [r7, #0] - 8045e62: f000 faeb bl 804643c + 8045e8c: 2102 movs r1, #2 + 8045e8e: 9103 str r1, [sp, #12] + 8045e90: f107 010c add.w r1, r7, #12 + 8045e94: 9102 str r1, [sp, #8] + 8045e96: 9201 str r2, [sp, #4] + 8045e98: 9300 str r3, [sp, #0] + 8045e9a: 462b mov r3, r5 + 8045e9c: 4622 mov r2, r4 + 8045e9e: 4601 mov r1, r0 + 8045ea0: 6838 ldr r0, [r7, #0] + 8045ea2: f000 faeb bl 804647c break; - 8045e66: e001 b.n 8045e6c + 8045ea6: e001 b.n 8045eac break; - 8045e68: bf00 nop - 8045e6a: e000 b.n 8045e6e + 8045ea8: bf00 nop + 8045eaa: e000 b.n 8045eae break; - 8045e6c: bf00 nop + 8045eac: bf00 nop } /* free ARP packet */ pbuf_free(p); - 8045e6e: 6878 ldr r0, [r7, #4] - 8045e70: f7f8 fcde bl 803e830 -} - 8045e74: 3718 adds r7, #24 - 8045e76: 46bd mov sp, r7 - 8045e78: bdb0 pop {r4, r5, r7, pc} - 8045e7a: bf00 nop - 8045e7c: 0804c480 .word 0x0804c480 - 8045e80: 0804c5d0 .word 0x0804c5d0 - 8045e84: 0804c4f8 .word 0x0804c4f8 - -08045e88 : + 8045eae: 6878 ldr r0, [r7, #4] + 8045eb0: f7f8 fcde bl 803e870 +} + 8045eb4: 3718 adds r7, #24 + 8045eb6: 46bd mov sp, r7 + 8045eb8: bdb0 pop {r4, r5, r7, pc} + 8045eba: bf00 nop + 8045ebc: 0804c4c0 .word 0x0804c4c0 + 8045ec0: 0804c610 .word 0x0804c610 + 8045ec4: 0804c538 .word 0x0804c538 + +08045ec8 : /** Just a small helper function that sends a pbuf to an ethernet address * in the arp_table specified by the index 'arp_idx'. */ static err_t etharp_output_to_arp_index(struct netif *netif, struct pbuf *q, netif_addr_idx_t arp_idx) { - 8045e88: b580 push {r7, lr} - 8045e8a: b086 sub sp, #24 - 8045e8c: af02 add r7, sp, #8 - 8045e8e: 60f8 str r0, [r7, #12] - 8045e90: 60b9 str r1, [r7, #8] - 8045e92: 4613 mov r3, r2 - 8045e94: 71fb strb r3, [r7, #7] + 8045ec8: b580 push {r7, lr} + 8045eca: b086 sub sp, #24 + 8045ecc: af02 add r7, sp, #8 + 8045ece: 60f8 str r0, [r7, #12] + 8045ed0: 60b9 str r1, [r7, #8] + 8045ed2: 4613 mov r3, r2 + 8045ed4: 71fb strb r3, [r7, #7] LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE", - 8045e96: 79fa ldrb r2, [r7, #7] - 8045e98: 4944 ldr r1, [pc, #272] ; (8045fac ) - 8045e9a: 4613 mov r3, r2 - 8045e9c: 005b lsls r3, r3, #1 - 8045e9e: 4413 add r3, r2 - 8045ea0: 00db lsls r3, r3, #3 - 8045ea2: 440b add r3, r1 - 8045ea4: 3314 adds r3, #20 - 8045ea6: 781b ldrb r3, [r3, #0] - 8045ea8: 2b01 cmp r3, #1 - 8045eaa: d806 bhi.n 8045eba - 8045eac: 4b40 ldr r3, [pc, #256] ; (8045fb0 ) - 8045eae: f240 22ee movw r2, #750 ; 0x2ee - 8045eb2: 4940 ldr r1, [pc, #256] ; (8045fb4 ) - 8045eb4: 4840 ldr r0, [pc, #256] ; (8045fb8 ) - 8045eb6: f002 f875 bl 8047fa4 + 8045ed6: 79fa ldrb r2, [r7, #7] + 8045ed8: 4944 ldr r1, [pc, #272] ; (8045fec ) + 8045eda: 4613 mov r3, r2 + 8045edc: 005b lsls r3, r3, #1 + 8045ede: 4413 add r3, r2 + 8045ee0: 00db lsls r3, r3, #3 + 8045ee2: 440b add r3, r1 + 8045ee4: 3314 adds r3, #20 + 8045ee6: 781b ldrb r3, [r3, #0] + 8045ee8: 2b01 cmp r3, #1 + 8045eea: d806 bhi.n 8045efa + 8045eec: 4b40 ldr r3, [pc, #256] ; (8045ff0 ) + 8045eee: f240 22ee movw r2, #750 ; 0x2ee + 8045ef2: 4940 ldr r1, [pc, #256] ; (8045ff4 ) + 8045ef4: 4840 ldr r0, [pc, #256] ; (8045ff8 ) + 8045ef6: f002 f875 bl 8047fe4 arp_table[arp_idx].state >= ETHARP_STATE_STABLE); /* if arp table entry is about to expire: re-request it, but only if its state is ETHARP_STATE_STABLE to prevent flooding the network with ARP requests if this address is used frequently. */ if (arp_table[arp_idx].state == ETHARP_STATE_STABLE) { - 8045eba: 79fa ldrb r2, [r7, #7] - 8045ebc: 493b ldr r1, [pc, #236] ; (8045fac ) - 8045ebe: 4613 mov r3, r2 - 8045ec0: 005b lsls r3, r3, #1 - 8045ec2: 4413 add r3, r2 - 8045ec4: 00db lsls r3, r3, #3 - 8045ec6: 440b add r3, r1 - 8045ec8: 3314 adds r3, #20 - 8045eca: 781b ldrb r3, [r3, #0] - 8045ecc: 2b02 cmp r3, #2 - 8045ece: d153 bne.n 8045f78 + 8045efa: 79fa ldrb r2, [r7, #7] + 8045efc: 493b ldr r1, [pc, #236] ; (8045fec ) + 8045efe: 4613 mov r3, r2 + 8045f00: 005b lsls r3, r3, #1 + 8045f02: 4413 add r3, r2 + 8045f04: 00db lsls r3, r3, #3 + 8045f06: 440b add r3, r1 + 8045f08: 3314 adds r3, #20 + 8045f0a: 781b ldrb r3, [r3, #0] + 8045f0c: 2b02 cmp r3, #2 + 8045f0e: d153 bne.n 8045fb8 if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_BROADCAST) { - 8045ed0: 79fa ldrb r2, [r7, #7] - 8045ed2: 4936 ldr r1, [pc, #216] ; (8045fac ) - 8045ed4: 4613 mov r3, r2 - 8045ed6: 005b lsls r3, r3, #1 - 8045ed8: 4413 add r3, r2 - 8045eda: 00db lsls r3, r3, #3 - 8045edc: 440b add r3, r1 - 8045ede: 3312 adds r3, #18 - 8045ee0: 881b ldrh r3, [r3, #0] - 8045ee2: f5b3 7f8e cmp.w r3, #284 ; 0x11c - 8045ee6: d919 bls.n 8045f1c + 8045f10: 79fa ldrb r2, [r7, #7] + 8045f12: 4936 ldr r1, [pc, #216] ; (8045fec ) + 8045f14: 4613 mov r3, r2 + 8045f16: 005b lsls r3, r3, #1 + 8045f18: 4413 add r3, r2 + 8045f1a: 00db lsls r3, r3, #3 + 8045f1c: 440b add r3, r1 + 8045f1e: 3312 adds r3, #18 + 8045f20: 881b ldrh r3, [r3, #0] + 8045f22: f5b3 7f8e cmp.w r3, #284 ; 0x11c + 8045f26: d919 bls.n 8045f5c /* issue a standard request using broadcast */ if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) { - 8045ee8: 79fa ldrb r2, [r7, #7] - 8045eea: 4613 mov r3, r2 - 8045eec: 005b lsls r3, r3, #1 - 8045eee: 4413 add r3, r2 - 8045ef0: 00db lsls r3, r3, #3 - 8045ef2: 4a2e ldr r2, [pc, #184] ; (8045fac ) - 8045ef4: 4413 add r3, r2 - 8045ef6: 3304 adds r3, #4 - 8045ef8: 4619 mov r1, r3 - 8045efa: 68f8 ldr r0, [r7, #12] - 8045efc: f000 fb4c bl 8046598 - 8045f00: 4603 mov r3, r0 - 8045f02: 2b00 cmp r3, #0 - 8045f04: d138 bne.n 8045f78 + 8045f28: 79fa ldrb r2, [r7, #7] + 8045f2a: 4613 mov r3, r2 + 8045f2c: 005b lsls r3, r3, #1 + 8045f2e: 4413 add r3, r2 + 8045f30: 00db lsls r3, r3, #3 + 8045f32: 4a2e ldr r2, [pc, #184] ; (8045fec ) + 8045f34: 4413 add r3, r2 + 8045f36: 3304 adds r3, #4 + 8045f38: 4619 mov r1, r3 + 8045f3a: 68f8 ldr r0, [r7, #12] + 8045f3c: f000 fb4c bl 80465d8 + 8045f40: 4603 mov r3, r0 + 8045f42: 2b00 cmp r3, #0 + 8045f44: d138 bne.n 8045fb8 arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING_1; - 8045f06: 79fa ldrb r2, [r7, #7] - 8045f08: 4928 ldr r1, [pc, #160] ; (8045fac ) - 8045f0a: 4613 mov r3, r2 - 8045f0c: 005b lsls r3, r3, #1 - 8045f0e: 4413 add r3, r2 - 8045f10: 00db lsls r3, r3, #3 - 8045f12: 440b add r3, r1 - 8045f14: 3314 adds r3, #20 - 8045f16: 2203 movs r2, #3 - 8045f18: 701a strb r2, [r3, #0] - 8045f1a: e02d b.n 8045f78 + 8045f46: 79fa ldrb r2, [r7, #7] + 8045f48: 4928 ldr r1, [pc, #160] ; (8045fec ) + 8045f4a: 4613 mov r3, r2 + 8045f4c: 005b lsls r3, r3, #1 + 8045f4e: 4413 add r3, r2 + 8045f50: 00db lsls r3, r3, #3 + 8045f52: 440b add r3, r1 + 8045f54: 3314 adds r3, #20 + 8045f56: 2203 movs r2, #3 + 8045f58: 701a strb r2, [r3, #0] + 8045f5a: e02d b.n 8045fb8 } } else if (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED_UNICAST) { - 8045f1c: 79fa ldrb r2, [r7, #7] - 8045f1e: 4923 ldr r1, [pc, #140] ; (8045fac ) - 8045f20: 4613 mov r3, r2 - 8045f22: 005b lsls r3, r3, #1 - 8045f24: 4413 add r3, r2 - 8045f26: 00db lsls r3, r3, #3 - 8045f28: 440b add r3, r1 - 8045f2a: 3312 adds r3, #18 - 8045f2c: 881b ldrh r3, [r3, #0] - 8045f2e: f5b3 7f87 cmp.w r3, #270 ; 0x10e - 8045f32: d321 bcc.n 8045f78 + 8045f5c: 79fa ldrb r2, [r7, #7] + 8045f5e: 4923 ldr r1, [pc, #140] ; (8045fec ) + 8045f60: 4613 mov r3, r2 + 8045f62: 005b lsls r3, r3, #1 + 8045f64: 4413 add r3, r2 + 8045f66: 00db lsls r3, r3, #3 + 8045f68: 440b add r3, r1 + 8045f6a: 3312 adds r3, #18 + 8045f6c: 881b ldrh r3, [r3, #0] + 8045f6e: f5b3 7f87 cmp.w r3, #270 ; 0x10e + 8045f72: d321 bcc.n 8045fb8 /* issue a unicast request (for 15 seconds) to prevent unnecessary broadcast */ if (etharp_request_dst(netif, &arp_table[arp_idx].ipaddr, &arp_table[arp_idx].ethaddr) == ERR_OK) { - 8045f34: 79fa ldrb r2, [r7, #7] - 8045f36: 4613 mov r3, r2 - 8045f38: 005b lsls r3, r3, #1 - 8045f3a: 4413 add r3, r2 - 8045f3c: 00db lsls r3, r3, #3 - 8045f3e: 4a1b ldr r2, [pc, #108] ; (8045fac ) - 8045f40: 4413 add r3, r2 - 8045f42: 1d19 adds r1, r3, #4 - 8045f44: 79fa ldrb r2, [r7, #7] - 8045f46: 4613 mov r3, r2 - 8045f48: 005b lsls r3, r3, #1 - 8045f4a: 4413 add r3, r2 - 8045f4c: 00db lsls r3, r3, #3 - 8045f4e: 3308 adds r3, #8 - 8045f50: 4a16 ldr r2, [pc, #88] ; (8045fac ) - 8045f52: 4413 add r3, r2 - 8045f54: 3304 adds r3, #4 - 8045f56: 461a mov r2, r3 - 8045f58: 68f8 ldr r0, [r7, #12] - 8045f5a: f000 fafb bl 8046554 - 8045f5e: 4603 mov r3, r0 - 8045f60: 2b00 cmp r3, #0 - 8045f62: d109 bne.n 8045f78 + 8045f74: 79fa ldrb r2, [r7, #7] + 8045f76: 4613 mov r3, r2 + 8045f78: 005b lsls r3, r3, #1 + 8045f7a: 4413 add r3, r2 + 8045f7c: 00db lsls r3, r3, #3 + 8045f7e: 4a1b ldr r2, [pc, #108] ; (8045fec ) + 8045f80: 4413 add r3, r2 + 8045f82: 1d19 adds r1, r3, #4 + 8045f84: 79fa ldrb r2, [r7, #7] + 8045f86: 4613 mov r3, r2 + 8045f88: 005b lsls r3, r3, #1 + 8045f8a: 4413 add r3, r2 + 8045f8c: 00db lsls r3, r3, #3 + 8045f8e: 3308 adds r3, #8 + 8045f90: 4a16 ldr r2, [pc, #88] ; (8045fec ) + 8045f92: 4413 add r3, r2 + 8045f94: 3304 adds r3, #4 + 8045f96: 461a mov r2, r3 + 8045f98: 68f8 ldr r0, [r7, #12] + 8045f9a: f000 fafb bl 8046594 + 8045f9e: 4603 mov r3, r0 + 8045fa0: 2b00 cmp r3, #0 + 8045fa2: d109 bne.n 8045fb8 arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING_1; - 8045f64: 79fa ldrb r2, [r7, #7] - 8045f66: 4911 ldr r1, [pc, #68] ; (8045fac ) - 8045f68: 4613 mov r3, r2 - 8045f6a: 005b lsls r3, r3, #1 - 8045f6c: 4413 add r3, r2 - 8045f6e: 00db lsls r3, r3, #3 - 8045f70: 440b add r3, r1 - 8045f72: 3314 adds r3, #20 - 8045f74: 2203 movs r2, #3 - 8045f76: 701a strb r2, [r3, #0] + 8045fa4: 79fa ldrb r2, [r7, #7] + 8045fa6: 4911 ldr r1, [pc, #68] ; (8045fec ) + 8045fa8: 4613 mov r3, r2 + 8045faa: 005b lsls r3, r3, #1 + 8045fac: 4413 add r3, r2 + 8045fae: 00db lsls r3, r3, #3 + 8045fb0: 440b add r3, r1 + 8045fb2: 3314 adds r3, #20 + 8045fb4: 2203 movs r2, #3 + 8045fb6: 701a strb r2, [r3, #0] } } } return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), &arp_table[arp_idx].ethaddr, ETHTYPE_IP); - 8045f78: 68fb ldr r3, [r7, #12] - 8045f7a: f103 012a add.w r1, r3, #42 ; 0x2a - 8045f7e: 79fa ldrb r2, [r7, #7] - 8045f80: 4613 mov r3, r2 - 8045f82: 005b lsls r3, r3, #1 - 8045f84: 4413 add r3, r2 - 8045f86: 00db lsls r3, r3, #3 - 8045f88: 3308 adds r3, #8 - 8045f8a: 4a08 ldr r2, [pc, #32] ; (8045fac ) - 8045f8c: 4413 add r3, r2 - 8045f8e: 3304 adds r3, #4 - 8045f90: f44f 6200 mov.w r2, #2048 ; 0x800 - 8045f94: 9200 str r2, [sp, #0] - 8045f96: 460a mov r2, r1 - 8045f98: 68b9 ldr r1, [r7, #8] - 8045f9a: 68f8 ldr r0, [r7, #12] - 8045f9c: f001 fe66 bl 8047c6c - 8045fa0: 4603 mov r3, r0 -} - 8045fa2: 4618 mov r0, r3 - 8045fa4: 3710 adds r7, #16 - 8045fa6: 46bd mov sp, r7 - 8045fa8: bd80 pop {r7, pc} - 8045faa: bf00 nop - 8045fac: 2400eb48 .word 0x2400eb48 - 8045fb0: 0804c480 .word 0x0804c480 - 8045fb4: 0804c5f0 .word 0x0804c5f0 - 8045fb8: 0804c4f8 .word 0x0804c4f8 - -08045fbc : + 8045fb8: 68fb ldr r3, [r7, #12] + 8045fba: f103 012a add.w r1, r3, #42 ; 0x2a + 8045fbe: 79fa ldrb r2, [r7, #7] + 8045fc0: 4613 mov r3, r2 + 8045fc2: 005b lsls r3, r3, #1 + 8045fc4: 4413 add r3, r2 + 8045fc6: 00db lsls r3, r3, #3 + 8045fc8: 3308 adds r3, #8 + 8045fca: 4a08 ldr r2, [pc, #32] ; (8045fec ) + 8045fcc: 4413 add r3, r2 + 8045fce: 3304 adds r3, #4 + 8045fd0: f44f 6200 mov.w r2, #2048 ; 0x800 + 8045fd4: 9200 str r2, [sp, #0] + 8045fd6: 460a mov r2, r1 + 8045fd8: 68b9 ldr r1, [r7, #8] + 8045fda: 68f8 ldr r0, [r7, #12] + 8045fdc: f001 fe66 bl 8047cac + 8045fe0: 4603 mov r3, r0 +} + 8045fe2: 4618 mov r0, r3 + 8045fe4: 3710 adds r7, #16 + 8045fe6: 46bd mov sp, r7 + 8045fe8: bd80 pop {r7, pc} + 8045fea: bf00 nop + 8045fec: 2400eb48 .word 0x2400eb48 + 8045ff0: 0804c4c0 .word 0x0804c4c0 + 8045ff4: 0804c630 .word 0x0804c630 + 8045ff8: 0804c538 .word 0x0804c538 + +08045ffc : * - ERR_RTE No route to destination (no gateway to external networks), * or the return type of either etharp_query() or ethernet_output(). */ err_t etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr) { - 8045fbc: b580 push {r7, lr} - 8045fbe: b08a sub sp, #40 ; 0x28 - 8045fc0: af02 add r7, sp, #8 - 8045fc2: 60f8 str r0, [r7, #12] - 8045fc4: 60b9 str r1, [r7, #8] - 8045fc6: 607a str r2, [r7, #4] + 8045ffc: b580 push {r7, lr} + 8045ffe: b08a sub sp, #40 ; 0x28 + 8046000: af02 add r7, sp, #8 + 8046002: 60f8 str r0, [r7, #12] + 8046004: 60b9 str r1, [r7, #8] + 8046006: 607a str r2, [r7, #4] const struct eth_addr *dest; struct eth_addr mcastaddr; const ip4_addr_t *dst_addr = ipaddr; - 8045fc8: 687b ldr r3, [r7, #4] - 8045fca: 61bb str r3, [r7, #24] + 8046008: 687b ldr r3, [r7, #4] + 804600a: 61bb str r3, [r7, #24] LWIP_ASSERT_CORE_LOCKED(); LWIP_ASSERT("netif != NULL", netif != NULL); - 8045fcc: 68fb ldr r3, [r7, #12] - 8045fce: 2b00 cmp r3, #0 - 8045fd0: d106 bne.n 8045fe0 - 8045fd2: 4b73 ldr r3, [pc, #460] ; (80461a0 ) - 8045fd4: f240 321e movw r2, #798 ; 0x31e - 8045fd8: 4972 ldr r1, [pc, #456] ; (80461a4 ) - 8045fda: 4873 ldr r0, [pc, #460] ; (80461a8 ) - 8045fdc: f001 ffe2 bl 8047fa4 + 804600c: 68fb ldr r3, [r7, #12] + 804600e: 2b00 cmp r3, #0 + 8046010: d106 bne.n 8046020 + 8046012: 4b73 ldr r3, [pc, #460] ; (80461e0 ) + 8046014: f240 321e movw r2, #798 ; 0x31e + 8046018: 4972 ldr r1, [pc, #456] ; (80461e4 ) + 804601a: 4873 ldr r0, [pc, #460] ; (80461e8 ) + 804601c: f001 ffe2 bl 8047fe4 LWIP_ASSERT("q != NULL", q != NULL); - 8045fe0: 68bb ldr r3, [r7, #8] - 8045fe2: 2b00 cmp r3, #0 - 8045fe4: d106 bne.n 8045ff4 - 8045fe6: 4b6e ldr r3, [pc, #440] ; (80461a0 ) - 8045fe8: f240 321f movw r2, #799 ; 0x31f - 8045fec: 496f ldr r1, [pc, #444] ; (80461ac ) - 8045fee: 486e ldr r0, [pc, #440] ; (80461a8 ) - 8045ff0: f001 ffd8 bl 8047fa4 + 8046020: 68bb ldr r3, [r7, #8] + 8046022: 2b00 cmp r3, #0 + 8046024: d106 bne.n 8046034 + 8046026: 4b6e ldr r3, [pc, #440] ; (80461e0 ) + 8046028: f240 321f movw r2, #799 ; 0x31f + 804602c: 496f ldr r1, [pc, #444] ; (80461ec ) + 804602e: 486e ldr r0, [pc, #440] ; (80461e8 ) + 8046030: f001 ffd8 bl 8047fe4 LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL); - 8045ff4: 687b ldr r3, [r7, #4] - 8045ff6: 2b00 cmp r3, #0 - 8045ff8: d106 bne.n 8046008 - 8045ffa: 4b69 ldr r3, [pc, #420] ; (80461a0 ) - 8045ffc: f44f 7248 mov.w r2, #800 ; 0x320 - 8046000: 496b ldr r1, [pc, #428] ; (80461b0 ) - 8046002: 4869 ldr r0, [pc, #420] ; (80461a8 ) - 8046004: f001 ffce bl 8047fa4 + 8046034: 687b ldr r3, [r7, #4] + 8046036: 2b00 cmp r3, #0 + 8046038: d106 bne.n 8046048 + 804603a: 4b69 ldr r3, [pc, #420] ; (80461e0 ) + 804603c: f44f 7248 mov.w r2, #800 ; 0x320 + 8046040: 496b ldr r1, [pc, #428] ; (80461f0 ) + 8046042: 4869 ldr r0, [pc, #420] ; (80461e8 ) + 8046044: f001 ffce bl 8047fe4 /* Determine on destination hardware address. Broadcasts and multicasts * are special, other IP addresses are looked up in the ARP table. */ /* broadcast destination IP address? */ if (ip4_addr_isbroadcast(ipaddr, netif)) { - 8046008: 687b ldr r3, [r7, #4] - 804600a: 681b ldr r3, [r3, #0] - 804600c: 68f9 ldr r1, [r7, #12] - 804600e: 4618 mov r0, r3 - 8046010: f000 ff1e bl 8046e50 - 8046014: 4603 mov r3, r0 - 8046016: 2b00 cmp r3, #0 - 8046018: d002 beq.n 8046020 + 8046048: 687b ldr r3, [r7, #4] + 804604a: 681b ldr r3, [r3, #0] + 804604c: 68f9 ldr r1, [r7, #12] + 804604e: 4618 mov r0, r3 + 8046050: f000 ff1e bl 8046e90 + 8046054: 4603 mov r3, r0 + 8046056: 2b00 cmp r3, #0 + 8046058: d002 beq.n 8046060 /* broadcast on Ethernet also */ dest = (const struct eth_addr *)ðbroadcast; - 804601a: 4b66 ldr r3, [pc, #408] ; (80461b4 ) - 804601c: 61fb str r3, [r7, #28] - 804601e: e0af b.n 8046180 + 804605a: 4b66 ldr r3, [pc, #408] ; (80461f4 ) + 804605c: 61fb str r3, [r7, #28] + 804605e: e0af b.n 80461c0 /* multicast destination IP address? */ } else if (ip4_addr_ismulticast(ipaddr)) { - 8046020: 687b ldr r3, [r7, #4] - 8046022: 681b ldr r3, [r3, #0] - 8046024: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8046028: 2be0 cmp r3, #224 ; 0xe0 - 804602a: d118 bne.n 804605e + 8046060: 687b ldr r3, [r7, #4] + 8046062: 681b ldr r3, [r3, #0] + 8046064: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8046068: 2be0 cmp r3, #224 ; 0xe0 + 804606a: d118 bne.n 804609e /* Hash IP multicast address to MAC address.*/ mcastaddr.addr[0] = LL_IP4_MULTICAST_ADDR_0; - 804602c: 2301 movs r3, #1 - 804602e: 743b strb r3, [r7, #16] + 804606c: 2301 movs r3, #1 + 804606e: 743b strb r3, [r7, #16] mcastaddr.addr[1] = LL_IP4_MULTICAST_ADDR_1; - 8046030: 2300 movs r3, #0 - 8046032: 747b strb r3, [r7, #17] + 8046070: 2300 movs r3, #0 + 8046072: 747b strb r3, [r7, #17] mcastaddr.addr[2] = LL_IP4_MULTICAST_ADDR_2; - 8046034: 235e movs r3, #94 ; 0x5e - 8046036: 74bb strb r3, [r7, #18] + 8046074: 235e movs r3, #94 ; 0x5e + 8046076: 74bb strb r3, [r7, #18] mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; - 8046038: 687b ldr r3, [r7, #4] - 804603a: 3301 adds r3, #1 - 804603c: 781b ldrb r3, [r3, #0] - 804603e: f003 037f and.w r3, r3, #127 ; 0x7f - 8046042: b2db uxtb r3, r3 - 8046044: 74fb strb r3, [r7, #19] + 8046078: 687b ldr r3, [r7, #4] + 804607a: 3301 adds r3, #1 + 804607c: 781b ldrb r3, [r3, #0] + 804607e: f003 037f and.w r3, r3, #127 ; 0x7f + 8046082: b2db uxtb r3, r3 + 8046084: 74fb strb r3, [r7, #19] mcastaddr.addr[4] = ip4_addr3(ipaddr); - 8046046: 687b ldr r3, [r7, #4] - 8046048: 3302 adds r3, #2 - 804604a: 781b ldrb r3, [r3, #0] - 804604c: 753b strb r3, [r7, #20] + 8046086: 687b ldr r3, [r7, #4] + 8046088: 3302 adds r3, #2 + 804608a: 781b ldrb r3, [r3, #0] + 804608c: 753b strb r3, [r7, #20] mcastaddr.addr[5] = ip4_addr4(ipaddr); - 804604e: 687b ldr r3, [r7, #4] - 8046050: 3303 adds r3, #3 - 8046052: 781b ldrb r3, [r3, #0] - 8046054: 757b strb r3, [r7, #21] + 804608e: 687b ldr r3, [r7, #4] + 8046090: 3303 adds r3, #3 + 8046092: 781b ldrb r3, [r3, #0] + 8046094: 757b strb r3, [r7, #21] /* destination Ethernet address is multicast */ dest = &mcastaddr; - 8046056: f107 0310 add.w r3, r7, #16 - 804605a: 61fb str r3, [r7, #28] - 804605c: e090 b.n 8046180 + 8046096: f107 0310 add.w r3, r7, #16 + 804609a: 61fb str r3, [r7, #28] + 804609c: e090 b.n 80461c0 /* unicast destination IP address? */ } else { netif_addr_idx_t i; /* outside local network? if so, this can neither be a global broadcast nor a subnet broadcast. */ if (!ip4_addr_netcmp(ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) && - 804605e: 687b ldr r3, [r7, #4] - 8046060: 681a ldr r2, [r3, #0] - 8046062: 68fb ldr r3, [r7, #12] - 8046064: 3304 adds r3, #4 - 8046066: 681b ldr r3, [r3, #0] - 8046068: 405a eors r2, r3 - 804606a: 68fb ldr r3, [r7, #12] - 804606c: 3308 adds r3, #8 - 804606e: 681b ldr r3, [r3, #0] - 8046070: 4013 ands r3, r2 - 8046072: 2b00 cmp r3, #0 - 8046074: d012 beq.n 804609c + 804609e: 687b ldr r3, [r7, #4] + 80460a0: 681a ldr r2, [r3, #0] + 80460a2: 68fb ldr r3, [r7, #12] + 80460a4: 3304 adds r3, #4 + 80460a6: 681b ldr r3, [r3, #0] + 80460a8: 405a eors r2, r3 + 80460aa: 68fb ldr r3, [r7, #12] + 80460ac: 3308 adds r3, #8 + 80460ae: 681b ldr r3, [r3, #0] + 80460b0: 4013 ands r3, r2 + 80460b2: 2b00 cmp r3, #0 + 80460b4: d012 beq.n 80460dc !ip4_addr_islinklocal(ipaddr)) { - 8046076: 687b ldr r3, [r7, #4] - 8046078: 681b ldr r3, [r3, #0] - 804607a: b29b uxth r3, r3 + 80460b6: 687b ldr r3, [r7, #4] + 80460b8: 681b ldr r3, [r3, #0] + 80460ba: b29b uxth r3, r3 if (!ip4_addr_netcmp(ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) && - 804607c: f64f 62a9 movw r2, #65193 ; 0xfea9 - 8046080: 4293 cmp r3, r2 - 8046082: d00b beq.n 804609c + 80460bc: f64f 62a9 movw r2, #65193 ; 0xfea9 + 80460c0: 4293 cmp r3, r2 + 80460c2: d00b beq.n 80460dc dst_addr = LWIP_HOOK_ETHARP_GET_GW(netif, ipaddr); if (dst_addr == NULL) #endif /* LWIP_HOOK_ETHARP_GET_GW */ { /* interface has default gateway? */ if (!ip4_addr_isany_val(*netif_ip4_gw(netif))) { - 8046084: 68fb ldr r3, [r7, #12] - 8046086: 330c adds r3, #12 - 8046088: 681b ldr r3, [r3, #0] - 804608a: 2b00 cmp r3, #0 - 804608c: d003 beq.n 8046096 + 80460c4: 68fb ldr r3, [r7, #12] + 80460c6: 330c adds r3, #12 + 80460c8: 681b ldr r3, [r3, #0] + 80460ca: 2b00 cmp r3, #0 + 80460cc: d003 beq.n 80460d6 /* send to hardware address of default gateway IP address */ dst_addr = netif_ip4_gw(netif); - 804608e: 68fb ldr r3, [r7, #12] - 8046090: 330c adds r3, #12 - 8046092: 61bb str r3, [r7, #24] - 8046094: e002 b.n 804609c + 80460ce: 68fb ldr r3, [r7, #12] + 80460d0: 330c adds r3, #12 + 80460d2: 61bb str r3, [r7, #24] + 80460d4: e002 b.n 80460dc /* no default gateway available */ } else { /* no route to destination error (default gateway missing) */ return ERR_RTE; - 8046096: f06f 0303 mvn.w r3, #3 - 804609a: e07d b.n 8046198 + 80460d6: f06f 0303 mvn.w r3, #3 + 80460da: e07d b.n 80461d8 if (netif->hints != NULL) { /* per-pcb cached entry was given */ netif_addr_idx_t etharp_cached_entry = netif->hints->addr_hint; if (etharp_cached_entry < ARP_TABLE_SIZE) { #endif /* LWIP_NETIF_HWADDRHINT */ if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && - 804609c: 4b46 ldr r3, [pc, #280] ; (80461b8 ) - 804609e: 781b ldrb r3, [r3, #0] - 80460a0: 4619 mov r1, r3 - 80460a2: 4a46 ldr r2, [pc, #280] ; (80461bc ) - 80460a4: 460b mov r3, r1 - 80460a6: 005b lsls r3, r3, #1 - 80460a8: 440b add r3, r1 - 80460aa: 00db lsls r3, r3, #3 - 80460ac: 4413 add r3, r2 - 80460ae: 3314 adds r3, #20 - 80460b0: 781b ldrb r3, [r3, #0] - 80460b2: 2b01 cmp r3, #1 - 80460b4: d925 bls.n 8046102 + 80460dc: 4b46 ldr r3, [pc, #280] ; (80461f8 ) + 80460de: 781b ldrb r3, [r3, #0] + 80460e0: 4619 mov r1, r3 + 80460e2: 4a46 ldr r2, [pc, #280] ; (80461fc ) + 80460e4: 460b mov r3, r1 + 80460e6: 005b lsls r3, r3, #1 + 80460e8: 440b add r3, r1 + 80460ea: 00db lsls r3, r3, #3 + 80460ec: 4413 add r3, r2 + 80460ee: 3314 adds r3, #20 + 80460f0: 781b ldrb r3, [r3, #0] + 80460f2: 2b01 cmp r3, #1 + 80460f4: d925 bls.n 8046142 #if ETHARP_TABLE_MATCH_NETIF (arp_table[etharp_cached_entry].netif == netif) && - 80460b6: 4b40 ldr r3, [pc, #256] ; (80461b8 ) - 80460b8: 781b ldrb r3, [r3, #0] - 80460ba: 4619 mov r1, r3 - 80460bc: 4a3f ldr r2, [pc, #252] ; (80461bc ) - 80460be: 460b mov r3, r1 - 80460c0: 005b lsls r3, r3, #1 - 80460c2: 440b add r3, r1 - 80460c4: 00db lsls r3, r3, #3 - 80460c6: 4413 add r3, r2 - 80460c8: 3308 adds r3, #8 - 80460ca: 681b ldr r3, [r3, #0] + 80460f6: 4b40 ldr r3, [pc, #256] ; (80461f8 ) + 80460f8: 781b ldrb r3, [r3, #0] + 80460fa: 4619 mov r1, r3 + 80460fc: 4a3f ldr r2, [pc, #252] ; (80461fc ) + 80460fe: 460b mov r3, r1 + 8046100: 005b lsls r3, r3, #1 + 8046102: 440b add r3, r1 + 8046104: 00db lsls r3, r3, #3 + 8046106: 4413 add r3, r2 + 8046108: 3308 adds r3, #8 + 804610a: 681b ldr r3, [r3, #0] if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && - 80460cc: 68fa ldr r2, [r7, #12] - 80460ce: 429a cmp r2, r3 - 80460d0: d117 bne.n 8046102 + 804610c: 68fa ldr r2, [r7, #12] + 804610e: 429a cmp r2, r3 + 8046110: d117 bne.n 8046142 #endif (ip4_addr_cmp(dst_addr, &arp_table[etharp_cached_entry].ipaddr))) { - 80460d2: 69bb ldr r3, [r7, #24] - 80460d4: 681a ldr r2, [r3, #0] - 80460d6: 4b38 ldr r3, [pc, #224] ; (80461b8 ) - 80460d8: 781b ldrb r3, [r3, #0] - 80460da: 4618 mov r0, r3 - 80460dc: 4937 ldr r1, [pc, #220] ; (80461bc ) - 80460de: 4603 mov r3, r0 - 80460e0: 005b lsls r3, r3, #1 - 80460e2: 4403 add r3, r0 - 80460e4: 00db lsls r3, r3, #3 - 80460e6: 440b add r3, r1 - 80460e8: 3304 adds r3, #4 - 80460ea: 681b ldr r3, [r3, #0] + 8046112: 69bb ldr r3, [r7, #24] + 8046114: 681a ldr r2, [r3, #0] + 8046116: 4b38 ldr r3, [pc, #224] ; (80461f8 ) + 8046118: 781b ldrb r3, [r3, #0] + 804611a: 4618 mov r0, r3 + 804611c: 4937 ldr r1, [pc, #220] ; (80461fc ) + 804611e: 4603 mov r3, r0 + 8046120: 005b lsls r3, r3, #1 + 8046122: 4403 add r3, r0 + 8046124: 00db lsls r3, r3, #3 + 8046126: 440b add r3, r1 + 8046128: 3304 adds r3, #4 + 804612a: 681b ldr r3, [r3, #0] (arp_table[etharp_cached_entry].netif == netif) && - 80460ec: 429a cmp r2, r3 - 80460ee: d108 bne.n 8046102 + 804612c: 429a cmp r2, r3 + 804612e: d108 bne.n 8046142 /* the per-pcb-cached entry is stable and the right one! */ ETHARP_STATS_INC(etharp.cachehit); return etharp_output_to_arp_index(netif, q, etharp_cached_entry); - 80460f0: 4b31 ldr r3, [pc, #196] ; (80461b8 ) - 80460f2: 781b ldrb r3, [r3, #0] - 80460f4: 461a mov r2, r3 - 80460f6: 68b9 ldr r1, [r7, #8] - 80460f8: 68f8 ldr r0, [r7, #12] - 80460fa: f7ff fec5 bl 8045e88 - 80460fe: 4603 mov r3, r0 - 8046100: e04a b.n 8046198 + 8046130: 4b31 ldr r3, [pc, #196] ; (80461f8 ) + 8046132: 781b ldrb r3, [r3, #0] + 8046134: 461a mov r2, r3 + 8046136: 68b9 ldr r1, [r7, #8] + 8046138: 68f8 ldr r0, [r7, #12] + 804613a: f7ff fec5 bl 8045ec8 + 804613e: 4603 mov r3, r0 + 8046140: e04a b.n 80461d8 } #endif /* LWIP_NETIF_HWADDRHINT */ /* find stable entry: do this here since this is a critical path for throughput and etharp_find_entry() is kind of slow */ for (i = 0; i < ARP_TABLE_SIZE; i++) { - 8046102: 2300 movs r3, #0 - 8046104: 75fb strb r3, [r7, #23] - 8046106: e031 b.n 804616c + 8046142: 2300 movs r3, #0 + 8046144: 75fb strb r3, [r7, #23] + 8046146: e031 b.n 80461ac if ((arp_table[i].state >= ETHARP_STATE_STABLE) && - 8046108: 7dfa ldrb r2, [r7, #23] - 804610a: 492c ldr r1, [pc, #176] ; (80461bc ) - 804610c: 4613 mov r3, r2 - 804610e: 005b lsls r3, r3, #1 - 8046110: 4413 add r3, r2 - 8046112: 00db lsls r3, r3, #3 - 8046114: 440b add r3, r1 - 8046116: 3314 adds r3, #20 - 8046118: 781b ldrb r3, [r3, #0] - 804611a: 2b01 cmp r3, #1 - 804611c: d923 bls.n 8046166 + 8046148: 7dfa ldrb r2, [r7, #23] + 804614a: 492c ldr r1, [pc, #176] ; (80461fc ) + 804614c: 4613 mov r3, r2 + 804614e: 005b lsls r3, r3, #1 + 8046150: 4413 add r3, r2 + 8046152: 00db lsls r3, r3, #3 + 8046154: 440b add r3, r1 + 8046156: 3314 adds r3, #20 + 8046158: 781b ldrb r3, [r3, #0] + 804615a: 2b01 cmp r3, #1 + 804615c: d923 bls.n 80461a6 #if ETHARP_TABLE_MATCH_NETIF (arp_table[i].netif == netif) && - 804611e: 7dfa ldrb r2, [r7, #23] - 8046120: 4926 ldr r1, [pc, #152] ; (80461bc ) - 8046122: 4613 mov r3, r2 - 8046124: 005b lsls r3, r3, #1 - 8046126: 4413 add r3, r2 - 8046128: 00db lsls r3, r3, #3 - 804612a: 440b add r3, r1 - 804612c: 3308 adds r3, #8 - 804612e: 681b ldr r3, [r3, #0] + 804615e: 7dfa ldrb r2, [r7, #23] + 8046160: 4926 ldr r1, [pc, #152] ; (80461fc ) + 8046162: 4613 mov r3, r2 + 8046164: 005b lsls r3, r3, #1 + 8046166: 4413 add r3, r2 + 8046168: 00db lsls r3, r3, #3 + 804616a: 440b add r3, r1 + 804616c: 3308 adds r3, #8 + 804616e: 681b ldr r3, [r3, #0] if ((arp_table[i].state >= ETHARP_STATE_STABLE) && - 8046130: 68fa ldr r2, [r7, #12] - 8046132: 429a cmp r2, r3 - 8046134: d117 bne.n 8046166 + 8046170: 68fa ldr r2, [r7, #12] + 8046172: 429a cmp r2, r3 + 8046174: d117 bne.n 80461a6 #endif (ip4_addr_cmp(dst_addr, &arp_table[i].ipaddr))) { - 8046136: 69bb ldr r3, [r7, #24] - 8046138: 6819 ldr r1, [r3, #0] - 804613a: 7dfa ldrb r2, [r7, #23] - 804613c: 481f ldr r0, [pc, #124] ; (80461bc ) - 804613e: 4613 mov r3, r2 - 8046140: 005b lsls r3, r3, #1 - 8046142: 4413 add r3, r2 - 8046144: 00db lsls r3, r3, #3 - 8046146: 4403 add r3, r0 - 8046148: 3304 adds r3, #4 - 804614a: 681b ldr r3, [r3, #0] + 8046176: 69bb ldr r3, [r7, #24] + 8046178: 6819 ldr r1, [r3, #0] + 804617a: 7dfa ldrb r2, [r7, #23] + 804617c: 481f ldr r0, [pc, #124] ; (80461fc ) + 804617e: 4613 mov r3, r2 + 8046180: 005b lsls r3, r3, #1 + 8046182: 4413 add r3, r2 + 8046184: 00db lsls r3, r3, #3 + 8046186: 4403 add r3, r0 + 8046188: 3304 adds r3, #4 + 804618a: 681b ldr r3, [r3, #0] (arp_table[i].netif == netif) && - 804614c: 4299 cmp r1, r3 - 804614e: d10a bne.n 8046166 + 804618c: 4299 cmp r1, r3 + 804618e: d10a bne.n 80461a6 /* found an existing, stable entry */ ETHARP_SET_ADDRHINT(netif, i); - 8046150: 4a19 ldr r2, [pc, #100] ; (80461b8 ) - 8046152: 7dfb ldrb r3, [r7, #23] - 8046154: 7013 strb r3, [r2, #0] + 8046190: 4a19 ldr r2, [pc, #100] ; (80461f8 ) + 8046192: 7dfb ldrb r3, [r7, #23] + 8046194: 7013 strb r3, [r2, #0] return etharp_output_to_arp_index(netif, q, i); - 8046156: 7dfb ldrb r3, [r7, #23] - 8046158: 461a mov r2, r3 - 804615a: 68b9 ldr r1, [r7, #8] - 804615c: 68f8 ldr r0, [r7, #12] - 804615e: f7ff fe93 bl 8045e88 - 8046162: 4603 mov r3, r0 - 8046164: e018 b.n 8046198 + 8046196: 7dfb ldrb r3, [r7, #23] + 8046198: 461a mov r2, r3 + 804619a: 68b9 ldr r1, [r7, #8] + 804619c: 68f8 ldr r0, [r7, #12] + 804619e: f7ff fe93 bl 8045ec8 + 80461a2: 4603 mov r3, r0 + 80461a4: e018 b.n 80461d8 for (i = 0; i < ARP_TABLE_SIZE; i++) { - 8046166: 7dfb ldrb r3, [r7, #23] - 8046168: 3301 adds r3, #1 - 804616a: 75fb strb r3, [r7, #23] - 804616c: 7dfb ldrb r3, [r7, #23] - 804616e: 2b09 cmp r3, #9 - 8046170: d9ca bls.n 8046108 + 80461a6: 7dfb ldrb r3, [r7, #23] + 80461a8: 3301 adds r3, #1 + 80461aa: 75fb strb r3, [r7, #23] + 80461ac: 7dfb ldrb r3, [r7, #23] + 80461ae: 2b09 cmp r3, #9 + 80461b0: d9ca bls.n 8046148 } } /* no stable entry found, use the (slower) query function: queue on destination Ethernet address belonging to ipaddr */ return etharp_query(netif, dst_addr, q); - 8046172: 68ba ldr r2, [r7, #8] - 8046174: 69b9 ldr r1, [r7, #24] - 8046176: 68f8 ldr r0, [r7, #12] - 8046178: f000 f822 bl 80461c0 - 804617c: 4603 mov r3, r0 - 804617e: e00b b.n 8046198 + 80461b2: 68ba ldr r2, [r7, #8] + 80461b4: 69b9 ldr r1, [r7, #24] + 80461b6: 68f8 ldr r0, [r7, #12] + 80461b8: f000 f822 bl 8046200 + 80461bc: 4603 mov r3, r0 + 80461be: e00b b.n 80461d8 } /* continuation for multicast/broadcast destinations */ /* obtain source Ethernet address of the given interface */ /* send packet directly on the link */ return ethernet_output(netif, q, (struct eth_addr *)(netif->hwaddr), dest, ETHTYPE_IP); - 8046180: 68fb ldr r3, [r7, #12] - 8046182: f103 022a add.w r2, r3, #42 ; 0x2a - 8046186: f44f 6300 mov.w r3, #2048 ; 0x800 - 804618a: 9300 str r3, [sp, #0] - 804618c: 69fb ldr r3, [r7, #28] - 804618e: 68b9 ldr r1, [r7, #8] - 8046190: 68f8 ldr r0, [r7, #12] - 8046192: f001 fd6b bl 8047c6c - 8046196: 4603 mov r3, r0 -} - 8046198: 4618 mov r0, r3 - 804619a: 3720 adds r7, #32 - 804619c: 46bd mov sp, r7 - 804619e: bd80 pop {r7, pc} - 80461a0: 0804c480 .word 0x0804c480 - 80461a4: 0804c5d0 .word 0x0804c5d0 - 80461a8: 0804c4f8 .word 0x0804c4f8 - 80461ac: 0804c620 .word 0x0804c620 - 80461b0: 0804c5c0 .word 0x0804c5c0 - 80461b4: 0804d48c .word 0x0804d48c - 80461b8: 2400ec38 .word 0x2400ec38 - 80461bc: 2400eb48 .word 0x2400eb48 - -080461c0 : + 80461c0: 68fb ldr r3, [r7, #12] + 80461c2: f103 022a add.w r2, r3, #42 ; 0x2a + 80461c6: f44f 6300 mov.w r3, #2048 ; 0x800 + 80461ca: 9300 str r3, [sp, #0] + 80461cc: 69fb ldr r3, [r7, #28] + 80461ce: 68b9 ldr r1, [r7, #8] + 80461d0: 68f8 ldr r0, [r7, #12] + 80461d2: f001 fd6b bl 8047cac + 80461d6: 4603 mov r3, r0 +} + 80461d8: 4618 mov r0, r3 + 80461da: 3720 adds r7, #32 + 80461dc: 46bd mov sp, r7 + 80461de: bd80 pop {r7, pc} + 80461e0: 0804c4c0 .word 0x0804c4c0 + 80461e4: 0804c610 .word 0x0804c610 + 80461e8: 0804c538 .word 0x0804c538 + 80461ec: 0804c660 .word 0x0804c660 + 80461f0: 0804c600 .word 0x0804c600 + 80461f4: 0804d4cc .word 0x0804d4cc + 80461f8: 2400ec38 .word 0x2400ec38 + 80461fc: 2400eb48 .word 0x2400eb48 + +08046200 : * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. * */ err_t etharp_query(struct netif *netif, const ip4_addr_t *ipaddr, struct pbuf *q) { - 80461c0: b580 push {r7, lr} - 80461c2: b08c sub sp, #48 ; 0x30 - 80461c4: af02 add r7, sp, #8 - 80461c6: 60f8 str r0, [r7, #12] - 80461c8: 60b9 str r1, [r7, #8] - 80461ca: 607a str r2, [r7, #4] + 8046200: b580 push {r7, lr} + 8046202: b08c sub sp, #48 ; 0x30 + 8046204: af02 add r7, sp, #8 + 8046206: 60f8 str r0, [r7, #12] + 8046208: 60b9 str r1, [r7, #8] + 804620a: 607a str r2, [r7, #4] struct eth_addr *srcaddr = (struct eth_addr *)netif->hwaddr; - 80461cc: 68fb ldr r3, [r7, #12] - 80461ce: 332a adds r3, #42 ; 0x2a - 80461d0: 617b str r3, [r7, #20] + 804620c: 68fb ldr r3, [r7, #12] + 804620e: 332a adds r3, #42 ; 0x2a + 8046210: 617b str r3, [r7, #20] err_t result = ERR_MEM; - 80461d2: 23ff movs r3, #255 ; 0xff - 80461d4: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 8046212: 23ff movs r3, #255 ; 0xff + 8046214: f887 3027 strb.w r3, [r7, #39] ; 0x27 int is_new_entry = 0; - 80461d8: 2300 movs r3, #0 - 80461da: 623b str r3, [r7, #32] + 8046218: 2300 movs r3, #0 + 804621a: 623b str r3, [r7, #32] s16_t i_err; netif_addr_idx_t i; /* non-unicast address? */ if (ip4_addr_isbroadcast(ipaddr, netif) || - 80461dc: 68bb ldr r3, [r7, #8] - 80461de: 681b ldr r3, [r3, #0] - 80461e0: 68f9 ldr r1, [r7, #12] - 80461e2: 4618 mov r0, r3 - 80461e4: f000 fe34 bl 8046e50 - 80461e8: 4603 mov r3, r0 - 80461ea: 2b00 cmp r3, #0 - 80461ec: d10c bne.n 8046208 + 804621c: 68bb ldr r3, [r7, #8] + 804621e: 681b ldr r3, [r3, #0] + 8046220: 68f9 ldr r1, [r7, #12] + 8046222: 4618 mov r0, r3 + 8046224: f000 fe34 bl 8046e90 + 8046228: 4603 mov r3, r0 + 804622a: 2b00 cmp r3, #0 + 804622c: d10c bne.n 8046248 ip4_addr_ismulticast(ipaddr) || - 80461ee: 68bb ldr r3, [r7, #8] - 80461f0: 681b ldr r3, [r3, #0] - 80461f2: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 804622e: 68bb ldr r3, [r7, #8] + 8046230: 681b ldr r3, [r3, #0] + 8046232: f003 03f0 and.w r3, r3, #240 ; 0xf0 if (ip4_addr_isbroadcast(ipaddr, netif) || - 80461f6: 2be0 cmp r3, #224 ; 0xe0 - 80461f8: d006 beq.n 8046208 + 8046236: 2be0 cmp r3, #224 ; 0xe0 + 8046238: d006 beq.n 8046248 ip4_addr_ismulticast(ipaddr) || - 80461fa: 68bb ldr r3, [r7, #8] - 80461fc: 2b00 cmp r3, #0 - 80461fe: d003 beq.n 8046208 + 804623a: 68bb ldr r3, [r7, #8] + 804623c: 2b00 cmp r3, #0 + 804623e: d003 beq.n 8046248 ip4_addr_isany(ipaddr)) { - 8046200: 68bb ldr r3, [r7, #8] - 8046202: 681b ldr r3, [r3, #0] - 8046204: 2b00 cmp r3, #0 - 8046206: d102 bne.n 804620e + 8046240: 68bb ldr r3, [r7, #8] + 8046242: 681b ldr r3, [r3, #0] + 8046244: 2b00 cmp r3, #0 + 8046246: d102 bne.n 804624e LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n")); return ERR_ARG; - 8046208: f06f 030f mvn.w r3, #15 - 804620c: e101 b.n 8046412 + 8046248: f06f 030f mvn.w r3, #15 + 804624c: e101 b.n 8046452 } /* find entry in ARP cache, ask to create entry if queueing packet */ i_err = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD, netif); - 804620e: 68fa ldr r2, [r7, #12] - 8046210: 2101 movs r1, #1 - 8046212: 68b8 ldr r0, [r7, #8] - 8046214: f7ff fb60 bl 80458d8 - 8046218: 4603 mov r3, r0 - 804621a: 827b strh r3, [r7, #18] + 804624e: 68fa ldr r2, [r7, #12] + 8046250: 2101 movs r1, #1 + 8046252: 68b8 ldr r0, [r7, #8] + 8046254: f7ff fb60 bl 8045918 + 8046258: 4603 mov r3, r0 + 804625a: 827b strh r3, [r7, #18] /* could not find or create entry? */ if (i_err < 0) { - 804621c: f9b7 3012 ldrsh.w r3, [r7, #18] - 8046220: 2b00 cmp r3, #0 - 8046222: da02 bge.n 804622a + 804625c: f9b7 3012 ldrsh.w r3, [r7, #18] + 8046260: 2b00 cmp r3, #0 + 8046262: da02 bge.n 804626a LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n")); if (q) { LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n")); ETHARP_STATS_INC(etharp.memerr); } return (err_t)i_err; - 8046224: 8a7b ldrh r3, [r7, #18] - 8046226: b25b sxtb r3, r3 - 8046228: e0f3 b.n 8046412 + 8046264: 8a7b ldrh r3, [r7, #18] + 8046266: b25b sxtb r3, r3 + 8046268: e0f3 b.n 8046452 } LWIP_ASSERT("type overflow", (size_t)i_err < NETIF_ADDR_IDX_MAX); - 804622a: 8a7b ldrh r3, [r7, #18] - 804622c: 2b7e cmp r3, #126 ; 0x7e - 804622e: d906 bls.n 804623e - 8046230: 4b7a ldr r3, [pc, #488] ; (804641c ) - 8046232: f240 32c1 movw r2, #961 ; 0x3c1 - 8046236: 497a ldr r1, [pc, #488] ; (8046420 ) - 8046238: 487a ldr r0, [pc, #488] ; (8046424 ) - 804623a: f001 feb3 bl 8047fa4 + 804626a: 8a7b ldrh r3, [r7, #18] + 804626c: 2b7e cmp r3, #126 ; 0x7e + 804626e: d906 bls.n 804627e + 8046270: 4b7a ldr r3, [pc, #488] ; (804645c ) + 8046272: f240 32c1 movw r2, #961 ; 0x3c1 + 8046276: 497a ldr r1, [pc, #488] ; (8046460 ) + 8046278: 487a ldr r0, [pc, #488] ; (8046464 ) + 804627a: f001 feb3 bl 8047fe4 i = (netif_addr_idx_t)i_err; - 804623e: 8a7b ldrh r3, [r7, #18] - 8046240: 747b strb r3, [r7, #17] + 804627e: 8a7b ldrh r3, [r7, #18] + 8046280: 747b strb r3, [r7, #17] /* mark a fresh entry as pending (we just sent a request) */ if (arp_table[i].state == ETHARP_STATE_EMPTY) { - 8046242: 7c7a ldrb r2, [r7, #17] - 8046244: 4978 ldr r1, [pc, #480] ; (8046428 ) - 8046246: 4613 mov r3, r2 - 8046248: 005b lsls r3, r3, #1 - 804624a: 4413 add r3, r2 - 804624c: 00db lsls r3, r3, #3 - 804624e: 440b add r3, r1 - 8046250: 3314 adds r3, #20 - 8046252: 781b ldrb r3, [r3, #0] - 8046254: 2b00 cmp r3, #0 - 8046256: d115 bne.n 8046284 + 8046282: 7c7a ldrb r2, [r7, #17] + 8046284: 4978 ldr r1, [pc, #480] ; (8046468 ) + 8046286: 4613 mov r3, r2 + 8046288: 005b lsls r3, r3, #1 + 804628a: 4413 add r3, r2 + 804628c: 00db lsls r3, r3, #3 + 804628e: 440b add r3, r1 + 8046290: 3314 adds r3, #20 + 8046292: 781b ldrb r3, [r3, #0] + 8046294: 2b00 cmp r3, #0 + 8046296: d115 bne.n 80462c4 is_new_entry = 1; - 8046258: 2301 movs r3, #1 - 804625a: 623b str r3, [r7, #32] + 8046298: 2301 movs r3, #1 + 804629a: 623b str r3, [r7, #32] arp_table[i].state = ETHARP_STATE_PENDING; - 804625c: 7c7a ldrb r2, [r7, #17] - 804625e: 4972 ldr r1, [pc, #456] ; (8046428 ) - 8046260: 4613 mov r3, r2 - 8046262: 005b lsls r3, r3, #1 - 8046264: 4413 add r3, r2 - 8046266: 00db lsls r3, r3, #3 - 8046268: 440b add r3, r1 - 804626a: 3314 adds r3, #20 - 804626c: 2201 movs r2, #1 - 804626e: 701a strb r2, [r3, #0] + 804629c: 7c7a ldrb r2, [r7, #17] + 804629e: 4972 ldr r1, [pc, #456] ; (8046468 ) + 80462a0: 4613 mov r3, r2 + 80462a2: 005b lsls r3, r3, #1 + 80462a4: 4413 add r3, r2 + 80462a6: 00db lsls r3, r3, #3 + 80462a8: 440b add r3, r1 + 80462aa: 3314 adds r3, #20 + 80462ac: 2201 movs r2, #1 + 80462ae: 701a strb r2, [r3, #0] /* record network interface for re-sending arp request in etharp_tmr */ arp_table[i].netif = netif; - 8046270: 7c7a ldrb r2, [r7, #17] - 8046272: 496d ldr r1, [pc, #436] ; (8046428 ) - 8046274: 4613 mov r3, r2 - 8046276: 005b lsls r3, r3, #1 - 8046278: 4413 add r3, r2 - 804627a: 00db lsls r3, r3, #3 - 804627c: 440b add r3, r1 - 804627e: 3308 adds r3, #8 - 8046280: 68fa ldr r2, [r7, #12] - 8046282: 601a str r2, [r3, #0] + 80462b0: 7c7a ldrb r2, [r7, #17] + 80462b2: 496d ldr r1, [pc, #436] ; (8046468 ) + 80462b4: 4613 mov r3, r2 + 80462b6: 005b lsls r3, r3, #1 + 80462b8: 4413 add r3, r2 + 80462ba: 00db lsls r3, r3, #3 + 80462bc: 440b add r3, r1 + 80462be: 3308 adds r3, #8 + 80462c0: 68fa ldr r2, [r7, #12] + 80462c2: 601a str r2, [r3, #0] } /* { i is either a STABLE or (new or existing) PENDING entry } */ LWIP_ASSERT("arp_table[i].state == PENDING or STABLE", - 8046284: 7c7a ldrb r2, [r7, #17] - 8046286: 4968 ldr r1, [pc, #416] ; (8046428 ) - 8046288: 4613 mov r3, r2 - 804628a: 005b lsls r3, r3, #1 - 804628c: 4413 add r3, r2 - 804628e: 00db lsls r3, r3, #3 - 8046290: 440b add r3, r1 - 8046292: 3314 adds r3, #20 - 8046294: 781b ldrb r3, [r3, #0] - 8046296: 2b01 cmp r3, #1 - 8046298: d011 beq.n 80462be - 804629a: 7c7a ldrb r2, [r7, #17] - 804629c: 4962 ldr r1, [pc, #392] ; (8046428 ) - 804629e: 4613 mov r3, r2 - 80462a0: 005b lsls r3, r3, #1 - 80462a2: 4413 add r3, r2 - 80462a4: 00db lsls r3, r3, #3 - 80462a6: 440b add r3, r1 - 80462a8: 3314 adds r3, #20 - 80462aa: 781b ldrb r3, [r3, #0] - 80462ac: 2b01 cmp r3, #1 - 80462ae: d806 bhi.n 80462be - 80462b0: 4b5a ldr r3, [pc, #360] ; (804641c ) - 80462b2: f240 32cd movw r2, #973 ; 0x3cd - 80462b6: 495d ldr r1, [pc, #372] ; (804642c ) - 80462b8: 485a ldr r0, [pc, #360] ; (8046424 ) - 80462ba: f001 fe73 bl 8047fa4 + 80462c4: 7c7a ldrb r2, [r7, #17] + 80462c6: 4968 ldr r1, [pc, #416] ; (8046468 ) + 80462c8: 4613 mov r3, r2 + 80462ca: 005b lsls r3, r3, #1 + 80462cc: 4413 add r3, r2 + 80462ce: 00db lsls r3, r3, #3 + 80462d0: 440b add r3, r1 + 80462d2: 3314 adds r3, #20 + 80462d4: 781b ldrb r3, [r3, #0] + 80462d6: 2b01 cmp r3, #1 + 80462d8: d011 beq.n 80462fe + 80462da: 7c7a ldrb r2, [r7, #17] + 80462dc: 4962 ldr r1, [pc, #392] ; (8046468 ) + 80462de: 4613 mov r3, r2 + 80462e0: 005b lsls r3, r3, #1 + 80462e2: 4413 add r3, r2 + 80462e4: 00db lsls r3, r3, #3 + 80462e6: 440b add r3, r1 + 80462e8: 3314 adds r3, #20 + 80462ea: 781b ldrb r3, [r3, #0] + 80462ec: 2b01 cmp r3, #1 + 80462ee: d806 bhi.n 80462fe + 80462f0: 4b5a ldr r3, [pc, #360] ; (804645c ) + 80462f2: f240 32cd movw r2, #973 ; 0x3cd + 80462f6: 495d ldr r1, [pc, #372] ; (804646c ) + 80462f8: 485a ldr r0, [pc, #360] ; (8046464 ) + 80462fa: f001 fe73 bl 8047fe4 ((arp_table[i].state == ETHARP_STATE_PENDING) || (arp_table[i].state >= ETHARP_STATE_STABLE))); /* do we have a new entry? or an implicit query request? */ if (is_new_entry || (q == NULL)) { - 80462be: 6a3b ldr r3, [r7, #32] - 80462c0: 2b00 cmp r3, #0 - 80462c2: d102 bne.n 80462ca - 80462c4: 687b ldr r3, [r7, #4] - 80462c6: 2b00 cmp r3, #0 - 80462c8: d10c bne.n 80462e4 + 80462fe: 6a3b ldr r3, [r7, #32] + 8046300: 2b00 cmp r3, #0 + 8046302: d102 bne.n 804630a + 8046304: 687b ldr r3, [r7, #4] + 8046306: 2b00 cmp r3, #0 + 8046308: d10c bne.n 8046324 /* try to resolve it; send out ARP request */ result = etharp_request(netif, ipaddr); - 80462ca: 68b9 ldr r1, [r7, #8] - 80462cc: 68f8 ldr r0, [r7, #12] - 80462ce: f000 f963 bl 8046598 - 80462d2: 4603 mov r3, r0 - 80462d4: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 804630a: 68b9 ldr r1, [r7, #8] + 804630c: 68f8 ldr r0, [r7, #12] + 804630e: f000 f963 bl 80465d8 + 8046312: 4603 mov r3, r0 + 8046314: f887 3027 strb.w r3, [r7, #39] ; 0x27 /* ARP request couldn't be sent */ /* We don't re-send arp request in etharp_tmr, but we still queue packets, since this failure could be temporary, and the next packet calling etharp_query again could lead to sending the queued packets. */ } if (q == NULL) { - 80462d8: 687b ldr r3, [r7, #4] - 80462da: 2b00 cmp r3, #0 - 80462dc: d102 bne.n 80462e4 + 8046318: 687b ldr r3, [r7, #4] + 804631a: 2b00 cmp r3, #0 + 804631c: d102 bne.n 8046324 return result; - 80462de: f997 3027 ldrsb.w r3, [r7, #39] ; 0x27 - 80462e2: e096 b.n 8046412 + 804631e: f997 3027 ldrsb.w r3, [r7, #39] ; 0x27 + 8046322: e096 b.n 8046452 } } /* packet given? */ LWIP_ASSERT("q != NULL", q != NULL); - 80462e4: 687b ldr r3, [r7, #4] - 80462e6: 2b00 cmp r3, #0 - 80462e8: d106 bne.n 80462f8 - 80462ea: 4b4c ldr r3, [pc, #304] ; (804641c ) - 80462ec: f240 32e1 movw r2, #993 ; 0x3e1 - 80462f0: 494f ldr r1, [pc, #316] ; (8046430 ) - 80462f2: 484c ldr r0, [pc, #304] ; (8046424 ) - 80462f4: f001 fe56 bl 8047fa4 + 8046324: 687b ldr r3, [r7, #4] + 8046326: 2b00 cmp r3, #0 + 8046328: d106 bne.n 8046338 + 804632a: 4b4c ldr r3, [pc, #304] ; (804645c ) + 804632c: f240 32e1 movw r2, #993 ; 0x3e1 + 8046330: 494f ldr r1, [pc, #316] ; (8046470 ) + 8046332: 484c ldr r0, [pc, #304] ; (8046464 ) + 8046334: f001 fe56 bl 8047fe4 /* stable entry? */ if (arp_table[i].state >= ETHARP_STATE_STABLE) { - 80462f8: 7c7a ldrb r2, [r7, #17] - 80462fa: 494b ldr r1, [pc, #300] ; (8046428 ) - 80462fc: 4613 mov r3, r2 - 80462fe: 005b lsls r3, r3, #1 - 8046300: 4413 add r3, r2 - 8046302: 00db lsls r3, r3, #3 - 8046304: 440b add r3, r1 - 8046306: 3314 adds r3, #20 - 8046308: 781b ldrb r3, [r3, #0] - 804630a: 2b01 cmp r3, #1 - 804630c: d917 bls.n 804633e + 8046338: 7c7a ldrb r2, [r7, #17] + 804633a: 494b ldr r1, [pc, #300] ; (8046468 ) + 804633c: 4613 mov r3, r2 + 804633e: 005b lsls r3, r3, #1 + 8046340: 4413 add r3, r2 + 8046342: 00db lsls r3, r3, #3 + 8046344: 440b add r3, r1 + 8046346: 3314 adds r3, #20 + 8046348: 781b ldrb r3, [r3, #0] + 804634a: 2b01 cmp r3, #1 + 804634c: d917 bls.n 804637e /* we have a valid IP->Ethernet address mapping */ ETHARP_SET_ADDRHINT(netif, i); - 804630e: 4a49 ldr r2, [pc, #292] ; (8046434 ) - 8046310: 7c7b ldrb r3, [r7, #17] - 8046312: 7013 strb r3, [r2, #0] + 804634e: 4a49 ldr r2, [pc, #292] ; (8046474 ) + 8046350: 7c7b ldrb r3, [r7, #17] + 8046352: 7013 strb r3, [r2, #0] /* send the packet */ result = ethernet_output(netif, q, srcaddr, &(arp_table[i].ethaddr), ETHTYPE_IP); - 8046314: 7c7a ldrb r2, [r7, #17] - 8046316: 4613 mov r3, r2 - 8046318: 005b lsls r3, r3, #1 - 804631a: 4413 add r3, r2 - 804631c: 00db lsls r3, r3, #3 - 804631e: 3308 adds r3, #8 - 8046320: 4a41 ldr r2, [pc, #260] ; (8046428 ) - 8046322: 4413 add r3, r2 - 8046324: 3304 adds r3, #4 - 8046326: f44f 6200 mov.w r2, #2048 ; 0x800 - 804632a: 9200 str r2, [sp, #0] - 804632c: 697a ldr r2, [r7, #20] - 804632e: 6879 ldr r1, [r7, #4] - 8046330: 68f8 ldr r0, [r7, #12] - 8046332: f001 fc9b bl 8047c6c - 8046336: 4603 mov r3, r0 - 8046338: f887 3027 strb.w r3, [r7, #39] ; 0x27 - 804633c: e067 b.n 804640e + 8046354: 7c7a ldrb r2, [r7, #17] + 8046356: 4613 mov r3, r2 + 8046358: 005b lsls r3, r3, #1 + 804635a: 4413 add r3, r2 + 804635c: 00db lsls r3, r3, #3 + 804635e: 3308 adds r3, #8 + 8046360: 4a41 ldr r2, [pc, #260] ; (8046468 ) + 8046362: 4413 add r3, r2 + 8046364: 3304 adds r3, #4 + 8046366: f44f 6200 mov.w r2, #2048 ; 0x800 + 804636a: 9200 str r2, [sp, #0] + 804636c: 697a ldr r2, [r7, #20] + 804636e: 6879 ldr r1, [r7, #4] + 8046370: 68f8 ldr r0, [r7, #12] + 8046372: f001 fc9b bl 8047cac + 8046376: 4603 mov r3, r0 + 8046378: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 804637c: e067 b.n 804644e /* pending entry? (either just created or already pending */ } else if (arp_table[i].state == ETHARP_STATE_PENDING) { - 804633e: 7c7a ldrb r2, [r7, #17] - 8046340: 4939 ldr r1, [pc, #228] ; (8046428 ) - 8046342: 4613 mov r3, r2 - 8046344: 005b lsls r3, r3, #1 - 8046346: 4413 add r3, r2 - 8046348: 00db lsls r3, r3, #3 - 804634a: 440b add r3, r1 - 804634c: 3314 adds r3, #20 - 804634e: 781b ldrb r3, [r3, #0] - 8046350: 2b01 cmp r3, #1 - 8046352: d15c bne.n 804640e + 804637e: 7c7a ldrb r2, [r7, #17] + 8046380: 4939 ldr r1, [pc, #228] ; (8046468 ) + 8046382: 4613 mov r3, r2 + 8046384: 005b lsls r3, r3, #1 + 8046386: 4413 add r3, r2 + 8046388: 00db lsls r3, r3, #3 + 804638a: 440b add r3, r1 + 804638c: 3314 adds r3, #20 + 804638e: 781b ldrb r3, [r3, #0] + 8046390: 2b01 cmp r3, #1 + 8046392: d15c bne.n 804644e /* entry is still pending, queue the given packet 'q' */ struct pbuf *p; int copy_needed = 0; - 8046354: 2300 movs r3, #0 - 8046356: 61bb str r3, [r7, #24] + 8046394: 2300 movs r3, #0 + 8046396: 61bb str r3, [r7, #24] /* IF q includes a pbuf that must be copied, copy the whole chain into a * new PBUF_RAM. See the definition of PBUF_NEEDS_COPY for details. */ p = q; - 8046358: 687b ldr r3, [r7, #4] - 804635a: 61fb str r3, [r7, #28] + 8046398: 687b ldr r3, [r7, #4] + 804639a: 61fb str r3, [r7, #28] while (p) { - 804635c: e01c b.n 8046398 + 804639c: e01c b.n 80463d8 LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0)); - 804635e: 69fb ldr r3, [r7, #28] - 8046360: 895a ldrh r2, [r3, #10] - 8046362: 69fb ldr r3, [r7, #28] - 8046364: 891b ldrh r3, [r3, #8] - 8046366: 429a cmp r2, r3 - 8046368: d10a bne.n 8046380 - 804636a: 69fb ldr r3, [r7, #28] - 804636c: 681b ldr r3, [r3, #0] - 804636e: 2b00 cmp r3, #0 - 8046370: d006 beq.n 8046380 - 8046372: 4b2a ldr r3, [pc, #168] ; (804641c ) - 8046374: f240 32f1 movw r2, #1009 ; 0x3f1 - 8046378: 492f ldr r1, [pc, #188] ; (8046438 ) - 804637a: 482a ldr r0, [pc, #168] ; (8046424 ) - 804637c: f001 fe12 bl 8047fa4 + 804639e: 69fb ldr r3, [r7, #28] + 80463a0: 895a ldrh r2, [r3, #10] + 80463a2: 69fb ldr r3, [r7, #28] + 80463a4: 891b ldrh r3, [r3, #8] + 80463a6: 429a cmp r2, r3 + 80463a8: d10a bne.n 80463c0 + 80463aa: 69fb ldr r3, [r7, #28] + 80463ac: 681b ldr r3, [r3, #0] + 80463ae: 2b00 cmp r3, #0 + 80463b0: d006 beq.n 80463c0 + 80463b2: 4b2a ldr r3, [pc, #168] ; (804645c ) + 80463b4: f240 32f1 movw r2, #1009 ; 0x3f1 + 80463b8: 492f ldr r1, [pc, #188] ; (8046478 ) + 80463ba: 482a ldr r0, [pc, #168] ; (8046464 ) + 80463bc: f001 fe12 bl 8047fe4 if (PBUF_NEEDS_COPY(p)) { - 8046380: 69fb ldr r3, [r7, #28] - 8046382: 7b1b ldrb r3, [r3, #12] - 8046384: f003 0340 and.w r3, r3, #64 ; 0x40 - 8046388: 2b00 cmp r3, #0 - 804638a: d002 beq.n 8046392 + 80463c0: 69fb ldr r3, [r7, #28] + 80463c2: 7b1b ldrb r3, [r3, #12] + 80463c4: f003 0340 and.w r3, r3, #64 ; 0x40 + 80463c8: 2b00 cmp r3, #0 + 80463ca: d002 beq.n 80463d2 copy_needed = 1; - 804638c: 2301 movs r3, #1 - 804638e: 61bb str r3, [r7, #24] + 80463cc: 2301 movs r3, #1 + 80463ce: 61bb str r3, [r7, #24] break; - 8046390: e005 b.n 804639e + 80463d0: e005 b.n 80463de } p = p->next; - 8046392: 69fb ldr r3, [r7, #28] - 8046394: 681b ldr r3, [r3, #0] - 8046396: 61fb str r3, [r7, #28] + 80463d2: 69fb ldr r3, [r7, #28] + 80463d4: 681b ldr r3, [r3, #0] + 80463d6: 61fb str r3, [r7, #28] while (p) { - 8046398: 69fb ldr r3, [r7, #28] - 804639a: 2b00 cmp r3, #0 - 804639c: d1df bne.n 804635e + 80463d8: 69fb ldr r3, [r7, #28] + 80463da: 2b00 cmp r3, #0 + 80463dc: d1df bne.n 804639e } if (copy_needed) { - 804639e: 69bb ldr r3, [r7, #24] - 80463a0: 2b00 cmp r3, #0 - 80463a2: d007 beq.n 80463b4 + 80463de: 69bb ldr r3, [r7, #24] + 80463e0: 2b00 cmp r3, #0 + 80463e2: d007 beq.n 80463f4 /* copy the whole packet into new pbufs */ p = pbuf_clone(PBUF_LINK, PBUF_RAM, q); - 80463a4: 687a ldr r2, [r7, #4] - 80463a6: f44f 7120 mov.w r1, #640 ; 0x280 - 80463aa: 200e movs r0, #14 - 80463ac: f7f8 fd3e bl 803ee2c - 80463b0: 61f8 str r0, [r7, #28] - 80463b2: e004 b.n 80463be + 80463e4: 687a ldr r2, [r7, #4] + 80463e6: f44f 7120 mov.w r1, #640 ; 0x280 + 80463ea: 200e movs r0, #14 + 80463ec: f7f8 fd3e bl 803ee6c + 80463f0: 61f8 str r0, [r7, #28] + 80463f2: e004 b.n 80463fe } else { /* referencing the old pbuf is enough */ p = q; - 80463b4: 687b ldr r3, [r7, #4] - 80463b6: 61fb str r3, [r7, #28] + 80463f4: 687b ldr r3, [r7, #4] + 80463f6: 61fb str r3, [r7, #28] pbuf_ref(p); - 80463b8: 69f8 ldr r0, [r7, #28] - 80463ba: f7f8 fad9 bl 803e970 + 80463f8: 69f8 ldr r0, [r7, #28] + 80463fa: f7f8 fad9 bl 803e9b0 } /* packet could be taken over? */ if (p != NULL) { - 80463be: 69fb ldr r3, [r7, #28] - 80463c0: 2b00 cmp r3, #0 - 80463c2: d021 beq.n 8046408 + 80463fe: 69fb ldr r3, [r7, #28] + 8046400: 2b00 cmp r3, #0 + 8046402: d021 beq.n 8046448 LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); result = ERR_MEM; } #else /* ARP_QUEUEING */ /* always queue one packet per ARP request only, freeing a previously queued packet */ if (arp_table[i].q != NULL) { - 80463c4: 7c7a ldrb r2, [r7, #17] - 80463c6: 4918 ldr r1, [pc, #96] ; (8046428 ) - 80463c8: 4613 mov r3, r2 - 80463ca: 005b lsls r3, r3, #1 - 80463cc: 4413 add r3, r2 - 80463ce: 00db lsls r3, r3, #3 - 80463d0: 440b add r3, r1 - 80463d2: 681b ldr r3, [r3, #0] - 80463d4: 2b00 cmp r3, #0 - 80463d6: d00a beq.n 80463ee + 8046404: 7c7a ldrb r2, [r7, #17] + 8046406: 4918 ldr r1, [pc, #96] ; (8046468 ) + 8046408: 4613 mov r3, r2 + 804640a: 005b lsls r3, r3, #1 + 804640c: 4413 add r3, r2 + 804640e: 00db lsls r3, r3, #3 + 8046410: 440b add r3, r1 + 8046412: 681b ldr r3, [r3, #0] + 8046414: 2b00 cmp r3, #0 + 8046416: d00a beq.n 804642e LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: dropped previously queued packet %p for ARP entry %"U16_F"\n", (void *)q, (u16_t)i)); pbuf_free(arp_table[i].q); - 80463d8: 7c7a ldrb r2, [r7, #17] - 80463da: 4913 ldr r1, [pc, #76] ; (8046428 ) - 80463dc: 4613 mov r3, r2 - 80463de: 005b lsls r3, r3, #1 - 80463e0: 4413 add r3, r2 - 80463e2: 00db lsls r3, r3, #3 - 80463e4: 440b add r3, r1 - 80463e6: 681b ldr r3, [r3, #0] - 80463e8: 4618 mov r0, r3 - 80463ea: f7f8 fa21 bl 803e830 + 8046418: 7c7a ldrb r2, [r7, #17] + 804641a: 4913 ldr r1, [pc, #76] ; (8046468 ) + 804641c: 4613 mov r3, r2 + 804641e: 005b lsls r3, r3, #1 + 8046420: 4413 add r3, r2 + 8046422: 00db lsls r3, r3, #3 + 8046424: 440b add r3, r1 + 8046426: 681b ldr r3, [r3, #0] + 8046428: 4618 mov r0, r3 + 804642a: f7f8 fa21 bl 803e870 } arp_table[i].q = p; - 80463ee: 7c7a ldrb r2, [r7, #17] - 80463f0: 490d ldr r1, [pc, #52] ; (8046428 ) - 80463f2: 4613 mov r3, r2 - 80463f4: 005b lsls r3, r3, #1 - 80463f6: 4413 add r3, r2 - 80463f8: 00db lsls r3, r3, #3 - 80463fa: 440b add r3, r1 - 80463fc: 69fa ldr r2, [r7, #28] - 80463fe: 601a str r2, [r3, #0] + 804642e: 7c7a ldrb r2, [r7, #17] + 8046430: 490d ldr r1, [pc, #52] ; (8046468 ) + 8046432: 4613 mov r3, r2 + 8046434: 005b lsls r3, r3, #1 + 8046436: 4413 add r3, r2 + 8046438: 00db lsls r3, r3, #3 + 804643a: 440b add r3, r1 + 804643c: 69fa ldr r2, [r7, #28] + 804643e: 601a str r2, [r3, #0] result = ERR_OK; - 8046400: 2300 movs r3, #0 - 8046402: f887 3027 strb.w r3, [r7, #39] ; 0x27 - 8046406: e002 b.n 804640e + 8046440: 2300 movs r3, #0 + 8046442: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 8046446: e002 b.n 804644e LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"U16_F"\n", (void *)q, (u16_t)i)); #endif /* ARP_QUEUEING */ } else { ETHARP_STATS_INC(etharp.memerr); LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); result = ERR_MEM; - 8046408: 23ff movs r3, #255 ; 0xff - 804640a: f887 3027 strb.w r3, [r7, #39] ; 0x27 + 8046448: 23ff movs r3, #255 ; 0xff + 804644a: f887 3027 strb.w r3, [r7, #39] ; 0x27 } } return result; - 804640e: f997 3027 ldrsb.w r3, [r7, #39] ; 0x27 -} - 8046412: 4618 mov r0, r3 - 8046414: 3728 adds r7, #40 ; 0x28 - 8046416: 46bd mov sp, r7 - 8046418: bd80 pop {r7, pc} - 804641a: bf00 nop - 804641c: 0804c480 .word 0x0804c480 - 8046420: 0804c62c .word 0x0804c62c - 8046424: 0804c4f8 .word 0x0804c4f8 - 8046428: 2400eb48 .word 0x2400eb48 - 804642c: 0804c63c .word 0x0804c63c - 8046430: 0804c620 .word 0x0804c620 - 8046434: 2400ec38 .word 0x2400ec38 - 8046438: 0804c664 .word 0x0804c664 - -0804643c : + 804644e: f997 3027 ldrsb.w r3, [r7, #39] ; 0x27 +} + 8046452: 4618 mov r0, r3 + 8046454: 3728 adds r7, #40 ; 0x28 + 8046456: 46bd mov sp, r7 + 8046458: bd80 pop {r7, pc} + 804645a: bf00 nop + 804645c: 0804c4c0 .word 0x0804c4c0 + 8046460: 0804c66c .word 0x0804c66c + 8046464: 0804c538 .word 0x0804c538 + 8046468: 2400eb48 .word 0x2400eb48 + 804646c: 0804c67c .word 0x0804c67c + 8046470: 0804c660 .word 0x0804c660 + 8046474: 2400ec38 .word 0x2400ec38 + 8046478: 0804c6a4 .word 0x0804c6a4 + +0804647c : etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, const struct eth_addr *ethdst_addr, const struct eth_addr *hwsrc_addr, const ip4_addr_t *ipsrc_addr, const struct eth_addr *hwdst_addr, const ip4_addr_t *ipdst_addr, const u16_t opcode) { - 804643c: b580 push {r7, lr} - 804643e: b08a sub sp, #40 ; 0x28 - 8046440: af02 add r7, sp, #8 - 8046442: 60f8 str r0, [r7, #12] - 8046444: 60b9 str r1, [r7, #8] - 8046446: 607a str r2, [r7, #4] - 8046448: 603b str r3, [r7, #0] + 804647c: b580 push {r7, lr} + 804647e: b08a sub sp, #40 ; 0x28 + 8046480: af02 add r7, sp, #8 + 8046482: 60f8 str r0, [r7, #12] + 8046484: 60b9 str r1, [r7, #8] + 8046486: 607a str r2, [r7, #4] + 8046488: 603b str r3, [r7, #0] struct pbuf *p; err_t result = ERR_OK; - 804644a: 2300 movs r3, #0 - 804644c: 77fb strb r3, [r7, #31] + 804648a: 2300 movs r3, #0 + 804648c: 77fb strb r3, [r7, #31] struct etharp_hdr *hdr; LWIP_ASSERT("netif != NULL", netif != NULL); - 804644e: 68fb ldr r3, [r7, #12] - 8046450: 2b00 cmp r3, #0 - 8046452: d106 bne.n 8046462 - 8046454: 4b3a ldr r3, [pc, #232] ; (8046540 ) - 8046456: f240 4257 movw r2, #1111 ; 0x457 - 804645a: 493a ldr r1, [pc, #232] ; (8046544 ) - 804645c: 483a ldr r0, [pc, #232] ; (8046548 ) - 804645e: f001 fda1 bl 8047fa4 + 804648e: 68fb ldr r3, [r7, #12] + 8046490: 2b00 cmp r3, #0 + 8046492: d106 bne.n 80464a2 + 8046494: 4b3a ldr r3, [pc, #232] ; (8046580 ) + 8046496: f240 4257 movw r2, #1111 ; 0x457 + 804649a: 493a ldr r1, [pc, #232] ; (8046584 ) + 804649c: 483a ldr r0, [pc, #232] ; (8046588 ) + 804649e: f001 fda1 bl 8047fe4 /* allocate a pbuf for the outgoing ARP request packet */ p = pbuf_alloc(PBUF_LINK, SIZEOF_ETHARP_HDR, PBUF_RAM); - 8046462: f44f 7220 mov.w r2, #640 ; 0x280 - 8046466: 211c movs r1, #28 - 8046468: 200e movs r0, #14 - 804646a: f7f7 fefd bl 803e268 - 804646e: 61b8 str r0, [r7, #24] + 80464a2: f44f 7220 mov.w r2, #640 ; 0x280 + 80464a6: 211c movs r1, #28 + 80464a8: 200e movs r0, #14 + 80464aa: f7f7 fefd bl 803e2a8 + 80464ae: 61b8 str r0, [r7, #24] /* could allocate a pbuf for an ARP request? */ if (p == NULL) { - 8046470: 69bb ldr r3, [r7, #24] - 8046472: 2b00 cmp r3, #0 - 8046474: d102 bne.n 804647c + 80464b0: 69bb ldr r3, [r7, #24] + 80464b2: 2b00 cmp r3, #0 + 80464b4: d102 bne.n 80464bc LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("etharp_raw: could not allocate pbuf for ARP request.\n")); ETHARP_STATS_INC(etharp.memerr); return ERR_MEM; - 8046476: f04f 33ff mov.w r3, #4294967295 - 804647a: e05d b.n 8046538 + 80464b6: f04f 33ff mov.w r3, #4294967295 + 80464ba: e05d b.n 8046578 } LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr", - 804647c: 69bb ldr r3, [r7, #24] - 804647e: 895b ldrh r3, [r3, #10] - 8046480: 2b1b cmp r3, #27 - 8046482: d806 bhi.n 8046492 - 8046484: 4b2e ldr r3, [pc, #184] ; (8046540 ) - 8046486: f240 4262 movw r2, #1122 ; 0x462 - 804648a: 4930 ldr r1, [pc, #192] ; (804654c ) - 804648c: 482e ldr r0, [pc, #184] ; (8046548 ) - 804648e: f001 fd89 bl 8047fa4 + 80464bc: 69bb ldr r3, [r7, #24] + 80464be: 895b ldrh r3, [r3, #10] + 80464c0: 2b1b cmp r3, #27 + 80464c2: d806 bhi.n 80464d2 + 80464c4: 4b2e ldr r3, [pc, #184] ; (8046580 ) + 80464c6: f240 4262 movw r2, #1122 ; 0x462 + 80464ca: 4930 ldr r1, [pc, #192] ; (804658c ) + 80464cc: 482e ldr r0, [pc, #184] ; (8046588 ) + 80464ce: f001 fd89 bl 8047fe4 (p->len >= SIZEOF_ETHARP_HDR)); hdr = (struct etharp_hdr *)p->payload; - 8046492: 69bb ldr r3, [r7, #24] - 8046494: 685b ldr r3, [r3, #4] - 8046496: 617b str r3, [r7, #20] + 80464d2: 69bb ldr r3, [r7, #24] + 80464d4: 685b ldr r3, [r3, #4] + 80464d6: 617b str r3, [r7, #20] LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n")); hdr->opcode = lwip_htons(opcode); - 8046498: 8ebb ldrh r3, [r7, #52] ; 0x34 - 804649a: 4618 mov r0, r3 - 804649c: f7f6 fd96 bl 803cfcc - 80464a0: 4603 mov r3, r0 - 80464a2: 461a mov r2, r3 - 80464a4: 697b ldr r3, [r7, #20] - 80464a6: 80da strh r2, [r3, #6] + 80464d8: 8ebb ldrh r3, [r7, #52] ; 0x34 + 80464da: 4618 mov r0, r3 + 80464dc: f7f6 fd96 bl 803d00c + 80464e0: 4603 mov r3, r0 + 80464e2: 461a mov r2, r3 + 80464e4: 697b ldr r3, [r7, #20] + 80464e6: 80da strh r2, [r3, #6] LWIP_ASSERT("netif->hwaddr_len must be the same as ETH_HWADDR_LEN for etharp!", - 80464a8: 68fb ldr r3, [r7, #12] - 80464aa: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 - 80464ae: 2b06 cmp r3, #6 - 80464b0: d006 beq.n 80464c0 - 80464b2: 4b23 ldr r3, [pc, #140] ; (8046540 ) - 80464b4: f240 4269 movw r2, #1129 ; 0x469 - 80464b8: 4925 ldr r1, [pc, #148] ; (8046550 ) - 80464ba: 4823 ldr r0, [pc, #140] ; (8046548 ) - 80464bc: f001 fd72 bl 8047fa4 + 80464e8: 68fb ldr r3, [r7, #12] + 80464ea: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 + 80464ee: 2b06 cmp r3, #6 + 80464f0: d006 beq.n 8046500 + 80464f2: 4b23 ldr r3, [pc, #140] ; (8046580 ) + 80464f4: f240 4269 movw r2, #1129 ; 0x469 + 80464f8: 4925 ldr r1, [pc, #148] ; (8046590 ) + 80464fa: 4823 ldr r0, [pc, #140] ; (8046588 ) + 80464fc: f001 fd72 bl 8047fe4 (netif->hwaddr_len == ETH_HWADDR_LEN)); /* Write the ARP MAC-Addresses */ SMEMCPY(&hdr->shwaddr, hwsrc_addr, ETH_HWADDR_LEN); - 80464c0: 697b ldr r3, [r7, #20] - 80464c2: 3308 adds r3, #8 - 80464c4: 2206 movs r2, #6 - 80464c6: 6839 ldr r1, [r7, #0] - 80464c8: 4618 mov r0, r3 - 80464ca: f001 fc5b bl 8047d84 + 8046500: 697b ldr r3, [r7, #20] + 8046502: 3308 adds r3, #8 + 8046504: 2206 movs r2, #6 + 8046506: 6839 ldr r1, [r7, #0] + 8046508: 4618 mov r0, r3 + 804650a: f001 fc5b bl 8047dc4 SMEMCPY(&hdr->dhwaddr, hwdst_addr, ETH_HWADDR_LEN); - 80464ce: 697b ldr r3, [r7, #20] - 80464d0: 3312 adds r3, #18 - 80464d2: 2206 movs r2, #6 - 80464d4: 6af9 ldr r1, [r7, #44] ; 0x2c - 80464d6: 4618 mov r0, r3 - 80464d8: f001 fc54 bl 8047d84 + 804650e: 697b ldr r3, [r7, #20] + 8046510: 3312 adds r3, #18 + 8046512: 2206 movs r2, #6 + 8046514: 6af9 ldr r1, [r7, #44] ; 0x2c + 8046516: 4618 mov r0, r3 + 8046518: f001 fc54 bl 8047dc4 /* Copy struct ip4_addr_wordaligned to aligned ip4_addr, to support compilers without * structure packing. */ IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->sipaddr, ipsrc_addr); - 80464dc: 697b ldr r3, [r7, #20] - 80464de: 330e adds r3, #14 - 80464e0: 6aba ldr r2, [r7, #40] ; 0x28 - 80464e2: 6812 ldr r2, [r2, #0] - 80464e4: 601a str r2, [r3, #0] + 804651c: 697b ldr r3, [r7, #20] + 804651e: 330e adds r3, #14 + 8046520: 6aba ldr r2, [r7, #40] ; 0x28 + 8046522: 6812 ldr r2, [r2, #0] + 8046524: 601a str r2, [r3, #0] IPADDR_WORDALIGNED_COPY_FROM_IP4_ADDR_T(&hdr->dipaddr, ipdst_addr); - 80464e6: 697b ldr r3, [r7, #20] - 80464e8: 3318 adds r3, #24 - 80464ea: 6b3a ldr r2, [r7, #48] ; 0x30 - 80464ec: 6812 ldr r2, [r2, #0] - 80464ee: 601a str r2, [r3, #0] + 8046526: 697b ldr r3, [r7, #20] + 8046528: 3318 adds r3, #24 + 804652a: 6b3a ldr r2, [r7, #48] ; 0x30 + 804652c: 6812 ldr r2, [r2, #0] + 804652e: 601a str r2, [r3, #0] hdr->hwtype = PP_HTONS(LWIP_IANA_HWTYPE_ETHERNET); - 80464f0: 697b ldr r3, [r7, #20] - 80464f2: 2200 movs r2, #0 - 80464f4: 701a strb r2, [r3, #0] - 80464f6: 2200 movs r2, #0 - 80464f8: f042 0201 orr.w r2, r2, #1 - 80464fc: 705a strb r2, [r3, #1] + 8046530: 697b ldr r3, [r7, #20] + 8046532: 2200 movs r2, #0 + 8046534: 701a strb r2, [r3, #0] + 8046536: 2200 movs r2, #0 + 8046538: f042 0201 orr.w r2, r2, #1 + 804653c: 705a strb r2, [r3, #1] hdr->proto = PP_HTONS(ETHTYPE_IP); - 80464fe: 697b ldr r3, [r7, #20] - 8046500: 2200 movs r2, #0 - 8046502: f042 0208 orr.w r2, r2, #8 - 8046506: 709a strb r2, [r3, #2] - 8046508: 2200 movs r2, #0 - 804650a: 70da strb r2, [r3, #3] + 804653e: 697b ldr r3, [r7, #20] + 8046540: 2200 movs r2, #0 + 8046542: f042 0208 orr.w r2, r2, #8 + 8046546: 709a strb r2, [r3, #2] + 8046548: 2200 movs r2, #0 + 804654a: 70da strb r2, [r3, #3] /* set hwlen and protolen */ hdr->hwlen = ETH_HWADDR_LEN; - 804650c: 697b ldr r3, [r7, #20] - 804650e: 2206 movs r2, #6 - 8046510: 711a strb r2, [r3, #4] + 804654c: 697b ldr r3, [r7, #20] + 804654e: 2206 movs r2, #6 + 8046550: 711a strb r2, [r3, #4] hdr->protolen = sizeof(ip4_addr_t); - 8046512: 697b ldr r3, [r7, #20] - 8046514: 2204 movs r2, #4 - 8046516: 715a strb r2, [r3, #5] + 8046552: 697b ldr r3, [r7, #20] + 8046554: 2204 movs r2, #4 + 8046556: 715a strb r2, [r3, #5] if (ip4_addr_islinklocal(ipsrc_addr)) { ethernet_output(netif, p, ethsrc_addr, ðbroadcast, ETHTYPE_ARP); } else #endif /* LWIP_AUTOIP */ { ethernet_output(netif, p, ethsrc_addr, ethdst_addr, ETHTYPE_ARP); - 8046518: f640 0306 movw r3, #2054 ; 0x806 - 804651c: 9300 str r3, [sp, #0] - 804651e: 687b ldr r3, [r7, #4] - 8046520: 68ba ldr r2, [r7, #8] - 8046522: 69b9 ldr r1, [r7, #24] - 8046524: 68f8 ldr r0, [r7, #12] - 8046526: f001 fba1 bl 8047c6c + 8046558: f640 0306 movw r3, #2054 ; 0x806 + 804655c: 9300 str r3, [sp, #0] + 804655e: 687b ldr r3, [r7, #4] + 8046560: 68ba ldr r2, [r7, #8] + 8046562: 69b9 ldr r1, [r7, #24] + 8046564: 68f8 ldr r0, [r7, #12] + 8046566: f001 fba1 bl 8047cac } ETHARP_STATS_INC(etharp.xmit); /* free ARP query packet */ pbuf_free(p); - 804652a: 69b8 ldr r0, [r7, #24] - 804652c: f7f8 f980 bl 803e830 + 804656a: 69b8 ldr r0, [r7, #24] + 804656c: f7f8 f980 bl 803e870 p = NULL; - 8046530: 2300 movs r3, #0 - 8046532: 61bb str r3, [r7, #24] + 8046570: 2300 movs r3, #0 + 8046572: 61bb str r3, [r7, #24] /* could not allocate pbuf for ARP request */ return result; - 8046534: f997 301f ldrsb.w r3, [r7, #31] -} - 8046538: 4618 mov r0, r3 - 804653a: 3720 adds r7, #32 - 804653c: 46bd mov sp, r7 - 804653e: bd80 pop {r7, pc} - 8046540: 0804c480 .word 0x0804c480 - 8046544: 0804c5d0 .word 0x0804c5d0 - 8046548: 0804c4f8 .word 0x0804c4f8 - 804654c: 0804c680 .word 0x0804c680 - 8046550: 0804c6b4 .word 0x0804c6b4 - -08046554 : + 8046574: f997 301f ldrsb.w r3, [r7, #31] +} + 8046578: 4618 mov r0, r3 + 804657a: 3720 adds r7, #32 + 804657c: 46bd mov sp, r7 + 804657e: bd80 pop {r7, pc} + 8046580: 0804c4c0 .word 0x0804c4c0 + 8046584: 0804c610 .word 0x0804c610 + 8046588: 0804c538 .word 0x0804c538 + 804658c: 0804c6c0 .word 0x0804c6c0 + 8046590: 0804c6f4 .word 0x0804c6f4 + +08046594 : * ERR_MEM if the ARP packet couldn't be allocated * any other err_t on failure */ static err_t etharp_request_dst(struct netif *netif, const ip4_addr_t *ipaddr, const struct eth_addr *hw_dst_addr) { - 8046554: b580 push {r7, lr} - 8046556: b088 sub sp, #32 - 8046558: af04 add r7, sp, #16 - 804655a: 60f8 str r0, [r7, #12] - 804655c: 60b9 str r1, [r7, #8] - 804655e: 607a str r2, [r7, #4] + 8046594: b580 push {r7, lr} + 8046596: b088 sub sp, #32 + 8046598: af04 add r7, sp, #16 + 804659a: 60f8 str r0, [r7, #12] + 804659c: 60b9 str r1, [r7, #8] + 804659e: 607a str r2, [r7, #4] return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr, - 8046560: 68fb ldr r3, [r7, #12] - 8046562: f103 012a add.w r1, r3, #42 ; 0x2a + 80465a0: 68fb ldr r3, [r7, #12] + 80465a2: f103 012a add.w r1, r3, #42 ; 0x2a (struct eth_addr *)netif->hwaddr, netif_ip4_addr(netif), ðzero, - 8046566: 68fb ldr r3, [r7, #12] - 8046568: f103 002a add.w r0, r3, #42 ; 0x2a - 804656c: 68fb ldr r3, [r7, #12] - 804656e: 3304 adds r3, #4 + 80465a6: 68fb ldr r3, [r7, #12] + 80465a8: f103 002a add.w r0, r3, #42 ; 0x2a + 80465ac: 68fb ldr r3, [r7, #12] + 80465ae: 3304 adds r3, #4 return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, hw_dst_addr, - 8046570: 2201 movs r2, #1 - 8046572: 9203 str r2, [sp, #12] - 8046574: 68ba ldr r2, [r7, #8] - 8046576: 9202 str r2, [sp, #8] - 8046578: 4a06 ldr r2, [pc, #24] ; (8046594 ) - 804657a: 9201 str r2, [sp, #4] - 804657c: 9300 str r3, [sp, #0] - 804657e: 4603 mov r3, r0 - 8046580: 687a ldr r2, [r7, #4] - 8046582: 68f8 ldr r0, [r7, #12] - 8046584: f7ff ff5a bl 804643c - 8046588: 4603 mov r3, r0 + 80465b0: 2201 movs r2, #1 + 80465b2: 9203 str r2, [sp, #12] + 80465b4: 68ba ldr r2, [r7, #8] + 80465b6: 9202 str r2, [sp, #8] + 80465b8: 4a06 ldr r2, [pc, #24] ; (80465d4 ) + 80465ba: 9201 str r2, [sp, #4] + 80465bc: 9300 str r3, [sp, #0] + 80465be: 4603 mov r3, r0 + 80465c0: 687a ldr r2, [r7, #4] + 80465c2: 68f8 ldr r0, [r7, #12] + 80465c4: f7ff ff5a bl 804647c + 80465c8: 4603 mov r3, r0 ipaddr, ARP_REQUEST); } - 804658a: 4618 mov r0, r3 - 804658c: 3710 adds r7, #16 - 804658e: 46bd mov sp, r7 - 8046590: bd80 pop {r7, pc} - 8046592: bf00 nop - 8046594: 0804d494 .word 0x0804d494 + 80465ca: 4618 mov r0, r3 + 80465cc: 3710 adds r7, #16 + 80465ce: 46bd mov sp, r7 + 80465d0: bd80 pop {r7, pc} + 80465d2: bf00 nop + 80465d4: 0804d4d4 .word 0x0804d4d4 -08046598 : +080465d8 : * ERR_MEM if the ARP packet couldn't be allocated * any other err_t on failure */ err_t etharp_request(struct netif *netif, const ip4_addr_t *ipaddr) { - 8046598: b580 push {r7, lr} - 804659a: b082 sub sp, #8 - 804659c: af00 add r7, sp, #0 - 804659e: 6078 str r0, [r7, #4] - 80465a0: 6039 str r1, [r7, #0] + 80465d8: b580 push {r7, lr} + 80465da: b082 sub sp, #8 + 80465dc: af00 add r7, sp, #0 + 80465de: 6078 str r0, [r7, #4] + 80465e0: 6039 str r1, [r7, #0] LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n")); return etharp_request_dst(netif, ipaddr, ðbroadcast); - 80465a2: 4a05 ldr r2, [pc, #20] ; (80465b8 ) - 80465a4: 6839 ldr r1, [r7, #0] - 80465a6: 6878 ldr r0, [r7, #4] - 80465a8: f7ff ffd4 bl 8046554 - 80465ac: 4603 mov r3, r0 -} - 80465ae: 4618 mov r0, r3 - 80465b0: 3708 adds r7, #8 - 80465b2: 46bd mov sp, r7 - 80465b4: bd80 pop {r7, pc} - 80465b6: bf00 nop - 80465b8: 0804d48c .word 0x0804d48c - -080465bc : + 80465e2: 4a05 ldr r2, [pc, #20] ; (80465f8 ) + 80465e4: 6839 ldr r1, [r7, #0] + 80465e6: 6878 ldr r0, [r7, #4] + 80465e8: f7ff ffd4 bl 8046594 + 80465ec: 4603 mov r3, r0 +} + 80465ee: 4618 mov r0, r3 + 80465f0: 3708 adds r7, #8 + 80465f2: 46bd mov sp, r7 + 80465f4: bd80 pop {r7, pc} + 80465f6: bf00 nop + 80465f8: 0804d4cc .word 0x0804d4cc + +080465fc : * @param p the icmp echo request packet, p->payload pointing to the icmp header * @param inp the netif on which this packet was received */ void icmp_input(struct pbuf *p, struct netif *inp) { - 80465bc: b580 push {r7, lr} - 80465be: b08e sub sp, #56 ; 0x38 - 80465c0: af04 add r7, sp, #16 - 80465c2: 6078 str r0, [r7, #4] - 80465c4: 6039 str r1, [r7, #0] + 80465fc: b580 push {r7, lr} + 80465fe: b08e sub sp, #56 ; 0x38 + 8046600: af04 add r7, sp, #16 + 8046602: 6078 str r0, [r7, #4] + 8046604: 6039 str r1, [r7, #0] const ip4_addr_t *src; ICMP_STATS_INC(icmp.recv); MIB2_STATS_INC(mib2.icmpinmsgs); iphdr_in = ip4_current_header(); - 80465c6: 4b87 ldr r3, [pc, #540] ; (80467e4 ) - 80465c8: 689b ldr r3, [r3, #8] - 80465ca: 627b str r3, [r7, #36] ; 0x24 + 8046606: 4b87 ldr r3, [pc, #540] ; (8046824 ) + 8046608: 689b ldr r3, [r3, #8] + 804660a: 627b str r3, [r7, #36] ; 0x24 hlen = IPH_HL_BYTES(iphdr_in); - 80465cc: 6a7b ldr r3, [r7, #36] ; 0x24 - 80465ce: 781b ldrb r3, [r3, #0] - 80465d0: f003 030f and.w r3, r3, #15 - 80465d4: b2db uxtb r3, r3 - 80465d6: 009b lsls r3, r3, #2 - 80465d8: b2db uxtb r3, r3 - 80465da: 847b strh r3, [r7, #34] ; 0x22 + 804660c: 6a7b ldr r3, [r7, #36] ; 0x24 + 804660e: 781b ldrb r3, [r3, #0] + 8046610: f003 030f and.w r3, r3, #15 + 8046614: b2db uxtb r3, r3 + 8046616: 009b lsls r3, r3, #2 + 8046618: b2db uxtb r3, r3 + 804661a: 847b strh r3, [r7, #34] ; 0x22 if (hlen < IP_HLEN) { - 80465dc: 8c7b ldrh r3, [r7, #34] ; 0x22 - 80465de: 2b13 cmp r3, #19 - 80465e0: f240 80e8 bls.w 80467b4 + 804661c: 8c7b ldrh r3, [r7, #34] ; 0x22 + 804661e: 2b13 cmp r3, #19 + 8046620: f240 80e8 bls.w 80467f4 LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short IP header (%"S16_F" bytes) received\n", hlen)); goto lenerr; } if (p->len < sizeof(u16_t) * 2) { - 80465e4: 687b ldr r3, [r7, #4] - 80465e6: 895b ldrh r3, [r3, #10] - 80465e8: 2b03 cmp r3, #3 - 80465ea: f240 80e5 bls.w 80467b8 + 8046624: 687b ldr r3, [r7, #4] + 8046626: 895b ldrh r3, [r3, #10] + 8046628: 2b03 cmp r3, #3 + 804662a: f240 80e5 bls.w 80467f8 LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len)); goto lenerr; } type = *((u8_t *)p->payload); - 80465ee: 687b ldr r3, [r7, #4] - 80465f0: 685b ldr r3, [r3, #4] - 80465f2: 781b ldrb r3, [r3, #0] - 80465f4: f887 3021 strb.w r3, [r7, #33] ; 0x21 + 804662e: 687b ldr r3, [r7, #4] + 8046630: 685b ldr r3, [r3, #4] + 8046632: 781b ldrb r3, [r3, #0] + 8046634: f887 3021 strb.w r3, [r7, #33] ; 0x21 #ifdef LWIP_DEBUG code = *(((u8_t *)p->payload) + 1); /* if debug is enabled but debug statement below is somehow disabled: */ LWIP_UNUSED_ARG(code); #endif /* LWIP_DEBUG */ switch (type) { - 80465f8: f897 3021 ldrb.w r3, [r7, #33] ; 0x21 - 80465fc: 2b00 cmp r3, #0 - 80465fe: f000 80d2 beq.w 80467a6 - 8046602: 2b08 cmp r3, #8 - 8046604: f040 80d2 bne.w 80467ac + 8046638: f897 3021 ldrb.w r3, [r7, #33] ; 0x21 + 804663c: 2b00 cmp r3, #0 + 804663e: f000 80d2 beq.w 80467e6 + 8046642: 2b08 cmp r3, #8 + 8046644: f040 80d2 bne.w 80467ec (as obviously, an echo request has been sent, too). */ MIB2_STATS_INC(mib2.icmpinechoreps); break; case ICMP_ECHO: MIB2_STATS_INC(mib2.icmpinechos); src = ip4_current_dest_addr(); - 8046608: 4b77 ldr r3, [pc, #476] ; (80467e8 ) - 804660a: 61fb str r3, [r7, #28] + 8046648: 4b77 ldr r3, [pc, #476] ; (8046828 ) + 804664a: 61fb str r3, [r7, #28] /* multicast destination address? */ if (ip4_addr_ismulticast(ip4_current_dest_addr())) { - 804660c: 4b75 ldr r3, [pc, #468] ; (80467e4 ) - 804660e: 695b ldr r3, [r3, #20] - 8046610: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8046614: 2be0 cmp r3, #224 ; 0xe0 - 8046616: f000 80d6 beq.w 80467c6 + 804664c: 4b75 ldr r3, [pc, #468] ; (8046824 ) + 804664e: 695b ldr r3, [r3, #20] + 8046650: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8046654: 2be0 cmp r3, #224 ; 0xe0 + 8046656: f000 80d6 beq.w 8046806 LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast pings\n")); goto icmperr; #endif /* LWIP_MULTICAST_PING */ } /* broadcast destination address? */ if (ip4_addr_isbroadcast(ip4_current_dest_addr(), ip_current_netif())) { - 804661a: 4b72 ldr r3, [pc, #456] ; (80467e4 ) - 804661c: 695b ldr r3, [r3, #20] - 804661e: 4a71 ldr r2, [pc, #452] ; (80467e4 ) - 8046620: 6812 ldr r2, [r2, #0] - 8046622: 4611 mov r1, r2 - 8046624: 4618 mov r0, r3 - 8046626: f000 fc13 bl 8046e50 - 804662a: 4603 mov r3, r0 - 804662c: 2b00 cmp r3, #0 - 804662e: f040 80cc bne.w 80467ca + 804665a: 4b72 ldr r3, [pc, #456] ; (8046824 ) + 804665c: 695b ldr r3, [r3, #20] + 804665e: 4a71 ldr r2, [pc, #452] ; (8046824 ) + 8046660: 6812 ldr r2, [r2, #0] + 8046662: 4611 mov r1, r2 + 8046664: 4618 mov r0, r3 + 8046666: f000 fc13 bl 8046e90 + 804666a: 4603 mov r3, r0 + 804666c: 2b00 cmp r3, #0 + 804666e: f040 80cc bne.w 804680a LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to broadcast pings\n")); goto icmperr; #endif /* LWIP_BROADCAST_PING */ } LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n")); if (p->tot_len < sizeof(struct icmp_echo_hdr)) { - 8046632: 687b ldr r3, [r7, #4] - 8046634: 891b ldrh r3, [r3, #8] - 8046636: 2b07 cmp r3, #7 - 8046638: f240 80c0 bls.w 80467bc + 8046672: 687b ldr r3, [r7, #4] + 8046674: 891b ldrh r3, [r3, #8] + 8046676: 2b07 cmp r3, #7 + 8046678: f240 80c0 bls.w 80467fc LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n")); goto lenerr; } #if CHECKSUM_CHECK_ICMP IF__NETIF_CHECKSUM_ENABLED(inp, NETIF_CHECKSUM_CHECK_ICMP) { if (inet_chksum_pbuf(p) != 0) { - 804663c: 6878 ldr r0, [r7, #4] - 804663e: f7f6 fd62 bl 803d106 - 8046642: 4603 mov r3, r0 - 8046644: 2b00 cmp r3, #0 - 8046646: d003 beq.n 8046650 + 804667c: 6878 ldr r0, [r7, #4] + 804667e: f7f6 fd62 bl 803d146 + 8046682: 4603 mov r3, r0 + 8046684: 2b00 cmp r3, #0 + 8046686: d003 beq.n 8046690 LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n")); pbuf_free(p); - 8046648: 6878 ldr r0, [r7, #4] - 804664a: f7f8 f8f1 bl 803e830 + 8046688: 6878 ldr r0, [r7, #4] + 804668a: f7f8 f8f1 bl 803e870 ICMP_STATS_INC(icmp.chkerr); MIB2_STATS_INC(mib2.icmpinerrors); return; - 804664e: e0c5 b.n 80467dc + 804668e: e0c5 b.n 804681c } } #endif #if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN if (pbuf_add_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) { - 8046650: 8c7b ldrh r3, [r7, #34] ; 0x22 - 8046652: 330e adds r3, #14 - 8046654: 4619 mov r1, r3 - 8046656: 6878 ldr r0, [r7, #4] - 8046658: f7f8 f854 bl 803e704 - 804665c: 4603 mov r3, r0 - 804665e: 2b00 cmp r3, #0 - 8046660: d04b beq.n 80466fa + 8046690: 8c7b ldrh r3, [r7, #34] ; 0x22 + 8046692: 330e adds r3, #14 + 8046694: 4619 mov r1, r3 + 8046696: 6878 ldr r0, [r7, #4] + 8046698: f7f8 f854 bl 803e744 + 804669c: 4603 mov r3, r0 + 804669e: 2b00 cmp r3, #0 + 80466a0: d04b beq.n 804673a /* p is not big enough to contain link headers * allocate a new one and copy p into it */ struct pbuf *r; u16_t alloc_len = (u16_t)(p->tot_len + hlen); - 8046662: 687b ldr r3, [r7, #4] - 8046664: 891a ldrh r2, [r3, #8] - 8046666: 8c7b ldrh r3, [r7, #34] ; 0x22 - 8046668: 4413 add r3, r2 - 804666a: 837b strh r3, [r7, #26] + 80466a2: 687b ldr r3, [r7, #4] + 80466a4: 891a ldrh r2, [r3, #8] + 80466a6: 8c7b ldrh r3, [r7, #34] ; 0x22 + 80466a8: 4413 add r3, r2 + 80466aa: 837b strh r3, [r7, #26] if (alloc_len < p->tot_len) { - 804666c: 687b ldr r3, [r7, #4] - 804666e: 891b ldrh r3, [r3, #8] - 8046670: 8b7a ldrh r2, [r7, #26] - 8046672: 429a cmp r2, r3 - 8046674: f0c0 80ab bcc.w 80467ce + 80466ac: 687b ldr r3, [r7, #4] + 80466ae: 891b ldrh r3, [r3, #8] + 80466b0: 8b7a ldrh r2, [r7, #26] + 80466b2: 429a cmp r2, r3 + 80466b4: f0c0 80ab bcc.w 804680e LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed (tot_len overflow)\n")); goto icmperr; } /* allocate new packet buffer with space for link headers */ r = pbuf_alloc(PBUF_LINK, alloc_len, PBUF_RAM); - 8046678: 8b7b ldrh r3, [r7, #26] - 804667a: f44f 7220 mov.w r2, #640 ; 0x280 - 804667e: 4619 mov r1, r3 - 8046680: 200e movs r0, #14 - 8046682: f7f7 fdf1 bl 803e268 - 8046686: 6178 str r0, [r7, #20] + 80466b8: 8b7b ldrh r3, [r7, #26] + 80466ba: f44f 7220 mov.w r2, #640 ; 0x280 + 80466be: 4619 mov r1, r3 + 80466c0: 200e movs r0, #14 + 80466c2: f7f7 fdf1 bl 803e2a8 + 80466c6: 6178 str r0, [r7, #20] if (r == NULL) { - 8046688: 697b ldr r3, [r7, #20] - 804668a: 2b00 cmp r3, #0 - 804668c: f000 80a1 beq.w 80467d2 + 80466c8: 697b ldr r3, [r7, #20] + 80466ca: 2b00 cmp r3, #0 + 80466cc: f000 80a1 beq.w 8046812 LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n")); goto icmperr; } if (r->len < hlen + sizeof(struct icmp_echo_hdr)) { - 8046690: 697b ldr r3, [r7, #20] - 8046692: 895b ldrh r3, [r3, #10] - 8046694: 461a mov r2, r3 - 8046696: 8c7b ldrh r3, [r7, #34] ; 0x22 - 8046698: 3308 adds r3, #8 - 804669a: 429a cmp r2, r3 - 804669c: d203 bcs.n 80466a6 + 80466d0: 697b ldr r3, [r7, #20] + 80466d2: 895b ldrh r3, [r3, #10] + 80466d4: 461a mov r2, r3 + 80466d6: 8c7b ldrh r3, [r7, #34] ; 0x22 + 80466d8: 3308 adds r3, #8 + 80466da: 429a cmp r2, r3 + 80466dc: d203 bcs.n 80466e6 LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("first pbuf cannot hold the ICMP header")); pbuf_free(r); - 804669e: 6978 ldr r0, [r7, #20] - 80466a0: f7f8 f8c6 bl 803e830 + 80466de: 6978 ldr r0, [r7, #20] + 80466e0: f7f8 f8c6 bl 803e870 goto icmperr; - 80466a4: e096 b.n 80467d4 + 80466e4: e096 b.n 8046814 } /* copy the ip header */ MEMCPY(r->payload, iphdr_in, hlen); - 80466a6: 697b ldr r3, [r7, #20] - 80466a8: 685b ldr r3, [r3, #4] - 80466aa: 8c7a ldrh r2, [r7, #34] ; 0x22 - 80466ac: 6a79 ldr r1, [r7, #36] ; 0x24 - 80466ae: 4618 mov r0, r3 - 80466b0: f001 fb68 bl 8047d84 + 80466e6: 697b ldr r3, [r7, #20] + 80466e8: 685b ldr r3, [r3, #4] + 80466ea: 8c7a ldrh r2, [r7, #34] ; 0x22 + 80466ec: 6a79 ldr r1, [r7, #36] ; 0x24 + 80466ee: 4618 mov r0, r3 + 80466f0: f001 fb68 bl 8047dc4 /* switch r->payload back to icmp header (cannot fail) */ if (pbuf_remove_header(r, hlen)) { - 80466b4: 8c7b ldrh r3, [r7, #34] ; 0x22 - 80466b6: 4619 mov r1, r3 - 80466b8: 6978 ldr r0, [r7, #20] - 80466ba: f7f8 f833 bl 803e724 - 80466be: 4603 mov r3, r0 - 80466c0: 2b00 cmp r3, #0 - 80466c2: d009 beq.n 80466d8 + 80466f4: 8c7b ldrh r3, [r7, #34] ; 0x22 + 80466f6: 4619 mov r1, r3 + 80466f8: 6978 ldr r0, [r7, #20] + 80466fa: f7f8 f833 bl 803e764 + 80466fe: 4603 mov r3, r0 + 8046700: 2b00 cmp r3, #0 + 8046702: d009 beq.n 8046718 LWIP_ASSERT("icmp_input: moving r->payload to icmp header failed\n", 0); - 80466c4: 4b49 ldr r3, [pc, #292] ; (80467ec ) - 80466c6: 22b6 movs r2, #182 ; 0xb6 - 80466c8: 4949 ldr r1, [pc, #292] ; (80467f0 ) - 80466ca: 484a ldr r0, [pc, #296] ; (80467f4 ) - 80466cc: f001 fc6a bl 8047fa4 + 8046704: 4b49 ldr r3, [pc, #292] ; (804682c ) + 8046706: 22b6 movs r2, #182 ; 0xb6 + 8046708: 4949 ldr r1, [pc, #292] ; (8046830 ) + 804670a: 484a ldr r0, [pc, #296] ; (8046834 ) + 804670c: f001 fc6a bl 8047fe4 pbuf_free(r); - 80466d0: 6978 ldr r0, [r7, #20] - 80466d2: f7f8 f8ad bl 803e830 + 8046710: 6978 ldr r0, [r7, #20] + 8046712: f7f8 f8ad bl 803e870 goto icmperr; - 80466d6: e07d b.n 80467d4 + 8046716: e07d b.n 8046814 } /* copy the rest of the packet without ip header */ if (pbuf_copy(r, p) != ERR_OK) { - 80466d8: 6879 ldr r1, [r7, #4] - 80466da: 6978 ldr r0, [r7, #20] - 80466dc: f7f8 f9d0 bl 803ea80 - 80466e0: 4603 mov r3, r0 - 80466e2: 2b00 cmp r3, #0 - 80466e4: d003 beq.n 80466ee + 8046718: 6879 ldr r1, [r7, #4] + 804671a: 6978 ldr r0, [r7, #20] + 804671c: f7f8 f9d0 bl 803eac0 + 8046720: 4603 mov r3, r0 + 8046722: 2b00 cmp r3, #0 + 8046724: d003 beq.n 804672e LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("icmp_input: copying to new pbuf failed")); pbuf_free(r); - 80466e6: 6978 ldr r0, [r7, #20] - 80466e8: f7f8 f8a2 bl 803e830 + 8046726: 6978 ldr r0, [r7, #20] + 8046728: f7f8 f8a2 bl 803e870 goto icmperr; - 80466ec: e072 b.n 80467d4 + 804672c: e072 b.n 8046814 } /* free the original p */ pbuf_free(p); - 80466ee: 6878 ldr r0, [r7, #4] - 80466f0: f7f8 f89e bl 803e830 + 804672e: 6878 ldr r0, [r7, #4] + 8046730: f7f8 f89e bl 803e870 /* we now have an identical copy of p that has room for link headers */ p = r; - 80466f4: 697b ldr r3, [r7, #20] - 80466f6: 607b str r3, [r7, #4] - 80466f8: e00f b.n 804671a + 8046734: 697b ldr r3, [r7, #20] + 8046736: 607b str r3, [r7, #4] + 8046738: e00f b.n 804675a } else { /* restore p->payload to point to icmp header (cannot fail) */ if (pbuf_remove_header(p, hlen + PBUF_LINK_HLEN + PBUF_LINK_ENCAPSULATION_HLEN)) { - 80466fa: 8c7b ldrh r3, [r7, #34] ; 0x22 - 80466fc: 330e adds r3, #14 - 80466fe: 4619 mov r1, r3 - 8046700: 6878 ldr r0, [r7, #4] - 8046702: f7f8 f80f bl 803e724 - 8046706: 4603 mov r3, r0 - 8046708: 2b00 cmp r3, #0 - 804670a: d006 beq.n 804671a + 804673a: 8c7b ldrh r3, [r7, #34] ; 0x22 + 804673c: 330e adds r3, #14 + 804673e: 4619 mov r1, r3 + 8046740: 6878 ldr r0, [r7, #4] + 8046742: f7f8 f80f bl 803e764 + 8046746: 4603 mov r3, r0 + 8046748: 2b00 cmp r3, #0 + 804674a: d006 beq.n 804675a LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - 804670c: 4b37 ldr r3, [pc, #220] ; (80467ec ) - 804670e: 22c7 movs r2, #199 ; 0xc7 - 8046710: 4939 ldr r1, [pc, #228] ; (80467f8 ) - 8046712: 4838 ldr r0, [pc, #224] ; (80467f4 ) - 8046714: f001 fc46 bl 8047fa4 + 804674c: 4b37 ldr r3, [pc, #220] ; (804682c ) + 804674e: 22c7 movs r2, #199 ; 0xc7 + 8046750: 4939 ldr r1, [pc, #228] ; (8046838 ) + 8046752: 4838 ldr r0, [pc, #224] ; (8046834 ) + 8046754: f001 fc46 bl 8047fe4 goto icmperr; - 8046718: e05c b.n 80467d4 + 8046758: e05c b.n 8046814 } #endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ /* At this point, all checks are OK. */ /* We generate an answer by switching the dest and src ip addresses, * setting the icmp type to ECHO_RESPONSE and updating the checksum. */ iecho = (struct icmp_echo_hdr *)p->payload; - 804671a: 687b ldr r3, [r7, #4] - 804671c: 685b ldr r3, [r3, #4] - 804671e: 613b str r3, [r7, #16] + 804675a: 687b ldr r3, [r7, #4] + 804675c: 685b ldr r3, [r3, #4] + 804675e: 613b str r3, [r7, #16] if (pbuf_add_header(p, hlen)) { - 8046720: 8c7b ldrh r3, [r7, #34] ; 0x22 - 8046722: 4619 mov r1, r3 - 8046724: 6878 ldr r0, [r7, #4] - 8046726: f7f7 ffed bl 803e704 - 804672a: 4603 mov r3, r0 - 804672c: 2b00 cmp r3, #0 - 804672e: d13c bne.n 80467aa + 8046760: 8c7b ldrh r3, [r7, #34] ; 0x22 + 8046762: 4619 mov r1, r3 + 8046764: 6878 ldr r0, [r7, #4] + 8046766: f7f7 ffed bl 803e744 + 804676a: 4603 mov r3, r0 + 804676c: 2b00 cmp r3, #0 + 804676e: d13c bne.n 80467ea LWIP_DEBUGF(ICMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Can't move over header in packet")); } else { err_t ret; struct ip_hdr *iphdr = (struct ip_hdr *)p->payload; - 8046730: 687b ldr r3, [r7, #4] - 8046732: 685b ldr r3, [r3, #4] - 8046734: 60fb str r3, [r7, #12] + 8046770: 687b ldr r3, [r7, #4] + 8046772: 685b ldr r3, [r3, #4] + 8046774: 60fb str r3, [r7, #12] ip4_addr_copy(iphdr->src, *src); - 8046736: 69fb ldr r3, [r7, #28] - 8046738: 681a ldr r2, [r3, #0] - 804673a: 68fb ldr r3, [r7, #12] - 804673c: 60da str r2, [r3, #12] + 8046776: 69fb ldr r3, [r7, #28] + 8046778: 681a ldr r2, [r3, #0] + 804677a: 68fb ldr r3, [r7, #12] + 804677c: 60da str r2, [r3, #12] ip4_addr_copy(iphdr->dest, *ip4_current_src_addr()); - 804673e: 4b29 ldr r3, [pc, #164] ; (80467e4 ) - 8046740: 691a ldr r2, [r3, #16] - 8046742: 68fb ldr r3, [r7, #12] - 8046744: 611a str r2, [r3, #16] + 804677e: 4b29 ldr r3, [pc, #164] ; (8046824 ) + 8046780: 691a ldr r2, [r3, #16] + 8046782: 68fb ldr r3, [r7, #12] + 8046784: 611a str r2, [r3, #16] ICMPH_TYPE_SET(iecho, ICMP_ER); - 8046746: 693b ldr r3, [r7, #16] - 8046748: 2200 movs r2, #0 - 804674a: 701a strb r2, [r3, #0] + 8046786: 693b ldr r3, [r7, #16] + 8046788: 2200 movs r2, #0 + 804678a: 701a strb r2, [r3, #0] #if CHECKSUM_GEN_ICMP IF__NETIF_CHECKSUM_ENABLED(inp, NETIF_CHECKSUM_GEN_ICMP) { /* adjust the checksum */ if (iecho->chksum > PP_HTONS(0xffffU - (ICMP_ECHO << 8))) { - 804674c: 693b ldr r3, [r7, #16] - 804674e: 885b ldrh r3, [r3, #2] - 8046750: b29b uxth r3, r3 - 8046752: f64f 72f7 movw r2, #65527 ; 0xfff7 - 8046756: 4293 cmp r3, r2 - 8046758: d907 bls.n 804676a + 804678c: 693b ldr r3, [r7, #16] + 804678e: 885b ldrh r3, [r3, #2] + 8046790: b29b uxth r3, r3 + 8046792: f64f 72f7 movw r2, #65527 ; 0xfff7 + 8046796: 4293 cmp r3, r2 + 8046798: d907 bls.n 80467aa iecho->chksum = (u16_t)(iecho->chksum + PP_HTONS((u16_t)(ICMP_ECHO << 8)) + 1); - 804675a: 693b ldr r3, [r7, #16] - 804675c: 885b ldrh r3, [r3, #2] - 804675e: b29b uxth r3, r3 - 8046760: 3309 adds r3, #9 - 8046762: b29a uxth r2, r3 - 8046764: 693b ldr r3, [r7, #16] - 8046766: 805a strh r2, [r3, #2] - 8046768: e006 b.n 8046778 + 804679a: 693b ldr r3, [r7, #16] + 804679c: 885b ldrh r3, [r3, #2] + 804679e: b29b uxth r3, r3 + 80467a0: 3309 adds r3, #9 + 80467a2: b29a uxth r2, r3 + 80467a4: 693b ldr r3, [r7, #16] + 80467a6: 805a strh r2, [r3, #2] + 80467a8: e006 b.n 80467b8 } else { iecho->chksum = (u16_t)(iecho->chksum + PP_HTONS(ICMP_ECHO << 8)); - 804676a: 693b ldr r3, [r7, #16] - 804676c: 885b ldrh r3, [r3, #2] - 804676e: b29b uxth r3, r3 - 8046770: 3308 adds r3, #8 - 8046772: b29a uxth r2, r3 - 8046774: 693b ldr r3, [r7, #16] - 8046776: 805a strh r2, [r3, #2] + 80467aa: 693b ldr r3, [r7, #16] + 80467ac: 885b ldrh r3, [r3, #2] + 80467ae: b29b uxth r3, r3 + 80467b0: 3308 adds r3, #8 + 80467b2: b29a uxth r2, r3 + 80467b4: 693b ldr r3, [r7, #16] + 80467b6: 805a strh r2, [r3, #2] #else /* CHECKSUM_GEN_ICMP */ iecho->chksum = 0; #endif /* CHECKSUM_GEN_ICMP */ /* Set the correct TTL and recalculate the header checksum. */ IPH_TTL_SET(iphdr, ICMP_TTL); - 8046778: 68fb ldr r3, [r7, #12] - 804677a: 22ff movs r2, #255 ; 0xff - 804677c: 721a strb r2, [r3, #8] + 80467b8: 68fb ldr r3, [r7, #12] + 80467ba: 22ff movs r2, #255 ; 0xff + 80467bc: 721a strb r2, [r3, #8] IPH_CHKSUM_SET(iphdr, 0); - 804677e: 68fb ldr r3, [r7, #12] - 8046780: 2200 movs r2, #0 - 8046782: 729a strb r2, [r3, #10] - 8046784: 2200 movs r2, #0 - 8046786: 72da strb r2, [r3, #11] + 80467be: 68fb ldr r3, [r7, #12] + 80467c0: 2200 movs r2, #0 + 80467c2: 729a strb r2, [r3, #10] + 80467c4: 2200 movs r2, #0 + 80467c6: 72da strb r2, [r3, #11] MIB2_STATS_INC(mib2.icmpoutmsgs); /* increase number of echo replies attempted to send */ MIB2_STATS_INC(mib2.icmpoutechoreps); /* send an ICMP packet */ ret = ip4_output_if(p, src, LWIP_IP_HDRINCL, - 8046788: 683b ldr r3, [r7, #0] - 804678a: 9302 str r3, [sp, #8] - 804678c: 2301 movs r3, #1 - 804678e: 9301 str r3, [sp, #4] - 8046790: 2300 movs r3, #0 - 8046792: 9300 str r3, [sp, #0] - 8046794: 23ff movs r3, #255 ; 0xff - 8046796: 2200 movs r2, #0 - 8046798: 69f9 ldr r1, [r7, #28] - 804679a: 6878 ldr r0, [r7, #4] - 804679c: f000 fa80 bl 8046ca0 - 80467a0: 4603 mov r3, r0 - 80467a2: 72fb strb r3, [r7, #11] + 80467c8: 683b ldr r3, [r7, #0] + 80467ca: 9302 str r3, [sp, #8] + 80467cc: 2301 movs r3, #1 + 80467ce: 9301 str r3, [sp, #4] + 80467d0: 2300 movs r3, #0 + 80467d2: 9300 str r3, [sp, #0] + 80467d4: 23ff movs r3, #255 ; 0xff + 80467d6: 2200 movs r2, #0 + 80467d8: 69f9 ldr r1, [r7, #28] + 80467da: 6878 ldr r0, [r7, #4] + 80467dc: f000 fa80 bl 8046ce0 + 80467e0: 4603 mov r3, r0 + 80467e2: 72fb strb r3, [r7, #11] ICMP_TTL, 0, IP_PROTO_ICMP, inp); if (ret != ERR_OK) { LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %s\n", lwip_strerr(ret))); } } break; - 80467a4: e001 b.n 80467aa + 80467e4: e001 b.n 80467ea break; - 80467a6: bf00 nop - 80467a8: e000 b.n 80467ac + 80467e6: bf00 nop + 80467e8: e000 b.n 80467ec break; - 80467aa: bf00 nop + 80467ea: bf00 nop LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n", (s16_t)type, (s16_t)code)); ICMP_STATS_INC(icmp.proterr); ICMP_STATS_INC(icmp.drop); } pbuf_free(p); - 80467ac: 6878 ldr r0, [r7, #4] - 80467ae: f7f8 f83f bl 803e830 + 80467ec: 6878 ldr r0, [r7, #4] + 80467ee: f7f8 f83f bl 803e870 return; - 80467b2: e013 b.n 80467dc + 80467f2: e013 b.n 804681c goto lenerr; - 80467b4: bf00 nop - 80467b6: e002 b.n 80467be + 80467f4: bf00 nop + 80467f6: e002 b.n 80467fe goto lenerr; - 80467b8: bf00 nop - 80467ba: e000 b.n 80467be + 80467f8: bf00 nop + 80467fa: e000 b.n 80467fe goto lenerr; - 80467bc: bf00 nop + 80467fc: bf00 nop lenerr: pbuf_free(p); - 80467be: 6878 ldr r0, [r7, #4] - 80467c0: f7f8 f836 bl 803e830 + 80467fe: 6878 ldr r0, [r7, #4] + 8046800: f7f8 f836 bl 803e870 ICMP_STATS_INC(icmp.lenerr); MIB2_STATS_INC(mib2.icmpinerrors); return; - 80467c4: e00a b.n 80467dc + 8046804: e00a b.n 804681c goto icmperr; - 80467c6: bf00 nop - 80467c8: e004 b.n 80467d4 + 8046806: bf00 nop + 8046808: e004 b.n 8046814 goto icmperr; - 80467ca: bf00 nop - 80467cc: e002 b.n 80467d4 + 804680a: bf00 nop + 804680c: e002 b.n 8046814 goto icmperr; - 80467ce: bf00 nop - 80467d0: e000 b.n 80467d4 + 804680e: bf00 nop + 8046810: e000 b.n 8046814 goto icmperr; - 80467d2: bf00 nop + 8046812: bf00 nop #if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN || !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING icmperr: pbuf_free(p); - 80467d4: 6878 ldr r0, [r7, #4] - 80467d6: f7f8 f82b bl 803e830 + 8046814: 6878 ldr r0, [r7, #4] + 8046816: f7f8 f82b bl 803e870 ICMP_STATS_INC(icmp.err); MIB2_STATS_INC(mib2.icmpinerrors); return; - 80467da: bf00 nop + 804681a: bf00 nop #endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN || !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */ } - 80467dc: 3728 adds r7, #40 ; 0x28 - 80467de: 46bd mov sp, r7 - 80467e0: bd80 pop {r7, pc} - 80467e2: bf00 nop - 80467e4: 2400bb4c .word 0x2400bb4c - 80467e8: 2400bb60 .word 0x2400bb60 - 80467ec: 0804c6f8 .word 0x0804c6f8 - 80467f0: 0804c730 .word 0x0804c730 - 80467f4: 0804c768 .word 0x0804c768 - 80467f8: 0804c790 .word 0x0804c790 - -080467fc : + 804681c: 3728 adds r7, #40 ; 0x28 + 804681e: 46bd mov sp, r7 + 8046820: bd80 pop {r7, pc} + 8046822: bf00 nop + 8046824: 2400bb4c .word 0x2400bb4c + 8046828: 2400bb60 .word 0x2400bb60 + 804682c: 0804c738 .word 0x0804c738 + 8046830: 0804c770 .word 0x0804c770 + 8046834: 0804c7a8 .word 0x0804c7a8 + 8046838: 0804c7d0 .word 0x0804c7d0 + +0804683c : * p->payload pointing to the IP header * @param t type of the 'unreachable' packet */ void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t) { - 80467fc: b580 push {r7, lr} - 80467fe: b082 sub sp, #8 - 8046800: af00 add r7, sp, #0 - 8046802: 6078 str r0, [r7, #4] - 8046804: 460b mov r3, r1 - 8046806: 70fb strb r3, [r7, #3] + 804683c: b580 push {r7, lr} + 804683e: b082 sub sp, #8 + 8046840: af00 add r7, sp, #0 + 8046842: 6078 str r0, [r7, #4] + 8046844: 460b mov r3, r1 + 8046846: 70fb strb r3, [r7, #3] MIB2_STATS_INC(mib2.icmpoutdestunreachs); icmp_send_response(p, ICMP_DUR, t); - 8046808: 78fb ldrb r3, [r7, #3] - 804680a: 461a mov r2, r3 - 804680c: 2103 movs r1, #3 - 804680e: 6878 ldr r0, [r7, #4] - 8046810: f000 f814 bl 804683c -} - 8046814: bf00 nop - 8046816: 3708 adds r7, #8 - 8046818: 46bd mov sp, r7 - 804681a: bd80 pop {r7, pc} - -0804681c : + 8046848: 78fb ldrb r3, [r7, #3] + 804684a: 461a mov r2, r3 + 804684c: 2103 movs r1, #3 + 804684e: 6878 ldr r0, [r7, #4] + 8046850: f000 f814 bl 804687c +} + 8046854: bf00 nop + 8046856: 3708 adds r7, #8 + 8046858: 46bd mov sp, r7 + 804685a: bd80 pop {r7, pc} + +0804685c : * p->payload pointing to the IP header * @param t type of the 'time exceeded' packet */ void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t) { - 804681c: b580 push {r7, lr} - 804681e: b082 sub sp, #8 - 8046820: af00 add r7, sp, #0 - 8046822: 6078 str r0, [r7, #4] - 8046824: 460b mov r3, r1 - 8046826: 70fb strb r3, [r7, #3] + 804685c: b580 push {r7, lr} + 804685e: b082 sub sp, #8 + 8046860: af00 add r7, sp, #0 + 8046862: 6078 str r0, [r7, #4] + 8046864: 460b mov r3, r1 + 8046866: 70fb strb r3, [r7, #3] MIB2_STATS_INC(mib2.icmpouttimeexcds); icmp_send_response(p, ICMP_TE, t); - 8046828: 78fb ldrb r3, [r7, #3] - 804682a: 461a mov r2, r3 - 804682c: 210b movs r1, #11 - 804682e: 6878 ldr r0, [r7, #4] - 8046830: f000 f804 bl 804683c -} - 8046834: bf00 nop - 8046836: 3708 adds r7, #8 - 8046838: 46bd mov sp, r7 - 804683a: bd80 pop {r7, pc} - -0804683c : + 8046868: 78fb ldrb r3, [r7, #3] + 804686a: 461a mov r2, r3 + 804686c: 210b movs r1, #11 + 804686e: 6878 ldr r0, [r7, #4] + 8046870: f000 f804 bl 804687c +} + 8046874: bf00 nop + 8046876: 3708 adds r7, #8 + 8046878: 46bd mov sp, r7 + 804687a: bd80 pop {r7, pc} + +0804687c : * @param type Type of the ICMP header * @param code Code of the ICMP header */ static void icmp_send_response(struct pbuf *p, u8_t type, u8_t code) { - 804683c: b580 push {r7, lr} - 804683e: b08c sub sp, #48 ; 0x30 - 8046840: af04 add r7, sp, #16 - 8046842: 6078 str r0, [r7, #4] - 8046844: 460b mov r3, r1 - 8046846: 70fb strb r3, [r7, #3] - 8046848: 4613 mov r3, r2 - 804684a: 70bb strb r3, [r7, #2] + 804687c: b580 push {r7, lr} + 804687e: b08c sub sp, #48 ; 0x30 + 8046880: af04 add r7, sp, #16 + 8046882: 6078 str r0, [r7, #4] + 8046884: 460b mov r3, r1 + 8046886: 70fb strb r3, [r7, #3] + 8046888: 4613 mov r3, r2 + 804688a: 70bb strb r3, [r7, #2] /* increase number of messages attempted to send */ MIB2_STATS_INC(mib2.icmpoutmsgs); /* ICMP header + IP header + 8 bytes of data */ q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, - 804684c: f44f 7220 mov.w r2, #640 ; 0x280 - 8046850: 2124 movs r1, #36 ; 0x24 - 8046852: 2022 movs r0, #34 ; 0x22 - 8046854: f7f7 fd08 bl 803e268 - 8046858: 61f8 str r0, [r7, #28] + 804688c: f44f 7220 mov.w r2, #640 ; 0x280 + 8046890: 2124 movs r1, #36 ; 0x24 + 8046892: 2022 movs r0, #34 ; 0x22 + 8046894: f7f7 fd08 bl 803e2a8 + 8046898: 61f8 str r0, [r7, #28] PBUF_RAM); if (q == NULL) { - 804685a: 69fb ldr r3, [r7, #28] - 804685c: 2b00 cmp r3, #0 - 804685e: d056 beq.n 804690e + 804689a: 69fb ldr r3, [r7, #28] + 804689c: 2b00 cmp r3, #0 + 804689e: d056 beq.n 804694e LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n")); MIB2_STATS_INC(mib2.icmpouterrors); return; } LWIP_ASSERT("check that first pbuf can hold icmp message", - 8046860: 69fb ldr r3, [r7, #28] - 8046862: 895b ldrh r3, [r3, #10] - 8046864: 2b23 cmp r3, #35 ; 0x23 - 8046866: d806 bhi.n 8046876 - 8046868: 4b2b ldr r3, [pc, #172] ; (8046918 ) - 804686a: f44f 72b4 mov.w r2, #360 ; 0x168 - 804686e: 492b ldr r1, [pc, #172] ; (804691c ) - 8046870: 482b ldr r0, [pc, #172] ; (8046920 ) - 8046872: f001 fb97 bl 8047fa4 + 80468a0: 69fb ldr r3, [r7, #28] + 80468a2: 895b ldrh r3, [r3, #10] + 80468a4: 2b23 cmp r3, #35 ; 0x23 + 80468a6: d806 bhi.n 80468b6 + 80468a8: 4b2b ldr r3, [pc, #172] ; (8046958 ) + 80468aa: f44f 72b4 mov.w r2, #360 ; 0x168 + 80468ae: 492b ldr r1, [pc, #172] ; (804695c ) + 80468b0: 482b ldr r0, [pc, #172] ; (8046960 ) + 80468b2: f001 fb97 bl 8047fe4 (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE))); iphdr = (struct ip_hdr *)p->payload; - 8046876: 687b ldr r3, [r7, #4] - 8046878: 685b ldr r3, [r3, #4] - 804687a: 61bb str r3, [r7, #24] + 80468b6: 687b ldr r3, [r7, #4] + 80468b8: 685b ldr r3, [r3, #4] + 80468ba: 61bb str r3, [r7, #24] ip4_addr_debug_print_val(ICMP_DEBUG, iphdr->src); LWIP_DEBUGF(ICMP_DEBUG, (" to ")); ip4_addr_debug_print_val(ICMP_DEBUG, iphdr->dest); LWIP_DEBUGF(ICMP_DEBUG, ("\n")); icmphdr = (struct icmp_echo_hdr *)q->payload; - 804687c: 69fb ldr r3, [r7, #28] - 804687e: 685b ldr r3, [r3, #4] - 8046880: 617b str r3, [r7, #20] + 80468bc: 69fb ldr r3, [r7, #28] + 80468be: 685b ldr r3, [r3, #4] + 80468c0: 617b str r3, [r7, #20] icmphdr->type = type; - 8046882: 697b ldr r3, [r7, #20] - 8046884: 78fa ldrb r2, [r7, #3] - 8046886: 701a strb r2, [r3, #0] + 80468c2: 697b ldr r3, [r7, #20] + 80468c4: 78fa ldrb r2, [r7, #3] + 80468c6: 701a strb r2, [r3, #0] icmphdr->code = code; - 8046888: 697b ldr r3, [r7, #20] - 804688a: 78ba ldrb r2, [r7, #2] - 804688c: 705a strb r2, [r3, #1] + 80468c8: 697b ldr r3, [r7, #20] + 80468ca: 78ba ldrb r2, [r7, #2] + 80468cc: 705a strb r2, [r3, #1] icmphdr->id = 0; - 804688e: 697b ldr r3, [r7, #20] - 8046890: 2200 movs r2, #0 - 8046892: 711a strb r2, [r3, #4] - 8046894: 2200 movs r2, #0 - 8046896: 715a strb r2, [r3, #5] + 80468ce: 697b ldr r3, [r7, #20] + 80468d0: 2200 movs r2, #0 + 80468d2: 711a strb r2, [r3, #4] + 80468d4: 2200 movs r2, #0 + 80468d6: 715a strb r2, [r3, #5] icmphdr->seqno = 0; - 8046898: 697b ldr r3, [r7, #20] - 804689a: 2200 movs r2, #0 - 804689c: 719a strb r2, [r3, #6] - 804689e: 2200 movs r2, #0 - 80468a0: 71da strb r2, [r3, #7] + 80468d8: 697b ldr r3, [r7, #20] + 80468da: 2200 movs r2, #0 + 80468dc: 719a strb r2, [r3, #6] + 80468de: 2200 movs r2, #0 + 80468e0: 71da strb r2, [r3, #7] /* copy fields from original packet */ SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, - 80468a2: 69fb ldr r3, [r7, #28] - 80468a4: 685b ldr r3, [r3, #4] - 80468a6: f103 0008 add.w r0, r3, #8 - 80468aa: 687b ldr r3, [r7, #4] - 80468ac: 685b ldr r3, [r3, #4] - 80468ae: 221c movs r2, #28 - 80468b0: 4619 mov r1, r3 - 80468b2: f001 fa67 bl 8047d84 + 80468e2: 69fb ldr r3, [r7, #28] + 80468e4: 685b ldr r3, [r3, #4] + 80468e6: f103 0008 add.w r0, r3, #8 + 80468ea: 687b ldr r3, [r7, #4] + 80468ec: 685b ldr r3, [r3, #4] + 80468ee: 221c movs r2, #28 + 80468f0: 4619 mov r1, r3 + 80468f2: f001 fa67 bl 8047dc4 IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); ip4_addr_copy(iphdr_src, iphdr->src); - 80468b6: 69bb ldr r3, [r7, #24] - 80468b8: 68db ldr r3, [r3, #12] - 80468ba: 60fb str r3, [r7, #12] + 80468f6: 69bb ldr r3, [r7, #24] + 80468f8: 68db ldr r3, [r3, #12] + 80468fa: 60fb str r3, [r7, #12] ip4_addr_t iphdr_dst; ip4_addr_copy(iphdr_dst, iphdr->dest); netif = ip4_route_src(&iphdr_dst, &iphdr_src); } #else netif = ip4_route(&iphdr_src); - 80468bc: f107 030c add.w r3, r7, #12 - 80468c0: 4618 mov r0, r3 - 80468c2: f000 f82f bl 8046924 - 80468c6: 6138 str r0, [r7, #16] + 80468fc: f107 030c add.w r3, r7, #12 + 8046900: 4618 mov r0, r3 + 8046902: f000 f82f bl 8046964 + 8046906: 6138 str r0, [r7, #16] #endif if (netif != NULL) { - 80468c8: 693b ldr r3, [r7, #16] - 80468ca: 2b00 cmp r3, #0 - 80468cc: d01b beq.n 8046906 + 8046908: 693b ldr r3, [r7, #16] + 804690a: 2b00 cmp r3, #0 + 804690c: d01b beq.n 8046946 /* calculate checksum */ icmphdr->chksum = 0; - 80468ce: 697b ldr r3, [r7, #20] - 80468d0: 2200 movs r2, #0 - 80468d2: 709a strb r2, [r3, #2] - 80468d4: 2200 movs r2, #0 - 80468d6: 70da strb r2, [r3, #3] + 804690e: 697b ldr r3, [r7, #20] + 8046910: 2200 movs r2, #0 + 8046912: 709a strb r2, [r3, #2] + 8046914: 2200 movs r2, #0 + 8046916: 70da strb r2, [r3, #3] #if CHECKSUM_GEN_ICMP IF__NETIF_CHECKSUM_ENABLED(netif, NETIF_CHECKSUM_GEN_ICMP) { icmphdr->chksum = inet_chksum(icmphdr, q->len); - 80468d8: 69fb ldr r3, [r7, #28] - 80468da: 895b ldrh r3, [r3, #10] - 80468dc: 4619 mov r1, r3 - 80468de: 6978 ldr r0, [r7, #20] - 80468e0: f7f6 fbff bl 803d0e2 - 80468e4: 4603 mov r3, r0 - 80468e6: 461a mov r2, r3 - 80468e8: 697b ldr r3, [r7, #20] - 80468ea: 805a strh r2, [r3, #2] + 8046918: 69fb ldr r3, [r7, #28] + 804691a: 895b ldrh r3, [r3, #10] + 804691c: 4619 mov r1, r3 + 804691e: 6978 ldr r0, [r7, #20] + 8046920: f7f6 fbff bl 803d122 + 8046924: 4603 mov r3, r0 + 8046926: 461a mov r2, r3 + 8046928: 697b ldr r3, [r7, #20] + 804692a: 805a strh r2, [r3, #2] } #endif ICMP_STATS_INC(icmp.xmit); ip4_output_if(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP, netif); - 80468ec: f107 020c add.w r2, r7, #12 - 80468f0: 693b ldr r3, [r7, #16] - 80468f2: 9302 str r3, [sp, #8] - 80468f4: 2301 movs r3, #1 - 80468f6: 9301 str r3, [sp, #4] - 80468f8: 2300 movs r3, #0 - 80468fa: 9300 str r3, [sp, #0] - 80468fc: 23ff movs r3, #255 ; 0xff - 80468fe: 2100 movs r1, #0 - 8046900: 69f8 ldr r0, [r7, #28] - 8046902: f000 f9cd bl 8046ca0 + 804692c: f107 020c add.w r2, r7, #12 + 8046930: 693b ldr r3, [r7, #16] + 8046932: 9302 str r3, [sp, #8] + 8046934: 2301 movs r3, #1 + 8046936: 9301 str r3, [sp, #4] + 8046938: 2300 movs r3, #0 + 804693a: 9300 str r3, [sp, #0] + 804693c: 23ff movs r3, #255 ; 0xff + 804693e: 2100 movs r1, #0 + 8046940: 69f8 ldr r0, [r7, #28] + 8046942: f000 f9cd bl 8046ce0 } pbuf_free(q); - 8046906: 69f8 ldr r0, [r7, #28] - 8046908: f7f7 ff92 bl 803e830 - 804690c: e000 b.n 8046910 + 8046946: 69f8 ldr r0, [r7, #28] + 8046948: f7f7 ff92 bl 803e870 + 804694c: e000 b.n 8046950 return; - 804690e: bf00 nop + 804694e: bf00 nop } - 8046910: 3720 adds r7, #32 - 8046912: 46bd mov sp, r7 - 8046914: bd80 pop {r7, pc} - 8046916: bf00 nop - 8046918: 0804c6f8 .word 0x0804c6f8 - 804691c: 0804c7c4 .word 0x0804c7c4 - 8046920: 0804c768 .word 0x0804c768 + 8046950: 3720 adds r7, #32 + 8046952: 46bd mov sp, r7 + 8046954: bd80 pop {r7, pc} + 8046956: bf00 nop + 8046958: 0804c738 .word 0x0804c738 + 804695c: 0804c804 .word 0x0804c804 + 8046960: 0804c7a8 .word 0x0804c7a8 -08046924 : +08046964 : * @param dest the destination IP address for which to find the route * @return the netif on which to send to reach dest */ struct netif * ip4_route(const ip4_addr_t *dest) { - 8046924: b480 push {r7} - 8046926: b085 sub sp, #20 - 8046928: af00 add r7, sp, #0 - 804692a: 6078 str r0, [r7, #4] + 8046964: b480 push {r7} + 8046966: b085 sub sp, #20 + 8046968: af00 add r7, sp, #0 + 804696a: 6078 str r0, [r7, #4] /* bug #54569: in case LWIP_SINGLE_NETIF=1 and LWIP_DEBUGF() disabled, the following loop is optimized away */ LWIP_UNUSED_ARG(dest); /* iterate through netifs */ NETIF_FOREACH(netif) { - 804692c: 4b33 ldr r3, [pc, #204] ; (80469fc ) - 804692e: 681b ldr r3, [r3, #0] - 8046930: 60fb str r3, [r7, #12] - 8046932: e036 b.n 80469a2 + 804696c: 4b33 ldr r3, [pc, #204] ; (8046a3c ) + 804696e: 681b ldr r3, [r3, #0] + 8046970: 60fb str r3, [r7, #12] + 8046972: e036 b.n 80469e2 /* is the netif up, does it have a link and a valid address? */ if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif))) { - 8046934: 68fb ldr r3, [r7, #12] - 8046936: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 804693a: f003 0301 and.w r3, r3, #1 - 804693e: b2db uxtb r3, r3 - 8046940: 2b00 cmp r3, #0 - 8046942: d02b beq.n 804699c - 8046944: 68fb ldr r3, [r7, #12] - 8046946: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 804694a: 089b lsrs r3, r3, #2 - 804694c: f003 0301 and.w r3, r3, #1 - 8046950: b2db uxtb r3, r3 - 8046952: 2b00 cmp r3, #0 - 8046954: d022 beq.n 804699c - 8046956: 68fb ldr r3, [r7, #12] - 8046958: 3304 adds r3, #4 - 804695a: 681b ldr r3, [r3, #0] - 804695c: 2b00 cmp r3, #0 - 804695e: d01d beq.n 804699c + 8046974: 68fb ldr r3, [r7, #12] + 8046976: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 804697a: f003 0301 and.w r3, r3, #1 + 804697e: b2db uxtb r3, r3 + 8046980: 2b00 cmp r3, #0 + 8046982: d02b beq.n 80469dc + 8046984: 68fb ldr r3, [r7, #12] + 8046986: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 804698a: 089b lsrs r3, r3, #2 + 804698c: f003 0301 and.w r3, r3, #1 + 8046990: b2db uxtb r3, r3 + 8046992: 2b00 cmp r3, #0 + 8046994: d022 beq.n 80469dc + 8046996: 68fb ldr r3, [r7, #12] + 8046998: 3304 adds r3, #4 + 804699a: 681b ldr r3, [r3, #0] + 804699c: 2b00 cmp r3, #0 + 804699e: d01d beq.n 80469dc /* network mask matches? */ if (ip4_addr_netcmp(dest, netif_ip4_addr(netif), netif_ip4_netmask(netif))) { - 8046960: 687b ldr r3, [r7, #4] - 8046962: 681a ldr r2, [r3, #0] - 8046964: 68fb ldr r3, [r7, #12] - 8046966: 3304 adds r3, #4 - 8046968: 681b ldr r3, [r3, #0] - 804696a: 405a eors r2, r3 - 804696c: 68fb ldr r3, [r7, #12] - 804696e: 3308 adds r3, #8 - 8046970: 681b ldr r3, [r3, #0] - 8046972: 4013 ands r3, r2 - 8046974: 2b00 cmp r3, #0 - 8046976: d101 bne.n 804697c + 80469a0: 687b ldr r3, [r7, #4] + 80469a2: 681a ldr r2, [r3, #0] + 80469a4: 68fb ldr r3, [r7, #12] + 80469a6: 3304 adds r3, #4 + 80469a8: 681b ldr r3, [r3, #0] + 80469aa: 405a eors r2, r3 + 80469ac: 68fb ldr r3, [r7, #12] + 80469ae: 3308 adds r3, #8 + 80469b0: 681b ldr r3, [r3, #0] + 80469b2: 4013 ands r3, r2 + 80469b4: 2b00 cmp r3, #0 + 80469b6: d101 bne.n 80469bc /* return netif on which to forward IP packet */ return netif; - 8046978: 68fb ldr r3, [r7, #12] - 804697a: e038 b.n 80469ee + 80469b8: 68fb ldr r3, [r7, #12] + 80469ba: e038 b.n 8046a2e } /* gateway matches on a non broadcast interface? (i.e. peer in a point to point interface) */ if (((netif->flags & NETIF_FLAG_BROADCAST) == 0) && ip4_addr_cmp(dest, netif_ip4_gw(netif))) { - 804697c: 68fb ldr r3, [r7, #12] - 804697e: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8046982: f003 0302 and.w r3, r3, #2 - 8046986: 2b00 cmp r3, #0 - 8046988: d108 bne.n 804699c - 804698a: 687b ldr r3, [r7, #4] - 804698c: 681a ldr r2, [r3, #0] - 804698e: 68fb ldr r3, [r7, #12] - 8046990: 330c adds r3, #12 - 8046992: 681b ldr r3, [r3, #0] - 8046994: 429a cmp r2, r3 - 8046996: d101 bne.n 804699c + 80469bc: 68fb ldr r3, [r7, #12] + 80469be: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 80469c2: f003 0302 and.w r3, r3, #2 + 80469c6: 2b00 cmp r3, #0 + 80469c8: d108 bne.n 80469dc + 80469ca: 687b ldr r3, [r7, #4] + 80469cc: 681a ldr r2, [r3, #0] + 80469ce: 68fb ldr r3, [r7, #12] + 80469d0: 330c adds r3, #12 + 80469d2: 681b ldr r3, [r3, #0] + 80469d4: 429a cmp r2, r3 + 80469d6: d101 bne.n 80469dc /* return netif on which to forward IP packet */ return netif; - 8046998: 68fb ldr r3, [r7, #12] - 804699a: e028 b.n 80469ee + 80469d8: 68fb ldr r3, [r7, #12] + 80469da: e028 b.n 8046a2e NETIF_FOREACH(netif) { - 804699c: 68fb ldr r3, [r7, #12] - 804699e: 681b ldr r3, [r3, #0] - 80469a0: 60fb str r3, [r7, #12] - 80469a2: 68fb ldr r3, [r7, #12] - 80469a4: 2b00 cmp r3, #0 - 80469a6: d1c5 bne.n 8046934 + 80469dc: 68fb ldr r3, [r7, #12] + 80469de: 681b ldr r3, [r3, #0] + 80469e0: 60fb str r3, [r7, #12] + 80469e2: 68fb ldr r3, [r7, #12] + 80469e4: 2b00 cmp r3, #0 + 80469e6: d1c5 bne.n 8046974 return netif; } #endif #endif /* !LWIP_SINGLE_NETIF */ if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) || - 80469a8: 4b15 ldr r3, [pc, #84] ; (8046a00 ) - 80469aa: 681b ldr r3, [r3, #0] - 80469ac: 2b00 cmp r3, #0 - 80469ae: d01a beq.n 80469e6 - 80469b0: 4b13 ldr r3, [pc, #76] ; (8046a00 ) - 80469b2: 681b ldr r3, [r3, #0] - 80469b4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 80469b8: f003 0301 and.w r3, r3, #1 - 80469bc: 2b00 cmp r3, #0 - 80469be: d012 beq.n 80469e6 - 80469c0: 4b0f ldr r3, [pc, #60] ; (8046a00 ) - 80469c2: 681b ldr r3, [r3, #0] - 80469c4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 80469c8: f003 0304 and.w r3, r3, #4 - 80469cc: 2b00 cmp r3, #0 - 80469ce: d00a beq.n 80469e6 + 80469e8: 4b15 ldr r3, [pc, #84] ; (8046a40 ) + 80469ea: 681b ldr r3, [r3, #0] + 80469ec: 2b00 cmp r3, #0 + 80469ee: d01a beq.n 8046a26 + 80469f0: 4b13 ldr r3, [pc, #76] ; (8046a40 ) + 80469f2: 681b ldr r3, [r3, #0] + 80469f4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 80469f8: f003 0301 and.w r3, r3, #1 + 80469fc: 2b00 cmp r3, #0 + 80469fe: d012 beq.n 8046a26 + 8046a00: 4b0f ldr r3, [pc, #60] ; (8046a40 ) + 8046a02: 681b ldr r3, [r3, #0] + 8046a04: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8046a08: f003 0304 and.w r3, r3, #4 + 8046a0c: 2b00 cmp r3, #0 + 8046a0e: d00a beq.n 8046a26 ip4_addr_isany_val(*netif_ip4_addr(netif_default)) || ip4_addr_isloopback(dest)) { - 80469d0: 4b0b ldr r3, [pc, #44] ; (8046a00 ) - 80469d2: 681b ldr r3, [r3, #0] - 80469d4: 3304 adds r3, #4 - 80469d6: 681b ldr r3, [r3, #0] + 8046a10: 4b0b ldr r3, [pc, #44] ; (8046a40 ) + 8046a12: 681b ldr r3, [r3, #0] + 8046a14: 3304 adds r3, #4 + 8046a16: 681b ldr r3, [r3, #0] if ((netif_default == NULL) || !netif_is_up(netif_default) || !netif_is_link_up(netif_default) || - 80469d8: 2b00 cmp r3, #0 - 80469da: d004 beq.n 80469e6 + 8046a18: 2b00 cmp r3, #0 + 8046a1a: d004 beq.n 8046a26 ip4_addr_isany_val(*netif_ip4_addr(netif_default)) || ip4_addr_isloopback(dest)) { - 80469dc: 687b ldr r3, [r7, #4] - 80469de: 681b ldr r3, [r3, #0] - 80469e0: b2db uxtb r3, r3 - 80469e2: 2b7f cmp r3, #127 ; 0x7f - 80469e4: d101 bne.n 80469ea + 8046a1c: 687b ldr r3, [r7, #4] + 8046a1e: 681b ldr r3, [r3, #0] + 8046a20: b2db uxtb r3, r3 + 8046a22: 2b7f cmp r3, #127 ; 0x7f + 8046a24: d101 bne.n 8046a2a If this is not good enough for you, use LWIP_HOOK_IP4_ROUTE() */ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_route: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); IP_STATS_INC(ip.rterr); MIB2_STATS_INC(mib2.ipoutnoroutes); return NULL; - 80469e6: 2300 movs r3, #0 - 80469e8: e001 b.n 80469ee + 8046a26: 2300 movs r3, #0 + 8046a28: e001 b.n 8046a2e } return netif_default; - 80469ea: 4b05 ldr r3, [pc, #20] ; (8046a00 ) - 80469ec: 681b ldr r3, [r3, #0] -} - 80469ee: 4618 mov r0, r3 - 80469f0: 3714 adds r7, #20 - 80469f2: 46bd mov sp, r7 - 80469f4: f85d 7b04 ldr.w r7, [sp], #4 - 80469f8: 4770 bx lr - 80469fa: bf00 nop - 80469fc: 2400eadc .word 0x2400eadc - 8046a00: 2400eae0 .word 0x2400eae0 - -08046a04 : + 8046a2a: 4b05 ldr r3, [pc, #20] ; (8046a40 ) + 8046a2c: 681b ldr r3, [r3, #0] +} + 8046a2e: 4618 mov r0, r3 + 8046a30: 3714 adds r7, #20 + 8046a32: 46bd mov sp, r7 + 8046a34: f85d 7b04 ldr.w r7, [sp], #4 + 8046a38: 4770 bx lr + 8046a3a: bf00 nop + 8046a3c: 2400eadc .word 0x2400eadc + 8046a40: 2400eae0 .word 0x2400eae0 + +08046a44 : #endif /* IP_FORWARD */ /** Return true if the current input packet should be accepted on this netif */ static int ip4_input_accept(struct netif *netif) { - 8046a04: b580 push {r7, lr} - 8046a06: b082 sub sp, #8 - 8046a08: af00 add r7, sp, #0 - 8046a0a: 6078 str r0, [r7, #4] + 8046a44: b580 push {r7, lr} + 8046a46: b082 sub sp, #8 + 8046a48: af00 add r7, sp, #0 + 8046a4a: 6078 str r0, [r7, #4] ip4_addr_get_u32(ip4_current_dest_addr()) & ip4_addr_get_u32(netif_ip4_netmask(netif)), ip4_addr_get_u32(netif_ip4_addr(netif)) & ip4_addr_get_u32(netif_ip4_netmask(netif)), ip4_addr_get_u32(ip4_current_dest_addr()) & ~ip4_addr_get_u32(netif_ip4_netmask(netif)))); /* interface is up and configured? */ if ((netif_is_up(netif)) && (!ip4_addr_isany_val(*netif_ip4_addr(netif)))) { - 8046a0c: 687b ldr r3, [r7, #4] - 8046a0e: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8046a12: f003 0301 and.w r3, r3, #1 - 8046a16: b2db uxtb r3, r3 - 8046a18: 2b00 cmp r3, #0 - 8046a1a: d016 beq.n 8046a4a - 8046a1c: 687b ldr r3, [r7, #4] - 8046a1e: 3304 adds r3, #4 - 8046a20: 681b ldr r3, [r3, #0] - 8046a22: 2b00 cmp r3, #0 - 8046a24: d011 beq.n 8046a4a + 8046a4c: 687b ldr r3, [r7, #4] + 8046a4e: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8046a52: f003 0301 and.w r3, r3, #1 + 8046a56: b2db uxtb r3, r3 + 8046a58: 2b00 cmp r3, #0 + 8046a5a: d016 beq.n 8046a8a + 8046a5c: 687b ldr r3, [r7, #4] + 8046a5e: 3304 adds r3, #4 + 8046a60: 681b ldr r3, [r3, #0] + 8046a62: 2b00 cmp r3, #0 + 8046a64: d011 beq.n 8046a8a /* unicast to this interface address? */ if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) || - 8046a26: 4b0b ldr r3, [pc, #44] ; (8046a54 ) - 8046a28: 695a ldr r2, [r3, #20] - 8046a2a: 687b ldr r3, [r7, #4] - 8046a2c: 3304 adds r3, #4 - 8046a2e: 681b ldr r3, [r3, #0] - 8046a30: 429a cmp r2, r3 - 8046a32: d008 beq.n 8046a46 + 8046a66: 4b0b ldr r3, [pc, #44] ; (8046a94 ) + 8046a68: 695a ldr r2, [r3, #20] + 8046a6a: 687b ldr r3, [r7, #4] + 8046a6c: 3304 adds r3, #4 + 8046a6e: 681b ldr r3, [r3, #0] + 8046a70: 429a cmp r2, r3 + 8046a72: d008 beq.n 8046a86 /* or broadcast on this interface network address? */ ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) - 8046a34: 4b07 ldr r3, [pc, #28] ; (8046a54 ) - 8046a36: 695b ldr r3, [r3, #20] - 8046a38: 6879 ldr r1, [r7, #4] - 8046a3a: 4618 mov r0, r3 - 8046a3c: f000 fa08 bl 8046e50 - 8046a40: 4603 mov r3, r0 + 8046a74: 4b07 ldr r3, [pc, #28] ; (8046a94 ) + 8046a76: 695b ldr r3, [r3, #20] + 8046a78: 6879 ldr r1, [r7, #4] + 8046a7a: 4618 mov r0, r3 + 8046a7c: f000 fa08 bl 8046e90 + 8046a80: 4603 mov r3, r0 if (ip4_addr_cmp(ip4_current_dest_addr(), netif_ip4_addr(netif)) || - 8046a42: 2b00 cmp r3, #0 - 8046a44: d001 beq.n 8046a4a + 8046a82: 2b00 cmp r3, #0 + 8046a84: d001 beq.n 8046a8a #endif /* LWIP_NETIF_LOOPBACK && !LWIP_HAVE_LOOPIF */ ) { LWIP_DEBUGF(IP_DEBUG, ("ip4_input: packet accepted on interface %c%c\n", netif->name[0], netif->name[1])); /* accept on this netif */ return 1; - 8046a46: 2301 movs r3, #1 - 8046a48: e000 b.n 8046a4c + 8046a86: 2301 movs r3, #1 + 8046a88: e000 b.n 8046a8c /* accept on this netif */ return 1; } #endif /* LWIP_AUTOIP */ } return 0; - 8046a4a: 2300 movs r3, #0 + 8046a8a: 2300 movs r3, #0 } - 8046a4c: 4618 mov r0, r3 - 8046a4e: 3708 adds r7, #8 - 8046a50: 46bd mov sp, r7 - 8046a52: bd80 pop {r7, pc} - 8046a54: 2400bb4c .word 0x2400bb4c + 8046a8c: 4618 mov r0, r3 + 8046a8e: 3708 adds r7, #8 + 8046a90: 46bd mov sp, r7 + 8046a92: bd80 pop {r7, pc} + 8046a94: 2400bb4c .word 0x2400bb4c -08046a58 : +08046a98 : * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't * processed, but currently always returns ERR_OK) */ err_t ip4_input(struct pbuf *p, struct netif *inp) { - 8046a58: b580 push {r7, lr} - 8046a5a: b086 sub sp, #24 - 8046a5c: af00 add r7, sp, #0 - 8046a5e: 6078 str r0, [r7, #4] - 8046a60: 6039 str r1, [r7, #0] + 8046a98: b580 push {r7, lr} + 8046a9a: b086 sub sp, #24 + 8046a9c: af00 add r7, sp, #0 + 8046a9e: 6078 str r0, [r7, #4] + 8046aa0: 6039 str r1, [r7, #0] IP_STATS_INC(ip.recv); MIB2_STATS_INC(mib2.ipinreceives); /* identify the IP header */ iphdr = (struct ip_hdr *)p->payload; - 8046a62: 687b ldr r3, [r7, #4] - 8046a64: 685b ldr r3, [r3, #4] - 8046a66: 617b str r3, [r7, #20] + 8046aa2: 687b ldr r3, [r7, #4] + 8046aa4: 685b ldr r3, [r3, #4] + 8046aa6: 617b str r3, [r7, #20] if (IPH_V(iphdr) != 4) { - 8046a68: 697b ldr r3, [r7, #20] - 8046a6a: 781b ldrb r3, [r3, #0] - 8046a6c: 091b lsrs r3, r3, #4 - 8046a6e: b2db uxtb r3, r3 - 8046a70: 2b04 cmp r3, #4 - 8046a72: d004 beq.n 8046a7e + 8046aa8: 697b ldr r3, [r7, #20] + 8046aaa: 781b ldrb r3, [r3, #0] + 8046aac: 091b lsrs r3, r3, #4 + 8046aae: b2db uxtb r3, r3 + 8046ab0: 2b04 cmp r3, #4 + 8046ab2: d004 beq.n 8046abe LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", (u16_t)IPH_V(iphdr))); ip4_debug_print(p); pbuf_free(p); - 8046a74: 6878 ldr r0, [r7, #4] - 8046a76: f7f7 fedb bl 803e830 + 8046ab4: 6878 ldr r0, [r7, #4] + 8046ab6: f7f7 fedb bl 803e870 IP_STATS_INC(ip.err); IP_STATS_INC(ip.drop); MIB2_STATS_INC(mib2.ipinhdrerrors); return ERR_OK; - 8046a7a: 2300 movs r3, #0 - 8046a7c: e107 b.n 8046c8e + 8046aba: 2300 movs r3, #0 + 8046abc: e107 b.n 8046cce return ERR_OK; } #endif /* obtain IP header length in bytes */ iphdr_hlen = IPH_HL_BYTES(iphdr); - 8046a7e: 697b ldr r3, [r7, #20] - 8046a80: 781b ldrb r3, [r3, #0] - 8046a82: f003 030f and.w r3, r3, #15 - 8046a86: b2db uxtb r3, r3 - 8046a88: 009b lsls r3, r3, #2 - 8046a8a: b2db uxtb r3, r3 - 8046a8c: 81fb strh r3, [r7, #14] + 8046abe: 697b ldr r3, [r7, #20] + 8046ac0: 781b ldrb r3, [r3, #0] + 8046ac2: f003 030f and.w r3, r3, #15 + 8046ac6: b2db uxtb r3, r3 + 8046ac8: 009b lsls r3, r3, #2 + 8046aca: b2db uxtb r3, r3 + 8046acc: 81fb strh r3, [r7, #14] /* obtain ip length in bytes */ iphdr_len = lwip_ntohs(IPH_LEN(iphdr)); - 8046a8e: 697b ldr r3, [r7, #20] - 8046a90: 885b ldrh r3, [r3, #2] - 8046a92: b29b uxth r3, r3 - 8046a94: 4618 mov r0, r3 - 8046a96: f7f6 fa99 bl 803cfcc - 8046a9a: 4603 mov r3, r0 - 8046a9c: 81bb strh r3, [r7, #12] + 8046ace: 697b ldr r3, [r7, #20] + 8046ad0: 885b ldrh r3, [r3, #2] + 8046ad2: b29b uxth r3, r3 + 8046ad4: 4618 mov r0, r3 + 8046ad6: f7f6 fa99 bl 803d00c + 8046ada: 4603 mov r3, r0 + 8046adc: 81bb strh r3, [r7, #12] /* Trim pbuf. This is especially required for packets < 60 bytes. */ if (iphdr_len < p->tot_len) { - 8046a9e: 687b ldr r3, [r7, #4] - 8046aa0: 891b ldrh r3, [r3, #8] - 8046aa2: 89ba ldrh r2, [r7, #12] - 8046aa4: 429a cmp r2, r3 - 8046aa6: d204 bcs.n 8046ab2 + 8046ade: 687b ldr r3, [r7, #4] + 8046ae0: 891b ldrh r3, [r3, #8] + 8046ae2: 89ba ldrh r2, [r7, #12] + 8046ae4: 429a cmp r2, r3 + 8046ae6: d204 bcs.n 8046af2 pbuf_realloc(p, iphdr_len); - 8046aa8: 89bb ldrh r3, [r7, #12] - 8046aaa: 4619 mov r1, r3 - 8046aac: 6878 ldr r0, [r7, #4] - 8046aae: f7f7 fd39 bl 803e524 + 8046ae8: 89bb ldrh r3, [r7, #12] + 8046aea: 4619 mov r1, r3 + 8046aec: 6878 ldr r0, [r7, #4] + 8046aee: f7f7 fd39 bl 803e564 } /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len) || (iphdr_hlen < IP_HLEN)) { - 8046ab2: 687b ldr r3, [r7, #4] - 8046ab4: 895b ldrh r3, [r3, #10] - 8046ab6: 89fa ldrh r2, [r7, #14] - 8046ab8: 429a cmp r2, r3 - 8046aba: d807 bhi.n 8046acc - 8046abc: 687b ldr r3, [r7, #4] - 8046abe: 891b ldrh r3, [r3, #8] - 8046ac0: 89ba ldrh r2, [r7, #12] - 8046ac2: 429a cmp r2, r3 - 8046ac4: d802 bhi.n 8046acc - 8046ac6: 89fb ldrh r3, [r7, #14] - 8046ac8: 2b13 cmp r3, #19 - 8046aca: d804 bhi.n 8046ad6 + 8046af2: 687b ldr r3, [r7, #4] + 8046af4: 895b ldrh r3, [r3, #10] + 8046af6: 89fa ldrh r2, [r7, #14] + 8046af8: 429a cmp r2, r3 + 8046afa: d807 bhi.n 8046b0c + 8046afc: 687b ldr r3, [r7, #4] + 8046afe: 891b ldrh r3, [r3, #8] + 8046b00: 89ba ldrh r2, [r7, #12] + 8046b02: 429a cmp r2, r3 + 8046b04: d802 bhi.n 8046b0c + 8046b06: 89fb ldrh r3, [r7, #14] + 8046b08: 2b13 cmp r3, #19 + 8046b0a: d804 bhi.n 8046b16 LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", iphdr_len, p->tot_len)); } /* free (drop) packet pbufs */ pbuf_free(p); - 8046acc: 6878 ldr r0, [r7, #4] - 8046ace: f7f7 feaf bl 803e830 + 8046b0c: 6878 ldr r0, [r7, #4] + 8046b0e: f7f7 feaf bl 803e870 IP_STATS_INC(ip.lenerr); IP_STATS_INC(ip.drop); MIB2_STATS_INC(mib2.ipindiscards); return ERR_OK; - 8046ad2: 2300 movs r3, #0 - 8046ad4: e0db b.n 8046c8e + 8046b12: 2300 movs r3, #0 + 8046b14: e0db b.n 8046cce } } #endif /* copy IP addresses to aligned ip_addr_t */ ip_addr_copy_from_ip4(ip_data.current_iphdr_dest, iphdr->dest); - 8046ad6: 697b ldr r3, [r7, #20] - 8046ad8: 691b ldr r3, [r3, #16] - 8046ada: 4a6f ldr r2, [pc, #444] ; (8046c98 ) - 8046adc: 6153 str r3, [r2, #20] + 8046b16: 697b ldr r3, [r7, #20] + 8046b18: 691b ldr r3, [r3, #16] + 8046b1a: 4a6f ldr r2, [pc, #444] ; (8046cd8 ) + 8046b1c: 6153 str r3, [r2, #20] ip_addr_copy_from_ip4(ip_data.current_iphdr_src, iphdr->src); - 8046ade: 697b ldr r3, [r7, #20] - 8046ae0: 68db ldr r3, [r3, #12] - 8046ae2: 4a6d ldr r2, [pc, #436] ; (8046c98 ) - 8046ae4: 6113 str r3, [r2, #16] + 8046b1e: 697b ldr r3, [r7, #20] + 8046b20: 68db ldr r3, [r3, #12] + 8046b22: 4a6d ldr r2, [pc, #436] ; (8046cd8 ) + 8046b24: 6113 str r3, [r2, #16] /* match packet against an interface, i.e. is this packet for us? */ if (ip4_addr_ismulticast(ip4_current_dest_addr())) { - 8046ae6: 4b6c ldr r3, [pc, #432] ; (8046c98 ) - 8046ae8: 695b ldr r3, [r3, #20] - 8046aea: f003 03f0 and.w r3, r3, #240 ; 0xf0 - 8046aee: 2be0 cmp r3, #224 ; 0xe0 - 8046af0: d112 bne.n 8046b18 + 8046b26: 4b6c ldr r3, [pc, #432] ; (8046cd8 ) + 8046b28: 695b ldr r3, [r3, #20] + 8046b2a: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8046b2e: 2be0 cmp r3, #224 ; 0xe0 + 8046b30: d112 bne.n 8046b58 netif = inp; } else { netif = NULL; } #else /* LWIP_IGMP */ if ((netif_is_up(inp)) && (!ip4_addr_isany_val(*netif_ip4_addr(inp)))) { - 8046af2: 683b ldr r3, [r7, #0] - 8046af4: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8046af8: f003 0301 and.w r3, r3, #1 - 8046afc: b2db uxtb r3, r3 - 8046afe: 2b00 cmp r3, #0 - 8046b00: d007 beq.n 8046b12 - 8046b02: 683b ldr r3, [r7, #0] - 8046b04: 3304 adds r3, #4 - 8046b06: 681b ldr r3, [r3, #0] - 8046b08: 2b00 cmp r3, #0 - 8046b0a: d002 beq.n 8046b12 + 8046b32: 683b ldr r3, [r7, #0] + 8046b34: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8046b38: f003 0301 and.w r3, r3, #1 + 8046b3c: b2db uxtb r3, r3 + 8046b3e: 2b00 cmp r3, #0 + 8046b40: d007 beq.n 8046b52 + 8046b42: 683b ldr r3, [r7, #0] + 8046b44: 3304 adds r3, #4 + 8046b46: 681b ldr r3, [r3, #0] + 8046b48: 2b00 cmp r3, #0 + 8046b4a: d002 beq.n 8046b52 netif = inp; - 8046b0c: 683b ldr r3, [r7, #0] - 8046b0e: 613b str r3, [r7, #16] - 8046b10: e02a b.n 8046b68 + 8046b4c: 683b ldr r3, [r7, #0] + 8046b4e: 613b str r3, [r7, #16] + 8046b50: e02a b.n 8046ba8 } else { netif = NULL; - 8046b12: 2300 movs r3, #0 - 8046b14: 613b str r3, [r7, #16] - 8046b16: e027 b.n 8046b68 + 8046b52: 2300 movs r3, #0 + 8046b54: 613b str r3, [r7, #16] + 8046b56: e027 b.n 8046ba8 } #endif /* LWIP_IGMP */ } else { /* start trying with inp. if that's not acceptable, start walking the list of configured netifs. */ if (ip4_input_accept(inp)) { - 8046b18: 6838 ldr r0, [r7, #0] - 8046b1a: f7ff ff73 bl 8046a04 - 8046b1e: 4603 mov r3, r0 - 8046b20: 2b00 cmp r3, #0 - 8046b22: d002 beq.n 8046b2a + 8046b58: 6838 ldr r0, [r7, #0] + 8046b5a: f7ff ff73 bl 8046a44 + 8046b5e: 4603 mov r3, r0 + 8046b60: 2b00 cmp r3, #0 + 8046b62: d002 beq.n 8046b6a netif = inp; - 8046b24: 683b ldr r3, [r7, #0] - 8046b26: 613b str r3, [r7, #16] - 8046b28: e01e b.n 8046b68 + 8046b64: 683b ldr r3, [r7, #0] + 8046b66: 613b str r3, [r7, #16] + 8046b68: e01e b.n 8046ba8 } else { netif = NULL; - 8046b2a: 2300 movs r3, #0 - 8046b2c: 613b str r3, [r7, #16] + 8046b6a: 2300 movs r3, #0 + 8046b6c: 613b str r3, [r7, #16] #if !LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF /* Packets sent to the loopback address must not be accepted on an * interface that does not have the loopback address assigned to it, * unless a non-loopback interface is used for loopback traffic. */ if (!ip4_addr_isloopback(ip4_current_dest_addr())) - 8046b2e: 4b5a ldr r3, [pc, #360] ; (8046c98 ) - 8046b30: 695b ldr r3, [r3, #20] - 8046b32: b2db uxtb r3, r3 - 8046b34: 2b7f cmp r3, #127 ; 0x7f - 8046b36: d017 beq.n 8046b68 + 8046b6e: 4b5a ldr r3, [pc, #360] ; (8046cd8 ) + 8046b70: 695b ldr r3, [r3, #20] + 8046b72: b2db uxtb r3, r3 + 8046b74: 2b7f cmp r3, #127 ; 0x7f + 8046b76: d017 beq.n 8046ba8 #endif /* !LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF */ { #if !LWIP_SINGLE_NETIF NETIF_FOREACH(netif) { - 8046b38: 4b58 ldr r3, [pc, #352] ; (8046c9c ) - 8046b3a: 681b ldr r3, [r3, #0] - 8046b3c: 613b str r3, [r7, #16] - 8046b3e: e00e b.n 8046b5e + 8046b78: 4b58 ldr r3, [pc, #352] ; (8046cdc ) + 8046b7a: 681b ldr r3, [r3, #0] + 8046b7c: 613b str r3, [r7, #16] + 8046b7e: e00e b.n 8046b9e if (netif == inp) { - 8046b40: 693a ldr r2, [r7, #16] - 8046b42: 683b ldr r3, [r7, #0] - 8046b44: 429a cmp r2, r3 - 8046b46: d006 beq.n 8046b56 + 8046b80: 693a ldr r2, [r7, #16] + 8046b82: 683b ldr r3, [r7, #0] + 8046b84: 429a cmp r2, r3 + 8046b86: d006 beq.n 8046b96 /* we checked that before already */ continue; } if (ip4_input_accept(netif)) { - 8046b48: 6938 ldr r0, [r7, #16] - 8046b4a: f7ff ff5b bl 8046a04 - 8046b4e: 4603 mov r3, r0 - 8046b50: 2b00 cmp r3, #0 - 8046b52: d108 bne.n 8046b66 - 8046b54: e000 b.n 8046b58 + 8046b88: 6938 ldr r0, [r7, #16] + 8046b8a: f7ff ff5b bl 8046a44 + 8046b8e: 4603 mov r3, r0 + 8046b90: 2b00 cmp r3, #0 + 8046b92: d108 bne.n 8046ba6 + 8046b94: e000 b.n 8046b98 continue; - 8046b56: bf00 nop + 8046b96: bf00 nop NETIF_FOREACH(netif) { - 8046b58: 693b ldr r3, [r7, #16] - 8046b5a: 681b ldr r3, [r3, #0] - 8046b5c: 613b str r3, [r7, #16] - 8046b5e: 693b ldr r3, [r7, #16] - 8046b60: 2b00 cmp r3, #0 - 8046b62: d1ed bne.n 8046b40 - 8046b64: e000 b.n 8046b68 + 8046b98: 693b ldr r3, [r7, #16] + 8046b9a: 681b ldr r3, [r3, #0] + 8046b9c: 613b str r3, [r7, #16] + 8046b9e: 693b ldr r3, [r7, #16] + 8046ba0: 2b00 cmp r3, #0 + 8046ba2: d1ed bne.n 8046b80 + 8046ba4: e000 b.n 8046ba8 break; - 8046b66: bf00 nop + 8046ba6: bf00 nop && !ip4_addr_isany_val(*ip4_current_src_addr()) #endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ ) #endif /* LWIP_IGMP || IP_ACCEPT_LINK_LAYER_ADDRESSING */ { if ((ip4_addr_isbroadcast(ip4_current_src_addr(), inp)) || - 8046b68: 4b4b ldr r3, [pc, #300] ; (8046c98 ) - 8046b6a: 691b ldr r3, [r3, #16] - 8046b6c: 6839 ldr r1, [r7, #0] - 8046b6e: 4618 mov r0, r3 - 8046b70: f000 f96e bl 8046e50 - 8046b74: 4603 mov r3, r0 - 8046b76: 2b00 cmp r3, #0 - 8046b78: d105 bne.n 8046b86 + 8046ba8: 4b4b ldr r3, [pc, #300] ; (8046cd8 ) + 8046baa: 691b ldr r3, [r3, #16] + 8046bac: 6839 ldr r1, [r7, #0] + 8046bae: 4618 mov r0, r3 + 8046bb0: f000 f96e bl 8046e90 + 8046bb4: 4603 mov r3, r0 + 8046bb6: 2b00 cmp r3, #0 + 8046bb8: d105 bne.n 8046bc6 (ip4_addr_ismulticast(ip4_current_src_addr()))) { - 8046b7a: 4b47 ldr r3, [pc, #284] ; (8046c98 ) - 8046b7c: 691b ldr r3, [r3, #16] - 8046b7e: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8046bba: 4b47 ldr r3, [pc, #284] ; (8046cd8 ) + 8046bbc: 691b ldr r3, [r3, #16] + 8046bbe: f003 03f0 and.w r3, r3, #240 ; 0xf0 if ((ip4_addr_isbroadcast(ip4_current_src_addr(), inp)) || - 8046b82: 2be0 cmp r3, #224 ; 0xe0 - 8046b84: d104 bne.n 8046b90 + 8046bc2: 2be0 cmp r3, #224 ; 0xe0 + 8046bc4: d104 bne.n 8046bd0 /* packet source is not valid */ LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip4_input: packet source is not valid.\n")); /* free (drop) packet pbufs */ pbuf_free(p); - 8046b86: 6878 ldr r0, [r7, #4] - 8046b88: f7f7 fe52 bl 803e830 + 8046bc6: 6878 ldr r0, [r7, #4] + 8046bc8: f7f7 fe52 bl 803e870 IP_STATS_INC(ip.drop); MIB2_STATS_INC(mib2.ipinaddrerrors); MIB2_STATS_INC(mib2.ipindiscards); return ERR_OK; - 8046b8c: 2300 movs r3, #0 - 8046b8e: e07e b.n 8046c8e + 8046bcc: 2300 movs r3, #0 + 8046bce: e07e b.n 8046cce } } /* packet not for us? */ if (netif == NULL) { - 8046b90: 693b ldr r3, [r7, #16] - 8046b92: 2b00 cmp r3, #0 - 8046b94: d104 bne.n 8046ba0 + 8046bd0: 693b ldr r3, [r7, #16] + 8046bd2: 2b00 cmp r3, #0 + 8046bd4: d104 bne.n 8046be0 { IP_STATS_INC(ip.drop); MIB2_STATS_INC(mib2.ipinaddrerrors); MIB2_STATS_INC(mib2.ipindiscards); } pbuf_free(p); - 8046b96: 6878 ldr r0, [r7, #4] - 8046b98: f7f7 fe4a bl 803e830 + 8046bd6: 6878 ldr r0, [r7, #4] + 8046bd8: f7f7 fe4a bl 803e870 return ERR_OK; - 8046b9c: 2300 movs r3, #0 - 8046b9e: e076 b.n 8046c8e + 8046bdc: 2300 movs r3, #0 + 8046bde: e076 b.n 8046cce } /* packet consists of multiple fragments? */ if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) { - 8046ba0: 697b ldr r3, [r7, #20] - 8046ba2: 88db ldrh r3, [r3, #6] - 8046ba4: b29b uxth r3, r3 - 8046ba6: 461a mov r2, r3 - 8046ba8: f64f 733f movw r3, #65343 ; 0xff3f - 8046bac: 4013 ands r3, r2 - 8046bae: 2b00 cmp r3, #0 - 8046bb0: d00b beq.n 8046bca + 8046be0: 697b ldr r3, [r7, #20] + 8046be2: 88db ldrh r3, [r3, #6] + 8046be4: b29b uxth r3, r3 + 8046be6: 461a mov r2, r3 + 8046be8: f64f 733f movw r3, #65343 ; 0xff3f + 8046bec: 4013 ands r3, r2 + 8046bee: 2b00 cmp r3, #0 + 8046bf0: d00b beq.n 8046c0a #if IP_REASSEMBLY /* packet fragment reassembly code present? */ LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip4_reass()\n", lwip_ntohs(IPH_ID(iphdr)), p->tot_len, lwip_ntohs(IPH_LEN(iphdr)), (u16_t)!!(IPH_OFFSET(iphdr) & PP_HTONS(IP_MF)), (u16_t)((lwip_ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK) * 8))); /* reassemble the packet*/ p = ip4_reass(p); - 8046bb2: 6878 ldr r0, [r7, #4] - 8046bb4: f000 fc92 bl 80474dc - 8046bb8: 6078 str r0, [r7, #4] + 8046bf2: 6878 ldr r0, [r7, #4] + 8046bf4: f000 fc92 bl 804751c + 8046bf8: 6078 str r0, [r7, #4] /* packet not fully reassembled yet? */ if (p == NULL) { - 8046bba: 687b ldr r3, [r7, #4] - 8046bbc: 2b00 cmp r3, #0 - 8046bbe: d101 bne.n 8046bc4 + 8046bfa: 687b ldr r3, [r7, #4] + 8046bfc: 2b00 cmp r3, #0 + 8046bfe: d101 bne.n 8046c04 return ERR_OK; - 8046bc0: 2300 movs r3, #0 - 8046bc2: e064 b.n 8046c8e + 8046c00: 2300 movs r3, #0 + 8046c02: e064 b.n 8046cce } iphdr = (const struct ip_hdr *)p->payload; - 8046bc4: 687b ldr r3, [r7, #4] - 8046bc6: 685b ldr r3, [r3, #4] - 8046bc8: 617b str r3, [r7, #20] + 8046c04: 687b ldr r3, [r7, #4] + 8046c06: 685b ldr r3, [r3, #4] + 8046c08: 617b str r3, [r7, #20] /* send to upper layers */ LWIP_DEBUGF(IP_DEBUG, ("ip4_input: \n")); ip4_debug_print(p); LWIP_DEBUGF(IP_DEBUG, ("ip4_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); ip_data.current_netif = netif; - 8046bca: 4a33 ldr r2, [pc, #204] ; (8046c98 ) - 8046bcc: 693b ldr r3, [r7, #16] - 8046bce: 6013 str r3, [r2, #0] + 8046c0a: 4a33 ldr r2, [pc, #204] ; (8046cd8 ) + 8046c0c: 693b ldr r3, [r7, #16] + 8046c0e: 6013 str r3, [r2, #0] ip_data.current_input_netif = inp; - 8046bd0: 4a31 ldr r2, [pc, #196] ; (8046c98 ) - 8046bd2: 683b ldr r3, [r7, #0] - 8046bd4: 6053 str r3, [r2, #4] + 8046c10: 4a31 ldr r2, [pc, #196] ; (8046cd8 ) + 8046c12: 683b ldr r3, [r7, #0] + 8046c14: 6053 str r3, [r2, #4] ip_data.current_ip4_header = iphdr; - 8046bd6: 4a30 ldr r2, [pc, #192] ; (8046c98 ) - 8046bd8: 697b ldr r3, [r7, #20] - 8046bda: 6093 str r3, [r2, #8] + 8046c16: 4a30 ldr r2, [pc, #192] ; (8046cd8 ) + 8046c18: 697b ldr r3, [r7, #20] + 8046c1a: 6093 str r3, [r2, #8] ip_data.current_ip_header_tot_len = IPH_HL_BYTES(iphdr); - 8046bdc: 697b ldr r3, [r7, #20] - 8046bde: 781b ldrb r3, [r3, #0] - 8046be0: f003 030f and.w r3, r3, #15 - 8046be4: b2db uxtb r3, r3 - 8046be6: 009b lsls r3, r3, #2 - 8046be8: b2db uxtb r3, r3 - 8046bea: b29a uxth r2, r3 - 8046bec: 4b2a ldr r3, [pc, #168] ; (8046c98 ) - 8046bee: 819a strh r2, [r3, #12] + 8046c1c: 697b ldr r3, [r7, #20] + 8046c1e: 781b ldrb r3, [r3, #0] + 8046c20: f003 030f and.w r3, r3, #15 + 8046c24: b2db uxtb r3, r3 + 8046c26: 009b lsls r3, r3, #2 + 8046c28: b2db uxtb r3, r3 + 8046c2a: b29a uxth r2, r3 + 8046c2c: 4b2a ldr r3, [pc, #168] ; (8046cd8 ) + 8046c2e: 819a strh r2, [r3, #12] /* raw input did not eat the packet? */ raw_status = raw_input(p, inp); if (raw_status != RAW_INPUT_EATEN) #endif /* LWIP_RAW */ { pbuf_remove_header(p, iphdr_hlen); /* Move to payload, no check necessary. */ - 8046bf0: 89fb ldrh r3, [r7, #14] - 8046bf2: 4619 mov r1, r3 - 8046bf4: 6878 ldr r0, [r7, #4] - 8046bf6: f7f7 fd95 bl 803e724 + 8046c30: 89fb ldrh r3, [r7, #14] + 8046c32: 4619 mov r1, r3 + 8046c34: 6878 ldr r0, [r7, #4] + 8046c36: f7f7 fd95 bl 803e764 switch (IPH_PROTO(iphdr)) { - 8046bfa: 697b ldr r3, [r7, #20] - 8046bfc: 7a5b ldrb r3, [r3, #9] - 8046bfe: 2b11 cmp r3, #17 - 8046c00: d006 beq.n 8046c10 - 8046c02: 2b11 cmp r3, #17 - 8046c04: dc13 bgt.n 8046c2e - 8046c06: 2b01 cmp r3, #1 - 8046c08: d00c beq.n 8046c24 - 8046c0a: 2b06 cmp r3, #6 - 8046c0c: d005 beq.n 8046c1a - 8046c0e: e00e b.n 8046c2e + 8046c3a: 697b ldr r3, [r7, #20] + 8046c3c: 7a5b ldrb r3, [r3, #9] + 8046c3e: 2b11 cmp r3, #17 + 8046c40: d006 beq.n 8046c50 + 8046c42: 2b11 cmp r3, #17 + 8046c44: dc13 bgt.n 8046c6e + 8046c46: 2b01 cmp r3, #1 + 8046c48: d00c beq.n 8046c64 + 8046c4a: 2b06 cmp r3, #6 + 8046c4c: d005 beq.n 8046c5a + 8046c4e: e00e b.n 8046c6e case IP_PROTO_UDP: #if LWIP_UDPLITE case IP_PROTO_UDPLITE: #endif /* LWIP_UDPLITE */ MIB2_STATS_INC(mib2.ipindelivers); udp_input(p, inp); - 8046c10: 6839 ldr r1, [r7, #0] - 8046c12: 6878 ldr r0, [r7, #4] - 8046c14: f7fe f8e8 bl 8044de8 + 8046c50: 6839 ldr r1, [r7, #0] + 8046c52: 6878 ldr r0, [r7, #4] + 8046c54: f7fe f8e8 bl 8044e28 break; - 8046c18: e026 b.n 8046c68 + 8046c58: e026 b.n 8046ca8 #endif /* LWIP_UDP */ #if LWIP_TCP case IP_PROTO_TCP: MIB2_STATS_INC(mib2.ipindelivers); tcp_input(p, inp); - 8046c1a: 6839 ldr r1, [r7, #0] - 8046c1c: 6878 ldr r0, [r7, #4] - 8046c1e: f7f9 fcd1 bl 80405c4 + 8046c5a: 6839 ldr r1, [r7, #0] + 8046c5c: 6878 ldr r0, [r7, #4] + 8046c5e: f7f9 fcd1 bl 8040604 break; - 8046c22: e021 b.n 8046c68 + 8046c62: e021 b.n 8046ca8 #endif /* LWIP_TCP */ #if LWIP_ICMP case IP_PROTO_ICMP: MIB2_STATS_INC(mib2.ipindelivers); icmp_input(p, inp); - 8046c24: 6839 ldr r1, [r7, #0] - 8046c26: 6878 ldr r0, [r7, #4] - 8046c28: f7ff fcc8 bl 80465bc + 8046c64: 6839 ldr r1, [r7, #0] + 8046c66: 6878 ldr r0, [r7, #4] + 8046c68: f7ff fcc8 bl 80465fc break; - 8046c2c: e01c b.n 8046c68 + 8046c6c: e01c b.n 8046ca8 } else #endif /* LWIP_RAW */ { #if LWIP_ICMP /* send ICMP destination protocol unreachable unless is was a broadcast */ if (!ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) && - 8046c2e: 4b1a ldr r3, [pc, #104] ; (8046c98 ) - 8046c30: 695b ldr r3, [r3, #20] - 8046c32: 6939 ldr r1, [r7, #16] - 8046c34: 4618 mov r0, r3 - 8046c36: f000 f90b bl 8046e50 - 8046c3a: 4603 mov r3, r0 - 8046c3c: 2b00 cmp r3, #0 - 8046c3e: d10f bne.n 8046c60 + 8046c6e: 4b1a ldr r3, [pc, #104] ; (8046cd8 ) + 8046c70: 695b ldr r3, [r3, #20] + 8046c72: 6939 ldr r1, [r7, #16] + 8046c74: 4618 mov r0, r3 + 8046c76: f000 f90b bl 8046e90 + 8046c7a: 4603 mov r3, r0 + 8046c7c: 2b00 cmp r3, #0 + 8046c7e: d10f bne.n 8046ca0 !ip4_addr_ismulticast(ip4_current_dest_addr())) { - 8046c40: 4b15 ldr r3, [pc, #84] ; (8046c98 ) - 8046c42: 695b ldr r3, [r3, #20] - 8046c44: f003 03f0 and.w r3, r3, #240 ; 0xf0 + 8046c80: 4b15 ldr r3, [pc, #84] ; (8046cd8 ) + 8046c82: 695b ldr r3, [r3, #20] + 8046c84: f003 03f0 and.w r3, r3, #240 ; 0xf0 if (!ip4_addr_isbroadcast(ip4_current_dest_addr(), netif) && - 8046c48: 2be0 cmp r3, #224 ; 0xe0 - 8046c4a: d009 beq.n 8046c60 + 8046c88: 2be0 cmp r3, #224 ; 0xe0 + 8046c8a: d009 beq.n 8046ca0 pbuf_header_force(p, (s16_t)iphdr_hlen); /* Move to ip header, no check necessary. */ - 8046c4c: f9b7 300e ldrsh.w r3, [r7, #14] - 8046c50: 4619 mov r1, r3 - 8046c52: 6878 ldr r0, [r7, #4] - 8046c54: f7f7 fdd9 bl 803e80a + 8046c8c: f9b7 300e ldrsh.w r3, [r7, #14] + 8046c90: 4619 mov r1, r3 + 8046c92: 6878 ldr r0, [r7, #4] + 8046c94: f7f7 fdd9 bl 803e84a icmp_dest_unreach(p, ICMP_DUR_PROTO); - 8046c58: 2102 movs r1, #2 - 8046c5a: 6878 ldr r0, [r7, #4] - 8046c5c: f7ff fdce bl 80467fc + 8046c98: 2102 movs r1, #2 + 8046c9a: 6878 ldr r0, [r7, #4] + 8046c9c: f7ff fdce bl 804683c IP_STATS_INC(ip.proterr); IP_STATS_INC(ip.drop); MIB2_STATS_INC(mib2.ipinunknownprotos); } pbuf_free(p); - 8046c60: 6878 ldr r0, [r7, #4] - 8046c62: f7f7 fde5 bl 803e830 + 8046ca0: 6878 ldr r0, [r7, #4] + 8046ca2: f7f7 fde5 bl 803e870 break; - 8046c66: bf00 nop + 8046ca6: bf00 nop } } /* @todo: this is not really necessary... */ ip_data.current_netif = NULL; - 8046c68: 4b0b ldr r3, [pc, #44] ; (8046c98 ) - 8046c6a: 2200 movs r2, #0 - 8046c6c: 601a str r2, [r3, #0] + 8046ca8: 4b0b ldr r3, [pc, #44] ; (8046cd8 ) + 8046caa: 2200 movs r2, #0 + 8046cac: 601a str r2, [r3, #0] ip_data.current_input_netif = NULL; - 8046c6e: 4b0a ldr r3, [pc, #40] ; (8046c98 ) - 8046c70: 2200 movs r2, #0 - 8046c72: 605a str r2, [r3, #4] + 8046cae: 4b0a ldr r3, [pc, #40] ; (8046cd8 ) + 8046cb0: 2200 movs r2, #0 + 8046cb2: 605a str r2, [r3, #4] ip_data.current_ip4_header = NULL; - 8046c74: 4b08 ldr r3, [pc, #32] ; (8046c98 ) - 8046c76: 2200 movs r2, #0 - 8046c78: 609a str r2, [r3, #8] + 8046cb4: 4b08 ldr r3, [pc, #32] ; (8046cd8 ) + 8046cb6: 2200 movs r2, #0 + 8046cb8: 609a str r2, [r3, #8] ip_data.current_ip_header_tot_len = 0; - 8046c7a: 4b07 ldr r3, [pc, #28] ; (8046c98 ) - 8046c7c: 2200 movs r2, #0 - 8046c7e: 819a strh r2, [r3, #12] + 8046cba: 4b07 ldr r3, [pc, #28] ; (8046cd8 ) + 8046cbc: 2200 movs r2, #0 + 8046cbe: 819a strh r2, [r3, #12] ip4_addr_set_any(ip4_current_src_addr()); - 8046c80: 4b05 ldr r3, [pc, #20] ; (8046c98 ) - 8046c82: 2200 movs r2, #0 - 8046c84: 611a str r2, [r3, #16] + 8046cc0: 4b05 ldr r3, [pc, #20] ; (8046cd8 ) + 8046cc2: 2200 movs r2, #0 + 8046cc4: 611a str r2, [r3, #16] ip4_addr_set_any(ip4_current_dest_addr()); - 8046c86: 4b04 ldr r3, [pc, #16] ; (8046c98 ) - 8046c88: 2200 movs r2, #0 - 8046c8a: 615a str r2, [r3, #20] + 8046cc6: 4b04 ldr r3, [pc, #16] ; (8046cd8 ) + 8046cc8: 2200 movs r2, #0 + 8046cca: 615a str r2, [r3, #20] return ERR_OK; - 8046c8c: 2300 movs r3, #0 + 8046ccc: 2300 movs r3, #0 } - 8046c8e: 4618 mov r0, r3 - 8046c90: 3718 adds r7, #24 - 8046c92: 46bd mov sp, r7 - 8046c94: bd80 pop {r7, pc} - 8046c96: bf00 nop - 8046c98: 2400bb4c .word 0x2400bb4c - 8046c9c: 2400eadc .word 0x2400eadc + 8046cce: 4618 mov r0, r3 + 8046cd0: 3718 adds r7, #24 + 8046cd2: 46bd mov sp, r7 + 8046cd4: bd80 pop {r7, pc} + 8046cd6: bf00 nop + 8046cd8: 2400bb4c .word 0x2400bb4c + 8046cdc: 2400eadc .word 0x2400eadc -08046ca0 : +08046ce0 : */ err_t ip4_output_if(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif) { - 8046ca0: b580 push {r7, lr} - 8046ca2: b08a sub sp, #40 ; 0x28 - 8046ca4: af04 add r7, sp, #16 - 8046ca6: 60f8 str r0, [r7, #12] - 8046ca8: 60b9 str r1, [r7, #8] - 8046caa: 607a str r2, [r7, #4] - 8046cac: 70fb strb r3, [r7, #3] + 8046ce0: b580 push {r7, lr} + 8046ce2: b08a sub sp, #40 ; 0x28 + 8046ce4: af04 add r7, sp, #16 + 8046ce6: 60f8 str r0, [r7, #12] + 8046ce8: 60b9 str r1, [r7, #8] + 8046cea: 607a str r2, [r7, #4] + 8046cec: 70fb strb r3, [r7, #3] ip4_output_if_opt(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, u16_t optlen) { #endif /* IP_OPTIONS_SEND */ const ip4_addr_t *src_used = src; - 8046cae: 68bb ldr r3, [r7, #8] - 8046cb0: 617b str r3, [r7, #20] + 8046cee: 68bb ldr r3, [r7, #8] + 8046cf0: 617b str r3, [r7, #20] if (dest != LWIP_IP_HDRINCL) { - 8046cb2: 687b ldr r3, [r7, #4] - 8046cb4: 2b00 cmp r3, #0 - 8046cb6: d009 beq.n 8046ccc + 8046cf2: 687b ldr r3, [r7, #4] + 8046cf4: 2b00 cmp r3, #0 + 8046cf6: d009 beq.n 8046d0c if (ip4_addr_isany(src)) { - 8046cb8: 68bb ldr r3, [r7, #8] - 8046cba: 2b00 cmp r3, #0 - 8046cbc: d003 beq.n 8046cc6 - 8046cbe: 68bb ldr r3, [r7, #8] - 8046cc0: 681b ldr r3, [r3, #0] - 8046cc2: 2b00 cmp r3, #0 - 8046cc4: d102 bne.n 8046ccc + 8046cf8: 68bb ldr r3, [r7, #8] + 8046cfa: 2b00 cmp r3, #0 + 8046cfc: d003 beq.n 8046d06 + 8046cfe: 68bb ldr r3, [r7, #8] + 8046d00: 681b ldr r3, [r3, #0] + 8046d02: 2b00 cmp r3, #0 + 8046d04: d102 bne.n 8046d0c src_used = netif_ip4_addr(netif); - 8046cc6: 6abb ldr r3, [r7, #40] ; 0x28 - 8046cc8: 3304 adds r3, #4 - 8046cca: 617b str r3, [r7, #20] + 8046d06: 6abb ldr r3, [r7, #40] ; 0x28 + 8046d08: 3304 adds r3, #4 + 8046d0a: 617b str r3, [r7, #20] #if IP_OPTIONS_SEND return ip4_output_if_opt_src(p, src_used, dest, ttl, tos, proto, netif, ip_options, optlen); #else /* IP_OPTIONS_SEND */ return ip4_output_if_src(p, src_used, dest, ttl, tos, proto, netif); - 8046ccc: 78fa ldrb r2, [r7, #3] - 8046cce: 6abb ldr r3, [r7, #40] ; 0x28 - 8046cd0: 9302 str r3, [sp, #8] - 8046cd2: f897 3024 ldrb.w r3, [r7, #36] ; 0x24 - 8046cd6: 9301 str r3, [sp, #4] - 8046cd8: f897 3020 ldrb.w r3, [r7, #32] - 8046cdc: 9300 str r3, [sp, #0] - 8046cde: 4613 mov r3, r2 - 8046ce0: 687a ldr r2, [r7, #4] - 8046ce2: 6979 ldr r1, [r7, #20] - 8046ce4: 68f8 ldr r0, [r7, #12] - 8046ce6: f000 f805 bl 8046cf4 - 8046cea: 4603 mov r3, r0 + 8046d0c: 78fa ldrb r2, [r7, #3] + 8046d0e: 6abb ldr r3, [r7, #40] ; 0x28 + 8046d10: 9302 str r3, [sp, #8] + 8046d12: f897 3024 ldrb.w r3, [r7, #36] ; 0x24 + 8046d16: 9301 str r3, [sp, #4] + 8046d18: f897 3020 ldrb.w r3, [r7, #32] + 8046d1c: 9300 str r3, [sp, #0] + 8046d1e: 4613 mov r3, r2 + 8046d20: 687a ldr r2, [r7, #4] + 8046d22: 6979 ldr r1, [r7, #20] + 8046d24: 68f8 ldr r0, [r7, #12] + 8046d26: f000 f805 bl 8046d34 + 8046d2a: 4603 mov r3, r0 #endif /* IP_OPTIONS_SEND */ } - 8046cec: 4618 mov r0, r3 - 8046cee: 3718 adds r7, #24 - 8046cf0: 46bd mov sp, r7 - 8046cf2: bd80 pop {r7, pc} + 8046d2c: 4618 mov r0, r3 + 8046d2e: 3718 adds r7, #24 + 8046d30: 46bd mov sp, r7 + 8046d32: bd80 pop {r7, pc} -08046cf4 : +08046d34 : */ err_t ip4_output_if_src(struct pbuf *p, const ip4_addr_t *src, const ip4_addr_t *dest, u8_t ttl, u8_t tos, u8_t proto, struct netif *netif) { - 8046cf4: b580 push {r7, lr} - 8046cf6: b088 sub sp, #32 - 8046cf8: af00 add r7, sp, #0 - 8046cfa: 60f8 str r0, [r7, #12] - 8046cfc: 60b9 str r1, [r7, #8] - 8046cfe: 607a str r2, [r7, #4] - 8046d00: 70fb strb r3, [r7, #3] + 8046d34: b580 push {r7, lr} + 8046d36: b088 sub sp, #32 + 8046d38: af00 add r7, sp, #0 + 8046d3a: 60f8 str r0, [r7, #12] + 8046d3c: 60b9 str r1, [r7, #8] + 8046d3e: 607a str r2, [r7, #4] + 8046d40: 70fb strb r3, [r7, #3] #if CHECKSUM_GEN_IP_INLINE u32_t chk_sum = 0; #endif /* CHECKSUM_GEN_IP_INLINE */ LWIP_ASSERT_CORE_LOCKED(); LWIP_IP_CHECK_PBUF_REF_COUNT_FOR_TX(p); - 8046d02: 68fb ldr r3, [r7, #12] - 8046d04: 7b9b ldrb r3, [r3, #14] - 8046d06: 2b01 cmp r3, #1 - 8046d08: d006 beq.n 8046d18 - 8046d0a: 4b4b ldr r3, [pc, #300] ; (8046e38 ) - 8046d0c: f44f 7255 mov.w r2, #852 ; 0x354 - 8046d10: 494a ldr r1, [pc, #296] ; (8046e3c ) - 8046d12: 484b ldr r0, [pc, #300] ; (8046e40 ) - 8046d14: f001 f946 bl 8047fa4 + 8046d42: 68fb ldr r3, [r7, #12] + 8046d44: 7b9b ldrb r3, [r3, #14] + 8046d46: 2b01 cmp r3, #1 + 8046d48: d006 beq.n 8046d58 + 8046d4a: 4b4b ldr r3, [pc, #300] ; (8046e78 ) + 8046d4c: f44f 7255 mov.w r2, #852 ; 0x354 + 8046d50: 494a ldr r1, [pc, #296] ; (8046e7c ) + 8046d52: 484b ldr r0, [pc, #300] ; (8046e80 ) + 8046d54: f001 f946 bl 8047fe4 MIB2_STATS_INC(mib2.ipoutrequests); /* Should the IP header be generated or is it already included in p? */ if (dest != LWIP_IP_HDRINCL) { - 8046d18: 687b ldr r3, [r7, #4] - 8046d1a: 2b00 cmp r3, #0 - 8046d1c: d060 beq.n 8046de0 + 8046d58: 687b ldr r3, [r7, #4] + 8046d5a: 2b00 cmp r3, #0 + 8046d5c: d060 beq.n 8046e20 u16_t ip_hlen = IP_HLEN; - 8046d1e: 2314 movs r3, #20 - 8046d20: 837b strh r3, [r7, #26] + 8046d5e: 2314 movs r3, #20 + 8046d60: 837b strh r3, [r7, #26] } #endif /* CHECKSUM_GEN_IP_INLINE */ } #endif /* IP_OPTIONS_SEND */ /* generate IP header */ if (pbuf_add_header(p, IP_HLEN)) { - 8046d22: 2114 movs r1, #20 - 8046d24: 68f8 ldr r0, [r7, #12] - 8046d26: f7f7 fced bl 803e704 - 8046d2a: 4603 mov r3, r0 - 8046d2c: 2b00 cmp r3, #0 - 8046d2e: d002 beq.n 8046d36 + 8046d62: 2114 movs r1, #20 + 8046d64: 68f8 ldr r0, [r7, #12] + 8046d66: f7f7 fced bl 803e744 + 8046d6a: 4603 mov r3, r0 + 8046d6c: 2b00 cmp r3, #0 + 8046d6e: d002 beq.n 8046d76 LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_output: not enough room for IP header in pbuf\n")); IP_STATS_INC(ip.err); MIB2_STATS_INC(mib2.ipoutdiscards); return ERR_BUF; - 8046d30: f06f 0301 mvn.w r3, #1 - 8046d34: e07c b.n 8046e30 + 8046d70: f06f 0301 mvn.w r3, #1 + 8046d74: e07c b.n 8046e70 } iphdr = (struct ip_hdr *)p->payload; - 8046d36: 68fb ldr r3, [r7, #12] - 8046d38: 685b ldr r3, [r3, #4] - 8046d3a: 61fb str r3, [r7, #28] + 8046d76: 68fb ldr r3, [r7, #12] + 8046d78: 685b ldr r3, [r3, #4] + 8046d7a: 61fb str r3, [r7, #28] LWIP_ASSERT("check that first pbuf can hold struct ip_hdr", - 8046d3c: 68fb ldr r3, [r7, #12] - 8046d3e: 895b ldrh r3, [r3, #10] - 8046d40: 2b13 cmp r3, #19 - 8046d42: d806 bhi.n 8046d52 - 8046d44: 4b3c ldr r3, [pc, #240] ; (8046e38 ) - 8046d46: f44f 7262 mov.w r2, #904 ; 0x388 - 8046d4a: 493e ldr r1, [pc, #248] ; (8046e44 ) - 8046d4c: 483c ldr r0, [pc, #240] ; (8046e40 ) - 8046d4e: f001 f929 bl 8047fa4 + 8046d7c: 68fb ldr r3, [r7, #12] + 8046d7e: 895b ldrh r3, [r3, #10] + 8046d80: 2b13 cmp r3, #19 + 8046d82: d806 bhi.n 8046d92 + 8046d84: 4b3c ldr r3, [pc, #240] ; (8046e78 ) + 8046d86: f44f 7262 mov.w r2, #904 ; 0x388 + 8046d8a: 493e ldr r1, [pc, #248] ; (8046e84 ) + 8046d8c: 483c ldr r0, [pc, #240] ; (8046e80 ) + 8046d8e: f001 f929 bl 8047fe4 (p->len >= sizeof(struct ip_hdr))); IPH_TTL_SET(iphdr, ttl); - 8046d52: 69fb ldr r3, [r7, #28] - 8046d54: 78fa ldrb r2, [r7, #3] - 8046d56: 721a strb r2, [r3, #8] + 8046d92: 69fb ldr r3, [r7, #28] + 8046d94: 78fa ldrb r2, [r7, #3] + 8046d96: 721a strb r2, [r3, #8] IPH_PROTO_SET(iphdr, proto); - 8046d58: 69fb ldr r3, [r7, #28] - 8046d5a: f897 202c ldrb.w r2, [r7, #44] ; 0x2c - 8046d5e: 725a strb r2, [r3, #9] + 8046d98: 69fb ldr r3, [r7, #28] + 8046d9a: f897 202c ldrb.w r2, [r7, #44] ; 0x2c + 8046d9e: 725a strb r2, [r3, #9] #if CHECKSUM_GEN_IP_INLINE chk_sum += PP_NTOHS(proto | (ttl << 8)); #endif /* CHECKSUM_GEN_IP_INLINE */ /* dest cannot be NULL here */ ip4_addr_copy(iphdr->dest, *dest); - 8046d60: 687b ldr r3, [r7, #4] - 8046d62: 681a ldr r2, [r3, #0] - 8046d64: 69fb ldr r3, [r7, #28] - 8046d66: 611a str r2, [r3, #16] + 8046da0: 687b ldr r3, [r7, #4] + 8046da2: 681a ldr r2, [r3, #0] + 8046da4: 69fb ldr r3, [r7, #28] + 8046da6: 611a str r2, [r3, #16] #if CHECKSUM_GEN_IP_INLINE chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF; chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16; #endif /* CHECKSUM_GEN_IP_INLINE */ IPH_VHL_SET(iphdr, 4, ip_hlen / 4); - 8046d68: 8b7b ldrh r3, [r7, #26] - 8046d6a: 089b lsrs r3, r3, #2 - 8046d6c: b29b uxth r3, r3 - 8046d6e: b2db uxtb r3, r3 - 8046d70: f043 0340 orr.w r3, r3, #64 ; 0x40 - 8046d74: b2da uxtb r2, r3 - 8046d76: 69fb ldr r3, [r7, #28] - 8046d78: 701a strb r2, [r3, #0] + 8046da8: 8b7b ldrh r3, [r7, #26] + 8046daa: 089b lsrs r3, r3, #2 + 8046dac: b29b uxth r3, r3 + 8046dae: b2db uxtb r3, r3 + 8046db0: f043 0340 orr.w r3, r3, #64 ; 0x40 + 8046db4: b2da uxtb r2, r3 + 8046db6: 69fb ldr r3, [r7, #28] + 8046db8: 701a strb r2, [r3, #0] IPH_TOS_SET(iphdr, tos); - 8046d7a: 69fb ldr r3, [r7, #28] - 8046d7c: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 - 8046d80: 705a strb r2, [r3, #1] + 8046dba: 69fb ldr r3, [r7, #28] + 8046dbc: f897 2028 ldrb.w r2, [r7, #40] ; 0x28 + 8046dc0: 705a strb r2, [r3, #1] #if CHECKSUM_GEN_IP_INLINE chk_sum += PP_NTOHS(tos | (iphdr->_v_hl << 8)); #endif /* CHECKSUM_GEN_IP_INLINE */ IPH_LEN_SET(iphdr, lwip_htons(p->tot_len)); - 8046d82: 68fb ldr r3, [r7, #12] - 8046d84: 891b ldrh r3, [r3, #8] - 8046d86: 4618 mov r0, r3 - 8046d88: f7f6 f920 bl 803cfcc - 8046d8c: 4603 mov r3, r0 - 8046d8e: 461a mov r2, r3 - 8046d90: 69fb ldr r3, [r7, #28] - 8046d92: 805a strh r2, [r3, #2] + 8046dc2: 68fb ldr r3, [r7, #12] + 8046dc4: 891b ldrh r3, [r3, #8] + 8046dc6: 4618 mov r0, r3 + 8046dc8: f7f6 f920 bl 803d00c + 8046dcc: 4603 mov r3, r0 + 8046dce: 461a mov r2, r3 + 8046dd0: 69fb ldr r3, [r7, #28] + 8046dd2: 805a strh r2, [r3, #2] #if CHECKSUM_GEN_IP_INLINE chk_sum += iphdr->_len; #endif /* CHECKSUM_GEN_IP_INLINE */ IPH_OFFSET_SET(iphdr, 0); - 8046d94: 69fb ldr r3, [r7, #28] - 8046d96: 2200 movs r2, #0 - 8046d98: 719a strb r2, [r3, #6] - 8046d9a: 2200 movs r2, #0 - 8046d9c: 71da strb r2, [r3, #7] + 8046dd4: 69fb ldr r3, [r7, #28] + 8046dd6: 2200 movs r2, #0 + 8046dd8: 719a strb r2, [r3, #6] + 8046dda: 2200 movs r2, #0 + 8046ddc: 71da strb r2, [r3, #7] IPH_ID_SET(iphdr, lwip_htons(ip_id)); - 8046d9e: 4b2a ldr r3, [pc, #168] ; (8046e48 ) - 8046da0: 881b ldrh r3, [r3, #0] - 8046da2: 4618 mov r0, r3 - 8046da4: f7f6 f912 bl 803cfcc - 8046da8: 4603 mov r3, r0 - 8046daa: 461a mov r2, r3 - 8046dac: 69fb ldr r3, [r7, #28] - 8046dae: 809a strh r2, [r3, #4] + 8046dde: 4b2a ldr r3, [pc, #168] ; (8046e88 ) + 8046de0: 881b ldrh r3, [r3, #0] + 8046de2: 4618 mov r0, r3 + 8046de4: f7f6 f912 bl 803d00c + 8046de8: 4603 mov r3, r0 + 8046dea: 461a mov r2, r3 + 8046dec: 69fb ldr r3, [r7, #28] + 8046dee: 809a strh r2, [r3, #4] #if CHECKSUM_GEN_IP_INLINE chk_sum += iphdr->_id; #endif /* CHECKSUM_GEN_IP_INLINE */ ++ip_id; - 8046db0: 4b25 ldr r3, [pc, #148] ; (8046e48 ) - 8046db2: 881b ldrh r3, [r3, #0] - 8046db4: 3301 adds r3, #1 - 8046db6: b29a uxth r2, r3 - 8046db8: 4b23 ldr r3, [pc, #140] ; (8046e48 ) - 8046dba: 801a strh r2, [r3, #0] + 8046df0: 4b25 ldr r3, [pc, #148] ; (8046e88 ) + 8046df2: 881b ldrh r3, [r3, #0] + 8046df4: 3301 adds r3, #1 + 8046df6: b29a uxth r2, r3 + 8046df8: 4b23 ldr r3, [pc, #140] ; (8046e88 ) + 8046dfa: 801a strh r2, [r3, #0] if (src == NULL) { - 8046dbc: 68bb ldr r3, [r7, #8] - 8046dbe: 2b00 cmp r3, #0 - 8046dc0: d104 bne.n 8046dcc + 8046dfc: 68bb ldr r3, [r7, #8] + 8046dfe: 2b00 cmp r3, #0 + 8046e00: d104 bne.n 8046e0c ip4_addr_copy(iphdr->src, *IP4_ADDR_ANY4); - 8046dc2: 4b22 ldr r3, [pc, #136] ; (8046e4c ) - 8046dc4: 681a ldr r2, [r3, #0] - 8046dc6: 69fb ldr r3, [r7, #28] - 8046dc8: 60da str r2, [r3, #12] - 8046dca: e003 b.n 8046dd4 + 8046e02: 4b22 ldr r3, [pc, #136] ; (8046e8c ) + 8046e04: 681a ldr r2, [r3, #0] + 8046e06: 69fb ldr r3, [r7, #28] + 8046e08: 60da str r2, [r3, #12] + 8046e0a: e003 b.n 8046e14 } else { /* src cannot be NULL here */ ip4_addr_copy(iphdr->src, *src); - 8046dcc: 68bb ldr r3, [r7, #8] - 8046dce: 681a ldr r2, [r3, #0] - 8046dd0: 69fb ldr r3, [r7, #28] - 8046dd2: 60da str r2, [r3, #12] + 8046e0c: 68bb ldr r3, [r7, #8] + 8046e0e: 681a ldr r2, [r3, #0] + 8046e10: 69fb ldr r3, [r7, #28] + 8046e12: 60da str r2, [r3, #12] else { IPH_CHKSUM_SET(iphdr, 0); } #endif /* LWIP_CHECKSUM_CTRL_PER_NETIF*/ #else /* CHECKSUM_GEN_IP_INLINE */ IPH_CHKSUM_SET(iphdr, 0); - 8046dd4: 69fb ldr r3, [r7, #28] - 8046dd6: 2200 movs r2, #0 - 8046dd8: 729a strb r2, [r3, #10] - 8046dda: 2200 movs r2, #0 - 8046ddc: 72da strb r2, [r3, #11] - 8046dde: e00f b.n 8046e00 + 8046e14: 69fb ldr r3, [r7, #28] + 8046e16: 2200 movs r2, #0 + 8046e18: 729a strb r2, [r3, #10] + 8046e1a: 2200 movs r2, #0 + 8046e1c: 72da strb r2, [r3, #11] + 8046e1e: e00f b.n 8046e40 } #endif /* CHECKSUM_GEN_IP */ #endif /* CHECKSUM_GEN_IP_INLINE */ } else { /* IP header already included in p */ if (p->len < IP_HLEN) { - 8046de0: 68fb ldr r3, [r7, #12] - 8046de2: 895b ldrh r3, [r3, #10] - 8046de4: 2b13 cmp r3, #19 - 8046de6: d802 bhi.n 8046dee + 8046e20: 68fb ldr r3, [r7, #12] + 8046e22: 895b ldrh r3, [r3, #10] + 8046e24: 2b13 cmp r3, #19 + 8046e26: d802 bhi.n 8046e2e LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip4_output: LWIP_IP_HDRINCL but pbuf is too short\n")); IP_STATS_INC(ip.err); MIB2_STATS_INC(mib2.ipoutdiscards); return ERR_BUF; - 8046de8: f06f 0301 mvn.w r3, #1 - 8046dec: e020 b.n 8046e30 + 8046e28: f06f 0301 mvn.w r3, #1 + 8046e2c: e020 b.n 8046e70 } iphdr = (struct ip_hdr *)p->payload; - 8046dee: 68fb ldr r3, [r7, #12] - 8046df0: 685b ldr r3, [r3, #4] - 8046df2: 61fb str r3, [r7, #28] + 8046e2e: 68fb ldr r3, [r7, #12] + 8046e30: 685b ldr r3, [r3, #4] + 8046e32: 61fb str r3, [r7, #28] ip4_addr_copy(dest_addr, iphdr->dest); - 8046df4: 69fb ldr r3, [r7, #28] - 8046df6: 691b ldr r3, [r3, #16] - 8046df8: 617b str r3, [r7, #20] + 8046e34: 69fb ldr r3, [r7, #28] + 8046e36: 691b ldr r3, [r3, #16] + 8046e38: 617b str r3, [r7, #20] dest = &dest_addr; - 8046dfa: f107 0314 add.w r3, r7, #20 - 8046dfe: 607b str r3, [r7, #4] + 8046e3a: f107 0314 add.w r3, r7, #20 + 8046e3e: 607b str r3, [r7, #4] } #endif /* LWIP_MULTICAST_TX_OPTIONS */ #endif /* ENABLE_LOOPBACK */ #if IP_FRAG /* don't fragment if interface has mtu set to 0 [loopif] */ if (netif->mtu && (p->tot_len > netif->mtu)) { - 8046e00: 6b3b ldr r3, [r7, #48] ; 0x30 - 8046e02: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8046e04: 2b00 cmp r3, #0 - 8046e06: d00c beq.n 8046e22 - 8046e08: 68fb ldr r3, [r7, #12] - 8046e0a: 891a ldrh r2, [r3, #8] - 8046e0c: 6b3b ldr r3, [r7, #48] ; 0x30 - 8046e0e: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8046e10: 429a cmp r2, r3 - 8046e12: d906 bls.n 8046e22 + 8046e40: 6b3b ldr r3, [r7, #48] ; 0x30 + 8046e42: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8046e44: 2b00 cmp r3, #0 + 8046e46: d00c beq.n 8046e62 + 8046e48: 68fb ldr r3, [r7, #12] + 8046e4a: 891a ldrh r2, [r3, #8] + 8046e4c: 6b3b ldr r3, [r7, #48] ; 0x30 + 8046e4e: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8046e50: 429a cmp r2, r3 + 8046e52: d906 bls.n 8046e62 return ip4_frag(p, netif, dest); - 8046e14: 687a ldr r2, [r7, #4] - 8046e16: 6b39 ldr r1, [r7, #48] ; 0x30 - 8046e18: 68f8 ldr r0, [r7, #12] - 8046e1a: f000 fd53 bl 80478c4 - 8046e1e: 4603 mov r3, r0 - 8046e20: e006 b.n 8046e30 + 8046e54: 687a ldr r2, [r7, #4] + 8046e56: 6b39 ldr r1, [r7, #48] ; 0x30 + 8046e58: 68f8 ldr r0, [r7, #12] + 8046e5a: f000 fd53 bl 8047904 + 8046e5e: 4603 mov r3, r0 + 8046e60: e006 b.n 8046e70 } #endif /* IP_FRAG */ LWIP_DEBUGF(IP_DEBUG, ("ip4_output_if: call netif->output()\n")); return netif->output(netif, p, dest); - 8046e22: 6b3b ldr r3, [r7, #48] ; 0x30 - 8046e24: 695b ldr r3, [r3, #20] - 8046e26: 687a ldr r2, [r7, #4] - 8046e28: 68f9 ldr r1, [r7, #12] - 8046e2a: 6b38 ldr r0, [r7, #48] ; 0x30 - 8046e2c: 4798 blx r3 - 8046e2e: 4603 mov r3, r0 -} - 8046e30: 4618 mov r0, r3 - 8046e32: 3720 adds r7, #32 - 8046e34: 46bd mov sp, r7 - 8046e36: bd80 pop {r7, pc} - 8046e38: 0804c7f0 .word 0x0804c7f0 - 8046e3c: 0804c824 .word 0x0804c824 - 8046e40: 0804c830 .word 0x0804c830 - 8046e44: 0804c858 .word 0x0804c858 - 8046e48: 2400ec3a .word 0x2400ec3a - 8046e4c: 0804d488 .word 0x0804d488 - -08046e50 : + 8046e62: 6b3b ldr r3, [r7, #48] ; 0x30 + 8046e64: 695b ldr r3, [r3, #20] + 8046e66: 687a ldr r2, [r7, #4] + 8046e68: 68f9 ldr r1, [r7, #12] + 8046e6a: 6b38 ldr r0, [r7, #48] ; 0x30 + 8046e6c: 4798 blx r3 + 8046e6e: 4603 mov r3, r0 +} + 8046e70: 4618 mov r0, r3 + 8046e72: 3720 adds r7, #32 + 8046e74: 46bd mov sp, r7 + 8046e76: bd80 pop {r7, pc} + 8046e78: 0804c830 .word 0x0804c830 + 8046e7c: 0804c864 .word 0x0804c864 + 8046e80: 0804c870 .word 0x0804c870 + 8046e84: 0804c898 .word 0x0804c898 + 8046e88: 2400ec3a .word 0x2400ec3a + 8046e8c: 0804d4c8 .word 0x0804d4c8 + +08046e90 : * @param netif the network interface against which the address is checked * @return returns non-zero if the address is a broadcast address */ u8_t ip4_addr_isbroadcast_u32(u32_t addr, const struct netif *netif) { - 8046e50: b480 push {r7} - 8046e52: b085 sub sp, #20 - 8046e54: af00 add r7, sp, #0 - 8046e56: 6078 str r0, [r7, #4] - 8046e58: 6039 str r1, [r7, #0] + 8046e90: b480 push {r7} + 8046e92: b085 sub sp, #20 + 8046e94: af00 add r7, sp, #0 + 8046e96: 6078 str r0, [r7, #4] + 8046e98: 6039 str r1, [r7, #0] ip4_addr_t ipaddr; ip4_addr_set_u32(&ipaddr, addr); - 8046e5a: 687b ldr r3, [r7, #4] - 8046e5c: 60fb str r3, [r7, #12] + 8046e9a: 687b ldr r3, [r7, #4] + 8046e9c: 60fb str r3, [r7, #12] /* all ones (broadcast) or all zeroes (old skool broadcast) */ if ((~addr == IPADDR_ANY) || - 8046e5e: 687b ldr r3, [r7, #4] - 8046e60: f1b3 3fff cmp.w r3, #4294967295 - 8046e64: d002 beq.n 8046e6c - 8046e66: 687b ldr r3, [r7, #4] - 8046e68: 2b00 cmp r3, #0 - 8046e6a: d101 bne.n 8046e70 + 8046e9e: 687b ldr r3, [r7, #4] + 8046ea0: f1b3 3fff cmp.w r3, #4294967295 + 8046ea4: d002 beq.n 8046eac + 8046ea6: 687b ldr r3, [r7, #4] + 8046ea8: 2b00 cmp r3, #0 + 8046eaa: d101 bne.n 8046eb0 (addr == IPADDR_ANY)) { return 1; - 8046e6c: 2301 movs r3, #1 - 8046e6e: e02a b.n 8046ec6 + 8046eac: 2301 movs r3, #1 + 8046eae: e02a b.n 8046f06 /* no broadcast support on this network interface? */ } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) { - 8046e70: 683b ldr r3, [r7, #0] - 8046e72: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8046e76: f003 0302 and.w r3, r3, #2 - 8046e7a: 2b00 cmp r3, #0 - 8046e7c: d101 bne.n 8046e82 + 8046eb0: 683b ldr r3, [r7, #0] + 8046eb2: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8046eb6: f003 0302 and.w r3, r3, #2 + 8046eba: 2b00 cmp r3, #0 + 8046ebc: d101 bne.n 8046ec2 /* the given address cannot be a broadcast address * nor can we check against any broadcast addresses */ return 0; - 8046e7e: 2300 movs r3, #0 - 8046e80: e021 b.n 8046ec6 + 8046ebe: 2300 movs r3, #0 + 8046ec0: e021 b.n 8046f06 /* address matches network interface address exactly? => no broadcast */ } else if (addr == ip4_addr_get_u32(netif_ip4_addr(netif))) { - 8046e82: 683b ldr r3, [r7, #0] - 8046e84: 3304 adds r3, #4 - 8046e86: 681b ldr r3, [r3, #0] - 8046e88: 687a ldr r2, [r7, #4] - 8046e8a: 429a cmp r2, r3 - 8046e8c: d101 bne.n 8046e92 + 8046ec2: 683b ldr r3, [r7, #0] + 8046ec4: 3304 adds r3, #4 + 8046ec6: 681b ldr r3, [r3, #0] + 8046ec8: 687a ldr r2, [r7, #4] + 8046eca: 429a cmp r2, r3 + 8046ecc: d101 bne.n 8046ed2 return 0; - 8046e8e: 2300 movs r3, #0 - 8046e90: e019 b.n 8046ec6 + 8046ece: 2300 movs r3, #0 + 8046ed0: e019 b.n 8046f06 /* on the same (sub) network... */ } else if (ip4_addr_netcmp(&ipaddr, netif_ip4_addr(netif), netif_ip4_netmask(netif)) - 8046e92: 68fa ldr r2, [r7, #12] - 8046e94: 683b ldr r3, [r7, #0] - 8046e96: 3304 adds r3, #4 - 8046e98: 681b ldr r3, [r3, #0] - 8046e9a: 405a eors r2, r3 - 8046e9c: 683b ldr r3, [r7, #0] - 8046e9e: 3308 adds r3, #8 - 8046ea0: 681b ldr r3, [r3, #0] - 8046ea2: 4013 ands r3, r2 - 8046ea4: 2b00 cmp r3, #0 - 8046ea6: d10d bne.n 8046ec4 + 8046ed2: 68fa ldr r2, [r7, #12] + 8046ed4: 683b ldr r3, [r7, #0] + 8046ed6: 3304 adds r3, #4 + 8046ed8: 681b ldr r3, [r3, #0] + 8046eda: 405a eors r2, r3 + 8046edc: 683b ldr r3, [r7, #0] + 8046ede: 3308 adds r3, #8 + 8046ee0: 681b ldr r3, [r3, #0] + 8046ee2: 4013 ands r3, r2 + 8046ee4: 2b00 cmp r3, #0 + 8046ee6: d10d bne.n 8046f04 /* ...and host identifier bits are all ones? =>... */ && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) == - 8046ea8: 683b ldr r3, [r7, #0] - 8046eaa: 3308 adds r3, #8 - 8046eac: 681b ldr r3, [r3, #0] - 8046eae: 43da mvns r2, r3 - 8046eb0: 687b ldr r3, [r7, #4] - 8046eb2: 401a ands r2, r3 + 8046ee8: 683b ldr r3, [r7, #0] + 8046eea: 3308 adds r3, #8 + 8046eec: 681b ldr r3, [r3, #0] + 8046eee: 43da mvns r2, r3 + 8046ef0: 687b ldr r3, [r7, #4] + 8046ef2: 401a ands r2, r3 (IPADDR_BROADCAST & ~ip4_addr_get_u32(netif_ip4_netmask(netif))))) { - 8046eb4: 683b ldr r3, [r7, #0] - 8046eb6: 3308 adds r3, #8 - 8046eb8: 681b ldr r3, [r3, #0] - 8046eba: 43db mvns r3, r3 + 8046ef4: 683b ldr r3, [r7, #0] + 8046ef6: 3308 adds r3, #8 + 8046ef8: 681b ldr r3, [r3, #0] + 8046efa: 43db mvns r3, r3 && ((addr & ~ip4_addr_get_u32(netif_ip4_netmask(netif))) == - 8046ebc: 429a cmp r2, r3 - 8046ebe: d101 bne.n 8046ec4 + 8046efc: 429a cmp r2, r3 + 8046efe: d101 bne.n 8046f04 /* => network broadcast address */ return 1; - 8046ec0: 2301 movs r3, #1 - 8046ec2: e000 b.n 8046ec6 + 8046f00: 2301 movs r3, #1 + 8046f02: e000 b.n 8046f06 } else { return 0; - 8046ec4: 2300 movs r3, #0 + 8046f04: 2300 movs r3, #0 } } - 8046ec6: 4618 mov r0, r3 - 8046ec8: 3714 adds r7, #20 - 8046eca: 46bd mov sp, r7 - 8046ecc: f85d 7b04 ldr.w r7, [sp], #4 - 8046ed0: 4770 bx lr + 8046f06: 4618 mov r0, r3 + 8046f08: 3714 adds r7, #20 + 8046f0a: 46bd mov sp, r7 + 8046f0c: f85d 7b04 ldr.w r7, [sp], #4 + 8046f10: 4770 bx lr ... -08046ed4 : +08046f14 : * * Should be called every 1000 msec (defined by IP_TMR_INTERVAL). */ void ip_reass_tmr(void) { - 8046ed4: b580 push {r7, lr} - 8046ed6: b084 sub sp, #16 - 8046ed8: af00 add r7, sp, #0 + 8046f14: b580 push {r7, lr} + 8046f16: b084 sub sp, #16 + 8046f18: af00 add r7, sp, #0 struct ip_reassdata *r, *prev = NULL; - 8046eda: 2300 movs r3, #0 - 8046edc: 60bb str r3, [r7, #8] + 8046f1a: 2300 movs r3, #0 + 8046f1c: 60bb str r3, [r7, #8] r = reassdatagrams; - 8046ede: 4b12 ldr r3, [pc, #72] ; (8046f28 ) - 8046ee0: 681b ldr r3, [r3, #0] - 8046ee2: 60fb str r3, [r7, #12] + 8046f1e: 4b12 ldr r3, [pc, #72] ; (8046f68 ) + 8046f20: 681b ldr r3, [r3, #0] + 8046f22: 60fb str r3, [r7, #12] while (r != NULL) { - 8046ee4: e018 b.n 8046f18 + 8046f24: e018 b.n 8046f58 /* Decrement the timer. Once it reaches 0, * clean up the incomplete fragment assembly */ if (r->timer > 0) { - 8046ee6: 68fb ldr r3, [r7, #12] - 8046ee8: 7fdb ldrb r3, [r3, #31] - 8046eea: 2b00 cmp r3, #0 - 8046eec: d00b beq.n 8046f06 + 8046f26: 68fb ldr r3, [r7, #12] + 8046f28: 7fdb ldrb r3, [r3, #31] + 8046f2a: 2b00 cmp r3, #0 + 8046f2c: d00b beq.n 8046f46 r->timer--; - 8046eee: 68fb ldr r3, [r7, #12] - 8046ef0: 7fdb ldrb r3, [r3, #31] - 8046ef2: 3b01 subs r3, #1 - 8046ef4: b2da uxtb r2, r3 - 8046ef6: 68fb ldr r3, [r7, #12] - 8046ef8: 77da strb r2, [r3, #31] + 8046f2e: 68fb ldr r3, [r7, #12] + 8046f30: 7fdb ldrb r3, [r3, #31] + 8046f32: 3b01 subs r3, #1 + 8046f34: b2da uxtb r2, r3 + 8046f36: 68fb ldr r3, [r7, #12] + 8046f38: 77da strb r2, [r3, #31] LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n", (u16_t)r->timer)); prev = r; - 8046efa: 68fb ldr r3, [r7, #12] - 8046efc: 60bb str r3, [r7, #8] + 8046f3a: 68fb ldr r3, [r7, #12] + 8046f3c: 60bb str r3, [r7, #8] r = r->next; - 8046efe: 68fb ldr r3, [r7, #12] - 8046f00: 681b ldr r3, [r3, #0] - 8046f02: 60fb str r3, [r7, #12] - 8046f04: e008 b.n 8046f18 + 8046f3e: 68fb ldr r3, [r7, #12] + 8046f40: 681b ldr r3, [r3, #0] + 8046f42: 60fb str r3, [r7, #12] + 8046f44: e008 b.n 8046f58 } else { /* reassembly timed out */ struct ip_reassdata *tmp; LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n")); tmp = r; - 8046f06: 68fb ldr r3, [r7, #12] - 8046f08: 607b str r3, [r7, #4] + 8046f46: 68fb ldr r3, [r7, #12] + 8046f48: 607b str r3, [r7, #4] /* get the next pointer before freeing */ r = r->next; - 8046f0a: 68fb ldr r3, [r7, #12] - 8046f0c: 681b ldr r3, [r3, #0] - 8046f0e: 60fb str r3, [r7, #12] + 8046f4a: 68fb ldr r3, [r7, #12] + 8046f4c: 681b ldr r3, [r3, #0] + 8046f4e: 60fb str r3, [r7, #12] /* free the helper struct and all enqueued pbufs */ ip_reass_free_complete_datagram(tmp, prev); - 8046f10: 68b9 ldr r1, [r7, #8] - 8046f12: 6878 ldr r0, [r7, #4] - 8046f14: f000 f80a bl 8046f2c + 8046f50: 68b9 ldr r1, [r7, #8] + 8046f52: 6878 ldr r0, [r7, #4] + 8046f54: f000 f80a bl 8046f6c while (r != NULL) { - 8046f18: 68fb ldr r3, [r7, #12] - 8046f1a: 2b00 cmp r3, #0 - 8046f1c: d1e3 bne.n 8046ee6 + 8046f58: 68fb ldr r3, [r7, #12] + 8046f5a: 2b00 cmp r3, #0 + 8046f5c: d1e3 bne.n 8046f26 } } } - 8046f1e: bf00 nop - 8046f20: bf00 nop - 8046f22: 3710 adds r7, #16 - 8046f24: 46bd mov sp, r7 - 8046f26: bd80 pop {r7, pc} - 8046f28: 2400ec3c .word 0x2400ec3c + 8046f5e: bf00 nop + 8046f60: bf00 nop + 8046f62: 3710 adds r7, #16 + 8046f64: 46bd mov sp, r7 + 8046f66: bd80 pop {r7, pc} + 8046f68: 2400ec3c .word 0x2400ec3c -08046f2c : +08046f6c : * @param prev the previous datagram in the linked list * @return the number of pbufs freed */ static int ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) { - 8046f2c: b580 push {r7, lr} - 8046f2e: b088 sub sp, #32 - 8046f30: af00 add r7, sp, #0 - 8046f32: 6078 str r0, [r7, #4] - 8046f34: 6039 str r1, [r7, #0] + 8046f6c: b580 push {r7, lr} + 8046f6e: b088 sub sp, #32 + 8046f70: af00 add r7, sp, #0 + 8046f72: 6078 str r0, [r7, #4] + 8046f74: 6039 str r1, [r7, #0] u16_t pbufs_freed = 0; - 8046f36: 2300 movs r3, #0 - 8046f38: 83fb strh r3, [r7, #30] + 8046f76: 2300 movs r3, #0 + 8046f78: 83fb strh r3, [r7, #30] u16_t clen; struct pbuf *p; struct ip_reass_helper *iprh; LWIP_ASSERT("prev != ipr", prev != ipr); - 8046f3a: 683a ldr r2, [r7, #0] - 8046f3c: 687b ldr r3, [r7, #4] - 8046f3e: 429a cmp r2, r3 - 8046f40: d105 bne.n 8046f4e - 8046f42: 4b45 ldr r3, [pc, #276] ; (8047058 ) - 8046f44: 22ab movs r2, #171 ; 0xab - 8046f46: 4945 ldr r1, [pc, #276] ; (804705c ) - 8046f48: 4845 ldr r0, [pc, #276] ; (8047060 ) - 8046f4a: f001 f82b bl 8047fa4 + 8046f7a: 683a ldr r2, [r7, #0] + 8046f7c: 687b ldr r3, [r7, #4] + 8046f7e: 429a cmp r2, r3 + 8046f80: d105 bne.n 8046f8e + 8046f82: 4b45 ldr r3, [pc, #276] ; (8047098 ) + 8046f84: 22ab movs r2, #171 ; 0xab + 8046f86: 4945 ldr r1, [pc, #276] ; (804709c ) + 8046f88: 4845 ldr r0, [pc, #276] ; (80470a0 ) + 8046f8a: f001 f82b bl 8047fe4 if (prev != NULL) { - 8046f4e: 683b ldr r3, [r7, #0] - 8046f50: 2b00 cmp r3, #0 - 8046f52: d00a beq.n 8046f6a + 8046f8e: 683b ldr r3, [r7, #0] + 8046f90: 2b00 cmp r3, #0 + 8046f92: d00a beq.n 8046faa LWIP_ASSERT("prev->next == ipr", prev->next == ipr); - 8046f54: 683b ldr r3, [r7, #0] - 8046f56: 681b ldr r3, [r3, #0] - 8046f58: 687a ldr r2, [r7, #4] - 8046f5a: 429a cmp r2, r3 - 8046f5c: d005 beq.n 8046f6a - 8046f5e: 4b3e ldr r3, [pc, #248] ; (8047058 ) - 8046f60: 22ad movs r2, #173 ; 0xad - 8046f62: 4940 ldr r1, [pc, #256] ; (8047064 ) - 8046f64: 483e ldr r0, [pc, #248] ; (8047060 ) - 8046f66: f001 f81d bl 8047fa4 + 8046f94: 683b ldr r3, [r7, #0] + 8046f96: 681b ldr r3, [r3, #0] + 8046f98: 687a ldr r2, [r7, #4] + 8046f9a: 429a cmp r2, r3 + 8046f9c: d005 beq.n 8046faa + 8046f9e: 4b3e ldr r3, [pc, #248] ; (8047098 ) + 8046fa0: 22ad movs r2, #173 ; 0xad + 8046fa2: 4940 ldr r1, [pc, #256] ; (80470a4 ) + 8046fa4: 483e ldr r0, [pc, #248] ; (80470a0 ) + 8046fa6: f001 f81d bl 8047fe4 } MIB2_STATS_INC(mib2.ipreasmfails); #if LWIP_ICMP iprh = (struct ip_reass_helper *)ipr->p->payload; - 8046f6a: 687b ldr r3, [r7, #4] - 8046f6c: 685b ldr r3, [r3, #4] - 8046f6e: 685b ldr r3, [r3, #4] - 8046f70: 617b str r3, [r7, #20] + 8046faa: 687b ldr r3, [r7, #4] + 8046fac: 685b ldr r3, [r3, #4] + 8046fae: 685b ldr r3, [r3, #4] + 8046fb0: 617b str r3, [r7, #20] if (iprh->start == 0) { - 8046f72: 697b ldr r3, [r7, #20] - 8046f74: 889b ldrh r3, [r3, #4] - 8046f76: b29b uxth r3, r3 - 8046f78: 2b00 cmp r3, #0 - 8046f7a: d12a bne.n 8046fd2 + 8046fb2: 697b ldr r3, [r7, #20] + 8046fb4: 889b ldrh r3, [r3, #4] + 8046fb6: b29b uxth r3, r3 + 8046fb8: 2b00 cmp r3, #0 + 8046fba: d12a bne.n 8047012 /* The first fragment was received, send ICMP time exceeded. */ /* First, de-queue the first pbuf from r->p. */ p = ipr->p; - 8046f7c: 687b ldr r3, [r7, #4] - 8046f7e: 685b ldr r3, [r3, #4] - 8046f80: 61bb str r3, [r7, #24] + 8046fbc: 687b ldr r3, [r7, #4] + 8046fbe: 685b ldr r3, [r3, #4] + 8046fc0: 61bb str r3, [r7, #24] ipr->p = iprh->next_pbuf; - 8046f82: 697b ldr r3, [r7, #20] - 8046f84: 681a ldr r2, [r3, #0] - 8046f86: 687b ldr r3, [r7, #4] - 8046f88: 605a str r2, [r3, #4] + 8046fc2: 697b ldr r3, [r7, #20] + 8046fc4: 681a ldr r2, [r3, #0] + 8046fc6: 687b ldr r3, [r7, #4] + 8046fc8: 605a str r2, [r3, #4] /* Then, copy the original header into it. */ SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN); - 8046f8a: 69bb ldr r3, [r7, #24] - 8046f8c: 6858 ldr r0, [r3, #4] - 8046f8e: 687b ldr r3, [r7, #4] - 8046f90: 3308 adds r3, #8 - 8046f92: 2214 movs r2, #20 - 8046f94: 4619 mov r1, r3 - 8046f96: f000 fef5 bl 8047d84 + 8046fca: 69bb ldr r3, [r7, #24] + 8046fcc: 6858 ldr r0, [r3, #4] + 8046fce: 687b ldr r3, [r7, #4] + 8046fd0: 3308 adds r3, #8 + 8046fd2: 2214 movs r2, #20 + 8046fd4: 4619 mov r1, r3 + 8046fd6: f000 fef5 bl 8047dc4 icmp_time_exceeded(p, ICMP_TE_FRAG); - 8046f9a: 2101 movs r1, #1 - 8046f9c: 69b8 ldr r0, [r7, #24] - 8046f9e: f7ff fc3d bl 804681c + 8046fda: 2101 movs r1, #1 + 8046fdc: 69b8 ldr r0, [r7, #24] + 8046fde: f7ff fc3d bl 804685c clen = pbuf_clen(p); - 8046fa2: 69b8 ldr r0, [r7, #24] - 8046fa4: f7f7 fccc bl 803e940 - 8046fa8: 4603 mov r3, r0 - 8046faa: 827b strh r3, [r7, #18] + 8046fe2: 69b8 ldr r0, [r7, #24] + 8046fe4: f7f7 fccc bl 803e980 + 8046fe8: 4603 mov r3, r0 + 8046fea: 827b strh r3, [r7, #18] LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - 8046fac: 8bfa ldrh r2, [r7, #30] - 8046fae: 8a7b ldrh r3, [r7, #18] - 8046fb0: 4413 add r3, r2 - 8046fb2: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8046fb6: db05 blt.n 8046fc4 - 8046fb8: 4b27 ldr r3, [pc, #156] ; (8047058 ) - 8046fba: 22bc movs r2, #188 ; 0xbc - 8046fbc: 492a ldr r1, [pc, #168] ; (8047068 ) - 8046fbe: 4828 ldr r0, [pc, #160] ; (8047060 ) - 8046fc0: f000 fff0 bl 8047fa4 + 8046fec: 8bfa ldrh r2, [r7, #30] + 8046fee: 8a7b ldrh r3, [r7, #18] + 8046ff0: 4413 add r3, r2 + 8046ff2: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 8046ff6: db05 blt.n 8047004 + 8046ff8: 4b27 ldr r3, [pc, #156] ; (8047098 ) + 8046ffa: 22bc movs r2, #188 ; 0xbc + 8046ffc: 492a ldr r1, [pc, #168] ; (80470a8 ) + 8046ffe: 4828 ldr r0, [pc, #160] ; (80470a0 ) + 8047000: f000 fff0 bl 8047fe4 pbufs_freed = (u16_t)(pbufs_freed + clen); - 8046fc4: 8bfa ldrh r2, [r7, #30] - 8046fc6: 8a7b ldrh r3, [r7, #18] - 8046fc8: 4413 add r3, r2 - 8046fca: 83fb strh r3, [r7, #30] + 8047004: 8bfa ldrh r2, [r7, #30] + 8047006: 8a7b ldrh r3, [r7, #18] + 8047008: 4413 add r3, r2 + 804700a: 83fb strh r3, [r7, #30] pbuf_free(p); - 8046fcc: 69b8 ldr r0, [r7, #24] - 8046fce: f7f7 fc2f bl 803e830 + 804700c: 69b8 ldr r0, [r7, #24] + 804700e: f7f7 fc2f bl 803e870 } #endif /* LWIP_ICMP */ /* First, free all received pbufs. The individual pbufs need to be released separately as they have not yet been chained */ p = ipr->p; - 8046fd2: 687b ldr r3, [r7, #4] - 8046fd4: 685b ldr r3, [r3, #4] - 8046fd6: 61bb str r3, [r7, #24] + 8047012: 687b ldr r3, [r7, #4] + 8047014: 685b ldr r3, [r3, #4] + 8047016: 61bb str r3, [r7, #24] while (p != NULL) { - 8046fd8: e01f b.n 804701a + 8047018: e01f b.n 804705a struct pbuf *pcur; iprh = (struct ip_reass_helper *)p->payload; - 8046fda: 69bb ldr r3, [r7, #24] - 8046fdc: 685b ldr r3, [r3, #4] - 8046fde: 617b str r3, [r7, #20] + 804701a: 69bb ldr r3, [r7, #24] + 804701c: 685b ldr r3, [r3, #4] + 804701e: 617b str r3, [r7, #20] pcur = p; - 8046fe0: 69bb ldr r3, [r7, #24] - 8046fe2: 60fb str r3, [r7, #12] + 8047020: 69bb ldr r3, [r7, #24] + 8047022: 60fb str r3, [r7, #12] /* get the next pointer before freeing */ p = iprh->next_pbuf; - 8046fe4: 697b ldr r3, [r7, #20] - 8046fe6: 681b ldr r3, [r3, #0] - 8046fe8: 61bb str r3, [r7, #24] + 8047024: 697b ldr r3, [r7, #20] + 8047026: 681b ldr r3, [r3, #0] + 8047028: 61bb str r3, [r7, #24] clen = pbuf_clen(pcur); - 8046fea: 68f8 ldr r0, [r7, #12] - 8046fec: f7f7 fca8 bl 803e940 - 8046ff0: 4603 mov r3, r0 - 8046ff2: 827b strh r3, [r7, #18] + 804702a: 68f8 ldr r0, [r7, #12] + 804702c: f7f7 fca8 bl 803e980 + 8047030: 4603 mov r3, r0 + 8047032: 827b strh r3, [r7, #18] LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - 8046ff4: 8bfa ldrh r2, [r7, #30] - 8046ff6: 8a7b ldrh r3, [r7, #18] - 8046ff8: 4413 add r3, r2 - 8046ffa: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 - 8046ffe: db05 blt.n 804700c - 8047000: 4b15 ldr r3, [pc, #84] ; (8047058 ) - 8047002: 22cc movs r2, #204 ; 0xcc - 8047004: 4918 ldr r1, [pc, #96] ; (8047068 ) - 8047006: 4816 ldr r0, [pc, #88] ; (8047060 ) - 8047008: f000 ffcc bl 8047fa4 + 8047034: 8bfa ldrh r2, [r7, #30] + 8047036: 8a7b ldrh r3, [r7, #18] + 8047038: 4413 add r3, r2 + 804703a: f5b3 3f80 cmp.w r3, #65536 ; 0x10000 + 804703e: db05 blt.n 804704c + 8047040: 4b15 ldr r3, [pc, #84] ; (8047098 ) + 8047042: 22cc movs r2, #204 ; 0xcc + 8047044: 4918 ldr r1, [pc, #96] ; (80470a8 ) + 8047046: 4816 ldr r0, [pc, #88] ; (80470a0 ) + 8047048: f000 ffcc bl 8047fe4 pbufs_freed = (u16_t)(pbufs_freed + clen); - 804700c: 8bfa ldrh r2, [r7, #30] - 804700e: 8a7b ldrh r3, [r7, #18] - 8047010: 4413 add r3, r2 - 8047012: 83fb strh r3, [r7, #30] + 804704c: 8bfa ldrh r2, [r7, #30] + 804704e: 8a7b ldrh r3, [r7, #18] + 8047050: 4413 add r3, r2 + 8047052: 83fb strh r3, [r7, #30] pbuf_free(pcur); - 8047014: 68f8 ldr r0, [r7, #12] - 8047016: f7f7 fc0b bl 803e830 + 8047054: 68f8 ldr r0, [r7, #12] + 8047056: f7f7 fc0b bl 803e870 while (p != NULL) { - 804701a: 69bb ldr r3, [r7, #24] - 804701c: 2b00 cmp r3, #0 - 804701e: d1dc bne.n 8046fda + 804705a: 69bb ldr r3, [r7, #24] + 804705c: 2b00 cmp r3, #0 + 804705e: d1dc bne.n 804701a } /* Then, unchain the struct ip_reassdata from the list and free it. */ ip_reass_dequeue_datagram(ipr, prev); - 8047020: 6839 ldr r1, [r7, #0] - 8047022: 6878 ldr r0, [r7, #4] - 8047024: f000 f8c2 bl 80471ac + 8047060: 6839 ldr r1, [r7, #0] + 8047062: 6878 ldr r0, [r7, #4] + 8047064: f000 f8c2 bl 80471ec LWIP_ASSERT("ip_reass_pbufcount >= pbufs_freed", ip_reass_pbufcount >= pbufs_freed); - 8047028: 4b10 ldr r3, [pc, #64] ; (804706c ) - 804702a: 881b ldrh r3, [r3, #0] - 804702c: 8bfa ldrh r2, [r7, #30] - 804702e: 429a cmp r2, r3 - 8047030: d905 bls.n 804703e - 8047032: 4b09 ldr r3, [pc, #36] ; (8047058 ) - 8047034: 22d2 movs r2, #210 ; 0xd2 - 8047036: 490e ldr r1, [pc, #56] ; (8047070 ) - 8047038: 4809 ldr r0, [pc, #36] ; (8047060 ) - 804703a: f000 ffb3 bl 8047fa4 + 8047068: 4b10 ldr r3, [pc, #64] ; (80470ac ) + 804706a: 881b ldrh r3, [r3, #0] + 804706c: 8bfa ldrh r2, [r7, #30] + 804706e: 429a cmp r2, r3 + 8047070: d905 bls.n 804707e + 8047072: 4b09 ldr r3, [pc, #36] ; (8047098 ) + 8047074: 22d2 movs r2, #210 ; 0xd2 + 8047076: 490e ldr r1, [pc, #56] ; (80470b0 ) + 8047078: 4809 ldr r0, [pc, #36] ; (80470a0 ) + 804707a: f000 ffb3 bl 8047fe4 ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - pbufs_freed); - 804703e: 4b0b ldr r3, [pc, #44] ; (804706c ) - 8047040: 881a ldrh r2, [r3, #0] - 8047042: 8bfb ldrh r3, [r7, #30] - 8047044: 1ad3 subs r3, r2, r3 - 8047046: b29a uxth r2, r3 - 8047048: 4b08 ldr r3, [pc, #32] ; (804706c ) - 804704a: 801a strh r2, [r3, #0] + 804707e: 4b0b ldr r3, [pc, #44] ; (80470ac ) + 8047080: 881a ldrh r2, [r3, #0] + 8047082: 8bfb ldrh r3, [r7, #30] + 8047084: 1ad3 subs r3, r2, r3 + 8047086: b29a uxth r2, r3 + 8047088: 4b08 ldr r3, [pc, #32] ; (80470ac ) + 804708a: 801a strh r2, [r3, #0] return pbufs_freed; - 804704c: 8bfb ldrh r3, [r7, #30] -} - 804704e: 4618 mov r0, r3 - 8047050: 3720 adds r7, #32 - 8047052: 46bd mov sp, r7 - 8047054: bd80 pop {r7, pc} - 8047056: bf00 nop - 8047058: 0804c888 .word 0x0804c888 - 804705c: 0804c8c4 .word 0x0804c8c4 - 8047060: 0804c8d0 .word 0x0804c8d0 - 8047064: 0804c8f8 .word 0x0804c8f8 - 8047068: 0804c90c .word 0x0804c90c - 804706c: 2400ec40 .word 0x2400ec40 - 8047070: 0804c92c .word 0x0804c92c - -08047074 : + 804708c: 8bfb ldrh r3, [r7, #30] +} + 804708e: 4618 mov r0, r3 + 8047090: 3720 adds r7, #32 + 8047092: 46bd mov sp, r7 + 8047094: bd80 pop {r7, pc} + 8047096: bf00 nop + 8047098: 0804c8c8 .word 0x0804c8c8 + 804709c: 0804c904 .word 0x0804c904 + 80470a0: 0804c910 .word 0x0804c910 + 80470a4: 0804c938 .word 0x0804c938 + 80470a8: 0804c94c .word 0x0804c94c + 80470ac: 2400ec40 .word 0x2400ec40 + 80470b0: 0804c96c .word 0x0804c96c + +080470b4 : * (used for freeing other datagrams if not enough space) * @return the number of pbufs freed */ static int ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed) { - 8047074: b580 push {r7, lr} - 8047076: b08a sub sp, #40 ; 0x28 - 8047078: af00 add r7, sp, #0 - 804707a: 6078 str r0, [r7, #4] - 804707c: 6039 str r1, [r7, #0] + 80470b4: b580 push {r7, lr} + 80470b6: b08a sub sp, #40 ; 0x28 + 80470b8: af00 add r7, sp, #0 + 80470ba: 6078 str r0, [r7, #4] + 80470bc: 6039 str r1, [r7, #0] /* @todo Can't we simply remove the last datagram in the * linked list behind reassdatagrams? */ struct ip_reassdata *r, *oldest, *prev, *oldest_prev; int pbufs_freed = 0, pbufs_freed_current; - 804707e: 2300 movs r3, #0 - 8047080: 617b str r3, [r7, #20] + 80470be: 2300 movs r3, #0 + 80470c0: 617b str r3, [r7, #20] int other_datagrams; /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, * but don't free the datagram that 'fraghdr' belongs to! */ do { oldest = NULL; - 8047082: 2300 movs r3, #0 - 8047084: 623b str r3, [r7, #32] + 80470c2: 2300 movs r3, #0 + 80470c4: 623b str r3, [r7, #32] prev = NULL; - 8047086: 2300 movs r3, #0 - 8047088: 61fb str r3, [r7, #28] + 80470c6: 2300 movs r3, #0 + 80470c8: 61fb str r3, [r7, #28] oldest_prev = NULL; - 804708a: 2300 movs r3, #0 - 804708c: 61bb str r3, [r7, #24] + 80470ca: 2300 movs r3, #0 + 80470cc: 61bb str r3, [r7, #24] other_datagrams = 0; - 804708e: 2300 movs r3, #0 - 8047090: 613b str r3, [r7, #16] + 80470ce: 2300 movs r3, #0 + 80470d0: 613b str r3, [r7, #16] r = reassdatagrams; - 8047092: 4b28 ldr r3, [pc, #160] ; (8047134 ) - 8047094: 681b ldr r3, [r3, #0] - 8047096: 627b str r3, [r7, #36] ; 0x24 + 80470d2: 4b28 ldr r3, [pc, #160] ; (8047174 ) + 80470d4: 681b ldr r3, [r3, #0] + 80470d6: 627b str r3, [r7, #36] ; 0x24 while (r != NULL) { - 8047098: e030 b.n 80470fc + 80470d8: e030 b.n 804713c if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) { - 804709a: 6a7b ldr r3, [r7, #36] ; 0x24 - 804709c: 695a ldr r2, [r3, #20] - 804709e: 687b ldr r3, [r7, #4] - 80470a0: 68db ldr r3, [r3, #12] - 80470a2: 429a cmp r2, r3 - 80470a4: d10c bne.n 80470c0 - 80470a6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470a8: 699a ldr r2, [r3, #24] - 80470aa: 687b ldr r3, [r7, #4] - 80470ac: 691b ldr r3, [r3, #16] - 80470ae: 429a cmp r2, r3 - 80470b0: d106 bne.n 80470c0 - 80470b2: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470b4: 899a ldrh r2, [r3, #12] - 80470b6: 687b ldr r3, [r7, #4] - 80470b8: 889b ldrh r3, [r3, #4] - 80470ba: b29b uxth r3, r3 - 80470bc: 429a cmp r2, r3 - 80470be: d014 beq.n 80470ea + 80470da: 6a7b ldr r3, [r7, #36] ; 0x24 + 80470dc: 695a ldr r2, [r3, #20] + 80470de: 687b ldr r3, [r7, #4] + 80470e0: 68db ldr r3, [r3, #12] + 80470e2: 429a cmp r2, r3 + 80470e4: d10c bne.n 8047100 + 80470e6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80470e8: 699a ldr r2, [r3, #24] + 80470ea: 687b ldr r3, [r7, #4] + 80470ec: 691b ldr r3, [r3, #16] + 80470ee: 429a cmp r2, r3 + 80470f0: d106 bne.n 8047100 + 80470f2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80470f4: 899a ldrh r2, [r3, #12] + 80470f6: 687b ldr r3, [r7, #4] + 80470f8: 889b ldrh r3, [r3, #4] + 80470fa: b29b uxth r3, r3 + 80470fc: 429a cmp r2, r3 + 80470fe: d014 beq.n 804712a /* Not the same datagram as fraghdr */ other_datagrams++; - 80470c0: 693b ldr r3, [r7, #16] - 80470c2: 3301 adds r3, #1 - 80470c4: 613b str r3, [r7, #16] + 8047100: 693b ldr r3, [r7, #16] + 8047102: 3301 adds r3, #1 + 8047104: 613b str r3, [r7, #16] if (oldest == NULL) { - 80470c6: 6a3b ldr r3, [r7, #32] - 80470c8: 2b00 cmp r3, #0 - 80470ca: d104 bne.n 80470d6 + 8047106: 6a3b ldr r3, [r7, #32] + 8047108: 2b00 cmp r3, #0 + 804710a: d104 bne.n 8047116 oldest = r; - 80470cc: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470ce: 623b str r3, [r7, #32] + 804710c: 6a7b ldr r3, [r7, #36] ; 0x24 + 804710e: 623b str r3, [r7, #32] oldest_prev = prev; - 80470d0: 69fb ldr r3, [r7, #28] - 80470d2: 61bb str r3, [r7, #24] - 80470d4: e009 b.n 80470ea + 8047110: 69fb ldr r3, [r7, #28] + 8047112: 61bb str r3, [r7, #24] + 8047114: e009 b.n 804712a } else if (r->timer <= oldest->timer) { - 80470d6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470d8: 7fda ldrb r2, [r3, #31] - 80470da: 6a3b ldr r3, [r7, #32] - 80470dc: 7fdb ldrb r3, [r3, #31] - 80470de: 429a cmp r2, r3 - 80470e0: d803 bhi.n 80470ea + 8047116: 6a7b ldr r3, [r7, #36] ; 0x24 + 8047118: 7fda ldrb r2, [r3, #31] + 804711a: 6a3b ldr r3, [r7, #32] + 804711c: 7fdb ldrb r3, [r3, #31] + 804711e: 429a cmp r2, r3 + 8047120: d803 bhi.n 804712a /* older than the previous oldest */ oldest = r; - 80470e2: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470e4: 623b str r3, [r7, #32] + 8047122: 6a7b ldr r3, [r7, #36] ; 0x24 + 8047124: 623b str r3, [r7, #32] oldest_prev = prev; - 80470e6: 69fb ldr r3, [r7, #28] - 80470e8: 61bb str r3, [r7, #24] + 8047126: 69fb ldr r3, [r7, #28] + 8047128: 61bb str r3, [r7, #24] } } if (r->next != NULL) { - 80470ea: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470ec: 681b ldr r3, [r3, #0] - 80470ee: 2b00 cmp r3, #0 - 80470f0: d001 beq.n 80470f6 + 804712a: 6a7b ldr r3, [r7, #36] ; 0x24 + 804712c: 681b ldr r3, [r3, #0] + 804712e: 2b00 cmp r3, #0 + 8047130: d001 beq.n 8047136 prev = r; - 80470f2: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470f4: 61fb str r3, [r7, #28] + 8047132: 6a7b ldr r3, [r7, #36] ; 0x24 + 8047134: 61fb str r3, [r7, #28] } r = r->next; - 80470f6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470f8: 681b ldr r3, [r3, #0] - 80470fa: 627b str r3, [r7, #36] ; 0x24 + 8047136: 6a7b ldr r3, [r7, #36] ; 0x24 + 8047138: 681b ldr r3, [r3, #0] + 804713a: 627b str r3, [r7, #36] ; 0x24 while (r != NULL) { - 80470fc: 6a7b ldr r3, [r7, #36] ; 0x24 - 80470fe: 2b00 cmp r3, #0 - 8047100: d1cb bne.n 804709a + 804713c: 6a7b ldr r3, [r7, #36] ; 0x24 + 804713e: 2b00 cmp r3, #0 + 8047140: d1cb bne.n 80470da } if (oldest != NULL) { - 8047102: 6a3b ldr r3, [r7, #32] - 8047104: 2b00 cmp r3, #0 - 8047106: d008 beq.n 804711a + 8047142: 6a3b ldr r3, [r7, #32] + 8047144: 2b00 cmp r3, #0 + 8047146: d008 beq.n 804715a pbufs_freed_current = ip_reass_free_complete_datagram(oldest, oldest_prev); - 8047108: 69b9 ldr r1, [r7, #24] - 804710a: 6a38 ldr r0, [r7, #32] - 804710c: f7ff ff0e bl 8046f2c - 8047110: 60f8 str r0, [r7, #12] + 8047148: 69b9 ldr r1, [r7, #24] + 804714a: 6a38 ldr r0, [r7, #32] + 804714c: f7ff ff0e bl 8046f6c + 8047150: 60f8 str r0, [r7, #12] pbufs_freed += pbufs_freed_current; - 8047112: 697a ldr r2, [r7, #20] - 8047114: 68fb ldr r3, [r7, #12] - 8047116: 4413 add r3, r2 - 8047118: 617b str r3, [r7, #20] + 8047152: 697a ldr r2, [r7, #20] + 8047154: 68fb ldr r3, [r7, #12] + 8047156: 4413 add r3, r2 + 8047158: 617b str r3, [r7, #20] } } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1)); - 804711a: 697a ldr r2, [r7, #20] - 804711c: 683b ldr r3, [r7, #0] - 804711e: 429a cmp r2, r3 - 8047120: da02 bge.n 8047128 - 8047122: 693b ldr r3, [r7, #16] - 8047124: 2b01 cmp r3, #1 - 8047126: dcac bgt.n 8047082 + 804715a: 697a ldr r2, [r7, #20] + 804715c: 683b ldr r3, [r7, #0] + 804715e: 429a cmp r2, r3 + 8047160: da02 bge.n 8047168 + 8047162: 693b ldr r3, [r7, #16] + 8047164: 2b01 cmp r3, #1 + 8047166: dcac bgt.n 80470c2 return pbufs_freed; - 8047128: 697b ldr r3, [r7, #20] + 8047168: 697b ldr r3, [r7, #20] } - 804712a: 4618 mov r0, r3 - 804712c: 3728 adds r7, #40 ; 0x28 - 804712e: 46bd mov sp, r7 - 8047130: bd80 pop {r7, pc} - 8047132: bf00 nop - 8047134: 2400ec3c .word 0x2400ec3c + 804716a: 4618 mov r0, r3 + 804716c: 3728 adds r7, #40 ; 0x28 + 804716e: 46bd mov sp, r7 + 8047170: bd80 pop {r7, pc} + 8047172: bf00 nop + 8047174: 2400ec3c .word 0x2400ec3c -08047138 : +08047178 : * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space) * @return A pointer to the queue location into which the fragment was enqueued */ static struct ip_reassdata * ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen) { - 8047138: b580 push {r7, lr} - 804713a: b084 sub sp, #16 - 804713c: af00 add r7, sp, #0 - 804713e: 6078 str r0, [r7, #4] - 8047140: 6039 str r1, [r7, #0] + 8047178: b580 push {r7, lr} + 804717a: b084 sub sp, #16 + 804717c: af00 add r7, sp, #0 + 804717e: 6078 str r0, [r7, #4] + 8047180: 6039 str r1, [r7, #0] #if ! IP_REASS_FREE_OLDEST LWIP_UNUSED_ARG(clen); #endif /* No matching previous fragment found, allocate a new reassdata struct */ ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - 8047142: 2004 movs r0, #4 - 8047144: f7f6 fc72 bl 803da2c - 8047148: 60f8 str r0, [r7, #12] + 8047182: 2004 movs r0, #4 + 8047184: f7f6 fc72 bl 803da6c + 8047188: 60f8 str r0, [r7, #12] if (ipr == NULL) { - 804714a: 68fb ldr r3, [r7, #12] - 804714c: 2b00 cmp r3, #0 - 804714e: d110 bne.n 8047172 + 804718a: 68fb ldr r3, [r7, #12] + 804718c: 2b00 cmp r3, #0 + 804718e: d110 bne.n 80471b2 #if IP_REASS_FREE_OLDEST if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) { - 8047150: 6839 ldr r1, [r7, #0] - 8047152: 6878 ldr r0, [r7, #4] - 8047154: f7ff ff8e bl 8047074 - 8047158: 4602 mov r2, r0 - 804715a: 683b ldr r3, [r7, #0] - 804715c: 4293 cmp r3, r2 - 804715e: dc03 bgt.n 8047168 + 8047190: 6839 ldr r1, [r7, #0] + 8047192: 6878 ldr r0, [r7, #4] + 8047194: f7ff ff8e bl 80470b4 + 8047198: 4602 mov r2, r0 + 804719a: 683b ldr r3, [r7, #0] + 804719c: 4293 cmp r3, r2 + 804719e: dc03 bgt.n 80471a8 ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - 8047160: 2004 movs r0, #4 - 8047162: f7f6 fc63 bl 803da2c - 8047166: 60f8 str r0, [r7, #12] + 80471a0: 2004 movs r0, #4 + 80471a2: f7f6 fc63 bl 803da6c + 80471a6: 60f8 str r0, [r7, #12] } if (ipr == NULL) - 8047168: 68fb ldr r3, [r7, #12] - 804716a: 2b00 cmp r3, #0 - 804716c: d101 bne.n 8047172 + 80471a8: 68fb ldr r3, [r7, #12] + 80471aa: 2b00 cmp r3, #0 + 80471ac: d101 bne.n 80471b2 #endif /* IP_REASS_FREE_OLDEST */ { IPFRAG_STATS_INC(ip_frag.memerr); LWIP_DEBUGF(IP_REASS_DEBUG, ("Failed to alloc reassdata struct\n")); return NULL; - 804716e: 2300 movs r3, #0 - 8047170: e016 b.n 80471a0 + 80471ae: 2300 movs r3, #0 + 80471b0: e016 b.n 80471e0 } } memset(ipr, 0, sizeof(struct ip_reassdata)); - 8047172: 2220 movs r2, #32 - 8047174: 2100 movs r1, #0 - 8047176: 68f8 ldr r0, [r7, #12] - 8047178: f000 fe2c bl 8047dd4 + 80471b2: 2220 movs r2, #32 + 80471b4: 2100 movs r1, #0 + 80471b6: 68f8 ldr r0, [r7, #12] + 80471b8: f000 fe2c bl 8047e14 ipr->timer = IP_REASS_MAXAGE; - 804717c: 68fb ldr r3, [r7, #12] - 804717e: 220f movs r2, #15 - 8047180: 77da strb r2, [r3, #31] + 80471bc: 68fb ldr r3, [r7, #12] + 80471be: 220f movs r2, #15 + 80471c0: 77da strb r2, [r3, #31] /* enqueue the new structure to the front of the list */ ipr->next = reassdatagrams; - 8047182: 4b09 ldr r3, [pc, #36] ; (80471a8 ) - 8047184: 681a ldr r2, [r3, #0] - 8047186: 68fb ldr r3, [r7, #12] - 8047188: 601a str r2, [r3, #0] + 80471c2: 4b09 ldr r3, [pc, #36] ; (80471e8 ) + 80471c4: 681a ldr r2, [r3, #0] + 80471c6: 68fb ldr r3, [r7, #12] + 80471c8: 601a str r2, [r3, #0] reassdatagrams = ipr; - 804718a: 4a07 ldr r2, [pc, #28] ; (80471a8 ) - 804718c: 68fb ldr r3, [r7, #12] - 804718e: 6013 str r3, [r2, #0] + 80471ca: 4a07 ldr r2, [pc, #28] ; (80471e8 ) + 80471cc: 68fb ldr r3, [r7, #12] + 80471ce: 6013 str r3, [r2, #0] /* copy the ip header for later tests and input */ /* @todo: no ip options supported? */ SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN); - 8047190: 68fb ldr r3, [r7, #12] - 8047192: 3308 adds r3, #8 - 8047194: 2214 movs r2, #20 - 8047196: 6879 ldr r1, [r7, #4] - 8047198: 4618 mov r0, r3 - 804719a: f000 fdf3 bl 8047d84 + 80471d0: 68fb ldr r3, [r7, #12] + 80471d2: 3308 adds r3, #8 + 80471d4: 2214 movs r2, #20 + 80471d6: 6879 ldr r1, [r7, #4] + 80471d8: 4618 mov r0, r3 + 80471da: f000 fdf3 bl 8047dc4 return ipr; - 804719e: 68fb ldr r3, [r7, #12] + 80471de: 68fb ldr r3, [r7, #12] } - 80471a0: 4618 mov r0, r3 - 80471a2: 3710 adds r7, #16 - 80471a4: 46bd mov sp, r7 - 80471a6: bd80 pop {r7, pc} - 80471a8: 2400ec3c .word 0x2400ec3c + 80471e0: 4618 mov r0, r3 + 80471e2: 3710 adds r7, #16 + 80471e4: 46bd mov sp, r7 + 80471e6: bd80 pop {r7, pc} + 80471e8: 2400ec3c .word 0x2400ec3c -080471ac : +080471ec : * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs. * @param ipr points to the queue entry to dequeue */ static void ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) { - 80471ac: b580 push {r7, lr} - 80471ae: b082 sub sp, #8 - 80471b0: af00 add r7, sp, #0 - 80471b2: 6078 str r0, [r7, #4] - 80471b4: 6039 str r1, [r7, #0] + 80471ec: b580 push {r7, lr} + 80471ee: b082 sub sp, #8 + 80471f0: af00 add r7, sp, #0 + 80471f2: 6078 str r0, [r7, #4] + 80471f4: 6039 str r1, [r7, #0] /* dequeue the reass struct */ if (reassdatagrams == ipr) { - 80471b6: 4b10 ldr r3, [pc, #64] ; (80471f8 ) - 80471b8: 681b ldr r3, [r3, #0] - 80471ba: 687a ldr r2, [r7, #4] - 80471bc: 429a cmp r2, r3 - 80471be: d104 bne.n 80471ca + 80471f6: 4b10 ldr r3, [pc, #64] ; (8047238 ) + 80471f8: 681b ldr r3, [r3, #0] + 80471fa: 687a ldr r2, [r7, #4] + 80471fc: 429a cmp r2, r3 + 80471fe: d104 bne.n 804720a /* it was the first in the list */ reassdatagrams = ipr->next; - 80471c0: 687b ldr r3, [r7, #4] - 80471c2: 681b ldr r3, [r3, #0] - 80471c4: 4a0c ldr r2, [pc, #48] ; (80471f8 ) - 80471c6: 6013 str r3, [r2, #0] - 80471c8: e00d b.n 80471e6 + 8047200: 687b ldr r3, [r7, #4] + 8047202: 681b ldr r3, [r3, #0] + 8047204: 4a0c ldr r2, [pc, #48] ; (8047238 ) + 8047206: 6013 str r3, [r2, #0] + 8047208: e00d b.n 8047226 } else { /* it wasn't the first, so it must have a valid 'prev' */ LWIP_ASSERT("sanity check linked list", prev != NULL); - 80471ca: 683b ldr r3, [r7, #0] - 80471cc: 2b00 cmp r3, #0 - 80471ce: d106 bne.n 80471de - 80471d0: 4b0a ldr r3, [pc, #40] ; (80471fc ) - 80471d2: f240 1245 movw r2, #325 ; 0x145 - 80471d6: 490a ldr r1, [pc, #40] ; (8047200 ) - 80471d8: 480a ldr r0, [pc, #40] ; (8047204 ) - 80471da: f000 fee3 bl 8047fa4 + 804720a: 683b ldr r3, [r7, #0] + 804720c: 2b00 cmp r3, #0 + 804720e: d106 bne.n 804721e + 8047210: 4b0a ldr r3, [pc, #40] ; (804723c ) + 8047212: f240 1245 movw r2, #325 ; 0x145 + 8047216: 490a ldr r1, [pc, #40] ; (8047240 ) + 8047218: 480a ldr r0, [pc, #40] ; (8047244 ) + 804721a: f000 fee3 bl 8047fe4 prev->next = ipr->next; - 80471de: 687b ldr r3, [r7, #4] - 80471e0: 681a ldr r2, [r3, #0] - 80471e2: 683b ldr r3, [r7, #0] - 80471e4: 601a str r2, [r3, #0] + 804721e: 687b ldr r3, [r7, #4] + 8047220: 681a ldr r2, [r3, #0] + 8047222: 683b ldr r3, [r7, #0] + 8047224: 601a str r2, [r3, #0] } /* now we can free the ip_reassdata struct */ memp_free(MEMP_REASSDATA, ipr); - 80471e6: 6879 ldr r1, [r7, #4] - 80471e8: 2004 movs r0, #4 - 80471ea: f7f6 fc8f bl 803db0c -} - 80471ee: bf00 nop - 80471f0: 3708 adds r7, #8 - 80471f2: 46bd mov sp, r7 - 80471f4: bd80 pop {r7, pc} - 80471f6: bf00 nop - 80471f8: 2400ec3c .word 0x2400ec3c - 80471fc: 0804c888 .word 0x0804c888 - 8047200: 0804c950 .word 0x0804c950 - 8047204: 0804c8d0 .word 0x0804c8d0 - -08047208 : + 8047226: 6879 ldr r1, [r7, #4] + 8047228: 2004 movs r0, #4 + 804722a: f7f6 fc8f bl 803db4c +} + 804722e: bf00 nop + 8047230: 3708 adds r7, #8 + 8047232: 46bd mov sp, r7 + 8047234: bd80 pop {r7, pc} + 8047236: bf00 nop + 8047238: 2400ec3c .word 0x2400ec3c + 804723c: 0804c8c8 .word 0x0804c8c8 + 8047240: 0804c990 .word 0x0804c990 + 8047244: 0804c910 .word 0x0804c910 + +08047248 : * @param is_last is 1 if this pbuf has MF==0 (ipr->flags not updated yet) * @return see IP_REASS_VALIDATE_* defines */ static int ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p, int is_last) { - 8047208: b580 push {r7, lr} - 804720a: b08c sub sp, #48 ; 0x30 - 804720c: af00 add r7, sp, #0 - 804720e: 60f8 str r0, [r7, #12] - 8047210: 60b9 str r1, [r7, #8] - 8047212: 607a str r2, [r7, #4] + 8047248: b580 push {r7, lr} + 804724a: b08c sub sp, #48 ; 0x30 + 804724c: af00 add r7, sp, #0 + 804724e: 60f8 str r0, [r7, #12] + 8047250: 60b9 str r1, [r7, #8] + 8047252: 607a str r2, [r7, #4] struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev = NULL; - 8047214: 2300 movs r3, #0 - 8047216: 62bb str r3, [r7, #40] ; 0x28 + 8047254: 2300 movs r3, #0 + 8047256: 62bb str r3, [r7, #40] ; 0x28 struct pbuf *q; u16_t offset, len; u8_t hlen; struct ip_hdr *fraghdr; int valid = 1; - 8047218: 2301 movs r3, #1 - 804721a: 623b str r3, [r7, #32] + 8047258: 2301 movs r3, #1 + 804725a: 623b str r3, [r7, #32] /* Extract length and fragment offset from current fragment */ fraghdr = (struct ip_hdr *)new_p->payload; - 804721c: 68bb ldr r3, [r7, #8] - 804721e: 685b ldr r3, [r3, #4] - 8047220: 61fb str r3, [r7, #28] + 804725c: 68bb ldr r3, [r7, #8] + 804725e: 685b ldr r3, [r3, #4] + 8047260: 61fb str r3, [r7, #28] len = lwip_ntohs(IPH_LEN(fraghdr)); - 8047222: 69fb ldr r3, [r7, #28] - 8047224: 885b ldrh r3, [r3, #2] - 8047226: b29b uxth r3, r3 - 8047228: 4618 mov r0, r3 - 804722a: f7f5 fecf bl 803cfcc - 804722e: 4603 mov r3, r0 - 8047230: 837b strh r3, [r7, #26] + 8047262: 69fb ldr r3, [r7, #28] + 8047264: 885b ldrh r3, [r3, #2] + 8047266: b29b uxth r3, r3 + 8047268: 4618 mov r0, r3 + 804726a: f7f5 fecf bl 803d00c + 804726e: 4603 mov r3, r0 + 8047270: 837b strh r3, [r7, #26] hlen = IPH_HL_BYTES(fraghdr); - 8047232: 69fb ldr r3, [r7, #28] - 8047234: 781b ldrb r3, [r3, #0] - 8047236: f003 030f and.w r3, r3, #15 - 804723a: b2db uxtb r3, r3 - 804723c: 009b lsls r3, r3, #2 - 804723e: 767b strb r3, [r7, #25] + 8047272: 69fb ldr r3, [r7, #28] + 8047274: 781b ldrb r3, [r3, #0] + 8047276: f003 030f and.w r3, r3, #15 + 804727a: b2db uxtb r3, r3 + 804727c: 009b lsls r3, r3, #2 + 804727e: 767b strb r3, [r7, #25] if (hlen > len) { - 8047240: 7e7b ldrb r3, [r7, #25] - 8047242: b29b uxth r3, r3 - 8047244: 8b7a ldrh r2, [r7, #26] - 8047246: 429a cmp r2, r3 - 8047248: d202 bcs.n 8047250 + 8047280: 7e7b ldrb r3, [r7, #25] + 8047282: b29b uxth r3, r3 + 8047284: 8b7a ldrh r2, [r7, #26] + 8047286: 429a cmp r2, r3 + 8047288: d202 bcs.n 8047290 /* invalid datagram */ return IP_REASS_VALIDATE_PBUF_DROPPED; - 804724a: f04f 33ff mov.w r3, #4294967295 - 804724e: e135 b.n 80474bc + 804728a: f04f 33ff mov.w r3, #4294967295 + 804728e: e135 b.n 80474fc } len = (u16_t)(len - hlen); - 8047250: 7e7b ldrb r3, [r7, #25] - 8047252: b29b uxth r3, r3 - 8047254: 8b7a ldrh r2, [r7, #26] - 8047256: 1ad3 subs r3, r2, r3 - 8047258: 837b strh r3, [r7, #26] + 8047290: 7e7b ldrb r3, [r7, #25] + 8047292: b29b uxth r3, r3 + 8047294: 8b7a ldrh r2, [r7, #26] + 8047296: 1ad3 subs r3, r2, r3 + 8047298: 837b strh r3, [r7, #26] offset = IPH_OFFSET_BYTES(fraghdr); - 804725a: 69fb ldr r3, [r7, #28] - 804725c: 88db ldrh r3, [r3, #6] - 804725e: b29b uxth r3, r3 - 8047260: 4618 mov r0, r3 - 8047262: f7f5 feb3 bl 803cfcc - 8047266: 4603 mov r3, r0 - 8047268: f3c3 030c ubfx r3, r3, #0, #13 - 804726c: b29b uxth r3, r3 - 804726e: 00db lsls r3, r3, #3 - 8047270: 82fb strh r3, [r7, #22] + 804729a: 69fb ldr r3, [r7, #28] + 804729c: 88db ldrh r3, [r3, #6] + 804729e: b29b uxth r3, r3 + 80472a0: 4618 mov r0, r3 + 80472a2: f7f5 feb3 bl 803d00c + 80472a6: 4603 mov r3, r0 + 80472a8: f3c3 030c ubfx r3, r3, #0, #13 + 80472ac: b29b uxth r3, r3 + 80472ae: 00db lsls r3, r3, #3 + 80472b0: 82fb strh r3, [r7, #22] /* overwrite the fragment's ip header from the pbuf with our helper struct, * and setup the embedded helper structure. */ /* make sure the struct ip_reass_helper fits into the IP header */ LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN", sizeof(struct ip_reass_helper) <= IP_HLEN); iprh = (struct ip_reass_helper *)new_p->payload; - 8047272: 68bb ldr r3, [r7, #8] - 8047274: 685b ldr r3, [r3, #4] - 8047276: 62fb str r3, [r7, #44] ; 0x2c + 80472b2: 68bb ldr r3, [r7, #8] + 80472b4: 685b ldr r3, [r3, #4] + 80472b6: 62fb str r3, [r7, #44] ; 0x2c iprh->next_pbuf = NULL; - 8047278: 6afb ldr r3, [r7, #44] ; 0x2c - 804727a: 2200 movs r2, #0 - 804727c: 701a strb r2, [r3, #0] - 804727e: 2200 movs r2, #0 - 8047280: 705a strb r2, [r3, #1] - 8047282: 2200 movs r2, #0 - 8047284: 709a strb r2, [r3, #2] - 8047286: 2200 movs r2, #0 - 8047288: 70da strb r2, [r3, #3] + 80472b8: 6afb ldr r3, [r7, #44] ; 0x2c + 80472ba: 2200 movs r2, #0 + 80472bc: 701a strb r2, [r3, #0] + 80472be: 2200 movs r2, #0 + 80472c0: 705a strb r2, [r3, #1] + 80472c2: 2200 movs r2, #0 + 80472c4: 709a strb r2, [r3, #2] + 80472c6: 2200 movs r2, #0 + 80472c8: 70da strb r2, [r3, #3] iprh->start = offset; - 804728a: 6afb ldr r3, [r7, #44] ; 0x2c - 804728c: 8afa ldrh r2, [r7, #22] - 804728e: 809a strh r2, [r3, #4] + 80472ca: 6afb ldr r3, [r7, #44] ; 0x2c + 80472cc: 8afa ldrh r2, [r7, #22] + 80472ce: 809a strh r2, [r3, #4] iprh->end = (u16_t)(offset + len); - 8047290: 8afa ldrh r2, [r7, #22] - 8047292: 8b7b ldrh r3, [r7, #26] - 8047294: 4413 add r3, r2 - 8047296: b29a uxth r2, r3 - 8047298: 6afb ldr r3, [r7, #44] ; 0x2c - 804729a: 80da strh r2, [r3, #6] + 80472d0: 8afa ldrh r2, [r7, #22] + 80472d2: 8b7b ldrh r3, [r7, #26] + 80472d4: 4413 add r3, r2 + 80472d6: b29a uxth r2, r3 + 80472d8: 6afb ldr r3, [r7, #44] ; 0x2c + 80472da: 80da strh r2, [r3, #6] if (iprh->end < offset) { - 804729c: 6afb ldr r3, [r7, #44] ; 0x2c - 804729e: 88db ldrh r3, [r3, #6] - 80472a0: b29b uxth r3, r3 - 80472a2: 8afa ldrh r2, [r7, #22] - 80472a4: 429a cmp r2, r3 - 80472a6: d902 bls.n 80472ae + 80472dc: 6afb ldr r3, [r7, #44] ; 0x2c + 80472de: 88db ldrh r3, [r3, #6] + 80472e0: b29b uxth r3, r3 + 80472e2: 8afa ldrh r2, [r7, #22] + 80472e4: 429a cmp r2, r3 + 80472e6: d902 bls.n 80472ee /* u16_t overflow, cannot handle this */ return IP_REASS_VALIDATE_PBUF_DROPPED; - 80472a8: f04f 33ff mov.w r3, #4294967295 - 80472ac: e106 b.n 80474bc + 80472e8: f04f 33ff mov.w r3, #4294967295 + 80472ec: e106 b.n 80474fc } /* Iterate through until we either get to the end of the list (append), * or we find one with a larger offset (insert). */ for (q = ipr->p; q != NULL;) { - 80472ae: 68fb ldr r3, [r7, #12] - 80472b0: 685b ldr r3, [r3, #4] - 80472b2: 627b str r3, [r7, #36] ; 0x24 - 80472b4: e068 b.n 8047388 + 80472ee: 68fb ldr r3, [r7, #12] + 80472f0: 685b ldr r3, [r3, #4] + 80472f2: 627b str r3, [r7, #36] ; 0x24 + 80472f4: e068 b.n 80473c8 iprh_tmp = (struct ip_reass_helper *)q->payload; - 80472b6: 6a7b ldr r3, [r7, #36] ; 0x24 - 80472b8: 685b ldr r3, [r3, #4] - 80472ba: 613b str r3, [r7, #16] + 80472f6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80472f8: 685b ldr r3, [r3, #4] + 80472fa: 613b str r3, [r7, #16] if (iprh->start < iprh_tmp->start) { - 80472bc: 6afb ldr r3, [r7, #44] ; 0x2c - 80472be: 889b ldrh r3, [r3, #4] - 80472c0: b29a uxth r2, r3 - 80472c2: 693b ldr r3, [r7, #16] - 80472c4: 889b ldrh r3, [r3, #4] - 80472c6: b29b uxth r3, r3 - 80472c8: 429a cmp r2, r3 - 80472ca: d235 bcs.n 8047338 + 80472fc: 6afb ldr r3, [r7, #44] ; 0x2c + 80472fe: 889b ldrh r3, [r3, #4] + 8047300: b29a uxth r2, r3 + 8047302: 693b ldr r3, [r7, #16] + 8047304: 889b ldrh r3, [r3, #4] + 8047306: b29b uxth r3, r3 + 8047308: 429a cmp r2, r3 + 804730a: d235 bcs.n 8047378 /* the new pbuf should be inserted before this */ iprh->next_pbuf = q; - 80472cc: 6afb ldr r3, [r7, #44] ; 0x2c - 80472ce: 6a7a ldr r2, [r7, #36] ; 0x24 - 80472d0: 601a str r2, [r3, #0] + 804730c: 6afb ldr r3, [r7, #44] ; 0x2c + 804730e: 6a7a ldr r2, [r7, #36] ; 0x24 + 8047310: 601a str r2, [r3, #0] if (iprh_prev != NULL) { - 80472d2: 6abb ldr r3, [r7, #40] ; 0x28 - 80472d4: 2b00 cmp r3, #0 - 80472d6: d020 beq.n 804731a + 8047312: 6abb ldr r3, [r7, #40] ; 0x28 + 8047314: 2b00 cmp r3, #0 + 8047316: d020 beq.n 804735a /* not the fragment with the lowest offset */ #if IP_REASS_CHECK_OVERLAP if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) { - 80472d8: 6afb ldr r3, [r7, #44] ; 0x2c - 80472da: 889b ldrh r3, [r3, #4] - 80472dc: b29a uxth r2, r3 - 80472de: 6abb ldr r3, [r7, #40] ; 0x28 - 80472e0: 88db ldrh r3, [r3, #6] - 80472e2: b29b uxth r3, r3 - 80472e4: 429a cmp r2, r3 - 80472e6: d307 bcc.n 80472f8 - 80472e8: 6afb ldr r3, [r7, #44] ; 0x2c - 80472ea: 88db ldrh r3, [r3, #6] - 80472ec: b29a uxth r2, r3 - 80472ee: 693b ldr r3, [r7, #16] - 80472f0: 889b ldrh r3, [r3, #4] - 80472f2: b29b uxth r3, r3 - 80472f4: 429a cmp r2, r3 - 80472f6: d902 bls.n 80472fe + 8047318: 6afb ldr r3, [r7, #44] ; 0x2c + 804731a: 889b ldrh r3, [r3, #4] + 804731c: b29a uxth r2, r3 + 804731e: 6abb ldr r3, [r7, #40] ; 0x28 + 8047320: 88db ldrh r3, [r3, #6] + 8047322: b29b uxth r3, r3 + 8047324: 429a cmp r2, r3 + 8047326: d307 bcc.n 8047338 + 8047328: 6afb ldr r3, [r7, #44] ; 0x2c + 804732a: 88db ldrh r3, [r3, #6] + 804732c: b29a uxth r2, r3 + 804732e: 693b ldr r3, [r7, #16] + 8047330: 889b ldrh r3, [r3, #4] + 8047332: b29b uxth r3, r3 + 8047334: 429a cmp r2, r3 + 8047336: d902 bls.n 804733e /* fragment overlaps with previous or following, throw away */ return IP_REASS_VALIDATE_PBUF_DROPPED; - 80472f8: f04f 33ff mov.w r3, #4294967295 - 80472fc: e0de b.n 80474bc + 8047338: f04f 33ff mov.w r3, #4294967295 + 804733c: e0de b.n 80474fc } #endif /* IP_REASS_CHECK_OVERLAP */ iprh_prev->next_pbuf = new_p; - 80472fe: 6abb ldr r3, [r7, #40] ; 0x28 - 8047300: 68ba ldr r2, [r7, #8] - 8047302: 601a str r2, [r3, #0] + 804733e: 6abb ldr r3, [r7, #40] ; 0x28 + 8047340: 68ba ldr r2, [r7, #8] + 8047342: 601a str r2, [r3, #0] if (iprh_prev->end != iprh->start) { - 8047304: 6abb ldr r3, [r7, #40] ; 0x28 - 8047306: 88db ldrh r3, [r3, #6] - 8047308: b29a uxth r2, r3 - 804730a: 6afb ldr r3, [r7, #44] ; 0x2c - 804730c: 889b ldrh r3, [r3, #4] - 804730e: b29b uxth r3, r3 - 8047310: 429a cmp r2, r3 - 8047312: d03d beq.n 8047390 + 8047344: 6abb ldr r3, [r7, #40] ; 0x28 + 8047346: 88db ldrh r3, [r3, #6] + 8047348: b29a uxth r2, r3 + 804734a: 6afb ldr r3, [r7, #44] ; 0x2c + 804734c: 889b ldrh r3, [r3, #4] + 804734e: b29b uxth r3, r3 + 8047350: 429a cmp r2, r3 + 8047352: d03d beq.n 80473d0 /* There is a fragment missing between the current * and the previous fragment */ valid = 0; - 8047314: 2300 movs r3, #0 - 8047316: 623b str r3, [r7, #32] + 8047354: 2300 movs r3, #0 + 8047356: 623b str r3, [r7, #32] } #endif /* IP_REASS_CHECK_OVERLAP */ /* fragment with the lowest offset */ ipr->p = new_p; } break; - 8047318: e03a b.n 8047390 + 8047358: e03a b.n 80473d0 if (iprh->end > iprh_tmp->start) { - 804731a: 6afb ldr r3, [r7, #44] ; 0x2c - 804731c: 88db ldrh r3, [r3, #6] - 804731e: b29a uxth r2, r3 - 8047320: 693b ldr r3, [r7, #16] - 8047322: 889b ldrh r3, [r3, #4] - 8047324: b29b uxth r3, r3 - 8047326: 429a cmp r2, r3 - 8047328: d902 bls.n 8047330 + 804735a: 6afb ldr r3, [r7, #44] ; 0x2c + 804735c: 88db ldrh r3, [r3, #6] + 804735e: b29a uxth r2, r3 + 8047360: 693b ldr r3, [r7, #16] + 8047362: 889b ldrh r3, [r3, #4] + 8047364: b29b uxth r3, r3 + 8047366: 429a cmp r2, r3 + 8047368: d902 bls.n 8047370 return IP_REASS_VALIDATE_PBUF_DROPPED; - 804732a: f04f 33ff mov.w r3, #4294967295 - 804732e: e0c5 b.n 80474bc + 804736a: f04f 33ff mov.w r3, #4294967295 + 804736e: e0c5 b.n 80474fc ipr->p = new_p; - 8047330: 68fb ldr r3, [r7, #12] - 8047332: 68ba ldr r2, [r7, #8] - 8047334: 605a str r2, [r3, #4] + 8047370: 68fb ldr r3, [r7, #12] + 8047372: 68ba ldr r2, [r7, #8] + 8047374: 605a str r2, [r3, #4] break; - 8047336: e02b b.n 8047390 + 8047376: e02b b.n 80473d0 } else if (iprh->start == iprh_tmp->start) { - 8047338: 6afb ldr r3, [r7, #44] ; 0x2c - 804733a: 889b ldrh r3, [r3, #4] - 804733c: b29a uxth r2, r3 - 804733e: 693b ldr r3, [r7, #16] - 8047340: 889b ldrh r3, [r3, #4] - 8047342: b29b uxth r3, r3 - 8047344: 429a cmp r2, r3 - 8047346: d102 bne.n 804734e + 8047378: 6afb ldr r3, [r7, #44] ; 0x2c + 804737a: 889b ldrh r3, [r3, #4] + 804737c: b29a uxth r2, r3 + 804737e: 693b ldr r3, [r7, #16] + 8047380: 889b ldrh r3, [r3, #4] + 8047382: b29b uxth r3, r3 + 8047384: 429a cmp r2, r3 + 8047386: d102 bne.n 804738e /* received the same datagram twice: no need to keep the datagram */ return IP_REASS_VALIDATE_PBUF_DROPPED; - 8047348: f04f 33ff mov.w r3, #4294967295 - 804734c: e0b6 b.n 80474bc + 8047388: f04f 33ff mov.w r3, #4294967295 + 804738c: e0b6 b.n 80474fc #if IP_REASS_CHECK_OVERLAP } else if (iprh->start < iprh_tmp->end) { - 804734e: 6afb ldr r3, [r7, #44] ; 0x2c - 8047350: 889b ldrh r3, [r3, #4] - 8047352: b29a uxth r2, r3 - 8047354: 693b ldr r3, [r7, #16] - 8047356: 88db ldrh r3, [r3, #6] - 8047358: b29b uxth r3, r3 - 804735a: 429a cmp r2, r3 - 804735c: d202 bcs.n 8047364 + 804738e: 6afb ldr r3, [r7, #44] ; 0x2c + 8047390: 889b ldrh r3, [r3, #4] + 8047392: b29a uxth r2, r3 + 8047394: 693b ldr r3, [r7, #16] + 8047396: 88db ldrh r3, [r3, #6] + 8047398: b29b uxth r3, r3 + 804739a: 429a cmp r2, r3 + 804739c: d202 bcs.n 80473a4 /* overlap: no need to keep the new datagram */ return IP_REASS_VALIDATE_PBUF_DROPPED; - 804735e: f04f 33ff mov.w r3, #4294967295 - 8047362: e0ab b.n 80474bc + 804739e: f04f 33ff mov.w r3, #4294967295 + 80473a2: e0ab b.n 80474fc #endif /* IP_REASS_CHECK_OVERLAP */ } else { /* Check if the fragments received so far have no holes. */ if (iprh_prev != NULL) { - 8047364: 6abb ldr r3, [r7, #40] ; 0x28 - 8047366: 2b00 cmp r3, #0 - 8047368: d009 beq.n 804737e + 80473a4: 6abb ldr r3, [r7, #40] ; 0x28 + 80473a6: 2b00 cmp r3, #0 + 80473a8: d009 beq.n 80473be if (iprh_prev->end != iprh_tmp->start) { - 804736a: 6abb ldr r3, [r7, #40] ; 0x28 - 804736c: 88db ldrh r3, [r3, #6] - 804736e: b29a uxth r2, r3 - 8047370: 693b ldr r3, [r7, #16] - 8047372: 889b ldrh r3, [r3, #4] - 8047374: b29b uxth r3, r3 - 8047376: 429a cmp r2, r3 - 8047378: d001 beq.n 804737e + 80473aa: 6abb ldr r3, [r7, #40] ; 0x28 + 80473ac: 88db ldrh r3, [r3, #6] + 80473ae: b29a uxth r2, r3 + 80473b0: 693b ldr r3, [r7, #16] + 80473b2: 889b ldrh r3, [r3, #4] + 80473b4: b29b uxth r3, r3 + 80473b6: 429a cmp r2, r3 + 80473b8: d001 beq.n 80473be /* There is a fragment missing between the current * and the previous fragment */ valid = 0; - 804737a: 2300 movs r3, #0 - 804737c: 623b str r3, [r7, #32] + 80473ba: 2300 movs r3, #0 + 80473bc: 623b str r3, [r7, #32] } } } q = iprh_tmp->next_pbuf; - 804737e: 693b ldr r3, [r7, #16] - 8047380: 681b ldr r3, [r3, #0] - 8047382: 627b str r3, [r7, #36] ; 0x24 + 80473be: 693b ldr r3, [r7, #16] + 80473c0: 681b ldr r3, [r3, #0] + 80473c2: 627b str r3, [r7, #36] ; 0x24 iprh_prev = iprh_tmp; - 8047384: 693b ldr r3, [r7, #16] - 8047386: 62bb str r3, [r7, #40] ; 0x28 + 80473c4: 693b ldr r3, [r7, #16] + 80473c6: 62bb str r3, [r7, #40] ; 0x28 for (q = ipr->p; q != NULL;) { - 8047388: 6a7b ldr r3, [r7, #36] ; 0x24 - 804738a: 2b00 cmp r3, #0 - 804738c: d193 bne.n 80472b6 - 804738e: e000 b.n 8047392 + 80473c8: 6a7b ldr r3, [r7, #36] ; 0x24 + 80473ca: 2b00 cmp r3, #0 + 80473cc: d193 bne.n 80472f6 + 80473ce: e000 b.n 80473d2 break; - 8047390: bf00 nop + 80473d0: bf00 nop } /* If q is NULL, then we made it to the end of the list. Determine what to do now */ if (q == NULL) { - 8047392: 6a7b ldr r3, [r7, #36] ; 0x24 - 8047394: 2b00 cmp r3, #0 - 8047396: d12d bne.n 80473f4 + 80473d2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80473d4: 2b00 cmp r3, #0 + 80473d6: d12d bne.n 8047434 if (iprh_prev != NULL) { - 8047398: 6abb ldr r3, [r7, #40] ; 0x28 - 804739a: 2b00 cmp r3, #0 - 804739c: d01c beq.n 80473d8 + 80473d8: 6abb ldr r3, [r7, #40] ; 0x28 + 80473da: 2b00 cmp r3, #0 + 80473dc: d01c beq.n 8047418 /* this is (for now), the fragment with the highest offset: * chain it to the last fragment */ #if IP_REASS_CHECK_OVERLAP LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); - 804739e: 6abb ldr r3, [r7, #40] ; 0x28 - 80473a0: 88db ldrh r3, [r3, #6] - 80473a2: b29a uxth r2, r3 - 80473a4: 6afb ldr r3, [r7, #44] ; 0x2c - 80473a6: 889b ldrh r3, [r3, #4] - 80473a8: b29b uxth r3, r3 - 80473aa: 429a cmp r2, r3 - 80473ac: d906 bls.n 80473bc - 80473ae: 4b45 ldr r3, [pc, #276] ; (80474c4 ) - 80473b0: f44f 72db mov.w r2, #438 ; 0x1b6 - 80473b4: 4944 ldr r1, [pc, #272] ; (80474c8 ) - 80473b6: 4845 ldr r0, [pc, #276] ; (80474cc ) - 80473b8: f000 fdf4 bl 8047fa4 + 80473de: 6abb ldr r3, [r7, #40] ; 0x28 + 80473e0: 88db ldrh r3, [r3, #6] + 80473e2: b29a uxth r2, r3 + 80473e4: 6afb ldr r3, [r7, #44] ; 0x2c + 80473e6: 889b ldrh r3, [r3, #4] + 80473e8: b29b uxth r3, r3 + 80473ea: 429a cmp r2, r3 + 80473ec: d906 bls.n 80473fc + 80473ee: 4b45 ldr r3, [pc, #276] ; (8047504 ) + 80473f0: f44f 72db mov.w r2, #438 ; 0x1b6 + 80473f4: 4944 ldr r1, [pc, #272] ; (8047508 ) + 80473f6: 4845 ldr r0, [pc, #276] ; (804750c ) + 80473f8: f000 fdf4 bl 8047fe4 #endif /* IP_REASS_CHECK_OVERLAP */ iprh_prev->next_pbuf = new_p; - 80473bc: 6abb ldr r3, [r7, #40] ; 0x28 - 80473be: 68ba ldr r2, [r7, #8] - 80473c0: 601a str r2, [r3, #0] + 80473fc: 6abb ldr r3, [r7, #40] ; 0x28 + 80473fe: 68ba ldr r2, [r7, #8] + 8047400: 601a str r2, [r3, #0] if (iprh_prev->end != iprh->start) { - 80473c2: 6abb ldr r3, [r7, #40] ; 0x28 - 80473c4: 88db ldrh r3, [r3, #6] - 80473c6: b29a uxth r2, r3 - 80473c8: 6afb ldr r3, [r7, #44] ; 0x2c - 80473ca: 889b ldrh r3, [r3, #4] - 80473cc: b29b uxth r3, r3 - 80473ce: 429a cmp r2, r3 - 80473d0: d010 beq.n 80473f4 + 8047402: 6abb ldr r3, [r7, #40] ; 0x28 + 8047404: 88db ldrh r3, [r3, #6] + 8047406: b29a uxth r2, r3 + 8047408: 6afb ldr r3, [r7, #44] ; 0x2c + 804740a: 889b ldrh r3, [r3, #4] + 804740c: b29b uxth r3, r3 + 804740e: 429a cmp r2, r3 + 8047410: d010 beq.n 8047434 valid = 0; - 80473d2: 2300 movs r3, #0 - 80473d4: 623b str r3, [r7, #32] - 80473d6: e00d b.n 80473f4 + 8047412: 2300 movs r3, #0 + 8047414: 623b str r3, [r7, #32] + 8047416: e00d b.n 8047434 } } else { #if IP_REASS_CHECK_OVERLAP LWIP_ASSERT("no previous fragment, this must be the first fragment!", - 80473d8: 68fb ldr r3, [r7, #12] - 80473da: 685b ldr r3, [r3, #4] - 80473dc: 2b00 cmp r3, #0 - 80473de: d006 beq.n 80473ee - 80473e0: 4b38 ldr r3, [pc, #224] ; (80474c4 ) - 80473e2: f44f 72df mov.w r2, #446 ; 0x1be - 80473e6: 493a ldr r1, [pc, #232] ; (80474d0 ) - 80473e8: 4838 ldr r0, [pc, #224] ; (80474cc ) - 80473ea: f000 fddb bl 8047fa4 + 8047418: 68fb ldr r3, [r7, #12] + 804741a: 685b ldr r3, [r3, #4] + 804741c: 2b00 cmp r3, #0 + 804741e: d006 beq.n 804742e + 8047420: 4b38 ldr r3, [pc, #224] ; (8047504 ) + 8047422: f44f 72df mov.w r2, #446 ; 0x1be + 8047426: 493a ldr r1, [pc, #232] ; (8047510 ) + 8047428: 4838 ldr r0, [pc, #224] ; (804750c ) + 804742a: f000 fddb bl 8047fe4 ipr->p == NULL); #endif /* IP_REASS_CHECK_OVERLAP */ /* this is the first fragment we ever received for this ip datagram */ ipr->p = new_p; - 80473ee: 68fb ldr r3, [r7, #12] - 80473f0: 68ba ldr r2, [r7, #8] - 80473f2: 605a str r2, [r3, #4] + 804742e: 68fb ldr r3, [r7, #12] + 8047430: 68ba ldr r2, [r7, #8] + 8047432: 605a str r2, [r3, #4] } } /* At this point, the validation part begins: */ /* If we already received the last fragment */ if (is_last || ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0)) { - 80473f4: 687b ldr r3, [r7, #4] - 80473f6: 2b00 cmp r3, #0 - 80473f8: d105 bne.n 8047406 - 80473fa: 68fb ldr r3, [r7, #12] - 80473fc: 7f9b ldrb r3, [r3, #30] - 80473fe: f003 0301 and.w r3, r3, #1 - 8047402: 2b00 cmp r3, #0 - 8047404: d059 beq.n 80474ba + 8047434: 687b ldr r3, [r7, #4] + 8047436: 2b00 cmp r3, #0 + 8047438: d105 bne.n 8047446 + 804743a: 68fb ldr r3, [r7, #12] + 804743c: 7f9b ldrb r3, [r3, #30] + 804743e: f003 0301 and.w r3, r3, #1 + 8047442: 2b00 cmp r3, #0 + 8047444: d059 beq.n 80474fa /* and had no holes so far */ if (valid) { - 8047406: 6a3b ldr r3, [r7, #32] - 8047408: 2b00 cmp r3, #0 - 804740a: d04f beq.n 80474ac + 8047446: 6a3b ldr r3, [r7, #32] + 8047448: 2b00 cmp r3, #0 + 804744a: d04f beq.n 80474ec /* then check if the rest of the fragments is here */ /* Check if the queue starts with the first datagram */ if ((ipr->p == NULL) || (((struct ip_reass_helper *)ipr->p->payload)->start != 0)) { - 804740c: 68fb ldr r3, [r7, #12] - 804740e: 685b ldr r3, [r3, #4] - 8047410: 2b00 cmp r3, #0 - 8047412: d006 beq.n 8047422 - 8047414: 68fb ldr r3, [r7, #12] - 8047416: 685b ldr r3, [r3, #4] - 8047418: 685b ldr r3, [r3, #4] - 804741a: 889b ldrh r3, [r3, #4] - 804741c: b29b uxth r3, r3 - 804741e: 2b00 cmp r3, #0 - 8047420: d002 beq.n 8047428 + 804744c: 68fb ldr r3, [r7, #12] + 804744e: 685b ldr r3, [r3, #4] + 8047450: 2b00 cmp r3, #0 + 8047452: d006 beq.n 8047462 + 8047454: 68fb ldr r3, [r7, #12] + 8047456: 685b ldr r3, [r3, #4] + 8047458: 685b ldr r3, [r3, #4] + 804745a: 889b ldrh r3, [r3, #4] + 804745c: b29b uxth r3, r3 + 804745e: 2b00 cmp r3, #0 + 8047460: d002 beq.n 8047468 valid = 0; - 8047422: 2300 movs r3, #0 - 8047424: 623b str r3, [r7, #32] - 8047426: e041 b.n 80474ac + 8047462: 2300 movs r3, #0 + 8047464: 623b str r3, [r7, #32] + 8047466: e041 b.n 80474ec } else { /* and check that there are no holes after this datagram */ iprh_prev = iprh; - 8047428: 6afb ldr r3, [r7, #44] ; 0x2c - 804742a: 62bb str r3, [r7, #40] ; 0x28 + 8047468: 6afb ldr r3, [r7, #44] ; 0x2c + 804746a: 62bb str r3, [r7, #40] ; 0x28 q = iprh->next_pbuf; - 804742c: 6afb ldr r3, [r7, #44] ; 0x2c - 804742e: 681b ldr r3, [r3, #0] - 8047430: 627b str r3, [r7, #36] ; 0x24 + 804746c: 6afb ldr r3, [r7, #44] ; 0x2c + 804746e: 681b ldr r3, [r3, #0] + 8047470: 627b str r3, [r7, #36] ; 0x24 while (q != NULL) { - 8047432: e012 b.n 804745a + 8047472: e012 b.n 804749a iprh = (struct ip_reass_helper *)q->payload; - 8047434: 6a7b ldr r3, [r7, #36] ; 0x24 - 8047436: 685b ldr r3, [r3, #4] - 8047438: 62fb str r3, [r7, #44] ; 0x2c + 8047474: 6a7b ldr r3, [r7, #36] ; 0x24 + 8047476: 685b ldr r3, [r3, #4] + 8047478: 62fb str r3, [r7, #44] ; 0x2c if (iprh_prev->end != iprh->start) { - 804743a: 6abb ldr r3, [r7, #40] ; 0x28 - 804743c: 88db ldrh r3, [r3, #6] - 804743e: b29a uxth r2, r3 - 8047440: 6afb ldr r3, [r7, #44] ; 0x2c - 8047442: 889b ldrh r3, [r3, #4] - 8047444: b29b uxth r3, r3 - 8047446: 429a cmp r2, r3 - 8047448: d002 beq.n 8047450 + 804747a: 6abb ldr r3, [r7, #40] ; 0x28 + 804747c: 88db ldrh r3, [r3, #6] + 804747e: b29a uxth r2, r3 + 8047480: 6afb ldr r3, [r7, #44] ; 0x2c + 8047482: 889b ldrh r3, [r3, #4] + 8047484: b29b uxth r3, r3 + 8047486: 429a cmp r2, r3 + 8047488: d002 beq.n 8047490 valid = 0; - 804744a: 2300 movs r3, #0 - 804744c: 623b str r3, [r7, #32] + 804748a: 2300 movs r3, #0 + 804748c: 623b str r3, [r7, #32] break; - 804744e: e007 b.n 8047460 + 804748e: e007 b.n 80474a0 } iprh_prev = iprh; - 8047450: 6afb ldr r3, [r7, #44] ; 0x2c - 8047452: 62bb str r3, [r7, #40] ; 0x28 + 8047490: 6afb ldr r3, [r7, #44] ; 0x2c + 8047492: 62bb str r3, [r7, #40] ; 0x28 q = iprh->next_pbuf; - 8047454: 6afb ldr r3, [r7, #44] ; 0x2c - 8047456: 681b ldr r3, [r3, #0] - 8047458: 627b str r3, [r7, #36] ; 0x24 + 8047494: 6afb ldr r3, [r7, #44] ; 0x2c + 8047496: 681b ldr r3, [r3, #0] + 8047498: 627b str r3, [r7, #36] ; 0x24 while (q != NULL) { - 804745a: 6a7b ldr r3, [r7, #36] ; 0x24 - 804745c: 2b00 cmp r3, #0 - 804745e: d1e9 bne.n 8047434 + 804749a: 6a7b ldr r3, [r7, #36] ; 0x24 + 804749c: 2b00 cmp r3, #0 + 804749e: d1e9 bne.n 8047474 } /* if still valid, all fragments are received * (because to the MF==0 already arrived */ if (valid) { - 8047460: 6a3b ldr r3, [r7, #32] - 8047462: 2b00 cmp r3, #0 - 8047464: d022 beq.n 80474ac + 80474a0: 6a3b ldr r3, [r7, #32] + 80474a2: 2b00 cmp r3, #0 + 80474a4: d022 beq.n 80474ec LWIP_ASSERT("sanity check", ipr->p != NULL); - 8047466: 68fb ldr r3, [r7, #12] - 8047468: 685b ldr r3, [r3, #4] - 804746a: 2b00 cmp r3, #0 - 804746c: d106 bne.n 804747c - 804746e: 4b15 ldr r3, [pc, #84] ; (80474c4 ) - 8047470: f240 12df movw r2, #479 ; 0x1df - 8047474: 4917 ldr r1, [pc, #92] ; (80474d4 ) - 8047476: 4815 ldr r0, [pc, #84] ; (80474cc ) - 8047478: f000 fd94 bl 8047fa4 + 80474a6: 68fb ldr r3, [r7, #12] + 80474a8: 685b ldr r3, [r3, #4] + 80474aa: 2b00 cmp r3, #0 + 80474ac: d106 bne.n 80474bc + 80474ae: 4b15 ldr r3, [pc, #84] ; (8047504 ) + 80474b0: f240 12df movw r2, #479 ; 0x1df + 80474b4: 4917 ldr r1, [pc, #92] ; (8047514 ) + 80474b6: 4815 ldr r0, [pc, #84] ; (804750c ) + 80474b8: f000 fd94 bl 8047fe4 LWIP_ASSERT("sanity check", - 804747c: 68fb ldr r3, [r7, #12] - 804747e: 685b ldr r3, [r3, #4] - 8047480: 685b ldr r3, [r3, #4] - 8047482: 6afa ldr r2, [r7, #44] ; 0x2c - 8047484: 429a cmp r2, r3 - 8047486: d106 bne.n 8047496 - 8047488: 4b0e ldr r3, [pc, #56] ; (80474c4 ) - 804748a: f44f 72f0 mov.w r2, #480 ; 0x1e0 - 804748e: 4911 ldr r1, [pc, #68] ; (80474d4 ) - 8047490: 480e ldr r0, [pc, #56] ; (80474cc ) - 8047492: f000 fd87 bl 8047fa4 + 80474bc: 68fb ldr r3, [r7, #12] + 80474be: 685b ldr r3, [r3, #4] + 80474c0: 685b ldr r3, [r3, #4] + 80474c2: 6afa ldr r2, [r7, #44] ; 0x2c + 80474c4: 429a cmp r2, r3 + 80474c6: d106 bne.n 80474d6 + 80474c8: 4b0e ldr r3, [pc, #56] ; (8047504 ) + 80474ca: f44f 72f0 mov.w r2, #480 ; 0x1e0 + 80474ce: 4911 ldr r1, [pc, #68] ; (8047514 ) + 80474d0: 480e ldr r0, [pc, #56] ; (804750c ) + 80474d2: f000 fd87 bl 8047fe4 ((struct ip_reass_helper *)ipr->p->payload) != iprh); LWIP_ASSERT("validate_datagram:next_pbuf!=NULL", - 8047496: 6afb ldr r3, [r7, #44] ; 0x2c - 8047498: 681b ldr r3, [r3, #0] - 804749a: 2b00 cmp r3, #0 - 804749c: d006 beq.n 80474ac - 804749e: 4b09 ldr r3, [pc, #36] ; (80474c4 ) - 80474a0: f44f 72f1 mov.w r2, #482 ; 0x1e2 - 80474a4: 490c ldr r1, [pc, #48] ; (80474d8 ) - 80474a6: 4809 ldr r0, [pc, #36] ; (80474cc ) - 80474a8: f000 fd7c bl 8047fa4 + 80474d6: 6afb ldr r3, [r7, #44] ; 0x2c + 80474d8: 681b ldr r3, [r3, #0] + 80474da: 2b00 cmp r3, #0 + 80474dc: d006 beq.n 80474ec + 80474de: 4b09 ldr r3, [pc, #36] ; (8047504 ) + 80474e0: f44f 72f1 mov.w r2, #482 ; 0x1e2 + 80474e4: 490c ldr r1, [pc, #48] ; (8047518 ) + 80474e6: 4809 ldr r0, [pc, #36] ; (804750c ) + 80474e8: f000 fd7c bl 8047fe4 } } /* If valid is 0 here, there are some fragments missing in the middle * (since MF == 0 has already arrived). Such datagrams simply time out if * no more fragments are received... */ return valid ? IP_REASS_VALIDATE_TELEGRAM_FINISHED : IP_REASS_VALIDATE_PBUF_QUEUED; - 80474ac: 6a3b ldr r3, [r7, #32] - 80474ae: 2b00 cmp r3, #0 - 80474b0: bf14 ite ne - 80474b2: 2301 movne r3, #1 - 80474b4: 2300 moveq r3, #0 - 80474b6: b2db uxtb r3, r3 - 80474b8: e000 b.n 80474bc + 80474ec: 6a3b ldr r3, [r7, #32] + 80474ee: 2b00 cmp r3, #0 + 80474f0: bf14 ite ne + 80474f2: 2301 movne r3, #1 + 80474f4: 2300 moveq r3, #0 + 80474f6: b2db uxtb r3, r3 + 80474f8: e000 b.n 80474fc } /* If we come here, not all fragments were received, yet! */ return IP_REASS_VALIDATE_PBUF_QUEUED; /* not yet valid! */ - 80474ba: 2300 movs r3, #0 -} - 80474bc: 4618 mov r0, r3 - 80474be: 3730 adds r7, #48 ; 0x30 - 80474c0: 46bd mov sp, r7 - 80474c2: bd80 pop {r7, pc} - 80474c4: 0804c888 .word 0x0804c888 - 80474c8: 0804c96c .word 0x0804c96c - 80474cc: 0804c8d0 .word 0x0804c8d0 - 80474d0: 0804c98c .word 0x0804c98c - 80474d4: 0804c9c4 .word 0x0804c9c4 - 80474d8: 0804c9d4 .word 0x0804c9d4 - -080474dc : + 80474fa: 2300 movs r3, #0 +} + 80474fc: 4618 mov r0, r3 + 80474fe: 3730 adds r7, #48 ; 0x30 + 8047500: 46bd mov sp, r7 + 8047502: bd80 pop {r7, pc} + 8047504: 0804c8c8 .word 0x0804c8c8 + 8047508: 0804c9ac .word 0x0804c9ac + 804750c: 0804c910 .word 0x0804c910 + 8047510: 0804c9cc .word 0x0804c9cc + 8047514: 0804ca04 .word 0x0804ca04 + 8047518: 0804ca14 .word 0x0804ca14 + +0804751c : * @param p points to a pbuf chain of the fragment * @return NULL if reassembly is incomplete, ? otherwise */ struct pbuf * ip4_reass(struct pbuf *p) { - 80474dc: b580 push {r7, lr} - 80474de: b08e sub sp, #56 ; 0x38 - 80474e0: af00 add r7, sp, #0 - 80474e2: 6078 str r0, [r7, #4] + 804751c: b580 push {r7, lr} + 804751e: b08e sub sp, #56 ; 0x38 + 8047520: af00 add r7, sp, #0 + 8047522: 6078 str r0, [r7, #4] int is_last; IPFRAG_STATS_INC(ip_frag.recv); MIB2_STATS_INC(mib2.ipreasmreqds); fraghdr = (struct ip_hdr *)p->payload; - 80474e4: 687b ldr r3, [r7, #4] - 80474e6: 685b ldr r3, [r3, #4] - 80474e8: 62bb str r3, [r7, #40] ; 0x28 + 8047524: 687b ldr r3, [r7, #4] + 8047526: 685b ldr r3, [r3, #4] + 8047528: 62bb str r3, [r7, #40] ; 0x28 if (IPH_HL_BYTES(fraghdr) != IP_HLEN) { - 80474ea: 6abb ldr r3, [r7, #40] ; 0x28 - 80474ec: 781b ldrb r3, [r3, #0] - 80474ee: f003 030f and.w r3, r3, #15 - 80474f2: b2db uxtb r3, r3 - 80474f4: 009b lsls r3, r3, #2 - 80474f6: b2db uxtb r3, r3 - 80474f8: 2b14 cmp r3, #20 - 80474fa: f040 8171 bne.w 80477e0 + 804752a: 6abb ldr r3, [r7, #40] ; 0x28 + 804752c: 781b ldrb r3, [r3, #0] + 804752e: f003 030f and.w r3, r3, #15 + 8047532: b2db uxtb r3, r3 + 8047534: 009b lsls r3, r3, #2 + 8047536: b2db uxtb r3, r3 + 8047538: 2b14 cmp r3, #20 + 804753a: f040 8171 bne.w 8047820 LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: IP options currently not supported!\n")); IPFRAG_STATS_INC(ip_frag.err); goto nullreturn; } offset = IPH_OFFSET_BYTES(fraghdr); - 80474fe: 6abb ldr r3, [r7, #40] ; 0x28 - 8047500: 88db ldrh r3, [r3, #6] - 8047502: b29b uxth r3, r3 - 8047504: 4618 mov r0, r3 - 8047506: f7f5 fd61 bl 803cfcc - 804750a: 4603 mov r3, r0 - 804750c: f3c3 030c ubfx r3, r3, #0, #13 - 8047510: b29b uxth r3, r3 - 8047512: 00db lsls r3, r3, #3 - 8047514: 84fb strh r3, [r7, #38] ; 0x26 + 804753e: 6abb ldr r3, [r7, #40] ; 0x28 + 8047540: 88db ldrh r3, [r3, #6] + 8047542: b29b uxth r3, r3 + 8047544: 4618 mov r0, r3 + 8047546: f7f5 fd61 bl 803d00c + 804754a: 4603 mov r3, r0 + 804754c: f3c3 030c ubfx r3, r3, #0, #13 + 8047550: b29b uxth r3, r3 + 8047552: 00db lsls r3, r3, #3 + 8047554: 84fb strh r3, [r7, #38] ; 0x26 len = lwip_ntohs(IPH_LEN(fraghdr)); - 8047516: 6abb ldr r3, [r7, #40] ; 0x28 - 8047518: 885b ldrh r3, [r3, #2] - 804751a: b29b uxth r3, r3 - 804751c: 4618 mov r0, r3 - 804751e: f7f5 fd55 bl 803cfcc - 8047522: 4603 mov r3, r0 - 8047524: 84bb strh r3, [r7, #36] ; 0x24 + 8047556: 6abb ldr r3, [r7, #40] ; 0x28 + 8047558: 885b ldrh r3, [r3, #2] + 804755a: b29b uxth r3, r3 + 804755c: 4618 mov r0, r3 + 804755e: f7f5 fd55 bl 803d00c + 8047562: 4603 mov r3, r0 + 8047564: 84bb strh r3, [r7, #36] ; 0x24 hlen = IPH_HL_BYTES(fraghdr); - 8047526: 6abb ldr r3, [r7, #40] ; 0x28 - 8047528: 781b ldrb r3, [r3, #0] - 804752a: f003 030f and.w r3, r3, #15 - 804752e: b2db uxtb r3, r3 - 8047530: 009b lsls r3, r3, #2 - 8047532: f887 3023 strb.w r3, [r7, #35] ; 0x23 + 8047566: 6abb ldr r3, [r7, #40] ; 0x28 + 8047568: 781b ldrb r3, [r3, #0] + 804756a: f003 030f and.w r3, r3, #15 + 804756e: b2db uxtb r3, r3 + 8047570: 009b lsls r3, r3, #2 + 8047572: f887 3023 strb.w r3, [r7, #35] ; 0x23 if (hlen > len) { - 8047536: f897 3023 ldrb.w r3, [r7, #35] ; 0x23 - 804753a: b29b uxth r3, r3 - 804753c: 8cba ldrh r2, [r7, #36] ; 0x24 - 804753e: 429a cmp r2, r3 - 8047540: f0c0 8150 bcc.w 80477e4 + 8047576: f897 3023 ldrb.w r3, [r7, #35] ; 0x23 + 804757a: b29b uxth r3, r3 + 804757c: 8cba ldrh r2, [r7, #36] ; 0x24 + 804757e: 429a cmp r2, r3 + 8047580: f0c0 8150 bcc.w 8047824 /* invalid datagram */ goto nullreturn; } len = (u16_t)(len - hlen); - 8047544: f897 3023 ldrb.w r3, [r7, #35] ; 0x23 - 8047548: b29b uxth r3, r3 - 804754a: 8cba ldrh r2, [r7, #36] ; 0x24 - 804754c: 1ad3 subs r3, r2, r3 - 804754e: 84bb strh r3, [r7, #36] ; 0x24 + 8047584: f897 3023 ldrb.w r3, [r7, #35] ; 0x23 + 8047588: b29b uxth r3, r3 + 804758a: 8cba ldrh r2, [r7, #36] ; 0x24 + 804758c: 1ad3 subs r3, r2, r3 + 804758e: 84bb strh r3, [r7, #36] ; 0x24 /* Check if we are allowed to enqueue more datagrams. */ clen = pbuf_clen(p); - 8047550: 6878 ldr r0, [r7, #4] - 8047552: f7f7 f9f5 bl 803e940 - 8047556: 4603 mov r3, r0 - 8047558: 843b strh r3, [r7, #32] + 8047590: 6878 ldr r0, [r7, #4] + 8047592: f7f7 f9f5 bl 803e980 + 8047596: 4603 mov r3, r0 + 8047598: 843b strh r3, [r7, #32] if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { - 804755a: 4b8c ldr r3, [pc, #560] ; (804778c ) - 804755c: 881b ldrh r3, [r3, #0] - 804755e: 461a mov r2, r3 - 8047560: 8c3b ldrh r3, [r7, #32] - 8047562: 4413 add r3, r2 - 8047564: 2b0a cmp r3, #10 - 8047566: dd10 ble.n 804758a + 804759a: 4b8c ldr r3, [pc, #560] ; (80477cc ) + 804759c: 881b ldrh r3, [r3, #0] + 804759e: 461a mov r2, r3 + 80475a0: 8c3b ldrh r3, [r7, #32] + 80475a2: 4413 add r3, r2 + 80475a4: 2b0a cmp r3, #10 + 80475a6: dd10 ble.n 80475ca #if IP_REASS_FREE_OLDEST if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - 8047568: 8c3b ldrh r3, [r7, #32] - 804756a: 4619 mov r1, r3 - 804756c: 6ab8 ldr r0, [r7, #40] ; 0x28 - 804756e: f7ff fd81 bl 8047074 - 8047572: 4603 mov r3, r0 - 8047574: 2b00 cmp r3, #0 - 8047576: f000 8137 beq.w 80477e8 + 80475a8: 8c3b ldrh r3, [r7, #32] + 80475aa: 4619 mov r1, r3 + 80475ac: 6ab8 ldr r0, [r7, #40] ; 0x28 + 80475ae: f7ff fd81 bl 80470b4 + 80475b2: 4603 mov r3, r0 + 80475b4: 2b00 cmp r3, #0 + 80475b6: f000 8137 beq.w 8047828 ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS)) - 804757a: 4b84 ldr r3, [pc, #528] ; (804778c ) - 804757c: 881b ldrh r3, [r3, #0] - 804757e: 461a mov r2, r3 - 8047580: 8c3b ldrh r3, [r7, #32] - 8047582: 4413 add r3, r2 + 80475ba: 4b84 ldr r3, [pc, #528] ; (80477cc ) + 80475bc: 881b ldrh r3, [r3, #0] + 80475be: 461a mov r2, r3 + 80475c0: 8c3b ldrh r3, [r7, #32] + 80475c2: 4413 add r3, r2 if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - 8047584: 2b0a cmp r3, #10 - 8047586: f300 812f bgt.w 80477e8 + 80475c4: 2b0a cmp r3, #10 + 80475c6: f300 812f bgt.w 8047828 } } /* Look for the datagram the fragment belongs to in the current datagram queue, * remembering the previous in the queue for later dequeueing. */ for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - 804758a: 4b81 ldr r3, [pc, #516] ; (8047790 ) - 804758c: 681b ldr r3, [r3, #0] - 804758e: 633b str r3, [r7, #48] ; 0x30 - 8047590: e015 b.n 80475be + 80475ca: 4b81 ldr r3, [pc, #516] ; (80477d0 ) + 80475cc: 681b ldr r3, [r3, #0] + 80475ce: 633b str r3, [r7, #48] ; 0x30 + 80475d0: e015 b.n 80475fe /* Check if the incoming fragment matches the one currently present in the reassembly buffer. If so, we proceed with copying the fragment into the buffer. */ if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) { - 8047592: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047594: 695a ldr r2, [r3, #20] - 8047596: 6abb ldr r3, [r7, #40] ; 0x28 - 8047598: 68db ldr r3, [r3, #12] - 804759a: 429a cmp r2, r3 - 804759c: d10c bne.n 80475b8 - 804759e: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475a0: 699a ldr r2, [r3, #24] - 80475a2: 6abb ldr r3, [r7, #40] ; 0x28 - 80475a4: 691b ldr r3, [r3, #16] - 80475a6: 429a cmp r2, r3 - 80475a8: d106 bne.n 80475b8 - 80475aa: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475ac: 899a ldrh r2, [r3, #12] - 80475ae: 6abb ldr r3, [r7, #40] ; 0x28 - 80475b0: 889b ldrh r3, [r3, #4] - 80475b2: b29b uxth r3, r3 - 80475b4: 429a cmp r2, r3 - 80475b6: d006 beq.n 80475c6 + 80475d2: 6b3b ldr r3, [r7, #48] ; 0x30 + 80475d4: 695a ldr r2, [r3, #20] + 80475d6: 6abb ldr r3, [r7, #40] ; 0x28 + 80475d8: 68db ldr r3, [r3, #12] + 80475da: 429a cmp r2, r3 + 80475dc: d10c bne.n 80475f8 + 80475de: 6b3b ldr r3, [r7, #48] ; 0x30 + 80475e0: 699a ldr r2, [r3, #24] + 80475e2: 6abb ldr r3, [r7, #40] ; 0x28 + 80475e4: 691b ldr r3, [r3, #16] + 80475e6: 429a cmp r2, r3 + 80475e8: d106 bne.n 80475f8 + 80475ea: 6b3b ldr r3, [r7, #48] ; 0x30 + 80475ec: 899a ldrh r2, [r3, #12] + 80475ee: 6abb ldr r3, [r7, #40] ; 0x28 + 80475f0: 889b ldrh r3, [r3, #4] + 80475f2: b29b uxth r3, r3 + 80475f4: 429a cmp r2, r3 + 80475f6: d006 beq.n 8047606 for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - 80475b8: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475ba: 681b ldr r3, [r3, #0] - 80475bc: 633b str r3, [r7, #48] ; 0x30 - 80475be: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475c0: 2b00 cmp r3, #0 - 80475c2: d1e6 bne.n 8047592 - 80475c4: e000 b.n 80475c8 + 80475f8: 6b3b ldr r3, [r7, #48] ; 0x30 + 80475fa: 681b ldr r3, [r3, #0] + 80475fc: 633b str r3, [r7, #48] ; 0x30 + 80475fe: 6b3b ldr r3, [r7, #48] ; 0x30 + 8047600: 2b00 cmp r3, #0 + 8047602: d1e6 bne.n 80475d2 + 8047604: e000 b.n 8047608 LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: matching previous fragment ID=%"X16_F"\n", lwip_ntohs(IPH_ID(fraghdr)))); IPFRAG_STATS_INC(ip_frag.cachehit); break; - 80475c6: bf00 nop + 8047606: bf00 nop } } if (ipr == NULL) { - 80475c8: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475ca: 2b00 cmp r3, #0 - 80475cc: d109 bne.n 80475e2 + 8047608: 6b3b ldr r3, [r7, #48] ; 0x30 + 804760a: 2b00 cmp r3, #0 + 804760c: d109 bne.n 8047622 /* Enqueue a new datagram into the datagram queue */ ipr = ip_reass_enqueue_new_datagram(fraghdr, clen); - 80475ce: 8c3b ldrh r3, [r7, #32] - 80475d0: 4619 mov r1, r3 - 80475d2: 6ab8 ldr r0, [r7, #40] ; 0x28 - 80475d4: f7ff fdb0 bl 8047138 - 80475d8: 6338 str r0, [r7, #48] ; 0x30 + 804760e: 8c3b ldrh r3, [r7, #32] + 8047610: 4619 mov r1, r3 + 8047612: 6ab8 ldr r0, [r7, #40] ; 0x28 + 8047614: f7ff fdb0 bl 8047178 + 8047618: 6338 str r0, [r7, #48] ; 0x30 /* Bail if unable to enqueue */ if (ipr == NULL) { - 80475da: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475dc: 2b00 cmp r3, #0 - 80475de: d11c bne.n 804761a + 804761a: 6b3b ldr r3, [r7, #48] ; 0x30 + 804761c: 2b00 cmp r3, #0 + 804761e: d11c bne.n 804765a goto nullreturn; - 80475e0: e105 b.n 80477ee + 8047620: e105 b.n 804782e } } else { if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - 80475e2: 6abb ldr r3, [r7, #40] ; 0x28 - 80475e4: 88db ldrh r3, [r3, #6] - 80475e6: b29b uxth r3, r3 - 80475e8: 4618 mov r0, r3 - 80475ea: f7f5 fcef bl 803cfcc - 80475ee: 4603 mov r3, r0 - 80475f0: f3c3 030c ubfx r3, r3, #0, #13 - 80475f4: 2b00 cmp r3, #0 - 80475f6: d110 bne.n 804761a + 8047622: 6abb ldr r3, [r7, #40] ; 0x28 + 8047624: 88db ldrh r3, [r3, #6] + 8047626: b29b uxth r3, r3 + 8047628: 4618 mov r0, r3 + 804762a: f7f5 fcef bl 803d00c + 804762e: 4603 mov r3, r0 + 8047630: f3c3 030c ubfx r3, r3, #0, #13 + 8047634: 2b00 cmp r3, #0 + 8047636: d110 bne.n 804765a ((lwip_ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) { - 80475f8: 6b3b ldr r3, [r7, #48] ; 0x30 - 80475fa: 89db ldrh r3, [r3, #14] - 80475fc: 4618 mov r0, r3 - 80475fe: f7f5 fce5 bl 803cfcc - 8047602: 4603 mov r3, r0 - 8047604: f3c3 030c ubfx r3, r3, #0, #13 + 8047638: 6b3b ldr r3, [r7, #48] ; 0x30 + 804763a: 89db ldrh r3, [r3, #14] + 804763c: 4618 mov r0, r3 + 804763e: f7f5 fce5 bl 803d00c + 8047642: 4603 mov r3, r0 + 8047644: f3c3 030c ubfx r3, r3, #0, #13 if (((lwip_ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - 8047608: 2b00 cmp r3, #0 - 804760a: d006 beq.n 804761a + 8047648: 2b00 cmp r3, #0 + 804764a: d006 beq.n 804765a /* ipr->iphdr is not the header from the first fragment, but fraghdr is * -> copy fraghdr into ipr->iphdr since we want to have the header * of the first fragment (for ICMP time exceeded and later, for copying * all options, if supported)*/ SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN); - 804760c: 6b3b ldr r3, [r7, #48] ; 0x30 - 804760e: 3308 adds r3, #8 - 8047610: 2214 movs r2, #20 - 8047612: 6ab9 ldr r1, [r7, #40] ; 0x28 - 8047614: 4618 mov r0, r3 - 8047616: f000 fbb5 bl 8047d84 + 804764c: 6b3b ldr r3, [r7, #48] ; 0x30 + 804764e: 3308 adds r3, #8 + 8047650: 2214 movs r2, #20 + 8047652: 6ab9 ldr r1, [r7, #40] ; 0x28 + 8047654: 4618 mov r0, r3 + 8047656: f000 fbb5 bl 8047dc4 /* At this point, we have either created a new entry or pointing * to an existing one */ /* check for 'no more fragments', and update queue entry*/ is_last = (IPH_OFFSET(fraghdr) & PP_NTOHS(IP_MF)) == 0; - 804761a: 6abb ldr r3, [r7, #40] ; 0x28 - 804761c: 88db ldrh r3, [r3, #6] - 804761e: b29b uxth r3, r3 - 8047620: f003 0320 and.w r3, r3, #32 - 8047624: 2b00 cmp r3, #0 - 8047626: bf0c ite eq - 8047628: 2301 moveq r3, #1 - 804762a: 2300 movne r3, #0 - 804762c: b2db uxtb r3, r3 - 804762e: 61fb str r3, [r7, #28] + 804765a: 6abb ldr r3, [r7, #40] ; 0x28 + 804765c: 88db ldrh r3, [r3, #6] + 804765e: b29b uxth r3, r3 + 8047660: f003 0320 and.w r3, r3, #32 + 8047664: 2b00 cmp r3, #0 + 8047666: bf0c ite eq + 8047668: 2301 moveq r3, #1 + 804766a: 2300 movne r3, #0 + 804766c: b2db uxtb r3, r3 + 804766e: 61fb str r3, [r7, #28] if (is_last) { - 8047630: 69fb ldr r3, [r7, #28] - 8047632: 2b00 cmp r3, #0 - 8047634: d00e beq.n 8047654 + 8047670: 69fb ldr r3, [r7, #28] + 8047672: 2b00 cmp r3, #0 + 8047674: d00e beq.n 8047694 u16_t datagram_len = (u16_t)(offset + len); - 8047636: 8cfa ldrh r2, [r7, #38] ; 0x26 - 8047638: 8cbb ldrh r3, [r7, #36] ; 0x24 - 804763a: 4413 add r3, r2 - 804763c: 837b strh r3, [r7, #26] + 8047676: 8cfa ldrh r2, [r7, #38] ; 0x26 + 8047678: 8cbb ldrh r3, [r7, #36] ; 0x24 + 804767a: 4413 add r3, r2 + 804767c: 837b strh r3, [r7, #26] if ((datagram_len < offset) || (datagram_len > (0xFFFF - IP_HLEN))) { - 804763e: 8b7a ldrh r2, [r7, #26] - 8047640: 8cfb ldrh r3, [r7, #38] ; 0x26 - 8047642: 429a cmp r2, r3 - 8047644: f0c0 80a0 bcc.w 8047788 - 8047648: 8b7b ldrh r3, [r7, #26] - 804764a: f64f 72eb movw r2, #65515 ; 0xffeb - 804764e: 4293 cmp r3, r2 - 8047650: f200 809a bhi.w 8047788 + 804767e: 8b7a ldrh r2, [r7, #26] + 8047680: 8cfb ldrh r3, [r7, #38] ; 0x26 + 8047682: 429a cmp r2, r3 + 8047684: f0c0 80a0 bcc.w 80477c8 + 8047688: 8b7b ldrh r3, [r7, #26] + 804768a: f64f 72eb movw r2, #65515 ; 0xffeb + 804768e: 4293 cmp r3, r2 + 8047690: f200 809a bhi.w 80477c8 goto nullreturn_ipr; } } /* find the right place to insert this pbuf */ /* @todo: trim pbufs if fragments are overlapping */ valid = ip_reass_chain_frag_into_datagram_and_validate(ipr, p, is_last); - 8047654: 69fa ldr r2, [r7, #28] - 8047656: 6879 ldr r1, [r7, #4] - 8047658: 6b38 ldr r0, [r7, #48] ; 0x30 - 804765a: f7ff fdd5 bl 8047208 - 804765e: 6178 str r0, [r7, #20] + 8047694: 69fa ldr r2, [r7, #28] + 8047696: 6879 ldr r1, [r7, #4] + 8047698: 6b38 ldr r0, [r7, #48] ; 0x30 + 804769a: f7ff fdd5 bl 8047248 + 804769e: 6178 str r0, [r7, #20] if (valid == IP_REASS_VALIDATE_PBUF_DROPPED) { - 8047660: 697b ldr r3, [r7, #20] - 8047662: f1b3 3fff cmp.w r3, #4294967295 - 8047666: f000 809b beq.w 80477a0 + 80476a0: 697b ldr r3, [r7, #20] + 80476a2: f1b3 3fff cmp.w r3, #4294967295 + 80476a6: f000 809b beq.w 80477e0 /* if we come here, the pbuf has been enqueued */ /* Track the current number of pbufs current 'in-flight', in order to limit the number of fragments that may be enqueued at any one time (overflow checked by testing against IP_REASS_MAX_PBUFS) */ ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount + clen); - 804766a: 4b48 ldr r3, [pc, #288] ; (804778c ) - 804766c: 881a ldrh r2, [r3, #0] - 804766e: 8c3b ldrh r3, [r7, #32] - 8047670: 4413 add r3, r2 - 8047672: b29a uxth r2, r3 - 8047674: 4b45 ldr r3, [pc, #276] ; (804778c ) - 8047676: 801a strh r2, [r3, #0] + 80476aa: 4b48 ldr r3, [pc, #288] ; (80477cc ) + 80476ac: 881a ldrh r2, [r3, #0] + 80476ae: 8c3b ldrh r3, [r7, #32] + 80476b0: 4413 add r3, r2 + 80476b2: b29a uxth r2, r3 + 80476b4: 4b45 ldr r3, [pc, #276] ; (80477cc ) + 80476b6: 801a strh r2, [r3, #0] if (is_last) { - 8047678: 69fb ldr r3, [r7, #28] - 804767a: 2b00 cmp r3, #0 - 804767c: d00d beq.n 804769a + 80476b8: 69fb ldr r3, [r7, #28] + 80476ba: 2b00 cmp r3, #0 + 80476bc: d00d beq.n 80476da u16_t datagram_len = (u16_t)(offset + len); - 804767e: 8cfa ldrh r2, [r7, #38] ; 0x26 - 8047680: 8cbb ldrh r3, [r7, #36] ; 0x24 - 8047682: 4413 add r3, r2 - 8047684: 827b strh r3, [r7, #18] + 80476be: 8cfa ldrh r2, [r7, #38] ; 0x26 + 80476c0: 8cbb ldrh r3, [r7, #36] ; 0x24 + 80476c2: 4413 add r3, r2 + 80476c4: 827b strh r3, [r7, #18] ipr->datagram_len = datagram_len; - 8047686: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047688: 8a7a ldrh r2, [r7, #18] - 804768a: 839a strh r2, [r3, #28] + 80476c6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476c8: 8a7a ldrh r2, [r7, #18] + 80476ca: 839a strh r2, [r3, #28] ipr->flags |= IP_REASS_FLAG_LASTFRAG; - 804768c: 6b3b ldr r3, [r7, #48] ; 0x30 - 804768e: 7f9b ldrb r3, [r3, #30] - 8047690: f043 0301 orr.w r3, r3, #1 - 8047694: b2da uxtb r2, r3 - 8047696: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047698: 779a strb r2, [r3, #30] + 80476cc: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476ce: 7f9b ldrb r3, [r3, #30] + 80476d0: f043 0301 orr.w r3, r3, #1 + 80476d4: b2da uxtb r2, r3 + 80476d6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476d8: 779a strb r2, [r3, #30] LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: last fragment seen, total len %"S16_F"\n", ipr->datagram_len)); } if (valid == IP_REASS_VALIDATE_TELEGRAM_FINISHED) { - 804769a: 697b ldr r3, [r7, #20] - 804769c: 2b01 cmp r3, #1 - 804769e: d171 bne.n 8047784 + 80476da: 697b ldr r3, [r7, #20] + 80476dc: 2b01 cmp r3, #1 + 80476de: d171 bne.n 80477c4 struct ip_reassdata *ipr_prev; /* the totally last fragment (flag more fragments = 0) was received at least * once AND all fragments are received */ u16_t datagram_len = (u16_t)(ipr->datagram_len + IP_HLEN); - 80476a0: 6b3b ldr r3, [r7, #48] ; 0x30 - 80476a2: 8b9b ldrh r3, [r3, #28] - 80476a4: 3314 adds r3, #20 - 80476a6: 823b strh r3, [r7, #16] + 80476e0: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476e2: 8b9b ldrh r3, [r3, #28] + 80476e4: 3314 adds r3, #20 + 80476e6: 823b strh r3, [r7, #16] /* save the second pbuf before copying the header over the pointer */ r = ((struct ip_reass_helper *)ipr->p->payload)->next_pbuf; - 80476a8: 6b3b ldr r3, [r7, #48] ; 0x30 - 80476aa: 685b ldr r3, [r3, #4] - 80476ac: 685b ldr r3, [r3, #4] - 80476ae: 681b ldr r3, [r3, #0] - 80476b0: 637b str r3, [r7, #52] ; 0x34 + 80476e8: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476ea: 685b ldr r3, [r3, #4] + 80476ec: 685b ldr r3, [r3, #4] + 80476ee: 681b ldr r3, [r3, #0] + 80476f0: 637b str r3, [r7, #52] ; 0x34 /* copy the original ip header back to the first pbuf */ fraghdr = (struct ip_hdr *)(ipr->p->payload); - 80476b2: 6b3b ldr r3, [r7, #48] ; 0x30 - 80476b4: 685b ldr r3, [r3, #4] - 80476b6: 685b ldr r3, [r3, #4] - 80476b8: 62bb str r3, [r7, #40] ; 0x28 + 80476f2: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476f4: 685b ldr r3, [r3, #4] + 80476f6: 685b ldr r3, [r3, #4] + 80476f8: 62bb str r3, [r7, #40] ; 0x28 SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN); - 80476ba: 6b3b ldr r3, [r7, #48] ; 0x30 - 80476bc: 3308 adds r3, #8 - 80476be: 2214 movs r2, #20 - 80476c0: 4619 mov r1, r3 - 80476c2: 6ab8 ldr r0, [r7, #40] ; 0x28 - 80476c4: f000 fb5e bl 8047d84 + 80476fa: 6b3b ldr r3, [r7, #48] ; 0x30 + 80476fc: 3308 adds r3, #8 + 80476fe: 2214 movs r2, #20 + 8047700: 4619 mov r1, r3 + 8047702: 6ab8 ldr r0, [r7, #40] ; 0x28 + 8047704: f000 fb5e bl 8047dc4 IPH_LEN_SET(fraghdr, lwip_htons(datagram_len)); - 80476c8: 8a3b ldrh r3, [r7, #16] - 80476ca: 4618 mov r0, r3 - 80476cc: f7f5 fc7e bl 803cfcc - 80476d0: 4603 mov r3, r0 - 80476d2: 461a mov r2, r3 - 80476d4: 6abb ldr r3, [r7, #40] ; 0x28 - 80476d6: 805a strh r2, [r3, #2] + 8047708: 8a3b ldrh r3, [r7, #16] + 804770a: 4618 mov r0, r3 + 804770c: f7f5 fc7e bl 803d00c + 8047710: 4603 mov r3, r0 + 8047712: 461a mov r2, r3 + 8047714: 6abb ldr r3, [r7, #40] ; 0x28 + 8047716: 805a strh r2, [r3, #2] IPH_OFFSET_SET(fraghdr, 0); - 80476d8: 6abb ldr r3, [r7, #40] ; 0x28 - 80476da: 2200 movs r2, #0 - 80476dc: 719a strb r2, [r3, #6] - 80476de: 2200 movs r2, #0 - 80476e0: 71da strb r2, [r3, #7] + 8047718: 6abb ldr r3, [r7, #40] ; 0x28 + 804771a: 2200 movs r2, #0 + 804771c: 719a strb r2, [r3, #6] + 804771e: 2200 movs r2, #0 + 8047720: 71da strb r2, [r3, #7] IPH_CHKSUM_SET(fraghdr, 0); - 80476e2: 6abb ldr r3, [r7, #40] ; 0x28 - 80476e4: 2200 movs r2, #0 - 80476e6: 729a strb r2, [r3, #10] - 80476e8: 2200 movs r2, #0 - 80476ea: 72da strb r2, [r3, #11] + 8047722: 6abb ldr r3, [r7, #40] ; 0x28 + 8047724: 2200 movs r2, #0 + 8047726: 729a strb r2, [r3, #10] + 8047728: 2200 movs r2, #0 + 804772a: 72da strb r2, [r3, #11] IF__NETIF_CHECKSUM_ENABLED(ip_current_input_netif(), NETIF_CHECKSUM_GEN_IP) { IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN)); } #endif /* CHECKSUM_GEN_IP */ p = ipr->p; - 80476ec: 6b3b ldr r3, [r7, #48] ; 0x30 - 80476ee: 685b ldr r3, [r3, #4] - 80476f0: 607b str r3, [r7, #4] + 804772c: 6b3b ldr r3, [r7, #48] ; 0x30 + 804772e: 685b ldr r3, [r3, #4] + 8047730: 607b str r3, [r7, #4] /* chain together the pbufs contained within the reass_data list. */ while (r != NULL) { - 80476f2: e00d b.n 8047710 + 8047732: e00d b.n 8047750 iprh = (struct ip_reass_helper *)r->payload; - 80476f4: 6b7b ldr r3, [r7, #52] ; 0x34 - 80476f6: 685b ldr r3, [r3, #4] - 80476f8: 60fb str r3, [r7, #12] + 8047734: 6b7b ldr r3, [r7, #52] ; 0x34 + 8047736: 685b ldr r3, [r3, #4] + 8047738: 60fb str r3, [r7, #12] /* hide the ip header for every succeeding fragment */ pbuf_remove_header(r, IP_HLEN); - 80476fa: 2114 movs r1, #20 - 80476fc: 6b78 ldr r0, [r7, #52] ; 0x34 - 80476fe: f7f7 f811 bl 803e724 + 804773a: 2114 movs r1, #20 + 804773c: 6b78 ldr r0, [r7, #52] ; 0x34 + 804773e: f7f7 f811 bl 803e764 pbuf_cat(p, r); - 8047702: 6b79 ldr r1, [r7, #52] ; 0x34 - 8047704: 6878 ldr r0, [r7, #4] - 8047706: f7f7 f955 bl 803e9b4 + 8047742: 6b79 ldr r1, [r7, #52] ; 0x34 + 8047744: 6878 ldr r0, [r7, #4] + 8047746: f7f7 f955 bl 803e9f4 r = iprh->next_pbuf; - 804770a: 68fb ldr r3, [r7, #12] - 804770c: 681b ldr r3, [r3, #0] - 804770e: 637b str r3, [r7, #52] ; 0x34 + 804774a: 68fb ldr r3, [r7, #12] + 804774c: 681b ldr r3, [r3, #0] + 804774e: 637b str r3, [r7, #52] ; 0x34 while (r != NULL) { - 8047710: 6b7b ldr r3, [r7, #52] ; 0x34 - 8047712: 2b00 cmp r3, #0 - 8047714: d1ee bne.n 80476f4 + 8047750: 6b7b ldr r3, [r7, #52] ; 0x34 + 8047752: 2b00 cmp r3, #0 + 8047754: d1ee bne.n 8047734 } /* find the previous entry in the linked list */ if (ipr == reassdatagrams) { - 8047716: 4b1e ldr r3, [pc, #120] ; (8047790 ) - 8047718: 681b ldr r3, [r3, #0] - 804771a: 6b3a ldr r2, [r7, #48] ; 0x30 - 804771c: 429a cmp r2, r3 - 804771e: d102 bne.n 8047726 + 8047756: 4b1e ldr r3, [pc, #120] ; (80477d0 ) + 8047758: 681b ldr r3, [r3, #0] + 804775a: 6b3a ldr r2, [r7, #48] ; 0x30 + 804775c: 429a cmp r2, r3 + 804775e: d102 bne.n 8047766 ipr_prev = NULL; - 8047720: 2300 movs r3, #0 - 8047722: 62fb str r3, [r7, #44] ; 0x2c - 8047724: e010 b.n 8047748 + 8047760: 2300 movs r3, #0 + 8047762: 62fb str r3, [r7, #44] ; 0x2c + 8047764: e010 b.n 8047788 } else { for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) { - 8047726: 4b1a ldr r3, [pc, #104] ; (8047790 ) - 8047728: 681b ldr r3, [r3, #0] - 804772a: 62fb str r3, [r7, #44] ; 0x2c - 804772c: e007 b.n 804773e + 8047766: 4b1a ldr r3, [pc, #104] ; (80477d0 ) + 8047768: 681b ldr r3, [r3, #0] + 804776a: 62fb str r3, [r7, #44] ; 0x2c + 804776c: e007 b.n 804777e if (ipr_prev->next == ipr) { - 804772e: 6afb ldr r3, [r7, #44] ; 0x2c - 8047730: 681b ldr r3, [r3, #0] - 8047732: 6b3a ldr r2, [r7, #48] ; 0x30 - 8047734: 429a cmp r2, r3 - 8047736: d006 beq.n 8047746 + 804776e: 6afb ldr r3, [r7, #44] ; 0x2c + 8047770: 681b ldr r3, [r3, #0] + 8047772: 6b3a ldr r2, [r7, #48] ; 0x30 + 8047774: 429a cmp r2, r3 + 8047776: d006 beq.n 8047786 for (ipr_prev = reassdatagrams; ipr_prev != NULL; ipr_prev = ipr_prev->next) { - 8047738: 6afb ldr r3, [r7, #44] ; 0x2c - 804773a: 681b ldr r3, [r3, #0] - 804773c: 62fb str r3, [r7, #44] ; 0x2c - 804773e: 6afb ldr r3, [r7, #44] ; 0x2c - 8047740: 2b00 cmp r3, #0 - 8047742: d1f4 bne.n 804772e - 8047744: e000 b.n 8047748 + 8047778: 6afb ldr r3, [r7, #44] ; 0x2c + 804777a: 681b ldr r3, [r3, #0] + 804777c: 62fb str r3, [r7, #44] ; 0x2c + 804777e: 6afb ldr r3, [r7, #44] ; 0x2c + 8047780: 2b00 cmp r3, #0 + 8047782: d1f4 bne.n 804776e + 8047784: e000 b.n 8047788 break; - 8047746: bf00 nop + 8047786: bf00 nop } } } /* release the sources allocate for the fragment queue entry */ ip_reass_dequeue_datagram(ipr, ipr_prev); - 8047748: 6af9 ldr r1, [r7, #44] ; 0x2c - 804774a: 6b38 ldr r0, [r7, #48] ; 0x30 - 804774c: f7ff fd2e bl 80471ac + 8047788: 6af9 ldr r1, [r7, #44] ; 0x2c + 804778a: 6b38 ldr r0, [r7, #48] ; 0x30 + 804778c: f7ff fd2e bl 80471ec /* and adjust the number of pbufs currently queued for reassembly. */ clen = pbuf_clen(p); - 8047750: 6878 ldr r0, [r7, #4] - 8047752: f7f7 f8f5 bl 803e940 - 8047756: 4603 mov r3, r0 - 8047758: 843b strh r3, [r7, #32] + 8047790: 6878 ldr r0, [r7, #4] + 8047792: f7f7 f8f5 bl 803e980 + 8047796: 4603 mov r3, r0 + 8047798: 843b strh r3, [r7, #32] LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= clen); - 804775a: 4b0c ldr r3, [pc, #48] ; (804778c ) - 804775c: 881b ldrh r3, [r3, #0] - 804775e: 8c3a ldrh r2, [r7, #32] - 8047760: 429a cmp r2, r3 - 8047762: d906 bls.n 8047772 - 8047764: 4b0b ldr r3, [pc, #44] ; (8047794 ) - 8047766: f240 229b movw r2, #667 ; 0x29b - 804776a: 490b ldr r1, [pc, #44] ; (8047798 ) - 804776c: 480b ldr r0, [pc, #44] ; (804779c ) - 804776e: f000 fc19 bl 8047fa4 + 804779a: 4b0c ldr r3, [pc, #48] ; (80477cc ) + 804779c: 881b ldrh r3, [r3, #0] + 804779e: 8c3a ldrh r2, [r7, #32] + 80477a0: 429a cmp r2, r3 + 80477a2: d906 bls.n 80477b2 + 80477a4: 4b0b ldr r3, [pc, #44] ; (80477d4 ) + 80477a6: f240 229b movw r2, #667 ; 0x29b + 80477aa: 490b ldr r1, [pc, #44] ; (80477d8 ) + 80477ac: 480b ldr r0, [pc, #44] ; (80477dc ) + 80477ae: f000 fc19 bl 8047fe4 ip_reass_pbufcount = (u16_t)(ip_reass_pbufcount - clen); - 8047772: 4b06 ldr r3, [pc, #24] ; (804778c ) - 8047774: 881a ldrh r2, [r3, #0] - 8047776: 8c3b ldrh r3, [r7, #32] - 8047778: 1ad3 subs r3, r2, r3 - 804777a: b29a uxth r2, r3 - 804777c: 4b03 ldr r3, [pc, #12] ; (804778c ) - 804777e: 801a strh r2, [r3, #0] + 80477b2: 4b06 ldr r3, [pc, #24] ; (80477cc ) + 80477b4: 881a ldrh r2, [r3, #0] + 80477b6: 8c3b ldrh r3, [r7, #32] + 80477b8: 1ad3 subs r3, r2, r3 + 80477ba: b29a uxth r2, r3 + 80477bc: 4b03 ldr r3, [pc, #12] ; (80477cc ) + 80477be: 801a strh r2, [r3, #0] MIB2_STATS_INC(mib2.ipreasmoks); /* Return the pbuf chain */ return p; - 8047780: 687b ldr r3, [r7, #4] - 8047782: e038 b.n 80477f6 + 80477c0: 687b ldr r3, [r7, #4] + 80477c2: e038 b.n 8047836 } /* the datagram is not (yet?) reassembled completely */ LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount)); return NULL; - 8047784: 2300 movs r3, #0 - 8047786: e036 b.n 80477f6 + 80477c4: 2300 movs r3, #0 + 80477c6: e036 b.n 8047836 goto nullreturn_ipr; - 8047788: bf00 nop - 804778a: e00a b.n 80477a2 - 804778c: 2400ec40 .word 0x2400ec40 - 8047790: 2400ec3c .word 0x2400ec3c - 8047794: 0804c888 .word 0x0804c888 - 8047798: 0804c9f8 .word 0x0804c9f8 - 804779c: 0804c8d0 .word 0x0804c8d0 + 80477c8: bf00 nop + 80477ca: e00a b.n 80477e2 + 80477cc: 2400ec40 .word 0x2400ec40 + 80477d0: 2400ec3c .word 0x2400ec3c + 80477d4: 0804c8c8 .word 0x0804c8c8 + 80477d8: 0804ca38 .word 0x0804ca38 + 80477dc: 0804c910 .word 0x0804c910 goto nullreturn_ipr; - 80477a0: bf00 nop + 80477e0: bf00 nop nullreturn_ipr: LWIP_ASSERT("ipr != NULL", ipr != NULL); - 80477a2: 6b3b ldr r3, [r7, #48] ; 0x30 - 80477a4: 2b00 cmp r3, #0 - 80477a6: d106 bne.n 80477b6 - 80477a8: 4b15 ldr r3, [pc, #84] ; (8047800 ) - 80477aa: f44f 722a mov.w r2, #680 ; 0x2a8 - 80477ae: 4915 ldr r1, [pc, #84] ; (8047804 ) - 80477b0: 4815 ldr r0, [pc, #84] ; (8047808 ) - 80477b2: f000 fbf7 bl 8047fa4 + 80477e2: 6b3b ldr r3, [r7, #48] ; 0x30 + 80477e4: 2b00 cmp r3, #0 + 80477e6: d106 bne.n 80477f6 + 80477e8: 4b15 ldr r3, [pc, #84] ; (8047840 ) + 80477ea: f44f 722a mov.w r2, #680 ; 0x2a8 + 80477ee: 4915 ldr r1, [pc, #84] ; (8047844 ) + 80477f0: 4815 ldr r0, [pc, #84] ; (8047848 ) + 80477f2: f000 fbf7 bl 8047fe4 if (ipr->p == NULL) { - 80477b6: 6b3b ldr r3, [r7, #48] ; 0x30 - 80477b8: 685b ldr r3, [r3, #4] - 80477ba: 2b00 cmp r3, #0 - 80477bc: d116 bne.n 80477ec + 80477f6: 6b3b ldr r3, [r7, #48] ; 0x30 + 80477f8: 685b ldr r3, [r3, #4] + 80477fa: 2b00 cmp r3, #0 + 80477fc: d116 bne.n 804782c /* dropped pbuf after creating a new datagram entry: remove the entry, too */ LWIP_ASSERT("not firstalthough just enqueued", ipr == reassdatagrams); - 80477be: 4b13 ldr r3, [pc, #76] ; (804780c ) - 80477c0: 681b ldr r3, [r3, #0] - 80477c2: 6b3a ldr r2, [r7, #48] ; 0x30 - 80477c4: 429a cmp r2, r3 - 80477c6: d006 beq.n 80477d6 - 80477c8: 4b0d ldr r3, [pc, #52] ; (8047800 ) - 80477ca: f240 22ab movw r2, #683 ; 0x2ab - 80477ce: 4910 ldr r1, [pc, #64] ; (8047810 ) - 80477d0: 480d ldr r0, [pc, #52] ; (8047808 ) - 80477d2: f000 fbe7 bl 8047fa4 + 80477fe: 4b13 ldr r3, [pc, #76] ; (804784c ) + 8047800: 681b ldr r3, [r3, #0] + 8047802: 6b3a ldr r2, [r7, #48] ; 0x30 + 8047804: 429a cmp r2, r3 + 8047806: d006 beq.n 8047816 + 8047808: 4b0d ldr r3, [pc, #52] ; (8047840 ) + 804780a: f240 22ab movw r2, #683 ; 0x2ab + 804780e: 4910 ldr r1, [pc, #64] ; (8047850 ) + 8047810: 480d ldr r0, [pc, #52] ; (8047848 ) + 8047812: f000 fbe7 bl 8047fe4 ip_reass_dequeue_datagram(ipr, NULL); - 80477d6: 2100 movs r1, #0 - 80477d8: 6b38 ldr r0, [r7, #48] ; 0x30 - 80477da: f7ff fce7 bl 80471ac - 80477de: e006 b.n 80477ee + 8047816: 2100 movs r1, #0 + 8047818: 6b38 ldr r0, [r7, #48] ; 0x30 + 804781a: f7ff fce7 bl 80471ec + 804781e: e006 b.n 804782e goto nullreturn; - 80477e0: bf00 nop - 80477e2: e004 b.n 80477ee + 8047820: bf00 nop + 8047822: e004 b.n 804782e goto nullreturn; - 80477e4: bf00 nop - 80477e6: e002 b.n 80477ee + 8047824: bf00 nop + 8047826: e002 b.n 804782e goto nullreturn; - 80477e8: bf00 nop - 80477ea: e000 b.n 80477ee + 8047828: bf00 nop + 804782a: e000 b.n 804782e } nullreturn: - 80477ec: bf00 nop + 804782c: bf00 nop LWIP_DEBUGF(IP_REASS_DEBUG, ("ip4_reass: nullreturn\n")); IPFRAG_STATS_INC(ip_frag.drop); pbuf_free(p); - 80477ee: 6878 ldr r0, [r7, #4] - 80477f0: f7f7 f81e bl 803e830 + 804782e: 6878 ldr r0, [r7, #4] + 8047830: f7f7 f81e bl 803e870 return NULL; - 80477f4: 2300 movs r3, #0 -} - 80477f6: 4618 mov r0, r3 - 80477f8: 3738 adds r7, #56 ; 0x38 - 80477fa: 46bd mov sp, r7 - 80477fc: bd80 pop {r7, pc} - 80477fe: bf00 nop - 8047800: 0804c888 .word 0x0804c888 - 8047804: 0804ca14 .word 0x0804ca14 - 8047808: 0804c8d0 .word 0x0804c8d0 - 804780c: 2400ec3c .word 0x2400ec3c - 8047810: 0804ca20 .word 0x0804ca20 - -08047814 : + 8047834: 2300 movs r3, #0 +} + 8047836: 4618 mov r0, r3 + 8047838: 3738 adds r7, #56 ; 0x38 + 804783a: 46bd mov sp, r7 + 804783c: bd80 pop {r7, pc} + 804783e: bf00 nop + 8047840: 0804c8c8 .word 0x0804c8c8 + 8047844: 0804ca54 .word 0x0804ca54 + 8047848: 0804c910 .word 0x0804c910 + 804784c: 2400ec3c .word 0x2400ec3c + 8047850: 0804ca60 .word 0x0804ca60 + +08047854 : #if IP_FRAG #if !LWIP_NETIF_TX_SINGLE_PBUF /** Allocate a new struct pbuf_custom_ref */ static struct pbuf_custom_ref * ip_frag_alloc_pbuf_custom_ref(void) { - 8047814: b580 push {r7, lr} - 8047816: af00 add r7, sp, #0 + 8047854: b580 push {r7, lr} + 8047856: af00 add r7, sp, #0 return (struct pbuf_custom_ref *)memp_malloc(MEMP_FRAG_PBUF); - 8047818: 2005 movs r0, #5 - 804781a: f7f6 f907 bl 803da2c - 804781e: 4603 mov r3, r0 + 8047858: 2005 movs r0, #5 + 804785a: f7f6 f907 bl 803da6c + 804785e: 4603 mov r3, r0 } - 8047820: 4618 mov r0, r3 - 8047822: bd80 pop {r7, pc} + 8047860: 4618 mov r0, r3 + 8047862: bd80 pop {r7, pc} -08047824 : +08047864 : /** Free a struct pbuf_custom_ref */ static void ip_frag_free_pbuf_custom_ref(struct pbuf_custom_ref *p) { - 8047824: b580 push {r7, lr} - 8047826: b082 sub sp, #8 - 8047828: af00 add r7, sp, #0 - 804782a: 6078 str r0, [r7, #4] + 8047864: b580 push {r7, lr} + 8047866: b082 sub sp, #8 + 8047868: af00 add r7, sp, #0 + 804786a: 6078 str r0, [r7, #4] LWIP_ASSERT("p != NULL", p != NULL); - 804782c: 687b ldr r3, [r7, #4] - 804782e: 2b00 cmp r3, #0 - 8047830: d106 bne.n 8047840 - 8047832: 4b07 ldr r3, [pc, #28] ; (8047850 ) - 8047834: f44f 7231 mov.w r2, #708 ; 0x2c4 - 8047838: 4906 ldr r1, [pc, #24] ; (8047854 ) - 804783a: 4807 ldr r0, [pc, #28] ; (8047858 ) - 804783c: f000 fbb2 bl 8047fa4 + 804786c: 687b ldr r3, [r7, #4] + 804786e: 2b00 cmp r3, #0 + 8047870: d106 bne.n 8047880 + 8047872: 4b07 ldr r3, [pc, #28] ; (8047890 ) + 8047874: f44f 7231 mov.w r2, #708 ; 0x2c4 + 8047878: 4906 ldr r1, [pc, #24] ; (8047894 ) + 804787a: 4807 ldr r0, [pc, #28] ; (8047898 ) + 804787c: f000 fbb2 bl 8047fe4 memp_free(MEMP_FRAG_PBUF, p); - 8047840: 6879 ldr r1, [r7, #4] - 8047842: 2005 movs r0, #5 - 8047844: f7f6 f962 bl 803db0c + 8047880: 6879 ldr r1, [r7, #4] + 8047882: 2005 movs r0, #5 + 8047884: f7f6 f962 bl 803db4c } - 8047848: bf00 nop - 804784a: 3708 adds r7, #8 - 804784c: 46bd mov sp, r7 - 804784e: bd80 pop {r7, pc} - 8047850: 0804c888 .word 0x0804c888 - 8047854: 0804ca40 .word 0x0804ca40 - 8047858: 0804c8d0 .word 0x0804c8d0 + 8047888: bf00 nop + 804788a: 3708 adds r7, #8 + 804788c: 46bd mov sp, r7 + 804788e: bd80 pop {r7, pc} + 8047890: 0804c8c8 .word 0x0804c8c8 + 8047894: 0804ca80 .word 0x0804ca80 + 8047898: 0804c910 .word 0x0804c910 -0804785c : +0804789c : /** Free-callback function to free a 'struct pbuf_custom_ref', called by * pbuf_free. */ static void ipfrag_free_pbuf_custom(struct pbuf *p) { - 804785c: b580 push {r7, lr} - 804785e: b084 sub sp, #16 - 8047860: af00 add r7, sp, #0 - 8047862: 6078 str r0, [r7, #4] + 804789c: b580 push {r7, lr} + 804789e: b084 sub sp, #16 + 80478a0: af00 add r7, sp, #0 + 80478a2: 6078 str r0, [r7, #4] struct pbuf_custom_ref *pcr = (struct pbuf_custom_ref *)p; - 8047864: 687b ldr r3, [r7, #4] - 8047866: 60fb str r3, [r7, #12] + 80478a4: 687b ldr r3, [r7, #4] + 80478a6: 60fb str r3, [r7, #12] LWIP_ASSERT("pcr != NULL", pcr != NULL); - 8047868: 68fb ldr r3, [r7, #12] - 804786a: 2b00 cmp r3, #0 - 804786c: d106 bne.n 804787c - 804786e: 4b11 ldr r3, [pc, #68] ; (80478b4 ) - 8047870: f240 22ce movw r2, #718 ; 0x2ce - 8047874: 4910 ldr r1, [pc, #64] ; (80478b8 ) - 8047876: 4811 ldr r0, [pc, #68] ; (80478bc ) - 8047878: f000 fb94 bl 8047fa4 + 80478a8: 68fb ldr r3, [r7, #12] + 80478aa: 2b00 cmp r3, #0 + 80478ac: d106 bne.n 80478bc + 80478ae: 4b11 ldr r3, [pc, #68] ; (80478f4 ) + 80478b0: f240 22ce movw r2, #718 ; 0x2ce + 80478b4: 4910 ldr r1, [pc, #64] ; (80478f8 ) + 80478b6: 4811 ldr r0, [pc, #68] ; (80478fc ) + 80478b8: f000 fb94 bl 8047fe4 LWIP_ASSERT("pcr == p", (void *)pcr == (void *)p); - 804787c: 68fa ldr r2, [r7, #12] - 804787e: 687b ldr r3, [r7, #4] - 8047880: 429a cmp r2, r3 - 8047882: d006 beq.n 8047892 - 8047884: 4b0b ldr r3, [pc, #44] ; (80478b4 ) - 8047886: f240 22cf movw r2, #719 ; 0x2cf - 804788a: 490d ldr r1, [pc, #52] ; (80478c0 ) - 804788c: 480b ldr r0, [pc, #44] ; (80478bc ) - 804788e: f000 fb89 bl 8047fa4 + 80478bc: 68fa ldr r2, [r7, #12] + 80478be: 687b ldr r3, [r7, #4] + 80478c0: 429a cmp r2, r3 + 80478c2: d006 beq.n 80478d2 + 80478c4: 4b0b ldr r3, [pc, #44] ; (80478f4 ) + 80478c6: f240 22cf movw r2, #719 ; 0x2cf + 80478ca: 490d ldr r1, [pc, #52] ; (8047900 ) + 80478cc: 480b ldr r0, [pc, #44] ; (80478fc ) + 80478ce: f000 fb89 bl 8047fe4 if (pcr->original != NULL) { - 8047892: 68fb ldr r3, [r7, #12] - 8047894: 695b ldr r3, [r3, #20] - 8047896: 2b00 cmp r3, #0 - 8047898: d004 beq.n 80478a4 + 80478d2: 68fb ldr r3, [r7, #12] + 80478d4: 695b ldr r3, [r3, #20] + 80478d6: 2b00 cmp r3, #0 + 80478d8: d004 beq.n 80478e4 pbuf_free(pcr->original); - 804789a: 68fb ldr r3, [r7, #12] - 804789c: 695b ldr r3, [r3, #20] - 804789e: 4618 mov r0, r3 - 80478a0: f7f6 ffc6 bl 803e830 + 80478da: 68fb ldr r3, [r7, #12] + 80478dc: 695b ldr r3, [r3, #20] + 80478de: 4618 mov r0, r3 + 80478e0: f7f6 ffc6 bl 803e870 } ip_frag_free_pbuf_custom_ref(pcr); - 80478a4: 68f8 ldr r0, [r7, #12] - 80478a6: f7ff ffbd bl 8047824 -} - 80478aa: bf00 nop - 80478ac: 3710 adds r7, #16 - 80478ae: 46bd mov sp, r7 - 80478b0: bd80 pop {r7, pc} - 80478b2: bf00 nop - 80478b4: 0804c888 .word 0x0804c888 - 80478b8: 0804ca4c .word 0x0804ca4c - 80478bc: 0804c8d0 .word 0x0804c8d0 - 80478c0: 0804ca58 .word 0x0804ca58 - -080478c4 : + 80478e4: 68f8 ldr r0, [r7, #12] + 80478e6: f7ff ffbd bl 8047864 +} + 80478ea: bf00 nop + 80478ec: 3710 adds r7, #16 + 80478ee: 46bd mov sp, r7 + 80478f0: bd80 pop {r7, pc} + 80478f2: bf00 nop + 80478f4: 0804c8c8 .word 0x0804c8c8 + 80478f8: 0804ca8c .word 0x0804ca8c + 80478fc: 0804c910 .word 0x0804c910 + 8047900: 0804ca98 .word 0x0804ca98 + +08047904 : * * @return ERR_OK if sent successfully, err_t otherwise */ err_t ip4_frag(struct pbuf *p, struct netif *netif, const ip4_addr_t *dest) { - 80478c4: b580 push {r7, lr} - 80478c6: b094 sub sp, #80 ; 0x50 - 80478c8: af02 add r7, sp, #8 - 80478ca: 60f8 str r0, [r7, #12] - 80478cc: 60b9 str r1, [r7, #8] - 80478ce: 607a str r2, [r7, #4] + 8047904: b580 push {r7, lr} + 8047906: b094 sub sp, #80 ; 0x50 + 8047908: af02 add r7, sp, #8 + 804790a: 60f8 str r0, [r7, #12] + 804790c: 60b9 str r1, [r7, #8] + 804790e: 607a str r2, [r7, #4] struct pbuf *rambuf; #if !LWIP_NETIF_TX_SINGLE_PBUF struct pbuf *newpbuf; u16_t newpbuflen = 0; - 80478d0: 2300 movs r3, #0 - 80478d2: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 + 8047910: 2300 movs r3, #0 + 8047912: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 u16_t left_to_copy; #endif struct ip_hdr *original_iphdr; struct ip_hdr *iphdr; const u16_t nfb = (u16_t)((netif->mtu - IP_HLEN) / 8); - 80478d6: 68bb ldr r3, [r7, #8] - 80478d8: 8d1b ldrh r3, [r3, #40] ; 0x28 - 80478da: 3b14 subs r3, #20 - 80478dc: 2b00 cmp r3, #0 - 80478de: da00 bge.n 80478e2 - 80478e0: 3307 adds r3, #7 - 80478e2: 10db asrs r3, r3, #3 - 80478e4: 877b strh r3, [r7, #58] ; 0x3a + 8047916: 68bb ldr r3, [r7, #8] + 8047918: 8d1b ldrh r3, [r3, #40] ; 0x28 + 804791a: 3b14 subs r3, #20 + 804791c: 2b00 cmp r3, #0 + 804791e: da00 bge.n 8047922 + 8047920: 3307 adds r3, #7 + 8047922: 10db asrs r3, r3, #3 + 8047924: 877b strh r3, [r7, #58] ; 0x3a u16_t left, fragsize; u16_t ofo; int last; u16_t poff = IP_HLEN; - 80478e6: 2314 movs r3, #20 - 80478e8: 87fb strh r3, [r7, #62] ; 0x3e + 8047926: 2314 movs r3, #20 + 8047928: 87fb strh r3, [r7, #62] ; 0x3e u16_t tmp; int mf_set; original_iphdr = (struct ip_hdr *)p->payload; - 80478ea: 68fb ldr r3, [r7, #12] - 80478ec: 685b ldr r3, [r3, #4] - 80478ee: 637b str r3, [r7, #52] ; 0x34 + 804792a: 68fb ldr r3, [r7, #12] + 804792c: 685b ldr r3, [r3, #4] + 804792e: 637b str r3, [r7, #52] ; 0x34 iphdr = original_iphdr; - 80478f0: 6b7b ldr r3, [r7, #52] ; 0x34 - 80478f2: 633b str r3, [r7, #48] ; 0x30 + 8047930: 6b7b ldr r3, [r7, #52] ; 0x34 + 8047932: 633b str r3, [r7, #48] ; 0x30 if (IPH_HL_BYTES(iphdr) != IP_HLEN) { - 80478f4: 6b3b ldr r3, [r7, #48] ; 0x30 - 80478f6: 781b ldrb r3, [r3, #0] - 80478f8: f003 030f and.w r3, r3, #15 - 80478fc: b2db uxtb r3, r3 - 80478fe: 009b lsls r3, r3, #2 - 8047900: b2db uxtb r3, r3 - 8047902: 2b14 cmp r3, #20 - 8047904: d002 beq.n 804790c + 8047934: 6b3b ldr r3, [r7, #48] ; 0x30 + 8047936: 781b ldrb r3, [r3, #0] + 8047938: f003 030f and.w r3, r3, #15 + 804793c: b2db uxtb r3, r3 + 804793e: 009b lsls r3, r3, #2 + 8047940: b2db uxtb r3, r3 + 8047942: 2b14 cmp r3, #20 + 8047944: d002 beq.n 804794c /* ip4_frag() does not support IP options */ return ERR_VAL; - 8047906: f06f 0305 mvn.w r3, #5 - 804790a: e110 b.n 8047b2e + 8047946: f06f 0305 mvn.w r3, #5 + 804794a: e110 b.n 8047b6e } LWIP_ERROR("ip4_frag(): pbuf too short", p->len >= IP_HLEN, return ERR_VAL); - 804790c: 68fb ldr r3, [r7, #12] - 804790e: 895b ldrh r3, [r3, #10] - 8047910: 2b13 cmp r3, #19 - 8047912: d809 bhi.n 8047928 - 8047914: 4b88 ldr r3, [pc, #544] ; (8047b38 ) - 8047916: f44f 723f mov.w r2, #764 ; 0x2fc - 804791a: 4988 ldr r1, [pc, #544] ; (8047b3c ) - 804791c: 4888 ldr r0, [pc, #544] ; (8047b40 ) - 804791e: f000 fb41 bl 8047fa4 - 8047922: f06f 0305 mvn.w r3, #5 - 8047926: e102 b.n 8047b2e + 804794c: 68fb ldr r3, [r7, #12] + 804794e: 895b ldrh r3, [r3, #10] + 8047950: 2b13 cmp r3, #19 + 8047952: d809 bhi.n 8047968 + 8047954: 4b88 ldr r3, [pc, #544] ; (8047b78 ) + 8047956: f44f 723f mov.w r2, #764 ; 0x2fc + 804795a: 4988 ldr r1, [pc, #544] ; (8047b7c ) + 804795c: 4888 ldr r0, [pc, #544] ; (8047b80 ) + 804795e: f000 fb41 bl 8047fe4 + 8047962: f06f 0305 mvn.w r3, #5 + 8047966: e102 b.n 8047b6e /* Save original offset */ tmp = lwip_ntohs(IPH_OFFSET(iphdr)); - 8047928: 6b3b ldr r3, [r7, #48] ; 0x30 - 804792a: 88db ldrh r3, [r3, #6] - 804792c: b29b uxth r3, r3 - 804792e: 4618 mov r0, r3 - 8047930: f7f5 fb4c bl 803cfcc - 8047934: 4603 mov r3, r0 - 8047936: 87bb strh r3, [r7, #60] ; 0x3c + 8047968: 6b3b ldr r3, [r7, #48] ; 0x30 + 804796a: 88db ldrh r3, [r3, #6] + 804796c: b29b uxth r3, r3 + 804796e: 4618 mov r0, r3 + 8047970: f7f5 fb4c bl 803d00c + 8047974: 4603 mov r3, r0 + 8047976: 87bb strh r3, [r7, #60] ; 0x3c ofo = tmp & IP_OFFMASK; - 8047938: 8fbb ldrh r3, [r7, #60] ; 0x3c - 804793a: f3c3 030c ubfx r3, r3, #0, #13 - 804793e: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8047978: 8fbb ldrh r3, [r7, #60] ; 0x3c + 804797a: f3c3 030c ubfx r3, r3, #0, #13 + 804797e: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 /* already fragmented? if so, the last fragment we create must have MF, too */ mf_set = tmp & IP_MF; - 8047942: 8fbb ldrh r3, [r7, #60] ; 0x3c - 8047944: f403 5300 and.w r3, r3, #8192 ; 0x2000 - 8047948: 62fb str r3, [r7, #44] ; 0x2c + 8047982: 8fbb ldrh r3, [r7, #60] ; 0x3c + 8047984: f403 5300 and.w r3, r3, #8192 ; 0x2000 + 8047988: 62fb str r3, [r7, #44] ; 0x2c left = (u16_t)(p->tot_len - IP_HLEN); - 804794a: 68fb ldr r3, [r7, #12] - 804794c: 891b ldrh r3, [r3, #8] - 804794e: 3b14 subs r3, #20 - 8047950: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 804798a: 68fb ldr r3, [r7, #12] + 804798c: 891b ldrh r3, [r3, #8] + 804798e: 3b14 subs r3, #20 + 8047990: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 while (left) { - 8047954: e0e1 b.n 8047b1a + 8047994: e0e1 b.n 8047b5a /* Fill this fragment */ fragsize = LWIP_MIN(left, (u16_t)(nfb * 8)); - 8047956: 8f7b ldrh r3, [r7, #58] ; 0x3a - 8047958: 00db lsls r3, r3, #3 - 804795a: b29b uxth r3, r3 - 804795c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 8047960: 4293 cmp r3, r2 - 8047962: bf28 it cs - 8047964: 4613 movcs r3, r2 - 8047966: 857b strh r3, [r7, #42] ; 0x2a + 8047996: 8f7b ldrh r3, [r7, #58] ; 0x3a + 8047998: 00db lsls r3, r3, #3 + 804799a: b29b uxth r3, r3 + 804799c: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 80479a0: 4293 cmp r3, r2 + 80479a2: bf28 it cs + 80479a4: 4613 movcs r3, r2 + 80479a6: 857b strh r3, [r7, #42] ; 0x2a /* When not using a static buffer, create a chain of pbufs. * The first will be a PBUF_RAM holding the link and IP header. * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, * but limited to the size of an mtu. */ rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM); - 8047968: f44f 7220 mov.w r2, #640 ; 0x280 - 804796c: 2114 movs r1, #20 - 804796e: 200e movs r0, #14 - 8047970: f7f6 fc7a bl 803e268 - 8047974: 6278 str r0, [r7, #36] ; 0x24 + 80479a8: f44f 7220 mov.w r2, #640 ; 0x280 + 80479ac: 2114 movs r1, #20 + 80479ae: 200e movs r0, #14 + 80479b0: f7f6 fc7a bl 803e2a8 + 80479b4: 6278 str r0, [r7, #36] ; 0x24 if (rambuf == NULL) { - 8047976: 6a7b ldr r3, [r7, #36] ; 0x24 - 8047978: 2b00 cmp r3, #0 - 804797a: f000 80d5 beq.w 8047b28 + 80479b6: 6a7b ldr r3, [r7, #36] ; 0x24 + 80479b8: 2b00 cmp r3, #0 + 80479ba: f000 80d5 beq.w 8047b68 goto memerr; } LWIP_ASSERT("this needs a pbuf in one piece!", - 804797e: 6a7b ldr r3, [r7, #36] ; 0x24 - 8047980: 895b ldrh r3, [r3, #10] - 8047982: 2b13 cmp r3, #19 - 8047984: d806 bhi.n 8047994 - 8047986: 4b6c ldr r3, [pc, #432] ; (8047b38 ) - 8047988: f44f 7249 mov.w r2, #804 ; 0x324 - 804798c: 496d ldr r1, [pc, #436] ; (8047b44 ) - 804798e: 486c ldr r0, [pc, #432] ; (8047b40 ) - 8047990: f000 fb08 bl 8047fa4 + 80479be: 6a7b ldr r3, [r7, #36] ; 0x24 + 80479c0: 895b ldrh r3, [r3, #10] + 80479c2: 2b13 cmp r3, #19 + 80479c4: d806 bhi.n 80479d4 + 80479c6: 4b6c ldr r3, [pc, #432] ; (8047b78 ) + 80479c8: f44f 7249 mov.w r2, #804 ; 0x324 + 80479cc: 496d ldr r1, [pc, #436] ; (8047b84 ) + 80479ce: 486c ldr r0, [pc, #432] ; (8047b80 ) + 80479d0: f000 fb08 bl 8047fe4 (rambuf->len >= (IP_HLEN))); SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - 8047994: 6a7b ldr r3, [r7, #36] ; 0x24 - 8047996: 685b ldr r3, [r3, #4] - 8047998: 2214 movs r2, #20 - 804799a: 6b79 ldr r1, [r7, #52] ; 0x34 - 804799c: 4618 mov r0, r3 - 804799e: f000 f9f1 bl 8047d84 + 80479d4: 6a7b ldr r3, [r7, #36] ; 0x24 + 80479d6: 685b ldr r3, [r3, #4] + 80479d8: 2214 movs r2, #20 + 80479da: 6b79 ldr r1, [r7, #52] ; 0x34 + 80479dc: 4618 mov r0, r3 + 80479de: f000 f9f1 bl 8047dc4 iphdr = (struct ip_hdr *)rambuf->payload; - 80479a2: 6a7b ldr r3, [r7, #36] ; 0x24 - 80479a4: 685b ldr r3, [r3, #4] - 80479a6: 633b str r3, [r7, #48] ; 0x30 + 80479e2: 6a7b ldr r3, [r7, #36] ; 0x24 + 80479e4: 685b ldr r3, [r3, #4] + 80479e6: 633b str r3, [r7, #48] ; 0x30 left_to_copy = fragsize; - 80479a8: 8d7b ldrh r3, [r7, #42] ; 0x2a - 80479aa: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 + 80479e8: 8d7b ldrh r3, [r7, #42] ; 0x2a + 80479ea: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 while (left_to_copy) { - 80479ae: e064 b.n 8047a7a + 80479ee: e064 b.n 8047aba struct pbuf_custom_ref *pcr; u16_t plen = (u16_t)(p->len - poff); - 80479b0: 68fb ldr r3, [r7, #12] - 80479b2: 895a ldrh r2, [r3, #10] - 80479b4: 8ffb ldrh r3, [r7, #62] ; 0x3e - 80479b6: 1ad3 subs r3, r2, r3 - 80479b8: 83fb strh r3, [r7, #30] + 80479f0: 68fb ldr r3, [r7, #12] + 80479f2: 895a ldrh r2, [r3, #10] + 80479f4: 8ffb ldrh r3, [r7, #62] ; 0x3e + 80479f6: 1ad3 subs r3, r2, r3 + 80479f8: 83fb strh r3, [r7, #30] LWIP_ASSERT("p->len >= poff", p->len >= poff); - 80479ba: 68fb ldr r3, [r7, #12] - 80479bc: 895b ldrh r3, [r3, #10] - 80479be: 8ffa ldrh r2, [r7, #62] ; 0x3e - 80479c0: 429a cmp r2, r3 - 80479c2: d906 bls.n 80479d2 - 80479c4: 4b5c ldr r3, [pc, #368] ; (8047b38 ) - 80479c6: f240 322d movw r2, #813 ; 0x32d - 80479ca: 495f ldr r1, [pc, #380] ; (8047b48 ) - 80479cc: 485c ldr r0, [pc, #368] ; (8047b40 ) - 80479ce: f000 fae9 bl 8047fa4 + 80479fa: 68fb ldr r3, [r7, #12] + 80479fc: 895b ldrh r3, [r3, #10] + 80479fe: 8ffa ldrh r2, [r7, #62] ; 0x3e + 8047a00: 429a cmp r2, r3 + 8047a02: d906 bls.n 8047a12 + 8047a04: 4b5c ldr r3, [pc, #368] ; (8047b78 ) + 8047a06: f240 322d movw r2, #813 ; 0x32d + 8047a0a: 495f ldr r1, [pc, #380] ; (8047b88 ) + 8047a0c: 485c ldr r0, [pc, #368] ; (8047b80 ) + 8047a0e: f000 fae9 bl 8047fe4 newpbuflen = LWIP_MIN(left_to_copy, plen); - 80479d2: 8bfa ldrh r2, [r7, #30] - 80479d4: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 - 80479d8: 4293 cmp r3, r2 - 80479da: bf28 it cs - 80479dc: 4613 movcs r3, r2 - 80479de: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 + 8047a12: 8bfa ldrh r2, [r7, #30] + 8047a14: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 + 8047a18: 4293 cmp r3, r2 + 8047a1a: bf28 it cs + 8047a1c: 4613 movcs r3, r2 + 8047a1e: f8a7 3046 strh.w r3, [r7, #70] ; 0x46 /* Is this pbuf already empty? */ if (!newpbuflen) { - 80479e2: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 - 80479e6: 2b00 cmp r3, #0 - 80479e8: d105 bne.n 80479f6 + 8047a22: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 + 8047a26: 2b00 cmp r3, #0 + 8047a28: d105 bne.n 8047a36 poff = 0; - 80479ea: 2300 movs r3, #0 - 80479ec: 87fb strh r3, [r7, #62] ; 0x3e + 8047a2a: 2300 movs r3, #0 + 8047a2c: 87fb strh r3, [r7, #62] ; 0x3e p = p->next; - 80479ee: 68fb ldr r3, [r7, #12] - 80479f0: 681b ldr r3, [r3, #0] - 80479f2: 60fb str r3, [r7, #12] + 8047a2e: 68fb ldr r3, [r7, #12] + 8047a30: 681b ldr r3, [r3, #0] + 8047a32: 60fb str r3, [r7, #12] continue; - 80479f4: e041 b.n 8047a7a + 8047a34: e041 b.n 8047aba } pcr = ip_frag_alloc_pbuf_custom_ref(); - 80479f6: f7ff ff0d bl 8047814 - 80479fa: 61b8 str r0, [r7, #24] + 8047a36: f7ff ff0d bl 8047854 + 8047a3a: 61b8 str r0, [r7, #24] if (pcr == NULL) { - 80479fc: 69bb ldr r3, [r7, #24] - 80479fe: 2b00 cmp r3, #0 - 8047a00: d103 bne.n 8047a0a + 8047a3c: 69bb ldr r3, [r7, #24] + 8047a3e: 2b00 cmp r3, #0 + 8047a40: d103 bne.n 8047a4a pbuf_free(rambuf); - 8047a02: 6a78 ldr r0, [r7, #36] ; 0x24 - 8047a04: f7f6 ff14 bl 803e830 + 8047a42: 6a78 ldr r0, [r7, #36] ; 0x24 + 8047a44: f7f6 ff14 bl 803e870 goto memerr; - 8047a08: e08f b.n 8047b2a + 8047a48: e08f b.n 8047b6a } /* Mirror this pbuf, although we might not need all of it. */ newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, - 8047a0a: 69b8 ldr r0, [r7, #24] + 8047a4a: 69b8 ldr r0, [r7, #24] (u8_t *)p->payload + poff, newpbuflen); - 8047a0c: 68fb ldr r3, [r7, #12] - 8047a0e: 685a ldr r2, [r3, #4] + 8047a4c: 68fb ldr r3, [r7, #12] + 8047a4e: 685a ldr r2, [r3, #4] newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, - 8047a10: 8ffb ldrh r3, [r7, #62] ; 0x3e - 8047a12: 4413 add r3, r2 - 8047a14: f8b7 1046 ldrh.w r1, [r7, #70] ; 0x46 - 8047a18: f8b7 2046 ldrh.w r2, [r7, #70] ; 0x46 - 8047a1c: 9201 str r2, [sp, #4] - 8047a1e: 9300 str r3, [sp, #0] - 8047a20: 4603 mov r3, r0 - 8047a22: 2241 movs r2, #65 ; 0x41 - 8047a24: 2000 movs r0, #0 - 8047a26: f7f6 fd49 bl 803e4bc - 8047a2a: 6178 str r0, [r7, #20] + 8047a50: 8ffb ldrh r3, [r7, #62] ; 0x3e + 8047a52: 4413 add r3, r2 + 8047a54: f8b7 1046 ldrh.w r1, [r7, #70] ; 0x46 + 8047a58: f8b7 2046 ldrh.w r2, [r7, #70] ; 0x46 + 8047a5c: 9201 str r2, [sp, #4] + 8047a5e: 9300 str r3, [sp, #0] + 8047a60: 4603 mov r3, r0 + 8047a62: 2241 movs r2, #65 ; 0x41 + 8047a64: 2000 movs r0, #0 + 8047a66: f7f6 fd49 bl 803e4fc + 8047a6a: 6178 str r0, [r7, #20] if (newpbuf == NULL) { - 8047a2c: 697b ldr r3, [r7, #20] - 8047a2e: 2b00 cmp r3, #0 - 8047a30: d106 bne.n 8047a40 + 8047a6c: 697b ldr r3, [r7, #20] + 8047a6e: 2b00 cmp r3, #0 + 8047a70: d106 bne.n 8047a80 ip_frag_free_pbuf_custom_ref(pcr); - 8047a32: 69b8 ldr r0, [r7, #24] - 8047a34: f7ff fef6 bl 8047824 + 8047a72: 69b8 ldr r0, [r7, #24] + 8047a74: f7ff fef6 bl 8047864 pbuf_free(rambuf); - 8047a38: 6a78 ldr r0, [r7, #36] ; 0x24 - 8047a3a: f7f6 fef9 bl 803e830 + 8047a78: 6a78 ldr r0, [r7, #36] ; 0x24 + 8047a7a: f7f6 fef9 bl 803e870 goto memerr; - 8047a3e: e074 b.n 8047b2a + 8047a7e: e074 b.n 8047b6a } pbuf_ref(p); - 8047a40: 68f8 ldr r0, [r7, #12] - 8047a42: f7f6 ff95 bl 803e970 + 8047a80: 68f8 ldr r0, [r7, #12] + 8047a82: f7f6 ff95 bl 803e9b0 pcr->original = p; - 8047a46: 69bb ldr r3, [r7, #24] - 8047a48: 68fa ldr r2, [r7, #12] - 8047a4a: 615a str r2, [r3, #20] + 8047a86: 69bb ldr r3, [r7, #24] + 8047a88: 68fa ldr r2, [r7, #12] + 8047a8a: 615a str r2, [r3, #20] pcr->pc.custom_free_function = ipfrag_free_pbuf_custom; - 8047a4c: 69bb ldr r3, [r7, #24] - 8047a4e: 4a3f ldr r2, [pc, #252] ; (8047b4c ) - 8047a50: 611a str r2, [r3, #16] + 8047a8c: 69bb ldr r3, [r7, #24] + 8047a8e: 4a3f ldr r2, [pc, #252] ; (8047b8c ) + 8047a90: 611a str r2, [r3, #16] /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain * so that it is removed when pbuf_dechain is later called on rambuf. */ pbuf_cat(rambuf, newpbuf); - 8047a52: 6979 ldr r1, [r7, #20] - 8047a54: 6a78 ldr r0, [r7, #36] ; 0x24 - 8047a56: f7f6 ffad bl 803e9b4 + 8047a92: 6979 ldr r1, [r7, #20] + 8047a94: 6a78 ldr r0, [r7, #36] ; 0x24 + 8047a96: f7f6 ffad bl 803e9f4 left_to_copy = (u16_t)(left_to_copy - newpbuflen); - 8047a5a: f8b7 2044 ldrh.w r2, [r7, #68] ; 0x44 - 8047a5e: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 - 8047a62: 1ad3 subs r3, r2, r3 - 8047a64: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 + 8047a9a: f8b7 2044 ldrh.w r2, [r7, #68] ; 0x44 + 8047a9e: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 + 8047aa2: 1ad3 subs r3, r2, r3 + 8047aa4: f8a7 3044 strh.w r3, [r7, #68] ; 0x44 if (left_to_copy) { - 8047a68: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 - 8047a6c: 2b00 cmp r3, #0 - 8047a6e: d004 beq.n 8047a7a + 8047aa8: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 + 8047aac: 2b00 cmp r3, #0 + 8047aae: d004 beq.n 8047aba poff = 0; - 8047a70: 2300 movs r3, #0 - 8047a72: 87fb strh r3, [r7, #62] ; 0x3e + 8047ab0: 2300 movs r3, #0 + 8047ab2: 87fb strh r3, [r7, #62] ; 0x3e p = p->next; - 8047a74: 68fb ldr r3, [r7, #12] - 8047a76: 681b ldr r3, [r3, #0] - 8047a78: 60fb str r3, [r7, #12] + 8047ab4: 68fb ldr r3, [r7, #12] + 8047ab6: 681b ldr r3, [r3, #0] + 8047ab8: 60fb str r3, [r7, #12] while (left_to_copy) { - 8047a7a: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 - 8047a7e: 2b00 cmp r3, #0 - 8047a80: d196 bne.n 80479b0 + 8047aba: f8b7 3044 ldrh.w r3, [r7, #68] ; 0x44 + 8047abe: 2b00 cmp r3, #0 + 8047ac0: d196 bne.n 80479f0 } } poff = (u16_t)(poff + newpbuflen); - 8047a82: 8ffa ldrh r2, [r7, #62] ; 0x3e - 8047a84: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 - 8047a88: 4413 add r3, r2 - 8047a8a: 87fb strh r3, [r7, #62] ; 0x3e + 8047ac2: 8ffa ldrh r2, [r7, #62] ; 0x3e + 8047ac4: f8b7 3046 ldrh.w r3, [r7, #70] ; 0x46 + 8047ac8: 4413 add r3, r2 + 8047aca: 87fb strh r3, [r7, #62] ; 0x3e #endif /* LWIP_NETIF_TX_SINGLE_PBUF */ /* Correct header */ last = (left <= netif->mtu - IP_HLEN); - 8047a8c: 68bb ldr r3, [r7, #8] - 8047a8e: 8d1b ldrh r3, [r3, #40] ; 0x28 - 8047a90: f1a3 0213 sub.w r2, r3, #19 - 8047a94: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 8047a98: 429a cmp r2, r3 - 8047a9a: bfcc ite gt - 8047a9c: 2301 movgt r3, #1 - 8047a9e: 2300 movle r3, #0 - 8047aa0: b2db uxtb r3, r3 - 8047aa2: 623b str r3, [r7, #32] + 8047acc: 68bb ldr r3, [r7, #8] + 8047ace: 8d1b ldrh r3, [r3, #40] ; 0x28 + 8047ad0: f1a3 0213 sub.w r2, r3, #19 + 8047ad4: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8047ad8: 429a cmp r2, r3 + 8047ada: bfcc ite gt + 8047adc: 2301 movgt r3, #1 + 8047ade: 2300 movle r3, #0 + 8047ae0: b2db uxtb r3, r3 + 8047ae2: 623b str r3, [r7, #32] /* Set new offset and MF flag */ tmp = (IP_OFFMASK & (ofo)); - 8047aa4: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 - 8047aa8: f3c3 030c ubfx r3, r3, #0, #13 - 8047aac: 87bb strh r3, [r7, #60] ; 0x3c + 8047ae4: f8b7 3040 ldrh.w r3, [r7, #64] ; 0x40 + 8047ae8: f3c3 030c ubfx r3, r3, #0, #13 + 8047aec: 87bb strh r3, [r7, #60] ; 0x3c if (!last || mf_set) { - 8047aae: 6a3b ldr r3, [r7, #32] - 8047ab0: 2b00 cmp r3, #0 - 8047ab2: d002 beq.n 8047aba - 8047ab4: 6afb ldr r3, [r7, #44] ; 0x2c - 8047ab6: 2b00 cmp r3, #0 - 8047ab8: d003 beq.n 8047ac2 + 8047aee: 6a3b ldr r3, [r7, #32] + 8047af0: 2b00 cmp r3, #0 + 8047af2: d002 beq.n 8047afa + 8047af4: 6afb ldr r3, [r7, #44] ; 0x2c + 8047af6: 2b00 cmp r3, #0 + 8047af8: d003 beq.n 8047b02 /* the last fragment has MF set if the input frame had it */ tmp = tmp | IP_MF; - 8047aba: 8fbb ldrh r3, [r7, #60] ; 0x3c - 8047abc: f443 5300 orr.w r3, r3, #8192 ; 0x2000 - 8047ac0: 87bb strh r3, [r7, #60] ; 0x3c + 8047afa: 8fbb ldrh r3, [r7, #60] ; 0x3c + 8047afc: f443 5300 orr.w r3, r3, #8192 ; 0x2000 + 8047b00: 87bb strh r3, [r7, #60] ; 0x3c } IPH_OFFSET_SET(iphdr, lwip_htons(tmp)); - 8047ac2: 8fbb ldrh r3, [r7, #60] ; 0x3c - 8047ac4: 4618 mov r0, r3 - 8047ac6: f7f5 fa81 bl 803cfcc - 8047aca: 4603 mov r3, r0 - 8047acc: 461a mov r2, r3 - 8047ace: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047ad0: 80da strh r2, [r3, #6] + 8047b02: 8fbb ldrh r3, [r7, #60] ; 0x3c + 8047b04: 4618 mov r0, r3 + 8047b06: f7f5 fa81 bl 803d00c + 8047b0a: 4603 mov r3, r0 + 8047b0c: 461a mov r2, r3 + 8047b0e: 6b3b ldr r3, [r7, #48] ; 0x30 + 8047b10: 80da strh r2, [r3, #6] IPH_LEN_SET(iphdr, lwip_htons((u16_t)(fragsize + IP_HLEN))); - 8047ad2: 8d7b ldrh r3, [r7, #42] ; 0x2a - 8047ad4: 3314 adds r3, #20 - 8047ad6: b29b uxth r3, r3 - 8047ad8: 4618 mov r0, r3 - 8047ada: f7f5 fa77 bl 803cfcc - 8047ade: 4603 mov r3, r0 - 8047ae0: 461a mov r2, r3 - 8047ae2: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047ae4: 805a strh r2, [r3, #2] + 8047b12: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8047b14: 3314 adds r3, #20 + 8047b16: b29b uxth r3, r3 + 8047b18: 4618 mov r0, r3 + 8047b1a: f7f5 fa77 bl 803d00c + 8047b1e: 4603 mov r3, r0 + 8047b20: 461a mov r2, r3 + 8047b22: 6b3b ldr r3, [r7, #48] ; 0x30 + 8047b24: 805a strh r2, [r3, #2] IPH_CHKSUM_SET(iphdr, 0); - 8047ae6: 6b3b ldr r3, [r7, #48] ; 0x30 - 8047ae8: 2200 movs r2, #0 - 8047aea: 729a strb r2, [r3, #10] - 8047aec: 2200 movs r2, #0 - 8047aee: 72da strb r2, [r3, #11] + 8047b26: 6b3b ldr r3, [r7, #48] ; 0x30 + 8047b28: 2200 movs r2, #0 + 8047b2a: 729a strb r2, [r3, #10] + 8047b2c: 2200 movs r2, #0 + 8047b2e: 72da strb r2, [r3, #11] #endif /* CHECKSUM_GEN_IP */ /* No need for separate header pbuf - we allowed room for it in rambuf * when allocated. */ netif->output(netif, rambuf, dest); - 8047af0: 68bb ldr r3, [r7, #8] - 8047af2: 695b ldr r3, [r3, #20] - 8047af4: 687a ldr r2, [r7, #4] - 8047af6: 6a79 ldr r1, [r7, #36] ; 0x24 - 8047af8: 68b8 ldr r0, [r7, #8] - 8047afa: 4798 blx r3 + 8047b30: 68bb ldr r3, [r7, #8] + 8047b32: 695b ldr r3, [r3, #20] + 8047b34: 687a ldr r2, [r7, #4] + 8047b36: 6a79 ldr r1, [r7, #36] ; 0x24 + 8047b38: 68b8 ldr r0, [r7, #8] + 8047b3a: 4798 blx r3 * recreate it next time round the loop. If we're lucky the hardware * will have already sent the packet, the free will really free, and * there will be zero memory penalty. */ pbuf_free(rambuf); - 8047afc: 6a78 ldr r0, [r7, #36] ; 0x24 - 8047afe: f7f6 fe97 bl 803e830 + 8047b3c: 6a78 ldr r0, [r7, #36] ; 0x24 + 8047b3e: f7f6 fe97 bl 803e870 left = (u16_t)(left - fragsize); - 8047b02: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 - 8047b06: 8d7b ldrh r3, [r7, #42] ; 0x2a - 8047b08: 1ad3 subs r3, r2, r3 - 8047b0a: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 + 8047b42: f8b7 2042 ldrh.w r2, [r7, #66] ; 0x42 + 8047b46: 8d7b ldrh r3, [r7, #42] ; 0x2a + 8047b48: 1ad3 subs r3, r2, r3 + 8047b4a: f8a7 3042 strh.w r3, [r7, #66] ; 0x42 ofo = (u16_t)(ofo + nfb); - 8047b0e: f8b7 2040 ldrh.w r2, [r7, #64] ; 0x40 - 8047b12: 8f7b ldrh r3, [r7, #58] ; 0x3a - 8047b14: 4413 add r3, r2 - 8047b16: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 + 8047b4e: f8b7 2040 ldrh.w r2, [r7, #64] ; 0x40 + 8047b52: 8f7b ldrh r3, [r7, #58] ; 0x3a + 8047b54: 4413 add r3, r2 + 8047b56: f8a7 3040 strh.w r3, [r7, #64] ; 0x40 while (left) { - 8047b1a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 - 8047b1e: 2b00 cmp r3, #0 - 8047b20: f47f af19 bne.w 8047956 + 8047b5a: f8b7 3042 ldrh.w r3, [r7, #66] ; 0x42 + 8047b5e: 2b00 cmp r3, #0 + 8047b60: f47f af19 bne.w 8047996 } MIB2_STATS_INC(mib2.ipfragoks); return ERR_OK; - 8047b24: 2300 movs r3, #0 - 8047b26: e002 b.n 8047b2e + 8047b64: 2300 movs r3, #0 + 8047b66: e002 b.n 8047b6e goto memerr; - 8047b28: bf00 nop + 8047b68: bf00 nop memerr: MIB2_STATS_INC(mib2.ipfragfails); return ERR_MEM; - 8047b2a: f04f 33ff mov.w r3, #4294967295 -} - 8047b2e: 4618 mov r0, r3 - 8047b30: 3748 adds r7, #72 ; 0x48 - 8047b32: 46bd mov sp, r7 - 8047b34: bd80 pop {r7, pc} - 8047b36: bf00 nop - 8047b38: 0804c888 .word 0x0804c888 - 8047b3c: 0804ca64 .word 0x0804ca64 - 8047b40: 0804c8d0 .word 0x0804c8d0 - 8047b44: 0804ca80 .word 0x0804ca80 - 8047b48: 0804caa0 .word 0x0804caa0 - 8047b4c: 0804785d .word 0x0804785d - -08047b50 : + 8047b6a: f04f 33ff mov.w r3, #4294967295 +} + 8047b6e: 4618 mov r0, r3 + 8047b70: 3748 adds r7, #72 ; 0x48 + 8047b72: 46bd mov sp, r7 + 8047b74: bd80 pop {r7, pc} + 8047b76: bf00 nop + 8047b78: 0804c8c8 .word 0x0804c8c8 + 8047b7c: 0804caa4 .word 0x0804caa4 + 8047b80: 0804c910 .word 0x0804c910 + 8047b84: 0804cac0 .word 0x0804cac0 + 8047b88: 0804cae0 .word 0x0804cae0 + 8047b8c: 0804789d .word 0x0804789d + +08047b90 : * @see ETHARP_SUPPORT_VLAN * @see LWIP_HOOK_VLAN_CHECK */ err_t ethernet_input(struct pbuf *p, struct netif *netif) { - 8047b50: b580 push {r7, lr} - 8047b52: b086 sub sp, #24 - 8047b54: af00 add r7, sp, #0 - 8047b56: 6078 str r0, [r7, #4] - 8047b58: 6039 str r1, [r7, #0] + 8047b90: b580 push {r7, lr} + 8047b92: b086 sub sp, #24 + 8047b94: af00 add r7, sp, #0 + 8047b96: 6078 str r0, [r7, #4] + 8047b98: 6039 str r1, [r7, #0] struct eth_hdr *ethhdr; u16_t type; #if LWIP_ARP || ETHARP_SUPPORT_VLAN || LWIP_IPV6 u16_t next_hdr_offset = SIZEOF_ETH_HDR; - 8047b5a: 230e movs r3, #14 - 8047b5c: 82fb strh r3, [r7, #22] + 8047b9a: 230e movs r3, #14 + 8047b9c: 82fb strh r3, [r7, #22] #endif /* LWIP_ARP || ETHARP_SUPPORT_VLAN */ LWIP_ASSERT_CORE_LOCKED(); if (p->len <= SIZEOF_ETH_HDR) { - 8047b5e: 687b ldr r3, [r7, #4] - 8047b60: 895b ldrh r3, [r3, #10] - 8047b62: 2b0e cmp r3, #14 - 8047b64: d96e bls.n 8047c44 + 8047b9e: 687b ldr r3, [r7, #4] + 8047ba0: 895b ldrh r3, [r3, #10] + 8047ba2: 2b0e cmp r3, #14 + 8047ba4: d96e bls.n 8047c84 ETHARP_STATS_INC(etharp.drop); MIB2_STATS_NETIF_INC(netif, ifinerrors); goto free_and_return; } if (p->if_idx == NETIF_NO_INDEX) { - 8047b66: 687b ldr r3, [r7, #4] - 8047b68: 7bdb ldrb r3, [r3, #15] - 8047b6a: 2b00 cmp r3, #0 - 8047b6c: d106 bne.n 8047b7c + 8047ba6: 687b ldr r3, [r7, #4] + 8047ba8: 7bdb ldrb r3, [r3, #15] + 8047baa: 2b00 cmp r3, #0 + 8047bac: d106 bne.n 8047bbc p->if_idx = netif_get_index(netif); - 8047b6e: 683b ldr r3, [r7, #0] - 8047b70: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 - 8047b74: 3301 adds r3, #1 - 8047b76: b2da uxtb r2, r3 - 8047b78: 687b ldr r3, [r7, #4] - 8047b7a: 73da strb r2, [r3, #15] + 8047bae: 683b ldr r3, [r7, #0] + 8047bb0: f893 3034 ldrb.w r3, [r3, #52] ; 0x34 + 8047bb4: 3301 adds r3, #1 + 8047bb6: b2da uxtb r2, r3 + 8047bb8: 687b ldr r3, [r7, #4] + 8047bba: 73da strb r2, [r3, #15] } /* points to packet payload, which starts with an Ethernet header */ ethhdr = (struct eth_hdr *)p->payload; - 8047b7c: 687b ldr r3, [r7, #4] - 8047b7e: 685b ldr r3, [r3, #4] - 8047b80: 613b str r3, [r7, #16] + 8047bbc: 687b ldr r3, [r7, #4] + 8047bbe: 685b ldr r3, [r3, #4] + 8047bc0: 613b str r3, [r7, #16] (unsigned char)ethhdr->dest.addr[3], (unsigned char)ethhdr->dest.addr[4], (unsigned char)ethhdr->dest.addr[5], (unsigned char)ethhdr->src.addr[0], (unsigned char)ethhdr->src.addr[1], (unsigned char)ethhdr->src.addr[2], (unsigned char)ethhdr->src.addr[3], (unsigned char)ethhdr->src.addr[4], (unsigned char)ethhdr->src.addr[5], lwip_htons(ethhdr->type))); type = ethhdr->type; - 8047b82: 693b ldr r3, [r7, #16] - 8047b84: 7b1a ldrb r2, [r3, #12] - 8047b86: 7b5b ldrb r3, [r3, #13] - 8047b88: 021b lsls r3, r3, #8 - 8047b8a: 4313 orrs r3, r2 - 8047b8c: 81fb strh r3, [r7, #14] + 8047bc2: 693b ldr r3, [r7, #16] + 8047bc4: 7b1a ldrb r2, [r3, #12] + 8047bc6: 7b5b ldrb r3, [r3, #13] + 8047bc8: 021b lsls r3, r3, #8 + 8047bca: 4313 orrs r3, r2 + 8047bcc: 81fb strh r3, [r7, #14] #if LWIP_ARP_FILTER_NETIF netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, lwip_htons(type)); #endif /* LWIP_ARP_FILTER_NETIF*/ if (ethhdr->dest.addr[0] & 1) { - 8047b8e: 693b ldr r3, [r7, #16] - 8047b90: 781b ldrb r3, [r3, #0] - 8047b92: f003 0301 and.w r3, r3, #1 - 8047b96: 2b00 cmp r3, #0 - 8047b98: d023 beq.n 8047be2 + 8047bce: 693b ldr r3, [r7, #16] + 8047bd0: 781b ldrb r3, [r3, #0] + 8047bd2: f003 0301 and.w r3, r3, #1 + 8047bd6: 2b00 cmp r3, #0 + 8047bd8: d023 beq.n 8047c22 /* this might be a multicast or broadcast packet */ if (ethhdr->dest.addr[0] == LL_IP4_MULTICAST_ADDR_0) { - 8047b9a: 693b ldr r3, [r7, #16] - 8047b9c: 781b ldrb r3, [r3, #0] - 8047b9e: 2b01 cmp r3, #1 - 8047ba0: d10f bne.n 8047bc2 + 8047bda: 693b ldr r3, [r7, #16] + 8047bdc: 781b ldrb r3, [r3, #0] + 8047bde: 2b01 cmp r3, #1 + 8047be0: d10f bne.n 8047c02 #if LWIP_IPV4 if ((ethhdr->dest.addr[1] == LL_IP4_MULTICAST_ADDR_1) && - 8047ba2: 693b ldr r3, [r7, #16] - 8047ba4: 785b ldrb r3, [r3, #1] - 8047ba6: 2b00 cmp r3, #0 - 8047ba8: d11b bne.n 8047be2 + 8047be2: 693b ldr r3, [r7, #16] + 8047be4: 785b ldrb r3, [r3, #1] + 8047be6: 2b00 cmp r3, #0 + 8047be8: d11b bne.n 8047c22 (ethhdr->dest.addr[2] == LL_IP4_MULTICAST_ADDR_2)) { - 8047baa: 693b ldr r3, [r7, #16] - 8047bac: 789b ldrb r3, [r3, #2] + 8047bea: 693b ldr r3, [r7, #16] + 8047bec: 789b ldrb r3, [r3, #2] if ((ethhdr->dest.addr[1] == LL_IP4_MULTICAST_ADDR_1) && - 8047bae: 2b5e cmp r3, #94 ; 0x5e - 8047bb0: d117 bne.n 8047be2 + 8047bee: 2b5e cmp r3, #94 ; 0x5e + 8047bf0: d117 bne.n 8047c22 /* mark the pbuf as link-layer multicast */ p->flags |= PBUF_FLAG_LLMCAST; - 8047bb2: 687b ldr r3, [r7, #4] - 8047bb4: 7b5b ldrb r3, [r3, #13] - 8047bb6: f043 0310 orr.w r3, r3, #16 - 8047bba: b2da uxtb r2, r3 - 8047bbc: 687b ldr r3, [r7, #4] - 8047bbe: 735a strb r2, [r3, #13] - 8047bc0: e00f b.n 8047be2 + 8047bf2: 687b ldr r3, [r7, #4] + 8047bf4: 7b5b ldrb r3, [r3, #13] + 8047bf6: f043 0310 orr.w r3, r3, #16 + 8047bfa: b2da uxtb r2, r3 + 8047bfc: 687b ldr r3, [r7, #4] + 8047bfe: 735a strb r2, [r3, #13] + 8047c00: e00f b.n 8047c22 (ethhdr->dest.addr[1] == LL_IP6_MULTICAST_ADDR_1)) { /* mark the pbuf as link-layer multicast */ p->flags |= PBUF_FLAG_LLMCAST; } #endif /* LWIP_IPV6 */ else if (eth_addr_cmp(ðhdr->dest, ðbroadcast)) { - 8047bc2: 693b ldr r3, [r7, #16] - 8047bc4: 2206 movs r2, #6 - 8047bc6: 4928 ldr r1, [pc, #160] ; (8047c68 ) - 8047bc8: 4618 mov r0, r3 - 8047bca: f000 f8cb bl 8047d64 - 8047bce: 4603 mov r3, r0 - 8047bd0: 2b00 cmp r3, #0 - 8047bd2: d106 bne.n 8047be2 + 8047c02: 693b ldr r3, [r7, #16] + 8047c04: 2206 movs r2, #6 + 8047c06: 4928 ldr r1, [pc, #160] ; (8047ca8 ) + 8047c08: 4618 mov r0, r3 + 8047c0a: f000 f8cb bl 8047da4 + 8047c0e: 4603 mov r3, r0 + 8047c10: 2b00 cmp r3, #0 + 8047c12: d106 bne.n 8047c22 /* mark the pbuf as link-layer broadcast */ p->flags |= PBUF_FLAG_LLBCAST; - 8047bd4: 687b ldr r3, [r7, #4] - 8047bd6: 7b5b ldrb r3, [r3, #13] - 8047bd8: f043 0308 orr.w r3, r3, #8 - 8047bdc: b2da uxtb r2, r3 - 8047bde: 687b ldr r3, [r7, #4] - 8047be0: 735a strb r2, [r3, #13] + 8047c14: 687b ldr r3, [r7, #4] + 8047c16: 7b5b ldrb r3, [r3, #13] + 8047c18: f043 0308 orr.w r3, r3, #8 + 8047c1c: b2da uxtb r2, r3 + 8047c1e: 687b ldr r3, [r7, #4] + 8047c20: 735a strb r2, [r3, #13] } } switch (type) { - 8047be2: 89fb ldrh r3, [r7, #14] - 8047be4: 2b08 cmp r3, #8 - 8047be6: d003 beq.n 8047bf0 - 8047be8: f5b3 6fc1 cmp.w r3, #1544 ; 0x608 - 8047bec: d014 beq.n 8047c18 + 8047c22: 89fb ldrh r3, [r7, #14] + 8047c24: 2b08 cmp r3, #8 + 8047c26: d003 beq.n 8047c30 + 8047c28: f5b3 6fc1 cmp.w r3, #1544 ; 0x608 + 8047c2c: d014 beq.n 8047c58 } #endif ETHARP_STATS_INC(etharp.proterr); ETHARP_STATS_INC(etharp.drop); MIB2_STATS_NETIF_INC(netif, ifinunknownprotos); goto free_and_return; - 8047bee: e032 b.n 8047c56 + 8047c2e: e032 b.n 8047c96 if (!(netif->flags & NETIF_FLAG_ETHARP)) { - 8047bf0: 683b ldr r3, [r7, #0] - 8047bf2: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8047bf6: f003 0308 and.w r3, r3, #8 - 8047bfa: 2b00 cmp r3, #0 - 8047bfc: d024 beq.n 8047c48 + 8047c30: 683b ldr r3, [r7, #0] + 8047c32: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8047c36: f003 0308 and.w r3, r3, #8 + 8047c3a: 2b00 cmp r3, #0 + 8047c3c: d024 beq.n 8047c88 if (pbuf_remove_header(p, next_hdr_offset)) { - 8047bfe: 8afb ldrh r3, [r7, #22] - 8047c00: 4619 mov r1, r3 - 8047c02: 6878 ldr r0, [r7, #4] - 8047c04: f7f6 fd8e bl 803e724 - 8047c08: 4603 mov r3, r0 - 8047c0a: 2b00 cmp r3, #0 - 8047c0c: d11e bne.n 8047c4c + 8047c3e: 8afb ldrh r3, [r7, #22] + 8047c40: 4619 mov r1, r3 + 8047c42: 6878 ldr r0, [r7, #4] + 8047c44: f7f6 fd8e bl 803e764 + 8047c48: 4603 mov r3, r0 + 8047c4a: 2b00 cmp r3, #0 + 8047c4c: d11e bne.n 8047c8c ip4_input(p, netif); - 8047c0e: 6839 ldr r1, [r7, #0] - 8047c10: 6878 ldr r0, [r7, #4] - 8047c12: f7fe ff21 bl 8046a58 + 8047c4e: 6839 ldr r1, [r7, #0] + 8047c50: 6878 ldr r0, [r7, #4] + 8047c52: f7fe ff21 bl 8046a98 break; - 8047c16: e013 b.n 8047c40 + 8047c56: e013 b.n 8047c80 if (!(netif->flags & NETIF_FLAG_ETHARP)) { - 8047c18: 683b ldr r3, [r7, #0] - 8047c1a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 - 8047c1e: f003 0308 and.w r3, r3, #8 - 8047c22: 2b00 cmp r3, #0 - 8047c24: d014 beq.n 8047c50 + 8047c58: 683b ldr r3, [r7, #0] + 8047c5a: f893 3031 ldrb.w r3, [r3, #49] ; 0x31 + 8047c5e: f003 0308 and.w r3, r3, #8 + 8047c62: 2b00 cmp r3, #0 + 8047c64: d014 beq.n 8047c90 if (pbuf_remove_header(p, next_hdr_offset)) { - 8047c26: 8afb ldrh r3, [r7, #22] - 8047c28: 4619 mov r1, r3 - 8047c2a: 6878 ldr r0, [r7, #4] - 8047c2c: f7f6 fd7a bl 803e724 - 8047c30: 4603 mov r3, r0 - 8047c32: 2b00 cmp r3, #0 - 8047c34: d10e bne.n 8047c54 + 8047c66: 8afb ldrh r3, [r7, #22] + 8047c68: 4619 mov r1, r3 + 8047c6a: 6878 ldr r0, [r7, #4] + 8047c6c: f7f6 fd7a bl 803e764 + 8047c70: 4603 mov r3, r0 + 8047c72: 2b00 cmp r3, #0 + 8047c74: d10e bne.n 8047c94 etharp_input(p, netif); - 8047c36: 6839 ldr r1, [r7, #0] - 8047c38: 6878 ldr r0, [r7, #4] - 8047c3a: f7fe f89b bl 8045d74 + 8047c76: 6839 ldr r1, [r7, #0] + 8047c78: 6878 ldr r0, [r7, #4] + 8047c7a: f7fe f89b bl 8045db4 break; - 8047c3e: bf00 nop + 8047c7e: bf00 nop } /* This means the pbuf is freed or consumed, so the caller doesn't have to free it again */ return ERR_OK; - 8047c40: 2300 movs r3, #0 - 8047c42: e00c b.n 8047c5e + 8047c80: 2300 movs r3, #0 + 8047c82: e00c b.n 8047c9e goto free_and_return; - 8047c44: bf00 nop - 8047c46: e006 b.n 8047c56 + 8047c84: bf00 nop + 8047c86: e006 b.n 8047c96 goto free_and_return; - 8047c48: bf00 nop - 8047c4a: e004 b.n 8047c56 + 8047c88: bf00 nop + 8047c8a: e004 b.n 8047c96 goto free_and_return; - 8047c4c: bf00 nop - 8047c4e: e002 b.n 8047c56 + 8047c8c: bf00 nop + 8047c8e: e002 b.n 8047c96 goto free_and_return; - 8047c50: bf00 nop - 8047c52: e000 b.n 8047c56 + 8047c90: bf00 nop + 8047c92: e000 b.n 8047c96 goto free_and_return; - 8047c54: bf00 nop + 8047c94: bf00 nop free_and_return: pbuf_free(p); - 8047c56: 6878 ldr r0, [r7, #4] - 8047c58: f7f6 fdea bl 803e830 + 8047c96: 6878 ldr r0, [r7, #4] + 8047c98: f7f6 fdea bl 803e870 return ERR_OK; - 8047c5c: 2300 movs r3, #0 + 8047c9c: 2300 movs r3, #0 } - 8047c5e: 4618 mov r0, r3 - 8047c60: 3718 adds r7, #24 - 8047c62: 46bd mov sp, r7 - 8047c64: bd80 pop {r7, pc} - 8047c66: bf00 nop - 8047c68: 0804d48c .word 0x0804d48c + 8047c9e: 4618 mov r0, r3 + 8047ca0: 3718 adds r7, #24 + 8047ca2: 46bd mov sp, r7 + 8047ca4: bd80 pop {r7, pc} + 8047ca6: bf00 nop + 8047ca8: 0804d4cc .word 0x0804d4cc -08047c6c : +08047cac : * @return ERR_OK if the packet was sent, any other err_t on failure */ err_t ethernet_output(struct netif * netif, struct pbuf * p, const struct eth_addr * src, const struct eth_addr * dst, u16_t eth_type) { - 8047c6c: b580 push {r7, lr} - 8047c6e: b086 sub sp, #24 - 8047c70: af00 add r7, sp, #0 - 8047c72: 60f8 str r0, [r7, #12] - 8047c74: 60b9 str r1, [r7, #8] - 8047c76: 607a str r2, [r7, #4] - 8047c78: 603b str r3, [r7, #0] + 8047cac: b580 push {r7, lr} + 8047cae: b086 sub sp, #24 + 8047cb0: af00 add r7, sp, #0 + 8047cb2: 60f8 str r0, [r7, #12] + 8047cb4: 60b9 str r1, [r7, #8] + 8047cb6: 607a str r2, [r7, #4] + 8047cb8: 603b str r3, [r7, #0] struct eth_hdr *ethhdr; u16_t eth_type_be = lwip_htons(eth_type); - 8047c7a: 8c3b ldrh r3, [r7, #32] - 8047c7c: 4618 mov r0, r3 - 8047c7e: f7f5 f9a5 bl 803cfcc - 8047c82: 4603 mov r3, r0 - 8047c84: 82fb strh r3, [r7, #22] + 8047cba: 8c3b ldrh r3, [r7, #32] + 8047cbc: 4618 mov r0, r3 + 8047cbe: f7f5 f9a5 bl 803d00c + 8047cc2: 4603 mov r3, r0 + 8047cc4: 82fb strh r3, [r7, #22] eth_type_be = PP_HTONS(ETHTYPE_VLAN); } else #endif /* ETHARP_SUPPORT_VLAN && defined(LWIP_HOOK_VLAN_SET) */ { if (pbuf_add_header(p, SIZEOF_ETH_HDR) != 0) { - 8047c86: 210e movs r1, #14 - 8047c88: 68b8 ldr r0, [r7, #8] - 8047c8a: f7f6 fd3b bl 803e704 - 8047c8e: 4603 mov r3, r0 - 8047c90: 2b00 cmp r3, #0 - 8047c92: d125 bne.n 8047ce0 + 8047cc6: 210e movs r1, #14 + 8047cc8: 68b8 ldr r0, [r7, #8] + 8047cca: f7f6 fd3b bl 803e744 + 8047cce: 4603 mov r3, r0 + 8047cd0: 2b00 cmp r3, #0 + 8047cd2: d125 bne.n 8047d20 } } LWIP_ASSERT_CORE_LOCKED(); ethhdr = (struct eth_hdr *)p->payload; - 8047c94: 68bb ldr r3, [r7, #8] - 8047c96: 685b ldr r3, [r3, #4] - 8047c98: 613b str r3, [r7, #16] + 8047cd4: 68bb ldr r3, [r7, #8] + 8047cd6: 685b ldr r3, [r3, #4] + 8047cd8: 613b str r3, [r7, #16] ethhdr->type = eth_type_be; - 8047c9a: 693b ldr r3, [r7, #16] - 8047c9c: 8afa ldrh r2, [r7, #22] - 8047c9e: 819a strh r2, [r3, #12] + 8047cda: 693b ldr r3, [r7, #16] + 8047cdc: 8afa ldrh r2, [r7, #22] + 8047cde: 819a strh r2, [r3, #12] SMEMCPY(ðhdr->dest, dst, ETH_HWADDR_LEN); - 8047ca0: 693b ldr r3, [r7, #16] - 8047ca2: 2206 movs r2, #6 - 8047ca4: 6839 ldr r1, [r7, #0] - 8047ca6: 4618 mov r0, r3 - 8047ca8: f000 f86c bl 8047d84 + 8047ce0: 693b ldr r3, [r7, #16] + 8047ce2: 2206 movs r2, #6 + 8047ce4: 6839 ldr r1, [r7, #0] + 8047ce6: 4618 mov r0, r3 + 8047ce8: f000 f86c bl 8047dc4 SMEMCPY(ðhdr->src, src, ETH_HWADDR_LEN); - 8047cac: 693b ldr r3, [r7, #16] - 8047cae: 3306 adds r3, #6 - 8047cb0: 2206 movs r2, #6 - 8047cb2: 6879 ldr r1, [r7, #4] - 8047cb4: 4618 mov r0, r3 - 8047cb6: f000 f865 bl 8047d84 + 8047cec: 693b ldr r3, [r7, #16] + 8047cee: 3306 adds r3, #6 + 8047cf0: 2206 movs r2, #6 + 8047cf2: 6879 ldr r1, [r7, #4] + 8047cf4: 4618 mov r0, r3 + 8047cf6: f000 f865 bl 8047dc4 LWIP_ASSERT("netif->hwaddr_len must be 6 for ethernet_output!", - 8047cba: 68fb ldr r3, [r7, #12] - 8047cbc: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 - 8047cc0: 2b06 cmp r3, #6 - 8047cc2: d006 beq.n 8047cd2 - 8047cc4: 4b0a ldr r3, [pc, #40] ; (8047cf0 ) - 8047cc6: f44f 7299 mov.w r2, #306 ; 0x132 - 8047cca: 490a ldr r1, [pc, #40] ; (8047cf4 ) - 8047ccc: 480a ldr r0, [pc, #40] ; (8047cf8 ) - 8047cce: f000 f969 bl 8047fa4 + 8047cfa: 68fb ldr r3, [r7, #12] + 8047cfc: f893 3030 ldrb.w r3, [r3, #48] ; 0x30 + 8047d00: 2b06 cmp r3, #6 + 8047d02: d006 beq.n 8047d12 + 8047d04: 4b0a ldr r3, [pc, #40] ; (8047d30 ) + 8047d06: f44f 7299 mov.w r2, #306 ; 0x132 + 8047d0a: 490a ldr r1, [pc, #40] ; (8047d34 ) + 8047d0c: 480a ldr r0, [pc, #40] ; (8047d38 ) + 8047d0e: f000 f969 bl 8047fe4 (netif->hwaddr_len == ETH_HWADDR_LEN)); LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("ethernet_output: sending packet %p\n", (void *)p)); /* send the packet */ return netif->linkoutput(netif, p); - 8047cd2: 68fb ldr r3, [r7, #12] - 8047cd4: 699b ldr r3, [r3, #24] - 8047cd6: 68b9 ldr r1, [r7, #8] - 8047cd8: 68f8 ldr r0, [r7, #12] - 8047cda: 4798 blx r3 - 8047cdc: 4603 mov r3, r0 - 8047cde: e002 b.n 8047ce6 + 8047d12: 68fb ldr r3, [r7, #12] + 8047d14: 699b ldr r3, [r3, #24] + 8047d16: 68b9 ldr r1, [r7, #8] + 8047d18: 68f8 ldr r0, [r7, #12] + 8047d1a: 4798 blx r3 + 8047d1c: 4603 mov r3, r0 + 8047d1e: e002 b.n 8047d26 goto pbuf_header_failed; - 8047ce0: bf00 nop + 8047d20: bf00 nop pbuf_header_failed: LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("ethernet_output: could not allocate room for header.\n")); LINK_STATS_INC(link.lenerr); return ERR_BUF; - 8047ce2: f06f 0301 mvn.w r3, #1 -} - 8047ce6: 4618 mov r0, r3 - 8047ce8: 3718 adds r7, #24 - 8047cea: 46bd mov sp, r7 - 8047cec: bd80 pop {r7, pc} - 8047cee: bf00 nop - 8047cf0: 0804cab0 .word 0x0804cab0 - 8047cf4: 0804cae8 .word 0x0804cae8 - 8047cf8: 0804cb1c .word 0x0804cb1c - -08047cfc <__libc_init_array>: - 8047cfc: b570 push {r4, r5, r6, lr} - 8047cfe: 4d0d ldr r5, [pc, #52] ; (8047d34 <__libc_init_array+0x38>) - 8047d00: 4c0d ldr r4, [pc, #52] ; (8047d38 <__libc_init_array+0x3c>) - 8047d02: 1b64 subs r4, r4, r5 - 8047d04: 10a4 asrs r4, r4, #2 - 8047d06: 2600 movs r6, #0 - 8047d08: 42a6 cmp r6, r4 - 8047d0a: d109 bne.n 8047d20 <__libc_init_array+0x24> - 8047d0c: 4d0b ldr r5, [pc, #44] ; (8047d3c <__libc_init_array+0x40>) - 8047d0e: 4c0c ldr r4, [pc, #48] ; (8047d40 <__libc_init_array+0x44>) - 8047d10: f001 fc6a bl 80495e8 <_init> - 8047d14: 1b64 subs r4, r4, r5 - 8047d16: 10a4 asrs r4, r4, #2 - 8047d18: 2600 movs r6, #0 - 8047d1a: 42a6 cmp r6, r4 - 8047d1c: d105 bne.n 8047d2a <__libc_init_array+0x2e> - 8047d1e: bd70 pop {r4, r5, r6, pc} - 8047d20: f855 3b04 ldr.w r3, [r5], #4 - 8047d24: 4798 blx r3 - 8047d26: 3601 adds r6, #1 - 8047d28: e7ee b.n 8047d08 <__libc_init_array+0xc> - 8047d2a: f855 3b04 ldr.w r3, [r5], #4 - 8047d2e: 4798 blx r3 - 8047d30: 3601 adds r6, #1 - 8047d32: e7f2 b.n 8047d1a <__libc_init_array+0x1e> - 8047d34: 0804d660 .word 0x0804d660 - 8047d38: 0804d660 .word 0x0804d660 - 8047d3c: 0804d660 .word 0x0804d660 - 8047d40: 0804d664 .word 0x0804d664 - -08047d44 : - 8047d44: 4b02 ldr r3, [pc, #8] ; (8047d50 ) - 8047d46: 4601 mov r1, r0 - 8047d48: 6818 ldr r0, [r3, #0] - 8047d4a: f000 b8b7 b.w 8047ebc <_malloc_r> - 8047d4e: bf00 nop - 8047d50: 24000148 .word 0x24000148 - -08047d54 : - 8047d54: 4b02 ldr r3, [pc, #8] ; (8047d60 ) - 8047d56: 4601 mov r1, r0 - 8047d58: 6818 ldr r0, [r3, #0] - 8047d5a: f000 b843 b.w 8047de4 <_free_r> - 8047d5e: bf00 nop - 8047d60: 24000148 .word 0x24000148 - -08047d64 : - 8047d64: b510 push {r4, lr} - 8047d66: 3901 subs r1, #1 - 8047d68: 4402 add r2, r0 - 8047d6a: 4290 cmp r0, r2 - 8047d6c: d101 bne.n 8047d72 - 8047d6e: 2000 movs r0, #0 - 8047d70: e005 b.n 8047d7e - 8047d72: 7803 ldrb r3, [r0, #0] - 8047d74: f811 4f01 ldrb.w r4, [r1, #1]! - 8047d78: 42a3 cmp r3, r4 - 8047d7a: d001 beq.n 8047d80 - 8047d7c: 1b18 subs r0, r3, r4 - 8047d7e: bd10 pop {r4, pc} - 8047d80: 3001 adds r0, #1 - 8047d82: e7f2 b.n 8047d6a - -08047d84 : - 8047d84: 440a add r2, r1 - 8047d86: 4291 cmp r1, r2 - 8047d88: f100 33ff add.w r3, r0, #4294967295 - 8047d8c: d100 bne.n 8047d90 - 8047d8e: 4770 bx lr - 8047d90: b510 push {r4, lr} - 8047d92: f811 4b01 ldrb.w r4, [r1], #1 - 8047d96: f803 4f01 strb.w r4, [r3, #1]! - 8047d9a: 4291 cmp r1, r2 - 8047d9c: d1f9 bne.n 8047d92 - 8047d9e: bd10 pop {r4, pc} - -08047da0 : - 8047da0: 4288 cmp r0, r1 - 8047da2: b510 push {r4, lr} - 8047da4: eb01 0402 add.w r4, r1, r2 - 8047da8: d902 bls.n 8047db0 - 8047daa: 4284 cmp r4, r0 - 8047dac: 4623 mov r3, r4 - 8047dae: d807 bhi.n 8047dc0 - 8047db0: 1e43 subs r3, r0, #1 - 8047db2: 42a1 cmp r1, r4 - 8047db4: d008 beq.n 8047dc8 - 8047db6: f811 2b01 ldrb.w r2, [r1], #1 - 8047dba: f803 2f01 strb.w r2, [r3, #1]! - 8047dbe: e7f8 b.n 8047db2 - 8047dc0: 4402 add r2, r0 - 8047dc2: 4601 mov r1, r0 - 8047dc4: 428a cmp r2, r1 - 8047dc6: d100 bne.n 8047dca - 8047dc8: bd10 pop {r4, pc} - 8047dca: f813 4d01 ldrb.w r4, [r3, #-1]! - 8047dce: f802 4d01 strb.w r4, [r2, #-1]! - 8047dd2: e7f7 b.n 8047dc4 - -08047dd4 : - 8047dd4: 4402 add r2, r0 - 8047dd6: 4603 mov r3, r0 - 8047dd8: 4293 cmp r3, r2 - 8047dda: d100 bne.n 8047dde - 8047ddc: 4770 bx lr - 8047dde: f803 1b01 strb.w r1, [r3], #1 - 8047de2: e7f9 b.n 8047dd8 - -08047de4 <_free_r>: - 8047de4: b537 push {r0, r1, r2, r4, r5, lr} - 8047de6: 2900 cmp r1, #0 - 8047de8: d044 beq.n 8047e74 <_free_r+0x90> - 8047dea: f851 3c04 ldr.w r3, [r1, #-4] - 8047dee: 9001 str r0, [sp, #4] - 8047df0: 2b00 cmp r3, #0 - 8047df2: f1a1 0404 sub.w r4, r1, #4 - 8047df6: bfb8 it lt - 8047df8: 18e4 addlt r4, r4, r3 - 8047dfa: f000 fa99 bl 8048330 <__malloc_lock> - 8047dfe: 4a1e ldr r2, [pc, #120] ; (8047e78 <_free_r+0x94>) - 8047e00: 9801 ldr r0, [sp, #4] - 8047e02: 6813 ldr r3, [r2, #0] - 8047e04: b933 cbnz r3, 8047e14 <_free_r+0x30> - 8047e06: 6063 str r3, [r4, #4] - 8047e08: 6014 str r4, [r2, #0] - 8047e0a: b003 add sp, #12 - 8047e0c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} - 8047e10: f000 ba94 b.w 804833c <__malloc_unlock> - 8047e14: 42a3 cmp r3, r4 - 8047e16: d908 bls.n 8047e2a <_free_r+0x46> - 8047e18: 6825 ldr r5, [r4, #0] - 8047e1a: 1961 adds r1, r4, r5 - 8047e1c: 428b cmp r3, r1 - 8047e1e: bf01 itttt eq - 8047e20: 6819 ldreq r1, [r3, #0] - 8047e22: 685b ldreq r3, [r3, #4] - 8047e24: 1949 addeq r1, r1, r5 - 8047e26: 6021 streq r1, [r4, #0] - 8047e28: e7ed b.n 8047e06 <_free_r+0x22> - 8047e2a: 461a mov r2, r3 - 8047e2c: 685b ldr r3, [r3, #4] - 8047e2e: b10b cbz r3, 8047e34 <_free_r+0x50> - 8047e30: 42a3 cmp r3, r4 - 8047e32: d9fa bls.n 8047e2a <_free_r+0x46> - 8047e34: 6811 ldr r1, [r2, #0] - 8047e36: 1855 adds r5, r2, r1 - 8047e38: 42a5 cmp r5, r4 - 8047e3a: d10b bne.n 8047e54 <_free_r+0x70> - 8047e3c: 6824 ldr r4, [r4, #0] - 8047e3e: 4421 add r1, r4 - 8047e40: 1854 adds r4, r2, r1 - 8047e42: 42a3 cmp r3, r4 - 8047e44: 6011 str r1, [r2, #0] - 8047e46: d1e0 bne.n 8047e0a <_free_r+0x26> - 8047e48: 681c ldr r4, [r3, #0] - 8047e4a: 685b ldr r3, [r3, #4] - 8047e4c: 6053 str r3, [r2, #4] - 8047e4e: 4421 add r1, r4 - 8047e50: 6011 str r1, [r2, #0] - 8047e52: e7da b.n 8047e0a <_free_r+0x26> - 8047e54: d902 bls.n 8047e5c <_free_r+0x78> - 8047e56: 230c movs r3, #12 - 8047e58: 6003 str r3, [r0, #0] - 8047e5a: e7d6 b.n 8047e0a <_free_r+0x26> - 8047e5c: 6825 ldr r5, [r4, #0] - 8047e5e: 1961 adds r1, r4, r5 - 8047e60: 428b cmp r3, r1 - 8047e62: bf04 itt eq - 8047e64: 6819 ldreq r1, [r3, #0] - 8047e66: 685b ldreq r3, [r3, #4] - 8047e68: 6063 str r3, [r4, #4] - 8047e6a: bf04 itt eq - 8047e6c: 1949 addeq r1, r1, r5 - 8047e6e: 6021 streq r1, [r4, #0] - 8047e70: 6054 str r4, [r2, #4] - 8047e72: e7ca b.n 8047e0a <_free_r+0x26> - 8047e74: b003 add sp, #12 - 8047e76: bd30 pop {r4, r5, pc} - 8047e78: 2400ec44 .word 0x2400ec44 - -08047e7c : - 8047e7c: b570 push {r4, r5, r6, lr} - 8047e7e: 4e0e ldr r6, [pc, #56] ; (8047eb8 ) - 8047e80: 460c mov r4, r1 - 8047e82: 6831 ldr r1, [r6, #0] - 8047e84: 4605 mov r5, r0 - 8047e86: b911 cbnz r1, 8047e8e - 8047e88: f000 f8f4 bl 8048074 <_sbrk_r> - 8047e8c: 6030 str r0, [r6, #0] - 8047e8e: 4621 mov r1, r4 - 8047e90: 4628 mov r0, r5 - 8047e92: f000 f8ef bl 8048074 <_sbrk_r> - 8047e96: 1c43 adds r3, r0, #1 - 8047e98: d00a beq.n 8047eb0 - 8047e9a: 1cc4 adds r4, r0, #3 - 8047e9c: f024 0403 bic.w r4, r4, #3 - 8047ea0: 42a0 cmp r0, r4 - 8047ea2: d007 beq.n 8047eb4 - 8047ea4: 1a21 subs r1, r4, r0 - 8047ea6: 4628 mov r0, r5 - 8047ea8: f000 f8e4 bl 8048074 <_sbrk_r> - 8047eac: 3001 adds r0, #1 - 8047eae: d101 bne.n 8047eb4 - 8047eb0: f04f 34ff mov.w r4, #4294967295 - 8047eb4: 4620 mov r0, r4 - 8047eb6: bd70 pop {r4, r5, r6, pc} - 8047eb8: 2400ec48 .word 0x2400ec48 - -08047ebc <_malloc_r>: - 8047ebc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8047ec0: 1ccd adds r5, r1, #3 - 8047ec2: f025 0503 bic.w r5, r5, #3 - 8047ec6: 3508 adds r5, #8 - 8047ec8: 2d0c cmp r5, #12 - 8047eca: bf38 it cc - 8047ecc: 250c movcc r5, #12 - 8047ece: 2d00 cmp r5, #0 - 8047ed0: 4607 mov r7, r0 - 8047ed2: db01 blt.n 8047ed8 <_malloc_r+0x1c> - 8047ed4: 42a9 cmp r1, r5 - 8047ed6: d905 bls.n 8047ee4 <_malloc_r+0x28> - 8047ed8: 230c movs r3, #12 - 8047eda: 603b str r3, [r7, #0] - 8047edc: 2600 movs r6, #0 - 8047ede: 4630 mov r0, r6 - 8047ee0: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8047ee4: 4e2e ldr r6, [pc, #184] ; (8047fa0 <_malloc_r+0xe4>) - 8047ee6: f000 fa23 bl 8048330 <__malloc_lock> - 8047eea: 6833 ldr r3, [r6, #0] - 8047eec: 461c mov r4, r3 - 8047eee: bb34 cbnz r4, 8047f3e <_malloc_r+0x82> - 8047ef0: 4629 mov r1, r5 - 8047ef2: 4638 mov r0, r7 - 8047ef4: f7ff ffc2 bl 8047e7c - 8047ef8: 1c43 adds r3, r0, #1 - 8047efa: 4604 mov r4, r0 - 8047efc: d14d bne.n 8047f9a <_malloc_r+0xde> - 8047efe: 6834 ldr r4, [r6, #0] - 8047f00: 4626 mov r6, r4 - 8047f02: 2e00 cmp r6, #0 - 8047f04: d140 bne.n 8047f88 <_malloc_r+0xcc> - 8047f06: 6823 ldr r3, [r4, #0] - 8047f08: 4631 mov r1, r6 - 8047f0a: 4638 mov r0, r7 - 8047f0c: eb04 0803 add.w r8, r4, r3 - 8047f10: f000 f8b0 bl 8048074 <_sbrk_r> - 8047f14: 4580 cmp r8, r0 - 8047f16: d13a bne.n 8047f8e <_malloc_r+0xd2> - 8047f18: 6821 ldr r1, [r4, #0] - 8047f1a: 3503 adds r5, #3 - 8047f1c: 1a6d subs r5, r5, r1 - 8047f1e: f025 0503 bic.w r5, r5, #3 - 8047f22: 3508 adds r5, #8 - 8047f24: 2d0c cmp r5, #12 - 8047f26: bf38 it cc - 8047f28: 250c movcc r5, #12 - 8047f2a: 4629 mov r1, r5 - 8047f2c: 4638 mov r0, r7 - 8047f2e: f7ff ffa5 bl 8047e7c - 8047f32: 3001 adds r0, #1 - 8047f34: d02b beq.n 8047f8e <_malloc_r+0xd2> - 8047f36: 6823 ldr r3, [r4, #0] - 8047f38: 442b add r3, r5 - 8047f3a: 6023 str r3, [r4, #0] - 8047f3c: e00e b.n 8047f5c <_malloc_r+0xa0> - 8047f3e: 6822 ldr r2, [r4, #0] - 8047f40: 1b52 subs r2, r2, r5 - 8047f42: d41e bmi.n 8047f82 <_malloc_r+0xc6> - 8047f44: 2a0b cmp r2, #11 - 8047f46: d916 bls.n 8047f76 <_malloc_r+0xba> - 8047f48: 1961 adds r1, r4, r5 - 8047f4a: 42a3 cmp r3, r4 - 8047f4c: 6025 str r5, [r4, #0] - 8047f4e: bf18 it ne - 8047f50: 6059 strne r1, [r3, #4] - 8047f52: 6863 ldr r3, [r4, #4] - 8047f54: bf08 it eq - 8047f56: 6031 streq r1, [r6, #0] - 8047f58: 5162 str r2, [r4, r5] - 8047f5a: 604b str r3, [r1, #4] - 8047f5c: 4638 mov r0, r7 - 8047f5e: f104 060b add.w r6, r4, #11 - 8047f62: f000 f9eb bl 804833c <__malloc_unlock> - 8047f66: f026 0607 bic.w r6, r6, #7 - 8047f6a: 1d23 adds r3, r4, #4 - 8047f6c: 1af2 subs r2, r6, r3 - 8047f6e: d0b6 beq.n 8047ede <_malloc_r+0x22> - 8047f70: 1b9b subs r3, r3, r6 - 8047f72: 50a3 str r3, [r4, r2] - 8047f74: e7b3 b.n 8047ede <_malloc_r+0x22> - 8047f76: 6862 ldr r2, [r4, #4] - 8047f78: 42a3 cmp r3, r4 - 8047f7a: bf0c ite eq - 8047f7c: 6032 streq r2, [r6, #0] - 8047f7e: 605a strne r2, [r3, #4] - 8047f80: e7ec b.n 8047f5c <_malloc_r+0xa0> - 8047f82: 4623 mov r3, r4 - 8047f84: 6864 ldr r4, [r4, #4] - 8047f86: e7b2 b.n 8047eee <_malloc_r+0x32> - 8047f88: 4634 mov r4, r6 - 8047f8a: 6876 ldr r6, [r6, #4] - 8047f8c: e7b9 b.n 8047f02 <_malloc_r+0x46> - 8047f8e: 230c movs r3, #12 - 8047f90: 603b str r3, [r7, #0] - 8047f92: 4638 mov r0, r7 - 8047f94: f000 f9d2 bl 804833c <__malloc_unlock> - 8047f98: e7a1 b.n 8047ede <_malloc_r+0x22> - 8047f9a: 6025 str r5, [r4, #0] - 8047f9c: e7de b.n 8047f5c <_malloc_r+0xa0> - 8047f9e: bf00 nop - 8047fa0: 2400ec44 .word 0x2400ec44 - -08047fa4 : - 8047fa4: b40f push {r0, r1, r2, r3} - 8047fa6: 4b0a ldr r3, [pc, #40] ; (8047fd0 ) - 8047fa8: b513 push {r0, r1, r4, lr} - 8047faa: 681c ldr r4, [r3, #0] - 8047fac: b124 cbz r4, 8047fb8 - 8047fae: 69a3 ldr r3, [r4, #24] - 8047fb0: b913 cbnz r3, 8047fb8 - 8047fb2: 4620 mov r0, r4 - 8047fb4: f000 f90a bl 80481cc <__sinit> - 8047fb8: ab05 add r3, sp, #20 - 8047fba: 9a04 ldr r2, [sp, #16] - 8047fbc: 68a1 ldr r1, [r4, #8] - 8047fbe: 9301 str r3, [sp, #4] - 8047fc0: 4620 mov r0, r4 - 8047fc2: f000 fb47 bl 8048654 <_vfiprintf_r> - 8047fc6: b002 add sp, #8 - 8047fc8: e8bd 4010 ldmia.w sp!, {r4, lr} - 8047fcc: b004 add sp, #16 - 8047fce: 4770 bx lr - 8047fd0: 24000148 .word 0x24000148 - -08047fd4 : - 8047fd4: 4b16 ldr r3, [pc, #88] ; (8048030 ) - 8047fd6: b510 push {r4, lr} - 8047fd8: 681c ldr r4, [r3, #0] - 8047fda: 6ba3 ldr r3, [r4, #56] ; 0x38 - 8047fdc: b9b3 cbnz r3, 804800c - 8047fde: 2018 movs r0, #24 - 8047fe0: f7ff feb0 bl 8047d44 - 8047fe4: 63a0 str r0, [r4, #56] ; 0x38 - 8047fe6: b928 cbnz r0, 8047ff4 - 8047fe8: 4602 mov r2, r0 - 8047fea: 4b12 ldr r3, [pc, #72] ; (8048034 ) - 8047fec: 4812 ldr r0, [pc, #72] ; (8048038 ) - 8047fee: 214e movs r1, #78 ; 0x4e - 8047ff0: f000 f870 bl 80480d4 <__assert_func> - 8047ff4: 4a11 ldr r2, [pc, #68] ; (804803c ) - 8047ff6: 4b12 ldr r3, [pc, #72] ; (8048040 ) - 8047ff8: e9c0 2300 strd r2, r3, [r0] - 8047ffc: 4b11 ldr r3, [pc, #68] ; (8048044 ) - 8047ffe: 6083 str r3, [r0, #8] - 8048000: 230b movs r3, #11 - 8048002: 8183 strh r3, [r0, #12] - 8048004: 2201 movs r2, #1 - 8048006: 2300 movs r3, #0 - 8048008: e9c0 2304 strd r2, r3, [r0, #16] - 804800c: 6ba4 ldr r4, [r4, #56] ; 0x38 - 804800e: 4a0e ldr r2, [pc, #56] ; (8048048 ) - 8048010: 6920 ldr r0, [r4, #16] - 8048012: 6963 ldr r3, [r4, #20] - 8048014: 490d ldr r1, [pc, #52] ; (804804c ) - 8048016: 4342 muls r2, r0 - 8048018: fb01 2203 mla r2, r1, r3, r2 - 804801c: fba0 0101 umull r0, r1, r0, r1 - 8048020: 1c43 adds r3, r0, #1 - 8048022: eb42 0001 adc.w r0, r2, r1 - 8048026: e9c4 3004 strd r3, r0, [r4, #16] - 804802a: f020 4000 bic.w r0, r0, #2147483648 ; 0x80000000 - 804802e: bd10 pop {r4, pc} - 8048030: 24000148 .word 0x24000148 - 8048034: 0804d4a0 .word 0x0804d4a0 - 8048038: 0804d4b7 .word 0x0804d4b7 - 804803c: abcd330e .word 0xabcd330e - 8048040: e66d1234 .word 0xe66d1234 - 8048044: 0005deec .word 0x0005deec - 8048048: 5851f42d .word 0x5851f42d - 804804c: 4c957f2d .word 0x4c957f2d - -08048050 : - 8048050: b082 sub sp, #8 - 8048052: ec51 0b10 vmov r0, r1, d0 - 8048056: ed8d 1b00 vstr d1, [sp] - 804805a: f021 4000 bic.w r0, r1, #2147483648 ; 0x80000000 - 804805e: 9901 ldr r1, [sp, #4] - 8048060: ee10 2a10 vmov r2, s0 - 8048064: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 - 8048068: ea40 0301 orr.w r3, r0, r1 - 804806c: ec43 2b10 vmov d0, r2, r3 - 8048070: b002 add sp, #8 - 8048072: 4770 bx lr - -08048074 <_sbrk_r>: - 8048074: b538 push {r3, r4, r5, lr} - 8048076: 4d06 ldr r5, [pc, #24] ; (8048090 <_sbrk_r+0x1c>) - 8048078: 2300 movs r3, #0 - 804807a: 4604 mov r4, r0 - 804807c: 4608 mov r0, r1 - 804807e: 602b str r3, [r5, #0] - 8048080: f7e3 faf0 bl 802b664 <_sbrk> - 8048084: 1c43 adds r3, r0, #1 - 8048086: d102 bne.n 804808e <_sbrk_r+0x1a> - 8048088: 682b ldr r3, [r5, #0] - 804808a: b103 cbz r3, 804808e <_sbrk_r+0x1a> - 804808c: 6023 str r3, [r4, #0] - 804808e: bd38 pop {r3, r4, r5, pc} - 8048090: 2400ec4c .word 0x2400ec4c - -08048094 <_vsiprintf_r>: - 8048094: b500 push {lr} - 8048096: b09b sub sp, #108 ; 0x6c - 8048098: 9100 str r1, [sp, #0] - 804809a: 9104 str r1, [sp, #16] - 804809c: f06f 4100 mvn.w r1, #2147483648 ; 0x80000000 - 80480a0: 9105 str r1, [sp, #20] - 80480a2: 9102 str r1, [sp, #8] - 80480a4: 4905 ldr r1, [pc, #20] ; (80480bc <_vsiprintf_r+0x28>) - 80480a6: 9103 str r1, [sp, #12] - 80480a8: 4669 mov r1, sp - 80480aa: f000 f9a9 bl 8048400 <_svfiprintf_r> - 80480ae: 9b00 ldr r3, [sp, #0] - 80480b0: 2200 movs r2, #0 - 80480b2: 701a strb r2, [r3, #0] - 80480b4: b01b add sp, #108 ; 0x6c - 80480b6: f85d fb04 ldr.w pc, [sp], #4 - 80480ba: bf00 nop - 80480bc: ffff0208 .word 0xffff0208 - -080480c0 : - 80480c0: 4613 mov r3, r2 - 80480c2: 460a mov r2, r1 - 80480c4: 4601 mov r1, r0 - 80480c6: 4802 ldr r0, [pc, #8] ; (80480d0 ) - 80480c8: 6800 ldr r0, [r0, #0] - 80480ca: f7ff bfe3 b.w 8048094 <_vsiprintf_r> - 80480ce: bf00 nop - 80480d0: 24000148 .word 0x24000148 - -080480d4 <__assert_func>: - 80480d4: b51f push {r0, r1, r2, r3, r4, lr} - 80480d6: 4614 mov r4, r2 - 80480d8: 461a mov r2, r3 - 80480da: 4b09 ldr r3, [pc, #36] ; (8048100 <__assert_func+0x2c>) - 80480dc: 681b ldr r3, [r3, #0] - 80480de: 4605 mov r5, r0 - 80480e0: 68d8 ldr r0, [r3, #12] - 80480e2: b14c cbz r4, 80480f8 <__assert_func+0x24> - 80480e4: 4b07 ldr r3, [pc, #28] ; (8048104 <__assert_func+0x30>) - 80480e6: 9100 str r1, [sp, #0] - 80480e8: e9cd 3401 strd r3, r4, [sp, #4] - 80480ec: 4906 ldr r1, [pc, #24] ; (8048108 <__assert_func+0x34>) - 80480ee: 462b mov r3, r5 - 80480f0: f000 f8ea bl 80482c8 - 80480f4: f000 fe88 bl 8048e08 - 80480f8: 4b04 ldr r3, [pc, #16] ; (804810c <__assert_func+0x38>) - 80480fa: 461c mov r4, r3 - 80480fc: e7f3 b.n 80480e6 <__assert_func+0x12> - 80480fe: bf00 nop - 8048100: 24000148 .word 0x24000148 - 8048104: 0804d512 .word 0x0804d512 - 8048108: 0804d51f .word 0x0804d51f - 804810c: 0804d54d .word 0x0804d54d - -08048110 <__errno>: - 8048110: 4b01 ldr r3, [pc, #4] ; (8048118 <__errno+0x8>) - 8048112: 6818 ldr r0, [r3, #0] - 8048114: 4770 bx lr - 8048116: bf00 nop - 8048118: 24000148 .word 0x24000148 - -0804811c : - 804811c: 2300 movs r3, #0 - 804811e: b510 push {r4, lr} - 8048120: 4604 mov r4, r0 - 8048122: e9c0 3300 strd r3, r3, [r0] - 8048126: e9c0 3304 strd r3, r3, [r0, #16] - 804812a: 6083 str r3, [r0, #8] - 804812c: 8181 strh r1, [r0, #12] - 804812e: 6643 str r3, [r0, #100] ; 0x64 - 8048130: 81c2 strh r2, [r0, #14] - 8048132: 6183 str r3, [r0, #24] - 8048134: 4619 mov r1, r3 - 8048136: 2208 movs r2, #8 - 8048138: 305c adds r0, #92 ; 0x5c - 804813a: f7ff fe4b bl 8047dd4 - 804813e: 4b05 ldr r3, [pc, #20] ; (8048154 ) - 8048140: 6263 str r3, [r4, #36] ; 0x24 - 8048142: 4b05 ldr r3, [pc, #20] ; (8048158 ) - 8048144: 62a3 str r3, [r4, #40] ; 0x28 - 8048146: 4b05 ldr r3, [pc, #20] ; (804815c ) - 8048148: 62e3 str r3, [r4, #44] ; 0x2c - 804814a: 4b05 ldr r3, [pc, #20] ; (8048160 ) - 804814c: 6224 str r4, [r4, #32] - 804814e: 6323 str r3, [r4, #48] ; 0x30 - 8048150: bd10 pop {r4, pc} - 8048152: bf00 nop - 8048154: 08048bdd .word 0x08048bdd - 8048158: 08048bff .word 0x08048bff - 804815c: 08048c37 .word 0x08048c37 - 8048160: 08048c5b .word 0x08048c5b - -08048164 <_cleanup_r>: - 8048164: 4901 ldr r1, [pc, #4] ; (804816c <_cleanup_r+0x8>) - 8048166: f000 b8c1 b.w 80482ec <_fwalk_reent> - 804816a: bf00 nop - 804816c: 08048f45 .word 0x08048f45 - -08048170 <__sfmoreglue>: - 8048170: b570 push {r4, r5, r6, lr} - 8048172: 2268 movs r2, #104 ; 0x68 - 8048174: 1e4d subs r5, r1, #1 - 8048176: 4355 muls r5, r2 - 8048178: 460e mov r6, r1 - 804817a: f105 0174 add.w r1, r5, #116 ; 0x74 - 804817e: f7ff fe9d bl 8047ebc <_malloc_r> - 8048182: 4604 mov r4, r0 - 8048184: b140 cbz r0, 8048198 <__sfmoreglue+0x28> - 8048186: 2100 movs r1, #0 - 8048188: e9c0 1600 strd r1, r6, [r0] - 804818c: 300c adds r0, #12 - 804818e: 60a0 str r0, [r4, #8] - 8048190: f105 0268 add.w r2, r5, #104 ; 0x68 - 8048194: f7ff fe1e bl 8047dd4 - 8048198: 4620 mov r0, r4 - 804819a: bd70 pop {r4, r5, r6, pc} - -0804819c <__sfp_lock_acquire>: - 804819c: 4801 ldr r0, [pc, #4] ; (80481a4 <__sfp_lock_acquire+0x8>) - 804819e: f000 b8c5 b.w 804832c <__retarget_lock_acquire_recursive> - 80481a2: bf00 nop - 80481a4: 2400ec51 .word 0x2400ec51 - -080481a8 <__sfp_lock_release>: - 80481a8: 4801 ldr r0, [pc, #4] ; (80481b0 <__sfp_lock_release+0x8>) - 80481aa: f000 b8c0 b.w 804832e <__retarget_lock_release_recursive> - 80481ae: bf00 nop - 80481b0: 2400ec51 .word 0x2400ec51 - -080481b4 <__sinit_lock_acquire>: - 80481b4: 4801 ldr r0, [pc, #4] ; (80481bc <__sinit_lock_acquire+0x8>) - 80481b6: f000 b8b9 b.w 804832c <__retarget_lock_acquire_recursive> - 80481ba: bf00 nop - 80481bc: 2400ec52 .word 0x2400ec52 - -080481c0 <__sinit_lock_release>: - 80481c0: 4801 ldr r0, [pc, #4] ; (80481c8 <__sinit_lock_release+0x8>) - 80481c2: f000 b8b4 b.w 804832e <__retarget_lock_release_recursive> - 80481c6: bf00 nop - 80481c8: 2400ec52 .word 0x2400ec52 - -080481cc <__sinit>: - 80481cc: b510 push {r4, lr} - 80481ce: 4604 mov r4, r0 - 80481d0: f7ff fff0 bl 80481b4 <__sinit_lock_acquire> - 80481d4: 69a3 ldr r3, [r4, #24] - 80481d6: b11b cbz r3, 80481e0 <__sinit+0x14> - 80481d8: e8bd 4010 ldmia.w sp!, {r4, lr} - 80481dc: f7ff bff0 b.w 80481c0 <__sinit_lock_release> - 80481e0: e9c4 3312 strd r3, r3, [r4, #72] ; 0x48 - 80481e4: 6523 str r3, [r4, #80] ; 0x50 - 80481e6: 4b13 ldr r3, [pc, #76] ; (8048234 <__sinit+0x68>) - 80481e8: 4a13 ldr r2, [pc, #76] ; (8048238 <__sinit+0x6c>) - 80481ea: 681b ldr r3, [r3, #0] - 80481ec: 62a2 str r2, [r4, #40] ; 0x28 - 80481ee: 42a3 cmp r3, r4 - 80481f0: bf04 itt eq - 80481f2: 2301 moveq r3, #1 - 80481f4: 61a3 streq r3, [r4, #24] - 80481f6: 4620 mov r0, r4 - 80481f8: f000 f820 bl 804823c <__sfp> - 80481fc: 6060 str r0, [r4, #4] - 80481fe: 4620 mov r0, r4 - 8048200: f000 f81c bl 804823c <__sfp> - 8048204: 60a0 str r0, [r4, #8] - 8048206: 4620 mov r0, r4 - 8048208: f000 f818 bl 804823c <__sfp> - 804820c: 2200 movs r2, #0 - 804820e: 60e0 str r0, [r4, #12] - 8048210: 2104 movs r1, #4 - 8048212: 6860 ldr r0, [r4, #4] - 8048214: f7ff ff82 bl 804811c - 8048218: 68a0 ldr r0, [r4, #8] - 804821a: 2201 movs r2, #1 - 804821c: 2109 movs r1, #9 - 804821e: f7ff ff7d bl 804811c - 8048222: 68e0 ldr r0, [r4, #12] - 8048224: 2202 movs r2, #2 - 8048226: 2112 movs r1, #18 - 8048228: f7ff ff78 bl 804811c - 804822c: 2301 movs r3, #1 - 804822e: 61a3 str r3, [r4, #24] - 8048230: e7d2 b.n 80481d8 <__sinit+0xc> - 8048232: bf00 nop - 8048234: 0804d49c .word 0x0804d49c - 8048238: 08048165 .word 0x08048165 - -0804823c <__sfp>: - 804823c: b5f8 push {r3, r4, r5, r6, r7, lr} - 804823e: 4607 mov r7, r0 - 8048240: f7ff ffac bl 804819c <__sfp_lock_acquire> - 8048244: 4b1e ldr r3, [pc, #120] ; (80482c0 <__sfp+0x84>) - 8048246: 681e ldr r6, [r3, #0] - 8048248: 69b3 ldr r3, [r6, #24] - 804824a: b913 cbnz r3, 8048252 <__sfp+0x16> - 804824c: 4630 mov r0, r6 - 804824e: f7ff ffbd bl 80481cc <__sinit> - 8048252: 3648 adds r6, #72 ; 0x48 - 8048254: e9d6 3401 ldrd r3, r4, [r6, #4] - 8048258: 3b01 subs r3, #1 - 804825a: d503 bpl.n 8048264 <__sfp+0x28> - 804825c: 6833 ldr r3, [r6, #0] - 804825e: b30b cbz r3, 80482a4 <__sfp+0x68> - 8048260: 6836 ldr r6, [r6, #0] - 8048262: e7f7 b.n 8048254 <__sfp+0x18> - 8048264: f9b4 500c ldrsh.w r5, [r4, #12] - 8048268: b9d5 cbnz r5, 80482a0 <__sfp+0x64> - 804826a: 4b16 ldr r3, [pc, #88] ; (80482c4 <__sfp+0x88>) - 804826c: 60e3 str r3, [r4, #12] - 804826e: f104 0058 add.w r0, r4, #88 ; 0x58 - 8048272: 6665 str r5, [r4, #100] ; 0x64 - 8048274: f000 f859 bl 804832a <__retarget_lock_init_recursive> - 8048278: f7ff ff96 bl 80481a8 <__sfp_lock_release> - 804827c: e9c4 5501 strd r5, r5, [r4, #4] - 8048280: e9c4 5504 strd r5, r5, [r4, #16] - 8048284: 6025 str r5, [r4, #0] - 8048286: 61a5 str r5, [r4, #24] - 8048288: 2208 movs r2, #8 - 804828a: 4629 mov r1, r5 - 804828c: f104 005c add.w r0, r4, #92 ; 0x5c - 8048290: f7ff fda0 bl 8047dd4 - 8048294: e9c4 550d strd r5, r5, [r4, #52] ; 0x34 - 8048298: e9c4 5512 strd r5, r5, [r4, #72] ; 0x48 - 804829c: 4620 mov r0, r4 - 804829e: bdf8 pop {r3, r4, r5, r6, r7, pc} - 80482a0: 3468 adds r4, #104 ; 0x68 - 80482a2: e7d9 b.n 8048258 <__sfp+0x1c> - 80482a4: 2104 movs r1, #4 - 80482a6: 4638 mov r0, r7 - 80482a8: f7ff ff62 bl 8048170 <__sfmoreglue> - 80482ac: 4604 mov r4, r0 - 80482ae: 6030 str r0, [r6, #0] - 80482b0: 2800 cmp r0, #0 - 80482b2: d1d5 bne.n 8048260 <__sfp+0x24> - 80482b4: f7ff ff78 bl 80481a8 <__sfp_lock_release> - 80482b8: 230c movs r3, #12 - 80482ba: 603b str r3, [r7, #0] - 80482bc: e7ee b.n 804829c <__sfp+0x60> - 80482be: bf00 nop - 80482c0: 0804d49c .word 0x0804d49c - 80482c4: ffff0001 .word 0xffff0001 - -080482c8 : - 80482c8: b40e push {r1, r2, r3} - 80482ca: b503 push {r0, r1, lr} - 80482cc: 4601 mov r1, r0 - 80482ce: ab03 add r3, sp, #12 - 80482d0: 4805 ldr r0, [pc, #20] ; (80482e8 ) - 80482d2: f853 2b04 ldr.w r2, [r3], #4 - 80482d6: 6800 ldr r0, [r0, #0] - 80482d8: 9301 str r3, [sp, #4] - 80482da: f000 f9bb bl 8048654 <_vfiprintf_r> - 80482de: b002 add sp, #8 - 80482e0: f85d eb04 ldr.w lr, [sp], #4 - 80482e4: b003 add sp, #12 - 80482e6: 4770 bx lr - 80482e8: 24000148 .word 0x24000148 - -080482ec <_fwalk_reent>: - 80482ec: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} - 80482f0: 4606 mov r6, r0 - 80482f2: 4688 mov r8, r1 - 80482f4: f100 0448 add.w r4, r0, #72 ; 0x48 - 80482f8: 2700 movs r7, #0 - 80482fa: e9d4 9501 ldrd r9, r5, [r4, #4] - 80482fe: f1b9 0901 subs.w r9, r9, #1 - 8048302: d505 bpl.n 8048310 <_fwalk_reent+0x24> - 8048304: 6824 ldr r4, [r4, #0] - 8048306: 2c00 cmp r4, #0 - 8048308: d1f7 bne.n 80482fa <_fwalk_reent+0xe> - 804830a: 4638 mov r0, r7 - 804830c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} - 8048310: 89ab ldrh r3, [r5, #12] - 8048312: 2b01 cmp r3, #1 - 8048314: d907 bls.n 8048326 <_fwalk_reent+0x3a> - 8048316: f9b5 300e ldrsh.w r3, [r5, #14] - 804831a: 3301 adds r3, #1 - 804831c: d003 beq.n 8048326 <_fwalk_reent+0x3a> - 804831e: 4629 mov r1, r5 - 8048320: 4630 mov r0, r6 - 8048322: 47c0 blx r8 - 8048324: 4307 orrs r7, r0 - 8048326: 3568 adds r5, #104 ; 0x68 - 8048328: e7e9 b.n 80482fe <_fwalk_reent+0x12> - -0804832a <__retarget_lock_init_recursive>: - 804832a: 4770 bx lr - -0804832c <__retarget_lock_acquire_recursive>: - 804832c: 4770 bx lr - -0804832e <__retarget_lock_release_recursive>: - 804832e: 4770 bx lr - -08048330 <__malloc_lock>: - 8048330: 4801 ldr r0, [pc, #4] ; (8048338 <__malloc_lock+0x8>) - 8048332: f7ff bffb b.w 804832c <__retarget_lock_acquire_recursive> - 8048336: bf00 nop - 8048338: 2400ec50 .word 0x2400ec50 - -0804833c <__malloc_unlock>: - 804833c: 4801 ldr r0, [pc, #4] ; (8048344 <__malloc_unlock+0x8>) - 804833e: f7ff bff6 b.w 804832e <__retarget_lock_release_recursive> - 8048342: bf00 nop - 8048344: 2400ec50 .word 0x2400ec50 - -08048348 <__ssputs_r>: - 8048348: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 804834c: 688e ldr r6, [r1, #8] - 804834e: 429e cmp r6, r3 - 8048350: 4682 mov sl, r0 - 8048352: 460c mov r4, r1 - 8048354: 4690 mov r8, r2 - 8048356: 461f mov r7, r3 - 8048358: d838 bhi.n 80483cc <__ssputs_r+0x84> - 804835a: 898a ldrh r2, [r1, #12] - 804835c: f412 6f90 tst.w r2, #1152 ; 0x480 - 8048360: d032 beq.n 80483c8 <__ssputs_r+0x80> - 8048362: 6825 ldr r5, [r4, #0] - 8048364: 6909 ldr r1, [r1, #16] - 8048366: eba5 0901 sub.w r9, r5, r1 - 804836a: 6965 ldr r5, [r4, #20] - 804836c: eb05 0545 add.w r5, r5, r5, lsl #1 - 8048370: eb05 75d5 add.w r5, r5, r5, lsr #31 - 8048374: 3301 adds r3, #1 - 8048376: 444b add r3, r9 - 8048378: 106d asrs r5, r5, #1 - 804837a: 429d cmp r5, r3 - 804837c: bf38 it cc - 804837e: 461d movcc r5, r3 - 8048380: 0553 lsls r3, r2, #21 - 8048382: d531 bpl.n 80483e8 <__ssputs_r+0xa0> - 8048384: 4629 mov r1, r5 - 8048386: f7ff fd99 bl 8047ebc <_malloc_r> - 804838a: 4606 mov r6, r0 - 804838c: b950 cbnz r0, 80483a4 <__ssputs_r+0x5c> - 804838e: 230c movs r3, #12 - 8048390: f8ca 3000 str.w r3, [sl] - 8048394: 89a3 ldrh r3, [r4, #12] - 8048396: f043 0340 orr.w r3, r3, #64 ; 0x40 - 804839a: 81a3 strh r3, [r4, #12] - 804839c: f04f 30ff mov.w r0, #4294967295 - 80483a0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 80483a4: 6921 ldr r1, [r4, #16] - 80483a6: 464a mov r2, r9 - 80483a8: f7ff fcec bl 8047d84 - 80483ac: 89a3 ldrh r3, [r4, #12] - 80483ae: f423 6390 bic.w r3, r3, #1152 ; 0x480 - 80483b2: f043 0380 orr.w r3, r3, #128 ; 0x80 - 80483b6: 81a3 strh r3, [r4, #12] - 80483b8: 6126 str r6, [r4, #16] - 80483ba: 6165 str r5, [r4, #20] - 80483bc: 444e add r6, r9 - 80483be: eba5 0509 sub.w r5, r5, r9 - 80483c2: 6026 str r6, [r4, #0] - 80483c4: 60a5 str r5, [r4, #8] - 80483c6: 463e mov r6, r7 - 80483c8: 42be cmp r6, r7 - 80483ca: d900 bls.n 80483ce <__ssputs_r+0x86> - 80483cc: 463e mov r6, r7 - 80483ce: 6820 ldr r0, [r4, #0] - 80483d0: 4632 mov r2, r6 - 80483d2: 4641 mov r1, r8 - 80483d4: f7ff fce4 bl 8047da0 - 80483d8: 68a3 ldr r3, [r4, #8] - 80483da: 1b9b subs r3, r3, r6 - 80483dc: 60a3 str r3, [r4, #8] - 80483de: 6823 ldr r3, [r4, #0] - 80483e0: 4433 add r3, r6 - 80483e2: 6023 str r3, [r4, #0] - 80483e4: 2000 movs r0, #0 - 80483e6: e7db b.n 80483a0 <__ssputs_r+0x58> - 80483e8: 462a mov r2, r5 - 80483ea: f000 fe5f bl 80490ac <_realloc_r> - 80483ee: 4606 mov r6, r0 - 80483f0: 2800 cmp r0, #0 - 80483f2: d1e1 bne.n 80483b8 <__ssputs_r+0x70> - 80483f4: 6921 ldr r1, [r4, #16] - 80483f6: 4650 mov r0, sl - 80483f8: f7ff fcf4 bl 8047de4 <_free_r> - 80483fc: e7c7 b.n 804838e <__ssputs_r+0x46> + 8047d22: f06f 0301 mvn.w r3, #1 +} + 8047d26: 4618 mov r0, r3 + 8047d28: 3718 adds r7, #24 + 8047d2a: 46bd mov sp, r7 + 8047d2c: bd80 pop {r7, pc} + 8047d2e: bf00 nop + 8047d30: 0804caf0 .word 0x0804caf0 + 8047d34: 0804cb28 .word 0x0804cb28 + 8047d38: 0804cb5c .word 0x0804cb5c + +08047d3c <__libc_init_array>: + 8047d3c: b570 push {r4, r5, r6, lr} + 8047d3e: 4d0d ldr r5, [pc, #52] ; (8047d74 <__libc_init_array+0x38>) + 8047d40: 4c0d ldr r4, [pc, #52] ; (8047d78 <__libc_init_array+0x3c>) + 8047d42: 1b64 subs r4, r4, r5 + 8047d44: 10a4 asrs r4, r4, #2 + 8047d46: 2600 movs r6, #0 + 8047d48: 42a6 cmp r6, r4 + 8047d4a: d109 bne.n 8047d60 <__libc_init_array+0x24> + 8047d4c: 4d0b ldr r5, [pc, #44] ; (8047d7c <__libc_init_array+0x40>) + 8047d4e: 4c0c ldr r4, [pc, #48] ; (8047d80 <__libc_init_array+0x44>) + 8047d50: f001 fc6a bl 8049628 <_init> + 8047d54: 1b64 subs r4, r4, r5 + 8047d56: 10a4 asrs r4, r4, #2 + 8047d58: 2600 movs r6, #0 + 8047d5a: 42a6 cmp r6, r4 + 8047d5c: d105 bne.n 8047d6a <__libc_init_array+0x2e> + 8047d5e: bd70 pop {r4, r5, r6, pc} + 8047d60: f855 3b04 ldr.w r3, [r5], #4 + 8047d64: 4798 blx r3 + 8047d66: 3601 adds r6, #1 + 8047d68: e7ee b.n 8047d48 <__libc_init_array+0xc> + 8047d6a: f855 3b04 ldr.w r3, [r5], #4 + 8047d6e: 4798 blx r3 + 8047d70: 3601 adds r6, #1 + 8047d72: e7f2 b.n 8047d5a <__libc_init_array+0x1e> + 8047d74: 0804d6a0 .word 0x0804d6a0 + 8047d78: 0804d6a0 .word 0x0804d6a0 + 8047d7c: 0804d6a0 .word 0x0804d6a0 + 8047d80: 0804d6a4 .word 0x0804d6a4 + +08047d84 : + 8047d84: 4b02 ldr r3, [pc, #8] ; (8047d90 ) + 8047d86: 4601 mov r1, r0 + 8047d88: 6818 ldr r0, [r3, #0] + 8047d8a: f000 b8b7 b.w 8047efc <_malloc_r> + 8047d8e: bf00 nop + 8047d90: 24000148 .word 0x24000148 + +08047d94 : + 8047d94: 4b02 ldr r3, [pc, #8] ; (8047da0 ) + 8047d96: 4601 mov r1, r0 + 8047d98: 6818 ldr r0, [r3, #0] + 8047d9a: f000 b843 b.w 8047e24 <_free_r> + 8047d9e: bf00 nop + 8047da0: 24000148 .word 0x24000148 + +08047da4 : + 8047da4: b510 push {r4, lr} + 8047da6: 3901 subs r1, #1 + 8047da8: 4402 add r2, r0 + 8047daa: 4290 cmp r0, r2 + 8047dac: d101 bne.n 8047db2 + 8047dae: 2000 movs r0, #0 + 8047db0: e005 b.n 8047dbe + 8047db2: 7803 ldrb r3, [r0, #0] + 8047db4: f811 4f01 ldrb.w r4, [r1, #1]! + 8047db8: 42a3 cmp r3, r4 + 8047dba: d001 beq.n 8047dc0 + 8047dbc: 1b18 subs r0, r3, r4 + 8047dbe: bd10 pop {r4, pc} + 8047dc0: 3001 adds r0, #1 + 8047dc2: e7f2 b.n 8047daa + +08047dc4 : + 8047dc4: 440a add r2, r1 + 8047dc6: 4291 cmp r1, r2 + 8047dc8: f100 33ff add.w r3, r0, #4294967295 + 8047dcc: d100 bne.n 8047dd0 + 8047dce: 4770 bx lr + 8047dd0: b510 push {r4, lr} + 8047dd2: f811 4b01 ldrb.w r4, [r1], #1 + 8047dd6: f803 4f01 strb.w r4, [r3, #1]! + 8047dda: 4291 cmp r1, r2 + 8047ddc: d1f9 bne.n 8047dd2 + 8047dde: bd10 pop {r4, pc} + +08047de0 : + 8047de0: 4288 cmp r0, r1 + 8047de2: b510 push {r4, lr} + 8047de4: eb01 0402 add.w r4, r1, r2 + 8047de8: d902 bls.n 8047df0 + 8047dea: 4284 cmp r4, r0 + 8047dec: 4623 mov r3, r4 + 8047dee: d807 bhi.n 8047e00 + 8047df0: 1e43 subs r3, r0, #1 + 8047df2: 42a1 cmp r1, r4 + 8047df4: d008 beq.n 8047e08 + 8047df6: f811 2b01 ldrb.w r2, [r1], #1 + 8047dfa: f803 2f01 strb.w r2, [r3, #1]! + 8047dfe: e7f8 b.n 8047df2 + 8047e00: 4402 add r2, r0 + 8047e02: 4601 mov r1, r0 + 8047e04: 428a cmp r2, r1 + 8047e06: d100 bne.n 8047e0a + 8047e08: bd10 pop {r4, pc} + 8047e0a: f813 4d01 ldrb.w r4, [r3, #-1]! + 8047e0e: f802 4d01 strb.w r4, [r2, #-1]! + 8047e12: e7f7 b.n 8047e04 + +08047e14 : + 8047e14: 4402 add r2, r0 + 8047e16: 4603 mov r3, r0 + 8047e18: 4293 cmp r3, r2 + 8047e1a: d100 bne.n 8047e1e + 8047e1c: 4770 bx lr + 8047e1e: f803 1b01 strb.w r1, [r3], #1 + 8047e22: e7f9 b.n 8047e18 + +08047e24 <_free_r>: + 8047e24: b537 push {r0, r1, r2, r4, r5, lr} + 8047e26: 2900 cmp r1, #0 + 8047e28: d044 beq.n 8047eb4 <_free_r+0x90> + 8047e2a: f851 3c04 ldr.w r3, [r1, #-4] + 8047e2e: 9001 str r0, [sp, #4] + 8047e30: 2b00 cmp r3, #0 + 8047e32: f1a1 0404 sub.w r4, r1, #4 + 8047e36: bfb8 it lt + 8047e38: 18e4 addlt r4, r4, r3 + 8047e3a: f000 fa99 bl 8048370 <__malloc_lock> + 8047e3e: 4a1e ldr r2, [pc, #120] ; (8047eb8 <_free_r+0x94>) + 8047e40: 9801 ldr r0, [sp, #4] + 8047e42: 6813 ldr r3, [r2, #0] + 8047e44: b933 cbnz r3, 8047e54 <_free_r+0x30> + 8047e46: 6063 str r3, [r4, #4] + 8047e48: 6014 str r4, [r2, #0] + 8047e4a: b003 add sp, #12 + 8047e4c: e8bd 4030 ldmia.w sp!, {r4, r5, lr} + 8047e50: f000 ba94 b.w 804837c <__malloc_unlock> + 8047e54: 42a3 cmp r3, r4 + 8047e56: d908 bls.n 8047e6a <_free_r+0x46> + 8047e58: 6825 ldr r5, [r4, #0] + 8047e5a: 1961 adds r1, r4, r5 + 8047e5c: 428b cmp r3, r1 + 8047e5e: bf01 itttt eq + 8047e60: 6819 ldreq r1, [r3, #0] + 8047e62: 685b ldreq r3, [r3, #4] + 8047e64: 1949 addeq r1, r1, r5 + 8047e66: 6021 streq r1, [r4, #0] + 8047e68: e7ed b.n 8047e46 <_free_r+0x22> + 8047e6a: 461a mov r2, r3 + 8047e6c: 685b ldr r3, [r3, #4] + 8047e6e: b10b cbz r3, 8047e74 <_free_r+0x50> + 8047e70: 42a3 cmp r3, r4 + 8047e72: d9fa bls.n 8047e6a <_free_r+0x46> + 8047e74: 6811 ldr r1, [r2, #0] + 8047e76: 1855 adds r5, r2, r1 + 8047e78: 42a5 cmp r5, r4 + 8047e7a: d10b bne.n 8047e94 <_free_r+0x70> + 8047e7c: 6824 ldr r4, [r4, #0] + 8047e7e: 4421 add r1, r4 + 8047e80: 1854 adds r4, r2, r1 + 8047e82: 42a3 cmp r3, r4 + 8047e84: 6011 str r1, [r2, #0] + 8047e86: d1e0 bne.n 8047e4a <_free_r+0x26> + 8047e88: 681c ldr r4, [r3, #0] + 8047e8a: 685b ldr r3, [r3, #4] + 8047e8c: 6053 str r3, [r2, #4] + 8047e8e: 4421 add r1, r4 + 8047e90: 6011 str r1, [r2, #0] + 8047e92: e7da b.n 8047e4a <_free_r+0x26> + 8047e94: d902 bls.n 8047e9c <_free_r+0x78> + 8047e96: 230c movs r3, #12 + 8047e98: 6003 str r3, [r0, #0] + 8047e9a: e7d6 b.n 8047e4a <_free_r+0x26> + 8047e9c: 6825 ldr r5, [r4, #0] + 8047e9e: 1961 adds r1, r4, r5 + 8047ea0: 428b cmp r3, r1 + 8047ea2: bf04 itt eq + 8047ea4: 6819 ldreq r1, [r3, #0] + 8047ea6: 685b ldreq r3, [r3, #4] + 8047ea8: 6063 str r3, [r4, #4] + 8047eaa: bf04 itt eq + 8047eac: 1949 addeq r1, r1, r5 + 8047eae: 6021 streq r1, [r4, #0] + 8047eb0: 6054 str r4, [r2, #4] + 8047eb2: e7ca b.n 8047e4a <_free_r+0x26> + 8047eb4: b003 add sp, #12 + 8047eb6: bd30 pop {r4, r5, pc} + 8047eb8: 2400ec44 .word 0x2400ec44 + +08047ebc : + 8047ebc: b570 push {r4, r5, r6, lr} + 8047ebe: 4e0e ldr r6, [pc, #56] ; (8047ef8 ) + 8047ec0: 460c mov r4, r1 + 8047ec2: 6831 ldr r1, [r6, #0] + 8047ec4: 4605 mov r5, r0 + 8047ec6: b911 cbnz r1, 8047ece + 8047ec8: f000 f8f4 bl 80480b4 <_sbrk_r> + 8047ecc: 6030 str r0, [r6, #0] + 8047ece: 4621 mov r1, r4 + 8047ed0: 4628 mov r0, r5 + 8047ed2: f000 f8ef bl 80480b4 <_sbrk_r> + 8047ed6: 1c43 adds r3, r0, #1 + 8047ed8: d00a beq.n 8047ef0 + 8047eda: 1cc4 adds r4, r0, #3 + 8047edc: f024 0403 bic.w r4, r4, #3 + 8047ee0: 42a0 cmp r0, r4 + 8047ee2: d007 beq.n 8047ef4 + 8047ee4: 1a21 subs r1, r4, r0 + 8047ee6: 4628 mov r0, r5 + 8047ee8: f000 f8e4 bl 80480b4 <_sbrk_r> + 8047eec: 3001 adds r0, #1 + 8047eee: d101 bne.n 8047ef4 + 8047ef0: f04f 34ff mov.w r4, #4294967295 + 8047ef4: 4620 mov r0, r4 + 8047ef6: bd70 pop {r4, r5, r6, pc} + 8047ef8: 2400ec48 .word 0x2400ec48 + +08047efc <_malloc_r>: + 8047efc: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8047f00: 1ccd adds r5, r1, #3 + 8047f02: f025 0503 bic.w r5, r5, #3 + 8047f06: 3508 adds r5, #8 + 8047f08: 2d0c cmp r5, #12 + 8047f0a: bf38 it cc + 8047f0c: 250c movcc r5, #12 + 8047f0e: 2d00 cmp r5, #0 + 8047f10: 4607 mov r7, r0 + 8047f12: db01 blt.n 8047f18 <_malloc_r+0x1c> + 8047f14: 42a9 cmp r1, r5 + 8047f16: d905 bls.n 8047f24 <_malloc_r+0x28> + 8047f18: 230c movs r3, #12 + 8047f1a: 603b str r3, [r7, #0] + 8047f1c: 2600 movs r6, #0 + 8047f1e: 4630 mov r0, r6 + 8047f20: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8047f24: 4e2e ldr r6, [pc, #184] ; (8047fe0 <_malloc_r+0xe4>) + 8047f26: f000 fa23 bl 8048370 <__malloc_lock> + 8047f2a: 6833 ldr r3, [r6, #0] + 8047f2c: 461c mov r4, r3 + 8047f2e: bb34 cbnz r4, 8047f7e <_malloc_r+0x82> + 8047f30: 4629 mov r1, r5 + 8047f32: 4638 mov r0, r7 + 8047f34: f7ff ffc2 bl 8047ebc + 8047f38: 1c43 adds r3, r0, #1 + 8047f3a: 4604 mov r4, r0 + 8047f3c: d14d bne.n 8047fda <_malloc_r+0xde> + 8047f3e: 6834 ldr r4, [r6, #0] + 8047f40: 4626 mov r6, r4 + 8047f42: 2e00 cmp r6, #0 + 8047f44: d140 bne.n 8047fc8 <_malloc_r+0xcc> + 8047f46: 6823 ldr r3, [r4, #0] + 8047f48: 4631 mov r1, r6 + 8047f4a: 4638 mov r0, r7 + 8047f4c: eb04 0803 add.w r8, r4, r3 + 8047f50: f000 f8b0 bl 80480b4 <_sbrk_r> + 8047f54: 4580 cmp r8, r0 + 8047f56: d13a bne.n 8047fce <_malloc_r+0xd2> + 8047f58: 6821 ldr r1, [r4, #0] + 8047f5a: 3503 adds r5, #3 + 8047f5c: 1a6d subs r5, r5, r1 + 8047f5e: f025 0503 bic.w r5, r5, #3 + 8047f62: 3508 adds r5, #8 + 8047f64: 2d0c cmp r5, #12 + 8047f66: bf38 it cc + 8047f68: 250c movcc r5, #12 + 8047f6a: 4629 mov r1, r5 + 8047f6c: 4638 mov r0, r7 + 8047f6e: f7ff ffa5 bl 8047ebc + 8047f72: 3001 adds r0, #1 + 8047f74: d02b beq.n 8047fce <_malloc_r+0xd2> + 8047f76: 6823 ldr r3, [r4, #0] + 8047f78: 442b add r3, r5 + 8047f7a: 6023 str r3, [r4, #0] + 8047f7c: e00e b.n 8047f9c <_malloc_r+0xa0> + 8047f7e: 6822 ldr r2, [r4, #0] + 8047f80: 1b52 subs r2, r2, r5 + 8047f82: d41e bmi.n 8047fc2 <_malloc_r+0xc6> + 8047f84: 2a0b cmp r2, #11 + 8047f86: d916 bls.n 8047fb6 <_malloc_r+0xba> + 8047f88: 1961 adds r1, r4, r5 + 8047f8a: 42a3 cmp r3, r4 + 8047f8c: 6025 str r5, [r4, #0] + 8047f8e: bf18 it ne + 8047f90: 6059 strne r1, [r3, #4] + 8047f92: 6863 ldr r3, [r4, #4] + 8047f94: bf08 it eq + 8047f96: 6031 streq r1, [r6, #0] + 8047f98: 5162 str r2, [r4, r5] + 8047f9a: 604b str r3, [r1, #4] + 8047f9c: 4638 mov r0, r7 + 8047f9e: f104 060b add.w r6, r4, #11 + 8047fa2: f000 f9eb bl 804837c <__malloc_unlock> + 8047fa6: f026 0607 bic.w r6, r6, #7 + 8047faa: 1d23 adds r3, r4, #4 + 8047fac: 1af2 subs r2, r6, r3 + 8047fae: d0b6 beq.n 8047f1e <_malloc_r+0x22> + 8047fb0: 1b9b subs r3, r3, r6 + 8047fb2: 50a3 str r3, [r4, r2] + 8047fb4: e7b3 b.n 8047f1e <_malloc_r+0x22> + 8047fb6: 6862 ldr r2, [r4, #4] + 8047fb8: 42a3 cmp r3, r4 + 8047fba: bf0c ite eq + 8047fbc: 6032 streq r2, [r6, #0] + 8047fbe: 605a strne r2, [r3, #4] + 8047fc0: e7ec b.n 8047f9c <_malloc_r+0xa0> + 8047fc2: 4623 mov r3, r4 + 8047fc4: 6864 ldr r4, [r4, #4] + 8047fc6: e7b2 b.n 8047f2e <_malloc_r+0x32> + 8047fc8: 4634 mov r4, r6 + 8047fca: 6876 ldr r6, [r6, #4] + 8047fcc: e7b9 b.n 8047f42 <_malloc_r+0x46> + 8047fce: 230c movs r3, #12 + 8047fd0: 603b str r3, [r7, #0] + 8047fd2: 4638 mov r0, r7 + 8047fd4: f000 f9d2 bl 804837c <__malloc_unlock> + 8047fd8: e7a1 b.n 8047f1e <_malloc_r+0x22> + 8047fda: 6025 str r5, [r4, #0] + 8047fdc: e7de b.n 8047f9c <_malloc_r+0xa0> + 8047fde: bf00 nop + 8047fe0: 2400ec44 .word 0x2400ec44 + +08047fe4 : + 8047fe4: b40f push {r0, r1, r2, r3} + 8047fe6: 4b0a ldr r3, [pc, #40] ; (8048010 ) + 8047fe8: b513 push {r0, r1, r4, lr} + 8047fea: 681c ldr r4, [r3, #0] + 8047fec: b124 cbz r4, 8047ff8 + 8047fee: 69a3 ldr r3, [r4, #24] + 8047ff0: b913 cbnz r3, 8047ff8 + 8047ff2: 4620 mov r0, r4 + 8047ff4: f000 f90a bl 804820c <__sinit> + 8047ff8: ab05 add r3, sp, #20 + 8047ffa: 9a04 ldr r2, [sp, #16] + 8047ffc: 68a1 ldr r1, [r4, #8] + 8047ffe: 9301 str r3, [sp, #4] + 8048000: 4620 mov r0, r4 + 8048002: f000 fb47 bl 8048694 <_vfiprintf_r> + 8048006: b002 add sp, #8 + 8048008: e8bd 4010 ldmia.w sp!, {r4, lr} + 804800c: b004 add sp, #16 + 804800e: 4770 bx lr + 8048010: 24000148 .word 0x24000148 + +08048014 : + 8048014: 4b16 ldr r3, [pc, #88] ; (8048070 ) + 8048016: b510 push {r4, lr} + 8048018: 681c ldr r4, [r3, #0] + 804801a: 6ba3 ldr r3, [r4, #56] ; 0x38 + 804801c: b9b3 cbnz r3, 804804c + 804801e: 2018 movs r0, #24 + 8048020: f7ff feb0 bl 8047d84 + 8048024: 63a0 str r0, [r4, #56] ; 0x38 + 8048026: b928 cbnz r0, 8048034 + 8048028: 4602 mov r2, r0 + 804802a: 4b12 ldr r3, [pc, #72] ; (8048074 ) + 804802c: 4812 ldr r0, [pc, #72] ; (8048078 ) + 804802e: 214e movs r1, #78 ; 0x4e + 8048030: f000 f870 bl 8048114 <__assert_func> + 8048034: 4a11 ldr r2, [pc, #68] ; (804807c ) + 8048036: 4b12 ldr r3, [pc, #72] ; (8048080 ) + 8048038: e9c0 2300 strd r2, r3, [r0] + 804803c: 4b11 ldr r3, [pc, #68] ; (8048084 ) + 804803e: 6083 str r3, [r0, #8] + 8048040: 230b movs r3, #11 + 8048042: 8183 strh r3, [r0, #12] + 8048044: 2201 movs r2, #1 + 8048046: 2300 movs r3, #0 + 8048048: e9c0 2304 strd r2, r3, [r0, #16] + 804804c: 6ba4 ldr r4, [r4, #56] ; 0x38 + 804804e: 4a0e ldr r2, [pc, #56] ; (8048088 ) + 8048050: 6920 ldr r0, [r4, #16] + 8048052: 6963 ldr r3, [r4, #20] + 8048054: 490d ldr r1, [pc, #52] ; (804808c ) + 8048056: 4342 muls r2, r0 + 8048058: fb01 2203 mla r2, r1, r3, r2 + 804805c: fba0 0101 umull r0, r1, r0, r1 + 8048060: 1c43 adds r3, r0, #1 + 8048062: eb42 0001 adc.w r0, r2, r1 + 8048066: e9c4 3004 strd r3, r0, [r4, #16] + 804806a: f020 4000 bic.w r0, r0, #2147483648 ; 0x80000000 + 804806e: bd10 pop {r4, pc} + 8048070: 24000148 .word 0x24000148 + 8048074: 0804d4e0 .word 0x0804d4e0 + 8048078: 0804d4f7 .word 0x0804d4f7 + 804807c: abcd330e .word 0xabcd330e + 8048080: e66d1234 .word 0xe66d1234 + 8048084: 0005deec .word 0x0005deec + 8048088: 5851f42d .word 0x5851f42d + 804808c: 4c957f2d .word 0x4c957f2d + +08048090 : + 8048090: b082 sub sp, #8 + 8048092: ec51 0b10 vmov r0, r1, d0 + 8048096: ed8d 1b00 vstr d1, [sp] + 804809a: f021 4000 bic.w r0, r1, #2147483648 ; 0x80000000 + 804809e: 9901 ldr r1, [sp, #4] + 80480a0: ee10 2a10 vmov r2, s0 + 80480a4: f001 4100 and.w r1, r1, #2147483648 ; 0x80000000 + 80480a8: ea40 0301 orr.w r3, r0, r1 + 80480ac: ec43 2b10 vmov d0, r2, r3 + 80480b0: b002 add sp, #8 + 80480b2: 4770 bx lr + +080480b4 <_sbrk_r>: + 80480b4: b538 push {r3, r4, r5, lr} + 80480b6: 4d06 ldr r5, [pc, #24] ; (80480d0 <_sbrk_r+0x1c>) + 80480b8: 2300 movs r3, #0 + 80480ba: 4604 mov r4, r0 + 80480bc: 4608 mov r0, r1 + 80480be: 602b str r3, [r5, #0] + 80480c0: f7e3 faf0 bl 802b6a4 <_sbrk> + 80480c4: 1c43 adds r3, r0, #1 + 80480c6: d102 bne.n 80480ce <_sbrk_r+0x1a> + 80480c8: 682b ldr r3, [r5, #0] + 80480ca: b103 cbz r3, 80480ce <_sbrk_r+0x1a> + 80480cc: 6023 str r3, [r4, #0] + 80480ce: bd38 pop {r3, r4, r5, pc} + 80480d0: 2400ec4c .word 0x2400ec4c + +080480d4 <_vsiprintf_r>: + 80480d4: b500 push {lr} + 80480d6: b09b sub sp, #108 ; 0x6c + 80480d8: 9100 str r1, [sp, #0] + 80480da: 9104 str r1, [sp, #16] + 80480dc: f06f 4100 mvn.w r1, #2147483648 ; 0x80000000 + 80480e0: 9105 str r1, [sp, #20] + 80480e2: 9102 str r1, [sp, #8] + 80480e4: 4905 ldr r1, [pc, #20] ; (80480fc <_vsiprintf_r+0x28>) + 80480e6: 9103 str r1, [sp, #12] + 80480e8: 4669 mov r1, sp + 80480ea: f000 f9a9 bl 8048440 <_svfiprintf_r> + 80480ee: 9b00 ldr r3, [sp, #0] + 80480f0: 2200 movs r2, #0 + 80480f2: 701a strb r2, [r3, #0] + 80480f4: b01b add sp, #108 ; 0x6c + 80480f6: f85d fb04 ldr.w pc, [sp], #4 + 80480fa: bf00 nop + 80480fc: ffff0208 .word 0xffff0208 + +08048100 : + 8048100: 4613 mov r3, r2 + 8048102: 460a mov r2, r1 + 8048104: 4601 mov r1, r0 + 8048106: 4802 ldr r0, [pc, #8] ; (8048110 ) + 8048108: 6800 ldr r0, [r0, #0] + 804810a: f7ff bfe3 b.w 80480d4 <_vsiprintf_r> + 804810e: bf00 nop + 8048110: 24000148 .word 0x24000148 + +08048114 <__assert_func>: + 8048114: b51f push {r0, r1, r2, r3, r4, lr} + 8048116: 4614 mov r4, r2 + 8048118: 461a mov r2, r3 + 804811a: 4b09 ldr r3, [pc, #36] ; (8048140 <__assert_func+0x2c>) + 804811c: 681b ldr r3, [r3, #0] + 804811e: 4605 mov r5, r0 + 8048120: 68d8 ldr r0, [r3, #12] + 8048122: b14c cbz r4, 8048138 <__assert_func+0x24> + 8048124: 4b07 ldr r3, [pc, #28] ; (8048144 <__assert_func+0x30>) + 8048126: 9100 str r1, [sp, #0] + 8048128: e9cd 3401 strd r3, r4, [sp, #4] + 804812c: 4906 ldr r1, [pc, #24] ; (8048148 <__assert_func+0x34>) + 804812e: 462b mov r3, r5 + 8048130: f000 f8ea bl 8048308 + 8048134: f000 fe88 bl 8048e48 + 8048138: 4b04 ldr r3, [pc, #16] ; (804814c <__assert_func+0x38>) + 804813a: 461c mov r4, r3 + 804813c: e7f3 b.n 8048126 <__assert_func+0x12> + 804813e: bf00 nop + 8048140: 24000148 .word 0x24000148 + 8048144: 0804d552 .word 0x0804d552 + 8048148: 0804d55f .word 0x0804d55f + 804814c: 0804d58d .word 0x0804d58d + +08048150 <__errno>: + 8048150: 4b01 ldr r3, [pc, #4] ; (8048158 <__errno+0x8>) + 8048152: 6818 ldr r0, [r3, #0] + 8048154: 4770 bx lr + 8048156: bf00 nop + 8048158: 24000148 .word 0x24000148 + +0804815c : + 804815c: 2300 movs r3, #0 + 804815e: b510 push {r4, lr} + 8048160: 4604 mov r4, r0 + 8048162: e9c0 3300 strd r3, r3, [r0] + 8048166: e9c0 3304 strd r3, r3, [r0, #16] + 804816a: 6083 str r3, [r0, #8] + 804816c: 8181 strh r1, [r0, #12] + 804816e: 6643 str r3, [r0, #100] ; 0x64 + 8048170: 81c2 strh r2, [r0, #14] + 8048172: 6183 str r3, [r0, #24] + 8048174: 4619 mov r1, r3 + 8048176: 2208 movs r2, #8 + 8048178: 305c adds r0, #92 ; 0x5c + 804817a: f7ff fe4b bl 8047e14 + 804817e: 4b05 ldr r3, [pc, #20] ; (8048194 ) + 8048180: 6263 str r3, [r4, #36] ; 0x24 + 8048182: 4b05 ldr r3, [pc, #20] ; (8048198 ) + 8048184: 62a3 str r3, [r4, #40] ; 0x28 + 8048186: 4b05 ldr r3, [pc, #20] ; (804819c ) + 8048188: 62e3 str r3, [r4, #44] ; 0x2c + 804818a: 4b05 ldr r3, [pc, #20] ; (80481a0 ) + 804818c: 6224 str r4, [r4, #32] + 804818e: 6323 str r3, [r4, #48] ; 0x30 + 8048190: bd10 pop {r4, pc} + 8048192: bf00 nop + 8048194: 08048c1d .word 0x08048c1d + 8048198: 08048c3f .word 0x08048c3f + 804819c: 08048c77 .word 0x08048c77 + 80481a0: 08048c9b .word 0x08048c9b + +080481a4 <_cleanup_r>: + 80481a4: 4901 ldr r1, [pc, #4] ; (80481ac <_cleanup_r+0x8>) + 80481a6: f000 b8c1 b.w 804832c <_fwalk_reent> + 80481aa: bf00 nop + 80481ac: 08048f85 .word 0x08048f85 + +080481b0 <__sfmoreglue>: + 80481b0: b570 push {r4, r5, r6, lr} + 80481b2: 2268 movs r2, #104 ; 0x68 + 80481b4: 1e4d subs r5, r1, #1 + 80481b6: 4355 muls r5, r2 + 80481b8: 460e mov r6, r1 + 80481ba: f105 0174 add.w r1, r5, #116 ; 0x74 + 80481be: f7ff fe9d bl 8047efc <_malloc_r> + 80481c2: 4604 mov r4, r0 + 80481c4: b140 cbz r0, 80481d8 <__sfmoreglue+0x28> + 80481c6: 2100 movs r1, #0 + 80481c8: e9c0 1600 strd r1, r6, [r0] + 80481cc: 300c adds r0, #12 + 80481ce: 60a0 str r0, [r4, #8] + 80481d0: f105 0268 add.w r2, r5, #104 ; 0x68 + 80481d4: f7ff fe1e bl 8047e14 + 80481d8: 4620 mov r0, r4 + 80481da: bd70 pop {r4, r5, r6, pc} + +080481dc <__sfp_lock_acquire>: + 80481dc: 4801 ldr r0, [pc, #4] ; (80481e4 <__sfp_lock_acquire+0x8>) + 80481de: f000 b8c5 b.w 804836c <__retarget_lock_acquire_recursive> + 80481e2: bf00 nop + 80481e4: 2400ec51 .word 0x2400ec51 + +080481e8 <__sfp_lock_release>: + 80481e8: 4801 ldr r0, [pc, #4] ; (80481f0 <__sfp_lock_release+0x8>) + 80481ea: f000 b8c0 b.w 804836e <__retarget_lock_release_recursive> + 80481ee: bf00 nop + 80481f0: 2400ec51 .word 0x2400ec51 + +080481f4 <__sinit_lock_acquire>: + 80481f4: 4801 ldr r0, [pc, #4] ; (80481fc <__sinit_lock_acquire+0x8>) + 80481f6: f000 b8b9 b.w 804836c <__retarget_lock_acquire_recursive> + 80481fa: bf00 nop + 80481fc: 2400ec52 .word 0x2400ec52 + +08048200 <__sinit_lock_release>: + 8048200: 4801 ldr r0, [pc, #4] ; (8048208 <__sinit_lock_release+0x8>) + 8048202: f000 b8b4 b.w 804836e <__retarget_lock_release_recursive> + 8048206: bf00 nop + 8048208: 2400ec52 .word 0x2400ec52 + +0804820c <__sinit>: + 804820c: b510 push {r4, lr} + 804820e: 4604 mov r4, r0 + 8048210: f7ff fff0 bl 80481f4 <__sinit_lock_acquire> + 8048214: 69a3 ldr r3, [r4, #24] + 8048216: b11b cbz r3, 8048220 <__sinit+0x14> + 8048218: e8bd 4010 ldmia.w sp!, {r4, lr} + 804821c: f7ff bff0 b.w 8048200 <__sinit_lock_release> + 8048220: e9c4 3312 strd r3, r3, [r4, #72] ; 0x48 + 8048224: 6523 str r3, [r4, #80] ; 0x50 + 8048226: 4b13 ldr r3, [pc, #76] ; (8048274 <__sinit+0x68>) + 8048228: 4a13 ldr r2, [pc, #76] ; (8048278 <__sinit+0x6c>) + 804822a: 681b ldr r3, [r3, #0] + 804822c: 62a2 str r2, [r4, #40] ; 0x28 + 804822e: 42a3 cmp r3, r4 + 8048230: bf04 itt eq + 8048232: 2301 moveq r3, #1 + 8048234: 61a3 streq r3, [r4, #24] + 8048236: 4620 mov r0, r4 + 8048238: f000 f820 bl 804827c <__sfp> + 804823c: 6060 str r0, [r4, #4] + 804823e: 4620 mov r0, r4 + 8048240: f000 f81c bl 804827c <__sfp> + 8048244: 60a0 str r0, [r4, #8] + 8048246: 4620 mov r0, r4 + 8048248: f000 f818 bl 804827c <__sfp> + 804824c: 2200 movs r2, #0 + 804824e: 60e0 str r0, [r4, #12] + 8048250: 2104 movs r1, #4 + 8048252: 6860 ldr r0, [r4, #4] + 8048254: f7ff ff82 bl 804815c + 8048258: 68a0 ldr r0, [r4, #8] + 804825a: 2201 movs r2, #1 + 804825c: 2109 movs r1, #9 + 804825e: f7ff ff7d bl 804815c + 8048262: 68e0 ldr r0, [r4, #12] + 8048264: 2202 movs r2, #2 + 8048266: 2112 movs r1, #18 + 8048268: f7ff ff78 bl 804815c + 804826c: 2301 movs r3, #1 + 804826e: 61a3 str r3, [r4, #24] + 8048270: e7d2 b.n 8048218 <__sinit+0xc> + 8048272: bf00 nop + 8048274: 0804d4dc .word 0x0804d4dc + 8048278: 080481a5 .word 0x080481a5 + +0804827c <__sfp>: + 804827c: b5f8 push {r3, r4, r5, r6, r7, lr} + 804827e: 4607 mov r7, r0 + 8048280: f7ff ffac bl 80481dc <__sfp_lock_acquire> + 8048284: 4b1e ldr r3, [pc, #120] ; (8048300 <__sfp+0x84>) + 8048286: 681e ldr r6, [r3, #0] + 8048288: 69b3 ldr r3, [r6, #24] + 804828a: b913 cbnz r3, 8048292 <__sfp+0x16> + 804828c: 4630 mov r0, r6 + 804828e: f7ff ffbd bl 804820c <__sinit> + 8048292: 3648 adds r6, #72 ; 0x48 + 8048294: e9d6 3401 ldrd r3, r4, [r6, #4] + 8048298: 3b01 subs r3, #1 + 804829a: d503 bpl.n 80482a4 <__sfp+0x28> + 804829c: 6833 ldr r3, [r6, #0] + 804829e: b30b cbz r3, 80482e4 <__sfp+0x68> + 80482a0: 6836 ldr r6, [r6, #0] + 80482a2: e7f7 b.n 8048294 <__sfp+0x18> + 80482a4: f9b4 500c ldrsh.w r5, [r4, #12] + 80482a8: b9d5 cbnz r5, 80482e0 <__sfp+0x64> + 80482aa: 4b16 ldr r3, [pc, #88] ; (8048304 <__sfp+0x88>) + 80482ac: 60e3 str r3, [r4, #12] + 80482ae: f104 0058 add.w r0, r4, #88 ; 0x58 + 80482b2: 6665 str r5, [r4, #100] ; 0x64 + 80482b4: f000 f859 bl 804836a <__retarget_lock_init_recursive> + 80482b8: f7ff ff96 bl 80481e8 <__sfp_lock_release> + 80482bc: e9c4 5501 strd r5, r5, [r4, #4] + 80482c0: e9c4 5504 strd r5, r5, [r4, #16] + 80482c4: 6025 str r5, [r4, #0] + 80482c6: 61a5 str r5, [r4, #24] + 80482c8: 2208 movs r2, #8 + 80482ca: 4629 mov r1, r5 + 80482cc: f104 005c add.w r0, r4, #92 ; 0x5c + 80482d0: f7ff fda0 bl 8047e14 + 80482d4: e9c4 550d strd r5, r5, [r4, #52] ; 0x34 + 80482d8: e9c4 5512 strd r5, r5, [r4, #72] ; 0x48 + 80482dc: 4620 mov r0, r4 + 80482de: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80482e0: 3468 adds r4, #104 ; 0x68 + 80482e2: e7d9 b.n 8048298 <__sfp+0x1c> + 80482e4: 2104 movs r1, #4 + 80482e6: 4638 mov r0, r7 + 80482e8: f7ff ff62 bl 80481b0 <__sfmoreglue> + 80482ec: 4604 mov r4, r0 + 80482ee: 6030 str r0, [r6, #0] + 80482f0: 2800 cmp r0, #0 + 80482f2: d1d5 bne.n 80482a0 <__sfp+0x24> + 80482f4: f7ff ff78 bl 80481e8 <__sfp_lock_release> + 80482f8: 230c movs r3, #12 + 80482fa: 603b str r3, [r7, #0] + 80482fc: e7ee b.n 80482dc <__sfp+0x60> + 80482fe: bf00 nop + 8048300: 0804d4dc .word 0x0804d4dc + 8048304: ffff0001 .word 0xffff0001 + +08048308 : + 8048308: b40e push {r1, r2, r3} + 804830a: b503 push {r0, r1, lr} + 804830c: 4601 mov r1, r0 + 804830e: ab03 add r3, sp, #12 + 8048310: 4805 ldr r0, [pc, #20] ; (8048328 ) + 8048312: f853 2b04 ldr.w r2, [r3], #4 + 8048316: 6800 ldr r0, [r0, #0] + 8048318: 9301 str r3, [sp, #4] + 804831a: f000 f9bb bl 8048694 <_vfiprintf_r> + 804831e: b002 add sp, #8 + 8048320: f85d eb04 ldr.w lr, [sp], #4 + 8048324: b003 add sp, #12 + 8048326: 4770 bx lr + 8048328: 24000148 .word 0x24000148 + +0804832c <_fwalk_reent>: + 804832c: e92d 43f8 stmdb sp!, {r3, r4, r5, r6, r7, r8, r9, lr} + 8048330: 4606 mov r6, r0 + 8048332: 4688 mov r8, r1 + 8048334: f100 0448 add.w r4, r0, #72 ; 0x48 + 8048338: 2700 movs r7, #0 + 804833a: e9d4 9501 ldrd r9, r5, [r4, #4] + 804833e: f1b9 0901 subs.w r9, r9, #1 + 8048342: d505 bpl.n 8048350 <_fwalk_reent+0x24> + 8048344: 6824 ldr r4, [r4, #0] + 8048346: 2c00 cmp r4, #0 + 8048348: d1f7 bne.n 804833a <_fwalk_reent+0xe> + 804834a: 4638 mov r0, r7 + 804834c: e8bd 83f8 ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc} + 8048350: 89ab ldrh r3, [r5, #12] + 8048352: 2b01 cmp r3, #1 + 8048354: d907 bls.n 8048366 <_fwalk_reent+0x3a> + 8048356: f9b5 300e ldrsh.w r3, [r5, #14] + 804835a: 3301 adds r3, #1 + 804835c: d003 beq.n 8048366 <_fwalk_reent+0x3a> + 804835e: 4629 mov r1, r5 + 8048360: 4630 mov r0, r6 + 8048362: 47c0 blx r8 + 8048364: 4307 orrs r7, r0 + 8048366: 3568 adds r5, #104 ; 0x68 + 8048368: e7e9 b.n 804833e <_fwalk_reent+0x12> + +0804836a <__retarget_lock_init_recursive>: + 804836a: 4770 bx lr + +0804836c <__retarget_lock_acquire_recursive>: + 804836c: 4770 bx lr + +0804836e <__retarget_lock_release_recursive>: + 804836e: 4770 bx lr + +08048370 <__malloc_lock>: + 8048370: 4801 ldr r0, [pc, #4] ; (8048378 <__malloc_lock+0x8>) + 8048372: f7ff bffb b.w 804836c <__retarget_lock_acquire_recursive> + 8048376: bf00 nop + 8048378: 2400ec50 .word 0x2400ec50 + +0804837c <__malloc_unlock>: + 804837c: 4801 ldr r0, [pc, #4] ; (8048384 <__malloc_unlock+0x8>) + 804837e: f7ff bff6 b.w 804836e <__retarget_lock_release_recursive> + 8048382: bf00 nop + 8048384: 2400ec50 .word 0x2400ec50 + +08048388 <__ssputs_r>: + 8048388: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 804838c: 688e ldr r6, [r1, #8] + 804838e: 429e cmp r6, r3 + 8048390: 4682 mov sl, r0 + 8048392: 460c mov r4, r1 + 8048394: 4690 mov r8, r2 + 8048396: 461f mov r7, r3 + 8048398: d838 bhi.n 804840c <__ssputs_r+0x84> + 804839a: 898a ldrh r2, [r1, #12] + 804839c: f412 6f90 tst.w r2, #1152 ; 0x480 + 80483a0: d032 beq.n 8048408 <__ssputs_r+0x80> + 80483a2: 6825 ldr r5, [r4, #0] + 80483a4: 6909 ldr r1, [r1, #16] + 80483a6: eba5 0901 sub.w r9, r5, r1 + 80483aa: 6965 ldr r5, [r4, #20] + 80483ac: eb05 0545 add.w r5, r5, r5, lsl #1 + 80483b0: eb05 75d5 add.w r5, r5, r5, lsr #31 + 80483b4: 3301 adds r3, #1 + 80483b6: 444b add r3, r9 + 80483b8: 106d asrs r5, r5, #1 + 80483ba: 429d cmp r5, r3 + 80483bc: bf38 it cc + 80483be: 461d movcc r5, r3 + 80483c0: 0553 lsls r3, r2, #21 + 80483c2: d531 bpl.n 8048428 <__ssputs_r+0xa0> + 80483c4: 4629 mov r1, r5 + 80483c6: f7ff fd99 bl 8047efc <_malloc_r> + 80483ca: 4606 mov r6, r0 + 80483cc: b950 cbnz r0, 80483e4 <__ssputs_r+0x5c> + 80483ce: 230c movs r3, #12 + 80483d0: f8ca 3000 str.w r3, [sl] + 80483d4: 89a3 ldrh r3, [r4, #12] + 80483d6: f043 0340 orr.w r3, r3, #64 ; 0x40 + 80483da: 81a3 strh r3, [r4, #12] + 80483dc: f04f 30ff mov.w r0, #4294967295 + 80483e0: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 80483e4: 6921 ldr r1, [r4, #16] + 80483e6: 464a mov r2, r9 + 80483e8: f7ff fcec bl 8047dc4 + 80483ec: 89a3 ldrh r3, [r4, #12] + 80483ee: f423 6390 bic.w r3, r3, #1152 ; 0x480 + 80483f2: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80483f6: 81a3 strh r3, [r4, #12] + 80483f8: 6126 str r6, [r4, #16] + 80483fa: 6165 str r5, [r4, #20] + 80483fc: 444e add r6, r9 + 80483fe: eba5 0509 sub.w r5, r5, r9 + 8048402: 6026 str r6, [r4, #0] + 8048404: 60a5 str r5, [r4, #8] + 8048406: 463e mov r6, r7 + 8048408: 42be cmp r6, r7 + 804840a: d900 bls.n 804840e <__ssputs_r+0x86> + 804840c: 463e mov r6, r7 + 804840e: 6820 ldr r0, [r4, #0] + 8048410: 4632 mov r2, r6 + 8048412: 4641 mov r1, r8 + 8048414: f7ff fce4 bl 8047de0 + 8048418: 68a3 ldr r3, [r4, #8] + 804841a: 1b9b subs r3, r3, r6 + 804841c: 60a3 str r3, [r4, #8] + 804841e: 6823 ldr r3, [r4, #0] + 8048420: 4433 add r3, r6 + 8048422: 6023 str r3, [r4, #0] + 8048424: 2000 movs r0, #0 + 8048426: e7db b.n 80483e0 <__ssputs_r+0x58> + 8048428: 462a mov r2, r5 + 804842a: f000 fe5f bl 80490ec <_realloc_r> + 804842e: 4606 mov r6, r0 + 8048430: 2800 cmp r0, #0 + 8048432: d1e1 bne.n 80483f8 <__ssputs_r+0x70> + 8048434: 6921 ldr r1, [r4, #16] + 8048436: 4650 mov r0, sl + 8048438: f7ff fcf4 bl 8047e24 <_free_r> + 804843c: e7c7 b.n 80483ce <__ssputs_r+0x46> ... -08048400 <_svfiprintf_r>: - 8048400: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8048404: 4698 mov r8, r3 - 8048406: 898b ldrh r3, [r1, #12] - 8048408: 061b lsls r3, r3, #24 - 804840a: b09d sub sp, #116 ; 0x74 - 804840c: 4607 mov r7, r0 - 804840e: 460d mov r5, r1 - 8048410: 4614 mov r4, r2 - 8048412: d50e bpl.n 8048432 <_svfiprintf_r+0x32> - 8048414: 690b ldr r3, [r1, #16] - 8048416: b963 cbnz r3, 8048432 <_svfiprintf_r+0x32> - 8048418: 2140 movs r1, #64 ; 0x40 - 804841a: f7ff fd4f bl 8047ebc <_malloc_r> - 804841e: 6028 str r0, [r5, #0] - 8048420: 6128 str r0, [r5, #16] - 8048422: b920 cbnz r0, 804842e <_svfiprintf_r+0x2e> - 8048424: 230c movs r3, #12 - 8048426: 603b str r3, [r7, #0] - 8048428: f04f 30ff mov.w r0, #4294967295 - 804842c: e0d1 b.n 80485d2 <_svfiprintf_r+0x1d2> - 804842e: 2340 movs r3, #64 ; 0x40 - 8048430: 616b str r3, [r5, #20] - 8048432: 2300 movs r3, #0 - 8048434: 9309 str r3, [sp, #36] ; 0x24 - 8048436: 2320 movs r3, #32 - 8048438: f88d 3029 strb.w r3, [sp, #41] ; 0x29 - 804843c: f8cd 800c str.w r8, [sp, #12] - 8048440: 2330 movs r3, #48 ; 0x30 - 8048442: f8df 81a8 ldr.w r8, [pc, #424] ; 80485ec <_svfiprintf_r+0x1ec> - 8048446: f88d 302a strb.w r3, [sp, #42] ; 0x2a - 804844a: f04f 0901 mov.w r9, #1 - 804844e: 4623 mov r3, r4 - 8048450: 469a mov sl, r3 - 8048452: f813 2b01 ldrb.w r2, [r3], #1 - 8048456: b10a cbz r2, 804845c <_svfiprintf_r+0x5c> - 8048458: 2a25 cmp r2, #37 ; 0x25 - 804845a: d1f9 bne.n 8048450 <_svfiprintf_r+0x50> - 804845c: ebba 0b04 subs.w fp, sl, r4 - 8048460: d00b beq.n 804847a <_svfiprintf_r+0x7a> - 8048462: 465b mov r3, fp - 8048464: 4622 mov r2, r4 - 8048466: 4629 mov r1, r5 - 8048468: 4638 mov r0, r7 - 804846a: f7ff ff6d bl 8048348 <__ssputs_r> - 804846e: 3001 adds r0, #1 - 8048470: f000 80aa beq.w 80485c8 <_svfiprintf_r+0x1c8> - 8048474: 9a09 ldr r2, [sp, #36] ; 0x24 - 8048476: 445a add r2, fp - 8048478: 9209 str r2, [sp, #36] ; 0x24 - 804847a: f89a 3000 ldrb.w r3, [sl] - 804847e: 2b00 cmp r3, #0 - 8048480: f000 80a2 beq.w 80485c8 <_svfiprintf_r+0x1c8> - 8048484: 2300 movs r3, #0 - 8048486: f04f 32ff mov.w r2, #4294967295 - 804848a: e9cd 2305 strd r2, r3, [sp, #20] - 804848e: f10a 0a01 add.w sl, sl, #1 - 8048492: 9304 str r3, [sp, #16] - 8048494: 9307 str r3, [sp, #28] - 8048496: f88d 3053 strb.w r3, [sp, #83] ; 0x53 - 804849a: 931a str r3, [sp, #104] ; 0x68 - 804849c: 4654 mov r4, sl - 804849e: 2205 movs r2, #5 - 80484a0: f814 1b01 ldrb.w r1, [r4], #1 - 80484a4: 4851 ldr r0, [pc, #324] ; (80485ec <_svfiprintf_r+0x1ec>) - 80484a6: f7d7 ff33 bl 8020310 - 80484aa: 9a04 ldr r2, [sp, #16] - 80484ac: b9d8 cbnz r0, 80484e6 <_svfiprintf_r+0xe6> - 80484ae: 06d0 lsls r0, r2, #27 - 80484b0: bf44 itt mi - 80484b2: 2320 movmi r3, #32 - 80484b4: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 - 80484b8: 0711 lsls r1, r2, #28 - 80484ba: bf44 itt mi - 80484bc: 232b movmi r3, #43 ; 0x2b - 80484be: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 - 80484c2: f89a 3000 ldrb.w r3, [sl] - 80484c6: 2b2a cmp r3, #42 ; 0x2a - 80484c8: d015 beq.n 80484f6 <_svfiprintf_r+0xf6> - 80484ca: 9a07 ldr r2, [sp, #28] - 80484cc: 4654 mov r4, sl - 80484ce: 2000 movs r0, #0 - 80484d0: f04f 0c0a mov.w ip, #10 - 80484d4: 4621 mov r1, r4 - 80484d6: f811 3b01 ldrb.w r3, [r1], #1 - 80484da: 3b30 subs r3, #48 ; 0x30 - 80484dc: 2b09 cmp r3, #9 - 80484de: d94e bls.n 804857e <_svfiprintf_r+0x17e> - 80484e0: b1b0 cbz r0, 8048510 <_svfiprintf_r+0x110> - 80484e2: 9207 str r2, [sp, #28] - 80484e4: e014 b.n 8048510 <_svfiprintf_r+0x110> - 80484e6: eba0 0308 sub.w r3, r0, r8 - 80484ea: fa09 f303 lsl.w r3, r9, r3 - 80484ee: 4313 orrs r3, r2 - 80484f0: 9304 str r3, [sp, #16] - 80484f2: 46a2 mov sl, r4 - 80484f4: e7d2 b.n 804849c <_svfiprintf_r+0x9c> - 80484f6: 9b03 ldr r3, [sp, #12] - 80484f8: 1d19 adds r1, r3, #4 - 80484fa: 681b ldr r3, [r3, #0] - 80484fc: 9103 str r1, [sp, #12] - 80484fe: 2b00 cmp r3, #0 - 8048500: bfbb ittet lt - 8048502: 425b neglt r3, r3 - 8048504: f042 0202 orrlt.w r2, r2, #2 - 8048508: 9307 strge r3, [sp, #28] - 804850a: 9307 strlt r3, [sp, #28] - 804850c: bfb8 it lt - 804850e: 9204 strlt r2, [sp, #16] - 8048510: 7823 ldrb r3, [r4, #0] - 8048512: 2b2e cmp r3, #46 ; 0x2e - 8048514: d10c bne.n 8048530 <_svfiprintf_r+0x130> - 8048516: 7863 ldrb r3, [r4, #1] - 8048518: 2b2a cmp r3, #42 ; 0x2a - 804851a: d135 bne.n 8048588 <_svfiprintf_r+0x188> - 804851c: 9b03 ldr r3, [sp, #12] - 804851e: 1d1a adds r2, r3, #4 - 8048520: 681b ldr r3, [r3, #0] - 8048522: 9203 str r2, [sp, #12] - 8048524: 2b00 cmp r3, #0 - 8048526: bfb8 it lt - 8048528: f04f 33ff movlt.w r3, #4294967295 - 804852c: 3402 adds r4, #2 - 804852e: 9305 str r3, [sp, #20] - 8048530: f8df a0c8 ldr.w sl, [pc, #200] ; 80485fc <_svfiprintf_r+0x1fc> - 8048534: 7821 ldrb r1, [r4, #0] - 8048536: 2203 movs r2, #3 - 8048538: 4650 mov r0, sl - 804853a: f7d7 fee9 bl 8020310 - 804853e: b140 cbz r0, 8048552 <_svfiprintf_r+0x152> - 8048540: 2340 movs r3, #64 ; 0x40 - 8048542: eba0 000a sub.w r0, r0, sl - 8048546: fa03 f000 lsl.w r0, r3, r0 - 804854a: 9b04 ldr r3, [sp, #16] - 804854c: 4303 orrs r3, r0 - 804854e: 3401 adds r4, #1 - 8048550: 9304 str r3, [sp, #16] - 8048552: f814 1b01 ldrb.w r1, [r4], #1 - 8048556: 4826 ldr r0, [pc, #152] ; (80485f0 <_svfiprintf_r+0x1f0>) - 8048558: f88d 1028 strb.w r1, [sp, #40] ; 0x28 - 804855c: 2206 movs r2, #6 - 804855e: f7d7 fed7 bl 8020310 - 8048562: 2800 cmp r0, #0 - 8048564: d038 beq.n 80485d8 <_svfiprintf_r+0x1d8> - 8048566: 4b23 ldr r3, [pc, #140] ; (80485f4 <_svfiprintf_r+0x1f4>) - 8048568: bb1b cbnz r3, 80485b2 <_svfiprintf_r+0x1b2> - 804856a: 9b03 ldr r3, [sp, #12] - 804856c: 3307 adds r3, #7 - 804856e: f023 0307 bic.w r3, r3, #7 - 8048572: 3308 adds r3, #8 - 8048574: 9303 str r3, [sp, #12] - 8048576: 9b09 ldr r3, [sp, #36] ; 0x24 - 8048578: 4433 add r3, r6 - 804857a: 9309 str r3, [sp, #36] ; 0x24 - 804857c: e767 b.n 804844e <_svfiprintf_r+0x4e> - 804857e: fb0c 3202 mla r2, ip, r2, r3 - 8048582: 460c mov r4, r1 - 8048584: 2001 movs r0, #1 - 8048586: e7a5 b.n 80484d4 <_svfiprintf_r+0xd4> - 8048588: 2300 movs r3, #0 - 804858a: 3401 adds r4, #1 - 804858c: 9305 str r3, [sp, #20] - 804858e: 4619 mov r1, r3 - 8048590: f04f 0c0a mov.w ip, #10 - 8048594: 4620 mov r0, r4 - 8048596: f810 2b01 ldrb.w r2, [r0], #1 - 804859a: 3a30 subs r2, #48 ; 0x30 - 804859c: 2a09 cmp r2, #9 - 804859e: d903 bls.n 80485a8 <_svfiprintf_r+0x1a8> - 80485a0: 2b00 cmp r3, #0 - 80485a2: d0c5 beq.n 8048530 <_svfiprintf_r+0x130> - 80485a4: 9105 str r1, [sp, #20] - 80485a6: e7c3 b.n 8048530 <_svfiprintf_r+0x130> - 80485a8: fb0c 2101 mla r1, ip, r1, r2 - 80485ac: 4604 mov r4, r0 - 80485ae: 2301 movs r3, #1 - 80485b0: e7f0 b.n 8048594 <_svfiprintf_r+0x194> - 80485b2: ab03 add r3, sp, #12 - 80485b4: 9300 str r3, [sp, #0] - 80485b6: 462a mov r2, r5 - 80485b8: 4b0f ldr r3, [pc, #60] ; (80485f8 <_svfiprintf_r+0x1f8>) - 80485ba: a904 add r1, sp, #16 - 80485bc: 4638 mov r0, r7 - 80485be: f3af 8000 nop.w - 80485c2: 1c42 adds r2, r0, #1 - 80485c4: 4606 mov r6, r0 - 80485c6: d1d6 bne.n 8048576 <_svfiprintf_r+0x176> - 80485c8: 89ab ldrh r3, [r5, #12] - 80485ca: 065b lsls r3, r3, #25 - 80485cc: f53f af2c bmi.w 8048428 <_svfiprintf_r+0x28> - 80485d0: 9809 ldr r0, [sp, #36] ; 0x24 - 80485d2: b01d add sp, #116 ; 0x74 - 80485d4: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 80485d8: ab03 add r3, sp, #12 - 80485da: 9300 str r3, [sp, #0] - 80485dc: 462a mov r2, r5 - 80485de: 4b06 ldr r3, [pc, #24] ; (80485f8 <_svfiprintf_r+0x1f8>) - 80485e0: a904 add r1, sp, #16 - 80485e2: 4638 mov r0, r7 - 80485e4: f000 f9d4 bl 8048990 <_printf_i> - 80485e8: e7eb b.n 80485c2 <_svfiprintf_r+0x1c2> - 80485ea: bf00 nop - 80485ec: 0804d5b0 .word 0x0804d5b0 - 80485f0: 0804d5ba .word 0x0804d5ba - 80485f4: 00000000 .word 0x00000000 - 80485f8: 08048349 .word 0x08048349 - 80485fc: 0804d5b6 .word 0x0804d5b6 - -08048600 <__sfputc_r>: - 8048600: 6893 ldr r3, [r2, #8] - 8048602: 3b01 subs r3, #1 - 8048604: 2b00 cmp r3, #0 - 8048606: b410 push {r4} - 8048608: 6093 str r3, [r2, #8] - 804860a: da08 bge.n 804861e <__sfputc_r+0x1e> - 804860c: 6994 ldr r4, [r2, #24] - 804860e: 42a3 cmp r3, r4 - 8048610: db01 blt.n 8048616 <__sfputc_r+0x16> - 8048612: 290a cmp r1, #10 - 8048614: d103 bne.n 804861e <__sfputc_r+0x1e> - 8048616: f85d 4b04 ldr.w r4, [sp], #4 - 804861a: f000 bb23 b.w 8048c64 <__swbuf_r> - 804861e: 6813 ldr r3, [r2, #0] - 8048620: 1c58 adds r0, r3, #1 - 8048622: 6010 str r0, [r2, #0] - 8048624: 7019 strb r1, [r3, #0] - 8048626: 4608 mov r0, r1 - 8048628: f85d 4b04 ldr.w r4, [sp], #4 - 804862c: 4770 bx lr - -0804862e <__sfputs_r>: - 804862e: b5f8 push {r3, r4, r5, r6, r7, lr} - 8048630: 4606 mov r6, r0 - 8048632: 460f mov r7, r1 - 8048634: 4614 mov r4, r2 - 8048636: 18d5 adds r5, r2, r3 - 8048638: 42ac cmp r4, r5 - 804863a: d101 bne.n 8048640 <__sfputs_r+0x12> - 804863c: 2000 movs r0, #0 - 804863e: e007 b.n 8048650 <__sfputs_r+0x22> - 8048640: f814 1b01 ldrb.w r1, [r4], #1 - 8048644: 463a mov r2, r7 - 8048646: 4630 mov r0, r6 - 8048648: f7ff ffda bl 8048600 <__sfputc_r> - 804864c: 1c43 adds r3, r0, #1 - 804864e: d1f3 bne.n 8048638 <__sfputs_r+0xa> - 8048650: bdf8 pop {r3, r4, r5, r6, r7, pc} +08048440 <_svfiprintf_r>: + 8048440: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8048444: 4698 mov r8, r3 + 8048446: 898b ldrh r3, [r1, #12] + 8048448: 061b lsls r3, r3, #24 + 804844a: b09d sub sp, #116 ; 0x74 + 804844c: 4607 mov r7, r0 + 804844e: 460d mov r5, r1 + 8048450: 4614 mov r4, r2 + 8048452: d50e bpl.n 8048472 <_svfiprintf_r+0x32> + 8048454: 690b ldr r3, [r1, #16] + 8048456: b963 cbnz r3, 8048472 <_svfiprintf_r+0x32> + 8048458: 2140 movs r1, #64 ; 0x40 + 804845a: f7ff fd4f bl 8047efc <_malloc_r> + 804845e: 6028 str r0, [r5, #0] + 8048460: 6128 str r0, [r5, #16] + 8048462: b920 cbnz r0, 804846e <_svfiprintf_r+0x2e> + 8048464: 230c movs r3, #12 + 8048466: 603b str r3, [r7, #0] + 8048468: f04f 30ff mov.w r0, #4294967295 + 804846c: e0d1 b.n 8048612 <_svfiprintf_r+0x1d2> + 804846e: 2340 movs r3, #64 ; 0x40 + 8048470: 616b str r3, [r5, #20] + 8048472: 2300 movs r3, #0 + 8048474: 9309 str r3, [sp, #36] ; 0x24 + 8048476: 2320 movs r3, #32 + 8048478: f88d 3029 strb.w r3, [sp, #41] ; 0x29 + 804847c: f8cd 800c str.w r8, [sp, #12] + 8048480: 2330 movs r3, #48 ; 0x30 + 8048482: f8df 81a8 ldr.w r8, [pc, #424] ; 804862c <_svfiprintf_r+0x1ec> + 8048486: f88d 302a strb.w r3, [sp, #42] ; 0x2a + 804848a: f04f 0901 mov.w r9, #1 + 804848e: 4623 mov r3, r4 + 8048490: 469a mov sl, r3 + 8048492: f813 2b01 ldrb.w r2, [r3], #1 + 8048496: b10a cbz r2, 804849c <_svfiprintf_r+0x5c> + 8048498: 2a25 cmp r2, #37 ; 0x25 + 804849a: d1f9 bne.n 8048490 <_svfiprintf_r+0x50> + 804849c: ebba 0b04 subs.w fp, sl, r4 + 80484a0: d00b beq.n 80484ba <_svfiprintf_r+0x7a> + 80484a2: 465b mov r3, fp + 80484a4: 4622 mov r2, r4 + 80484a6: 4629 mov r1, r5 + 80484a8: 4638 mov r0, r7 + 80484aa: f7ff ff6d bl 8048388 <__ssputs_r> + 80484ae: 3001 adds r0, #1 + 80484b0: f000 80aa beq.w 8048608 <_svfiprintf_r+0x1c8> + 80484b4: 9a09 ldr r2, [sp, #36] ; 0x24 + 80484b6: 445a add r2, fp + 80484b8: 9209 str r2, [sp, #36] ; 0x24 + 80484ba: f89a 3000 ldrb.w r3, [sl] + 80484be: 2b00 cmp r3, #0 + 80484c0: f000 80a2 beq.w 8048608 <_svfiprintf_r+0x1c8> + 80484c4: 2300 movs r3, #0 + 80484c6: f04f 32ff mov.w r2, #4294967295 + 80484ca: e9cd 2305 strd r2, r3, [sp, #20] + 80484ce: f10a 0a01 add.w sl, sl, #1 + 80484d2: 9304 str r3, [sp, #16] + 80484d4: 9307 str r3, [sp, #28] + 80484d6: f88d 3053 strb.w r3, [sp, #83] ; 0x53 + 80484da: 931a str r3, [sp, #104] ; 0x68 + 80484dc: 4654 mov r4, sl + 80484de: 2205 movs r2, #5 + 80484e0: f814 1b01 ldrb.w r1, [r4], #1 + 80484e4: 4851 ldr r0, [pc, #324] ; (804862c <_svfiprintf_r+0x1ec>) + 80484e6: f7d7 ff13 bl 8020310 + 80484ea: 9a04 ldr r2, [sp, #16] + 80484ec: b9d8 cbnz r0, 8048526 <_svfiprintf_r+0xe6> + 80484ee: 06d0 lsls r0, r2, #27 + 80484f0: bf44 itt mi + 80484f2: 2320 movmi r3, #32 + 80484f4: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 + 80484f8: 0711 lsls r1, r2, #28 + 80484fa: bf44 itt mi + 80484fc: 232b movmi r3, #43 ; 0x2b + 80484fe: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 + 8048502: f89a 3000 ldrb.w r3, [sl] + 8048506: 2b2a cmp r3, #42 ; 0x2a + 8048508: d015 beq.n 8048536 <_svfiprintf_r+0xf6> + 804850a: 9a07 ldr r2, [sp, #28] + 804850c: 4654 mov r4, sl + 804850e: 2000 movs r0, #0 + 8048510: f04f 0c0a mov.w ip, #10 + 8048514: 4621 mov r1, r4 + 8048516: f811 3b01 ldrb.w r3, [r1], #1 + 804851a: 3b30 subs r3, #48 ; 0x30 + 804851c: 2b09 cmp r3, #9 + 804851e: d94e bls.n 80485be <_svfiprintf_r+0x17e> + 8048520: b1b0 cbz r0, 8048550 <_svfiprintf_r+0x110> + 8048522: 9207 str r2, [sp, #28] + 8048524: e014 b.n 8048550 <_svfiprintf_r+0x110> + 8048526: eba0 0308 sub.w r3, r0, r8 + 804852a: fa09 f303 lsl.w r3, r9, r3 + 804852e: 4313 orrs r3, r2 + 8048530: 9304 str r3, [sp, #16] + 8048532: 46a2 mov sl, r4 + 8048534: e7d2 b.n 80484dc <_svfiprintf_r+0x9c> + 8048536: 9b03 ldr r3, [sp, #12] + 8048538: 1d19 adds r1, r3, #4 + 804853a: 681b ldr r3, [r3, #0] + 804853c: 9103 str r1, [sp, #12] + 804853e: 2b00 cmp r3, #0 + 8048540: bfbb ittet lt + 8048542: 425b neglt r3, r3 + 8048544: f042 0202 orrlt.w r2, r2, #2 + 8048548: 9307 strge r3, [sp, #28] + 804854a: 9307 strlt r3, [sp, #28] + 804854c: bfb8 it lt + 804854e: 9204 strlt r2, [sp, #16] + 8048550: 7823 ldrb r3, [r4, #0] + 8048552: 2b2e cmp r3, #46 ; 0x2e + 8048554: d10c bne.n 8048570 <_svfiprintf_r+0x130> + 8048556: 7863 ldrb r3, [r4, #1] + 8048558: 2b2a cmp r3, #42 ; 0x2a + 804855a: d135 bne.n 80485c8 <_svfiprintf_r+0x188> + 804855c: 9b03 ldr r3, [sp, #12] + 804855e: 1d1a adds r2, r3, #4 + 8048560: 681b ldr r3, [r3, #0] + 8048562: 9203 str r2, [sp, #12] + 8048564: 2b00 cmp r3, #0 + 8048566: bfb8 it lt + 8048568: f04f 33ff movlt.w r3, #4294967295 + 804856c: 3402 adds r4, #2 + 804856e: 9305 str r3, [sp, #20] + 8048570: f8df a0c8 ldr.w sl, [pc, #200] ; 804863c <_svfiprintf_r+0x1fc> + 8048574: 7821 ldrb r1, [r4, #0] + 8048576: 2203 movs r2, #3 + 8048578: 4650 mov r0, sl + 804857a: f7d7 fec9 bl 8020310 + 804857e: b140 cbz r0, 8048592 <_svfiprintf_r+0x152> + 8048580: 2340 movs r3, #64 ; 0x40 + 8048582: eba0 000a sub.w r0, r0, sl + 8048586: fa03 f000 lsl.w r0, r3, r0 + 804858a: 9b04 ldr r3, [sp, #16] + 804858c: 4303 orrs r3, r0 + 804858e: 3401 adds r4, #1 + 8048590: 9304 str r3, [sp, #16] + 8048592: f814 1b01 ldrb.w r1, [r4], #1 + 8048596: 4826 ldr r0, [pc, #152] ; (8048630 <_svfiprintf_r+0x1f0>) + 8048598: f88d 1028 strb.w r1, [sp, #40] ; 0x28 + 804859c: 2206 movs r2, #6 + 804859e: f7d7 feb7 bl 8020310 + 80485a2: 2800 cmp r0, #0 + 80485a4: d038 beq.n 8048618 <_svfiprintf_r+0x1d8> + 80485a6: 4b23 ldr r3, [pc, #140] ; (8048634 <_svfiprintf_r+0x1f4>) + 80485a8: bb1b cbnz r3, 80485f2 <_svfiprintf_r+0x1b2> + 80485aa: 9b03 ldr r3, [sp, #12] + 80485ac: 3307 adds r3, #7 + 80485ae: f023 0307 bic.w r3, r3, #7 + 80485b2: 3308 adds r3, #8 + 80485b4: 9303 str r3, [sp, #12] + 80485b6: 9b09 ldr r3, [sp, #36] ; 0x24 + 80485b8: 4433 add r3, r6 + 80485ba: 9309 str r3, [sp, #36] ; 0x24 + 80485bc: e767 b.n 804848e <_svfiprintf_r+0x4e> + 80485be: fb0c 3202 mla r2, ip, r2, r3 + 80485c2: 460c mov r4, r1 + 80485c4: 2001 movs r0, #1 + 80485c6: e7a5 b.n 8048514 <_svfiprintf_r+0xd4> + 80485c8: 2300 movs r3, #0 + 80485ca: 3401 adds r4, #1 + 80485cc: 9305 str r3, [sp, #20] + 80485ce: 4619 mov r1, r3 + 80485d0: f04f 0c0a mov.w ip, #10 + 80485d4: 4620 mov r0, r4 + 80485d6: f810 2b01 ldrb.w r2, [r0], #1 + 80485da: 3a30 subs r2, #48 ; 0x30 + 80485dc: 2a09 cmp r2, #9 + 80485de: d903 bls.n 80485e8 <_svfiprintf_r+0x1a8> + 80485e0: 2b00 cmp r3, #0 + 80485e2: d0c5 beq.n 8048570 <_svfiprintf_r+0x130> + 80485e4: 9105 str r1, [sp, #20] + 80485e6: e7c3 b.n 8048570 <_svfiprintf_r+0x130> + 80485e8: fb0c 2101 mla r1, ip, r1, r2 + 80485ec: 4604 mov r4, r0 + 80485ee: 2301 movs r3, #1 + 80485f0: e7f0 b.n 80485d4 <_svfiprintf_r+0x194> + 80485f2: ab03 add r3, sp, #12 + 80485f4: 9300 str r3, [sp, #0] + 80485f6: 462a mov r2, r5 + 80485f8: 4b0f ldr r3, [pc, #60] ; (8048638 <_svfiprintf_r+0x1f8>) + 80485fa: a904 add r1, sp, #16 + 80485fc: 4638 mov r0, r7 + 80485fe: f3af 8000 nop.w + 8048602: 1c42 adds r2, r0, #1 + 8048604: 4606 mov r6, r0 + 8048606: d1d6 bne.n 80485b6 <_svfiprintf_r+0x176> + 8048608: 89ab ldrh r3, [r5, #12] + 804860a: 065b lsls r3, r3, #25 + 804860c: f53f af2c bmi.w 8048468 <_svfiprintf_r+0x28> + 8048610: 9809 ldr r0, [sp, #36] ; 0x24 + 8048612: b01d add sp, #116 ; 0x74 + 8048614: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 8048618: ab03 add r3, sp, #12 + 804861a: 9300 str r3, [sp, #0] + 804861c: 462a mov r2, r5 + 804861e: 4b06 ldr r3, [pc, #24] ; (8048638 <_svfiprintf_r+0x1f8>) + 8048620: a904 add r1, sp, #16 + 8048622: 4638 mov r0, r7 + 8048624: f000 f9d4 bl 80489d0 <_printf_i> + 8048628: e7eb b.n 8048602 <_svfiprintf_r+0x1c2> + 804862a: bf00 nop + 804862c: 0804d5f0 .word 0x0804d5f0 + 8048630: 0804d5fa .word 0x0804d5fa + 8048634: 00000000 .word 0x00000000 + 8048638: 08048389 .word 0x08048389 + 804863c: 0804d5f6 .word 0x0804d5f6 + +08048640 <__sfputc_r>: + 8048640: 6893 ldr r3, [r2, #8] + 8048642: 3b01 subs r3, #1 + 8048644: 2b00 cmp r3, #0 + 8048646: b410 push {r4} + 8048648: 6093 str r3, [r2, #8] + 804864a: da08 bge.n 804865e <__sfputc_r+0x1e> + 804864c: 6994 ldr r4, [r2, #24] + 804864e: 42a3 cmp r3, r4 + 8048650: db01 blt.n 8048656 <__sfputc_r+0x16> + 8048652: 290a cmp r1, #10 + 8048654: d103 bne.n 804865e <__sfputc_r+0x1e> + 8048656: f85d 4b04 ldr.w r4, [sp], #4 + 804865a: f000 bb23 b.w 8048ca4 <__swbuf_r> + 804865e: 6813 ldr r3, [r2, #0] + 8048660: 1c58 adds r0, r3, #1 + 8048662: 6010 str r0, [r2, #0] + 8048664: 7019 strb r1, [r3, #0] + 8048666: 4608 mov r0, r1 + 8048668: f85d 4b04 ldr.w r4, [sp], #4 + 804866c: 4770 bx lr + +0804866e <__sfputs_r>: + 804866e: b5f8 push {r3, r4, r5, r6, r7, lr} + 8048670: 4606 mov r6, r0 + 8048672: 460f mov r7, r1 + 8048674: 4614 mov r4, r2 + 8048676: 18d5 adds r5, r2, r3 + 8048678: 42ac cmp r4, r5 + 804867a: d101 bne.n 8048680 <__sfputs_r+0x12> + 804867c: 2000 movs r0, #0 + 804867e: e007 b.n 8048690 <__sfputs_r+0x22> + 8048680: f814 1b01 ldrb.w r1, [r4], #1 + 8048684: 463a mov r2, r7 + 8048686: 4630 mov r0, r6 + 8048688: f7ff ffda bl 8048640 <__sfputc_r> + 804868c: 1c43 adds r3, r0, #1 + 804868e: d1f3 bne.n 8048678 <__sfputs_r+0xa> + 8048690: bdf8 pop {r3, r4, r5, r6, r7, pc} ... -08048654 <_vfiprintf_r>: - 8048654: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} - 8048658: 460d mov r5, r1 - 804865a: b09d sub sp, #116 ; 0x74 - 804865c: 4614 mov r4, r2 - 804865e: 4698 mov r8, r3 - 8048660: 4606 mov r6, r0 - 8048662: b118 cbz r0, 804866c <_vfiprintf_r+0x18> - 8048664: 6983 ldr r3, [r0, #24] - 8048666: b90b cbnz r3, 804866c <_vfiprintf_r+0x18> - 8048668: f7ff fdb0 bl 80481cc <__sinit> - 804866c: 4b89 ldr r3, [pc, #548] ; (8048894 <_vfiprintf_r+0x240>) - 804866e: 429d cmp r5, r3 - 8048670: d11b bne.n 80486aa <_vfiprintf_r+0x56> - 8048672: 6875 ldr r5, [r6, #4] - 8048674: 6e6b ldr r3, [r5, #100] ; 0x64 - 8048676: 07d9 lsls r1, r3, #31 - 8048678: d405 bmi.n 8048686 <_vfiprintf_r+0x32> - 804867a: 89ab ldrh r3, [r5, #12] - 804867c: 059a lsls r2, r3, #22 - 804867e: d402 bmi.n 8048686 <_vfiprintf_r+0x32> - 8048680: 6da8 ldr r0, [r5, #88] ; 0x58 - 8048682: f7ff fe53 bl 804832c <__retarget_lock_acquire_recursive> - 8048686: 89ab ldrh r3, [r5, #12] - 8048688: 071b lsls r3, r3, #28 - 804868a: d501 bpl.n 8048690 <_vfiprintf_r+0x3c> - 804868c: 692b ldr r3, [r5, #16] - 804868e: b9eb cbnz r3, 80486cc <_vfiprintf_r+0x78> - 8048690: 4629 mov r1, r5 - 8048692: 4630 mov r0, r6 - 8048694: f000 fb4a bl 8048d2c <__swsetup_r> - 8048698: b1c0 cbz r0, 80486cc <_vfiprintf_r+0x78> - 804869a: 6e6b ldr r3, [r5, #100] ; 0x64 - 804869c: 07dc lsls r4, r3, #31 - 804869e: d50e bpl.n 80486be <_vfiprintf_r+0x6a> - 80486a0: f04f 30ff mov.w r0, #4294967295 - 80486a4: b01d add sp, #116 ; 0x74 - 80486a6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} - 80486aa: 4b7b ldr r3, [pc, #492] ; (8048898 <_vfiprintf_r+0x244>) - 80486ac: 429d cmp r5, r3 - 80486ae: d101 bne.n 80486b4 <_vfiprintf_r+0x60> - 80486b0: 68b5 ldr r5, [r6, #8] - 80486b2: e7df b.n 8048674 <_vfiprintf_r+0x20> - 80486b4: 4b79 ldr r3, [pc, #484] ; (804889c <_vfiprintf_r+0x248>) - 80486b6: 429d cmp r5, r3 - 80486b8: bf08 it eq - 80486ba: 68f5 ldreq r5, [r6, #12] - 80486bc: e7da b.n 8048674 <_vfiprintf_r+0x20> - 80486be: 89ab ldrh r3, [r5, #12] - 80486c0: 0598 lsls r0, r3, #22 - 80486c2: d4ed bmi.n 80486a0 <_vfiprintf_r+0x4c> - 80486c4: 6da8 ldr r0, [r5, #88] ; 0x58 - 80486c6: f7ff fe32 bl 804832e <__retarget_lock_release_recursive> - 80486ca: e7e9 b.n 80486a0 <_vfiprintf_r+0x4c> - 80486cc: 2300 movs r3, #0 - 80486ce: 9309 str r3, [sp, #36] ; 0x24 - 80486d0: 2320 movs r3, #32 - 80486d2: f88d 3029 strb.w r3, [sp, #41] ; 0x29 - 80486d6: f8cd 800c str.w r8, [sp, #12] - 80486da: 2330 movs r3, #48 ; 0x30 - 80486dc: f8df 81c0 ldr.w r8, [pc, #448] ; 80488a0 <_vfiprintf_r+0x24c> - 80486e0: f88d 302a strb.w r3, [sp, #42] ; 0x2a - 80486e4: f04f 0901 mov.w r9, #1 - 80486e8: 4623 mov r3, r4 - 80486ea: 469a mov sl, r3 - 80486ec: f813 2b01 ldrb.w r2, [r3], #1 - 80486f0: b10a cbz r2, 80486f6 <_vfiprintf_r+0xa2> - 80486f2: 2a25 cmp r2, #37 ; 0x25 - 80486f4: d1f9 bne.n 80486ea <_vfiprintf_r+0x96> - 80486f6: ebba 0b04 subs.w fp, sl, r4 - 80486fa: d00b beq.n 8048714 <_vfiprintf_r+0xc0> - 80486fc: 465b mov r3, fp - 80486fe: 4622 mov r2, r4 - 8048700: 4629 mov r1, r5 - 8048702: 4630 mov r0, r6 - 8048704: f7ff ff93 bl 804862e <__sfputs_r> - 8048708: 3001 adds r0, #1 - 804870a: f000 80aa beq.w 8048862 <_vfiprintf_r+0x20e> - 804870e: 9a09 ldr r2, [sp, #36] ; 0x24 - 8048710: 445a add r2, fp - 8048712: 9209 str r2, [sp, #36] ; 0x24 - 8048714: f89a 3000 ldrb.w r3, [sl] - 8048718: 2b00 cmp r3, #0 - 804871a: f000 80a2 beq.w 8048862 <_vfiprintf_r+0x20e> - 804871e: 2300 movs r3, #0 - 8048720: f04f 32ff mov.w r2, #4294967295 - 8048724: e9cd 2305 strd r2, r3, [sp, #20] - 8048728: f10a 0a01 add.w sl, sl, #1 - 804872c: 9304 str r3, [sp, #16] - 804872e: 9307 str r3, [sp, #28] - 8048730: f88d 3053 strb.w r3, [sp, #83] ; 0x53 - 8048734: 931a str r3, [sp, #104] ; 0x68 - 8048736: 4654 mov r4, sl - 8048738: 2205 movs r2, #5 - 804873a: f814 1b01 ldrb.w r1, [r4], #1 - 804873e: 4858 ldr r0, [pc, #352] ; (80488a0 <_vfiprintf_r+0x24c>) - 8048740: f7d7 fde6 bl 8020310 - 8048744: 9a04 ldr r2, [sp, #16] - 8048746: b9d8 cbnz r0, 8048780 <_vfiprintf_r+0x12c> - 8048748: 06d1 lsls r1, r2, #27 - 804874a: bf44 itt mi - 804874c: 2320 movmi r3, #32 - 804874e: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 - 8048752: 0713 lsls r3, r2, #28 - 8048754: bf44 itt mi - 8048756: 232b movmi r3, #43 ; 0x2b - 8048758: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 - 804875c: f89a 3000 ldrb.w r3, [sl] - 8048760: 2b2a cmp r3, #42 ; 0x2a - 8048762: d015 beq.n 8048790 <_vfiprintf_r+0x13c> - 8048764: 9a07 ldr r2, [sp, #28] - 8048766: 4654 mov r4, sl - 8048768: 2000 movs r0, #0 - 804876a: f04f 0c0a mov.w ip, #10 - 804876e: 4621 mov r1, r4 - 8048770: f811 3b01 ldrb.w r3, [r1], #1 - 8048774: 3b30 subs r3, #48 ; 0x30 - 8048776: 2b09 cmp r3, #9 - 8048778: d94e bls.n 8048818 <_vfiprintf_r+0x1c4> - 804877a: b1b0 cbz r0, 80487aa <_vfiprintf_r+0x156> - 804877c: 9207 str r2, [sp, #28] - 804877e: e014 b.n 80487aa <_vfiprintf_r+0x156> - 8048780: eba0 0308 sub.w r3, r0, r8 - 8048784: fa09 f303 lsl.w r3, r9, r3 - 8048788: 4313 orrs r3, r2 - 804878a: 9304 str r3, [sp, #16] - 804878c: 46a2 mov sl, r4 - 804878e: e7d2 b.n 8048736 <_vfiprintf_r+0xe2> - 8048790: 9b03 ldr r3, [sp, #12] - 8048792: 1d19 adds r1, r3, #4 - 8048794: 681b ldr r3, [r3, #0] - 8048796: 9103 str r1, [sp, #12] - 8048798: 2b00 cmp r3, #0 - 804879a: bfbb ittet lt - 804879c: 425b neglt r3, r3 - 804879e: f042 0202 orrlt.w r2, r2, #2 - 80487a2: 9307 strge r3, [sp, #28] - 80487a4: 9307 strlt r3, [sp, #28] - 80487a6: bfb8 it lt - 80487a8: 9204 strlt r2, [sp, #16] - 80487aa: 7823 ldrb r3, [r4, #0] - 80487ac: 2b2e cmp r3, #46 ; 0x2e - 80487ae: d10c bne.n 80487ca <_vfiprintf_r+0x176> - 80487b0: 7863 ldrb r3, [r4, #1] - 80487b2: 2b2a cmp r3, #42 ; 0x2a - 80487b4: d135 bne.n 8048822 <_vfiprintf_r+0x1ce> - 80487b6: 9b03 ldr r3, [sp, #12] - 80487b8: 1d1a adds r2, r3, #4 - 80487ba: 681b ldr r3, [r3, #0] - 80487bc: 9203 str r2, [sp, #12] - 80487be: 2b00 cmp r3, #0 - 80487c0: bfb8 it lt - 80487c2: f04f 33ff movlt.w r3, #4294967295 - 80487c6: 3402 adds r4, #2 - 80487c8: 9305 str r3, [sp, #20] - 80487ca: f8df a0e4 ldr.w sl, [pc, #228] ; 80488b0 <_vfiprintf_r+0x25c> - 80487ce: 7821 ldrb r1, [r4, #0] - 80487d0: 2203 movs r2, #3 - 80487d2: 4650 mov r0, sl - 80487d4: f7d7 fd9c bl 8020310 - 80487d8: b140 cbz r0, 80487ec <_vfiprintf_r+0x198> - 80487da: 2340 movs r3, #64 ; 0x40 - 80487dc: eba0 000a sub.w r0, r0, sl - 80487e0: fa03 f000 lsl.w r0, r3, r0 - 80487e4: 9b04 ldr r3, [sp, #16] - 80487e6: 4303 orrs r3, r0 - 80487e8: 3401 adds r4, #1 - 80487ea: 9304 str r3, [sp, #16] - 80487ec: f814 1b01 ldrb.w r1, [r4], #1 - 80487f0: 482c ldr r0, [pc, #176] ; (80488a4 <_vfiprintf_r+0x250>) - 80487f2: f88d 1028 strb.w r1, [sp, #40] ; 0x28 - 80487f6: 2206 movs r2, #6 - 80487f8: f7d7 fd8a bl 8020310 - 80487fc: 2800 cmp r0, #0 - 80487fe: d03f beq.n 8048880 <_vfiprintf_r+0x22c> - 8048800: 4b29 ldr r3, [pc, #164] ; (80488a8 <_vfiprintf_r+0x254>) - 8048802: bb1b cbnz r3, 804884c <_vfiprintf_r+0x1f8> - 8048804: 9b03 ldr r3, [sp, #12] - 8048806: 3307 adds r3, #7 - 8048808: f023 0307 bic.w r3, r3, #7 - 804880c: 3308 adds r3, #8 - 804880e: 9303 str r3, [sp, #12] - 8048810: 9b09 ldr r3, [sp, #36] ; 0x24 - 8048812: 443b add r3, r7 - 8048814: 9309 str r3, [sp, #36] ; 0x24 - 8048816: e767 b.n 80486e8 <_vfiprintf_r+0x94> - 8048818: fb0c 3202 mla r2, ip, r2, r3 - 804881c: 460c mov r4, r1 - 804881e: 2001 movs r0, #1 - 8048820: e7a5 b.n 804876e <_vfiprintf_r+0x11a> - 8048822: 2300 movs r3, #0 - 8048824: 3401 adds r4, #1 - 8048826: 9305 str r3, [sp, #20] - 8048828: 4619 mov r1, r3 - 804882a: f04f 0c0a mov.w ip, #10 - 804882e: 4620 mov r0, r4 - 8048830: f810 2b01 ldrb.w r2, [r0], #1 - 8048834: 3a30 subs r2, #48 ; 0x30 - 8048836: 2a09 cmp r2, #9 - 8048838: d903 bls.n 8048842 <_vfiprintf_r+0x1ee> - 804883a: 2b00 cmp r3, #0 - 804883c: d0c5 beq.n 80487ca <_vfiprintf_r+0x176> - 804883e: 9105 str r1, [sp, #20] - 8048840: e7c3 b.n 80487ca <_vfiprintf_r+0x176> - 8048842: fb0c 2101 mla r1, ip, r1, r2 - 8048846: 4604 mov r4, r0 - 8048848: 2301 movs r3, #1 - 804884a: e7f0 b.n 804882e <_vfiprintf_r+0x1da> - 804884c: ab03 add r3, sp, #12 - 804884e: 9300 str r3, [sp, #0] - 8048850: 462a mov r2, r5 - 8048852: 4b16 ldr r3, [pc, #88] ; (80488ac <_vfiprintf_r+0x258>) - 8048854: a904 add r1, sp, #16 - 8048856: 4630 mov r0, r6 - 8048858: f3af 8000 nop.w - 804885c: 4607 mov r7, r0 - 804885e: 1c78 adds r0, r7, #1 - 8048860: d1d6 bne.n 8048810 <_vfiprintf_r+0x1bc> - 8048862: 6e6b ldr r3, [r5, #100] ; 0x64 - 8048864: 07d9 lsls r1, r3, #31 - 8048866: d405 bmi.n 8048874 <_vfiprintf_r+0x220> - 8048868: 89ab ldrh r3, [r5, #12] - 804886a: 059a lsls r2, r3, #22 - 804886c: d402 bmi.n 8048874 <_vfiprintf_r+0x220> - 804886e: 6da8 ldr r0, [r5, #88] ; 0x58 - 8048870: f7ff fd5d bl 804832e <__retarget_lock_release_recursive> - 8048874: 89ab ldrh r3, [r5, #12] - 8048876: 065b lsls r3, r3, #25 - 8048878: f53f af12 bmi.w 80486a0 <_vfiprintf_r+0x4c> - 804887c: 9809 ldr r0, [sp, #36] ; 0x24 - 804887e: e711 b.n 80486a4 <_vfiprintf_r+0x50> - 8048880: ab03 add r3, sp, #12 - 8048882: 9300 str r3, [sp, #0] - 8048884: 462a mov r2, r5 - 8048886: 4b09 ldr r3, [pc, #36] ; (80488ac <_vfiprintf_r+0x258>) - 8048888: a904 add r1, sp, #16 - 804888a: 4630 mov r0, r6 - 804888c: f000 f880 bl 8048990 <_printf_i> - 8048890: e7e4 b.n 804885c <_vfiprintf_r+0x208> - 8048892: bf00 nop - 8048894: 0804d570 .word 0x0804d570 - 8048898: 0804d590 .word 0x0804d590 - 804889c: 0804d550 .word 0x0804d550 - 80488a0: 0804d5b0 .word 0x0804d5b0 - 80488a4: 0804d5ba .word 0x0804d5ba - 80488a8: 00000000 .word 0x00000000 - 80488ac: 0804862f .word 0x0804862f - 80488b0: 0804d5b6 .word 0x0804d5b6 - -080488b4 <_printf_common>: - 80488b4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} - 80488b8: 4616 mov r6, r2 - 80488ba: 4699 mov r9, r3 - 80488bc: 688a ldr r2, [r1, #8] - 80488be: 690b ldr r3, [r1, #16] - 80488c0: f8dd 8020 ldr.w r8, [sp, #32] - 80488c4: 4293 cmp r3, r2 - 80488c6: bfb8 it lt - 80488c8: 4613 movlt r3, r2 - 80488ca: 6033 str r3, [r6, #0] - 80488cc: f891 2043 ldrb.w r2, [r1, #67] ; 0x43 - 80488d0: 4607 mov r7, r0 - 80488d2: 460c mov r4, r1 - 80488d4: b10a cbz r2, 80488da <_printf_common+0x26> - 80488d6: 3301 adds r3, #1 - 80488d8: 6033 str r3, [r6, #0] - 80488da: 6823 ldr r3, [r4, #0] - 80488dc: 0699 lsls r1, r3, #26 - 80488de: bf42 ittt mi - 80488e0: 6833 ldrmi r3, [r6, #0] - 80488e2: 3302 addmi r3, #2 - 80488e4: 6033 strmi r3, [r6, #0] - 80488e6: 6825 ldr r5, [r4, #0] - 80488e8: f015 0506 ands.w r5, r5, #6 - 80488ec: d106 bne.n 80488fc <_printf_common+0x48> - 80488ee: f104 0a19 add.w sl, r4, #25 - 80488f2: 68e3 ldr r3, [r4, #12] - 80488f4: 6832 ldr r2, [r6, #0] - 80488f6: 1a9b subs r3, r3, r2 - 80488f8: 42ab cmp r3, r5 - 80488fa: dc26 bgt.n 804894a <_printf_common+0x96> - 80488fc: f894 2043 ldrb.w r2, [r4, #67] ; 0x43 - 8048900: 1e13 subs r3, r2, #0 - 8048902: 6822 ldr r2, [r4, #0] - 8048904: bf18 it ne - 8048906: 2301 movne r3, #1 - 8048908: 0692 lsls r2, r2, #26 - 804890a: d42b bmi.n 8048964 <_printf_common+0xb0> - 804890c: f104 0243 add.w r2, r4, #67 ; 0x43 - 8048910: 4649 mov r1, r9 - 8048912: 4638 mov r0, r7 - 8048914: 47c0 blx r8 - 8048916: 3001 adds r0, #1 - 8048918: d01e beq.n 8048958 <_printf_common+0xa4> +08048694 <_vfiprintf_r>: + 8048694: e92d 4ff0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + 8048698: 460d mov r5, r1 + 804869a: b09d sub sp, #116 ; 0x74 + 804869c: 4614 mov r4, r2 + 804869e: 4698 mov r8, r3 + 80486a0: 4606 mov r6, r0 + 80486a2: b118 cbz r0, 80486ac <_vfiprintf_r+0x18> + 80486a4: 6983 ldr r3, [r0, #24] + 80486a6: b90b cbnz r3, 80486ac <_vfiprintf_r+0x18> + 80486a8: f7ff fdb0 bl 804820c <__sinit> + 80486ac: 4b89 ldr r3, [pc, #548] ; (80488d4 <_vfiprintf_r+0x240>) + 80486ae: 429d cmp r5, r3 + 80486b0: d11b bne.n 80486ea <_vfiprintf_r+0x56> + 80486b2: 6875 ldr r5, [r6, #4] + 80486b4: 6e6b ldr r3, [r5, #100] ; 0x64 + 80486b6: 07d9 lsls r1, r3, #31 + 80486b8: d405 bmi.n 80486c6 <_vfiprintf_r+0x32> + 80486ba: 89ab ldrh r3, [r5, #12] + 80486bc: 059a lsls r2, r3, #22 + 80486be: d402 bmi.n 80486c6 <_vfiprintf_r+0x32> + 80486c0: 6da8 ldr r0, [r5, #88] ; 0x58 + 80486c2: f7ff fe53 bl 804836c <__retarget_lock_acquire_recursive> + 80486c6: 89ab ldrh r3, [r5, #12] + 80486c8: 071b lsls r3, r3, #28 + 80486ca: d501 bpl.n 80486d0 <_vfiprintf_r+0x3c> + 80486cc: 692b ldr r3, [r5, #16] + 80486ce: b9eb cbnz r3, 804870c <_vfiprintf_r+0x78> + 80486d0: 4629 mov r1, r5 + 80486d2: 4630 mov r0, r6 + 80486d4: f000 fb4a bl 8048d6c <__swsetup_r> + 80486d8: b1c0 cbz r0, 804870c <_vfiprintf_r+0x78> + 80486da: 6e6b ldr r3, [r5, #100] ; 0x64 + 80486dc: 07dc lsls r4, r3, #31 + 80486de: d50e bpl.n 80486fe <_vfiprintf_r+0x6a> + 80486e0: f04f 30ff mov.w r0, #4294967295 + 80486e4: b01d add sp, #116 ; 0x74 + 80486e6: e8bd 8ff0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc} + 80486ea: 4b7b ldr r3, [pc, #492] ; (80488d8 <_vfiprintf_r+0x244>) + 80486ec: 429d cmp r5, r3 + 80486ee: d101 bne.n 80486f4 <_vfiprintf_r+0x60> + 80486f0: 68b5 ldr r5, [r6, #8] + 80486f2: e7df b.n 80486b4 <_vfiprintf_r+0x20> + 80486f4: 4b79 ldr r3, [pc, #484] ; (80488dc <_vfiprintf_r+0x248>) + 80486f6: 429d cmp r5, r3 + 80486f8: bf08 it eq + 80486fa: 68f5 ldreq r5, [r6, #12] + 80486fc: e7da b.n 80486b4 <_vfiprintf_r+0x20> + 80486fe: 89ab ldrh r3, [r5, #12] + 8048700: 0598 lsls r0, r3, #22 + 8048702: d4ed bmi.n 80486e0 <_vfiprintf_r+0x4c> + 8048704: 6da8 ldr r0, [r5, #88] ; 0x58 + 8048706: f7ff fe32 bl 804836e <__retarget_lock_release_recursive> + 804870a: e7e9 b.n 80486e0 <_vfiprintf_r+0x4c> + 804870c: 2300 movs r3, #0 + 804870e: 9309 str r3, [sp, #36] ; 0x24 + 8048710: 2320 movs r3, #32 + 8048712: f88d 3029 strb.w r3, [sp, #41] ; 0x29 + 8048716: f8cd 800c str.w r8, [sp, #12] + 804871a: 2330 movs r3, #48 ; 0x30 + 804871c: f8df 81c0 ldr.w r8, [pc, #448] ; 80488e0 <_vfiprintf_r+0x24c> + 8048720: f88d 302a strb.w r3, [sp, #42] ; 0x2a + 8048724: f04f 0901 mov.w r9, #1 + 8048728: 4623 mov r3, r4 + 804872a: 469a mov sl, r3 + 804872c: f813 2b01 ldrb.w r2, [r3], #1 + 8048730: b10a cbz r2, 8048736 <_vfiprintf_r+0xa2> + 8048732: 2a25 cmp r2, #37 ; 0x25 + 8048734: d1f9 bne.n 804872a <_vfiprintf_r+0x96> + 8048736: ebba 0b04 subs.w fp, sl, r4 + 804873a: d00b beq.n 8048754 <_vfiprintf_r+0xc0> + 804873c: 465b mov r3, fp + 804873e: 4622 mov r2, r4 + 8048740: 4629 mov r1, r5 + 8048742: 4630 mov r0, r6 + 8048744: f7ff ff93 bl 804866e <__sfputs_r> + 8048748: 3001 adds r0, #1 + 804874a: f000 80aa beq.w 80488a2 <_vfiprintf_r+0x20e> + 804874e: 9a09 ldr r2, [sp, #36] ; 0x24 + 8048750: 445a add r2, fp + 8048752: 9209 str r2, [sp, #36] ; 0x24 + 8048754: f89a 3000 ldrb.w r3, [sl] + 8048758: 2b00 cmp r3, #0 + 804875a: f000 80a2 beq.w 80488a2 <_vfiprintf_r+0x20e> + 804875e: 2300 movs r3, #0 + 8048760: f04f 32ff mov.w r2, #4294967295 + 8048764: e9cd 2305 strd r2, r3, [sp, #20] + 8048768: f10a 0a01 add.w sl, sl, #1 + 804876c: 9304 str r3, [sp, #16] + 804876e: 9307 str r3, [sp, #28] + 8048770: f88d 3053 strb.w r3, [sp, #83] ; 0x53 + 8048774: 931a str r3, [sp, #104] ; 0x68 + 8048776: 4654 mov r4, sl + 8048778: 2205 movs r2, #5 + 804877a: f814 1b01 ldrb.w r1, [r4], #1 + 804877e: 4858 ldr r0, [pc, #352] ; (80488e0 <_vfiprintf_r+0x24c>) + 8048780: f7d7 fdc6 bl 8020310 + 8048784: 9a04 ldr r2, [sp, #16] + 8048786: b9d8 cbnz r0, 80487c0 <_vfiprintf_r+0x12c> + 8048788: 06d1 lsls r1, r2, #27 + 804878a: bf44 itt mi + 804878c: 2320 movmi r3, #32 + 804878e: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 + 8048792: 0713 lsls r3, r2, #28 + 8048794: bf44 itt mi + 8048796: 232b movmi r3, #43 ; 0x2b + 8048798: f88d 3053 strbmi.w r3, [sp, #83] ; 0x53 + 804879c: f89a 3000 ldrb.w r3, [sl] + 80487a0: 2b2a cmp r3, #42 ; 0x2a + 80487a2: d015 beq.n 80487d0 <_vfiprintf_r+0x13c> + 80487a4: 9a07 ldr r2, [sp, #28] + 80487a6: 4654 mov r4, sl + 80487a8: 2000 movs r0, #0 + 80487aa: f04f 0c0a mov.w ip, #10 + 80487ae: 4621 mov r1, r4 + 80487b0: f811 3b01 ldrb.w r3, [r1], #1 + 80487b4: 3b30 subs r3, #48 ; 0x30 + 80487b6: 2b09 cmp r3, #9 + 80487b8: d94e bls.n 8048858 <_vfiprintf_r+0x1c4> + 80487ba: b1b0 cbz r0, 80487ea <_vfiprintf_r+0x156> + 80487bc: 9207 str r2, [sp, #28] + 80487be: e014 b.n 80487ea <_vfiprintf_r+0x156> + 80487c0: eba0 0308 sub.w r3, r0, r8 + 80487c4: fa09 f303 lsl.w r3, r9, r3 + 80487c8: 4313 orrs r3, r2 + 80487ca: 9304 str r3, [sp, #16] + 80487cc: 46a2 mov sl, r4 + 80487ce: e7d2 b.n 8048776 <_vfiprintf_r+0xe2> + 80487d0: 9b03 ldr r3, [sp, #12] + 80487d2: 1d19 adds r1, r3, #4 + 80487d4: 681b ldr r3, [r3, #0] + 80487d6: 9103 str r1, [sp, #12] + 80487d8: 2b00 cmp r3, #0 + 80487da: bfbb ittet lt + 80487dc: 425b neglt r3, r3 + 80487de: f042 0202 orrlt.w r2, r2, #2 + 80487e2: 9307 strge r3, [sp, #28] + 80487e4: 9307 strlt r3, [sp, #28] + 80487e6: bfb8 it lt + 80487e8: 9204 strlt r2, [sp, #16] + 80487ea: 7823 ldrb r3, [r4, #0] + 80487ec: 2b2e cmp r3, #46 ; 0x2e + 80487ee: d10c bne.n 804880a <_vfiprintf_r+0x176> + 80487f0: 7863 ldrb r3, [r4, #1] + 80487f2: 2b2a cmp r3, #42 ; 0x2a + 80487f4: d135 bne.n 8048862 <_vfiprintf_r+0x1ce> + 80487f6: 9b03 ldr r3, [sp, #12] + 80487f8: 1d1a adds r2, r3, #4 + 80487fa: 681b ldr r3, [r3, #0] + 80487fc: 9203 str r2, [sp, #12] + 80487fe: 2b00 cmp r3, #0 + 8048800: bfb8 it lt + 8048802: f04f 33ff movlt.w r3, #4294967295 + 8048806: 3402 adds r4, #2 + 8048808: 9305 str r3, [sp, #20] + 804880a: f8df a0e4 ldr.w sl, [pc, #228] ; 80488f0 <_vfiprintf_r+0x25c> + 804880e: 7821 ldrb r1, [r4, #0] + 8048810: 2203 movs r2, #3 + 8048812: 4650 mov r0, sl + 8048814: f7d7 fd7c bl 8020310 + 8048818: b140 cbz r0, 804882c <_vfiprintf_r+0x198> + 804881a: 2340 movs r3, #64 ; 0x40 + 804881c: eba0 000a sub.w r0, r0, sl + 8048820: fa03 f000 lsl.w r0, r3, r0 + 8048824: 9b04 ldr r3, [sp, #16] + 8048826: 4303 orrs r3, r0 + 8048828: 3401 adds r4, #1 + 804882a: 9304 str r3, [sp, #16] + 804882c: f814 1b01 ldrb.w r1, [r4], #1 + 8048830: 482c ldr r0, [pc, #176] ; (80488e4 <_vfiprintf_r+0x250>) + 8048832: f88d 1028 strb.w r1, [sp, #40] ; 0x28 + 8048836: 2206 movs r2, #6 + 8048838: f7d7 fd6a bl 8020310 + 804883c: 2800 cmp r0, #0 + 804883e: d03f beq.n 80488c0 <_vfiprintf_r+0x22c> + 8048840: 4b29 ldr r3, [pc, #164] ; (80488e8 <_vfiprintf_r+0x254>) + 8048842: bb1b cbnz r3, 804888c <_vfiprintf_r+0x1f8> + 8048844: 9b03 ldr r3, [sp, #12] + 8048846: 3307 adds r3, #7 + 8048848: f023 0307 bic.w r3, r3, #7 + 804884c: 3308 adds r3, #8 + 804884e: 9303 str r3, [sp, #12] + 8048850: 9b09 ldr r3, [sp, #36] ; 0x24 + 8048852: 443b add r3, r7 + 8048854: 9309 str r3, [sp, #36] ; 0x24 + 8048856: e767 b.n 8048728 <_vfiprintf_r+0x94> + 8048858: fb0c 3202 mla r2, ip, r2, r3 + 804885c: 460c mov r4, r1 + 804885e: 2001 movs r0, #1 + 8048860: e7a5 b.n 80487ae <_vfiprintf_r+0x11a> + 8048862: 2300 movs r3, #0 + 8048864: 3401 adds r4, #1 + 8048866: 9305 str r3, [sp, #20] + 8048868: 4619 mov r1, r3 + 804886a: f04f 0c0a mov.w ip, #10 + 804886e: 4620 mov r0, r4 + 8048870: f810 2b01 ldrb.w r2, [r0], #1 + 8048874: 3a30 subs r2, #48 ; 0x30 + 8048876: 2a09 cmp r2, #9 + 8048878: d903 bls.n 8048882 <_vfiprintf_r+0x1ee> + 804887a: 2b00 cmp r3, #0 + 804887c: d0c5 beq.n 804880a <_vfiprintf_r+0x176> + 804887e: 9105 str r1, [sp, #20] + 8048880: e7c3 b.n 804880a <_vfiprintf_r+0x176> + 8048882: fb0c 2101 mla r1, ip, r1, r2 + 8048886: 4604 mov r4, r0 + 8048888: 2301 movs r3, #1 + 804888a: e7f0 b.n 804886e <_vfiprintf_r+0x1da> + 804888c: ab03 add r3, sp, #12 + 804888e: 9300 str r3, [sp, #0] + 8048890: 462a mov r2, r5 + 8048892: 4b16 ldr r3, [pc, #88] ; (80488ec <_vfiprintf_r+0x258>) + 8048894: a904 add r1, sp, #16 + 8048896: 4630 mov r0, r6 + 8048898: f3af 8000 nop.w + 804889c: 4607 mov r7, r0 + 804889e: 1c78 adds r0, r7, #1 + 80488a0: d1d6 bne.n 8048850 <_vfiprintf_r+0x1bc> + 80488a2: 6e6b ldr r3, [r5, #100] ; 0x64 + 80488a4: 07d9 lsls r1, r3, #31 + 80488a6: d405 bmi.n 80488b4 <_vfiprintf_r+0x220> + 80488a8: 89ab ldrh r3, [r5, #12] + 80488aa: 059a lsls r2, r3, #22 + 80488ac: d402 bmi.n 80488b4 <_vfiprintf_r+0x220> + 80488ae: 6da8 ldr r0, [r5, #88] ; 0x58 + 80488b0: f7ff fd5d bl 804836e <__retarget_lock_release_recursive> + 80488b4: 89ab ldrh r3, [r5, #12] + 80488b6: 065b lsls r3, r3, #25 + 80488b8: f53f af12 bmi.w 80486e0 <_vfiprintf_r+0x4c> + 80488bc: 9809 ldr r0, [sp, #36] ; 0x24 + 80488be: e711 b.n 80486e4 <_vfiprintf_r+0x50> + 80488c0: ab03 add r3, sp, #12 + 80488c2: 9300 str r3, [sp, #0] + 80488c4: 462a mov r2, r5 + 80488c6: 4b09 ldr r3, [pc, #36] ; (80488ec <_vfiprintf_r+0x258>) + 80488c8: a904 add r1, sp, #16 + 80488ca: 4630 mov r0, r6 + 80488cc: f000 f880 bl 80489d0 <_printf_i> + 80488d0: e7e4 b.n 804889c <_vfiprintf_r+0x208> + 80488d2: bf00 nop + 80488d4: 0804d5b0 .word 0x0804d5b0 + 80488d8: 0804d5d0 .word 0x0804d5d0 + 80488dc: 0804d590 .word 0x0804d590 + 80488e0: 0804d5f0 .word 0x0804d5f0 + 80488e4: 0804d5fa .word 0x0804d5fa + 80488e8: 00000000 .word 0x00000000 + 80488ec: 0804866f .word 0x0804866f + 80488f0: 0804d5f6 .word 0x0804d5f6 + +080488f4 <_printf_common>: + 80488f4: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr} + 80488f8: 4616 mov r6, r2 + 80488fa: 4699 mov r9, r3 + 80488fc: 688a ldr r2, [r1, #8] + 80488fe: 690b ldr r3, [r1, #16] + 8048900: f8dd 8020 ldr.w r8, [sp, #32] + 8048904: 4293 cmp r3, r2 + 8048906: bfb8 it lt + 8048908: 4613 movlt r3, r2 + 804890a: 6033 str r3, [r6, #0] + 804890c: f891 2043 ldrb.w r2, [r1, #67] ; 0x43 + 8048910: 4607 mov r7, r0 + 8048912: 460c mov r4, r1 + 8048914: b10a cbz r2, 804891a <_printf_common+0x26> + 8048916: 3301 adds r3, #1 + 8048918: 6033 str r3, [r6, #0] 804891a: 6823 ldr r3, [r4, #0] - 804891c: 68e5 ldr r5, [r4, #12] - 804891e: 6832 ldr r2, [r6, #0] - 8048920: f003 0306 and.w r3, r3, #6 - 8048924: 2b04 cmp r3, #4 - 8048926: bf08 it eq - 8048928: 1aad subeq r5, r5, r2 - 804892a: 68a3 ldr r3, [r4, #8] - 804892c: 6922 ldr r2, [r4, #16] - 804892e: bf0c ite eq - 8048930: ea25 75e5 biceq.w r5, r5, r5, asr #31 - 8048934: 2500 movne r5, #0 - 8048936: 4293 cmp r3, r2 - 8048938: bfc4 itt gt - 804893a: 1a9b subgt r3, r3, r2 - 804893c: 18ed addgt r5, r5, r3 - 804893e: 2600 movs r6, #0 - 8048940: 341a adds r4, #26 - 8048942: 42b5 cmp r5, r6 - 8048944: d11a bne.n 804897c <_printf_common+0xc8> - 8048946: 2000 movs r0, #0 - 8048948: e008 b.n 804895c <_printf_common+0xa8> - 804894a: 2301 movs r3, #1 - 804894c: 4652 mov r2, sl - 804894e: 4649 mov r1, r9 - 8048950: 4638 mov r0, r7 - 8048952: 47c0 blx r8 - 8048954: 3001 adds r0, #1 - 8048956: d103 bne.n 8048960 <_printf_common+0xac> - 8048958: f04f 30ff mov.w r0, #4294967295 - 804895c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8048960: 3501 adds r5, #1 - 8048962: e7c6 b.n 80488f2 <_printf_common+0x3e> - 8048964: 18e1 adds r1, r4, r3 - 8048966: 1c5a adds r2, r3, #1 - 8048968: 2030 movs r0, #48 ; 0x30 - 804896a: f881 0043 strb.w r0, [r1, #67] ; 0x43 - 804896e: 4422 add r2, r4 - 8048970: f894 1045 ldrb.w r1, [r4, #69] ; 0x45 - 8048974: f882 1043 strb.w r1, [r2, #67] ; 0x43 - 8048978: 3302 adds r3, #2 - 804897a: e7c7 b.n 804890c <_printf_common+0x58> - 804897c: 2301 movs r3, #1 - 804897e: 4622 mov r2, r4 - 8048980: 4649 mov r1, r9 - 8048982: 4638 mov r0, r7 - 8048984: 47c0 blx r8 - 8048986: 3001 adds r0, #1 - 8048988: d0e6 beq.n 8048958 <_printf_common+0xa4> - 804898a: 3601 adds r6, #1 - 804898c: e7d9 b.n 8048942 <_printf_common+0x8e> + 804891c: 0699 lsls r1, r3, #26 + 804891e: bf42 ittt mi + 8048920: 6833 ldrmi r3, [r6, #0] + 8048922: 3302 addmi r3, #2 + 8048924: 6033 strmi r3, [r6, #0] + 8048926: 6825 ldr r5, [r4, #0] + 8048928: f015 0506 ands.w r5, r5, #6 + 804892c: d106 bne.n 804893c <_printf_common+0x48> + 804892e: f104 0a19 add.w sl, r4, #25 + 8048932: 68e3 ldr r3, [r4, #12] + 8048934: 6832 ldr r2, [r6, #0] + 8048936: 1a9b subs r3, r3, r2 + 8048938: 42ab cmp r3, r5 + 804893a: dc26 bgt.n 804898a <_printf_common+0x96> + 804893c: f894 2043 ldrb.w r2, [r4, #67] ; 0x43 + 8048940: 1e13 subs r3, r2, #0 + 8048942: 6822 ldr r2, [r4, #0] + 8048944: bf18 it ne + 8048946: 2301 movne r3, #1 + 8048948: 0692 lsls r2, r2, #26 + 804894a: d42b bmi.n 80489a4 <_printf_common+0xb0> + 804894c: f104 0243 add.w r2, r4, #67 ; 0x43 + 8048950: 4649 mov r1, r9 + 8048952: 4638 mov r0, r7 + 8048954: 47c0 blx r8 + 8048956: 3001 adds r0, #1 + 8048958: d01e beq.n 8048998 <_printf_common+0xa4> + 804895a: 6823 ldr r3, [r4, #0] + 804895c: 68e5 ldr r5, [r4, #12] + 804895e: 6832 ldr r2, [r6, #0] + 8048960: f003 0306 and.w r3, r3, #6 + 8048964: 2b04 cmp r3, #4 + 8048966: bf08 it eq + 8048968: 1aad subeq r5, r5, r2 + 804896a: 68a3 ldr r3, [r4, #8] + 804896c: 6922 ldr r2, [r4, #16] + 804896e: bf0c ite eq + 8048970: ea25 75e5 biceq.w r5, r5, r5, asr #31 + 8048974: 2500 movne r5, #0 + 8048976: 4293 cmp r3, r2 + 8048978: bfc4 itt gt + 804897a: 1a9b subgt r3, r3, r2 + 804897c: 18ed addgt r5, r5, r3 + 804897e: 2600 movs r6, #0 + 8048980: 341a adds r4, #26 + 8048982: 42b5 cmp r5, r6 + 8048984: d11a bne.n 80489bc <_printf_common+0xc8> + 8048986: 2000 movs r0, #0 + 8048988: e008 b.n 804899c <_printf_common+0xa8> + 804898a: 2301 movs r3, #1 + 804898c: 4652 mov r2, sl + 804898e: 4649 mov r1, r9 + 8048990: 4638 mov r0, r7 + 8048992: 47c0 blx r8 + 8048994: 3001 adds r0, #1 + 8048996: d103 bne.n 80489a0 <_printf_common+0xac> + 8048998: f04f 30ff mov.w r0, #4294967295 + 804899c: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 80489a0: 3501 adds r5, #1 + 80489a2: e7c6 b.n 8048932 <_printf_common+0x3e> + 80489a4: 18e1 adds r1, r4, r3 + 80489a6: 1c5a adds r2, r3, #1 + 80489a8: 2030 movs r0, #48 ; 0x30 + 80489aa: f881 0043 strb.w r0, [r1, #67] ; 0x43 + 80489ae: 4422 add r2, r4 + 80489b0: f894 1045 ldrb.w r1, [r4, #69] ; 0x45 + 80489b4: f882 1043 strb.w r1, [r2, #67] ; 0x43 + 80489b8: 3302 adds r3, #2 + 80489ba: e7c7 b.n 804894c <_printf_common+0x58> + 80489bc: 2301 movs r3, #1 + 80489be: 4622 mov r2, r4 + 80489c0: 4649 mov r1, r9 + 80489c2: 4638 mov r0, r7 + 80489c4: 47c0 blx r8 + 80489c6: 3001 adds r0, #1 + 80489c8: d0e6 beq.n 8048998 <_printf_common+0xa4> + 80489ca: 3601 adds r6, #1 + 80489cc: e7d9 b.n 8048982 <_printf_common+0x8e> ... -08048990 <_printf_i>: - 8048990: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} - 8048994: 7e0f ldrb r7, [r1, #24] - 8048996: 9d0c ldr r5, [sp, #48] ; 0x30 - 8048998: 2f78 cmp r7, #120 ; 0x78 - 804899a: 4691 mov r9, r2 - 804899c: 4680 mov r8, r0 - 804899e: 460c mov r4, r1 - 80489a0: 469a mov sl, r3 - 80489a2: f101 0243 add.w r2, r1, #67 ; 0x43 - 80489a6: d807 bhi.n 80489b8 <_printf_i+0x28> - 80489a8: 2f62 cmp r7, #98 ; 0x62 - 80489aa: d80a bhi.n 80489c2 <_printf_i+0x32> - 80489ac: 2f00 cmp r7, #0 - 80489ae: f000 80d8 beq.w 8048b62 <_printf_i+0x1d2> - 80489b2: 2f58 cmp r7, #88 ; 0x58 - 80489b4: f000 80a3 beq.w 8048afe <_printf_i+0x16e> - 80489b8: f104 0542 add.w r5, r4, #66 ; 0x42 - 80489bc: f884 7042 strb.w r7, [r4, #66] ; 0x42 - 80489c0: e03a b.n 8048a38 <_printf_i+0xa8> - 80489c2: f1a7 0363 sub.w r3, r7, #99 ; 0x63 - 80489c6: 2b15 cmp r3, #21 - 80489c8: d8f6 bhi.n 80489b8 <_printf_i+0x28> - 80489ca: a101 add r1, pc, #4 ; (adr r1, 80489d0 <_printf_i+0x40>) - 80489cc: f851 f023 ldr.w pc, [r1, r3, lsl #2] - 80489d0: 08048a29 .word 0x08048a29 - 80489d4: 08048a3d .word 0x08048a3d - 80489d8: 080489b9 .word 0x080489b9 - 80489dc: 080489b9 .word 0x080489b9 - 80489e0: 080489b9 .word 0x080489b9 - 80489e4: 080489b9 .word 0x080489b9 - 80489e8: 08048a3d .word 0x08048a3d - 80489ec: 080489b9 .word 0x080489b9 - 80489f0: 080489b9 .word 0x080489b9 - 80489f4: 080489b9 .word 0x080489b9 - 80489f8: 080489b9 .word 0x080489b9 - 80489fc: 08048b49 .word 0x08048b49 - 8048a00: 08048a6d .word 0x08048a6d - 8048a04: 08048b2b .word 0x08048b2b - 8048a08: 080489b9 .word 0x080489b9 - 8048a0c: 080489b9 .word 0x080489b9 - 8048a10: 08048b6b .word 0x08048b6b - 8048a14: 080489b9 .word 0x080489b9 - 8048a18: 08048a6d .word 0x08048a6d - 8048a1c: 080489b9 .word 0x080489b9 - 8048a20: 080489b9 .word 0x080489b9 - 8048a24: 08048b33 .word 0x08048b33 - 8048a28: 682b ldr r3, [r5, #0] - 8048a2a: 1d1a adds r2, r3, #4 - 8048a2c: 681b ldr r3, [r3, #0] - 8048a2e: 602a str r2, [r5, #0] - 8048a30: f104 0542 add.w r5, r4, #66 ; 0x42 - 8048a34: f884 3042 strb.w r3, [r4, #66] ; 0x42 - 8048a38: 2301 movs r3, #1 - 8048a3a: e0a3 b.n 8048b84 <_printf_i+0x1f4> - 8048a3c: 6820 ldr r0, [r4, #0] - 8048a3e: 6829 ldr r1, [r5, #0] - 8048a40: 0606 lsls r6, r0, #24 - 8048a42: f101 0304 add.w r3, r1, #4 - 8048a46: d50a bpl.n 8048a5e <_printf_i+0xce> - 8048a48: 680e ldr r6, [r1, #0] - 8048a4a: 602b str r3, [r5, #0] - 8048a4c: 2e00 cmp r6, #0 - 8048a4e: da03 bge.n 8048a58 <_printf_i+0xc8> - 8048a50: 232d movs r3, #45 ; 0x2d - 8048a52: 4276 negs r6, r6 - 8048a54: f884 3043 strb.w r3, [r4, #67] ; 0x43 - 8048a58: 485e ldr r0, [pc, #376] ; (8048bd4 <_printf_i+0x244>) - 8048a5a: 230a movs r3, #10 - 8048a5c: e019 b.n 8048a92 <_printf_i+0x102> - 8048a5e: 680e ldr r6, [r1, #0] - 8048a60: 602b str r3, [r5, #0] - 8048a62: f010 0f40 tst.w r0, #64 ; 0x40 - 8048a66: bf18 it ne - 8048a68: b236 sxthne r6, r6 - 8048a6a: e7ef b.n 8048a4c <_printf_i+0xbc> - 8048a6c: 682b ldr r3, [r5, #0] - 8048a6e: 6820 ldr r0, [r4, #0] - 8048a70: 1d19 adds r1, r3, #4 - 8048a72: 6029 str r1, [r5, #0] - 8048a74: 0601 lsls r1, r0, #24 - 8048a76: d501 bpl.n 8048a7c <_printf_i+0xec> - 8048a78: 681e ldr r6, [r3, #0] - 8048a7a: e002 b.n 8048a82 <_printf_i+0xf2> - 8048a7c: 0646 lsls r6, r0, #25 - 8048a7e: d5fb bpl.n 8048a78 <_printf_i+0xe8> - 8048a80: 881e ldrh r6, [r3, #0] - 8048a82: 4854 ldr r0, [pc, #336] ; (8048bd4 <_printf_i+0x244>) - 8048a84: 2f6f cmp r7, #111 ; 0x6f - 8048a86: bf0c ite eq - 8048a88: 2308 moveq r3, #8 - 8048a8a: 230a movne r3, #10 - 8048a8c: 2100 movs r1, #0 - 8048a8e: f884 1043 strb.w r1, [r4, #67] ; 0x43 - 8048a92: 6865 ldr r5, [r4, #4] - 8048a94: 60a5 str r5, [r4, #8] - 8048a96: 2d00 cmp r5, #0 - 8048a98: bfa2 ittt ge - 8048a9a: 6821 ldrge r1, [r4, #0] - 8048a9c: f021 0104 bicge.w r1, r1, #4 - 8048aa0: 6021 strge r1, [r4, #0] - 8048aa2: b90e cbnz r6, 8048aa8 <_printf_i+0x118> - 8048aa4: 2d00 cmp r5, #0 - 8048aa6: d04d beq.n 8048b44 <_printf_i+0x1b4> - 8048aa8: 4615 mov r5, r2 - 8048aaa: fbb6 f1f3 udiv r1, r6, r3 - 8048aae: fb03 6711 mls r7, r3, r1, r6 - 8048ab2: 5dc7 ldrb r7, [r0, r7] - 8048ab4: f805 7d01 strb.w r7, [r5, #-1]! - 8048ab8: 4637 mov r7, r6 - 8048aba: 42bb cmp r3, r7 - 8048abc: 460e mov r6, r1 - 8048abe: d9f4 bls.n 8048aaa <_printf_i+0x11a> - 8048ac0: 2b08 cmp r3, #8 - 8048ac2: d10b bne.n 8048adc <_printf_i+0x14c> - 8048ac4: 6823 ldr r3, [r4, #0] - 8048ac6: 07de lsls r6, r3, #31 - 8048ac8: d508 bpl.n 8048adc <_printf_i+0x14c> - 8048aca: 6923 ldr r3, [r4, #16] - 8048acc: 6861 ldr r1, [r4, #4] - 8048ace: 4299 cmp r1, r3 - 8048ad0: bfde ittt le - 8048ad2: 2330 movle r3, #48 ; 0x30 - 8048ad4: f805 3c01 strble.w r3, [r5, #-1] - 8048ad8: f105 35ff addle.w r5, r5, #4294967295 - 8048adc: 1b52 subs r2, r2, r5 - 8048ade: 6122 str r2, [r4, #16] - 8048ae0: f8cd a000 str.w sl, [sp] - 8048ae4: 464b mov r3, r9 - 8048ae6: aa03 add r2, sp, #12 - 8048ae8: 4621 mov r1, r4 - 8048aea: 4640 mov r0, r8 - 8048aec: f7ff fee2 bl 80488b4 <_printf_common> - 8048af0: 3001 adds r0, #1 - 8048af2: d14c bne.n 8048b8e <_printf_i+0x1fe> - 8048af4: f04f 30ff mov.w r0, #4294967295 - 8048af8: b004 add sp, #16 - 8048afa: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} - 8048afe: 4835 ldr r0, [pc, #212] ; (8048bd4 <_printf_i+0x244>) - 8048b00: f881 7045 strb.w r7, [r1, #69] ; 0x45 - 8048b04: 6829 ldr r1, [r5, #0] - 8048b06: 6823 ldr r3, [r4, #0] - 8048b08: f851 6b04 ldr.w r6, [r1], #4 - 8048b0c: 6029 str r1, [r5, #0] - 8048b0e: 061d lsls r5, r3, #24 - 8048b10: d514 bpl.n 8048b3c <_printf_i+0x1ac> - 8048b12: 07df lsls r7, r3, #31 - 8048b14: bf44 itt mi - 8048b16: f043 0320 orrmi.w r3, r3, #32 - 8048b1a: 6023 strmi r3, [r4, #0] - 8048b1c: b91e cbnz r6, 8048b26 <_printf_i+0x196> - 8048b1e: 6823 ldr r3, [r4, #0] - 8048b20: f023 0320 bic.w r3, r3, #32 - 8048b24: 6023 str r3, [r4, #0] - 8048b26: 2310 movs r3, #16 - 8048b28: e7b0 b.n 8048a8c <_printf_i+0xfc> - 8048b2a: 6823 ldr r3, [r4, #0] - 8048b2c: f043 0320 orr.w r3, r3, #32 - 8048b30: 6023 str r3, [r4, #0] - 8048b32: 2378 movs r3, #120 ; 0x78 - 8048b34: 4828 ldr r0, [pc, #160] ; (8048bd8 <_printf_i+0x248>) - 8048b36: f884 3045 strb.w r3, [r4, #69] ; 0x45 - 8048b3a: e7e3 b.n 8048b04 <_printf_i+0x174> - 8048b3c: 0659 lsls r1, r3, #25 - 8048b3e: bf48 it mi - 8048b40: b2b6 uxthmi r6, r6 - 8048b42: e7e6 b.n 8048b12 <_printf_i+0x182> - 8048b44: 4615 mov r5, r2 - 8048b46: e7bb b.n 8048ac0 <_printf_i+0x130> - 8048b48: 682b ldr r3, [r5, #0] - 8048b4a: 6826 ldr r6, [r4, #0] - 8048b4c: 6961 ldr r1, [r4, #20] - 8048b4e: 1d18 adds r0, r3, #4 - 8048b50: 6028 str r0, [r5, #0] - 8048b52: 0635 lsls r5, r6, #24 - 8048b54: 681b ldr r3, [r3, #0] - 8048b56: d501 bpl.n 8048b5c <_printf_i+0x1cc> - 8048b58: 6019 str r1, [r3, #0] - 8048b5a: e002 b.n 8048b62 <_printf_i+0x1d2> - 8048b5c: 0670 lsls r0, r6, #25 - 8048b5e: d5fb bpl.n 8048b58 <_printf_i+0x1c8> - 8048b60: 8019 strh r1, [r3, #0] - 8048b62: 2300 movs r3, #0 - 8048b64: 6123 str r3, [r4, #16] - 8048b66: 4615 mov r5, r2 - 8048b68: e7ba b.n 8048ae0 <_printf_i+0x150> - 8048b6a: 682b ldr r3, [r5, #0] - 8048b6c: 1d1a adds r2, r3, #4 - 8048b6e: 602a str r2, [r5, #0] - 8048b70: 681d ldr r5, [r3, #0] - 8048b72: 6862 ldr r2, [r4, #4] - 8048b74: 2100 movs r1, #0 - 8048b76: 4628 mov r0, r5 - 8048b78: f7d7 fbca bl 8020310 - 8048b7c: b108 cbz r0, 8048b82 <_printf_i+0x1f2> - 8048b7e: 1b40 subs r0, r0, r5 - 8048b80: 6060 str r0, [r4, #4] - 8048b82: 6863 ldr r3, [r4, #4] - 8048b84: 6123 str r3, [r4, #16] - 8048b86: 2300 movs r3, #0 - 8048b88: f884 3043 strb.w r3, [r4, #67] ; 0x43 - 8048b8c: e7a8 b.n 8048ae0 <_printf_i+0x150> - 8048b8e: 6923 ldr r3, [r4, #16] - 8048b90: 462a mov r2, r5 - 8048b92: 4649 mov r1, r9 - 8048b94: 4640 mov r0, r8 - 8048b96: 47d0 blx sl - 8048b98: 3001 adds r0, #1 - 8048b9a: d0ab beq.n 8048af4 <_printf_i+0x164> - 8048b9c: 6823 ldr r3, [r4, #0] - 8048b9e: 079b lsls r3, r3, #30 - 8048ba0: d413 bmi.n 8048bca <_printf_i+0x23a> - 8048ba2: 68e0 ldr r0, [r4, #12] - 8048ba4: 9b03 ldr r3, [sp, #12] - 8048ba6: 4298 cmp r0, r3 - 8048ba8: bfb8 it lt - 8048baa: 4618 movlt r0, r3 - 8048bac: e7a4 b.n 8048af8 <_printf_i+0x168> - 8048bae: 2301 movs r3, #1 - 8048bb0: 4632 mov r2, r6 - 8048bb2: 4649 mov r1, r9 - 8048bb4: 4640 mov r0, r8 - 8048bb6: 47d0 blx sl - 8048bb8: 3001 adds r0, #1 - 8048bba: d09b beq.n 8048af4 <_printf_i+0x164> - 8048bbc: 3501 adds r5, #1 - 8048bbe: 68e3 ldr r3, [r4, #12] - 8048bc0: 9903 ldr r1, [sp, #12] - 8048bc2: 1a5b subs r3, r3, r1 - 8048bc4: 42ab cmp r3, r5 - 8048bc6: dcf2 bgt.n 8048bae <_printf_i+0x21e> - 8048bc8: e7eb b.n 8048ba2 <_printf_i+0x212> - 8048bca: 2500 movs r5, #0 - 8048bcc: f104 0619 add.w r6, r4, #25 - 8048bd0: e7f5 b.n 8048bbe <_printf_i+0x22e> - 8048bd2: bf00 nop - 8048bd4: 0804d5c1 .word 0x0804d5c1 - 8048bd8: 0804d5d2 .word 0x0804d5d2 - -08048bdc <__sread>: - 8048bdc: b510 push {r4, lr} - 8048bde: 460c mov r4, r1 - 8048be0: f9b1 100e ldrsh.w r1, [r1, #14] - 8048be4: f000 fa92 bl 804910c <_read_r> - 8048be8: 2800 cmp r0, #0 - 8048bea: bfab itete ge - 8048bec: 6d63 ldrge r3, [r4, #84] ; 0x54 - 8048bee: 89a3 ldrhlt r3, [r4, #12] - 8048bf0: 181b addge r3, r3, r0 - 8048bf2: f423 5380 biclt.w r3, r3, #4096 ; 0x1000 - 8048bf6: bfac ite ge - 8048bf8: 6563 strge r3, [r4, #84] ; 0x54 - 8048bfa: 81a3 strhlt r3, [r4, #12] - 8048bfc: bd10 pop {r4, pc} - -08048bfe <__swrite>: - 8048bfe: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8048c02: 461f mov r7, r3 - 8048c04: 898b ldrh r3, [r1, #12] - 8048c06: 05db lsls r3, r3, #23 - 8048c08: 4605 mov r5, r0 - 8048c0a: 460c mov r4, r1 - 8048c0c: 4616 mov r6, r2 - 8048c0e: d505 bpl.n 8048c1c <__swrite+0x1e> - 8048c10: f9b1 100e ldrsh.w r1, [r1, #14] - 8048c14: 2302 movs r3, #2 - 8048c16: 2200 movs r2, #0 - 8048c18: f000 f9d0 bl 8048fbc <_lseek_r> - 8048c1c: 89a3 ldrh r3, [r4, #12] - 8048c1e: f9b4 100e ldrsh.w r1, [r4, #14] - 8048c22: f423 5380 bic.w r3, r3, #4096 ; 0x1000 - 8048c26: 81a3 strh r3, [r4, #12] - 8048c28: 4632 mov r2, r6 - 8048c2a: 463b mov r3, r7 - 8048c2c: 4628 mov r0, r5 - 8048c2e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 8048c32: f000 b869 b.w 8048d08 <_write_r> - -08048c36 <__sseek>: - 8048c36: b510 push {r4, lr} - 8048c38: 460c mov r4, r1 - 8048c3a: f9b1 100e ldrsh.w r1, [r1, #14] - 8048c3e: f000 f9bd bl 8048fbc <_lseek_r> - 8048c42: 1c43 adds r3, r0, #1 - 8048c44: 89a3 ldrh r3, [r4, #12] - 8048c46: bf15 itete ne - 8048c48: 6560 strne r0, [r4, #84] ; 0x54 - 8048c4a: f423 5380 biceq.w r3, r3, #4096 ; 0x1000 - 8048c4e: f443 5380 orrne.w r3, r3, #4096 ; 0x1000 - 8048c52: 81a3 strheq r3, [r4, #12] - 8048c54: bf18 it ne - 8048c56: 81a3 strhne r3, [r4, #12] - 8048c58: bd10 pop {r4, pc} - -08048c5a <__sclose>: - 8048c5a: f9b1 100e ldrsh.w r1, [r1, #14] - 8048c5e: f000 b8db b.w 8048e18 <_close_r> +080489d0 <_printf_i>: + 80489d0: e92d 47ff stmdb sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, lr} + 80489d4: 7e0f ldrb r7, [r1, #24] + 80489d6: 9d0c ldr r5, [sp, #48] ; 0x30 + 80489d8: 2f78 cmp r7, #120 ; 0x78 + 80489da: 4691 mov r9, r2 + 80489dc: 4680 mov r8, r0 + 80489de: 460c mov r4, r1 + 80489e0: 469a mov sl, r3 + 80489e2: f101 0243 add.w r2, r1, #67 ; 0x43 + 80489e6: d807 bhi.n 80489f8 <_printf_i+0x28> + 80489e8: 2f62 cmp r7, #98 ; 0x62 + 80489ea: d80a bhi.n 8048a02 <_printf_i+0x32> + 80489ec: 2f00 cmp r7, #0 + 80489ee: f000 80d8 beq.w 8048ba2 <_printf_i+0x1d2> + 80489f2: 2f58 cmp r7, #88 ; 0x58 + 80489f4: f000 80a3 beq.w 8048b3e <_printf_i+0x16e> + 80489f8: f104 0542 add.w r5, r4, #66 ; 0x42 + 80489fc: f884 7042 strb.w r7, [r4, #66] ; 0x42 + 8048a00: e03a b.n 8048a78 <_printf_i+0xa8> + 8048a02: f1a7 0363 sub.w r3, r7, #99 ; 0x63 + 8048a06: 2b15 cmp r3, #21 + 8048a08: d8f6 bhi.n 80489f8 <_printf_i+0x28> + 8048a0a: a101 add r1, pc, #4 ; (adr r1, 8048a10 <_printf_i+0x40>) + 8048a0c: f851 f023 ldr.w pc, [r1, r3, lsl #2] + 8048a10: 08048a69 .word 0x08048a69 + 8048a14: 08048a7d .word 0x08048a7d + 8048a18: 080489f9 .word 0x080489f9 + 8048a1c: 080489f9 .word 0x080489f9 + 8048a20: 080489f9 .word 0x080489f9 + 8048a24: 080489f9 .word 0x080489f9 + 8048a28: 08048a7d .word 0x08048a7d + 8048a2c: 080489f9 .word 0x080489f9 + 8048a30: 080489f9 .word 0x080489f9 + 8048a34: 080489f9 .word 0x080489f9 + 8048a38: 080489f9 .word 0x080489f9 + 8048a3c: 08048b89 .word 0x08048b89 + 8048a40: 08048aad .word 0x08048aad + 8048a44: 08048b6b .word 0x08048b6b + 8048a48: 080489f9 .word 0x080489f9 + 8048a4c: 080489f9 .word 0x080489f9 + 8048a50: 08048bab .word 0x08048bab + 8048a54: 080489f9 .word 0x080489f9 + 8048a58: 08048aad .word 0x08048aad + 8048a5c: 080489f9 .word 0x080489f9 + 8048a60: 080489f9 .word 0x080489f9 + 8048a64: 08048b73 .word 0x08048b73 + 8048a68: 682b ldr r3, [r5, #0] + 8048a6a: 1d1a adds r2, r3, #4 + 8048a6c: 681b ldr r3, [r3, #0] + 8048a6e: 602a str r2, [r5, #0] + 8048a70: f104 0542 add.w r5, r4, #66 ; 0x42 + 8048a74: f884 3042 strb.w r3, [r4, #66] ; 0x42 + 8048a78: 2301 movs r3, #1 + 8048a7a: e0a3 b.n 8048bc4 <_printf_i+0x1f4> + 8048a7c: 6820 ldr r0, [r4, #0] + 8048a7e: 6829 ldr r1, [r5, #0] + 8048a80: 0606 lsls r6, r0, #24 + 8048a82: f101 0304 add.w r3, r1, #4 + 8048a86: d50a bpl.n 8048a9e <_printf_i+0xce> + 8048a88: 680e ldr r6, [r1, #0] + 8048a8a: 602b str r3, [r5, #0] + 8048a8c: 2e00 cmp r6, #0 + 8048a8e: da03 bge.n 8048a98 <_printf_i+0xc8> + 8048a90: 232d movs r3, #45 ; 0x2d + 8048a92: 4276 negs r6, r6 + 8048a94: f884 3043 strb.w r3, [r4, #67] ; 0x43 + 8048a98: 485e ldr r0, [pc, #376] ; (8048c14 <_printf_i+0x244>) + 8048a9a: 230a movs r3, #10 + 8048a9c: e019 b.n 8048ad2 <_printf_i+0x102> + 8048a9e: 680e ldr r6, [r1, #0] + 8048aa0: 602b str r3, [r5, #0] + 8048aa2: f010 0f40 tst.w r0, #64 ; 0x40 + 8048aa6: bf18 it ne + 8048aa8: b236 sxthne r6, r6 + 8048aaa: e7ef b.n 8048a8c <_printf_i+0xbc> + 8048aac: 682b ldr r3, [r5, #0] + 8048aae: 6820 ldr r0, [r4, #0] + 8048ab0: 1d19 adds r1, r3, #4 + 8048ab2: 6029 str r1, [r5, #0] + 8048ab4: 0601 lsls r1, r0, #24 + 8048ab6: d501 bpl.n 8048abc <_printf_i+0xec> + 8048ab8: 681e ldr r6, [r3, #0] + 8048aba: e002 b.n 8048ac2 <_printf_i+0xf2> + 8048abc: 0646 lsls r6, r0, #25 + 8048abe: d5fb bpl.n 8048ab8 <_printf_i+0xe8> + 8048ac0: 881e ldrh r6, [r3, #0] + 8048ac2: 4854 ldr r0, [pc, #336] ; (8048c14 <_printf_i+0x244>) + 8048ac4: 2f6f cmp r7, #111 ; 0x6f + 8048ac6: bf0c ite eq + 8048ac8: 2308 moveq r3, #8 + 8048aca: 230a movne r3, #10 + 8048acc: 2100 movs r1, #0 + 8048ace: f884 1043 strb.w r1, [r4, #67] ; 0x43 + 8048ad2: 6865 ldr r5, [r4, #4] + 8048ad4: 60a5 str r5, [r4, #8] + 8048ad6: 2d00 cmp r5, #0 + 8048ad8: bfa2 ittt ge + 8048ada: 6821 ldrge r1, [r4, #0] + 8048adc: f021 0104 bicge.w r1, r1, #4 + 8048ae0: 6021 strge r1, [r4, #0] + 8048ae2: b90e cbnz r6, 8048ae8 <_printf_i+0x118> + 8048ae4: 2d00 cmp r5, #0 + 8048ae6: d04d beq.n 8048b84 <_printf_i+0x1b4> + 8048ae8: 4615 mov r5, r2 + 8048aea: fbb6 f1f3 udiv r1, r6, r3 + 8048aee: fb03 6711 mls r7, r3, r1, r6 + 8048af2: 5dc7 ldrb r7, [r0, r7] + 8048af4: f805 7d01 strb.w r7, [r5, #-1]! + 8048af8: 4637 mov r7, r6 + 8048afa: 42bb cmp r3, r7 + 8048afc: 460e mov r6, r1 + 8048afe: d9f4 bls.n 8048aea <_printf_i+0x11a> + 8048b00: 2b08 cmp r3, #8 + 8048b02: d10b bne.n 8048b1c <_printf_i+0x14c> + 8048b04: 6823 ldr r3, [r4, #0] + 8048b06: 07de lsls r6, r3, #31 + 8048b08: d508 bpl.n 8048b1c <_printf_i+0x14c> + 8048b0a: 6923 ldr r3, [r4, #16] + 8048b0c: 6861 ldr r1, [r4, #4] + 8048b0e: 4299 cmp r1, r3 + 8048b10: bfde ittt le + 8048b12: 2330 movle r3, #48 ; 0x30 + 8048b14: f805 3c01 strble.w r3, [r5, #-1] + 8048b18: f105 35ff addle.w r5, r5, #4294967295 + 8048b1c: 1b52 subs r2, r2, r5 + 8048b1e: 6122 str r2, [r4, #16] + 8048b20: f8cd a000 str.w sl, [sp] + 8048b24: 464b mov r3, r9 + 8048b26: aa03 add r2, sp, #12 + 8048b28: 4621 mov r1, r4 + 8048b2a: 4640 mov r0, r8 + 8048b2c: f7ff fee2 bl 80488f4 <_printf_common> + 8048b30: 3001 adds r0, #1 + 8048b32: d14c bne.n 8048bce <_printf_i+0x1fe> + 8048b34: f04f 30ff mov.w r0, #4294967295 + 8048b38: b004 add sp, #16 + 8048b3a: e8bd 87f0 ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, pc} + 8048b3e: 4835 ldr r0, [pc, #212] ; (8048c14 <_printf_i+0x244>) + 8048b40: f881 7045 strb.w r7, [r1, #69] ; 0x45 + 8048b44: 6829 ldr r1, [r5, #0] + 8048b46: 6823 ldr r3, [r4, #0] + 8048b48: f851 6b04 ldr.w r6, [r1], #4 + 8048b4c: 6029 str r1, [r5, #0] + 8048b4e: 061d lsls r5, r3, #24 + 8048b50: d514 bpl.n 8048b7c <_printf_i+0x1ac> + 8048b52: 07df lsls r7, r3, #31 + 8048b54: bf44 itt mi + 8048b56: f043 0320 orrmi.w r3, r3, #32 + 8048b5a: 6023 strmi r3, [r4, #0] + 8048b5c: b91e cbnz r6, 8048b66 <_printf_i+0x196> + 8048b5e: 6823 ldr r3, [r4, #0] + 8048b60: f023 0320 bic.w r3, r3, #32 + 8048b64: 6023 str r3, [r4, #0] + 8048b66: 2310 movs r3, #16 + 8048b68: e7b0 b.n 8048acc <_printf_i+0xfc> + 8048b6a: 6823 ldr r3, [r4, #0] + 8048b6c: f043 0320 orr.w r3, r3, #32 + 8048b70: 6023 str r3, [r4, #0] + 8048b72: 2378 movs r3, #120 ; 0x78 + 8048b74: 4828 ldr r0, [pc, #160] ; (8048c18 <_printf_i+0x248>) + 8048b76: f884 3045 strb.w r3, [r4, #69] ; 0x45 + 8048b7a: e7e3 b.n 8048b44 <_printf_i+0x174> + 8048b7c: 0659 lsls r1, r3, #25 + 8048b7e: bf48 it mi + 8048b80: b2b6 uxthmi r6, r6 + 8048b82: e7e6 b.n 8048b52 <_printf_i+0x182> + 8048b84: 4615 mov r5, r2 + 8048b86: e7bb b.n 8048b00 <_printf_i+0x130> + 8048b88: 682b ldr r3, [r5, #0] + 8048b8a: 6826 ldr r6, [r4, #0] + 8048b8c: 6961 ldr r1, [r4, #20] + 8048b8e: 1d18 adds r0, r3, #4 + 8048b90: 6028 str r0, [r5, #0] + 8048b92: 0635 lsls r5, r6, #24 + 8048b94: 681b ldr r3, [r3, #0] + 8048b96: d501 bpl.n 8048b9c <_printf_i+0x1cc> + 8048b98: 6019 str r1, [r3, #0] + 8048b9a: e002 b.n 8048ba2 <_printf_i+0x1d2> + 8048b9c: 0670 lsls r0, r6, #25 + 8048b9e: d5fb bpl.n 8048b98 <_printf_i+0x1c8> + 8048ba0: 8019 strh r1, [r3, #0] + 8048ba2: 2300 movs r3, #0 + 8048ba4: 6123 str r3, [r4, #16] + 8048ba6: 4615 mov r5, r2 + 8048ba8: e7ba b.n 8048b20 <_printf_i+0x150> + 8048baa: 682b ldr r3, [r5, #0] + 8048bac: 1d1a adds r2, r3, #4 + 8048bae: 602a str r2, [r5, #0] + 8048bb0: 681d ldr r5, [r3, #0] + 8048bb2: 6862 ldr r2, [r4, #4] + 8048bb4: 2100 movs r1, #0 + 8048bb6: 4628 mov r0, r5 + 8048bb8: f7d7 fbaa bl 8020310 + 8048bbc: b108 cbz r0, 8048bc2 <_printf_i+0x1f2> + 8048bbe: 1b40 subs r0, r0, r5 + 8048bc0: 6060 str r0, [r4, #4] + 8048bc2: 6863 ldr r3, [r4, #4] + 8048bc4: 6123 str r3, [r4, #16] + 8048bc6: 2300 movs r3, #0 + 8048bc8: f884 3043 strb.w r3, [r4, #67] ; 0x43 + 8048bcc: e7a8 b.n 8048b20 <_printf_i+0x150> + 8048bce: 6923 ldr r3, [r4, #16] + 8048bd0: 462a mov r2, r5 + 8048bd2: 4649 mov r1, r9 + 8048bd4: 4640 mov r0, r8 + 8048bd6: 47d0 blx sl + 8048bd8: 3001 adds r0, #1 + 8048bda: d0ab beq.n 8048b34 <_printf_i+0x164> + 8048bdc: 6823 ldr r3, [r4, #0] + 8048bde: 079b lsls r3, r3, #30 + 8048be0: d413 bmi.n 8048c0a <_printf_i+0x23a> + 8048be2: 68e0 ldr r0, [r4, #12] + 8048be4: 9b03 ldr r3, [sp, #12] + 8048be6: 4298 cmp r0, r3 + 8048be8: bfb8 it lt + 8048bea: 4618 movlt r0, r3 + 8048bec: e7a4 b.n 8048b38 <_printf_i+0x168> + 8048bee: 2301 movs r3, #1 + 8048bf0: 4632 mov r2, r6 + 8048bf2: 4649 mov r1, r9 + 8048bf4: 4640 mov r0, r8 + 8048bf6: 47d0 blx sl + 8048bf8: 3001 adds r0, #1 + 8048bfa: d09b beq.n 8048b34 <_printf_i+0x164> + 8048bfc: 3501 adds r5, #1 + 8048bfe: 68e3 ldr r3, [r4, #12] + 8048c00: 9903 ldr r1, [sp, #12] + 8048c02: 1a5b subs r3, r3, r1 + 8048c04: 42ab cmp r3, r5 + 8048c06: dcf2 bgt.n 8048bee <_printf_i+0x21e> + 8048c08: e7eb b.n 8048be2 <_printf_i+0x212> + 8048c0a: 2500 movs r5, #0 + 8048c0c: f104 0619 add.w r6, r4, #25 + 8048c10: e7f5 b.n 8048bfe <_printf_i+0x22e> + 8048c12: bf00 nop + 8048c14: 0804d601 .word 0x0804d601 + 8048c18: 0804d612 .word 0x0804d612 + +08048c1c <__sread>: + 8048c1c: b510 push {r4, lr} + 8048c1e: 460c mov r4, r1 + 8048c20: f9b1 100e ldrsh.w r1, [r1, #14] + 8048c24: f000 fa92 bl 804914c <_read_r> + 8048c28: 2800 cmp r0, #0 + 8048c2a: bfab itete ge + 8048c2c: 6d63 ldrge r3, [r4, #84] ; 0x54 + 8048c2e: 89a3 ldrhlt r3, [r4, #12] + 8048c30: 181b addge r3, r3, r0 + 8048c32: f423 5380 biclt.w r3, r3, #4096 ; 0x1000 + 8048c36: bfac ite ge + 8048c38: 6563 strge r3, [r4, #84] ; 0x54 + 8048c3a: 81a3 strhlt r3, [r4, #12] + 8048c3c: bd10 pop {r4, pc} + +08048c3e <__swrite>: + 8048c3e: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8048c42: 461f mov r7, r3 + 8048c44: 898b ldrh r3, [r1, #12] + 8048c46: 05db lsls r3, r3, #23 + 8048c48: 4605 mov r5, r0 + 8048c4a: 460c mov r4, r1 + 8048c4c: 4616 mov r6, r2 + 8048c4e: d505 bpl.n 8048c5c <__swrite+0x1e> + 8048c50: f9b1 100e ldrsh.w r1, [r1, #14] + 8048c54: 2302 movs r3, #2 + 8048c56: 2200 movs r2, #0 + 8048c58: f000 f9d0 bl 8048ffc <_lseek_r> + 8048c5c: 89a3 ldrh r3, [r4, #12] + 8048c5e: f9b4 100e ldrsh.w r1, [r4, #14] + 8048c62: f423 5380 bic.w r3, r3, #4096 ; 0x1000 + 8048c66: 81a3 strh r3, [r4, #12] + 8048c68: 4632 mov r2, r6 + 8048c6a: 463b mov r3, r7 + 8048c6c: 4628 mov r0, r5 + 8048c6e: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 8048c72: f000 b869 b.w 8048d48 <_write_r> + +08048c76 <__sseek>: + 8048c76: b510 push {r4, lr} + 8048c78: 460c mov r4, r1 + 8048c7a: f9b1 100e ldrsh.w r1, [r1, #14] + 8048c7e: f000 f9bd bl 8048ffc <_lseek_r> + 8048c82: 1c43 adds r3, r0, #1 + 8048c84: 89a3 ldrh r3, [r4, #12] + 8048c86: bf15 itete ne + 8048c88: 6560 strne r0, [r4, #84] ; 0x54 + 8048c8a: f423 5380 biceq.w r3, r3, #4096 ; 0x1000 + 8048c8e: f443 5380 orrne.w r3, r3, #4096 ; 0x1000 + 8048c92: 81a3 strheq r3, [r4, #12] + 8048c94: bf18 it ne + 8048c96: 81a3 strhne r3, [r4, #12] + 8048c98: bd10 pop {r4, pc} + +08048c9a <__sclose>: + 8048c9a: f9b1 100e ldrsh.w r1, [r1, #14] + 8048c9e: f000 b8db b.w 8048e58 <_close_r> ... -08048c64 <__swbuf_r>: - 8048c64: b5f8 push {r3, r4, r5, r6, r7, lr} - 8048c66: 460e mov r6, r1 - 8048c68: 4614 mov r4, r2 - 8048c6a: 4605 mov r5, r0 - 8048c6c: b118 cbz r0, 8048c76 <__swbuf_r+0x12> - 8048c6e: 6983 ldr r3, [r0, #24] - 8048c70: b90b cbnz r3, 8048c76 <__swbuf_r+0x12> - 8048c72: f7ff faab bl 80481cc <__sinit> - 8048c76: 4b21 ldr r3, [pc, #132] ; (8048cfc <__swbuf_r+0x98>) - 8048c78: 429c cmp r4, r3 - 8048c7a: d12b bne.n 8048cd4 <__swbuf_r+0x70> - 8048c7c: 686c ldr r4, [r5, #4] - 8048c7e: 69a3 ldr r3, [r4, #24] - 8048c80: 60a3 str r3, [r4, #8] - 8048c82: 89a3 ldrh r3, [r4, #12] - 8048c84: 071a lsls r2, r3, #28 - 8048c86: d52f bpl.n 8048ce8 <__swbuf_r+0x84> - 8048c88: 6923 ldr r3, [r4, #16] - 8048c8a: b36b cbz r3, 8048ce8 <__swbuf_r+0x84> - 8048c8c: 6923 ldr r3, [r4, #16] - 8048c8e: 6820 ldr r0, [r4, #0] - 8048c90: 1ac0 subs r0, r0, r3 - 8048c92: 6963 ldr r3, [r4, #20] - 8048c94: b2f6 uxtb r6, r6 - 8048c96: 4283 cmp r3, r0 - 8048c98: 4637 mov r7, r6 - 8048c9a: dc04 bgt.n 8048ca6 <__swbuf_r+0x42> - 8048c9c: 4621 mov r1, r4 - 8048c9e: 4628 mov r0, r5 - 8048ca0: f000 f950 bl 8048f44 <_fflush_r> - 8048ca4: bb30 cbnz r0, 8048cf4 <__swbuf_r+0x90> - 8048ca6: 68a3 ldr r3, [r4, #8] - 8048ca8: 3b01 subs r3, #1 - 8048caa: 60a3 str r3, [r4, #8] - 8048cac: 6823 ldr r3, [r4, #0] - 8048cae: 1c5a adds r2, r3, #1 - 8048cb0: 6022 str r2, [r4, #0] - 8048cb2: 701e strb r6, [r3, #0] - 8048cb4: 6963 ldr r3, [r4, #20] - 8048cb6: 3001 adds r0, #1 - 8048cb8: 4283 cmp r3, r0 - 8048cba: d004 beq.n 8048cc6 <__swbuf_r+0x62> - 8048cbc: 89a3 ldrh r3, [r4, #12] - 8048cbe: 07db lsls r3, r3, #31 - 8048cc0: d506 bpl.n 8048cd0 <__swbuf_r+0x6c> - 8048cc2: 2e0a cmp r6, #10 - 8048cc4: d104 bne.n 8048cd0 <__swbuf_r+0x6c> - 8048cc6: 4621 mov r1, r4 - 8048cc8: 4628 mov r0, r5 - 8048cca: f000 f93b bl 8048f44 <_fflush_r> - 8048cce: b988 cbnz r0, 8048cf4 <__swbuf_r+0x90> - 8048cd0: 4638 mov r0, r7 - 8048cd2: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8048cd4: 4b0a ldr r3, [pc, #40] ; (8048d00 <__swbuf_r+0x9c>) - 8048cd6: 429c cmp r4, r3 - 8048cd8: d101 bne.n 8048cde <__swbuf_r+0x7a> - 8048cda: 68ac ldr r4, [r5, #8] - 8048cdc: e7cf b.n 8048c7e <__swbuf_r+0x1a> - 8048cde: 4b09 ldr r3, [pc, #36] ; (8048d04 <__swbuf_r+0xa0>) - 8048ce0: 429c cmp r4, r3 - 8048ce2: bf08 it eq - 8048ce4: 68ec ldreq r4, [r5, #12] - 8048ce6: e7ca b.n 8048c7e <__swbuf_r+0x1a> - 8048ce8: 4621 mov r1, r4 - 8048cea: 4628 mov r0, r5 - 8048cec: f000 f81e bl 8048d2c <__swsetup_r> - 8048cf0: 2800 cmp r0, #0 - 8048cf2: d0cb beq.n 8048c8c <__swbuf_r+0x28> - 8048cf4: f04f 37ff mov.w r7, #4294967295 - 8048cf8: e7ea b.n 8048cd0 <__swbuf_r+0x6c> - 8048cfa: bf00 nop - 8048cfc: 0804d570 .word 0x0804d570 - 8048d00: 0804d590 .word 0x0804d590 - 8048d04: 0804d550 .word 0x0804d550 - -08048d08 <_write_r>: - 8048d08: b538 push {r3, r4, r5, lr} - 8048d0a: 4d07 ldr r5, [pc, #28] ; (8048d28 <_write_r+0x20>) - 8048d0c: 4604 mov r4, r0 - 8048d0e: 4608 mov r0, r1 - 8048d10: 4611 mov r1, r2 - 8048d12: 2200 movs r2, #0 - 8048d14: 602a str r2, [r5, #0] - 8048d16: 461a mov r2, r3 - 8048d18: f7e2 fc53 bl 802b5c2 <_write> - 8048d1c: 1c43 adds r3, r0, #1 - 8048d1e: d102 bne.n 8048d26 <_write_r+0x1e> - 8048d20: 682b ldr r3, [r5, #0] - 8048d22: b103 cbz r3, 8048d26 <_write_r+0x1e> - 8048d24: 6023 str r3, [r4, #0] - 8048d26: bd38 pop {r3, r4, r5, pc} - 8048d28: 2400ec4c .word 0x2400ec4c - -08048d2c <__swsetup_r>: - 8048d2c: 4b32 ldr r3, [pc, #200] ; (8048df8 <__swsetup_r+0xcc>) - 8048d2e: b570 push {r4, r5, r6, lr} - 8048d30: 681d ldr r5, [r3, #0] - 8048d32: 4606 mov r6, r0 - 8048d34: 460c mov r4, r1 - 8048d36: b125 cbz r5, 8048d42 <__swsetup_r+0x16> - 8048d38: 69ab ldr r3, [r5, #24] - 8048d3a: b913 cbnz r3, 8048d42 <__swsetup_r+0x16> - 8048d3c: 4628 mov r0, r5 - 8048d3e: f7ff fa45 bl 80481cc <__sinit> - 8048d42: 4b2e ldr r3, [pc, #184] ; (8048dfc <__swsetup_r+0xd0>) - 8048d44: 429c cmp r4, r3 - 8048d46: d10f bne.n 8048d68 <__swsetup_r+0x3c> - 8048d48: 686c ldr r4, [r5, #4] - 8048d4a: 89a3 ldrh r3, [r4, #12] - 8048d4c: f9b4 200c ldrsh.w r2, [r4, #12] - 8048d50: 0719 lsls r1, r3, #28 - 8048d52: d42c bmi.n 8048dae <__swsetup_r+0x82> - 8048d54: 06dd lsls r5, r3, #27 - 8048d56: d411 bmi.n 8048d7c <__swsetup_r+0x50> - 8048d58: 2309 movs r3, #9 - 8048d5a: 6033 str r3, [r6, #0] - 8048d5c: f042 0340 orr.w r3, r2, #64 ; 0x40 - 8048d60: 81a3 strh r3, [r4, #12] - 8048d62: f04f 30ff mov.w r0, #4294967295 - 8048d66: e03e b.n 8048de6 <__swsetup_r+0xba> - 8048d68: 4b25 ldr r3, [pc, #148] ; (8048e00 <__swsetup_r+0xd4>) - 8048d6a: 429c cmp r4, r3 - 8048d6c: d101 bne.n 8048d72 <__swsetup_r+0x46> - 8048d6e: 68ac ldr r4, [r5, #8] - 8048d70: e7eb b.n 8048d4a <__swsetup_r+0x1e> - 8048d72: 4b24 ldr r3, [pc, #144] ; (8048e04 <__swsetup_r+0xd8>) - 8048d74: 429c cmp r4, r3 - 8048d76: bf08 it eq - 8048d78: 68ec ldreq r4, [r5, #12] - 8048d7a: e7e6 b.n 8048d4a <__swsetup_r+0x1e> - 8048d7c: 0758 lsls r0, r3, #29 - 8048d7e: d512 bpl.n 8048da6 <__swsetup_r+0x7a> - 8048d80: 6b61 ldr r1, [r4, #52] ; 0x34 - 8048d82: b141 cbz r1, 8048d96 <__swsetup_r+0x6a> - 8048d84: f104 0344 add.w r3, r4, #68 ; 0x44 - 8048d88: 4299 cmp r1, r3 - 8048d8a: d002 beq.n 8048d92 <__swsetup_r+0x66> - 8048d8c: 4630 mov r0, r6 - 8048d8e: f7ff f829 bl 8047de4 <_free_r> - 8048d92: 2300 movs r3, #0 - 8048d94: 6363 str r3, [r4, #52] ; 0x34 - 8048d96: 89a3 ldrh r3, [r4, #12] - 8048d98: f023 0324 bic.w r3, r3, #36 ; 0x24 - 8048d9c: 81a3 strh r3, [r4, #12] - 8048d9e: 2300 movs r3, #0 - 8048da0: 6063 str r3, [r4, #4] - 8048da2: 6923 ldr r3, [r4, #16] - 8048da4: 6023 str r3, [r4, #0] - 8048da6: 89a3 ldrh r3, [r4, #12] - 8048da8: f043 0308 orr.w r3, r3, #8 - 8048dac: 81a3 strh r3, [r4, #12] - 8048dae: 6923 ldr r3, [r4, #16] - 8048db0: b94b cbnz r3, 8048dc6 <__swsetup_r+0x9a> - 8048db2: 89a3 ldrh r3, [r4, #12] - 8048db4: f403 7320 and.w r3, r3, #640 ; 0x280 - 8048db8: f5b3 7f00 cmp.w r3, #512 ; 0x200 - 8048dbc: d003 beq.n 8048dc6 <__swsetup_r+0x9a> - 8048dbe: 4621 mov r1, r4 - 8048dc0: 4630 mov r0, r6 - 8048dc2: f000 f933 bl 804902c <__smakebuf_r> - 8048dc6: 89a0 ldrh r0, [r4, #12] - 8048dc8: f9b4 200c ldrsh.w r2, [r4, #12] - 8048dcc: f010 0301 ands.w r3, r0, #1 - 8048dd0: d00a beq.n 8048de8 <__swsetup_r+0xbc> +08048ca4 <__swbuf_r>: + 8048ca4: b5f8 push {r3, r4, r5, r6, r7, lr} + 8048ca6: 460e mov r6, r1 + 8048ca8: 4614 mov r4, r2 + 8048caa: 4605 mov r5, r0 + 8048cac: b118 cbz r0, 8048cb6 <__swbuf_r+0x12> + 8048cae: 6983 ldr r3, [r0, #24] + 8048cb0: b90b cbnz r3, 8048cb6 <__swbuf_r+0x12> + 8048cb2: f7ff faab bl 804820c <__sinit> + 8048cb6: 4b21 ldr r3, [pc, #132] ; (8048d3c <__swbuf_r+0x98>) + 8048cb8: 429c cmp r4, r3 + 8048cba: d12b bne.n 8048d14 <__swbuf_r+0x70> + 8048cbc: 686c ldr r4, [r5, #4] + 8048cbe: 69a3 ldr r3, [r4, #24] + 8048cc0: 60a3 str r3, [r4, #8] + 8048cc2: 89a3 ldrh r3, [r4, #12] + 8048cc4: 071a lsls r2, r3, #28 + 8048cc6: d52f bpl.n 8048d28 <__swbuf_r+0x84> + 8048cc8: 6923 ldr r3, [r4, #16] + 8048cca: b36b cbz r3, 8048d28 <__swbuf_r+0x84> + 8048ccc: 6923 ldr r3, [r4, #16] + 8048cce: 6820 ldr r0, [r4, #0] + 8048cd0: 1ac0 subs r0, r0, r3 + 8048cd2: 6963 ldr r3, [r4, #20] + 8048cd4: b2f6 uxtb r6, r6 + 8048cd6: 4283 cmp r3, r0 + 8048cd8: 4637 mov r7, r6 + 8048cda: dc04 bgt.n 8048ce6 <__swbuf_r+0x42> + 8048cdc: 4621 mov r1, r4 + 8048cde: 4628 mov r0, r5 + 8048ce0: f000 f950 bl 8048f84 <_fflush_r> + 8048ce4: bb30 cbnz r0, 8048d34 <__swbuf_r+0x90> + 8048ce6: 68a3 ldr r3, [r4, #8] + 8048ce8: 3b01 subs r3, #1 + 8048cea: 60a3 str r3, [r4, #8] + 8048cec: 6823 ldr r3, [r4, #0] + 8048cee: 1c5a adds r2, r3, #1 + 8048cf0: 6022 str r2, [r4, #0] + 8048cf2: 701e strb r6, [r3, #0] + 8048cf4: 6963 ldr r3, [r4, #20] + 8048cf6: 3001 adds r0, #1 + 8048cf8: 4283 cmp r3, r0 + 8048cfa: d004 beq.n 8048d06 <__swbuf_r+0x62> + 8048cfc: 89a3 ldrh r3, [r4, #12] + 8048cfe: 07db lsls r3, r3, #31 + 8048d00: d506 bpl.n 8048d10 <__swbuf_r+0x6c> + 8048d02: 2e0a cmp r6, #10 + 8048d04: d104 bne.n 8048d10 <__swbuf_r+0x6c> + 8048d06: 4621 mov r1, r4 + 8048d08: 4628 mov r0, r5 + 8048d0a: f000 f93b bl 8048f84 <_fflush_r> + 8048d0e: b988 cbnz r0, 8048d34 <__swbuf_r+0x90> + 8048d10: 4638 mov r0, r7 + 8048d12: bdf8 pop {r3, r4, r5, r6, r7, pc} + 8048d14: 4b0a ldr r3, [pc, #40] ; (8048d40 <__swbuf_r+0x9c>) + 8048d16: 429c cmp r4, r3 + 8048d18: d101 bne.n 8048d1e <__swbuf_r+0x7a> + 8048d1a: 68ac ldr r4, [r5, #8] + 8048d1c: e7cf b.n 8048cbe <__swbuf_r+0x1a> + 8048d1e: 4b09 ldr r3, [pc, #36] ; (8048d44 <__swbuf_r+0xa0>) + 8048d20: 429c cmp r4, r3 + 8048d22: bf08 it eq + 8048d24: 68ec ldreq r4, [r5, #12] + 8048d26: e7ca b.n 8048cbe <__swbuf_r+0x1a> + 8048d28: 4621 mov r1, r4 + 8048d2a: 4628 mov r0, r5 + 8048d2c: f000 f81e bl 8048d6c <__swsetup_r> + 8048d30: 2800 cmp r0, #0 + 8048d32: d0cb beq.n 8048ccc <__swbuf_r+0x28> + 8048d34: f04f 37ff mov.w r7, #4294967295 + 8048d38: e7ea b.n 8048d10 <__swbuf_r+0x6c> + 8048d3a: bf00 nop + 8048d3c: 0804d5b0 .word 0x0804d5b0 + 8048d40: 0804d5d0 .word 0x0804d5d0 + 8048d44: 0804d590 .word 0x0804d590 + +08048d48 <_write_r>: + 8048d48: b538 push {r3, r4, r5, lr} + 8048d4a: 4d07 ldr r5, [pc, #28] ; (8048d68 <_write_r+0x20>) + 8048d4c: 4604 mov r4, r0 + 8048d4e: 4608 mov r0, r1 + 8048d50: 4611 mov r1, r2 + 8048d52: 2200 movs r2, #0 + 8048d54: 602a str r2, [r5, #0] + 8048d56: 461a mov r2, r3 + 8048d58: f7e2 fc53 bl 802b602 <_write> + 8048d5c: 1c43 adds r3, r0, #1 + 8048d5e: d102 bne.n 8048d66 <_write_r+0x1e> + 8048d60: 682b ldr r3, [r5, #0] + 8048d62: b103 cbz r3, 8048d66 <_write_r+0x1e> + 8048d64: 6023 str r3, [r4, #0] + 8048d66: bd38 pop {r3, r4, r5, pc} + 8048d68: 2400ec4c .word 0x2400ec4c + +08048d6c <__swsetup_r>: + 8048d6c: 4b32 ldr r3, [pc, #200] ; (8048e38 <__swsetup_r+0xcc>) + 8048d6e: b570 push {r4, r5, r6, lr} + 8048d70: 681d ldr r5, [r3, #0] + 8048d72: 4606 mov r6, r0 + 8048d74: 460c mov r4, r1 + 8048d76: b125 cbz r5, 8048d82 <__swsetup_r+0x16> + 8048d78: 69ab ldr r3, [r5, #24] + 8048d7a: b913 cbnz r3, 8048d82 <__swsetup_r+0x16> + 8048d7c: 4628 mov r0, r5 + 8048d7e: f7ff fa45 bl 804820c <__sinit> + 8048d82: 4b2e ldr r3, [pc, #184] ; (8048e3c <__swsetup_r+0xd0>) + 8048d84: 429c cmp r4, r3 + 8048d86: d10f bne.n 8048da8 <__swsetup_r+0x3c> + 8048d88: 686c ldr r4, [r5, #4] + 8048d8a: 89a3 ldrh r3, [r4, #12] + 8048d8c: f9b4 200c ldrsh.w r2, [r4, #12] + 8048d90: 0719 lsls r1, r3, #28 + 8048d92: d42c bmi.n 8048dee <__swsetup_r+0x82> + 8048d94: 06dd lsls r5, r3, #27 + 8048d96: d411 bmi.n 8048dbc <__swsetup_r+0x50> + 8048d98: 2309 movs r3, #9 + 8048d9a: 6033 str r3, [r6, #0] + 8048d9c: f042 0340 orr.w r3, r2, #64 ; 0x40 + 8048da0: 81a3 strh r3, [r4, #12] + 8048da2: f04f 30ff mov.w r0, #4294967295 + 8048da6: e03e b.n 8048e26 <__swsetup_r+0xba> + 8048da8: 4b25 ldr r3, [pc, #148] ; (8048e40 <__swsetup_r+0xd4>) + 8048daa: 429c cmp r4, r3 + 8048dac: d101 bne.n 8048db2 <__swsetup_r+0x46> + 8048dae: 68ac ldr r4, [r5, #8] + 8048db0: e7eb b.n 8048d8a <__swsetup_r+0x1e> + 8048db2: 4b24 ldr r3, [pc, #144] ; (8048e44 <__swsetup_r+0xd8>) + 8048db4: 429c cmp r4, r3 + 8048db6: bf08 it eq + 8048db8: 68ec ldreq r4, [r5, #12] + 8048dba: e7e6 b.n 8048d8a <__swsetup_r+0x1e> + 8048dbc: 0758 lsls r0, r3, #29 + 8048dbe: d512 bpl.n 8048de6 <__swsetup_r+0x7a> + 8048dc0: 6b61 ldr r1, [r4, #52] ; 0x34 + 8048dc2: b141 cbz r1, 8048dd6 <__swsetup_r+0x6a> + 8048dc4: f104 0344 add.w r3, r4, #68 ; 0x44 + 8048dc8: 4299 cmp r1, r3 + 8048dca: d002 beq.n 8048dd2 <__swsetup_r+0x66> + 8048dcc: 4630 mov r0, r6 + 8048dce: f7ff f829 bl 8047e24 <_free_r> 8048dd2: 2300 movs r3, #0 - 8048dd4: 60a3 str r3, [r4, #8] - 8048dd6: 6963 ldr r3, [r4, #20] - 8048dd8: 425b negs r3, r3 - 8048dda: 61a3 str r3, [r4, #24] - 8048ddc: 6923 ldr r3, [r4, #16] - 8048dde: b943 cbnz r3, 8048df2 <__swsetup_r+0xc6> - 8048de0: f010 0080 ands.w r0, r0, #128 ; 0x80 - 8048de4: d1ba bne.n 8048d5c <__swsetup_r+0x30> - 8048de6: bd70 pop {r4, r5, r6, pc} - 8048de8: 0781 lsls r1, r0, #30 - 8048dea: bf58 it pl - 8048dec: 6963 ldrpl r3, [r4, #20] - 8048dee: 60a3 str r3, [r4, #8] - 8048df0: e7f4 b.n 8048ddc <__swsetup_r+0xb0> - 8048df2: 2000 movs r0, #0 - 8048df4: e7f7 b.n 8048de6 <__swsetup_r+0xba> - 8048df6: bf00 nop - 8048df8: 24000148 .word 0x24000148 - 8048dfc: 0804d570 .word 0x0804d570 - 8048e00: 0804d590 .word 0x0804d590 - 8048e04: 0804d550 .word 0x0804d550 - -08048e08 : - 8048e08: b508 push {r3, lr} - 8048e0a: 2006 movs r0, #6 - 8048e0c: f000 f9b8 bl 8049180 - 8048e10: 2001 movs r0, #1 - 8048e12: f7e2 fbaf bl 802b574 <_exit> + 8048dd4: 6363 str r3, [r4, #52] ; 0x34 + 8048dd6: 89a3 ldrh r3, [r4, #12] + 8048dd8: f023 0324 bic.w r3, r3, #36 ; 0x24 + 8048ddc: 81a3 strh r3, [r4, #12] + 8048dde: 2300 movs r3, #0 + 8048de0: 6063 str r3, [r4, #4] + 8048de2: 6923 ldr r3, [r4, #16] + 8048de4: 6023 str r3, [r4, #0] + 8048de6: 89a3 ldrh r3, [r4, #12] + 8048de8: f043 0308 orr.w r3, r3, #8 + 8048dec: 81a3 strh r3, [r4, #12] + 8048dee: 6923 ldr r3, [r4, #16] + 8048df0: b94b cbnz r3, 8048e06 <__swsetup_r+0x9a> + 8048df2: 89a3 ldrh r3, [r4, #12] + 8048df4: f403 7320 and.w r3, r3, #640 ; 0x280 + 8048df8: f5b3 7f00 cmp.w r3, #512 ; 0x200 + 8048dfc: d003 beq.n 8048e06 <__swsetup_r+0x9a> + 8048dfe: 4621 mov r1, r4 + 8048e00: 4630 mov r0, r6 + 8048e02: f000 f933 bl 804906c <__smakebuf_r> + 8048e06: 89a0 ldrh r0, [r4, #12] + 8048e08: f9b4 200c ldrsh.w r2, [r4, #12] + 8048e0c: f010 0301 ands.w r3, r0, #1 + 8048e10: d00a beq.n 8048e28 <__swsetup_r+0xbc> + 8048e12: 2300 movs r3, #0 + 8048e14: 60a3 str r3, [r4, #8] + 8048e16: 6963 ldr r3, [r4, #20] + 8048e18: 425b negs r3, r3 + 8048e1a: 61a3 str r3, [r4, #24] + 8048e1c: 6923 ldr r3, [r4, #16] + 8048e1e: b943 cbnz r3, 8048e32 <__swsetup_r+0xc6> + 8048e20: f010 0080 ands.w r0, r0, #128 ; 0x80 + 8048e24: d1ba bne.n 8048d9c <__swsetup_r+0x30> + 8048e26: bd70 pop {r4, r5, r6, pc} + 8048e28: 0781 lsls r1, r0, #30 + 8048e2a: bf58 it pl + 8048e2c: 6963 ldrpl r3, [r4, #20] + 8048e2e: 60a3 str r3, [r4, #8] + 8048e30: e7f4 b.n 8048e1c <__swsetup_r+0xb0> + 8048e32: 2000 movs r0, #0 + 8048e34: e7f7 b.n 8048e26 <__swsetup_r+0xba> + 8048e36: bf00 nop + 8048e38: 24000148 .word 0x24000148 + 8048e3c: 0804d5b0 .word 0x0804d5b0 + 8048e40: 0804d5d0 .word 0x0804d5d0 + 8048e44: 0804d590 .word 0x0804d590 + +08048e48 : + 8048e48: b508 push {r3, lr} + 8048e4a: 2006 movs r0, #6 + 8048e4c: f000 f9b8 bl 80491c0 + 8048e50: 2001 movs r0, #1 + 8048e52: f7e2 fbaf bl 802b5b4 <_exit> ... -08048e18 <_close_r>: - 8048e18: b538 push {r3, r4, r5, lr} - 8048e1a: 4d06 ldr r5, [pc, #24] ; (8048e34 <_close_r+0x1c>) - 8048e1c: 2300 movs r3, #0 - 8048e1e: 4604 mov r4, r0 - 8048e20: 4608 mov r0, r1 - 8048e22: 602b str r3, [r5, #0] - 8048e24: f7e2 fbe9 bl 802b5fa <_close> - 8048e28: 1c43 adds r3, r0, #1 - 8048e2a: d102 bne.n 8048e32 <_close_r+0x1a> - 8048e2c: 682b ldr r3, [r5, #0] - 8048e2e: b103 cbz r3, 8048e32 <_close_r+0x1a> - 8048e30: 6023 str r3, [r4, #0] - 8048e32: bd38 pop {r3, r4, r5, pc} - 8048e34: 2400ec4c .word 0x2400ec4c - -08048e38 <__sflush_r>: - 8048e38: 898a ldrh r2, [r1, #12] - 8048e3a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 8048e3e: 4605 mov r5, r0 - 8048e40: 0710 lsls r0, r2, #28 - 8048e42: 460c mov r4, r1 - 8048e44: d458 bmi.n 8048ef8 <__sflush_r+0xc0> - 8048e46: 684b ldr r3, [r1, #4] - 8048e48: 2b00 cmp r3, #0 - 8048e4a: dc05 bgt.n 8048e58 <__sflush_r+0x20> - 8048e4c: 6c0b ldr r3, [r1, #64] ; 0x40 - 8048e4e: 2b00 cmp r3, #0 - 8048e50: dc02 bgt.n 8048e58 <__sflush_r+0x20> - 8048e52: 2000 movs r0, #0 - 8048e54: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 8048e58: 6ae6 ldr r6, [r4, #44] ; 0x2c - 8048e5a: 2e00 cmp r6, #0 - 8048e5c: d0f9 beq.n 8048e52 <__sflush_r+0x1a> - 8048e5e: 2300 movs r3, #0 - 8048e60: f412 5280 ands.w r2, r2, #4096 ; 0x1000 - 8048e64: 682f ldr r7, [r5, #0] - 8048e66: 602b str r3, [r5, #0] - 8048e68: d032 beq.n 8048ed0 <__sflush_r+0x98> - 8048e6a: 6d60 ldr r0, [r4, #84] ; 0x54 - 8048e6c: 89a3 ldrh r3, [r4, #12] - 8048e6e: 075a lsls r2, r3, #29 - 8048e70: d505 bpl.n 8048e7e <__sflush_r+0x46> - 8048e72: 6863 ldr r3, [r4, #4] - 8048e74: 1ac0 subs r0, r0, r3 - 8048e76: 6b63 ldr r3, [r4, #52] ; 0x34 - 8048e78: b10b cbz r3, 8048e7e <__sflush_r+0x46> - 8048e7a: 6c23 ldr r3, [r4, #64] ; 0x40 - 8048e7c: 1ac0 subs r0, r0, r3 - 8048e7e: 2300 movs r3, #0 - 8048e80: 4602 mov r2, r0 - 8048e82: 6ae6 ldr r6, [r4, #44] ; 0x2c - 8048e84: 6a21 ldr r1, [r4, #32] - 8048e86: 4628 mov r0, r5 - 8048e88: 47b0 blx r6 - 8048e8a: 1c43 adds r3, r0, #1 - 8048e8c: 89a3 ldrh r3, [r4, #12] - 8048e8e: d106 bne.n 8048e9e <__sflush_r+0x66> - 8048e90: 6829 ldr r1, [r5, #0] - 8048e92: 291d cmp r1, #29 - 8048e94: d82c bhi.n 8048ef0 <__sflush_r+0xb8> - 8048e96: 4a2a ldr r2, [pc, #168] ; (8048f40 <__sflush_r+0x108>) - 8048e98: 40ca lsrs r2, r1 - 8048e9a: 07d6 lsls r6, r2, #31 - 8048e9c: d528 bpl.n 8048ef0 <__sflush_r+0xb8> - 8048e9e: 2200 movs r2, #0 - 8048ea0: 6062 str r2, [r4, #4] - 8048ea2: 04d9 lsls r1, r3, #19 - 8048ea4: 6922 ldr r2, [r4, #16] - 8048ea6: 6022 str r2, [r4, #0] - 8048ea8: d504 bpl.n 8048eb4 <__sflush_r+0x7c> - 8048eaa: 1c42 adds r2, r0, #1 - 8048eac: d101 bne.n 8048eb2 <__sflush_r+0x7a> - 8048eae: 682b ldr r3, [r5, #0] - 8048eb0: b903 cbnz r3, 8048eb4 <__sflush_r+0x7c> - 8048eb2: 6560 str r0, [r4, #84] ; 0x54 - 8048eb4: 6b61 ldr r1, [r4, #52] ; 0x34 - 8048eb6: 602f str r7, [r5, #0] - 8048eb8: 2900 cmp r1, #0 - 8048eba: d0ca beq.n 8048e52 <__sflush_r+0x1a> - 8048ebc: f104 0344 add.w r3, r4, #68 ; 0x44 - 8048ec0: 4299 cmp r1, r3 - 8048ec2: d002 beq.n 8048eca <__sflush_r+0x92> - 8048ec4: 4628 mov r0, r5 - 8048ec6: f7fe ff8d bl 8047de4 <_free_r> - 8048eca: 2000 movs r0, #0 - 8048ecc: 6360 str r0, [r4, #52] ; 0x34 - 8048ece: e7c1 b.n 8048e54 <__sflush_r+0x1c> - 8048ed0: 6a21 ldr r1, [r4, #32] - 8048ed2: 2301 movs r3, #1 - 8048ed4: 4628 mov r0, r5 - 8048ed6: 47b0 blx r6 - 8048ed8: 1c41 adds r1, r0, #1 - 8048eda: d1c7 bne.n 8048e6c <__sflush_r+0x34> - 8048edc: 682b ldr r3, [r5, #0] - 8048ede: 2b00 cmp r3, #0 - 8048ee0: d0c4 beq.n 8048e6c <__sflush_r+0x34> - 8048ee2: 2b1d cmp r3, #29 - 8048ee4: d001 beq.n 8048eea <__sflush_r+0xb2> - 8048ee6: 2b16 cmp r3, #22 - 8048ee8: d101 bne.n 8048eee <__sflush_r+0xb6> - 8048eea: 602f str r7, [r5, #0] - 8048eec: e7b1 b.n 8048e52 <__sflush_r+0x1a> - 8048eee: 89a3 ldrh r3, [r4, #12] - 8048ef0: f043 0340 orr.w r3, r3, #64 ; 0x40 - 8048ef4: 81a3 strh r3, [r4, #12] - 8048ef6: e7ad b.n 8048e54 <__sflush_r+0x1c> - 8048ef8: 690f ldr r7, [r1, #16] - 8048efa: 2f00 cmp r7, #0 - 8048efc: d0a9 beq.n 8048e52 <__sflush_r+0x1a> - 8048efe: 0793 lsls r3, r2, #30 - 8048f00: 680e ldr r6, [r1, #0] - 8048f02: bf08 it eq - 8048f04: 694b ldreq r3, [r1, #20] - 8048f06: 600f str r7, [r1, #0] - 8048f08: bf18 it ne - 8048f0a: 2300 movne r3, #0 - 8048f0c: eba6 0807 sub.w r8, r6, r7 - 8048f10: 608b str r3, [r1, #8] - 8048f12: f1b8 0f00 cmp.w r8, #0 - 8048f16: dd9c ble.n 8048e52 <__sflush_r+0x1a> - 8048f18: 6a21 ldr r1, [r4, #32] - 8048f1a: 6aa6 ldr r6, [r4, #40] ; 0x28 - 8048f1c: 4643 mov r3, r8 - 8048f1e: 463a mov r2, r7 - 8048f20: 4628 mov r0, r5 - 8048f22: 47b0 blx r6 - 8048f24: 2800 cmp r0, #0 - 8048f26: dc06 bgt.n 8048f36 <__sflush_r+0xfe> - 8048f28: 89a3 ldrh r3, [r4, #12] - 8048f2a: f043 0340 orr.w r3, r3, #64 ; 0x40 - 8048f2e: 81a3 strh r3, [r4, #12] - 8048f30: f04f 30ff mov.w r0, #4294967295 - 8048f34: e78e b.n 8048e54 <__sflush_r+0x1c> - 8048f36: 4407 add r7, r0 - 8048f38: eba8 0800 sub.w r8, r8, r0 - 8048f3c: e7e9 b.n 8048f12 <__sflush_r+0xda> - 8048f3e: bf00 nop - 8048f40: 20400001 .word 0x20400001 - -08048f44 <_fflush_r>: - 8048f44: b538 push {r3, r4, r5, lr} - 8048f46: 690b ldr r3, [r1, #16] - 8048f48: 4605 mov r5, r0 - 8048f4a: 460c mov r4, r1 - 8048f4c: b913 cbnz r3, 8048f54 <_fflush_r+0x10> - 8048f4e: 2500 movs r5, #0 - 8048f50: 4628 mov r0, r5 - 8048f52: bd38 pop {r3, r4, r5, pc} - 8048f54: b118 cbz r0, 8048f5e <_fflush_r+0x1a> - 8048f56: 6983 ldr r3, [r0, #24] - 8048f58: b90b cbnz r3, 8048f5e <_fflush_r+0x1a> - 8048f5a: f7ff f937 bl 80481cc <__sinit> - 8048f5e: 4b14 ldr r3, [pc, #80] ; (8048fb0 <_fflush_r+0x6c>) - 8048f60: 429c cmp r4, r3 - 8048f62: d11b bne.n 8048f9c <_fflush_r+0x58> - 8048f64: 686c ldr r4, [r5, #4] - 8048f66: f9b4 300c ldrsh.w r3, [r4, #12] - 8048f6a: 2b00 cmp r3, #0 - 8048f6c: d0ef beq.n 8048f4e <_fflush_r+0xa> - 8048f6e: 6e62 ldr r2, [r4, #100] ; 0x64 - 8048f70: 07d0 lsls r0, r2, #31 - 8048f72: d404 bmi.n 8048f7e <_fflush_r+0x3a> - 8048f74: 0599 lsls r1, r3, #22 - 8048f76: d402 bmi.n 8048f7e <_fflush_r+0x3a> - 8048f78: 6da0 ldr r0, [r4, #88] ; 0x58 - 8048f7a: f7ff f9d7 bl 804832c <__retarget_lock_acquire_recursive> - 8048f7e: 4628 mov r0, r5 - 8048f80: 4621 mov r1, r4 - 8048f82: f7ff ff59 bl 8048e38 <__sflush_r> - 8048f86: 6e63 ldr r3, [r4, #100] ; 0x64 - 8048f88: 07da lsls r2, r3, #31 - 8048f8a: 4605 mov r5, r0 - 8048f8c: d4e0 bmi.n 8048f50 <_fflush_r+0xc> - 8048f8e: 89a3 ldrh r3, [r4, #12] - 8048f90: 059b lsls r3, r3, #22 - 8048f92: d4dd bmi.n 8048f50 <_fflush_r+0xc> - 8048f94: 6da0 ldr r0, [r4, #88] ; 0x58 - 8048f96: f7ff f9ca bl 804832e <__retarget_lock_release_recursive> - 8048f9a: e7d9 b.n 8048f50 <_fflush_r+0xc> - 8048f9c: 4b05 ldr r3, [pc, #20] ; (8048fb4 <_fflush_r+0x70>) - 8048f9e: 429c cmp r4, r3 - 8048fa0: d101 bne.n 8048fa6 <_fflush_r+0x62> - 8048fa2: 68ac ldr r4, [r5, #8] - 8048fa4: e7df b.n 8048f66 <_fflush_r+0x22> - 8048fa6: 4b04 ldr r3, [pc, #16] ; (8048fb8 <_fflush_r+0x74>) - 8048fa8: 429c cmp r4, r3 - 8048faa: bf08 it eq - 8048fac: 68ec ldreq r4, [r5, #12] - 8048fae: e7da b.n 8048f66 <_fflush_r+0x22> - 8048fb0: 0804d570 .word 0x0804d570 - 8048fb4: 0804d590 .word 0x0804d590 - 8048fb8: 0804d550 .word 0x0804d550 - -08048fbc <_lseek_r>: - 8048fbc: b538 push {r3, r4, r5, lr} - 8048fbe: 4d07 ldr r5, [pc, #28] ; (8048fdc <_lseek_r+0x20>) - 8048fc0: 4604 mov r4, r0 - 8048fc2: 4608 mov r0, r1 - 8048fc4: 4611 mov r1, r2 - 8048fc6: 2200 movs r2, #0 - 8048fc8: 602a str r2, [r5, #0] - 8048fca: 461a mov r2, r3 - 8048fcc: f7e2 fb3c bl 802b648 <_lseek> - 8048fd0: 1c43 adds r3, r0, #1 - 8048fd2: d102 bne.n 8048fda <_lseek_r+0x1e> - 8048fd4: 682b ldr r3, [r5, #0] - 8048fd6: b103 cbz r3, 8048fda <_lseek_r+0x1e> - 8048fd8: 6023 str r3, [r4, #0] - 8048fda: bd38 pop {r3, r4, r5, pc} - 8048fdc: 2400ec4c .word 0x2400ec4c - -08048fe0 <__swhatbuf_r>: - 8048fe0: b570 push {r4, r5, r6, lr} - 8048fe2: 460e mov r6, r1 - 8048fe4: f9b1 100e ldrsh.w r1, [r1, #14] - 8048fe8: 2900 cmp r1, #0 - 8048fea: b096 sub sp, #88 ; 0x58 - 8048fec: 4614 mov r4, r2 - 8048fee: 461d mov r5, r3 - 8048ff0: da08 bge.n 8049004 <__swhatbuf_r+0x24> - 8048ff2: f9b6 300c ldrsh.w r3, [r6, #12] - 8048ff6: 2200 movs r2, #0 - 8048ff8: 602a str r2, [r5, #0] - 8048ffa: 061a lsls r2, r3, #24 - 8048ffc: d410 bmi.n 8049020 <__swhatbuf_r+0x40> - 8048ffe: f44f 6380 mov.w r3, #1024 ; 0x400 - 8049002: e00e b.n 8049022 <__swhatbuf_r+0x42> - 8049004: 466a mov r2, sp - 8049006: f000 f8d7 bl 80491b8 <_fstat_r> - 804900a: 2800 cmp r0, #0 - 804900c: dbf1 blt.n 8048ff2 <__swhatbuf_r+0x12> - 804900e: 9a01 ldr r2, [sp, #4] - 8049010: f402 4270 and.w r2, r2, #61440 ; 0xf000 - 8049014: f5a2 5300 sub.w r3, r2, #8192 ; 0x2000 - 8049018: 425a negs r2, r3 - 804901a: 415a adcs r2, r3 - 804901c: 602a str r2, [r5, #0] - 804901e: e7ee b.n 8048ffe <__swhatbuf_r+0x1e> - 8049020: 2340 movs r3, #64 ; 0x40 - 8049022: 2000 movs r0, #0 - 8049024: 6023 str r3, [r4, #0] - 8049026: b016 add sp, #88 ; 0x58 - 8049028: bd70 pop {r4, r5, r6, pc} +08048e58 <_close_r>: + 8048e58: b538 push {r3, r4, r5, lr} + 8048e5a: 4d06 ldr r5, [pc, #24] ; (8048e74 <_close_r+0x1c>) + 8048e5c: 2300 movs r3, #0 + 8048e5e: 4604 mov r4, r0 + 8048e60: 4608 mov r0, r1 + 8048e62: 602b str r3, [r5, #0] + 8048e64: f7e2 fbe9 bl 802b63a <_close> + 8048e68: 1c43 adds r3, r0, #1 + 8048e6a: d102 bne.n 8048e72 <_close_r+0x1a> + 8048e6c: 682b ldr r3, [r5, #0] + 8048e6e: b103 cbz r3, 8048e72 <_close_r+0x1a> + 8048e70: 6023 str r3, [r4, #0] + 8048e72: bd38 pop {r3, r4, r5, pc} + 8048e74: 2400ec4c .word 0x2400ec4c + +08048e78 <__sflush_r>: + 8048e78: 898a ldrh r2, [r1, #12] + 8048e7a: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 8048e7e: 4605 mov r5, r0 + 8048e80: 0710 lsls r0, r2, #28 + 8048e82: 460c mov r4, r1 + 8048e84: d458 bmi.n 8048f38 <__sflush_r+0xc0> + 8048e86: 684b ldr r3, [r1, #4] + 8048e88: 2b00 cmp r3, #0 + 8048e8a: dc05 bgt.n 8048e98 <__sflush_r+0x20> + 8048e8c: 6c0b ldr r3, [r1, #64] ; 0x40 + 8048e8e: 2b00 cmp r3, #0 + 8048e90: dc02 bgt.n 8048e98 <__sflush_r+0x20> + 8048e92: 2000 movs r0, #0 + 8048e94: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8048e98: 6ae6 ldr r6, [r4, #44] ; 0x2c + 8048e9a: 2e00 cmp r6, #0 + 8048e9c: d0f9 beq.n 8048e92 <__sflush_r+0x1a> + 8048e9e: 2300 movs r3, #0 + 8048ea0: f412 5280 ands.w r2, r2, #4096 ; 0x1000 + 8048ea4: 682f ldr r7, [r5, #0] + 8048ea6: 602b str r3, [r5, #0] + 8048ea8: d032 beq.n 8048f10 <__sflush_r+0x98> + 8048eaa: 6d60 ldr r0, [r4, #84] ; 0x54 + 8048eac: 89a3 ldrh r3, [r4, #12] + 8048eae: 075a lsls r2, r3, #29 + 8048eb0: d505 bpl.n 8048ebe <__sflush_r+0x46> + 8048eb2: 6863 ldr r3, [r4, #4] + 8048eb4: 1ac0 subs r0, r0, r3 + 8048eb6: 6b63 ldr r3, [r4, #52] ; 0x34 + 8048eb8: b10b cbz r3, 8048ebe <__sflush_r+0x46> + 8048eba: 6c23 ldr r3, [r4, #64] ; 0x40 + 8048ebc: 1ac0 subs r0, r0, r3 + 8048ebe: 2300 movs r3, #0 + 8048ec0: 4602 mov r2, r0 + 8048ec2: 6ae6 ldr r6, [r4, #44] ; 0x2c + 8048ec4: 6a21 ldr r1, [r4, #32] + 8048ec6: 4628 mov r0, r5 + 8048ec8: 47b0 blx r6 + 8048eca: 1c43 adds r3, r0, #1 + 8048ecc: 89a3 ldrh r3, [r4, #12] + 8048ece: d106 bne.n 8048ede <__sflush_r+0x66> + 8048ed0: 6829 ldr r1, [r5, #0] + 8048ed2: 291d cmp r1, #29 + 8048ed4: d82c bhi.n 8048f30 <__sflush_r+0xb8> + 8048ed6: 4a2a ldr r2, [pc, #168] ; (8048f80 <__sflush_r+0x108>) + 8048ed8: 40ca lsrs r2, r1 + 8048eda: 07d6 lsls r6, r2, #31 + 8048edc: d528 bpl.n 8048f30 <__sflush_r+0xb8> + 8048ede: 2200 movs r2, #0 + 8048ee0: 6062 str r2, [r4, #4] + 8048ee2: 04d9 lsls r1, r3, #19 + 8048ee4: 6922 ldr r2, [r4, #16] + 8048ee6: 6022 str r2, [r4, #0] + 8048ee8: d504 bpl.n 8048ef4 <__sflush_r+0x7c> + 8048eea: 1c42 adds r2, r0, #1 + 8048eec: d101 bne.n 8048ef2 <__sflush_r+0x7a> + 8048eee: 682b ldr r3, [r5, #0] + 8048ef0: b903 cbnz r3, 8048ef4 <__sflush_r+0x7c> + 8048ef2: 6560 str r0, [r4, #84] ; 0x54 + 8048ef4: 6b61 ldr r1, [r4, #52] ; 0x34 + 8048ef6: 602f str r7, [r5, #0] + 8048ef8: 2900 cmp r1, #0 + 8048efa: d0ca beq.n 8048e92 <__sflush_r+0x1a> + 8048efc: f104 0344 add.w r3, r4, #68 ; 0x44 + 8048f00: 4299 cmp r1, r3 + 8048f02: d002 beq.n 8048f0a <__sflush_r+0x92> + 8048f04: 4628 mov r0, r5 + 8048f06: f7fe ff8d bl 8047e24 <_free_r> + 8048f0a: 2000 movs r0, #0 + 8048f0c: 6360 str r0, [r4, #52] ; 0x34 + 8048f0e: e7c1 b.n 8048e94 <__sflush_r+0x1c> + 8048f10: 6a21 ldr r1, [r4, #32] + 8048f12: 2301 movs r3, #1 + 8048f14: 4628 mov r0, r5 + 8048f16: 47b0 blx r6 + 8048f18: 1c41 adds r1, r0, #1 + 8048f1a: d1c7 bne.n 8048eac <__sflush_r+0x34> + 8048f1c: 682b ldr r3, [r5, #0] + 8048f1e: 2b00 cmp r3, #0 + 8048f20: d0c4 beq.n 8048eac <__sflush_r+0x34> + 8048f22: 2b1d cmp r3, #29 + 8048f24: d001 beq.n 8048f2a <__sflush_r+0xb2> + 8048f26: 2b16 cmp r3, #22 + 8048f28: d101 bne.n 8048f2e <__sflush_r+0xb6> + 8048f2a: 602f str r7, [r5, #0] + 8048f2c: e7b1 b.n 8048e92 <__sflush_r+0x1a> + 8048f2e: 89a3 ldrh r3, [r4, #12] + 8048f30: f043 0340 orr.w r3, r3, #64 ; 0x40 + 8048f34: 81a3 strh r3, [r4, #12] + 8048f36: e7ad b.n 8048e94 <__sflush_r+0x1c> + 8048f38: 690f ldr r7, [r1, #16] + 8048f3a: 2f00 cmp r7, #0 + 8048f3c: d0a9 beq.n 8048e92 <__sflush_r+0x1a> + 8048f3e: 0793 lsls r3, r2, #30 + 8048f40: 680e ldr r6, [r1, #0] + 8048f42: bf08 it eq + 8048f44: 694b ldreq r3, [r1, #20] + 8048f46: 600f str r7, [r1, #0] + 8048f48: bf18 it ne + 8048f4a: 2300 movne r3, #0 + 8048f4c: eba6 0807 sub.w r8, r6, r7 + 8048f50: 608b str r3, [r1, #8] + 8048f52: f1b8 0f00 cmp.w r8, #0 + 8048f56: dd9c ble.n 8048e92 <__sflush_r+0x1a> + 8048f58: 6a21 ldr r1, [r4, #32] + 8048f5a: 6aa6 ldr r6, [r4, #40] ; 0x28 + 8048f5c: 4643 mov r3, r8 + 8048f5e: 463a mov r2, r7 + 8048f60: 4628 mov r0, r5 + 8048f62: 47b0 blx r6 + 8048f64: 2800 cmp r0, #0 + 8048f66: dc06 bgt.n 8048f76 <__sflush_r+0xfe> + 8048f68: 89a3 ldrh r3, [r4, #12] + 8048f6a: f043 0340 orr.w r3, r3, #64 ; 0x40 + 8048f6e: 81a3 strh r3, [r4, #12] + 8048f70: f04f 30ff mov.w r0, #4294967295 + 8048f74: e78e b.n 8048e94 <__sflush_r+0x1c> + 8048f76: 4407 add r7, r0 + 8048f78: eba8 0800 sub.w r8, r8, r0 + 8048f7c: e7e9 b.n 8048f52 <__sflush_r+0xda> + 8048f7e: bf00 nop + 8048f80: 20400001 .word 0x20400001 + +08048f84 <_fflush_r>: + 8048f84: b538 push {r3, r4, r5, lr} + 8048f86: 690b ldr r3, [r1, #16] + 8048f88: 4605 mov r5, r0 + 8048f8a: 460c mov r4, r1 + 8048f8c: b913 cbnz r3, 8048f94 <_fflush_r+0x10> + 8048f8e: 2500 movs r5, #0 + 8048f90: 4628 mov r0, r5 + 8048f92: bd38 pop {r3, r4, r5, pc} + 8048f94: b118 cbz r0, 8048f9e <_fflush_r+0x1a> + 8048f96: 6983 ldr r3, [r0, #24] + 8048f98: b90b cbnz r3, 8048f9e <_fflush_r+0x1a> + 8048f9a: f7ff f937 bl 804820c <__sinit> + 8048f9e: 4b14 ldr r3, [pc, #80] ; (8048ff0 <_fflush_r+0x6c>) + 8048fa0: 429c cmp r4, r3 + 8048fa2: d11b bne.n 8048fdc <_fflush_r+0x58> + 8048fa4: 686c ldr r4, [r5, #4] + 8048fa6: f9b4 300c ldrsh.w r3, [r4, #12] + 8048faa: 2b00 cmp r3, #0 + 8048fac: d0ef beq.n 8048f8e <_fflush_r+0xa> + 8048fae: 6e62 ldr r2, [r4, #100] ; 0x64 + 8048fb0: 07d0 lsls r0, r2, #31 + 8048fb2: d404 bmi.n 8048fbe <_fflush_r+0x3a> + 8048fb4: 0599 lsls r1, r3, #22 + 8048fb6: d402 bmi.n 8048fbe <_fflush_r+0x3a> + 8048fb8: 6da0 ldr r0, [r4, #88] ; 0x58 + 8048fba: f7ff f9d7 bl 804836c <__retarget_lock_acquire_recursive> + 8048fbe: 4628 mov r0, r5 + 8048fc0: 4621 mov r1, r4 + 8048fc2: f7ff ff59 bl 8048e78 <__sflush_r> + 8048fc6: 6e63 ldr r3, [r4, #100] ; 0x64 + 8048fc8: 07da lsls r2, r3, #31 + 8048fca: 4605 mov r5, r0 + 8048fcc: d4e0 bmi.n 8048f90 <_fflush_r+0xc> + 8048fce: 89a3 ldrh r3, [r4, #12] + 8048fd0: 059b lsls r3, r3, #22 + 8048fd2: d4dd bmi.n 8048f90 <_fflush_r+0xc> + 8048fd4: 6da0 ldr r0, [r4, #88] ; 0x58 + 8048fd6: f7ff f9ca bl 804836e <__retarget_lock_release_recursive> + 8048fda: e7d9 b.n 8048f90 <_fflush_r+0xc> + 8048fdc: 4b05 ldr r3, [pc, #20] ; (8048ff4 <_fflush_r+0x70>) + 8048fde: 429c cmp r4, r3 + 8048fe0: d101 bne.n 8048fe6 <_fflush_r+0x62> + 8048fe2: 68ac ldr r4, [r5, #8] + 8048fe4: e7df b.n 8048fa6 <_fflush_r+0x22> + 8048fe6: 4b04 ldr r3, [pc, #16] ; (8048ff8 <_fflush_r+0x74>) + 8048fe8: 429c cmp r4, r3 + 8048fea: bf08 it eq + 8048fec: 68ec ldreq r4, [r5, #12] + 8048fee: e7da b.n 8048fa6 <_fflush_r+0x22> + 8048ff0: 0804d5b0 .word 0x0804d5b0 + 8048ff4: 0804d5d0 .word 0x0804d5d0 + 8048ff8: 0804d590 .word 0x0804d590 + +08048ffc <_lseek_r>: + 8048ffc: b538 push {r3, r4, r5, lr} + 8048ffe: 4d07 ldr r5, [pc, #28] ; (804901c <_lseek_r+0x20>) + 8049000: 4604 mov r4, r0 + 8049002: 4608 mov r0, r1 + 8049004: 4611 mov r1, r2 + 8049006: 2200 movs r2, #0 + 8049008: 602a str r2, [r5, #0] + 804900a: 461a mov r2, r3 + 804900c: f7e2 fb3c bl 802b688 <_lseek> + 8049010: 1c43 adds r3, r0, #1 + 8049012: d102 bne.n 804901a <_lseek_r+0x1e> + 8049014: 682b ldr r3, [r5, #0] + 8049016: b103 cbz r3, 804901a <_lseek_r+0x1e> + 8049018: 6023 str r3, [r4, #0] + 804901a: bd38 pop {r3, r4, r5, pc} + 804901c: 2400ec4c .word 0x2400ec4c + +08049020 <__swhatbuf_r>: + 8049020: b570 push {r4, r5, r6, lr} + 8049022: 460e mov r6, r1 + 8049024: f9b1 100e ldrsh.w r1, [r1, #14] + 8049028: 2900 cmp r1, #0 + 804902a: b096 sub sp, #88 ; 0x58 + 804902c: 4614 mov r4, r2 + 804902e: 461d mov r5, r3 + 8049030: da08 bge.n 8049044 <__swhatbuf_r+0x24> + 8049032: f9b6 300c ldrsh.w r3, [r6, #12] + 8049036: 2200 movs r2, #0 + 8049038: 602a str r2, [r5, #0] + 804903a: 061a lsls r2, r3, #24 + 804903c: d410 bmi.n 8049060 <__swhatbuf_r+0x40> + 804903e: f44f 6380 mov.w r3, #1024 ; 0x400 + 8049042: e00e b.n 8049062 <__swhatbuf_r+0x42> + 8049044: 466a mov r2, sp + 8049046: f000 f8d7 bl 80491f8 <_fstat_r> + 804904a: 2800 cmp r0, #0 + 804904c: dbf1 blt.n 8049032 <__swhatbuf_r+0x12> + 804904e: 9a01 ldr r2, [sp, #4] + 8049050: f402 4270 and.w r2, r2, #61440 ; 0xf000 + 8049054: f5a2 5300 sub.w r3, r2, #8192 ; 0x2000 + 8049058: 425a negs r2, r3 + 804905a: 415a adcs r2, r3 + 804905c: 602a str r2, [r5, #0] + 804905e: e7ee b.n 804903e <__swhatbuf_r+0x1e> + 8049060: 2340 movs r3, #64 ; 0x40 + 8049062: 2000 movs r0, #0 + 8049064: 6023 str r3, [r4, #0] + 8049066: b016 add sp, #88 ; 0x58 + 8049068: bd70 pop {r4, r5, r6, pc} ... -0804902c <__smakebuf_r>: - 804902c: 898b ldrh r3, [r1, #12] - 804902e: b573 push {r0, r1, r4, r5, r6, lr} - 8049030: 079d lsls r5, r3, #30 - 8049032: 4606 mov r6, r0 - 8049034: 460c mov r4, r1 - 8049036: d507 bpl.n 8049048 <__smakebuf_r+0x1c> - 8049038: f104 0347 add.w r3, r4, #71 ; 0x47 - 804903c: 6023 str r3, [r4, #0] - 804903e: 6123 str r3, [r4, #16] - 8049040: 2301 movs r3, #1 - 8049042: 6163 str r3, [r4, #20] - 8049044: b002 add sp, #8 - 8049046: bd70 pop {r4, r5, r6, pc} - 8049048: ab01 add r3, sp, #4 - 804904a: 466a mov r2, sp - 804904c: f7ff ffc8 bl 8048fe0 <__swhatbuf_r> - 8049050: 9900 ldr r1, [sp, #0] - 8049052: 4605 mov r5, r0 - 8049054: 4630 mov r0, r6 - 8049056: f7fe ff31 bl 8047ebc <_malloc_r> - 804905a: b948 cbnz r0, 8049070 <__smakebuf_r+0x44> - 804905c: f9b4 300c ldrsh.w r3, [r4, #12] - 8049060: 059a lsls r2, r3, #22 - 8049062: d4ef bmi.n 8049044 <__smakebuf_r+0x18> - 8049064: f023 0303 bic.w r3, r3, #3 - 8049068: f043 0302 orr.w r3, r3, #2 - 804906c: 81a3 strh r3, [r4, #12] - 804906e: e7e3 b.n 8049038 <__smakebuf_r+0xc> - 8049070: 4b0d ldr r3, [pc, #52] ; (80490a8 <__smakebuf_r+0x7c>) - 8049072: 62b3 str r3, [r6, #40] ; 0x28 - 8049074: 89a3 ldrh r3, [r4, #12] - 8049076: 6020 str r0, [r4, #0] - 8049078: f043 0380 orr.w r3, r3, #128 ; 0x80 - 804907c: 81a3 strh r3, [r4, #12] - 804907e: 9b00 ldr r3, [sp, #0] - 8049080: 6163 str r3, [r4, #20] - 8049082: 9b01 ldr r3, [sp, #4] - 8049084: 6120 str r0, [r4, #16] - 8049086: b15b cbz r3, 80490a0 <__smakebuf_r+0x74> - 8049088: f9b4 100e ldrsh.w r1, [r4, #14] - 804908c: 4630 mov r0, r6 - 804908e: f000 f8a5 bl 80491dc <_isatty_r> - 8049092: b128 cbz r0, 80490a0 <__smakebuf_r+0x74> - 8049094: 89a3 ldrh r3, [r4, #12] - 8049096: f023 0303 bic.w r3, r3, #3 - 804909a: f043 0301 orr.w r3, r3, #1 - 804909e: 81a3 strh r3, [r4, #12] - 80490a0: 89a0 ldrh r0, [r4, #12] - 80490a2: 4305 orrs r5, r0 - 80490a4: 81a5 strh r5, [r4, #12] - 80490a6: e7cd b.n 8049044 <__smakebuf_r+0x18> - 80490a8: 08048165 .word 0x08048165 - -080490ac <_realloc_r>: - 80490ac: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} - 80490b0: 4680 mov r8, r0 - 80490b2: 4614 mov r4, r2 - 80490b4: 460e mov r6, r1 - 80490b6: b921 cbnz r1, 80490c2 <_realloc_r+0x16> - 80490b8: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} - 80490bc: 4611 mov r1, r2 - 80490be: f7fe befd b.w 8047ebc <_malloc_r> - 80490c2: b92a cbnz r2, 80490d0 <_realloc_r+0x24> - 80490c4: f7fe fe8e bl 8047de4 <_free_r> - 80490c8: 4625 mov r5, r4 - 80490ca: 4628 mov r0, r5 - 80490cc: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} - 80490d0: f000 f894 bl 80491fc <_malloc_usable_size_r> - 80490d4: 4284 cmp r4, r0 - 80490d6: 4607 mov r7, r0 - 80490d8: d802 bhi.n 80490e0 <_realloc_r+0x34> - 80490da: ebb4 0f50 cmp.w r4, r0, lsr #1 - 80490de: d812 bhi.n 8049106 <_realloc_r+0x5a> - 80490e0: 4621 mov r1, r4 - 80490e2: 4640 mov r0, r8 - 80490e4: f7fe feea bl 8047ebc <_malloc_r> - 80490e8: 4605 mov r5, r0 - 80490ea: 2800 cmp r0, #0 - 80490ec: d0ed beq.n 80490ca <_realloc_r+0x1e> - 80490ee: 42bc cmp r4, r7 - 80490f0: 4622 mov r2, r4 - 80490f2: 4631 mov r1, r6 - 80490f4: bf28 it cs - 80490f6: 463a movcs r2, r7 - 80490f8: f7fe fe44 bl 8047d84 - 80490fc: 4631 mov r1, r6 - 80490fe: 4640 mov r0, r8 - 8049100: f7fe fe70 bl 8047de4 <_free_r> - 8049104: e7e1 b.n 80490ca <_realloc_r+0x1e> - 8049106: 4635 mov r5, r6 - 8049108: e7df b.n 80490ca <_realloc_r+0x1e> +0804906c <__smakebuf_r>: + 804906c: 898b ldrh r3, [r1, #12] + 804906e: b573 push {r0, r1, r4, r5, r6, lr} + 8049070: 079d lsls r5, r3, #30 + 8049072: 4606 mov r6, r0 + 8049074: 460c mov r4, r1 + 8049076: d507 bpl.n 8049088 <__smakebuf_r+0x1c> + 8049078: f104 0347 add.w r3, r4, #71 ; 0x47 + 804907c: 6023 str r3, [r4, #0] + 804907e: 6123 str r3, [r4, #16] + 8049080: 2301 movs r3, #1 + 8049082: 6163 str r3, [r4, #20] + 8049084: b002 add sp, #8 + 8049086: bd70 pop {r4, r5, r6, pc} + 8049088: ab01 add r3, sp, #4 + 804908a: 466a mov r2, sp + 804908c: f7ff ffc8 bl 8049020 <__swhatbuf_r> + 8049090: 9900 ldr r1, [sp, #0] + 8049092: 4605 mov r5, r0 + 8049094: 4630 mov r0, r6 + 8049096: f7fe ff31 bl 8047efc <_malloc_r> + 804909a: b948 cbnz r0, 80490b0 <__smakebuf_r+0x44> + 804909c: f9b4 300c ldrsh.w r3, [r4, #12] + 80490a0: 059a lsls r2, r3, #22 + 80490a2: d4ef bmi.n 8049084 <__smakebuf_r+0x18> + 80490a4: f023 0303 bic.w r3, r3, #3 + 80490a8: f043 0302 orr.w r3, r3, #2 + 80490ac: 81a3 strh r3, [r4, #12] + 80490ae: e7e3 b.n 8049078 <__smakebuf_r+0xc> + 80490b0: 4b0d ldr r3, [pc, #52] ; (80490e8 <__smakebuf_r+0x7c>) + 80490b2: 62b3 str r3, [r6, #40] ; 0x28 + 80490b4: 89a3 ldrh r3, [r4, #12] + 80490b6: 6020 str r0, [r4, #0] + 80490b8: f043 0380 orr.w r3, r3, #128 ; 0x80 + 80490bc: 81a3 strh r3, [r4, #12] + 80490be: 9b00 ldr r3, [sp, #0] + 80490c0: 6163 str r3, [r4, #20] + 80490c2: 9b01 ldr r3, [sp, #4] + 80490c4: 6120 str r0, [r4, #16] + 80490c6: b15b cbz r3, 80490e0 <__smakebuf_r+0x74> + 80490c8: f9b4 100e ldrsh.w r1, [r4, #14] + 80490cc: 4630 mov r0, r6 + 80490ce: f000 f8a5 bl 804921c <_isatty_r> + 80490d2: b128 cbz r0, 80490e0 <__smakebuf_r+0x74> + 80490d4: 89a3 ldrh r3, [r4, #12] + 80490d6: f023 0303 bic.w r3, r3, #3 + 80490da: f043 0301 orr.w r3, r3, #1 + 80490de: 81a3 strh r3, [r4, #12] + 80490e0: 89a0 ldrh r0, [r4, #12] + 80490e2: 4305 orrs r5, r0 + 80490e4: 81a5 strh r5, [r4, #12] + 80490e6: e7cd b.n 8049084 <__smakebuf_r+0x18> + 80490e8: 080481a5 .word 0x080481a5 + +080490ec <_realloc_r>: + 80490ec: e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr} + 80490f0: 4680 mov r8, r0 + 80490f2: 4614 mov r4, r2 + 80490f4: 460e mov r6, r1 + 80490f6: b921 cbnz r1, 8049102 <_realloc_r+0x16> + 80490f8: e8bd 41f0 ldmia.w sp!, {r4, r5, r6, r7, r8, lr} + 80490fc: 4611 mov r1, r2 + 80490fe: f7fe befd b.w 8047efc <_malloc_r> + 8049102: b92a cbnz r2, 8049110 <_realloc_r+0x24> + 8049104: f7fe fe8e bl 8047e24 <_free_r> + 8049108: 4625 mov r5, r4 + 804910a: 4628 mov r0, r5 + 804910c: e8bd 81f0 ldmia.w sp!, {r4, r5, r6, r7, r8, pc} + 8049110: f000 f894 bl 804923c <_malloc_usable_size_r> + 8049114: 4284 cmp r4, r0 + 8049116: 4607 mov r7, r0 + 8049118: d802 bhi.n 8049120 <_realloc_r+0x34> + 804911a: ebb4 0f50 cmp.w r4, r0, lsr #1 + 804911e: d812 bhi.n 8049146 <_realloc_r+0x5a> + 8049120: 4621 mov r1, r4 + 8049122: 4640 mov r0, r8 + 8049124: f7fe feea bl 8047efc <_malloc_r> + 8049128: 4605 mov r5, r0 + 804912a: 2800 cmp r0, #0 + 804912c: d0ed beq.n 804910a <_realloc_r+0x1e> + 804912e: 42bc cmp r4, r7 + 8049130: 4622 mov r2, r4 + 8049132: 4631 mov r1, r6 + 8049134: bf28 it cs + 8049136: 463a movcs r2, r7 + 8049138: f7fe fe44 bl 8047dc4 + 804913c: 4631 mov r1, r6 + 804913e: 4640 mov r0, r8 + 8049140: f7fe fe70 bl 8047e24 <_free_r> + 8049144: e7e1 b.n 804910a <_realloc_r+0x1e> + 8049146: 4635 mov r5, r6 + 8049148: e7df b.n 804910a <_realloc_r+0x1e> ... -0804910c <_read_r>: - 804910c: b538 push {r3, r4, r5, lr} - 804910e: 4d07 ldr r5, [pc, #28] ; (804912c <_read_r+0x20>) - 8049110: 4604 mov r4, r0 - 8049112: 4608 mov r0, r1 - 8049114: 4611 mov r1, r2 - 8049116: 2200 movs r2, #0 - 8049118: 602a str r2, [r5, #0] - 804911a: 461a mov r2, r3 - 804911c: f7e2 fa34 bl 802b588 <_read> - 8049120: 1c43 adds r3, r0, #1 - 8049122: d102 bne.n 804912a <_read_r+0x1e> - 8049124: 682b ldr r3, [r5, #0] - 8049126: b103 cbz r3, 804912a <_read_r+0x1e> - 8049128: 6023 str r3, [r4, #0] - 804912a: bd38 pop {r3, r4, r5, pc} - 804912c: 2400ec4c .word 0x2400ec4c - -08049130 <_raise_r>: - 8049130: 291f cmp r1, #31 - 8049132: b538 push {r3, r4, r5, lr} - 8049134: 4604 mov r4, r0 - 8049136: 460d mov r5, r1 - 8049138: d904 bls.n 8049144 <_raise_r+0x14> - 804913a: 2316 movs r3, #22 - 804913c: 6003 str r3, [r0, #0] - 804913e: f04f 30ff mov.w r0, #4294967295 - 8049142: bd38 pop {r3, r4, r5, pc} - 8049144: 6c42 ldr r2, [r0, #68] ; 0x44 - 8049146: b112 cbz r2, 804914e <_raise_r+0x1e> - 8049148: f852 3021 ldr.w r3, [r2, r1, lsl #2] - 804914c: b94b cbnz r3, 8049162 <_raise_r+0x32> - 804914e: 4620 mov r0, r4 - 8049150: f000 f830 bl 80491b4 <_getpid_r> - 8049154: 462a mov r2, r5 - 8049156: 4601 mov r1, r0 - 8049158: 4620 mov r0, r4 - 804915a: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} - 804915e: f000 b817 b.w 8049190 <_kill_r> - 8049162: 2b01 cmp r3, #1 - 8049164: d00a beq.n 804917c <_raise_r+0x4c> - 8049166: 1c59 adds r1, r3, #1 - 8049168: d103 bne.n 8049172 <_raise_r+0x42> - 804916a: 2316 movs r3, #22 - 804916c: 6003 str r3, [r0, #0] - 804916e: 2001 movs r0, #1 - 8049170: e7e7 b.n 8049142 <_raise_r+0x12> - 8049172: 2400 movs r4, #0 - 8049174: f842 4025 str.w r4, [r2, r5, lsl #2] - 8049178: 4628 mov r0, r5 - 804917a: 4798 blx r3 - 804917c: 2000 movs r0, #0 - 804917e: e7e0 b.n 8049142 <_raise_r+0x12> - -08049180 : - 8049180: 4b02 ldr r3, [pc, #8] ; (804918c ) - 8049182: 4601 mov r1, r0 - 8049184: 6818 ldr r0, [r3, #0] - 8049186: f7ff bfd3 b.w 8049130 <_raise_r> - 804918a: bf00 nop - 804918c: 24000148 .word 0x24000148 - -08049190 <_kill_r>: - 8049190: b538 push {r3, r4, r5, lr} - 8049192: 4d07 ldr r5, [pc, #28] ; (80491b0 <_kill_r+0x20>) - 8049194: 2300 movs r3, #0 - 8049196: 4604 mov r4, r0 - 8049198: 4608 mov r0, r1 - 804919a: 4611 mov r1, r2 - 804919c: 602b str r3, [r5, #0] - 804919e: f7e2 f9d7 bl 802b550 <_kill> - 80491a2: 1c43 adds r3, r0, #1 - 80491a4: d102 bne.n 80491ac <_kill_r+0x1c> - 80491a6: 682b ldr r3, [r5, #0] - 80491a8: b103 cbz r3, 80491ac <_kill_r+0x1c> - 80491aa: 6023 str r3, [r4, #0] - 80491ac: bd38 pop {r3, r4, r5, pc} - 80491ae: bf00 nop - 80491b0: 2400ec4c .word 0x2400ec4c - -080491b4 <_getpid_r>: - 80491b4: f7e2 b9c4 b.w 802b540 <_getpid> - -080491b8 <_fstat_r>: - 80491b8: b538 push {r3, r4, r5, lr} - 80491ba: 4d07 ldr r5, [pc, #28] ; (80491d8 <_fstat_r+0x20>) - 80491bc: 2300 movs r3, #0 - 80491be: 4604 mov r4, r0 - 80491c0: 4608 mov r0, r1 - 80491c2: 4611 mov r1, r2 - 80491c4: 602b str r3, [r5, #0] - 80491c6: f7e2 fa24 bl 802b612 <_fstat> - 80491ca: 1c43 adds r3, r0, #1 - 80491cc: d102 bne.n 80491d4 <_fstat_r+0x1c> - 80491ce: 682b ldr r3, [r5, #0] - 80491d0: b103 cbz r3, 80491d4 <_fstat_r+0x1c> - 80491d2: 6023 str r3, [r4, #0] - 80491d4: bd38 pop {r3, r4, r5, pc} - 80491d6: bf00 nop - 80491d8: 2400ec4c .word 0x2400ec4c - -080491dc <_isatty_r>: - 80491dc: b538 push {r3, r4, r5, lr} - 80491de: 4d06 ldr r5, [pc, #24] ; (80491f8 <_isatty_r+0x1c>) - 80491e0: 2300 movs r3, #0 - 80491e2: 4604 mov r4, r0 - 80491e4: 4608 mov r0, r1 - 80491e6: 602b str r3, [r5, #0] - 80491e8: f7e2 fa23 bl 802b632 <_isatty> - 80491ec: 1c43 adds r3, r0, #1 - 80491ee: d102 bne.n 80491f6 <_isatty_r+0x1a> - 80491f0: 682b ldr r3, [r5, #0] - 80491f2: b103 cbz r3, 80491f6 <_isatty_r+0x1a> - 80491f4: 6023 str r3, [r4, #0] - 80491f6: bd38 pop {r3, r4, r5, pc} - 80491f8: 2400ec4c .word 0x2400ec4c - -080491fc <_malloc_usable_size_r>: - 80491fc: f851 3c04 ldr.w r3, [r1, #-4] - 8049200: 1f18 subs r0, r3, #4 - 8049202: 2b00 cmp r3, #0 - 8049204: bfbc itt lt - 8049206: 580b ldrlt r3, [r1, r0] - 8049208: 18c0 addlt r0, r0, r3 - 804920a: 4770 bx lr - -0804920c : - 804920c: f000 b820 b.w 8049250 <__ieee754_atan2> - -08049210 : - 8049210: b508 push {r3, lr} - 8049212: ed2d 8b04 vpush {d8-d9} - 8049216: eeb0 8b40 vmov.f64 d8, d0 - 804921a: f000 f8db bl 80493d4 <__ieee754_sqrt> - 804921e: eeb4 8b48 vcmp.f64 d8, d8 - 8049222: eef1 fa10 vmrs APSR_nzcv, fpscr - 8049226: d60c bvs.n 8049242 - 8049228: ed9f 9b07 vldr d9, [pc, #28] ; 8049248 - 804922c: eeb4 8bc9 vcmpe.f64 d8, d9 - 8049230: eef1 fa10 vmrs APSR_nzcv, fpscr - 8049234: d505 bpl.n 8049242 - 8049236: f7fe ff6b bl 8048110 <__errno> - 804923a: ee89 0b09 vdiv.f64 d0, d9, d9 - 804923e: 2321 movs r3, #33 ; 0x21 - 8049240: 6003 str r3, [r0, #0] - 8049242: ecbd 8b04 vpop {d8-d9} - 8049246: bd08 pop {r3, pc} +0804914c <_read_r>: + 804914c: b538 push {r3, r4, r5, lr} + 804914e: 4d07 ldr r5, [pc, #28] ; (804916c <_read_r+0x20>) + 8049150: 4604 mov r4, r0 + 8049152: 4608 mov r0, r1 + 8049154: 4611 mov r1, r2 + 8049156: 2200 movs r2, #0 + 8049158: 602a str r2, [r5, #0] + 804915a: 461a mov r2, r3 + 804915c: f7e2 fa34 bl 802b5c8 <_read> + 8049160: 1c43 adds r3, r0, #1 + 8049162: d102 bne.n 804916a <_read_r+0x1e> + 8049164: 682b ldr r3, [r5, #0] + 8049166: b103 cbz r3, 804916a <_read_r+0x1e> + 8049168: 6023 str r3, [r4, #0] + 804916a: bd38 pop {r3, r4, r5, pc} + 804916c: 2400ec4c .word 0x2400ec4c + +08049170 <_raise_r>: + 8049170: 291f cmp r1, #31 + 8049172: b538 push {r3, r4, r5, lr} + 8049174: 4604 mov r4, r0 + 8049176: 460d mov r5, r1 + 8049178: d904 bls.n 8049184 <_raise_r+0x14> + 804917a: 2316 movs r3, #22 + 804917c: 6003 str r3, [r0, #0] + 804917e: f04f 30ff mov.w r0, #4294967295 + 8049182: bd38 pop {r3, r4, r5, pc} + 8049184: 6c42 ldr r2, [r0, #68] ; 0x44 + 8049186: b112 cbz r2, 804918e <_raise_r+0x1e> + 8049188: f852 3021 ldr.w r3, [r2, r1, lsl #2] + 804918c: b94b cbnz r3, 80491a2 <_raise_r+0x32> + 804918e: 4620 mov r0, r4 + 8049190: f000 f830 bl 80491f4 <_getpid_r> + 8049194: 462a mov r2, r5 + 8049196: 4601 mov r1, r0 + 8049198: 4620 mov r0, r4 + 804919a: e8bd 4038 ldmia.w sp!, {r3, r4, r5, lr} + 804919e: f000 b817 b.w 80491d0 <_kill_r> + 80491a2: 2b01 cmp r3, #1 + 80491a4: d00a beq.n 80491bc <_raise_r+0x4c> + 80491a6: 1c59 adds r1, r3, #1 + 80491a8: d103 bne.n 80491b2 <_raise_r+0x42> + 80491aa: 2316 movs r3, #22 + 80491ac: 6003 str r3, [r0, #0] + 80491ae: 2001 movs r0, #1 + 80491b0: e7e7 b.n 8049182 <_raise_r+0x12> + 80491b2: 2400 movs r4, #0 + 80491b4: f842 4025 str.w r4, [r2, r5, lsl #2] + 80491b8: 4628 mov r0, r5 + 80491ba: 4798 blx r3 + 80491bc: 2000 movs r0, #0 + 80491be: e7e0 b.n 8049182 <_raise_r+0x12> + +080491c0 : + 80491c0: 4b02 ldr r3, [pc, #8] ; (80491cc ) + 80491c2: 4601 mov r1, r0 + 80491c4: 6818 ldr r0, [r3, #0] + 80491c6: f7ff bfd3 b.w 8049170 <_raise_r> + 80491ca: bf00 nop + 80491cc: 24000148 .word 0x24000148 + +080491d0 <_kill_r>: + 80491d0: b538 push {r3, r4, r5, lr} + 80491d2: 4d07 ldr r5, [pc, #28] ; (80491f0 <_kill_r+0x20>) + 80491d4: 2300 movs r3, #0 + 80491d6: 4604 mov r4, r0 + 80491d8: 4608 mov r0, r1 + 80491da: 4611 mov r1, r2 + 80491dc: 602b str r3, [r5, #0] + 80491de: f7e2 f9d7 bl 802b590 <_kill> + 80491e2: 1c43 adds r3, r0, #1 + 80491e4: d102 bne.n 80491ec <_kill_r+0x1c> + 80491e6: 682b ldr r3, [r5, #0] + 80491e8: b103 cbz r3, 80491ec <_kill_r+0x1c> + 80491ea: 6023 str r3, [r4, #0] + 80491ec: bd38 pop {r3, r4, r5, pc} + 80491ee: bf00 nop + 80491f0: 2400ec4c .word 0x2400ec4c + +080491f4 <_getpid_r>: + 80491f4: f7e2 b9c4 b.w 802b580 <_getpid> + +080491f8 <_fstat_r>: + 80491f8: b538 push {r3, r4, r5, lr} + 80491fa: 4d07 ldr r5, [pc, #28] ; (8049218 <_fstat_r+0x20>) + 80491fc: 2300 movs r3, #0 + 80491fe: 4604 mov r4, r0 + 8049200: 4608 mov r0, r1 + 8049202: 4611 mov r1, r2 + 8049204: 602b str r3, [r5, #0] + 8049206: f7e2 fa24 bl 802b652 <_fstat> + 804920a: 1c43 adds r3, r0, #1 + 804920c: d102 bne.n 8049214 <_fstat_r+0x1c> + 804920e: 682b ldr r3, [r5, #0] + 8049210: b103 cbz r3, 8049214 <_fstat_r+0x1c> + 8049212: 6023 str r3, [r4, #0] + 8049214: bd38 pop {r3, r4, r5, pc} + 8049216: bf00 nop + 8049218: 2400ec4c .word 0x2400ec4c + +0804921c <_isatty_r>: + 804921c: b538 push {r3, r4, r5, lr} + 804921e: 4d06 ldr r5, [pc, #24] ; (8049238 <_isatty_r+0x1c>) + 8049220: 2300 movs r3, #0 + 8049222: 4604 mov r4, r0 + 8049224: 4608 mov r0, r1 + 8049226: 602b str r3, [r5, #0] + 8049228: f7e2 fa23 bl 802b672 <_isatty> + 804922c: 1c43 adds r3, r0, #1 + 804922e: d102 bne.n 8049236 <_isatty_r+0x1a> + 8049230: 682b ldr r3, [r5, #0] + 8049232: b103 cbz r3, 8049236 <_isatty_r+0x1a> + 8049234: 6023 str r3, [r4, #0] + 8049236: bd38 pop {r3, r4, r5, pc} + 8049238: 2400ec4c .word 0x2400ec4c + +0804923c <_malloc_usable_size_r>: + 804923c: f851 3c04 ldr.w r3, [r1, #-4] + 8049240: 1f18 subs r0, r3, #4 + 8049242: 2b00 cmp r3, #0 + 8049244: bfbc itt lt + 8049246: 580b ldrlt r3, [r1, r0] + 8049248: 18c0 addlt r0, r0, r3 + 804924a: 4770 bx lr + +0804924c : + 804924c: f000 b820 b.w 8049290 <__ieee754_atan2> + +08049250 : + 8049250: b508 push {r3, lr} + 8049252: ed2d 8b04 vpush {d8-d9} + 8049256: eeb0 8b40 vmov.f64 d8, d0 + 804925a: f000 f8db bl 8049414 <__ieee754_sqrt> + 804925e: eeb4 8b48 vcmp.f64 d8, d8 + 8049262: eef1 fa10 vmrs APSR_nzcv, fpscr + 8049266: d60c bvs.n 8049282 + 8049268: ed9f 9b07 vldr d9, [pc, #28] ; 8049288 + 804926c: eeb4 8bc9 vcmpe.f64 d8, d9 + 8049270: eef1 fa10 vmrs APSR_nzcv, fpscr + 8049274: d505 bpl.n 8049282 + 8049276: f7fe ff6b bl 8048150 <__errno> + 804927a: ee89 0b09 vdiv.f64 d0, d9, d9 + 804927e: 2321 movs r3, #33 ; 0x21 + 8049280: 6003 str r3, [r0, #0] + 8049282: ecbd 8b04 vpop {d8-d9} + 8049286: bd08 pop {r3, pc} ... -08049250 <__ieee754_atan2>: - 8049250: b5f8 push {r3, r4, r5, r6, r7, lr} - 8049252: eeb0 7b40 vmov.f64 d7, d0 - 8049256: ee11 6a10 vmov r6, s2 - 804925a: ee11 0a90 vmov r0, s3 - 804925e: 4273 negs r3, r6 - 8049260: 4f59 ldr r7, [pc, #356] ; (80493c8 <__ieee754_atan2+0x178>) - 8049262: f020 4200 bic.w r2, r0, #2147483648 ; 0x80000000 - 8049266: 4333 orrs r3, r6 - 8049268: ea42 73d3 orr.w r3, r2, r3, lsr #31 - 804926c: 42bb cmp r3, r7 - 804926e: d80d bhi.n 804928c <__ieee754_atan2+0x3c> - 8049270: ee10 ca10 vmov ip, s0 - 8049274: ee17 5a90 vmov r5, s15 - 8049278: f1cc 0100 rsb r1, ip, #0 - 804927c: f025 4300 bic.w r3, r5, #2147483648 ; 0x80000000 - 8049280: ea41 010c orr.w r1, r1, ip - 8049284: ea43 71d1 orr.w r1, r3, r1, lsr #31 - 8049288: 42b9 cmp r1, r7 - 804928a: d904 bls.n 8049296 <__ieee754_atan2+0x46> - 804928c: ee37 7b01 vadd.f64 d7, d7, d1 - 8049290: eeb0 0b47 vmov.f64 d0, d7 - 8049294: bdf8 pop {r3, r4, r5, r6, r7, pc} - 8049296: f100 4140 add.w r1, r0, #3221225472 ; 0xc0000000 - 804929a: f501 1180 add.w r1, r1, #1048576 ; 0x100000 - 804929e: 4331 orrs r1, r6 - 80492a0: d103 bne.n 80492aa <__ieee754_atan2+0x5a> - 80492a2: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} - 80492a6: f000 b89b b.w 80493e0 - 80492aa: 1784 asrs r4, r0, #30 - 80492ac: f004 0402 and.w r4, r4, #2 - 80492b0: ea53 010c orrs.w r1, r3, ip - 80492b4: ea44 74d5 orr.w r4, r4, r5, lsr #31 - 80492b8: d107 bne.n 80492ca <__ieee754_atan2+0x7a> - 80492ba: 2c02 cmp r4, #2 - 80492bc: d05d beq.n 804937a <__ieee754_atan2+0x12a> - 80492be: ed9f 6b34 vldr d6, [pc, #208] ; 8049390 <__ieee754_atan2+0x140> - 80492c2: 2c03 cmp r4, #3 - 80492c4: fe06 7b00 vseleq.f64 d7, d6, d0 - 80492c8: e7e2 b.n 8049290 <__ieee754_atan2+0x40> - 80492ca: ea52 0106 orrs.w r1, r2, r6 - 80492ce: d107 bne.n 80492e0 <__ieee754_atan2+0x90> - 80492d0: ed9f 7b31 vldr d7, [pc, #196] ; 8049398 <__ieee754_atan2+0x148> - 80492d4: ed9f 0b32 vldr d0, [pc, #200] ; 80493a0 <__ieee754_atan2+0x150> - 80492d8: 2d00 cmp r5, #0 - 80492da: fe27 7b00 vselge.f64 d7, d7, d0 - 80492de: e7d7 b.n 8049290 <__ieee754_atan2+0x40> - 80492e0: 42ba cmp r2, r7 - 80492e2: d10f bne.n 8049304 <__ieee754_atan2+0xb4> - 80492e4: 4293 cmp r3, r2 - 80492e6: f104 34ff add.w r4, r4, #4294967295 - 80492ea: d107 bne.n 80492fc <__ieee754_atan2+0xac> - 80492ec: 2c02 cmp r4, #2 - 80492ee: d847 bhi.n 8049380 <__ieee754_atan2+0x130> - 80492f0: 4b36 ldr r3, [pc, #216] ; (80493cc <__ieee754_atan2+0x17c>) - 80492f2: eb03 04c4 add.w r4, r3, r4, lsl #3 - 80492f6: ed94 7b00 vldr d7, [r4] - 80492fa: e7c9 b.n 8049290 <__ieee754_atan2+0x40> - 80492fc: 2c02 cmp r4, #2 - 80492fe: d842 bhi.n 8049386 <__ieee754_atan2+0x136> - 8049300: 4b33 ldr r3, [pc, #204] ; (80493d0 <__ieee754_atan2+0x180>) - 8049302: e7f6 b.n 80492f2 <__ieee754_atan2+0xa2> - 8049304: 42bb cmp r3, r7 - 8049306: d0e3 beq.n 80492d0 <__ieee754_atan2+0x80> - 8049308: 1a9b subs r3, r3, r2 - 804930a: f1b3 7f74 cmp.w r3, #63963136 ; 0x3d00000 - 804930e: ea4f 5223 mov.w r2, r3, asr #20 - 8049312: da1a bge.n 804934a <__ieee754_atan2+0xfa> - 8049314: 2800 cmp r0, #0 - 8049316: da01 bge.n 804931c <__ieee754_atan2+0xcc> - 8049318: 323c adds r2, #60 ; 0x3c - 804931a: db19 blt.n 8049350 <__ieee754_atan2+0x100> - 804931c: ee87 0b01 vdiv.f64 d0, d7, d1 - 8049320: f000 f958 bl 80495d4 - 8049324: f000 f85c bl 80493e0 - 8049328: eeb0 7b40 vmov.f64 d7, d0 - 804932c: 2c01 cmp r4, #1 - 804932e: d012 beq.n 8049356 <__ieee754_atan2+0x106> - 8049330: 2c02 cmp r4, #2 - 8049332: d019 beq.n 8049368 <__ieee754_atan2+0x118> - 8049334: 2c00 cmp r4, #0 - 8049336: d0ab beq.n 8049290 <__ieee754_atan2+0x40> - 8049338: ed9f 0b1b vldr d0, [pc, #108] ; 80493a8 <__ieee754_atan2+0x158> - 804933c: ee37 7b40 vsub.f64 d7, d7, d0 - 8049340: ed9f 0b1b vldr d0, [pc, #108] ; 80493b0 <__ieee754_atan2+0x160> - 8049344: ee37 7b40 vsub.f64 d7, d7, d0 - 8049348: e7a2 b.n 8049290 <__ieee754_atan2+0x40> - 804934a: ed9f 7b13 vldr d7, [pc, #76] ; 8049398 <__ieee754_atan2+0x148> - 804934e: e7ed b.n 804932c <__ieee754_atan2+0xdc> - 8049350: ed9f 7b19 vldr d7, [pc, #100] ; 80493b8 <__ieee754_atan2+0x168> - 8049354: e7ea b.n 804932c <__ieee754_atan2+0xdc> - 8049356: ee17 1a90 vmov r1, s15 - 804935a: ec53 2b17 vmov r2, r3, d7 - 804935e: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000 - 8049362: ec43 2b17 vmov d7, r2, r3 - 8049366: e793 b.n 8049290 <__ieee754_atan2+0x40> - 8049368: ed9f 0b0f vldr d0, [pc, #60] ; 80493a8 <__ieee754_atan2+0x158> - 804936c: ee37 7b40 vsub.f64 d7, d7, d0 - 8049370: ed9f 0b0f vldr d0, [pc, #60] ; 80493b0 <__ieee754_atan2+0x160> - 8049374: ee30 7b47 vsub.f64 d7, d0, d7 - 8049378: e78a b.n 8049290 <__ieee754_atan2+0x40> - 804937a: ed9f 7b0d vldr d7, [pc, #52] ; 80493b0 <__ieee754_atan2+0x160> - 804937e: e787 b.n 8049290 <__ieee754_atan2+0x40> - 8049380: ed9f 7b0f vldr d7, [pc, #60] ; 80493c0 <__ieee754_atan2+0x170> - 8049384: e784 b.n 8049290 <__ieee754_atan2+0x40> - 8049386: ed9f 7b0c vldr d7, [pc, #48] ; 80493b8 <__ieee754_atan2+0x168> - 804938a: e781 b.n 8049290 <__ieee754_atan2+0x40> - 804938c: f3af 8000 nop.w - 8049390: 54442d18 .word 0x54442d18 - 8049394: c00921fb .word 0xc00921fb - 8049398: 54442d18 .word 0x54442d18 - 804939c: 3ff921fb .word 0x3ff921fb - 80493a0: 54442d18 .word 0x54442d18 - 80493a4: bff921fb .word 0xbff921fb - 80493a8: 33145c07 .word 0x33145c07 - 80493ac: 3ca1a626 .word 0x3ca1a626 - 80493b0: 54442d18 .word 0x54442d18 - 80493b4: 400921fb .word 0x400921fb +08049290 <__ieee754_atan2>: + 8049290: b5f8 push {r3, r4, r5, r6, r7, lr} + 8049292: eeb0 7b40 vmov.f64 d7, d0 + 8049296: ee11 6a10 vmov r6, s2 + 804929a: ee11 0a90 vmov r0, s3 + 804929e: 4273 negs r3, r6 + 80492a0: 4f59 ldr r7, [pc, #356] ; (8049408 <__ieee754_atan2+0x178>) + 80492a2: f020 4200 bic.w r2, r0, #2147483648 ; 0x80000000 + 80492a6: 4333 orrs r3, r6 + 80492a8: ea42 73d3 orr.w r3, r2, r3, lsr #31 + 80492ac: 42bb cmp r3, r7 + 80492ae: d80d bhi.n 80492cc <__ieee754_atan2+0x3c> + 80492b0: ee10 ca10 vmov ip, s0 + 80492b4: ee17 5a90 vmov r5, s15 + 80492b8: f1cc 0100 rsb r1, ip, #0 + 80492bc: f025 4300 bic.w r3, r5, #2147483648 ; 0x80000000 + 80492c0: ea41 010c orr.w r1, r1, ip + 80492c4: ea43 71d1 orr.w r1, r3, r1, lsr #31 + 80492c8: 42b9 cmp r1, r7 + 80492ca: d904 bls.n 80492d6 <__ieee754_atan2+0x46> + 80492cc: ee37 7b01 vadd.f64 d7, d7, d1 + 80492d0: eeb0 0b47 vmov.f64 d0, d7 + 80492d4: bdf8 pop {r3, r4, r5, r6, r7, pc} + 80492d6: f100 4140 add.w r1, r0, #3221225472 ; 0xc0000000 + 80492da: f501 1180 add.w r1, r1, #1048576 ; 0x100000 + 80492de: 4331 orrs r1, r6 + 80492e0: d103 bne.n 80492ea <__ieee754_atan2+0x5a> + 80492e2: e8bd 40f8 ldmia.w sp!, {r3, r4, r5, r6, r7, lr} + 80492e6: f000 b89b b.w 8049420 + 80492ea: 1784 asrs r4, r0, #30 + 80492ec: f004 0402 and.w r4, r4, #2 + 80492f0: ea53 010c orrs.w r1, r3, ip + 80492f4: ea44 74d5 orr.w r4, r4, r5, lsr #31 + 80492f8: d107 bne.n 804930a <__ieee754_atan2+0x7a> + 80492fa: 2c02 cmp r4, #2 + 80492fc: d05d beq.n 80493ba <__ieee754_atan2+0x12a> + 80492fe: ed9f 6b34 vldr d6, [pc, #208] ; 80493d0 <__ieee754_atan2+0x140> + 8049302: 2c03 cmp r4, #3 + 8049304: fe06 7b00 vseleq.f64 d7, d6, d0 + 8049308: e7e2 b.n 80492d0 <__ieee754_atan2+0x40> + 804930a: ea52 0106 orrs.w r1, r2, r6 + 804930e: d107 bne.n 8049320 <__ieee754_atan2+0x90> + 8049310: ed9f 7b31 vldr d7, [pc, #196] ; 80493d8 <__ieee754_atan2+0x148> + 8049314: ed9f 0b32 vldr d0, [pc, #200] ; 80493e0 <__ieee754_atan2+0x150> + 8049318: 2d00 cmp r5, #0 + 804931a: fe27 7b00 vselge.f64 d7, d7, d0 + 804931e: e7d7 b.n 80492d0 <__ieee754_atan2+0x40> + 8049320: 42ba cmp r2, r7 + 8049322: d10f bne.n 8049344 <__ieee754_atan2+0xb4> + 8049324: 4293 cmp r3, r2 + 8049326: f104 34ff add.w r4, r4, #4294967295 + 804932a: d107 bne.n 804933c <__ieee754_atan2+0xac> + 804932c: 2c02 cmp r4, #2 + 804932e: d847 bhi.n 80493c0 <__ieee754_atan2+0x130> + 8049330: 4b36 ldr r3, [pc, #216] ; (804940c <__ieee754_atan2+0x17c>) + 8049332: eb03 04c4 add.w r4, r3, r4, lsl #3 + 8049336: ed94 7b00 vldr d7, [r4] + 804933a: e7c9 b.n 80492d0 <__ieee754_atan2+0x40> + 804933c: 2c02 cmp r4, #2 + 804933e: d842 bhi.n 80493c6 <__ieee754_atan2+0x136> + 8049340: 4b33 ldr r3, [pc, #204] ; (8049410 <__ieee754_atan2+0x180>) + 8049342: e7f6 b.n 8049332 <__ieee754_atan2+0xa2> + 8049344: 42bb cmp r3, r7 + 8049346: d0e3 beq.n 8049310 <__ieee754_atan2+0x80> + 8049348: 1a9b subs r3, r3, r2 + 804934a: f1b3 7f74 cmp.w r3, #63963136 ; 0x3d00000 + 804934e: ea4f 5223 mov.w r2, r3, asr #20 + 8049352: da1a bge.n 804938a <__ieee754_atan2+0xfa> + 8049354: 2800 cmp r0, #0 + 8049356: da01 bge.n 804935c <__ieee754_atan2+0xcc> + 8049358: 323c adds r2, #60 ; 0x3c + 804935a: db19 blt.n 8049390 <__ieee754_atan2+0x100> + 804935c: ee87 0b01 vdiv.f64 d0, d7, d1 + 8049360: f000 f958 bl 8049614 + 8049364: f000 f85c bl 8049420 + 8049368: eeb0 7b40 vmov.f64 d7, d0 + 804936c: 2c01 cmp r4, #1 + 804936e: d012 beq.n 8049396 <__ieee754_atan2+0x106> + 8049370: 2c02 cmp r4, #2 + 8049372: d019 beq.n 80493a8 <__ieee754_atan2+0x118> + 8049374: 2c00 cmp r4, #0 + 8049376: d0ab beq.n 80492d0 <__ieee754_atan2+0x40> + 8049378: ed9f 0b1b vldr d0, [pc, #108] ; 80493e8 <__ieee754_atan2+0x158> + 804937c: ee37 7b40 vsub.f64 d7, d7, d0 + 8049380: ed9f 0b1b vldr d0, [pc, #108] ; 80493f0 <__ieee754_atan2+0x160> + 8049384: ee37 7b40 vsub.f64 d7, d7, d0 + 8049388: e7a2 b.n 80492d0 <__ieee754_atan2+0x40> + 804938a: ed9f 7b13 vldr d7, [pc, #76] ; 80493d8 <__ieee754_atan2+0x148> + 804938e: e7ed b.n 804936c <__ieee754_atan2+0xdc> + 8049390: ed9f 7b19 vldr d7, [pc, #100] ; 80493f8 <__ieee754_atan2+0x168> + 8049394: e7ea b.n 804936c <__ieee754_atan2+0xdc> + 8049396: ee17 1a90 vmov r1, s15 + 804939a: ec53 2b17 vmov r2, r3, d7 + 804939e: f101 4300 add.w r3, r1, #2147483648 ; 0x80000000 + 80493a2: ec43 2b17 vmov d7, r2, r3 + 80493a6: e793 b.n 80492d0 <__ieee754_atan2+0x40> + 80493a8: ed9f 0b0f vldr d0, [pc, #60] ; 80493e8 <__ieee754_atan2+0x158> + 80493ac: ee37 7b40 vsub.f64 d7, d7, d0 + 80493b0: ed9f 0b0f vldr d0, [pc, #60] ; 80493f0 <__ieee754_atan2+0x160> + 80493b4: ee30 7b47 vsub.f64 d7, d0, d7 + 80493b8: e78a b.n 80492d0 <__ieee754_atan2+0x40> + 80493ba: ed9f 7b0d vldr d7, [pc, #52] ; 80493f0 <__ieee754_atan2+0x160> + 80493be: e787 b.n 80492d0 <__ieee754_atan2+0x40> + 80493c0: ed9f 7b0f vldr d7, [pc, #60] ; 8049400 <__ieee754_atan2+0x170> + 80493c4: e784 b.n 80492d0 <__ieee754_atan2+0x40> + 80493c6: ed9f 7b0c vldr d7, [pc, #48] ; 80493f8 <__ieee754_atan2+0x168> + 80493ca: e781 b.n 80492d0 <__ieee754_atan2+0x40> + 80493cc: f3af 8000 nop.w + 80493d0: 54442d18 .word 0x54442d18 + 80493d4: c00921fb .word 0xc00921fb + 80493d8: 54442d18 .word 0x54442d18 + 80493dc: 3ff921fb .word 0x3ff921fb + 80493e0: 54442d18 .word 0x54442d18 + 80493e4: bff921fb .word 0xbff921fb + 80493e8: 33145c07 .word 0x33145c07 + 80493ec: 3ca1a626 .word 0x3ca1a626 + 80493f0: 54442d18 .word 0x54442d18 + 80493f4: 400921fb .word 0x400921fb ... - 80493c0: 54442d18 .word 0x54442d18 - 80493c4: 3fe921fb .word 0x3fe921fb - 80493c8: 7ff00000 .word 0x7ff00000 - 80493cc: 0804d5e8 .word 0x0804d5e8 - 80493d0: 0804d600 .word 0x0804d600 - -080493d4 <__ieee754_sqrt>: - 80493d4: eeb1 0bc0 vsqrt.f64 d0, d0 - 80493d8: 4770 bx lr - 80493da: 0000 movs r0, r0 - 80493dc: 0000 movs r0, r0 + 8049400: 54442d18 .word 0x54442d18 + 8049404: 3fe921fb .word 0x3fe921fb + 8049408: 7ff00000 .word 0x7ff00000 + 804940c: 0804d628 .word 0x0804d628 + 8049410: 0804d640 .word 0x0804d640 + +08049414 <__ieee754_sqrt>: + 8049414: eeb1 0bc0 vsqrt.f64 d0, d0 + 8049418: 4770 bx lr + 804941a: 0000 movs r0, r0 + 804941c: 0000 movs r0, r0 ... -080493e0 : - 80493e0: b538 push {r3, r4, r5, lr} - 80493e2: eeb0 7b40 vmov.f64 d7, d0 - 80493e6: ee17 5a90 vmov r5, s15 - 80493ea: 4b73 ldr r3, [pc, #460] ; (80495b8 ) - 80493ec: f025 4400 bic.w r4, r5, #2147483648 ; 0x80000000 - 80493f0: 429c cmp r4, r3 - 80493f2: dd13 ble.n 804941c - 80493f4: 4b71 ldr r3, [pc, #452] ; (80495bc ) - 80493f6: 429c cmp r4, r3 - 80493f8: dc03 bgt.n 8049402 - 80493fa: d107 bne.n 804940c - 80493fc: ee10 3a10 vmov r3, s0 - 8049400: b123 cbz r3, 804940c - 8049402: ee37 7b07 vadd.f64 d7, d7, d7 - 8049406: eeb0 0b47 vmov.f64 d0, d7 - 804940a: bd38 pop {r3, r4, r5, pc} - 804940c: ed9f 6b4e vldr d6, [pc, #312] ; 8049548 - 8049410: ed9f 7b4f vldr d7, [pc, #316] ; 8049550 - 8049414: 2d00 cmp r5, #0 - 8049416: fe36 7b07 vselgt.f64 d7, d6, d7 - 804941a: e7f4 b.n 8049406 - 804941c: 4b68 ldr r3, [pc, #416] ; (80495c0 ) - 804941e: 429c cmp r4, r3 - 8049420: dc11 bgt.n 8049446 - 8049422: f1a3 73de sub.w r3, r3, #29097984 ; 0x1bc0000 - 8049426: 429c cmp r4, r3 - 8049428: dc0a bgt.n 8049440 - 804942a: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 - 804942e: ed9f 6b4a vldr d6, [pc, #296] ; 8049558 - 8049432: ee30 6b06 vadd.f64 d6, d0, d6 - 8049436: eeb4 6bc5 vcmpe.f64 d6, d5 - 804943a: eef1 fa10 vmrs APSR_nzcv, fpscr - 804943e: dce2 bgt.n 8049406 - 8049440: f04f 33ff mov.w r3, #4294967295 - 8049444: e013 b.n 804946e - 8049446: f000 f8c5 bl 80495d4 - 804944a: 4b5e ldr r3, [pc, #376] ; (80495c4 ) - 804944c: 429c cmp r4, r3 - 804944e: dc4f bgt.n 80494f0 - 8049450: f5a3 2350 sub.w r3, r3, #851968 ; 0xd0000 - 8049454: 429c cmp r4, r3 - 8049456: dc41 bgt.n 80494dc - 8049458: eeb0 7b00 vmov.f64 d7, #0 ; 0x40000000 2.0 - 804945c: eebf 6b00 vmov.f64 d6, #240 ; 0xbf800000 -1.0 - 8049460: 2300 movs r3, #0 - 8049462: eea0 6b07 vfma.f64 d6, d0, d7 - 8049466: ee30 0b07 vadd.f64 d0, d0, d7 - 804946a: ee86 7b00 vdiv.f64 d7, d6, d0 - 804946e: ed9f 6b3c vldr d6, [pc, #240] ; 8049560 - 8049472: ee27 4b07 vmul.f64 d4, d7, d7 - 8049476: ee24 5b04 vmul.f64 d5, d4, d4 - 804947a: ed9f 3b3b vldr d3, [pc, #236] ; 8049568 - 804947e: eea5 3b06 vfma.f64 d3, d5, d6 - 8049482: ed9f 6b3b vldr d6, [pc, #236] ; 8049570 - 8049486: eea3 6b05 vfma.f64 d6, d3, d5 - 804948a: ed9f 3b3b vldr d3, [pc, #236] ; 8049578 - 804948e: eea6 3b05 vfma.f64 d3, d6, d5 - 8049492: ed9f 6b3b vldr d6, [pc, #236] ; 8049580 - 8049496: eea3 6b05 vfma.f64 d6, d3, d5 - 804949a: ed9f 3b3b vldr d3, [pc, #236] ; 8049588 - 804949e: ed9f 2b3c vldr d2, [pc, #240] ; 8049590 - 80494a2: eea6 3b05 vfma.f64 d3, d6, d5 - 80494a6: ed9f 6b3c vldr d6, [pc, #240] ; 8049598 - 80494aa: eea5 2b06 vfma.f64 d2, d5, d6 - 80494ae: ed9f 6b3c vldr d6, [pc, #240] ; 80495a0 - 80494b2: eea2 6b05 vfma.f64 d6, d2, d5 - 80494b6: ed9f 2b3c vldr d2, [pc, #240] ; 80495a8 - 80494ba: eea6 2b05 vfma.f64 d2, d6, d5 - 80494be: ed9f 6b3c vldr d6, [pc, #240] ; 80495b0 - 80494c2: 1c5a adds r2, r3, #1 - 80494c4: eea2 6b05 vfma.f64 d6, d2, d5 - 80494c8: ee26 6b05 vmul.f64 d6, d6, d5 - 80494cc: eea3 6b04 vfma.f64 d6, d3, d4 - 80494d0: ee27 6b06 vmul.f64 d6, d7, d6 - 80494d4: d121 bne.n 804951a - 80494d6: ee37 7b46 vsub.f64 d7, d7, d6 - 80494da: e794 b.n 8049406 - 80494dc: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 - 80494e0: 2301 movs r3, #1 - 80494e2: ee30 6b47 vsub.f64 d6, d0, d7 - 80494e6: ee30 0b07 vadd.f64 d0, d0, d7 - 80494ea: ee86 7b00 vdiv.f64 d7, d6, d0 - 80494ee: e7be b.n 804946e - 80494f0: 4b35 ldr r3, [pc, #212] ; (80495c8 ) - 80494f2: 429c cmp r4, r3 - 80494f4: da0b bge.n 804950e - 80494f6: eeb7 7b08 vmov.f64 d7, #120 ; 0x3fc00000 1.5 - 80494fa: eeb7 6b00 vmov.f64 d6, #112 ; 0x3f800000 1.0 - 80494fe: ee30 5b47 vsub.f64 d5, d0, d7 - 8049502: eea0 6b07 vfma.f64 d6, d0, d7 - 8049506: 2302 movs r3, #2 - 8049508: ee85 7b06 vdiv.f64 d7, d5, d6 - 804950c: e7af b.n 804946e - 804950e: eebf 6b00 vmov.f64 d6, #240 ; 0xbf800000 -1.0 - 8049512: 2303 movs r3, #3 - 8049514: ee86 7b00 vdiv.f64 d7, d6, d0 - 8049518: e7a9 b.n 804946e - 804951a: 4a2c ldr r2, [pc, #176] ; (80495cc ) - 804951c: 492c ldr r1, [pc, #176] ; (80495d0 ) - 804951e: eb02 02c3 add.w r2, r2, r3, lsl #3 - 8049522: eb01 03c3 add.w r3, r1, r3, lsl #3 - 8049526: ed93 5b00 vldr d5, [r3] - 804952a: ee36 6b45 vsub.f64 d6, d6, d5 - 804952e: ee36 7b47 vsub.f64 d7, d6, d7 - 8049532: ed92 6b00 vldr d6, [r2] - 8049536: 2d00 cmp r5, #0 - 8049538: ee36 7b47 vsub.f64 d7, d6, d7 - 804953c: bfb8 it lt - 804953e: eeb1 7b47 vneglt.f64 d7, d7 - 8049542: e760 b.n 8049406 - 8049544: f3af 8000 nop.w - 8049548: 54442d18 .word 0x54442d18 - 804954c: 3ff921fb .word 0x3ff921fb - 8049550: 54442d18 .word 0x54442d18 - 8049554: bff921fb .word 0xbff921fb - 8049558: 8800759c .word 0x8800759c - 804955c: 7e37e43c .word 0x7e37e43c - 8049560: e322da11 .word 0xe322da11 - 8049564: 3f90ad3a .word 0x3f90ad3a - 8049568: 24760deb .word 0x24760deb - 804956c: 3fa97b4b .word 0x3fa97b4b - 8049570: a0d03d51 .word 0xa0d03d51 - 8049574: 3fb10d66 .word 0x3fb10d66 - 8049578: c54c206e .word 0xc54c206e - 804957c: 3fb745cd .word 0x3fb745cd - 8049580: 920083ff .word 0x920083ff - 8049584: 3fc24924 .word 0x3fc24924 - 8049588: 5555550d .word 0x5555550d - 804958c: 3fd55555 .word 0x3fd55555 - 8049590: 52defd9a .word 0x52defd9a - 8049594: bfadde2d .word 0xbfadde2d - 8049598: 2c6a6c2f .word 0x2c6a6c2f - 804959c: bfa2b444 .word 0xbfa2b444 - 80495a0: af749a6d .word 0xaf749a6d - 80495a4: bfb3b0f2 .word 0xbfb3b0f2 - 80495a8: fe231671 .word 0xfe231671 - 80495ac: bfbc71c6 .word 0xbfbc71c6 - 80495b0: 9998ebc4 .word 0x9998ebc4 - 80495b4: bfc99999 .word 0xbfc99999 - 80495b8: 440fffff .word 0x440fffff - 80495bc: 7ff00000 .word 0x7ff00000 - 80495c0: 3fdbffff .word 0x3fdbffff - 80495c4: 3ff2ffff .word 0x3ff2ffff - 80495c8: 40038000 .word 0x40038000 - 80495cc: 0804d618 .word 0x0804d618 - 80495d0: 0804d638 .word 0x0804d638 - -080495d4 : - 80495d4: ec51 0b10 vmov r0, r1, d0 - 80495d8: ee10 2a10 vmov r2, s0 - 80495dc: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000 - 80495e0: ec43 2b10 vmov d0, r2, r3 - 80495e4: 4770 bx lr +08049420 : + 8049420: b538 push {r3, r4, r5, lr} + 8049422: eeb0 7b40 vmov.f64 d7, d0 + 8049426: ee17 5a90 vmov r5, s15 + 804942a: 4b73 ldr r3, [pc, #460] ; (80495f8 ) + 804942c: f025 4400 bic.w r4, r5, #2147483648 ; 0x80000000 + 8049430: 429c cmp r4, r3 + 8049432: dd13 ble.n 804945c + 8049434: 4b71 ldr r3, [pc, #452] ; (80495fc ) + 8049436: 429c cmp r4, r3 + 8049438: dc03 bgt.n 8049442 + 804943a: d107 bne.n 804944c + 804943c: ee10 3a10 vmov r3, s0 + 8049440: b123 cbz r3, 804944c + 8049442: ee37 7b07 vadd.f64 d7, d7, d7 + 8049446: eeb0 0b47 vmov.f64 d0, d7 + 804944a: bd38 pop {r3, r4, r5, pc} + 804944c: ed9f 6b4e vldr d6, [pc, #312] ; 8049588 + 8049450: ed9f 7b4f vldr d7, [pc, #316] ; 8049590 + 8049454: 2d00 cmp r5, #0 + 8049456: fe36 7b07 vselgt.f64 d7, d6, d7 + 804945a: e7f4 b.n 8049446 + 804945c: 4b68 ldr r3, [pc, #416] ; (8049600 ) + 804945e: 429c cmp r4, r3 + 8049460: dc11 bgt.n 8049486 + 8049462: f1a3 73de sub.w r3, r3, #29097984 ; 0x1bc0000 + 8049466: 429c cmp r4, r3 + 8049468: dc0a bgt.n 8049480 + 804946a: eeb7 5b00 vmov.f64 d5, #112 ; 0x3f800000 1.0 + 804946e: ed9f 6b4a vldr d6, [pc, #296] ; 8049598 + 8049472: ee30 6b06 vadd.f64 d6, d0, d6 + 8049476: eeb4 6bc5 vcmpe.f64 d6, d5 + 804947a: eef1 fa10 vmrs APSR_nzcv, fpscr + 804947e: dce2 bgt.n 8049446 + 8049480: f04f 33ff mov.w r3, #4294967295 + 8049484: e013 b.n 80494ae + 8049486: f000 f8c5 bl 8049614 + 804948a: 4b5e ldr r3, [pc, #376] ; (8049604 ) + 804948c: 429c cmp r4, r3 + 804948e: dc4f bgt.n 8049530 + 8049490: f5a3 2350 sub.w r3, r3, #851968 ; 0xd0000 + 8049494: 429c cmp r4, r3 + 8049496: dc41 bgt.n 804951c + 8049498: eeb0 7b00 vmov.f64 d7, #0 ; 0x40000000 2.0 + 804949c: eebf 6b00 vmov.f64 d6, #240 ; 0xbf800000 -1.0 + 80494a0: 2300 movs r3, #0 + 80494a2: eea0 6b07 vfma.f64 d6, d0, d7 + 80494a6: ee30 0b07 vadd.f64 d0, d0, d7 + 80494aa: ee86 7b00 vdiv.f64 d7, d6, d0 + 80494ae: ed9f 6b3c vldr d6, [pc, #240] ; 80495a0 + 80494b2: ee27 4b07 vmul.f64 d4, d7, d7 + 80494b6: ee24 5b04 vmul.f64 d5, d4, d4 + 80494ba: ed9f 3b3b vldr d3, [pc, #236] ; 80495a8 + 80494be: eea5 3b06 vfma.f64 d3, d5, d6 + 80494c2: ed9f 6b3b vldr d6, [pc, #236] ; 80495b0 + 80494c6: eea3 6b05 vfma.f64 d6, d3, d5 + 80494ca: ed9f 3b3b vldr d3, [pc, #236] ; 80495b8 + 80494ce: eea6 3b05 vfma.f64 d3, d6, d5 + 80494d2: ed9f 6b3b vldr d6, [pc, #236] ; 80495c0 + 80494d6: eea3 6b05 vfma.f64 d6, d3, d5 + 80494da: ed9f 3b3b vldr d3, [pc, #236] ; 80495c8 + 80494de: ed9f 2b3c vldr d2, [pc, #240] ; 80495d0 + 80494e2: eea6 3b05 vfma.f64 d3, d6, d5 + 80494e6: ed9f 6b3c vldr d6, [pc, #240] ; 80495d8 + 80494ea: eea5 2b06 vfma.f64 d2, d5, d6 + 80494ee: ed9f 6b3c vldr d6, [pc, #240] ; 80495e0 + 80494f2: eea2 6b05 vfma.f64 d6, d2, d5 + 80494f6: ed9f 2b3c vldr d2, [pc, #240] ; 80495e8 + 80494fa: eea6 2b05 vfma.f64 d2, d6, d5 + 80494fe: ed9f 6b3c vldr d6, [pc, #240] ; 80495f0 + 8049502: 1c5a adds r2, r3, #1 + 8049504: eea2 6b05 vfma.f64 d6, d2, d5 + 8049508: ee26 6b05 vmul.f64 d6, d6, d5 + 804950c: eea3 6b04 vfma.f64 d6, d3, d4 + 8049510: ee27 6b06 vmul.f64 d6, d7, d6 + 8049514: d121 bne.n 804955a + 8049516: ee37 7b46 vsub.f64 d7, d7, d6 + 804951a: e794 b.n 8049446 + 804951c: eeb7 7b00 vmov.f64 d7, #112 ; 0x3f800000 1.0 + 8049520: 2301 movs r3, #1 + 8049522: ee30 6b47 vsub.f64 d6, d0, d7 + 8049526: ee30 0b07 vadd.f64 d0, d0, d7 + 804952a: ee86 7b00 vdiv.f64 d7, d6, d0 + 804952e: e7be b.n 80494ae + 8049530: 4b35 ldr r3, [pc, #212] ; (8049608 ) + 8049532: 429c cmp r4, r3 + 8049534: da0b bge.n 804954e + 8049536: eeb7 7b08 vmov.f64 d7, #120 ; 0x3fc00000 1.5 + 804953a: eeb7 6b00 vmov.f64 d6, #112 ; 0x3f800000 1.0 + 804953e: ee30 5b47 vsub.f64 d5, d0, d7 + 8049542: eea0 6b07 vfma.f64 d6, d0, d7 + 8049546: 2302 movs r3, #2 + 8049548: ee85 7b06 vdiv.f64 d7, d5, d6 + 804954c: e7af b.n 80494ae + 804954e: eebf 6b00 vmov.f64 d6, #240 ; 0xbf800000 -1.0 + 8049552: 2303 movs r3, #3 + 8049554: ee86 7b00 vdiv.f64 d7, d6, d0 + 8049558: e7a9 b.n 80494ae + 804955a: 4a2c ldr r2, [pc, #176] ; (804960c ) + 804955c: 492c ldr r1, [pc, #176] ; (8049610 ) + 804955e: eb02 02c3 add.w r2, r2, r3, lsl #3 + 8049562: eb01 03c3 add.w r3, r1, r3, lsl #3 + 8049566: ed93 5b00 vldr d5, [r3] + 804956a: ee36 6b45 vsub.f64 d6, d6, d5 + 804956e: ee36 7b47 vsub.f64 d7, d6, d7 + 8049572: ed92 6b00 vldr d6, [r2] + 8049576: 2d00 cmp r5, #0 + 8049578: ee36 7b47 vsub.f64 d7, d6, d7 + 804957c: bfb8 it lt + 804957e: eeb1 7b47 vneglt.f64 d7, d7 + 8049582: e760 b.n 8049446 + 8049584: f3af 8000 nop.w + 8049588: 54442d18 .word 0x54442d18 + 804958c: 3ff921fb .word 0x3ff921fb + 8049590: 54442d18 .word 0x54442d18 + 8049594: bff921fb .word 0xbff921fb + 8049598: 8800759c .word 0x8800759c + 804959c: 7e37e43c .word 0x7e37e43c + 80495a0: e322da11 .word 0xe322da11 + 80495a4: 3f90ad3a .word 0x3f90ad3a + 80495a8: 24760deb .word 0x24760deb + 80495ac: 3fa97b4b .word 0x3fa97b4b + 80495b0: a0d03d51 .word 0xa0d03d51 + 80495b4: 3fb10d66 .word 0x3fb10d66 + 80495b8: c54c206e .word 0xc54c206e + 80495bc: 3fb745cd .word 0x3fb745cd + 80495c0: 920083ff .word 0x920083ff + 80495c4: 3fc24924 .word 0x3fc24924 + 80495c8: 5555550d .word 0x5555550d + 80495cc: 3fd55555 .word 0x3fd55555 + 80495d0: 52defd9a .word 0x52defd9a + 80495d4: bfadde2d .word 0xbfadde2d + 80495d8: 2c6a6c2f .word 0x2c6a6c2f + 80495dc: bfa2b444 .word 0xbfa2b444 + 80495e0: af749a6d .word 0xaf749a6d + 80495e4: bfb3b0f2 .word 0xbfb3b0f2 + 80495e8: fe231671 .word 0xfe231671 + 80495ec: bfbc71c6 .word 0xbfbc71c6 + 80495f0: 9998ebc4 .word 0x9998ebc4 + 80495f4: bfc99999 .word 0xbfc99999 + 80495f8: 440fffff .word 0x440fffff + 80495fc: 7ff00000 .word 0x7ff00000 + 8049600: 3fdbffff .word 0x3fdbffff + 8049604: 3ff2ffff .word 0x3ff2ffff + 8049608: 40038000 .word 0x40038000 + 804960c: 0804d658 .word 0x0804d658 + 8049610: 0804d678 .word 0x0804d678 + +08049614 : + 8049614: ec51 0b10 vmov r0, r1, d0 + 8049618: ee10 2a10 vmov r2, s0 + 804961c: f021 4300 bic.w r3, r1, #2147483648 ; 0x80000000 + 8049620: ec43 2b10 vmov d0, r2, r3 + 8049624: 4770 bx lr ... -080495e8 <_init>: - 80495e8: b5f8 push {r3, r4, r5, r6, r7, lr} - 80495ea: bf00 nop - 80495ec: bcf8 pop {r3, r4, r5, r6, r7} - 80495ee: bc08 pop {r3} - 80495f0: 469e mov lr, r3 - 80495f2: 4770 bx lr - -080495f4 <_fini>: - 80495f4: b5f8 push {r3, r4, r5, r6, r7, lr} - 80495f6: bf00 nop - 80495f8: bcf8 pop {r3, r4, r5, r6, r7} - 80495fa: bc08 pop {r3} - 80495fc: 469e mov lr, r3 - 80495fe: 4770 bx lr +08049628 <_init>: + 8049628: b5f8 push {r3, r4, r5, r6, r7, lr} + 804962a: bf00 nop + 804962c: bcf8 pop {r3, r4, r5, r6, r7} + 804962e: bc08 pop {r3} + 8049630: 469e mov lr, r3 + 8049632: 4770 bx lr + +08049634 <_fini>: + 8049634: b5f8 push {r3, r4, r5, r6, r7, lr} + 8049636: bf00 nop + 8049638: bcf8 pop {r3, r4, r5, r6, r7} + 804963a: bc08 pop {r3} + 804963c: 469e mov lr, r3 + 804963e: 4770 bx lr diff --git a/Debug/Negative_Pressure_UDP_1.1.map b/Debug/Negative_Pressure_UDP_1.1.map index 96894d7..372d3e8 100644 --- a/Debug/Negative_Pressure_UDP_1.1.map +++ b/Debug/Negative_Pressure_UDP_1.1.map @@ -42159,7 +42159,7 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x0000000008020000 g_pfnVectors 0x0000000008020298 . = ALIGN (0x4) -.text 0x00000000080202a0 0x29360 +.text 0x00000000080202a0 0x293a0 0x00000000080202a0 . = ALIGN (0x4) *(.text) .text 0x00000000080202a0 0x40 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o @@ -42647,2191 +42647,2192 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x0000000008027bdc 0xb4 ./Core/BASE/Src/MSP/msp_K1061DC.o 0x0000000008027bdc K1061DC_intialize .text.decode_K1061DC - 0x0000000008027c90 0x1a0 ./Core/BASE/Src/MSP/msp_K1061DC.o + 0x0000000008027c90 0x1c0 ./Core/BASE/Src/MSP/msp_K1061DC.o .text.reading_K1061DC_Task - 0x0000000008027e30 0xa0 ./Core/BASE/Src/MSP/msp_K1061DC.o + 0x0000000008027e50 0xa0 ./Core/BASE/Src/MSP/msp_K1061DC.o .text.Angle_Tune_PID - 0x0000000008027ed0 0x100 ./Core/BASE/Src/MSP/msp_PID.o - 0x0000000008027ed0 Angle_Tune_PID + 0x0000000008027ef0 0x100 ./Core/BASE/Src/MSP/msp_PID.o + 0x0000000008027ef0 Angle_Tune_PID .text.TL720D_intialize - 0x0000000008027fd0 0x11c ./Core/BASE/Src/MSP/msp_TL720D.o - 0x0000000008027fd0 TL720D_intialize + 0x0000000008027ff0 0x11c ./Core/BASE/Src/MSP/msp_TL720D.o + 0x0000000008027ff0 TL720D_intialize .text.decode_DDM360B - 0x00000000080280ec 0x190 ./Core/BASE/Src/MSP/msp_TL720D.o + 0x000000000802810c 0x190 ./Core/BASE/Src/MSP/msp_TL720D.o .text.reading_Task_DDM360B - 0x000000000802827c 0x88 ./Core/BASE/Src/MSP/msp_TL720D.o + 0x000000000802829c 0x88 ./Core/BASE/Src/MSP/msp_TL720D.o .text.reading_Task_TL720D - 0x0000000008028304 0x88 ./Core/BASE/Src/MSP/msp_TL720D.o + 0x0000000008028324 0x88 ./Core/BASE/Src/MSP/msp_TL720D.o .text.decode_TL720D - 0x000000000802838c 0x210 ./Core/BASE/Src/MSP/msp_TL720D.o + 0x00000000080283ac 0x22c ./Core/BASE/Src/MSP/msp_TL720D.o .text.changeAngle_LeftZerotoUpZero - 0x000000000802859c 0x38 ./Core/BASE/Src/MSP/msp_TL720D.o - .text.getDeci 0x00000000080285d4 0xb8 ./Core/BASE/Src/MSP/msp_TL720D.o + 0x00000000080285d8 0x38 ./Core/BASE/Src/MSP/msp_TL720D.o + .text.getDeci 0x0000000008028610 0xb8 ./Core/BASE/Src/MSP/msp_TL720D.o .text.Send_WH_LTE_7S0_Data - 0x000000000802868c 0x68 ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o - 0x000000000802868c Send_WH_LTE_7S0_Data + 0x00000000080286c8 0x68 ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o + 0x00000000080286c8 Send_WH_LTE_7S0_Data .text.decode_received_data_from_computer - 0x00000000080286f4 0xb4 ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o - 0x00000000080286f4 decode_received_data_from_computer + 0x0000000008028730 0xb4 ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o + 0x0000000008028730 decode_received_data_from_computer .text.wire_sensor_intialize - 0x00000000080287a8 0xf0 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o - 0x00000000080287a8 wire_sensor_intialize + 0x00000000080287e4 0xf0 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + 0x00000000080287e4 wire_sensor_intialize .text.reading_Task_wire_sensor - 0x0000000008028898 0x60 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + 0x00000000080288d4 0x60 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + *fill* 0x0000000008028934 0x4 .text.decode_wire_sensor - 0x00000000080288f8 0x1b0 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + 0x0000000008028938 0x1b0 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o .text.Automatic_task_Control - 0x0000000008028aa8 0x128 ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008028aa8 Automatic_task_Control + 0x0000000008028ae8 0x128 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028ae8 Automatic_task_Control .text.get_state_DDM - 0x0000000008028bd0 0x94 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028c10 0x94 ./Core/FSM/Src/Automatic_task_Control.o .text.Refresh_MK32_State - 0x0000000008028c64 0x28 ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008028c64 Refresh_MK32_State - *fill* 0x0000000008028c8c 0x4 + 0x0000000008028ca4 0x28 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028ca4 Refresh_MK32_State + *fill* 0x0000000008028ccc 0x4 .text.Auto_ChangeLine_Control - 0x0000000008028c90 0x1e8 ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008028c90 Auto_ChangeLine_Control + 0x0000000008028cd0 0x1e8 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028cd0 Auto_ChangeLine_Control .text.Auto_steer_moveforward_do - 0x0000000008028e78 0x134 ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008028e78 Auto_steer_moveforward_do - *fill* 0x0000000008028fac 0x4 + 0x0000000008028eb8 0x134 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028eb8 Auto_steer_moveforward_do + *fill* 0x0000000008028fec 0x4 .text.Auto_steer_moveback_do - 0x0000000008028fb0 0x13c ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008028fb0 Auto_steer_moveback_do + 0x0000000008028ff0 0x13c ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008028ff0 Auto_steer_moveback_do .text.Auto_steer_do - 0x00000000080290ec 0x154 ./Core/FSM/Src/Automatic_task_Control.o + 0x000000000802912c 0x154 ./Core/FSM/Src/Automatic_task_Control.o .text.SetPWM_Auto - 0x0000000008029240 0x1e0 ./Core/FSM/Src/Automatic_task_Control.o - 0x0000000008029240 SetPWM_Auto + 0x0000000008029280 0x1e0 ./Core/FSM/Src/Automatic_task_Control.o + 0x0000000008029280 SetPWM_Auto .text.Blowers_On_Do - 0x0000000008029420 0x24 ./Core/FSM/Src/blowers_pwm_action.o + 0x0000000008029460 0x24 ./Core/FSM/Src/blowers_pwm_action.o .text.Blowers_Off_Do - 0x0000000008029444 0x16 ./Core/FSM/Src/blowers_pwm_action.o - *fill* 0x000000000802945a 0x2 + 0x0000000008029484 0x16 ./Core/FSM/Src/blowers_pwm_action.o + *fill* 0x000000000802949a 0x2 .text.setBlowersSpeed - 0x000000000802945c 0x5c ./Core/FSM/Src/blowers_pwm_action.o + 0x000000000802949c 0x5c ./Core/FSM/Src/blowers_pwm_action.o .text.blowers_Control_Init - 0x00000000080294b8 0x1c ./Core/FSM/Src/blowers_pwm_action.o - 0x00000000080294b8 blowers_Control_Init + 0x00000000080294f8 0x1c ./Core/FSM/Src/blowers_pwm_action.o + 0x00000000080294f8 blowers_Control_Init .text.fsm_state_run - 0x00000000080294d4 0x24 ./Core/FSM/Src/fsm_state.o - 0x00000000080294d4 fsm_state_run + 0x0000000008029514 0x24 ./Core/FSM/Src/fsm_state.o + 0x0000000008029514 fsm_state_run .text.fsm_state_set - 0x00000000080294f8 0x52 ./Core/FSM/Src/fsm_state.o - 0x00000000080294f8 fsm_state_set + 0x0000000008029538 0x52 ./Core/FSM/Src/fsm_state.o + 0x0000000008029538 fsm_state_set .text.fsm_state_init - 0x000000000802954a 0x1c ./Core/FSM/Src/fsm_state.o - 0x000000000802954a fsm_state_init - *fill* 0x0000000008029566 0x2 + 0x000000000802958a 0x1c ./Core/FSM/Src/fsm_state.o + 0x000000000802958a fsm_state_init + *fill* 0x00000000080295a6 0x2 .text.Fsm_Init - 0x0000000008029568 0x38 ./Core/FSM/Src/fsm_state_control.o - 0x0000000008029568 Fsm_Init + 0x00000000080295a8 0x38 ./Core/FSM/Src/fsm_state_control.o + 0x00000000080295a8 Fsm_Init .text.GF_Dispatch - 0x00000000080295a0 0x3c ./Core/FSM/Src/fsm_state_control.o - 0x00000000080295a0 GF_Dispatch + 0x00000000080295e0 0x3c ./Core/FSM/Src/fsm_state_control.o + 0x00000000080295e0 GF_Dispatch .text.BlowersControl - 0x00000000080295dc 0x40 ./Core/FSM/Src/fsm_state_control.o - 0x00000000080295dc BlowersControl + 0x000000000802961c 0x40 ./Core/FSM/Src/fsm_state_control.o + 0x000000000802961c BlowersControl .text.MoveControl - 0x000000000802961c 0x138 ./Core/FSM/Src/fsm_state_control.o - 0x000000000802961c MoveControl + 0x000000000802965c 0x138 ./Core/FSM/Src/fsm_state_control.o + 0x000000000802965c MoveControl .text.paintrobot_forwards - 0x0000000008029754 0x4c ./Core/FSM/Src/fsm_state_control.o - 0x0000000008029754 paintrobot_forwards + 0x0000000008029794 0x4c ./Core/FSM/Src/fsm_state_control.o + 0x0000000008029794 paintrobot_forwards .text.paintrobot_backwards - 0x00000000080297a0 0x4c ./Core/FSM/Src/fsm_state_control.o - 0x00000000080297a0 paintrobot_backwards - *fill* 0x00000000080297ec 0x4 + 0x00000000080297e0 0x4c ./Core/FSM/Src/fsm_state_control.o + 0x00000000080297e0 paintrobot_backwards + *fill* 0x000000000802982c 0x4 .text.paint_joysticker_manual_control - 0x00000000080297f0 0x14c ./Core/FSM/Src/fsm_state_control.o - 0x00000000080297f0 paint_joysticker_manual_control + 0x0000000008029830 0x14c ./Core/FSM/Src/fsm_state_control.o + 0x0000000008029830 paint_joysticker_manual_control .text.PV_Data_Reading - 0x000000000802993c 0x50 ./Core/FSM/Src/fsm_state_control.o - 0x000000000802993c PV_Data_Reading + 0x000000000802997c 0x50 ./Core/FSM/Src/fsm_state_control.o + 0x000000000802997c PV_Data_Reading .text.IV_control - 0x000000000802998c 0x74 ./Core/FSM/Src/fsm_state_control.o - 0x000000000802998c IV_control + 0x00000000080299cc 0x74 ./Core/FSM/Src/fsm_state_control.o + 0x00000000080299cc IV_control .text.Motor_Controller_intialize - 0x0000000008029a00 0xc8 ./Core/FSM/Src/motors.o - 0x0000000008029a00 Motor_Controller_intialize + 0x0000000008029a40 0xc8 ./Core/FSM/Src/motors.o + 0x0000000008029a40 Motor_Controller_intialize .text.MotorCommandsLoop - 0x0000000008029ac8 0x64 ./Core/FSM/Src/motors.o - 0x0000000008029ac8 MotorCommandsLoop + 0x0000000008029b08 0x64 ./Core/FSM/Src/motors.o + 0x0000000008029b08 MotorCommandsLoop .text.Motor_485_Decode - 0x0000000008029b2c 0x60 ./Core/FSM/Src/motors.o - 0x0000000008029b2c Motor_485_Decode - *fill* 0x0000000008029b8c 0x4 + 0x0000000008029b6c 0x60 ./Core/FSM/Src/motors.o + 0x0000000008029b6c Motor_485_Decode + *fill* 0x0000000008029bcc 0x4 .text.speed_mpmin_to_rpmin - 0x0000000008029b90 0x54 ./Core/FSM/Src/motors.o - 0x0000000008029b90 speed_mpmin_to_rpmin + 0x0000000008029bd0 0x54 ./Core/FSM/Src/motors.o + 0x0000000008029bd0 speed_mpmin_to_rpmin .text.Motors_Power_On_Do - 0x0000000008029be4 0x18 ./Core/FSM/Src/motors_power_action.o - 0x0000000008029be4 Motors_Power_On_Do + 0x0000000008029c24 0x18 ./Core/FSM/Src/motors_power_action.o + 0x0000000008029c24 Motors_Power_On_Do .text.Motors_Power_On_Enter - 0x0000000008029bfc 0x14 ./Core/FSM/Src/motors_power_action.o - 0x0000000008029bfc Motors_Power_On_Enter + 0x0000000008029c3c 0x14 ./Core/FSM/Src/motors_power_action.o + 0x0000000008029c3c Motors_Power_On_Enter .text.Motors_Power_On_Exit - 0x0000000008029c10 0x14 ./Core/FSM/Src/motors_power_action.o - 0x0000000008029c10 Motors_Power_On_Exit + 0x0000000008029c50 0x14 ./Core/FSM/Src/motors_power_action.o + 0x0000000008029c50 Motors_Power_On_Exit .text.Move_Automatic_task_Do - 0x0000000008029c24 0x14 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029c24 Move_Automatic_task_Do + 0x0000000008029c64 0x14 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029c64 Move_Automatic_task_Do .text.Move_Auto_ChangeLine_Do - 0x0000000008029c38 0x16 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029c38 Move_Auto_ChangeLine_Do - *fill* 0x0000000008029c4e 0x2 + 0x0000000008029c78 0x16 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029c78 Move_Auto_ChangeLine_Do + *fill* 0x0000000008029c8e 0x2 .text.Move_Horizontal_Task_Forwards_Do - 0x0000000008029c50 0x74 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029c50 Move_Horizontal_Task_Forwards_Do - *fill* 0x0000000008029cc4 0x4 + 0x0000000008029c90 0x74 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029c90 Move_Horizontal_Task_Forwards_Do + *fill* 0x0000000008029d04 0x4 .text.Move_Horizontal_Task_Backwards_Do - 0x0000000008029cc8 0x7c ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029cc8 Move_Horizontal_Task_Backwards_Do + 0x0000000008029d08 0x7c ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029d08 Move_Horizontal_Task_Backwards_Do .text.Forwards_State_Do - 0x0000000008029d44 0x40 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029d44 Forwards_State_Do - .text.Backwards_State_Do 0x0000000008029d84 0x40 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029d84 Backwards_State_Do + 0x0000000008029d84 Forwards_State_Do + .text.Backwards_State_Do + 0x0000000008029dc4 0x40 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029dc4 Backwards_State_Do .text.TurnLeft_State_Do - 0x0000000008029dc4 0x3c ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029dc4 TurnLeft_State_Do + 0x0000000008029e04 0x3c ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029e04 TurnLeft_State_Do .text.TurnRight_State_Do - 0x0000000008029e00 0x34 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029e00 TurnRight_State_Do + 0x0000000008029e40 0x34 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029e40 TurnRight_State_Do .text.HALT_State_Do - 0x0000000008029e34 0x34 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029e34 HALT_State_Do + 0x0000000008029e74 0x34 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029e74 HALT_State_Do .text.Move_Vertical_Task_Forwards_Do - 0x0000000008029e68 0x3c ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029e68 Move_Vertical_Task_Forwards_Do + 0x0000000008029ea8 0x3c ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029ea8 Move_Vertical_Task_Forwards_Do .text.Move_Vertical_Task_Backwards_Do - 0x0000000008029ea4 0x3c ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029ea4 Move_Vertical_Task_Backwards_Do + 0x0000000008029ee4 0x3c ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029ee4 Move_Vertical_Task_Backwards_Do .text.HALT_State_Enter - 0x0000000008029ee0 0x14 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029ee0 HALT_State_Enter + 0x0000000008029f20 0x14 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029f20 HALT_State_Enter .text.HALT_State_Exit - 0x0000000008029ef4 0x14 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029ef4 HALT_State_Exit + 0x0000000008029f34 0x14 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029f34 HALT_State_Exit .text.Move_Forwards_Do - 0x0000000008029f08 0x194 ./Core/FSM/Src/robot_move_actions.o - 0x0000000008029f08 Move_Forwards_Do - *fill* 0x000000000802a09c 0x4 + 0x0000000008029f48 0x194 ./Core/FSM/Src/robot_move_actions.o + 0x0000000008029f48 Move_Forwards_Do + *fill* 0x000000000802a0dc 0x4 .text.Move_Backwards_Do - 0x000000000802a0a0 0x188 ./Core/FSM/Src/robot_move_actions.o - 0x000000000802a0a0 Move_Backwards_Do + 0x000000000802a0e0 0x188 ./Core/FSM/Src/robot_move_actions.o + 0x000000000802a0e0 Move_Backwards_Do .text.MX_ADC2_Init - 0x000000000802a228 0xcc ./Core/Src/adc.o - 0x000000000802a228 MX_ADC2_Init + 0x000000000802a268 0xcc ./Core/Src/adc.o + 0x000000000802a268 MX_ADC2_Init .text.HAL_ADC_MspInit - 0x000000000802a2f4 0xe0 ./Core/Src/adc.o - 0x000000000802a2f4 HAL_ADC_MspInit + 0x000000000802a334 0xe0 ./Core/Src/adc.o + 0x000000000802a334 HAL_ADC_MspInit .text.MX_DMA_Init - 0x000000000802a3d4 0xa0 ./Core/Src/dma.o - 0x000000000802a3d4 MX_DMA_Init + 0x000000000802a414 0xa0 ./Core/Src/dma.o + 0x000000000802a414 MX_DMA_Init .text.MX_FDCAN1_Init - 0x000000000802a474 0xc8 ./Core/Src/fdcan.o - 0x000000000802a474 MX_FDCAN1_Init + 0x000000000802a4b4 0xc8 ./Core/Src/fdcan.o + 0x000000000802a4b4 MX_FDCAN1_Init .text.MX_FDCAN2_Init - 0x000000000802a53c 0xc8 ./Core/Src/fdcan.o - 0x000000000802a53c MX_FDCAN2_Init + 0x000000000802a57c 0xc8 ./Core/Src/fdcan.o + 0x000000000802a57c MX_FDCAN2_Init .text.HAL_FDCAN_MspInit - 0x000000000802a604 0x1b0 ./Core/Src/fdcan.o - 0x000000000802a604 HAL_FDCAN_MspInit + 0x000000000802a644 0x1b0 ./Core/Src/fdcan.o + 0x000000000802a644 HAL_FDCAN_MspInit .text.MX_GPIO_Init - 0x000000000802a7b4 0x238 ./Core/Src/gpio.o - 0x000000000802a7b4 MX_GPIO_Init + 0x000000000802a7f4 0x238 ./Core/Src/gpio.o + 0x000000000802a7f4 MX_GPIO_Init .text.MX_I2C4_Init - 0x000000000802a9ec 0x80 ./Core/Src/i2c.o - 0x000000000802a9ec MX_I2C4_Init + 0x000000000802aa2c 0x80 ./Core/Src/i2c.o + 0x000000000802aa2c MX_I2C4_Init .text.HAL_I2C_MspInit - 0x000000000802aa6c 0xec ./Core/Src/i2c.o - 0x000000000802aa6c HAL_I2C_MspInit - .text.main 0x000000000802ab58 0x19c ./Core/Src/main.o - 0x000000000802ab58 main + 0x000000000802aaac 0xec ./Core/Src/i2c.o + 0x000000000802aaac HAL_I2C_MspInit + .text.main 0x000000000802ab98 0x19c ./Core/Src/main.o + 0x000000000802ab98 main .text.SystemClock_Config - 0x000000000802acf4 0x110 ./Core/Src/main.o - 0x000000000802acf4 SystemClock_Config + 0x000000000802ad34 0x110 ./Core/Src/main.o + 0x000000000802ad34 SystemClock_Config .text.GF_Robot_Init - 0x000000000802ae04 0xac ./Core/Src/main.o - 0x000000000802ae04 GF_Robot_Init + 0x000000000802ae44 0xac ./Core/Src/main.o + 0x000000000802ae44 GF_Robot_Init .text.CV_GV_Init - 0x000000000802aeb0 0x170 ./Core/Src/main.o - 0x000000000802aeb0 CV_GV_Init + 0x000000000802aef0 0x170 ./Core/Src/main.o + 0x000000000802aef0 CV_GV_Init .text.MPU_Config - 0x000000000802b020 0x9c ./Core/Src/main.o + 0x000000000802b060 0x9c ./Core/Src/main.o .text.Error_Handler - 0x000000000802b0bc 0x6c ./Core/Src/main.o - 0x000000000802b0bc Error_Handler + 0x000000000802b0fc 0x6c ./Core/Src/main.o + 0x000000000802b0fc Error_Handler .text.MX_QUADSPI_Init - 0x000000000802b128 0x58 ./Core/Src/quadspi.o - 0x000000000802b128 MX_QUADSPI_Init + 0x000000000802b168 0x58 ./Core/Src/quadspi.o + 0x000000000802b168 MX_QUADSPI_Init .text.HAL_QSPI_MspInit - 0x000000000802b180 0x168 ./Core/Src/quadspi.o - 0x000000000802b180 HAL_QSPI_MspInit + 0x000000000802b1c0 0x168 ./Core/Src/quadspi.o + 0x000000000802b1c0 HAL_QSPI_MspInit .text.HAL_MspInit - 0x000000000802b2e8 0x34 ./Core/Src/stm32h7xx_hal_msp.o - 0x000000000802b2e8 HAL_MspInit + 0x000000000802b328 0x34 ./Core/Src/stm32h7xx_hal_msp.o + 0x000000000802b328 HAL_MspInit .text.NMI_Handler - 0x000000000802b31c 0xa ./Core/Src/stm32h7xx_it.o - 0x000000000802b31c NMI_Handler + 0x000000000802b35c 0xa ./Core/Src/stm32h7xx_it.o + 0x000000000802b35c NMI_Handler .text.HardFault_Handler - 0x000000000802b326 0x6 ./Core/Src/stm32h7xx_it.o - 0x000000000802b326 HardFault_Handler + 0x000000000802b366 0x6 ./Core/Src/stm32h7xx_it.o + 0x000000000802b366 HardFault_Handler .text.MemManage_Handler - 0x000000000802b32c 0x6 ./Core/Src/stm32h7xx_it.o - 0x000000000802b32c MemManage_Handler + 0x000000000802b36c 0x6 ./Core/Src/stm32h7xx_it.o + 0x000000000802b36c MemManage_Handler .text.BusFault_Handler - 0x000000000802b332 0x6 ./Core/Src/stm32h7xx_it.o - 0x000000000802b332 BusFault_Handler + 0x000000000802b372 0x6 ./Core/Src/stm32h7xx_it.o + 0x000000000802b372 BusFault_Handler .text.UsageFault_Handler - 0x000000000802b338 0x6 ./Core/Src/stm32h7xx_it.o - 0x000000000802b338 UsageFault_Handler + 0x000000000802b378 0x6 ./Core/Src/stm32h7xx_it.o + 0x000000000802b378 UsageFault_Handler .text.SVC_Handler - 0x000000000802b33e 0xe ./Core/Src/stm32h7xx_it.o - 0x000000000802b33e SVC_Handler + 0x000000000802b37e 0xe ./Core/Src/stm32h7xx_it.o + 0x000000000802b37e SVC_Handler .text.DebugMon_Handler - 0x000000000802b34c 0xe ./Core/Src/stm32h7xx_it.o - 0x000000000802b34c DebugMon_Handler + 0x000000000802b38c 0xe ./Core/Src/stm32h7xx_it.o + 0x000000000802b38c DebugMon_Handler .text.PendSV_Handler - 0x000000000802b35a 0xe ./Core/Src/stm32h7xx_it.o - 0x000000000802b35a PendSV_Handler + 0x000000000802b39a 0xe ./Core/Src/stm32h7xx_it.o + 0x000000000802b39a PendSV_Handler .text.SysTick_Handler - 0x000000000802b368 0xc ./Core/Src/stm32h7xx_it.o - 0x000000000802b368 SysTick_Handler + 0x000000000802b3a8 0xc ./Core/Src/stm32h7xx_it.o + 0x000000000802b3a8 SysTick_Handler .text.DMA1_Stream0_IRQHandler - 0x000000000802b374 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b374 DMA1_Stream0_IRQHandler + 0x000000000802b3b4 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b3b4 DMA1_Stream0_IRQHandler .text.DMA1_Stream1_IRQHandler - 0x000000000802b388 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b388 DMA1_Stream1_IRQHandler + 0x000000000802b3c8 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b3c8 DMA1_Stream1_IRQHandler .text.DMA1_Stream2_IRQHandler - 0x000000000802b39c 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b39c DMA1_Stream2_IRQHandler + 0x000000000802b3dc 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b3dc DMA1_Stream2_IRQHandler .text.DMA1_Stream3_IRQHandler - 0x000000000802b3b0 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b3b0 DMA1_Stream3_IRQHandler + 0x000000000802b3f0 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b3f0 DMA1_Stream3_IRQHandler .text.DMA1_Stream5_IRQHandler - 0x000000000802b3c4 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b3c4 DMA1_Stream5_IRQHandler + 0x000000000802b404 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b404 DMA1_Stream5_IRQHandler .text.DMA1_Stream6_IRQHandler - 0x000000000802b3d8 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b3d8 DMA1_Stream6_IRQHandler + 0x000000000802b418 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b418 DMA1_Stream6_IRQHandler .text.FDCAN1_IT0_IRQHandler - 0x000000000802b3ec 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b3ec FDCAN1_IT0_IRQHandler + 0x000000000802b42c 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b42c FDCAN1_IT0_IRQHandler .text.FDCAN2_IT0_IRQHandler - 0x000000000802b400 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b400 FDCAN2_IT0_IRQHandler + 0x000000000802b440 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b440 FDCAN2_IT0_IRQHandler .text.TIM1_UP_IRQHandler - 0x000000000802b414 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b414 TIM1_UP_IRQHandler + 0x000000000802b454 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b454 TIM1_UP_IRQHandler .text.USART1_IRQHandler - 0x000000000802b428 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b428 USART1_IRQHandler + 0x000000000802b468 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b468 USART1_IRQHandler .text.USART2_IRQHandler - 0x000000000802b43c 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b43c USART2_IRQHandler + 0x000000000802b47c 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b47c USART2_IRQHandler .text.USART3_IRQHandler - 0x000000000802b450 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b450 USART3_IRQHandler + 0x000000000802b490 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b490 USART3_IRQHandler .text.TIM8_UP_TIM13_IRQHandler - 0x000000000802b464 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b464 TIM8_UP_TIM13_IRQHandler + 0x000000000802b4a4 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b4a4 TIM8_UP_TIM13_IRQHandler .text.DMA1_Stream7_IRQHandler - 0x000000000802b478 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b478 DMA1_Stream7_IRQHandler + 0x000000000802b4b8 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b4b8 DMA1_Stream7_IRQHandler .text.UART4_IRQHandler - 0x000000000802b48c 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b48c UART4_IRQHandler + 0x000000000802b4cc 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b4cc UART4_IRQHandler .text.UART5_IRQHandler - 0x000000000802b4a0 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b4a0 UART5_IRQHandler + 0x000000000802b4e0 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b4e0 UART5_IRQHandler .text.ETH_IRQHandler - 0x000000000802b4b4 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b4b4 ETH_IRQHandler + 0x000000000802b4f4 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b4f4 ETH_IRQHandler .text.ETH_WKUP_IRQHandler - 0x000000000802b4c8 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b4c8 ETH_WKUP_IRQHandler + 0x000000000802b508 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b508 ETH_WKUP_IRQHandler .text.USART6_IRQHandler - 0x000000000802b4dc 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b4dc USART6_IRQHandler + 0x000000000802b51c 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b51c USART6_IRQHandler .text.UART7_IRQHandler - 0x000000000802b4f0 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b4f0 UART7_IRQHandler + 0x000000000802b530 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b530 UART7_IRQHandler .text.I2C4_EV_IRQHandler - 0x000000000802b504 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b504 I2C4_EV_IRQHandler + 0x000000000802b544 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b544 I2C4_EV_IRQHandler .text.I2C4_ER_IRQHandler - 0x000000000802b518 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b518 I2C4_ER_IRQHandler + 0x000000000802b558 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b558 I2C4_ER_IRQHandler .text.LPUART1_IRQHandler - 0x000000000802b52c 0x14 ./Core/Src/stm32h7xx_it.o - 0x000000000802b52c LPUART1_IRQHandler - .text._getpid 0x000000000802b540 0x10 ./Core/Src/syscalls.o - 0x000000000802b540 _getpid - .text._kill 0x000000000802b550 0x24 ./Core/Src/syscalls.o - 0x000000000802b550 _kill - .text._exit 0x000000000802b574 0x14 ./Core/Src/syscalls.o - 0x000000000802b574 _exit - .text._read 0x000000000802b588 0x3a ./Core/Src/syscalls.o - 0x000000000802b588 _read - .text._write 0x000000000802b5c2 0x38 ./Core/Src/syscalls.o - 0x000000000802b5c2 _write - .text._close 0x000000000802b5fa 0x18 ./Core/Src/syscalls.o - 0x000000000802b5fa _close - .text._fstat 0x000000000802b612 0x20 ./Core/Src/syscalls.o - 0x000000000802b612 _fstat - .text._isatty 0x000000000802b632 0x16 ./Core/Src/syscalls.o - 0x000000000802b632 _isatty - .text._lseek 0x000000000802b648 0x1a ./Core/Src/syscalls.o - 0x000000000802b648 _lseek - *fill* 0x000000000802b662 0x2 - .text._sbrk 0x000000000802b664 0x70 ./Core/Src/sysmem.o - 0x000000000802b664 _sbrk + 0x000000000802b56c 0x14 ./Core/Src/stm32h7xx_it.o + 0x000000000802b56c LPUART1_IRQHandler + .text._getpid 0x000000000802b580 0x10 ./Core/Src/syscalls.o + 0x000000000802b580 _getpid + .text._kill 0x000000000802b590 0x24 ./Core/Src/syscalls.o + 0x000000000802b590 _kill + .text._exit 0x000000000802b5b4 0x14 ./Core/Src/syscalls.o + 0x000000000802b5b4 _exit + .text._read 0x000000000802b5c8 0x3a ./Core/Src/syscalls.o + 0x000000000802b5c8 _read + .text._write 0x000000000802b602 0x38 ./Core/Src/syscalls.o + 0x000000000802b602 _write + .text._close 0x000000000802b63a 0x18 ./Core/Src/syscalls.o + 0x000000000802b63a _close + .text._fstat 0x000000000802b652 0x20 ./Core/Src/syscalls.o + 0x000000000802b652 _fstat + .text._isatty 0x000000000802b672 0x16 ./Core/Src/syscalls.o + 0x000000000802b672 _isatty + .text._lseek 0x000000000802b688 0x1a ./Core/Src/syscalls.o + 0x000000000802b688 _lseek + *fill* 0x000000000802b6a2 0x2 + .text._sbrk 0x000000000802b6a4 0x70 ./Core/Src/sysmem.o + 0x000000000802b6a4 _sbrk .text.SystemInit - 0x000000000802b6d4 0x11c ./Core/Src/system_stm32h7xx.o - 0x000000000802b6d4 SystemInit + 0x000000000802b714 0x11c ./Core/Src/system_stm32h7xx.o + 0x000000000802b714 SystemInit .text.MX_TIM1_Init - 0x000000000802b7f0 0xa8 ./Core/Src/tim.o - 0x000000000802b7f0 MX_TIM1_Init + 0x000000000802b830 0xa8 ./Core/Src/tim.o + 0x000000000802b830 MX_TIM1_Init .text.MX_TIM2_Init - 0x000000000802b898 0xf0 ./Core/Src/tim.o - 0x000000000802b898 MX_TIM2_Init + 0x000000000802b8d8 0xf0 ./Core/Src/tim.o + 0x000000000802b8d8 MX_TIM2_Init .text.MX_TIM8_Init - 0x000000000802b988 0xa8 ./Core/Src/tim.o - 0x000000000802b988 MX_TIM8_Init + 0x000000000802b9c8 0xa8 ./Core/Src/tim.o + 0x000000000802b9c8 MX_TIM8_Init .text.HAL_TIM_Base_MspInit - 0x000000000802ba30 0xb8 ./Core/Src/tim.o - 0x000000000802ba30 HAL_TIM_Base_MspInit + 0x000000000802ba70 0xb8 ./Core/Src/tim.o + 0x000000000802ba70 HAL_TIM_Base_MspInit .text.HAL_TIM_MspPostInit - 0x000000000802bae8 0x70 ./Core/Src/tim.o - 0x000000000802bae8 HAL_TIM_MspPostInit + 0x000000000802bb28 0x70 ./Core/Src/tim.o + 0x000000000802bb28 HAL_TIM_MspPostInit .text.MX_LPUART1_UART_Init - 0x000000000802bb58 0xa8 ./Core/Src/usart.o - 0x000000000802bb58 MX_LPUART1_UART_Init + 0x000000000802bb98 0xa8 ./Core/Src/usart.o + 0x000000000802bb98 MX_LPUART1_UART_Init .text.MX_UART4_Init - 0x000000000802bc00 0xa8 ./Core/Src/usart.o - 0x000000000802bc00 MX_UART4_Init + 0x000000000802bc40 0xa8 ./Core/Src/usart.o + 0x000000000802bc40 MX_UART4_Init .text.MX_UART5_Init - 0x000000000802bca8 0xb0 ./Core/Src/usart.o - 0x000000000802bca8 MX_UART5_Init + 0x000000000802bce8 0xb0 ./Core/Src/usart.o + 0x000000000802bce8 MX_UART5_Init .text.MX_UART7_Init - 0x000000000802bd58 0xa8 ./Core/Src/usart.o - 0x000000000802bd58 MX_UART7_Init + 0x000000000802bd98 0xa8 ./Core/Src/usart.o + 0x000000000802bd98 MX_UART7_Init .text.MX_USART1_UART_Init - 0x000000000802be00 0xa8 ./Core/Src/usart.o - 0x000000000802be00 MX_USART1_UART_Init + 0x000000000802be40 0xa8 ./Core/Src/usart.o + 0x000000000802be40 MX_USART1_UART_Init .text.MX_USART2_UART_Init - 0x000000000802bea8 0xa8 ./Core/Src/usart.o - 0x000000000802bea8 MX_USART2_UART_Init + 0x000000000802bee8 0xa8 ./Core/Src/usart.o + 0x000000000802bee8 MX_USART2_UART_Init .text.MX_USART3_UART_Init - 0x000000000802bf50 0xa8 ./Core/Src/usart.o - 0x000000000802bf50 MX_USART3_UART_Init + 0x000000000802bf90 0xa8 ./Core/Src/usart.o + 0x000000000802bf90 MX_USART3_UART_Init .text.MX_USART6_UART_Init - 0x000000000802bff8 0xa8 ./Core/Src/usart.o - 0x000000000802bff8 MX_USART6_UART_Init + 0x000000000802c038 0xa8 ./Core/Src/usart.o + 0x000000000802c038 MX_USART6_UART_Init .text.HAL_UART_MspInit - 0x000000000802c0a0 0xad4 ./Core/Src/usart.o - 0x000000000802c0a0 HAL_UART_MspInit + 0x000000000802c0e0 0xad4 ./Core/Src/usart.o + 0x000000000802c0e0 HAL_UART_MspInit .text.Reset_Handler - 0x000000000802cb74 0x50 ./Core/Startup/startup_stm32h743vgtx.o - 0x000000000802cb74 Reset_Handler + 0x000000000802cbb4 0x50 ./Core/Startup/startup_stm32h743vgtx.o + 0x000000000802cbb4 Reset_Handler .text.Default_Handler - 0x000000000802cbc4 0x2 ./Core/Startup/startup_stm32h743vgtx.o - 0x000000000802cbc4 RTC_Alarm_IRQHandler - 0x000000000802cbc4 EXTI2_IRQHandler - 0x000000000802cbc4 TIM8_CC_IRQHandler - 0x000000000802cbc4 HRTIM1_Master_IRQHandler - 0x000000000802cbc4 UART8_IRQHandler - 0x000000000802cbc4 SPI4_IRQHandler - 0x000000000802cbc4 TIM1_CC_IRQHandler - 0x000000000802cbc4 BDMA_Channel6_IRQHandler - 0x000000000802cbc4 DMA2_Stream5_IRQHandler - 0x000000000802cbc4 HRTIM1_FLT_IRQHandler - 0x000000000802cbc4 JPEG_IRQHandler - 0x000000000802cbc4 BDMA_Channel1_IRQHandler - 0x000000000802cbc4 HRTIM1_TIMD_IRQHandler - 0x000000000802cbc4 TAMP_STAMP_IRQHandler - 0x000000000802cbc4 EXTI3_IRQHandler - 0x000000000802cbc4 LPTIM4_IRQHandler - 0x000000000802cbc4 TIM8_TRG_COM_TIM14_IRQHandler - 0x000000000802cbc4 LPTIM2_IRQHandler - 0x000000000802cbc4 DFSDM1_FLT1_IRQHandler - 0x000000000802cbc4 DMAMUX2_OVR_IRQHandler - 0x000000000802cbc4 I2C3_ER_IRQHandler - 0x000000000802cbc4 DFSDM1_FLT2_IRQHandler - 0x000000000802cbc4 MDMA_IRQHandler - 0x000000000802cbc4 LPTIM3_IRQHandler - 0x000000000802cbc4 HSEM1_IRQHandler - 0x000000000802cbc4 EXTI0_IRQHandler - 0x000000000802cbc4 I2C2_EV_IRQHandler - 0x000000000802cbc4 FPU_IRQHandler - 0x000000000802cbc4 OTG_HS_WKUP_IRQHandler - 0x000000000802cbc4 FDCAN1_IT1_IRQHandler - 0x000000000802cbc4 LTDC_ER_IRQHandler - 0x000000000802cbc4 DMA2_Stream2_IRQHandler - 0x000000000802cbc4 HRTIM1_TIME_IRQHandler - 0x000000000802cbc4 SPI1_IRQHandler - 0x000000000802cbc4 TIM6_DAC_IRQHandler - 0x000000000802cbc4 DCMI_IRQHandler - 0x000000000802cbc4 HRTIM1_TIMC_IRQHandler - 0x000000000802cbc4 DMA2_Stream3_IRQHandler - 0x000000000802cbc4 SAI2_IRQHandler - 0x000000000802cbc4 DFSDM1_FLT3_IRQHandler - 0x000000000802cbc4 TIM17_IRQHandler - 0x000000000802cbc4 BDMA_Channel7_IRQHandler - 0x000000000802cbc4 LPTIM5_IRQHandler - 0x000000000802cbc4 ADC3_IRQHandler - 0x000000000802cbc4 DMA2_Stream0_IRQHandler - 0x000000000802cbc4 TIM4_IRQHandler - 0x000000000802cbc4 BDMA_Channel2_IRQHandler - 0x000000000802cbc4 QUADSPI_IRQHandler - 0x000000000802cbc4 I2C1_EV_IRQHandler - 0x000000000802cbc4 DMAMUX1_OVR_IRQHandler - 0x000000000802cbc4 TIM16_IRQHandler - 0x000000000802cbc4 BDMA_Channel5_IRQHandler - 0x000000000802cbc4 TIM3_IRQHandler - 0x000000000802cbc4 RCC_IRQHandler - 0x000000000802cbc4 TIM8_BRK_TIM12_IRQHandler - 0x000000000802cbc4 TIM1_TRG_COM_IRQHandler - 0x000000000802cbc4 Default_Handler - 0x000000000802cbc4 ECC_IRQHandler - 0x000000000802cbc4 CEC_IRQHandler - 0x000000000802cbc4 EXTI15_10_IRQHandler - 0x000000000802cbc4 BDMA_Channel0_IRQHandler - 0x000000000802cbc4 ADC_IRQHandler - 0x000000000802cbc4 HRTIM1_TIMA_IRQHandler - 0x000000000802cbc4 SPI5_IRQHandler - 0x000000000802cbc4 TIM7_IRQHandler - 0x000000000802cbc4 SDMMC1_IRQHandler - 0x000000000802cbc4 TIM5_IRQHandler - 0x000000000802cbc4 DMA2_Stream7_IRQHandler - 0x000000000802cbc4 TIM15_IRQHandler - 0x000000000802cbc4 PVD_AVD_IRQHandler - 0x000000000802cbc4 I2C3_EV_IRQHandler - 0x000000000802cbc4 EXTI9_5_IRQHandler - 0x000000000802cbc4 RTC_WKUP_IRQHandler - 0x000000000802cbc4 LTDC_IRQHandler - 0x000000000802cbc4 SAI3_IRQHandler - 0x000000000802cbc4 SPDIF_RX_IRQHandler - 0x000000000802cbc4 SPI2_IRQHandler - 0x000000000802cbc4 OTG_HS_EP1_IN_IRQHandler - 0x000000000802cbc4 CRS_IRQHandler - 0x000000000802cbc4 EXTI4_IRQHandler - 0x000000000802cbc4 RNG_IRQHandler - 0x000000000802cbc4 HRTIM1_TIMB_IRQHandler - 0x000000000802cbc4 FDCAN2_IT1_IRQHandler - 0x000000000802cbc4 BDMA_Channel4_IRQHandler - 0x000000000802cbc4 OTG_HS_EP1_OUT_IRQHandler - 0x000000000802cbc4 WWDG_IRQHandler - 0x000000000802cbc4 SPI6_IRQHandler - 0x000000000802cbc4 MDIOS_IRQHandler - 0x000000000802cbc4 TIM2_IRQHandler - 0x000000000802cbc4 OTG_FS_WKUP_IRQHandler - 0x000000000802cbc4 OTG_HS_IRQHandler - 0x000000000802cbc4 DMA2D_IRQHandler - 0x000000000802cbc4 TIM1_BRK_IRQHandler - 0x000000000802cbc4 EXTI1_IRQHandler - 0x000000000802cbc4 SDMMC2_IRQHandler - 0x000000000802cbc4 OTG_FS_EP1_OUT_IRQHandler - 0x000000000802cbc4 BDMA_Channel3_IRQHandler - 0x000000000802cbc4 MDIOS_WKUP_IRQHandler - 0x000000000802cbc4 DFSDM1_FLT0_IRQHandler - 0x000000000802cbc4 SAI4_IRQHandler - 0x000000000802cbc4 I2C2_ER_IRQHandler - 0x000000000802cbc4 DMA2_Stream1_IRQHandler - 0x000000000802cbc4 FLASH_IRQHandler - 0x000000000802cbc4 DMA2_Stream4_IRQHandler - 0x000000000802cbc4 OTG_FS_IRQHandler - 0x000000000802cbc4 SPI3_IRQHandler - 0x000000000802cbc4 WAKEUP_PIN_IRQHandler - 0x000000000802cbc4 DMA1_Stream4_IRQHandler - 0x000000000802cbc4 OTG_FS_EP1_IN_IRQHandler - 0x000000000802cbc4 I2C1_ER_IRQHandler - 0x000000000802cbc4 FMC_IRQHandler - 0x000000000802cbc4 FDCAN_CAL_IRQHandler - 0x000000000802cbc4 SWPMI1_IRQHandler - 0x000000000802cbc4 COMP1_IRQHandler - 0x000000000802cbc4 LPTIM1_IRQHandler - 0x000000000802cbc4 DMA2_Stream6_IRQHandler - 0x000000000802cbc4 SAI1_IRQHandler + 0x000000000802cc04 0x2 ./Core/Startup/startup_stm32h743vgtx.o + 0x000000000802cc04 RTC_Alarm_IRQHandler + 0x000000000802cc04 EXTI2_IRQHandler + 0x000000000802cc04 TIM8_CC_IRQHandler + 0x000000000802cc04 HRTIM1_Master_IRQHandler + 0x000000000802cc04 UART8_IRQHandler + 0x000000000802cc04 SPI4_IRQHandler + 0x000000000802cc04 TIM1_CC_IRQHandler + 0x000000000802cc04 BDMA_Channel6_IRQHandler + 0x000000000802cc04 DMA2_Stream5_IRQHandler + 0x000000000802cc04 HRTIM1_FLT_IRQHandler + 0x000000000802cc04 JPEG_IRQHandler + 0x000000000802cc04 BDMA_Channel1_IRQHandler + 0x000000000802cc04 HRTIM1_TIMD_IRQHandler + 0x000000000802cc04 TAMP_STAMP_IRQHandler + 0x000000000802cc04 EXTI3_IRQHandler + 0x000000000802cc04 LPTIM4_IRQHandler + 0x000000000802cc04 TIM8_TRG_COM_TIM14_IRQHandler + 0x000000000802cc04 LPTIM2_IRQHandler + 0x000000000802cc04 DFSDM1_FLT1_IRQHandler + 0x000000000802cc04 DMAMUX2_OVR_IRQHandler + 0x000000000802cc04 I2C3_ER_IRQHandler + 0x000000000802cc04 DFSDM1_FLT2_IRQHandler + 0x000000000802cc04 MDMA_IRQHandler + 0x000000000802cc04 LPTIM3_IRQHandler + 0x000000000802cc04 HSEM1_IRQHandler + 0x000000000802cc04 EXTI0_IRQHandler + 0x000000000802cc04 I2C2_EV_IRQHandler + 0x000000000802cc04 FPU_IRQHandler + 0x000000000802cc04 OTG_HS_WKUP_IRQHandler + 0x000000000802cc04 FDCAN1_IT1_IRQHandler + 0x000000000802cc04 LTDC_ER_IRQHandler + 0x000000000802cc04 DMA2_Stream2_IRQHandler + 0x000000000802cc04 HRTIM1_TIME_IRQHandler + 0x000000000802cc04 SPI1_IRQHandler + 0x000000000802cc04 TIM6_DAC_IRQHandler + 0x000000000802cc04 DCMI_IRQHandler + 0x000000000802cc04 HRTIM1_TIMC_IRQHandler + 0x000000000802cc04 DMA2_Stream3_IRQHandler + 0x000000000802cc04 SAI2_IRQHandler + 0x000000000802cc04 DFSDM1_FLT3_IRQHandler + 0x000000000802cc04 TIM17_IRQHandler + 0x000000000802cc04 BDMA_Channel7_IRQHandler + 0x000000000802cc04 LPTIM5_IRQHandler + 0x000000000802cc04 ADC3_IRQHandler + 0x000000000802cc04 DMA2_Stream0_IRQHandler + 0x000000000802cc04 TIM4_IRQHandler + 0x000000000802cc04 BDMA_Channel2_IRQHandler + 0x000000000802cc04 QUADSPI_IRQHandler + 0x000000000802cc04 I2C1_EV_IRQHandler + 0x000000000802cc04 DMAMUX1_OVR_IRQHandler + 0x000000000802cc04 TIM16_IRQHandler + 0x000000000802cc04 BDMA_Channel5_IRQHandler + 0x000000000802cc04 TIM3_IRQHandler + 0x000000000802cc04 RCC_IRQHandler + 0x000000000802cc04 TIM8_BRK_TIM12_IRQHandler + 0x000000000802cc04 TIM1_TRG_COM_IRQHandler + 0x000000000802cc04 Default_Handler + 0x000000000802cc04 ECC_IRQHandler + 0x000000000802cc04 CEC_IRQHandler + 0x000000000802cc04 EXTI15_10_IRQHandler + 0x000000000802cc04 BDMA_Channel0_IRQHandler + 0x000000000802cc04 ADC_IRQHandler + 0x000000000802cc04 HRTIM1_TIMA_IRQHandler + 0x000000000802cc04 SPI5_IRQHandler + 0x000000000802cc04 TIM7_IRQHandler + 0x000000000802cc04 SDMMC1_IRQHandler + 0x000000000802cc04 TIM5_IRQHandler + 0x000000000802cc04 DMA2_Stream7_IRQHandler + 0x000000000802cc04 TIM15_IRQHandler + 0x000000000802cc04 PVD_AVD_IRQHandler + 0x000000000802cc04 I2C3_EV_IRQHandler + 0x000000000802cc04 EXTI9_5_IRQHandler + 0x000000000802cc04 RTC_WKUP_IRQHandler + 0x000000000802cc04 LTDC_IRQHandler + 0x000000000802cc04 SAI3_IRQHandler + 0x000000000802cc04 SPDIF_RX_IRQHandler + 0x000000000802cc04 SPI2_IRQHandler + 0x000000000802cc04 OTG_HS_EP1_IN_IRQHandler + 0x000000000802cc04 CRS_IRQHandler + 0x000000000802cc04 EXTI4_IRQHandler + 0x000000000802cc04 RNG_IRQHandler + 0x000000000802cc04 HRTIM1_TIMB_IRQHandler + 0x000000000802cc04 FDCAN2_IT1_IRQHandler + 0x000000000802cc04 BDMA_Channel4_IRQHandler + 0x000000000802cc04 OTG_HS_EP1_OUT_IRQHandler + 0x000000000802cc04 WWDG_IRQHandler + 0x000000000802cc04 SPI6_IRQHandler + 0x000000000802cc04 MDIOS_IRQHandler + 0x000000000802cc04 TIM2_IRQHandler + 0x000000000802cc04 OTG_FS_WKUP_IRQHandler + 0x000000000802cc04 OTG_HS_IRQHandler + 0x000000000802cc04 DMA2D_IRQHandler + 0x000000000802cc04 TIM1_BRK_IRQHandler + 0x000000000802cc04 EXTI1_IRQHandler + 0x000000000802cc04 SDMMC2_IRQHandler + 0x000000000802cc04 OTG_FS_EP1_OUT_IRQHandler + 0x000000000802cc04 BDMA_Channel3_IRQHandler + 0x000000000802cc04 MDIOS_WKUP_IRQHandler + 0x000000000802cc04 DFSDM1_FLT0_IRQHandler + 0x000000000802cc04 SAI4_IRQHandler + 0x000000000802cc04 I2C2_ER_IRQHandler + 0x000000000802cc04 DMA2_Stream1_IRQHandler + 0x000000000802cc04 FLASH_IRQHandler + 0x000000000802cc04 DMA2_Stream4_IRQHandler + 0x000000000802cc04 OTG_FS_IRQHandler + 0x000000000802cc04 SPI3_IRQHandler + 0x000000000802cc04 WAKEUP_PIN_IRQHandler + 0x000000000802cc04 DMA1_Stream4_IRQHandler + 0x000000000802cc04 OTG_FS_EP1_IN_IRQHandler + 0x000000000802cc04 I2C1_ER_IRQHandler + 0x000000000802cc04 FMC_IRQHandler + 0x000000000802cc04 FDCAN_CAL_IRQHandler + 0x000000000802cc04 SWPMI1_IRQHandler + 0x000000000802cc04 COMP1_IRQHandler + 0x000000000802cc04 LPTIM1_IRQHandler + 0x000000000802cc04 DMA2_Stream6_IRQHandler + 0x000000000802cc04 SAI1_IRQHandler .text.LAN8742_RegisterBusIO - 0x000000000802cbc6 0x64 ./Drivers/BSP/Components/lan8742/lan8742.o - 0x000000000802cbc6 LAN8742_RegisterBusIO + 0x000000000802cc06 0x64 ./Drivers/BSP/Components/lan8742/lan8742.o + 0x000000000802cc06 LAN8742_RegisterBusIO .text.LAN8742_Init - 0x000000000802cc2a 0x150 ./Drivers/BSP/Components/lan8742/lan8742.o - 0x000000000802cc2a LAN8742_Init + 0x000000000802cc6a 0x150 ./Drivers/BSP/Components/lan8742/lan8742.o + 0x000000000802cc6a LAN8742_Init .text.LAN8742_GetLinkState - 0x000000000802cd7a 0x10e ./Drivers/BSP/Components/lan8742/lan8742.o - 0x000000000802cd7a LAN8742_GetLinkState + 0x000000000802cdba 0x10e ./Drivers/BSP/Components/lan8742/lan8742.o + 0x000000000802cdba LAN8742_GetLinkState .text.HAL_Init - 0x000000000802ce88 0x78 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802ce88 HAL_Init + 0x000000000802cec8 0x78 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802cec8 HAL_Init .text.HAL_InitTick - 0x000000000802cf00 0x6c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802cf00 HAL_InitTick + 0x000000000802cf40 0x6c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802cf40 HAL_InitTick .text.HAL_IncTick - 0x000000000802cf6c 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802cf6c HAL_IncTick + 0x000000000802cfac 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802cfac HAL_IncTick .text.HAL_GetTick - 0x000000000802cf94 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802cf94 HAL_GetTick + 0x000000000802cfd4 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802cfd4 HAL_GetTick .text.HAL_Delay - 0x000000000802cfac 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802cfac HAL_Delay + 0x000000000802cfec 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802cfec HAL_Delay .text.HAL_GetREVID - 0x000000000802cff4 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802cff4 HAL_GetREVID + 0x000000000802d034 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802d034 HAL_GetREVID .text.HAL_SYSCFG_ETHInterfaceSelect - 0x000000000802d00c 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - 0x000000000802d00c HAL_SYSCFG_ETHInterfaceSelect + 0x000000000802d04c 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + 0x000000000802d04c HAL_SYSCFG_ETHInterfaceSelect .text.LL_ADC_SetCommonClock - 0x000000000802d034 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d074 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_SetCommonPathInternalCh - 0x000000000802d05a 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d09a 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_GetCommonPathInternalCh - 0x000000000802d080 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d0c0 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_SetOffset - 0x000000000802d09c 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d0dc 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_SetDataRightShift - 0x000000000802d0dc 0x32 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d11c 0x32 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_SetOffsetSignedSaturation - 0x000000000802d10e 0x36 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d14e 0x36 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_REG_SetSequencerRanks - 0x000000000802d144 0x58 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d184 0x58 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_SetChannelSamplingTime - 0x000000000802d19c 0x56 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - *fill* 0x000000000802d1f2 0x2 + 0x000000000802d1dc 0x56 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + *fill* 0x000000000802d232 0x2 .text.LL_ADC_SetChannelSingleDiff - 0x000000000802d1f4 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d234 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_DisableDeepPowerDown - 0x000000000802d23c 0x24 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d27c 0x24 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_IsDeepPowerDownEnabled - 0x000000000802d260 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d2a0 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_EnableInternalRegulator - 0x000000000802d288 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d2c8 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_IsInternalRegulatorEnabled - 0x000000000802d2b0 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d2f0 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_IsEnabled - 0x000000000802d2d8 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d318 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_REG_IsConversionOngoing - 0x000000000802d2fe 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d33e 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o .text.LL_ADC_INJ_IsConversionOngoing - 0x000000000802d324 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - *fill* 0x000000000802d34a 0x2 + 0x000000000802d364 0x26 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + *fill* 0x000000000802d38a 0x2 .text.HAL_ADC_Init - 0x000000000802d34c 0x344 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - 0x000000000802d34c HAL_ADC_Init + 0x000000000802d38c 0x344 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d38c HAL_ADC_Init .text.HAL_ADC_ConfigChannel - 0x000000000802d690 0x6a0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - 0x000000000802d690 HAL_ADC_ConfigChannel + 0x000000000802d6d0 0x6a0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802d6d0 HAL_ADC_ConfigChannel .text.ADC_ConfigureBoostMode - 0x000000000802dd30 0x214 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - 0x000000000802dd30 ADC_ConfigureBoostMode + 0x000000000802dd70 0x214 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + 0x000000000802dd70 ADC_ConfigureBoostMode .text.__NVIC_SetPriorityGrouping - 0x000000000802df44 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802df84 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o .text.__NVIC_GetPriorityGrouping - 0x000000000802df8c 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802dfcc 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o .text.__NVIC_EnableIRQ - 0x000000000802dfa8 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802dfe8 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o .text.__NVIC_SetPriority - 0x000000000802dfe4 0x54 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e024 0x54 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o .text.NVIC_EncodePriority - 0x000000000802e038 0x66 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - *fill* 0x000000000802e09e 0x2 + 0x000000000802e078 0x66 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + *fill* 0x000000000802e0de 0x2 .text.SysTick_Config - 0x000000000802e0a0 0x44 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e0e0 0x44 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o .text.HAL_NVIC_SetPriorityGrouping - 0x000000000802e0e4 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e0e4 HAL_NVIC_SetPriorityGrouping + 0x000000000802e124 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e124 HAL_NVIC_SetPriorityGrouping .text.HAL_NVIC_SetPriority - 0x000000000802e0fa 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e0fa HAL_NVIC_SetPriority + 0x000000000802e13a 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e13a HAL_NVIC_SetPriority .text.HAL_NVIC_EnableIRQ - 0x000000000802e12e 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e12e HAL_NVIC_EnableIRQ + 0x000000000802e16e 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e16e HAL_NVIC_EnableIRQ .text.HAL_SYSTICK_Config - 0x000000000802e14a 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e14a HAL_SYSTICK_Config - *fill* 0x000000000802e162 0x2 + 0x000000000802e18a 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e18a HAL_SYSTICK_Config + *fill* 0x000000000802e1a2 0x2 .text.HAL_MPU_Disable - 0x000000000802e164 0x30 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e164 HAL_MPU_Disable + 0x000000000802e1a4 0x30 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e1a4 HAL_MPU_Disable .text.HAL_MPU_Enable - 0x000000000802e194 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e194 HAL_MPU_Enable + 0x000000000802e1d4 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e1d4 HAL_MPU_Enable .text.HAL_MPU_ConfigRegion - 0x000000000802e1d4 0x88 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - 0x000000000802e1d4 HAL_MPU_ConfigRegion + 0x000000000802e214 0x88 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + 0x000000000802e214 HAL_MPU_ConfigRegion .text.HAL_DMA_Init - 0x000000000802e25c 0x6b8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x000000000802e25c HAL_DMA_Init + 0x000000000802e29c 0x6b8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000802e29c HAL_DMA_Init .text.HAL_DMA_Start_IT - 0x000000000802e914 0x4d4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x000000000802e914 HAL_DMA_Start_IT + 0x000000000802e954 0x4d4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000802e954 HAL_DMA_Start_IT .text.HAL_DMA_Abort - 0x000000000802ede8 0x63c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x000000000802ede8 HAL_DMA_Abort + 0x000000000802ee28 0x63c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000802ee28 HAL_DMA_Abort .text.HAL_DMA_Abort_IT - 0x000000000802f424 0x48c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x000000000802f424 HAL_DMA_Abort_IT + 0x000000000802f464 0x48c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000802f464 HAL_DMA_Abort_IT .text.HAL_DMA_IRQHandler - 0x000000000802f8b0 0xe54 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x000000000802f8b0 HAL_DMA_IRQHandler + 0x000000000802f8f0 0xe54 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000802f8f0 HAL_DMA_IRQHandler .text.HAL_DMA_GetState - 0x0000000008030704 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - 0x0000000008030704 HAL_DMA_GetState + 0x0000000008030744 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030744 HAL_DMA_GetState .text.DMA_SetConfig - 0x0000000008030720 0x358 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030760 0x358 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .text.DMA_CalcBaseAndBitshift - 0x0000000008030a78 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030ab8 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .text.DMA_CheckFifoParam - 0x0000000008030bdc 0xf8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030c1c 0xf8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .text.DMA_CalcDMAMUXChannelBaseAndMask - 0x0000000008030cd4 0x134 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030d14 0x134 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .text.DMA_CalcDMAMUXRequestGenBaseAndMask - 0x0000000008030e08 0xe8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x0000000008030e48 0xe8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .text.HAL_ETH_Init - 0x0000000008030ef0 0x1cc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008030ef0 HAL_ETH_Init + 0x0000000008030f30 0x1cc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008030f30 HAL_ETH_Init .text.HAL_ETH_Start - 0x00000000080310bc 0xc4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080310bc HAL_ETH_Start + 0x00000000080310fc 0xc4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080310fc HAL_ETH_Start .text.HAL_ETH_Stop - 0x0000000008031180 0xa0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031180 HAL_ETH_Stop + 0x00000000080311c0 0xa0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080311c0 HAL_ETH_Stop .text.HAL_ETH_Transmit - 0x0000000008031220 0x12e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031220 HAL_ETH_Transmit + 0x0000000008031260 0x12e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031260 HAL_ETH_Transmit .text.HAL_ETH_ReadData - 0x000000000803134e 0x180 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x000000000803134e HAL_ETH_ReadData + 0x000000000803138e 0x180 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x000000000803138e HAL_ETH_ReadData .text.ETH_UpdateDescriptor - 0x00000000080314ce 0xdc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - *fill* 0x00000000080315aa 0x2 + 0x000000000803150e 0xdc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + *fill* 0x00000000080315ea 0x2 .text.HAL_ETH_IRQHandler - 0x00000000080315ac 0x220 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080315ac HAL_ETH_IRQHandler + 0x00000000080315ec 0x220 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080315ec HAL_ETH_IRQHandler .text.HAL_ETH_TxCpltCallback - 0x00000000080317cc 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080317cc HAL_ETH_TxCpltCallback + 0x000000000803180c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x000000000803180c HAL_ETH_TxCpltCallback .text.HAL_ETH_RxCpltCallback - 0x00000000080317e0 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080317e0 HAL_ETH_RxCpltCallback + 0x0000000008031820 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031820 HAL_ETH_RxCpltCallback .text.HAL_ETH_ErrorCallback - 0x00000000080317f4 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080317f4 HAL_ETH_ErrorCallback + 0x0000000008031834 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031834 HAL_ETH_ErrorCallback .text.HAL_ETH_PMTCallback - 0x0000000008031808 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031808 HAL_ETH_PMTCallback + 0x0000000008031848 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031848 HAL_ETH_PMTCallback .text.HAL_ETH_EEECallback - 0x000000000803181c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x000000000803181c HAL_ETH_EEECallback + 0x000000000803185c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x000000000803185c HAL_ETH_EEECallback .text.HAL_ETH_WakeUpCallback - 0x0000000008031830 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031830 HAL_ETH_WakeUpCallback + 0x0000000008031870 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031870 HAL_ETH_WakeUpCallback .text.HAL_ETH_ReadPHYRegister - 0x0000000008031844 0xa8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031844 HAL_ETH_ReadPHYRegister + 0x0000000008031884 0xa8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031884 HAL_ETH_ReadPHYRegister .text.HAL_ETH_WritePHYRegister - 0x00000000080318ec 0xa8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x00000000080318ec HAL_ETH_WritePHYRegister + 0x000000000803192c 0xa8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x000000000803192c HAL_ETH_WritePHYRegister .text.HAL_ETH_GetMACConfig - 0x0000000008031994 0x3a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031994 HAL_ETH_GetMACConfig + 0x00000000080319d4 0x3a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080319d4 HAL_ETH_GetMACConfig .text.HAL_ETH_SetMACConfig - 0x0000000008031d3c 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031d3c HAL_ETH_SetMACConfig + 0x0000000008031d7c 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031d7c HAL_ETH_SetMACConfig .text.HAL_ETH_SetMDIOClockRange - 0x0000000008031d70 0xb0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - 0x0000000008031d70 HAL_ETH_SetMDIOClockRange + 0x0000000008031db0 0xb0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031db0 HAL_ETH_SetMDIOClockRange .text.ETH_SetMACConfig - 0x0000000008031e20 0x238 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008031e60 0x238 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o .text.ETH_SetDMAConfig - 0x0000000008032058 0x10c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x0000000008032098 0x10c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o .text.ETH_MACDMAConfig - 0x0000000008032164 0x13a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080321a4 0x13a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o .text.ETH_DMATxDescListInit - 0x000000000803229e 0x92 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x00000000080322de 0x92 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o .text.ETH_DMARxDescListInit - 0x0000000008032330 0xba ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - *fill* 0x00000000080323ea 0x2 + 0x0000000008032370 0xba ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + *fill* 0x000000000803242a 0x2 .text.ETH_Prepare_Tx_Descriptors - 0x00000000080323ec 0x51c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + 0x000000000803242c 0x51c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o .text.HAL_FDCAN_Init - 0x0000000008032908 0x3bc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008032908 HAL_FDCAN_Init + 0x0000000008032948 0x3bc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008032948 HAL_FDCAN_Init .text.HAL_FDCAN_GetRxMessage - 0x0000000008032cc4 0x2dc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008032cc4 HAL_FDCAN_GetRxMessage + 0x0000000008032d04 0x2dc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008032d04 HAL_FDCAN_GetRxMessage .text.HAL_FDCAN_IRQHandler - 0x0000000008032fa0 0x4bc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008032fa0 HAL_FDCAN_IRQHandler + 0x0000000008032fe0 0x4bc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008032fe0 HAL_FDCAN_IRQHandler .text.HAL_FDCAN_ClockCalibrationCallback - 0x000000000803345c 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x000000000803345c HAL_FDCAN_ClockCalibrationCallback + 0x000000000803349c 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x000000000803349c HAL_FDCAN_ClockCalibrationCallback .text.HAL_FDCAN_TxEventFifoCallback - 0x0000000008033472 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033472 HAL_FDCAN_TxEventFifoCallback + 0x00000000080334b2 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080334b2 HAL_FDCAN_TxEventFifoCallback .text.HAL_FDCAN_RxFifo1Callback - 0x0000000008033488 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033488 HAL_FDCAN_RxFifo1Callback + 0x00000000080334c8 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080334c8 HAL_FDCAN_RxFifo1Callback .text.HAL_FDCAN_TxFifoEmptyCallback - 0x000000000803349e 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x000000000803349e HAL_FDCAN_TxFifoEmptyCallback + 0x00000000080334de 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080334de HAL_FDCAN_TxFifoEmptyCallback .text.HAL_FDCAN_TxBufferCompleteCallback - 0x00000000080334b2 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x00000000080334b2 HAL_FDCAN_TxBufferCompleteCallback + 0x00000000080334f2 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080334f2 HAL_FDCAN_TxBufferCompleteCallback .text.HAL_FDCAN_TxBufferAbortCallback - 0x00000000080334c8 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x00000000080334c8 HAL_FDCAN_TxBufferAbortCallback + 0x0000000008033508 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008033508 HAL_FDCAN_TxBufferAbortCallback .text.HAL_FDCAN_RxBufferNewMessageCallback - 0x00000000080334de 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x00000000080334de HAL_FDCAN_RxBufferNewMessageCallback + 0x000000000803351e 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x000000000803351e HAL_FDCAN_RxBufferNewMessageCallback .text.HAL_FDCAN_TimestampWraparoundCallback - 0x00000000080334f2 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x00000000080334f2 HAL_FDCAN_TimestampWraparoundCallback + 0x0000000008033532 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008033532 HAL_FDCAN_TimestampWraparoundCallback .text.HAL_FDCAN_TimeoutOccurredCallback - 0x0000000008033506 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033506 HAL_FDCAN_TimeoutOccurredCallback + 0x0000000008033546 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008033546 HAL_FDCAN_TimeoutOccurredCallback .text.HAL_FDCAN_HighPriorityMessageCallback - 0x000000000803351a 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x000000000803351a HAL_FDCAN_HighPriorityMessageCallback + 0x000000000803355a 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x000000000803355a HAL_FDCAN_HighPriorityMessageCallback .text.HAL_FDCAN_ErrorCallback - 0x000000000803352e 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x000000000803352e HAL_FDCAN_ErrorCallback + 0x000000000803356e 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x000000000803356e HAL_FDCAN_ErrorCallback .text.HAL_FDCAN_TT_ScheduleSyncCallback - 0x0000000008033542 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033542 HAL_FDCAN_TT_ScheduleSyncCallback + 0x0000000008033582 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008033582 HAL_FDCAN_TT_ScheduleSyncCallback .text.HAL_FDCAN_TT_TimeMarkCallback - 0x0000000008033558 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033558 HAL_FDCAN_TT_TimeMarkCallback + 0x0000000008033598 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x0000000008033598 HAL_FDCAN_TT_TimeMarkCallback .text.HAL_FDCAN_TT_StopWatchCallback - 0x000000000803356e 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x000000000803356e HAL_FDCAN_TT_StopWatchCallback + 0x00000000080335ae 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080335ae HAL_FDCAN_TT_StopWatchCallback .text.HAL_FDCAN_TT_GlobalTimeCallback - 0x0000000008033586 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - 0x0000000008033586 HAL_FDCAN_TT_GlobalTimeCallback + 0x00000000080335c6 0x16 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080335c6 HAL_FDCAN_TT_GlobalTimeCallback .text.FDCAN_CalcultateRamBlockAddresses - 0x000000000803359c 0x30c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x00000000080335dc 0x30c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o .text.HAL_GPIO_Init - 0x00000000080338a8 0x360 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o - 0x00000000080338a8 HAL_GPIO_Init + 0x00000000080338e8 0x360 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o + 0x00000000080338e8 HAL_GPIO_Init .text.HAL_GPIO_WritePin - 0x0000000008033c08 0x32 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o - 0x0000000008033c08 HAL_GPIO_WritePin - *fill* 0x0000000008033c3a 0x2 + 0x0000000008033c48 0x32 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o + 0x0000000008033c48 HAL_GPIO_WritePin + *fill* 0x0000000008033c7a 0x2 .text.HAL_I2C_Init - 0x0000000008033c3c 0x120 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033c3c HAL_I2C_Init + 0x0000000008033c7c 0x120 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033c7c HAL_I2C_Init .text.HAL_I2C_EV_IRQHandler - 0x0000000008033d5c 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033d5c HAL_I2C_EV_IRQHandler + 0x0000000008033d9c 0x34 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033d9c HAL_I2C_EV_IRQHandler .text.HAL_I2C_ER_IRQHandler - 0x0000000008033d90 0xc2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033d90 HAL_I2C_ER_IRQHandler + 0x0000000008033dd0 0xc2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033dd0 HAL_I2C_ER_IRQHandler .text.HAL_I2C_SlaveTxCpltCallback - 0x0000000008033e52 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033e52 HAL_I2C_SlaveTxCpltCallback + 0x0000000008033e92 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033e92 HAL_I2C_SlaveTxCpltCallback .text.HAL_I2C_SlaveRxCpltCallback - 0x0000000008033e66 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033e66 HAL_I2C_SlaveRxCpltCallback + 0x0000000008033ea6 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033ea6 HAL_I2C_SlaveRxCpltCallback .text.HAL_I2C_AddrCallback - 0x0000000008033e7a 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033e7a HAL_I2C_AddrCallback + 0x0000000008033eba 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033eba HAL_I2C_AddrCallback .text.HAL_I2C_ListenCpltCallback - 0x0000000008033e96 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033e96 HAL_I2C_ListenCpltCallback + 0x0000000008033ed6 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033ed6 HAL_I2C_ListenCpltCallback .text.HAL_I2C_ErrorCallback - 0x0000000008033eaa 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033eaa HAL_I2C_ErrorCallback + 0x0000000008033eea 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033eea HAL_I2C_ErrorCallback .text.HAL_I2C_AbortCpltCallback - 0x0000000008033ebe 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - 0x0000000008033ebe HAL_I2C_AbortCpltCallback + 0x0000000008033efe 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033efe HAL_I2C_AbortCpltCallback .text.I2C_Slave_ISR_IT - 0x0000000008033ed2 0x206 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008033f12 0x206 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_ITAddrCplt - 0x00000000080340d8 0x108 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008034118 0x108 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_ITSlaveSeqCplt - 0x00000000080341e0 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008034220 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_ITSlaveCplt - 0x000000000803429c 0x3f0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x00000000080342dc 0x3f0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_ITListenCplt - 0x000000000803468c 0xac ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x00000000080346cc 0xac ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_ITError - 0x0000000008034738 0x1a0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008034778 0x1a0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_TreatErrorCallback - 0x00000000080348d8 0x4e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008034918 0x4e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_Flush_TXDR - 0x0000000008034926 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x0000000008034966 0x48 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_DMAAbort - 0x000000000803496e 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x00000000080349ae 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.I2C_Disable_IRQ - 0x00000000080349aa 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + 0x00000000080349ea 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o .text.HAL_I2CEx_ConfigAnalogFilter - 0x0000000008034a66 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o - 0x0000000008034a66 HAL_I2CEx_ConfigAnalogFilter + 0x0000000008034aa6 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o + 0x0000000008034aa6 HAL_I2CEx_ConfigAnalogFilter .text.HAL_I2CEx_ConfigDigitalFilter - 0x0000000008034afc 0x98 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o - 0x0000000008034afc HAL_I2CEx_ConfigDigitalFilter + 0x0000000008034b3c 0x98 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o + 0x0000000008034b3c HAL_I2CEx_ConfigDigitalFilter .text.HAL_PWREx_ConfigSupply - 0x0000000008034b94 0x74 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o - 0x0000000008034b94 HAL_PWREx_ConfigSupply + 0x0000000008034bd4 0x74 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o + 0x0000000008034bd4 HAL_PWREx_ConfigSupply .text.HAL_QSPI_Init - 0x0000000008034c08 0xe8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - 0x0000000008034c08 HAL_QSPI_Init + 0x0000000008034c48 0xe8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008034c48 HAL_QSPI_Init .text.HAL_QSPI_Command - 0x0000000008034cf0 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - 0x0000000008034cf0 HAL_QSPI_Command + 0x0000000008034d30 0xbc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008034d30 HAL_QSPI_Command .text.HAL_QSPI_Transmit - 0x0000000008034dac 0x124 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - 0x0000000008034dac HAL_QSPI_Transmit + 0x0000000008034dec 0x124 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008034dec HAL_QSPI_Transmit .text.HAL_QSPI_AutoPolling - 0x0000000008034ed0 0xee ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - 0x0000000008034ed0 HAL_QSPI_AutoPolling + 0x0000000008034f10 0xee ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008034f10 HAL_QSPI_AutoPolling .text.HAL_QSPI_SetTimeout - 0x0000000008034fbe 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - 0x0000000008034fbe HAL_QSPI_SetTimeout + 0x0000000008034ffe 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008034ffe HAL_QSPI_SetTimeout .text.QSPI_WaitFlagStateUntilTimeout - 0x0000000008034fda 0x6e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x000000000803501a 0x6e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o .text.QSPI_Config - 0x0000000008035048 0x30c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + 0x0000000008035088 0x30c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o .text.HAL_RCC_OscConfig - 0x0000000008035354 0x85c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008035354 HAL_RCC_OscConfig + 0x0000000008035394 0x85c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008035394 HAL_RCC_OscConfig .text.HAL_RCC_ClockConfig - 0x0000000008035bb0 0x36c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008035bb0 HAL_RCC_ClockConfig + 0x0000000008035bf0 0x36c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008035bf0 HAL_RCC_ClockConfig .text.HAL_RCC_EnableCSS - 0x0000000008035f1c 0x20 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008035f1c HAL_RCC_EnableCSS + 0x0000000008035f5c 0x20 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008035f5c HAL_RCC_EnableCSS .text.HAL_RCC_GetSysClockFreq - 0x0000000008035f3c 0x2f4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008035f3c HAL_RCC_GetSysClockFreq + 0x0000000008035f7c 0x2f4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008035f7c HAL_RCC_GetSysClockFreq .text.HAL_RCC_GetHCLKFreq - 0x0000000008036230 0x60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008036230 HAL_RCC_GetHCLKFreq + 0x0000000008036270 0x60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008036270 HAL_RCC_GetHCLKFreq .text.HAL_RCC_GetPCLK1Freq - 0x0000000008036290 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008036290 HAL_RCC_GetPCLK1Freq + 0x00000000080362d0 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x00000000080362d0 HAL_RCC_GetPCLK1Freq .text.HAL_RCC_GetPCLK2Freq - 0x00000000080362bc 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x00000000080362bc HAL_RCC_GetPCLK2Freq + 0x00000000080362fc 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x00000000080362fc HAL_RCC_GetPCLK2Freq .text.HAL_RCC_NMI_IRQHandler - 0x00000000080362e8 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x00000000080362e8 HAL_RCC_NMI_IRQHandler + 0x0000000008036328 0x28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008036328 HAL_RCC_NMI_IRQHandler .text.HAL_RCC_CSSCallback - 0x0000000008036310 0xe ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - 0x0000000008036310 HAL_RCC_CSSCallback - *fill* 0x000000000803631e 0x2 + 0x0000000008036350 0xe ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + 0x0000000008036350 HAL_RCC_CSSCallback + *fill* 0x000000000803635e 0x2 .text.HAL_RCCEx_PeriphCLKConfig - 0x0000000008036320 0xe8c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x0000000008036320 HAL_RCCEx_PeriphCLKConfig + 0x0000000008036360 0xe8c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x0000000008036360 HAL_RCCEx_PeriphCLKConfig .text.HAL_RCCEx_GetPeriphCLKFreq - 0x00000000080371ac 0x9a4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x00000000080371ac HAL_RCCEx_GetPeriphCLKFreq + 0x00000000080371ec 0x9a4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x00000000080371ec HAL_RCCEx_GetPeriphCLKFreq .text.HAL_RCCEx_GetD3PCLK1Freq - 0x0000000008037b50 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x0000000008037b50 HAL_RCCEx_GetD3PCLK1Freq + 0x0000000008037b90 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x0000000008037b90 HAL_RCCEx_GetD3PCLK1Freq .text.HAL_RCCEx_GetPLL2ClockFreq - 0x0000000008037b7c 0x2a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x0000000008037b7c HAL_RCCEx_GetPLL2ClockFreq + 0x0000000008037bbc 0x2a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x0000000008037bbc HAL_RCCEx_GetPLL2ClockFreq .text.HAL_RCCEx_GetPLL3ClockFreq - 0x0000000008037e24 0x2a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x0000000008037e24 HAL_RCCEx_GetPLL3ClockFreq + 0x0000000008037e64 0x2a8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x0000000008037e64 HAL_RCCEx_GetPLL3ClockFreq .text.HAL_RCCEx_GetPLL1ClockFreq - 0x00000000080380cc 0x2a4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - 0x00000000080380cc HAL_RCCEx_GetPLL1ClockFreq + 0x000000000803810c 0x2a4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x000000000803810c HAL_RCCEx_GetPLL1ClockFreq .text.RCCEx_PLL2_Config - 0x0000000008038370 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x00000000080383b0 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o .text.RCCEx_PLL3_Config - 0x00000000080384d4 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + 0x0000000008038514 0x164 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o .text.HAL_TIM_Base_Init - 0x0000000008038638 0xae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008038638 HAL_TIM_Base_Init - *fill* 0x00000000080386e6 0x2 + 0x0000000008038678 0xae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038678 HAL_TIM_Base_Init + *fill* 0x0000000008038726 0x2 .text.HAL_TIM_Base_Start_IT - 0x00000000080386e8 0xf0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x00000000080386e8 HAL_TIM_Base_Start_IT + 0x0000000008038728 0xf0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038728 HAL_TIM_Base_Start_IT .text.HAL_TIM_PWM_Init - 0x00000000080387d8 0xae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x00000000080387d8 HAL_TIM_PWM_Init + 0x0000000008038818 0xae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038818 HAL_TIM_PWM_Init .text.HAL_TIM_PWM_MspInit - 0x0000000008038886 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008038886 HAL_TIM_PWM_MspInit - *fill* 0x000000000803889a 0x2 + 0x00000000080388c6 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080388c6 HAL_TIM_PWM_MspInit + *fill* 0x00000000080388da 0x2 .text.HAL_TIM_PWM_Start - 0x000000000803889c 0x21c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x000000000803889c HAL_TIM_PWM_Start + 0x00000000080388dc 0x21c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080388dc HAL_TIM_PWM_Start .text.HAL_TIM_IRQHandler - 0x0000000008038ab8 0x23e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008038ab8 HAL_TIM_IRQHandler - *fill* 0x0000000008038cf6 0x2 + 0x0000000008038af8 0x23e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038af8 HAL_TIM_IRQHandler + *fill* 0x0000000008038d36 0x2 .text.HAL_TIM_PWM_ConfigChannel - 0x0000000008038cf8 0x228 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008038cf8 HAL_TIM_PWM_ConfigChannel + 0x0000000008038d38 0x228 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038d38 HAL_TIM_PWM_ConfigChannel .text.HAL_TIM_ConfigClockSource - 0x0000000008038f20 0x1f0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008038f20 HAL_TIM_ConfigClockSource + 0x0000000008038f60 0x1f0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008038f60 HAL_TIM_ConfigClockSource .text.HAL_TIM_OC_DelayElapsedCallback - 0x0000000008039110 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008039110 HAL_TIM_OC_DelayElapsedCallback + 0x0000000008039150 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039150 HAL_TIM_OC_DelayElapsedCallback .text.HAL_TIM_IC_CaptureCallback - 0x0000000008039124 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008039124 HAL_TIM_IC_CaptureCallback + 0x0000000008039164 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039164 HAL_TIM_IC_CaptureCallback .text.HAL_TIM_PWM_PulseFinishedCallback - 0x0000000008039138 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008039138 HAL_TIM_PWM_PulseFinishedCallback + 0x0000000008039178 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039178 HAL_TIM_PWM_PulseFinishedCallback .text.HAL_TIM_TriggerCallback - 0x000000000803914c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x000000000803914c HAL_TIM_TriggerCallback + 0x000000000803918c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x000000000803918c HAL_TIM_TriggerCallback .text.TIM_Base_SetConfig - 0x0000000008039160 0x134 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x0000000008039160 TIM_Base_SetConfig + 0x00000000080391a0 0x134 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080391a0 TIM_Base_SetConfig .text.TIM_OC1_SetConfig - 0x0000000008039294 0x120 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080392d4 0x120 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_OC2_SetConfig - 0x00000000080393b4 0x114 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x00000000080393b4 TIM_OC2_SetConfig + 0x00000000080393f4 0x114 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080393f4 TIM_OC2_SetConfig .text.TIM_OC3_SetConfig - 0x00000000080394c8 0x110 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039508 0x110 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_OC4_SetConfig - 0x00000000080395d8 0xd4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039618 0xd4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_OC5_SetConfig - 0x00000000080396ac 0xc8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080396ec 0xc8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_OC6_SetConfig - 0x0000000008039774 0xcc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080397b4 0xcc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_TI1_ConfigInputStage - 0x0000000008039840 0x5e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039880 0x5e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_TI2_ConfigInputStage - 0x000000000803989e 0x60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - *fill* 0x00000000080398fe 0x2 + 0x00000000080398de 0x60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + *fill* 0x000000000803993e 0x2 .text.TIM_ITRx_SetConfig - 0x0000000008039900 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x0000000008039940 0x3c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o .text.TIM_ETR_SetConfig - 0x000000000803993c 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x000000000803993c TIM_ETR_SetConfig + 0x000000000803997c 0x40 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x000000000803997c TIM_ETR_SetConfig .text.TIM_CCxChannelCmd - 0x000000000803997c 0x4a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - 0x000000000803997c TIM_CCxChannelCmd - *fill* 0x00000000080399c6 0x2 + 0x00000000080399bc 0x4a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + 0x00000000080399bc TIM_CCxChannelCmd + *fill* 0x0000000008039a06 0x2 .text.HAL_TIMEx_MasterConfigSynchronization - 0x00000000080399c8 0x11c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - 0x00000000080399c8 HAL_TIMEx_MasterConfigSynchronization + 0x0000000008039a08 0x11c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + 0x0000000008039a08 HAL_TIMEx_MasterConfigSynchronization .text.HAL_TIMEx_CommutCallback - 0x0000000008039ae4 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - 0x0000000008039ae4 HAL_TIMEx_CommutCallback + 0x0000000008039b24 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + 0x0000000008039b24 HAL_TIMEx_CommutCallback .text.HAL_TIMEx_BreakCallback - 0x0000000008039af8 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - 0x0000000008039af8 HAL_TIMEx_BreakCallback + 0x0000000008039b38 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + 0x0000000008039b38 HAL_TIMEx_BreakCallback .text.HAL_TIMEx_Break2Callback - 0x0000000008039b0c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - 0x0000000008039b0c HAL_TIMEx_Break2Callback + 0x0000000008039b4c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + 0x0000000008039b4c HAL_TIMEx_Break2Callback .text.HAL_UART_Init - 0x0000000008039b20 0xa0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x0000000008039b20 HAL_UART_Init + 0x0000000008039b60 0xa0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x0000000008039b60 HAL_UART_Init .text.HAL_UART_Transmit - 0x0000000008039bc0 0x12c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x0000000008039bc0 HAL_UART_Transmit + 0x0000000008039c00 0x12c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x0000000008039c00 HAL_UART_Transmit .text.HAL_UART_Receive_IT - 0x0000000008039cec 0xac ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x0000000008039cec HAL_UART_Receive_IT + 0x0000000008039d2c 0xac ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x0000000008039d2c HAL_UART_Receive_IT .text.HAL_UART_Transmit_DMA - 0x0000000008039d98 0x124 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x0000000008039d98 HAL_UART_Transmit_DMA + 0x0000000008039dd8 0x124 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x0000000008039dd8 HAL_UART_Transmit_DMA .text.HAL_UART_IRQHandler - 0x0000000008039ebc 0x73c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x0000000008039ebc HAL_UART_IRQHandler + 0x0000000008039efc 0x73c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x0000000008039efc HAL_UART_IRQHandler .text.HAL_UART_TxHalfCpltCallback - 0x000000000803a5f8 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803a5f8 HAL_UART_TxHalfCpltCallback + 0x000000000803a638 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803a638 HAL_UART_TxHalfCpltCallback .text.HAL_UART_ErrorCallback - 0x000000000803a60c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803a60c HAL_UART_ErrorCallback + 0x000000000803a64c 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803a64c HAL_UART_ErrorCallback .text.HAL_UARTEx_RxEventCallback - 0x000000000803a620 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803a620 HAL_UARTEx_RxEventCallback + 0x000000000803a660 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803a660 HAL_UARTEx_RxEventCallback .text.UART_SetConfig - 0x000000000803a638 0xad0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803a638 UART_SetConfig + 0x000000000803a678 0xad0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803a678 UART_SetConfig .text.UART_AdvFeatureConfig - 0x000000000803b108 0x144 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803b108 UART_AdvFeatureConfig + 0x000000000803b148 0x144 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b148 UART_AdvFeatureConfig .text.UART_CheckIdleState - 0x000000000803b24c 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803b24c UART_CheckIdleState + 0x000000000803b28c 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b28c UART_CheckIdleState .text.UART_WaitOnFlagUntilTimeout - 0x000000000803b2e2 0x190 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803b2e2 UART_WaitOnFlagUntilTimeout - *fill* 0x000000000803b472 0x2 + 0x000000000803b322 0x190 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b322 UART_WaitOnFlagUntilTimeout + *fill* 0x000000000803b4b2 0x2 .text.UART_Start_Receive_IT - 0x000000000803b474 0x254 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000803b474 UART_Start_Receive_IT + 0x000000000803b4b4 0x254 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b4b4 UART_Start_Receive_IT .text.UART_EndTxTransfer - 0x000000000803b6c8 0x82 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - *fill* 0x000000000803b74a 0x2 + 0x000000000803b708 0x82 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + *fill* 0x000000000803b78a 0x2 .text.UART_EndRxTransfer - 0x000000000803b74c 0xcc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b78c 0xcc ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_DMATransmitCplt - 0x000000000803b818 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b858 0x96 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_DMATxHalfCplt - 0x000000000803b8ae 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b8ee 0x1c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_DMAError - 0x000000000803b8ca 0x80 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b90a 0x80 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_DMAAbortOnError - 0x000000000803b94a 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b98a 0x2c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_EndTransmit_IT - 0x000000000803b976 0x56 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803b9b6 0x56 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_RxISR_8BIT - 0x000000000803b9cc 0x160 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803ba0c 0x160 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_RxISR_16BIT - 0x000000000803bb2c 0x160 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803bb6c 0x160 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_RxISR_8BIT_FIFOEN - 0x000000000803bc8c 0x2f8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803bccc 0x2f8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.UART_RxISR_16BIT_FIFOEN - 0x000000000803bf84 0x300 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000803bfc4 0x300 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o .text.HAL_UARTEx_WakeupCallback - 0x000000000803c284 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c284 HAL_UARTEx_WakeupCallback + 0x000000000803c2c4 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c2c4 HAL_UARTEx_WakeupCallback .text.HAL_UARTEx_RxFifoFullCallback - 0x000000000803c298 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c298 HAL_UARTEx_RxFifoFullCallback + 0x000000000803c2d8 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c2d8 HAL_UARTEx_RxFifoFullCallback .text.HAL_UARTEx_TxFifoEmptyCallback - 0x000000000803c2ac 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c2ac HAL_UARTEx_TxFifoEmptyCallback + 0x000000000803c2ec 0x14 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c2ec HAL_UARTEx_TxFifoEmptyCallback .text.HAL_UARTEx_EnableFifoMode - 0x000000000803c2c0 0x76 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c2c0 HAL_UARTEx_EnableFifoMode + 0x000000000803c300 0x76 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c300 HAL_UARTEx_EnableFifoMode .text.HAL_UARTEx_DisableFifoMode - 0x000000000803c336 0x72 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c336 HAL_UARTEx_DisableFifoMode + 0x000000000803c376 0x72 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c376 HAL_UARTEx_DisableFifoMode .text.HAL_UARTEx_SetTxFifoThreshold - 0x000000000803c3a8 0x7c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c3a8 HAL_UARTEx_SetTxFifoThreshold + 0x000000000803c3e8 0x7c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c3e8 HAL_UARTEx_SetTxFifoThreshold .text.HAL_UARTEx_SetRxFifoThreshold - 0x000000000803c424 0x7c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - 0x000000000803c424 HAL_UARTEx_SetRxFifoThreshold + 0x000000000803c464 0x7c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c464 HAL_UARTEx_SetRxFifoThreshold .text.UARTEx_SetNbDataToProcess - 0x000000000803c4a0 0x9c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000803c4e0 0x9c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o .text.MX_LWIP_Init - 0x000000000803c53c 0x264 ./LWIP/App/lwip.o - 0x000000000803c53c MX_LWIP_Init + 0x000000000803c57c 0x264 ./LWIP/App/lwip.o + 0x000000000803c57c MX_LWIP_Init .text.Ethernet_Link_Periodic_Handle - 0x000000000803c7a0 0x34 ./LWIP/App/lwip.o + 0x000000000803c7e0 0x34 ./LWIP/App/lwip.o .text.MX_LWIP_Process - 0x000000000803c7d4 0x1c ./LWIP/App/lwip.o - 0x000000000803c7d4 MX_LWIP_Process + 0x000000000803c814 0x1c ./LWIP/App/lwip.o + 0x000000000803c814 MX_LWIP_Process .text.ethernet_link_status_updated - 0x000000000803c7f0 0x14 ./LWIP/App/lwip.o + 0x000000000803c830 0x14 ./LWIP/App/lwip.o .text.low_level_init - 0x000000000803c804 0x154 ./LWIP/Target/ethernetif.o + 0x000000000803c844 0x154 ./LWIP/Target/ethernetif.o .text.low_level_output - 0x000000000803c958 0x104 ./LWIP/Target/ethernetif.o + 0x000000000803c998 0x104 ./LWIP/Target/ethernetif.o .text.low_level_input - 0x000000000803ca5c 0x34 ./LWIP/Target/ethernetif.o + 0x000000000803ca9c 0x34 ./LWIP/Target/ethernetif.o .text.ethernetif_input - 0x000000000803ca90 0x40 ./LWIP/Target/ethernetif.o - 0x000000000803ca90 ethernetif_input + 0x000000000803cad0 0x40 ./LWIP/Target/ethernetif.o + 0x000000000803cad0 ethernetif_input .text.ethernetif_init - 0x000000000803cad0 0x5c ./LWIP/Target/ethernetif.o - 0x000000000803cad0 ethernetif_init + 0x000000000803cb10 0x5c ./LWIP/Target/ethernetif.o + 0x000000000803cb10 ethernetif_init .text.pbuf_free_custom - 0x000000000803cb2c 0x34 ./LWIP/Target/ethernetif.o - 0x000000000803cb2c pbuf_free_custom - .text.sys_now 0x000000000803cb60 0xe ./LWIP/Target/ethernetif.o - 0x000000000803cb60 sys_now - *fill* 0x000000000803cb6e 0x2 + 0x000000000803cb6c 0x34 ./LWIP/Target/ethernetif.o + 0x000000000803cb6c pbuf_free_custom + .text.sys_now 0x000000000803cba0 0xe ./LWIP/Target/ethernetif.o + 0x000000000803cba0 sys_now + *fill* 0x000000000803cbae 0x2 .text.HAL_ETH_MspInit - 0x000000000803cb70 0x178 ./LWIP/Target/ethernetif.o - 0x000000000803cb70 HAL_ETH_MspInit + 0x000000000803cbb0 0x178 ./LWIP/Target/ethernetif.o + 0x000000000803cbb0 HAL_ETH_MspInit .text.ETH_PHY_IO_Init - 0x000000000803cce8 0x14 ./LWIP/Target/ethernetif.o - 0x000000000803cce8 ETH_PHY_IO_Init + 0x000000000803cd28 0x14 ./LWIP/Target/ethernetif.o + 0x000000000803cd28 ETH_PHY_IO_Init .text.ETH_PHY_IO_DeInit - 0x000000000803ccfc 0x10 ./LWIP/Target/ethernetif.o - 0x000000000803ccfc ETH_PHY_IO_DeInit + 0x000000000803cd3c 0x10 ./LWIP/Target/ethernetif.o + 0x000000000803cd3c ETH_PHY_IO_DeInit .text.ETH_PHY_IO_ReadReg - 0x000000000803cd0c 0x34 ./LWIP/Target/ethernetif.o - 0x000000000803cd0c ETH_PHY_IO_ReadReg + 0x000000000803cd4c 0x34 ./LWIP/Target/ethernetif.o + 0x000000000803cd4c ETH_PHY_IO_ReadReg .text.ETH_PHY_IO_WriteReg - 0x000000000803cd40 0x34 ./LWIP/Target/ethernetif.o - 0x000000000803cd40 ETH_PHY_IO_WriteReg + 0x000000000803cd80 0x34 ./LWIP/Target/ethernetif.o + 0x000000000803cd80 ETH_PHY_IO_WriteReg .text.ETH_PHY_IO_GetTick - 0x000000000803cd74 0xe ./LWIP/Target/ethernetif.o - 0x000000000803cd74 ETH_PHY_IO_GetTick - *fill* 0x000000000803cd82 0x2 + 0x000000000803cdb4 0xe ./LWIP/Target/ethernetif.o + 0x000000000803cdb4 ETH_PHY_IO_GetTick + *fill* 0x000000000803cdc2 0x2 .text.ethernet_link_check_state - 0x000000000803cd84 0x118 ./LWIP/Target/ethernetif.o - 0x000000000803cd84 ethernet_link_check_state + 0x000000000803cdc4 0x118 ./LWIP/Target/ethernetif.o + 0x000000000803cdc4 ethernet_link_check_state .text.HAL_ETH_RxAllocateCallback - 0x000000000803ce9c 0x60 ./LWIP/Target/ethernetif.o - 0x000000000803ce9c HAL_ETH_RxAllocateCallback + 0x000000000803cedc 0x60 ./LWIP/Target/ethernetif.o + 0x000000000803cedc HAL_ETH_RxAllocateCallback .text.HAL_ETH_RxLinkCallback - 0x000000000803cefc 0xd0 ./LWIP/Target/ethernetif.o - 0x000000000803cefc HAL_ETH_RxLinkCallback + 0x000000000803cf3c 0xd0 ./LWIP/Target/ethernetif.o + 0x000000000803cf3c HAL_ETH_RxLinkCallback .text.lwip_htons - 0x000000000803cfcc 0x2a ./Middlewares/Third_Party/LwIP/src/core/def.o - 0x000000000803cfcc lwip_htons + 0x000000000803d00c 0x2a ./Middlewares/Third_Party/LwIP/src/core/def.o + 0x000000000803d00c lwip_htons .text.lwip_htonl - 0x000000000803cff6 0x32 ./Middlewares/Third_Party/LwIP/src/core/def.o - 0x000000000803cff6 lwip_htonl + 0x000000000803d036 0x32 ./Middlewares/Third_Party/LwIP/src/core/def.o + 0x000000000803d036 lwip_htonl .text.lwip_standard_chksum - 0x000000000803d028 0xba ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o - 0x000000000803d028 lwip_standard_chksum + 0x000000000803d068 0xba ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o + 0x000000000803d068 lwip_standard_chksum .text.inet_chksum - 0x000000000803d0e2 0x24 ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o - 0x000000000803d0e2 inet_chksum + 0x000000000803d122 0x24 ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o + 0x000000000803d122 inet_chksum .text.inet_chksum_pbuf - 0x000000000803d106 0x9a ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o - 0x000000000803d106 inet_chksum_pbuf + 0x000000000803d146 0x9a ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o + 0x000000000803d146 inet_chksum_pbuf .text.lwip_init - 0x000000000803d1a0 0x2a ./Middlewares/Third_Party/LwIP/src/core/init.o - 0x000000000803d1a0 lwip_init - *fill* 0x000000000803d1ca 0x2 + 0x000000000803d1e0 0x2a ./Middlewares/Third_Party/LwIP/src/core/init.o + 0x000000000803d1e0 lwip_init + *fill* 0x000000000803d20a 0x2 .text.ptr_to_mem - 0x000000000803d1cc 0x24 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d20c 0x24 ./Middlewares/Third_Party/LwIP/src/core/mem.o .text.mem_to_ptr - 0x000000000803d1f0 0x24 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d230 0x24 ./Middlewares/Third_Party/LwIP/src/core/mem.o .text.plug_holes - 0x000000000803d214 0x144 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d254 0x144 ./Middlewares/Third_Party/LwIP/src/core/mem.o .text.mem_init - 0x000000000803d358 0x70 ./Middlewares/Third_Party/LwIP/src/core/mem.o - 0x000000000803d358 mem_init + 0x000000000803d398 0x70 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d398 mem_init .text.mem_link_valid - 0x000000000803d3c8 0x78 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d408 0x78 ./Middlewares/Third_Party/LwIP/src/core/mem.o .text.mem_free - 0x000000000803d440 0xd4 ./Middlewares/Third_Party/LwIP/src/core/mem.o - 0x000000000803d440 mem_free + 0x000000000803d480 0xd4 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d480 mem_free .text.mem_trim - 0x000000000803d514 0x1f8 ./Middlewares/Third_Party/LwIP/src/core/mem.o - 0x000000000803d514 mem_trim + 0x000000000803d554 0x1f8 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d554 mem_trim .text.mem_malloc - 0x000000000803d70c 0x1f4 ./Middlewares/Third_Party/LwIP/src/core/mem.o - 0x000000000803d70c mem_malloc + 0x000000000803d74c 0x1f4 ./Middlewares/Third_Party/LwIP/src/core/mem.o + 0x000000000803d74c mem_malloc .text.memp_init_pool - 0x000000000803d900 0x60 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803d900 memp_init_pool + 0x000000000803d940 0x60 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803d940 memp_init_pool .text.memp_init - 0x000000000803d960 0x34 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803d960 memp_init + 0x000000000803d9a0 0x34 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803d9a0 memp_init .text.do_memp_malloc_pool - 0x000000000803d994 0x54 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803d9d4 0x54 ./Middlewares/Third_Party/LwIP/src/core/memp.o .text.memp_malloc_pool - 0x000000000803d9e8 0x44 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803d9e8 memp_malloc_pool + 0x000000000803da28 0x44 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803da28 memp_malloc_pool .text.memp_malloc - 0x000000000803da2c 0x4c ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803da2c memp_malloc + 0x000000000803da6c 0x4c ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803da6c memp_malloc .text.do_memp_free_pool - 0x000000000803da78 0x4c ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803dab8 0x4c ./Middlewares/Third_Party/LwIP/src/core/memp.o .text.memp_free_pool - 0x000000000803dac4 0x48 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803dac4 memp_free_pool + 0x000000000803db04 0x48 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803db04 memp_free_pool .text.memp_free - 0x000000000803db0c 0x54 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000803db0c memp_free + 0x000000000803db4c 0x54 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000803db4c memp_free .text.netif_init - 0x000000000803db60 0xe ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803db60 netif_init - *fill* 0x000000000803db6e 0x2 + 0x000000000803dba0 0xe ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803dba0 netif_init + *fill* 0x000000000803dbae 0x2 .text.netif_add - 0x000000000803db70 0x1a4 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803db70 netif_add + 0x000000000803dbb0 0x1a4 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803dbb0 netif_add .text.netif_do_ip_addr_changed - 0x000000000803dd14 0x22 ./Middlewares/Third_Party/LwIP/src/core/netif.o - *fill* 0x000000000803dd36 0x2 + 0x000000000803dd54 0x22 ./Middlewares/Third_Party/LwIP/src/core/netif.o + *fill* 0x000000000803dd76 0x2 .text.netif_do_set_ipaddr - 0x000000000803dd38 0xa4 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803dd78 0xa4 ./Middlewares/Third_Party/LwIP/src/core/netif.o .text.netif_do_set_netmask - 0x000000000803dddc 0x3e ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803de1c 0x3e ./Middlewares/Third_Party/LwIP/src/core/netif.o .text.netif_do_set_gw - 0x000000000803de1a 0x3e ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803de5a 0x3e ./Middlewares/Third_Party/LwIP/src/core/netif.o .text.netif_set_addr - 0x000000000803de58 0x94 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803de58 netif_set_addr + 0x000000000803de98 0x94 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803de98 netif_set_addr .text.netif_set_default - 0x000000000803deec 0x20 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803deec netif_set_default + 0x000000000803df2c 0x20 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803df2c netif_set_default .text.netif_set_up - 0x000000000803df0c 0x68 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803df0c netif_set_up + 0x000000000803df4c 0x68 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803df4c netif_set_up .text.netif_issue_reports - 0x000000000803df74 0x80 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803dfb4 0x80 ./Middlewares/Third_Party/LwIP/src/core/netif.o .text.netif_set_down - 0x000000000803dff4 0x74 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803dff4 netif_set_down + 0x000000000803e034 0x74 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803e034 netif_set_down .text.netif_set_link_up - 0x000000000803e068 0x68 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803e068 netif_set_link_up + 0x000000000803e0a8 0x68 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803e0a8 netif_set_link_up .text.netif_set_link_down - 0x000000000803e0d0 0x60 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803e0d0 netif_set_link_down + 0x000000000803e110 0x60 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803e110 netif_set_link_down .text.netif_set_link_callback - 0x000000000803e130 0x22 ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803e130 netif_set_link_callback + 0x000000000803e170 0x22 ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803e170 netif_set_link_callback .text.netif_null_output_ip4 - 0x000000000803e152 0x1c ./Middlewares/Third_Party/LwIP/src/core/netif.o - *fill* 0x000000000803e16e 0x2 + 0x000000000803e192 0x1c ./Middlewares/Third_Party/LwIP/src/core/netif.o + *fill* 0x000000000803e1ae 0x2 .text.netif_get_by_index - 0x000000000803e170 0x4c ./Middlewares/Third_Party/LwIP/src/core/netif.o - 0x000000000803e170 netif_get_by_index + 0x000000000803e1b0 0x4c ./Middlewares/Third_Party/LwIP/src/core/netif.o + 0x000000000803e1b0 netif_get_by_index .text.pbuf_free_ooseq - 0x000000000803e1bc 0x40 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e1bc pbuf_free_ooseq + 0x000000000803e1fc 0x40 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e1fc pbuf_free_ooseq .text.pbuf_pool_is_empty - 0x000000000803e1fc 0x18 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e23c 0x18 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o .text.pbuf_init_alloced_pbuf - 0x000000000803e214 0x54 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e254 0x54 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o .text.pbuf_alloc - 0x000000000803e268 0x1ec ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e268 pbuf_alloc + 0x000000000803e2a8 0x1ec ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e2a8 pbuf_alloc .text.pbuf_alloc_reference - 0x000000000803e454 0x68 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e454 pbuf_alloc_reference + 0x000000000803e494 0x68 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e494 pbuf_alloc_reference .text.pbuf_alloced_custom - 0x000000000803e4bc 0x68 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e4bc pbuf_alloced_custom + 0x000000000803e4fc 0x68 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e4fc pbuf_alloced_custom .text.pbuf_realloc - 0x000000000803e524 0x110 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e524 pbuf_realloc + 0x000000000803e564 0x110 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e564 pbuf_realloc .text.pbuf_add_header_impl - 0x000000000803e634 0xd0 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e674 0xd0 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o .text.pbuf_add_header - 0x000000000803e704 0x1e ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e704 pbuf_add_header - *fill* 0x000000000803e722 0x2 + 0x000000000803e744 0x1e ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e744 pbuf_add_header + *fill* 0x000000000803e762 0x2 .text.pbuf_remove_header - 0x000000000803e724 0xa4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e724 pbuf_remove_header + 0x000000000803e764 0xa4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e764 pbuf_remove_header .text.pbuf_header_impl - 0x000000000803e7c8 0x42 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e808 0x42 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o .text.pbuf_header_force - 0x000000000803e80a 0x24 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e80a pbuf_header_force - *fill* 0x000000000803e82e 0x2 + 0x000000000803e84a 0x24 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e84a pbuf_header_force + *fill* 0x000000000803e86e 0x2 .text.pbuf_free - 0x000000000803e830 0x110 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e830 pbuf_free + 0x000000000803e870 0x110 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e870 pbuf_free .text.pbuf_clen - 0x000000000803e940 0x2e ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e940 pbuf_clen - *fill* 0x000000000803e96e 0x2 + 0x000000000803e980 0x2e ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e980 pbuf_clen + *fill* 0x000000000803e9ae 0x2 .text.pbuf_ref - 0x000000000803e970 0x44 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e970 pbuf_ref + 0x000000000803e9b0 0x44 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e9b0 pbuf_ref .text.pbuf_cat - 0x000000000803e9b4 0xac ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803e9b4 pbuf_cat + 0x000000000803e9f4 0xac ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803e9f4 pbuf_cat .text.pbuf_chain - 0x000000000803ea60 0x20 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803ea60 pbuf_chain + 0x000000000803eaa0 0x20 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803eaa0 pbuf_chain .text.pbuf_copy - 0x000000000803ea80 0x1a4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803ea80 pbuf_copy + 0x000000000803eac0 0x1a4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803eac0 pbuf_copy .text.pbuf_copy_partial - 0x000000000803ec24 0xe4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803ec24 pbuf_copy_partial + 0x000000000803ec64 0xe4 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803ec64 pbuf_copy_partial .text.pbuf_take - 0x000000000803ed08 0x124 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803ed08 pbuf_take + 0x000000000803ed48 0x124 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803ed48 pbuf_take .text.pbuf_clone - 0x000000000803ee2c 0x64 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - 0x000000000803ee2c pbuf_clone + 0x000000000803ee6c 0x64 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + 0x000000000803ee6c pbuf_clone .text.tcp_init - 0x000000000803ee90 0x24 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803ee90 tcp_init + 0x000000000803eed0 0x24 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803eed0 tcp_init .text.tcp_free - 0x000000000803eeb4 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803eeb4 tcp_free + 0x000000000803eef4 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803eef4 tcp_free .text.tcp_free_listen - 0x000000000803eeec 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - .text.tcp_tmr 0x000000000803ef24 0x2c ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803ef24 tcp_tmr + 0x000000000803ef2c 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + .text.tcp_tmr 0x000000000803ef64 0x2c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803ef64 tcp_tmr .text.tcp_remove_listener - 0x000000000803ef50 0x54 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803ef90 0x54 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_listen_closed - 0x000000000803efa4 0x74 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803efe4 0x74 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_close_shutdown - 0x000000000803f018 0x1c4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f058 0x1c4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_close_shutdown_fin - 0x000000000803f1dc 0xd4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f21c 0xd4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_close - 0x000000000803f2b0 0x58 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f2b0 tcp_close + 0x000000000803f2f0 0x58 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f2f0 tcp_close .text.tcp_abandon - 0x000000000803f308 0x17c ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f308 tcp_abandon + 0x000000000803f348 0x17c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f348 tcp_abandon .text.tcp_abort - 0x000000000803f484 0x18 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f484 tcp_abort + 0x000000000803f4c4 0x18 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f4c4 tcp_abort .text.tcp_update_rcv_ann_wnd - 0x000000000803f49c 0xb4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f49c tcp_update_rcv_ann_wnd + 0x000000000803f4dc 0xb4 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f4dc tcp_update_rcv_ann_wnd .text.tcp_recved - 0x000000000803f550 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f550 tcp_recved + 0x000000000803f590 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f590 tcp_recved .text.tcp_slowtmr - 0x000000000803f5f0 0x680 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803f5f0 tcp_slowtmr + 0x000000000803f630 0x680 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803f630 tcp_slowtmr .text.tcp_fasttmr - 0x000000000803fc70 0xc8 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fc70 tcp_fasttmr + 0x000000000803fcb0 0xc8 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803fcb0 tcp_fasttmr .text.tcp_process_refused_data - 0x000000000803fd38 0xf8 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fd38 tcp_process_refused_data + 0x000000000803fd78 0xf8 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803fd78 tcp_process_refused_data .text.tcp_segs_free - 0x000000000803fe30 0x2a ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fe30 tcp_segs_free + 0x000000000803fe70 0x2a ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803fe70 tcp_segs_free .text.tcp_seg_free - 0x000000000803fe5a 0x30 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fe5a tcp_seg_free - *fill* 0x000000000803fe8a 0x2 + 0x000000000803fe9a 0x30 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803fe9a tcp_seg_free + *fill* 0x000000000803feca 0x2 .text.tcp_seg_copy - 0x000000000803fe8c 0x58 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fe8c tcp_seg_copy + 0x000000000803fecc 0x58 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803fecc tcp_seg_copy .text.tcp_recv_null - 0x000000000803fee4 0x6c ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000803fee4 tcp_recv_null + 0x000000000803ff24 0x6c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803ff24 tcp_recv_null .text.tcp_kill_prio - 0x000000000803ff50 0x9c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000803ff90 0x9c ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_kill_state - 0x000000000803ffec 0x94 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000804002c 0x94 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_kill_timewait - 0x0000000008040080 0x60 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x00000000080400c0 0x60 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_handle_closepend - 0x00000000080400e0 0x4c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x0000000008040120 0x4c ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_alloc - 0x000000000804012c 0x108 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000804012c tcp_alloc + 0x000000000804016c 0x108 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000804016c tcp_alloc .text.tcp_pcb_purge - 0x0000000008040234 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x0000000008040234 tcp_pcb_purge + 0x0000000008040274 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x0000000008040274 tcp_pcb_purge .text.tcp_pcb_remove - 0x00000000080402d4 0x128 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x00000000080402d4 tcp_pcb_remove + 0x0000000008040314 0x128 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x0000000008040314 tcp_pcb_remove .text.tcp_next_iss - 0x00000000080403fc 0x4c ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x00000000080403fc tcp_next_iss + 0x000000000804043c 0x4c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000804043c tcp_next_iss .text.tcp_eff_send_mss_netif - 0x0000000008040448 0x74 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x0000000008040448 tcp_eff_send_mss_netif + 0x0000000008040488 0x74 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x0000000008040488 tcp_eff_send_mss_netif .text.tcp_netif_ip_addr_changed_pcblist - 0x00000000080404bc 0x64 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x00000000080404fc 0x64 ./Middlewares/Third_Party/LwIP/src/core/tcp.o .text.tcp_netif_ip_addr_changed - 0x0000000008040520 0x7c ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x0000000008040520 tcp_netif_ip_addr_changed + 0x0000000008040560 0x7c ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x0000000008040560 tcp_netif_ip_addr_changed .text.tcp_free_ooseq - 0x000000000804059c 0x28 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000804059c tcp_free_ooseq + 0x00000000080405dc 0x28 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x00000000080405dc tcp_free_ooseq .text.tcp_input - 0x00000000080405c4 0x818 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o - 0x00000000080405c4 tcp_input + 0x0000000008040604 0x818 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008040604 tcp_input .text.tcp_input_delayed_close - 0x0000000008040ddc 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008040e1c 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_listen_input - 0x0000000008040e5c 0x1fc ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008040e9c 0x1fc ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_timewait_input - 0x0000000008041058 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008041098 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_process - 0x000000000804114c 0x7e0 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x000000000804118c 0x7e0 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_oos_insert_segment - 0x000000000804192c 0x110 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x000000000804196c 0x110 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_free_acked_segments - 0x0000000008041a3c 0xf8 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008041a7c 0xf8 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_receive - 0x0000000008041b34 0xf30 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008041b74 0xf30 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_get_next_optbyte - 0x0000000008042a64 0x6c ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008042aa4 0x6c ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_parseopt - 0x0000000008042ad0 0xec ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008042b10 0xec ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o .text.tcp_trigger_input_pcb_close - 0x0000000008042bbc 0x20 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o - 0x0000000008042bbc tcp_trigger_input_pcb_close + 0x0000000008042bfc 0x20 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + 0x0000000008042bfc tcp_trigger_input_pcb_close .text.tcp_route - 0x0000000008042bdc 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008042c1c 0x38 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_create_segment - 0x0000000008042c14 0x13c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008042c54 0x13c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_pbuf_prealloc - 0x0000000008042d50 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008042d90 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_write_checks - 0x0000000008042e44 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008042e84 0xf4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_write - 0x0000000008042f38 0x6c8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008042f38 tcp_write + 0x0000000008042f78 0x6c8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008042f78 tcp_write .text.tcp_split_unsent_seg - 0x0000000008043600 0x290 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008043600 tcp_split_unsent_seg + 0x0000000008043640 0x290 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008043640 tcp_split_unsent_seg .text.tcp_send_fin - 0x0000000008043890 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008043890 tcp_send_fin + 0x00000000080438d0 0xa0 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x00000000080438d0 tcp_send_fin .text.tcp_enqueue_flags - 0x0000000008043930 0x1dc ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008043930 tcp_enqueue_flags + 0x0000000008043970 0x1dc ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008043970 tcp_enqueue_flags .text.tcp_output - 0x0000000008043b0c 0x3e8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008043b0c tcp_output + 0x0000000008043b4c 0x3e8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008043b4c tcp_output .text.tcp_output_segment_busy - 0x0000000008043ef4 0x40 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008043f34 0x40 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_output_segment - 0x0000000008043f34 0x1bc ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008043f74 0x1bc ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_rexmit_rto_prepare - 0x00000000080440f0 0xe0 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x00000000080440f0 tcp_rexmit_rto_prepare + 0x0000000008044130 0xe0 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044130 tcp_rexmit_rto_prepare .text.tcp_rexmit_rto_commit - 0x00000000080441d0 0x50 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x00000000080441d0 tcp_rexmit_rto_commit + 0x0000000008044210 0x50 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044210 tcp_rexmit_rto_commit .text.tcp_rexmit_rto - 0x0000000008044220 0x44 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008044220 tcp_rexmit_rto + 0x0000000008044260 0x44 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044260 tcp_rexmit_rto .text.tcp_rexmit - 0x0000000008044264 0xd8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008044264 tcp_rexmit + 0x00000000080442a4 0xd8 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x00000000080442a4 tcp_rexmit .text.tcp_rexmit_fast - 0x000000000804433c 0xc4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x000000000804433c tcp_rexmit_fast + 0x000000000804437c 0xc4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x000000000804437c tcp_rexmit_fast .text.tcp_output_alloc_header_common - 0x0000000008044400 0xe4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044440 0xe4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_output_alloc_header - 0x00000000080444e4 0x7c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044524 0x7c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_output_fill_options - 0x0000000008044560 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x00000000080445a0 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o .text.tcp_output_control_segment - 0x00000000080445e0 0x94 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - .text.tcp_rst 0x0000000008044674 0xa4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008044674 tcp_rst + 0x0000000008044620 0x94 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + .text.tcp_rst 0x00000000080446b4 0xa4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x00000000080446b4 tcp_rst .text.tcp_send_empty_ack - 0x0000000008044718 0xc4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x0000000008044718 tcp_send_empty_ack + 0x0000000008044758 0xc4 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x0000000008044758 tcp_send_empty_ack .text.tcp_keepalive - 0x00000000080447dc 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x00000000080447dc tcp_keepalive + 0x000000000804481c 0x80 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x000000000804481c tcp_keepalive .text.tcp_zero_window_probe - 0x000000000804485c 0x154 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - 0x000000000804485c tcp_zero_window_probe + 0x000000000804489c 0x154 ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + 0x000000000804489c tcp_zero_window_probe .text.tcpip_tcp_timer - 0x00000000080449b0 0x48 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x00000000080449f0 0x48 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o .text.tcp_timer_needed - 0x00000000080449f8 0x40 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - 0x00000000080449f8 tcp_timer_needed + 0x0000000008044a38 0x40 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044a38 tcp_timer_needed .text.sys_timeout_abs - 0x0000000008044a38 0xdc ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044a78 0xdc ./Middlewares/Third_Party/LwIP/src/core/timeouts.o .text.lwip_cyclic_timer - 0x0000000008044b14 0x64 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044b54 0x64 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o .text.sys_timeouts_init - 0x0000000008044b78 0x44 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - 0x0000000008044b78 sys_timeouts_init + 0x0000000008044bb8 0x44 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044bb8 sys_timeouts_init .text.sys_timeout - 0x0000000008044bbc 0x4c ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - 0x0000000008044bbc sys_timeout + 0x0000000008044bfc 0x4c ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044bfc sys_timeout .text.sys_check_timeouts - 0x0000000008044c08 0x84 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - 0x0000000008044c08 sys_check_timeouts + 0x0000000008044c48 0x84 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x0000000008044c48 sys_check_timeouts .text.udp_init - 0x0000000008044c8c 0x24 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008044c8c udp_init + 0x0000000008044ccc 0x24 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008044ccc udp_init .text.udp_new_port - 0x0000000008044cb0 0x70 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008044cf0 0x70 ./Middlewares/Third_Party/LwIP/src/core/udp.o .text.udp_input_local_match - 0x0000000008044d20 0xc8 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008044d60 0xc8 ./Middlewares/Third_Party/LwIP/src/core/udp.o .text.udp_input - 0x0000000008044de8 0x228 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008044de8 udp_input + 0x0000000008044e28 0x228 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008044e28 udp_input .text.udp_send - 0x0000000008045010 0x68 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045010 udp_send + 0x0000000008045050 0x68 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045050 udp_send .text.udp_sendto - 0x0000000008045078 0xb8 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045078 udp_sendto + 0x00000000080450b8 0xb8 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x00000000080450b8 udp_sendto .text.udp_sendto_if - 0x0000000008045130 0xe8 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045130 udp_sendto_if + 0x0000000008045170 0xe8 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045170 udp_sendto_if .text.udp_sendto_if_src - 0x0000000008045218 0x1cc ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045218 udp_sendto_if_src + 0x0000000008045258 0x1cc ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045258 udp_sendto_if_src .text.udp_bind - 0x00000000080453e4 0x110 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x00000000080453e4 udp_bind + 0x0000000008045424 0x110 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045424 udp_bind .text.udp_connect - 0x00000000080454f4 0xdc ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x00000000080454f4 udp_connect + 0x0000000008045534 0xdc ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045534 udp_connect .text.udp_recv - 0x00000000080455d0 0x40 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x00000000080455d0 udp_recv + 0x0000000008045610 0x40 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045610 udp_recv .text.udp_remove - 0x0000000008045610 0x84 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045610 udp_remove - .text.udp_new 0x0000000008045694 0x2e ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x0000000008045694 udp_new - *fill* 0x00000000080456c2 0x2 + 0x0000000008045650 0x84 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045650 udp_remove + .text.udp_new 0x00000000080456d4 0x2e ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x00000000080456d4 udp_new + *fill* 0x0000000008045702 0x2 .text.udp_netif_ip_addr_changed - 0x00000000080456c4 0x60 ./Middlewares/Third_Party/LwIP/src/core/udp.o - 0x00000000080456c4 udp_netif_ip_addr_changed + 0x0000000008045704 0x60 ./Middlewares/Third_Party/LwIP/src/core/udp.o + 0x0000000008045704 udp_netif_ip_addr_changed .text.etharp_free_entry - 0x0000000008045724 0x64 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045764 0x64 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_tmr - 0x0000000008045788 0x150 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x0000000008045788 etharp_tmr + 0x00000000080457c8 0x150 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x00000000080457c8 etharp_tmr .text.etharp_find_entry - 0x00000000080458d8 0x2f0 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045918 0x2f0 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_update_arp_entry - 0x0000000008045bc8 0x14c ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045c08 0x14c ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_cleanup_netif - 0x0000000008045d14 0x60 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x0000000008045d14 etharp_cleanup_netif + 0x0000000008045d54 0x60 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045d54 etharp_cleanup_netif .text.etharp_input - 0x0000000008045d74 0x114 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x0000000008045d74 etharp_input + 0x0000000008045db4 0x114 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045db4 etharp_input .text.etharp_output_to_arp_index - 0x0000000008045e88 0x134 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045ec8 0x134 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_output - 0x0000000008045fbc 0x204 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x0000000008045fbc etharp_output + 0x0000000008045ffc 0x204 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008045ffc etharp_output .text.etharp_query - 0x00000000080461c0 0x27c ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x00000000080461c0 etharp_query + 0x0000000008046200 0x27c ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008046200 etharp_query .text.etharp_raw - 0x000000000804643c 0x118 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x000000000804647c 0x118 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_request_dst - 0x0000000008046554 0x44 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x0000000008046594 0x44 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o .text.etharp_request - 0x0000000008046598 0x24 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - 0x0000000008046598 etharp_request + 0x00000000080465d8 0x24 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + 0x00000000080465d8 etharp_request .text.icmp_input - 0x00000000080465bc 0x240 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - 0x00000000080465bc icmp_input + 0x00000000080465fc 0x240 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + 0x00000000080465fc icmp_input .text.icmp_dest_unreach - 0x00000000080467fc 0x20 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - 0x00000000080467fc icmp_dest_unreach + 0x000000000804683c 0x20 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + 0x000000000804683c icmp_dest_unreach .text.icmp_time_exceeded - 0x000000000804681c 0x20 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - 0x000000000804681c icmp_time_exceeded + 0x000000000804685c 0x20 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + 0x000000000804685c icmp_time_exceeded .text.icmp_send_response - 0x000000000804683c 0xe8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + 0x000000000804687c 0xe8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o .text.ip4_route - 0x0000000008046924 0xe0 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - 0x0000000008046924 ip4_route + 0x0000000008046964 0xe0 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + 0x0000000008046964 ip4_route .text.ip4_input_accept - 0x0000000008046a04 0x54 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + 0x0000000008046a44 0x54 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o .text.ip4_input - 0x0000000008046a58 0x248 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - 0x0000000008046a58 ip4_input + 0x0000000008046a98 0x248 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + 0x0000000008046a98 ip4_input .text.ip4_output_if - 0x0000000008046ca0 0x54 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - 0x0000000008046ca0 ip4_output_if + 0x0000000008046ce0 0x54 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + 0x0000000008046ce0 ip4_output_if .text.ip4_output_if_src - 0x0000000008046cf4 0x15c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - 0x0000000008046cf4 ip4_output_if_src + 0x0000000008046d34 0x15c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + 0x0000000008046d34 ip4_output_if_src .text.ip4_addr_isbroadcast_u32 - 0x0000000008046e50 0x82 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o - 0x0000000008046e50 ip4_addr_isbroadcast_u32 - *fill* 0x0000000008046ed2 0x2 + 0x0000000008046e90 0x82 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o + 0x0000000008046e90 ip4_addr_isbroadcast_u32 + *fill* 0x0000000008046f12 0x2 .text.ip_reass_tmr - 0x0000000008046ed4 0x58 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - 0x0000000008046ed4 ip_reass_tmr + 0x0000000008046f14 0x58 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008046f14 ip_reass_tmr .text.ip_reass_free_complete_datagram - 0x0000000008046f2c 0x148 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008046f6c 0x148 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip_reass_remove_oldest_datagram - 0x0000000008047074 0xc4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x00000000080470b4 0xc4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip_reass_enqueue_new_datagram - 0x0000000008047138 0x74 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008047178 0x74 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip_reass_dequeue_datagram - 0x00000000080471ac 0x5c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x00000000080471ec 0x5c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip_reass_chain_frag_into_datagram_and_validate - 0x0000000008047208 0x2d4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008047248 0x2d4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip4_reass - 0x00000000080474dc 0x338 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - 0x00000000080474dc ip4_reass + 0x000000000804751c 0x338 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x000000000804751c ip4_reass .text.ip_frag_alloc_pbuf_custom_ref - 0x0000000008047814 0x10 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008047854 0x10 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip_frag_free_pbuf_custom_ref - 0x0000000008047824 0x38 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008047864 0x38 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ipfrag_free_pbuf_custom - 0x000000000804785c 0x68 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x000000000804789c 0x68 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .text.ip4_frag - 0x00000000080478c4 0x28c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - 0x00000000080478c4 ip4_frag + 0x0000000008047904 0x28c ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + 0x0000000008047904 ip4_frag .text.ethernet_input - 0x0000000008047b50 0x11c ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o - 0x0000000008047b50 ethernet_input + 0x0000000008047b90 0x11c ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + 0x0000000008047b90 ethernet_input .text.ethernet_output - 0x0000000008047c6c 0x90 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o - 0x0000000008047c6c ethernet_output + 0x0000000008047cac 0x90 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + 0x0000000008047cac ethernet_output .text.__libc_init_array - 0x0000000008047cfc 0x48 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-init.o) - 0x0000000008047cfc __libc_init_array - .text.malloc 0x0000000008047d44 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-malloc.o) - 0x0000000008047d44 malloc - .text.free 0x0000000008047d54 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-malloc.o) - 0x0000000008047d54 free - .text.memcmp 0x0000000008047d64 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memcmp.o) - 0x0000000008047d64 memcmp - .text.memcpy 0x0000000008047d84 0x1c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memcpy-stub.o) - 0x0000000008047d84 memcpy - .text.memmove 0x0000000008047da0 0x34 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memmove.o) - 0x0000000008047da0 memmove - .text.memset 0x0000000008047dd4 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memset.o) - 0x0000000008047dd4 memset - .text._free_r 0x0000000008047de4 0x98 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-freer.o) - 0x0000000008047de4 _free_r + 0x0000000008047d3c 0x48 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-init.o) + 0x0000000008047d3c __libc_init_array + .text.malloc 0x0000000008047d84 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-malloc.o) + 0x0000000008047d84 malloc + .text.free 0x0000000008047d94 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-malloc.o) + 0x0000000008047d94 free + .text.memcmp 0x0000000008047da4 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memcmp.o) + 0x0000000008047da4 memcmp + .text.memcpy 0x0000000008047dc4 0x1c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memcpy-stub.o) + 0x0000000008047dc4 memcpy + .text.memmove 0x0000000008047de0 0x34 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memmove.o) + 0x0000000008047de0 memmove + .text.memset 0x0000000008047e14 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-memset.o) + 0x0000000008047e14 memset + .text._free_r 0x0000000008047e24 0x98 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-freer.o) + 0x0000000008047e24 _free_r .text.sbrk_aligned - 0x0000000008047e7c 0x40 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-mallocr.o) + 0x0000000008047ebc 0x40 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-mallocr.o) .text._malloc_r - 0x0000000008047ebc 0xe8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-mallocr.o) - 0x0000000008047ebc _malloc_r - .text.printf 0x0000000008047fa4 0x30 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-printf.o) - 0x0000000008047fa4 iprintf - 0x0000000008047fa4 printf - .text.rand 0x0000000008047fd4 0x7c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-rand.o) - 0x0000000008047fd4 rand + 0x0000000008047efc 0xe8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-mallocr.o) + 0x0000000008047efc _malloc_r + .text.printf 0x0000000008047fe4 0x30 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-printf.o) + 0x0000000008047fe4 iprintf + 0x0000000008047fe4 printf + .text.rand 0x0000000008048014 0x7c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-rand.o) + 0x0000000008048014 rand .text.copysign - 0x0000000008048050 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-s_copysign.o) - 0x0000000008048050 copysign - .text._sbrk_r 0x0000000008048074 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-sbrkr.o) - 0x0000000008048074 _sbrk_r + 0x0000000008048090 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-s_copysign.o) + 0x0000000008048090 copysign + .text._sbrk_r 0x00000000080480b4 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-sbrkr.o) + 0x00000000080480b4 _sbrk_r .text._vsprintf_r - 0x0000000008048094 0x2c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-vsprintf.o) - 0x0000000008048094 _vsprintf_r - 0x0000000008048094 _vsiprintf_r + 0x00000000080480d4 0x2c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-vsprintf.o) + 0x00000000080480d4 _vsprintf_r + 0x00000000080480d4 _vsiprintf_r .text.vsprintf - 0x00000000080480c0 0x14 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-vsprintf.o) - 0x00000000080480c0 vsiprintf - 0x00000000080480c0 vsprintf + 0x0000000008048100 0x14 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-vsprintf.o) + 0x0000000008048100 vsiprintf + 0x0000000008048100 vsprintf .text.__assert_func - 0x00000000080480d4 0x3c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-assert.o) - 0x00000000080480d4 __assert_func - .text.__errno 0x0000000008048110 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-errno.o) - 0x0000000008048110 __errno - .text.std 0x000000000804811c 0x48 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x0000000008048114 0x3c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-assert.o) + 0x0000000008048114 __assert_func + .text.__errno 0x0000000008048150 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-errno.o) + 0x0000000008048150 __errno + .text.std 0x000000000804815c 0x48 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) .text._cleanup_r - 0x0000000008048164 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x0000000008048164 _cleanup_r + 0x00000000080481a4 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x00000000080481a4 _cleanup_r .text.__sfmoreglue - 0x0000000008048170 0x2c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x0000000008048170 __sfmoreglue + 0x00000000080481b0 0x2c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x00000000080481b0 __sfmoreglue .text.__sfp_lock_acquire - 0x000000000804819c 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x000000000804819c __sfp_lock_acquire + 0x00000000080481dc 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x00000000080481dc __sfp_lock_acquire .text.__sfp_lock_release - 0x00000000080481a8 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x00000000080481a8 __sfp_lock_release + 0x00000000080481e8 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x00000000080481e8 __sfp_lock_release .text.__sinit_lock_acquire - 0x00000000080481b4 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x00000000080481b4 __sinit_lock_acquire + 0x00000000080481f4 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x00000000080481f4 __sinit_lock_acquire .text.__sinit_lock_release - 0x00000000080481c0 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x00000000080481c0 __sinit_lock_release - .text.__sinit 0x00000000080481cc 0x70 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x00000000080481cc __sinit - .text.__sfp 0x000000000804823c 0x8c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x000000000804823c __sfp - .text.fprintf 0x00000000080482c8 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fprintf.o) - 0x00000000080482c8 fiprintf - 0x00000000080482c8 fprintf + 0x0000000008048200 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x0000000008048200 __sinit_lock_release + .text.__sinit 0x000000000804820c 0x70 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x000000000804820c __sinit + .text.__sfp 0x000000000804827c 0x8c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x000000000804827c __sfp + .text.fprintf 0x0000000008048308 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fprintf.o) + 0x0000000008048308 fiprintf + 0x0000000008048308 fprintf .text._fwalk_reent - 0x00000000080482ec 0x3e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fwalk.o) - 0x00000000080482ec _fwalk_reent + 0x000000000804832c 0x3e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fwalk.o) + 0x000000000804832c _fwalk_reent .text.__retarget_lock_init_recursive - 0x000000000804832a 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) - 0x000000000804832a __retarget_lock_init_recursive + 0x000000000804836a 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) + 0x000000000804836a __retarget_lock_init_recursive .text.__retarget_lock_acquire_recursive - 0x000000000804832c 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) - 0x000000000804832c __retarget_lock_acquire_recursive + 0x000000000804836c 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) + 0x000000000804836c __retarget_lock_acquire_recursive .text.__retarget_lock_release_recursive - 0x000000000804832e 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) - 0x000000000804832e __retarget_lock_release_recursive + 0x000000000804836e 0x2 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lock.o) + 0x000000000804836e __retarget_lock_release_recursive .text.__malloc_lock - 0x0000000008048330 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-mlock.o) - 0x0000000008048330 __malloc_lock + 0x0000000008048370 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-mlock.o) + 0x0000000008048370 __malloc_lock .text.__malloc_unlock - 0x000000000804833c 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-mlock.o) - 0x000000000804833c __malloc_unlock + 0x000000000804837c 0xc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-mlock.o) + 0x000000000804837c __malloc_unlock .text.__ssputs_r - 0x0000000008048348 0xb6 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) - 0x0000000008048348 __ssputs_r - *fill* 0x00000000080483fe 0x2 + 0x0000000008048388 0xb6 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x0000000008048388 __ssputs_r + *fill* 0x000000000804843e 0x2 .text._svfprintf_r - 0x0000000008048400 0x200 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) - 0x0000000008048400 _svfiprintf_r - 0x0000000008048400 _svfprintf_r + 0x0000000008048440 0x200 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x0000000008048440 _svfiprintf_r + 0x0000000008048440 _svfprintf_r .text.__sfputc_r - 0x0000000008048600 0x2e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) + 0x0000000008048640 0x2e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) .text.__sfputs_r - 0x000000000804862e 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) - 0x000000000804862e __sfputs_r - *fill* 0x0000000008048652 0x2 + 0x000000000804866e 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) + 0x000000000804866e __sfputs_r + *fill* 0x0000000008048692 0x2 .text._vfprintf_r - 0x0000000008048654 0x260 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) - 0x0000000008048654 _vfprintf_r - 0x0000000008048654 _vfiprintf_r + 0x0000000008048694 0x260 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) + 0x0000000008048694 _vfprintf_r + 0x0000000008048694 _vfiprintf_r .text._printf_common - 0x00000000080488b4 0xda c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) - 0x00000000080488b4 _printf_common - *fill* 0x000000000804898e 0x2 + 0x00000000080488f4 0xda c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x00000000080488f4 _printf_common + *fill* 0x00000000080489ce 0x2 .text._printf_i - 0x0000000008048990 0x24c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) - 0x0000000008048990 _printf_i - .text.__sread 0x0000000008048bdc 0x22 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) - 0x0000000008048bdc __sread + 0x00000000080489d0 0x24c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + 0x00000000080489d0 _printf_i + .text.__sread 0x0000000008048c1c 0x22 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) + 0x0000000008048c1c __sread .text.__swrite - 0x0000000008048bfe 0x38 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) - 0x0000000008048bfe __swrite - .text.__sseek 0x0000000008048c36 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) - 0x0000000008048c36 __sseek + 0x0000000008048c3e 0x38 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) + 0x0000000008048c3e __swrite + .text.__sseek 0x0000000008048c76 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) + 0x0000000008048c76 __sseek .text.__sclose - 0x0000000008048c5a 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) - 0x0000000008048c5a __sclose - *fill* 0x0000000008048c62 0x2 + 0x0000000008048c9a 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-stdio.o) + 0x0000000008048c9a __sclose + *fill* 0x0000000008048ca2 0x2 .text.__swbuf_r - 0x0000000008048c64 0xa4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-wbuf.o) - 0x0000000008048c64 __swbuf_r + 0x0000000008048ca4 0xa4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-wbuf.o) + 0x0000000008048ca4 __swbuf_r .text._write_r - 0x0000000008048d08 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-writer.o) - 0x0000000008048d08 _write_r + 0x0000000008048d48 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-writer.o) + 0x0000000008048d48 _write_r .text.__swsetup_r - 0x0000000008048d2c 0xdc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-wsetup.o) - 0x0000000008048d2c __swsetup_r - .text.abort 0x0000000008048e08 0xe c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-abort.o) - 0x0000000008048e08 abort - *fill* 0x0000000008048e16 0x2 + 0x0000000008048d6c 0xdc c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-wsetup.o) + 0x0000000008048d6c __swsetup_r + .text.abort 0x0000000008048e48 0xe c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-abort.o) + 0x0000000008048e48 abort + *fill* 0x0000000008048e56 0x2 .text._close_r - 0x0000000008048e18 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-closer.o) - 0x0000000008048e18 _close_r + 0x0000000008048e58 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-closer.o) + 0x0000000008048e58 _close_r .text.__sflush_r - 0x0000000008048e38 0x10c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fflush.o) - 0x0000000008048e38 __sflush_r + 0x0000000008048e78 0x10c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fflush.o) + 0x0000000008048e78 __sflush_r .text._fflush_r - 0x0000000008048f44 0x78 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fflush.o) - 0x0000000008048f44 _fflush_r + 0x0000000008048f84 0x78 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fflush.o) + 0x0000000008048f84 _fflush_r .text._lseek_r - 0x0000000008048fbc 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lseekr.o) - 0x0000000008048fbc _lseek_r + 0x0000000008048ffc 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-lseekr.o) + 0x0000000008048ffc _lseek_r .text.__swhatbuf_r - 0x0000000008048fe0 0x4a c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-makebuf.o) - 0x0000000008048fe0 __swhatbuf_r - *fill* 0x000000000804902a 0x2 + 0x0000000008049020 0x4a c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-makebuf.o) + 0x0000000008049020 __swhatbuf_r + *fill* 0x000000000804906a 0x2 .text.__smakebuf_r - 0x000000000804902c 0x80 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-makebuf.o) - 0x000000000804902c __smakebuf_r + 0x000000000804906c 0x80 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-makebuf.o) + 0x000000000804906c __smakebuf_r .text._realloc_r - 0x00000000080490ac 0x5e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-reallocr.o) - 0x00000000080490ac _realloc_r - *fill* 0x000000000804910a 0x2 - .text._read_r 0x000000000804910c 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-readr.o) - 0x000000000804910c _read_r + 0x00000000080490ec 0x5e c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-reallocr.o) + 0x00000000080490ec _realloc_r + *fill* 0x000000000804914a 0x2 + .text._read_r 0x000000000804914c 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-readr.o) + 0x000000000804914c _read_r .text._raise_r - 0x0000000008049130 0x50 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signal.o) - 0x0000000008049130 _raise_r - .text.raise 0x0000000008049180 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signal.o) - 0x0000000008049180 raise - .text._kill_r 0x0000000008049190 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signalr.o) - 0x0000000008049190 _kill_r + 0x0000000008049170 0x50 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signal.o) + 0x0000000008049170 _raise_r + .text.raise 0x00000000080491c0 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signal.o) + 0x00000000080491c0 raise + .text._kill_r 0x00000000080491d0 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signalr.o) + 0x00000000080491d0 _kill_r .text._getpid_r - 0x00000000080491b4 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signalr.o) - 0x00000000080491b4 _getpid_r + 0x00000000080491f4 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-signalr.o) + 0x00000000080491f4 _getpid_r .text._fstat_r - 0x00000000080491b8 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fstatr.o) - 0x00000000080491b8 _fstat_r + 0x00000000080491f8 0x24 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-fstatr.o) + 0x00000000080491f8 _fstat_r .text._isatty_r - 0x00000000080491dc 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-isattyr.o) - 0x00000000080491dc _isatty_r + 0x000000000804921c 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-isattyr.o) + 0x000000000804921c _isatty_r .text._malloc_usable_size_r - 0x00000000080491fc 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-msizer.o) - 0x00000000080491fc _malloc_usable_size_r - .text.atan2 0x000000000804920c 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-w_atan2.o) - 0x000000000804920c atan2 - .text.sqrt 0x0000000008049210 0x40 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-w_sqrt.o) - 0x0000000008049210 sqrt + 0x000000000804923c 0x10 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-msizer.o) + 0x000000000804923c _malloc_usable_size_r + .text.atan2 0x000000000804924c 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-w_atan2.o) + 0x000000000804924c atan2 + .text.sqrt 0x0000000008049250 0x40 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-w_sqrt.o) + 0x0000000008049250 sqrt .text.__ieee754_atan2 - 0x0000000008049250 0x184 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) - 0x0000000008049250 __ieee754_atan2 + 0x0000000008049290 0x184 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) + 0x0000000008049290 __ieee754_atan2 .text.__ieee754_sqrt - 0x00000000080493d4 0x6 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_sqrt.o) - 0x00000000080493d4 __ieee754_sqrt - *fill* 0x00000000080493da 0x6 - .text.atan 0x00000000080493e0 0x1f4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) - 0x00000000080493e0 atan - .text.fabs 0x00000000080495d4 0x12 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_fabs.o) - 0x00000000080495d4 fabs + 0x0000000008049414 0x6 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_sqrt.o) + 0x0000000008049414 __ieee754_sqrt + *fill* 0x000000000804941a 0x6 + .text.atan 0x0000000008049420 0x1f4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) + 0x0000000008049420 atan + .text.fabs 0x0000000008049614 0x12 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_fabs.o) + 0x0000000008049614 fabs *(.glue_7) - .glue_7 0x00000000080495e6 0x0 linker stubs + .glue_7 0x0000000008049626 0x0 linker stubs *(.glue_7t) - .glue_7t 0x00000000080495e6 0x0 linker stubs + .glue_7t 0x0000000008049626 0x0 linker stubs *(.eh_frame) - *fill* 0x00000000080495e6 0x2 - .eh_frame 0x00000000080495e8 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + *fill* 0x0000000008049626 0x2 + .eh_frame 0x0000000008049628 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o *(.init) - .init 0x00000000080495e8 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o - 0x00000000080495e8 _init - .init 0x00000000080495ec 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + .init 0x0000000008049628 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + 0x0000000008049628 _init + .init 0x000000000804962c 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o *(.fini) - .fini 0x00000000080495f4 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o - 0x00000000080495f4 _fini - .fini 0x00000000080495f8 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o - 0x0000000008049600 . = ALIGN (0x4) - 0x0000000008049600 _etext = . + .fini 0x0000000008049634 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crti.o + 0x0000000008049634 _fini + .fini 0x0000000008049638 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtn.o + 0x0000000008049640 . = ALIGN (0x4) + 0x0000000008049640 _etext = . -.vfp11_veneer 0x0000000008049600 0x0 - .vfp11_veneer 0x0000000008049600 0x0 linker stubs +.vfp11_veneer 0x0000000008049640 0x0 + .vfp11_veneer 0x0000000008049640 0x0 linker stubs -.v4_bx 0x0000000008049600 0x0 - .v4_bx 0x0000000008049600 0x0 linker stubs +.v4_bx 0x0000000008049640 0x0 + .v4_bx 0x0000000008049640 0x0 linker stubs -.iplt 0x0000000008049600 0x0 - .iplt 0x0000000008049600 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +.iplt 0x0000000008049640 0x0 + .iplt 0x0000000008049640 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o -.rodata 0x0000000008049600 0x4058 - 0x0000000008049600 . = ALIGN (0x4) +.rodata 0x0000000008049640 0x4058 + 0x0000000008049640 . = ALIGN (0x4) *(.rodata) - .rodata 0x0000000008049600 0x2a ./Core/BASE/Src/BSP/bsp_DLT_Log.o - *fill* 0x000000000804962a 0x2 - .rodata 0x000000000804962c 0x74 ./Core/BASE/Src/BSP/bsp_UART.o - .rodata 0x00000000080496a0 0x39 ./Core/BASE/Src/BSP/bsp_UDP.o - *fill* 0x00000000080496d9 0x3 - .rodata 0x00000000080496dc 0x7e ./Core/BASE/Src/BSP/bsp_client_setting.o - *fill* 0x000000000804975a 0x2 - .rodata 0x000000000804975c 0x5a ./Core/BASE/Src/BSP/bsp_com_helper.o - *fill* 0x00000000080497b6 0x2 - .rodata 0x00000000080497b8 0x212 ./Core/BASE/Src/BSP/bsp_decode_command.o - *fill* 0x00000000080499ca 0x2 - .rodata 0x00000000080499cc 0x55 ./Core/BASE/Src/BSP/bsp_qspi_w25q128.o - *fill* 0x0000000008049a21 0x3 - .rodata 0x0000000008049a24 0x1ba ./Core/BASE/Src/BSP/pb_decode.o - *fill* 0x0000000008049bde 0x2 - .rodata 0x0000000008049be0 0x105 ./Core/BASE/Src/BSP/pb_encode.o - *fill* 0x0000000008049ce5 0x3 - .rodata 0x0000000008049ce8 0xba ./Core/BASE/Src/BSP/DLT/DLTuc.o - *fill* 0x0000000008049da2 0x2 - .rodata 0x0000000008049da4 0xf3 ./Core/BASE/Src/MSP/msp_K1061DC.o - *fill* 0x0000000008049e97 0x1 - .rodata 0x0000000008049e98 0x110 ./Core/BASE/Src/MSP/msp_TL720D.o - .rodata 0x0000000008049fa8 0xcf ./Core/BASE/Src/MSP/msp_Wire_Sensor.o - *fill* 0x000000000804a077 0x1 - .rodata 0x000000000804a078 0x36 ./Core/FSM/Src/motors.o - *fill* 0x000000000804a0ae 0x2 - .rodata 0x000000000804a0b0 0x67 ./Core/Src/main.o - *fill* 0x000000000804a117 0x1 - .rodata 0x000000000804a118 0x4c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - .rodata 0x000000000804a164 0x54 ./LWIP/Target/ethernetif.o - .rodata 0x000000000804a1b8 0x25b ./Middlewares/Third_Party/LwIP/src/core/mem.o - *fill* 0x000000000804a413 0x1 - .rodata 0x000000000804a414 0xeb ./Middlewares/Third_Party/LwIP/src/core/memp.o - *fill* 0x000000000804a4ff 0x1 - .rodata 0x000000000804a500 0x22f ./Middlewares/Third_Party/LwIP/src/core/netif.o - *fill* 0x000000000804a72f 0x1 - .rodata 0x000000000804a730 0x485 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - *fill* 0x000000000804abb5 0x3 - .rodata 0x000000000804abb8 0x7e0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - .rodata 0x000000000804b398 0x47e ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o - *fill* 0x000000000804b816 0x2 - .rodata 0x000000000804b818 0x81b ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - *fill* 0x000000000804c033 0x1 - .rodata 0x000000000804c034 0xe6 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - *fill* 0x000000000804c11a 0x2 - .rodata 0x000000000804c11c 0x364 ./Middlewares/Third_Party/LwIP/src/core/udp.o - .rodata 0x000000000804c480 0x275 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - *fill* 0x000000000804c6f5 0x3 - .rodata 0x000000000804c6f8 0xf8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - .rodata 0x000000000804c7f0 0x95 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - *fill* 0x000000000804c885 0x3 - .rodata 0x000000000804c888 0x227 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - *fill* 0x000000000804caaf 0x1 - .rodata 0x000000000804cab0 0x94 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + .rodata 0x0000000008049640 0x2a ./Core/BASE/Src/BSP/bsp_DLT_Log.o + *fill* 0x000000000804966a 0x2 + .rodata 0x000000000804966c 0x74 ./Core/BASE/Src/BSP/bsp_UART.o + .rodata 0x00000000080496e0 0x39 ./Core/BASE/Src/BSP/bsp_UDP.o + *fill* 0x0000000008049719 0x3 + .rodata 0x000000000804971c 0x7e ./Core/BASE/Src/BSP/bsp_client_setting.o + *fill* 0x000000000804979a 0x2 + .rodata 0x000000000804979c 0x5a ./Core/BASE/Src/BSP/bsp_com_helper.o + *fill* 0x00000000080497f6 0x2 + .rodata 0x00000000080497f8 0x212 ./Core/BASE/Src/BSP/bsp_decode_command.o + *fill* 0x0000000008049a0a 0x2 + .rodata 0x0000000008049a0c 0x55 ./Core/BASE/Src/BSP/bsp_qspi_w25q128.o + *fill* 0x0000000008049a61 0x3 + .rodata 0x0000000008049a64 0x1ba ./Core/BASE/Src/BSP/pb_decode.o + *fill* 0x0000000008049c1e 0x2 + .rodata 0x0000000008049c20 0x105 ./Core/BASE/Src/BSP/pb_encode.o + *fill* 0x0000000008049d25 0x3 + .rodata 0x0000000008049d28 0xba ./Core/BASE/Src/BSP/DLT/DLTuc.o + *fill* 0x0000000008049de2 0x2 + .rodata 0x0000000008049de4 0xf3 ./Core/BASE/Src/MSP/msp_K1061DC.o + *fill* 0x0000000008049ed7 0x1 + .rodata 0x0000000008049ed8 0x110 ./Core/BASE/Src/MSP/msp_TL720D.o + .rodata 0x0000000008049fe8 0xcf ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + *fill* 0x000000000804a0b7 0x1 + .rodata 0x000000000804a0b8 0x36 ./Core/FSM/Src/motors.o + *fill* 0x000000000804a0ee 0x2 + .rodata 0x000000000804a0f0 0x67 ./Core/Src/main.o + *fill* 0x000000000804a157 0x1 + .rodata 0x000000000804a158 0x4c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + .rodata 0x000000000804a1a4 0x54 ./LWIP/Target/ethernetif.o + .rodata 0x000000000804a1f8 0x25b ./Middlewares/Third_Party/LwIP/src/core/mem.o + *fill* 0x000000000804a453 0x1 + .rodata 0x000000000804a454 0xeb ./Middlewares/Third_Party/LwIP/src/core/memp.o + *fill* 0x000000000804a53f 0x1 + .rodata 0x000000000804a540 0x22f ./Middlewares/Third_Party/LwIP/src/core/netif.o + *fill* 0x000000000804a76f 0x1 + .rodata 0x000000000804a770 0x485 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + *fill* 0x000000000804abf5 0x3 + .rodata 0x000000000804abf8 0x7e0 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + .rodata 0x000000000804b3d8 0x47e ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + *fill* 0x000000000804b856 0x2 + .rodata 0x000000000804b858 0x81b ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + *fill* 0x000000000804c073 0x1 + .rodata 0x000000000804c074 0xe6 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + *fill* 0x000000000804c15a 0x2 + .rodata 0x000000000804c15c 0x364 ./Middlewares/Third_Party/LwIP/src/core/udp.o + .rodata 0x000000000804c4c0 0x275 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + *fill* 0x000000000804c735 0x3 + .rodata 0x000000000804c738 0xf8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + .rodata 0x000000000804c830 0x95 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + *fill* 0x000000000804c8c5 0x3 + .rodata 0x000000000804c8c8 0x227 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + *fill* 0x000000000804caef 0x1 + .rodata 0x000000000804caf0 0x94 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o *(.rodata*) .rodata.D_Cmd_struct_define_field_info - 0x000000000804cb44 0x14 ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o - 0x000000000804cb44 D_Cmd_struct_define_field_info + 0x000000000804cb84 0x14 ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o + 0x000000000804cb84 D_Cmd_struct_define_field_info .rodata.D_Cmd_struct_define_submsg_info - 0x000000000804cb58 0xc ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o - 0x000000000804cb58 D_Cmd_struct_define_submsg_info + 0x000000000804cb98 0xc ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o + 0x000000000804cb98 D_Cmd_struct_define_submsg_info .rodata.D_Cmd_struct_define_msg - 0x000000000804cb64 0x18 ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o - 0x000000000804cb64 D_Cmd_struct_define_msg + 0x000000000804cba4 0x18 ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o + 0x000000000804cba4 D_Cmd_struct_define_msg .rodata.CV_struct_define_field_info - 0x000000000804cb7c 0xcc ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o - 0x000000000804cb7c CV_struct_define_field_info + 0x000000000804cbbc 0xcc ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o + 0x000000000804cbbc CV_struct_define_field_info .rodata.CV_struct_define_submsg_info - 0x000000000804cc48 0x4 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o - 0x000000000804cc48 CV_struct_define_submsg_info + 0x000000000804cc88 0x4 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o + 0x000000000804cc88 CV_struct_define_submsg_info .rodata.CV_struct_define_msg - 0x000000000804cc4c 0x18 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o - 0x000000000804cc4c CV_struct_define_msg + 0x000000000804cc8c 0x18 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o + 0x000000000804cc8c CV_struct_define_msg .rodata.Cmd_field_info - 0x000000000804cc64 0x44 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o - 0x000000000804cc64 Cmd_field_info + 0x000000000804cca4 0x44 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o + 0x000000000804cca4 Cmd_field_info .rodata.Cmd_submsg_info - 0x000000000804cca8 0x4 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o - 0x000000000804cca8 Cmd_submsg_info + 0x000000000804cce8 0x4 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o + 0x000000000804cce8 Cmd_submsg_info .rodata.Cmd_msg - 0x000000000804ccac 0x18 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o - 0x000000000804ccac Cmd_msg + 0x000000000804ccec 0x18 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o + 0x000000000804ccec Cmd_msg .rodata.ErrorData_field_info - 0x000000000804ccc4 0x10 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o - 0x000000000804ccc4 ErrorData_field_info + 0x000000000804cd04 0x10 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o + 0x000000000804cd04 ErrorData_field_info .rodata.ErrorData_submsg_info - 0x000000000804ccd4 0x4 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o - 0x000000000804ccd4 ErrorData_submsg_info + 0x000000000804cd14 0x4 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o + 0x000000000804cd14 ErrorData_submsg_info .rodata.ErrorData_msg - 0x000000000804ccd8 0x18 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o - 0x000000000804ccd8 ErrorData_msg + 0x000000000804cd18 0x18 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o + 0x000000000804cd18 ErrorData_msg .rodata.GV_struct_define_field_info - 0x000000000804ccf0 0xac ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o - 0x000000000804ccf0 GV_struct_define_field_info + 0x000000000804cd30 0xac ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o + 0x000000000804cd30 GV_struct_define_field_info .rodata.GV_struct_define_submsg_info - 0x000000000804cd9c 0x2c ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o - 0x000000000804cd9c GV_struct_define_submsg_info + 0x000000000804cddc 0x2c ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o + 0x000000000804cddc GV_struct_define_submsg_info .rodata.GV_struct_define_msg - 0x000000000804cdc8 0x18 ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o - 0x000000000804cdc8 GV_struct_define_msg + 0x000000000804ce08 0x18 ./Core/BASE/Protobuf/PSource/bsp_GV.pb.o + 0x000000000804ce08 GV_struct_define_msg .rodata.IO_Data_field_info - 0x000000000804cde0 0x34 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o - 0x000000000804cde0 IO_Data_field_info + 0x000000000804ce20 0x34 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o + 0x000000000804ce20 IO_Data_field_info .rodata.IO_Data_submsg_info - 0x000000000804ce14 0x4 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o - 0x000000000804ce14 IO_Data_submsg_info + 0x000000000804ce54 0x4 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o + 0x000000000804ce54 IO_Data_submsg_info .rodata.IO_Data_msg - 0x000000000804ce18 0x18 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o - 0x000000000804ce18 IO_Data_msg + 0x000000000804ce58 0x18 ./Core/BASE/Protobuf/PSource/bsp_IO.pb.o + 0x000000000804ce58 IO_Data_msg .rodata.IV_struct_define_field_info - 0x000000000804ce30 0x30 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o - 0x000000000804ce30 IV_struct_define_field_info + 0x000000000804ce70 0x30 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o + 0x000000000804ce70 IV_struct_define_field_info .rodata.IV_struct_define_submsg_info - 0x000000000804ce60 0x4 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o - 0x000000000804ce60 IV_struct_define_submsg_info + 0x000000000804cea0 0x4 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o + 0x000000000804cea0 IV_struct_define_submsg_info .rodata.IV_struct_define_msg - 0x000000000804ce64 0x18 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o - 0x000000000804ce64 IV_struct_define_msg + 0x000000000804cea4 0x18 ./Core/BASE/Protobuf/PSource/bsp_IV.pb.o + 0x000000000804cea4 IV_struct_define_msg .rodata.PV_struct_define_field_info - 0x000000000804ce7c 0x1c ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o - 0x000000000804ce7c PV_struct_define_field_info + 0x000000000804cebc 0x1c ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o + 0x000000000804cebc PV_struct_define_field_info .rodata.PV_struct_define_submsg_info - 0x000000000804ce98 0x4 ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o - 0x000000000804ce98 PV_struct_define_submsg_info + 0x000000000804ced8 0x4 ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o + 0x000000000804ced8 PV_struct_define_submsg_info .rodata.PV_struct_define_msg - 0x000000000804ce9c 0x18 ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o - 0x000000000804ce9c PV_struct_define_msg + 0x000000000804cedc 0x18 ./Core/BASE/Protobuf/PSource/bsp_PV.pb.o + 0x000000000804cedc PV_struct_define_msg .rodata.ReCmd_field_info - 0x000000000804ceb4 0x44 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o - 0x000000000804ceb4 ReCmd_field_info + 0x000000000804cef4 0x44 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o + 0x000000000804cef4 ReCmd_field_info .rodata.ReCmd_submsg_info - 0x000000000804cef8 0x4 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o - 0x000000000804cef8 ReCmd_submsg_info + 0x000000000804cf38 0x4 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o + 0x000000000804cf38 ReCmd_submsg_info .rodata.ReCmd_msg - 0x000000000804cefc 0x18 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o - 0x000000000804cefc ReCmd_msg + 0x000000000804cf3c 0x18 ./Core/BASE/Protobuf/PSource/bsp_ReCmd.pb.o + 0x000000000804cf3c ReCmd_msg .rodata.SP_MSP_MK32_Button_field_info - 0x000000000804cf14 0x4c ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o - 0x000000000804cf14 SP_MSP_MK32_Button_field_info + 0x000000000804cf54 0x4c ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o + 0x000000000804cf54 SP_MSP_MK32_Button_field_info .rodata.SP_MSP_MK32_Button_submsg_info - 0x000000000804cf60 0x4 ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o - 0x000000000804cf60 SP_MSP_MK32_Button_submsg_info + 0x000000000804cfa0 0x4 ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o + 0x000000000804cfa0 SP_MSP_MK32_Button_submsg_info .rodata.SP_MSP_MK32_Button_msg - 0x000000000804cf64 0x18 ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o - 0x000000000804cf64 SP_MSP_MK32_Button_msg + 0x000000000804cfa4 0x18 ./Core/BASE/Protobuf/PSource/msp_MK32.pb.o + 0x000000000804cfa4 SP_MSP_MK32_Button_msg .rodata.MotorParameters_field_info - 0x000000000804cf7c 0x40 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o - 0x000000000804cf7c MotorParameters_field_info + 0x000000000804cfbc 0x40 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o + 0x000000000804cfbc MotorParameters_field_info .rodata.MotorParameters_submsg_info - 0x000000000804cfbc 0x4 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o - 0x000000000804cfbc MotorParameters_submsg_info + 0x000000000804cffc 0x4 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o + 0x000000000804cffc MotorParameters_submsg_info .rodata.MotorParameters_msg - 0x000000000804cfc0 0x18 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o - 0x000000000804cfc0 MotorParameters_msg + 0x000000000804d000 0x18 ./Core/BASE/Protobuf/PSource/msp_Motor.pb.o + 0x000000000804d000 MotorParameters_msg .rodata.SLAM_struct_define_field_info - 0x000000000804cfd8 0x28 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o - 0x000000000804cfd8 SLAM_struct_define_field_info + 0x000000000804d018 0x28 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o + 0x000000000804d018 SLAM_struct_define_field_info .rodata.SLAM_struct_define_submsg_info - 0x000000000804d000 0x4 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o - 0x000000000804d000 SLAM_struct_define_submsg_info + 0x000000000804d040 0x4 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o + 0x000000000804d040 SLAM_struct_define_submsg_info .rodata.SLAM_struct_define_msg - 0x000000000804d004 0x18 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o - 0x000000000804d004 SLAM_struct_define_msg + 0x000000000804d044 0x18 ./Core/BASE/Protobuf/PSource/msp_SLAM.pb.o + 0x000000000804d044 SLAM_struct_define_msg .rodata.MSP_TL720DParameters_field_info - 0x000000000804d01c 0x28 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o - 0x000000000804d01c MSP_TL720DParameters_field_info + 0x000000000804d05c 0x28 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o + 0x000000000804d05c MSP_TL720DParameters_field_info .rodata.MSP_TL720DParameters_submsg_info - 0x000000000804d044 0x4 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o - 0x000000000804d044 MSP_TL720DParameters_submsg_info + 0x000000000804d084 0x4 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o + 0x000000000804d084 MSP_TL720DParameters_submsg_info .rodata.MSP_TL720DParameters_msg - 0x000000000804d048 0x18 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o - 0x000000000804d048 MSP_TL720DParameters_msg + 0x000000000804d088 0x18 ./Core/BASE/Protobuf/PSource/msp_TL720D.pb.o + 0x000000000804d088 MSP_TL720DParameters_msg .rodata.UWB_20_struct_define_field_info - 0x000000000804d060 0x40 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o - 0x000000000804d060 UWB_20_struct_define_field_info + 0x000000000804d0a0 0x40 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o + 0x000000000804d0a0 UWB_20_struct_define_field_info .rodata.UWB_20_struct_define_submsg_info - 0x000000000804d0a0 0x4 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o - 0x000000000804d0a0 UWB_20_struct_define_submsg_info + 0x000000000804d0e0 0x4 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o + 0x000000000804d0e0 UWB_20_struct_define_submsg_info .rodata.UWB_20_struct_define_msg - 0x000000000804d0a4 0x18 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o - 0x000000000804d0a4 UWB_20_struct_define_msg + 0x000000000804d0e4 0x18 ./Core/BASE/Protobuf/PSource/msp_UWB_20.pb.o + 0x000000000804d0e4 UWB_20_struct_define_msg .rodata.auchCRCHi - 0x000000000804d0bc 0x100 ./Core/BASE/Src/BSP/bsp_MB_host.o + 0x000000000804d0fc 0x100 ./Core/BASE/Src/BSP/bsp_MB_host.o .rodata.auchCRCLo - 0x000000000804d1bc 0x100 ./Core/BASE/Src/BSP/bsp_MB_host.o + 0x000000000804d1fc 0x100 ./Core/BASE/Src/BSP/bsp_MB_host.o .rodata.__FUNCTION__.0 - 0x000000000804d2bc 0xe ./Core/BASE/Src/BSP/bsp_UART.o - *fill* 0x000000000804d2ca 0x2 + 0x000000000804d2fc 0xe ./Core/BASE/Src/BSP/bsp_UART.o + *fill* 0x000000000804d30a 0x2 .rodata.__FUNCTION__.0 - 0x000000000804d2cc 0x21 ./Core/BASE/Src/BSP/bsp_client_setting.o - *fill* 0x000000000804d2ed 0x3 + 0x000000000804d30c 0x21 ./Core/BASE/Src/BSP/bsp_client_setting.o + *fill* 0x000000000804d32d 0x3 .rodata.__FUNCTION__.0 - 0x000000000804d2f0 0x15 ./Core/BASE/Src/BSP/bsp_com_helper.o - *fill* 0x000000000804d305 0x3 + 0x000000000804d330 0x15 ./Core/BASE/Src/BSP/bsp_com_helper.o + *fill* 0x000000000804d345 0x3 .rodata.__FUNCTION__.0 - 0x000000000804d308 0xf ./Core/BASE/Src/MSP/msp_K1061DC.o - *fill* 0x000000000804d317 0x1 + 0x000000000804d348 0xf ./Core/BASE/Src/MSP/msp_K1061DC.o + *fill* 0x000000000804d357 0x1 .rodata.__FUNCTION__.1 - 0x000000000804d318 0xf ./Core/BASE/Src/MSP/msp_TL720D.o - *fill* 0x000000000804d327 0x1 + 0x000000000804d358 0xf ./Core/BASE/Src/MSP/msp_TL720D.o + *fill* 0x000000000804d367 0x1 .rodata.__FUNCTION__.0 - 0x000000000804d328 0xe ./Core/BASE/Src/MSP/msp_TL720D.o - *fill* 0x000000000804d336 0x2 + 0x000000000804d368 0xe ./Core/BASE/Src/MSP/msp_TL720D.o + *fill* 0x000000000804d376 0x2 .rodata.__FUNCTION__.0 - 0x000000000804d338 0x13 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o - *fill* 0x000000000804d34b 0x1 + 0x000000000804d378 0x13 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + *fill* 0x000000000804d38b 0x1 .rodata.__FUNCTION__.0 - 0x000000000804d34c 0xe ./Core/Src/main.o - *fill* 0x000000000804d35a 0x2 + 0x000000000804d38c 0xe ./Core/Src/main.o + *fill* 0x000000000804d39a 0x2 .rodata.D1CorePrescTable - 0x000000000804d35c 0x10 ./Core/Src/system_stm32h7xx.o - 0x000000000804d35c D1CorePrescTable + 0x000000000804d39c 0x10 ./Core/Src/system_stm32h7xx.o + 0x000000000804d39c D1CorePrescTable .rodata.flagBitshiftOffset.0 - 0x000000000804d36c 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + 0x000000000804d3ac 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o .rodata.DLCtoBytes - 0x000000000804d374 0x10 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + 0x000000000804d3b4 0x10 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o .rodata.UARTPrescTable - 0x000000000804d384 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - 0x000000000804d384 UARTPrescTable + 0x000000000804d3c4 0x18 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + 0x000000000804d3c4 UARTPrescTable .rodata.numerator.1 - 0x000000000804d39c 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000804d3dc 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o .rodata.denominator.0 - 0x000000000804d3a4 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + 0x000000000804d3e4 0x8 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o .rodata.memp_RX_POOL - 0x000000000804d3ac 0xc ./LWIP/Target/ethernetif.o - 0x000000000804d3ac memp_RX_POOL + 0x000000000804d3ec 0xc ./LWIP/Target/ethernetif.o + 0x000000000804d3ec memp_RX_POOL .rodata.memp_UDP_PCB - 0x000000000804d3b8 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3b8 memp_UDP_PCB + 0x000000000804d3f8 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d3f8 memp_UDP_PCB .rodata.memp_TCP_PCB - 0x000000000804d3c4 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3c4 memp_TCP_PCB + 0x000000000804d404 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d404 memp_TCP_PCB .rodata.memp_TCP_PCB_LISTEN - 0x000000000804d3d0 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3d0 memp_TCP_PCB_LISTEN + 0x000000000804d410 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d410 memp_TCP_PCB_LISTEN .rodata.memp_TCP_SEG - 0x000000000804d3dc 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3dc memp_TCP_SEG + 0x000000000804d41c 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d41c memp_TCP_SEG .rodata.memp_REASSDATA - 0x000000000804d3e8 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3e8 memp_REASSDATA + 0x000000000804d428 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d428 memp_REASSDATA .rodata.memp_FRAG_PBUF - 0x000000000804d3f4 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d3f4 memp_FRAG_PBUF + 0x000000000804d434 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d434 memp_FRAG_PBUF .rodata.memp_SYS_TIMEOUT - 0x000000000804d400 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d400 memp_SYS_TIMEOUT + 0x000000000804d440 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d440 memp_SYS_TIMEOUT .rodata.memp_PBUF - 0x000000000804d40c 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d40c memp_PBUF + 0x000000000804d44c 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d44c memp_PBUF .rodata.memp_PBUF_POOL - 0x000000000804d418 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d418 memp_PBUF_POOL + 0x000000000804d458 0xc ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d458 memp_PBUF_POOL .rodata.memp_pools - 0x000000000804d424 0x24 ./Middlewares/Third_Party/LwIP/src/core/memp.o - 0x000000000804d424 memp_pools + 0x000000000804d464 0x24 ./Middlewares/Third_Party/LwIP/src/core/memp.o + 0x000000000804d464 memp_pools .rodata.tcp_backoff - 0x000000000804d448 0xd ./Middlewares/Third_Party/LwIP/src/core/tcp.o - *fill* 0x000000000804d455 0x3 + 0x000000000804d488 0xd ./Middlewares/Third_Party/LwIP/src/core/tcp.o + *fill* 0x000000000804d495 0x3 .rodata.tcp_persist_backoff - 0x000000000804d458 0x7 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - *fill* 0x000000000804d45f 0x1 + 0x000000000804d498 0x7 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + *fill* 0x000000000804d49f 0x1 .rodata.tcp_pcb_lists - 0x000000000804d460 0x10 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - 0x000000000804d460 tcp_pcb_lists + 0x000000000804d4a0 0x10 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + 0x000000000804d4a0 tcp_pcb_lists .rodata.lwip_cyclic_timers - 0x000000000804d470 0x18 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - 0x000000000804d470 lwip_cyclic_timers + 0x000000000804d4b0 0x18 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + 0x000000000804d4b0 lwip_cyclic_timers .rodata.ip_addr_any - 0x000000000804d488 0x4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o - 0x000000000804d488 ip_addr_any + 0x000000000804d4c8 0x4 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o + 0x000000000804d4c8 ip_addr_any .rodata.ethbroadcast - 0x000000000804d48c 0x6 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o - 0x000000000804d48c ethbroadcast - *fill* 0x000000000804d492 0x2 + 0x000000000804d4cc 0x6 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + 0x000000000804d4cc ethbroadcast + *fill* 0x000000000804d4d2 0x2 .rodata.ethzero - 0x000000000804d494 0x6 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o - 0x000000000804d494 ethzero - *fill* 0x000000000804d49a 0x2 + 0x000000000804d4d4 0x6 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + 0x000000000804d4d4 ethzero + *fill* 0x000000000804d4da 0x2 .rodata._global_impure_ptr - 0x000000000804d49c 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-impure.o) - 0x000000000804d49c _global_impure_ptr + 0x000000000804d4dc 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-impure.o) + 0x000000000804d4dc _global_impure_ptr .rodata.srand.str1.1 - 0x000000000804d4a0 0x72 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-rand.o) + 0x000000000804d4e0 0x72 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-rand.o) .rodata.__assert_func.str1.1 - 0x000000000804d512 0x3c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-assert.o) + 0x000000000804d552 0x3c c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-assert.o) 0x3d (size before relaxing) - *fill* 0x000000000804d54e 0x2 + *fill* 0x000000000804d58e 0x2 .rodata.__sf_fake_stderr - 0x000000000804d550 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x000000000804d550 __sf_fake_stderr + 0x000000000804d590 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x000000000804d590 __sf_fake_stderr .rodata.__sf_fake_stdin - 0x000000000804d570 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x000000000804d570 __sf_fake_stdin + 0x000000000804d5b0 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x000000000804d5b0 __sf_fake_stdin .rodata.__sf_fake_stdout - 0x000000000804d590 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) - 0x000000000804d590 __sf_fake_stdout + 0x000000000804d5d0 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-findfp.o) + 0x000000000804d5d0 __sf_fake_stdout .rodata._svfprintf_r.str1.1 - 0x000000000804d5b0 0x11 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) + 0x000000000804d5f0 0x11 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-svfprintf.o) .rodata._vfprintf_r.str1.1 - 0x000000000804d5c1 0x11 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) + 0x000000000804d601 0x11 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf.o) .rodata._printf_i.str1.1 - 0x000000000804d5c1 0x22 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) - *fill* 0x000000000804d5e3 0x5 + 0x000000000804d601 0x22 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libc_nano.a(lib_a-nano-vfprintf_i.o) + *fill* 0x000000000804d623 0x5 .rodata.CSWTCH.8 - 0x000000000804d5e8 0x18 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) + 0x000000000804d628 0x18 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) .rodata.CSWTCH.9 - 0x000000000804d600 0x18 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) + 0x000000000804d640 0x18 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-e_atan2.o) .rodata.atanhi - 0x000000000804d618 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) + 0x000000000804d658 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) .rodata.atanlo - 0x000000000804d638 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) - 0x000000000804d658 . = ALIGN (0x4) + 0x000000000804d678 0x20 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a(lib_a-s_atan.o) + 0x000000000804d698 . = ALIGN (0x4) .ARM.extab *(.ARM.extab* .gnu.linkonce.armextab.*) -.ARM 0x000000000804d658 0x8 - 0x000000000804d658 __exidx_start = . +.ARM 0x000000000804d698 0x8 + 0x000000000804d698 __exidx_start = . *(.ARM.exidx*) - .ARM.exidx 0x000000000804d658 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard\libgcc.a(_udivmoddi4.o) - 0x000000000804d660 __exidx_end = . + .ARM.exidx 0x000000000804d698 0x8 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard\libgcc.a(_udivmoddi4.o) + 0x000000000804d6a0 __exidx_end = . -.rel.dyn 0x000000000804d660 0x0 - .rel.iplt 0x000000000804d660 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o +.rel.dyn 0x000000000804d6a0 0x0 + .rel.iplt 0x000000000804d6a0 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o -.preinit_array 0x000000000804d660 0x0 - 0x000000000804d660 PROVIDE (__preinit_array_start = .) +.preinit_array 0x000000000804d6a0 0x0 + 0x000000000804d6a0 PROVIDE (__preinit_array_start = .) *(.preinit_array*) - 0x000000000804d660 PROVIDE (__preinit_array_end = .) + 0x000000000804d6a0 PROVIDE (__preinit_array_end = .) -.init_array 0x000000000804d660 0x4 - 0x000000000804d660 PROVIDE (__init_array_start = .) +.init_array 0x000000000804d6a0 0x4 + 0x000000000804d6a0 PROVIDE (__init_array_start = .) *(SORT_BY_NAME(.init_array.*)) *(.init_array*) - .init_array 0x000000000804d660 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o - 0x000000000804d664 PROVIDE (__init_array_end = .) + .init_array 0x000000000804d6a0 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + 0x000000000804d6a4 PROVIDE (__init_array_end = .) -.fini_array 0x000000000804d664 0x4 +.fini_array 0x000000000804d6a4 0x4 [!provide] PROVIDE (__fini_array_start = .) *(SORT_BY_NAME(.fini_array.*)) *(.fini_array*) - .fini_array 0x000000000804d664 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o + .fini_array 0x000000000804d6a4 0x4 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o [!provide] PROVIDE (__fini_array_end = .) - 0x000000000804d668 _sidata = LOADADDR (.data) + 0x000000000804d6a8 _sidata = LOADADDR (.data) -.data 0x0000000024000000 0x1ac load address 0x000000000804d668 +.data 0x0000000024000000 0x1ac load address 0x000000000804d6a8 0x0000000024000000 . = ALIGN (0x4) 0x0000000024000000 _sdata = . *(.data) @@ -44924,11 +44925,11 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x00000000240001ac . = ALIGN (0x4) 0x00000000240001ac _edata = . -.igot.plt 0x00000000240001ac 0x0 load address 0x000000000804d814 +.igot.plt 0x00000000240001ac 0x0 load address 0x000000000804d854 .igot.plt 0x00000000240001ac 0x0 c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard/crtbegin.o 0x00000000240001ac . = ALIGN (0x4) -.bss 0x00000000240001b0 0xeaa4 load address 0x000000000804d814 +.bss 0x00000000240001b0 0xeaa4 load address 0x000000000804d854 0x00000000240001b0 _sbss = . 0x00000000240001b0 __bss_start__ = _sbss *(.bss) @@ -45510,7 +45511,7 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext 0x000000002400ec54 __bss_end__ = _ebss ._user_heap_stack - 0x000000002400ec54 0x2804 load address 0x000000000804d814 + 0x000000002400ec54 0x2804 load address 0x000000000804d854 0x000000002400ec58 . = ALIGN (0x8) *fill* 0x000000002400ec54 0x4 [!provide] PROVIDE (end = .) @@ -45521,7 +45522,7 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext *fill* 0x000000002400f458 0x2000 0x0000000024011458 . = ALIGN (0x8) -.lwip_sec 0x0000000030000000 0x40260 load address 0x000000000804d814 +.lwip_sec 0x0000000030000000 0x40260 load address 0x000000000804d854 0x0000000030030000 . = ABSOLUTE (0x30030000) *fill* 0x0000000030000000 0x30000 *(.Rx_PoolSection) @@ -46640,7 +46641,7 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext .debug_macro 0x000000000005fbd8 0x10 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o .debug_macro 0x000000000005fbe8 0x674 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o -.debug_line 0x0000000000000000 0x755dd +.debug_line 0x0000000000000000 0x75601 .debug_line 0x0000000000000000 0x66b ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o .debug_line 0x000000000000066b 0x65c ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o .debug_line 0x0000000000000cc7 0x64f ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o @@ -46678,75 +46679,75 @@ LOAD c:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext .debug_line 0x000000000001bbcf 0x1601 ./Core/BASE/Src/BSP/tcp_server.o .debug_line 0x000000000001d1d0 0xb10 ./Core/BASE/Src/BSP/DLT/DLTuc.o .debug_line 0x000000000001dce0 0x13a9 ./Core/BASE/Src/MSP/msp_485MOTOR.o - .debug_line 0x000000000001f089 0x13ec ./Core/BASE/Src/MSP/msp_K1061DC.o - .debug_line 0x0000000000020475 0x1599 ./Core/BASE/Src/MSP/msp_MK32_1.o - .debug_line 0x0000000000021a0e 0x123e ./Core/BASE/Src/MSP/msp_PID.o - .debug_line 0x0000000000022c4c 0x165f ./Core/BASE/Src/MSP/msp_TL720D.o - .debug_line 0x00000000000242ab 0x15f7 ./Core/BASE/Src/MSP/msp_UWB_20.o - .debug_line 0x00000000000258a2 0x144b ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o - .debug_line 0x0000000000026ced 0x13db ./Core/BASE/Src/MSP/msp_Wire_Motor_C20.o - .debug_line 0x00000000000280c8 0x1421 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o - .debug_line 0x00000000000294e9 0x1663 ./Core/FSM/Src/Automatic_task_Control.o - .debug_line 0x000000000002ab4c 0x1361 ./Core/FSM/Src/blowers_pwm_action.o - .debug_line 0x000000000002bead 0x459 ./Core/FSM/Src/fsm_state.o - .debug_line 0x000000000002c306 0x172f ./Core/FSM/Src/fsm_state_control.o - .debug_line 0x000000000002da35 0x13af ./Core/FSM/Src/motors.o - .debug_line 0x000000000002ede4 0x133e ./Core/FSM/Src/motors_power_action.o - .debug_line 0x0000000000030122 0x1756 ./Core/FSM/Src/robot_move_actions.o - .debug_line 0x0000000000031878 0x9c3 ./Core/Src/adc.o - .debug_line 0x000000000003223b 0x914 ./Core/Src/dma.o - .debug_line 0x0000000000032b4f 0xa8c ./Core/Src/fdcan.o - .debug_line 0x00000000000335db 0x987 ./Core/Src/gpio.o - .debug_line 0x0000000000033f62 0x9a3 ./Core/Src/i2c.o - .debug_line 0x0000000000034905 0x16a3 ./Core/Src/main.o - .debug_line 0x0000000000035fa8 0x9b9 ./Core/Src/quadspi.o - .debug_line 0x0000000000036961 0x90b ./Core/Src/stm32h7xx_hal_msp.o - .debug_line 0x000000000003726c 0xbfa ./Core/Src/stm32h7xx_it.o - .debug_line 0x0000000000037e66 0xdfe ./Core/Src/syscalls.o - .debug_line 0x0000000000038c64 0xbf6 ./Core/Src/sysmem.o - .debug_line 0x000000000003985a 0xac2 ./Core/Src/system_stm32h7xx.o - .debug_line 0x000000000003a31c 0xab8 ./Core/Src/tim.o - .debug_line 0x000000000003add4 0xfd8 ./Core/Src/usart.o - .debug_line 0x000000000003bdac 0x88 ./Core/Startup/startup_stm32h743vgtx.o - .debug_line 0x000000000003be34 0x805 ./Drivers/BSP/Components/lan8742/lan8742.o - .debug_line 0x000000000003c639 0xeba ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - .debug_line 0x000000000003d4f3 0x2412 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - .debug_line 0x000000000003f905 0xec0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - .debug_line 0x00000000000407c5 0x2809 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - .debug_line 0x0000000000042fce 0x1c00 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - .debug_line 0x0000000000044bce 0x281b ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - .debug_line 0x00000000000473e9 0xd7d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o - .debug_line 0x0000000000048166 0x38d2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - .debug_line 0x000000000004ba38 0xb2a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o - .debug_line 0x000000000004c562 0xfd4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o - .debug_line 0x000000000004d536 0x152d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - .debug_line 0x000000000004ea63 0x1428 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - .debug_line 0x000000000004fe8b 0x1be2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - .debug_line 0x0000000000051a6d 0x3f87 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - .debug_line 0x00000000000559f4 0x1e60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - .debug_line 0x0000000000057854 0x3f13 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - .debug_line 0x000000000005b767 0xf98 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - .debug_line 0x000000000005c6ff 0xe11 ./LWIP/App/lwip.o - .debug_line 0x000000000005d510 0x120c ./LWIP/Target/ethernetif.o - .debug_line 0x000000000005e71c 0xdb2 ./Middlewares/Third_Party/LwIP/src/core/def.o - .debug_line 0x000000000005f4ce 0xf0a ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o - .debug_line 0x00000000000603d8 0xe5b ./Middlewares/Third_Party/LwIP/src/core/init.o - .debug_line 0x0000000000061233 0xcf8 ./Middlewares/Third_Party/LwIP/src/core/ip.o - .debug_line 0x0000000000061f2b 0x10df ./Middlewares/Third_Party/LwIP/src/core/mem.o - .debug_line 0x000000000006300a 0x1066 ./Middlewares/Third_Party/LwIP/src/core/memp.o - .debug_line 0x0000000000064070 0x141a ./Middlewares/Third_Party/LwIP/src/core/netif.o - .debug_line 0x000000000006548a 0x1847 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - .debug_line 0x0000000000066cd1 0x1fd7 ./Middlewares/Third_Party/LwIP/src/core/tcp.o - .debug_line 0x0000000000068ca8 0x20d2 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o - .debug_line 0x000000000006ad7a 0x1c7f ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - .debug_line 0x000000000006c9f9 0x10df ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - .debug_line 0x000000000006dad8 0x1419 ./Middlewares/Third_Party/LwIP/src/core/udp.o - .debug_line 0x000000000006eef1 0x1472 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - .debug_line 0x0000000000070363 0xef8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - .debug_line 0x000000000007125b 0x10f1 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - .debug_line 0x000000000007234c 0xfc8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o - .debug_line 0x0000000000073314 0x13e8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - .debug_line 0x00000000000746fc 0xee1 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + .debug_line 0x000000000001f089 0x13f8 ./Core/BASE/Src/MSP/msp_K1061DC.o + .debug_line 0x0000000000020481 0x1599 ./Core/BASE/Src/MSP/msp_MK32_1.o + .debug_line 0x0000000000021a1a 0x123e ./Core/BASE/Src/MSP/msp_PID.o + .debug_line 0x0000000000022c58 0x1677 ./Core/BASE/Src/MSP/msp_TL720D.o + .debug_line 0x00000000000242cf 0x15f7 ./Core/BASE/Src/MSP/msp_UWB_20.o + .debug_line 0x00000000000258c6 0x144b ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o + .debug_line 0x0000000000026d11 0x13db ./Core/BASE/Src/MSP/msp_Wire_Motor_C20.o + .debug_line 0x00000000000280ec 0x1421 ./Core/BASE/Src/MSP/msp_Wire_Sensor.o + .debug_line 0x000000000002950d 0x1663 ./Core/FSM/Src/Automatic_task_Control.o + .debug_line 0x000000000002ab70 0x1361 ./Core/FSM/Src/blowers_pwm_action.o + .debug_line 0x000000000002bed1 0x459 ./Core/FSM/Src/fsm_state.o + .debug_line 0x000000000002c32a 0x172f ./Core/FSM/Src/fsm_state_control.o + .debug_line 0x000000000002da59 0x13af ./Core/FSM/Src/motors.o + .debug_line 0x000000000002ee08 0x133e ./Core/FSM/Src/motors_power_action.o + .debug_line 0x0000000000030146 0x1756 ./Core/FSM/Src/robot_move_actions.o + .debug_line 0x000000000003189c 0x9c3 ./Core/Src/adc.o + .debug_line 0x000000000003225f 0x914 ./Core/Src/dma.o + .debug_line 0x0000000000032b73 0xa8c ./Core/Src/fdcan.o + .debug_line 0x00000000000335ff 0x987 ./Core/Src/gpio.o + .debug_line 0x0000000000033f86 0x9a3 ./Core/Src/i2c.o + .debug_line 0x0000000000034929 0x16a3 ./Core/Src/main.o + .debug_line 0x0000000000035fcc 0x9b9 ./Core/Src/quadspi.o + .debug_line 0x0000000000036985 0x90b ./Core/Src/stm32h7xx_hal_msp.o + .debug_line 0x0000000000037290 0xbfa ./Core/Src/stm32h7xx_it.o + .debug_line 0x0000000000037e8a 0xdfe ./Core/Src/syscalls.o + .debug_line 0x0000000000038c88 0xbf6 ./Core/Src/sysmem.o + .debug_line 0x000000000003987e 0xac2 ./Core/Src/system_stm32h7xx.o + .debug_line 0x000000000003a340 0xab8 ./Core/Src/tim.o + .debug_line 0x000000000003adf8 0xfd8 ./Core/Src/usart.o + .debug_line 0x000000000003bdd0 0x88 ./Core/Startup/startup_stm32h743vgtx.o + .debug_line 0x000000000003be58 0x805 ./Drivers/BSP/Components/lan8742/lan8742.o + .debug_line 0x000000000003c65d 0xeba ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + .debug_line 0x000000000003d517 0x2412 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + .debug_line 0x000000000003f929 0xec0 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + .debug_line 0x00000000000407e9 0x2809 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + .debug_line 0x0000000000042ff2 0x1c00 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + .debug_line 0x0000000000044bf2 0x281b ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + .debug_line 0x000000000004740d 0xd7d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o + .debug_line 0x000000000004818a 0x38d2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + .debug_line 0x000000000004ba5c 0xb2a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o + .debug_line 0x000000000004c586 0xfd4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o + .debug_line 0x000000000004d55a 0x152d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + .debug_line 0x000000000004ea87 0x1428 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + .debug_line 0x000000000004feaf 0x1be2 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + .debug_line 0x0000000000051a91 0x3f87 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + .debug_line 0x0000000000055a18 0x1e60 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + .debug_line 0x0000000000057878 0x3f13 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + .debug_line 0x000000000005b78b 0xf98 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + .debug_line 0x000000000005c723 0xe11 ./LWIP/App/lwip.o + .debug_line 0x000000000005d534 0x120c ./LWIP/Target/ethernetif.o + .debug_line 0x000000000005e740 0xdb2 ./Middlewares/Third_Party/LwIP/src/core/def.o + .debug_line 0x000000000005f4f2 0xf0a ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o + .debug_line 0x00000000000603fc 0xe5b ./Middlewares/Third_Party/LwIP/src/core/init.o + .debug_line 0x0000000000061257 0xcf8 ./Middlewares/Third_Party/LwIP/src/core/ip.o + .debug_line 0x0000000000061f4f 0x10df ./Middlewares/Third_Party/LwIP/src/core/mem.o + .debug_line 0x000000000006302e 0x1066 ./Middlewares/Third_Party/LwIP/src/core/memp.o + .debug_line 0x0000000000064094 0x141a ./Middlewares/Third_Party/LwIP/src/core/netif.o + .debug_line 0x00000000000654ae 0x1847 ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + .debug_line 0x0000000000066cf5 0x1fd7 ./Middlewares/Third_Party/LwIP/src/core/tcp.o + .debug_line 0x0000000000068ccc 0x20d2 ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + .debug_line 0x000000000006ad9e 0x1c7f ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + .debug_line 0x000000000006ca1d 0x10df ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + .debug_line 0x000000000006dafc 0x1419 ./Middlewares/Third_Party/LwIP/src/core/udp.o + .debug_line 0x000000000006ef15 0x1472 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + .debug_line 0x0000000000070387 0xef8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + .debug_line 0x000000000007127f 0x10f1 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + .debug_line 0x0000000000072370 0xfc8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o + .debug_line 0x0000000000073338 0x13e8 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + .debug_line 0x0000000000074720 0xee1 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o .debug_str 0x0000000000000000 0x1b13bd .debug_str 0x0000000000000000 0xcc1b ./Core/BASE/Protobuf/PSource/D_Cmd.pb.o