跳到主要内容

1. ArmSom-SDK Release

armsom-sdk是基于瑞芯微通用Linux SDK工程的定制版本,为RK3588/RK3576主控开发板提供完整的嵌入式Linux BSP支持。

2. SDK开发环境搭建

开发环境说明如下: armsom-sdk是基于Ubuntu系统开发测试的,在开发过程中,主要是用Ubuntu22.04版本, 推荐用户使用Ubuntu20.04或Ubuntu22.04。 PC系统默认使用Win11,在使用RockChip的烧录工具时需要使用到Windows系统。 硬件配置推荐:64位系统,硬盘空间⼤于80G。如果您进⾏多个构建,将需要更⼤的硬盘空间。

2.1 安装SDK依赖的软件包

安装SDK构建所需要的软件包,整体复制下面内容到终端中安装:

sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
libmpc-dev bc python-is-python3 python3-pip python2 u-boot-tools curl \
python3-pyelftools dpkg-dev

2.2 安装repo

armsom-sdk是⽤repo来下载、管理项⽬的软件仓库

mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo PATH=~/bin:$PATH >> ~/.bashrc
source ~/.bashrc

执行完上面的命令后来验证repo -v是否安装成功能正常运行

2.3 Git配置

设置自己的git信息,以确保后续拉取代码时正常进行,如果不需要提交代码的话可以随意设置用户名和邮箱地址

git config --global user.name "your name"
git config --global user.email "your mail"

2.4 切换Python 3

#查看当前Python版本 python -V 若返回的版本号为Python3版本,则无需再切换Python版本。若为Python2版本或未发现python,则可以用以下方式切换:

#查看当前系统安装的Python版本有哪些
ls /usr/bin/python*

#将python链接到python3
sudo ln -sf /usr/bin/python3 /usr/bin/python

#重新查看默认Python版本
python -V

3. SDK源码获取

armsom-sdk的代码被划分为了若干git仓库分别进行版本管理, 可以使用repo工具对这些git仓库进行统一的下载,提交,切换分支等操作。

运行以下命令,将在当前用户的家目录下创建一个名为armsom-sdk的目录,用来放入SDK源码。

mkdir ~/armsom-sdk
cd armsom-sdk
repo init -u https://github.com/as-jackson/manifests.git -b linux -m armsom_linux_generic.xml
.repo/repo/repo sync -c -j4

4. SDK更新

我们会对armsom-sdk不断更新,将修改的内容实时同步到Github,欢迎广大开发爱好者共同来管理维护开源代码, 需要在本地同步更新内容,则可以借助repo或git来实现

4.1 使用repo更新整个SDK

首先要更新.repo/manifests,里面保存了repo的配置文件,记录了仓库的版本信息。

# 进入.repo/manifests目录
cd .repo/manifests

# 切换分支到Linux
git checkout linux

# 拉取最新的manifests
git pull

#进入SDK顶层文件夹
cd ~/armsom-sdk

# 同步远端仓库
.repo/repo/repo sync -c

4.2 使用Git更新单独的源码仓库

有时只想更新某个仓库,而不是去更新整个SDK。 或者已经对SDK的某些仓库做出了修改,使用repo同步的话就会失败。 此时就需要对单个仓库进行更新了 这里以debain12仓库为例:

# 进入debain12目录下
cd debain12

# 检出到对应仓库的默认分支
git checkout lbc-develop-5.10

# 拉取git仓库
git pull

5. 自动构建固件

在SDK顶层文件夹下,执行以下命令,以选择要构建的板卡主芯片型号和SDK的配置文件。 执行下面命令选择配置芯片以及配置文件 ./build.sh chip 当选择完配置文件以后,会使用粉色提示字体提示当前配置文件所用的内核版本 一键编译u-Boot,kernel,Rootfs并打包为update.img镜像 ./build.sh 构建好的镜像保存在rockdev/目录下。

6. 分步构建固件

在初次编译固件时需要运行一键构建固件,但是在在进行固件开发时,建议使用分区构建,使用SDK单个模块构建的功能。

6.1 选择SDK配置文件

首先,还是要选择SDK的配置文件,如果已经自动编译过则这一步可以跳过,这里以sige7板卡的debian系统xfce桌面镜像为例
选择SDK配置文件
./build.sh armsom-sige7_rk3588_debian_xfce_linux6.1_defconfig

6.2 U-Boot构建

./build.sh uboot
构建生成的U-boot镜像为u-boot/uboot.img

6.3Kernel构建

boot分区内核镜像,先生成内核deb包,然后再编译内核并将生成的deb包打包进boot分区。 按顺序执行以下命令,将自动完成 kernel 的构建及打包。 ./build.sh kernel
构建生成的kernel镜像为kernel/extboot.img

6.4 rootfs构建

SDK主要支持Ubuntu、Debian,当然其他系统也支持但是不在此说明 Ubuntu、Debian支持不同的桌面版本,在前面选择SDK配置文件时已经指定了
构建Debian
./build.sh debian
构建Ubuntu
./build.sh ubuntu
系统镜像的名称重命名为linaro-(SOC型号)-(桌面版本)-rootfs.img,如linaro-rk3576-gnome-rootfs.img

6.5 镜像打包

当u-boot,kernel,Rootfs都构建完成以后,需要再执行 ./build.sh firmware 进行固件打包, 主要是检查分区表文件是否存在,各个分区是否与分区表配置对应,并根据配置文件将所有的文件复制或链接到rockdev/内。
固件打包
./build.sh firmware
生成update.img
./build.sh updateimg