前 言
本文涵盖了Linux系统开发的各个环节,包括开发环境的搭建、LinuxSDK的配置与编译、U-Boot、Kernel及Rootfs的开发,以及系统镜像的替换方法。同时介绍系统镜像的打包与解包、关键计算单元(CPU、NPU)和内存子系统(DDR)性能策略配置与管理的详细步骤,旨在帮助开发者完成系统开发。
开发环境
Windows开发环境:Windows10 64bit
Linux开发环境:VMware16.2.5、Ubuntu22.04 64bit
LinuxSDK开发包:LinuxSDK-[版本号](基于rv1126b_linux6.1_release_v1.2.0)
评估板系统版本:U-Boot 2017.09、Linux-6.1.141、Buildroot-2024.02
交叉编译工具链:
应用开发:aarch64-buildroot-linux-gnu-gcc(版本为13.4.0,通过LinuxSDK编译生成)
U-Boot、内核开发:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu
备注:本文基于16GByte eMMC、2GByte LPDDR4X配置核心板进行演示。
术语表
为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

1 LinuxSDK配置与编译
请先参考《开发环境搭建》文档正确安装LinuxSDK和依赖软件,再执行以下步骤。
1.1配置编译选项
进入LinuxSDK源码目录,配置LinuxSDK编译选项。
Host# cd /home/tronlong/RV1126B/rv1126b_linux6.1_release/
Host# ./build.sh lunch:tl1126_evm_defconfig

1.1.1配置编译设备树文件
我司提供的设备树文件位于LinuxSDK源码"kernel/arch/arm64/boot/dts/rockchip"目录。设备树文件根据评估板部分复用外设功能进行区分。具体说明如下表。

其中,ETH1 RGMII和ETH2(FEPHY)只能选择支持其中一个,tl1126-evm.dts设备树文件通过修改宏定义选择支持ETH1 RGMII或ETH2(FEPHY)。设备树默认支持ETH1 RGMII,如需启用ETH2(FEPHY),可参考如下方法修改设备树文件。
修改如下内容:
#define ETH_RGMII_1000M 0 //设置宏为0,关闭ETH1 RGMII
#define ETH_FEPHY_100M 1 //设置宏为1,开启ETH2(FEPHY)

评估板使用的设备树文件存在多级的依赖关系,具体如下表所示。表中的下一级设备树文件,被上一级设备树文件所引用。

LinuxSDK默认编译的设备树文件为tl1126-evm.dts,如需替换为支持对应功能的其他设备树,请参考以下步骤修改。本次操作以替换为tl1126-evm-mipi-lcd设备树(支持MIPI LCD显示)进行演示,其他设备树修改方法同理。
进入LinuxSDK源码目录执行如下命令,进入SDK配置界面。
Host# ./build.sh config

选择"Kernel",按Enter键进入到下一级配置选项。

选择"device-tree script name",按Enter键后,进入编辑页面。

进入编辑页面将"tl1126-evm"修改为"tl1126-evm-mipi-lcd",选择"Ok",按Enter键退出编辑页面。

选择"Save",按Enter键保存配置。

在弹出的界面中按选择"Ok",按Enter键保存。

在弹出的界面中按Enter键完成保存操作,修改会自动保存至"device/rockchip/.chips/rv1126b/tl1126_evm_defconfig"下的配置文件中。

1.1.2配置内核选项
我司默认配置的是Linux内核(推荐使用)。如需修改内核编译选项配置,请继续执行"./build.sh kernel-config"命令打开图形配置界面。此命令通过读取当前目录的.config文件,以图形界面的方式提供内核编译配置查看和修改方法。如无需修改内核编译选项配置,可跳过此步骤。
menuconfig是一套图形化的配置工具,需要ncurses库支持。ncurses库提供了一系列的API函数供调用者生成基于文本的图形界面,因此需要先执行如下命令通过网络安装ncurses库。
**Host#**sudo apt-get install libncurses5-dev

**Host#**sudo apt-get install libncursesw5-dev

ncurses库安装完成后,进入LinuxSDK源码目录,配置LinuxSDK编译选项。
Host# cd /home/tronlong/RV1126B/rv1126b_linux6.1_release/
Host# ./build.sh tl1126_evm_defconfig

执行如下命令进入内核配置菜单。
Host# ./build.sh kernel-config


可通过键盘的方向键选中对应菜单栏。在**<Select>** 被选中的情况下,可按Enter键进入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应的字母快速选中对应的菜单选项。
每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y 键,会将相应的选项配置编译到内核中,同时菜单选项前面变为**< * >** 。按下N 键,不会将相应的选项配置编译为内核模块。按下M 键,会将相应的选项配置编译为内核模块,菜单选项前面变为**< M >** 。如需搜索,可按下**/**键打开搜索框,然后输入要搜索的内容。
配置完毕后,选中**<Save>** ,按Enter 键保存配置选项。然后选中**<Exit>** ,按Enter键退出。

备注:若配置有改动,退出menuconfig后脚本会自动将改动保存到原始的defconfig文件。原始的defconfig文件位于LinuxSDK源码"kernel/arch/arm64/configs/rockchip_linux_defconfig"目录下。
1.1.3配置Buildroot
如需修改Buildroot配置,请执行如下命令打开Buildroot配置界面。若无需修改Buildroot配置,可跳过此步骤。
Host# cd /home/tronlong/RV1126B/rv1126b_linux6.1_release/
Host# ./build.sh buildroot-config


可通过键盘的方向键选中对应菜单栏。在**<Select>** 被选中的情况下,可按Enter键进入子菜单。菜单选项中蓝色高亮的字母代表此菜单选项的快捷键,可在键盘上按下对应的字母快速选中对应的菜单选项。
每个菜单选项前的括号内容表示当前菜单选项的配置状态。选中对应的菜单选项后,按下Y 键,会将相应的选项配置编译到Buildroot中,同时菜单选项前面变为**< * >** 。按下N 键,不会将相应的选项配置编译到Buildroot中。如需搜索,可按下**/**键打开搜索框,然后输入要搜索的内容。
配置完毕后,选中**<Save>** ,按Enter 键保存配置选项。然后选中**<Exit>** ,按Enter键退出。若配置有改动,退出menuconfig后脚本会自动将改动保存到原始的defconf文件。
1.2编译LinuxSDK
请确保已参照"配置编译选项"章节配置LinuxSDK编译选项,然后在LinuxSDK的源码目录下执行如下命令,一键编译生成U-Boot、Kernel、Buildroot、Recovery等镜像,并打包生成Linux系统镜像。
Host# ./build.sh

预计耗时约2小时后编译完成,最终在rockdev目录下生成U-Boot、Kernel、Buildroot、Recovery、Linux系统等镜像如下所示。


1.3系统组件镜像说明
