目前共有30篇帖子。
![]() |
最近在开发lwip,可以ping通。但是通过打印,看到单片机端已经发送成功,但是网页没有显示。三次握手成功了,网页发起请求之后,提示tcp Retransmission
|
![]() |
你的硬件用的是stm32原生的eth外设吗?如果是的话要注意,lwip默认的网页内容是存在flash里面的,eth无法通过dma访问flash里面的内容,必须要先拷贝到sram里面再用dma传出去。
|
![]() |
还有就是,lwip里面的网页是分成几段,组合成一个链表传给ethernetif.c的low_level_output函数的。在用for循环memcpy拷贝到一个数组的时候一定要注意拷贝的目的地址的下标是不是总是0。
211.95.58.*:您说的是对的,我看了,虽然不是总是零,但是在发送正常数据之前,会有几次乱码数据发出去
![]()
[查看詳情]
|
![]() |
在哪里拷贝网页数据呢,还有是生成的fsdata.c中的数组是在哪里调用的呢?
|
![]() |
![]() |
![]() |
试试看这个代码行不行:
https://zh.purasbar.com/post.php?t=24569 |
![]() |
![]() ![]() ![]() static uint8_t sram_buffer[1024]; 只要发现q->payload是在flash里面,马上就复制到sram_buffer的某个下标处,再传给Txbuffer[i].buffer。 ![]() 第一个节点 10字节,位于sram 第二个节点 8字节,位于flash 第三个节点 16字节,位于sram 第四个节点 20字节,位于flash 那就把第二个节点的8字节复制到sram_buffer[0~7] 第四个节点的20字节复制到sram_buffer[8-27] 然后把&sram_buffer[0]赋给Txbuffer[0].buffer 把&sram_buffer[8]赋给Txbuffer[2].buffer ![]() ![]()
[查看詳情]
|
![]() |
![]() |
![]() |
![]() |
![]() |
实在不行,也可以试一下把p链表的所有内容复制到一个数组中,然后只用Txbuffer[0]一整个发出去,不分段。
|