Toybrick

RK3399Pro入门教程(1)认识3399Pro

jefferyzhang

超级版主

积分
1550
发表于 2019-2-14 10:17:13    查看: 6746|回复: 28 | [复制链接]    打印 | 显示全部楼层


对于首次接触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芯片跟得心应手的玩转起来,做更多的产品,让它发挥更大的作用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

pecado

新手上路

积分
48
发表于 2019-2-22 14:38:51 | 显示全部楼层
非常有用的资源,这个板子的视频编解码能力真是强啊
回复

使用道具 举报

kealen

新手上路

积分
26
发表于 2019-3-14 15:31:39 | 显示全部楼层
请问开发板支持Fedora下的Vulkan运算吗?如果支持,应该怎么操作呢?谢谢!
回复

使用道具 举报

jefferyzhang

超级版主

积分
1550
 楼主| 发表于 2019-3-14 15:37:59 | 显示全部楼层
kealen 发表于 2019-3-14 15:31
请问开发板支持Fedora下的Vulkan运算吗?如果支持,应该怎么操作呢?谢谢!

fedora的mali.so并不带vulkan。
建议你学习和开发vulkan还是在安卓平台上进行。
回复

使用道具 举报

Wyong

注册会员

积分
78
QQ
发表于 2019-4-25 13:36:13 | 显示全部楼层
toybrick登陆写入外置硬盘没有权限,请问:开发板root密码多少?谢谢
回复

使用道具 举报

jefferyzhang

超级版主

积分
1550
 楼主| 发表于 2019-4-26 09:20:24 | 显示全部楼层
Wyong 发表于 2019-4-25 13:36
toybrick登陆写入外置硬盘没有权限,请问:开发板root密码多少?谢谢

密码:toybrick
你不知道密码是如何登录系统的?
回复

使用道具 举报

Wyong

注册会员

积分
78
QQ
发表于 2019-4-26 11:03:49 | 显示全部楼层
jefferyzhang 发表于 2019-4-26 09:20
密码:toybrick
你不知道密码是如何登录系统的?

资料上有些啊,开机启动,登陆用户名:toybrick,密码:toybrick   .但是外挂固态硬盘写操作就需要root用户名登陆,哪儿也没有找到root用户名登陆的密码。现在问题又来了,toybrick,密码:toybrick 登陆正常,root,密码:toybrick 登陆不进去,不知道是什么原因?
回复

使用道具 举报

jefferyzhang

超级版主

积分
1550
 楼主| 发表于 2019-4-26 14:18:41 | 显示全部楼层
Wyong 发表于 2019-4-26 11:03
资料上有些啊,开机启动,登陆用户名:toybrick,密码:toybrick   .但是外挂固态硬盘写操作就需要root用 ...

测试并没有发现这种问题,如果是界面登陆,root用户是被隐藏的,你需要用sudo来提升权限。
也可以尝试直接用root用户登录,密码是一致的。
回复

使用道具 举报

Wyong

注册会员

积分
78
QQ
发表于 2019-5-20 18:35:26 | 显示全部楼层
CPU : 双核A72 + 四核A53,开启的先后顺序?
回复

使用道具 举报

jefferyzhang

超级版主

积分
1550
 楼主| 发表于 2019-5-21 09:51:25 | 显示全部楼层
Wyong 发表于 2019-5-20 18:35
CPU : 双核A72 + 四核A53,开启的先后顺序?

core0-3 是A53
core4-5 是A72
默认中断在core0上。
其他运行顺序看 cpu调度,也可以自己手动绑定
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表