新唐MCU技术
直播中

哈哈哈

11年用户 963经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

请问如何将ISP写入Nuvoton 8051 MCU系列?

如何将ISP写入Nuvoton 8051 MCU系列?

回帖(1)

将 ISP(在系统编程)功能“写入”Nuvoton 8051 MCU 系列(如 N76E003, MS51, ML51 等)通常不是指你自己从头开始编写一个全新的 ISP 程序,而是指启用、配置或更新芯片内部固有的 ISP 引导加载程序(LDROM)。出厂时,大部分 Nuvoton 8051 MCU 已经在 ROM 中包含了基本的 ISP 引导加载代码(通常称为 LDROM)。


以下是实现 ISP 功能的几种主要方式及相关操作步骤:


? 1. 使用芯片预烧录的出厂 ISP (LDROM)



  • 这是最常见和使用的方式。

  • 原理: 芯片出厂时,其内部 LDROM (通常是 Flash 的最后 2KB 或 4KB) 已经预烧录了 Nuvoton 标准的 ISP 引导程序。

  • 如何“写入”/启用:

    • 连接: 通过串行接口(通常是 UART0,具体引脚如 P0.6/RxD, P0.7/TxD)连接 MCU 和目标主机(PC)。

    • 触发方式: 在芯片上电或复位时,满足特定条件(如特定的 GPIO 引脚状态 - 通常是 P3.2/INT0 或 P1.7 拉低,详见芯片数据手册的 ISP Entry 部分)使芯片启动时执行 LDROM 中的 ISP 程序,而不是执行用户主程序(APROM)。

    • 配置选项字 (CONFIG): 使用编程工具(如 NuMicro ICP Programming Tool)配置 CONFIG 区域,确保:

      • CBS (Code Boot Selection) 设置为从 LDROM 启动(例如 CBS=11)。

      • LDROM 大小已正确设置(通常出厂已设好)。

      • ISP 触发引脚选择正确(例如 ISPEN=0, 使用 P3.2; ISPEN=1, 使用 P1.7)。

      • ISP 通信接口(如 UART)的波特率等设置(通常 ISP 会自适应波特率)。


    • 使用工具: 在 PC 上运行 Nuvoton 提供的 ISP 下载工具(如 NuMicro ISP Programming ToolNuvoton NuWriter)。该工具通过指定的串口与处于 ISP 模式的 MCU 通信,实现用户应用程序(APROM)的擦除、编程、验证和运行。



? 2. 更新/重新烧录官方的 ISP 程序到 LDROM



  • 目的: 修复损坏的 LDROM 或更新到新版本的官方 ISP。

  • 如何“写入”:

    • 使用 ICP (In-Circuit Programming): 这是主要方法。你需要一个支持 SWD (Serial Wire Debug) 接口的编程器(如 Nu-Link, Nu-Link-Pro, J-Link)和 Nuvoton 的 NuMicro ICP Programming Tool

    • 连接: 通过 SWD 接口(SWCLK, SWDIO, RST, GND, VDD)连接编程器和目标板。

    • 操作步骤:

      • 打开 ICP 工具,连接目标芯片。

      • 在工具界面中,选择目标芯片型号。

      • OptionConfig 标签页配置 CONFIG (确保 CBS 指向 LDROM,设置 LDROM 大小等)。

      • LDROM 区域,加载官方提供的 .bin.hex 格式的 ISP 固件文件(通常在 NuMicro ISP Programming Tool 的安装目录下,如 .NuMicro ISP Programming ToolFirmwareN76E003ISP_N76E003.bin)。

      • 执行“编程”操作(擦除→编程→验证)。ICP 工具会通过 SWD 接口将新的 ISP 程序写入芯片的 LDROM 区域。


    • 使用 ISP 本身: 如果当前的 ISP 还能工作,有些高级的 ISP 工具(如 NuWriter)提供了通过 ISP 通道更新 LDROM 自身固件的功能。



? 3. 开发并烧录自定义的 ISP 程序 (高级)



  • 目的: 需要实现非标准通信协议(如 USB, I2C, CAN, 自定义加密握手)或特殊功能的引导加载程序。

  • 如何“写入”:

    • 开发:

      • 使用 Keil C51 或 IAR Embedded Workbench for 8051 等 IDE。

      • 编写引导加载程序代码,实现:

        • 启动逻辑(检查触发条件)。

        • 通信协议驱动(UART, USB, I2C, SPI 等)。

        • Flash 操作驱动(擦除扇区、编程字节/页、读取)。

        • 协议解析(接收命令、数据、地址)。

        • 跳转到用户程序 (APROM) 的逻辑。

        • 异常处理(超时、校验错误)。


      • 关键点:

        • 代码要非常精简(LDROM 空间有限,通常 2KB/4KB)。

        • 避免使用中断(或极其小心地使用)。

        • 理解芯片的 Flash 编程时序和限制。

        • 可能需要部分代码在 RAM 中运行。



    • 编译链接:

      • 设置链接器脚本,确保代码定位到 LDROM 的起始地址(例如 0x0000 或在 CONFIG 中指定的地址偏移)。


    • 烧录:

      • 首次烧录/恢复: 必须使用 ICP (SWD 接口) 和 NuMicro ICP Programming Tool. 将生成的 .bin/.hex 文件烧录到 LDROM 区域,并配置 CONFIG 指向 LDROM 启动。

      • 更新自定义 ISP: 如果自定义 ISP 实现了自我更新的功能,则可以像更新用户程序一样通过自定义协议更新自身(需要精心设计,风险较高)。否则仍需通过 ICP 更新。




? 总结与关键步骤




  1. 确认需求:



    • 你需要使用标准的 UART ISP? → 启用出厂预烧的 LDROM。

    • 出厂 LDROM 损坏了或需要更新官方新版? → 使用 ICP 重新烧录官方 ISP 固件到 LDROM。

    • 你需要 USB/I2C/CAN/自定义协议的 ISP? → 开发自定义 ISP 并用 ICP 烧录。




  2. 查阅文档: 仔细阅读目标芯片型号的:



    • 数据手册: 查找 ISP EntryCONFIG 寄存器定义(特别是 CBS, LDROM_EN, LDROM_SIZE, ISP 触发引脚选择)、Flash 编程时序、内存映射。

    • 用户手册: NuMicro 8051 系列通常有专门章节讲解 ISP 和 ICP 操作流程。

    • 工具手册: NuMicro ISP Programming Tool Guide, NuMicro ICP Programming Tool Guide.




  3. 硬件连接:



    • ISP (UART): 连接 MCU 的 ISP 串口引脚 (RxD, TxD) 和 GND 到 PC 或 USB-UART 转换器。确保触发引脚(如 P3.2)在上电/复位时被拉低(通常通过按键或跳线)。

    • ICP (SWD): 连接编程器(Nu-Link)的 SWCLK, SWDIO, RST, GND, VDD 到目标板对应引脚。确保目标板电源稳定。




  4. 使用工具:



    • NuMicro ISP Programming Tool: 用于通过 UART 利用预烧 LDROM 更新 APROM。

    • NuMicro ICP Programming Tool: 核心工具,用于:

      • 配置 CONFIG 区域(启用 LDROM、设置触发引脚等)。

      • 烧录/更新官方或自定义的 ISP 固件到 LDROM

      • 烧录用户程序到 APROM

      • 执行锁定/解锁操作。





  5. 配置 CONFIG: 这是关键一步!务必正确设置:



    • CBS:选择从 LDROM 启动以进入 ISP 模式。

    • LDROM_SIZE:与实际 LDROM 大小匹配。

    • ISP 触发引脚选择位。

    • 其他选项如时钟源、看门狗等根据需要设置。错误配置可能导致芯片无法启动!




  6. 执行烧录/更新:



    • 对于 ISP:通过 ISP 工具连接串口,发送用户程序文件进行 APROM 更新。

    • 对于 LDROM 更新:通过 ICP 工具连接 SWD,选择 LDROM 区域,加载固件文件并编程。




重要注意事项



  • 风险提示: 错误的 CONFIG 设置(特别是错误的时钟源、错误的启动源)或失败的 LDROM 烧录(尤其自定义 ISP 不稳定时)可能导致芯片无法启动(“变砖”)。务必理解配置含义再操作。

  • 首次使用建议: 强烈建议使用 NuMaker 开发板进行实践,熟悉工具链和流程。

  • 引脚复用: ISP 使用的串口引脚(UART0)在用户程序中通常也是 GPIO 或复用功能引脚。确保用户程序初始化不会干扰 ISP 的触发引脚或通信引脚状态(尤其是在复位或上电时)。

  • 电源稳定性: 无论是 ISP 还是 ICP,稳定的供电至关重要,尤其是在进行 Flash 擦写操作时。电压波动可能导致编程失败甚至 Flash 损坏。

  • 工具链: 确保安装了最新版本的 NuMicro ISP/ICP 工具和芯片支持包(Device Family Pack)。


对于绝大多数应用场景,使用出厂预烧的 LDROM 并通过配置 CONFIG 选项字来启用标准 UART ISP 是最简单、最可靠的方式。只有在预烧 LDROM 损坏、需要官方更新或必须实现特定功能时,才需要执行烧录/更新 LDROM 的操作。开发自定义 ISP 是高级应用,需要扎实的编程功底和对硬件细节的深入理解。?

举报

更多回帖

发帖
×
20
完善资料,
赚取积分