ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
246035
sat_art (03.04.2011 14:53, просмотров: 1735)
IAR, ARM, Flash SST 39VF1601 Product ID code - не получается. Есть готовое изделие с 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. } }