w5300在ucosIII的移植
W5300网卡芯片在stm32 ucosIII的移植
1.ucosIII说明
因为ucosiii没有设备驱动模型的概念,所以ucosIII驱动的移植和操作系统本身关系不大,更多和板卡、cpu有更大的关系。
2.驱动移植基本概念分析
基于m3、或m4的cpu来进行后续讨论。当我们从cpu的官网下载了标准外设库、补充库、第三方库后,基本的外设驱动就有了。目前观察发现usb驱动、网卡驱动、外部flash、外部sd、外部ram的驱动和具体的驱动芯片有关。
3.网卡驱动移植
我们目前准备使用的网卡是w5300。所以我们的驱动移植更多的工作是匹配cpu和网卡自带的驱动之间的矛盾。
- 打开w5300的官网,https://www.wiznet.io/product-item/w5300/
- 可以看到提供的资源如下图所示:主要包括数据手册,推荐原理图,驱动文件。
下载后的文件如下:
第一个文件夹内部是驱动文件、第二个文件夹是推荐原理图、第三个文件是w5300的datasheet。
其他需要的参考文件可能就是如下两个:一个cpu的芯片手册,一个编程指导。
到现在准备工作告一段落,下面就进入实际操作的层面了。
3.1驱动源码分析
驱动源码的目录如下所示:
除了帮助文件,我们最主要需要关心Ethernet、Internet两个文件夹。
1)驱动文件
Ethernet文件夹包含驱动文件和驱动文件访问接口。
其中w5300.c、w5300.h是具体访问硬件的驱动文件,socket.c socket.h是提供给应用层访问的接口。在socket.c socket.h中提供了tcp udp的协议。网络层,物理层,传输层,链路层的协议由w5300硬件实现。
2)协议文件
Internet文件夹包括了各种网络协议的支持
目录的所有文件都调用socket.c socket.h的函数访问网络控制器的寄存器。不同的协议主要是提供不同的协议(大部分都是应用层,mqtt除外)供业务层调用。
- 应用程序demo
下载推荐的demo程序,里面有tcp,udp的demo。 结合芯片手册可以对每个寄存器有更直观的理解和认识。
3.2推荐电路分析
因为网卡接到了Flexible static memory controller (FSMC)区域bank3,推荐的典型电路如下所示:剩余的工作主要在于驱动文件的移植。
3.3数据手册关键点
Fsmc 的内存地址:
我们的接入地址是fsmc bank3,所以基地址是0x8000 0000。
W5300功能框图
所以我们配置该模块就是配置器寄存器。
W5300寄存器的分布图如下:BA就是fsmc bank3的基地址
真正的移植工作就是参考datasheet配置这些寄存器(Mode Register,Indirect Mode Registers,COMMON Registers,SOCKET Registers),实现网卡的init,close,read,write等类似的函数并提供给其他模块使用。
到现在移植步骤基本表达清楚了,后续如果有时间在输出一个关于网卡每个寄存器的翻译描述文件。