前 言
本文主要演示Linux系統開發流程。包括LinuxSDK的配置與編譯,U-Boot、Kernel及Rootfs開發,以及系統鏡像的替換方法,旨在幫助開發者完成系統開發。
開發環境
Windows開發環境:Windows10 64bit
Linux開發環境:VMware16.2.5、Ubuntu22.04.4 64bit
LinuxSDK開發包:LinuxSDK-[版本號](基于RK3506_LINUX6.1_SDK_Release_V1.1.0_20241128)
交叉編譯工具鏈:
Rootfs開發:arm-buildroot-linux-gnueabihf-gcc(版本為12.4.0,通過LinuxSDK編譯生成)
U-Boot開發、內核開發:gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf
評估板系統版本:U-Boot-2017.09、Linux-6.1.99、Buildroot-2024.02
備注:本文基于256MByteNAND FLASH、256MByteDDR3配置核心板進行演示。
術語表
為便于閱讀,下表對文檔出現的關鍵術語進行解釋;對于廣泛認同釋義的術語,在此不做注釋。
注意事項
NAND FLASH配置評估板支持通過系統啟動卡和板載NAND FLASH啟動系統。eMMC配置評估板僅支持通過板載eMMC啟動系統。
Linux系統各鏡像可通過命令行方式和瑞芯微開發工具替換,具體如下表所示。
Linux系統相關軟件包位于產品資料“4-軟件資料Linux”目錄下,具體如下表。
備注:我司推薦使用最新版本的LinuxSDK,亦可根據“4-軟件資料LinuxLinuxSDKLinuxSDK-feature-support.pdf”的變更說明,自行替換對應模塊(如device/rockchip)至舊版本LinuxSDK進行更新。
評估板簡介
RK3506J/RK3506B處理器的IO電平標準一般為1.8V、3.3V,上拉電源一般不超過3.3V或1.8V,當外接信號電平與IO電平不匹配時,中間需增加電平轉換芯片或信號隔離芯片。按鍵或接口需考慮ESD設計,ESD器件選型時需注意結電容是否偏大,否則可能會影響到信號通信。
評估板硬件資源圖解1
評估板硬件資源圖解2
LinuxSDK配置與編譯
請先參考《開發環境搭建》文檔正確安裝LinuxSDK和依賴軟件,再執行以下步驟。
配置編譯選項
進入LinuxSDK源碼目錄,配置LinuxSDK編譯選項。
Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/
Host# ./build.sh tl3506_evm_nand_defconfig
備注:如需編譯生成適用于eMMC或系統啟動卡系統啟動方式的Linux系統鏡像,請將命令中的"nand"修改為"emmc"或"sd"。
圖 1
配置編譯設備樹文件
我司提供的設備樹文件位于LinuxSDK源碼"kernel/arch/arm/boot/dts"目錄。設備樹文件根據NAND FLASH、eMMC兩種配置,以及評估板部分復用外設功能進行區分。具體說明如下表。
以下設備樹文件適用于NAND FLASH配置評估板,同時支持系統啟動卡。
以下設備樹文件僅適用于eMMC配置評估板。
評估板使用的設備樹文件存在多級的依賴關系,具體如下表所示。表中的下一級設備樹文件,被上一級設備樹文件所引用。
本次操作以替換為tl3506-evm-nand-lvds-lcd.dts設備樹(支持LVDSLCD顯示)進行演示,其他設備樹修改方法同理。
進入LinuxSDK源碼目錄執行如下命令,修改"device/rockchip/rk3506/tl3506_evm_nand_defconfig"文件。
Host# vim device/rockchip/rk3506/tl3506_evm_nand_defconfig
備注:如需編譯生成適用于eMMC或系統啟動卡系統啟動方式的設備樹文件,請將命令中的"nand"修改為"emmc"或"sd"。
圖 2
修改內容如下:
RK_KERNEL_DTS_NAME="tl3506-evm-nand-lvds-lcd" //將"tl3506-evm-nand"修改為"tl3506-evm-nand-lvds-lcd"
圖 3
配置內核選項
我司默認配置的是Linux內核(推薦使用)。如需修改內核編譯選項配置,請繼續執行"./build.sh kernel-config"命令打開圖形配置界面。此命令通過讀取當前目錄的.config文件,以圖形界面的方式提供內核編譯配置查看和修改方法。如無需修改內核編譯選項配置,可跳過此步驟。
menuconfig是一套圖形化的配置工具,需要ncurses庫支持。ncurses庫提供了一系列的API函數供調用者生成基于文本的圖形界面,因此需要先執行如下命令通過網絡安裝ncurses庫。
Host# sudo apt-get install libncurses5-dev
圖 4
ncurses庫安裝完成后,執行如下命令打開圖形配置界面。
Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/
Host# ./build.sh kernel-config
圖 5
圖 6
?
可通過鍵盤的方向鍵選中對應菜單欄。在被選中的情況下,可按Enter鍵進入子菜單。菜單選項中藍色高亮的字母代表此菜單選項的快捷鍵,可在鍵盤上按下對應的字母快速選中對應的菜單選項。每個菜單選項前的括號內容表示當前菜單選項的配置狀態。選中對應的菜單選項后,按下Y鍵,會將相應的選項配置編譯到內核中,同時菜單選項前面變為< * >。按下N鍵,不會將相應的選項配置編譯到內核中。按下M鍵,會將相應的選項配置編譯為內核模塊,菜單選項前面變為< M >。如需搜索,可按下/鍵打開搜索框,然后輸入要搜索的內容。圖 7配置完畢后,選中,按Enter鍵保存配置選項。然后選中,按Enter鍵退出。圖 8備注:若配置有改動,退出menuconfig后腳本會自動將改動保存到原始的defconf文件。配置BuildrootRK3506系列芯片包含RK3506J和RK3506B兩種型號,支持eMMC(系統啟動卡與eMMC共用同一份配置文件)和NAND FLASH兩種啟動模式。請根據實際情況操作,軟鏈接buildroot目錄下的configs文件。Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/Host# cd buildroot/configs/Host# ln -sf rockchip_rk3506_nand_defconfig rockchip_rk3506_defconfigHost# ls -l rockchip_rk3506_defconfig* //確認軟鏈接正確備注:若系統啟動方式為eMMC或系統啟動卡,請將命令中的"nand"更換為"emmc"。圖 9如需修改Buildroot配置,請執行如下命令打開Buildroot配置界面。若無需修改Buildroot配置,可跳過此步驟。Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/Host# ./build.sh buildroot-config:rockchip_rk3506_nand備注:若系統啟動方式為eMMC或系統啟動卡,請將命令中的"nand"更換為"emmc"。圖 10圖 11可通過鍵盤的方向鍵選中對應菜單欄。在被選中的情況下,可按Enter鍵進入子菜單。菜單選項中藍色高亮的字母代表此菜單選項的快捷鍵,可在鍵盤上按下對應的字母快速選中對應的菜單選項。
每個菜單選項前的括號內容表示當前菜單選項的配置狀態。選中對應的菜單選項后,按下Y鍵,會將相應的選項配置編譯到Buildroot中,同時菜單選項前面變為< * >。按下N鍵,不會將相應的選項配置編譯到Buildroot中。如需搜索,可按下/鍵打開搜索框,然后輸入要搜索的內容。
配置完畢后,選中,按Enter鍵保存配置選項。然后選中,按Enter鍵退出。若配置有改動,退出menuconfig后腳本會自動將改動保存到原始的defconf文件。
?
編譯LinuxSDK
若非首次編譯LinuxSDK,且系統鏡像的存儲介質從NAND FLASH切換為eMMC或Micro SD卡(系統啟動卡),需執行如下命令清理文件系統再執行編譯命令。
Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/
Host# ./build.sh clean-rootfs
圖 12
請確保已參照配置編譯選項章節配置LinuxSDK編譯選項,然后在LinuxSDK的源碼目錄下執行如下命令,一鍵編譯生成U-Boot、Kernel、Buildroot、Recovery等鏡像,并打包生成Linux系統鏡像。
Host# ./build.sh
圖 13
預計耗時約2小時后編譯完成,最終在rockdev目錄下生成U-Boot、Kernel、Buildroot、Recovery、Linux系統等鏡像如下所示。
圖?14
圖?15
系統組件鏡像說明
U-Boot開發
U-Boot配置
U-Boot可使用menuconfig進行配置,請參考“配置內核選項”章節,配置menuconfconfig所需依賴環境。
在LinuxSDK源碼目錄下,執行如下命令先編譯一次U-Boot,腳本會在U-Boot目錄下執行"make rk3506_defconfig"生成.config文件。
Host# ./build.sh uboot
圖 16
圖 17
在LinuxSDK源碼目錄下,執行如下命令,進入"u-boot"目錄,通過menuconfig配置U-Boot。
Host# cdu-boot/
Host# make menuconfig
圖 18
圖 19
在U-Boot目錄下執行如下命令,更新defconfig文件。
Host# make savedefconfig
Host# mv defconfig configs/rk3506_defconfig
圖 20
編譯U-Boot
在LinuxSDK源碼目錄下執行如下命令,配置編譯選項,并單獨編譯U-Boot。
Host# ./build.sh uboot
圖 21
圖 22
備注:U-Boot編譯會將"rkbin/bin/rk35/"目錄下的bl31固件一起編譯。編譯后生成U-Boot SPL鏡像rk3506_spl_loader_v1.04.110.bin、rk3506_idblock_v1.04.110.img和U-Boot鏡像uboot.img。
替換U-Boot
替換U-BootSPL
我司已提供SPL鏡像rk3506_spl_loader_v1.04.110.bin和rk3506_idblock_v1.04.110.img文件,位于產品資料“4-軟件資料LinuxU-Bootimageu-boot-2017.09-[版本號]-[Git系列號]”目錄下。
其中rk3506_idblock_v1.04.110.img文件可通過評估板文件系統固化至系統啟動卡或eMMC。rk3506_spl_loader_v1.04.110.bin文件僅支持通過瑞芯微開發工具RKDevTool固化至NAND FLASH或eMMC。
備注:通過命令行替換方式暫未支持固化SPL鏡像至NAND FLASH。通過瑞芯微開發工具RKDevTool替換方式不支持固化SPL鏡像至系統啟動卡。
通過命令行替換
請從系統啟動卡或eMMC啟動系統,將SPL鏡像rk3506_idblock_v1.04.110.img文件拷貝到評估板root目錄下,執行如下命令固化至系統啟動卡或eMMC。
備注:系統啟動卡與eMMC均為同一個設備節點"/dev/mmcblk0"。
Target# dd if=rk3506_idblock_v1.04.110.img of=/dev/mmcblk0 seek=64 conv=fsync
Target# reboot
圖 23
通過瑞芯微開發工具替換
請確保評估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線將評估板USB2.0 OTG接口連接至PC機USB接口。
備注:在進行本次操作前,需確保NAND FLASH或eMMC已固化完整系統鏡像。
請參考《Linux系統固化手冊》文檔安裝瑞芯微開發工具RKDevTool。將SPL鏡像rk3506_spl_loader_v1.04.110.bin文件拷貝至Windows非中文工作目錄下。本次以固化至NAND FLASH為例,固化至eMMC操作方法類似。
打開瑞芯微開發工具,點擊選擇待替換的SPL鏡像rk3506_spl_loader_v1.04.110.bin,并勾選對應選項。
圖 24
長按評估板的USER1(KEY3)按鍵,將評估板上電啟動,等待瑞芯微開發工具提示“發現一個LOADER設備”后松開USER1(KEY3)按鍵。
圖 25
點擊“設備分區表”,在彈出的詢問窗口中點擊“是(Y)”。
圖 26
圖 27
點擊“確定”完成分區表更新。
圖 28
點擊“執行”按鈕,固化鏡像,固化完成后評估板不會自動重啟,依然處于LOADER模式,將評估板重啟即可生效。
圖 29
替換U-Boot鏡像
我司已提供U-Boot鏡像uboot.img文件,位于產品資料“4-軟件資料LinuxU-Bootimageu-boot-2017.09-[版本號]-[Git系列號]”目錄下。
其中uboot.img文件可通過評估板文件系統固化至系統啟動卡或eMMC。亦可通過瑞芯微開發工具RKDevTool固化至NAND FLASH或eMMC。
備注:通過命令行替換方式暫未支持固化U-Boot鏡像至NAND FLASH。通過瑞芯微開發工具RKDevTool替換方式不支持固化U-Boot鏡像至系統啟動卡。
通過命令行替換
請從系統啟動卡或eMMC啟動系統,請將U-Boot鏡像uboot.img文件拷貝至評估板root目錄下,執行如下命令將其固化至系統啟動卡或eMMC。
備注:系統啟動卡與eMMC均為同一個設備節點"/dev/mmcblk0p1"。
Target# dd if=uboot.img of=/dev/mmcblk0p1 conv=fsync
Target# reboot
圖 30
通過瑞芯微開發工具替換
請確保評估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線將評估板USB2.0 OTG接口連接至PC機USB接口。
備注:在進行本次操作前,需確保NAND FLASH或eMMC已固化完整系統鏡像。
請參考《Linux系統固化手冊》文檔安裝瑞芯微開發工具RKDevTool。將U-Boot鏡像uboot.img文件拷貝至Windows非中文工作目錄下。本次以固化至NAND FLASH為例,固化至eMMC操作方法類似。
打開瑞芯微開發工具,點擊選擇待替換的U-Boot鏡像uboot.img,并勾選對應選項。
圖 31
長按評估板的USER1(KEY3)按鍵,將評估板上電啟動,等待瑞芯微開發工具提示“發現一個LOADER設備”后松開USER1(KEY3)按鍵。
圖 32
點擊“設備分區表”,在彈出的詢問窗口中點擊“是(Y)”。
圖 33
圖 34
點擊“確定”完成分區表更新。
圖 35
點擊“執行”按鈕,固化鏡像,固化完成后評估板會自動重啟,等待評估板重啟進入系統后,瑞芯微開發工具提示“發現一個ADB設備”即可生效。
圖 36
Kernel開發
Kernel配置
設備樹配置
請參考“配置編譯設備樹文件”章節配置設備樹文件。
Linux內核選項配置
請參考“配置內核選項”章節配置內核選項。
編譯Kernel
在LinuxSDK源碼目錄下執行如下命令,配置編譯選項,單獨編譯Linux內核。
Host# ./build.sh kernel
圖 37
圖 38
替換Kernel鏡像
我司已提供Linux內核鏡像文件,位于產品資料“4-軟件資料LinuxKernelimagelinux-6.1.99-[版本號]-[Git系列號]”目錄下。
其中boot-nand.img文件可通過評估板文件系統固化至NAND FLASH或系統啟動卡。亦可通過瑞芯微開發工具RKDevTool固化至NAND FLASH。
boot-emmc.img文件可通過評估板文件系統固化至eMMC。亦可通過瑞芯微開發工具RKDevTool固化至eMMC。
備注:通過瑞芯微開發工具RKDevTool替換方式不支持固化Linux內核鏡像至系統啟動卡。
通過命令行替換
請將Linux內核鏡像拷貝至評估板root目錄下(鏡像名稱請以實際情況為準),執行如下命令固化至NAND FLASH。如需固化至系統啟動卡或eMMC,請將命令中的"mtdblock4"替換為"mmcblk0p3"。
Target# dd if=boot.img of=/dev/mtdblock4conv=fsync
Target# reboot
圖 39
通過瑞芯微開發工具替換
請確保評估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線將評估板USB2.0 OTG接口連接至PC機USB接口。
備注:執行本操作前,需確保NAND FLASH或eMMC中已固化完整系統鏡像。
請參考《Linux系統固化手冊》文檔安裝瑞芯微開發工具RKDevTool。將Linux內核鏡像文件拷貝至Windows非中文工作目錄下。本次以固化至NAND FLASH為例,固化至eMMC操作方法類似。
打開瑞芯微開發工具,點擊選擇待替換的Linux內核鏡像boot.img,并勾選對應選項。
圖 40
長按評估板的USER1(KEY3)按鍵,將評估板上電啟動,等待瑞芯微開發工具提示“發現一個LOADER設備”后松開USER1(KEY3)按鍵。
圖 41
點擊“設備分區表”,在彈出的詢問窗口中點擊“是(Y)”。
圖 42
圖 43
點擊“確定”完成分區表更新。
圖 44
點擊“執行”按鈕,固化鏡像,固化完成后評估板會自動重啟,等待評估板重啟進入系統后,瑞芯微開發工具提示“發現一個ADB設備”即可生效。
圖 45
Rootfs開發
Rootfs源碼說明
Rootfs(根文件系統)是Linux內核啟動后掛載的第一個文件系統,它包含了Linux系統啟動和運行所必需的所有文件和目錄。我司的根文件系統基于LinuxSDK源碼的buildroot進行編譯開發。
圖 46
Rootfs配置
請參考“配置Buildroot”章節,并根據評估板系統鏡像存儲介質軟鏈接buildroot目錄下的configs文件。
編譯Rootfs
如需將系統鏡像的存儲介質從NAND FLASH切換到eMMC/SD(或從eMMC/SD切換到NAND FLASH),需要執行如下命令清理文件系統再執行編譯命令。
Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/
Host# ./build.sh clean-rootfs
圖 47
配置好Rootfs后,在LinuxSDK源碼目錄下執行如下命令,配置編譯選項,單獨編譯文件系統。
Host# cd /home/tronlong/RK3506/rk3506_linux6.1_release_v1.1.0/
Host# ./build.sh buildroot
圖 48
圖 49
替換Rootfs鏡像
我司已提供文件系統鏡像文件,位于產品資料“4-軟件資料LinuxFilesystemimagebuildroot-2024.02-[版本號]-[Git系列號]”目錄下。
其中rootfs-nand.img文件可通過瑞芯微開發工具RKDevTool固化至NAND FLASH。rootfs-emmc.img文件可通過瑞芯微開發工具RKDevTool固化至eMMC。
備注:根文件系統暫不支持通過命令行替換的方式固化Rootfs鏡像,僅支持通過瑞芯微開發工具替換。執行本操作前需確保NAND FLASH或eMMC已固化完整系統鏡像。
請確保評估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線將評估板USB2.0 OTG接口連接至PC機USB接口。參考《Linux系統固化手冊》文檔安裝瑞芯微開發工具RKDevTool。將Rootfs鏡像rootfs-nand.img文件拷貝至Windows非中文工作目錄下。本次以固化至NAND FLASH為例,固化至eMMC操作方法類似。
打開瑞芯微開發工具,點擊選擇待替換的Rootfs鏡像rootfs-nand.img,并勾選對應選項。
圖 50
長按評估板的USER1(KEY3)按鍵,將評估板上電啟動,待瑞芯微開發工具提示“發現一個LOADER設備”后松開USER1(KEY3)按鍵。
圖 51
點擊“設備分區表”,在彈出的詢問窗口中點擊“是(Y)”。
圖 52
圖 53
點擊“確定”完成分區表更新。
圖 54
點擊“執行”按鈕,固化鏡像,固化完成后評估板會自動重啟,等待評估板重啟進入系統后,瑞芯微開發工具提示“發現一個ADB設備”即可生效。
圖 55
關注微信公眾號Tronlong創龍科技,可獲取更多更新的干貨。
審核編輯 黃宇
-
處理器
+關注
關注
68文章
19878瀏覽量
234797 -
CAN
+關注
關注
57文章
2916瀏覽量
467517 -
開發板
+關注
關注
25文章
5654瀏覽量
104231 -
瑞芯微
+關注
關注
25文章
572瀏覽量
52409
發布評論請先 登錄
評論