Device Tree (DTS) 簡介
Device Tree 的存在,是為了把在 Platform Device 架構中,用來描述硬體資源的部份給抽出來,因為 Platform Device 的檔案是用 C 語言描述的,但概念上,硬體資源的描述應和程式無關也與 Linux 版本無關。
用 C 去描述的話,只要重新定義硬體資源就需要重新編譯核心,很浪費時間,如果不熟 C 語言,也無法修改,因為可能會導致編譯失敗。
Device Tree (DTS) 簡介
Device Tree 的存在,是為了把在 Platform Device 架構中,用來描述硬體資源的部份給抽出來,因為 Platform Device 的檔案是用 C 語言描述的,但概念上,硬體資源的描述應和程式無關也與 Linux 版本無關。
用 C 去描述的話,只要重新定義硬體資源就需要重新編譯核心,很浪費時間,如果不熟 C 語言,也無法修改,因為可能會導致編譯失敗。
Debian 11 在 ARM CPU 的開機流程
本文中,開機流程分為三大部分:
一開始先執行 UBOOT,接著 UBoot 將控制權交給 Kernel,而 Kernel 執行到最後,會將控制權交給作業系統。
調整 Linux 作業系統預設的帳號、密碼
在 Embedded Linux 中,作業系統一般都有預設的帳號、密碼,此帳號通常還具有 super user 權限,因此為了安全性考量,需要在客製化作業系統時,進行修改。
可以利用 adduser 指令來建立具有 super user 權限的帳號、密碼,並利用 deluser 指令移除預設的帳號。
移除 Serial Console Port 的自動登入(auto-login)功能
在產品開發階段,auto-login 功能可以方便工程師進行開發,不需要在開機後手動輸入帳號、密碼,而是開機後,自動以 root 登入系統。
但在出貨版本上,因為安全性考量,此功能需要被移除。
Wi-Fi 的 country code、monitor mode、channel、bandwidth 設定
在 Rockchip 的文件 - Rockchip_Developer_Guide_Linux_WIFI_BT_CN.pdf 中,有說明,如何對 Wi-Fi 的設定值進行修改,而作法則依 Wi-Fi chip 的廠商分成兩類:
1、正基/海華Wi-Fi
查詢 GPIO pin 的方向及值
在開發 linux 的過程中,總是會需要知道某些 gpio pin 當下的狀態,如方向(direction) 及 值(value)。
而查詢的方法已有一套固定的流程,如下:
在 x86 Linux 修改 ARM Linux 的 Root File System (RFS)
要做到在 X86 Linux 系統上,修改 ARM Linux 系統的 RFS (例如在 RFS 上新增安裝或移除軟體),則需要在 X86 Linux 系統上,模擬執行 ARM Linux 系統。
要在 X86 Linux 系統模擬執行 ARM Linux 系統,則需要依賴 QEMU(Quick Emulator) 工具,並搭配 chroot 指令來完成。
Shell 觀念
終端機(Terminal) 跟 Shell 的角色分工
終端機 提供一個指令的輸入、輸出環境,在 linux 下,使用組合鍵 ctrl+alt+t 就可以啟動終端機。
同台機器的網路孔對接,執行 iperf 程式
要在同台機器上,對接網路孔,並同時執行 iperf 的 server 端 及 client 端程式,是蠻複雜的做法,好在已經有高手做出,在此來理解此做法。
udev
udev stands for “userspace implementation of devfs”,也就是說 udev 是在 userspace 下的 device file system 的實作。(從 Linux 2.6 kernel 開始實作)
udev 可以利用裝置的屬性,例如: vender ID, device ID,來動態識別裝置,並為裝置建立一個具有一致性且專屬的名稱。
shell script 筆紀
如果要查詢 shell script 的寫法,可以利用 $ man bash 指令,內容很詳細,幾乎所有的用法都可以找到。
理解 lspci
在 linux 中,可以利用 lspci 指令來列出所有連接的 PCI 裝置,本文簡單說明 lspci 的顯示結果。
GUID Partition Table (GPT)
GPT 是一個實體硬碟的分割區表的結構布局的標準。它是可延伸韌體介面(UEFI)標準的一部分,被用於替代 BIOS 系統中的一 32bits 來儲存邏輯塊位址和大小資訊的主開機紀錄(Master Boot Record, MBR)分割區表。