在线编程目前有两种实现方法:
ISP:in system programming 在系统编程
IAP: in applicatin programming 在应用编程
ISP一般是通过专用的串行编程接口(如JTAG接口)对芯片内部的Flash存储器进行编程。
IAP即串口程序下载,以SST公司的89E564为例:FLASH分为2块,一块64K,就是我们应用程序要使用的程序空间;另一块是8K,现在出厂时一般都预置了自编程的软件代码,这部分代码与上位机的下载软件通讯,获取机器码内容,然后实现对64K的编程操作。
1、由于现在有的电脑上没有串口接口,但是都有UBS接口,所以就要用UART转USB芯片做一个转换。
2、ARM的下载主要采用的基于JTAG协议的下载方式。
JTAG的主要功能有两种:
1)用于测试芯片的电气特性,检测芯片是否有问题;
2)用于Debug,对各类芯片以及其外围设备进行调试;
JTAG的工作原理可以归结为:在器件内部定义一个TAP(TestAccessPort,测试访问口),通过专用的JTAG测试工具对内部节点进行测试和调试。
总而言之,JTAG可以给CPU指令使其修改、擦除RAM等,完成程序烧写和调试。那么如何将电脑与JTAG相连呢?
做一个板,用此板直接接收来自IAR、KEIL和ADS等软件的调试命令,由此板做RDI->JTAG协议的转换。然后与目标板通信,这就是JLINK的工作原理。也是ULINK、STLINK的工作原理。
当然,ARM也是可以通过串口下载程序的,比如说STM32:stm32有两个boot引脚,上电时它根据这两个引脚的状态从不同位置启动, 当这两个引脚为某个状态时,它上电时就启动IAP程序,通过串口下载程序。
3、FPGA的程序下载方式有三种:JTAG、AS、PS模式。
AS模式:
程序被烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程;
PS模式:
EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程。该模式可以实现对FPGA在线可编程;
JTAG:
直接烧到FPGA里面的SRAM中,断电后要重烧;
JTAG模式与ARM类似,只是用的板子不同,Altera FPGA使用的是USB Blaster!