IAR, ARM, Flash SST 39VF1601 Product ID code - не получается

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
sat_art
Родился
Сообщения: 8
Зарегистрирован: Вс апр 03, 2011 13:31:46

IAR, ARM, Flash SST 39VF1601 Product ID code - не получается

Сообщение sat_art »

Есть готовое изделие с ARM920T и 39VF1601 на борту.
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.
}
}

Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»