mirror of
https://github.com/fhgwright/SCSI2SD.git
synced 2025-02-06 00:29:56 +00:00
scsi2sd-util crash on exit fix (again)
This commit is contained in:
parent
94cc9e77bc
commit
446892cde0
@ -1,3 +1,9 @@
|
||||
20150614 4.3
|
||||
- Added configurable disk geometry.
|
||||
- Added configuration import/export function to scsi2sd-util
|
||||
- scsi2sd-util stability fixes
|
||||
- Fixes to support EMU EMAX1 & 2
|
||||
|
||||
20150504 4.2.4
|
||||
- Clean up version number mishap (4.2.3 reported as 4.2.2)
|
||||
- Reduce size of mode pages for SCSI1 hosts
|
||||
|
@ -0,0 +1,356 @@
|
||||
/*******************************************************************************
|
||||
* File Name: SCSI_SEL_ISR.c
|
||||
* Version 1.70
|
||||
*
|
||||
* Description:
|
||||
* API for controlling the state of an interrupt.
|
||||
*
|
||||
*
|
||||
* Note:
|
||||
*
|
||||
********************************************************************************
|
||||
* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.
|
||||
* You may use this file only in accordance with the license, terms, conditions,
|
||||
* disclaimers, and limitations in the end user license agreement accompanying
|
||||
* the software package with which this file was provided.
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
#include <cydevice_trm.h>
|
||||
#include <CyLib.h>
|
||||
#include <SCSI_SEL_ISR.h>
|
||||
|
||||
#if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */
|
||||
|
||||
/*******************************************************************************
|
||||
* Place your includes, defines and code here
|
||||
********************************************************************************/
|
||||
/* `#START SCSI_SEL_ISR_intc` */
|
||||
|
||||
/* `#END` */
|
||||
|
||||
#ifndef CYINT_IRQ_BASE
|
||||
#define CYINT_IRQ_BASE 16
|
||||
#endif /* CYINT_IRQ_BASE */
|
||||
#ifndef CYINT_VECT_TABLE
|
||||
#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)
|
||||
#endif /* CYINT_VECT_TABLE */
|
||||
|
||||
/* Declared in startup, used to set unused interrupts to. */
|
||||
CY_ISR_PROTO(IntDefaultHandler);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Start
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Set up the interrupt and enable it.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Start(void)
|
||||
{
|
||||
/* For all we know the interrupt is active. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
||||
SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt);
|
||||
|
||||
/* Set the priority. */
|
||||
SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
||||
|
||||
/* Enable it. */
|
||||
SCSI_SEL_ISR_Enable();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_StartEx
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Set up the interrupt and enable it.
|
||||
*
|
||||
* Parameters:
|
||||
* address: Address of the ISR to set in the interrupt vector table.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_StartEx(cyisraddress address)
|
||||
{
|
||||
/* For all we know the interrupt is active. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
||||
SCSI_SEL_ISR_SetVector(address);
|
||||
|
||||
/* Set the priority. */
|
||||
SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
||||
|
||||
/* Enable it. */
|
||||
SCSI_SEL_ISR_Enable();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Stop
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Disables and removes the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Stop(void)
|
||||
{
|
||||
/* Disable this interrupt. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the passive one. */
|
||||
SCSI_SEL_ISR_SetVector(&IntDefaultHandler);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Interrupt
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* The default Interrupt Service Routine for SCSI_SEL_ISR.
|
||||
*
|
||||
* Add custom code between the coments to keep the next version of this file
|
||||
* from over writting your code.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
CY_ISR(SCSI_SEL_ISR_Interrupt)
|
||||
{
|
||||
/* Place your Interrupt code here. */
|
||||
/* `#START SCSI_SEL_ISR_Interrupt` */
|
||||
|
||||
/* `#END` */
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetVector
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start
|
||||
* will override any effect this method would have had. To set the vector
|
||||
* before the component has been started use SCSI_SEL_ISR_StartEx instead.
|
||||
*
|
||||
* Parameters:
|
||||
* address: Address of the ISR to set in the interrupt vector table.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetVector(cyisraddress address)
|
||||
{
|
||||
cyisraddress * ramVectorTable;
|
||||
|
||||
ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
||||
|
||||
ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetVector
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the "address" of the current ISR vector for the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* Address of the ISR in the interrupt vector table.
|
||||
*
|
||||
*******************************************************************************/
|
||||
cyisraddress SCSI_SEL_ISR_GetVector(void)
|
||||
{
|
||||
cyisraddress * ramVectorTable;
|
||||
|
||||
ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
||||
|
||||
return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER];
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetPriority
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start
|
||||
* or SCSI_SEL_ISR_StartEx will override any effect this method
|
||||
* would have had. This method should only be called after
|
||||
* SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set
|
||||
* the initial priority for the component use the cydwr file in the tool.
|
||||
*
|
||||
* Parameters:
|
||||
* priority: Priority of the interrupt. 0 - 7, 0 being the highest.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetPriority(uint8 priority)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_PRIOR = priority << 5;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetPriority
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the Priority of the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* Priority of the interrupt. 0 - 7, 0 being the highest.
|
||||
*
|
||||
*******************************************************************************/
|
||||
uint8 SCSI_SEL_ISR_GetPriority(void)
|
||||
{
|
||||
uint8 priority;
|
||||
|
||||
|
||||
priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5;
|
||||
|
||||
return priority;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Enable
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Enables the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Enable(void)
|
||||
{
|
||||
/* Enable the general interrupt. */
|
||||
*SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetState
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the state (enabled, disabled) of the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* 1 if enabled, 0 if disabled.
|
||||
*
|
||||
*******************************************************************************/
|
||||
uint8 SCSI_SEL_ISR_GetState(void)
|
||||
{
|
||||
/* Get the state of the general interrupt. */
|
||||
return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Disable
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Disables the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Disable(void)
|
||||
{
|
||||
/* Disable the general interrupt. */
|
||||
*SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetPending
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Causes the Interrupt to enter the pending state, a software method of
|
||||
* generating the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetPending(void)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_ClearPending
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Clears a pending interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_ClearPending(void)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
#endif /* End check for removal by optimization */
|
||||
|
||||
|
||||
/* [] END OF FILE */
|
@ -0,0 +1,70 @@
|
||||
/*******************************************************************************
|
||||
* File Name: SCSI_SEL_ISR.h
|
||||
* Version 1.70
|
||||
*
|
||||
* Description:
|
||||
* Provides the function definitions for the Interrupt Controller.
|
||||
*
|
||||
*
|
||||
********************************************************************************
|
||||
* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.
|
||||
* You may use this file only in accordance with the license, terms, conditions,
|
||||
* disclaimers, and limitations in the end user license agreement accompanying
|
||||
* the software package with which this file was provided.
|
||||
*******************************************************************************/
|
||||
#if !defined(CY_ISR_SCSI_SEL_ISR_H)
|
||||
#define CY_ISR_SCSI_SEL_ISR_H
|
||||
|
||||
|
||||
#include <cytypes.h>
|
||||
#include <cyfitter.h>
|
||||
|
||||
/* Interrupt Controller API. */
|
||||
void SCSI_SEL_ISR_Start(void);
|
||||
void SCSI_SEL_ISR_StartEx(cyisraddress address);
|
||||
void SCSI_SEL_ISR_Stop(void);
|
||||
|
||||
CY_ISR_PROTO(SCSI_SEL_ISR_Interrupt);
|
||||
|
||||
void SCSI_SEL_ISR_SetVector(cyisraddress address);
|
||||
cyisraddress SCSI_SEL_ISR_GetVector(void);
|
||||
|
||||
void SCSI_SEL_ISR_SetPriority(uint8 priority);
|
||||
uint8 SCSI_SEL_ISR_GetPriority(void);
|
||||
|
||||
void SCSI_SEL_ISR_Enable(void);
|
||||
uint8 SCSI_SEL_ISR_GetState(void);
|
||||
void SCSI_SEL_ISR_Disable(void);
|
||||
|
||||
void SCSI_SEL_ISR_SetPending(void);
|
||||
void SCSI_SEL_ISR_ClearPending(void);
|
||||
|
||||
|
||||
/* Interrupt Controller Constants */
|
||||
|
||||
/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_SEL_ISR ISR. */
|
||||
#define SCSI_SEL_ISR_INTC_VECTOR ((reg32 *) SCSI_SEL_ISR__INTC_VECT)
|
||||
|
||||
/* Address of the SCSI_SEL_ISR ISR priority. */
|
||||
#define SCSI_SEL_ISR_INTC_PRIOR ((reg8 *) SCSI_SEL_ISR__INTC_PRIOR_REG)
|
||||
|
||||
/* Priority of the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_PRIOR_NUMBER SCSI_SEL_ISR__INTC_PRIOR_NUM
|
||||
|
||||
/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_SET_EN ((reg32 *) SCSI_SEL_ISR__INTC_SET_EN_REG)
|
||||
|
||||
/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_CLR_EN ((reg32 *) SCSI_SEL_ISR__INTC_CLR_EN_REG)
|
||||
|
||||
/* Address of the INTC.SET_PD[x] register to set the SCSI_SEL_ISR interrupt state to pending. */
|
||||
#define SCSI_SEL_ISR_INTC_SET_PD ((reg32 *) SCSI_SEL_ISR__INTC_SET_PD_REG)
|
||||
|
||||
/* Address of the INTC.CLR_PD[x] register to clear the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_CLR_PD ((reg32 *) SCSI_SEL_ISR__INTC_CLR_PD_REG)
|
||||
|
||||
|
||||
#endif /* CY_ISR_SCSI_SEL_ISR_H */
|
||||
|
||||
|
||||
/* [] END OF FILE */
|
@ -28,7 +28,7 @@ __attribute__ ((__section__(".cyloadablemeta"), used))
|
||||
const uint8 cy_meta_loadable[] = {
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x5Cu, 0xD1u, 0x24u, 0x04u,
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x5Cu, 0xD1u, 0x30u, 0x04u,
|
||||
0x01u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
|
||||
0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u,
|
||||
|
Binary file not shown.
@ -0,0 +1,356 @@
|
||||
/*******************************************************************************
|
||||
* File Name: SCSI_SEL_ISR.c
|
||||
* Version 1.70
|
||||
*
|
||||
* Description:
|
||||
* API for controlling the state of an interrupt.
|
||||
*
|
||||
*
|
||||
* Note:
|
||||
*
|
||||
********************************************************************************
|
||||
* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.
|
||||
* You may use this file only in accordance with the license, terms, conditions,
|
||||
* disclaimers, and limitations in the end user license agreement accompanying
|
||||
* the software package with which this file was provided.
|
||||
*******************************************************************************/
|
||||
|
||||
|
||||
#include <cydevice_trm.h>
|
||||
#include <CyLib.h>
|
||||
#include <SCSI_SEL_ISR.h>
|
||||
|
||||
#if !defined(SCSI_SEL_ISR__REMOVED) /* Check for removal by optimization */
|
||||
|
||||
/*******************************************************************************
|
||||
* Place your includes, defines and code here
|
||||
********************************************************************************/
|
||||
/* `#START SCSI_SEL_ISR_intc` */
|
||||
|
||||
/* `#END` */
|
||||
|
||||
#ifndef CYINT_IRQ_BASE
|
||||
#define CYINT_IRQ_BASE 16
|
||||
#endif /* CYINT_IRQ_BASE */
|
||||
#ifndef CYINT_VECT_TABLE
|
||||
#define CYINT_VECT_TABLE ((cyisraddress **) CYREG_NVIC_VECT_OFFSET)
|
||||
#endif /* CYINT_VECT_TABLE */
|
||||
|
||||
/* Declared in startup, used to set unused interrupts to. */
|
||||
CY_ISR_PROTO(IntDefaultHandler);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Start
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Set up the interrupt and enable it.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Start(void)
|
||||
{
|
||||
/* For all we know the interrupt is active. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
||||
SCSI_SEL_ISR_SetVector(&SCSI_SEL_ISR_Interrupt);
|
||||
|
||||
/* Set the priority. */
|
||||
SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
||||
|
||||
/* Enable it. */
|
||||
SCSI_SEL_ISR_Enable();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_StartEx
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Set up the interrupt and enable it.
|
||||
*
|
||||
* Parameters:
|
||||
* address: Address of the ISR to set in the interrupt vector table.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_StartEx(cyisraddress address)
|
||||
{
|
||||
/* For all we know the interrupt is active. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the SCSI_SEL_ISR Interrupt. */
|
||||
SCSI_SEL_ISR_SetVector(address);
|
||||
|
||||
/* Set the priority. */
|
||||
SCSI_SEL_ISR_SetPriority((uint8)SCSI_SEL_ISR_INTC_PRIOR_NUMBER);
|
||||
|
||||
/* Enable it. */
|
||||
SCSI_SEL_ISR_Enable();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Stop
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Disables and removes the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Stop(void)
|
||||
{
|
||||
/* Disable this interrupt. */
|
||||
SCSI_SEL_ISR_Disable();
|
||||
|
||||
/* Set the ISR to point to the passive one. */
|
||||
SCSI_SEL_ISR_SetVector(&IntDefaultHandler);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Interrupt
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* The default Interrupt Service Routine for SCSI_SEL_ISR.
|
||||
*
|
||||
* Add custom code between the coments to keep the next version of this file
|
||||
* from over writting your code.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
CY_ISR(SCSI_SEL_ISR_Interrupt)
|
||||
{
|
||||
/* Place your Interrupt code here. */
|
||||
/* `#START SCSI_SEL_ISR_Interrupt` */
|
||||
|
||||
/* `#END` */
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetVector
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Change the ISR vector for the Interrupt. Note calling SCSI_SEL_ISR_Start
|
||||
* will override any effect this method would have had. To set the vector
|
||||
* before the component has been started use SCSI_SEL_ISR_StartEx instead.
|
||||
*
|
||||
* Parameters:
|
||||
* address: Address of the ISR to set in the interrupt vector table.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetVector(cyisraddress address)
|
||||
{
|
||||
cyisraddress * ramVectorTable;
|
||||
|
||||
ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
||||
|
||||
ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER] = address;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetVector
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the "address" of the current ISR vector for the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* Address of the ISR in the interrupt vector table.
|
||||
*
|
||||
*******************************************************************************/
|
||||
cyisraddress SCSI_SEL_ISR_GetVector(void)
|
||||
{
|
||||
cyisraddress * ramVectorTable;
|
||||
|
||||
ramVectorTable = (cyisraddress *) *CYINT_VECT_TABLE;
|
||||
|
||||
return ramVectorTable[CYINT_IRQ_BASE + (uint32)SCSI_SEL_ISR__INTC_NUMBER];
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetPriority
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Sets the Priority of the Interrupt. Note calling SCSI_SEL_ISR_Start
|
||||
* or SCSI_SEL_ISR_StartEx will override any effect this method
|
||||
* would have had. This method should only be called after
|
||||
* SCSI_SEL_ISR_Start or SCSI_SEL_ISR_StartEx has been called. To set
|
||||
* the initial priority for the component use the cydwr file in the tool.
|
||||
*
|
||||
* Parameters:
|
||||
* priority: Priority of the interrupt. 0 - 7, 0 being the highest.
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetPriority(uint8 priority)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_PRIOR = priority << 5;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetPriority
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the Priority of the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* Priority of the interrupt. 0 - 7, 0 being the highest.
|
||||
*
|
||||
*******************************************************************************/
|
||||
uint8 SCSI_SEL_ISR_GetPriority(void)
|
||||
{
|
||||
uint8 priority;
|
||||
|
||||
|
||||
priority = *SCSI_SEL_ISR_INTC_PRIOR >> 5;
|
||||
|
||||
return priority;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Enable
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Enables the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Enable(void)
|
||||
{
|
||||
/* Enable the general interrupt. */
|
||||
*SCSI_SEL_ISR_INTC_SET_EN = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_GetState
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Gets the state (enabled, disabled) of the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* 1 if enabled, 0 if disabled.
|
||||
*
|
||||
*******************************************************************************/
|
||||
uint8 SCSI_SEL_ISR_GetState(void)
|
||||
{
|
||||
/* Get the state of the general interrupt. */
|
||||
return ((*SCSI_SEL_ISR_INTC_SET_EN & (uint32)SCSI_SEL_ISR__INTC_MASK) != 0u) ? 1u:0u;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_Disable
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Disables the Interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_Disable(void)
|
||||
{
|
||||
/* Disable the general interrupt. */
|
||||
*SCSI_SEL_ISR_INTC_CLR_EN = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_SetPending
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Causes the Interrupt to enter the pending state, a software method of
|
||||
* generating the interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_SetPending(void)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_SET_PD = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name: SCSI_SEL_ISR_ClearPending
|
||||
********************************************************************************
|
||||
*
|
||||
* Summary:
|
||||
* Clears a pending interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* None
|
||||
*
|
||||
* Return:
|
||||
* None
|
||||
*
|
||||
*******************************************************************************/
|
||||
void SCSI_SEL_ISR_ClearPending(void)
|
||||
{
|
||||
*SCSI_SEL_ISR_INTC_CLR_PD = SCSI_SEL_ISR__INTC_MASK;
|
||||
}
|
||||
|
||||
#endif /* End check for removal by optimization */
|
||||
|
||||
|
||||
/* [] END OF FILE */
|
@ -0,0 +1,70 @@
|
||||
/*******************************************************************************
|
||||
* File Name: SCSI_SEL_ISR.h
|
||||
* Version 1.70
|
||||
*
|
||||
* Description:
|
||||
* Provides the function definitions for the Interrupt Controller.
|
||||
*
|
||||
*
|
||||
********************************************************************************
|
||||
* Copyright 2008-2012, Cypress Semiconductor Corporation. All rights reserved.
|
||||
* You may use this file only in accordance with the license, terms, conditions,
|
||||
* disclaimers, and limitations in the end user license agreement accompanying
|
||||
* the software package with which this file was provided.
|
||||
*******************************************************************************/
|
||||
#if !defined(CY_ISR_SCSI_SEL_ISR_H)
|
||||
#define CY_ISR_SCSI_SEL_ISR_H
|
||||
|
||||
|
||||
#include <cytypes.h>
|
||||
#include <cyfitter.h>
|
||||
|
||||
/* Interrupt Controller API. */
|
||||
void SCSI_SEL_ISR_Start(void);
|
||||
void SCSI_SEL_ISR_StartEx(cyisraddress address);
|
||||
void SCSI_SEL_ISR_Stop(void);
|
||||
|
||||
CY_ISR_PROTO(SCSI_SEL_ISR_Interrupt);
|
||||
|
||||
void SCSI_SEL_ISR_SetVector(cyisraddress address);
|
||||
cyisraddress SCSI_SEL_ISR_GetVector(void);
|
||||
|
||||
void SCSI_SEL_ISR_SetPriority(uint8 priority);
|
||||
uint8 SCSI_SEL_ISR_GetPriority(void);
|
||||
|
||||
void SCSI_SEL_ISR_Enable(void);
|
||||
uint8 SCSI_SEL_ISR_GetState(void);
|
||||
void SCSI_SEL_ISR_Disable(void);
|
||||
|
||||
void SCSI_SEL_ISR_SetPending(void);
|
||||
void SCSI_SEL_ISR_ClearPending(void);
|
||||
|
||||
|
||||
/* Interrupt Controller Constants */
|
||||
|
||||
/* Address of the INTC.VECT[x] register that contains the Address of the SCSI_SEL_ISR ISR. */
|
||||
#define SCSI_SEL_ISR_INTC_VECTOR ((reg32 *) SCSI_SEL_ISR__INTC_VECT)
|
||||
|
||||
/* Address of the SCSI_SEL_ISR ISR priority. */
|
||||
#define SCSI_SEL_ISR_INTC_PRIOR ((reg8 *) SCSI_SEL_ISR__INTC_PRIOR_REG)
|
||||
|
||||
/* Priority of the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_PRIOR_NUMBER SCSI_SEL_ISR__INTC_PRIOR_NUM
|
||||
|
||||
/* Address of the INTC.SET_EN[x] byte to bit enable SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_SET_EN ((reg32 *) SCSI_SEL_ISR__INTC_SET_EN_REG)
|
||||
|
||||
/* Address of the INTC.CLR_EN[x] register to bit clear the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_CLR_EN ((reg32 *) SCSI_SEL_ISR__INTC_CLR_EN_REG)
|
||||
|
||||
/* Address of the INTC.SET_PD[x] register to set the SCSI_SEL_ISR interrupt state to pending. */
|
||||
#define SCSI_SEL_ISR_INTC_SET_PD ((reg32 *) SCSI_SEL_ISR__INTC_SET_PD_REG)
|
||||
|
||||
/* Address of the INTC.CLR_PD[x] register to clear the SCSI_SEL_ISR interrupt. */
|
||||
#define SCSI_SEL_ISR_INTC_CLR_PD ((reg32 *) SCSI_SEL_ISR__INTC_CLR_PD_REG)
|
||||
|
||||
|
||||
#endif /* CY_ISR_SCSI_SEL_ISR_H */
|
||||
|
||||
|
||||
/* [] END OF FILE */
|
@ -227,7 +227,7 @@ ConfigUtil::toXML(const TargetConfig& config)
|
||||
" <vendor>" << std::string(config.vendor, 8) << "</vendor>\n" <<
|
||||
"\n" <<
|
||||
" <!-- 16 character produce identifier -->\n" <<
|
||||
" <!-- For Apple HD SC Setup/Drive Setup, use ' ST225N' -->\n" <<
|
||||
" <!-- For Apple HD SC Setup/Drive Setup, use ' ST225N' -->\n" <<
|
||||
" <prodId>" << std::string(config.prodId, 16) << "</prodId>\n" <<
|
||||
"\n" <<
|
||||
" <!-- 4 character product revision number -->\n" <<
|
||||
|
@ -3,7 +3,7 @@ VPATH=cybootloaderutils ../SCSI2SD/src
|
||||
CPPFLAGS = -I cybootloaderutils -I hidapi/hidapi -I ../include -Ilibzipper-1.0.4 -I$(BUILD)/zlib
|
||||
CFLAGS += -Wall -Wno-pointer-sign -O2 -g
|
||||
CXXFLAGS += -Wall -O2 -g -std=c++0x
|
||||
LDFLAGS += -L$(BUILD)/libzipper/.libs -lzipper -L$(BUILD)/zlib -lz -lexpat
|
||||
LDFLAGS += -L$(BUILD)/libzipper/.libs -lzipper -L$(BUILD)/zlib -lz
|
||||
|
||||
LIBZIPPER_CONFIG = --disable-shared LDFLAGS="-L../zlib" CPPFLAGS="-I../zlib"
|
||||
|
||||
@ -36,13 +36,13 @@ ifeq ($(TARGET),Win64)
|
||||
endif
|
||||
ifeq ($(TARGET),Linux)
|
||||
VPATH += hidapi/linux
|
||||
LDFLAGS += -ludev
|
||||
LDFLAGS += -ludev -lexpat
|
||||
BUILD = build/linux
|
||||
endif
|
||||
ifeq ($(TARGET),Darwin)
|
||||
# Should match OSX
|
||||
VPATH += hidapi-mac
|
||||
LDFLAGS += -framework IOKit -framework CoreFoundation
|
||||
LDFLAGS += -framework IOKit -framework CoreFoundation -lexpat
|
||||
CC=clang -mmacosx-version-min=10.7
|
||||
CXX=clang++ -stdlib=libc++ -mmacosx-version-min=10.7
|
||||
WX_CONFIG += --with-macosx-version-min=10.7
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <wx/wx.h>
|
||||
#endif
|
||||
|
||||
#include <wx/app.h>
|
||||
#include <wx/filedlg.h>
|
||||
#include <wx/filefn.h>
|
||||
#include <wx/filename.h>
|
||||
@ -985,10 +986,9 @@ private:
|
||||
}
|
||||
|
||||
// Note: Don't confuse this with the wxApp::OnExit virtual method
|
||||
void OnExitEvt(wxCommandEvent& event)
|
||||
{
|
||||
Close(true);
|
||||
}
|
||||
void OnExitEvt(wxCommandEvent& event);
|
||||
|
||||
void OnCloseEvt(wxCloseEvent& event);
|
||||
|
||||
void OnAbout(wxCommandEvent& event)
|
||||
{
|
||||
@ -1031,6 +1031,7 @@ wxBEGIN_EVENT_TABLE(AppFrame, wxFrame)
|
||||
EVT_BUTTON(ID_BtnSave, AppFrame::doSave)
|
||||
EVT_BUTTON(ID_BtnLoad, AppFrame::doLoad)
|
||||
|
||||
EVT_CLOSE(AppFrame::OnCloseEvt)
|
||||
|
||||
wxEND_EVENT_TABLE()
|
||||
|
||||
@ -1052,4 +1053,15 @@ public:
|
||||
// Main Method
|
||||
wxIMPLEMENT_APP(App);
|
||||
|
||||
void
|
||||
AppFrame::OnExitEvt(wxCommandEvent& event)
|
||||
{
|
||||
wxGetApp().ExitMainLoop();
|
||||
}
|
||||
|
||||
void
|
||||
AppFrame::OnCloseEvt(wxCloseEvent& event)
|
||||
{
|
||||
wxGetApp().ExitMainLoop();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user