1.瑞芯微rk356x板子快速上手

《2.Linux驱动|瑞芯微rtc-hym8563移植笔记》

《3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微》

0、环境

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

一、ov13850简介

1. 产品参数

  • 品牌:Omnivision
  • 型号:CMK-OV13850
  • 接口:MIPI
  • 像素:1320W



    OV13850彩色图像传感器是一款低电压、高性能1/3.06英寸1320万像素CMOS图像传感器,使用OmniBSI+?技术提供了单-1320万像素(4224×3136)摄像头的功能。通过串行摄像头控制总线(SCCB)接口的控制,它提供了全帧、下采样、开窗的10位MIPI图像。

OV13850拥有一个能够在10位1320万像素分辨率下以每秒24帧(fps)的速度运行的图像阵列,用户可以完全控制图像质量、格式和输出数据传输。所有需要的图像处理功能,包括曝光控制、白平衡、缺陷像素消除等,都可以通过SCCB接口进行编程。

此外,OmniBSI图像传感器使用专有的传感器技术,通过减少或消除固定图案噪声、污迹等常见的图像污染光源来提高图像质量,从而产生干净、完全稳定的彩色图像。

为了提供定制信息,OV13850包括一个单编程(OPT)存储器。OV13850拥有最多4车道的MIPI接口。

OV13850适用于低功耗相机模块。

以下是测试用的摄像头&扩展板:

2. 特性

●镜头尺寸:1/3.06英寸

●像素大小:1.12毫米×1.12毫米

●31.2°CRA为6mm z高度

●可编程控制帧速率,镜像和翻转,裁剪和窗口

●1320万像素AT30fps

●双线串行总线控制(SCCB)

●闪光灯输出控制闪光

●支持输出格式:10位RAW RGB

●支持图像大小:13.2MP(4224×3136)、10MP(4224×2376)、4K2K(3840×2160)、EIS 1080P(2112×1188)、EIS 720P(1408×792)、more3

●支持2×2 Binning

●可达4车道MIPI串行输出接口

●标准系列SCCB接口

●8k bit的嵌入式一次性可编程(OTP)存储器(见侧注)

●两个片上锁相环(PLLs)

●可编程控制:增益、曝光、帧率、图像大水、水平反射镜、垂直翻转裁剪和平移

●内置温度传感器

●图像质量控制:缺陷校正,自动黑电平校准,镜头阴影校正,和高度计行HDR。

●保证传感器结温:-300C到+850C

●电源核心:1.14V-1.26V;模拟:2.6-3.0V输入/输出:1.7-3.0V

●封装:PLCC40

3. ov13850引脚图

4. ov13850功能模块

定时脉冲发生器输出时钟来访问成像阵列的行,预先填充电荷并且按顺序对数组的行进行采样。

在预先填充电荷和采样的时间间隔内,每个像素点的电荷曝光时减少入射光。

这是在滚动快门的体系结构的曝光时间。

曝光时间通过调整预先填充电荷和采样之间的时间间隔控制。

在每一行的像素数据采样后,通过模拟电路(AMP)进一步处理:纠正偏移量和将数据乘以相应的增益。

模拟处理后通过10位ADC的输出数组中的每个像素的数据。

ISP(image sensor processor)通过图像输出接口单元,经过mipi接口(MCP/MDP)将图像数据发送出去。

5. 像素数组

OV13850传感器的图像数组4256列3152行(13414912像素)

颜色过滤器是安排在Bayer模式

Binning mode 2x2 binning

Binning mode 通常用于低分辨率

6. mirror 和 flip

OV13850提供图像mirror(左右翻转) 和 flip(上下翻转)模式

二、驱动移植

瑞芯微支持的摄像头,有个support list,

此次从该list中选择了ov13850

1. 驱动源文件及对应脚本

默认sdk里面已经将支持的所有摄像头驱动都添加到了内核,所以不需要移植该驱动了,

但是还是要确认下移植驱动对应的一些信息

  • 源程序
rk_android11.0_sdk_220718\kernel\drivers\media\i2c\ov13850.c
rk_android11.0_sdk_220718\kernel\include\config\video\ov13850.h
  • kernel/drivers/media/i2c/Makefile
115 obj-$(CONFIG_VIDEO_OV13850) += ov13850.o
  • kernel/drivers/media/i2c/Kconfig
1282 config VIDEO_OV13850
1283 tristate "OmniVision OV13850 sensor support"
1284 depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
1285 depends on MEDIA_CAMERA_SUPPORT
1286 select V4L2_FWNODE
1287 ---help---
1288 This is a Video4Linux2 sensor driver for the OmniVision
1289 OV13850 camera.
  • 驱动对应的宏开关

kernel/arch/arm64/configs/rockchip_defconfig

581 CONFIG_VIDEO_OV13850=y

2. 设备树

1)典型ov系列摄像头链接示意图

ov系列摄像头与SOC连接的主要的引脚有:

i2c、rst、pwdn、mclk、MIPI Clk、MIPI DATA

这几根线是驱动工程师必须捋清楚的

2)电路图

本次我们直接将摄像头插在公版的视频接口,用的是通道0,使用了4个lane【不知道具体硬件信息就问硬件工程师】

由电路图可知,几个关键引脚关系:

  • reset信号:GPIO3 B6
  • power down信号:GPIO4 B4
  • I2C通道:4
  • clock:cif

3)设备树节点

参考sdk中其他平台的ov13850节点来填写

kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10.dtsi
ov13850: ov13850@10 {
status = "okay";
compatible = "ovti,ov13850";
reg = <0x10>;
clocks = <&cru CLK_CIF_OUT>;
clock-names = "xvclk";
power-domains = <&power RK3568_PD_VI>;
pinctrl-names = "default";
pinctrl-0 = <&cif_clk>;
reset-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
pwdn-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "ZC-OV13850R2A-V1";
rockchip,camera-module-lens-name = "Largan-50064B31";
port {
ov13850_out: endpoint {
remote-endpoint = <&mipi_in_ucam0>;
data-lanes = <1 2 3 4>;
};
};
}; 114 &csi2_dphy0 {
115 status = "okay";
116
117 ports {
118 #address-cells = <1>;
119 #size-cells = <0>;
120 port@0 {
121 reg = <0>;
122 #address-cells = <1>;
123 #size-cells = <0>;
124
125 mipi_in_ucam0: endpoint@1 {
126 reg = <1>;
127 remote-endpoint = <&ov13850_out>;
128 data-lanes = <1 2 3 4>;
129 };
……
152 };

设备树的信息最终转换成i2c_client,并传递给ov13850驱动ov13850_probe()

compatible = "ovti,ov13850";与驱动的of_match_table 保持一致

@rk_android11.0_sdk\kernel\drivers\media\i2c\ov13850.c
#if IS_ENABLED(CONFIG_OF)
static const struct of_device_id ov13850_of_match[] = {
{ .compatible = "ovti,ov13850" },
{},
};
MODULE_DEVICE_TABLE(of, ov13850_of_match);
#endif static const struct i2c_device_id ov13850_match_id[] = {
{ "ovti,ov13850", 0 },
{ },
}; static struct i2c_driver ov13850_i2c_driver = {
.driver = {
.name = OV13850_NAME,
.pm = &ov13850_pm_ops,
.of_match_table = of_match_ptr(ov13850_of_match),
},
.probe = &ov13850_probe,
.remove = &ov13850_remove,
.id_table = ov13850_match_id,
};

关于摄像头驱动,

彭老师后面会继续更一篇文章讲解。

3. 安卓配置文件

在以下两个文件增加对应摄像头信息,

hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml
hardware/rockchip/camera/etc/camera/camera3_profiles.xml

一口君直接参考的其他文件,

然后找一个相近型号的摄像头修改的

三、查看摄像头相关信息

1. 开机log

移植成功后,确认下对应的驱动log

10-26 17:58:54.659     0     0 I ov13850 4-0010: driver version: 00.01.05
10-26 17:58:54.659 0 0 W ov13850 4-0010: Failed to get power-gpios, maybe no use
10-26 17:58:54.659 0 0 W ov13850 4-0010: 4-0010 supply avdd not found, using dummy regulator
10-26 17:58:54.659 0 0 I ov13850 4-0010: Linked as a consumer to regulator.0
10-26 17:58:54.659 0 0 W ov13850 4-0010: 4-0010 supply dovdd not found, using dummy regulator
10-26 17:58:54.659 0 0 W ov13850 4-0010: 4-0010 supply dvdd not found, using dummy regulator
10-26 17:58:54.660 0 0 E ov13850 4-0010: could not get default pinstate
10-26 17:58:54.660 0 0 E ov13850 4-0010: could not get sleep pinstate
10-26 17:58:54.665 0 0 I ov13850 4-0010: Detected OV00d850 sensor, REVISION 0xb2
10-26 17:58:54.665 0 0 I rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_ov13850 4-0010:bus type 4

2. 查看ov13850设备

驱动加载成功后,会有以下信息

  • 查看摄像头设备节点:
rk3568_r:/ # ls /dev/video* -l
ls /dev/video* -l
crw-rw---- 1 media camera 81, 0 2022-10-31 06:56 /dev/video0
crw-rw---- 1 media camera 81, 1 2022-10-31 06:56 /dev/video1
crw-rw---- 1 media camera 81, 2 2022-10-31 06:56 /dev/video2
crw-rw---- 1 media camera 81, 3 2022-10-31 06:56 /dev/video3
crw-rw---- 1 media camera 81, 4 2022-10-31 06:56 /dev/video4
crw-rw---- 1 media camera 81, 5 2022-10-31 06:56 /dev/video5
crw-rw---- 1 media camera 81, 6 2022-10-31 06:56 /dev/video6
crw-rw---- 1 media camera 81, 7 2022-10-31 06:56 /dev/video7
crw-rw---- 1 media camera 81, 8 2022-10-31 06:56 /dev/video8

3. 查看sys文件系统中文件信息

内核会为摄像头在目录/sys/class/video4linux下分配设备信息描述文件

rk3568_r:/ # grep ov13850 /sys/class/video4linux/v*/name
grep ov13850 /sys/class/video4linux/v*/name
/sys/class/video4linux/v4l-subdev3/name:m00_b_ov13850 4-0010
rk3568_r:/ # grep "" /sys/class/video4linux/v*/name | grep mainpath
grep "" /sys/class/video4linux/v*/name | grep mainpath
/sys/class/video4linux/video0/name:rkisp_mainpath

4. 查看拓扑 media-ctl -d /dev/media0 -p

rk3568_r:/ # media-ctl -d /dev/media0 -p
media-ctl -d /dev/media0 -p
Opening media device /dev/media0
Enumerating entities
Found 13 entities
Enumerating pads and links
Media controller API version 0.0.255 Media device information
------------------------
driver rkisp-vir0
model rkisp0
serial
bus info
hw revision 0x0
driver version 0.0.255 Device topology
- entity 1: rkisp-isp-subdev (4 pads, 7 links)
type V4L2 subdev subtype Unknown
device node name /dev/v4l-subdev0
pad0: Sink
[fmt:SBGGR10/4224x3136
crop.bounds:(0,0)/4096x3072
crop:(0,0)/4096x3072]
<- "rkisp-csi-subdev":1 []
<- "rkisp_rawrd0_m":0 []
<- "rkisp_rawrd2_s":0 []
pad1: Sink
<- "rkisp-input-params":0 []
pad2: Source
[fmt:YUYV2X8/4096x3072
crop.bounds:(0,0)/4096x3072
crop:(0,0)/4096x3072]
-> "rkisp_mainpath":0 []
-> "rkisp_selfpath":0 []
pad3: Source
-> "rkisp-statistics":0 [] - entity 6: rkisp-csi-subdev (6 pads, 5 links)
type V4L2 subdev subtype Unknown
device node name /dev/v4l-subdev1
pad0: Sink
<- "rockchip-csi2-dphy0":1 []
pad1: Source
-> "rkisp-isp-subdev":0 []
pad2: Source
-> "rkisp_rawwr0":0 []
pad3: Source
pad4: Source
-> "rkisp_rawwr2":0 []
pad5: Source
-> "rkisp_rawwr3":0 [] - entity 13: rkisp_mainpath (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video0
pad0: Sink
<- "rkisp-isp-subdev":2 [] - entity 19: rkisp_selfpath (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video1
pad0: Sink
<- "rkisp-isp-subdev":2 [] - entity 25: rkisp_rawwr0 (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video2
pad0: Sink
<- "rkisp-csi-subdev":2 [] - entity 31: rkisp_rawwr2 (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video3
pad0: Sink
<- "rkisp-csi-subdev":4 [] - entity 37: rkisp_rawwr3 (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video4
pad0: Sink
<- "rkisp-csi-subdev":5 [] - entity 43: rkisp_rawrd0_m (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video5
pad0: Source
-> "rkisp-isp-subdev":0 [] - entity 49: rkisp_rawrd2_s (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video6
pad0: Source
-> "rkisp-isp-subdev":0 [] - entity 55: rkisp-statistics (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video7
pad0: Sink
<- "rkisp-isp-subdev":3 [] - entity 61: rkisp-input-params (1 pad, 1 link)
type Node subtype V4L
device node name /dev/video8
pad0: Source
-> "rkisp-isp-subdev":1 [] - entity 67: rockchip-csi2-dphy0 (2 pads, 2 links)
type V4L2 subdev subtype Unknown
device node name /dev/v4l-subdev2
pad0: Sink
<- "m00_b_ov13850 4-0010":0 []
pad1: Source
-> "rkisp-csi-subdev":0 [] - entity 70: m00_b_ov13850 4-0010 (1 pad, 1 link)
type V4L2 subdev subtype Sensor
device node name /dev/v4l-subdev3
pad0: Source
[fmt:SBGGR10/4224x3136]
-> "rockchip-csi2-dphy0":0 []

从entity70信息中可以看到:

  • 该Entity完整的名称是:m00_b_ov13850 4-0010
  • 它是一个V4L2 subdev(Sub-Device) Sensor
  • 它对应的节点是/dev/v4l-subdev3,应用程序(如v4l2-ctl)可以打开它,并进行配置
  • 它仅有一个输出(Source)节点,记为pad0
  • 它的输出格式是[fmt:SBGGR10/4224x3136],其中SBGGR10是一种mbus-code的简称
  • 它的Source pad0 链接到"rockchip-csi2-dphy0"的pad0,并且当前的状态是 ENABLED。

三、拍照测试

1. 抓帧

rk3568_r:/ # v4l2-ctl -d /dev/video0 --set-fmt-video=width=800,height=600,pixelformat=NV12 --stream-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1
m-mmap=3 --stream-to=/sdcard/out.yuv --stream-skip=9 --stream-count=1 <
<<<<<<<<< 7.51 fps
<

【看到<<<<<<<<< 7.51 fps 说明成功】

参数说明

-d: 摄像头对应设备文件
--set-fmt-video:指定了宽高及pxielformat(用FourCC表示)。NV12即用FourCC表示的pixelformat
--stream-mmap:指定buffer的类型为mmap,即由kernel分配的物理连续的或经过iommu映射的buffer
--stream-to:指定帧数据保存的文件路径
--stream-skip:指定丢弃(不保存到文件)前3帧
--stream-count:指定抓取的帧数,不包括--stream-skip丢弃的数量 其他参数
--set-selection,指定对输入图像进行裁剪。特别是当RKISP1的前级大小发生变化时要保证selection不大于前级输出大小。RKCIF的裁剪则是通过--set-crop参数设置的
--stream-poll,该选项指示v4l2-ctl采用异步IO,即在dqbuf前先用select等等帧数据完成,从而保证dqbuf不阻塞。否则dqbuf将会阻塞直到有数据帧到来

2. 显示图片:

将文件/sdcard/out.yuv从板子通过adb pull命令拷贝出来,

运行于windows下:
adb pull /sdcard/out.yuv

再拷贝到ubuntu中,执行以下命令显示图片【用其他可以打开yuv格式图片的工具也可以】

ffplay out.yuv -f rawvideo -pixel_format nv12 -video_size 800x600

【拍照时选择其他较高分辨率会出错,暂时还没解决这个问题,有知道的可以联系我:yikoupeng】

四、参数设置

1. 显示摄像头参数

显示摄像头参数

rk3568_r:/ # v4l2-ctl -d /dev/video0 -l
v4l2-ctl -d /dev/video0 -l
User Controls
exposure 0x00980911 (int) : min=4 max=3324 step=1 default=1536 value=1536
Image Source Controls
vertical_blanking 0x009e0901 (int) : min=192 max=29631 step=1 default=192 value=192
horizontal_blanking 0x009e0902 (int) : min=576 max=576 step=1 default=576 value=576 flags=read-only
analogue_gain 0x009e0903 (int) : min=16 max=248 step=1 default=16 value=16
Image Processing Controls
link_frequency 0x009f0901 (intmenu): min=0 max=0 default=0 value=0 flags=read-only
pixel_rate 0x009f0902 (int64) : min=0 max=120000000 step=1 default=120000000 value=120000000 flags=read-only
test_pattern 0x009f0903 (menu) : min=0 max=4 default=0 value=0

2. 增加曝光exposure

exposure值区间为: 4-3324

命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl exposure=3324

3. 增加图片亮度analogue_gain

analogue_gain用于设置显示的图像的亮度

analogue_gain值区间:16-248

命令实例:

v4l2-ctl -d /dev/video0 --set-ctrl analogue_gain=240

analogue_gain=16现象

analogue_gain=244现象【效果非常明显】

4. 测试显示信息test_pattern

参数test_pattern,可以用于测试显示图像

  • 0:摄像头
  • 1-3 测试图片

    命令实例:
v4l2-ctl -d /dev/video0 --set-ctrl test_pattern=0

test_pattern = 1



test_pattern = 2



test_pattern = 3

5. 修改Entity的format、size

举例一,GC2053摄像头支持多个分辨率的输出,默认为1920x1080。现将输出分辨率改为640x480:

media-ctl -d/dev/media0 --set-v4l2' "m00_b_ov13850 4-0010":0[fmt:SBGGR10//640x480]'

修改GC2053输出后,rkisp-isp-subdev的大小及video device crop也相应要修改。因为后级的大小不能大于前级的大小。

~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[fmt:SBGGR10/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":0[crop: (0, 0)/640x480]'
~/>$ media-ctl -d/dev/media0 --set-v4l2 ' "rkisp-isp-subdev":2[crop: (0, 0)/640x480]'
~/>$ v4l2-ctl -d/dev/video0\
--set-selection=target=crop, top=0, left=0, width=640, height=480

五、遇到问题解决

1. 解决闪退

主要是camera3_profiles_rk356x.xml和camera3_profiles.xml这两个文件中没有ov13850的信息

所以找到这两个文件,增加相对应的摄像头信息

改文件位于sdk的目录如下:

hardware/rockchip/camera/etc/camera/

内容比较多,只贴出我修改那一段

【我将其他摄像头都删除了】

	<Profiles cameraId="0" name="ov13850" moduleId="m00">
<Supported_hardware>
<hwType value="SUPPORTED_HW_RKISP1"/>
</Supported_hardware> <Android_metadata> <!-- Android static metadata only -->
<!-- Color Correction -->
<colorCorrection.availableAberrationModes value="OFF"/>
<!-- Control -->
<control.availableModes value="OFF"/>
<control.aeAvailableAntibandingModes value="OFF,50HZ,60Hz,AUTO"/>
<control.aeAvailableModes value="ON,OFF"/>
<control.aeLockAvailable value="FALSE"/>
…………
<sensorType value="SENSOR_TYPE_RAW"/> <!-- SENSOR_TYPE_SOC or SENSOR_TYPE_RAW -->

文件camera3_profiles.xml参数的说明,瑞芯微官方有相应的说明文档

2. app 提示没有权限连接&打开设备失败

10-24 15:20:15.535  1668  1668 D CAM_Camera2OneCamMgr: Getting First BACK Camera
10-24 15:20:15.535 1668 1668 I CameraManagerGlobal: Connecting to camera service
10-24 15:20:15.539 346 346 W ServiceManager: Permission failure: android.permission.CAMERA_OPEN_CLOSE_LISTENER from uid=10090 pid=1668
10-24 15:20:15.542 1668 1668 D CAM_Camera2OneCamMgr: Getting First FRONT Camera
10-24 15:20:15.543 1668 1668 W CAM_Camera2OneCamMgr: No front-facing camera found,try to find external facing camera.
10-24 15:20:15.544 1668 1668 W CAM_Camera2OneCamMgr: No external camera found.

该log位于以下文件

./packages/apps/Camera2/src/com/android/camera/one/v2/Camera2OneCameraManagerImpl.java:172

修改文件

packages/apps/Camera2/AndroidManifest.xml

增加下面两处,会解决连接ManagerService 错误问题

<uses-permission android:name="android.permission.CAMERA_OPEN_CLOSE_LISTENER"/>
android:sharedUserId="android.uid.system"

同时将设备树文件

将mipi_in_ucam0里的reg修改为1,如果有其他摄像头信息,一次往后填写或者删除。

114 &csi2_dphy0 {
115 status = "okay";
116
117 ports {
118 #address-cells = <1>;
119 #size-cells = <0>;
120 port@0 {
121 reg = <0>;
122 #address-cells = <1>;
123 #size-cells = <0>;
124
125 mipi_in_ucam0: endpoint@1 {
126 reg = <1>;
127 remote-endpoint = <&ov13850_out>;
128 data-lanes = <1 2 3 4>;
129 };
……

【这个reg是什么意思,有知道的老铁可以给我留言】

3. APP打开设备失败

从log看,没有任何permission问题,摄像头也打开了,但是就是连接失败,主要是xml文件的sensorType 设置不对

hardware/rockchip/camera/etc/camera/camera3_profiles_rk356x.xml
hardware/rockchip/camera/etc/camera/camera3_profiles.xml

找到这两个文件下面的值

<sensorType value="SENSOR_TYPE_RAW"/> <!-- SENSOR_TYPE_SOC or SENSOR_TYPE_RAW -->

修改为

<sensorType value="SENSOR_TYPE_SOC"/> <!-- SENSOR_TYPE_SOC or SENSOR_TYPE_RAW -->

六、后续

后面还有一些工作需要进一步研究:

  1. 目前只调通了1个摄像头,后需要会再增加1个2lane的摄像头
  2. 视频颜色还有点发绿,还需要进一步调试

有一起玩瑞芯微平台的老铁,后台猛戳我

瑞芯微 | 摄像头ov13850移植笔记的更多相关文章

  1. Linux下更新瑞芯微固件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. 瑞芯微ROCK960 RK3399烧录image后扩容rootfs

    问题描述: RK3399开发板烧录官网提供的ubuntu镜像: Ubuntu 16.04 Server arm64(下载地址:https://www.96boards.org/documentatio ...

随机推荐

  1. 从0到1:CTFer成长之路网上平台的使用以及docker环境配置

    1.首先安装docker(这里在kali里演示) sudo su #以root身份运行 apt install docker.io #安装docker systemctl start docker # ...

  2. Shell脚本实现Linux回收站

    前言 到目前为止,非图形化的Linux还没有回收站的命令. 那么,我们如果不小心将某一个文件删掉了,那就只能数据恢复了.如果这也不行,那就等着哭吧. 最新代码在我的github:https://git ...

  3. 图最短路径之Dijkstra

    Dijkstra's shortest path algorithm 算法参考地址:Dijsktra's algorithm (geeksforgeeks.org) 算法的简介: 1)该算法用来计算最 ...

  4. 基于 TI Sitara系列 AM64x核心板——程序自启动说明

    前 言 本文主要介绍AM64x的Cortex-A53.Cortex-M4F和Cortex-R5F核心程序自启动使用说明.默认使用AM6442进行测试演示,AM6412测试步骤与之类似. 本说明文档适用 ...

  5. 2.模块文件以及增删改查(CURD操作)

    创建 db.py db.py 文件是我们管理数据库连接和模型基类的地方.它让我们的代码更加模块化和可维护,实际生产中也是类似的,无论是在 FastAPI 或者 Flask 等框架中,当使用到 SqlA ...

  6. yb课堂实战之LoginInterceptor注册和放行路径 《十二》

    LoginInterceptor 拦截器注册和路径校验配置 继承WebMvcConfigurer 配置拦截路径和放行路径 InterceptorConfig.java package net.ybcl ...

  7. java WT -- JSON WEB TOKEN 加密/校验工具类

    依赖项 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</art ...

  8. Mybatis 二级缓存的使用

    Mybatis二级缓存 简介:二级缓存是namesace级别的,多个SqlSession去操作同个namespace下的Mapper的sql语句,多个SqlSession可以共用二级缓存,如果两个ma ...

  9. Mybatis 插入后获取主键

    项目结构 数据表结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  10. PowerBuilder编程新思维6.5:外传1(PowerPlume的设计与规划)

    <第五部分 Otherside 意外的宝藏> 每一颗种子都有发芽的梦想.PowerPlume(孔雀翎)开发交流群:286502392    PowerBuilder编程新思维6.5:外传1 ...