樹莓派偷偷換上新 SoC,解決了 RAM 定址問題

2021-09-29 09:00:26

近日,國外一位名叫 Jeff Geerling 的開發者購買了一塊新的 Raspberry Pi 4 Model B,無意間發現樹莓派在該型號上「偷偷」換上了新的 SoC,解決了兩個此前存在的 RAM 處理有關的問題。

Jeff Geerling 在中表示:「由於我用於測試的 Raspberry Pi 4 Model B 發生了故障,我不得不去買一個新的 Raspberry Pi 4。當地的經銷商「Micro Center」只有 8GB 型號的庫存,在我購買後經過檢查發現該型號所搭載的博通 SoC 跟以往的型號有一些不同之處。」(如下圖)

你能發現它的不同之處嗎?這塊 Raspberry Pi 4 Model B 上的 BCM2711 晶片的型號是 2711ZPKFSB06C0T,與 Raspberry Pi 400 上的晶片相同。

而 Raspberry Pi 4 Model B 最初所採用的晶片型號為 2711ZPKFSB06B0T,區別在於倒數第三個字元,即 C 與 B 的區別。

至於 Raspberry Pi 4 Model B 到底是何時換上了這個新款 SoC,目前並沒有一個官方的說明。但根據目前 Twitter 網友 Lucas 的評論來看,他在今年一月購買的 8GB 型號上並沒有採用新款 SoC,而在四月購買的 2GB 型號上反而使用了。

識別樹莓派上的步進等級

如果你想知道你的樹莓派上是否採用了更新的 BCM2711 SoC,那麼有以下兩種方法:

  • 最簡單的方法就是直接檢視樹莓派 SoC 上所蝕刻的型號。如果它的末尾是 "B0T",那就是舊型號。如果是 「C0T「,則是較新的型號;
  • 如果你是將樹莓派安裝在裝置內部,或者為樹莓派套了一個外殼不能直接看到 SoC 的話,則可以通過執行以下命令來確定—— od -An -tx1 /proc/device-tree/emmc2bus/dma-ranges,返回結果如下:
# B0
pi@raspberrypi:~$ od -An -tx1 /proc/device-tree/emmc2bus/dma-ranges
 00 00 00 00 c0 00 00 00 00 00 00 00 00 00 00 00
 40 00 00 00

# C0
pi@raspberrypi:~$ od -An -tx1 /proc/device-tree/emmc2bus/dma-ranges
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 fc 00 00 00

C0 步進等級中更新了什麼?

在 BCM2711 的案例中,樹莓派並沒有為該版本增加新的功能,也沒有提升效能,而是主要修復了兩個與 RAM 定址有關的問題:

  • EMMC2 匯流排只能直接定址前 1GB;
  • PCIe 介面只能直接定址前 3GB;

尤其是後者可能會影響磁碟的吞吐量,而該問題對 Raspberry Pi 4 Model B 的低端型號的影響並不大,僅對採用了 8GB 記憶體的型號有較大的改進。

展開閱讀全文