DM9015网卡是用于嵌入式设备的某网卡,使用spi接口通讯。图片某宝偷的。
这个模块内部不带网络协议栈,像TCP/IP UDP啥的都是没有的,需要自己编写或者,移植开源的协议栈。
我这边主要参考官方历程移植优化精简的uip移植。因为官方的历程占用内存太大了,编写混乱,关键还是写的http历程,
http没搞过,不懂那协议啊,只能自己一步步裁剪,只处理TCP原始报文。
芯片:stm32f103RCt6
先看看移植需要的文件:
uip协议栈基本不用更改
tcp处理这块需要自己处理,我也是简单的写了一下回传数据,还有很多功能需要优化。
先做简单点会让程序清晰些,也便于理解
看看主函数的结构:
主函数写的很简单,也很清晰,注释写的都很详细,应该不用多讲。这里说一下uip_polling函数,因为里面的arp文件在其它文件里包含就会报错,只能在主函数引用,暂时还没找到原因,所以只能把函数写在主函数了。
my_tcp.h 也比较灵活,移植我这个只需要改这个文件就可以了,只需改网卡读取函数即可,主函数网卡初始化也做对应修改,
其它地方都不用动。
主函数里面加了应该20ms延时,这是为了测试当系统还有其它任务的时候,网卡的通讯速度。
具体要自己实测自己整个任务的时间周期,我这边测试主函数延时20ms时,网卡通讯周期可以达到50ms,
测试了2k数据交换没有发现掉包:
整体上还是很给力的,没源码可能比较懵,下面是源码:
https://download.csdn.net/download/hes_c/10622836
后面还会慢慢完善其它功能。
看看我工程的内存信息:sram只有3.5K,非常小了
下面是某官方给的历程内存信息:sram14.5k了
|