前面几节用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 。ne tif 里面包含一些arp 等这些链路层的驱动之类。对了,lwip 有好几种api ,我们这里不上系统,为了简单,跑一个rawapi 就行,好吧。。。 下面把工程建起来,从timer工程里拷一份出来,重命名为28j60,并建立代码目录结构如下: iar工程目录结构如下: 每个分目录文件如下: 上述文件从网上一些工程代码中拷贝的,回家之前为了研究这个,从网上下的,具体从哪个网也记不清了。。。后面有需要的我就传上来。。。 建好之后注意在工程里把头文件路径全部给设置进去,这尼玛,一大堆头文件路径要点击,一个个添加吧。。。点击编译,会发现很多错误,这些错误大部分都是头文件包含错误,用全局替换将arch/替换为空,会好很多,然后有一些例如adc.h、tsensro.h之类的没用,全都给注释掉就行,直到最终出现: 这错误原因是由于整个代码是从f103 系列的cpu 上移下来的,而f1 和f4 对引脚配置并不一样,所以这里我们先注释掉这些引脚配置。下帖我们说说如何修改。其实搞嵌入式一些大项目或者驱动开发一样,都是这样一点点改,一点点移植过来的,这里我们先注释掉,直到编译结果为: |