查看: 2278|回复: 0

[原创] 【朝花夕拾】RT1060 ICMP硬件checksum插入方法

[复制链接]

该用户从未签到

715

主题

6374

帖子

0

超级版主

Rank: 8Rank: 8

积分
25213
最后登录
2025-8-18
发表于 2023-9-14 10:30:28 | 显示全部楼层 |阅读模式
【朝花夕拾】RT1060ICMP硬件checksum插入方法
一,   文章简介
ICMP(Internet Control Message Protocol,英特网控制报文协议),常用于网络的调试与维护. ICMP通常被认为是IP层协议的一部分,但从体系结构上,它是位于IP层之上。
1.jpg
图1
Ping命令使用的就是ICMP的查询报文,如果能ping成功,说明网卡、IP层、ICMP层是能正常通信的。
对于RT1060,可以支持ICMP的硬件checksum插入,所涉及的控制寄存器相关位为:
2.jpg
图2
    那么,如何在现有的RT1060 LWIP SDK ping工程中加入ICMP的硬件checksum呢?SDK ping工程默认是使用软件checksum。如果要测试ICMP硬件checksum的插入,首先需要关闭软件checksum,然后才能通过配置RT1060 ENET IP的TACC寄存器中的IPCHK, PROCHK 位去使能硬件checksum。IPCHK控制的是IP头checksum,PROCHK控制的是messageprotocol checksum。
    小编在测试的时候,遇到了一些坑,开始只是简单的使能了lwipopts.h中的CHECKSUM_BY_HARDWARE宏,认为该宏是直接控制所有的软硬件checksum选择,但是测试发现该宏只能去掉软件ICMP报文中的IP checksum,但是报文中的message protocol的checksum还是存在,这种情况只能测试IP硬件checksum的插入,无法测试messageprotocol 硬件checksum的插入,就像下图一样:
3.jpg
图 3
  可以发现,报文中IP checksum已经关闭,但是message protocol的checksum依旧存在。所以本篇文章旨在如何在官方SDK lwip ping工程中实现ICMP硬件checksum的插入。

更多内容查看附件文档和代码
【朝花夕拾】RT1060 ICMP 硬件checksum 插入方法.pdf (1.21 MB, 下载次数: 2)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-20 03:44 , Processed in 0.081730 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表