⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memtest.lst

📁 memory test code for cypress usb
💻 LST
字号:
C51 COMPILER V7.06   MEMTEST                                                               08/11/2008 10:32:20 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MEMTEST
OBJECT MODULE PLACED IN MEMTEST.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MEMTEST.C OPTIMIZE(6,SPEED) DEBUG OBJECTEXTEND CODE

stmt level    source

   1          // RAM test - avoids the range from 0x4000 to 0x5100 since it is loaded there
   2          #define ALLOCATE_EXTERN // Allocate explicit register addresses here
   3          #include "Fx2.h"
*** WARNING C318 IN LINE 3 OF MEMTEST.C: can't open file 'Fx2.h'
   4          #include "Fx2regs.h"
*** WARNING C318 IN LINE 4 OF MEMTEST.C: can't open file 'Fx2regs.h'
   5          
   6          #define START_MEM00             0x0080
   7          #define LENGTH_MEM00    (0x2000-START_MEM00)
   8          #define START_MEM01             0x2000
   9          #define LENGTH_MEM01    0x2000 // avoids the range from 0x4000 to 0x5100
  10                                                                     // this program code is loaded at 0x4000-0x5000
  11                                                                     // and XDATA is located at 0x5000-0x5100
  12          #define START_MEM02             0x5100 // check 0x5100 to 0x8000
  13          #define LENGTH_MEM02    (0x8000-START_MEM02)
  14          
  15          #define START_MEM03             0x8000
  16          #define LENGTH_MEM03    0x61FF  // stop at 512 byte(s) reserved
  17          
  18          #define START_MEM04       0xE400  // check GPIF waveform buffer
  19          #define LENGTH_MEM04  0x007F  // and stop at 384 byte(s) reserved
  20          
  21          #define START_MEM05   0xE740  // check endpoint 0 & 1 buffer(s)
  22          #define LENGTH_MEM05  0x00BF  // and stop at 2k Reserved & 2,4,6,8 buffer(s)
  23                                        
  24          #define START_MEM06   0xF000  // check EP2
  25          #define LENGTH_MEM06  0x0200  
  26          
  27          #define START_MEM07   0xF400  // check EP4
  28          #define LENGTH_MEM07  0x0200  
  29          
  30          #define START_MEM08   0xF800  // check EP6
  31          #define LENGTH_MEM08  0x0200  
  32          
  33          #define START_MEM09   0xFC00  // check EP8
  34          #define LENGTH_MEM09  0x0200  
  35          
  36          #define LED_ADDR                0x21
  37          
  38          BYTE xdata Digit[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x98, 0x88, 0x83, 0xc6, 0xa1,
             - 0x86, 0x8e };
*** ERROR C129 IN LINE 38 OF MEMTEST.C: missing ';' before 'xdata'
  39          BYTE xdata Alpha[] = { 0x88,0x83,0xa7,0xa1,0x86,0x8e,0x90,0x8b,0xef,0xe1,0x87,0xc7,0x80,0xab,0xa3,0x8c,0x4
             -0,0xaf,0x92,0x87,0xc1,0xcd,0x80,0x89,0x99,0xa4 };
  40          BYTE xdata blank = 0xff;
  41          
  42          BYTE err_lvl;
  43          
  44          extern BOOL test_data(void);
  45          
  46          long test_mem(BYTE xdata *addr, WORD length)
  47          {
  48                  WORD i;
  49                  BYTE data1;
  50                  BYTE data2;
C51 COMPILER V7.06   MEMTEST                                                               08/11/2008 10:32:20 PAGE 2   

  51          
  52            err_lvl = 1;
  53          
  54                  for(i = 0; i < length; ++i)
  55                          addr[i] = 0x00;
  56                  for(i = 0; i < length; ++i)
  57                          if(addr[i] != 0x00)
  58                                  return(addr+i);
  59          
  60            err_lvl = 2;
  61          
  62                  for(i = 0; i < length; ++i)
  63                          addr[i] = 0xff;
  64                  for(i = 0; i < length; ++i)
  65                          if(addr[i] != 0xff)
  66                                  return(addr+i);
  67          
  68            err_lvl = 3;
  69          
  70                  for(i = 0; i < length; ++i)
  71                          addr[i] = 0xaa;
  72                  for(i = 0; i < length; ++i)
  73                          if(addr[i] != 0xaa)
  74                                  return(addr+i);
  75          
  76            err_lvl = 4;
  77          
  78                  for(i = 0; i < length; ++i)
  79                          addr[i] = 0x55;
  80                  for(i = 0; i < length; ++i)
  81                          if(addr[i] != 0x55)
  82                                  return(addr+i);
  83          
  84            err_lvl = 5;
  85          
  86                  for(i = length-1; i > 0; --i) // Check the address bus -- LSB only
  87                          addr[i] = LSB(i) + MSB(i) * 3;
  88                  for(i = length-1; i > 0; --i)
  89                          if(addr[i] != (BYTE) (LSB(i) + MSB(i) * 3)) 
  90                                  return(addr+i);
  91          
  92            err_lvl = 6;
  93          
  94            for(i = 0; i < length; ++i)
  95                          addr[i] = LSB(i) + MSB(i) * 3;
  96                  for(i = 0; i < length; ++i)
  97                          if(addr[i] != (BYTE) (LSB(i) + MSB(i) * 3))
  98                                  return(addr+i);
  99          
 100            err_lvl = 7;
 101          
 102                  if( ((addr+length) <= 0x2000) ||((addr+length) >= 0xF000) )  // internal data access only via AUTODAT1
 103                  {
 104                          for(i = 0; i < length; ++i)
 105                                  addr[i] = 0x00;
 106                          APTR1H = MSB(addr);
 107                          APTR1L = LSB(addr);
 108                          for(i = 0; i < length; ++i)
 109                          {
 110                                  data1 = LSB(i) + MSB(i) * 3;
 111                                  EXTAUTODAT1 = data1;
 112                          }
C51 COMPILER V7.06   MEMTEST                                                               08/11/2008 10:32:20 PAGE 3   

 113          
 114                          APTR1H = MSB(addr);
 115                          APTR1L = LSB(addr);
 116                          for(i = 0; i < length; ++i)
 117                          {
 118                                  data2 = EXTAUTODAT1;
 119                                  if(data2 != (BYTE) (LSB(i) + MSB(i) * 3))
 120                                          return(addr+i);
 121                          }
 122                  }
 123          
 124                  return(-1);
 125          }
 126          
 127          void status(WORD stat)
 128          {
 129                  WORD saveStat = stat;
 130                  BYTE i;
 131          
 132                  while(TRUE)
 133                  {
 134                          stat=saveStat;
 135                          for (i = 0; i < 4; i++, stat <<= 4)
 136                          {
 137                                  EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[(stat>>12)&0xf]));
 138                                  EZUSB_WaitForEEPROMWrite(LED_ADDR);
 139                                  EZUSB_Delay(400);
 140                                  EZUSB_WriteI2C(LED_ADDR, 0x01, &blank);
 141                                  EZUSB_WaitForEEPROMWrite(LED_ADDR);
 142                                  EZUSB_Delay(200);
 143                          }
 144                          EZUSB_WriteI2C(LED_ADDR, 0x01, &blank);
 145                          EZUSB_WaitForEEPROMWrite(LED_ADDR);
 146                          EZUSB_Delay(500);
 147                  }
 148          }
 149          
 150          void statString(char *stat)
 151          {
 152                  BYTE i;
 153          
 154                          for (i = 0; stat[i]; i++)
 155                          {
 156                                  EZUSB_WriteI2C(LED_ADDR, 0x01, &(Alpha[(stat[i] & 0x5f)-'A']));
 157                                  EZUSB_WaitForEEPROMWrite(LED_ADDR);
 158                                  EZUSB_Delay(400);
 159                                  EZUSB_WriteI2C(LED_ADDR, 0x01, &blank);
 160                                  EZUSB_WaitForEEPROMWrite(LED_ADDR);
 161                                  EZUSB_Delay(200);
 162                          }
 163                          EZUSB_WriteI2C(LED_ADDR, 0x01, &blank);
 164                          EZUSB_WaitForEEPROMWrite(LED_ADDR);
 165                          EZUSB_Delay(500);
 166          }
 167          
 168          main()
 169          {
 170                  BYTE xdata      *xd;
 171                  BYTE code       *cd;
 172                  long addr;
 173                  BYTE xdata      buttons = 0;
 174                  BYTE xdata      cont_loop = 1;
C51 COMPILER V7.06   MEMTEST                                                               08/11/2008 10:32:20 PAGE 4   

 175          
 176          
 177                  EZUSB_InitI2C();
 178            CPUCS = 0x10;         // set 48Mhz bit 
 179            IFCONFIG = 0xF6;        // GPIF Int clock 48Mhz GSTATE SYNC  1111 0110
 180              
 181            // enable dual autopointer feature
 182            AUTOPTRSETUP |= 0x01;
 183          
 184                  EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[0]));
 185                  EZUSB_WaitForEEPROMWrite(LED_ADDR);
 186          
 187                  while(cont_loop)
 188                  {
 189            
 190                          addr = test_mem(START_MEM00,LENGTH_MEM00);
 191                          if (addr != -1)
 192                      status(addr);
 193          
 194          
 195                          addr = test_mem(START_MEM01,LENGTH_MEM01);
 196                          if (addr != -1)
 197                      status(addr);
 198          
 199                          addr = test_mem(START_MEM02,LENGTH_MEM02);
 200                          if (addr != -1)
 201                      status(addr);
 202          
 203                          addr = test_mem(START_MEM03,LENGTH_MEM03);
 204                          if (addr != -1)
 205                      status(addr);
 206          
 207                          addr = test_mem(START_MEM06,LENGTH_MEM06);
 208                          if (addr != -1)
 209                      status(addr);
 210          
 211                          addr = test_mem(START_MEM07,LENGTH_MEM07);
 212                          if (addr != -1)
 213                      status(addr);
 214          
 215                          addr = test_mem(START_MEM08,LENGTH_MEM08);
 216                          if (addr != -1)
 217                      status(addr);
 218          
 219                          addr = test_mem(START_MEM09,LENGTH_MEM09);
 220                          if (addr != -1)
 221                      status(addr);
 222          
 223                          IFCONFIG = 0x02;
 224          
 225                          addr = test_mem(START_MEM04,LENGTH_MEM04); // Do WF Mem test
 226                          if (addr != -1)
 227                      status(addr);
 228          
 229                          addr = test_mem(START_MEM05,LENGTH_MEM05);
 230                          if (addr != -1)
 231                      status(addr);
 232          
 233                          xd = (BYTE xdata *)START_MEM00;
 234                          cd = (BYTE code *)START_MEM01;
 235          
 236                          *xd = *cd + 1;
C51 COMPILER V7.06   MEMTEST                                                               08/11/2008 10:32:20 PAGE 5   

 237          
 238                          if(*xd != *cd)
 239                          {
 240                      statString("good");
 241                          }
 242                  }
 243          
 244                  statString("dog");                                      // Never happen
 245                  EZUSB_ReadI2C(0x20,0x01,&buttons);      // Read button states
 246          
 247          }
 248          

C51 COMPILATION COMPLETE.  2 WARNING(S),  1 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -