iT邦幫忙

鐵人檔案

第 12 屆 iThome 鐵人賽
回列表
IoT

Modern Maker : 從那些 Maker 的大小事看 Linux 核心 系列

這系列文章希望以 Raspberry Model B 作為一個搭載 Linux 的活體,搭配 eBPF、perf、ftrace 等工具,觀察 Raspberry Pi 在與 I2C、SPI、UART 等周邊裝置互動時,作業系統核心的行為,並在做中驗證作業系統的經典概念。最後搭配核心的文件與近幾年 Linux Foundation 的研討會內容,嘗試撰寫實驗性的核心模組或相關程式碼,以達到學習 Linux 核心的效果。

鐵人鍊成 | 共 30 篇文章 | 76 人訂閱 訂閱系列文 RSS系列文
DAY 1

達標好文 Day 1:教練!我想學 Linux Kernel 啊!

這系列文章希望使用 eBPF 去理解運作在 Raspberry Pi 上的 Linux 核心之運作,並且觀察 Linux 核心如何與嵌入式系統的周邊互動,進而學...

2020-09-16 ‧ 由 0xff07 分享
DAY 2

Day 2:「我需要 perf!」「請給我 eBPF!」

Day 2:不會交叉編譯也可以自己編譯核心 雖然 Raspberry Pi OS 的核心是 5.4 版,eBPF 的實作大致上已經具備,但現在執行在 Raspb...

2020-09-17 ‧ 由 0xff07 分享
DAY 3

Day 3:安裝 ply 和 perf

eBPF 極簡介 eBPF 是一個核心中的虛擬機器,有一個自己的指令集。所以最直觀的觀點來說,要使用 eBPF 就是要想辦法編出一個這個虛擬機可以執行的程式。不...

2020-09-18 ‧ 由 0xff07 分享
DAY 4

Day 4:小試身手 -- 是誰住在 Rpi 的 LED 裡?

在正式地介紹 ply 的語法之前,先看看一個例子來展示一下如何使用他來追蹤程式碼。以下要追蹤的是關於 Raspberry Pi 3 Model B 板子上的那個...

2020-09-19 ‧ 由 0xff07 分享
DAY 5

Day 5:ply 語法簡介

之前只示範了如何用 ply 追蹤函數呼叫的堆疊。接下來講解更詳敘的語法,以達成更有效的追蹤。 ply 的語法在這個專案的文件 中可以找到。在這個專案的 READ...

2020-09-20 ‧ 由 0xff07 分享
DAY 6

Day 6:I2C (Part 1) - 簡介與環境設置

關於 Linux 的 I2C 子系統,在 2020 年的 ELCE 上有一個 Tutorial: Introduction to I2C and SPI: Bo...

2020-09-21 ‧ 由 0xff07 分享
DAY 7

Day 7:I2C (Part 2) - ftrace 爽颯登場!

接下來想要討論的是:在 Raspberry Pi 的 python 函式庫進行 I2C 的傳輸時,核心的哪些部分做了哪些事? 想要做到這件事情,可以請出號稱「L...

2020-09-22 ‧ 由 0xff07 分享
DAY 8

Day 8:Device Tree (Part 1)

前言:應用情境與歷史 再開始看這個東西之前可以思考一個情境:假設現在有一個板子的規格書上描述了一堆 MMIO 的區域,比如說設定 GPIO 對應的暫存器記憶體映...

2020-09-23 ‧ 由 0xff07 分享
DAY 9

Day 9:暖身運動 - 媽!我在核心裡面了!第一個核心模組

雖然說前面的實驗已經知道 I2C 的函式庫多半是用 i2c-dev 這個字元驅動程式去控制,不過沒有弄一次真的 i2c driver 感覺有點遺憾。所以這邊就弄...

2020-09-24 ‧ 由 0xff07 分享
DAY 10

Day 10:I2C Driver (Part 1) - 使用 Device Tree 來找 Driver

前面提到:Device Tree 可以提供硬體的資訊,而 driver 可以借助這個資訊來「找到」對應的硬體。所以可以互相搭配來幫 Device Tree 上描...

2020-09-25 ‧ 由 0xff07 分享