CODE_LINUX_APP_RINGBUF

主要用途:通过共享的缓存数组,可以实现两个线程分别进行缓存的读写操作,而且读写操作不需要使用互斥锁机制。使用多维数组,可以实现多路数据的独立缓存。

能力分类:嵌入式

应用领域:安防监控,电源电池,机器人,无人机,射频通信

交易方式: 定制

参考价格:50000.00 小贴士:当前佣金是0%

好评率:100%| 综合评分:5.0| 已购买:0次
联系我 收藏店铺
分享: 

 模块描述

1.1  原理及方式

通过多全局数组作为共享缓存,可以静态设置每个缓存大小。目前实现方式为循环缓存,用户需要确保数据读取速率大于数据存放速率,如果出现缓存溢出的情况,新数据会覆盖旧数据。

1.2  主要功能

通过共享的缓存数组,可以实现两个线程分别进行缓存的读写操作,而且读写操作不需要使用互斥锁机制。使用多维数组,可以实现多路数据的独立缓存。

 标准模块

 模块设计

IP实现模块比较清晰,主要分为初始化、数据存放和数据读取三个部分,每个部分对应一个函数实现,具体API及参数含义如下:

1)缓存初始化接口函数

 

函数原型

void init_ring_buffer(unsigned char channelNo,unsigned int storageDepth)

功能描述

缓存初始化

输入参数

channelNo :    缓存通道索引

storageDepth:   缓存大小(总字节数)

输出参数

全局变量值的变化

返回值

 

2)缓存数据存放接口函数

 

函数原型

void put_ring_buffer (unsigned char channel, unsigned char *inputData, unsigned int  len)

功能描述

缓存数据存放

输入参数

channel:    缓存通道索引

inputData:  指向存放数据的指针

len:        存放数据长度(总字节数)

输出参数

全局变量值的变化

返回值

 

3)缓存数据读取接口函数

 

函数原型

int get_ring_buffer (unsigned char channelNo ,char *pBuf,  int buff_len)

功能描述

缓存数据存放

输入参数

channelNo:    缓存通道索引

len:          最大读取字节数

输出参数

pBuf:        指向存放数据的指针

全局变量值的变化

返回值

实际读取数据的字节数

 

类定义

应用举例

DM8148视频音频项目,使用缓存分别对视频和音频数据进行缓存,DVI视频、PAL视频和音频数据分别使用一个缓存通道。以视频为例,8148 ARM端开启一个线程,从底层获取视频数据,放入缓存;RTSP线程则定时轮询,从缓存读取数据,通过网络发送至上位机。

 其他


总体评价

好评率:100%

好评数量:0

总体评分

工作速度:5分

工作质量:5分

工作态度:5分

暂无评价

企业其他能力

More>