跳转至内容
  • 30 主题
    42 帖子
    FrankieF

    欢迎使用3.1.0YT Config Tool(YCT), 下面是本次版本的更新内容,希望您在使用过程中有更好的体验。一些主要的更新内部包括:

    Highlight AI FAE 功能

    b4f2230b-6c1b-41b6-8ba4-cde26f481ee7-image.png

    需要登陆才能使用

    YCT_CLI 集成

    YCT_CLI 集成在安装目录的bin文件夹下面,可以通过 -h 查看如何使用

    Details [feat]:add yct_cli to yt_config_tool [bug]:fix api edit loss bug [feat]:add ai-fae feature, need login [opt]:allow copy in YCT-Agent chat
  • 2k 主题
    8k 帖子
    houjun_xiaoH

    你可以不采用do while的方式,可以在你周期性的任务里面调用Fls_MainFunction()函数就可以,需要注意,每次调用Fls_Write的时候最好判断一下当前Fls的状态是否IDLE了。

  • Blog posts from individual members

    54 主题
    181 帖子
    xianghanX
    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. 推荐使用方式

    建议使用以下流程:

    重新编译工程; 板子断电重上电; 在 TRACE32 中执行: DO C:\Users\xiangye\Desktop\trace32\YTMicro\ytm32b1ha0\testScript\ytm32b1ha0-debug.cmm 脚本执行完成后点击 Go。 7. 注意事项 当前验证使用的是 ytm32b1ha0-debug.cmm。 ytm32b1ha0-trace.cmm 如果后续也要使用,需要同步修改为 SWD,并同步 ELF 下载方式及 FLASH.TARGET 配置。 如果后续重新通过配置工具生成工程,GENERATED_SDK_TARGET.cmake 或 yt_linker.ld 可能被覆盖,需要重新确认本说明中的修改是否仍然保留。 主要集中在 linker 对齐、编译配置和 TRACE32 调试下载脚本。

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

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

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

  • Online Users