Files
Tool/IPL/Customer/Mobis/Gen4_ICUMX_Loader/include/scmt_config.h
2025-12-24 17:21:08 +09:00

81 lines
3.2 KiB
C

#ifndef SCMT_CONFIG_H_
#define SCMT_CONFIG_H_
/* Activate measurement functions. Provide dummy functions otherwise */
#ifndef MEASURE_TIME
#define MEASURE_TIME (0)
#endif
/* Replace printing by dummy function. This will keep timer init, but removes impact of printing on system performance */
#ifndef MEASURE_TIME_NOPRINT
#define MEASURE_TIME_NOPRINT (0)
#endif
/* Only first IPL should init the timer.
In case of bus access issues, you can check addresses and register values with SCMT_DEBUG.
(Dont forget to add a call to scmt_module_start then and set debug level to NOTICE(2). ) */
#define SCMT_INIT (1)
#define SCMT_DEBUG (0)
/* SCMT base address */
/* V4H:0xE6040000 */
/* V4H-ICUMX: 0xFC000000 + (13*0x00200000) + 0x00040000 = 0xFDA40000 */
#define SCMT_BASE (0xFDA40000)
/* For boot time measurement, you can signal the start of SCMT by GPIO pin toggle */
/* See code for adaption of toggled pin */
#define SCMT_TOGGLE_GPIO (1)
/* SCMT is counting with OSCCLK = 131.57 kHz */
/* Tick = 7.6 µs*/
/* Full 32-bit wrap around therefore: 32643 seconds == 9.07 hours */
/* NOTE: WRAPAROUND HANDLING NOT IMPLEMENTED! */
#define SCMT_MS2TICKS(ms) ((ms)*131.579)
/* If the startup time until start of SCMT is known, we can set it as start value of the timer to see absolute time right away */
//#define SCMT_START_VALUE (0) /* No offset, add offset using your spreadsheet program */
//#define SCMT_START_VALUE (2750) /* 20.9ms with MODEMR[1:0]: 0x0 0x801105a4 > ICUMX Boot from HyperFlash 160MHz, Unsecure Boot */
//#define SCMT_START_VALUE (2842) /* 21.6ms with MODEMR[1:0]: 0x0 0x801105a4 > ICUMX Boot from HyperFlash 80MHz, Unsecure Boot */
//#define SCMT_START_VALUE (2974) /* 22.6ms with MODEMR[1:0]: 0x0 0x801105a8 > ICUMX Boot from SerialFlash 133MHz QuadIO, Unsecure Boot */
//#define SCMT_START_VALUE (3237) /* 24.6ms with MODEMR[1:0]: 0x0 0x801105a8 > ICUMX Boot from SerialFlash 80MHz QuadIO, Unsecure Boot */
#define SCMT_START_VALUE (7184) /* 54.6ms with MODEMR[1:0]: 0x0 0x801105a8 > ICUMX Boot from SerialFlash 40MHz, Unsecure Boot */
/* Start a little self-test routine to check Timer-Frequency against baudrate */
/* #define TIMER_TEST_VS_BAUD (921600) */
#define TIMER_TEST_VS_BAUD (0)
/* SCMT frequency slightly depends on MD-Pin settings!! See V4H UM Table 8.1.4e Note 5 */
#define TIMER_FREQ (131578.9)
/* Module name show in log output */
#define MODULE "ICUMX:"
/* Arry size for time checkpoints */
#define TIME_CHECKPOINTS_MAX (20)
/* Print additional infos about compiler or MODEMR register */
#define PRINT_INFO (1)
/* Calculates milliseconds from timer ticks. May be disabled if compiler is currently not prepared to handle floats */
#define PRINT_FLOAT (1)
/* PRINTING
You need to configure a way to hook into the systems print functionality
*/
/* Uses the ERROR macro defined by log.h - Works for ICUMX and CR Core */
#include <log.h> /* Access to ERROR() print function */
#define PRINTFN(args...) ERROR(args)
/* Uses facilities provided by Dummy_CA76 application */
//#define USE_LOG_PRINTF (1)
//void log_printf(const char *fmt, ...); /* Provided by scmt_checkpoint_log.c */
//int32_t PutChar(char outChar); /* Provided by devdrv.c */
//#define PRINTFN(args...) {log_printf(args);}
//#define PUTFN(outChar) PutChar(outChar)
#endif