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