Skip to content

Commit

Permalink
using pbuf_take instead of memcpy
Browse files Browse the repository at this point in the history
  • Loading branch information
sidd-kishan committed Jan 2, 2024
1 parent a7fcd82 commit 71bb6d7
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 50 deletions.
2 changes: 1 addition & 1 deletion build/CMakeCache.txt
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ PICO_BOOT_STAGE2_DIR:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sd
PICO_CMAKE_PRELOAD_PLATFORM_DIR:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/cmake/preload/platforms
PICO_CMAKE_PRELOAD_PLATFORM_FILE:INTERNAL=/mnt/c/Users/Aayush/Desktop/pico-webserver/pico-sdk/cmake/preload/platforms/rp2040.cmake
PICO_COMPILER_ASM:INTERNAL=/usr/bin/arm-none-eabi-gcc
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
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
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
PICO_NO_HARDWARE:INTERNAL=0
PICO_ON_DEVICE:INTERNAL=1
Expand Down
Binary file modified build/CMakeFiles/pico_webserver.dir/tusb_lwip_glue.c.obj
Binary file not shown.
Binary file modified build/CMakeFiles/pico_webserver.dir/wifi_code.c.obj
Binary file not shown.
Binary file modified build/pico_webserver.bin
Binary file not shown.
64 changes: 32 additions & 32 deletions build/pico_webserver.dis
Original file line number Diff line number Diff line change
Expand Up @@ -559,11 +559,11 @@ Disassembly of section .text:
1000050e: d0f6 beq.n 100004fe <tud_network_recv_cb+0x16>
10000510: 0022 movs r2, r4
10000512: 0029 movs r1, r5
10000514: 6840 ldr r0, [r0, #4]
10000516: f004 fb2b bl 10004b70 <__wrap___aeabi_memcpy>
1000051a: 2001 movs r0, #1
1000051c: 6037 str r7, [r6, #0]
1000051e: e7eb b.n 100004f8 <tud_network_recv_cb+0x10>
10000514: f00c fbd0 bl 1000ccb8 <pbuf_take>
10000518: 2001 movs r0, #1
1000051a: 6037 str r7, [r6, #0]
1000051c: e7ec b.n 100004f8 <tud_network_recv_cb+0x10>
1000051e: 46c0 nop ; (mov r8, r8)
10000520: 2000df90 .word 0x2000df90

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

10000538 <service_traffic>:
10000538: b530 push {r4, r5, lr}
10000538: b510 push {r4, lr}
1000053a: 4c0b ldr r4, [pc, #44] ; (10000568 <service_traffic+0x30>)
1000053c: b083 sub sp, #12
1000053e: 6822 ldr r2, [r4, #0]
10000540: 2a00 cmp r2, #0
1000053c: b082 sub sp, #8
1000053e: 6823 ldr r3, [r4, #0]
10000540: 2b00 cmp r3, #0
10000542: d00f beq.n 10000564 <service_traffic+0x2c>
10000544: 2500 movs r5, #0
10000546: 6853 ldr r3, [r2, #4]
10000548: 2100 movs r1, #0
1000054a: 8952 ldrh r2, [r2, #10]
1000054c: 4807 ldr r0, [pc, #28] ; (1000056c <service_traffic+0x34>)
1000054e: 9500 str r5, [sp, #0]
10000550: f009 fe24 bl 1000a19c <cyw43_send_ethernet>
10000554: 4b06 ldr r3, [pc, #24] ; (10000570 <service_traffic+0x38>)
10000556: 6018 str r0, [r3, #0]
10000558: 6820 ldr r0, [r4, #0]
1000055a: f00c f9af bl 1000c8bc <pbuf_free>
1000055e: 6025 str r5, [r4, #0]
10000544: 2101 movs r1, #1
10000546: 891a ldrh r2, [r3, #8]
10000548: 4808 ldr r0, [pc, #32] ; (1000056c <service_traffic+0x34>)
1000054a: 9100 str r1, [sp, #0]
1000054c: 2100 movs r1, #0
1000054e: f009 fe25 bl 1000a19c <cyw43_send_ethernet>
10000552: 4b07 ldr r3, [pc, #28] ; (10000570 <service_traffic+0x38>)
10000554: 6018 str r0, [r3, #0]
10000556: 6820 ldr r0, [r4, #0]
10000558: f00c f9b0 bl 1000c8bc <pbuf_free>
1000055c: 2300 movs r3, #0
1000055e: 6023 str r3, [r4, #0]
10000560: f005 fce2 bl 10005f28 <tud_network_recv_renew>
10000564: b003 add sp, #12
10000566: bd30 pop {r4, r5, pc}
10000564: b002 add sp, #8
10000566: bd10 pop {r4, pc}
10000568: 2000df90 .word 0x2000df90
1000056c: 2000cb30 .word 0x2000cb30
10000570: 2000d468 .word 0x2000d468
Expand Down Expand Up @@ -1119,16 +1119,16 @@ Disassembly of section .text:
100009d6: 2800 cmp r0, #0
100009d8: d1f6 bne.n 100009c8 <cyw43_cb_process_ethernet+0xc>
100009da: 22c1 movs r2, #193 ; 0xc1
100009dc: b2a1 uxth r1, r4
100009de: 0052 lsls r2, r2, #1
100009e0: 2000 movs r0, #0
100009e2: f00b fd15 bl 1000c410 <pbuf_alloc>
100009e6: 4e0d ldr r6, [pc, #52] ; (10000a1c <cyw43_cb_process_ethernet+0x60>)
100009e8: 0022 movs r2, r4
100009ea: 6030 str r0, [r6, #0]
100009dc: b2a4 uxth r4, r4
100009de: 0021 movs r1, r4
100009e0: 0052 lsls r2, r2, #1
100009e2: 2000 movs r0, #0
100009e4: f00b fd14 bl 1000c410 <pbuf_alloc>
100009e8: 4e0c ldr r6, [pc, #48] ; (10000a1c <cyw43_cb_process_ethernet+0x60>)
100009ea: 0022 movs r2, r4
100009ec: 0029 movs r1, r5
100009ee: 6840 ldr r0, [r0, #4]
100009f0: f004 f8be bl 10004b70 <__wrap___aeabi_memcpy>
100009ee: 6030 str r0, [r6, #0]
100009f0: f00c f962 bl 1000ccb8 <pbuf_take>
100009f4: 6833 ldr r3, [r6, #0]
100009f6: 8958 ldrh r0, [r3, #10]
100009f8: f005 fc8a bl 10006310 <tud_network_can_xmit>
Expand Down
Binary file modified build/pico_webserver.elf
Binary file not shown.
12 changes: 6 additions & 6 deletions build/pico_webserver.elf.map
Original file line number Diff line number Diff line change
Expand Up @@ -1466,9 +1466,9 @@ Discarded input sections
.bss 0x0000000000000000 0x0 liblwipcore.a(inet_chksum.c.obj)
.text 0x0000000000000000 0x0 liblwipcore.a(ip.c.obj)
.data 0x0000000000000000 0x0 liblwipcore.a(ip.c.obj)
.text 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
.data 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
.bss 0x0000000000000000 0x0 /tmp/cc9Uvqkl.o
.text 0x0000000000000000 0x0 /tmp/cclEhIKL.o
.data 0x0000000000000000 0x0 /tmp/cclEhIKL.o
.bss 0x0000000000000000 0x0 /tmp/cclEhIKL.o
.data 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
.bss 0x0000000000000000 0x0 /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
.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)
Expand Down Expand Up @@ -1624,7 +1624,7 @@ LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nof
.boot2 0x0000000010000000 0x100
0x0000000010000000 __boot2_start__ = .
*(.boot2)
.boot2 0x0000000010000000 0x100 /tmp/cc9Uvqkl.o
.boot2 0x0000000010000000 0x100 /tmp/cclEhIKL.o
0x0000000010000100 __boot2_end__ = .
0x0000000000000001 ASSERT (((__boot2_end__ - __boot2_start__) == 0x100), ERROR: Pico second stage bootloader must be 256 bytes in size)

Expand Down Expand Up @@ -3602,7 +3602,7 @@ LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_async_context/as
LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_async_context/async_context_base.c.obj
LOAD CMakeFiles/pico_webserver.dir/pico-sdk/src/rp2_common/pico_multicore/multicore.c.obj
LOAD liblwipcore.a
LOAD /tmp/cc9Uvqkl.o
LOAD /tmp/cclEhIKL.o
LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a
LOAD /usr/lib/gcc/arm-none-eabi/10.3.1/../../../arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
START GROUP
Expand Down Expand Up @@ -3782,7 +3782,7 @@ LOAD linker stubs
.ARM.attributes
0x0000000000000d32 0x32 liblwipcore.a(ip.c.obj)
.ARM.attributes
0x0000000000000d64 0x22 /tmp/cc9Uvqkl.o
0x0000000000000d64 0x22 /tmp/cclEhIKL.o
.ARM.attributes
0x0000000000000d86 0x1e /usr/lib/gcc/arm-none-eabi/10.3.1/thumb/v6-m/nofp/libgcc.a(_dvmd_tls.o)
.ARM.attributes
Expand Down
16 changes: 8 additions & 8 deletions build/pico_webserver.hex
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,12 @@
:1004E000236010BD90DF0020F8B50D4E0500336885
:1004F0000C000020002B00D0F8BD002901D1012004
:10050000FAE7C122002052000BF082FF071EF6D04E
:1005100022002900406804F02BFB01203760EBE744
:10051000220029000CF0D0FB01203760ECE7C04638
:1005200090DF002010B504000A8908000023210094
:100530000CF024FB10BDC04630B50B4C83B02268D4
:10054000002A0FD0002553680021528907480095E2
:1005500009F024FE064B186020680CF0AFF9256006
:1005600005F0E2FC03B030BD90DF002030CB00206E
:100530000CF024FB10BDC04610B50B4C82B02368F4
:10054000002B0FD001211A8908480091002109F0E1
:1005500025FE074B186020680CF0B0F900232360DB
:1005600005F0E2FC02B010BD90DF002030CB00208F
:1005700068D400202923034AD35CDB0700D4FEE7BC
:100580007047C04680D80020002070477047C046A2
:1005900010B501F043FD002905D0FA220023920096
Expand Down Expand Up @@ -156,9 +156,9 @@
:1009A0001A78002A00D110BD00221A701978002090
:1009B000C9B205F04FFEF6E70EE7002070B514004F
:1009C000154A1D00944200D970BD04F089FC00282E
:1009D000FAD004F08DFC0028F6D1C122A1B2520059
:1009E00000200BF015FD0D4E2200306029004068FC
:1009F00004F0BEF83368588905F08AFC002805D158
:1009D000FAD004F08DFC0028F6D1C122A4B2210087
:1009E000520000200BF014FD0C4E22002900306054
:1009F0000CF062F93368588905F08AFC002805D1AB
:100A000030680BF05BFF00233360DDE700213068C6
:100A100005F084FCF4E7C046DC05000030D9002076
:100A200070B51B4805F00EFE05F0DAFD19491A48AD
Expand Down
Binary file modified build/pico_webserver.uf2
Binary file not shown.
5 changes: 3 additions & 2 deletions tusb_lwip_glue.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,8 @@ bool tud_network_recv_cb(const uint8_t *src, uint16_t size)
if (p)
{
/* pbuf_alloc() has already initialized struct; all we need to do is copy the data */
memcpy(p->payload, src, size);
//memcpy(p->payload, src, size);
pbuf_take(p, src, size);
//if(size!=in_pkt.len){
//}
/* store away the pointer for service_traffic() to later handle */
Expand All @@ -186,7 +187,7 @@ void service_traffic(void)
/* handle any packet received by tud_network_recv_cb() */
if (received_frame)
{
eth_frame_send_success=cyw43_send_ethernet(&cyw43_state, CYW43_ITF_STA, received_frame->len, received_frame->payload, false);
eth_frame_send_success=cyw43_send_ethernet(&cyw43_state, CYW43_ITF_STA, received_frame->tot_len, (void*)received_frame, true);
if(eth_frame_send_success==0){ // packet send pass
}
pbuf_free(received_frame);
Expand Down
3 changes: 2 additions & 1 deletion wifi_code.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ void cyw43_cb_tcpip_set_link_down(cyw43_t *self, int itf) {
void cyw43_cb_process_ethernet(void *cb_data, int itf, size_t len, const uint8_t *buf) {
if (len <= MTU && tud_ready()) {
out_pkt = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
memcpy(out_pkt->payload, buf, len);
//memcpy(out_pkt->payload, buf, len);
pbuf_take(out_pkt, buf, len);
if (tud_network_can_xmit(out_pkt->len))
{
tud_network_xmit(out_pkt, 0 /* unused for this example */);
Expand Down

0 comments on commit 71bb6d7

Please sign in to comment.