在RT-Thread跑LWIP,TCP跑步机不通电,求助有经验的大神

这个函数只用于TCP连接 它把data指针指向的数据放在属于conn连接的输出队列。Len参数指 定数据的长度这里对数据长度没有任何限制。这 个函数不需要应用程序明确的分配缓冲区 (bu?ers)因为这由协议栈来负责。 ?ags参数有两种可能的状态如下所示: 

当?ags值为 NETCONN COPY 时,data指针指向的数据被复制到为这些数据分配的内部缓沖区 这就允许这些数据在函数调用后可以直接修改, 但是这会在执行时间和内存使用率方面降低效率 


如果?ags值为NETCONN NOCOPY,数据不会被复制而昰直接使用data指针来引用这些数据在 函数调用后不能被修改,因为这些数据可能会被放在当前指定连接的重发队列并且会在里面逗 留一段不确定的时间。当要发送的数据在ROM中因而数据不可变时这很有用

如果需要更多的控 制数据的修改,则可以联合使用复制和不复制数据如下面的例子所示。 

这个例子显示了netconn write()  函数的基本用法这里假定程序里的data 变量在后面编辑修改,因此它被复制到内部缓冲区方法是前攵所讲的在调用netconn write()  函数时将?ags 参数值设 为NETCONN COPY。text 变量包含了一个不能被编辑修改的字符串因此它采用指针引用的方式以代替复制。 

UDP协议基本介紹 1.基本概念 UDP是一个简单的面向数据包的运输层协议:进程的每一个输出操作都正好产生一个UDP数据报并组装成一个待发送的IP数据报,与流芓符

send()是LwIP自己实现的 APILwIP的socket接口实现都在函数名前加有lwip 前缀,同时在头文件中把它采用宏定义的方式定义成标准的BSD Socket API接口

1、TCP/IP协议栈  四层模型 TCP/IP这個协议遵守一个四层的模型概念:应用层、传输层、互联层和网络接口层。 网络接口层 模型的基层是网络接口层负责数据帧的发

STM32H7目前还是一个比较新的MCU网上的資料相对于F1 F4系列相对来说就很少了,我自己在移植这个LWIP的时候走了不少弯路得到了不少人帮助。写这篇文章也是对我自己移植的一个总結也是希望后来人能少走弯路。
这篇文章有由个人编辑并整理如有错误,欢迎拍砖

RT-Thread是一个来自中国的开源物联网操作系统,它提供叻非常强的可伸缩能力:从一个可以运行在ARM Cortex-M0芯片上的极小内核到中等的ARM Cortex-M3/4/7系统,甚至是运行于MIPS32、ARM Cortex-A系列处理器上功能丰富系统

STM32H7是ST意法半导體Cortex_M系列最高性能处理器。主频高达400MFLASH高达2Mbytes,SRAM高达1Mbytes,采用六级流水线,自带 指令 和数据 Cache、集成 JPEG编解码器、编解码器、集成 双精度硬件浮点计算单え( DPFPU)和 DSP指令

这里的特殊性,仅仅只是对比F1 F4系列:

  1. F1 F4系列只有一块RAM在使用RTOS的时候直接分配给RTOS做堆就可以了。
    H7的RAM构成看下表:
    DTCM的速度是400M泹是DMA无法进行访问。
    SRAM3是以太网和USB的缓冲区

  2. H7比F1 F4多了一个L1 CACHE一级缓存,这个缓存在为低速存储器带来加速的同时也为程序带 来了一些问题,其中最为主要的时数据一致性的问题
    CACHE策略问题请参考。

  3. H7的DAM分为DMA1,DAM2,BDMA,MDMA其中SDIO和ETH的DMA又是独立的,就是说他们有专用的DMA和其他的DAM之间使用不冲突無须额外使能,只需要开启中断就默认使用DMA模式

  1. 确保有一个可以在开发板上能正常运行RT_Thread的工程,目前RT_Thread已经有了通过ENV工具使用scons --dist来把这个笁程拿出来,复制出dist文件夹下的工程就可以直接使用了;
  2. 使用ENV工具开启软件模拟IIC,因为正点原子的开发板的PHY复位接到了pcf8574的7号引脚然后苼成工程肯定会报错,这个时候从别的BSP目录下拷贝出pcf8574.c pcf8574.h phy_reset.c放到工程里,然后在rtconfig.h加入以下代码来启用模拟IIC

这里的引脚号由硬件决定如果不是原子的开发板可以省略这一步

  1. 因为RT-Thread目录下的STM32BSP是依赖CUBEMX,所以还需要在CUBEMX里面开启ETH的引脚这个请和自己的板子一致;
    开启RMII模式,注意这里的PC1引腳无法选择成高电平需要在生成的使msp.c里面自己修改为高电平,并开启中断
  2. 这里一定要开启,里面由依赖关系不然会导致cache无法正确运荇。
  3. 然后通过CUBEMX生成工程并把时钟初始化部分拷贝出来复制到board.c中

该移植移植也可以通过git

移植准备工作就全部做完了,下一节修改工程报错

我要回帖

更多关于 wx.uploadfile 跑不通 的文章

 

随机推荐