Skip to content

Commit 4cf8dfc

Browse files
authored
Update driver validation (#26)
- improved ETH driver validation - removed support for ARM compiler 5 - changed timeout macro to milliseconds - removed XML report type
1 parent 9b9331e commit 4cf8dfc

8 files changed

Lines changed: 170 additions & 235 deletions

File tree

ARM.CMSIS-Driver_Validation.pdsc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@
253253
</RTE_Components_h>
254254
<files>
255255
<file category="doc" name="Documentation/html/group__dv__can.html" />
256-
<file category="header" name="Config/DV_CAN_Config.h" attr="config" version = "1.0.0"/>
256+
<file category="header" name="Config/DV_CAN_Config.h" attr="config" version = "1.1.0"/>
257257
<file category="source" name="Source/DV_CAN.c"/>
258258
</files>
259259
</component>

Config/DV_CAN_Config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015-2020 Arm Limited. All rights reserved.
2+
* Copyright (c) 2015-2025 Arm Limited. All rights reserved.
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -17,7 +17,7 @@
1717
*
1818
* -----------------------------------------------------------------------------
1919
*
20-
* $Revision: V1.0.0
20+
* $Revision: V1.1.0
2121
*
2222
* Project: CMSIS-Driver Validation
2323
* Title: Controller Area Network (CAN) driver validation
@@ -60,8 +60,8 @@
6060
// <i> Set the minimum margin between measured and expected bitrates (%)
6161
#define MIN_BITRATE 10
6262
// <o> Transfer timeout
63-
// <i> Set the transfer timeout (us)
64-
#define CAN_TRANSFER_TIMEOUT 1000000
63+
// <i> Set the transfer timeout (ms)
64+
#define CAN_TRANSFER_TIMEOUT 1000
6565
// <h> Tests
6666
// <i> Enable / disable tests.
6767
// <q> CAN_GetCapabilities

Include/cmsis_dv.h

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,14 @@
3232
#include "RTE_Components.h" // Component selection
3333
#endif
3434

35-
#if defined(RTE_CMSIS_RTOS)
36-
#include "cmsis_os.h"
37-
#define GET_SYSTICK() osKernelSysTick()
38-
#define SYSTICK_MICROSEC(microsec) (((uint64_t)microsec * (osKernelSysTickFrequency)) / 1000000)
39-
40-
#elif defined(RTE_CMSIS_RTOS2)
4135
#include "cmsis_os2.h"
42-
#define GET_SYSTICK() osKernelGetSysTimerCount()
43-
#define SYSTICK_MICROSEC(microsec) (((uint64_t)microsec * osKernelGetSysTimerFreq()) / 1000000)
44-
#endif
36+
37+
#define GET_SYSTICK() osKernelGetTickCount()
38+
#define SYSTICK_MS(ms) (((uint32_t)ms * osKernelGetTickFreq()) / 1000U)
39+
40+
#define GET_SYSTIMER() osKernelGetSysTimerCount()
41+
#define SYSTIMER_US(us) (((uint64_t)us * osKernelGetSysTimerFreq()) / 1000000)
42+
4543
#include "cmsis_compiler.h"
4644

4745
/* Expansion macro used to create CMSIS Driver references */

Source/DV_CAN.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015-2020 Arm Limited. All rights reserved.
2+
* Copyright (c) 2015-2025 Arm Limited. All rights reserved.
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -128,7 +128,7 @@ int8_t CAN_RunTransfer (uint32_t tx_obj_idx, ARM_CAN_MSG_INFO *tx_msg_info, cons
128128
return 0;
129129
}
130130
}
131-
while ((GET_SYSTICK() - tick) < SYSTICK_MICROSEC(CAN_TRANSFER_TIMEOUT));
131+
while ((GET_SYSTICK() - tick) < SYSTICK_MS(CAN_TRANSFER_TIMEOUT));
132132
return -1;
133133
}
134134

@@ -386,10 +386,10 @@ void CAN_Loopback_CheckBitrate (void) {
386386
tx_data_msg_info.id = ARM_CAN_EXTENDED_ID(0x15555555U);
387387

388388
/* Measure transfer time */
389-
ticks_measured = GET_SYSTICK();
389+
ticks_measured = GET_SYSTIMER();
390390
CAN_RunTransfer (tx_obj_idx, &tx_data_msg_info, buffer_out, rx_obj_idx, &rx_data_msg_info, buffer_in, CAN_MSG_SIZE);
391-
ticks_measured = GET_SYSTICK() - ticks_measured;
392-
ticks_expected = SYSTICK_MICROSEC((((CAN_MSG_SIZE * 8U) + CAN_EXT_FRAME_BITS) * 1000) / CAN_BR[bitrate]);
391+
ticks_measured = GET_SYSTIMER() - ticks_measured;
392+
ticks_expected = SYSTIMER_US((((CAN_MSG_SIZE * 8U) + CAN_EXT_FRAME_BITS) * 1000) / CAN_BR[bitrate]);
393393

394394
rate = (double)ticks_measured/ticks_expected;
395395

@@ -581,11 +581,11 @@ void CAN_Loopback_CheckBitrateFD (void) {
581581
tx_data_msg_info.id = ARM_CAN_EXTENDED_ID(0x15555555U);
582582

583583
/* Measure transfer time */
584-
ticks_measured = GET_SYSTICK();
584+
ticks_measured = GET_SYSTIMER();
585585
CAN_RunTransfer (tx_obj_idx, &tx_data_msg_info, buffer_out, rx_obj_idx, &rx_data_msg_info, buffer_in, CAN_MSG_SIZE_FD);
586-
ticks_measured = GET_SYSTICK() - ticks_measured;
587-
ticks_expected = SYSTICK_MICROSEC((((((CAN_MSG_SIZE_FD * 8U) + CAN_EXT_FRAME_BITS_FD_DATA) * 1000) / (CAN_BR[bitrate] * CAN_DATA_ARB_RATIO)) +
588-
(((CAN_EXT_FRAME_BITS_NOMINAL) * 1000) / CAN_BR[bitrate] ) ));
586+
ticks_measured = GET_SYSTIMER() - ticks_measured;
587+
ticks_expected = SYSTIMER_US((((((CAN_MSG_SIZE_FD * 8U) + CAN_EXT_FRAME_BITS_FD_DATA) * 1000) / (CAN_BR[bitrate] * CAN_DATA_ARB_RATIO)) +
588+
(((CAN_EXT_FRAME_BITS_NOMINAL) * 1000) / CAN_BR[bitrate] ) ));
589589

590590
rate = (double)ticks_measured/ticks_expected;
591591

@@ -667,7 +667,7 @@ void CAN_Loopback_Transfer (void) {
667667
}
668668

669669
/* Set output buffer with random data */
670-
srand(GET_SYSTICK());
670+
srand(GET_SYSTIMER());
671671
for (cnt = 0; cnt<CAN_MSG_SIZE; cnt++) {
672672
buffer_out[cnt] = rand()%0x100U;
673673
}
@@ -865,7 +865,7 @@ void CAN_Loopback_TransferFD (void) {
865865
}
866866

867867
/* Set output buffer with random data */
868-
srand(GET_SYSTICK());
868+
srand(GET_SYSTIMER());
869869
for (cnt = 0; cnt<CAN_MSG_SIZE_FD; cnt++) {
870870
buffer_out[cnt] = rand()%0x100;
871871
}

0 commit comments

Comments
 (0)