1 跨芯片方案的IPC通用库的架构设计

本文介绍了跨芯片方案的IPC通用库的架构设计,包括其使用场景、功能需求和目标。功能需求涵盖了音视频采集、LED控制、按键处理、SD卡读写等方面。目标是实现与芯片方案无关的功能点,提供统一接口,便于应用层开发。架构设计通过公共目录和芯片方案目录来组织代码,以应对变化的芯片特性。

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

 🔥🔥🔥 👉本专栏限时折扣中,当前只需要99.9元,2025年5月31后恢复原价199.9元,各位需要的同学请抓紧订阅。

💡 需要该IPC库源码的大佬们,可扫码关注文章末尾的微信公众号二维码,或搜索微信公众号“希望睿智”。添加关注后,输入消息“IPC库”,即可免费获得源码的下载链接。

专栏特色

        1、所有源码严格遵守统一的编码规范。

        2、纯C++接口,接口封装严谨,接口功能丰富,应用层调用简单便捷。

        3、近二十年行业经验和技术积累打造的高质量商用级代码,架构清晰合理,便于扩展和维护。

        4、绝不空谈概念和原理,实打实地进行源码的展示和要点的讲解。专栏一共16篇,已完结。

        5、根据功能模块分章节进行详细介绍,每个章节可独立阅读,让你真正吃透每一个功能模块。

        6、通过学习本专栏,你可以深入了解GPIO控制、按键处理、SD卡使用、Flash读写、配置读写、狗监控、有线网络配置、Wifi网络配置、网络管理、媒体存储、声音检测等一系列跨芯片方案的专业知识。

        7、通过学习本专栏,你可以深入了解IPC开发领域的各种嵌入式知识和行业领域知识,让你从行业小白晋升为安防监控领域的专业人才。

        8、通过学习本专栏,你可以超近距离研究行业大牛的架构设计、逻辑思维、编码风格、封装细节等大量宝贵经验,让你从菜鸟跻身技术专家。

概述

        一提起架构设计,很多人会觉得有点“高大上”,普通程序员平时接触不到这些东西。还有些人觉得架构设计是个“伪概念”,“假大空”,没什么实际内容,做好程序员“码代码”的本职工作就够了。实际上,架构设计既不是“镜中花,水中月”,也不是“远在天边,遥不可及”。用好了架构设计,可以为我们的编程提供坚实的“地基”和“骨架”,大大方便了后期的维护和扩展工作。

        没有万能的架构设计,架构设计是与使用场景、功能需求和目标息息相关的。架构设计是为了在在某个使用场景下,完成所有的功能需求,更好地达成目标。回到本节内容的主题 —— “跨芯片方案的IPC通用库的架构设计”,主题名中其实已经点明了使用场景,也就是在封装跨芯片方案的IPC通用库时,进行相应的架构设计。那么,功能需求呢?下面我们来好好聊一聊。

功能需求

        IPC,英文全称为IP Camera,中文意思为网络摄像机,是一种结合传统摄像机与网络技术所产生的新一代摄像机。IPC一般由镜头、图像传感器、声音传感器、信号处理器、A/D转换器、编码芯片、主控芯片、网络及控制接口等部分组成。IPC按使用场景来划分,可分为室外使用和室内使用。

        室外使用时,多采用枪机、球机等形态,并且需要支持防水。室外IPC上一般都有网口,用于插入网线以使用有线网络,或者有sim卡的卡槽,用于插入sim卡以使用移动网络。室外IPC还应支持红外夜视和全彩夜视,红外夜视时,需要打开设备的红外灯;全彩夜视时,则需要打开设备的白光灯。室外IPC支持的智能算法主要有移动侦测、区域入侵等。

        室内使用时,多采用云台机(又叫摇头机)、球机等形态,并且需要支持转动。室内IPC上一般都有网口,用于插入网线以使用有线网络,或者有wifi模块,用于配置wifi以使用无线网络。室内IPC只有红外灯,没有白光灯。室内IPC通常还有对讲按键,用于主动发起和停止双向语音对讲。室内IPC支持的智能算法主要有人形检测、人形跟踪、声音检测等。

        除了上面介绍的这些差异,室外IPC和室内IPC还有很多共同点:

        1、都有Led指示灯,用于指示设备的工作状态。

        2、都有扬声器和麦克风,用于播放和采集声音。

        3、都有Sensor和编码器,用于采集和编码视频。

        4、都有SD卡卡槽,用于插入SD卡以存储录像文件和其他数据。

        5、都有复位按键,用于恢复出厂设置。

        总结上面这些内容,我们可以很容易得出IPC的功能需求大致如下:

        1、音视频的采集和编码,用于后续的存储和传输。

        2、控制Led指示灯、白光灯、红外灯。

        3、支持按键检测,用于应用层进行按键处理。

        4、支持昼夜转换时,进行黑白夜视和全彩夜视的处理。

        5、支持SD卡的加载、格式化以及录像文件的读写。

        6、可保存应用层的配置信息,支持配置信息的读写。

        7、支持有线网络、wifi网络的配置,以及网络的切换和管理。

        8、支持双向语音对讲,设备端可发起和停止对讲。

        9、支持云台的上下左右转动、前往预置位等各种操作。

        10、支持Flash的读写,用于存储配置信息、授权认证信息,以及固件升级。

        11、支持狗监控,程序崩溃、系统异常时可自动复位重启。

        12、支持移动侦测、人形检测、人形跟踪、声音检测、区域入侵等智能算法。

        到这里,功能需求已经比较清楚了,那我们封装跨芯片方案的IPC通用库的目标是什么呢?

目标

        封装跨芯片方案的IPC通用库的目标主要包括如下几点:

        1、只关注与芯片方案无关的功能点,比如:GPIO控制、按键处理、SD卡使用、Flash读写等。与具体的芯片方案(如:海思、君正、联咏、富瀚微)有关的功能点,比如:视频编解码、音频编解码、ISP等,则无需关注。

        2、应用层可以很方便地集成跨芯片方案的IPC通用库进行开发,不需要关心硬件和底层的具体实现。

        3、接口统一,底层实现的修改不影响接口本身;接口丰富,可以与中国移动的移动看家SDK、中国电信的天翼看家统一SDK等搭配进行敏捷开发。

        4、代码规范,逻辑清晰,封装合理,易于维护,易于扩展。

架构设计

        了解了跨芯片方案的IPC通用库的使用场景、功能需求和目标后,接下来,我们便可以开始架构设计了。架构设计时,需要从全局来考虑问题,理清楚哪些因素是变化的,哪些因素是不变的。具体到跨芯片方案的IPC通用库,可以发现,Led指示灯、白光灯、按键、Flash、SD卡、网络等与具体的芯片方案无关,属于不变的因素;视频采集、音频采集、音频播放、智能算法等与具体的芯片方案和芯片型号有关,属于变化的因素。

        对于不变的因素,可以将对应的源代码放到公共目录下,比如:可以取名叫Common目录。对于变化的因素,可以将对应的源代码放到芯片方案目录下,比如,君正芯片方案的放到Ingenic目录,海思芯片方案的放到Hisi目录,富瀚微芯片方案的放到Fullhan目录。

        通常来说,同一个芯片方案商,不同型号的芯片,SDK提供的API接口并不完全相同,有的可能差异巨大。为了屏蔽不同型号的芯片引入的变化因素,我们可以引入一个统一的接口基类,不同型号的芯片的实现类均从该基类派生。以君正芯片方案举例,我们可以在Ingenic目录下新建T31、T40、T41等目录,用于存放对应芯片的派生类源码、SDK库文件和第三方库文件。

        下面是跨芯片方案的IPC通用库的目录结构:

         其中,Include目录用于存放需要导出的头文件,Src目录用于存放需要实现的C++文件,Build目录用于存放各个芯片方案和芯片型号的编译脚本。本专栏只会介绍Src/Common目录下与芯片方案无关的功能点的封装,特定芯片方案的功能点的封装,可以关注后续其他专栏。

        好了,跨芯片方案的IPC通用库的架构设计就先介绍到这里。接下来,我们需要逐个实现跨芯片方案的IPC通用库的功能接口了。万事开头难,让我们从最简单的Led指示灯的封装开始吧。不用担忧,也不用畏惧,跟着本专栏的章节一起学习,你将收获一个更强大的自己。献出下面这首写于2020年1月的拙诗,与大家共勉。

                      《临子鼠偶感》

        大雪纷纷自天游,潜入万物何时休。

        寒冬腊月树抖擞,但闻枝头鸟鸣奏。

        百年变局未曾有,万里征程方正筹。

        待到春日风清幽,滔滔江水复奔流。

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

希望_睿智

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值