微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 之六:结贴之理论准备

之六:结贴之理论准备

时间:10-02 整理:3721RD 点击:

前面几节用f4做了点简单的控制,感觉和f1系列编程方式上几乎一样,上贴也说了,这贴要研究下f4的网络和lwip这块,网络这块比较复杂,这节不打算写代码,这节只研究下理论方面的网络知识和lwip相关的一些简要东西,搭建好工程,争取下节用f4将lwip跑起来,好吧。

先亮一下为了这贴买的网络模块,这是28j60的模块:




f4由于只内置了以太控制器,需要我们外接phy才能进行网络通信,之前略微搞过一点点协议栈,感觉跑lwip软件类协议栈挺麻烦的,不如直接上w5500这种硬件协议栈的片子来的简单,但生命在于折腾,我们搞电子的,如果没了折腾的乐趣,谁还搞,对不,所以就入了28j60这个模块,慢慢研究呗,以前搞的粗,这次有了f4这个,打算细细研究下这块,这就开始,好吧。

lwip是瑞典计算机学院的一个职工搞的一个开源的tcp/ip协议栈,巴拉巴拉巴拉,这尼玛,这些乱七八糟的历史也没啥作用,知道它是一个协议栈就行了,有兴趣的自己去百度找找吧,这里不啰嗦了。附一个官网下载地址:http://savannah.nongnu.org/projects/lwip

首先下载如下两个压缩包:


然后分别解压,进入lwip文件夹里面,看下它的目录结构


这是第一级目录,doc大家都知道,就是介绍、帮助啥的。src就是lwip的全部源码,test我们用不到,是测试示例。

进入src目录下


这里面api就是一些socket api啥的,core里面包含了ipv4、ipv6等,我们现阶段一般只能用到ipv4。netif里面包含一些arp等这些链路层的驱动之类。对了,lwip有好几种api,我们这里不上系统,为了简单,跑一个rawapi就行,好吧。

下面把工程建起来,从timer工程里拷一份出来,重命名为28j60,并建立代码目录结构如下:


iar工程目录结构如下:


每个分目录文件如下:






上述文件从网上一些工程代码中拷贝的,回家之前为了研究这个,从网上下的,具体从哪个网也记不清了。后面有需要的我就传上来。

建好之后注意在工程里把头文件路径全部给设置进去,这尼玛,一大堆头文件路径要点击,一个个添加吧。点击编译,会发现很多错误,这些错误大部分都是头文件包含错误,用全局替换将arch/替换为空,会好很多,然后有一些例如adc.h、tsensro.h之类的没用,全都给注释掉就行,直到最终出现:


这错误原因是由于整个代码是从f103系列的cpu上移下来的,而f1和f4对引脚配置并不一样,所以这里我们先注释掉这些引脚配置。下帖我们说说如何修改。其实搞嵌入式一些大项目或者驱动开发一样,都是这样一点点改,一点点移植过来的,这里我们先注释掉,直到编译结果为:


这样,我们28j60的所有源码就都移植好了,这贴本来也没打算写代码,下帖争取修改完成实现功能,争取下帖结贴好吧。


期待下一篇分享哦

嗯嗯嗯,正在调。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top