|
本帖最后由 jefferyzhang 于 2020-9-8 10:26 编辑
对于首次接触3399Pro的同学们,可能对嵌入式环境有所不了解,我们准备编写一系列基础课程让大家上上手。
首先同学们要知道嵌入式开发和PC开发的不同之处,PC纯靠CPU和GPU通过编写程序,不计成本的进行运算,只要肯砸钱,配置越高运算能力越强。但嵌入式平台并不是这样的,嵌入式平台需要兼顾算力、功耗、成本等等因素,一颗好的嵌入式芯片,他要在控制成本和功耗的情况下尽可能的提高特定运算的能力。(划重点:CPU是为了通用运算,而嵌入式芯片将一些特定的运算固化成了芯片电路,大大提高了运算速度、降低了功耗和成本。)而RK3399PRO恰恰就是小编我用过性价比最高,能力最强,最稳定最成熟的嵌入式运算芯片了。
下面就给大家介绍下RK3399PRO的这些特定运算的硬件(注意,以下所有硬件单元皆是独立运作的,也就是说同一时间他们都可以做独立的任务,相互不干扰不等待,考验同学们多线程编码的时候到了):
1. 硬件组成 (RK3399Pro = RK3399 + NPU)
* CPU : 双核A72 + 四核A53 :
core0-core3 是小核, core4-core5是大核, 编程深度优化时候可以把cpu的某些运算手动绑定在大核上,可提高通用运算的速度。
* GPU : Mali T860, 支持OpenGL 2.x 和 OpenCL 1.2 以及 Vulkan
如果你用的是Linux系统开发,那使用OpenGL和CL时候,从Khronos官网下载对应版本的头文件,加上我们Mali的so库,就可以进行开发了,千万不要从操作系统自带的源里去下载,因为源里默认的都只有CPU版本的gl和cl。
注:Linux操作系统暂时不支持Vulkan,想玩Vulkan的还是需要安卓系统。
如果你用的是Android系统开发,那OpenGL和Vulkan就已经是JavaAPI和NDK里自带的了,RK已经对接了GPU,直接使用即可。OpenCL的话依然需要自己下载CL的头文件,配合安卓里system/lib64的GLES的so使用。
当然如果想利用GPU做运算,这里我建议同学们去ARM的官网下载Arm Computer Lib,它分为Linux和Android两个版本,分别自带的包括arm nn在内的arm cpu/mali gpu的运算封装,可以大大提高大家代码开发效率,毕竟自己徒手写OpenCL还是很复杂的。
* VPU : RKVdec, VPU2 (视频编解码单元)
Rockchip最牛逼的地方之一莫过于他的视频编解码模块,其中RKVdec模块可以支持包括H264/H265在内6路1080P/30FPS,或者2路4K/30FPS(支持HDR 10bits),或者同等运算量其他组合形式。而VPU2单独的编码模块,可以在解码的同时,进行2路1080P30FPS的H264编码。(大家对比下PC平台,如果想做到这个程度的编解码,需要砸多少钱、花费多少功率用CPU、GPU来实现)
如果你是Android系统开发,那么使用Android自带的MediaCodec API,就可以用到所有的VPU能力了,RK已经对接好了。
如果你是Linux系统开发,那推荐使用RK自己开发的MPP lib来调用VPU编解码(https://github.com/rockchip-linux/mpp),千万不要用操作系统自带的源去安装gstreamer、ffmpeg之类的库,这些库默认都是用cpu编解码的,我们也会发布相关的rpm包来让大家使用rk vpu对接过的gsteamer和ffmpeg,如果想下载源码编译,也可以在https://github.com/rockchip-linux找到。
* RGA :二维图像辅助计算单元
这又是Rockchip的神器之一,该单元可以在极短时间内拷贝、旋转、格式转换、缩放、混合 图片,想想在PC上被CPU memcpy支配的恐惧,再回头看看能在短短几个毫秒内内存拷贝一张4K图片,还能同时缩放、旋转、把YUV转成RGB之类的格式转换,用上后就再也不会想用CPU来做这些工作了。
不论你是Android还是Linux开发者,想用RGA的话都需要使用我们的rga lib来调用,而安卓因为hwc单元一直在使用该器件进行转屏混合工作,所以在安卓上使用rga效率远远低于linux平台。(安卓的librga位置在hardware/rockchip/librga目录里)
* NPU : 神经网络计算单元
这是RK3399Pro独有的运算单元,他可以通过传递一张计算图初始化后,不断的喂给他输入数据,而吐出输出数据。这个单元在我们各种文档和直播视频里都介绍了,这里就不再重复描述了。
不论你是Android还是Linux开发者,都需要单独使用rknn_api lib来调用。
* PCI-E x 4 接口
这个不能算是运算单元,但是我还是在这里提下,并不是所有嵌入式芯片都带有PCI-E插槽的,而3399Pro因为有了PCI-E支持,可以非常方便的扩展包括硬盘阵列在内的各种单元。(是不是忽然有种脑洞大开的感觉,觉得这块板子能做更多事情了 :)
好了,今天就先介绍到这里,我们会不断的更新教学,让大家对3399PRO芯片跟得心应手的玩转起来,做更多的产品,让它发挥更大的作用。
BTW,
Toybrick是我们自己做的开发版的一个品牌,Toybrick 不等于 3399pro 也不等于 rk1808,他是一个独立的开发版品牌。请勿和我们sdk搞混。
BTW again,
Toybrick开发版建议拥有一定的编程基础和技术实力的专业人员和本专业的学生使用。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|