IAR, ARM, Flash SST 39VF1601 Product ID code - не получается
Добавлено: Вс апр 03, 2011 13:45:13
Есть готовое изделие с ARM920T и 39VF1601 на борту.
IAR юзаю первый раз как и АРМ.
IAR через J-Link к плате.
Ткните носом.
Компилится и выполняется все нормально.
Немогу прочитать Software Product ID code (0000H-0xBFH,0001H-0x234BH). Всегда выдает первые байты флеши.
Базовый адрес флеши 0х20000000
RAM - 0x00000000
IAR юзаю первый раз как и АРМ.
IAR через J-Link к плате.
Ткните носом.
Компилится и выполняется все нормально.
Немогу прочитать Software Product ID code (0000H-0xBFH,0001H-0x234BH). Всегда выдает первые байты флеши.
Базовый адрес флеши 0х20000000
RAM - 0x00000000
#define FALSE 0
#define TRUE 1
#define SECTOR_SIZE 2048 // Must be 2048 words for 39VF160X
#define BLOCK_SIZE 32768 // Must be 32K words for 39VF160X
#define SST_ID 0x00BF // SST Manufacturer's ID code
#define SST_39VF1601 0x234B // SST39VF1601 device code
#define SST_39VF1602 0x234A // SST39VF1602 device code
typedef unsigned char BYTE; // BYTE is 8-bit in length
typedef unsigned int WORD; // WORD is 16-bit in length
typedef unsigned long int Uint32; // Uint32 is 32-bit in length
Uint32 system_base = 0x20000000;
#define sysAddress(offset) ((volatile WORD *)(system_base + offset))
#define sysAddress1(offset) ((volatile WORD *)(system_base + offset))
#define MAX_TIMEOUT 0x07FFFFFF // A ceiling constant used by Check_Toggle_
// Ready() and Check_Data_Polling().
// The user should modify this constant accordingly.
void delay()
{
volatile int count = 1000;
while (--count) ;
}
void Check_SST(WORD *Src)
{
*sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555
*sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA
*sysAddress(0x5555) = 0x0090; // write data 0x0090 to device addr 0x5555
delay();
for (WORD index = 0x0000; index <= 0x0002; index++)
{
*Src = *sysAddress1(index);
++Src;
}
// ----------------------------------------------------------
// Issue the CFI Exit code thus returning the 39VF160X
// to the read operating mode
*sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555
*sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA
*sysAddress(0x5555) = 0x00F0; // write data 0x00F0 to device addr 0x5555
delay();
}
main()
{
WORD *a1;
a1 = (WORD *)0x00010000; //Адрес от фонаря куда пишется то что читается из флеши
Check_SST(a1);
for (;;)
{
delay(); // Wait a little before displaying next digit.
}
}