BOOL A025DL02_Driver::Uninitialize()
{
    NATIVE_PROFILE_HAL_DRIVERS_DISPLAY();
    
    // Clear display content
    Clear();

    LCD_Controller_Enable(FALSE);
    
    UINT16 write[] = 
    { 
        A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_STANDBY), 
    };

    UINT16 read[ARRAYSIZE_CONST_EXPR(write)];
    
    SPI_XACTION_16 xAction = 
    {
        write,
        ARRAYSIZE_CONST_EXPR(write),
        read,
        ARRAYSIZE_CONST_EXPR(read),
        0,
        g_A025DL02_SPI_Config.SPI_mod
    };

    CPU_SPI_Xaction_Start(g_A025DL02_SPI_Config);
    CPU_SPI_Xaction_nWrite16_nRead16(xAction);
    CPU_SPI_Xaction_Stop (g_A025DL02_SPI_Config);

    return LCD_Controller_Uninitialize();
}
void A025DL02_Driver::PowerSave( BOOL On )
{
    NATIVE_PROFILE_HAL_DRIVERS_DISPLAY();
    UINT16 write[2];
    UINT16 read[ARRAYSIZE_CONST_EXPR(write)];

    if(On)
    {
        write[0] = A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_POWERSAVE);
        write[1] = A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_POWERSAVE);
    }
    else
    {
        write[0] = A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_NORMAL);
        write[1] = A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_NORMAL);
    }

    SPI_XACTION_16 xAction = 
    {
        write,
        ARRAYSIZE_CONST_EXPR(write),
        read,
        ARRAYSIZE_CONST_EXPR(read),
        0,
        g_A025DL02_SPI_Config.SPI_mod
    };

    CPU_SPI_Xaction_Start(g_A025DL02_SPI_Config);
    CPU_SPI_Xaction_nWrite16_nRead16(xAction);
    CPU_SPI_Xaction_Stop (g_A025DL02_SPI_Config);

    return;
}
BOOL A025DL02_Driver::Initialize()
{
    NATIVE_PROFILE_HAL_DRIVERS_DISPLAY();
    BOOL bRet = TRUE;

    // setup the LCD by SPI cmds
    {
        UINT16 write[] = 
        { 
            A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_START      ), 
            A025DL02_I2C_ADDR_DATA(c_CMD_REG4, c_REG4_SETUP_DATA), 
            A025DL02_I2C_ADDR_DATA(c_CMD_REG8, c_BL_DRV_DATA    ),
            A025DL02_I2C_ADDR_DATA(c_CMD_REG5, c_LCD_NORMAL     )
        };

        UINT16 read[ARRAYSIZE_CONST_EXPR(write)];
        
        SPI_XACTION_16 xAction = 
        {
            write,
            ARRAYSIZE_CONST_EXPR(write),
            read,
            ARRAYSIZE_CONST_EXPR(read),
            0,
            g_A025DL02_SPI_Config.SPI_mod
        };

        CPU_SPI_Xaction_Start(g_A025DL02_SPI_Config);
        CPU_SPI_Xaction_nWrite16_nRead16(xAction);
        CPU_SPI_Xaction_Stop (g_A025DL02_SPI_Config);
    }
    
    bRet = LCD_Controller_Initialize(g_LcdController_Config);

    LCD_Controller_Enable(TRUE);
    
    // Clear display content
    Clear();
    
    return bRet;
}
};

const BlockRange g_STM32F4_BlockRange6[] =
{
    { BlockRange::BLOCKTYPE_DEPLOYMENT,   0, 2 },  // 08120000 deployment  384k
    { BlockRange::BLOCKTYPE_UPDATE,       3, 6 },  // 08180000 deployment  512k
};


const BlockRegionInfo  g_STM32F4_BlkRegion[STM32F4__NUM_REGIONS] = 
{
    {
        FLASH_BASE_ADDRESS1,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT1,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK1, // UINT32        BytesPerBlock;   // Total number of bytes per block
        ARRAYSIZE_CONST_EXPR(g_STM32F4_BlockRange1),
        g_STM32F4_BlockRange1,
    },
    
    {
        FLASH_BASE_ADDRESS2,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT2,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK2, // UINT32        BytesPerBlock;   // Total number of bytes per block
        ARRAYSIZE_CONST_EXPR(g_STM32F4_BlockRange2),
        g_STM32F4_BlockRange2,
    },
    
    {
        FLASH_BASE_ADDRESS3,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT3,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK3, // UINT32        BytesPerBlock;   // Total number of bytes per block
#define REGION1_BYTES_PER_BLK       0x20000
#define REGION1_SECTORS_PER_BLOCK   REGION1_BYTES_PER_BLK/BYTES_PER_SECTOR

#define REGION1_NUM_OF_BLOCKS       512

#define REGION1_SECTOR_START        0


const BlockRegionInfo  g_S29GL032A_16_BlkRegion[S29GL032A_16__NUM_REGIONS] = 
{

    REGION1_XIP_ADDRESS,            // ByteAddress  Start;              // Starting Sector address
    REGION1_NUM_OF_BLOCKS,          // UINT32       NumBlocks;          // total number of blocks in this region
    REGION1_BYTES_PER_BLK,          // UINT32       BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_S29GL032A_16_BlockRange1),
    g_S29GL032A_16_BlockRange1

};

//--//


BlockDeviceInfo g_S29GL032A_16_DeviceInfo=
{
    {
        S29GL032A_16__IS_REMOVABLE,          // BOOL Removable;
        S29GL032A_16__SUPPORTS_XIP,          // BOOL SupportsXIP;
        S29GL032A_16__WRITE_PROTECTED        // BOOL WRiteProtected
    },
    FLASH_SECTOR_WRITE_MAX_TIME_USEC,        // UINT32 Duration_Max_WordWrite_uSec;
#pragma arm section rwdata = "g_SD_DeviceRegisters"
#endif

BlockRange g_SD_BlockStatus[] =
{
    { BlockRange::BLOCKTYPE_FILESYSTEM, 0, 0 }
};


BlockRegionInfo  g_SD_BlkRegion[SD_NUMREGIONS] = 
{
    0,         // ByteAddress     Start;              // Starting Sector address
    0,         // UINT32          NumBlocks;          // total number of blocks in this region
    0,         // UINT32          BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_SD_BlockStatus),
    g_SD_BlockStatus,
};

//--//

BlockDeviceInfo  g_SD_DeviceInfo=
{
    {  
        SD_REMOVEABLE,
        SD_SUPPORTXIP,
        SD_WRITEPROTECTED,
    },
    SD_SECTOR_WRITE_MAX_TIME_USEC,       // UINT32 Duration_Max_WordWrite_uSec;
    SD_BLOCK_ERASE_MAX_TIME_USEC,        // UINT32 Duration_Max_SectorErase_uSec;
    0,                                   // BytesPerSector; // Bytes Per Sector
    { BlockRange::BLOCKTYPE_STORAGE_A  , 121, 122 },
    { BlockRange::BLOCKTYPE_STORAGE_B  , 123, 124 },
    { BlockRange::BLOCKTYPE_CONFIG     , 125, 125 },		// g_ConfigurationSector
    { BlockRange::BLOCKTYPE_DEPLOYMENT , 126 ,126 },    //

};

//--//

const BlockRegionInfo  g_AT49BV642DT_16_BlkRegion[AT49BV642DT_16__NUM_REGIONS] =
{
	AT49BV642DT_16__BASE_ADDRESS,   // ByteAddress   Start;              // Starting Sector address
    FLASH_BLOCK_COUNT,                 		 // UINT32          NumBlocks;          // total number of blocks in this region
    FLASH_BYTES_PER_BLOCK,              // UINT32        BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_AT49BV642DT_16_BlockRange),
    g_AT49BV642DT_16_BlockRange,
};

//--//


BlockDeviceInfo g_AT49BV642DT_16_DeviceInfo=
{
    {
        AT49BV642DT_16__IS_REMOVABLE,           // BOOL Removable;
        AT49BV642DT_16__SUPPORTS_XIP,           // BOOL SupportsXIP;
        AT49BV642DT_16__WRITE_PROTECTED         // BOOL WRiteProtected
    },
    FLASH_SECTOR_WRITE_MAX_TIME_USEC,           // UINT32 Duration_Max_WordWrite_uSec;
    FLASH_BLOCK_ERASE_MAX_TIME_USEC,            // UINT32 Duration_Max_SectorErase_uSec;
    { MEMORY_BLOCKTYPE_SPECIAL         , 51, 60 },        
    { BlockRange::BLOCKTYPE_STORAGE_A  , 61, 61 },    
    { BlockRange::BLOCKTYPE_STORAGE_B  , 62, 62 }, 
    { BlockRange::BLOCKTYPE_CONFIG     , 63, 63 }    // g_ConfigurationSector
};



const BlockRegionInfo  g_I28F640_J3_16_BlkRegion[I28F640J3_16__NUM_REGIONS] = 
{
    {
        I28F640J3_16__BASE_ADDRESS,         // ByteAddress   Start;              // Starting Sector address
        FLASH_BLOCK_COUNT,                  // UINT32        NumBlocks;          // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK,              // UINT32        BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_I28F640J3_16_BlockRange),
        g_I28F640J3_16_BlockRange,
    },
};

//--//

#undef MEMORY_BLOCKTYPE_GCC_SPECIAL_CODE 

//--//


BlockDeviceInfo g_I28F640J3_16_DeviceInfo=
{
    {  
        I28F640J3_16__IS_REMOVABLE,         // BOOL Removable;
Exemple #9
0
//--//

const BlockRange g_M25P64_BlockRange[] =
{
    { BlockRange::BLOCKTYPE_DEPLOYMENT,   0,  63 }, // 4M
    { BlockRange::BLOCKTYPE_FILESYSTEM,  64, 127 }  // 4M
};


const BlockRegionInfo  g_M25P64_BlkRegion[M25P64__NUM_REGIONS] = 
{
    {
        0,                     // ByteAddress  Start;         // Starting Sector address
        FLASH_BLOCK_COUNT,     // UINT32       NumBlocks;     // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK, // UINT32       BytesPerBlock; // Total number of bytes per block
        ARRAYSIZE_CONST_EXPR(g_M25P64_BlockRange),
        g_M25P64_BlockRange,
    }
};


//--//


const BlockDeviceInfo g_M25P64_DeviceInfo=
{
    {  
        M25P64__IS_REMOVABLE,              // BOOL Removable;
        M25P64__SUPPORTS_XIP,              // BOOL SupportsXIP;
        M25P64__WRITE_PROTECTED,           // BOOL WriteProtected;
        M25P64__SUPP_COPY_BACK             // BOOL SupportsCopyBack
//--//

#if defined(ADS_LINKER_BUG__NOT_ALL_UNUSED_VARIABLES_ARE_REMOVED)
#pragma arm section rwdata = "g_SST39VF320_16_Config"
#endif


//--//

const BlockRegionInfo  g_SST39VF320_16_BlkRegion[SST39VF320_16__NUM_REGIONS] = 
{
    SST39VF320_16_BASE_ADDRESS,      // ByteAddress   Start;              // Starting Sector address
    FLASH_BLOCK_COUNT,               // UINT32        NumBlocks;          // total number of blocks in this region
    FLASH_BYTES_PER_BLOCK,           // UINT32        BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_SST39VF320_16_BlockRange),
    g_SST39VF320_16_BlockRange,
};

    
BlockDeviceInfo g_SST39VF320_16_DeviceInfo=
{
        {  
            SST39VF320_16__IS_REMOVABLE,                    // BOOL Removable;
            SST39VF320_16__SUPPORTS_XIP,                    // BOOL SupportsXIP;
            SST39VF320_16__WRITE_PROTECTED,
        },

	    FLASH_SECTOR_WRITE_TYPICAL_TIME_USEC,           // UINT32 Duration_Max_WordWrite_uSec;
	    FLASH_BLOCK_ERASE_ACTUAL_TIME_USEC,             // UINT32 Duration_Max_SectorErase_uSec;
	    FLASH_BYTES_PER_SECTOR,                         // UINT32 BytesPerSector; // Bytes Per Sector
Exemple #11
0
    { BlockRange::BLOCKTYPE_DEPLOYMENT, 30, 34 },
    { BlockRange::BLOCKTYPE_DEPLOYMENT, 35, 39 },
    { BlockRange::BLOCKTYPE_DEPLOYMENT, 40, 48 },
    { BlockRange::BLOCKTYPE_STORAGE_A , 49, 49 },
    { BlockRange::BLOCKTYPE_STORAGE_B , 50, 50 },
    
    { BlockRange::BLOCKTYPE_FILESYSTEM, 51, FLASH_BLOCK_COUNT - 1 }
};

const BlockRegionInfo  g_K9F2G_8_BlkRegion[K9F2G_8__NUM_REGIONS] = 
{
    FLASH_BASE_ADDRESS,             // ByteAddress  Start;              // Starting Sector address
    FLASH_BLOCK_COUNT,              // UINT32       NumBlocks;          // total number of blocks in this region
    FLASH_BLOCK_SIZE,               // UINT32       BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_K9F2G_8_BlockStatus),
    g_K9F2G_8_BlockStatus, 
};

//--//

#undef MEMORY_USAGE_GCC_SPECIAL_CODE 

//--//


const BlockDeviceInfo  g_K9F2G_8_DeviceInfo=
{
    {  
        K9F2G_8__IS_REMOVABLE,
        K9F2G_8__SUPPORTS_XIP,
Exemple #12
0
/*const BlockRange g_STM32F2_BlockRange3[] =
{
    { BlockRange::BLOCKTYPE_CODE      ,   0, 1 },  // 08020000 CLR         256k
    { BlockRange::BLOCKTYPE_DEPLOYMENT,   2, 6 },  // 08060000 deployment  640k
    //{ BlockRange::BLOCKTYPE_STORAGE_A ,   5, 5 },  // 080C0000 storage A   128k
    //{ BlockRange::BLOCKTYPE_STORAGE_B ,   6, 6 },  // 080E0000 storage B   128k
};*/


const BlockRegionInfo  g_STM32F2_BlkRegion[STM32F2__NUM_REGIONS] = 
{
    {
        FLASH_BASE_ADDRESS1,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT1,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK1, // UINT32        BytesPerBlock;   // Total number of bytes per block
        ARRAYSIZE_CONST_EXPR(g_STM32F2_BlockRange1),
        g_STM32F2_BlockRange1,
    },
    
    {
        FLASH_BASE_ADDRESS2,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT2,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK2, // UINT32        BytesPerBlock;   // Total number of bytes per block
        ARRAYSIZE_CONST_EXPR(g_STM32F2_BlockRange2),
        g_STM32F2_BlockRange2,
    },
    
    {
        FLASH_BASE_ADDRESS3,    // ByteAddress   Start;           // Starting Sector address
        FLASH_BLOCK_COUNT3,     // UINT32        NumBlocks;       // total number of blocks in this region
        FLASH_BYTES_PER_BLOCK3, // UINT32        BytesPerBlock;   // Total number of bytes per block
#define REGION4_BYTES_PER_BLK       0x08000
#define REGION4_SECTORS_PER_BLOCK   REGION4_BYTES_PER_BLK/BYTES_PER_SECTOR
#define REGION4_NUM_OF_BLOCKS       1
#define REGION4_SECTOR_START        REGION3_SECTOR_START + (UINT32)REGION3_NUM_OF_BLOCKS* (UINT32)REGION3_SECTORS_PER_BLOCK




const BlockRegionInfo  g_AM29LV800BT_32_BlkRegion[AM29LV800BT_32__NUM_REGIONS] = 
{
    {
        REGION1_XIP_ADDRESS,            // ByteAddress  Start;              // Starting Sector address
        REGION1_NUM_OF_BLOCKS,          // UINT32       NumBlocks;          // total number of blocks in this region
        REGION1_BYTES_PER_BLK,          // UINT32       BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_AM29LV800BT_32_BlockRange1),
        g_AM29LV800BT_32_BlockRange1
    },
    
    {
        REGION2_XIP_ADDRESS,            // SectorAddress   Start;              // Starting Sector address
        REGION2_NUM_OF_BLOCKS,          // UINT32          NumBlocks;          // total number of blocks in this region
        REGION2_BYTES_PER_BLK,          // UINT32          BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_AM29LV800BT_32_BlockRange2),
        g_AM29LV800BT_32_BlockRange2
    },

    {
        REGION3_XIP_ADDRESS,            // SectorAddress   Start;              // Starting Sector address
        REGION3_NUM_OF_BLOCKS,          // UINT32          NumBlocks;          // total number of blocks in this region
#if defined(ADS_LINKER_BUG__NOT_ALL_UNUSED_VARIABLES_ARE_REMOVED)
#pragma arm section rwdata = "g_USB_MSC_BS_Config"
#endif

BlockRange g_USB_MSC_BlockRange[] =
{
	{ BlockRange::BLOCKTYPE_FILESYSTEM, 0, 0 }
};

BlockRegionInfo  g_USB_MSC_BlkRegion[] = 
{
	0,               // SectorAddress        Start;      // Starting Sector address
	0,               // UINT32           NumBlocks;      // total number of blocks in this region
	512,             // UINT16           BytesPerBlock;  // Number of Bytes in each block of this region 
	ARRAYSIZE_CONST_EXPR(g_USB_MSC_BlockRange),
	g_USB_MSC_BlockRange,
};

BlockDeviceInfo  g_USB_MSC_DeviceInfo=
{
	{  
		TRUE, //removable
			FALSE,//support XIP
			FALSE,//write protected
	},    
	700,			// UINT32 Duration_Max_WordWrite_uSec;
	2000000,		// UINT32 Duration_Max_SectorErase_uSec;
	512,                        // UINT32 BytesPerSector;
	0,                      // UINT32 Size;
	1,                     // UINT32 NumRegions;
{
    { BlockRange::BLOCKTYPE_FILESYSTEM    ,  0,  REGION_NUM_OF_BLOCKS -1 }
};
#endif
//--//

//--//

const BlockRegionInfo  g_SerialFlash_BlkRegion[SERIALFLASH__NUM_REGIONS] = 
{
    {
        REGION_XIP_ADDRESS,            // ByteAddress  Start;              // Starting Sector address
        REGION_NUM_OF_BLOCKS,          // UINT32       NumBlocks;          // total number of blocks in this region
        REGION_BYTES_PER_BLK,          // UINT32       BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_SerialFlash_BlockRange),
        g_SerialFlash_BlockRange
    },
};

//--//


BlockDeviceInfo g_SerialFlash_DeviceInfo=
{
    {
        SERIALFLASH__IS_REMOVABLE,          // BOOL Removable;
        SERIALFLASH__SUPPORTS_XIP,          // BOOL SupportsXIP;
        SERIALFLASH__WRITE_PROTECTED        // BOOL WRiteProtected
    },
    SERIALFLASH_SECTOR_WRITE_MAX_TIME_USEC,        // UINT32 Duration_Max_WordWrite_uSec;
Exemple #16
0
#if defined(ADS_LINKER_BUG__NOT_ALL_UNUSED_VARIABLES_ARE_REMOVED)
#pragma arm section rwdata = "g_SAM7X_BS_Config"
#endif




const BlockRegionInfo  g_SAM7X_BS_BlkRegion[SAM7X_BS__NUM_REGIONS] = 
{
    
    REGION1_XIP_ADDRESS,                // ByteAddress     Address;            // Start address
    REGION1_NUM_OF_BLOCKS,              // UINT32          NumBlocks;          // total number of blocks in this region
    REGION1_BYTES_PER_BLK,              // UINT32          BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

    ARRAYSIZE_CONST_EXPR(g_SAM7X_BS_BlockRange),
    g_SAM7X_BS_BlockRange,
};

//--//


BlockDeviceInfo g_SAM7X_BS_DeviceInfo=
{
    {
        SAM7X_BS__IS_REMOVABLE,                     // BOOL Removable;
        SAM7X_BS__SUPPORTS_XIP,                     // BOOL SupportsXIP;
        SAM7X_BS__WRITE_PROTECTED,                  // BOOL WriteProtected
    },
    
    SAM7X_SECTOR_WRITE_MAX_TIME_USEC,               // UINT32 Duration_Max_WordWrite_uSec;
#define REGION4_XIP_ADDRESS         0x80100000
#define REGION4_BYTES_PER_BLK       0x2000
//#define REGION4_SECTORS_PER_BLOCK   REGION4_BYTES_PER_BLK/BYTES_PER_SECTOR
#define REGION4_SECTORS_PER_BLOCK   1
#define REGION4_NUM_OF_BLOCKS       4
#define REGION4_SECTOR_START        REGION3_SECTOR_START + REGION3_NUM_OF_BLOCKS*REGION3_SECTORS_PER_BLOCK

const BlockRegionInfo  g_INTERNALFLASH_BlkRegion[INTERNALFLASH__NUM_REGIONS] = 
{
    {
        REGION1_XIP_ADDRESS,            // ByteAddress  Start;              // Starting Sector address
        REGION1_NUM_OF_BLOCKS,          // UINT32       NumBlocks;          // total number of blocks in this region
        REGION1_BYTES_PER_BLK,          // UINT32       BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_INTERNALFLASH_BlockRange1),
        g_INTERNALFLASH_BlockRange1
    },
    
    {
        REGION2_XIP_ADDRESS,            // SectorAddress   Start;              // Starting Sector address
        REGION2_NUM_OF_BLOCKS,          // UINT32          NumBlocks;          // total number of blocks in this region
        REGION2_BYTES_PER_BLK,          // UINT32          BytesPerBlock;      // Total number of bytes per block (MUST be SectorsPerBlock * DataBytesPerSector)

        ARRAYSIZE_CONST_EXPR(g_INTERNALFLASH_BlockRange2),
        g_INTERNALFLASH_BlockRange2
    },

	{
        REGION3_XIP_ADDRESS,            // SectorAddress   Start;              // Starting Sector address
        REGION3_NUM_OF_BLOCKS,          // UINT32          NumBlocks;          // total number of blocks in this region