imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...
介绍
嵌入式技术的兴起 ETH 钱包苹果版下载链接imToken,使得传统基于 PC 的互联网技术优势不再 ETH 钱包苹果版下载链接,嵌入式网络客户端和服务器技术成为热点 ETH 钱包苹果版下载链接,而该技术需要一个高度可移植且占用资源少的协议栈。 轻量级TCP/IP协议栈LWIP(light)更适合嵌入式设备中存储容量有限的情况,可以实现TCP/IP协议栈的基本功能。 不影响设备的网络互联和传输服务[1]。 轻量级网络协议LWIP依赖的硬件操作系统包括[2-3]和uC/OS-II[4-5]。 鉴于uC/OS-II是一种应用广泛、技术成熟的操作系统,本文采用uC/OS-II操作系统设计网络客户端。 实验结果表明,ETH钱包苹果版下载链接:ping 32字节数据可以正确发送和接收,错误率为0%。
1 系统硬件
如图1所示,ETH钱包苹果版下载链接:硬件采用STM32处理器作为主控芯片,通过以太网控制器和RJ45接口与互联网连接。 另外,为了功能扩展和实验验证,也可以通过串口连接主控芯片。 计算机相互传输数据。
它是主控芯片。 它不仅具有USB OTG和CAN2.0B接口,还在芯片上集成了以太网10/100 MAC模块。 该模块支持MII 和RMII 模式。 因此,主控制器只需外接一个物理层PHY芯片即可实现一个完整的以太网收发器; 在时钟信号方面,只需使用25MHz晶振即可为整个主控制器提供时钟,主控制器还可以输出25MHz或50MHz时钟供外部物理层PHY层芯片使用,这样可以为系统节省一个额外的晶体振荡器[6]。
以太网控制器符合.3协议的所有规范,并且可以使用完善的数据包过滤机制来限制传入的数据包。 集成DMA模块支持高速数据吞吐,并结合硬件实现IP地址校验和计算。 其与主控制器的通信依靠两个中断引脚和SPI总线,数据传输速率高达10MB/s。 为了观察数据传输的活动状态,可以将发光二极管连接到两个专用引脚[7]。
2 操作系统移植
操作系统uC/OS-II移植涉及的主要内容是[4-5][8]:修改和集成与处理器相关的源文件,包括.c、.s和.h文件。 .h文件负责定义与编译器相关的数据类型和堆栈类型,以及几个宏定义和函数声明。 在移植过程中,由于相同的数据类型,不同的编译器支持的数据类型不同。 长度不一样,所以需要修改原来的数据类型。 .s文件主要负责定义与处理器相关的任务切换函数,实现任务上下文切换,满足任务调度的需要。 它还定义了时钟中断处理函数以及前进和退出临界区宏指令。 .c文件主要负责定义堆栈的初始化函数,以便操作系统在任务切换或中断时保护相关操作数据的堆栈。 另外,还定义了相关的HOOK函数。
首先修改.asm文件,将原来的RSEG CODE:CODE:(2)改为:
AREA |.text|, CODE, , ALIGN=2;(其中AREA|.text|代表选择段|.text|,CODE代表代码段,代表默认情况:只读。从当ALIGN=n时开始,字节数为2^n,所以这里ALIGN=2表示对齐4个字节)。
THUMB;Thumb指令集
;表示当前文件是八字节对齐的堆栈要求
;表示当前文件属于八字节对齐的堆栈
修改.h文件,注释掉以下三个函数: void r(void);Void(void); q(无效);
修改.c文件,注释掉以下定义和函数:
# TRL (*(( *)))
# 电子负载 (*(( *)))
# (*((*)))
# AL (*(( *)))
# _ST (*(( INT8U *)))
#
#
#
#
# _MIN 0xFF
void r(void) 函数
无效(void)函数
3 轻量级协议栈LWIP的移植
LWIP 是一个轻量级的 TCP/IP 协议栈。 协议栈涉及的功能和数据结构与操作系统和硬件无关。 如果需要使用uC/OS-II操作系统的函数,必须通过操作系统模拟层来调用。 。 因此,移植LWIP协议栈实际上就是移植到uC/OS-II操作系统上。 操作系统模拟层为定时器、同步处理、消息传输机制等服务提供了一套外部接口函数,并为LwIP提供了两种进程间通信方式:信号量和邮箱。 创建任务功能、关键保护功能、信号量和邮箱操作功能均由uC/OS-II提供。 在执行LwIP移植任务时,修改了相关接口函数(包括信号量操作函数、邮箱操作函数、关键保护函数)。 ,( )函数,( )函数),从而实现了LwIP操作系统模拟层的函数利用[4~5]。
LWIP数据包头为14字节。 基于LWIP的以太网接收到的数据包的格式用一个数据结构来描述:
{
(目的地); //目标媒体访问控制层地址
(来源); //源媒体访问控制层地址
(u16_t 类型); //类型
};
有几个宏定义与编译器字对齐相关。 上述目标dest、源src和type这三个字段分别对应目标媒体访问控制层地址、源媒体访问控制层地址和数据类型。
4。结论
测试前需要将电脑的IP地址与嵌入式网口模块配置在同一网段。 IP 地址分别为 192.168.1.100 和 192.168.1.102。 如果要查看IP地址配置,请运行CMD命令行并执行/all命令。 配置完成后,Ping内嵌网口的IP地址。 结果如图2所示。
从图2可以看出,主机ping 32字节数据时,4个数据包耗时最长为5ms,最短为3ms; 并且四个数据包的TTL值都是255。这是由于最优路径选择算法的原因。 下来之后,经过一段时间的稳定,网络拓扑也会稳定,数据包的路由路径也会相应稳定在最优路径上。 整个数据发送和接收过程都是正确的,错误率为0%。
原文链接:
版权声明
本文仅代表作者观点,不代表xx立场。
本文系作者授权xx发表,未经许可,不得转载。