
手把手教你封装跨芯片方案的IPC通用库
文章平均质量分 83
手把手教学,让你从零开始,深入了解IPC通用库的方方面面,包括:Led灯控制、白光灯控制、按键处理、SD卡使用、Flash读写、媒体存储、配置读写、狗监控、有线网络配置、Wifi网络配置、网络管理、声音检测算法等跨芯片方案专业知识。
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
希望_睿智
中国科学技术大学毕业,专注于音视频领域近二十年,全网访问量近500万,粉丝近10万。在嵌入式开发、运营级平台、音视频编解码、视频图像处理、流媒体、深度学习、人工智能等多个方向具备实战开发经验和技术积累,共发表发明专利十余项,软件著作权几十项。商务合作和推广,可私信联系。
展开
-
1 跨芯片方案的IPC通用库的架构设计
一提起架构设计,很多人会觉得有点“高大上”,普通程序员平时接触不到这些东西。还有些人觉得架构设计是个“伪概念”,“假大空”,没什么实际内容,做好程序员“码代码”的本职工作就够了。实际上,架构设计既不是“镜中花,水中月”,也不是“远在天边,遥不可及”。用好了架构设计,可以为我们的编程提供坚实的“地基”和“骨架”,大大方便了后期的维护和扩展工作。原创 2023-02-01 12:14:44 · 4495 阅读 · 46 评论 -
2 Led指示灯的封装
通常情况下,IPC设备均有Led指示灯,用于指示电源状态、网络状态、与平台的连接状态等。有的设备有一个Led指示灯,有的设备有两个Led指示灯,一般为红蓝灯或红绿灯。Led指示灯工作时,有三种状态:常亮、常灭和闪烁。闪烁状态实际上是按一定的频率切换亮和灭。嵌入式开发时,一般通过GPIO引脚输出高低电平来控制Led指示灯的亮和灭。因此,在封装Led指示灯之前,我们需要先封装GPIO的实用类。原创 2023-02-01 14:04:20 · 1018 阅读 · 5 评论 -
3 白光灯的封装
白光灯主要有两种用途:一是全彩夜视和智能夜视时,点亮白光灯,视频画面是全彩的,可有效提升视频画面的夜间效果;二是发生区域入侵、人脸识别等事件时,可以进行灯光报警,用于震慑或提醒相关人员。并不是所有的IPC设备均有白光灯,一般情况下,只有用于室外或庭院的枪机带有白光灯,用于室内的云台机不带白光灯。和Led指示灯一样,白光灯也是通过GPIO管脚的高低电平来控制亮、灭和闪烁的。原创 2023-02-01 14:24:03 · 489 阅读 · 2 评论 -
4 按键的封装
IPC设备上一般都有复位键,长按复位键,可恢复出厂设置。有时候,短按复位键可用于执行重新配网等操作。除了复位键,云台机上可能还有用于双向对讲的扩展按键。按下扩展按键,可开启对讲,再按一下,可停止对讲。原创 2023-02-01 15:41:07 · 1010 阅读 · 2 评论 -
5 SD卡的封装
SD卡主要用于存储IPC设备端的端侧录像,以用于后续的点播和下载。因为在公有云和私有云上存储录像一般是按月或按年收费的,一些用户可能不会订购云存套餐。此时,端侧的SD卡录像就发挥了重要作用,可以为用户存储少则几天,多则一两个月的录像。IPC设备上一般都有SD卡的卡槽,用于插入标准SD卡或Micro SD卡(也叫TF卡)。在这一节,我们只会介绍与SD卡本身有关的内容,包括:获取SD卡的容量信息、格式化SD卡、获取SD卡的状态等。至于录像文件的存储格式、录像文件的读写等功能,则放到后面的章节专门介绍。原创 2023-02-01 15:53:30 · 858 阅读 · 4 评论 -
6 Flash的封装
嵌入式开发中,一般将Flash划分成多个分区进行使用,每个分区对应一块特定的数据。基本上所有的嵌入式程序都有uboot、kernel和rootfs这三个通用的分区,有的嵌入式程序还有程序分区、数据分区、网页分区等。开发IPC设备时,设备上的配置信息和序列号、mac地址等认证信息一般加密存储在一个单独的分区中。对接某些平台时,可能还需要一个可读可写的数据目录,这个数据目录和对应的文件系统也可以放在一个单独的分区。原创 2023-02-06 10:14:41 · 720 阅读 · 9 评论 -
7 配置的封装
IPC设备通常有三种配置信息:一是默认配置,存储了设备所有配置项的默认值,默认配置是只读的,不能修改;二是用户配置,存储了用户修改过的所有配置项;三是私有配置,存储了程序内部使用的一些配置项,比如:固件升级的URL、固件升级标志位等。恢复出厂设置的操作,实际上就是将用户配置的内容清空,从而将配置项的值还原成默认配置。配置信息实际上是多个键值对,键可以使用字符串来标记,值可以有多种形式,比如:整型、字符串型、布尔型,还可以是更为复杂的结构。原创 2023-02-18 10:42:33 · 727 阅读 · 40 评论 -
8 狗监控的封装
为了保证嵌入式程序能够长时间稳定地运行,需要加入狗监控机制。狗监控的原理为:应用程序需要每隔一段时间来喂狗或保活,如果应用程序崩溃或者内核崩溃,导致长时间无法喂狗,则狗将超时,会自动重启系统。部分IPC芯片提供了硬件狗,对于没有硬件狗的,需要自行实现软件狗。Linux内核自带了一个软件狗的实现,用于监控系统的运行情况。内核软件狗模块通过/dev/watchdog这个设备与用户空间程序进行通信,用户空间程序一旦打开/dev/watchdog设备,就会导致在内核中启动一个定时器。原创 2023-02-20 21:47:22 · 2255 阅读 · 64 评论 -
9 有线网络的封装
IPC设备一般都带有网口,支持以有线网络方式接入NVR和其他平台。有线网络的使用比较简单,主要操作有:设置IP地址、子网掩码、网关、DHCP等。在封装有线网络前,我们需要先封装DHCP客户端管理类,用于管理各种网络的DHCP功能。原创 2023-03-04 10:58:47 · 2067 阅读 · 63 评论 -
10 Wifi网络的封装1
Wifi有多种工作模式,比如:STA模式、AccessPoint模式、Monitor模式、Ad-hoc模式、Mesh模式等。但在IPC设备上,主要使用STA和AccessPoint这两种模式。下面分别进行介绍。STA模式:任何一种无线网卡都可以运行在此模式,这种模式也是无线网卡的默认模式。在此模式下,无线网卡发送连接与认证消息给热点。热点完成认证后,返回成功认证的消息,此时网卡成功接入无线网络。AccessPoint模式:也叫AP模式,在一个无线网络环境中,无线热点作为一个主设备,工作于主模式。原创 2023-03-08 08:45:24 · 1990 阅读 · 42 评论 -
11 Wifi网络的封装2
在线程Run函数中,会根据当前工作模式选择调用Run_Station还是Run_AP。在Run_Station函数中,会根据当前的工作步骤分别调用Station_Init、Station_StartAuth、Station_CheckLink、Station_ConfigNetwork、Station_CheckNetwork等函数。在Run_AP函数中,会根据当前的工作步骤分别调用AP_Init、AP_Auth、AP_StartDHCPServer、AP_CheckNetwork等函数。原创 2023-03-25 21:19:50 · 221 阅读 · 5 评论 -
12 网络管理的封装
对于具有多个网络接口的IPC设备,一般需要对其进行网络的切换和管理。比如云台机,可能既有有线网络,又有Wifi网络,当Wifi网络异常时,能否自动切换到有线网络,就涉及到网络的管理。原创 2023-05-03 20:02:23 · 840 阅读 · 33 评论 -
13 媒体存储的封装1
IPC一般都会有本地存储的需求,插入TF卡或SD卡后,会在卡中进行录像文件的存储。录像存储一般有两种方式:文件存储和流式存储。文件存储有以下三个问题:一是最后一个录像文件可能由于异常断电而丢失,或者无法使用;二是录像文件一般采用mp4格式,而mp4文件有某些限制,比如:只支持AAC编码格式,不支持ADPCM、G711A等编码格式;三是获取录像文件的连续时间段不方便(用于客户端展示时间轴)。流式存储有以下四个问题:一是需要一下子缓存若干秒的所有媒体数据,耗费的内存比较多;原创 2023-05-25 08:18:38 · 1062 阅读 · 21 评论 -
14 媒体存储的封装2
在线程的Run函数中,会将m_listRecordFrame中的音视频数据取出,并写入磁盘中。WriteVideoFrame和WriteAudioFrame接口中,从内存池中取出合适大小的内存,将音视频帧写入其中,并放入队列中保存起来。在本专栏中,我们只实现了时间轴方式存储录像的接口,文件方式存储录像的接口、图片存储和报警事件存储的接口相对来说比较简单,这里就略去不表了。Init接口中,调用了CMediaDisk类的Init接口,并分配了内存池。线程Run函数中,会从保存的队列中取出一帧数据,并写入磁盘。原创 2023-05-25 08:23:10 · 784 阅读 · 11 评论 -
15 媒体存储的封装3
CMediaDisk类真正实现了录像文件的存储、查询和点播。存储录像文件时,需要满足以下的几个基本需求:1、异常断电不能丢失数据。2、录像既支持普通文件的查询方式,也支持时间轴的查询方式。3、修改设备时间时,不能够丢失已有录像和数据。向后修改时间时,如果当前时间已有录像,则不覆盖老数据;直到有未录像的时间段时,才再次写入新数据。4、支持删除媒体文件,也支持按时间段删除。5、支持标记录像文件、抓拍文件,也支持按时间段标记。6、支持自动覆盖最老的文件。7、支持多个设备、多路视频的录像存储。原创 2023-05-25 08:29:18 · 987 阅读 · 20 评论 -
16 声音检测算法的封装
在IPC中,有时候需要对声音的大小进行检测。当声音的分贝数超过一定阈值时,一般会联动进行抓图、录像等动作。声音的采集与具体的芯片方案有关,但声音的检测与芯片方案关系不大,我们可以采用软件算法的方式来进行处理。原创 2023-06-03 16:45:45 · 1009 阅读 · 42 评论