attribute((section("ram_code"))) void internal_flash_test(void)
{
int i = 0;
uint32_t address = 0x32000;
address = 0x32000;
// test 1
memset(WBuffer, 0xaa, sizeof(WBuffer));
WBuffer[0] = 0x01;
WBuffer[1] = 0x01;
WBuffer[2] = 0x01;
WBuffer[3] = 0x01;
flash_erase(address, 256);
flash_write(address, 256, WBuffer);
flash_read(address, 256, RBuffer);
for (i = 0; i < 256; i++)
{
if (RBuffer[i] != WBuffer[i])
lw_log_info("QUAD mode err ");
RBuffer[i] = 0;
}
lw_log_info("QUAD mode END 1");
// test 2
address += 256;
lw_log_info("QUAD mode Read and QUAD Writer %08x", address);
memset(WBuffer, 0x55, sizeof(WBuffer));
WBuffer[0] = 0x02;
WBuffer[1] = 0x02;
WBuffer[2] = 0x02;
WBuffer[3] = 0x02;
flash_erase(address, 256);
// 读前256字节,应该全00x01和0xaa
flash_read(address - 256, 256, RBuffer);
for (i = 0; i < 10; i++)
{
lw_log_info("QUAD mode %02x", RBuffer[i]); // LOG 全部是0xff
}
flash_write(address, 256, WBuffer);
flash_read(address, 256, RBuffer);
for (i = 0; i < 256; i++)
{
if (RBuffer[i] != WBuffer[i])
lw_log_info("QUAD mode err ");
RBuffer[i] = 0;
}
lw_log_info("QUAD mode END 2");
}
在擦除第二块256字节时,第一块读取后全部为0xff. 如果 换成每次都是擦除4096字节,再读取前4096个字节就没有这个问题,是不是FX8008HP擦除最小是4096?
G
gling 发布的帖子
-
FLASH 读写问题发布在 FR800x
-
如何将变量定义到RAM0或RAM1发布在 FR800x
在使用FR8008HP中,手册中有描述RAM0:32KB,RAM1:16KB,RAM2:8KB,现感觉变量默认定义在RAM0,那么其它RAM1/RAM2是否可以使用?如可以使用是如何将变量定义在RAM1或RAM2?
-
ble_stack_init 在不使用蓝牙功能的时候还需要调用吗?发布在 FR800x
在HMI案子使用ft8008hp,现不需要ble功能,发现有一个问题,不初始化ble_stack_init();时,系统一运行就有可能 宕机,且os_get_free_heap_size获取到的空间为0。但如果调用了ble_stack_init();,系统就比较正常运行,且os_get_free_heap_size能获取 到当前还有6KB左右的空间。