目录
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目录:
从上面的目录文件可以看出,两个静态库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)开始
开始这一部分是ipcm和sharefs以及virt-tty的实现,实现的功能主要是异构系统的相互之间的通行,如:sharefs,virt-tty等。在liteos中的menuconfig中配置。
接下来是串口的初始化:
SDK_init();函数是liteos mpp这一层的vi vo vdec等模块的初始化。
sample_command();函数注册在liteos系统启动后需要执行的命令,pq_stream和pq_control。
CatLogShell();
pq_sample.c
以下是app_stream和app_control的函数实现,最主要的思路就是创建了两个任务
3.2pq_stream的注册过程:
pq_stream.c
上面所示的pq_stream_main(argc, argv);函数在libstream.a中实现。
3.3pq_control的实现过程:
pq_control.c
上面所示的pq_control_main(argc,argv);在libcontrol.a中实现。