OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [sw/] [tests/] [cfi_ctrl/] [board/] [cfi_ctrl-simple.c] - Blame information for rev 655

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 655 julius
#include "board.h"
2
#include "cpu-utils.h"
3
#include "cfi_ctrl.h"
4
#include "uart.h"
5
#include "printf.h"
6
#include "orpsoc-defines.h"
7
 
8
 
9
int main(void)
10
{
11
  uart_init(DEFAULT_UART);
12
 
13
  printf("cfi_ctrl-simple test");
14
 
15
  /* Reset the flash */
16
  cfi_ctrl_reset_flash();
17
 
18
  /* wait for the controller to be done */
19
  while (cfi_ctrl_busy());
20
 
21
#define NUM_PAGES 8
22
#define TEST_LENGTH 64
23
  int i,j;
24
  unsigned int page_base;
25
  unsigned short check_data[TEST_LENGTH];
26
  unsigned short tmp;
27
 
28
  /* test for number of blocks... */
29
  for(j=0;j<NUM_PAGES;j++)
30
    {
31
      page_base = j*(128*1024);
32
 
33
      printf("Status before clear: %02x\n",cfi_ctrl_get_status()&0xff);
34
      cfi_ctrl_clear_status();
35
      printf("Status after clear: %02x\n",cfi_ctrl_get_status()&0xff);
36
 
37
      /* Erase block  */
38
      if (cfi_ctrl_erase_block(page_base))
39
        {
40
          //exit(0xbaaaaaad);
41
          printf("Error erasing block at %08x\n",page_base);
42
          printf("Aborting test\n");
43
          exit(1);
44
        }
45
 
46
      cfi_ctrl_clear_status();
47
 
48
      for (i=0;i<TEST_LENGTH;i++)
49
        {
50
          tmp = (unsigned short)rand();
51
          //report(tmp&0xffff);
52
          printf("writing data: %04x\n", tmp&0xffff);
53
          cfi_ctrl_write_short(tmp,page_base+i*2);
54
          check_data[i] = tmp;
55
 
56
        }
57
 
58
      /* Read back the data and check it */
59
      cfi_ctrl_enable_data_read();
60
      for (i=0;i<TEST_LENGTH;i++)
61
        {
62
          tmp = REG16(CFI_CTRL_BASE + page_base + (i*2));
63
          if (tmp != check_data[i])
64
            //exit(0xbaaaaaad);
65
            printf("read data was not written data: %04x != %04x\n", tmp&0xffff,
66
                   check_data[i]);
67
        }
68
    }
69
 
70
  report(0x8000000d);
71
  exit(0);
72
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.