❶ TRACE32使用总结
前言
在调试soc的bring up过程中,遇到各种坑时,使用原始的printf可能无法定位问题,特别是当uart没有初始化。这时,原始方法是在代码起始段写入ddr地址或寄存器地址,通过其他子系统查看值。最便捷的手段是使用Trace32工具,这里总结了其使用经验。
原理
Trace32通过CPU和调试器之间的专用硬件连接实现调试接口。连接能实现对目标系统进行硬件级别的监视和控制,包括CPU寄存器、内存、外设等读写操作,以及对执行指令的跟踪和分析。通过向目标系统发送调试命令和数据,实现对目标系统的调试控制。
Trace32还提供高级调试功能,如代码跟踪、性能分析和系统级调试,帮助快速定位和解决问题。
使用步骤
1. 从官网下载Trace32。
2. 设置CPU型号:SYStem.CPU CortexA76。
3. 设置JTAG频率,影响trace32运行速率:SYStem.JtagClock 8MHz。
4. 设置CTI和寄存器基地址:SYStem.CONFIG.COREDEBUG.Base DAP:0x_xxxx_xxxx, SYStem.CONFIG.CTI.Base DAP:0x_xxxx_xxxx。
5. 启动并停住系统:SYStem.Up, SYStem.Attach。
6. 加载数据:data.load.Binary H:/linux/build/xxx.dtb 0x80000000, data.load.Binary H:/linux/build/uImage 0x80000000。
7. 查看DDR或寄存器:data.mp 0x80000000, data.mp anc:0x80000000。
8. 设置断点:Break.Set func2/address, b.s func4 /soft, Break.SetPATtern func2* /使用通配符,批量设置断点,var.Break.set mstatic1 /ReadWrite。
9. 读写系统寄存器:ESR_EL3, data.in MSPR:0x36520 /Quad, SCR_EL3=0x36110, /Quad /Long 32位和64位。
❷ linux下tracert命令的作用
1.命令格式:
traceroute [参数] [主机]
2.命令功能:
traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。
具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>…][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小] 《Linux就该这么学》 一起学习linux
3.命令参数:
-d 使用Socket层级的排错功能。
-f 设置第一个检测数据包的存活数值TTL的大小。
-F 设置勿离断位。
-g 设置来源路由网关,最多可设置8个。
-i 使用指定的网络界面送出数据包。
-I 使用ICMP回应取代UDP资料信息。
-m 设置检测数据包的最大存活数值TTL的大小。
-n 直接使用IP地址而非主机名称。
-p 设置UDP传输协议的通信端口。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-s 设置本地主机送出数据包的IP地址。
-t 设置检测数据包的TOS数值。
-v 详细显示指令的执行过程。
-w 设置等待远端主机回报的时间。
-x 开启或关闭数据包的正确性检验。
4 实例:
实例4.1 : traceroute www..com
实例4.2:跳数设置
命令:traceroute -m 10 www..com
❸ 【traceroute】关于traceroute(路由追踪)的原理分析
traceroute 主要利用 IP 数据包的 TTL 字段值 + ICMP 来实现,它发送的用于探测网络路径的数据包的 IP 之上的协议可以是 UDP、TCP或ICMP。
协议表示该数据报文所携带的数据所使用的协议类型,占 8 位。
该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。
不同模式下,探测过程中设计的数据包如下:
UDP 探测数据包(目标端口大于 30000) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Destination Unreachable 数据包
TCP [SYN] 探测数据包(默认目标端口为 80) + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 TCP [SYN ACK] 数据包
ICMP Echo (ping) Request 探测数据包 + 中间网关发回 ICMP TTL 超时数据包 + 目标主机发回 ICMP Echo (ping) reply 数据包
UDP 端口扫描比较麻烦,它同TCP不一样,因为它不需要建立连接。
我们向 目标主机 的固定端口发送UDP数据包,可以得到 两种结果:
在运营商的路由器上,UDP 与 ICMP 的待遇大不相同。
为了利于 troubleshooting,ICMP ECHO Request/Reply 是不会封的,而 UDP 则不同。
UDP 常被用来做网络攻击,因为 UDP 无需连接,因而没有任何状态约束它,比较方便攻击者伪造源 IP、伪穗旅凯造目的端口发送任意多的 UDP 包,长度自定义。
所以运营商为安全考虑,对于 UDP 端口常常采用白名单 ACL,就是只有 ACL 允许的端口才可以通过,没有明确允许的则统统丢弃。比如允许 DNS/DHCP/SNMP 等。
当网络工程师用Ping时,Ping在偷摸做啥事儿?
ping命令是依托于 ICMP协议的, ICMP协议的存在就是为了更高效的转发 IP数据报和提高交付成功的机会。
ping命令除了依托于 ICMP,在局域网下还要借助于 ARP协议, ARP协议能根据 IP地址反查出计算机的 MAC地址。
另外 ARP是有缓存的,为了保证 ARP的准确性,计算机会更新ARP缓存。
有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。
出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有些路由器会隐藏的自己的位置,不让ICMP Timeout的消息通过,结果就是在那一跳上始终会显示星号。此外镇宽服务器也可以伪造traceroute路径的,不过一般应用服务器也没有理由这么做,所以Traceroute的结果还是能够为网络分析提供一些参考的。
Linux下traceroute程序默认发送的探测包为UDP协议,windows下tracert、mtr,以及Linux下mtr默认都发送的是icmp的数据包,并不是所有网关都会如实返回 ICMP 超时报文。处于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种猜唤 ICMP 报文,其余路由器或交换机也可能被管理员主动修改配置变为不返回 ICMP 报文。因此 Traceroute 程序不一定能拿到所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。这个过程将一直持续到数据包发送到目标主机,或者达到默认或用参数指定的追踪限制(maximum_hops 默认最大为30)才结束追踪
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。
如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
动态图解traceroute(路由追踪)的原理与实现
https://zhuanlan.hu.com/p/404043710
IP数据报格式详解
http://c.biancheng.net/view/6411.html
解析为何traceroute探测的时候中间有些节点探测不到?
https://zhuanlan.hu.com/p/122465496
traceroute使用与实现原理分析
https://zhuanlan.hu.com/p/36811672
traceroute(路由追踪)的原理及实现
https://www.jianshu.com/p/75a5822d0eec
为什么目标地址ping能通,但是tracetoute不通?
https://cloud.tencent.com/developer/article/1642331
只会用ping测试网络通不通?高级网工还会这么用
https://zhuanlan.hu.com/p/458358961
当网络工程师用Ping时,Ping在偷摸做啥事儿?
https://zhuanlan.hu.com/p/513184441
traceroute原理
https://www.cnblogs.com/zyd112/p/7196341.html
TCP/UDP/ICMP Traceroute的原理及区别
https://zhuanlan.hu.com/p/101810847
❹ Linux入门之traceroute指令详解
在Linux系统中,一个不可或缺的网络诊断工具是traceroute,它以稳定性和开源特性深受开发者和管理员青睐。这个命令行工具的主要功能是跟踪数据包从本地主机到目标地址所经过的每个网络节点,从而帮助用户识别网络路径和可能的问题。本文将深入解析traceroute指令的使用方法,选项及输出解读,助力Linux新手快速掌握这一实用技能。
traceroute实质上是一种网络追踪工具,通过发送特殊的数据包并接收回显信息,揭示数据包的传输路径。它能帮助网络管理员定位数据包丢失或延迟的原因,对网络问题诊断非常有效。在Linux中,基本使用格式如下:
而通过选项,可以定制traceroute的行为。例如,追踪http://example.com路径时,可以使用:
若希望加快追踪速度,可以跳过主机名解析,使用:
对于更详细的输出,选择合适的选项将显示更多信息:
理解traceroute的输出至关重要。它的结果通常包括三部分:跳点编号、延迟时间和状态。如果某个节点未响应,输出会显示星号(*),表示数据包可能在该点被丢弃或未响应请求。
总结来说,traceroute是Linux新手提升网络问题诊断能力的有力工具。通过实践和理解其基本用法和选项,你将能更有效地利用它解决网络问题。记住,网络诊断是一个不断学习的过程,随着经验的增长,你会更加熟练地运用traceroute来应对复杂网络挑战。