Page 1 of 1

【已解决】tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 5日 18:48
by 梁修道

我们使用 tuyaos zigbee sdk 进行开发,app需要在flash进行数据存储,大概需要4kb的空间,请问如何进行flash的erase,read和,write?(hal_write.h中也没有找到erase函数)
另外,可供app自由使用的flash,起始地址和总长度,对于tlsr8258和phy6225这两个芯片平台来说,分别是多少?


Re: tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 6日 10:01
by 白芷冉然

Tuyaos telink 平台:
1.提供了可以给应用使用的裸flash 0xF9000 - 0xFB000 共8K。用户可以使用tal_flash.h中提供的flash读写。
2.需要注意的是擦除函数起始地址需是4K整数倍,一次擦除4k。为了规避断电数据写入不完整等问题,建议数据进行完整性校验。
3.同时提供了user nv的储存空间,两个4K,0xE8000 - 0xEA000,客户写入usr nv 数据底层会做数据校验和备份,因此数据会有校验位等冗余数据,写满4K后会切换到另外一个4k进行写入。用户可以使用tal_nv_flash.h中提供的 tal_kv_flash_read,tal_kv_flash_write等函数进行操作。


Re: tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 6日 10:09
by 白芷冉然

sdk telink平台:
1.提供了 0xF9000 - 0xFB000 的裸flash空间给用户使用,用户可以通过 hal_flash.h中的 main_flash_write及main_flash_read 进行操作,建议客户进行完整性校验。
2.同时提供了 拥有完整性校验和数据备份功能的 user_flash_data_write 和 user_flash_data_read 函数,该空间最大为250 bytes,该空间是作为nv的一个item实现的,每次写入需要完整写入250bytes。


Re: tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 6日 10:20
by shiliang

可以使用tal_flash.c中的接口也是裸接口。
phy6225暂未使用区域为0x110E8000-0x110F6FFF,但后续NV可能有扩展风险,建议使用时需谨慎,尽量从后往前使用。
phy6225的user flash从0x110E2000-0x110E3FFF,注意tal_kv_flash_write是互为备份的两个4K,由于需要存储ID,offset相关信息,实际能存储的数据小于4096-512个字节。


Re: tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 6日 15:49
by 梁修道
白芷冉然 2023年 Jan 6日 10:09

sdk telink平台:
1.提供了 0xF9000 - 0xFB000 的裸flash空间给用户使用,用户可以通过 hal_flash.h中的 main_flash_write及main_flash_read 进行操作,建议客户进行完整性校验。
2.同时提供了 拥有完整性校验和数据备份功能的 user_flash_data_write 和 user_flash_data_read 函数,该空间最大为250 bytes,该空间是作为nv的一个item实现的,每次写入需要完整写入250bytes。

请问使用zigbee sdk进行操作的话 main_flash_write 给的地址 是不是直接填写 F9000 + 对应的offset?
另外,对0xF9000 - 0xFB000区域进行erase的函数是哪个?


Re: tuyaOS zigbee开发 自定义应用使用flash配置方法

Posted: 2023年 Jan 10日 13:48
by 白芷冉然

main_flash_write 里面会主动进行数据erase,根据传入的数据data_len,如果<=4k则擦除4K,>4k且<=8k则擦除8K。擦除后从0xF9000开始写入。每次write都会erase,每次都要把之前写进去的数据先读出来调整后再写入