This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 463d8a71d7e arch/arm/stm32h7: Dump FDCAN Rx/Tx FIFO status registers.
463d8a71d7e is described below
commit 463d8a71d7e59c04bc7dcf7e6ceec1a0fd8254dd
Author: jsanchez-2g <[email protected]>
AuthorDate: Fri Sep 25 10:43:57 2026 -0500
arch/arm/stm32h7: Dump FDCAN Rx/Tx FIFO status registers.
fdcan_dumpregs() printed the Rx FIFO 0 and Tx buffer configuration
registers (RXF0C, TXBC) but not their live status counterparts
(RXF0S, TXFQS), and did not print the Rx FIFO 1 configuration or
status registers (RXF1C, RXF1S) at all.
Add the missing RXF1C configuration line and the RXF0S, RXF1S, and
TXFQS status lines so every configured FIFO/buffer's fill-level
state is visible alongside its configuration, matching the existing
dump grouping.
Convert fdcan_dumpregs() from printf() to ninfo(), matching the
logging convention already used elsewhere in this file
(ninfo/nerr), per upstream review feedback.
Compile-tested: boards/arm/stm32h7/nucleo-h743zi2/configs/socketcan
with CONFIG_STM32_FDCAN_REGDEBUG=y, CONFIG_DEBUG_INFO=y.
Assisted-by: Claude:claude-sonnet-4.5
Signed-off-by: jsanchez-2g <[email protected]>
---
arch/arm/src/stm32h7/stm32_fdcan_sock.c | 38 ++++++++++++++++++++-------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/arch/arm/src/stm32h7/stm32_fdcan_sock.c
b/arch/arm/src/stm32h7/stm32_fdcan_sock.c
index 1ae369be865..8a90a7aa4e7 100644
--- a/arch/arm/src/stm32h7/stm32_fdcan_sock.c
+++ b/arch/arm/src/stm32h7/stm32_fdcan_sock.c
@@ -514,49 +514,57 @@ static void fdcan_errint(struct fdcan_driver_s *priv,
bool enable);
#ifdef CONFIG_STM32_FDCAN_REGDEBUG
static void fdcan_dumpregs(struct fdcan_driver_s *priv)
{
- printf("-------------- FDCAN Reg Dump ----------------\n");
- printf("CAN%d Base: 0x%lx\n", priv->iface_idx, priv->base);
+ ninfo("-------------- FDCAN Reg Dump ----------------\n");
+ ninfo("CAN%d Base: 0x%lx\n", priv->iface_idx, priv->base);
uint32_t regval;
regval = getreg32(priv->base + STM32_FDCAN_CCCR_OFFSET);
- printf("CCCR = 0x%lx\n", regval);
+ ninfo("CCCR = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_ECR_OFFSET);
- printf("ECR = 0x%lx\n", regval);
+ ninfo("ECR = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_NBTP_OFFSET);
- printf("NBTP = 0x%lx\n", regval);
+ ninfo("NBTP = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_DBTP_OFFSET);
- printf("DBTP = 0x%lx\n", regval);
+ ninfo("DBTP = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_TXBC_OFFSET);
- printf("TXBC = 0x%lx\n", regval);
+ ninfo("TXBC = 0x%lx\n", regval);
+ regval = getreg32(priv->base + STM32_FDCAN_TXFQS_OFFSET);
+ ninfo("TXFQS = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_RXF0C_OFFSET);
- printf("RXF0C = 0x%lx\n", regval);
+ ninfo("RXF0C = 0x%lx\n", regval);
+ regval = getreg32(priv->base + STM32_FDCAN_RXF0S_OFFSET);
+ ninfo("RXF0S = 0x%lx\n", regval);
+ regval = getreg32(priv->base + STM32_FDCAN_RXF1C_OFFSET);
+ ninfo("RXF1C = 0x%lx\n", regval);
+ regval = getreg32(priv->base + STM32_FDCAN_RXF1S_OFFSET);
+ ninfo("RXF1S = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_TXESC_OFFSET);
- printf("TXESC = 0x%lx\n", regval);
+ ninfo("TXESC = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_RXESC_OFFSET);
- printf("RXESC = 0x%lx\n", regval);
+ ninfo("RXESC = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_IE_OFFSET);
- printf("IE = 0x%lx\n", regval);
+ ninfo("IE = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_ILE_OFFSET);
- printf("ILE = 0x%lx\n", regval);
+ ninfo("ILE = 0x%lx\n", regval);
regval = getreg32(priv->base + STM32_FDCAN_ILS_OFFSET);
- printf("ILS = 0x%lx\n", regval);
+ ninfo("ILS = 0x%lx\n", regval);
/* Print out some possibly interesting unhandled interrupts */
regval = getreg32(priv->base + STM32_FDCAN_IR_OFFSET);
- printf("IR = 0x%lx\n", regval);
+ ninfo("IR = 0x%lx\n", regval);
if (regval & FDCAN_IR_PEA || regval & FDCAN_IR_PED)
{
/* Protocol error -- check protocol status register for details */
regval = getreg32(priv->base + STM32_FDCAN_PSR_OFFSET);
- printf("--PSR.LEC = %" PRId32 "\n", regval & FDCAN_PSR_LEC_MASK);
+ ninfo("--PSR.LEC = %" PRId32 "\n", regval & FDCAN_PSR_LEC_MASK);
}
}
#endif