合并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

@@ -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