ICP 的意思是 "在电路编程"(in Circuit Programming),PC 电脑可以运行 “NuMicro ICP Programming Tool”软件通过 Nu-Link 的 SWD 接口(serial wire debug) 去更新目标板上的 APROM, LDROM, Data Flash 和用户配置字。
ISP 的意思是“在系统编程”(In System Programming),目标板通过运行 LDROM 里的启动/加载代码调用外部的接口,如 USB/UART/SPI/I2C... 去更新内部的 APROM, DataFlash 和 用户配置字。
你可以参考论坛里NuMicro_ISP_Tool_Source_Code,v1.42 使用ISP 实现用USB对板子的固件进行升级。
ICP是自己CPU不跑,通过别的工具对JTAG状态机去烧录。ISP是自己CPU跑,通过接口自己下载自己烧录。
芯唐的单片机出厂不带BOOTLOADER(即启动/加载代码)的,需要用户自己用ICP方式或者专用编程器烧写到LDROM里的(代码厂家有提供的),很不方便;另外,使用ICP烧写程序还会把客户原先存储在EEPROM(用FLASH模拟共享的)里的参数也一并檫除掉的,这点需要特别注意。如果客户对所存储的参数不是很在意的话,那用ICP也是很方便的。不过我选择芯唐的单片机后,又放弃了,主要就是出厂不带ISP,而用ICP又会檫除我存的参数。
ISP
采用 ISP 下载,芯片必须处于可执行程序的状态 (除了上电, 还要接 XTAL),且必须预烧ISP-code 在 LDROM 里面,也就是内部必须先烧好类似 Bootloader 的程序,然后内部运行的程序可以在 USB 口或 UART 口接收来自 PC 的通信协议并进行烧写动作。而 ISP-Code 必须通过 ICP 烧录器进行下载。
ISP 烧录范围只限于 APROM,DataFlash 或 CONFIG。芯片在 LOCK 的状态下,仍然可以只更新某一区块 (APROM, DataFlash 或 CONFIG)。
ISP 下载工具是个绿色软件,不需要安装。
ICP
芯片只要处于上电状态即可,不必预烧任何 code 在芯片里面。烧录范围涵盖整颗 MCU,包括 APROM, DataFlash,CONFIG,LDROM 和 ROMMAP。
芯片在 LOCK 的状态下, 无法只更新某一区块, 只能在 Erase-ALL 之后, 更新某一区块, 再逐一烧回其它区块,这是因为 ICP 的本质就是走 “串行接口的 Writer Mode ” , 芯片被 LOCK之后,除了 erase-ALL ,所有烧录动作皆会被禁止。
所以 ICP 下载需要 ICP 下载器,Nu-Link 仿真器可以作为 ICP 下载器使用。