我试图弄清楚(地址)读写ESP8266内存。这是代码
char copy[1000];
spi_flash_erase_sector(0x7c); //Очистка зачем она нужна непонятно но без нее не работает
spi_flash_write(0x7c000, (uint32 *)©, sizeof(copy)); //Непосредствено запись
...
char ssidAp[1000];
spi_flash_read(0x7c000, (uint32 *)&ssidAp, sizeof(ssidAp)); //Чтение
一切正常,但如果我在清理中指定地址不是 0x7c 而是 0x7c000 就像在其他地方一样,录制不起作用。数量应该相同。有什么问题,有人可以解决它。(我想将地址转换为十进制系统,但在我解决这个问题之前,这是不可能的)
=== 构建答案===
感谢您解决一切问题的答案。
7C000 = 507904(字节)
7C = 124(只是数字)
扇区大小(以字节为单位)= 4096
记录开始的字节 = 507904 唤醒的扇区号 = 124
结果是开始擦除的初始扇区 = Number * Size = 124 * 4096;
在这种情况下,在十进制系统中,它像这样唤醒
spi_flash_erase_sector(124);
spi_flash_write(507904, (uint32 *)©, sizeof(copy));
或者
int Num = 124;
spi_flash_erase_sector(Num);
spi_flash_write(Num * 4096, (uint32 *)©, sizeof(copy));
spi_flash_erase_sector - 要求一个扇区号,而不是一个字节。
扇区大小 4096 == 0x1000
地址为 0x7c000 的扇区分别有地址
0x7c000 // 0x1000
Erase before0x7cfff
- 如果您在该扇区中存储一些数据,请考虑这一点。需要擦除,因为这是 SPI 闪存驱动器的组织方式。如果需要存储一些数据,最好焊接nand。SPI 不是为永久覆盖而设计的。