全志V系列芯片如何实现mpp sample外编?

本文档提供了V系列多媒体mppsample脱离TinaSDK编译的方法。包括TinaSDK如何输出多媒体库、如何编写Makefile链接多媒体库、如何重新打包成全志固件等内容。适用于希望自行编写应用并通过Makefile编译链接多媒体库的用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.主题

V系列多媒体mpp sample外编方法

2.问题背景

用户希望Tina SDK 能提供编译工具链,多媒体库和头文件,使得自己编写的应用能编写Makefile 去链接多媒体库来编译生成app应用。
介于此方法,本FAQ提供一份编译系统demo样例。 里面包含说明了:

  1. Tina SDK 如何输出多媒体库;
  2. 如何编写Makefile 去链接多媒体库;
  3. 如何将Tina SDK 里面MPP的sample 放到这里进行编译;
  4. 不需要Tina SDK 如何重新打包成全志固件;
  5. 指导如何制作SPINOR 的烧录器固件;

3.解决办法

请下载附件的编译系统,并放到linux 上运行。 执行./build.sh 既可以编译。每个目录下都有个REAMD说明,请查看。

README:

本编译系统是一个演示全志V系多媒体mpp sample 脱离Tian SDK 编译的并编译后放到rootfs下重新做固件的一个demo

1. 本编译系统目录结构介绍

├── aw_pack_src #这个目录是V系列Tina SDK 编译打包后输出的目录,里面包含了库和分区文件
      ├── build.sh    #编译脚本
      ├── Makefile    #编译Makefile,可作为自己工程的参考
      ├── output      #编译后的应用和中间产物
      ├── sample      #sample 放置的目录
      ├── share_lib   #需要依赖的动态库(设备端rootfs也有)
      ├── mk_firmware #制作全志固件的脚本
      └── toolchain   #编译工具链

2. 使用方法:
①将V系列多媒体sample 拷贝到 ./sample 目前下。阅读./sample/README了解详情;
②将Tina SDK 新输出的文件夹aw_pack_src 重新替换当前的./aw_pack_src()
③执行 ./build.sh 进行编译
④编译成功后。在./out 可看到 sample 和 strip 后的sample

3. Tina SDK 如何生成新的aw_pack_src(库和头文件)来替换?

  • 选上配置
    make menuconfig --->Target Images --->[*]support pack out of tina
  • pack 打包,然后会在out/xx方案/生成一个目录:aw_pack_src,将此目录拷贝出来即可

4. 重新替换了个sample,但编译出错怎么解决?

  • cannot find -lxx 库
    因为多媒体的库会根据make meunconfig 来配置一些功能组件。如果需要增加/裁剪功能,则编译出来可能就多或少一些库了。
    如果发现报错cannot find -lxx , 可以直接尝试修改Makefile,把这个-lxxx 去掉再编译试试。

  • undefined reference xxx: 函数
    因为多媒体的库会根据make meunconfig 来配置一些功能组件。如果需要增加/裁剪,则编译出来可能就多或少一些库了。
    如果发现报错undefined reference xxx:,则可以库目录下执行grep -rn "xxx", 看能不能搜索出一些结果是关于库的,如:

grep -rn "AW_MPI_SYS_Init"
Binary file ./aw_pack_src/lib_aw/lib/eyesee-mpp/libaw_mpp.a matches

搜到AW_MPI_SYS_Init 结果在libaw_mpp.a库里面。 这时候在Makefile里面 加入-law_mpp 即可。

如果在本目录搜不到,则可以去Tina SDK目录搜索:

grep -rn "AW_MPI_SYS_Init" out/v851se-perf1/staging_dir/target/usr/lib   #注意v851se-perf1 是板子的名称。 这个目录下是SDK 编译出来的所有库 。

附件:sample_ex_compile.tar.gz

在Hi35xx系列芯片MPP架构中,UNF层(Unified Native Functionality Layer)是一个重要的概念,它主要负责提供统一的接口给应用层,使得开发者可以在不直接与硬件打交道的情况下,通过调用UNF层提供的API来实现各种媒体处理功能。在Hi3798芯片中,UNF层的作用尤为关键,因为它不仅封装了MPI(Media Processor Interface)层提供的硬件能力,还为应用软件开发者提供了一套更加直观和一致的开发接口。 参考资源链接:[海思MPP与UNF架构详解:Hi35xx与3798应用层对比](https://wenku.youkuaiyun.com/doc/3hen9xs263?spm=1055.2569.3001.10343) UNF层在Hi3798芯片中的应用层接口方面,允许开发者以一种标准化和统一的方式进行程,无论是在处理视频码、解码,还是在执行视频处理的其他复杂任务时,都能够通过UNF层提供的API接口来实现。在驱动接口方面,UNF层则负责与底层的DRV层(Driver Layer)交互,确保应用层的请求能够正确转化为硬件操作命令。 对于Hi3798芯片的内存管理,UNF层通过提供内存分配与管理的接口,简化了开发者对MMZ(Memory Management Zone)等关键资源的使用。例如,在视频解码的过程中,UNF层会自动处理视频帧的内存分配问题,让开发者不需要深入了解底层内存管理的复杂性。 在具体实现中,UNF层还涉及到了模块间的通信和协调,比如视频输入(VI)、视频解码(VDEC)、显示输出(DISPLAY)等模块,都需要UNF层来协调这些模块的工作,确保视频数据流的正确处理和输出。这些模块之间的交互往往涉及到大量的数据结构和控制逻辑,而UNF层提供了一种封装好的方式,使得开发者可以不必关心这些复杂的细节。 为了深入理解UNF层的具体实现和应用,建议参阅《海思MPP与UNF架构详解:Hi35xx与3798应用层对比》这一资料。该资料不仅详细介绍了UNF层的架构和功能,还提供了实际的代码示例和模块使用场景,让开发者能够更加清晰地把握UNF层在整个MPP架构中的作用。通过学习这些内容,开发者可以更好地利用Hi3798芯片的UNF层来优化自己的应用,提高开发效率和应用程序的性能。 参考资源链接:[海思MPP与UNF架构详解:Hi35xx与3798应用层对比](https://wenku.youkuaiyun.com/doc/3hen9xs263?spm=1055.2569.3001.10343)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值