Skip to content

Commit 71bb6d7

Browse files
committed
using pbuf_take instead of memcpy
1 parent a7fcd82 commit 71bb6d7

File tree

11 files changed

+52
-50
lines changed

11 files changed

+52
-50
lines changed

build/CMakeCache.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ PICO_BOOT_STAGE2_DIR:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sd
495495
PICO_CMAKE_PRELOAD_PLATFORM_DIR:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/cmake/preload/platforms
496496
PICO_CMAKE_PRELOAD_PLATFORM_FILE:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/cmake/preload/platforms/rp2040.cmake
497497
PICO_COMPILER_ASM:INTERNAL=/usr/bin/arm-none-eabi-gcc
498-
PICO_DOXYGEN_EXCLUDE_PATHS:INTERNAL= /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs
498+
PICO_DOXYGEN_EXCLUDE_PATHS:INTERNAL= /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common/cmsis /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040/hardware_regs
499499
PICO_DOXYGEN_PATHS:INTERNAL= /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/common /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/lib/cyw43-driver/src /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2_common /mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/src/rp2040
500500
PICO_NO_HARDWARE:INTERNAL=0
501501
PICO_ON_DEVICE:INTERNAL=1
28 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

build/pico_webserver.bin

0 Bytes
Binary file not shown.

build/pico_webserver.dis

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -559,11 +559,11 @@ Disassembly of section .text:
559559
1000050e: d0f6 beq.n 100004fe <tud_network_recv_cb+0x16>
560560
10000510: 0022 movs r2, r4
561561
10000512: 0029 movs r1, r5
562-
10000514: 6840 ldr r0, [r0, #4]
563-
10000516: f004 fb2b bl 10004b70 <__wrap___aeabi_memcpy>
564-
1000051a: 2001 movs r0, #1
565-
1000051c: 6037 str r7, [r6, #0]
566-
1000051e: e7eb b.n 100004f8 <tud_network_recv_cb+0x10>
562+
10000514: f00c fbd0 bl 1000ccb8 <pbuf_take>
563+
10000518: 2001 movs r0, #1
564+
1000051a: 6037 str r7, [r6, #0]
565+
1000051c: e7ec b.n 100004f8 <tud_network_recv_cb+0x10>
566+
1000051e: 46c0 nop ; (mov r8, r8)
567567
10000520: 2000df90 .word 0x2000df90
568568

569569
10000524 <tud_network_xmit_cb>:
@@ -578,27 +578,27 @@ Disassembly of section .text:
578578
10000536: 46c0 nop ; (mov r8, r8)
579579

580580
10000538 <service_traffic>:
581-
10000538: b530 push {r4, r5, lr}
581+
10000538: b510 push {r4, lr}
582582
1000053a: 4c0b ldr r4, [pc, #44] ; (10000568 <service_traffic+0x30>)
583-
1000053c: b083 sub sp, #12
584-
1000053e: 6822 ldr r2, [r4, #0]
585-
10000540: 2a00 cmp r2, #0
583+
1000053c: b082 sub sp, #8
584+
1000053e: 6823 ldr r3, [r4, #0]
585+
10000540: 2b00 cmp r3, #0
586586
10000542: d00f beq.n 10000564 <service_traffic+0x2c>
587-
10000544: 2500 movs r5, #0
588-
10000546: 6853 ldr r3, [r2, #4]
589-
10000548: 2100 movs r1, #0
590-
1000054a: 8952 ldrh r2, [r2, #10]
591-
1000054c: 4807 ldr r0, [pc, #28] ; (1000056c <service_traffic+0x34>)
592-
1000054e: 9500 str r5, [sp, #0]
593-
10000550: f009 fe24 bl 1000a19c <cyw43_send_ethernet>
594-
10000554: 4b06 ldr r3, [pc, #24] ; (10000570 <service_traffic+0x38>)
595-
10000556: 6018 str r0, [r3, #0]
596-
10000558: 6820 ldr r0, [r4, #0]
597-
1000055a: f00c f9af bl 1000c8bc <pbuf_free>
598-
1000055e: 6025 str r5, [r4, #0]
587+
10000544: 2101 movs r1, #1
588+
10000546: 891a ldrh r2, [r3, #8]
589+
10000548: 4808 ldr r0, [pc, #32] ; (1000056c <service_traffic+0x34>)
590+
1000054a: 9100 str r1, [sp, #0]
591+
1000054c: 2100 movs r1, #0
592+
1000054e: f009 fe25 bl 1000a19c <cyw43_send_ethernet>
593+
10000552: 4b07 ldr r3, [pc, #28] ; (10000570 <service_traffic+0x38>)
594+
10000554: 6018 str r0, [r3, #0]
595+
10000556: 6820 ldr r0, [r4, #0]
596+
10000558: f00c f9b0 bl 1000c8bc <pbuf_free>
597+
1000055c: 2300 movs r3, #0
598+
1000055e: 6023 str r3, [r4, #0]
599599
10000560: f005 fce2 bl 10005f28 <tud_network_recv_renew>
600-
10000564: b003 add sp, #12
601-
10000566: bd30 pop {r4, r5, pc}
600+
10000564: b002 add sp, #8
601+
10000566: bd10 pop {r4, pc}
602602
10000568: 2000df90 .word 0x2000df90
603603
1000056c: 2000cb30 .word 0x2000cb30
604604
10000570: 2000d468 .word 0x2000d468
@@ -1119,16 +1119,16 @@ Disassembly of section .text:
11191119
100009d6: 2800 cmp r0, #0
11201120
100009d8: d1f6 bne.n 100009c8 <cyw43_cb_process_ethernet+0xc>
11211121
100009da: 22c1 movs r2, #193 ; 0xc1
1122-
100009dc: b2a1 uxth r1, r4
1123-
100009de: 0052 lsls r2, r2, #1
1124-
100009e0: 2000 movs r0, #0
1125-
100009e2: f00b fd15 bl 1000c410 <pbuf_alloc>
1126-
100009e6: 4e0d ldr r6, [pc, #52] ; (10000a1c <cyw43_cb_process_ethernet+0x60>)
1127-
100009e8: 0022 movs r2, r4
1128-
100009ea: 6030 str r0, [r6, #0]
1122+
100009dc: b2a4 uxth r4, r4
1123+
100009de: 0021 movs r1, r4
1124+
100009e0: 0052 lsls r2, r2, #1
1125+
100009e2: 2000 movs r0, #0
1126+
100009e4: f00b fd14 bl 1000c410 <pbuf_alloc>
1127+
100009e8: 4e0c ldr r6, [pc, #48] ; (10000a1c <cyw43_cb_process_ethernet+0x60>)
1128+
100009ea: 0022 movs r2, r4
11291129
100009ec: 0029 movs r1, r5
1130-
100009ee: 6840 ldr r0, [r0, #4]
1131-
100009f0: f004 f8be bl 10004b70 <__wrap___aeabi_memcpy>
1130+
100009ee: 6030 str r0, [r6, #0]
1131+
100009f0: f00c f962 bl 1000ccb8 <pbuf_take>
11321132
100009f4: 6833 ldr r3, [r6, #0]
11331133
100009f6: 8958 ldrh r0, [r3, #10]
11341134
100009f8: f005 fc8a bl 10006310 <tud_network_can_xmit>

build/pico_webserver.elf

0 Bytes
Binary file not shown.

build/pico_webserver.elf.map

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,9 +1466,9 @@ Discarded input sections
14661466
.bss 0x0000000000000000 0x0 liblwipcore.a(inet_chksum.c.obj)
14671467
.text 0x0000000000000000 0x0 liblwipcore.a(ip.c.obj)
14681468
.data 0x0000000000000000 0x0 liblwipcore.a(ip.c.obj)
1469-
.text 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
1470-
.data 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
1471-
.bss 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
1469+
.text 0x0000000000000000 0x0 /tmp/cclEhIKL.o
1470+
.data 0x0000000000000000 0x0 /tmp/cclEhIKL.o
1471+
.bss 0x0000000000000000 0x0 /tmp/cclEhIKL.o
14721472
.data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
14731473
.bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
14741474
.text 0x0000000000000000 0x10 /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-atexit.o)
@@ -1624,7 +1624,7 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nof
16241624
.boot2 0x0000000010000000 0x100
16251625
0x0000000010000000 __boot2_start__ = .
16261626
*(.boot2)
1627-
.boot2 0x0000000010000000 0x100 /tmp/cc9Uvqkl.o
1627+
.boot2 0x0000000010000000 0x100 /tmp/cclEhIKL.o
16281628
0x0000000010000100 __boot2_end__ = .
16291629
0x0000000000000001 ASSERT (((__boot2_end__ - __boot2_start__) == 0x100), ERROR: Pico second stage bootloader must be 256 bytes in size)
16301630

@@ -3602,7 +3602,7 @@ LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_async_context/as
36023602
LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_async_context/async_context_base.c.obj
36033603
LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
36043604
LOAD liblwipcore.a
3605-
LOAD /tmp/cc9Uvqkl.o
3605+
LOAD /tmp/cclEhIKL.o
36063606
LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a
36073607
LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
36083608
START GROUP
@@ -3782,7 +3782,7 @@ LOAD linker stubs
37823782
.ARM.attributes
37833783
0x0000000000000d32 0x32 liblwipcore.a(ip.c.obj)
37843784
.ARM.attributes
3785-
0x0000000000000d64 0x22 /tmp/cc9Uvqkl.o
3785+
0x0000000000000d64 0x22 /tmp/cclEhIKL.o
37863786
.ARM.attributes
37873787
0x0000000000000d86 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
37883788
.ARM.attributes

build/pico_webserver.hex

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,12 @@
8080
:1004E000236010BD90DF0020F8B50D4E0500336885
8181
:1004F0000C000020002B00D0F8BD002901D1012004
8282
:10050000FAE7C122002052000BF082FF071EF6D04E
83-
:1005100022002900406804F02BFB01203760EBE744
83+
:10051000220029000CF0D0FB01203760ECE7C04638
8484
:1005200090DF002010B504000A8908000023210094
85-
:100530000CF024FB10BDC04630B50B4C83B02268D4
86-
:10054000002A0FD0002553680021528907480095E2
87-
:1005500009F024FE064B186020680CF0AFF9256006
88-
:1005600005F0E2FC03B030BD90DF002030CB00206E
85+
:100530000CF024FB10BDC04610B50B4C82B02368F4
86+
:10054000002B0FD001211A8908480091002109F0E1
87+
:1005500025FE074B186020680CF0B0F900232360DB
88+
:1005600005F0E2FC02B010BD90DF002030CB00208F
8989
:1005700068D400202923034AD35CDB0700D4FEE7BC
9090
:100580007047C04680D80020002070477047C046A2
9191
:1005900010B501F043FD002905D0FA220023920096
@@ -156,9 +156,9 @@
156156
:1009A0001A78002A00D110BD00221A701978002090
157157
:1009B000C9B205F04FFEF6E70EE7002070B514004F
158158
:1009C000154A1D00944200D970BD04F089FC00282E
159-
:1009D000FAD004F08DFC0028F6D1C122A1B2520059
160-
:1009E00000200BF015FD0D4E2200306029004068FC
161-
:1009F00004F0BEF83368588905F08AFC002805D158
159+
:1009D000FAD004F08DFC0028F6D1C122A4B2210087
160+
:1009E000520000200BF014FD0C4E22002900306054
161+
:1009F0000CF062F93368588905F08AFC002805D1AB
162162
:100A000030680BF05BFF00233360DDE700213068C6
163163
:100A100005F084FCF4E7C046DC05000030D9002076
164164
:100A200070B51B4805F00EFE05F0DAFD19491A48AD

build/pico_webserver.uf2

0 Bytes
Binary file not shown.

tusb_lwip_glue.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ bool tud_network_recv_cb(const uint8_t *src, uint16_t size)
160160
if (p)
161161
{
162162
/* pbuf_alloc() has already initialized struct; all we need to do is copy the data */
163-
memcpy(p->payload, src, size);
163+
//memcpy(p->payload, src, size);
164+
pbuf_take(p, src, size);
164165
//if(size!=in_pkt.len){
165166
//}
166167
/* store away the pointer for service_traffic() to later handle */
@@ -186,7 +187,7 @@ void service_traffic(void)
186187
/* handle any packet received by tud_network_recv_cb() */
187188
if (received_frame)
188189
{
189-
eth_frame_send_success=cyw43_send_ethernet(&cyw43_state, CYW43_ITF_STA, received_frame->len, received_frame->payload, false);
190+
eth_frame_send_success=cyw43_send_ethernet(&cyw43_state, CYW43_ITF_STA, received_frame->tot_len, (void*)received_frame, true);
190191
if(eth_frame_send_success==0){ // packet send pass
191192
}
192193
pbuf_free(received_frame);

0 commit comments

Comments
 (0)