diff --git a/libraries/FreeRTOS/src/FreeRTOSConfig.h b/libraries/FreeRTOS/src/FreeRTOSConfig.h index 3d914b5..980fb77 100644 --- a/libraries/FreeRTOS/src/FreeRTOSConfig.h +++ b/libraries/FreeRTOS/src/FreeRTOSConfig.h @@ -26,8 +26,8 @@ extern "C" { * See https://www.freertos.org/a00110.html. *----------------------------------------------------------*/ -#define configMTIME_BASE_ADDRESS SCR1_TIMER_BASE_ADDRESS//((uintptr_t)&SCR1_TIMER->MTIME) -#define configMTIMECMP_BASE_ADDRESS SCR1_TIMER_BASE_ADDRESS//((uintptr_t)&SCR1_TIMER->MTIMECMP) +#define configMTIME_BASE_ADDRESS (SCR1_TIMER_BASE_ADDRESS + 0x8) // from scr1 core docs +#define configMTIMECMP_BASE_ADDRESS (SCR1_TIMER_BASE_ADDRESS + 0x10) // from scr1 core docs /* Delay definition - here, the user can choose which delay implementation is required. * The default is to change nothing. */ @@ -36,7 +36,7 @@ extern "C" { #define configUSE_PREEMPTION 1 #define configCPU_CLOCK_HZ ( ( uint32_t ) F_CPU ) // This F_CPU variable set by the environment -#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) +#define configTICK_RATE_HZ ( ( TickType_t ) 100 ) #define configUSE_16_BIT_TICKS 0 #define configMAX_PRIORITIES 4 @@ -48,7 +48,7 @@ extern "C" { #define configSTACK_DEPTH_TYPE uint16_t #define configMINIMAL_STACK_SIZE 192 -#define configISR_STACK_SIZE_WORDS 64 // todo сколько надо? +#define configISR_STACK_SIZE_WORDS 128 // todo сколько надо? #define configCHECK_FOR_STACK_OVERFLOW 1 #define configUSE_TRACE_FACILITY 0 diff --git a/libraries/FreeRTOS/src/port.c b/libraries/FreeRTOS/src/port.c index 621aca8..e82e804 100644 --- a/libraries/FreeRTOS/src/port.c +++ b/libraries/FreeRTOS/src/port.c @@ -124,7 +124,6 @@ size_t xTaskReturnAddress = ( size_t ) portTASK_RETURN_ADDRESS; #endif /* configCHECK_FOR_STACK_OVERFLOW > 2 */ /*-----------------------------------------------------------*/ - #if ( configMTIME_BASE_ADDRESS != 0 ) && ( configMTIMECMP_BASE_ADDRESS != 0 ) void vPortSetupTimerInterrupt( void ) @@ -132,11 +131,8 @@ size_t xTaskReturnAddress = ( size_t ) portTASK_RETURN_ADDRESS; uint32_t ulCurrentTimeHigh, ulCurrentTimeLow; volatile uint32_t * const pulTimeHigh = ( volatile uint32_t * const ) ( ( configMTIME_BASE_ADDRESS ) + 4UL ); /* 8-byte type so high 32-bit word is 4 bytes up. */ volatile uint32_t * const pulTimeLow = ( volatile uint32_t * const ) ( configMTIME_BASE_ADDRESS ); - volatile uint32_t ulHartId; - __asm volatile ( "csrr %0, mhartid" : "=r" ( ulHartId ) ); - - pullMachineTimerCompareRegister = ( volatile uint64_t * ) ( ullMachineTimerCompareRegisterBase + ( ulHartId * sizeof( uint64_t ) ) ); + pullMachineTimerCompareRegister = ( volatile uint64_t * ) ( ullMachineTimerCompareRegisterBase ); do { diff --git a/libraries/FreeRTOS/src/portmacro.h b/libraries/FreeRTOS/src/portmacro.h index 2421307..7e56bdc 100644 --- a/libraries/FreeRTOS/src/portmacro.h +++ b/libraries/FreeRTOS/src/portmacro.h @@ -81,7 +81,6 @@ typedef portUBASE_TYPE TickType_t; /* Architecture specifics. */ #define portSTACK_GROWTH ( -1 ) -// todo так оставить? #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) #ifdef __riscv_32e #define portBYTE_ALIGNMENT 8 /* RV32E uses RISC-V EABI with reduced stack alignment requirements */