【技术实现步骤摘要】
一种基于静态链表的高安全性文件存储方法
本申请属于嵌入式系统的文件存储
,具体涉及一种基于静态链表的高安全性文件存储方法。
技术介绍
近年来国内嵌入式控制系统和单片机相关科技发展快速,由于其研发成本低,研发周期短,且灵活性和可扩展性好,各行各业开始对嵌入式或者单片机进行研发。由于运动控制器需要存储用户设计的各套动作流程文件、用户示教的简单轴运动轨迹路径文件、上位机生成的复杂轴运动路径轨迹文件、轴运动过程中的过渡曲线路径池以及用户存储的其他类型的文件等,同时在控制器工作工程中一旦读取到错误的数据,就有可能影响机器的正常运行,甚至损坏机器,故需要针对该系统开发一种合适的文件存储方式。针对嵌入式或者单片机的文件存储方式目前有很两种:一种是对存储芯片挂文件系统之后再存储文件(其中Fatfs文件系统较为常用);另一种是设计人员自主划分Flash空间进行存储,一般是等容量或者等区域划分。前一种方式:功能完善且强大,pc机可以直接识别存储器存储的内容,但是其运行开销较大,效率不高。在控制器控制轴运动时实时读取数据可能会影响轴的最高运动速度。后一种方式:其读取速度高,直接根据地址读取存储的数据即可,但是该方式的存储灵活性较差。在控制器的应用过程中,大量的文件都是由用户存储的,不同的用户对运动控制器有不同的应用方向,造成存储的文件大小不一、每一种大小的文件的数量无法决定,因此难以获得一个较好的存储器存储区域的划分方式。另外对于一些经常重复运行的控制器在控制机械运动的过程中,就需要保证读取到数据的正 ...
【技术保护点】
1.一种基于静态链表的高安全性文件存储方法,应用于运动控制器的文件存储,其特征在于,所述基于静态链表的高安全性文件存储方法,包括:/n将整个存储容量划分为四块区域,区域一为系统必备变量存储区,区域二为文件存储管理区,区域三为区域二的备份区,区域四为文件内容存储区,每一块区域内包含一个或多个扇区,其中区域二存储有“文件元信息组”、“文件元信息排序表”、“已经存储的文件数量”、“区域四空闲扇区链表的第一个空闲扇区号”、“区域四空闲扇区链表的最后一个空闲扇区号”、“区域四空闲扇区链表的空闲扇区数量”、“文件内容存储区扇区索引表”、“数据异或校验码”;/n基于四块区域结合静态链表实现文件存储中的以下操作:输出全部已保存的文件名、开机检查区域二的数据、保存文件、读取文件、删除文件,其中:/n所述保存文件,包括:/n读取区域二中的“已经存储的文件数量”,若“已经存储的文件数量”大于或等于“文件元信息组”中元素个数,则存储失败;否则获取待存储的文件的文件名称、文件大小;/n读取区域二中的“区域四空闲扇区链表的空闲扇区数量”,若“区域四空闲扇区链表的空闲扇区数量”乘以4096后小于待存储的文件大小,则 ...
【技术特征摘要】
1.一种基于静态链表的高安全性文件存储方法,应用于运动控制器的文件存储,其特征在于,所述基于静态链表的高安全性文件存储方法,包括:
将整个存储容量划分为四块区域,区域一为系统必备变量存储区,区域二为文件存储管理区,区域三为区域二的备份区,区域四为文件内容存储区,每一块区域内包含一个或多个扇区,其中区域二存储有“文件元信息组”、“文件元信息排序表”、“已经存储的文件数量”、“区域四空闲扇区链表的第一个空闲扇区号”、“区域四空闲扇区链表的最后一个空闲扇区号”、“区域四空闲扇区链表的空闲扇区数量”、“文件内容存储区扇区索引表”、“数据异或校验码”;
基于四块区域结合静态链表实现文件存储中的以下操作:输出全部已保存的文件名、开机检查区域二的数据、保存文件、读取文件、删除文件,其中:
所述保存文件,包括:
读取区域二中的“已经存储的文件数量”,若“已经存储的文件数量”大于或等于“文件元信息组”中元素个数,则存储失败;否则获取待存储的文件的文件名称、文件大小;
读取区域二中的“区域四空闲扇区链表的空闲扇区数量”,若“区域四空闲扇区链表的空闲扇区数量”乘以4096后小于待存储的文件大小,则存储失败;否则继续运行;
获取“文件元信息组”中一个空闲的文件元信息,将该空闲的文件元信息的下标设为s,将待存储的文件的文件名称和文件大小存储至下标为s的文件元信息中,读取区域二中的“区域四空闲扇区链表的第一个空闲扇区号”的值并赋值给变量save_sequ,并将变量save_sequ的值赋值给下标为s的文件元信息中的存储文件内容的第一个扇区中进行保存;
将文件大小赋值给变量remain,若remain大于4096,则顺序获取待存储文件的4K大小的字节内容,且变量remain自减4096;若remain小于或等于4096,则获取待存储文件的当前未存储的所有字节内容,且变量remain赋值为0;
将获取到的字节内容存入缓冲区,对缓冲区内的字节内容进行异或运算,将异或运算结果存入“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅱ中,且将缓冲区内的字节内容存入序号为save_sequ的扇区中;
把“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ的数据赋值给save_sequ;区域二中的“空闲扇区的数量”自减1;若变量remain大于0,则重新判断remain与4096的大小并执行字节内容获取的操作;若变量remian等于0,则继续向下运行;
将“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ中的数据赋值给“区域四空闲扇区链表的第一个空闲扇区号”,将“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ中的值修改为0,将“文件元信息组”中下标为s的文件元信息的空闲标志位清零,区域二中的“已经存储的文件数量”自加1;
以所述文件元信息的文件名为排序依据,通过插入算法,把当前被操作的文件元信息的下标s插入到“文件元信息排序表”中;
将区域二中除“数据异或校验码”以外的数据读入区域二缓冲区,对区域二缓冲区的数据进行异或运算,把运算结果存入区域二的“数据异或校验码”中,将区域二缓冲区的数据和区域二的“数据异或校验码”覆盖到区域三,完成保存流程。
2.如权利要求1所述的基于静态链表的高安全性文件存储方法,其特征在于,所述输出全部已保存的文件名,包括:
首先读取区域二的“已经存储的文件数量”并将其赋值给变量num,再设定一个变量count并赋值为0,判断count与num的值,若count大于或等于num,则结束程序;若count小于num,则获取“文件元信息排序表”中下标为count的数据赋值给变量file_sequ,将“文件元信息组”中下标为file_sequ的文件元信息中存储的文件名称输出,变量count的值自加1,并重新与num进行判断。
3.如权利要求1所述的基于静态链表的高安全性文件...
【专利技术属性】
技术研发人员:董辉,罗帅,俞晓锋,刘安东,吴祥,郭方洪,俞立,
申请(专利权)人:浙江工业大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。