這系列文章希望以 Raspberry Model B 作為一個搭載 Linux 的活體,搭配 eBPF、perf、ftrace 等工具,觀察 Raspberry Pi 在與 I2C、SPI、UART 等周邊裝置互動時,作業系統核心的行為,並在做中驗證作業系統的經典概念。最後搭配核心的文件與近幾年 Linux Foundation 的研討會內容,嘗試撰寫實驗性的核心模組或相關程式碼,以達到學習 Linux 核心的效果。
這系列文章希望使用 eBPF 去理解運作在 Raspberry Pi 上的 Linux 核心之運作,並且觀察 Linux 核心如何與嵌入式系統的周邊互動,進而學...
Day 2:不會交叉編譯也可以自己編譯核心 雖然 Raspberry Pi OS 的核心是 5.4 版,eBPF 的實作大致上已經具備,但現在執行在 Raspb...
eBPF 極簡介 eBPF 是一個核心中的虛擬機器,有一個自己的指令集。所以最直觀的觀點來說,要使用 eBPF 就是要想辦法編出一個這個虛擬機可以執行的程式。不...
在正式地介紹 ply 的語法之前,先看看一個例子來展示一下如何使用他來追蹤程式碼。以下要追蹤的是關於 Raspberry Pi 3 Model B 板子上的那個...
之前只示範了如何用 ply 追蹤函數呼叫的堆疊。接下來講解更詳敘的語法,以達成更有效的追蹤。 ply 的語法在這個專案的文件 中可以找到。在這個專案的 READ...
關於 Linux 的 I2C 子系統,在 2020 年的 ELCE 上有一個 Tutorial: Introduction to I2C and SPI: Bo...
接下來想要討論的是:在 Raspberry Pi 的 python 函式庫進行 I2C 的傳輸時,核心的哪些部分做了哪些事? 想要做到這件事情,可以請出號稱「L...
前言:應用情境與歷史 再開始看這個東西之前可以思考一個情境:假設現在有一個板子的規格書上描述了一堆 MMIO 的區域,比如說設定 GPIO 對應的暫存器記憶體映...
雖然說前面的實驗已經知道 I2C 的函式庫多半是用 i2c-dev 這個字元驅動程式去控制,不過沒有弄一次真的 i2c driver 感覺有點遺憾。所以這邊就弄...
前面提到:Device Tree 可以提供硬體的資訊,而 driver 可以借助這個資訊來「找到」對應的硬體。所以可以互相搭配來幫 Device Tree 上描...