SmartOS之以太网精简协议栈TinyIP
做物联网,没有以太网怎么能行!
基于Enc28j60,我们团队独立实现了以太网精简协议栈TinyIP,目前支持ARP/ICMP/TCP/UDP/DHCP,还缺一个DNS就完整了。
TinyIP内置一个数据缓冲区,Enc28j60收到数据以后,放入缓冲区,然后TinyIP内部开始根据Ethernet/ARP/IP/ICMP/TCP/UDP/DHCP头部结构体对数据进行拆分和重组,执行业务逻辑。
TinyIP百分百是我们团队独立完成,没有抄袭那怕参考任何一款已有以太网协议(例如uip/lwip),各种协议结构作为国际标准是公开的,我们只需要按照协议去实现即可。
鄙视那些自己做不到就说别人抄袭的人!
#include "Sys.h"
#include "Enc28j60.h"
#include "SerialPort.h" #include "TinyIP/TinyIP.h" #include "conf.h" Spi* spi; Enc28j60* enc; TinyIP* tip; void OnPing(TinyIP* tip, ICMP_HEADER* icmp, byte* buf, uint len) { debug_printf("Ping From "); TinyIP::ShowIP(tip->RemoteIP); debug_printf(" with Payload=%d\r\n", len); } void OnUdpReceived(TinyIP* tip, UDP_HEADER* udp, byte* buf, uint len) { debug_printf("Udp From "); TinyIP::ShowIP(tip->RemoteIP); debug_printf(":%d with Payload=%d ", tip->RemotePort, len); TinyIP::ShowData(buf, len); debug_printf(" \r\n"); } void OnTcpAccepted(TinyIP* tip, TCP_HEADER* tcp, byte* buf, uint len) { debug_printf("TcpAccepted From "); TinyIP::ShowIP(tip->RemoteIP); debug_printf(":%d with Payload=%d\r\n", tip->RemotePort, len); } void OnTcpDisconnected(TinyIP* tip, TCP_HEADER* tcp, byte* buf, uint len) { debug_printf("TcpDisconnected From "); TinyIP::ShowIP(tip->RemoteIP); debug_printf(":%d with Payload=%d\r\n", tip->RemotePort, len); } void OnTcpReceived(TinyIP* tip, TCP_HEADER* tcp, byte* buf, uint len) { debug_printf("TcpReceived From "); TinyIP::ShowIP(tip->RemoteIP); debug_printf(":%d with Payload=%d ", tip->RemotePort, len); TinyIP::ShowData(buf, len); debug_printf(" \r\n"); } void TestEthernet() { debug_printf("\r\n\r\n"); debug_printf("TestEthernet Start......\r\n"); spi = new Spi(SPI_3); enc = new Enc28j60(spi); tip = new TinyIP(enc); tip->UseDHCP = true; tip->Init(); tip->OnPing = OnPing; tip->OnUdpReceived = OnUdpReceived; tip->OnTcpAccepted = OnTcpAccepted; tip->OnTcpDisconnected = OnTcpDisconnected; tip->OnTcpReceived = OnTcpReceived; debug_printf("\r\n TestEthernet Finish!\r\n"); }
芯片GD32F103VK/GD32F103VE/STM32F103VE
TinyIP类内部根据系统ID生成随机的MAC地址和初始IP地址192.168.0.x,IP最后一字节就是系统ID第一字节。
开启DHCP后,将会自动获取IP地址。
必须实现ARP协议,否则别人找不到你这个IP所对应的MAC,进而无法通信。
支持Ping/TCP/UDP多种必要事件挂载。
以太网所有功能全开,RTM下固件ROM大概9k。
End.
转石头大哥
转载于:https://www.cnblogs.com/Ph-one/p/3960961.html
SmartOS之以太网精简协议栈TinyIP相关推荐
- 基于FPGA的万兆以太网UDP/IP协议栈讲解
基于FPGA的UDP/IP协议栈 1 udp协议分析 1.1 udp介绍 UDP即User Datagram Protocol,用户数据报协议,还有一个耳熟能详的叫做TCP(Transmission ...
- linux升级ipv6协议栈,IPv6技术及基于Linux平台IPv6协议栈的实现
IPv6技术及基于Linux平台IPv6协议栈的实现 简单介绍了 IPv6的基本原理和特征 ,重点探讨了 IPv6技术在 L inux环境中的应用 :对支持 IPv6协 (本文共5页) 阅读全文> ...
- 【AUTOSAR】【以太网】 EthIf
目录 一.概述 二.说明 三.依赖模块 四.功能说明 4.1 以太网BSW协议栈
- [工业互联-3]:工业有线互联总线之工业以太网总线
目录 第1章 工业以太网概述 1.1 概述 1.2 工业以太网与普通以太网的比较 1.3 以太网在工业控制领域中应用的优势 1.4 工业以太网与其他工业互联总线的比较 第2章 工业以太网网络部署 第3 ...
- 【AUTOSAR】 【以太网】EthTrcv
目录 一.概述 二.依赖 三.功能 3.1 以太网BSW协议栈 3.1.1 索引方案 3.1.2 睡眠唤醒
- i.MX6网卡驱动程序fec.c的分析(AR8035网卡驱动程序的详细分析)之二
学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天接着分析上次没有分析完的i.MX6网卡驱动程序.上一篇分析了iM ...
- powerlink源码解析与使用
powerlink是底层基于标准以太网,协议栈基于canopen协议的工业互联网协议. 主要可分为三个模块,用于节点通信的PDO和SDO.协议栈和对象字典.对上用户接口. 1.协议栈和对象字典 对象字 ...
- 浙江大学控制科学与工程学院冯冬芹教授团队招聘FPGA工程师1名
我们迫切需要您这样的高水平.高技术人才加入,与公司共同成长,加入我们后,如果您成绩出色,您不单单会有高薪,后期都将成为企业发展的重要的合伙人,一起与老板创业,一起分享创业带来的成果(持股),后续会有很 ...
- TCP/IP网络协议栈:以太网数据包结构、802.3、MTU
<TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...
最新文章
- 内存是拿来用的不是拿来看的
- indesign选中不了图片删除_(54)批量给图片加上说明文字
- Java——标签组件:JLabel
- 生成5个不同的随机数
- java检测textarea换行_Textarea和Java 换行符
- lambda java kotlin,Kotlin之Lambda编程
- 分享一个网盘:千脑网
- Mockito + JUnit 单元测试实例
- TOM邮箱容量满了收发不了邮件?你应该快速做到这些事
- 1寸证件照排版、1寸照片、1寸证件照尺寸,不改变图片大小改分辨率,不改变分辨率改变(保证分辨率)...
- 3ds Max 布尔(Boolean)运算——象棋的制作
- VS2008简体中文版下载及安装破解
- 香港理工大学,新设“元宇宙科技”专业
- android.bp 编译,Android编译系统中的Android.bp
- 系统设计原则之里氏代换原则
- ios 事件穿透的原因和解决方法
- 使用POI 导出word模板文件
- 数据库PostrageSQL-证书认证
- 最详细的golang + 私库(gitlab gitee) 模块开发 这一篇文章解决所有问题
- 北京宣武区一个居民区停电三个月
热门文章
- 关于IBM Lotus的JAVA代理进入jar包的说明
- c++仪表盘。。。附源码
- 这样写的博客才有更多的人愿意看
- 在网上常听到说CEO CTO CIO CGO COO CFO什么什么..现在了解了一下..呵呵
- MspEmu 一阶段小结
- Linux快速查看某条命令的版本和存放的位置(ls -l `which mvn`)
- 笑傲江湖,独孤求败-NetScaler MAS应用交付神功详解
- 【R】神经网络相关的R包
- 01.The Introduction of Linux
- 常用的 服务器 与 交换机