❶ 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來應對復雜網路挑戰。