본문 바로가기

# RTEMS

[RTEMS] Tick 크기 변경

728x90
반응형

RTME의 기본 Tick의 크기는 10ms로 설정되어 있음.

RTEMS의 기본 tick 설정은 /data/_rtems/rtems-docker/src/rtems/cpukit/include/rtems/confdefs/clock.h 에서 확인

#ifndef CONFIGURE_MICROSECONDS_PER_TICK
  #define CONFIGURE_MICROSECONDS_PER_TICK 10000  // 기본값: 10ms
#endif

따라서 더 정밀한 Tick 설정을 위해 아래와 같은 설정을 사용하면됨

// 1ms tick으로 설정
#define CONFIGURE_MICROSECONDS_PER_TICK 1000

// 또는 100μs tick으로 설정  
#define CONFIGURE_MICROSECONDS_PER_TICK 100

테스트 코드

#define CONFIGURE_MICROSECONDS_PER_TICK 10000 //DEFAULT

    printf("CHECK 5 ns\n");
    int start_ticks = rtems_clock_get_ticks_since_boot();
    uint32_t start_time = rtems_clock_get_uptime_nanoseconds();
    while(rtems_clock_get_ticks_since_boot() - start_ticks < 5) {
    }
    uint32_t end_time = rtems_clock_get_uptime_nanoseconds();
    printf("5 TICK ns: %d\n", (end_time - start_time));
CHECK 5 ns
5 TICK ns: 49,482,240
INIT CPU : 0
#define CONFIGURE_MICROSECONDS_PER_TICK 1000

    printf("CHECK 5 ns\n");
    int start_ticks = rtems_clock_get_ticks_since_boot();
    uint32_t start_time = rtems_clock_get_uptime_nanoseconds();
    while(rtems_clock_get_ticks_since_boot() - start_ticks < 5) {
    }
    uint32_t end_time = rtems_clock_get_uptime_nanoseconds();
    printf("5 TICK ns: %d\n", (end_time - start_time));
CHECK 5 ns
5 TICK ns: 4,482,440
INIT CPU : 0
728x90
반응형