- 3月 03 週五 202310:35
PCIe 簡介
- 2月 10 週五 202318:35
Wi-Fi 的 country code、monitor mode、channel、bandwidth 設定
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
2、Realtek Wi-Fi
舉例來說,AP6275s 屬於正基晶片,而 RTL8822CS 則是 Realtek Wi-Fi。
正基/海華Wi-Fi
- 2月 02 週四 202318:47
查詢 GPIO pin 的方向及值
查詢 GPIO pin 的方向及值
在開發 linux 的過程中,總是會需要知道某些 gpio pin 當下的狀態,如方向(direction) 及 值(value)。
而查詢的方法已有一套固定的流程,如下:
1、將要查詢的 gpio pin 加到 export 的行列中,例如加入 gpio pin 39 的指令為:
# echo 39 > /sys/class/gpio/export
2-1、如果第 1 個步驟有執行成功,則可以執行以下指令來查詢 gpio pin 39 此時的方向及電壓值:
# cat /sys/class/gpio/gpio39/direction
in
# cat /sys/class/gpio/gpio39/value
1
2-2、如果第 1 個步驟沒有執行成功,kernel 拋出錯誤,例如:
# echo 21 > /sys/class/gpio/export
-sh: echo: write error: Device or resource busy
這表示此 GPIO 正被某個程式所占用(一般來說是被 driver 所佔用),因此沒辦法申請這個 GPIO 來使用。
解決這個問題的方法,可以找出是哪個 driver 在執行 gpio_request() 後,沒有做 gpio_free(),並視情況補上 gpio_free()。
如果要查詢系統當下有哪些 GPIO pin 已被佔用,可以執行以下指令:
# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/fd8a0000.gpio, gpio0:
gpio-0 ( |bt_default_wake_host) in lo
gpio-4 ( |reset ) out lo ACTIVE LOW
gpio-21 ( |Reset_Pin ) out hi
- 1月 10 週二 202316:12
如何確認多個網路連線可以同時存在
如何確認多個網路連線可以同時存在
可以執行 ping 指令,並指定來源端的 IP Address 來作測試:
$ ping -I 192.168.2.101 tw.yahoo.com
$ ping -I 172.17.0.1 tw.yahoo.com
也可以執行 wget 指令,並指定來源端的 IP Address 來作測試:
$ wget --bind-address 192.168.2.101 tw.yahoo.com
$ wget --bind-address 172.17.0.1 tw.yahoo.com
- 1月 09 週一 202316:56
SC8815 設定輸出的電壓及電流
SC8815 設定輸出的電壓及電流
SC8815 是一款帶 I2C 接口的同步升降壓充電控制器,同時也支持電池反向放電工作。
I2C 7-bit address: 0x74。
SC8815 支持 VBAT 電池端 36V 高壓工作,因此在適配器電壓高於、低於或者等於電池電壓時,均能保證 1-6 節鋰電池應用。
當工作系統需要電池提供能量時,SC8815 也支持電池反向放電工作,輸出設定的電壓,並且放電最高電壓可達36V。
用戶通過 I2C 接口可以很方便地選擇充電 / 放電模式,設置充電電流、充電電壓、反向放電電壓、限流值、開關頻率及其它參數等。
集成的 10-bit ADC,可以方便用戶即時檢測讀取 VBUS/VBAT 電壓和電流。
- 12月 08 週四 202216:32
PWM vs DC 調光
PWM vs DC 調光
螢幕要點亮,才能看到上面的資訊,螢幕的亮度也需要隨著環境亮度做調整,因此螢幕需要調光,也就是調整光度的意思。
調光的目的是為了螢幕變亮或是變暗,有兩種技術可以達到相同的目的,也就是「DC 調光」與「PWM 調光」。
PWM 調光
- 11月 16 週三 202217:23
Linux 的 I2C 指令
Linux 的 I2C 指令
在 Linux 中,常使用的 i2c 工具指令有:
i2cdetect, i2cget, i2cset, i2cdump, i2ctransfer
以下將一一說明指令的功能。
又如果在 Driver 執行成功的情況下,會無法使用上述指令取得暫存器的值,因為此時該 I2C 裝置已被 Driver 佔用。
不過在 Driver 有實作 regmap 的情況下,可以利用 cat 指令,直接從系統資料夾 - /sys/kernel/debug/regmap/ 的 I2C bus - I2C slave Address 資料夾內的 registers 檔案來查看暫存器值。
例如 I2C bus 為 7,I2C slave Address 為 0x11,則透過 cat 讀取暫存器值的指令為:
# cat /sys/kernel/debug/regmap/7-0011/registers
registers 的個數是在 Driver - kernel/sound/soc/codecs/es8388.c 設定的,參數為 max_register,如下:
- 10月 27 週四 202211:28
Shell 觀念
Shell 觀念
終端機(Terminal) 跟 Shell 的角色分工
終端機 提供一個指令的輸入、輸出環境,在 linux 下,使用組合鍵 ctrl+alt+t 就可以啟動終端機。
而 shell 是一個 指令解釋器(command interpreter),是 linux kernel 的一個外殼,做為 linux kernel 與外界溝通的橋樑。
也就是說,shell 負責接收用戶或者其他應用程序的指令,然後將這些指令轉化成 kernel 能理解的語言並傳給 kernel,kernel 執行命令完成後,會將結果返回給 shell,再由 shell 傳遞給用戶或是應用程序。
- 10月 27 週四 202211:28
在 x86 Linux 修改 ARM Linux 的 Root File System (RFS)
在 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 指令來完成。
先安裝 QEMU 模擬器:
$ sudo apt-get update
$ sudo apt-get install qemu-user-static
接下來的步驟為:
1、掛載 ARM Linux RFS,並進行檔案複製。
2、切換到 ARM Linux RFS 環境。
3、修改 ARM Linux RFS。
4、切換回 x86 Linux 環境。
5、建立空的 RFS image。
6、將修改過 ARM Linux RFS 複製到新建立的 RFS image。
7、修復並縮小 RFS image,完成。
(5-7、可以簡化為:將修改過 ARM Linux RFS 直接製作為 RFS image。)
8、檢查檔案格式,並燒錄。
- 2月 16 週三 202219:57
如何在 Windows 10 修改 MAC Address
如何在 Windows 10 修改 MAC Address
先在 "Network Connections" (網路連線) 中確認要修改的是哪個網卡的 MAC Address,此例中,名稱為 "Realtek PCIe GBE Family Controller":

確定網路卡的名稱後,搜尋並點選 "Device Manager" (裝置管理員):
