註冊 interrupt handler,當 status interrupt 舉起時,呼叫 user 自定義的 completion callback function 來完成最後的流程。如果當前是執行最後的 final API call 且 request 有自定義的 resource 需要被釋放,則會在呼叫完 callback function 後執行。
馬上就要過年了,最近在整理物品的時候,突然找到一年前為了玩板子而亂買的 Grove sensor,回想當時雖然對於韌體很感興趣,不過由於工作關係,因此把大部分進修時間都花在 Web 議題,沒能完成 sensor 韌體,留下一個遺憾。而既然這次被我找出來,近期工作又是都以 FPGA 板子居多,對於相關概念已有基本認知,覺得是時候把它實作出來,了結一年前給自己的課題。
硬體
Grove Temperature&Humidity Sensor (High-Accuracy & Mini)
Raspberry Pi 3 Model B (Linux kernel 5.4.x)
技術
I2C linux driver
linux Industrial I/O subsystem
device tree
由於買的 sensor 有支援 I2C bus protocol,因此這次實作的 driver 就會基於 I2C driver 架構上實作。搭配 iio (Industrial I/O) subsystem 來讓 user space 能夠透過 file system 來讀取溫度和濕度。