cmsis_cv.c 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. /*-----------------------------------------------------------------------------
  2. * Name: cmsis_cv.c
  3. * Purpose: Driver validation test cases entry point
  4. *----------------------------------------------------------------------------
  5. * Copyright (c) 2017 ARM Limited. All rights reserved.
  6. *----------------------------------------------------------------------------*/
  7. #include "cmsis_cv.h"
  8. #include "RTE_Components.h"
  9. #include "CV_Framework.h"
  10. #include "CV_Config.h"
  11. /*-----------------------------------------------------------------------------
  12. * Prototypes
  13. *----------------------------------------------------------------------------*/
  14. void WDT_IRQHandler(void);
  15. /*-----------------------------------------------------------------------------
  16. * Variables declarations
  17. *----------------------------------------------------------------------------*/
  18. void (*TST_IRQHandler)(void);
  19. void WDT_IRQHandler(void) {
  20. if (TST_IRQHandler != NULL) TST_IRQHandler();
  21. }
  22. /*-----------------------------------------------------------------------------
  23. * Init test suite
  24. *----------------------------------------------------------------------------*/
  25. static void TS_Init (void) {
  26. TST_IRQHandler = NULL;
  27. #ifdef RTE_CV_MEASURETICKS
  28. StartCortexCycleCounter();
  29. #endif
  30. }
  31. /*-----------------------------------------------------------------------------
  32. * Test cases list
  33. *----------------------------------------------------------------------------*/
  34. static TEST_CASE TC_LIST[] = {
  35. #ifdef RTE_CV_COREINSTR
  36. TCD ( TC_CoreInstr_NOP, TC_COREINSTR_NOP_EN ),
  37. TCD ( TC_CoreInstr_REV, TC_COREINSTR_REV_EN ),
  38. TCD ( TC_CoreInstr_REV16, TC_COREINSTR_REV16_EN ),
  39. TCD ( TC_CoreInstr_REVSH, TC_COREINSTR_REVSH_EN ),
  40. TCD ( TC_CoreInstr_ROR, TC_COREINSTR_ROR_EN ),
  41. TCD ( TC_CoreInstr_RBIT, TC_COREINSTR_RBIT_EN ),
  42. TCD ( TC_CoreInstr_CLZ, TC_COREINSTR_CLZ_EN ),
  43. TCD ( TC_CoreInstr_SSAT, TC_COREINSTR_SSAT_EN ),
  44. TCD ( TC_CoreInstr_USAT, TC_COREINSTR_USAT_EN ),
  45. #endif
  46. #ifdef RTE_CV_COREFUNC
  47. #if defined(__CORTEX_M)
  48. TCD ( TC_CoreFunc_EnDisIRQ, TC_COREFUNC_ENDISIRQ_EN ),
  49. TCD ( TC_CoreFunc_Control, TC_COREFUNC_CONTROL_EN ),
  50. TCD ( TC_CoreFunc_IPSR, TC_COREFUNC_IPSR_EN ),
  51. TCD ( TC_CoreFunc_APSR, TC_COREFUNC_APSR_EN ),
  52. TCD ( TC_CoreFunc_PSP, TC_COREFUNC_PSP_EN ),
  53. TCD ( TC_CoreFunc_MSP, TC_COREFUNC_MSP_EN ),
  54. #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
  55. (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
  56. TCD ( TC_CoreFunc_PSPLIM, TC_COREFUNC_PSPLIM_EN ),
  57. TCD ( TC_CoreFunc_PSPLIM_NS, TC_COREFUNC_PSPLIM_NS_EN ),
  58. TCD ( TC_CoreFunc_MSPLIM, TC_COREFUNC_MSPLIM_EN ),
  59. TCD ( TC_CoreFunc_MSPLIM_NS, TC_COREFUNC_MSPLIM_NS_EN ),
  60. #endif
  61. TCD ( TC_CoreFunc_PRIMASK, TC_COREFUNC_PRIMASK_EN ),
  62. #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
  63. (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
  64. (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
  65. TCD ( TC_CoreFunc_FAULTMASK, TC_COREFUNC_FAULTMASK_EN ),
  66. TCD ( TC_CoreFunc_BASEPRI, TC_COREFUNC_BASEPRI_EN ),
  67. #endif
  68. #if ((defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
  69. (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
  70. TCD ( TC_CoreFunc_FPSCR, TC_COREFUNC_FPSCR_EN ),
  71. #endif
  72. #elif defined(__CORTEX_A)
  73. TCD ( TC_CoreAFunc_IRQ, TC_COREAFUNC_IRQ ),
  74. TCD ( TC_CoreAFunc_FPSCR, TC_COREAFUNC_FPSCR ),
  75. TCD ( TC_CoreAFunc_CPSR, TC_COREAFUNC_CPSR ),
  76. TCD ( TC_CoreAFunc_Mode, TC_COREAFUNC_MODE ),
  77. TCD ( TC_CoreAFunc_SP, TC_COREAFUNC_SP ),
  78. TCD ( TC_CoreAFunc_SP_usr, TC_COREAFUNC_SP_USR ),
  79. TCD ( TC_CoreAFunc_FPEXC, TC_COREAFUNC_FPEXC ),
  80. TCD ( TC_CoreAFunc_ACTLR, TC_COREAFUNC_ACTLR ),
  81. TCD ( TC_CoreAFunc_CPACR, TC_COREAFUNC_CPACR ),
  82. TCD ( TC_CoreAFunc_DFSR, TC_COREAFUNC_DFSR ),
  83. TCD ( TC_CoreAFunc_IFSR, TC_COREAFUNC_IFSR ),
  84. TCD ( TC_CoreAFunc_ISR, TC_COREAFUNC_ISR ),
  85. TCD ( TC_CoreAFunc_CBAR, TC_COREAFUNC_CBAR ),
  86. TCD ( TC_CoreAFunc_TTBR0, TC_COREAFUNC_TTBR0 ),
  87. TCD ( TC_CoreAFunc_DACR, TC_COREAFUNC_DACR ),
  88. TCD ( TC_CoreAFunc_SCTLR, TC_COREAFUNC_SCTLR ),
  89. TCD ( TC_CoreAFunc_ACTRL, TC_COREAFUNC_ACTRL ),
  90. TCD ( TC_CoreAFunc_MPIDR, TC_COREAFUNC_MPIDR ),
  91. TCD ( TC_CoreAFunc_VBAR, TC_COREAFUNC_VBAR ),
  92. TCD ( TC_CoreAFunc_MVBAR, TC_COREAFUNC_MVBAR ),
  93. #endif
  94. #endif
  95. #ifdef RTE_CV_MPUFUNC
  96. TCD ( TC_MPU_SetClear, TC_MPU_SETCLEAR_EN ),
  97. TCD ( TC_MPU_Load, TC_MPU_LOAD_EN ),
  98. #endif
  99. #ifdef RTE_CV_GENTIMER
  100. TCD ( TC_GenTimer_CNTFRQ, TC_GENTIMER_CNTFRQ ),
  101. TCD ( TC_GenTimer_CNTP_TVAL, TC_GENTIMER_CNTP_TVAL ),
  102. TCD ( TC_GenTimer_CNTP_CTL, TC_GENTIMER_CNTP_CTL ),
  103. TCD ( TC_GenTimer_CNTPCT, TC_GENTIMER_CNTPCT ),
  104. TCD ( TC_GenTimer_CNTP_CVAL, TC_GENTIMER_CNTP_CVAL ),
  105. #endif
  106. #ifdef RTE_CV_L1CACHE
  107. TCD ( TC_L1Cache_EnDisable, TC_L1CACHE_ENDISABLE ),
  108. TCD ( TC_L1Cache_EnDisableBTAC, TC_L1CACHE_ENDISABLEBTAC ),
  109. TCD ( TC_L1Cache_log2_up, TC_L1CACHE_LOG2_UP ),
  110. TCD ( TC_L1Cache_InvalidateDCacheAll, TC_L1CACHE_INVALIDATEDCACHEALL ),
  111. TCD ( TC_L1Cache_CleanDCacheAll, TC_L1CACHE_CLEANDCACHEALL ),
  112. TCD ( TC_L1Cache_CleanInvalidateDCacheAll, TC_L1CACHE_CLEANINVALIDATEDCACHEALL ),
  113. #endif
  114. };
  115. #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  116. #pragma clang diagnostic push
  117. #pragma clang diagnostic ignored "-Wdate-time"
  118. #endif
  119. /*-----------------------------------------------------------------------------
  120. * Test suite description
  121. *----------------------------------------------------------------------------*/
  122. TEST_SUITE ts = {
  123. __FILE__, __DATE__, __TIME__,
  124. "CMSIS-CORE Test Suite",
  125. TS_Init,
  126. 1,
  127. TC_LIST,
  128. ARRAY_SIZE (TC_LIST),
  129. };
  130. #if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
  131. #pragma clang diagnostic pop
  132. #endif