SmartOS/Test/FlashTest.cpp

55 lines
1.3 KiB
C++

#include "Device\Flash.h"
#include <stdlib.h>
void TestFlash()
{
debug_printf("\r\n\r\n");
debug_printf("TestFlash Start......\r\n");
byte buf[] = "STM32F10x SPI Firmware Library Example: communication with an AT45DB SPI FLASH";
int size = ArrayLength(buf);
Flash flash;
// 凑一个横跨两页的地址
uint addr = 0x0800C000 + flash.Block - size + 7;
debug_printf("Address: %p 凑一个横跨两页的地址\r\n", addr);
debug_printf("FlashSize: %d(%p) Bytes Block: %d Bytes\r\n", flash.Size, flash.Size, flash.Block);
flash.Erase(addr, 0x100);
byte bb[0x100];
ByteArray bs;
bs.Set(bb, ArrayLength(bb));
bs.SetLength(size);
flash.Read(addr, bs);
int n = 0;
for(int i=0; i<size; i++)
{
if(buf[i] != bs[i]) n++;
}
if(n)
debug_printf("分块测试失败 不同点: %d\r\n", n);
else
debug_printf("分块测试通过!\r\n");
// 集成测试
//flash.Erase(addr, 0x100);
flash.Write(addr, Buffer(buf, size));
flash.Read(addr, bs);
n = 0;
for(int i=0; i<size; i++)
{
if(buf[i] != bs[i]) n++;
}
if(n)
debug_printf("整体测试失败 不同点: %d\r\n", n);
else
debug_printf("整体测试通过!\r\n");
debug_printf("\r\nTestFlash Finish!\r\n");
}