📄 csl_memprot.h
字号:
status = CSL_memprotClose(hMem);
@endverbatim
* ============================================================================
*/
CSL_Status CSL_memprotClose(
/** Pointer to the object that holds reference to the
* instance of memory protection unit requested after the call
*/
CSL_MemprotHandle hMemprot
);
/** This function is a dummy in this Module CSL
*
*/
CSL_Status CSL_memprotHwSetupRaw(
/** Pointer to the object that holds reference to the
* instance of memory protection module.
*/
CSL_MemprotHandle hMemprot,
/** Pointer to setup structure which contains the
* information to program the memory protection registers to a required state.
*/
CSL_MemprotConfig *config
);
/** ============================================================================
* @n@b CSL_memprotHwSetup
*
* @b Description
* @n This function initializes the module registers with the appropriate
* values provided through the HwSetup Data structure.
* For information passed through the HwSetup Data structure refer
* @a CSL_memprotHwSetup.
*
* @b Arguments
* @verbatim
hMemprot Handle to the ATA instance
setup Pointer to harware setup structure
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Hardware setup successful.
* @li CSL_ESYS_BADHANDLE - Invalid handle
* @li CSL_ESYS_INVPARAMS - Hardware structure is not
properly initialized
*
* <b> Pre Condition </b>
* Both @a CSL_memprotInit() and @a CSL_memprotOpen() must be called
* successfully in that order before this function can be called. The user
* has to allocate space for & fill in the main setup structure appropriately
* before calling this function. Ensure numpages is not set to > 32 for handles
* for L1D/L1P. Ensure numpages is not > 64 for L2.
*
* <b> Post Condition </b>
* @n 1. MEMPROT object structure is populated
* @n 2. The status is returned in the status variable. If status
* returned is
* @li CSL_SOK Valid ata handle is returned
* @li CSL_ESYS_FAIL The ata instance is invalid
* @li CSL_ESYS_INVPARAMS Invalid parameter
*
*
* @b Modifies
* @n The hardware registers of ATA.
*
* @b Example
* @verbatim
CSL_MemprotObj mpL2Obj;
CSL_MemprotHandle hmpL2;
CSL_Status status;
CSL_MemprotHwSetup L2MpSetup;
Uint16 pageAttrTable[10] = {PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,
PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR};
Uint32 key[2] = {0x11223344,0x55667788};
// Initializing the module
CSL_memprotInit(NULL);
// Opening the Handle for the L2
hmpL2 = CSL_memprotOpen(&mpL2Obj,CSL_MEMPROT_L2,NULL,&status);
L2MpSetup. memPageAttr = pageAttrTable;
L2MpSetup.numPages = 10;
L2MpSetup.key = key;
// Do Setup for the L2 Memory protection/
CSL_memprotHwSetup (hmpL2,&L2MpSetup);
* @endverbatim
* =============================================================================
*/
CSL_Status CSL_memprotHwSetup(
/** Pointer to the object that holds reference to the
* instance of memory protection registers requested after the call
*/
CSL_MemprotHandle hMemprot,
/** Pointer to setup structure which contains the
* information to program Memory protection registers to a useful state
*/
CSL_MemprotHwSetup *setup
);
/** ============================================================================
* @n@b CSL_memprotGetHwSetup
*
* @b Description
* @n This function gets the current setup of the Memory Protection registers.
* The status is returned through @a CSL_MemprotHwSetup. The obtaining of
* status is the reverse operation of @a CSL_MemprotHwSetup() function.
* Only the Memory Page attributes are read and filled into the HwSetup
* structure
*
* @b Arguments
* @verbatim
hMemprot Handle to the MEMPROT instance
setup Pointer to setup structure which contains the
setup information of MEMPROT.
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Setup info load successful.
* @li CSL_ESYS_BADHANDLE - Invalid handle
* @li CSL_ESYS_INVPARAMS - Invalid parameter
*
* <b> Usage Constraints: </b>
* Both @a CSL_memprotInit(), @a CSL_memprotOpen() and @a CSL_memprotHwSetup()
* must be called successfully in that order before @a CSL_memprotGetHwSetup()
* can be called. Ensure numpages is initialized depending on the number of
* desired attributes in the setup.Make sure to set numpages <= 32 for handles
* for L1D/L1P. Ensure numpages <= 64 for L2.
*
* <b> Post Condition </b>
* @n The registers of the specified MEMPROT instance will be setup.
*
* @b Modifies
* @n Hardware registers of the specified MEMPROT instance.
*
* @b Example
* @verbatim
CSL_MemprotObj mpL2Obj;
CSL_MemprotHandle hmpL2;
CSL_Status status;
CSL_MemprotHwSetup L2MpSetup,L2MpGetSetup;
Uint16 pageAttrTable[10] = {PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,
PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR};
Uint32 key[2] = {0x11223344,0x55667788};
// Initializing the module
CSL_memprotInit(NULL);
// Opening the Handle for the L2
hmpL2 = CSL_memprotOpen(&mpL2Obj,CSL_MEMPROT_L2,NULL,&status);
L2MpSetup. memPageAttr = pageAttrTable;
L2MpSetup.numPages = 10;
L2MpSetup.key = key;
// Do Setup for the L2 Memory protection/
CSL_memprotHwSetup (hmpL2,&L2MpSetup);
CSL_memprotGetHwSetup(hmpL2,&L2MpGetSetup);
@endverbatim
* =============================================================================
*/
CSL_Status CSL_memprotGetHwSetup(
/** Pointer to the object that holds reference to the
* instance of memory protection unit requested after the call
*/
CSL_MemprotHandle hMemprot,
/** Pointer to setup structure which is filled by the API with the setup
* values
*/
CSL_MemprotHwSetup *setup
);
/** ===========================================================================
* @n@b CSL_memprotHwControl
*
* @b Description
* @n Control operations for the Memory protection registers.
* For a particular control operation, the pointer to the corresponding
* data type needs to be passed as argument HwControl function Call.
* All the arguments (Structure elements included) passed to the
* HwControl function are inputs. For the list of commands supported and
* argument type that can be @a void* casted & passed with a particular
* command refer to @a CSL_MemprotHwControlCmd.
*
* @b Arguments
* @verbatim
hMemprot Handle to the MEMPROT instance
cmd The command to this API indicates the action to be
taken on MEMPROT.
arg An optional argument.
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Status info return successful.
* @li CSL_ESYS_BADHANDLE - Invalid handle
* @li CSL_ESYS_INVCMD - Invalid command
* @li CSL_ESYS_FAIL - Invalid instance number
*
* <b> Pre Condition </b>
* @n Both @a CSL_memprotInit() and @a CSL_memprotOpen() must be called
* successfully in that order before @a CSL_memprotHwControl() can be
* called. For the argument type that can be @a void* casted & passed
* with a particular command refer to @a CSL_MemprotHwControlCmd
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n The hardware registers of MEMPROT.
*
* @b Example
* @verbatim
Uint16 pageAttrTable[10] = {PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,
PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR};
Uint32 key[2] = {0x11223344,0x55667788};
CSL_MemprotObj mpL2Obj;
CSL_MemprotHandle hmpL2;
CSL_Status status;
CSL_MemprotHwSetup L2MpSetup,L2MpGetSetup;
CSL_MemprotLockStatus lockStat;
CSL_MemprotPageAttr pageAttr;
CSL_MemprotFaultStatus queryFaultStatus;
// Initializing the module
CSL_memprotInit(NULL);
// Opening the Handle for the L2
hmpL2 = CSL_memprotOpen(&mpL2Obj,CSL_MEMPROT_L2,NULL,&status);
L2MpSetup. memPageAttr = pageAttrTable;
L2MpSetup.numPages = 10;
L2MpSetup.key = key;
// Do Setup for the L2 Memory protection/
CSL_memprotHwSetup (hmpL2,&L2MpSetup);
// Query Lock Status
CSL_memprotGetHwStatus(hmpL2,CSL_MEMPROT_QUERY_LOCKSTAT,&lockStat);
// Unlock the Unit if Locked
if ((lockStat == CSL_MEMPROT_LOCKSTAT_SUNLOCK)
|| (lockStat == CSL_MEMPROT_LOCKSTAT_NSUNLOCK)) {
CSL_memprotHwControl(hmpL2,CSL_MEMPROT_CMD_UNLOCK,key);
}
@endverbatim
* ============================================================================
*/
CSL_Status CSL_memprotHwControl(
/** Pointer to the object that holds reference to the
* instance of Memory protection module requested after the call
*/
CSL_MemprotHandle hMemprot,
/** The command to this API indicates the action to be taken
*/
CSL_MemprotHwControlCmd cmd,
/** An optional argument @a void* casted
*/
void *arg
);
/** ===========================================================================
* @n@b CSL_memprotGetHwStatus
*
* @b Description
* @n This function is used to read the current module configuration, status
* flags and the value present associated registers. User should allocate
* memory for the said data type and pass its pointer as an unadorned
* void* argument to the status query call. For details about the various
* status queries supported and the associated data structure to record
* the response refer to @a CSL_MemprotHwStatusQuery
*
* @b Arguments
* @verbatim
hMemprot Handle to the MEMPROT instance
query The query to this API of MEMPROT which indicates
the status to be returned.
response Placeholder to return the status.
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_SOK - Status info return successful.
* @li CSL_ESYS_BADHANDLE - Invalid handle
* @li CSL_ESYS_INVPARAMS - Invalid parameter
*
* <b> Usage Constraints: </b>
* Both @a CSL_memprotInit() and @a CSL_memprotOpen() must be called
* successfully in that order before @a CSL_memprotGetHwStatus() can be
* called. For the argument type that can be @a void* casted & passed
* with a particular command refer to @a CSL_MemprotHwStatusQuery
*
* <b> Post Condition </b>
* @n None
*
* @b Modifies
* @n None
*
* @b Example
* @verbatim
Uint16 pageAttrTable[10] = {PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,
PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR,PAGE_ATTR};
Uint32 key[2] = {0x11223344,0x55667788};
CSL_MemprotObj mpL2Obj;
CSL_MemprotHandle hmpL2;
CSL_Status status;
CSL_MemprotHwSetup L2MpSetup,L2MpGetSetup;
CSL_MemprotLockStatus lockStat;
CSL_MemprotPageAttr pageAttr;
CSL_MemprotFaultStatus queryFaultStatus;
// Initializing the module
CSL_memprotInit(NULL);
// Opening the Handle for the L2
hmpL2 = CSL_memprotOpen(&mpL2Obj,CSL_MEMPROT_L2,NULL,&status);
L2MpSetup. memPageAttr = pageAttrTable;
L2MpSetup.numPages = 10;
L2MpSetup.key = key;
// Do Setup for the L2 Memory protection/
CSL_memprotHwSetup (hmpL2,&L2MpSetup);
// Query Lock Status
CSL_memprotGetHwStatus(hmpL2,CSL_MEMPROT_QUERY_LOCKSTAT,&lockStat);
@endverbatim
* ============================================================================
*/
CSL_Status CSL_memprotGetHwStatus(
/** Pointer to the object that holds reference to the
* instance of memory protection unit requested after the call
*/
CSL_MemprotHandle hMemprot,
/** The query to this API which indicates the status
* to be returned
*/
CSL_MemprotHwStatusQuery query,
/** Placeholder to return the status. @a void* casted */
void *response
);
/** ============================================================================
* @n@b CSL_memprotGetBaseAddress
*
* @b Description
* @n Function to get the base address of the peripheral instance.
* This function is used for getting the base address of the peripheral
* instance. This function will be called inside the CSL_memprotOpen()
* function call. This function is open for re-implementing if the user
* wants to modify the base address of the peripheral object to point to
* a different location and there by allow CSL initiated write/reads into
* peripheral. MMR's go to an alternate location.
*
* @b Arguments
* @verbatim
memprotNum Specifies the instance of the memprot to be opened.
pMemprotParam Module specific parameters.
pBaseAddress Pointer to base address structure containing base
address details.
@endverbatim
*
* <b> Return Value </b> CSL_Status
* @li CSL_OK Open call is successful
* @li CSL_ESYS_FAIL The instance number is invalid.
* @li CSL_ESYS_INVPARAMS Invalid parameter
*
* <b> Pre Condition </b>
* @n None
*
* <b> Post Condition </b>
* @n Base address structure is populated
*
* @b Modifies
* @n 1. The status variable
*
* 2. Base address structure is modified.
*
* @b Example
* @verbatim
CSL_Status status;
CSL_MemprotBaseAddress baseAddress;
...
status = CSL_memprotGetBaseAddress(CSL_MEMPROT_L2, NULL, &baseAddress);
@endverbatim
* ===========================================================================
*/
CSL_Status CSL_memprotGetBaseAddress(
/** Instance number
*/
CSL_InstNum memprotNum,
/** Module specific parameters
*/
CSL_MemprotParam * pMemprotParam,
/** Base address details
*/
CSL_MemprotBaseAddress * pBaseAddress
);
/**
@}
*/
#ifdef __cplusplus
}
#endif
#endif /* _CSL_MEMPROT_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -