单片机在线编程的方法

文档序号:8361254阅读:1472来源:国知局
单片机在线编程的方法
【技术领域】
[0001]本发明涉及单片机开发领域,特别是涉及单片机在线编程的方法。
【背景技术】
[0002]目前,对于单片机产品的开发一般采用以下方法:首先利用单片机仿真设备进行硬件和软件的仿真调试,然后将调试通过的目标代码用程序烧写器固化到单片机的程序存储器中。在这个过程中,程序烧写器是必不可少的开发工具,而程序烧写器一般价格较昂贵。另外,以后每修改一次源程序就要将单片机芯片从目标板上取出,再将更新后的目标代码重新固化到单片机芯片中,这样调试时就会由于频繁地插拔单片机芯片而对芯片和电路板带来相应的物理损坏。借助程序烧写器进行单片机编程的缺点是烧写设备昂贵,烧写操作麻烦,不便于实现在系统编程(ISP)。
[0003]为了克服上述缺点和局限性,一些新型兼容品在芯片内部设置了实现“串行编程接口逻辑”硬件功能,从而支持单片机芯片在系统编程(ISP)。ISP是系统在线可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,对于已经编程的器件也可以用ISP方式擦除或再编程。ISP技术的优势是不需要编程器也可以进行单片机的实验和开发,既节省了单片机开发的成本,又免去了调试时频繁插拔芯片的麻烦。单片机编程有两种模式:并联模式和串联模式。目前对于单片机加载,大部分都采用串联模式,也就是ISP模式,大部分ISP实现方法都是采用AVR的单片机仿真器进行程序烧写。还有部分是通过对PC的并行接口进行相应的改变来模拟实现ISP串行加载时序,另外,当单片机作为协处理器或控制系统的一部分时,主处理器利用1管脚模拟单片机加载时序对单片机进行程序加载。
[0004]直接用单片机仿真器进行加载,在进行产品量产的时候,仿真器的成本可以忽略,但是对于每一块板卡,都需要通过仿真器将单片机与PC连接起来,在PC端打开烧写软件将加载程序写入。在产品大量生产的时候,这种方法非常麻烦,将花费大量的时间,并且仿真器烧写的速度非常低,因为仿真器不知道单片机用的是什么频率的时钟,因此,仿真器都是使用尽量低的烧写频率。并且还需要繁琐的连接,耗时的操作。直接通过板卡上的微处理器的1引脚来模拟单片机加载时序对单片机进行加载的方式,该方式的时序是通过1引脚进行模拟的,可靠性不高,如果被上位机的其他线程打断或其他原因将会影响加载时序,发生不可预料的错误,将导致单片机加载失败甚至毁坏单片机的Flash。

【发明内容】

[0005]本发明主要解决的技术问题是提供一种单片机在线编程的方法,能够降低成本、提高速度、简化操作并且具有高可靠性。
[0006]为解决上述技术问题,本发明采用的一个技术方法是:提供一种单片机在线编程的方法,该方法包括以下步骤:处理器读入要加载的单片机固件程序文件,所述单片机的固件程序文件格式为BIN文件。所述处理器通过SPI接口将所述单片机固件程序文件的BIN文件写入到单片机的FLASH中。
[0007]其中,所述处理器通过SPI接口将所述BIN文件写入到单片机的FLASH中的步骤之后还包括:所述处理器对所述写入到单片机的FLASH中的BIN文件进行校验。
[0008]其中,所述处理器对所述写入到单片机的FLASH中的BIN文件进行校验的步骤进一步包括:所述处理器通过所述SPI接口从所述单片机的FLASH中读取所述写入的BIN文件。所述处理器比较读取的BIN文件和写入的BIN文件的内容是否相同,若相同则判断为加载成功,并结束加载;若不同则判断为加载失败,并重新加载。
[0009]其中,所述单片机包括ISP引脚和时钟电路引脚。所述ISP引脚包括:RST引脚、MOSI引脚、MISO引脚和SCK引脚;所述RST为在线编程输入控制引脚;所述MOSI引脚为主机输出/从机输入的数据引脚;所述MISO引脚为主机输入/从机输出的数据引脚;所述SCK引脚为串行编程的时钟引脚。所述时钟电路引脚包括XTALl和XTAL2引脚;
[0010]所述处理器通过SPI接口将所述BIN文件写入到单片机的FLASH中的步骤之前包括:所述单片机上电,所述单片机的RST引脚拉高,并在所述单片机XTALl和XTAL2引脚之间连接晶振;或者,在XTALl引脚提供一个3MHz-163MHz的时钟,并且至少等待10 μ S。通过所述单片机的M0SI/P 1.5引脚执行编程使能命令,再执行其它编程命令。
[0011]其中,所述单片机的SCK/P1.7引脚上的移位时钟小于所述处理器的1/16。
[0012]其中,所述处理器通过所述SPI接口从所述单片机的FLASH中读取所述写入的BIN文件的步骤中,所述处理器通过读MIS0/P 1.6引脚来进行校验。
[0013]其中,所述处理器通过SPI接口将所述BIN文件写入到单片机的FLASH中的步骤中,所述BIN文件以一次一字节的模式写入;或者以一次一页的模式写入。
[0014]其中,所述处理器比较读取的BIN文件和写入的BIN文件的内容是否相同,若相同判断为加载成功,并结束加载的步骤之后,还包括:拉低所述单片机的RST引脚,以使所述单片机在正常模式工作。
[0015]其中,所述处理器读入要加载的单片机固件程序文件的步骤之后,还包括:校验所述单片机固件程序文件的大小是否正确,若正确,则进入所述处理器通过SPI接口将所述单片机固件程序文件的BIN文件写入到单片机的FLASH中的步骤。
[0016]其中,所述处理器读入要加载的单片机固件程序文件的步骤中,所述要加载的单片机固件程序文件放在SD卡或者NAND Flash中。
[0017]本发明的有益效果是:区别于现有技术的情况,本发明的在线编程的方法通过SPI接口对单片机进行加载,SPI接口的速度快,并且还不受仿真器加载频率的限制,所以可以实现很高的加载速度。此外,本发明的在线编程的方法不像GP1模拟加载时序实现的加载方式那样容易受到操作系统下其他线程的影响,因此成功率可以大大提高,因而具有较高的可靠性,并且有更低的处理器资源占用率。此外,该方法是在操作系统启动后自动执行,不需要任何连线(仿真器或者上位机并口等),因此方便快速,非常适合量产时对单片机进行程序固化。
【附图说明】
[0018]图1是本发明单片机在线编程的方法第一实施例的流程图;
[0019]图2是AT89LS52单片机的ISP加载模式的加载电路图;
[0020]图3是AT89LS52单片机的ISP加载模式的时序图;
[0021]图4是SPI的四种模式的时钟及采样点的关系图;
[0022]图5是图4中模式O和模式2的完整SPI信号的时序图;
[0023]图6是本发明单片机在线编程的方法第二实施例的流程图;
[0024]图7是图6中步骤S22的流程图;
[0025]图8是图6中步骤S23的流程图。
【具体实施方式】
[0026]下面结合附图和具体实施例对本发明进行详细说明。
[0027]本发明的单片机在线编程的方法,主要是针对支持在系统编程(ISP)的单片机,例如AT89S系列单片机。
[0028]请参阅图1,是本发明单片机在线编程的方法第一实施例的流程图。
[0029]本实施例的单片机在线编程的方法包括以下步骤:
[0030]S10、处理器读入要加载的单片机固件程序文件,所述单片机的固件程序文件格式为BIN文件。
[0031]SI 1、所述处理器通过SPI (Serial Peripheral Interface)接口将所述单片机固件程序文件的BIN文件写入到单片机的FLASH中。
[0032]具体地,上述步骤中,BIN文件可以以一次一字节的模式写入。或者,也可以以一次一页的模式写入。一个写周期的时间一般小于1ms。
[0033]本发明的在线编程方法是通过SPI接口对单片机进行加载,直接加载BIN文件。目前SPI接口速度最高可以达到50M,一般都能达到30M,因而加载速度很快。现有技术中仿真器烧写工程中编译后生成的是HEX文件,该文件大小为10KB,烧写完成并读取校验,大概需要半分钟左右。因为一般的方式都是通过仿真器加载,因此KEIL软件只生成HEX文件,要想烧写BIN文件需要将HEX文件转换为BIN文件,转换出来的BIN文件大小为4KB。而本发明通过SPI的加载方式可以在1s内完成烧写以及校验。
[0034]此外,SPI对于处理器是一个自带的外设,处理器只需要通知SPI外设现在要发送数据,至于数据的时序以及实际发送都是由SPI外设来控制的,所以,处理器在通知完SPI外设发送数据或接收后就可以不参与具体的发送或接收数据过程,处理器正常情况下不干预实际的发送过程。
[0035]区别于现有技术,本发明的在线编程的方法通过专用接口(SPI接口)对单片机进行加载,SPI接口速度快,并且不受仿真器加载频率的限制,因而可以实现很高的加载速度。本发明也不像GP1模拟加载时序实现的加载方式那样容易受到操作系统下其他线程的影响,因此成功率可以大大提高,因而具有较高的可靠性,并且有更低处理器资源占用率。此夕卜,该加载方法是在操作系统启动后自动执行,不需要任何连线(仿真器或者上位机并口等),因此方便快速,非常适合量产时对单片机进行程序固化。
[0036]以下是对本发明通过SPI接口对单片机进行程序加载的可行性的分析:请参阅图2至图5,图2是AT89LS52单片机的ISP加载模式的加载电路图。图3是AT89LS52单片机的ISP加载模式的时序图。图4是SPI的四种模式的时钟及采样点的关系图。图5是图4中模式O和模式2的完整SPI信号的时序图。OL = O为模式O ;POL = I为模式2。对比采样点和时钟的关系,再与AT89LS52单片机ISP加载模式的时序图(图3)对比,可以看到,单片机加载时所要求的时序图与SPI模式O的时序是兼容的。因此,用SPI接口为单片机加载程序在理论上是可行的。
[0037]单片机SCK引脚的频率不能超过单片机晶振频率的1/16。系统中,单片机的时钟频率为10MHz,因此,SCK的频率不能超过625KHz,而上位机为SPI提供的源时钟为48MHz,在SPI外设接口的配置寄存器中还可以为SPI的通信时钟进行分频,将源时钟进行128分频,可以得到375KHz的时钟频率,该频率小于SCK所要求的最高频率,因此,通过DM8147的SPI接口对单片机加载是可行的。
[0038]请参阅图6,是本发明单片机在线编程的方法第二实施例
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1