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;
//--// 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
{ 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,
/*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;
#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