Renamed "pbook" firmware to "v4". Original "green" boards now under "v3".
Add external LED support for v4 firmware.
Added --reset to scsi2sd-config
bootloaderhost can now reset the board.
-201404xx 3.5
+20140713 3.5
- Fixed several performance issues. Transfer rates up to 2.5MB/s are now
possible.
- Implemented the READ BUFFER scsi command for performance testing purposes.
+ - Added support for the new "yellow" v4.2 revision boards.
+ - Improved firmware uploading. bootloaderhost can now reset the board back
+ to the bootloader.
+ - Display firmware version in scsi2sd-config
+ - Add "--reset" parameter to scsi2sd-config
20140418 3.4
- Critical fix for writes when using non-standard block sizes.
Compatibility
-Tested with Linux (current), Apple Macintosh System 7.5.3 on LC-III, and LC-475 hardware.
-
-Users have reported success on these systems:
+ Desktop systems
+ Mac LC-III and LC-475
Mac II running System 6.0.8
Mac SE/30
+ Apple IIgs using Apple II High Speed SCSI controller card (from v3.3)
+ Symbolics Lisp Machine XL1200, using 1280 byte sectors (from v3.4)
+ PDP-11/73 running RSX11M+ V4.6
+ Amiga 500+ with GVP A530
+ Atari TT030 System V
+
+Samplers
+
Roland JS-30 Sampler
Akai S1000, S3200, S3000XL, MPC 2000XL, DPS 12
+ SCSI cable reversed on S3200
+ There are compatibility problems with the Akai MPC3000. It works (slowly) with the alternate Vailixi OS with multi-sector transfers disabled.
EMU Emulator E4X with EOS 3.00b and E6400 (classic) with Eos 4.01
Ensoniq ASR-X, ASR-10 (from v3.4, 2GB size limit)
+ ASR-20 Requires TERMPWR jumper.
+ Kurzweil K2000R
+ See kurzweil.com for size limits which a dependant on the OS version. Older OS versions have a 1GB limit.
+ SCSI cable reversed
+ Casio FZ-20M
+ Requires TERMPWR jumper. The manual shows the pin25 of the DB25 connector is "not connected".
+ May require scsi2sd-config --apple flag
+
+Other
+
HP 16601A logic analyzer
- Apple IIgs using Apple II High Speed SCSI controller card (from v3.3)
- Symbolics List Machine XL1200, using 1280 byte sectors (from v3.4)
- Fluke 9100 series
- PDP-11/73 running RSX11M+ V4.6
- Amiga 500+ with GVP A530
+ Fluke 9100 series
+++ /dev/null
-codegentemp
-CortexM3
-*.Micha_000
-*.rpt
-*.pdf
-*.html
-
+++ /dev/null
-/*******************************************************************************\r
-* File Name: Bootloadable_1.c\r
-* Version 1.20\r
-*\r
-* Description:\r
-* Provides an API for the Bootloadable application. The API includes a\r
-* single function for starting bootloader.\r
-*\r
-********************************************************************************\r
-* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
-* You may use this file only in accordance with the license, terms, conditions,\r
-* disclaimers, and limitations in the end user license agreement accompanying\r
-* the software package with which this file was provided.\r
-*******************************************************************************/\r
-\r
-#include "Bootloadable_1.h"\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: Bootloadable_1_Load\r
-********************************************************************************\r
-* Summary:\r
-* Begins the bootloading algorithm, downloading a new ACD image from the host.\r
-*\r
-* Parameters:\r
-* None\r
-*\r
-* Returns:\r
-* This method will never return. It will load a new application and reset\r
-* the device.\r
-*\r
-*******************************************************************************/\r
-void Bootloadable_1_Load(void) \r
-{\r
- /* Schedule Bootloader to start after reset */\r
- Bootloadable_1_SET_RUN_TYPE(Bootloadable_1_START_BTLDR);\r
-\r
- CySoftwareReset();\r
-}\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: Bootloadable_1_SetFlashByte\r
-********************************************************************************\r
-* Summary:\r
-* Sets byte at specified address in Flash.\r
-*\r
-* Parameters:\r
-* None\r
-*\r
-* Returns:\r
-* None\r
-*\r
-*******************************************************************************/\r
-void Bootloadable_1_SetFlashByte(uint32 address, uint8 runType) \r
-{\r
- uint32 flsAddr = address - CYDEV_FLASH_BASE;\r
- uint8 rowData[CYDEV_FLS_ROW_SIZE];\r
-\r
- #if !(CY_PSOC4)\r
- uint8 arrayId = (uint8)(flsAddr / CYDEV_FLS_SECTOR_SIZE);\r
- #endif /* !(CY_PSOC4) */\r
-\r
- uint16 rowNum = (uint16)((flsAddr % CYDEV_FLS_SECTOR_SIZE) / CYDEV_FLS_ROW_SIZE);\r
- uint32 baseAddr = address - (address % CYDEV_FLS_ROW_SIZE);\r
- uint16 idx;\r
-\r
-\r
- for (idx = 0u; idx < CYDEV_FLS_ROW_SIZE; idx++)\r
- {\r
- rowData[idx] = Bootloadable_1_GET_CODE_DATA(baseAddr + idx);\r
- }\r
- rowData[address % CYDEV_FLS_ROW_SIZE] = runType;\r
-\r
-\r
- #if(CY_PSOC4)\r
- (void) CySysFlashWriteRow((uint32)rowNum, rowData);\r
- #else\r
- (void) CyWriteRowData(arrayId, rowNum, rowData);\r
- #endif /* (CY_PSOC4) */\r
-}\r
-\r
-\r
-/* [] END OF FILE */\r
+++ /dev/null
-/*******************************************************************************\r
-* File Name: Bootloadable_1.h\r
-* Version 1.20\r
-*\r
-* Description:\r
-* Provides an API for the Bootloadable application. The API includes a\r
-* single function for starting bootloader.\r
-*\r
-********************************************************************************\r
-* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
-* You may use this file only in accordance with the license, terms, conditions,\r
-* disclaimers, and limitations in the end user license agreement accompanying\r
-* the software package with which this file was provided.\r
-********************************************************************************/\r
-\r
-\r
-#ifndef CY_BOOTLOADABLE_Bootloadable_1_H\r
-#define CY_BOOTLOADABLE_Bootloadable_1_H\r
-\r
-#include "cydevice_trm.h"\r
-#include "CyFlash.h"\r
-\r
-\r
-/* Check to see if required defines such as CY_PSOC5LP are available */\r
-/* They are defined starting with cy_boot v3.0 */\r
-#if !defined (CY_PSOC5LP)\r
- #error Component Bootloadable_v1_20 requires cy_boot v3.0 or later\r
-#endif /* !defined (CY_PSOC5LP) */\r
-\r
-\r
-#ifndef CYDEV_FLASH_BASE\r
- #define CYDEV_FLASH_BASE CYDEV_FLS_BASE\r
- #define CYDEV_FLASH_SIZE CYDEV_FLS_SIZE\r
-#endif /* CYDEV_FLASH_BASE */\r
-\r
-#if(CY_PSOC3)\r
- #define Bootloadable_1_GET_CODE_DATA(idx) (*((uint8 CYCODE *) (idx)))\r
-#else\r
- #define Bootloadable_1_GET_CODE_DATA(idx) (*((uint8 *)(CYDEV_FLASH_BASE + (idx))))\r
-#endif /* (CY_PSOC3) */\r
-\r
-\r
-/*******************************************************************************\r
-* This variable is used by Bootloader/Bootloadable components to schedule what\r
-* application will be started after software reset.\r
-*******************************************************************************/\r
-#if (CY_PSOC4)\r
- #if defined(__ARMCC_VERSION)\r
- __attribute__ ((section(".bootloaderruntype"), zero_init))\r
- #elif defined (__GNUC__)\r
- __attribute__ ((section(".bootloaderruntype")))\r
- #elif defined (__ICCARM__)\r
- #pragma location=".bootloaderruntype"\r
- #endif /* defined(__ARMCC_VERSION) */\r
- extern volatile uint32 cyBtldrRunType;\r
-#endif /* (CY_PSOC4) */\r
-\r
-\r
-/*******************************************************************************\r
-* Get the reason of the device reset\r
-*******************************************************************************/\r
-#if(CY_PSOC4)\r
- #define Bootloadable_1_RES_CAUSE_RESET_SOFT (0x10u)\r
- #define Bootloadable_1_GET_RUN_TYPE \\r
- (((CY_GET_REG32(CYREG_RES_CAUSE) & Bootloadable_1_RES_CAUSE_RESET_SOFT) > 0u) \\r
- ? (cyBtldrRunType) \\r
- : 0u)\r
-#else\r
- #define Bootloadable_1_GET_RUN_TYPE (CY_GET_REG8(CYREG_RESET_SR0) & \\r
- (Bootloadable_1_START_BTLDR | Bootloadable_1_START_APP))\r
-#endif /* (CY_PSOC4) */\r
-\r
-\r
-/*******************************************************************************\r
-* Schedule Bootloader/Bootloadable to be run after software reset\r
-*******************************************************************************/\r
-#if(CY_PSOC4)\r
- #define Bootloadable_1_SET_RUN_TYPE(x) (cyBtldrRunType = (x))\r
-#else\r
- #define Bootloadable_1_SET_RUN_TYPE(x) CY_SET_REG8(CYREG_RESET_SR0, (x))\r
-#endif /* (CY_PSOC4) */\r
-\r
-\r
-\r
-/***************************************\r
-* Function Prototypes\r
-***************************************/\r
-extern void Bootloadable_1_Load(void) ;\r
-\r
-\r
-/*******************************************************************************\r
-* Following code are OBSOLETE and must not be used starting from version 1.10\r
-*******************************************************************************/\r
-#define CYBTDLR_SET_RUN_TYPE(x) Bootloadable_1_SET_RUN_TYPE(x)\r
-\r
-\r
-/*******************************************************************************\r
-* Following code are OBSOLETE and must not be used starting from version 1.20\r
-*******************************************************************************/\r
-#define Bootloadable_1_START_APP (0x80u)\r
-#define Bootloadable_1_START_BTLDR (0x40u)\r
-#define Bootloadable_1_META_DATA_SIZE (64u)\r
-#define Bootloadable_1_META_APP_CHECKSUM_OFFSET (0u)\r
-\r
-#if(CY_PSOC3)\r
-\r
- #define Bootloadable_1_APP_ADDRESS uint16\r
- #define Bootloadable_1_GET_CODE_WORD(idx) (*((uint32 CYCODE *) (idx)))\r
-\r
- /* Offset by 2 from 32 bit start because only need 16 bits */\r
- #define Bootloadable_1_META_APP_ADDR_OFFSET (3u)\r
- #define Bootloadable_1_META_APP_BL_LAST_ROW_OFFSET (7u)\r
- #define Bootloadable_1_META_APP_BYTE_LEN_OFFSET (11u)\r
- #define Bootloadable_1_META_APP_RUN_TYPE_OFFSET (15u)\r
-\r
-#else\r
-\r
- #define Bootloadable_1_APP_ADDRESS uint32\r
- #define Bootloadable_1_GET_CODE_WORD(idx) (*((uint32 *)(CYDEV_FLASH_BASE + (idx))))\r
-\r
- #define Bootloadable_1_META_APP_ADDR_OFFSET (1u)\r
- #define Bootloadable_1_META_APP_BL_LAST_ROW_OFFSET (5u)\r
- #define Bootloadable_1_META_APP_BYTE_LEN_OFFSET (9u)\r
- #define Bootloadable_1_META_APP_RUN_TYPE_OFFSET (13u)\r
-\r
-#endif /* (CY_PSOC3) */\r
-\r
-#define Bootloadable_1_META_APP_ACTIVE_OFFSET (16u)\r
-#define Bootloadable_1_META_APP_VERIFIED_OFFSET (17u)\r
-\r
-#define Bootloadable_1_META_APP_BL_BUILD_VER_OFFSET (18u)\r
-#define Bootloadable_1_META_APP_ID_OFFSET (20u)\r
-#define Bootloadable_1_META_APP_VER_OFFSET (22u)\r
-#define Bootloadable_1_META_APP_CUST_ID_OFFSET (24u)\r
-\r
-#define Bootloadable_1_SetFlashRunType(runType) \\r
- Bootloadable_1_SetFlashByte(Bootloadable_1_MD_APP_RUN_ADDR(0), (runType))\r
-\r
-void Bootloadable_1_SetFlashByte(uint32 address, uint8 runType) ;\r
-\r
-#if(CY_PSOC4)\r
- #define Bootloadable_1_SOFTWARE_RESET CY_SET_REG32(CYREG_CM0_AIRCR, 0x05FA0004u)\r
-#else\r
- #define Bootloadable_1_SOFTWARE_RESET CY_SET_REG8(CYREG_RESET_CR2, 0x01u)\r
-#endif /* (CY_PSOC4) */\r
-\r
-#if(CY_PSOC4)\r
- extern uint8 appRunType;\r
-#endif /* (CY_PSOC4) */\r
-\r
-\r
-#endif /* CY_BOOTLOADABLE_Bootloadable_1_H */\r
-\r
-\r
-/* [] END OF FILE */\r
+++ /dev/null
-/*******************************************************************************\r
-* File Name: CFG_EEPROM.c\r
-* Version 2.10\r
-*\r
-* Description:\r
-* Provides the source code to the API for the EEPROM component.\r
-*\r
-********************************************************************************\r
-* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
-* You may use this file only in accordance with the license, terms, conditions,\r
-* disclaimers, and limitations in the end user license agreement accompanying\r
-* the software package with which this file was provided.\r
-*******************************************************************************/\r
-\r
-#include "CFG_EEPROM.h"\r
-\r
-\r
-#if (CY_PSOC3 || CY_PSOC5LP)\r
-\r
- /*******************************************************************************\r
- * Function Name: CFG_EEPROM_Enable\r
- ********************************************************************************\r
- *\r
- * Summary:\r
- * Enable the EEPROM.\r
- *\r
- * Parameters:\r
- * None\r
- *\r
- * Return:\r
- * None\r
- *\r
- *******************************************************************************/\r
- void CFG_EEPROM_Enable(void) \r
- {\r
- CyEEPROM_Start();\r
- }\r
-\r
-\r
- /*******************************************************************************\r
- * Function Name: CFG_EEPROM_Start\r
- ********************************************************************************\r
- *\r
- * Summary:\r
- * Starts EEPROM.\r
- *\r
- * Parameters:\r
- * None\r
- *\r
- * Return:\r
- * None\r
- *\r
- *******************************************************************************/\r
- void CFG_EEPROM_Start(void) \r
- {\r
- /* Enable the EEPROM */\r
- CFG_EEPROM_Enable();\r
- }\r
-\r
-\r
- /*******************************************************************************\r
- * Function Name: CFG_EEPROM_Stop\r
- ********************************************************************************\r
- *\r
- * Summary:\r
- * Stops and powers down EEPROM.\r
- *\r
- * Parameters:\r
- * None\r
- *\r
- * Return:\r
- * None\r
- *\r
- *******************************************************************************/\r
- void CFG_EEPROM_Stop (void) \r
- {\r
- /* Disable EEPROM */\r
- CyEEPROM_Stop();\r
- }\r
-\r
-#endif /* (CY_PSOC3 || CY_PSOC5LP) */\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: CFG_EEPROM_EraseSector\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* Erases a sector of memory. This function blocks until the operation is\r
-* complete.\r
-*\r
-* Parameters:\r
-* sectorNumber: Sector number to erase.\r
-*\r
-* Return:\r
-* CYRET_SUCCESS, if the operation was successful.\r
-* CYRET_BAD_PARAM, if the parameter sectorNumber out of range.\r
-* CYRET_LOCKED, if the spc is being used.\r
-* CYRET_UNKNOWN, if there was an SPC error.\r
-*\r
-*******************************************************************************/\r
-cystatus CFG_EEPROM_EraseSector(uint8 sectorNumber) \r
-{\r
- cystatus status;\r
-\r
- /* Start the SPC */\r
- CySpcStart();\r
-\r
- if(sectorNumber < (uint8) CY_EEPROM_NUMBER_ARRAYS)\r
- {\r
- /* See if we can get the SPC. */\r
- if(CySpcLock() == CYRET_SUCCESS)\r
- {\r
- #if(CY_PSOC5A)\r
-\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- /* Command to load a row of data */\r
- if(CySpcLoadRow(CY_SPC_FIRST_EE_ARRAYID, 0, CYDEV_EEPROM_ROW_SIZE) == CYRET_STARTED)\r
- {\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
- }\r
-\r
- /* Command to erase a sector */\r
- if(status == CYRET_SUCCESS)\r
- {\r
-\r
- #endif /* (CY_PSOC5A) */\r
-\r
- if(CySpcEraseSector(CY_SPC_FIRST_EE_ARRAYID, sectorNumber) == CYRET_STARTED)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
-\r
- #if(CY_PSOC5A)\r
-\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
-\r
- #endif /* (CY_PSOC5A) */\r
-\r
- /* Unlock the SPC so someone else can use it. */\r
- CySpcUnlock();\r
- }\r
- else\r
- {\r
- status = CYRET_LOCKED;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_BAD_PARAM;\r
- }\r
-\r
- return(status);\r
-}\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: CFG_EEPROM_Write\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* Writes a row, CYDEV_EEPROM_ROW_SIZE of data to the EEPROM. This is\r
-* a blocking call. It will not return until the function succeeds or fails.\r
-*\r
-* Parameters:\r
-* rowData: Address of the data to write to the EEPROM.\r
-* rowNumber: EEPROM row number to program.\r
-*\r
-* Return:\r
-* CYRET_SUCCESS, if the operation was successful.\r
-* CYRET_BAD_PARAM, if the parameter rowNumber out of range.\r
-* CYRET_LOCKED, if the spc is being used.\r
-* CYRET_UNKNOWN, if there was an SPC error.\r
-*\r
-*******************************************************************************/\r
-cystatus CFG_EEPROM_Write(const uint8 * rowData, uint8 rowNumber) \r
-{\r
- cystatus status;\r
-\r
- /* Start the SPC */\r
- CySpcStart();\r
-\r
- if(rowNumber < (uint8) CY_EEPROM_NUMBER_ROWS)\r
- {\r
- /* See if we can get the SPC. */\r
- if(CySpcLock() == CYRET_SUCCESS)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- /* Command to load a row of data */\r
- if(CySpcLoadRow(CY_SPC_FIRST_EE_ARRAYID, rowData, CYDEV_EEPROM_ROW_SIZE) == CYRET_STARTED)\r
- {\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
-\r
- /* Command to erase and program the row. */\r
- if(status == CYRET_SUCCESS)\r
- {\r
- if(CySpcWriteRow(CY_SPC_FIRST_EE_ARRAYID, (uint16)rowNumber, dieTemperature[0],\r
- dieTemperature[1]) == CYRET_STARTED)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
-\r
- /* Unlock the SPC so someone else can use it. */\r
- CySpcUnlock();\r
- }\r
- else\r
- {\r
- status = CYRET_LOCKED;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_BAD_PARAM;\r
- }\r
-\r
- return(status);\r
-}\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: CFG_EEPROM_StartWrite\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* Starts the SPC write function. This function does not block, it returns\r
-* once the command has begun the SPC write function. This function must be used\r
-* in combination with CFG_EEPROM_QueryWrite(). Once this function has\r
-* been called the SPC will be locked until CFG_EEPROM_QueryWrite()\r
-* returns CYRET_SUCCESS.\r
-*\r
-* Parameters:\r
-* rowData: Address of buffer containing a row of data to write to the EEPROM.\r
-* rowNumber: EEPROM row number to program.\r
-*\r
-* Return:\r
-* CYRET_STARTED, if the spc command to write was successfuly started.\r
-* CYRET_BAD_PARAM, if the parameter rowNumber out of range.\r
-* CYRET_LOCKED, if the spc is being used.\r
-* CYRET_UNKNOWN, if there was an SPC error.\r
-*\r
-*******************************************************************************/\r
-cystatus CFG_EEPROM_StartWrite(const uint8 * rowData, uint8 rowNumber) \\r
-\r
-{\r
- cystatus status;\r
-\r
- if(rowNumber < (uint8) CY_EEPROM_NUMBER_ROWS)\r
- {\r
- /* See if we can get the SPC. */\r
- if(CySpcLock() == CYRET_SUCCESS)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- /* Command to load a row of data */\r
- if(CySpcLoadRow(CY_SPC_FIRST_EE_ARRAYID, rowData, CYDEV_EEPROM_ROW_SIZE) == CYRET_STARTED)\r
- {\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
-\r
- /* Command to erase and program the row. */\r
- if(status == CYRET_SUCCESS)\r
- {\r
- if(CySpcWriteRow(CY_SPC_FIRST_EE_ARRAYID, (uint16)rowNumber, dieTemperature[0],\r
- dieTemperature[1]) == CYRET_STARTED)\r
- {\r
- status = CYRET_STARTED;\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_LOCKED;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_BAD_PARAM;\r
- }\r
-\r
- return(status);\r
-}\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: CFG_EEPROM_QueryWrite\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* Checks the state of write to EEPROM. This function must be called until\r
-* the return value is not CYRET_STARTED.\r
-*\r
-* Parameters:\r
-* None\r
-*\r
-* Return:\r
-* CYRET_STARTED, if the spc command is still processing.\r
-* CYRET_SUCCESS, if the operation was successful.\r
-* CYRET_UNKNOWN, if there was an SPC error.\r
-*\r
-*******************************************************************************/\r
-cystatus CFG_EEPROM_QueryWrite(void) \r
-{\r
- cystatus status;\r
-\r
- /* Check if SPC is idle */\r
- if(CY_SPC_IDLE)\r
- {\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
-\r
- /* Unlock the SPC so someone else can use it. */\r
- CySpcUnlock();\r
- }\r
- else\r
- {\r
- status = CYRET_STARTED;\r
- }\r
-\r
- return(status);\r
-}\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: CFG_EEPROM_ByteWrite\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* Writes a byte of data to the EEPROM. This is a blocking call. It will not\r
-* return until the function succeeds or fails.\r
-*\r
-* Parameters:\r
-* dataByte: Byte of data to write to the EEPROM.\r
-* rowNumber: EEPROM row number to program.\r
-* byteNumber: Byte number within the row to program.\r
-*\r
-* Return:\r
-* CYRET_SUCCESS, if the operation was successful.\r
-* CYRET_BAD_PARAM, if the parameter rowNumber or byteNumber out of range.\r
-* CYRET_LOCKED, if the spc is being used.\r
-* CYRET_UNKNOWN, if there was an SPC error.\r
-*\r
-*******************************************************************************/\r
-cystatus CFG_EEPROM_ByteWrite(uint8 dataByte, uint8 rowNumber, uint8 byteNumber) \\r
-\r
-{\r
- cystatus status;\r
-\r
- /* Start the SPC */\r
- CySpcStart();\r
-\r
- if((rowNumber < (uint8) CY_EEPROM_NUMBER_ROWS) && (byteNumber < (uint8) SIZEOF_EEPROM_ROW))\r
- {\r
- /* See if we can get the SPC. */\r
- if(CySpcLock() == CYRET_SUCCESS)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- /* Command to load a byte of data */\r
- if(CySpcLoadMultiByte(CY_SPC_FIRST_EE_ARRAYID, (uint16)byteNumber, &dataByte,\\r
- CFG_EEPROM_SPC_BYTE_WRITE_SIZE) == CYRET_STARTED)\r
- {\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
-\r
- /* Command to erase and program the row. */\r
- if(status == CYRET_SUCCESS)\r
- {\r
- if(CySpcWriteRow(CY_SPC_FIRST_EE_ARRAYID, (uint16)rowNumber, dieTemperature[0],\r
- dieTemperature[1]) == CYRET_STARTED)\r
- {\r
- /* Plan for failure */\r
- status = CYRET_UNKNOWN;\r
-\r
- while(CY_SPC_BUSY)\r
- {\r
- /* Wait until SPC becomes idle */\r
- }\r
-\r
- /* SPC is idle now */\r
- if(CY_SPC_STATUS_SUCCESS == CY_SPC_READ_STATUS)\r
- {\r
- status = CYRET_SUCCESS;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_UNKNOWN;\r
- }\r
- }\r
-\r
- /* Unlock the SPC so someone else can use it. */\r
- CySpcUnlock();\r
- }\r
- else\r
- {\r
- status = CYRET_LOCKED;\r
- }\r
- }\r
- else\r
- {\r
- status = CYRET_BAD_PARAM;\r
- }\r
-\r
- return(status);\r
-}\r
-\r
-\r
-/* [] END OF FILE */\r
+++ /dev/null
-/*******************************************************************************\r
-* File Name: CFG_EEPROM.h\r
-* Version 2.10\r
-*\r
-* Description:\r
-* Provides the function definitions for the EEPROM APIs.\r
-*\r
-********************************************************************************\r
-* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.\r
-* You may use this file only in accordance with the license, terms, conditions, \r
-* disclaimers, and limitations in the end user license agreement accompanying \r
-* the software package with which this file was provided.\r
-*******************************************************************************/\r
-\r
-#if !defined(CY_EEPROM_CFG_EEPROM_H)\r
-#define CY_EEPROM_CFG_EEPROM_H\r
-\r
-#include "cydevice_trm.h"\r
-#include "CyFlash.h"\r
-\r
-#if !defined(CY_PSOC5LP)\r
- #error Component EEPROM_v2_10 requires cy_boot v3.0 or later\r
-#endif /* (CY_PSOC5LP) */\r
-\r
-\r
-/***************************************\r
-* Function Prototypes\r
-***************************************/\r
-\r
-#if (CY_PSOC3 || CY_PSOC5LP) \r
- void CFG_EEPROM_Enable(void) ;\r
- void CFG_EEPROM_Start(void); \r
- void CFG_EEPROM_Stop(void) ;\r
-#endif /* (CY_PSOC3 || CY_PSOC5LP) */\r
-\r
-cystatus CFG_EEPROM_EraseSector(uint8 sectorNumber) ;\r
-cystatus CFG_EEPROM_Write(const uint8 * rowData, uint8 rowNumber) ;\r
-cystatus CFG_EEPROM_StartWrite(const uint8 * rowData, uint8 rowNumber) \\r
- ;\r
-cystatus CFG_EEPROM_QueryWrite(void) ;\r
-cystatus CFG_EEPROM_ByteWrite(uint8 dataByte, uint8 rowNumber, uint8 byteNumber) \\r
- ;\r
-\r
-\r
-/****************************************\r
-* API Constants\r
-****************************************/\r
-\r
-#define CFG_EEPROM_EEPROM_SIZE CYDEV_EE_SIZE\r
-#define CFG_EEPROM_SPC_BYTE_WRITE_SIZE (0x01u)\r
-\r
-\r
-/*******************************************************************************\r
-* Following code are OBSOLETE and must not be used starting from EEPROM 2.10\r
-*******************************************************************************/\r
-#define SPC_BYTE_WRITE_SIZE (CFG_EEPROM_SPC_BYTE_WRITE_SIZE)\r
-\r
-#endif /* CY_EEPROM_CFG_EEPROM_H */\r
-\r
-/* [] END OF FILE */\r
+++ /dev/null
-/*###ICF### Section handled by ICF editor, don't touch! ****/\r
-/*-Editor annotation file-*/\r
-/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */\r
-/*-Specials-*/\r
-define symbol __ICFEDIT_intvec_start__ = 0x00000000;\r
-/*-Memory Regions-*/\r
-define symbol __ICFEDIT_region_ROM_start__ = 0x0;\r
-define symbol __ICFEDIT_region_ROM_end__ = 131072 - 1;\r
-define symbol __ICFEDIT_region_RAM_start__ = 0x20000000 - (32768 / 2);\r
-define symbol __ICFEDIT_region_RAM_end__ = 0x20000000 + (32768 / 2) - 1;\r
-/*-Sizes-*/\r
-define symbol __ICFEDIT_size_cstack__ = 0x2000;\r
-define symbol __ICFEDIT_size_heap__ = 0x0400;\r
-/**** End of ICF editor section. ###ICF###*/\r
-\r
-\r
-/******** Definitions ********/\r
-define symbol CY_APPL_LOADABLE = 1;\r
-define symbol CY_APPL_LOADER = 0;\r
-define symbol CY_APPL_NUM = 1;\r
-define symbol CY_APPL_MAX = 1;\r
-define symbol CY_METADATA_SIZE = 64;\r
-define symbol CY_EE_IN_BTLDR = 0x00;\r
-define symbol CY_EE_SIZE = 2048;\r
-include "cybootloader.icf";\r
-if (!CY_APPL_LOADABLE) {\r
- define symbol CYDEV_BTLDR_SIZE = 0;\r
-}\r
-\r
-define symbol CY_FLASH_SIZE = 131072;\r
-define symbol CY_APPL_ORIGIN = 0; \r
-define symbol CY_FLASH_ROW_SIZE = 256;\r
-define symbol CY_ECC_ROW_SIZE = 32;\r
-\r
-define memory mem with size = 4G;\r
-define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];\r
-define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];\r
-\r
-define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };\r
-define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };\r
-define block HSTACK {block HEAP, last block CSTACK};\r
-\r
-define block LOADER { readonly section .cybootloader };\r
-define block APPL with fixed order {readonly section .romvectors, readonly};\r
-\r
-/* The address of Flash row next after Bootloader image */\r
-define symbol CY_BTLDR_END = CYDEV_BTLDR_SIZE +\r
- ((CYDEV_BTLDR_SIZE % CY_FLASH_ROW_SIZE) ?\r
- (CY_FLASH_ROW_SIZE - (CYDEV_BTLDR_SIZE % CY_FLASH_ROW_SIZE)) : 0);\r
-\r
-/* The start address of Standard/Loader/Loadable#1 image */\r
-define symbol CY_APPL1_START = CY_APPL_ORIGIN ? CY_APPL_ORIGIN : CY_BTLDR_END;\r
-\r
-/* The number of metadata records located at the end of Flash */\r
-define symbol CY_METADATA_CNT = (CY_APPL_NUM == 2) ? 2 : ((CY_APPL_LOADER || CY_APPL_LOADABLE) ? 1 : 0);\r
-\r
-/* The application area size measured in rows */\r
-define symbol CY_APPL_ROW_CNT = ((CY_FLASH_SIZE - CY_APPL1_START) / CY_FLASH_ROW_SIZE) - CY_METADATA_CNT;\r
-\r
-/* The start address of Loadable#2 image if any */\r
-define symbol CY_APPL2_START = CY_APPL1_START + (CY_APPL_ROW_CNT / 2 + CY_APPL_ROW_CNT % 2) * CY_FLASH_ROW_SIZE;\r
-\r
-/* The current image (Standard/Loader/Loadable) start address */\r
-define symbol CY_APPL_START = (CY_APPL_NUM == 1) ? CY_APPL1_START : CY_APPL2_START;\r
-\r
-/* The ECC data placement address */\r
-define exported symbol CY_ECC_OFFSET = (CY_APPL_START / CY_FLASH_ROW_SIZE) * CY_ECC_ROW_SIZE;\r
-\r
-/* The EEPROM offset and size that can be used by current application (Standard/Loader/Loadable) */\r
-define symbol CY_EE_OFFSET = (CY_APPL_LOADABLE && !CY_EE_IN_BTLDR) ? ((CY_EE_SIZE / CY_APPL_MAX) * (CY_APPL_NUM - 1)) : 0;\r
-define symbol CY_EE_IN_USE = (CY_APPL_LOADABLE && !CY_EE_IN_BTLDR) ? (CY_EE_SIZE / CY_APPL_MAX) : CY_EE_SIZE;\r
-\r
-/* Define EEPROM region */\r
-define region EEPROM_region = mem:[from (0x90200000 + CY_EE_OFFSET) size CY_EE_IN_USE];\r
-\r
-/* Define APPL region that will limit application size */\r
-define region APPL_region = mem:[from CY_APPL_START size CY_APPL_ROW_CNT * CY_FLASH_ROW_SIZE];\r
-\r
-\r
-/****** Initializations ******/\r
-initialize by copy { readwrite };\r
-do not initialize { section .noinit };\r
-do not initialize { readwrite section .ramvectors };\r
-\r
-/******** Placements *********/\r
-".cybootloader" : place at start of ROM_region {block LOADER};\r
-"APPL" : place at start of APPL_region {block APPL};\r
-\r
-"RAMVEC" : place at start of RAM_region { readwrite section .ramvectors };\r
-"readwrite" : place in RAM_region { readwrite };\r
-"HSTACK" : place at end of RAM_region { block HSTACK};\r
-\r
-keep { section .cybootloader, \r
- section .cyloadermeta, \r
- section .cyloadablemeta,\r
- section .cyconfigecc, \r
- section .cycustnvl, \r
- section .cywolatch,\r
- section .cyeeprom, \r
- section .cyflashprotect,\r
- section .cymeta };\r
-\r
-".cyloadermeta" : place at address mem : (CY_APPL_LOADER ? (CY_FLASH_SIZE - CY_METADATA_SIZE) : 0xF0000000) { readonly section .cyloadermeta };\r
-".cyloadablemeta" : place at address mem : (CY_FLASH_SIZE - CY_FLASH_ROW_SIZE * (CY_APPL_NUM - 1) - CY_METADATA_SIZE) { readonly section .cyloadablemeta };\r
-".cyconfigecc" : place at address mem : (0x80000000 + CY_ECC_OFFSET) { readonly section .cyconfigecc };\r
-".cycustnvl" : place at address mem : 0x90000000 { readonly section .cycustnvl };\r
-".cywolatch" : place at address mem : 0x90100000 { readonly section .cywolatch };\r
-".cyeeprom" : place in EEPROM_region { readonly section .cyeeprom };\r
-".cyflashprotect" : place at address mem : 0x90400000 { readonly section .cyflashprotect };\r
-".cymeta" : place at address mem : 0x90500000 { readonly section .cymeta };\r
-\r
-\r
-/* EOF */\r
+++ /dev/null
-#! armcc -E\r
-; The first line specifies a preprocessor command that the linker invokes \r
-; to pass a scatter file through a C preprocessor.\r
-\r
-;********************************************************************************\r
-;* File Name: Cm3RealView.scat\r
-;* Version 4.0\r
-;*\r
-;* Description:\r
-;* This Linker Descriptor file describes the memory layout of the PSoC5\r
-;* device. The memory layout of the final binary and hex images as well as\r
-;* the placement in PSoC5 memory is described.\r
-;*\r
-;*\r
-;* Note:\r
-;*\r
-;* romvectors: Cypress default Interrupt sevice routine vector table.\r
-;*\r
-;* This is the ISR vector table at bootup. Used only for the reset vector.\r
-;*\r
-;*\r
-;* ramvectors: Cypress ram interrupt service routine vector table.\r
-;*\r
-;* This is the ISR vector table used by the application.\r
-;*\r
-;*\r
-;********************************************************************************\r
-;* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
-;* You may use this file only in accordance with the license, terms, conditions,\r
-;* disclaimers, and limitations in the end user license agreement accompanying\r
-;* the software package with which this file was provided.\r
-;********************************************************************************/\r
-#include "cyfitter.h"\r
-\r
-#define CY_FLASH_SIZE 131072\r
-#define CY_APPL_ORIGIN 0\r
-#define CY_FLASH_ROW_SIZE 256\r
-#define CY_ECC_ROW_SIZE 32\r
-#define CY_EE_SIZE 2048\r
-#define CY_METADATA_SIZE 64\r
-\r
-\r
-; Define application base address\r
-#if (CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_LOADABLE)\r
- #define CY_APPL_NUM 1\r
- #define CY_APPL_MAX 1\r
- #define CY_EE_IN_BTLDR 0\r
-\r
- #if CY_APPL_ORIGIN\r
- #define APPL1_START CY_APPL_ORIGIN\r
- #else\r
- #define APPL1_START AlignExpr(ImageLimit(CYBOOTLOADER), CY_FLASH_ROW_SIZE)\r
- #endif\r
-\r
- #define APPL_START (APPL1_START + AlignExpr(((CY_FLASH_SIZE - APPL1_START - 2 * CY_FLASH_ROW_SIZE) / 2 ) * (CY_APPL_NUM - 1), CY_FLASH_ROW_SIZE))\r
- #define ECC_OFFSET ((APPL_START / CY_FLASH_ROW_SIZE) * CY_ECC_ROW_SIZE)\r
- #define EE_OFFSET (CY_EE_IN_BTLDR ? 0 : (CY_EE_SIZE / CY_APPL_MAX) * (CY_APPL_NUM - 1))\r
- #define EE_SIZE (CY_EE_IN_BTLDR ? CY_EE_SIZE : (CY_EE_SIZE / CY_APPL_MAX))\r
-\r
-#else\r
-\r
- #define APPL_START 0\r
- #define ECC_OFFSET 0\r
- #define EE_OFFSET 0\r
- #define EE_SIZE CY_EE_SIZE\r
-\r
-#endif\r
-\r
-\r
-; Place Bootloader at the beginning of Flash\r
-#if (CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_LOADABLE)\r
-\r
- CYBOOTLOADER 0\r
- {\r
- .cybootloader +0\r
- {\r
- * (.cybootloader)\r
- }\r
- }\r
-\r
- #if CY_APPL_ORIGIN\r
- ScatterAssert(APPL_START > LoadLimit(CYBOOTLOADER))\r
- #endif\r
-\r
-#endif\r
-\r
-\r
-APPLICATION APPL_START (CY_FLASH_SIZE - APPL_START)\r
-{\r
- VECTORS +0\r
- {\r
- * (.romvectors)\r
- }\r
-\r
- CODE +0\r
- {\r
- * (+RO)\r
- }\r
-\r
- ISRVECTORS (0x20000000 - (32768 / 2)) UNINIT\r
- {\r
- * (.ramvectors)\r
- }\r
-\r
- NOINIT_DATA +0 UNINIT\r
- {\r
- * (.noinit)\r
- }\r
-\r
- DATA +0\r
- {\r
- .ANY (+RW, +ZI)\r
- }\r
-\r
- ARM_LIB_HEAP (0x20000000 + (32768 / 2) - 0x0400 - 0x2000) EMPTY 0x0400\r
- {\r
- }\r
-\r
- ARM_LIB_STACK (0x20000000 + (32768 / 2)) EMPTY -0x2000\r
- {\r
- }\r
-}\r
-\r
-\r
-#if (CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_BOOTLOADER || CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_MULTIAPPBOOTLOADER)\r
-\r
- CYLOADERMETA (CY_FLASH_SIZE - CY_METADATA_SIZE)\r
- {\r
- .cyloadermeta +0 { * (.cyloadermeta) }\r
- }\r
-\r
-#else\r
-\r
- #if (CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_LOADABLE)\r
-\r
- CYLOADABLEMETA (CY_FLASH_SIZE - CY_FLASH_ROW_SIZE * (CY_APPL_NUM - 1) - CY_METADATA_SIZE)\r
- {\r
- .cyloadablemeta +0 { * (.cyloadablemeta) }\r
- }\r
- \r
- #endif\r
-\r
-#endif\r
-\r
-#if (CYDEV_ECC_ENABLE == 0)\r
-\r
- CYCONFIGECC (0x80000000 + ECC_OFFSET)\r
- {\r
- .cyconfigecc +0 { * (.cyconfigecc) }\r
- }\r
-\r
-#endif\r
-\r
-CYCUSTNVL 0x90000000\r
-{\r
- .cycustnvl +0 { * (.cycustnvl) }\r
-}\r
-\r
-CYWOLATCH 0x90100000\r
-{\r
- .cywolatch +0 { * (.cywolatch) }\r
-}\r
-\r
-#if defined(CYDEV_ALLOCATE_EEPROM)\r
-\r
- CYEEPROM 0x90200000 + EE_OFFSET (EE_SIZE)\r
- {\r
- .cyeeprom +0 { * (.cyeeprom) }\r
- }\r
-\r
-#endif\r
-\r
-CYFLASHPROTECT 0x90400000\r
-{\r
- .cyflashprotect +0 { * (.cyflashprotect) }\r
-}\r
-\r
-CYMETA 0x90500000\r
-{\r
- .cymeta +0 { * (.cymeta) }\r
-}\r
-\r
-#if (CYDEV_PROJ_TYPE == CYDEV_PROJ_TYPE_LOADABLE)\r
-\r
- CYLOADERMETA +0\r
- {\r
- .cyloadermeta +0 { * (.cyloadermeta) }\r
- }\r
-\r
-#endif\r
+++ /dev/null
-/*******************************************************************************\r
-* File Name: Cm3Start.c\r
-* Version 4.0\r
-*\r
-* Description:\r
-* Startup code for the ARM CM3.\r
-*\r
-********************************************************************************\r
-* Copyright 2008-2013, Cypress Semiconductor Corporation. All rights reserved.\r
-* You may use this file only in accordance with the license, terms, conditions,\r
-* disclaimers, and limitations in the end user license agreement accompanying\r
-* the software package with which this file was provided.\r
-*******************************************************************************/\r
-\r
-#include <limits.h>\r
-#include "cydevice_trm.h"\r
-#include "cytypes.h"\r
-#include "cyfitter_cfg.h"\r
-#include "CyLib.h"\r
-#include "CyDmac.h"\r
-#include "cyfitter.h"\r
-\r
-#define CY_NUM_INTERRUPTS (32u)\r
-#define CY_NUM_VECTORS (CYINT_IRQ_BASE + CY_NUM_INTERRUPTS)\r
-#define CY_NUM_ROM_VECTORS (4u)\r
-#define CY_NVIC_APINT_PTR ((reg32 *) CYREG_NVIC_APPLN_INTR)\r
-#define CY_NVIC_CFG_CTRL_PTR ((reg32 *) CYREG_NVIC_CFG_CONTROL)\r
-#define CY_NVIC_APINT_PRIGROUP_3_5 (0x00000400u) /* Priority group 3.5 split */\r
-#define CY_NVIC_APINT_VECTKEY (0x05FA0000u) /* This key is required in order to write the NVIC_APINT register */\r
-#define CY_NVIC_CFG_STACKALIGN (0x00000200u) /* This specifies that the exception stack must be 8 byte aligned */\r
-\r
-\r
-/* Extern functions */\r
-extern void CyBtldr_CheckLaunch(void);\r
-\r
-/* Function prototypes */\r
-void initialize_psoc(void);\r
-CY_ISR(IntDefaultHandler);\r
-void Reset(void);\r
-CY_ISR(IntDefaultHandler);\r
-\r
-#if defined(__ARMCC_VERSION)\r
- #define INITIAL_STACK_POINTER ((cyisraddress)(uint32)&Image$$ARM_LIB_STACK$$ZI$$Limit)\r
-#elif defined (__GNUC__)\r
- #define INITIAL_STACK_POINTER (&__cy_stack)\r
-#elif defined (__ICCARM__)\r
- #pragma language=extended\r
- #pragma segment="CSTACK"\r
- #define INITIAL_STACK_POINTER { .__ptr = __sfe( "CSTACK" ) }\r
-\r
- extern void __iar_program_start( void );\r
- extern void __iar_data_init3 (void);\r
-#endif /* (__ARMCC_VERSION) */\r
-\r
-/* Global variables */\r
-#if !defined (__ICCARM__)\r
- CY_NOINIT static uint32 cySysNoInitDataValid;\r
-#endif /* !defined (__ICCARM__) */\r
-\r
-\r
-/*******************************************************************************\r
-* Default Ram Interrupt Vector table storage area. Must be 256-byte aligned.\r
-*******************************************************************************/\r
-#if defined (__ICCARM__)\r
- #pragma location=".ramvectors"\r
- #pragma data_alignment=256\r
-#else\r
- CY_SECTION(".ramvectors")\r
- CY_ALIGN(256)\r
-#endif /* defined (__ICCARM__) */\r
-cyisraddress CyRamVectors[CY_NUM_VECTORS];\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: IntDefaultHandler\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* This function is called for all interrupts, other than reset, that get\r
-* called before the system is setup.\r
-*\r
-* Parameters:\r
-* None\r
-*\r
-* Return:\r
-* None\r
-*\r
-* Theory:\r
-* Any value other than zero is acceptable.\r
-*\r
-*******************************************************************************/\r
-CY_ISR(IntDefaultHandler)\r
-{\r
-\r
- while(1)\r
- {\r
- /***********************************************************************\r
- * We should never get here. If we do, a serious problem occured, so go\r
- * into an infinite loop.\r
- ***********************************************************************/\r
- }\r
-}\r
-\r
-\r
-#if defined(__ARMCC_VERSION)\r
-\r
-/* Local function for the device reset. */\r
-extern void Reset(void);\r
-\r
-/* Application entry point. */\r
-extern void $Super$$main(void);\r
-\r
-/* Linker-generated Stack Base addresses, Two Region and One Region */\r
-extern uint32 Image$$ARM_LIB_STACK$$ZI$$Limit;\r
-\r
-/* RealView C Library initialization. */\r
-extern int __main(void);\r
-\r
-\r
-/*******************************************************************************\r
-* Function Name: Reset\r
-********************************************************************************\r
-*\r
-* Summary:\r
-* This function handles the reset interrupt for the RVDS/MDK toolchains.\r
-* This is the first bit of code that is executed at startup.\r
-*\r
-* Parameters:\r
-* None\r
-*\r
-* Return:\r
-* None\r
-*\r
-*******************************************************************************/\r
-void Reset(void)\r
-{\r