System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及通信,具体涉及一种基于yaffs文件系统对硬盘的访问方法。
技术介绍
1、yaffs文件系统是一种针对nand flash(闪存)设计的嵌入式日志型文件系统,具有占用内存少、启动速度快等优点。而针对硬盘,虽然有许多常用的文件系统,如fat32、dosfs、ext3、ext4等,但不具备这些优点。而有些应用场景中,硬件架构中就只有硬盘,并没有配置闪存。此时如果能够基于yaffs文件系统对硬盘进行访问,则也能让这样硬件架构的系统利用上上述优势。
技术实现思路
1、本专利技术的目的在于提供一种基于yaffs文件系统对硬盘的访问方法,能够基于yaffs文件系统对硬盘进行访问。
2、为达上述目的,本专利技术提供如下技术方案:
3、本专利技术提供一种基于yaffs文件系统对硬盘的访问方法,所述yaffs文件系统包括钩子函数和驱动函数;所述钩子函数接收所述yaffs文件系统下发的访问指令,调用所述驱动函数;所述钩子函数具有针对nand flash的访问参数,所述驱动函数将所述针对nandflash的访问参数转换为针对硬盘的访问参数,从而将硬盘模拟为nand flash进行访问。
4、在一实施方式中,所述驱动函数将所述针对nand flash的访问参数转换为针对硬盘的访问参数,包括将针对nand flash的访问nand flash的第几个block的第几个page的多少字节转换为针对硬盘的访问硬盘的第几个sector的多少字节。
5、
6、startsector = n1,以硬盘中第n1个sector作为所述yaffs文件系统对应的模拟的nand flash的起始位置,n1为大于等于0的整数,根据需要任意设置;
7、blocknum = n2,模拟的nand flash中block的数量,n2为大于等于1的整数,根据需要任意设置;
8、pagenum = n3,模拟的nand flash中每个block中page的数量,n3为大于等于1的整数,根据需要任意设置;
9、datahassectornum = datasize / sectorsize = n4,模拟的nand flash中每个page的data区占用硬盘的sector数量,且向上取整,datasize为模拟的nand flash中每个page的data区的大小,sectorsize为硬盘每个sector的大小;
10、oobhassectornum = oobsize / sectorsize = n5,模拟的nand flash中每个page的oob区占用硬盘的sector数量,且向上取整,oobsize为模拟的nand flash中每个page的oob区的大小;
11、block[i].page[j].data = startsector + i * n3 * (n4 + n5) + j * (n4 +n5),模拟的nand flash中编号为i的block中编号为j的page的data区对应的所在硬盘的起始sector编号,i和j均为大于等于0的整数,且i小于n2,j小于n3;
12、block[i].page[j].oob = startsector + i * n3 * (n4 + n5) + j * (n4 +n5) + n4,模拟的nand flash中编号为i的block中编号为j的page的oob区对应的所在硬盘的起始sector编号。
13、在一实施方式中,n1 = 100,n2 = 1024,n3 = 64,n4 = 4,n5 = 1,datasize =2kbyte,oobsize = 64byte,sectorsize = 512 byte。
14、在一实施方式中,所述驱动函数将所述针对nand flash的访问参数转换为针对硬盘的访问参数是根据以下公式进行转换:
15、startsector = n1,以硬盘中第n1个sector作为所述yaffs文件系统对应的模拟的nand flash的起始位置,n1为大于等于0的整数,根据需要任意设置;
16、blocknum = n2,模拟的nand flash中block的数量,n2为大于等于1的整数,根据需要任意设置;
17、pagenum = n3,模拟的nand flash中每个block中page的数量,n3为大于等于1的整数,根据需要任意设置;
18、datahassectornum = datasize / sectorsize = n4,模拟的nand flash中每个page的data区占用硬盘的sector数量,且向上取整,datasize为模拟的nand flash中每个page的data区的大小,sectorsize为硬盘每个sector的大小;
19、oobhassectornum = oobsize / sectorsize = n5,模拟的nand flash中每个page的oob区占用硬盘的sector数量,且向上取整,oobsize为模拟的nand flash中每个page的oob区的大小;
20、block[i].page[j].data = startsector + i * n3 * n4 + j * n4,模拟的nandflash中编号为i的block中编号为j的page的data区对应的所在硬盘的起始sector编号,i和j均为大于等于0的整数,且i小于n2,j小于n3;
21、block[i].page[j].oob = startsector + n2 * n3 * n4 + reservedsector +i * n3 + j * n5,模拟的nand flash中编号为i的block中编号为j的page的oob区对应的所在硬盘的起始sector编号;reservedsector是全部的data区与全部的oob区之间的空闲区,为大于等于0的整数,可根据需要任意设置。
22、在一实施方式中,所述驱动函数还调用驱动硬盘的操作函数。
23、在一实施方式中,所述钩子函数包括读函数、写函数、擦除函数、坏块管理函数。
24、与现有技术相比,本专利技术的技术方案具有以下有益效果:
25、本专利技术所述基于yaffs文件系统对硬盘的访问方法,通过驱动函数将针对nandflash的访问参数转换为针对硬盘的访问参数,实现了将硬盘模拟为nand flash进行访问。
本文档来自技高网...【技术保护点】
1.一种基于YAFFS文件系统对硬盘的访问方法,其特征在于,所述YAFFS文件系统包括钩子函数和驱动函数;所述钩子函数接收所述YAFFS文件系统下发的访问指令,调用所述驱动函数;所述钩子函数具有针对nand flash的访问参数,所述驱动函数将所述针对nandflash的访问参数转换为针对硬盘的访问参数,从而将硬盘模拟为nand flash进行访问;
2.根据权利要求1所述的基于YAFFS文件系统对硬盘的访问方法,其特征在于,n1 =100,n2 = 1024,n3 = 64,n4 = 4,n5 = 1,dataSize = 2KByte,oobSize = 64byte,sectorSize = 512 byte。
3.根据权利要求1所述的基于YAFFS文件系统对硬盘的访问方法,其特征在于,所述驱动函数将所述针对nand flash的访问参数转换为针对硬盘的访问参数,包括将针对nandflash的访问nand flash的第几个block的第几个page的多少字节转换为针对硬盘的访问硬盘的第几个sector的多少字节。
4.根据权利要求1所述
5.根据权利要求1所述的基于YAFFS文件系统对硬盘的访问方法,其特征在于,所述驱动函数还调用驱动硬盘的操作函数。
6.根据权利要求1所述的基于YAFFS文件系统对硬盘的访问方法,其特征在于,所述钩子函数包括读函数、写函数、擦除函数、坏块管理函数。
...【技术特征摘要】
1.一种基于yaffs文件系统对硬盘的访问方法,其特征在于,所述yaffs文件系统包括钩子函数和驱动函数;所述钩子函数接收所述yaffs文件系统下发的访问指令,调用所述驱动函数;所述钩子函数具有针对nand flash的访问参数,所述驱动函数将所述针对nandflash的访问参数转换为针对硬盘的访问参数,从而将硬盘模拟为nand flash进行访问;
2.根据权利要求1所述的基于yaffs文件系统对硬盘的访问方法,其特征在于,n1 =100,n2 = 1024,n3 = 64,n4 = 4,n5 = 1,datasize = 2kbyte,oobsize = 64byte,sectorsize = 512 byte。
3.根据权利要求1所述的基于yaffs文件系统对硬盘的访问方法,...
【专利技术属性】
技术研发人员:陈应强,
申请(专利权)人:苏州蓝博控制技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。