Rockchip RK3588 - 板级支持包之RKNPU

----------------------------------------------------------------------------------------------------------------------------

开发板 :ArmSoM-Sige7开发板eMMC64GBLPDDR48GB
显示屏 :15.6英寸HDMI接口显示屏u-boot2017.09linux5.10
----------------------------------------------------------------------------------------------------------------------------

在《Rockchip RK3588 - Rockchip Linux SDK Buildroot文件系统构建》我们对Buildroot文件系统进行了详细的介绍,不过不知道你有没有留意到在配置环节【配置Target packages】中,需要配置Rockchip板级支持包,这些板级支持包是由Rockchip提供的,本节的目的实际上就是研究部分核心板级支持包,比如OpenGL ESrknpu

至于为什么去研究这些很简单,比如我们自己在做ubuntu根文件系统的时候,我们通常需要移植适配于硬件的动态库,因此我们就需要参考Rockchip Linux SDK文件系统的实现。

一、板级支持包回顾

回顾《Rockchip RK3588 - Rockchip Linux SDK Buildroot文件系统构建》文章【配置Target packages】小节中的配置:

Target packages ---> 
	Hardware Platforms  --->
		[*] Rockchip Platform  --->
			Rockchip SoC (rk3588)  --->                                                    
				 ( ) rk3358 chip
				 (X) rk3588 chip
				 ......
			[*]   Rockchip Camera Engine For ISP
			Rockchip BSP packages  --->   // Rockchip板级支持包,很重要
            	[*]   Rockchip Camera Engine 3A service run in booting
            		Specify a directory to store xml speed up bin (disabled)  --->
            	()    Rockchip Camera Engine IQ xml file 
                [ ] rockchip common algorithm
                [*] gstreamer1-rockchip
                [*] A rockchip-mpp V4L2 wrapper plugin for chromium V4L2 VDA  
                [ ] Rockchip NPU power control for linux    
                [ ] Rockchip NPU power control combine for linux
                [ ] rk n4 camera  
                [ ] Rockchip recovery for linux  
                [ ] rknpu
                [ ] rknpu pcie   
                [ ] rknpu2
                [ ] rknn_demo 
                [*] rockchip script 
                ()    default PCM
                [ ]   rkscript iodomain notice script
                ......
                [ ] Rockchip rkupdate for linux
                [*] rkwifibt 
                [ ]   Enable static   
                [ ] rkwifibt wireless applicantion
                [*] rockchip-alsa-config
                [*] rockchip-rga 
                [*]   prefer using rockchip-rga
                [*] rockchip-mali
                ......
                [*]   wayland winsys
                [*]   GBM 
                [*]   OpenGL EGL
                [*]     OpenGL EGL Wayland 
                [*]   OpenGL ES
                [*]   OpenCL
                [ ]   Vulkan  
                [*] rockchip-mpp  --->
                ......

除了我们在OTA升级中介绍过的Rockchip recovery for linux,还有一堆其它的编译选项,比如rknpuOpenGL ES等,你可能好奇这些配置项是用来做什么的,但是请你按住性子往下看下去,我们会在后续文章一一介绍这些编译配置选项。

二、RKNPU介绍

2.1 NPU的由来

NPU(Nerual Processing Unit)是一种专门用于加速神经网络计算的处理器。

在深度学习技术刚开始流行的时候,人们主要使用通用计算设备,如CPUGPU,来执行神经网络计算。但是,随着神经网络的复杂度和规模不断增加,传统的计算设备已经不能满足快速、高效地执行神经网络计算的需求。因此,研究人员开始探索如何设计一种专门用于加速神经网络计算的处理器,这就是NPU的由来。

早期的NPU主要是基于FPGA(Field Programmable Gate Array)实现的。FPGA 是一种可编程逻辑器件,可以通过编程实现各种不同的电路功能。由于FPGA具有高度的灵活性和可编程 性,可以用于实现各种不同类型的神经网络处理器。

2010年,斯坦福大学的研究人员提出了一种基于FPGA的神经网络加速器,可以实现高效的神经网络计算。此后,越来越多的研究人员开始尝试使用FPGA实现NPU

随着深度学习技术的不断发展和普及,NPU的研究和开发也取得了越来越多的进展;

  • 2013年,Google发布了一篇论文,介绍了一种名为Tensor Processing Unit(TPU)的定制芯片,专 门用于加速深度学习模型的训练和推理。TPU采用了特定的硬件架构和优化算法,可以实现高效、低功耗的神经网络计算。TPU的成功引起了业界的广泛关注,也促进了NPU的发展。 随后,其他公司也开始研发自己的NPU
  • 2015年,华为发布了一款名为Kirin 950的处理 器,集成了一种名为Neural Processing Unit(NPU)的模块,用于加速神经网络计算;
  • 2017年,苹果公司在2017年发布的A11芯片中集成了神经网络处理器,用于支持人脸识别等功能;
  • 2018年,华为推出了全新的昇腾(Ascend)系列处理器,其中包括专门用于加速深度学习计算的NPU模块。同年,英伟达推出了名为TensorCore的加速器,用于加速深度学习模型的训练和推理;

随着NPU技术的不断发展和普及,越来越多的公司开始将NPU集成到自己的芯片中,以 速神经网络计算。瑞芯微为了满足人工智能的需要,瑞芯微的处理器也逐渐集成了NPU,而瑞芯微处理器内置的NPU,就被称之为RKNPU

2.2 RKNPU介绍

到目前为止,RKNPU已经经过了几代的发展,趋近成熟;

  • RK3399proRK1808初次引入了RKNPU,相比传统的 CPUGPU ,在深度学习运算能力上有比较大幅度的提升;
  • 接下来在RV1109RV1126上使用了第二代NPU,提升了NPU的利用 率;
  • 第三代NPU应用在RK3566RK3568上,搭载全新NPU自研架构;
  • RK3588搭载的 为第四代NPU,提高了带宽利用率,支持了多核扩展。

RKNPU具体发展过程如下图所示:

img

RKNPU1.0RKNPU2.0被划分为了RKNPU,而RKNPU3.0RKNPU4.0RKNPU5.0被划分为了RKNPU2RKNPURKNPU2所使用的SDK和工具套件不同。

RK3568RK3588NPU具有的功能如下:

SoC类型 NPU功能描述
RK3588 (1)拥有三个NPU核心
(2)支持三核协同工作,双核协同工作和独立工作
(3)使用AHB接口配置 NPU
(4)使用AXI接口从内存中获取数据
(5)支持int4、int8、int16、float16、Bfloat16和tf32操作
(6)每个周期可进行1024x3 个int8 MAC操作
(7)每个周期可进行512x3 个int16 MAC操作
(8)每个周期可进行512x3 个float16 MAC操作
(9)每个周期可进行512x3 个bfloat16 MAC操作
(10)每个周期可进行256x3 个tf32 MAC操作
(11)每个周期可进行 2048x3 个int4 MAC操作
(12)每个核心有384KB的内部缓存
(13)支持转换的推理模型:TensorFlow、Caffe、Tflite、Pytorch、Onnx NN
RK3568 (1)NPU支持以下特性:
(2)使用AHB接口配置 NPU
(3)使用AXI接口从内存中获取数据
(4)支持int8、int16、float16、Bfloat16 操作(5)每个周期可进行512个int8 MAC操作
(6)每个周期可进行128 个int16 MAC操作
(7)每个周期可进行128 个float16 MAC操作
每个周期可进行128 个 bfloat16 MAC操作(8)4(9)每个核心有256KB的内部缓存
(10)支持转换的模型:TensorFlow、Caffe、Tflite、Pytorch、OnnxNN等

RKNN三核架构如下图所示:

img
2.3 RKNPU单核框架

RKNPU单核心架构如下图所示:

### 升级 Rockchip RK3588NPU 驱动至版本 0.9.8 为了将 Rockchip RK3588NPU 驱动升级到版本 0.9.8,可以按照以下方法操作: #### 检查当前驱动版本 在执行任何升级之前,建议先确认当前安装的 NPU 驱动版本。可以通过以下命令完成此操作: ```bash dmesg | grep -i rknpu cat /sys/kernel/debug/rknpu/version cat /sys/kernel/debug/rknpu/driver_version cat /proc/debug/rknpu/driver_version ``` 这些命令可以帮助验证当前系统的 NPU 驱动状态[^1]。 #### 下载并编译最新版驱动 访问官方 GitHub 存储库获取最新的工具链和支持文件: ```plaintext https://github.com/rockchip-linux/rknn-toolkit https://github.com/rockchip-linux/rknn-toolkit2 ``` 下载完成后,解压源码包,并根据文档中的说明配置环境变量以及必要的依赖项。通常情况下,这一步涉及安装特定的开发工具和库文件[^3]。 #### 安装更新后的驱动程序 对于香橙派 5 (RK3588S),其支持的 NPU 驱动已知可被升级到版本 `0.9.8`。具体步骤可能因设备型号略有不同,但一般流程如下所示: 1. **准备镜像文件**:如果现有固件不包含目标版本,则需重新烧录带有新版驱动的支持镜像; 2. **手动替换模块**:通过交叉编译生成适配于硬件平台的新内核模块 (`rknpu.ko`) 并加载它; 3. **测试功能正常性**:重启系统之后再运行前述指令来核实最终结果是否达到预期标准[^2]。 #### 示例脚本 下面提供一段简单的 Bash 脚本来简化部分过程: ```bash #!/bin/bash # 更新软件包索引 sudo apt update && sudo apt upgrade -y # 获取rknn toolkit资源 git clone https://github.com/rockchip-linux/rknn-toolkit.git cd rknn-toolkit/ # 构建项目前设置好交叉编译器路径等参数... make clean all # 替换旧有ko文件为新构建出来的那个 cp output/lib/modules/*/*.ko /lib/modules/$(uname -r)/kernel/drivers/ depmod $(uname -r) echo "Reboot now..." sleep 3 reboot ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Graceful_scenery

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值