ch32v307_camera/prj/TCPClient/obj/TCPClient1.lst
2026-03-14 10:11:37 +08:00

29194 lines
1.4 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

TCPClient1.elf: file format elf32-littleriscv
TCPClient1.elf
architecture: riscv:rv32, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00000000
Program Header:
LOAD off 0x00001000 vaddr 0x00000000 paddr 0x00000000 align 2**12
filesz 0x0000d514 memsz 0x0000d514 flags r-x
LOAD off 0x0000f000 vaddr 0x20000000 paddr 0x0000d514 align 2**12
filesz 0x000000a0 memsz 0x0002dc68 flags rw-
LOAD off 0x0000f800 vaddr 0x2002f800 paddr 0x2002f800 align 2**12
filesz 0x00000000 memsz 0x00000800 flags rw-
Sections:
Idx Name Size VMA LMA File off Algn Flags
0 .init 00000004 00000000 00000000 00001000 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .vector 000001bc 00000004 00000004 00001004 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .text 0000d314 00000200 00000200 00001200 2**8 CONTENTS, ALLOC, LOAD, READONLY, CODE
3 .fini 00000000 0000d514 0000d514 0000f0a0 2**0 CONTENTS, ALLOC, LOAD, CODE
4 .dalign 00000000 20000000 20000000 0000f0a0 2**0 CONTENTS
5 .dlalign 00000000 0000d514 0000d514 0000f0a0 2**0 CONTENTS
6 .data 000000a0 20000000 0000d514 0000f000 2**2 CONTENTS, ALLOC, LOAD, DATA
7 .bss 0002dbc8 200000a0 0000d5b4 0000f0a0 2**2 ALLOC
8 .stack 00000800 2002f800 2002f800 0000f800 2**0 ALLOC
9 .debug_info 00028d35 00000000 00000000 0000f0a0 2**0 CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00005e8e 00000000 00000000 00037dd5 2**0 CONTENTS, READONLY, DEBUGGING
11 .debug_aranges 00001448 00000000 00000000 0003dc68 2**3 CONTENTS, READONLY, DEBUGGING
12 .debug_ranges 00002018 00000000 00000000 0003f0b0 2**3 CONTENTS, READONLY, DEBUGGING
13 .debug_line 00021534 00000000 00000000 000410c8 2**0 CONTENTS, READONLY, DEBUGGING
14 .debug_str 0000782b 00000000 00000000 000625fc 2**0 CONTENTS, READONLY, DEBUGGING
15 .comment 00000033 00000000 00000000 00069e27 2**0 CONTENTS, READONLY
16 .debug_frame 0000357c 00000000 00000000 00069e5c 2**2 CONTENTS, READONLY, DEBUGGING
17 .debug_loc 0000d0da 00000000 00000000 0006d3d8 2**0 CONTENTS, READONLY, DEBUGGING
SYMBOL TABLE:
00000000 l d .init 00000000 .init
00000004 l d .vector 00000000 .vector
00000200 l d .text 00000000 .text
0000d514 l d .fini 00000000 .fini
20000000 l d .dalign 00000000 .dalign
0000d514 l d .dlalign 00000000 .dlalign
20000000 l d .data 00000000 .data
200000a0 l d .bss 00000000 .bss
2002f800 l d .stack 00000000 .stack
00000000 l d .debug_info 00000000 .debug_info
00000000 l d .debug_abbrev 00000000 .debug_abbrev
00000000 l d .debug_aranges 00000000 .debug_aranges
00000000 l d .debug_ranges 00000000 .debug_ranges
00000000 l d .debug_line 00000000 .debug_line
00000000 l d .debug_str 00000000 .debug_str
00000000 l d .comment 00000000 .comment
00000000 l d .debug_frame 00000000 .debug_frame
00000000 l d .debug_loc 00000000 .debug_loc
00000000 l df *ABS* 00000000 ./Startup/startup_ch32v30x_D8C.o
00000004 l .vector 00000000 _vector_base
00000000 l df *ABS* 00000000 ./FreeRTOS/portable/GCC/RISC-V/portASM.o
00000264 l .text 00000000 processed_source
00000428 l .text 00000000 chip_specific_stack_frame
00000000 l df *ABS* 00000000 ch32v30x_it.c
00000000 l df *ABS* 00000000 main.c
000006d2 l F .text 00000084 task_business_entry
00000756 l F .text 00000016 ng_timer_callback
0000090e l F .text 00000018 task_wchnet_entry
200000ac l O .bss 00000004 g_ng_timer
2000004c l O .data 00000001 use_buffer_A.6728
00000000 l df *ABS* 00000000 system_ch32v30x.c
00000000 l df *ABS* 00000000 ch32v30x_dbgmcu.c
00000000 l df *ABS* 00000000 ch32v30x_dvp.c
00000000 l df *ABS* 00000000 ch32v30x_eth.c
00000000 l df *ABS* 00000000 ch32v30x_exti.c
00000000 l df *ABS* 00000000 ch32v30x_flash.c
00000000 l df *ABS* 00000000 ch32v30x_gpio.c
00000000 l df *ABS* 00000000 ch32v30x_misc.c
00000000 l df *ABS* 00000000 ch32v30x_rcc.c
20000030 l O .data 00000010 APBAHBPrescTable
20000054 l O .data 00000004 ADCPrescTable
00000000 l df *ABS* 00000000 ch32v30x_tim.c
00000000 l df *ABS* 00000000 ch32v30x_usart.c
00000000 l df *ABS* 00000000 eth_driver_RGMII.c
00000000 l df *ABS* 00000000 qdx_port.c
00001f1e l F .text 0000003e find_ctx_by_wchnet_id
2000e8c4 l O .bss 000016f8 g_sock_ctx
00001f5c l F .text 0000003a free_sock_ctx
200000d8 l O .bss 00000004 g_wchnet_mutex
00000000 l df *ABS* 00000000 qdx_preprocess.c
2000ffbc l O .bss 0000006e g_PreprocessCfg
2001002c l O .bss 00000400 g_col_sums
200000dc l O .bss 00000001 g_is_initialized
200000e0 l O .bss 00000004 g_preprocess_mutex
00000000 l df *ABS* 00000000 qdx_protocol.c
00000000 l df *ABS* 00000000 qdx_tcp_logic.c
00002c1a l F .text 0000001e tcp_stream_disconnect
00002c38 l F .text 0000006c tcp_send_frame
2001042c l O .bss 000020e4 g_TcpLogic
00002ca4 l F .text 000000aa tcp_send_handshake
00002d4e l F .text 00000030 tcp_send_heartbeat
00002d7e l F .text 00000032 tcp_send_ack.constprop.3
00002db0 l F .text 000005b2 recv_thread_entry
00003362 l F .text 0000012a manager_thread_entry
00000000 l df *ABS* 00000000 heap_4.c
0000376e l F .text 0000004c prvInsertBlockIntoFreeList
20012510 l O .bss 00003000 ucHeap
200000e4 l O .bss 00000004 pxEnd
200000e8 l O .bss 00000004 xBlockAllocatedBit
200000ec l O .bss 00000004 xFreeBytesRemaining
200000f0 l O .bss 00000004 xMinimumEverFreeBytesRemaining
200000f4 l O .bss 00000004 xNumberOfSuccessfulAllocations
200000f8 l O .bss 00000004 xNumberOfSuccessfulFrees
200000fc l O .bss 00000008 xStart
00000000 l df *ABS* 00000000 port.c
20000058 l O .data 00000004 uxCriticalNesting
00000000 l df *ABS* 00000000 list.c
00000000 l df *ABS* 00000000 queue.c
00003bc2 l F .text 0000001e prvIsQueueEmpty
00003be0 l F .text 00000072 prvCopyDataToQueue
00003c52 l F .text 00000028 prvCopyDataFromQueue
00003c7a l F .text 00000076 prvUnlockQueue
00000000 l df *ABS* 00000000 tasks.c
000045a0 l F .text 00000024 prvResetNextTaskUnblockTime
000045c4 l F .text 000000a6 prvAddCurrentTaskToDelayedList
0000466a l F .text 00000052 prvIdleTask
20015550 l O .bss 0000012c pxReadyTasksLists
2001567c l O .bss 00000014 xDelayedTaskList1
20015690 l O .bss 00000014 xDelayedTaskList2
200156a4 l O .bss 00000014 xPendingReadyList
200156b8 l O .bss 00000014 xSuspendedTaskList
200156cc l O .bss 00000014 xTasksWaitingTermination
20000108 l O .bss 00000004 pxDelayedTaskList
2000010c l O .bss 00000004 pxOverflowDelayedTaskList
20000110 l O .bss 00000004 uxCurrentNumberOfTasks
20000114 l O .bss 00000004 uxDeletedTasksWaitingCleanUp
20000118 l O .bss 00000004 uxSchedulerSuspended
2000011c l O .bss 00000004 uxTaskNumber
20000120 l O .bss 00000004 uxTopReadyPriority
20000124 l O .bss 00000004 xIdleTaskHandle
20000128 l O .bss 00000004 xNextTaskUnblockTime
2000012c l O .bss 00000004 xNumOfOverflows
20000130 l O .bss 00000004 xPendedTicks
20000134 l O .bss 00000004 xSchedulerRunning
20000138 l O .bss 00000004 xTickCount
2000013c l O .bss 00000004 xYieldPending
00000000 l df *ABS* 00000000 timers.c
000052ac l F .text 0000005a prvCheckForValidListAndQueue
00005306 l F .text 0000003e prvInsertTimerInActiveList
00005344 l F .text 0000002a prvReloadTimer
0000536e l F .text 00000042 prvProcessExpiredTimer
000053b0 l F .text 00000028 prvSwitchTimerLists
000053d8 l F .text 00000188 prvTimerTask
200156e0 l O .bss 00000014 xActiveTimerList1
200156f4 l O .bss 00000014 xActiveTimerList2
20000140 l O .bss 00000004 pxCurrentTimerList
20000144 l O .bss 00000004 pxOverflowTimerList
20000148 l O .bss 00000004 xLastTime.6646
2000014c l O .bss 00000004 xTimerQueue
20000150 l O .bss 00000004 xTimerTaskHandle
00000000 l df *ABS* 00000000 debug.c
20000154 l O .bss 00000002 p_ms
20000156 l O .bss 00000001 p_us
00000000 l df *ABS* 00000000 dvp.c
20000168 l O .bss 00000004 frame_count
00000000 l df *ABS* 00000000 core_riscv.c
00000000 l df *ABS* 00000000 eth_api.c
00000000 l df *ABS* 00000000 ipcheck.c
00000000 l df *ABS* 00000000 socket.c
00000000 l df *ABS* 00000000 etharp.c
00006cf0 l F .text 00000180 find_entry
00006e70 l F .text 000000b2 update_arp_entry
200001a4 l O .bss 00000001 etharp_cached_entry
00000000 l df *ABS* 00000000 ethernetif.c
0000756c l F .text 00000052 low_level_output
00000000 l df *ABS* 00000000 inet.c
00000000 l df *ABS* 00000000 ip.c
200001b0 l O .bss 00000002 ip_id.2947
00000000 l df *ABS* 00000000 ip_addr.c
00000000 l df *ABS* 00000000 ip_frag.c
200001b2 l O .bss 00000002 ip_reass_pbufcount
200001b4 l O .bss 00000004 reassdatagrams
00000000 l df *ABS* 00000000 dhcp.c
000081f0 l F .text 00000016 dhcp_set_state
00008206 l F .text 00000020 dhcp_option
00008226 l F .text 00000012 dhcp_option_byte
00008238 l F .text 00000048 dhcp_option_long
00008280 l F .text 00000034 dhcp_option_trailer
000082b4 l F .text 0000018a dhcp_create_request
0000843e l F .text 0000001e dhcp_delete_request
00000000 l df *ABS* 00000000 init.c
00000000 l df *ABS* 00000000 mem.c
200001b8 l O .bss 00000004 lfree
200001bc l O .bss 00000004 ram
200001c0 l O .bss 00000004 ram_end
00000000 l df *ABS* 00000000 memp.c
2002dc34 l O .bss 00000020 memp_tab
00000000 l df *ABS* 00000000 netif.c
200001cc l O .bss 00000001 netifnum.2482
00000000 l df *ABS* 00000000 pbuf.c
00000000 l df *ABS* 00000000 raw.c
200001d0 l O .bss 00000004 raw_pcbs
00000000 l df *ABS* 00000000 tcp.c
00008efa l F .text 0000005c tcp_new_port
200001e4 l O .bss 00000001 tcp_timer
20000070 l O .data 00000004 iss.3197
20000074 l O .data 00000002 port.3029
00000000 l df *ABS* 00000000 tcp_in.c
00009a12 l F .text 000000ce tcp_oos_insert_segment
00009ae0 l F .text 00000944 tcp_receive
0000a424 l F .text 000000a6 tcp_parseopt.isra.0
2002dc54 l O .bss 00000014 inseg
200001f0 l O .bss 00000004 ackno
200001f4 l O .bss 00000001 flags
200001f8 l O .bss 00000004 iphdr
200001fc l O .bss 00000004 recv_data
20000200 l O .bss 00000001 recv_flags
20000204 l O .bss 00000004 seqno
2000020c l O .bss 00000004 tcphdr
20000210 l O .bss 00000002 tcplen
00000000 l df *ABS* 00000000 tcp_out.c
0000aef8 l F .text 000000d4 tcp_output_set_header.isra.0.constprop.1
00000000 l df *ABS* 00000000 udp.c
00000000 l df *ABS* 00000000 icmp.c
0000c03e l F .text 00000076 icmp_send_response.isra.0
00000000 l df *ABS* 00000000 inet_chksum.c
0000c32c l F .text 0000007e lwip_standard_chksum
00000000 l df *ABS* 00000000 wchprintf.c
00000000 l df *ABS* 00000000 libgcc2.c
00000000 l df *ABS* 00000000 memcpy.c
00000000 l df *ABS* 00000000 memmove.c
00000000 l df *ABS* 00000000 libgcc2.c
00000000 l df *ABS* 00000000 net_dhcp.c
0000c752 w F .text 00000004 printDouble
00000d46 w .text 00000000 EXTI2_IRQHandler
0000cae4 g F .text 00000018 putchar
0000c4b4 g F .text 00000014 inet_chksum
000008a4 g F .text 0000006a WCHNET_HandleGlobalInt
20000157 g O .bss 00000001 Frame_Ready_Flag
00000d46 w .text 00000000 TIM8_TRG_COM_IRQHandler
00008dca g F .text 0000001e raw_bind
00007c96 g F .text 000003dc ip_reass
00000d46 w .text 00000000 TIM8_CC_IRQHandler
00008c22 g F .text 00000058 pbuf_realloc
00000e2c g F .text 00000062 DVP_Cfg
000010b8 g F .text 0000001a FLASH_Unlock
00009776 g F .text 00000010 tcp_next_iss
0000906c g F .text 00000048 tcp_update_rcv_ann_wnd
00005bf6 g F .text 00000016 setRxBuffAddr
00001020 g F .text 00000010 ETH_FlushTransmitFIFO
00001526 g F .text 0000001e RCC_AHBPeriphResetCmd
200001c8 g O .bss 00000004 netif_list
00000d46 w .text 00000000 UART8_IRQHandler
00002392 g F .text 000000f2 qdx_port_tcp_recv
0000b832 g F .text 00000108 tcp_rst
0000cafc g F .text 000003d4 .hidden __divdi3
0000c756 w F .text 00000320 print
00003b06 g F .text 00000042 vPortExitCritical
000055b8 g F .text 00000074 xTimerCreate
20000184 g O .bss 00000004 TCPTimer
000070ec g F .text 000000ce etharp_request
0000ca76 w F .text 00000024 printf
20000840 g .data 00000000 __global_pointer$
000004ee g F .text 00000028 .hidden __riscv_save_8
00009170 g F .text 00000006 tcp_err
2000008c g O .data 00000004 ip_addr_any
00000d46 w .text 00000000 TIM1_CC_IRQHandler
00002a1c g F .text 00000008 qdx_write_u16_le
0000c3aa g F .text 0000010a inet_chksum_pseudo
00006196 g F .text 00000016 WCHNET_ConfigKeepLive
0000b414 g F .text 00000016 tcp_send_ctrl
0000bfea g F .text 00000030 udp_remove
000005f0 g F .text 00000052 HardFault_Handler
00004544 g F .text 0000005c vQueueWaitForMessageRestricted
000079d6 g F .text 0000015a ip_output_if
00002a24 g F .text 00000014 qdx_write_u32_le
000088c2 g F .text 00000018 memp_free
0000c65c w F .text 000000f2 printInt
00008a94 g F .text 0000004e pbuf_free
0000053a g F .text 0000000c .hidden __riscv_restore_3
00006aa6 g F .text 00000014 WCHNET_GetGlobalInt
00009164 g F .text 00000006 tcp_recv
00000d46 w .text 00000000 TIM6_IRQHandler
00001e3e g F .text 0000006c ETH_Init
00003ab8 g F .text 00000038 SysTick_Handler
00008c96 g F .text 0000001c pbuf_cat
000012f6 g F .text 00000060 NVIC_Init
00002484 g F .text 0000004c qdx_port_tcp_close
00000d46 w .text 00000000 PVD_IRQHandler
000020ae g F .text 0000001c qdx_port_delay_ms
00000d46 w .text 00000000 SDIO_IRQHandler
20000190 g O .bss 00000001 ARP_Retry_Cnt
00006c5c g F .text 00000060 WCHNET_SocketClose
00006b64 g F .text 00000038 CloseUpdConnect
0000cf82 g F .text 00000046 memmove
00007b30 g F .text 00000036 ip_output
00000d46 w .text 00000000 TIM9_BRK_IRQHandler
00000526 g F .text 00000020 .hidden __riscv_restore_10
00001c90 g F .text 00000126 ReInitMACReg
0000bf26 g F .text 0000002e udp_sendto
0000175c g F .text 00000044 ETH_TxPktChainMode
2000018c g O .bss 00000004 phydatatime
00003ff8 g F .text 00000128 xQueueGenericSendFromISR
00000d46 w .text 00000000 DMA2_Channel8_IRQHandler
000005ee g F .text 00000002 NMI_Handler
0000ba4e g F .text 0000005e tcp_keepalive
00000d46 w .text 00000000 CAN2_RX1_IRQHandler
00000d46 w .text 00000000 EXTI3_IRQHandler
000060ea g F .text 000000ac WCHNET_Init
000071ba g F .text 0000007c etharp_tmr
000004ee g F .text 00000028 .hidden __riscv_save_11
00000dda g F .text 0000000a DBGMCU_GetCHIPID
00009786 g F .text 00000134 tcp_alloc
00005afa g F .text 00000014 WCHNET_NetInput
0000d194 g O .text 00000010 MemSize
0000be50 g F .text 000000d6 udp_sendto_if
00001dec g F .text 00000052 WCHNET_ETHIsr
00009160 g F .text 00000004 tcp_arg
20000104 g O .bss 00000004 pxCurrentTCB
00000d46 w .text 00000000 USBHS_IRQHandler
00006f7c g F .text 00000170 etharp_arp_input
00002076 g F .text 0000002a qdx_port_init
200001d4 g O .bss 00000004 tcp_active_pcbs
00001752 g F .text 0000000a USART_GetFlagStatus
00000d46 w .text 00000000 DMA2_Channel9_IRQHandler
20000214 g O .bss 00000004 udp_pcbs
00000d46 w .text 00000000 TIM10_CC_IRQHandler
200000a4 g O .bss 00000006 MACAddr
00007482 g F .text 00000086 ethernet_input
200000a0 g .bss 00000000 _sbss
00000800 g *ABS* 00000000 __stack_size
00008c8c g F .text 0000000a pbuf_ref
000056fe g F .text 00000062 USART_Printf_Init
00006922 g F .text 00000056 WCHNET_SocketSend
200000bc g O .bss 00000004 ChipId
000095ac g F .text 00000030 tcp_recv_null
20000194 g O .bss 00000001 SockNumber
000020ea g F .text 00000016 qdx_port_mutex_unlock
00000d46 w .text 00000000 USBFS_IRQHandler
00004f2a g F .text 00000016 vTaskInternalSetTimeOutState
000094fa g F .text 000000b2 tcp_close
2002db08 g O .bss 0000000c SelARP
000090b4 g F .text 0000003c tcp_recved
00000828 g F .text 0000007c WCHNET_HandleSockInt
0000053a g F .text 0000000c .hidden __riscv_restore_2
00009180 g F .text 0000004e tcp_pcb_purge
20000094 g O .data 00000007 tcp_persist_backoff
00003a28 g F .text 00000090 xPortStartScheduler
00000e8e g F .text 00000014 ETH_DeInit
0000ced0 g F .text 000000b2 memcpy
00008634 g F .text 00000084 mem_free
00004d80 g F .text 00000048 vTaskPlaceOnEventList
200001e0 g O .bss 00000004 tcp_ticks
200001dc g O .bss 00000004 tcp_listen_pcbs
0000b93a g F .text 00000036 tcp_rexmit_rto
20000164 g O .bss 00000004 current_line_idx
00006b9c g F .text 00000038 CloseIPRAWConnect
000039ee w F .text 0000003a vPortSetupTimerInterrupt
00002b96 g F .text 00000084 qdx_build_fragment_frame
00007b66 g F .text 0000004a ip_addr_isbroadcast
0000c74e w F .text 00000004 printLongLongInt
200000b0 g O .bss 00000004 DMARxDescToGet
000098ba g F .text 00000010 tcp_new
20000010 g O .data 00000010 g_TxNetBuffer_B
00000d46 w .text 00000000 EXTI0_IRQHandler
0000155e g F .text 00000024 RCC_ETH1G_125Mcmd
00000d46 w .text 00000000 I2C2_EV_IRQHandler
00005c42 g F .text 0000000e GetChipID
00000d46 w .text 00000000 TIM10_TRG_COM_IRQHandler
00005d1e g F .text 00000042 IPCheckTmr
00001670 g F .text 00000018 TIM_Cmd
0000ca9a g F .text 0000004a puts
00003946 g F .text 000000a8 vPortFree
2002db14 g O .bss 00000018 DHCPCtrl
20000050 g O .data 00000004 SystemCoreClock
20030000 g .stack 00000000 __freertos_irq_stack_top
00008e8a g F .text 00000010 raw_send
0000c4c8 g F .text 0000006a inet_chksum_pbuf
00004286 g F .text 000001bc xQueueSemaphoreTake
0000c0b4 g F .text 00000250 icmp_input
00000004 g .init 00000000 _einit
0000169a g F .text 0000000c TIM_ClearITPendingBit
000035a4 g F .text 0000000e TcpLogic_RegisterConfigCallback
000089be g F .text 0000005a netif_add
000014ea g F .text 0000001e RCC_APB2PeriphClockCmd
000004e6 g F .text 00000030 .hidden __riscv_save_12
0000911a g F .text 0000001e tcp_segs_free
00006a68 g F .text 0000003e WCHNET_QueryGlobalInt
00000d46 w .text 00000000 CAN2_SCE_IRQHandler
00000d46 w .text 00000000 ADC1_2_IRQHandler
0000122e g F .text 000000c0 GPIO_Init
00000d46 w .text 00000000 Break_Point_Handler
000088da g F .text 00000096 netif_set_ipaddr
00000526 g F .text 00000020 .hidden __riscv_restore_11
200000b8 g O .bss 00000004 NVIC_Priority_Group
00000d46 w .text 00000000 SPI1_IRQHandler
00001734 g F .text 00000016 USART_Cmd
00006aba g F .text 0000002a WCHNET_GetSocketInt
0000b42a g F .text 00000030 tcp_write
00000d46 w .text 00000000 TAMPER_IRQHandler
00000516 g F .text 0000000c .hidden __riscv_save_1
000010e0 g F .text 0000000a FLASH_GetUserOptionByte
2002dbd0 g O .bss 0000002c WCHCfg
0000053a g F .text 0000000c .hidden __riscv_restore_0
00003b6e g F .text 00000006 vListInitialiseItem
00009660 g F .text 0000007c tcp_fastsendack
00001aca g F .text 00000094 ETH_RegInit
000004fc g F .text 0000001a .hidden __riscv_save_7
00004120 g F .text 00000166 xQueueReceive
00000d46 w .text 00000000 CAN2_RX0_IRQHandler
20000060 g O .data 00000004 DHCPXid
20015510 g O .bss 00000040 xQueueRegistry
00008f56 g F .text 00000116 tcp_bind
00003b54 g F .text 00000006 vPortClearInterruptMask
0000c318 g F .text 00000014 icmp_time_exceeded
2000015c g O .bss 00000004 Ready_Frame_Count
20006978 g O .bss 000029ac MACRxBuf
00000d46 w .text 00000000 TIM8_UP_IRQHandler
00008072 g F .text 0000017e ip_frag
00001508 g F .text 0000001e RCC_APB1PeriphClockCmd
000065ce g F .text 000000e8 WCHNET_SocketRecv
200000d0 g O .bss 00000004 pDMARxSet
00000d46 w .text 00000000 Ecall_M_Mode_Handler
2002f800 g .stack 00000000 _heap_end
2002db2c g O .bss 00000040 dhcp_host_name
00008e0c g F .text 0000007e raw_sendto
000035c0 g F .text 000001ae TcpLogic_BuildAndSendTemperatureFrame
000056c8 g F .text 00000036 Delay_Us
00000530 g F .text 00000016 .hidden __riscv_restore_5
00000d46 w .text 00000000 DMA2_Channel2_IRQHandler
000014cc g F .text 0000001e RCC_AHBPeriphClockCmd
00000d46 w .text 00000000 DMA1_Channel4_IRQHandler
20015b08 g O .bss 00018000 FrameBuffer
00008cc6 g F .text 0000009c pbuf_copy
0000b970 g F .text 0000007c tcp_rexmit
000037ba g F .text 0000018c pvPortMalloc
00005dce g F .text 00000004 LwipTCPPollCallBack
200000b4 g O .bss 00000004 DMATxDescToSet
00004508 g F .text 0000003c vQueueDelete
00000f4c g F .text 00000014 ETH_MACTransmissionCmd
00003b5a g F .text 00000014 vListInitialise
000010d2 g F .text 0000000e FLASH_Lock
20000048 g O .data 00000004 IPMask
00002032 g F .text 00000022 qdx_port_sock_connect_notify
20000158 g O .bss 00000001 Line_Ready_Flag
00000d46 w .text 00000000 TIM9_UP_IRQHandler
00000530 g F .text 00000016 .hidden __riscv_restore_6
00000d46 w .text 00000000 USART3_IRQHandler
000010ae g F .text 0000000a EXTI_ClearITPendingBit
00004962 g F .text 0000000a xTaskGetTickCount
00003e22 g F .text 000001a8 xQueueGenericSend
00000d46 w .text 00000000 RTC_IRQHandler
200001e8 g O .bss 00000004 tcp_tmp_pcb
2002dc68 g .bss 00000000 _ebss
2000a3bc g O .bss 00001e74 Mem_Heap_Memory
00000d46 w .text 00000000 DMA1_Channel7_IRQHandler
20000174 g O .bss 00000004 DHCPcoarseTimer
00001080 g F .text 0000002e RGMII_TXC_Delay
000024d0 g F .text 00000068 Preprocess_Init
00000d46 w .text 00000000 CAN1_RX1_IRQHandler
000056a2 g F .text 00000026 Delay_Init
000050e0 g F .text 000000ca xTaskPriorityDisinherit
00002b26 g F .text 00000070 qdx_build_frame_inplace
000085f6 g F .text 0000003e mem_init
00001018 g F .text 00000008 ETH_DMAClearITPendingBit
000058cc g F .text 0000005a DVP_IRQHandler
00000d46 w .text 00000000 UART5_IRQHandler
200000cc g O .bss 00000002 gPHYAddress
0000b4ca g F .text 00000368 tcp_output
00004e3e g F .text 000000ec xTaskRemoveFromEventList
000012ee g F .text 00000004 GPIO_SetBits
00000d46 w .text 00000000 TIM4_IRQHandler
20000208 g O .bss 00000004 tcp_input_pcb
00008d62 g F .text 00000068 raw_input
0000b45a g F .text 00000070 tcp_send_empty_ack
000004ee g F .text 00000028 .hidden __riscv_save_9
0000b9ec g F .text 00000062 tcp_rexmit_fast
00000d46 w .text 00000000 DMA2_Channel1_IRQHandler
2000c230 g O .bss 0000261b Memp_Memory
00001062 g F .text 0000001e ETH_DMAITConfig
0000076c g F .text 00000036 OnDetectionResult
0000762e g F .text 00000076 wch_ethernetif_init
00005c50 g F .text 00000074 getTxBuffAddr
000076e4 g F .text 0000000c ntohl
0000100a g F .text 0000000e ETH_SoftwareReset
000004fc g F .text 0000001a .hidden __riscv_save_4
00008a18 g F .text 00000006 netif_set_default
0000609e g F .text 0000004c WCHSocketInit
00000efa g F .text 00000052 ETH_WritePHYRegister
0000bfe4 g F .text 00000006 udp_recv
00000d46 w .text 00000000 I2C1_EV_IRQHandler
20000078 g O .data 00000004 xISRStackTop
00005d60 g F .text 0000002e IPConflictHandle
00008ae2 g F .text 00000140 pbuf_alloc
00005ce6 g F .text 00000038 SelIPARPSend
000044ae g F .text 0000005a vQueueUnregisterQueue
00006978 g F .text 00000052 WCHScokedIntHandle
00001356 g F .text 00000176 RCC_GetClocksFreq
00005290 g F .text 0000001c pvTaskIncrementMutexHeldCount
00000d46 w .text 00000000 DMA1_Channel6_IRQHandler
00000d46 w .text 00000000 UART4_IRQHandler
20000198 g O .bss 00000004 TCPVerifyConnCallback
00000d46 w .text 00000000 DMA2_Channel4_IRQHandler
20000090 g O .data 00000004 ip_addr_broadcast
00007bb0 g F .text 000000e6 ip_reass_tmr
000016a6 g F .text 0000008e USART_Init
00004f40 g F .text 000000ca xTaskCheckForTimeOut
2000006c g O .data 00000004 memp_sizes
000017a0 g F .text 00000020 WCHNET_GetMacAddr
00005032 g F .text 000000ae xTaskPriorityInherit
00000d46 w .text 00000000 TIM3_IRQHandler
00000d46 w .text 00000000 RCC_IRQHandler
20006958 g O .bss 00000020 DMATxDscrTab
00000516 g F .text 0000000c .hidden __riscv_save_3
0000bf66 g F .text 0000007e udp_connect
00000d46 w .text 00000000 TIM1_TRG_COM_IRQHandler
0000d3ac g O .text 00000010 ErrTable
00000d46 w .text 00000000 DMA1_Channel1_IRQHandler
00008970 g F .text 0000004e netif_set_addr
0000845c g F .text 00000182 dhcp_arp_reply
200001a0 g O .bss 00000004 tcpSendAckFlag
00000000 g .init 00000000 _start
00000d46 w .text 00000000 DMA2_Channel7_IRQHandler
00004952 g F .text 00000010 vTaskSuspendAll
20000020 g O .data 00000010 AHBPrescTable
000088a2 g F .text 00000020 memp_malloc
0000baac g F .text 000000d2 tcp_zero_window_probe
00002136 g F .text 0000020e qdx_port_tcp_connect
00001102 g F .text 00000020 FLASH_WaitForLastOperation
200040e8 g O .bss 00002800 g_TxNetBuffer_B_Mem
0000c57c w F .text 000000e0 prints
00005866 g F .text 00000066 DVP_Task
00003ba2 g F .text 00000020 uxListRemove
00000d46 w .text 00000000 EXTI15_10_IRQHandler
00001688 g F .text 00000012 TIM_ITConfig
2002db80 g O .bss 0000000c KeepLiveCfg
000035b2 g F .text 0000000e TcpLogic_RegisterDetectionCallback
00006352 g F .text 000001d2 WCHNET_SocketCreat
0000657c g F .text 00000052 WCHNET_ModifyRecvBuf
2002dbfc g O .bss 00000038 WCHNetIf
200001d8 g O .bss 00000004 tcp_bound_pcbs
000076c0 g F .text 00000024 htonl
000090f0 g F .text 0000002a tcp_seg_free
00004ce6 g F .text 0000009a vTaskSwitchContext
0000352a g F .text 0000007a TcpLogic_Start
20000160 g O .bss 00000004 Ready_Line_Ptr
00004dc8 g F .text 00000076 vTaskPlaceOnEventListRestricted
000069ca g F .text 0000009e LwipRemoveTcpPcb
000012f2 g F .text 00000004 GPIO_ResetBits
0000592c g F .text 00000006 __get_MCAUSE
00000d46 w .text 00000000 TIM7_IRQHandler
000098f8 g F .text 000000e8 tcp_connect
00008782 g F .text 000000d0 mem_malloc
00000d46 w .text 00000000 CAN2_TX_IRQHandler
20000000 g .dalign 00000000 _data_vma
00000de4 g F .text 00000016 DVP_INTCfg
00000d46 w .text 00000000 TIM5_IRQHandler
00001122 g F .text 0000010c FLASH_ProgramOptionByteData
000028e4 g F .text 00000138 Preprocess_CheckInternalTrigger2D
00000fba g F .text 00000050 ETH_DMARxDescChainInit
0000562c g F .text 00000076 xTimerGenericCommand
00000ea2 g F .text 00000058 ETH_ReadPHYRegister
00000642 g F .text 00000054 EXTI9_5_IRQHandler
0000afcc g F .text 00000448 tcp_enqueue
000098ca g F .text 0000002e tcp_eff_send_mss
000062f4 g F .text 0000005e WCHFindCorrectTCBPcb
00002100 g F .text 00000036 qdx_port_thread_create
000004ee g F .text 00000028 .hidden __riscv_save_10
00001eaa g F .text 00000074 ETH_LibInit
00005f70 g F .text 000000d2 WCHSocketTCPReceive
00000d46 w .text 00000000 ETH_WKUP_IRQHandler
0000348c g F .text 0000009e TcpLogic_Init
00000530 g F .text 00000016 .hidden __riscv_restore_4
00005932 g F .text 00000006 __get_MTVAL
00000526 g F .text 00000020 .hidden __riscv_restore_8
00005926 g F .text 00000006 __get_MEPC
000004fc g F .text 0000001a .hidden __riscv_save_6
00008de8 g F .text 0000001e raw_connect
00000d46 w .text 00000000 SPI2_IRQHandler
20000192 g O .bss 00000002 Arp_Entry_timeout
00000546 g F .text 000000a8 memset
00000526 g F .text 00000020 .hidden __riscv_restore_9
00000530 g F .text 00000016 .hidden __riscv_restore_7
00000926 g F .text 000001fe main
200000c8 g O .bss 00000004 LocalTime
20000068 g O .data 00000004 memp_num
00000d46 w .text 00000000 TIM10_BRK_IRQHandler
20000040 g O .data 00000004 GWIPAddr
000007a2 g F .text 00000018 mStopIfError
00000d46 w .text 00000000 TIM9_CC_IRQHandler
00003b74 g F .text 0000002e vListInsert
0000c304 g F .text 00000014 icmp_dest_unreach
00005dd2 g F .text 000000c4 SocketIPRAWReceive
0000916a g F .text 00000006 tcp_sent
00008a1e g F .text 00000008 netif_is_up
00000d46 w .text 00000000 DMA2_Channel5_IRQHandler
00005560 g F .text 00000058 xTimerCreateTimerTask
000076b2 g F .text 0000000e ntohs
00008eca g F .text 00000030 raw_new
20000180 g O .bss 00000004 IPFragTimer
00005d8e g F .text 00000002 NET_TCPError
000075be g F .text 00000070 ethernetif_input
20000000 g O .data 00000010 g_TxNetBuffer_A
00002054 g F .text 00000022 qdx_port_sock_disconnect_notify
00000d46 w .text 00000000 DMA1_Channel5_IRQHandler
00000d46 w .text 00000000 EXTI4_IRQHandler
00008e9a g F .text 00000030 raw_remove
00003db4 g F .text 0000006e xQueueGenericCreate
00000d46 w .text 00000000 USB_LP_CAN1_RX0_IRQHandler
20015908 g O .bss 00000200 DMA_LineBuf1
2002db6c g O .bss 00000014 DNSInf
20015708 g O .bss 00000200 DMA_LineBuf0
00006774 g F .text 000000be SocketUdpSend
0000bdb6 g F .text 0000009a udp_bind
0000963e g F .text 00000022 tcp_tmr
00007236 g F .text 00000118 etharp_query
00001ab8 g F .text 00000012 WCHNET_MainTask
000085de g F .text 00000018 lwip_init
000020a0 g F .text 0000000e qdx_port_get_tick_ms
00005c0c g F .text 00000036 WCHNET_Tx
0000734e g F .text 00000134 etharp_output
00000b24 g F .text 000000f8 SystemInit
00000d46 w .text 00000000 RNG_IRQHandler
0000579e g F .text 000000c8 DVP_Init
200068e8 g O .bss 00000070 DMARxDscrTab
200018e8 g O .bss 00002800 g_TxNetBuffer_A_Mem
0000c532 w F .text 0000004a printchar
00006832 g F .text 000000f0 SocketTcpSend
00004b18 g F .text 00000168 xTaskResumeAll
2000005c g O .data 00000004 uxTopUsedPriority
00000d46 w .text 00000000 USB_HP_CAN1_TX_IRQHandler
0000d414 g O .text 00000100 .hidden __clz_tab
00003b48 g F .text 0000000c xPortSetInterruptMask
000048c0 g F .text 00000092 vTaskStartScheduler
00008c7a g F .text 00000012 pbuf_clen
00000000 g .init 00000000 _sinit
200000c4 g O .bss 00000004 LastQueryPhyTime
00006084 g F .text 0000001a ErrorEncode
000020ca g F .text 0000000e qdx_port_mutex_create
00000300 g .text 00000000 xPortStartFirstTask
0000bf54 g F .text 00000012 udp_send
00000d46 w .text 00000000 DMA1_Channel3_IRQHandler
00002344 g F .text 0000004e qdx_port_tcp_send
00001c78 g F .text 00000018 ETH_Stop
000025d0 g F .text 00000314 Preprocess_Execute
00008e06 g F .text 00000006 raw_recv
200001a8 g O .bss 00000008 frame
0000d184 g O .text 00000010 MemNum
00000696 g F .text 00000008 ETH_IRQHandler
00000d46 w .text 00000000 TIM1_UP_IRQHandler
000091ce g F .text 000002ba tcp_slowtmr
00006bd4 g F .text 00000088 CloseTcpPCB
00005b5c g F .text 0000009a WCHNET_Rx
00001544 g F .text 0000001a RCC_ETH1GCLKConfig
20000044 g O .data 00000004 IPAddr
00000dfa g F .text 00000032 DVP_Mode
00000d46 w .text 00000000 WWDG_IRQHandler
00002a8c g F .text 0000009a qdx_build_frame
00000d46 w .text 00000000 USBHSWakeup_IRQHandler
200000c0 g O .bss 00000002 LastPhyStat
00002538 g F .text 00000098 Preprocess_Settings_Change
00000d46 w .text 00000000 DMA2_Channel11_IRQHandler
00001030 g F .text 00000032 ETH_Start
00000d46 w .text 00000000 Ecall_U_Mode_Handler
0000500a g F .text 0000000c vTaskMissedYield
00007508 g F .text 00000064 ethernetif_init
00000d46 w .text 00000000 DMA2_Channel6_IRQHandler
0000069e g F .text 00000022 TIM2_IRQHandler
20030000 g .stack 00000000 _eusrstack
00000516 g F .text 0000000c .hidden __riscv_save_2
00000200 g .text 00000000 SW_Handler
00004442 g F .text 0000006c vQueueAddToRegistry
200000a0 g O .bss 00000004 sys_tick_ms
00006524 g F .text 00000058 tcp_recved_socket
20009324 g O .bss 00000be8 MACTxBuf
0000496c g F .text 000001ac xTaskIncrementTick
200000d4 g O .bss 00000004 pDMATxSet
00006ae4 g F .text 0000000a WCHNET_GetPHYStatus
00005cc4 g F .text 00000022 IPCheckParaInit
00000d46 w .text 00000000 TIM1_BRK_IRQHandler
0000174a g F .text 00000008 USART_SendData
200001ec g O .bss 00000004 tcp_tw_pcbs
00000d46 w .text 00000000 DMA2_Channel10_IRQHandler
00000d46 w .text 00000000 EXTI1_IRQHandler
0000bb7e g F .text 00000238 udp_input
000020d8 g F .text 00000012 qdx_port_mutex_lock
000004fc g F .text 0000001a .hidden __riscv_save_5
20000178 g O .bss 00000004 DHCPfineTimer
20000188 g O .bss 00000004 TxTimer
00003cf0 g F .text 000000c4 xQueueGenericReset
00005760 g F .text 0000003e _write
200000a0 g .data 00000000 _edata
2002dc68 g .bss 00000000 _end
000076a4 g F .text 0000000e htons
2000017c g O .bss 00000004 DNSTimer
00001b5e g F .text 0000011a ETH_Configuration
20000170 g O .bss 00000004 ArpCheckTime
00001582 g F .text 000000ee TIM_TimeBaseInit
000076f0 g F .text 0000004c ip_route
00000d46 w .text 00000000 RTCAlarm_IRQHandler
000046bc g F .text 00000204 xTaskCreate
0000d514 g .dlalign 00000000 _data_lma
00000d46 w .text 00000000 TIM10_UP_IRQHandler
00000d46 w .text 00000000 TIM9_TRG_COM_IRQHandler
00000d46 w .text 00000000 UART7_IRQHandler
00008a26 g F .text 0000006e pbuf_header
000086b8 g F .text 000000ca mem_realloc
200001c4 g O .bss 00000004 netif_default
00009488 g F .text 00000072 tcp_pcb_remove
00000d46 w .text 00000000 USART2_IRQHandler
00000d46 w .text 00000000 UART6_IRQHandler
000017d0 g F .text 00000154 ETH_RGMIIPinInit
00008cb2 g F .text 00000014 pbuf_chain
20009f0c g O .bss 000004b0 Mem_ArpTable
00001a58 g F .text 00000060 WCHNET_QueryPhySta
2000016c g O .bss 00000004 ARPTimer
000096dc g F .text 0000009a tcp_abandon
20000064 g O .data 00000004 arp_table
00005e96 g F .text 000000da SocketUdpReceive
00000f60 g F .text 00000014 ETH_MACReceptionCmd
00006042 g F .text 00000042 LwipTcpConnectedCallBack
00000c1c g F .text 0000012a SystemCoreClockUpdate
2000e84c g O .bss 00000078 SocketInf
00008852 g F .text 00000050 memp_init
000095dc g F .text 00000062 tcp_fasttmr
000066b6 g F .text 000000be SocketIPRawSend
00002a58 g F .text 00000034 qdx_crc16_modbus
000062f0 g F .text 00000004 WCHNET_GetVer
00000d46 w .text 00000000 I2C2_ER_IRQHandler
00004c80 g F .text 00000066 vTaskDelay
2000019c g O .bss 00000001 phydata
00000d46 w .text 00000000 DMA1_Channel2_IRQHandler
00006f22 g F .text 0000005a etharp_ip_input
00000522 g F .text 00000024 .hidden __riscv_restore_12
00000d46 w .text 00000000 TIM8_BRK_IRQHandler
00005016 g F .text 0000001c xTaskGetSchedulerState
000051aa g F .text 000000e6 vTaskPriorityDisinheritAfterTimeout
00000d48 w .text 00000000 handle_reset
00000d46 w .text 00000000 CAN1_SCE_IRQHandler
20000218 g O .bss 000016d0 SocketRecvBuf
00001924 g F .text 00000134 ETH_PHYLink
00000d46 w .text 00000000 FLASH_IRQHandler
00000516 g F .text 0000000c .hidden __riscv_save_0
00006cbc g F .text 0000000e QueryPingEnable
00009138 g F .text 00000028 tcp_seg_copy
000007ba g F .text 0000006e TIM2_Init
00000d46 w .text 00000000 USART1_IRQHandler
00009176 g F .text 0000000a tcp_poll
00000400 g .text 00000000 pxPortInitialiseStack
00000d46 w .text 00000000 SPI3_IRQHandler
0000c01a g F .text 00000024 udp_new
00002a42 g F .text 00000016 qdx_read_u32_le
00000d46 w .text 00000000 I2C1_ER_IRQHandler
00002a38 g F .text 0000000a qdx_read_u16_le
2000007c g O .data 00000006 ethbroadcast
0000d3dc g O .text 0000000d tcp_backoff
000017c0 g F .text 00000010 WCHNET_TimeIsr
00003af0 g F .text 00000016 vPortEnterCritical
0000053a g F .text 0000000c .hidden __riscv_restore_1
2002db8c g O .bss 00000044 NetInf
00005d90 g F .text 0000003e LwipTCPSendCallBack
00006ce4 g F .text 0000000c LwipArpCheck
00006aee g F .text 00000076 WCHNET_SocketConnect
000010ea g F .text 00000018 FLASH_GetBank1Status
00001db6 g F .text 00000036 WCHNET_RecProcess
0000a4ca g F .text 00000a2e tcp_input
00003fca g F .text 0000002e xQueueCreateMutex
000099e0 g F .text 00000032 RemoveTimeWaiTCP
0000773c g F .text 0000029a ip_input
000006c0 g F .text 00000012 OnConfigUpdate
20000084 g O .data 00000006 ethzero
00000d46 w .text 00000000 USBWakeUp_IRQHandler
00001f96 g F .text 0000009c qdx_port_sock_recv_notify
000061ac g F .text 00000144 WCHNET_ConfigLIB
00006cca g F .text 0000001a LwipUnreachPort
20000191 g O .bss 00000001 ARP_Retry_Period
00000d46 w .text 00000000 DMA2_Channel3_IRQHandler
00005b0e g F .text 0000004e WCHNET_PhyStatus
00005938 g F .text 000001c2 WCHNET_PeriodicHandle
00000f74 g F .text 00000046 ETH_DMATxDescChainInit
Disassembly of section .init:
00000000 <_sinit>:
_start():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:17
.section .init,"ax",@progbits
.global _start
.align 1
_start:
j handle_reset
0: 5490006f j d48 <handle_reset>
Disassembly of section .vector:
00000004 <_vector_base>:
...
_vector_base():
c: 05ee slli a1,a1,0x1b
e: 0000 unimp
10: 05f0 addi a2,sp,716
12: 0000 unimp
14: 0000 unimp
16: 0000 unimp
18: 0d46 slli s10,s10,0x11
...
22: 0000 unimp
24: 0d46 slli s10,s10,0x11
26: 0000 unimp
28: 0d46 slli s10,s10,0x11
...
32: 0000 unimp
34: 3ab8 lbu a4,19(a3)
36: 0000 unimp
38: 0000 unimp
3a: 0000 unimp
3c: 0200 addi s0,sp,256
3e: 0000 unimp
40: 0000 unimp
42: 0000 unimp
44: 0d46 slli s10,s10,0x11
46: 0000 unimp
48: 0d46 slli s10,s10,0x11
4a: 0000 unimp
4c: 0d46 slli s10,s10,0x11
4e: 0000 unimp
50: 0d46 slli s10,s10,0x11
52: 0000 unimp
54: 0d46 slli s10,s10,0x11
56: 0000 unimp
58: 0d46 slli s10,s10,0x11
5a: 0000 unimp
5c: 0d46 slli s10,s10,0x11
5e: 0000 unimp
60: 0d46 slli s10,s10,0x11
62: 0000 unimp
64: 0d46 slli s10,s10,0x11
66: 0000 unimp
68: 0d46 slli s10,s10,0x11
6a: 0000 unimp
6c: 0d46 slli s10,s10,0x11
6e: 0000 unimp
70: 0d46 slli s10,s10,0x11
72: 0000 unimp
74: 0d46 slli s10,s10,0x11
76: 0000 unimp
78: 0d46 slli s10,s10,0x11
7a: 0000 unimp
7c: 0d46 slli s10,s10,0x11
7e: 0000 unimp
80: 0d46 slli s10,s10,0x11
82: 0000 unimp
84: 0d46 slli s10,s10,0x11
86: 0000 unimp
88: 0d46 slli s10,s10,0x11
8a: 0000 unimp
8c: 0d46 slli s10,s10,0x11
8e: 0000 unimp
90: 0d46 slli s10,s10,0x11
92: 0000 unimp
94: 0d46 slli s10,s10,0x11
96: 0000 unimp
98: 0d46 slli s10,s10,0x11
9a: 0000 unimp
9c: 0d46 slli s10,s10,0x11
9e: 0000 unimp
a0: 0642 slli a2,a2,0x10
a2: 0000 unimp
a4: 0d46 slli s10,s10,0x11
a6: 0000 unimp
a8: 0d46 slli s10,s10,0x11
aa: 0000 unimp
ac: 0d46 slli s10,s10,0x11
ae: 0000 unimp
b0: 0d46 slli s10,s10,0x11
b2: 0000 unimp
b4: 069e slli a3,a3,0x7
b6: 0000 unimp
b8: 0d46 slli s10,s10,0x11
ba: 0000 unimp
bc: 0d46 slli s10,s10,0x11
be: 0000 unimp
c0: 0d46 slli s10,s10,0x11
c2: 0000 unimp
c4: 0d46 slli s10,s10,0x11
c6: 0000 unimp
c8: 0d46 slli s10,s10,0x11
ca: 0000 unimp
cc: 0d46 slli s10,s10,0x11
ce: 0000 unimp
d0: 0d46 slli s10,s10,0x11
d2: 0000 unimp
d4: 0d46 slli s10,s10,0x11
d6: 0000 unimp
d8: 0d46 slli s10,s10,0x11
da: 0000 unimp
dc: 0d46 slli s10,s10,0x11
de: 0000 unimp
e0: 0d46 slli s10,s10,0x11
e2: 0000 unimp
e4: 0d46 slli s10,s10,0x11
e6: 0000 unimp
e8: 0d46 slli s10,s10,0x11
ea: 0000 unimp
ec: 0d46 slli s10,s10,0x11
ee: 0000 unimp
f0: 0d46 slli s10,s10,0x11
f2: 0000 unimp
f4: 0d46 slli s10,s10,0x11
f6: 0000 unimp
f8: 0d46 slli s10,s10,0x11
fa: 0000 unimp
fc: 0d46 slli s10,s10,0x11
fe: 0000 unimp
100: 0d46 slli s10,s10,0x11
102: 0000 unimp
104: 0000 unimp
106: 0000 unimp
108: 0d46 slli s10,s10,0x11
10a: 0000 unimp
10c: 0d46 slli s10,s10,0x11
10e: 0000 unimp
110: 0d46 slli s10,s10,0x11
112: 0000 unimp
114: 0d46 slli s10,s10,0x11
116: 0000 unimp
118: 0d46 slli s10,s10,0x11
11a: 0000 unimp
11c: 0d46 slli s10,s10,0x11
11e: 0000 unimp
120: 0d46 slli s10,s10,0x11
122: 0000 unimp
124: 0d46 slli s10,s10,0x11
126: 0000 unimp
128: 0d46 slli s10,s10,0x11
12a: 0000 unimp
12c: 0d46 slli s10,s10,0x11
12e: 0000 unimp
130: 0d46 slli s10,s10,0x11
132: 0000 unimp
134: 0d46 slli s10,s10,0x11
136: 0000 unimp
138: 0696 slli a3,a3,0x5
13a: 0000 unimp
13c: 0d46 slli s10,s10,0x11
13e: 0000 unimp
140: 0d46 slli s10,s10,0x11
142: 0000 unimp
144: 0d46 slli s10,s10,0x11
146: 0000 unimp
148: 0d46 slli s10,s10,0x11
14a: 0000 unimp
14c: 0d46 slli s10,s10,0x11
14e: 0000 unimp
150: 0d46 slli s10,s10,0x11
152: 0000 unimp
154: 0d46 slli s10,s10,0x11
156: 0000 unimp
158: 0d46 slli s10,s10,0x11
15a: 0000 unimp
15c: 58cc lw a1,52(s1)
15e: 0000 unimp
160: 0d46 slli s10,s10,0x11
162: 0000 unimp
164: 0d46 slli s10,s10,0x11
166: 0000 unimp
168: 0d46 slli s10,s10,0x11
16a: 0000 unimp
16c: 0d46 slli s10,s10,0x11
16e: 0000 unimp
170: 0d46 slli s10,s10,0x11
172: 0000 unimp
174: 0d46 slli s10,s10,0x11
176: 0000 unimp
178: 0d46 slli s10,s10,0x11
17a: 0000 unimp
17c: 0d46 slli s10,s10,0x11
17e: 0000 unimp
180: 0d46 slli s10,s10,0x11
182: 0000 unimp
184: 0d46 slli s10,s10,0x11
186: 0000 unimp
188: 0d46 slli s10,s10,0x11
18a: 0000 unimp
18c: 0d46 slli s10,s10,0x11
18e: 0000 unimp
190: 0d46 slli s10,s10,0x11
192: 0000 unimp
194: 0d46 slli s10,s10,0x11
196: 0000 unimp
198: 0d46 slli s10,s10,0x11
19a: 0000 unimp
19c: 0d46 slli s10,s10,0x11
19e: 0000 unimp
1a0: 0d46 slli s10,s10,0x11
...
Disassembly of section .text:
00000200 <SW_Handler>:
SW_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:118
.extern xISRStackTop
/*-----------------------------------------------------------*/
.align 8
.func
SW_Handler:
addi sp, sp, -portCONTEXT_SIZE
200: f8810113 addi sp,sp,-120
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:119
store_x x1, 1 * portWORD_SIZE( sp )
204: c206 sw ra,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:120
store_x x5, 2 * portWORD_SIZE( sp )
206: c416 sw t0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:121
store_x x6, 3 * portWORD_SIZE( sp )
208: c61a sw t1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:122
store_x x7, 4 * portWORD_SIZE( sp )
20a: c81e sw t2,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:123
store_x x8, 5 * portWORD_SIZE( sp )
20c: ca22 sw s0,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:124
store_x x9, 6 * portWORD_SIZE( sp )
20e: cc26 sw s1,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:125
store_x x10, 7 * portWORD_SIZE( sp )
210: ce2a sw a0,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:126
store_x x11, 8 * portWORD_SIZE( sp )
212: d02e sw a1,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:127
store_x x12, 9 * portWORD_SIZE( sp )
214: d232 sw a2,36(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:128
store_x x13, 10 * portWORD_SIZE( sp )
216: d436 sw a3,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:129
store_x x14, 11 * portWORD_SIZE( sp )
218: d63a sw a4,44(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:130
store_x x15, 12 * portWORD_SIZE( sp )
21a: d83e sw a5,48(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:131
store_x x16, 13 * portWORD_SIZE( sp )
21c: da42 sw a6,52(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:132
store_x x17, 14 * portWORD_SIZE( sp )
21e: dc46 sw a7,56(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:133
store_x x18, 15 * portWORD_SIZE( sp )
220: de4a sw s2,60(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:134
store_x x19, 16 * portWORD_SIZE( sp )
222: c0ce sw s3,64(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:135
store_x x20, 17 * portWORD_SIZE( sp )
224: c2d2 sw s4,68(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:136
store_x x21, 18 * portWORD_SIZE( sp )
226: c4d6 sw s5,72(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:137
store_x x22, 19 * portWORD_SIZE( sp )
228: c6da sw s6,76(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:138
store_x x23, 20 * portWORD_SIZE( sp )
22a: c8de sw s7,80(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:139
store_x x24, 21 * portWORD_SIZE( sp )
22c: cae2 sw s8,84(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:140
store_x x25, 22 * portWORD_SIZE( sp )
22e: cce6 sw s9,88(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:141
store_x x26, 23 * portWORD_SIZE( sp )
230: ceea sw s10,92(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:142
store_x x27, 24 * portWORD_SIZE( sp )
232: d0ee sw s11,96(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:143
store_x x28, 25 * portWORD_SIZE( sp )
234: d2f2 sw t3,100(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:144
store_x x29, 26 * portWORD_SIZE( sp )
236: d4f6 sw t4,104(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:145
store_x x30, 27 * portWORD_SIZE( sp )
238: d6fa sw t5,108(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:146
store_x x31, 28 * portWORD_SIZE( sp )
23a: d8fe sw t6,112(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:148
csrr t0, mstatus /* Required for MPIE bit. */
23c: 300022f3 csrr t0,mstatus
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:149
store_x t0, 29 * portWORD_SIZE( sp )
240: da96 sw t0,116(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:153
portasmSAVE_ADDITIONAL_REGISTERS /* Defined in freertos_risc_v_chip_specific_extensions.h to save any registers unique to the RISC-V implementation. */
load_x t0, pxCurrentTCB /* Load pxCurrentTCB. */
242: 20000297 auipc t0,0x20000
246: ec22a283 lw t0,-318(t0) # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:154
store_x sp, 0( t0 ) /* Write sp to first TCB member. */
24a: 0022a023 sw sp,0(t0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:156
csrr a1, mepc
24e: 341025f3 csrr a1,mepc
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:157
store_x a1, 0( sp ) /* Save updated exception return address. */
252: c02e sw a1,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:159
addi a1, x0, 0x20
254: 02000593 li a1,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:160
csrs 0x804, a1
258: 8045a073 csrs 0x804,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:162
load_x sp, xISRStackTop /* Switch to ISR stack before function call. */
25c: 8381a103 lw sp,-1992(gp) # 20000078 <xISRStackTop>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:163
jal vTaskSwitchContext
260: 287040ef jal ra,4ce6 <vTaskSwitchContext>
00000264 <processed_source>:
processed_source():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:166
processed_source:
load_x t1, pxCurrentTCB /* Load pxCurrentTCB. */
264: 20000317 auipc t1,0x20000
268: ea032303 lw t1,-352(t1) # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:167
load_x sp, 0( t1 ) /* Read sp from first TCB member. */
26c: 00032103 lw sp,0(t1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:170
/* Load mret with the address of the next instruction in the task to run next. */
load_x t0, 0( sp )
270: 4282 lw t0,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:171
csrw mepc, t0
272: 34129073 csrw mepc,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:176
portasmRESTORE_ADDITIONAL_REGISTERS /* Defined in freertos_risc_v_chip_specific_extensions.h to restore any registers unique to the RISC-V implementation. */
/* Load mstatus with the interrupt enable bits used by the task. */
load_x t0, 29 * portWORD_SIZE( sp )
276: 52d6 lw t0,116(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:177
csrw mstatus, t0 /* Required for MPIE bit. */
278: 30029073 csrw mstatus,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:179
load_x x1, 1 * portWORD_SIZE( sp )
27c: 4092 lw ra,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:180
load_x x5, 2 * portWORD_SIZE( sp ) /* t0 */
27e: 42a2 lw t0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:181
load_x x6, 3 * portWORD_SIZE( sp ) /* t1 */
280: 4332 lw t1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:182
load_x x7, 4 * portWORD_SIZE( sp ) /* t2 */
282: 43c2 lw t2,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:183
load_x x8, 5 * portWORD_SIZE( sp ) /* s0/fp */
284: 4452 lw s0,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:184
load_x x9, 6 * portWORD_SIZE( sp ) /* s1 */
286: 44e2 lw s1,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:185
load_x x10, 7 * portWORD_SIZE( sp ) /* a0 */
288: 4572 lw a0,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:186
load_x x11, 8 * portWORD_SIZE( sp ) /* a1 */
28a: 5582 lw a1,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:187
load_x x12, 9 * portWORD_SIZE( sp ) /* a2 */
28c: 5612 lw a2,36(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:188
load_x x13, 10 * portWORD_SIZE( sp ) /* a3 */
28e: 56a2 lw a3,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:189
load_x x14, 11 * portWORD_SIZE( sp ) /* a4 */
290: 5732 lw a4,44(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:190
load_x x15, 12 * portWORD_SIZE( sp ) /* a5 */
292: 57c2 lw a5,48(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:191
load_x x16, 13 * portWORD_SIZE( sp ) /* a6 */
294: 5852 lw a6,52(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:192
load_x x17, 14 * portWORD_SIZE( sp ) /* a7 */
296: 58e2 lw a7,56(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:193
load_x x18, 15 * portWORD_SIZE( sp ) /* s2 */
298: 5972 lw s2,60(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:194
load_x x19, 16 * portWORD_SIZE( sp ) /* s3 */
29a: 4986 lw s3,64(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:195
load_x x20, 17 * portWORD_SIZE( sp ) /* s4 */
29c: 4a16 lw s4,68(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:196
load_x x21, 18 * portWORD_SIZE( sp ) /* s5 */
29e: 4aa6 lw s5,72(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:197
load_x x22, 19 * portWORD_SIZE( sp ) /* s6 */
2a0: 4b36 lw s6,76(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:198
load_x x23, 20 * portWORD_SIZE( sp ) /* s7 */
2a2: 4bc6 lw s7,80(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:199
load_x x24, 21 * portWORD_SIZE( sp ) /* s8 */
2a4: 4c56 lw s8,84(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:200
load_x x25, 22 * portWORD_SIZE( sp ) /* s9 */
2a6: 4ce6 lw s9,88(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:201
load_x x26, 23 * portWORD_SIZE( sp ) /* s10 */
2a8: 4d76 lw s10,92(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:202
load_x x27, 24 * portWORD_SIZE( sp ) /* s11 */
2aa: 5d86 lw s11,96(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:203
load_x x28, 25 * portWORD_SIZE( sp ) /* t3 */
2ac: 5e16 lw t3,100(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:204
load_x x29, 26 * portWORD_SIZE( sp ) /* t4 */
2ae: 5ea6 lw t4,104(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:205
load_x x30, 27 * portWORD_SIZE( sp ) /* t5 */
2b0: 5f36 lw t5,108(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:206
load_x x31, 28 * portWORD_SIZE( sp ) /* t6 */
2b2: 5fc6 lw t6,112(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:207
addi sp, sp, portCONTEXT_SIZE
2b4: 07810113 addi sp,sp,120
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:209
mret
2b8: 30200073 mret
2bc: 00000013 nop
2c0: 00000013 nop
2c4: 00000013 nop
2c8: 00000013 nop
2cc: 00000013 nop
2d0: 00000013 nop
2d4: 00000013 nop
2d8: 00000013 nop
2dc: 00000013 nop
2e0: 00000013 nop
2e4: 00000013 nop
2e8: 00000013 nop
2ec: 00000013 nop
2f0: 00000013 nop
2f4: 00000013 nop
2f8: 00000013 nop
2fc: 00000013 nop
00000300 <xPortStartFirstTask>:
xPortStartFirstTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:224
When entering the interrupt function of C code, the compiler automatically presses the stack
into the task stack. We can only change the SP value used by the calling function after switching
the interrupt stack.This problem can be solved by modifying the interrupt to the assembly entry,
and there is no need to reserve 512 bytes. You only need to switch the interrupt stack at the
beginning of the interrupt function */
lw t0, xISRStackTop
300: 8381a283 lw t0,-1992(gp) # 20000078 <xISRStackTop>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:225
addi t0, t0, -512
304: e0028293 addi t0,t0,-512
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:226
csrw mscratch,t0
308: 34029073 csrw mscratch,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:228
load_x sp, pxCurrentTCB /* Load pxCurrentTCB. */
30c: 20000117 auipc sp,0x20000
310: df812103 lw sp,-520(sp) # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:229
load_x sp, 0( sp ) /* Read sp from first TCB member. */
314: 4102 lw sp,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:231
load_x x1, 0( sp ) /* Note for starting the scheduler the exception return address is used as the function return address. */
316: 4082 lw ra,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:235
portasmRESTORE_ADDITIONAL_REGISTERS /* Defined in freertos_risc_v_chip_specific_extensions.h to restore any registers unique to the RISC-V implementation. */
load_x x6, 3 * portWORD_SIZE( sp ) /* t1 */
318: 4332 lw t1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:236
load_x x7, 4 * portWORD_SIZE( sp ) /* t2 */
31a: 43c2 lw t2,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:237
load_x x8, 5 * portWORD_SIZE( sp ) /* s0/fp */
31c: 4452 lw s0,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:238
load_x x9, 6 * portWORD_SIZE( sp ) /* s1 */
31e: 44e2 lw s1,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:239
load_x x10, 7 * portWORD_SIZE( sp ) /* a0 */
320: 4572 lw a0,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:240
load_x x11, 8 * portWORD_SIZE( sp ) /* a1 */
322: 5582 lw a1,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:241
load_x x12, 9 * portWORD_SIZE( sp ) /* a2 */
324: 5612 lw a2,36(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:242
load_x x13, 10 * portWORD_SIZE( sp ) /* a3 */
326: 56a2 lw a3,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:243
load_x x14, 11 * portWORD_SIZE( sp ) /* a4 */
328: 5732 lw a4,44(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:244
load_x x15, 12 * portWORD_SIZE( sp ) /* a5 */
32a: 57c2 lw a5,48(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:245
load_x x16, 13 * portWORD_SIZE( sp ) /* a6 */
32c: 5852 lw a6,52(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:246
load_x x17, 14 * portWORD_SIZE( sp ) /* a7 */
32e: 58e2 lw a7,56(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:247
load_x x18, 15 * portWORD_SIZE( sp ) /* s2 */
330: 5972 lw s2,60(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:248
load_x x19, 16 * portWORD_SIZE( sp ) /* s3 */
332: 4986 lw s3,64(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:249
load_x x20, 17 * portWORD_SIZE( sp ) /* s4 */
334: 4a16 lw s4,68(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:250
load_x x21, 18 * portWORD_SIZE( sp ) /* s5 */
336: 4aa6 lw s5,72(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:251
load_x x22, 19 * portWORD_SIZE( sp ) /* s6 */
338: 4b36 lw s6,76(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:252
load_x x23, 20 * portWORD_SIZE( sp ) /* s7 */
33a: 4bc6 lw s7,80(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:253
load_x x24, 21 * portWORD_SIZE( sp ) /* s8 */
33c: 4c56 lw s8,84(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:254
load_x x25, 22 * portWORD_SIZE( sp ) /* s9 */
33e: 4ce6 lw s9,88(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:255
load_x x26, 23 * portWORD_SIZE( sp ) /* s10 */
340: 4d76 lw s10,92(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:256
load_x x27, 24 * portWORD_SIZE( sp ) /* s11 */
342: 5d86 lw s11,96(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:257
load_x x28, 25 * portWORD_SIZE( sp ) /* t3 */
344: 5e16 lw t3,100(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:258
load_x x29, 26 * portWORD_SIZE( sp ) /* t4 */
346: 5ea6 lw t4,104(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:259
load_x x30, 27 * portWORD_SIZE( sp ) /* t5 */
348: 5f36 lw t5,108(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:260
load_x x31, 28 * portWORD_SIZE( sp ) /* t6 */
34a: 5fc6 lw t6,112(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:262
load_x x5, 29 * portWORD_SIZE( sp ) /* Initial mstatus into x5 (t0) */
34c: 52d6 lw t0,116(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:263
addi x5, x5, 0x08 /* Set MIE bit so the first task starts with interrupts enabled - required as returns with ret not eret. */
34e: 02a1 addi t0,t0,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:264
csrrw x0, mstatus, x5 /* Interrupts enabled from here! */
350: 30029073 csrw mstatus,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:265
load_x x5, 2 * portWORD_SIZE( sp ) /* Initial x5 (t0) value. */
354: 42a2 lw t0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:267
addi sp, sp, portCONTEXT_SIZE
356: 07810113 addi sp,sp,120
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:268
ret
35a: 8082 ret
35c: 00000013 nop
360: 00000013 nop
364: 00000013 nop
368: 00000013 nop
36c: 00000013 nop
370: 00000013 nop
374: 00000013 nop
378: 00000013 nop
37c: 00000013 nop
380: 00000013 nop
384: 00000013 nop
388: 00000013 nop
38c: 00000013 nop
390: 00000013 nop
394: 00000013 nop
398: 00000013 nop
39c: 00000013 nop
3a0: 00000013 nop
3a4: 00000013 nop
3a8: 00000013 nop
3ac: 00000013 nop
3b0: 00000013 nop
3b4: 00000013 nop
3b8: 00000013 nop
3bc: 00000013 nop
3c0: 00000013 nop
3c4: 00000013 nop
3c8: 00000013 nop
3cc: 00000013 nop
3d0: 00000013 nop
3d4: 00000013 nop
3d8: 00000013 nop
3dc: 00000013 nop
3e0: 00000013 nop
3e4: 00000013 nop
3e8: 00000013 nop
3ec: 00000013 nop
3f0: 00000013 nop
3f4: 00000013 nop
3f8: 00000013 nop
3fc: 00000013 nop
00000400 <pxPortInitialiseStack>:
pxPortInitialiseStack():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:338
*/
.align 8
.func
pxPortInitialiseStack:
csrr t0, mstatus /* Obtain current mstatus value. */
400: 300022f3 csrr t0,mstatus
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:339
andi t0, t0, ~0x8 /* Ensure interrupts are disabled when the stack is restored within an ISR. Required when a task is created after the schedulre has been started, otherwise interrupts would be disabled anyway. */
404: ff72f293 andi t0,t0,-9
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:340
addi t1, x0, 0x788 /* Generate the value 0x7880, which are the MPIE, MPP and FS bits to set in mstatus. */
408: 78800313 li t1,1928
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:341
slli t1, t1, 4
40c: 0312 slli t1,t1,0x4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:342
or t0, t0, t1 /* Set MPIE and MPP bits in mstatus value. */
40e: 0062e2b3 or t0,t0,t1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:344
addi a0, a0, -portWORD_SIZE
412: 1571 addi a0,a0,-4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:345
store_x t0, 0(a0) /* mstatus onto the stack. */
414: 00552023 sw t0,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:346
addi a0, a0, -(22 * portWORD_SIZE) /* Space for registers x11-x31. */
418: fa850513 addi a0,a0,-88
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:347
store_x a2, 0(a0) /* Task parameters (pvParameters parameter) goes into register X10/a0 on the stack. */
41c: c110 sw a2,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:348
addi a0, a0, -(6 * portWORD_SIZE) /* Space for registers x5-x9. */
41e: 1521 addi a0,a0,-24
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:349
store_x x0, 0(a0) /* Return address onto the stack, could be portTASK_RETURN_ADDRESS */
420: 00052023 sw zero,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:350
addi t0, x0, portasmADDITIONAL_CONTEXT_SIZE /* The number of chip specific additional registers. */
424: 00000293 li t0,0
00000428 <chip_specific_stack_frame>:
chip_specific_stack_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:352
chip_specific_stack_frame: /* First add any chip specific registers to the stack frame being created. */
beq t0, x0, 1f /* No more chip specific registers to save. */
428: 00028763 beqz t0,436 <chip_specific_stack_frame+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:353
addi a0, a0, -portWORD_SIZE /* Make space for chip specific register. */
42c: 1571 addi a0,a0,-4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:354
store_x x0, 0(a0) /* Give the chip specific register an initial value of zero. */
42e: 00052023 sw zero,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:355
addi t0, t0, -1 /* Decrement the count of chip specific registers remaining. */
432: 12fd addi t0,t0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:356
j chip_specific_stack_frame /* Until no more chip specific registers. */
434: bfd5 j 428 <chip_specific_stack_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:358
1:
addi a0, a0, -portWORD_SIZE
436: 1571 addi a0,a0,-4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:359
store_x a1, 0(a0) /* mret value (pxCode parameter) onto the stack. */
438: c10c sw a1,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/portASM.S:360
ret
43a: 8082 ret
...
000004e6 <__riscv_save_12>:
__riscv_save_12():
4e6: 7139 addi sp,sp,-64
4e8: 4301 li t1,0
4ea: c66e sw s11,12(sp)
4ec: a019 j 4f2 <__riscv_save_10+0x4>
000004ee <__riscv_save_10>:
4ee: 7139 addi sp,sp,-64
4f0: 5341 li t1,-16
4f2: c86a sw s10,16(sp)
4f4: ca66 sw s9,20(sp)
4f6: cc62 sw s8,24(sp)
4f8: ce5e sw s7,28(sp)
4fa: a019 j 500 <__riscv_save_4+0x4>
000004fc <__riscv_save_4>:
4fc: 7139 addi sp,sp,-64
4fe: 5301 li t1,-32
500: d05a sw s6,32(sp)
502: d256 sw s5,36(sp)
504: d452 sw s4,40(sp)
506: d64e sw s3,44(sp)
508: d84a sw s2,48(sp)
50a: da26 sw s1,52(sp)
50c: dc22 sw s0,56(sp)
50e: de06 sw ra,60(sp)
510: 40610133 sub sp,sp,t1
514: 8282 jr t0
00000516 <__riscv_save_0>:
__riscv_save_1():
516: 1141 addi sp,sp,-16
518: c04a sw s2,0(sp)
51a: c226 sw s1,4(sp)
51c: c422 sw s0,8(sp)
51e: c606 sw ra,12(sp)
520: 8282 jr t0
00000522 <__riscv_restore_12>:
__riscv_restore_12():
522: 4db2 lw s11,12(sp)
524: 0141 addi sp,sp,16
00000526 <__riscv_restore_10>:
526: 4d02 lw s10,0(sp)
528: 4c92 lw s9,4(sp)
52a: 4c22 lw s8,8(sp)
52c: 4bb2 lw s7,12(sp)
52e: 0141 addi sp,sp,16
00000530 <__riscv_restore_4>:
530: 4b02 lw s6,0(sp)
532: 4a92 lw s5,4(sp)
534: 4a22 lw s4,8(sp)
536: 49b2 lw s3,12(sp)
538: 0141 addi sp,sp,16
0000053a <__riscv_restore_0>:
53a: 4902 lw s2,0(sp)
53c: 4492 lw s1,4(sp)
53e: 4422 lw s0,8(sp)
540: 40b2 lw ra,12(sp)
542: 0141 addi sp,sp,16
544: 8082 ret
00000546 <memset>:
memset():
546: 433d li t1,15
548: 872a mv a4,a0
54a: 02c37363 bgeu t1,a2,570 <memset+0x2a>
54e: 00f77793 andi a5,a4,15
552: efbd bnez a5,5d0 <memset+0x8a>
554: e5ad bnez a1,5be <memset+0x78>
556: ff067693 andi a3,a2,-16
55a: 8a3d andi a2,a2,15
55c: 96ba add a3,a3,a4
55e: c30c sw a1,0(a4)
560: c34c sw a1,4(a4)
562: c70c sw a1,8(a4)
564: c74c sw a1,12(a4)
566: 0741 addi a4,a4,16
568: fed76be3 bltu a4,a3,55e <memset+0x18>
56c: e211 bnez a2,570 <memset+0x2a>
56e: 8082 ret
570: 40c306b3 sub a3,t1,a2
574: 068a slli a3,a3,0x2
576: 00000297 auipc t0,0x0
57a: 9696 add a3,a3,t0
57c: 00a68067 jr 10(a3)
580: 00b70723 sb a1,14(a4)
584: 00b706a3 sb a1,13(a4)
588: 00b70623 sb a1,12(a4)
58c: 00b705a3 sb a1,11(a4)
590: 00b70523 sb a1,10(a4)
594: 00b704a3 sb a1,9(a4)
598: 00b70423 sb a1,8(a4)
59c: 00b703a3 sb a1,7(a4)
5a0: 00b70323 sb a1,6(a4)
5a4: 00b702a3 sb a1,5(a4)
5a8: 00b70223 sb a1,4(a4)
5ac: 00b701a3 sb a1,3(a4)
5b0: 00b70123 sb a1,2(a4)
5b4: 00b700a3 sb a1,1(a4)
5b8: 00b70023 sb a1,0(a4)
5bc: 8082 ret
5be: 0ff5f593 andi a1,a1,255
5c2: 00859693 slli a3,a1,0x8
5c6: 8dd5 or a1,a1,a3
5c8: 01059693 slli a3,a1,0x10
5cc: 8dd5 or a1,a1,a3
5ce: b761 j 556 <memset+0x10>
5d0: 00279693 slli a3,a5,0x2
5d4: 00000297 auipc t0,0x0
5d8: 9696 add a3,a3,t0
5da: 8286 mv t0,ra
5dc: fa8680e7 jalr -88(a3)
5e0: 8096 mv ra,t0
5e2: 17c1 addi a5,a5,-16
5e4: 8f1d sub a4,a4,a5
5e6: 963e add a2,a2,a5
5e8: f8c374e3 bgeu t1,a2,570 <memset+0x2a>
5ec: b7a5 j 554 <memset+0xe>
000005ee <NMI_Handler>:
NMI_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:38 (discriminator 1)
*/
void NMI_Handler(void)
{
while (1)
{
}
5ee: a001 j 5ee <NMI_Handler>
000005f0 <HardFault_Handler>:
HardFault_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:50
*
* @return none
*/
void HardFault_Handler(void)
{
printf("HardFault_Handler\r\n");
5f0: 0000d537 lui a0,0xd
5f4: fd450513 addi a0,a0,-44 # cfd4 <memmove+0x52>
5f8: 4a20c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:51
printf("mepc :%08x\r\n", __get_MEPC());
5fc: 32a050ef jal ra,5926 <__get_MEPC>
600: 85aa mv a1,a0
602: 0000d537 lui a0,0xd
606: fe850513 addi a0,a0,-24 # cfe8 <memmove+0x66>
60a: 46c0c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:52
printf("mcause:%08x\r\n", __get_MCAUSE());
60e: 31e050ef jal ra,592c <__get_MCAUSE>
612: 85aa mv a1,a0
614: 0000d537 lui a0,0xd
618: ff850513 addi a0,a0,-8 # cff8 <memmove+0x76>
61c: 45a0c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:53
printf("mtval :%08x\r\n", __get_MTVAL());
620: 312050ef jal ra,5932 <__get_MTVAL>
624: 85aa mv a1,a0
626: 0000d537 lui a0,0xd
62a: 00850513 addi a0,a0,8 # d008 <memmove+0x86>
62e: 4480c0ef jal ra,ca76 <printf>
NVIC_SystemReset():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:382
*
* @return none
*/
__attribute__( ( always_inline ) ) RV_STATIC_INLINE void NVIC_SystemReset(void)
{
NVIC->CFGR = NVIC_KEY3|(1<<7);
632: beef07b7 lui a5,0xbeef0
636: e000e737 lui a4,0xe000e
63a: 08078793 addi a5,a5,128 # beef0080 <__freertos_irq_stack_top+0x9eec0080>
63e: c73c sw a5,72(a4)
HardFault_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:55 (discriminator 1)
NVIC_SystemReset();
while(1);
640: a001 j 640 <HardFault_Handler+0x50>
00000642 <EXTI9_5_IRQHandler>:
EXTI9_5_IRQHandler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:66
* @brief This function handles GPIO exception.
*
* @return none
*/
void EXTI9_5_IRQHandler(void)
{
642: 7139 addi sp,sp,-64
644: de06 sw ra,60(sp)
646: dc16 sw t0,56(sp)
648: da1a sw t1,52(sp)
64a: d81e sw t2,48(sp)
64c: d62a sw a0,44(sp)
64e: d42e sw a1,40(sp)
650: d232 sw a2,36(sp)
652: d036 sw a3,32(sp)
654: ce3a sw a4,28(sp)
656: cc3e sw a5,24(sp)
658: ca42 sw a6,20(sp)
65a: c846 sw a7,16(sp)
65c: c672 sw t3,12(sp)
65e: c476 sw t4,8(sp)
660: c27a sw t5,4(sp)
662: c07e sw t6,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:67
ETH_PHYLink( );
664: 2c0010ef jal ra,1924 <ETH_PHYLink>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:68
EXTI_ClearITPendingBit(EXTI_Line7); /* Clear Flag */
668: 08000513 li a0,128
66c: 243000ef jal ra,10ae <EXTI_ClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:69
}
670: 50f2 lw ra,60(sp)
672: 52e2 lw t0,56(sp)
674: 5352 lw t1,52(sp)
676: 53c2 lw t2,48(sp)
678: 5532 lw a0,44(sp)
67a: 55a2 lw a1,40(sp)
67c: 5612 lw a2,36(sp)
67e: 5682 lw a3,32(sp)
680: 4772 lw a4,28(sp)
682: 47e2 lw a5,24(sp)
684: 4852 lw a6,20(sp)
686: 48c2 lw a7,16(sp)
688: 4e32 lw t3,12(sp)
68a: 4ea2 lw t4,8(sp)
68c: 4f12 lw t5,4(sp)
68e: 4f82 lw t6,0(sp)
690: 6121 addi sp,sp,64
692: 30200073 mret
00000696 <ETH_IRQHandler>:
ETH_IRQHandler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:80
*
* @return none
*/
void ETH_IRQHandler(void)
{
WCHNET_ETHIsr();
696: 756010ef jal ra,1dec <WCHNET_ETHIsr>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:81
}
69a: 30200073 mret
0000069e <TIM2_IRQHandler>:
TIM2_IRQHandler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:92
*
* @return none
*/
void TIM2_IRQHandler(void)
{
sys_tick_ms += WCHNETTIMERPERIOD;
69e: 200007b7 lui a5,0x20000
6a2: 0a078793 addi a5,a5,160 # 200000a0 <_edata>
6a6: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:93
WCHNET_TimeIsr(WCHNETTIMERPERIOD);
6a8: 4529 li a0,10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:92
sys_tick_ms += WCHNETTIMERPERIOD;
6aa: 0729 addi a4,a4,10
6ac: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:93
WCHNET_TimeIsr(WCHNETTIMERPERIOD);
6ae: 112010ef jal ra,17c0 <WCHNET_TimeIsr>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:94
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
6b2: 4585 li a1,1
6b4: 40000537 lui a0,0x40000
6b8: 7e3000ef jal ra,169a <TIM_ClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/ch32v30x_it.c:95
}
6bc: 30200073 mret
000006c0 <OnConfigUpdate>:
OnConfigUpdate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:33
};
void OnConfigUpdate(const ConfigCommon_t *common, const Config2D_t *cfg2d, const Config1D_t *cfg1d)
{
6c0: e57ff2ef jal t0,516 <__riscv_save_0>
6c4: 87ae mv a5,a1
6c6: 85b2 mv a1,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:34
Preprocess_Settings_Change(cfg2d, cfg1d, common);
6c8: 862a mv a2,a0
6ca: 853e mv a0,a5
6cc: 66d010ef jal ra,2538 <Preprocess_Settings_Change>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:35
}
6d0: b5ad j 53a <__riscv_restore_0>
000006d2 <task_business_entry>:
task_business_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:219
/* ============================================================
* RTOS Task: Business logic (DVP + preprocess + send)
* ============================================================ */
static void task_business_entry(void *pvParameters)
{
6d2: e2bff2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:232
if (Frame_Ready_Flag)
{
Frame_Ready_Flag = 0;
RawImageBuffer_t raw_img;
raw_img.pData = (uint16_t *)FrameBuffer;
6d6: 20016437 lui s0,0x20016
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:240
raw_img.FrameNumber = Ready_Frame_Count;
if (Preprocess_CheckInternalTrigger2D(&raw_img) == 1)
{
PreprocessResult_t meta;
TcpTxBuffer_t *tx_buf = use_buffer_A ? &g_TxNetBuffer_A : &g_TxNetBuffer_B;
6da: 200004b7 lui s1,0x20000
6de: 20000937 lui s2,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:219
{
6e2: 7179 addi sp,sp,-48
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:232
raw_img.pData = (uint16_t *)FrameBuffer;
6e4: b0840413 addi s0,s0,-1272 # 20015b08 <FrameBuffer>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:240
TcpTxBuffer_t *tx_buf = use_buffer_A ? &g_TxNetBuffer_A : &g_TxNetBuffer_B;
6e8: 00048493 mv s1,s1
6ec: 01090913 addi s2,s2,16 # 20000010 <g_TxNetBuffer_B>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:225
DVP_Task();
6f0: 176050ef jal ra,5866 <DVP_Task>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:227
if (Frame_Ready_Flag)
6f4: 9171c783 lbu a5,-1769(gp) # 20000157 <Frame_Ready_Flag>
6f8: 0ff7f793 andi a5,a5,255
6fc: cba9 beqz a5,74e <task_business_entry+0x7c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:233
raw_img.Width = SENSOR_WIDTH;
6fe: 00c007b7 lui a5,0xc00
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:229
Frame_Ready_Flag = 0;
702: 90018ba3 sb zero,-1769(gp) # 20000157 <Frame_Ready_Flag>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:233
raw_img.Width = SENSOR_WIDTH;
706: 10078793 addi a5,a5,256 # c00100 <_data_lma+0xbf2bec>
70a: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:235
raw_img.FrameNumber = Ready_Frame_Count;
70c: 91c1a783 lw a5,-1764(gp) # 2000015c <Ready_Frame_Count>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:237
if (Preprocess_CheckInternalTrigger2D(&raw_img) == 1)
710: 0028 addi a0,sp,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:232
raw_img.pData = (uint16_t *)FrameBuffer;
712: c422 sw s0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:235
raw_img.FrameNumber = Ready_Frame_Count;
714: c83e sw a5,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:237
if (Preprocess_CheckInternalTrigger2D(&raw_img) == 1)
716: 1ce020ef jal ra,28e4 <Preprocess_CheckInternalTrigger2D>
71a: 4785 li a5,1
71c: fcf51ae3 bne a0,a5,6f0 <task_business_entry+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:240
TcpTxBuffer_t *tx_buf = use_buffer_A ? &g_TxNetBuffer_A : &g_TxNetBuffer_B;
720: 80c1c703 lbu a4,-2036(gp) # 2000004c <use_buffer_A.6728>
724: 89a6 mv s3,s1
726: 80c18793 addi a5,gp,-2036 # 2000004c <use_buffer_A.6728>
72a: e311 bnez a4,72e <task_business_entry+0x5c>
72c: 89ca mv s3,s2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:241 (discriminator 4)
use_buffer_A = !use_buffer_A;
72e: 00173713 seqz a4,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:243 (discriminator 4)
if (Preprocess_Execute(&raw_img, tx_buf, &meta) == 0)
732: 0850 addi a2,sp,20
734: 85ce mv a1,s3
736: 0028 addi a0,sp,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:241 (discriminator 4)
use_buffer_A = !use_buffer_A;
738: a398 sb a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:243 (discriminator 4)
if (Preprocess_Execute(&raw_img, tx_buf, &meta) == 0)
73a: 697010ef jal ra,25d0 <Preprocess_Execute>
73e: f94d bnez a0,6f0 <task_business_entry+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:245
{
TcpLogic_BuildAndSendTemperatureFrame(tx_buf, &meta, 1, 1);
740: 4685 li a3,1
742: 4605 li a2,1
744: 084c addi a1,sp,20
746: 854e mv a0,s3
748: 679020ef jal ra,35c0 <TcpLogic_BuildAndSendTemperatureFrame>
74c: b755 j 6f0 <task_business_entry+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:251
}
}
}
else
{
vTaskDelay(pdMS_TO_TICKS(2));
74e: 4505 li a0,1
750: 530040ef jal ra,4c80 <vTaskDelay>
754: bf71 j 6f0 <task_business_entry+0x1e>
00000756 <ng_timer_callback>:
ng_timer_callback():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:46
{
756: dc1ff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:48
GPIO_ResetBits(NG_GPIO_PORT, NG_GPIO_PIN);
75a: 40011537 lui a0,0x40011
75e: 10000593 li a1,256
762: 80050513 addi a0,a0,-2048 # 40010800 <__freertos_irq_stack_top+0x1ffe0800>
766: 38d000ef jal ra,12f2 <GPIO_ResetBits>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:49
}
76a: bbc1 j 53a <__riscv_restore_0>
0000076c <OnDetectionResult>:
OnDetectionResult():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:69
if (resultStatus == 0) {
76c: e995 bnez a1,7a0 <OnDetectionResult+0x34>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:66
{
76e: da9ff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:70
GPIO_SetBits(NG_GPIO_PORT, NG_GPIO_PIN);
772: 40011537 lui a0,0x40011
776: 10000593 li a1,256
77a: 80050513 addi a0,a0,-2048 # 40010800 <__freertos_irq_stack_top+0x1ffe0800>
77e: 371000ef jal ra,12ee <GPIO_SetBits>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:71
if (g_ng_timer)
782: 200007b7 lui a5,0x20000
786: 0ac7a403 lw s0,172(a5) # 200000ac <g_ng_timer>
78a: c811 beqz s0,79e <OnDetectionResult+0x32>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:72
xTimerStart(g_ng_timer, 0);
78c: 1d6040ef jal ra,4962 <xTaskGetTickCount>
790: 862a mv a2,a0
792: 4701 li a4,0
794: 4681 li a3,0
796: 4585 li a1,1
798: 8522 mv a0,s0
79a: 693040ef jal ra,562c <xTimerGenericCommand>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:74
}
79e: bb71 j 53a <__riscv_restore_0>
7a0: 8082 ret
000007a2 <mStopIfError>:
mStopIfError():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:126
if (iError == WCHNET_ERR_SUCCESS) return;
7a2: c919 beqz a0,7b8 <mStopIfError+0x16>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:125
{
7a4: d73ff2ef jal t0,516 <__riscv_save_0>
7a8: 85aa mv a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:127
printf("Error: %02X\r\n", (u16)iError);
7aa: 0000d537 lui a0,0xd
7ae: 0b050513 addi a0,a0,176 # d0b0 <memmove+0x12e>
7b2: 2c40c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:128
}
7b6: b351 j 53a <__riscv_restore_0>
7b8: 8082 ret
000007ba <TIM2_Init>:
TIM2_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:131
{
7ba: d5dff2ef jal t0,516 <__riscv_save_0>
7be: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:133
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
7c0: 4585 li a1,1
7c2: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:132
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure = {0};
7c4: c202 sw zero,4(sp)
7c6: c402 sw zero,8(sp)
7c8: 00011623 sh zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:133
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
7cc: 53d000ef jal ra,1508 <RCC_APB1PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:135
TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock / 1000000 - 1;
7d0: 8101a783 lw a5,-2032(gp) # 20000050 <SystemCoreClock>
7d4: 000f4737 lui a4,0xf4
7d8: 24070713 addi a4,a4,576 # f4240 <_data_lma+0xe6d2c>
7dc: 02e7d7b3 divu a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:138
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
7e0: 004c addi a1,sp,4
7e2: 40000537 lui a0,0x40000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:137
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
7e6: 00011323 sh zero,6(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:135
TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock / 1000000 - 1;
7ea: 17fd addi a5,a5,-1
7ec: 827c sh a5,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:134
TIM_TimeBaseStructure.TIM_Period = WCHNETTIMERPERIOD * 1000 - 1;
7ee: 6789 lui a5,0x2
7f0: 70f78793 addi a5,a5,1807 # 270f <Preprocess_Execute+0x13f>
7f4: c43e sw a5,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:138
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
7f6: 58d000ef jal ra,1582 <TIM_TimeBaseInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:139
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
7fa: 4605 li a2,1
7fc: 4585 li a1,1
7fe: 40000537 lui a0,0x40000
802: 687000ef jal ra,1688 <TIM_ITConfig>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:140
TIM_Cmd(TIM2, ENABLE);
806: 4585 li a1,1
808: 40000537 lui a0,0x40000
80c: 665000ef jal ra,1670 <TIM_Cmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:141
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
810: 4585 li a1,1
812: 40000537 lui a0,0x40000
816: 685000ef jal ra,169a <TIM_ClearITPendingBit>
NVIC_EnableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:170
NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
81a: e000e7b7 lui a5,0xe000e
81e: 6705 lui a4,0x1
820: 10e7a223 sw a4,260(a5) # e000e104 <__freertos_irq_stack_top+0xbffde104>
TIM2_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:143
}
824: 0141 addi sp,sp,16
826: bb11 j 53a <__riscv_restore_0>
00000828 <WCHNET_HandleSockInt>:
WCHNET_HandleSockInt():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:157
{
828: cefff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:158
if (intstat & SINT_STAT_RECV)
82c: 0045f793 andi a5,a1,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:157
{
830: 842a mv s0,a0
832: 84ae mv s1,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:158
if (intstat & SINT_STAT_RECV)
834: c399 beqz a5,83a <WCHNET_HandleSockInt+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:160
qdx_port_sock_recv_notify(socketid);
836: 760010ef jal ra,1f96 <qdx_port_sock_recv_notify>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:162
if (intstat & SINT_STAT_CONNECT)
83a: 0084f793 andi a5,s1,8
83e: cb85 beqz a5,86e <WCHNET_HandleSockInt+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:164
WCHNET_ModifyRecvBuf(socketid, (u32)SocketRecvBuf[socketid], RECE_BUF_LEN);
840: 6605 lui a2,0x1
842: b6860613 addi a2,a2,-1176 # b68 <SystemInit+0x44>
846: 02c405b3 mul a1,s0,a2
84a: 200007b7 lui a5,0x20000
84e: 21878793 addi a5,a5,536 # 20000218 <SocketRecvBuf>
852: 8522 mv a0,s0
854: 95be add a1,a1,a5
856: 527050ef jal ra,657c <WCHNET_ModifyRecvBuf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:165
qdx_port_sock_connect_notify(socketid);
85a: 8522 mv a0,s0
85c: 7d6010ef jal ra,2032 <qdx_port_sock_connect_notify>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:166
printf("TCP Connected, socket %d\r\n", socketid);
860: 0000d537 lui a0,0xd
864: 85a2 mv a1,s0
866: 05850513 addi a0,a0,88 # d058 <memmove+0xd6>
86a: 20c0c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:168
if (intstat & SINT_STAT_DISCONNECT)
86e: 0104f793 andi a5,s1,16
872: cb99 beqz a5,888 <WCHNET_HandleSockInt+0x60>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:170
qdx_port_sock_disconnect_notify(socketid);
874: 8522 mv a0,s0
876: 7de010ef jal ra,2054 <qdx_port_sock_disconnect_notify>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:171
printf("TCP Disconnected, socket %d\r\n", socketid);
87a: 0000d537 lui a0,0xd
87e: 85a2 mv a1,s0
880: 07450513 addi a0,a0,116 # d074 <memmove+0xf2>
884: 1f20c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:173
if (intstat & SINT_STAT_TIM_OUT)
888: 0404f493 andi s1,s1,64
88c: c899 beqz s1,8a2 <WCHNET_HandleSockInt+0x7a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:175
qdx_port_sock_disconnect_notify(socketid);
88e: 8522 mv a0,s0
890: 7c4010ef jal ra,2054 <qdx_port_sock_disconnect_notify>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:176
printf("TCP Timeout, socket %d\r\n", socketid);
894: 0000d537 lui a0,0xd
898: 85a2 mv a1,s0
89a: 09450513 addi a0,a0,148 # d094 <memmove+0x112>
89e: 1d80c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:178
}
8a2: b961 j 53a <__riscv_restore_0>
000008a4 <WCHNET_HandleGlobalInt>:
WCHNET_HandleGlobalInt():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:181
{
8a4: c73ff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:185
intstat = WCHNET_GetGlobalInt();
8a8: 1fe060ef jal ra,6aa6 <WCHNET_GetGlobalInt>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:186
if (intstat & GINT_STAT_UNREACH) printf("GINT_STAT_UNREACH\r\n");
8ac: 00157793 andi a5,a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:185
intstat = WCHNET_GetGlobalInt();
8b0: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:186
if (intstat & GINT_STAT_UNREACH) printf("GINT_STAT_UNREACH\r\n");
8b2: c799 beqz a5,8c0 <WCHNET_HandleGlobalInt+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:186 (discriminator 1)
8b4: 0000d537 lui a0,0xd
8b8: 01850513 addi a0,a0,24 # d018 <memmove+0x96>
8bc: 1de0c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:187
if (intstat & GINT_STAT_IP_CONFLI) printf("GINT_STAT_IP_CONFLI\r\n");
8c0: 00247793 andi a5,s0,2
8c4: c799 beqz a5,8d2 <WCHNET_HandleGlobalInt+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:187 (discriminator 1)
8c6: 0000d537 lui a0,0xd
8ca: 02c50513 addi a0,a0,44 # d02c <memmove+0xaa>
8ce: 1cc0c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:188
if (intstat & GINT_STAT_PHY_CHANGE) {
8d2: 00447793 andi a5,s0,4
8d6: cb99 beqz a5,8ec <WCHNET_HandleGlobalInt+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:189
if (WCHNET_GetPHYStatus() & PHY_Linked_Status)
8d8: 20c060ef jal ra,6ae4 <WCHNET_GetPHYStatus>
8dc: 8911 andi a0,a0,4
8de: c519 beqz a0,8ec <WCHNET_HandleGlobalInt+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:190
printf("PHY Link Success\r\n");
8e0: 0000d537 lui a0,0xd
8e4: 04450513 addi a0,a0,68 # d044 <memmove+0xc2>
8e8: 1b20c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:192
if (intstat & GINT_STAT_SOCKET) {
8ec: 8841 andi s0,s0,16
8ee: cc19 beqz s0,90c <WCHNET_HandleGlobalInt+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:194 (discriminator 1)
socketint = WCHNET_GetSocketInt(i);
8f0: 4501 li a0,0
8f2: 1c8060ef jal ra,6aba <WCHNET_GetSocketInt>
8f6: 85aa mv a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:195 (discriminator 1)
if (socketint) WCHNET_HandleSockInt(i, socketint);
8f8: c119 beqz a0,8fe <WCHNET_HandleGlobalInt+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:195
8fa: 4501 li a0,0
8fc: 3735 jal 828 <WCHNET_HandleSockInt>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:194
socketint = WCHNET_GetSocketInt(i);
8fe: 4505 li a0,1
900: 1ba060ef jal ra,6aba <WCHNET_GetSocketInt>
904: 85aa mv a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:195
if (socketint) WCHNET_HandleSockInt(i, socketint);
906: c119 beqz a0,90c <WCHNET_HandleGlobalInt+0x68>
908: 4505 li a0,1
90a: 3f39 jal 828 <WCHNET_HandleSockInt>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:198
}
90c: b13d j 53a <__riscv_restore_0>
0000090e <task_wchnet_entry>:
task_wchnet_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:204
{
90e: c09ff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:208
WCHNET_MainTask();
912: 1a6010ef jal ra,1ab8 <WCHNET_MainTask>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:209
if (WCHNET_QueryGlobalInt())
916: 152060ef jal ra,6a68 <WCHNET_QueryGlobalInt>
91a: c111 beqz a0,91e <task_wchnet_entry+0x10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:210
WCHNET_HandleGlobalInt();
91c: 3761 jal 8a4 <WCHNET_HandleGlobalInt>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:211
vTaskDelay(pdMS_TO_TICKS(5));
91e: 4509 li a0,2
920: 360040ef jal ra,4c80 <vTaskDelay>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:208
WCHNET_MainTask();
924: b7fd j 912 <task_wchnet_entry+0x4>
00000926 <main>:
main():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:257
}
}
}
int main(void)
{
926: bd7ff2ef jal t0,4fc <__riscv_save_4>
92a: 1101 addi sp,sp,-32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:259
u8 i;
SystemCoreClockUpdate();
92c: 2cc5 jal c1c <SystemCoreClockUpdate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:260
Delay_Init();
92e: 575040ef jal ra,56a2 <Delay_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:261
USART_Printf_Init(115200);
932: 6571 lui a0,0x1c
934: 20050513 addi a0,a0,512 # 1c200 <_data_lma+0xecec>
938: 5c7040ef jal ra,56fe <USART_Printf_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:262
printf("TCPClient Test\r\nSystemClk:%d\r\n", SystemCoreClock);
93c: 8101a583 lw a1,-2032(gp) # 20000050 <SystemCoreClock>
940: 0000d537 lui a0,0xd
944: 0c050513 addi a0,a0,192 # d0c0 <memmove+0x13e>
948: 12e0c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:263
printf("UserByte: %02x\r\n", FLASH_GetUserOptionByte() & 0xFF);
94c: 794000ef jal ra,10e0 <FLASH_GetUserOptionByte>
950: 0ff57593 andi a1,a0,255
954: 0000d537 lui a0,0xd
958: 0e050513 addi a0,a0,224 # d0e0 <memmove+0x15e>
95c: 11a0c0ef jal ra,ca76 <printf>
Config_Flash_SRAM():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:92
uint8_t UserByte = FLASH_GetUserOptionByte() & 0xFF;
960: 780000ef jal ra,10e0 <FLASH_GetUserOptionByte>
964: 0ff57513 andi a0,a0,255
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:93
uint8_t newByte = UserByte & ~0xE0; /* clear bits [7:5] */
968: 01f57593 andi a1,a0,31
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:99
case FLASH_128_SRAM_192: newByte |= 0xC0; break; /* 110 */
96c: 0c05e593 ori a1,a1,192
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:104
if (newByte == UserByte) return; /* already configured */
970: c62e sw a1,12(sp)
972: 02b50b63 beq a0,a1,9a8 <main+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:106
FLASH_Unlock();
976: 742000ef jal ra,10b8 <FLASH_Unlock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:107
FLASH_ProgramOptionByteData(0x1FFFF802, newByte);
97a: 45b2 lw a1,12(sp)
97c: 20000537 lui a0,0x20000
980: 80250513 addi a0,a0,-2046 # 1ffff802 <_data_lma+0x1fff22ee>
984: 79e000ef jal ra,1122 <FLASH_ProgramOptionByteData>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:108
FLASH_Lock();
988: 74a000ef jal ra,10d2 <FLASH_Lock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:109
printf("Flash/SRAM config changed to %d, resetting...\r\n", mode);
98c: 0000d537 lui a0,0xd
990: 458d li a1,3
992: 0f450513 addi a0,a0,244 # d0f4 <memmove+0x172>
996: 0e00c0ef jal ra,ca76 <printf>
NVIC_SystemReset():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:382
NVIC->CFGR = NVIC_KEY3|(1<<7);
99a: beef07b7 lui a5,0xbeef0
99e: e000e737 lui a4,0xe000e
9a2: 08078793 addi a5,a5,128 # beef0080 <__freertos_irq_stack_top+0x9eec0080>
9a6: c73c sw a5,72(a4)
main():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:265
Config_Flash_SRAM(FLASH_128_SRAM_192);
printf("net version:%x\n", WCHNET_GetVer());
9a8: 149050ef jal ra,62f0 <WCHNET_GetVer>
9ac: 85aa mv a1,a0
9ae: 0000d537 lui a0,0xd
9b2: 12450513 addi a0,a0,292 # d124 <memmove+0x1a2>
9b6: 0c00c0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:266
if (WCHNET_LIB_VER != WCHNET_GetVer()) printf("version error.\n");
9ba: 137050ef jal ra,62f0 <WCHNET_GetVer>
9be: 47ed li a5,27
9c0: 00f50863 beq a0,a5,9d0 <main+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:266 (discriminator 1)
9c4: 0000d537 lui a0,0xd
9c8: 13450513 addi a0,a0,308 # d134 <memmove+0x1b2>
9cc: 0ce0c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:268
WCHNET_GetMacAddr(MACAddr);
9d0: 20000437 lui s0,0x20000
9d4: 0a440513 addi a0,s0,164 # 200000a4 <MACAddr>
9d8: 5c9000ef jal ra,17a0 <WCHNET_GetMacAddr>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:269
printf("mac addr:");
9dc: 0000d537 lui a0,0xd
9e0: 14450513 addi a0,a0,324 # d144 <memmove+0x1c2>
9e4: 0920c0ef jal ra,ca76 <printf>
9e8: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:270
for (i = 0; i < 6; i++) printf("%x ", MACAddr[i]);
9ea: 0a440a13 addi s4,s0,164
9ee: 0000d9b7 lui s3,0xd
9f2: 4919 li s2,6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:270 (discriminator 3)
9f4: 009a07b3 add a5,s4,s1
9f8: 238c lbu a1,0(a5)
9fa: 15098513 addi a0,s3,336 # d150 <memmove+0x1ce>
9fe: 0485 addi s1,s1,1
a00: 0760c0ef jal ra,ca76 <printf>
a04: ff2498e3 bne s1,s2,9f4 <main+0xce>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:271
printf("\n");
a08: 4529 li a0,10
a0a: 0da0c0ef jal ra,cae4 <putchar>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:273
DVP_Init();
a0e: 591040ef jal ra,579e <DVP_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:274
TIM2_Init();
a12: 3365 jal 7ba <TIM2_Init>
NG_GPIO_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:54
RCC_APB2PeriphClockCmd(NG_GPIO_CLK, ENABLE);
a14: 4585 li a1,1
a16: 4511 li a0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:53
GPIO_InitTypeDef gpio = {0};
a18: ca02 sw zero,20(sp)
a1a: cc02 sw zero,24(sp)
a1c: ce02 sw zero,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:54
RCC_APB2PeriphClockCmd(NG_GPIO_CLK, ENABLE);
a1e: 2cd000ef jal ra,14ea <RCC_APB2PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:55
gpio.GPIO_Pin = NG_GPIO_PIN;
a22: 10000793 li a5,256
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:58
GPIO_Init(NG_GPIO_PORT, &gpio);
a26: 400114b7 lui s1,0x40011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:55
gpio.GPIO_Pin = NG_GPIO_PIN;
a2a: 82fc sh a5,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:56
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
a2c: 47c1 li a5,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:58
GPIO_Init(NG_GPIO_PORT, &gpio);
a2e: 80048513 addi a0,s1,-2048 # 40010800 <__freertos_irq_stack_top+0x1ffe0800>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:56
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
a32: ce3e sw a5,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:58
GPIO_Init(NG_GPIO_PORT, &gpio);
a34: 084c addi a1,sp,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:57
gpio.GPIO_Speed = GPIO_Speed_2MHz;
a36: 4789 li a5,2
a38: cc3e sw a5,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:58
GPIO_Init(NG_GPIO_PORT, &gpio);
a3a: 7f4000ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:59
GPIO_ResetBits(NG_GPIO_PORT, NG_GPIO_PIN);
a3e: 80048513 addi a0,s1,-2048
a42: 10000593 li a1,256
a46: 0ad000ef jal ra,12f2 <GPIO_ResetBits>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:61
g_ng_timer = xTimerCreate("ng", pdMS_TO_TICKS(NG_PULSE_MS),
a4a: 00000737 lui a4,0x0
a4e: 0000d537 lui a0,0xd
a52: 75670713 addi a4,a4,1878 # 756 <ng_timer_callback>
a56: 4681 li a3,0
a58: 4601 li a2,0
a5a: 06400593 li a1,100
a5e: 15450513 addi a0,a0,340 # d154 <memmove+0x1d2>
a62: 357040ef jal ra,55b8 <xTimerCreate>
a66: 200007b7 lui a5,0x20000
a6a: 0aa7a623 sw a0,172(a5) # 200000ac <g_ng_timer>
main():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:277
NG_GPIO_Init();
i = ETH_LibInit(IPAddr, GWIPAddr, IPMask, MACAddr);
a6e: 200005b7 lui a1,0x20000
a72: 0a440693 addi a3,s0,164
a76: 80818613 addi a2,gp,-2040 # 20000048 <IPMask>
a7a: 04058593 addi a1,a1,64 # 20000040 <GWIPAddr>
a7e: 80418513 addi a0,gp,-2044 # 20000044 <IPAddr>
a82: 428010ef jal ra,1eaa <ETH_LibInit>
a86: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:278
mStopIfError(i);
a88: 3b29 jal 7a2 <mStopIfError>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:279
if (i == WCHNET_ERR_SUCCESS) printf("WCHNET_LibInit Success\r\n");
a8a: e499 bnez s1,a98 <main+0x172>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:279 (discriminator 1)
a8c: 0000d537 lui a0,0xd
a90: 15850513 addi a0,a0,344 # d158 <memmove+0x1d6>
a94: 0060c0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:283
#if KEEPALIVE_ENABLE
{
struct _KEEP_CFG cfg = {20000, 15000, 9};
a98: 65b5 lui a1,0xd
a9a: 4631 li a2,12
a9c: fc858593 addi a1,a1,-56 # cfc8 <memmove+0x46>
aa0: 0848 addi a0,sp,20
aa2: 42e0c0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:284
WCHNET_ConfigKeepLive(&cfg);
aa6: 0848 addi a0,sp,20
aa8: 6ee050ef jal ra,6196 <WCHNET_ConfigKeepLive>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:288
}
#endif
qdx_port_init();
aac: 5ca010ef jal ra,2076 <qdx_port_init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:290
Preprocess_Init(SENSOR_WIDTH, SENSOR_HEIGHT);
ab0: 0c000593 li a1,192
ab4: 10000513 li a0,256
ab8: 219010ef jal ra,24d0 <Preprocess_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:291
TcpLogic_Init(MACAddr, NULL);
abc: 4581 li a1,0
abe: 0a440513 addi a0,s0,164
ac2: 1cb020ef jal ra,348c <TcpLogic_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:292
TcpLogic_RegisterConfigCallback(OnConfigUpdate);
ac6: 00000537 lui a0,0x0
aca: 6c050513 addi a0,a0,1728 # 6c0 <OnConfigUpdate>
ace: 2d7020ef jal ra,35a4 <TcpLogic_RegisterConfigCallback>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:293
TcpLogic_RegisterDetectionCallback(OnDetectionResult);
ad2: 00000537 lui a0,0x0
ad6: 76c50513 addi a0,a0,1900 # 76c <OnDetectionResult>
ada: 2d9020ef jal ra,35b2 <TcpLogic_RegisterDetectionCallback>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:294
TcpLogic_Start();
ade: 24d020ef jal ra,352a <TcpLogic_Start>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:296
xTaskCreate(task_wchnet_entry, "wchnet", 1024, NULL, 6, NULL);
ae2: 0000d5b7 lui a1,0xd
ae6: 00001537 lui a0,0x1
aea: 4781 li a5,0
aec: 4719 li a4,6
aee: 4681 li a3,0
af0: 40000613 li a2,1024
af4: 17058593 addi a1,a1,368 # d170 <memmove+0x1ee>
af8: 90e50513 addi a0,a0,-1778 # 90e <task_wchnet_entry>
afc: 3c1030ef jal ra,46bc <xTaskCreate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:297
xTaskCreate(task_business_entry, "business", 1024, NULL, 5, NULL);
b00: 0000d5b7 lui a1,0xd
b04: 00000537 lui a0,0x0
b08: 4781 li a5,0
b0a: 4715 li a4,5
b0c: 4681 li a3,0
b0e: 40000613 li a2,1024
b12: 17858593 addi a1,a1,376 # d178 <memmove+0x1f6>
b16: 6d250513 addi a0,a0,1746 # 6d2 <task_business_entry>
b1a: 3a3030ef jal ra,46bc <xTaskCreate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:298
vTaskStartScheduler();
b1e: 5a3030ef jal ra,48c0 <vTaskStartScheduler>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/main.c:301 (discriminator 1)
/* Should never reach here */
while (1) {}
b22: a001 j b22 <main+0x1fc>
00000b24 <SystemInit>:
SystemInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:113
*
* @return none
*/
void SystemInit (void)
{
RCC->CTLR |= (uint32_t)0x00000001;
b24: 400217b7 lui a5,0x40021
b28: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:115
RCC->CFGR0 &= (uint32_t)0xF0FF0000;
b2a: f0ff06b7 lui a3,0xf0ff0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:112
{
b2e: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:113
RCC->CTLR |= (uint32_t)0x00000001;
b30: 00176713 ori a4,a4,1
b34: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:115
RCC->CFGR0 &= (uint32_t)0xF0FF0000;
b36: 43d8 lw a4,4(a5)
SetSysClockTo144_HSE():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:713
RCC->CTLR |= ((uint32_t)RCC_HSEON);
/* Wait till HSE is ready and if Time out is reached exit */
do
{
HSEStatus = RCC->CTLR & RCC_HSERDY;
b38: 00020637 lui a2,0x20
SystemInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:115
RCC->CFGR0 &= (uint32_t)0xF0FF0000;
b3c: 8f75 and a4,a4,a3
b3e: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:117
RCC->CTLR &= (uint32_t)0xFEF6FFFF;
b40: 4398 lw a4,0(a5)
b42: fef706b7 lui a3,0xfef70
b46: 16fd addi a3,a3,-1
b48: 8f75 and a4,a4,a3
b4a: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:118
RCC->CTLR &= (uint32_t)0xFFFBFFFF;
b4c: 4398 lw a4,0(a5)
b4e: fffc06b7 lui a3,0xfffc0
b52: 16fd addi a3,a3,-1
b54: 8f75 and a4,a4,a3
b56: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:119
RCC->CFGR0 &= (uint32_t)0xFF00FFFF;
b58: 43d8 lw a4,4(a5)
b5a: ff0106b7 lui a3,0xff010
b5e: 16fd addi a3,a3,-1
b60: 8f75 and a4,a4,a3
b62: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:122
RCC->CTLR &= (uint32_t)0xEBFFFFFF;
b64: 4398 lw a4,0(a5)
b66: ec0006b7 lui a3,0xec000
b6a: 16fd addi a3,a3,-1
b6c: 8f75 and a4,a4,a3
b6e: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:123
RCC->INTR = 0x00FF0000;
b70: 00ff0737 lui a4,0xff0
b74: c798 sw a4,8(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:124
RCC->CFGR2 = 0x00000000;
b76: 0207a623 sw zero,44(a5) # 4002102c <__freertos_irq_stack_top+0x1fff102c>
SetSysClockTo144_HSE():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:706
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
b7a: c402 sw zero,8(sp)
b7c: c602 sw zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:708
RCC->CTLR |= ((uint32_t)RCC_HSEON);
b7e: 4398 lw a4,0(a5)
b80: 66c1 lui a3,0x10
b82: 8f55 or a4,a4,a3
b84: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:713
HSEStatus = RCC->CTLR & RCC_HSERDY;
b86: 400216b7 lui a3,0x40021
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:715
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
b8a: 6705 lui a4,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:713
HSEStatus = RCC->CTLR & RCC_HSERDY;
b8c: 429c lw a5,0(a3)
b8e: 8ff1 and a5,a5,a2
b90: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:714
StartUpCounter++;
b92: 47a2 lw a5,8(sp)
b94: 0785 addi a5,a5,1
b96: c43e sw a5,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:715
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
b98: 47b2 lw a5,12(sp)
b9a: e781 bnez a5,ba2 <SystemInit+0x7e>
b9c: 47a2 lw a5,8(sp)
b9e: fee797e3 bne a5,a4,b8c <SystemInit+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:717
if ((RCC->CTLR & RCC_HSERDY) != RESET)
ba2: 400217b7 lui a5,0x40021
ba6: 439c lw a5,0(a5)
ba8: 00e79713 slli a4,a5,0xe
bac: 06075663 bgez a4,c18 <SystemInit+0xf4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:719
{
HSEStatus = (uint32_t)0x01;
bb0: 4785 li a5,1
bb2: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:726
else
{
HSEStatus = (uint32_t)0x00;
}
if (HSEStatus == (uint32_t)0x01)
bb4: 4732 lw a4,12(sp)
bb6: 4785 li a5,1
bb8: 04f71e63 bne a4,a5,c14 <SystemInit+0xf0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:729
{
/* HCLK = SYSCLK */
RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
bbc: 400217b7 lui a5,0x40021
bc0: 43d8 lw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:736
RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1;
/* PCLK1 = HCLK */
RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2;
/* PLL configuration: PLLCLK = HSE * 18 = 144 MHz */
RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE |
bc2: ffc106b7 lui a3,0xffc10
bc6: 16fd addi a3,a3,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:729
RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV1;
bc8: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:731
RCC->CFGR0 |= (uint32_t)RCC_PPRE2_DIV1;
bca: 43d8 lw a4,4(a5)
bcc: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:733
RCC->CFGR0 |= (uint32_t)RCC_PPRE1_DIV2;
bce: 43d8 lw a4,4(a5)
bd0: 40076713 ori a4,a4,1024
bd4: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:736
RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_PLLSRC | RCC_PLLXTPRE |
bd6: 43d8 lw a4,4(a5)
bd8: 8f75 and a4,a4,a3
bda: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:742
RCC_PLLMULL));
#ifdef CH32V30x_D8
RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18);
#else
RCC->CFGR0 |= (uint32_t)(RCC_PLLSRC_HSE | RCC_PLLXTPRE_HSE | RCC_PLLMULL18_EXTEN);
bdc: 43d8 lw a4,4(a5)
bde: 66c1 lui a3,0x10
be0: 8f55 or a4,a4,a3
be2: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:746
#endif
/* Enable PLL */
RCC->CTLR |= RCC_PLLON;
be4: 4398 lw a4,0(a5)
be6: 010006b7 lui a3,0x1000
bea: 8f55 or a4,a4,a3
bec: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:748
/* Wait till PLL is ready */
while((RCC->CTLR & RCC_PLLRDY) == 0)
bee: 4398 lw a4,0(a5)
bf0: 00671693 slli a3,a4,0x6
bf4: fe06dde3 bgez a3,bee <SystemInit+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:752
{
}
/* Select PLL as system clock source */
RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
bf8: 43d8 lw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:755
RCC->CFGR0 |= (uint32_t)RCC_SW_PLL;
/* Wait till PLL is used as system clock source */
while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08)
bfa: 400216b7 lui a3,0x40021
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:752
RCC->CFGR0 &= (uint32_t)((uint32_t)~(RCC_SW));
bfe: 9b71 andi a4,a4,-4
c00: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:753
RCC->CFGR0 |= (uint32_t)RCC_SW_PLL;
c02: 43d8 lw a4,4(a5)
c04: 00276713 ori a4,a4,2
c08: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:755
while ((RCC->CFGR0 & (uint32_t)RCC_SWS) != (uint32_t)0x08)
c0a: 4721 li a4,8
c0c: 42dc lw a5,4(a3)
c0e: 8bb1 andi a5,a5,12
c10: fee79ee3 bne a5,a4,c0c <SystemInit+0xe8>
SystemInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:129
}
c14: 0141 addi sp,sp,16
c16: 8082 ret
SetSysClockTo144_HSE():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:723
HSEStatus = (uint32_t)0x00;
c18: c602 sw zero,12(sp)
c1a: bf69 j bb4 <SystemInit+0x90>
00000c1c <SystemCoreClockUpdate>:
SystemCoreClockUpdate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:148
tmp = RCC->CFGR0 & RCC_SWS;
c1c: 400216b7 lui a3,0x40021
c20: 42d8 lw a4,4(a3)
c22: 4611 li a2,4
c24: 8b31 andi a4,a4,12
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:150
switch (tmp)
c26: 81018793 addi a5,gp,-2032 # 20000050 <SystemCoreClock>
c2a: 00c70563 beq a4,a2,c34 <SystemCoreClockUpdate+0x18>
c2e: 4621 li a2,8
c30: 02c70863 beq a4,a2,c60 <SystemCoreClockUpdate+0x44>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:153
SystemCoreClock = HSI_VALUE;
c34: 007a1737 lui a4,0x7a1
c38: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:215 (discriminator 1)
if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2);
c3c: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:223
tmp = AHBPrescTable[((RCC->CFGR0 & RCC_HPRE) >> 4)];
c3e: 40021737 lui a4,0x40021
c42: 4358 lw a4,4(a4)
c44: 8311 srli a4,a4,0x4
c46: 00f77693 andi a3,a4,15
c4a: 20000737 lui a4,0x20000
c4e: 02070713 addi a4,a4,32 # 20000020 <AHBPrescTable>
c52: 9736 add a4,a4,a3
c54: 2314 lbu a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:224
SystemCoreClock >>= tmp;
c56: 4398 lw a4,0(a5)
c58: 00d75733 srl a4,a4,a3
c5c: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:225
}
c5e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:159
pllmull = RCC->CFGR0 & RCC_PLLMULL;
c60: 42d8 lw a4,4(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:160
pllsource = RCC->CFGR0 & RCC_PLLSRC;
c62: 42d4 lw a3,4(a3)
c64: 6641 lui a2,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:161
pllmull = ( pllmull >> 18) + 2;
c66: 8349 srli a4,a4,0x12
c68: 8b3d andi a4,a4,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:160
pllsource = RCC->CFGR0 & RCC_PLLSRC;
c6a: 8ef1 and a3,a3,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:166
if(pllmull == 2) pllmull = 18;
c6c: 00270613 addi a2,a4,2
c70: cf15 beqz a4,cac <SystemCoreClockUpdate+0x90>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:167
if(pllmull == 15){
c72: 473d li a4,15
c74: 02e60f63 beq a2,a4,cb2 <SystemCoreClockUpdate+0x96>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:171
if(pllmull == 16) pllmull = 15;
c78: 4741 li a4,16
c7a: 02e60f63 beq a2,a4,cb8 <SystemCoreClockUpdate+0x9c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:172
if(pllmull == 17) pllmull = 16;
c7e: 4745 li a4,17
c80: 4581 li a1,0
c82: 00e61363 bne a2,a4,c88 <SystemCoreClockUpdate+0x6c>
c86: 4641 li a2,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:175
if (pllsource == 0x00)
c88: e2a1 bnez a3,cc8 <SystemCoreClockUpdate+0xac>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:177
if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE) SystemCoreClock = HSI_VALUE * pllmull;
c8a: 40024737 lui a4,0x40024
c8e: 80072703 lw a4,-2048(a4) # 40023800 <__freertos_irq_stack_top+0x1fff3800>
c92: 8b41 andi a4,a4,16
c94: c70d beqz a4,cbe <SystemCoreClockUpdate+0xa2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:177 (discriminator 1)
c96: 007a1737 lui a4,0x7a1
c9a: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:210
SystemCoreClock = SystemCoreClock * pllmull;
c9e: 02c70633 mul a2,a4,a2
ca2: c390 sw a2,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:215
if(Pll_6_5 == 1) SystemCoreClock = (SystemCoreClock / 2);
ca4: ddc9 beqz a1,c3e <SystemCoreClockUpdate+0x22>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:215 (discriminator 1)
ca6: 4398 lw a4,0(a5)
ca8: 8305 srli a4,a4,0x1
caa: bf49 j c3c <SystemCoreClockUpdate+0x20>
cac: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:166
if(pllmull == 2) pllmull = 18;
cae: 4649 li a2,18
cb0: bfe1 j c88 <SystemCoreClockUpdate+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:169
Pll_6_5 = 1;
cb2: 4585 li a1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:168
pllmull = 13; /* *6.5 */
cb4: 4635 li a2,13
cb6: bfc9 j c88 <SystemCoreClockUpdate+0x6c>
cb8: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:171
if(pllmull == 16) pllmull = 15;
cba: 463d li a2,15
cbc: b7f1 j c88 <SystemCoreClockUpdate+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:178
else SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
cbe: 003d1737 lui a4,0x3d1
cc2: 90070713 addi a4,a4,-1792 # 3d0900 <_data_lma+0x3c33ec>
cc6: bfe1 j c9e <SystemCoreClockUpdate+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:194
if(RCC->CFGR2 & (1<<16)){ /* PLL2 */
cc8: 40021537 lui a0,0x40021
ccc: 5558 lw a4,44(a0)
cce: 00f71693 slli a3,a4,0xf
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:195
SystemCoreClock = HSE_VALUE/(((RCC->CFGR2 & 0xF0)>>4) + 1); /* PREDIV2 */
cd2: 5558 lw a4,44(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:194
if(RCC->CFGR2 & (1<<16)){ /* PLL2 */
cd4: 0406df63 bgez a3,d32 <SystemCoreClockUpdate+0x116>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:195
SystemCoreClock = HSE_VALUE/(((RCC->CFGR2 & 0xF0)>>4) + 1); /* PREDIV2 */
cd8: 8311 srli a4,a4,0x4
cda: 8b3d andi a4,a4,15
cdc: 00170693 addi a3,a4,1
ce0: 007a1737 lui a4,0x7a1
ce4: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
ce8: 02d75733 divu a4,a4,a3
cec: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:197
Pll2mull = (uint8_t)((RCC->CFGR2 & 0xF00)>>8);
cee: 5554 lw a3,44(a0)
cf0: 82a1 srli a3,a3,0x8
cf2: 8abd andi a3,a3,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:199
if(Pll2mull == 0) SystemCoreClock = (SystemCoreClock * 5)>>1;
cf4: e28d bnez a3,d16 <SystemCoreClockUpdate+0xfa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:199 (discriminator 1)
cf6: 4695 li a3,5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:200 (discriminator 1)
else if(Pll2mull == 1) SystemCoreClock = (SystemCoreClock * 25)>>1;
cf8: 02d70733 mul a4,a4,a3
cfc: 8305 srli a4,a4,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:202
else SystemCoreClock = SystemCoreClock * (Pll2mull + 2);
cfe: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:204
SystemCoreClock = SystemCoreClock/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
d00: 40021737 lui a4,0x40021
d04: 5758 lw a4,44(a4)
d06: 4394 lw a3,0(a5)
d08: 8b3d andi a4,a4,15
d0a: 0705 addi a4,a4,1
d0c: 02e6d733 divu a4,a3,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:207
SystemCoreClock = HSE_VALUE/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
d10: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:210
SystemCoreClock = SystemCoreClock * pllmull;
d12: 4398 lw a4,0(a5)
d14: b769 j c9e <SystemCoreClockUpdate+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:200
else if(Pll2mull == 1) SystemCoreClock = (SystemCoreClock * 25)>>1;
d16: 4505 li a0,1
d18: 00a69463 bne a3,a0,d20 <SystemCoreClockUpdate+0x104>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:200 (discriminator 1)
d1c: 46e5 li a3,25
d1e: bfe9 j cf8 <SystemCoreClockUpdate+0xdc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:201
else if(Pll2mull == 15) SystemCoreClock = SystemCoreClock * 20;
d20: 453d li a0,15
d22: 00a69663 bne a3,a0,d2e <SystemCoreClockUpdate+0x112>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:201 (discriminator 1)
d26: 46d1 li a3,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:202
else SystemCoreClock = SystemCoreClock * (Pll2mull + 2);
d28: 02e68733 mul a4,a3,a4
d2c: bfc9 j cfe <SystemCoreClockUpdate+0xe2>
d2e: 0689 addi a3,a3,2
d30: bfe5 j d28 <SystemCoreClockUpdate+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../User/system_ch32v30x.c:207
SystemCoreClock = HSE_VALUE/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
d32: 8b3d andi a4,a4,15
d34: 00170693 addi a3,a4,1 # 40021001 <__freertos_irq_stack_top+0x1fff1001>
d38: 007a1737 lui a4,0x7a1
d3c: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
d40: 02d75733 divu a4,a4,a3
d44: b7f1 j d10 <SystemCoreClockUpdate+0xf4>
00000d46 <ADC1_2_IRQHandler>:
EXTI2_IRQHandler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:321
DMA2_Channel8_IRQHandler:
DMA2_Channel9_IRQHandler:
DMA2_Channel10_IRQHandler:
DMA2_Channel11_IRQHandler:
1:
j 1b
d46: a001 j d46 <ADC1_2_IRQHandler>
00000d48 <handle_reset>:
handle_reset():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:329
.weak handle_reset
.align 1
handle_reset:
.option push
.option norelax
la gp, __global_pointer$
d48: 20000197 auipc gp,0x20000
d4c: af818193 addi gp,gp,-1288 # 20000840 <__global_pointer$>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:332
.option pop
la sp, _eusrstack
d50: 2002f117 auipc sp,0x2002f
d54: 2b010113 addi sp,sp,688 # 20030000 <__freertos_irq_stack_top>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:335
/* Load data section from flash to RAM */
la a0, _data_lma
d58: 0000c517 auipc a0,0xc
d5c: 7bc50513 addi a0,a0,1980 # d514 <_data_lma>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:336
la a1, _data_vma
d60: 1ffff597 auipc a1,0x1ffff
d64: 2a058593 addi a1,a1,672 # 20000000 <_data_vma>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:337
la a2, _edata
d68: 86018613 addi a2,gp,-1952 # 200000a0 <_edata>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:338
bgeu a1, a2, 2f
d6c: 00c5fa63 bgeu a1,a2,d80 <handle_reset+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:340
1:
lw t0, (a0)
d70: 00052283 lw t0,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:341
sw t0, (a1)
d74: 0055a023 sw t0,0(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:342
addi a0, a0, 4
d78: 0511 addi a0,a0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:343
addi a1, a1, 4
d7a: 0591 addi a1,a1,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:344
bltu a1, a2, 1b
d7c: fec5eae3 bltu a1,a2,d70 <handle_reset+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:347
2:
/* Clear bss section */
la a0, _sbss
d80: 1ffff517 auipc a0,0x1ffff
d84: 32050513 addi a0,a0,800 # 200000a0 <_edata>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:348
la a1, _ebss
d88: 2002d597 auipc a1,0x2002d
d8c: ee058593 addi a1,a1,-288 # 2002dc68 <_ebss>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:349
bgeu a0, a1, 2f
d90: 00b57763 bgeu a0,a1,d9e <handle_reset+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:351
1:
sw zero, (a0)
d94: 00052023 sw zero,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:352
addi a0, a0, 4
d98: 0511 addi a0,a0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:353
bltu a0, a1, 1b
d9a: feb56de3 bltu a0,a1,d94 <handle_reset+0x4c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:356
2:
/* Configure pipelining and instruction prediction */
li t0, 0x1f
d9e: 42fd li t0,31
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:357
csrw 0xbc0, t0
da0: bc029073 csrw 0xbc0,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:359
/* Enable interrupt nesting and hardware stack */
li t0, 0x0b
da4: 42ad li t0,11
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:360
csrw 0x804, t0
da6: 80429073 csrw 0x804,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:362
/* Enable floating point and global interrupt, configure privileged mode */
li t0, 0x6088
daa: 000062b7 lui t0,0x6
dae: 08828293 addi t0,t0,136 # 6088 <ErrorEncode+0x4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:363
csrw mstatus, t0
db2: 30029073 csrw mstatus,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:365
/* Configure the interrupt vector table recognition mode and entry address mode */
la t0, _vector_base
db6: fffff297 auipc t0,0xfffff
dba: 24e28293 addi t0,t0,590 # 4 <_einit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:366
ori t0, t0, 3
dbe: 0032e293 ori t0,t0,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:367
csrw mtvec, t0
dc2: 30529073 csrw mtvec,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:369
jal SystemInit
dc6: d5fff0ef jal ra,b24 <SystemInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:370
la t0, main
dca: 00000297 auipc t0,0x0
dce: b5c28293 addi t0,t0,-1188 # 926 <main>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:371
csrw mepc, t0
dd2: 34129073 csrw mepc,t0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Startup/startup_ch32v30x_D8C.S:372
mret
dd6: 30200073 mret
00000dda <DBGMCU_GetCHIPID>:
DBGMCU_GetCHIPID():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dbgmcu.c:128
* CH32V317TCU6-0x3175B5X8
*/
uint32_t DBGMCU_GetCHIPID( void )
{
return( *( uint32_t * )0x1FFFF704 );
}
dda: 1ffff7b7 lui a5,0x1ffff
dde: 7047a503 lw a0,1796(a5) # 1ffff704 <_data_lma+0x1fff21f0>
de2: 8082 ret
00000de4 <DVP_INTCfg>:
DVP_INTCfg():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:35
*/
void DVP_INTCfg(uint8_t s, uint8_t i)
{
if(s)
{
DVP->IER |= i;
de4: 500507b7 lui a5,0x50050
de8: 23b8 lbu a4,2(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:33
if(s)
dea: c501 beqz a0,df2 <DVP_INTCfg+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:35
DVP->IER |= i;
dec: 8dd9 or a1,a1,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:39
}
else
{
DVP->IER &= ~i;
dee: a3ac sb a1,2(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:41
}
}
df0: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:39
DVP->IER &= ~i;
df2: fff5c593 not a1,a1
df6: 8df9 and a1,a1,a4
df8: bfdd j dee <DVP_INTCfg+0xa>
00000dfa <DVP_Mode>:
DVP_Mode():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:60
*
* @return none
*/
void DVP_Mode(uint8_t s, DVP_Data_ModeTypeDef i)
{
DVP->CR0 &= ~RB_DVP_MSK_DAT_MOD;
dfa: 500507b7 lui a5,0x50050
dfe: 2398 lbu a4,0(a5)
e00: 0cf77713 andi a4,a4,207
e04: a398 sb a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:64
if(s)
{
DVP->CR0 |= s;
e06: 2398 lbu a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:62
if(s)
e08: c919 beqz a0,e1e <DVP_Mode+0x24>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:64
DVP->CR0 |= s;
e0a: 8d59 or a0,a0,a4
e0c: a388 sb a0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:73
DVP->CR0 &= ~(3 << 4);
}
if(i)
{
DVP->CR0 |= RB_DVP_JPEG;
e0e: 50050737 lui a4,0x50050
e12: 231c lbu a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:71
if(i)
e14: c989 beqz a1,e26 <DVP_Mode+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:73
DVP->CR0 |= RB_DVP_JPEG;
e16: 0407e793 ori a5,a5,64
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:77
}
else
{
DVP->CR0 &= ~RB_DVP_JPEG;
e1a: a31c sb a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:79
}
}
e1c: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:68
DVP->CR0 &= ~(3 << 4);
e1e: 0cf77713 andi a4,a4,207
e22: a398 sb a4,0(a5)
e24: b7ed j e0e <DVP_Mode+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:77
DVP->CR0 &= ~RB_DVP_JPEG;
e26: 0bf7f793 andi a5,a5,191
e2a: bfc5 j e1a <DVP_Mode+0x20>
00000e2c <DVP_Cfg>:
DVP_Cfg():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:100
*
* @return none
*/
void DVP_Cfg(DVP_DMATypeDef s, DVP_FLAG_FIFO_RESETTypeDef i, DVP_RX_RESETTypeDef j)
{
switch(s)
e2c: cd1d beqz a0,e6a <DVP_Cfg+0x3e>
e2e: 4785 li a5,1
e30: 00f51863 bne a0,a5,e40 <DVP_Cfg+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:103
{
case DVP_DMA_Enable:
DVP->CR1 |= RB_DVP_DMA_EN;
e34: 50050737 lui a4,0x50050
e38: 331c lbu a5,1(a4)
e3a: 0017e793 ori a5,a5,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:106
break;
case DVP_DMA_Disable:
DVP->CR1 &= ~RB_DVP_DMA_EN;
e3e: b31c sb a5,1(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:112
break;
default:
break;
}
switch(i)
e40: c99d beqz a1,e76 <DVP_Cfg+0x4a>
e42: 4785 li a5,1
e44: 00f59863 bne a1,a5,e54 <DVP_Cfg+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:115
{
case DVP_RX_RESET_Enable:
DVP->CR1 |= RB_DVP_ALL_CLR;
e48: 50050737 lui a4,0x50050
e4c: 331c lbu a5,1(a4)
e4e: 0027e793 ori a5,a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:118
break;
case DVP_RX_RESET_Disable:
DVP->CR1 &= ~RB_DVP_ALL_CLR;
e52: b31c sb a5,1(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:124
break;
default:
break;
}
switch(j)
e54: c61d beqz a2,e82 <DVP_Cfg+0x56>
e56: 4785 li a5,1
e58: 00f61863 bne a2,a5,e68 <DVP_Cfg+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:127
{
case DVP_RX_RESET_Enable:
DVP->CR1 |= RB_DVP_RCV_CLR;
e5c: 50050737 lui a4,0x50050
e60: 331c lbu a5,1(a4)
e62: 0047e793 ori a5,a5,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:130
break;
case DVP_RX_RESET_Disable:
DVP->CR1 &= ~RB_DVP_RCV_CLR;
e66: b31c sb a5,1(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:135
break;
default:
break;
}
}
e68: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:106
DVP->CR1 &= ~RB_DVP_DMA_EN;
e6a: 50050737 lui a4,0x50050
e6e: 331c lbu a5,1(a4)
e70: 0fe7f793 andi a5,a5,254
e74: b7e9 j e3e <DVP_Cfg+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:118
DVP->CR1 &= ~RB_DVP_ALL_CLR;
e76: 50050737 lui a4,0x50050
e7a: 331c lbu a5,1(a4)
e7c: 0fd7f793 andi a5,a5,253
e80: bfc9 j e52 <DVP_Cfg+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_dvp.c:130
DVP->CR1 &= ~RB_DVP_RCV_CLR;
e82: 50050737 lui a4,0x50050
e86: 331c lbu a5,1(a4)
e88: 0fb7f793 andi a5,a5,251
e8c: bfe9 j e66 <DVP_Cfg+0x3a>
00000e8e <ETH_DeInit>:
ETH_DeInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:29
*
* @return none
*/
#ifdef CH32V30x_D8C
void ETH_DeInit(void)
{
e8e: e88ff2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:30
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_ETH_MAC, ENABLE);
e92: 4585 li a1,1
e94: 6511 lui a0,0x4
e96: 2d41 jal 1526 <RCC_AHBPeriphResetCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:31
RCC_AHBPeriphResetCmd(RCC_AHBPeriph_ETH_MAC, DISABLE);
e98: 4581 li a1,0
e9a: 6511 lui a0,0x4
e9c: 2569 jal 1526 <RCC_AHBPeriphResetCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:32
}
e9e: e9cff06f j 53a <__riscv_restore_0>
00000ea2 <ETH_ReadPHYRegister>:
ETH_ReadPHYRegister():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:292
*
* @return ETH_ERROR - in case of timeout.
* MAC MIIDR register value - Data read from the selected PHY register.
*/
uint16_t ETH_ReadPHYRegister(uint16_t PHYAddress, uint16_t PHYReg)
{
ea2: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:294
uint32_t tmpreg = 0;
__IO uint32_t timeout = 0;
ea4: c602 sw zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:296
tmpreg = ETH->MACMIIAR;
ea6: 400286b7 lui a3,0x40028
eaa: 4a9c lw a5,16(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:298
tmpreg &= ~MACMIIAR_CR_MASK;
tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA);
eac: 6741 lui a4,0x10
eae: 052e slli a0,a0,0xb
eb0: 177d addi a4,a4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:297
tmpreg &= ~MACMIIAR_CR_MASK;
eb2: 8bf1 andi a5,a5,28
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:298
tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA);
eb4: 8d79 and a0,a0,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:299
tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR);
eb6: 059a slli a1,a1,0x6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:298
tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA);
eb8: 8d5d or a0,a0,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:299
tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR);
eba: 7c05f593 andi a1,a1,1984
ebe: 8dc9 or a1,a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:301
tmpreg &= ~ETH_MACMIIAR_MW;
tmpreg |= ETH_MACMIIAR_MB;
ec0: 0015e593 ori a1,a1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:308
do
{
timeout++;
tmpreg = ETH->MACMIIAR;
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO));
ec4: 005007b7 lui a5,0x500
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:302
ETH->MACMIIAR = tmpreg;
ec8: ca8c sw a1,16(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:308
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO));
eca: 17f9 addi a5,a5,-2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:306 (discriminator 2)
timeout++;
ecc: 4732 lw a4,12(sp)
ece: 0705 addi a4,a4,1
ed0: c63a sw a4,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:307 (discriminator 2)
tmpreg = ETH->MACMIIAR;
ed2: 4a98 lw a4,16(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:308 (discriminator 2)
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_READ_TO));
ed4: 8b05 andi a4,a4,1
ed6: c701 beqz a4,ede <ETH_ReadPHYRegister+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:308 (discriminator 1)
ed8: 4732 lw a4,12(sp)
eda: fee7f9e3 bgeu a5,a4,ecc <ETH_ReadPHYRegister+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:310
if(timeout == PHY_READ_TO)
ede: 4732 lw a4,12(sp)
ee0: 005007b7 lui a5,0x500
ee4: 17fd addi a5,a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:312
{
return (uint16_t)ETH_ERROR;
ee6: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:310
if(timeout == PHY_READ_TO)
ee8: 00f70763 beq a4,a5,ef6 <ETH_ReadPHYRegister+0x54>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:315
}
return (uint16_t)(ETH->MACMIIDR);
eec: 400287b7 lui a5,0x40028
ef0: 4bc8 lw a0,20(a5)
ef2: 0542 slli a0,a0,0x10
ef4: 8141 srli a0,a0,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:316
}
ef6: 0141 addi sp,sp,16
ef8: 8082 ret
00000efa <ETH_WritePHYRegister>:
ETH_WritePHYRegister():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:331
*
* @return ETH_ERROR - in case of timeout.
* ETH_SUCCESS - for correct write
*/
uint32_t ETH_WritePHYRegister(uint16_t PHYAddress, uint16_t PHYReg, uint16_t PHYValue)
{
efa: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:335
uint32_t tmpreg = 0;
__IO uint32_t timeout = 0;
tmpreg = ETH->MACMIIAR;
efc: 400287b7 lui a5,0x40028
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:333
__IO uint32_t timeout = 0;
f00: c602 sw zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:335
tmpreg = ETH->MACMIIAR;
f02: 4b98 lw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:337
tmpreg &= ~MACMIIAR_CR_MASK;
tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA);
f04: 66c1 lui a3,0x10
f06: 16fd addi a3,a3,-1
f08: 052e slli a0,a0,0xb
f0a: 8d75 and a0,a0,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:336
tmpreg &= ~MACMIIAR_CR_MASK;
f0c: 8b71 andi a4,a4,28
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:338
tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR);
f0e: 059a slli a1,a1,0x6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:337
tmpreg |= (((uint32_t)PHYAddress << 11) & ETH_MACMIIAR_PA);
f10: 8d59 or a0,a0,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:338
tmpreg |= (((uint32_t)PHYReg << 6) & ETH_MACMIIAR_MR);
f12: 7c05f593 andi a1,a1,1984
f16: 8dc9 or a1,a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:341
tmpreg |= ETH_MACMIIAR_MW;
tmpreg |= ETH_MACMIIAR_MB;
ETH->MACMIIDR = PHYValue;
f18: cbd0 sw a2,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:340
tmpreg |= ETH_MACMIIAR_MB;
f1a: 0035e593 ori a1,a1,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:342
ETH->MACMIIAR = tmpreg;
f1e: cb8c sw a1,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:348
do
{
timeout++;
tmpreg = ETH->MACMIIAR;
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO));
f20: 000507b7 lui a5,0x50
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:347
tmpreg = ETH->MACMIIAR;
f24: 400286b7 lui a3,0x40028
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:348
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO));
f28: 17f9 addi a5,a5,-2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:346 (discriminator 2)
timeout++;
f2a: 4732 lw a4,12(sp)
f2c: 0705 addi a4,a4,1
f2e: c63a sw a4,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:347 (discriminator 2)
tmpreg = ETH->MACMIIAR;
f30: 4a98 lw a4,16(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:348 (discriminator 2)
} while((tmpreg & ETH_MACMIIAR_MB) && (timeout < (uint32_t)PHY_WRITE_TO));
f32: 8b05 andi a4,a4,1
f34: c701 beqz a4,f3c <ETH_WritePHYRegister+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:348 (discriminator 1)
f36: 4732 lw a4,12(sp)
f38: fee7f9e3 bgeu a5,a4,f2a <ETH_WritePHYRegister+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:350
if(timeout >= PHY_WRITE_TO)
f3c: 4532 lw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:356
{
return ETH_ERROR;
}
return ETH_SUCCESS;
}
f3e: 000507b7 lui a5,0x50
f42: 17fd addi a5,a5,-1
f44: 00f53533 sltu a0,a0,a5
f48: 0141 addi sp,sp,16
f4a: 8082 ret
00000f4c <ETH_MACTransmissionCmd>:
ETH_MACTransmissionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:407
*/
void ETH_MACTransmissionCmd(FunctionalState NewState)
{
if(NewState != DISABLE)
{
ETH->MACCR |= ETH_MACCR_TE;
f4c: 40028737 lui a4,0x40028
f50: 431c lw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:405
if(NewState != DISABLE)
f52: c509 beqz a0,f5c <ETH_MACTransmissionCmd+0x10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:407
ETH->MACCR |= ETH_MACCR_TE;
f54: 0087e793 ori a5,a5,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:411
}
else
{
ETH->MACCR &= ~ETH_MACCR_TE;
f58: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:413
}
}
f5a: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:411
ETH->MACCR &= ~ETH_MACCR_TE;
f5c: 9bdd andi a5,a5,-9
f5e: bfed j f58 <ETH_MACTransmissionCmd+0xc>
00000f60 <ETH_MACReceptionCmd>:
ETH_MACReceptionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:428
*/
void ETH_MACReceptionCmd(FunctionalState NewState)
{
if(NewState != DISABLE)
{
ETH->MACCR |= ETH_MACCR_RE;
f60: 40028737 lui a4,0x40028
f64: 431c lw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:426
if(NewState != DISABLE)
f66: c509 beqz a0,f70 <ETH_MACReceptionCmd+0x10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:428
ETH->MACCR |= ETH_MACCR_RE;
f68: 0047e793 ori a5,a5,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:432
}
else
{
ETH->MACCR &= ~ETH_MACCR_RE;
f6c: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:434
}
}
f6e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:432
ETH->MACCR &= ~ETH_MACCR_RE;
f70: 9bed andi a5,a5,-5
f72: bfed j f6c <ETH_MACReceptionCmd+0xc>
00000f74 <ETH_DMATxDescChainInit>:
ETH_DMATxDescChainInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:712
void ETH_DMATxDescChainInit(ETH_DMADESCTypeDef *DMATxDescTab, uint8_t *TxBuff, uint32_t TxBuffCount)
{
uint32_t i = 0;
ETH_DMADESCTypeDef *DMATxDesc;
DMATxDescToSet = DMATxDescTab;
f74: 200007b7 lui a5,0x20000
f78: 0aa7aa23 sw a0,180(a5) # 200000b4 <DMATxDescToSet>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:714
for(i = 0; i < TxBuffCount; i++)
f7c: 872a mv a4,a0
f7e: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:717
{
DMATxDesc = DMATxDescTab + i;
DMATxDesc->Status = ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC;
f80: 401008b7 lui a7,0x40100
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:718
DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i * ETH_MAX_PACKET_SIZE]);
f84: 5f400313 li t1,1524
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:720
if(i < (TxBuffCount - 1))
f88: fff60e13 addi t3,a2,-1 # ffff <_data_lma+0x2aeb>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:714 (discriminator 1)
for(i = 0; i < TxBuffCount; i++)
f8c: 00c79663 bne a5,a2,f98 <ETH_DMATxDescChainInit+0x24>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:730
{
DMATxDesc->Buffer2NextDescAddr = (uint32_t)DMATxDescTab;
}
}
ETH->DMATDLAR = (uint32_t)DMATxDescTab;
f90: 400297b7 lui a5,0x40029
f94: cb88 sw a0,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:731
}
f96: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:718
DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i * ETH_MAX_PACKET_SIZE]);
f98: 026786b3 mul a3,a5,t1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:717
DMATxDesc->Status = ETH_DMATxDesc_TCH | ETH_DMATxDesc_IC;
f9c: 01172023 sw a7,0(a4) # 40028000 <__freertos_irq_stack_top+0x1fff8000>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:718
DMATxDesc->Buffer1Addr = (uint32_t)(&TxBuff[i * ETH_MAX_PACKET_SIZE]);
fa0: 882a mv a6,a0
fa2: 96ae add a3,a3,a1
fa4: c714 sw a3,8(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:720
if(i < (TxBuffCount - 1))
fa6: 01070693 addi a3,a4,16
faa: 01c7f363 bgeu a5,t3,fb0 <ETH_DMATxDescChainInit+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:722
DMATxDesc->Buffer2NextDescAddr = (uint32_t)(DMATxDescTab + i + 1);
fae: 8836 mv a6,a3
fb0: 01072623 sw a6,12(a4)
fb4: 0785 addi a5,a5,1
fb6: 8736 mv a4,a3
fb8: bfd1 j f8c <ETH_DMATxDescChainInit+0x18>
00000fba <ETH_DMARxDescChainInit>:
ETH_DMARxDescChainInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1040
void ETH_DMARxDescChainInit(ETH_DMADESCTypeDef *DMARxDescTab, uint8_t *RxBuff, uint32_t RxBuffCount)
{
uint32_t i = 0;
ETH_DMADESCTypeDef *DMARxDesc;
DMARxDescToGet = DMARxDescTab;
fba: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1046
for(i = 0; i < RxBuffCount; i++)
{
DMARxDesc = DMARxDescTab + i;
DMARxDesc->Status = ETH_DMARxDesc_OWN;
DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_MAX_PACKET_SIZE;
fbe: 6691 lui a3,0x4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1040
DMARxDescToGet = DMARxDescTab;
fc0: 0aa7a823 sw a0,176(a5) # 200000b0 <DMARxDescToGet>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1042
for(i = 0; i < RxBuffCount; i++)
fc4: 4701 li a4,0
fc6: 87aa mv a5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1045
DMARxDesc->Status = ETH_DMARxDesc_OWN;
fc8: 80000337 lui t1,0x80000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1046
DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_MAX_PACKET_SIZE;
fcc: 5f468693 addi a3,a3,1524 # 45f4 <prvAddCurrentTaskToDelayedList+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1047
DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]);
fd0: 5f400e13 li t3,1524
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1049
if(i < (RxBuffCount - 1))
fd4: fff60e93 addi t4,a2,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1042 (discriminator 1)
for(i = 0; i < RxBuffCount; i++)
fd8: 00c71663 bne a4,a2,fe4 <ETH_DMARxDescChainInit+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1059
{
DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab);
}
}
ETH->DMARDLAR = (uint32_t)DMARxDescTab;
fdc: 400297b7 lui a5,0x40029
fe0: c7c8 sw a0,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1060
}
fe2: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1047
DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]);
fe4: 03c70833 mul a6,a4,t3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1045
DMARxDesc->Status = ETH_DMARxDesc_OWN;
fe8: 0067a023 sw t1,0(a5) # 40029000 <__freertos_irq_stack_top+0x1fff9000>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1046
DMARxDesc->ControlBufferSize = ETH_DMARxDesc_RCH | (uint32_t)ETH_MAX_PACKET_SIZE;
fec: c3d4 sw a3,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1047
DMARxDesc->Buffer1Addr = (uint32_t)(&RxBuff[i * ETH_MAX_PACKET_SIZE]);
fee: 88aa mv a7,a0
ff0: 982e add a6,a6,a1
ff2: 0107a423 sw a6,8(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1049
if(i < (RxBuffCount - 1))
ff6: 01078813 addi a6,a5,16
ffa: 01d77363 bgeu a4,t4,1000 <ETH_DMARxDescChainInit+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1051
DMARxDesc->Buffer2NextDescAddr = (uint32_t)(DMARxDescTab + i + 1);
ffe: 88c2 mv a7,a6
1000: 0117a623 sw a7,12(a5)
1004: 0705 addi a4,a4,1
1006: 87c2 mv a5,a6
1008: bfc1 j fd8 <ETH_DMARxDescChainInit+0x1e>
0000100a <ETH_SoftwareReset>:
ETH_SoftwareReset():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1269
*
* @return none
*/
void ETH_SoftwareReset(void)
{
ETH->DMABMR |= ETH_DMABMR_SR;
100a: 40029737 lui a4,0x40029
100e: 431c lw a5,0(a4)
1010: 0017e793 ori a5,a5,1
1014: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1270
}
1016: 8082 ret
00001018 <ETH_DMAClearITPendingBit>:
ETH_DMAClearITPendingBit():
1018: 400297b7 lui a5,0x40029
101c: cbc8 sw a0,20(a5)
101e: 8082 ret
00001020 <ETH_FlushTransmitFIFO>:
ETH_FlushTransmitFIFO():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1507
*
* @return none
*/
void ETH_FlushTransmitFIFO(void)
{
ETH->DMAOMR |= ETH_DMAOMR_FTF;
1020: 40029737 lui a4,0x40029
1024: 4f1c lw a5,24(a4)
1026: 001006b7 lui a3,0x100
102a: 8fd5 or a5,a5,a3
102c: cf1c sw a5,24(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1508
}
102e: 8082 ret
00001030 <ETH_Start>:
ETH_Start():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:107
{
1030: ce6ff2ef jal t0,516 <__riscv_save_0>
ETH_MACTransmissionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:407
ETH->MACCR |= ETH_MACCR_TE;
1034: 40028437 lui s0,0x40028
1038: 401c lw a5,0(s0)
103a: 0087e793 ori a5,a5,8
103e: c01c sw a5,0(s0)
ETH_Start():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:109
ETH_FlushTransmitFIFO();
1040: 37c5 jal 1020 <ETH_FlushTransmitFIFO>
ETH_MACReceptionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:428
ETH->MACCR |= ETH_MACCR_RE;
1042: 401c lw a5,0(s0)
ETH_DMATransmissionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1544
*/
void ETH_DMATransmissionCmd(FunctionalState NewState)
{
if(NewState != DISABLE)
{
ETH->DMAOMR |= ETH_DMAOMR_ST;
1044: 6689 lui a3,0x2
ETH_MACReceptionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:428
ETH->MACCR |= ETH_MACCR_RE;
1046: 0047e793 ori a5,a5,4
104a: c01c sw a5,0(s0)
ETH_DMATransmissionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1544
ETH->DMAOMR |= ETH_DMAOMR_ST;
104c: 400297b7 lui a5,0x40029
1050: 4f98 lw a4,24(a5)
1052: 8f55 or a4,a4,a3
1054: cf98 sw a4,24(a5)
ETH_DMAReceptionCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1565
*/
void ETH_DMAReceptionCmd(FunctionalState NewState)
{
if(NewState != DISABLE)
{
ETH->DMAOMR |= ETH_DMAOMR_SR;
1056: 4f98 lw a4,24(a5)
1058: 00276713 ori a4,a4,2
105c: cf98 sw a4,24(a5)
ETH_Start():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:113
}
105e: cdcff06f j 53a <__riscv_restore_0>
00001062 <ETH_DMAITConfig>:
ETH_DMAITConfig():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1602
*
* @return new state of the specified ETHERNET DMA interrupts.
*/
void ETH_DMAITConfig(uint32_t ETH_DMA_IT, FunctionalState NewState)
{
if(NewState != DISABLE)
1062: c599 beqz a1,1070 <ETH_DMAITConfig+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1604
{
ETH->DMAIER |= ETH_DMA_IT;
1064: 40029737 lui a4,0x40029
1068: 4f5c lw a5,28(a4)
106a: 8d5d or a0,a0,a5
106c: cf48 sw a0,28(a4)
106e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1608
}
else
{
ETH->DMAIER &= (~(uint32_t)ETH_DMA_IT);
1070: 400297b7 lui a5,0x40029
1074: 4fd8 lw a4,28(a5)
1076: fff54513 not a0,a0
107a: 8d79 and a0,a0,a4
107c: cfc8 sw a0,28(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:1610
}
}
107e: 8082 ret
00001080 <RGMII_TXC_Delay>:
RGMII_TXC_Delay():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2513
*/
void RGMII_TXC_Delay(uint8_t clock_polarity, uint8_t delay_time)
{
if(clock_polarity)
{
ETH->MACCR |= (uint32_t)(1 << 1);
1080: 40028737 lui a4,0x40028
1084: 431c lw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2511
if(clock_polarity)
1086: c115 beqz a0,10aa <RGMII_TXC_Delay+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2513
ETH->MACCR |= (uint32_t)(1 << 1);
1088: 0027e793 ori a5,a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2517
}
else
{
ETH->MACCR &= ~(uint32_t)(1 << 1);
108c: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2519
}
if(delay_time <= 7)
108e: 479d li a5,7
1090: 00b7ec63 bltu a5,a1,10a8 <RGMII_TXC_Delay+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2521
{
ETH->MACCR &= ~(uint32_t)(7 << 29);
1094: 40028737 lui a4,0x40028
1098: 431c lw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2522
ETH->MACCR |= (uint32_t)(delay_time << 29);
109a: 05f6 slli a1,a1,0x1d
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2521
ETH->MACCR &= ~(uint32_t)(7 << 29);
109c: 078e slli a5,a5,0x3
109e: 838d srli a5,a5,0x3
10a0: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2522
ETH->MACCR |= (uint32_t)(delay_time << 29);
10a2: 431c lw a5,0(a4)
10a4: 8ddd or a1,a1,a5
10a6: c30c sw a1,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2524
}
}
10a8: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_eth.c:2517
ETH->MACCR &= ~(uint32_t)(1 << 1);
10aa: 9bf5 andi a5,a5,-3
10ac: b7c5 j 108c <RGMII_TXC_Delay+0xc>
000010ae <EXTI_ClearITPendingBit>:
EXTI_ClearITPendingBit():
10ae: 400107b7 lui a5,0x40010
10b2: 40a7aa23 sw a0,1044(a5) # 40010414 <__freertos_irq_stack_top+0x1ffe0414>
10b6: 8082 ret
000010b8 <FLASH_Unlock>:
FLASH_Unlock():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:80
* @return none
*/
void FLASH_Unlock(void)
{
/* Authorize the FPEC of Bank1 Access */
FLASH->KEYR = FLASH_KEY1;
10b8: 456707b7 lui a5,0x45670
10bc: 40022737 lui a4,0x40022
10c0: 12378793 addi a5,a5,291 # 45670123 <__freertos_irq_stack_top+0x25640123>
10c4: c35c sw a5,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:81
FLASH->KEYR = FLASH_KEY2;
10c6: cdef97b7 lui a5,0xcdef9
10ca: 9ab78793 addi a5,a5,-1621 # cdef89ab <__freertos_irq_stack_top+0xadec89ab>
10ce: c35c sw a5,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:82
}
10d0: 8082 ret
000010d2 <FLASH_Lock>:
FLASH_Lock():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:107
*
* @return none
*/
void FLASH_Lock(void)
{
FLASH->CTLR |= CR_LOCK_Set;
10d2: 40022737 lui a4,0x40022
10d6: 4b1c lw a5,16(a4)
10d8: 0807e793 ori a5,a5,128
10dc: cb1c sw a5,16(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:108
}
10de: 8082 ret
000010e0 <FLASH_GetUserOptionByte>:
FLASH_GetUserOptionByte():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:580
* @return The FLASH User Option Bytes values:IWDG_SW(Bit0), RST_STOP(Bit1)
* and RST_STDBY(Bit2).
*/
uint32_t FLASH_GetUserOptionByte(void)
{
return (uint32_t)(FLASH->OBR >> 2);
10e0: 400227b7 lui a5,0x40022
10e4: 4fc8 lw a0,28(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:581
}
10e6: 8109 srli a0,a0,0x2
10e8: 8082 ret
000010ea <FLASH_GetBank1Status>:
FLASH_GetBank1Status():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:740
*/
FLASH_Status FLASH_GetBank1Status(void)
{
FLASH_Status flashstatus = FLASH_COMPLETE;
if((FLASH->STATR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY)
10ea: 40022737 lui a4,0x40022
10ee: 475c lw a5,12(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:742
{
flashstatus = FLASH_BUSY;
10f0: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:740
if((FLASH->STATR & FLASH_FLAG_BANK1_BSY) == FLASH_FLAG_BSY)
10f2: 8b85 andi a5,a5,1
10f4: e791 bnez a5,1100 <FLASH_GetBank1Status+0x16>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:746
}
else
{
if((FLASH->STATR & FLASH_FLAG_BANK1_WRPRTERR) != 0)
10f6: 4748 lw a0,12(a4)
10f8: 8941 andi a0,a0,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:752
{
flashstatus = FLASH_ERROR_WRP;
}
else
{
flashstatus = FLASH_COMPLETE;
10fa: 00153513 seqz a0,a0
10fe: 050d addi a0,a0,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:756
}
}
return flashstatus;
}
1100: 8082 ret
00001102 <FLASH_WaitForLastOperation>:
FLASH_WaitForLastOperation():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:769
*
* @return FLASH Status - The returned value can be: FLASH_BUSY, FLASH_ERROR_PG,
* FLASH_ERROR_WRP or FLASH_COMPLETE.
*/
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)
{
1102: c14ff2ef jal t0,516 <__riscv_save_0>
1106: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:773
FLASH_Status status = FLASH_COMPLETE;
status = FLASH_GetBank1Status();
while((status == FLASH_BUSY) && (Timeout != 0x00))
1108: 4485 li s1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:772
status = FLASH_GetBank1Status();
110a: 37c5 jal 10ea <FLASH_GetBank1Status>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:773
while((status == FLASH_BUSY) && (Timeout != 0x00))
110c: 00951863 bne a0,s1,111c <FLASH_WaitForLastOperation+0x1a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:773 (discriminator 1)
1110: e019 bnez s0,1116 <FLASH_WaitForLastOperation+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:780
status = FLASH_GetBank1Status();
Timeout--;
}
if(Timeout == 0x00)
{
status = FLASH_TIMEOUT;
1112: 4515 li a0,5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:782
}
return status;
1114: a029 j 111e <FLASH_WaitForLastOperation+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:775
status = FLASH_GetBank1Status();
1116: 3fd1 jal 10ea <FLASH_GetBank1Status>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:776
Timeout--;
1118: 147d addi s0,s0,-1
111a: bfcd j 110c <FLASH_WaitForLastOperation+0xa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:778
if(Timeout == 0x00)
111c: d87d beqz s0,1112 <FLASH_WaitForLastOperation+0x10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:783
}
111e: c1cff06f j 53a <__riscv_restore_0>
00001122 <FLASH_ProgramOptionByteData>:
FLASH_ProgramOptionByteData():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:349
{
1122: bf4ff2ef jal t0,516 <__riscv_save_0>
1126: 7179 addi sp,sp,-48
1128: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:355
status = FLASH_WaitForLastOperation(ProgramTimeout);
112a: 6515 lui a0,0x5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:349
{
112c: c62e sw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:355
status = FLASH_WaitForLastOperation(ProgramTimeout);
112e: 3fd1 jal 1102 <FLASH_WaitForLastOperation>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:356
if(status == FLASH_COMPLETE)
1130: 4791 li a5,4
1132: 45b2 lw a1,12(sp)
1134: 08f51c63 bne a0,a5,11cc <FLASH_ProgramOptionByteData+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:358
FLASH->OBKEYR = FLASH_KEY1;
1138: 456707b7 lui a5,0x45670
113c: 40022737 lui a4,0x40022
1140: 12378793 addi a5,a5,291 # 45670123 <__freertos_irq_stack_top+0x25640123>
1144: c71c sw a5,8(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:359
FLASH->OBKEYR = FLASH_KEY2;
1146: cdef97b7 lui a5,0xcdef9
114a: 9ab78793 addi a5,a5,-1621 # cdef89ab <__freertos_irq_stack_top+0xadec89ab>
114e: c71c sw a5,8(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:362
for(i = 0; i < 8; i++)
1150: 00010fa3 sb zero,31(sp)
1154: 471d li a4,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:364
pbuf[i] = *(uint16_t *)(Addr + 2 * i);
1156: 20000637 lui a2,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:362 (discriminator 1)
for(i = 0; i < 8; i++)
115a: 01f14783 lbu a5,31(sp)
115e: 06f77a63 bgeu a4,a5,11d2 <FLASH_ProgramOptionByteData+0xb0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:368
FLASH->CTLR |= CR_OPTER_Set;
1162: 400227b7 lui a5,0x40022
1166: 4b98 lw a4,16(a5)
1168: 02076713 ori a4,a4,32
116c: cb98 sw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:369
FLASH->CTLR |= CR_STRT_Set;
116e: 4b98 lw a4,16(a5)
1170: 04076713 ori a4,a4,64
1174: cb98 sw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:370 (discriminator 1)
while(FLASH->STATR & SR_BSY)
1176: 47d8 lw a4,12(a5)
1178: 8b05 andi a4,a4,1
117a: ff75 bnez a4,1176 <FLASH_ProgramOptionByteData+0x54>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:372
FLASH->CTLR &= ~CR_OPTER_Set;
117c: 4b98 lw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:379
for(i = 0; i < 8; i++)
117e: 469d li a3,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:381
*(uint16_t *)(Addr + 2 * i) = pbuf[i];
1180: 20000637 lui a2,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:372
FLASH->CTLR &= ~CR_OPTER_Set;
1184: fdf77713 andi a4,a4,-33
1188: cb98 sw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:375
pbuf[((Address - 0x1FFFF800) / 2)] = ((((uint16_t) ~(Data)) << 8) | ((uint16_t)Data));
118a: e0001737 lui a4,0xe0001
118e: 80070713 addi a4,a4,-2048 # e0000800 <__freertos_irq_stack_top+0xbffd0800>
1192: 943a add s0,s0,a4
1194: 9879 andi s0,s0,-2
1196: 1818 addi a4,sp,48
1198: 943a add s0,s0,a4
119a: fff5c713 not a4,a1
119e: 0742 slli a4,a4,0x10
11a0: 8341 srli a4,a4,0x10
11a2: 0722 slli a4,a4,0x8
11a4: 8dd9 or a1,a1,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:377
FLASH->CTLR |= CR_OPTPG_Set;
11a6: 4b98 lw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:375
pbuf[((Address - 0x1FFFF800) / 2)] = ((((uint16_t) ~(Data)) << 8) | ((uint16_t)Data));
11a8: feb41823 sh a1,-16(s0) # 40027ff0 <__freertos_irq_stack_top+0x1fff7ff0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:382
while(FLASH->STATR & SR_BSY)
11ac: 400225b7 lui a1,0x40022
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:377
FLASH->CTLR |= CR_OPTPG_Set;
11b0: 01076713 ori a4,a4,16
11b4: cb98 sw a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:379
for(i = 0; i < 8; i++)
11b6: 00010fa3 sb zero,31(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:379 (discriminator 1)
11ba: 01f14783 lbu a5,31(sp)
11be: 04f6f063 bgeu a3,a5,11fe <FLASH_ProgramOptionByteData+0xdc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:386
FLASH->CTLR &= ~CR_OPTPG_Set;
11c2: 40022737 lui a4,0x40022
11c6: 4b1c lw a5,16(a4)
11c8: 9bbd andi a5,a5,-17
11ca: cb1c sw a5,16(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:390
}
11cc: 6145 addi sp,sp,48
11ce: b6cff06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:364 (discriminator 3)
pbuf[i] = *(uint16_t *)(Addr + 2 * i);
11d2: 01f14683 lbu a3,31(sp)
11d6: 01f14783 lbu a5,31(sp)
11da: 03010813 addi a6,sp,48
11de: 0686 slli a3,a3,0x1
11e0: 96b2 add a3,a3,a2
11e2: 8006d683 lhu a3,-2048(a3) # 1800 <ETH_RGMIIPinInit+0x30>
11e6: 0786 slli a5,a5,0x1
11e8: 97c2 add a5,a5,a6
11ea: fed79823 sh a3,-16(a5) # 40021ff0 <__freertos_irq_stack_top+0x1fff1ff0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:362 (discriminator 3)
for(i = 0; i < 8; i++)
11ee: 01f14783 lbu a5,31(sp)
11f2: 0785 addi a5,a5,1
11f4: 0ff7f793 andi a5,a5,255
11f8: 00f10fa3 sb a5,31(sp)
11fc: bfb9 j 115a <FLASH_ProgramOptionByteData+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:381
*(uint16_t *)(Addr + 2 * i) = pbuf[i];
11fe: 01f14703 lbu a4,31(sp)
1202: 1800 addi s0,sp,48
1204: 01f14783 lbu a5,31(sp)
1208: 0706 slli a4,a4,0x1
120a: 9722 add a4,a4,s0
120c: ff075703 lhu a4,-16(a4) # 40021ff0 <__freertos_irq_stack_top+0x1fff1ff0>
1210: 0786 slli a5,a5,0x1
1212: 97b2 add a5,a5,a2
1214: 80e79023 sh a4,-2048(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:382 (discriminator 1)
while(FLASH->STATR & SR_BSY)
1218: 45dc lw a5,12(a1)
121a: 8b85 andi a5,a5,1
121c: fff5 bnez a5,1218 <FLASH_ProgramOptionByteData+0xf6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_flash.c:379 (discriminator 2)
for(i = 0; i < 8; i++)
121e: 01f14783 lbu a5,31(sp)
1222: 0785 addi a5,a5,1
1224: 0ff7f793 andi a5,a5,255
1228: 00f10fa3 sb a5,31(sp)
122c: b779 j 11ba <FLASH_ProgramOptionByteData+0x98>
0000122e <GPIO_Init>:
GPIO_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:90
void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_InitStruct)
{
uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;
uint32_t tmpreg = 0x00, pinmask = 0x00;
currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);
122e: 459c lw a5,8(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:92
if((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)
1230: 0107f713 andi a4,a5,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:90
currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);
1234: 00f7f813 andi a6,a5,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:92
if((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)
1238: c701 beqz a4,1240 <GPIO_Init+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:94
{
currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;
123a: 41d8 lw a4,4(a1)
123c: 00e86833 or a6,a6,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:97
}
if(((uint32_t)GPIO_InitStruct->GPIO_Pin & ((uint32_t)0x00FF)) != 0x00)
1240: 218e lhu a1,0(a1)
1242: 0ff5f713 andi a4,a1,255
1246: c339 beqz a4,128c <GPIO_Init+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:99
{
tmpreg = GPIOx->CFGLR;
1248: 4118 lw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:101
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
124a: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:103
{
pos = ((uint32_t)0x01) << pinpos;
124c: 4e85 li t4,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:109
currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
if(currentpin == pos)
{
pos = pinpos << 2;
pinmask = ((uint32_t)0x0F) << pos;
124e: 4f3d li t5,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:113
tmpreg &= ~pinmask;
tmpreg |= (currentmode << pos);
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
1250: 02800f93 li t6,40
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:119
{
GPIOx->BCR = (((uint32_t)0x01) << pinpos);
}
else
{
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
1254: 04800293 li t0,72
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:101
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
1258: 4e21 li t3,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:103
pos = ((uint32_t)0x01) << pinpos;
125a: 00de9633 sll a2,t4,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:104
currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;
125e: 00c5f8b3 and a7,a1,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:106
if(currentpin == pos)
1262: 03161163 bne a2,a7,1284 <GPIO_Init+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:108
pos = pinpos << 2;
1266: 00269893 slli a7,a3,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:109
pinmask = ((uint32_t)0x0F) << pos;
126a: 011f1333 sll t1,t5,a7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:110
tmpreg &= ~pinmask;
126e: fff34313 not t1,t1
1272: 00e37733 and a4,t1,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:111
tmpreg |= (currentmode << pos);
1276: 011818b3 sll a7,a6,a7
127a: 00e8e733 or a4,a7,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:113
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
127e: 05f79f63 bne a5,t6,12dc <GPIO_Init+0xae>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:115
GPIOx->BCR = (((uint32_t)0x01) << pinpos);
1282: c950 sw a2,20(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:101 (discriminator 2)
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
1284: 0685 addi a3,a3,1
1286: fdc69ae3 bne a3,t3,125a <GPIO_Init+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:126
GPIOx->BSHR = (((uint32_t)0x01) << pinpos);
}
}
}
}
GPIOx->CFGLR = tmpreg;
128a: c118 sw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:129
}
if(GPIO_InitStruct->GPIO_Pin > 0x00FF)
128c: 0ff00713 li a4,255
1290: 04b77563 bgeu a4,a1,12da <GPIO_Init+0xac>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:131
{
tmpreg = GPIOx->CFGHR;
1294: 4154 lw a3,4(a0)
1296: 4621 li a2,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:135
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
{
pos = (((uint32_t)0x01) << (pinpos + 0x08));
1298: 4e85 li t4,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:141
currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
if(currentpin == pos)
{
pos = pinpos << 2;
pinmask = ((uint32_t)0x0F) << pos;
129a: 4f3d li t5,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:145
tmpreg &= ~pinmask;
tmpreg |= (currentmode << pos);
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
129c: 02800f93 li t6,40
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:150
{
GPIOx->BCR = (((uint32_t)0x01) << (pinpos + 0x08));
}
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
12a0: 04800293 li t0,72
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:133
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
12a4: 4e41 li t3,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:135
pos = (((uint32_t)0x01) << (pinpos + 0x08));
12a6: 00ce98b3 sll a7,t4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:136
currentpin = ((GPIO_InitStruct->GPIO_Pin) & pos);
12aa: 0115f733 and a4,a1,a7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:138
if(currentpin == pos)
12ae: 02e89263 bne a7,a4,12d2 <GPIO_Init+0xa4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:140
pos = pinpos << 2;
12b2: 00261713 slli a4,a2,0x2
12b6: 1701 addi a4,a4,-32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:141
pinmask = ((uint32_t)0x0F) << pos;
12b8: 00ef1333 sll t1,t5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:142
tmpreg &= ~pinmask;
12bc: fff34313 not t1,t1
12c0: 00d376b3 and a3,t1,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:143
tmpreg |= (currentmode << pos);
12c4: 00e81733 sll a4,a6,a4
12c8: 8ed9 or a3,a3,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:145
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPD)
12ca: 01f79d63 bne a5,t6,12e4 <GPIO_Init+0xb6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:147
GPIOx->BCR = (((uint32_t)0x01) << (pinpos + 0x08));
12ce: 01152a23 sw a7,20(a0) # 5014 <vTaskMissedYield+0xa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:150
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
12d2: 0605 addi a2,a2,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:133 (discriminator 2)
for(pinpos = 0x00; pinpos < 0x08; pinpos++)
12d4: fdc619e3 bne a2,t3,12a6 <GPIO_Init+0x78>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:156
{
GPIOx->BSHR = (((uint32_t)0x01) << (pinpos + 0x08));
}
}
}
GPIOx->CFGHR = tmpreg;
12d8: c154 sw a3,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:158
}
}
12da: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:119
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
12dc: fa5794e3 bne a5,t0,1284 <GPIO_Init+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:121
GPIOx->BSHR = (((uint32_t)0x01) << pinpos);
12e0: c910 sw a2,16(a0)
12e2: b74d j 1284 <GPIO_Init+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:150
if(GPIO_InitStruct->GPIO_Mode == GPIO_Mode_IPU)
12e4: fe5797e3 bne a5,t0,12d2 <GPIO_Init+0xa4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:152
GPIOx->BSHR = (((uint32_t)0x01) << (pinpos + 0x08));
12e8: 01152823 sw a7,16(a0)
12ec: b7dd j 12d2 <GPIO_Init+0xa4>
000012ee <GPIO_SetBits>:
GPIO_SetBits():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:271
*
* @return none
*/
void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
GPIOx->BSHR = GPIO_Pin;
12ee: c90c sw a1,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:272
}
12f0: 8082 ret
000012f2 <GPIO_ResetBits>:
GPIO_ResetBits():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:287
*
* @return none
*/
void GPIO_ResetBits(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
{
GPIOx->BCR = GPIO_Pin;
12f2: c94c sw a1,20(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_gpio.c:288
}
12f4: 8082 ret
000012f6 <NVIC_Init>:
NVIC_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:80
{
NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << 7) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 5));
}
}
#elif (INTSYSCR_INEST == INTSYSCR_INEST_EN_4Level)
if(NVIC_Priority_Group == NVIC_PriorityGroup_2)
12f6: 200007b7 lui a5,0x20000
12fa: 0b87a703 lw a4,184(a5) # 200000b8 <NVIC_Priority_Group>
12fe: 4789 li a5,2
1300: 2110 lbu a2,0(a0)
1302: 02f71163 bne a4,a5,1324 <NVIC_Init+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:82
{
if(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority < 4)
1306: 3114 lbu a3,1(a0)
1308: 478d li a5,3
130a: 00d7ed63 bltu a5,a3,1324 <NVIC_Init+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:84
{
NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << 6) | (NVIC_InitStruct->NVIC_IRQChannelSubPriority << 5));
130e: 213c lbu a5,2(a0)
1310: 069a slli a3,a3,0x6
NVIC_SetPriority():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:286
NVIC->IPRIOR[(uint32_t)(IRQn)] = priority;
1312: e000e737 lui a4,0xe000e
NVIC_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:84
1316: 0796 slli a5,a5,0x5
1318: 8fd5 or a5,a5,a3
131a: 0ff7f793 andi a5,a5,255
NVIC_SetPriority():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:286
131e: 9732 add a4,a4,a2
1320: 40f70023 sb a5,1024(a4) # e000e400 <__freertos_irq_stack_top+0xbffde400>
NVIC_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:97
NVIC_SetPriority(NVIC_InitStruct->NVIC_IRQChannel, (NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << 5) );
}
}
#endif
if(NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
1324: 4154 lw a3,4(a0)
1326: 4705 li a4,1
1328: 00565793 srli a5,a2,0x5
132c: 00c71733 sll a4,a4,a2
1330: ca89 beqz a3,1342 <NVIC_Init+0x4c>
NVIC_EnableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:170
NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
1332: 04078793 addi a5,a5,64
1336: 078a slli a5,a5,0x2
1338: e000e6b7 lui a3,0xe000e
133c: 97b6 add a5,a5,a3
133e: c398 sw a4,0(a5)
1340: 8082 ret
NVIC_DisableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:184
NVIC->IRER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
1342: 06078793 addi a5,a5,96
1346: e000e6b7 lui a3,0xe000e
134a: 078a slli a5,a5,0x2
134c: 97b6 add a5,a5,a3
134e: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:185
__asm volatile ("fence.i");
1350: 0000100f fence.i
NVIC_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_misc.c:105
}
else
{
NVIC_DisableIRQ(NVIC_InitStruct->NVIC_IRQChannel);
}
}
1354: 8082 ret
00001356 <RCC_GetClocksFreq>:
RCC_GetClocksFreq():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:585
#ifdef CH32V30x_D8C
uint8_t Pll2mull = 0;
#endif
tmp = RCC->CFGR0 & CFGR0_SWS_Mask;
1356: 40021737 lui a4,0x40021
135a: 435c lw a5,4(a4)
135c: 4691 li a3,4
135e: 8bb1 andi a5,a5,12
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:587
switch(tmp)
1360: 00d78563 beq a5,a3,136a <RCC_GetClocksFreq+0x14>
1364: 46a1 li a3,8
1366: 06d78263 beq a5,a3,13ca <RCC_GetClocksFreq+0x74>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:590
{
case 0x00:
RCC_Clocks->SYSCLK_Frequency = HSI_VALUE;
136a: 007a17b7 lui a5,0x7a1
136e: 20078793 addi a5,a5,512 # 7a1200 <_data_lma+0x793cec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:668
#endif
}
if(Pll_6_5 == 1)
RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency / 2);
1372: c11c sw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:677
default:
RCC_Clocks->SYSCLK_Frequency = HSI_VALUE;
break;
}
tmp = RCC->CFGR0 & CFGR0_HPRE_Set_Mask;
1374: 40021637 lui a2,0x40021
1378: 425c lw a5,4(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:679
tmp = tmp >> 4;
presc = APBAHBPrescTable[tmp];
137a: 20000737 lui a4,0x20000
137e: 03070713 addi a4,a4,48 # 20000030 <APBAHBPrescTable>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:678
tmp = tmp >> 4;
1382: 8391 srli a5,a5,0x4
1384: 8bbd andi a5,a5,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:679
presc = APBAHBPrescTable[tmp];
1386: 97ba add a5,a5,a4
1388: 2394 lbu a3,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:680
RCC_Clocks->HCLK_Frequency = RCC_Clocks->SYSCLK_Frequency >> presc;
138a: 411c lw a5,0(a0)
138c: 00d7d7b3 srl a5,a5,a3
1390: c15c sw a5,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:681
tmp = RCC->CFGR0 & CFGR0_PPRE1_Set_Mask;
1392: 4254 lw a3,4(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:682
tmp = tmp >> 8;
1394: 82a1 srli a3,a3,0x8
1396: 8a9d andi a3,a3,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:683
presc = APBAHBPrescTable[tmp];
1398: 96ba add a3,a3,a4
139a: 2294 lbu a3,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:684
RCC_Clocks->PCLK1_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
139c: 00d7d6b3 srl a3,a5,a3
13a0: c514 sw a3,8(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:685
tmp = RCC->CFGR0 & CFGR0_PPRE2_Set_Mask;
13a2: 4254 lw a3,4(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:686
tmp = tmp >> 11;
13a4: 82ad srli a3,a3,0xb
13a6: 8a9d andi a3,a3,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:687
presc = APBAHBPrescTable[tmp];
13a8: 9736 add a4,a4,a3
13aa: 2318 lbu a4,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:688
RCC_Clocks->PCLK2_Frequency = RCC_Clocks->HCLK_Frequency >> presc;
13ac: 00e7d7b3 srl a5,a5,a4
13b0: c55c sw a5,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:689
tmp = RCC->CFGR0 & CFGR0_ADCPRE_Set_Mask;
13b2: 4258 lw a4,4(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:690
tmp = tmp >> 14;
13b4: 8339 srli a4,a4,0xe
13b6: 00377693 andi a3,a4,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:691
presc = ADCPrescTable[tmp];
13ba: 81418713 addi a4,gp,-2028 # 20000054 <ADCPrescTable>
13be: 9736 add a4,a4,a3
13c0: 2318 lbu a4,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:692
RCC_Clocks->ADCCLK_Frequency = RCC_Clocks->PCLK2_Frequency / presc;
13c2: 02e7d7b3 divu a5,a5,a4
13c6: c91c sw a5,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:693
}
13c8: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:598
pllmull = RCC->CFGR0 & CFGR0_PLLMull_Mask;
13ca: 435c lw a5,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:599
pllsource = RCC->CFGR0 & CFGR0_PLLSRC_Mask;
13cc: 4358 lw a4,4(a4)
13ce: 66c1 lui a3,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:601
pllmull = (pllmull >> 18) + 2;
13d0: 83c9 srli a5,a5,0x12
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:599
pllsource = RCC->CFGR0 & CFGR0_PLLSRC_Mask;
13d2: 8f75 and a4,a4,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:603
if(((*(uint32_t *)0x1FFFF70C) & (1 << 14)) != (1 << 14))
13d4: 1ffff6b7 lui a3,0x1ffff
13d8: 70c6a683 lw a3,1804(a3) # 1ffff70c <_data_lma+0x1fff21f8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:601
pllmull = (pllmull >> 18) + 2;
13dc: 8bbd andi a5,a5,15
13de: 0789 addi a5,a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:603
if(((*(uint32_t *)0x1FFFF70C) & (1 << 14)) != (1 << 14))
13e0: 01169613 slli a2,a3,0x11
13e4: 00064863 bltz a2,13f4 <RCC_GetClocksFreq+0x9e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:605
if(pllmull == 17)
13e8: 46c5 li a3,17
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:578
uint8_t Pll_6_5 = 0;
13ea: 4601 li a2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:605
if(pllmull == 17)
13ec: 02d79263 bne a5,a3,1410 <RCC_GetClocksFreq+0xba>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:606
pllmull = 18;
13f0: 47c9 li a5,18
13f2: a839 j 1410 <RCC_GetClocksFreq+0xba>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:610
if(pllmull == 2)
13f4: 4689 li a3,2
13f6: 02d78f63 beq a5,a3,1434 <RCC_GetClocksFreq+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:612
if(pllmull == 15)
13fa: 46bd li a3,15
13fc: 02d78e63 beq a5,a3,1438 <RCC_GetClocksFreq+0xe2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:617
if(pllmull == 16)
1400: 46c1 li a3,16
1402: 02d78e63 beq a5,a3,143e <RCC_GetClocksFreq+0xe8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:619
if(pllmull == 17)
1406: 46c5 li a3,17
1408: 4601 li a2,0
140a: 00d79363 bne a5,a3,1410 <RCC_GetClocksFreq+0xba>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:620
pllmull = 16;
140e: 47c1 li a5,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:623
if(pllsource == 0x00)
1410: ef1d bnez a4,144e <RCC_GetClocksFreq+0xf8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:625
if(EXTEN->EXTEN_CTR & EXTEN_PLL_HSI_PRE)
1412: 40024737 lui a4,0x40024
1416: 80072703 lw a4,-2048(a4) # 40023800 <__freertos_irq_stack_top+0x1fff3800>
141a: 8b41 andi a4,a4,16
141c: c705 beqz a4,1444 <RCC_GetClocksFreq+0xee>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:627
RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE)*pllmull;
141e: 007a1737 lui a4,0x7a1
1422: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:662
RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency * pllmull;
1426: 02f707b3 mul a5,a4,a5
142a: c11c sw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:667
if(Pll_6_5 == 1)
142c: d621 beqz a2,1374 <RCC_GetClocksFreq+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:668
RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency / 2);
142e: 411c lw a5,0(a0)
1430: 8385 srli a5,a5,0x1
1432: b781 j 1372 <RCC_GetClocksFreq+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:578
uint8_t Pll_6_5 = 0;
1434: 4601 li a2,0
1436: bf6d j 13f0 <RCC_GetClocksFreq+0x9a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:615
Pll_6_5 = 1;
1438: 4605 li a2,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:614
pllmull = 13; /* *6.5 */
143a: 47b5 li a5,13
143c: bfd1 j 1410 <RCC_GetClocksFreq+0xba>
143e: 4601 li a2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:618
pllmull = 15;
1440: 47bd li a5,15
1442: b7f9 j 1410 <RCC_GetClocksFreq+0xba>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:631
RCC_Clocks->SYSCLK_Frequency = (HSI_VALUE >> 1) * pllmull;
1444: 003d1737 lui a4,0x3d1
1448: 90070713 addi a4,a4,-1792 # 3d0900 <_data_lma+0x3c33ec>
144c: bfe9 j 1426 <RCC_GetClocksFreq+0xd0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:646
if(RCC->CFGR2 & (1<<16)){ /* PLL2 */
144e: 400215b7 lui a1,0x40021
1452: 55d8 lw a4,44(a1)
1454: 00f71693 slli a3,a4,0xf
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:647
RCC_Clocks->SYSCLK_Frequency = HSE_VALUE/(((RCC->CFGR2 & 0xF0)>>4) + 1); /* PREDIV2 */
1458: 55d8 lw a4,44(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:646
if(RCC->CFGR2 & (1<<16)){ /* PLL2 */
145a: 0406df63 bgez a3,14b8 <RCC_GetClocksFreq+0x162>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:647
RCC_Clocks->SYSCLK_Frequency = HSE_VALUE/(((RCC->CFGR2 & 0xF0)>>4) + 1); /* PREDIV2 */
145e: 8311 srli a4,a4,0x4
1460: 8b3d andi a4,a4,15
1462: 00170693 addi a3,a4,1
1466: 007a1737 lui a4,0x7a1
146a: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
146e: 02d75733 divu a4,a4,a3
1472: c118 sw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:649
Pll2mull = (uint8_t)((RCC->CFGR2 & 0xF00)>>8);
1474: 55d4 lw a3,44(a1)
1476: 82a1 srli a3,a3,0x8
1478: 8abd andi a3,a3,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:651
if(Pll2mull == 0) RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency * 5)>>1;
147a: e28d bnez a3,149c <RCC_GetClocksFreq+0x146>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:651 (discriminator 1)
147c: 4695 li a3,5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:652 (discriminator 1)
else if(Pll2mull == 1) RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency * 25)>>1;
147e: 02d70733 mul a4,a4,a3
1482: 8305 srli a4,a4,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:654
else RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency * (Pll2mull + 2);
1484: c118 sw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:656
RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
1486: 40021737 lui a4,0x40021
148a: 5758 lw a4,44(a4)
148c: 4114 lw a3,0(a0)
148e: 8b3d andi a4,a4,15
1490: 0705 addi a4,a4,1
1492: 02e6d733 divu a4,a3,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:659
RCC_Clocks->SYSCLK_Frequency = HSE_VALUE/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
1496: c118 sw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:662
RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency * pllmull;
1498: 4118 lw a4,0(a0)
149a: b771 j 1426 <RCC_GetClocksFreq+0xd0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:652
else if(Pll2mull == 1) RCC_Clocks->SYSCLK_Frequency = (RCC_Clocks->SYSCLK_Frequency * 25)>>1;
149c: 4585 li a1,1
149e: 00b69463 bne a3,a1,14a6 <RCC_GetClocksFreq+0x150>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:652 (discriminator 1)
14a2: 46e5 li a3,25
14a4: bfe9 j 147e <RCC_GetClocksFreq+0x128>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:653
else if(Pll2mull == 15) RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency * 20;
14a6: 45bd li a1,15
14a8: 00b69663 bne a3,a1,14b4 <RCC_GetClocksFreq+0x15e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:653 (discriminator 1)
14ac: 46d1 li a3,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:654
else RCC_Clocks->SYSCLK_Frequency = RCC_Clocks->SYSCLK_Frequency * (Pll2mull + 2);
14ae: 02e68733 mul a4,a3,a4
14b2: bfc9 j 1484 <RCC_GetClocksFreq+0x12e>
14b4: 0689 addi a3,a3,2
14b6: bfe5 j 14ae <RCC_GetClocksFreq+0x158>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:659
RCC_Clocks->SYSCLK_Frequency = HSE_VALUE/((RCC->CFGR2 & 0xF) + 1); /* PREDIV1 */
14b8: 8b3d andi a4,a4,15
14ba: 00170693 addi a3,a4,1 # 40021001 <__freertos_irq_stack_top+0x1fff1001>
14be: 007a1737 lui a4,0x7a1
14c2: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
14c6: 02d75733 divu a4,a4,a3
14ca: b7f1 j 1496 <RCC_GetClocksFreq+0x140>
000014cc <RCC_AHBPeriphClockCmd>:
RCC_AHBPeriphClockCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:722
*
* @return none
*/
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
{
if(NewState != DISABLE)
14cc: c599 beqz a1,14da <RCC_AHBPeriphClockCmd+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:724
{
RCC->AHBPCENR |= RCC_AHBPeriph;
14ce: 40021737 lui a4,0x40021
14d2: 4b5c lw a5,20(a4)
14d4: 8d5d or a0,a0,a5
14d6: cb48 sw a0,20(a4)
14d8: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:728
}
else
{
RCC->AHBPCENR &= ~RCC_AHBPeriph;
14da: 400217b7 lui a5,0x40021
14de: 4bd8 lw a4,20(a5)
14e0: fff54513 not a0,a0
14e4: 8d79 and a0,a0,a4
14e6: cbc8 sw a0,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:730
}
}
14e8: 8082 ret
000014ea <RCC_APB2PeriphClockCmd>:
RCC_APB2PeriphClockCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:758
*
* @return none
*/
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)
{
if(NewState != DISABLE)
14ea: c599 beqz a1,14f8 <RCC_APB2PeriphClockCmd+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:760
{
RCC->APB2PCENR |= RCC_APB2Periph;
14ec: 40021737 lui a4,0x40021
14f0: 4f1c lw a5,24(a4)
14f2: 8d5d or a0,a0,a5
14f4: cf08 sw a0,24(a4)
14f6: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:764
}
else
{
RCC->APB2PCENR &= ~RCC_APB2Periph;
14f8: 400217b7 lui a5,0x40021
14fc: 4f98 lw a4,24(a5)
14fe: fff54513 not a0,a0
1502: 8d79 and a0,a0,a4
1504: cf88 sw a0,24(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:766
}
}
1506: 8082 ret
00001508 <RCC_APB1PeriphClockCmd>:
RCC_APB1PeriphClockCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:803
*
* @return none
*/
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
{
if(NewState != DISABLE)
1508: c599 beqz a1,1516 <RCC_APB1PeriphClockCmd+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:805
{
RCC->APB1PCENR |= RCC_APB1Periph;
150a: 40021737 lui a4,0x40021
150e: 4f5c lw a5,28(a4)
1510: 8d5d or a0,a0,a5
1512: cf48 sw a0,28(a4)
1514: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:809
}
else
{
RCC->APB1PCENR &= ~RCC_APB1Periph;
1516: 400217b7 lui a5,0x40021
151a: 4fd8 lw a4,28(a5)
151c: fff54513 not a0,a0
1520: 8d79 and a0,a0,a4
1522: cfc8 sw a0,28(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:811
}
}
1524: 8082 ret
00001526 <RCC_AHBPeriphResetCmd>:
RCC_AHBPeriphResetCmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1295
*
* @return none
*/
void RCC_AHBPeriphResetCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState)
{
if(NewState != DISABLE)
1526: c599 beqz a1,1534 <RCC_AHBPeriphResetCmd+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1297
{
RCC->AHBRSTR |= RCC_AHBPeriph;
1528: 40021737 lui a4,0x40021
152c: 571c lw a5,40(a4)
152e: 8d5d or a0,a0,a5
1530: d708 sw a0,40(a4)
1532: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1301
}
else
{
RCC->AHBRSTR &= ~RCC_AHBPeriph;
1534: 400217b7 lui a5,0x40021
1538: 5798 lw a4,40(a5)
153a: fff54513 not a0,a0
153e: 8d79 and a0,a0,a4
1540: d788 sw a0,40(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1303
}
}
1542: 8082 ret
00001544 <RCC_ETH1GCLKConfig>:
RCC_ETH1GCLKConfig():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1357
*
* @return none
*/
void RCC_ETH1GCLKConfig(uint32_t RCC_ETH1GCLKSource)
{
RCC->CFGR2 &= ~(3 << 20);
1544: 400217b7 lui a5,0x40021
1548: 57d8 lw a4,44(a5)
154a: ffd006b7 lui a3,0xffd00
154e: 16fd addi a3,a3,-1
1550: 8f75 and a4,a4,a3
1552: d7d8 sw a4,44(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1358
RCC->CFGR2 |= RCC_ETH1GCLKSource << 20;
1554: 57d8 lw a4,44(a5)
1556: 0552 slli a0,a0,0x14
1558: 8d59 or a0,a0,a4
155a: d7c8 sw a0,44(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1359
}
155c: 8082 ret
0000155e <RCC_ETH1G_125Mcmd>:
RCC_ETH1G_125Mcmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1372
*
* @return none
*/
void RCC_ETH1G_125Mcmd(FunctionalState NewState)
{
if(NewState != DISABLE)
155e: c909 beqz a0,1570 <RCC_ETH1G_125Mcmd+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1374
{
RCC->CFGR2 |= (1 << 22);
1560: 40021737 lui a4,0x40021
1564: 575c lw a5,44(a4)
1566: 004006b7 lui a3,0x400
156a: 8fd5 or a5,a5,a3
156c: d75c sw a5,44(a4)
156e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1378
}
else
{
RCC->CFGR2 &= ~(1 << 22);
1570: 400216b7 lui a3,0x40021
1574: 56dc lw a5,44(a3)
1576: ffc00737 lui a4,0xffc00
157a: 177d addi a4,a4,-1
157c: 8ff9 and a5,a5,a4
157e: d6dc sw a5,44(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_rcc.c:1380
}
}
1580: 8082 ret
00001582 <TIM_TimeBaseInit>:
TIM_TimeBaseInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:110
*/
void TIM_TimeBaseInit(TIM_TypeDef *TIMx, TIM_TimeBaseInitTypeDef *TIM_TimeBaseInitStruct)
{
uint16_t tmpcr1 = 0;
uint32_t temper1 = 0;
temper1 = ((*( uint32_t * )0x1FFFF704) & 0x000000F0) >> 4;
1582: 1ffff737 lui a4,0x1ffff
1586: 70472703 lw a4,1796(a4) # 1ffff704 <_data_lma+0x1fff21f0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:111
tmpcr1 = TIMx->CTLR1;
158a: 211e lhu a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113
if(((temper1>=4)&&(temper1<=8))&&((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)))
158c: 4691 li a3,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:110
temper1 = ((*( uint32_t * )0x1FFFF704) & 0x000000F0) >> 4;
158e: 8311 srli a4,a4,0x4
1590: 8b3d andi a4,a4,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:111
tmpcr1 = TIMx->CTLR1;
1592: 07c2 slli a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113
if(((temper1>=4)&&(temper1<=8))&&((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)))
1594: 1771 addi a4,a4,-4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:111
tmpcr1 = TIMx->CTLR1;
1596: 83c1 srli a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113
if(((temper1>=4)&&(temper1<=8))&&((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10)))
1598: 02e6e663 bltu a3,a4,15c4 <TIM_TimeBaseInit+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113 (discriminator 1)
159c: 40013737 lui a4,0x40013
15a0: c0070693 addi a3,a4,-1024 # 40012c00 <__freertos_irq_stack_top+0x1ffe2c00>
15a4: 00d50e63 beq a0,a3,15c0 <TIM_TimeBaseInit+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113 (discriminator 2)
15a8: 40070713 addi a4,a4,1024
15ac: 00e50a63 beq a0,a4,15c0 <TIM_TimeBaseInit+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113 (discriminator 3)
15b0: 40015737 lui a4,0x40015
15b4: c0070693 addi a3,a4,-1024 # 40014c00 <__freertos_irq_stack_top+0x1ffe4c00>
15b8: 00d50463 beq a0,a3,15c0 <TIM_TimeBaseInit+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:113 (discriminator 4)
15bc: 00e51a63 bne a0,a4,15d0 <TIM_TimeBaseInit+0x4e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:115
{
tmpcr1 |= 1<<13;
15c0: 6709 lui a4,0x2
15c2: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:118
}
if((TIMx == TIM1) || (TIMx == TIM2) || (TIMx == TIM3) || (TIMx == TIM4) ||
15c4: 40013737 lui a4,0x40013
15c8: c0070713 addi a4,a4,-1024 # 40012c00 <__freertos_irq_stack_top+0x1ffe2c00>
15cc: 04e50263 beq a0,a4,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:118 (discriminator 1)
15d0: 40000737 lui a4,0x40000
15d4: 02e50e63 beq a0,a4,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:118 (discriminator 2)
15d8: 40070713 addi a4,a4,1024 # 40000400 <__freertos_irq_stack_top+0x1ffd0400>
15dc: 02e50a63 beq a0,a4,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:118 (discriminator 3)
15e0: 40001737 lui a4,0x40001
15e4: 80070693 addi a3,a4,-2048 # 40000800 <__freertos_irq_stack_top+0x1ffd0800>
15e8: 02d50463 beq a0,a3,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:118 (discriminator 4)
15ec: c0070713 addi a4,a4,-1024
15f0: 02e50063 beq a0,a4,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:119
(TIMx == TIM5) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10))
15f4: 40013737 lui a4,0x40013
15f8: 40070713 addi a4,a4,1024 # 40013400 <__freertos_irq_stack_top+0x1ffe3400>
15fc: 00e50a63 beq a0,a4,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:119 (discriminator 1)
1600: 40015737 lui a4,0x40015
1604: c0070693 addi a3,a4,-1024 # 40014c00 <__freertos_irq_stack_top+0x1ffe4c00>
1608: 00d50463 beq a0,a3,1610 <TIM_TimeBaseInit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:119 (discriminator 2)
160c: 00e51863 bne a0,a4,161c <TIM_TimeBaseInit+0x9a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:121
{
tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_DIR | TIM_CMS)));
1610: f8f7f793 andi a5,a5,-113
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:122
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode;
1614: 21ba lhu a4,2(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:121
tmpcr1 &= (uint16_t)(~((uint16_t)(TIM_DIR | TIM_CMS)));
1616: 07c2 slli a5,a5,0x10
1618: 83c1 srli a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:122
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_CounterMode;
161a: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:125
}
if((TIMx != TIM6) && (TIMx != TIM7))
161c: 40001737 lui a4,0x40001
1620: 00e50c63 beq a0,a4,1638 <TIM_TimeBaseInit+0xb6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:125 (discriminator 1)
1624: 40070713 addi a4,a4,1024 # 40001400 <__freertos_irq_stack_top+0x1ffd1400>
1628: 00e50863 beq a0,a4,1638 <TIM_TimeBaseInit+0xb6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:127
{
tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CTLR1_CKD));
162c: cff7f793 andi a5,a5,-769
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:128
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision;
1630: 21fa lhu a4,6(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:127
tmpcr1 &= (uint16_t)(~((uint16_t)TIM_CTLR1_CKD));
1632: 07c2 slli a5,a5,0x10
1634: 83c1 srli a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:128
tmpcr1 |= (uint32_t)TIM_TimeBaseInitStruct->TIM_ClockDivision;
1636: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:131
}
TIMx->CTLR1 = tmpcr1;
1638: a11e sh a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:132
TIMx->ATRLR = TIM_TimeBaseInitStruct->TIM_Period;
163a: 21de lhu a5,4(a1)
163c: b55e sh a5,44(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:133
TIMx->PSC = TIM_TimeBaseInitStruct->TIM_Prescaler;
163e: 219e lhu a5,0(a1)
1640: b51e sh a5,40(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:135
if((TIMx == TIM1) || (TIMx == TIM8) || (TIMx == TIM9) || (TIMx == TIM10))
1642: 400137b7 lui a5,0x40013
1646: c0078713 addi a4,a5,-1024 # 40012c00 <__freertos_irq_stack_top+0x1ffe2c00>
164a: 00e50e63 beq a0,a4,1666 <TIM_TimeBaseInit+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:135 (discriminator 1)
164e: 40078793 addi a5,a5,1024
1652: 00f50a63 beq a0,a5,1666 <TIM_TimeBaseInit+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:135 (discriminator 2)
1656: 400157b7 lui a5,0x40015
165a: c0078713 addi a4,a5,-1024 # 40014c00 <__freertos_irq_stack_top+0x1ffe4c00>
165e: 00e50463 beq a0,a4,1666 <TIM_TimeBaseInit+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:135 (discriminator 3)
1662: 00f51463 bne a0,a5,166a <TIM_TimeBaseInit+0xe8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:137
{
TIMx->RPTCR = TIM_TimeBaseInitStruct->TIM_RepetitionCounter;
1666: 259c lbu a5,8(a1)
1668: b91e sh a5,48(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:140
}
TIMx->SWEVGR = TIM_PSCReloadMode_Immediate;
166a: 4785 li a5,1
166c: a95e sh a5,20(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:141
}
166e: 8082 ret
00001670 <TIM_Cmd>:
TIM_Cmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:522
*/
void TIM_Cmd(TIM_TypeDef *TIMx, FunctionalState NewState)
{
if(NewState != DISABLE)
{
TIMx->CTLR1 |= TIM_CEN;
1670: 211e lhu a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:520
if(NewState != DISABLE)
1672: c589 beqz a1,167c <TIM_Cmd+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:522
TIMx->CTLR1 |= TIM_CEN;
1674: 0017e793 ori a5,a5,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:526
}
else
{
TIMx->CTLR1 &= (uint16_t)(~((uint16_t)TIM_CEN));
1678: a11e sh a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:528
}
}
167a: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:526
TIMx->CTLR1 &= (uint16_t)(~((uint16_t)TIM_CEN));
167c: 07c2 slli a5,a5,0x10
167e: 83c1 srli a5,a5,0x10
1680: 9bf9 andi a5,a5,-2
1682: 07c2 slli a5,a5,0x10
1684: 83c1 srli a5,a5,0x10
1686: bfcd j 1678 <TIM_Cmd+0x8>
00001688 <TIM_ITConfig>:
TIM_ITConfig():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:576
*/
void TIM_ITConfig(TIM_TypeDef *TIMx, uint16_t TIM_IT, FunctionalState NewState)
{
if(NewState != DISABLE)
{
TIMx->DMAINTENR |= TIM_IT;
1688: 255e lhu a5,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:574
if(NewState != DISABLE)
168a: c601 beqz a2,1692 <TIM_ITConfig+0xa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:576
TIMx->DMAINTENR |= TIM_IT;
168c: 8ddd or a1,a1,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:580
}
else
{
TIMx->DMAINTENR &= (uint16_t)~TIM_IT;
168e: a54e sh a1,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:582
}
}
1690: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_tim.c:580
TIMx->DMAINTENR &= (uint16_t)~TIM_IT;
1692: fff5c593 not a1,a1
1696: 8dfd and a1,a1,a5
1698: bfdd j 168e <TIM_ITConfig+0x6>
0000169a <TIM_ClearITPendingBit>:
TIM_ClearITPendingBit():
169a: fff5c593 not a1,a1
169e: 05c2 slli a1,a1,0x10
16a0: 81c1 srli a1,a1,0x10
16a2: a90e sh a1,16(a0)
16a4: 8082 ret
000016a6 <USART_Init>:
USART_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:122
* USART peripheral.
*
* @return none
*/
void USART_Init(USART_TypeDef *USARTx, USART_InitTypeDef *USART_InitStruct)
{
16a6: e71fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:134
if(USART_InitStruct->USART_HardwareFlowControl != USART_HardwareFlowControl_None)
{
}
usartxbase = (uint32_t)USARTx;
tmpreg = USARTx->CTLR2;
16aa: 2916 lhu a3,16(a0)
16ac: 77f5 lui a5,0xffffd
16ae: 17fd addi a5,a5,-1
16b0: 8ff5 and a5,a5,a3
16b2: 21f6 lhu a3,6(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:129
if(USART_InitStruct->USART_HardwareFlowControl != USART_HardwareFlowControl_None)
16b4: 25da lhu a4,12(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:122
{
16b6: 7179 addi sp,sp,-48
16b8: 8fd5 or a5,a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:138
tmpreg &= CTLR2_STOP_CLEAR_Mask;
tmpreg |= (uint32_t)USART_InitStruct->USART_StopBits;
USARTx->CTLR2 = (uint16_t)tmpreg;
16ba: a91e sh a5,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:139
tmpreg = USARTx->CTLR1;
16bc: 2556 lhu a3,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:141
tmpreg &= CTLR1_CLEAR_Mask;
tmpreg |= (uint32_t)USART_InitStruct->USART_WordLength | USART_InitStruct->USART_Parity |
16be: 77fd lui a5,0xfffff
16c0: 9f378793 addi a5,a5,-1549 # ffffe9f3 <__freertos_irq_stack_top+0xdffce9f3>
16c4: 8ff5 and a5,a5,a3
16c6: 21d6 lhu a3,4(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:122
{
16c8: 842a mv s0,a0
16ca: c62e sw a1,12(sp)
16cc: 8fd5 or a5,a5,a3
16ce: 2596 lhu a3,8(a1)
16d0: 8fd5 or a5,a5,a3
16d2: 25b6 lhu a3,10(a1)
16d4: 8fd5 or a5,a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:143
USART_InitStruct->USART_Mode;
USARTx->CTLR1 = (uint16_t)tmpreg;
16d6: a55e sh a5,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:145
tmpreg = USARTx->CTLR3;
16d8: 295e lhu a5,20(a0)
16da: 07c2 slli a5,a5,0x10
16dc: 83c1 srli a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:147
tmpreg &= CTLR3_CLEAR_Mask;
tmpreg |= USART_InitStruct->USART_HardwareFlowControl;
16de: cff7f793 andi a5,a5,-769
16e2: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:148
USARTx->CTLR3 = (uint16_t)tmpreg;
16e4: a95e sh a5,20(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:150
RCC_GetClocksFreq(&RCC_ClocksStatus);
16e6: 0868 addi a0,sp,28
16e8: 31bd jal 1356 <RCC_GetClocksFreq>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:152
if(usartxbase == USART1_BASE)
16ea: 400147b7 lui a5,0x40014
16ee: 80078793 addi a5,a5,-2048 # 40013800 <__freertos_irq_stack_top+0x1ffe3800>
16f2: 45b2 lw a1,12(sp)
16f4: 02f41e63 bne s0,a5,1730 <USART_Init+0x8a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:154
{
apbclock = RCC_ClocksStatus.PCLK2_Frequency;
16f8: 57a2 lw a5,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:161
else
{
apbclock = RCC_ClocksStatus.PCLK1_Frequency;
}
integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));
16fa: 4765 li a4,25
16fc: 02e787b3 mul a5,a5,a4
1700: 4198 lw a4,0(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:162
tmpreg = (integerdivider / 100) << 4;
1702: 06400693 li a3,100
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:161
integerdivider = ((25 * apbclock) / (4 * (USART_InitStruct->USART_BaudRate)));
1706: 070a slli a4,a4,0x2
1708: 02e7d7b3 divu a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:162
tmpreg = (integerdivider / 100) << 4;
170c: 02d7d733 divu a4,a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:164
fractionaldivider = integerdivider - (100 * (tmpreg >> 4));
tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
1710: 02d7f7b3 remu a5,a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:162
tmpreg = (integerdivider / 100) << 4;
1714: 0712 slli a4,a4,0x4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:164
tmpreg |= ((((fractionaldivider * 16) + 50) / 100)) & ((uint8_t)0x0F);
1716: 0792 slli a5,a5,0x4
1718: 03278793 addi a5,a5,50
171c: 02d7d7b3 divu a5,a5,a3
1720: 8bbd andi a5,a5,15
1722: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:165
USARTx->BRR = (uint16_t)tmpreg;
1724: 07c2 slli a5,a5,0x10
1726: 83c1 srli a5,a5,0x10
1728: a41e sh a5,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:166
}
172a: 6145 addi sp,sp,48
172c: e0ffe06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:158
apbclock = RCC_ClocksStatus.PCLK1_Frequency;
1730: 5792 lw a5,36(sp)
1732: b7e1 j 16fa <USART_Init+0x54>
00001734 <USART_Cmd>:
USART_Cmd():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:244
*
* @return none
*/
void USART_Cmd(USART_TypeDef *USARTx, FunctionalState NewState)
{
if(NewState != DISABLE)
1734: c591 beqz a1,1740 <USART_Cmd+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:246
{
USARTx->CTLR1 |= CTLR1_UE_Set;
1736: 255e lhu a5,12(a0)
1738: 6709 lui a4,0x2
173a: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:250
}
else
{
USARTx->CTLR1 &= CTLR1_UE_Reset;
173c: a55e sh a5,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:252
}
}
173e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:250
USARTx->CTLR1 &= CTLR1_UE_Reset;
1740: 255a lhu a4,12(a0)
1742: 77f9 lui a5,0xffffe
1744: 17fd addi a5,a5,-1
1746: 8ff9 and a5,a5,a4
1748: bfd5 j 173c <USART_Cmd+0x8>
0000174a <USART_SendData>:
USART_SendData():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:447
*
* @return none
*/
void USART_SendData(USART_TypeDef *USARTx, uint16_t Data)
{
USARTx->DATAR = (Data & (uint16_t)0x01FF);
174a: 1ff5f593 andi a1,a1,511
174e: a14e sh a1,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:448
}
1750: 8082 ret
00001752 <USART_GetFlagStatus>:
USART_GetFlagStatus():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:649
*/
FlagStatus USART_GetFlagStatus(USART_TypeDef *USARTx, uint16_t USART_FLAG)
{
FlagStatus bitstatus = RESET;
if((USARTx->STATR & USART_FLAG) != (uint16_t)RESET)
1752: 210a lhu a0,0(a0)
1754: 8d6d and a0,a0,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Peripheral/src/ch32v30x_usart.c:658
else
{
bitstatus = RESET;
}
return bitstatus;
}
1756: 00a03533 snez a0,a0
175a: 8082 ret
0000175c <ETH_TxPktChainMode>:
ETH_TxPktChainMode():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:484
* @return Send status.
*/
uint32_t ETH_TxPktChainMode(uint16_t len, uint32_t *pBuff )
{
/* Check if the descriptor is owned by the ETHERNET DMA (when set) or CPU (when reset) */
if((DMATxDescToSet->Status & ETH_DMATxDesc_OWN) != (u32)RESET)
175c: 200006b7 lui a3,0x20000
1760: 0b46a783 lw a5,180(a3) # 200000b4 <DMATxDescToSet>
1764: 4398 lw a4,0(a5)
1766: 02074b63 bltz a4,179c <ETH_TxPktChainMode+0x40>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:497
/* Setting the last segment and first segment bits (in this case a frame is transmitted in one descriptor) */
#if HARDWARE_CHECKSUM_CONFIG
DMATxDescToSet->Status |= ETH_DMATxDesc_LS | ETH_DMATxDesc_FS | ETH_DMATxDesc_CIC_TCPUDPICMP_Full;
#else
DMATxDescToSet->Status |= ETH_DMATxDesc_LS | ETH_DMATxDesc_FS;
176a: 4398 lw a4,0(a5)
176c: 30000637 lui a2,0x30000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:490
DMATxDescToSet->ControlBufferSize = (len & ETH_DMATxDesc_TBS1);
1770: 054e slli a0,a0,0x13
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:497
DMATxDescToSet->Status |= ETH_DMATxDesc_LS | ETH_DMATxDesc_FS;
1772: 8f51 or a4,a4,a2
1774: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:501
#endif
/* Set Own bit of the Tx descriptor Status: gives the buffer back to ETHERNET DMA */
DMATxDescToSet->Status |= ETH_DMATxDesc_OWN;
1776: 4398 lw a4,0(a5)
1778: 80000637 lui a2,0x80000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:490
DMATxDescToSet->ControlBufferSize = (len & ETH_DMATxDesc_TBS1);
177c: 814d srli a0,a0,0x13
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:501
DMATxDescToSet->Status |= ETH_DMATxDesc_OWN;
177e: 8f51 or a4,a4,a2
1780: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:490
DMATxDescToSet->ControlBufferSize = (len & ETH_DMATxDesc_TBS1);
1782: c3c8 sw a0,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:491
DMATxDescToSet->Buffer1Addr = (uint32_t)pBuff;
1784: c78c sw a1,8(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:504
/* Clear TBUS ETHERNET DMA flag */
ETH->DMASR = ETH_DMASR_TBUS;
1786: 40029737 lui a4,0x40029
178a: 4611 li a2,4
178c: cb50 sw a2,20(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:506
/* Resume DMA transmission*/
ETH->DMATPDR = 0;
178e: 00072223 sw zero,4(a4) # 40029004 <__freertos_irq_stack_top+0x1fff9004>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:511
/* Update the ETHERNET DMA global Tx descriptor with next Tx descriptor */
/* Chained Mode */
/* Selects the next DMA Tx descriptor list for next buffer to send */
DMATxDescToSet = (ETH_DMADESCTypeDef*) (DMATxDescToSet->Buffer2NextDescAddr);
1792: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:513
/* Return SUCCESS */
return ETH_SUCCESS;
1794: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:511
DMATxDescToSet = (ETH_DMADESCTypeDef*) (DMATxDescToSet->Buffer2NextDescAddr);
1796: 0af6aa23 sw a5,180(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:513
return ETH_SUCCESS;
179a: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:487
return ETH_ERROR;
179c: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:514
}
179e: 8082 ret
000017a0 <WCHNET_GetMacAddr>:
WCHNET_GetMacAddr():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:71
*p = *macaddr;
17a0: 1ffff737 lui a4,0x1ffff
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:65
{
17a4: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:71
*p = *macaddr;
17a6: 7ed70713 addi a4,a4,2029 # 1ffff7ed <_data_lma+0x1fff22d9>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:69
for(i=0;i<6;i++)
17aa: 4699 li a3,6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:71 (discriminator 3)
*p = *macaddr;
17ac: 40f70633 sub a2,a4,a5
17b0: 220c lbu a1,0(a2)
17b2: 00f50633 add a2,a0,a5
17b6: 0785 addi a5,a5,1
17b8: a20c sb a1,0(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:69 (discriminator 3)
for(i=0;i<6;i++)
17ba: fed799e3 bne a5,a3,17ac <WCHNET_GetMacAddr+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:75
}
17be: 8082 ret
000017c0 <WCHNET_TimeIsr>:
WCHNET_TimeIsr():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:86
LocalTime += timperiod;
17c0: 200007b7 lui a5,0x20000
17c4: 0c878793 addi a5,a5,200 # 200000c8 <LocalTime>
17c8: 4398 lw a4,0(a5)
17ca: 953a add a0,a0,a4
17cc: c388 sw a0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:87
}
17ce: 8082 ret
000017d0 <ETH_RGMIIPinInit>:
ETH_RGMIIPinInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:143
{
17d0: d1ffe2ef jal t0,4ee <__riscv_save_10>
17d4: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:146
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
17d6: 4585 li a1,1
17d8: 4505 li a0,1
17da: 3b01 jal 14ea <RCC_APB2PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:147
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
17dc: 4585 li a1,1
17de: 4571 li a0,28
17e0: 3329 jal 14ea <RCC_APB2PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:148
GPIOB->CFGHR &= ~(0xff<<16);
17e2: 40011937 lui s2,0x40011
17e6: c0492783 lw a5,-1020(s2) # 40010c04 <__freertos_irq_stack_top+0x1ffe0c04>
17ea: ff010737 lui a4,0xff010
17ee: 177d addi a4,a4,-1
17f0: 8ff9 and a5,a5,a4
17f2: c0f92223 sw a5,-1020(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:149
GPIOB->CFGHR |= (0xbb<<16);
17f6: c0492783 lw a5,-1020(s2)
17fa: 00bb0737 lui a4,0xbb0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:152
GPIO_Output(GPIOA, GPIO_Pin_2);
17fe: 440d li s0,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:149
GPIOB->CFGHR |= (0xbb<<16);
1800: 8fd9 or a5,a5,a4
1802: c0f92223 sw a5,-1020(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:150
GPIOB->CFGLR &= ~(0xff<<4);
1806: c0092783 lw a5,-1024(s2)
180a: 777d lui a4,0xfffff
180c: 073d addi a4,a4,15
180e: 8ff9 and a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:152
GPIO_Output(GPIOA, GPIO_Pin_2);
1810: 44e1 li s1,24
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:150
GPIOB->CFGLR &= ~(0xff<<4);
1812: c0f92023 sw a5,-1024(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:152
GPIO_Output(GPIOA, GPIO_Pin_2);
1816: 004c addi a1,sp,4
1818: 4791 li a5,4
181a: 80090513 addi a0,s2,-2048
181e: 827c sh a5,4(sp)
1820: c422 sw s0,8(sp)
1822: c626 sw s1,12(sp)
1824: a0bff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:153
GPIO_Output(GPIOA, GPIO_Pin_3);
1828: 4ba1 li s7,8
182a: 004c addi a1,sp,4
182c: 80090513 addi a0,s2,-2048
1830: 01711223 sh s7,4(sp)
1834: c422 sw s0,8(sp)
1836: c626 sw s1,12(sp)
1838: 9f7ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:154
GPIO_Output(GPIOA, GPIO_Pin_7);
183c: 08000b13 li s6,128
1840: 004c addi a1,sp,4
1842: 80090513 addi a0,s2,-2048
1846: 01611223 sh s6,4(sp)
184a: c422 sw s0,8(sp)
184c: c626 sw s1,12(sp)
184e: 9e1ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:155
GPIO_Output(GPIOC, GPIO_Pin_4);
1852: 47c1 li a5,16
1854: 004c addi a1,sp,4
1856: 40011537 lui a0,0x40011
185a: 827c sh a5,4(sp)
185c: c422 sw s0,8(sp)
185e: c626 sw s1,12(sp)
1860: 9cfff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:156
GPIO_Output(GPIOC, GPIO_Pin_5);
1864: 02000793 li a5,32
1868: 004c addi a1,sp,4
186a: 40011537 lui a0,0x40011
186e: 827c sh a5,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:148
GPIOB->CFGHR &= ~(0xff<<16);
1870: c0090993 addi s3,s2,-1024
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:156
GPIO_Output(GPIOC, GPIO_Pin_5);
1874: c422 sw s0,8(sp)
1876: c626 sw s1,12(sp)
1878: 9b7ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:157
GPIO_Output(GPIOB, GPIO_Pin_0);
187c: 4a85 li s5,1
187e: 004c addi a1,sp,4
1880: 854e mv a0,s3
1882: 01511223 sh s5,4(sp)
1886: c422 sw s0,8(sp)
1888: c626 sw s1,12(sp)
188a: 9a5ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:159
GPIO_Input(GPIOC, GPIO_Pin_0);
188e: 4491 li s1,4
1890: 004c addi a1,sp,4
1892: 40011537 lui a0,0x40011
1896: 01511223 sh s5,4(sp)
189a: c422 sw s0,8(sp)
189c: c626 sw s1,12(sp)
189e: 991ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:160
GPIO_Input(GPIOC, GPIO_Pin_1);
18a2: 4a09 li s4,2
18a4: 004c addi a1,sp,4
18a6: 40011537 lui a0,0x40011
18aa: 01411223 sh s4,4(sp)
18ae: c422 sw s0,8(sp)
18b0: c626 sw s1,12(sp)
18b2: 97dff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:161
GPIO_Input(GPIOC, GPIO_Pin_2);
18b6: 004c addi a1,sp,4
18b8: 40011537 lui a0,0x40011
18bc: 8264 sh s1,4(sp)
18be: c422 sw s0,8(sp)
18c0: c626 sw s1,12(sp)
18c2: 96dff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:162
GPIO_Input(GPIOC, GPIO_Pin_3);
18c6: 004c addi a1,sp,4
18c8: 40011537 lui a0,0x40011
18cc: 01711223 sh s7,4(sp)
18d0: c422 sw s0,8(sp)
18d2: c626 sw s1,12(sp)
18d4: 95bff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:163
GPIO_Input(GPIOA, GPIO_Pin_0);
18d8: 004c addi a1,sp,4
18da: 80090513 addi a0,s2,-2048
18de: 01511223 sh s5,4(sp)
18e2: c422 sw s0,8(sp)
18e4: c626 sw s1,12(sp)
18e6: 949ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:164
GPIO_Input(GPIOA, GPIO_Pin_1);
18ea: 004c addi a1,sp,4
18ec: 80090513 addi a0,s2,-2048
18f0: 01411223 sh s4,4(sp)
18f4: c422 sw s0,8(sp)
18f6: c626 sw s1,12(sp)
18f8: 937ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:166
GPIO_Input(GPIOB, GPIO_Pin_1); /* 125m in */
18fc: 004c addi a1,sp,4
18fe: 854e mv a0,s3
1900: 01411223 sh s4,4(sp)
1904: c422 sw s0,8(sp)
1906: c626 sw s1,12(sp)
1908: 927ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:167
GPIO_Input(GPIOC, GPIO_Pin_7); /* interrupt pin */
190c: 004c addi a1,sp,4
190e: 40011537 lui a0,0x40011
1912: 01611223 sh s6,4(sp)
1916: c422 sw s0,8(sp)
1918: c626 sw s1,12(sp)
191a: 915ff0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:168
}
191e: 0141 addi sp,sp,16
1920: c07fe06f j 526 <__riscv_restore_10>
00001924 <ETH_PHYLink>:
ETH_PHYLink():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:242
{
1924: bd9fe2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:248
ETH_WritePHYRegister( gPHYAddress, 0x1F, 0x0a43 );
1928: 200004b7 lui s1,0x20000
192c: 0cc48413 addi s0,s1,204 # 200000cc <gPHYAddress>
1930: 200a lhu a0,0(s0)
1932: 6605 lui a2,0x1
1934: a4360613 addi a2,a2,-1469 # a43 <main+0x11d>
1938: 45fd li a1,31
193a: dc0ff0ef jal ra,efa <ETH_WritePHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:251
ETH_ReadPHYRegister( gPHYAddress, 0x1A);
193e: 200a lhu a0,0(s0)
1940: 45e9 li a1,26
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:254
if((ChipId & 0xf0) <= 0x20)
1942: 200009b7 lui s3,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:251
ETH_ReadPHYRegister( gPHYAddress, 0x1A);
1946: d5cff0ef jal ra,ea2 <ETH_ReadPHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:252
phy_stat = ETH_ReadPHYRegister( gPHYAddress, 0x1A);
194a: 200a lhu a0,0(s0)
194c: 45e9 li a1,26
194e: 0cc48493 addi s1,s1,204
1952: d50ff0ef jal ra,ea2 <ETH_ReadPHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:254
if((ChipId & 0xf0) <= 0x20)
1956: 0bc9a783 lw a5,188(s3) # 200000bc <ChipId>
195a: 02000713 li a4,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:252
phy_stat = ETH_ReadPHYRegister( gPHYAddress, 0x1A);
195e: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:254
if((ChipId & 0xf0) <= 0x20)
1960: 0f07f793 andi a5,a5,240
1964: 0bc98993 addi s3,s3,188
1968: 4941 li s2,16
196a: 06f77b63 bgeu a4,a5,19e0 <ETH_PHYLink+0xbc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:264
LastPhyStat = phy_stat & 0x04;
196e: 00447913 andi s2,s0,4
1972: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:266
WCHNET_PhyStatus( phy_stat );
1976: 8522 mv a0,s0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:264
LastPhyStat = phy_stat & 0x04;
1978: 0d279023 sh s2,192(a5) # 200000c0 <LastPhyStat>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:266
WCHNET_PhyStatus( phy_stat );
197c: 192040ef jal ra,5b0e <WCHNET_PhyStatus>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:268
if( phy_stat & 0x04 )
1980: 02090d63 beqz s2,19ba <ETH_PHYLink+0x96>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:271
RGMII_TXC_Delay(0, 4);
1984: 4591 li a1,4
1986: 4501 li a0,0
1988: ef8ff0ef jal ra,1080 <RGMII_TXC_Delay>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:272
if( phy_stat & 0x08 )
198c: 00847793 andi a5,s0,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:274
ETH->MACCR |= ETH_Mode_FullDuplex;
1990: 400286b7 lui a3,0x40028
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:272
if( phy_stat & 0x08 )
1994: c3ad beqz a5,19f6 <ETH_PHYLink+0xd2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:274
ETH->MACCR |= ETH_Mode_FullDuplex;
1996: 429c lw a5,0(a3)
1998: 6705 lui a4,0x1
199a: 80070713 addi a4,a4,-2048 # 800 <__stack_size>
199e: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:278
ETH->MACCR &= ~ETH_Mode_FullDuplex;
19a0: c29c sw a5,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:280
if( (phy_stat & 0x30) == 0x00 )
19a2: 03047413 andi s0,s0,48
19a6: ec31 bnez s0,1a02 <ETH_PHYLink+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:282
ETH->MACCR &= ~(ETH_Speed_100M|ETH_Speed_1000M);
19a8: 400286b7 lui a3,0x40028
19ac: 429c lw a5,0(a3)
19ae: 7751 lui a4,0xffff4
19b0: 177d addi a4,a4,-1
19b2: 8ff9 and a5,a5,a4
19b4: c29c sw a5,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:297
ETH_Start( );
19b6: e7aff0ef jal ra,1030 <ETH_Start>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:299
phy_stat = ETH_ReadPHYRegister( gPHYAddress, 0x1D); /* Clear the Interrupt status */
19ba: 208a lhu a0,0(s1)
19bc: 45f5 li a1,29
19be: ce4ff0ef jal ra,ea2 <ETH_ReadPHYRegister>
19c2: a805 j 19f2 <ETH_PHYLink+0xce>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:258
Delay_Us(100);
19c4: 06400513 li a0,100
19c8: 501030ef jal ra,56c8 <Delay_Us>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:259
phy_stat = ETH_ReadPHYRegister( gPHYAddress, 0x1A);
19cc: 208a lhu a0,0(s1)
19ce: 45e9 li a1,26
19d0: 197d addi s2,s2,-1
19d2: cd0ff0ef jal ra,ea2 <ETH_ReadPHYRegister>
19d6: 0ff97913 andi s2,s2,255
19da: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:260
if(timeout++ == 15) break;
19dc: 00090363 beqz s2,19e2 <ETH_PHYLink+0xbe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:256
while(phy_stat == 0)
19e0: d075 beqz s0,19c4 <ETH_PHYLink+0xa0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:262
if(LastPhyStat == (phy_stat & 0x04)) return;
19e2: 200007b7 lui a5,0x20000
19e6: 0c07d703 lhu a4,192(a5) # 200000c0 <LastPhyStat>
19ea: 00447793 andi a5,s0,4
19ee: f8f710e3 bne a4,a5,196e <ETH_PHYLink+0x4a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:300
}
19f2: b3ffe06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:278
ETH->MACCR &= ~ETH_Mode_FullDuplex;
19f6: 429c lw a5,0(a3)
19f8: 777d lui a4,0xfffff
19fa: 7ff70713 addi a4,a4,2047 # fffff7ff <__freertos_irq_stack_top+0xdffcf7ff>
19fe: 8ff9 and a5,a5,a4
1a00: b745 j 19a0 <ETH_PHYLink+0x7c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:284
else if( (phy_stat & 0x30) == 0x10 )
1a02: 47c1 li a5,16
1a04: 00f41e63 bne s0,a5,1a20 <ETH_PHYLink+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:286
ETH->MACCR &= ~(ETH_Speed_100M|ETH_Speed_1000M);
1a08: 400287b7 lui a5,0x40028
1a0c: 4398 lw a4,0(a5)
1a0e: 76d1 lui a3,0xffff4
1a10: 16fd addi a3,a3,-1
1a12: 8f75 and a4,a4,a3
1a14: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:287
ETH->MACCR |= ETH_Speed_100M;
1a16: 4398 lw a4,0(a5)
1a18: 6691 lui a3,0x4
1a1a: 8f55 or a4,a4,a3
1a1c: c398 sw a4,0(a5)
1a1e: bf61 j 19b6 <ETH_PHYLink+0x92>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:289
else if( (phy_stat & 0x30) == 0x20 )
1a20: 02000793 li a5,32
1a24: f8f419e3 bne s0,a5,19b6 <ETH_PHYLink+0x92>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:291
ETH->MACCR &= ~(ETH_Speed_100M|ETH_Speed_1000M);
1a28: 400287b7 lui a5,0x40028
1a2c: 4398 lw a4,0(a5)
1a2e: 76d1 lui a3,0xffff4
1a30: 16fd addi a3,a3,-1
1a32: 8f75 and a4,a4,a3
1a34: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:292
ETH->MACCR |= ETH_Speed_1000M;
1a36: 4398 lw a4,0(a5)
1a38: 66a1 lui a3,0x8
1a3a: 8f55 or a4,a4,a3
1a3c: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:294
if((ChipId & 0xf0) >= 0x60)
1a3e: 0009a783 lw a5,0(s3)
1a42: 05f00713 li a4,95
1a46: 0f07f793 andi a5,a5,240
1a4a: f6f776e3 bgeu a4,a5,19b6 <ETH_PHYLink+0x92>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:295
RGMII_TXC_Delay(1, 2);
1a4e: 4589 li a1,2
1a50: 4505 li a0,1
1a52: e2eff0ef jal ra,1080 <RGMII_TXC_Delay>
1a56: b785 j 19b6 <ETH_PHYLink+0x92>
00001a58 <WCHNET_QueryPhySta>:
WCHNET_QueryPhySta():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:100
if(QUERY_STAT_FLAG){ /* Query the PHY link status every 1s */
1a58: 20000737 lui a4,0x20000
1a5c: 0c870713 addi a4,a4,200 # 200000c8 <LocalTime>
1a60: 4314 lw a3,0(a4)
1a62: 3e800613 li a2,1000
1a66: 200007b7 lui a5,0x20000
1a6a: 02c6d6b3 divu a3,a3,a2
1a6e: 0c478793 addi a5,a5,196 # 200000c4 <LastQueryPhyTime>
1a72: 438c lw a1,0(a5)
1a74: 04b68163 beq a3,a1,1ab6 <WCHNET_QueryPhySta+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:98
{
1a78: a9ffe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:101
LastQueryPhyTime = LocalTime / 1000;
1a7c: 4318 lw a4,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:102
ETH_WritePHYRegister( PHY_ADDRESS, 0x1F, 0x0a43 );
1a7e: 45fd li a1,31
1a80: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:101
LastQueryPhyTime = LocalTime / 1000;
1a82: 02c75733 divu a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:102
ETH_WritePHYRegister( PHY_ADDRESS, 0x1F, 0x0a43 );
1a86: 6605 lui a2,0x1
1a88: a4360613 addi a2,a2,-1469 # a43 <main+0x11d>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:101
LastQueryPhyTime = LocalTime / 1000;
1a8c: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:102
ETH_WritePHYRegister( PHY_ADDRESS, 0x1F, 0x0a43 );
1a8e: c6cff0ef jal ra,efa <ETH_WritePHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:105
ETH_ReadPHYRegister( PHY_ADDRESS, 0x1A);
1a92: 45e9 li a1,26
1a94: 4505 li a0,1
1a96: c0cff0ef jal ra,ea2 <ETH_ReadPHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:106
phy_stat = ETH_ReadPHYRegister( PHY_ADDRESS, 0x1A) & 0x04;
1a9a: 45e9 li a1,26
1a9c: 4505 li a0,1
1a9e: c04ff0ef jal ra,ea2 <ETH_ReadPHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:107
if((phy_stat != LastPhyStat) && (phy_stat != 0xffff)){
1aa2: 200007b7 lui a5,0x20000
1aa6: 0c07d783 lhu a5,192(a5) # 200000c0 <LastPhyStat>
1aaa: 8911 andi a0,a0,4
1aac: 00a78363 beq a5,a0,1ab2 <WCHNET_QueryPhySta+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:108
ETH_PHYLink();
1ab0: 3d95 jal 1924 <ETH_PHYLink>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:111
}
1ab2: a89fe06f j 53a <__riscv_restore_0>
1ab6: 8082 ret
00001ab8 <WCHNET_MainTask>:
WCHNET_MainTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:124
{
1ab8: a5ffe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:125
WCHNET_NetInput( ); /* Ethernet data input */
1abc: 03e040ef jal ra,5afa <WCHNET_NetInput>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:126
WCHNET_PeriodicHandle( ); /* Protocol stack time-related task processing */
1ac0: 679030ef jal ra,5938 <WCHNET_PeriodicHandle>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:129
WCHNET_QueryPhySta(); /* Query external PHY status */
1ac4: 3f51 jal 1a58 <WCHNET_QueryPhySta>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:131
}
1ac6: a75fe06f j 53a <__riscv_restore_0>
00001aca <ETH_RegInit>:
ETH_RegInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:313
{
1aca: a4dfe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:315
ETH->MACMIIAR = (uint32_t)ETH_MACMIIAR_CR_Div42;
1ace: 400286b7 lui a3,0x40028
1ad2: 0006a823 sw zero,16(a3) # 40028010 <__freertos_irq_stack_top+0x1fff8010>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:313
{
1ad6: 87aa mv a5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:318
ETH->MACCR = (uint32_t)(ETH_InitStruct->ETH_Watchdog |
1ad8: 4790 lw a2,8(a5)
1ada: 43d8 lw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:313
{
1adc: 852e mv a0,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:351
ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_Reset);
1ade: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:318
ETH->MACCR = (uint32_t)(ETH_InitStruct->ETH_Watchdog |
1ae0: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:319
ETH_InitStruct->ETH_Jabber |
1ae2: 47d0 lw a2,12(a5)
1ae4: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:320
ETH_InitStruct->ETH_InterFrameGap |
1ae6: 53d0 lw a2,36(a5)
1ae8: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:321
ETH_InitStruct->ETH_ChecksumOffload |
1aea: 57d0 lw a2,44(a5)
1aec: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:322
ETH_InitStruct->ETH_AutomaticPadCRCStrip |
1aee: 4fd0 lw a2,28(a5)
1af0: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:318
ETH->MACCR = (uint32_t)(ETH_InitStruct->ETH_Watchdog |
1af2: c298 sw a4,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:325
ETH->MACFFR = (uint32_t)(ETH_InitStruct->ETH_ReceiveAll |
1af4: 5fd0 lw a2,60(a5)
1af6: 5f98 lw a4,56(a5)
1af8: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:326
ETH_InitStruct->ETH_SourceAddrFilter |
1afa: 43b0 lw a2,64(a5)
1afc: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:327
ETH_InitStruct->ETH_PassControlFrames |
1afe: 43f0 lw a2,68(a5)
1b00: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:328
ETH_InitStruct->ETH_BroadcastFramesReception |
1b02: 47b0 lw a2,72(a5)
1b04: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:329
ETH_InitStruct->ETH_DestinationAddrFilter |
1b06: 47f0 lw a2,76(a5)
1b08: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:330
ETH_InitStruct->ETH_PromiscuousMode |
1b0a: 4bb0 lw a2,80(a5)
1b0c: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:331
ETH_InitStruct->ETH_MulticastFramesFilter |
1b0e: 4bf0 lw a2,84(a5)
1b10: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:325
ETH->MACFFR = (uint32_t)(ETH_InitStruct->ETH_ReceiveAll |
1b12: c2d8 sw a4,4(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:334
ETH->MACHTHR = (uint32_t)ETH_InitStruct->ETH_HashTableHigh;
1b14: 4fb8 lw a4,88(a5)
1b16: c698 sw a4,8(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:335
ETH->MACHTLR = (uint32_t)ETH_InitStruct->ETH_HashTableLow;
1b18: 4ff8 lw a4,92(a5)
1b1a: c6d8 sw a4,12(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:339
ETH_InitStruct->ETH_ReceiveFlowControl |
1b1c: 5bb0 lw a2,112(a5)
1b1e: 57f8 lw a4,108(a5)
1b20: 8f51 or a4,a4,a2
1b22: 5bf0 lw a2,116(a5)
1b24: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:337
ETH->MACFCR = (uint32_t)((ETH_InitStruct->ETH_PauseTime << 16) |
1b26: 53b0 lw a2,96(a5)
1b28: 0642 slli a2,a2,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:339
ETH_InitStruct->ETH_ReceiveFlowControl |
1b2a: 8f51 or a4,a4,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:337
ETH->MACFCR = (uint32_t)((ETH_InitStruct->ETH_PauseTime << 16) |
1b2c: ce98 sw a4,24(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:342
ETH->MACVLANTR = (uint32_t)(ETH_InitStruct->ETH_VLANTagComparison |
1b2e: 5ff0 lw a2,124(a5)
1b30: 5fb8 lw a4,120(a5)
1b32: 8f51 or a4,a4,a2
1b34: ced8 sw a4,28(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:345
ETH->DMAOMR = (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |
1b36: 08c7a683 lw a3,140(a5)
1b3a: 0807a703 lw a4,128(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:351
ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_Reset);
1b3e: 6621 lui a2,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:345
ETH->DMAOMR = (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |
1b40: 8f55 or a4,a4,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:346
ETH_InitStruct->ETH_TransmitStoreForward |
1b42: 0947a683 lw a3,148(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:347
ETH_InitStruct->ETH_ForwardErrorFrames |
1b46: 0987a783 lw a5,152(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:346
ETH_InitStruct->ETH_TransmitStoreForward |
1b4a: 8f55 or a4,a4,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:347
ETH_InitStruct->ETH_ForwardErrorFrames |
1b4c: 8f5d or a4,a4,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:345
ETH->DMAOMR = (uint32_t)(ETH_InitStruct->ETH_DropTCPIPChecksumErrorFrame |
1b4e: 400297b7 lui a5,0x40029
1b52: cf98 sw a4,24(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:351
ETH_WritePHYRegister(PHYAddress, PHY_BCR, PHY_Reset);
1b54: ba6ff0ef jal ra,efa <ETH_WritePHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:353
}
1b58: 4505 li a0,1
1b5a: 9e1fe06f j 53a <__riscv_restore_0>
00001b5e <ETH_Configuration>:
ETH_Configuration():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:363
{
1b5e: 99ffe2ef jal t0,4fc <__riscv_save_4>
1b62: 7131 addi sp,sp,-192
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:368
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | \
1b64: 4585 li a1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:363
{
1b66: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:368
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | \
1b68: 6571 lui a0,0x1c
1b6a: 963ff0ef jal ra,14cc <RCC_AHBPeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:375
EXTEN->EXTEN_CTR |= EXTEN_ETH_RGMII_SEL;
1b6e: 40024737 lui a4,0x40024
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:372
gPHYAddress = PHY_ADDRESS;
1b72: 20000937 lui s2,0x20000
1b76: 4785 li a5,1
1b78: 0cf91623 sh a5,204(s2) # 200000cc <gPHYAddress>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:375
EXTEN->EXTEN_CTR |= EXTEN_ETH_RGMII_SEL;
1b7c: 80072783 lw a5,-2048(a4) # 40023800 <__freertos_irq_stack_top+0x1fff3800>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:376
RCC_ETH1GCLKConfig(RCC_ETH1GCLKSource_PB1_IN);
1b80: 4509 li a0,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:385
ETH_SoftwareReset();
1b82: 6409 lui s0,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:375
EXTEN->EXTEN_CTR |= EXTEN_ETH_RGMII_SEL;
1b84: 0087e793 ori a5,a5,8
1b88: 80f72023 sw a5,-2048(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:376
RCC_ETH1GCLKConfig(RCC_ETH1GCLKSource_PB1_IN);
1b8c: 9b9ff0ef jal ra,1544 <RCC_ETH1GCLKConfig>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:377
RCC_ETH1G_125Mcmd(ENABLE);
1b90: 4505 li a0,1
1b92: 9cdff0ef jal ra,155e <RCC_ETH1G_125Mcmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:385
ETH_SoftwareReset();
1b96: 71040413 addi s0,s0,1808 # 2710 <Preprocess_Execute+0x140>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:379
ETH_RGMIIPinInit();
1b9a: 391d jal 17d0 <ETH_RGMIIPinInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:382
ETH_DeInit();
1b9c: 0cc90913 addi s2,s2,204
1ba0: aeeff0ef jal ra,e8e <ETH_DeInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:391
}while(ETH->DMABMR & ETH_DMABMR_SR);
1ba4: 400299b7 lui s3,0x40029
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:385
ETH_SoftwareReset();
1ba8: c62ff0ef jal ra,100a <ETH_SoftwareReset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:389
Delay_Us(10);
1bac: 147d addi s0,s0,-1
1bae: 0442 slli s0,s0,0x10
1bb0: 4529 li a0,10
1bb2: 8041 srli s0,s0,0x10
1bb4: 315030ef jal ra,56c8 <Delay_Us>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:390
if( !--timeout ) break;
1bb8: c409 beqz s0,1bc2 <ETH_Configuration+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:391
}while(ETH->DMABMR & ETH_DMABMR_SR);
1bba: 0009a783 lw a5,0(s3) # 40029000 <__freertos_irq_stack_top+0x1fff9000>
1bbe: 8b85 andi a5,a5,1
1bc0: f7f5 bnez a5,1bac <ETH_Configuration+0x4e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:438
ETH_RegInit( &ETH_InitStructure, gPHYAddress );
1bc2: 00095583 lhu a1,0(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:412
ETH_InitStructure.ETH_PassControlFrames = ETH_PassControlFrames_BlockAll;
1bc6: 04000793 li a5,64
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:434
ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;
1bca: 00200437 lui s0,0x200
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:435
ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Enable;
1bce: 08000713 li a4,128
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:438
ETH_RegInit( &ETH_InitStructure, gPHYAddress );
1bd2: 0048 addi a0,sp,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:412
ETH_InitStructure.ETH_PassControlFrames = ETH_PassControlFrames_BlockAll;
1bd4: c2be sw a5,68(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:434
ETH_InitStructure.ETH_TransmitStoreForward = ETH_TransmitStoreForward_Enable;
1bd6: c922 sw s0,144(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:435
ETH_InitStructure.ETH_ForwardErrorFrames = ETH_ForwardErrorFrames_Enable;
1bd8: cd3a sw a4,152(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:436
ETH_InitStructure.ETH_ForwardUndersizedGoodFrames = ETH_ForwardUndersizedGoodFrames_Enable;
1bda: cf3e sw a5,156(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:395
ETH_InitStructure.ETH_Watchdog = ETH_Watchdog_Enable;
1bdc: c402 sw zero,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:396
ETH_InitStructure.ETH_Jabber = ETH_Jabber_Enable;
1bde: c602 sw zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:397
ETH_InitStructure.ETH_InterFrameGap = ETH_InterFrameGap_96Bit;
1be0: c802 sw zero,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:401
ETH_InitStructure.ETH_ChecksumOffload = ETH_ChecksumOffload_Disable;
1be2: d402 sw zero,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:403
ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable;
1be4: d802 sw zero,48(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:404
ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable;
1be6: d002 sw zero,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:407
ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Disable;
1be8: de02 sw zero,60(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:408
ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable;
1bea: c882 sw zero,80(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:409
ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable;
1bec: c482 sw zero,72(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:410
ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;
1bee: ca82 sw zero,84(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:411
ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect;
1bf0: cc82 sw zero,88(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:413
ETH_InitStructure.ETH_DestinationAddrFilter = ETH_DestinationAddrFilter_Normal;
1bf2: c682 sw zero,76(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:414
ETH_InitStructure.ETH_SourceAddrFilter = ETH_SourceAddrFilter_Disable;
1bf4: c082 sw zero,64(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:416
ETH_InitStructure.ETH_HashTableHigh = 0x0;
1bf6: ce82 sw zero,92(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:417
ETH_InitStructure.ETH_HashTableLow = 0x0;
1bf8: d082 sw zero,96(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:420
ETH_InitStructure.ETH_VLANTagComparison = ETH_VLANTagComparison_16Bit;
1bfa: de82 sw zero,124(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:421
ETH_InitStructure.ETH_VLANTagIdentifier = 0x0;
1bfc: c102 sw zero,128(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:424
ETH_InitStructure.ETH_PauseTime = 0x0;
1bfe: d282 sw zero,100(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:425
ETH_InitStructure.ETH_UnicastPauseFrameDetect = ETH_UnicastPauseFrameDetect_Disable;
1c00: d882 sw zero,112(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:426
ETH_InitStructure.ETH_ReceiveFlowControl = ETH_ReceiveFlowControl_Disable;
1c02: da82 sw zero,116(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:427
ETH_InitStructure.ETH_TransmitFlowControl = ETH_TransmitFlowControl_Disable;
1c04: dc82 sw zero,120(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:433
ETH_InitStructure.ETH_DropTCPIPChecksumErrorFrame = ETH_DropTCPIPChecksumErrorFrame_Enable;
1c06: c302 sw zero,132(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:438
ETH_RegInit( &ETH_InitStructure, gPHYAddress );
1c08: 35c9 jal 1aca <ETH_RegInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:441
ETH->MACA0HR = (uint32_t)((macAddr[5]<<8) | macAddr[4]);
1c0a: 30dc lbu a5,5(s1)
1c0c: 20d8 lbu a4,4(s1)
1c0e: 400286b7 lui a3,0x40028
1c12: 07a2 slli a5,a5,0x8
1c14: 8fd9 or a5,a5,a4
1c16: c2bc sw a5,64(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:442
ETH->MACA0LR = (uint32_t)(macAddr[0] | (macAddr[1]<<8) | (macAddr[2]<<16) | (macAddr[3]<<24));
1c18: 3098 lbu a4,1(s1)
1c1a: 209c lbu a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:450
ETH_DMAITConfig(ETH_DMA_IT_NIS |\
1c1c: 6561 lui a0,0x18
1c1e: 0722 slli a4,a4,0x8
1c20: 8f5d or a4,a4,a5
1c22: 20bc lbu a5,2(s1)
1c24: 4585 li a1,1
1c26: 0c150513 addi a0,a0,193 # 180c1 <_data_lma+0xabad>
1c2a: 07c2 slli a5,a5,0x10
1c2c: 8f5d or a4,a4,a5
1c2e: 30bc lbu a5,3(s1)
1c30: 07e2 slli a5,a5,0x18
1c32: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:442
ETH->MACA0LR = (uint32_t)(macAddr[0] | (macAddr[1]<<8) | (macAddr[2]<<16) | (macAddr[3]<<24));
1c34: c2fc sw a5,68(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:448
ETH->MMCRIMR = ETH_MMCRIMR_RGUFM | ETH_MMCRIMR_RFCEM;
1c36: 000207b7 lui a5,0x20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:445
ETH->MMCTIMR = ETH_MMCTIMR_TGFM;
1c3a: 1086a823 sw s0,272(a3) # 40028110 <__freertos_irq_stack_top+0x1fff8110>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:448
ETH->MMCRIMR = ETH_MMCRIMR_RGUFM | ETH_MMCRIMR_RFCEM;
1c3e: 02078793 addi a5,a5,32 # 20020 <_data_lma+0x12b0c>
1c42: 10f6a623 sw a5,268(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:450
ETH_DMAITConfig(ETH_DMA_IT_NIS |\
1c46: c1cff0ef jal ra,1062 <ETH_DMAITConfig>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:463
ETH_WritePHYRegister( PHY_ADDRESS, 0x1F, 0x0a43 );
1c4a: 6605 lui a2,0x1
1c4c: a4360613 addi a2,a2,-1469 # a43 <main+0x11d>
1c50: 45fd li a1,31
1c52: 4505 li a0,1
1c54: aa6ff0ef jal ra,efa <ETH_WritePHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:466
ETH_ReadPHYRegister( PHY_ADDRESS, 0x1A);
1c58: 45e9 li a1,26
1c5a: 4505 li a0,1
1c5c: a46ff0ef jal ra,ea2 <ETH_ReadPHYRegister>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:467
LastPhyStat = ETH_ReadPHYRegister( PHY_ADDRESS, 0x1A) & 0x04;
1c60: 45e9 li a1,26
1c62: 4505 li a0,1
1c64: a3eff0ef jal ra,ea2 <ETH_ReadPHYRegister>
1c68: 8911 andi a0,a0,4
1c6a: 200007b7 lui a5,0x20000
1c6e: 0ca79023 sh a0,192(a5) # 200000c0 <LastPhyStat>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:469
}
1c72: 6129 addi sp,sp,192
1c74: 8bdfe06f j 530 <__riscv_restore_4>
00001c78 <ETH_Stop>:
ETH_Stop():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:524
* @brief Disables ENET MAC and DMA reception/transmission.
*
* @return none
*/
void ETH_Stop(void)
{
1c78: 89ffe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:525
ETH_MACTransmissionCmd(DISABLE);
1c7c: 4501 li a0,0
1c7e: aceff0ef jal ra,f4c <ETH_MACTransmissionCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:526
ETH_FlushTransmitFIFO();
1c82: b9eff0ef jal ra,1020 <ETH_FlushTransmitFIFO>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:527
ETH_MACReceptionCmd(DISABLE);
1c86: 4501 li a0,0
1c88: ad8ff0ef jal ra,f60 <ETH_MACReceptionCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:528
}
1c8c: 8affe06f j 53a <__riscv_restore_0>
00001c90 <ReInitMACReg>:
ReInitMACReg():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:540
* @param none.
*
* @return none.
*/
void ReInitMACReg(void)
{
1c90: 85ffe2ef jal t0,4ee <__riscv_save_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:546
uint16_t timeout = 10000;
uint32_t maccr, macmiiar, macffr, machthr, machtlr;
uint32_t macfcr, macvlantr, dmaomr;
/* Wait for sending data to complete */
while((ETH->DMASR & (7 << 20)) != ETH_DMA_TransmitProcess_Suspended);
1c94: 40028437 lui s0,0x40028
1c98: 400294b7 lui s1,0x40029
1c9c: 007006b7 lui a3,0x700
1ca0: 00600737 lui a4,0x600
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:546 (discriminator 1)
1ca4: 48dc lw a5,20(s1)
1ca6: 8ff5 and a5,a5,a3
1ca8: fee79ee3 bne a5,a4,1ca4 <ReInitMACReg+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:548
ETH_Stop();
1cac: 37f1 jal 1c78 <ETH_Stop>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:551
/* Record the register value */
macmiiar = ETH->MACMIIAR;
1cae: 01042b83 lw s7,16(s0) # 40028010 <__freertos_irq_stack_top+0x1fff8010>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:552
maccr = ETH->MACCR;
1cb2: 00042b03 lw s6,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:553
macffr = ETH->MACFFR;
1cb6: 00442a83 lw s5,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:554
machthr = ETH->MACHTHR;
1cba: 00842a03 lw s4,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:555
machtlr = ETH->MACHTLR;
1cbe: 00c42983 lw s3,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:556
macfcr = ETH->MACFCR;
1cc2: 01842903 lw s2,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:557
macvlantr = ETH->MACVLANTR;
1cc6: 01c42c03 lw s8,28(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:564
/* Reset ETHERNET on AHB Bus */
ETH_DeInit();
/* Software reset */
ETH_SoftwareReset();
1cca: 6409 lui s0,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:558
dmaomr = ETH->DMAOMR;
1ccc: 4c84 lw s1,24(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:564
ETH_SoftwareReset();
1cce: 71040413 addi s0,s0,1808 # 2710 <Preprocess_Execute+0x140>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:561
ETH_DeInit();
1cd2: 9bcff0ef jal ra,e8e <ETH_DeInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:570
/* Wait for software reset */
do{
Delay_Us(10);
if( !--timeout ) break;
}while(ETH->DMABMR & ETH_DMABMR_SR);
1cd6: 40029cb7 lui s9,0x40029
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:564
ETH_SoftwareReset();
1cda: b30ff0ef jal ra,100a <ETH_SoftwareReset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:568
Delay_Us(10);
1cde: 147d addi s0,s0,-1
1ce0: 0442 slli s0,s0,0x10
1ce2: 4529 li a0,10
1ce4: 8041 srli s0,s0,0x10
1ce6: 1e3030ef jal ra,56c8 <Delay_Us>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:569
if( !--timeout ) break;
1cea: c409 beqz s0,1cf4 <ReInitMACReg+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:570
}while(ETH->DMABMR & ETH_DMABMR_SR);
1cec: 000ca783 lw a5,0(s9) # 40029000 <__freertos_irq_stack_top+0x1fff9000>
1cf0: 8b85 andi a5,a5,1
1cf2: f7f5 bnez a5,1cde <ReInitMACReg+0x4e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:573
/* Configure MAC address */
ETH->MACA0HR = (uint32_t)((MACAddr[5]<<8) | MACAddr[4]);
1cf4: 200006b7 lui a3,0x20000
1cf8: 0a468713 addi a4,a3,164 # 200000a4 <MACAddr>
1cfc: 335c lbu a5,5(a4)
1cfe: 2350 lbu a2,4(a4)
1d00: 40028437 lui s0,0x40028
1d04: 07a2 slli a5,a5,0x8
1d06: 8fd1 or a5,a5,a2
1d08: c03c sw a5,64(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:574
ETH->MACA0LR = (uint32_t)(MACAddr[0] | (MACAddr[1]<<8) | (MACAddr[2]<<16) | (MACAddr[3]<<24));
1d0a: 0a56c703 lbu a4,165(a3)
1d0e: 0a46c783 lbu a5,164(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:582
ETH->MMCTIMR = ETH_MMCTIMR_TGFM;
/* Mask the interrupt that Rx good unicast frames counter reaches half the maximum value */
/* Mask the interrupt that Rx crc error counter reaches half the maximum value */
ETH->MMCRIMR = ETH_MMCRIMR_RGUFM | ETH_MMCRIMR_RFCEM;
ETH_DMAITConfig(ETH_DMA_IT_NIS |\
1d12: 6561 lui a0,0x18
1d14: 0722 slli a4,a4,0x8
1d16: 8f5d or a4,a4,a5
1d18: 0a66c783 lbu a5,166(a3)
1d1c: 4585 li a1,1
1d1e: 0c150513 addi a0,a0,193 # 180c1 <_data_lma+0xabad>
1d22: 07c2 slli a5,a5,0x10
1d24: 8f5d or a4,a4,a5
1d26: 0a76c783 lbu a5,167(a3)
1d2a: 07e2 slli a5,a5,0x18
1d2c: 8fd9 or a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:574
ETH->MACA0LR = (uint32_t)(MACAddr[0] | (MACAddr[1]<<8) | (MACAddr[2]<<16) | (MACAddr[3]<<24));
1d2e: c07c sw a5,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:577
ETH->MMCTIMR = ETH_MMCTIMR_TGFM;
1d30: 002007b7 lui a5,0x200
1d34: 10f42823 sw a5,272(s0) # 40028110 <__freertos_irq_stack_top+0x1fff8110>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:580
ETH->MMCRIMR = ETH_MMCRIMR_RGUFM | ETH_MMCRIMR_RFCEM;
1d38: 000207b7 lui a5,0x20
1d3c: 02078793 addi a5,a5,32 # 20020 <_data_lma+0x12b0c>
1d40: 10f42623 sw a5,268(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:582
ETH_DMAITConfig(ETH_DMA_IT_NIS |\
1d44: b1eff0ef jal ra,1062 <ETH_DMAITConfig>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:589
ETH_DMA_IT_T |\
ETH_DMA_IT_AIS |\
ETH_DMA_IT_RBU,\
ENABLE);
ETH_DMATxDescChainInit(DMATxDscrTab, MACTxBuf, ETH_TXBUFNB);
1d48: 20007537 lui a0,0x20007
1d4c: 200095b7 lui a1,0x20009
1d50: 95850c93 addi s9,a0,-1704 # 20006958 <DMATxDscrTab>
1d54: 4609 li a2,2
1d56: 32458593 addi a1,a1,804 # 20009324 <MACTxBuf>
1d5a: 95850513 addi a0,a0,-1704
1d5e: a16ff0ef jal ra,f74 <ETH_DMATxDescChainInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:590
ETH_DMARxDescChainInit(DMARxDscrTab, MACRxBuf, ETH_RXBUFNB);
1d62: 20007537 lui a0,0x20007
1d66: 200075b7 lui a1,0x20007
1d6a: 8e850d13 addi s10,a0,-1816 # 200068e8 <DMARxDscrTab>
1d6e: 461d li a2,7
1d70: 97858593 addi a1,a1,-1672 # 20006978 <MACRxBuf>
1d74: 8e850513 addi a0,a0,-1816
1d78: a42ff0ef jal ra,fba <ETH_DMARxDescChainInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:591
pDMARxSet = DMARxDscrTab;
1d7c: 200007b7 lui a5,0x20000
1d80: 0da7a823 sw s10,208(a5) # 200000d0 <pDMARxSet>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:592
pDMATxSet = DMATxDscrTab;
1d84: 200007b7 lui a5,0x20000
1d88: 0d97aa23 sw s9,212(a5) # 200000d4 <pDMATxSet>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:594
ETH->MACMIIAR = macmiiar;
1d8c: 01742823 sw s7,16(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:595
ETH->MACCR = maccr;
1d90: 01642023 sw s6,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:596
ETH->MACFFR = macffr;
1d94: 01542223 sw s5,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:597
ETH->MACHTHR = machthr;
1d98: 01442423 sw s4,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:598
ETH->MACHTLR = machtlr;
1d9c: 01342623 sw s3,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:599
ETH->MACFCR = macfcr;
1da0: 01242c23 sw s2,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:600
ETH->MACVLANTR = macvlantr;
1da4: 01842e23 sw s8,28(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:601
ETH->DMAOMR = dmaomr;
1da8: 400297b7 lui a5,0x40029
1dac: cf84 sw s1,24(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:603
ETH_Start( );
1dae: a82ff0ef jal ra,1030 <ETH_Start>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:604
}
1db2: f74fe06f j 526 <__riscv_restore_10>
00001db6 <WCHNET_RecProcess>:
WCHNET_RecProcess():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:617
*
* @return none.
*/
void WCHNET_RecProcess(void)
{
if(((ChipId & 0xf0) <= 0x20) && \
1db6: 200007b7 lui a5,0x20000
1dba: 0bc7a783 lw a5,188(a5) # 200000bc <ChipId>
1dbe: 02000713 li a4,32
1dc2: 0f07f793 andi a5,a5,240
1dc6: 02f76263 bltu a4,a5,1dea <WCHNET_RecProcess+0x34>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:616 (discriminator 1)
{
1dca: f4cfe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:618 (discriminator 1)
((ETH->DMAMFBOCR & 0x1FFE0000) != 0))
1dce: 40029437 lui s0,0x40029
1dd2: 501c lw a5,32(s0)
1dd4: 1ffe0737 lui a4,0x1ffe0
1dd8: 8ff9 and a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:617 (discriminator 1)
if(((ChipId & 0xf0) <= 0x20) && \
1dda: c791 beqz a5,1de6 <WCHNET_RecProcess+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:620
{
ReInitMACReg();
1ddc: 3d55 jal 1c90 <ReInitMACReg>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:622
/* Resume DMA transport */
ETH->DMARPDR = 0;
1dde: 00042423 sw zero,8(s0) # 40029008 <__freertos_irq_stack_top+0x1fff9008>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:623
ETH->DMATPDR = 0;
1de2: 00042223 sw zero,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:625
}
}
1de6: f54fe06f j 53a <__riscv_restore_0>
1dea: 8082 ret
00001dec <WCHNET_ETHIsr>:
WCHNET_ETHIsr():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:635
* @brief Ethernet Interrupt Service Routine
*
* @return none
*/
void WCHNET_ETHIsr(void)
{
1dec: f2afe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:638
uint32_t int_sta;
int_sta = ETH->DMASR;
1df0: 400297b7 lui a5,0x40029
1df4: 4bc0 lw s0,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:639
if (int_sta & ETH_DMA_IT_AIS)
1df6: 01041793 slli a5,s0,0x10
1dfa: 0007dd63 bgez a5,1e14 <WCHNET_ETHIsr+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:641
{
if (int_sta & ETH_DMA_IT_RBU)
1dfe: 08047793 andi a5,s0,128
1e02: c791 beqz a5,1e0e <WCHNET_ETHIsr+0x22>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:643
{
WCHNET_RecProcess();
1e04: 3f4d jal 1db6 <WCHNET_RecProcess>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:644
ETH_DMAClearITPendingBit(ETH_DMA_IT_RBU);
1e06: 08000513 li a0,128
1e0a: a0eff0ef jal ra,1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:646
}
ETH_DMAClearITPendingBit(ETH_DMA_IT_AIS);
1e0e: 6521 lui a0,0x8
1e10: a08ff0ef jal ra,1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:649
}
if( int_sta & ETH_DMA_IT_NIS )
1e14: 00f41793 slli a5,s0,0xf
1e18: 0207d163 bgez a5,1e3a <WCHNET_ETHIsr+0x4e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:651
{
if( int_sta & ETH_DMA_IT_R )
1e1c: 04047793 andi a5,s0,64
1e20: c789 beqz a5,1e2a <WCHNET_ETHIsr+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:655
{
/*If you don't use the Ethernet library,
* you can do some data processing operations here*/
ETH_DMAClearITPendingBit(ETH_DMA_IT_R);
1e22: 04000513 li a0,64
1e26: 9f2ff0ef jal ra,1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:657
}
if( int_sta & ETH_DMA_IT_T )
1e2a: 8805 andi s0,s0,1
1e2c: c401 beqz s0,1e34 <WCHNET_ETHIsr+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:659
{
ETH_DMAClearITPendingBit(ETH_DMA_IT_T);
1e2e: 4505 li a0,1
1e30: 9e8ff0ef jal ra,1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:661
}
ETH_DMAClearITPendingBit(ETH_DMA_IT_NIS);
1e34: 6541 lui a0,0x10
1e36: 9e2ff0ef jal ra,1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:663
}
}
1e3a: f00fe06f j 53a <__riscv_restore_0>
00001e3e <ETH_Init>:
ETH_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:673
* @brief Ethernet initialization.
*
* @return none
*/
void ETH_Init( uint8_t *macAddr )
{
1e3e: ed8fe2ef jal t0,516 <__riscv_save_0>
1e42: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:674
ChipId = DBGMCU_GetCHIPID();
1e44: f97fe0ef jal ra,dda <DBGMCU_GetCHIPID>
1e48: 200007b7 lui a5,0x20000
1e4c: 0aa7ae23 sw a0,188(a5) # 200000bc <ChipId>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:675
ETH_Configuration( macAddr );
1e50: 8522 mv a0,s0
1e52: 3331 jal 1b5e <ETH_Configuration>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:676
ETH_DMATxDescChainInit(DMATxDscrTab, MACTxBuf, ETH_TXBUFNB);
1e54: 20007537 lui a0,0x20007
1e58: 200095b7 lui a1,0x20009
1e5c: 95850413 addi s0,a0,-1704 # 20006958 <DMATxDscrTab>
1e60: 4609 li a2,2
1e62: 32458593 addi a1,a1,804 # 20009324 <MACTxBuf>
1e66: 95850513 addi a0,a0,-1704
1e6a: 90aff0ef jal ra,f74 <ETH_DMATxDescChainInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:677
ETH_DMARxDescChainInit(DMARxDscrTab, MACRxBuf, ETH_RXBUFNB);
1e6e: 20007537 lui a0,0x20007
1e72: 200075b7 lui a1,0x20007
1e76: 8e850493 addi s1,a0,-1816 # 200068e8 <DMARxDscrTab>
1e7a: 461d li a2,7
1e7c: 97858593 addi a1,a1,-1672 # 20006978 <MACRxBuf>
1e80: 8e850513 addi a0,a0,-1816
1e84: 936ff0ef jal ra,fba <ETH_DMARxDescChainInit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:678
pDMARxSet = DMARxDscrTab;
1e88: 200007b7 lui a5,0x20000
1e8c: 0c97a823 sw s1,208(a5) # 200000d0 <pDMARxSet>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:679
pDMATxSet = DMATxDscrTab;
1e90: 200007b7 lui a5,0x20000
1e94: 0c87aa23 sw s0,212(a5) # 200000d4 <pDMATxSet>
NVIC_EnableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:170
NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
1e98: 6709 lui a4,0x2
1e9a: e000e7b7 lui a5,0xe000e
1e9e: 10e7a423 sw a4,264(a5) # e000e108 <__freertos_irq_stack_top+0xbffde108>
NVIC_SetPriority():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:286
NVIC->IPRIOR[(uint32_t)(IRQn)] = priority;
1ea2: 440786a3 sb zero,1101(a5)
ETH_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:682
NVIC_EnableIRQ(ETH_IRQn);
NVIC_SetPriority(ETH_IRQn, 0);
}
1ea6: e94fe06f j 53a <__riscv_restore_0>
00001eaa <ETH_LibInit>:
ETH_LibInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:692
* @brief Ethernet library initialization program
*
* @return command status
*/
uint8_t ETH_LibInit( uint8_t *ip, uint8_t *gwip, uint8_t *mask, uint8_t *macaddr )
{
1eaa: e6cfe2ef jal t0,516 <__riscv_save_0>
1eae: 7139 addi sp,sp,-64
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:697
uint8_t s;
struct _WCH_CFG cfg;
memset(&cfg,0,sizeof(cfg));
cfg.TxBufSize = ETH_TX_BUF_SZE;
1eb0: 5f400793 li a5,1524
1eb4: ca3e sw a5,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:698
cfg.TCPMss = WCHNET_TCP_MSS;
1eb6: 5b400793 li a5,1460
1eba: cc3e sw a5,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:699
cfg.HeapSize = WCHNET_MEM_HEAP_SIZE;
1ebc: 6789 lui a5,0x2
1ebe: e6c78793 addi a5,a5,-404 # 1e6c <ETH_Init+0x2e>
1ec2: ce3e sw a5,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:700
cfg.ARPTableNum = WCHNET_NUM_ARP_TABLE;
1ec4: 03200793 li a5,50
1ec8: d03e sw a5,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:701
cfg.MiscConfig0 = WCHNET_MISC_CONFIG0;
1eca: 10300793 li a5,259
1ece: d23e sw a5,36(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:702
cfg.MiscConfig1 = WCHNET_MISC_CONFIG1;
1ed0: 405527b7 lui a5,0x40552
1ed4: 0789 addi a5,a5,2
1ed6: d43e sw a5,40(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:703
cfg.net_send = ETH_TxPktChainMode;
1ed8: 000017b7 lui a5,0x1
1edc: 75c78793 addi a5,a5,1884 # 175c <ETH_TxPktChainMode>
1ee0: da3e sw a5,52(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:704
cfg.CheckValid = WCHNET_CFG_VALID;
1ee2: 123457b7 lui a5,0x12345
1ee6: 67878793 addi a5,a5,1656 # 12345678 <_data_lma+0x12338164>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:692
{
1eea: 892a mv s2,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:705
s = WCHNET_ConfigLIB(&cfg);
1eec: 0848 addi a0,sp,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:692
{
1eee: c62e sw a1,12(sp)
1ef0: c432 sw a2,8(sp)
1ef2: 84b6 mv s1,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:696
memset(&cfg,0,sizeof(cfg));
1ef4: d602 sw zero,44(sp)
1ef6: d802 sw zero,48(sp)
1ef8: dc02 sw zero,56(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:704
cfg.CheckValid = WCHNET_CFG_VALID;
1efa: de3e sw a5,60(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:705
s = WCHNET_ConfigLIB(&cfg);
1efc: 2b0040ef jal ra,61ac <WCHNET_ConfigLIB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:706
if( s ){
1f00: 842a mv s0,a0
1f02: e911 bnez a0,1f16 <ETH_LibInit+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:709
return (s);
}
s = WCHNET_Init(ip,gwip,mask,macaddr);
1f04: 4622 lw a2,8(sp)
1f06: 45b2 lw a1,12(sp)
1f08: 86a6 mv a3,s1
1f0a: 854a mv a0,s2
1f0c: 1de040ef jal ra,60ea <WCHNET_Init>
1f10: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:710
ETH_Init( macaddr );
1f12: 8526 mv a0,s1
1f14: 372d jal 1e3e <ETH_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../NetLib/eth_driver_RGMII.c:712
return (s);
}
1f16: 8522 mv a0,s0
1f18: 6121 addi sp,sp,64
1f1a: e20fe06f j 53a <__riscv_restore_0>
00001f1e <find_ctx_by_wchnet_id>:
find_ctx_by_wchnet_id():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:125
}
static SocketCtx_t *find_ctx_by_wchnet_id(uint8_t sockid)
{
for (int i = 0; i < MAX_SOCKETS; i++) {
if (g_sock_ctx[i].in_use && g_sock_ctx[i].wchnet_sock_id == sockid)
1f1e: 2000f737 lui a4,0x2000f
1f22: 8c474783 lbu a5,-1852(a4) # 2000e8c4 <g_sock_ctx>
1f26: 8c470713 addi a4,a4,-1852
1f2a: c781 beqz a5,1f32 <find_ctx_by_wchnet_id+0x14>
1f2c: 331c lbu a5,1(a4)
1f2e: 02a78563 beq a5,a0,1f58 <find_ctx_by_wchnet_id+0x3a>
1f32: 6685 lui a3,0x1
1f34: 96ba add a3,a3,a4
1f36: b7c6c603 lbu a2,-1156(a3) # b7c <SystemInit+0x58>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:128
return &g_sock_ctx[i];
}
return NULL;
1f3a: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:125
if (g_sock_ctx[i].in_use && g_sock_ctx[i].wchnet_sock_id == sockid)
1f3c: ce01 beqz a2,1f54 <find_ctx_by_wchnet_id+0x36>
1f3e: b7d6c683 lbu a3,-1155(a3)
1f42: 00a69963 bne a3,a0,1f54 <find_ctx_by_wchnet_id+0x36>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:124
for (int i = 0; i < MAX_SOCKETS; i++) {
1f46: 4785 li a5,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:126
return &g_sock_ctx[i];
1f48: 6505 lui a0,0x1
1f4a: b7c50513 addi a0,a0,-1156 # b7c <SystemInit+0x58>
1f4e: 02a787b3 mul a5,a5,a0
1f52: 97ba add a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:129
}
1f54: 853e mv a0,a5
1f56: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:124
for (int i = 0; i < MAX_SOCKETS; i++) {
1f58: 4781 li a5,0
1f5a: b7fd j 1f48 <find_ctx_by_wchnet_id+0x2a>
00001f5c <free_sock_ctx>:
free_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:115
if (!ctx) return;
1f5c: cd05 beqz a0,1f94 <free_sock_ctx+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:114
{
1f5e: db8fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:116
if (ctx->rx_sem) { vSemaphoreDelete(ctx->rx_sem); ctx->rx_sem = NULL; }
1f62: 6485 lui s1,0x1
1f64: 94aa add s1,s1,a0
1f66: 842a mv s0,a0
1f68: b744a503 lw a0,-1164(s1) # b74 <SystemInit+0x50>
1f6c: c509 beqz a0,1f76 <free_sock_ctx+0x1a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:116 (discriminator 1)
1f6e: 59a020ef jal ra,4508 <vQueueDelete>
1f72: b604aa23 sw zero,-1164(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:117
if (ctx->connect_sem) { vSemaphoreDelete(ctx->connect_sem); ctx->connect_sem = NULL; }
1f76: 6485 lui s1,0x1
1f78: 94a2 add s1,s1,s0
1f7a: b784a503 lw a0,-1160(s1) # b78 <SystemInit+0x54>
1f7e: c509 beqz a0,1f88 <free_sock_ctx+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:117 (discriminator 1)
1f80: 588020ef jal ra,4508 <vQueueDelete>
1f84: b604ac23 sw zero,-1160(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:118
ctx->in_use = 0;
1f88: 00040023 sb zero,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:119
ctx->connected = 0;
1f8c: 00040123 sb zero,2(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:120
}
1f90: daafe06f j 53a <__riscv_restore_0>
1f94: 8082 ret
00001f96 <qdx_port_sock_recv_notify>:
qdx_port_sock_recv_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:163
/* ============================================================
* Public: called from WCHNET_HandleSockInt (task context)
* ============================================================ */
void qdx_port_sock_recv_notify(uint8_t sockid)
{
1f96: d66fe2ef jal t0,4fc <__riscv_save_4>
1f9a: df010113 addi sp,sp,-528
1f9e: 89aa mv s3,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:164
SocketCtx_t *ctx = find_ctx_by_wchnet_id(sockid);
1fa0: 3fbd jal 1f1e <find_ctx_by_wchnet_id>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:165
if (!ctx) return;
1fa2: c13d beqz a0,2008 <qdx_port_sock_recv_notify+0x72>
ring_write():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:48
uint16_t free = RX_RING_SIZE - r->count;
1fa4: 6485 lui s1,0x1
1fa6: 00950933 add s2,a0,s1
1faa: 842a mv s0,a0
qdx_port_sock_recv_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:171
/* Read data from WCHNET into ring buffer */
uint8_t tmp[512];
uint32_t len;
while (1) {
len = sizeof(tmp);
1fac: 20000a13 li s4,512
ring_write():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:48
uint16_t free = RX_RING_SIZE - r->count;
1fb0: b6848493 addi s1,s1,-1176 # b68 <SystemInit+0x44>
qdx_port_sock_recv_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:172
uint8_t err = WCHNET_SocketRecv(sockid, tmp, &len);
1fb4: 0070 addi a2,sp,12
1fb6: 080c addi a1,sp,16
1fb8: 854e mv a0,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:171
len = sizeof(tmp);
1fba: c652 sw s4,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:172
uint8_t err = WCHNET_SocketRecv(sockid, tmp, &len);
1fbc: 612040ef jal ra,65ce <WCHNET_SocketRecv>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:173
if (len == 0) break;
1fc0: 46b2 lw a3,12(sp)
1fc2: ca95 beqz a3,1ff6 <qdx_port_sock_recv_notify+0x60>
ring_write():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:48
uint16_t free = RX_RING_SIZE - r->count;
1fc4: b7095603 lhu a2,-1168(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:49
if (len > free) len = free;
1fc8: 01069593 slli a1,a3,0x10
1fcc: 81c1 srli a1,a1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:48
uint16_t free = RX_RING_SIZE - r->count;
1fce: 40c48733 sub a4,s1,a2
1fd2: 87ba mv a5,a4
1fd4: 0742 slli a4,a4,0x10
1fd6: 8341 srli a4,a4,0x10
1fd8: 00e5f363 bgeu a1,a4,1fde <qdx_port_sock_recv_notify+0x48>
1fdc: 87b6 mv a5,a3
1fde: 07c2 slli a5,a5,0x10
1fe0: 83c1 srli a5,a5,0x10
1fe2: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:51
for (uint16_t i = 0; i < len; i++) {
1fe4: 01069713 slli a4,a3,0x10
1fe8: 8341 srli a4,a4,0x10
1fea: 02f76363 bltu a4,a5,2010 <qdx_port_sock_recv_notify+0x7a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:55
r->count += len;
1fee: 97b2 add a5,a5,a2
1ff0: b6f91823 sh a5,-1168(s2)
qdx_port_sock_recv_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:175
ring_write(&ctx->rx_ring, tmp, (uint16_t)len);
if (err != WCHNET_ERR_SUCCESS) break;
1ff4: d161 beqz a0,1fb4 <qdx_port_sock_recv_notify+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:178
}
/* Wake blocking recv thread */
xSemaphoreGive(ctx->rx_sem);
1ff6: 6785 lui a5,0x1
1ff8: 943e add s0,s0,a5
1ffa: b7442503 lw a0,-1164(s0)
1ffe: 4681 li a3,0
2000: 4601 li a2,0
2002: 4581 li a1,0
2004: 61f010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:179
}
2008: 21010113 addi sp,sp,528
200c: d24fe06f j 530 <__riscv_restore_4>
ring_write():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:52
r->buf[r->head] = data[i];
2010: b6c95703 lhu a4,-1172(s2)
2014: 080c addi a1,sp,16
2016: 95b6 add a1,a1,a3
2018: 0005c803 lbu a6,0(a1)
201c: 00e405b3 add a1,s0,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:53
r->head = (r->head + 1) % RX_RING_SIZE;
2020: 0705 addi a4,a4,1
2022: 02976733 rem a4,a4,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:52
r->buf[r->head] = data[i];
2026: 01058223 sb a6,4(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:53
r->head = (r->head + 1) % RX_RING_SIZE;
202a: 0685 addi a3,a3,1
202c: b6e91623 sh a4,-1172(s2)
2030: bf55 j 1fe4 <qdx_port_sock_recv_notify+0x4e>
00002032 <qdx_port_sock_connect_notify>:
qdx_port_sock_connect_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:182
void qdx_port_sock_connect_notify(uint8_t sockid)
{
2032: ce4fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:183
SocketCtx_t *ctx = find_ctx_by_wchnet_id(sockid);
2036: 35e5 jal 1f1e <find_ctx_by_wchnet_id>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:184
if (!ctx) return;
2038: cd01 beqz a0,2050 <qdx_port_sock_connect_notify+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:185
ctx->connected = 1;
203a: 4785 li a5,1
203c: a13c sb a5,2(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:186
xSemaphoreGive(ctx->connect_sem);
203e: 6785 lui a5,0x1
2040: 953e add a0,a0,a5
2042: b7852503 lw a0,-1160(a0)
2046: 4681 li a3,0
2048: 4601 li a2,0
204a: 4581 li a1,0
204c: 5d7010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:187
}
2050: ceafe06f j 53a <__riscv_restore_0>
00002054 <qdx_port_sock_disconnect_notify>:
qdx_port_sock_disconnect_notify():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:190
void qdx_port_sock_disconnect_notify(uint8_t sockid)
{
2054: cc2fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:191
SocketCtx_t *ctx = find_ctx_by_wchnet_id(sockid);
2058: 35d9 jal 1f1e <find_ctx_by_wchnet_id>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:192
if (!ctx) return;
205a: cd01 beqz a0,2072 <qdx_port_sock_disconnect_notify+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:195
ctx->connected = 0;
/* Wake recv thread so it can detect disconnect */
xSemaphoreGive(ctx->rx_sem);
205c: 6785 lui a5,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:193
ctx->connected = 0;
205e: 00050123 sb zero,2(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:195
xSemaphoreGive(ctx->rx_sem);
2062: 953e add a0,a0,a5
2064: b7452503 lw a0,-1164(a0)
2068: 4681 li a3,0
206a: 4601 li a2,0
206c: 4581 li a1,0
206e: 5b5010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:196
}
2072: cc8fe06f j 53a <__riscv_restore_0>
00002076 <qdx_port_init>:
qdx_port_init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:203
/* ============================================================
* Init — call once before scheduler starts
* ============================================================ */
void qdx_port_init(void)
{
2076: ca0fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:204
memset(g_sock_ctx, 0, sizeof(g_sock_ctx));
207a: 6605 lui a2,0x1
207c: 2000f537 lui a0,0x2000f
2080: 6f860613 addi a2,a2,1784 # 16f8 <USART_Init+0x52>
2084: 4581 li a1,0
2086: 8c450513 addi a0,a0,-1852 # 2000e8c4 <g_sock_ctx>
208a: cbcfe0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:205
g_wchnet_mutex = xSemaphoreCreateMutex();
208e: 4505 li a0,1
2090: 73b010ef jal ra,3fca <xQueueCreateMutex>
2094: 200007b7 lui a5,0x20000
2098: 0ca7ac23 sw a0,216(a5) # 200000d8 <g_wchnet_mutex>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:206
}
209c: c9efe06f j 53a <__riscv_restore_0>
000020a0 <qdx_port_get_tick_ms>:
qdx_port_get_tick_ms():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:213
/* ============================================================
* Time & Delay
* ============================================================ */
uint32_t qdx_port_get_tick_ms(void)
{
20a0: c76fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:214
return xTaskGetTickCount() * portTICK_PERIOD_MS;
20a4: 0bf020ef jal ra,4962 <xTaskGetTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:215
}
20a8: 0506 slli a0,a0,0x1
20aa: c90fe06f j 53a <__riscv_restore_0>
000020ae <qdx_port_delay_ms>:
qdx_port_delay_ms():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:218
void qdx_port_delay_ms(uint32_t ms)
{
20ae: c68fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:219
vTaskDelay(pdMS_TO_TICKS(ms));
20b2: 1f400793 li a5,500
20b6: 02f50533 mul a0,a0,a5
20ba: 3e800793 li a5,1000
20be: 02f55533 divu a0,a0,a5
20c2: 3bf020ef jal ra,4c80 <vTaskDelay>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:220
}
20c6: c74fe06f j 53a <__riscv_restore_0>
000020ca <qdx_port_mutex_create>:
qdx_port_mutex_create():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:227
/* ============================================================
* Mutex
* ============================================================ */
qdx_mutex_t qdx_port_mutex_create(void)
{
20ca: c4cfe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:228
return (qdx_mutex_t)xSemaphoreCreateMutex();
20ce: 4505 li a0,1
20d0: 6fb010ef jal ra,3fca <xQueueCreateMutex>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:229
}
20d4: c66fe06f j 53a <__riscv_restore_0>
000020d8 <qdx_port_mutex_lock>:
qdx_port_mutex_lock():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:233
void qdx_port_mutex_lock(qdx_mutex_t mutex)
{
if (mutex)
20d8: c901 beqz a0,20e8 <qdx_port_mutex_lock+0x10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:232
{
20da: c3cfe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:234
xSemaphoreTake((SemaphoreHandle_t)mutex, portMAX_DELAY);
20de: 55fd li a1,-1
20e0: 1a6020ef jal ra,4286 <xQueueSemaphoreTake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:235
}
20e4: c56fe06f j 53a <__riscv_restore_0>
20e8: 8082 ret
000020ea <qdx_port_mutex_unlock>:
qdx_port_mutex_unlock():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:239
void qdx_port_mutex_unlock(qdx_mutex_t mutex)
{
if (mutex)
20ea: c911 beqz a0,20fe <qdx_port_mutex_unlock+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:238
{
20ec: c2afe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:240
xSemaphoreGive((SemaphoreHandle_t)mutex);
20f0: 4681 li a3,0
20f2: 4601 li a2,0
20f4: 4581 li a1,0
20f6: 52d010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:241
}
20fa: c40fe06f j 53a <__riscv_restore_0>
20fe: 8082 ret
00002100 <qdx_port_thread_create>:
qdx_port_thread_create():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:255
* Thread
* ============================================================ */
int8_t qdx_port_thread_create(const char *name, qdx_thread_entry_t entry,
void *arg, uint32_t stack_size, uint8_t priority)
{
2100: c16fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:258
/* stack_size from caller is in bytes; xTaskCreate expects words */
uint32_t stack_words = stack_size / sizeof(StackType_t);
if (stack_words < configMINIMAL_STACK_SIZE)
2104: 3ff00793 li a5,1023
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:255
{
2108: 882a mv a6,a0
210a: 852e mv a0,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:257
uint32_t stack_words = stack_size / sizeof(StackType_t);
210c: 0026d593 srli a1,a3,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:258
if (stack_words < configMINIMAL_STACK_SIZE)
2110: 00d7e463 bltu a5,a3,2118 <qdx_port_thread_create+0x18>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:259
stack_words = configMINIMAL_STACK_SIZE;
2114: 10000593 li a1,256
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:261
BaseType_t ret = xTaskCreate((TaskFunction_t)entry, name,
2118: 86b2 mv a3,a2
211a: 01059613 slli a2,a1,0x10
211e: 4781 li a5,0
2120: 8241 srli a2,a2,0x10
2122: 85c2 mv a1,a6
2124: 598020ef jal ra,46bc <xTaskCreate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:264
(uint16_t)stack_words, arg,
(UBaseType_t)priority, NULL);
return (ret == pdPASS) ? 0 : -1;
2128: 157d addi a0,a0,-1
212a: 00a03533 snez a0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:265
}
212e: 40a00533 neg a0,a0
2132: c08fe06f j 53a <__riscv_restore_0>
00002136 <qdx_port_tcp_connect>:
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:272
/* ============================================================
* TCP Socket — connect / send / recv / close
* ============================================================ */
qdx_socket_t qdx_port_tcp_connect(const char *ip, uint16_t port)
{
2136: bb8fe2ef jal t0,4ee <__riscv_save_10>
213a: 715d addi sp,sp,-80
213c: 892e mv s2,a1
parse_ip():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:139
uint32_t vals[4] = {0};
213e: ca02 sw zero,20(sp)
2140: cc02 sw zero,24(sp)
2142: ce02 sw zero,28(sp)
2144: d002 sw zero,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:136
const char *p = ip_str;
2146: 85aa mv a1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:135
int n = 0, idx = 0;
2148: 4701 li a4,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:140
while (*p && idx < 4) {
214a: 480d li a6,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:141
if (*p >= '0' && *p <= '9') {
214c: 48a5 li a7,9
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:143
} else if (*p == '.') {
214e: 02e00313 li t1,46
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:142
vals[idx] = vals[idx] * 10 + (*p - '0');
2152: 4e29 li t3,10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:140
while (*p && idx < 4) {
2154: 00058683 lb a3,0(a1)
2158: c6a1 beqz a3,21a0 <qdx_port_tcp_connect+0x6a>
215a: 00e85a63 bge a6,a4,216e <qdx_port_tcp_connect+0x38>
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:275
uint8_t dest_ip[4];
if (parse_ip(ip, dest_ip) != 0) {
printf("qdx_port: bad IP \"%s\"\r\n", ip);
215e: 85aa mv a1,a0
2160: 0000d537 lui a0,0xd
2164: 25850513 addi a0,a0,600 # d258 <MemSize+0xc4>
2168: 10f0a0ef jal ra,ca76 <printf>
216c: a069 j 21f6 <qdx_port_tcp_connect+0xc0>
parse_ip():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:141
if (*p >= '0' && *p <= '9') {
216e: fd068793 addi a5,a3,-48
2172: 0ff7f793 andi a5,a5,255
2176: 02f8e163 bltu a7,a5,2198 <qdx_port_tcp_connect+0x62>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:142
vals[idx] = vals[idx] * 10 + (*p - '0');
217a: 089c addi a5,sp,80
217c: 00271613 slli a2,a4,0x2
2180: 963e add a2,a2,a5
2182: fc462783 lw a5,-60(a2)
2186: 02fe07b3 mul a5,t3,a5
218a: 97b6 add a5,a5,a3
218c: fd078793 addi a5,a5,-48
2190: fcf62223 sw a5,-60(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:148
p++;
2194: 0585 addi a1,a1,1
2196: bf7d j 2154 <qdx_port_tcp_connect+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:143
} else if (*p == '.') {
2198: fc6693e3 bne a3,t1,215e <qdx_port_tcp_connect+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:144
idx++;
219c: 0705 addi a4,a4,1
219e: bfdd j 2194 <qdx_port_tcp_connect+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:150
if (idx != 3) return -1;
21a0: 478d li a5,3
21a2: faf71ee3 bne a4,a5,215e <qdx_port_tcp_connect+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:152
if (vals[i] > 255) return -1;
21a6: 4a52 lw s4,20(sp)
21a8: 0ff00793 li a5,255
21ac: fb47e9e3 bltu a5,s4,215e <qdx_port_tcp_connect+0x28>
21b0: 4ae2 lw s5,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:153
ip[i] = (uint8_t)vals[i];
21b2: 01410823 sb s4,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:152
if (vals[i] > 255) return -1;
21b6: fb57e4e3 bltu a5,s5,215e <qdx_port_tcp_connect+0x28>
21ba: 4b72 lw s6,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:153
ip[i] = (uint8_t)vals[i];
21bc: 015108a3 sb s5,17(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:152
if (vals[i] > 255) return -1;
21c0: f967efe3 bltu a5,s6,215e <qdx_port_tcp_connect+0x28>
21c4: 5b82 lw s7,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:153
ip[i] = (uint8_t)vals[i];
21c6: 01610923 sb s6,18(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:152
if (vals[i] > 255) return -1;
21ca: f977eae3 bltu a5,s7,215e <qdx_port_tcp_connect+0x28>
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:101
if (!g_sock_ctx[i].in_use) {
21ce: 2000f437 lui s0,0x2000f
21d2: 8c444783 lbu a5,-1852(s0) # 2000e8c4 <g_sock_ctx>
parse_ip():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:153
ip[i] = (uint8_t)vals[i];
21d6: 017109a3 sb s7,19(sp)
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:101
if (!g_sock_ctx[i].in_use) {
21da: 8c440413 addi s0,s0,-1852
21de: cf91 beqz a5,21fa <qdx_port_tcp_connect+0xc4>
21e0: 6785 lui a5,0x1
21e2: 97a2 add a5,a5,s0
21e4: b7c7c783 lbu a5,-1156(a5) # b7c <SystemInit+0x58>
21e8: cfc5 beqz a5,22a0 <qdx_port_tcp_connect+0x16a>
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:281
return NULL;
}
SocketCtx_t *ctx = alloc_sock_ctx();
if (!ctx) {
printf("qdx_port: no free SocketCtx\r\n");
21ea: 0000d537 lui a0,0xd
21ee: 1a450513 addi a0,a0,420 # d1a4 <MemSize+0x10>
21f2: 0a90a0ef jal ra,ca9a <puts>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:276
return NULL;
21f6: 4401 li s0,0
21f8: a291 j 233c <qdx_port_tcp_connect+0x206>
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:100
for (int i = 0; i < MAX_SOCKETS; i++) {
21fa: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:102
memset(&g_sock_ctx[i], 0, sizeof(SocketCtx_t));
21fc: 6985 lui s3,0x1
21fe: b7c98613 addi a2,s3,-1156 # b7c <SystemInit+0x58>
2202: 02c484b3 mul s1,s1,a2
2206: 4581 li a1,0
2208: 9426 add s0,s0,s1
220a: 8522 mv a0,s0
220c: b3afe0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:103
g_sock_ctx[i].in_use = 1;
2210: 4785 li a5,1
2212: a01c sb a5,0(s0)
ring_init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:36
r->head = 0;
2214: 2000f7b7 lui a5,0x2000f
2218: 42478793 addi a5,a5,1060 # 2000f424 <g_sock_ctx+0xb60>
221c: 94be add s1,s1,a5
221e: 0004a623 sw zero,12(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:38
r->count = 0;
2222: 00898c33 add s8,s3,s0
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:105
g_sock_ctx[i].rx_sem = xSemaphoreCreateBinary();
2226: 460d li a2,3
2228: 4581 li a1,0
ring_init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:38
r->count = 0;
222a: b60c1823 sh zero,-1168(s8)
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:105
g_sock_ctx[i].rx_sem = xSemaphoreCreateBinary();
222e: 4505 li a0,1
2230: 385010ef jal ra,3db4 <xQueueGenericCreate>
2234: b6ac2a23 sw a0,-1164(s8)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:106
g_sock_ctx[i].connect_sem = xSemaphoreCreateBinary();
2238: 460d li a2,3
223a: 4581 li a1,0
223c: 4505 li a0,1
223e: 377010ef jal ra,3db4 <xQueueGenericCreate>
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:286
return NULL;
}
SOCK_INF sock_inf;
memset(&sock_inf, 0, sizeof(sock_inf));
2242: 03c00613 li a2,60
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:106
g_sock_ctx[i].connect_sem = xSemaphoreCreateBinary();
2246: b6ac2c23 sw a0,-1160(s8)
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:286
memset(&sock_inf, 0, sizeof(sock_inf));
224a: 4581 li a1,0
224c: 0848 addi a0,sp,20
224e: af8fe0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:294
sock_inf.DesPort = port;
memcpy(sock_inf.IPAddr, dest_ip, 4);
uint8_t wchnet_id = 0;
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2252: 200004b7 lui s1,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:287
sock_inf.ProtoType = PROTO_TYPE_TCP;
2256: 478d li a5,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:294
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2258: 0d848493 addi s1,s1,216 # 200000d8 <g_wchnet_mutex>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:287
sock_inf.ProtoType = PROTO_TYPE_TCP;
225c: d83e sw a5,48(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:294
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
225e: 4088 lw a0,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:290
memcpy(sock_inf.IPAddr, dest_ip, 4);
2260: 47c2 lw a5,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:294
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2262: 55fd li a1,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:289
sock_inf.DesPort = port;
2264: dc4a sw s2,56(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:290
memcpy(sock_inf.IPAddr, dest_ip, 4);
2266: c0be sw a5,64(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:292
uint8_t wchnet_id = 0;
2268: 000107a3 sb zero,15(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:294
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
226c: 01a020ef jal ra,4286 <xQueueSemaphoreTake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:295
uint8_t err = WCHNET_SocketCreat(&wchnet_id, &sock_inf);
2270: 084c addi a1,sp,20
2272: 00f10513 addi a0,sp,15
2276: 0dc040ef jal ra,6352 <WCHNET_SocketCreat>
227a: 8caa mv s9,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:296
xSemaphoreGive(g_wchnet_mutex);
227c: 4088 lw a0,0(s1)
227e: 4681 li a3,0
2280: 4601 li a2,0
2282: 4581 li a1,0
2284: 39f010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:298
if (err != WCHNET_ERR_SUCCESS) {
2288: 000c8e63 beqz s9,22a4 <qdx_port_tcp_connect+0x16e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:299
printf("qdx_port: SocketCreat fail %02X\r\n", err);
228c: 0000d537 lui a0,0xd
2290: 85e6 mv a1,s9
2292: 1c450513 addi a0,a0,452 # d1c4 <MemSize+0x30>
2296: 7e00a0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:331
return NULL;
}
if (!ctx->connected) {
WCHNET_SocketClose(wchnet_id, 0);
free_sock_ctx(ctx);
229a: 8522 mv a0,s0
229c: 31c1 jal 1f5c <free_sock_ctx>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:332
return NULL;
229e: bfa1 j 21f6 <qdx_port_tcp_connect+0xc0>
alloc_sock_ctx():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:100
for (int i = 0; i < MAX_SOCKETS; i++) {
22a0: 4485 li s1,1
22a2: bfa9 j 21fc <qdx_port_tcp_connect+0xc6>
qdx_port_tcp_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:304
ctx->wchnet_sock_id = wchnet_id;
22a4: 8788 lbu a0,15(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:308
(uint32_t)SocketRecvBuf[wchnet_id], RECE_BUF_LEN);
22a6: b6898613 addi a2,s3,-1176
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:307
WCHNET_ModifyRecvBuf(wchnet_id,
22aa: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:308
(uint32_t)SocketRecvBuf[wchnet_id], RECE_BUF_LEN);
22ae: 02c505b3 mul a1,a0,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:307
WCHNET_ModifyRecvBuf(wchnet_id,
22b2: 21878793 addi a5,a5,536 # 20000218 <SocketRecvBuf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:304
ctx->wchnet_sock_id = wchnet_id;
22b6: b008 sb a0,1(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:307
WCHNET_ModifyRecvBuf(wchnet_id,
22b8: 95be add a1,a1,a5
22ba: 2c2040ef jal ra,657c <WCHNET_ModifyRecvBuf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:310
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
22be: 4088 lw a0,0(s1)
22c0: 55fd li a1,-1
22c2: 7c5010ef jal ra,4286 <xQueueSemaphoreTake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:311
err = WCHNET_SocketConnect(wchnet_id);
22c6: 8788 lbu a0,15(sp)
22c8: 027040ef jal ra,6aee <WCHNET_SocketConnect>
22cc: 8caa mv s9,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:312
xSemaphoreGive(g_wchnet_mutex);
22ce: 4088 lw a0,0(s1)
22d0: 4681 li a3,0
22d2: 4601 li a2,0
22d4: 4581 li a1,0
22d6: 34d010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:314
if (err != WCHNET_ERR_SUCCESS) {
22da: 000c8e63 beqz s9,22f6 <qdx_port_tcp_connect+0x1c0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:315
printf("qdx_port: SocketConnect fail %02X\r\n", err);
22de: 0000d537 lui a0,0xd
22e2: 85e6 mv a1,s9
22e4: 1e850513 addi a0,a0,488 # d1e8 <MemSize+0x54>
22e8: 78e0a0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:324
WCHNET_SocketClose(wchnet_id, 0);
22ec: 8788 lbu a0,15(sp)
22ee: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:330
WCHNET_SocketClose(wchnet_id, 0);
22f0: 16d040ef jal ra,6c5c <WCHNET_SocketClose>
22f4: b75d j 229a <qdx_port_tcp_connect+0x164>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:322
if (xSemaphoreTake(ctx->connect_sem, pdMS_TO_TICKS(5000)) != pdTRUE) {
22f6: b78c2503 lw a0,-1160(s8)
22fa: 9c498593 addi a1,s3,-1596
22fe: 789010ef jal ra,4286 <xQueueSemaphoreTake>
2302: 4785 li a5,1
2304: 00f50963 beq a0,a5,2316 <qdx_port_tcp_connect+0x1e0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:323
printf("qdx_port: connect timeout\r\n");
2308: 0000d537 lui a0,0xd
230c: 20c50513 addi a0,a0,524 # d20c <MemSize+0x78>
2310: 78a0a0ef jal ra,ca9a <puts>
2314: bfe1 j 22ec <qdx_port_tcp_connect+0x1b6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:329
if (!ctx->connected) {
2316: 203c lbu a5,2(s0)
2318: 8788 lbu a0,15(sp)
231a: 0ff7f793 andi a5,a5,255
231e: e399 bnez a5,2324 <qdx_port_tcp_connect+0x1ee>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:330
WCHNET_SocketClose(wchnet_id, 0);
2320: 4581 li a1,0
2322: b7f9 j 22f0 <qdx_port_tcp_connect+0x1ba>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:339
#if KEEPALIVE_ENABLE
WCHNET_SocketSetKeepLive(wchnet_id, ENABLE);
#endif
printf("qdx_port: connected sock %d -> %d.%d.%d.%d:%d\r\n",
2324: 85aa mv a1,a0
2326: 0000d537 lui a0,0xd
232a: 884a mv a6,s2
232c: 87de mv a5,s7
232e: 875a mv a4,s6
2330: 86d6 mv a3,s5
2332: 8652 mv a2,s4
2334: 22850513 addi a0,a0,552 # d228 <MemSize+0x94>
2338: 73e0a0ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:342
wchnet_id, dest_ip[0], dest_ip[1], dest_ip[2], dest_ip[3], port);
return (qdx_socket_t)ctx;
}
233c: 8522 mv a0,s0
233e: 6161 addi sp,sp,80
2340: 9e6fe06f j 526 <__riscv_restore_10>
00002344 <qdx_port_tcp_send>:
qdx_port_tcp_send():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:347
int32_t qdx_port_tcp_send(qdx_socket_t sock, const uint8_t *data, uint32_t len)
{
SocketCtx_t *ctx = (SocketCtx_t *)sock;
if (!ctx || !ctx->connected)
2344: e119 bnez a0,234a <qdx_port_tcp_send+0x6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:348
return -1;
2346: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:360
if (err != WCHNET_ERR_SUCCESS)
return -1;
return (int32_t)send_len;
}
2348: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:347 (discriminator 1)
if (!ctx || !ctx->connected)
234a: 213c lbu a5,2(a0)
234c: 0ff7f793 andi a5,a5,255
2350: dbfd beqz a5,2346 <qdx_port_tcp_send+0x2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:345
{
2352: 9c4fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:352
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2356: 200004b7 lui s1,0x20000
235a: 0d848493 addi s1,s1,216 # 200000d8 <g_wchnet_mutex>
235e: 842a mv s0,a0
2360: 4088 lw a0,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:345
{
2362: 1141 addi sp,sp,-16
2364: 892e mv s2,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:352
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2366: 55fd li a1,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:350
uint32_t send_len = len;
2368: c632 sw a2,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:352
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
236a: 71d010ef jal ra,4286 <xQueueSemaphoreTake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:353
uint8_t err = WCHNET_SocketSend(ctx->wchnet_sock_id, (uint8_t *)data, &send_len);
236e: 3008 lbu a0,1(s0)
2370: 0070 addi a2,sp,12
2372: 85ca mv a1,s2
2374: 5ae040ef jal ra,6922 <WCHNET_SocketSend>
2378: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:354
xSemaphoreGive(g_wchnet_mutex);
237a: 4088 lw a0,0(s1)
237c: 4681 li a3,0
237e: 4601 li a2,0
2380: 4581 li a1,0
2382: 2a1010ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:348
return -1;
2386: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:356
if (err != WCHNET_ERR_SUCCESS)
2388: e011 bnez s0,238c <qdx_port_tcp_send+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:359
return (int32_t)send_len;
238a: 4532 lw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:360
}
238c: 0141 addi sp,sp,16
238e: 9acfe06f j 53a <__riscv_restore_0>
00002392 <qdx_port_tcp_recv>:
qdx_port_tcp_recv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:365
int32_t qdx_port_tcp_recv(qdx_socket_t sock, uint8_t *buf, uint32_t max_len)
{
SocketCtx_t *ctx = (SocketCtx_t *)sock;
if (!ctx)
2392: e511 bnez a0,239e <qdx_port_tcp_recv+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:366
return -1;
2394: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:390
/* Still no data — disconnected? */
if (!ctx->connected)
return -1;
return 0; /* timeout, no data */
}
2396: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:366
return -1;
2398: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:390
}
239a: 996fe06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:363
{
239e: 95efe2ef jal t0,4fc <__riscv_save_4>
ring_read():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:61
uint16_t to_read = (r->count < max_len) ? r->count : max_len;
23a2: 6785 lui a5,0x1
23a4: 97aa add a5,a5,a0
23a6: b707d783 lhu a5,-1168(a5) # b70 <SystemInit+0x4c>
qdx_port_tcp_recv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:369
uint16_t got = ring_read(&ctx->rx_ring, buf, (uint16_t)max_len);
23aa: 01061493 slli s1,a2,0x10
23ae: 80c1 srli s1,s1,0x10
ring_read():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:61
uint16_t to_read = (r->count < max_len) ? r->count : max_len;
23b0: 00f4f363 bgeu s1,a5,23b6 <qdx_port_tcp_recv+0x24>
23b4: 87a6 mv a5,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
23b6: 6705 lui a4,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:61
uint16_t to_read = (r->count < max_len) ? r->count : max_len;
23b8: 07c2 slli a5,a5,0x10
23ba: 83c1 srli a5,a5,0x10
23bc: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
23be: 00e50833 add a6,a0,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:65
r->tail = (r->tail + 1) % RX_RING_SIZE;
23c2: b6870613 addi a2,a4,-1176 # b68 <SystemInit+0x44>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:63
for (uint16_t i = 0; i < to_read; i++) {
23c6: 01069713 slli a4,a3,0x10
23ca: 8341 srli a4,a4,0x10
23cc: 00f76c63 bltu a4,a5,23e4 <qdx_port_tcp_recv+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:67
r->count -= to_read;
23d0: 6905 lui s2,0x1
23d2: 992a add s2,s2,a0
23d4: b7095703 lhu a4,-1168(s2) # b70 <SystemInit+0x4c>
23d8: 8f1d sub a4,a4,a5
23da: b6e91823 sh a4,-1168(s2)
qdx_port_tcp_recv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:370
if (got > 0)
23de: c78d beqz a5,2408 <qdx_port_tcp_recv+0x76>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:383
return (int32_t)got;
23e0: 853e mv a0,a5
23e2: bf65 j 239a <qdx_port_tcp_recv+0x8>
ring_read():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
23e4: b6e85703 lhu a4,-1170(a6)
23e8: 972a add a4,a4,a0
23ea: 00474883 lbu a7,4(a4)
23ee: 00d58733 add a4,a1,a3
23f2: 0685 addi a3,a3,1
23f4: 01170023 sb a7,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:65
r->tail = (r->tail + 1) % RX_RING_SIZE;
23f8: b6e85703 lhu a4,-1170(a6)
23fc: 0705 addi a4,a4,1
23fe: 02c76733 rem a4,a4,a2
2402: b6e81723 sh a4,-1170(a6)
2406: b7c1 j 23c6 <qdx_port_tcp_recv+0x34>
qdx_port_tcp_recv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:374
if (!ctx->connected)
2408: 213c lbu a5,2(a0)
240a: 0ff7f793 andi a5,a5,255
240e: d7c9 beqz a5,2398 <qdx_port_tcp_recv+0x6>
2410: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:378
xSemaphoreTake(ctx->rx_sem, pdMS_TO_TICKS(100));
2412: b7492503 lw a0,-1164(s2)
2416: 89ae mv s3,a1
2418: 03200593 li a1,50
241c: 66b010ef jal ra,4286 <xQueueSemaphoreTake>
ring_read():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:61
uint16_t to_read = (r->count < max_len) ? r->count : max_len;
2420: b7095783 lhu a5,-1168(s2)
2424: 00f4f363 bgeu s1,a5,242a <qdx_port_tcp_recv+0x98>
2428: 87a6 mv a5,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
242a: 6705 lui a4,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:61
uint16_t to_read = (r->count < max_len) ? r->count : max_len;
242c: 07c2 slli a5,a5,0x10
242e: 83c1 srli a5,a5,0x10
2430: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
2432: 00e405b3 add a1,s0,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:65
r->tail = (r->tail + 1) % RX_RING_SIZE;
2436: b6870613 addi a2,a4,-1176 # b68 <SystemInit+0x44>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:63
for (uint16_t i = 0; i < to_read; i++) {
243a: 01069713 slli a4,a3,0x10
243e: 8341 srli a4,a4,0x10
2440: 02f76263 bltu a4,a5,2464 <qdx_port_tcp_recv+0xd2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:67
r->count -= to_read;
2444: 6705 lui a4,0x1
2446: 9722 add a4,a4,s0
2448: b7075683 lhu a3,-1168(a4) # b70 <SystemInit+0x4c>
244c: 8e9d sub a3,a3,a5
244e: b6d71823 sh a3,-1168(a4)
qdx_port_tcp_recv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:382
if (got > 0)
2452: f7d9 bnez a5,23e0 <qdx_port_tcp_recv+0x4e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:386
if (!ctx->connected)
2454: 2028 lbu a0,2(s0)
2456: 0ff57513 andi a0,a0,255
245a: 00153513 seqz a0,a0
245e: 40a00533 neg a0,a0
2462: bf25 j 239a <qdx_port_tcp_recv+0x8>
ring_read():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:64
data[i] = r->buf[r->tail];
2464: b6e5d703 lhu a4,-1170(a1)
2468: 9722 add a4,a4,s0
246a: 2348 lbu a0,4(a4)
246c: 00d98733 add a4,s3,a3
2470: 0685 addi a3,a3,1
2472: a308 sb a0,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:65
r->tail = (r->tail + 1) % RX_RING_SIZE;
2474: b6e5d703 lhu a4,-1170(a1)
2478: 0705 addi a4,a4,1
247a: 02c76733 rem a4,a4,a2
247e: b6e59723 sh a4,-1170(a1)
2482: bf65 j 243a <qdx_port_tcp_recv+0xa8>
00002484 <qdx_port_tcp_close>:
qdx_port_tcp_close():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:395
void qdx_port_tcp_close(qdx_socket_t sock)
{
SocketCtx_t *ctx = (SocketCtx_t *)sock;
if (!ctx) return;
2484: c529 beqz a0,24ce <qdx_port_tcp_close+0x4a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:393
{
2486: 890fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:397
if (ctx->in_use) {
248a: 211c lbu a5,0(a0)
248c: 842a mv s0,a0
248e: c39d beqz a5,24b4 <qdx_port_tcp_close+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:398
xSemaphoreTake(g_wchnet_mutex, portMAX_DELAY);
2490: 200004b7 lui s1,0x20000
2494: 0d848493 addi s1,s1,216 # 200000d8 <g_wchnet_mutex>
2498: 4088 lw a0,0(s1)
249a: 55fd li a1,-1
249c: 5eb010ef jal ra,4286 <xQueueSemaphoreTake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:399
WCHNET_SocketClose(ctx->wchnet_sock_id, 0);
24a0: 3008 lbu a0,1(s0)
24a2: 4581 li a1,0
24a4: 7b8040ef jal ra,6c5c <WCHNET_SocketClose>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:400
xSemaphoreGive(g_wchnet_mutex);
24a8: 4088 lw a0,0(s1)
24aa: 4681 li a3,0
24ac: 4601 li a2,0
24ae: 4581 li a1,0
24b0: 173010ef jal ra,3e22 <xQueueGenericSend>
ring_init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:36
r->head = 0;
24b4: 6785 lui a5,0x1
24b6: 97a2 add a5,a5,s0
24b8: b6079623 sh zero,-1172(a5) # b6c <SystemInit+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:37
r->tail = 0;
24bc: b6079723 sh zero,-1170(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:38
r->count = 0;
24c0: b6079823 sh zero,-1168(a5)
qdx_port_tcp_close():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:403
}
ring_init(&ctx->rx_ring);
free_sock_ctx(ctx);
24c4: 8522 mv a0,s0
24c6: a97ff0ef jal ra,1f5c <free_sock_ctx>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_port.c:404
}
24ca: 870fe06f j 53a <__riscv_restore_0>
24ce: 8082 ret
000024d0 <Preprocess_Init>:
Preprocess_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:35
* ============================================================ */
int8_t Preprocess_Init(uint16_t maxWidth, uint16_t maxHeight) {
(void)maxHeight; /* 列累加仅依赖宽度 */
if (maxWidth > PREPROCESS_MAX_WIDTH) {
24d0: 10000793 li a5,256
24d4: 00a7f763 bgeu a5,a0,24e2 <Preprocess_Init+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:36
return -1; /* 超出静态分配缓冲区上限 */
24d8: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:53
g_PreprocessCfg.cfg2d.TargetWidth = 1;
g_PreprocessCfg.cfg2d.TargetHeight = 1;
g_is_initialized = 1;
return 0;
}
24da: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:36
return -1; /* 超出静态分配缓冲区上限 */
24dc: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:53
}
24de: 85cfe06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:32
int8_t Preprocess_Init(uint16_t maxWidth, uint16_t maxHeight) {
24e2: 834fe2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:39
memset(g_col_sums, 0, sizeof(g_col_sums));
24e6: 20010537 lui a0,0x20010
24ea: 40000613 li a2,1024
24ee: 4581 li a1,0
24f0: 02c50513 addi a0,a0,44 # 2001002c <g_col_sums>
24f4: 852fe0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:40
memset(&g_PreprocessCfg, 0, sizeof(g_PreprocessCfg));
24f8: 20010537 lui a0,0x20010
24fc: 06e00613 li a2,110
2500: 4581 li a1,0
2502: fbc50413 addi s0,a0,-68 # 2000ffbc <g_PreprocessCfg>
2506: fbc50513 addi a0,a0,-68
250a: 83cfe0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:43
g_preprocess_mutex = qdx_port_mutex_create();
250e: bbdff0ef jal ra,20ca <qdx_port_mutex_create>
2512: 200007b7 lui a5,0x20000
2516: 0ea7a023 sw a0,224(a5) # 200000e0 <g_preprocess_mutex>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:44
if (g_preprocess_mutex == NULL)
251a: d169 beqz a0,24dc <Preprocess_Init+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:48
g_PreprocessCfg.cfg2d.TargetWidth = 1;
251c: 4785 li a5,1
251e: b87c sb a5,23(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:49
g_PreprocessCfg.cfg2d.TargetHeight = 1;
2520: bc1c sb a5,25(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:51
g_is_initialized = 1;
2522: 4705 li a4,1
2524: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:48
g_PreprocessCfg.cfg2d.TargetWidth = 1;
2528: 00040c23 sb zero,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:49
g_PreprocessCfg.cfg2d.TargetHeight = 1;
252c: 00040d23 sb zero,26(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:51
g_is_initialized = 1;
2530: 0ce78e23 sb a4,220(a5) # 200000dc <g_is_initialized>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:52
return 0;
2534: 4501 li a0,0
2536: b765 j 24de <Preprocess_Init+0xe>
00002538 <Preprocess_Settings_Change>:
Preprocess_Settings_Change():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:58
int8_t Preprocess_Settings_Change(const Config2D_t *newConfig2D,
const Config1D_t *newConfig1D,
const ConfigCommon_t *newCommon) {
if (!g_is_initialized)
2538: 200007b7 lui a5,0x20000
253c: 0dc7c783 lbu a5,220(a5) # 200000dc <g_is_initialized>
2540: c7d1 beqz a5,25cc <Preprocess_Settings_Change+0x94>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:57
const ConfigCommon_t *newCommon) {
2542: fbbfd2ef jal t0,4fc <__riscv_save_4>
2546: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:62
return -1;
/* 加锁保护配置更新,防止与 Execute 读取产生竞态 */
qdx_port_mutex_lock(g_preprocess_mutex);
2548: 200009b7 lui s3,0x20000
254c: c62a sw a0,12(sp)
254e: 0e09a503 lw a0,224(s3) # 200000e0 <g_preprocess_mutex>
2552: 892e mv s2,a1
2554: 84b2 mv s1,a2
2556: b83ff0ef jal ra,20d8 <qdx_port_mutex_lock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:64
if (newConfig2D)
255a: 45b2 lw a1,12(sp)
255c: 0e098993 addi s3,s3,224
2560: c989 beqz a1,2572 <Preprocess_Settings_Change+0x3a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:65
memcpy(&g_PreprocessCfg.cfg2d, newConfig2D, sizeof(Config2D_t));
2562: 20010537 lui a0,0x20010
2566: 03d00613 li a2,61
256a: fbc50513 addi a0,a0,-68 # 2000ffbc <g_PreprocessCfg>
256e: 1630a0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:66
if (newConfig1D)
2572: 20010437 lui s0,0x20010
2576: fbc40413 addi s0,s0,-68 # 2000ffbc <g_PreprocessCfg>
257a: 00090863 beqz s2,258a <Preprocess_Settings_Change+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:67
memcpy(&g_PreprocessCfg.cfg1d, newConfig1D, sizeof(Config1D_t));
257e: 4669 li a2,26
2580: 85ca mv a1,s2
2582: 03d40513 addi a0,s0,61
2586: 14b0a0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:68
if (newCommon)
258a: c499 beqz s1,2598 <Preprocess_Settings_Change+0x60>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:69
memcpy(&g_PreprocessCfg.common, newCommon, sizeof(ConfigCommon_t));
258c: 465d li a2,23
258e: 85a6 mv a1,s1
2590: 05740513 addi a0,s0,87
2594: 13d0a0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:72
/* 安全检查 */
if (g_PreprocessCfg.cfg2d.TargetWidth == 0)
2598: 2c1c lbu a5,24(s0)
259a: 3878 lbu a4,23(s0)
259c: 07a2 slli a5,a5,0x8
259e: 8fd9 or a5,a5,a4
25a0: e789 bnez a5,25aa <Preprocess_Settings_Change+0x72>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:73
g_PreprocessCfg.cfg2d.TargetWidth = 1;
25a2: 4785 li a5,1
25a4: b87c sb a5,23(s0)
25a6: 00040c23 sb zero,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:74
if (g_PreprocessCfg.cfg2d.TargetHeight == 0)
25aa: 4c1c lw a5,24(s0)
25ac: 83a1 srli a5,a5,0x8
25ae: 07c2 slli a5,a5,0x10
25b0: 83c1 srli a5,a5,0x10
25b2: e789 bnez a5,25bc <Preprocess_Settings_Change+0x84>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:75
g_PreprocessCfg.cfg2d.TargetHeight = 1;
25b4: 4785 li a5,1
25b6: bc1c sb a5,25(s0)
25b8: 00040d23 sb zero,26(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:77
qdx_port_mutex_unlock(g_preprocess_mutex);
25bc: 0009a503 lw a0,0(s3)
25c0: b2bff0ef jal ra,20ea <qdx_port_mutex_unlock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:78
return 0;
25c4: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:79
}
25c6: 0141 addi sp,sp,16
25c8: f69fd06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:59
return -1;
25cc: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:79
}
25ce: 8082 ret
000025d0 <Preprocess_Execute>:
Preprocess_Execute():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:84
int8_t Preprocess_Execute(const RawImageBuffer_t *input,
TcpTxBuffer_t *out_buffer,
PreprocessResult_t *output_meta) {
if (!g_is_initialized || !input || !input->pData || !out_buffer ||
25d0: 200007b7 lui a5,0x20000
25d4: 0dc7c783 lbu a5,220(a5) # 200000dc <g_is_initialized>
25d8: 30078363 beqz a5,28de <Preprocess_Execute+0x30e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:86 (discriminator 1)
!out_buffer->pBuffer || !output_meta)
return -1;
25dc: 57fd li a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:84 (discriminator 1)
if (!g_is_initialized || !input || !input->pData || !out_buffer ||
25de: 30050163 beqz a0,28e0 <Preprocess_Execute+0x310>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:84 (discriminator 2)
25e2: 4118 lw a4,0(a0)
25e4: 2e070e63 beqz a4,28e0 <Preprocess_Execute+0x310>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:84 (discriminator 3)
25e8: 2e058c63 beqz a1,28e0 <Preprocess_Execute+0x310>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:84 (discriminator 4)
25ec: 4198 lw a4,0(a1)
25ee: 2e070963 beqz a4,28e0 <Preprocess_Execute+0x310>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:85
!out_buffer->pBuffer || !output_meta)
25f2: 2e060763 beqz a2,28e0 <Preprocess_Execute+0x310>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:83
PreprocessResult_t *output_meta) {
25f6: ef9fd2ef jal t0,4ee <__riscv_save_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:89
/* 加锁快照当前配置,最小化持锁时间 */
qdx_port_mutex_lock(g_preprocess_mutex);
25fa: 20000937 lui s2,0x20000
25fe: 0e090913 addi s2,s2,224 # 200000e0 <g_preprocess_mutex>
2602: 89aa mv s3,a0
2604: 00092503 lw a0,0(s2)
2608: 8432 mv s0,a2
260a: 84ae mv s1,a1
260c: acdff0ef jal ra,20d8 <qdx_port_mutex_lock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:90
uint16_t tgt_w = g_PreprocessCfg.cfg2d.TargetWidth;
2610: 200107b7 lui a5,0x20010
2614: fbc78793 addi a5,a5,-68 # 2000ffbc <g_PreprocessCfg>
2618: 0187ab03 lw s6,24(a5)
261c: 3bf8 lbu a4,23(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:93
uint16_t tgt_h = g_PreprocessCfg.cfg2d.TargetHeight;
int16_t thresh = g_PreprocessCfg.cfg2d.TriggerTemperatureThreshold;
qdx_port_mutex_unlock(g_preprocess_mutex);
261e: 00092503 lw a0,0(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:90
uint16_t tgt_w = g_PreprocessCfg.cfg2d.TargetWidth;
2622: 0ffb7b93 andi s7,s6,255
2626: 0ba2 slli s7,s7,0x8
2628: 00ebebb3 or s7,s7,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:92
int16_t thresh = g_PreprocessCfg.cfg2d.TriggerTemperatureThreshold;
262c: 02279d03 lh s10,34(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:93
qdx_port_mutex_unlock(g_preprocess_mutex);
2630: abbff0ef jal ra,20ea <qdx_port_mutex_unlock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:95
uint16_t w = input->Width;
2634: 0049d903 lhu s2,4(s3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:91
uint16_t tgt_h = g_PreprocessCfg.cfg2d.TargetHeight;
2638: 008b5b13 srli s6,s6,0x8
263c: 0b42 slli s6,s6,0x10
263e: 010b5b13 srli s6,s6,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:96
uint16_t h = input->Height;
2642: 0069dc83 lhu s9,6(s3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:99
/* 目标超过输入时回退到整幅图像 */
if (tgt_w > w)
2646: 8ade mv s5,s7
2648: 01797363 bgeu s2,s7,264e <Preprocess_Execute+0x7e>
264c: 8aca mv s5,s2
264e: 0ac2 slli s5,s5,0x10
2650: 010ada93 srli s5,s5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:101
tgt_w = w;
if (tgt_h > h)
2654: 8a5a mv s4,s6
2656: 016cf363 bgeu s9,s6,265c <Preprocess_Execute+0x8c>
265a: 8a66 mv s4,s9
265c: 0a42 slli s4,s4,0x10
265e: 010a5a13 srli s4,s4,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:105
tgt_h = h;
/* ---- 缓冲区容量越界检查 ---- */
uint32_t required_bytes = (uint32_t)tgt_w * tgt_h * 2u;
2662: 034a8c33 mul s8,s5,s4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:106
if (out_buffer->HeadOffset + required_bytes > out_buffer->TotalCapacity) {
2666: 4494 lw a3,8(s1)
2668: 40d0 lw a2,4(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:107
return -3; /* 输出缓冲区空间不足 */
266a: 57f5 li a5,-3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:105
uint32_t required_bytes = (uint32_t)tgt_w * tgt_h * 2u;
266c: 001c1713 slli a4,s8,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:106
if (out_buffer->HeadOffset + required_bytes > out_buffer->TotalCapacity) {
2670: 9736 add a4,a4,a3
2672: 04e66c63 bltu a2,a4,26ca <Preprocess_Execute+0xfa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:111
}
/* 判断是否需要滑窗计算,或直接导出全图 */
if (tgt_w == w && tgt_h == h) {
2676: 092bec63 bltu s7,s2,270e <Preprocess_Execute+0x13e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:111 (discriminator 1)
267a: 099b6a63 bltu s6,s9,270e <Preprocess_Execute+0x13e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:116
/* 无需滑窗,仅做温度过滤与整体统计 */
int16_t min_t = 32767;
int16_t max_t = -32768;
uint32_t total_sum = 0;
uint32_t pixels = w * h;
267e: 03990333 mul t1,s2,s9
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:119
/* Write directly to out_buffer starting at HeadOffset */
uint8_t *dest_ptr = out_buffer->pBuffer + out_buffer->HeadOffset;
2682: 4090 lw a2,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:121
for (uint32_t i = 0; i < pixels; i++) {
2684: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:115
uint32_t total_sum = 0;
2686: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:119
uint8_t *dest_ptr = out_buffer->pBuffer + out_buffer->HeadOffset;
2688: 9636 add a2,a2,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:113
int16_t min_t = 32767;
268a: 66a1 lui a3,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:114
int16_t max_t = -32768;
268c: 7561 lui a0,0xffff8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:113
int16_t min_t = 32767;
268e: 16fd addi a3,a3,-1
2690: 00159713 slli a4,a1,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:121 (discriminator 1)
for (uint32_t i = 0; i < pixels; i++) {
2694: 02659e63 bne a1,t1,26d0 <Preprocess_Execute+0x100>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:141
output_meta->DataLength = pixels * 2;
output_meta->ValidWidth = w;
output_meta->ValidHeight = h;
output_meta->MinTemp = min_t;
output_meta->MaxTemp = max_t;
output_meta->AvgTemp = (int16_t)(total_sum / pixels);
2698: 02b7d7b3 divu a5,a5,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:135
output_meta->pValidData = out_buffer->pBuffer + out_buffer->HeadOffset;
269c: 4090 lw a2,0(s1)
269e: 0084a803 lw a6,8(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:136
output_meta->DataLength = pixels * 2;
26a2: c058 sw a4,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:137
output_meta->ValidWidth = w;
26a4: 01241423 sh s2,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:135
output_meta->pValidData = out_buffer->pBuffer + out_buffer->HeadOffset;
26a8: 9642 add a2,a2,a6
26aa: c010 sw a2,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:138
output_meta->ValidHeight = h;
26ac: 01941523 sh s9,10(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:139
output_meta->MinTemp = min_t;
26b0: a456 sh a3,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:140
output_meta->MaxTemp = max_t;
26b2: a46a sh a0,14(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:253
output_meta->DataLength = pixels * 2;
output_meta->ValidWidth = tgt_w;
output_meta->ValidHeight = tgt_h;
output_meta->MinTemp = min_t;
output_meta->MaxTemp = max_t;
output_meta->AvgTemp = (int16_t)(total_sum / pixels);
26b4: 07c2 slli a5,a5,0x10
26b6: 87c1 srai a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:255
output_meta->RoiTemp = output_meta->AvgTemp;
output_meta->Status = 0;
26b8: 00040a23 sb zero,20(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:253
output_meta->AvgTemp = (int16_t)(total_sum / pixels);
26bc: a81e sh a5,16(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:254
output_meta->RoiTemp = output_meta->AvgTemp;
26be: a83e sh a5,18(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:256
output_meta->FrameNumber = input->FrameNumber;
26c0: 0089a783 lw a5,8(s3)
26c4: cc1c sw a5,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:258
out_buffer->ValidPayloadLen = output_meta->DataLength;
26c6: c4d8 sw a4,12(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:260
return 0;
26c8: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:261
}
26ca: 853e mv a0,a5
26cc: e5bfd06f j 526 <__riscv_restore_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:122
int16_t raww_val = (int16_t)input->pData[i];
26d0: 0009a803 lw a6,0(s3)
26d4: 88b6 mv a7,a3
26d6: 9742 add a4,a4,a6
26d8: 00075803 lhu a6,0(a4)
26dc: 01081713 slli a4,a6,0x10
26e0: 8741 srai a4,a4,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:124
if (raww_val < min_t)
26e2: 00d75363 bge a4,a3,26e8 <Preprocess_Execute+0x118>
26e6: 88ba mv a7,a4
26e8: 01089693 slli a3,a7,0x10
26ec: 86c1 srai a3,a3,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:126
if (raww_val > max_t)
26ee: 88aa mv a7,a0
26f0: 00e55363 bge a0,a4,26f6 <Preprocess_Execute+0x126>
26f4: 88ba mv a7,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:131
*dest_ptr++ = (uint8_t)(raww_val & 0xFF);
26f6: 01060023 sb a6,0(a2)
26fa: 01089513 slli a0,a7,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:128
total_sum += raww_val;
26fe: 97ba add a5,a5,a4
2700: 0609 addi a2,a2,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:132
*dest_ptr++ = (uint8_t)((raww_val >> 8) & 0xFF);
2702: 8721 srai a4,a4,0x8
2704: 8541 srai a0,a0,0x10
2706: fee60fa3 sb a4,-1(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:121
for (uint32_t i = 0; i < pixels; i++) {
270a: 0585 addi a1,a1,1
270c: b751 j 2690 <Preprocess_Execute+0xc0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:154
memset(g_col_sums, 0, w * sizeof(uint32_t));
270e: 20010b37 lui s6,0x20010
2712: 00291613 slli a2,s2,0x2
2716: 4581 li a1,0
2718: 02cb0513 addi a0,s6,44 # 2001002c <g_col_sums>
271c: e2bfd0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:159
for (uint16_t y = 0; y <= h - tgt_h; y++) {
2720: 00191e93 slli t4,s2,0x1
2724: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:157
uint16_t best_y = 0;
2726: 4801 li a6,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:156
uint16_t best_x = 0;
2728: 4881 li a7,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:155
uint32_t max_region_sum = 0;
272a: 4e01 li t3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:159
for (uint16_t y = 0; y <= h - tgt_h; y++) {
272c: 414c8cb3 sub s9,s9,s4
2730: 02cb0713 addi a4,s6,44
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:181
int16_t bot_val = (int16_t)input->pData[(y + tgt_h - 1) * w + c];
2734: fffa0f13 addi t5,s4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:159 (discriminator 1)
for (uint16_t y = 0; y <= h - tgt_h; y++) {
2738: 02fcd763 bge s9,a5,2766 <Preprocess_Execute+0x196>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:227
uint8_t *dest_ptr = out_buffer->pBuffer + out_buffer->HeadOffset;
273c: 03280833 mul a6,a6,s2
2740: 449c lw a5,8(s1)
2742: 0004a303 lw t1,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:223
int16_t min_t = 32767;
2746: 6521 lui a0,0x8
2748: 001a9293 slli t0,s5,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:227
uint8_t *dest_ptr = out_buffer->pBuffer + out_buffer->HeadOffset;
274c: 933e add t1,t1,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:229
for (uint16_t r = 0; r < tgt_h; r++) {
274e: 4e01 li t3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:225
uint32_t total_sum = 0;
2750: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:224
int16_t max_t = -32768;
2752: 7ee1 lui t4,0xffff8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:223
int16_t min_t = 32767;
2754: 157d addi a0,a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:229 (discriminator 1)
for (uint16_t r = 0; r < tgt_h; r++) {
2756: 17ca0363 beq s4,t3,28bc <Preprocess_Execute+0x2ec>
275a: 01088633 add a2,a7,a6
275e: 0606 slli a2,a2,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:229
2760: 859a mv a1,t1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:230
for (uint16_t c = 0; c < tgt_w; c++) {
2762: 4681 li a3,0
2764: a299 j 28aa <Preprocess_Execute+0x2da>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:166
if (y == 0) {
2766: 833a mv t1,a4
2768: 4601 li a2,0
276a: cfa9 beqz a5,27c4 <Preprocess_Execute+0x1f4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:180
int16_t top_val = (int16_t)input->pData[(y - 1) * w + c];
276c: fff78693 addi a3,a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:181
int16_t bot_val = (int16_t)input->pData[(y + tgt_h - 1) * w + c];
2770: 00ff0633 add a2,t5,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:180
int16_t top_val = (int16_t)input->pData[(y - 1) * w + c];
2774: 032686b3 mul a3,a3,s2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:179
for (uint16_t c = 0; c < w; c++) {
2778: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:181
int16_t bot_val = (int16_t)input->pData[(y + tgt_h - 1) * w + c];
277a: 03260633 mul a2,a2,s2
277e: 0686 slli a3,a3,0x1
2780: 0606 slli a2,a2,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:179 (discriminator 1)
for (uint16_t c = 0; c < w; c++) {
2782: 05259b63 bne a1,s2,27d8 <Preprocess_Execute+0x208>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:196
for (uint16_t c = 0; c < tgt_w; c++) {
2786: 86ba mv a3,a4
2788: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:193
uint32_t current_window_sum = 0;
278a: 4601 li a2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:196 (discriminator 1)
for (uint16_t c = 0; c < tgt_w; c++) {
278c: 08ba9563 bne s5,a1,2816 <Preprocess_Execute+0x246>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:200
if (current_window_sum > max_region_sum) {
2790: 0cce6763 bltu t3,a2,285e <Preprocess_Execute+0x28e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:202 (discriminator 1)
best_x = 0;
2794: 4685 li a3,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:207 (discriminator 1)
for (uint16_t x = 1; x <= w - tgt_w; x++) {
2796: 40b90fb3 sub t6,s2,a1
279a: a865 j 2852 <Preprocess_Execute+0x282>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:170
int16_t val = (int16_t)input->pData[r * w + c];
279c: 0009af83 lw t6,0(s3)
27a0: 9faa add t6,t6,a0
27a2: 000f9f83 lh t6,0(t6)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:171
if (val < thresh)
27a6: 01afd463 bge t6,s10,27ae <Preprocess_Execute+0x1de>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:172
val = 90;
27aa: 05a00f93 li t6,90
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:169 (discriminator 2)
for (uint16_t r = 0; r < tgt_h; r++) {
27ae: 0685 addi a3,a3,1
27b0: 06c2 slli a3,a3,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:173 (discriminator 2)
col_total += val;
27b2: 95fe add a1,a1,t6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:169 (discriminator 2)
for (uint16_t r = 0; r < tgt_h; r++) {
27b4: 82c1 srli a3,a3,0x10
27b6: 9576 add a0,a0,t4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:169 (discriminator 1)
27b8: feda12e3 bne s4,a3,279c <Preprocess_Execute+0x1cc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:175 (discriminator 2)
g_col_sums[c] = col_total;
27bc: 00b32023 sw a1,0(t1) # 80000000 <__freertos_irq_stack_top+0x5ffd0000>
27c0: 0605 addi a2,a2,1
27c2: 0311 addi t1,t1,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:167 (discriminator 1)
for (uint16_t c = 0; c < w; c++) {
27c4: 01061693 slli a3,a2,0x10
27c8: 82c1 srli a3,a3,0x10
27ca: fb26fee3 bgeu a3,s2,2786 <Preprocess_Execute+0x1b6>
27ce: 00161513 slli a0,a2,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:169
for (uint16_t r = 0; r < tgt_h; r++) {
27d2: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:168
uint32_t col_total = 0;
27d4: 4581 li a1,0
27d6: b7cd j 27b8 <Preprocess_Execute+0x1e8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:180
int16_t top_val = (int16_t)input->pData[(y - 1) * w + c];
27d8: 0009af83 lw t6,0(s3)
27dc: 00df8533 add a0,t6,a3
27e0: 00051283 lh t0,0(a0) # 8000 <ip_reass+0x36a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:181
int16_t bot_val = (int16_t)input->pData[(y + tgt_h - 1) * w + c];
27e4: 9fb2 add t6,t6,a2
27e6: 000f9f83 lh t6,0(t6)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:183
if (top_val < thresh)
27ea: 01a2d463 bge t0,s10,27f2 <Preprocess_Execute+0x222>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:184
top_val = 90;
27ee: 05a00293 li t0,90
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:185
if (bot_val < thresh)
27f2: 01afd463 bge t6,s10,27fa <Preprocess_Execute+0x22a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:186
bot_val = 90;
27f6: 05a00f93 li t6,90
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:188 (discriminator 2)
g_col_sums[c] = g_col_sums[c] - top_val + bot_val;
27fa: 00032503 lw a0,0(t1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:179 (discriminator 2)
for (uint16_t c = 0; c < w; c++) {
27fe: 0585 addi a1,a1,1
2800: 05c2 slli a1,a1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:188 (discriminator 2)
g_col_sums[c] = g_col_sums[c] - top_val + bot_val;
2802: 40550533 sub a0,a0,t0
2806: 957e add a0,a0,t6
2808: 00a32023 sw a0,0(t1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:179 (discriminator 2)
for (uint16_t c = 0; c < w; c++) {
280c: 81c1 srli a1,a1,0x10
280e: 0311 addi t1,t1,4
2810: 0689 addi a3,a3,2
2812: 0609 addi a2,a2,2
2814: b7bd j 2782 <Preprocess_Execute+0x1b2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:197 (discriminator 3)
current_window_sum += g_col_sums[c];
2816: 4288 lw a0,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:196 (discriminator 3)
for (uint16_t c = 0; c < tgt_w; c++) {
2818: 0585 addi a1,a1,1
281a: 05c2 slli a1,a1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:197 (discriminator 3)
current_window_sum += g_col_sums[c];
281c: 962a add a2,a2,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:196 (discriminator 3)
for (uint16_t c = 0; c < tgt_w; c++) {
281e: 81c1 srli a1,a1,0x10
2820: 0691 addi a3,a3,4
2822: b7ad j 278c <Preprocess_Execute+0x1bc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:209
current_window_sum - g_col_sums[x - 1] + g_col_sums[x + tgt_w - 1];
2824: 00b68533 add a0,a3,a1
2828: 157d addi a0,a0,-1
282a: fff68313 addi t1,a3,-1 # 7fff <ip_reass+0x369>
282e: 050a slli a0,a0,0x2
2830: 030a slli t1,t1,0x2
2832: 953a add a0,a0,a4
2834: 933a add t1,t1,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:208
current_window_sum =
2836: 4108 lw a0,0(a0)
2838: 00032303 lw t1,0(t1)
283c: 40650533 sub a0,a0,t1
2840: 962a add a2,a2,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:211
if (current_window_sum > max_region_sum) {
2842: 00ce7563 bgeu t3,a2,284c <Preprocess_Execute+0x27c>
2846: 883e mv a6,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:213
best_x = x;
2848: 88b6 mv a7,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:211
if (current_window_sum > max_region_sum) {
284a: 8e32 mv t3,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:207 (discriminator 2)
for (uint16_t x = 1; x <= w - tgt_w; x++) {
284c: 0685 addi a3,a3,1
284e: 06c2 slli a3,a3,0x10
2850: 82c1 srli a3,a3,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:207 (discriminator 1)
2852: fcdfd9e3 bge t6,a3,2824 <Preprocess_Execute+0x254>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:159 (discriminator 2)
for (uint16_t y = 0; y <= h - tgt_h; y++) {
2856: 0785 addi a5,a5,1
2858: 07c2 slli a5,a5,0x10
285a: 83c1 srli a5,a5,0x10
285c: bdf1 j 2738 <Preprocess_Execute+0x168>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:200
if (current_window_sum > max_region_sum) {
285e: 883e mv a6,a5
2860: 8e32 mv t3,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:202
best_x = 0;
2862: 4881 li a7,0
2864: bf05 j 2794 <Preprocess_Execute+0x1c4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:233
int16_t raww_val = (int16_t)input->pData[src_idx];
2866: 0009a703 lw a4,0(s3)
286a: 8faa mv t6,a0
286c: 9732 add a4,a4,a2
286e: 00075f03 lhu t5,0(a4)
2872: 010f1713 slli a4,t5,0x10
2876: 8741 srai a4,a4,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:235
if (raww_val < min_t)
2878: 00a75363 bge a4,a0,287e <Preprocess_Execute+0x2ae>
287c: 8fba mv t6,a4
287e: 010f9513 slli a0,t6,0x10
2882: 8541 srai a0,a0,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:237
if (raww_val > max_t)
2884: 8ff6 mv t6,t4
2886: 00eed363 bge t4,a4,288c <Preprocess_Execute+0x2bc>
288a: 8fba mv t6,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:230
for (uint16_t c = 0; c < tgt_w; c++) {
288c: 0685 addi a3,a3,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:242
*dest_ptr++ = (uint8_t)(raww_val & 0xFF);
288e: 01e58023 sb t5,0(a1)
2892: 010f9e93 slli t4,t6,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:239
total_sum += raww_val;
2896: 97ba add a5,a5,a4
2898: 0589 addi a1,a1,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:243
*dest_ptr++ = (uint8_t)((raww_val >> 8) & 0xFF);
289a: 8721 srai a4,a4,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:230
for (uint16_t c = 0; c < tgt_w; c++) {
289c: 06c2 slli a3,a3,0x10
289e: 410ede93 srai t4,t4,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:243
*dest_ptr++ = (uint8_t)((raww_val >> 8) & 0xFF);
28a2: fee58fa3 sb a4,-1(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:230
for (uint16_t c = 0; c < tgt_w; c++) {
28a6: 82c1 srli a3,a3,0x10
28a8: 0609 addi a2,a2,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:230 (discriminator 1)
28aa: fada9ee3 bne s5,a3,2866 <Preprocess_Execute+0x296>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:229 (discriminator 2)
for (uint16_t r = 0; r < tgt_h; r++) {
28ae: 0e05 addi t3,t3,1
28b0: 0e42 slli t3,t3,0x10
28b2: 9316 add t1,t1,t0
28b4: 010e5e13 srli t3,t3,0x10
28b8: 984a add a6,a6,s2
28ba: bd71 j 2756 <Preprocess_Execute+0x186>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:247
output_meta->pValidData = out_buffer->pBuffer + out_buffer->HeadOffset;
28bc: 4098 lw a4,0(s1)
28be: 4494 lw a3,8(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:253
output_meta->AvgTemp = (int16_t)(total_sum / pixels);
28c0: 0387d7b3 divu a5,a5,s8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:249
output_meta->ValidWidth = tgt_w;
28c4: 01541423 sh s5,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:247
output_meta->pValidData = out_buffer->pBuffer + out_buffer->HeadOffset;
28c8: 9736 add a4,a4,a3
28ca: c018 sw a4,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:248
output_meta->DataLength = pixels * 2;
28cc: 001c1713 slli a4,s8,0x1
28d0: c058 sw a4,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:250
output_meta->ValidHeight = tgt_h;
28d2: 01441523 sh s4,10(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:251
output_meta->MinTemp = min_t;
28d6: a44a sh a0,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:252
output_meta->MaxTemp = max_t;
28d8: 01d41723 sh t4,14(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:253
output_meta->AvgTemp = (int16_t)(total_sum / pixels);
28dc: bbe1 j 26b4 <Preprocess_Execute+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:86
return -1;
28de: 57fd li a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:261
}
28e0: 853e mv a0,a5
28e2: 8082 ret
000028e4 <Preprocess_CheckInternalTrigger2D>:
Preprocess_CheckInternalTrigger2D():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:267
/* ============================================================
* Internal Trigger Check
* ============================================================ */
int8_t Preprocess_CheckInternalTrigger2D(const RawImageBuffer_t *input) {
if (!g_is_initialized || !input || !input->pData)
28e4: 200007b7 lui a5,0x20000
28e8: 0dc7c783 lbu a5,220(a5) # 200000dc <g_is_initialized>
28ec: 12078563 beqz a5,2a16 <Preprocess_CheckInternalTrigger2D+0x132>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:268 (discriminator 1)
return -1;
28f0: 57fd li a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:267 (discriminator 1)
if (!g_is_initialized || !input || !input->pData)
28f2: 12050363 beqz a0,2a18 <Preprocess_CheckInternalTrigger2D+0x134>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:267 (discriminator 2)
28f6: 4118 lw a4,0(a0)
28f8: 12070063 beqz a4,2a18 <Preprocess_CheckInternalTrigger2D+0x134>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:266
int8_t Preprocess_CheckInternalTrigger2D(const RawImageBuffer_t *input) {
28fc: bf3fd2ef jal t0,4ee <__riscv_save_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:270
qdx_port_mutex_lock(g_preprocess_mutex);
2900: 20000bb7 lui s7,0x20000
2904: 0e0b8b93 addi s7,s7,224 # 200000e0 <g_preprocess_mutex>
2908: 8a2a mv s4,a0
290a: 000ba503 lw a0,0(s7)
290e: fcaff0ef jal ra,20d8 <qdx_port_mutex_lock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:271
uint16_t roi_x = g_PreprocessCfg.cfg2d.TriggerRoiX;
2912: 200107b7 lui a5,0x20010
2916: fbc78793 addi a5,a5,-68 # 2000ffbc <g_PreprocessCfg>
291a: 5780 lw s0,40(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:273
uint16_t roi_y = g_PreprocessCfg.cfg2d.TriggerRoiY;
uint16_t roi_w = g_PreprocessCfg.cfg2d.TriggerRoiW;
291c: 57c4 lw s1,44(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:271
uint16_t roi_x = g_PreprocessCfg.cfg2d.TriggerRoiX;
291e: 0277c903 lbu s2,39(a5)
2922: 0ff47713 andi a4,s0,255
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:277
uint16_t roi_h = g_PreprocessCfg.cfg2d.TriggerRoiH;
uint8_t condition = g_PreprocessCfg.cfg2d.TriggerCondition;
int16_t thresh = g_PreprocessCfg.cfg2d.TriggerTemperatureThreshold;
qdx_port_mutex_unlock(g_preprocess_mutex);
2926: 000ba503 lw a0,0(s7)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:271
uint16_t roi_x = g_PreprocessCfg.cfg2d.TriggerRoiX;
292a: 0722 slli a4,a4,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:273
uint16_t roi_w = g_PreprocessCfg.cfg2d.TriggerRoiW;
292c: 0ff4f613 andi a2,s1,255
2930: 0622 slli a2,a2,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:271
uint16_t roi_x = g_PreprocessCfg.cfg2d.TriggerRoiX;
2932: 01276933 or s2,a4,s2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:274
uint16_t roi_h = g_PreprocessCfg.cfg2d.TriggerRoiH;
2936: 80a1 srli s1,s1,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:272
uint16_t roi_y = g_PreprocessCfg.cfg2d.TriggerRoiY;
2938: 00845713 srli a4,s0,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:273
uint16_t roi_w = g_PreprocessCfg.cfg2d.TriggerRoiW;
293c: 8061 srli s0,s0,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:272
uint16_t roi_y = g_PreprocessCfg.cfg2d.TriggerRoiY;
293e: 01071a93 slli s5,a4,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:275
uint8_t condition = g_PreprocessCfg.cfg2d.TriggerCondition;
2942: 0267cb03 lbu s6,38(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:276
int16_t thresh = g_PreprocessCfg.cfg2d.TriggerTemperatureThreshold;
2946: 02279983 lh s3,34(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:273
uint16_t roi_w = g_PreprocessCfg.cfg2d.TriggerRoiW;
294a: 8c51 or s0,s0,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:274
uint16_t roi_h = g_PreprocessCfg.cfg2d.TriggerRoiH;
294c: 04c2 slli s1,s1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:277
qdx_port_mutex_unlock(g_preprocess_mutex);
294e: f9cff0ef jal ra,20ea <qdx_port_mutex_unlock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:272
uint16_t roi_y = g_PreprocessCfg.cfg2d.TriggerRoiY;
2952: 010ada93 srli s5,s5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:274
uint16_t roi_h = g_PreprocessCfg.cfg2d.TriggerRoiH;
2956: 80c1 srli s1,s1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:284
uint16_t w = input->Width;
uint16_t h = input->Height;
/* Boundary Check & Clipping */
if (roi_w == 0 || roi_h == 0)
return 0;
2958: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:283
if (roi_w == 0 || roi_h == 0)
295a: c85d beqz s0,2a10 <Preprocess_CheckInternalTrigger2D+0x12c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:283 (discriminator 1)
295c: c8d5 beqz s1,2a10 <Preprocess_CheckInternalTrigger2D+0x12c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:279
uint16_t w = input->Width;
295e: 004a5703 lhu a4,4(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:285
if (roi_x >= w || roi_y >= h)
2962: 0ae97763 bgeu s2,a4,2a10 <Preprocess_CheckInternalTrigger2D+0x12c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:280 (discriminator 1)
uint16_t h = input->Height;
2966: 006a5683 lhu a3,6(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:285 (discriminator 1)
if (roi_x >= w || roi_y >= h)
296a: 0adaf363 bgeu s5,a3,2a10 <Preprocess_CheckInternalTrigger2D+0x12c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:287
return 0;
if (roi_x + roi_w > w)
296e: 012407b3 add a5,s0,s2
2972: 00f75663 bge a4,a5,297e <Preprocess_CheckInternalTrigger2D+0x9a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:288
roi_w = w - roi_x;
2976: 41270433 sub s0,a4,s2
297a: 0442 slli s0,s0,0x10
297c: 8041 srli s0,s0,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:289
if (roi_y + roi_h > h)
297e: 015487b3 add a5,s1,s5
2982: 00f6d663 bge a3,a5,298e <Preprocess_CheckInternalTrigger2D+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:290
roi_h = h - roi_y;
2986: 415684b3 sub s1,a3,s5
298a: 04c2 slli s1,s1,0x10
298c: 80c1 srli s1,s1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:296
int16_t max_temp = -32768;
int64_t sum_temp = 0;
uint32_t count = roi_w * roi_h;
for (uint16_t r = 0; r < roi_h; r++) {
298e: 00171e13 slli t3,a4,0x1
2992: 03570733 mul a4,a4,s5
2996: 000a2783 lw a5,0(s4)
299a: 4801 li a6,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:293
int64_t sum_temp = 0;
299c: 4501 li a0,0
299e: 4581 li a1,0
29a0: 974a add a4,a4,s2
29a2: 0706 slli a4,a4,0x1
29a4: 973e add a4,a4,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:292
int16_t max_temp = -32768;
29a6: 77e1 lui a5,0xffff8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:266
int8_t Preprocess_CheckInternalTrigger2D(const RawImageBuffer_t *input) {
29a8: 88ba mv a7,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:297
for (uint16_t c = 0; c < roi_w; c++) {
29aa: 4601 li a2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:298
int16_t val = (int16_t)input->pData[(roi_y + r) * w + (roi_x + c)];
29ac: 00089683 lh a3,0(a7) # 40100000 <__freertos_irq_stack_top+0x200d0000>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:301
/* Temperature Filtration Preprocessing */
if (val < thresh) {
29b0: 0136d463 bge a3,s3,29b8 <Preprocess_CheckInternalTrigger2D+0xd4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:302
val = 90; /* Treat as 9.0C */
29b4: 05a00693 li a3,90
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:305
}
if (val > max_temp)
29b8: 8336 mv t1,a3
29ba: 00f6d363 bge a3,a5,29c0 <Preprocess_CheckInternalTrigger2D+0xdc>
29be: 833e mv t1,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:297
for (uint16_t c = 0; c < roi_w; c++) {
29c0: 0605 addi a2,a2,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:307
max_temp = val;
sum_temp += val;
29c2: 41f6de93 srai t4,a3,0x1f
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:297
for (uint16_t c = 0; c < roi_w; c++) {
29c6: 0642 slli a2,a2,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:307
sum_temp += val;
29c8: 96aa add a3,a3,a0
29ca: 01031793 slli a5,t1,0x10
29ce: 95f6 add a1,a1,t4
29d0: 00a6b333 sltu t1,a3,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:297
for (uint16_t c = 0; c < roi_w; c++) {
29d4: 8241 srli a2,a2,0x10
29d6: 87c1 srai a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:307
sum_temp += val;
29d8: 8536 mv a0,a3
29da: 959a add a1,a1,t1
29dc: 0889 addi a7,a7,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:297
for (uint16_t c = 0; c < roi_w; c++) {
29de: fcc417e3 bne s0,a2,29ac <Preprocess_CheckInternalTrigger2D+0xc8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:296 (discriminator 2)
for (uint16_t r = 0; r < roi_h; r++) {
29e2: 0805 addi a6,a6,1
29e4: 0842 slli a6,a6,0x10
29e6: 01085813 srli a6,a6,0x10
29ea: 9772 add a4,a4,t3
29ec: fb049ee3 bne s1,a6,29a8 <Preprocess_CheckInternalTrigger2D+0xc4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:312
}
}
int16_t calc_val = 0;
if (condition == 1) {
29f0: 4705 li a4,1
29f2: 00eb0b63 beq s6,a4,2a08 <Preprocess_CheckInternalTrigger2D+0x124>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:294
uint32_t count = roi_w * roi_h;
29f6: 02940633 mul a2,s0,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:317
/* 1: Max */
calc_val = max_temp;
} else {
/* 0: Average */
calc_val = (int16_t)(sum_temp / count);
29fa: 41f65693 srai a3,a2,0x1f
29fe: 0fe0a0ef jal ra,cafc <__divdi3>
2a02: 01051793 slli a5,a0,0x10
2a06: 87c1 srai a5,a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:320
}
if (calc_val >= thresh) {
2a08: 0137a7b3 slt a5,a5,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:268
return -1;
2a0c: 0017c793 xori a5,a5,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:325
return 1; /* Triggered */
}
return 0; /* Not triggered */
}
2a10: 853e mv a0,a5
2a12: b15fd06f j 526 <__riscv_restore_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:268
return -1;
2a16: 57fd li a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_preprocess.c:325
}
2a18: 853e mv a0,a5
2a1a: 8082 ret
00002a1c <qdx_write_u16_le>:
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
/* ============================================================
* Shift-Safe Serialization (Little-Endian)
* ============================================================ */
void qdx_write_u16_le(uint8_t *buf, uint16_t val) {
buf[0] = (uint8_t)(val & 0xFF);
2a1c: a10c sb a1,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2a1e: 81a1 srli a1,a1,0x8
2a20: b10c sb a1,1(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:16
}
2a22: 8082 ret
00002a24 <qdx_write_u32_le>:
qdx_write_u32_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:20
void qdx_write_u32_le(uint8_t *buf, uint32_t val) {
buf[0] = (uint8_t)(val & 0xFF);
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2a24: 0085d793 srli a5,a1,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:19
buf[0] = (uint8_t)(val & 0xFF);
2a28: a10c sb a1,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:20
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2a2a: b11c sb a5,1(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:21
buf[2] = (uint8_t)((val >> 16) & 0xFF);
2a2c: 0105d793 srli a5,a1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:22
buf[3] = (uint8_t)((val >> 24) & 0xFF);
2a30: 81e1 srli a1,a1,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:21
buf[2] = (uint8_t)((val >> 16) & 0xFF);
2a32: a13c sb a5,2(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:22
buf[3] = (uint8_t)((val >> 24) & 0xFF);
2a34: b12c sb a1,3(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:23
}
2a36: 8082 ret
00002a38 <qdx_read_u16_le>:
qdx_read_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:26
uint16_t qdx_read_u16_le(const uint8_t *buf) {
return (uint16_t)(buf[0] | (buf[1] << 8));
2a38: 311c lbu a5,1(a0)
2a3a: 2108 lbu a0,0(a0)
2a3c: 07a2 slli a5,a5,0x8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:27
}
2a3e: 8d5d or a0,a0,a5
2a40: 8082 ret
00002a42 <qdx_read_u32_le>:
qdx_read_u32_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:32
uint32_t qdx_read_u32_le(const uint8_t *buf) {
/* 显式转型防止高位字节的符号位扩展 */
return ((uint32_t)buf[0]) | ((uint32_t)buf[1] << 8) |
((uint32_t)buf[2] << 16) | ((uint32_t)buf[3] << 24);
2a42: 311c lbu a5,1(a0)
2a44: 2118 lbu a4,0(a0)
2a46: 07a2 slli a5,a5,0x8
2a48: 8f5d or a4,a4,a5
2a4a: 213c lbu a5,2(a0)
2a4c: 3128 lbu a0,3(a0)
2a4e: 07c2 slli a5,a5,0x10
2a50: 8fd9 or a5,a5,a4
2a52: 0562 slli a0,a0,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:33
}
2a54: 8d5d or a0,a0,a5
2a56: 8082 ret
00002a58 <qdx_crc16_modbus>:
qdx_crc16_modbus():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:39
/* ============================================================
* CRC16-MODBUS Checksum (Polynomial: 0xA001, Init: 0xFFFF)
* ============================================================ */
uint16_t qdx_crc16_modbus(const uint8_t *data, int len) {
uint16_t crc = 0xFFFF;
2a58: 67c1 lui a5,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:45
for (int i = 0; i < len; i++) {
crc ^= data[i];
for (int j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc >>= 1;
crc ^= 0xA001;
2a5a: 76e9 lui a3,0xffffa
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:40
for (int i = 0; i < len; i++) {
2a5c: 4701 li a4,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:39
uint16_t crc = 0xFFFF;
2a5e: 17fd addi a5,a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:45
crc ^= 0xA001;
2a60: 0685 addi a3,a3,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:40 (discriminator 1)
for (int i = 0; i < len; i++) {
2a62: 00b74463 blt a4,a1,2a6a <qdx_crc16_modbus+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:52
crc >>= 1;
}
}
}
return crc;
}
2a66: 853e mv a0,a5
2a68: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:41
crc ^= data[i];
2a6a: 00e50633 add a2,a0,a4
2a6e: 2210 lbu a2,0(a2)
2a70: 8fb1 xor a5,a5,a2
2a72: 4621 li a2,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:43
if (crc & 0x0001) {
2a74: 0017f813 andi a6,a5,1
2a78: 8385 srli a5,a5,0x1
2a7a: 00080563 beqz a6,2a84 <qdx_crc16_modbus+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:45
crc ^= 0xA001;
2a7e: 8fb5 xor a5,a5,a3
2a80: 07c2 slli a5,a5,0x10
2a82: 83c1 srli a5,a5,0x10
2a84: 167d addi a2,a2,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:42 (discriminator 2)
for (int j = 0; j < 8; j++) {
2a86: f67d bnez a2,2a74 <qdx_crc16_modbus+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:40 (discriminator 2)
for (int i = 0; i < len; i++) {
2a88: 0705 addi a4,a4,1
2a8a: bfe1 j 2a62 <qdx_crc16_modbus+0xa>
00002a8c <qdx_build_frame>:
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:61
* Uses strict byte shifting to prevent unaligned struct access on MCU.
* ============================================================ */
int qdx_build_frame(uint8_t *buf, uint8_t msg_class, uint8_t tlv_type,
const uint8_t *payload, uint16_t payload_len,
uint16_t dev_id, uint16_t seq, uint32_t timestamp,
uint8_t flags) {
2a8c: a8bfd2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:64
flags |= FLAG_LAST_FRAGMENT;
uint16_t total_len = HEADER_SIZE + TLV_HEADER_SIZE + payload_len + CRC_SIZE;
2a90: 01570493 addi s1,a4,21
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:61
uint8_t flags) {
2a94: 892e mv s2,a1
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2a96: faa00593 li a1,-86
2a9a: a10c sb a1,0(a0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:64
uint16_t total_len = HEADER_SIZE + TLV_HEADER_SIZE + payload_len + CRC_SIZE;
2a9c: 04c2 slli s1,s1,0x10
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2a9e: 05500593 li a1,85
2aa2: b10c sb a1,1(a0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:64
uint16_t total_len = HEADER_SIZE + TLV_HEADER_SIZE + payload_len + CRC_SIZE;
2aa4: 80c1 srli s1,s1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:68
/* 1. Fill FrameHeader (16 bytes) safely */
qdx_write_u16_le(buf + 0, PROTO_MAGIC); /* Magic */
buf[2] = PROTO_VERSION; /* Version */
2aa6: 02000593 li a1,32
2aaa: a12c sb a1,2(a0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2aac: 010502a3 sb a6,5(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2ab0: 0084d593 srli a1,s1,0x8
2ab4: 00885813 srli a6,a6,0x8
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:61
uint8_t flags) {
2ab8: 1141 addi sp,sp,-16
2aba: 842a mv s0,a0
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2abc: a14c sb a1,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2abe: b124 sb s1,3(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2ac0: 01050323 sb a6,6(a0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:71
qdx_write_u16_le(buf + 3, total_len); /* Length */
qdx_write_u16_le(buf + 5, seq); /* Sequence */
qdx_write_u32_le(buf + 7, timestamp); /* Timestamp */
2ac4: 85c6 mv a1,a7
2ac6: 051d addi a0,a0,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:61
uint8_t flags) {
2ac8: c632 sw a2,12(sp)
2aca: c436 sw a3,8(sp)
2acc: c23e sw a5,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:64
uint16_t total_len = HEADER_SIZE + TLV_HEADER_SIZE + payload_len + CRC_SIZE;
2ace: c03a sw a4,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:71
qdx_write_u32_le(buf + 7, timestamp); /* Timestamp */
2ad0: 3f91 jal 2a24 <qdx_write_u32_le>
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2ad2: 4792 lw a5,4(sp)
2ad4: 4702 lw a4,0(sp)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:78
qdx_write_u16_le(buf + 12, dev_id); /* DevID */
buf[14] = msg_class; /* Class */
buf[15] = flags; /* Flags */
/* 2. Fill TLV Header (3 bytes) safely */
buf[16] = tlv_type; /* TLV Type */
2ad6: 4632 lw a2,12(sp)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2ad8: a45c sb a5,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2ada: 83a1 srli a5,a5,0x8
2adc: b45c sb a5,13(s0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:63
flags |= FLAG_LAST_FRAGMENT;
2ade: 02014783 lbu a5,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:82
qdx_write_u16_le(buf + 17, payload_len); /* TLV Length */
/* 3. Copy Payload使用 memmove 防止 payload 与 buf 重叠时的未定义行为) */
if (payload && payload_len > 0) {
2ae2: 46a2 lw a3,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:72
buf[11] = 0x01; /* Source = MCU (0x01) */
2ae4: 4585 li a1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:63
flags |= FLAG_LAST_FRAGMENT;
2ae6: 0207e793 ori a5,a5,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:75
buf[15] = flags; /* Flags */
2aea: b47c sb a5,15(s0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2aec: 00875793 srli a5,a4,0x8
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:72
buf[11] = 0x01; /* Source = MCU (0x01) */
2af0: b42c sb a1,11(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:74
buf[14] = msg_class; /* Class */
2af2: 01240723 sb s2,14(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:78
buf[16] = tlv_type; /* TLV Type */
2af6: a810 sb a2,16(s0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2af8: b818 sb a4,17(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2afa: a83c sb a5,18(s0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:82
if (payload && payload_len > 0) {
2afc: ca81 beqz a3,2b0c <qdx_build_frame+0x80>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:82 (discriminator 1)
2afe: c719 beqz a4,2b0c <qdx_build_frame+0x80>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:83
memmove(buf + HEADER_SIZE + TLV_HEADER_SIZE, payload, payload_len);
2b00: 863a mv a2,a4
2b02: 85b6 mv a1,a3
2b04: 01340513 addi a0,s0,19
2b08: 47a0a0ef jal ra,cf82 <memmove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:87
}
/* 4. Append CRC16 */
uint16_t crc = qdx_crc16_modbus(buf, total_len - CRC_SIZE);
2b0c: ffe48913 addi s2,s1,-2
2b10: 85ca mv a1,s2
2b12: 8522 mv a0,s0
2b14: 3791 jal 2a58 <qdx_crc16_modbus>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:88
qdx_write_u16_le(buf + total_len - CRC_SIZE, crc);
2b16: 944a add s0,s0,s2
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b18: a008 sb a0,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b1a: 8121 srli a0,a0,0x8
2b1c: b008 sb a0,1(s0)
qdx_build_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:91
return total_len;
}
2b1e: 8526 mv a0,s1
2b20: 0141 addi sp,sp,16
2b22: a19fd06f j 53a <__riscv_restore_0>
00002b26 <qdx_build_frame_inplace>:
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:100
* 用于零拷贝场景payload含 TLV + 数据)已填充在 buf[HEADER_SIZE] 处,
* 本函数仅写入 16 字节帧头并在尾部追加 CRC16。
* ============================================================ */
int qdx_build_frame_inplace(uint8_t *buf, uint8_t msg_class,
uint16_t payload_len, uint16_t dev_id, uint16_t seq,
uint32_t timestamp, uint8_t flags) {
2b26: 9f1fd2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:103
flags |= FLAG_LAST_FRAGMENT;
uint16_t total_len = HEADER_SIZE + payload_len + CRC_SIZE;
2b2a: 0649 addi a2,a2,18
2b2c: 01061493 slli s1,a2,0x10
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b30: faa00613 li a2,-86
2b34: a110 sb a2,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b36: 05500613 li a2,85
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:103
uint16_t total_len = HEADER_SIZE + payload_len + CRC_SIZE;
2b3a: 80c1 srli s1,s1,0x10
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b3c: b110 sb a2,1(a0)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:107
/* 填写 16 字节帧头 */
qdx_write_u16_le(buf + 0, PROTO_MAGIC);
buf[2] = PROTO_VERSION;
2b3e: 02000613 li a2,32
2b42: a130 sb a2,2(a0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b44: b158 sb a4,5(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b46: 0084d613 srli a2,s1,0x8
2b4a: 8321 srli a4,a4,0x8
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:100
uint32_t timestamp, uint8_t flags) {
2b4c: 1141 addi sp,sp,-16
2b4e: 842a mv s0,a0
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b50: a150 sb a2,4(a0)
2b52: a178 sb a4,6(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b54: b124 sb s1,3(a0)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:100
uint32_t timestamp, uint8_t flags) {
2b56: 892e mv s2,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:110
qdx_write_u16_le(buf + 3, total_len);
qdx_write_u16_le(buf + 5, seq);
qdx_write_u32_le(buf + 7, timestamp);
2b58: 051d addi a0,a0,7
2b5a: 85be mv a1,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:100
uint32_t timestamp, uint8_t flags) {
2b5c: c636 sw a3,12(sp)
2b5e: c442 sw a6,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:110
qdx_write_u32_le(buf + 7, timestamp);
2b60: 35d1 jal 2a24 <qdx_write_u32_le>
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b62: 46b2 lw a3,12(sp)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:102
flags |= FLAG_LAST_FRAGMENT;
2b64: 4822 lw a6,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:111
buf[11] = 0x01; /* Source = MCU */
2b66: 4785 li a5,1
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b68: a454 sb a3,12(s0)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:113
qdx_write_u16_le(buf + 12, dev_id);
buf[14] = msg_class;
2b6a: 01240723 sb s2,14(s0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b6e: 82a1 srli a3,a3,0x8
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:102
flags |= FLAG_LAST_FRAGMENT;
2b70: 02086813 ori a6,a6,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:119
buf[15] = flags;
/* payload 已在 buf[16..16+payload_len-1],无需拷贝 */
/* 追加 CRC16 */
uint16_t crc = qdx_crc16_modbus(buf, total_len - CRC_SIZE);
2b74: ffe48913 addi s2,s1,-2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:111
buf[11] = 0x01; /* Source = MCU */
2b78: b43c sb a5,11(s0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b7a: b454 sb a3,13(s0)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:114
buf[15] = flags;
2b7c: 010407a3 sb a6,15(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:119
uint16_t crc = qdx_crc16_modbus(buf, total_len - CRC_SIZE);
2b80: 85ca mv a1,s2
2b82: 8522 mv a0,s0
2b84: 3dd1 jal 2a58 <qdx_crc16_modbus>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:120
qdx_write_u16_le(buf + total_len - CRC_SIZE, crc);
2b86: 944a add s0,s0,s2
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2b88: a008 sb a0,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2b8a: 8121 srli a0,a0,0x8
2b8c: b008 sb a0,1(s0)
qdx_build_frame_inplace():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:123
return total_len;
}
2b8e: 8526 mv a0,s1
2b90: 0141 addi sp,sp,16
2b92: 9a9fd06f j 53a <__riscv_restore_0>
00002b96 <qdx_build_fragment_frame>:
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:131
* Build Fragmented Frame (Header + Chunk + CRC16, NO TLV)
* ============================================================ */
int qdx_build_fragment_frame(uint8_t *buf, uint8_t msg_class,
const uint8_t *chunk, uint16_t chunk_len,
uint16_t dev_id, uint16_t seq, uint32_t timestamp,
uint8_t flags) {
2b96: 967fd2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:133
uint16_t total_len = HEADER_SIZE + chunk_len + CRC_SIZE;
2b9a: 01268493 addi s1,a3,18 # ffffa012 <__freertos_irq_stack_top+0xdffca012>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:131
uint8_t flags) {
2b9e: 8932 mv s2,a2
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2ba0: faa00613 li a2,-86
2ba4: a110 sb a2,0(a0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:133
uint16_t total_len = HEADER_SIZE + chunk_len + CRC_SIZE;
2ba6: 04c2 slli s1,s1,0x10
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2ba8: 05500613 li a2,85
2bac: b110 sb a2,1(a0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:133
uint16_t total_len = HEADER_SIZE + chunk_len + CRC_SIZE;
2bae: 80c1 srli s1,s1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:137
/* 1. Fill FrameHeader (16 bytes) safely */
qdx_write_u16_le(buf + 0, PROTO_MAGIC);
buf[2] = PROTO_VERSION;
2bb0: 02000613 li a2,32
2bb4: a130 sb a2,2(a0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2bb6: b15c sb a5,5(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2bb8: 0084d613 srli a2,s1,0x8
2bbc: 83a1 srli a5,a5,0x8
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:131
uint8_t flags) {
2bbe: 1141 addi sp,sp,-16
2bc0: 842a mv s0,a0
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2bc2: a17c sb a5,6(a0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:131
uint8_t flags) {
2bc4: 89ae mv s3,a1
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2bc6: b124 sb s1,3(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2bc8: a150 sb a2,4(a0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:140
qdx_write_u16_le(buf + 3, total_len);
qdx_write_u16_le(buf + 5, seq);
qdx_write_u32_le(buf + 7, timestamp);
2bca: 85c2 mv a1,a6
2bcc: 051d addi a0,a0,7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:131
uint8_t flags) {
2bce: c63a sw a4,12(sp)
2bd0: c446 sw a7,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:133
uint16_t total_len = HEADER_SIZE + chunk_len + CRC_SIZE;
2bd2: c236 sw a3,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:140
qdx_write_u32_le(buf + 7, timestamp);
2bd4: 3d81 jal 2a24 <qdx_write_u32_le>
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2bd6: 4732 lw a4,12(sp)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:144
buf[11] = 0x01; /* Source MCU */
qdx_write_u16_le(buf + 12, dev_id);
buf[14] = msg_class;
buf[15] = flags;
2bd8: 48a2 lw a7,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:141
buf[11] = 0x01; /* Source MCU */
2bda: 4785 li a5,1
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2bdc: a458 sb a4,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2bde: 8321 srli a4,a4,0x8
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:141
buf[11] = 0x01; /* Source MCU */
2be0: b43c sb a5,11(s0)
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2be2: b458 sb a4,13(s0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:143
buf[14] = msg_class;
2be4: 01340723 sb s3,14(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:144
buf[15] = flags;
2be8: 011407a3 sb a7,15(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:147
/* 2. Copy Payload Chunk使用 memmove 应对潜在重叠) */
if (chunk && chunk_len > 0) {
2bec: 00090a63 beqz s2,2c00 <qdx_build_fragment_frame+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:147 (discriminator 1)
2bf0: 4692 lw a3,4(sp)
2bf2: c699 beqz a3,2c00 <qdx_build_fragment_frame+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:148
memmove(buf + HEADER_SIZE, chunk, chunk_len);
2bf4: 8636 mv a2,a3
2bf6: 85ca mv a1,s2
2bf8: 01040513 addi a0,s0,16
2bfc: 3860a0ef jal ra,cf82 <memmove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:152
}
/* 3. Append CRC16 */
uint16_t crc = qdx_crc16_modbus(buf, total_len - CRC_SIZE);
2c00: ffe48913 addi s2,s1,-2
2c04: 85ca mv a1,s2
2c06: 8522 mv a0,s0
2c08: 3d81 jal 2a58 <qdx_crc16_modbus>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:153
qdx_write_u16_le(buf + total_len - CRC_SIZE, crc);
2c0a: 944a add s0,s0,s2
qdx_write_u16_le():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:14
buf[0] = (uint8_t)(val & 0xFF);
2c0c: a008 sb a0,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:15
buf[1] = (uint8_t)((val >> 8) & 0xFF);
2c0e: 8121 srli a0,a0,0x8
2c10: b008 sb a0,1(s0)
qdx_build_fragment_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_protocol.c:156
return total_len;
}
2c12: 8526 mv a0,s1
2c14: 0141 addi sp,sp,16
2c16: 91bfd06f j 530 <__riscv_restore_4>
00002c1a <tcp_stream_disconnect>:
tcp_stream_disconnect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:73
ctx->label = label;
}
static void tcp_stream_disconnect(TcpStreamCtx_t *ctx) {
ctx->is_connected = 0;
if (ctx->sock) {
2c1a: 411c lw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:72
ctx->is_connected = 0;
2c1c: 00050923 sb zero,18(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:73
if (ctx->sock) {
2c20: cb99 beqz a5,2c36 <tcp_stream_disconnect+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:71
static void tcp_stream_disconnect(TcpStreamCtx_t *ctx) {
2c22: 8f5fd2ef jal t0,516 <__riscv_save_0>
2c26: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:74
qdx_port_tcp_close(ctx->sock);
2c28: 853e mv a0,a5
2c2a: 85bff0ef jal ra,2484 <qdx_port_tcp_close>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:75
ctx->sock = NULL;
2c2e: 00042023 sw zero,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:77
}
}
2c32: 909fd06f j 53a <__riscv_restore_0>
2c36: 8082 ret
00002c38 <tcp_send_frame>:
tcp_send_frame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:94
return 0;
}
static int32_t tcp_send_frame(TcpStreamCtx_t *ctx, uint8_t msg_class,
uint8_t tlv_type, const uint8_t *payload,
uint16_t payload_len, uint8_t flags) {
2c38: 8dffd2ef jal t0,516 <__riscv_save_0>
2c3c: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:95
if (!ctx->is_connected || ctx->sock == NULL)
2c3e: 2928 lbu a0,18(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:94
uint16_t payload_len, uint8_t flags) {
2c40: bd010113 addi sp,sp,-1072
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:95
if (!ctx->is_connected || ctx->sock == NULL)
2c44: c939 beqz a0,2c9a <tcp_send_frame+0x62>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:95 (discriminator 1)
2c46: 00042803 lw a6,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:96 (discriminator 1)
return -1;
2c4a: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:95 (discriminator 1)
if (!ctx->is_connected || ctx->sock == NULL)
2c4c: 04080863 beqz a6,2c9c <tcp_send_frame+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:105
uint8_t buffer[1024];
if (HEADER_SIZE + TLV_HEADER_SIZE + payload_len + CRC_SIZE > sizeof(buffer)) {
return -1; /* Too large for generic send */
}
uint16_t seq = ctx->sequence++;
2c50: 01045803 lhu a6,16(s0)
2c54: 84be mv s1,a5
2c56: d63a sw a4,44(sp)
2c58: 00180793 addi a5,a6,1
2c5c: a81e sh a5,16(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:107
int frame_len =
qdx_build_frame(buffer, msg_class, tlv_type, payload, payload_len,
2c5e: 200107b7 lui a5,0x20010
2c62: 44c7d783 lhu a5,1100(a5) # 2001044c <g_TcpLogic+0x20>
2c66: d436 sw a3,40(sp)
2c68: d232 sw a2,36(sp)
2c6a: d02e sw a1,32(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:105
uint16_t seq = ctx->sequence++;
2c6c: ce42 sw a6,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:107
qdx_build_frame(buffer, msg_class, tlv_type, payload, payload_len,
2c6e: cc3e sw a5,24(sp)
2c70: c30ff0ef jal ra,20a0 <qdx_port_get_tick_ms>
2c74: 5612 lw a2,36(sp)
2c76: 5582 lw a1,32(sp)
2c78: 4872 lw a6,28(sp)
2c7a: 47e2 lw a5,24(sp)
2c7c: 5732 lw a4,44(sp)
2c7e: 56a2 lw a3,40(sp)
2c80: 88aa mv a7,a0
2c82: c026 sw s1,0(sp)
2c84: 1808 addi a0,sp,48
2c86: 3519 jal 2a8c <qdx_build_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:110
g_TcpLogic.dev_id, seq, qdx_port_get_tick_ms(), flags);
int32_t sent = qdx_port_tcp_send(ctx->sock, buffer, frame_len);
2c88: 862a mv a2,a0
2c8a: 4008 lw a0,0(s0)
2c8c: 180c addi a1,sp,48
2c8e: eb6ff0ef jal ra,2344 <qdx_port_tcp_send>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:111
if (sent < 0) {
2c92: 00055563 bgez a0,2c9c <tcp_send_frame+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:112
tcp_stream_disconnect(ctx);
2c96: 8522 mv a0,s0
2c98: 3749 jal 2c1a <tcp_stream_disconnect>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:96
return -1;
2c9a: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:116
return -1;
}
return sent;
}
2c9c: 43010113 addi sp,sp,1072
2ca0: 89bfd06f j 53a <__riscv_restore_0>
00002ca4 <tcp_send_handshake>:
tcp_send_handshake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:118
static void tcp_send_handshake(TcpStreamCtx_t *ctx) {
2ca4: 873fd2ef jal t0,516 <__riscv_save_0>
2ca8: 7139 addi sp,sp,-64
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:120
uint8_t payload[54];
memset(payload, 0, sizeof(payload));
2caa: 03600613 li a2,54
2cae: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:118
static void tcp_send_handshake(TcpStreamCtx_t *ctx) {
2cb0: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:120
memset(payload, 0, sizeof(payload));
2cb2: 0028 addi a0,sp,8
2cb4: 893fd0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:121
qdx_write_u16_le(payload + 0, 0x0200);
2cb8: 20000593 li a1,512
2cbc: 0028 addi a0,sp,8
2cbe: d5fff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:122
memcpy(payload + 2, g_TcpLogic.uuid, 16);
2cc2: 200105b7 lui a1,0x20010
2cc6: 42c58493 addi s1,a1,1068 # 2001042c <g_TcpLogic>
2cca: 4641 li a2,16
2ccc: 42c58593 addi a1,a1,1068
2cd0: 00a10513 addi a0,sp,10
2cd4: 1fc0a0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:123
memcpy(payload + 18, g_TcpLogic.auth_token, 16);
2cd8: 4641 li a2,16
2cda: 01048593 addi a1,s1,16
2cde: 01a10513 addi a0,sp,26
2ce2: 1ee0a0ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:127
/* Safe string copy without relying on strncpy platform behavior */
const char *hw = "V1.0";
const char *fw = "V2.0";
for (int i = 0; i < 8 && hw[i]; i++)
2ce6: 0034 addi a3,sp,8
2ce8: 0000d737 lui a4,0xd
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:123
memcpy(payload + 18, g_TcpLogic.auth_token, 16);
2cec: 8636 mv a2,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:127
for (int i = 0; i < 8 && hw[i]; i++)
2cee: 4781 li a5,0
2cf0: 2ac70713 addi a4,a4,684 # d2ac <MemSize+0x118>
2cf4: 4521 li a0,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:127 (discriminator 3)
2cf6: 00e785b3 add a1,a5,a4
2cfa: 00058583 lb a1,0(a1)
2cfe: c599 beqz a1,2d0c <tcp_send_handshake+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:128 (discriminator 4)
payload[34 + i] = hw[i];
2d00: 02b60123 sb a1,34(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:127 (discriminator 4)
for (int i = 0; i < 8 && hw[i]; i++)
2d04: 0785 addi a5,a5,1
2d06: 0605 addi a2,a2,1
2d08: fea797e3 bne a5,a0,2cf6 <tcp_send_handshake+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:129
for (int i = 0; i < 8 && fw[i]; i++)
2d0c: 0000d737 lui a4,0xd
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:127
for (int i = 0; i < 8 && hw[i]; i++)
2d10: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:129
for (int i = 0; i < 8 && fw[i]; i++)
2d12: 2b470713 addi a4,a4,692 # d2b4 <MemSize+0x120>
2d16: 45a1 li a1,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:129 (discriminator 3)
2d18: 00e78633 add a2,a5,a4
2d1c: 00060603 lb a2,0(a2)
2d20: c619 beqz a2,2d2e <tcp_send_handshake+0x8a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:130 (discriminator 4)
payload[42 + i] = fw[i];
2d22: 02c68523 sb a2,42(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:129 (discriminator 4)
for (int i = 0; i < 8 && fw[i]; i++)
2d26: 0785 addi a5,a5,1
2d28: 0685 addi a3,a3,1
2d2a: feb797e3 bne a5,a1,2d18 <tcp_send_handshake+0x74>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:131
qdx_write_u32_le(payload + 50, 0x07);
2d2e: 03a10513 addi a0,sp,58
2d32: 459d li a1,7
2d34: cf1ff0ef jal ra,2a24 <qdx_write_u32_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:133
tcp_send_frame(ctx, CLASS_SYSTEM, TYPE_HANDSHAKE, payload, sizeof(payload),
2d38: 0034 addi a3,sp,8
2d3a: 47c1 li a5,16
2d3c: 03600713 li a4,54
2d40: 4605 li a2,1
2d42: 4591 li a1,4
2d44: 8522 mv a0,s0
2d46: 3dcd jal 2c38 <tcp_send_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:135
FLAG_ACK_REQ);
}
2d48: 6121 addi sp,sp,64
2d4a: ff0fd06f j 53a <__riscv_restore_0>
00002d4e <tcp_send_heartbeat>:
tcp_send_heartbeat():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:137
static void tcp_send_heartbeat(TcpStreamCtx_t *ctx) {
2d4e: fc8fd2ef jal t0,516 <__riscv_save_0>
2d52: 1141 addi sp,sp,-16
2d54: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:139
uint8_t payload[6];
qdx_write_u32_le(payload + 0, qdx_port_get_tick_ms());
2d56: b4aff0ef jal ra,20a0 <qdx_port_get_tick_ms>
2d5a: 85aa mv a1,a0
2d5c: 0028 addi a0,sp,8
2d5e: cc7ff0ef jal ra,2a24 <qdx_write_u32_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:140
payload[4] = 10; /* Placeholder CpuLoad */
2d62: 6785 lui a5,0x1
2d64: 40a78793 addi a5,a5,1034 # 140a <RCC_GetClocksFreq+0xb4>
2d68: 867c sh a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:143
payload[5] = 20; /* Placeholder MemUsage */
tcp_send_frame(ctx, CLASS_SYSTEM, TYPE_HEARTBEAT, payload, sizeof(payload),
2d6a: 0034 addi a3,sp,8
2d6c: 4781 li a5,0
2d6e: 4719 li a4,6
2d70: 4609 li a2,2
2d72: 4591 li a1,4
2d74: 8522 mv a0,s0
2d76: 35c9 jal 2c38 <tcp_send_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:145
0);
}
2d78: 0141 addi sp,sp,16
2d7a: fc0fd06f j 53a <__riscv_restore_0>
00002d7e <tcp_send_ack.constprop.3>:
tcp_send_ack():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:147
static void tcp_send_ack(TcpStreamCtx_t *ctx, uint16_t ack_seq, uint8_t status,
2d7e: f98fd2ef jal t0,516 <__riscv_save_0>
2d82: 1141 addi sp,sp,-16
2d84: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:150
uint16_t error_code) {
uint8_t payload[5];
qdx_write_u16_le(payload + 0, ack_seq);
2d86: 0028 addi a0,sp,8
2d88: c95ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:152
payload[2] = status;
qdx_write_u16_le(payload + 3, error_code);
2d8c: 00b10513 addi a0,sp,11
2d90: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:151
payload[2] = status;
2d92: 00010523 sb zero,10(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:152
qdx_write_u16_le(payload + 3, error_code);
2d96: c87ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:154
tcp_send_frame(ctx, CLASS_RESPONSE, TYPE_ACK_PAYLOAD, payload,
2d9a: 0034 addi a3,sp,8
2d9c: 4781 li a5,0
2d9e: 4715 li a4,5
2da0: 03000613 li a2,48
2da4: 458d li a1,3
2da6: 8522 mv a0,s0
2da8: 3d41 jal 2c38 <tcp_send_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:156
sizeof(payload), 0);
}
2daa: 0141 addi sp,sp,16
2dac: f8efd06f j 53a <__riscv_restore_0>
00002db0 <recv_thread_entry>:
recv_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:423
ctx->recv_len - length);
ctx->recv_len -= length;
}
}
static void recv_thread_entry(void *arg) {
2db0: f36fd2ef jal t0,4e6 <__riscv_save_12>
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:276
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
2db4: 20010bb7 lui s7,0x20010
2db8: 42cb8b93 addi s7,s7,1068 # 2001042c <g_TcpLogic>
2dbc: 6789 lui a5,0x2
2dbe: 20012a37 lui s4,0x20012
recv_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:423
static void recv_thread_entry(void *arg) {
2dc2: 1141 addi sp,sp,-16
2dc4: 892a mv s2,a0
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:276
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
2dc6: 01778433 add s0,a5,s7
2dca: 42ca0a13 addi s4,s4,1068 # 2001242c <g_TcpLogic+0x2000>
recv_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:426
TcpStreamCtx_t *ctx = (TcpStreamCtx_t *)arg;
while (ctx->is_running) {
2dce: 01394783 lbu a5,19(s2)
2dd2: e781 bnez a5,2dda <recv_thread_entry+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:454
ctx->recv_len = 0;
}
qdx_port_delay_ms(10);
}
}
2dd4: 0141 addi sp,sp,16
2dd6: f4cfd06f j 522 <__riscv_restore_12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:427
if (!ctx->is_connected) {
2dda: 01294783 lbu a5,18(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:428
qdx_port_delay_ms(100);
2dde: 06400513 li a0,100
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:427
if (!ctx->is_connected) {
2de2: c7f1 beqz a5,2eae <recv_thread_entry+0xfe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:433
if (sizeof(ctx->recv_buffer) - ctx->recv_len > 0) {
2de4: 6605 lui a2,0x1
2de6: 00c904b3 add s1,s2,a2
2dea: 4c8c lw a1,24(s1)
2dec: 0cc58a63 beq a1,a2,2ec0 <recv_thread_entry+0x110>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:435
qdx_port_tcp_recv(ctx->sock, ctx->recv_buffer + ctx->recv_len,
2df0: 00092503 lw a0,0(s2)
2df4: 01890993 addi s3,s2,24
2df8: 8e0d sub a2,a2,a1
2dfa: 95ce add a1,a1,s3
2dfc: d96ff0ef jal ra,2392 <qdx_port_tcp_recv>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:438
if (bytes > 0) {
2e00: 54a05b63 blez a0,3356 <recv_thread_entry+0x5a6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:439
ctx->recv_len += bytes;
2e04: 4c9c lw a5,24(s1)
2e06: 953e add a0,a0,a5
2e08: cc88 sw a0,24(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:440
ctx->last_activity_ms = qdx_port_get_tick_ms();
2e0a: a96ff0ef jal ra,20a0 <qdx_port_get_tick_ms>
2e0e: 00a92223 sw a0,4(s2)
tcp_process_rx_buffer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:353
while (ctx->recv_len >= HEADER_SIZE) {
2e12: 6785 lui a5,0x1
2e14: 97ca add a5,a5,s2
2e16: 4f90 lw a2,24(a5)
2e18: 47bd li a5,15
2e1a: 08c7f963 bgeu a5,a2,2eac <recv_thread_entry+0xfc>
2e1e: 87ce mv a5,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:356
for (uint32_t i = 0; i <= ctx->recv_len - 2; i++) {
2e20: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:357
if (ctx->recv_buffer[i] == 0xAA && ctx->recv_buffer[i + 1] == 0x55) {
2e22: 0aa00593 li a1,170
2e26: 05500513 li a0,85
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:356
for (uint32_t i = 0; i <= ctx->recv_len - 2; i++) {
2e2a: ffe60713 addi a4,a2,-2 # ffe <ETH_DMARxDescChainInit+0x44>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:357
if (ctx->recv_buffer[i] == 0xAA && ctx->recv_buffer[i + 1] == 0x55) {
2e2e: 0007c803 lbu a6,0(a5) # 1000 <ETH_DMARxDescChainInit+0x46>
2e32: 00148693 addi a3,s1,1
2e36: 02b81f63 bne a6,a1,2e74 <recv_thread_entry+0xc4>
2e3a: 0017c803 lbu a6,1(a5)
2e3e: 02a81b63 bne a6,a0,2e74 <recv_thread_entry+0xc4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:369
if (start_idx > 0) {
2e42: e4b1 bnez s1,2e8e <recv_thread_entry+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:378
uint8_t version = ctx->recv_buffer[2];
2e44: 01a94483 lbu s1,26(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:379
uint16_t length = qdx_read_u16_le(ctx->recv_buffer + 3);
2e48: 01b90513 addi a0,s2,27
2e4c: bedff0ef jal ra,2a38 <qdx_read_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:381
if (version != PROTO_VERSION || length < HEADER_SIZE + CRC_SIZE) {
2e50: 02000793 li a5,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:379
uint16_t length = qdx_read_u16_le(ctx->recv_buffer + 3);
2e54: 8b2a mv s6,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:381
if (version != PROTO_VERSION || length < HEADER_SIZE + CRC_SIZE) {
2e56: 04f48f63 beq s1,a5,2eb4 <recv_thread_entry+0x104>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:386
memmove(ctx->recv_buffer, ctx->recv_buffer + 2, ctx->recv_len - 2);
2e5a: 6485 lui s1,0x1
2e5c: 94ca add s1,s1,s2
2e5e: 4c90 lw a2,24(s1)
2e60: 01a90593 addi a1,s2,26
2e64: 854e mv a0,s3
2e66: 1679 addi a2,a2,-2
2e68: 11a0a0ef jal ra,cf82 <memmove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:387
ctx->recv_len -= 2;
2e6c: 4c9c lw a5,24(s1)
2e6e: 17f9 addi a5,a5,-2
2e70: cc9c sw a5,24(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:388
continue;
2e72: b745 j 2e12 <recv_thread_entry+0x62>
2e74: 0785 addi a5,a5,1
2e76: 84b6 mv s1,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:356
for (uint32_t i = 0; i <= ctx->recv_len - 2; i++) {
2e78: fad77be3 bgeu a4,a3,2e2e <recv_thread_entry+0x7e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:364
ctx->recv_buffer[0] = ctx->recv_buffer[ctx->recv_len - 1];
2e7c: 964a add a2,a2,s2
2e7e: 3a7c lbu a5,23(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:365
ctx->recv_len = 1;
2e80: 4705 li a4,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:364
ctx->recv_buffer[0] = ctx->recv_buffer[ctx->recv_len - 1];
2e82: 00f90c23 sb a5,24(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:365
ctx->recv_len = 1;
2e86: 6785 lui a5,0x1
2e88: 97ca add a5,a5,s2
2e8a: cf98 sw a4,24(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:366
break;
2e8c: a005 j 2eac <recv_thread_entry+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:371
memmove(ctx->recv_buffer, ctx->recv_buffer + start_idx,
2e8e: 8e05 sub a2,a2,s1
2e90: 009985b3 add a1,s3,s1
2e94: 854e mv a0,s3
2e96: 0ec0a0ef jal ra,cf82 <memmove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:373
ctx->recv_len -= start_idx;
2e9a: 6705 lui a4,0x1
2e9c: 974a add a4,a4,s2
2e9e: 4f1c lw a5,24(a4)
2ea0: 409784b3 sub s1,a5,s1
2ea4: cf04 sw s1,24(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:374
if (ctx->recv_len < HEADER_SIZE)
2ea6: 47bd li a5,15
2ea8: f897eee3 bltu a5,s1,2e44 <recv_thread_entry+0x94>
recv_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:452
qdx_port_delay_ms(10);
2eac: 4529 li a0,10
2eae: a00ff0ef jal ra,20ae <qdx_port_delay_ms>
2eb2: bf31 j 2dce <recv_thread_entry+0x1e>
tcp_process_rx_buffer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:381
if (version != PROTO_VERSION || length < HEADER_SIZE + CRC_SIZE) {
2eb4: 47c5 li a5,17
2eb6: faa7f2e3 bgeu a5,a0,2e5a <recv_thread_entry+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:391
if (length > sizeof(ctx->recv_buffer)) {
2eba: 6785 lui a5,0x1
2ebc: 00a7f763 bgeu a5,a0,2eca <recv_thread_entry+0x11a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:395
ctx->recv_len = 0;
2ec0: 6785 lui a5,0x1
2ec2: 97ca add a5,a5,s2
2ec4: 0007ac23 sw zero,24(a5) # 1018 <ETH_DMAClearITPendingBit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:396
break;
2ec8: b7d5 j 2eac <recv_thread_entry+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:399
if (ctx->recv_len < length) {
2eca: 97ca add a5,a5,s2
2ecc: 4f9c lw a5,24(a5)
2ece: fca7efe3 bltu a5,a0,2eac <recv_thread_entry+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:404
uint16_t received_crc = qdx_read_u16_le(ctx->recv_buffer + length - 2);
2ed2: ffe50593 addi a1,a0,-2
2ed6: 00b98533 add a0,s3,a1
2eda: c02e sw a1,0(sp)
2edc: b5dff0ef jal ra,2a38 <qdx_read_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:405
uint16_t calculated_crc = qdx_crc16_modbus(ctx->recv_buffer, length - 2);
2ee0: 4582 lw a1,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:404
uint16_t received_crc = qdx_read_u16_le(ctx->recv_buffer + length - 2);
2ee2: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:405
uint16_t calculated_crc = qdx_crc16_modbus(ctx->recv_buffer, length - 2);
2ee4: 854e mv a0,s3
2ee6: b73ff0ef jal ra,2a58 <qdx_crc16_modbus>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:407
if (received_crc == calculated_crc) {
2eea: 04a49f63 bne s1,a0,2f48 <recv_thread_entry+0x198>
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:237
uint16_t hdr_seq = qdx_read_u16_le(packet + 5);
2eee: 01d90513 addi a0,s2,29
2ef2: b47ff0ef jal ra,2a38 <qdx_read_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:238
uint8_t hdr_flags = packet[15];
2ef6: 02794783 lbu a5,39(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:237
uint16_t hdr_seq = qdx_read_u16_le(packet + 5);
2efa: 8daa mv s11,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:245
uint8_t cfg_updated = 0;
2efc: 4c81 li s9,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:238
uint8_t hdr_flags = packet[15];
2efe: c03e sw a5,0(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:242
int payload_len = pkt_len - HEADER_SIZE - CRC_SIZE;
2f00: feeb0793 addi a5,s6,-18
2f04: c23e sw a5,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:250
while (parsed_len <= payload_len - 3) {
2f06: fecb0793 addi a5,s6,-20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:243
int parsed_len = 0;
2f0a: 4d01 li s10,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:241
int offset = HEADER_SIZE;
2f0c: 4c41 li s8,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:250
while (parsed_len <= payload_len - 3) {
2f0e: c43e sw a5,8(sp)
2f10: 47a2 lw a5,8(sp)
2f12: 02fd5363 bge s10,a5,2f38 <recv_thread_entry+0x188>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:251
uint8_t type = packet[offset];
2f16: 018987b3 add a5,s3,s8
2f1a: 239c lbu a5,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:252
uint16_t len = qdx_read_u16_le(packet + offset + 1);
2f1c: 001c0513 addi a0,s8,1
2f20: 954e add a0,a0,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:251
uint8_t type = packet[offset];
2f22: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:252
uint16_t len = qdx_read_u16_le(packet + offset + 1);
2f24: b15ff0ef jal ra,2a38 <qdx_read_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:257
if (parsed_len + 3 + len > payload_len) {
2f28: 4692 lw a3,4(sp)
2f2a: 003d0713 addi a4,s10,3
2f2e: 972a add a4,a4,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:252
uint16_t len = qdx_read_u16_le(packet + offset + 1);
2f30: 8aaa mv s5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:257
if (parsed_len + 3 + len > payload_len) {
2f32: 47b2 lw a5,12(sp)
2f34: 02e6da63 bge a3,a4,2f68 <recv_thread_entry+0x1b8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:337
if (cfg_updated && g_TcpLogic.config_cb && g_TcpLogic.has_valid_config) {
2f38: 3e0c9163 bnez s9,331a <recv_thread_entry+0x56a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:347
if (hdr_flags & FLAG_ACK_REQ) {
2f3c: 4782 lw a5,0(sp)
2f3e: 8bc1 andi a5,a5,16
2f40: c781 beqz a5,2f48 <recv_thread_entry+0x198>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:348
tcp_send_ack(ctx, hdr_seq, 0, 0);
2f42: 85ee mv a1,s11
2f44: 854a mv a0,s2
2f46: 3d25 jal 2d7e <tcp_send_ack.constprop.3>
tcp_process_rx_buffer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:418
ctx->recv_len - length);
2f48: 6485 lui s1,0x1
2f4a: 94ca add s1,s1,s2
2f4c: 4c90 lw a2,24(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:417
memmove(ctx->recv_buffer, ctx->recv_buffer + length,
2f4e: 016985b3 add a1,s3,s6
2f52: 854e mv a0,s3
2f54: 41660633 sub a2,a2,s6
2f58: 02a0a0ef jal ra,cf82 <memmove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:419
ctx->recv_len -= length;
2f5c: 4c9c lw a5,24(s1)
2f5e: 41678b33 sub s6,a5,s6
2f62: 0164ac23 sw s6,24(s1) # 1018 <ETH_DMAClearITPendingBit>
2f66: b575 j 2e12 <recv_thread_entry+0x62>
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:263
const uint8_t *value = packet + offset + 3;
2f68: 003c0493 addi s1,s8,3
2f6c: 02000713 li a4,32
2f70: 94ce add s1,s1,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:265
switch (type) {
2f72: 24e78763 beq a5,a4,31c0 <recv_thread_entry+0x410>
2f76: 00f76c63 bltu a4,a5,2f8e <recv_thread_entry+0x1de>
2f7a: 4715 li a4,5
2f7c: 22e78563 beq a5,a4,31a6 <recv_thread_entry+0x3f6>
2f80: 4741 li a4,16
2f82: 36e78263 beq a5,a4,32e6 <recv_thread_entry+0x536>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:333
offset += (3 + len);
2f86: 0a8d addi s5,s5,3
2f88: 9c56 add s8,s8,s5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:334
parsed_len += (3 + len);
2f8a: 9d56 add s10,s10,s5
2f8c: b751 j 2f10 <recv_thread_entry+0x160>
2f8e: 02300713 li a4,35
2f92: 28e78963 beq a5,a4,3224 <recv_thread_entry+0x474>
2f96: 04000713 li a4,64
2f9a: 36e78163 beq a5,a4,32fc <recv_thread_entry+0x54c>
2f9e: 02200713 li a4,34
2fa2: fee792e3 bne a5,a4,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:285
if (len >= sizeof(Config2D_t)) {
2fa6: 03c00793 li a5,60
2faa: fca7fee3 bgeu a5,a0,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:287
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
2fae: 5068 lw a0,100(s0)
2fb0: 928ff0ef jal ra,20d8 <qdx_port_mutex_lock>
qdx_deserialize_config2d():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:177
cfg->Enabled = val[0];
2fb4: 209c lbu a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:179
cfg->DeviceId = qdx_read_u16_le(val + 2);
2fb6: 00248513 addi a0,s1,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:177
cfg->Enabled = val[0];
2fba: 08f40023 sb a5,128(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:178
cfg->IsLive = val[1];
2fbe: 309c lbu a5,1(s1)
2fc0: 08f400a3 sb a5,129(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:179
cfg->DeviceId = qdx_read_u16_le(val + 2);
2fc4: a75ff0ef jal ra,2a38 <qdx_read_u16_le>
2fc8: 08a41123 sh a0,130(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:180
cfg->Width = qdx_read_u16_le(val + 4);
2fcc: 00448513 addi a0,s1,4
2fd0: a69ff0ef jal ra,2a38 <qdx_read_u16_le>
2fd4: 08a41223 sh a0,132(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:181
cfg->Height = qdx_read_u16_le(val + 6);
2fd8: 00648513 addi a0,s1,6
2fdc: a5dff0ef jal ra,2a38 <qdx_read_u16_le>
2fe0: 08a41323 sh a0,134(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:182
cfg->Fps = val[8];
2fe4: 249c lbu a5,8(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:183
cfg->Exposure = qdx_read_u32_le(val + 9);
2fe6: 00948513 addi a0,s1,9
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:182
cfg->Fps = val[8];
2fea: 08f40423 sb a5,136(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:183
cfg->Exposure = qdx_read_u32_le(val + 9);
2fee: a55ff0ef jal ra,2a42 <qdx_read_u32_le>
2ff2: 00855793 srli a5,a0,0x8
2ff6: 08a404a3 sb a0,137(s0)
2ffa: 08f40523 sb a5,138(s0)
2ffe: 01055793 srli a5,a0,0x10
3002: 8161 srli a0,a0,0x18
3004: 08a40623 sb a0,140(s0)
3008: 08f405a3 sb a5,139(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:184
cfg->AutoExposure = val[13];
300c: 34dc lbu a5,13(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:186
cfg->MaskThreshold = (int16_t)qdx_read_u16_le(val + 15);
300e: 00f48513 addi a0,s1,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:184
cfg->AutoExposure = val[13];
3012: 08f406a3 sb a5,141(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:185
cfg->MaskEnabled = val[14];
3016: 24fc lbu a5,14(s1)
3018: 08f40723 sb a5,142(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:186
cfg->MaskThreshold = (int16_t)qdx_read_u16_le(val + 15);
301c: a1dff0ef jal ra,2a38 <qdx_read_u16_le>
3020: 0542 slli a0,a0,0x10
3022: 8141 srli a0,a0,0x10
3024: 08a407a3 sb a0,143(s0)
3028: 8121 srli a0,a0,0x8
302a: 08a40823 sb a0,144(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:187
cfg->MaskWidth = qdx_read_u16_le(val + 17);
302e: 01148513 addi a0,s1,17
3032: a07ff0ef jal ra,2a38 <qdx_read_u16_le>
3036: 08a408a3 sb a0,145(s0)
303a: 8121 srli a0,a0,0x8
303c: 08a40923 sb a0,146(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:188
cfg->MaskHeight = qdx_read_u16_le(val + 19);
3040: 01348513 addi a0,s1,19
3044: 9f5ff0ef jal ra,2a38 <qdx_read_u16_le>
3048: 08a409a3 sb a0,147(s0)
304c: 8121 srli a0,a0,0x8
304e: 08a40a23 sb a0,148(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:189
cfg->Angle = (int16_t)qdx_read_u16_le(val + 21);
3052: 01548513 addi a0,s1,21
3056: 9e3ff0ef jal ra,2a38 <qdx_read_u16_le>
305a: 0542 slli a0,a0,0x10
305c: 8141 srli a0,a0,0x10
305e: 08a40aa3 sb a0,149(s0)
3062: 8121 srli a0,a0,0x8
3064: 08a40b23 sb a0,150(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:190
cfg->TargetWidth = qdx_read_u16_le(val + 23);
3068: 01748513 addi a0,s1,23
306c: 9cdff0ef jal ra,2a38 <qdx_read_u16_le>
3070: 08a40ba3 sb a0,151(s0)
3074: 8121 srli a0,a0,0x8
3076: 08a40c23 sb a0,152(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:191
cfg->TargetHeight = qdx_read_u16_le(val + 25);
307a: 01948513 addi a0,s1,25
307e: 9bbff0ef jal ra,2a38 <qdx_read_u16_le>
3082: 08a40ca3 sb a0,153(s0)
3086: 8121 srli a0,a0,0x8
3088: 08a40d23 sb a0,154(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:192
cfg->TriggerMode = val[27];
308c: 3cbc lbu a5,27(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:194
cfg->TriggerDelayMs = qdx_read_u16_le(val + 29);
308e: 01d48513 addi a0,s1,29
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:192
cfg->TriggerMode = val[27];
3092: 08f40da3 sb a5,155(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:193
cfg->TriggerGpioLine = val[28];
3096: 2cdc lbu a5,28(s1)
3098: 08f40e23 sb a5,156(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:194
cfg->TriggerDelayMs = qdx_read_u16_le(val + 29);
309c: 99dff0ef jal ra,2a38 <qdx_read_u16_le>
30a0: 08a40ea3 sb a0,157(s0)
30a4: 8121 srli a0,a0,0x8
30a6: 08a40f23 sb a0,158(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:195
cfg->TriggerBurstCount = val[31];
30aa: 3cfc lbu a5,31(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:196
cfg->TriggerInternalIntervalMs = qdx_read_u16_le(val + 32);
30ac: 02048513 addi a0,s1,32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:195
cfg->TriggerBurstCount = val[31];
30b0: 08f40fa3 sb a5,159(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:196
cfg->TriggerInternalIntervalMs = qdx_read_u16_le(val + 32);
30b4: 985ff0ef jal ra,2a38 <qdx_read_u16_le>
30b8: 0aa41023 sh a0,160(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:197
cfg->TriggerTemperatureThreshold = (int16_t)qdx_read_u16_le(val + 34);
30bc: 02248513 addi a0,s1,34
30c0: 979ff0ef jal ra,2a38 <qdx_read_u16_le>
30c4: 0aa41123 sh a0,162(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:198
cfg->TriggerDebounceIntervalMs = qdx_read_u16_le(val + 36);
30c8: 02448513 addi a0,s1,36
30cc: 96dff0ef jal ra,2a38 <qdx_read_u16_le>
30d0: 0aa41223 sh a0,164(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:199
cfg->TriggerCondition = val[38];
30d4: 0264c783 lbu a5,38(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:200
cfg->TriggerRoiX = qdx_read_u16_le(val + 39);
30d8: 02748513 addi a0,s1,39
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:199
cfg->TriggerCondition = val[38];
30dc: 0af40323 sb a5,166(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:200
cfg->TriggerRoiX = qdx_read_u16_le(val + 39);
30e0: 959ff0ef jal ra,2a38 <qdx_read_u16_le>
30e4: 0aa403a3 sb a0,167(s0)
30e8: 8121 srli a0,a0,0x8
30ea: 0aa40423 sb a0,168(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:201
cfg->TriggerRoiY = qdx_read_u16_le(val + 41);
30ee: 02948513 addi a0,s1,41
30f2: 947ff0ef jal ra,2a38 <qdx_read_u16_le>
30f6: 0aa404a3 sb a0,169(s0)
30fa: 8121 srli a0,a0,0x8
30fc: 0aa40523 sb a0,170(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:202
cfg->TriggerRoiW = qdx_read_u16_le(val + 43);
3100: 02b48513 addi a0,s1,43
3104: 935ff0ef jal ra,2a38 <qdx_read_u16_le>
3108: 0aa405a3 sb a0,171(s0)
310c: 8121 srli a0,a0,0x8
310e: 0aa40623 sb a0,172(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:203
cfg->TriggerRoiH = qdx_read_u16_le(val + 45);
3112: 02d48513 addi a0,s1,45
3116: 923ff0ef jal ra,2a38 <qdx_read_u16_le>
311a: 0aa406a3 sb a0,173(s0)
311e: 8121 srli a0,a0,0x8
3120: 0aa40723 sb a0,174(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:204
cfg->NGioDelay = qdx_read_u16_le(val + 47);
3124: 02f48513 addi a0,s1,47
3128: 911ff0ef jal ra,2a38 <qdx_read_u16_le>
312c: 0aa407a3 sb a0,175(s0)
3130: 8121 srli a0,a0,0x8
3132: 0aa40823 sb a0,176(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:205
cfg->OutputGpioLine = val[49];
3136: 0314c783 lbu a5,49(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:207
cfg->AlarmHoldMs = qdx_read_u16_le(val + 51);
313a: 03348513 addi a0,s1,51
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:205
cfg->OutputGpioLine = val[49];
313e: 0af408a3 sb a5,177(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:206
cfg->AlarmGpioLine = val[50];
3142: 0324c783 lbu a5,50(s1)
3146: 0af40923 sb a5,178(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:207
cfg->AlarmHoldMs = qdx_read_u16_le(val + 51);
314a: 8efff0ef jal ra,2a38 <qdx_read_u16_le>
314e: 0aa409a3 sb a0,179(s0)
3152: 8121 srli a0,a0,0x8
3154: 0aa40a23 sb a0,180(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:208
cfg->StoreNgImagesOnly = val[53];
3158: 0354c783 lbu a5,53(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:210
cfg->TrainingSampleThreshold = qdx_read_u16_le(val + 55);
315c: 03748513 addi a0,s1,55
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:208
cfg->StoreNgImagesOnly = val[53];
3160: 0af40aa3 sb a5,181(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:209
cfg->TrainingEnabled = val[54];
3164: 0364c783 lbu a5,54(s1)
3168: 0af40b23 sb a5,182(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:210
cfg->TrainingSampleThreshold = qdx_read_u16_le(val + 55);
316c: 8cdff0ef jal ra,2a38 <qdx_read_u16_le>
3170: 0aa40ba3 sb a0,183(s0)
3174: 8121 srli a0,a0,0x8
3176: 0aa40c23 sb a0,184(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:211
cfg->ProcessingTimeoutMs = qdx_read_u16_le(val + 57);
317a: 03948513 addi a0,s1,57
317e: 8bbff0ef jal ra,2a38 <qdx_read_u16_le>
3182: 0aa40ca3 sb a0,185(s0)
3186: 8121 srli a0,a0,0x8
3188: 0aa40d23 sb a0,186(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:212
cfg->MaxProcessingQueueSize = val[59];
318c: 03b4c783 lbu a5,59(s1)
3190: 0af40da3 sb a5,187(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:213
cfg->Reserved = val[60];
3194: 03c4c783 lbu a5,60(s1)
3198: 0af40e23 sb a5,188(s0)
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:289
g_TcpLogic.has_valid_config = 1; /* 任意配置到达即标记有效 */
319c: 4785 li a5,1
319e: 06f40423 sb a5,104(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:291
qdx_port_mutex_unlock(g_TcpLogic.config_mutex);
31a2: 5068 lw a0,100(s0)
31a4: a8a5 j 321c <recv_thread_entry+0x46c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:267
if (len >= sizeof(DevIDAssignment_t)) {
31a6: 478d li a5,3
31a8: dca7ffe3 bgeu a5,a0,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:268
uint16_t new_id = qdx_read_u16_le(value);
31ac: 8526 mv a0,s1
31ae: 88bff0ef jal ra,2a38 <qdx_read_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:269
g_TcpLogic.pending_new_dev_id = new_id;
31b2: 02aba223 sw a0,36(s7)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:270
tcp_send_ack(ctx, hdr_seq, 0, 0);
31b6: 85ee mv a1,s11
31b8: 854a mv a0,s2
31ba: bc5ff0ef jal ra,2d7e <tcp_send_ack.constprop.3>
31be: b3e1 j 2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:275
if (len >= sizeof(ConfigCommon_t)) {
31c0: 47d9 li a5,22
31c2: dca7f2e3 bgeu a5,a0,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:276
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
31c6: 5068 lw a0,100(s0)
31c8: f11fe0ef jal ra,20d8 <qdx_port_mutex_lock>
qdx_deserialize_config_common():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:165
for (int i = 0; i < 16; i++)
31cc: 4781 li a5,0
31ce: 46c1 li a3,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:166
cfg->PipelineId[i] = (char)val[i];
31d0: 00f48633 add a2,s1,a5
31d4: 6709 lui a4,0x2
31d6: 06970713 addi a4,a4,105 # 2069 <qdx_port_sock_disconnect_notify+0x15>
31da: 2210 lbu a2,0(a2)
31dc: 973e add a4,a4,a5
31de: 975e add a4,a4,s7
31e0: a310 sb a2,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:165
for (int i = 0; i < 16; i++)
31e2: 0785 addi a5,a5,1
31e4: fed796e3 bne a5,a3,31d0 <recv_thread_entry+0x420>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:167
cfg->PipelineType = val[16];
31e8: 289c lbu a5,16(s1)
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:280
qdx_port_mutex_unlock(g_TcpLogic.config_mutex);
31ea: 064a2503 lw a0,100(s4)
qdx_deserialize_config_common():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:167
cfg->PipelineType = val[16];
31ee: 06fa0ca3 sb a5,121(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:168
cfg->WorkMode = val[17];
31f2: 389c lbu a5,17(s1)
31f4: 06fa0d23 sb a5,122(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:169
cfg->ConfigTag = val[18];
31f8: 28bc lbu a5,18(s1)
31fa: 06fa0da3 sb a5,123(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:170
cfg->StrictnessLevel = val[19];
31fe: 38bc lbu a5,19(s1)
3200: 06fa0e23 sb a5,124(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:171
cfg->IsCustomMode = val[20];
3204: 28dc lbu a5,20(s1)
3206: 06fa0ea3 sb a5,125(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:172
cfg->Reserved[0] = val[21];
320a: 38dc lbu a5,21(s1)
320c: 06fa0f23 sb a5,126(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:173
cfg->Reserved[1] = val[22];
3210: 28fc lbu a5,22(s1)
3212: 06fa0fa3 sb a5,127(s4)
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:278
g_TcpLogic.has_valid_config = 1;
3216: 4785 li a5,1
3218: 06fa0423 sb a5,104(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:291
qdx_port_mutex_unlock(g_TcpLogic.config_mutex);
321c: ecffe0ef jal ra,20ea <qdx_port_mutex_unlock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:290
cfg_updated = 1;
3220: 4c85 li s9,1
3222: b395 j 2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:299
if (len >= sizeof(Config1D_t)) {
3224: 47e5 li a5,25
3226: d6a7f0e3 bgeu a5,a0,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:300
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
322a: 5068 lw a0,100(s0)
322c: eadfe0ef jal ra,20d8 <qdx_port_mutex_lock>
qdx_deserialize_config1d():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:217
cfg->Enabled = val[0];
3230: 209c lbu a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:220
cfg->BufferSize = qdx_read_u16_le(val + 3);
3232: 00348513 addi a0,s1,3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:217
cfg->Enabled = val[0];
3236: 0af40ea3 sb a5,189(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:218
cfg->RunMode = val[1];
323a: 309c lbu a5,1(s1)
323c: 0af40f23 sb a5,190(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:219
cfg->TriggerType = val[2];
3240: 20bc lbu a5,2(s1)
3242: 0af40fa3 sb a5,191(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:220
cfg->BufferSize = qdx_read_u16_le(val + 3);
3246: ff2ff0ef jal ra,2a38 <qdx_read_u16_le>
324a: 0ca41023 sh a0,192(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:221
cfg->TriggerTempLimit = (int16_t)qdx_read_u16_le(val + 5);
324e: 00548513 addi a0,s1,5
3252: fe6ff0ef jal ra,2a38 <qdx_read_u16_le>
3256: 0ca41123 sh a0,194(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:222
cfg->StartPointsToRemove = qdx_read_u16_le(val + 7);
325a: 00748513 addi a0,s1,7
325e: fdaff0ef jal ra,2a38 <qdx_read_u16_le>
3262: 0ca41223 sh a0,196(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:223
cfg->ReferenceLength = qdx_read_u16_le(val + 9);
3266: 00948513 addi a0,s1,9
326a: fceff0ef jal ra,2a38 <qdx_read_u16_le>
326e: 0ca41323 sh a0,198(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:224
cfg->HighTimerLimit = qdx_read_u16_le(val + 11);
3272: 00b48513 addi a0,s1,11
3276: fc2ff0ef jal ra,2a38 <qdx_read_u16_le>
327a: 0ca41423 sh a0,200(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:225
cfg->TimerCLimit = qdx_read_u16_le(val + 13);
327e: 00d48513 addi a0,s1,13
3282: fb6ff0ef jal ra,2a38 <qdx_read_u16_le>
3286: 0ca41523 sh a0,202(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:226
cfg->NgCountLimit = val[15];
328a: 34fc lbu a5,15(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:227
cfg->LSizeStart = qdx_read_u16_le(val + 16);
328c: 01048513 addi a0,s1,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:226
cfg->NgCountLimit = val[15];
3290: 0cf40623 sb a5,204(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:227
cfg->LSizeStart = qdx_read_u16_le(val + 16);
3294: fa4ff0ef jal ra,2a38 <qdx_read_u16_le>
3298: 0ca406a3 sb a0,205(s0)
329c: 8121 srli a0,a0,0x8
329e: 0ca40723 sb a0,206(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:228
cfg->RSizeStart = qdx_read_u16_le(val + 18);
32a2: 01248513 addi a0,s1,18
32a6: f92ff0ef jal ra,2a38 <qdx_read_u16_le>
32aa: 0ca407a3 sb a0,207(s0)
32ae: 8121 srli a0,a0,0x8
32b0: 0ca40823 sb a0,208(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:229
cfg->NGioDelay = qdx_read_u16_le(val + 20);
32b4: 01448513 addi a0,s1,20
32b8: f80ff0ef jal ra,2a38 <qdx_read_u16_le>
32bc: 0ca408a3 sb a0,209(s0)
32c0: 8121 srli a0,a0,0x8
32c2: 0ca40923 sb a0,210(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:230
cfg->OutputGpioLine = val[22];
32c6: 28fc lbu a5,22(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:232
cfg->AlarmHoldMs = qdx_read_u16_le(val + 24);
32c8: 01848513 addi a0,s1,24
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:230
cfg->OutputGpioLine = val[22];
32cc: 0cf409a3 sb a5,211(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:231
cfg->AlarmGpioLine = val[23];
32d0: 38fc lbu a5,23(s1)
32d2: 0cf40a23 sb a5,212(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:232
cfg->AlarmHoldMs = qdx_read_u16_le(val + 24);
32d6: f62ff0ef jal ra,2a38 <qdx_read_u16_le>
32da: 0ca40aa3 sb a0,213(s0)
32de: 8121 srli a0,a0,0x8
32e0: 0ca40b23 sb a0,214(s0)
parse_and_dispatch_tlv():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:302
g_TcpLogic.has_valid_config = 1; /* 任意配置到达即标记有效 */
32e4: bd65 j 319c <recv_thread_entry+0x3ec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:309
if (g_TcpLogic.temp_req_cb) {
32e6: 0e042783 lw a5,224(s0)
32ea: c8078ee3 beqz a5,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:314
if (len >= 18) {
32ee: 4745 li a4,17
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:313
uint8_t is2d = 0;
32f0: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:314
if (len >= 18) {
32f2: 01577363 bgeu a4,s5,32f8 <recv_thread_entry+0x548>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:315
is2d = value[18]; /* index 18 in TemperatureFrameHeader_t is Is2D */
32f6: 28a8 lbu a0,18(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:317
g_TcpLogic.temp_req_cb(is2d);
32f8: 9782 jalr a5
32fa: b171 j 2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:322
if (len >= sizeof(DetectionResult_t) && g_TcpLogic.detect_cb) {
32fc: 479d li a5,7
32fe: c8a7f4e3 bgeu a5,a0,2f86 <recv_thread_entry+0x1d6>
3302: 0dc42783 lw a5,220(s0)
3306: c80780e3 beqz a5,2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:323
uint32_t frame_num = qdx_read_u32_le(value);
330a: 8526 mv a0,s1
330c: f36ff0ef jal ra,2a42 <qdx_read_u32_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:325
g_TcpLogic.detect_cb(frame_num, result_status);
3310: 0dc42783 lw a5,220(s0)
3314: 20cc lbu a1,4(s1)
3316: 9782 jalr a5
3318: b1bd j 2f86 <recv_thread_entry+0x1d6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:337
if (cfg_updated && g_TcpLogic.config_cb && g_TcpLogic.has_valid_config) {
331a: 0d842783 lw a5,216(s0)
331e: c0078fe3 beqz a5,2f3c <recv_thread_entry+0x18c>
3322: 06844783 lbu a5,104(s0)
3326: c0078be3 beqz a5,2f3c <recv_thread_entry+0x18c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:341
qdx_port_mutex_lock(g_TcpLogic.config_mutex);
332a: 5068 lw a0,100(s0)
332c: dadfe0ef jal ra,20d8 <qdx_port_mutex_lock>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:342
g_TcpLogic.config_cb(&g_TcpLogic.cached_common, &g_TcpLogic.cached_cfg2d,
3330: 0d842783 lw a5,216(s0)
3334: 20012637 lui a2,0x20012
3338: 200125b7 lui a1,0x20012
333c: 20012537 lui a0,0x20012
3340: 4e960613 addi a2,a2,1257 # 200124e9 <g_TcpLogic+0x20bd>
3344: 4ac58593 addi a1,a1,1196 # 200124ac <g_TcpLogic+0x2080>
3348: 49550513 addi a0,a0,1173 # 20012495 <g_TcpLogic+0x2069>
334c: 9782 jalr a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:344
qdx_port_mutex_unlock(g_TcpLogic.config_mutex);
334e: 5068 lw a0,100(s0)
3350: d9bfe0ef jal ra,20ea <qdx_port_mutex_unlock>
3354: b6e5 j 2f3c <recv_thread_entry+0x18c>
recv_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:442
} else if (bytes < 0) {
3356: b4050be3 beqz a0,2eac <recv_thread_entry+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:444
tcp_stream_disconnect(ctx);
335a: 854a mv a0,s2
335c: 8bfff0ef jal ra,2c1a <tcp_stream_disconnect>
3360: b6b1 j 2eac <recv_thread_entry+0xfc>
00003362 <manager_thread_entry>:
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:460
/* ============================================================
* Main Background Manager
* ============================================================ */
static void manager_thread_entry(void *arg) {
3362: 99afd2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:465
while (1) {
uint32_t now = qdx_port_get_tick_ms();
/* DevID Reassignment Handling */
if (g_TcpLogic.pending_new_dev_id >= 0) {
3366: 20010437 lui s0,0x20010
336a: 42c40413 addi s0,s0,1068 # 2001042c <g_TcpLogic>
336e: 200114b7 lui s1,0x20011
tcp_stream_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:88
ctx->recv_len = 0;
3372: 6a89 lui s5,0x2
3374: 42c48493 addi s1,s1,1068 # 2001142c <g_TcpLogic+0x1000>
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:513
}
if (g_TcpLogic.data_stream.is_connected) {
if (now - g_TcpLogic.data_stream.last_heartbeat_ms >
HEARTBEAT_INTERVAL_MS) {
tcp_send_heartbeat(&g_TcpLogic.data_stream);
3378: 200119b7 lui s3,0x20011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:505
tcp_send_heartbeat(&g_TcpLogic.control_stream);
337c: 20010a37 lui s4,0x20010
tcp_stream_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:81
ctx->sock = qdx_port_tcp_connect(ip, port);
3380: 0000db37 lui s6,0xd
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:88
ctx->recv_len = 0;
3384: 9aa2 add s5,s5,s0
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:462
uint32_t now = qdx_port_get_tick_ms();
3386: d1bfe0ef jal ra,20a0 <qdx_port_get_tick_ms>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:465
if (g_TcpLogic.pending_new_dev_id >= 0) {
338a: 505c lw a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:462
uint32_t now = qdx_port_get_tick_ms();
338c: 892a mv s2,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:465
if (g_TcpLogic.pending_new_dev_id >= 0) {
338e: 0207c663 bltz a5,33ba <manager_thread_entry+0x58>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:466
g_TcpLogic.dev_id = (uint16_t)g_TcpLogic.pending_new_dev_id;
3392: b01e sh a5,32(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:469
tcp_stream_disconnect(&g_TcpLogic.control_stream);
3394: 458a0513 addi a0,s4,1112 # 20010458 <g_TcpLogic+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:467
g_TcpLogic.pending_new_dev_id = -1;
3398: 57fd li a5,-1
339a: d05c sw a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:469
tcp_stream_disconnect(&g_TcpLogic.control_stream);
339c: 87fff0ef jal ra,2c1a <tcp_stream_disconnect>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:470
tcp_stream_disconnect(&g_TcpLogic.data_stream);
33a0: 47498513 addi a0,s3,1140 # 20011474 <g_TcpLogic+0x1048>
33a4: 877ff0ef jal ra,2c1a <tcp_stream_disconnect>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:474
qdx_port_delay_ms(500);
33a8: 1f400513 li a0,500
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:472
g_TcpLogic.control_stream.last_reconnect_ms = 0;
33ac: 02042c23 sw zero,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:473
g_TcpLogic.data_stream.last_reconnect_ms = 0;
33b0: 0404aa23 sw zero,84(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:518
g_TcpLogic.data_stream.last_heartbeat_ms = now;
}
}
qdx_port_delay_ms(100);
33b4: cfbfe0ef jal ra,20ae <qdx_port_delay_ms>
33b8: b7f9 j 3386 <manager_thread_entry+0x24>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:479
if (!g_TcpLogic.control_stream.is_connected) {
33ba: 03e44783 lbu a5,62(s0)
33be: e3a9 bnez a5,3400 <manager_thread_entry+0x9e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:480
if (now - g_TcpLogic.control_stream.last_reconnect_ms >
33c0: 5c1c lw a5,56(s0)
33c2: 6585 lui a1,0x1
33c4: bb858713 addi a4,a1,-1096 # bb8 <SystemInit+0x94>
33c8: 40f507b3 sub a5,a0,a5
33cc: 02f77a63 bgeu a4,a5,3400 <manager_thread_entry+0x9e>
tcp_stream_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:81
ctx->sock = qdx_port_tcp_connect(ip, port);
33d0: 58758593 addi a1,a1,1415
33d4: 2a0b0513 addi a0,s6,672 # d2a0 <MemSize+0x10c>
33d8: d5ffe0ef jal ra,2136 <qdx_port_tcp_connect>
33dc: d448 sw a0,44(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:82
if (ctx->sock == NULL)
33de: cd11 beqz a0,33fa <manager_thread_entry+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:85
ctx->is_connected = 1;
33e0: 4785 li a5,1
33e2: 02f40f23 sb a5,62(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:86
ctx->last_activity_ms = qdx_port_get_tick_ms();
33e6: cbbfe0ef jal ra,20a0 <qdx_port_get_tick_ms>
33ea: d808 sw a0,48(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:87
ctx->last_heartbeat_ms = ctx->last_activity_ms;
33ec: d848 sw a0,52(s0)
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:484
tcp_send_handshake(&g_TcpLogic.control_stream);
33ee: 458a0513 addi a0,s4,1112
tcp_stream_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:88
ctx->recv_len = 0;
33f2: 0404a223 sw zero,68(s1)
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:484
tcp_send_handshake(&g_TcpLogic.control_stream);
33f6: 8afff0ef jal ra,2ca4 <tcp_send_handshake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:486
g_TcpLogic.control_stream.last_reconnect_ms = qdx_port_get_tick_ms();
33fa: ca7fe0ef jal ra,20a0 <qdx_port_get_tick_ms>
33fe: dc08 sw a0,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:491
if (!g_TcpLogic.data_stream.is_connected) {
3400: 05a4c783 lbu a5,90(s1)
3404: 6585 lui a1,0x1
3406: e3a1 bnez a5,3446 <manager_thread_entry+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:492
if (now - g_TcpLogic.data_stream.last_reconnect_ms > RECONNECT_DELAY_MS) {
3408: 48fc lw a5,84(s1)
340a: bb858713 addi a4,a1,-1096 # bb8 <SystemInit+0x94>
340e: 40f907b3 sub a5,s2,a5
3412: 02f77a63 bgeu a4,a5,3446 <manager_thread_entry+0xe4>
tcp_stream_connect():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:81
ctx->sock = qdx_port_tcp_connect(ip, port);
3416: 58858593 addi a1,a1,1416
341a: 2a0b0513 addi a0,s6,672
341e: d19fe0ef jal ra,2136 <qdx_port_tcp_connect>
3422: c4a8 sw a0,72(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:82
if (ctx->sock == NULL)
3424: cd11 beqz a0,3440 <manager_thread_entry+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:85
ctx->is_connected = 1;
3426: 4785 li a5,1
3428: 04f48d23 sb a5,90(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:86
ctx->last_activity_ms = qdx_port_get_tick_ms();
342c: c75fe0ef jal ra,20a0 <qdx_port_get_tick_ms>
3430: c4e8 sw a0,76(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:87
ctx->last_heartbeat_ms = ctx->last_activity_ms;
3432: c8a8 sw a0,80(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:88
ctx->recv_len = 0;
3434: 060aa023 sw zero,96(s5) # 2060 <qdx_port_sock_disconnect_notify+0xc>
manager_thread_entry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:495
tcp_send_handshake(&g_TcpLogic.data_stream);
3438: 47498513 addi a0,s3,1140
343c: 869ff0ef jal ra,2ca4 <tcp_send_handshake>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:497
g_TcpLogic.data_stream.last_reconnect_ms = qdx_port_get_tick_ms();
3440: c61fe0ef jal ra,20a0 <qdx_port_get_tick_ms>
3444: c8e8 sw a0,84(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:502
if (g_TcpLogic.control_stream.is_connected) {
3446: 03e44783 lbu a5,62(s0)
344a: cf91 beqz a5,3466 <manager_thread_entry+0x104>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:503
if (now - g_TcpLogic.control_stream.last_heartbeat_ms >
344c: 585c lw a5,52(s0)
344e: 7d000713 li a4,2000
3452: 40f907b3 sub a5,s2,a5
3456: 00f77863 bgeu a4,a5,3466 <manager_thread_entry+0x104>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:505
tcp_send_heartbeat(&g_TcpLogic.control_stream);
345a: 458a0513 addi a0,s4,1112
345e: 8f1ff0ef jal ra,2d4e <tcp_send_heartbeat>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:506
g_TcpLogic.control_stream.last_heartbeat_ms = now;
3462: 03242a23 sw s2,52(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:510
if (g_TcpLogic.data_stream.is_connected) {
3466: 05a4c783 lbu a5,90(s1)
346a: cf91 beqz a5,3486 <manager_thread_entry+0x124>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:511
if (now - g_TcpLogic.data_stream.last_heartbeat_ms >
346c: 48bc lw a5,80(s1)
346e: 7d000713 li a4,2000
3472: 40f907b3 sub a5,s2,a5
3476: 00f77863 bgeu a4,a5,3486 <manager_thread_entry+0x124>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:513
tcp_send_heartbeat(&g_TcpLogic.data_stream);
347a: 47498513 addi a0,s3,1140
347e: 8d1ff0ef jal ra,2d4e <tcp_send_heartbeat>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:514
g_TcpLogic.data_stream.last_heartbeat_ms = now;
3482: 0524a823 sw s2,80(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:518
qdx_port_delay_ms(100);
3486: 06400513 li a0,100
348a: b72d j 33b4 <manager_thread_entry+0x52>
0000348c <TcpLogic_Init>:
TcpLogic_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:526
/* ============================================================
* Public API Implementations
* ============================================================ */
int8_t TcpLogic_Init(const uint8_t *deviceUUID, const uint8_t *authToken) {
348c: 88afd2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:527
memset(&g_TcpLogic, 0, sizeof(g_TcpLogic));
3490: 20010437 lui s0,0x20010
3494: 6609 lui a2,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:526
int8_t TcpLogic_Init(const uint8_t *deviceUUID, const uint8_t *authToken) {
3496: 892a mv s2,a0
3498: 84ae mv s1,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:527
memset(&g_TcpLogic, 0, sizeof(g_TcpLogic));
349a: 0e460613 addi a2,a2,228 # 20e4 <qdx_port_mutex_lock+0xc>
349e: 4581 li a1,0
34a0: 42c40513 addi a0,s0,1068 # 2001042c <g_TcpLogic>
34a4: 8a2fd0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:529
if (deviceUUID)
34a8: 00090863 beqz s2,34b8 <TcpLogic_Init+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:530
memcpy(g_TcpLogic.uuid, deviceUUID, 16);
34ac: 4641 li a2,16
34ae: 85ca mv a1,s2
34b0: 42c40513 addi a0,s0,1068
34b4: 21d090ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:531
if (authToken)
34b8: 20010437 lui s0,0x20010
34bc: 42c40413 addi s0,s0,1068 # 2001042c <g_TcpLogic>
34c0: c499 beqz s1,34ce <TcpLogic_Init+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:532
memcpy(g_TcpLogic.auth_token, authToken, 16);
34c2: 4641 li a2,16
34c4: 85a6 mv a1,s1
34c6: 01040513 addi a0,s0,16
34ca: 207090ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:535
/* Default DevID = 101 */
g_TcpLogic.dev_id = 101;
34ce: 06500793 li a5,101
34d2: b01e sh a5,32(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:536
g_TcpLogic.pending_new_dev_id = -1;
34d4: 57fd li a5,-1
34d6: d05c sw a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:538
g_TcpLogic.config_mutex = qdx_port_mutex_create();
34d8: bf3fe0ef jal ra,20ca <qdx_port_mutex_create>
34dc: 6789 lui a5,0x2
34de: 97a2 add a5,a5,s0
34e0: d3e8 sw a0,100(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:540
if (g_TcpLogic.config_mutex == NULL)
return -1;
34e2: 57fd li a5,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:539
if (g_TcpLogic.config_mutex == NULL)
34e4: c121 beqz a0,3524 <TcpLogic_Init+0x98>
tcp_stream_init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:67
memset(ctx, 0, sizeof(TcpStreamCtx_t));
34e6: 6485 lui s1,0x1
34e8: 01c48913 addi s2,s1,28 # 101c <ETH_DMAClearITPendingBit+0x4>
34ec: 20010537 lui a0,0x20010
34f0: 864a mv a2,s2
34f2: 4581 li a1,0
34f4: 45850513 addi a0,a0,1112 # 20010458 <g_TcpLogic+0x2c>
34f8: 84efd0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:68
ctx->label = label;
34fc: 0000d7b7 lui a5,0xd
3500: 27078793 addi a5,a5,624 # d270 <MemSize+0xdc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:67
memset(ctx, 0, sizeof(TcpStreamCtx_t));
3504: 20011537 lui a0,0x20011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:68
ctx->label = label;
3508: c03c sw a5,64(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:67
memset(ctx, 0, sizeof(TcpStreamCtx_t));
350a: 864a mv a2,s2
350c: 4581 li a1,0
350e: 47450513 addi a0,a0,1140 # 20011474 <g_TcpLogic+0x1048>
3512: 834fd0ef jal ra,546 <memset>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:68
ctx->label = label;
3516: 0000d7b7 lui a5,0xd
351a: 27878793 addi a5,a5,632 # d278 <MemSize+0xe4>
351e: 9426 add s0,s0,s1
3520: cc7c sw a5,92(s0)
TcpLogic_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:545
tcp_stream_init(&g_TcpLogic.control_stream, "Control");
tcp_stream_init(&g_TcpLogic.data_stream, "Data");
return 0;
3522: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:546
}
3524: 853e mv a0,a5
3526: 814fd06f j 53a <__riscv_restore_0>
0000352a <TcpLogic_Start>:
TcpLogic_Start():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:548
void TcpLogic_Start(void) {
352a: fedfc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:549
g_TcpLogic.control_stream.is_running = 1;
352e: 200107b7 lui a5,0x20010
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:550
g_TcpLogic.data_stream.is_running = 1;
3532: 6405 lui s0,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:549
g_TcpLogic.control_stream.is_running = 1;
3534: 4705 li a4,1
3536: 42c78793 addi a5,a5,1068 # 2001042c <g_TcpLogic>
353a: 02e78fa3 sb a4,63(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:552
qdx_port_thread_create("tcp_mgr", manager_thread_entry, NULL, 2048, 3);
353e: 000035b7 lui a1,0x3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:550
g_TcpLogic.data_stream.is_running = 1;
3542: 97a2 add a5,a5,s0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:552
qdx_port_thread_create("tcp_mgr", manager_thread_entry, NULL, 2048, 3);
3544: 0000d537 lui a0,0xd
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:550
g_TcpLogic.data_stream.is_running = 1;
3548: 04e78da3 sb a4,91(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:552
qdx_port_thread_create("tcp_mgr", manager_thread_entry, NULL, 2048, 3);
354c: 80040693 addi a3,s0,-2048 # 800 <__stack_size>
3550: 470d li a4,3
3552: 4601 li a2,0
3554: 36258593 addi a1,a1,866 # 3362 <manager_thread_entry>
3558: 28050513 addi a0,a0,640 # d280 <MemSize+0xec>
355c: ba5fe0ef jal ra,2100 <qdx_port_thread_create>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:553
qdx_port_thread_create("tcp_rx_c", recv_thread_entry,
3560: 000034b7 lui s1,0x3
3564: 20010637 lui a2,0x20010
3568: 0000d537 lui a0,0xd
356c: 80040693 addi a3,s0,-2048
3570: db048593 addi a1,s1,-592 # 2db0 <recv_thread_entry>
3574: 4711 li a4,4
3576: 45860613 addi a2,a2,1112 # 20010458 <g_TcpLogic+0x2c>
357a: 28850513 addi a0,a0,648 # d288 <MemSize+0xf4>
357e: b83fe0ef jal ra,2100 <qdx_port_thread_create>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:555
&g_TcpLogic.control_stream, 2048, 4);
qdx_port_thread_create("tcp_rx_d", recv_thread_entry, &g_TcpLogic.data_stream,
3582: 20011637 lui a2,0x20011
3586: 0000d537 lui a0,0xd
358a: 4711 li a4,4
358c: 80040693 addi a3,s0,-2048
3590: 47460613 addi a2,a2,1140 # 20011474 <g_TcpLogic+0x1048>
3594: db048593 addi a1,s1,-592
3598: 29450513 addi a0,a0,660 # d294 <MemSize+0x100>
359c: b65fe0ef jal ra,2100 <qdx_port_thread_create>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:557
2048, 4);
}
35a0: f9bfc06f j 53a <__riscv_restore_0>
000035a4 <TcpLogic_RegisterConfigCallback>:
TcpLogic_RegisterConfigCallback():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:579
return 0;
}
void TcpLogic_RegisterConfigCallback(ConfigUpdateCallback_t cb) {
g_TcpLogic.config_cb = cb;
35a4: 200127b7 lui a5,0x20012
35a8: 42c78793 addi a5,a5,1068 # 2001242c <g_TcpLogic+0x2000>
35ac: 0ca7ac23 sw a0,216(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:580
}
35b0: 8082 ret
000035b2 <TcpLogic_RegisterDetectionCallback>:
TcpLogic_RegisterDetectionCallback():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:583
void TcpLogic_RegisterDetectionCallback(DetectionResultCallback_t cb) {
g_TcpLogic.detect_cb = cb;
35b2: 200127b7 lui a5,0x20012
35b6: 42c78793 addi a5,a5,1068 # 2001242c <g_TcpLogic+0x2000>
35ba: 0ca7ae23 sw a0,220(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:584
}
35be: 8082 ret
000035c0 <TcpLogic_BuildAndSendTemperatureFrame>:
TcpLogic_BuildAndSendTemperatureFrame():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:597
* ============================================================ */
int8_t
TcpLogic_BuildAndSendTemperatureFrame(TcpTxBuffer_t *io_buffer,
const PreprocessResult_t *processMeta,
uint8_t frameType, uint8_t is2D) {
35c0: f2ffc2ef jal t0,4ee <__riscv_save_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:599
if (!g_TcpLogic.data_stream.is_connected || !io_buffer || !processMeta)
35c4: 20010ab7 lui s5,0x20010
35c8: 42ca8b13 addi s6,s5,1068 # 2001042c <g_TcpLogic>
35cc: 6985 lui s3,0x1
35ce: 99da add s3,s3,s6
35d0: 05a9c703 lbu a4,90(s3) # 105a <ETH_Start+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:597
uint8_t frameType, uint8_t is2D) {
35d4: a6010113 addi sp,sp,-1440
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:599
if (!g_TcpLogic.data_stream.is_connected || !io_buffer || !processMeta)
35d8: 18070663 beqz a4,3764 <TcpLogic_BuildAndSendTemperatureFrame+0x1a4>
35dc: 87aa mv a5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:600 (discriminator 1)
return -1;
35de: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:599 (discriminator 1)
if (!g_TcpLogic.data_stream.is_connected || !io_buffer || !processMeta)
35e0: 0e078663 beqz a5,36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:599 (discriminator 2)
35e4: 0e058463 beqz a1,36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:601
if (io_buffer->ValidPayloadLen == 0)
35e8: 00c7a903 lw s2,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:602
return -2;
35ec: 5579 li a0,-2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:601
if (io_buffer->ValidPayloadLen == 0)
35ee: 0c090f63 beqz s2,36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:604
g_TcpLogic.frame_count++;
35f2: 028b2703 lw a4,40(s6)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:610
/* We need to prepend: TLV Header (3) + TemperatureFrameHeader_t (18) */
uint32_t tlv_wrapper_len = TLV_HEADER_SIZE + sizeof(TemperatureFrameHeader_t);
/* Ensure application left enough head room */
if (io_buffer->HeadOffset < HEADER_SIZE + tlv_wrapper_len) {
35f6: 4780 lw s0,8(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:611
return -3; /* Not enough offset space allocated by user memory pool */
35f8: 5575 li a0,-3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:604
g_TcpLogic.frame_count++;
35fa: 0705 addi a4,a4,1
35fc: 02eb2423 sw a4,40(s6)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:610
if (io_buffer->HeadOffset < HEADER_SIZE + tlv_wrapper_len) {
3600: 02600713 li a4,38
3604: 0c877463 bgeu a4,s0,36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:615
}
/* Start writing right before the application payload */
uint8_t *tlv_start =
3608: 439c lw a5,0(a5)
360a: 84ae mv s1,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:616
io_buffer->pBuffer + io_buffer->HeadOffset - tlv_wrapper_len;
360c: 1425 addi s0,s0,-23
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:619
/* 1. Fill TLV Header manually via shift */
uint32_t tlv_value_len =
360e: 01490593 addi a1,s2,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:615
uint8_t *tlv_start =
3612: 943e add s0,s0,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:622
sizeof(TemperatureFrameHeader_t) + io_buffer->ValidPayloadLen;
tlv_start[0] = TYPE_TEMP_FRAME;
qdx_write_u16_le(tlv_start + 1, (uint16_t)tlv_value_len);
3614: 05c2 slli a1,a1,0x10
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:621
tlv_start[0] = TYPE_TEMP_FRAME;
3616: 47c1 li a5,16
3618: a01c sb a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:622
qdx_write_u16_le(tlv_start + 1, (uint16_t)tlv_value_len);
361a: 81c1 srli a1,a1,0x10
361c: 00140513 addi a0,s0,1
3620: 8bb6 mv s7,a3
3622: 8c32 mv s8,a2
3624: bf8ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:628
/* 2. Fill TemperatureFrameHeader manually via shift to avoid alignment
* faults
*/
uint8_t *temp_hdr = tlv_start + TLV_HEADER_SIZE;
qdx_write_u32_le(temp_hdr + 0, processMeta->FrameNumber);
3628: 4c8c lw a1,24(s1)
362a: 00340513 addi a0,s0,3
362e: bf6ff0ef jal ra,2a24 <qdx_write_u32_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:629
qdx_write_u16_le(temp_hdr + 4, processMeta->ValidWidth);
3632: 248e lhu a1,8(s1)
3634: 00740513 addi a0,s0,7
3638: be4ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:630
qdx_write_u16_le(temp_hdr + 6, processMeta->ValidHeight);
363c: 24ae lhu a1,10(s1)
363e: 00940513 addi a0,s0,9
3642: bdaff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:631
qdx_write_u16_le(temp_hdr + 8, (uint16_t)processMeta->MinTemp);
3646: 24ce lhu a1,12(s1)
3648: 00b40513 addi a0,s0,11
364c: bd0ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:632
qdx_write_u16_le(temp_hdr + 10, (uint16_t)processMeta->MaxTemp);
3650: 24ee lhu a1,14(s1)
3652: 00d40513 addi a0,s0,13
3656: bc6ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:633
qdx_write_u16_le(temp_hdr + 12, (uint16_t)processMeta->AvgTemp);
365a: 288e lhu a1,16(s1)
365c: 00f40513 addi a0,s0,15
3660: bbcff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:634
qdx_write_u16_le(temp_hdr + 14, (uint16_t)processMeta->RoiTemp);
3664: 28ae lhu a1,18(s1)
3666: 01140513 addi a0,s0,17
366a: bb2ff0ef jal ra,2a1c <qdx_write_u16_le>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:635
temp_hdr[16] = frameType;
366e: 018409a3 sb s8,19(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:636
temp_hdr[17] = processMeta->Status;
3672: 28dc lbu a5,20(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:637
temp_hdr[18] = is2D;
3674: 01740aa3 sb s7,21(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:638
temp_hdr[19] = 0; /* Reserved */
3678: 00040b23 sb zero,22(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:636
temp_hdr[17] = processMeta->Status;
367c: a85c sb a5,20(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:641
/* Total payload length is the entire TLV block */
uint32_t total_tlv_len = TLV_HEADER_SIZE + tlv_value_len;
367e: 01790b93 addi s7,s2,23
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:644
/* 3. Handle Fragmentation if necessary */
if (total_tlv_len <= MAX_FRAGMENT_PAYLOAD) {
3682: 57800793 li a5,1400
3686: 0577e763 bltu a5,s7,36d4 <TcpLogic_BuildAndSendTemperatureFrame+0x114>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:647
/* No fragmentation needed, build frame in place at the front */
uint8_t *frame_start = tlv_start - HEADER_SIZE;
uint16_t seq = g_TcpLogic.data_stream.sequence++;
368a: 0589d703 lhu a4,88(s3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:649
int final_len = qdx_build_frame_inplace(
368e: 020b5683 lhu a3,32(s6)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:646
uint8_t *frame_start = tlv_start - HEADER_SIZE;
3692: 1441 addi s0,s0,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:647
uint16_t seq = g_TcpLogic.data_stream.sequence++;
3694: 00170793 addi a5,a4,1
3698: c43a sw a4,8(sp)
369a: 04f99c23 sh a5,88(s3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:649
int final_len = qdx_build_frame_inplace(
369e: c236 sw a3,4(sp)
36a0: a01fe0ef jal ra,20a0 <qdx_port_get_tick_ms>
36a4: 4722 lw a4,8(sp)
36a6: 4692 lw a3,4(sp)
36a8: 010b9613 slli a2,s7,0x10
36ac: 87aa mv a5,a0
36ae: 4801 li a6,0
36b0: 8241 srli a2,a2,0x10
36b2: 4589 li a1,2
36b4: 8522 mv a0,s0
36b6: c70ff0ef jal ra,2b26 <qdx_build_frame_inplace>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:654
frame_start, CLASS_DATA, (uint16_t)total_tlv_len, g_TcpLogic.dev_id,
seq, qdx_port_get_tick_ms(), 0);
int32_t sent =
qdx_port_tcp_send(g_TcpLogic.data_stream.sock, frame_start, final_len);
36ba: 862a mv a2,a0
36bc: 0489a503 lw a0,72(s3)
36c0: 85a2 mv a1,s0
36c2: c83fe0ef jal ra,2344 <qdx_port_tcp_send>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:655
return (sent >= 0) ? 0 : -1;
36c6: 857d srai a0,a0,0x1f
36c8: 0562 slli a0,a0,0x18
36ca: 8561 srai a0,a0,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:694
offset += chunk_len;
}
return 0;
}
36cc: 5a010113 addi sp,sp,1440
36d0: e57fc06f j 526 <__riscv_restore_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:666
(total_tlv_len + MAX_FRAGMENT_PAYLOAD - 1) / MAX_FRAGMENT_PAYLOAD;
36d4: 58e90913 addi s2,s2,1422
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:665
uint32_t frag_count =
36d8: 02f95933 divu s2,s2,a5
36dc: 20011a37 lui s4,0x20011
36e0: 42ca8a93 addi s5,s5,1068
36e4: 42ca0a13 addi s4,s4,1068 # 2001142c <g_TcpLogic+0x1000>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:668
for (uint32_t i = 0; i < frag_count; i++) {
36e8: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:663
uint32_t offset = 0;
36ea: 4981 li s3,0
36ec: 57800c93 li s9,1400
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:673
uint8_t flags = (i == frag_count - 1) ? FLAG_LAST_FRAGMENT : 0;
36f0: fff90d13 addi s10,s2,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:668 (discriminator 1)
for (uint32_t i = 0; i < frag_count; i++) {
36f4: 01249463 bne s1,s2,36fc <TcpLogic_BuildAndSendTemperatureFrame+0x13c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:693
return 0;
36f8: 4501 li a0,0
36fa: bfc9 j 36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:669
uint32_t chunk_len = total_tlv_len - offset;
36fc: 413b8b33 sub s6,s7,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:670
if (chunk_len > MAX_FRAGMENT_PAYLOAD)
3700: 016cf463 bgeu s9,s6,3708 <TcpLogic_BuildAndSendTemperatureFrame+0x148>
3704: 57800b13 li s6,1400
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:673
uint8_t flags = (i == frag_count - 1) ? FLAG_LAST_FRAGMENT : 0;
3708: 02000893 li a7,32
370c: 009d0363 beq s10,s1,3712 <TcpLogic_BuildAndSendTemperatureFrame+0x152>
3710: 4881 li a7,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:674 (discriminator 4)
uint16_t seq = g_TcpLogic.data_stream.sequence++;
3712: 058a5783 lhu a5,88(s4)
3716: c646 sw a7,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:680 (discriminator 4)
frag_buf, CLASS_DATA, tlv_start + offset, (uint16_t)chunk_len,
3718: 01340c33 add s8,s0,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:674 (discriminator 4)
uint16_t seq = g_TcpLogic.data_stream.sequence++;
371c: 00178713 addi a4,a5,1
3720: 04ea1c23 sh a4,88(s4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:679 (discriminator 4)
int frame_len = qdx_build_fragment_frame(
3724: 020ad703 lhu a4,32(s5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:674 (discriminator 4)
uint16_t seq = g_TcpLogic.data_stream.sequence++;
3728: c43e sw a5,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:679 (discriminator 4)
int frame_len = qdx_build_fragment_frame(
372a: c23a sw a4,4(sp)
372c: 975fe0ef jal ra,20a0 <qdx_port_get_tick_ms>
3730: 48b2 lw a7,12(sp)
3732: 47a2 lw a5,8(sp)
3734: 4712 lw a4,4(sp)
3736: 010b1693 slli a3,s6,0x10
373a: 882a mv a6,a0
373c: 8662 mv a2,s8
373e: 4589 li a1,2
3740: 82c1 srli a3,a3,0x10
3742: 0848 addi a0,sp,20
3744: c52ff0ef jal ra,2b96 <qdx_build_fragment_frame>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:684 (discriminator 4)
qdx_port_tcp_send(g_TcpLogic.data_stream.sock, frag_buf, frame_len);
3748: 862a mv a2,a0
374a: 048a2503 lw a0,72(s4)
374e: 084c addi a1,sp,20
3750: bf5fe0ef jal ra,2344 <qdx_port_tcp_send>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:685 (discriminator 4)
if (sent < 0) {
3754: 00055a63 bgez a0,3768 <TcpLogic_BuildAndSendTemperatureFrame+0x1a8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:686
tcp_stream_disconnect(&g_TcpLogic.data_stream);
3758: 20011537 lui a0,0x20011
375c: 47450513 addi a0,a0,1140 # 20011474 <g_TcpLogic+0x1048>
3760: cbaff0ef jal ra,2c1a <tcp_stream_disconnect>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:600
return -1;
3764: 557d li a0,-1
3766: b79d j 36cc <TcpLogic_BuildAndSendTemperatureFrame+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:690 (discriminator 2)
offset += chunk_len;
3768: 99da add s3,s3,s6
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Middle/QDXnetworkStack/qdx_tcp_logic.c:668 (discriminator 2)
for (uint32_t i = 0; i < frag_count; i++) {
376a: 0485 addi s1,s1,1
376c: b761 j 36f4 <TcpLogic_BuildAndSendTemperatureFrame+0x134>
0000376e <prvInsertBlockIntoFreeList>:
prvInsertBlockIntoFreeList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:399
BlockLink_t * pxIterator;
uint8_t * puc;
/* Iterate through the list until a block is found that has a higher address
* than the block being inserted. */
for( pxIterator = &xStart; pxIterator->pxNextFreeBlock < pxBlockToInsert; pxIterator = pxIterator->pxNextFreeBlock )
376e: 200007b7 lui a5,0x20000
3772: 0fc78793 addi a5,a5,252 # 200000fc <xStart>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:399 (discriminator 1)
3776: 4398 lw a4,0(a5)
3778: 02a76f63 bltu a4,a0,37b6 <prvInsertBlockIntoFreeList+0x48>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:408
/* Do the block being inserted, and the block it is being inserted after
* make a contiguous block of memory? */
puc = ( uint8_t * ) pxIterator;
if( ( puc + pxIterator->xBlockSize ) == ( uint8_t * ) pxBlockToInsert )
377c: 43d0 lw a2,4(a5)
377e: 00c786b3 add a3,a5,a2
3782: 00d51663 bne a0,a3,378e <prvInsertBlockIntoFreeList+0x20>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:410
{
pxIterator->xBlockSize += pxBlockToInsert->xBlockSize;
3786: 4154 lw a3,4(a0)
3788: 853e mv a0,a5
378a: 96b2 add a3,a3,a2
378c: c3d4 sw a3,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:422
/* Do the block being inserted, and the block it is being inserted before
* make a contiguous block of memory? */
puc = ( uint8_t * ) pxBlockToInsert;
if( ( puc + pxBlockToInsert->xBlockSize ) == ( uint8_t * ) pxIterator->pxNextFreeBlock )
378e: 4150 lw a2,4(a0)
3790: 00c506b3 add a3,a0,a2
3794: 00d71c63 bne a4,a3,37ac <prvInsertBlockIntoFreeList+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:424
{
if( pxIterator->pxNextFreeBlock != pxEnd )
3798: 200006b7 lui a3,0x20000
379c: 0e46a683 lw a3,228(a3) # 200000e4 <pxEnd>
37a0: 00d70663 beq a4,a3,37ac <prvInsertBlockIntoFreeList+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:427
{
/* Form one big block from the two blocks. */
pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize;
37a4: 4354 lw a3,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:428
pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock->pxNextFreeBlock;
37a6: 4318 lw a4,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:427
pxBlockToInsert->xBlockSize += pxIterator->pxNextFreeBlock->xBlockSize;
37a8: 96b2 add a3,a3,a2
37aa: c154 sw a3,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:437
pxBlockToInsert->pxNextFreeBlock = pxEnd;
}
}
else
{
pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock;
37ac: c118 sw a4,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:444
/* If the block being inserted plugged a gab, so was merged with the block
* before and the block after, then it's pxNextFreeBlock pointer will have
* already been set, and should not be set here as that would make it point
* to itself. */
if( pxIterator != pxBlockToInsert )
37ae: 00f50363 beq a0,a5,37b4 <prvInsertBlockIntoFreeList+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:446
{
pxIterator->pxNextFreeBlock = pxBlockToInsert;
37b2: c388 sw a0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:452
}
else
{
mtCOVERAGE_TEST_MARKER();
}
}
37b4: 8082 ret
37b6: 87ba mv a5,a4
37b8: bf7d j 3776 <prvInsertBlockIntoFreeList+0x8>
000037ba <pvPortMalloc>:
pvPortMalloc():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:118
{
37ba: d43fc2ef jal t0,4fc <__riscv_save_4>
37be: 1141 addi sp,sp,-16
37c0: c62a sw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:122
vTaskSuspendAll();
37c2: 190010ef jal ra,4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:126
if( pxEnd == NULL )
37c6: 200006b7 lui a3,0x20000
37ca: 0e46a783 lw a5,228(a3) # 200000e4 <pxEnd>
37ce: 20000637 lui a2,0x20000
37d2: 0e468693 addi a3,a3,228
37d6: 0e860613 addi a2,a2,232 # 200000e8 <xBlockAllocatedBit>
37da: 4532 lw a0,12(sp)
37dc: efa1 bnez a5,3834 <pvPortMalloc+0x7a>
prvHeapInit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:352
uxAddress = ( size_t ) ucHeap;
37de: 20012737 lui a4,0x20012
37e2: 51070793 addi a5,a4,1296 # 20012510 <ucHeap>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:354
if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 )
37e6: 00f7f593 andi a1,a5,15
37ea: 51070713 addi a4,a4,1296
37ee: c581 beqz a1,37f6 <pvPortMalloc+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:356
uxAddress += ( portBYTE_ALIGNMENT - 1 );
37f0: 00f78713 addi a4,a5,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:357
uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );
37f4: 9b41 andi a4,a4,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:365
xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap;
37f6: 200005b7 lui a1,0x20000
37fa: 0fc58593 addi a1,a1,252 # 200000fc <xStart>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:366
xStart.xBlockSize = ( size_t ) 0;
37fe: 0005a223 sw zero,4(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:365
xStart.pxNextFreeBlock = ( void * ) pucAlignedHeap;
3802: c198 sw a4,0(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:371
uxAddress -= xHeapStructSize;
3804: 658d lui a1,0x3
3806: 15c1 addi a1,a1,-16
3808: 97ae add a5,a5,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:372
uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK );
380a: 9bc1 andi a5,a5,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:374
pxEnd->xBlockSize = 0;
380c: 0007a223 sw zero,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:375
pxEnd->pxNextFreeBlock = NULL;
3810: 0007a023 sw zero,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:380
pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock;
3814: 40e785b3 sub a1,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:373
pxEnd = ( void * ) uxAddress;
3818: c29c sw a5,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:381
pxFirstFreeBlock->pxNextFreeBlock = pxEnd;
381a: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:384
xMinimumEverFreeBytesRemaining = pxFirstFreeBlock->xBlockSize;
381c: 200007b7 lui a5,0x20000
3820: 0eb7a823 sw a1,240(a5) # 200000f0 <xMinimumEverFreeBytesRemaining>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:385
xFreeBytesRemaining = pxFirstFreeBlock->xBlockSize;
3824: 200007b7 lui a5,0x20000
3828: 0eb7a623 sw a1,236(a5) # 200000ec <xFreeBytesRemaining>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:388
xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 );
382c: 800007b7 lui a5,0x80000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:380
pxFirstFreeBlock->xBlockSize = uxAddress - ( size_t ) pxFirstFreeBlock;
3830: c34c sw a1,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:388
xBlockAllocatedBit = ( ( size_t ) 1 ) << ( ( sizeof( size_t ) * heapBITS_PER_BYTE ) - 1 );
3832: c21c sw a5,0(a2)
pvPortMalloc():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:139
if( ( xWantedSize & xBlockAllocatedBit ) == 0 )
3834: 00062a03 lw s4,0(a2)
3838: 00aa77b3 and a5,s4,a0
383c: e385 bnez a5,385c <pvPortMalloc+0xa2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:143
if( ( xWantedSize > 0 ) &&
383e: fff50793 addi a5,a0,-1
3842: 5739 li a4,-18
3844: 00f76c63 bltu a4,a5,385c <pvPortMalloc+0xa2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:146
xWantedSize += xHeapStructSize;
3848: 01050793 addi a5,a0,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:149
if( ( xWantedSize & portBYTE_ALIGNMENT_MASK ) != 0x00 )
384c: 00f7f713 andi a4,a5,15
3850: c349 beqz a4,38d2 <pvPortMalloc+0x118>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:152
if( ( xWantedSize + ( portBYTE_ALIGNMENT - ( xWantedSize & portBYTE_ALIGNMENT_MASK ) ) )
3852: ff07f713 andi a4,a5,-16
3856: 0741 addi a4,a4,16
3858: 06e7ec63 bltu a5,a4,38d0 <pvPortMalloc+0x116>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:120
void * pvReturn = NULL;
385c: 4481 li s1,0
385e: a091 j 38a2 <pvPortMalloc+0xe8>
3860: 8722 mv a4,s0
3862: 842e mv s0,a1
3864: a069 j 38ee <pvPortMalloc+0x134>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:211 (discriminator 2)
pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize;
3866: c158 sw a4,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:212 (discriminator 2)
pxBlock->xBlockSize = xWantedSize;
3868: c05c sw a5,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:215 (discriminator 2)
prvInsertBlockIntoFreeList( pxNewBlockLink );
386a: f05ff0ef jal ra,376e <prvInsertBlockIntoFreeList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:222
xFreeBytesRemaining -= pxBlock->xBlockSize;
386e: 4058 lw a4,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:224
if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining )
3870: 200006b7 lui a3,0x20000
3874: 0f068693 addi a3,a3,240 # 200000f0 <xMinimumEverFreeBytesRemaining>
3878: 4290 lw a2,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:222
xFreeBytesRemaining -= pxBlock->xBlockSize;
387a: 40e907b3 sub a5,s2,a4
387e: 00f9a023 sw a5,0(s3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:224
if( xFreeBytesRemaining < xMinimumEverFreeBytesRemaining )
3882: 00c7f363 bgeu a5,a2,3888 <pvPortMalloc+0xce>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:226
xMinimumEverFreeBytesRemaining = xFreeBytesRemaining;
3886: c29c sw a5,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:237
xNumberOfSuccessfulAllocations++;
3888: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:235
pxBlock->xBlockSize |= xBlockAllocatedBit;
388c: 00ea6733 or a4,s4,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:237
xNumberOfSuccessfulAllocations++;
3890: 0f478793 addi a5,a5,244 # 200000f4 <xNumberOfSuccessfulAllocations>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:235
pxBlock->xBlockSize |= xBlockAllocatedBit;
3894: c058 sw a4,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:237
xNumberOfSuccessfulAllocations++;
3896: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:192
pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize );
3898: 04c1 addi s1,s1,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:236
pxBlock->pxNextFreeBlock = NULL;
389a: 00042023 sw zero,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:237
xNumberOfSuccessfulAllocations++;
389e: 0705 addi a4,a4,1
38a0: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:256
( void ) xTaskResumeAll();
38a2: 276010ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:272
configASSERT( ( ( ( size_t ) pvReturn ) & ( size_t ) portBYTE_ALIGNMENT_MASK ) == 0 );
38a6: 00f4f793 andi a5,s1,15
38aa: cbd1 beqz a5,393e <pvPortMalloc+0x184>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:272 (discriminator 1)
38ac: 67a1 lui a5,0x8
38ae: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
38b2: 30079073 csrw mstatus,a5
38b6: 0000d637 lui a2,0xd
38ba: 0000d537 lui a0,0xd
38be: 2bc60613 addi a2,a2,700 # d2bc <MemSize+0x128>
38c2: 11000593 li a1,272
38c6: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
38ca: 1ac090ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:272 (discriminator 6)
38ce: a001 j 38ce <pvPortMalloc+0x114>
38d0: 87ba mv a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:173
if( ( xWantedSize > 0 ) && ( xWantedSize <= xFreeBytesRemaining ) )
38d2: 20000737 lui a4,0x20000
38d6: 0ec72903 lw s2,236(a4) # 200000ec <xFreeBytesRemaining>
38da: 0ec70993 addi s3,a4,236
38de: f6f96fe3 bltu s2,a5,385c <pvPortMalloc+0xa2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:178
pxBlock = xStart.pxNextFreeBlock;
38e2: 20000737 lui a4,0x20000
38e6: 0fc72403 lw s0,252(a4) # 200000fc <xStart>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:177
pxPreviousBlock = &xStart;
38ea: 0fc70713 addi a4,a4,252
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:180
while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock != NULL ) )
38ee: 4050 lw a2,4(s0)
38f0: 00f67463 bgeu a2,a5,38f8 <pvPortMalloc+0x13e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:180 (discriminator 1)
38f4: 400c lw a1,0(s0)
38f6: f5ad bnez a1,3860 <pvPortMalloc+0xa6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:188
if( pxBlock != pxEnd )
38f8: 4294 lw a3,0(a3)
38fa: f68681e3 beq a3,s0,385c <pvPortMalloc+0xa2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:196
pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;
38fe: 4014 lw a3,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:192
pvReturn = ( void * ) ( ( ( uint8_t * ) pxPreviousBlock->pxNextFreeBlock ) + xHeapStructSize );
3900: 4304 lw s1,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:196
pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;
3902: c314 sw a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:200
if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE )
3904: 40f60733 sub a4,a2,a5
3908: 02000693 li a3,32
390c: f6e6f1e3 bgeu a3,a4,386e <pvPortMalloc+0xb4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:206
pxNewBlockLink = ( void * ) ( ( ( uint8_t * ) pxBlock ) + xWantedSize );
3910: 00f40533 add a0,s0,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:207
configASSERT( ( ( ( size_t ) pxNewBlockLink ) & portBYTE_ALIGNMENT_MASK ) == 0 );
3914: 00f57693 andi a3,a0,15
3918: d6b9 beqz a3,3866 <pvPortMalloc+0xac>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:207 (discriminator 1)
391a: 67a1 lui a5,0x8
391c: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3920: 30079073 csrw mstatus,a5
3924: 0000d637 lui a2,0xd
3928: 0000d537 lui a0,0xd
392c: 2bc60613 addi a2,a2,700 # d2bc <MemSize+0x128>
3930: 0cf00593 li a1,207
3934: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3938: 13e090ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:207 (discriminator 4)
393c: a001 j 393c <pvPortMalloc+0x182>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:274
}
393e: 8526 mv a0,s1
3940: 0141 addi sp,sp,16
3942: beffc06f j 530 <__riscv_restore_4>
00003946 <vPortFree>:
vPortFree():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:282
if( pv != NULL )
3946: c15d beqz a0,39ec <vPortFree+0xa6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:278
{
3948: bcffc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:292
configASSERT( ( pxLink->xBlockSize & xBlockAllocatedBit ) != 0 );
394c: 200007b7 lui a5,0x20000
3950: ff452703 lw a4,-12(a0)
3954: 0e87a783 lw a5,232(a5) # 200000e8 <xBlockAllocatedBit>
3958: 842a mv s0,a0
395a: 00f776b3 and a3,a4,a5
395e: e29d bnez a3,3984 <vPortFree+0x3e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:292 (discriminator 1)
3960: 67a1 lui a5,0x8
3962: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3966: 30079073 csrw mstatus,a5
396a: 0000d637 lui a2,0xd
396e: 0000d537 lui a0,0xd
3972: 2bc60613 addi a2,a2,700 # d2bc <MemSize+0x128>
3976: 12400593 li a1,292
397a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
397e: 0f8090ef jal ra,ca76 <printf>
3982: a001 j 3982 <vPortFree+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:293 (discriminator 2)
configASSERT( pxLink->pxNextFreeBlock == NULL );
3984: ff052683 lw a3,-16(a0)
3988: c29d beqz a3,39ae <vPortFree+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:293 (discriminator 1)
398a: 67a1 lui a5,0x8
398c: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3990: 30079073 csrw mstatus,a5
3994: 0000d637 lui a2,0xd
3998: 0000d537 lui a0,0xd
399c: 2bc60613 addi a2,a2,700 # d2bc <MemSize+0x128>
39a0: 12500593 li a1,293
39a4: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
39a8: 0ce090ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:293 (discriminator 2)
39ac: a001 j 39ac <vPortFree+0x66>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:301
pxLink->xBlockSize &= ~xBlockAllocatedBit;
39ae: fff7c793 not a5,a5
39b2: 8ff9 and a5,a5,a4
39b4: fef52a23 sw a5,-12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:303
vTaskSuspendAll();
39b8: 79b000ef jal ra,4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:306
xFreeBytesRemaining += pxLink->xBlockSize;
39bc: 200007b7 lui a5,0x20000
39c0: 0ec78793 addi a5,a5,236 # 200000ec <xFreeBytesRemaining>
39c4: 4394 lw a3,0(a5)
39c6: ff442703 lw a4,-12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:308
prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) );
39ca: ff040513 addi a0,s0,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:306
xFreeBytesRemaining += pxLink->xBlockSize;
39ce: 9736 add a4,a4,a3
39d0: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:308
prvInsertBlockIntoFreeList( ( ( BlockLink_t * ) pxLink ) );
39d2: d9dff0ef jal ra,376e <prvInsertBlockIntoFreeList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:309
xNumberOfSuccessfulFrees++;
39d6: 200007b7 lui a5,0x20000
39da: 0f878793 addi a5,a5,248 # 200000f8 <xNumberOfSuccessfulFrees>
39de: 4398 lw a4,0(a5)
39e0: 0705 addi a4,a4,1
39e2: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:311
( void ) xTaskResumeAll();
39e4: 134010ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/MemMang/heap_4.c:323
}
39e8: b53fc06f j 53a <__riscv_restore_0>
39ec: 8082 ret
000039ee <vPortSetupTimerInterrupt>:
NVIC_SetPriority():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:286
39ee: e000e7b7 lui a5,0xe000e
39f2: 5741 li a4,-16
39f4: 40e78723 sb a4,1038(a5) # e000e40e <__freertos_irq_stack_top+0xbffde40e>
39f8: 40e78623 sb a4,1036(a5)
vPortSetupTimerInterrupt():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:161
/* set software is lowest priority */
NVIC_SetPriority(Software_IRQn,0xf0);
/* set systick is lowest priority */
NVIC_SetPriority(SysTicK_IRQn,0xf0);
SysTick->CTLR= 0;
39fc: e000f7b7 lui a5,0xe000f
3a00: 0007a023 sw zero,0(a5) # e000f000 <__freertos_irq_stack_top+0xbffdf000>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:162
SysTick->SR = 0;
3a04: 0007a223 sw zero,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:163
SysTick->CNT = 0;
3a08: 4681 li a3,0
3a0a: c794 sw a3,8(a5)
3a0c: 4701 li a4,0
3a0e: c7d8 sw a4,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:164
SysTick->CMP = configCPU_CLOCK_HZ/configTICK_RATE_HZ;
3a10: 8101a583 lw a1,-2032(gp) # 20000050 <SystemCoreClock>
3a14: 1f400713 li a4,500
3a18: 4681 li a3,0
3a1a: 02e5d633 divu a2,a1,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:165
SysTick->CTLR= 0xf;
3a1e: 473d li a4,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:164
SysTick->CMP = configCPU_CLOCK_HZ/configTICK_RATE_HZ;
3a20: cb90 sw a2,16(a5)
3a22: cbd4 sw a3,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:165
SysTick->CTLR= 0xf;
3a24: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:166
}
3a26: 8082 ret
00003a28 <xPortStartScheduler>:
xPortStartScheduler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:172
#endif /* ( configMTIME_BASE_ADDRESS != 0 ) && ( configMTIME_BASE_ADDRESS != 0 ) */
/*-----------------------------------------------------------*/
BaseType_t xPortStartScheduler( void )
{
3a28: aeffc2ef jal t0,516 <__riscv_save_0>
3a2c: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:177
extern void xPortStartFirstTask( void );
#if( configASSERT_DEFINED == 1 )
{
volatile uint32_t mtvec = 0;
3a2e: c602 sw zero,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:181
/* Check the least significant two bits of mtvec are 0b11 - indicating
multiply vector mode. */
__asm volatile( "csrr %0, mtvec" : "=r"( mtvec ) );
3a30: 305027f3 csrr a5,mtvec
3a34: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:182
configASSERT( ( mtvec & 0x03UL ) == 0x3 );
3a36: 47b2 lw a5,12(sp)
3a38: 470d li a4,3
3a3a: 8b8d andi a5,a5,3
3a3c: 02e78463 beq a5,a4,3a64 <xPortStartScheduler+0x3c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:182 (discriminator 1)
3a40: 67a1 lui a5,0x8
3a42: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3a46: 30079073 csrw mstatus,a5
3a4a: 0000d637 lui a2,0xd
3a4e: 0000d537 lui a0,0xd
3a52: 30860613 addi a2,a2,776 # d308 <MemSize+0x174>
3a56: 0b600593 li a1,182
3a5a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3a5e: 018090ef jal ra,ca76 <printf>
3a62: a001 j 3a62 <xPortStartScheduler+0x3a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:187 (discriminator 2)
/* Check alignment of the interrupt stack - which is the same as the
stack that was being used by main() prior to the scheduler being
started. */
configASSERT( ( xISRStackTop & portBYTE_ALIGNMENT_MASK ) == 0 );
3a64: 200307b7 lui a5,0x20030
3a68: 00078793 mv a5,a5
3a6c: 8bbd andi a5,a5,15
3a6e: c39d beqz a5,3a94 <xPortStartScheduler+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:187 (discriminator 1)
3a70: 67a1 lui a5,0x8
3a72: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3a76: 30079073 csrw mstatus,a5
3a7a: 0000d637 lui a2,0xd
3a7e: 0000d537 lui a0,0xd
3a82: 30860613 addi a2,a2,776 # d308 <MemSize+0x174>
3a86: 0bb00593 li a1,187
3a8a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3a8e: 7e9080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:187 (discriminator 2)
3a92: a001 j 3a92 <xPortStartScheduler+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:200 (discriminator 2)
#endif /* configASSERT_DEFINED */
/* If there is a CLINT then it is ok to use the default implementation
in this file, otherwise vPortSetupTimerInterrupt() must be implemented to
configure whichever clock is to be used to generate the tick interrupt. */
vPortSetupTimerInterrupt();
3a94: f5bff0ef jal ra,39ee <vPortSetupTimerInterrupt>
NVIC_EnableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:170 (discriminator 2)
NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
3a98: e000e7b7 lui a5,0xe000e
3a9c: 6705 lui a4,0x1
3a9e: 10e7a023 sw a4,256(a5) # e000e100 <__freertos_irq_stack_top+0xbffde100>
3aa2: 6711 lui a4,0x4
3aa4: 10e7a023 sw a4,256(a5)
xPortStartScheduler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:219 (discriminator 2)
NVIC_EnableIRQ(Software_IRQn);
}
#endif /* ( configMTIME_BASE_ADDRESS != 0 ) && ( configMTIMECMP_BASE_ADDRESS != 0 ) */
/* Initialise the critical nesting count ready for the first task. */
uxCriticalNesting = 0;
3aa8: 8001ac23 sw zero,-2024(gp) # 20000058 <uxCriticalNesting>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:220 (discriminator 2)
xPortStartFirstTask();
3aac: 855fc0ef jal ra,300 <xPortStartFirstTask>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:225 (discriminator 2)
/* Should not get here as after calling xPortStartFirstTask() only tasks
should be executing. */
return pdFAIL;
}
3ab0: 4501 li a0,0
3ab2: 0141 addi sp,sp,16
3ab4: a87fc06f j 53a <__riscv_restore_0>
00003ab8 <SysTick_Handler>:
SysTick_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:237
}
/*-----------------------------------------------------------*/
void SysTick_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SysTick_Handler( void )
{
GET_INT_SP();
3ab8: 34011173 csrrw sp,mscratch,sp
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:238
portDISABLE_INTERRUPTS();
3abc: 67a1 lui a5,0x8
3abe: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3ac2: 30079073 csrw mstatus,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:239
SysTick->SR=0;
3ac6: e000f7b7 lui a5,0xe000f
3aca: 0007a223 sw zero,4(a5) # e000f004 <__freertos_irq_stack_top+0xbffdf004>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:240
if( xTaskIncrementTick() != pdFALSE )
3ace: 69f000ef jal ra,496c <xTaskIncrementTick>
3ad2: c511 beqz a0,3ade <SysTick_Handler+0x26>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
NVIC->IPSR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
3ad4: e000e7b7 lui a5,0xe000e
3ad8: 6711 lui a4,0x4
3ada: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
SysTick_Handler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:244
{
portYIELD();
}
portENABLE_INTERRUPTS();
3ade: 67a1 lui a5,0x8
3ae0: 88878793 addi a5,a5,-1912 # 7888 <ip_input+0x14c>
3ae4: 30079073 csrw mstatus,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:245
FREE_INT_SP();
3ae8: 34011173 csrrw sp,mscratch,sp
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:246
}
3aec: 30200073 mret
00003af0 <vPortEnterCritical>:
vPortEnterCritical():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:251
/*-----------------------------------------------------------*/
void vPortEnterCritical( void )
{
portDISABLE_INTERRUPTS();
3af0: 67a1 lui a5,0x8
3af2: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3af6: 30079073 csrw mstatus,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:252
uxCriticalNesting++;
3afa: 81818793 addi a5,gp,-2024 # 20000058 <uxCriticalNesting>
3afe: 4398 lw a4,0(a5)
3b00: 0705 addi a4,a4,1
3b02: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:253
}
3b04: 8082 ret
00003b06 <vPortExitCritical>:
vPortExitCritical():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:258
/*-----------------------------------------------------------*/
void vPortExitCritical( void )
{
configASSERT( uxCriticalNesting );
3b06: 81818713 addi a4,gp,-2024 # 20000058 <uxCriticalNesting>
3b0a: 431c lw a5,0(a4)
3b0c: e78d bnez a5,3b36 <vPortExitCritical+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:257 (discriminator 1)
{
3b0e: a09fc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:258 (discriminator 1)
configASSERT( uxCriticalNesting );
3b12: 67a1 lui a5,0x8
3b14: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3b18: 30079073 csrw mstatus,a5
3b1c: 0000d637 lui a2,0xd
3b20: 0000d537 lui a0,0xd
3b24: 30860613 addi a2,a2,776 # d308 <MemSize+0x174>
3b28: 10200593 li a1,258
3b2c: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3b30: 747080ef jal ra,ca76 <printf>
3b34: a001 j 3b34 <vPortExitCritical+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:259 (discriminator 2)
uxCriticalNesting--;
3b36: 17fd addi a5,a5,-1
3b38: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:261 (discriminator 2)
if( uxCriticalNesting == 0 )
3b3a: e791 bnez a5,3b46 <vPortExitCritical+0x40>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:263
{
portENABLE_INTERRUPTS();
3b3c: 67a1 lui a5,0x8
3b3e: 88878793 addi a5,a5,-1912 # 7888 <ip_input+0x14c>
3b42: 30079073 csrw mstatus,a5
3b46: 8082 ret
00003b48 <xPortSetInterruptMask>:
xPortSetInterruptMask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:270
}
/*-----------------------------------------------------------*/
portUBASE_TYPE xPortSetInterruptMask(void)
{
portUBASE_TYPE uvalue=0;
__asm volatile("csrrw %0, mstatus, %1":"=r"(uvalue):"r"(0x7800));
3b48: 6521 lui a0,0x8
3b4a: 80050513 addi a0,a0,-2048 # 7800 <ip_input+0xc4>
3b4e: 30051573 csrrw a0,mstatus,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:272
return uvalue;
}
3b52: 8082 ret
00003b54 <vPortClearInterruptMask>:
vPortClearInterruptMask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:277
/*-----------------------------------------------------------*/
void vPortClearInterruptMask(portUBASE_TYPE uvalue)
{
__asm volatile("csrw mstatus, %0"::"r"(uvalue));
3b54: 30051073 csrw mstatus,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/portable/GCC/RISC-V/port.c:278
}
3b58: 8082 ret
00003b5a <vListInitialise>:
vListInitialise():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:55
void vListInitialise( List_t * const pxList )
{
/* The list structure contains a list item which is used to mark the
* end of the list. To initialise the list the list end is inserted
* as the only list entry. */
pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
3b5a: 00850793 addi a5,a0,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:59
/* The list end value is the highest possible value in the list to
* ensure it remains at the end of the list. */
pxList->xListEnd.xItemValue = portMAX_DELAY;
3b5e: 577d li a4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:55
pxList->pxIndex = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
3b60: c15c sw a5,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:59
pxList->xListEnd.xItemValue = portMAX_DELAY;
3b62: c518 sw a4,8(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:63
/* The list end next and previous pointers point to itself so we know
* when the list is empty. */
pxList->xListEnd.pxNext = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
3b64: c55c sw a5,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:64
pxList->xListEnd.pxPrevious = ( ListItem_t * ) &( pxList->xListEnd ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
3b66: c91c sw a5,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:66
pxList->uxNumberOfItems = ( UBaseType_t ) 0U;
3b68: 00052023 sw zero,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:72
/* Write known values into the list if
* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
listSET_LIST_INTEGRITY_CHECK_1_VALUE( pxList );
listSET_LIST_INTEGRITY_CHECK_2_VALUE( pxList );
}
3b6c: 8082 ret
00003b6e <vListInitialiseItem>:
vListInitialiseItem():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:78
/*-----------------------------------------------------------*/
void vListInitialiseItem( ListItem_t * const pxItem )
{
/* Make sure the list item is not recorded as being on a list. */
pxItem->pxContainer = NULL;
3b6e: 00052823 sw zero,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:84
/* Write known values into the list item if
* configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
listSET_FIRST_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem );
listSET_SECOND_LIST_ITEM_INTEGRITY_CHECK_VALUE( pxItem );
}
3b72: 8082 ret
00003b74 <vListInsert>:
vListInsert():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:121
void vListInsert( List_t * const pxList,
ListItem_t * const pxNewListItem )
{
ListItem_t * pxIterator;
const TickType_t xValueOfInsertion = pxNewListItem->xItemValue;
3b74: 4198 lw a4,0(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:137
* new list item should be placed after it. This ensures that TCBs which are
* stored in ready lists (all of which have the same xItemValue value) get a
* share of the CPU. However, if the xItemValue is the same as the back marker
* the iteration loop below will not end. Therefore the value is checked
* first, and the algorithm slightly modified if necessary. */
if( xValueOfInsertion == portMAX_DELAY )
3b76: 56fd li a3,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:168
* 5) If the FreeRTOS port supports interrupt nesting then ensure that
* the priority of the tick interrupt is at or below
* configMAX_SYSCALL_INTERRUPT_PRIORITY.
**********************************************************************/
for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */
3b78: 00850793 addi a5,a0,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:137
if( xValueOfInsertion == portMAX_DELAY )
3b7c: 00d71e63 bne a4,a3,3b98 <vListInsert+0x24>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:139
pxIterator = pxList->xListEnd.pxPrevious;
3b80: 491c lw a5,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:175
/* There is nothing to do here, just iterating to the wanted
* insertion position. */
}
}
pxNewListItem->pxNext = pxIterator->pxNext;
3b82: 43d8 lw a4,4(a5)
3b84: c1d8 sw a4,4(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:176
pxNewListItem->pxNext->pxPrevious = pxNewListItem;
3b86: c70c sw a1,8(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:177
pxNewListItem->pxPrevious = pxIterator;
3b88: c59c sw a5,8(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:178
pxIterator->pxNext = pxNewListItem;
3b8a: c3cc sw a1,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:184
/* Remember which list the item is in. This allows fast removal of the
* item later. */
pxNewListItem->pxContainer = pxList;
( pxList->uxNumberOfItems )++;
3b8c: 411c lw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:182
pxNewListItem->pxContainer = pxList;
3b8e: c988 sw a0,16(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:184
( pxList->uxNumberOfItems )++;
3b90: 0785 addi a5,a5,1
3b92: c11c sw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:185
}
3b94: 8082 ret
3b96: 87b6 mv a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:168 (discriminator 1)
for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. *//*lint !e440 The iterator moves to a different value, not xValueOfInsertion. */
3b98: 43d4 lw a3,4(a5)
3b9a: 4290 lw a2,0(a3)
3b9c: fec77de3 bgeu a4,a2,3b96 <vListInsert+0x22>
3ba0: b7cd j 3b82 <vListInsert+0xe>
00003ba2 <uxListRemove>:
uxListRemove():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:194
{
/* The list item knows which list it is in. Obtain the list from the list
* item. */
List_t * const pxList = pxItemToRemove->pxContainer;
pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;
3ba2: 4154 lw a3,4(a0)
3ba4: 4518 lw a4,8(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:192
List_t * const pxList = pxItemToRemove->pxContainer;
3ba6: 491c lw a5,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:194
pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;
3ba8: c698 sw a4,8(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:195
pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;
3baa: c354 sw a3,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:201
/* Only used during decision coverage testing. */
mtCOVERAGE_TEST_DELAY();
/* Make sure the index is left pointing to a valid item. */
if( pxList->pxIndex == pxItemToRemove )
3bac: 43d4 lw a3,4(a5)
3bae: 00a69363 bne a3,a0,3bb4 <uxListRemove+0x12>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:203
{
pxList->pxIndex = pxItemToRemove->pxPrevious;
3bb2: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:211
{
mtCOVERAGE_TEST_MARKER();
}
pxItemToRemove->pxContainer = NULL;
( pxList->uxNumberOfItems )--;
3bb4: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:210
pxItemToRemove->pxContainer = NULL;
3bb6: 00052823 sw zero,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:211
( pxList->uxNumberOfItems )--;
3bba: 177d addi a4,a4,-1
3bbc: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:213
return pxList->uxNumberOfItems;
3bbe: 4388 lw a0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/list.c:214
}
3bc0: 8082 ret
00003bc2 <prvIsQueueEmpty>:
prvIsQueueEmpty():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2385
taskEXIT_CRITICAL();
}
/*-----------------------------------------------------------*/
static BaseType_t prvIsQueueEmpty( const Queue_t * pxQueue )
{
3bc2: 955fc2ef jal t0,516 <__riscv_save_0>
3bc6: 1141 addi sp,sp,-16
3bc8: c62a sw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2388
BaseType_t xReturn;
taskENTER_CRITICAL();
3bca: f27ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2390
{
if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 )
3bce: 4532 lw a0,12(sp)
3bd0: 5d00 lw s0,56(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2399
else
{
xReturn = pdFALSE;
}
}
taskEXIT_CRITICAL();
3bd2: f35ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2402
return xReturn;
}
3bd6: 00143513 seqz a0,s0
3bda: 0141 addi sp,sp,16
3bdc: 95ffc06f j 53a <__riscv_restore_0>
00003be0 <prvCopyDataToQueue>:
prvCopyDataToQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2163
{
3be0: 937fc2ef jal t0,516 <__riscv_save_0>
3be4: 8932 mv s2,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2171
if( pxQueue->uxItemSize == ( UBaseType_t ) 0 )
3be6: 4130 lw a2,64(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2169
uxMessagesWaiting = pxQueue->uxMessagesWaiting;
3be8: 5d04 lw s1,56(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2163
{
3bea: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2171
if( pxQueue->uxItemSize == ( UBaseType_t ) 0 )
3bec: ee09 bnez a2,3c06 <prvCopyDataToQueue+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2175
if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )
3bee: 411c lw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2164
BaseType_t xReturn = pdFALSE;
3bf0: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2175
if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )
3bf2: e791 bnez a5,3bfe <prvCopyDataToQueue+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2178
xReturn = xTaskPriorityDisinherit( pxQueue->u.xSemaphore.xMutexHolder );
3bf4: 4408 lw a0,8(s0)
3bf6: 4ea010ef jal ra,50e0 <xTaskPriorityDisinherit>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2179
pxQueue->u.xSemaphore.xMutexHolder = NULL;
3bfa: 00042423 sw zero,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2237
pxQueue->uxMessagesWaiting = uxMessagesWaiting + ( UBaseType_t ) 1;
3bfe: 0485 addi s1,s1,1
3c00: dc04 sw s1,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2240
}
3c02: 939fc06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2188
else if( xPosition == queueSEND_TO_BACK )
3c06: 02091063 bnez s2,3c26 <prvCopyDataToQueue+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2190
( void ) memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports, plus previous logic ensures a null pointer can only be passed to memcpy() if the copy size is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */
3c0a: 4148 lw a0,4(a0)
3c0c: 2c4090ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2191
pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */
3c10: 405c lw a5,4(s0)
3c12: 4038 lw a4,64(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2164
BaseType_t xReturn = pdFALSE;
3c14: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2191
pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */
3c16: 97ba add a5,a5,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2193
if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */
3c18: 4418 lw a4,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2191
pxQueue->pcWriteTo += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */
3c1a: c05c sw a5,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2193
if( pxQueue->pcWriteTo >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */
3c1c: fee7e1e3 bltu a5,a4,3bfe <prvCopyDataToQueue+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2195
pxQueue->pcWriteTo = pxQueue->pcHead;
3c20: 401c lw a5,0(s0)
3c22: c05c sw a5,4(s0)
3c24: bfe9 j 3bfe <prvCopyDataToQueue+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2204
( void ) memcpy( ( void * ) pxQueue->u.xQueue.pcReadFrom, pvItemToQueue, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e9087 !e418 MISRA exception as the casts are only redundant for some ports. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. Assert checks null pointer only used when length is 0. */
3c26: 4548 lw a0,12(a0)
3c28: 2a8090ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2205
pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize;
3c2c: 403c lw a5,64(s0)
3c2e: 4458 lw a4,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2207
if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */
3c30: 4014 lw a3,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2205
pxQueue->u.xQueue.pcReadFrom -= pxQueue->uxItemSize;
3c32: 40f007b3 neg a5,a5
3c36: 973e add a4,a4,a5
3c38: c458 sw a4,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2207
if( pxQueue->u.xQueue.pcReadFrom < pxQueue->pcHead ) /*lint !e946 MISRA exception justified as comparison of pointers is the cleanest solution. */
3c3a: 00d77563 bgeu a4,a3,3c44 <prvCopyDataToQueue+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2209
pxQueue->u.xQueue.pcReadFrom = ( pxQueue->u.xQueue.pcTail - pxQueue->uxItemSize );
3c3e: 4418 lw a4,8(s0)
3c40: 97ba add a5,a5,a4
3c42: c45c sw a5,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2216
if( xPosition == queueOVERWRITE )
3c44: 4789 li a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2164
BaseType_t xReturn = pdFALSE;
3c46: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2216
if( xPosition == queueOVERWRITE )
3c48: faf91be3 bne s2,a5,3bfe <prvCopyDataToQueue+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2218
if( uxMessagesWaiting > ( UBaseType_t ) 0 )
3c4c: d8cd beqz s1,3bfe <prvCopyDataToQueue+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2224
--uxMessagesWaiting;
3c4e: 14fd addi s1,s1,-1
3c50: b77d j 3bfe <prvCopyDataToQueue+0x1e>
00003c52 <prvCopyDataFromQueue>:
prvCopyDataFromQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2246
if( pxQueue->uxItemSize != ( UBaseType_t ) 0 )
3c52: 4130 lw a2,64(a0)
3c54: c215 beqz a2,3c78 <prvCopyDataFromQueue+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2245
{
3c56: 8c1fc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2248
pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */
3c5a: 4558 lw a4,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2250
if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */
3c5c: 4514 lw a3,8(a0)
3c5e: 87aa mv a5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2248
pxQueue->u.xQueue.pcReadFrom += pxQueue->uxItemSize; /*lint !e9016 Pointer arithmetic on char types ok, especially in this use case where it is the clearest way of conveying intent. */
3c60: 9732 add a4,a4,a2
3c62: c558 sw a4,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2250
if( pxQueue->u.xQueue.pcReadFrom >= pxQueue->u.xQueue.pcTail ) /*lint !e946 MISRA exception justified as use of the relational operator is the cleanest solutions. */
3c64: 00d76463 bltu a4,a3,3c6c <prvCopyDataFromQueue+0x1a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2252
pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead;
3c68: 4118 lw a4,0(a0)
3c6a: c558 sw a4,12(a0)
3c6c: 852e mv a0,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2259
( void ) memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->u.xQueue.pcReadFrom, ( size_t ) pxQueue->uxItemSize ); /*lint !e961 !e418 !e9087 MISRA exception as the casts are only redundant for some ports. Also previous logic ensures a null pointer can only be passed to memcpy() when the count is 0. Cast to void required by function signature and safe as no alignment requirement and copy length specified in bytes. */
3c6e: 47cc lw a1,12(a5)
3c70: 260090ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2261
}
3c74: 8c7fc06f j 53a <__riscv_restore_0>
3c78: 8082 ret
00003c7a <prvUnlockQueue>:
prvUnlockQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2265
{
3c7a: 89dfc2ef jal t0,516 <__riscv_save_0>
3c7e: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2272
taskENTER_CRITICAL();
3c80: e71ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2274
int8_t cTxLock = pxQueue->cTxLock;
3c84: 04544483 lbu s1,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2327
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )
3c88: 02440913 addi s2,s0,36
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2274
int8_t cTxLock = pxQueue->cTxLock;
3c8c: 04e2 slli s1,s1,0x18
3c8e: 84e1 srai s1,s1,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2277
while( cTxLock > queueLOCKED_UNMODIFIED )
3c90: 02904863 bgtz s1,3cc0 <prvUnlockQueue+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2348
pxQueue->cTxLock = queueUNLOCKED;
3c94: 57fd li a5,-1
3c96: 04f402a3 sb a5,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2350
taskEXIT_CRITICAL();
3c9a: e6dff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2353
taskENTER_CRITICAL();
3c9e: e53ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2355
int8_t cRxLock = pxQueue->cRxLock;
3ca2: 04444483 lbu s1,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2361
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )
3ca6: 01040913 addi s2,s0,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2355
int8_t cRxLock = pxQueue->cRxLock;
3caa: 04e2 slli s1,s1,0x18
3cac: 84e1 srai s1,s1,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2357
while( cRxLock > queueLOCKED_UNMODIFIED )
3cae: 02904563 bgtz s1,3cd8 <prvUnlockQueue+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2378
pxQueue->cRxLock = queueUNLOCKED;
3cb2: 57fd li a5,-1
3cb4: 04f40223 sb a5,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2380
taskEXIT_CRITICAL();
3cb8: e4fff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2381
}
3cbc: 87ffc06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2325
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )
3cc0: 505c lw a5,36(s0)
3cc2: dbe9 beqz a5,3c94 <prvUnlockQueue+0x1a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2327
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )
3cc4: 854a mv a0,s2
3cc6: 178010ef jal ra,4e3e <xTaskRemoveFromEventList>
3cca: c119 beqz a0,3cd0 <prvUnlockQueue+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2331
vTaskMissedYield();
3ccc: 33e010ef jal ra,500a <vTaskMissedYield>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2345
--cTxLock;
3cd0: 14fd addi s1,s1,-1
3cd2: 04e2 slli s1,s1,0x18
3cd4: 84e1 srai s1,s1,0x18
3cd6: bf6d j 3c90 <prvUnlockQueue+0x16>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2359
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )
3cd8: 481c lw a5,16(s0)
3cda: dfe1 beqz a5,3cb2 <prvUnlockQueue+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2361
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )
3cdc: 854a mv a0,s2
3cde: 160010ef jal ra,4e3e <xTaskRemoveFromEventList>
3ce2: c119 beqz a0,3ce8 <prvUnlockQueue+0x6e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2363
vTaskMissedYield();
3ce4: 326010ef jal ra,500a <vTaskMissedYield>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2370
--cRxLock;
3ce8: 14fd addi s1,s1,-1
3cea: 04e2 slli s1,s1,0x18
3cec: 84e1 srai s1,s1,0x18
3cee: b7c1 j 3cae <prvUnlockQueue+0x34>
00003cf0 <xQueueGenericReset>:
xQueueGenericReset():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:268
{
3cf0: 827fc2ef jal t0,516 <__riscv_save_0>
3cf4: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:272
configASSERT( pxQueue );
3cf6: e11d bnez a0,3d1c <xQueueGenericReset+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:272 (discriminator 1)
3cf8: 67a1 lui a5,0x8
3cfa: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3cfe: 30079073 csrw mstatus,a5
3d02: 0000d637 lui a2,0xd
3d06: 0000d537 lui a0,0xd
3d0a: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3d0e: 11000593 li a1,272
3d12: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3d16: 561080ef jal ra,ca76 <printf>
3d1a: a001 j 3d1a <xQueueGenericReset+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:275 (discriminator 1)
( pxQueue->uxLength >= 1U ) &&
3d1c: 5d5c lw a5,60(a0)
3d1e: c62e sw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:274 (discriminator 1)
if( ( pxQueue != NULL ) &&
3d20: 842a mv s0,a0
3d22: c7bd beqz a5,3d90 <xQueueGenericReset+0xa0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:277
( ( SIZE_MAX / pxQueue->uxLength ) >= pxQueue->uxItemSize ) )
3d24: 4138 lw a4,64(a0)
3d26: 02e7b7b3 mulhu a5,a5,a4
3d2a: e3bd bnez a5,3d90 <xQueueGenericReset+0xa0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:279
taskENTER_CRITICAL();
3d2c: dc5ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:281
pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3d30: 4030 lw a2,64(s0)
3d32: 5c58 lw a4,60(s0)
3d34: 4014 lw a3,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:282
pxQueue->uxMessagesWaiting = ( UBaseType_t ) 0U;
3d36: 02042c23 sw zero,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:281
pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3d3a: 02e607b3 mul a5,a2,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:288
if( xNewQueue == pdFALSE )
3d3e: 45b2 lw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:283
pxQueue->pcWriteTo = pxQueue->pcHead;
3d40: c054 sw a3,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:281
pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3d42: 00f68733 add a4,a3,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:284
pxQueue->u.xQueue.pcReadFrom = pxQueue->pcHead + ( ( pxQueue->uxLength - 1U ) * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3d46: 8f91 sub a5,a5,a2
3d48: 97b6 add a5,a5,a3
3d4a: c45c sw a5,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:285
pxQueue->cRxLock = queueUNLOCKED;
3d4c: 57fd li a5,-1
3d4e: 04f40223 sb a5,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:281
pxQueue->u.xQueue.pcTail = pxQueue->pcHead + ( pxQueue->uxLength * pxQueue->uxItemSize ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3d52: c418 sw a4,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:286
pxQueue->cTxLock = queueUNLOCKED;
3d54: 04f402a3 sb a5,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:288
if( xNewQueue == pdFALSE )
3d58: e19d bnez a1,3d7e <xQueueGenericReset+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:295
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )
3d5a: 481c lw a5,16(s0)
3d5c: cb99 beqz a5,3d72 <xQueueGenericReset+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:297
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )
3d5e: 01040513 addi a0,s0,16
3d62: 0dc010ef jal ra,4e3e <xTaskRemoveFromEventList>
3d66: c511 beqz a0,3d72 <xQueueGenericReset+0x82>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
3d68: e000e7b7 lui a5,0xe000e
3d6c: 6711 lui a4,0x4
3d6e: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xQueueGenericReset():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:318
taskEXIT_CRITICAL();
3d72: d95ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:330
}
3d76: 4505 li a0,1
3d78: 0141 addi sp,sp,16
3d7a: fc0fc06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:314
vListInitialise( &( pxQueue->xTasksWaitingToSend ) );
3d7e: 01040513 addi a0,s0,16
3d82: dd9ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:315
vListInitialise( &( pxQueue->xTasksWaitingToReceive ) );
3d86: 02440513 addi a0,s0,36
3d8a: dd1ff0ef jal ra,3b5a <vListInitialise>
3d8e: b7d5 j 3d72 <xQueueGenericReset+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:325 (discriminator 1)
configASSERT( xReturn != pdFAIL );
3d90: 67a1 lui a5,0x8
3d92: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3d96: 30079073 csrw mstatus,a5
3d9a: 0000d637 lui a2,0xd
3d9e: 0000d537 lui a0,0xd
3da2: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3da6: 14500593 li a1,325
3daa: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3dae: 4c9080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:325 (discriminator 3)
3db2: a001 j 3db2 <xQueueGenericReset+0xc2>
00003db4 <xQueueGenericCreate>:
xQueueGenericCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:401
{
3db4: f62fc2ef jal t0,516 <__riscv_save_0>
3db8: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:406
if( ( uxQueueLength > ( UBaseType_t ) 0 ) &&
3dba: c131 beqz a0,3dfe <xQueueGenericCreate+0x4a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:408 (discriminator 1)
( ( SIZE_MAX / uxQueueLength ) >= uxItemSize ) &&
3dbc: 02a5b7b3 mulhu a5,a1,a0
3dc0: 84aa mv s1,a0
3dc2: ef95 bnez a5,3dfe <xQueueGenericCreate+0x4a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:410
( ( SIZE_MAX - sizeof( Queue_t ) ) >= ( uxQueueLength * uxItemSize ) ) )
3dc4: 02b50533 mul a0,a0,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:408
( ( SIZE_MAX / uxQueueLength ) >= uxItemSize ) &&
3dc8: fb700793 li a5,-73
3dcc: 02a7e963 bltu a5,a0,3dfe <xQueueGenericCreate+0x4a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:426
pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof( Queue_t ) + xQueueSizeInBytes ); /*lint !e9087 !e9079 see comment above. */
3dd0: 04850513 addi a0,a0,72
3dd4: c62e sw a1,12(sp)
3dd6: 9e5ff0ef jal ra,37ba <pvPortMalloc>
3dda: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:428
if( pxNewQueue != NULL )
3ddc: cd09 beqz a0,3df6 <xQueueGenericCreate+0x42>
prvInitialiseNewQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:474
if( uxItemSize == ( UBaseType_t ) 0 )
3dde: 45b2 lw a1,12(sp)
3de0: 87aa mv a5,a0
3de2: c199 beqz a1,3de8 <xQueueGenericCreate+0x34>
xQueueGenericCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:433
pucQueueStorage += sizeof( Queue_t ); /*lint !e9016 Pointer arithmetic allowed on char types, especially when it assists conveying intent. */
3de4: 04850793 addi a5,a0,72
prvInitialiseNewQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:491
pxNewQueue->uxItemSize = uxItemSize;
3de8: c02c sw a1,64(s0)
3dea: c01c sw a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:490
pxNewQueue->uxLength = uxQueueLength;
3dec: dc44 sw s1,60(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:492
( void ) xQueueGenericReset( pxNewQueue, pdTRUE );
3dee: 4585 li a1,1
3df0: 8522 mv a0,s0
3df2: effff0ef jal ra,3cf0 <xQueueGenericReset>
xQueueGenericCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:459
}
3df6: 8522 mv a0,s0
3df8: 0141 addi sp,sp,16
3dfa: f40fc06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:454 (discriminator 1)
configASSERT( pxNewQueue );
3dfe: 67a1 lui a5,0x8
3e00: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3e04: 30079073 csrw mstatus,a5
3e08: 0000d637 lui a2,0xd
3e0c: 0000d537 lui a0,0xd
3e10: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3e14: 1c600593 li a1,454
3e18: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3e1c: 45b080ef jal ra,ca76 <printf>
3e20: a001 j 3e20 <xQueueGenericCreate+0x6c>
00003e22 <xQueueGenericSend>:
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:809
{
3e22: eccfc2ef jal t0,4ee <__riscv_save_10>
3e26: 1101 addi sp,sp,-32
3e28: c632 sw a2,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:814
configASSERT( pxQueue );
3e2a: e11d bnez a0,3e50 <xQueueGenericSend+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:814 (discriminator 1)
3e2c: 67a1 lui a5,0x8
3e2e: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3e32: 30079073 csrw mstatus,a5
3e36: 0000d637 lui a2,0xd
3e3a: 0000d537 lui a0,0xd
3e3e: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3e42: 32e00593 li a1,814
3e46: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3e4a: 42d080ef jal ra,ca76 <printf>
3e4e: a001 j 3e4e <xQueueGenericSend+0x2c>
3e50: 842a mv s0,a0
3e52: 892e mv s2,a1
3e54: 84b6 mv s1,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:815 (discriminator 2)
configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );
3e56: e58d bnez a1,3e80 <xQueueGenericSend+0x5e>
3e58: 413c lw a5,64(a0)
3e5a: c39d beqz a5,3e80 <xQueueGenericSend+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:815
3e5c: 67a1 lui a5,0x8
3e5e: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3e62: 30079073 csrw mstatus,a5
3e66: 0000d637 lui a2,0xd
3e6a: 0000d537 lui a0,0xd
3e6e: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3e72: 32f00593 li a1,815
3e76: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3e7a: 3fd080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:815 (discriminator 2)
3e7e: a001 j 3e7e <xQueueGenericSend+0x5c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:816 (discriminator 8)
configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) );
3e80: 4789 li a5,2
3e82: 02f49863 bne s1,a5,3eb2 <xQueueGenericSend+0x90>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:816 (discriminator 2)
3e86: 5c58 lw a4,60(s0)
3e88: 4785 li a5,1
3e8a: 02f70463 beq a4,a5,3eb2 <xQueueGenericSend+0x90>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:816
3e8e: 67a1 lui a5,0x8
3e90: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3e94: 30079073 csrw mstatus,a5
3e98: 0000d637 lui a2,0xd
3e9c: 0000d537 lui a0,0xd
3ea0: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3ea4: 33000593 li a1,816
3ea8: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3eac: 3cb080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:816 (discriminator 3)
3eb0: a001 j 3eb0 <xQueueGenericSend+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:819 (discriminator 8)
configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );
3eb2: 164010ef jal ra,5016 <xTaskGetSchedulerState>
3eb6: e515 bnez a0,3ee2 <xQueueGenericSend+0xc0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:819 (discriminator 2)
3eb8: 47b2 lw a5,12(sp)
3eba: 4c01 li s8,0
3ebc: c785 beqz a5,3ee4 <xQueueGenericSend+0xc2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:819
3ebe: 67a1 lui a5,0x8
3ec0: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
3ec4: 30079073 csrw mstatus,a5
3ec8: 0000d637 lui a2,0xd
3ecc: 0000d537 lui a0,0xd
3ed0: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
3ed4: 33300593 li a1,819
3ed8: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
3edc: 39b080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:819 (discriminator 4)
3ee0: a001 j 3ee0 <xQueueGenericSend+0xbe>
3ee2: 4c01 li s8,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:834 (discriminator 8)
if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )
3ee4: 4b09 li s6,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970 (discriminator 8)
prvLockQueue( pxQueue );
3ee6: 59fd li s3,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:978 (discriminator 8)
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait );
3ee8: 01040b93 addi s7,s0,16
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229 (discriminator 8)
3eec: e000ea37 lui s4,0xe000e
3ef0: 6a91 lui s5,0x4
3ef2: a8a5 j 3f6a <xQueueGenericSend+0x148>
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:939
if( xTicksToWait == ( TickType_t ) 0 )
3ef4: 47b2 lw a5,12(sp)
3ef6: e789 bnez a5,3f00 <xQueueGenericSend+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:943
taskEXIT_CRITICAL();
3ef8: c0fff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1011
return errQUEUE_FULL;
3efc: 4501 li a0,0
3efe: a055 j 3fa2 <xQueueGenericSend+0x180>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:950
else if( xEntryTimeSet == pdFALSE )
3f00: 000c1563 bnez s8,3f0a <xQueueGenericSend+0xe8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:954
vTaskInternalSetTimeOutState( &xTimeOut );
3f04: 0828 addi a0,sp,24
3f06: 024010ef jal ra,4f2a <vTaskInternalSetTimeOutState>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:964
taskEXIT_CRITICAL();
3f0a: bfdff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:969
vTaskSuspendAll();
3f0e: 245000ef jal ra,4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970
prvLockQueue( pxQueue );
3f12: bdfff0ef jal ra,3af0 <vPortEnterCritical>
3f16: 04444783 lbu a5,68(s0)
3f1a: 07e2 slli a5,a5,0x18
3f1c: 87e1 srai a5,a5,0x18
3f1e: 01379463 bne a5,s3,3f26 <xQueueGenericSend+0x104>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970 (discriminator 1)
3f22: 04040223 sb zero,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970 (discriminator 3)
3f26: 04544783 lbu a5,69(s0)
3f2a: 07e2 slli a5,a5,0x18
3f2c: 87e1 srai a5,a5,0x18
3f2e: 01379463 bne a5,s3,3f36 <xQueueGenericSend+0x114>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970 (discriminator 4)
3f32: 040402a3 sb zero,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:970 (discriminator 6)
3f36: bd1ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:973 (discriminator 6)
if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )
3f3a: 006c addi a1,sp,12
3f3c: 0828 addi a0,sp,24
3f3e: 002010ef jal ra,4f40 <xTaskCheckForTimeOut>
3f42: ed35 bnez a0,3fbe <xQueueGenericSend+0x19c>
prvIsQueueFull():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2429
static BaseType_t prvIsQueueFull( const Queue_t * pxQueue )
{
BaseType_t xReturn;
taskENTER_CRITICAL();
3f44: badff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2431
{
if( pxQueue->uxMessagesWaiting == pxQueue->uxLength )
3f48: 5c18 lw a4,56(s0)
3f4a: 5c5c lw a5,60(s0)
3f4c: 04f71e63 bne a4,a5,3fa8 <xQueueGenericSend+0x186>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2440
else
{
xReturn = pdFALSE;
}
}
taskEXIT_CRITICAL();
3f50: bb7ff0ef jal ra,3b06 <vPortExitCritical>
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:978
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait );
3f54: 45b2 lw a1,12(sp)
3f56: 855e mv a0,s7
3f58: 629000ef jal ra,4d80 <vTaskPlaceOnEventList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:985
prvUnlockQueue( pxQueue );
3f5c: 8522 mv a0,s0
3f5e: d1dff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:992
if( xTaskResumeAll() == pdFALSE )
3f62: 3b7000ef jal ra,4b18 <xTaskResumeAll>
3f66: c929 beqz a0,3fb8 <xQueueGenericSend+0x196>
3f68: 4c05 li s8,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:828 (discriminator 8)
taskENTER_CRITICAL();
3f6a: b87ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:834 (discriminator 8)
if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )
3f6e: 5c18 lw a4,56(s0)
3f70: 5c5c lw a5,60(s0)
3f72: 00f76463 bltu a4,a5,3f7a <xQueueGenericSend+0x158>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:834 (discriminator 1)
3f76: f7649fe3 bne s1,s6,3ef4 <xQueueGenericSend+0xd2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:900
xYieldRequired = prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
3f7a: 8626 mv a2,s1
3f7c: 85ca mv a1,s2
3f7e: 8522 mv a0,s0
3f80: c61ff0ef jal ra,3be0 <prvCopyDataToQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:904
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )
3f84: 505c lw a5,36(s0)
3f86: c789 beqz a5,3f90 <xQueueGenericSend+0x16e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:906
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )
3f88: 02440513 addi a0,s0,36
3f8c: 6b3000ef jal ra,4e3e <xTaskRemoveFromEventList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:919
else if( xYieldRequired != pdFALSE )
3f90: c511 beqz a0,3f9c <xQueueGenericSend+0x17a>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
3f92: e000e7b7 lui a5,0xe000e
3f96: 6711 lui a4,0x4
3f98: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:934
taskEXIT_CRITICAL();
3f9c: b6bff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:935
return pdPASS;
3fa0: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1014
}
3fa2: 6105 addi sp,sp,32
3fa4: d82fc06f j 526 <__riscv_restore_10>
prvIsQueueFull():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2440
taskEXIT_CRITICAL();
3fa8: b5fff0ef jal ra,3b06 <vPortExitCritical>
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1000
prvUnlockQueue( pxQueue );
3fac: 8522 mv a0,s0
3fae: ccdff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1001
( void ) xTaskResumeAll();
3fb2: 367000ef jal ra,4b18 <xTaskResumeAll>
3fb6: bf4d j 3f68 <xQueueGenericSend+0x146>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
3fb8: 215a2023 sw s5,512(s4) # e000e200 <__freertos_irq_stack_top+0xbffde200>
3fbc: b775 j 3f68 <xQueueGenericSend+0x146>
xQueueGenericSend():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1007
prvUnlockQueue( pxQueue );
3fbe: 8522 mv a0,s0
3fc0: cbbff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1008
( void ) xTaskResumeAll();
3fc4: 355000ef jal ra,4b18 <xTaskResumeAll>
3fc8: bf15 j 3efc <xQueueGenericSend+0xda>
00003fca <xQueueCreateMutex>:
xQueueCreateMutex():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:543
{
3fca: d4cfc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:547
xNewQueue = xQueueGenericCreate( uxMutexLength, uxMutexSize, ucQueueType );
3fce: 862a mv a2,a0
3fd0: 4581 li a1,0
3fd2: 4505 li a0,1
3fd4: de1ff0ef jal ra,3db4 <xQueueGenericCreate>
3fd8: 842a mv s0,a0
prvInitialiseMutex():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:514
if( pxNewQueue != NULL )
3fda: cd01 beqz a0,3ff2 <xQueueCreateMutex+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:520
pxNewQueue->u.xSemaphore.xMutexHolder = NULL;
3fdc: 00052423 sw zero,8(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:521
pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;
3fe0: 00052023 sw zero,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:524
pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0;
3fe4: 00052623 sw zero,12(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:529
( void ) xQueueGenericSend( pxNewQueue, NULL, ( TickType_t ) 0U, queueSEND_TO_BACK );
3fe8: 4681 li a3,0
3fea: 4601 li a2,0
3fec: 4581 li a1,0
3fee: e35ff0ef jal ra,3e22 <xQueueGenericSend>
xQueueCreateMutex():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:551
}
3ff2: 8522 mv a0,s0
3ff4: d46fc06f j 53a <__riscv_restore_0>
00003ff8 <xQueueGenericSendFromISR>:
xQueueGenericSendFromISR():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1021
{
3ff8: d04fc2ef jal t0,4fc <__riscv_save_4>
3ffc: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1026
configASSERT( pxQueue );
3ffe: e11d bnez a0,4024 <xQueueGenericSendFromISR+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1026 (discriminator 1)
4000: 67a1 lui a5,0x8
4002: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4006: 30079073 csrw mstatus,a5
400a: 0000d637 lui a2,0xd
400e: 0000d537 lui a0,0xd
4012: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4016: 40200593 li a1,1026
401a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
401e: 259080ef jal ra,ca76 <printf>
4022: a001 j 4022 <xQueueGenericSendFromISR+0x2a>
4024: 842a mv s0,a0
4026: 89b2 mv s3,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1027 (discriminator 2)
configASSERT( !( ( pvItemToQueue == NULL ) && ( pxQueue->uxItemSize != ( UBaseType_t ) 0U ) ) );
4028: e58d bnez a1,4052 <xQueueGenericSendFromISR+0x5a>
402a: 413c lw a5,64(a0)
402c: c39d beqz a5,4052 <xQueueGenericSendFromISR+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1027
402e: 67a1 lui a5,0x8
4030: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4034: 30079073 csrw mstatus,a5
4038: 0000d637 lui a2,0xd
403c: 0000d537 lui a0,0xd
4040: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4044: 40300593 li a1,1027
4048: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
404c: 22b080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1027 (discriminator 2)
4050: a001 j 4050 <xQueueGenericSendFromISR+0x58>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1028 (discriminator 8)
configASSERT( !( ( xCopyPosition == queueOVERWRITE ) && ( pxQueue->uxLength != 1 ) ) );
4052: 4789 li a5,2
4054: 02f69863 bne a3,a5,4084 <xQueueGenericSendFromISR+0x8c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1028 (discriminator 2)
4058: 5c58 lw a4,60(s0)
405a: 4785 li a5,1
405c: 02f70463 beq a4,a5,4084 <xQueueGenericSendFromISR+0x8c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1028
4060: 67a1 lui a5,0x8
4062: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4066: 30079073 csrw mstatus,a5
406a: 0000d637 lui a2,0xd
406e: 0000d537 lui a0,0xd
4072: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4076: 40400593 li a1,1028
407a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
407e: 1f9080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1028 (discriminator 3)
4082: a001 j 4082 <xQueueGenericSendFromISR+0x8a>
4084: c636 sw a3,12(sp)
4086: c42e sw a1,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1051 (discriminator 8)
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
4088: ac1ff0ef jal ra,3b48 <xPortSetInterruptMask>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1053 (discriminator 8)
if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )
408c: 5c18 lw a4,56(s0)
408e: 5c5c lw a5,60(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1051 (discriminator 8)
uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();
4090: 8a2a mv s4,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1053 (discriminator 8)
if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )
4092: 45a2 lw a1,8(sp)
4094: 46b2 lw a3,12(sp)
4096: 00f76663 bltu a4,a5,40a2 <xQueueGenericSendFromISR+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1053 (discriminator 1)
409a: 4789 li a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1175 (discriminator 1)
xReturn = errQUEUE_FULL;
409c: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1053 (discriminator 1)
if( ( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) || ( xCopyPosition == queueOVERWRITE ) )
409e: 02f69363 bne a3,a5,40c4 <xQueueGenericSendFromISR+0xcc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1055
const int8_t cTxLock = pxQueue->cTxLock;
40a2: 04544483 lbu s1,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1056
const UBaseType_t uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting;
40a6: 5c1c lw a5,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1065
( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
40a8: 8636 mv a2,a3
40aa: 8522 mv a0,s0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1055
const int8_t cTxLock = pxQueue->cTxLock;
40ac: 01849913 slli s2,s1,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1065
( void ) prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
40b0: b31ff0ef jal ra,3be0 <prvCopyDataToQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1055
const int8_t cTxLock = pxQueue->cTxLock;
40b4: 41895913 srai s2,s2,0x18
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1069
if( cTxLock == queueUNLOCKED )
40b8: 57fd li a5,-1
40ba: 02f91763 bne s2,a5,40e8 <xQueueGenericSendFromISR+0xf0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1131
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) == pdFALSE )
40be: 505c lw a5,36(s0)
40c0: eb89 bnez a5,40d2 <xQueueGenericSendFromISR+0xda>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1170 (discriminator 2)
xReturn = pdPASS;
40c2: 4485 li s1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1178
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );
40c4: 8552 mv a0,s4
40c6: a8fff0ef jal ra,3b54 <vPortClearInterruptMask>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1181
}
40ca: 8526 mv a0,s1
40cc: 0141 addi sp,sp,16
40ce: c62fc06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1133
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )
40d2: 02440513 addi a0,s0,36
40d6: 569000ef jal ra,4e3e <xTaskRemoveFromEventList>
40da: d565 beqz a0,40c2 <xQueueGenericSendFromISR+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1137
if( pxHigherPriorityTaskWoken != NULL )
40dc: fe0983e3 beqz s3,40c2 <xQueueGenericSendFromISR+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1139
*pxHigherPriorityTaskWoken = pdTRUE;
40e0: 4785 li a5,1
40e2: 00f9a023 sw a5,0(s3)
40e6: bff1 j 40c2 <xQueueGenericSendFromISR+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1165
configASSERT( cTxLock != queueINT8_MAX );
40e8: 07f00793 li a5,127
40ec: 02f91463 bne s2,a5,4114 <xQueueGenericSendFromISR+0x11c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1165 (discriminator 1)
40f0: 67a1 lui a5,0x8
40f2: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
40f6: 30079073 csrw mstatus,a5
40fa: 0000d637 lui a2,0xd
40fe: 0000d537 lui a0,0xd
4102: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4106: 48d00593 li a1,1165
410a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
410e: 169080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1165 (discriminator 6)
4112: a001 j 4112 <xQueueGenericSendFromISR+0x11a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1167 (discriminator 2)
pxQueue->cTxLock = ( int8_t ) ( cTxLock + 1 );
4114: 0485 addi s1,s1,1
4116: 04e2 slli s1,s1,0x18
4118: 84e1 srai s1,s1,0x18
411a: 049402a3 sb s1,69(s0)
411e: b755 j 40c2 <xQueueGenericSendFromISR+0xca>
00004120 <xQueueReceive>:
xQueueReceive():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1355
{
4120: bcefc2ef jal t0,4ee <__riscv_save_10>
4124: 1101 addi sp,sp,-32
4126: c632 sw a2,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1361
configASSERT( ( pxQueue ) );
4128: e11d bnez a0,414e <xQueueReceive+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1361 (discriminator 1)
412a: 67a1 lui a5,0x8
412c: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4130: 30079073 csrw mstatus,a5
4134: 0000d637 lui a2,0xd
4138: 0000d537 lui a0,0xd
413c: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4140: 55100593 li a1,1361
4144: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4148: 12f080ef jal ra,ca76 <printf>
414c: a001 j 414c <xQueueReceive+0x2c>
414e: 842a mv s0,a0
4150: 89ae mv s3,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1365 (discriminator 2)
configASSERT( !( ( ( pvBuffer ) == NULL ) && ( ( pxQueue )->uxItemSize != ( UBaseType_t ) 0U ) ) );
4152: e58d bnez a1,417c <xQueueReceive+0x5c>
4154: 413c lw a5,64(a0)
4156: c39d beqz a5,417c <xQueueReceive+0x5c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1365
4158: 67a1 lui a5,0x8
415a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
415e: 30079073 csrw mstatus,a5
4162: 0000d637 lui a2,0xd
4166: 0000d537 lui a0,0xd
416a: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
416e: 55500593 li a1,1365
4172: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4176: 101080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1365 (discriminator 2)
417a: a001 j 417a <xQueueReceive+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1370 (discriminator 8)
configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );
417c: 69b000ef jal ra,5016 <xTaskGetSchedulerState>
4180: e515 bnez a0,41ac <xQueueReceive+0x8c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1370 (discriminator 2)
4182: 47b2 lw a5,12(sp)
4184: 4901 li s2,0
4186: c785 beqz a5,41ae <xQueueReceive+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1370
4188: 67a1 lui a5,0x8
418a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
418e: 30079073 csrw mstatus,a5
4192: 0000d637 lui a2,0xd
4196: 0000d537 lui a0,0xd
419a: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
419e: 55a00593 li a1,1370
41a2: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
41a6: 0d1080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1370 (discriminator 3)
41aa: a001 j 41aa <xQueueReceive+0x8a>
41ac: 4901 li s2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444 (discriminator 8)
prvLockQueue( pxQueue );
41ae: 5a7d li s4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1454 (discriminator 8)
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
41b0: 02440a93 addi s5,s0,36
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229 (discriminator 8)
41b4: e000eb37 lui s6,0xe000e
41b8: 6b91 lui s7,0x4
41ba: a895 j 422e <xQueueReceive+0x10e>
xQueueReceive():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1416
if( xTicksToWait == ( TickType_t ) 0 )
41bc: 47b2 lw a5,12(sp)
41be: e789 bnez a5,41c8 <xQueueReceive+0xa8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1420
taskEXIT_CRITICAL();
41c0: 947ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1484
return errQUEUE_EMPTY;
41c4: 4501 li a0,0
41c6: a869 j 4260 <xQueueReceive+0x140>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1424
else if( xEntryTimeSet == pdFALSE )
41c8: 00091563 bnez s2,41d2 <xQueueReceive+0xb2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1428
vTaskInternalSetTimeOutState( &xTimeOut );
41cc: 0828 addi a0,sp,24
41ce: 55d000ef jal ra,4f2a <vTaskInternalSetTimeOutState>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1438
taskEXIT_CRITICAL();
41d2: 935ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1443
vTaskSuspendAll();
41d6: 77c000ef jal ra,4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444
prvLockQueue( pxQueue );
41da: 917ff0ef jal ra,3af0 <vPortEnterCritical>
41de: 04444783 lbu a5,68(s0)
41e2: 07e2 slli a5,a5,0x18
41e4: 87e1 srai a5,a5,0x18
41e6: 01479463 bne a5,s4,41ee <xQueueReceive+0xce>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444 (discriminator 1)
41ea: 04040223 sb zero,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444 (discriminator 3)
41ee: 04544783 lbu a5,69(s0)
41f2: 07e2 slli a5,a5,0x18
41f4: 87e1 srai a5,a5,0x18
41f6: 01479463 bne a5,s4,41fe <xQueueReceive+0xde>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444 (discriminator 4)
41fa: 040402a3 sb zero,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1444 (discriminator 6)
41fe: 909ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1447 (discriminator 6)
if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )
4202: 006c addi a1,sp,12
4204: 0828 addi a0,sp,24
4206: 53b000ef jal ra,4f40 <xTaskCheckForTimeOut>
420a: e525 bnez a0,4272 <xQueueReceive+0x152>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1451
if( prvIsQueueEmpty( pxQueue ) != pdFALSE )
420c: 8522 mv a0,s0
420e: 9b5ff0ef jal ra,3bc2 <prvIsQueueEmpty>
4212: c931 beqz a0,4266 <xQueueReceive+0x146>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1454
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
4214: 45b2 lw a1,12(sp)
4216: 8556 mv a0,s5
4218: 369000ef jal ra,4d80 <vTaskPlaceOnEventList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1455
prvUnlockQueue( pxQueue );
421c: 8522 mv a0,s0
421e: a5dff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1457
if( xTaskResumeAll() == pdFALSE )
4222: 0f7000ef jal ra,4b18 <xTaskResumeAll>
4226: e119 bnez a0,422c <xQueueReceive+0x10c>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4228: 217b2023 sw s7,512(s6) # e000e200 <__freertos_irq_stack_top+0xbffde200>
422c: 4905 li s2,1
xQueueReceive():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1379 (discriminator 8)
taskENTER_CRITICAL();
422e: 8c3ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1381 (discriminator 8)
const UBaseType_t uxMessagesWaiting = pxQueue->uxMessagesWaiting;
4232: 5c04 lw s1,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1385 (discriminator 8)
if( uxMessagesWaiting > ( UBaseType_t ) 0 )
4234: d4c1 beqz s1,41bc <xQueueReceive+0x9c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1388
prvCopyDataFromQueue( pxQueue, pvBuffer );
4236: 85ce mv a1,s3
4238: 8522 mv a0,s0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1390
pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1;
423a: 14fd addi s1,s1,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1388
prvCopyDataFromQueue( pxQueue, pvBuffer );
423c: a17ff0ef jal ra,3c52 <prvCopyDataFromQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1390
pxQueue->uxMessagesWaiting = uxMessagesWaiting - ( UBaseType_t ) 1;
4240: dc04 sw s1,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1395
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )
4242: 481c lw a5,16(s0)
4244: cb99 beqz a5,425a <xQueueReceive+0x13a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1397
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )
4246: 01040513 addi a0,s0,16
424a: 3f5000ef jal ra,4e3e <xTaskRemoveFromEventList>
424e: c511 beqz a0,425a <xQueueReceive+0x13a>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4250: e000e7b7 lui a5,0xe000e
4254: 6711 lui a4,0x4
4256: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xQueueReceive():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1411
taskEXIT_CRITICAL();
425a: 8adff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1412
return pdPASS;
425e: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1492
}
4260: 6105 addi sp,sp,32
4262: ac4fc06f j 526 <__riscv_restore_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1470
prvUnlockQueue( pxQueue );
4266: 8522 mv a0,s0
4268: a13ff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1471
( void ) xTaskResumeAll();
426c: 0ad000ef jal ra,4b18 <xTaskResumeAll>
4270: bf75 j 422c <xQueueReceive+0x10c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1478
prvUnlockQueue( pxQueue );
4272: 8522 mv a0,s0
4274: a07ff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1479
( void ) xTaskResumeAll();
4278: 0a1000ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1481
if( prvIsQueueEmpty( pxQueue ) != pdFALSE )
427c: 8522 mv a0,s0
427e: 945ff0ef jal ra,3bc2 <prvIsQueueEmpty>
4282: d54d beqz a0,422c <xQueueReceive+0x10c>
4284: b781 j 41c4 <xQueueReceive+0xa4>
00004286 <xQueueSemaphoreTake>:
xQueueSemaphoreTake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1497
{
4286: a76fc2ef jal t0,4fc <__riscv_save_4>
428a: 1101 addi sp,sp,-32
428c: c62e sw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1507
configASSERT( ( pxQueue ) );
428e: e11d bnez a0,42b4 <xQueueSemaphoreTake+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1507 (discriminator 1)
4290: 67a1 lui a5,0x8
4292: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4296: 30079073 csrw mstatus,a5
429a: 0000d637 lui a2,0xd
429e: 0000d537 lui a0,0xd
42a2: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
42a6: 5e300593 li a1,1507
42aa: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
42ae: 7c8080ef jal ra,ca76 <printf>
42b2: a001 j 42b2 <xQueueSemaphoreTake+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1511 (discriminator 2)
configASSERT( pxQueue->uxItemSize == 0 );
42b4: 413c lw a5,64(a0)
42b6: 842a mv s0,a0
42b8: c39d beqz a5,42de <xQueueSemaphoreTake+0x58>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1511 (discriminator 1)
42ba: 67a1 lui a5,0x8
42bc: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
42c0: 30079073 csrw mstatus,a5
42c4: 0000d637 lui a2,0xd
42c8: 0000d537 lui a0,0xd
42cc: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
42d0: 5e700593 li a1,1511
42d4: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
42d8: 79e080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1511 (discriminator 2)
42dc: a001 j 42dc <xQueueSemaphoreTake+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1516 (discriminator 2)
configASSERT( !( ( xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED ) && ( xTicksToWait != 0 ) ) );
42de: 539000ef jal ra,5016 <xTaskGetSchedulerState>
42e2: e50d bnez a0,430c <xQueueSemaphoreTake+0x86>
42e4: 47b2 lw a5,12(sp)
42e6: c39d beqz a5,430c <xQueueSemaphoreTake+0x86>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1516
42e8: 67a1 lui a5,0x8
42ea: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
42ee: 30079073 csrw mstatus,a5
42f2: 0000d637 lui a2,0xd
42f6: 0000d537 lui a0,0xd
42fa: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
42fe: 5ec00593 li a1,1516
4302: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4306: 770080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1516 (discriminator 3)
430a: a001 j 430a <xQueueSemaphoreTake+0x84>
430c: 4481 li s1,0
430e: 4901 li s2,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616
prvLockQueue( pxQueue );
4310: 59fd li s3,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1646
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
4312: 02440a13 addi s4,s0,36
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4316: e000eab7 lui s5,0xe000e
431a: 6b11 lui s6,0x4
431c: a06d j 43c6 <xQueueSemaphoreTake+0x140>
xQueueSemaphoreTake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1579
if( xTicksToWait == ( TickType_t ) 0 )
431e: 47b2 lw a5,12(sp)
4320: e79d bnez a5,434e <xQueueSemaphoreTake+0xc8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1586
configASSERT( xInheritanceOccurred == pdFALSE );
4322: c09d beqz s1,4348 <xQueueSemaphoreTake+0xc2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1586 (discriminator 1)
4324: 67a1 lui a5,0x8
4326: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
432a: 30079073 csrw mstatus,a5
432e: 0000d637 lui a2,0xd
4332: 0000d537 lui a0,0xd
4336: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
433a: 63200593 li a1,1586
433e: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4342: 734080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1586 (discriminator 4)
4346: a001 j 4346 <xQueueSemaphoreTake+0xc0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1592 (discriminator 2)
taskEXIT_CRITICAL();
4348: fbeff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1594 (discriminator 2)
return errQUEUE_EMPTY;
434c: a07d j 43fa <xQueueSemaphoreTake+0x174>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1596
else if( xEntryTimeSet == pdFALSE )
434e: 00091563 bnez s2,4358 <xQueueSemaphoreTake+0xd2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1600
vTaskInternalSetTimeOutState( &xTimeOut );
4352: 0828 addi a0,sp,24
4354: 3d7000ef jal ra,4f2a <vTaskInternalSetTimeOutState>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1610
taskEXIT_CRITICAL();
4358: faeff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1615
vTaskSuspendAll();
435c: 2bdd jal 4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616
prvLockQueue( pxQueue );
435e: f92ff0ef jal ra,3af0 <vPortEnterCritical>
4362: 04444783 lbu a5,68(s0)
4366: 07e2 slli a5,a5,0x18
4368: 87e1 srai a5,a5,0x18
436a: 01379463 bne a5,s3,4372 <xQueueSemaphoreTake+0xec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616 (discriminator 1)
436e: 04040223 sb zero,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616 (discriminator 3)
4372: 04544783 lbu a5,69(s0)
4376: 07e2 slli a5,a5,0x18
4378: 87e1 srai a5,a5,0x18
437a: 01379463 bne a5,s3,4382 <xQueueSemaphoreTake+0xfc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616 (discriminator 4)
437e: 040402a3 sb zero,69(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1616 (discriminator 6)
4382: f84ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1619 (discriminator 6)
if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )
4386: 006c addi a1,sp,12
4388: 0828 addi a0,sp,24
438a: 3b7000ef jal ra,4f40 <xTaskCheckForTimeOut>
438e: e141 bnez a0,440e <xQueueSemaphoreTake+0x188>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1625
if( prvIsQueueEmpty( pxQueue ) != pdFALSE )
4390: 8522 mv a0,s0
4392: 831ff0ef jal ra,3bc2 <prvIsQueueEmpty>
4396: c535 beqz a0,4402 <xQueueSemaphoreTake+0x17c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1631
if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )
4398: 401c lw a5,0(s0)
439a: eb89 bnez a5,43ac <xQueueSemaphoreTake+0x126>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1633
taskENTER_CRITICAL();
439c: f54ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1635
xInheritanceOccurred = xTaskPriorityInherit( pxQueue->u.xSemaphore.xMutexHolder );
43a0: 4408 lw a0,8(s0)
43a2: 491000ef jal ra,5032 <xTaskPriorityInherit>
43a6: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1637
taskEXIT_CRITICAL();
43a8: f5eff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1646
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
43ac: 45b2 lw a1,12(sp)
43ae: 8552 mv a0,s4
43b0: 1d1000ef jal ra,4d80 <vTaskPlaceOnEventList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1647
prvUnlockQueue( pxQueue );
43b4: 8522 mv a0,s0
43b6: 8c5ff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1649
if( xTaskResumeAll() == pdFALSE )
43ba: 75e000ef jal ra,4b18 <xTaskResumeAll>
43be: e119 bnez a0,43c4 <xQueueSemaphoreTake+0x13e>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
43c0: 216aa023 sw s6,512(s5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
43c4: 4905 li s2,1
xQueueSemaphoreTake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1525 (discriminator 8)
taskENTER_CRITICAL();
43c6: f2aff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1529 (discriminator 8)
const UBaseType_t uxSemaphoreCount = pxQueue->uxMessagesWaiting;
43ca: 5c1c lw a5,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1533 (discriminator 8)
if( uxSemaphoreCount > ( UBaseType_t ) 0 )
43cc: dba9 beqz a5,431e <xQueueSemaphoreTake+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1539
pxQueue->uxMessagesWaiting = uxSemaphoreCount - ( UBaseType_t ) 1;
43ce: 17fd addi a5,a5,-1
43d0: dc1c sw a5,56(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1543
if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )
43d2: 401c lw a5,0(s0)
43d4: e781 bnez a5,43dc <xQueueSemaphoreTake+0x156>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1547
pxQueue->u.xSemaphore.xMutexHolder = pvTaskIncrementMutexHeldCount();
43d6: 6bb000ef jal ra,5290 <pvTaskIncrementMutexHeldCount>
43da: c408 sw a0,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1558
if( listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) == pdFALSE )
43dc: 481c lw a5,16(s0)
43de: cb99 beqz a5,43f4 <xQueueSemaphoreTake+0x16e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1560
if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )
43e0: 01040513 addi a0,s0,16
43e4: 25b000ef jal ra,4e3e <xTaskRemoveFromEventList>
43e8: c511 beqz a0,43f4 <xQueueSemaphoreTake+0x16e>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
43ea: e000e7b7 lui a5,0xe000e
43ee: 6711 lui a4,0x4
43f0: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xQueueSemaphoreTake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1574
taskEXIT_CRITICAL();
43f4: f12ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1575
return pdPASS;
43f8: 4485 li s1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1711
}
43fa: 8526 mv a0,s1
43fc: 6105 addi sp,sp,32
43fe: 932fc06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1662
prvUnlockQueue( pxQueue );
4402: 8522 mv a0,s0
4404: 877ff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1663
( void ) xTaskResumeAll();
4408: 710000ef jal ra,4b18 <xTaskResumeAll>
440c: bf65 j 43c4 <xQueueSemaphoreTake+0x13e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1669
prvUnlockQueue( pxQueue );
440e: 8522 mv a0,s0
4410: 86bff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1670
( void ) xTaskResumeAll();
4414: 704000ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1676
if( prvIsQueueEmpty( pxQueue ) != pdFALSE )
4418: 8522 mv a0,s0
441a: fa8ff0ef jal ra,3bc2 <prvIsQueueEmpty>
441e: d15d beqz a0,43c4 <xQueueSemaphoreTake+0x13e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1683
if( xInheritanceOccurred != pdFALSE )
4420: dce9 beqz s1,43fa <xQueueSemaphoreTake+0x174>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1685
taskENTER_CRITICAL();
4422: eceff0ef jal ra,3af0 <vPortEnterCritical>
prvGetDisinheritPriorityAfterTimeout():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2145
if( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U )
4426: 505c lw a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2151
uxHighestPriorityOfWaitingTasks = tskIDLE_PRIORITY;
4428: 4581 li a1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2145
if( listCURRENT_LIST_LENGTH( &( pxQueue->xTasksWaitingToReceive ) ) > 0U )
442a: c789 beqz a5,4434 <xQueueSemaphoreTake+0x1ae>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2147
uxHighestPriorityOfWaitingTasks = ( UBaseType_t ) configMAX_PRIORITIES - ( UBaseType_t ) listGET_ITEM_VALUE_OF_HEAD_ENTRY( &( pxQueue->xTasksWaitingToReceive ) );
442c: 581c lw a5,48(s0)
442e: 45bd li a1,15
4430: 439c lw a5,0(a5)
4432: 8d9d sub a1,a1,a5
xQueueSemaphoreTake():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1695
vTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority );
4434: 4408 lw a0,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1703
return errQUEUE_EMPTY;
4436: 4481 li s1,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1695
vTaskPriorityDisinheritAfterTimeout( pxQueue->u.xSemaphore.xMutexHolder, uxHighestWaitingPriority );
4438: 573000ef jal ra,51aa <vTaskPriorityDisinheritAfterTimeout>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:1697
taskEXIT_CRITICAL();
443c: ecaff0ef jal ra,3b06 <vPortExitCritical>
4440: bf6d j 43fa <xQueueSemaphoreTake+0x174>
00004442 <vQueueAddToRegistry>:
vQueueAddToRegistry():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2760
void vQueueAddToRegistry( QueueHandle_t xQueue,
const char * pcQueueName ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
{
UBaseType_t ux;
configASSERT( xQueue );
4442: e515 bnez a0,446e <vQueueAddToRegistry+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2757 (discriminator 1)
{
4444: 8d2fc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2760 (discriminator 1)
configASSERT( xQueue );
4448: 67a1 lui a5,0x8
444a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
444e: 30079073 csrw mstatus,a5
4452: 0000d637 lui a2,0xd
4456: 6585 lui a1,0x1
4458: 0000d537 lui a0,0xd
445c: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4460: ac858593 addi a1,a1,-1336 # ac8 <main+0x1a2>
4464: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4468: 60e080ef jal ra,ca76 <printf>
446c: a001 j 446c <vQueueAddToRegistry+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2764 (discriminator 2)
QueueRegistryItem_t * pxEntryToWrite = NULL;
if( pcQueueName != NULL )
446e: cd9d beqz a1,44ac <vQueueAddToRegistry+0x6a>
4470: 20015637 lui a2,0x20015
4474: 51060693 addi a3,a2,1296 # 20015510 <xQueueRegistry>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2762
QueueRegistryItem_t * pxEntryToWrite = NULL;
4478: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2768
{
/* See if there is an empty space in the registry. A NULL name denotes
* a free slot. */
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
447a: 4701 li a4,0
447c: 51060613 addi a2,a2,1296
4480: 4821 li a6,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2771
{
/* Replace an existing entry if the queue is already in the registry. */
if( xQueue == xQueueRegistry[ ux ].xHandle )
4482: 0046a883 lw a7,4(a3)
4486: 00a89863 bne a7,a0,4496 <vQueueAddToRegistry+0x54>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2773
{
pxEntryToWrite = &( xQueueRegistry[ ux ] );
448a: 00371793 slli a5,a4,0x3
448e: 97b2 add a5,a5,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2791
}
if( pxEntryToWrite != NULL )
{
/* Store the information on this queue. */
pxEntryToWrite->pcQueueName = pcQueueName;
4490: c38c sw a1,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2792
pxEntryToWrite->xHandle = xQueue;
4492: c3c8 sw a0,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2796
traceQUEUE_REGISTRY_ADD( xQueue, pcQueueName );
}
}
4494: a821 j 44ac <vQueueAddToRegistry+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2777
else if( ( pxEntryToWrite == NULL ) && ( xQueueRegistry[ ux ].pcQueueName == NULL ) )
4496: e791 bnez a5,44a2 <vQueueAddToRegistry+0x60>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2777 (discriminator 1)
4498: 0006a883 lw a7,0(a3)
449c: 00089363 bnez a7,44a2 <vQueueAddToRegistry+0x60>
44a0: 87b6 mv a5,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2768 (discriminator 2)
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
44a2: 0705 addi a4,a4,1
44a4: 06a1 addi a3,a3,8
44a6: fd071ee3 bne a4,a6,4482 <vQueueAddToRegistry+0x40>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2788
if( pxEntryToWrite != NULL )
44aa: f3fd bnez a5,4490 <vQueueAddToRegistry+0x4e>
44ac: 8082 ret
000044ae <vQueueUnregisterQueue>:
vQueueUnregisterQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2838
void vQueueUnregisterQueue( QueueHandle_t xQueue )
{
UBaseType_t ux;
configASSERT( xQueue );
44ae: e515 bnez a0,44da <vQueueUnregisterQueue+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2835
{
44b0: 866fc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2838
configASSERT( xQueue );
44b4: 67a1 lui a5,0x8
44b6: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
44ba: 30079073 csrw mstatus,a5
44be: 0000d637 lui a2,0xd
44c2: 6585 lui a1,0x1
44c4: 0000d537 lui a0,0xd
44c8: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
44cc: b1658593 addi a1,a1,-1258 # b16 <main+0x1f0>
44d0: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
44d4: 5a2080ef jal ra,ca76 <printf>
44d8: a001 j 44d8 <vQueueUnregisterQueue+0x2a>
44da: 200157b7 lui a5,0x20015
44de: 51078693 addi a3,a5,1296 # 20015510 <xQueueRegistry>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2842
/* See if the handle of the queue being unregistered in actually in the
* registry. */
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
44e2: 4701 li a4,0
44e4: 51078793 addi a5,a5,1296
44e8: 4621 li a2,8
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2844
{
if( xQueueRegistry[ ux ].xHandle == xQueue )
44ea: 42cc lw a1,4(a3)
44ec: 00a59963 bne a1,a0,44fe <vQueueUnregisterQueue+0x50>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2847
{
/* Set the name to NULL to show that this slot if free again. */
xQueueRegistry[ ux ].pcQueueName = NULL;
44f0: 070e slli a4,a4,0x3
44f2: 97ba add a5,a5,a4
44f4: 0007a023 sw zero,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2852
/* Set the handle to NULL to ensure the same queue handle cannot
* appear in the registry twice if it is added, removed, then
* added again. */
xQueueRegistry[ ux ].xHandle = ( QueueHandle_t ) 0;
44f8: 0007a223 sw zero,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2853
break;
44fc: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2842 (discriminator 2)
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
44fe: 0705 addi a4,a4,1
4500: 06a1 addi a3,a3,8
4502: fec714e3 bne a4,a2,44ea <vQueueUnregisterQueue+0x3c>
4506: 8082 ret
00004508 <vQueueDelete>:
vQueueDelete():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2061
{
4508: 80efc2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2064
configASSERT( pxQueue );
450c: e505 bnez a0,4534 <vQueueDelete+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2064 (discriminator 1)
450e: 67a1 lui a5,0x8
4510: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4514: 30079073 csrw mstatus,a5
4518: 0000d637 lui a2,0xd
451c: 6585 lui a1,0x1
451e: 0000d537 lui a0,0xd
4522: 33060613 addi a2,a2,816 # d330 <MemSize+0x19c>
4526: 81058593 addi a1,a1,-2032 # 810 <__stack_size+0x10>
452a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
452e: 548080ef jal ra,ca76 <printf>
4532: a001 j 4532 <vQueueDelete+0x2a>
4534: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2069 (discriminator 2)
vQueueUnregisterQueue( pxQueue );
4536: f79ff0ef jal ra,44ae <vQueueUnregisterQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2077 (discriminator 2)
vPortFree( pxQueue );
453a: 8522 mv a0,s0
453c: c0aff0ef jal ra,3946 <vPortFree>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2099 (discriminator 2)
}
4540: ffbfb06f j 53a <__riscv_restore_0>
00004544 <vQueueWaitForMessageRestricted>:
vQueueWaitForMessageRestricted():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2870
#if ( configUSE_TIMERS == 1 )
void vQueueWaitForMessageRestricted( QueueHandle_t xQueue,
TickType_t xTicksToWait,
const BaseType_t xWaitIndefinitely )
{
4544: fd3fb2ef jal t0,516 <__riscv_save_0>
4548: 1141 addi sp,sp,-16
454a: 842a mv s0,a0
454c: c62e sw a1,12(sp)
454e: c432 sw a2,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2887
* will not actually cause the task to block, just place it on a blocked
* list. It will not block until the scheduler is unlocked - at which
* time a yield will be performed. If an item is added to the queue while
* the queue is locked, and the calling task blocks on the queue, then the
* calling task will be immediately unblocked when the queue is unlocked. */
prvLockQueue( pxQueue );
4550: da0ff0ef jal ra,3af0 <vPortEnterCritical>
4554: 04444783 lbu a5,68(s0)
4558: 577d li a4,-1
455a: 4622 lw a2,8(sp)
455c: 07e2 slli a5,a5,0x18
455e: 87e1 srai a5,a5,0x18
4560: 45b2 lw a1,12(sp)
4562: 00e79463 bne a5,a4,456a <vQueueWaitForMessageRestricted+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2887 (discriminator 1)
4566: 04040223 sb zero,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2887 (discriminator 3)
456a: 04544783 lbu a5,69(s0)
456e: 577d li a4,-1
4570: 07e2 slli a5,a5,0x18
4572: 87e1 srai a5,a5,0x18
4574: 00e79463 bne a5,a4,457c <vQueueWaitForMessageRestricted+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2887 (discriminator 4)
4578: 040402a3 sb zero,69(s0)
457c: c632 sw a2,12(sp)
457e: c42e sw a1,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2887 (discriminator 6)
4580: d86ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2889 (discriminator 6)
if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0U )
4584: 5c1c lw a5,56(s0)
4586: 45a2 lw a1,8(sp)
4588: 4632 lw a2,12(sp)
458a: e789 bnez a5,4594 <vQueueWaitForMessageRestricted+0x50>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2892
{
/* There is nothing in the queue, block for the specified period. */
vTaskPlaceOnEventListRestricted( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait, xWaitIndefinitely );
458c: 02440513 addi a0,s0,36
4590: 039000ef jal ra,4dc8 <vTaskPlaceOnEventListRestricted>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2899
else
{
mtCOVERAGE_TEST_MARKER();
}
prvUnlockQueue( pxQueue );
4594: 8522 mv a0,s0
4596: ee4ff0ef jal ra,3c7a <prvUnlockQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/queue.c:2900
}
459a: 0141 addi sp,sp,16
459c: f9ffb06f j 53a <__riscv_restore_0>
000045a0 <prvResetNextTaskUnblockTime>:
prvResetNextTaskUnblockTime():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4008
#endif /* INCLUDE_vTaskDelete */
/*-----------------------------------------------------------*/
static void prvResetNextTaskUnblockTime( void )
{
if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE )
45a0: 20000737 lui a4,0x20000
45a4: 10870713 addi a4,a4,264 # 20000108 <pxDelayedTaskList>
45a8: 431c lw a5,0(a4)
45aa: 4394 lw a3,0(a5)
45ac: 200007b7 lui a5,0x20000
45b0: 12878793 addi a5,a5,296 # 20000128 <xNextTaskUnblockTime>
45b4: e681 bnez a3,45bc <prvResetNextTaskUnblockTime+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4014
{
/* The new current delayed list is empty. Set xNextTaskUnblockTime to
* the maximum possible value so it is extremely unlikely that the
* if( xTickCount >= xNextTaskUnblockTime ) test will pass until
* there is an item in the delayed list. */
xNextTaskUnblockTime = portMAX_DELAY;
45b6: 577d li a4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4022
{
/* The new current delayed list is not empty, get the value of
* the item at the head of the delayed list. This is the time at
* which the task at the head of the delayed list should be removed
* from the Blocked state. */
xNextTaskUnblockTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxDelayedTaskList );
45b8: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4024
}
}
45ba: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4022
xNextTaskUnblockTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxDelayedTaskList );
45bc: 4318 lw a4,0(a4)
45be: 4758 lw a4,12(a4)
45c0: 4318 lw a4,0(a4)
45c2: bfdd j 45b8 <prvResetNextTaskUnblockTime+0x18>
000045c4 <prvAddCurrentTaskToDelayedList>:
prvAddCurrentTaskToDelayedList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5312
#endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
/*-----------------------------------------------------------*/
static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
const BaseType_t xCanBlockIndefinitely )
{
45c4: f39fb2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5321
#if ( INCLUDE_xTaskAbortDelay == 1 )
{
/* About to enter a delayed list, so ensure the ucDelayAborted flag is
* reset to pdFALSE so it can be detected as having been set to pdTRUE
* when the task leaves the Blocked state. */
pxCurrentTCB->ucDelayAborted = pdFALSE;
45c8: 20000937 lui s2,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5314
const TickType_t xConstTickCount = xTickCount;
45cc: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5321
pxCurrentTCB->ucDelayAborted = pdFALSE;
45d0: 10490493 addi s1,s2,260 # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5314
const TickType_t xConstTickCount = xTickCount;
45d4: 1387a983 lw s3,312(a5) # 20000138 <xTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5312
{
45d8: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5321
pxCurrentTCB->ucDelayAborted = pdFALSE;
45da: 409c lw a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5327
}
#endif
/* Remove the task from the ready list before adding it to the blocked list
* as the same list item is used for both lists. */
if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
45dc: 4088 lw a0,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5312
{
45de: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5321
pxCurrentTCB->ucDelayAborted = pdFALSE;
45e0: 040788a3 sb zero,81(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5327
if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
45e4: 0511 addi a0,a0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5312
{
45e6: c62e sw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5327
if( uxListRemove( &( pxCurrentTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
45e8: dbaff0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5340
mtCOVERAGE_TEST_MARKER();
}
#if ( INCLUDE_vTaskSuspend == 1 )
{
if( ( xTicksToWait == portMAX_DELAY ) && ( xCanBlockIndefinitely != pdFALSE ) )
45ec: 577d li a4,-1
45ee: 10490793 addi a5,s2,260
45f2: 45b2 lw a1,12(sp)
45f4: 02e41c63 bne s0,a4,462c <prvAddCurrentTaskToDelayedList+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5340 (discriminator 1)
45f8: c995 beqz a1,462c <prvAddCurrentTaskToDelayedList+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5345
{
/* Add the task to the suspended task list instead of a delayed task
* list to ensure it is not woken by a timing event. It will block
* indefinitely. */
listINSERT_END( &xSuspendedTaskList, &( pxCurrentTCB->xStateListItem ) );
45fa: 200157b7 lui a5,0x20015
45fe: 6b878793 addi a5,a5,1720 # 200156b8 <xSuspendedTaskList>
4602: 4094 lw a3,0(s1)
4604: 43d8 lw a4,4(a5)
4606: c698 sw a4,8(a3)
4608: 4710 lw a2,8(a4)
460a: 4094 lw a3,0(s1)
460c: c6d0 sw a2,12(a3)
460e: 4094 lw a3,0(s1)
4610: 4710 lw a2,8(a4)
4612: 0691 addi a3,a3,4
4614: c254 sw a3,4(a2)
4616: 4094 lw a3,0(s1)
4618: 0691 addi a3,a3,4
461a: c714 sw a3,8(a4)
461c: 4098 lw a4,0(s1)
461e: cb5c sw a5,20(a4)
4620: 4398 lw a4,0(a5)
4622: 0705 addi a4,a4,1
4624: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5420
/* Avoid compiler warning when INCLUDE_vTaskSuspend is not 1. */
( void ) xCanBlockIndefinitely;
}
#endif /* INCLUDE_vTaskSuspend */
}
4626: 0141 addi sp,sp,16
4628: f09fb06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5355
listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake );
462c: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5352
xTimeToWake = xConstTickCount + xTicksToWait;
462e: 944e add s0,s0,s3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5355
listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xStateListItem ), xTimeToWake );
4630: c340 sw s0,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5357
if( xTimeToWake < xConstTickCount )
4632: 01347b63 bgeu s0,s3,4648 <prvAddCurrentTaskToDelayedList+0x84>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5361
vListInsert( pxOverflowDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );
4636: 20000737 lui a4,0x20000
463a: 10c72503 lw a0,268(a4) # 2000010c <pxOverflowDelayedTaskList>
463e: 438c lw a1,0(a5)
4640: 0591 addi a1,a1,4
4642: d32ff0ef jal ra,3b74 <vListInsert>
4646: b7c5 j 4626 <prvAddCurrentTaskToDelayedList+0x62>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5367
vListInsert( pxDelayedTaskList, &( pxCurrentTCB->xStateListItem ) );
4648: 20000737 lui a4,0x20000
464c: 10872503 lw a0,264(a4) # 20000108 <pxDelayedTaskList>
4650: 438c lw a1,0(a5)
4652: 0591 addi a1,a1,4
4654: d20ff0ef jal ra,3b74 <vListInsert>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5372
if( xTimeToWake < xNextTaskUnblockTime )
4658: 200007b7 lui a5,0x20000
465c: 12878793 addi a5,a5,296 # 20000128 <xNextTaskUnblockTime>
4660: 4398 lw a4,0(a5)
4662: fce472e3 bgeu s0,a4,4626 <prvAddCurrentTaskToDelayedList+0x62>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5374
xNextTaskUnblockTime = xTimeToWake;
4666: c380 sw s0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:5420
}
4668: bf7d j 4626 <prvAddCurrentTaskToDelayedList+0x62>
0000466a <prvIdleTask>:
prvIdleTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3442
{
466a: e93fb2ef jal t0,4fc <__riscv_save_4>
prvCheckTasksWaitingTermination():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3712
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
466e: 20015437 lui s0,0x20015
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3708
while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
4672: 200009b7 lui s3,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3712
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4676: 6cc40413 addi s0,s0,1740 # 200156cc <xTasksWaitingTermination>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3714
--uxCurrentNumberOfTasks;
467a: 20000a37 lui s4,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3708
while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
467e: 11498493 addi s1,s3,276 # 20000114 <uxDeletedTasksWaitingCleanUp>
4682: 409c lw a5,0(s1)
4684: dfed beqz a5,467e <prvIdleTask+0x14>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3710
taskENTER_CRITICAL();
4686: c6aff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3712
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xTasksWaitingTermination ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
468a: 445c lw a5,12(s0)
468c: 00c7a903 lw s2,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3713
( void ) uxListRemove( &( pxTCB->xStateListItem ) );
4690: 00490513 addi a0,s2,4
4694: d0eff0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3714
--uxCurrentNumberOfTasks;
4698: 110a0713 addi a4,s4,272 # 20000110 <uxCurrentNumberOfTasks>
469c: 431c lw a5,0(a4)
469e: 17fd addi a5,a5,-1
46a0: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3715
--uxDeletedTasksWaitingCleanUp;
46a2: 409c lw a5,0(s1)
46a4: 17fd addi a5,a5,-1
46a6: c09c sw a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3717
taskEXIT_CRITICAL();
46a8: c5eff0ef jal ra,3b06 <vPortExitCritical>
prvDeleteTCB():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3971
vPortFreeStack( pxTCB->pxStack );
46ac: 03092503 lw a0,48(s2)
46b0: a96ff0ef jal ra,3946 <vPortFree>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3972
vPortFree( pxTCB );
46b4: 854a mv a0,s2
46b6: a90ff0ef jal ra,3946 <vPortFree>
46ba: b7d1 j 467e <prvIdleTask+0x14>
000046bc <xTaskCreate>:
xTaskCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:734
{
46bc: e33fb2ef jal t0,4ee <__riscv_save_10>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:768
pxStack = pvPortMallocStack( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */
46c0: 00261913 slli s2,a2,0x2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:734
{
46c4: 8aaa mv s5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:768
pxStack = pvPortMallocStack( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */
46c6: 854a mv a0,s2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:734
{
46c8: 8a2e mv s4,a1
46ca: 8b36 mv s6,a3
46cc: 8bba mv s7,a4
46ce: 89be mv s3,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:768
pxStack = pvPortMallocStack( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ) ); /*lint !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack and this allocation is the stack. */
46d0: 8eaff0ef jal ra,37ba <pvPortMalloc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:770
if( pxStack != NULL )
46d4: c11d beqz a0,46fa <xTaskCreate+0x3e>
46d6: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:773
pxNewTCB = ( TCB_t * ) pvPortMalloc( sizeof( TCB_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of TCB_t is always a pointer to the task's stack. */
46d8: 05400513 li a0,84
46dc: 8deff0ef jal ra,37ba <pvPortMalloc>
46e0: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:775
if( pxNewTCB != NULL )
46e2: c909 beqz a0,46f4 <xTaskCreate+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:778
pxNewTCB->pxStack = pxStack;
46e4: d904 sw s1,48(a0)
prvInitialiseNewTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:890
for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ )
46e6: 4781 li a5,0
46e8: 46c1 li a3,16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:888
if( pcName != NULL )
46ea: 000a1a63 bnez s4,46fe <xTaskCreate+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:915
pxNewTCB->pcTaskName[ 0 ] = 0x00;
46ee: 02050a23 sb zero,52(a0)
46f2: a025 j 471a <xTaskCreate+0x5e>
xTaskCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:784
vPortFreeStack( pxStack );
46f4: 8526 mv a0,s1
46f6: a50ff0ef jal ra,3946 <vPortFree>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:810
xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;
46fa: 557d li a0,-1
46fc: a265 j 48a4 <xTaskCreate+0x1e8>
prvInitialiseNewTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:892
pxNewTCB->pcTaskName[ x ] = pcName[ x ];
46fe: 00fa0733 add a4,s4,a5
4702: 00070703 lb a4,0(a4)
4706: 00f40633 add a2,s0,a5
470a: 02e60a23 sb a4,52(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:897
if( pcName[ x ] == ( char ) 0x00 )
470e: c701 beqz a4,4716 <xTaskCreate+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:890
for( x = ( UBaseType_t ) 0; x < ( UBaseType_t ) configMAX_TASK_NAME_LEN; x++ )
4710: 0785 addi a5,a5,1
4712: fed796e3 bne a5,a3,46fe <xTaskCreate+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:909
pxNewTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = '\0';
4716: 040401a3 sb zero,67(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:919
configASSERT( uxPriority < configMAX_PRIORITIES );
471a: 47b9 li a5,14
471c: 0377f463 bgeu a5,s7,4744 <xTaskCreate+0x88>
4720: 67a1 lui a5,0x8
4722: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4726: 30079073 csrw mstatus,a5
472a: 0000d637 lui a2,0xd
472e: 0000d537 lui a0,0xd
4732: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4736: 39700593 li a1,919
473a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
473e: 338080ef jal ra,ca76 <printf>
4742: a001 j 4742 <xTaskCreate+0x86>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:938
vListInitialiseItem( &( pxNewTCB->xStateListItem ) );
4744: 00440a13 addi s4,s0,4
4748: 8552 mv a0,s4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:930
pxNewTCB->uxPriority = uxPriority;
474a: 03742623 sw s7,44(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:933
pxNewTCB->uxBasePriority = uxPriority;
474e: 05742223 sw s7,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:934
pxNewTCB->uxMutexesHeld = 0;
4752: 04042423 sw zero,72(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:938
vListInitialiseItem( &( pxNewTCB->xStateListItem ) );
4756: c18ff0ef jal ra,3b6e <vListInitialiseItem>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:939
vListInitialiseItem( &( pxNewTCB->xEventListItem ) );
475a: 01840513 addi a0,s0,24
475e: c10ff0ef jal ra,3b6e <vListInitialiseItem>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:946
listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
4762: 473d li a4,15
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:860
pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] );
4764: ffc90513 addi a0,s2,-4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:946
listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
4768: 41770733 sub a4,a4,s7
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:860
pxTopOfStack = &( pxNewTCB->pxStack[ ulStackDepth - ( uint32_t ) 1 ] );
476c: 9526 add a0,a0,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:943
listSET_LIST_ITEM_OWNER( &( pxNewTCB->xStateListItem ), pxNewTCB );
476e: c800 sw s0,16(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:946
listSET_LIST_ITEM_VALUE( &( pxNewTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
4770: cc18 sw a4,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:947
listSET_LIST_ITEM_OWNER( &( pxNewTCB->xEventListItem ), pxNewTCB );
4772: d040 sw s0,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:986
memset( ( void * ) &( pxNewTCB->ulNotifiedValue[ 0 ] ), 0x00, sizeof( pxNewTCB->ulNotifiedValue ) );
4774: 04040623 sb zero,76(s0)
4778: 040406a3 sb zero,77(s0)
477c: 04040723 sb zero,78(s0)
4780: 040407a3 sb zero,79(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:987
memset( ( void * ) &( pxNewTCB->ucNotifyState[ 0 ] ), 0x00, sizeof( pxNewTCB->ucNotifyState ) );
4784: 04040823 sb zero,80(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1002
pxNewTCB->ucDelayAborted = pdFALSE;
4788: 040408a3 sb zero,81(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1052
pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );
478c: 865a mv a2,s6
478e: 85d6 mv a1,s5
4790: 9941 andi a0,a0,-16
4792: c6ffb0ef jal ra,400 <pxPortInitialiseStack>
4796: c008 sw a0,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1058
if( pxCreatedTask != NULL )
4798: 00098463 beqz s3,47a0 <xTaskCreate+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1062
*pxCreatedTask = ( TaskHandle_t ) pxNewTCB;
479c: 0089a023 sw s0,0(s3)
prvAddNewTaskToReadyList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1075
taskENTER_CRITICAL();
47a0: b50ff0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1077
uxCurrentNumberOfTasks++;
47a4: 200007b7 lui a5,0x20000
47a8: 11078793 addi a5,a5,272 # 20000110 <uxCurrentNumberOfTasks>
47ac: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1079
if( pxCurrentTCB == NULL )
47ae: 200004b7 lui s1,0x20000
47b2: 200159b7 lui s3,0x20015
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1077
uxCurrentNumberOfTasks++;
47b6: 0705 addi a4,a4,1
47b8: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1079
if( pxCurrentTCB == NULL )
47ba: 10448713 addi a4,s1,260 # 20000104 <pxCurrentTCB>
47be: 4318 lw a4,0(a4)
47c0: 10448493 addi s1,s1,260
47c4: 55098913 addi s2,s3,1360 # 20015550 <pxReadyTasksLists>
47c8: 0e071063 bnez a4,48a8 <xTaskCreate+0x1ec>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1083
pxCurrentTCB = pxNewTCB;
47cc: c080 sw s0,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1085
if( uxCurrentNumberOfTasks == ( UBaseType_t ) 1 )
47ce: 4398 lw a4,0(a5)
47d0: 4785 li a5,1
47d2: 06f71663 bne a4,a5,483e <xTaskCreate+0x182>
47d6: 55098993 addi s3,s3,1360
47da: 12c90a93 addi s5,s2,300
prvInitialiseTaskLists():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3672
vListInitialise( &( pxReadyTasksLists[ uxPriority ] ) );
47de: 854e mv a0,s3
47e0: 09d1 addi s3,s3,20
47e2: b78ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3670
for( uxPriority = ( UBaseType_t ) 0U; uxPriority < ( UBaseType_t ) configMAX_PRIORITIES; uxPriority++ )
47e6: ff3a9ce3 bne s5,s3,47de <xTaskCreate+0x122>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3675
vListInitialise( &xDelayedTaskList1 );
47ea: 20015537 lui a0,0x20015
47ee: 67c50a93 addi s5,a0,1660 # 2001567c <xDelayedTaskList1>
47f2: 67c50513 addi a0,a0,1660
47f6: b64ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3676
vListInitialise( &xDelayedTaskList2 );
47fa: 20015537 lui a0,0x20015
47fe: 69050993 addi s3,a0,1680 # 20015690 <xDelayedTaskList2>
4802: 69050513 addi a0,a0,1680
4806: b54ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3677
vListInitialise( &xPendingReadyList );
480a: 20015537 lui a0,0x20015
480e: 6a450513 addi a0,a0,1700 # 200156a4 <xPendingReadyList>
4812: b48ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3681
vListInitialise( &xTasksWaitingTermination );
4816: 20015537 lui a0,0x20015
481a: 6cc50513 addi a0,a0,1740 # 200156cc <xTasksWaitingTermination>
481e: b3cff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3687
vListInitialise( &xSuspendedTaskList );
4822: 20015537 lui a0,0x20015
4826: 6b850513 addi a0,a0,1720 # 200156b8 <xSuspendedTaskList>
482a: b30ff0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3693
pxDelayedTaskList = &xDelayedTaskList1;
482e: 200007b7 lui a5,0x20000
4832: 1157a423 sw s5,264(a5) # 20000108 <pxDelayedTaskList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3694
pxOverflowDelayedTaskList = &xDelayedTaskList2;
4836: 200007b7 lui a5,0x20000
483a: 1137a623 sw s3,268(a5) # 2000010c <pxOverflowDelayedTaskList>
prvAddNewTaskToReadyList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1119
uxTaskNumber++;
483e: 200007b7 lui a5,0x20000
4842: 11c78793 addi a5,a5,284 # 2000011c <uxTaskNumber>
4846: 4398 lw a4,0(a5)
4848: 0705 addi a4,a4,1
484a: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1129
prvAddTaskToReadyList( pxNewTCB );
484c: 20000737 lui a4,0x20000
4850: 12070713 addi a4,a4,288 # 20000120 <uxTopReadyPriority>
4854: 545c lw a5,44(s0)
4856: 4314 lw a3,0(a4)
4858: 00f6f363 bgeu a3,a5,485e <xTaskCreate+0x1a2>
485c: c31c sw a5,0(a4)
485e: 4751 li a4,20
4860: 02e787b3 mul a5,a5,a4
4864: 97ca add a5,a5,s2
4866: 43d8 lw a4,4(a5)
4868: 4714 lw a3,8(a4)
486a: c418 sw a4,8(s0)
486c: c454 sw a3,12(s0)
486e: 4714 lw a3,8(a4)
4870: 0146a223 sw s4,4(a3)
4874: 01472423 sw s4,8(a4)
4878: 4398 lw a4,0(a5)
487a: c85c sw a5,20(s0)
487c: 0705 addi a4,a4,1
487e: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1133
taskEXIT_CRITICAL();
4880: a86ff0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1135
if( xSchedulerRunning != pdFALSE )
4884: 200007b7 lui a5,0x20000
4888: 1347a783 lw a5,308(a5) # 20000134 <xSchedulerRunning>
xTaskCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:806
xReturn = pdPASS;
488c: 4505 li a0,1
prvAddNewTaskToReadyList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1135
if( xSchedulerRunning != pdFALSE )
488e: cb99 beqz a5,48a4 <xTaskCreate+0x1e8>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1139
if( pxCurrentTCB->uxPriority < pxNewTCB->uxPriority )
4890: 409c lw a5,0(s1)
4892: 57d8 lw a4,44(a5)
4894: 545c lw a5,44(s0)
4896: 00f77763 bgeu a4,a5,48a4 <xTaskCreate+0x1e8>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
489a: e000e7b7 lui a5,0xe000e
489e: 6711 lui a4,0x4
48a0: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xTaskCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:814
}
48a4: c83fb06f j 526 <__riscv_restore_10>
prvAddNewTaskToReadyList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1102
if( xSchedulerRunning == pdFALSE )
48a8: 200007b7 lui a5,0x20000
48ac: 1347a783 lw a5,308(a5) # 20000134 <xSchedulerRunning>
48b0: f7d9 bnez a5,483e <xTaskCreate+0x182>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1104
if( pxCurrentTCB->uxPriority <= pxNewTCB->uxPriority )
48b2: 409c lw a5,0(s1)
48b4: 57d8 lw a4,44(a5)
48b6: 545c lw a5,44(s0)
48b8: f8e7e3e3 bltu a5,a4,483e <xTaskCreate+0x182>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1106
pxCurrentTCB = pxNewTCB;
48bc: c080 sw s0,0(s1)
48be: b741 j 483e <xTaskCreate+0x182>
000048c0 <vTaskStartScheduler>:
vTaskStartScheduler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1998
{
48c0: c57fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2031
xReturn = xTaskCreate( prvIdleTask,
48c4: 200007b7 lui a5,0x20000
48c8: 0000d5b7 lui a1,0xd
48cc: 00004537 lui a0,0x4
48d0: 12478793 addi a5,a5,292 # 20000124 <xIdleTaskHandle>
48d4: 4701 li a4,0
48d6: 4681 li a3,0
48d8: 10000613 li a2,256
48dc: 35858593 addi a1,a1,856 # d358 <MemSize+0x1c4>
48e0: 66a50513 addi a0,a0,1642 # 466a <prvIdleTask>
48e4: dd9ff0ef jal ra,46bc <xTaskCreate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2042
if( xReturn == pdPASS )
48e8: 4405 li s0,1
48ea: 02851e63 bne a0,s0,4926 <vTaskStartScheduler+0x66>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2044
xReturn = xTimerCreateTimerTask();
48ee: 473000ef jal ra,5560 <xTimerCreateTimerTask>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2053
if( xReturn == pdPASS )
48f2: 02851a63 bne a0,s0,4926 <vTaskStartScheduler+0x66>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2069
portDISABLE_INTERRUPTS();
48f6: 67a1 lui a5,0x8
48f8: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
48fc: 30079073 csrw mstatus,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2081
xNextTaskUnblockTime = portMAX_DELAY;
4900: 200007b7 lui a5,0x20000
4904: 577d li a4,-1
4906: 12e7a423 sw a4,296(a5) # 20000128 <xNextTaskUnblockTime>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2082
xSchedulerRunning = pdTRUE;
490a: 200007b7 lui a5,0x20000
490e: 12a7aa23 sw a0,308(a5) # 20000134 <xSchedulerRunning>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2083
xTickCount = ( TickType_t ) configINITIAL_TICK_COUNT;
4912: 200007b7 lui a5,0x20000
4916: 1207ac23 sw zero,312(a5) # 20000138 <xTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2097
if( xPortStartScheduler() != pdFALSE )
491a: 90eff0ef jal ra,3a28 <xPortStartScheduler>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2121 (discriminator 2)
( void ) uxTopUsedPriority;
491e: 81c1a783 lw a5,-2020(gp) # 2000005c <uxTopUsedPriority>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2122 (discriminator 2)
}
4922: c19fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2112
configASSERT( xReturn != errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY );
4926: 57fd li a5,-1
4928: fef51be3 bne a0,a5,491e <vTaskStartScheduler+0x5e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2112 (discriminator 1)
492c: 67a1 lui a5,0x8
492e: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4932: 30079073 csrw mstatus,a5
4936: 0000d637 lui a2,0xd
493a: 6585 lui a1,0x1
493c: 0000d537 lui a0,0xd
4940: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4944: 84058593 addi a1,a1,-1984 # 840 <WCHNET_HandleSockInt+0x18>
4948: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
494c: 12a080ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2112 (discriminator 2)
4950: a001 j 4950 <vTaskStartScheduler+0x90>
00004952 <vTaskSuspendAll>:
vTaskSuspendAll():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2149
++uxSchedulerSuspended;
4952: 200007b7 lui a5,0x20000
4956: 11878793 addi a5,a5,280 # 20000118 <uxSchedulerSuspended>
495a: 4398 lw a4,0(a5)
495c: 0705 addi a4,a4,1
495e: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2154
}
4960: 8082 ret
00004962 <xTaskGetTickCount>:
xTaskGetTickCount():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2339
xTicks = xTickCount;
4962: 200007b7 lui a5,0x20000
4966: 1387a503 lw a0,312(a5) # 20000138 <xTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2344
}
496a: 8082 ret
0000496c <xTaskIncrementTick>:
xTaskIncrementTick():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2747
if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )
496c: 200007b7 lui a5,0x20000
4970: 1187a783 lw a5,280(a5) # 20000118 <uxSchedulerSuspended>
4974: 18079963 bnez a5,4b06 <xTaskIncrementTick+0x19a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2737
{
4978: b9ffb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2751
const TickType_t xConstTickCount = xTickCount + ( TickType_t ) 1;
497c: 200007b7 lui a5,0x20000
4980: 13878793 addi a5,a5,312 # 20000138 <xTickCount>
4984: 4380 lw s0,0(a5)
4986: 0405 addi s0,s0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2755
xTickCount = xConstTickCount;
4988: c380 sw s0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2757
if( xConstTickCount == ( TickType_t ) 0U ) /*lint !e774 'if' does not always evaluate to false as it is looking for an overflow. */
498a: ec21 bnez s0,49e2 <xTaskIncrementTick+0x76>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2759
taskSWITCH_DELAYED_LISTS();
498c: 200007b7 lui a5,0x20000
4990: 10878793 addi a5,a5,264 # 20000108 <pxDelayedTaskList>
4994: 4398 lw a4,0(a5)
4996: 4318 lw a4,0(a4)
4998: c705 beqz a4,49c0 <xTaskIncrementTick+0x54>
499a: 67a1 lui a5,0x8
499c: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
49a0: 30079073 csrw mstatus,a5
49a4: 0000d637 lui a2,0xd
49a8: 6585 lui a1,0x1
49aa: 0000d537 lui a0,0xd
49ae: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
49b2: ac758593 addi a1,a1,-1337 # ac7 <main+0x1a1>
49b6: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
49ba: 0bc080ef jal ra,ca76 <printf>
49be: a001 j 49be <xTaskIncrementTick+0x52>
49c0: 20000737 lui a4,0x20000
49c4: 10c70713 addi a4,a4,268 # 2000010c <pxOverflowDelayedTaskList>
49c8: 4394 lw a3,0(a5)
49ca: 4310 lw a2,0(a4)
49cc: c390 sw a2,0(a5)
49ce: 200007b7 lui a5,0x20000
49d2: c314 sw a3,0(a4)
49d4: 12c78793 addi a5,a5,300 # 2000012c <xNumOfOverflows>
49d8: 4398 lw a4,0(a5)
49da: 0705 addi a4,a4,1
49dc: c398 sw a4,0(a5)
49de: bc3ff0ef jal ra,45a0 <prvResetNextTaskUnblockTime>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2770
if( xConstTickCount >= xNextTaskUnblockTime )
49e2: 20000637 lui a2,0x20000
49e6: 12860793 addi a5,a2,296 # 20000128 <xNextTaskUnblockTime>
49ea: 439c lw a5,0(a5)
49ec: 20015737 lui a4,0x20015
49f0: 200005b7 lui a1,0x20000
49f4: 12860613 addi a2,a2,296
49f8: 55070713 addi a4,a4,1360 # 20015550 <pxReadyTasksLists>
49fc: 10458593 addi a1,a1,260 # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2740
BaseType_t xSwitchRequired = pdFALSE;
4a00: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2770
if( xConstTickCount >= xNextTaskUnblockTime )
4a02: 02f47563 bgeu s0,a5,4a2c <xTaskIncrementTick+0xc0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2853
if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 )
4a06: 419c lw a5,0(a1)
4a08: 46d1 li a3,20
4a0a: 57dc lw a5,44(a5)
4a0c: 02d787b3 mul a5,a5,a3
4a10: 973e add a4,a4,a5
4a12: 4318 lw a4,0(a4)
4a14: 4785 li a5,1
4a16: 00e7f363 bgeu a5,a4,4a1c <xTaskIncrementTick+0xb0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2855
xSwitchRequired = pdTRUE;
4a1a: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2881
if( xYieldPending != pdFALSE )
4a1c: 200007b7 lui a5,0x20000
4a20: 13c7a783 lw a5,316(a5) # 2000013c <xYieldPending>
4a24: c391 beqz a5,4a28 <xTaskIncrementTick+0xbc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2883
xSwitchRequired = pdTRUE;
4a26: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2906
}
4a28: b13fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2774
if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE )
4a2c: 20000e37 lui t3,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2824
prvAddTaskToReadyList( pxTCB );
4a30: 20000eb7 lui t4,0x20000
4a34: 4f51 li t5,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2774
if( listLIST_IS_EMPTY( pxDelayedTaskList ) != pdFALSE )
4a36: 108e0793 addi a5,t3,264 # 20000108 <pxDelayedTaskList>
4a3a: 4394 lw a3,0(a5)
4a3c: 4294 lw a3,0(a3)
4a3e: e681 bnez a3,4a46 <xTaskIncrementTick+0xda>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2781
xNextTaskUnblockTime = portMAX_DELAY; /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
4a40: 57fd li a5,-1
4a42: c21c sw a5,0(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2782
break;
4a44: b7c9 j 4a06 <xTaskIncrementTick+0x9a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2790
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4a46: 439c lw a5,0(a5)
4a48: 47dc lw a5,12(a5)
4a4a: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2791
xItemValue = listGET_LIST_ITEM_VALUE( &( pxTCB->xStateListItem ) );
4a4c: 43d4 lw a3,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2793
if( xConstTickCount < xItemValue )
4a4e: 00d47463 bgeu s0,a3,4a56 <xTaskIncrementTick+0xea>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2800
xNextTaskUnblockTime = xItemValue;
4a52: c214 sw a3,0(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2801
break; /*lint !e9011 Code structure here is deemed easier to understand with multiple breaks. */
4a54: bf4d j 4a06 <xTaskIncrementTick+0x9a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2809
listREMOVE_ITEM( &( pxTCB->xStateListItem ) );
4a56: 0087a883 lw a7,8(a5)
4a5a: 00c7a803 lw a6,12(a5)
4a5e: 4bd4 lw a3,20(a5)
4a60: 00478313 addi t1,a5,4
4a64: 0108a423 sw a6,8(a7)
4a68: 01182223 sw a7,4(a6)
4a6c: 0046a883 lw a7,4(a3)
4a70: 00689463 bne a7,t1,4a78 <xTaskIncrementTick+0x10c>
4a74: 0106a223 sw a6,4(a3)
4a78: 0006a803 lw a6,0(a3)
4a7c: 0007aa23 sw zero,20(a5)
4a80: 187d addi a6,a6,-1
4a82: 0106a023 sw a6,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2813
if( listLIST_ITEM_CONTAINER( &( pxTCB->xEventListItem ) ) != NULL )
4a86: 5794 lw a3,40(a5)
4a88: ca95 beqz a3,4abc <xTaskIncrementTick+0x150>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2815
listREMOVE_ITEM( &( pxTCB->xEventListItem ) );
4a8a: 01c7a803 lw a6,28(a5)
4a8e: 0207a883 lw a7,32(a5)
4a92: 0046af83 lw t6,4(a3)
4a96: 01182423 sw a7,8(a6)
4a9a: 0207a883 lw a7,32(a5)
4a9e: 0108a223 sw a6,4(a7)
4aa2: 01878813 addi a6,a5,24
4aa6: 010f9463 bne t6,a6,4aae <xTaskIncrementTick+0x142>
4aaa: 0116a223 sw a7,4(a3)
4aae: 0006a803 lw a6,0(a3)
4ab2: 0207a423 sw zero,40(a5)
4ab6: 187d addi a6,a6,-1
4ab8: 0106a023 sw a6,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2824
prvAddTaskToReadyList( pxTCB );
4abc: 120e8693 addi a3,t4,288 # 20000120 <uxTopReadyPriority>
4ac0: 02c7a803 lw a6,44(a5)
4ac4: 0006a883 lw a7,0(a3)
4ac8: 0108f463 bgeu a7,a6,4ad0 <xTaskIncrementTick+0x164>
4acc: 0106a023 sw a6,0(a3)
4ad0: 03e806b3 mul a3,a6,t5
4ad4: 96ba add a3,a3,a4
4ad6: 0046a883 lw a7,4(a3)
4ada: 0088af83 lw t6,8(a7)
4ade: 0117a423 sw a7,8(a5)
4ae2: 01f7a623 sw t6,12(a5)
4ae6: 0088af83 lw t6,8(a7)
4aea: 006fa223 sw t1,4(t6)
4aee: 0068a423 sw t1,8(a7)
4af2: cbd4 sw a3,20(a5)
4af4: 429c lw a5,0(a3)
4af6: 0785 addi a5,a5,1
4af8: c29c sw a5,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2834
if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )
4afa: 419c lw a5,0(a1)
4afc: 57dc lw a5,44(a5)
4afe: f2f86ce3 bltu a6,a5,4a36 <xTaskIncrementTick+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2836
xSwitchRequired = pdTRUE;
4b02: 4505 li a0,1
4b04: bf0d j 4a36 <xTaskIncrementTick+0xca>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2894
++xPendedTicks;
4b06: 200007b7 lui a5,0x20000
4b0a: 13078793 addi a5,a5,304 # 20000130 <xPendedTicks>
4b0e: 4398 lw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2740
BaseType_t xSwitchRequired = pdFALSE;
4b10: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2894
++xPendedTicks;
4b12: 0705 addi a4,a4,1
4b14: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2906
}
4b16: 8082 ret
00004b18 <xTaskResumeAll>:
xTaskResumeAll():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2221
{
4b18: 9e5fb2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2227
configASSERT( uxSchedulerSuspended );
4b1c: 20000437 lui s0,0x20000
4b20: 11840413 addi s0,s0,280 # 20000118 <uxSchedulerSuspended>
4b24: 401c lw a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2221
{
4b26: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2227
configASSERT( uxSchedulerSuspended );
4b28: e785 bnez a5,4b50 <xTaskResumeAll+0x38>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2227 (discriminator 1)
4b2a: 67a1 lui a5,0x8
4b2c: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4b30: 30079073 csrw mstatus,a5
4b34: 0000d637 lui a2,0xd
4b38: 6585 lui a1,0x1
4b3a: 0000d537 lui a0,0xd
4b3e: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4b42: 8b358593 addi a1,a1,-1869 # 8b3 <WCHNET_HandleGlobalInt+0xf>
4b46: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4b4a: 72d070ef jal ra,ca76 <printf>
4b4e: a001 j 4b4e <xTaskResumeAll+0x36>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2234
taskENTER_CRITICAL();
4b50: fa1fe0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2236
--uxSchedulerSuspended;
4b54: 401c lw a5,0(s0)
4b56: 17fd addi a5,a5,-1
4b58: c01c sw a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2238
if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )
4b5a: 401c lw a5,0(s0)
4b5c: cb89 beqz a5,4b6e <xTaskResumeAll+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2223
BaseType_t xAlreadyYielded = pdFALSE;
4b5e: 4501 li a0,0
4b60: c62a sw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2326
taskEXIT_CRITICAL();
4b62: fa5fe0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2329
}
4b66: 4532 lw a0,12(sp)
4b68: 0141 addi sp,sp,16
4b6a: 9c7fb06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2240
if( uxCurrentNumberOfTasks > ( UBaseType_t ) 0U )
4b6e: 200007b7 lui a5,0x20000
4b72: 1107a783 lw a5,272(a5) # 20000110 <uxCurrentNumberOfTasks>
4b76: d7e5 beqz a5,4b5e <xTaskResumeAll+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2244
while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )
4b78: 200156b7 lui a3,0x20015
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2250
prvAddTaskToReadyList( pxTCB );
4b7c: 20015537 lui a0,0x20015
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2222
TCB_t * pxTCB = NULL;
4b80: 4781 li a5,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2244
while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )
4b82: 6a468693 addi a3,a3,1700 # 200156a4 <xPendingReadyList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2250
prvAddTaskToReadyList( pxTCB );
4b86: 20000f37 lui t5,0x20000
4b8a: 55050513 addi a0,a0,1360 # 20015550 <pxReadyTasksLists>
4b8e: 48d1 li a7,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2254
if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )
4b90: 20000337 lui t1,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2256
xYieldPending = pdTRUE;
4b94: 20000e37 lui t3,0x20000
4b98: 4e85 li t4,1
4b9a: a859 j 4c30 <xTaskResumeAll+0x118>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2246
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4b9c: 46dc lw a5,12(a3)
4b9e: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2247
listREMOVE_ITEM( &( pxTCB->xEventListItem ) );
4ba0: 4fcc lw a1,28(a5)
4ba2: 5390 lw a2,32(a5)
4ba4: 5798 lw a4,40(a5)
4ba6: c590 sw a2,8(a1)
4ba8: 0207a803 lw a6,32(a5)
4bac: 00b82223 sw a1,4(a6)
4bb0: 00472803 lw a6,4(a4)
4bb4: 01878593 addi a1,a5,24
4bb8: 00b81363 bne a6,a1,4bbe <xTaskResumeAll+0xa6>
4bbc: c350 sw a2,4(a4)
4bbe: 4310 lw a2,0(a4)
4bc0: 0207a423 sw zero,40(a5)
4bc4: 167d addi a2,a2,-1
4bc6: c310 sw a2,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2249
listREMOVE_ITEM( &( pxTCB->xStateListItem ) );
4bc8: 478c lw a1,8(a5)
4bca: 47d0 lw a2,12(a5)
4bcc: 4bd8 lw a4,20(a5)
4bce: 00478813 addi a6,a5,4
4bd2: c590 sw a2,8(a1)
4bd4: c24c sw a1,4(a2)
4bd6: 434c lw a1,4(a4)
4bd8: 01059363 bne a1,a6,4bde <xTaskResumeAll+0xc6>
4bdc: c350 sw a2,4(a4)
4bde: 4310 lw a2,0(a4)
4be0: 0007aa23 sw zero,20(a5)
4be4: 167d addi a2,a2,-1
4be6: c310 sw a2,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2250
prvAddTaskToReadyList( pxTCB );
4be8: 120f0713 addi a4,t5,288 # 20000120 <uxTopReadyPriority>
4bec: 57d0 lw a2,44(a5)
4bee: 430c lw a1,0(a4)
4bf0: 00c5f363 bgeu a1,a2,4bf6 <xTaskResumeAll+0xde>
4bf4: c310 sw a2,0(a4)
4bf6: 03160733 mul a4,a2,a7
4bfa: 972a add a4,a4,a0
4bfc: 434c lw a1,4(a4)
4bfe: 0085af83 lw t6,8(a1)
4c02: c78c sw a1,8(a5)
4c04: 01f7a623 sw t6,12(a5)
4c08: 0085af83 lw t6,8(a1)
4c0c: 010fa223 sw a6,4(t6)
4c10: 0105a423 sw a6,8(a1)
4c14: 430c lw a1,0(a4)
4c16: cbd8 sw a4,20(a5)
4c18: 0585 addi a1,a1,1
4c1a: c30c sw a1,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2254
if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )
4c1c: 10430713 addi a4,t1,260 # 20000104 <pxCurrentTCB>
4c20: 4318 lw a4,0(a4)
4c22: 5758 lw a4,44(a4)
4c24: 00e66663 bltu a2,a4,4c30 <xTaskResumeAll+0x118>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2256
xYieldPending = pdTRUE;
4c28: 13ce0713 addi a4,t3,316 # 2000013c <xYieldPending>
4c2c: 01d72023 sw t4,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2244
while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )
4c30: 4298 lw a4,0(a3)
4c32: f72d bnez a4,4b9c <xTaskResumeAll+0x84>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2264
if( pxTCB != NULL )
4c34: c399 beqz a5,4c3a <xTaskResumeAll+0x122>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2272
prvResetNextTaskUnblockTime();
4c36: 96bff0ef jal ra,45a0 <prvResetNextTaskUnblockTime>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2280
TickType_t xPendedCounts = xPendedTicks; /* Non-volatile copy. */
4c3a: 200007b7 lui a5,0x20000
4c3e: 13078713 addi a4,a5,304 # 20000130 <xPendedTicks>
4c42: 4304 lw s1,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2282
if( xPendedCounts > ( TickType_t ) 0U )
4c44: 13078413 addi s0,a5,304
4c48: cc99 beqz s1,4c66 <xTaskResumeAll+0x14e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2288
xYieldPending = pdTRUE;
4c4a: 20000937 lui s2,0x20000
4c4e: 4985 li s3,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2286
if( xTaskIncrementTick() != pdFALSE )
4c50: d1dff0ef jal ra,496c <xTaskIncrementTick>
4c54: c509 beqz a0,4c5e <xTaskResumeAll+0x146>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2288
xYieldPending = pdTRUE;
4c56: 13c90793 addi a5,s2,316 # 2000013c <xYieldPending>
4c5a: 0137a023 sw s3,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2295
--xPendedCounts;
4c5e: 14fd addi s1,s1,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2296
} while( xPendedCounts > ( TickType_t ) 0U );
4c60: f8e5 bnez s1,4c50 <xTaskResumeAll+0x138>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2298
xPendedTicks = 0;
4c62: 00042023 sw zero,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2306
if( xYieldPending != pdFALSE )
4c66: 200007b7 lui a5,0x20000
4c6a: 13c7a783 lw a5,316(a5) # 2000013c <xYieldPending>
4c6e: ee0788e3 beqz a5,4b5e <xTaskResumeAll+0x46>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4c72: e000e7b7 lui a5,0xe000e
4c76: 6711 lui a4,0x4
4c78: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
xTaskResumeAll():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:2310
xAlreadyYielded = pdTRUE;
4c7c: 4505 li a0,1
4c7e: b5cd j 4b60 <xTaskResumeAll+0x48>
00004c80 <vTaskDelay>:
vTaskDelay():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1351
if( xTicksToDelay > ( TickType_t ) 0U )
4c80: e519 bnez a0,4c8e <vTaskDelay+0xe>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4c82: e000e7b7 lui a5,0xe000e
4c86: 6711 lui a4,0x4
4c88: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
4c8c: 8082 ret
vTaskDelay():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1347
{
4c8e: 889fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1353
configASSERT( uxSchedulerSuspended == 0 );
4c92: 200007b7 lui a5,0x20000
4c96: 1187a783 lw a5,280(a5) # 20000118 <uxSchedulerSuspended>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1347
{
4c9a: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1353
configASSERT( uxSchedulerSuspended == 0 );
4c9c: c39d beqz a5,4cc2 <vTaskDelay+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1353 (discriminator 1)
4c9e: 67a1 lui a5,0x8
4ca0: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4ca4: 30079073 csrw mstatus,a5
4ca8: 0000d637 lui a2,0xd
4cac: 0000d537 lui a0,0xd
4cb0: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4cb4: 54900593 li a1,1353
4cb8: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4cbc: 5bb070ef jal ra,ca76 <printf>
4cc0: a001 j 4cc0 <vTaskDelay+0x40>
4cc2: c62a sw a0,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1354 (discriminator 2)
vTaskSuspendAll();
4cc4: c8fff0ef jal ra,4952 <vTaskSuspendAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1365 (discriminator 2)
prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );
4cc8: 4532 lw a0,12(sp)
4cca: 4581 li a1,0
4ccc: 8f9ff0ef jal ra,45c4 <prvAddCurrentTaskToDelayedList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1367 (discriminator 2)
xAlreadyYielded = xTaskResumeAll();
4cd0: e49ff0ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1376 (discriminator 2)
if( xAlreadyYielded == pdFALSE )
4cd4: e511 bnez a0,4ce0 <vTaskDelay+0x60>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
4cd6: e000e7b7 lui a5,0xe000e
4cda: 6711 lui a4,0x4
4cdc: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
vTaskDelay():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:1384
}
4ce0: 0141 addi sp,sp,16
4ce2: 859fb06f j 53a <__riscv_restore_0>
00004ce6 <vTaskSwitchContext>:
vTaskSwitchContext():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3023
if( uxSchedulerSuspended != ( UBaseType_t ) pdFALSE )
4ce6: 200007b7 lui a5,0x20000
4cea: 1187a703 lw a4,280(a5) # 20000118 <uxSchedulerSuspended>
4cee: 200007b7 lui a5,0x20000
4cf2: 13c78793 addi a5,a5,316 # 2000013c <xYieldPending>
4cf6: c701 beqz a4,4cfe <vTaskSwitchContext+0x18>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3027
xYieldPending = pdTRUE;
4cf8: 4705 li a4,1
4cfa: c398 sw a4,0(a5)
4cfc: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3031
xYieldPending = pdFALSE;
4cfe: 0007a023 sw zero,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074
taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4d02: 200007b7 lui a5,0x20000
4d06: 12078713 addi a4,a5,288 # 20000120 <uxTopReadyPriority>
4d0a: 4318 lw a4,0(a4)
4d0c: 12078613 addi a2,a5,288
4d10: 200157b7 lui a5,0x20015
4d14: 55078793 addi a5,a5,1360 # 20015550 <pxReadyTasksLists>
4d18: 4851 li a6,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 5)
4d1a: 030706b3 mul a3,a4,a6
4d1e: 00d785b3 add a1,a5,a3
4d22: 4188 lw a0,0(a1)
4d24: c515 beqz a0,4d50 <vTaskSwitchContext+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 7)
4d26: 41c8 lw a0,4(a1)
4d28: 06a1 addi a3,a3,8
4d2a: 96be add a3,a3,a5
4d2c: 4148 lw a0,4(a0)
4d2e: c1c8 sw a0,4(a1)
4d30: 00d51463 bne a0,a3,4d38 <vTaskSwitchContext+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 8)
4d34: 4154 lw a3,4(a0)
4d36: c1d4 sw a3,4(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 10)
4d38: 46d1 li a3,20
4d3a: 02d706b3 mul a3,a4,a3
4d3e: 97b6 add a5,a5,a3
4d40: 43dc lw a5,4(a5)
4d42: 47d4 lw a3,12(a5)
4d44: 200007b7 lui a5,0x20000
4d48: 10d7a223 sw a3,260(a5) # 20000104 <pxCurrentTCB>
4d4c: c218 sw a4,0(a2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3075 (discriminator 10)
traceTASK_SWITCHED_IN();
4d4e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 6)
taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4d50: e715 bnez a4,4d7c <vTaskSwitchContext+0x96>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3022
{
4d52: fc4fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074
taskSELECT_HIGHEST_PRIORITY_TASK(); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4d56: 67a1 lui a5,0x8
4d58: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4d5c: 30079073 csrw mstatus,a5
4d60: 0000d637 lui a2,0xd
4d64: 6585 lui a1,0x1
4d66: 0000d537 lui a0,0xd
4d6a: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4d6e: c0258593 addi a1,a1,-1022 # c02 <SystemInit+0xde>
4d72: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4d76: 501070ef jal ra,ca76 <printf>
4d7a: a001 j 4d7a <vTaskSwitchContext+0x94>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3074 (discriminator 3)
4d7c: 177d addi a4,a4,-1
4d7e: bf71 j 4d1a <vTaskSwitchContext+0x34>
00004d80 <vTaskPlaceOnEventList>:
vTaskPlaceOnEventList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3099
{
4d80: f96fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3100
configASSERT( pxEventList );
4d84: e505 bnez a0,4dac <vTaskPlaceOnEventList+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3100 (discriminator 1)
4d86: 67a1 lui a5,0x8
4d88: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4d8c: 30079073 csrw mstatus,a5
4d90: 0000d637 lui a2,0xd
4d94: 6585 lui a1,0x1
4d96: 0000d537 lui a0,0xd
4d9a: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4d9e: c1c58593 addi a1,a1,-996 # c1c <SystemCoreClockUpdate>
4da2: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4da6: 4d1070ef jal ra,ca76 <printf>
4daa: a001 j 4daa <vTaskPlaceOnEventList+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3116 (discriminator 2)
vListInsert( pxEventList, &( pxCurrentTCB->xEventListItem ) );
4dac: 200007b7 lui a5,0x20000
4db0: 842e mv s0,a1
4db2: 1047a583 lw a1,260(a5) # 20000104 <pxCurrentTCB>
4db6: 05e1 addi a1,a1,24
4db8: dbdfe0ef jal ra,3b74 <vListInsert>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3118 (discriminator 2)
prvAddCurrentTaskToDelayedList( xTicksToWait, pdTRUE );
4dbc: 4585 li a1,1
4dbe: 8522 mv a0,s0
4dc0: 805ff0ef jal ra,45c4 <prvAddCurrentTaskToDelayedList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3119 (discriminator 2)
}
4dc4: f76fb06f j 53a <__riscv_restore_0>
00004dc8 <vTaskPlaceOnEventListRestricted>:
vTaskPlaceOnEventListRestricted():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3153
{
4dc8: f4efb2ef jal t0,516 <__riscv_save_0>
4dcc: 872a mv a4,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3154
configASSERT( pxEventList );
4dce: e505 bnez a0,4df6 <vTaskPlaceOnEventListRestricted+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3154 (discriminator 1)
4dd0: 67a1 lui a5,0x8
4dd2: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4dd6: 30079073 csrw mstatus,a5
4dda: 0000d637 lui a2,0xd
4dde: 6585 lui a1,0x1
4de0: 0000d537 lui a0,0xd
4de4: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4de8: c5258593 addi a1,a1,-942 # c52 <SystemCoreClockUpdate+0x36>
4dec: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4df0: 487070ef jal ra,ca76 <printf>
4df4: a001 j 4df4 <vTaskPlaceOnEventListRestricted+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3166 (discriminator 2)
listINSERT_END( pxEventList, &( pxCurrentTCB->xEventListItem ) );
4df6: 200007b7 lui a5,0x20000
4dfa: 10478793 addi a5,a5,260 # 20000104 <pxCurrentTCB>
4dfe: 4354 lw a3,4(a4)
4e00: 852e mv a0,a1
4e02: 438c lw a1,0(a5)
4e04: 0086a803 lw a6,8(a3)
4e08: cdd4 sw a3,28(a1)
4e0a: 438c lw a1,0(a5)
4e0c: 0305a023 sw a6,32(a1)
4e10: 0007a803 lw a6,0(a5)
4e14: 468c lw a1,8(a3)
4e16: 0861 addi a6,a6,24
4e18: 0105a223 sw a6,4(a1)
4e1c: 0007a803 lw a6,0(a5)
4e20: 439c lw a5,0(a5)
4e22: 0861 addi a6,a6,24
4e24: 0106a423 sw a6,8(a3)
4e28: d798 sw a4,40(a5)
4e2a: 431c lw a5,0(a4)
4e2c: 0785 addi a5,a5,1
4e2e: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3171 (discriminator 2)
if( xWaitIndefinitely != pdFALSE )
4e30: c211 beqz a2,4e34 <vTaskPlaceOnEventListRestricted+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3173
xTicksToWait = portMAX_DELAY;
4e32: 557d li a0,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3177
prvAddCurrentTaskToDelayedList( xTicksToWait, xWaitIndefinitely );
4e34: 85b2 mv a1,a2
4e36: f8eff0ef jal ra,45c4 <prvAddCurrentTaskToDelayedList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3178
}
4e3a: f00fb06f j 53a <__riscv_restore_0>
00004e3e <xTaskRemoveFromEventList>:
xTaskRemoveFromEventList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3201
pxUnblockedTCB = listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
4e3e: 455c lw a5,12(a0)
4e40: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3202
configASSERT( pxUnblockedTCB );
4e42: e795 bnez a5,4e6e <xTaskRemoveFromEventList+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3184 (discriminator 1)
{
4e44: ed2fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3202 (discriminator 1)
configASSERT( pxUnblockedTCB );
4e48: 67a1 lui a5,0x8
4e4a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4e4e: 30079073 csrw mstatus,a5
4e52: 0000d637 lui a2,0xd
4e56: 6585 lui a1,0x1
4e58: 0000d537 lui a0,0xd
4e5c: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4e60: c8258593 addi a1,a1,-894 # c82 <SystemCoreClockUpdate+0x66>
4e64: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4e68: 40f070ef jal ra,ca76 <printf>
4e6c: a001 j 4e6c <xTaskRemoveFromEventList+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3203 (discriminator 2)
listREMOVE_ITEM( &( pxUnblockedTCB->xEventListItem ) );
4e6e: 4fd0 lw a2,28(a5)
4e70: 5394 lw a3,32(a5)
4e72: 5798 lw a4,40(a5)
4e74: 01878593 addi a1,a5,24
4e78: c614 sw a3,8(a2)
4e7a: c2d0 sw a2,4(a3)
4e7c: 4350 lw a2,4(a4)
4e7e: 00b61363 bne a2,a1,4e84 <xTaskRemoveFromEventList+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3203 (discriminator 1)
4e82: c354 sw a3,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3203 (discriminator 3)
4e84: 4314 lw a3,0(a4)
4e86: 0207a423 sw zero,40(a5)
4e8a: 16fd addi a3,a3,-1
4e8c: c314 sw a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3205 (discriminator 3)
if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )
4e8e: 20000737 lui a4,0x20000
4e92: 11872703 lw a4,280(a4) # 20000118 <uxSchedulerSuspended>
4e96: 57d4 lw a3,44(a5)
4e98: ef25 bnez a4,4f10 <xTaskRemoveFromEventList+0xd2>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3207
listREMOVE_ITEM( &( pxUnblockedTCB->xStateListItem ) );
4e9a: 478c lw a1,8(a5)
4e9c: 47d0 lw a2,12(a5)
4e9e: 4bd8 lw a4,20(a5)
4ea0: c590 sw a2,8(a1)
4ea2: 47d0 lw a2,12(a5)
4ea4: 4348 lw a0,4(a4)
4ea6: c24c sw a1,4(a2)
4ea8: 00478593 addi a1,a5,4
4eac: 00b51363 bne a0,a1,4eb2 <xTaskRemoveFromEventList+0x74>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3207 (discriminator 1)
4eb0: c350 sw a2,4(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3207 (discriminator 3)
4eb2: 4310 lw a2,0(a4)
4eb4: 0007aa23 sw zero,20(a5)
4eb8: 167d addi a2,a2,-1
4eba: c310 sw a2,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3208 (discriminator 3)
prvAddTaskToReadyList( pxUnblockedTCB );
4ebc: 20000737 lui a4,0x20000
4ec0: 12070713 addi a4,a4,288 # 20000120 <uxTopReadyPriority>
4ec4: 4310 lw a2,0(a4)
4ec6: 00d67363 bgeu a2,a3,4ecc <xTaskRemoveFromEventList+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3208 (discriminator 1)
4eca: c314 sw a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3208 (discriminator 3)
4ecc: 4751 li a4,20
4ece: 02e68633 mul a2,a3,a4
4ed2: 20015737 lui a4,0x20015
4ed6: 55070713 addi a4,a4,1360 # 20015550 <pxReadyTasksLists>
4eda: 9732 add a4,a4,a2
4edc: 4350 lw a2,4(a4)
4ede: 4608 lw a0,8(a2)
4ee0: c790 sw a2,8(a5)
4ee2: c7c8 sw a0,12(a5)
4ee4: 4608 lw a0,8(a2)
4ee6: c14c sw a1,4(a0)
4ee8: c60c sw a1,8(a2)
4eea: cbd8 sw a4,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3228
listINSERT_END( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );
4eec: 431c lw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3244
xReturn = pdFALSE;
4eee: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3228
listINSERT_END( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );
4ef0: 0785 addi a5,a5,1
4ef2: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3231
if( pxUnblockedTCB->uxPriority > pxCurrentTCB->uxPriority )
4ef4: 200007b7 lui a5,0x20000
4ef8: 1047a783 lw a5,260(a5) # 20000104 <pxCurrentTCB>
4efc: 57dc lw a5,44(a5)
4efe: 00d7f863 bgeu a5,a3,4f0e <xTaskRemoveFromEventList+0xd0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3240
xYieldPending = pdTRUE;
4f02: 200007b7 lui a5,0x20000
4f06: 4705 li a4,1
4f08: 12e7ae23 sw a4,316(a5) # 2000013c <xYieldPending>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3236
xReturn = pdTRUE;
4f0c: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3248
}
4f0e: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3228
listINSERT_END( &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );
4f10: 20015737 lui a4,0x20015
4f14: 6a470713 addi a4,a4,1700 # 200156a4 <xPendingReadyList>
4f18: 4350 lw a2,4(a4)
4f1a: 4608 lw a0,8(a2)
4f1c: cfd0 sw a2,28(a5)
4f1e: d388 sw a0,32(a5)
4f20: 4608 lw a0,8(a2)
4f22: c14c sw a1,4(a0)
4f24: c60c sw a1,8(a2)
4f26: d798 sw a4,40(a5)
4f28: b7d1 j 4eec <xTaskRemoveFromEventList+0xae>
00004f2a <vTaskInternalSetTimeOutState>:
vTaskInternalSetTimeOutState():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3315
pxTimeOut->xOverflowCount = xNumOfOverflows;
4f2a: 200007b7 lui a5,0x20000
4f2e: 12c7a783 lw a5,300(a5) # 2000012c <xNumOfOverflows>
4f32: c11c sw a5,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3316
pxTimeOut->xTimeOnEntering = xTickCount;
4f34: 200007b7 lui a5,0x20000
4f38: 1387a783 lw a5,312(a5) # 20000138 <xTickCount>
4f3c: c15c sw a5,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3317
}
4f3e: 8082 ret
00004f40 <xTaskCheckForTimeOut>:
xTaskCheckForTimeOut():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3322
{
4f40: dd6fb2ef jal t0,516 <__riscv_save_0>
4f44: 1141 addi sp,sp,-16
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3325
configASSERT( pxTimeOut );
4f46: e505 bnez a0,4f6e <xTaskCheckForTimeOut+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3325 (discriminator 1)
4f48: 67a1 lui a5,0x8
4f4a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4f4e: 30079073 csrw mstatus,a5
4f52: 0000d637 lui a2,0xd
4f56: 6585 lui a1,0x1
4f58: 0000d537 lui a0,0xd
4f5c: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4f60: cfd58593 addi a1,a1,-771 # cfd <SystemCoreClockUpdate+0xe1>
4f64: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4f68: 30f070ef jal ra,ca76 <printf>
4f6c: a001 j 4f6c <xTaskCheckForTimeOut+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3326 (discriminator 2)
configASSERT( pxTicksToWait );
4f6e: e585 bnez a1,4f96 <xTaskCheckForTimeOut+0x56>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3326 (discriminator 1)
4f70: 67a1 lui a5,0x8
4f72: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
4f76: 30079073 csrw mstatus,a5
4f7a: 0000d637 lui a2,0xd
4f7e: 6585 lui a1,0x1
4f80: 0000d537 lui a0,0xd
4f84: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
4f88: cfe58593 addi a1,a1,-770 # cfe <SystemCoreClockUpdate+0xe2>
4f8c: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
4f90: 2e7070ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3326 (discriminator 2)
4f94: a001 j 4f94 <xTaskCheckForTimeOut+0x54>
4f96: c62e sw a1,12(sp)
4f98: c42a sw a0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3328 (discriminator 2)
taskENTER_CRITICAL();
4f9a: b57fe0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3335 (discriminator 2)
if( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE )
4f9e: 20000737 lui a4,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3331 (discriminator 2)
const TickType_t xConstTickCount = xTickCount;
4fa2: 200007b7 lui a5,0x20000
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3335 (discriminator 2)
if( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE )
4fa6: 10470713 addi a4,a4,260 # 20000104 <pxCurrentTCB>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3331 (discriminator 2)
const TickType_t xConstTickCount = xTickCount;
4faa: 1387a683 lw a3,312(a5) # 20000138 <xTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3335 (discriminator 2)
if( pxCurrentTCB->ucDelayAborted != ( uint8_t ) pdFALSE )
4fae: 431c lw a5,0(a4)
4fb0: 4522 lw a0,8(sp)
4fb2: 45b2 lw a1,12(sp)
4fb4: 0517c783 lbu a5,81(a5)
4fb8: cb99 beqz a5,4fce <xTaskCheckForTimeOut+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3339
pxCurrentTCB->ucDelayAborted = pdFALSE;
4fba: 431c lw a5,0(a4)
4fbc: 040788a3 sb zero,81(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3363
xReturn = pdTRUE;
4fc0: 4405 li s0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3379
taskEXIT_CRITICAL();
4fc2: b45fe0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3382
}
4fc6: 8522 mv a0,s0
4fc8: 0141 addi sp,sp,16
4fca: d70fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3346
if( *pxTicksToWait == portMAX_DELAY )
4fce: 419c lw a5,0(a1)
4fd0: 577d li a4,-1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3351
xReturn = pdFALSE;
4fd2: 4401 li s0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3346
if( *pxTicksToWait == portMAX_DELAY )
4fd4: fee787e3 beq a5,a4,4fc2 <xTaskCheckForTimeOut+0x82>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3356
if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */
4fd8: 20000637 lui a2,0x20000
4fdc: 12c62603 lw a2,300(a2) # 2000012c <xNumOfOverflows>
4fe0: 00052803 lw a6,0(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3332
const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering;
4fe4: 4158 lw a4,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3356
if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xConstTickCount >= pxTimeOut->xTimeOnEntering ) ) /*lint !e525 Indentation preferred as is to make code within pre-processor directives clearer. */
4fe6: 00c80763 beq a6,a2,4ff4 <xTaskCheckForTimeOut+0xb4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3356 (discriminator 1)
4fea: 00e6e563 bltu a3,a4,4ff4 <xTaskCheckForTimeOut+0xb4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3364
*pxTicksToWait = ( TickType_t ) 0;
4fee: 0005a023 sw zero,0(a1)
4ff2: b7f9 j 4fc0 <xTaskCheckForTimeOut+0x80>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3332
const TickType_t xElapsedTime = xConstTickCount - pxTimeOut->xTimeOnEntering;
4ff4: 40e68633 sub a2,a3,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3366
else if( xElapsedTime < *pxTicksToWait ) /*lint !e961 Explicit casting is only redundant with some compilers, whereas others require it to prevent integer conversion errors. */
4ff8: fef67be3 bgeu a2,a5,4fee <xTaskCheckForTimeOut+0xae>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3369
*pxTicksToWait -= xElapsedTime;
4ffc: 8f95 sub a5,a5,a3
4ffe: 97ba add a5,a5,a4
5000: c19c sw a5,0(a1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3370
vTaskInternalSetTimeOutState( pxTimeOut );
5002: f29ff0ef jal ra,4f2a <vTaskInternalSetTimeOutState>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3371
xReturn = pdFALSE;
5006: 4401 li s0,0
5008: bf6d j 4fc2 <xTaskCheckForTimeOut+0x82>
0000500a <vTaskMissedYield>:
vTaskMissedYield():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3387
xYieldPending = pdTRUE;
500a: 200007b7 lui a5,0x20000
500e: 4705 li a4,1
5010: 12e7ae23 sw a4,316(a5) # 2000013c <xYieldPending>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:3388
}
5014: 8082 ret
00005016 <xTaskGetSchedulerState>:
xTaskGetSchedulerState():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4050
if( xSchedulerRunning == pdFALSE )
5016: 200007b7 lui a5,0x20000
501a: 1347a783 lw a5,308(a5) # 20000134 <xSchedulerRunning>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4052
xReturn = taskSCHEDULER_NOT_STARTED;
501e: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4050
if( xSchedulerRunning == pdFALSE )
5020: cb81 beqz a5,5030 <xTaskGetSchedulerState+0x1a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4056
if( uxSchedulerSuspended == ( UBaseType_t ) pdFALSE )
5022: 200007b7 lui a5,0x20000
5026: 1187a503 lw a0,280(a5) # 20000118 <uxSchedulerSuspended>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4062
xReturn = taskSCHEDULER_SUSPENDED;
502a: 00153513 seqz a0,a0
502e: 0506 slli a0,a0,0x1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4067
}
5030: 8082 ret
00005032 <xTaskPriorityInherit>:
xTaskPriorityInherit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4082
if( pxMutexHolder != NULL )
5032: c54d beqz a0,50dc <xTaskPriorityInherit+0xaa>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4075
{
5034: cc8fb2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4087
if( pxMutexHolderTCB->uxPriority < pxCurrentTCB->uxPriority )
5038: 20000937 lui s2,0x20000
503c: 10490793 addi a5,s2,260 # 20000104 <pxCurrentTCB>
5040: 4394 lw a3,0(a5)
5042: 5558 lw a4,44(a0)
5044: 10490913 addi s2,s2,260
5048: 56d4 lw a3,44(a3)
504a: 08d77363 bgeu a4,a3,50d0 <xTaskPriorityInherit+0x9e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4092
if( ( listGET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )
504e: 4d1c lw a5,24(a0)
5050: 0007c863 bltz a5,5060 <xTaskPriorityInherit+0x2e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4094
listSET_LIST_ITEM_VALUE( &( pxMutexHolderTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxCurrentTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
5054: 00092783 lw a5,0(s2)
5058: 57d4 lw a3,44(a5)
505a: 47bd li a5,15
505c: 8f95 sub a5,a5,a3
505e: cd1c sw a5,24(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4103
if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxMutexHolderTCB->uxPriority ] ), &( pxMutexHolderTCB->xStateListItem ) ) != pdFALSE )
5060: 4651 li a2,20
5062: 02c70733 mul a4,a4,a2
5066: 200157b7 lui a5,0x20015
506a: 55078693 addi a3,a5,1360 # 20015550 <pxReadyTasksLists>
506e: 55078493 addi s1,a5,1360
5072: 9736 add a4,a4,a3
5074: 4954 lw a3,20(a0)
5076: 04e69863 bne a3,a4,50c6 <xTaskPriorityInherit+0x94>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4105
if( uxListRemove( &( pxMutexHolderTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
507a: 00450993 addi s3,a0,4
507e: 842a mv s0,a0
5080: 854e mv a0,s3
5082: b21fe0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4118
pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;
5086: 00092783 lw a5,0(s2)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4119
prvAddTaskToReadyList( pxMutexHolderTCB );
508a: 20000737 lui a4,0x20000
508e: 12070713 addi a4,a4,288 # 20000120 <uxTopReadyPriority>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4118
pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;
5092: 57dc lw a5,44(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4119
prvAddTaskToReadyList( pxMutexHolderTCB );
5094: 4314 lw a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4118
pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;
5096: d45c sw a5,44(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4119
prvAddTaskToReadyList( pxMutexHolderTCB );
5098: 00f6f363 bgeu a3,a5,509e <xTaskPriorityInherit+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4119 (discriminator 1)
509c: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4119 (discriminator 3)
509e: 4751 li a4,20
50a0: 02e787b3 mul a5,a5,a4
50a4: 97a6 add a5,a5,s1
50a6: 43d8 lw a4,4(a5)
50a8: 4714 lw a3,8(a4)
50aa: c418 sw a4,8(s0)
50ac: c454 sw a3,12(s0)
50ae: 4714 lw a3,8(a4)
50b0: 0136a223 sw s3,4(a3)
50b4: 01372423 sw s3,8(a4)
50b8: 4398 lw a4,0(a5)
50ba: c85c sw a5,20(s0)
50bc: 0705 addi a4,a4,1
50be: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4130
xReturn = pdTRUE;
50c0: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4157
}
50c2: c6efb06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4124
pxMutexHolderTCB->uxPriority = pxCurrentTCB->uxPriority;
50c6: 00092783 lw a5,0(s2)
50ca: 57dc lw a5,44(a5)
50cc: d55c sw a5,44(a0)
50ce: bfcd j 50c0 <xTaskPriorityInherit+0x8e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4134
if( pxMutexHolderTCB->uxBasePriority < pxCurrentTCB->uxPriority )
50d0: 439c lw a5,0(a5)
50d2: 4168 lw a0,68(a0)
50d4: 57dc lw a5,44(a5)
50d6: 00f53533 sltu a0,a0,a5
50da: b7e5 j 50c2 <xTaskPriorityInherit+0x90>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4077
BaseType_t xReturn = pdFALSE;
50dc: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4157
}
50de: 8082 ret
000050e0 <xTaskPriorityDisinherit>:
xTaskPriorityDisinherit():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4169
if( pxMutexHolder != NULL )
50e0: e511 bnez a0,50ec <xTaskPriorityDisinherit+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4167
BaseType_t xReturn = pdFALSE;
50e2: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4237
}
50e4: 8082 ret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4167
BaseType_t xReturn = pdFALSE;
50e6: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4237
}
50e8: c52fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4165
{
50ec: c2afb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4175
configASSERT( pxTCB == pxCurrentTCB );
50f0: 200007b7 lui a5,0x20000
50f4: 1047a783 lw a5,260(a5) # 20000104 <pxCurrentTCB>
50f8: 842a mv s0,a0
50fa: 02a78563 beq a5,a0,5124 <xTaskPriorityDisinherit+0x44>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4175 (discriminator 1)
50fe: 67a1 lui a5,0x8
5100: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
5104: 30079073 csrw mstatus,a5
5108: 0000d637 lui a2,0xd
510c: 6585 lui a1,0x1
510e: 0000d537 lui a0,0xd
5112: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
5116: 04f58593 addi a1,a1,79 # 104f <ETH_Start+0x1f>
511a: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
511e: 159070ef jal ra,ca76 <printf>
5122: a001 j 5122 <xTaskPriorityDisinherit+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4176 (discriminator 2)
configASSERT( pxTCB->uxMutexesHeld );
5124: 47bc lw a5,72(a5)
5126: e785 bnez a5,514e <xTaskPriorityDisinherit+0x6e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4176 (discriminator 1)
5128: 67a1 lui a5,0x8
512a: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
512e: 30079073 csrw mstatus,a5
5132: 0000d637 lui a2,0xd
5136: 6585 lui a1,0x1
5138: 0000d537 lui a0,0xd
513c: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
5140: 05058593 addi a1,a1,80 # 1050 <ETH_Start+0x20>
5144: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
5148: 12f070ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4176 (discriminator 2)
514c: a001 j 514c <xTaskPriorityDisinherit+0x6c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4181 (discriminator 2)
if( pxTCB->uxPriority != pxTCB->uxBasePriority )
514e: 5554 lw a3,44(a0)
5150: 4178 lw a4,68(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4177 (discriminator 2)
( pxTCB->uxMutexesHeld )--;
5152: 17fd addi a5,a5,-1
5154: c53c sw a5,72(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4181 (discriminator 2)
if( pxTCB->uxPriority != pxTCB->uxBasePriority )
5156: f8e688e3 beq a3,a4,50e6 <xTaskPriorityDisinherit+0x6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4184
if( pxTCB->uxMutexesHeld == ( UBaseType_t ) 0 )
515a: f7d1 bnez a5,50e6 <xTaskPriorityDisinherit+0x6>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4191
if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
515c: 00450493 addi s1,a0,4
5160: 8526 mv a0,s1
5162: a41fe0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4203
pxTCB->uxPriority = pxTCB->uxBasePriority;
5166: 407c lw a5,68(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4208
listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) pxTCB->uxPriority ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
5168: 473d li a4,15
516a: 8f1d sub a4,a4,a5
516c: cc18 sw a4,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4209
prvAddTaskToReadyList( pxTCB );
516e: 20000737 lui a4,0x20000
5172: 12070713 addi a4,a4,288 # 20000120 <uxTopReadyPriority>
5176: 4314 lw a3,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4203
pxTCB->uxPriority = pxTCB->uxBasePriority;
5178: d45c sw a5,44(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4209
prvAddTaskToReadyList( pxTCB );
517a: 00f6f363 bgeu a3,a5,5180 <xTaskPriorityDisinherit+0xa0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4209 (discriminator 1)
517e: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4209 (discriminator 3)
5180: 4751 li a4,20
5182: 02e78733 mul a4,a5,a4
5186: 200157b7 lui a5,0x20015
518a: 55078793 addi a5,a5,1360 # 20015550 <pxReadyTasksLists>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4219 (discriminator 3)
xReturn = pdTRUE;
518e: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4209 (discriminator 3)
prvAddTaskToReadyList( pxTCB );
5190: 97ba add a5,a5,a4
5192: 43d8 lw a4,4(a5)
5194: 4714 lw a3,8(a4)
5196: c418 sw a4,8(s0)
5198: c454 sw a3,12(s0)
519a: 4714 lw a3,8(a4)
519c: c2c4 sw s1,4(a3)
519e: c704 sw s1,8(a4)
51a0: 4398 lw a4,0(a5)
51a2: c85c sw a5,20(s0)
51a4: 0705 addi a4,a4,1
51a6: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4236 (discriminator 3)
return xReturn;
51a8: b781 j 50e8 <xTaskPriorityDisinherit+0x8>
000051aa <vTaskPriorityDisinheritAfterTimeout>:
vTaskPriorityDisinheritAfterTimeout():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4251
if( pxMutexHolder != NULL )
51aa: c175 beqz a0,528e <vTaskPriorityDisinheritAfterTimeout+0xe4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4246
{
51ac: b6afb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4255
configASSERT( pxTCB->uxMutexesHeld );
51b0: 4534 lw a3,72(a0)
51b2: 842a mv s0,a0
51b4: e685 bnez a3,51dc <vTaskPriorityDisinheritAfterTimeout+0x32>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4255 (discriminator 1)
51b6: 67a1 lui a5,0x8
51b8: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
51bc: 30079073 csrw mstatus,a5
51c0: 0000d637 lui a2,0xd
51c4: 6585 lui a1,0x1
51c6: 0000d537 lui a0,0xd
51ca: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
51ce: 09f58593 addi a1,a1,159 # 109f <RGMII_TXC_Delay+0x1f>
51d2: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
51d6: 0a1070ef jal ra,ca76 <printf>
51da: a001 j 51da <vTaskPriorityDisinheritAfterTimeout+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4261 (discriminator 2)
if( pxTCB->uxBasePriority < uxHighestPriorityWaitingTask )
51dc: 417c lw a5,68(a0)
51de: 00b7f363 bgeu a5,a1,51e4 <vTaskPriorityDisinheritAfterTimeout+0x3a>
51e2: 87ae mv a5,a1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4271 (discriminator 2)
if( pxTCB->uxPriority != uxPriorityToUse )
51e4: 5458 lw a4,44(s0)
51e6: 0af70263 beq a4,a5,528a <vTaskPriorityDisinheritAfterTimeout+0xe0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4277
if( pxTCB->uxMutexesHeld == uxOnlyOneMutexHeld )
51ea: 4605 li a2,1
51ec: 08c69f63 bne a3,a2,528a <vTaskPriorityDisinheritAfterTimeout+0xe0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4282
configASSERT( pxTCB != pxCurrentTCB );
51f0: 200006b7 lui a3,0x20000
51f4: 1046a683 lw a3,260(a3) # 20000104 <pxCurrentTCB>
51f8: 02869563 bne a3,s0,5222 <vTaskPriorityDisinheritAfterTimeout+0x78>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4282 (discriminator 1)
51fc: 67a1 lui a5,0x8
51fe: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
5202: 30079073 csrw mstatus,a5
5206: 0000d637 lui a2,0xd
520a: 6585 lui a1,0x1
520c: 0000d537 lui a0,0xd
5210: 34460613 addi a2,a2,836 # d344 <MemSize+0x1b0>
5214: 0ba58593 addi a1,a1,186 # 10ba <FLASH_Unlock+0x2>
5218: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
521c: 05b070ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4282 (discriminator 2)
5220: a001 j 5220 <vTaskPriorityDisinheritAfterTimeout+0x76>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4293 (discriminator 2)
if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )
5222: 4c14 lw a3,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4289 (discriminator 2)
pxTCB->uxPriority = uxPriorityToUse;
5224: d45c sw a5,44(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4293 (discriminator 2)
if( ( listGET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ) ) & taskEVENT_LIST_ITEM_VALUE_IN_USE ) == 0UL )
5226: 0006c663 bltz a3,5232 <vTaskPriorityDisinheritAfterTimeout+0x88>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4295
listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( TickType_t ) configMAX_PRIORITIES - ( TickType_t ) uxPriorityToUse ); /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
522a: 46bd li a3,15
522c: 40f687b3 sub a5,a3,a5
5230: cc1c sw a5,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4308
if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxPriorityUsedOnEntry ] ), &( pxTCB->xStateListItem ) ) != pdFALSE )
5232: 4651 li a2,20
5234: 02c70733 mul a4,a4,a2
5238: 200157b7 lui a5,0x20015
523c: 55078693 addi a3,a5,1360 # 20015550 <pxReadyTasksLists>
5240: 55078493 addi s1,a5,1360
5244: 9736 add a4,a4,a3
5246: 4854 lw a3,20(s0)
5248: 04e69163 bne a3,a4,528a <vTaskPriorityDisinheritAfterTimeout+0xe0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4310
if( uxListRemove( &( pxTCB->xStateListItem ) ) == ( UBaseType_t ) 0 )
524c: 00440913 addi s2,s0,4
5250: 854a mv a0,s2
5252: 951fe0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4322
prvAddTaskToReadyList( pxTCB );
5256: 20000737 lui a4,0x20000
525a: 12070713 addi a4,a4,288 # 20000120 <uxTopReadyPriority>
525e: 545c lw a5,44(s0)
5260: 4314 lw a3,0(a4)
5262: 00f6f363 bgeu a3,a5,5268 <vTaskPriorityDisinheritAfterTimeout+0xbe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4322 (discriminator 1)
5266: c31c sw a5,0(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4322 (discriminator 3)
5268: 4751 li a4,20
526a: 02e787b3 mul a5,a5,a4
526e: 97a6 add a5,a5,s1
5270: 43d8 lw a4,4(a5)
5272: 4714 lw a3,8(a4)
5274: c418 sw a4,8(s0)
5276: c454 sw a3,12(s0)
5278: 4714 lw a3,8(a4)
527a: 0126a223 sw s2,4(a3)
527e: 01272423 sw s2,8(a4)
5282: 4398 lw a4,0(a5)
5284: c85c sw a5,20(s0)
5286: 0705 addi a4,a4,1
5288: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4343
}
528a: ab0fb06f j 53a <__riscv_restore_0>
528e: 8082 ret
00005290 <pvTaskIncrementMutexHeldCount>:
pvTaskIncrementMutexHeldCount():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4691
if( pxCurrentTCB != NULL )
5290: 200007b7 lui a5,0x20000
5294: 10478713 addi a4,a5,260 # 20000104 <pxCurrentTCB>
5298: 4318 lw a4,0(a4)
529a: 10478793 addi a5,a5,260
529e: c709 beqz a4,52a8 <pvTaskIncrementMutexHeldCount+0x18>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4693
( pxCurrentTCB->uxMutexesHeld )++;
52a0: 4394 lw a3,0(a5)
52a2: 46b8 lw a4,72(a3)
52a4: 0705 addi a4,a4,1
52a6: c6b8 sw a4,72(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4696
return pxCurrentTCB;
52a8: 4388 lw a0,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/tasks.c:4697
}
52aa: 8082 ret
000052ac <prvCheckForValidListAndQueue>:
prvCheckForValidListAndQueue():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:929
pxOverflowTimerList = pxTemp;
}
/*-----------------------------------------------------------*/
static void prvCheckForValidListAndQueue( void )
{
52ac: a6afb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:933
/* Check that the list from which active timers are referenced, and the
* queue used to communicate with the timer service, have been
* initialised. */
taskENTER_CRITICAL();
52b0: 841fe0ef jal ra,3af0 <vPortEnterCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:935
{
if( xTimerQueue == NULL )
52b4: 90c18413 addi s0,gp,-1780 # 2000014c <xTimerQueue>
52b8: 401c lw a5,0(s0)
52ba: e3b1 bnez a5,52fe <prvCheckForValidListAndQueue+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:937
{
vListInitialise( &xActiveTimerList1 );
52bc: 20015537 lui a0,0x20015
52c0: 6e050913 addi s2,a0,1760 # 200156e0 <xActiveTimerList1>
52c4: 6e050513 addi a0,a0,1760
52c8: 893fe0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:938
vListInitialise( &xActiveTimerList2 );
52cc: 20015537 lui a0,0x20015
52d0: 6f450493 addi s1,a0,1780 # 200156f4 <xActiveTimerList2>
52d4: 6f450513 addi a0,a0,1780
52d8: 883fe0ef jal ra,3b5a <vListInitialise>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:939
pxCurrentTimerList = &xActiveTimerList1;
52dc: 9121a023 sw s2,-1792(gp) # 20000140 <pxCurrentTimerList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:953
xTimerQueue = xQueueCreateStatic( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, ( UBaseType_t ) sizeof( DaemonTaskMessage_t ), &( ucStaticTimerQueueStorage[ 0 ] ), &xStaticTimerQueue );
}
#else
{
xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) );
52e0: 4601 li a2,0
52e2: 45c1 li a1,16
52e4: 4511 li a0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:940
pxOverflowTimerList = &xActiveTimerList2;
52e6: 9091a223 sw s1,-1788(gp) # 20000144 <pxOverflowTimerList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:953
xTimerQueue = xQueueCreate( ( UBaseType_t ) configTIMER_QUEUE_LENGTH, sizeof( DaemonTaskMessage_t ) );
52ea: acbfe0ef jal ra,3db4 <xQueueGenericCreate>
52ee: c008 sw a0,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:959
}
#endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
#if ( configQUEUE_REGISTRY_SIZE > 0 )
{
if( xTimerQueue != NULL )
52f0: c519 beqz a0,52fe <prvCheckForValidListAndQueue+0x52>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:961
{
vQueueAddToRegistry( xTimerQueue, "TmrQ" );
52f2: 0000d5b7 lui a1,0xd
52f6: 38458593 addi a1,a1,900 # d384 <MemSize+0x1f0>
52fa: 948ff0ef jal ra,4442 <vQueueAddToRegistry>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:975
else
{
mtCOVERAGE_TEST_MARKER();
}
}
taskEXIT_CRITICAL();
52fe: 809fe0ef jal ra,3b06 <vPortExitCritical>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:976
}
5302: a38fb06f j 53a <__riscv_restore_0>
00005306 <prvInsertTimerInActiveList>:
prvInsertTimerInActiveList():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:715
{
5306: a10fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:718
listSET_LIST_ITEM_VALUE( &( pxTimer->xTimerListItem ), xNextExpiryTime );
530a: c14c sw a1,4(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:719
listSET_LIST_ITEM_OWNER( &( pxTimer->xTimerListItem ), pxTimer );
530c: c908 sw a0,16(a0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:715
{
530e: 87aa mv a5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:721
if( xNextExpiryTime <= xTimeNow )
5310: 02b66063 bltu a2,a1,5330 <prvInsertTimerInActiveList+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:725
if( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
5314: 4d18 lw a4,24(a0)
5316: 8e15 sub a2,a2,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:729
xProcessTimerNow = pdTRUE;
5318: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:725
if( ( ( TickType_t ) ( xTimeNow - xCommandTime ) ) >= pxTimer->xTimerPeriodInTicks ) /*lint !e961 MISRA exception as the casts are only redundant for some ports. */
531a: 00e67963 bgeu a2,a4,532c <prvInsertTimerInActiveList+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:733
vListInsert( pxOverflowTimerList, &( pxTimer->xTimerListItem ) );
531e: 00478593 addi a1,a5,4
5322: 9041a503 lw a0,-1788(gp) # 20000144 <pxOverflowTimerList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:747
vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );
5326: 84ffe0ef jal ra,3b74 <vListInsert>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:716
BaseType_t xProcessTimerNow = pdFALSE;
532a: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:752
}
532c: a0efb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:738
if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) )
5330: 00d67563 bgeu a2,a3,533a <prvInsertTimerInActiveList+0x34>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:729 (discriminator 1)
xProcessTimerNow = pdTRUE;
5334: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:738 (discriminator 1)
if( ( xTimeNow < xCommandTime ) && ( xNextExpiryTime >= xCommandTime ) )
5336: fed5fbe3 bgeu a1,a3,532c <prvInsertTimerInActiveList+0x26>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:747
vListInsert( pxCurrentTimerList, &( pxTimer->xTimerListItem ) );
533a: 00478593 addi a1,a5,4
533e: 9001a503 lw a0,-1792(gp) # 20000140 <pxCurrentTimerList>
5342: b7d5 j 5326 <prvInsertTimerInActiveList+0x20>
00005344 <prvReloadTimer>:
prvReloadTimer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:520
{
5344: 9d2fb2ef jal t0,516 <__riscv_save_0>
5348: 842a mv s0,a0
534a: 84ae mv s1,a1
534c: 8932 mv s2,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:524
while( prvInsertTimerInActiveList( pxTimer, ( xExpiredTime + pxTimer->xTimerPeriodInTicks ), xTimeNow, xExpiredTime ) != pdFALSE )
534e: 4c0c lw a1,24(s0)
5350: 86a6 mv a3,s1
5352: 864a mv a2,s2
5354: 95a6 add a1,a1,s1
5356: 8522 mv a0,s0
5358: fafff0ef jal ra,5306 <prvInsertTimerInActiveList>
535c: e119 bnez a0,5362 <prvReloadTimer+0x1e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:533
}
535e: 9dcfb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:527
xExpiredTime += pxTimer->xTimerPeriodInTicks;
5362: 4c1c lw a5,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:531
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
5364: 8522 mv a0,s0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:527
xExpiredTime += pxTimer->xTimerPeriodInTicks;
5366: 94be add s1,s1,a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:531
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
5368: 501c lw a5,32(s0)
536a: 9782 jalr a5
536c: b7cd j 534e <prvReloadTimer+0xa>
0000536e <prvProcessExpiredTimer>:
prvProcessExpiredTimer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:538
{
536e: 9a8fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:539
Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
5372: 9001a783 lw a5,-1792(gp) # 20000140 <pxCurrentTimerList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:538
{
5376: 1141 addi sp,sp,-16
5378: 84aa mv s1,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:539
Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
537a: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:538
{
537c: c62e sw a1,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:539
Timer_t * const pxTimer = ( Timer_t * ) listGET_OWNER_OF_HEAD_ENTRY( pxCurrentTimerList ); /*lint !e9087 !e9079 void * is used as this macro is used with tasks and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
537e: 47c0 lw s0,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:544
( void ) uxListRemove( &( pxTimer->xTimerListItem ) );
5380: 00440513 addi a0,s0,4
5384: 81ffe0ef jal ra,3ba2 <uxListRemove>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:548
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )
5388: 02444783 lbu a5,36(s0)
538c: 4632 lw a2,12(sp)
538e: 0047f713 andi a4,a5,4
5392: cb19 beqz a4,53a8 <prvProcessExpiredTimer+0x3a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:550
prvReloadTimer( pxTimer, xNextExpireTime, xTimeNow );
5394: 85a6 mv a1,s1
5396: 8522 mv a0,s0
5398: fadff0ef jal ra,5344 <prvReloadTimer>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:559
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
539c: 501c lw a5,32(s0)
539e: 8522 mv a0,s0
53a0: 9782 jalr a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:560
}
53a2: 0141 addi sp,sp,16
53a4: 996fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:554
pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_ACTIVE );
53a8: 9bf9 andi a5,a5,-2
53aa: 02f40223 sb a5,36(s0)
53ae: b7fd j 539c <prvProcessExpiredTimer+0x2e>
000053b0 <prvSwitchTimerLists>:
prvSwitchTimerLists():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:904
{
53b0: 966fb2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:912
while( listLIST_IS_EMPTY( pxCurrentTimerList ) == pdFALSE )
53b4: 90018693 addi a3,gp,-1792 # 20000140 <pxCurrentTimerList>
53b8: 4298 lw a4,0(a3)
53ba: 431c lw a5,0(a4)
53bc: eb81 bnez a5,53cc <prvSwitchTimerLists+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:923
pxCurrentTimerList = pxOverflowTimerList;
53be: 90418793 addi a5,gp,-1788 # 20000144 <pxOverflowTimerList>
53c2: 4390 lw a2,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:924
pxOverflowTimerList = pxTemp;
53c4: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:923
pxCurrentTimerList = pxOverflowTimerList;
53c6: c290 sw a2,0(a3)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:925
}
53c8: 972fb06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:914
xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );
53cc: 475c lw a5,12(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:919
prvProcessExpiredTimer( xNextExpireTime, tmrMAX_TIME_BEFORE_OVERFLOW );
53ce: 55fd li a1,-1
53d0: 4388 lw a0,0(a5)
53d2: f9dff0ef jal ra,536e <prvProcessExpiredTimer>
53d6: bff9 j 53b4 <prvSwitchTimerLists+0x4>
000053d8 <prvTimerTask>:
prvTimerTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:564
{
53d8: 916fb2ef jal t0,4ee <__riscv_save_10>
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:814
switch( xMessage.xMessageID )
53dc: 6935 lui s2,0xd
prvTimerTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:564
{
53de: 1141 addi sp,sp,-16
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:814
switch( xMessage.xMessageID )
53e0: 36090913 addi s2,s2,864 # d360 <MemSize+0x1cc>
prvGetNextExpireTime():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:672 (discriminator 1)
*pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList );
53e4: 9001a783 lw a5,-1792(gp) # 20000140 <pxCurrentTimerList>
53e8: 4398 lw a4,0(a5)
53ea: cb29 beqz a4,543c <prvTimerTask+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:676
xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );
53ec: 47dc lw a5,12(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:672
*pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList );
53ee: 4c81 li s9,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:676
xNextExpireTime = listGET_ITEM_VALUE_OF_HEAD_ENTRY( pxCurrentTimerList );
53f0: 0007ac03 lw s8,0(a5)
prvProcessTimerOrBlockTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:605
vTaskSuspendAll();
53f4: d5eff0ef jal ra,4952 <vTaskSuspendAll>
prvSampleTimeNow():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:693
xTimeNow = xTaskGetTickCount();
53f8: d6aff0ef jal ra,4962 <xTaskGetTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:695
if( xTimeNow < xLastTime )
53fc: 9081a783 lw a5,-1784(gp) # 20000148 <xLastTime.6646>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:693
xTimeNow = xTaskGetTickCount();
5400: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:695
if( xTimeNow < xLastTime )
5402: 90818493 addi s1,gp,-1784 # 20000148 <xLastTime.6646>
5406: 90c18a13 addi s4,gp,-1780 # 2000014c <xTimerQueue>
540a: 02f56c63 bltu a0,a5,5442 <prvTimerTask+0x6a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:705
xLastTime = xTimeNow;
540e: c088 sw a0,0(s1)
prvProcessTimerOrBlockTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:617
if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) )
5410: 040c8063 beqz s9,5450 <prvTimerTask+0x78>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:634
xListWasEmpty = listLIST_IS_EMPTY( pxOverflowTimerList );
5414: 9041a783 lw a5,-1788(gp) # 20000144 <pxOverflowTimerList>
5418: 4390 lw a2,0(a5)
541a: 00163613 seqz a2,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:637
vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );
541e: 000a2503 lw a0,0(s4)
5422: 408c05b3 sub a1,s8,s0
5426: 91eff0ef jal ra,4544 <vQueueWaitForMessageRestricted>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:639
if( xTaskResumeAll() == pdFALSE )
542a: eeeff0ef jal ra,4b18 <xTaskResumeAll>
542e: ed19 bnez a0,544c <prvTimerTask+0x74>
NVIC_SetPendingIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:229
5430: e000e7b7 lui a5,0xe000e
5434: 6711 lui a4,0x4
5436: 20e7a023 sw a4,512(a5) # e000e200 <__freertos_irq_stack_top+0xbffde200>
543a: a809 j 544c <prvTimerTask+0x74>
prvGetNextExpireTime():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:672
*pxListWasEmpty = listLIST_IS_EMPTY( pxCurrentTimerList );
543c: 4c85 li s9,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:681
xNextExpireTime = ( TickType_t ) 0U;
543e: 4c01 li s8,0
5440: bf55 j 53f4 <prvTimerTask+0x1c>
prvSampleTimeNow():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:697
prvSwitchTimerLists();
5442: f6fff0ef jal ra,53b0 <prvSwitchTimerLists>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:705
xLastTime = xTimeNow;
5446: c080 sw s0,0(s1)
prvProcessTimerOrBlockTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:655
( void ) xTaskResumeAll();
5448: ed0ff0ef jal ra,4b18 <xTaskResumeAll>
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:814
switch( xMessage.xMessageID )
544c: 4c21 li s8,8
544e: a00d j 5470 <prvTimerTask+0x98>
prvProcessTimerOrBlockTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:617
if( ( xListWasEmpty == pdFALSE ) && ( xNextExpireTime <= xTimeNow ) )
5450: 4601 li a2,0
5452: fd8566e3 bltu a0,s8,541e <prvTimerTask+0x46>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:619
( void ) xTaskResumeAll();
5456: ec2ff0ef jal ra,4b18 <xTaskResumeAll>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:620
prvProcessExpiredTimer( xNextExpireTime, xTimeNow );
545a: 85a2 mv a1,s0
545c: 8562 mv a0,s8
545e: f11ff0ef jal ra,536e <prvProcessExpiredTimer>
5462: b7ed j 544c <prvTimerTask+0x74>
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:777
pxCallback->pxCallbackFunction( pxCallback->pvParameter1, pxCallback->ulParameter2 );
5464: 4792 lw a5,4(sp)
5466: 45b2 lw a1,12(sp)
5468: 9782 jalr a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:788
if( xMessage.xMessageID >= ( BaseType_t ) 0 )
546a: 4782 lw a5,0(sp)
546c: 0007dd63 bgez a5,5486 <prvTimerTask+0xae>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:762
while( xQueueReceive( xTimerQueue, &xMessage, tmrNO_DELAY ) != pdFAIL ) /*lint !e603 xMessage does not have to be initialised as it is passed out, not in, and it is not used unless xQueueReceive() returns pdTRUE. */
5470: 000a2503 lw a0,0(s4)
5474: 4601 li a2,0
5476: 858a mv a1,sp
5478: ca9fe0ef jal ra,4120 <xQueueReceive>
547c: d525 beqz a0,53e4 <prvTimerTask+0xc>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:768
if( xMessage.xMessageID < ( BaseType_t ) 0 )
547e: 4782 lw a5,0(sp)
5480: 4522 lw a0,8(sp)
5482: fe07c1e3 bltz a5,5464 <prvTimerTask+0x8c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:792
pxTimer = xMessage.u.xTimerParameters.pxTimer;
5486: 4422 lw s0,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:794
if( listIS_CONTAINED_WITHIN( NULL, &( pxTimer->xTimerListItem ) ) == pdFALSE ) /*lint !e961. The cast is only redundant when NULL is passed into the macro. */
5488: 485c lw a5,20(s0)
548a: e39d bnez a5,54b0 <prvTimerTask+0xd8>
prvSampleTimeNow():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:693
xTimeNow = xTaskGetTickCount();
548c: cd6ff0ef jal ra,4962 <xTaskGetTickCount>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:695
if( xTimeNow < xLastTime )
5490: 409c lw a5,0(s1)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:693
xTimeNow = xTaskGetTickCount();
5492: 8caa mv s9,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:695
if( xTimeNow < xLastTime )
5494: 00f57463 bgeu a0,a5,549c <prvTimerTask+0xc4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:697
prvSwitchTimerLists();
5498: f19ff0ef jal ra,53b0 <prvSwitchTimerLists>
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:814
switch( xMessage.xMessageID )
549c: 4782 lw a5,0(sp)
prvSampleTimeNow():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:705
xLastTime = xTimeNow;
549e: 0194a023 sw s9,0(s1)
prvProcessReceivedCommands():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:814
switch( xMessage.xMessageID )
54a2: 17fd addi a5,a5,-1
54a4: fcfc66e3 bltu s8,a5,5470 <prvTimerTask+0x98>
54a8: 078a slli a5,a5,0x2
54aa: 97ca add a5,a5,s2
54ac: 439c lw a5,0(a5)
54ae: 8782 jr a5
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:797
( void ) uxListRemove( &( pxTimer->xTimerListItem ) );
54b0: 00440513 addi a0,s0,4
54b4: eeefe0ef jal ra,3ba2 <uxListRemove>
54b8: bfd1 j 548c <prvTimerTask+0xb4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:821
pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;
54ba: 02444783 lbu a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:823
if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE )
54be: 4c0c lw a1,24(s0)
54c0: 4692 lw a3,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:821
pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;
54c2: 0017e793 ori a5,a5,1
54c6: 02f40223 sb a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:823
if( prvInsertTimerInActiveList( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow, xMessage.u.xTimerParameters.xMessageValue ) != pdFALSE )
54ca: 8666 mv a2,s9
54cc: 95b6 add a1,a1,a3
54ce: 8522 mv a0,s0
54d0: e37ff0ef jal ra,5306 <prvInsertTimerInActiveList>
54d4: dd51 beqz a0,5470 <prvTimerTask+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:827
if( ( pxTimer->ucStatus & tmrSTATUS_IS_AUTORELOAD ) != 0 )
54d6: 02444783 lbu a5,36(s0)
54da: 0047f713 andi a4,a5,4
54de: cf01 beqz a4,54f6 <prvTimerTask+0x11e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:829
prvReloadTimer( pxTimer, xMessage.u.xTimerParameters.xMessageValue + pxTimer->xTimerPeriodInTicks, xTimeNow );
54e0: 4c1c lw a5,24(s0)
54e2: 4592 lw a1,4(sp)
54e4: 8666 mv a2,s9
54e6: 8522 mv a0,s0
54e8: 95be add a1,a1,a5
54ea: e5bff0ef jal ra,5344 <prvReloadTimer>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:838
pxTimer->pxCallbackFunction( ( TimerHandle_t ) pxTimer );
54ee: 501c lw a5,32(s0)
54f0: 8522 mv a0,s0
54f2: 9782 jalr a5
54f4: bfb5 j 5470 <prvTimerTask+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:833
pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_ACTIVE );
54f6: 9bf9 andi a5,a5,-2
54f8: 02f40223 sb a5,36(s0)
54fc: bfcd j 54ee <prvTimerTask+0x116>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:850
pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_ACTIVE );
54fe: 02444783 lbu a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:880
pxTimer->ucStatus &= ( ( uint8_t ) ~tmrSTATUS_IS_ACTIVE );
5502: 9bf9 andi a5,a5,-2
5504: 02f40223 sb a5,36(s0)
5508: b7a5 j 5470 <prvTimerTask+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:855
pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;
550a: 02444783 lbu a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:856
pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue;
550e: 4592 lw a1,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:855
pxTimer->ucStatus |= tmrSTATUS_IS_ACTIVE;
5510: 0017e793 ori a5,a5,1
5514: 02f40223 sb a5,36(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:856
pxTimer->xTimerPeriodInTicks = xMessage.u.xTimerParameters.xMessageValue;
5518: cc0c sw a1,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:857
configASSERT( ( pxTimer->xTimerPeriodInTicks > 0 ) );
551a: e19d bnez a1,5540 <prvTimerTask+0x168>
551c: 67a1 lui a5,0x8
551e: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
5522: 30079073 csrw mstatus,a5
5526: 0000d637 lui a2,0xd
552a: 0000d537 lui a0,0xd
552e: 38c60613 addi a2,a2,908 # d38c <MemSize+0x1f8>
5532: 35900593 li a1,857
5536: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
553a: 53c070ef jal ra,ca76 <printf>
553e: a001 j 553e <prvTimerTask+0x166>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:865
( void ) prvInsertTimerInActiveList( pxTimer, ( xTimeNow + pxTimer->xTimerPeriodInTicks ), xTimeNow, xTimeNow );
5540: 86e6 mv a3,s9
5542: 8666 mv a2,s9
5544: 95e6 add a1,a1,s9
5546: 8522 mv a0,s0
5548: dbfff0ef jal ra,5306 <prvInsertTimerInActiveList>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:866
break;
554c: b715 j 5470 <prvTimerTask+0x98>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:874
if( ( pxTimer->ucStatus & tmrSTATUS_IS_STATICALLY_ALLOCATED ) == ( uint8_t ) 0 )
554e: 02444783 lbu a5,36(s0)
5552: 0027f713 andi a4,a5,2
5556: f755 bnez a4,5502 <prvTimerTask+0x12a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:876
vPortFree( pxTimer );
5558: 8522 mv a0,s0
555a: becfe0ef jal ra,3946 <vPortFree>
555e: bf09 j 5470 <prvTimerTask+0x98>
00005560 <xTimerCreateTimerTask>:
xTimerCreateTimerTask():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:234
{
5560: fb7fa2ef jal t0,516 <__riscv_save_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:241
prvCheckForValidListAndQueue();
5564: d49ff0ef jal ra,52ac <prvCheckForValidListAndQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:243
if( xTimerQueue != NULL )
5568: 90c1a783 lw a5,-1780(gp) # 2000014c <xTimerQueue>
556c: e39d bnez a5,5592 <xTimerCreateTimerTask+0x32>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:281
configASSERT( xReturn );
556e: 67a1 lui a5,0x8
5570: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
5574: 30079073 csrw mstatus,a5
5578: 0000d637 lui a2,0xd
557c: 0000d537 lui a0,0xd
5580: 38c60613 addi a2,a2,908 # d38c <MemSize+0x1f8>
5584: 11900593 li a1,281
5588: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
558c: 4ea070ef jal ra,ca76 <printf>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:281 (discriminator 1)
5590: a001 j 5590 <xTimerCreateTimerTask+0x30>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:267
xReturn = xTaskCreate( prvTimerTask,
5592: 0000d5b7 lui a1,0xd
5596: 00005537 lui a0,0x5
559a: 91018793 addi a5,gp,-1776 # 20000150 <xTimerTaskHandle>
559e: 4739 li a4,14
55a0: 4681 li a3,0
55a2: 10000613 li a2,256
55a6: 3a458593 addi a1,a1,932 # d3a4 <MemSize+0x210>
55aa: 3d850513 addi a0,a0,984 # 53d8 <prvTimerTask>
55ae: 90eff0ef jal ra,46bc <xTaskCreate>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:281
configASSERT( xReturn );
55b2: dd55 beqz a0,556e <xTimerCreateTimerTask+0xe>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:283
}
55b4: f87fa06f j 53a <__riscv_restore_0>
000055b8 <xTimerCreate>:
xTimerCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:293
{
55b8: f45fa2ef jal t0,4fc <__riscv_save_4>
55bc: 8aaa mv s5,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:296
pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */
55be: 02800513 li a0,40
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:293
{
55c2: 84ae mv s1,a1
55c4: 8932 mv s2,a2
55c6: 8a36 mv s4,a3
55c8: 89ba mv s3,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:296
pxNewTimer = ( Timer_t * ) pvPortMalloc( sizeof( Timer_t ) ); /*lint !e9087 !e9079 All values returned by pvPortMalloc() have at least the alignment required by the MCU's stack, and the first member of Timer_t is always a pointer to the timer's mame. */
55ca: 9f0fe0ef jal ra,37ba <pvPortMalloc>
55ce: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:298
if( pxNewTimer != NULL )
55d0: c939 beqz a0,5626 <xTimerCreate+0x6e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:303
pxNewTimer->ucStatus = 0x00;
55d2: 02050223 sb zero,36(a0)
prvInitialiseNewTimer():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:363
configASSERT( ( xTimerPeriodInTicks > 0 ) );
55d6: e09d bnez s1,55fc <xTimerCreate+0x44>
55d8: 67a1 lui a5,0x8
55da: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
55de: 30079073 csrw mstatus,a5
55e2: 0000d637 lui a2,0xd
55e6: 0000d537 lui a0,0xd
55ea: 38c60613 addi a2,a2,908 # d38c <MemSize+0x1f8>
55ee: 16b00593 li a1,363
55f2: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
55f6: 480070ef jal ra,ca76 <printf>
55fa: a001 j 55fa <xTimerCreate+0x42>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:367
prvCheckForValidListAndQueue();
55fc: cb1ff0ef jal ra,52ac <prvCheckForValidListAndQueue>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:375
vListInitialiseItem( &( pxNewTimer->xTimerListItem ) );
5600: 00440513 addi a0,s0,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:371
pxNewTimer->pcTimerName = pcTimerName;
5604: 01542023 sw s5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:372
pxNewTimer->xTimerPeriodInTicks = xTimerPeriodInTicks;
5608: cc04 sw s1,24(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:373
pxNewTimer->pvTimerID = pvTimerID;
560a: 01442e23 sw s4,28(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:374
pxNewTimer->pxCallbackFunction = pxCallbackFunction;
560e: 03342023 sw s3,32(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:375
vListInitialiseItem( &( pxNewTimer->xTimerListItem ) );
5612: d5cfe0ef jal ra,3b6e <vListInitialiseItem>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:377
if( uxAutoReload != pdFALSE )
5616: 00090863 beqz s2,5626 <xTimerCreate+0x6e>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:379
pxNewTimer->ucStatus |= tmrSTATUS_IS_AUTORELOAD;
561a: 02444783 lbu a5,36(s0)
561e: 0047e793 ori a5,a5,4
5622: 02f40223 sb a5,36(s0)
xTimerCreate():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:308
}
5626: 8522 mv a0,s0
5628: f09fa06f j 530 <__riscv_restore_4>
0000562c <xTimerGenericCommand>:
xTimerGenericCommand():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:391
{
562c: eebfa2ef jal t0,516 <__riscv_save_0>
5630: 1101 addi sp,sp,-32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:395
configASSERT( xTimer );
5632: e11d bnez a0,5658 <xTimerGenericCommand+0x2c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:395 (discriminator 1)
5634: 67a1 lui a5,0x8
5636: 80078793 addi a5,a5,-2048 # 7800 <ip_input+0xc4>
563a: 30079073 csrw mstatus,a5
563e: 0000d637 lui a2,0xd
5642: 0000d537 lui a0,0xd
5646: 38c60613 addi a2,a2,908 # d38c <MemSize+0x1f8>
564a: 18b00593 li a1,395
564e: 2e450513 addi a0,a0,740 # d2e4 <MemSize+0x150>
5652: 424070ef jal ra,ca76 <printf>
5656: a001 j 5656 <xTimerGenericCommand+0x2a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:399 (discriminator 2)
if( xTimerQueue != NULL )
5658: 90c18413 addi s0,gp,-1780 # 2000014c <xTimerQueue>
565c: 401c lw a5,0(s0)
565e: c63a sw a4,12(sp)
5660: 882a mv a6,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:392 (discriminator 2)
BaseType_t xReturn = pdFAIL;
5662: 4501 li a0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:399 (discriminator 2)
if( xTimerQueue != NULL )
5664: c78d beqz a5,568e <xTimerGenericCommand+0x62>
5666: 88b6 mv a7,a3
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:402
xMessage.xMessageID = xCommandID;
5668: c82e sw a1,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:403
xMessage.u.xTimerParameters.xMessageValue = xOptionalValue;
566a: ca32 sw a2,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:404
xMessage.u.xTimerParameters.pxTimer = xTimer;
566c: cc42 sw a6,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:406
if( xCommandID < tmrFIRST_FROM_ISR_COMMAND )
566e: 4695 li a3,5
5670: 02b6c263 blt a3,a1,5694 <xTimerGenericCommand+0x68>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:408
if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING )
5674: 9a3ff0ef jal ra,5016 <xTaskGetSchedulerState>
5678: 4732 lw a4,12(sp)
567a: 4789 li a5,2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:410
xReturn = xQueueSendToBack( xTimerQueue, &xMessage, xTicksToWait );
567c: 4681 li a3,0
567e: 863a mv a2,a4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:408
if( xTaskGetSchedulerState() == taskSCHEDULER_RUNNING )
5680: 00f50363 beq a0,a5,5686 <xTimerGenericCommand+0x5a>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:414
xReturn = xQueueSendToBack( xTimerQueue, &xMessage, tmrNO_DELAY );
5684: 4601 li a2,0
5686: 4008 lw a0,0(s0)
5688: 080c addi a1,sp,16
568a: f98fe0ef jal ra,3e22 <xQueueGenericSend>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:430
}
568e: 6105 addi sp,sp,32
5690: eabfa06f j 53a <__riscv_restore_0>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../FreeRTOS/timers.c:419
xReturn = xQueueSendToBackFromISR( xTimerQueue, &xMessage, pxHigherPriorityTaskWoken );
5694: 4681 li a3,0
5696: 8646 mv a2,a7
5698: 080c addi a1,sp,16
569a: 853e mv a0,a5
569c: 95dfe0ef jal ra,3ff8 <xQueueGenericSendFromISR>
56a0: b7fd j 568e <xTimerGenericCommand+0x62>
000056a2 <Delay_Init>:
Delay_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:30
*
* @return none
*/
void Delay_Init(void)
{
p_us = SystemCoreClock / 8000000;
56a2: 8101a783 lw a5,-2032(gp) # 20000050 <SystemCoreClock>
56a6: 007a1737 lui a4,0x7a1
56aa: 20070713 addi a4,a4,512 # 7a1200 <_data_lma+0x793cec>
56ae: 02e7d7b3 divu a5,a5,a4
56b2: 0ff7f793 andi a5,a5,255
56b6: 90f18b23 sb a5,-1770(gp) # 20000156 <p_us>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:31
p_ms = (uint16_t)p_us * 1000;
56ba: 3e800713 li a4,1000
56be: 02e787b3 mul a5,a5,a4
56c2: 90f19a23 sh a5,-1772(gp) # 20000154 <p_ms>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:32
}
56c6: 8082 ret
000056c8 <Delay_Us>:
Delay_Us():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:47
*/
void Delay_Us(uint32_t n)
{
uint32_t i;
SysTick->SR &= ~(1 << 0);
56c8: e000f7b7 lui a5,0xe000f
56cc: 43d8 lw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:50
i = (uint32_t)n * p_us;
SysTick->CMP = i;
56ce: 4681 li a3,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:47
SysTick->SR &= ~(1 << 0);
56d0: 9b79 andi a4,a4,-2
56d2: c3d8 sw a4,4(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:48
i = (uint32_t)n * p_us;
56d4: 9161c703 lbu a4,-1770(gp) # 20000156 <p_us>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:50
SysTick->CMP = i;
56d8: 02a70633 mul a2,a4,a0
56dc: cb90 sw a2,16(a5)
56de: cbd4 sw a3,20(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:51
SysTick->CTLR |= (1 << 4);
56e0: 4398 lw a4,0(a5)
56e2: 01076713 ori a4,a4,16
56e6: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:52
SysTick->CTLR |= (1 << 5) | (1 << 0);
56e8: 4398 lw a4,0(a5)
56ea: 02176713 ori a4,a4,33
56ee: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:54 (discriminator 1)
while((SysTick->SR & (1 << 0)) != (1 << 0))
56f0: 43d8 lw a4,4(a5)
56f2: 8b05 andi a4,a4,1
56f4: df75 beqz a4,56f0 <Delay_Us+0x28>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:56
;
SysTick->CTLR &= ~(1 << 0);
56f6: 4398 lw a4,0(a5)
56f8: 9b79 andi a4,a4,-2
56fa: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:57
}
56fc: 8082 ret
000056fe <USART_Printf_Init>:
USART_Printf_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:94
* @param baudrate - USART communication baud rate.
*
* @return None
*/
void USART_Printf_Init(uint32_t baudrate)
{
56fe: e19fa2ef jal t0,516 <__riscv_save_0>
5702: 1101 addi sp,sp,-32
5704: 842a mv s0,a0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:116
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
#elif(DEBUG == DEBUG_UART3)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
5706: 4585 li a1,1
5708: 00040537 lui a0,0x40
570c: dfdfb0ef jal ra,1508 <RCC_APB1PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:117
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
5710: 4585 li a1,1
5712: 4521 li a0,8
5714: dd7fb0ef jal ra,14ea <RCC_APB2PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:119
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
5718: 40000793 li a5,1024
571c: 827c sh a5,4(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:122
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
571e: 40011537 lui a0,0x40011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:120
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5722: 478d li a5,3
5724: c43e sw a5,8(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:122
GPIO_Init(GPIOB, &GPIO_InitStructure);
5726: 004c addi a1,sp,4
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:121
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
5728: 47e1 li a5,24
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:122
GPIO_Init(GPIOB, &GPIO_InitStructure);
572a: c0050513 addi a0,a0,-1024 # 40010c00 <__freertos_irq_stack_top+0x1ffe0c00>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:121
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
572e: c63e sw a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:122
GPIO_Init(GPIOB, &GPIO_InitStructure);
5730: afffb0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:126
#endif
USART_InitStructure.USART_BaudRate = baudrate;
5734: c822 sw s0,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:142
#elif(DEBUG == DEBUG_UART2)
USART_Init(USART2, &USART_InitStructure);
USART_Cmd(USART2, ENABLE);
#elif(DEBUG == DEBUG_UART3)
USART_Init(USART3, &USART_InitStructure);
5736: 40005437 lui s0,0x40005
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:129
USART_InitStructure.USART_Parity = USART_Parity_No;
573a: 000807b7 lui a5,0x80
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:142
USART_Init(USART3, &USART_InitStructure);
573e: 080c addi a1,sp,16
5740: 80040513 addi a0,s0,-2048 # 40004800 <__freertos_irq_stack_top+0x1ffd4800>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:129
USART_InitStructure.USART_Parity = USART_Parity_No;
5744: cc3e sw a5,24(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:127
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
5746: ca02 sw zero,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:130
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
5748: 00011e23 sh zero,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:142
USART_Init(USART3, &USART_InitStructure);
574c: f5bfb0ef jal ra,16a6 <USART_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:143
USART_Cmd(USART3, ENABLE);
5750: 4585 li a1,1
5752: 80040513 addi a0,s0,-2048
5756: fdffb0ef jal ra,1734 <USART_Cmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:146
#endif
}
575a: 6105 addi sp,sp,32
575c: ddffa06f j 53a <__riscv_restore_0>
00005760 <_write>:
_write():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:175
* size - Data length
*
* @return size: Data length
*/
__attribute__((used)) int _write(int fd, char *buf, int size)
{
5760: d9dfa2ef jal t0,4fc <__riscv_save_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:224
USART_SendData(USART1, *buf++);
#elif(DEBUG == DEBUG_UART2)
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
USART_SendData(USART2, *buf++);
#elif(DEBUG == DEBUG_UART3)
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
5764: 400054b7 lui s1,0x40005
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:175
{
5768: 89ae mv s3,a1
576a: 8932 mv s2,a2
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:215
for(i = 0; i < size; i++)
576c: 4401 li s0,0
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:224
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
576e: 80048493 addi s1,s1,-2048 # 40004800 <__freertos_irq_stack_top+0x1ffd4800>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:215 (discriminator 1)
for(i = 0; i < size; i++)
5772: 01244563 blt s0,s2,577c <_write+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:230
USART_SendData(USART3, *buf++);
#endif
}
#endif
return size;
}
5776: 854a mv a0,s2
5778: db9fa06f j 530 <__riscv_restore_4>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:224 (discriminator 1)
while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET);
577c: 04000593 li a1,64
5780: 8526 mv a0,s1
5782: fd1fb0ef jal ra,1752 <USART_GetFlagStatus>
5786: d97d beqz a0,577c <_write+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:225 (discriminator 2)
USART_SendData(USART3, *buf++);
5788: 008987b3 add a5,s3,s0
578c: 00078583 lb a1,0(a5) # 80000 <_data_lma+0x72aec>
5790: 8526 mv a0,s1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:215 (discriminator 2)
for(i = 0; i < size; i++)
5792: 0405 addi s0,s0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/debug.c:225 (discriminator 2)
USART_SendData(USART3, *buf++);
5794: 05c2 slli a1,a1,0x10
5796: 81c1 srli a1,a1,0x10
5798: fb3fb0ef jal ra,174a <USART_SendData>
579c: bfd9 j 5772 <_write+0x12>
0000579e <DVP_Init>:
DVP_Init():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:18
extern u8 socket[];
extern volatile uint32_t sys_tick_ms;
void DVP_Init(void)
{
579e: d79fa2ef jal t0,516 <__riscv_save_0>
57a2: 1101 addi sp,sp,-32
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:22
GPIO_InitTypeDef GPIO_InitStructure = {0};
NVIC_InitTypeDef NVIC_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
57a4: 4585 li a1,1
57a6: 4571 li a0,28
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:19
GPIO_InitTypeDef GPIO_InitStructure = {0};
57a8: ca02 sw zero,20(sp)
57aa: cc02 sw zero,24(sp)
57ac: ce02 sw zero,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:20
NVIC_InitTypeDef NVIC_InitStructure = {0};
57ae: c602 sw zero,12(sp)
57b0: c802 sw zero,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:22
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE);
57b2: d39fb0ef jal ra,14ea <RCC_APB2PeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:23
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DVP, ENABLE);
57b6: 4585 li a1,1
57b8: 6509 lui a0,0x2
57ba: d13fb0ef jal ra,14cc <RCC_AHBPeriphClockCmd>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:27
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_9 | GPIO_Pin_10;
GPIO_Init(GPIOA, &GPIO_InitStructure);
57be: 40011437 lui s0,0x40011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:25
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
57c2: 4791 li a5,4
57c4: ce3e sw a5,28(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:27
GPIO_Init(GPIOA, &GPIO_InitStructure);
57c6: 084c addi a1,sp,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:26
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_9 | GPIO_Pin_10;
57c8: 67000793 li a5,1648
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:27
GPIO_Init(GPIOA, &GPIO_InitStructure);
57cc: 80040513 addi a0,s0,-2048 # 40010800 <__freertos_irq_stack_top+0x1ffe0800>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:26
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_9 | GPIO_Pin_10;
57d0: 82fc sh a5,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:27
GPIO_Init(GPIOA, &GPIO_InitStructure);
57d2: a5dfb0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:28
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11;
57d6: 6785 lui a5,0x1
57d8: b0078793 addi a5,a5,-1280 # b00 <main+0x1da>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:29
GPIO_Init(GPIOC, &GPIO_InitStructure);
57dc: 084c addi a1,sp,20
57de: 40011537 lui a0,0x40011
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:28
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11;
57e2: 82fc sh a5,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:29
GPIO_Init(GPIOC, &GPIO_InitStructure);
57e4: a4bfb0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:31
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_Init(GPIOB, &GPIO_InitStructure);
57e8: 084c addi a1,sp,20
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:30
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9;
57ea: 30800793 li a5,776
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:31
GPIO_Init(GPIOB, &GPIO_InitStructure);
57ee: c0040513 addi a0,s0,-1024
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:30
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9;
57f2: 82fc sh a5,20(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:31
GPIO_Init(GPIOB, &GPIO_InitStructure);
57f4: a3bfb0ef jal ra,122e <GPIO_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:33
NVIC_InitStructure.NVIC_IRQChannel = DVP_IRQn;
57f8: 05600793 li a5,86
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:36
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
57fc: 4485 li s1,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:37
NVIC_Init(&NVIC_InitStructure);
57fe: 0068 addi a0,sp,12
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:33
NVIC_InitStructure.NVIC_IRQChannel = DVP_IRQn;
5800: 867c sh a5,12(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:36
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
5802: c826 sw s1,16(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:35
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
5804: 00010723 sb zero,14(sp)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:37
NVIC_Init(&NVIC_InitStructure);
5808: aeffb0ef jal ra,12f6 <NVIC_Init>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:39
DVP_Cfg(DVP_DMA_Disable, DVP_FLAG_FIFO_RESET_Enable, DVP_RX_RESET_Enable);
580c: 4605 li a2,1
580e: 4585 li a1,1
5810: 4501 li a0,0
5812: e1afb0ef jal ra,e2c <DVP_Cfg>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:40
DVP_Mode(RB_DVP_D8_MOD, Video_Mode);
5816: 4581 li a1,0
5818: 4501 li a0,0
581a: de0fb0ef jal ra,dfa <DVP_Mode>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:41
DVP->CR0 &= ~(RB_DVP_P_POLAR | RB_DVP_V_POLAR | RB_DVP_H_POLAR);
581e: 50050437 lui s0,0x50050
5822: 201c lbu a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:46
DVP->DMA_BUF0 = (uint32_t)DMA_LineBuf0;
DVP->DMA_BUF1 = (uint32_t)DMA_LineBuf1;
DVP->ROW_NUM = 1;
DVP->COL_NUM = BYTES_PER_LINE;
DVP_INTCfg(ENABLE, RB_DVP_IE_STR_FRM | RB_DVP_IE_ROW_DONE);
5824: 458d li a1,3
5826: 4505 li a0,1
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:41
DVP->CR0 &= ~(RB_DVP_P_POLAR | RB_DVP_V_POLAR | RB_DVP_H_POLAR);
5828: 0f17f793 andi a5,a5,241
582c: a01c sb a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:42
DVP->DMA_BUF0 = (uint32_t)DMA_LineBuf0;
582e: 200157b7 lui a5,0x20015
5832: 70878793 addi a5,a5,1800 # 20015708 <DMA_LineBuf0>
5836: c41c sw a5,8(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:43
DVP->DMA_BUF1 = (uint32_t)DMA_LineBuf1;
5838: 200167b7 lui a5,0x20016
583c: 90878793 addi a5,a5,-1784 # 20015908 <DMA_LineBuf1>
5840: c45c sw a5,12(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:44
DVP->ROW_NUM = 1;
5842: a046 sh s1,4(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:45
DVP->COL_NUM = BYTES_PER_LINE;
5844: 20000793 li a5,512
5848: a07e sh a5,6(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:46
DVP_INTCfg(ENABLE, RB_DVP_IE_STR_FRM | RB_DVP_IE_ROW_DONE);
584a: d9afb0ef jal ra,de4 <DVP_INTCfg>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:47
DVP_Cfg(DVP_DMA_Enable, DVP_FLAG_FIFO_RESET_Disable, DVP_RX_RESET_Disable);
584e: 4601 li a2,0
5850: 4581 li a1,0
5852: 4505 li a0,1
5854: dd8fb0ef jal ra,e2c <DVP_Cfg>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:48
DVP->CR0 |= RB_DVP_ENABLE;
5858: 201c lbu a5,0(s0)
585a: 0017e793 ori a5,a5,1
585e: a01c sb a5,0(s0)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:49
}
5860: 6105 addi sp,sp,32
5862: cd9fa06f j 53a <__riscv_restore_0>
00005866 <DVP_Task>:
DVP_Task():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:59
volatile uint8_t Frame_Ready_Flag = 0;
volatile uint32_t Ready_Frame_Count = 0;
void DVP_Task(void)
{
if (!Line_Ready_Flag) return;
5866: 91818793 addi a5,gp,-1768 # 20000158 <Line_Ready_Flag>
586a: 2398 lbu a4,0(a5)
586c: 0ff77713 andi a4,a4,255
5870: cf29 beqz a4,58ca <DVP_Task+0x64>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:58
{
5872: ca5fa2ef jal t0,516 <__riscv_save_0>
NVIC_DisableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:184
NVIC->IRER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
5876: e000e737 lui a4,0xe000e
587a: 004006b7 lui a3,0x400
587e: 18d72423 sw a3,392(a4) # e000e188 <__freertos_irq_stack_top+0xbffde188>
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:185
__asm volatile ("fence.i");
5882: 0000100f fence.i
DVP_Task():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:62
NVIC_DisableIRQ(DVP_IRQn);
uint8_t *line = (uint8_t *)Ready_Line_Ptr;
5886: 9201a583 lw a1,-1760(gp) # 20000160 <Ready_Line_Ptr>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:63
uint32_t idx = current_line_idx;
588a: 9241a403 lw s0,-1756(gp) # 20000164 <current_line_idx>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:64
Line_Ready_Flag = 0;
588e: 00078023 sb zero,0(a5)
NVIC_EnableIRQ():
D:\zj\ch32v307_camera\prj\TCPClient\Core/core_riscv.h:170
NVIC->IENR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));
5892: 10d72423 sw a3,264(a4)
DVP_Task():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:67
NVIC_EnableIRQ(DVP_IRQn);
if (idx < SENSOR_HEIGHT)
5896: 0bf00493 li s1,191
589a: 0284e663 bltu s1,s0,58c6 <DVP_Task+0x60>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:69
{
memcpy(FrameBuffer[idx], line, BYTES_PER_LINE);
589e: 200167b7 lui a5,0x20016
58a2: 00941513 slli a0,s0,0x9
58a6: b0878793 addi a5,a5,-1272 # 20015b08 <FrameBuffer>
58aa: 20000613 li a2,512
58ae: 953e add a0,a0,a5
58b0: 620070ef jal ra,ced0 <memcpy>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:71
if (idx == SENSOR_HEIGHT - 1)
58b4: 00941963 bne s0,s1,58c6 <DVP_Task+0x60>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:73
{
Frame_Ready_Flag = 1;
58b8: 4705 li a4,1
58ba: 90e18ba3 sb a4,-1769(gp) # 20000157 <Frame_Ready_Flag>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:74
Ready_Frame_Count = frame_count;
58be: 9281a703 lw a4,-1752(gp) # 20000168 <frame_count>
58c2: 90e1ae23 sw a4,-1764(gp) # 2000015c <Ready_Frame_Count>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:77
}
}
}
58c6: c75fa06f j 53a <__riscv_restore_0>
58ca: 8082 ret
000058cc <DVP_IRQHandler>:
DVP_IRQHandler():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:82
void DVP_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void DVP_IRQHandler(void)
{
if (DVP->IFR & RB_DVP_IF_STR_FRM)
58cc: 50050737 lui a4,0x50050
58d0: 2b1c lbu a5,16(a4)
58d2: 8b85 andi a5,a5,1
58d4: cb91 beqz a5,58e8 <DVP_IRQHandler+0x1c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:84
{
DVP->IFR = RB_DVP_IF_STR_FRM;
58d6: 4785 li a5,1
58d8: ab1c sb a5,16(a4)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:85
current_line_idx = 0;
58da: 9201a223 sw zero,-1756(gp) # 20000164 <current_line_idx>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:86
frame_count++;
58de: 92818793 addi a5,gp,-1752 # 20000168 <frame_count>
58e2: 4398 lw a4,0(a5)
58e4: 0705 addi a4,a4,1
58e6: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:88
}
if (DVP->IFR & RB_DVP_IF_ROW_DONE)
58e8: 500507b7 lui a5,0x50050
58ec: 2b98 lbu a4,16(a5)
58ee: 8b09 andi a4,a4,2
58f0: c705 beqz a4,5918 <DVP_IRQHandler+0x4c>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:90
{
DVP->IFR = RB_DVP_IF_ROW_DONE;
58f2: 4709 li a4,2
58f4: ab98 sb a4,16(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:91
Ready_Line_Ptr = (DVP->CR1 & RB_DVP_BUF_TOG) ? DMA_LineBuf0 : DMA_LineBuf1;
58f6: 339c lbu a5,1(a5)
58f8: 8ba1 andi a5,a5,8
58fa: e38d bnez a5,591c <DVP_IRQHandler+0x50>
58fc: 200167b7 lui a5,0x20016
5900: 90878793 addi a5,a5,-1784 # 20015908 <DMA_LineBuf1>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:91 (discriminator 4)
5904: 92f1a023 sw a5,-1760(gp) # 20000160 <Ready_Line_Ptr>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:92 (discriminator 4)
current_line_idx++;
5908: 92418793 addi a5,gp,-1756 # 20000164 <current_line_idx>
590c: 4398 lw a4,0(a5)
590e: 0705 addi a4,a4,1
5910: c398 sw a4,0(a5)
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:93 (discriminator 4)
Line_Ready_Flag = 1;
5912: 4705 li a4,1
5914: 90e18c23 sb a4,-1768(gp) # 20000158 <Line_Ready_Flag>
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:95
}
}
5918: 30200073 mret
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Debug/dvp.c:91
Ready_Line_Ptr = (DVP->CR1 & RB_DVP_BUF_TOG) ? DMA_LineBuf0 : DMA_LineBuf1;
591c: 200157b7 lui a5,0x20015
5920: 70878793 addi a5,a5,1800 # 20015708 <DMA_LineBuf0>
5924: b7c5 j 5904 <DVP_IRQHandler+0x38>
00005926 <__get_MEPC>:
__get_MEPC():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:248
*/
uint32_t __get_MEPC(void)
{
uint32_t result;
__ASM volatile ( "csrr %0," "mepc" : "=r" (result) );
5926: 34102573 csrr a0,mepc
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:250
return (result);
}
592a: 8082 ret
0000592c <__get_MCAUSE>:
__get_MCAUSE():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:275
*/
uint32_t __get_MCAUSE(void)
{
uint32_t result;
__ASM volatile ( "csrr %0," "mcause" : "=r" (result) );
592c: 34202573 csrr a0,mcause
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:277
return (result);
}
5930: 8082 ret
00005932 <__get_MTVAL>:
__get_MTVAL():
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:302
*/
uint32_t __get_MTVAL(void)
{
uint32_t result;
__ASM volatile ( "csrr %0," "mtval" : "=r" (result) );
5932: 34302573 csrr a0,mtval
D:\zj\ch32v307_camera\prj\TCPClient\obj/../Core/core_riscv.c:304
return (result);
}
5936: 8082 ret
00005938 <WCHNET_PeriodicHandle>:
WCHNET_PeriodicHandle():
5938: bdffa2ef jal t0,516 <__riscv_save_0>
593c: 20000437 lui s0,0x20000
5940: 0c842783 lw a5,200(s0) # 200000c8 <LocalTime>
5944: 1141 addi sp,sp,-16
5946: c63e sw a5,12(sp)
5948: 19c010ef jal ra,6ae4 <WCHNET_GetPHYStatus>
594c: 8911 andi a0,a0,4
594e: 14050363 beqz a0,5a94 <WCHNET_PeriodicHandle+0x15c>
5952: 94418793 addi a5,gp,-1724 # 20000184 <TCPTimer>
5956: 4398 lw a4,0(a5)
5958: 46b2 lw a3,12(sp)
595a: 8e99 sub a3,a3,a4
595c: 2002e737 lui a4,0x2002e
5960: ba872703 lw a4,-1112(a4) # 2002dba8 <NetInf+0x1c>
5964: 8305 srli a4,a4,0x1
5966: 00d77663 bgeu a4,a3,5972 <WCHNET_PeriodicHandle+0x3a>
596a: 4732 lw a4,12(sp)
596c: c398 sw a4,0(a5)
596e: 4d1030ef jal ra,963e <tcp_tmr>
5972: 06e040ef jal ra,99e0 <RemoveTimeWaiTCP>
5976: 9601a783 lw a5,-1696(gp) # 200001a0 <tcpSendAckFlag>
597a: c791 beqz a5,5986 <WCHNET_PeriodicHandle+0x4e>
597c: 4e5030ef jal ra,9660 <tcp_fastsendack>
5980: e119 bnez a0,5986 <WCHNET_PeriodicHandle+0x4e>
5982: 9601a023 sw zero,-1696(gp) # 200001a0 <tcpSendAckFlag>
5986: 94018493 addi s1,gp,-1728 # 20000180 <IPFragTimer>
598a: 4098 lw a4,0(s1)
598c: 47b2 lw a5,12(sp)
598e: 8f99 sub a5,a5,a4
5990: 3e700713 li a4,999
5994: 00f77663 bgeu a4,a5,59a0 <WCHNET_PeriodicHandle+0x68>
5998: 218020ef jal ra,7bb0 <ip_reass_tmr>
599c: 47b2 lw a5,12(sp)
599e: c09c sw a5,0(s1)
59a0: 92c18793 addi a5,gp,-1748 # 2000016c <ARPTimer>
59a4: 4398 lw a4,0(a5)
59a6: 46b2 lw a3,12(sp)
59a8: 06400613 li a2,100
59ac: 8e99 sub a3,a3,a4
59ae: 9511c703 lbu a4,-1711(gp) # 20000191 <ARP_Retry_Period>
59b2: 02c70733 mul a4,a4,a2
59b6: 00e6e663 bltu a3,a4,59c2 <WCHNET_PeriodicHandle+0x8a>
59ba: 4732 lw a4,12(sp)
59bc: c398 sw a4,0(a5)
59be: 7fc010ef jal ra,71ba <etharp_tmr>
59c2: 2002e7b7 lui a5,0x2002e
59c6: b6c78793 addi a5,a5,-1172 # 2002db6c <DNSInf>
59ca: 47d8 lw a4,12(a5)
59cc: cf11 beqz a4,59e8 <WCHNET_PeriodicHandle+0xb0>
59ce: 93c18713 addi a4,gp,-1732 # 2000017c <DNSTimer>
59d2: 4310 lw a2,0(a4)
59d4: 46b2 lw a3,12(sp)
59d6: 8e91 sub a3,a3,a2
59d8: 3e700613 li a2,999
59dc: 00d67663 bgeu a2,a3,59e8 <WCHNET_PeriodicHandle+0xb0>
59e0: 46b2 lw a3,12(sp)
59e2: 43dc lw a5,4(a5)
59e4: c314 sw a3,0(a4)
59e6: 9782 jalr a5
59e8: 2002e4b7 lui s1,0x2002e
59ec: b144a783 lw a5,-1260(s1) # 2002db14 <DHCPCtrl>
59f0: cba9 beqz a5,5a42 <WCHNET_PeriodicHandle+0x10a>
59f2: 93818713 addi a4,gp,-1736 # 20000178 <DHCPfineTimer>
59f6: 431c lw a5,0(a4)
59f8: 46b2 lw a3,12(sp)
59fa: 0fa00613 li a2,250
59fe: 8e9d sub a3,a3,a5
5a00: 2002e7b7 lui a5,0x2002e
5a04: be47a783 lw a5,-1052(a5) # 2002dbe4 <WCHCfg+0x14>
5a08: 83ed srli a5,a5,0x1b
5a0a: 02c787b3 mul a5,a5,a2
5a0e: 00f6e963 bltu a3,a5,5a20 <WCHNET_PeriodicHandle+0xe8>
5a12: 47b2 lw a5,12(sp)
5a14: c31c sw a5,0(a4)
5a16: b1448793 addi a5,s1,-1260
5a1a: 4b9c lw a5,16(a5)
5a1c: c391 beqz a5,5a20 <WCHNET_PeriodicHandle+0xe8>
5a1e: 9782 jalr a5
5a20: 93418793 addi a5,gp,-1740 # 20000174 <DHCPcoarseTimer>
5a24: 4398 lw a4,0(a5)
5a26: 46b2 lw a3,12(sp)
5a28: 8e99 sub a3,a3,a4
5a2a: 673d lui a4,0xf
5a2c: a5f70713 addi a4,a4,-1441 # ea5f <_data_lma+0x154b>
5a30: 00d77963 bgeu a4,a3,5a42 <WCHNET_PeriodicHandle+0x10a>
5a34: 4732 lw a4,12(sp)
5a36: b1448493 addi s1,s1,-1260
5a3a: c398 sw a4,0(a5)
5a3c: 48dc lw a5,20(s1)
5a3e: c391 beqz a5,5a42 <WCHNET_PeriodicHandle+0x10a>
5a40: 9782 jalr a5
5a42: 4532 lw a0,12(sp)
5a44: 93018493 addi s1,gp,-1744 # 20000170 <ArpCheckTime>
5a48: 2cd9 jal 5d1e <IPCheckTmr>
5a4a: 409c lw a5,0(s1)
5a4c: 4732 lw a4,12(sp)
5a4e: 8f1d sub a4,a4,a5
5a50: 67bd lui a5,0xf
5a52: a5f78793 addi a5,a5,-1441 # ea5f <_data_lma+0x154b>
5a56: 00e7f563 bgeu a5,a4,5a60 <WCHNET_PeriodicHandle+0x128>
5a5a: 2471 jal 5ce6 <SelIPARPSend>
5a5c: 47b2 lw a5,12(sp)
5a5e: c09c sw a5,0(s1)
5a60: 95c1c703 lbu a4,-1700(gp) # 2000019c <phydata>
5a64: 84be mv s1,a5
5a66: 0ff77713 andi a4,a4,255
5a6a: c70d beqz a4,5a94 <WCHNET_PeriodicHandle+0x15c>
5a6c: 95c1c703 lbu a4,-1700(gp) # 2000019c <phydata>
5a70: 0c077713 andi a4,a4,192
5a74: e31d bnez a4,5a9a <WCHNET_PeriodicHandle+0x162>
5a76: 2002e7b7 lui a5,0x2002e
5a7a: bec7a783 lw a5,-1044(a5) # 2002dbec <WCHCfg+0x1c>
5a7e: c399 beqz a5,5a84 <WCHNET_PeriodicHandle+0x14c>
5a80: 4505 li a0,1
5a82: 9782 jalr a5
5a84: 0c842703 lw a4,200(s0)
5a88: 94e1a623 sw a4,-1716(gp) # 2000018c <phydatatime>
5a8c: 04000793 li a5,64
5a90: 94f18e23 sb a5,-1700(gp) # 2000019c <phydata>
5a94: 0141 addi sp,sp,16
5a96: aa5fa06f j 53a <__riscv_restore_0>
5a9a: 95c1c703 lbu a4,-1700(gp) # 2000019c <phydata>
5a9e: 04077713 andi a4,a4,64
5aa2: cb15 beqz a4,5ad6 <WCHNET_PeriodicHandle+0x19e>
5aa4: 94c1a683 lw a3,-1716(gp) # 2000018c <phydatatime>
5aa8: 0c842703 lw a4,200(s0)
5aac: 94c18913 addi s2,gp,-1716 # 2000018c <phydatatime>
5ab0: 8f15 sub a4,a4,a3
5ab2: 06400693 li a3,100
5ab6: fce6ffe3 bgeu a3,a4,5a94 <WCHNET_PeriodicHandle+0x15c>
5aba: 2002e7b7 lui a5,0x2002e
5abe: bec7a783 lw a5,-1044(a5) # 2002dbec <WCHCfg+0x1c>
5ac2: c399 beqz a5,5ac8 <WCHNET_PeriodicHandle+0x190>
5ac4: 4501 li a0,0
5ac6: 9782 jalr a5
5ac8: 0c842783 lw a5,200(s0)
5acc: 00f92023 sw a5,0(s2)
5ad0: f8000793 li a5,-128
5ad4: bf75 j 5a90 <WCHNET_PeriodicHandle+0x158>
5ad6: 95c1c703 lbu a4,-1700(gp) # 2000019c <phydata>
5ada: 0762 slli a4,a4,0x18
5adc: 8761 srai a4,a4,0x18
5ade: fa075be3 bgez a4,5a94 <WCHNET_PeriodicHandle+0x15c>
5ae2: 94c1a683 lw a3,-1716(gp) # 2000018c <phydatatime>
5ae6: 0c842703 lw a4,200(s0)
5aea: 8f15 sub a4,a4,a3
5aec: 06400693 li a3,100
5af0: fae6f2e3 bgeu a3,a4,5a94 <WCHNET_PeriodicHandle+0x15c>
5af4: 94018e23 sb zero,-1700(gp) # 2000019c <phydata>
5af8: bf71 j 5a94 <WCHNET_PeriodicHandle+0x15c>
00005afa <WCHNET_NetInput>:
WCHNET_NetInput():
5afa: a1dfa2ef jal t0,516 <__riscv_save_0>
5afe: 2002e537 lui a0,0x2002e
5b02: bfc50513 addi a0,a0,-1028 # 2002dbfc <WCHNetIf>
5b06: 2b9010ef jal ra,75be <ethernetif_input>
5b0a: a31fa06f j 53a <__riscv_restore_0>
00005b0e <WCHNET_PhyStatus>:
WCHNET_PhyStatus():
5b0e: a09fa2ef jal t0,516 <__riscv_save_0>
5b12: 2002e7b7 lui a5,0x2002e
5b16: b8c78793 addi a5,a5,-1140 # 2002db8c <NetInf>
5b1a: 57d8 lw a4,44(a5)
5b1c: 2002e437 lui s0,0x2002e
5b20: d388 sw a0,32(a5)
5b22: 00476713 ori a4,a4,4
5b26: d7d8 sw a4,44(a5)
5b28: 8911 andi a0,a0,4
5b2a: bd040793 addi a5,s0,-1072 # 2002dbd0 <WCHCfg>
5b2e: 4f9c lw a5,24(a5)
5b30: bd040413 addi s0,s0,-1072
5b34: cd01 beqz a0,5b4c <WCHNET_PhyStatus+0x3e>
5b36: c399 beqz a5,5b3c <WCHNET_PhyStatus+0x2e>
5b38: 4501 li a0,0
5b3a: 9782 jalr a5
5b3c: 4c5c lw a5,28(s0)
5b3e: c399 beqz a5,5b44 <WCHNET_PhyStatus+0x36>
5b40: 4501 li a0,0
5b42: 9782 jalr a5
5b44: 4505 li a0,1
5b46: 2abd jal 5cc4 <IPCheckParaInit>
5b48: 9f3fa06f j 53a <__riscv_restore_0>
5b4c: c399 beqz a5,5b52 <WCHNET_PhyStatus+0x44>
5b4e: 4505 li a0,1
5b50: 9782 jalr a5
5b52: 4c5c lw a5,28(s0)
5b54: dbf5 beqz a5,5b48 <WCHNET_PhyStatus+0x3a>
5b56: 4505 li a0,1
5b58: 9782 jalr a5
5b5a: b7fd j 5b48 <WCHNET_PhyStatus+0x3a>
00005b5c <WCHNET_Rx>:
WCHNET_Rx():
5b5c: 20000737 lui a4,0x20000
5b60: 0d072783 lw a5,208(a4) # 200000d0 <pDMARxSet>
5b64: 00052023 sw zero,0(a0)
5b68: cb9d beqz a5,5b9e <WCHNET_Rx+0x42>
5b6a: 4394 lw a3,0(a5)
5b6c: 0006db63 bgez a3,5b82 <WCHNET_Rx+0x26>
5b70: 47d4 lw a3,12(a5)
5b72: 4290 lw a2,0(a3)
5b74: 02064563 bltz a2,5b9e <WCHNET_Rx+0x42>
5b78: 439c lw a5,0(a5)
5b7a: 0007d463 bgez a5,5b82 <WCHNET_Rx+0x26>
5b7e: 0cd72823 sw a3,208(a4)
5b82: 0d072783 lw a5,208(a4)
5b86: 6591 lui a1,0x4
5b88: 4601 li a2,0
5b8a: 15fd addi a1,a1,-1
5b8c: 4835 li a6,13
5b8e: 800008b7 lui a7,0x80000
5b92: 4394 lw a3,0(a5)
5b94: 0006d763 bgez a3,5ba2 <WCHNET_Rx+0x46>
5b98: c219 beqz a2,5b9e <WCHNET_Rx+0x42>
5b9a: 0cf72823 sw a5,208(a4)
5b9e: 4501 li a0,0
5ba0: 8082 ret
5ba2: 4394 lw a3,0(a5)
5ba4: 01069313 slli t1,a3,0x10
5ba8: 04034263 bltz t1,5bec <WCHNET_Rx+0x90>
5bac: 4394 lw a3,0(a5)
5bae: 1006f693 andi a3,a3,256
5bb2: ce8d beqz a3,5bec <WCHNET_Rx+0x90>
5bb4: 4394 lw a3,0(a5)
5bb6: 2006f693 andi a3,a3,512
5bba: ca8d beqz a3,5bec <WCHNET_Rx+0x90>
5bbc: 4394 lw a3,0(a5)
5bbe: 82c1 srli a3,a3,0x10
5bc0: 8eed and a3,a3,a1
5bc2: 16f1 addi a3,a3,-4
5bc4: c114 sw a3,0(a0)
5bc6: 02d87163 bgeu a6,a3,5be8 <WCHNET_Rx+0x8c>
5bca: 4394 lw a3,0(a5)
5bcc: 0206f693 andi a3,a3,32
5bd0: ea81 bnez a3,5be0 <WCHNET_Rx+0x84>
5bd2: c219 beqz a2,5bd8 <WCHNET_Rx+0x7c>
5bd4: 0cf72823 sw a5,208(a4)
5bd8: 479c lw a5,8(a5)
5bda: c15c sw a5,4(a0)
5bdc: 4505 li a0,1
5bde: 8082 ret
5be0: 4394 lw a3,0(a5)
5be2: 0816f693 andi a3,a3,129
5be6: d6f5 beqz a3,5bd2 <WCHNET_Rx+0x76>
5be8: 00052023 sw zero,0(a0)
5bec: 0117a023 sw a7,0(a5)
5bf0: 4605 li a2,1
5bf2: 47dc lw a5,12(a5)
5bf4: bf79 j 5b92 <WCHNET_Rx+0x36>
00005bf6 <setRxBuffAddr>:
setRxBuffAddr():
5bf6: 200007b7 lui a5,0x20000
5bfa: 0d07a703 lw a4,208(a5) # 200000d0 <pDMARxSet>
5bfe: 800006b7 lui a3,0x80000
5c02: c314 sw a3,0(a4)
5c04: 4758 lw a4,12(a4)
5c06: 0ce7a823 sw a4,208(a5)
5c0a: 8082 ret
00005c0c <WCHNET_Tx>:
WCHNET_Tx():
5c0c: 90bfa2ef jal t0,516 <__riscv_save_0>
5c10: 95c1c783 lbu a5,-1700(gp) # 2000019c <phydata>
5c14: 0ff7f793 andi a5,a5,255
5c18: e781 bnez a5,5c20 <WCHNET_Tx+0x14>
5c1a: 4785 li a5,1
5c1c: 94f18e23 sb a5,-1700(gp) # 2000019c <phydata>
5c20: 200007b7 lui a5,0x20000
5c24: 0c87a703 lw a4,200(a5) # 200000c8 <LocalTime>
5c28: 94818793 addi a5,gp,-1720 # 20000188 <TxTimer>
5c2c: cb09 beqz a4,5c3e <WCHNET_Tx+0x32>
5c2e: c398 sw a4,0(a5)
5c30: 2002e7b7 lui a5,0x2002e
5c34: bf07a783 lw a5,-1040(a5) # 2002dbf0 <WCHCfg+0x20>
5c38: 9782 jalr a5
5c3a: 901fa06f j 53a <__riscv_restore_0>
5c3e: 4705 li a4,1
5c40: b7fd j 5c2e <WCHNET_Tx+0x22>
00005c42 <GetChipID>:
GetChipID():
5c42: 1ffff7b7 lui a5,0x1ffff
5c46: 7067d503 lhu a0,1798(a5) # 1ffff706 <_data_lma+0x1fff21f2>
5c4a: 0f057513 andi a0,a0,240
5c4e: 8082 ret
00005c50 <getTxBuffAddr>:
getTxBuffAddr():
5c50: 8c7fa2ef jal t0,516 <__riscv_save_0>
5c54: 2002e7b7 lui a5,0x2002e
5c58: bf07a783 lw a5,-1040(a5) # 2002dbf0 <WCHCfg+0x20>
5c5c: 4901 li s2,0
5c5e: cbb9 beqz a5,5cb4 <getTxBuffAddr+0x64>
5c60: 200007b7 lui a5,0x20000
5c64: 0b47a483 lw s1,180(a5) # 200000b4 <DMATxDescToSet>
5c68: c4b1 beqz s1,5cb4 <getTxBuffAddr+0x64>
5c6a: 409c lw a5,0(s1)
5c6c: 0084a903 lw s2,8(s1)
5c70: 94818413 addi s0,gp,-1720 # 20000188 <TxTimer>
5c74: 0207de63 bgez a5,5cb0 <getTxBuffAddr+0x60>
5c78: fcbff0ef jal ra,5c42 <GetChipID>
5c7c: 4014 lw a3,0(s0)
5c7e: 4781 li a5,0
5c80: 08000613 li a2,128
5c84: 200005b7 lui a1,0x20000
5c88: 06300813 li a6,99
5c8c: 68a1 lui a7,0x8
5c8e: 03000313 li t1,48
5c92: 00c50463 beq a0,a2,5c9a <getTxBuffAddr+0x4a>
5c96: 02651263 bne a0,t1,5cba <getTxBuffAddr+0x6a>
5c9a: 0c85a703 lw a4,200(a1) # 200000c8 <LocalTime>
5c9e: 8f15 sub a4,a4,a3
5ca0: 00e86463 bltu a6,a4,5ca8 <getTxBuffAddr+0x58>
5ca4: 00f8fb63 bgeu a7,a5,5cba <getTxBuffAddr+0x6a>
5ca8: 409c lw a5,0(s1)
5caa: 0786 slli a5,a5,0x1
5cac: 8385 srli a5,a5,0x1
5cae: c09c sw a5,0(s1)
5cb0: 00042023 sw zero,0(s0)
5cb4: 854a mv a0,s2
5cb6: 885fa06f j 53a <__riscv_restore_0>
5cba: 4098 lw a4,0(s1)
5cbc: fe075ae3 bgez a4,5cb0 <getTxBuffAddr+0x60>
5cc0: 0785 addi a5,a5,1
5cc2: bfc1 j 5c92 <getTxBuffAddr+0x42>
00005cc4 <IPCheckParaInit>:
IPCheckParaInit():
5cc4: 20000737 lui a4,0x20000
5cc8: 0c872703 lw a4,200(a4) # 200000c8 <LocalTime>
5ccc: 2002e7b7 lui a5,0x2002e
5cd0: b0878793 addi a5,a5,-1272 # 2002db08 <SelARP>
5cd4: a388 sb a0,0(a5)
5cd6: 00079123 sh zero,2(a5)
5cda: 00079223 sh zero,4(a5)
5cde: c798 sw a4,8(a5)
5ce0: 000780a3 sb zero,1(a5)
5ce4: 8082 ret
00005ce6 <SelIPARPSend>:
SelIPARPSend():
5ce6: 831fa2ef jal t0,516 <__riscv_save_0>
5cea: 2002e4b7 lui s1,0x2002e
5cee: bfc48413 addi s0,s1,-1028 # 2002dbfc <WCHNetIf>
5cf2: 405c lw a5,4(s0)
5cf4: 1141 addi sp,sp,-16
5cf6: 006c addi a1,sp,12
5cf8: bfc48513 addi a0,s1,-1028
5cfc: c63e sw a5,12(sp)
5cfe: 00042223 sw zero,4(s0)
5d02: 3ea010ef jal ra,70ec <etharp_request>
5d06: 47b2 lw a5,12(sp)
5d08: 006c addi a1,sp,12
5d0a: bfc48513 addi a0,s1,-1028
5d0e: c05c sw a5,4(s0)
5d10: 445c lw a5,12(s0)
5d12: c63e sw a5,12(sp)
5d14: 3d8010ef jal ra,70ec <etharp_request>
5d18: 0141 addi sp,sp,16
5d1a: 821fa06f j 53a <__riscv_restore_0>
00005d1e <IPCheckTmr>:
IPCheckTmr():
5d1e: 2002e7b7 lui a5,0x2002e
5d22: b0878793 addi a5,a5,-1272 # 2002db08 <SelARP>
5d26: 2398 lbu a4,0(a5)
5d28: e319 bnez a4,5d2e <IPCheckTmr+0x10>
5d2a: c788 sw a0,8(a5)
5d2c: 8082 ret
5d2e: 4798 lw a4,8(a5)
5d30: 3e700693 li a3,999
5d34: 40e50733 sub a4,a0,a4
5d38: 02e6f363 bgeu a3,a4,5d5e <IPCheckTmr+0x40>
5d3c: fdafa2ef jal t0,516 <__riscv_save_0>
5d40: 23ba lhu a4,2(a5)
5d42: c788 sw a0,8(a5)
5d44: 4691 li a3,4
5d46: 00e6f763 bgeu a3,a4,5d54 <IPCheckTmr+0x36>
5d4a: 4501 li a0,0
5d4c: f79ff0ef jal ra,5cc4 <IPCheckParaInit>
5d50: feafa06f j 53a <__riscv_restore_0>
5d54: 0705 addi a4,a4,1
5d56: a3ba sh a4,2(a5)
5d58: f8fff0ef jal ra,5ce6 <SelIPARPSend>
5d5c: bfd5 j 5d50 <IPCheckTmr+0x32>
5d5e: 8082 ret
00005d60 <IPConflictHandle>:
IPConflictHandle():
5d60: fb6fa2ef jal t0,516 <__riscv_save_0>
5d64: 842a mv s0,a0
5d66: 4501 li a0,0
5d68: f5dff0ef jal ra,5cc4 <IPCheckParaInit>
5d6c: 2002e7b7 lui a5,0x2002e
5d70: b0878793 addi a5,a5,-1272 # 2002db08 <SelARP>
5d74: c811 beqz s0,5d88 <IPConflictHandle+0x28>
5d76: 4705 li a4,1
5d78: b398 sb a4,1(a5)
5d7a: 2002e7b7 lui a5,0x2002e
5d7e: 4709 li a4,2
5d80: bae7ac23 sw a4,-1096(a5) # 2002dbb8 <NetInf+0x2c>
5d84: fb6fa06f j 53a <__riscv_restore_0>
5d88: 000780a3 sb zero,1(a5)
5d8c: bfe5 j 5d84 <IPConflictHandle+0x24>
00005d8e <NET_TCPError>:
NET_TCPError():
5d8e: 8082 ret
00005d90 <LwipTCPSendCallBack>:
LwipTCPSendCallBack():
5d90: 03852803 lw a6,56(a0)
5d94: 02080b63 beqz a6,5dca <LwipTCPSendCallBack+0x3a>
5d98: f7efa2ef jal t0,516 <__riscv_save_0>
5d9c: 5dfc lw a5,124(a1)
5d9e: 4701 li a4,0
5da0: c791 beqz a5,5dac <LwipTCPSendCallBack+0x1c>
5da2: 0705 addi a4,a4,1
5da4: 0742 slli a4,a4,0x10
5da6: 8341 srli a4,a4,0x10
5da8: 439c lw a5,0(a5)
5daa: bfdd j 5da0 <LwipTCPSendCallBack+0x10>
5dac: 0805a783 lw a5,128(a1)
5db0: c791 beqz a5,5dbc <LwipTCPSendCallBack+0x2c>
5db2: 0705 addi a4,a4,1
5db4: 0742 slli a4,a4,0x10
5db6: 8341 srli a4,a4,0x10
5db8: 439c lw a5,0(a5)
5dba: bfdd j 5db0 <LwipTCPSendCallBack+0x20>
5dbc: 4681 li a3,0
5dbe: 4601 li a2,0
5dc0: 4581 li a1,0
5dc2: 9802 jalr a6
5dc4: 4501 li a0,0
5dc6: f74fa06f j 53a <__riscv_restore_0>
5dca: 4501 li a0,0
5dcc: 8082 ret
00005dce <LwipTCPPollCallBack>:
LwipTCPPollCallBack():
5dce: 4501 li a0,0
5dd0: 8082 ret
00005dd2 <SocketIPRAWReceive>:
SocketIPRAWReceive():
5dd2: f1cfa2ef jal t0,4ee <__riscv_save_10>
5dd6: 425c lw a5,4(a2)
5dd8: 00852a03 lw s4,8(a0)
5ddc: 00c52903 lw s2,12(a0)
5de0: 4900 lw s0,16(a0)
5de2: 84aa mv s1,a0
5de4: 2388 lbu a0,0(a5)
5de6: 339c lbu a5,1(a5)
5de8: 89b2 mv s3,a2
5dea: 07a2 slli a5,a5,0x8
5dec: 8d5d or a0,a0,a5
5dee: 0c5010ef jal ra,76b2 <ntohs>
5df2: 00655593 srli a1,a0,0x6
5df6: 03c5f593 andi a1,a1,60
5dfa: 40b005b3 neg a1,a1
5dfe: 854e mv a0,s3
5e00: 427020ef jal ra,8a26 <pbuf_header>
5e04: e559 bnez a0,5e92 <SocketIPRAWReceive+0xc0>
5e06: 44dc lw a5,12(s1)
5e08: 4c98 lw a4,24(s1)
5e0a: 0089db03 lhu s6,8(s3)
5e0e: 8f99 sub a5,a5,a4
5e10: 0167e463 bltu a5,s6,5e18 <SocketIPRAWReceive+0x46>
5e14: 000b1863 bnez s6,5e24 <SocketIPRAWReceive+0x52>
5e18: 854e mv a0,s3
5e1a: 47b020ef jal ra,8a94 <pbuf_free>
5e1e: 4505 li a0,1
5e20: f06fa06f j 526 <__riscv_restore_10>
5e24: 9a4a add s4,s4,s2
5e26: 894e mv s2,s3
5e28: 00a95603 lhu a2,10(s2)
5e2c: 408a0ab3 sub s5,s4,s0
5e30: 00492b83 lw s7,4(s2)
5e34: 04caf463 bgeu s5,a2,5e7c <SocketIPRAWReceive+0xaa>
5e38: 8656 mv a2,s5
5e3a: 85de mv a1,s7
5e3c: 8522 mv a0,s0
5e3e: 092070ef jal ra,ced0 <memcpy>
5e42: 00a95783 lhu a5,10(s2)
5e46: 4498 lw a4,8(s1)
5e48: 41440433 sub s0,s0,s4
5e4c: 943e add s0,s0,a5
5e4e: 8622 mv a2,s0
5e50: 015b85b3 add a1,s7,s5
5e54: 853a mv a0,a4
5e56: 07a070ef jal ra,ced0 <memcpy>
5e5a: 942a add s0,s0,a0
5e5c: 00092903 lw s2,0(s2)
5e60: fc0914e3 bnez s2,5e28 <SocketIPRAWReceive+0x56>
5e64: 854e mv a0,s3
5e66: 42f020ef jal ra,8a94 <pbuf_free>
5e6a: 4c9c lw a5,24(s1)
5e6c: c880 sw s0,16(s1)
5e6e: 97da add a5,a5,s6
5e70: cc9c sw a5,24(s1)
5e72: 409c lw a5,0(s1)
5e74: 0047e793 ori a5,a5,4
5e78: c09c sw a5,0(s1)
5e7a: b755 j 5e1e <SocketIPRAWReceive+0x4c>
5e7c: 8522 mv a0,s0
5e7e: 85de mv a1,s7
5e80: 050070ef jal ra,ced0 <memcpy>
5e84: 00a95783 lhu a5,10(s2)
5e88: 943e add s0,s0,a5
5e8a: fd5799e3 bne a5,s5,5e5c <SocketIPRAWReceive+0x8a>
5e8e: 4480 lw s0,8(s1)
5e90: b7f1 j 5e5c <SocketIPRAWReceive+0x8a>
5e92: 4501 li a0,0
5e94: b771 j 5e20 <SocketIPRAWReceive+0x4e>
00005e96 <SocketUdpReceive>:
SocketUdpReceive():
5e96: ce61 beqz a2,5f6e <SocketUdpReceive+0xd8>
5e98: e56fa2ef jal t0,4ee <__riscv_save_10>
5e9c: 00c52b83 lw s7,12(a0)
5ea0: 4d1c lw a5,24(a0)
5ea2: 00865b03 lhu s6,8(a2)
5ea6: 8aba mv s5,a4
5ea8: 40fb87b3 sub a5,s7,a5
5eac: 8a36 mv s4,a3
5eae: 8932 mv s2,a2
5eb0: 842a mv s0,a0
5eb2: 0167e463 bltu a5,s6,5eba <SocketUdpReceive+0x24>
5eb6: 000b1763 bnez s6,5ec4 <SocketUdpReceive+0x2e>
5eba: 854a mv a0,s2
5ebc: 3d9020ef jal ra,8a94 <pbuf_free>
5ec0: e66fa06f j 526 <__riscv_restore_10>
5ec4: 451c lw a5,8(a0)
5ec6: 4904 lw s1,16(a0)
5ec8: 89b2 mv s3,a2
5eca: 9bbe add s7,s7,a5
5ecc: 00a9d603 lhu a2,10(s3)
5ed0: 409b8c33 sub s8,s7,s1
5ed4: 0049ac83 lw s9,4(s3)
5ed8: 06cc7763 bgeu s8,a2,5f46 <SocketUdpReceive+0xb0>
5edc: 8662 mv a2,s8
5ede: 85e6 mv a1,s9
5ee0: 8526 mv a0,s1
5ee2: 7ef060ef jal ra,ced0 <memcpy>
5ee6: 00a9d783 lhu a5,10(s3)
5eea: 4418 lw a4,8(s0)
5eec: 417484b3 sub s1,s1,s7
5ef0: 94be add s1,s1,a5
5ef2: 8626 mv a2,s1
5ef4: 018c85b3 add a1,s9,s8
5ef8: 853a mv a0,a4
5efa: 7d7060ef jal ra,ced0 <memcpy>
5efe: 94aa add s1,s1,a0
5f00: 0009a983 lw s3,0(s3)
5f04: fc0994e3 bnez s3,5ecc <SocketUdpReceive+0x36>
5f08: 854a mv a0,s2
5f0a: 38b020ef jal ra,8a94 <pbuf_free>
5f0e: 03842803 lw a6,56(s0)
5f12: 04080563 beqz a6,5f5c <SocketUdpReceive+0xc6>
5f16: 001a4583 lbu a1,1(s4)
5f1a: 000a4783 lbu a5,0(s4)
5f1e: 4814 lw a3,16(s0)
5f20: 05a2 slli a1,a1,0x8
5f22: 8ddd or a1,a1,a5
5f24: 002a4783 lbu a5,2(s4)
5f28: 875a mv a4,s6
5f2a: 8656 mv a2,s5
5f2c: 07c2 slli a5,a5,0x10
5f2e: 8fcd or a5,a5,a1
5f30: 003a4583 lbu a1,3(s4)
5f34: 8522 mv a0,s0
5f36: 05e2 slli a1,a1,0x18
5f38: 8ddd or a1,a1,a5
5f3a: 9802 jalr a6
5f3c: 441c lw a5,8(s0)
5f3e: 00042c23 sw zero,24(s0)
5f42: c81c sw a5,16(s0)
5f44: bfb5 j 5ec0 <SocketUdpReceive+0x2a>
5f46: 8526 mv a0,s1
5f48: 85e6 mv a1,s9
5f4a: 787060ef jal ra,ced0 <memcpy>
5f4e: 00a9d783 lhu a5,10(s3)
5f52: 94be add s1,s1,a5
5f54: fb8796e3 bne a5,s8,5f00 <SocketUdpReceive+0x6a>
5f58: 4404 lw s1,8(s0)
5f5a: b75d j 5f00 <SocketUdpReceive+0x6a>
5f5c: 4c18 lw a4,24(s0)
5f5e: 401c lw a5,0(s0)
5f60: c804 sw s1,16(s0)
5f62: 975a add a4,a4,s6
5f64: 0047e793 ori a5,a5,4
5f68: cc18 sw a4,24(s0)
5f6a: c01c sw a5,0(s0)
5f6c: bf91 j 5ec0 <SocketUdpReceive+0x2a>
5f6e: 8082 ret
00005f70 <WCHSocketTCPReceive>:
WCHSocketTCPReceive():
5f70: 491c lw a5,16(a0)
5f72: c7f1 beqz a5,603e <WCHSocketTCPReceive+0xce>
5f74: d7afa2ef jal t0,4ee <__riscv_save_10>
5f78: 8a32 mv s4,a2
5f7a: 84ae mv s1,a1
5f7c: 842a mv s0,a0
5f7e: ca55 beqz a2,6032 <WCHSocketTCPReceive+0xc2>
5f80: 00852a83 lw s5,8(a0)
5f84: 4558 lw a4,12(a0)
5f86: 00865b83 lhu s7,8(a2)
5f8a: 8932 mv s2,a2
5f8c: 9aba add s5,s5,a4
5f8e: 0ac2 slli s5,s5,0x10
5f90: 010ada93 srli s5,s5,0x10
5f94: 01079993 slli s3,a5,0x10
5f98: 0109d993 srli s3,s3,0x10
5f9c: 413a8b33 sub s6,s5,s3
5fa0: 00a95603 lhu a2,10(s2)
5fa4: 0b42 slli s6,s6,0x10
5fa6: 010b5b13 srli s6,s6,0x10
5faa: 00492c03 lw s8,4(s2)
5fae: 06cb7663 bgeu s6,a2,601a <WCHSocketTCPReceive+0xaa>
5fb2: 865a mv a2,s6
5fb4: 85e2 mv a1,s8
5fb6: 853e mv a0,a5
5fb8: 719060ef jal ra,ced0 <memcpy>
5fbc: 00a95703 lhu a4,10(s2)
5fc0: 441c lw a5,8(s0)
5fc2: 016c05b3 add a1,s8,s6
5fc6: 41570733 sub a4,a4,s5
5fca: 99ba add s3,s3,a4
5fcc: 09c2 slli s3,s3,0x10
5fce: 0109d993 srli s3,s3,0x10
5fd2: 853e mv a0,a5
5fd4: 864e mv a2,s3
5fd6: 6fb060ef jal ra,ced0 <memcpy>
5fda: 013507b3 add a5,a0,s3
5fde: 00092903 lw s2,0(s2)
5fe2: fa0919e3 bnez s2,5f94 <WCHSocketTCPReceive+0x24>
5fe6: 4c18 lw a4,24(s0)
5fe8: c81c sw a5,16(s0)
5fea: 8552 mv a0,s4
5fec: 975e add a4,a4,s7
5fee: cc18 sw a4,24(s0)
5ff0: 4018 lw a4,0(s0)
5ff2: 00476713 ori a4,a4,4
5ff6: c018 sw a4,0(s0)
5ff8: 29d020ef jal ra,8a94 <pbuf_free>
5ffc: 38fe lhu a5,54(s1)
5ffe: 4c18 lw a4,24(s0)
6000: 8526 mv a0,s1
6002: 41778bb3 sub s7,a5,s7
6006: 445c lw a5,12(s0)
6008: 03749b23 sh s7,54(s1)
600c: 8f99 sub a5,a5,a4
600e: b4de sh a5,44(s1)
6010: 05c030ef jal ra,906c <tcp_update_rcv_ann_wnd>
6014: 4501 li a0,0
6016: d10fa06f j 526 <__riscv_restore_10>
601a: 853e mv a0,a5
601c: 85e2 mv a1,s8
601e: 6b3060ef jal ra,ced0 <memcpy>
6022: 00a95703 lhu a4,10(s2)
6026: 00e507b3 add a5,a0,a4
602a: fb671ae3 bne a4,s6,5fde <WCHSocketTCPReceive+0x6e>
602e: 441c lw a5,8(s0)
6030: b77d j 5fde <WCHSocketTCPReceive+0x6e>
6032: 4501 li a0,0
6034: f2ed bnez a3,6016 <WCHSocketTCPReceive+0xa6>
6036: 852e mv a0,a1
6038: 4c2030ef jal ra,94fa <tcp_close>
603c: bfe9 j 6016 <WCHSocketTCPReceive+0xa6>
603e: 557d li a0,-1
6040: 8082 ret
00006042 <LwipTcpConnectedCallBack>:
LwipTcpConnectedCallBack():
6042: cd4fa2ef jal t0,516 <__riscv_save_0>
6046: 842e mv s0,a1
6048: 000065b7 lui a1,0x6
604c: 84aa mv s1,a0
604e: f7058593 addi a1,a1,-144 # 5f70 <WCHSocketTCPReceive>
6052: 8522 mv a0,s0
6054: 110030ef jal ra,9164 <tcp_recv>
6058: 000065b7 lui a1,0x6
605c: 8522 mv a0,s0
605e: d9058593 addi a1,a1,-624 # 5d90 <LwipTCPSendCallBack>
6062: 108030ef jal ra,916a <tcp_sent>
6066: 000065b7 lui a1,0x6
606a: 8522 mv a0,s0
606c: 4605 li a2,1
606e: dce58593 addi a1,a1,-562 # 5dce <LwipTCPPollCallBack>
6072: 104030ef jal ra,9176 <tcp_poll>
6076: 209c lbu a5,0(s1)
6078: 4501 li a0,0
607a: 0087e793 ori a5,a5,8
607e: c09c sw a5,0(s1)
6080: cbafa06f j 53a <__riscv_restore_0>
00006084 <ErrorEncode>:
ErrorEncode():
6084: c919 beqz a0,609a <ErrorEncode+0x16>
6086: 40a00533 neg a0,a0
608a: 67b5 lui a5,0xd
608c: 3ac78793 addi a5,a5,940 # d3ac <ErrTable>
6090: 0ff57513 andi a0,a0,255
6094: 953e add a0,a0,a5
6096: 2108 lbu a0,0(a0)
6098: 8082 ret
609a: 4501 li a0,0
609c: 8082 ret
0000609e <WCHSocketInit>:
WCHSocketInit():
609e: c78fa2ef jal t0,516 <__riscv_save_0>
60a2: 03c00793 li a5,60
60a6: 02f587b3 mul a5,a1,a5
60aa: 2000f437 lui s0,0x2000f
60ae: 84c40713 addi a4,s0,-1972 # 2000e84c <SocketInf>
60b2: 892a mv s2,a0
60b4: 84ae mv s1,a1
60b6: 03c00613 li a2,60
60ba: 4581 li a1,0
60bc: 84c40413 addi s0,s0,-1972
60c0: 97ba add a5,a5,a4
60c2: 853e mv a0,a5
60c4: c82fa0ef jal ra,546 <memset>
60c8: 00090763 beqz s2,60d6 <WCHSocketInit+0x38>
60cc: 03c00613 li a2,60
60d0: 85ca mv a1,s2
60d2: 5ff060ef jal ra,ced0 <memcpy>
60d6: 03c00593 li a1,60
60da: 02b485b3 mul a1,s1,a1
60de: 95a2 add a1,a1,s0
60e0: 459c lw a5,8(a1)
60e2: c99c sw a5,16(a1)
60e4: c9dc sw a5,20(a1)
60e6: c54fa06f j 53a <__riscv_restore_0>
000060ea <WCHNET_Init>:
WCHNET_Init():
60ea: c12fa2ef jal t0,4fc <__riscv_save_4>
60ee: 8a2a mv s4,a0
60f0: 2002e537 lui a0,0x2002e
60f4: 1141 addi sp,sp,-16
60f6: 89ae mv s3,a1
60f8: 84b2 mv s1,a2
60fa: 4581 li a1,0
60fc: 4661 li a2,24
60fe: b1450513 addi a0,a0,-1260 # 2002db14 <DHCPCtrl>
6102: c636 sw a3,12(sp)
6104: c42fa0ef jal ra,546 <memset>
6108: 46b2 lw a3,12(sp)
610a: 2002e437 lui s0,0x2002e
610e: b8c40913 addi s2,s0,-1140 # 2002db8c <NetInf>
6112: 85b6 mv a1,a3
6114: 4619 li a2,6
6116: 00c90513 addi a0,s2,12
611a: 5b7060ef jal ra,ced0 <memcpy>
611e: 4611 li a2,4
6120: 85d2 mv a1,s4
6122: b8c40513 addi a0,s0,-1140
6126: 5ab060ef jal ra,ced0 <memcpy>
612a: 4611 li a2,4
612c: 85ce mv a1,s3
612e: 00490513 addi a0,s2,4
6132: 59f060ef jal ra,ced0 <memcpy>
6136: b8c40413 addi s0,s0,-1140
613a: e0a1 bnez s1,617a <WCHNET_Init+0x90>
613c: 010007b7 lui a5,0x1000
6140: 17fd addi a5,a5,-1
6142: c41c sw a5,8(s0)
6144: 4481 li s1,0
6146: 9541c783 lbu a5,-1708(gp) # 20000194 <SockNumber>
614a: 02f4cf63 blt s1,a5,6188 <WCHNET_Init+0x9e>
614e: 4e0010ef jal ra,762e <wch_ethernetif_init>
6152: 4785 li a5,1
6154: d05c sw a5,36(s0)
6156: 6715 lui a4,0x5
6158: 2002e7b7 lui a5,0x2002e
615c: b8078793 addi a5,a5,-1152 # 2002db80 <KeepLiveCfg>
6160: e2070713 addi a4,a4,-480 # 4e20 <vTaskPlaceOnEventListRestricted+0x58>
6164: c398 sw a4,0(a5)
6166: 6711 lui a4,0x4
6168: a9870713 addi a4,a4,-1384 # 3a98 <xPortStartScheduler+0x70>
616c: c3d8 sw a4,4(a5)
616e: 4725 li a4,9
6170: c798 sw a4,8(a5)
6172: 4501 li a0,0
6174: 0141 addi sp,sp,16
6176: bbafa06f j 530 <__riscv_restore_4>
617a: 4611 li a2,4
617c: 85a6 mv a1,s1
617e: 00840513 addi a0,s0,8
6182: 54f060ef jal ra,ced0 <memcpy>
6186: bf7d j 6144 <WCHNET_Init+0x5a>
6188: 0ff4f593 andi a1,s1,255
618c: 4501 li a0,0
618e: f11ff0ef jal ra,609e <WCHSocketInit>
6192: 0485 addi s1,s1,1
6194: bf4d j 6146 <WCHNET_Init+0x5c>
00006196 <WCHNET_ConfigKeepLive>:
WCHNET_ConfigKeepLive():
6196: 4118 lw a4,0(a0)
6198: 2002e7b7 lui a5,0x2002e
619c: b8078793 addi a5,a5,-1152 # 2002db80 <KeepLiveCfg>
61a0: c398 sw a4,0(a5)
61a2: 4158 lw a4,4(a0)
61a4: c3d8 sw a4,4(a5)
61a6: 4518 lw a4,8(a0)
61a8: c798 sw a4,8(a5)
61aa: 8082 ret
000061ac <WCHNET_ConfigLIB>:
WCHNET_ConfigLIB():
61ac: 5518 lw a4,40(a0)
61ae: 123457b7 lui a5,0x12345
61b2: 67878793 addi a5,a5,1656 # 12345678 <_data_lma+0x12338164>
61b6: 12f71a63 bne a4,a5,62ea <WCHNET_ConfigLIB+0x13e>
61ba: b42fa2ef jal t0,4fc <__riscv_save_4>
61be: 511c lw a5,32(a0)
61c0: 842a mv s0,a0
61c2: 4525 li a0,9
61c4: 10078b63 beqz a5,62da <WCHNET_ConfigLIB+0x12e>
61c8: 2002e937 lui s2,0x2002e
61cc: 04400613 li a2,68
61d0: 4581 li a1,0
61d2: b8c90513 addi a0,s2,-1140 # 2002db8c <NetInf>
61d6: b70fa0ef jal ra,546 <memset>
61da: 2002e4b7 lui s1,0x2002e
61de: 02c00613 li a2,44
61e2: 4581 li a1,0
61e4: bd048513 addi a0,s1,-1072 # 2002dbd0 <WCHCfg>
61e8: b5efa0ef jal ra,546 <memset>
61ec: 02c00613 li a2,44
61f0: 85a2 mv a1,s0
61f2: bd048513 addi a0,s1,-1072
61f6: 4db060ef jal ra,ced0 <memcpy>
61fa: bd048993 addi s3,s1,-1072
61fe: 0149a703 lw a4,20(s3)
6202: 864a mv a2,s2
6204: bd048793 addi a5,s1,-1072
6208: eb25 bnez a4,6278 <WCHNET_ConfigLIB+0xcc>
620a: 66b5 lui a3,0xd
620c: 1846d703 lhu a4,388(a3) # d184 <MemNum>
6210: 18468693 addi a3,a3,388
6214: 22ae lhu a1,2(a3)
6216: 972e add a4,a4,a1
6218: 22ce lhu a1,4(a3)
621a: 22f6 lhu a3,6(a3)
621c: 972e add a4,a4,a1
621e: 9736 add a4,a4,a3
6220: 01271693 slli a3,a4,0x12
6224: 0a06dd63 bgez a3,62de <WCHNET_ConfigLIB+0x132>
6228: cbd8 sw a4,20(a5)
622a: 4bd8 lw a4,20(a5)
622c: 00e75693 srli a3,a4,0xe
6230: 8afd andi a3,a3,31
6232: ea89 bnez a3,6244 <WCHNET_ConfigLIB+0x98>
6234: fff846b7 lui a3,0xfff84
6238: 16fd addi a3,a3,-1
623a: 8f75 and a4,a4,a3
623c: 000506b7 lui a3,0x50
6240: 8f55 or a4,a4,a3
6242: cbd8 sw a4,20(a5)
6244: 4bd8 lw a4,20(a5)
6246: 01375693 srli a3,a4,0x13
624a: 8afd andi a3,a3,31
624c: ea89 bnez a3,625e <WCHNET_ConfigLIB+0xb2>
624e: fff846b7 lui a3,0xfff84
6252: 16fd addi a3,a3,-1
6254: 8f75 and a4,a4,a3
6256: 005006b7 lui a3,0x500
625a: 8f55 or a4,a4,a3
625c: cbd8 sw a4,20(a5)
625e: 4bd8 lw a4,20(a5)
6260: 00671693 slli a3,a4,0x6
6264: 0006ca63 bltz a3,6278 <WCHNET_ConfigLIB+0xcc>
6268: fe0006b7 lui a3,0xfe000
626c: 16fd addi a3,a3,-1
626e: 8f75 and a4,a4,a3
6270: 140006b7 lui a3,0x14000
6274: 8f55 or a4,a4,a3
6276: cbd8 sw a4,20(a5)
6278: 4bd8 lw a4,20(a5)
627a: 01b75693 srli a3,a4,0x1b
627e: e689 bnez a3,6288 <WCHNET_ConfigLIB+0xdc>
6280: 400006b7 lui a3,0x40000
6284: 8f55 or a4,a4,a3
6286: cbd8 sw a4,20(a5)
6288: 46a9 li a3,10
628a: 94d188a3 sb a3,-1711(gp) # 20000191 <ARP_Retry_Period>
628e: 468d li a3,3
6290: 94d18823 sb a3,-1712(gp) # 20000190 <ARP_Retry_Cnt>
6294: 12c00693 li a3,300
6298: 94d19923 sh a3,-1710(gp) # 20000192 <Arp_Entry_timeout>
629c: 53d8 lw a4,36(a5)
629e: e711 bnez a4,62aa <WCHNET_ConfigLIB+0xfe>
62a0: 00006737 lui a4,0x6
62a4: b5c70713 addi a4,a4,-1188 # 5b5c <WCHNET_Rx>
62a8: d3d8 sw a4,36(a5)
62aa: 4bd4 lw a3,20(a5)
62ac: 4501 li a0,0
62ae: 00e6d713 srli a4,a3,0xe
62b2: 8b7d andi a4,a4,31
62b4: 94d18a23 sb a3,-1708(gp) # 20000194 <SockNumber>
62b8: b8c60793 addi a5,a2,-1140
62bc: cf98 sw a4,24(a5)
62be: 0136d713 srli a4,a3,0x13
62c2: 8b7d andi a4,a4,31
62c4: 03200613 li a2,50
62c8: 02c70733 mul a4,a4,a2
62cc: cfd8 sw a4,28(a5)
62ce: 00669713 slli a4,a3,0x6
62d2: 00075463 bgez a4,62da <WCHNET_ConfigLIB+0x12e>
62d6: 4709 li a4,2
62d8: c3b8 sw a4,64(a5)
62da: a56fa06f j 530 <__riscv_restore_4>
62de: 76f9 lui a3,0xffffe
62e0: 16fd addi a3,a3,-1
62e2: 8f75 and a4,a4,a3
62e4: 6689 lui a3,0x2
62e6: 8f55 or a4,a4,a3
62e8: b781 j 6228 <WCHNET_ConfigLIB+0x7c>
62ea: 0ff00513 li a0,255
62ee: 8082 ret
000062f0 <WCHNET_GetVer>:
WCHNET_GetVer():
62f0: 456d li a0,27
62f2: 8082 ret
000062f4 <WCHFindCorrectTCBPcb>:
WCHFindCorrectTCBPcb():
62f4: 9541c603 lbu a2,-1708(gp) # 20000194 <SockNumber>
62f8: 2000f7b7 lui a5,0x2000f
62fc: 84c78693 addi a3,a5,-1972 # 2000e84c <SocketInf>
6300: 4701 li a4,0
6302: 84c78793 addi a5,a5,-1972
6306: 00e61763 bne a2,a4,6314 <WCHFindCorrectTCBPcb+0x20>
630a: 4781 li a5,0
630c: 02f71363 bne a4,a5,6332 <WCHFindCorrectTCBPcb+0x3e>
6310: 4501 li a0,0
6312: 8082 ret
6314: 0307a803 lw a6,48(a5)
6318: 00a81763 bne a6,a0,6326 <WCHFindCorrectTCBPcb+0x32>
631c: c509 beqz a0,6326 <WCHFindCorrectTCBPcb+0x32>
631e: 4505 li a0,1
6320: d9ed beqz a1,6312 <WCHFindCorrectTCBPcb+0x1e>
6322: a198 sb a4,0(a1)
6324: 8082 ret
6326: 0705 addi a4,a4,1
6328: 0ff77713 andi a4,a4,255
632c: 03c78793 addi a5,a5,60
6330: bfd9 j 6306 <WCHFindCorrectTCBPcb+0x12>
6332: 5ad0 lw a2,52(a3)
6334: 00a61963 bne a2,a0,6346 <WCHFindCorrectTCBPcb+0x52>
6338: c519 beqz a0,6346 <WCHFindCorrectTCBPcb+0x52>
633a: 4505 li a0,1
633c: d9f9 beqz a1,6312 <WCHFindCorrectTCBPcb+0x1e>
633e: f807e793 ori a5,a5,-128
6342: a19c sb a5,0(a1)
6344: 8082 ret
6346: 0785 addi a5,a5,1
6348: 0ff7f793 andi a5,a5,255
634c: 03c68693 addi a3,a3,60 # 203c <qdx_port_sock_connect_notify+0xa>
6350: bf75 j 630c <WCHFindCorrectTCBPcb+0x18>
00006352 <WCHNET_SocketCreat>:
WCHNET_SocketCreat():
6352: 9aafa2ef jal t0,4fc <__riscv_save_4>
6356: 2000f937 lui s2,0x2000f
635a: 00050023 sb zero,0(a0)
635e: 9541c703 lbu a4,-1708(gp) # 20000194 <SockNumber>
6362: 1141 addi sp,sp,-16
6364: 84c90793 addi a5,s2,-1972 # 2000e84c <SocketInf>
6368: 4481 li s1,0
636a: 84c90913 addi s2,s2,-1972
636e: 00971763 bne a4,s1,637c <WCHNET_SocketCreat+0x2a>
6372: 02000513 li a0,32
6376: 0141 addi sp,sp,16
6378: 9b8fa06f j 530 <__riscv_restore_4>
637c: 03c78793 addi a5,a5,60
6380: fe47a683 lw a3,-28(a5)
6384: 18068163 beqz a3,6506 <WCHNET_SocketCreat+0x1b4>
6388: 0485 addi s1,s1,1
638a: 0ff4f493 andi s1,s1,255
638e: b7c5 j 636e <WCHNET_SocketCreat+0x1c>
6390: 2002e7b7 lui a5,0x2002e
6394: b8c7a783 lw a5,-1140(a5) # 2002db8c <NetInf>
6398: 006c addi a1,sp,12
639a: c63e sw a5,12(sp)
639c: 22f020ef jal ra,8dca <raw_bind>
63a0: 4611 li a2,4
63a2: 02c40593 addi a1,s0,44
63a6: 0068 addi a0,sp,12
63a8: 329060ef jal ra,ced0 <memcpy>
63ac: 006c addi a1,sp,12
63ae: 854e mv a0,s3
63b0: 239020ef jal ra,8de8 <raw_connect>
63b4: 03c00613 li a2,60
63b8: 02c48633 mul a2,s1,a2
63bc: 000065b7 lui a1,0x6
63c0: dd258593 addi a1,a1,-558 # 5dd2 <SocketIPRAWReceive>
63c4: 854e mv a0,s3
63c6: 964a add a2,a2,s2
63c8: 23f020ef jal ra,8e06 <raw_recv>
63cc: 4795 li a5,5
63ce: 2002e537 lui a0,0x2002e
63d2: 006c addi a1,sp,12
63d4: 03342823 sw s3,48(s0)
63d8: d01c sw a5,32(s0)
63da: bfc50513 addi a0,a0,-1028 # 2002dbfc <WCHNetIf>
63de: 50f000ef jal ra,70ec <etharp_request>
63e2: 85a6 mv a1,s1
63e4: 8522 mv a0,s0
63e6: cb9ff0ef jal ra,609e <WCHSocketInit>
63ea: 4501 li a0,0
63ec: b769 j 6376 <WCHNET_SocketCreat+0x24>
63ee: 4709 li a4,2
63f0: 0ae79063 bne a5,a4,6490 <WCHNET_SocketCreat+0x13e>
63f4: 427050ef jal ra,c01a <udp_new>
63f8: 89aa mv s3,a0
63fa: 12050363 beqz a0,6520 <WCHNET_SocketCreat+0x1ce>
63fe: 02c40a93 addi s5,s0,44
6402: 4611 li a2,4
6404: 85d6 mv a1,s5
6406: 0068 addi a0,sp,12
6408: 2c9060ef jal ra,ced0 <memcpy>
640c: 4a32 lw s4,12(sp)
640e: f0000537 lui a0,0xf0000
6412: 2d2010ef jal ra,76e4 <ntohl>
6416: 00aa7a33 and s4,s4,a0
641a: e0000537 lui a0,0xe0000
641e: 2c6010ef jal ra,76e4 <ntohl>
6422: 04aa0063 beq s4,a0,6462 <WCHNET_SocketCreat+0x110>
6426: 2002e5b7 lui a1,0x2002e
642a: bfc58593 addi a1,a1,-1028 # 2002dbfc <WCHNetIf>
642e: 0068 addi a0,sp,12
6430: 736010ef jal ra,7b66 <ip_addr_isbroadcast>
6434: e51d bnez a0,6462 <WCHNET_SocketCreat+0x110>
6436: 2002e7b7 lui a5,0x2002e
643a: b8c7a783 lw a5,-1140(a5) # 2002db8c <NetInf>
643e: 3412 lhu a2,40(s0)
6440: 006c addi a1,sp,12
6442: 854e mv a0,s3
6444: c63e sw a5,12(sp)
6446: 171050ef jal ra,bdb6 <udp_bind>
644a: e11d bnez a0,6470 <WCHNET_SocketCreat+0x11e>
644c: 85d6 mv a1,s5
644e: 4611 li a2,4
6450: 0068 addi a0,sp,12
6452: 27f060ef jal ra,ced0 <memcpy>
6456: 3052 lhu a2,36(s0)
6458: 006c addi a1,sp,12
645a: 854e mv a0,s3
645c: 30b050ef jal ra,bf66 <udp_connect>
6460: a039 j 646e <WCHNET_SocketCreat+0x11c>
6462: 3412 lhu a2,40(s0)
6464: 84c18593 addi a1,gp,-1972 # 2000008c <ip_addr_any>
6468: 854e mv a0,s3
646a: 14d050ef jal ra,bdb6 <udp_bind>
646e: c501 beqz a0,6476 <WCHNET_SocketCreat+0x124>
6470: c15ff0ef jal ra,6084 <ErrorEncode>
6474: b709 j 6376 <WCHNET_SocketCreat+0x24>
6476: 03c00613 li a2,60
647a: 02c48633 mul a2,s1,a2
647e: 000065b7 lui a1,0x6
6482: e9658593 addi a1,a1,-362 # 5e96 <SocketUdpReceive>
6486: 854e mv a0,s3
6488: 964a add a2,a2,s2
648a: 35b050ef jal ra,bfe4 <udp_recv>
648e: bf3d j 63cc <WCHNET_SocketCreat+0x7a>
6490: 470d li a4,3
6492: 02100513 li a0,33
6496: eee790e3 bne a5,a4,6376 <WCHNET_SocketCreat+0x24>
649a: 420030ef jal ra,98ba <tcp_new>
649e: 445c lw a5,12(s0)
64a0: 3412 lhu a2,40(s0)
64a2: 006c addi a1,sp,12
64a4: b95e sh a5,52(a0)
64a6: 2002e7b7 lui a5,0x2002e
64aa: b8c7a783 lw a5,-1140(a5) # 2002db8c <NetInf>
64ae: 89aa mv s3,a0
64b0: c63e sw a5,12(sp)
64b2: 2a5020ef jal ra,8f56 <tcp_bind>
64b6: 8a2a mv s4,a0
64b8: c511 beqz a0,64c4 <WCHNET_SocketCreat+0x172>
64ba: 854e mv a0,s3
64bc: 03e030ef jal ra,94fa <tcp_close>
64c0: 8552 mv a0,s4
64c2: b77d j 6470 <WCHNET_SocketCreat+0x11e>
64c4: 03c00593 li a1,60
64c8: 02b485b3 mul a1,s1,a1
64cc: 854e mv a0,s3
64ce: 95ca add a1,a1,s2
64d0: 491020ef jal ra,9160 <tcp_arg>
64d4: 000065b7 lui a1,0x6
64d8: 854e mv a0,s3
64da: d8e58593 addi a1,a1,-626 # 5d8e <NET_TCPError>
64de: 493020ef jal ra,9170 <tcp_err>
64e2: 4795 li a5,5
64e4: 85a6 mv a1,s1
64e6: 8522 mv a0,s0
64e8: 03342823 sw s3,48(s0)
64ec: 03342a23 sw s3,52(s0)
64f0: d01c sw a5,32(s0)
64f2: badff0ef jal ra,609e <WCHSocketInit>
64f6: 2002e537 lui a0,0x2002e
64fa: 006c addi a1,sp,12
64fc: bfc50513 addi a0,a0,-1028 # 2002dbfc <WCHNetIf>
6500: 3ed000ef jal ra,70ec <etharp_request>
6504: b5dd j 63ea <WCHNET_SocketCreat+0x98>
6506: a104 sb s1,0(a0)
6508: 4ddc lw a5,28(a1)
650a: c1c4 sw s1,4(a1)
650c: 842e mv s0,a1
650e: ee0790e3 bnez a5,63ee <WCHNET_SocketCreat+0x9c>
6512: 02844503 lbu a0,40(s0)
6516: 1b5020ef jal ra,8eca <raw_new>
651a: 89aa mv s3,a0
651c: e6051ae3 bnez a0,6390 <WCHNET_SocketCreat+0x3e>
6520: 4545 li a0,17
6522: bd91 j 6376 <WCHNET_SocketCreat+0x24>
00006524 <tcp_recved_socket>:
tcp_recved_socket():
6524: ff3f92ef jal t0,516 <__riscv_save_0>
6528: 08852783 lw a5,136(a0)
652c: b54e sh a1,44(a0)
652e: 842a mv s0,a0
6530: c781 beqz a5,6538 <tcp_recved_socket+0x14>
6532: 279e lhu a5,8(a5)
6534: 8d9d sub a1,a1,a5
6536: b54e sh a1,44(a0)
6538: 8522 mv a0,s0
653a: 333020ef jal ra,906c <tcp_update_rcv_ann_wnd>
653e: cd09 beqz a0,6558 <tcp_recved_socket+0x34>
6540: 02644783 lbu a5,38(s0)
6544: 8522 mv a0,s0
6546: 0027e793 ori a5,a5,2
654a: 02f40323 sb a5,38(s0)
654e: 77d040ef jal ra,b4ca <tcp_output>
6552: 4505 li a0,1
6554: fe7f906f j 53a <__riscv_restore_0>
6558: 2002e7b7 lui a5,0x2002e
655c: be07a783 lw a5,-1056(a5) # 2002dbe0 <WCHCfg+0x10>
6560: 83a1 srli a5,a5,0x8
6562: 8b85 andi a5,a5,1
6564: d7fd beqz a5,6552 <tcp_recved_socket+0x2e>
6566: 02644783 lbu a5,38(s0)
656a: 8b85 andi a5,a5,1
656c: d3fd beqz a5,6552 <tcp_recved_socket+0x2e>
656e: 4789 li a5,2
6570: 02f403a3 sb a5,39(s0)
6574: 4705 li a4,1
6576: 96e1a023 sw a4,-1696(gp) # 200001a0 <tcpSendAckFlag>
657a: bfe1 j 6552 <tcp_recved_socket+0x2e>
0000657c <WCHNET_ModifyRecvBuf>:
WCHNET_ModifyRecvBuf():
657c: 9541c783 lbu a5,-1708(gp) # 20000194 <SockNumber>
6580: 04f57663 bgeu a0,a5,65cc <WCHNET_ModifyRecvBuf+0x50>
6584: 03c00713 li a4,60
6588: 02e50533 mul a0,a0,a4
658c: 2000f7b7 lui a5,0x2000f
6590: 84c78793 addi a5,a5,-1972 # 2000e84c <SocketInf>
6594: 953e add a0,a0,a5
6596: 4d58 lw a4,28(a0)
6598: 00052c23 sw zero,24(a0)
659c: c550 sw a2,12(a0)
659e: c50c sw a1,8(a0)
65a0: c90c sw a1,16(a0)
65a2: c94c sw a1,20(a0)
65a4: 478d li a5,3
65a6: 02f71363 bne a4,a5,65cc <WCHNET_ModifyRecvBuf+0x50>
65aa: 5908 lw a0,48(a0)
65ac: c105 beqz a0,65cc <WCHNET_ModifyRecvBuf+0x50>
65ae: 395a lhu a4,52(a0)
65b0: 00163793 seqz a5,a2
65b4: 00f71c63 bne a4,a5,65cc <WCHNET_ModifyRecvBuf+0x50>
65b8: f5ff92ef jal t0,516 <__riscv_save_0>
65bc: 01061593 slli a1,a2,0x10
65c0: 81c1 srli a1,a1,0x10
65c2: b94e sh a1,52(a0)
65c4: f61ff0ef jal ra,6524 <tcp_recved_socket>
65c8: f73f906f j 53a <__riscv_restore_0>
65cc: 8082 ret
000065ce <WCHNET_SocketRecv>:
WCHNET_SocketRecv():
65ce: f2ff92ef jal t0,4fc <__riscv_save_4>
65d2: 4214 lw a3,0(a2)
65d4: 4469 li s0,26
65d6: cecd beqz a3,6690 <WCHNET_SocketRecv+0xc2>
65d8: 00062023 sw zero,0(a2)
65dc: 8a32 mv s4,a2
65de: 03c00613 li a2,60
65e2: 02c50633 mul a2,a0,a2
65e6: 2000f4b7 lui s1,0x2000f
65ea: 84c48713 addi a4,s1,-1972 # 2000e84c <SocketInf>
65ee: 89aa mv s3,a0
65f0: 87ae mv a5,a1
65f2: 84c48493 addi s1,s1,-1972
65f6: 9732 add a4,a4,a2
65f8: 00872b03 lw s6,8(a4)
65fc: 4750 lw a2,12(a4)
65fe: 01872903 lw s2,24(a4)
6602: 4b40 lw s0,20(a4)
6604: 9b32 add s6,s6,a2
6606: 0126f363 bgeu a3,s2,660c <WCHNET_SocketRecv+0x3e>
660a: 8936 mv s2,a3
660c: 408b0ab3 sub s5,s6,s0
6610: 092af363 bgeu s5,s2,6696 <WCHNET_SocketRecv+0xc8>
6614: cb81 beqz a5,6624 <WCHNET_SocketRecv+0x56>
6616: 853e mv a0,a5
6618: 8656 mv a2,s5
661a: 85a2 mv a1,s0
661c: 0b5060ef jal ra,ced0 <memcpy>
6620: 015507b3 add a5,a0,s5
6624: 03c00713 li a4,60
6628: 02e98733 mul a4,s3,a4
662c: 944a add s0,s0,s2
662e: 41640433 sub s0,s0,s6
6632: 9726 add a4,a4,s1
6634: 00872a83 lw s5,8(a4)
6638: c791 beqz a5,6644 <WCHNET_SocketRecv+0x76>
663a: 8622 mv a2,s0
663c: 85d6 mv a1,s5
663e: 853e mv a0,a5
6640: 091060ef jal ra,ced0 <memcpy>
6644: 9456 add s0,s0,s5
6646: 03c00793 li a5,60
664a: 02f987b3 mul a5,s3,a5
664e: 012a2023 sw s2,0(s4)
6652: 97a6 add a5,a5,s1
6654: 4f98 lw a4,24(a5)
6656: cbc0 sw s0,20(a5)
6658: 41270933 sub s2,a4,s2
665c: 0127ac23 sw s2,24(a5)
6660: 00091863 bnez s2,6670 <WCHNET_SocketRecv+0xa2>
6664: 4798 lw a4,8(a5)
6666: cbd8 sw a4,20(a5)
6668: cb98 sw a4,16(a5)
666a: 4398 lw a4,0(a5)
666c: 9b6d andi a4,a4,-5
666e: c398 sw a4,0(a5)
6670: 03c00793 li a5,60
6674: 02f989b3 mul s3,s3,a5
6678: 478d li a5,3
667a: 4401 li s0,0
667c: 94ce add s1,s1,s3
667e: 4cd8 lw a4,28(s1)
6680: 00f71863 bne a4,a5,6690 <WCHNET_SocketRecv+0xc2>
6684: 00091663 bnez s2,6690 <WCHNET_SocketRecv+0xc2>
6688: 24ce lhu a1,12(s1)
668a: 5888 lw a0,48(s1)
668c: e99ff0ef jal ra,6524 <tcp_recved_socket>
6690: 8522 mv a0,s0
6692: e9ff906f j 530 <__riscv_restore_4>
6696: c791 beqz a5,66a2 <WCHNET_SocketRecv+0xd4>
6698: 864a mv a2,s2
669a: 85a2 mv a1,s0
669c: 853e mv a0,a5
669e: 033060ef jal ra,ced0 <memcpy>
66a2: 944a add s0,s0,s2
66a4: fb2a91e3 bne s5,s2,6646 <WCHNET_SocketRecv+0x78>
66a8: 03c00793 li a5,60
66ac: 02f987b3 mul a5,s3,a5
66b0: 97a6 add a5,a5,s1
66b2: 4780 lw s0,8(a5)
66b4: bf49 j 6646 <WCHNET_SocketRecv+0x78>
000066b6 <SocketIPRawSend>:
SocketIPRawSend():
66b6: e39f92ef jal t0,4ee <__riscv_save_10>
66ba: 4200 lw s0,0(a2)
66bc: 00062023 sw zero,0(a2)
66c0: c455 beqz s0,676c <SocketIPRawSend+0xb6>
66c2: 87aa mv a5,a0
66c4: 4569 li a0,26
66c6: c5d9 beqz a1,6754 <SocketIPRawSend+0x9e>
66c8: 03c00513 li a0,60
66cc: 02a787b3 mul a5,a5,a0
66d0: 2000f537 lui a0,0x2000f
66d4: 84c50513 addi a0,a0,-1972 # 2000e84c <SocketInf>
66d8: 2002eab7 lui s5,0x2002e
66dc: 4481 li s1,0
66de: 97aa add a5,a5,a0
66e0: 0307ab03 lw s6,48(a5)
66e4: b8ca8793 addi a5,s5,-1140 # 2002db8c <NetInf>
66e8: 43bc lw a5,64(a5)
66ea: b8ca8a93 addi s5,s5,-1140
66ee: 8b89 andi a5,a5,2
66f0: e399 bnez a5,66f6 <SocketIPRawSend+0x40>
66f2: 0c700493 li s1,199
66f6: 5c800793 li a5,1480
66fa: 0087f463 bgeu a5,s0,6702 <SocketIPRawSend+0x4c>
66fe: 5c800413 li s0,1480
6702: 01041c93 slli s9,s0,0x10
6706: 8a32 mv s4,a2
6708: 892e mv s2,a1
670a: 010cdc93 srli s9,s9,0x10
670e: 0c800c13 li s8,200
6712: 4601 li a2,0
6714: 85e6 mv a1,s9
6716: 4501 li a0,0
6718: 3ca020ef jal ra,8ae2 <pbuf_alloc>
671c: 89aa mv s3,a0
671e: c929 beqz a0,6770 <SocketIPRawSend+0xba>
6720: 4148 lw a0,4(a0)
6722: 8622 mv a2,s0
6724: 85ca mv a1,s2
6726: 020aae23 sw zero,60(s5)
672a: 7a6060ef jal ra,ced0 <memcpy>
672e: 85ce mv a1,s3
6730: 855a mv a0,s6
6732: 758020ef jal ra,8e8a <raw_send>
6736: 8baa mv s7,a0
6738: 854e mv a0,s3
673a: 35a020ef jal ra,8a94 <pbuf_free>
673e: 03caa783 lw a5,60(s5)
6742: cb99 beqz a5,6758 <SocketIPRawSend+0xa2>
6744: 0485 addi s1,s1,1
6746: 04c2 slli s1,s1,0x10
6748: 80c1 srli s1,s1,0x10
674a: bb0ff0ef jal ra,5afa <WCHNET_NetInput>
674e: fd8492e3 bne s1,s8,6712 <SocketIPRawSend+0x5c>
6752: 454d li a0,19
6754: dd3f906f j 526 <__riscv_restore_10>
6758: 000bd663 bgez s7,6764 <SocketIPRawSend+0xae>
675c: 855e mv a0,s7
675e: 927ff0ef jal ra,6084 <ErrorEncode>
6762: bfcd j 6754 <SocketIPRawSend+0x9e>
6764: 008a2023 sw s0,0(s4)
6768: 4501 li a0,0
676a: b7ed j 6754 <SocketIPRawSend+0x9e>
676c: 4569 li a0,26
676e: b7dd j 6754 <SocketIPRawSend+0x9e>
6770: 4545 li a0,17
6772: b7cd j 6754 <SocketIPRawSend+0x9e>
00006774 <SocketUdpSend>:
SocketUdpSend():
6774: d7bf92ef jal t0,4ee <__riscv_save_10>
6778: 4200 lw s0,0(a2)
677a: 00062023 sw zero,0(a2)
677e: c455 beqz s0,682a <SocketUdpSend+0xb6>
6780: 87aa mv a5,a0
6782: 4569 li a0,26
6784: c5d9 beqz a1,6812 <SocketUdpSend+0x9e>
6786: 03c00513 li a0,60
678a: 02a787b3 mul a5,a5,a0
678e: 2000f537 lui a0,0x2000f
6792: 84c50513 addi a0,a0,-1972 # 2000e84c <SocketInf>
6796: 2002eab7 lui s5,0x2002e
679a: 4481 li s1,0
679c: 97aa add a5,a5,a0
679e: 0307ab03 lw s6,48(a5)
67a2: b8ca8793 addi a5,s5,-1140 # 2002db8c <NetInf>
67a6: 43bc lw a5,64(a5)
67a8: b8ca8a93 addi s5,s5,-1140
67ac: 8b89 andi a5,a5,2
67ae: e399 bnez a5,67b4 <SocketUdpSend+0x40>
67b0: 0c700493 li s1,199
67b4: 5c000793 li a5,1472
67b8: 0087f463 bgeu a5,s0,67c0 <SocketUdpSend+0x4c>
67bc: 5c000413 li s0,1472
67c0: 01041c93 slli s9,s0,0x10
67c4: 8a32 mv s4,a2
67c6: 892e mv s2,a1
67c8: 010cdc93 srli s9,s9,0x10
67cc: 0c800c13 li s8,200
67d0: 4601 li a2,0
67d2: 85e6 mv a1,s9
67d4: 4501 li a0,0
67d6: 30c020ef jal ra,8ae2 <pbuf_alloc>
67da: 89aa mv s3,a0
67dc: c929 beqz a0,682e <SocketUdpSend+0xba>
67de: 4148 lw a0,4(a0)
67e0: 8622 mv a2,s0
67e2: 85ca mv a1,s2
67e4: 020aae23 sw zero,60(s5)
67e8: 6e8060ef jal ra,ced0 <memcpy>
67ec: 85ce mv a1,s3
67ee: 855a mv a0,s6
67f0: 764050ef jal ra,bf54 <udp_send>
67f4: 8baa mv s7,a0
67f6: 854e mv a0,s3
67f8: 29c020ef jal ra,8a94 <pbuf_free>
67fc: 03caa783 lw a5,60(s5)
6800: cb99 beqz a5,6816 <SocketUdpSend+0xa2>
6802: 0485 addi s1,s1,1
6804: 04c2 slli s1,s1,0x10
6806: 80c1 srli s1,s1,0x10
6808: af2ff0ef jal ra,5afa <WCHNET_NetInput>
680c: fd8492e3 bne s1,s8,67d0 <SocketUdpSend+0x5c>
6810: 454d li a0,19
6812: d15f906f j 526 <__riscv_restore_10>
6816: 000bd663 bgez s7,6822 <SocketUdpSend+0xae>
681a: 855e mv a0,s7
681c: 869ff0ef jal ra,6084 <ErrorEncode>
6820: bfcd j 6812 <SocketUdpSend+0x9e>
6822: 008a2023 sw s0,0(s4)
6826: 4501 li a0,0
6828: b7ed j 6812 <SocketUdpSend+0x9e>
682a: 4569 li a0,26
682c: b7dd j 6812 <SocketUdpSend+0x9e>
682e: 4545 li a0,17
6830: b7cd j 6812 <SocketUdpSend+0x9e>
00006832 <SocketTcpSend>:
SocketTcpSend():
6832: cbdf92ef jal t0,4ee <__riscv_save_10>
6836: 00062983 lw s3,0(a2)
683a: 00062023 sw zero,0(a2)
683e: 0c098e63 beqz s3,691a <SocketTcpSend+0xe8>
6842: 87aa mv a5,a0
6844: 8b2e mv s6,a1
6846: 4569 li a0,26
6848: c1a1 beqz a1,6888 <SocketTcpSend+0x56>
684a: 03c00513 li a0,60
684e: 02a787b3 mul a5,a5,a0
6852: 2000f537 lui a0,0x2000f
6856: 84c50513 addi a0,a0,-1972 # 2000e84c <SocketInf>
685a: 2002ea37 lui s4,0x2002e
685e: 8bb2 mv s7,a2
6860: 0c900a93 li s5,201
6864: 4481 li s1,0
6866: 4c11 li s8,4
6868: bd0a0a13 addi s4,s4,-1072 # 2002dbd0 <WCHCfg>
686c: 5cfd li s9,-1
686e: 97aa add a5,a5,a0
6870: 0307a903 lw s2,48(a5)
6874: 1afd addi s5,s5,-1
6876: 0ac2 slli s5,s5,0x10
6878: 010ada93 srli s5,s5,0x10
687c: 000a9863 bnez s5,688c <SocketTcpSend+0x5a>
6880: 000ba783 lw a5,0(s7) # 4000 <xQueueGenericSendFromISR+0x8>
6884: cbc9 beqz a5,6916 <SocketTcpSend+0xe4>
6886: 4501 li a0,0
6888: c9ff906f j 526 <__riscv_restore_10>
688c: 01092783 lw a5,16(s2)
6890: 09879763 bne a5,s8,691e <SocketTcpSend+0xec>
6894: a66ff0ef jal ra,5afa <WCHNET_NetInput>
6898: 07695703 lhu a4,118(s2)
689c: e319 bnez a4,68a2 <SocketTcpSend+0x70>
689e: 4545 li a0,17
68a0: b7e5 j 6888 <SocketTcpSend+0x56>
68a2: 010a2783 lw a5,16(s4)
68a6: 8b85 andi a5,a5,1
68a8: e399 bnez a5,68ae <SocketTcpSend+0x7c>
68aa: ff376ae3 bltu a4,s3,689e <SocketTcpSend+0x6c>
68ae: 004a2403 lw s0,4(s4)
68b2: 00877363 bgeu a4,s0,68b8 <SocketTcpSend+0x86>
68b6: 843a mv s0,a4
68b8: 0089f363 bgeu s3,s0,68be <SocketTcpSend+0x8c>
68bc: 844e mv s0,s3
68be: 01041613 slli a2,s0,0x10
68c2: 8241 srli a2,a2,0x10
68c4: 4685 li a3,1
68c6: e391 bnez a5,68ca <SocketTcpSend+0x98>
68c8: 4681 li a3,0
68ca: 85da mv a1,s6
68cc: 854a mv a0,s2
68ce: 35d040ef jal ra,b42a <tcp_write>
68d2: 84aa mv s1,a0
68d4: 854a mv a0,s2
68d6: e48d bnez s1,6900 <SocketTcpSend+0xce>
68d8: 3f3040ef jal ra,b4ca <tcp_output>
68dc: 000ba783 lw a5,0(s7)
68e0: 408989b3 sub s3,s3,s0
68e4: 84aa mv s1,a0
68e6: 97a2 add a5,a5,s0
68e8: 00fba023 sw a5,0(s7)
68ec: 9b22 add s6,s6,s0
68ee: f8098ce3 beqz s3,6886 <SocketTcpSend+0x54>
68f2: 010a2783 lw a5,16(s4)
68f6: 8b85 andi a5,a5,1
68f8: ffb5 bnez a5,6874 <SocketTcpSend+0x42>
68fa: f8aff0ef jal ra,6084 <ErrorEncode>
68fe: b769 j 6888 <SocketTcpSend+0x56>
6900: 01949963 bne s1,s9,6912 <SocketTcpSend+0xe0>
6904: 3c7040ef jal ra,b4ca <tcp_output>
6908: 010a2783 lw a5,16(s4)
690c: 8b85 andi a5,a5,1
690e: f3bd bnez a5,6874 <SocketTcpSend+0x42>
6910: b779 j 689e <SocketTcpSend+0x6c>
6912: 3b9040ef jal ra,b4ca <tcp_output>
6916: 8526 mv a0,s1
6918: b7cd j 68fa <SocketTcpSend+0xc8>
691a: 4569 li a0,26
691c: b7b5 j 6888 <SocketTcpSend+0x56>
691e: 455d li a0,23
6920: b7a5 j 6888 <SocketTcpSend+0x56>
00006922 <WCHNET_SocketSend>:
WCHNET_SocketSend():
6922: 03c00793 li a5,60
6926: 02f507b3 mul a5,a0,a5
692a: 2000f737 lui a4,0x2000f
692e: 84c70713 addi a4,a4,-1972 # 2000e84c <SocketInf>
6932: 97ba add a5,a5,a4
6934: 0207a803 lw a6,32(a5)
6938: 4715 li a4,5
693a: 00e80763 beq a6,a4,6948 <WCHNET_SocketSend+0x26>
693e: 47dd li a5,23
6940: 00062023 sw zero,0(a2)
6944: 853e mv a0,a5
6946: 8082 ret
6948: bcff92ef jal t0,516 <__riscv_save_0>
694c: 4fd8 lw a4,28(a5)
694e: 478d li a5,3
6950: 00f71863 bne a4,a5,6960 <WCHNET_SocketSend+0x3e>
6954: edfff0ef jal ra,6832 <SocketTcpSend>
6958: 87aa mv a5,a0
695a: 853e mv a0,a5
695c: bdff906f j 53a <__riscv_restore_0>
6960: e701 bnez a4,6968 <WCHNET_SocketSend+0x46>
6962: d55ff0ef jal ra,66b6 <SocketIPRawSend>
6966: bfcd j 6958 <WCHNET_SocketSend+0x36>
6968: 4689 li a3,2
696a: 0fa00793 li a5,250
696e: fed716e3 bne a4,a3,695a <WCHNET_SocketSend+0x38>
6972: e03ff0ef jal ra,6774 <SocketUdpSend>
6976: b7cd j 6958 <WCHNET_SocketSend+0x36>
00006978 <WCHScokedIntHandle>:
WCHScokedIntHandle():
6978: b9ff92ef jal t0,516 <__riscv_save_0>
697c: 47a1 li a5,8
697e: 84aa mv s1,a0
6980: 2100 lbu s0,0(a0)
6982: 02f58a63 beq a1,a5,69b6 <WCHScokedIntHandle+0x3e>
6986: 00b7ec63 bltu a5,a1,699e <WCHScokedIntHandle+0x26>
698a: 4785 li a5,1
698c: 02f58163 beq a1,a5,69ae <WCHScokedIntHandle+0x36>
6990: 4789 li a5,2
6992: 00246413 ori s0,s0,2
6996: 00f58e63 beq a1,a5,69b2 <WCHScokedIntHandle+0x3a>
699a: ba1f906f j 53a <__riscv_restore_0>
699e: 47c1 li a5,16
69a0: 00f58e63 beq a1,a5,69bc <WCHScokedIntHandle+0x44>
69a4: 04000793 li a5,64
69a8: 04046413 ori s0,s0,64
69ac: b7ed j 6996 <WCHScokedIntHandle+0x1e>
69ae: 00146413 ori s0,s0,1
69b2: c080 sw s0,0(s1)
69b4: b7dd j 699a <WCHScokedIntHandle+0x22>
69b6: 00846413 ori s0,s0,8
69ba: bfe5 j 69b2 <WCHScokedIntHandle+0x3a>
69bc: 5948 lw a0,52(a0)
69be: 01046413 ori s0,s0,16
69c2: d965 beqz a0,69b2 <WCHScokedIntHandle+0x3a>
69c4: 337020ef jal ra,94fa <tcp_close>
69c8: b7ed j 69b2 <WCHScokedIntHandle+0x3a>
000069ca <LwipRemoveTcpPcb>:
LwipRemoveTcpPcb():
69ca: b33f92ef jal t0,4fc <__riscv_save_4>
69ce: 1141 addi sp,sp,-16
69d0: 00f10593 addi a1,sp,15
69d4: 89aa mv s3,a0
69d6: 000107a3 sb zero,15(sp)
69da: 91bff0ef jal ra,62f4 <WCHFindCorrectTCBPcb>
69de: c515 beqz a0,6a0a <LwipRemoveTcpPcb+0x40>
69e0: 8784 lbu s1,15(sp)
69e2: 01849793 slli a5,s1,0x18
69e6: 87e1 srai a5,a5,0x18
69e8: 0207d463 bgez a5,6a10 <LwipRemoveTcpPcb+0x46>
69ec: 03c00413 li s0,60
69f0: 07f4f493 andi s1,s1,127
69f4: 028484b3 mul s1,s1,s0
69f8: 2000f437 lui s0,0x2000f
69fc: 84c40413 addi s0,s0,-1972 # 2000e84c <SocketInf>
6a00: 9426 add s0,s0,s1
6a02: 02042a23 sw zero,52(s0)
6a06: 02042023 sw zero,32(s0)
6a0a: 0141 addi sp,sp,16
6a0c: b25f906f j 530 <__riscv_restore_4>
6a10: 9541c783 lbu a5,-1708(gp) # 20000194 <SockNumber>
6a14: fef4fbe3 bgeu s1,a5,6a0a <LwipRemoveTcpPcb+0x40>
6a18: 03c00713 li a4,60
6a1c: 02e48733 mul a4,s1,a4
6a20: 2000f7b7 lui a5,0x2000f
6a24: 84c78413 addi s0,a5,-1972 # 2000e84c <SocketInf>
6a28: 84c78913 addi s2,a5,-1972
6a2c: 943a add s0,s0,a4
6a2e: 4c54 lw a3,28(s0)
6a30: 470d li a4,3
6a32: fce69ce3 bne a3,a4,6a0a <LwipRemoveTcpPcb+0x40>
6a36: 0109a783 lw a5,16(s3)
6a3a: 4705 li a4,1
6a3c: 17dd addi a5,a5,-9
6a3e: 0ff7f793 andi a5,a5,255
6a42: 00f76e63 bltu a4,a5,6a5e <LwipRemoveTcpPcb+0x94>
6a46: 45c1 li a1,16
6a48: 8522 mv a0,s0
6a4a: f2fff0ef jal ra,6978 <WCHScokedIntHandle>
6a4e: 03c00793 li a5,60
6a52: 02f484b3 mul s1,s1,a5
6a56: 94ca add s1,s1,s2
6a58: 0204a823 sw zero,48(s1)
6a5c: b76d j 6a06 <LwipRemoveTcpPcb+0x3c>
6a5e: 201c lbu a5,0(s0)
6a60: 0407e793 ori a5,a5,64
6a64: c01c sw a5,0(s0)
6a66: b7e5 j 6a4e <LwipRemoveTcpPcb+0x84>
00006a68 <WCHNET_QueryGlobalInt>:
WCHNET_QueryGlobalInt():
6a68: 2000f737 lui a4,0x2000f
6a6c: 9541c683 lbu a3,-1708(gp) # 20000194 <SockNumber>
6a70: 84c70713 addi a4,a4,-1972 # 2000e84c <SocketInf>
6a74: 4781 li a5,0
6a76: 00f68f63 beq a3,a5,6a94 <WCHNET_QueryGlobalInt+0x2c>
6a7a: 03c70713 addi a4,a4,60
6a7e: fc472603 lw a2,-60(a4)
6a82: ce11 beqz a2,6a9e <WCHNET_QueryGlobalInt+0x36>
6a84: 2002e7b7 lui a5,0x2002e
6a88: b8c78793 addi a5,a5,-1140 # 2002db8c <NetInf>
6a8c: 57d8 lw a4,44(a5)
6a8e: 01076713 ori a4,a4,16
6a92: d7d8 sw a4,44(a5)
6a94: 2002e7b7 lui a5,0x2002e
6a98: bb87c503 lbu a0,-1096(a5) # 2002dbb8 <NetInf+0x2c>
6a9c: 8082 ret
6a9e: 0785 addi a5,a5,1
6aa0: 0ff7f793 andi a5,a5,255
6aa4: bfc9 j 6a76 <WCHNET_QueryGlobalInt+0xe>
00006aa6 <WCHNET_GetGlobalInt>:
WCHNET_GetGlobalInt():
6aa6: a71f92ef jal t0,516 <__riscv_save_0>
6aaa: fbfff0ef jal ra,6a68 <WCHNET_QueryGlobalInt>
6aae: 2002e7b7 lui a5,0x2002e
6ab2: ba07ac23 sw zero,-1096(a5) # 2002dbb8 <NetInf+0x2c>
6ab6: a85f906f j 53a <__riscv_restore_0>
00006aba <WCHNET_GetSocketInt>:
WCHNET_GetSocketInt():
6aba: 9541c783 lbu a5,-1708(gp) # 20000194 <SockNumber>
6abe: 02f57163 bgeu a0,a5,6ae0 <WCHNET_GetSocketInt+0x26>
6ac2: 03c00793 li a5,60
6ac6: 02f50533 mul a0,a0,a5
6aca: 2000f7b7 lui a5,0x2000f
6ace: 84c78793 addi a5,a5,-1972 # 2000e84c <SocketInf>
6ad2: 97aa add a5,a5,a0
6ad4: 4398 lw a4,0(a5)
6ad6: 0ff77513 andi a0,a4,255
6ada: 8b11 andi a4,a4,4
6adc: c398 sw a4,0(a5)
6ade: 8082 ret
6ae0: 4501 li a0,0
6ae2: 8082 ret
00006ae4 <WCHNET_GetPHYStatus>:
WCHNET_GetPHYStatus():
6ae4: 2002e7b7 lui a5,0x2002e
6ae8: bac7c503 lbu a0,-1108(a5) # 2002dbac <NetInf+0x20>
6aec: 8082 ret
00006aee <WCHNET_SocketConnect>:
WCHNET_SocketConnect():
6aee: 9541c783 lbu a5,-1708(gp) # 20000194 <SockNumber>
6af2: 06f57763 bgeu a0,a5,6b60 <WCHNET_SocketConnect+0x72>
6af6: a21f92ef jal t0,516 <__riscv_save_0>
6afa: 03c00413 li s0,60
6afe: 02850533 mul a0,a0,s0
6b02: 2000f437 lui s0,0x2000f
6b06: 84c40413 addi s0,s0,-1972 # 2000e84c <SocketInf>
6b0a: 1141 addi sp,sp,-16
6b0c: 942a add s0,s0,a0
6b0e: 5804 lw s1,48(s0)
6b10: 455d li a0,23
6b12: cc85 beqz s1,6b4a <WCHNET_SocketConnect+0x5c>
6b14: 5018 lw a4,32(s0)
6b16: 4795 li a5,5
6b18: 02f71963 bne a4,a5,6b4a <WCHNET_SocketConnect+0x5c>
6b1c: 545c lw a5,44(s0)
6b1e: 02042a23 sw zero,52(s0)
6b22: 000066b7 lui a3,0x6
6b26: c63e sw a5,12(sp)
6b28: 3052 lhu a2,36(s0)
6b2a: 04268693 addi a3,a3,66 # 6042 <LwipTcpConnectedCallBack>
6b2e: 006c addi a1,sp,12
6b30: 8526 mv a0,s1
6b32: 5c7020ef jal ra,98f8 <tcp_connect>
6b36: 892a mv s2,a0
6b38: cd01 beqz a0,6b50 <WCHNET_SocketConnect+0x62>
6b3a: 8526 mv a0,s1
6b3c: 1bf020ef jal ra,94fa <tcp_close>
6b40: 854a mv a0,s2
6b42: 02042023 sw zero,32(s0)
6b46: d3eff0ef jal ra,6084 <ErrorEncode>
6b4a: 0141 addi sp,sp,16
6b4c: 9eff906f j 53a <__riscv_restore_0>
6b50: 0264c783 lbu a5,38(s1)
6b54: 4501 li a0,0
6b56: fbf7f793 andi a5,a5,-65
6b5a: 02f48323 sb a5,38(s1)
6b5e: b7f5 j 6b4a <WCHNET_SocketConnect+0x5c>
6b60: 4569 li a0,26
6b62: 8082 ret
00006b64 <CloseUpdConnect>:
CloseUpdConnect():
6b64: 9b3f92ef jal t0,516 <__riscv_save_0>
6b68: 03c00413 li s0,60
6b6c: 02850433 mul s0,a0,s0
6b70: 2000f537 lui a0,0x2000f
6b74: 84c50513 addi a0,a0,-1972 # 2000e84c <SocketInf>
6b78: 44dd li s1,23
6b7a: 942a add s0,s0,a0
6b7c: 5808 lw a0,48(s0)
6b7e: cd01 beqz a0,6b96 <CloseUpdConnect+0x32>
6b80: 5018 lw a4,32(s0)
6b82: 4795 li a5,5
6b84: 4481 li s1,0
6b86: 00f71863 bne a4,a5,6b96 <CloseUpdConnect+0x32>
6b8a: 460050ef jal ra,bfea <udp_remove>
6b8e: 02042823 sw zero,48(s0)
6b92: 02042023 sw zero,32(s0)
6b96: 8526 mv a0,s1
6b98: 9a3f906f j 53a <__riscv_restore_0>
00006b9c <CloseIPRAWConnect>:
CloseIPRAWConnect():
6b9c: 97bf92ef jal t0,516 <__riscv_save_0>
6ba0: 03c00413 li s0,60
6ba4: 02850433 mul s0,a0,s0
6ba8: 2000f537 lui a0,0x2000f
6bac: 84c50513 addi a0,a0,-1972 # 2000e84c <SocketInf>
6bb0: 44dd li s1,23
6bb2: 942a add s0,s0,a0
6bb4: 5808 lw a0,48(s0)
6bb6: cd01 beqz a0,6bce <CloseIPRAWConnect+0x32>
6bb8: 5018 lw a4,32(s0)
6bba: 4795 li a5,5
6bbc: 4481 li s1,0
6bbe: 00f71863 bne a4,a5,6bce <CloseIPRAWConnect+0x32>
6bc2: 2d8020ef jal ra,8e9a <raw_remove>
6bc6: 02042823 sw zero,48(s0)
6bca: 02042023 sw zero,32(s0)
6bce: 8526 mv a0,s1
6bd0: 96bf906f j 53a <__riscv_restore_0>
00006bd4 <CloseTcpPCB>:
CloseTcpPCB():
6bd4: 929f92ef jal t0,4fc <__riscv_save_4>
6bd8: 03c00793 li a5,60
6bdc: 02f507b3 mul a5,a0,a5
6be0: 2000f437 lui s0,0x2000f
6be4: 84c40993 addi s3,s0,-1972 # 2000e84c <SocketInf>
6be8: 892a mv s2,a0
6bea: 1141 addi sp,sp,-16
6bec: 84c40413 addi s0,s0,-1972
6bf0: 4481 li s1,0
6bf2: 99be add s3,s3,a5
6bf4: 0349a503 lw a0,52(s3)
6bf8: c901 beqz a0,6c08 <CloseTcpPCB+0x34>
6bfa: c62e sw a1,12(sp)
6bfc: 0ff020ef jal ra,94fa <tcp_close>
6c00: 45b2 lw a1,12(sp)
6c02: 84aa mv s1,a0
6c04: 0209a023 sw zero,32(s3)
6c08: 03c00793 li a5,60
6c0c: 02f90933 mul s2,s2,a5
6c10: 944a add s0,s0,s2
6c12: 5808 lw a0,48(s0)
6c14: cd01 beqz a0,6c2c <CloseTcpPCB+0x58>
6c16: ed99 bnez a1,6c34 <CloseTcpPCB+0x60>
6c18: 0e3020ef jal ra,94fa <tcp_close>
6c1c: 84aa mv s1,a0
6c1e: e519 bnez a0,6c2c <CloseTcpPCB+0x58>
6c20: 5018 lw a4,32(s0)
6c22: 4795 li a5,5
6c24: 00f71463 bne a4,a5,6c2c <CloseTcpPCB+0x58>
6c28: 4799 li a5,6
6c2a: d01c sw a5,32(s0)
6c2c: 8526 mv a0,s1
6c2e: 0141 addi sp,sp,16
6c30: 901f906f j 530 <__riscv_restore_4>
6c34: 4918 lw a4,16(a0)
6c36: 47a9 li a5,10
6c38: 00f70e63 beq a4,a5,6c54 <CloseTcpPCB+0x80>
6c3c: 4785 li a5,1
6c3e: 00f59663 bne a1,a5,6c4a <CloseTcpPCB+0x76>
6c42: 4585 li a1,1
6c44: 299020ef jal ra,96dc <tcp_abandon>
6c48: b7d5 j 6c2c <CloseTcpPCB+0x58>
6c4a: 4789 li a5,2
6c4c: 00f59663 bne a1,a5,6c58 <CloseTcpPCB+0x84>
6c50: 4581 li a1,0
6c52: bfcd j 6c44 <CloseTcpPCB+0x70>
6c54: 54c9 li s1,-14
6c56: bfd9 j 6c2c <CloseTcpPCB+0x58>
6c58: 54d9 li s1,-10
6c5a: bfc9 j 6c2c <CloseTcpPCB+0x58>
00006c5c <WCHNET_SocketClose>:
WCHNET_SocketClose():
6c5c: 9541c703 lbu a4,-1708(gp) # 20000194 <SockNumber>
6c60: 04e57b63 bgeu a0,a4,6cb6 <WCHNET_SocketClose+0x5a>
6c64: 03c00713 li a4,60
6c68: 02e507b3 mul a5,a0,a4
6c6c: 2000f737 lui a4,0x2000f
6c70: 84c70713 addi a4,a4,-1972 # 2000e84c <SocketInf>
6c74: 4695 li a3,5
6c76: 97ba add a5,a5,a4
6c78: 5390 lw a2,32(a5)
6c7a: 475d li a4,23
6c7c: 02d61e63 bne a2,a3,6cb8 <WCHNET_SocketClose+0x5c>
6c80: 897f92ef jal t0,516 <__riscv_save_0>
6c84: 4fdc lw a5,28(a5)
6c86: 4709 li a4,2
6c88: 00e79763 bne a5,a4,6c96 <WCHNET_SocketClose+0x3a>
6c8c: ed9ff0ef jal ra,6b64 <CloseUpdConnect>
6c90: 0562 slli a0,a0,0x18
6c92: 8561 srai a0,a0,0x18
6c94: a031 j 6ca0 <WCHNET_SocketClose+0x44>
6c96: 470d li a4,3
6c98: 00e79a63 bne a5,a4,6cac <WCHNET_SocketClose+0x50>
6c9c: f39ff0ef jal ra,6bd4 <CloseTcpPCB>
6ca0: be4ff0ef jal ra,6084 <ErrorEncode>
6ca4: 872a mv a4,a0
6ca6: 853a mv a0,a4
6ca8: 893f906f j 53a <__riscv_restore_0>
6cac: 4765 li a4,25
6cae: ffe5 bnez a5,6ca6 <WCHNET_SocketClose+0x4a>
6cb0: eedff0ef jal ra,6b9c <CloseIPRAWConnect>
6cb4: bff1 j 6c90 <WCHNET_SocketClose+0x34>
6cb6: 4769 li a4,26
6cb8: 853a mv a0,a4
6cba: 8082 ret
00006cbc <QueryPingEnable>:
QueryPingEnable():
6cbc: 2002e7b7 lui a5,0x2002e
6cc0: be47a503 lw a0,-1052(a5) # 2002dbe4 <WCHCfg+0x14>
6cc4: 8135 srli a0,a0,0xd
6cc6: 8905 andi a0,a0,1
6cc8: 8082 ret
00006cca <LwipUnreachPort>:
LwipUnreachPort():
6cca: 2002e7b7 lui a5,0x2002e
6cce: b8c78793 addi a5,a5,-1140 # 2002db8c <NetInf>
6cd2: 4705 li a4,1
6cd4: 1141 addi sp,sp,-16
6cd6: cbc8 sw a0,20(a5)
6cd8: db94 sw a3,48(a5)
6cda: dbd0 sw a2,52(a5)
6cdc: df8c sw a1,56(a5)
6cde: d7d8 sw a4,44(a5)
6ce0: 0141 addi sp,sp,16
6ce2: 8082 ret
00006ce4 <LwipArpCheck>:
LwipArpCheck():
6ce4: 2002e7b7 lui a5,0x2002e
6ce8: 4705 li a4,1
6cea: bce7a423 sw a4,-1080(a5) # 2002dbc8 <NetInf+0x3c>
6cee: 8082 ret
00006cf0 <find_entry>:
find_entry():
6cf0: 827f92ef jal t0,516 <__riscv_save_0>
6cf4: 2002e7b7 lui a5,0x2002e
6cf8: bdc7a603 lw a2,-1060(a5) # 2002dbdc <WCHCfg+0xc>
6cfc: 8241a683 lw a3,-2012(gp) # 20000064 <arp_table>
6d00: 01861713 slli a4,a2,0x18
6d04: 8761 srai a4,a4,0x18
6d06: 14050c63 beqz a0,6e5e <find_entry+0x16e>
6d0a: 9641c783 lbu a5,-1692(gp) # 200001a4 <etharp_cached_entry>
6d0e: 4861 li a6,24
6d10: 4889 li a7,2
6d12: 03078833 mul a6,a5,a6
6d16: 9836 add a6,a6,a3
6d18: 00c82303 lw t1,12(a6)
6d1c: 15131163 bne t1,a7,6e5e <find_entry+0x16e>
6d20: 00154303 lbu t1,1(a0)
6d24: 00054883 lbu a7,0(a0)
6d28: 00082803 lw a6,0(a6)
6d2c: 0322 slli t1,t1,0x8
6d2e: 01136333 or t1,t1,a7
6d32: 00254883 lbu a7,2(a0)
6d36: 08c2 slli a7,a7,0x10
6d38: 0068e333 or t1,a7,t1
6d3c: 00354883 lbu a7,3(a0)
6d40: 08e2 slli a7,a7,0x18
6d42: 0068e8b3 or a7,a7,t1
6d46: 11089c63 bne a7,a6,6e5e <find_entry+0x16e>
6d4a: 07e2 slli a5,a5,0x18
6d4c: 87e1 srai a5,a5,0x18
6d4e: 853e mv a0,a5
6d50: feaf906f j 53a <__riscv_restore_0>
6d54: 025788b3 mul a7,a5,t0
6d58: 98b6 add a7,a7,a3
6d5a: 00c8ae03 lw t3,12(a7) # 800c <ip_reass+0x376>
6d5e: 07061a63 bne a2,a6,6dd2 <find_entry+0xe2>
6d62: 060e1863 bnez t3,6dd2 <find_entry+0xe2>
6d66: 01879813 slli a6,a5,0x18
6d6a: 41885813 srai a6,a6,0x18
6d6e: 0785 addi a5,a5,1
6d70: 07c2 slli a5,a5,0x10
6d72: 83c1 srli a5,a5,0x10
6d74: fec7e0e3 bltu a5,a2,6d54 <find_entry+0x64>
6d78: 01061763 bne a2,a6,6d86 <find_entry+0x96>
6d7c: 0015f893 andi a7,a1,1
6d80: 57fd li a5,-1
6d82: fc0886e3 beqz a7,6d4e <find_entry+0x5e>
6d86: 8989 andi a1,a1,2
6d88: 57fd li a5,-1
6d8a: f1f1 bnez a1,6d4e <find_entry+0x5e>
6d8c: 01081793 slli a5,a6,0x10
6d90: 00c86b63 bltu a6,a2,6da6 <find_entry+0xb6>
6d94: 01031793 slli a5,t1,0x10
6d98: 00c36763 bltu t1,a2,6da6 <find_entry+0xb6>
6d9c: 57fd li a5,-1
6d9e: fac778e3 bgeu a4,a2,6d4e <find_entry+0x5e>
6da2: 01071793 slli a5,a4,0x10
6da6: 83c1 srli a5,a5,0x10
6da8: 4761 li a4,24
6daa: 02e78733 mul a4,a5,a4
6dae: 96ba add a3,a3,a4
6db0: 0006a623 sw zero,12(a3)
6db4: cd01 beqz a0,6dcc <find_entry+0xdc>
6db6: 3110 lbu a2,1(a0)
6db8: 2118 lbu a4,0(a0)
6dba: 0622 slli a2,a2,0x8
6dbc: 8e59 or a2,a2,a4
6dbe: 2138 lbu a4,2(a0)
6dc0: 0742 slli a4,a4,0x10
6dc2: 8e59 or a2,a2,a4
6dc4: 3138 lbu a4,3(a0)
6dc6: 0762 slli a4,a4,0x18
6dc8: 8f51 or a4,a4,a2
6dca: c298 sw a4,0(a3)
6dcc: 00069823 sh zero,16(a3)
6dd0: a80d j 6e02 <find_entry+0x112>
6dd2: 047e1463 bne t3,t2,6e1a <find_entry+0x12a>
6dd6: c90d beqz a0,6e08 <find_entry+0x118>
6dd8: 00154e83 lbu t4,1(a0)
6ddc: 00054e03 lbu t3,0(a0)
6de0: 0ea2 slli t4,t4,0x8
6de2: 01ceeeb3 or t4,t4,t3
6de6: 00254e03 lbu t3,2(a0)
6dea: 0e42 slli t3,t3,0x10
6dec: 01de6eb3 or t4,t3,t4
6df0: 00354e03 lbu t3,3(a0)
6df4: 0e62 slli t3,t3,0x18
6df6: 01de6e33 or t3,t3,t4
6dfa: 0008ae83 lw t4,0(a7)
6dfe: 01de1563 bne t3,t4,6e08 <find_entry+0x118>
6e02: 96f18223 sb a5,-1692(gp) # 200001a4 <etharp_cached_entry>
6e06: b791 j 6d4a <find_entry+0x5a>
6e08: 0108d883 lhu a7,16(a7)
6e0c: f7e8e1e3 bltu a7,t5,6d6e <find_entry+0x7e>
6e10: 01879713 slli a4,a5,0x18
6e14: 8761 srai a4,a4,0x18
6e16: 8f46 mv t5,a7
6e18: bf99 j 6d6e <find_entry+0x7e>
6e1a: f48e1ae3 bne t3,s0,6d6e <find_entry+0x7e>
6e1e: c515 beqz a0,6e4a <find_entry+0x15a>
6e20: 00154e83 lbu t4,1(a0)
6e24: 00054e03 lbu t3,0(a0)
6e28: 0ea2 slli t4,t4,0x8
6e2a: 01ceeeb3 or t4,t4,t3
6e2e: 00254e03 lbu t3,2(a0)
6e32: 0e42 slli t3,t3,0x10
6e34: 01de6eb3 or t4,t3,t4
6e38: 00354e03 lbu t3,3(a0)
6e3c: 0e62 slli t3,t3,0x18
6e3e: 01de6e33 or t3,t3,t4
6e42: 0008ae83 lw t4,0(a7)
6e46: fbde0ee3 beq t3,t4,6e02 <find_entry+0x112>
6e4a: 0108d883 lhu a7,16(a7)
6e4e: f3f8e0e3 bltu a7,t6,6d6e <find_entry+0x7e>
6e52: 01879313 slli t1,a5,0x18
6e56: 41835313 srai t1,t1,0x18
6e5a: 8fc6 mv t6,a7
6e5c: bf09 j 6d6e <find_entry+0x7e>
6e5e: 883a mv a6,a4
6e60: 833a mv t1,a4
6e62: 4f81 li t6,0
6e64: 4f01 li t5,0
6e66: 4781 li a5,0
6e68: 42e1 li t0,24
6e6a: 4385 li t2,1
6e6c: 4409 li s0,2
6e6e: b719 j 6d74 <find_entry+0x84>
00006e70 <update_arp_entry>:
update_arp_entry():
6e70: e8cf92ef jal t0,4fc <__riscv_save_4>
6e74: 3198 lbu a4,1(a1)
6e76: 219c lbu a5,0(a1)
6e78: 8a36 mv s4,a3
6e7a: 0722 slli a4,a4,0x8
6e7c: 8f5d or a4,a4,a5
6e7e: 21bc lbu a5,2(a1)
6e80: 4154 lw a3,4(a0)
6e82: 07c2 slli a5,a5,0x10
6e84: 8f5d or a4,a4,a5
6e86: 31bc lbu a5,3(a1)
6e88: 07e2 slli a5,a5,0x18
6e8a: 8fd9 or a5,a5,a4
6e8c: 00f69b63 bne a3,a5,6ea2 <update_arp_entry+0x32>
6e90: e689 bnez a3,6e9a <update_arp_entry+0x2a>
6e92: 57d9 li a5,-10
6e94: 853e mv a0,a5
6e96: e9af906f j 530 <__riscv_restore_4>
6e9a: 4505 li a0,1
6e9c: ec5fe0ef jal ra,5d60 <IPConflictHandle>
6ea0: bfcd j 6e92 <update_arp_entry+0x22>
6ea2: dbe5 beqz a5,6e92 <update_arp_entry+0x22>
6ea4: 842e mv s0,a1
6ea6: 892a mv s2,a0
6ea8: 85aa mv a1,a0
6eaa: 8522 mv a0,s0
6eac: 89b2 mv s3,a2
6eae: 4b9000ef jal ra,7b66 <ip_addr_isbroadcast>
6eb2: f165 bnez a0,6e92 <update_arp_entry+0x22>
6eb4: 301c lbu a5,1(s0)
6eb6: 2004 lbu s1,0(s0)
6eb8: f0000537 lui a0,0xf0000
6ebc: 07a2 slli a5,a5,0x8
6ebe: 8fc5 or a5,a5,s1
6ec0: 2024 lbu s1,2(s0)
6ec2: 04c2 slli s1,s1,0x10
6ec4: 8fc5 or a5,a5,s1
6ec6: 3024 lbu s1,3(s0)
6ec8: 04e2 slli s1,s1,0x18
6eca: 8cdd or s1,s1,a5
6ecc: 019000ef jal ra,76e4 <ntohl>
6ed0: 8ce9 and s1,s1,a0
6ed2: e0000537 lui a0,0xe0000
6ed6: 00f000ef jal ra,76e4 <ntohl>
6eda: faa48ce3 beq s1,a0,6e92 <update_arp_entry+0x22>
6ede: 85d2 mv a1,s4
6ee0: 8522 mv a0,s0
6ee2: e0fff0ef jal ra,6cf0 <find_entry>
6ee6: 87aa mv a5,a0
6ee8: fa0546e3 bltz a0,6e94 <update_arp_entry+0x24>
6eec: 47e1 li a5,24
6eee: 02f507b3 mul a5,a0,a5
6ef2: 8241a503 lw a0,-2012(gp) # 20000064 <arp_table>
6ef6: 953e add a0,a0,a5
6ef8: 4789 li a5,2
6efa: c55c sw a5,12(a0)
6efc: 01252a23 sw s2,20(a0) # e0000014 <__freertos_irq_stack_top+0xbffd0014>
6f00: 00598793 addi a5,s3,5
6f04: 00950713 addi a4,a0,9
6f08: 2394 lbu a3,0(a5)
6f0a: 177d addi a4,a4,-1
6f0c: b314 sb a3,1(a4)
6f0e: fff78693 addi a3,a5,-1
6f12: 00f99663 bne s3,a5,6f1e <update_arp_entry+0xae>
6f16: 00051823 sh zero,16(a0)
6f1a: 4781 li a5,0
6f1c: bfa5 j 6e94 <update_arp_entry+0x24>
6f1e: 87b6 mv a5,a3
6f20: b7e5 j 6f08 <update_arp_entry+0x98>
00006f22 <etharp_ip_input>:
etharp_ip_input():
6f22: cd21 beqz a0,6f7a <etharp_ip_input+0x58>
6f24: df2f92ef jal t0,516 <__riscv_save_0>
6f28: 41c4 lw s1,4(a1)
6f2a: 842a mv s0,a0
6f2c: 34dc lbu a5,13(s1)
6f2e: 24c8 lbu a0,12(s1)
6f30: 07a2 slli a5,a5,0x8
6f32: 8d5d or a0,a0,a5
6f34: 770000ef jal ra,76a4 <htons>
6f38: 67a1 lui a5,0x8
6f3a: 10078793 addi a5,a5,256 # 8100 <ip_frag+0x8e>
6f3e: 01248593 addi a1,s1,18
6f42: 00f50463 beq a0,a5,6f4a <etharp_ip_input+0x28>
6f46: 00e48593 addi a1,s1,14
6f4a: 35d8 lbu a4,13(a1)
6f4c: 25dc lbu a5,12(a1)
6f4e: 0722 slli a4,a4,0x8
6f50: 8f5d or a4,a4,a5
6f52: 25fc lbu a5,14(a1)
6f54: 07c2 slli a5,a5,0x10
6f56: 8f5d or a4,a4,a5
6f58: 35fc lbu a5,15(a1)
6f5a: 07e2 slli a5,a5,0x18
6f5c: 8fd9 or a5,a5,a4
6f5e: 4058 lw a4,4(s0)
6f60: 8fb9 xor a5,a5,a4
6f62: 4418 lw a4,8(s0)
6f64: 8ff9 and a5,a5,a4
6f66: eb81 bnez a5,6f76 <etharp_ip_input+0x54>
6f68: 4681 li a3,0
6f6a: 00648613 addi a2,s1,6
6f6e: 05b1 addi a1,a1,12
6f70: 8522 mv a0,s0
6f72: effff0ef jal ra,6e70 <update_arp_entry>
6f76: dc4f906f j 53a <__riscv_restore_0>
6f7a: 8082 ret
00006f7c <etharp_arp_input>:
etharp_arp_input():
6f7c: 16050763 beqz a0,70ea <etharp_arp_input+0x16e>
6f80: d7cf92ef jal t0,4fc <__riscv_save_4>
6f84: 263a lhu a4,10(a2)
6f86: 02900793 li a5,41
6f8a: 1141 addi sp,sp,-16
6f8c: 89b2 mv s3,a2
6f8e: 8a2e mv s4,a1
6f90: 84aa mv s1,a0
6f92: 00e7e863 bltu a5,a4,6fa2 <etharp_arp_input+0x26>
6f96: 854e mv a0,s3
6f98: 2fd010ef jal ra,8a94 <pbuf_free>
6f9c: 0141 addi sp,sp,16
6f9e: d92f906f j 530 <__riscv_restore_4>
6fa2: 00462903 lw s2,4(a2)
6fa6: 00d94783 lbu a5,13(s2)
6faa: 00c94503 lbu a0,12(s2)
6fae: 01290413 addi s0,s2,18
6fb2: 07a2 slli a5,a5,0x8
6fb4: 8d5d or a0,a0,a5
6fb6: 6ee000ef jal ra,76a4 <htons>
6fba: 67a1 lui a5,0x8
6fbc: 10078793 addi a5,a5,256 # 8100 <ip_frag+0x8e>
6fc0: 00f50463 beq a0,a5,6fc8 <etharp_arp_input+0x4c>
6fc4: 00e90413 addi s0,s2,14
6fc8: 00144a83 lbu s5,1(s0)
6fcc: 201c lbu a5,0(s0)
6fce: 4505 li a0,1
6fd0: 0aa2 slli s5,s5,0x8
6fd2: 00faeab3 or s5,s5,a5
6fd6: 6ce000ef jal ra,76a4 <htons>
6fda: faaa9ee3 bne s5,a0,6f96 <etharp_arp_input+0x1a>
6fde: 00544a83 lbu s5,5(s0)
6fe2: 205c lbu a5,4(s0)
6fe4: 60400513 li a0,1540
6fe8: 0aa2 slli s5,s5,0x8
6fea: 00faeab3 or s5,s5,a5
6fee: 6b6000ef jal ra,76a4 <htons>
6ff2: faaa92e3 bne s5,a0,6f96 <etharp_arp_input+0x1a>
6ff6: 00344a83 lbu s5,3(s0)
6ffa: 203c lbu a5,2(s0)
6ffc: 6505 lui a0,0x1
6ffe: 0aa2 slli s5,s5,0x8
7000: 80050513 addi a0,a0,-2048 # 800 <__stack_size>
7004: 00faeab3 or s5,s5,a5
7008: 69c000ef jal ra,76a4 <htons>
700c: f8aa95e3 bne s5,a0,6f96 <etharp_arp_input+0x1a>
7010: 00e40a93 addi s5,s0,14
7014: 4611 li a2,4
7016: 85d6 mv a1,s5
7018: 0068 addi a0,sp,12
701a: 6b7050ef jal ra,ced0 <memcpy>
701e: 40d4 lw a3,4(s1)
7020: 00840613 addi a2,s0,8
7024: c2ad beqz a3,7086 <etharp_arp_input+0x10a>
7026: 3c18 lbu a4,25(s0)
7028: 2c1c lbu a5,24(s0)
702a: 0722 slli a4,a4,0x8
702c: 8f5d or a4,a4,a5
702e: 2c3c lbu a5,26(s0)
7030: 07c2 slli a5,a5,0x10
7032: 8f5d or a4,a4,a5
7034: 3c3c lbu a5,27(s0)
7036: 07e2 slli a5,a5,0x18
7038: 8fd9 or a5,a5,a4
703a: 04f69663 bne a3,a5,7086 <etharp_arp_input+0x10a>
703e: 4685 li a3,1
7040: 006c addi a1,sp,12
7042: 8526 mv a0,s1
7044: e2dff0ef jal ra,6e70 <update_arp_entry>
7048: 4b05 li s6,1
704a: 307c lbu a5,7(s0)
704c: 2068 lbu a0,6(s0)
704e: 07a2 slli a5,a5,0x8
7050: 8d5d or a0,a0,a5
7052: 2d89 jal 76a4 <htons>
7054: 4785 li a5,1
7056: 02f50f63 beq a0,a5,7094 <etharp_arp_input+0x118>
705a: 4789 li a5,2
705c: f2f51de3 bne a0,a5,6f96 <etharp_arp_input+0x1a>
7060: 006c addi a1,sp,12
7062: 8526 mv a0,s1
7064: 3f8010ef jal ra,845c <dhcp_arp_reply>
7068: 2002e7b7 lui a5,0x2002e
706c: b147a703 lw a4,-1260(a5) # 2002db14 <DHCPCtrl>
7070: f20703e3 beqz a4,6f96 <etharp_arp_input+0x1a>
7074: b1478793 addi a5,a5,-1260
7078: 47dc lw a5,12(a5)
707a: f0078ee3 beqz a5,6f96 <etharp_arp_input+0x1a>
707e: 006c addi a1,sp,12
7080: 8526 mv a0,s1
7082: 9782 jalr a5
7084: bf09 j 6f96 <etharp_arp_input+0x1a>
7086: 4681 li a3,0
7088: 006c addi a1,sp,12
708a: 8526 mv a0,s1
708c: de5ff0ef jal ra,6e70 <update_arp_entry>
7090: 4b01 li s6,0
7092: bf65 j 704a <etharp_arp_input+0xce>
7094: f00b01e3 beqz s6,6f96 <etharp_arp_input+0x1a>
7098: 4509 li a0,2
709a: 2529 jal 76a4 <htons>
709c: a068 sb a0,6(s0)
709e: 8121 srli a0,a0,0x8
70a0: b068 sb a0,7(s0)
70a2: 4611 li a2,4
70a4: 85d6 mv a1,s5
70a6: 01840513 addi a0,s0,24
70aa: 627050ef jal ra,ced0 <memcpy>
70ae: 4611 li a2,4
70b0: 00448593 addi a1,s1,4
70b4: 8556 mv a0,s5
70b6: 61b050ef jal ra,ced0 <memcpy>
70ba: 0435 addi s0,s0,13
70bc: 0915 addi s2,s2,5
70be: 4795 li a5,5
70c0: 56fd li a3,-1
70c2: 2018 lbu a4,0(s0)
70c4: 197d addi s2,s2,-1
70c6: 147d addi s0,s0,-1
70c8: b438 sb a4,11(s0)
70ca: 00e900a3 sb a4,1(s2)
70ce: 00fa0733 add a4,s4,a5
70d2: 2318 lbu a4,0(a4)
70d4: 17fd addi a5,a5,-1
70d6: b018 sb a4,1(s0)
70d8: 00e903a3 sb a4,7(s2)
70dc: fed793e3 bne a5,a3,70c2 <etharp_arp_input+0x146>
70e0: 4c9c lw a5,24(s1)
70e2: 85ce mv a1,s3
70e4: 8526 mv a0,s1
70e6: 9782 jalr a5
70e8: b57d j 6f96 <etharp_arp_input+0x1a>
70ea: 8082 ret
000070ec <etharp_request>:
etharp_request():
70ec: c10f92ef jal t0,4fc <__riscv_save_4>
70f0: 892a mv s2,a0
70f2: 89ae mv s3,a1
70f4: 4601 li a2,0
70f6: 02a00593 li a1,42
70fa: 450d li a0,3
70fc: 1e7010ef jal ra,8ae2 <pbuf_alloc>
7100: 547d li s0,-1
7102: c94d beqz a0,71b4 <etharp_request+0xc8>
7104: 4140 lw s0,4(a0)
7106: 84aa mv s1,a0
7108: 4505 li a0,1
710a: 2b69 jal 76a4 <htons>
710c: a848 sb a0,20(s0)
710e: 8121 srli a0,a0,0x8
7110: b848 sb a0,21(s0)
7112: 02e90693 addi a3,s2,46
7116: 00540793 addi a5,s0,5
711a: 4715 li a4,5
711c: 84418593 addi a1,gp,-1980 # 20000084 <ethzero>
7120: 83c18613 addi a2,gp,-1988 # 2000007c <ethbroadcast>
7124: 557d li a0,-1
7126: 0006c803 lbu a6,0(a3)
712a: 17fd addi a5,a5,-1
712c: 16fd addi a3,a3,-1
712e: 01078ba3 sb a6,23(a5)
7132: 00e58833 add a6,a1,a4
7136: 00084803 lbu a6,0(a6)
713a: 030780a3 sb a6,33(a5)
713e: 00e60833 add a6,a2,a4
7142: 00084803 lbu a6,0(a6)
7146: 177d addi a4,a4,-1
7148: 010780a3 sb a6,1(a5)
714c: 0016c803 lbu a6,1(a3)
7150: 010783a3 sb a6,7(a5)
7154: fca719e3 bne a4,a0,7126 <etharp_request+0x3a>
7158: 4611 li a2,4
715a: 00490593 addi a1,s2,4
715e: 01c40513 addi a0,s0,28
7162: 56f050ef jal ra,ced0 <memcpy>
7166: 85ce mv a1,s3
7168: 4611 li a2,4
716a: 02640513 addi a0,s0,38
716e: 563050ef jal ra,ced0 <memcpy>
7172: 4505 li a0,1
7174: 2b05 jal 76a4 <htons>
7176: a468 sb a0,14(s0)
7178: 6985 lui s3,0x1
717a: 8121 srli a0,a0,0x8
717c: b468 sb a0,15(s0)
717e: 80098513 addi a0,s3,-2048 # 800 <__stack_size>
7182: 230d jal 76a4 <htons>
7184: a808 sb a0,16(s0)
7186: 8121 srli a0,a0,0x8
7188: b808 sb a0,17(s0)
718a: 60400513 li a0,1540
718e: 2b19 jal 76a4 <htons>
7190: a828 sb a0,18(s0)
7192: 8121 srli a0,a0,0x8
7194: b828 sb a0,19(s0)
7196: 80698513 addi a0,s3,-2042
719a: 2329 jal 76a4 <htons>
719c: 01892783 lw a5,24(s2)
71a0: a448 sb a0,12(s0)
71a2: 8121 srli a0,a0,0x8
71a4: b448 sb a0,13(s0)
71a6: 85a6 mv a1,s1
71a8: 854a mv a0,s2
71aa: 9782 jalr a5
71ac: 842a mv s0,a0
71ae: 8526 mv a0,s1
71b0: 0e5010ef jal ra,8a94 <pbuf_free>
71b4: 8522 mv a0,s0
71b6: b7af906f j 530 <__riscv_restore_4>
000071ba <etharp_tmr>:
etharp_tmr():
71ba: b34f92ef jal t0,4ee <__riscv_save_10>
71be: 2002e4b7 lui s1,0x2002e
71c2: 4401 li s0,0
71c4: bd048493 addi s1,s1,-1072 # 2002dbd0 <WCHCfg>
71c8: 4ae1 li s5,24
71ca: 4b89 li s7,2
71cc: 4c05 li s8,1
71ce: 0ff00c93 li s9,255
71d2: 44dc lw a5,12(s1)
71d4: 00f46463 bltu s0,a5,71dc <etharp_tmr+0x22>
71d8: b4ef906f j 526 <__riscv_restore_10>
71dc: 03540933 mul s2,s0,s5
71e0: 82418993 addi s3,gp,-2012 # 20000064 <arp_table>
71e4: 0009a583 lw a1,0(s3)
71e8: 95ca add a1,a1,s2
71ea: 299e lhu a5,16(a1)
71ec: 45d8 lw a4,12(a1)
71ee: 0785 addi a5,a5,1
71f0: 07c2 slli a5,a5,0x10
71f2: 83c1 srli a5,a5,0x10
71f4: a99e sh a5,16(a1)
71f6: 01771a63 bne a4,s7,720a <etharp_tmr+0x50>
71fa: 9521d703 lhu a4,-1710(gp) # 20000192 <Arp_Entry_timeout>
71fe: 00e7fc63 bgeu a5,a4,7216 <etharp_tmr+0x5c>
7202: 0405 addi s0,s0,1
7204: 0ff47413 andi s0,s0,255
7208: b7e9 j 71d2 <etharp_tmr+0x18>
720a: ff871ce3 bne a4,s8,7202 <etharp_tmr+0x48>
720e: 9501c703 lbu a4,-1712(gp) # 20000190 <ARP_Retry_Cnt>
7212: 00f77563 bgeu a4,a5,721c <etharp_tmr+0x62>
7216: 0005a623 sw zero,12(a1)
721a: b7e5 j 7202 <etharp_tmr+0x48>
721c: 49c8 lw a0,20(a1)
721e: ecfff0ef jal ra,70ec <etharp_request>
7222: 9501c783 lbu a5,-1712(gp) # 20000190 <ARP_Retry_Cnt>
7226: fd979ee3 bne a5,s9,7202 <etharp_tmr+0x48>
722a: 0009a783 lw a5,0(s3)
722e: 97ca add a5,a5,s2
7230: 00079823 sh zero,16(a5)
7234: b7f9 j 7202 <etharp_tmr+0x48>
00007236 <etharp_query>:
etharp_query():
7236: ac6f92ef jal t0,4fc <__riscv_save_4>
723a: 842e mv s0,a1
723c: 1141 addi sp,sp,-16
723e: 892a mv s2,a0
7240: 85aa mv a1,a0
7242: 8522 mv a0,s0
7244: 89b2 mv s3,a2
7246: 121000ef jal ra,7b66 <ip_addr_isbroadcast>
724a: c509 beqz a0,7254 <etharp_query+0x1e>
724c: 5559 li a0,-10
724e: 0141 addi sp,sp,16
7250: ae0f906f j 530 <__riscv_restore_4>
7254: 301c lbu a5,1(s0)
7256: 2004 lbu s1,0(s0)
7258: f0000537 lui a0,0xf0000
725c: 07a2 slli a5,a5,0x8
725e: 8fc5 or a5,a5,s1
7260: 2024 lbu s1,2(s0)
7262: 04c2 slli s1,s1,0x10
7264: 8fc5 or a5,a5,s1
7266: 3024 lbu s1,3(s0)
7268: 04e2 slli s1,s1,0x18
726a: 8cdd or s1,s1,a5
726c: 29a5 jal 76e4 <ntohl>
726e: 8ce9 and s1,s1,a0
7270: e0000537 lui a0,0xe0000
7274: 2985 jal 76e4 <ntohl>
7276: fca48be3 beq s1,a0,724c <etharp_query+0x16>
727a: 3018 lbu a4,1(s0)
727c: 201c lbu a5,0(s0)
727e: 0722 slli a4,a4,0x8
7280: 8f5d or a4,a4,a5
7282: 203c lbu a5,2(s0)
7284: 07c2 slli a5,a5,0x10
7286: 8f5d or a4,a4,a5
7288: 303c lbu a5,3(s0)
728a: 07e2 slli a5,a5,0x18
728c: 8fd9 or a5,a5,a4
728e: dfdd beqz a5,724c <etharp_query+0x16>
7290: 4585 li a1,1
7292: 8522 mv a0,s0
7294: a5dff0ef jal ra,6cf0 <find_entry>
7298: fa054be3 bltz a0,724e <etharp_query+0x18>
729c: 47e1 li a5,24
729e: 02f504b3 mul s1,a0,a5
72a2: 8241a783 lw a5,-2012(gp) # 20000064 <arp_table>
72a6: 82418a13 addi s4,gp,-2012 # 20000064 <arp_table>
72aa: 97a6 add a5,a5,s1
72ac: 47d8 lw a4,12(a5)
72ae: c711 beqz a4,72ba <etharp_query+0x84>
72b0: 557d li a0,-1
72b2: 02099b63 bnez s3,72e8 <etharp_query+0xb2>
72b6: 4a81 li s5,0
72b8: a031 j 72c4 <etharp_query+0x8e>
72ba: 4705 li a4,1
72bc: c7d8 sw a4,12(a5)
72be: 0127aa23 sw s2,20(a5)
72c2: 4a85 li s5,1
72c4: a21ff0ef jal ra,6ce4 <LwipArpCheck>
72c8: 85a2 mv a1,s0
72ca: 854a mv a0,s2
72cc: e21ff0ef jal ra,70ec <etharp_request>
72d0: ed01 bnez a0,72e8 <etharp_query+0xb2>
72d2: 000a2783 lw a5,0(s4)
72d6: 4705 li a4,1
72d8: 97a6 add a5,a5,s1
72da: 47d4 lw a3,12(a5)
72dc: 00e69663 bne a3,a4,72e8 <etharp_query+0xb2>
72e0: 000a9463 bnez s5,72e8 <etharp_query+0xb2>
72e4: 00079823 sh zero,16(a5)
72e8: 000a2783 lw a5,0(s4)
72ec: 97a6 add a5,a5,s1
72ee: 47d8 lw a4,12(a5)
72f0: 4785 li a5,1
72f2: 00f71663 bne a4,a5,72fe <etharp_query+0xc8>
72f6: c62a sw a0,12(sp)
72f8: 9edff0ef jal ra,6ce4 <LwipArpCheck>
72fc: 4532 lw a0,12(sp)
72fe: f40988e3 beqz s3,724e <etharp_query+0x18>
7302: 000a2783 lw a5,0(s4)
7306: 4709 li a4,2
7308: 97a6 add a5,a5,s1
730a: 47d4 lw a3,12(a5)
730c: f4e691e3 bne a3,a4,724e <etharp_query+0x18>
7310: 0049a403 lw s0,4(s3)
7314: 00978713 addi a4,a5,9
7318: 02e90613 addi a2,s2,46
731c: 00540693 addi a3,s0,5
7320: 078d addi a5,a5,3
7322: 230c lbu a1,0(a4)
7324: 177d addi a4,a4,-1
7326: 16fd addi a3,a3,-1
7328: b28c sb a1,1(a3)
732a: 220c lbu a1,0(a2)
732c: 167d addi a2,a2,-1
732e: b2ec sb a1,7(a3)
7330: fef719e3 bne a4,a5,7322 <etharp_query+0xec>
7334: 6505 lui a0,0x1
7336: 80050513 addi a0,a0,-2048 # 800 <__stack_size>
733a: 26ad jal 76a4 <htons>
733c: 01892783 lw a5,24(s2)
7340: a448 sb a0,12(s0)
7342: 8121 srli a0,a0,0x8
7344: b448 sb a0,13(s0)
7346: 85ce mv a1,s3
7348: 854a mv a0,s2
734a: 9782 jalr a5
734c: b709 j 724e <etharp_query+0x18>
0000734e <etharp_output>:
etharp_output():
734e: 9aef92ef jal t0,4fc <__riscv_save_4>
7352: 84ae mv s1,a1
7354: 1141 addi sp,sp,-16
7356: 892a mv s2,a0
7358: 45b9 li a1,14
735a: 8526 mv a0,s1
735c: 8432 mv s0,a2
735e: 6c8010ef jal ra,8a26 <pbuf_header>
7362: 10051e63 bnez a0,747e <etharp_output+0x130>
7366: 85ca mv a1,s2
7368: 8522 mv a0,s0
736a: 7fc000ef jal ra,7b66 <ip_addr_isbroadcast>
736e: 10051563 bnez a0,7478 <etharp_output+0x12a>
7372: 301c lbu a5,1(s0)
7374: 00044983 lbu s3,0(s0)
7378: f0000537 lui a0,0xf0000
737c: 07a2 slli a5,a5,0x8
737e: 0137e7b3 or a5,a5,s3
7382: 00244983 lbu s3,2(s0)
7386: 09c2 slli s3,s3,0x10
7388: 00f9e7b3 or a5,s3,a5
738c: 00344983 lbu s3,3(s0)
7390: 09e2 slli s3,s3,0x18
7392: 00f9e9b3 or s3,s3,a5
7396: 26b9 jal 76e4 <ntohl>
7398: 00a9f9b3 and s3,s3,a0
739c: e0000537 lui a0,0xe0000
73a0: 2691 jal 76e4 <ntohl>
73a2: 2010 lbu a2,0(s0)
73a4: 3014 lbu a3,1(s0)
73a6: 2038 lbu a4,2(s0)
73a8: 303c lbu a5,3(s0)
73aa: 08a99c63 bne s3,a0,7442 <etharp_output+0xf4>
73ae: 00869513 slli a0,a3,0x8
73b2: 8d51 or a0,a0,a2
73b4: 0742 slli a4,a4,0x10
73b6: 8d59 or a0,a0,a4
73b8: 07e2 slli a5,a5,0x18
73ba: 4585 li a1,1
73bc: 846c sh a1,8(sp)
73be: 8d5d or a0,a0,a5
73c0: 05e00593 li a1,94
73c4: 854c sb a1,10(sp)
73c6: 2e39 jal 76e4 <ntohl>
73c8: 8141 srli a0,a0,0x10
73ca: 07f57513 andi a0,a0,127
73ce: 85c8 sb a0,11(sp)
73d0: 3008 lbu a0,1(s0)
73d2: 201c lbu a5,0(s0)
73d4: 0522 slli a0,a0,0x8
73d6: 8d5d or a0,a0,a5
73d8: 203c lbu a5,2(s0)
73da: 07c2 slli a5,a5,0x10
73dc: 8fc9 or a5,a5,a0
73de: 3028 lbu a0,3(s0)
73e0: 0562 slli a0,a0,0x18
73e2: 8d5d or a0,a0,a5
73e4: 2601 jal 76e4 <ntohl>
73e6: 8121 srli a0,a0,0x8
73e8: 8648 sb a0,12(sp)
73ea: 3008 lbu a0,1(s0)
73ec: 201c lbu a5,0(s0)
73ee: 0522 slli a0,a0,0x8
73f0: 8d5d or a0,a0,a5
73f2: 203c lbu a5,2(s0)
73f4: 07c2 slli a5,a5,0x10
73f6: 8fc9 or a5,a5,a0
73f8: 3028 lbu a0,3(s0)
73fa: 0562 slli a0,a0,0x18
73fc: 8d5d or a0,a0,a5
73fe: 24dd jal 76e4 <ntohl>
7400: 86c8 sb a0,13(sp)
7402: 0034 addi a3,sp,8
7404: 40c0 lw s0,4(s1)
7406: 4795 li a5,5
7408: 567d li a2,-1
740a: 00540713 addi a4,s0,5
740e: 00f685b3 add a1,a3,a5
7412: 218c lbu a1,0(a1)
7414: 177d addi a4,a4,-1
7416: b30c sb a1,1(a4)
7418: 00f905b3 add a1,s2,a5
741c: 0295c583 lbu a1,41(a1)
7420: 17fd addi a5,a5,-1
7422: b36c sb a1,7(a4)
7424: fec795e3 bne a5,a2,740e <etharp_output+0xc0>
7428: 6505 lui a0,0x1
742a: 80050513 addi a0,a0,-2048 # 800 <__stack_size>
742e: 2c9d jal 76a4 <htons>
7430: 01892783 lw a5,24(s2)
7434: a448 sb a0,12(s0)
7436: 8121 srli a0,a0,0x8
7438: b448 sb a0,13(s0)
743a: 85a6 mv a1,s1
743c: 854a mv a0,s2
743e: 9782 jalr a5
7440: a80d j 7472 <etharp_output+0x124>
7442: 06a2 slli a3,a3,0x8
7444: 8ed1 or a3,a3,a2
7446: 0742 slli a4,a4,0x10
7448: 8f55 or a4,a4,a3
744a: 07e2 slli a5,a5,0x18
744c: 8fd9 or a5,a5,a4
744e: 00492703 lw a4,4(s2)
7452: 8fb9 xor a5,a5,a4
7454: 00892703 lw a4,8(s2)
7458: 8ff9 and a5,a5,a4
745a: c799 beqz a5,7468 <etharp_output+0x11a>
745c: 00c92783 lw a5,12(s2)
7460: 5571 li a0,-4
7462: cb81 beqz a5,7472 <etharp_output+0x124>
7464: 00c90413 addi s0,s2,12
7468: 8626 mv a2,s1
746a: 85a2 mv a1,s0
746c: 854a mv a0,s2
746e: dc9ff0ef jal ra,7236 <etharp_query>
7472: 0141 addi sp,sp,16
7474: 8bcf906f j 530 <__riscv_restore_4>
7478: 83c18693 addi a3,gp,-1988 # 2000007c <ethbroadcast>
747c: b761 j 7404 <etharp_output+0xb6>
747e: 5579 li a0,-2
7480: bfcd j 7472 <etharp_output+0x124>
00007482 <ethernet_input>:
ethernet_input():
7482: 894f92ef jal t0,516 <__riscv_save_0>
7486: 4144 lw s1,4(a0)
7488: 842a mv s0,a0
748a: 892e mv s2,a1
748c: 34dc lbu a5,13(s1)
748e: 24c8 lbu a0,12(s1)
7490: 07a2 slli a5,a5,0x8
7492: 8d5d or a0,a0,a5
7494: 2c01 jal 76a4 <htons>
7496: 67a1 lui a5,0x8
7498: 10078793 addi a5,a5,256 # 8100 <ip_frag+0x8e>
749c: 00f51763 bne a0,a5,74aa <ethernet_input+0x28>
74a0: 389c lbu a5,17(s1)
74a2: 2888 lbu a0,16(s1)
74a4: 07a2 slli a5,a5,0x8
74a6: 8d5d or a0,a0,a5
74a8: 2af5 jal 76a4 <htons>
74aa: 80050793 addi a5,a0,-2048
74ae: cb91 beqz a5,74c2 <ethernet_input+0x40>
74b0: 6785 lui a5,0x1
74b2: 80678793 addi a5,a5,-2042 # 806 <__stack_size+0x6>
74b6: 04f50263 beq a0,a5,74fa <ethernet_input+0x78>
74ba: 8522 mv a0,s0
74bc: 5d8010ef jal ra,8a94 <pbuf_free>
74c0: a815 j 74f4 <ethernet_input+0x72>
74c2: 85a2 mv a1,s0
74c4: 854a mv a0,s2
74c6: a5dff0ef jal ra,6f22 <etharp_ip_input>
74ca: 34dc lbu a5,13(s1)
74cc: 24c8 lbu a0,12(s1)
74ce: 07a2 slli a5,a5,0x8
74d0: 8d5d or a0,a0,a5
74d2: 2ac9 jal 76a4 <htons>
74d4: 67a1 lui a5,0x8
74d6: 10078793 addi a5,a5,256 # 8100 <ip_frag+0x8e>
74da: 45b9 li a1,14
74dc: 00f51363 bne a0,a5,74e2 <ethernet_input+0x60>
74e0: 45c9 li a1,18
74e2: 40b005b3 neg a1,a1
74e6: 8522 mv a0,s0
74e8: 53e010ef jal ra,8a26 <pbuf_header>
74ec: f579 bnez a0,74ba <ethernet_input+0x38>
74ee: 85ca mv a1,s2
74f0: 8522 mv a0,s0
74f2: 24a9 jal 773c <ip_input>
74f4: 4501 li a0,0
74f6: 844f906f j 53a <__riscv_restore_0>
74fa: 8622 mv a2,s0
74fc: 02990593 addi a1,s2,41
7500: 854a mv a0,s2
7502: a7bff0ef jal ra,6f7c <etharp_arp_input>
7506: b7fd j 74f4 <ethernet_input+0x72>
00007508 <ethernetif_init>:
ethernetif_init():
7508: 80ef92ef jal t0,516 <__riscv_save_0>
750c: 2002e7b7 lui a5,0x2002e
7510: b2c78793 addi a5,a5,-1236 # 2002db2c <dhcp_host_name>
7514: d15c sw a5,36(a0)
7516: 06500793 li a5,101
751a: 02f509a3 sb a5,51(a0)
751e: 06e00793 li a5,110
7522: 02f50a23 sb a5,52(a0)
7526: 000077b7 lui a5,0x7
752a: 34e78793 addi a5,a5,846 # 734e <etharp_output>
752e: c95c sw a5,20(a0)
7530: 000077b7 lui a5,0x7
7534: 56c78793 addi a5,a5,1388 # 756c <low_level_output>
7538: cd1c sw a5,24(a0)
753a: 2002e5b7 lui a1,0x2002e
753e: 4799 li a5,6
7540: 842a mv s0,a0
7542: 02f50423 sb a5,40(a0)
7546: 00052e23 sw zero,28(a0)
754a: 4619 li a2,6
754c: c2558593 addi a1,a1,-987 # 2002dc25 <WCHNetIf+0x29>
7550: 02950513 addi a0,a0,41
7554: 17d050ef jal ra,ced0 <memcpy>
7558: 5dc00793 li a5,1500
755c: b81e sh a5,48(s0)
755e: 03300793 li a5,51
7562: 02f40923 sb a5,50(s0)
7566: 4501 li a0,0
7568: fd3f806f j 53a <__riscv_restore_0>
0000756c <low_level_output>:
low_level_output():
756c: fabf82ef jal t0,516 <__riscv_save_0>
7570: 64b1 lui s1,0xc
7572: 842e mv s0,a1
7574: 35148493 addi s1,s1,849 # c351 <lwip_standard_chksum+0x25>
7578: d6cff0ef jal ra,6ae4 <WCHNET_GetPHYStatus>
757c: 8911 andi a0,a0,4
757e: cd15 beqz a0,75ba <low_level_output+0x4e>
7580: 14fd addi s1,s1,-1
7582: cc85 beqz s1,75ba <low_level_output+0x4e>
7584: eccfe0ef jal ra,5c50 <getTxBuffAddr>
7588: 892a mv s2,a0
758a: d57d beqz a0,7578 <low_level_output+0xc>
758c: 87aa mv a5,a0
758e: 4481 li s1,0
7590: e801 bnez s0,75a0 <low_level_output+0x34>
7592: 85ca mv a1,s2
7594: 8526 mv a0,s1
7596: e76fe0ef jal ra,5c0c <WCHNET_Tx>
759a: 4501 li a0,0
759c: f9ff806f j 53a <__riscv_restore_0>
75a0: 2432 lhu a2,10(s0)
75a2: 404c lw a1,4(s0)
75a4: 853e mv a0,a5
75a6: 12b050ef jal ra,ced0 <memcpy>
75aa: 243a lhu a4,10(s0)
75ac: 4000 lw s0,0(s0)
75ae: 94ba add s1,s1,a4
75b0: 04c2 slli s1,s1,0x10
75b2: 00e507b3 add a5,a0,a4
75b6: 80c1 srli s1,s1,0x10
75b8: bfe1 j 7590 <low_level_output+0x24>
75ba: 5551 li a0,-12
75bc: b7c5 j 759c <low_level_output+0x30>
000075be <ethernetif_input>:
ethernetif_input():
75be: f3ff82ef jal t0,4fc <__riscv_save_4>
75c2: 2002e7b7 lui a5,0x2002e
75c6: bf47a783 lw a5,-1036(a5) # 2002dbf4 <WCHCfg+0x24>
75ca: 89aa mv s3,a0
75cc: 96818513 addi a0,gp,-1688 # 200001a8 <frame>
75d0: 96818493 addi s1,gp,-1688 # 200001a8 <frame>
75d4: 9782 jalr a5
75d6: 408c lw a1,0(s1)
75d8: c9a9 beqz a1,762a <ethernetif_input+0x6c>
75da: 95c1c783 lbu a5,-1700(gp) # 2000019c <phydata>
75de: 96818413 addi s0,gp,-1688 # 200001a8 <frame>
75e2: 0ff7f793 andi a5,a5,255
75e6: e781 bnez a5,75ee <ethernetif_input+0x30>
75e8: 4785 li a5,1
75ea: 94f18e23 sb a5,-1700(gp) # 2000019c <phydata>
75ee: 05c2 slli a1,a1,0x10
75f0: 460d li a2,3
75f2: 81c1 srli a1,a1,0x10
75f4: 450d li a0,3
75f6: 4044 lw s1,4(s0)
75f8: 4ea010ef jal ra,8ae2 <pbuf_alloc>
75fc: 892a mv s2,a0
75fe: c515 beqz a0,762a <ethernetif_input+0x6c>
7600: 842a mv s0,a0
7602: 2432 lhu a2,10(s0)
7604: 4048 lw a0,4(s0)
7606: 85a6 mv a1,s1
7608: 0c9050ef jal ra,ced0 <memcpy>
760c: 243e lhu a5,10(s0)
760e: 4000 lw s0,0(s0)
7610: 94be add s1,s1,a5
7612: f865 bnez s0,7602 <ethernetif_input+0x44>
7614: de2fe0ef jal ra,5bf6 <setRxBuffAddr>
7618: 0109a783 lw a5,16(s3)
761c: 85ce mv a1,s3
761e: 854a mv a0,s2
7620: 9782 jalr a5
7622: c501 beqz a0,762a <ethernetif_input+0x6c>
7624: 854a mv a0,s2
7626: 46e010ef jal ra,8a94 <pbuf_free>
762a: f07f806f j 530 <__riscv_restore_4>
0000762e <wch_ethernetif_init>:
wch_ethernetif_init():
762e: ee9f82ef jal t0,516 <__riscv_save_0>
7632: 1141 addi sp,sp,-16
7634: 2002e437 lui s0,0x2002e
7638: c202 sw zero,4(sp)
763a: c402 sw zero,8(sp)
763c: c602 sw zero,12(sp)
763e: 7a1000ef jal ra,85de <lwip_init>
7642: bfc40513 addi a0,s0,-1028 # 2002dbfc <WCHNetIf>
7646: 2002e5b7 lui a1,0x2002e
764a: 4619 li a2,6
764c: b9858593 addi a1,a1,-1128 # 2002db98 <NetInf+0xc>
7650: 02950513 addi a0,a0,41
7654: 07d050ef jal ra,ced0 <memcpy>
7658: 2002e7b7 lui a5,0x2002e
765c: b8c7a703 lw a4,-1140(a5) # 2002db8c <NetInf>
7660: b8c78793 addi a5,a5,-1140
7664: bfc40513 addi a0,s0,-1028
7668: c23a sw a4,4(sp)
766a: 4798 lw a4,8(a5)
766c: 43dc lw a5,4(a5)
766e: c43a sw a4,8(sp)
7670: c63e sw a5,12(sp)
7672: 9801a423 sw zero,-1656(gp) # 200001c8 <netif_list>
7676: 9801a223 sw zero,-1660(gp) # 200001c4 <netif_default>
767a: 39e010ef jal ra,8a18 <netif_set_default>
767e: 00007837 lui a6,0x7
7682: 000077b7 lui a5,0x7
7686: 0074 addi a3,sp,12
7688: 0030 addi a2,sp,8
768a: 004c addi a1,sp,4
768c: 48280813 addi a6,a6,1154 # 7482 <ethernet_input>
7690: 50878793 addi a5,a5,1288 # 7508 <ethernetif_init>
7694: 4701 li a4,0
7696: bfc40513 addi a0,s0,-1028
769a: 324010ef jal ra,89be <netif_add>
769e: 0141 addi sp,sp,16
76a0: e9bf806f j 53a <__riscv_restore_0>
000076a4 <htons>:
htons():
76a4: 00851793 slli a5,a0,0x8
76a8: 8121 srli a0,a0,0x8
76aa: 8d5d or a0,a0,a5
76ac: 0542 slli a0,a0,0x10
76ae: 8141 srli a0,a0,0x10
76b0: 8082 ret
000076b2 <ntohs>:
ntohs():
76b2: 00851793 slli a5,a0,0x8
76b6: 8121 srli a0,a0,0x8
76b8: 8d5d or a0,a0,a5
76ba: 0542 slli a0,a0,0x10
76bc: 8141 srli a0,a0,0x10
76be: 8082 ret
000076c0 <htonl>:
htonl():
76c0: 01855713 srli a4,a0,0x18
76c4: 01851793 slli a5,a0,0x18
76c8: 8fd9 or a5,a5,a4
76ca: 00ff06b7 lui a3,0xff0
76ce: 00851713 slli a4,a0,0x8
76d2: 8f75 and a4,a4,a3
76d4: 8fd9 or a5,a5,a4
76d6: 6741 lui a4,0x10
76d8: f0070713 addi a4,a4,-256 # ff00 <_data_lma+0x29ec>
76dc: 8121 srli a0,a0,0x8
76de: 8d79 and a0,a0,a4
76e0: 8d5d or a0,a0,a5
76e2: 8082 ret
000076e4 <ntohl>:
ntohl():
76e4: e33f82ef jal t0,516 <__riscv_save_0>
76e8: fd9ff0ef jal ra,76c0 <htonl>
76ec: e4ff806f j 53a <__riscv_restore_0>
000076f0 <ip_route>:
ip_route():
76f0: e27f82ef jal t0,516 <__riscv_save_0>
76f4: 9881a403 lw s0,-1656(gp) # 200001c8 <netif_list>
76f8: 84aa mv s1,a0
76fa: ec01 bnez s0,7712 <ip_route+0x22>
76fc: 9841a503 lw a0,-1660(gp) # 200001c4 <netif_default>
7700: c511 beqz a0,770c <ip_route+0x1c>
7702: 31c010ef jal ra,8a1e <netif_is_up>
7706: c119 beqz a0,770c <ip_route+0x1c>
7708: 9841a403 lw s0,-1660(gp) # 200001c4 <netif_default>
770c: 8522 mv a0,s0
770e: e2df806f j 53a <__riscv_restore_0>
7712: 8522 mv a0,s0
7714: 30a010ef jal ra,8a1e <netif_is_up>
7718: c105 beqz a0,7738 <ip_route+0x48>
771a: 3098 lbu a4,1(s1)
771c: 209c lbu a5,0(s1)
771e: 0722 slli a4,a4,0x8
7720: 8f5d or a4,a4,a5
7722: 20bc lbu a5,2(s1)
7724: 07c2 slli a5,a5,0x10
7726: 8f5d or a4,a4,a5
7728: 30bc lbu a5,3(s1)
772a: 07e2 slli a5,a5,0x18
772c: 8fd9 or a5,a5,a4
772e: 4058 lw a4,4(s0)
7730: 8fb9 xor a5,a5,a4
7732: 4418 lw a4,8(s0)
7734: 8ff9 and a5,a5,a4
7736: dbf9 beqz a5,770c <ip_route+0x1c>
7738: 4000 lw s0,0(s0)
773a: b7c1 j 76fa <ip_route+0xa>
0000773c <ip_input>:
ip_input():
773c: db3f82ef jal t0,4ee <__riscv_save_10>
7740: 4140 lw s0,4(a0)
7742: 84aa mv s1,a0
7744: 89ae mv s3,a1
7746: 301c lbu a5,1(s0)
7748: 2008 lbu a0,0(s0)
774a: 07a2 slli a5,a5,0x8
774c: 8d5d or a0,a0,a5
774e: f65ff0ef jal ra,76b2 <ntohs>
7752: 8131 srli a0,a0,0xc
7754: 0542 slli a0,a0,0x10
7756: 8141 srli a0,a0,0x10
7758: 4791 li a5,4
775a: 00f50663 beq a0,a5,7766 <ip_input+0x2a>
775e: 8526 mv a0,s1
7760: 334010ef jal ra,8a94 <pbuf_free>
7764: a431 j 7970 <ip_input+0x234>
7766: 301c lbu a5,1(s0)
7768: 2008 lbu a0,0(s0)
776a: 07a2 slli a5,a5,0x8
776c: 8d5d or a0,a0,a5
776e: f45ff0ef jal ra,76b2 <ntohs>
7772: 8119 srli a0,a0,0x6
7774: 303c lbu a5,3(s0)
7776: 03c57a13 andi s4,a0,60
777a: 2028 lbu a0,2(s0)
777c: 07a2 slli a5,a5,0x8
777e: 8d5d or a0,a0,a5
7780: f33ff0ef jal ra,76b2 <ntohs>
7784: 24be lhu a5,10(s1)
7786: 892a mv s2,a0
7788: fd47ebe3 bltu a5,s4,775e <ip_input+0x22>
778c: 249e lhu a5,8(s1)
778e: fca7e8e3 bltu a5,a0,775e <ip_input+0x22>
7792: 85d2 mv a1,s4
7794: 8522 mv a0,s0
7796: 51f040ef jal ra,c4b4 <inet_chksum>
779a: f171 bnez a0,775e <ip_input+0x22>
779c: 85ca mv a1,s2
779e: 8526 mv a0,s1
77a0: 482010ef jal ra,8c22 <pbuf_realloc>
77a4: f0000537 lui a0,0xf0000
77a8: f3dff0ef jal ra,76e4 <ntohl>
77ac: e0000537 lui a0,0xe0000
77b0: f35ff0ef jal ra,76e4 <ntohl>
77b4: 894e mv s2,s3
77b6: 4b05 li s6,1
77b8: 01040b93 addi s7,s0,16
77bc: 854a mv a0,s2
77be: 260010ef jal ra,8a1e <netif_is_up>
77c2: e511 bnez a0,77ce <ip_input+0x92>
77c4: 120b1363 bnez s6,78ea <ip_input+0x1ae>
77c8: 00092903 lw s2,0(s2)
77cc: a20d j 78ee <ip_input+0x1b2>
77ce: 00490793 addi a5,s2,4
77d2: dbed beqz a5,77c4 <ip_input+0x88>
77d4: 00492683 lw a3,4(s2)
77d8: d6f5 beqz a3,77c4 <ip_input+0x88>
77da: 3818 lbu a4,17(s0)
77dc: 281c lbu a5,16(s0)
77de: 0722 slli a4,a4,0x8
77e0: 8f5d or a4,a4,a5
77e2: 283c lbu a5,18(s0)
77e4: 07c2 slli a5,a5,0x10
77e6: 8f5d or a4,a4,a5
77e8: 383c lbu a5,19(s0)
77ea: 07e2 slli a5,a5,0x18
77ec: 8fd9 or a5,a5,a4
77ee: 04f68263 beq a3,a5,7832 <ip_input+0xf6>
77f2: 85ca mv a1,s2
77f4: 855e mv a0,s7
77f6: 2e85 jal 7b66 <ip_addr_isbroadcast>
77f8: ed0d bnez a0,7832 <ip_input+0xf6>
77fa: 381c lbu a5,17(s0)
77fc: 01044a83 lbu s5,16(s0)
7800: f0000537 lui a0,0xf0000
7804: 07a2 slli a5,a5,0x8
7806: 0157e7b3 or a5,a5,s5
780a: 01244a83 lbu s5,18(s0)
780e: 0ac2 slli s5,s5,0x10
7810: 00fae7b3 or a5,s5,a5
7814: 01344a83 lbu s5,19(s0)
7818: 0ae2 slli s5,s5,0x18
781a: 00faeab3 or s5,s5,a5
781e: ec7ff0ef jal ra,76e4 <ntohl>
7822: 00aafab3 and s5,s5,a0
7826: e0000537 lui a0,0xe0000
782a: ebbff0ef jal ra,76e4 <ntohl>
782e: f8aa9be3 bne s5,a0,77c4 <ip_input+0x88>
7832: 3458 lbu a4,13(s0)
7834: 245c lbu a5,12(s0)
7836: 0722 slli a4,a4,0x8
7838: 8f5d or a4,a4,a5
783a: 247c lbu a5,14(s0)
783c: 07c2 slli a5,a5,0x10
783e: 8f5d or a4,a4,a5
7840: 347c lbu a5,15(s0)
7842: 07e2 slli a5,a5,0x18
7844: 8fd9 or a5,a5,a4
7846: c3b9 beqz a5,788c <ip_input+0x150>
7848: 85ce mv a1,s3
784a: 00c40513 addi a0,s0,12
784e: 2e21 jal 7b66 <ip_addr_isbroadcast>
7850: f00517e3 bnez a0,775e <ip_input+0x22>
7854: 345c lbu a5,13(s0)
7856: 00c44a03 lbu s4,12(s0)
785a: f0000537 lui a0,0xf0000
785e: 07a2 slli a5,a5,0x8
7860: 0147e7b3 or a5,a5,s4
7864: 00e44a03 lbu s4,14(s0)
7868: 0a42 slli s4,s4,0x10
786a: 00fa67b3 or a5,s4,a5
786e: 00f44a03 lbu s4,15(s0)
7872: 0a62 slli s4,s4,0x18
7874: 00fa6a33 or s4,s4,a5
7878: e6dff0ef jal ra,76e4 <ntohl>
787c: 00aa7a33 and s4,s4,a0
7880: e0000537 lui a0,0xe0000
7884: e61ff0ef jal ra,76e4 <ntohl>
7888: ecaa0be3 beq s4,a0,775e <ip_input+0x22>
788c: ec0909e3 beqz s2,775e <ip_input+0x22>
7890: 00744903 lbu s2,7(s0)
7894: 2068 lbu a0,6(s0)
7896: 0922 slli s2,s2,0x8
7898: 00a96933 or s2,s2,a0
789c: 6511 lui a0,0x4
789e: 157d addi a0,a0,-1
78a0: e05ff0ef jal ra,76a4 <htons>
78a4: 00a97533 and a0,s2,a0
78a8: c511 beqz a0,78b4 <ip_input+0x178>
78aa: 8526 mv a0,s1
78ac: 26ed jal 7c96 <ip_reass>
78ae: 84aa mv s1,a0
78b0: c161 beqz a0,7970 <ip_input+0x234>
78b2: 4140 lw s0,4(a0)
78b4: 85ce mv a1,s3
78b6: 8526 mv a0,s1
78b8: 4aa010ef jal ra,8d62 <raw_input>
78bc: e955 bnez a0,7970 <ip_input+0x234>
78be: 341c lbu a5,9(s0)
78c0: 2408 lbu a0,8(s0)
78c2: 07a2 slli a5,a5,0x8
78c4: 8d5d or a0,a0,a5
78c6: dedff0ef jal ra,76b2 <ntohs>
78ca: 0ff57513 andi a0,a0,255
78ce: 4799 li a5,6
78d0: 0af50363 beq a0,a5,7976 <ip_input+0x23a>
78d4: 47c5 li a5,17
78d6: 08f50963 beq a0,a5,7968 <ip_input+0x22c>
78da: 4785 li a5,1
78dc: 0af51263 bne a0,a5,7980 <ip_input+0x244>
78e0: 85ce mv a1,s3
78e2: 8526 mv a0,s1
78e4: 7d0040ef jal ra,c0b4 <icmp_input>
78e8: a061 j 7970 <ip_input+0x234>
78ea: 9881a903 lw s2,-1656(gp) # 200001c8 <netif_list>
78ee: 01391463 bne s2,s3,78f6 <ip_input+0x1ba>
78f2: 00092903 lw s2,0(s2)
78f6: 4b01 li s6,0
78f8: ec0912e3 bnez s2,77bc <ip_input+0x80>
78fc: 341c lbu a5,9(s0)
78fe: 2408 lbu a0,8(s0)
7900: 07a2 slli a5,a5,0x8
7902: 8d5d or a0,a0,a5
7904: dafff0ef jal ra,76b2 <ntohs>
7908: 0ff57513 andi a0,a0,255
790c: 47c5 li a5,17
790e: 00f51e63 bne a0,a5,792a <ip_input+0x1ee>
7912: 014407b3 add a5,s0,s4
7916: 23a8 lbu a0,2(a5)
7918: 33bc lbu a5,3(a5)
791a: 07a2 slli a5,a5,0x8
791c: 8d5d or a0,a0,a5
791e: d95ff0ef jal ra,76b2 <ntohs>
7922: 04400793 li a5,68
7926: 02f50d63 beq a0,a5,7960 <ip_input+0x224>
792a: 4a85 li s5,1
792c: 341c lbu a5,9(s0)
792e: 2408 lbu a0,8(s0)
7930: 07a2 slli a5,a5,0x8
7932: 8d5d or a0,a0,a5
7934: d7fff0ef jal ra,76b2 <ntohs>
7938: 0ff57513 andi a0,a0,255
793c: 47c5 li a5,17
793e: 08f51963 bne a0,a5,79d0 <ip_input+0x294>
7942: 9a22 add s4,s4,s0
7944: 003a4783 lbu a5,3(s4)
7948: 002a4503 lbu a0,2(s4)
794c: 07a2 slli a5,a5,0x8
794e: 8d5d or a0,a0,a5
7950: d63ff0ef jal ra,76b2 <ntohs>
7954: 76c00793 li a5,1900
7958: 06f51c63 bne a0,a5,79d0 <ip_input+0x294>
795c: 894e mv s2,s3
795e: b73d j 788c <ip_input+0x150>
7960: f20998e3 bnez s3,7890 <ip_input+0x154>
7964: 4a81 li s5,0
7966: b7d9 j 792c <ip_input+0x1f0>
7968: 85ce mv a1,s3
796a: 8526 mv a0,s1
796c: 212040ef jal ra,bb7e <udp_input>
7970: 4501 li a0,0
7972: bb5f806f j 526 <__riscv_restore_10>
7976: 85ce mv a1,s3
7978: 8526 mv a0,s1
797a: 351020ef jal ra,a4ca <tcp_input>
797e: bfcd j 7970 <ip_input+0x234>
7980: 85ce mv a1,s3
7982: 01040513 addi a0,s0,16
7986: 22c5 jal 7b66 <ip_addr_isbroadcast>
7988: dc051be3 bnez a0,775e <ip_input+0x22>
798c: 381c lbu a5,17(s0)
798e: 01044903 lbu s2,16(s0)
7992: f0000537 lui a0,0xf0000
7996: 07a2 slli a5,a5,0x8
7998: 0127e7b3 or a5,a5,s2
799c: 01244903 lbu s2,18(s0)
79a0: 0942 slli s2,s2,0x10
79a2: 00f967b3 or a5,s2,a5
79a6: 01344903 lbu s2,19(s0)
79aa: 0962 slli s2,s2,0x18
79ac: 00f96933 or s2,s2,a5
79b0: d35ff0ef jal ra,76e4 <ntohl>
79b4: 00a97933 and s2,s2,a0
79b8: e0000537 lui a0,0xe0000
79bc: d29ff0ef jal ra,76e4 <ntohl>
79c0: d8a90fe3 beq s2,a0,775e <ip_input+0x22>
79c4: c0c0 sw s0,4(s1)
79c6: 4589 li a1,2
79c8: 8526 mv a0,s1
79ca: 13b040ef jal ra,c304 <icmp_dest_unreach>
79ce: bb41 j 775e <ip_input+0x22>
79d0: e60a91e3 bnez s5,7832 <ip_input+0xf6>
79d4: b369 j 775e <ip_input+0x22>
000079d6 <ip_output_if>:
ip_output_if():
79d6: b19f82ef jal t0,4ee <__riscv_save_10>
79da: 89aa mv s3,a0
79dc: 8942 mv s2,a6
79de: 12060f63 beqz a2,7b1c <ip_output_if+0x146>
79e2: 8aae mv s5,a1
79e4: 45d1 li a1,20
79e6: 8a3a mv s4,a4
79e8: 84b2 mv s1,a2
79ea: 8bb6 mv s7,a3
79ec: 8b3e mv s6,a5
79ee: 038010ef jal ra,8a26 <pbuf_header>
79f2: 5779 li a4,-2
79f4: 12051163 bnez a0,7b16 <ip_output_if+0x140>
79f8: 0049a403 lw s0,4(s3)
79fc: 0ba2 slli s7,s7,0x8
79fe: 341c lbu a5,9(s0)
7a00: 2408 lbu a0,8(s0)
7a02: 07a2 slli a5,a5,0x8
7a04: 8d5d or a0,a0,a5
7a06: cadff0ef jal ra,76b2 <ntohs>
7a0a: 0ff57513 andi a0,a0,255
7a0e: 01756533 or a0,a0,s7
7a12: c93ff0ef jal ra,76a4 <htons>
7a16: 00855713 srli a4,a0,0x8
7a1a: b418 sb a4,9(s0)
7a1c: a408 sb a0,8(s0)
7a1e: c95ff0ef jal ra,76b2 <ntohs>
7a22: 8121 srli a0,a0,0x8
7a24: 0542 slli a0,a0,0x10
7a26: 8141 srli a0,a0,0x10
7a28: 0522 slli a0,a0,0x8
7a2a: 01656533 or a0,a0,s6
7a2e: 0542 slli a0,a0,0x10
7a30: 8141 srli a0,a0,0x10
7a32: c73ff0ef jal ra,76a4 <htons>
7a36: 3098 lbu a4,1(s1)
7a38: 209c lbu a5,0(s1)
7a3a: a408 sb a0,8(s0)
7a3c: 0722 slli a4,a4,0x8
7a3e: 8f5d or a4,a4,a5
7a40: 20bc lbu a5,2(s1)
7a42: 8121 srli a0,a0,0x8
7a44: b408 sb a0,9(s0)
7a46: 07c2 slli a5,a5,0x10
7a48: 8f5d or a4,a4,a5
7a4a: 30bc lbu a5,3(s1)
7a4c: 6511 lui a0,0x4
7a4e: 50050513 addi a0,a0,1280 # 4500 <vQueueUnregisterQueue+0x52>
7a52: 07e2 slli a5,a5,0x18
7a54: 8fd9 or a5,a5,a4
7a56: 0087d713 srli a4,a5,0x8
7a5a: a81c sb a5,16(s0)
7a5c: b818 sb a4,17(s0)
7a5e: 0107d713 srli a4,a5,0x10
7a62: 83e1 srli a5,a5,0x18
7a64: b83c sb a5,19(s0)
7a66: a838 sb a4,18(s0)
7a68: 00aa6533 or a0,s4,a0
7a6c: c39ff0ef jal ra,76a4 <htons>
7a70: a008 sb a0,0(s0)
7a72: 8121 srli a0,a0,0x8
7a74: b008 sb a0,1(s0)
7a76: 0089d503 lhu a0,8(s3)
7a7a: 97018a13 addi s4,gp,-1680 # 200001b0 <ip_id.2947>
7a7e: c27ff0ef jal ra,76a4 <htons>
7a82: a028 sb a0,2(s0)
7a84: 8121 srli a0,a0,0x8
7a86: b028 sb a0,3(s0)
7a88: 000a5503 lhu a0,0(s4)
7a8c: 00040323 sb zero,6(s0)
7a90: 000403a3 sb zero,7(s0)
7a94: c11ff0ef jal ra,76a4 <htons>
7a98: 000a5783 lhu a5,0(s4)
7a9c: a048 sb a0,4(s0)
7a9e: 8121 srli a0,a0,0x8
7aa0: 0785 addi a5,a5,1
7aa2: b048 sb a0,5(s0)
7aa4: 00fa1023 sh a5,0(s4)
7aa8: 020a8163 beqz s5,7aca <ip_output_if+0xf4>
7aac: 001ac703 lbu a4,1(s5)
7ab0: 000ac783 lbu a5,0(s5)
7ab4: 0722 slli a4,a4,0x8
7ab6: 8f5d or a4,a4,a5
7ab8: 002ac783 lbu a5,2(s5)
7abc: 07c2 slli a5,a5,0x10
7abe: 8f5d or a4,a4,a5
7ac0: 003ac783 lbu a5,3(s5)
7ac4: 07e2 slli a5,a5,0x18
7ac6: 8fd9 or a5,a5,a4
7ac8: e799 bnez a5,7ad6 <ip_output_if+0x100>
7aca: 00490713 addi a4,s2,4
7ace: 4781 li a5,0
7ad0: c319 beqz a4,7ad6 <ip_output_if+0x100>
7ad2: 00492783 lw a5,4(s2)
7ad6: 0087d713 srli a4,a5,0x8
7ada: a45c sb a5,12(s0)
7adc: b458 sb a4,13(s0)
7ade: 0107d713 srli a4,a5,0x10
7ae2: 83e1 srli a5,a5,0x18
7ae4: a478 sb a4,14(s0)
7ae6: b47c sb a5,15(s0)
7ae8: 00040523 sb zero,10(s0)
7aec: 000405a3 sb zero,11(s0)
7af0: 45d1 li a1,20
7af2: 8522 mv a0,s0
7af4: 1c1040ef jal ra,c4b4 <inet_chksum>
7af8: a428 sb a0,10(s0)
7afa: 8121 srli a0,a0,0x8
7afc: b428 sb a0,11(s0)
7afe: 03095783 lhu a5,48(s2)
7b02: c385 beqz a5,7b22 <ip_output_if+0x14c>
7b04: 0089d703 lhu a4,8(s3)
7b08: 00e7fd63 bgeu a5,a4,7b22 <ip_output_if+0x14c>
7b0c: 8626 mv a2,s1
7b0e: 85ca mv a1,s2
7b10: 854e mv a0,s3
7b12: 2385 jal 8072 <ip_frag>
7b14: 872a mv a4,a0
7b16: 853a mv a0,a4
7b18: a0ff806f j 526 <__riscv_restore_10>
7b1c: 4144 lw s1,4(a0)
7b1e: 04c1 addi s1,s1,16
7b20: bff9 j 7afe <ip_output_if+0x128>
7b22: 01492783 lw a5,20(s2)
7b26: 8626 mv a2,s1
7b28: 85ce mv a1,s3
7b2a: 854a mv a0,s2
7b2c: 9782 jalr a5
7b2e: b7dd j 7b14 <ip_output_if+0x13e>
00007b30 <ip_output>:
ip_output():
7b30: 9e7f82ef jal t0,516 <__riscv_save_0>
7b34: 1101 addi sp,sp,-32
7b36: 842a mv s0,a0
7b38: 8532 mv a0,a2
7b3a: ce2e sw a1,28(sp)
7b3c: cc36 sw a3,24(sp)
7b3e: ca3a sw a4,20(sp)
7b40: c83e sw a5,16(sp)
7b42: c632 sw a2,12(sp)
7b44: badff0ef jal ra,76f0 <ip_route>
7b48: cd09 beqz a0,7b62 <ip_output+0x32>
7b4a: 47c2 lw a5,16(sp)
7b4c: 4752 lw a4,20(sp)
7b4e: 46e2 lw a3,24(sp)
7b50: 4632 lw a2,12(sp)
7b52: 45f2 lw a1,28(sp)
7b54: 882a mv a6,a0
7b56: 8522 mv a0,s0
7b58: e7fff0ef jal ra,79d6 <ip_output_if>
7b5c: 6105 addi sp,sp,32
7b5e: 9ddf806f j 53a <__riscv_restore_0>
7b62: 5571 li a0,-4
7b64: bfe5 j 7b5c <ip_output+0x2c>
00007b66 <ip_addr_isbroadcast>:
ip_addr_isbroadcast():
7b66: 3118 lbu a4,1(a0)
7b68: 211c lbu a5,0(a0)
7b6a: 0722 slli a4,a4,0x8
7b6c: 8f5d or a4,a4,a5
7b6e: 213c lbu a5,2(a0)
7b70: 07c2 slli a5,a5,0x10
7b72: 8f5d or a4,a4,a5
7b74: 313c lbu a5,3(a0)
7b76: 07e2 slli a5,a5,0x18
7b78: 8fd9 or a5,a5,a4
7b7a: fff78693 addi a3,a5,-1
7b7e: 5775 li a4,-3
7b80: 02d76663 bltu a4,a3,7bac <ip_addr_isbroadcast+0x46>
7b84: 0325c703 lbu a4,50(a1)
7b88: 4501 li a0,0
7b8a: 8b09 andi a4,a4,2
7b8c: c30d beqz a4,7bae <ip_addr_isbroadcast+0x48>
7b8e: 41d8 lw a4,4(a1)
7b90: 00f70f63 beq a4,a5,7bae <ip_addr_isbroadcast+0x48>
7b94: 4594 lw a3,8(a1)
7b96: 8f3d xor a4,a4,a5
7b98: 8f75 and a4,a4,a3
7b9a: eb11 bnez a4,7bae <ip_addr_isbroadcast+0x48>
7b9c: fff6c513 not a0,a3
7ba0: 8fe9 and a5,a5,a0
7ba2: 40a78533 sub a0,a5,a0
7ba6: 00153513 seqz a0,a0
7baa: 8082 ret
7bac: 4505 li a0,1
7bae: 8082 ret
00007bb0 <ip_reass_tmr>:
ip_reass_tmr():
7bb0: 93ff82ef jal t0,4ee <__riscv_save_10>
7bb4: 9741a403 lw s0,-1676(gp) # 200001b4 <reassdatagrams>
7bb8: 44c5 li s1,17
7bba: 4b01 li s6,0
7bbc: 97418913 addi s2,gp,-1676 # 200001b4 <reassdatagrams>
7bc0: e019 bnez s0,7bc6 <ip_reass_tmr+0x16>
7bc2: 965f806f j 526 <__riscv_restore_10>
7bc6: 14fd addi s1,s1,-1
7bc8: 0ff4f493 andi s1,s1,255
7bcc: d8fd beqz s1,7bc2 <ip_reass_tmr+0x12>
7bce: 3c7c lbu a5,31(s0)
7bd0: 00042c03 lw s8,0(s0)
7bd4: c791 beqz a5,7be0 <ip_reass_tmr+0x30>
7bd6: 17fd addi a5,a5,-1
7bd8: bc7c sb a5,31(s0)
7bda: 8b22 mv s6,s0
7bdc: 8462 mv s0,s8
7bde: b7cd j 7bc0 <ip_reass_tmr+0x10>
7be0: 00442983 lw s3,4(s0)
7be4: 4a81 li s5,0
7be6: 0049a503 lw a0,4(s3)
7bea: 315c lbu a5,5(a0)
7bec: 2158 lbu a4,4(a0)
7bee: 07a2 slli a5,a5,0x8
7bf0: 8fd9 or a5,a5,a4
7bf2: ef85 bnez a5,7c2a <ip_reass_tmr+0x7a>
7bf4: 3118 lbu a4,1(a0)
7bf6: 211c lbu a5,0(a0)
7bf8: 4651 li a2,20
7bfa: 0722 slli a4,a4,0x8
7bfc: 8f5d or a4,a4,a5
7bfe: 213c lbu a5,2(a0)
7c00: 00840593 addi a1,s0,8
7c04: 07c2 slli a5,a5,0x10
7c06: 8f5d or a4,a4,a5
7c08: 313c lbu a5,3(a0)
7c0a: 07e2 slli a5,a5,0x18
7c0c: 8fd9 or a5,a5,a4
7c0e: c05c sw a5,4(s0)
7c10: 2c0050ef jal ra,ced0 <memcpy>
7c14: 4585 li a1,1
7c16: 854e mv a0,s3
7c18: 700040ef jal ra,c318 <icmp_time_exceeded>
7c1c: 854e mv a0,s3
7c1e: 05c010ef jal ra,8c7a <pbuf_clen>
7c22: 8aaa mv s5,a0
7c24: 854e mv a0,s3
7c26: 66f000ef jal ra,8a94 <pbuf_free>
7c2a: 00442983 lw s3,4(s0)
7c2e: 02099663 bnez s3,7c5a <ip_reass_tmr+0xaa>
7c32: 00092703 lw a4,0(s2)
7c36: 401c lw a5,0(s0)
7c38: 04e41c63 bne s0,a4,7c90 <ip_reass_tmr+0xe0>
7c3c: 00f92023 sw a5,0(s2)
7c40: 85a2 mv a1,s0
7c42: 4515 li a0,5
7c44: 47f000ef jal ra,88c2 <memp_free>
7c48: 97218713 addi a4,gp,-1678 # 200001b2 <ip_reass_pbufcount>
7c4c: 231e lhu a5,0(a4)
7c4e: 845a mv s0,s6
7c50: 41578ab3 sub s5,a5,s5
7c54: 01571023 sh s5,0(a4)
7c58: b749 j 7bda <ip_reass_tmr+0x2a>
7c5a: 0049a703 lw a4,4(s3)
7c5e: 854e mv a0,s3
7c60: 331c lbu a5,1(a4)
7c62: 00074a03 lbu s4,0(a4)
7c66: 07a2 slli a5,a5,0x8
7c68: 0147e7b3 or a5,a5,s4
7c6c: 00274a03 lbu s4,2(a4)
7c70: 0a42 slli s4,s4,0x10
7c72: 00fa67b3 or a5,s4,a5
7c76: 00374a03 lbu s4,3(a4)
7c7a: 0a62 slli s4,s4,0x18
7c7c: 00fa6a33 or s4,s4,a5
7c80: 7fb000ef jal ra,8c7a <pbuf_clen>
7c84: 9aaa add s5,s5,a0
7c86: 854e mv a0,s3
7c88: 60d000ef jal ra,8a94 <pbuf_free>
7c8c: 89d2 mv s3,s4
7c8e: b745 j 7c2e <ip_reass_tmr+0x7e>
7c90: 00fb2023 sw a5,0(s6) # 4000 <xQueueGenericSendFromISR+0x8>
7c94: b775 j 7c40 <ip_reass_tmr+0x90>
00007c96 <ip_reass>:
ip_reass():
7c96: 859f82ef jal t0,4ee <__riscv_save_10>
7c9a: 4144 lw s1,4(a0)
7c9c: 892a mv s2,a0
7c9e: 309c lbu a5,1(s1)
7ca0: 2088 lbu a0,0(s1)
7ca2: 07a2 slli a5,a5,0x8
7ca4: 8d5d or a0,a0,a5
7ca6: a0dff0ef jal ra,76b2 <ntohs>
7caa: 8119 srli a0,a0,0x6
7cac: 03c57513 andi a0,a0,60
7cb0: 47d1 li a5,20
7cb2: 26f51263 bne a0,a5,7f16 <ip_reass+0x280>
7cb6: 30fc lbu a5,7(s1)
7cb8: 20e8 lbu a0,6(s1)
7cba: 07a2 slli a5,a5,0x8
7cbc: 8d5d or a0,a0,a5
7cbe: 9f5ff0ef jal ra,76b2 <ntohs>
7cc2: 30bc lbu a5,3(s1)
7cc4: 8b2a mv s6,a0
7cc6: 20a8 lbu a0,2(s1)
7cc8: 07a2 slli a5,a5,0x8
7cca: 8d5d or a0,a0,a5
7ccc: 9e7ff0ef jal ra,76b2 <ntohs>
7cd0: 309c lbu a5,1(s1)
7cd2: 8caa mv s9,a0
7cd4: 2088 lbu a0,0(s1)
7cd6: 07a2 slli a5,a5,0x8
7cd8: 8d5d or a0,a0,a5
7cda: 9d9ff0ef jal ra,76b2 <ntohs>
7cde: 8c2a mv s8,a0
7ce0: 854a mv a0,s2
7ce2: 799000ef jal ra,8c7a <pbuf_clen>
7ce6: 2002e7b7 lui a5,0x2002e
7cea: be07a783 lw a5,-1056(a5) # 2002dbe0 <WCHCfg+0x10>
7cee: 9721d703 lhu a4,-1678(gp) # 200001b2 <ip_reass_pbufcount>
7cf2: 8d2a mv s10,a0
7cf4: 838d srli a5,a5,0x3
7cf6: 972a add a4,a4,a0
7cf8: 8bfd andi a5,a5,31
7cfa: 97218993 addi s3,gp,-1678 # 200001b2 <ip_reass_pbufcount>
7cfe: 20e7ec63 bltu a5,a4,7f16 <ip_reass+0x280>
7d02: 9741a403 lw s0,-1676(gp) # 200001b4 <reassdatagrams>
7d06: 4a81 li s5,0
7d08: 97418a13 addi s4,gp,-1676 # 200001b4 <reassdatagrams>
7d0c: e81d bnez s0,7d42 <ip_reass+0xac>
7d0e: 4515 li a0,5
7d10: 393000ef jal ra,88a2 <memp_malloc>
7d14: 842a mv s0,a0
7d16: 20050063 beqz a0,7f16 <ip_reass+0x280>
7d1a: 4671 li a2,28
7d1c: 4581 li a1,0
7d1e: 00440513 addi a0,s0,4
7d22: 825f80ef jal ra,546 <memset>
7d26: 478d li a5,3
7d28: bc7c sb a5,31(s0)
7d2a: 000a2783 lw a5,0(s4)
7d2e: 008a2023 sw s0,0(s4)
7d32: c01c sw a5,0(s0)
7d34: 4651 li a2,20
7d36: 85a6 mv a1,s1
7d38: 00840513 addi a0,s0,8
7d3c: 194050ef jal ra,ced0 <memcpy>
7d40: ac95 j 7fb4 <ip_reass+0x31e>
7d42: 34d8 lbu a4,13(s1)
7d44: 24dc lbu a5,12(s1)
7d46: 0722 slli a4,a4,0x8
7d48: 8f5d or a4,a4,a5
7d4a: 24fc lbu a5,14(s1)
7d4c: 07c2 slli a5,a5,0x10
7d4e: 8f5d or a4,a4,a5
7d50: 34fc lbu a5,15(s1)
7d52: 07e2 slli a5,a5,0x18
7d54: 8fd9 or a5,a5,a4
7d56: 4858 lw a4,20(s0)
7d58: 02f71663 bne a4,a5,7d84 <ip_reass+0xee>
7d5c: 3898 lbu a4,17(s1)
7d5e: 289c lbu a5,16(s1)
7d60: 0722 slli a4,a4,0x8
7d62: 8f5d or a4,a4,a5
7d64: 28bc lbu a5,18(s1)
7d66: 07c2 slli a5,a5,0x10
7d68: 8f5d or a4,a4,a5
7d6a: 38bc lbu a5,19(s1)
7d6c: 07e2 slli a5,a5,0x18
7d6e: 8fd9 or a5,a5,a4
7d70: 4c18 lw a4,24(s0)
7d72: 00f71963 bne a4,a5,7d84 <ip_reass+0xee>
7d76: 30dc lbu a5,5(s1)
7d78: 20d4 lbu a3,4(s1)
7d7a: 245a lhu a4,12(s0)
7d7c: 07a2 slli a5,a5,0x8
7d7e: 8fd5 or a5,a5,a3
7d80: 20f70663 beq a4,a5,7f8c <ip_reass+0x2f6>
7d84: 8aa2 mv s5,s0
7d86: 4000 lw s0,0(s0)
7d88: b751 j 7d0c <ip_reass+0x76>
7d8a: 42cc lw a1,4(a3)
7d8c: 0055c803 lbu a6,5(a1)
7d90: 0045c303 lbu t1,4(a1)
7d94: 0822 slli a6,a6,0x8
7d96: 00686833 or a6,a6,t1
7d9a: 0d067c63 bgeu a2,a6,7e72 <ip_reass+0x1dc>
7d9e: 0086d593 srli a1,a3,0x8
7da2: a394 sb a3,0(a5)
7da4: b38c sb a1,1(a5)
7da6: 0106d593 srli a1,a3,0x10
7daa: 82e1 srli a3,a3,0x18
7dac: a3ac sb a1,2(a5)
7dae: b3b4 sb a3,3(a5)
7db0: 2a070e63 beqz a4,806c <ip_reass+0x3d6>
7db4: 3374 lbu a3,7(a4)
7db6: 236c lbu a1,6(a4)
7db8: 06a2 slli a3,a3,0x8
7dba: 8ecd or a3,a3,a1
7dbc: 14d66463 bltu a2,a3,7f04 <ip_reass+0x26e>
7dc0: 14a86263 bltu a6,a0,7f04 <ip_reass+0x26e>
7dc4: 00895693 srli a3,s2,0x8
7dc8: 01270023 sb s2,0(a4)
7dcc: b314 sb a3,1(a4)
7dce: 01095693 srli a3,s2,0x10
7dd2: 01895913 srli s2,s2,0x18
7dd6: a334 sb a3,2(a4)
7dd8: 012701a3 sb s2,3(a4)
7ddc: 2c78 lbu a4,30(s0)
7dde: 4b01 li s6,0
7de0: 8b05 andi a4,a4,1
7de2: 18070f63 beqz a4,7f80 <ip_reass+0x2ea>
7de6: 18088d63 beqz a7,7f80 <ip_reass+0x2ea>
7dea: 4058 lw a4,4(s0)
7dec: 4344 lw s1,4(a4)
7dee: 30d8 lbu a4,5(s1)
7df0: 20d4 lbu a3,4(s1)
7df2: 0722 slli a4,a4,0x8
7df4: 8f55 or a4,a4,a3
7df6: 18071563 bnez a4,7f80 <ip_reass+0x2ea>
7dfa: 3394 lbu a3,1(a5)
7dfc: 2398 lbu a4,0(a5)
7dfe: 06a2 slli a3,a3,0x8
7e00: 8ed9 or a3,a3,a4
7e02: 23b8 lbu a4,2(a5)
7e04: 0742 slli a4,a4,0x10
7e06: 8ed9 or a3,a3,a4
7e08: 33b8 lbu a4,3(a5)
7e0a: 0762 slli a4,a4,0x18
7e0c: 8f55 or a4,a4,a3
7e0e: e761 bnez a4,7ed6 <ip_reass+0x240>
7e10: 2c5e lhu a5,28(s0)
7e12: 0004c903 lbu s2,0(s1)
7e16: 4651 li a2,20
7e18: 07d1 addi a5,a5,20
7e1a: ac5e sh a5,28(s0)
7e1c: 309c lbu a5,1(s1)
7e1e: 00840593 addi a1,s0,8
7e22: 8526 mv a0,s1
7e24: 07a2 slli a5,a5,0x8
7e26: 0127e7b3 or a5,a5,s2
7e2a: 0024c903 lbu s2,2(s1)
7e2e: 0942 slli s2,s2,0x10
7e30: 00f967b3 or a5,s2,a5
7e34: 0034c903 lbu s2,3(s1)
7e38: 0962 slli s2,s2,0x18
7e3a: 00f96933 or s2,s2,a5
7e3e: 092050ef jal ra,ced0 <memcpy>
7e42: 2c4a lhu a0,28(s0)
7e44: 861ff0ef jal ra,76a4 <htons>
7e48: a0a8 sb a0,2(s1)
7e4a: 8121 srli a0,a0,0x8
7e4c: b0a8 sb a0,3(s1)
7e4e: 00048323 sb zero,6(s1)
7e52: 000483a3 sb zero,7(s1)
7e56: 00048523 sb zero,10(s1)
7e5a: 000485a3 sb zero,11(s1)
7e5e: 45d1 li a1,20
7e60: 8526 mv a0,s1
7e62: 652040ef jal ra,c4b4 <inet_chksum>
7e66: a4a8 sb a0,10(s1)
7e68: 8121 srli a0,a0,0x8
7e6a: b4a8 sb a0,11(s1)
7e6c: 00442b03 lw s6,4(s0)
7e70: a0d5 j 7f54 <ip_reass+0x2be>
7e72: 09060963 beq a2,a6,7f04 <ip_reass+0x26e>
7e76: 31f4 lbu a3,7(a1)
7e78: 0065c303 lbu t1,6(a1)
7e7c: 06a2 slli a3,a3,0x8
7e7e: 0066e6b3 or a3,a3,t1
7e82: 08d66163 bltu a2,a3,7f04 <ip_reass+0x26e>
7e86: cb01 beqz a4,7e96 <ip_reass+0x200>
7e88: 2374 lbu a3,6(a4)
7e8a: 3378 lbu a4,7(a4)
7e8c: 0722 slli a4,a4,0x8
7e8e: 8f55 or a4,a4,a3
7e90: 00e80363 beq a6,a4,7e96 <ip_reass+0x200>
7e94: 4881 li a7,0
7e96: 3198 lbu a4,1(a1)
7e98: 2194 lbu a3,0(a1)
7e9a: 0722 slli a4,a4,0x8
7e9c: 8f55 or a4,a4,a3
7e9e: 21b4 lbu a3,2(a1)
7ea0: 06c2 slli a3,a3,0x10
7ea2: 8f55 or a4,a4,a3
7ea4: 31b4 lbu a3,3(a1)
7ea6: 06e2 slli a3,a3,0x18
7ea8: 8ed9 or a3,a3,a4
7eaa: 872e mv a4,a1
7eac: aa65 j 8064 <ip_reass+0x3ce>
7eae: 00895693 srli a3,s2,0x8
7eb2: 01270023 sb s2,0(a4)
7eb6: b314 sb a3,1(a4)
7eb8: 01095693 srli a3,s2,0x10
7ebc: 01895913 srli s2,s2,0x18
7ec0: a334 sb a3,2(a4)
7ec2: 012701a3 sb s2,3(a4)
7ec6: 2374 lbu a3,6(a4)
7ec8: 3378 lbu a4,7(a4)
7eca: 0722 slli a4,a4,0x8
7ecc: 8f55 or a4,a4,a3
7ece: f0e607e3 beq a2,a4,7ddc <ip_reass+0x146>
7ed2: 4881 li a7,0
7ed4: b721 j 7ddc <ip_reass+0x146>
7ed6: 4354 lw a3,4(a4)
7ed8: 23ec lbu a1,6(a5)
7eda: 33f8 lbu a4,7(a5)
7edc: 32dc lbu a5,5(a3)
7ede: 22d0 lbu a2,4(a3)
7ee0: 0722 slli a4,a4,0x8
7ee2: 07a2 slli a5,a5,0x8
7ee4: 8f4d or a4,a4,a1
7ee6: 8fd1 or a5,a5,a2
7ee8: 02f71a63 bne a4,a5,7f1c <ip_reass+0x286>
7eec: 329c lbu a5,1(a3)
7eee: 2298 lbu a4,0(a3)
7ef0: 07a2 slli a5,a5,0x8
7ef2: 8fd9 or a5,a5,a4
7ef4: 22b8 lbu a4,2(a3)
7ef6: 0742 slli a4,a4,0x10
7ef8: 8fd9 or a5,a5,a4
7efa: 32b8 lbu a4,3(a3)
7efc: 0762 slli a4,a4,0x18
7efe: 8f5d or a4,a4,a5
7f00: 87b6 mv a5,a3
7f02: b731 j 7e0e <ip_reass+0x178>
7f04: 854a mv a0,s2
7f06: 575000ef jal ra,8c7a <pbuf_clen>
7f0a: 0009d783 lhu a5,0(s3)
7f0e: 40a78533 sub a0,a5,a0
7f12: 00a99023 sh a0,0(s3)
7f16: 854a mv a0,s2
7f18: 37d000ef jal ra,8a94 <pbuf_free>
7f1c: 4b01 li s6,0
7f1e: a08d j 7f80 <ip_reass+0x2ea>
7f20: 55b1 li a1,-20
7f22: 854a mv a0,s2
7f24: 00492483 lw s1,4(s2)
7f28: 2ff000ef jal ra,8a26 <pbuf_header>
7f2c: 85ca mv a1,s2
7f2e: 855a mv a0,s6
7f30: 567000ef jal ra,8c96 <pbuf_cat>
7f34: 309c lbu a5,1(s1)
7f36: 0004c903 lbu s2,0(s1)
7f3a: 07a2 slli a5,a5,0x8
7f3c: 0127e7b3 or a5,a5,s2
7f40: 0024c903 lbu s2,2(s1)
7f44: 0942 slli s2,s2,0x10
7f46: 00f967b3 or a5,s2,a5
7f4a: 0034c903 lbu s2,3(s1)
7f4e: 0962 slli s2,s2,0x18
7f50: 00f96933 or s2,s2,a5
7f54: fc0916e3 bnez s2,7f20 <ip_reass+0x28a>
7f58: 000a2703 lw a4,0(s4)
7f5c: 401c lw a5,0(s0)
7f5e: 02e41463 bne s0,a4,7f86 <ip_reass+0x2f0>
7f62: 00fa2023 sw a5,0(s4)
7f66: 85a2 mv a1,s0
7f68: 4515 li a0,5
7f6a: 159000ef jal ra,88c2 <memp_free>
7f6e: 855a mv a0,s6
7f70: 50b000ef jal ra,8c7a <pbuf_clen>
7f74: 0009d783 lhu a5,0(s3)
7f78: 40a78533 sub a0,a5,a0
7f7c: 00a99023 sh a0,0(s3)
7f80: 855a mv a0,s6
7f82: da4f806f j 526 <__riscv_restore_10>
7f86: 00faa023 sw a5,0(s5)
7f8a: bff1 j 7f66 <ip_reass+0x2d0>
7f8c: 30fc lbu a5,7(s1)
7f8e: 20e8 lbu a0,6(s1)
7f90: 6b89 lui s7,0x2
7f92: 07a2 slli a5,a5,0x8
7f94: 8d5d or a0,a0,a5
7f96: f1cff0ef jal ra,76b2 <ntohs>
7f9a: 1bfd addi s7,s7,-1
7f9c: 01757533 and a0,a0,s7
7fa0: 0542 slli a0,a0,0x10
7fa2: 8141 srli a0,a0,0x10
7fa4: e901 bnez a0,7fb4 <ip_reass+0x31e>
7fa6: 246a lhu a0,14(s0)
7fa8: f0aff0ef jal ra,76b2 <ntohs>
7fac: 01757533 and a0,a0,s7
7fb0: d80512e3 bnez a0,7d34 <ip_reass+0x9e>
7fb4: 0009d783 lhu a5,0(s3)
7fb8: 9d3e add s10,s10,a5
7fba: 01a99023 sh s10,0(s3)
7fbe: 30fc lbu a5,7(s1)
7fc0: 20e8 lbu a0,6(s1)
7fc2: 07a2 slli a5,a5,0x8
7fc4: 8d5d or a0,a0,a5
7fc6: eecff0ef jal ra,76b2 <ntohs>
7fca: 01251793 slli a5,a0,0x12
7fce: 0207c263 bltz a5,7ff2 <ip_reass+0x35c>
7fd2: 013b1513 slli a0,s6,0x13
7fd6: 2c7c lbu a5,30(s0)
7fd8: 814d srli a0,a0,0x13
7fda: 050e slli a0,a0,0x3
7fdc: 006c5c13 srli s8,s8,0x6
7fe0: 9566 add a0,a0,s9
7fe2: 03cc7c13 andi s8,s8,60
7fe6: 0017e793 ori a5,a5,1
7fea: 41850533 sub a0,a0,s8
7fee: ac7c sb a5,30(s0)
7ff0: ac4a sh a0,28(s0)
7ff2: 00492483 lw s1,4(s2)
7ff6: 30bc lbu a5,3(s1)
7ff8: 20a8 lbu a0,2(s1)
7ffa: 07a2 slli a5,a5,0x8
7ffc: 8d5d or a0,a0,a5
7ffe: eb4ff0ef jal ra,76b2 <ntohs>
8002: 309c lbu a5,1(s1)
8004: 8b2a mv s6,a0
8006: 2088 lbu a0,0(s1)
8008: 07a2 slli a5,a5,0x8
800a: 8d5d or a0,a0,a5
800c: ea6ff0ef jal ra,76b2 <ntohs>
8010: 30fc lbu a5,7(s1)
8012: 8baa mv s7,a0
8014: 20e8 lbu a0,6(s1)
8016: 07a2 slli a5,a5,0x8
8018: 006bdb93 srli s7,s7,0x6
801c: 8d5d or a0,a0,a5
801e: e94ff0ef jal ra,76b2 <ntohs>
8022: 054e slli a0,a0,0x13
8024: 814d srli a0,a0,0x13
8026: 00351613 slli a2,a0,0x3
802a: 00cb0533 add a0,s6,a2
802e: 03cbfb13 andi s6,s7,60
8032: 00492783 lw a5,4(s2)
8036: 41650533 sub a0,a0,s6
803a: 0542 slli a0,a0,0x10
803c: 00865713 srli a4,a2,0x8
8040: 8141 srli a0,a0,0x10
8042: 4054 lw a3,4(s0)
8044: b3d8 sb a4,5(a5)
8046: 00855713 srli a4,a0,0x8
804a: b3f8 sb a4,7(a5)
804c: 00078023 sb zero,0(a5)
8050: 000780a3 sb zero,1(a5)
8054: 00078123 sb zero,2(a5)
8058: 000781a3 sb zero,3(a5)
805c: a3d0 sb a2,4(a5)
805e: a3e8 sb a0,6(a5)
8060: 4885 li a7,1
8062: 4701 li a4,0
8064: d20693e3 bnez a3,7d8a <ip_reass+0xf4>
8068: e40713e3 bnez a4,7eae <ip_reass+0x218>
806c: 01242223 sw s2,4(s0)
8070: b3b5 j 7ddc <ip_reass+0x146>
00008072 <ip_frag>:
ip_frag():
8072: c74f82ef jal t0,4e6 <__riscv_save_12>
8076: 00452c03 lw s8,4(a0)
807a: 1101 addi sp,sp,-32
807c: ca32 sw a2,20(sp)
807e: 007c4703 lbu a4,7(s8)
8082: 8daa mv s11,a0
8084: 006c4503 lbu a0,6(s8)
8088: 0722 slli a4,a4,0x8
808a: 0305db83 lhu s7,48(a1)
808e: 8d59 or a0,a0,a4
8090: 8cae mv s9,a1
8092: e20ff0ef jal ra,76b2 <ntohs>
8096: 6689 lui a3,0x2
8098: 00d577b3 and a5,a0,a3
809c: fecb8a13 addi s4,s7,-20 # 1fec <qdx_port_sock_recv_notify+0x56>
80a0: 46a1 li a3,8
80a2: 02da4a33 div s4,s4,a3
80a6: 008dd483 lhu s1,8(s11)
80aa: 6709 lui a4,0x2
80ac: 177d addi a4,a4,-1
80ae: c63e sw a5,12(sp)
80b0: 00e57933 and s2,a0,a4
80b4: 14b1 addi s1,s1,-20
80b6: 0942 slli s2,s2,0x10
80b8: 04c2 slli s1,s1,0x10
80ba: 01095913 srli s2,s2,0x10
80be: 80c1 srli s1,s1,0x10
80c0: 4401 li s0,0
80c2: 4d51 li s10,20
80c4: cc3a sw a4,24(sp)
80c6: 0a42 slli s4,s4,0x10
80c8: 010a5a13 srli s4,s4,0x10
80cc: 003a1693 slli a3,s4,0x3
80d0: 01069793 slli a5,a3,0x10
80d4: 83c1 srli a5,a5,0x10
80d6: c83e sw a5,16(sp)
80d8: fedb8793 addi a5,s7,-19
80dc: ce3e sw a5,28(sp)
80de: e489 bnez s1,80e8 <ip_frag+0x76>
80e0: 4501 li a0,0
80e2: 6105 addi sp,sp,32
80e4: c3ef806f j 522 <__riscv_restore_12>
80e8: 47e2 lw a5,24(sp)
80ea: 8aa6 mv s5,s1
80ec: 00f97b33 and s6,s2,a5
80f0: 47b2 lw a5,12(sp)
80f2: 0167eb33 or s6,a5,s6
80f6: 47f2 lw a5,28(sp)
80f8: 00f4c663 blt s1,a5,8104 <ip_frag+0x92>
80fc: 4ac2 lw s5,16(sp)
80fe: 6789 lui a5,0x2
8100: 00fb6b33 or s6,s6,a5
8104: 4601 li a2,0
8106: 45d1 li a1,20
8108: 4509 li a0,2
810a: 1d9000ef jal ra,8ae2 <pbuf_alloc>
810e: 89aa mv s3,a0
8110: c939 beqz a0,8166 <ip_frag+0xf4>
8112: 4148 lw a0,4(a0)
8114: 4651 li a2,20
8116: 85e2 mv a1,s8
8118: 5b9040ef jal ra,ced0 <memcpy>
811c: 004da603 lw a2,4(s11)
8120: 0049ab83 lw s7,4(s3)
8124: 966a add a2,a2,s10
8126: 00cda223 sw a2,4(s11)
812a: 00add603 lhu a2,10(s11)
812e: 41a606b3 sub a3,a2,s10
8132: 00dd9523 sh a3,10(s11)
8136: 8d56 mv s10,s5
8138: 040d0963 beqz s10,818a <ip_frag+0x118>
813c: 00add403 lhu s0,10(s11)
8140: 008d7363 bgeu s10,s0,8146 <ip_frag+0xd4>
8144: 846a mv s0,s10
8146: 0442 slli s0,s0,0x10
8148: 8041 srli s0,s0,0x10
814a: e401 bnez s0,8152 <ip_frag+0xe0>
814c: 000dad83 lw s11,0(s11)
8150: b7e5 j 8138 <ip_frag+0xc6>
8152: 4581 li a1,0
8154: 4609 li a2,2
8156: 450d li a0,3
8158: 18b000ef jal ra,8ae2 <pbuf_alloc>
815c: 85aa mv a1,a0
815e: e511 bnez a0,816a <ip_frag+0xf8>
8160: 854e mv a0,s3
8162: 133000ef jal ra,8a94 <pbuf_free>
8166: 557d li a0,-1
8168: bfad j 80e2 <ip_frag+0x70>
816a: 004da603 lw a2,4(s11)
816e: a502 sh s0,8(a0)
8170: a522 sh s0,10(a0)
8172: c150 sw a2,4(a0)
8174: 854e mv a0,s3
8176: 321000ef jal ra,8c96 <pbuf_cat>
817a: 408d06b3 sub a3,s10,s0
817e: 01069d13 slli s10,a3,0x10
8182: 010d5d13 srli s10,s10,0x10
8186: fc0d13e3 bnez s10,814c <ip_frag+0xda>
818a: 855a mv a0,s6
818c: d18ff0ef jal ra,76a4 <htons>
8190: 00ab8323 sb a0,6(s7)
8194: 8121 srli a0,a0,0x8
8196: 00ab83a3 sb a0,7(s7)
819a: 014a8513 addi a0,s5,20
819e: 0542 slli a0,a0,0x10
81a0: 8141 srli a0,a0,0x10
81a2: d02ff0ef jal ra,76a4 <htons>
81a6: 00ab8123 sb a0,2(s7)
81aa: 8121 srli a0,a0,0x8
81ac: 00ab81a3 sb a0,3(s7)
81b0: 45d1 li a1,20
81b2: 000b8523 sb zero,10(s7)
81b6: 000b85a3 sb zero,11(s7)
81ba: 855e mv a0,s7
81bc: 2f8040ef jal ra,c4b4 <inet_chksum>
81c0: 014ca703 lw a4,20(s9)
81c4: 4652 lw a2,20(sp)
81c6: 00ab8523 sb a0,10(s7)
81ca: 8121 srli a0,a0,0x8
81cc: 00ab85a3 sb a0,11(s7)
81d0: 85ce mv a1,s3
81d2: 8566 mv a0,s9
81d4: 9702 jalr a4
81d6: 415484b3 sub s1,s1,s5
81da: 9952 add s2,s2,s4
81dc: 854e mv a0,s3
81de: 04c2 slli s1,s1,0x10
81e0: 0942 slli s2,s2,0x10
81e2: 0b3000ef jal ra,8a94 <pbuf_free>
81e6: 80c1 srli s1,s1,0x10
81e8: 01095913 srli s2,s2,0x10
81ec: 8d22 mv s10,s0
81ee: bdc5 j 80de <ip_frag+0x6c>
000081f0 <dhcp_set_state>:
dhcp_set_state():
81f0: 293c lbu a5,18(a0)
81f2: 00b78963 beq a5,a1,8204 <dhcp_set_state+0x14>
81f6: 2002e7b7 lui a5,0x2002e
81fa: a92c sb a1,18(a0)
81fc: 000509a3 sb zero,19(a0)
8200: b007ac23 sw zero,-1256(a5) # 2002db18 <DHCPCtrl+0x4>
8204: 8082 ret
00008206 <dhcp_option>:
dhcp_option():
8206: 2d5e lhu a5,28(a0)
8208: 4d18 lw a4,24(a0)
820a: 00f706b3 add a3,a4,a5
820e: 0eb68823 sb a1,240(a3) # 20f0 <qdx_port_mutex_unlock+0x6>
8212: 00278693 addi a3,a5,2
8216: 0785 addi a5,a5,1
8218: 07c2 slli a5,a5,0x10
821a: 83c1 srli a5,a5,0x10
821c: ad56 sh a3,28(a0)
821e: 97ba add a5,a5,a4
8220: 0ec78823 sb a2,240(a5)
8224: 8082 ret
00008226 <dhcp_option_byte>:
dhcp_option_byte():
8226: 2d5a lhu a4,28(a0)
8228: 4d1c lw a5,24(a0)
822a: 00170693 addi a3,a4,1 # 2001 <qdx_port_sock_recv_notify+0x6b>
822e: ad56 sh a3,28(a0)
8230: 97ba add a5,a5,a4
8232: 0eb78823 sb a1,240(a5)
8236: 8082 ret
00008238 <dhcp_option_long>:
dhcp_option_long():
8238: 2d5e lhu a5,28(a0)
823a: 4d18 lw a4,24(a0)
823c: 0185d613 srli a2,a1,0x18
8240: 00f706b3 add a3,a4,a5
8244: 0ec68823 sb a2,240(a3)
8248: 00178693 addi a3,a5,1
824c: 06c2 slli a3,a3,0x10
824e: 82c1 srli a3,a3,0x10
8250: 96ba add a3,a3,a4
8252: 0105d613 srli a2,a1,0x10
8256: 0ec68823 sb a2,240(a3)
825a: 00278693 addi a3,a5,2
825e: 06c2 slli a3,a3,0x10
8260: 82c1 srli a3,a3,0x10
8262: 96ba add a3,a3,a4
8264: 0085d613 srli a2,a1,0x8
8268: 0ec68823 sb a2,240(a3)
826c: 00478693 addi a3,a5,4
8270: 078d addi a5,a5,3
8272: 07c2 slli a5,a5,0x10
8274: 83c1 srli a5,a5,0x10
8276: ad56 sh a3,28(a0)
8278: 97ba add a5,a5,a4
827a: 0eb78823 sb a1,240(a5)
827e: 8082 ret
00008280 <dhcp_option_trailer>:
dhcp_option_trailer():
8280: c115 beqz a0,82a4 <dhcp_option_trailer+0x24>
8282: 2d5e lhu a5,28(a0)
8284: 4d18 lw a4,24(a0)
8286: 04300613 li a2,67
828a: 00178693 addi a3,a5,1
828e: ad56 sh a3,28(a0)
8290: 97ba add a5,a5,a4
8292: 56fd li a3,-1
8294: 0ed78823 sb a3,240(a5)
8298: 2d5e lhu a5,28(a0)
829a: 00f67663 bgeu a2,a5,82a6 <dhcp_option_trailer+0x26>
829e: 0037f693 andi a3,a5,3
82a2: e291 bnez a3,82a6 <dhcp_option_trailer+0x26>
82a4: 8082 ret
82a6: 00178693 addi a3,a5,1
82aa: ad56 sh a3,28(a0)
82ac: 97ba add a5,a5,a4
82ae: 0e078823 sb zero,240(a5)
82b2: b7dd j 8298 <dhcp_option_trailer+0x18>
000082b4 <dhcp_create_request>:
dhcp_create_request():
82b4: 18050263 beqz a0,8438 <dhcp_create_request+0x184>
82b8: a5ef82ef jal t0,516 <__riscv_save_0>
82bc: 5104 lw s1,32(a0)
82be: 57dd li a5,-9
82c0: 16048963 beqz s1,8432 <dhcp_create_request+0x17e>
82c4: 892a mv s2,a0
82c6: 4601 li a2,0
82c8: 13400593 li a1,308
82cc: 4501 li a0,0
82ce: 015000ef jal ra,8ae2 <pbuf_alloc>
82d2: c8c8 sw a0,20(s1)
82d4: 872a mv a4,a0
82d6: 57fd li a5,-1
82d8: 14050d63 beqz a0,8432 <dhcp_create_request+0x17e>
82dc: 38bc lbu a5,19(s1)
82de: ef99 bnez a5,82fc <dhcp_create_request+0x48>
82e0: 28bc lbu a5,18(s1)
82e2: 4605 li a2,1
82e4: 00c78c63 beq a5,a2,82fc <dhcp_create_request+0x48>
82e8: 17f1 addi a5,a5,-4
82ea: 0ff7f793 andi a5,a5,255
82ee: 00f67763 bgeu a2,a5,82fc <dhcp_create_request+0x48>
82f2: 8201a783 lw a5,-2016(gp) # 20000060 <DHCPXid>
82f6: 0785 addi a5,a5,1
82f8: 82f1a023 sw a5,-2016(gp) # 20000060 <DHCPXid>
82fc: 4340 lw s0,4(a4)
82fe: 8201a503 lw a0,-2016(gp) # 20000060 <DHCPXid>
8302: 4785 li a5,1
8304: cc80 sw s0,24(s1)
8306: c088 sw a0,0(s1)
8308: a01c sb a5,0(s0)
830a: b01c sb a5,1(s0)
830c: 4799 li a5,6
830e: a03c sb a5,2(s0)
8310: 000401a3 sb zero,3(s0)
8314: bacff0ef jal ra,76c0 <htonl>
8318: 00855793 srli a5,a0,0x8
831c: a048 sb a0,4(s0)
831e: b05c sb a5,5(s0)
8320: 01055793 srli a5,a0,0x10
8324: 8161 srli a0,a0,0x18
8326: a07c sb a5,6(s0)
8328: b068 sb a0,7(s0)
832a: 4c80 lw s0,24(s1)
832c: 4729 li a4,10
832e: 00040423 sb zero,8(s0)
8332: 000404a3 sb zero,9(s0)
8336: 00040523 sb zero,10(s0)
833a: 000405a3 sb zero,11(s0)
833e: 00040623 sb zero,12(s0)
8342: 000406a3 sb zero,13(s0)
8346: 00040723 sb zero,14(s0)
834a: 000407a3 sb zero,15(s0)
834e: 28bc lbu a5,18(s1)
8350: 00e78863 beq a5,a4,8360 <dhcp_create_request+0xac>
8354: 17f1 addi a5,a5,-4
8356: 0ff7f793 andi a5,a5,255
835a: 4705 li a4,1
835c: 00f76e63 bltu a4,a5,8378 <dhcp_create_request+0xc4>
8360: 00494783 lbu a5,4(s2)
8364: a45c sb a5,12(s0)
8366: 00594783 lbu a5,5(s2)
836a: b45c sb a5,13(s0)
836c: 00694783 lbu a5,6(s2)
8370: a47c sb a5,14(s0)
8372: 00794783 lbu a5,7(s2)
8376: b47c sb a5,15(s0)
8378: 00040823 sb zero,16(s0)
837c: 000408a3 sb zero,17(s0)
8380: 00040923 sb zero,18(s0)
8384: 000409a3 sb zero,19(s0)
8388: 00040a23 sb zero,20(s0)
838c: 00040aa3 sb zero,21(s0)
8390: 00040b23 sb zero,22(s0)
8394: 00040ba3 sb zero,23(s0)
8398: 00040c23 sb zero,24(s0)
839c: 00040ca3 sb zero,25(s0)
83a0: 00040d23 sb zero,26(s0)
83a4: 00040da3 sb zero,27(s0)
83a8: 02894583 lbu a1,40(s2)
83ac: 4781 li a5,0
83ae: 4641 li a2,16
83b0: 01079713 slli a4,a5,0x10
83b4: 8341 srli a4,a4,0x10
83b6: 4681 li a3,0
83b8: 00b77663 bgeu a4,a1,83c4 <dhcp_create_request+0x110>
83bc: 00f90733 add a4,s2,a5
83c0: 02974683 lbu a3,41(a4)
83c4: 00f40733 add a4,s0,a5
83c8: af54 sb a3,28(a4)
83ca: 0785 addi a5,a5,1
83cc: fec792e3 bne a5,a2,83b0 <dhcp_create_request+0xfc>
83d0: 02c40713 addi a4,s0,44
83d4: 06c40793 addi a5,s0,108
83d8: 00070023 sb zero,0(a4)
83dc: 0705 addi a4,a4,1
83de: fee79de3 bne a5,a4,83d8 <dhcp_create_request+0x124>
83e2: 0ec40713 addi a4,s0,236
83e6: 00078023 sb zero,0(a5)
83ea: 0785 addi a5,a5,1
83ec: fee79de3 bne a5,a4,83e6 <dhcp_create_request+0x132>
83f0: 63825537 lui a0,0x63825
83f4: 36350513 addi a0,a0,867 # 63825363 <__freertos_irq_stack_top+0x437f5363>
83f8: ac8ff0ef jal ra,76c0 <htonl>
83fc: 00855793 srli a5,a0,0x8
8400: 0ea40623 sb a0,236(s0)
8404: 0ef406a3 sb a5,237(s0)
8408: 4c90 lw a2,24(s1)
840a: 01055793 srli a5,a0,0x10
840e: 8161 srli a0,a0,0x18
8410: 0ef40723 sb a5,238(s0)
8414: 0ea407a3 sb a0,239(s0)
8418: 00049e23 sh zero,28(s1)
841c: 4781 li a5,0
841e: 04400713 li a4,68
8422: 00f606b3 add a3,a2,a5
8426: 0ef68823 sb a5,240(a3)
842a: 0785 addi a5,a5,1
842c: fee79be3 bne a5,a4,8422 <dhcp_create_request+0x16e>
8430: 4781 li a5,0
8432: 853e mv a0,a5
8434: 906f806f j 53a <__riscv_restore_0>
8438: 57d9 li a5,-10
843a: 853e mv a0,a5
843c: 8082 ret
0000843e <dhcp_delete_request>:
dhcp_delete_request():
843e: cd11 beqz a0,845a <dhcp_delete_request+0x1c>
8440: 8d6f82ef jal t0,516 <__riscv_save_0>
8444: 5100 lw s0,32(a0)
8446: c801 beqz s0,8456 <dhcp_delete_request+0x18>
8448: 4848 lw a0,20(s0)
844a: c111 beqz a0,844e <dhcp_delete_request+0x10>
844c: 25a1 jal 8a94 <pbuf_free>
844e: 00042a23 sw zero,20(s0)
8452: 00042c23 sw zero,24(s0)
8456: 8e4f806f j 53a <__riscv_restore_0>
845a: 8082 ret
0000845c <dhcp_arp_reply>:
dhcp_arp_reply():
845c: 18050063 beqz a0,85dc <dhcp_arp_reply+0x180>
8460: 8b6f82ef jal t0,516 <__riscv_save_0>
8464: 5100 lw s0,32(a0)
8466: 16040963 beqz s0,85d8 <dhcp_arp_reply+0x17c>
846a: 2838 lbu a4,18(s0)
846c: 47a1 li a5,8
846e: 16f71563 bne a4,a5,85d8 <dhcp_arp_reply+0x17c>
8472: 3198 lbu a4,1(a1)
8474: 219c lbu a5,0(a1)
8476: 0722 slli a4,a4,0x8
8478: 8f5d or a4,a4,a5
847a: 21bc lbu a5,2(a1)
847c: 07c2 slli a5,a5,0x10
847e: 8f5d or a4,a4,a5
8480: 31bc lbu a5,3(a1)
8482: 07e2 slli a5,a5,0x18
8484: 8fd9 or a5,a5,a4
8486: 5418 lw a4,40(s0)
8488: 14e79863 bne a5,a4,85d8 <dhcp_arp_reply+0x17c>
848c: 84aa mv s1,a0
848e: 45b1 li a1,12
8490: 8522 mv a0,s0
8492: d5fff0ef jal ra,81f0 <dhcp_set_state>
8496: 8526 mv a0,s1
8498: e1dff0ef jal ra,82b4 <dhcp_create_request>
849c: 12051963 bnez a0,85ce <dhcp_arp_reply+0x172>
84a0: 4605 li a2,1
84a2: 03500593 li a1,53
84a6: 8522 mv a0,s0
84a8: d5fff0ef jal ra,8206 <dhcp_option>
84ac: 4591 li a1,4
84ae: 8522 mv a0,s0
84b0: d77ff0ef jal ra,8226 <dhcp_option_byte>
84b4: 4611 li a2,4
84b6: 03200593 li a1,50
84ba: 8522 mv a0,s0
84bc: d4bff0ef jal ra,8206 <dhcp_option>
84c0: 5408 lw a0,40(s0)
84c2: a22ff0ef jal ra,76e4 <ntohl>
84c6: 85aa mv a1,a0
84c8: 8522 mv a0,s0
84ca: d6fff0ef jal ra,8238 <dhcp_option_long>
84ce: 4611 li a2,4
84d0: 03600593 li a1,54
84d4: 8522 mv a0,s0
84d6: d31ff0ef jal ra,8206 <dhcp_option>
84da: 5048 lw a0,36(s0)
84dc: a08ff0ef jal ra,76e4 <ntohl>
84e0: 85aa mv a1,a0
84e2: 8522 mv a0,s0
84e4: d55ff0ef jal ra,8238 <dhcp_option_long>
84e8: 461d li a2,7
84ea: 03d00593 li a1,61
84ee: 8522 mv a0,s0
84f0: d17ff0ef jal ra,8206 <dhcp_option>
84f4: 2c5e lhu a5,28(s0)
84f6: 4c18 lw a4,24(s0)
84f8: 4605 li a2,1
84fa: 8522 mv a0,s0
84fc: 00f706b3 add a3,a4,a5
8500: 0ec68823 sb a2,240(a3)
8504: 00278613 addi a2,a5,2
8508: 0642 slli a2,a2,0x10
850a: 8241 srli a2,a2,0x10
850c: ac52 sh a2,28(s0)
850e: 00178693 addi a3,a5,1
8512: 0294c583 lbu a1,41(s1)
8516: 06c2 slli a3,a3,0x10
8518: 82c1 srli a3,a3,0x10
851a: 96ba add a3,a3,a4
851c: 0eb68823 sb a1,240(a3)
8520: 00378693 addi a3,a5,3
8524: 06c2 slli a3,a3,0x10
8526: 82c1 srli a3,a3,0x10
8528: ac56 sh a3,28(s0)
852a: 02a4c583 lbu a1,42(s1)
852e: 963a add a2,a2,a4
8530: 96ba add a3,a3,a4
8532: 0eb60823 sb a1,240(a2)
8536: 00478613 addi a2,a5,4
853a: 0642 slli a2,a2,0x10
853c: 8241 srli a2,a2,0x10
853e: ac52 sh a2,28(s0)
8540: 02b4c583 lbu a1,43(s1)
8544: 963a add a2,a2,a4
8546: 0eb68823 sb a1,240(a3)
854a: 00578693 addi a3,a5,5
854e: 06c2 slli a3,a3,0x10
8550: 82c1 srli a3,a3,0x10
8552: ac56 sh a3,28(s0)
8554: 02c4c583 lbu a1,44(s1)
8558: 96ba add a3,a3,a4
855a: 0eb60823 sb a1,240(a2)
855e: 00678613 addi a2,a5,6
8562: 0642 slli a2,a2,0x10
8564: 8241 srli a2,a2,0x10
8566: ac52 sh a2,28(s0)
8568: 02d4c583 lbu a1,45(s1)
856c: 079d addi a5,a5,7
856e: 9732 add a4,a4,a2
8570: 0eb68823 sb a1,240(a3)
8574: ac5e sh a5,28(s0)
8576: 02e4c783 lbu a5,46(s1)
857a: 0ef70823 sb a5,240(a4)
857e: d03ff0ef jal ra,8280 <dhcp_option_trailer>
8582: 2c4e lhu a1,28(s0)
8584: 4848 lw a0,20(s0)
8586: 0f058593 addi a1,a1,240
858a: 05c2 slli a1,a1,0x10
858c: 81c1 srli a1,a1,0x10
858e: 2d51 jal 8c22 <pbuf_realloc>
8590: 02844703 lbu a4,40(s0)
8594: 4c1c lw a5,24(s0)
8596: 484c lw a1,20(s0)
8598: 4048 lw a0,4(s0)
859a: a7d8 sb a4,12(a5)
859c: 02944703 lbu a4,41(s0)
85a0: 0044a903 lw s2,4(s1)
85a4: b7d8 sb a4,13(a5)
85a6: 02a44703 lbu a4,42(s0)
85aa: 04300693 li a3,67
85ae: 85018613 addi a2,gp,-1968 # 20000090 <ip_addr_broadcast>
85b2: a7f8 sb a4,14(a5)
85b4: 02b44703 lbu a4,43(s0)
85b8: b7f8 sb a4,15(a5)
85ba: 0004a223 sw zero,4(s1)
85be: 8726 mv a4,s1
85c0: 091030ef jal ra,be50 <udp_sendto_if>
85c4: 8526 mv a0,s1
85c6: 0124a223 sw s2,4(s1)
85ca: e75ff0ef jal ra,843e <dhcp_delete_request>
85ce: 383c lbu a5,19(s0)
85d0: 0785 addi a5,a5,1
85d2: b83c sb a5,19(s0)
85d4: 4785 li a5,1
85d6: ac7e sh a5,30(s0)
85d8: f63f706f j 53a <__riscv_restore_0>
85dc: 8082 ret
000085de <lwip_init>:
lwip_init():
85de: f39f72ef jal t0,516 <__riscv_save_0>
85e2: 2811 jal 85f6 <mem_init>
85e4: 24bd jal 8852 <memp_init>
85e6: 2002e7b7 lui a5,0x2002e
85ea: b747a783 lw a5,-1164(a5) # 2002db74 <DNSInf+0x8>
85ee: c391 beqz a5,85f2 <lwip_init+0x14>
85f0: 9782 jalr a5
85f2: f49f706f j 53a <__riscv_restore_0>
000085f6 <mem_init>:
mem_init():
85f6: 2000a737 lui a4,0x2000a
85fa: 3bf70713 addi a4,a4,959 # 2000a3bf <Mem_Heap_Memory+0x3>
85fe: 9b71 andi a4,a4,-4
8600: 96e1ae23 sw a4,-1668(gp) # 200001bc <ram>
8604: 2002e7b7 lui a5,0x2002e
8608: bd87a783 lw a5,-1064(a5) # 2002dbd8 <WCHCfg+0x8>
860c: 00071123 sh zero,2(a4)
8610: 078d addi a5,a5,3
8612: 9bf1 andi a5,a5,-4
8614: 01079693 slli a3,a5,0x10
8618: 82c1 srli a3,a3,0x10
861a: 97ba add a5,a5,a4
861c: a316 sh a3,0(a4)
861e: 00070223 sb zero,4(a4)
8622: 98f1a023 sw a5,-1664(gp) # 200001c0 <ram_end>
8626: 4605 li a2,1
8628: a3d0 sb a2,4(a5)
862a: a396 sh a3,0(a5)
862c: a3b6 sh a3,2(a5)
862e: 96e1ac23 sw a4,-1672(gp) # 200001b8 <lfree>
8632: 8082 ret
00008634 <mem_free>:
mem_free():
8634: c149 beqz a0,86b6 <mem_free+0x82>
8636: 97c1a783 lw a5,-1668(gp) # 200001bc <ram>
863a: 06f56e63 bltu a0,a5,86b6 <mem_free+0x82>
863e: 9801a583 lw a1,-1664(gp) # 200001c0 <ram_end>
8642: 06b57a63 bgeu a0,a1,86b6 <mem_free+0x82>
8646: 9781a683 lw a3,-1672(gp) # 200001b8 <lfree>
864a: ff850613 addi a2,a0,-8
864e: fe050e23 sb zero,-4(a0)
8652: 97818713 addi a4,gp,-1672 # 200001b8 <lfree>
8656: 00d67363 bgeu a2,a3,865c <mem_free+0x28>
865a: c310 sw a2,0(a4)
865c: ff855683 lhu a3,-8(a0)
8660: 96be add a3,a3,a5
8662: 02d60463 beq a2,a3,868a <mem_free+0x56>
8666: 0046c803 lbu a6,4(a3)
866a: 02081063 bnez a6,868a <mem_free+0x56>
866e: 00d58e63 beq a1,a3,868a <mem_free+0x56>
8672: 430c lw a1,0(a4)
8674: 00b69363 bne a3,a1,867a <mem_free+0x46>
8678: c310 sw a2,0(a4)
867a: 228e lhu a1,0(a3)
867c: feb51c23 sh a1,-8(a0)
8680: 2296 lhu a3,0(a3)
8682: 40f605b3 sub a1,a2,a5
8686: 96be add a3,a3,a5
8688: a2ae sh a1,2(a3)
868a: ffa55583 lhu a1,-6(a0)
868e: 00b786b3 add a3,a5,a1
8692: 02d60263 beq a2,a3,86b6 <mem_free+0x82>
8696: 0046c803 lbu a6,4(a3)
869a: 00081e63 bnez a6,86b6 <mem_free+0x82>
869e: 00072803 lw a6,0(a4)
86a2: 01061363 bne a2,a6,86a8 <mem_free+0x74>
86a6: c314 sw a3,0(a4)
86a8: ff855703 lhu a4,-8(a0)
86ac: a29a sh a4,0(a3)
86ae: ff855703 lhu a4,-8(a0)
86b2: 97ba add a5,a5,a4
86b4: a3ae sh a1,2(a5)
86b6: 8082 ret
000086b8 <mem_realloc>:
mem_realloc():
86b8: 058d addi a1,a1,3
86ba: 05c2 slli a1,a1,0x10
86bc: 81c1 srli a1,a1,0x10
86be: 99f1 andi a1,a1,-4
86c0: 05c2 slli a1,a1,0x10
86c2: 81c1 srli a1,a1,0x10
86c4: 4731 li a4,12
86c6: 87ae mv a5,a1
86c8: 00e5f363 bgeu a1,a4,86ce <mem_realloc+0x16>
86cc: 47b1 li a5,12
86ce: 2002e737 lui a4,0x2002e
86d2: bd872603 lw a2,-1064(a4) # 2002dbd8 <WCHCfg+0x8>
86d6: 07c2 slli a5,a5,0x10
86d8: 83c1 srli a5,a5,0x10
86da: 060d addi a2,a2,3
86dc: 9a71 andi a2,a2,-4
86de: 0af66063 bltu a2,a5,877e <mem_realloc+0xc6>
86e2: 97c1a703 lw a4,-1668(gp) # 200001bc <ram>
86e6: 08e56d63 bltu a0,a4,8780 <mem_realloc+0xc8>
86ea: 9801a683 lw a3,-1664(gp) # 200001c0 <ram_end>
86ee: 08d57963 bgeu a0,a3,8780 <mem_realloc+0xc8>
86f2: ff850693 addi a3,a0,-8
86f6: ff855883 lhu a7,-8(a0)
86fa: 8e99 sub a3,a3,a4
86fc: 06c2 slli a3,a3,0x10
86fe: 82c1 srli a3,a3,0x10
8700: ff888593 addi a1,a7,-8
8704: 8d95 sub a1,a1,a3
8706: 05c2 slli a1,a1,0x10
8708: 81c1 srli a1,a1,0x10
870a: 06f5ea63 bltu a1,a5,877e <mem_realloc+0xc6>
870e: 06f58963 beq a1,a5,8780 <mem_realloc+0xc8>
8712: 01170333 add t1,a4,a7
8716: 00434803 lbu a6,4(t1)
871a: 02081463 bnez a6,8742 <mem_realloc+0x8a>
871e: 00868593 addi a1,a3,8
8722: 97818813 addi a6,gp,-1672 # 200001b8 <lfree>
8726: 97ae add a5,a5,a1
8728: 00082e03 lw t3,0(a6)
872c: 07c2 slli a5,a5,0x10
872e: 83c1 srli a5,a5,0x10
8730: 00035883 lhu a7,0(t1)
8734: 00f705b3 add a1,a4,a5
8738: 026e1663 bne t3,t1,8764 <mem_realloc+0xac>
873c: 00b82023 sw a1,0(a6)
8740: a015 j 8764 <mem_realloc+0xac>
8742: 01478813 addi a6,a5,20
8746: 0305ed63 bltu a1,a6,8780 <mem_realloc+0xc8>
874a: 00868593 addi a1,a3,8
874e: 97ae add a5,a5,a1
8750: 97818813 addi a6,gp,-1672 # 200001b8 <lfree>
8754: 07c2 slli a5,a5,0x10
8756: 00082303 lw t1,0(a6)
875a: 83c1 srli a5,a5,0x10
875c: 00f705b3 add a1,a4,a5
8760: fc65eee3 bltu a1,t1,873c <mem_realloc+0x84>
8764: 01159023 sh a7,0(a1)
8768: a1b6 sh a3,2(a1)
876a: 00058223 sb zero,4(a1)
876e: fef51c23 sh a5,-8(a0)
8772: 2196 lhu a3,0(a1)
8774: 00d60663 beq a2,a3,8780 <mem_realloc+0xc8>
8778: 9736 add a4,a4,a3
877a: a33e sh a5,2(a4)
877c: 8082 ret
877e: 4501 li a0,0
8780: 8082 ret
00008782 <mem_malloc>:
mem_malloc():
8782: c539 beqz a0,87d0 <mem_malloc+0x4e>
8784: 00350713 addi a4,a0,3
8788: 0742 slli a4,a4,0x10
878a: 8341 srli a4,a4,0x10
878c: 9b71 andi a4,a4,-4
878e: 0742 slli a4,a4,0x10
8790: 8341 srli a4,a4,0x10
8792: 46b1 li a3,12
8794: 87ba mv a5,a4
8796: 00d77363 bgeu a4,a3,879c <mem_malloc+0x1a>
879a: 47b1 li a5,12
879c: 2002e737 lui a4,0x2002e
87a0: bd872603 lw a2,-1064(a4) # 2002dbd8 <WCHCfg+0x8>
87a4: 07c2 slli a5,a5,0x10
87a6: 83c1 srli a5,a5,0x10
87a8: 060d addi a2,a2,3
87aa: 9a71 andi a2,a2,-4
87ac: 4501 li a0,0
87ae: 02f66263 bltu a2,a5,87d2 <mem_malloc+0x50>
87b2: 9781a703 lw a4,-1672(gp) # 200001b8 <lfree>
87b6: 97c1ae83 lw t4,-1668(gp) # 200001bc <ram>
87ba: 97818593 addi a1,gp,-1672 # 200001b8 <lfree>
87be: 40f60333 sub t1,a2,a5
87c2: 41d706b3 sub a3,a4,t4
87c6: 06c2 slli a3,a3,0x10
87c8: 82c1 srli a3,a3,0x10
87ca: 5e61 li t3,-8
87cc: 0066e463 bltu a3,t1,87d4 <mem_malloc+0x52>
87d0: 4501 li a0,0
87d2: 8082 ret
87d4: 00de8533 add a0,t4,a3
87d8: 00454803 lbu a6,4(a0)
87dc: 00055883 lhu a7,0(a0)
87e0: 06081763 bnez a6,884e <mem_malloc+0xcc>
87e4: 40de0833 sub a6,t3,a3
87e8: 9846 add a6,a6,a7
87ea: 06f86263 bltu a6,a5,884e <mem_malloc+0xcc>
87ee: 01478313 addi t1,a5,20
87f2: 04686263 bltu a6,t1,8836 <mem_malloc+0xb4>
87f6: 07a1 addi a5,a5,8
87f8: 97b6 add a5,a5,a3
87fa: 07c2 slli a5,a5,0x10
87fc: 83c1 srli a5,a5,0x10
87fe: 00fe8833 add a6,t4,a5
8802: 01181023 sh a7,0(a6)
8806: 00d81123 sh a3,2(a6)
880a: 00080223 sb zero,4(a6)
880e: 4685 li a3,1
8810: a11e sh a5,0(a0)
8812: a154 sb a3,4(a0)
8814: 00085683 lhu a3,0(a6)
8818: 00d60463 beq a2,a3,8820 <mem_malloc+0x9e>
881c: 96f6 add a3,a3,t4
881e: a2be sh a5,2(a3)
8820: 00a71963 bne a4,a0,8832 <mem_malloc+0xb0>
8824: 9801a683 lw a3,-1664(gp) # 200001c0 <ram_end>
8828: 4781 li a5,0
882a: 2350 lbu a2,4(a4)
882c: ee01 bnez a2,8844 <mem_malloc+0xc2>
882e: c391 beqz a5,8832 <mem_malloc+0xb0>
8830: c198 sw a4,0(a1)
8832: 0521 addi a0,a0,8
8834: 8082 ret
8836: 4785 li a5,1
8838: a15c sb a5,4(a0)
883a: b7dd j 8820 <mem_malloc+0x9e>
883c: 231a lhu a4,0(a4)
883e: 4785 li a5,1
8840: 9776 add a4,a4,t4
8842: b7e5 j 882a <mem_malloc+0xa8>
8844: fee69ce3 bne a3,a4,883c <mem_malloc+0xba>
8848: d7ed beqz a5,8832 <mem_malloc+0xb0>
884a: c194 sw a3,0(a1)
884c: b7dd j 8832 <mem_malloc+0xb0>
884e: 86c6 mv a3,a7
8850: bfb5 j 87cc <mem_malloc+0x4a>
00008852 <memp_init>:
memp_init():
8852: 8281a583 lw a1,-2008(gp) # 20000068 <memp_num>
8856: 82c1a683 lw a3,-2004(gp) # 2000006c <memp_sizes>
885a: 2000c7b7 lui a5,0x2000c
885e: 23378793 addi a5,a5,563 # 2000c233 <Memp_Memory+0x3>
8862: 2002e737 lui a4,0x2002e
8866: 9bf1 andi a5,a5,-4
8868: c3470713 addi a4,a4,-972 # 2002dc34 <memp_tab>
886c: 01068513 addi a0,a3,16
8870: 0005d803 lhu a6,0(a1)
8874: 00072023 sw zero,0(a4)
8878: 4601 li a2,0
887a: 00c81863 bne a6,a2,888a <memp_init+0x38>
887e: 0689 addi a3,a3,2
8880: 0711 addi a4,a4,4
8882: 0589 addi a1,a1,2
8884: fea696e3 bne a3,a0,8870 <memp_init+0x1e>
8888: 8082 ret
888a: 00072883 lw a7,0(a4)
888e: 0605 addi a2,a2,1
8890: 0642 slli a2,a2,0x10
8892: 0117a023 sw a7,0(a5)
8896: 0006d883 lhu a7,0(a3)
889a: c31c sw a5,0(a4)
889c: 8241 srli a2,a2,0x10
889e: 97c6 add a5,a5,a7
88a0: bfe9 j 887a <memp_init+0x28>
000088a2 <memp_malloc>:
memp_malloc():
88a2: 479d li a5,7
88a4: 00a7ed63 bltu a5,a0,88be <memp_malloc+0x1c>
88a8: 2002e7b7 lui a5,0x2002e
88ac: 050a slli a0,a0,0x2
88ae: c3478793 addi a5,a5,-972 # 2002dc34 <memp_tab>
88b2: 97aa add a5,a5,a0
88b4: 4388 lw a0,0(a5)
88b6: c509 beqz a0,88c0 <memp_malloc+0x1e>
88b8: 4118 lw a4,0(a0)
88ba: c398 sw a4,0(a5)
88bc: 8082 ret
88be: 4501 li a0,0
88c0: 8082 ret
000088c2 <memp_free>:
memp_free():
88c2: c999 beqz a1,88d8 <memp_free+0x16>
88c4: 00251793 slli a5,a0,0x2
88c8: 2002e537 lui a0,0x2002e
88cc: c3450513 addi a0,a0,-972 # 2002dc34 <memp_tab>
88d0: 953e add a0,a0,a5
88d2: 411c lw a5,0(a0)
88d4: c19c sw a5,0(a1)
88d6: c10c sw a1,0(a0)
88d8: 8082 ret
000088da <netif_set_ipaddr>:
netif_set_ipaddr():
88da: c23f72ef jal t0,4fc <__riscv_save_4>
88de: 3198 lbu a4,1(a1)
88e0: 219c lbu a5,0(a1)
88e2: 84aa mv s1,a0
88e4: 0722 slli a4,a4,0x8
88e6: 8f5d or a4,a4,a5
88e8: 21bc lbu a5,2(a1)
88ea: 842e mv s0,a1
88ec: 07c2 slli a5,a5,0x10
88ee: 8f5d or a4,a4,a5
88f0: 31bc lbu a5,3(a1)
88f2: 07e2 slli a5,a5,0x18
88f4: 8fd9 or a5,a5,a4
88f6: 4158 lw a4,4(a0)
88f8: 00e79f63 bne a5,a4,8916 <netif_set_ipaddr+0x3c>
88fc: 3018 lbu a4,1(s0)
88fe: 201c lbu a5,0(s0)
8900: 0722 slli a4,a4,0x8
8902: 8f5d or a4,a4,a5
8904: 203c lbu a5,2(s0)
8906: 07c2 slli a5,a5,0x10
8908: 8f5d or a4,a4,a5
890a: 303c lbu a5,3(s0)
890c: 07e2 slli a5,a5,0x18
890e: 8fd9 or a5,a5,a4
8910: c0dc sw a5,4(s1)
8912: c1ff706f j 530 <__riscv_restore_4>
8916: 9941a503 lw a0,-1644(gp) # 200001d4 <tcp_active_pcbs>
891a: 4901 li s2,0
891c: 06400993 li s3,100
8920: c105 beqz a0,8940 <netif_set_ipaddr+0x66>
8922: 4118 lw a4,0(a0)
8924: 40dc lw a5,4(s1)
8926: 00c52a03 lw s4,12(a0)
892a: 04f71163 bne a4,a5,896c <netif_set_ipaddr+0x92>
892e: 4585 li a1,1
8930: 5ad000ef jal ra,96dc <tcp_abandon>
8934: 00190793 addi a5,s2,1
8938: 0ff7f793 andi a5,a5,255
893c: 0329f763 bgeu s3,s2,896a <netif_set_ipaddr+0x90>
8940: 99c1a783 lw a5,-1636(gp) # 200001dc <tcp_listen_pcbs>
8944: dfc5 beqz a5,88fc <netif_set_ipaddr+0x22>
8946: 4398 lw a4,0(a5)
8948: cf19 beqz a4,8966 <netif_set_ipaddr+0x8c>
894a: 40d4 lw a3,4(s1)
894c: 00d71d63 bne a4,a3,8966 <netif_set_ipaddr+0x8c>
8950: 3014 lbu a3,1(s0)
8952: 2018 lbu a4,0(s0)
8954: 06a2 slli a3,a3,0x8
8956: 8ed9 or a3,a3,a4
8958: 2038 lbu a4,2(s0)
895a: 0742 slli a4,a4,0x10
895c: 8ed9 or a3,a3,a4
895e: 3038 lbu a4,3(s0)
8960: 0762 slli a4,a4,0x18
8962: 8f55 or a4,a4,a3
8964: c398 sw a4,0(a5)
8966: 47dc lw a5,12(a5)
8968: bff1 j 8944 <netif_set_ipaddr+0x6a>
896a: 893e mv s2,a5
896c: 8552 mv a0,s4
896e: bf4d j 8920 <netif_set_ipaddr+0x46>
00008970 <netif_set_addr>:
netif_set_addr():
8970: ba7f72ef jal t0,516 <__riscv_save_0>
8974: 1141 addi sp,sp,-16
8976: c632 sw a2,12(sp)
8978: c436 sw a3,8(sp)
897a: 842a mv s0,a0
897c: f5fff0ef jal ra,88da <netif_set_ipaddr>
8980: 4632 lw a2,12(sp)
8982: 46a2 lw a3,8(sp)
8984: 4781 li a5,0
8986: ca19 beqz a2,899c <netif_set_addr+0x2c>
8988: 3218 lbu a4,1(a2)
898a: 221c lbu a5,0(a2)
898c: 0722 slli a4,a4,0x8
898e: 8f5d or a4,a4,a5
8990: 223c lbu a5,2(a2)
8992: 07c2 slli a5,a5,0x10
8994: 8f5d or a4,a4,a5
8996: 323c lbu a5,3(a2)
8998: 07e2 slli a5,a5,0x18
899a: 8fd9 or a5,a5,a4
899c: c41c sw a5,8(s0)
899e: 4781 li a5,0
89a0: ca99 beqz a3,89b6 <netif_set_addr+0x46>
89a2: 3298 lbu a4,1(a3)
89a4: 229c lbu a5,0(a3)
89a6: 0722 slli a4,a4,0x8
89a8: 8f5d or a4,a4,a5
89aa: 22bc lbu a5,2(a3)
89ac: 07c2 slli a5,a5,0x10
89ae: 8f5d or a4,a4,a5
89b0: 32bc lbu a5,3(a3)
89b2: 07e2 slli a5,a5,0x18
89b4: 8fd9 or a5,a5,a4
89b6: c45c sw a5,12(s0)
89b8: 0141 addi sp,sp,16
89ba: b81f706f j 53a <__riscv_restore_0>
000089be <netif_add>:
netif_add():
89be: b59f72ef jal t0,516 <__riscv_save_0>
89c2: cd58 sw a4,28(a0)
89c4: 98c18713 addi a4,gp,-1652 # 200001cc <netifnum.2482>
89c8: 00074883 lbu a7,0(a4)
89cc: 1141 addi sp,sp,-16
89ce: 00052223 sw zero,4(a0)
89d2: 00052423 sw zero,8(a0)
89d6: 00052623 sw zero,12(a0)
89da: 02050923 sb zero,50(a0)
89de: 02052023 sw zero,32(a0)
89e2: 00188313 addi t1,a7,1
89e6: 03150aa3 sb a7,53(a0)
89ea: 01052823 sw a6,16(a0)
89ee: 842a mv s0,a0
89f0: c63e sw a5,12(sp)
89f2: 00670023 sb t1,0(a4)
89f6: f7bff0ef jal ra,8970 <netif_set_addr>
89fa: 47b2 lw a5,12(sp)
89fc: 8522 mv a0,s0
89fe: 9782 jalr a5
8a00: e911 bnez a0,8a14 <netif_add+0x56>
8a02: 98818793 addi a5,gp,-1656 # 200001c8 <netif_list>
8a06: 4398 lw a4,0(a5)
8a08: c018 sw a4,0(s0)
8a0a: c380 sw s0,0(a5)
8a0c: 8522 mv a0,s0
8a0e: 0141 addi sp,sp,16
8a10: b2bf706f j 53a <__riscv_restore_0>
8a14: 4401 li s0,0
8a16: bfdd j 8a0c <netif_add+0x4e>
00008a18 <netif_set_default>:
netif_set_default():
8a18: 98a1a223 sw a0,-1660(gp) # 200001c4 <netif_default>
8a1c: 8082 ret
00008a1e <netif_is_up>:
netif_is_up():
8a1e: 03254503 lbu a0,50(a0)
8a22: 8905 andi a0,a0,1
8a24: 8082 ret
00008a26 <pbuf_header>:
pbuf_header():
8a26: 87aa mv a5,a0
8a28: 4501 li a0,0
8a2a: c5a5 beqz a1,8a92 <pbuf_header+0x6c>
8a2c: c3bd beqz a5,8a92 <pbuf_header+0x6c>
8a2e: 01059613 slli a2,a1,0x10
8a32: 8241 srli a2,a2,0x10
8a34: 8832 mv a6,a2
8a36: 0005db63 bgez a1,8a4c <pbuf_header+0x26>
8a3a: 40c00833 neg a6,a2
8a3e: 27ba lhu a4,10(a5)
8a40: 0842 slli a6,a6,0x10
8a42: 01085813 srli a6,a6,0x10
8a46: 4505 li a0,1
8a48: 05076563 bltu a4,a6,8a92 <pbuf_header+0x6c>
8a4c: 27d4 lbu a3,12(a5)
8a4e: 43d8 lw a4,4(a5)
8a50: c681 beqz a3,8a58 <pbuf_header+0x32>
8a52: 450d li a0,3
8a54: 02a69163 bne a3,a0,8a76 <pbuf_header+0x50>
8a58: 8f0d sub a4,a4,a1
8a5a: 01078693 addi a3,a5,16
8a5e: 4505 li a0,1
8a60: 02d76963 bltu a4,a3,8a92 <pbuf_header+0x6c>
8a64: c3d8 sw a4,4(a5)
8a66: 27ba lhu a4,10(a5)
8a68: 4501 li a0,0
8a6a: 9732 add a4,a4,a2
8a6c: a7ba sh a4,10(a5)
8a6e: 279a lhu a4,8(a5)
8a70: 963a add a2,a2,a4
8a72: a792 sh a2,8(a5)
8a74: 8082 ret
8a76: 16fd addi a3,a3,-1
8a78: 06c2 slli a3,a3,0x10
8a7a: 82c1 srli a3,a3,0x10
8a7c: 4885 li a7,1
8a7e: 4505 li a0,1
8a80: 00d8e963 bltu a7,a3,8a92 <pbuf_header+0x6c>
8a84: 0005d763 bgez a1,8a92 <pbuf_header+0x6c>
8a88: 27b6 lhu a3,10(a5)
8a8a: 0106e463 bltu a3,a6,8a92 <pbuf_header+0x6c>
8a8e: 8f0d sub a4,a4,a1
8a90: bfd1 j 8a64 <pbuf_header+0x3e>
8a92: 8082 ret
00008a94 <pbuf_free>:
pbuf_free():
8a94: a69f72ef jal t0,4fc <__riscv_save_4>
8a98: 4401 li s0,0
8a9a: cd0d beqz a0,8ad4 <pbuf_free+0x40>
8a9c: 85aa mv a1,a0
8a9e: 4401 li s0,0
8aa0: 490d li s2,3
8aa2: 4985 li s3,1
8aa4: 25fe lhu a5,14(a1)
8aa6: 17fd addi a5,a5,-1
8aa8: 07c2 slli a5,a5,0x10
8aaa: 83c1 srli a5,a5,0x10
8aac: a5fe sh a5,14(a1)
8aae: e39d bnez a5,8ad4 <pbuf_free+0x40>
8ab0: 25dc lbu a5,12(a1)
8ab2: 4184 lw s1,0(a1)
8ab4: 451d li a0,7
8ab6: 01278863 beq a5,s2,8ac6 <pbuf_free+0x32>
8aba: 17fd addi a5,a5,-1
8abc: 07c2 slli a5,a5,0x10
8abe: 83c1 srli a5,a5,0x10
8ac0: 00f9ed63 bltu s3,a5,8ada <pbuf_free+0x46>
8ac4: 4519 li a0,6
8ac6: dfdff0ef jal ra,88c2 <memp_free>
8aca: 0405 addi s0,s0,1
8acc: 0ff47413 andi s0,s0,255
8ad0: 85a6 mv a1,s1
8ad2: f8e9 bnez s1,8aa4 <pbuf_free+0x10>
8ad4: 8522 mv a0,s0
8ad6: a5bf706f j 530 <__riscv_restore_4>
8ada: 852e mv a0,a1
8adc: b59ff0ef jal ra,8634 <mem_free>
8ae0: b7ed j 8aca <pbuf_free+0x36>
00008ae2 <pbuf_alloc>:
pbuf_alloc():
8ae2: a1bf72ef jal t0,4fc <__riscv_save_4>
8ae6: 4785 li a5,1
8ae8: 00f50d63 beq a0,a5,8b02 <pbuf_alloc+0x20>
8aec: c531 beqz a0,8b38 <pbuf_alloc+0x56>
8aee: 4789 li a5,2
8af0: 04f50663 beq a0,a5,8b3c <pbuf_alloc+0x5a>
8af4: 478d li a5,3
8af6: 04f50563 beq a0,a5,8b40 <pbuf_alloc+0x5e>
8afa: 4401 li s0,0
8afc: 8522 mv a0,s0
8afe: a33f706f j 530 <__riscv_restore_4>
8b02: 4481 li s1,0
8b04: 04d1 addi s1,s1,20
8b06: 04b9 addi s1,s1,14
8b08: 04c2 slli s1,s1,0x10
8b0a: 80c1 srli s1,s1,0x10
8b0c: 4789 li a5,2
8b0e: 89b2 mv s3,a2
8b10: 892e mv s2,a1
8b12: 02c7e963 bltu a5,a2,8b44 <pbuf_alloc+0x62>
8b16: ca79 beqz a2,8bec <pbuf_alloc+0x10a>
8b18: 4519 li a0,6
8b1a: d89ff0ef jal ra,88a2 <memp_malloc>
8b1e: 842a mv s0,a0
8b20: dd69 beqz a0,8afa <pbuf_alloc+0x18>
8b22: 00052223 sw zero,4(a0)
8b26: 01251423 sh s2,8(a0)
8b2a: 01251523 sh s2,10(a0)
8b2e: 00052023 sw zero,0(a0)
8b32: 01350623 sb s3,12(a0)
8b36: a0b5 j 8ba2 <pbuf_alloc+0xc0>
8b38: 44d1 li s1,20
8b3a: b7e9 j 8b04 <pbuf_alloc+0x22>
8b3c: 4481 li s1,0
8b3e: b7e1 j 8b06 <pbuf_alloc+0x24>
8b40: 4481 li s1,0
8b42: b7e9 j 8b0c <pbuf_alloc+0x2a>
8b44: 478d li a5,3
8b46: 4401 li s0,0
8b48: faf61ae3 bne a2,a5,8afc <pbuf_alloc+0x1a>
8b4c: 451d li a0,7
8b4e: d55ff0ef jal ra,88a2 <memp_malloc>
8b52: 842a mv s0,a0
8b54: d15d beqz a0,8afa <pbuf_alloc+0x18>
8b56: 009507b3 add a5,a0,s1
8b5a: 07cd addi a5,a5,19
8b5c: 9bf1 andi a5,a5,-4
8b5e: 2002e737 lui a4,0x2002e
8b62: c15c sw a5,4(a0)
8b64: bd070793 addi a5,a4,-1072 # 2002dbd0 <WCHCfg>
8b68: 43dc lw a5,4(a5)
8b6a: 048d addi s1,s1,3
8b6c: 98f1 andi s1,s1,-4
8b6e: 03978793 addi a5,a5,57
8b72: 9bf1 andi a5,a5,-4
8b74: 01350623 sb s3,12(a0)
8b78: 00052023 sw zero,0(a0)
8b7c: 01251423 sh s2,8(a0)
8b80: 409784b3 sub s1,a5,s1
8b84: bd070993 addi s3,a4,-1072
8b88: 00997363 bgeu s2,s1,8b8e <pbuf_alloc+0xac>
8b8c: 84ca mv s1,s2
8b8e: 4785 li a5,1
8b90: a426 sh s1,10(s0)
8b92: a47e sh a5,14(s0)
8b94: 409904b3 sub s1,s2,s1
8b98: 4a0d li s4,3
8b9a: 8922 mv s2,s0
8b9c: 4a85 li s5,1
8b9e: 00904763 bgtz s1,8bac <pbuf_alloc+0xca>
8ba2: 4785 li a5,1
8ba4: a47e sh a5,14(s0)
8ba6: 000406a3 sb zero,13(s0)
8baa: bf89 j 8afc <pbuf_alloc+0x1a>
8bac: 451d li a0,7
8bae: cf5ff0ef jal ra,88a2 <memp_malloc>
8bb2: e509 bnez a0,8bbc <pbuf_alloc+0xda>
8bb4: 8522 mv a0,s0
8bb6: edfff0ef jal ra,8a94 <pbuf_free>
8bba: b781 j 8afa <pbuf_alloc+0x18>
8bbc: 0049a783 lw a5,4(s3)
8bc0: 01451623 sh s4,12(a0)
8bc4: 00052023 sw zero,0(a0)
8bc8: 00a92023 sw a0,0(s2)
8bcc: 03978793 addi a5,a5,57
8bd0: a506 sh s1,8(a0)
8bd2: 9bf1 andi a5,a5,-4
8bd4: 00f4f363 bgeu s1,a5,8bda <pbuf_alloc+0xf8>
8bd8: 87a6 mv a5,s1
8bda: 01050713 addi a4,a0,16
8bde: a53e sh a5,10(a0)
8be0: c158 sw a4,4(a0)
8be2: 01551723 sh s5,14(a0)
8be6: 8c9d sub s1,s1,a5
8be8: 892a mv s2,a0
8bea: bf55 j 8b9e <pbuf_alloc+0xbc>
8bec: 00358793 addi a5,a1,3
8bf0: 01348513 addi a0,s1,19
8bf4: 9bf1 andi a5,a5,-4
8bf6: 9971 andi a0,a0,-4
8bf8: 953e add a0,a0,a5
8bfa: 0542 slli a0,a0,0x10
8bfc: 8141 srli a0,a0,0x10
8bfe: b85ff0ef jal ra,8782 <mem_malloc>
8c02: 842a mv s0,a0
8c04: ee050be3 beqz a0,8afa <pbuf_alloc+0x18>
8c08: 94aa add s1,s1,a0
8c0a: 04cd addi s1,s1,19
8c0c: 98f1 andi s1,s1,-4
8c0e: c144 sw s1,4(a0)
8c10: 01251423 sh s2,8(a0)
8c14: 01251523 sh s2,10(a0)
8c18: 00052023 sw zero,0(a0)
8c1c: 00050623 sb zero,12(a0)
8c20: b749 j 8ba2 <pbuf_alloc+0xc0>
00008c22 <pbuf_realloc>:
pbuf_realloc():
8c22: 251e lhu a5,8(a0)
8c24: 04f5fa63 bgeu a1,a5,8c78 <pbuf_realloc+0x56>
8c28: 8eff72ef jal t0,516 <__riscv_save_0>
8c2c: 842a mv s0,a0
8c2e: 84ae mv s1,a1
8c30: 40f587b3 sub a5,a1,a5
8c34: 242e lhu a1,10(s0)
8c36: 0295e963 bltu a1,s1,8c68 <pbuf_realloc+0x46>
8c3a: 245c lbu a5,12(s0)
8c3c: ef81 bnez a5,8c54 <pbuf_realloc+0x32>
8c3e: 00958b63 beq a1,s1,8c54 <pbuf_realloc+0x32>
8c42: 404c lw a1,4(s0)
8c44: 8522 mv a0,s0
8c46: 8d81 sub a1,a1,s0
8c48: 95a6 add a1,a1,s1
8c4a: 05c2 slli a1,a1,0x10
8c4c: 81c1 srli a1,a1,0x10
8c4e: a6bff0ef jal ra,86b8 <mem_realloc>
8c52: 842a mv s0,a0
8c54: 4008 lw a0,0(s0)
8c56: a426 sh s1,10(s0)
8c58: a406 sh s1,8(s0)
8c5a: c119 beqz a0,8c60 <pbuf_realloc+0x3e>
8c5c: e39ff0ef jal ra,8a94 <pbuf_free>
8c60: 00042023 sw zero,0(s0)
8c64: 8d7f706f j 53a <__riscv_restore_0>
8c68: 241a lhu a4,8(s0)
8c6a: 8c8d sub s1,s1,a1
8c6c: 04c2 slli s1,s1,0x10
8c6e: 973e add a4,a4,a5
8c70: a41a sh a4,8(s0)
8c72: 80c1 srli s1,s1,0x10
8c74: 4000 lw s0,0(s0)
8c76: bf7d j 8c34 <pbuf_realloc+0x12>
8c78: 8082 ret
00008c7a <pbuf_clen>:
pbuf_clen():
8c7a: 4781 li a5,0
8c7c: e119 bnez a0,8c82 <pbuf_clen+0x8>
8c7e: 853e mv a0,a5
8c80: 8082 ret
8c82: 0785 addi a5,a5,1
8c84: 0ff7f793 andi a5,a5,255
8c88: 4108 lw a0,0(a0)
8c8a: bfcd j 8c7c <pbuf_clen+0x2>
00008c8c <pbuf_ref>:
pbuf_ref():
8c8c: c501 beqz a0,8c94 <pbuf_ref+0x8>
8c8e: 257e lhu a5,14(a0)
8c90: 0785 addi a5,a5,1
8c92: a57e sh a5,14(a0)
8c94: 8082 ret
00008c96 <pbuf_cat>:
pbuf_cat():
8c96: cd09 beqz a0,8cb0 <pbuf_cat+0x1a>
8c98: e199 bnez a1,8c9e <pbuf_cat+0x8>
8c9a: 8082 ret
8c9c: 853a mv a0,a4
8c9e: 259e lhu a5,8(a1)
8ca0: 2516 lhu a3,8(a0)
8ca2: 4118 lw a4,0(a0)
8ca4: 97b6 add a5,a5,a3
8ca6: 07c2 slli a5,a5,0x10
8ca8: 83c1 srli a5,a5,0x10
8caa: a51e sh a5,8(a0)
8cac: fb65 bnez a4,8c9c <pbuf_cat+0x6>
8cae: c10c sw a1,0(a0)
8cb0: 8082 ret
00008cb2 <pbuf_chain>:
pbuf_chain():
8cb2: 865f72ef jal t0,516 <__riscv_save_0>
8cb6: 842e mv s0,a1
8cb8: fdfff0ef jal ra,8c96 <pbuf_cat>
8cbc: 8522 mv a0,s0
8cbe: fcfff0ef jal ra,8c8c <pbuf_ref>
8cc2: 879f706f j 53a <__riscv_restore_0>
00008cc6 <pbuf_copy>:
pbuf_copy():
8cc6: cd3d beqz a0,8d44 <pbuf_copy+0x7e>
8cc8: 835f72ef jal t0,4fc <__riscv_save_4>
8ccc: 842a mv s0,a0
8cce: 84ae mv s1,a1
8cd0: 5559 li a0,-10
8cd2: c5ad beqz a1,8d3c <pbuf_copy+0x76>
8cd4: 241a lhu a4,8(s0)
8cd6: 259e lhu a5,8(a1)
8cd8: 06f76263 bltu a4,a5,8d3c <pbuf_copy+0x76>
8cdc: 4901 li s2,0
8cde: 4a01 li s4,0
8ce0: 00a45983 lhu s3,10(s0)
8ce4: 24be lhu a5,10(s1)
8ce6: 414989b3 sub s3,s3,s4
8cea: 412787b3 sub a5,a5,s2
8cee: 04f9c963 blt s3,a5,8d40 <pbuf_copy+0x7a>
8cf2: 01079993 slli s3,a5,0x10
8cf6: 4048 lw a0,4(s0)
8cf8: 40cc lw a1,4(s1)
8cfa: 0109d993 srli s3,s3,0x10
8cfe: 9552 add a0,a0,s4
8d00: 95ca add a1,a1,s2
8d02: 864e mv a2,s3
8d04: 1cc040ef jal ra,ced0 <memcpy>
8d08: 9a4e add s4,s4,s3
8d0a: 243e lhu a5,10(s0)
8d0c: 0a42 slli s4,s4,0x10
8d0e: 994e add s2,s2,s3
8d10: 0942 slli s2,s2,0x10
8d12: 010a5a13 srli s4,s4,0x10
8d16: 01095913 srli s2,s2,0x10
8d1a: 01479463 bne a5,s4,8d22 <pbuf_copy+0x5c>
8d1e: 4000 lw s0,0(s0)
8d20: 4a01 li s4,0
8d22: 24be lhu a5,10(s1)
8d24: 00f96563 bltu s2,a5,8d2e <pbuf_copy+0x68>
8d28: 4084 lw s1,0(s1)
8d2a: cc99 beqz s1,8d48 <pbuf_copy+0x82>
8d2c: 4901 li s2,0
8d2e: 24ba lhu a4,10(s1)
8d30: 249e lhu a5,8(s1)
8d32: 02f71663 bne a4,a5,8d5e <pbuf_copy+0x98>
8d36: 409c lw a5,0(s1)
8d38: c39d beqz a5,8d5e <pbuf_copy+0x98>
8d3a: 555d li a0,-9
8d3c: ff4f706f j 530 <__riscv_restore_4>
8d40: 09c2 slli s3,s3,0x10
8d42: bf55 j 8cf6 <pbuf_copy+0x30>
8d44: 5559 li a0,-10
8d46: 8082 ret
8d48: c809 beqz s0,8d5a <pbuf_copy+0x94>
8d4a: 4901 li s2,0
8d4c: 243a lhu a4,10(s0)
8d4e: 241e lhu a5,8(s0)
8d50: 00f71463 bne a4,a5,8d58 <pbuf_copy+0x92>
8d54: 401c lw a5,0(s0)
8d56: f3f5 bnez a5,8d3a <pbuf_copy+0x74>
8d58: f4c1 bnez s1,8ce0 <pbuf_copy+0x1a>
8d5a: 4501 li a0,0
8d5c: b7c5 j 8d3c <pbuf_copy+0x76>
8d5e: f47d bnez s0,8d4c <pbuf_copy+0x86>
8d60: b741 j 8ce0 <pbuf_copy+0x1a>
00008d62 <raw_input>:
raw_input():
8d62: f9af72ef jal t0,4fc <__riscv_save_4>
8d66: 00452903 lw s2,4(a0)
8d6a: 89aa mv s3,a0
8d6c: 00994783 lbu a5,9(s2)
8d70: 00894503 lbu a0,8(s2)
8d74: 4a01 li s4,0
8d76: 07a2 slli a5,a5,0x8
8d78: 8d5d or a0,a0,a5
8d7a: 939fe0ef jal ra,76b2 <ntohs>
8d7e: 0ff57a93 andi s5,a0,255
8d82: 9901a403 lw s0,-1648(gp) # 200001d0 <raw_pcbs>
8d86: 0931 addi s2,s2,12
8d88: 99018493 addi s1,gp,-1648 # 200001d0 <raw_pcbs>
8d8c: e401 bnez s0,8d94 <raw_input+0x32>
8d8e: 4501 li a0,0
8d90: fa0f706f j 530 <__riscv_restore_4>
8d94: 281c lbu a5,16(s0)
8d96: 4501 li a0,0
8d98: 03579463 bne a5,s5,8dc0 <raw_input+0x5e>
8d9c: 485c lw a5,20(s0)
8d9e: c38d beqz a5,8dc0 <raw_input+0x5e>
8da0: 4c08 lw a0,24(s0)
8da2: 86ca mv a3,s2
8da4: 864e mv a2,s3
8da6: 85a2 mv a1,s0
8da8: 9782 jalr a5
8daa: c919 beqz a0,8dc0 <raw_input+0x5e>
8dac: 000a0863 beqz s4,8dbc <raw_input+0x5a>
8db0: 445c lw a5,12(s0)
8db2: 00fa2623 sw a5,12(s4)
8db6: 409c lw a5,0(s1)
8db8: c080 sw s0,0(s1)
8dba: c45c sw a5,12(s0)
8dbc: 4505 li a0,1
8dbe: 4981 li s3,0
8dc0: 445c lw a5,12(s0)
8dc2: 8a22 mv s4,s0
8dc4: f571 bnez a0,8d90 <raw_input+0x2e>
8dc6: 843e mv s0,a5
8dc8: b7d1 j 8d8c <raw_input+0x2a>
00008dca <raw_bind>:
raw_bind():
8dca: 4781 li a5,0
8dcc: c999 beqz a1,8de2 <raw_bind+0x18>
8dce: 3198 lbu a4,1(a1)
8dd0: 219c lbu a5,0(a1)
8dd2: 0722 slli a4,a4,0x8
8dd4: 8f5d or a4,a4,a5
8dd6: 21bc lbu a5,2(a1)
8dd8: 07c2 slli a5,a5,0x10
8dda: 8f5d or a4,a4,a5
8ddc: 31bc lbu a5,3(a1)
8dde: 07e2 slli a5,a5,0x18
8de0: 8fd9 or a5,a5,a4
8de2: c11c sw a5,0(a0)
8de4: 4501 li a0,0
8de6: 8082 ret
00008de8 <raw_connect>:
raw_connect():
8de8: 4781 li a5,0
8dea: c999 beqz a1,8e00 <raw_connect+0x18>
8dec: 3198 lbu a4,1(a1)
8dee: 219c lbu a5,0(a1)
8df0: 0722 slli a4,a4,0x8
8df2: 8f5d or a4,a4,a5
8df4: 21bc lbu a5,2(a1)
8df6: 07c2 slli a5,a5,0x10
8df8: 8f5d or a4,a4,a5
8dfa: 31bc lbu a5,3(a1)
8dfc: 07e2 slli a5,a5,0x18
8dfe: 8fd9 or a5,a5,a4
8e00: c15c sw a5,4(a0)
8e02: 4501 li a0,0
8e04: 8082 ret
00008e06 <raw_recv>:
raw_recv():
8e06: c94c sw a1,20(a0)
8e08: cd10 sw a2,24(a0)
8e0a: 8082 ret
00008e0c <raw_sendto>:
raw_sendto():
8e0c: ef0f72ef jal t0,4fc <__riscv_save_4>
8e10: 84ae mv s1,a1
8e12: 892a mv s2,a0
8e14: 45d1 li a1,20
8e16: 8526 mv a0,s1
8e18: 89b2 mv s3,a2
8e1a: c0dff0ef jal ra,8a26 <pbuf_header>
8e1e: c915 beqz a0,8e52 <raw_sendto+0x46>
8e20: 4601 li a2,0
8e22: 4581 li a1,0
8e24: 4505 li a0,1
8e26: cbdff0ef jal ra,8ae2 <pbuf_alloc>
8e2a: 842a mv s0,a0
8e2c: e509 bnez a0,8e36 <raw_sendto+0x2a>
8e2e: 597d li s2,-1
8e30: 854a mv a0,s2
8e32: efef706f j 530 <__riscv_restore_4>
8e36: 85a6 mv a1,s1
8e38: e7bff0ef jal ra,8cb2 <pbuf_chain>
8e3c: 854e mv a0,s3
8e3e: 8b3fe0ef jal ra,76f0 <ip_route>
8e42: ed19 bnez a0,8e60 <raw_sendto+0x54>
8e44: 5971 li s2,-4
8e46: fe9405e3 beq s0,s1,8e30 <raw_sendto+0x24>
8e4a: 8522 mv a0,s0
8e4c: c49ff0ef jal ra,8a94 <pbuf_free>
8e50: b7c5 j 8e30 <raw_sendto+0x24>
8e52: 55b1 li a1,-20
8e54: 8526 mv a0,s1
8e56: bd1ff0ef jal ra,8a26 <pbuf_header>
8e5a: f971 bnez a0,8e2e <raw_sendto+0x22>
8e5c: 8426 mv s0,s1
8e5e: bff9 j 8e3c <raw_sendto+0x30>
8e60: 85ca mv a1,s2
8e62: 00090563 beqz s2,8e6c <raw_sendto+0x60>
8e66: 00092783 lw a5,0(s2)
8e6a: e399 bnez a5,8e70 <raw_sendto+0x64>
8e6c: 00450593 addi a1,a0,4
8e70: 01094783 lbu a5,16(s2)
8e74: 00a94703 lbu a4,10(s2)
8e78: 00b94683 lbu a3,11(s2)
8e7c: 882a mv a6,a0
8e7e: 864e mv a2,s3
8e80: 8522 mv a0,s0
8e82: b55fe0ef jal ra,79d6 <ip_output_if>
8e86: 892a mv s2,a0
8e88: bf7d j 8e46 <raw_sendto+0x3a>
00008e8a <raw_send>:
raw_send():
8e8a: e8cf72ef jal t0,516 <__riscv_save_0>
8e8e: 00450613 addi a2,a0,4
8e92: f7bff0ef jal ra,8e0c <raw_sendto>
8e96: ea4f706f j 53a <__riscv_restore_0>
00008e9a <raw_remove>:
raw_remove():
8e9a: e7cf72ef jal t0,516 <__riscv_save_0>
8e9e: 99018713 addi a4,gp,-1648 # 200001d0 <raw_pcbs>
8ea2: 431c lw a5,0(a4)
8ea4: 85aa mv a1,a0
8ea6: 02a79063 bne a5,a0,8ec6 <raw_remove+0x2c>
8eaa: 455c lw a5,12(a0)
8eac: c31c sw a5,0(a4)
8eae: 4501 li a0,0
8eb0: a13ff0ef jal ra,88c2 <memp_free>
8eb4: e86f706f j 53a <__riscv_restore_0>
8eb8: 47d8 lw a4,12(a5)
8eba: c709 beqz a4,8ec4 <raw_remove+0x2a>
8ebc: 00b71463 bne a4,a1,8ec4 <raw_remove+0x2a>
8ec0: 45d8 lw a4,12(a1)
8ec2: c7d8 sw a4,12(a5)
8ec4: 47dc lw a5,12(a5)
8ec6: fbed bnez a5,8eb8 <raw_remove+0x1e>
8ec8: b7dd j 8eae <raw_remove+0x14>
00008eca <raw_new>:
raw_new():
8eca: e4cf72ef jal t0,516 <__riscv_save_0>
8ece: 84aa mv s1,a0
8ed0: 4501 li a0,0
8ed2: 9d1ff0ef jal ra,88a2 <memp_malloc>
8ed6: 842a mv s0,a0
8ed8: cd11 beqz a0,8ef4 <raw_new+0x2a>
8eda: 4671 li a2,28
8edc: 4581 li a1,0
8ede: e68f70ef jal ra,546 <memset>
8ee2: f8000793 li a5,-128
8ee6: b43c sb a5,11(s0)
8ee8: 99018793 addi a5,gp,-1648 # 200001d0 <raw_pcbs>
8eec: 4398 lw a4,0(a5)
8eee: a804 sb s1,16(s0)
8ef0: c380 sw s0,0(a5)
8ef2: c458 sw a4,12(s0)
8ef4: 8522 mv a0,s0
8ef6: e44f706f j 53a <__riscv_restore_0>
00008efa <tcp_new_port>:
tcp_new_port():
8efa: 9941a683 lw a3,-1644(gp) # 200001d4 <tcp_active_pcbs>
8efe: 9ac1a603 lw a2,-1620(gp) # 200001ec <tcp_tw_pcbs>
8f02: 99c1a583 lw a1,-1636(gp) # 200001dc <tcp_listen_pcbs>
8f06: 8341d503 lhu a0,-1996(gp) # 20000074 <port.3029>
8f0a: 83418793 addi a5,gp,-1996 # 20000074 <port.3029>
8f0e: 00150713 addi a4,a0,1
8f12: 01071513 slli a0,a4,0x10
8f16: 01071813 slli a6,a4,0x10
8f1a: 8141 srli a0,a0,0x10
8f1c: 00085363 bgez a6,8f22 <tcp_new_port+0x28>
8f20: 6505 lui a0,0x1
8f22: 8736 mv a4,a3
8f24: e719 bnez a4,8f32 <tcp_new_port+0x38>
8f26: 8732 mv a4,a2
8f28: eb19 bnez a4,8f3e <tcp_new_port+0x44>
8f2a: 872e mv a4,a1
8f2c: ef19 bnez a4,8f4a <tcp_new_port+0x50>
8f2e: a38a sh a0,0(a5)
8f30: 8082 ret
8f32: 01c75803 lhu a6,28(a4)
8f36: fca80ce3 beq a6,a0,8f0e <tcp_new_port+0x14>
8f3a: 4758 lw a4,12(a4)
8f3c: b7e5 j 8f24 <tcp_new_port+0x2a>
8f3e: 01c75803 lhu a6,28(a4)
8f42: fca806e3 beq a6,a0,8f0e <tcp_new_port+0x14>
8f46: 4758 lw a4,12(a4)
8f48: b7c5 j 8f28 <tcp_new_port+0x2e>
8f4a: 01c75803 lhu a6,28(a4)
8f4e: fca800e3 beq a6,a0,8f0e <tcp_new_port+0x14>
8f52: 4758 lw a4,12(a4)
8f54: bfe1 j 8f2c <tcp_new_port+0x32>
00008f56 <tcp_bind>:
tcp_bind():
8f56: 491c lw a5,16(a0)
8f58: 10079663 bnez a5,9064 <tcp_bind+0x10e>
8f5c: da0f72ef jal t0,4fc <__riscv_save_4>
8f60: 1141 addi sp,sp,-16
8f62: 84aa mv s1,a0
8f64: 8432 mv s0,a2
8f66: e611 bnez a2,8f72 <tcp_bind+0x1c>
8f68: c62e sw a1,12(sp)
8f6a: f91ff0ef jal ra,8efa <tcp_new_port>
8f6e: 45b2 lw a1,12(sp)
8f70: 842a mv s0,a0
8f72: 99c1a703 lw a4,-1636(gp) # 200001dc <tcp_listen_pcbs>
8f76: e731 bnez a4,8fc2 <tcp_bind+0x6c>
8f78: 9941a703 lw a4,-1644(gp) # 200001d4 <tcp_active_pcbs>
8f7c: eb25 bnez a4,8fec <tcp_bind+0x96>
8f7e: 9981a983 lw s3,-1640(gp) # 200001d8 <tcp_bound_pcbs>
8f82: 99818913 addi s2,gp,-1640 # 200001d8 <tcp_bound_pcbs>
8f86: 874e mv a4,s3
8f88: e759 bnez a4,9016 <tcp_bind+0xc0>
8f8a: 9ac1a783 lw a5,-1620(gp) # 200001ec <tcp_tw_pcbs>
8f8e: ebcd bnez a5,9040 <tcp_bind+0xea>
8f90: c185 beqz a1,8fb0 <tcp_bind+0x5a>
8f92: 3198 lbu a4,1(a1)
8f94: 219c lbu a5,0(a1)
8f96: 0722 slli a4,a4,0x8
8f98: 8f5d or a4,a4,a5
8f9a: 21bc lbu a5,2(a1)
8f9c: 07c2 slli a5,a5,0x10
8f9e: 8f5d or a4,a4,a5
8fa0: 31bc lbu a5,3(a1)
8fa2: 07e2 slli a5,a5,0x18
8fa4: 8fd9 or a5,a5,a4
8fa6: c789 beqz a5,8fb0 <tcp_bind+0x5a>
8fa8: 4611 li a2,4
8faa: 8526 mv a0,s1
8fac: 725030ef jal ra,ced0 <memcpy>
8fb0: acc2 sh s0,28(s1)
8fb2: 0134a623 sw s3,12(s1)
8fb6: 00992023 sw s1,0(s2)
8fba: 4501 li a0,0
8fbc: 0141 addi sp,sp,16
8fbe: d72f706f j 530 <__riscv_restore_4>
8fc2: 2f5e lhu a5,28(a4)
8fc4: 02879263 bne a5,s0,8fe8 <tcp_bind+0x92>
8fc8: 4310 lw a2,0(a4)
8fca: ce59 beqz a2,9068 <tcp_bind+0x112>
8fcc: cdd1 beqz a1,9068 <tcp_bind+0x112>
8fce: 3194 lbu a3,1(a1)
8fd0: 219c lbu a5,0(a1)
8fd2: 06a2 slli a3,a3,0x8
8fd4: 8edd or a3,a3,a5
8fd6: 21bc lbu a5,2(a1)
8fd8: 07c2 slli a5,a5,0x10
8fda: 8edd or a3,a3,a5
8fdc: 31bc lbu a5,3(a1)
8fde: 07e2 slli a5,a5,0x18
8fe0: 8fd5 or a5,a5,a3
8fe2: c3d9 beqz a5,9068 <tcp_bind+0x112>
8fe4: 08f60263 beq a2,a5,9068 <tcp_bind+0x112>
8fe8: 4758 lw a4,12(a4)
8fea: b771 j 8f76 <tcp_bind+0x20>
8fec: 2f5e lhu a5,28(a4)
8fee: 02879263 bne a5,s0,9012 <tcp_bind+0xbc>
8ff2: 4310 lw a2,0(a4)
8ff4: ca35 beqz a2,9068 <tcp_bind+0x112>
8ff6: c9ad beqz a1,9068 <tcp_bind+0x112>
8ff8: 3194 lbu a3,1(a1)
8ffa: 219c lbu a5,0(a1)
8ffc: 06a2 slli a3,a3,0x8
8ffe: 8edd or a3,a3,a5
9000: 21bc lbu a5,2(a1)
9002: 07c2 slli a5,a5,0x10
9004: 8edd or a3,a3,a5
9006: 31bc lbu a5,3(a1)
9008: 07e2 slli a5,a5,0x18
900a: 8fd5 or a5,a5,a3
900c: cfb1 beqz a5,9068 <tcp_bind+0x112>
900e: 04f60d63 beq a2,a5,9068 <tcp_bind+0x112>
9012: 4758 lw a4,12(a4)
9014: b7a5 j 8f7c <tcp_bind+0x26>
9016: 2f5e lhu a5,28(a4)
9018: 02879263 bne a5,s0,903c <tcp_bind+0xe6>
901c: 4310 lw a2,0(a4)
901e: c629 beqz a2,9068 <tcp_bind+0x112>
9020: c5a1 beqz a1,9068 <tcp_bind+0x112>
9022: 3194 lbu a3,1(a1)
9024: 219c lbu a5,0(a1)
9026: 06a2 slli a3,a3,0x8
9028: 8edd or a3,a3,a5
902a: 21bc lbu a5,2(a1)
902c: 07c2 slli a5,a5,0x10
902e: 8edd or a3,a3,a5
9030: 31bc lbu a5,3(a1)
9032: 07e2 slli a5,a5,0x18
9034: 8fd5 or a5,a5,a3
9036: cb8d beqz a5,9068 <tcp_bind+0x112>
9038: 02f60863 beq a2,a5,9068 <tcp_bind+0x112>
903c: 4758 lw a4,12(a4)
903e: b7a9 j 8f88 <tcp_bind+0x32>
9040: 2fda lhu a4,28(a5)
9042: 00871f63 bne a4,s0,9060 <tcp_bind+0x10a>
9046: 3194 lbu a3,1(a1)
9048: 2198 lbu a4,0(a1)
904a: 06a2 slli a3,a3,0x8
904c: 8ed9 or a3,a3,a4
904e: 21b8 lbu a4,2(a1)
9050: 0742 slli a4,a4,0x10
9052: 8ed9 or a3,a3,a4
9054: 31b8 lbu a4,3(a1)
9056: 0762 slli a4,a4,0x18
9058: 8f55 or a4,a4,a3
905a: 4394 lw a3,0(a5)
905c: 00e68663 beq a3,a4,9068 <tcp_bind+0x112>
9060: 47dc lw a5,12(a5)
9062: b735 j 8f8e <tcp_bind+0x38>
9064: 554d li a0,-13
9066: 8082 ret
9068: 5555 li a0,-11
906a: bf89 j 8fbc <tcp_bind+0x66>
0000906c <tcp_update_rcv_ann_wnd>:
tcp_update_rcv_ann_wnd():
906c: 87aa mv a5,a0
906e: 02c55803 lhu a6,44(a0) # 102c <ETH_FlushTransmitFIFO+0xc>
9072: 5914 lw a3,48(a0)
9074: 3bd2 lhu a2,52(a5)
9076: 550c lw a1,40(a0)
9078: 0407d883 lhu a7,64(a5)
907c: 40d80533 sub a0,a6,a3
9080: 8205 srli a2,a2,0x1
9082: 952e add a0,a0,a1
9084: 8732 mv a4,a2
9086: 00c8f363 bgeu a7,a2,908c <tcp_update_rcv_ann_wnd+0x20>
908a: 8746 mv a4,a7
908c: 0742 slli a4,a4,0x10
908e: 8341 srli a4,a4,0x10
9090: 40e50733 sub a4,a0,a4
9094: 00074563 bltz a4,909e <tcp_update_rcv_ann_wnd+0x32>
9098: 03079723 sh a6,46(a5)
909c: 8082 ret
909e: 40d58733 sub a4,a1,a3
90a2: 00e05663 blez a4,90ae <tcp_update_rcv_ann_wnd+0x42>
90a6: 02079723 sh zero,46(a5)
90aa: 4501 li a0,0
90ac: 8082 ret
90ae: 8e8d sub a3,a3,a1
90b0: b7f6 sh a3,46(a5)
90b2: bfe5 j 90aa <tcp_update_rcv_ann_wnd+0x3e>
000090b4 <tcp_recved>:
tcp_recved():
90b4: c62f72ef jal t0,516 <__riscv_save_0>
90b8: 355e lhu a5,44(a0)
90ba: 842a mv s0,a0
90bc: 95be add a1,a1,a5
90be: 05c2 slli a1,a1,0x10
90c0: 395e lhu a5,52(a0)
90c2: 81c1 srli a1,a1,0x10
90c4: b54e sh a1,44(a0)
90c6: 00b7f363 bgeu a5,a1,90cc <tcp_recved+0x18>
90ca: b55e sh a5,44(a0)
90cc: 8522 mv a0,s0
90ce: f9fff0ef jal ra,906c <tcp_update_rcv_ann_wnd>
90d2: 385e lhu a5,52(s0)
90d4: 8389 srli a5,a5,0x2
90d6: 00f54b63 blt a0,a5,90ec <tcp_recved+0x38>
90da: 02644783 lbu a5,38(s0)
90de: 8522 mv a0,s0
90e0: 0027e793 ori a5,a5,2
90e4: 02f40323 sb a5,38(s0)
90e8: 3e2020ef jal ra,b4ca <tcp_output>
90ec: c4ef706f j 53a <__riscv_restore_0>
000090f0 <tcp_seg_free>:
tcp_seg_free():
90f0: c26f72ef jal t0,516 <__riscv_save_0>
90f4: 1141 addi sp,sp,-16
90f6: 4401 li s0,0
90f8: cd09 beqz a0,9112 <tcp_seg_free+0x22>
90fa: 85aa mv a1,a0
90fc: 4148 lw a0,4(a0)
90fe: 4401 li s0,0
9100: c511 beqz a0,910c <tcp_seg_free+0x1c>
9102: c62e sw a1,12(sp)
9104: 991ff0ef jal ra,8a94 <pbuf_free>
9108: 45b2 lw a1,12(sp)
910a: 842a mv s0,a0
910c: 4511 li a0,4
910e: fb4ff0ef jal ra,88c2 <memp_free>
9112: 8522 mv a0,s0
9114: 0141 addi sp,sp,16
9116: c24f706f j 53a <__riscv_restore_0>
0000911a <tcp_segs_free>:
tcp_segs_free():
911a: bfcf72ef jal t0,516 <__riscv_save_0>
911e: 4401 li s0,0
9120: e501 bnez a0,9128 <tcp_segs_free+0xe>
9122: 8522 mv a0,s0
9124: c16f706f j 53a <__riscv_restore_0>
9128: 4104 lw s1,0(a0)
912a: fc7ff0ef jal ra,90f0 <tcp_seg_free>
912e: 942a add s0,s0,a0
9130: 0ff47413 andi s0,s0,255
9134: 8526 mv a0,s1
9136: b7ed j 9120 <tcp_segs_free+0x6>
00009138 <tcp_seg_copy>:
tcp_seg_copy():
9138: bdef72ef jal t0,516 <__riscv_save_0>
913c: 1141 addi sp,sp,-16
913e: c62a sw a0,12(sp)
9140: 4511 li a0,4
9142: f60ff0ef jal ra,88a2 <memp_malloc>
9146: 842a mv s0,a0
9148: c901 beqz a0,9158 <tcp_seg_copy+0x20>
914a: 45b2 lw a1,12(sp)
914c: 4651 li a2,20
914e: 583030ef jal ra,ced0 <memcpy>
9152: 4048 lw a0,4(s0)
9154: b39ff0ef jal ra,8c8c <pbuf_ref>
9158: 8522 mv a0,s0
915a: 0141 addi sp,sp,16
915c: bdef706f j 53a <__riscv_restore_0>
00009160 <tcp_arg>:
tcp_arg():
9160: cd0c sw a1,24(a0)
9162: 8082 ret
00009164 <tcp_recv>:
tcp_recv():
9164: 08b52823 sw a1,144(a0)
9168: 8082 ret
0000916a <tcp_sent>:
tcp_sent():
916a: 08b52623 sw a1,140(a0)
916e: 8082 ret
00009170 <tcp_err>:
tcp_err():
9170: 08b52e23 sw a1,156(a0)
9174: 8082 ret
00009176 <tcp_poll>:
tcp_poll():
9176: 08b52c23 sw a1,152(a0)
917a: 02c50ea3 sb a2,61(a0)
917e: 8082 ret
00009180 <tcp_pcb_purge>:
tcp_pcb_purge():
9180: 491c lw a5,16(a0)
9182: 4705 li a4,1
9184: 04f77463 bgeu a4,a5,91cc <tcp_pcb_purge+0x4c>
9188: 4729 li a4,10
918a: 04e78163 beq a5,a4,91cc <tcp_pcb_purge+0x4c>
918e: b88f72ef jal t0,516 <__riscv_save_0>
9192: 842a mv s0,a0
9194: 08852503 lw a0,136(a0)
9198: c509 beqz a0,91a2 <tcp_pcb_purge+0x22>
919a: 8fbff0ef jal ra,8a94 <pbuf_free>
919e: 08042423 sw zero,136(s0)
91a2: 08442503 lw a0,132(s0)
91a6: 57fd li a5,-1
91a8: bc7e sh a5,62(s0)
91aa: f71ff0ef jal ra,911a <tcp_segs_free>
91ae: 5c68 lw a0,124(s0)
91b0: 08042223 sw zero,132(s0)
91b4: f67ff0ef jal ra,911a <tcp_segs_free>
91b8: 08042503 lw a0,128(s0)
91bc: f5fff0ef jal ra,911a <tcp_segs_free>
91c0: 06042e23 sw zero,124(s0)
91c4: 08042023 sw zero,128(s0)
91c8: b72f706f j 53a <__riscv_restore_0>
91cc: 8082 ret
000091ce <tcp_slowtmr>:
tcp_slowtmr():
91ce: b18f72ef jal t0,4e6 <__riscv_save_12>
91d2: 2002e4b7 lui s1,0x2002e
91d6: b8c48793 addi a5,s1,-1140 # 2002db8c <NetInf>
91da: 9a018713 addi a4,gp,-1632 # 200001e0 <tcp_ticks>
91de: 0187cc03 lbu s8,24(a5)
91e2: 431c lw a5,0(a4)
91e4: 6ab5 lui s5,0xd
91e6: 0785 addi a5,a5,1
91e8: 9941ad03 lw s10,-1644(gp) # 200001d4 <tcp_active_pcbs>
91ec: c31c sw a5,0(a4)
91ee: 06600913 li s2,102
91f2: 4a01 li s4,0
91f4: b8c48493 addi s1,s1,-1140
91f8: 9a018413 addi s0,gp,-1632 # 200001e0 <tcp_ticks>
91fc: 99418993 addi s3,gp,-1644 # 200001d4 <tcp_active_pcbs>
9200: 4c8d li s9,3
9202: 3dca8a93 addi s5,s5,988 # d3dc <tcp_backoff>
9206: 85418b13 addi s6,gp,-1964 # 20000094 <tcp_persist_backoff>
920a: 000d1a63 bnez s10,921e <tcp_slowtmr+0x50>
920e: 9ac1a403 lw s0,-1620(gp) # 200001ec <tcp_tw_pcbs>
9212: 9ac18493 addi s1,gp,-1620 # 200001ec <tcp_tw_pcbs>
9216: 24041963 bnez s0,9468 <tcp_slowtmr+0x29a>
921a: b08f706f j 522 <__riscv_restore_12>
921e: 197d addi s2,s2,-1
9220: 0ff97913 andi s2,s2,255
9224: fe090be3 beqz s2,921a <tcp_slowtmr+0x4c>
9228: 052d4603 lbu a2,82(s10)
922c: 010d2683 lw a3,16(s10)
9230: 4d85 li s11,1
9232: 02cc0263 beq s8,a2,9256 <tcp_slowtmr+0x88>
9236: 0b0d4d83 lbu s11,176(s10)
923a: 100d8463 beqz s11,9342 <tcp_slowtmr+0x174>
923e: 0acd2703 lw a4,172(s10)
9242: 01bb06b3 add a3,s6,s11
9246: fff6c683 lbu a3,-1(a3)
924a: 0705 addi a4,a4,1
924c: 0aed2623 sw a4,172(s10)
9250: 0cd77c63 bgeu a4,a3,9328 <tcp_slowtmr+0x15a>
9254: 4d81 li s11,0
9256: 010d2703 lw a4,16(s10)
925a: 4699 li a3,6
925c: 00d71d63 bne a4,a3,9276 <tcp_slowtmr+0xa8>
9260: 038d2603 lw a2,56(s10)
9264: 4014 lw a3,0(s0)
9266: 8e91 sub a3,a3,a2
9268: 4c90 lw a2,24(s1)
926a: 00d67663 bgeu a2,a3,9276 <tcp_slowtmr+0xa8>
926e: 001d8793 addi a5,s11,1
9272: 0ff7fd93 andi s11,a5,255
9276: 008d5683 lhu a3,8(s10)
927a: 4b81 li s7,0
927c: 8aa1 andi a3,a3,8
927e: ce95 beqz a3,92ba <tcp_slowtmr+0xec>
9280: 4691 li a3,4
9282: 00d70563 beq a4,a3,928c <tcp_slowtmr+0xbe>
9286: 469d li a3,7
9288: 02d71963 bne a4,a3,92ba <tcp_slowtmr+0xec>
928c: 0a4d2883 lw a7,164(s10)
9290: 0a8d2683 lw a3,168(s10)
9294: 0a0d2503 lw a0,160(s10)
9298: 4ccc lw a1,28(s1)
929a: 02d886b3 mul a3,a7,a3
929e: 4010 lw a2,0(s0)
92a0: 038d2703 lw a4,56(s10)
92a4: 8e19 sub a2,a2,a4
92a6: 96aa add a3,a3,a0
92a8: 02b6d6b3 divu a3,a3,a1
92ac: 10c6fc63 bgeu a3,a2,93c4 <tcp_slowtmr+0x1f6>
92b0: 001d8793 addi a5,s11,1
92b4: 0ff7fd93 andi s11,a5,255
92b8: 4b85 li s7,1
92ba: 084d2503 lw a0,132(s10)
92be: c105 beqz a0,92de <tcp_slowtmr+0x110>
92c0: 038d2703 lw a4,56(s10)
92c4: 4014 lw a3,0(s0)
92c6: 4619 li a2,6
92c8: 8e99 sub a3,a3,a4
92ca: 050d1703 lh a4,80(s10)
92ce: 02c70733 mul a4,a4,a2
92d2: 00e6e663 bltu a3,a4,92de <tcp_slowtmr+0x110>
92d6: e45ff0ef jal ra,911a <tcp_segs_free>
92da: 080d2223 sw zero,132(s10)
92de: 010d2703 lw a4,16(s10)
92e2: 11971463 bne a4,s9,93ea <tcp_slowtmr+0x21c>
92e6: 038d2683 lw a3,56(s10)
92ea: 4018 lw a4,0(s0)
92ec: 8f15 sub a4,a4,a3
92ee: 4c94 lw a3,24(s1)
92f0: 10e6e863 bltu a3,a4,9400 <tcp_slowtmr+0x232>
92f4: 100d9663 bnez s11,9400 <tcp_slowtmr+0x232>
92f8: 03cd4783 lbu a5,60(s10)
92fc: 03dd4703 lbu a4,61(s10)
9300: 0785 addi a5,a5,1
9302: 0ff7f793 andi a5,a5,255
9306: 02fd0e23 sb a5,60(s10)
930a: 00e7eb63 bltu a5,a4,9320 <tcp_slowtmr+0x152>
930e: 098d2783 lw a5,152(s10)
9312: 020d0e23 sb zero,60(s10)
9316: 14079263 bnez a5,945a <tcp_slowtmr+0x28c>
931a: 856a mv a0,s10
931c: 1ae020ef jal ra,b4ca <tcp_output>
9320: 8a6a mv s4,s10
9322: 00cd2d03 lw s10,12(s10)
9326: b5d5 j 920a <tcp_slowtmr+0x3c>
9328: 0a0d2623 sw zero,172(s10)
932c: 4719 li a4,6
932e: 01b76663 bltu a4,s11,933a <tcp_slowtmr+0x16c>
9332: 001d8793 addi a5,s11,1
9336: 0afd0823 sb a5,176(s10)
933a: 856a mv a0,s10
933c: 770020ef jal ra,baac <tcp_zero_window_probe>
9340: bf11 j 9254 <tcp_slowtmr+0x86>
9342: 03ed1703 lh a4,62(s10)
9346: 00074563 bltz a4,9350 <tcp_slowtmr+0x182>
934a: 0705 addi a4,a4,1
934c: 02ed1f23 sh a4,62(s10)
9350: 080d2703 lw a4,128(s10)
9354: f00700e3 beqz a4,9254 <tcp_slowtmr+0x86>
9358: 03ed1583 lh a1,62(s10)
935c: 050d1703 lh a4,80(s10)
9360: eeb75ae3 bge a4,a1,9254 <tcp_slowtmr+0x86>
9364: 02dcf463 bgeu s9,a3,938c <tcp_slowtmr+0x1be>
9368: 04cd1703 lh a4,76(s10)
936c: 04ed1683 lh a3,78(s10)
9370: 47b1 li a5,12
9372: 870d srai a4,a4,0x3
9374: 9736 add a4,a4,a3
9376: 0ff67693 andi a3,a2,255
937a: 00c7f363 bgeu a5,a2,9380 <tcp_slowtmr+0x1b2>
937e: 46b1 li a3,12
9380: 96d6 add a3,a3,s5
9382: 2294 lbu a3,0(a3)
9384: 00d71733 sll a4,a4,a3
9388: 04ed1823 sh a4,80(s10)
938c: 05ad5683 lhu a3,90(s10)
9390: 064d5703 lhu a4,100(s10)
9394: 020d1f23 sh zero,62(s10)
9398: 00e6f363 bgeu a3,a4,939e <tcp_slowtmr+0x1d0>
939c: 8736 mv a4,a3
939e: 0742 slli a4,a4,0x10
93a0: 8341 srli a4,a4,0x10
93a2: 040d5683 lhu a3,64(s10)
93a6: 8305 srli a4,a4,0x1
93a8: 04ed1e23 sh a4,92(s10)
93ac: 00d77663 bgeu a4,a3,93b8 <tcp_slowtmr+0x1ea>
93b0: 00169713 slli a4,a3,0x1
93b4: 04ed1e23 sh a4,92(s10)
93b8: 04dd1d23 sh a3,90(s10)
93bc: 856a mv a0,s10
93be: 57c020ef jal ra,b93a <tcp_rexmit_rto>
93c2: bd51 j 9256 <tcp_slowtmr+0x88>
93c4: 0b1d4703 lbu a4,177(s10)
93c8: 4b81 li s7,0
93ca: 03170733 mul a4,a4,a7
93ce: 972a add a4,a4,a0
93d0: 02b75733 divu a4,a4,a1
93d4: eec773e3 bgeu a4,a2,92ba <tcp_slowtmr+0xec>
93d8: 856a mv a0,s10
93da: 674020ef jal ra,ba4e <tcp_keepalive>
93de: 0b1d4703 lbu a4,177(s10)
93e2: 0705 addi a4,a4,1
93e4: 0aed08a3 sb a4,177(s10)
93e8: bdc9 j 92ba <tcp_slowtmr+0xec>
93ea: 46a5 li a3,9
93ec: f0d714e3 bne a4,a3,92f4 <tcp_slowtmr+0x126>
93f0: 038d2703 lw a4,56(s10)
93f4: 4014 lw a3,0(s0)
93f6: 8e99 sub a3,a3,a4
93f8: 4c98 lw a4,24(s1)
93fa: 0706 slli a4,a4,0x1
93fc: eed77ce3 bgeu a4,a3,92f4 <tcp_slowtmr+0x126>
9400: 856a mv a0,s10
9402: dc8fd0ef jal ra,69ca <LwipRemoveTcpPcb>
9406: 856a mv a0,s10
9408: d79ff0ef jal ra,9180 <tcp_pcb_purge>
940c: 00cd2783 lw a5,12(s10)
9410: 040a0263 beqz s4,9454 <tcp_slowtmr+0x286>
9414: 00fa2623 sw a5,12(s4)
9418: 09cd2783 lw a5,156(s10)
941c: c789 beqz a5,9426 <tcp_slowtmr+0x258>
941e: 018d2503 lw a0,24(s10)
9422: 55ed li a1,-5
9424: 9782 jalr a5
9426: 000b8f63 beqz s7,9444 <tcp_slowtmr+0x276>
942a: 024d5783 lhu a5,36(s10)
942e: 01cd5703 lhu a4,28(s10)
9432: 028d2583 lw a1,40(s10)
9436: 060d2503 lw a0,96(s10)
943a: 004d0693 addi a3,s10,4
943e: 866a mv a2,s10
9440: 3f2020ef jal ra,b832 <tcp_rst>
9444: 00cd2b83 lw s7,12(s10)
9448: 85ea mv a1,s10
944a: 4509 li a0,2
944c: c76ff0ef jal ra,88c2 <memp_free>
9450: 8d5e mv s10,s7
9452: bb65 j 920a <tcp_slowtmr+0x3c>
9454: 00f9a023 sw a5,0(s3)
9458: b7c1 j 9418 <tcp_slowtmr+0x24a>
945a: 018d2503 lw a0,24(s10)
945e: 85ea mv a1,s10
9460: 9782 jalr a5
9462: ea050ce3 beqz a0,931a <tcp_slowtmr+0x14c>
9466: bd6d j 9320 <tcp_slowtmr+0x152>
9468: 8522 mv a0,s0
946a: d60fd0ef jal ra,69ca <LwipRemoveTcpPcb>
946e: 8522 mv a0,s0
9470: d11ff0ef jal ra,9180 <tcp_pcb_purge>
9474: 00c42903 lw s2,12(s0)
9478: 85a2 mv a1,s0
947a: 4509 li a0,2
947c: 0124a023 sw s2,0(s1)
9480: 844a mv s0,s2
9482: c40ff0ef jal ra,88c2 <memp_free>
9486: bb41 j 9216 <tcp_slowtmr+0x48>
00009488 <tcp_pcb_remove>:
tcp_pcb_remove():
9488: 88ef72ef jal t0,516 <__riscv_save_0>
948c: 411c lw a5,0(a0)
948e: 842e mv s0,a1
9490: 04b79063 bne a5,a1,94d0 <tcp_pcb_remove+0x48>
9494: 45dc lw a5,12(a1)
9496: c11c sw a5,0(a0)
9498: 00042623 sw zero,12(s0)
949c: 8522 mv a0,s0
949e: ce3ff0ef jal ra,9180 <tcp_pcb_purge>
94a2: 481c lw a5,16(s0)
94a4: 4729 li a4,10
94a6: 02e78163 beq a5,a4,94c8 <tcp_pcb_remove+0x40>
94aa: 4705 li a4,1
94ac: 00e78e63 beq a5,a4,94c8 <tcp_pcb_remove+0x40>
94b0: 02644783 lbu a5,38(s0)
94b4: 0017f713 andi a4,a5,1
94b8: cb01 beqz a4,94c8 <tcp_pcb_remove+0x40>
94ba: 0027e793 ori a5,a5,2
94be: 02f40323 sb a5,38(s0)
94c2: 8522 mv a0,s0
94c4: 006020ef jal ra,b4ca <tcp_output>
94c8: 00042823 sw zero,16(s0)
94cc: 86ef706f j 53a <__riscv_restore_0>
94d0: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
94d4: 4681 li a3,0
94d6: 9a818713 addi a4,gp,-1624 # 200001e8 <tcp_tmp_pcb>
94da: e789 bnez a5,94e4 <tcp_pcb_remove+0x5c>
94dc: ded5 beqz a3,9498 <tcp_pcb_remove+0x10>
94de: 00072023 sw zero,0(a4)
94e2: bf5d j 9498 <tcp_pcb_remove+0x10>
94e4: 47d0 lw a2,12(a5)
94e6: 00861763 bne a2,s0,94f4 <tcp_pcb_remove+0x6c>
94ea: c291 beqz a3,94ee <tcp_pcb_remove+0x66>
94ec: c31c sw a5,0(a4)
94ee: 4458 lw a4,12(s0)
94f0: c7d8 sw a4,12(a5)
94f2: b75d j 9498 <tcp_pcb_remove+0x10>
94f4: 4685 li a3,1
94f6: 87b2 mv a5,a2
94f8: b7cd j 94da <tcp_pcb_remove+0x52>
000094fa <tcp_close>:
tcp_close():
94fa: 491c lw a5,16(a0)
94fc: 471d li a4,7
94fe: 0af76563 bltu a4,a5,95a8 <tcp_close+0xae>
9502: 814f72ef jal t0,516 <__riscv_save_0>
9506: 6735 lui a4,0xd
9508: 078a slli a5,a5,0x2
950a: 3bc70713 addi a4,a4,956 # d3bc <ErrTable+0x10>
950e: 97ba add a5,a5,a4
9510: 439c lw a5,0(a5)
9512: 842a mv s0,a0
9514: 8782 jr a5
9516: cb4fd0ef jal ra,69ca <LwipRemoveTcpPcb>
951a: 99818713 addi a4,gp,-1640 # 200001d8 <tcp_bound_pcbs>
951e: 431c lw a5,0(a4)
9520: 00879963 bne a5,s0,9532 <tcp_close+0x38>
9524: 445c lw a5,12(s0)
9526: c31c sw a5,0(a4)
9528: 00042623 sw zero,12(s0)
952c: 85a2 mv a1,s0
952e: 4509 li a0,2
9530: a83d j 956e <tcp_close+0x74>
9532: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
9536: 4681 li a3,0
9538: 9a818713 addi a4,gp,-1624 # 200001e8 <tcp_tmp_pcb>
953c: e789 bnez a5,9546 <tcp_close+0x4c>
953e: d6ed beqz a3,9528 <tcp_close+0x2e>
9540: 00072023 sw zero,0(a4)
9544: b7d5 j 9528 <tcp_close+0x2e>
9546: 47d0 lw a2,12(a5)
9548: 00861763 bne a2,s0,9556 <tcp_close+0x5c>
954c: c291 beqz a3,9550 <tcp_close+0x56>
954e: c31c sw a5,0(a4)
9550: 4458 lw a4,12(s0)
9552: c7d8 sw a4,12(a5)
9554: bfd1 j 9528 <tcp_close+0x2e>
9556: 4685 li a3,1
9558: 87b2 mv a5,a2
955a: b7cd j 953c <tcp_close+0x42>
955c: c6efd0ef jal ra,69ca <LwipRemoveTcpPcb>
9560: 85a2 mv a1,s0
9562: 99c18513 addi a0,gp,-1636 # 200001dc <tcp_listen_pcbs>
9566: f23ff0ef jal ra,9488 <tcp_pcb_remove>
956a: 85a2 mv a1,s0
956c: 450d li a0,3
956e: b54ff0ef jal ra,88c2 <memp_free>
9572: 4501 li a0,0
9574: a831 j 9590 <tcp_close+0x96>
9576: c54fd0ef jal ra,69ca <LwipRemoveTcpPcb>
957a: 85a2 mv a1,s0
957c: 99418513 addi a0,gp,-1644 # 200001d4 <tcp_active_pcbs>
9580: f09ff0ef jal ra,9488 <tcp_pcb_remove>
9584: b765 j 952c <tcp_close+0x32>
9586: 4585 li a1,1
9588: 68d010ef jal ra,b414 <tcp_send_ctrl>
958c: 4795 li a5,5
958e: c901 beqz a0,959e <tcp_close+0xa4>
9590: fabf606f j 53a <__riscv_restore_0>
9594: 4585 li a1,1
9596: 67f010ef jal ra,b414 <tcp_send_ctrl>
959a: f97d bnez a0,9590 <tcp_close+0x96>
959c: 47a5 li a5,9
959e: c81c sw a5,16(s0)
95a0: 8522 mv a0,s0
95a2: 729010ef jal ra,b4ca <tcp_output>
95a6: b7f1 j 9572 <tcp_close+0x78>
95a8: 4501 li a0,0
95aa: 8082 ret
000095ac <tcp_recv_null>:
tcp_recv_null():
95ac: f6bf62ef jal t0,516 <__riscv_save_0>
95b0: 1141 addi sp,sp,-16
95b2: 852e mv a0,a1
95b4: ce11 beqz a2,95d0 <tcp_recv_null+0x24>
95b6: 260e lhu a1,8(a2)
95b8: c632 sw a2,12(sp)
95ba: afbff0ef jal ra,90b4 <tcp_recved>
95be: 4632 lw a2,12(sp)
95c0: 8532 mv a0,a2
95c2: cd2ff0ef jal ra,8a94 <pbuf_free>
95c6: 4781 li a5,0
95c8: 853e mv a0,a5
95ca: 0141 addi sp,sp,16
95cc: f6ff606f j 53a <__riscv_restore_0>
95d0: 4781 li a5,0
95d2: fafd bnez a3,95c8 <tcp_recv_null+0x1c>
95d4: f27ff0ef jal ra,94fa <tcp_close>
95d8: 87aa mv a5,a0
95da: b7fd j 95c8 <tcp_recv_null+0x1c>
000095dc <tcp_fasttmr>:
tcp_fasttmr():
95dc: f3bf62ef jal t0,516 <__riscv_save_0>
95e0: 9941a403 lw s0,-1644(gp) # 200001d4 <tcp_active_pcbs>
95e4: 06500493 li s1,101
95e8: e019 bnez s0,95ee <tcp_fasttmr+0x12>
95ea: f51f606f j 53a <__riscv_restore_0>
95ee: 08842603 lw a2,136(s0)
95f2: ca19 beqz a2,9608 <tcp_fasttmr+0x2c>
95f4: 09042783 lw a5,144(s0)
95f8: 4681 li a3,0
95fa: 85a2 mv a1,s0
95fc: cf8d beqz a5,9636 <tcp_fasttmr+0x5a>
95fe: 4c08 lw a0,24(s0)
9600: 9782 jalr a5
9602: e119 bnez a0,9608 <tcp_fasttmr+0x2c>
9604: 08042423 sw zero,136(s0)
9608: 14fd addi s1,s1,-1
960a: 0ff4f493 andi s1,s1,255
960e: dcf1 beqz s1,95ea <tcp_fasttmr+0xe>
9610: 02644783 lbu a5,38(s0)
9614: 0017f713 andi a4,a5,1
9618: cf09 beqz a4,9632 <tcp_fasttmr+0x56>
961a: 0027e793 ori a5,a5,2
961e: 02f40323 sb a5,38(s0)
9622: 8522 mv a0,s0
9624: 6a7010ef jal ra,b4ca <tcp_output>
9628: 02644783 lbu a5,38(s0)
962c: 9bf1 andi a5,a5,-4
962e: 02f40323 sb a5,38(s0)
9632: 4440 lw s0,12(s0)
9634: bf55 j 95e8 <tcp_fasttmr+0xc>
9636: 4501 li a0,0
9638: f75ff0ef jal ra,95ac <tcp_recv_null>
963c: b7d9 j 9602 <tcp_fasttmr+0x26>
0000963e <tcp_tmr>:
tcp_tmr():
963e: ed9f62ef jal t0,516 <__riscv_save_0>
9642: f9bff0ef jal ra,95dc <tcp_fasttmr>
9646: 9a418713 addi a4,gp,-1628 # 200001e4 <tcp_timer>
964a: 231c lbu a5,0(a4)
964c: 0785 addi a5,a5,1
964e: 0ff7f793 andi a5,a5,255
9652: a31c sb a5,0(a4)
9654: 8b85 andi a5,a5,1
9656: c399 beqz a5,965c <tcp_tmr+0x1e>
9658: b77ff0ef jal ra,91ce <tcp_slowtmr>
965c: edff606f j 53a <__riscv_restore_0>
00009660 <tcp_fastsendack>:
tcp_fastsendack():
9660: eb7f62ef jal t0,516 <__riscv_save_0>
9664: 9941a403 lw s0,-1644(gp) # 200001d4 <tcp_active_pcbs>
9668: 06500493 li s1,101
966c: 4901 li s2,0
966e: e401 bnez s0,9676 <tcp_fastsendack+0x16>
9670: 854a mv a0,s2
9672: ec9f606f j 53a <__riscv_restore_0>
9676: 08842603 lw a2,136(s0)
967a: ca19 beqz a2,9690 <tcp_fastsendack+0x30>
967c: 09042783 lw a5,144(s0)
9680: 4681 li a3,0
9682: 85a2 mv a1,s0
9684: c7b1 beqz a5,96d0 <tcp_fastsendack+0x70>
9686: 4c08 lw a0,24(s0)
9688: 9782 jalr a5
968a: e119 bnez a0,9690 <tcp_fastsendack+0x30>
968c: 08042423 sw zero,136(s0)
9690: 14fd addi s1,s1,-1
9692: 0ff4f493 andi s1,s1,255
9696: dce9 beqz s1,9670 <tcp_fastsendack+0x10>
9698: 02744783 lbu a5,39(s0)
969c: cb85 beqz a5,96cc <tcp_fastsendack+0x6c>
969e: 02644703 lbu a4,38(s0)
96a2: 00177693 andi a3,a4,1
96a6: c29d beqz a3,96cc <tcp_fastsendack+0x6c>
96a8: 17fd addi a5,a5,-1
96aa: 0ff7f793 andi a5,a5,255
96ae: 02f403a3 sb a5,39(s0)
96b2: e39d bnez a5,96d8 <tcp_fastsendack+0x78>
96b4: 00276713 ori a4,a4,2
96b8: 02e40323 sb a4,38(s0)
96bc: 8522 mv a0,s0
96be: 60d010ef jal ra,b4ca <tcp_output>
96c2: 02644783 lbu a5,38(s0)
96c6: 9bf1 andi a5,a5,-4
96c8: 02f40323 sb a5,38(s0)
96cc: 4440 lw s0,12(s0)
96ce: b745 j 966e <tcp_fastsendack+0xe>
96d0: 4501 li a0,0
96d2: edbff0ef jal ra,95ac <tcp_recv_null>
96d6: bf55 j 968a <tcp_fastsendack+0x2a>
96d8: 0905 addi s2,s2,1
96da: bfcd j 96cc <tcp_fastsendack+0x6c>
000096dc <tcp_abandon>:
tcp_abandon():
96dc: e13f62ef jal t0,4ee <__riscv_save_10>
96e0: 4918 lw a4,16(a0)
96e2: 47a9 li a5,10
96e4: 1141 addi sp,sp,-16
96e6: 842a mv s0,a0
96e8: 00f71e63 bne a4,a5,9704 <tcp_abandon+0x28>
96ec: 85aa mv a1,a0
96ee: 9ac18513 addi a0,gp,-1620 # 200001ec <tcp_tw_pcbs>
96f2: d97ff0ef jal ra,9488 <tcp_pcb_remove>
96f6: 85a2 mv a1,s0
96f8: 4509 li a0,2
96fa: 9c8ff0ef jal ra,88c2 <memp_free>
96fe: 0141 addi sp,sp,16
9700: e27f606f j 526 <__riscv_restore_10>
9704: 411c lw a5,0(a0)
9706: 8b2e mv s6,a1
9708: 06052903 lw s2,96(a0)
970c: c63e sw a5,12(sp)
970e: 415c lw a5,4(a0)
9710: 02852983 lw s3,40(a0)
9714: 01c55a03 lhu s4,28(a0)
9718: c43e sw a5,8(sp)
971a: 02455a83 lhu s5,36(a0)
971e: 09c52483 lw s1,156(a0)
9722: 01852b83 lw s7,24(a0)
9726: aa4fd0ef jal ra,69ca <LwipRemoveTcpPcb>
972a: 99418513 addi a0,gp,-1644 # 200001d4 <tcp_active_pcbs>
972e: 85a2 mv a1,s0
9730: d59ff0ef jal ra,9488 <tcp_pcb_remove>
9734: 08042503 lw a0,128(s0)
9738: c119 beqz a0,973e <tcp_abandon+0x62>
973a: 9e1ff0ef jal ra,911a <tcp_segs_free>
973e: 5c68 lw a0,124(s0)
9740: c119 beqz a0,9746 <tcp_abandon+0x6a>
9742: 9d9ff0ef jal ra,911a <tcp_segs_free>
9746: 08442503 lw a0,132(s0)
974a: c119 beqz a0,9750 <tcp_abandon+0x74>
974c: 9cfff0ef jal ra,911a <tcp_segs_free>
9750: 85a2 mv a1,s0
9752: 4509 li a0,2
9754: 96eff0ef jal ra,88c2 <memp_free>
9758: c481 beqz s1,9760 <tcp_abandon+0x84>
975a: 55ed li a1,-5
975c: 855e mv a0,s7
975e: 9482 jalr s1
9760: f80b0fe3 beqz s6,96fe <tcp_abandon+0x22>
9764: 87d6 mv a5,s5
9766: 8752 mv a4,s4
9768: 0034 addi a3,sp,8
976a: 0070 addi a2,sp,12
976c: 85ce mv a1,s3
976e: 854a mv a0,s2
9770: 0c2020ef jal ra,b832 <tcp_rst>
9774: b769 j 96fe <tcp_abandon+0x22>
00009776 <tcp_next_iss>:
tcp_next_iss():
9776: 83018793 addi a5,gp,-2000 # 20000070 <iss.3197>
977a: 4388 lw a0,0(a5)
977c: 9a01a703 lw a4,-1632(gp) # 200001e0 <tcp_ticks>
9780: 953a add a0,a0,a4
9782: c388 sw a0,0(a5)
9784: 8082 ret
00009786 <tcp_alloc>:
tcp_alloc():
9786: d77f62ef jal t0,4fc <__riscv_save_4>
978a: 892a mv s2,a0
978c: 4509 li a0,2
978e: 914ff0ef jal ra,88a2 <memp_malloc>
9792: 2002e4b7 lui s1,0x2002e
9796: bd048493 addi s1,s1,-1072 # 2002dbd0 <WCHCfg>
979a: 842a mv s0,a0
979c: e125 bnez a0,97fc <tcp_alloc+0x76>
979e: 489c lw a5,16(s1)
97a0: 8389 srli a5,a5,0x2
97a2: 8b85 andi a5,a5,1
97a4: e789 bnez a5,97ae <tcp_alloc+0x28>
97a6: 4401 li s0,0
97a8: 8522 mv a0,s0
97aa: d87f606f j 530 <__riscv_restore_4>
97ae: 9ac1a783 lw a5,-1620(gp) # 200001ec <tcp_tw_pcbs>
97b2: 9a01a603 lw a2,-1632(gp) # 200001e0 <tcp_ticks>
97b6: 4501 li a0,0
97b8: 4681 li a3,0
97ba: 9a018993 addi s3,gp,-1632 # 200001e0 <tcp_ticks>
97be: e7f1 bnez a5,988a <tcp_alloc+0x104>
97c0: c501 beqz a0,97c8 <tcp_alloc+0x42>
97c2: 4585 li a1,1
97c4: f19ff0ef jal ra,96dc <tcp_abandon>
97c8: 4509 li a0,2
97ca: 8d8ff0ef jal ra,88a2 <memp_malloc>
97ce: 842a mv s0,a0
97d0: e515 bnez a0,97fc <tcp_alloc+0x76>
97d2: 9941a783 lw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
97d6: 0009a503 lw a0,0(s3)
97da: 197d addi s2,s2,-1
97dc: 0ff97913 andi s2,s2,255
97e0: 07f00613 li a2,127
97e4: 4581 li a1,0
97e6: ebdd bnez a5,989c <tcp_alloc+0x116>
97e8: c409 beqz s0,97f2 <tcp_alloc+0x6c>
97ea: 4585 li a1,1
97ec: 8522 mv a0,s0
97ee: eefff0ef jal ra,96dc <tcp_abandon>
97f2: 4509 li a0,2
97f4: 8aeff0ef jal ra,88a2 <memp_malloc>
97f8: 842a mv s0,a0
97fa: d555 beqz a0,97a6 <tcp_alloc+0x20>
97fc: 0b400613 li a2,180
9800: 4581 li a1,0
9802: 8522 mv a0,s0
9804: d43f60ef jal ra,546 <memset>
9808: 04000793 li a5,64
980c: a85c sb a5,20(s0)
980e: 449c lw a5,8(s1)
9810: 06041c23 sh zero,120(s0)
9814: 21800713 li a4,536
9818: 06f41b23 sh a5,118(s0)
981c: 385e lhu a5,52(s0)
981e: b45e sh a5,44(s0)
9820: b47e sh a5,46(s0)
9822: 77e1 lui a5,0xffff8
9824: a43e sh a5,10(s0)
9826: 40dc lw a5,4(s1)
9828: 00f77463 bgeu a4,a5,9830 <tcp_alloc+0xaa>
982c: 21800793 li a5,536
9830: 04f41023 sh a5,64(s0)
9834: 67c1 lui a5,0x10
9836: 577d li a4,-1
9838: c47c sw a5,76(s0)
983a: 4785 li a5,1
983c: 04f41823 sh a5,80(s0)
9840: bc7a sh a4,62(s0)
9842: 04f41d23 sh a5,90(s0)
9846: f31ff0ef jal ra,9776 <tcp_next_iss>
984a: 9a01a783 lw a5,-1632(gp) # 200001e0 <tcp_ticks>
984e: d468 sw a0,108(s0)
9850: d028 sw a0,96(s0)
9852: dc1c sw a5,56(s0)
9854: 000097b7 lui a5,0x9
9858: 5ac78793 addi a5,a5,1452 # 95ac <tcp_recv_null>
985c: 08f42823 sw a5,144(s0)
9860: 2002e7b7 lui a5,0x2002e
9864: b807a703 lw a4,-1152(a5) # 2002db80 <KeepLiveCfg>
9868: b8078793 addi a5,a5,-1152
986c: c868 sw a0,84(s0)
986e: 0ae42023 sw a4,160(s0)
9872: 43d8 lw a4,4(a5)
9874: 479c lw a5,8(a5)
9876: d828 sw a0,112(s0)
9878: 02040e23 sb zero,60(s0)
987c: 0ae42223 sw a4,164(s0)
9880: 0af42423 sw a5,168(s0)
9884: 0a0408a3 sb zero,177(s0)
9888: b705 j 97a8 <tcp_alloc+0x22>
988a: 5f98 lw a4,56(a5)
988c: 40e60733 sub a4,a2,a4
9890: 00d76463 bltu a4,a3,9898 <tcp_alloc+0x112>
9894: 86ba mv a3,a4
9896: 853e mv a0,a5
9898: 47dc lw a5,12(a5)
989a: b715 j 97be <tcp_alloc+0x38>
989c: 2bd4 lbu a3,20(a5)
989e: 00d96c63 bltu s2,a3,98b6 <tcp_alloc+0x130>
98a2: 00d66a63 bltu a2,a3,98b6 <tcp_alloc+0x130>
98a6: 5f98 lw a4,56(a5)
98a8: 40e50733 sub a4,a0,a4
98ac: 00b76563 bltu a4,a1,98b6 <tcp_alloc+0x130>
98b0: 8636 mv a2,a3
98b2: 85ba mv a1,a4
98b4: 843e mv s0,a5
98b6: 47dc lw a5,12(a5)
98b8: b73d j 97e6 <tcp_alloc+0x60>
000098ba <tcp_new>:
tcp_new():
98ba: c5df62ef jal t0,516 <__riscv_save_0>
98be: 04000513 li a0,64
98c2: ec5ff0ef jal ra,9786 <tcp_alloc>
98c6: c75f606f j 53a <__riscv_restore_0>
000098ca <tcp_eff_send_mss>:
tcp_eff_send_mss():
98ca: c4df62ef jal t0,516 <__riscv_save_0>
98ce: 842a mv s0,a0
98d0: 852e mv a0,a1
98d2: e1ffd0ef jal ra,76f0 <ip_route>
98d6: cd11 beqz a0,98f2 <tcp_eff_send_mss+0x28>
98d8: 391e lhu a5,48(a0)
98da: cf81 beqz a5,98f2 <tcp_eff_send_mss+0x28>
98dc: fd878793 addi a5,a5,-40
98e0: 873e mv a4,a5
98e2: 07c2 slli a5,a5,0x10
98e4: 83c1 srli a5,a5,0x10
98e6: 00f47363 bgeu s0,a5,98ec <tcp_eff_send_mss+0x22>
98ea: 8722 mv a4,s0
98ec: 01071413 slli s0,a4,0x10
98f0: 8041 srli s0,s0,0x10
98f2: 8522 mv a0,s0
98f4: c47f606f j 53a <__riscv_restore_0>
000098f8 <tcp_connect>:
tcp_connect():
98f8: c05f62ef jal t0,4fc <__riscv_save_4>
98fc: 4918 lw a4,16(a0)
98fe: 54cd li s1,-13
9900: eb45 bnez a4,99b0 <tcp_connect+0xb8>
9902: 89ae mv s3,a1
9904: 54dd li s1,-9
9906: c5cd beqz a1,99b0 <tcp_connect+0xb8>
9908: 842a mv s0,a0
990a: 84b2 mv s1,a2
990c: 0511 addi a0,a0,4
990e: 4611 li a2,4
9910: 8936 mv s2,a3
9912: 5be030ef jal ra,ced0 <memcpy>
9916: 2c5e lhu a5,28(s0)
9918: b046 sh s1,36(s0)
991a: e781 bnez a5,9922 <tcp_connect+0x2a>
991c: ddeff0ef jal ra,8efa <tcp_new_port>
9920: ac4a sh a0,28(s0)
9922: e55ff0ef jal ra,9776 <tcp_next_iss>
9926: 385e lhu a5,52(s0)
9928: d028 sw a0,96(s0)
992a: 157d addi a0,a0,-1
992c: b45e sh a5,44(s0)
992e: b47e sh a5,46(s0)
9930: 06f41223 sh a5,100(s0)
9934: 2002e7b7 lui a5,0x2002e
9938: c868 sw a0,84(s0)
993a: d828 sw a0,112(s0)
993c: bd47a503 lw a0,-1068(a5) # 2002dbd4 <WCHCfg+0x4>
9940: 02042423 sw zero,40(s0)
9944: 02042823 sw zero,48(s0)
9948: 21800793 li a5,536
994c: 00a7f463 bgeu a5,a0,9954 <tcp_connect+0x5c>
9950: 21800513 li a0,536
9954: 0542 slli a0,a0,0x10
9956: 8141 srli a0,a0,0x10
9958: 04a41023 sh a0,64(s0)
995c: 85ce mv a1,s3
995e: f6dff0ef jal ra,98ca <tcp_eff_send_mss>
9962: 4785 li a5,1
9964: 04f41d23 sh a5,90(s0)
9968: 47a9 li a5,10
996a: 04a41023 sh a0,64(s0)
996e: 02f50533 mul a0,a0,a5
9972: 4789 li a5,2
9974: 99818713 addi a4,gp,-1640 # 200001d8 <tcp_bound_pcbs>
9978: c81c sw a5,16(s0)
997a: 431c lw a5,0(a4)
997c: 09242a23 sw s2,148(s0)
9980: 04a41e23 sh a0,92(s0)
9984: 02879963 bne a5,s0,99b6 <tcp_connect+0xbe>
9988: 445c lw a5,12(s0)
998a: c31c sw a5,0(a4)
998c: 99418793 addi a5,gp,-1644 # 200001d4 <tcp_active_pcbs>
9990: 4398 lw a4,0(a5)
9992: 4689 li a3,2
9994: c380 sw s0,0(a5)
9996: c458 sw a4,12(s0)
9998: 4785 li a5,1
999a: 4701 li a4,0
999c: 4601 li a2,0
999e: 4581 li a1,0
99a0: 8522 mv a0,s0
99a2: 62a010ef jal ra,afcc <tcp_enqueue>
99a6: 84aa mv s1,a0
99a8: e501 bnez a0,99b0 <tcp_connect+0xb8>
99aa: 8522 mv a0,s0
99ac: 31f010ef jal ra,b4ca <tcp_output>
99b0: 8526 mv a0,s1
99b2: b7ff606f j 530 <__riscv_restore_4>
99b6: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
99ba: 4681 li a3,0
99bc: 9a818713 addi a4,gp,-1624 # 200001e8 <tcp_tmp_pcb>
99c0: e789 bnez a5,99ca <tcp_connect+0xd2>
99c2: d6e9 beqz a3,998c <tcp_connect+0x94>
99c4: 00072023 sw zero,0(a4)
99c8: b7d1 j 998c <tcp_connect+0x94>
99ca: 47d0 lw a2,12(a5)
99cc: 00861763 bne a2,s0,99da <tcp_connect+0xe2>
99d0: c291 beqz a3,99d4 <tcp_connect+0xdc>
99d2: c31c sw a5,0(a4)
99d4: 4458 lw a4,12(s0)
99d6: c7d8 sw a4,12(a5)
99d8: bf55 j 998c <tcp_connect+0x94>
99da: 4685 li a3,1
99dc: 87b2 mv a5,a2
99de: b7cd j 99c0 <tcp_connect+0xc8>
000099e0 <RemoveTimeWaiTCP>:
RemoveTimeWaiTCP():
99e0: b37f62ef jal t0,516 <__riscv_save_0>
99e4: 9ac1a403 lw s0,-1620(gp) # 200001ec <tcp_tw_pcbs>
99e8: 9ac18493 addi s1,gp,-1620 # 200001ec <tcp_tw_pcbs>
99ec: e019 bnez s0,99f2 <RemoveTimeWaiTCP+0x12>
99ee: b4df606f j 53a <__riscv_restore_0>
99f2: 8522 mv a0,s0
99f4: fd7fc0ef jal ra,69ca <LwipRemoveTcpPcb>
99f8: 8522 mv a0,s0
99fa: f86ff0ef jal ra,9180 <tcp_pcb_purge>
99fe: 00c42903 lw s2,12(s0)
9a02: 85a2 mv a1,s0
9a04: 4509 li a0,2
9a06: 0124a023 sw s2,0(s1)
9a0a: 844a mv s0,s2
9a0c: eb7fe0ef jal ra,88c2 <memp_free>
9a10: bff1 j 99ec <RemoveTimeWaiTCP+0xc>
00009a12 <tcp_oos_insert_segment>:
tcp_oos_insert_segment():
9a12: aebf62ef jal t0,4fc <__riscv_save_4>
9a16: 491c lw a5,16(a0)
9a18: 84aa mv s1,a0
9a1a: 8a2e mv s4,a1
9a1c: 27c8 lbu a0,12(a5)
9a1e: 37dc lbu a5,13(a5)
9a20: 07a2 slli a5,a5,0x8
9a22: 8d5d or a0,a0,a5
9a24: c8ffd0ef jal ra,76b2 <ntohs>
9a28: 8905 andi a0,a0,1
9a2a: e929 bnez a0,9a7c <tcp_oos_insert_segment+0x6a>
9a2c: 6941 lui s2,0x10
9a2e: fc090913 addi s2,s2,-64 # ffc0 <_data_lma+0x2aac>
9a32: 010a2703 lw a4,16(s4)
9a36: 9c41a603 lw a2,-1596(gp) # 20000204 <seqno>
9a3a: 24de lhu a5,12(s1)
9a3c: 3354 lbu a3,5(a4)
9a3e: 234c lbu a1,4(a4)
9a40: 97b2 add a5,a5,a2
9a42: 06a2 slli a3,a3,0x8
9a44: 8dd5 or a1,a1,a3
9a46: 2374 lbu a3,6(a4)
9a48: 06c2 slli a3,a3,0x10
9a4a: 8ecd or a3,a3,a1
9a4c: 336c lbu a1,7(a4)
9a4e: 05e2 slli a1,a1,0x18
9a50: 8dd5 or a1,a1,a3
9a52: 00ca5683 lhu a3,12(s4)
9a56: 96ae add a3,a3,a1
9a58: 40d786b3 sub a3,a5,a3
9a5c: 0206d563 bgez a3,9a86 <tcp_oos_insert_segment+0x74>
9a60: 8f8d sub a5,a5,a1
9a62: 00f05963 blez a5,9a74 <tcp_oos_insert_segment+0x62>
9a66: 8d91 sub a1,a1,a2
9a68: 05c2 slli a1,a1,0x10
9a6a: 40c8 lw a0,4(s1)
9a6c: 81c1 srli a1,a1,0x10
9a6e: a4ce sh a1,12(s1)
9a70: 9b2ff0ef jal ra,8c22 <pbuf_realloc>
9a74: 0144a023 sw s4,0(s1)
9a78: ab9f606f j 530 <__riscv_restore_4>
9a7c: 8552 mv a0,s4
9a7e: e9cff0ef jal ra,911a <tcp_segs_free>
9a82: 4a01 li s4,0
9a84: bfc5 j 9a74 <tcp_oos_insert_segment+0x62>
9a86: 375c lbu a5,13(a4)
9a88: 2748 lbu a0,12(a4)
9a8a: 07a2 slli a5,a5,0x8
9a8c: 8d5d or a0,a0,a5
9a8e: c25fd0ef jal ra,76b2 <ntohs>
9a92: 8905 andi a0,a0,1
9a94: cd15 beqz a0,9ad0 <tcp_oos_insert_segment+0xbe>
9a96: 489c lw a5,16(s1)
9a98: 37c0 lbu s0,13(a5)
9a9a: 27c8 lbu a0,12(a5)
9a9c: 0422 slli s0,s0,0x8
9a9e: 8c49 or s0,s0,a0
9aa0: 854a mv a0,s2
9aa2: c03fd0ef jal ra,76a4 <htons>
9aa6: 489c lw a5,16(s1)
9aa8: 8c69 and s0,s0,a0
9aaa: 27c8 lbu a0,12(a5)
9aac: 37dc lbu a5,13(a5)
9aae: 07a2 slli a5,a5,0x8
9ab0: 8d5d or a0,a0,a5
9ab2: c01fd0ef jal ra,76b2 <ntohs>
9ab6: 03e57513 andi a0,a0,62
9aba: 00156513 ori a0,a0,1
9abe: be7fd0ef jal ra,76a4 <htons>
9ac2: 489c lw a5,16(s1)
9ac4: 8d41 or a0,a0,s0
9ac6: 0542 slli a0,a0,0x10
9ac8: 8141 srli a0,a0,0x10
9aca: a7c8 sb a0,12(a5)
9acc: 8121 srli a0,a0,0x8
9ace: b7c8 sb a0,13(a5)
9ad0: 000a2403 lw s0,0(s4)
9ad4: 8552 mv a0,s4
9ad6: e1aff0ef jal ra,90f0 <tcp_seg_free>
9ada: d445 beqz s0,9a82 <tcp_oos_insert_segment+0x70>
9adc: 8a22 mv s4,s0
9ade: bf91 j 9a32 <tcp_oos_insert_segment+0x20>
00009ae0 <tcp_receive>:
tcp_receive():
9ae0: a0ff62ef jal t0,4ee <__riscv_save_10>
9ae4: 9b41c783 lbu a5,-1612(gp) # 200001f4 <flags>
9ae8: 842a mv s0,a0
9aea: 8bc1 andi a5,a5,16
9aec: 9c418993 addi s3,gp,-1596 # 20000204 <seqno>
9af0: c7f1 beqz a5,9bbc <tcp_receive+0xdc>
9af2: 0009a583 lw a1,0(s3)
9af6: 5538 lw a4,104(a0)
9af8: 06455683 lhu a3,100(a0)
9afc: 5570 lw a2,108(a0)
9afe: 40b70533 sub a0,a4,a1
9b02: 9b01a783 lw a5,-1616(gp) # 200001f0 <ackno>
9b06: 9b018493 addi s1,gp,-1616 # 200001f0 <ackno>
9b0a: 02054463 bltz a0,9b32 <tcp_receive+0x52>
9b0e: 00b71663 bne a4,a1,9b1a <tcp_receive+0x3a>
9b12: 40f60733 sub a4,a2,a5
9b16: 00074e63 bltz a4,9b32 <tcp_receive+0x52>
9b1a: 02f61e63 bne a2,a5,9b56 <tcp_receive+0x76>
9b1e: 9cc1a503 lw a0,-1588(gp) # 2000020c <tcphdr>
9b22: 3578 lbu a4,15(a0)
9b24: 00e54803 lbu a6,14(a0)
9b28: 0722 slli a4,a4,0x8
9b2a: 01076733 or a4,a4,a6
9b2e: 02e6f463 bgeu a3,a4,9b56 <tcp_receive+0x76>
9b32: 9cc1a503 lw a0,-1588(gp) # 2000020c <tcphdr>
9b36: 3578 lbu a4,15(a0)
9b38: 00e54803 lbu a6,14(a0)
9b3c: d42c sw a1,104(s0)
9b3e: 0722 slli a4,a4,0x8
9b40: 01076733 or a4,a4,a6
9b44: 06e41223 sh a4,100(s0)
9b48: d47c sw a5,108(s0)
9b4a: c711 beqz a4,9b56 <tcp_receive+0x76>
9b4c: 0b044703 lbu a4,176(s0)
9b50: c319 beqz a4,9b56 <tcp_receive+0x76>
9b52: 0a040823 sb zero,176(s0)
9b56: 486c lw a1,84(s0)
9b58: 40b78733 sub a4,a5,a1
9b5c: 2ee04263 bgtz a4,9e40 <tcp_receive+0x360>
9b60: 9d01d703 lhu a4,-1584(gp) # 20000210 <tcplen>
9b64: 06041a23 sh zero,116(s0)
9b68: 2c071963 bnez a4,9e3a <tcp_receive+0x35a>
9b6c: 06445703 lhu a4,100(s0)
9b70: 5468 lw a0,108(s0)
9b72: 96b2 add a3,a3,a2
9b74: 972a add a4,a4,a0
9b76: 2cd71263 bne a4,a3,9e3a <tcp_receive+0x35a>
9b7a: 03e41703 lh a4,62(s0)
9b7e: 2a074e63 bltz a4,9e3a <tcp_receive+0x35a>
9b82: 2af59c63 bne a1,a5,9e3a <tcp_receive+0x35a>
9b86: 05844783 lbu a5,88(s0)
9b8a: 470d li a4,3
9b8c: 0785 addi a5,a5,1
9b8e: 0ff7f793 andi a5,a5,255
9b92: 04f40c23 sb a5,88(s0)
9b96: 28f77c63 bgeu a4,a5,9e2e <tcp_receive+0x34e>
9b9a: 05a45703 lhu a4,90(s0)
9b9e: 04045783 lhu a5,64(s0)
9ba2: 97ba add a5,a5,a4
9ba4: 07c2 slli a5,a5,0x10
9ba6: 83c1 srli a5,a5,0x10
9ba8: 00f77463 bgeu a4,a5,9bb0 <tcp_receive+0xd0>
9bac: 04f41d23 sh a5,90(s0)
9bb0: 5c7c lw a5,124(s0)
9bb2: 3a079f63 bnez a5,9f70 <tcp_receive+0x490>
9bb6: 4070 lw a2,68(s0)
9bb8: 44061a63 bnez a2,a00c <tcp_receive+0x52c>
9bbc: 9d01d603 lhu a2,-1584(gp) # 20000210 <tcplen>
9bc0: 0009a783 lw a5,0(s3)
9bc4: 5414 lw a3,40(s0)
9bc6: 9d018a13 addi s4,gp,-1584 # 20000210 <tcplen>
9bca: 040600e3 beqz a2,a40a <tcp_receive+0x92a>
9bce: 40f685b3 sub a1,a3,a5
9bd2: fff58713 addi a4,a1,-1
9bd6: 4a074b63 bltz a4,a08c <tcp_receive+0x5ac>
9bda: 4705 li a4,1
9bdc: 8f1d sub a4,a4,a5
9bde: 8f11 sub a4,a4,a2
9be0: 9736 add a4,a4,a3
9be2: 4ae04563 bgtz a4,a08c <tcp_receive+0x5ac>
9be6: 2002e937 lui s2,0x2002e
9bea: c5490793 addi a5,s2,-940 # 2002dc54 <inseg>
9bee: 43c4 lw s1,4(a5)
9bf0: 01059713 slli a4,a1,0x10
9bf4: 8341 srli a4,a4,0x10
9bf6: 24be lhu a5,10(s1)
9bf8: c5490913 addi s2,s2,-940
9bfc: 48b7d363 bge a5,a1,a082 <tcp_receive+0x5a2>
9c00: 249e lhu a5,8(s1)
9c02: 8f99 sub a5,a5,a4
9c04: 07c2 slli a5,a5,0x10
9c06: 83c1 srli a5,a5,0x10
9c08: 24ba lhu a4,10(s1)
9c0a: 46b74663 blt a4,a1,a076 <tcp_receive+0x596>
9c0e: 40b005b3 neg a1,a1
9c12: 05c2 slli a1,a1,0x10
9c14: 85c1 srai a1,a1,0x10
9c16: 8526 mv a0,s1
9c18: e0ffe0ef jal ra,8a26 <pbuf_header>
9c1c: 40dc lw a5,4(s1)
9c1e: 00c95683 lhu a3,12(s2)
9c22: 0009a703 lw a4,0(s3)
9c26: 00f92423 sw a5,8(s2)
9c2a: 541c lw a5,40(s0)
9c2c: 9736 add a4,a4,a3
9c2e: 8f1d sub a4,a4,a5
9c30: 00e91623 sh a4,12(s2)
9c34: 01092703 lw a4,16(s2)
9c38: 0087d693 srli a3,a5,0x8
9c3c: 00f9a023 sw a5,0(s3)
9c40: a35c sb a5,4(a4)
9c42: b354 sb a3,5(a4)
9c44: 0107d693 srli a3,a5,0x10
9c48: 83e1 srli a5,a5,0x18
9c4a: a374 sb a3,6(a4)
9c4c: b37c sb a5,7(a4)
9c4e: 0009a683 lw a3,0(s3)
9c52: 5418 lw a4,40(s0)
9c54: 40e687b3 sub a5,a3,a4
9c58: 0007c963 bltz a5,9c6a <tcp_receive+0x18a>
9c5c: 3452 lhu a2,44(s0)
9c5e: 00168793 addi a5,a3,1
9c62: 8f99 sub a5,a5,a4
9c64: 8f91 sub a5,a5,a2
9c66: 44f05063 blez a5,a0a6 <tcp_receive+0x5c6>
9c6a: 2002e7b7 lui a5,0x2002e
9c6e: c647a783 lw a5,-924(a5) # 2002dc64 <inseg+0x10>
9c72: 27c8 lbu a0,12(a5)
9c74: 37dc lbu a5,13(a5)
9c76: 07a2 slli a5,a5,0x8
9c78: 8d5d or a0,a0,a5
9c7a: a39fd0ef jal ra,76b2 <ntohs>
9c7e: 8905 andi a0,a0,1
9c80: 78050163 beqz a0,a402 <tcp_receive+0x922>
9c84: 5418 lw a4,40(s0)
9c86: 0009a783 lw a5,0(s3)
9c8a: 76f71c63 bne a4,a5,a402 <tcp_receive+0x922>
9c8e: 2002e4b7 lui s1,0x2002e
9c92: c5448a93 addi s5,s1,-940 # 2002dc54 <inseg>
9c96: 010aa783 lw a5,16(s5)
9c9a: 00cad903 lhu s2,12(s5)
9c9e: c5448493 addi s1,s1,-940
9ca2: 27c8 lbu a0,12(a5)
9ca4: 37dc lbu a5,13(a5)
9ca6: 07a2 slli a5,a5,0x8
9ca8: 8d5d or a0,a0,a5
9caa: a09fd0ef jal ra,76b2 <ntohs>
9cae: 890d andi a0,a0,3
9cb0: 00a03533 snez a0,a0
9cb4: 992a add s2,s2,a0
9cb6: 010aa783 lw a5,16(s5)
9cba: 0942 slli s2,s2,0x10
9cbc: 01095913 srli s2,s2,0x10
9cc0: 012a1023 sh s2,0(s4)
9cc4: 27c8 lbu a0,12(a5)
9cc6: 37dc lbu a5,13(a5)
9cc8: 07a2 slli a5,a5,0x8
9cca: 8d5d or a0,a0,a5
9ccc: 9e7fd0ef jal ra,76b2 <ntohs>
9cd0: 8905 andi a0,a0,1
9cd2: 3e051c63 bnez a0,a0ca <tcp_receive+0x5ea>
9cd6: 345e lhu a5,44(s0)
9cd8: 0b27f063 bgeu a5,s2,9d78 <tcp_receive+0x298>
9cdc: 489c lw a5,16(s1)
9cde: 27c8 lbu a0,12(a5)
9ce0: 37dc lbu a5,13(a5)
9ce2: 07a2 slli a5,a5,0x8
9ce4: 8d5d or a0,a0,a5
9ce6: 9cdfd0ef jal ra,76b2 <ntohs>
9cea: 8905 andi a0,a0,1
9cec: c131 beqz a0,9d30 <tcp_receive+0x250>
9cee: 489c lw a5,16(s1)
9cf0: 00d7c903 lbu s2,13(a5)
9cf4: 27c8 lbu a0,12(a5)
9cf6: 0922 slli s2,s2,0x8
9cf8: 00a96933 or s2,s2,a0
9cfc: 6541 lui a0,0x10
9cfe: fc050513 addi a0,a0,-64 # ffc0 <_data_lma+0x2aac>
9d02: 9a3fd0ef jal ra,76a4 <htons>
9d06: 489c lw a5,16(s1)
9d08: 00a97933 and s2,s2,a0
9d0c: 27c8 lbu a0,12(a5)
9d0e: 37dc lbu a5,13(a5)
9d10: 07a2 slli a5,a5,0x8
9d12: 8d5d or a0,a0,a5
9d14: 99ffd0ef jal ra,76b2 <ntohs>
9d18: 03e57513 andi a0,a0,62
9d1c: 989fd0ef jal ra,76a4 <htons>
9d20: 489c lw a5,16(s1)
9d22: 00a96533 or a0,s2,a0
9d26: 0542 slli a0,a0,0x10
9d28: 8141 srli a0,a0,0x10
9d2a: a7c8 sb a0,12(a5)
9d2c: 8121 srli a0,a0,0x8
9d2e: b7c8 sb a0,13(a5)
9d30: 345e lhu a5,44(s0)
9d32: a4de sh a5,12(s1)
9d34: 489c lw a5,16(s1)
9d36: 27c8 lbu a0,12(a5)
9d38: 37dc lbu a5,13(a5)
9d3a: 07a2 slli a5,a5,0x8
9d3c: 8d5d or a0,a0,a5
9d3e: 975fd0ef jal ra,76b2 <ntohs>
9d42: 8909 andi a0,a0,2
9d44: c501 beqz a0,9d4c <tcp_receive+0x26c>
9d46: 24de lhu a5,12(s1)
9d48: 17fd addi a5,a5,-1
9d4a: a4de sh a5,12(s1)
9d4c: 24ce lhu a1,12(s1)
9d4e: 40c8 lw a0,4(s1)
9d50: ed3fe0ef jal ra,8c22 <pbuf_realloc>
9d54: 489c lw a5,16(s1)
9d56: 00c4d903 lhu s2,12(s1)
9d5a: 27c8 lbu a0,12(a5)
9d5c: 37dc lbu a5,13(a5)
9d5e: 07a2 slli a5,a5,0x8
9d60: 8d5d or a0,a0,a5
9d62: 951fd0ef jal ra,76b2 <ntohs>
9d66: 890d andi a0,a0,3
9d68: 00a03533 snez a0,a0
9d6c: 992a add s2,s2,a0
9d6e: 0942 slli s2,s2,0x10
9d70: 01095913 srli s2,s2,0x10
9d74: 012a1023 sh s2,0(s4)
9d78: 08442783 lw a5,132(s0)
9d7c: 36078463 beqz a5,a0e4 <tcp_receive+0x604>
9d80: 489c lw a5,16(s1)
9d82: 27c8 lbu a0,12(a5)
9d84: 37dc lbu a5,13(a5)
9d86: 07a2 slli a5,a5,0x8
9d88: 8d5d or a0,a0,a5
9d8a: 929fd0ef jal ra,76b2 <ntohs>
9d8e: 8905 andi a0,a0,1
9d90: 34051763 bnez a0,a0de <tcp_receive+0x5fe>
9d94: 08442b03 lw s6,132(s0)
9d98: 6bc1 lui s7,0x10
9d9a: fc0b8b93 addi s7,s7,-64 # ffc0 <_data_lma+0x2aac>
9d9e: 0009a503 lw a0,0(s3)
9da2: 000a5703 lhu a4,0(s4)
9da6: 972a add a4,a4,a0
9da8: 080b0063 beqz s6,9e28 <tcp_receive+0x348>
9dac: 010b2603 lw a2,16(s6)
9db0: 324c lbu a1,5(a2)
9db2: 2254 lbu a3,4(a2)
9db4: 05a2 slli a1,a1,0x8
9db6: 8dd5 or a1,a1,a3
9db8: 2274 lbu a3,6(a2)
9dba: 06c2 slli a3,a3,0x10
9dbc: 8dd5 or a1,a1,a3
9dbe: 3274 lbu a3,7(a2)
9dc0: 06e2 slli a3,a3,0x18
9dc2: 8ecd or a3,a3,a1
9dc4: 00cb5583 lhu a1,12(s6)
9dc8: 95b6 add a1,a1,a3
9dca: 40b705b3 sub a1,a4,a1
9dce: 3605d263 bgez a1,a132 <tcp_receive+0x652>
9dd2: 8f15 sub a4,a4,a3
9dd4: 04e05a63 blez a4,9e28 <tcp_receive+0x348>
9dd8: 08442783 lw a5,132(s0)
9ddc: 4b98 lw a4,16(a5)
9dde: 335c lbu a5,5(a4)
9de0: 2354 lbu a3,4(a4)
9de2: 07a2 slli a5,a5,0x8
9de4: 8fd5 or a5,a5,a3
9de6: 8f89 sub a5,a5,a0
9de8: a4de sh a5,12(s1)
9dea: 489c lw a5,16(s1)
9dec: 27c8 lbu a0,12(a5)
9dee: 37dc lbu a5,13(a5)
9df0: 07a2 slli a5,a5,0x8
9df2: 8d5d or a0,a0,a5
9df4: 8bffd0ef jal ra,76b2 <ntohs>
9df8: 8909 andi a0,a0,2
9dfa: c501 beqz a0,9e02 <tcp_receive+0x322>
9dfc: 24de lhu a5,12(s1)
9dfe: 17fd addi a5,a5,-1
9e00: a4de sh a5,12(s1)
9e02: 24ce lhu a1,12(s1)
9e04: 40c8 lw a0,4(s1)
9e06: e1dfe0ef jal ra,8c22 <pbuf_realloc>
9e0a: 489c lw a5,16(s1)
9e0c: 00c4da83 lhu s5,12(s1)
9e10: 27c8 lbu a0,12(a5)
9e12: 37dc lbu a5,13(a5)
9e14: 07a2 slli a5,a5,0x8
9e16: 8d5d or a0,a0,a5
9e18: 89bfd0ef jal ra,76b2 <ntohs>
9e1c: 890d andi a0,a0,3
9e1e: 00a03533 snez a0,a0
9e22: 9aaa add s5,s5,a0
9e24: 015a1023 sh s5,0(s4)
9e28: 09642223 sw s6,132(s0)
9e2c: ac65 j a0e4 <tcp_receive+0x604>
9e2e: d8e791e3 bne a5,a4,9bb0 <tcp_receive+0xd0>
9e32: 8522 mv a0,s0
9e34: 3b9010ef jal ra,b9ec <tcp_rexmit_fast>
9e38: bba5 j 9bb0 <tcp_receive+0xd0>
9e3a: 04040c23 sb zero,88(s0)
9e3e: bb8d j 9bb0 <tcp_receive+0xd0>
9e40: 5034 lw a3,96(s0)
9e42: 40d786b3 sub a3,a5,a3
9e46: 12d04263 bgtz a3,9f6a <tcp_receive+0x48a>
9e4a: 02644683 lbu a3,38(s0)
9e4e: 0046f613 andi a2,a3,4
9e52: ca01 beqz a2,9e62 <tcp_receive+0x382>
9e54: 9aed andi a3,a3,-5
9e56: 02d40323 sb a3,38(s0)
9e5a: 05c45683 lhu a3,92(s0)
9e5e: 04d41d23 sh a3,90(s0)
9e62: 04c41683 lh a3,76(s0)
9e66: 04e45603 lhu a2,78(s0)
9e6a: 0742 slli a4,a4,0x10
9e6c: 868d srai a3,a3,0x3
9e6e: 96b2 add a3,a3,a2
9e70: 04d41823 sh a3,80(s0)
9e74: 07645683 lhu a3,118(s0)
9e78: 8341 srli a4,a4,0x10
9e7a: 06e41a23 sh a4,116(s0)
9e7e: 9736 add a4,a4,a3
9e80: 06e41b23 sh a4,118(s0)
9e84: 4818 lw a4,16(s0)
9e86: c87c sw a5,84(s0)
9e88: 04040923 sb zero,82(s0)
9e8c: 04040c23 sb zero,88(s0)
9e90: 478d li a5,3
9e92: 02e7f163 bgeu a5,a4,9eb4 <tcp_receive+0x3d4>
9e96: 05a45703 lhu a4,90(s0)
9e9a: 05c45683 lhu a3,92(s0)
9e9e: 04045783 lhu a5,64(s0)
9ea2: 02d77663 bgeu a4,a3,9ece <tcp_receive+0x3ee>
9ea6: 97ba add a5,a5,a4
9ea8: 07c2 slli a5,a5,0x10
9eaa: 83c1 srli a5,a5,0x10
9eac: 00f77463 bgeu a4,a5,9eb4 <tcp_receive+0x3d4>
9eb0: 04f41d23 sh a5,90(s0)
9eb4: 08042783 lw a5,128(s0)
9eb8: e385 bnez a5,9ed8 <tcp_receive+0x3f8>
9eba: 08042783 lw a5,128(s0)
9ebe: 02040e23 sb zero,60(s0)
9ec2: 0017b793 seqz a5,a5
9ec6: 40f007b3 neg a5,a5
9eca: bc7e sh a5,62(s0)
9ecc: b1d5 j 9bb0 <tcp_receive+0xd0>
9ece: 02f787b3 mul a5,a5,a5
9ed2: 02e7c7b3 div a5,a5,a4
9ed6: bfc1 j 9ea6 <tcp_receive+0x3c6>
9ed8: 4b98 lw a4,16(a5)
9eda: 3348 lbu a0,5(a4)
9edc: 235c lbu a5,4(a4)
9ede: 0522 slli a0,a0,0x8
9ee0: 8d5d or a0,a0,a5
9ee2: 237c lbu a5,6(a4)
9ee4: 07c2 slli a5,a5,0x10
9ee6: 8fc9 or a5,a5,a0
9ee8: 3368 lbu a0,7(a4)
9eea: 0562 slli a0,a0,0x18
9eec: 8d5d or a0,a0,a5
9eee: ff6fd0ef jal ra,76e4 <ntohl>
9ef2: 08042783 lw a5,128(s0)
9ef6: 892a mv s2,a0
9ef8: 00c7da03 lhu s4,12(a5)
9efc: 4b9c lw a5,16(a5)
9efe: 27c8 lbu a0,12(a5)
9f00: 37dc lbu a5,13(a5)
9f02: 07a2 slli a5,a5,0x8
9f04: 8d5d or a0,a0,a5
9f06: facfd0ef jal ra,76b2 <ntohs>
9f0a: 409c lw a5,0(s1)
9f0c: 890d andi a0,a0,3
9f0e: 00a03533 snez a0,a0
9f12: 9552 add a0,a0,s4
9f14: 40f90933 sub s2,s2,a5
9f18: 954a add a0,a0,s2
9f1a: faa040e3 bgtz a0,9eba <tcp_receive+0x3da>
9f1e: 08042903 lw s2,128(s0)
9f22: 00092783 lw a5,0(s2)
9f26: 08f42023 sw a5,128(s0)
9f2a: 07445783 lhu a5,116(s0)
9f2e: c385 beqz a5,9f4e <tcp_receive+0x46e>
9f30: 01092783 lw a5,16(s2)
9f34: 27c8 lbu a0,12(a5)
9f36: 37dc lbu a5,13(a5)
9f38: 07a2 slli a5,a5,0x8
9f3a: 8d5d or a0,a0,a5
9f3c: f76fd0ef jal ra,76b2 <ntohs>
9f40: 8905 andi a0,a0,1
9f42: c511 beqz a0,9f4e <tcp_receive+0x46e>
9f44: 07445783 lhu a5,116(s0)
9f48: 17fd addi a5,a5,-1
9f4a: 06f41a23 sh a5,116(s0)
9f4e: 00492503 lw a0,4(s2)
9f52: d29fe0ef jal ra,8c7a <pbuf_clen>
9f56: 07845783 lhu a5,120(s0)
9f5a: 40a78533 sub a0,a5,a0
9f5e: 06a41c23 sh a0,120(s0)
9f62: 854a mv a0,s2
9f64: 98cff0ef jal ra,90f0 <tcp_seg_free>
9f68: b7b1 j 9eb4 <tcp_receive+0x3d4>
9f6a: 06041a23 sh zero,116(s0)
9f6e: b189 j 9bb0 <tcp_receive+0xd0>
9f70: 4b98 lw a4,16(a5)
9f72: 0004a903 lw s2,0(s1)
9f76: 3348 lbu a0,5(a4)
9f78: 235c lbu a5,4(a4)
9f7a: 0522 slli a0,a0,0x8
9f7c: 8d5d or a0,a0,a5
9f7e: 237c lbu a5,6(a4)
9f80: 07c2 slli a5,a5,0x10
9f82: 8fc9 or a5,a5,a0
9f84: 3368 lbu a0,7(a4)
9f86: 0562 slli a0,a0,0x18
9f88: 8d5d or a0,a0,a5
9f8a: f5afd0ef jal ra,76e4 <ntohl>
9f8e: 5c7c lw a5,124(s0)
9f90: 8aaa mv s5,a0
9f92: 41590933 sub s2,s2,s5
9f96: 00c7da03 lhu s4,12(a5)
9f9a: 4b9c lw a5,16(a5)
9f9c: 27c8 lbu a0,12(a5)
9f9e: 37dc lbu a5,13(a5)
9fa0: 07a2 slli a5,a5,0x8
9fa2: 8d5d or a0,a0,a5
9fa4: f0efd0ef jal ra,76b2 <ntohs>
9fa8: 890d andi a0,a0,3
9faa: 00a03533 snez a0,a0
9fae: 9552 add a0,a0,s4
9fb0: 40a90933 sub s2,s2,a0
9fb4: c00941e3 bltz s2,9bb6 <tcp_receive+0xd6>
9fb8: 409c lw a5,0(s1)
9fba: 5038 lw a4,96(s0)
9fbc: 8f99 sub a5,a5,a4
9fbe: bef04ce3 bgtz a5,9bb6 <tcp_receive+0xd6>
9fc2: 07c42903 lw s2,124(s0)
9fc6: 00092783 lw a5,0(s2)
9fca: dc7c sw a5,124(s0)
9fcc: 07445783 lhu a5,116(s0)
9fd0: c385 beqz a5,9ff0 <tcp_receive+0x510>
9fd2: 01092783 lw a5,16(s2)
9fd6: 27c8 lbu a0,12(a5)
9fd8: 37dc lbu a5,13(a5)
9fda: 07a2 slli a5,a5,0x8
9fdc: 8d5d or a0,a0,a5
9fde: ed4fd0ef jal ra,76b2 <ntohs>
9fe2: 8905 andi a0,a0,1
9fe4: c511 beqz a0,9ff0 <tcp_receive+0x510>
9fe6: 07445783 lhu a5,116(s0)
9fea: 17fd addi a5,a5,-1
9fec: 06f41a23 sh a5,116(s0)
9ff0: 00492503 lw a0,4(s2)
9ff4: c87fe0ef jal ra,8c7a <pbuf_clen>
9ff8: 07845783 lhu a5,120(s0)
9ffc: 40a78533 sub a0,a5,a0
a000: 06a41c23 sh a0,120(s0)
a004: 854a mv a0,s2
a006: 8eaff0ef jal ra,90f0 <tcp_seg_free>
a00a: b65d j 9bb0 <tcp_receive+0xd0>
a00c: 443c lw a5,72(s0)
a00e: 4098 lw a4,0(s1)
a010: 8f99 sub a5,a5,a4
a012: ba07d5e3 bgez a5,9bbc <tcp_receive+0xdc>
a016: 04c41683 lh a3,76(s0)
a01a: 9a01d703 lhu a4,-1632(gp) # 200001e0 <tcp_ticks>
a01e: 0642 slli a2,a2,0x10
a020: 4036d593 srai a1,a3,0x3
a024: 8241 srli a2,a2,0x10
a026: 05c2 slli a1,a1,0x10
a028: 81c1 srli a1,a1,0x10
a02a: 40c707b3 sub a5,a4,a2
a02e: 8f8d sub a5,a5,a1
a030: 07c2 slli a5,a5,0x10
a032: 83c1 srli a5,a5,0x10
a034: 01079513 slli a0,a5,0x10
a038: 97b6 add a5,a5,a3
a03a: 07c2 slli a5,a5,0x10
a03c: 87c1 srai a5,a5,0x10
a03e: 8541 srai a0,a0,0x10
a040: 04f41623 sh a5,76(s0)
a044: 00055763 bgez a0,a052 <tcp_receive+0x572>
a048: 8e19 sub a2,a2,a4
a04a: 962e add a2,a2,a1
a04c: 01061513 slli a0,a2,0x10
a050: 8541 srai a0,a0,0x10
a052: 04e41683 lh a3,78(s0)
a056: 878d srai a5,a5,0x3
a058: 04042223 sw zero,68(s0)
a05c: 4026d713 srai a4,a3,0x2
a060: 40e68733 sub a4,a3,a4
a064: 972a add a4,a4,a0
a066: 0742 slli a4,a4,0x10
a068: 8341 srli a4,a4,0x10
a06a: 97ba add a5,a5,a4
a06c: 04e41723 sh a4,78(s0)
a070: 04f41823 sh a5,80(s0)
a074: b6a1 j 9bbc <tcp_receive+0xdc>
a076: a49e sh a5,8(s1)
a078: 00049523 sh zero,10(s1)
a07c: 8d99 sub a1,a1,a4
a07e: 4084 lw s1,0(s1)
a080: b661 j 9c08 <tcp_receive+0x128>
a082: 40e00733 neg a4,a4
a086: 01071593 slli a1,a4,0x10
a08a: b669 j 9c14 <tcp_receive+0x134>
a08c: 8f95 sub a5,a5,a3
a08e: bc07d0e3 bgez a5,9c4e <tcp_receive+0x16e>
a092: 02644783 lbu a5,38(s0)
a096: 8522 mv a0,s0
a098: 0027e793 ori a5,a5,2
a09c: 02f40323 sb a5,38(s0)
a0a0: 42a010ef jal ra,b4ca <tcp_output>
a0a4: b66d j 9c4e <tcp_receive+0x16e>
a0a6: bee684e3 beq a3,a4,9c8e <tcp_receive+0x1ae>
a0aa: 8522 mv a0,s0
a0ac: 3ae010ef jal ra,b45a <tcp_send_empty_ack>
a0b0: 08442483 lw s1,132(s0)
a0b4: 1e049463 bnez s1,a29c <tcp_receive+0x7bc>
a0b8: 2002e537 lui a0,0x2002e
a0bc: c5450513 addi a0,a0,-940 # 2002dc54 <inseg>
a0c0: 878ff0ef jal ra,9138 <tcp_seg_copy>
a0c4: 08a42223 sw a0,132(s0)
a0c8: aac1 j a298 <tcp_receive+0x7b8>
a0ca: 197d addi s2,s2,-1
a0cc: 0942 slli s2,s2,0x10
a0ce: 01095913 srli s2,s2,0x10
a0d2: b111 j 9cd6 <tcp_receive+0x1f6>
a0d4: 411c lw a5,0(a0)
a0d6: 08f42223 sw a5,132(s0)
a0da: 816ff0ef jal ra,90f0 <tcp_seg_free>
a0de: 08442503 lw a0,132(s0)
a0e2: f96d bnez a0,a0d4 <tcp_receive+0x5f4>
a0e4: 0009a703 lw a4,0(s3)
a0e8: 000a5783 lhu a5,0(s4)
a0ec: 8522 mv a0,s0
a0ee: 97ba add a5,a5,a4
a0f0: d41c sw a5,40(s0)
a0f2: 345e lhu a5,44(s0)
a0f4: 41278933 sub s2,a5,s2
a0f8: 03241623 sh s2,44(s0)
a0fc: f71fe0ef jal ra,906c <tcp_update_rcv_ann_wnd>
a100: 40dc lw a5,4(s1)
a102: 279a lhu a4,8(a5)
a104: c709 beqz a4,a10e <tcp_receive+0x62e>
a106: 9af1ae23 sw a5,-1604(gp) # 200001fc <recv_data>
a10a: 0004a223 sw zero,4(s1)
a10e: 489c lw a5,16(s1)
a110: 27c8 lbu a0,12(a5)
a112: 37dc lbu a5,13(a5)
a114: 07a2 slli a5,a5,0x8
a116: 8d5d or a0,a0,a5
a118: d9afd0ef jal ra,76b2 <ntohs>
a11c: 8905 andi a0,a0,1
a11e: c519 beqz a0,a12c <tcp_receive+0x64c>
a120: 9c018793 addi a5,gp,-1600 # 20000200 <recv_flags>
a124: 2398 lbu a4,0(a5)
a126: 02076713 ori a4,a4,32
a12a: a398 sb a4,0(a5)
a12c: 4a91 li s5,4
a12e: 4b1d li s6,7
a130: aa39 j a24e <tcp_receive+0x76e>
a132: 365c lbu a5,13(a2)
a134: 2648 lbu a0,12(a2)
a136: 07a2 slli a5,a5,0x8
a138: 8d5d or a0,a0,a5
a13a: d78fd0ef jal ra,76b2 <ntohs>
a13e: 8905 andi a0,a0,1
a140: c535 beqz a0,a1ac <tcp_receive+0x6cc>
a142: 489c lw a5,16(s1)
a144: 27c8 lbu a0,12(a5)
a146: 37dc lbu a5,13(a5)
a148: 07a2 slli a5,a5,0x8
a14a: 8d5d or a0,a0,a5
a14c: d66fd0ef jal ra,76b2 <ntohs>
a150: 8909 andi a0,a0,2
a152: ed29 bnez a0,a1ac <tcp_receive+0x6cc>
a154: 489c lw a5,16(s1)
a156: 00d7ca83 lbu s5,13(a5)
a15a: 27c8 lbu a0,12(a5)
a15c: 0aa2 slli s5,s5,0x8
a15e: 00aaeab3 or s5,s5,a0
a162: 855e mv a0,s7
a164: d40fd0ef jal ra,76a4 <htons>
a168: 489c lw a5,16(s1)
a16a: 00aafab3 and s5,s5,a0
a16e: 27c8 lbu a0,12(a5)
a170: 37dc lbu a5,13(a5)
a172: 07a2 slli a5,a5,0x8
a174: 8d5d or a0,a0,a5
a176: d3cfd0ef jal ra,76b2 <ntohs>
a17a: 03e57513 andi a0,a0,62
a17e: 00156513 ori a0,a0,1
a182: d22fd0ef jal ra,76a4 <htons>
a186: 00aae533 or a0,s5,a0
a18a: 489c lw a5,16(s1)
a18c: 0542 slli a0,a0,0x10
a18e: 8141 srli a0,a0,0x10
a190: 00855713 srli a4,a0,0x8
a194: a7c8 sb a0,12(a5)
a196: b7d8 sb a4,13(a5)
a198: 00c4da83 lhu s5,12(s1)
a19c: d16fd0ef jal ra,76b2 <ntohs>
a1a0: 890d andi a0,a0,3
a1a2: 00a03533 snez a0,a0
a1a6: 9aaa add s5,s5,a0
a1a8: 015a1023 sh s5,0(s4)
a1ac: 000b2a83 lw s5,0(s6)
a1b0: 855a mv a0,s6
a1b2: f3ffe0ef jal ra,90f0 <tcp_seg_free>
a1b6: 8b56 mv s6,s5
a1b8: b6dd j 9d9e <tcp_receive+0x2be>
a1ba: 00f9a023 sw a5,0(s3)
a1be: 375c lbu a5,13(a4)
a1c0: 2748 lbu a0,12(a4)
a1c2: 00c4db83 lhu s7,12(s1)
a1c6: 07a2 slli a5,a5,0x8
a1c8: 8d5d or a0,a0,a5
a1ca: ce8fd0ef jal ra,76b2 <ntohs>
a1ce: 541c lw a5,40(s0)
a1d0: 890d andi a0,a0,3
a1d2: 00a03533 snez a0,a0
a1d6: 955e add a0,a0,s7
a1d8: 953e add a0,a0,a5
a1da: 489c lw a5,16(s1)
a1dc: d408 sw a0,40(s0)
a1de: 00c4db83 lhu s7,12(s1)
a1e2: 27c8 lbu a0,12(a5)
a1e4: 37dc lbu a5,13(a5)
a1e6: 07a2 slli a5,a5,0x8
a1e8: 8d5d or a0,a0,a5
a1ea: cc8fd0ef jal ra,76b2 <ntohs>
a1ee: 345e lhu a5,44(s0)
a1f0: 890d andi a0,a0,3
a1f2: 00a03533 snez a0,a0
a1f6: 955e add a0,a0,s7
a1f8: 40a78533 sub a0,a5,a0
a1fc: b44a sh a0,44(s0)
a1fe: 8522 mv a0,s0
a200: e6dfe0ef jal ra,906c <tcp_update_rcv_ann_wnd>
a204: 40cc lw a1,4(s1)
a206: 259e lhu a5,8(a1)
a208: cb89 beqz a5,a21a <tcp_receive+0x73a>
a20a: 9bc18793 addi a5,gp,-1604 # 200001fc <recv_data>
a20e: 4388 lw a0,0(a5)
a210: cd35 beqz a0,a28c <tcp_receive+0x7ac>
a212: a85fe0ef jal ra,8c96 <pbuf_cat>
a216: 0004a223 sw zero,4(s1)
a21a: 489c lw a5,16(s1)
a21c: 27c8 lbu a0,12(a5)
a21e: 37dc lbu a5,13(a5)
a220: 07a2 slli a5,a5,0x8
a222: 8d5d or a0,a0,a5
a224: c8efd0ef jal ra,76b2 <ntohs>
a228: 8905 andi a0,a0,1
a22a: cd01 beqz a0,a242 <tcp_receive+0x762>
a22c: 9c018713 addi a4,gp,-1600 # 20000200 <recv_flags>
a230: 231c lbu a5,0(a4)
a232: 0207e793 ori a5,a5,32
a236: a31c sb a5,0(a4)
a238: 481c lw a5,16(s0)
a23a: 01579463 bne a5,s5,a242 <tcp_receive+0x762>
a23e: 01642823 sw s6,16(s0)
a242: 409c lw a5,0(s1)
a244: 8526 mv a0,s1
a246: 08f42223 sw a5,132(s0)
a24a: ea7fe0ef jal ra,90f0 <tcp_seg_free>
a24e: 08442483 lw s1,132(s0)
a252: cc99 beqz s1,a270 <tcp_receive+0x790>
a254: 4898 lw a4,16(s1)
a256: 3354 lbu a3,5(a4)
a258: 235c lbu a5,4(a4)
a25a: 06a2 slli a3,a3,0x8
a25c: 8edd or a3,a3,a5
a25e: 237c lbu a5,6(a4)
a260: 07c2 slli a5,a5,0x10
a262: 8edd or a3,a3,a5
a264: 337c lbu a5,7(a4)
a266: 07e2 slli a5,a5,0x18
a268: 8fd5 or a5,a5,a3
a26a: 5414 lw a3,40(s0)
a26c: f4d787e3 beq a5,a3,a1ba <tcp_receive+0x6da>
a270: 02644783 lbu a5,38(s0)
a274: 0017f713 andi a4,a5,1
a278: cf01 beqz a4,a290 <tcp_receive+0x7b0>
a27a: 9bf9 andi a5,a5,-2
a27c: 0027e793 ori a5,a5,2
a280: 02f40323 sb a5,38(s0)
a284: 8522 mv a0,s0
a286: 244010ef jal ra,b4ca <tcp_output>
a28a: a039 j a298 <tcp_receive+0x7b8>
a28c: c38c sw a1,0(a5)
a28e: b761 j a216 <tcp_receive+0x736>
a290: 0017e793 ori a5,a5,1
a294: 02f40323 sb a5,38(s0)
a298: a8ef606f j 526 <__riscv_restore_10>
a29c: 0009a703 lw a4,0(s3)
a2a0: 4901 li s2,0
a2a2: fff70513 addi a0,a4,-1
a2a6: 00170813 addi a6,a4,1
a2aa: 4890 lw a2,16(s1)
a2ac: 3254 lbu a3,5(a2)
a2ae: 225c lbu a5,4(a2)
a2b0: 06a2 slli a3,a3,0x8
a2b2: 8edd or a3,a3,a5
a2b4: 227c lbu a5,6(a2)
a2b6: 07c2 slli a5,a5,0x10
a2b8: 8edd or a3,a3,a5
a2ba: 327c lbu a5,7(a2)
a2bc: 07e2 slli a5,a5,0x18
a2be: 8fd5 or a5,a5,a3
a2c0: 02e79c63 bne a5,a4,a2f8 <tcp_receive+0x818>
a2c4: 2002e537 lui a0,0x2002e
a2c8: c5450793 addi a5,a0,-940 # 2002dc54 <inseg>
a2cc: 27da lhu a4,12(a5)
a2ce: 24de lhu a5,12(s1)
a2d0: fce7f4e3 bgeu a5,a4,a298 <tcp_receive+0x7b8>
a2d4: c5450513 addi a0,a0,-940
a2d8: e61fe0ef jal ra,9138 <tcp_seg_copy>
a2dc: dd55 beqz a0,a298 <tcp_receive+0x7b8>
a2de: 00090a63 beqz s2,a2f2 <tcp_receive+0x812>
a2e2: 00a92023 sw a0,0(s2)
a2e6: 85a6 mv a1,s1
a2e8: f2aff0ef jal ra,9a12 <tcp_oos_insert_segment>
a2ec: b775 j a298 <tcp_receive+0x7b8>
a2ee: 84b6 mv s1,a3
a2f0: bf6d j a2aa <tcp_receive+0x7ca>
a2f2: 08a42223 sw a0,132(s0)
a2f6: bfc5 j a2e6 <tcp_receive+0x806>
a2f8: 02091063 bnez s2,a318 <tcp_receive+0x838>
a2fc: 40f706b3 sub a3,a4,a5
a300: 0806de63 bgez a3,a39c <tcp_receive+0x8bc>
a304: 2002e537 lui a0,0x2002e
a308: c5450513 addi a0,a0,-940 # 2002dc54 <inseg>
a30c: e2dfe0ef jal ra,9138 <tcp_seg_copy>
a310: d541 beqz a0,a298 <tcp_receive+0x7b8>
a312: 08a42223 sw a0,132(s0)
a316: bfc1 j a2e6 <tcp_receive+0x806>
a318: 01092883 lw a7,16(s2)
a31c: 0058c583 lbu a1,5(a7)
a320: 0048c683 lbu a3,4(a7)
a324: 05a2 slli a1,a1,0x8
a326: 8dd5 or a1,a1,a3
a328: 0068c683 lbu a3,6(a7)
a32c: 06c2 slli a3,a3,0x10
a32e: 8dd5 or a1,a1,a3
a330: 0078c683 lbu a3,7(a7)
a334: 06e2 slli a3,a3,0x18
a336: 8ecd or a3,a3,a1
a338: 40d506b3 sub a3,a0,a3
a33c: 0606c063 bltz a3,a39c <tcp_receive+0x8bc>
a340: 40f806b3 sub a3,a6,a5
a344: 04d04c63 bgtz a3,a39c <tcp_receive+0x8bc>
a348: 2002e537 lui a0,0x2002e
a34c: c5450513 addi a0,a0,-940 # 2002dc54 <inseg>
a350: de9fe0ef jal ra,9138 <tcp_seg_copy>
a354: 842a mv s0,a0
a356: d129 beqz a0,a298 <tcp_receive+0x7b8>
a358: 01092703 lw a4,16(s2)
a35c: 335c lbu a5,5(a4)
a35e: 234c lbu a1,4(a4)
a360: 07a2 slli a5,a5,0x8
a362: 8ddd or a1,a1,a5
a364: 237c lbu a5,6(a4)
a366: 07c2 slli a5,a5,0x10
a368: 8fcd or a5,a5,a1
a36a: 336c lbu a1,7(a4)
a36c: 00c95703 lhu a4,12(s2)
a370: 05e2 slli a1,a1,0x18
a372: 8fcd or a5,a5,a1
a374: 0009a583 lw a1,0(s3)
a378: 973e add a4,a4,a5
a37a: 8f0d sub a4,a4,a1
a37c: 00e05b63 blez a4,a392 <tcp_receive+0x8b2>
a380: 8d9d sub a1,a1,a5
a382: 05c2 slli a1,a1,0x10
a384: 00492503 lw a0,4(s2)
a388: 81c1 srli a1,a1,0x10
a38a: 00b91623 sh a1,12(s2)
a38e: 895fe0ef jal ra,8c22 <pbuf_realloc>
a392: 00892023 sw s0,0(s2)
a396: 85a6 mv a1,s1
a398: 8522 mv a0,s0
a39a: b7b9 j a2e8 <tcp_receive+0x808>
a39c: 4094 lw a3,0(s1)
a39e: 8926 mv s2,s1
a3a0: f6b9 bnez a3,a2ee <tcp_receive+0x80e>
a3a2: 40f707b3 sub a5,a4,a5
a3a6: eef059e3 blez a5,a298 <tcp_receive+0x7b8>
a3aa: 365c lbu a5,13(a2)
a3ac: 2648 lbu a0,12(a2)
a3ae: 07a2 slli a5,a5,0x8
a3b0: 8d5d or a0,a0,a5
a3b2: b00fd0ef jal ra,76b2 <ntohs>
a3b6: 8905 andi a0,a0,1
a3b8: ee0510e3 bnez a0,a298 <tcp_receive+0x7b8>
a3bc: 2002e537 lui a0,0x2002e
a3c0: c5450513 addi a0,a0,-940 # 2002dc54 <inseg>
a3c4: d75fe0ef jal ra,9138 <tcp_seg_copy>
a3c8: c088 sw a0,0(s1)
a3ca: ec0507e3 beqz a0,a298 <tcp_receive+0x7b8>
a3ce: 4898 lw a4,16(s1)
a3d0: 335c lbu a5,5(a4)
a3d2: 234c lbu a1,4(a4)
a3d4: 07a2 slli a5,a5,0x8
a3d6: 8ddd or a1,a1,a5
a3d8: 237c lbu a5,6(a4)
a3da: 07c2 slli a5,a5,0x10
a3dc: 8fcd or a5,a5,a1
a3de: 336c lbu a1,7(a4)
a3e0: 24da lhu a4,12(s1)
a3e2: 05e2 slli a1,a1,0x18
a3e4: 8fcd or a5,a5,a1
a3e6: 0009a583 lw a1,0(s3)
a3ea: 973e add a4,a4,a5
a3ec: 8f0d sub a4,a4,a1
a3ee: eae055e3 blez a4,a298 <tcp_receive+0x7b8>
a3f2: 8d9d sub a1,a1,a5
a3f4: 05c2 slli a1,a1,0x10
a3f6: 40c8 lw a0,4(s1)
a3f8: 81c1 srli a1,a1,0x10
a3fa: a4ce sh a1,12(s1)
a3fc: 827fe0ef jal ra,8c22 <pbuf_realloc>
a400: bd61 j a298 <tcp_receive+0x7b8>
a402: 8522 mv a0,s0
a404: 056010ef jal ra,b45a <tcp_send_empty_ack>
a408: bd41 j a298 <tcp_receive+0x7b8>
a40a: 40d78733 sub a4,a5,a3
a40e: 00074863 bltz a4,a41e <tcp_receive+0x93e>
a412: 345a lhu a4,44(s0)
a414: 0785 addi a5,a5,1
a416: 8f95 sub a5,a5,a3
a418: 8f99 sub a5,a5,a4
a41a: e6f05fe3 blez a5,a298 <tcp_receive+0x7b8>
a41e: 02644783 lbu a5,38(s0)
a422: bda9 j a27c <tcp_receive+0x79c>
0000a424 <tcp_parseopt.isra.0>:
tcp_parseopt.isra.0():
a424: 8f2f62ef jal t0,516 <__riscv_save_0>
a428: 9cc18493 addi s1,gp,-1588 # 2000020c <tcphdr>
a42c: 0004a903 lw s2,0(s1)
a430: 842a mv s0,a0
a432: 00d94783 lbu a5,13(s2)
a436: 00c94503 lbu a0,12(s2)
a43a: 07a2 slli a5,a5,0x8
a43c: 8d5d or a0,a0,a5
a43e: a74fd0ef jal ra,76b2 <ntohs>
a442: 8131 srli a0,a0,0xc
a444: 0542 slli a0,a0,0x10
a446: 8141 srli a0,a0,0x10
a448: 4795 li a5,5
a44a: 02a7fc63 bgeu a5,a0,a482 <tcp_parseopt.isra.0+0x5e>
a44e: 409c lw a5,0(s1)
a450: 0951 addi s2,s2,20
a452: 27c8 lbu a0,12(a5)
a454: 37dc lbu a5,13(a5)
a456: 07a2 slli a5,a5,0x8
a458: 8d5d or a0,a0,a5
a45a: a58fd0ef jal ra,76b2 <ntohs>
a45e: 2002e7b7 lui a5,0x2002e
a462: bd47a603 lw a2,-1068(a5) # 2002dbd4 <WCHCfg+0x4>
a466: 8131 srli a0,a0,0xc
a468: 156d addi a0,a0,-5
a46a: 050a slli a0,a0,0x2
a46c: 0542 slli a0,a0,0x10
a46e: 01061593 slli a1,a2,0x10
a472: 8141 srli a0,a0,0x10
a474: 81c1 srli a1,a1,0x10
a476: 4781 li a5,0
a478: 4805 li a6,1
a47a: 4889 li a7,2
a47c: 4311 li t1,4
a47e: 00a7e463 bltu a5,a0,a486 <tcp_parseopt.isra.0+0x62>
a482: 8b8f606f j 53a <__riscv_restore_0>
a486: 00f906b3 add a3,s2,a5
a48a: 2298 lbu a4,0(a3)
a48c: 01070963 beq a4,a6,a49e <tcp_parseopt.isra.0+0x7a>
a490: db6d beqz a4,a482 <tcp_parseopt.isra.0+0x5e>
a492: 01170a63 beq a4,a7,a4a6 <tcp_parseopt.isra.0+0x82>
a496: 3298 lbu a4,1(a3)
a498: d76d beqz a4,a482 <tcp_parseopt.isra.0+0x5e>
a49a: 97ba add a5,a5,a4
a49c: a011 j a4a0 <tcp_parseopt.isra.0+0x7c>
a49e: 0785 addi a5,a5,1
a4a0: 07c2 slli a5,a5,0x10
a4a2: 83c1 srli a5,a5,0x10
a4a4: bfe9 j a47e <tcp_parseopt.isra.0+0x5a>
a4a6: 3298 lbu a4,1(a3)
a4a8: fc671de3 bne a4,t1,a482 <tcp_parseopt.isra.0+0x5e>
a4ac: 00378713 addi a4,a5,3
a4b0: fca759e3 bge a4,a0,a482 <tcp_parseopt.isra.0+0x5e>
a4b4: 22b8 lbu a4,2(a3)
a4b6: 32b4 lbu a3,3(a3)
a4b8: 0722 slli a4,a4,0x8
a4ba: 8f55 or a4,a4,a3
a4bc: 00e66363 bltu a2,a4,a4c2 <tcp_parseopt.isra.0+0x9e>
a4c0: e311 bnez a4,a4c4 <tcp_parseopt.isra.0+0xa0>
a4c2: 872e mv a4,a1
a4c4: a01a sh a4,0(s0)
a4c6: 0791 addi a5,a5,4
a4c8: bfe1 j a4a0 <tcp_parseopt.isra.0+0x7c>
0000a4ca <tcp_input>:
tcp_input():
a4ca: 81cf62ef jal t0,4e6 <__riscv_save_12>
a4ce: 4140 lw s0,4(a0)
a4d0: 8baa mv s7,a0
a4d2: 301c lbu a5,1(s0)
a4d4: 2008 lbu a0,0(s0)
a4d6: 1141 addi sp,sp,-16
a4d8: 07a2 slli a5,a5,0x8
a4da: 9b818913 addi s2,gp,-1608 # 200001f8 <iphdr>
a4de: 8d5d or a0,a0,a5
a4e0: 89ae mv s3,a1
a4e2: 00892023 sw s0,0(s2)
a4e6: 9ccfd0ef jal ra,76b2 <ntohs>
a4ea: 00092783 lw a5,0(s2)
a4ee: 8119 srli a0,a0,0x6
a4f0: 03c57513 andi a0,a0,60
a4f4: 942a add s0,s0,a0
a4f6: 2388 lbu a0,0(a5)
a4f8: 339c lbu a5,1(a5)
a4fa: 9c81a623 sw s0,-1588(gp) # 2000020c <tcphdr>
a4fe: 07a2 slli a5,a5,0x8
a500: 8d5d or a0,a0,a5
a502: 9b0fd0ef jal ra,76b2 <ntohs>
a506: 00655593 srli a1,a0,0x6
a50a: 03c5f593 andi a1,a1,60
a50e: 40b005b3 neg a1,a1
a512: 855e mv a0,s7
a514: d12fe0ef jal ra,8a26 <pbuf_header>
a518: e511 bnez a0,a524 <tcp_input+0x5a>
a51a: 008bd703 lhu a4,8(s7)
a51e: 47cd li a5,19
a520: 00e7e863 bltu a5,a4,a530 <tcp_input+0x66>
a524: 855e mv a0,s7
a526: d6efe0ef jal ra,8a94 <pbuf_free>
a52a: 0141 addi sp,sp,16
a52c: ff7f506f j 522 <__riscv_restore_12>
a530: 9b818b13 addi s6,gp,-1608 # 200001f8 <iphdr>
a534: 000b2503 lw a0,0(s6)
a538: 85ce mv a1,s3
a53a: 0541 addi a0,a0,16
a53c: e2afd0ef jal ra,7b66 <ip_addr_isbroadcast>
a540: f175 bnez a0,a524 <tcp_input+0x5a>
a542: 000b2703 lw a4,0(s6)
a546: f0000537 lui a0,0xf0000
a54a: 3b1c lbu a5,17(a4)
a54c: 2b00 lbu s0,16(a4)
a54e: 07a2 slli a5,a5,0x8
a550: 8fc1 or a5,a5,s0
a552: 2b20 lbu s0,18(a4)
a554: 0442 slli s0,s0,0x10
a556: 8fc1 or a5,a5,s0
a558: 3b20 lbu s0,19(a4)
a55a: 0462 slli s0,s0,0x18
a55c: 8c5d or s0,s0,a5
a55e: 986fd0ef jal ra,76e4 <ntohl>
a562: 8c69 and s0,s0,a0
a564: e0000537 lui a0,0xe0000
a568: 97cfd0ef jal ra,76e4 <ntohl>
a56c: faa40ce3 beq s0,a0,a524 <tcp_input+0x5a>
a570: 000b2583 lw a1,0(s6)
a574: 008bd703 lhu a4,8(s7)
a578: 4699 li a3,6
a57a: 01058613 addi a2,a1,16
a57e: 855e mv a0,s7
a580: 05b1 addi a1,a1,12
a582: 629010ef jal ra,c3aa <inet_chksum_pseudo>
a586: fd59 bnez a0,a524 <tcp_input+0x5a>
a588: 9cc18493 addi s1,gp,-1588 # 2000020c <tcphdr>
a58c: 409c lw a5,0(s1)
a58e: 27c8 lbu a0,12(a5)
a590: 37dc lbu a5,13(a5)
a592: 07a2 slli a5,a5,0x8
a594: 8d5d or a0,a0,a5
a596: 91cfd0ef jal ra,76b2 <ntohs>
a59a: 8131 srli a0,a0,0xc
a59c: 55f1 li a1,-4
a59e: 02b505b3 mul a1,a0,a1
a5a2: 855e mv a0,s7
a5a4: 05c2 slli a1,a1,0x10
a5a6: 85c1 srai a1,a1,0x10
a5a8: c7efe0ef jal ra,8a26 <pbuf_header>
a5ac: fd25 bnez a0,a524 <tcp_input+0x5a>
a5ae: 4080 lw s0,0(s1)
a5b0: 301c lbu a5,1(s0)
a5b2: 2008 lbu a0,0(s0)
a5b4: 07a2 slli a5,a5,0x8
a5b6: 8d5d or a0,a0,a5
a5b8: 8fafd0ef jal ra,76b2 <ntohs>
a5bc: a008 sb a0,0(s0)
a5be: 8121 srli a0,a0,0x8
a5c0: b008 sb a0,1(s0)
a5c2: 4080 lw s0,0(s1)
a5c4: 303c lbu a5,3(s0)
a5c6: 2028 lbu a0,2(s0)
a5c8: 07a2 slli a5,a5,0x8
a5ca: 8d5d or a0,a0,a5
a5cc: 8e6fd0ef jal ra,76b2 <ntohs>
a5d0: a028 sb a0,2(s0)
a5d2: 8121 srli a0,a0,0x8
a5d4: b028 sb a0,3(s0)
a5d6: 4080 lw s0,0(s1)
a5d8: 3048 lbu a0,5(s0)
a5da: 205c lbu a5,4(s0)
a5dc: 0522 slli a0,a0,0x8
a5de: 8d5d or a0,a0,a5
a5e0: 207c lbu a5,6(s0)
a5e2: 07c2 slli a5,a5,0x10
a5e4: 8fc9 or a5,a5,a0
a5e6: 3068 lbu a0,7(s0)
a5e8: 0562 slli a0,a0,0x18
a5ea: 8d5d or a0,a0,a5
a5ec: 8f8fd0ef jal ra,76e4 <ntohl>
a5f0: 00855793 srli a5,a0,0x8
a5f4: b05c sb a5,5(s0)
a5f6: 01055793 srli a5,a0,0x10
a5fa: a07c sb a5,6(s0)
a5fc: 01855793 srli a5,a0,0x18
a600: a048 sb a0,4(s0)
a602: b07c sb a5,7(s0)
a604: 4080 lw s0,0(s1)
a606: 9ca1a223 sw a0,-1596(gp) # 20000204 <seqno>
a60a: 9c418a93 addi s5,gp,-1596 # 20000204 <seqno>
a60e: 3408 lbu a0,9(s0)
a610: 241c lbu a5,8(s0)
a612: 0522 slli a0,a0,0x8
a614: 8d5d or a0,a0,a5
a616: 243c lbu a5,10(s0)
a618: 07c2 slli a5,a5,0x10
a61a: 8fc9 or a5,a5,a0
a61c: 3428 lbu a0,11(s0)
a61e: 0562 slli a0,a0,0x18
a620: 8d5d or a0,a0,a5
a622: 8c2fd0ef jal ra,76e4 <ntohl>
a626: 00855793 srli a5,a0,0x8
a62a: b41c sb a5,9(s0)
a62c: 01055793 srli a5,a0,0x10
a630: a43c sb a5,10(s0)
a632: 01855793 srli a5,a0,0x18
a636: a408 sb a0,8(s0)
a638: b43c sb a5,11(s0)
a63a: 4080 lw s0,0(s1)
a63c: 9aa1a823 sw a0,-1616(gp) # 200001f0 <ackno>
a640: 9b018913 addi s2,gp,-1616 # 200001f0 <ackno>
a644: 347c lbu a5,15(s0)
a646: 2468 lbu a0,14(s0)
a648: 07a2 slli a5,a5,0x8
a64a: 8d5d or a0,a0,a5
a64c: 866fd0ef jal ra,76b2 <ntohs>
a650: 409c lw a5,0(s1)
a652: a468 sb a0,14(s0)
a654: 8121 srli a0,a0,0x8
a656: b468 sb a0,15(s0)
a658: 27c8 lbu a0,12(a5)
a65a: 37dc lbu a5,13(a5)
a65c: 07a2 slli a5,a5,0x8
a65e: 8d5d or a0,a0,a5
a660: 852fd0ef jal ra,76b2 <ntohs>
a664: 0ff57893 andi a7,a0,255
a668: 008bd503 lhu a0,8(s7)
a66c: 0038f593 andi a1,a7,3
a670: 00b035b3 snez a1,a1
a674: 95aa add a1,a1,a0
a676: 9941a303 lw t1,-1644(gp) # 200001d4 <tcp_active_pcbs>
a67a: 05c2 slli a1,a1,0x10
a67c: 4094 lw a3,0(s1)
a67e: 000b2803 lw a6,0(s6)
a682: 03f8f793 andi a5,a7,63
a686: 81c1 srli a1,a1,0x10
a688: 9af18a23 sb a5,-1612(gp) # 200001f4 <flags>
a68c: 9cb19823 sh a1,-1584(gp) # 20000210 <tcplen>
a690: 841a mv s0,t1
a692: 4601 li a2,0
a694: 9b418c93 addi s9,gp,-1612 # 200001f4 <flags>
a698: 9d018c13 addi s8,gp,-1584 # 20000210 <tcplen>
a69c: e401 bnez s0,a6a4 <tcp_input+0x1da>
a69e: 9ac1a503 lw a0,-1620(gp) # 200001ec <tcp_tw_pcbs>
a6a2: aad9 j a878 <tcp_input+0x3ae>
a6a4: 329c lbu a5,1(a3)
a6a6: 0006ce03 lbu t3,0(a3)
a6aa: 305a lhu a4,36(s0)
a6ac: 07a2 slli a5,a5,0x8
a6ae: 01c7e7b3 or a5,a5,t3
a6b2: 0ef71963 bne a4,a5,a7a4 <tcp_input+0x2da>
a6b6: 32bc lbu a5,3(a3)
a6b8: 0026ce03 lbu t3,2(a3)
a6bc: 2c5a lhu a4,28(s0)
a6be: 07a2 slli a5,a5,0x8
a6c0: 01c7e7b3 or a5,a5,t3
a6c4: 0ef71063 bne a4,a5,a7a4 <tcp_input+0x2da>
a6c8: 00d84703 lbu a4,13(a6)
a6cc: 00c84783 lbu a5,12(a6)
a6d0: 0722 slli a4,a4,0x8
a6d2: 8f5d or a4,a4,a5
a6d4: 00e84783 lbu a5,14(a6)
a6d8: 07c2 slli a5,a5,0x10
a6da: 8f5d or a4,a4,a5
a6dc: 00f84783 lbu a5,15(a6)
a6e0: 07e2 slli a5,a5,0x18
a6e2: 8fd9 or a5,a5,a4
a6e4: 4058 lw a4,4(s0)
a6e6: 0af71f63 bne a4,a5,a7a4 <tcp_input+0x2da>
a6ea: 01184703 lbu a4,17(a6)
a6ee: 01084783 lbu a5,16(a6)
a6f2: 0722 slli a4,a4,0x8
a6f4: 8f5d or a4,a4,a5
a6f6: 01284783 lbu a5,18(a6)
a6fa: 07c2 slli a5,a5,0x10
a6fc: 8f5d or a4,a4,a5
a6fe: 01384783 lbu a5,19(a6)
a702: 07e2 slli a5,a5,0x18
a704: 8fd9 or a5,a5,a4
a706: 4018 lw a4,0(s0)
a708: 08f71e63 bne a4,a5,a7a4 <tcp_input+0x2da>
a70c: c619 beqz a2,a71a <tcp_input+0x250>
a70e: 445c lw a5,12(s0)
a710: 9881aa23 sw s0,-1644(gp) # 200001d4 <tcp_active_pcbs>
a714: c65c sw a5,12(a2)
a716: 00642623 sw t1,12(s0)
a71a: 004ba703 lw a4,4(s7)
a71e: 2002edb7 lui s11,0x2002e
a722: 08842603 lw a2,136(s0)
a726: c54d8793 addi a5,s11,-940 # 2002dc54 <inseg>
a72a: 9a01ae23 sw zero,-1604(gp) # 200001fc <recv_data>
a72e: 9c018023 sb zero,-1600(gp) # 20000200 <recv_flags>
a732: 0007a023 sw zero,0(a5)
a736: a7ca sh a0,12(a5)
a738: c798 sw a4,8(a5)
a73a: 0177a223 sw s7,4(a5)
a73e: cb94 sw a3,16(a5)
a740: 9c018a13 addi s4,gp,-1600 # 20000200 <recv_flags>
a744: 9bc18d13 addi s10,gp,-1604 # 200001fc <recv_data>
a748: c54d8d93 addi s11,s11,-940
a74c: ce09 beqz a2,a766 <tcp_input+0x29c>
a74e: 09042783 lw a5,144(s0)
a752: 4681 li a3,0
a754: 85a2 mv a1,s0
a756: 2e078f63 beqz a5,aa54 <tcp_input+0x58a>
a75a: 4c08 lw a0,24(s0)
a75c: 9782 jalr a5
a75e: dc0513e3 bnez a0,a524 <tcp_input+0x5a>
a762: 08042423 sw zero,136(s0)
a766: 000cc783 lbu a5,0(s9)
a76a: 9c81a423 sw s0,-1592(gp) # 20000208 <tcp_input_pcb>
a76e: 0047f713 andi a4,a5,4
a772: 9c818b93 addi s7,gp,-1592 # 20000208 <tcp_input_pcb>
a776: 34070263 beqz a4,aaba <tcp_input+0x5f0>
a77a: 4818 lw a4,16(s0)
a77c: 4789 li a5,2
a77e: 2cf71f63 bne a4,a5,aa5c <tcp_input+0x592>
a782: 5038 lw a4,96(s0)
a784: 00092783 lw a5,0(s2)
a788: 2ef71463 bne a4,a5,aa70 <tcp_input+0x5a6>
a78c: 000a4783 lbu a5,0(s4)
a790: 0087e793 ori a5,a5,8
a794: 00fa0023 sb a5,0(s4)
a798: 02644783 lbu a5,38(s0)
a79c: 9bf9 andi a5,a5,-2
a79e: 02f40323 sb a5,38(s0)
a7a2: a4f9 j aa70 <tcp_input+0x5a6>
a7a4: 8622 mv a2,s0
a7a6: 4440 lw s0,12(s0)
a7a8: bdd5 j a69c <tcp_input+0x1d2>
a7aa: 3298 lbu a4,1(a3)
a7ac: 229c lbu a5,0(a3)
a7ae: 0722 slli a4,a4,0x8
a7b0: 8f5d or a4,a4,a5
a7b2: 315e lhu a5,36(a0)
a7b4: 0ce79163 bne a5,a4,a876 <tcp_input+0x3ac>
a7b8: 32b0 lbu a2,3(a3)
a7ba: 22b8 lbu a4,2(a3)
a7bc: 0622 slli a2,a2,0x8
a7be: 8e59 or a2,a2,a4
a7c0: 2d5a lhu a4,28(a0)
a7c2: 0ac71a63 bne a4,a2,a876 <tcp_input+0x3ac>
a7c6: 00d84303 lbu t1,13(a6)
a7ca: 00c84603 lbu a2,12(a6)
a7ce: 0322 slli t1,t1,0x8
a7d0: 00c36333 or t1,t1,a2
a7d4: 00e84603 lbu a2,14(a6)
a7d8: 0642 slli a2,a2,0x10
a7da: 00666333 or t1,a2,t1
a7de: 00f84603 lbu a2,15(a6)
a7e2: 0662 slli a2,a2,0x18
a7e4: 00666633 or a2,a2,t1
a7e8: 00452303 lw t1,4(a0) # e0000004 <__freertos_irq_stack_top+0xbffd0004>
a7ec: 08c31563 bne t1,a2,a876 <tcp_input+0x3ac>
a7f0: 01184303 lbu t1,17(a6)
a7f4: 01084603 lbu a2,16(a6)
a7f8: 0322 slli t1,t1,0x8
a7fa: 00c36333 or t1,t1,a2
a7fe: 01284603 lbu a2,18(a6)
a802: 0642 slli a2,a2,0x10
a804: 00666333 or t1,a2,t1
a808: 01384603 lbu a2,19(a6)
a80c: 0662 slli a2,a2,0x18
a80e: 00666633 or a2,a2,t1
a812: 00052303 lw t1,0(a0)
a816: 06c31063 bne t1,a2,a876 <tcp_input+0x3ac>
a81a: 0048f693 andi a3,a7,4
a81e: d00693e3 bnez a3,a524 <tcp_input+0x5a>
a822: 0028f693 andi a3,a7,2
a826: c695 beqz a3,a852 <tcp_input+0x388>
a828: 000aa883 lw a7,0(s5)
a82c: 5514 lw a3,40(a0)
a82e: 40d886b3 sub a3,a7,a3
a832: 0206c763 bltz a3,a860 <tcp_input+0x396>
a836: 3552 lhu a2,44(a0)
a838: 8e91 sub a3,a3,a2
a83a: 02d04363 bgtz a3,a860 <tcp_input+0x396>
a83e: 00c80693 addi a3,a6,12
a842: 01080613 addi a2,a6,16
a846: 95c6 add a1,a1,a7
a848: 00092503 lw a0,0(s2)
a84c: 7e7000ef jal ra,b832 <tcp_rst>
a850: b9d1 j a524 <tcp_input+0x5a>
a852: 0018f893 andi a7,a7,1
a856: 00088563 beqz a7,a860 <tcp_input+0x396>
a85a: 9a01a783 lw a5,-1632(gp) # 200001e0 <tcp_ticks>
a85e: dd1c sw a5,56(a0)
a860: cc0582e3 beqz a1,a524 <tcp_input+0x5a>
a864: 02654783 lbu a5,38(a0)
a868: 0027e793 ori a5,a5,2
a86c: 02f50323 sb a5,38(a0)
a870: 45b000ef jal ra,b4ca <tcp_output>
a874: b945 j a524 <tcp_input+0x5a>
a876: 4548 lw a0,12(a0)
a878: f90d bnez a0,a7aa <tcp_input+0x2e0>
a87a: 99c1a303 lw t1,-1636(gp) # 200001dc <tcp_listen_pcbs>
a87e: 8e3e mv t3,a5
a880: 8a1a mv s4,t1
a882: 000a1c63 bnez s4,a89a <tcp_input+0x3d0>
a886: 36dc lbu a5,13(a3)
a888: 26c8 lbu a0,12(a3)
a88a: 07a2 slli a5,a5,0x8
a88c: 8d5d or a0,a0,a5
a88e: e25fc0ef jal ra,76b2 <ntohs>
a892: 8911 andi a0,a0,4
a894: c80518e3 bnez a0,a524 <tcp_input+0x5a>
a898: a045 j a938 <tcp_input+0x46e>
a89a: 000a2603 lw a2,0(s4)
a89e: c20d beqz a2,a8c0 <tcp_input+0x3f6>
a8a0: 01184703 lbu a4,17(a6)
a8a4: 01084783 lbu a5,16(a6)
a8a8: 0722 slli a4,a4,0x8
a8aa: 8f5d or a4,a4,a5
a8ac: 01284783 lbu a5,18(a6)
a8b0: 07c2 slli a5,a5,0x10
a8b2: 8f5d or a4,a4,a5
a8b4: 01384783 lbu a5,19(a6)
a8b8: 07e2 slli a5,a5,0x18
a8ba: 8fd9 or a5,a5,a4
a8bc: 18f61863 bne a2,a5,aa4c <tcp_input+0x582>
a8c0: 32b8 lbu a4,3(a3)
a8c2: 22b0 lbu a2,2(a3)
a8c4: 01ca5783 lhu a5,28(s4)
a8c8: 0722 slli a4,a4,0x8
a8ca: 8f51 or a4,a4,a2
a8cc: 18e79063 bne a5,a4,aa4c <tcp_input+0x582>
a8d0: c901 beqz a0,a8e0 <tcp_input+0x416>
a8d2: 00ca2783 lw a5,12(s4)
a8d6: 9941ae23 sw s4,-1636(gp) # 200001dc <tcp_listen_pcbs>
a8da: c55c sw a5,12(a0)
a8dc: 006a2623 sw t1,12(s4)
a8e0: 0108f793 andi a5,a7,16
a8e4: cf89 beqz a5,a8fe <tcp_input+0x434>
a8e6: 329c lbu a5,1(a3)
a8e8: 2290 lbu a2,0(a3)
a8ea: 000aa503 lw a0,0(s5)
a8ee: 07a2 slli a5,a5,0x8
a8f0: 8fd1 or a5,a5,a2
a8f2: 00c80693 addi a3,a6,12
a8f6: 01080613 addi a2,a6,16
a8fa: 95aa add a1,a1,a0
a8fc: b7b1 j a848 <tcp_input+0x37e>
a8fe: 0028f893 andi a7,a7,2
a902: c20881e3 beqz a7,a524 <tcp_input+0x5a>
a906: 9581a883 lw a7,-1704(gp) # 20000198 <TCPVerifyConnCallback>
a90a: 04088e63 beqz a7,a966 <tcp_input+0x49c>
a90e: 00d84503 lbu a0,13(a6)
a912: 00c84783 lbu a5,12(a6)
a916: 228c lbu a1,0(a3)
a918: 0522 slli a0,a0,0x8
a91a: 8d5d or a0,a0,a5
a91c: 00e84783 lbu a5,14(a6)
a920: 3294 lbu a3,1(a3)
a922: 863a mv a2,a4
a924: 07c2 slli a5,a5,0x10
a926: 8fc9 or a5,a5,a0
a928: 00f84503 lbu a0,15(a6)
a92c: 06a2 slli a3,a3,0x8
a92e: 8dd5 or a1,a1,a3
a930: 0562 slli a0,a0,0x18
a932: 8d5d or a0,a0,a5
a934: 9882 jalr a7
a936: c905 beqz a0,a966 <tcp_input+0x49c>
a938: 4094 lw a3,0(s1)
a93a: 000b2603 lw a2,0(s6)
a93e: 000c5503 lhu a0,0(s8)
a942: 329c lbu a5,1(a3)
a944: 32b8 lbu a4,3(a3)
a946: 0006c883 lbu a7,0(a3)
a94a: 0026c803 lbu a6,2(a3)
a94e: 07a2 slli a5,a5,0x8
a950: 0722 slli a4,a4,0x8
a952: 00c60693 addi a3,a2,12
a956: 000aa583 lw a1,0(s5)
a95a: 0117e7b3 or a5,a5,a7
a95e: 01076733 or a4,a4,a6
a962: 0641 addi a2,a2,16
a964: bf59 j a8fa <tcp_input+0x430>
a966: 014a4503 lbu a0,20(s4)
a96a: e1dfe0ef jal ra,9786 <tcp_alloc>
a96e: 842a mv s0,a0
a970: ba050ae3 beqz a0,a524 <tcp_input+0x5a>
a974: 000b2783 lw a5,0(s6)
a978: 4701 li a4,0
a97a: 01078693 addi a3,a5,16
a97e: ca99 beqz a3,a994 <tcp_input+0x4ca>
a980: 3b94 lbu a3,17(a5)
a982: 2b98 lbu a4,16(a5)
a984: 06a2 slli a3,a3,0x8
a986: 8ed9 or a3,a3,a4
a988: 2bb8 lbu a4,18(a5)
a98a: 0742 slli a4,a4,0x10
a98c: 8ed9 or a3,a3,a4
a98e: 3bb8 lbu a4,19(a5)
a990: 0762 slli a4,a4,0x18
a992: 8f55 or a4,a4,a3
a994: c018 sw a4,0(s0)
a996: 01ca5703 lhu a4,28(s4)
a99a: 00c78693 addi a3,a5,12
a99e: ac5a sh a4,28(s0)
a9a0: 4701 li a4,0
a9a2: ca99 beqz a3,a9b8 <tcp_input+0x4ee>
a9a4: 37d4 lbu a3,13(a5)
a9a6: 27d8 lbu a4,12(a5)
a9a8: 06a2 slli a3,a3,0x8
a9aa: 8ed9 or a3,a3,a4
a9ac: 27f8 lbu a4,14(a5)
a9ae: 0742 slli a4,a4,0x10
a9b0: 8ed9 or a3,a3,a4
a9b2: 37f8 lbu a4,15(a5)
a9b4: 0762 slli a4,a4,0x18
a9b6: 8f55 or a4,a4,a3
a9b8: 4094 lw a3,0(s1)
a9ba: c058 sw a4,4(s0)
a9bc: 04040513 addi a0,s0,64
a9c0: 329c lbu a5,1(a3)
a9c2: 2298 lbu a4,0(a3)
a9c4: 07a2 slli a5,a5,0x8
a9c6: 8fd9 or a5,a5,a4
a9c8: 000aa703 lw a4,0(s5)
a9cc: b05e sh a5,36(s0)
a9ce: 478d li a5,3
a9d0: c81c sw a5,16(s0)
a9d2: 00170793 addi a5,a4,1
a9d6: d41c sw a5,40(s0)
a9d8: d81c sw a5,48(s0)
a9da: 36fc lbu a5,15(a3)
a9dc: 26f0 lbu a2,14(a3)
a9de: 177d addi a4,a4,-1
a9e0: 07a2 slli a5,a5,0x8
a9e2: 8fd1 or a5,a5,a2
a9e4: 06f41223 sh a5,100(s0)
a9e8: 04f41e23 sh a5,92(s0)
a9ec: 018a2783 lw a5,24(s4)
a9f0: d438 sw a4,104(s0)
a9f2: cc1c sw a5,24(s0)
a9f4: 2002e7b7 lui a5,0x2002e
a9f8: bd47d783 lhu a5,-1068(a5) # 2002dbd4 <WCHCfg+0x4>
a9fc: b45e sh a5,44(s0)
a9fe: b47e sh a5,46(s0)
aa00: 020a2783 lw a5,32(s4)
aa04: d01c sw a5,32(s0)
aa06: 008a5783 lhu a5,8(s4)
aa0a: 1997f793 andi a5,a5,409
aa0e: a41e sh a5,8(s0)
aa10: 9941a783 lw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
aa14: 9881aa23 sw s0,-1644(gp) # 200001d4 <tcp_active_pcbs>
aa18: c45c sw a5,12(s0)
aa1a: a0bff0ef jal ra,a424 <tcp_parseopt.isra.0>
aa1e: 04045503 lhu a0,64(s0)
aa22: 00440593 addi a1,s0,4
aa26: ea5fe0ef jal ra,98ca <tcp_eff_send_mss>
aa2a: 04a41023 sh a0,64(s0)
aa2e: 4785 li a5,1
aa30: 4701 li a4,0
aa32: 46c9 li a3,18
aa34: 4601 li a2,0
aa36: 4581 li a1,0
aa38: 8522 mv a0,s0
aa3a: 2b49 jal afcc <tcp_enqueue>
aa3c: c511 beqz a0,aa48 <tcp_input+0x57e>
aa3e: 4581 li a1,0
aa40: 8522 mv a0,s0
aa42: c9bfe0ef jal ra,96dc <tcp_abandon>
aa46: bcf9 j a524 <tcp_input+0x5a>
aa48: 8522 mv a0,s0
aa4a: b51d j a870 <tcp_input+0x3a6>
aa4c: 8552 mv a0,s4
aa4e: 00ca2a03 lw s4,12(s4)
aa52: bd05 j a882 <tcp_input+0x3b8>
aa54: 4501 li a0,0
aa56: b57fe0ef jal ra,95ac <tcp_recv_null>
aa5a: b311 j a75e <tcp_input+0x294>
aa5c: 000aa783 lw a5,0(s5)
aa60: 5418 lw a4,40(s0)
aa62: 8f99 sub a5,a5,a4
aa64: 0007c663 bltz a5,aa70 <tcp_input+0x5a6>
aa68: 345a lhu a4,44(s0)
aa6a: 8f99 sub a5,a5,a4
aa6c: d2f050e3 blez a5,a78c <tcp_input+0x2c2>
aa70: 000a4783 lbu a5,0(s4)
aa74: 0087f713 andi a4,a5,8
aa78: 3e070063 beqz a4,ae58 <tcp_input+0x98e>
aa7c: 00f10593 addi a1,sp,15
aa80: 8522 mv a0,s0
aa82: 873fb0ef jal ra,62f4 <WCHFindCorrectTCBPcb>
aa86: 4785 li a5,1
aa88: 00f51663 bne a0,a5,aa94 <tcp_input+0x5ca>
aa8c: 4818 lw a4,16(s0)
aa8e: 4789 li a5,2
aa90: 1cf70163 beq a4,a5,ac52 <tcp_input+0x788>
aa94: 8522 mv a0,s0
aa96: f35fb0ef jal ra,69ca <LwipRemoveTcpPcb>
aa9a: 09c42783 lw a5,156(s0)
aa9e: c781 beqz a5,aaa6 <tcp_input+0x5dc>
aaa0: 4c08 lw a0,24(s0)
aaa2: 55e9 li a1,-6
aaa4: 9782 jalr a5
aaa6: 85a2 mv a1,s0
aaa8: 99418513 addi a0,gp,-1644 # 200001d4 <tcp_active_pcbs>
aaac: 9ddfe0ef jal ra,9488 <tcp_pcb_remove>
aab0: 85a2 mv a1,s0
aab2: 4509 li a0,2
aab4: e0ffd0ef jal ra,88c2 <memp_free>
aab8: aa69 j ac52 <tcp_input+0x788>
aaba: 8b89 andi a5,a5,2
aabc: c385 beqz a5,aadc <tcp_input+0x612>
aabe: 481c lw a5,16(s0)
aac0: 4705 li a4,1
aac2: 17f9 addi a5,a5,-2
aac4: 00f77c63 bgeu a4,a5,aadc <tcp_input+0x612>
aac8: 02644783 lbu a5,38(s0)
aacc: 8522 mv a0,s0
aace: 0027e793 ori a5,a5,2
aad2: 02f40323 sb a5,38(s0)
aad6: 1f5000ef jal ra,b4ca <tcp_output>
aada: bf59 j aa70 <tcp_input+0x5a6>
aadc: 9a01a783 lw a5,-1632(gp) # 200001e0 <tcp_ticks>
aae0: 0a0408a3 sb zero,177(s0)
aae4: 04040513 addi a0,s0,64
aae8: dc1c sw a5,56(s0)
aaea: 93bff0ef jal ra,a424 <tcp_parseopt.isra.0>
aaee: 481c lw a5,16(s0)
aaf0: 471d li a4,7
aaf2: 17f9 addi a5,a5,-2
aaf4: f6f76ee3 bltu a4,a5,aa70 <tcp_input+0x5a6>
aaf8: 6735 lui a4,0xd
aafa: 078a slli a5,a5,0x2
aafc: 3ec70713 addi a4,a4,1004 # d3ec <tcp_backoff+0x10>
ab00: 97ba add a5,a5,a4
ab02: 439c lw a5,0(a5)
ab04: 8782 jr a5
ab06: 000cc783 lbu a5,0(s9)
ab0a: 4749 li a4,18
ab0c: 8bc9 andi a5,a5,18
ab0e: 0ce79263 bne a5,a4,abd2 <tcp_input+0x708>
ab12: 08042783 lw a5,128(s0)
ab16: 4b98 lw a4,16(a5)
ab18: 3348 lbu a0,5(a4)
ab1a: 235c lbu a5,4(a4)
ab1c: 0522 slli a0,a0,0x8
ab1e: 8d5d or a0,a0,a5
ab20: 237c lbu a5,6(a4)
ab22: 07c2 slli a5,a5,0x10
ab24: 8fc9 or a5,a5,a0
ab26: 3368 lbu a0,7(a4)
ab28: 0562 slli a0,a0,0x18
ab2a: 8d5d or a0,a0,a5
ab2c: bb9fc0ef jal ra,76e4 <ntohl>
ab30: 00092783 lw a5,0(s2)
ab34: 0505 addi a0,a0,1
ab36: 08f51e63 bne a0,a5,abd2 <tcp_input+0x708>
ab3a: 07645783 lhu a5,118(s0)
ab3e: 000aa703 lw a4,0(s5)
ab42: 4094 lw a3,0(s1)
ab44: 0785 addi a5,a5,1
ab46: 06f41b23 sh a5,118(s0)
ab4a: 00170793 addi a5,a4,1
ab4e: c868 sw a0,84(s0)
ab50: d41c sw a5,40(s0)
ab52: d81c sw a5,48(s0)
ab54: 36fc lbu a5,15(a3)
ab56: 26f0 lbu a2,14(a3)
ab58: 04045503 lhu a0,64(s0)
ab5c: 07a2 slli a5,a5,0x8
ab5e: 8fd1 or a5,a5,a2
ab60: 177d addi a4,a4,-1
ab62: 06f41223 sh a5,100(s0)
ab66: 4791 li a5,4
ab68: d438 sw a4,104(s0)
ab6a: c81c sw a5,16(s0)
ab6c: 00440593 addi a1,s0,4
ab70: d5bfe0ef jal ra,98ca <tcp_eff_send_mss>
ab74: 47a9 li a5,10
ab76: 02f507b3 mul a5,a0,a5
ab7a: 05a45703 lhu a4,90(s0)
ab7e: 04a41023 sh a0,64(s0)
ab82: 04f41e23 sh a5,92(s0)
ab86: 4785 li a5,1
ab88: 00f71563 bne a4,a5,ab92 <tcp_input+0x6c8>
ab8c: 0506 slli a0,a0,0x1
ab8e: 0542 slli a0,a0,0x10
ab90: 8141 srli a0,a0,0x10
ab92: 07845783 lhu a5,120(s0)
ab96: 04a41d23 sh a0,90(s0)
ab9a: 08042503 lw a0,128(s0)
ab9e: 17fd addi a5,a5,-1
aba0: 06f41c23 sh a5,120(s0)
aba4: 411c lw a5,0(a0)
aba6: 04040923 sb zero,82(s0)
abaa: 04042223 sw zero,68(s0)
abae: 08f42023 sw a5,128(s0)
abb2: 0017b793 seqz a5,a5
abb6: 40f007b3 neg a5,a5
abba: bc7e sh a5,62(s0)
abbc: d34fe0ef jal ra,90f0 <tcp_seg_free>
abc0: 09442783 lw a5,148(s0)
abc4: f00782e3 beqz a5,aac8 <tcp_input+0x5fe>
abc8: 4c08 lw a0,24(s0)
abca: 4601 li a2,0
abcc: 85a2 mv a1,s0
abce: 9782 jalr a5
abd0: bde5 j aac8 <tcp_input+0x5fe>
abd2: 000cc783 lbu a5,0(s9)
abd6: 8bc1 andi a5,a5,16
abd8: e8078ce3 beqz a5,aa70 <tcp_input+0x5a6>
abdc: 4094 lw a3,0(s1)
abde: 000c5503 lhu a0,0(s8)
abe2: 000aa583 lw a1,0(s5)
abe6: 329c lbu a5,1(a3)
abe8: 32b8 lbu a4,3(a3)
abea: 000b2603 lw a2,0(s6)
abee: 0006c883 lbu a7,0(a3)
abf2: 0026c803 lbu a6,2(a3)
abf6: 95aa add a1,a1,a0
abf8: 00092503 lw a0,0(s2)
abfc: 07a2 slli a5,a5,0x8
abfe: 0722 slli a4,a4,0x8
ac00: 00c60693 addi a3,a2,12
ac04: 0117e7b3 or a5,a5,a7
ac08: 01076733 or a4,a4,a6
ac0c: 0641 addi a2,a2,16
ac0e: 425000ef jal ra,b832 <tcp_rst>
ac12: bdb9 j aa70 <tcp_input+0x5a6>
ac14: 000cc783 lbu a5,0(s9)
ac18: 0107f713 andi a4,a5,16
ac1c: c769 beqz a4,ace6 <tcp_input+0x81c>
ac1e: 00092503 lw a0,0(s2)
ac22: 4878 lw a4,84(s0)
ac24: fff50793 addi a5,a0,-1
ac28: 8f99 sub a5,a5,a4
ac2a: 0807c663 bltz a5,acb6 <tcp_input+0x7ec>
ac2e: 503c lw a5,96(s0)
ac30: 40f507b3 sub a5,a0,a5
ac34: 08f04163 bgtz a5,acb6 <tcp_input+0x7ec>
ac38: 4791 li a5,4
ac3a: c81c sw a5,16(s0)
ac3c: 501c lw a5,32(s0)
ac3e: c78d beqz a5,ac68 <tcp_input+0x79e>
ac40: 4c08 lw a0,24(s0)
ac42: 4601 li a2,0
ac44: 85a2 mv a1,s0
ac46: 9782 jalr a5
ac48: c105 beqz a0,ac68 <tcp_input+0x79e>
ac4a: 4585 li a1,1
ac4c: 8522 mv a0,s0
ac4e: a8ffe0ef jal ra,96dc <tcp_abandon>
ac52: 004da503 lw a0,4(s11)
ac56: 000ba023 sw zero,0(s7)
ac5a: 8c0508e3 beqz a0,a52a <tcp_input+0x60>
ac5e: e37fd0ef jal ra,8a94 <pbuf_free>
ac62: 000da223 sw zero,4(s11)
ac66: b0d1 j a52a <tcp_input+0x60>
ac68: 8522 mv a0,s0
ac6a: 05a45483 lhu s1,90(s0)
ac6e: e73fe0ef jal ra,9ae0 <tcp_receive>
ac72: 07445783 lhu a5,116(s0)
ac76: c781 beqz a5,ac7e <tcp_input+0x7b4>
ac78: 17fd addi a5,a5,-1
ac7a: 06f41a23 sh a5,116(s0)
ac7e: 4705 li a4,1
ac80: 04045783 lhu a5,64(s0)
ac84: 00e49563 bne s1,a4,ac8e <tcp_input+0x7c4>
ac88: 0786 slli a5,a5,0x1
ac8a: 07c2 slli a5,a5,0x10
ac8c: 83c1 srli a5,a5,0x10
ac8e: 04f41d23 sh a5,90(s0)
ac92: 000a4783 lbu a5,0(s4)
ac96: 0207f793 andi a5,a5,32
ac9a: dc078be3 beqz a5,aa70 <tcp_input+0x5a6>
ac9e: 02644783 lbu a5,38(s0)
aca2: 8522 mv a0,s0
aca4: 0027e793 ori a5,a5,2
aca8: 02f40323 sb a5,38(s0)
acac: 01f000ef jal ra,b4ca <tcp_output>
acb0: 479d li a5,7
acb2: c81c sw a5,16(s0)
acb4: bb75 j aa70 <tcp_input+0x5a6>
acb6: 4094 lw a3,0(s1)
acb8: 000b2603 lw a2,0(s6)
acbc: 000c5803 lhu a6,0(s8)
acc0: 329c lbu a5,1(a3)
acc2: 32b8 lbu a4,3(a3)
acc4: 0006c303 lbu t1,0(a3)
acc8: 0026c883 lbu a7,2(a3)
accc: 000aa583 lw a1,0(s5)
acd0: 07a2 slli a5,a5,0x8
acd2: 0722 slli a4,a4,0x8
acd4: 00c60693 addi a3,a2,12
acd8: 0067e7b3 or a5,a5,t1
acdc: 01176733 or a4,a4,a7
ace0: 0641 addi a2,a2,16
ace2: 95c2 add a1,a1,a6
ace4: b72d j ac0e <tcp_input+0x744>
ace6: 8b89 andi a5,a5,2
ace8: d80784e3 beqz a5,aa70 <tcp_input+0x5a6>
acec: 541c lw a5,40(s0)
acee: 000aa703 lw a4,0(s5)
acf2: 17fd addi a5,a5,-1
acf4: d6e79ee3 bne a5,a4,aa70 <tcp_input+0x5a6>
acf8: 8522 mv a0,s0
acfa: 477000ef jal ra,b970 <tcp_rexmit>
acfe: bb8d j aa70 <tcp_input+0x5a6>
ad00: 8522 mv a0,s0
ad02: ddffe0ef jal ra,9ae0 <tcp_receive>
ad06: b771 j ac92 <tcp_input+0x7c8>
ad08: 8522 mv a0,s0
ad0a: dd7fe0ef jal ra,9ae0 <tcp_receive>
ad0e: 000a4783 lbu a5,0(s4)
ad12: 0207f793 andi a5,a5,32
ad16: c3c1 beqz a5,ad96 <tcp_input+0x8cc>
ad18: 000cc703 lbu a4,0(s9)
ad1c: 02644783 lbu a5,38(s0)
ad20: 8b41 andi a4,a4,16
ad22: 0027e793 ori a5,a5,2
ad26: c32d beqz a4,ad88 <tcp_input+0x8be>
ad28: 5034 lw a3,96(s0)
ad2a: 00092703 lw a4,0(s2)
ad2e: 04e69d63 bne a3,a4,ad88 <tcp_input+0x8be>
ad32: 02f40323 sb a5,38(s0)
ad36: 8522 mv a0,s0
ad38: 792000ef jal ra,b4ca <tcp_output>
ad3c: 8522 mv a0,s0
ad3e: c42fe0ef jal ra,9180 <tcp_pcb_purge>
ad42: 9941a783 lw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
ad46: 00f41d63 bne s0,a5,ad60 <tcp_input+0x896>
ad4a: 445c lw a5,12(s0)
ad4c: 98f1aa23 sw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
ad50: 47a9 li a5,10
ad52: c81c sw a5,16(s0)
ad54: 9ac1a703 lw a4,-1620(gp) # 200001ec <tcp_tw_pcbs>
ad58: 9a81a623 sw s0,-1620(gp) # 200001ec <tcp_tw_pcbs>
ad5c: c458 sw a4,12(s0)
ad5e: bb09 j aa70 <tcp_input+0x5a6>
ad60: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
ad64: 4681 li a3,0
ad66: e789 bnez a5,ad70 <tcp_input+0x8a6>
ad68: d6e5 beqz a3,ad50 <tcp_input+0x886>
ad6a: 9a01a423 sw zero,-1624(gp) # 200001e8 <tcp_tmp_pcb>
ad6e: b7cd j ad50 <tcp_input+0x886>
ad70: 47d0 lw a2,12(a5)
ad72: 00c41863 bne s0,a2,ad82 <tcp_input+0x8b8>
ad76: c299 beqz a3,ad7c <tcp_input+0x8b2>
ad78: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
ad7c: 4458 lw a4,12(s0)
ad7e: c7d8 sw a4,12(a5)
ad80: bfc1 j ad50 <tcp_input+0x886>
ad82: 4685 li a3,1
ad84: 87b2 mv a5,a2
ad86: b7c5 j ad66 <tcp_input+0x89c>
ad88: 02f40323 sb a5,38(s0)
ad8c: 8522 mv a0,s0
ad8e: 73c000ef jal ra,b4ca <tcp_output>
ad92: 47a1 li a5,8
ad94: bf39 j acb2 <tcp_input+0x7e8>
ad96: 000cc783 lbu a5,0(s9)
ad9a: 8bc1 andi a5,a5,16
ad9c: cc078ae3 beqz a5,aa70 <tcp_input+0x5a6>
ada0: 5038 lw a4,96(s0)
ada2: 00092783 lw a5,0(s2)
ada6: ccf715e3 bne a4,a5,aa70 <tcp_input+0x5a6>
adaa: 4799 li a5,6
adac: b719 j acb2 <tcp_input+0x7e8>
adae: 8522 mv a0,s0
adb0: d31fe0ef jal ra,9ae0 <tcp_receive>
adb4: 000a4783 lbu a5,0(s4)
adb8: 0207f793 andi a5,a5,32
adbc: ca078ae3 beqz a5,aa70 <tcp_input+0x5a6>
adc0: 02644783 lbu a5,38(s0)
adc4: 8522 mv a0,s0
adc6: 0027e793 ori a5,a5,2
adca: 02f40323 sb a5,38(s0)
adce: 6fc000ef jal ra,b4ca <tcp_output>
add2: 8522 mv a0,s0
add4: bacfe0ef jal ra,9180 <tcp_pcb_purge>
add8: 9941a783 lw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
addc: f6f407e3 beq s0,a5,ad4a <tcp_input+0x880>
ade0: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
ade4: 4681 li a3,0
ade6: d3c9 beqz a5,ad68 <tcp_input+0x89e>
ade8: 47d0 lw a2,12(a5)
adea: f8c406e3 beq s0,a2,ad76 <tcp_input+0x8ac>
adee: 4685 li a3,1
adf0: 87b2 mv a5,a2
adf2: bfd5 j ade6 <tcp_input+0x91c>
adf4: 8522 mv a0,s0
adf6: cebfe0ef jal ra,9ae0 <tcp_receive>
adfa: 000cc783 lbu a5,0(s9)
adfe: 8bc1 andi a5,a5,16
ae00: c60788e3 beqz a5,aa70 <tcp_input+0x5a6>
ae04: 5038 lw a4,96(s0)
ae06: 00092783 lw a5,0(s2)
ae0a: c6f713e3 bne a4,a5,aa70 <tcp_input+0x5a6>
ae0e: 8522 mv a0,s0
ae10: b70fe0ef jal ra,9180 <tcp_pcb_purge>
ae14: 9941a783 lw a5,-1644(gp) # 200001d4 <tcp_active_pcbs>
ae18: f2f409e3 beq s0,a5,ad4a <tcp_input+0x880>
ae1c: 9af1a423 sw a5,-1624(gp) # 200001e8 <tcp_tmp_pcb>
ae20: 4681 li a3,0
ae22: d3b9 beqz a5,ad68 <tcp_input+0x89e>
ae24: 47d0 lw a2,12(a5)
ae26: f4c408e3 beq s0,a2,ad76 <tcp_input+0x8ac>
ae2a: 4685 li a3,1
ae2c: 87b2 mv a5,a2
ae2e: bfd5 j ae22 <tcp_input+0x958>
ae30: 8522 mv a0,s0
ae32: caffe0ef jal ra,9ae0 <tcp_receive>
ae36: 000cc783 lbu a5,0(s9)
ae3a: 8bc1 andi a5,a5,16
ae3c: c2078ae3 beqz a5,aa70 <tcp_input+0x5a6>
ae40: 5038 lw a4,96(s0)
ae42: 00092783 lw a5,0(s2)
ae46: c2f715e3 bne a4,a5,aa70 <tcp_input+0x5a6>
ae4a: 000a4783 lbu a5,0(s4)
ae4e: 0107e793 ori a5,a5,16
ae52: 00fa0023 sb a5,0(s4)
ae56: b929 j aa70 <tcp_input+0x5a6>
ae58: 8bc1 andi a5,a5,16
ae5a: c785 beqz a5,ae82 <tcp_input+0x9b8>
ae5c: 8522 mv a0,s0
ae5e: b6dfb0ef jal ra,69ca <LwipRemoveTcpPcb>
ae62: 85a2 mv a1,s0
ae64: 99418513 addi a0,gp,-1644 # 200001d4 <tcp_active_pcbs>
ae68: e20fe0ef jal ra,9488 <tcp_pcb_remove>
ae6c: 4509 li a0,2
ae6e: 85a2 mv a1,s0
ae70: a53fd0ef jal ra,88c2 <memp_free>
ae74: 000d2503 lw a0,0(s10)
ae78: dc050de3 beqz a0,ac52 <tcp_input+0x788>
ae7c: c19fd0ef jal ra,8a94 <pbuf_free>
ae80: bbc9 j ac52 <tcp_input+0x788>
ae82: 07445603 lhu a2,116(s0)
ae86: c619 beqz a2,ae94 <tcp_input+0x9ca>
ae88: 08c42783 lw a5,140(s0)
ae8c: c781 beqz a5,ae94 <tcp_input+0x9ca>
ae8e: 4c08 lw a0,24(s0)
ae90: 85a2 mv a1,s0
ae92: 9782 jalr a5
ae94: 000d2603 lw a2,0(s10)
ae98: c60d beqz a2,aec2 <tcp_input+0x9f8>
ae9a: 000cc783 lbu a5,0(s9)
ae9e: 8ba1 andi a5,a5,8
aea0: c789 beqz a5,aeaa <tcp_input+0x9e0>
aea2: 365c lbu a5,13(a2)
aea4: 0017e793 ori a5,a5,1
aea8: b65c sb a5,13(a2)
aeaa: 09042783 lw a5,144(s0)
aeae: 4681 li a3,0
aeb0: 85a2 mv a1,s0
aeb2: cb9d beqz a5,aee8 <tcp_input+0xa1e>
aeb4: 4c08 lw a0,24(s0)
aeb6: 9782 jalr a5
aeb8: c509 beqz a0,aec2 <tcp_input+0x9f8>
aeba: 000d2783 lw a5,0(s10)
aebe: 08f42423 sw a5,136(s0)
aec2: 000a4783 lbu a5,0(s4)
aec6: 0207f793 andi a5,a5,32
aeca: cb89 beqz a5,aedc <tcp_input+0xa12>
aecc: 09042783 lw a5,144(s0)
aed0: 4681 li a3,0
aed2: 4601 li a2,0
aed4: 85a2 mv a1,s0
aed6: cf89 beqz a5,aef0 <tcp_input+0xa26>
aed8: 4c08 lw a0,24(s0)
aeda: 9782 jalr a5
aedc: 8522 mv a0,s0
aede: 000ba023 sw zero,0(s7)
aee2: 5e8000ef jal ra,b4ca <tcp_output>
aee6: b3b5 j ac52 <tcp_input+0x788>
aee8: 4501 li a0,0
aeea: ec2fe0ef jal ra,95ac <tcp_recv_null>
aeee: b7e9 j aeb8 <tcp_input+0x9ee>
aef0: 4501 li a0,0
aef2: ebafe0ef jal ra,95ac <tcp_recv_null>
aef6: b7dd j aedc <tcp_input+0xa12>
0000aef8 <tcp_output_set_header.isra.0.constprop.1>:
tcp_output_set_header.isra.0.constprop.1():
aef8: e1ef52ef jal t0,516 <__riscv_save_0>
aefc: 892a mv s2,a0
aefe: 2d4a lhu a0,28(a0)
af00: 1141 addi sp,sp,-16
af02: 842e mv s0,a1
af04: c632 sw a2,12(sp)
af06: f9efc0ef jal ra,76a4 <htons>
af0a: a008 sb a0,0(s0)
af0c: 8121 srli a0,a0,0x8
af0e: b008 sb a0,1(s0)
af10: 02495503 lhu a0,36(s2)
af14: f90fc0ef jal ra,76a4 <htons>
af18: 4632 lw a2,12(sp)
af1a: a028 sb a0,2(s0)
af1c: 8121 srli a0,a0,0x8
af1e: b028 sb a0,3(s0)
af20: 00865793 srli a5,a2,0x8
af24: 02892503 lw a0,40(s2)
af28: a050 sb a2,4(s0)
af2a: b05c sb a5,5(s0)
af2c: 01065793 srli a5,a2,0x10
af30: 8261 srli a2,a2,0x18
af32: b070 sb a2,7(s0)
af34: a07c sb a5,6(s0)
af36: f8afc0ef jal ra,76c0 <htonl>
af3a: 00855793 srli a5,a0,0x8
af3e: a408 sb a0,8(s0)
af40: b41c sb a5,9(s0)
af42: 3444 lbu s1,13(s0)
af44: 01055793 srli a5,a0,0x10
af48: 8161 srli a0,a0,0x18
af4a: b428 sb a0,11(s0)
af4c: 2448 lbu a0,12(s0)
af4e: 04a2 slli s1,s1,0x8
af50: a43c sb a5,10(s0)
af52: 8cc9 or s1,s1,a0
af54: 6541 lui a0,0x10
af56: fc050513 addi a0,a0,-64 # ffc0 <_data_lma+0x2aac>
af5a: f4afc0ef jal ra,76a4 <htons>
af5e: 8ce9 and s1,s1,a0
af60: 4541 li a0,16
af62: f42fc0ef jal ra,76a4 <htons>
af66: 8d45 or a0,a0,s1
af68: 0542 slli a0,a0,0x10
af6a: 8141 srli a0,a0,0x10
af6c: a448 sb a0,12(s0)
af6e: 8121 srli a0,a0,0x8
af70: b448 sb a0,13(s0)
af72: 02e95503 lhu a0,46(s2)
af76: f2efc0ef jal ra,76a4 <htons>
af7a: 02e95783 lhu a5,46(s2)
af7e: a468 sb a0,14(s0)
af80: 8121 srli a0,a0,0x8
af82: b468 sb a0,15(s0)
af84: 02f91b23 sh a5,54(s2)
af88: 345c lbu a5,13(s0)
af8a: 2448 lbu a0,12(s0)
af8c: 00040923 sb zero,18(s0)
af90: 07a2 slli a5,a5,0x8
af92: 000409a3 sb zero,19(s0)
af96: 8d5d or a0,a0,a5
af98: f1afc0ef jal ra,76b2 <ntohs>
af9c: 6795 lui a5,0x5
af9e: 03f57513 andi a0,a0,63
afa2: 8d5d or a0,a0,a5
afa4: f00fc0ef jal ra,76a4 <htons>
afa8: 02e95703 lhu a4,46(s2)
afac: 02892783 lw a5,40(s2)
afb0: a448 sb a0,12(s0)
afb2: 8121 srli a0,a0,0x8
afb4: b448 sb a0,13(s0)
afb6: 00040823 sb zero,16(s0)
afba: 000408a3 sb zero,17(s0)
afbe: 97ba add a5,a5,a4
afc0: 02f92823 sw a5,48(s2)
afc4: 8522 mv a0,s0
afc6: 0141 addi sp,sp,16
afc8: d72f506f j 53a <__riscv_restore_0>
0000afcc <tcp_enqueue>:
tcp_enqueue():
afcc: d1af52ef jal t0,4e6 <__riscv_save_12>
afd0: 7179 addi sp,sp,-48
afd2: c62e sw a1,12(sp)
afd4: ca3a sw a4,20(sp)
afd6: 892a mv s2,a0
afd8: 8ab2 mv s5,a2
afda: 8b36 mv s6,a3
afdc: 8dbe mv s11,a5
afde: ee01 bnez a2,aff6 <tcp_enqueue+0x2a>
afe0: 0036f793 andi a5,a3,3
afe4: 00fde7b3 or a5,s11,a5
afe8: 5a59 li s4,-10
afea: c391 beqz a5,afee <tcp_enqueue+0x22>
afec: c18d beqz a1,b00e <tcp_enqueue+0x42>
afee: 8552 mv a0,s4
aff0: 6145 addi sp,sp,48
aff2: d30f506f j 522 <__riscv_restore_12>
aff6: 07655783 lhu a5,118(a0)
affa: 00c7fa63 bgeu a5,a2,b00e <tcp_enqueue+0x42>
affe: 02694783 lbu a5,38(s2)
b002: 5a7d li s4,-1
b004: f807e793 ori a5,a5,-128
b008: 02f90323 sb a5,38(s2)
b00c: b7cd j afee <tcp_enqueue+0x22>
b00e: 002d9793 slli a5,s11,0x2
b012: 002df713 andi a4,s11,2
b016: 8b91 andi a5,a5,4
b018: 46b1 li a3,12
b01a: e311 bnez a4,b01e <tcp_enqueue+0x52>
b01c: 4681 li a3,0
b01e: 97b6 add a5,a5,a3
b020: c23e sw a5,4(sp)
b022: 07092783 lw a5,112(s2)
b026: 2002ed37 lui s10,0x2002e
b02a: bd0d0713 addi a4,s10,-1072 # 2002dbd0 <WCHCfg>
b02e: c43e sw a5,8(sp)
b030: 471c lw a5,8(a4)
b032: 4358 lw a4,4(a4)
b034: 07895483 lhu s1,120(s2)
b038: 078a slli a5,a5,0x2
b03a: 02e7d7b3 divu a5,a5,a4
b03e: bd0d0d13 addi s10,s10,-1072
b042: faf4fee3 bgeu s1,a5,affe <tcp_enqueue+0x32>
b046: 6741 lui a4,0x10
b048: ffc70693 addi a3,a4,-4 # fffc <_data_lma+0x2ae8>
b04c: fa96e9e3 bltu a3,s1,affe <tcp_enqueue+0x32>
b050: 4792 lw a5,4(sp)
b052: 8230 lhu a2,4(sp)
b054: fc070713 addi a4,a4,-64
b058: 8389 srli a5,a5,0x2
b05a: 0ff7f793 andi a5,a5,255
b05e: 0795 addi a5,a5,5
b060: c832 sw a2,16(sp)
b062: 4652 lw a2,20(sp)
b064: 07b2 slli a5,a5,0xc
b066: 07c2 slli a5,a5,0x10
b068: d23a sw a4,36(sp)
b06a: 4cb2 lw s9,12(sp)
b06c: 010b1713 slli a4,s6,0x10
b070: 83c1 srli a5,a5,0x10
b072: 8a05 andi a2,a2,1
b074: 8341 srli a4,a4,0x10
b076: cc3e sw a5,24(sp)
b078: 8bd6 mv s7,s5
b07a: 4981 li s3,0
b07c: 4781 li a5,0
b07e: ce32 sw a2,28(sp)
b080: d036 sw a3,32(sp)
b082: d43a sw a4,40(sp)
b084: 04095a03 lhu s4,64(s2)
b088: 4712 lw a4,4(sp)
b08a: 40ea0a33 sub s4,s4,a4
b08e: 014bd363 bge s7,s4,b094 <tcp_enqueue+0xc8>
b092: 8a5e mv s4,s7
b094: 4511 li a0,4
b096: d63e sw a5,44(sp)
b098: 010a1c13 slli s8,s4,0x10
b09c: 807fd0ef jal ra,88a2 <memp_malloc>
b0a0: 010c5c13 srli s8,s8,0x10
b0a4: 842a mv s0,a0
b0a6: 18050663 beqz a0,b232 <tcp_enqueue+0x266>
b0aa: 00052023 sw zero,0(a0)
b0ae: 00052223 sw zero,4(a0)
b0b2: 14098463 beqz s3,b1fa <tcp_enqueue+0x22e>
b0b6: 57b2 lw a5,44(sp)
b0b8: c388 sw a0,0(a5)
b0ba: 47f2 lw a5,28(sp)
b0bc: 14078163 beqz a5,b1fe <tcp_enqueue+0x232>
b0c0: 47c2 lw a5,16(sp)
b0c2: 4601 li a2,0
b0c4: 4501 li a0,0
b0c6: 00fc05b3 add a1,s8,a5
b0ca: 05c2 slli a1,a1,0x10
b0cc: 81c1 srli a1,a1,0x10
b0ce: a15fd0ef jal ra,8ae2 <pbuf_alloc>
b0d2: c048 sw a0,4(s0)
b0d4: 14050f63 beqz a0,b232 <tcp_enqueue+0x266>
b0d8: ba3fd0ef jal ra,8c7a <pbuf_clen>
b0dc: 47b2 lw a5,12(sp)
b0de: 94aa add s1,s1,a0
b0e0: 04c2 slli s1,s1,0x10
b0e2: 80c1 srli s1,s1,0x10
b0e4: cf81 beqz a5,b0fc <tcp_enqueue+0x130>
b0e6: 405c lw a5,4(s0)
b0e8: 85e6 mv a1,s9
b0ea: 43c8 lw a0,4(a5)
b0ec: 67c1 lui a5,0x10
b0ee: 17fd addi a5,a5,-1
b0f0: 00fa7633 and a2,s4,a5
b0f4: 4792 lw a5,4(sp)
b0f6: 953e add a0,a0,a5
b0f8: 5d9010ef jal ra,ced0 <memcpy>
b0fc: 405c lw a5,4(s0)
b0fe: 43dc lw a5,4(a5)
b100: c41c sw a5,8(s0)
b102: 008d2783 lw a5,8(s10)
b106: 004d2703 lw a4,4(s10)
b10a: 078a slli a5,a5,0x2
b10c: 02e7d7b3 divu a5,a5,a4
b110: 1297e163 bltu a5,s1,b232 <tcp_enqueue+0x266>
b114: 5782 lw a5,32(sp)
b116: 1097ee63 bltu a5,s1,b232 <tcp_enqueue+0x266>
b11a: 4048 lw a0,4(s0)
b11c: 01841623 sh s8,12(s0)
b120: 45d1 li a1,20
b122: 905fd0ef jal ra,8a26 <pbuf_header>
b126: 10051663 bnez a0,b232 <tcp_enqueue+0x266>
b12a: 405c lw a5,4(s0)
b12c: 01c95503 lhu a0,28(s2)
b130: 418b8bb3 sub s7,s7,s8
b134: 43dc lw a5,4(a5)
b136: 0bc2 slli s7,s7,0x10
b138: 010bdb93 srli s7,s7,0x10
b13c: c81c sw a5,16(s0)
b13e: d63e sw a5,44(sp)
b140: d64fc0ef jal ra,76a4 <htons>
b144: 57b2 lw a5,44(sp)
b146: a388 sb a0,0(a5)
b148: 8121 srli a0,a0,0x8
b14a: b388 sb a0,1(a5)
b14c: 481c lw a5,16(s0)
b14e: 02495503 lhu a0,36(s2)
b152: d63e sw a5,44(sp)
b154: d50fc0ef jal ra,76a4 <htons>
b158: 57b2 lw a5,44(sp)
b15a: a3a8 sb a0,2(a5)
b15c: 8121 srli a0,a0,0x8
b15e: b3a8 sb a0,3(a5)
b160: 481c lw a5,16(s0)
b162: 4522 lw a0,8(sp)
b164: d63e sw a5,44(sp)
b166: d5afc0ef jal ra,76c0 <htonl>
b16a: 57b2 lw a5,44(sp)
b16c: 00855713 srli a4,a0,0x8
b170: b3d8 sb a4,5(a5)
b172: 01055713 srli a4,a0,0x10
b176: a3f8 sb a4,6(a5)
b178: 4818 lw a4,16(s0)
b17a: a3c8 sb a0,4(a5)
b17c: 8161 srli a0,a0,0x18
b17e: b3e8 sb a0,7(a5)
b180: 375c lbu a5,13(a4)
b182: 2748 lbu a0,12(a4)
b184: 00070923 sb zero,18(a4)
b188: 07a2 slli a5,a5,0x8
b18a: 8fc9 or a5,a5,a0
b18c: 5512 lw a0,36(sp)
b18e: 000709a3 sb zero,19(a4)
b192: d63e sw a5,44(sp)
b194: d10fc0ef jal ra,76a4 <htons>
b198: 57b2 lw a5,44(sp)
b19a: 8fe9 and a5,a5,a0
b19c: 5522 lw a0,40(sp)
b19e: d63e sw a5,44(sp)
b1a0: d04fc0ef jal ra,76a4 <htons>
b1a4: 57b2 lw a5,44(sp)
b1a6: 8d5d or a0,a0,a5
b1a8: 0542 slli a0,a0,0x10
b1aa: 481c lw a5,16(s0)
b1ac: 8141 srli a0,a0,0x10
b1ae: 00855713 srli a4,a0,0x8
b1b2: b7d8 sb a4,13(a5)
b1b4: a7c8 sb a0,12(a5)
b1b6: 01b40723 sb s11,14(s0)
b1ba: cf8fc0ef jal ra,76b2 <ntohs>
b1be: 481c lw a5,16(s0)
b1c0: 03f57513 andi a0,a0,63
b1c4: d63e sw a5,44(sp)
b1c6: 47e2 lw a5,24(sp)
b1c8: 8d5d or a0,a0,a5
b1ca: cdafc0ef jal ra,76a4 <htons>
b1ce: 57b2 lw a5,44(sp)
b1d0: a7c8 sb a0,12(a5)
b1d2: 8121 srli a0,a0,0x8
b1d4: b7c8 sb a0,13(a5)
b1d6: 67c1 lui a5,0x10
b1d8: 17fd addi a5,a5,-1
b1da: 00fa7a33 and s4,s4,a5
b1de: 47a2 lw a5,8(sp)
b1e0: 9cd2 add s9,s9,s4
b1e2: 97d2 add a5,a5,s4
b1e4: c43e sw a5,8(sp)
b1e6: 87a2 mv a5,s0
b1e8: e80b9ee3 bnez s7,b084 <tcp_enqueue+0xb8>
b1ec: 07c92a03 lw s4,124(s2)
b1f0: 060a1963 bnez s4,b262 <tcp_enqueue+0x296>
b1f4: 07392e23 sw s3,124(s2)
b1f8: a251 j b37c <tcp_enqueue+0x3b0>
b1fa: 89aa mv s3,a0
b1fc: bd7d j b0ba <tcp_enqueue+0xee>
b1fe: 45c2 lw a1,16(sp)
b200: 4601 li a2,0
b202: 4501 li a0,0
b204: 8dffd0ef jal ra,8ae2 <pbuf_alloc>
b208: c048 sw a0,4(s0)
b20a: c505 beqz a0,b232 <tcp_enqueue+0x266>
b20c: a6ffd0ef jal ra,8c7a <pbuf_clen>
b210: 94aa add s1,s1,a0
b212: 04c2 slli s1,s1,0x10
b214: 80c1 srli s1,s1,0x10
b216: ee0b86e3 beqz s7,b102 <tcp_enqueue+0x136>
b21a: 85e2 mv a1,s8
b21c: 4605 li a2,1
b21e: 450d li a0,3
b220: 8c3fd0ef jal ra,8ae2 <pbuf_alloc>
b224: 85aa mv a1,a0
b226: 4048 lw a0,4(s0)
b228: e195 bnez a1,b24c <tcp_enqueue+0x280>
b22a: 86bfd0ef jal ra,8a94 <pbuf_free>
b22e: 00042223 sw zero,4(s0)
b232: 02694783 lbu a5,38(s2)
b236: 5a7d li s4,-1
b238: f807e793 ori a5,a5,-128
b23c: 02f90323 sb a5,38(s2)
b240: da0987e3 beqz s3,afee <tcp_enqueue+0x22>
b244: 854e mv a0,s3
b246: ed5fd0ef jal ra,911a <tcp_segs_free>
b24a: b355 j afee <tcp_enqueue+0x22>
b24c: 0195a223 sw s9,4(a1)
b250: 0485 addi s1,s1,1
b252: 04c2 slli s1,s1,0x10
b254: 01942423 sw s9,8(s0)
b258: 80c1 srli s1,s1,0x10
b25a: a3dfd0ef jal ra,8c96 <pbuf_cat>
b25e: b555 j b102 <tcp_enqueue+0x136>
b260: 8a3e mv s4,a5
b262: 000a2783 lw a5,0(s4)
b266: ffed bnez a5,b260 <tcp_enqueue+0x294>
b268: 010a2783 lw a5,16(s4)
b26c: 00ca5b83 lhu s7,12(s4)
b270: 27c8 lbu a0,12(a5)
b272: 37dc lbu a5,13(a5)
b274: 07a2 slli a5,a5,0x8
b276: 8d5d or a0,a0,a5
b278: c3afc0ef jal ra,76b2 <ntohs>
b27c: 890d andi a0,a0,3
b27e: 00a03533 snez a0,a0
b282: 955e add a0,a0,s7
b284: 18050563 beqz a0,b40e <tcp_enqueue+0x442>
b288: 010a2783 lw a5,16(s4)
b28c: 27c8 lbu a0,12(a5)
b28e: 37dc lbu a5,13(a5)
b290: 07a2 slli a5,a5,0x8
b292: 8d5d or a0,a0,a5
b294: c1efc0ef jal ra,76b2 <ntohs>
b298: 890d andi a0,a0,3
b29a: 16051a63 bnez a0,b40e <tcp_enqueue+0x442>
b29e: 003b7793 andi a5,s6,3
b2a2: c781 beqz a5,b2aa <tcp_enqueue+0x2de>
b2a4: 4785 li a5,1
b2a6: 16fb1463 bne s6,a5,b40e <tcp_enqueue+0x442>
b2aa: 00c9d703 lhu a4,12(s3)
b2ae: 00ca5783 lhu a5,12(s4)
b2b2: 97ba add a5,a5,a4
b2b4: 04095703 lhu a4,64(s2)
b2b8: 14f74b63 blt a4,a5,b40e <tcp_enqueue+0x442>
b2bc: 00ea4703 lbu a4,14(s4)
b2c0: 00e9c783 lbu a5,14(s3)
b2c4: 14f71563 bne a4,a5,b40e <tcp_enqueue+0x442>
b2c8: 010a2703 lw a4,16(s4)
b2cc: 3348 lbu a0,5(a4)
b2ce: 235c lbu a5,4(a4)
b2d0: 0522 slli a0,a0,0x8
b2d2: 8d5d or a0,a0,a5
b2d4: 237c lbu a5,6(a4)
b2d6: 07c2 slli a5,a5,0x10
b2d8: 8fc9 or a5,a5,a0
b2da: 3368 lbu a0,7(a4)
b2dc: 0562 slli a0,a0,0x18
b2de: 8d5d or a0,a0,a5
b2e0: c04fc0ef jal ra,76e4 <ntohl>
b2e4: 0109a703 lw a4,16(s3)
b2e8: 00ca5b83 lhu s7,12(s4)
b2ec: 235c lbu a5,4(a4)
b2ee: 9baa add s7,s7,a0
b2f0: 3348 lbu a0,5(a4)
b2f2: 0522 slli a0,a0,0x8
b2f4: 8d5d or a0,a0,a5
b2f6: 237c lbu a5,6(a4)
b2f8: 07c2 slli a5,a5,0x10
b2fa: 8fc9 or a5,a5,a0
b2fc: 3368 lbu a0,7(a4)
b2fe: 0562 slli a0,a0,0x18
b300: 8d5d or a0,a0,a5
b302: be2fc0ef jal ra,76e4 <ntohl>
b306: 10ab9463 bne s7,a0,b40e <tcp_enqueue+0x442>
b30a: 47c2 lw a5,16(sp)
b30c: 55b1 li a1,-20
b30e: 0049a503 lw a0,4(s3)
b312: 8d9d sub a1,a1,a5
b314: 05c2 slli a1,a1,0x10
b316: 85c1 srai a1,a1,0x10
b318: f0efd0ef jal ra,8a26 <pbuf_header>
b31c: f0051be3 bnez a0,b232 <tcp_enqueue+0x266>
b320: 0049a503 lw a0,4(s3)
b324: 253e lhu a5,10(a0)
b326: eb99 bnez a5,b33c <tcp_enqueue+0x370>
b328: 411c lw a5,0(a0)
b32a: 14fd addi s1,s1,-1
b32c: 04c2 slli s1,s1,0x10
b32e: 00f9a223 sw a5,4(s3)
b332: 00052023 sw zero,0(a0)
b336: 80c1 srli s1,s1,0x10
b338: f5cfd0ef jal ra,8a94 <pbuf_free>
b33c: 001b7793 andi a5,s6,1
b340: c7cd beqz a5,b3ea <tcp_enqueue+0x41e>
b342: 010a2783 lw a5,16(s4)
b346: 00d7cb83 lbu s7,13(a5) # 1000d <_data_lma+0x2af9>
b34a: 27c8 lbu a0,12(a5)
b34c: 0ba2 slli s7,s7,0x8
b34e: 00abebb3 or s7,s7,a0
b352: 4505 li a0,1
b354: b50fc0ef jal ra,76a4 <htons>
b358: 010a2783 lw a5,16(s4)
b35c: 00abe533 or a0,s7,a0
b360: 0542 slli a0,a0,0x10
b362: 8141 srli a0,a0,0x10
b364: a7c8 sb a0,12(a5)
b366: 8121 srli a0,a0,0x8
b368: b7c8 sb a0,13(a5)
b36a: 00899563 bne s3,s0,b374 <tcp_enqueue+0x3a8>
b36e: 00ca5c03 lhu s8,12(s4)
b372: 8452 mv s0,s4
b374: 85ce mv a1,s3
b376: 4511 li a0,4
b378: d4afd0ef jal ra,88c2 <memp_free>
b37c: 003b7793 andi a5,s6,3
b380: c789 beqz a5,b38a <tcp_enqueue+0x3be>
b382: 0a85 addi s5,s5,1
b384: 0ac2 slli s5,s5,0x10
b386: 010ada93 srli s5,s5,0x10
b38a: 001b7b13 andi s6,s6,1
b38e: 000b0863 beqz s6,b39e <tcp_enqueue+0x3d2>
b392: 02694783 lbu a5,38(s2)
b396: 0207e793 ori a5,a5,32
b39a: 02f90323 sb a5,38(s2)
b39e: 07092783 lw a5,112(s2)
b3a2: 06991c23 sh s1,120(s2)
b3a6: 4a01 li s4,0
b3a8: 97d6 add a5,a5,s5
b3aa: 06f92823 sw a5,112(s2)
b3ae: 07695783 lhu a5,118(s2)
b3b2: 41578ab3 sub s5,a5,s5
b3b6: 07591b23 sh s5,118(s2)
b3ba: c20c0ae3 beqz s8,afee <tcp_enqueue+0x22>
b3be: 481c lw a5,16(s0)
b3c0: c20787e3 beqz a5,afee <tcp_enqueue+0x22>
b3c4: 4752 lw a4,20(sp)
b3c6: 8b09 andi a4,a4,2
b3c8: c20713e3 bnez a4,afee <tcp_enqueue+0x22>
b3cc: 37c4 lbu s1,13(a5)
b3ce: 27c8 lbu a0,12(a5)
b3d0: 04a2 slli s1,s1,0x8
b3d2: 8cc9 or s1,s1,a0
b3d4: 4521 li a0,8
b3d6: acefc0ef jal ra,76a4 <htons>
b3da: 481c lw a5,16(s0)
b3dc: 8d45 or a0,a0,s1
b3de: 0542 slli a0,a0,0x10
b3e0: 8141 srli a0,a0,0x10
b3e2: a7c8 sb a0,12(a5)
b3e4: 8121 srli a0,a0,0x8
b3e6: b7c8 sb a0,13(a5)
b3e8: b119 j afee <tcp_enqueue+0x22>
b3ea: 0049a583 lw a1,4(s3)
b3ee: 004a2503 lw a0,4(s4)
b3f2: 8a5fd0ef jal ra,8c96 <pbuf_cat>
b3f6: 00c9d703 lhu a4,12(s3)
b3fa: 00ca5783 lhu a5,12(s4)
b3fe: 97ba add a5,a5,a4
b400: 00fa1623 sh a5,12(s4)
b404: 0009a783 lw a5,0(s3)
b408: 00fa2023 sw a5,0(s4)
b40c: bfb9 j b36a <tcp_enqueue+0x39e>
b40e: 013a2023 sw s3,0(s4)
b412: b7ad j b37c <tcp_enqueue+0x3b0>
0000b414 <tcp_send_ctrl>:
tcp_send_ctrl():
b414: 902f52ef jal t0,516 <__riscv_save_0>
b418: 86ae mv a3,a1
b41a: 4781 li a5,0
b41c: 4705 li a4,1
b41e: 4601 li a2,0
b420: 4581 li a1,0
b422: babff0ef jal ra,afcc <tcp_enqueue>
b426: 914f506f j 53a <__riscv_restore_0>
0000b42a <tcp_write>:
tcp_write():
b42a: 87aa mv a5,a0
b42c: 4908 lw a0,16(a0)
b42e: 471d li a4,7
b430: 00e50863 beq a0,a4,b440 <tcp_write+0x16>
b434: ffe50813 addi a6,a0,-2
b438: 4709 li a4,2
b43a: 5561 li a0,-8
b43c: 01076e63 bltu a4,a6,b458 <tcp_write+0x2e>
b440: 4501 li a0,0
b442: ca19 beqz a2,b458 <tcp_write+0x2e>
b444: 8d2f52ef jal t0,516 <__riscv_save_0>
b448: 8736 mv a4,a3
b44a: 853e mv a0,a5
b44c: 4681 li a3,0
b44e: 4781 li a5,0
b450: b7dff0ef jal ra,afcc <tcp_enqueue>
b454: 8e6f506f j 53a <__riscv_restore_0>
b458: 8082 ret
0000b45a <tcp_send_empty_ack>:
tcp_send_empty_ack():
b45a: 8a2f52ef jal t0,4fc <__riscv_save_4>
b45e: 842a mv s0,a0
b460: 4601 li a2,0
b462: 45d1 li a1,20
b464: 4505 li a0,1
b466: e7cfd0ef jal ra,8ae2 <pbuf_alloc>
b46a: cd31 beqz a0,b4c6 <tcp_send_empty_ack+0x6c>
b46c: 02644783 lbu a5,38(s0)
b470: 84aa mv s1,a0
b472: 5028 lw a0,96(s0)
b474: 9bf1 andi a5,a5,-4
b476: 02f40323 sb a5,38(s0)
b47a: a46fc0ef jal ra,76c0 <htonl>
b47e: 40cc lw a1,4(s1)
b480: 862a mv a2,a0
b482: 8522 mv a0,s0
b484: a75ff0ef jal ra,aef8 <tcp_output_set_header.isra.0.constprop.1>
b488: 249a lhu a4,8(s1)
b48a: 00440913 addi s2,s0,4
b48e: 89aa mv s3,a0
b490: 4699 li a3,6
b492: 864a mv a2,s2
b494: 85a2 mv a1,s0
b496: 8526 mv a0,s1
b498: 713000ef jal ra,c3aa <inet_chksum_pseudo>
b49c: 00a98823 sb a0,16(s3)
b4a0: 8121 srli a0,a0,0x8
b4a2: 00a988a3 sb a0,17(s3)
b4a6: 2438 lbu a4,10(s0)
b4a8: 3434 lbu a3,11(s0)
b4aa: 4799 li a5,6
b4ac: 864a mv a2,s2
b4ae: 85a2 mv a1,s0
b4b0: 8526 mv a0,s1
b4b2: e7efc0ef jal ra,7b30 <ip_output>
b4b6: 8526 mv a0,s1
b4b8: ddcfd0ef jal ra,8a94 <pbuf_free>
b4bc: 4501 li a0,0
b4be: 020403a3 sb zero,39(s0)
b4c2: 86ef506f j 530 <__riscv_restore_4>
b4c6: 5579 li a0,-2
b4c8: bfed j b4c2 <tcp_send_empty_ack+0x68>
0000b4ca <tcp_output>:
tcp_output():
b4ca: 9c81a783 lw a5,-1592(gp) # 20000208 <tcp_input_pcb>
b4ce: 36a78063 beq a5,a0,b82e <tcp_output+0x364>
b4d2: 814f52ef jal t0,4e6 <__riscv_save_12>
b4d6: 06455783 lhu a5,100(a0)
b4da: 05a55a03 lhu s4,90(a0)
b4de: 0147f363 bgeu a5,s4,b4e4 <tcp_output+0x1a>
b4e2: 8a3e mv s4,a5
b4e4: 02654783 lbu a5,38(a0)
b4e8: 0a42 slli s4,s4,0x10
b4ea: 842a mv s0,a0
b4ec: 8b89 andi a5,a5,2
b4ee: 010a5a13 srli s4,s4,0x10
b4f2: 5d64 lw s1,124(a0)
b4f4: cb95 beqz a5,b528 <tcp_output+0x5e>
b4f6: e491 bnez s1,b502 <tcp_output+0x38>
b4f8: 8522 mv a0,s0
b4fa: f61ff0ef jal ra,b45a <tcp_send_empty_ack>
b4fe: 824f506f j 522 <__riscv_restore_12>
b502: 4898 lw a4,16(s1)
b504: 3348 lbu a0,5(a4)
b506: 235c lbu a5,4(a4)
b508: 0522 slli a0,a0,0x8
b50a: 8d5d or a0,a0,a5
b50c: 237c lbu a5,6(a4)
b50e: 07c2 slli a5,a5,0x10
b510: 8fc9 or a5,a5,a0
b512: 3368 lbu a0,7(a4)
b514: 0562 slli a0,a0,0x18
b516: 8d5d or a0,a0,a5
b518: 9ccfc0ef jal ra,76e4 <ntohl>
b51c: 24de lhu a5,12(s1)
b51e: 4878 lw a4,84(s0)
b520: 8f99 sub a5,a5,a4
b522: 953e add a0,a0,a5
b524: fcaa6ae3 bltu s4,a0,b4f8 <tcp_output+0x2e>
b528: 08042983 lw s3,128(s0)
b52c: 08099663 bnez s3,b5b8 <tcp_output+0xee>
b530: 2002eab7 lui s5,0x2002e
b534: 4b89 li s7,2
b536: bd0a8a93 addi s5,s5,-1072 # 2002dbd0 <WCHCfg>
b53a: 02040c37 lui s8,0x2040
b53e: 00440b13 addi s6,s0,4
b542: 5cfd li s9,-1
b544: c0ad beqz s1,b5a6 <tcp_output+0xdc>
b546: 4898 lw a4,16(s1)
b548: 3348 lbu a0,5(a4)
b54a: 235c lbu a5,4(a4)
b54c: 0522 slli a0,a0,0x8
b54e: 8d5d or a0,a0,a5
b550: 237c lbu a5,6(a4)
b552: 07c2 slli a5,a5,0x10
b554: 8fc9 or a5,a5,a0
b556: 3368 lbu a0,7(a4)
b558: 0562 slli a0,a0,0x18
b55a: 8d5d or a0,a0,a5
b55c: 988fc0ef jal ra,76e4 <ntohl>
b560: 24de lhu a5,12(s1)
b562: 4878 lw a4,84(s0)
b564: 8f99 sub a5,a5,a4
b566: 953e add a0,a0,a5
b568: 04aa7c63 bgeu s4,a0,b5c0 <tcp_output+0xf6>
b56c: 0b044783 lbu a5,176(s0)
b570: eb9d bnez a5,b5a6 <tcp_output+0xdc>
b572: 4898 lw a4,16(s1)
b574: 3348 lbu a0,5(a4)
b576: 235c lbu a5,4(a4)
b578: 0522 slli a0,a0,0x8
b57a: 8d5d or a0,a0,a5
b57c: 237c lbu a5,6(a4)
b57e: 07c2 slli a5,a5,0x10
b580: 8fc9 or a5,a5,a0
b582: 3368 lbu a0,7(a4)
b584: 0562 slli a0,a0,0x18
b586: 8d5d or a0,a0,a5
b588: 95cfc0ef jal ra,76e4 <ntohl>
b58c: 24de lhu a5,12(s1)
b58e: 4878 lw a4,84(s0)
b590: 8f99 sub a5,a5,a4
b592: 953e add a0,a0,a5
b594: 06445783 lhu a5,100(s0)
b598: 00a7f763 bgeu a5,a0,b5a6 <tcp_output+0xdc>
b59c: 4785 li a5,1
b59e: 0a042623 sw zero,172(s0)
b5a2: 0af40823 sb a5,176(s0)
b5a6: 02644783 lbu a5,38(s0)
b5aa: 4501 li a0,0
b5ac: 07f7f793 andi a5,a5,127
b5b0: 02f40323 sb a5,38(s0)
b5b4: b7a9 j b4fe <tcp_output+0x34>
b5b6: 89be mv s3,a5
b5b8: 0009a783 lw a5,0(s3)
b5bc: ffed bnez a5,b5b6 <tcp_output+0xec>
b5be: bf8d j b530 <tcp_output+0x66>
b5c0: 08042783 lw a5,128(s0)
b5c4: c395 beqz a5,b5e8 <tcp_output+0x11e>
b5c6: 02644783 lbu a5,38(s0)
b5ca: 0447f713 andi a4,a5,68
b5ce: ef09 bnez a4,b5e8 <tcp_output+0x11e>
b5d0: 5c78 lw a4,124(s0)
b5d2: cb01 beqz a4,b5e2 <tcp_output+0x118>
b5d4: 4314 lw a3,0(a4)
b5d6: ea89 bnez a3,b5e8 <tcp_output+0x11e>
b5d8: 2756 lhu a3,12(a4)
b5da: 04045703 lhu a4,64(s0)
b5de: 00e6f563 bgeu a3,a4,b5e8 <tcp_output+0x11e>
b5e2: 0a07f793 andi a5,a5,160
b5e6: d3d9 beqz a5,b56c <tcp_output+0xa2>
b5e8: 409c lw a5,0(s1)
b5ea: dc7c sw a5,124(s0)
b5ec: 481c lw a5,16(s0)
b5ee: 03778963 beq a5,s7,b620 <tcp_output+0x156>
b5f2: 489c lw a5,16(s1)
b5f4: 00d7c903 lbu s2,13(a5)
b5f8: 27c8 lbu a0,12(a5)
b5fa: 0922 slli s2,s2,0x8
b5fc: 00a96933 or s2,s2,a0
b600: 4541 li a0,16
b602: 8a2fc0ef jal ra,76a4 <htons>
b606: 489c lw a5,16(s1)
b608: 00a96533 or a0,s2,a0
b60c: 0542 slli a0,a0,0x10
b60e: 8141 srli a0,a0,0x10
b610: a7c8 sb a0,12(a5)
b612: 8121 srli a0,a0,0x8
b614: b7c8 sb a0,13(a5)
b616: 02644783 lbu a5,38(s0)
b61a: 9bf1 andi a5,a5,-4
b61c: 02f40323 sb a5,38(s0)
b620: 5408 lw a0,40(s0)
b622: 0104a903 lw s2,16(s1)
b626: 89afc0ef jal ra,76c0 <htonl>
b62a: 00855793 srli a5,a0,0x8
b62e: 00a90423 sb a0,8(s2)
b632: 00f904a3 sb a5,9(s2)
b636: 01055793 srli a5,a0,0x10
b63a: 8161 srli a0,a0,0x18
b63c: 00a905a3 sb a0,11(s2)
b640: 346a lhu a0,46(s0)
b642: 00f90523 sb a5,10(s2)
b646: 0104a903 lw s2,16(s1)
b64a: 85afc0ef jal ra,76a4 <htons>
b64e: 347a lhu a4,46(s0)
b650: 541c lw a5,40(s0)
b652: 00a90723 sb a0,14(s2)
b656: 8121 srli a0,a0,0x8
b658: 00a907a3 sb a0,15(s2)
b65c: 97ba add a5,a5,a4
b65e: b87a sh a4,54(s0)
b660: d81c sw a5,48(s0)
b662: 24fc lbu a5,14(s1)
b664: 8b85 andi a5,a5,1
b666: cb99 beqz a5,b67c <tcp_output+0x1b2>
b668: 004aa503 lw a0,4(s5)
b66c: 0104a903 lw s2,16(s1)
b670: 00ac6533 or a0,s8,a0
b674: 84cfc0ef jal ra,76c0 <htonl>
b678: 00a92a23 sw a0,20(s2)
b67c: 401c lw a5,0(s0)
b67e: e799 bnez a5,b68c <tcp_output+0x1c2>
b680: 855a mv a0,s6
b682: 86efc0ef jal ra,76f0 <ip_route>
b686: c559 beqz a0,b714 <tcp_output+0x24a>
b688: 415c lw a5,4(a0)
b68a: c01c sw a5,0(s0)
b68c: 03e41783 lh a5,62(s0)
b690: 01979463 bne a5,s9,b698 <tcp_output+0x1ce>
b694: 02041f23 sh zero,62(s0)
b698: 407c lw a5,68(s0)
b69a: e395 bnez a5,b6be <tcp_output+0x1f4>
b69c: 9a01a783 lw a5,-1632(gp) # 200001e0 <tcp_ticks>
b6a0: 4898 lw a4,16(s1)
b6a2: c07c sw a5,68(s0)
b6a4: 3348 lbu a0,5(a4)
b6a6: 235c lbu a5,4(a4)
b6a8: 0522 slli a0,a0,0x8
b6aa: 8d5d or a0,a0,a5
b6ac: 237c lbu a5,6(a4)
b6ae: 07c2 slli a5,a5,0x10
b6b0: 8fc9 or a5,a5,a0
b6b2: 3368 lbu a0,7(a4)
b6b4: 0562 slli a0,a0,0x18
b6b6: 8d5d or a0,a0,a5
b6b8: 82cfc0ef jal ra,76e4 <ntohl>
b6bc: c428 sw a0,72(s0)
b6be: 40c8 lw a0,4(s1)
b6c0: 0104a903 lw s2,16(s1)
b6c4: 4699 li a3,6
b6c6: 4158 lw a4,4(a0)
b6c8: 01252223 sw s2,4(a0)
b6cc: 865a mv a2,s6
b6ce: 40e90733 sub a4,s2,a4
b6d2: 01071793 slli a5,a4,0x10
b6d6: 253a lhu a4,10(a0)
b6d8: 83c1 srli a5,a5,0x10
b6da: 85a2 mv a1,s0
b6dc: 8f1d sub a4,a4,a5
b6de: a53a sh a4,10(a0)
b6e0: 251a lhu a4,8(a0)
b6e2: 8f1d sub a4,a4,a5
b6e4: 0742 slli a4,a4,0x10
b6e6: 8341 srli a4,a4,0x10
b6e8: a51a sh a4,8(a0)
b6ea: 00090823 sb zero,16(s2)
b6ee: 000908a3 sb zero,17(s2)
b6f2: 4b9000ef jal ra,c3aa <inet_chksum_pseudo>
b6f6: 00a90823 sb a0,16(s2)
b6fa: 8121 srli a0,a0,0x8
b6fc: 00a908a3 sb a0,17(s2)
b700: 2438 lbu a4,10(s0)
b702: 3434 lbu a3,11(s0)
b704: 40c8 lw a0,4(s1)
b706: 4799 li a5,6
b708: 865a mv a2,s6
b70a: 85a2 mv a1,s0
b70c: c24fc0ef jal ra,7b30 <ip_output>
b710: 020403a3 sb zero,39(s0)
b714: 4898 lw a4,16(s1)
b716: 3348 lbu a0,5(a4)
b718: 235c lbu a5,4(a4)
b71a: 0522 slli a0,a0,0x8
b71c: 8d5d or a0,a0,a5
b71e: 237c lbu a5,6(a4)
b720: 07c2 slli a5,a5,0x10
b722: 8fc9 or a5,a5,a0
b724: 3368 lbu a0,7(a4)
b726: 0562 slli a0,a0,0x18
b728: 8d5d or a0,a0,a5
b72a: fbbfb0ef jal ra,76e4 <ntohl>
b72e: 489c lw a5,16(s1)
b730: 892a mv s2,a0
b732: 00c4dd83 lhu s11,12(s1)
b736: 27c8 lbu a0,12(a5)
b738: 37dc lbu a5,13(a5)
b73a: 07a2 slli a5,a5,0x8
b73c: 8d5d or a0,a0,a5
b73e: f75fb0ef jal ra,76b2 <ntohs>
b742: 890d andi a0,a0,3
b744: 00a03533 snez a0,a0
b748: 503c lw a5,96(s0)
b74a: 956e add a0,a0,s11
b74c: 954a add a0,a0,s2
b74e: 8f89 sub a5,a5,a0
b750: 0007d363 bgez a5,b756 <tcp_output+0x28c>
b754: d028 sw a0,96(s0)
b756: 489c lw a5,16(s1)
b758: 00c4d903 lhu s2,12(s1)
b75c: 27c8 lbu a0,12(a5)
b75e: 37dc lbu a5,13(a5)
b760: 07a2 slli a5,a5,0x8
b762: 8d5d or a0,a0,a5
b764: f4ffb0ef jal ra,76b2 <ntohs>
b768: 890d andi a0,a0,3
b76a: 00a03533 snez a0,a0
b76e: 954a add a0,a0,s2
b770: c95d beqz a0,b826 <tcp_output+0x35c>
b772: 08042783 lw a5,128(s0)
b776: 0004a023 sw zero,0(s1)
b77a: e789 bnez a5,b784 <tcp_output+0x2ba>
b77c: 08942023 sw s1,128(s0)
b780: 89a6 mv s3,s1
b782: a899 j b7d8 <tcp_output+0x30e>
b784: 4898 lw a4,16(s1)
b786: 3348 lbu a0,5(a4)
b788: 235c lbu a5,4(a4)
b78a: 0522 slli a0,a0,0x8
b78c: 8d5d or a0,a0,a5
b78e: 237c lbu a5,6(a4)
b790: 07c2 slli a5,a5,0x10
b792: 8fc9 or a5,a5,a0
b794: 3368 lbu a0,7(a4)
b796: 0562 slli a0,a0,0x18
b798: 8d5d or a0,a0,a5
b79a: f4bfb0ef jal ra,76e4 <ntohl>
b79e: 0109a703 lw a4,16(s3)
b7a2: 892a mv s2,a0
b7a4: 3348 lbu a0,5(a4)
b7a6: 235c lbu a5,4(a4)
b7a8: 0522 slli a0,a0,0x8
b7aa: 8d5d or a0,a0,a5
b7ac: 237c lbu a5,6(a4)
b7ae: 07c2 slli a5,a5,0x10
b7b0: 8fc9 or a5,a5,a0
b7b2: 3368 lbu a0,7(a4)
b7b4: 0562 slli a0,a0,0x18
b7b6: 8d5d or a0,a0,a5
b7b8: f2dfb0ef jal ra,76e4 <ntohl>
b7bc: 40a90533 sub a0,s2,a0
b7c0: 06055063 bgez a0,b820 <tcp_output+0x356>
b7c4: 08040913 addi s2,s0,128
b7c8: 00092783 lw a5,0(s2)
b7cc: eb81 bnez a5,b7dc <tcp_output+0x312>
b7ce: 00092783 lw a5,0(s2)
b7d2: c09c sw a5,0(s1)
b7d4: 00992023 sw s1,0(s2)
b7d8: 5c64 lw s1,124(s0)
b7da: b3ad j b544 <tcp_output+0x7a>
b7dc: 4b98 lw a4,16(a5)
b7de: 3348 lbu a0,5(a4)
b7e0: 235c lbu a5,4(a4)
b7e2: 0522 slli a0,a0,0x8
b7e4: 8d5d or a0,a0,a5
b7e6: 237c lbu a5,6(a4)
b7e8: 07c2 slli a5,a5,0x10
b7ea: 8fc9 or a5,a5,a0
b7ec: 3368 lbu a0,7(a4)
b7ee: 0562 slli a0,a0,0x18
b7f0: 8d5d or a0,a0,a5
b7f2: ef3fb0ef jal ra,76e4 <ntohl>
b7f6: 4898 lw a4,16(s1)
b7f8: 8daa mv s11,a0
b7fa: 3348 lbu a0,5(a4)
b7fc: 235c lbu a5,4(a4)
b7fe: 0522 slli a0,a0,0x8
b800: 8d5d or a0,a0,a5
b802: 237c lbu a5,6(a4)
b804: 07c2 slli a5,a5,0x10
b806: 8fc9 or a5,a5,a0
b808: 3368 lbu a0,7(a4)
b80a: 0562 slli a0,a0,0x18
b80c: 8d5d or a0,a0,a5
b80e: ed7fb0ef jal ra,76e4 <ntohl>
b812: 40ad8533 sub a0,s11,a0
b816: fa055ce3 bgez a0,b7ce <tcp_output+0x304>
b81a: 00092903 lw s2,0(s2)
b81e: b76d j b7c8 <tcp_output+0x2fe>
b820: 0099a023 sw s1,0(s3)
b824: bfb1 j b780 <tcp_output+0x2b6>
b826: 8526 mv a0,s1
b828: 8c9fd0ef jal ra,90f0 <tcp_seg_free>
b82c: b775 j b7d8 <tcp_output+0x30e>
b82e: 4501 li a0,0
b830: 8082 ret
0000b832 <tcp_rst>:
tcp_rst():
b832: ccbf42ef jal t0,4fc <__riscv_save_4>
b836: 1141 addi sp,sp,-16
b838: 8aaa mv s5,a0
b83a: 84ae mv s1,a1
b83c: 89b2 mv s3,a2
b83e: 45d1 li a1,20
b840: 4601 li a2,0
b842: 4505 li a0,1
b844: 8a36 mv s4,a3
b846: c63a sw a4,12(sp)
b848: 8b3e mv s6,a5
b84a: a98fd0ef jal ra,8ae2 <pbuf_alloc>
b84e: 0e050363 beqz a0,b934 <tcp_rst+0x102>
b852: 4732 lw a4,12(sp)
b854: 4140 lw s0,4(a0)
b856: 892a mv s2,a0
b858: 853a mv a0,a4
b85a: e4bfb0ef jal ra,76a4 <htons>
b85e: a008 sb a0,0(s0)
b860: 8121 srli a0,a0,0x8
b862: b008 sb a0,1(s0)
b864: 855a mv a0,s6
b866: e3ffb0ef jal ra,76a4 <htons>
b86a: a028 sb a0,2(s0)
b86c: 8121 srli a0,a0,0x8
b86e: b028 sb a0,3(s0)
b870: 8556 mv a0,s5
b872: e4ffb0ef jal ra,76c0 <htonl>
b876: 00855793 srli a5,a0,0x8
b87a: a048 sb a0,4(s0)
b87c: b05c sb a5,5(s0)
b87e: 01055793 srli a5,a0,0x10
b882: 8161 srli a0,a0,0x18
b884: a07c sb a5,6(s0)
b886: b068 sb a0,7(s0)
b888: 8526 mv a0,s1
b88a: e37fb0ef jal ra,76c0 <htonl>
b88e: 00855793 srli a5,a0,0x8
b892: a408 sb a0,8(s0)
b894: b41c sb a5,9(s0)
b896: 3444 lbu s1,13(s0)
b898: 01055793 srli a5,a0,0x10
b89c: 8161 srli a0,a0,0x18
b89e: b428 sb a0,11(s0)
b8a0: 2448 lbu a0,12(s0)
b8a2: 04a2 slli s1,s1,0x8
b8a4: a43c sb a5,10(s0)
b8a6: 8cc9 or s1,s1,a0
b8a8: 6541 lui a0,0x10
b8aa: fc050513 addi a0,a0,-64 # ffc0 <_data_lma+0x2aac>
b8ae: df7fb0ef jal ra,76a4 <htons>
b8b2: 8ce9 and s1,s1,a0
b8b4: 4551 li a0,20
b8b6: deffb0ef jal ra,76a4 <htons>
b8ba: 8d45 or a0,a0,s1
b8bc: 0542 slli a0,a0,0x10
b8be: 8141 srli a0,a0,0x10
b8c0: 2002e7b7 lui a5,0x2002e
b8c4: a448 sb a0,12(s0)
b8c6: 8121 srli a0,a0,0x8
b8c8: b448 sb a0,13(s0)
b8ca: bd47d503 lhu a0,-1068(a5) # 2002dbd4 <WCHCfg+0x4>
b8ce: dd7fb0ef jal ra,76a4 <htons>
b8d2: a468 sb a0,14(s0)
b8d4: 345c lbu a5,13(s0)
b8d6: 8121 srli a0,a0,0x8
b8d8: b468 sb a0,15(s0)
b8da: 2448 lbu a0,12(s0)
b8dc: 07a2 slli a5,a5,0x8
b8de: 00040923 sb zero,18(s0)
b8e2: 8d5d or a0,a0,a5
b8e4: 000409a3 sb zero,19(s0)
b8e8: dcbfb0ef jal ra,76b2 <ntohs>
b8ec: 6795 lui a5,0x5
b8ee: 03f57513 andi a0,a0,63
b8f2: 8d5d or a0,a0,a5
b8f4: db1fb0ef jal ra,76a4 <htons>
b8f8: 00895703 lhu a4,8(s2)
b8fc: a448 sb a0,12(s0)
b8fe: 8121 srli a0,a0,0x8
b900: b448 sb a0,13(s0)
b902: 4699 li a3,6
b904: 8652 mv a2,s4
b906: 85ce mv a1,s3
b908: 00040823 sb zero,16(s0)
b90c: 000408a3 sb zero,17(s0)
b910: 854a mv a0,s2
b912: 299000ef jal ra,c3aa <inet_chksum_pseudo>
b916: a808 sb a0,16(s0)
b918: 8121 srli a0,a0,0x8
b91a: b808 sb a0,17(s0)
b91c: 4799 li a5,6
b91e: 4701 li a4,0
b920: 08000693 li a3,128
b924: 8652 mv a2,s4
b926: 85ce mv a1,s3
b928: 854a mv a0,s2
b92a: a06fc0ef jal ra,7b30 <ip_output>
b92e: 854a mv a0,s2
b930: 964fd0ef jal ra,8a94 <pbuf_free>
b934: 0141 addi sp,sp,16
b936: bfbf406f j 530 <__riscv_restore_4>
0000b93a <tcp_rexmit_rto>:
tcp_rexmit_rto():
b93a: 08052783 lw a5,128(a0)
b93e: cb85 beqz a5,b96e <tcp_rexmit_rto+0x34>
b940: bd7f42ef jal t0,516 <__riscv_save_0>
b944: 873e mv a4,a5
b946: 4314 lw a3,0(a4)
b948: e28d bnez a3,b96a <tcp_rexmit_rto+0x30>
b94a: 5d74 lw a3,124(a0)
b94c: c314 sw a3,0(a4)
b94e: dd7c sw a5,124(a0)
b950: 05254783 lbu a5,82(a0)
b954: 08052023 sw zero,128(a0)
b958: 04052223 sw zero,68(a0)
b95c: 0785 addi a5,a5,1
b95e: 04f50923 sb a5,82(a0)
b962: b69ff0ef jal ra,b4ca <tcp_output>
b966: bd5f406f j 53a <__riscv_restore_0>
b96a: 8736 mv a4,a3
b96c: bfe9 j b946 <tcp_rexmit_rto+0xc>
b96e: 8082 ret
0000b970 <tcp_rexmit>:
tcp_rexmit():
b970: b8df42ef jal t0,4fc <__riscv_save_4>
b974: 08052483 lw s1,128(a0)
b978: c495 beqz s1,b9a4 <tcp_rexmit+0x34>
b97a: 409c lw a5,0(s1)
b97c: 842a mv s0,a0
b97e: 07c50913 addi s2,a0,124
b982: 08f52023 sw a5,128(a0)
b986: 00092783 lw a5,0(s2)
b98a: ef99 bnez a5,b9a8 <tcp_rexmit+0x38>
b98c: 00092783 lw a5,0(s2)
b990: c09c sw a5,0(s1)
b992: 00992023 sw s1,0(s2)
b996: 05244783 lbu a5,82(s0)
b99a: 04042223 sw zero,68(s0)
b99e: 0785 addi a5,a5,1
b9a0: 04f40923 sb a5,82(s0)
b9a4: b8df406f j 530 <__riscv_restore_4>
b9a8: 4b98 lw a4,16(a5)
b9aa: 3348 lbu a0,5(a4)
b9ac: 235c lbu a5,4(a4)
b9ae: 0522 slli a0,a0,0x8
b9b0: 8d5d or a0,a0,a5
b9b2: 237c lbu a5,6(a4)
b9b4: 07c2 slli a5,a5,0x10
b9b6: 8fc9 or a5,a5,a0
b9b8: 3368 lbu a0,7(a4)
b9ba: 0562 slli a0,a0,0x18
b9bc: 8d5d or a0,a0,a5
b9be: d27fb0ef jal ra,76e4 <ntohl>
b9c2: 4898 lw a4,16(s1)
b9c4: 89aa mv s3,a0
b9c6: 3348 lbu a0,5(a4)
b9c8: 235c lbu a5,4(a4)
b9ca: 0522 slli a0,a0,0x8
b9cc: 8d5d or a0,a0,a5
b9ce: 237c lbu a5,6(a4)
b9d0: 07c2 slli a5,a5,0x10
b9d2: 8fc9 or a5,a5,a0
b9d4: 3368 lbu a0,7(a4)
b9d6: 0562 slli a0,a0,0x18
b9d8: 8d5d or a0,a0,a5
b9da: d0bfb0ef jal ra,76e4 <ntohl>
b9de: 40a98533 sub a0,s3,a0
b9e2: fa0555e3 bgez a0,b98c <tcp_rexmit+0x1c>
b9e6: 00092903 lw s2,0(s2)
b9ea: bf71 j b986 <tcp_rexmit+0x16>
0000b9ec <tcp_rexmit_fast>:
tcp_rexmit_fast():
b9ec: 08052783 lw a5,128(a0)
b9f0: cfb1 beqz a5,ba4c <tcp_rexmit_fast+0x60>
b9f2: b25f42ef jal t0,516 <__riscv_save_0>
b9f6: 02654783 lbu a5,38(a0)
b9fa: 842a mv s0,a0
b9fc: 8b91 andi a5,a5,4
b9fe: e7a9 bnez a5,ba48 <tcp_rexmit_fast+0x5c>
ba00: f71ff0ef jal ra,b970 <tcp_rexmit>
ba04: 05a45683 lhu a3,90(s0)
ba08: 06445783 lhu a5,100(s0)
ba0c: 0016d713 srli a4,a3,0x1
ba10: 00d7f463 bgeu a5,a3,ba18 <tcp_rexmit_fast+0x2c>
ba14: 0017d713 srli a4,a5,0x1
ba18: 04045783 lhu a5,64(s0)
ba1c: 04e41e23 sh a4,92(s0)
ba20: 00179693 slli a3,a5,0x1
ba24: 00d75463 bge a4,a3,ba2c <tcp_rexmit_fast+0x40>
ba28: 04d41e23 sh a3,92(s0)
ba2c: 470d li a4,3
ba2e: 02e787b3 mul a5,a5,a4
ba32: 05c45703 lhu a4,92(s0)
ba36: 97ba add a5,a5,a4
ba38: 04f41d23 sh a5,90(s0)
ba3c: 02644783 lbu a5,38(s0)
ba40: 0047e793 ori a5,a5,4
ba44: 02f40323 sb a5,38(s0)
ba48: af3f406f j 53a <__riscv_restore_0>
ba4c: 8082 ret
0000ba4e <tcp_keepalive>:
tcp_keepalive():
ba4e: aaff42ef jal t0,4fc <__riscv_save_4>
ba52: 84aa mv s1,a0
ba54: 4601 li a2,0
ba56: 45d1 li a1,20
ba58: 4505 li a0,1
ba5a: 888fd0ef jal ra,8ae2 <pbuf_alloc>
ba5e: c529 beqz a0,baa8 <tcp_keepalive+0x5a>
ba60: 842a mv s0,a0
ba62: 50a8 lw a0,96(s1)
ba64: 00448913 addi s2,s1,4
ba68: 157d addi a0,a0,-1
ba6a: c57fb0ef jal ra,76c0 <htonl>
ba6e: 404c lw a1,4(s0)
ba70: 862a mv a2,a0
ba72: 8526 mv a0,s1
ba74: c84ff0ef jal ra,aef8 <tcp_output_set_header.isra.0.constprop.1>
ba78: 241a lhu a4,8(s0)
ba7a: 89aa mv s3,a0
ba7c: 4699 li a3,6
ba7e: 864a mv a2,s2
ba80: 85a6 mv a1,s1
ba82: 8522 mv a0,s0
ba84: 127000ef jal ra,c3aa <inet_chksum_pseudo>
ba88: 00a98823 sb a0,16(s3)
ba8c: 8121 srli a0,a0,0x8
ba8e: 00a988a3 sb a0,17(s3)
ba92: 34b4 lbu a3,11(s1)
ba94: 4799 li a5,6
ba96: 4701 li a4,0
ba98: 864a mv a2,s2
ba9a: 85a6 mv a1,s1
ba9c: 8522 mv a0,s0
ba9e: 892fc0ef jal ra,7b30 <ip_output>
baa2: 8522 mv a0,s0
baa4: ff1fc0ef jal ra,8a94 <pbuf_free>
baa8: a89f406f j 530 <__riscv_restore_4>
0000baac <tcp_zero_window_probe>:
tcp_zero_window_probe():
baac: a51f42ef jal t0,4fc <__riscv_save_4>
bab0: 08052403 lw s0,128(a0)
bab4: e019 bnez s0,baba <tcp_zero_window_probe+0xe>
bab6: 5d60 lw s0,124(a0)
bab8: c45d beqz s0,bb66 <tcp_zero_window_probe+0xba>
baba: 481c lw a5,16(s0)
babc: 84aa mv s1,a0
babe: 27c8 lbu a0,12(a5)
bac0: 37dc lbu a5,13(a5)
bac2: 07a2 slli a5,a5,0x8
bac4: 8d5d or a0,a0,a5
bac6: bedfb0ef jal ra,76b2 <ntohs>
baca: 8905 andi a0,a0,1
bacc: cd59 beqz a0,bb6a <tcp_zero_window_probe+0xbe>
bace: 245e lhu a5,12(s0)
bad0: efc9 bnez a5,bb6a <tcp_zero_window_probe+0xbe>
bad2: 4a05 li s4,1
bad4: 45d1 li a1,20
bad6: 4601 li a2,0
bad8: 4505 li a0,1
bada: 808fd0ef jal ra,8ae2 <pbuf_alloc>
bade: 892a mv s2,a0
bae0: c159 beqz a0,bb66 <tcp_zero_window_probe+0xba>
bae2: 4818 lw a4,16(s0)
bae4: 414c lw a1,4(a0)
bae6: 8526 mv a0,s1
bae8: 3350 lbu a2,5(a4)
baea: 235c lbu a5,4(a4)
baec: 0622 slli a2,a2,0x8
baee: 8e5d or a2,a2,a5
baf0: 237c lbu a5,6(a4)
baf2: 07c2 slli a5,a5,0x10
baf4: 8fd1 or a5,a5,a2
baf6: 3370 lbu a2,7(a4)
baf8: 0662 slli a2,a2,0x18
bafa: 8e5d or a2,a2,a5
bafc: bfcff0ef jal ra,aef8 <tcp_output_set_header.isra.0.constprop.1>
bb00: 89aa mv s3,a0
bb02: 060a0763 beqz s4,bb70 <tcp_zero_window_probe+0xc4>
bb06: 3540 lbu s0,13(a0)
bb08: 255c lbu a5,12(a0)
bb0a: 6541 lui a0,0x10
bb0c: 0422 slli s0,s0,0x8
bb0e: fc050513 addi a0,a0,-64 # ffc0 <_data_lma+0x2aac>
bb12: 8c5d or s0,s0,a5
bb14: b91fb0ef jal ra,76a4 <htons>
bb18: 8c69 and s0,s0,a0
bb1a: 4545 li a0,17
bb1c: b89fb0ef jal ra,76a4 <htons>
bb20: 8c49 or s0,s0,a0
bb22: 01041793 slli a5,s0,0x10
bb26: 83c1 srli a5,a5,0x10
bb28: 00f98623 sb a5,12(s3)
bb2c: 83a1 srli a5,a5,0x8
bb2e: 00f986a3 sb a5,13(s3)
bb32: 00895703 lhu a4,8(s2)
bb36: 00448413 addi s0,s1,4
bb3a: 4699 li a3,6
bb3c: 8622 mv a2,s0
bb3e: 85a6 mv a1,s1
bb40: 854a mv a0,s2
bb42: 069000ef jal ra,c3aa <inet_chksum_pseudo>
bb46: 00a98823 sb a0,16(s3)
bb4a: 8121 srli a0,a0,0x8
bb4c: 00a988a3 sb a0,17(s3)
bb50: 34b4 lbu a3,11(s1)
bb52: 4799 li a5,6
bb54: 4701 li a4,0
bb56: 8622 mv a2,s0
bb58: 85a6 mv a1,s1
bb5a: 854a mv a0,s2
bb5c: fd5fb0ef jal ra,7b30 <ip_output>
bb60: 854a mv a0,s2
bb62: f33fc0ef jal ra,8a94 <pbuf_free>
bb66: 9cbf406f j 530 <__riscv_restore_4>
bb6a: 4a01 li s4,0
bb6c: 45d5 li a1,21
bb6e: b7a5 j bad6 <tcp_zero_window_probe+0x2a>
bb70: 4418 lw a4,8(s0)
bb72: 00492783 lw a5,4(s2)
bb76: 00070703 lb a4,0(a4)
bb7a: abd8 sb a4,20(a5)
bb7c: bf5d j bb32 <tcp_zero_window_probe+0x86>
0000bb7e <udp_input>:
udp_input():
bb7e: 969f42ef jal t0,4e6 <__riscv_save_12>
bb82: 4140 lw s0,4(a0)
bb84: 2506 lhu s1,8(a0)
bb86: 892a mv s2,a0
bb88: 301c lbu a5,1(s0)
bb8a: 2008 lbu a0,0(s0)
bb8c: 1141 addi sp,sp,-16
bb8e: 07a2 slli a5,a5,0x8
bb90: 8d5d or a0,a0,a5
bb92: 8a2e mv s4,a1
bb94: b1ffb0ef jal ra,76b2 <ntohs>
bb98: 8121 srli a0,a0,0x8
bb9a: 893d andi a0,a0,15
bb9c: 0509 addi a0,a0,2
bb9e: 050a slli a0,a0,0x2
bba0: 02a4c263 blt s1,a0,bbc4 <udp_input+0x46>
bba4: 301c lbu a5,1(s0)
bba6: 2008 lbu a0,0(s0)
bba8: 07a2 slli a5,a5,0x8
bbaa: 8d5d or a0,a0,a5
bbac: b07fb0ef jal ra,76b2 <ntohs>
bbb0: 00655593 srli a1,a0,0x6
bbb4: 03c5f593 andi a1,a1,60
bbb8: 40b005b3 neg a1,a1
bbbc: 854a mv a0,s2
bbbe: e69fc0ef jal ra,8a26 <pbuf_header>
bbc2: c519 beqz a0,bbd0 <udp_input+0x52>
bbc4: 854a mv a0,s2
bbc6: ecffc0ef jal ra,8a94 <pbuf_free>
bbca: 0141 addi sp,sp,16
bbcc: 957f406f j 522 <__riscv_restore_12>
bbd0: 00492a83 lw s5,4(s2)
bbd4: 01040c13 addi s8,s0,16
bbd8: 85d2 mv a1,s4
bbda: 8562 mv a0,s8
bbdc: f8bfb0ef jal ra,7b66 <ip_addr_isbroadcast>
bbe0: 001ac783 lbu a5,1(s5)
bbe4: 8b2a mv s6,a0
bbe6: 000ac503 lbu a0,0(s5)
bbea: 07a2 slli a5,a5,0x8
bbec: 8d5d or a0,a0,a5
bbee: ac5fb0ef jal ra,76b2 <ntohs>
bbf2: 003ac783 lbu a5,3(s5)
bbf6: 8baa mv s7,a0
bbf8: 002ac503 lbu a0,2(s5)
bbfc: 07a2 slli a5,a5,0x8
bbfe: 8d5d or a0,a0,a5
bc00: ab3fb0ef jal ra,76b2 <ntohs>
bc04: 04400793 li a5,68
bc08: 86aa mv a3,a0
bc0a: 06f51d63 bne a0,a5,bc84 <udp_input+0x106>
bc0e: 04300793 li a5,67
bc12: 12fb9963 bne s7,a5,bd44 <udp_input+0x1c6>
bc16: 020a2783 lw a5,32(s4)
bc1a: 12078563 beqz a5,bd44 <udp_input+0x1c6>
bc1e: 43c4 lw s1,4(a5)
bc20: 12048263 beqz s1,bd44 <udp_input+0x1c6>
bc24: 40d4 lw a3,4(s1)
bc26: ce89 beqz a3,bc40 <udp_input+0xc2>
bc28: 3458 lbu a4,13(s0)
bc2a: 245c lbu a5,12(s0)
bc2c: 0722 slli a4,a4,0x8
bc2e: 8f5d or a4,a4,a5
bc30: 247c lbu a5,14(s0)
bc32: 07c2 slli a5,a5,0x10
bc34: 8f5d or a4,a4,a5
bc36: 347c lbu a5,15(s0)
bc38: 07e2 slli a5,a5,0x18
bc3a: 8fd9 or a5,a5,a4
bc3c: 10f69463 bne a3,a5,bd44 <udp_input+0x1c6>
bc40: 007ac783 lbu a5,7(s5)
bc44: 006ac703 lbu a4,6(s5)
bc48: 07a2 slli a5,a5,0x8
bc4a: 8fd9 or a5,a5,a4
bc4c: cb99 beqz a5,bc62 <udp_input+0xe4>
bc4e: 00895703 lhu a4,8(s2)
bc52: 46c5 li a3,17
bc54: 8662 mv a2,s8
bc56: 00c40593 addi a1,s0,12
bc5a: 854a mv a0,s2
bc5c: 74e000ef jal ra,c3aa <inet_chksum_pseudo>
bc60: f135 bnez a0,bbc4 <udp_input+0x46>
bc62: 55e1 li a1,-8
bc64: 854a mv a0,s2
bc66: dc1fc0ef jal ra,8a26 <pbuf_header>
bc6a: fd29 bnez a0,bbc4 <udp_input+0x46>
bc6c: 0e048c63 beqz s1,bd64 <udp_input+0x1e6>
bc70: 4c9c lw a5,24(s1)
bc72: dba9 beqz a5,bbc4 <udp_input+0x46>
bc74: 4cc8 lw a0,28(s1)
bc76: 875e mv a4,s7
bc78: 00c40693 addi a3,s0,12
bc7c: 864a mv a2,s2
bc7e: 85a6 mv a1,s1
bc80: 9782 jalr a5
bc82: b7a1 j bbca <udp_input+0x4c>
bc84: 9d41a483 lw s1,-1580(gp) # 20000214 <udp_pcbs>
bc88: 4d01 li s10,0
bc8a: 4d81 li s11,0
bc8c: 9d418c93 addi s9,gp,-1580 # 20000214 <udp_pcbs>
bc90: 76c00613 li a2,1900
bc94: e489 bnez s1,bc9e <udp_input+0x120>
bc96: 0a0d0763 beqz s10,bd44 <udp_input+0x1c6>
bc9a: 84ea mv s1,s10
bc9c: b755 j bc40 <udp_input+0xc2>
bc9e: 28be lhu a5,18(s1)
bca0: 08d79c63 bne a5,a3,bd38 <udp_input+0x1ba>
bca4: 4098 lw a4,0(s1)
bca6: 040b1563 bnez s6,bcf0 <udp_input+0x172>
bcaa: e339 bnez a4,bcf0 <udp_input+0x172>
bcac: 000d1663 bnez s10,bcb8 <udp_input+0x13a>
bcb0: 289c lbu a5,16(s1)
bcb2: 8b91 andi a5,a5,4
bcb4: e391 bnez a5,bcb8 <udp_input+0x13a>
bcb6: 8d26 mv s10,s1
bcb8: 28de lhu a5,20(s1)
bcba: 09779263 bne a5,s7,bd3e <udp_input+0x1c0>
bcbe: 40cc lw a1,4(s1)
bcc0: cd89 beqz a1,bcda <udp_input+0x15c>
bcc2: 3458 lbu a4,13(s0)
bcc4: 245c lbu a5,12(s0)
bcc6: 0722 slli a4,a4,0x8
bcc8: 8f5d or a4,a4,a5
bcca: 247c lbu a5,14(s0)
bccc: 07c2 slli a5,a5,0x10
bcce: 8f5d or a4,a4,a5
bcd0: 347c lbu a5,15(s0)
bcd2: 07e2 slli a5,a5,0x18
bcd4: 8fd9 or a5,a5,a4
bcd6: 06f59463 bne a1,a5,bd3e <udp_input+0x1c0>
bcda: f60d83e3 beqz s11,bc40 <udp_input+0xc2>
bcde: 44dc lw a5,12(s1)
bce0: 00fda623 sw a5,12(s11)
bce4: 000ca783 lw a5,0(s9)
bce8: 009ca023 sw s1,0(s9)
bcec: c4dc sw a5,12(s1)
bcee: bf89 j bc40 <udp_input+0xc2>
bcf0: 381c lbu a5,17(s0)
bcf2: 01044983 lbu s3,16(s0)
bcf6: 07a2 slli a5,a5,0x8
bcf8: 0137e7b3 or a5,a5,s3
bcfc: 01244983 lbu s3,18(s0)
bd00: 09c2 slli s3,s3,0x10
bd02: 00f9e7b3 or a5,s3,a5
bd06: 01344983 lbu s3,19(s0)
bd0a: 09e2 slli s3,s3,0x18
bd0c: 00f9e9b3 or s3,s3,a5
bd10: f8e98ee3 beq s3,a4,bcac <udp_input+0x12e>
bd14: f0000537 lui a0,0xf0000
bd18: c636 sw a3,12(sp)
bd1a: 9cbfb0ef jal ra,76e4 <ntohl>
bd1e: 00a9f9b3 and s3,s3,a0
bd22: e0000537 lui a0,0xe0000
bd26: 9bffb0ef jal ra,76e4 <ntohl>
bd2a: 46b2 lw a3,12(sp)
bd2c: 76c00613 li a2,1900
bd30: f6a98ee3 beq s3,a0,bcac <udp_input+0x12e>
bd34: f60b1ce3 bnez s6,bcac <udp_input+0x12e>
bd38: 8da6 mv s11,s1
bd3a: 44c4 lw s1,12(s1)
bd3c: bfa1 j bc94 <udp_input+0x116>
bd3e: fec69de3 bne a3,a2,bd38 <udp_input+0x1ba>
bd42: bdfd j bc40 <udp_input+0xc2>
bd44: 3818 lbu a4,17(s0)
bd46: 281c lbu a5,16(s0)
bd48: 0722 slli a4,a4,0x8
bd4a: 8f5d or a4,a4,a5
bd4c: 283c lbu a5,18(s0)
bd4e: 07c2 slli a5,a5,0x10
bd50: 8f5d or a4,a4,a5
bd52: 383c lbu a5,19(s0)
bd54: 07e2 slli a5,a5,0x18
bd56: 8fd9 or a5,a5,a4
bd58: 004a2703 lw a4,4(s4)
bd5c: e6f714e3 bne a4,a5,bbc4 <udp_input+0x46>
bd60: 4481 li s1,0
bd62: bdf9 j bc40 <udp_input+0xc2>
bd64: e60b10e3 bnez s6,bbc4 <udp_input+0x46>
bd68: 381c lbu a5,17(s0)
bd6a: 2804 lbu s1,16(s0)
bd6c: f0000537 lui a0,0xf0000
bd70: 07a2 slli a5,a5,0x8
bd72: 8fc5 or a5,a5,s1
bd74: 2824 lbu s1,18(s0)
bd76: 04c2 slli s1,s1,0x10
bd78: 8fc5 or a5,a5,s1
bd7a: 3824 lbu s1,19(s0)
bd7c: 04e2 slli s1,s1,0x18
bd7e: 8cdd or s1,s1,a5
bd80: 965fb0ef jal ra,76e4 <ntohl>
bd84: 8ce9 and s1,s1,a0
bd86: e0000537 lui a0,0xe0000
bd8a: 95bfb0ef jal ra,76e4 <ntohl>
bd8e: e2a48be3 beq s1,a0,bbc4 <udp_input+0x46>
bd92: 301c lbu a5,1(s0)
bd94: 2008 lbu a0,0(s0)
bd96: 07a2 slli a5,a5,0x8
bd98: 8d5d or a0,a0,a5
bd9a: 919fb0ef jal ra,76b2 <ntohs>
bd9e: 00855593 srli a1,a0,0x8
bda2: 89bd andi a1,a1,15
bda4: 0589 addi a1,a1,2
bda6: 058a slli a1,a1,0x2
bda8: 854a mv a0,s2
bdaa: c7dfc0ef jal ra,8a26 <pbuf_header>
bdae: 458d li a1,3
bdb0: 854a mv a0,s2
bdb2: 2b89 jal c304 <icmp_dest_unreach>
bdb4: bd01 j bbc4 <udp_input+0x46>
0000bdb6 <udp_bind>:
udp_bind():
bdb6: 9d41a883 lw a7,-1580(gp) # 20000214 <udp_pcbs>
bdba: 86aa mv a3,a0
bdbc: 4301 li t1,0
bdbe: 87c6 mv a5,a7
bdc0: 9d418813 addi a6,gp,-1580 # 20000214 <udp_pcbs>
bdc4: e79d bnez a5,bdf2 <udp_bind+0x3c>
bdc6: c999 beqz a1,bddc <udp_bind+0x26>
bdc8: 3198 lbu a4,1(a1)
bdca: 219c lbu a5,0(a1)
bdcc: 0722 slli a4,a4,0x8
bdce: 8f5d or a4,a4,a5
bdd0: 21bc lbu a5,2(a1)
bdd2: 07c2 slli a5,a5,0x10
bdd4: 8f5d or a4,a4,a5
bdd6: 31bc lbu a5,3(a1)
bdd8: 07e2 slli a5,a5,0x18
bdda: 8fd9 or a5,a5,a4
bddc: c29c sw a5,0(a3)
bdde: c625 beqz a2,be46 <udp_bind+0x90>
bde0: aab2 sh a2,18(a3)
bde2: 4501 li a0,0
bde4: 00031663 bnez t1,bdf0 <udp_bind+0x3a>
bde8: 0116a623 sw a7,12(a3)
bdec: 00d82023 sw a3,0(a6)
bdf0: 8082 ret
bdf2: 02d78b63 beq a5,a3,be28 <udp_bind+0x72>
bdf6: 2bba lhu a4,18(a5)
bdf8: 02c71663 bne a4,a2,be24 <udp_bind+0x6e>
bdfc: 0007ae03 lw t3,0(a5) # 5000 <xTaskCheckForTimeOut+0xc0>
be00: 000e1463 bnez t3,be08 <udp_bind+0x52>
be04: 5555 li a0,-11
be06: 8082 ret
be08: ddf5 beqz a1,be04 <udp_bind+0x4e>
be0a: 3188 lbu a0,1(a1)
be0c: 2198 lbu a4,0(a1)
be0e: 0522 slli a0,a0,0x8
be10: 8d59 or a0,a0,a4
be12: 21b8 lbu a4,2(a1)
be14: 0742 slli a4,a4,0x10
be16: 8d59 or a0,a0,a4
be18: 31b8 lbu a4,3(a1)
be1a: 0762 slli a4,a4,0x18
be1c: 8f49 or a4,a4,a0
be1e: d37d beqz a4,be04 <udp_bind+0x4e>
be20: feee02e3 beq t3,a4,be04 <udp_bind+0x4e>
be24: 47dc lw a5,12(a5)
be26: bf79 j bdc4 <udp_bind+0xe>
be28: 4305 li t1,1
be2a: bfed j be24 <udp_bind+0x6e>
be2c: 2bae lhu a1,18(a5)
be2e: 00c59a63 bne a1,a2,be42 <udp_bind+0x8c>
be32: 0605 addi a2,a2,1
be34: 0642 slli a2,a2,0x10
be36: 8241 srli a2,a2,0x10
be38: 87c6 mv a5,a7
be3a: d3dd beqz a5,bde0 <udp_bind+0x2a>
be3c: fee618e3 bne a2,a4,be2c <udp_bind+0x76>
be40: b7d1 j be04 <udp_bind+0x4e>
be42: 47dc lw a5,12(a5)
be44: bfdd j be3a <udp_bind+0x84>
be46: 6721 lui a4,0x8
be48: 87c6 mv a5,a7
be4a: 6605 lui a2,0x1
be4c: 177d addi a4,a4,-1
be4e: b7f5 j be3a <udp_bind+0x84>
0000be50 <udp_sendto_if>:
udp_sendto_if():
be50: eacf42ef jal t0,4fc <__riscv_save_4>
be54: 293e lhu a5,18(a0)
be56: 892a mv s2,a0
be58: 89ae mv s3,a1
be5a: 8ab2 mv s5,a2
be5c: 8b36 mv s6,a3
be5e: 8a3a mv s4,a4
be60: c7ad beqz a5,beca <udp_sendto_if+0x7a>
be62: 45a1 li a1,8
be64: 854e mv a0,s3
be66: bc1fc0ef jal ra,8a26 <pbuf_header>
be6a: 84ce mv s1,s3
be6c: cd01 beqz a0,be84 <udp_sendto_if+0x34>
be6e: 4601 li a2,0
be70: 45a1 li a1,8
be72: 4505 li a0,1
be74: c6ffc0ef jal ra,8ae2 <pbuf_alloc>
be78: 84aa mv s1,a0
be7a: 547d li s0,-1
be7c: cd29 beqz a0,bed6 <udp_sendto_if+0x86>
be7e: 85ce mv a1,s3
be80: e33fc0ef jal ra,8cb2 <pbuf_chain>
be84: 01295503 lhu a0,18(s2)
be88: 40c0 lw s0,4(s1)
be8a: 81bfb0ef jal ra,76a4 <htons>
be8e: a008 sb a0,0(s0)
be90: 8121 srli a0,a0,0x8
be92: b008 sb a0,1(s0)
be94: 855a mv a0,s6
be96: 80ffb0ef jal ra,76a4 <htons>
be9a: 00092783 lw a5,0(s2)
be9e: a028 sb a0,2(s0)
bea0: 8121 srli a0,a0,0x8
bea2: b028 sb a0,3(s0)
bea4: 00040323 sb zero,6(s0)
bea8: 000403a3 sb zero,7(s0)
beac: 004a0b13 addi s6,s4,4
beb0: c795 beqz a5,bedc <udp_sendto_if+0x8c>
beb2: 004a2703 lw a4,4(s4)
beb6: 8b4a mv s6,s2
beb8: 02e78263 beq a5,a4,bedc <udp_sendto_if+0x8c>
bebc: 545d li s0,-9
bebe: 01348c63 beq s1,s3,bed6 <udp_sendto_if+0x86>
bec2: 8526 mv a0,s1
bec4: bd1fc0ef jal ra,8a94 <pbuf_free>
bec8: a039 j bed6 <udp_sendto_if+0x86>
beca: 4601 li a2,0
becc: 85aa mv a1,a0
bece: ee9ff0ef jal ra,bdb6 <udp_bind>
bed2: 842a mv s0,a0
bed4: d559 beqz a0,be62 <udp_sendto_if+0x12>
bed6: 8522 mv a0,s0
bed8: e58f406f j 530 <__riscv_restore_4>
bedc: 248a lhu a0,8(s1)
bede: fc6fb0ef jal ra,76a4 <htons>
bee2: a048 sb a0,4(s0)
bee4: 8121 srli a0,a0,0x8
bee6: b048 sb a0,5(s0)
bee8: 01094783 lbu a5,16(s2)
beec: 8b85 andi a5,a5,1
beee: eb99 bnez a5,bf04 <udp_sendto_if+0xb4>
bef0: 249a lhu a4,8(s1)
bef2: 46c5 li a3,17
bef4: 8656 mv a2,s5
bef6: 85da mv a1,s6
bef8: 8526 mv a0,s1
befa: 2945 jal c3aa <inet_chksum_pseudo>
befc: c10d beqz a0,bf1e <udp_sendto_if+0xce>
befe: a068 sb a0,6(s0)
bf00: 8121 srli a0,a0,0x8
bf02: b068 sb a0,7(s0)
bf04: 00a94703 lbu a4,10(s2)
bf08: 00b94683 lbu a3,11(s2)
bf0c: 8852 mv a6,s4
bf0e: 47c5 li a5,17
bf10: 8656 mv a2,s5
bf12: 85da mv a1,s6
bf14: 8526 mv a0,s1
bf16: ac1fb0ef jal ra,79d6 <ip_output_if>
bf1a: 842a mv s0,a0
bf1c: b74d j bebe <udp_sendto_if+0x6e>
bf1e: 57fd li a5,-1
bf20: a07c sb a5,6(s0)
bf22: b07c sb a5,7(s0)
bf24: b7c5 j bf04 <udp_sendto_if+0xb4>
0000bf26 <udp_sendto>:
udp_sendto():
bf26: df0f42ef jal t0,516 <__riscv_save_0>
bf2a: 1141 addi sp,sp,-16
bf2c: 842a mv s0,a0
bf2e: 8532 mv a0,a2
bf30: c62e sw a1,12(sp)
bf32: c436 sw a3,8(sp)
bf34: c232 sw a2,4(sp)
bf36: fbafb0ef jal ra,76f0 <ip_route>
bf3a: c919 beqz a0,bf50 <udp_sendto+0x2a>
bf3c: 46a2 lw a3,8(sp)
bf3e: 4612 lw a2,4(sp)
bf40: 45b2 lw a1,12(sp)
bf42: 872a mv a4,a0
bf44: 8522 mv a0,s0
bf46: f0bff0ef jal ra,be50 <udp_sendto_if>
bf4a: 0141 addi sp,sp,16
bf4c: deef406f j 53a <__riscv_restore_0>
bf50: 5571 li a0,-4
bf52: bfe5 j bf4a <udp_sendto+0x24>
0000bf54 <udp_send>:
udp_send():
bf54: dc2f42ef jal t0,516 <__riscv_save_0>
bf58: 2956 lhu a3,20(a0)
bf5a: 00450613 addi a2,a0,4 # e0000004 <__freertos_irq_stack_top+0xbffd0004>
bf5e: fc9ff0ef jal ra,bf26 <udp_sendto>
bf62: dd8f406f j 53a <__riscv_restore_0>
0000bf66 <udp_connect>:
udp_connect():
bf66: db0f42ef jal t0,516 <__riscv_save_0>
bf6a: 293e lhu a5,18(a0)
bf6c: 842a mv s0,a0
bf6e: 84ae mv s1,a1
bf70: 8932 mv s2,a2
bf72: cbb1 beqz a5,bfc6 <udp_connect+0x60>
bf74: 4781 li a5,0
bf76: c899 beqz s1,bf8c <udp_connect+0x26>
bf78: 3098 lbu a4,1(s1)
bf7a: 209c lbu a5,0(s1)
bf7c: 0722 slli a4,a4,0x8
bf7e: 8f5d or a4,a4,a5
bf80: 20bc lbu a5,2(s1)
bf82: 07c2 slli a5,a5,0x10
bf84: 8f5d or a4,a4,a5
bf86: 30bc lbu a5,3(s1)
bf88: 07e2 slli a5,a5,0x18
bf8a: 8fd9 or a5,a5,a4
bf8c: 2818 lbu a4,16(s0)
bf8e: c05c sw a5,4(s0)
bf90: 01241a23 sh s2,20(s0)
bf94: 00476713 ori a4,a4,4
bf98: a818 sb a4,16(s0)
bf9a: 4018 lw a4,0(s0)
bf9c: ef05 bnez a4,bfd4 <udp_connect+0x6e>
bf9e: cf85 beqz a5,bfd6 <udp_connect+0x70>
bfa0: 00440513 addi a0,s0,4
bfa4: f4cfb0ef jal ra,76f0 <ip_route>
bfa8: 87aa mv a5,a0
bfaa: 5571 li a0,-4
bfac: c395 beqz a5,bfd0 <udp_connect+0x6a>
bfae: 43dc lw a5,4(a5)
bfb0: c01c sw a5,0(s0)
bfb2: 9d41a683 lw a3,-1580(gp) # 20000214 <udp_pcbs>
bfb6: 9d418793 addi a5,gp,-1580 # 20000214 <udp_pcbs>
bfba: 8736 mv a4,a3
bfbc: e305 bnez a4,bfdc <udp_connect+0x76>
bfbe: c454 sw a3,12(s0)
bfc0: c380 sw s0,0(a5)
bfc2: 4501 li a0,0
bfc4: a031 j bfd0 <udp_connect+0x6a>
bfc6: 4601 li a2,0
bfc8: 85aa mv a1,a0
bfca: dedff0ef jal ra,bdb6 <udp_bind>
bfce: d15d beqz a0,bf74 <udp_connect+0xe>
bfd0: d6af406f j 53a <__riscv_restore_0>
bfd4: fff9 bnez a5,bfb2 <udp_connect+0x4c>
bfd6: 00042023 sw zero,0(s0)
bfda: bfe1 j bfb2 <udp_connect+0x4c>
bfdc: fe8703e3 beq a4,s0,bfc2 <udp_connect+0x5c>
bfe0: 4758 lw a4,12(a4)
bfe2: bfe9 j bfbc <udp_connect+0x56>
0000bfe4 <udp_recv>:
udp_recv():
bfe4: cd0c sw a1,24(a0)
bfe6: cd50 sw a2,28(a0)
bfe8: 8082 ret
0000bfea <udp_remove>:
udp_remove():
bfea: d2cf42ef jal t0,516 <__riscv_save_0>
bfee: 9d418713 addi a4,gp,-1580 # 20000214 <udp_pcbs>
bff2: 431c lw a5,0(a4)
bff4: 85aa mv a1,a0
bff6: 02a79063 bne a5,a0,c016 <udp_remove+0x2c>
bffa: 455c lw a5,12(a0)
bffc: c31c sw a5,0(a4)
bffe: 4505 li a0,1
c000: 8c3fc0ef jal ra,88c2 <memp_free>
c004: d36f406f j 53a <__riscv_restore_0>
c008: 47d8 lw a4,12(a5)
c00a: c709 beqz a4,c014 <udp_remove+0x2a>
c00c: 00b71463 bne a4,a1,c014 <udp_remove+0x2a>
c010: 45d8 lw a4,12(a1)
c012: c7d8 sw a4,12(a5)
c014: 47dc lw a5,12(a5)
c016: fbed bnez a5,c008 <udp_remove+0x1e>
c018: b7dd j bffe <udp_remove+0x14>
0000c01a <udp_new>:
udp_new():
c01a: cfcf42ef jal t0,516 <__riscv_save_0>
c01e: 4505 li a0,1
c020: 883fc0ef jal ra,88a2 <memp_malloc>
c024: 842a mv s0,a0
c026: c909 beqz a0,c038 <udp_new+0x1e>
c028: 02000613 li a2,32
c02c: 4581 li a1,0
c02e: d18f40ef jal ra,546 <memset>
c032: f8000793 li a5,-128
c036: b43c sb a5,11(s0)
c038: 8522 mv a0,s0
c03a: d00f406f j 53a <__riscv_restore_0>
0000c03e <icmp_send_response.isra.0>:
icmp_send_response.isra.0():
c03e: cbef42ef jal t0,4fc <__riscv_save_4>
c042: 842a mv s0,a0
c044: 8a2e mv s4,a1
c046: 89b2 mv s3,a2
c048: 02400593 li a1,36
c04c: 4601 li a2,0
c04e: 4505 li a0,1
c050: a93fc0ef jal ra,8ae2 <pbuf_alloc>
c054: cd31 beqz a0,c0b0 <icmp_send_response.isra.0+0x72>
c056: 00042903 lw s2,0(s0)
c05a: 4140 lw s0,4(a0)
c05c: 84aa mv s1,a0
c05e: 4671 li a2,28
c060: 85ca mv a1,s2
c062: 01440023 sb s4,0(s0)
c066: 013400a3 sb s3,1(s0)
c06a: 00040223 sb zero,4(s0)
c06e: 000402a3 sb zero,5(s0)
c072: 00040323 sb zero,6(s0)
c076: 000403a3 sb zero,7(s0)
c07a: 00840513 addi a0,s0,8
c07e: 653000ef jal ra,ced0 <memcpy>
c082: 24ae lhu a1,10(s1)
c084: 00040123 sb zero,2(s0)
c088: 000401a3 sb zero,3(s0)
c08c: 8522 mv a0,s0
c08e: 211d jal c4b4 <inet_chksum>
c090: a028 sb a0,2(s0)
c092: 8121 srli a0,a0,0x8
c094: b028 sb a0,3(s0)
c096: 4785 li a5,1
c098: 4701 li a4,0
c09a: 08000693 li a3,128
c09e: 00c90613 addi a2,s2,12
c0a2: 4581 li a1,0
c0a4: 8526 mv a0,s1
c0a6: a8bfb0ef jal ra,7b30 <ip_output>
c0aa: 8526 mv a0,s1
c0ac: 9e9fc0ef jal ra,8a94 <pbuf_free>
c0b0: c80f406f j 530 <__riscv_restore_4>
0000c0b4 <icmp_input>:
icmp_input():
c0b4: c3af42ef jal t0,4ee <__riscv_save_10>
c0b8: 4140 lw s0,4(a0)
c0ba: 84aa mv s1,a0
c0bc: 1141 addi sp,sp,-16
c0be: 301c lbu a5,1(s0)
c0c0: 2008 lbu a0,0(s0)
c0c2: 89ae mv s3,a1
c0c4: 07a2 slli a5,a5,0x8
c0c6: 8d5d or a0,a0,a5
c0c8: deafb0ef jal ra,76b2 <ntohs>
c0cc: 00655913 srli s2,a0,0x6
c0d0: 03c97913 andi s2,s2,60
c0d4: 41200ab3 neg s5,s2
c0d8: 0ac2 slli s5,s5,0x10
c0da: 410ada93 srai s5,s5,0x10
c0de: 85d6 mv a1,s5
c0e0: 8526 mv a0,s1
c0e2: 945fc0ef jal ra,8a26 <pbuf_header>
c0e6: e139 bnez a0,c12c <icmp_input+0x78>
c0e8: 249e lhu a5,8(s1)
c0ea: 468d li a3,3
c0ec: 04f6f063 bgeu a3,a5,c12c <icmp_input+0x78>
c0f0: 40dc lw a5,4(s1)
c0f2: 2398 lbu a4,0(a5)
c0f4: 04d71263 bne a4,a3,c138 <icmp_input+0x84>
c0f8: 2798 lbu a4,8(a5)
c0fa: 00878693 addi a3,a5,8
c0fe: 3f88 lbu a0,25(a5)
c100: 8b3d andi a4,a4,15
c102: 070a slli a4,a4,0x2
c104: 9736 add a4,a4,a3
c106: 232c lbu a1,2(a4)
c108: 00374803 lbu a6,3(a4) # 8003 <ip_reass+0x36d>
c10c: 2f98 lbu a4,24(a5)
c10e: 0522 slli a0,a0,0x8
c110: 3394 lbu a3,1(a5)
c112: 8d59 or a0,a0,a4
c114: 2fb8 lbu a4,26(a5)
c116: 3b90 lbu a2,17(a5)
c118: 05a2 slli a1,a1,0x8
c11a: 0742 slli a4,a4,0x10
c11c: 8f49 or a4,a4,a0
c11e: 3fa8 lbu a0,27(a5)
c120: 0105e5b3 or a1,a1,a6
c124: 0562 slli a0,a0,0x18
c126: 8d59 or a0,a0,a4
c128: ba3fa0ef jal ra,6cca <LwipUnreachPort>
c12c: 8526 mv a0,s1
c12e: 967fc0ef jal ra,8a94 <pbuf_free>
c132: 0141 addi sp,sp,16
c134: bf2f406f j 526 <__riscv_restore_10>
c138: 47a1 li a5,8
c13a: fef719e3 bne a4,a5,c12c <icmp_input+0x78>
c13e: 381c lbu a5,17(s0)
c140: 01044a03 lbu s4,16(s0)
c144: f0000537 lui a0,0xf0000
c148: 07a2 slli a5,a5,0x8
c14a: 0147e7b3 or a5,a5,s4
c14e: 01244a03 lbu s4,18(s0)
c152: 4b01 li s6,0
c154: 0a42 slli s4,s4,0x10
c156: 00fa67b3 or a5,s4,a5
c15a: 01344a03 lbu s4,19(s0)
c15e: 0a62 slli s4,s4,0x18
c160: 00fa6a33 or s4,s4,a5
c164: d80fb0ef jal ra,76e4 <ntohl>
c168: 8c2a mv s8,a0
c16a: e0000537 lui a0,0xe0000
c16e: d76fb0ef jal ra,76e4 <ntohl>
c172: 8baa mv s7,a0
c174: 85ce mv a1,s3
c176: 01040513 addi a0,s0,16
c17a: 9edfb0ef jal ra,7b66 <ip_addr_isbroadcast>
c17e: e519 bnez a0,c18c <icmp_input+0xd8>
c180: 018a7533 and a0,s4,s8
c184: 41750533 sub a0,a0,s7
c188: 00a03b33 snez s6,a0
c18c: b31fa0ef jal ra,6cbc <QueryPingEnable>
c190: dd51 beqz a0,c12c <icmp_input+0x78>
c192: f80b0de3 beqz s6,c12c <icmp_input+0x78>
c196: 249a lhu a4,8(s1)
c198: 479d li a5,7
c19a: f8e7f9e3 bgeu a5,a4,c12c <icmp_input+0x78>
c19e: 8526 mv a0,s1
c1a0: 2625 jal c4c8 <inet_chksum_pbuf>
c1a2: f549 bnez a0,c12c <icmp_input+0x78>
c1a4: 0942 slli s2,s2,0x10
c1a6: 02200593 li a1,34
c1aa: 8526 mv a0,s1
c1ac: 41095913 srai s2,s2,0x10
c1b0: 877fc0ef jal ra,8a26 <pbuf_header>
c1b4: 12050463 beqz a0,c2dc <icmp_input+0x228>
c1b8: 85ca mv a1,s2
c1ba: 8526 mv a0,s1
c1bc: 86bfc0ef jal ra,8a26 <pbuf_header>
c1c0: f535 bnez a0,c12c <icmp_input+0x78>
c1c2: 248e lhu a1,8(s1)
c1c4: 4601 li a2,0
c1c6: 4509 li a0,2
c1c8: 91bfc0ef jal ra,8ae2 <pbuf_alloc>
c1cc: 8a2a mv s4,a0
c1ce: dd39 beqz a0,c12c <icmp_input+0x78>
c1d0: 85a6 mv a1,s1
c1d2: af5fc0ef jal ra,8cc6 <pbuf_copy>
c1d6: f939 bnez a0,c12c <icmp_input+0x78>
c1d8: 85d6 mv a1,s5
c1da: 8552 mv a0,s4
c1dc: 004a2403 lw s0,4(s4)
c1e0: 847fc0ef jal ra,8a26 <pbuf_header>
c1e4: f521 bnez a0,c12c <icmp_input+0x78>
c1e6: 8526 mv a0,s1
c1e8: 8adfc0ef jal ra,8a94 <pbuf_free>
c1ec: 84d2 mv s1,s4
c1ee: 3458 lbu a4,13(s0)
c1f0: 245c lbu a5,12(s0)
c1f2: 3814 lbu a3,17(s0)
c1f4: 0722 slli a4,a4,0x8
c1f6: 8f5d or a4,a4,a5
c1f8: 247c lbu a5,14(s0)
c1fa: 06a2 slli a3,a3,0x8
c1fc: 0044aa03 lw s4,4(s1)
c200: 07c2 slli a5,a5,0x10
c202: 8f5d or a4,a4,a5
c204: 347c lbu a5,15(s0)
c206: 653d lui a0,0xf
c208: 7ff50513 addi a0,a0,2047 # f7ff <_data_lma+0x22eb>
c20c: 07e2 slli a5,a5,0x18
c20e: 8fd9 or a5,a5,a4
c210: 2818 lbu a4,16(s0)
c212: a81c sb a5,16(s0)
c214: 8ed9 or a3,a3,a4
c216: 2838 lbu a4,18(s0)
c218: 0742 slli a4,a4,0x10
c21a: 8ed9 or a3,a3,a4
c21c: 3838 lbu a4,19(s0)
c21e: 0762 slli a4,a4,0x18
c220: 8f55 or a4,a4,a3
c222: 00875693 srli a3,a4,0x8
c226: a458 sb a4,12(s0)
c228: b454 sb a3,13(s0)
c22a: 01075693 srli a3,a4,0x10
c22e: 8361 srli a4,a4,0x18
c230: b478 sb a4,15(s0)
c232: 0087d713 srli a4,a5,0x8
c236: b818 sb a4,17(s0)
c238: 0107d713 srli a4,a5,0x10
c23c: 83e1 srli a5,a5,0x18
c23e: a474 sb a3,14(s0)
c240: a838 sb a4,18(s0)
c242: b83c sb a5,19(s0)
c244: 003a4a83 lbu s5,3(s4)
c248: 002a4783 lbu a5,2(s4)
c24c: 000a0023 sb zero,0(s4)
c250: 0aa2 slli s5,s5,0x8
c252: 00faeab3 or s5,s5,a5
c256: c4efb0ef jal ra,76a4 <htons>
c25a: 08aae963 bltu s5,a0,c2ec <icmp_input+0x238>
c25e: 6505 lui a0,0x1
c260: 80050513 addi a0,a0,-2048 # 800 <__stack_size>
c264: c40fb0ef jal ra,76a4 <htons>
c268: 003a4783 lbu a5,3(s4)
c26c: 002a4703 lbu a4,2(s4)
c270: 07a2 slli a5,a5,0x8
c272: 8fd9 or a5,a5,a4
c274: 0785 addi a5,a5,1
c276: 953e add a0,a0,a5
c278: 0542 slli a0,a0,0x10
c27a: 8141 srli a0,a0,0x10
c27c: 00aa0123 sb a0,2(s4)
c280: 8121 srli a0,a0,0x8
c282: 00aa01a3 sb a0,3(s4)
c286: 341c lbu a5,9(s0)
c288: 2408 lbu a0,8(s0)
c28a: 07a2 slli a5,a5,0x8
c28c: 8d5d or a0,a0,a5
c28e: c24fb0ef jal ra,76b2 <ntohs>
c292: 67a1 lui a5,0x8
c294: 0ff57513 andi a0,a0,255
c298: 8d5d or a0,a0,a5
c29a: c0afb0ef jal ra,76a4 <htons>
c29e: a408 sb a0,8(s0)
c2a0: 8121 srli a0,a0,0x8
c2a2: b408 sb a0,9(s0)
c2a4: 45d1 li a1,20
c2a6: 00040523 sb zero,10(s0)
c2aa: 000405a3 sb zero,11(s0)
c2ae: 8522 mv a0,s0
c2b0: 2411 jal c4b4 <inet_chksum>
c2b2: a428 sb a0,10(s0)
c2b4: 8121 srli a0,a0,0x8
c2b6: b428 sb a0,11(s0)
c2b8: 85ca mv a1,s2
c2ba: 8526 mv a0,s1
c2bc: f6afc0ef jal ra,8a26 <pbuf_header>
c2c0: e60516e3 bnez a0,c12c <icmp_input+0x78>
c2c4: 884e mv a6,s3
c2c6: 4785 li a5,1
c2c8: 4701 li a4,0
c2ca: 08000693 li a3,128
c2ce: 4601 li a2,0
c2d0: 00c40593 addi a1,s0,12
c2d4: 8526 mv a0,s1
c2d6: f00fb0ef jal ra,79d6 <ip_output_if>
c2da: bd89 j c12c <icmp_input+0x78>
c2dc: fde00593 li a1,-34
c2e0: 8526 mv a0,s1
c2e2: f44fc0ef jal ra,8a26 <pbuf_header>
c2e6: f00504e3 beqz a0,c1ee <icmp_input+0x13a>
c2ea: b589 j c12c <icmp_input+0x78>
c2ec: 6505 lui a0,0x1
c2ee: 80050513 addi a0,a0,-2048 # 800 <__stack_size>
c2f2: bb2fb0ef jal ra,76a4 <htons>
c2f6: 003a4783 lbu a5,3(s4)
c2fa: 002a4703 lbu a4,2(s4)
c2fe: 07a2 slli a5,a5,0x8
c300: 8fd9 or a5,a5,a4
c302: bf95 j c276 <icmp_input+0x1c2>
0000c304 <icmp_dest_unreach>:
icmp_dest_unreach():
c304: a12f42ef jal t0,516 <__riscv_save_0>
c308: 0ff5f613 andi a2,a1,255
c30c: 0511 addi a0,a0,4
c30e: 458d li a1,3
c310: d2fff0ef jal ra,c03e <icmp_send_response.isra.0>
c314: a26f406f j 53a <__riscv_restore_0>
0000c318 <icmp_time_exceeded>:
icmp_time_exceeded():
c318: 9fef42ef jal t0,516 <__riscv_save_0>
c31c: 0ff5f613 andi a2,a1,255
c320: 0511 addi a0,a0,4
c322: 45ad li a1,11
c324: d1bff0ef jal ra,c03e <icmp_send_response.isra.0>
c328: a12f406f j 53a <__riscv_restore_0>
0000c32c <lwip_standard_chksum>:
lwip_standard_chksum():
c32c: 9eaf42ef jal t0,516 <__riscv_save_0>
c330: 00b50833 add a6,a0,a1
c334: 0842 slli a6,a6,0x10
c336: 86aa mv a3,a0
c338: 4701 li a4,0
c33a: 01085813 srli a6,a6,0x10
c33e: 4885 li a7,1
c340: 40d807b3 sub a5,a6,a3
c344: 07c2 slli a5,a5,0x10
c346: 83c1 srli a5,a5,0x10
c348: 04f8e463 bltu a7,a5,c390 <lwip_standard_chksum+0x64>
c34c: 0015d793 srli a5,a1,0x1
c350: 00179693 slli a3,a5,0x1
c354: 9536 add a0,a0,a3
c356: 56f9 li a3,-2
c358: 02d787b3 mul a5,a5,a3
c35c: 95be add a1,a1,a5
c35e: 05c2 slli a1,a1,0x10
c360: 81c1 srli a1,a1,0x10
c362: c581 beqz a1,c36a <lwip_standard_chksum+0x3e>
c364: 211c lbu a5,0(a0)
c366: 07a2 slli a5,a5,0x8
c368: 973e add a4,a4,a5
c36a: 6541 lui a0,0x10
c36c: fff50693 addi a3,a0,-1 # ffff <_data_lma+0x2aeb>
c370: 01075793 srli a5,a4,0x10
c374: 8f75 and a4,a4,a3
c376: 00e78533 add a0,a5,a4
c37a: 77c1 lui a5,0xffff0
c37c: 8fe9 and a5,a5,a0
c37e: c399 beqz a5,c384 <lwip_standard_chksum+0x58>
c380: 8d75 and a0,a0,a3
c382: 0505 addi a0,a0,1
c384: 0542 slli a0,a0,0x10
c386: 8141 srli a0,a0,0x10
c388: b1cfb0ef jal ra,76a4 <htons>
c38c: 9aef406f j 53a <__riscv_restore_0>
c390: 329c lbu a5,1(a3)
c392: 2290 lbu a2,0(a3)
c394: 0689 addi a3,a3,2
c396: 07a2 slli a5,a5,0x8
c398: 8fd1 or a5,a5,a2
c39a: 00879613 slli a2,a5,0x8
c39e: 83a1 srli a5,a5,0x8
c3a0: 8fd1 or a5,a5,a2
c3a2: 07c2 slli a5,a5,0x10
c3a4: 83c1 srli a5,a5,0x10
c3a6: 973e add a4,a4,a5
c3a8: bf61 j c340 <lwip_standard_chksum+0x14>
0000c3aa <inet_chksum_pseudo>:
inet_chksum_pseudo():
c3aa: 944f42ef jal t0,4ee <__riscv_save_10>
c3ae: 2002e7b7 lui a5,0x2002e
c3b2: be47a783 lw a5,-1052(a5) # 2002dbe4 <WCHCfg+0x14>
c3b6: 84ba mv s1,a4
c3b8: 1141 addi sp,sp,-16
c3ba: 00579713 slli a4,a5,0x5
c3be: 0e074963 bltz a4,c4b0 <inet_chksum_pseudo+0x106>
c3c2: 6b41 lui s6,0x10
c3c4: 892a mv s2,a0
c3c6: 8aae mv s5,a1
c3c8: 8a32 mv s4,a2
c3ca: 4981 li s3,0
c3cc: 4401 li s0,0
c3ce: 1b7d addi s6,s6,-1
c3d0: 4b85 li s7,1
c3d2: 08091e63 bnez s2,c46e <inet_chksum_pseudo+0xc4>
c3d6: 00098b63 beqz s3,c3ec <inet_chksum_pseudo+0x42>
c3da: 6741 lui a4,0x10
c3dc: 00841793 slli a5,s0,0x8
c3e0: 177d addi a4,a4,-1
c3e2: 8021 srli s0,s0,0x8
c3e4: 8ff9 and a5,a5,a4
c3e6: 0ff47413 andi s0,s0,255
c3ea: 8c5d or s0,s0,a5
c3ec: 001ac503 lbu a0,1(s5)
c3f0: 000ac783 lbu a5,0(s5)
c3f4: 000a4703 lbu a4,0(s4)
c3f8: 0522 slli a0,a0,0x8
c3fa: 8d5d or a0,a0,a5
c3fc: 002ac783 lbu a5,2(s5)
c400: 003a4603 lbu a2,3(s4)
c404: 6941 lui s2,0x10
c406: 07c2 slli a5,a5,0x10
c408: 8d5d or a0,a0,a5
c40a: 003ac783 lbu a5,3(s5)
c40e: 0662 slli a2,a2,0x18
c410: 197d addi s2,s2,-1
c412: 07e2 slli a5,a5,0x18
c414: 8fc9 or a5,a5,a0
c416: 001a4503 lbu a0,1(s4)
c41a: 0522 slli a0,a0,0x8
c41c: 8f49 or a4,a4,a0
c41e: 002a4503 lbu a0,2(s4)
c422: 0542 slli a0,a0,0x10
c424: 8d59 or a0,a0,a4
c426: 8e49 or a2,a2,a0
c428: 01267533 and a0,a2,s2
c42c: 8241 srli a2,a2,0x10
c42e: 0127f733 and a4,a5,s2
c432: 9532 add a0,a0,a2
c434: 953a add a0,a0,a4
c436: 83c1 srli a5,a5,0x10
c438: 953e add a0,a0,a5
c43a: 942a add s0,s0,a0
c43c: 8536 mv a0,a3
c43e: a66fb0ef jal ra,76a4 <htons>
c442: 942a add s0,s0,a0
c444: 8526 mv a0,s1
c446: a5efb0ef jal ra,76a4 <htons>
c44a: 9522 add a0,a0,s0
c44c: 01055413 srli s0,a0,0x10
c450: 01257533 and a0,a0,s2
c454: 942a add s0,s0,a0
c456: 01045513 srli a0,s0,0x10
c45a: 01247433 and s0,s0,s2
c45e: 9522 add a0,a0,s0
c460: fff54513 not a0,a0
c464: 0542 slli a0,a0,0x10
c466: 8141 srli a0,a0,0x10
c468: 0141 addi sp,sp,16
c46a: 8bcf406f j 526 <__riscv_restore_10>
c46e: 00a95583 lhu a1,10(s2) # 1000a <_data_lma+0x2af6>
c472: 00492503 lw a0,4(s2)
c476: c636 sw a3,12(sp)
c478: eb5ff0ef jal ra,c32c <lwip_standard_chksum>
c47c: 942a add s0,s0,a0
c47e: 01045793 srli a5,s0,0x10
c482: 01647433 and s0,s0,s6
c486: 943e add s0,s0,a5
c488: 00a95783 lhu a5,10(s2)
c48c: 46b2 lw a3,12(sp)
c48e: 8b85 andi a5,a5,1
c490: cf89 beqz a5,c4aa <inet_chksum_pseudo+0x100>
c492: 00841793 slli a5,s0,0x8
c496: 8021 srli s0,s0,0x8
c498: 413b89b3 sub s3,s7,s3
c49c: 0167f7b3 and a5,a5,s6
c4a0: 0ff47413 andi s0,s0,255
c4a4: 0ff9f993 andi s3,s3,255
c4a8: 8c5d or s0,s0,a5
c4aa: 00092903 lw s2,0(s2)
c4ae: b715 j c3d2 <inet_chksum_pseudo+0x28>
c4b0: 4501 li a0,0
c4b2: bf5d j c468 <inet_chksum_pseudo+0xbe>
0000c4b4 <inet_chksum>:
inet_chksum():
c4b4: 862f42ef jal t0,516 <__riscv_save_0>
c4b8: e75ff0ef jal ra,c32c <lwip_standard_chksum>
c4bc: fff54513 not a0,a0
c4c0: 0542 slli a0,a0,0x10
c4c2: 8141 srli a0,a0,0x10
c4c4: 876f406f j 53a <__riscv_restore_0>
0000c4c8 <inet_chksum_pbuf>:
inet_chksum_pbuf():
c4c8: 834f42ef jal t0,4fc <__riscv_save_4>
c4cc: 69c1 lui s3,0x10
c4ce: 84aa mv s1,a0
c4d0: 4901 li s2,0
c4d2: 4401 li s0,0
c4d4: 19fd addi s3,s3,-1
c4d6: 4a05 li s4,1
c4d8: e095 bnez s1,c4fc <inet_chksum_pbuf+0x34>
c4da: 00090b63 beqz s2,c4f0 <inet_chksum_pbuf+0x28>
c4de: 6741 lui a4,0x10
c4e0: 00841793 slli a5,s0,0x8
c4e4: 177d addi a4,a4,-1
c4e6: 8021 srli s0,s0,0x8
c4e8: 8ff9 and a5,a5,a4
c4ea: 0ff47413 andi s0,s0,255
c4ee: 8c5d or s0,s0,a5
c4f0: fff44513 not a0,s0
c4f4: 0542 slli a0,a0,0x10
c4f6: 8141 srli a0,a0,0x10
c4f8: 838f406f j 530 <__riscv_restore_4>
c4fc: 24ae lhu a1,10(s1)
c4fe: 40c8 lw a0,4(s1)
c500: e2dff0ef jal ra,c32c <lwip_standard_chksum>
c504: 942a add s0,s0,a0
c506: 01045793 srli a5,s0,0x10
c50a: 01347433 and s0,s0,s3
c50e: 943e add s0,s0,a5
c510: 24be lhu a5,10(s1)
c512: 8b85 andi a5,a5,1
c514: cf89 beqz a5,c52e <inet_chksum_pbuf+0x66>
c516: 00841793 slli a5,s0,0x8
c51a: 8021 srli s0,s0,0x8
c51c: 412a0933 sub s2,s4,s2
c520: 0137f7b3 and a5,a5,s3
c524: 0ff47413 andi s0,s0,255
c528: 0ff97913 andi s2,s2,255
c52c: 8c5d or s0,s0,a5
c52e: 4084 lw s1,0(s1)
c530: b765 j c4d8 <inet_chksum_pbuf+0x10>
0000c532 <printchar>:
printchar():
c532: 1101 addi sp,sp,-32
c534: ce06 sw ra,28(sp)
c536: c62e sw a1,12(sp)
c538: cd0d beqz a0,c572 <printchar+0x40>
c53a: 4118 lw a4,0(a0)
c53c: 87aa mv a5,a0
c53e: c305 beqz a4,c55e <printchar+0x2c>
c540: 4158 lw a4,4(a0)
c542: 557d li a0,-1
c544: cb11 beqz a4,c558 <printchar+0x26>
c546: 4685 li a3,1
c548: 00d71b63 bne a4,a3,c55e <printchar+0x2c>
c54c: 4798 lw a4,8(a5)
c54e: 00070023 sb zero,0(a4) # 10000 <_data_lma+0x2aec>
c552: 0007a223 sw zero,4(a5)
c556: 4505 li a0,1
c558: 40f2 lw ra,28(sp)
c55a: 6105 addi sp,sp,32
c55c: 8082 ret
c55e: 4798 lw a4,8(a5)
c560: 46b2 lw a3,12(sp)
c562: a314 sb a3,0(a4)
c564: 4798 lw a4,8(a5)
c566: 0705 addi a4,a4,1
c568: c798 sw a4,8(a5)
c56a: 43d8 lw a4,4(a5)
c56c: 177d addi a4,a4,-1
c56e: c3d8 sw a4,4(a5)
c570: b7dd j c556 <printchar+0x24>
c572: 4605 li a2,1
c574: 006c addi a1,sp,12
c576: 9eaf90ef jal ra,5760 <_write>
c57a: bff1 j c556 <printchar+0x24>
0000c57c <prints>:
prints():
c57c: 7179 addi sp,sp,-48
c57e: d422 sw s0,40(sp)
c580: d226 sw s1,36(sp)
c582: ce4e sw s3,28(sp)
c584: cc52 sw s4,24(sp)
c586: ca56 sw s5,20(sp)
c588: d606 sw ra,44(sp)
c58a: d04a sw s2,32(sp)
c58c: c85a sw s6,16(sp)
c58e: 8a2a mv s4,a0
c590: 8aae mv s5,a1
c592: 8432 mv s0,a2
c594: 4481 li s1,0
c596: 02000993 li s3,32
c59a: 02064463 bltz a2,c5c2 <prints+0x46>
c59e: 009a87b3 add a5,s5,s1
c5a2: 00078783 lb a5,0(a5)
c5a6: e39d bnez a5,c5cc <prints+0x50>
c5a8: 0284d663 bge s1,s0,c5d4 <prints+0x58>
c5ac: 02e4d263 bge s1,a4,c5d0 <prints+0x54>
c5b0: 8c19 sub s0,s0,a4
c5b2: 0026f793 andi a5,a3,2
c5b6: 02000993 li s3,32
c5ba: c781 beqz a5,c5c2 <prints+0x46>
c5bc: e319 bnez a4,c5c2 <prints+0x46>
c5be: 03000993 li s3,48
c5c2: 8a85 andi a3,a3,1
c5c4: 4901 li s2,0
c5c6: ea85 bnez a3,c5f6 <prints+0x7a>
c5c8: 8922 mv s2,s0
c5ca: a831 j c5e6 <prints+0x6a>
c5cc: 0485 addi s1,s1,1
c5ce: bfc1 j c59e <prints+0x22>
c5d0: 8c05 sub s0,s0,s1
c5d2: b7c5 j c5b2 <prints+0x36>
c5d4: 4401 li s0,0
c5d6: bff1 j c5b2 <prints+0x36>
c5d8: 85ce mv a1,s3
c5da: 8552 mv a0,s4
c5dc: c63a sw a4,12(sp)
c5de: f55ff0ef jal ra,c532 <printchar>
c5e2: 4732 lw a4,12(sp)
c5e4: 197d addi s2,s2,-1
c5e6: ff2049e3 bgtz s2,c5d8 <prints+0x5c>
c5ea: 8922 mv s2,s0
c5ec: 00045363 bgez s0,c5f2 <prints+0x76>
c5f0: 4901 li s2,0
c5f2: 41240433 sub s0,s0,s2
c5f6: 02e4cb63 blt s1,a4,c62c <prints+0xb0>
c5fa: 84ca mv s1,s2
c5fc: 412487b3 sub a5,s1,s2
c600: 97d6 add a5,a5,s5
c602: 00078583 lb a1,0(a5)
c606: e1a1 bnez a1,c646 <prints+0xca>
c608: 8922 mv s2,s0
c60a: 05204363 bgtz s2,c650 <prints+0xd4>
c60e: 00045363 bgez s0,c614 <prints+0x98>
c612: 4401 li s0,0
c614: 00940533 add a0,s0,s1
c618: 50b2 lw ra,44(sp)
c61a: 5422 lw s0,40(sp)
c61c: 5492 lw s1,36(sp)
c61e: 5902 lw s2,32(sp)
c620: 49f2 lw s3,28(sp)
c622: 4a62 lw s4,24(sp)
c624: 4ad2 lw s5,20(sp)
c626: 4b42 lw s6,16(sp)
c628: 6145 addi sp,sp,48
c62a: 8082 ret
c62c: 409704b3 sub s1,a4,s1
c630: 8b26 mv s6,s1
c632: 03000593 li a1,48
c636: 8552 mv a0,s4
c638: 1b7d addi s6,s6,-1
c63a: ef9ff0ef jal ra,c532 <printchar>
c63e: fe0b1ae3 bnez s6,c632 <prints+0xb6>
c642: 9926 add s2,s2,s1
c644: bf5d j c5fa <prints+0x7e>
c646: 8552 mv a0,s4
c648: eebff0ef jal ra,c532 <printchar>
c64c: 0485 addi s1,s1,1
c64e: b77d j c5fc <prints+0x80>
c650: 85ce mv a1,s3
c652: 8552 mv a0,s4
c654: edfff0ef jal ra,c532 <printchar>
c658: 197d addi s2,s2,-1
c65a: bf45 j c60a <prints+0x8e>
0000c65c <printInt>:
printInt():
c65c: 715d addi sp,sp,-80
c65e: c2a6 sw s1,68(sp)
c660: dc52 sw s4,56(sp)
c662: c686 sw ra,76(sp)
c664: c4a2 sw s0,72(sp)
c666: c0ca sw s2,64(sp)
c668: de4e sw s3,60(sp)
c66a: da56 sw s5,52(sp)
c66c: 84ba mv s1,a4
c66e: 8a3e mv s4,a5
c670: e19d bnez a1,c696 <printInt+0x3a>
c672: 03000793 li a5,48
c676: 4701 li a4,0
c678: 86d2 mv a3,s4
c67a: 8626 mv a2,s1
c67c: 082c addi a1,sp,24
c67e: 84fc sh a5,24(sp)
c680: efdff0ef jal ra,c57c <prints>
c684: 40b6 lw ra,76(sp)
c686: 4426 lw s0,72(sp)
c688: 4496 lw s1,68(sp)
c68a: 4906 lw s2,64(sp)
c68c: 59f2 lw s3,60(sp)
c68e: 5a62 lw s4,56(sp)
c690: 5ad2 lw s5,52(sp)
c692: 6161 addi sp,sp,80
c694: 8082 ret
c696: 892a mv s2,a0
c698: 8436 mv s0,a3
c69a: 8ac6 mv s5,a7
c69c: ca91 beqz a3,c6b0 <printInt+0x54>
c69e: 47a9 li a5,10
c6a0: 4401 li s0,0
c6a2: 00f61763 bne a2,a5,c6b0 <printInt+0x54>
c6a6: 0005d563 bgez a1,c6b0 <printInt+0x54>
c6aa: 40b005b3 neg a1,a1
c6ae: 4405 li s0,1
c6b0: 020107a3 sb zero,47(sp)
c6b4: 02f10793 addi a5,sp,47
c6b8: 46a5 li a3,9
c6ba: fc680513 addi a0,a6,-58
c6be: 02c5f733 remu a4,a1,a2
c6c2: 00e6d363 bge a3,a4,c6c8 <printInt+0x6c>
c6c6: 972a add a4,a4,a0
c6c8: 03070713 addi a4,a4,48
c6cc: fee78fa3 sb a4,-1(a5)
c6d0: fff78993 addi s3,a5,-1
c6d4: 02c5d733 divu a4,a1,a2
c6d8: 04c5fb63 bgeu a1,a2,c72e <printInt+0xd2>
c6dc: cc09 beqz s0,c6f6 <printInt+0x9a>
c6de: c8b9 beqz s1,c734 <printInt+0xd8>
c6e0: 002a7713 andi a4,s4,2
c6e4: cb21 beqz a4,c734 <printInt+0xd8>
c6e6: 02d00593 li a1,45
c6ea: 854a mv a0,s2
c6ec: c642 sw a6,12(sp)
c6ee: e45ff0ef jal ra,c532 <printchar>
c6f2: 4832 lw a6,12(sp)
c6f4: 14fd addi s1,s1,-1
c6f6: 004a7793 andi a5,s4,4
c6fa: c38d beqz a5,c71c <printInt+0xc0>
c6fc: 06100793 li a5,97
c700: 03000593 li a1,48
c704: 854a mv a0,s2
c706: 02f81f63 bne a6,a5,c744 <printInt+0xe8>
c70a: e29ff0ef jal ra,c532 <printchar>
c70e: 07800593 li a1,120
c712: 854a mv a0,s2
c714: e1fff0ef jal ra,c532 <printchar>
c718: 0409 addi s0,s0,2
c71a: 14f9 addi s1,s1,-2
c71c: 8756 mv a4,s5
c71e: 86d2 mv a3,s4
c720: 8626 mv a2,s1
c722: 85ce mv a1,s3
c724: 854a mv a0,s2
c726: e57ff0ef jal ra,c57c <prints>
c72a: 9522 add a0,a0,s0
c72c: bfa1 j c684 <printInt+0x28>
c72e: 85ba mv a1,a4
c730: 87ce mv a5,s3
c732: b771 j c6be <printInt+0x62>
c734: 02d00713 li a4,45
c738: fee98fa3 sb a4,-1(s3) # ffff <_data_lma+0x2aeb>
c73c: 4401 li s0,0
c73e: ffe78993 addi s3,a5,-2
c742: bf55 j c6f6 <printInt+0x9a>
c744: defff0ef jal ra,c532 <printchar>
c748: 05800593 li a1,88
c74c: b7d9 j c712 <printInt+0xb6>
0000c74e <printLongLongInt>:
printLongLongInt():
c74e: 4501 li a0,0
c750: 8082 ret
0000c752 <printDouble>:
printDouble():
c752: 4501 li a0,0
c754: 8082 ret
0000c756 <print>:
print():
c756: 7139 addi sp,sp,-64
c758: d05a sw s6,32(sp)
c75a: 0000db37 lui s6,0xd
c75e: dc22 sw s0,56(sp)
c760: da26 sw s1,52(sp)
c762: d84a sw s2,48(sp)
c764: d64e sw s3,44(sp)
c766: d452 sw s4,40(sp)
c768: d256 sw s5,36(sp)
c76a: ce5e sw s7,28(sp)
c76c: cc62 sw s8,24(sp)
c76e: de06 sw ra,60(sp)
c770: ca66 sw s9,20(sp)
c772: 89aa mv s3,a0
c774: 892e mv s2,a1
c776: 8432 mv s0,a2
c778: 4a01 li s4,0
c77a: 4481 li s1,0
c77c: 02500b93 li s7,37
c780: 02b00a93 li s5,43
c784: 4c29 li s8,10
c786: 40cb0b13 addi s6,s6,1036 # d40c <tcp_backoff+0x30>
c78a: 00090583 lb a1,0(s2)
c78e: e58d bnez a1,c7b8 <print+0x62>
c790: 00098663 beqz s3,c79c <print+0x46>
c794: 4581 li a1,0
c796: 854e mv a0,s3
c798: d9bff0ef jal ra,c532 <printchar>
c79c: 50f2 lw ra,60(sp)
c79e: 5462 lw s0,56(sp)
c7a0: 8526 mv a0,s1
c7a2: 5942 lw s2,48(sp)
c7a4: 54d2 lw s1,52(sp)
c7a6: 59b2 lw s3,44(sp)
c7a8: 5a22 lw s4,40(sp)
c7aa: 5a92 lw s5,36(sp)
c7ac: 5b02 lw s6,32(sp)
c7ae: 4bf2 lw s7,28(sp)
c7b0: 4c62 lw s8,24(sp)
c7b2: 4cd2 lw s9,20(sp)
c7b4: 6121 addi sp,sp,64
c7b6: 8082 ret
c7b8: 01758863 beq a1,s7,c7c8 <print+0x72>
c7bc: 854e mv a0,s3
c7be: d75ff0ef jal ra,c532 <printchar>
c7c2: 0485 addi s1,s1,1
c7c4: 0905 addi s2,s2,1
c7c6: b7d1 j c78a <print+0x34>
c7c8: 00190783 lb a5,1(s2)
c7cc: 00190c93 addi s9,s2,1
c7d0: 01779a63 bne a5,s7,c7e4 <print+0x8e>
c7d4: 02500593 li a1,37
c7d8: 854e mv a0,s3
c7da: d59ff0ef jal ra,c532 <printchar>
c7de: 0485 addi s1,s1,1
c7e0: 8966 mv s2,s9
c7e2: b7cd j c7c4 <print+0x6e>
c7e4: d7d5 beqz a5,c790 <print+0x3a>
c7e6: 05578763 beq a5,s5,c834 <print+0xde>
c7ea: 00fac863 blt s5,a5,c7fa <print+0xa4>
c7ee: 02300713 li a4,35
c7f2: 04e78463 beq a5,a4,c83a <print+0xe4>
c7f6: 4781 li a5,0
c7f8: a005 j c818 <print+0xc2>
c7fa: 02d00713 li a4,45
c7fe: 00e78a63 beq a5,a4,c812 <print+0xbc>
c802: 03000713 li a4,48
c806: fee798e3 bne a5,a4,c7f6 <print+0xa0>
c80a: 00290c93 addi s9,s2,2
c80e: 4789 li a5,2
c810: a021 j c818 <print+0xc2>
c812: 00290c93 addi s9,s2,2
c816: 4785 li a5,1
c818: 000c8703 lb a4,0(s9)
c81c: 05570363 beq a4,s5,c862 <print+0x10c>
c820: 02eac163 blt s5,a4,c842 <print+0xec>
c824: 02300693 li a3,35
c828: 02d70b63 beq a4,a3,c85e <print+0x108>
c82c: 8966 mv s2,s9
c82e: 4601 li a2,0
c830: 45a5 li a1,9
c832: a835 j c86e <print+0x118>
c834: 00290c93 addi s9,s2,2
c838: bf7d j c7f6 <print+0xa0>
c83a: 00290c93 addi s9,s2,2
c83e: 4791 li a5,4
c840: bfe1 j c818 <print+0xc2>
c842: 02d00693 li a3,45
c846: 00d70963 beq a4,a3,c858 <print+0x102>
c84a: 03000693 li a3,48
c84e: fcd71fe3 bne a4,a3,c82c <print+0xd6>
c852: 0027e793 ori a5,a5,2
c856: a031 j c862 <print+0x10c>
c858: 0c85 addi s9,s9,1
c85a: 4785 li a5,1
c85c: bfc1 j c82c <print+0xd6>
c85e: 0047e793 ori a5,a5,4
c862: 0c85 addi s9,s9,1
c864: b7e1 j c82c <print+0xd6>
c866: 03860633 mul a2,a2,s8
c86a: 0905 addi s2,s2,1
c86c: 9636 add a2,a2,a3
c86e: 00090703 lb a4,0(s2)
c872: fd070693 addi a3,a4,-48
c876: 0ff6f513 andi a0,a3,255
c87a: fea5f6e3 bgeu a1,a0,c866 <print+0x110>
c87e: 02e00593 li a1,46
c882: 4699 li a3,6
c884: 00b71e63 bne a4,a1,c8a0 <print+0x14a>
c888: 0905 addi s2,s2,1
c88a: 4681 li a3,0
c88c: 45a5 li a1,9
c88e: 00090703 lb a4,0(s2)
c892: fd070713 addi a4,a4,-48
c896: 0ff77513 andi a0,a4,255
c89a: 02a5f563 bgeu a1,a0,c8c4 <print+0x16e>
c89e: 8a36 mv s4,a3
c8a0: 00090703 lb a4,0(s2)
c8a4: 06a00593 li a1,106
c8a8: 0ab70163 beq a4,a1,c94a <print+0x1f4>
c8ac: 02e5c163 blt a1,a4,c8ce <print+0x178>
c8b0: 04c00593 li a1,76
c8b4: 08b70b63 beq a4,a1,c94a <print+0x1f4>
c8b8: 06800593 li a1,104
c8bc: 08b70063 beq a4,a1,c93c <print+0x1e6>
c8c0: 4581 li a1,0
c8c2: a02d j c8ec <print+0x196>
c8c4: 038686b3 mul a3,a3,s8
c8c8: 0905 addi s2,s2,1
c8ca: 96ba add a3,a3,a4
c8cc: b7c9 j c88e <print+0x138>
c8ce: 07400593 li a1,116
c8d2: 06b70c63 beq a4,a1,c94a <print+0x1f4>
c8d6: 07a00593 li a1,122
c8da: 06b70863 beq a4,a1,c94a <print+0x1f4>
c8de: 06c00513 li a0,108
c8e2: 4581 li a1,0
c8e4: 00a71463 bne a4,a0,c8ec <print+0x196>
c8e8: 0905 addi s2,s2,1
c8ea: 4591 li a1,4
c8ec: 00090703 lb a4,0(s2)
c8f0: 06000513 li a0,96
c8f4: 06100813 li a6,97
c8f8: 00e54463 blt a0,a4,c900 <print+0x1aa>
c8fc: 04100813 li a6,65
c900: 06700513 li a0,103
c904: 06e54063 blt a0,a4,c964 <print+0x20e>
c908: 06500513 li a0,101
c90c: 14a75563 bge a4,a0,ca56 <print+0x300>
c910: 04700513 li a0,71
c914: 02e54d63 blt a0,a4,c94e <print+0x1f8>
c918: 04500593 li a1,69
c91c: 12b75d63 bge a4,a1,ca56 <print+0x300>
c920: 04300693 li a3,67
c924: ead710e3 bne a4,a3,c7c4 <print+0x6e>
c928: 4018 lw a4,0(s0)
c92a: 00440c93 addi s9,s0,4
c92e: 000106a3 sb zero,13(sp)
c932: 8658 sb a4,12(sp)
c934: 86be mv a3,a5
c936: 4701 li a4,0
c938: 006c addi a1,sp,12
c93a: a041 j c9ba <print+0x264>
c93c: 00190503 lb a0,1(s2)
c940: 4581 li a1,0
c942: fae515e3 bne a0,a4,c8ec <print+0x196>
c946: 0909 addi s2,s2,2
c948: b755 j c8ec <print+0x196>
c94a: 0905 addi s2,s2,1
c94c: bf95 j c8c0 <print+0x16a>
c94e: 06300693 li a3,99
c952: fcd70be3 beq a4,a3,c928 <print+0x1d2>
c956: 06e6c663 blt a3,a4,c9c2 <print+0x26c>
c95a: 05800693 li a3,88
c95e: 02d70363 beq a4,a3,c984 <print+0x22e>
c962: b58d j c7c4 <print+0x6e>
c964: 07300693 li a3,115
c968: 04d70163 beq a4,a3,c9aa <print+0x254>
c96c: 02e6c863 blt a3,a4,c99c <print+0x246>
c970: 06f00693 li a3,111
c974: 0ad70e63 beq a4,a3,ca30 <print+0x2da>
c978: 07000693 li a3,112
c97c: 0047e793 ori a5,a5,4
c980: e4d712e3 bne a4,a3,c7c4 <print+0x6e>
c984: cdd9 beqz a1,ca22 <print+0x2cc>
c986: 041d addi s0,s0,7
c988: ff847593 andi a1,s0,-8
c98c: 88c2 mv a7,a6
c98e: 00858413 addi s0,a1,8
c992: 883e mv a6,a5
c994: 4701 li a4,0
c996: 87b2 mv a5,a2
c998: 46c1 li a3,16
c99a: a83d j c9d8 <print+0x282>
c99c: 07500693 li a3,117
c9a0: 06d70063 beq a4,a3,ca00 <print+0x2aa>
c9a4: 07800693 li a3,120
c9a8: bf5d j c95e <print+0x208>
c9aa: 4018 lw a4,0(s0)
c9ac: 00440c93 addi s9,s0,4
c9b0: 85da mv a1,s6
c9b2: c311 beqz a4,c9b6 <print+0x260>
c9b4: 85ba mv a1,a4
c9b6: 8752 mv a4,s4
c9b8: 86be mv a3,a5
c9ba: 854e mv a0,s3
c9bc: bc1ff0ef jal ra,c57c <prints>
c9c0: a82d j c9fa <print+0x2a4>
c9c2: c195 beqz a1,c9e6 <print+0x290>
c9c4: 041d addi s0,s0,7
c9c6: ff847593 andi a1,s0,-8
c9ca: 88c2 mv a7,a6
c9cc: 00858413 addi s0,a1,8
c9d0: 883e mv a6,a5
c9d2: 4705 li a4,1
c9d4: 87b2 mv a5,a2
c9d6: 46a9 li a3,10
c9d8: 41d0 lw a2,4(a1)
c9da: 418c lw a1,0(a1)
c9dc: 854e mv a0,s3
c9de: d71ff0ef jal ra,c74e <printLongLongInt>
c9e2: 94aa add s1,s1,a0
c9e4: b3c5 j c7c4 <print+0x6e>
c9e6: 00440c93 addi s9,s0,4
c9ea: 88d2 mv a7,s4
c9ec: 8732 mv a4,a2
c9ee: 4685 li a3,1
c9f0: 4629 li a2,10
c9f2: 400c lw a1,0(s0)
c9f4: 854e mv a0,s3
c9f6: c67ff0ef jal ra,c65c <printInt>
c9fa: 94aa add s1,s1,a0
c9fc: 8466 mv s0,s9
c9fe: b3d9 j c7c4 <print+0x6e>
ca00: c999 beqz a1,ca16 <print+0x2c0>
ca02: 041d addi s0,s0,7
ca04: ff847593 andi a1,s0,-8
ca08: 88c2 mv a7,a6
ca0a: 00858413 addi s0,a1,8
ca0e: 883e mv a6,a5
ca10: 4701 li a4,0
ca12: 87b2 mv a5,a2
ca14: b7c9 j c9d6 <print+0x280>
ca16: 00440c93 addi s9,s0,4
ca1a: 88d2 mv a7,s4
ca1c: 8732 mv a4,a2
ca1e: 4681 li a3,0
ca20: bfc1 j c9f0 <print+0x29a>
ca22: 8732 mv a4,a2
ca24: 00440c93 addi s9,s0,4
ca28: 88d2 mv a7,s4
ca2a: 4681 li a3,0
ca2c: 4641 li a2,16
ca2e: b7d1 j c9f2 <print+0x29c>
ca30: cd81 beqz a1,ca48 <print+0x2f2>
ca32: 041d addi s0,s0,7
ca34: ff847593 andi a1,s0,-8
ca38: 88c2 mv a7,a6
ca3a: 00858413 addi s0,a1,8
ca3e: 883e mv a6,a5
ca40: 4701 li a4,0
ca42: 87b2 mv a5,a2
ca44: 46a1 li a3,8
ca46: bf49 j c9d8 <print+0x282>
ca48: 8732 mv a4,a2
ca4a: 00440c93 addi s9,s0,4
ca4e: 88d2 mv a7,s4
ca50: 4681 li a3,0
ca52: 4621 li a2,8
ca54: bf79 j c9f2 <print+0x29c>
ca56: 041d addi s0,s0,7
ca58: ff847593 andi a1,s0,-8
ca5c: 00858413 addi s0,a1,8
ca60: 8732 mv a4,a2
ca62: 41d0 lw a2,4(a1)
ca64: 418c lw a1,0(a1)
ca66: 88c2 mv a7,a6
ca68: 854e mv a0,s3
ca6a: 883e mv a6,a5
ca6c: 87b6 mv a5,a3
ca6e: 46a9 li a3,10
ca70: ce3ff0ef jal ra,c752 <printDouble>
ca74: b7bd j c9e2 <print+0x28c>
0000ca76 <printf>:
printf():
ca76: 7139 addi sp,sp,-64
ca78: d22e sw a1,36(sp)
ca7a: d432 sw a2,40(sp)
ca7c: 85aa mv a1,a0
ca7e: 1050 addi a2,sp,36
ca80: 4501 li a0,0
ca82: ce06 sw ra,28(sp)
ca84: d636 sw a3,44(sp)
ca86: d83a sw a4,48(sp)
ca88: da3e sw a5,52(sp)
ca8a: dc42 sw a6,56(sp)
ca8c: de46 sw a7,60(sp)
ca8e: c632 sw a2,12(sp)
ca90: cc7ff0ef jal ra,c756 <print>
ca94: 40f2 lw ra,28(sp)
ca96: 6121 addi sp,sp,64
ca98: 8082 ret
0000ca9a <puts>:
puts():
ca9a: 1101 addi sp,sp,-32
ca9c: cc22 sw s0,24(sp)
ca9e: ca26 sw s1,20(sp)
caa0: ce06 sw ra,28(sp)
caa2: 211c lbu a5,0(a0)
caa4: 84aa mv s1,a0
caa6: 4401 li s0,0
caa8: 87dc sb a5,15(sp)
caaa: 00f10783 lb a5,15(sp)
caae: 0405 addi s0,s0,1
cab0: ef99 bnez a5,cace <puts+0x34>
cab2: 47a9 li a5,10
cab4: 00f10593 addi a1,sp,15
cab8: 4605 li a2,1
caba: 4501 li a0,0
cabc: 87dc sb a5,15(sp)
cabe: ca3f80ef jal ra,5760 <_write>
cac2: 8522 mv a0,s0
cac4: 40f2 lw ra,28(sp)
cac6: 4462 lw s0,24(sp)
cac8: 44d2 lw s1,20(sp)
caca: 6105 addi sp,sp,32
cacc: 8082 ret
cace: 4605 li a2,1
cad0: 00f10593 addi a1,sp,15
cad4: 4501 li a0,0
cad6: c8bf80ef jal ra,5760 <_write>
cada: 008487b3 add a5,s1,s0
cade: 239c lbu a5,0(a5)
cae0: 87dc sb a5,15(sp)
cae2: b7e1 j caaa <puts+0x10>
0000cae4 <putchar>:
putchar():
cae4: 1101 addi sp,sp,-32
cae6: c62a sw a0,12(sp)
cae8: 006c addi a1,sp,12
caea: 4605 li a2,1
caec: 4501 li a0,0
caee: ce06 sw ra,28(sp)
caf0: c71f80ef jal ra,5760 <_write>
caf4: 40f2 lw ra,28(sp)
caf6: 4505 li a0,1
caf8: 6105 addi sp,sp,32
cafa: 8082 ret
0000cafc <__divdi3>:
__divdi3():
cafc: 4801 li a6,0
cafe: 0e05c563 bltz a1,cbe8 <__divdi3+0xec>
cb02: 0006db63 bgez a3,cb18 <__divdi3+0x1c>
cb06: 40c00633 neg a2,a2
cb0a: 00c037b3 snez a5,a2
cb0e: 40d006b3 neg a3,a3
cb12: fff84813 not a6,a6
cb16: 8e9d sub a3,a3,a5
cb18: 87b6 mv a5,a3
cb1a: 8332 mv t1,a2
cb1c: 8eaa mv t4,a0
cb1e: 88ae mv a7,a1
cb20: 16069f63 bnez a3,cc9e <__divdi3+0x1a2>
cb24: 0cc5fb63 bgeu a1,a2,cbfa <__divdi3+0xfe>
cb28: 6741 lui a4,0x10
cb2a: 1ce66f63 bltu a2,a4,cd08 <__divdi3+0x20c>
cb2e: 010007b7 lui a5,0x1000
cb32: 36f66363 bltu a2,a5,ce98 <__divdi3+0x39c>
cb36: 01865693 srli a3,a2,0x18
cb3a: 47e1 li a5,24
cb3c: 00001717 auipc a4,0x1
cb40: 8d870713 addi a4,a4,-1832 # d414 <__clz_tab>
cb44: 9736 add a4,a4,a3
cb46: 2318 lbu a4,0(a4)
cb48: 97ba add a5,a5,a4
cb4a: 02000713 li a4,32
cb4e: 8f1d sub a4,a4,a5
cb50: cb19 beqz a4,cb66 <__divdi3+0x6a>
cb52: 00e595b3 sll a1,a1,a4
cb56: 00f557b3 srl a5,a0,a5
cb5a: 00e61333 sll t1,a2,a4
cb5e: 00b7e8b3 or a7,a5,a1
cb62: 00e51eb3 sll t4,a0,a4
cb66: 01035613 srli a2,t1,0x10
cb6a: 02c8d7b3 divu a5,a7,a2
cb6e: 01031693 slli a3,t1,0x10
cb72: 82c1 srli a3,a3,0x10
cb74: 010ed713 srli a4,t4,0x10
cb78: 02c8f5b3 remu a1,a7,a2
cb7c: 02f68533 mul a0,a3,a5
cb80: 05c2 slli a1,a1,0x10
cb82: 00e5e8b3 or a7,a1,a4
cb86: 00a8fa63 bgeu a7,a0,cb9a <__divdi3+0x9e>
cb8a: 989a add a7,a7,t1
cb8c: fff78713 addi a4,a5,-1 # ffffff <_data_lma+0xff2aeb>
cb90: 0068e463 bltu a7,t1,cb98 <__divdi3+0x9c>
cb94: 32a8e863 bltu a7,a0,cec4 <__divdi3+0x3c8>
cb98: 87ba mv a5,a4
cb9a: 40a888b3 sub a7,a7,a0
cb9e: 02c8d5b3 divu a1,a7,a2
cba2: 0ec2 slli t4,t4,0x10
cba4: 010ede93 srli t4,t4,0x10
cba8: 02c8f8b3 remu a7,a7,a2
cbac: 02b686b3 mul a3,a3,a1
cbb0: 08c2 slli a7,a7,0x10
cbb2: 01d8e8b3 or a7,a7,t4
cbb6: 00d8fb63 bgeu a7,a3,cbcc <__divdi3+0xd0>
cbba: 989a add a7,a7,t1
cbbc: fff58713 addi a4,a1,-1
cbc0: 0068e563 bltu a7,t1,cbca <__divdi3+0xce>
cbc4: 15f9 addi a1,a1,-2
cbc6: 00d8e363 bltu a7,a3,cbcc <__divdi3+0xd0>
cbca: 85ba mv a1,a4
cbcc: 01079513 slli a0,a5,0x10
cbd0: 8d4d or a0,a0,a1
cbd2: 4581 li a1,0
cbd4: 00080963 beqz a6,cbe6 <__divdi3+0xea>
cbd8: 40a00533 neg a0,a0
cbdc: 00a037b3 snez a5,a0
cbe0: 40b005b3 neg a1,a1
cbe4: 8d9d sub a1,a1,a5
cbe6: 8082 ret
cbe8: 40a00533 neg a0,a0
cbec: 00a037b3 snez a5,a0
cbf0: 40b005b3 neg a1,a1
cbf4: 8d9d sub a1,a1,a5
cbf6: 587d li a6,-1
cbf8: b729 j cb02 <__divdi3+0x6>
cbfa: e601 bnez a2,cc02 <__divdi3+0x106>
cbfc: 4305 li t1,1
cbfe: 02d35333 divu t1,t1,a3
cc02: 6741 lui a4,0x10
cc04: 0ee36963 bltu t1,a4,ccf6 <__divdi3+0x1fa>
cc08: 010007b7 lui a5,0x1000
cc0c: 28f36a63 bltu t1,a5,cea0 <__divdi3+0x3a4>
cc10: 01835693 srli a3,t1,0x18
cc14: 47e1 li a5,24
cc16: 00000717 auipc a4,0x0
cc1a: 7fe70713 addi a4,a4,2046 # d414 <__clz_tab>
cc1e: 9736 add a4,a4,a3
cc20: 2318 lbu a4,0(a4)
cc22: 97ba add a5,a5,a4
cc24: 02000713 li a4,32
cc28: 8f1d sub a4,a4,a5
cc2a: eb65 bnez a4,cd1a <__divdi3+0x21e>
cc2c: 01031893 slli a7,t1,0x10
cc30: 406586b3 sub a3,a1,t1
cc34: 01035f13 srli t5,t1,0x10
cc38: 0108d893 srli a7,a7,0x10
cc3c: 4585 li a1,1
cc3e: 010ed713 srli a4,t4,0x10
cc42: 03e6d7b3 divu a5,a3,t5
cc46: 03e6f6b3 remu a3,a3,t5
cc4a: 03178633 mul a2,a5,a7
cc4e: 06c2 slli a3,a3,0x10
cc50: 8f55 or a4,a4,a3
cc52: 00c77a63 bgeu a4,a2,cc66 <__divdi3+0x16a>
cc56: 971a add a4,a4,t1
cc58: fff78693 addi a3,a5,-1 # ffffff <_data_lma+0xff2aeb>
cc5c: 00676463 bltu a4,t1,cc64 <__divdi3+0x168>
cc60: 26c76563 bltu a4,a2,ceca <__divdi3+0x3ce>
cc64: 87b6 mv a5,a3
cc66: 8f11 sub a4,a4,a2
cc68: 03e756b3 divu a3,a4,t5
cc6c: 0ec2 slli t4,t4,0x10
cc6e: 010ede93 srli t4,t4,0x10
cc72: 03e77733 remu a4,a4,t5
cc76: 031688b3 mul a7,a3,a7
cc7a: 0742 slli a4,a4,0x10
cc7c: 01d76733 or a4,a4,t4
cc80: 01177b63 bgeu a4,a7,cc96 <__divdi3+0x19a>
cc84: 971a add a4,a4,t1
cc86: fff68613 addi a2,a3,-1
cc8a: 00676563 bltu a4,t1,cc94 <__divdi3+0x198>
cc8e: 16f9 addi a3,a3,-2
cc90: 01176363 bltu a4,a7,cc96 <__divdi3+0x19a>
cc94: 86b2 mv a3,a2
cc96: 01079513 slli a0,a5,0x10
cc9a: 8d55 or a0,a0,a3
cc9c: bf25 j cbd4 <__divdi3+0xd8>
cc9e: 04d5e163 bltu a1,a3,cce0 <__divdi3+0x1e4>
cca2: 67c1 lui a5,0x10
cca4: 04f6e163 bltu a3,a5,cce6 <__divdi3+0x1ea>
cca8: 010007b7 lui a5,0x1000
ccac: 1ef6e263 bltu a3,a5,ce90 <__divdi3+0x394>
ccb0: 0186d893 srli a7,a3,0x18
ccb4: 4761 li a4,24
ccb6: 00000797 auipc a5,0x0
ccba: 75e78793 addi a5,a5,1886 # d414 <__clz_tab>
ccbe: 97c6 add a5,a5,a7
ccc0: 0007c303 lbu t1,0(a5)
ccc4: 02000793 li a5,32
ccc8: 933a add t1,t1,a4
ccca: 406787b3 sub a5,a5,t1
ccce: ebe9 bnez a5,cda0 <__divdi3+0x2a4>
ccd0: 1cb6ec63 bltu a3,a1,cea8 <__divdi3+0x3ac>
ccd4: 00c53533 sltu a0,a0,a2
ccd8: 00154513 xori a0,a0,1
ccdc: 4581 li a1,0
ccde: bddd j cbd4 <__divdi3+0xd8>
cce0: 4581 li a1,0
cce2: 4501 li a0,0
cce4: bdc5 j cbd4 <__divdi3+0xd8>
cce6: 0ff00793 li a5,255
ccea: 1cd7f263 bgeu a5,a3,ceae <__divdi3+0x3b2>
ccee: 0086d893 srli a7,a3,0x8
ccf2: 4721 li a4,8
ccf4: b7c9 j ccb6 <__divdi3+0x1ba>
ccf6: 0ff00713 li a4,255
ccfa: 869a mv a3,t1
ccfc: f0677de3 bgeu a4,t1,cc16 <__divdi3+0x11a>
cd00: 00835693 srli a3,t1,0x8
cd04: 47a1 li a5,8
cd06: bf01 j cc16 <__divdi3+0x11a>
cd08: 0ff00713 li a4,255
cd0c: 86b2 mv a3,a2
cd0e: e2c777e3 bgeu a4,a2,cb3c <__divdi3+0x40>
cd12: 00865693 srli a3,a2,0x8
cd16: 47a1 li a5,8
cd18: b515 j cb3c <__divdi3+0x40>
cd1a: 00e31333 sll t1,t1,a4
cd1e: 00f5d633 srl a2,a1,a5
cd22: 01035f13 srli t5,t1,0x10
cd26: 03e65e33 divu t3,a2,t5
cd2a: 00e596b3 sll a3,a1,a4
cd2e: 00f557b3 srl a5,a0,a5
cd32: 8edd or a3,a3,a5
cd34: 01031893 slli a7,t1,0x10
cd38: 0108d893 srli a7,a7,0x10
cd3c: 00e51eb3 sll t4,a0,a4
cd40: 0106d593 srli a1,a3,0x10
cd44: 03e677b3 remu a5,a2,t5
cd48: 03c88733 mul a4,a7,t3
cd4c: 07c2 slli a5,a5,0x10
cd4e: 8fcd or a5,a5,a1
cd50: 00e7fb63 bgeu a5,a4,cd66 <__divdi3+0x26a>
cd54: 979a add a5,a5,t1
cd56: fffe0613 addi a2,t3,-1
cd5a: 1667e363 bltu a5,t1,cec0 <__divdi3+0x3c4>
cd5e: 16e7f163 bgeu a5,a4,cec0 <__divdi3+0x3c4>
cd62: 1e79 addi t3,t3,-2
cd64: 979a add a5,a5,t1
cd66: 8f99 sub a5,a5,a4
cd68: 03e7d633 divu a2,a5,t5
cd6c: 01069713 slli a4,a3,0x10
cd70: 8341 srli a4,a4,0x10
cd72: 03e7f7b3 remu a5,a5,t5
cd76: 02c88533 mul a0,a7,a2
cd7a: 01079693 slli a3,a5,0x10
cd7e: 8ed9 or a3,a3,a4
cd80: 00a6fb63 bgeu a3,a0,cd96 <__divdi3+0x29a>
cd84: 969a add a3,a3,t1
cd86: fff60793 addi a5,a2,-1 # fff <ETH_DMARxDescChainInit+0x45>
cd8a: 1266e763 bltu a3,t1,ceb8 <__divdi3+0x3bc>
cd8e: 12a6f563 bgeu a3,a0,ceb8 <__divdi3+0x3bc>
cd92: 1679 addi a2,a2,-2
cd94: 969a add a3,a3,t1
cd96: 010e1593 slli a1,t3,0x10
cd9a: 8e89 sub a3,a3,a0
cd9c: 8dd1 or a1,a1,a2
cd9e: b545 j cc3e <__divdi3+0x142>
cda0: 00665733 srl a4,a2,t1
cda4: 00f696b3 sll a3,a3,a5
cda8: 8ed9 or a3,a3,a4
cdaa: 0065d8b3 srl a7,a1,t1
cdae: 0106df13 srli t5,a3,0x10
cdb2: 03e8deb3 divu t4,a7,t5
cdb6: 01069e13 slli t3,a3,0x10
cdba: 00655333 srl t1,a0,t1
cdbe: 010e5e13 srli t3,t3,0x10
cdc2: 00f595b3 sll a1,a1,a5
cdc6: 00b365b3 or a1,t1,a1
cdca: 0105d713 srli a4,a1,0x10
cdce: 00f61633 sll a2,a2,a5
cdd2: 03e8f8b3 remu a7,a7,t5
cdd6: 03de0333 mul t1,t3,t4
cdda: 08c2 slli a7,a7,0x10
cddc: 00e8e733 or a4,a7,a4
cde0: 00677b63 bgeu a4,t1,cdf6 <__divdi3+0x2fa>
cde4: 9736 add a4,a4,a3
cde6: fffe8893 addi a7,t4,-1
cdea: 0cd76963 bltu a4,a3,cebc <__divdi3+0x3c0>
cdee: 0c677763 bgeu a4,t1,cebc <__divdi3+0x3c0>
cdf2: 1ef9 addi t4,t4,-2
cdf4: 9736 add a4,a4,a3
cdf6: 40670733 sub a4,a4,t1
cdfa: 03e75333 divu t1,a4,t5
cdfe: 05c2 slli a1,a1,0x10
ce00: 81c1 srli a1,a1,0x10
ce02: 03e77733 remu a4,a4,t5
ce06: 026e08b3 mul a7,t3,t1
ce0a: 0742 slli a4,a4,0x10
ce0c: 8dd9 or a1,a1,a4
ce0e: 0115fb63 bgeu a1,a7,ce24 <__divdi3+0x328>
ce12: 95b6 add a1,a1,a3
ce14: fff30713 addi a4,t1,-1
ce18: 08d5ee63 bltu a1,a3,ceb4 <__divdi3+0x3b8>
ce1c: 0915fc63 bgeu a1,a7,ceb4 <__divdi3+0x3b8>
ce20: 1379 addi t1,t1,-2
ce22: 95b6 add a1,a1,a3
ce24: 0ec2 slli t4,t4,0x10
ce26: 6f41 lui t5,0x10
ce28: 006eeeb3 or t4,t4,t1
ce2c: ffff0713 addi a4,t5,-1 # ffff <_data_lma+0x2aeb>
ce30: 00eef6b3 and a3,t4,a4
ce34: 010ed313 srli t1,t4,0x10
ce38: 8f71 and a4,a4,a2
ce3a: 8241 srli a2,a2,0x10
ce3c: 02e68e33 mul t3,a3,a4
ce40: 411585b3 sub a1,a1,a7
ce44: 02c686b3 mul a3,a3,a2
ce48: 010e5893 srli a7,t3,0x10
ce4c: 02e30733 mul a4,t1,a4
ce50: 96ba add a3,a3,a4
ce52: 96c6 add a3,a3,a7
ce54: 02c30633 mul a2,t1,a2
ce58: 00e6f363 bgeu a3,a4,ce5e <__divdi3+0x362>
ce5c: 967a add a2,a2,t5
ce5e: 0106d313 srli t1,a3,0x10
ce62: 961a add a2,a2,t1
ce64: 02c5e263 bltu a1,a2,ce88 <__divdi3+0x38c>
ce68: 00c58563 beq a1,a2,ce72 <__divdi3+0x376>
ce6c: 8576 mv a0,t4
ce6e: 4581 li a1,0
ce70: b395 j cbd4 <__divdi3+0xd8>
ce72: 6741 lui a4,0x10
ce74: 177d addi a4,a4,-1
ce76: 8ef9 and a3,a3,a4
ce78: 06c2 slli a3,a3,0x10
ce7a: 00ee7e33 and t3,t3,a4
ce7e: 00f517b3 sll a5,a0,a5
ce82: 96f2 add a3,a3,t3
ce84: fed7f4e3 bgeu a5,a3,ce6c <__divdi3+0x370>
ce88: fffe8513 addi a0,t4,-1
ce8c: 4581 li a1,0
ce8e: b399 j cbd4 <__divdi3+0xd8>
ce90: 0106d893 srli a7,a3,0x10
ce94: 4741 li a4,16
ce96: b505 j ccb6 <__divdi3+0x1ba>
ce98: 01065693 srli a3,a2,0x10
ce9c: 47c1 li a5,16
ce9e: b979 j cb3c <__divdi3+0x40>
cea0: 01035693 srli a3,t1,0x10
cea4: 47c1 li a5,16
cea6: bb85 j cc16 <__divdi3+0x11a>
cea8: 4581 li a1,0
ceaa: 4505 li a0,1
ceac: b325 j cbd4 <__divdi3+0xd8>
ceae: 88b6 mv a7,a3
ceb0: 4701 li a4,0
ceb2: b511 j ccb6 <__divdi3+0x1ba>
ceb4: 833a mv t1,a4
ceb6: b7bd j ce24 <__divdi3+0x328>
ceb8: 863e mv a2,a5
ceba: bdf1 j cd96 <__divdi3+0x29a>
cebc: 8ec6 mv t4,a7
cebe: bf25 j cdf6 <__divdi3+0x2fa>
cec0: 8e32 mv t3,a2
cec2: b555 j cd66 <__divdi3+0x26a>
cec4: 17f9 addi a5,a5,-2
cec6: 989a add a7,a7,t1
cec8: b9c9 j cb9a <__divdi3+0x9e>
ceca: 17f9 addi a5,a5,-2
cecc: 971a add a4,a4,t1
cece: bb61 j cc66 <__divdi3+0x16a>
0000ced0 <memcpy>:
memcpy():
ced0: 00a5c7b3 xor a5,a1,a0
ced4: 8b8d andi a5,a5,3
ced6: 00c50733 add a4,a0,a2
ceda: e781 bnez a5,cee2 <memcpy+0x12>
cedc: 478d li a5,3
cede: 00c7ed63 bltu a5,a2,cef8 <memcpy+0x28>
cee2: 87aa mv a5,a0
cee4: 08e57e63 bgeu a0,a4,cf80 <memcpy+0xb0>
cee8: 2194 lbu a3,0(a1)
ceea: 0785 addi a5,a5,1
ceec: 0585 addi a1,a1,1
ceee: fed78fa3 sb a3,-1(a5)
cef2: fee7ebe3 bltu a5,a4,cee8 <memcpy+0x18>
cef6: 8082 ret
cef8: 00357693 andi a3,a0,3
cefc: 87aa mv a5,a0
cefe: ca89 beqz a3,cf10 <memcpy+0x40>
cf00: 2194 lbu a3,0(a1)
cf02: 0785 addi a5,a5,1
cf04: 0585 addi a1,a1,1
cf06: fed78fa3 sb a3,-1(a5)
cf0a: 0037f693 andi a3,a5,3
cf0e: bfc5 j cefe <memcpy+0x2e>
cf10: ffc77693 andi a3,a4,-4
cf14: fe068613 addi a2,a3,-32
cf18: 06c7f063 bgeu a5,a2,cf78 <memcpy+0xa8>
cf1c: 0005a383 lw t2,0(a1)
cf20: 0045a283 lw t0,4(a1)
cf24: 0085af83 lw t6,8(a1)
cf28: 00c5af03 lw t5,12(a1)
cf2c: 0105ae83 lw t4,16(a1)
cf30: 0145ae03 lw t3,20(a1)
cf34: 0185a303 lw t1,24(a1)
cf38: 01c5a883 lw a7,28(a1)
cf3c: 02458593 addi a1,a1,36
cf40: 0077a023 sw t2,0(a5)
cf44: ffc5a803 lw a6,-4(a1)
cf48: 0057a223 sw t0,4(a5)
cf4c: 01f7a423 sw t6,8(a5)
cf50: 01e7a623 sw t5,12(a5)
cf54: 01d7a823 sw t4,16(a5)
cf58: 01c7aa23 sw t3,20(a5)
cf5c: 0067ac23 sw t1,24(a5)
cf60: 0117ae23 sw a7,28(a5)
cf64: 02478793 addi a5,a5,36
cf68: ff07ae23 sw a6,-4(a5)
cf6c: b775 j cf18 <memcpy+0x48>
cf6e: 4190 lw a2,0(a1)
cf70: 0791 addi a5,a5,4
cf72: 0591 addi a1,a1,4
cf74: fec7ae23 sw a2,-4(a5)
cf78: fed7ebe3 bltu a5,a3,cf6e <memcpy+0x9e>
cf7c: f6e7e6e3 bltu a5,a4,cee8 <memcpy+0x18>
cf80: 8082 ret
0000cf82 <memmove>:
memmove():
cf82: 04a5f163 bgeu a1,a0,cfc4 <memmove+0x42>
cf86: 00c586b3 add a3,a1,a2
cf8a: 02d57d63 bgeu a0,a3,cfc4 <memmove+0x42>
cf8e: fff64593 not a1,a2
cf92: 4781 li a5,0
cf94: 17fd addi a5,a5,-1
cf96: 00f59363 bne a1,a5,cf9c <memmove+0x1a>
cf9a: 8082 ret
cf9c: 00f68733 add a4,a3,a5
cfa0: 00074803 lbu a6,0(a4) # 10000 <_data_lma+0x2aec>
cfa4: 00c78733 add a4,a5,a2
cfa8: 972a add a4,a4,a0
cfaa: 01070023 sb a6,0(a4)
cfae: b7dd j cf94 <memmove+0x12>
cfb0: 00f58733 add a4,a1,a5
cfb4: 2314 lbu a3,0(a4)
cfb6: 00f50733 add a4,a0,a5
cfba: 0785 addi a5,a5,1
cfbc: a314 sb a3,0(a4)
cfbe: fef619e3 bne a2,a5,cfb0 <memmove+0x2e>
cfc2: 8082 ret
cfc4: 4781 li a5,0
cfc6: bfe5 j cfbe <memmove+0x3c>
cfc8: 4e20 lw s0,88(a2)
cfca: 0000 unimp
cfcc: 3a98 lbu a4,17(a3)
cfce: 0000 unimp
cfd0: 0009 c.nop 2
cfd2: 0000 unimp
cfd4: 6148 flw fa0,4(a0)
cfd6: 6472 flw fs0,28(sp)
cfd8: 6146 flw ft2,80(sp)
cfda: 6c75 lui s8,0x1d
cfdc: 5f74 lw a3,124(a4)
cfde: 6148 flw fa0,4(a0)
cfe0: 646e flw fs0,216(sp)
cfe2: 656c flw fa1,76(a0)
cfe4: 0d72 slli s10,s10,0x1c
cfe6: 0000 unimp
cfe8: 656d lui a0,0x1b
cfea: 6370 flw fa2,68(a4)
cfec: 2020 lbu s0,2(s0)
cfee: 253a lhu a4,10(a0)
cff0: 3830 lbu a2,19(s0)
cff2: 0d78 addi a4,sp,668
cff4: 000a c.slli zero,0x2
cff6: 0000 unimp
cff8: 636d lui t1,0x1b
cffa: 7561 lui a0,0xffff8
cffc: 253a6573 csrrsi a0,0x253,20
d000: 3830 lbu a2,19(s0)
d002: 0d78 addi a4,sp,668
d004: 000a c.slli zero,0x2
d006: 0000 unimp
d008: 746d lui s0,0xffffb
d00a: 6176 flw ft2,92(sp)
d00c: 206c lbu a1,6(s0)
d00e: 253a lhu a4,10(a0)
d010: 3830 lbu a2,19(s0)
d012: 0d78 addi a4,sp,668
d014: 000a c.slli zero,0x2
d016: 0000 unimp
d018: 544e4947 0x544e4947
d01c: 535f 4154 5f54 0x5f544154535f
d022: 4e55 li t3,21
d024: 4552 lw a0,20(sp)
d026: 4341 li t1,16
d028: 0d48 addi a0,sp,660
d02a: 0000 unimp
d02c: 544e4947 0x544e4947
d030: 535f 4154 5f54 0x5f544154535f
d036: 5049 c.li zero,-14
d038: 435f 4e4f 4c46 0x4c464e4f435f
d03e: 0d49 addi s10,s10,18
d040: 0000 unimp
d042: 0000 unimp
d044: 4850 lw a2,20(s0)
d046: 2059 jal d0cc <memmove+0x14a>
d048: 694c flw fa1,20(a0)
d04a: 6b6e flw fs6,216(sp)
d04c: 5320 lw s0,96(a4)
d04e: 6375 lui t1,0x1d
d050: 73736563 bltu t1,s7,d77a <_data_lma+0x266>
d054: 000d c.nop 3
d056: 0000 unimp
d058: 4354 lw a3,4(a4)
d05a: 2050 lbu a2,4(s0)
d05c: 6e6e6f43 fmadd.q ft10,ft8,ft6,fa3,unknown
d060: 6365 lui t1,0x19
d062: 6574 flw fa3,76(a0)
d064: 2c64 lbu s1,30(s0)
d066: 7320 flw fs0,96(a4)
d068: 656b636f jal t1,c36be <_data_lma+0xb61aa>
d06c: 2074 lbu a3,6(s0)
d06e: 6425 lui s0,0x9
d070: 0a0d addi s4,s4,3
d072: 0000 unimp
d074: 4354 lw a3,4(a4)
d076: 2050 lbu a2,4(s0)
d078: 6944 flw fs1,20(a0)
d07a: 6e6f6373 csrrsi t1,0x6e6,30
d07e: 656e flw fa0,216(sp)
d080: 64657463 bgeu a0,t1,d6c8 <_data_lma+0x1b4>
d084: 202c lbu a1,2(s0)
d086: 6b636f73 csrrsi t5,0x6b6,6
d08a: 7465 lui s0,0xffff9
d08c: 2520 lbu s0,10(a0)
d08e: 0d64 addi s1,sp,668
d090: 000a c.slli zero,0x2
d092: 0000 unimp
d094: 4354 lw a3,4(a4)
d096: 2050 lbu a2,4(s0)
d098: 6954 flw fa3,20(a0)
d09a: 656d lui a0,0x1b
d09c: 2c74756f jal a0,54b62 <_data_lma+0x4764e>
d0a0: 7320 flw fs0,96(a4)
d0a2: 656b636f jal t1,c36f8 <_data_lma+0xb61e4>
d0a6: 2074 lbu a3,6(s0)
d0a8: 6425 lui s0,0x9
d0aa: 0a0d addi s4,s4,3
d0ac: 0000 unimp
d0ae: 0000 unimp
d0b0: 7245 lui tp,0xffff1
d0b2: 6f72 flw ft10,28(sp)
d0b4: 3a72 lhu a2,54(a2)
d0b6: 2520 lbu s0,10(a0)
d0b8: 3230 lbu a2,3(a2)
d0ba: 0d58 addi a4,sp,660
d0bc: 000a c.slli zero,0x2
d0be: 0000 unimp
d0c0: 4354 lw a3,4(a4)
d0c2: 4350 lw a2,4(a4)
d0c4: 696c flw fa1,84(a0)
d0c6: 6e65 lui t3,0x19
d0c8: 2074 lbu a3,6(s0)
d0ca: 6554 flw fa3,12(a0)
d0cc: 0a0d7473 csrrci s0,0xa0,26
d0d0: 74737953 0x74737953
d0d4: 6d65 lui s10,0x19
d0d6: 3a6b6c43 fmadd.d fs8,fs6,ft6,ft7,unknown
d0da: 6425 lui s0,0x9
d0dc: 0a0d addi s4,s4,3
d0de: 0000 unimp
d0e0: 7355 lui t1,0xffff5
d0e2: 7265 lui tp,0xffff9
d0e4: 7942 flw fs2,48(sp)
d0e6: 6574 flw fa3,76(a0)
d0e8: 203a lhu a4,2(s0)
d0ea: 3025 jal c912 <print+0x1bc>
d0ec: 7832 flw fa6,44(sp)
d0ee: 0a0d addi s4,s4,3
d0f0: 0000 unimp
d0f2: 0000 unimp
d0f4: 6c46 flw fs8,80(sp)
d0f6: 7361 lui t1,0xffff8
d0f8: 2f68 lbu a0,30(a4)
d0fa: 4d415253 0x4d415253
d0fe: 6320 flw fs0,64(a4)
d100: 69666e6f jal t3,73796 <_data_lma+0x66282>
d104: 68632067 0x68632067
d108: 6e61 lui t3,0x18
d10a: 20646567 0x20646567
d10e: 6f74 flw fa3,92(a4)
d110: 2520 lbu s0,10(a0)
d112: 2c64 lbu s1,30(s0)
d114: 7220 flw fs0,96(a2)
d116: 7365 lui t1,0xffff9
d118: 7465 lui s0,0xffff9
d11a: 6974 flw fa3,84(a0)
d11c: 676e flw fa4,216(sp)
d11e: 2e2e lhu a1,26(a2)
d120: 0d2e slli s10,s10,0xb
d122: 000a c.slli zero,0x2
d124: 656e flw fa0,216(sp)
d126: 2074 lbu a3,6(s0)
d128: 6576 flw fa0,92(sp)
d12a: 7372 flw ft6,60(sp)
d12c: 6f69 lui t5,0x1a
d12e: 3a6e lhu a1,54(a2)
d130: 7825 lui a6,0xfffe9
d132: 000a c.slli zero,0x2
d134: 6576 flw fa0,92(sp)
d136: 7372 flw ft6,60(sp)
d138: 6f69 lui t5,0x1a
d13a: 206e lhu a1,6(s0)
d13c: 7265 lui tp,0xffff9
d13e: 6f72 flw ft10,28(sp)
d140: 2e72 lhu a2,30(a2)
d142: 0000 unimp
d144: 616d addi sp,sp,240
d146: 64612063 0x64612063
d14a: 7264 flw fs1,100(a2)
d14c: 003a c.slli zero,0xe
d14e: 0000 unimp
d150: 7825 lui a6,0xfffe9
d152: 0020 addi s0,sp,8
d154: 676e flw fa4,216(sp)
d156: 0000 unimp
d158: 4e484357 0x4e484357
d15c: 5445 li s0,-15
d15e: 4c5f 6269 6e49 0x6e4962694c5f
d164: 7469 lui s0,0xffffa
d166: 5320 lw s0,96(a4)
d168: 6375 lui t1,0x1d
d16a: 73736563 bltu t1,s7,d894 <_data_lma+0x380>
d16e: 000d c.nop 3
d170: 6e686377 0x6e686377
d174: 7465 lui s0,0xffff9
d176: 0000 unimp
d178: 7562 flw fa0,56(sp)
d17a: 656e6973 csrrsi s2,0x656,28
d17e: 00007373 csrrci t1,ustatus,0
...
0000d184 <MemNum>:
d184: 00000000 00000002 00000004 00060006 ................
0000d194 <MemSize>:
d194: 0020001c 002400b4 00200014 06000010 .. ...$... .....
d1a4: 5f786471 74726f70 6f6e203a 65726620 qdx_port: no fre
d1b4: 6f532065 74656b63 0d787443 00000000 e SocketCtx.....
d1c4: 5f786471 74726f70 6f53203a 74656b63 qdx_port: Socket
d1d4: 61657243 61662074 25206c69 0d583230 Creat fail %02X.
d1e4: 0000000a 5f786471 74726f70 6f53203a ....qdx_port: So
d1f4: 74656b63 6e6e6f43 20746365 6c696166 cketConnect fail
d204: 32302520 000a0d58 5f786471 74726f70 %02X...qdx_port
d214: 6f63203a 63656e6e 69742074 756f656d : connect timeou
d224: 00000d74 5f786471 74726f70 6f63203a t...qdx_port: co
d234: 63656e6e 20646574 6b636f73 20642520 nnected sock %d
d244: 25203e2d 64252e64 2e64252e 253a6425 -> %d.%d.%d.%d:%
d254: 000a0d64 5f786471 74726f70 6162203a d...qdx_port: ba
d264: 50492064 73252220 000a0d22 746e6f43 d IP "%s"...Cont
d274: 006c6f72 61746144 00000000 5f706374 rol.Data....tcp_
d284: 0072676d 5f706374 635f7872 00000000 mgr.tcp_rx_c....
d294: 5f706374 645f7872 00000000 2e373231 tcp_rx_d....127.
d2a4: 2e302e30 00000031 302e3156 00000000 0.0.1...V1.0....
d2b4: 302e3256 00000000 462f2e2e 52656572 V2.0....../FreeR
d2c4: 2f534f54 74726f70 656c6261 6d654d2f TOS/portable/Mem
d2d4: 676e614d 6165682f 2e345f70 00000063 Mang/heap_4.c...
d2e4: 20727265 6c207461 20656e69 6f206425 err at line %d o
d2f4: 69662066 2220656c 2e227325 200a0d20 f file "%s". ..
d304: 00000000 462f2e2e 52656572 2f534f54 ....../FreeRTOS/
d314: 74726f70 656c6261 4343472f 5349522f portable/GCC/RIS
d324: 2f562d43 74726f70 0000632e 462f2e2e C-V/port.c..../F
d334: 52656572 2f534f54 75657571 00632e65 reeRTOS/queue.c.
d344: 462f2e2e 52656572 2f534f54 6b736174 ../FreeRTOS/task
d354: 00632e73 454c4449 00000000 000054ba s.c.IDLE.....T..
d364: 000054ba 000054fe 0000550a 0000554e .T...T...U..NU..
d374: 000054ba 000054ba 000054fe 0000550a .T...T...T...U..
d384: 51726d54 00000000 462f2e2e 52656572 TmrQ....../FreeR
d394: 2f534f54 656d6974 632e7372 00000000 TOS/timers.c....
d3a4: 20726d54 00637653 Tmr Svc.
0000d3ac <ErrTable>:
d3ac: 13121100 17161514 1b1a1918 1f1e1d1c ................
d3bc: 00009516 0000955c 00009576 00009586 ....\...v.......
d3cc: 00009586 00009572 00009572 00009594 ....r...r.......
0000d3dc <tcp_backoff>:
d3dc: 04030201 07070605 07070707 00000007 ................
d3ec: 0000ab06 0000ac14 0000ad00 0000ad08 ................
d3fc: 0000adae 0000ad00 0000adf4 0000ae30 ............0...
d40c: 6c756e28 0000296c (null)..
0000d414 <__clz_tab>:
d414: 02020100 03030303 04040404 04040404 ................
d424: 05050505 05050505 05050505 05050505 ................
d434: 06060606 06060606 06060606 06060606 ................
d444: 06060606 06060606 06060606 06060606 ................
d454: 07070707 07070707 07070707 07070707 ................
d464: 07070707 07070707 07070707 07070707 ................
d474: 07070707 07070707 07070707 07070707 ................
d484: 07070707 07070707 07070707 07070707 ................
d494: 08080808 08080808 08080808 08080808 ................
d4a4: 08080808 08080808 08080808 08080808 ................
d4b4: 08080808 08080808 08080808 08080808 ................
d4c4: 08080808 08080808 08080808 08080808 ................
d4d4: 08080808 08080808 08080808 08080808 ................
d4e4: 08080808 08080808 08080808 08080808 ................
d4f4: 08080808 08080808 08080808 08080808 ................
d504: 08080808 08080808 08080808 08080808 ................