blackfin 数据录波的一些思路

 

数据信息的存储:

 

 

RAM数据格式:划分为各个信号量相关的数组,(信号量个数= 数组个数),最多支持数组个数?

写入ram:定时写入,当定时事件发生时,依次对各个数组的数据进行写入。

 

数组满的处理:当数组写到结尾时,重新从头部覆盖掉旧数据写入。

 

1.  RAM区建立buffer1,并定义数组data1Array[]data2array[]。。。datanArray[]映射到该buffer,数组个数设为m

2.  flash区建立buffer2,并有buffer2长度>buffer1长度;具体长度的选取需要考虑以下因素:

1)    若存储事件的个数为n;必须有: buffer2 > =m*n*lengthrequirebuffer1>= m*lengthdata

其中:m,信号总量个数, 可设置;

n,事件记录个数,可设置;

lengthrequire,每个信号量的采集点数,可设置;

注:以上可设置参数的最终结果受到实际flash存储区大小的限制。

2)    实际上对于buffer1还需要更详细的定义,该buffer区用来存储的数组长度与用户需求的数据长度关系:用户需求数据长度设置为lengthrequire,数组长度为lengthdata,单个字(字节)写入flash的时间为t1,定时写入ram的周期为t2,那么有必须:lengthrequire*t1 <(lengthdata -lengthrequire)*t2,否则不能保证lengrequire被完整写入flash。,整理得到:

Lengthdata>(t1+t2)/t2*lengthrequire,

其中,t1固定特性,可测定,不可设置;

T2用户可设置;

Lengthrequire用户设置;

注:以上可设置参数的设置结果受到实际可用RAM大小的限制。

 

 

3.  定时事件发生:当前信号量写入dataArray[]

 

 

4.  Sport事件发生:

1)  读取dataArray[]当前序号,

2)  判断(当前序号-lengthaquire/2>0

是:从dataArray[当前序号-lengthaquire/2]开始复制数据,数据长度为lengthaquire;中间加入判断,如果(当前序号+ lengthaquire/2> lengthdata,那么(当前序号+lengthaquire/2- -lengthdata 作为数据的复制终点序列。

否:从dataarray[lengthdata+当前序号- lengthaquire/2]开始复制数据。

3)  返回写入flash操作结果。

4)  事件记录数++

 

5.  用户回调事件信息命令:

解析用户命令,查找到相应的命令对应的 flash 存储数据位置;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值