增加从站回环的代码,仅加了一个,但是仿真结果有错误,需要检查
This commit is contained in:
@@ -6,60 +6,13 @@
|
||||
#include "tl2cdr.h"
|
||||
|
||||
|
||||
|
||||
|
||||
volatile uint32_t *plic_priority_3 = (uint32_t*)( 0xc000000U + 0X000004 * 3);
|
||||
volatile uint32_t *plic_priority_4 = (uint32_t*)( 0xc000000U + 0X000004 * 4);
|
||||
volatile uint32_t *plic_priority_5 = (uint32_t*)( 0xc000000U + 0X000004 * 5);
|
||||
volatile uint32_t *plic_priority_6 = (uint32_t*)( 0xc000000U + 0X000004 * 6);
|
||||
|
||||
volatile uint32_t *plic_priority_TxEnd = (uint32_t*)( 0xc000000U + 0X000004 * CDR_INT_TXEND);
|
||||
volatile uint32_t *plic_priority_RxError = (uint32_t*)( 0xc000000U + 0X000004 * CDR_INT_RXERROR);
|
||||
volatile uint32_t *plic_priority_RxStart = (uint32_t*)( 0xc000000U + 0X000004 * CDR_INT_RXSTART);
|
||||
volatile uint32_t *plic_priority_RxEnd = (uint32_t*)( 0xc000000U + 0X000004 * CDR_INT_RXEND);
|
||||
|
||||
volatile uint32_t *plic_priority_18 = (uint32_t*)( 0xc000000U + 0X000004 * 18);
|
||||
volatile uint32_t *plic_priority_19 = (uint32_t*)( 0xc000000U + 0X000004 * 19);
|
||||
volatile uint32_t *plic_priority_20 = (uint32_t*)( 0xc000000U + 0X000004 * 20);
|
||||
volatile uint32_t *plic_priority_21 = (uint32_t*)( 0xc000000U + 0X000004 * 21);
|
||||
volatile uint32_t *const plic_priority = (uint32_t *)(0xc000000U);
|
||||
|
||||
volatile uint32_t *plic_pending_0_31 = (uint32_t*)( 0xc000000U + 0X001000 );
|
||||
volatile uint32_t *plic_enable_0_31 = (uint32_t*)( 0xc000000U + 0X002000 );
|
||||
|
||||
volatile uint32_t *plic_threshold_0 = (uint32_t*)( 0xc000000U + 0X200000 );
|
||||
volatile uint32_t *plic_claim = (uint32_t*)( 0xc000000U + 0X200004 );
|
||||
|
||||
|
||||
volatile uint32_t flag_intTxEnd = 0;
|
||||
volatile uint32_t flag_intRxError = 0;
|
||||
volatile uint32_t flag_intRxStart = 0;
|
||||
volatile uint32_t flag_intRxEnd = 0;
|
||||
|
||||
|
||||
void plic_handle(){
|
||||
|
||||
|
||||
// 从 PLIC 中获取中断源 ID
|
||||
uint32_t claim = *plic_claim;
|
||||
|
||||
|
||||
if( claim == CDR_INT_TXEND ){
|
||||
flag_intTxEnd = 1;
|
||||
} else if( claim == CDR_INT_RXERROR ){
|
||||
flag_intRxError = 1;
|
||||
} else if( claim == CDR_INT_RXSTART ){
|
||||
flag_intRxStart = 1;
|
||||
} else if( claim == CDR_INT_RXEND ){
|
||||
flag_intRxEnd = 1;
|
||||
}
|
||||
|
||||
// 通知 PLIC 完成中断处理
|
||||
*plic_claim = claim;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static inline void error() {
|
||||
while(1);
|
||||
@@ -68,12 +21,70 @@ static inline void error() {
|
||||
|
||||
|
||||
|
||||
|
||||
extern const uint8_t int_svr_code[];
|
||||
uint32_t (*sys_call)(uint32_t no, ...);
|
||||
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
int i;
|
||||
|
||||
/*初始化plic*/
|
||||
*plic_enable_0_31 = 1 << CDR_INT_TX0END
|
||||
| 1 << CDR_INT_TX1END
|
||||
|
||||
| 1 << CDR_INT_RX0ERROR
|
||||
| 1 << CDR_INT_RX1ERROR
|
||||
|
||||
| 1 << CDR_INT_RX0START
|
||||
| 1 << CDR_INT_RX1START
|
||||
|
||||
| 1 << CDR_INT_RX0END
|
||||
| 1 << CDR_INT_RX1END
|
||||
|
||||
//| 1 << CDR_INT_TX0_FIFO_DEQ
|
||||
//| 1 << CDR_INT_TX1_FIFO_DEQ
|
||||
|
||||
| 1 << CDR_INT_RX0_FIFO_ENQ
|
||||
| 1 << CDR_INT_RX1_FIFO_ENQ
|
||||
;
|
||||
|
||||
plic_priority[CDR_INT_TX0END] = 1;
|
||||
plic_priority[CDR_INT_TX1END] = 1;
|
||||
plic_priority[CDR_INT_RX0ERROR] = 1;
|
||||
plic_priority[CDR_INT_RX1ERROR] = 1;
|
||||
plic_priority[CDR_INT_RX0START] = 1;
|
||||
plic_priority[CDR_INT_RX1START] = 1;
|
||||
plic_priority[CDR_INT_RX0END] = 1;
|
||||
plic_priority[CDR_INT_RX1END] = 1;
|
||||
plic_priority[CDR_INT_TX0_FIFO_DEQ] = 1;
|
||||
plic_priority[CDR_INT_TX1_FIFO_DEQ] = 1;
|
||||
plic_priority[CDR_INT_RX0_FIFO_ENQ] = 1;
|
||||
plic_priority[CDR_INT_RX1_FIFO_ENQ] = 1;
|
||||
*plic_threshold_0 = 0;
|
||||
|
||||
sys_call = (void *)int_svr_code;
|
||||
|
||||
|
||||
//复位脉冲
|
||||
*tx0_softReset = 1;
|
||||
*tx1_softReset = 1;
|
||||
*rx0_softReset = 1;
|
||||
*rx1_softReset = 1;
|
||||
|
||||
|
||||
//tx0 下行
|
||||
//tx1 上行
|
||||
//rx0 下行
|
||||
//rx1 上行
|
||||
|
||||
|
||||
while (1);
|
||||
|
||||
|
||||
|
||||
#if 0
|
||||
register uint32_t readDat;
|
||||
register uint32_t operator;
|
||||
register uint32_t downRecvLen;
|
||||
@@ -447,7 +458,7 @@ void main()
|
||||
// error();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user