基于 RV1126B 评估板的 Linux 系统开发详解(一)

前 言

本文涵盖了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系统组件镜像说明

相关推荐
普中科技20 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 48 章 FATFS 文件系统实验
stm32·单片机·嵌入式硬件·文件系统·开发板·fatfs·普中科技
凡人叶枫1 天前
Effective C++ 条款13:以对象管理资源(RAII)
java·linux·开发语言·c++·嵌入式开发
yunThinker1 天前
杰理AC695X Linein模式执行流程详解
嵌入式开发·音频开发·杰理ac695x·linein
ryanuo72 天前
Mac(M芯片)上进行嵌入式开发遇到的问题
嵌入式硬件·macos·开发板
Deepoch2 天前
Deepoc VLA开发板:无人机近距接触式精细作业与贴壁导航
无人机·开发板·具身模型·deepoc
凡人叶枫3 天前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
Silicore_Emma3 天前
芯谷科技—5A低压差正电压可调稳压器D1084
ldo稳压器·汽车电子·工业控制·消费电子·芯谷科技·(ldo)三端稳压器·可调稳压器
俊基科技3 天前
智慧矿山通信升级:AP-0316 语音处理模组破解矿井对讲降噪、回声与远场拾音难题
语音识别·硬件开发·ai降噪·智慧矿山·回音消除·矿场通信
Deepoch4 天前
Deepoc VLA开发板:除草机器人的持续学习与协同作业系统
人工智能·学习·机器人·开发板·具身模型·deepoc
凡人叶枫4 天前
Effective C++ 条款03:尽可能使用 const
linux·开发语言·c++·嵌入式开发