---
title: "Porting W5300 driver to uCos"
url: "https://maker.wiznet.io/chen/projects/w5300%E5%9C%A8ucosiii%E7%9A%84%E7%A7%BB%E6%A4%8D/"
markdown_url: "https://maker.wiznet.io/chen/projects/w5300%E5%9C%A8ucosiii%E7%9A%84%E7%A7%BB%E6%A4%8D/md"
type: "UCC: User Created Content"
author: "a513628101"
author_url: "https://blog.csdn.net/a513628101/article/details/103556514?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165689577116781685316042%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165689577116781685316042&biz_i"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "a513628101"
original_url: "https://blog.csdn.net/a513628101/article/details/103556514?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165689577116781685316042%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165689577116781685316042&biz_i"
license: "Apache License 2.0 (Apache-2.0)"
published: "2022-09-30"
language: "en"
hardware: ["WIZnet W5300"]
likes: 6
views: 1280
comments: 1
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# Porting W5300 driver to uCos

> Porting W5300 to uCosIII

Original author: a513628101 (source: https://blog.csdn.net/a513628101/article/details/103556514?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165689577116781685316042%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165689577116781685316042&biz_i)

## Components

- **WIZnet W5300** x 1 ([docs](https://docs.wiznet.io/Product/Chip/Ethernet/W5300))

## Article

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等类似的函数并提供给其他模块使用。

到现在移植步骤基本表达清楚了，后续如果有时间在输出一个关于网卡每个寄存器的翻译描述文件。
————————————————
版权声明：本文为CSDN博主「a513628101」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
原文链接：https://blog.csdn.net/a513628101/article/details/103556514

---

Source: https://maker.wiznet.io/chen/projects/w5300%E5%9C%A8ucosiii%E7%9A%84%E7%A7%BB%E6%A4%8D/
