TRACE32配置多核调试时,核心数量并不是唯一依据。各核心是否运行同一操作系统、是否需要独立启停、是否共享地址空间,都会影响调试模式。处理“TRACE32怎么配置多核调试TRACE32多核同步调试异常如何排查”时,应先确定SMP或AMP,再配置核心编号、实例通信和同步动作,后续异常才容易定位。
一、TRACE32怎么配置多核调试
多核配置应从芯片拓扑和软件运行方式开始,不建议直接复制单核脚本后反复增加核心命令。
1、判断使用SMP还是AMP
同构核心由一个操作系统统一调度,通常使用一个PowerView实例组成SMP会话;各核心运行独立固件、不同操作系统或需要分别控制时,使用多个实例组成AMP会话。SMP中的核心通常成组运行和停止,CORE.SELECT只切换当前观察的核心。
①列出芯片中的核心、核心簇和硬件编号。
②确认各核心运行同一镜像还是独立镜像。
③需要整组启停时选择SMP。
④需要单核独立控制时选择AMP。
⑤同一SoC同时存在两种情况时,按“SMP核心簇+独立AMP实例”拆分。
2、配置SMP核心组
CORE.ASSIGN用于选择物理核心,并将这些核心组合到同一个SMP调试系统中。
①执行RESet,清理当前调试状态。
②使用SYStem.CPU选择准确的SoC或处理器型号。
③根据芯片拓扑设置调试端口和核心索引。
④执行CORE.ASSIGN 1.2.3.4.加入目标核心。
⑤对运行中的系统使用SYStem.Mode Attach;需要由调试器完成初始化时使用SYStem.Up。
⑥执行Data.LOAD.Elf<文件>/NoCODE加载符号。
⑦为各核心提前设置断点,再执行Go。
核心编号不能只按CPU名称猜测。脚本连接后应逐个执行CORE.SELECT,检查PC、寄存器和当前函数是否与预期核心一致。
3、配置AMP多实例调试
AMP会为独立核心或核心簇建立不同的PowerView实例,再通过实例通信完成协同启停。TargetSystem.NewInstance可从当前会话启动新的实例,InterCom.ENable用于分配实例名称和通信端口。
①在主实例中完成第一个核心的CPU和接口配置。
②执行TargetSystem.NewInstance启动第二个实例。
③在各实例中分别设置CPU型号、核心编号和符号文件。
④执行InterCom.ENable,给每个实例设置唯一名称。
⑤使用SYnch.Connect连接需要同步的实例。
⑥配置主实例与从实例的Go、Break和复位同步关系。
⑦手动执行一次同步运行和同步停止。
二、TRACE32多核同步调试异常如何排查
同步异常要按“模式、核心状态、实例通信、断点”顺序检查。顺序打乱后,很容易把尚未上电的核心误判成同步配置错误。
1、一个核心停止,其他核心仍在运行
①确认当前使用SMP还是AMP。
②SMP中重新查看CORE.ASSIGN,确认目标核心全部在同一组。
③AMP中检查每个实例的InterCom名称和端口。
④重新执行SYnch.Connect。
⑤核对主从实例的Go和Break同步设置。
⑥在无断点状态下测试一次手动同步停止。
若需要分别运行两个核心,却把它们放进同一SMP会话,应改成AMP。SMP中执行CORE.SELECT不会取得单核运行控制权。
2、辅助核心显示不可用
状态栏出现running(power down)时,表示调试链路可能已经连通,但目标核心仍未上电;running(no CPU)还可能与核心未激活或调试寄存器不可访问有关。
①只保留启动核心连接。
②检查辅助核心的电源域、时钟和复位状态。
③让启动代码完成辅助核心释放。
④再执行Attach或加入CORE.ASSIGN。
⑤核对CoreSight、DAP或芯片专用调试模块地址。
⑥降低调试时钟后重新连接。
3、断点没有同步或错过入口
①在执行Go之前完成所有核心的断点设置。
②启动阶段优先使用/Onchip硬件断点。
③核对断点对应的核心、地址空间和任务上下文。
④检查ELF符号地址与目标板实际镜像是否一致。
⑤MMU开启后分别确认物理地址和虚拟地址。
⑥删除旧断点后重新建立,再统一放行所有核心。
三、怎样确认多核同步配置已经稳定
一次连接成功还不够,多核脚本需要经得住冷启动、重新Attach和异常复位。
1、按最小顺序重复验证
①关闭自动脚本,只连接主核心。
②检查PC、寄存器和内存访问。
③每次只加入一个辅助核心或一个AMP实例。
④在每个核心设置独立硬件断点。
⑤执行同步运行,记录最先命中的核心。
⑥检查其余核心是否按配置停止。
⑦连续完成三次断电重启、连接和运行测试。
主核心单独连接就失败,应检查接口、复位和CPU选择;加入某个核心后失败,应检查该核心的编号、电源与时钟;全部核心可访问但不能同步,再回到实例通信和同步角色。
2、排除程序自身造成的假异常
①暂时关闭看门狗或延长超时时间。
②检查共享锁、核间中断和邮箱状态。
③移除普通断点,只保留核间事件前后的关键断点。
④对比同步停止前后各核心的PC和调用栈。
⑤有Trace条件时,按统一时间基准查看核间事件顺序。
⑥将确认过的CPU型号、核心编号、实例名称和启动次序固化到同一套PRACTICE脚本。
总结
“TRACE32怎么配置多核调试TRACE32多核同步调试异常如何排查”需要先选对SMP、AMP或混合模式,再依次完成核心分配、实例通信、同步启停和断点设置。发生异常后,从单核心连接开始逐步加入其他核心,能更快区分硬件状态、脚本配置和程序自身问题。希望本文对大家搭建TRACE32多核调试环境和排查同步异常有所帮助。