Commit 20deeadd authored by Theodor-Adrian Stana's avatar Theodor-Adrian Stana Committed by Grzegorz Daniluk

Change flash function params to be similar to SDBFS

wrc_main still in test-mode, currently doing a read of the first two
sectors (in the purpose of testing flash-write in tools -- see next
commit)
parent 46955351
......@@ -65,11 +65,9 @@ static uint8_t bbspi_transfer(uint8_t cspin, uint8_t val)
{
gpio_out(GPIO_SPI_MOSI, 0);
}
delay();
gpio_out(GPIO_SPI_SCLK, 1);
retval <<= 1;
retval |= gpio_in(GPIO_SPI_MISO);
delay();
val <<= 1;
}
......@@ -78,6 +76,9 @@ static uint8_t bbspi_transfer(uint8_t cspin, uint8_t val)
return retval;
}
/*
* Init function (just set the SPI pins for idle)
*/
void flash_init()
{
gpio_out(GPIO_SPI_NCS, 1);
......@@ -85,7 +86,10 @@ void flash_init()
gpio_out(GPIO_SPI_MOSI, 0);
}
void flash_write(int nrbytes, uint32_t addr, uint8_t *dat)
/*
* Write data to flash chip
*/
int flash_write(uint32_t addr, uint8_t *buf, int count)
{
int i;
......@@ -96,17 +100,20 @@ void flash_write(int nrbytes, uint32_t addr, uint8_t *dat)
bbspi_transfer(0,(addr & 0xFF0000) >> 16);
bbspi_transfer(0,(addr & 0xFF00) >> 8);
bbspi_transfer(0,(addr & 0xFF));
for ( i = 0; i < nrbytes; i++ )
for ( i = 0; i < count; i++ )
{
mprintf("dat: %02x\n", dat[i]);
bbspi_transfer(0,dat[i]);
bbspi_transfer(0,buf[i]);
}
bbspi_transfer(1,0);
return count;
}
void flash_read(int nrbytes, uint32_t addr, uint8_t *dat)
/*
* Read data from flash
*/
int flash_read(uint32_t addr, uint8_t *buf, int count)
{
int cnt = 0;
int i;
bbspi_transfer(1,0);
bbspi_transfer(0,0x0b);
......@@ -114,14 +121,18 @@ void flash_read(int nrbytes, uint32_t addr, uint8_t *dat)
bbspi_transfer(0,(addr & 0xFF00) >> 8);
bbspi_transfer(0,(addr & 0xFF));
bbspi_transfer(0,0);
for ( i = 0; i < nrbytes; i++ )
for ( i = 0; i < count; i++ )
{
dat[i] = bbspi_transfer(0, 0);
buf[i] = bbspi_transfer(0, 0);
}
bbspi_transfer(1,0);
return count;
}
/*
* Sector erase
*/
void flash_serase(uint32_t addr)
{
bbspi_transfer(1,0);
......@@ -134,6 +145,9 @@ void flash_serase(uint32_t addr)
bbspi_transfer(1,0);
}
/*
* Read status register
*/
uint8_t flash_rsr()
{
uint8_t retval;
......
......@@ -41,10 +41,14 @@
#include "types.h"
/* Flash interface functions */
void flash_init();
void flash_write(int nrbytes, uint32_t addr, uint8_t *dat);
void flash_read(int nrbytes, uint32_t addr, uint8_t *dat);
int flash_write(uint32_t addr, uint8_t *buf, int count);
int flash_read(uint32_t addr, uint8_t *buf, int count);
void flash_serase(uint32_t addr);
uint8_t flash_rsr();
/* SDB flash interface functions */
#endif // __FLASH_H_
......@@ -234,49 +234,51 @@ void w()
int main(void)
{
uint8_t rdat[256];
int i;
uint8_t rdat[256];
int i;
check_reset();
wrc_ui_mode = UI_SHELL_MODE;
_endram = ENDRAM_MAGIC;
sdb_find_devices();
sdb_find_devices();
uart_init_sw();
uart_init_hw();
timer_init(0);
mprintf("preinit\n");
mprintf("preinit\n");
w();
mprintf("flash init\n");
uint8_t d[4] = { 0x11, 0x22, 0x33, 0x44};
uint8_t d[4] = { 0xaa, 0xbb, 0xcc, 0xdd};
flash_init();
flash_read(256, 0x00, rdat);
for (i = 0; i < 256; i++)
{
mprintf("0x%02x ", rdat[i]);
}
mprintf("\n");
mprintf("erase\n");
flash_serase(0x00);
while (flash_rsr() & 0x01)
;
mprintf("write\n");
flash_write(4, 0x00, d);
flash_read(256, 0x00, rdat);
for (i = 0; i < 256; i++)
{
mprintf("0x%02x ", rdat[i]);
}
mprintf("\n");
return 0;
flash_read(0x00, rdat, 256);
for (i = 0; i < 256; i++)
{
mprintf("0x%02x ", rdat[i]);
}
mprintf("\n");
// mprintf("erase\n");
// flash_serase(0x00);
// while (flash_rsr() & 0x01)
// ;
//
// mprintf("write\n");
// flash_write(0x00, d, 4);
// while (flash_rsr() & 0x01)
// ;
flash_read(0x100, rdat, 256);
for (i = 0; i < 256; i++)
{
mprintf("0x%02x ", rdat[i]);
}
mprintf("\n");
return 0;
wrc_initialize();
usleep_init();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment