// Built with BFTC Rev. 1.0.0, ven 22 agosto 2014 14:14:29
/*
Copyright 2014 Digital Technology Art SRL
This file is part of Blackfin Toolchain (BFTC) project.
BFTC is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
BFTC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Nome-Programma. If not, see <http://www.gnu.org/licenses/>.
*/
#include "main.h"
unsigned char wbuf[1024];
unsigned char rbuf[1024];
unsigned randx(unsigned val)
{
return Get_TimerCounter(TIMER_0) * 0x1961957 + val;
}
int main(void)
{
int sector = 0, i, er;
Set_PLL(16, 4); // CORE: 25MHz * 16 = 400MHz, SCLK: 400MHz / 4 = 100MHz
Set_Port(); // Set the port according to project set
Set_Uart0(115200); // printf is redirected to UART0
Set_TimerCounter(TIMER_0);
Set_TimerEnable(TIMER_0, true);
Set_SPI(SPI_MEM_2);
while(1) // Main loop
{
printf("Press any key to start the test\n");
GetChar_Uart0();
for(i = 0; i < 1024; i++)
wbuf[i] = randx(i);
er = FLSH_EraseBlock(sector);
if(er == FLSH_NO_ERR)
{
er = FLSH_WriteData(sector * 1024, 1024, wbuf);
if(er == FLSH_NO_ERR)
{
er = FLSH_ReadData(sector * 1024, 1024, rbuf);
if(er == FLSH_NO_ERR)
{
for(i = 0; i < 1024; i++)
if(wbuf[i] != rbuf[i])
{
printf("Compare error at %d, read %d instead of %d\n", i, rbuf[i], wbuf[i]);
break;
}
if(i == 1024)
printf("Test OK\n");
}
else printf("READ Error = %d\n", er);
}
else printf("WRITE Error = %d\n", er);
}
else printf("ERASE Error = %d\n", er);
sector++;
sector %= 64;
}
return 0;
}