哪一台是哪個角色:target 被觀測,host 只負責看

哪一台是哪個角色:target 被觀測,host 只負責看 An architecture diagram generated by Archify. 終端機畫面 · MBP 內建螢幕,你在這裡讀 trace · host 角色 —— MacBook Pro(旁觀者,不參與) 終端機畫面 MBP 內建螢幕,你在這裡讀 trace trace_dcp.py · 解碼邏輯,跑在 host 不在 target · host 角色 —— MacBook Pro(旁觀者,不參與) · 改這個只要幾秒 trace_dcp.py 解碼邏輯,跑在 host 不在 target 改這個只要幾秒 proxyclient · Python,透過 USB 跟 m1n1 對話 · host 角色 —— MacBook Pro(旁觀者,不參與) proxyclient Python,透過 USB 跟 m1n1 對話 macOS 14.8.3(guest) · EL1,原封不動,不知道被虛擬化 · target 角色 —— Mac mini(被觀測的那台) macOS 14.8.3(guest) EL1,原封不動,不知道被虛擬化 m1n1 hypervisor(EL2) · 把 MMIO 設成 trap,攔下再放行 · target 角色 —— Mac mini(被觀測的那台) · 中介層 m1n1 hypervisor(EL2) 把 MMIO 設成 trap,攔下再放行 中介層 DCP / atcphy · 真實硬體,原生速度不是模擬 · target 角色 —— Mac mini(被觀測的那台) DCP / atcphy 真實硬體,原生速度不是模擬 Studio Display · 插在 target 這台,不是插 host · Architecture component Studio Display 插在 target 這台,不是插 host USB 線:回報 trap 事件 交給解碼器 印出來 每次 MMIO 存取被攔下 記錄後原樣放行 DP Alt Mode host 角色 —— MacBook Pro(旁觀者,不參與) target 角色 —— Mac mini(被觀測的那台) Legend 你眼睛看的地方 host 的 Python / target 的硬體 m1n1 攔截層 Apple 的東西(不可改)

角色怎麼分

  • • target=被觀測的機器,螢幕插這台,m1n1 和 guest 都在這台
  • • host=旁觀者,只跑 Python、收資料、印出來,不影響 target
  • • MBP 有內建螢幕又已裝好 Asahi,適合當 host;降安全模型只發生在 mini

捕獲與解讀是分開的

  • • 捕獲在 target:m1n1 攔下 MMIO 存取
  • • 解讀在 host:trace_dcp.py 是 Python,跑在 host 上
  • • 所以改 tracer 是「改 Python 重跑」,不用重 build kernel

之後角色會對調

  • • 要改測 t600x 自己的 DCP 時角色對調:MBP 變 target、mini 變 host
  • • 那時 Studio Display 插到 MBP,mini 需要自己的畫面
  • • target 需要一份 macOS 14.8.3 在獨立的 volume group 上