上次介紹過的 LuckFox Pico Mini B型號 ,雖然使用上比較直接
但預設的核心系統限制著使用的功能,因此在下打算了解更多資料
下載及安裝編譯工具
編譯前先安裝需要使用套件,輸入
sudo apt-get install \ autoconf bc bison cmake cpio device-tree-compiler expect fakeroot file flex \ g++ g++-multilib gawk gcc gcc-multilib git gperf libncurses5-dev libssl-dev make \ module-assistant nano openssh-client openssh-server openssl passwd pkg-config python-is-python3 rsync \ ssh texinfo unzip vim
下載原始碼
git clone "https://github.com/LuckfoxTECH/luckfox-pico.git" --depth=1
使用 Git 下載 LuckFox Pico 核心系統的原始碼
編譯型號設定
到 luckfox-pico 的目錄輸入
"./build.sh" lunch
會顯示設定選單
- 選擇 LuckFox Pico 的型號
- 選擇 起動方式 (部分 LuckFox Pico 型號沒有內置儲存裝置,必須使用 SD_CARD)
- 選擇 核心版本 (官方還有提供 Ubuntu ,但需要最少 300MB儲存空間 才能安裝)
編譯核心系統
設定後,輸入
"./build.sh"
便會開始編譯
(編譯的途中需要下載需要使用的軟件的原始碼)
(編譯時間視乎電腦效能,在下的電腦的編譯時間大約需要 30分鐘)
編譯成功後,可以到 output/image 中找到編譯完成的映像檔案
寫入核心系統
輸入
"./upgrade_tool" UF "output/image/update.img"
將核心系統寫入到 LuckFox Pico
(需要下載 upgrade_tool 並存放到 luckfox-pico 目錄)
寫入核心系統後,輸入
adb shell
使用 ADB 連接到 LuckFox Pico
(由於在下編寫這篇文章時,剛好 LuckFox Pico 發佈 LuckFox Ultra 開發板 及 更新原始碼
因此使用較新原始碼所編譯的 LuckFox Pico ,已經設定好基本的提示資訊)
修改引腳設定
新版本的核心系統,引腳設定只有系統保留的預設功能
不計算 電源(VCC) 及 接地(GND) ,只有 ADC 、 偵測用的 UART2 、 系統保留的 I2C4 及 連接到 Micro SD 卡的 SPI2
其他引腳只有 GPIO 功能
如果需要使用 PWM 及 額外的 I2C3 及 SPI0 ,需要修改核心的引腳設定
到 sysdrv/source/kernel/arch/arm/boot/dts ,並尋找對應的 LuckFox Pico 型號的 dts檔案
使用 文字編輯器 開啟 dts檔案
如果需要啟動對應引腳的功能,在檔案中尋找 pwm, uart, i2c, spi 的分類,並將 status 由 disable 修改為 okay
dts檔案 中的設定並非完整內容,缺失的設定要自行加入,而且引腳及其功能必須存在於 LuckFox Pico 對應的型號
除了範例中的 PWM1 ,例如在下想啟用 LuckFox Pico Mini B型號 的 PWM3, PWM8, PWM9, PWM10, PWM11
在 dts檔案 中加入
&pwm3 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm3m2_pins>; // reference to data sheet pin PWM3_IR_M2 }; &pwm8 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm8m1_pins>; // reference to data sheet pin PWM8_M1 }; &pwm9 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm9m1_pins>; // reference to data sheet pin PWM9_M1 }; &pwm10 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm10m1_pins>; // reference to data sheet pin PWM10_M1 }; &pwm11 { status = "okay"; pinctrl-names = "active"; pinctrl-0 = <&pwm11m1_pins>; // reference to data sheet pin PWM11_IR_M1 };
修改完成後,輸入
"./build.sh" kernel
重新編譯核心
核心編譯完成後(大約20秒),輸入
"./build.sh" firmware
將編譯完的資料封裝(大約20秒)成 update.img
再次將 update.img 寫入到 LuckFox Pico
使用修改後的核心系統,便能夠使用 PWM 、 I2C3 、 SPI0
安裝額外軟件
基於儲存裝置的容量限制, LuckFox Pico 預設的 Linux 並沒有安裝太多軟件
不過 LuckFox Pico 在編譯 Linux核心系統 時,能夠同時將需要使用的軟件編譯並安裝
到 sysdrv/source/buildroot/buildroot-* 目錄(buildroot-* 目錄需要先編譯一次才建立),輸入
make luckfox_pico_defconfig
建立軟件的設定檔,輸入
make menuconfig
修改設定檔的內容
執行指令後,會顯示一個互動操作的 Terminal 選單,軟件項目在 Target packages 中
並會將不同類別的軟件分類,例如在下打算安裝常用的 壓縮及解壓縮軟件
選擇項目後,按 空格鍵 (Space) 選取 或 取消選取 該項目
除了依分類尋找,亦可以按 / (斜線) 符號 搜尋
操作以 正規表達式 (Regular Expression (regex)) 尋找資料
如果符合的資料很多,需要較長的載入時間
篩選後的內容會以文字清單顯示,可以按上下左右方向鍵移動(主要是上下)
項目中的 prompt 為 軟件名稱,然後 括號中的數字 是前往該項目的 快捷鍵
但 快捷鍵 必須 顯示該項目的數字 的情況下才能生效
按下對應項目的 快捷鍵 後,便會立即前往 該項目 或 該項目的分類目錄
完成設定後,儲存並離開
輸入
make savedefconfig
將設定資料儲存到編譯設定,再輸入
make
開始編譯軟件
如果編譯的軟件需要從網絡下載對應軟件的原始碼
編譯時間受下載速度、軟件數量,因此在下沒有測試時間
軟件編譯完成後,回到 luckfox-pico 目錄,輸入
"./build.sh" rootfs
重新編譯 系統目錄
編譯完成後,輸入
"./build.sh" firmware
再次資料封裝成 update.img
(由於 系統目錄 已經編譯,因此不需要重新編譯所有軟件,只需要編譯新加入的軟件)
再次將資料寫入到 LuckFox Pico
便可以在 LuckFox Pico 使用額外軟件
補充資料
先前試用 LuckFoc Pico Mini B 預設並沒有能夠直接控制 SPI 的指令
因此可以到 buildroot-* 尋找及編譯 spidev_test ,是一個使用 SpiDev 並由 C 製作的 SPI 測試工具
搜尋、安裝、編譯 spidev_test 並寫入到 LuckFox Pico
便可以直接使用 Shell腳本 控制 SPI
另外 sysdrv/source/buildroot/buildroot-*/output/target 是編譯 LuckFox Pico 系統檔案 的 fakeroot 位置
可以將 起動程式 儲存到 etc/init.d 中,然後編譯 核心目錄、封裝成映像檔、將核心寫入到 LuckFox Pico
當 LuckFox Pico 起動後便立即執行
除了 etc/init.d ,亦可以將需要的檔案存放到需要的位置 (例如 /opt ,通常存放額外軟件)
便不需要每次寫入 核心系統 要自行再建立軟件
總結
編譯在 LuckFox Pico 運作的 Linux ,有點像在 Termux 上設定 Linux 相似
分別是 Termux 上的 Linux 是屬於虛擬機,無法存取宿主的硬件功能
而 LuckFox Pico 則是真實的 Linux 主機,能夠存取裝置的硬件
在下最初為了避免安裝太多套件在電腦系統,所以在 虛擬機系統 中測試編譯 LuckFox Pico 的核心系統
但編譯的時間需要120分鐘,實在太長,因為直接使用電腦編譯,縮短為30分鐘完成
編譯最重要選擇正確的 LuckFox 型號,然後便是等待完成,因此並沒有特殊技能要求
主要是更改或啟動引腳的功能,才需要參考不同型號的 LuckFox Pico 引腳的功能
另外一個需要花時間就是編譯軟件, LuckFox Pico 編譯時預設使用以下軟件
- acl
- argp-standalone
- attr
- autoconf-archive
- autoconf
- automake
- bash
- bison
- busybox
- cmocka
- dialog
- dtc
- e2fsprogs
- expat
- fakeroot
- flex
- gettext-tiny
- gettext-tiny
- gmp
- gnutls
- heimdal
- htop
- libevent
- libffi
- libiconv
- libopenssl
- libtasn1
- libtirpc
- libtool
- libunistring
- libv4l
- libzlib
- lrzsz
- m4
- nano
- ncurses
- nettle
- nfs-utils
- ntp
- openssh
- patchelf
- perl-parse-yapp
- perl
- pkgconf
- popt
- python3
- python-aiodns
- python-aiohttp
- python-aiosignal
- python-async-timeout
- python-attrs
- python-cchardet
- python-cffi
- python-click
- python-cython
- python-flit-core
- python-frozenlist
- python-idna
- python-installer
- python-itsdangerous
- python-jinja2
- python-markupsafe
- python-multidict
- python-packaging
- python-pep517
- python-periphery
- python-pillow
- python-pycares
- python-pycparser
- python-pypa-build
- python-serial
- python-setuptools
- python-smbus-cffi
- python-spidev
- python-typing-extensions
- python-werkzeug
- python-yarl
- readline
- samba4
- time
- util-linux
因此需要額外添加軟件時,不要取消選擇這些套件,以免 LuckFox Pico 出現問題
而需要安裝額外視乎使用情況,在下有一些推薦軟件:
- GPIO工具
- i2c-tools
- spidev_test
- 壓縮或解壓縮工具
- bzip2
- gzip
- p7zip (7zr)
- unrar
- unzip
- xz-utils
- zip
- 檔案系統工具
- dosfstools
- fatlabel
- fsck.fat
- mkfs.fat
- exFAT (FUSE)
- exfat-utils
- exfatprogs
- firmware-utils
- ntfs-3g
- encrypted volumes
- ntfsprogs
- 網絡工具
- libcurl
- net-tools
- nmap
- wget
- 開發工具
- gawk
- git
- grep
- jq
- python-pip
- 伺服器工具
- apache
- cups
- transmission
- 多媒體工具
- imagemagick
- ffmpeg
- 其他工具
- jhead
- ghostscript
- libfdisk
- neofetch
閣下可以選取選項後,查看說明了解該套件的功能
另外部分安裝選項,選取後會有額外功能,如果情況許可,建議同時安裝,令該軟件達至最佳功能
沒有留言 :
張貼留言