@

机缘巧合最近接触了一下瑞芯微的平台,从拿到sdk到完整编译跑起来,还是遇到了一些坑,分享给大家。

rk3568

瑞芯微出品的RK3568是一款定位中高端的通用型SoC,采用22nm先进制程工艺,主要面向工业互联网、HMI、NVR存储、车载中控、工业网关等领域。

RK3568兼具CPU、GPU、NPU、VPU于一身,具体性能如下:

CPU

四核64位Cortex-A55

主频最高2.0GHz

22nm先进工艺

GPU

Mail-G52

支持OpenGLES 1.1/2.0/3.2,OpenCL2.0,Vulkan1.1

内嵌高性能2D加速硬件

NPU

集成高效能AI加速器RKNN NPU

支持1Tops算力

支持Caffe/TensorFlow等主流架构模型的一键切换

VPU

硬解码H.264 4K@30fps、H.265 4K@60fps

硬编码H.264/H.265 1080P@60fps

8M ISP,支持HDR

一、编译环境要求

  1. 400G+硬盘
  2. 32G内存
  3. ubuntu16.04

二、编译前准备

0)开发板型号

本文采用公板,参数如下

soc  : rk3568
board: EVB1-DDR4-V10
软 件:Android 11
Linux:4.19.232

1)安装第三方编译工具

有一些交叉编译工具sdk中已经全部包含,有一些第三方工具需要自己安装,

物理隔离的开发环境,可能会有一些麻烦,我是自己制作了一个虚拟机,然后确认编译没问题了,才把环境再导入

安装的库:

cp mkimage.sh kernel/
sudo apt-get install openjdk-8-jdk
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
sudo apt-get install lib32ncurses5-dev libx11-dev lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip python-pyelftools
sudo apt-get install python3-pyelftools device-tree-compiler libfdt-dev libfdt1
sudo apt-get install libssl-dev liblz4-tool python-dev

【x11protocore-dev ----有问题】

下载地址

https://launchpadlibrarian.net/340529646/x11proto-core-dev_7.0.31-1~ubuntu16.04.2_all.deb

通过下面命令

sudo dpkg -i x11proto-core-dev_7.0.31-1_ubuntu16.04.2_all.deb

2)设置adb路径

【如果windows已经支持adb命令,该步骤可以省略】

3)安装USB驱动DriverAssitant_v5.1.1

DriverAssitant_v5.1.1安装包文件路径如下:

rk_android11.0_sdk_220718\RKTools\windows\DriverAssitant_v5.1.1.zip

安装下载镜像的USB 驱动

按住音量+ 按键,然后开启电源,就可以在设备管理器看到如下设备:

三、快速编译命令

官方给的文档还算详细,

对于刚接触瑞芯微平台的工程师,可能还是希望直接使用几个常用命令,而不时去看冗繁的手册。

至少我就是这样。

我把操作的整个命令都整理了一下。

0. 第一次拿到sdk操作步骤

一口君拿到的是sdk,直接解压缩即可

【切记虚拟机硬盘留够400G以上空间】

cat rk_android11.0_sdk_xxxxx.tgz | tar -zx
cd rk_android11.0_sdk_xxxxx/
.repo/repo/repo sync -l

联网状态下可以输入下面命令【实测,即使没有网络,不输入这个命令也没影响】

.repo/repo/repo sync -c

1. 一键整体编译

设置环境变量:

source build/envsetup.sh
lunch rk3568_r-userdebug

编译:

./build.sh -AUCKu

编译到设备树的时候会要求选择电压,

一共6个值需要设置,

具体值需要查看设备树文件中IO Power Domain的信息

vim arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi +1538

根据设备树的电压来设置即可,否则出错。

编译过的镜像位于以下目录:

rk_android11.0_sdk_220718\rockdev\Image-rk3568_r

2. 单独编译内核

单独编译内核之前,必须要先整体编译通过

source build/envsetup.sh
lunch rk3568_r-userdebug
cd kernel
make ARCH=arm64 rockchip_linux_defconfig rk356x_evb.config android-11.config

上面3个只需要执行一次,后面修改了内核源程序,只需要执行下面一条命令即可

make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3568_r/boot.img rk3568-evb1-ddr4-v10.img -j24

编译完毕,直接烧录kernel目录下的

kernel/boot.img

【烧写时请先加载分区表(parameter.txt)】

需要打开或者关闭某个内核模块,修改下面文件,将对应模块的宏开关设置为y即可

rockchip_linux_defconfig

修改完毕

必须重新执行以下命令:

make ARCH=arm64 rockchip_linux_defconfig rk356x_evb.config android-11.config

3. 单独编译安卓

source build/envsetup.sh
lunch rk3568_r-userdebug
./build.sh -A

编译完毕,烧录

rockdev/Image-rk3568_r/super.img

4. 编译设备树

source build/envsetup.sh
lunch rk3568_r-userdebug
./build.sh -KAp

编译完毕,除了烧录dtbo.img,还必须烧录boot.img

rockdev/Image-rk3568_r/boot.img
rockdev/Image-rk3568_r/dtbo.img

此处不知道什么原因,不用这个命令编译,看到的设备树文件日期总是不对

有确定知道的老铁可以给我留言

四、固件烧录

1)烧录工具AndroidTool

Android11的USB驱动DriverAssitant需要更新到V5.1.1版本。

​解压双击安装即可​。

Windows烧写工具AndroidTool_Release_v2.93:

RKTools/windows/AndroidTool/AndroidTool_Release_v2.93.zip



2)选择分区表

烧录之前,需要导入分区表,

右击空白处,选择导入配置:

修改显示文件类型为 All File(.

然后找到sdk文件目录的parameters.txt

3)选择镜像并烧录

按住音量+ 按键,然后开启电源上电,出现发现一个LOADER设备即可

选择对应的镜像,点击执行即可烧录img



【此次只用到7 9 15】

五、遇到的问题

1. 编译不过去

pointer-constant -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-string-compare -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-pessimizing-move -MD -MF 'out/soong/.intermediates/hardware/interfaces/radio/1.5/android.hardware.radio@1.5/android_vendor.30_arm_armv8-2a_cortex-a55_static/obj/.intermediates/hardware/interfaces/radio/1.5/android.hardware.radio@1.5_genc++/gen/android/hardware/radio/1.5/RadioIndicationAll.o'.d -o 'out/soong/.intermediates/hardware/interfaces/radio/1.5/android.hardware.radio@1.5/android_vendor.30_arm_armv8-2a_cortex-a55_static/obj/.intermediates/hardware/interfaces/radio/1.5/android.hardware.radio@1.5_genc++/gen/android/hardware/radio/1.5/RadioIndicationAll.o' 'out/soong/.intermediates/hardware/interfaces/radio/1.5/android.hardware.radio@1.5_genc++/gen/android/hardware/radio/1.5/RadioIndicationAll.cpp'
07:03:22 ninja failed with: exit status 1 #### failed to build some targets (10:10 (mm:ss)) #### Build android failed!

解决方案:

升级内存条到32G,调整虚拟机vmware内存

2. 瑞芯微ethernet不能使用

公版有2个以太口,其中1个默认是eth0,一个默认是eth1,

网口连接到家用无线路由器,经测试,

  1. 自带设置ethernet的程序,可以设置静态地址到eth0,
  2. 但是无法通过dhcp动态获取IP地址,
  3. 无法ping通网关192.168.0.1

修改1:

修改如下文件

vim frameworks/opt/net/ethernet/java/com/android/server/ethernet/EthernetNetworkFactory.java +484

修改代码如下:

修改2:

修改设备树文件:

vim arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi +1538
1541 1543行修改为1.8v

使用网络测试APP,测试网络,可以ping通网关:



强烈推荐这块用于在手机上测试的APP



修改说明

由厂商提供的电路图可知:IO Power Domain Map

IO4、 IO6的电压应该是1.8V

同时文档《Rockchip_Developer_Guide_Linux_IO_DOMAIN_CN.pdf》

也有相关说明:



【其他平台没有遇遇到类似操作,被坑了将近一周】

六、欢迎大家一起学习进步

后续一口君还会陆续更新瑞芯微相关的一些学习心得,

分享到一口君的瑞芯微粉丝群,

有兴趣的朋友,可以加我:yikoupeng

瑞芯微rk356x板子快速上手的更多相关文章

  1. 瑞芯微RK3399宣布系统开源,进入百余种行业市场!

    集微网消息,2月24日瑞芯微官方突然宣布, Rockchip RK3399Linux系统开源!作为Rockchip旗舰级芯片,RK3399具有高性能.高扩展.全能型应用特性. 这一重磅消息立马刷爆朋友 ...

  2. Linux下更新瑞芯微固件

    有这样的需求,是因为提供的BSP中是在windows下烧写的系统.我直接在linux下开发,每次编译后代码都要在windows下烧写,是一个很麻烦的事情.为了解决这个问题我尝试着用VirtualBox ...

  3. 9.7寸RK3188瑞芯微四核爱立顺M33平板电脑 - 深圳吉祥星晨科技有限公司 - 华强商情网

    9.7寸RK3188瑞芯微四核爱立顺M33平板电脑 - 深圳吉祥星晨科技有限公司 - 华强商情网 欢迎加入 2000人超级QQ群,平板电脑行业交流群:221371451,平板电脑产品及报价群:5765 ...

  4. 瑞芯微发布最新旗舰应用处理器-RK3588

    在瑞芯微电子第四届“开发者之春”大会上,瑞芯微推出了新一代8nm旗舰处理器-RK3588 这个芯片将采用8nm 制程工艺.基于A76+A55 内核组合,具备4K UI性能.8K VPU,拥有NPU2. ...

  5. 瑞芯微ROCK960 RK3399固件烧录总结

    1 下载固件 进入瑞芯微ROCK960下载主页 https://www.96boards.org/documentation/consumer/rock/downloads/ 选择os固件, Debi ...

  6. 瑞芯微RK3399六核-迅为3399开发板介绍

    迅为3399开发板基于瑞芯微的RK3399处理器设计,Rockchip RK3399是瑞芯微推出的一款低功耗.高性能的应用处理器芯片,该芯片基于Big.Little架构,即具有独立的NEON协同处理器 ...

  7. 宁远电子瑞芯微RK3399开发板DLT3399A底层接口调用

     GPIO口控制 在DLT3399A板卡正面写有GPIO和UART4_1V8丝印的接口,并看到板子反面对应的引脚gpio丝印,选择相对应的gpio控制节点,接口位置如下图所示: 1.dlt3399a上 ...

  8. 瑞芯微RK3188如何配置USB摄像头支持

  9. 瑞芯微RK3188摄像头相关参数的配置

  10. 瑞芯微RKnanC芯片处理器介绍

    RKnanC是一种低成本.低功耗.高效率的数字多媒体芯片,它是基于ARM的低功耗处理器结构和硬件加速器.它是专为便携式音频产品应用,如MP3播放器等. RKnanC可以支持各种音频标准的解码,如MP3 ...

随机推荐

  1. 微信小程序自动化分析_包含执行设备及对应的微信版本

    背景介绍: 微信小程序是基于腾讯自研 X5 内核,不是谷歌原生 webview. 实现方式: 1.小程序自动化sdk,使用自动化sdk,需要有小程序的开发者权限,以及参考的资料较少,2.选择采用app ...

  2. libevent之bufferevents

    目录 Bufferevents:概念和基础知识 Bufferevents 和 evbuffers 回调和水印 延迟回调 缓冲区事件的选项标志 使用基于套接字的缓冲区事件 创建基于套接字的缓冲区事件 在 ...

  3. Linux 内核:设备驱动模型(1)sysfs与kobject基类

    Linux 内核:设备驱动模型(1)sysfs与kobject基类 背景 学习Linux 设备驱动模型时,对 kobject 不太理解.因此,学习了一下. 现在我知道了:kobj/kset是如何作为统 ...

  4. ZYNQ:加速 PetaLinux 工程编译、复制 PetaLinux 工程

    PetaLinux介绍 PetaLinux是Xilinx基于Yocto推出的Linux开发工具.Yocto是业界主流的Linux发行版的构建工具,它不仅可以从源代码编译Linux 内核,还可以编译Li ...

  5. ZYNQ:使用 PetaLinux 构建Linux项目

    参考文档:ug1144-petalinux-tools-reference-guide.pdf 环境安装 tofrodos iproute2 gawk gcc g++ git make net-too ...

  6. Java中代码Bug记录--泛型失效、数组删除、HashMap死循环

    最近在工作的过程中,遇到了不少奇怪自己或者同事的Bug,都是一些出乎意料的,不太容易发现的,记录一下来帮助可能也遇到了这些Bug的人 1. 编译时泛型校验失效 Map<String, Strin ...

  7. c 语言学习第四天

    if 语句 格式: // 1 // 其他语句... if(表达式){ // 其他语句... } // 其他语句... // 2 if(表达式){ }else{ } // 3 if(表达式1){ }el ...

  8. oeasy教您玩转linux010206 蒸汽机车 sl

    我们来回顾一下 上一部分我们都讲了什么? 两种字符画 从figlet开始️ 到toilet 字符画选项 变彩色 字体效果 figlet oeasy toilet oeasy 这里面还有什么好玩的游戏可 ...

  9. Divide Interval 题解

    背景 太逊了,调了三次才调出来,所以写篇题解寄念.LC好睿智 题意 给你两个数 \(a,b\),现在要从 \(a\) 跑到 \(b\),每次可以将当前的 \(a\) 拆分成 \(2^n\times m ...

  10. C#枚举高级应用

    文章开头先看一道题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型?提示:要考虑到角色在后端开 ...