一种基于静态链表的高安全性文件存储方法技术

技术编号:28558391 阅读:26 留言:0更新日期:2021-05-25 17:52
本发明专利技术公开了一种基于静态链表的高安全性文件存储方法,包括:将整个存储容量划分为四块区域,区域一为系统必备变量存储区,区域二为文件存储管理区,区域三为区域二的备份区,区域四为文件内容存储区,每一块区域内包含一个或多个扇区。本申请以扇区为最小文件存储单位,能够根据文件的大小,自动分配合适大小的空间给文件存储使用,提高存储容量的利用率,且文件存储效率高。

【技术实现步骤摘要】
一种基于静态链表的高安全性文件存储方法
本申请属于嵌入式系统的文件存储
,具体涉及一种基于静态链表的高安全性文件存储方法。
技术介绍
近年来国内嵌入式控制系统和单片机相关科技发展快速,由于其研发成本低,研发周期短,且灵活性和可扩展性好,各行各业开始对嵌入式或者单片机进行研发。由于运动控制器需要存储用户设计的各套动作流程文件、用户示教的简单轴运动轨迹路径文件、上位机生成的复杂轴运动路径轨迹文件、轴运动过程中的过渡曲线路径池以及用户存储的其他类型的文件等,同时在控制器工作工程中一旦读取到错误的数据,就有可能影响机器的正常运行,甚至损坏机器,故需要针对该系统开发一种合适的文件存储方式。针对嵌入式或者单片机的文件存储方式目前有很两种:一种是对存储芯片挂文件系统之后再存储文件(其中Fatfs文件系统较为常用);另一种是设计人员自主划分Flash空间进行存储,一般是等容量或者等区域划分。前一种方式:功能完善且强大,pc机可以直接识别存储器存储的内容,但是其运行开销较大,效率不高。在控制器控制轴运动时实时读取数据可能会影响轴的最高运动速度。后一种方式:其读取速度高,直接根据地址读取存储的数据即可,但是该方式的存储灵活性较差。在控制器的应用过程中,大量的文件都是由用户存储的,不同的用户对运动控制器有不同的应用方向,造成存储的文件大小不一、每一种大小的文件的数量无法决定,因此难以获得一个较好的存储器存储区域的划分方式。另外对于一些经常重复运行的控制器在控制机械运动的过程中,就需要保证读取到数据的正确性,错误的数据会影响控制器的正常运行,甚至可能会损坏机械。并且用户存储了文件以后,基本不会去检查文件的完好性,故在机器运动过程中,若读取到了错误数据,会干扰设备正常运行,降低产量和成品率,也可能会损坏设备。因此,在控制器的文件存储中,需要额外加一个数据校验功能,在数据校验失败的时候,能够通知控制器,使控制器迅速做出反应,并报警告知用户。
技术实现思路
本申请的目的在于提供一种基于静态链表的高安全性文件存储方法,存储容量的利用率高、文件存储效率高,同时具备较高的安全性。为实现上述目的,本申请所采取的技术方案为:一种基于静态链表的高安全性文件存储方法,应用于运动控制器的文件存储,所述基于静态链表的高安全性文件存储方法,包括:将整个存储容量划分为四块区域,区域一为系统必备变量存储区,区域二为文件存储管理区,区域三为区域二的备份区,区域四为文件内容存储区,每一块区域内包含一个或多个扇区,其中区域二存储有“文件元信息组”、“文件元信息排序表”、“已经存储的文件数量”、“区域四空闲扇区链表的第一个空闲扇区号”、“区域四空闲扇区链表的最后一个空闲扇区号”、“区域四空闲扇区链表的空闲扇区数量”、“文件内容存储区扇区索引表”、“数据异或校验码”;基于四块区域结合静态链表实现文件存储中的以下操作:输出全部已保存的文件名、开机检查区域二的数据、保存文件、读取文件、删除文件,其中:所述保存文件,包括:读取区域二中的“已经存储的文件数量”,若“已经存储的文件数量”大于或等于“文件元信息组”中元素个数,则存储失败;否则获取待存储的文件的文件名称、文件大小;读取区域二中的“区域四空闲扇区链表的空闲扇区数量”,若“区域四空闲扇区链表的空闲扇区数量”乘以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插入到“文件元信息排序表”中;将区域二中除“数据异或校验码”以外的数据读入区域二缓冲区,对区域二缓冲区的数据进行异或运算,把运算结果存入区域二的“数据异或校验码”中,将区域二缓冲区的数据和区域二的“数据异或校验码”覆盖到区域三,完成保存流程。以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。作为优选,所述输出全部已保存的文件名,包括:首先读取区域二的“已经存储的文件数量”并将其赋值给变量num,再设定一个变量count并赋值为0,判断count与num的值,若count大于或等于num,则结束程序;若count小于num,则获取“文件元信息排序表”中下标为count的数据赋值给变量file_sequ,将“文件元信息组”中下标为file_sequ的文件元信息中存储的文件名称输出,变量count的值自加1,并重新与num进行判断。作为优选,所述开机检查区域二的数据,包括:开机初始化,将区域二除了“数据异或校验码”的全部数据读入区域二缓冲区,对区域二缓冲区的数据进行异或操作;判断区域二异或操作的结果与区域二的“数据异或校验码”:若两者相等,则将区域二的内容拷贝到区域三中,将区域三除了“数据异或校验码”的全部数据读入区域三缓冲区,对区域三缓冲区的数据进行异或操作,判断区域三异或操作的结果与区域三的“数据异或校验码”,若两者相等,则开机初始化成功;若两者不相等,则文件存储管理区损坏;若两者不相等,将区域三的内容拷贝到区域二中,将区域二除了“数据异或校验码”的全部数据读入区域二缓冲区,对区域二缓冲区的数据进行异或操作,判断本文档来自技高网
...

【技术保护点】
1.一种基于静态链表的高安全性文件存储方法,应用于运动控制器的文件存储,其特征在于,所述基于静态链表的高安全性文件存储方法,包括:/n将整个存储容量划分为四块区域,区域一为系统必备变量存储区,区域二为文件存储管理区,区域三为区域二的备份区,区域四为文件内容存储区,每一块区域内包含一个或多个扇区,其中区域二存储有“文件元信息组”、“文件元信息排序表”、“已经存储的文件数量”、“区域四空闲扇区链表的第一个空闲扇区号”、“区域四空闲扇区链表的最后一个空闲扇区号”、“区域四空闲扇区链表的空闲扇区数量”、“文件内容存储区扇区索引表”、“数据异或校验码”;/n基于四块区域结合静态链表实现文件存储中的以下操作:输出全部已保存的文件名、开机检查区域二的数据、保存文件、读取文件、删除文件,其中:/n所述保存文件,包括:/n读取区域二中的“已经存储的文件数量”,若“已经存储的文件数量”大于或等于“文件元信息组”中元素个数,则存储失败;否则获取待存储的文件的文件名称、文件大小;/n读取区域二中的“区域四空闲扇区链表的空闲扇区数量”,若“区域四空闲扇区链表的空闲扇区数量”乘以4096后小于待存储的文件大小,则存储失败;否则继续运行;/n获取“文件元信息组”中一个空闲的文件元信息,将该空闲的文件元信息的下标设为s,将待存储的文件的文件名称和文件大小存储至下标为s的文件元信息中,读取区域二中的“区域四空闲扇区链表的第一个空闲扇区号”的值并赋值给变量save_sequ,并将变量save_sequ的值赋值给下标为s的文件元信息中的存储文件内容的第一个扇区中进行保存;/n将文件大小赋值给变量remain,若remain大于4096,则顺序获取待存储文件的4K大小的字节内容,且变量remain自减4096;若remain小于或等于4096,则获取待存储文件的当前未存储的所有字节内容,且变量remain赋值为0;/n将获取到的字节内容存入缓冲区,对缓冲区内的字节内容进行异或运算,将异或运算结果存入“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅱ中,且将缓冲区内的字节内容存入序号为save_sequ的扇区中;/n把“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ的数据赋值给save_sequ;区域二中的“空闲扇区的数量”自减1;若变量remain大于0,则重新判断remain与4096的大小并执行字节内容获取的操作;若变量remian等于0,则继续向下运行;/n将“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ中的数据赋值给“区域四空闲扇区链表的第一个空闲扇区号”,将“文件内容存储区扇区索引表”中下标为save_sequ的元素的内容Ⅰ中的值修改为0,将“文件元信息组”中下标为s的文件元信息的空闲标志位清零,区域二中的“已经存储的文件数量”自加1;/n以所述文件元信息的文件名为排序依据,通过插入算法,把当前被操作的文件元信息的下标s插入到“文件元信息排序表”中;/n将区域二中除“数据异或校验码”以外的数据读入区域二缓冲区,对区域二缓冲区的数据进行异或运算,把运算结果存入区域二的“数据异或校验码”中,将区域二缓冲区的数据和区域二的“数据异或校验码”覆盖到区域三,完成保存流程。/n...

【技术特征摘要】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1