简介:《劳特巴赫TRACE32快速入门》是一份面向嵌入式调试初学者与工程师的实操型入门手册,围绕英飞凌等平台微处理器、微控制器的调试环境搭建展开,帮助读者从零理解TRACE32的基本使用流程。整包仅含1个PDF文件,大小约6.17MB,以图文步骤和目录索引组织内容,便于按章节查阅与对照操作。手册从软件安装包获取与安装讲起,涵盖调试器JTAG/SWD连接、建议上下电顺序、设备识别确认及快捷方式启动,并在附录中补充PowerView网络连接LA-3505、CPU列表找不到目标芯片的排查、命令行启动等进阶场景。正文还涉及断点设置、内存查看、寄存器操作与Trace跟踪等常用能力,可帮助读者快速搭好调试环境、减少连接与识别环节的试错,并为后续查阅安装目录PDF文档、深入平台调试打下基础。目前已有6425人学习。
1. 电脑上跑得好好的程序,烧进板子就“失联”:TRACE32 是来解决这个的
代码在电脑上编译一点问题没有,一烧进板子,灯不亮、串口一声不吭,你只能盯着那块巴掌大的电路板,怀疑是硬件坏了、是编译器坑你、还是自己少写了一个分号。这是绝大多数人第一次碰嵌入式调试时的真实处境,也是劳特巴赫 TRACE32 这类调试器存在的理由:它顺着板子上的调试口钻进芯片内部,让你看见程序此刻停在哪一行、某个变量现在到底是多少、哪个寄存器被谁改坏了。它主要用在汽车电子、工业控制这类对可靠性要求高的场合,但入门门槛并没有想象中那么吓人。下面从“这东西是什么”讲到“第一个断点怎么打出来”,全程按零基础的路子走。
2. 先搞懂它为什么重要:调试器在开发流程里到底站哪个位置
写代码、编译、烧录、运行,这是所有人都会的四步。真正把人卡住的,永远是最后一步之后那句“它怎么不动了”。这一章不急着装软件,先把“为什么值得花时间学调试器”这件事说透,再把这行里几个天天出现、新手却总分不清的名词捋一遍。
2.1 没有调试器的时候,我们是怎么“破案”的
最原始的办法是打印。在代码里插一堆输出语句,通过串口往外吐字符,看着日志猜程序走到哪了。这个办法上手成本几乎为零,缺点是三个:一是要占用串口外设,有些小芯片的串口本来就紧张;二是打印本身要花时间,一旦你调试的是时序敏感的中断处理,插一句打印就可能把问题“治好了”,这种现象老手管它叫海森堡bug;三是只能看到你想到要打印的东西,没想到的地方永远是黑匣子。
第二个办法是点灯。让程序走到某个分支就翻转一个引脚,用示波器或者肉眼观察。信息量极低,一个灯只能表达“到过”或者“没到过”,一旦有五个分支你就得点五个灯,板子上根本没那么多地方。
第三个办法最常见,也最不靠谱:猜。改一行、烧一次、跑一遍,靠反复试错去逼近真相。偶发问题用这种办法几乎无解,因为你连它下一次什么时候出现都不知道。
调试器改变的是信息密度。断点让程序在指定位置停下来,单步让你一行一行往下走,寄存器和内存窗口让你直接看到硬件状态,调用栈让你知道是从哪条路径走到这里的。原来靠猜半小时的问题,很多时候几十秒就能定位。这就是为什么很多做了几年单片机的人,一旦用惯了调试器就再也回不去了——不是变懒了,是血泪经验告诉他们,靠打印和点灯排查一个偶发死机,可能耗掉一整个下午。
2.2 四个必须分清的词:PowerView、Practice、Debug、Trace
TRACE32 的文档里会反复出现这几个词,新手第一眼看过去全是英文大写,很容易糊成一团。用开车的比喻串一下就好记了。
PowerView是软件界面,也就是你在电脑上看到的那些窗口。它是驾驶舱,仪表盘、按钮、后视镜全在这里。所有操作最终都体现在这个界面上。
Practice 脚本,文件后缀一般是.cmm,是这套工具自己的脚本语言。你可以把“选芯片型号、连上目标、下断点、跑起来”这一串动作写进一个文本文件,下次一条命令就能重放。它的价值在于重复劳动自动化,比如每天上班第一件事就是把环境拉起来,写一次脚本,以后点一下就完事。
Debug指的是通过 JTAG 这类调试口实现的断点、单步、查看寄存器和内存。它的本质是“让 CPU 暂停”。就像看视频按了暂停键,你可以一帧一帧地看画面,也可以把画面放大看细节。
Trace是跟踪,通过片上或者片外的跟踪缓存,把程序执行过的指令流记录下来。它不停机,程序该怎么跑怎么跑,跑完之后你把记录倒回去看,能知道它刚才拐了哪些弯。这就是行车记录仪,出了事故调录像,而不是把车停在马路中间研究。Trace 还能做代码覆盖率统计和性能分析,这两件事在汽车电子这类有功能安全要求的项目里几乎是标配。
分清这四个词的实际好处是:你在手册目录里翻的时候,能立刻判断这一节跟自己当前的问题有没有关系。想抓一个偶发跑飞,你要找的是 Trace;想看某个变量当前值,你要找的是 Debug;想把每天的环境准备省掉,你要找的是 Practice 脚本。
2.3 动手之前,先把手里的东西盘一遍
新手最容易犯的错,是软件还没装完就急着插线,插完发现认不到设备,于是同时怀疑软件、线、板子、电脑四个对象,彻底乱套。正确做法是先清点,再动手。硬件这边,你需要一台主模块(手册里叫 PowerDebug,是个方盒子)、一根调试线缆(Debug Cable,一头接主模块,一头接板子上的调试口)、一根连电脑的线(USB 或者网线,看型号)、一块目标板以及它自己的供电。软件这边,只需要一个安装包和一台电脑。
知识上的准备比硬件更值得说。第一,你得能看懂 C 语言,至少知道指针和结构体是什么,因为调试时你看到的内存窗口里全是地址和数值。第二,你得大概知道“寄存器”和“内存地址”是什么意思,不用会写驱动,但要明白“往 0x40000000 这个地址写一个 1,等于打开了某个外设”。第三,你得知道自己板子上芯片的型号和内核架构,比如是 Cortex-M 系列还是 TriCore,这一条在装软件的时候会直接决定你勾哪个选项,选错了后面就找不到芯片。
提示:如果你连自己的芯片属于哪个内核都不确定,先去看芯片型号的规格书首页,那里一定写着内核架构。这一步花五分钟,能省掉后面半小时的折腾。
心态上还有一条:先跑通最小的闭环,别一上来就研究高级功能。装好软件、连上板子、打个断点、看到程序停下来,这四件事做完,你就算入门了。Trace、覆盖率、脚本自动化这些,等你能稳定调试之后再回头学,效率高得多。我第一次学的时候就是贪多,装完软件直接去翻 Trace 那一章,结果连设备都没连上,白白浪费一晚上。
3. 装软件这一步别急着点下一步:Windows 与 Linux 安装全流程
软件安装看起来是最没技术含量的环节,但新手卡在这里的比例高得离谱。原因往往不是安装程序难,而是安装包版本不对、平台选项勾错、驱动没装上。这一章把两条主流系统的路径都走一遍,顺带说清楚增量升级包这个容易被忽略的东西。
3.1 安装包从哪来:几种来源怎么挑
手册里列了四种获取方式,实际用起来各有各的适用场景。
光盘是最传统的,随产品附赠,内容完整,适合现场没网、需要一次装齐的场合。缺点是版本停留在出厂那一刻,想用新功能还得另外升级。
官方渠道的完整安装包只提供最新版本,下载前需要注册,注册时要填调试头的序列号。这个流程看起来麻烦,好处是注册之后有新版本发布会给你邮件提醒,长期用下来省心。填序列号这件事本身也说明,这套工具是跟具体硬件绑定的,不是随便下载一个就能跑。
增量升级包适合电脑上已经装了旧版本的情况。它不需要重新安装,下载下来解压,把里面的文件复制到原来的 TRACE32 目录下覆盖旧文件就行。这个设计很实用,尤其是你不想每隔几个月就重装一次、把自定义配置全丢一遍的时候。
还有一种是从别人那里拿到的完整安装包。这条路能走通,但要注意版本和平台是否对得上,拿到手先确认一下压缩包里的目录结构,别装到一半发现关键组件缺失。
| 来源 | 是否完整 | 适合场景 | 注意点 |
|---|---|---|---|
| 随产品光盘 | 完整 | 现场无网络、一次装齐 | 版本较旧 |
| 官方完整包 | 完整 | 首次安装、想要最新版 | 需注册并填调试头序列号 |
| 增量升级包 | 仅更新 | 已有旧版、只想升级 | 解压覆盖,不执行安装程序 |
| 他人分享的完整包 | 完整 | 应急 | 需核对版本与平台 |
3.2 Windows:从 setup.bat 开始到装完驱动
Windows 下的安装是全程图形界面,跟着点就行,但有两个地方值得停一下。
第一步是把安装包解压到一个路径里没有中文和空格的目录,然后把命令行切过去执行安装脚本。用命令行而不是双击,是因为安装过程中如果报错,命令行窗口里会留下信息,双击的话窗口一闪就没了,你什么都看不到。
:: 进入解压后的安装包目录,路径换成你自己的 cd /d D:\TRACE32_Install :: 启动安装程序,后面会弹出图形界面 setup.bat走完这一步,图形界面会弹出来,大部分页面保持默认点 Next 即可。真正需要你做判断的是“选择调试平台”那一页,这里勾选的不是操作系统,而是你打算调试的芯片内核架构。勾错了,软件能装完也能启动,但打开之后在芯片列表里死活找不到你的型号,新手到这一步往往以为是软件坏了,其实是当初少勾了一个框。
| 你要调试的芯片内核 | 需要勾选的项目 |
|---|---|
| Cortex-M 系列 | Cortex-M |
| Cortex-A9 这类应用处理器 | Cortex-A9 |
| Cortex-A53 / A72 / A73 | 对应的 64 位 ARM 项 |
| TriCore 系列 | TriCore,带硬件安全模块的再加一项 |
| MPC5xxx / QorIQ 这类 | 对应的 PowerPC 架构项 |
还有一处版本差异要注意:较早的版本里,32 位 ARM 和 64 位 ARM 是两个分开的入口,选的时候得清楚自己的芯片是 32 位还是 64 位;较新的版本已经把两者合并成一个入口,选了就都覆盖。如果你照着别人的截图找对应选项却找不到,先看看自己装的是哪个年代的版本,多半是这个原因。
最后是安装驱动。这一步必须做,而且做完最好重启一次电脑。驱动没装好,软件界面照样能打开,看起来一切正常,但插上硬件之后系统根本不认,问题会以“设备连不上”的形式在后面等着你。
3.3 Linux:先补两个库,再跑安装脚本
Linux 下的坑集中在依赖库。安装程序是图形界面的,依赖 Qt 的几个运行库,如果系统里没有,脚本跑起来会直接退出,报错信息还未必明确告诉你缺什么。
# 先更新软件源索引,避免装到过期的包 sudo apt-get update # 补两个最常见的 Qt 运行库,缺了会导致界面起不来 sudo apt-get install -y libqt5gui5 sudo apt-get install -y libqt5printsupport5 # 进入安装包所在目录,执行 Linux 安装脚本 cd /media/user/TRACE32_PKG sudo ./setup_linux.sh-y的意思是遇到询问自动回答“是”,省得中途停下来等输入。sudo是必须的,因为安装过程要装设备驱动、要在系统目录里创建节点,普通用户权限不够。不同发行版的包名可能略有差异,如果上面两个包装的时候提示找不到,先确认自己的发行版对应的 Qt5 包叫什么名字,逻辑是一样的:缺什么补什么。
安装完之后还有一件事:确认当前用户有没有权限访问这个 USB 设备。有些发行版默认只有管理员能访问,普通用户跑起来会提示找不到设备,这种情况需要把用户加进相应的用户组,或者按发行版惯例配一条设备规则。这一步不做过,你会以为硬件坏了。
3.4 增量升级包的正确用法:复制覆盖,但先备份
增量包不是安装程序,它是一堆替换文件。下载下来解压,把里面的内容整体复制到原 TRACE32 安装目录,遇到同名文件选择覆盖,升级就完成了。
这条路上唯一的风险是“覆盖错了”。因为这个动作不可逆,我建议在覆盖之前,把原目录里的配置文件单独复制一份出来放到别处。配置文件的体积很小,备份不费事,但一旦升级后新版本跟你的老配置不兼容、导致软件起不来,你还有后悔药可以吃。这个习惯我是被坑过之后才养成的:某次升级完发现窗口布局全乱,自定义的快捷键也没了,只能一项一项重新配。
还有一种情况要提醒:增量包只提供最新版本,也就是说你没法用它从很老的版本一步步跳到中间某个版本。如果你的旧版本实在太老,跨了好几个大版本,稳妥做法是直接下完整包重装,别硬升。
4. 线和电的学问:硬件连不上,软件再熟也白搭
软件装完只是准备了一半。这一章讲的是让电脑真正“看见”板子,包括三件事:你手里的主模块该用哪种线、上电下电按什么顺序、怎么确认系统已经认出了设备。这三件事任何一件出问题,后面的操作全是空转。
4.1 先看主模块型号,决定用 USB 还是网口
这一步的判断依据只有一个:主模块的型号。手册里写得很清楚,不同型号支持的连接方式完全不同,不是你想用哪种就用哪种。
| 主模块型号 | 支持的连接方式 | 说明 |
|---|---|---|
| LA-3500 / LA-3503 | 仅 USB | 接法单一,插上 USB 线即可 |
| LA-3505 | USB 或网络 | 走网络需要提前给主模块配好 IP |
| μTRACE 系列(LA-3204 / LA-3202 等) | 仅 USB | 体积小,常用于小内核芯片 |
为什么要单独说这件事?因为新手最容易拿着网口硬怼不支持网络的型号,插上之后发现软件里怎么都连不上,然后开始怀疑网线、怀疑交换机、怀疑电脑网卡,其实从一开始方向就错了。先花十秒看清型号,比后面排查半小时划算。
走网络连接的好处是距离不受限,调试器和电脑可以隔得很远,多个人也能同时连同一台设备;代价是要先配 IP,配置没弄对的时候排查起来比 USB 麻烦。我的建议是新手先用 USB,等你能稳定调通一个项目、确实有远程需求了,再去折腾网络那一套。USB 连接虽然简单,但线材质量会直接影响识别,这一点后面避坑章节还会提。
连线的时候还有一件事值得确认:调试线缆从主模块出来,另一头要接到目标板的调试口上,这个口通常是排针形式,注意方向别插反。板子上一般会有丝印或者缺口标记指示第一脚,插之前对着看一眼,比插上之后再后悔强。
4.2 上下电顺序:顺序错了,后面全是玄学
这一节的内容在很多新手眼里属于“玄学”,因为它出问题时的表现特别模糊:有时候能连上,有时候连不上,重启一次又好了。实际上它一点都不玄,只是因果关系比较隐蔽。
推荐的顺序是这样走的。先确认目标板有自己的供电并且已经上电,然后把调试线缆接到目标板的调试口上,接着打开电脑上的 PowerView 软件、等它出现欢迎界面,再给 TRACE32 主模块上电,最后用 USB 或者网线把主模块和电脑连起来。
下电的时候就按相反的顺序来:先在软件里断开与目标板的连接并关闭软件,然后给主模块断电,再拔掉调试线缆,最后给目标板断电。
这个顺序背后的道理很简单:调试器和目标板之间是有电气连接的,如果一头还在工作、另一头突然断电或者上电,中间那根线缆上可能出现瞬间的电平跳变,轻则让连接异常,重则对接口造成应力。软件层面也一样,如果软件还在跟目标芯片通信的时候你直接把板子电断了,软件那一侧的状态就永远停在了“连接中”,后面再想连就得重启软件。
注意:如果你调试的目标板带高压或者有大电流回路,先接线再上电同样是常见做法,具体以你手头硬件说明和随设备附带的手册为准。两条原则不变:软件连接期间不要直接拔目标板电源;下电先关软件。
我第一次遇到这个问题是在一块小开发板上,连着好好的,同事过来顺手把板子电源拔了再插回去,之后我这边的软件就一直连不上,关掉重开才恢复。从那以后我给自己定了个规矩:任何时候要动电源,先在软件里把连接断干净。这个习惯看起来啰嗦,实际上救过我好几次。
4.3 确认设备被认出来:一个设备管理器加三条命令
硬件接好、电源上完,接下来要做的不是打开软件点连接,而是先确认操作系统层面已经认出了这台设备。这一层没通,软件里怎么点都是白点。
Windows 下最直接的办法是打开设备管理器,找有没有 TRACE32 Devices 这一项。有,并且没有黄色感叹号,说明驱动装好了、系统认到了。没有这一项,往两个方向查:驱动没装上,或者 USB 线/接口有问题。
Linux 下用命令看。设备的 USB 厂商号是固定的,用它过滤一下就知道有没有被内核识别。
# 看内核日志里有没有这台设备的接入记录 # 0x897 是设备的 USB 厂商号,用它过滤最准 dmesg | grep -i "0x897" # 另一种方式,列出所有 USB 设备再做过滤 lsusb | grep -i 897dmesg看的是内核消息,插拔设备的瞬间会产生记录,所以最好在插上设备之后马上执行。lsusb是直接列出当前挂着的 USB 设备清单,过滤之后如果能看到对应条目,说明设备在系统层面是活的。
如果这两条命令都查不到东西,先别急着怀疑设备坏。有两个非常常见的原因:一是你用的是虚拟机,USB 设备没有直通给虚拟机,需要在外面的宿主系统里做个设备分配;二是主板或者虚拟机对 USB3.0 的兼容性有问题,换一根 USB2.0 的线、或者换一个 USB2.0 的接口再试,很多“设备消失”的问题就这么解决了。顺带一提,有些型号近几年出厂已经不再附送 USB2.0 数据线,需要自己备一根,这玩意儿平时不起眼,关键时刻能救场。
如果确认是驱动本身的问题,可以单独重装驱动,不用把整个软件卸了重来。驱动程序的安装文件就在安装包目录下的files\bin\<操作系统>\drivers里,找到对应系统的目录执行即可。重装完记得重启,别嫌麻烦。
5. 新手最容易翻的五个车:一份排查清单
前面几章讲的都是“应该怎么做”,这一章讲“做错了会看到什么”。下面五条是我见过频率最高的翻车现场,每一条按现象、原因、解决三段来写,你可以当成一张对照表,出问题的时候直接从现象去查。
5.1 设备管理器里根本没有 TRACE32 Devices
现象是插上硬件、装完软件,设备管理器里翻遍了也找不到相关条目,或者出现一个带黄色感叹号的未知设备。软件打开之后自然也是连不上任何东西。
原因通常在三处。最常见的是 USB3.0 兼容性,某些主板或者虚拟机对 USB3.0 的控制权转交处理得不好,设备枚举到一半就断了。其次是驱动根本没装上,安装过程中跳过了驱动那一步,或者装完没有重启。第三是在虚拟机里跑软件,USB 设备默认归宿主系统所有,没有手动分配给虚拟机。
解决顺序建议从便宜的开始:先换一根 USB2.0 的线,插到机箱后面板上的 USB2.0 接口;还是不行就单独重装一遍驱动并且重启;如果在虚拟机里,先在虚拟机软件的设备菜单里把这只 USB 设备连接到虚拟机,再回到系统里看。三步走完,绝大多数识别问题都能解决。
5.2 软件装好了,CPU 列表里却没有我要的芯片
现象是软件能正常启动,界面也出来了,但新建配置、选芯片的时候,翻遍列表找不到自己板子上那颗芯片的型号,或者只有相近的系列。
原因基本锁定在安装环节。一是在“选择调试平台”那一页勾错了架构,比如芯片是 Cortex-M 你勾了别的项,软件里就不会有对应的支持文件。二是软件版本比芯片老,新出的芯片型号在旧版本的支持列表里压根不存在。三是安装不完整,某些组件在安装时被手动取消勾选了。
解决办法对应着来:重新跑一遍安装程序,在平台选择那一页把对应架构勾上;如果确认架构没勾错还是找不到,去装最新版本的完整包或者增量升级包,让支持列表更新到最新;再不行,就去翻安装目录下的 pdf 文档,里面有一份专门讲“CPU 列表里找不到目标芯片怎么办”的附录,按里面的步骤逐条核对。新手到这一步容易直接放弃,其实只要版本对上,这一步几乎不会卡住。
5.3 快捷方式能启动,改完配置后整个环境都不对劲
现象是用开始菜单里的快捷方式打开软件,一切正常;某天为了改个字体或者加个自动脚本,动了安装根目录下的配置文件,结果下次启动要么报错,要么窗口布局全变,甚至别的项目也打不开了。
原因是快捷方式启动这种方式本身有局限。它快、简单,但没法自定义配置,多核场景、自启动脚本这些都不支持;更关键的是,它读的是安装根目录下的那份公共配置,这份文件一旦被改坏,所有从这个入口启动的实例都会受影响。换句话说,你在一个地方动刀,所有地方跟着流血。
解决思路是换一种启动方式:用命令行启动,通过参数指定配置文件的位置。这样每个项目可以有自己独立的一份配置,改坏了只影响那一个,删掉重建就行,不会波及全局。命令行启动还有个额外好处,可以把启动参数写进批处理或者脚本里,以后一条命令就把“选架构、加载配置、连目标”全带起来。这一步的具体参数在手册的附录里,篇幅不长,值得花十分钟看一遍。
5.4 Linux 下装完了,双击没反应
现象是安装脚本跑完没有报错,但启动软件时窗口一闪而过,或者干脆什么都不发生,命令行里也没有明显提示。
原因几乎都是依赖库缺失。图形界面依赖 Qt 的几个运行库,缺了之后程序启动到一半就退出,而且退出得很安静。另一种可能是权限问题,设备节点只有管理员能访问,普通用户跑起来会在连接阶段失败。
解决办法是先按前面 Linux 安装那一节的命令把常见依赖补上,再在终端里直接运行启动脚本,而不是双击图标。从终端启动的意义在于,程序的标准输出会打在终端里,缺什么库、报什么错,一眼就能看到。这一步是排查所有“图形程序起不来”问题的通用手法,不只是这套工具。权限问题就按发行版惯例处理,把当前用户加进能访问 USB 设备的用户组,重新登录一次生效。
5.5 目标板连着好好的,一上电就掉线
现象是软件里显示已连接,程序也能跑,但只要目标板断电再上电,或者按一下复位键,连接就断了,得重新走一遍连接流程。
原因有两个层面。软件层面,目标板断电的瞬间,调试器与芯片之间的调试链路就断了,而软件还停留在“已连接”的状态里等回应,自然等不到。电气层面,如果上下电顺序不对,线缆上会出现瞬时电平跳变,有时候会让调试器进入一个需要重新枚举的状态。
解决办法是把上下电顺序固定下来,形成肌肉记忆:动电源之前先在软件里断开连接,目标板上电之后再重新连接。另外,如果你调试的是带低功耗模式的芯片,芯片进入休眠后调试口可能也被关掉,这种情况需要在芯片侧做配置保留调试口,具体做法看你芯片的手册。这条属于典型的“知道了就很简单,不知道就永远在怀疑硬件”的问题。
6. 从点亮第一个断点到写出自己的脚本:接下来三个月怎么练
环境跑通之后,最容易发生的事是“打开软件,不知道下一步干什么”。这一章给一条具体的练习路径,按顺序走,每一阶段都有一个明确的可验证结果。
| 阶段 | 练什么 | 怎么算过关 |
|---|---|---|
| 第一周 | 断点与单步 | 能在 main 上停住,单步走完一个函数调用,看清进出的过程 |
| 第二周 | 寄存器与内存窗口 | 能手动改一个变量的值,并观察到程序行为随之改变 |
| 第三周 | 调用栈与外设寄存器 | 程序跑飞时能通过调用栈找到是从哪条路径进来的 |
| 第四周起 | Practice 脚本 | 把环境准备动作写成一个 .cmm 文件,一条命令重放 |
| 第二个月起 | Trace 跟踪 | 能录一段执行流,回看程序在出问题前最后做了什么 |
第一周的重点是建立手感:断点怎么下、条件断点怎么设、单步进入和单步跳过有什么区别。这些操作不难,但必须练到不用想。第二周去碰寄存器和内存窗口,这一步的意义是让你真正建立“程序状态就是一堆地址上的数值”这个直觉,之后看任何异常都不会慌。
第三周开始接触调用栈,这是排查跑飞问题的核心技能。程序卡死的时候,第一时间不是盯着当前那行代码看,而是看调用栈,搞清楚它是从哪条路径走到这里的。很多人在这儿吃过亏:盯着出错的那一行改了三天,最后发现问题是三层调用之前传进来的一个空指针。
从第四周起可以开始写脚本。最小可用的脚本长这样,存成.cmm后缀的文本文件就能用:
; 选择芯片内核,名字按你自己的芯片改 SYStem.CPU Cortex-M4 ; 让调试器连上目标芯片 SYStem.Up ; 在 main 函数上打一个断点 Break.Set main ; 让程序跑起来,命中断点后自动停下 Go每一行的作用都很直白:第一行告诉调试器目标是什么内核,第二行建立物理连接,第三行下断点,第四行启动。脚本的价值不在于这四行本身,而在于你可以往后面继续加:加载符号表、打开指定的窗口、初始化外设、跑一段测试用例。等你写顺手了,每天上班第一件事就是双击一个脚本,环境自己就绪,这种效率提升是很实在的。
第二个月起可以摸 Trace。它和断点是两种思路:断点是“让它停下来看”,Trace 是“让它跑完再回头看”。刚开始不用研究覆盖率统计这些高级用法,就练一件事——录一段执行流,然后回看出问题之前程序最后访问了哪些函数。这一招对付偶发跑飞特别有效。
最后说一个我自己的教训。刚开始学的时候,我总想着把手册从头读到尾,结果是读了三章还没连上设备,热情先耗光了。后来我改成反过来:先让最小闭环跑通,遇到具体问题再回头翻对应章节。从那以后我每次上手一个新工具,都强制走一遍“装好、连上、跑通一个最小例子”这三步,剩下的边用边学。这个习惯比任何一本手册都管用,希望帮到你。
本文还有配套的精品资源,点击获取