硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 94|回复: 6
收起左侧

[LTDC] 发现个问题,sdram+ltdc+seggerRTT导致seggerRTT输出混乱

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 昨天 21:25 | 显示全部楼层 |阅读模式
实在不好意思,在下用的GD32H7,但考虑到GD32H7与stm32h7高度相似,咱论坛又是国内mcu水平相当顶尖环境,so...

先说现象:只要是gd32h7+tli(也就是LTDC)+exmc(也就是FMC)驱动sdram刷屏,并且启用了seggerRTT用于输出调试信息。不管是freeRTOS、rtt-nano还是裸机环境,只要让seggerRTT在开机时大量输出内容(比如初始化日志),那么随后在开启ltdc后,seggerRTT就会在明明没有软件调用它的前提下,大量输出历史信息,就好像是_SEGGER_RTT的upbuffer的rdOff的值跑飞了一样,大量输出之前已经输出过的内容,且内容长度不定,输出数量不定。sdram为16位宽、32MB、166MHz频率,屏幕是1024*600@RGB565.
比如:“
[C] 纯文本查看 复制代码
int main(void)
{ 
    sys_cache_enable();                     /* 使能CPU cache */  
    
//    SEGGER_RTT_printf(0, "RTT TEST 0000: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0001: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0002: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0003: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0004: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0005: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0006: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0007: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0008: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0009: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0010: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0011: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0012: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0013: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0014: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0015: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0016: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0017: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0018: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
//    SEGGER_RTT_printf(0, "RTT TEST 0019: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\r\n");
    
    delay_init(600);                        /* 延时初始化 */
    usart_init(115200);                     /* 初始化串口 */
    usmart_init(300);	                      /* 初始化USMART */
    
    led_init();							                /* 初始化LED */   
    
    mpu_memory_protection();                /* 保护相关存储区域 */
    sdram_init(EXMC_SDRAM_DEVICE0);         /* 初始化SDRAM */
    lcd_init();                             /* 初始化LCD */
    key_init();                             /* 初始化按键 */
    tp_dev.init();                          /* 触摸屏初始化 */
    timerx_int_init(10 - 1, 30000 - 1);     /* 300 000 000 / 30000 = 10KHz 10KHz的计数频率,计数10次为1ms */
    my_mem_init(SRAMIN);                    /* 初始化内部SRAM内存池 */
    my_mem_init(SRAMEX);                    /* 初始化外部SDRAM内存池 */
    my_mem_init(SRAMDTCM);                  /* 初始化内部DTCM内存池 */
    my_mem_init(SRAMITCM);                  /* 初始化内部ITCM内存池 */
    
    delay_ms(1000);
    
      
    lv_init();			                        /* lvgl系统初始化 */
    lv_port_disp_init();                    /* lvgl显示接口初始化,放在lv_init()的后面 */
    lv_port_indev_init();                   /* lvgl输入接口初始化,放在lv_init()的后面 */
    lv_demo_benchmark();                       /* lvgl例程 */
//	
  	while (1)
    {
//        tp_dev.scan(0);	                      /* 触摸扫描 */
        lv_task_handler();                    /* lvgl的事务处理 */
    }
}

这是裸机程序,那么看rtt-viewer输出:
[C] 纯文本查看 复制代码
RTT TEST 0015: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0016: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0017: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0018: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0019: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0000: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0001: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0002: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0003: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0004: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0005: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0006: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0007: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0008: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0009: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0010: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0011: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0012: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0013: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0014: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0015: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0016: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0017: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0018: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0019: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0000: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0001: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0002: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0003: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0004: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0005: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0006: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0007: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0008: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0009: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0010: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0011: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0012: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0013: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0014: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0015: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0016: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0017: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0018: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
RTT TEST 0019: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

0-19行内容被输出不止一次。调整过ltdc频率,当频率下降、swd频率下降时,重复输出的频率会降低,比如ltdc 15MHz、swd 500khz;当ltdc频率上升、swd上升时,重复输出频率增加,但也不是严格相关。
我gd32h7反复测试确认,之前运行好的例程,只要加上seggerRTT,马上复现;之前seggerRTT运行好好的程序,只要启动ltdc(tli),问题马上出现。
deepseek已经技穷,gpt表示他没思路了。群友表示有可能axi总线竞争,但我改了半天axi的QoS也没看到改善:
[C] 纯文本查看 复制代码
void bsp_syscfg_axi_config(void) {
    AXI_SPX_RDQOS_CTL(SLAVE_PORT0) |= ((0x0f) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 CPU 读 QoS 设为最高优先级 0xF */
    AXI_SPX_RDQOS_CTL(SLAVE_PORT1) |= ((0x07) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 CPU 读 QoS 设为最高优先级 0xF */
    AXI_SPX_RDQOS_CTL(SLAVE_PORT5) |= ((0x00) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 TLI 读 QoS 设为最低优先级 0x0 */
    // AXI_MPXBM_ISS_CTL(MASTER_PORT4) |= AXI_MPXBM_ISS_CTL_RD_ISSOV;        // 将EXMC的读发起能力限制为1
    /* 限制TLI(MASTER_PORT5)的读发起能力为1 */
    AXI_MPX_ISS_CTL(MASTER_PORT5) |= AXI_MPX_ISS_CTL_RD_ISSOV;

    LOG_DBG_NORECORD("TLI SP5 RDQOS_CTL = 0x%08X\n", AXI_SPX_RDQOS_CTL(SLAVE_PORT5));
    LOG_DBG_NORECORD("TLI SP5 WRQOS_CTL = 0x%08X\n", AXI_SPX_WRQOS_CTL(SLAVE_PORT5));
    LOG_DBG_NORECORD("TLI SP5 ISS_CTL   = 0x%08X\n", AXI_SPX_ISS_CTL(SLAVE_PORT5));

    LOG_DBG_NORECORD("CPU SP1 RDQOS_CTL = 0x%08X\n", AXI_SPX_RDQOS_CTL(SLAVE_PORT1));
    LOG_DBG_NORECORD("CPU SP1 WRQOS_CTL = 0x%08X\n", AXI_SPX_WRQOS_CTL(SLAVE_PORT1));

    LOG_DBG_NORECORD("TLI SP5 RDQOS_CTL = 0x%08X\n", AXI_SPX_RDQOS_CTL(SLAVE_PORT5));
    LOG_DBG_NORECORD("TLI SP5 WRQOS_CTL = 0x%08X\n", AXI_SPX_WRQOS_CTL(SLAVE_PORT5));

    LOG_DBG_NORECORD("EXMC TARG4 BM_ISS_CTL     = 0x%08X\n", AXI_MPXBM_ISS_CTL(MASTER_PORT4));
    LOG_DBG_NORECORD("AXI_SRAM TARG6 BM_ISS_CTL = 0x%08X\n", AXI_MPXBM_ISS_CTL(MASTER_PORT6));

    // /* 将 CPU 读 QoS 设为最高优先级 0xF */
    // __AXI_SPX_READ_QOS_SET(SLAVE_PORT1, 0xF);
    // /* 将 TLI 读 QoS 设为最低优先级 0x0 */
    //  __AXI_SPX_READ_QOS_SET(SLAVE_PORT5, 0x0);
}

我之前尝试降低ltdc频率、sdram频率,降低swd频率,把RTT控制块和上下缓存扔进TCM比如0x20000000,问题依旧出现。菜鸟实在是没招了,遂来论坛求助。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124132
QQ
发表于 7 小时前 | 显示全部楼层
你的xxxx.s启动文件栈空间打开的多少,使用函数SEGGER_RTT_printf,这个空间要够大。

RTT的函数SEGGER_RTT_printf需要较大的栈空间,如果大家移植RTT开辟的空间不足会硬件异常
https://forum.anfulai.cn/forum.p ... 8809&fromuid=58
(出处: 硬汉嵌入式论坛)

点评

但就算如此,还是会出现,只要启动tli,也就是ltdc的gd32版本,就会导致seggerRTT无序、偶发输出历史内容,只要关掉tli就没这个问题。不管tli是从sdram搬运数据还是从axi sram搬运数据,都是这样  详情 回复 发表于 6 小时前
[mw_shl_code=c,true]Stack_Size EQU 0x00004000 AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp ; Heap Configuration ;  详情 回复 发表于 6 小时前
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 6 小时前 | 显示全部楼层
eric2013 发表于 2026-9-20 09:54
你的xxxx.s启动文件栈空间打开的多少,使用函数SEGGER_RTT_printf,这个空间要够大。

RTT的函数SEGGER_R ...

[C] 纯文本查看 复制代码
Stack_Size      EQU     0x00004000

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x000001000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

我rtt-nano的栈空间是16kB,
[C] 纯文本查看 复制代码
Stack_Size      EQU     0x00001000

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x000000800

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

freeRTOS和裸机的栈空间是4kB。
我的seggerRTT的printf的数组空间是256B:
[C] 纯文本查看 复制代码
#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE
#define SEGGER_RTT_PRINTF_BUFFER_SIZE (256)// Size of buffer for RTT printf to bulk-send chars via RTT     (Default: 64)
#endif

而且我那个log_dbg_norecord没用printf,直接用的:
[C] 纯文本查看 复制代码
    // 通过segger-rtt输出主要内容
    SEGGER_RTT_Write(0, printBuf + sizeof(innerTime), printbuf_datlen - sizeof(innerTime));

其中printBuf是静态的,不是动态的。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 6 小时前 | 显示全部楼层
eric2013 发表于 2026-9-20 09:54
你的xxxx.s启动文件栈空间打开的多少,使用函数SEGGER_RTT_printf,这个空间要够大。

RTT的函数SEGGER_R ...

但就算如此,还是会出现,只要启动tli,也就是ltdc的gd32版本,就会导致seggerRTT无序、偶发输出历史内容,只要关掉tli就没这个问题。不管tli是从sdram搬运数据还是从axi sram搬运数据,都是这样
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124132
QQ
发表于 6 小时前 | 显示全部楼层
fox0815 发表于 2026-9-20 11:17
但就算如此,还是会出现,只要启动tli,也就是ltdc的gd32版本,就会导致seggerRTT无序、偶发输出历史内容 ...

最关键的你的upbuffer多少。

你FreeRTOS时,调用这个的任务,任务栈多少,FreeRTOS下占用的时任务栈
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 3 小时前 | 显示全部楼层
对于rtt-nano,我的那个线程栈是4096字节;对于freeRTOS,那个任务栈,也就是main任务栈是128字节;upbuffer空间是2048字节
[C] 纯文本查看 复制代码
#ifndef BUFFER_SIZE_UP
#define BUFFER_SIZE_UP (2048)// Size of the buffer for terminal output of target, up to host (Default: 1k)
//  #define BUFFER_SIZE_UP                            (1024)  // Size of the buffer for terminal output of target, up to host (Default: 1k)
#endif

#ifndef BUFFER_SIZE_DOWN
#define BUFFER_SIZE_DOWN                                                                                               \
    (64)// Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
#endif

#ifndef SEGGER_RTT_PRINTF_BUFFER_SIZE
#define SEGGER_RTT_PRINTF_BUFFER_SIZE (256)// Size of buffer for RTT printf to bulk-send chars via RTT     (Default: 64)
#endif

#ifndef SEGGER_RTT_MODE_DEFAULT
// #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL // Mode for pre-initialized terminal channel (buffer 0)
// #define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_SKIP // Mode for pre-initialized terminal channel (buffer 0)
#define SEGGER_RTT_MODE_DEFAULT SEGGER_RTT_MODE_NO_BLOCK_TRIM// Mode for pre-initialized terminal channel (buffer 0)
#endif

回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 半小时前 | 显示全部楼层
然后目前为止,修改了QoS,无效:
[C] 纯文本查看 复制代码
    AXI_SPX_RDQOS_CTL(SLAVE_PORT0) |= ((0x0f) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 CPU 读 QoS 设为最高优先级 0xF */
    AXI_SPX_RDQOS_CTL(SLAVE_PORT1) |= ((0x07) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 CPU 读 QoS 设为最高优先级 0xF */
    AXI_SPX_RDQOS_CTL(SLAVE_PORT5) |= ((0x00) & AXI_SPX_RDQOS_CTL_RDQOS); /* 将 TLI 读 QoS 设为最低优先级 0x0 */
    AXI_MPXBM_ISS_CTL(MASTER_PORT4) |= AXI_MPXBM_ISS_CTL_RD_ISSOV;        // 将EXMC的读发起能力限制为1

修改了AHBSCR,无效:
[C] 纯文本查看 复制代码
    uint32_t reg_val;
    reg_val = SCB->AHBSCR;

    LOG_DBG_NORECORD("AHBSCR = 0x%08x.\n", reg_val);
    reg_val &= ~SCB_AHBSCR_CTL_Msk;       // 清空AHBSCR内容
    reg_val |= 0x01 << SCB_AHBSCR_CTL_Pos;// 设置AHBSCR内容为1
    SCB->AHBSCR = reg_val;

    LOG_DBG_NORECORD("after set AHBSCR = 0x%08x.\n", SCB->AHBSCR);

这里修改ctl为1、3均无效;
更改RTT控制块地址到0x20000000、0x24000000,无效。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-9-20 17:54 , Processed in 0.357944 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表