海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

时间:2024-04-04 18:11:23

目录

1.文件目录结构

2.Makefile

3.源代码分析

3.1pq_sample.c文件

3.2pq_stream的注册过程:

3.3pq_control的实现过程:


 

pq_sample的代码是用于海思的ISP在线调试的代码,本系统是采用的海思的异构方案(linux+liteos)的系统形式,pq_sample的代码是运行于a53上面的liteos系统中,实现了pq_stream和pq_control的命令功能,实时视频流和上位机的传输。

通过分析这份代码有助于研究liteos的使用方法,以及可以作为在liteos上实现添加命令和实时视频传输功能的参考。

 

1.文件目录结构

首先解压Hi3559AV100_PQ_V2.0.3.0_AMP.tgz压缩包里面的内容。进入里面的pq_sample目录:

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

从上面的目录文件可以看出,两个静态库libcontrol.a和libstream.a,这个应该是实现了视频流的主要的功能,本来想参考一下海思的实时图传,估计很难。我们能够看得就是Makefile、pq_stream.c、pq_sample.c和pq_control.c。

 

2.Makefile

首先通过Makefile了解一下,这些文件的编译过程。根据《图像质量调试工具使用指南》上的介绍首先要制定SDK的路劲,就是这个SDK:Hi3559AV100_SDK_V2.0.3.0。可能是这个路劲下面包含了很多的依赖,比如说/mpp/out/liteos/single/lib、/osdrv/platform/liteos_a53/liteos。我的是按下面所示:

SDK_DIR=/home/work/xuyw/src/hi3559av100/new-sdk/double-os/sdk/Hi3559AV100_SDK_V2.0.3.0

具体的Makefile详细分析,已上传至:https://download.csdn.net/download/u010299133/11882911

这个Makefile对我们自己设计自己的a53端liteos 的镜像文件还是有一定的帮助和参考的。

 

3.源代码分析

3.1pq_sample.c文件

从函数void app_init(void)开始

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

开始这一部分是ipcm和sharefs以及virt-tty的实现,实现的功能主要是异构系统的相互之间的通行,如:sharefs,virt-tty等。在liteos中的menuconfig中配置。

 

接下来是串口的初始化:

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

 

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

 

 

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

SDK_init();函数是liteos mpp这一层的vi vo vdec等模块的初始化。

sample_command();函数注册在liteos系统启动后需要执行的命令,pq_stream和pq_control。

CatLogShell();

pq_sample.c

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

 

以下是app_stream和app_control的函数实现,最主要的思路就是创建了两个任务

3.2pq_stream的注册过程:

pq_stream.c

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

上面所示的pq_stream_main(argc, argv);函数在libstream.a中实现。

 

3.3pq_control的实现过程:

pq_control.c

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

 

海思平台(hi3559av100)的pq_sample代码编译过程和执行过程

上面所示的pq_control_main(argc,argv);在libcontrol.a中实现。