好的,使用 ISP(In-System Programming)功能对新唐科技(Nuvoton)的 8051 系列 MCU 进行固件升级是常见的做法。Nuvoton 的 8051 MCU 通常通过 UART 接口实现 ISP。以下是详细的步骤和关键点:
核心原理:
Nuvoton 8051 MCU 内部通常包含:
- LDROM (Loader ROM): 一小段出厂预烧写的 Bootloader 程序,负责执行 ISP 功能(通常固化在特定地址,如 0x0000)。
- APROM (Application ROM): 用户程序运行的主要 Flash 区域。你的应用程序就运行在这里。
- Config Bits (配置字): 决定 MCU 启动行为的设置,特别是从哪里启动(LDROM 还是 APROM)以及是否启用 ISP 功能(例如 UART 波特率、握手方式等)。
当你需要更新 APROM 中的用户程序时,你需要:
- 让 MCU 下次启动时执行 LDROM 中的 Bootloader。
- 通过 UART 连接到 Bootloader。
- 使用 PC 端的 ISP 工具软件发送新的固件文件(.bin 或 .hex)给 Bootloader。
- Bootloader 接收数据并烧写到 APROM 的指定区域。
- 配置 MCU 下次启动时从更新了的 APROM 运行。
详细步骤:
准备工作:
- 确认 MCU 支持 ISP: 查阅你使用的具体 Nuvoton 8051 MCU 型号的数据手册和用户手册(特别是 "ISP Programming" 或 "Flash Programming" 章节)。常见系列如 N76E, MS51, ML51, NUC121/NUC125/NUC126, NUC029, NUC123 等通常都支持。
- 获取 ISP 工具软件: 从 Nuvoton 官网下载对应的 NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool (后者通常也包含 ISP 功能)。例如搜索 "NuMicro ISP Programming Tool download" 或 "NuMicro ICP Programming Tool download"。确保下载与你操作系统匹配的版本。
- 硬件连接 (UART 方式):
- 找到 MCU 板上的 UART 接口(通常是 TXD, RXD, GND)。可能需要连接到 USB 转 UART 适配器(如 FT232, CH340, CP2102 等)。
- 连接方式:MCU TXD <-> 适配器 RXD; MCU RXD <-> 适配器 TXD; GND <-> GND。务必交叉连接!注意电平匹配(大多数 Nuvoton 8051 是 5V 或 3.3V TTL)。
- 确保 USB 转 UART 适配器在 PC 上正确安装驱动并被识别(查看设备管理器中端口号,如 COM3 或 COM4)。
- 硬件进入 ISP 模式(关键!): 这是最容易出错的一步。方法通常有三种(具体首选方法查阅手册):
- 冷启动法(最常见):
- 断开 MCU 电源(或按下复位键)。
- 按住 MCU 板上的某个特定按键(通常连接到特定的 GPIO,如 P1.2 或 P3.2,具体查阅手册的 "ISP Entry Pin")不放。
- 给 MCU 上电(或释放复位键)。
- 等待约 1-2 秒后,松开按键。此时 MCU 应运行 LDROM Bootloader。
- 软件跳转法: 在你的用户应用程序中预留一个入口(如通过特定按键组合、串口命令),当检测到升级信号时,软件主动跳转到 LDROM 的入口地址(通常是 0x0000)。这需要事先在用户代码中实现。
- 配置字法: 通过 ICP/ISP 工具预先设置 Config Bits,使 MCU 在下次上电复位后无条件从 LDROM 启动。升级完成后,再通过工具修改 Config Bits 使其从 APROM 启动。
- 获取目标固件文件 (.bin 或 .hex): 准备好你需要烧录到 MCU APROM 的最新固件文件。
执行 ISP 升级:
- 连接硬件: 确保 USB 转 UART 线缆正确连接到 PC 和目标板(MCU 已按上述方法进入 ISP 模式)。给目标板上电。
- 启动 ISP 工具: 打开下载安装好的
NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool。
- 选择连接方式: 在工具界面中选择连接方式为
UART。
- 选择 COM 端口: 在下拉列表中选择你的 USB 转 UART 适配器对应的 COM 端口(如 COM3)。
- 配置通信参数(通常自动): ISP 工具会自动尝试与 LDROM Bootloader 通讯。Bootloader 通常使用固定的波特率(如 115200bps)和格式(8N1)。如果工具无法连接,可能需要手动尝试常见的波特率(38400, 57600, 115200)或查阅手册确认默认值。部分工具需要选择具体的 MCU 型号。
- 连接目标 MCU: 点击
Connect 或类似的按钮。如果连接成功,工具界面通常会显示 "Connected"、"Device ID"、"Bootloader Version" 等信息。这表明你已成功与 LDROM 建立通信。
- 加载固件文件: 在工具中找到加载固件文件的地方(通常叫 "APROM" 或 "Program Memory")。点击
Browse 或 Load File,选择你准备好的 .bin 或 .hex 文件。
- 选择编程区域: 确认编程目标是
APROM。通常不建议修改 LDROM(除非有特殊需求且明确知道风险),它是 Bootloader 的家。
- 配置选项(可选但重要):
- Config Bits (配置字): 这是关键一步! ISP 工具通常会自动识别并显示当前 Config Bits,或者在加载固件文件时附带(如果 HEX 文件包含配置信息)。你必须确保配置字设置正确:
Boot Select 设为从 APROM 启动 (这样升级完成后下次重启才能运行你的新程序)。
ISP Enable 相关位设为有效 (通常是启用 UART ISP 且使用默认管脚)。
- 其他配置(如看门狗、时钟源、低电压复位等)根据需要设置。强烈建议在升级前读取并备份当前配置字,或者在编译固件时正确生成配置字并包含在 HEX 文件中。 错误的配置字可能导致 MCU 无法启动!
- 编程后动作: 选择编程完成后 MCU 的行为,常见选项:
Reset: 编程完成后自动复位 MCU。
Run APROM: 编程完成后复位并直接从 APROM 运行(要求配置字已设为 APROM 启动)。
Run LDROM: 保持在 LDROM 状态(方便连续烧录)。
- 执行烧录: 点击
Start、Program 或 Execute 按钮开始烧录过程。工具界面会显示进度条、状态信息和校验结果。
- 等待完成: 烧录时间取决于固件大小和波特率。完成后,工具会显示 "Programming Finished"、"Verify Success" 等成功信息。
- 断开连接: 点击
Disconnect。
- 重启 MCU: 非常重要! 如果工具设置了编程后自动复位并运行 APROM,则 MCU 应该自动运行新程序。如果没有,你需要手动对目标板进行断电再上电操作。此时因为配置字已设为从 APROM 启动,MCU 会运行刚刚烧录的新固件。
常见问题与解决方法:
无法进入 ISP 模式 / ISP 工具无法连接:
- 检查接线: 确保 TXD/RXD 交叉连接正确(MCU TXD -> 适配器 RXD;MCU RXD -> 适配器 TXD)。检查 GND 连接良好。
- 检查电源: 确保目标板供电稳定充足。
- 检查进入方法: 严格按照目标 MCU 手册指定的 ISP 进入引脚和时序操作(冷启动法中按键按住的时机和时长很关键)。
- 检查 Config Bits: 当前配置字是否禁用了 ISP 功能?是否更改了 ISP 入口引脚?如果怀疑配置字错误,可能需要尝试其他进入方法(如软件跳转,如果用户程序支持),或者使用 ICP(通过 Nu-Link)先修复配置字。
- 检查波特率: 手动尝试不同的常用波特率(9600, 19200, 38400, 57600, 115200)。
- 检查串口冲突: 确保 PC 上没有其他程序占用该 COM 口。
- 检查复位电路: 尝试手动复位 MCU。
编程失败 / 校验失败:
- 电源稳定性: ISP 烧录需要稳定电源。劣质 USB 转 UART 适配器或开发板电源可能不稳,尤其在烧录瞬间电流增大时。使用质量好的电源适配器和 USB 线缆,必要时在 MCU 电源引脚并联大电容(如 100uF)。
- 波特率过高: ISP 工具设置的波特率是否太高?尝试降低到 57600 或 38400bps。
- 信号干扰: 连线过长或环境干扰可能导致数据传输错误。尽量缩短连线,远离干扰源。
- 目标区域保护: 检查 Config Bits 或 ISP 工具设置,确保 APROM 区域没有被设为保护(Read-Only)。
- 固件文件问题: 确认固件文件生成正确,地址范围在 APROM 内且没有重叠冲突。
升级后程序不运行:
- 检查 Config Bits (Boot Select): 这是最常见原因! 确保配置字中的启动源(Boot Select)设为了
APROM。使用 ISP 工具再次连接(可能需要重新进入 ISP 模式),读取并检查配置字。
- 程序本身问题: 新固件本身可能有 Bug 导致无法启动。尝试烧录一个已知正常工作的旧版本固件测试。
- 复位问题: 检查新程序的初始化代码(尤其是时钟、看门狗配置)。
- 硬件问题: 排除其他硬件故障。
意外擦除/破坏了 LDROM:
- 极其危险! 如果不慎擦除了 LDROM,标准的 UART ISP 方法将永久失效,因为 Bootloader 没了!
- 恢复方法: 通常只能通过 ICP (In-Circuit Programming) 方式,使用 Nu-Link 调试编程器(连接 SWD 或 ICE 接口)重新烧录 LDROM 和 APROM。务必在 ISP 操作中谨慎选择编程区域,避免勾选 LDROM 除非你明确知道要更新它(一般用户不需要更新 LDROM)。
总结关键点:
- 正确进入 ISP 模式(冷启动法最常见)是成功的第一步。
- TXD/RXD 必须交叉连接。
- Config Bits (配置字) 的设置,特别是
Boot Select (必须设为 APROM) 和 ISP Enable,至关重要。在升级前备份或确保固件文件中包含正确的配置字。
- 使用官方推荐的 NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool。
- 保证稳定可靠的电源和良好的连接。
- 谨慎操作,避免误擦 LDROM。
强烈建议: 在进行任何 ISP 操作前,务必仔细阅读你所使用的具体 Nuvoton 8051 MCU 型号的数据手册(Datasheet)和用户手册(User Manual) 中关于 Flash 编程和 ISP 的章节。不同型号的细节(如 ISP 进入引脚、默认波特率、配置字地址和位定义)可能有差异。手册是权威指南。
好的,使用 ISP(In-System Programming)功能对新唐科技(Nuvoton)的 8051 系列 MCU 进行固件升级是常见的做法。Nuvoton 的 8051 MCU 通常通过 UART 接口实现 ISP。以下是详细的步骤和关键点:
核心原理:
Nuvoton 8051 MCU 内部通常包含:
- LDROM (Loader ROM): 一小段出厂预烧写的 Bootloader 程序,负责执行 ISP 功能(通常固化在特定地址,如 0x0000)。
- APROM (Application ROM): 用户程序运行的主要 Flash 区域。你的应用程序就运行在这里。
- Config Bits (配置字): 决定 MCU 启动行为的设置,特别是从哪里启动(LDROM 还是 APROM)以及是否启用 ISP 功能(例如 UART 波特率、握手方式等)。
当你需要更新 APROM 中的用户程序时,你需要:
- 让 MCU 下次启动时执行 LDROM 中的 Bootloader。
- 通过 UART 连接到 Bootloader。
- 使用 PC 端的 ISP 工具软件发送新的固件文件(.bin 或 .hex)给 Bootloader。
- Bootloader 接收数据并烧写到 APROM 的指定区域。
- 配置 MCU 下次启动时从更新了的 APROM 运行。
详细步骤:
准备工作:
- 确认 MCU 支持 ISP: 查阅你使用的具体 Nuvoton 8051 MCU 型号的数据手册和用户手册(特别是 "ISP Programming" 或 "Flash Programming" 章节)。常见系列如 N76E, MS51, ML51, NUC121/NUC125/NUC126, NUC029, NUC123 等通常都支持。
- 获取 ISP 工具软件: 从 Nuvoton 官网下载对应的 NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool (后者通常也包含 ISP 功能)。例如搜索 "NuMicro ISP Programming Tool download" 或 "NuMicro ICP Programming Tool download"。确保下载与你操作系统匹配的版本。
- 硬件连接 (UART 方式):
- 找到 MCU 板上的 UART 接口(通常是 TXD, RXD, GND)。可能需要连接到 USB 转 UART 适配器(如 FT232, CH340, CP2102 等)。
- 连接方式:MCU TXD <-> 适配器 RXD; MCU RXD <-> 适配器 TXD; GND <-> GND。务必交叉连接!注意电平匹配(大多数 Nuvoton 8051 是 5V 或 3.3V TTL)。
- 确保 USB 转 UART 适配器在 PC 上正确安装驱动并被识别(查看设备管理器中端口号,如 COM3 或 COM4)。
- 硬件进入 ISP 模式(关键!): 这是最容易出错的一步。方法通常有三种(具体首选方法查阅手册):
- 冷启动法(最常见):
- 断开 MCU 电源(或按下复位键)。
- 按住 MCU 板上的某个特定按键(通常连接到特定的 GPIO,如 P1.2 或 P3.2,具体查阅手册的 "ISP Entry Pin")不放。
- 给 MCU 上电(或释放复位键)。
- 等待约 1-2 秒后,松开按键。此时 MCU 应运行 LDROM Bootloader。
- 软件跳转法: 在你的用户应用程序中预留一个入口(如通过特定按键组合、串口命令),当检测到升级信号时,软件主动跳转到 LDROM 的入口地址(通常是 0x0000)。这需要事先在用户代码中实现。
- 配置字法: 通过 ICP/ISP 工具预先设置 Config Bits,使 MCU 在下次上电复位后无条件从 LDROM 启动。升级完成后,再通过工具修改 Config Bits 使其从 APROM 启动。
- 获取目标固件文件 (.bin 或 .hex): 准备好你需要烧录到 MCU APROM 的最新固件文件。
执行 ISP 升级:
- 连接硬件: 确保 USB 转 UART 线缆正确连接到 PC 和目标板(MCU 已按上述方法进入 ISP 模式)。给目标板上电。
- 启动 ISP 工具: 打开下载安装好的
NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool。
- 选择连接方式: 在工具界面中选择连接方式为
UART。
- 选择 COM 端口: 在下拉列表中选择你的 USB 转 UART 适配器对应的 COM 端口(如 COM3)。
- 配置通信参数(通常自动): ISP 工具会自动尝试与 LDROM Bootloader 通讯。Bootloader 通常使用固定的波特率(如 115200bps)和格式(8N1)。如果工具无法连接,可能需要手动尝试常见的波特率(38400, 57600, 115200)或查阅手册确认默认值。部分工具需要选择具体的 MCU 型号。
- 连接目标 MCU: 点击
Connect 或类似的按钮。如果连接成功,工具界面通常会显示 "Connected"、"Device ID"、"Bootloader Version" 等信息。这表明你已成功与 LDROM 建立通信。
- 加载固件文件: 在工具中找到加载固件文件的地方(通常叫 "APROM" 或 "Program Memory")。点击
Browse 或 Load File,选择你准备好的 .bin 或 .hex 文件。
- 选择编程区域: 确认编程目标是
APROM。通常不建议修改 LDROM(除非有特殊需求且明确知道风险),它是 Bootloader 的家。
- 配置选项(可选但重要):
- Config Bits (配置字): 这是关键一步! ISP 工具通常会自动识别并显示当前 Config Bits,或者在加载固件文件时附带(如果 HEX 文件包含配置信息)。你必须确保配置字设置正确:
Boot Select 设为从 APROM 启动 (这样升级完成后下次重启才能运行你的新程序)。
ISP Enable 相关位设为有效 (通常是启用 UART ISP 且使用默认管脚)。
- 其他配置(如看门狗、时钟源、低电压复位等)根据需要设置。强烈建议在升级前读取并备份当前配置字,或者在编译固件时正确生成配置字并包含在 HEX 文件中。 错误的配置字可能导致 MCU 无法启动!
- 编程后动作: 选择编程完成后 MCU 的行为,常见选项:
Reset: 编程完成后自动复位 MCU。
Run APROM: 编程完成后复位并直接从 APROM 运行(要求配置字已设为 APROM 启动)。
Run LDROM: 保持在 LDROM 状态(方便连续烧录)。
- 执行烧录: 点击
Start、Program 或 Execute 按钮开始烧录过程。工具界面会显示进度条、状态信息和校验结果。
- 等待完成: 烧录时间取决于固件大小和波特率。完成后,工具会显示 "Programming Finished"、"Verify Success" 等成功信息。
- 断开连接: 点击
Disconnect。
- 重启 MCU: 非常重要! 如果工具设置了编程后自动复位并运行 APROM,则 MCU 应该自动运行新程序。如果没有,你需要手动对目标板进行断电再上电操作。此时因为配置字已设为从 APROM 启动,MCU 会运行刚刚烧录的新固件。
常见问题与解决方法:
无法进入 ISP 模式 / ISP 工具无法连接:
- 检查接线: 确保 TXD/RXD 交叉连接正确(MCU TXD -> 适配器 RXD;MCU RXD -> 适配器 TXD)。检查 GND 连接良好。
- 检查电源: 确保目标板供电稳定充足。
- 检查进入方法: 严格按照目标 MCU 手册指定的 ISP 进入引脚和时序操作(冷启动法中按键按住的时机和时长很关键)。
- 检查 Config Bits: 当前配置字是否禁用了 ISP 功能?是否更改了 ISP 入口引脚?如果怀疑配置字错误,可能需要尝试其他进入方法(如软件跳转,如果用户程序支持),或者使用 ICP(通过 Nu-Link)先修复配置字。
- 检查波特率: 手动尝试不同的常用波特率(9600, 19200, 38400, 57600, 115200)。
- 检查串口冲突: 确保 PC 上没有其他程序占用该 COM 口。
- 检查复位电路: 尝试手动复位 MCU。
编程失败 / 校验失败:
- 电源稳定性: ISP 烧录需要稳定电源。劣质 USB 转 UART 适配器或开发板电源可能不稳,尤其在烧录瞬间电流增大时。使用质量好的电源适配器和 USB 线缆,必要时在 MCU 电源引脚并联大电容(如 100uF)。
- 波特率过高: ISP 工具设置的波特率是否太高?尝试降低到 57600 或 38400bps。
- 信号干扰: 连线过长或环境干扰可能导致数据传输错误。尽量缩短连线,远离干扰源。
- 目标区域保护: 检查 Config Bits 或 ISP 工具设置,确保 APROM 区域没有被设为保护(Read-Only)。
- 固件文件问题: 确认固件文件生成正确,地址范围在 APROM 内且没有重叠冲突。
升级后程序不运行:
- 检查 Config Bits (Boot Select): 这是最常见原因! 确保配置字中的启动源(Boot Select)设为了
APROM。使用 ISP 工具再次连接(可能需要重新进入 ISP 模式),读取并检查配置字。
- 程序本身问题: 新固件本身可能有 Bug 导致无法启动。尝试烧录一个已知正常工作的旧版本固件测试。
- 复位问题: 检查新程序的初始化代码(尤其是时钟、看门狗配置)。
- 硬件问题: 排除其他硬件故障。
意外擦除/破坏了 LDROM:
- 极其危险! 如果不慎擦除了 LDROM,标准的 UART ISP 方法将永久失效,因为 Bootloader 没了!
- 恢复方法: 通常只能通过 ICP (In-Circuit Programming) 方式,使用 Nu-Link 调试编程器(连接 SWD 或 ICE 接口)重新烧录 LDROM 和 APROM。务必在 ISP 操作中谨慎选择编程区域,避免勾选 LDROM 除非你明确知道要更新它(一般用户不需要更新 LDROM)。
总结关键点:
- 正确进入 ISP 模式(冷启动法最常见)是成功的第一步。
- TXD/RXD 必须交叉连接。
- Config Bits (配置字) 的设置,特别是
Boot Select (必须设为 APROM) 和 ISP Enable,至关重要。在升级前备份或确保固件文件中包含正确的配置字。
- 使用官方推荐的 NuMicro ISP Programming Tool 或 NuMicro ICP Programming Tool。
- 保证稳定可靠的电源和良好的连接。
- 谨慎操作,避免误擦 LDROM。
强烈建议: 在进行任何 ISP 操作前,务必仔细阅读你所使用的具体 Nuvoton 8051 MCU 型号的数据手册(Datasheet)和用户手册(User Manual) 中关于 Flash 编程和 ISP 的章节。不同型号的细节(如 ISP 进入引脚、默认波特率、配置字地址和位定义)可能有差异。手册是权威指南。
举报