引言
SE1000,又被称为龙鹰一号,是吉利旗下的湖北芯擎科技设计的一款IC,设计之初是用于吉利车机,此芯片性能强悍,可以对标高通8155平台。
近期安谋科技、芯擎科技和瑞莎计算机三方携手,推出了基于SE1000的工业开发板,也就是本次测评的主角SiRider S1,SE1000属于车规级SOC,可以满足工业场合的各种指标。下面笔者将用一系列文章介绍SiRider S1的开发流程。
硬件介绍
板子的正反面如下图所示
主控SOC型号为CSEC1000BABRT,也就是SE1000
主要特性
CPU两个Custer,Cluster0: 4个A76,最大频率2.4G,2个A55,最大频率1.8G;Cluster1: 2个 A55,最大1.8G;GPU包含3D GPU0,3D GPU1 和 2D/2.5D 图形核心,NPU包含两个NPU核心;内存支持2x32bit
LPDDR4/LPDDR5 存储支持UFS3.0和EMMC;支持4k编解码;支持多屏异显;通信接口若干
其框架如下图所示
DDR型号K3LKCKC0BM,来自三星半导体,规格为LPDDR5,容量64Gbit,带宽32bit,速度6400Mbps。板上总共有两片
UFS型号KLUDG4UHDC,来自三星半导体,规格为UFS3.1,容量128GB
板上没有EMMC,但是带了一个TF卡槽,使用的就是那一组SDIO接口
板上有两组千兆以太网口,phy芯片型号RTL8211FD,来自realtek
一个DP转接出来的HDMI接口,转换芯片为RA620
使用VL822+GL3525将SOC的一个USB3.2拓展为4个USB3.0接口和若干个USB2.0接口
使用MCP2515通过SPI拓展CAN接口
音频codec型号ES8316,来自顺芯
其余拓展接口通过排针扩展
板子框架如下图所示
SDK部署
瑞莎计算机提供了在芯擎科技公版sdk基础上修改而来的开发板sdk,下载地址为
https://gitlab.com/siengine-ubuntu-sdk/manifests
这个工程使用repo管理,首先要找到一个repo工具,这个工具可以从google官网下载,也可以从清华源下载。下载的过程略过,下载之后得到.repo文件夹一个,里面还有一个repo文件夹
然后拉取sdk,拉取命令为
-b main -m
se1000-ubuntu-ser1.1.xml
这里不建议直接用系统自带的repo命令,系统自带的命令会尝试从google服务器更新自身,由于网络原因基本无法更新成功的。
拉取之后的目录如下
这个manifest.xml就是各个git仓库的信息。拉取manifest之后,在此工程目录下再执行
python3 .repo/repo/repo sync -j4
来拉取各个git仓库
拉取之后的工程目录如下
另外这个toolchain目录拉取不了,这里面是交叉工具链,可以从arm官网下载。下载与解压命令如下
cd toolchain
tar -jxf gcc-arm-none-eabi-10.3-2021.10-x86\_64-linux.tar.bz2
tar -xf
gcc-arm-10.3-2021.07-x86\_64-aarch64-none-linux-gnu.tar.xz
tar -xf
gcc-arm-10.3-2021.07-x86\_64-arm-none-linux-gnueabihf.tar.xz
执行完上述命令后,sdk目录结构如下
SDK构建
要构建此SDK,需要使用ubuntu 20.04以上的环境,因为这个SDK里面的rootfs就是2004版本的ubuntu,使用低版本的ubuntu,会有部分软件不兼容的问题。
在sdk目录下执行
source env.sh
然后执行sebuilder -h
可以列举出具体命令
板上使用的存储器为ufs。因此使用的构建流程是构建各个lun,或者直接使用all参数,但是第一次构建通常会报错,这里建议还是一个个lun来
首先是lun0。这个lun0是4 x A76+2xA55那一组cluster运行的系统,包含ubuntu
kernel和ubuntu rootfs。构建命令为
sebuilder lun0
其中构建ubuntu过程中会出现各种错误,而默认的构建流程里面,每一次构建前,会对kernel执行clean操作,这样下次构建又要构建一次kernel,浪费时间,建议将这个脚本修改一下
构建完成后会显示如下信息
然后构建lun1,构建命令为
sebuilder lun1
这个是bl21的固件,bl21主要负责ddr和ufs的初始化,其源码在
src/arm-trusted-firmware
下面,这里有一部分是开源的源码,用于执行DDR初始化,另外一部分是DDR初始化参数,这部分是不开源的,只是提供了二进制文件
然后构建lun2,构建命令为
sebuilder lun2
这个是第二级bootloader,也就是atf/uboot的固件,以及cortex R52 /cortex M4核心的固件
其中uboot的源码位于src/u-boot
uboot的构建会出来bl33和bl33c的固件,这里猜测分别是两组cluster的固件
然后bl31和bl31c是atf固件,源码位于
src/arm-trusted-firmware
构建时参数选择的是bl31和bl31c
bl22源码也是
src/arm-trusted-firmware
构建时参数选择的是bl22
r52的源码位于
src/safetyisland
m4没有源码,可执行程序在
src/m4firmware
然后构建lun3,构建命令为
sebuilder lun3
这个是2xA55那一组cluster运行的系统,包含buildroot kernel和buildroot rootfs。
buildroot源码位于src/buildroot
另外,执行lun3构建时,需要先执行unset LD\_LIBRARY\_PATH
这个buildroot的构建难点在于它要下载大量的软件包,由于某些原因,部分国外的软件源无法拉取,需要从国内源找替代的,因此比较费事
lun5无法构建,需要用厂家提供构建好的。lun5里面全部是ddr的training文件,其路径位于
src/arm-trusted-firmware/drivers/ddr/training
这个跟板子走线强相关,sdk默认构建出来的是芯擎科技evb开发板的,跟这个SiRider S1有差异。lun5固件可以从
https://docs.radxa.com/sirider/s1/low-level-dev/image\_build
下载,笔者的板子是8GB的,使用的是这个文件
最终再次执行一次
sebuilder all
看下还有没遗漏的。如果显示以下信息,说明构建已经完成了
固件存放路径为
deploy/build