跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Blogs
  3. 关于云途MCAL支持劳德巴赫调试修改说明

关于云途MCAL支持劳德巴赫调试修改说明

已定时 已固定 已锁定 已移动 Blogs
1 帖子 1 发布者 23 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • xianghanX 离线
    xianghanX 离线
    xianghan YunTu
    编写于 最后由 编辑
    #1

    TRACE32 / Lauterbach 调试下载问题修改说明

    日期:2026-07-13

    工程目录:

    C:\Users\xiangye\Desktop\trace32\YTMicro\ytm32b1ha0\testScript\Spi_Master_Demo_YTM32B1HA0
    

    1. 问题现象

    在 YTM32B1HA0 的 MCAL SPI demo 工程中,使用 Lauterbach TRACE32 下载/调试时出现异常,而使用 Ozone 调试可以正常运行。

    过程中出现过的典型现象包括:

    FLASH programming error around address ST:0x200FC10--0x200FC1F
    target reset detected
    DAP: DebugPortFail: CTRLSTAT=0x00000000
    running (core power down)
    

    其中 ST:0x200FC10 实际应理解为 0x0200FC10,该地址位于 PFlash0 的 .TEXT 段中,对应函数:

    Spi_Lld_ReadRXBuffer()
    Mcal/Spi/src/Spi_Lld.c:1425
    

    因此该问题不是普通 RAM 地址访问问题,而是 Flash 下载/运行后调试口连接稳定性问题。

    2. 原因分析

    本次问题主要分为两个阶段。

    2.1 下载阶段问题

    HA0 PFlash 的 program page 为 32 Byte。原 linker 配置中,部分 load segment 的起始地址或长度没有完全按照 32 Byte 对齐,可能导致 TRACE32 target flash algorithm 在烧写 ELF 时遇到非整页烧写场景,从而在 .TEXT 区域附近报 flash programming error。

    2.2 运行后 DAP 掉线问题

    Ozone 工程使用的是 SWD:

    Project.SetTargetIF ("SWD")
    

    原 TRACE32 脚本使用的是 JTAG:

    SYStem.CONFIG DEBUGPORTTYPE JTAG
    

    MCAL 程序运行后会执行:

    Port_Init(&Port_Config);
    

    该配置可能会重新配置部分非 SWD 的 JTAG 复用引脚,导致 TRACE32 使用 JTAG 时,在点击 Go 后调试口失联,出现:

    DAP: DebugPortFail: CTRLSTAT=0x00000000
    running (core power down)
    

    将 TRACE32 调试接口切换为 SWD 后,与 Ozone 保持一致,问题消失。

    3. 修改文件清单

    本次主要修改以下文件:

    board\yt_linker.ld
    cmake\targets\GENERATED_SDK_TARGET.cmake
    ..\ytm32b1ha0-debug.cmm
    

    其中 ytm32b1ha0-debug.cmm 位于 testScript 目录:

    C:\Users\xiangye\Desktop\trace32\YTMicro\ytm32b1ha0\testScript\ytm32b1ha0-debug.cmm
    

    4. 具体修改内容

    4.1 修改 board\yt_linker.ld

    新增 Flash page 对齐宏:

    FLASH_PAGE_SIZE = 32;
    

    对 Flash 中的 loadable section 结尾进行 32 Byte 对齐:

    .BVT
    .IVT
    .NC_TEXT
    .TEXT
    .ARM
    

    对带 ROM copy image 的 RAM section 进行 32 Byte 对齐:

    .CODE_RAM
    .D_DATA
    .NC_DATA
    .DATA_RAM
    

    重点修改包括:

    CODE_RAM_rom_start = ((CODE_RAM_rom_start_not_align + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE) * FLASH_PAGE_SIZE;
    D_DATA_rom_start   = ((D_DATA_rom_start_not_align   + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE) * FLASH_PAGE_SIZE;
    NC_DATA_rom_start  = ((NC_DATA_rom_start_not_align  + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE) * FLASH_PAGE_SIZE;
    DATA_RAM_rom_start = ((DATA_RAM_rom_start_not_align + FLASH_PAGE_SIZE - 1) / FLASH_PAGE_SIZE) * FLASH_PAGE_SIZE;
    

    并对 section 本身增加对齐:

    .CODE_RAM ALIGN(FLASH_PAGE_SIZE) : AT(CODE_RAM_rom_start)
    .D_DATA   ALIGN(FLASH_PAGE_SIZE) : AT(D_DATA_rom_start)
    .NC_DATA  ALIGN(FLASH_PAGE_SIZE) : AT(NC_DATA_rom_start)
    .DATA_RAM ALIGN(FLASH_PAGE_SIZE) : AT(DATA_RAM_rom_start)
    

    修改目的:

    • 保证 ELF 中 Flash load segment 的起始地址按 32 Byte 对齐;
    • 保证 Flash load segment 的 FileSiz 按 32 Byte 对齐;
    • 避免 TRACE32 flash algorithm 处理非整页烧写时失败。

    修改后确认的 ELF Program Header 关键段如下:

    LOAD 0x02000000 size 0x000a0
    LOAD 0x02000800 size 0x003e0
    LOAD 0x0200c000 size 0x05d20
    LOAD 0x02011d20 size 0x00020
    LOAD 0x02011d40 size 0x003c0
    

    这些段的起始地址和长度均满足 32 Byte 对齐。

    4.2 修改 ytm32b1ha0-debug.cmm

    4.2.1 降低调试口时钟

    由原先较高 JTAG 时钟调整为:

    SYStem.JtagClock CTCK 2MHz
    

    说明:TRACE32 命令名仍为 JtagClock,但这里用于配置调试口访问速度。降低速度可以提高 reset / flash / run 阶段 DAP 访问稳定性。

    4.2.2 调试接口由 JTAG 改为 SWD

    原配置:

    SYStem.CONFIG DEBUGPORTTYPE JTAG
    

    修改为:

    SYStem.CONFIG DEBUGPORTTYPE SWD
    

    修改目的:

    • 与 Ozone 工程保持一致;
    • 避免 MCAL Port_Init() 运行后复用 JTAG 相关引脚导致 TRACE32 失联;
    • 解决点击 Go 后出现 DAP: DebugPortFail: CTRLSTAT=0x00000000 的问题。

    4.2.3 增加看门狗处理

    脚本中增加 WDG 解锁和配置操作:

    &WDG_SVCR = 0x401A8000
    &WDG_CR   = 0x401A8004
    &WDG_TOVR = 0x401A800C
    

    并执行相关 Data.Set 操作。

    修改目的:

    • 避免 TRACE32 flash algorithm 运行过程中目标芯片被看门狗复位;
    • 减少下载过程中出现 target reset detected 的概率。

    4.2.4 Flash algorithm 装载地址恢复为原厂推荐区域

    当前配置:

    FLASH.TARGET 0x20020000 0x20021000 0x1000  ~~~~\..\flashAlgorithm\ytm32b1ha0.bin
    

    修改目的:

    • 使用 OCRAM 区域执行 flash algorithm;
    • 避免与 DTCM / stack / application RAM 区域冲突。

    4.2.5 下载文件改为当前 build ELF

    当前配置:

    FLASH.Program.ALL
    Data.LOAD.Elf ~~~~\Spi_Master_Demo_YTM32B1HA0\build\Spi_Master_Demo_YTM32B1HA0.elf
    FLASH.Program.off
    

    修改目的:

    • 使用修正后的 linker 生成的 ELF;
    • 让 TRACE32 按 ELF Program Header 进行 Flash 下载;
    • 避免旧 HEX 文件或非当前 build 产物影响验证结果。

    4.3.6 烧录后重新加载符号并设置入口

    新增:

    Data.LOAD.Elf ~~~~\Spi_Master_Demo_YTM32B1HA0\build\Spi_Master_Demo_YTM32B1HA0.elf /NoCODE
    Register.Set MSP STACK_end
    Register.Set PSP STACK_end
    Register.Set PC Reset_Handler
    

    修改目的:

    • 烧录结束后只加载符号,不重复写 Flash;
    • 将 MSP / PSP 设置到应用栈顶;
    • 将 PC 设置到 Reset_Handler;
    • 保证点击 Go 后程序从应用启动入口运行,而不是从 TRACE32 flash algorithm 的上下文继续执行。

    4.3.7 关闭非必要窗口操作

    注释:

    ;per.view ~~~~\..\ytm32b1ha0.per
    ;Data.List
    

    修改目的:

    • 减少脚本执行后的额外外设访问;
    • 避免在目标状态不稳定时触发不必要的 DAP 访问。

    5. 验证结果

    修改后重新编译工程成功。

    Build size:

    text 24992
    data   992
    bss   6224
    dec  32208
    hex   7dd0
    

    ELF load segment 已确认 32 Byte 对齐。

    使用修改后的 TRACE32 脚本:

    C:\Users\xiangye\Desktop\trace32\YTMicro\ytm32b1ha0\testScript\ytm32b1ha0-debug.cmm
    

    执行下载后点击 Go,程序可以正常运行,未再出现 DAP 失联问题。

    6. 推荐使用方式

    建议使用以下流程:

    1. 重新编译工程;
    2. 板子断电重上电;
    3. 在 TRACE32 中执行:
    DO C:\Users\xiangye\Desktop\trace32\YTMicro\ytm32b1ha0\testScript\ytm32b1ha0-debug.cmm
    
    1. 脚本执行完成后点击 Go。

    7. 注意事项

    1. 当前验证使用的是 ytm32b1ha0-debug.cmm。
    2. ytm32b1ha0-trace.cmm 如果后续也要使用,需要同步修改为 SWD,并同步 ELF 下载方式及 FLASH.TARGET 配置。
    3. 如果后续重新通过配置工具生成工程,GENERATED_SDK_TARGET.cmake 或 yt_linker.ld 可能被覆盖,需要重新确认本说明中的修改是否仍然保留。
    4. 主要集中在 linker 对齐、编译配置和 TRACE32 调试下载脚本。

    82ad020a-e80a-4c52-b238-d90db2a8be21-HA Trace32 test okt.zip

    1 条回复 最后回复
    0

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • can
    28
    demo
    23
    uds
    14
    lin stack
    13
    md14
    6
    yt-link
    6
    fbl
    5
    adc模块
    4
    Online Users
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门