合并bacon_dev分支的修改:1.协议基本运转;2.增加make debug_hlm

This commit is contained in:
2025-02-27 12:55:34 +08:00
parent b167d3affa
commit be7adef4aa
14 changed files with 1060 additions and 291 deletions

View File

@@ -1,49 +1,2 @@
#include <stdint.h>
#include "tl2cdr.h"
#ifndef TL2CDR_BASE
#error TL2CDR Base address not define!!!
#endif
#ifdef OLD_CODE
volatile uint32_t * const cdr_status = (uint32_t*)( TL2CDR_BASE + CDR_ReadStatus ); //read
volatile uint32_t * const cdr_txLen = (uint32_t*)( TL2CDR_BASE + CDR_WriteTxLen ); //write
volatile uint32_t * const cdr_txFifo = (uint32_t*)( TL2CDR_BASE + CDR_WriteTxFifo ); //write
volatile uint32_t * const cdr_direct = (uint32_t*)( TL2CDR_BASE + CDR_WriteTransDir ); //write
volatile uint32_t * const cdr_softReset = (uint32_t*)( TL2CDR_BASE + CDR_WriteSoftReset ); //write
volatile uint32_t * const cdr_rxLen = (uint32_t*)( TL2CDR_BASE + CDR_ReadRxLen ); //read
volatile uint32_t * const cdr_rxFifo = (uint32_t*)( TL2CDR_BASE + CDR_ReadRxFifo ); //read
volatile uint32_t * const cdr_IsLast = (uint32_t*)( TL2CDR_BASE + CDR_ReadIsLast ); //read
volatile uint32_t * const cdr_rxCrc = (uint32_t*)( TL2CDR_BASE + CDR_ReadRxCrc );
volatile uint32_t * const cdr_txCrc = (uint32_t*)( TL2CDR_BASE + CDR_ReadTxCrc);
#endif
volatile uint32_t * const tx0_softReset = (uint32_t*)( TL2CDR_BASE + TX0_WriteSoftReset );
volatile uint32_t * const tx0_txLen = (uint32_t*)( TL2CDR_BASE + TX0_WriteTxLen );
volatile uint32_t * const tx0_txFifo = (uint32_t*)( TL2CDR_BASE + TX0_WriteTxFifo );
volatile uint32_t * const tx0_txCrc = (uint32_t*)( TL2CDR_BASE + TX0_ReadTxCrc );
volatile uint32_t * const tx1_softReset = (uint32_t*)( TL2CDR_BASE + TX1_WriteSoftReset );
volatile uint32_t * const tx1_txLen = (uint32_t*)( TL2CDR_BASE + TX1_WriteTxLen );
volatile uint32_t * const tx1_txFifo = (uint32_t*)( TL2CDR_BASE + TX1_WriteTxFifo );
volatile uint32_t * const tx1_txCrc = (uint32_t*)( TL2CDR_BASE + TX1_ReadTxCrc );
volatile uint32_t * const rx0_softReset = (uint32_t*)( TL2CDR_BASE + RX0_WriteSoftReset );
volatile uint32_t * const rx0_rxLen = (uint32_t*)( TL2CDR_BASE + RX0_ReadRxLen );
volatile uint32_t * const rx0_rxFifo = (uint32_t*)( TL2CDR_BASE + RX0_ReadRxFifo );
volatile uint32_t * const rx0_rxCrc = (uint32_t*)( TL2CDR_BASE + RX0_ReadRxCrc );
volatile uint32_t * const rx0_rxTimerAim = (uint32_t*)( TL2CDR_BASE + RX0_WrtieLimitTimerAim );
volatile uint32_t * const rx0_rxTxPair = (uint32_t*)( TL2CDR_BASE + RX0_WriteLimitTxPair );
volatile uint32_t * const rx1_softReset = (uint32_t*)( TL2CDR_BASE + RX1_WriteSoftReset );
volatile uint32_t * const rx1_rxLen = (uint32_t*)( TL2CDR_BASE + RX1_ReadRxLen );
volatile uint32_t * const rx1_rxFifo = (uint32_t*)( TL2CDR_BASE + RX1_ReadRxFifo );
volatile uint32_t * const rx1_rxCrc = (uint32_t*)( TL2CDR_BASE + RX1_ReadRxCrc );
volatile uint32_t * const rx1_rxTimerAim = (uint32_t*)( TL2CDR_BASE + RX1_WrtieLimitTimerAim );
volatile uint32_t * const rx1_rxTxPair = (uint32_t*)( TL2CDR_BASE + RX1_WriteLimitTxPair );
volatile uint32_t * const HLM_status = (uint32_t*)( TL2CDR_BASE + HLM_ReadStatus );
volatile uint32_t * const HLM_isLast = (uint32_t*)( TL2CDR_BASE + HLM_ReadIsLast );

View File

@@ -5,36 +5,6 @@
#include <stdint.h>
#endif
#define TL2CDR_BASE 0x10000000U
#define TX0_WriteSoftReset 0x00U
#define TX0_WriteTxLen 0x04U
#define TX0_WriteTxFifo 0x08U
#define TX0_ReadTxCrc 0x0CU
#define TX1_WriteSoftReset 0x10U
#define TX1_WriteTxLen 0x14U
#define TX1_WriteTxFifo 0x18U
#define TX1_ReadTxCrc 0x1CU
#define RX0_WriteSoftReset 0x20U
#define RX0_ReadRxLen 0x24U
#define RX0_ReadRxFifo 0x28U
#define RX0_ReadRxCrc 0x2CU
#define RX0_WrtieLimitTimerAim 0x30U
#define RX0_WriteLimitTxPair 0x34U
#define RX1_WriteSoftReset 0x40U
#define RX1_ReadRxLen 0x44U
#define RX1_ReadRxFifo 0x48U
#define RX1_ReadRxCrc 0x4CU
#define RX1_WrtieLimitTimerAim 0x50U
#define RX1_WriteLimitTxPair 0x54U
#define HLM_ReadStatus 0x58U
#define HLM_ReadIsLast 0x5CU
#define HLM_TX_FIFO_LEN 16U
#define HLM_RX_FIFO_LEN 16U
@@ -52,33 +22,145 @@
#define HLM_TX0_FIFO_LEFT(s) (((s) >> (8 + 10)) & 0x1f)
#define HLM_TX1_FIFO_LEFT(s) (((s) >> (8 + 15)) & 0x1f)
#define HLM_INT_TX1_END (1U<<11U)
#define HLM_INT_TX0_END (1U<<10U)
#define HLM_INT_RX1_ERR (1U<<9U)
#define HLM_INT_RX0_ERR (1U<<8U)
#define HLM_INT_RX1_START (1U<<7U)
#define HLM_INT_RX0_START (1U<<6U)
#define HLM_INT_RX1_END (1U<<5U)
#define HLM_INT_RX0_END (1U<<4U)
#define HLM_INT_TX1_FIFO_DEQ (1U<<3U)
#define HLM_INT_TX0_FIFO_DEQ (1U<<2U)
#define HLM_INT_RX1_FIFO_ENQ (1U<<1U)
#define HLM_INT_RX0_FIFO_ENQ (1U<<0U)
#ifndef __ASSEMBLER__
extern volatile uint32_t * const tx0_softReset;
extern volatile uint32_t * const tx0_txLen;
extern volatile uint32_t * const tx0_txFifo;
extern volatile uint32_t * const tx0_txCrc;
#define i_tx0_softReset(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x00, x0, %0, x0" :: "r"(rs1))
#define i_tx0_txLen(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x01, x0, %0, x0" :: "r"(rs1))
#define i_tx0_txFifo(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x02, x0, %0, x0" :: "r"(rs1))
#define i_tx0_txCrc(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x03, %0, x0, x0" :"=r"(rd))
#define i_tx0_clear_timer(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x04, x0, %0, x0" :: "r"(rs1))
#define i_tx0_read_timer(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x04, %0, x0, x0" :"=r"(rd))
extern volatile uint32_t * const tx1_softReset;
extern volatile uint32_t * const tx1_txLen;
extern volatile uint32_t * const tx1_txFifo;
extern volatile uint32_t * const tx1_txCrc;
#define i_tx1_softReset(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x05, x0, %0, x0" :: "r"(rs1))
#define i_tx1_txLen(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x06, x0, %0, x0" :: "r"(rs1))
#define i_tx1_txFifo(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x07, x0, %0, x0" :: "r"(rs1))
#define i_tx1_txCrc(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x08, %0, x0, x0" :"=r"(rd))
#define i_tx1_clear_timer(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x09, x0, %0, x0" :: "r"(rs1))
#define i_tx1_read_timer(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x09, %0, x0, x0" :"=r"(rd))
extern volatile uint32_t * const rx0_softReset;
extern volatile uint32_t * const rx0_rxLen;
extern volatile uint32_t * const rx0_rxFifo;
extern volatile uint32_t * const rx0_rxCrc;
extern volatile uint32_t * const rx0_rxTimerAim;
extern volatile uint32_t * const rx0_rxTxPair;
#define i_rx0_softReset(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x0A, x0, %0, x0" :: "r"(rs1))
#define i_rx0_rxLen(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x0B, %0, x0, x0" :"=r"(rd))
#define i_rx0_rxFifo(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x0C, %0, x0, x0" :"=r"(rd))
#define i_rx0_rxCrc(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x0D, %0, x0, x0" :"=r"(rd))
#define i_rx0_limitTime(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x0E, x0, %0, x0" :: "r"(rs1))
#define i_rx0_txPair(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x0F, x0, %0, x0" :: "r"(rs1))
#define i_rx1_softReset(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x10, x0, %0, x0" :: "r"(rs1))
#define i_rx1_rxLen(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x11, %0, x0, x0" :"=r"(rd))
#define i_rx1_rxFifo(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x12, %0, x0, x0" :"=r"(rd))
#define i_rx1_rxCrc(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x13, %0, x0, x0" :"=r"(rd))
#define i_rx1_limitTime(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x14, x0, %0, x0" :: "r"(rs1))
#define i_rx1_txPair(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x15, x0, %0, x0" :: "r"(rs1))
#define i_hlm_status(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x16, %0, x0, x0" :"=r"(rd))
#define i_hlm_clear_intflag(rs1) \
__asm__ volatile (".insn r 0x0B, 2, 0x17, x0, %0, x0" :: "r"(rs1))
#define i_hlm_read_intflag(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x17, %0, x0, x0" :"=r"(rd))
#define i_hlm_isLast(rd) \
__asm__ volatile (".insn r 0x0B, 4, 0x18, %0, x0, x0" :"=r"(rd))
#else
#define i_tx0_softReset(rs1) \
.insn r 0x0B, 2, 0x00, x0, rs1, x0
#define i_tx0_txLen(rs1) \
.insn r 0x0B, 2, 0x01, x0, rs1, x0
#define i_tx0_txFifo(rs1) \
.insn r 0x0B, 2, 0x01, x0, rs1, x0
#define i_tx0_txCrc(rd) \
.insn r 0x0B, 4, 0x03, rd, x0, x0
#define i_tx0_clear_timer(rs1) \
.insn r 0x0B, 2, 0x04, x0, rs1, x0
#define i_tx0_read_timer(rd) \
.insn r 0x0B, 4, 0x04, rd, x0, x0
#define i_tx1_softReset(rs1) \
.insn r 0x0B, 2, 0x05, x0, rs1, x0
#define i_tx1_txLen(rs1) \
.insn r 0x0B, 2, 0x06, x0, rs1, x0
#define i_tx1_txFifo(rs1) \
.insn r 0x0B, 2, 0x07, x0, rs1, x0
#define i_tx1_txCrc(rd) \
.insn r 0x0B, 4, 0x08, rd, x0, x0
#define i_tx1_clear_timer(rs1) \
.insn r 0x0B, 2, 0x09, x0, rs1, x0
#define i_tx1_read_timer(rd) \
.insn r 0x0B, 4, 0x09, rd, x0, x0
#define i_rx0_softReset(rs1) \
.insn r 0x0B, 2, 0x0A, x0, rs1, x0
#define i_rx0_rxLen(rd) \
.insn r 0x0B, 4, 0x0B, rd, x0, x0
#define i_rx0_rxFifo(rd) \
.insn r 0x0B, 4, 0x0C, rd, x0, x0
#define i_rx0_rxCrc(rd) \
.insn r 0x0B, 4, 0x0D, rd, x0, x0
#define i_rx0_limitTime(rs1) \
.insn r 0x0B, 2, 0x0E, x0, rs1, x0
#define i_rx0_txPair(rs1) \
.insn r 0x0B, 2, 0x0F, x0, rs1, x0
#define i_rx1_softReset(rs1) \
.insn r 0x0B, 2, 0x10, x0, rs1, x0
#define i_rx1_rxLen(rd) \
.insn r 0x0B, 4, 0x11, rd, x0, x0
#define i_rx1_rxFifo(rd) \
.insn r 0x0B, 4, 0x12, rd, x0, x0
#define i_rx1_rxCrc(rd) \
.insn r 0x0B, 4, 0x13, rd, x0, x0
#define i_rx1_limitTime(rs1) \
.insn r 0x0B, 2, 0x14, x0, rs1, x0
#define i_rx1_txPair(rs1) \
.insn r 0x0B, 2, 0x15, x0, rs1, x0
#define i_hlm_status(rd) \
.insn r 0x0B, 4, 0x16, rd, x0, x0
#define i_hlm_clear_intflag(rs1) \
.insn r 0x0B, 2, 0x17, x0, rs1, x0
#define i_hlm_read_intflag(rd) \
.insn r 0x0B, 4, 0x17, rd, x0, x0
#define i_hlm_isLast(rd) \
.insn r 0x0B, 4, 0x18, rd, x0, x0
extern volatile uint32_t * const rx1_softReset;
extern volatile uint32_t * const rx1_rxLen;
extern volatile uint32_t * const rx1_rxFifo;
extern volatile uint32_t * const rx1_rxCrc;
extern volatile uint32_t * const rx1_rxTimerAim;
extern volatile uint32_t * const rx1_rxTxPair;
extern volatile uint32_t * const HLM_status;
extern volatile uint32_t * const HLM_isLast;
#endif
#endif