mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-28 00:06:16 -04:00
Update polarfire project to latest RISC-V port with vector mode support (#791)
* Update PolarFire Project to support vector mode.l * Update vector alignments. * Update file headers. * Code review changes Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com> Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
parent
449c7b29ca
commit
cc8c0266a8
3 changed files with 125 additions and 3 deletions
|
|
@ -20,7 +20,7 @@
|
|||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
* https://aws.amazon.com/freertos
|
||||
* https://github.com/FreeRTOS
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
@ -60,8 +60,22 @@
|
|||
or 0 to run the more comprehensive test and demo application. */
|
||||
#define mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 0
|
||||
|
||||
/* Set to 1 to use direct mode and set to 0 to use vectored mode.
|
||||
|
||||
VECTOR MODE=Direct --> all traps into machine mode cause the pc to be set to the
|
||||
vector base address (BASE) in the mtvec register.
|
||||
|
||||
VECTOR MODE=Vectored --> all synchronous exceptions into machine mode cause the
|
||||
pc to be set to the BASE, whereas interrupts cause the pc to be set to the
|
||||
address BASE plus four times the interrupt cause number.
|
||||
*/
|
||||
#define mainVECTOR_MODE_DIRECT 0
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
extern void freertos_risc_v_trap_handler( void );
|
||||
extern void freertos_vector_table( void );
|
||||
|
||||
/*
|
||||
* main_blinky() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 1.
|
||||
* main_full() is used when mainCREATE_SIMPLE_BLINKY_DEMO_ONLY is set to 0.
|
||||
|
|
@ -121,6 +135,16 @@ static void prvSetupHardware( void )
|
|||
mss_config_clk_rst( MSS_PERIPH_GPIO2, ( uint8_t )MPFS_HAL_FIRST_HART, PERIPHERAL_ON );
|
||||
MSS_GPIO_config( GPIO2_LO, MSS_GPIO_16, MSS_GPIO_OUTPUT_MODE ); /* Red Led (LED1). */
|
||||
MSS_GPIO_config( GPIO2_LO, MSS_GPIO_18, MSS_GPIO_OUTPUT_MODE ); /* Yellow Led (LED3). */
|
||||
|
||||
#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
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue