學習階梯:從 build kernel 到讓 Studio Display 亮起來

學習階梯:從 build kernel 到讓 Studio Display 亮起來 A workflow diagram generated by Archify. 01 / 學習階梯 02 / 里程碑 近程:打底(數天~兩週) 中程:學會讀(數週) 遠程:解題(無期限) 0 · build kernel · fairydust + DTB · 學習階梯 › 近程:打底(數天~兩週) · 裝好的 Asahi 0 · build kernel fairydust + DTB 裝好的 Asahi 0.5 · proxy REPL · 戳 MMIO 暫存器 · 學習階梯 › 近程:打底(數天~兩週) · 裸機 + mini 0.5 · proxy REPL 戳 MMIO 暫存器 裸機 + mini 1 · 讀 driver · 加 printk 追路徑 · 學習階梯 › 中程:學會讀(數週) · 裝好的 Asahi 1 · 讀 driver 加 printk 追路徑 裝好的 Asahi 2 · trace 熱身 · 先讀簡單裝置 · 學習階梯 › 中程:學會讀(數週) · hypervisor 2 · trace 熱身 先讀簡單裝置 hypervisor 3 · 雙邊 trace · macOS vs Linux · 學習階梯 › 遠程:解題(無期限) · 脊椎 3 · 雙邊 trace macOS vs Linux 脊椎 4 · Studio Display · call 20 正確回應 · 學習階梯 › 遠程:解題(無期限) · 畢業專題 4 · Studio Display call 20 正確回應 畢業專題 斷點 1 驗證 · USB-C 螢幕會亮 · 里程碑 › 遠程:解題(無期限) 斷點 1 驗證 USB-C 螢幕會亮 斷點 2 收斂 · Studio Display 會亮 · 里程碑 › 遠程:解題(無期限) 斷點 2 收斂 Studio Display 會亮 迭代迴圈 懂 MMIO 讀懂 driver 讀懂 trace 順手驗證 讀懂 DCP Legend 工作階段 關鍵階段 里程碑

近程目標(先做這個)

  • • build 出一顆能開機的 fairydust kernel,舊 kernel 留著隨時退回
  • • 買 full-spec 非 TB 的 USB-C 線測 Studio Display,回報到 #579(沒人做過)
  • • 順便問清楚 fairydust 的 dts 把哪個 port 指定給 DP,別跟接線孔撞在一起
  • • 自己讀一遍 Copyright and Reverse Engineering Policy 原文

中程目標

  • • 能在 phy/apple/atc.c 加 printk 並看懂執行路徑
  • • 能架起 m1n1 hypervisor,錄下一份可讀的 trace
  • • 插普通 USB-C 螢幕,確認 #601 的結論在你的 t600x 上也成立
  • • 回報結果 —— 這一步本身就是社群目前缺的東西

遠程目標

  • • 從 macOS trace 反推 call 20 的正確回應序列,寫成規格再寫 C
  • • 把成果送 PR(注意:要自己讀 trace、自己寫,才進得了上游)
  • • 真正的收穫是能力:下次遇到任何不支援的裝置都不再害怕

階段 3 為什麼是關鍵

  • • 用「你知道正確答案」的案例來校準閱讀能力,不會卡在看不懂
  • • 要用便宜的 USB-C→HDMI 轉接頭,不要用內建 HDMI 孔
  • • 內建 HDMI 走獨立轉換晶片,對話形狀跟 Type-C 路徑不一樣
  • • 轉接頭走的是同一條 atcphy → dcpext → dptx,只是少了那顆 A13
  • • 轉接頭在 t6001 上已有人跑到 4K60,所以正確長相是已知的