1. 为什么TC264烧写总翻车?先搞懂芯片和工具链的脾气
智能车竞赛里,TC264 是英飞凌 AURIX 家族里出场率极高的主控,双核 TriCore 架构,主频 200MHz,带 DSP 和浮点单元,做电磁、摄像头、越野组都够用。但新手拿到龙邱的核心板,第一道坎往往不是写代码,而是程序烧不进去。我见过太多队伍在赛前一周卡在“Memtool 连不上”“DAP 识别不到设备”上,最后被迫换板子。
这篇内容就是把我自己踩过的坑、帮学弟学妹远程排查的经验,整理成一份可以直接照着做的烧写流程。核心工具是龙邱 DAP miniWiggler和英飞凌 Memtool,目标芯片是TC264。适合刚接触智能车、第一次用 AURIX 系列主控的同学,也适合已经能跑例程但烧写偶尔抽风的队伍参考。
先说一个基本认知:TC264 的烧写和 STM32 那种“一根 USB 线搞定”完全不是一回事。AURIX 芯片出厂时Flash 是锁定的,需要先通过 DAP 接口解锁,再写入程序。Memtool 这个软件本质上是英飞凌官方提供的 Flash 编程工具,它通过 DAP 或 JTAG 和芯片的调试口通信,完成擦除、写入、校验。龙邱的 DAP miniWiggler 就是把 USB 转成 DAP 协议的硬件桥,价格便宜、体积小,但对供电和接线比较敏感,这也是很多问题的根源。
注意:TC264 的 DAP 接口和 JTAG 接口是复用的,龙邱板子上通常引出一个 10pin 或 16pin 的排针,丝印上会标 DAP 或 JTAG。接线前一定确认板子原理图,不同批次的龙邱核心板引脚定义可能有微调。
2. 烧写前的硬软件准备:别急着插线,先把这些对齐
2.1 硬件清单与接线确认
你需要准备的东西不多,但每一样都不能凑合:
- 龙邱 DAP miniWiggler一个,注意是带 10pin 灰色排线的版本,不是那种只有 4pin 的简版。
- TC264 核心板或主板,确认板上 DAP 接口的 pin1 位置,通常用方形焊盘或丝印圆点标记。
- USB 数据线,必须能传数据,有些充电线只有电源线,插上后电脑根本不认设备。
- 独立供电,TC264 主板最好用电池或稳压电源单独供电,不要只靠 DAP 的 3.3V 带整板,尤其是带摄像头和舵机的时候。
接线对应关系我整理成表格,以龙邱常见 10pin DAP 座为例:
| DAP miniWiggler 引脚 | TC264 板 DAP 座 | 说明 |
|---|---|---|
| 1 (VCC) | 1 (VCC) | 3.3V 参考电压,必须接 |
| 2 (GND) | 2 (GND) | 共地,必须接 |
| 3 (DAP0) | 3 (DAP0) | 数据线,必须接 |
| 4 (DAP1) | 4 (DAP1) | 时钟线,必须接 |
| 5 (RESET) | 5 (RESET) | 复位信号,建议接 |
| 6-10 | 对应 | 部分为 NC 或额外信号 |
实际接线时,最常犯的错误是把 DAP0 和 DAP1 接反,或者 pin1 方向搞错。接反了不会烧坏芯片,但 Memtool 会一直提示“Cannot connect to target”。我的习惯是接好后用万用表蜂鸣档测一下 DAP 座 pin1 和 miniWiggler 排线 pin1 是否导通,确认无误再上电。
2.2 软件安装与驱动排查
软件方面需要两个东西:Memtool和DAS 驱动。Memtool 建议用 4.7 或更高版本,老版本对 TC264 的支持不完整。DAS 驱动是英飞凌调试访问服务,Memtool 通过它和 DAP 硬件通信。
安装顺序很重要:先装 DAS 驱动,再装 Memtool。装完 DAS 后,把 miniWiggler 插上电脑,打开设备管理器,应该能看到Infineon DAS JDS Debugger或类似名称的设备。如果显示黄色感叹号,说明驱动没装好,右键更新驱动,手动指向 DAS 安装目录下的驱动文件夹。
提示:Win10 和 Win11 下 DAS 驱动有时会被系统自动更新覆盖,导致 Memtool 突然连不上。遇到这种情况,卸载设备后重新安装 DAS,并在设备管理器里禁用自动驱动更新。
还有一个容易被忽略的点:Memtool 需要以管理员身份运行。普通权限下,它可能无法访问 DAS 服务,表现为“Target interface not available”。我一般直接右键 Memtool 快捷方式,勾选“以管理员身份运行”,省得后面排查。
3. Memtool 烧写 TC264 全流程:从连接芯片到程序跑起来
3.1 新建工程与芯片型号选择
打开 Memtool,第一步是新建一个工程。菜单栏File -> New,在弹出的对话框里选择目标芯片。这里有个细节:TC264 属于AURIX TC26x系列,具体型号要选TC264DA或TC264D,取决于你的芯片后缀。选错了会导致 Flash 地址范围不对,烧进去程序也跑不起来。
选完芯片后,Memtool 会自动加载对应的 Flash 算法和内存映射。你可以在左侧看到 Flash 的扇区划分,TC264 的 PFlash 通常从0x80000000开始,大小 2.5MB 左右,DFlash 从0xAF000000开始。这些地址在链接脚本里也会用到,烧写时 Memtool 按扇区擦除,所以不要随意修改默认的扇区配置。
3.2 连接目标芯片与解锁 Flash
点击工具栏上的Connect按钮,或者按 F9。如果接线和驱动都正常,Memtool 会显示芯片的 ID、电压和当前 Flash 状态。第一次连接一块新芯片时,Flash 通常是locked状态,需要先执行解锁。
解锁操作在Target -> Unlock菜单里,Memtool 会提示你确认。解锁过程很快,几秒钟后状态变成unlocked。这里要注意:解锁会擦除整个 Flash,包括你之前烧的程序。所以如果板子上有重要数据,先备份再解锁。
注意:有些龙邱板子出厂时已经解锁过,但如果你换了一块新芯片,或者芯片被误操作锁上,就必须重新解锁。解锁失败通常是供电不稳或 DAP 线太长导致的,缩短排线、换电池供电往往能解决。
3.3 加载 hex 文件与烧写配置
解锁完成后,点击File -> Open,选择你编译生成的.hex文件。Memtool 会自动解析文件内容,并在右侧显示要写入的地址范围。这里要核对一下:起始地址应该是0x80000000,如果你的 hex 文件起始地址是0x80000020或别的值,说明链接脚本配置有问题,需要回编译器检查。
烧写配置里有两个关键选项:
- Erase mode:建议选
Erase sectors used by the file,只擦除用到的扇区,速度快,对 Flash 寿命友好。 - Verify after programming:一定要勾选,烧完自动校验,确保数据写入正确。
配置好后,点击Program按钮,Memtool 开始擦除、写入、校验。整个过程大概十几秒到半分钟,取决于 hex 文件大小。进度条走完后,如果显示Programming successful,说明烧写完成。
3.4 复位运行与串口验证
烧写完成后,给 TC264 主板断电再上电,或者按板子上的复位键。程序应该开始运行。如果你烧的是串口例程,可以用 USB 转 TTL 模块接板子的串口引脚,波特率通常 115200,看是否有数据输出。
我习惯在烧写后先不急着跑复杂程序,而是烧一个最简单的LED 闪烁或串口打印例程,确认芯片能正常启动。这一步能排除“烧进去了但没跑起来”的情况,比如时钟配置错误、看门狗没关等。
4. 常见问题排查:连不上、烧不进、跑不起来怎么办
4.1 Memtool 连接失败速查表
连接失败是最高频的问题,我把可能原因和排查方法整理成表格:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 提示 Cannot connect to target | DAP 线接反或接触不良 | 检查 pin1 方向,万用表测通断 |
| 设备管理器无 DAS 设备 | 驱动未装或 USB 线问题 | 换线、重装 DAS 驱动 |
| 连接时好时坏 | 供电不稳或排线过长 | 独立供电,缩短 DAP 排线 |
| 提示 Target interface not available | Memtool 权限不足 | 以管理员身份运行 |
| 芯片 ID 读取错误 | 芯片型号选错 | 确认具体型号,重选 TC264DA |
4.2 烧写成功但程序不运行的排查思路
烧写成功不等于程序能跑。如果复位后没反应,先检查这几个点:
- 启动模式:TC264 有几种启动模式,通过板上跳线或电阻选择。确认板子处于Flash 启动模式,而不是串口下载模式。
- 时钟配置:AURIX 的时钟树比较复杂,如果 PLL 没锁或者时钟源选错,程序会卡在启动阶段。用调试器单步跟踪,看是否停在
IfxScuCcu_init之类的函数里。 - 看门狗:TC264 的看门狗默认可能是开启的,如果程序里没及时喂狗,芯片会不断复位。检查启动代码里是否关闭了看门狗。
- 链接脚本:确认程序入口地址和 Flash 起始地址一致,中断向量表位置正确。
4.3 串口烧写失败的替代方案
有些同学想用串口烧写,省去 DAP 硬件。TC264 支持通过UART 引导加载程序烧写,但需要芯片处于 BSL 模式,并且用英飞凌的专用工具。实际操作中,串口烧写成功率远低于 DAP,尤其是龙邱的板子,串口引脚可能和调试口复用,配置起来很麻烦。
我的建议是:老老实实用 DAP miniWiggler,几十块钱的东西,稳定性和速度都碾压串口。如果 DAP 实在连不上,再考虑串口方案,但要做好折腾半天的心理准备。
5. 实操心得与避坑经验:这些细节文档里不会写
5.1 供电是万恶之源
我帮别人排查烧写问题,十次里有六次是供电问题。TC264 主板如果只靠 DAP 的 3.3V 供电,带不动板上的稳压芯片和外设,DAP 通信会不稳定。正确做法是:主板用电池或独立电源供电,DAP 只接 VCC 参考电压和 GND,不要用 DAP 给整板供电。
另外,电池电压过低也会导致烧写失败。智能车常用的 7.4V 锂电池,如果电压掉到 6V 以下,稳压芯片输出可能不稳,DAP 通信就会出错。烧写前测一下电池电压,低于 7V 就先充电。
5.2 DAP 排线的玄学
龙邱原装的 DAP 排线质量一般,用久了内部断线是常事。表现就是“昨天还能烧,今天突然连不上”。我的做法是:备一根质量好的 10pin 排线,或者自己压接一根,线长控制在 15cm 以内。排线越长,信号质量越差,尤其是 DAP1 时钟线,容易受干扰。
还有个小技巧:如果连接不稳定,可以在 DAP0 和 DAP1 上各串一个 22Ω 电阻,能改善信号完整性。不过这是最后的手段,先排查供电和接线。
5.3 Memtool 的隐藏坑
Memtool 有个不太友好的设计:它不会自动保存上次的工程配置。每次打开都要重新选芯片、重新连接。如果你经常烧写,可以建一个模板工程,把芯片型号和烧写配置存好,下次直接打开模板,改 hex 文件路径就行。
另外,Memtool 在烧写大文件时偶尔会卡死,进度条不动。这时候不要强行拔线,等一两分钟,如果还没反应,关掉 Memtool,给板子断电重启,再重新连接。强行拔线可能导致芯片进入异常状态,需要重新解锁。
5.4 芯片被锁死的急救方法
如果芯片被误操作锁死,Memtool 连不上也解锁不了,可以尝试上电复位时序:先按住板子复位键,点击 Memtool 的 Connect,再松开复位键。这个操作能让芯片在复位期间响应 DAP 请求,有一定概率恢复连接。
如果还是不行,可能需要用英飞凌的AURIX Flasher工具,通过 DAP 强制解锁。这个工具比 Memtool 底层,能处理一些 Memtool 搞不定的情况。不过操作有风险,搞不好会把芯片彻底锁死,建议先找有经验的学长帮忙。
6. 从烧写延伸到调试:让TC264开发更顺手的几个习惯
烧写只是第一步,真正做车的时候,调试占的时间更多。我养成了几个习惯,分享出来供参考。
第一,每次烧写前先编译确认无错误。AURIX 的编译器有时会生成有问题的 hex,比如地址重叠、段未对齐。烧写前看一眼编译输出的 map 文件,确认代码段和数据段地址正确。
第二,保留一个最小系统测试程序。我专门建了一个工程,只做三件事:初始化时钟、点亮 LED、串口打印“Hello”。每次换板子或换芯片,先烧这个程序,确认硬件和工具链都正常,再烧正式代码。这样能把问题隔离在最小范围内。
第三,记录每次烧写的配置。芯片型号、Memtool 版本、DAS 版本、接线方式,这些信息在出问题时非常有用。我见过有人换了电脑就烧不进去,最后发现是新电脑没装 DAS 驱动。
第四,不要频繁解锁。Flash 解锁次数是有限的,虽然 TC264 的寿命足够长,但没必要每次烧写都解锁。只有第一次使用或芯片被锁时才需要解锁,平时直接 Program 就行。
第五,用调试器而不是 printf。TC264 支持 DAP 调试,可以单步、断点、看变量。比串口打印高效得多。Memtool 烧写完程序后,可以用 AURIX Development Studio 或 iSYSTEM 的调试器连接,实时查看运行状态。
这些经验都是我在智能车备赛期间一点点攒下来的,有些是踩坑踩出来的,有些是看别人翻车总结的。TC264 这颗芯片本身很强大,但工具链确实比 STM32 复杂,新手需要一点耐心。把烧写这一关过了,后面写代码、调参数就是水到渠成的事。