[bsp][tms320f28379d] Add finsh init in rt_init_thread
This commit is contained in:
parent
4518a89634
commit
4acd8db61e
|
@ -12,12 +12,15 @@
|
||||||
#include <board.h>
|
#include <board.h>
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
|
|
||||||
|
#ifdef RT_USING_FINSH
|
||||||
|
#include "shell.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
void rt_init_thread_entry(void* parameter)
|
void rt_init_thread_entry(void* parameter)
|
||||||
{
|
{
|
||||||
/* initialization RT-Thread Components */
|
#ifdef RT_USING_FINSH
|
||||||
rt_components_init();
|
|
||||||
finsh_system_init();
|
finsh_system_init();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int rt_application_init()
|
int rt_application_init()
|
||||||
|
|
|
@ -13,8 +13,16 @@
|
||||||
#include "drv_sci.h"
|
#include "drv_sci.h"
|
||||||
#include "F28x_Project.h"
|
#include "F28x_Project.h"
|
||||||
|
|
||||||
|
extern rt_uint32_t rt_thread_switch_interrupt_flag;
|
||||||
|
|
||||||
extern interrupt void RTOSINT_Handler();
|
extern interrupt void RTOSINT_Handler();
|
||||||
|
|
||||||
|
void trap_rtosint()
|
||||||
|
{
|
||||||
|
if(rt_thread_switch_interrupt_flag)
|
||||||
|
asm(" trap #16");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the timer interrupt service routine.
|
* This is the timer interrupt service routine.
|
||||||
*
|
*
|
||||||
|
@ -31,7 +39,7 @@ interrupt void cpu_timer2_isr(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will initial STM32 board.
|
* This function will initial TMS320F28379D board.
|
||||||
*/
|
*/
|
||||||
void rt_hw_board_init()
|
void rt_hw_board_init()
|
||||||
{
|
{
|
||||||
|
@ -68,4 +76,5 @@ void rt_hw_board_init()
|
||||||
#ifdef RT_USING_CONSOLE
|
#ifdef RT_USING_CONSOLE
|
||||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||||
#endif
|
#endif
|
||||||
|
rt_interrupt_leave_sethook((void (*)(void))trap_rtosint);
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,7 +214,6 @@ int rt_hw_sci_init(void)
|
||||||
CpuSysRegs.PCLKCR7.bit.SCI_C = 1;
|
CpuSysRegs.PCLKCR7.bit.SCI_C = 1;
|
||||||
|
|
||||||
PieVectTable.SCIA_RX_INT = &sciaRxFifoIsr;
|
PieVectTable.SCIA_RX_INT = &sciaRxFifoIsr;
|
||||||
//PieVectTable.SCIA_TX_INT = &sciaTxFifoIsr;
|
|
||||||
|
|
||||||
EDIS;
|
EDIS;
|
||||||
|
|
||||||
|
@ -223,8 +222,7 @@ int rt_hw_sci_init(void)
|
||||||
//
|
//
|
||||||
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
|
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
|
||||||
PieCtrlRegs.PIEIER9.bit.INTx1 = 1; // PIE Group 9, INT1
|
PieCtrlRegs.PIEIER9.bit.INTx1 = 1; // PIE Group 9, INT1
|
||||||
//PieCtrlRegs.PIEIER9.bit.INTx2 = 1; // PIE Group 9, INT2
|
IER |= 0x100; // Enable CPU INT
|
||||||
IER = 0x100; // Enable CPU INT
|
|
||||||
EINT;
|
EINT;
|
||||||
|
|
||||||
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
||||||
|
|
|
@ -94,11 +94,10 @@ _rt_hw_interrupt_enable:
|
||||||
|
|
||||||
.asmfunc
|
.asmfunc
|
||||||
_rt_hw_context_switch_interrupt:
|
_rt_hw_context_switch_interrupt:
|
||||||
_rt_hw_context_switch:
|
|
||||||
MOVL XAR0, #0
|
MOVL XAR0, #0
|
||||||
MOV AR0, AL
|
MOV AR0, AL
|
||||||
MOVL XAR4, *-SP[4]
|
MOVL XAR4, *-SP[4]
|
||||||
; set rt_thread_switch_interrupt_flag to 1
|
; set rt_thread_switch_interrupt_flag to 1
|
||||||
MOVL XAR5, #_rt_thread_switch_interrupt_flag
|
MOVL XAR5, #_rt_thread_switch_interrupt_flag
|
||||||
MOVL XAR6, *XAR5
|
MOVL XAR6, *XAR5
|
||||||
MOVL ACC, XAR6
|
MOVL ACC, XAR6
|
||||||
|
@ -114,6 +113,37 @@ _reswitch:
|
||||||
MOVL XAR5, #_rt_interrupt_to_thread ; set rt_interrupt_to_thread
|
MOVL XAR5, #_rt_interrupt_to_thread ; set rt_interrupt_to_thread
|
||||||
MOVL *XAR5, XAR4
|
MOVL *XAR5, XAR4
|
||||||
|
|
||||||
|
;TRAP #16
|
||||||
|
LRETR
|
||||||
|
.endasmfunc
|
||||||
|
|
||||||
|
;
|
||||||
|
; void rt_hw_context_switch(rt_uint32 from, rt_uint32 to);
|
||||||
|
; r0 --> from
|
||||||
|
; r4 --> to
|
||||||
|
|
||||||
|
|
||||||
|
.asmfunc
|
||||||
|
_rt_hw_context_switch:
|
||||||
|
MOVL XAR0, #0
|
||||||
|
MOV AR0, AL
|
||||||
|
MOVL XAR4, *-SP[4]
|
||||||
|
; set rt_thread_switch_interrupt_flag to 1
|
||||||
|
MOVL XAR5, #_rt_thread_switch_interrupt_flag
|
||||||
|
MOVL XAR6, *XAR5
|
||||||
|
MOVL ACC, XAR6
|
||||||
|
CMPB AL, #1
|
||||||
|
B _reswitch2, EQ
|
||||||
|
MOVL XAR6, #1
|
||||||
|
MOVL *XAR5, XAR6
|
||||||
|
|
||||||
|
MOVL XAR5, #_rt_interrupt_from_thread ; set rt_interrupt_from_thread
|
||||||
|
MOVL *XAR5, XAR0
|
||||||
|
|
||||||
|
_reswitch2:
|
||||||
|
MOVL XAR5, #_rt_interrupt_to_thread ; set rt_interrupt_to_thread
|
||||||
|
MOVL *XAR5, XAR4
|
||||||
|
|
||||||
TRAP #16
|
TRAP #16
|
||||||
LRETR
|
LRETR
|
||||||
.endasmfunc
|
.endasmfunc
|
||||||
|
@ -159,9 +189,9 @@ _RTOSINT_Handler:
|
||||||
;#endif
|
;#endif
|
||||||
|
|
||||||
MOV AL, *AR0
|
MOV AL, *AR0
|
||||||
MOV AR1, AL
|
MOV AR0, AL
|
||||||
MOVZ AR1, @SP ; get from thread stack pointer
|
MOVZ AR1, @SP ; get from thread stack pointer
|
||||||
MOV *AR0, AR1 ; update from thread stack pointer
|
MOV *AR0, AR1 ; update from thread stack pointer
|
||||||
|
|
||||||
switch_to_thread:
|
switch_to_thread:
|
||||||
MOV AR1, #_rt_interrupt_to_thread
|
MOV AR1, #_rt_interrupt_to_thread
|
||||||
|
@ -175,7 +205,7 @@ switch_to_thread:
|
||||||
;#endif
|
;#endif
|
||||||
|
|
||||||
MOV @SP, AR1
|
MOV @SP, AR1
|
||||||
INC SP
|
;INC SP
|
||||||
RT_CTX_RESTORE ; pop r4 - r11 register
|
RT_CTX_RESTORE ; pop r4 - r11 register
|
||||||
|
|
||||||
rtosint_exit:
|
rtosint_exit:
|
||||||
|
|
|
@ -17,6 +17,9 @@ rt_uint32_t rt_thread_switch_interrupt_flag;
|
||||||
/* exception hook */
|
/* exception hook */
|
||||||
static rt_err_t (*rt_exception_hook)(void *context) = RT_NULL;
|
static rt_err_t (*rt_exception_hook)(void *context) = RT_NULL;
|
||||||
|
|
||||||
|
extern rt_uint16_t rt_hw_get_st0(void);
|
||||||
|
extern rt_uint16_t rt_hw_get_st1(void);
|
||||||
|
|
||||||
struct exception_stack_frame
|
struct exception_stack_frame
|
||||||
{
|
{
|
||||||
rt_uint32_t t_st0;
|
rt_uint32_t t_st0;
|
||||||
|
@ -59,6 +62,7 @@ rt_uint8_t *rt_hw_stack_init(void *tentry,
|
||||||
stk = stack_addr;
|
stk = stack_addr;
|
||||||
stk = (rt_uint8_t *)RT_ALIGN((rt_uint32_t)stk, 8);
|
stk = (rt_uint8_t *)RT_ALIGN((rt_uint32_t)stk, 8);
|
||||||
//stk -= sizeof(struct stack_frame);
|
//stk -= sizeof(struct stack_frame);
|
||||||
|
stk += 1;
|
||||||
|
|
||||||
stack_frame = (struct stack_frame *)stk;
|
stack_frame = (struct stack_frame *)stk;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue