一种基于制造技术

技术编号:39671118 阅读:8 留言:0更新日期:2023-12-11 18:36
本发明专利技术公开了汽车智能座舱领域内的一种基于

【技术实现步骤摘要】
一种基于QNX Hypervisor的图像采集方法


[0001]本专利技术涉及汽车智能座舱领域内的基于
QNX Hypervisor
的图像采集方法


技术介绍

[0002]传统的车载操作系统是单操作系统,仪表是一套系统,影音娱乐
IVI
是另外一套系统,两套系统硬件和软件都是独立的,双方通过
CAN
总线进行数据交互

而智能座舱系统仪表和娱乐是一套硬件,软件也是一套,但是隔离出多个域,分别用于仪表和娱乐,这样可以满足功能安全

[0003]不同的域运行不同的操作系统,比如
QNX、Android
等,不同系统之间有图像传输的需求,比如仪表将摄像头图像传给
IVI
进行处理和显示

常规的做法是
QNX host server
端通过虚拟局域网
VLAN
的方式发送图像数据,
Android client
端接收到数据后经过处理后显示到
surface view
里,但是这种方式效率低

延迟大

安全性低,并不适合实用性要求高的场景,并且还有个问题,如果多个应用需要获取图像数据,每个应用都需要单独编写接收代码,开发难度较大

此外目前在
QNX Hypervisor+Android GVM
系统上无法支持原生
android camera2
接口获取摄像头图像


技术实现思路

[0004]本专利技术的目的是提供一种基于
QNX Hypervisor
的图像采集方法,解决了常规传输图像效率低

延迟大

安全性低的问题,并且简化了
android client

camera
应用开发的难度,可以直接使用原生
android camera2
接口获取摄像头图像,更好的满足了智能座舱系统不同域之间传输图像数据的需求

[0005]为实现上述目的,本专利技术提供了一种基于
QNX Hypervisor
的图像采集,包括以下内容,
[0006]步骤1,
proxy
主进程启动;
[0007]步骤2,主进程创建
bufferq
初始化线程;
[0008]步骤3,主进程创建
bufferq handle
线程;
[0009]步骤4,主进程创建
signal
信号量处理线程;
[0010]步骤5,主进程初始化内核
v4l2 loopback
设备

[0011]作为本专利技术的进一步改进,步骤2的具体内容如下,
[0012]步骤
2.1

bufferq
初始化线程启动,该线程由
proxy
主进程拉起;
[0013]步骤
2.2
,使用
mmap
分配6个图像缓存
buffer
,每个
buffer
大小为
1920x720x3

4147200bytes

[0014]步骤
2.3
,使用
buffer_share_init()
接口初始化
bufferq
对象实例;
[0015]步骤
2.4
,使用
buffer_share_prepare_buffer()
接口获取6个
bufferq buffer
地址,该地址将用于后续图像数据的写入

[0016]作为本专利技术的进一步改进,步骤3的具体内容如下,
[0017]步骤
3.1
,检查
bufferq
是否初始化,如已初始化,则调用
bufferq_fetch_new_frame()
函数,如未初始化,则说明
qnx
端发送图像数据的服务异常,则调用
bufferq_fill_frame_buffer()
函数;
[0018]步骤
3.2
,通过
bufferq_fetch_new_frame()
函数不断循环
buffer_share_dequeue、buffer_share_enqueue
来获取
qnx
端发送的图像采集数据,获取到的图像数据格式为
BGRA8888
,然后通过如下公式将其转换为
UYVY
格式:
[0019][0020]然后将
YUV
数据按照
UYVY
的顺序排列,写入
v4l2 loopback buffer
中;
[0021]步骤
3.3
,当
qnx
端无法正常发送图像数据时,
android
可以通过
bufferq_fill_frame_buffer()
函数收到蓝屏画面,便于用户判断故障原因,,其中发送蓝屏图像的原理是往
v4l2 loopback buffer
的每个像素里写入纯蓝色的点
UYVY
数据
(0xef

0x28

0x6d

0x28)
,对应的
RGB
数据是
(0x0

0x0

0xff)
,即纯蓝色

[0022]作为本专利技术的进一步改进,步骤4的具体内容如下,
[0023]步骤
4.1
,使用
sigwait
等待信号量;
[0024]步骤
4.2
,当信号量为如下信号时进入退出流程:
SIGCHLD,SIGIO,SIGURG,SIGWINCH,SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU,SIGCONT

[0025]步骤
4.3
,进入退出流程后,将
pipeline
句柄清空,否则重启进程后会导致无法申请新句柄

[0026]作为本专利技术的进一步改进,步骤5的具体内容如下,
[0027]步骤
5.1
,调用
open
函数打开
v4l2 loopback
节点;
[0028]步骤
5.2
,调用
ioctl(v4l2_params
‑本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种基于
QNX Hypervisor
的图像采集方法,其特征在于:包括以下步骤,步骤1,
proxy
主进程启动;步骤2,主进程创建
bufferq
初始化线程;步骤3,主进程创建
bufferq handle
线程;步骤4,主进程创建
signal
信号量处理线程;步骤5,主进程初始化内核
v4l2 loopback
设备
。2.
根据权利要求1所述的一种基于
QNX Hypervisor
的图像采集方法,其特征在于:步骤2的具体内容如下,步骤
2.1

bufferq
初始化线程启动,该线程由
proxy
主进程拉起;步骤
2.2
,使用
mmap
分配6个图像缓存
buffer
,每个
buffer
大小为
1920x720x3

4147200bytes
;步骤
2.3
,使用
buffer_share_init()
接口初始化
bufferq
对象实例;步骤
2.4
,使用
buffer_share_prepare_buffer()
接口获取6个
bufferq buffer
地址,该地址将用于后续图像数据的写入
。3.
根据权利要求2所述的一种基于
QNX Hypervisor
的图像采集方法,其特征在于:步骤3的具体内容如下,步骤
3.1
,检查
bufferq
是否初始化,如已初始化,则调用
bufferq_fetch_new_frame()
函数,如未初始化,则说明
qnx
端发送图像数据的服务异常,则调用
bufferq_fill_frame_buffer()
函数;步骤
3.2
,通过
bufferq_fetch_new_frame()
函数不断循环
buffer_share_dequeue、buffer_share_enqueue
来获取
qnx
端发送的图像采集数据,获取到的图像数据格式为
BGRA8888
,然后通过如下公式将其转换为
UYVY
格式:然后将
YUV
数据按照
UYVY
的顺序排列,写入
v4l2 loopback buffer
...

【专利技术属性】
技术研发人员:陶文张单高逊达
申请(专利权)人:深圳市航盛电子股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1