mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-17 02:07:48 -04:00
added correct interrupt handler initialization in RISC-V-Qemu-virt_GCC (#864)
* added correct trap_handler initialization in main.c Co-authored-by: Joseph Julicher <jjulicher@mac.com> Co-authored-by: Kody Stribrny <kstribrn@amazon.com> Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
This commit is contained in:
parent
54d4eeaa26
commit
dc2c031c45
3 changed files with 78 additions and 2 deletions
|
@ -47,7 +47,7 @@ SRCS = main.c main_blinky.c riscv-virt.c ns16550.c \
|
|||
$(RTOS_SOURCE_DIR)/portable/MemMang/heap_4.c \
|
||||
$(RTOS_SOURCE_DIR)/portable/GCC/RISC-V/port.c
|
||||
|
||||
ASMS = start.S \
|
||||
ASMS = start.S vector.S\
|
||||
$(RTOS_SOURCE_DIR)/portable/GCC/RISC-V/portASM.S
|
||||
|
||||
OBJS = $(SRCS:%.c=$(BUILD_DIR)/%.o) $(ASMS:%.S=$(BUILD_DIR)/%.o)
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://www.github.com/FreeRTOS
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -30,6 +30,10 @@
|
|||
|
||||
/* Run a simple demo just prints 'Blink' */
|
||||
#define DEMO_BLINKY 1
|
||||
#define mainVECTOR_MODE_DIRECT 1
|
||||
|
||||
extern void freertos_risc_v_trap_handler( void );
|
||||
extern void freertos_vector_table( void );
|
||||
|
||||
void vApplicationMallocFailedHook( void );
|
||||
void vApplicationIdleHook( void );
|
||||
|
@ -43,6 +47,16 @@ int main_blinky( void );
|
|||
int main( void )
|
||||
{
|
||||
int ret;
|
||||
// trap handler initialization
|
||||
#if( mainVECTOR_MODE_DIRECT == 1 )
|
||||
{
|
||||
__asm__ volatile( "csrw mtvec, %0" :: "r"( freertos_risc_v_trap_handler ) );
|
||||
}
|
||||
#else
|
||||
{
|
||||
__asm__ volatile( "csrw mtvec, %0" :: "r"( ( uintptr_t )freertos_vector_table | 0x1 ) );
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(DEMO_BLINKY)
|
||||
ret = main_blinky();
|
||||
|
|
62
FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/vector.S
Normal file
62
FreeRTOS/Demo/RISC-V-Qemu-virt_GCC/vector.S
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* FreeRTOS V202112.00
|
||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
.balign 128, 0
|
||||
.option norvc
|
||||
.global freertos_vector_table
|
||||
freertos_vector_table:
|
||||
IRQ_0:
|
||||
j freertos_risc_v_exception_handler
|
||||
IRQ_1:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_2:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_3:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_4:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_5:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_6:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_7:
|
||||
j freertos_risc_v_mtimer_interrupt_handler
|
||||
IRQ_8:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_9:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_10:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_11:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_12:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_13:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_14:
|
||||
j freertos_risc_v_interrupt_handler
|
||||
IRQ_15:
|
||||
j freertos_risc_v_interrupt_handler
|
Loading…
Add table
Add a link
Reference in a new issue