看了手册,给我们使用的ID:0x80-0xFE。可是我对FLASH这块还不太明白。1 page是2048 bytes,协议栈osal_snv.c上面看到有2 pages。
那么OSAL API.pdf里面第11章节里面ID的范围是0x00-0xFF,给我们应用的是0x80-0xFE。那么算下来,每个ID可以保存16 bytes。
1.这里的ID是uint8的类型,可是第10章节讲解NV的时候对应的ID是uint16,为什么会有这个差异?
2.想确认一下关于 0x80-0xFE,每个ID到底可以存储多少数据?
3.我看到有的人使用osal_snv_write这个函数可以存储到252个uint8类型,但是存储253个uin8类型就不行了,他是使用这个函数的时候就是写的0x80这个ID。难道osal_snv_write把多的数据写到后面的ID里面了??
希望大神可以给我解惑,揭开面纱。
Barbara Wu:
ItemID 可以理解成一个是一个名字,表示你存储的数据的编号。
长度是unint16传进去的,大小限制应该是SNV可供使用的大小。
cedar_xuesong:
1.ID是18位的
2. ID仅仅表示序号,能写多少内容,SNV不做限定;但你初始化时,会设置SNV占用的总空间。
3. 参考http://blog.csdn.net/happytomyoung/article/details/48895217
Gary~~~:
回复 cedar_xuesong:
ID 仅仅表示序号,那我可以这样理解么?
我把 10个字节的数据存到 0x80 这个 ID 中,然后再次存储的时候把 3 个字节的数据存储到 0x81 这个 ID 中,然后再次把 10 个字节存储到 0x82 这个 ID 中,
我这样理解对不对?所以这个 ID 只是数据的编号对么?
Shenzhen Gao:
回复 Barbara Wu:
你好,测试时只能0x80能写入252个字节,读取正常,253字节读取有错误,其他的ID(测试0x81,0xfe)写入1个字节,都不能正常读取,请问是什么问题?
xin chen3:
回复 Shenzhen Gao:
你的SNV不能读取的问题解决了么?是什么问题呢?