一种C8051F系列单片机的远程在线编程方法及系统与流程

文档序号:18736633发布日期:2019-09-21 01:16阅读:628来源:国知局
一种C8051F系列单片机的远程在线编程方法及系统与流程

本申请属于单片机数据处理技术领域,特别涉及一种C8051F系列单片机的远程在线编程方法及系统。



背景技术:

C8051F系列单片机(例C8051F020)是一款功能强大的混合模拟数字电路芯片,在工业控制、航空电子等领域得到了广泛应用。C8051F单片机许多控制功能的实现是通过软件来实现的,在许多应用场合,通过软件更新来实现功能的升级改进是必不可少、也是经常性工作。

目前,C8051F程序的更新采用JTAG烧录方式,即采用配套的烧录软件通过芯片自带的JTAG口进行程序的更新。

现有JTAG烧录方式的主要缺点:

由于JTAG口信号长距离传输易受干扰,所以一般只在C8051F单片机附近设计安装JTAG口接插件,提供软件的调试烧写功能。因此在超越了单板调试阶段后,在模块及分机(部件级)甚至系统级状态下,C8051F单片机软件的更新编程就变得越来越困难。需要大量的拆卸安装工作,消耗不少的人力物力及时间,增加了软件升级的困难和工作量。



技术实现要素:

为了解决上述技术问题至少之一,本申请提供了一种C8051F系列单片机的远程在线编程方法及系统,该方法通过在单片机程序区设计一个引导程序,使单片机在引导程序的引导下通过R485总线实现远程在线编程功能。

本申请第一方面,一种C8051F系列单片机的远程在线编程方法,通过上位机更新所述单片机工作程序,所述方法包括:

步骤S1、获取需要烧录的工作程序,将所述工作程序对应的机器码起始地址设置为预制有引导程序的单片机的工作程序段的起始地址,所述单片机的引导程序被配置为能够与上位机通信以将上位机发送来的工作程序按其对应的机器码起始地址烧录到单片机对应的地址内,所述单片机的工作程序段设置在存储所述引导程序的引导程序段之后;

步骤S2、将所述工作程序转换为单片机可执行的机器码文件;

步骤S3、将所述机器码文件发送给所述单片机。

优选的是,所述工作程序段所占数据地址占整个单片机数据地址的90%以上。

优选的是,所述步骤S3进一步包括:

步骤S31、将所述机器码文件发送到缓存区;

步骤S32、按预定分组协议将缓存区的数据发送至单片机。

优选的是,所述步骤S32的预定分组协议包括:

将缓存区的数据划分为多帧,并依次发送至所述单片机。

优选的是,所述步骤S3之后,还包括:

步骤S4、获取单片机读取的数据;

步骤S5、将获取的数据与原始数据进行比较,校验单片机烧录的程序是否正确。

优选的是,所述步骤1之前包括:

步骤0、所述引导程序区内的中断入口地址按所述机器码起始地址对应偏移至工作程序段。

本申请第二方面,一种C8051F系列单片机的远程在线编程系统,主要包括:

工作程序获取模块,用于获取需要烧录的工作程序,并将所述工作程序对应的机器码起始地址设置为预制有引导程序的单片机的工作程序段的起始地址,所述单片机的引导程序被配置为能够与上位机通信以将上位机发送来的工作程序按其对应的机器码起始地址烧录到单片机对应的地址内,所述单片机的工作程序段设置在存储所述引导程序的引导程序段之后;

机器码文件获取模块,用于将所述工作程序转换为单片机可执行的机器码文件;

烧录模块,用于将所述机器码文件发送给所述单片机。

优选的是,所述烧录模块包括:

缓存单元,用于将所述机器码文件进行缓存;

上位机监控单元,用于按预定分组协议将缓存区的数据发送至单片机。

优选的是,还包括:

数据校验模块模块,用于获取单片机读取的数据,并将获取的数据与原始数据进行比较,以校验单片机烧录的程序是否正确。

优选的是,还包括:

中断处理模块,用于将所述引导程序区内的中断入口地址按所述机器码起始地址对应偏移至工作程序段。

本发明以很低的硬件成本及很少的空间尺寸即可实现C8051F系列单片机的远程在线编程,突破了原先的模块级甚至印制板级烧录程序的限制。省去了原先升级程序时所需的大量拆装工作,以及模块或印制板的供电工装。可以节省大量的时间、人力及资金。在大批量产品的程序更新、统一状态时,更能体现其优越性。本发明可应用于C8051F单片机的控制系统,可在工业控制、嵌入式控制、航空、航天控制等领域广泛应用。

附图说明

图1是本申请C8051F系列单片机的远程在线编程方法的流程图。

图2是本申请C8051F系列单片机的远程在线编程方法的上位机工作流程图。

图3是本申请C8051F系列单片机的远程在线编程方法的单片机工作流程图。

图4是本申请C8051F系列单片机的远程在线编程系统的上位机与单片机连接关系示意图。

具体实施方式

为使本申请实施的目的、技术方案和优点更加清楚,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行更加详细的描述。在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施方式是本申请一部分实施方式,而不是全部的实施方式。下面通过参考附图描述的实施方式是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。下面结合附图对本申请的实施方式进行详细说明。

根据本申请第一方面,一种C8051F系列单片机的远程在线编程方法,应用于上位机,如图1所示,所述方法主要包括:

步骤S1、获取需要烧录的工作程序,将所述工作程序对应的机器码起始地址设置为预制有引导程序的单片机的工作程序段的起始地址,所述单片机的引导程序被配置为能够与上位机通信以将上位机发送来的工作程序按其对应的机器码起始地址烧录到单片机对应的地址内,所述单片机的工作程序段设置在存储所述引导程序的引导程序段之后;

步骤S2、将所述工作程序转换为单片机可执行的机器码文件;

步骤S3、将所述机器码文件发送给所述单片机。

需要说明的是,本申请步骤S1中所涉及的单片机预制有引导程序,且自始至终不变,不受单片机应用程序更新的影响,为此,引导程序的首次烧录应符合以下几点要求:

1)以C8051F020单片机为例,将C8051F020的程序存储区(64KB片内Flash)设置为两部分:引导程序段和工作程序段,在一些可选实施方式中,所述工作程序段所占数据地址占整个单片机数据地址的90%以上。例如0x0000~0x1fff为引导程序存储区,0x2000~0xA000为工作程序存储区。两个存储区空间大小可调整,但必须保证两个存储区地址空间不重叠,并且引导程序存储区从0x0000起始。由于单片机上的复位后是从程序空间的0x0000开始执行代码的,所以引导程序设置在低地址空间,工作程序设置在高地址空间。这样可防止在烧录工作程序失败时,系统重新上电后无法进入引导程序而导致系统在线编程功能失效。

2)由于引导程序内容是不能被烧录擦写的,否则将失去在线编程功能。所以在引导程序中需对待烧录的地址做限制,使烧录地址限制在工作程序的地址空间内。

3)由于引导程序与工作程序虽然在地址上是分开的,但他们共用相同的中断入口地址及中断服务子程序。因此引导程序中不使用中断,串口改用查询方式,并将引导程序中的各中断服务子程序都跳转至工作程序中断服务子程序的起始地址(0x2000之后)以直接执行工作程序的中断服务子程序。

4)在引导程序中不使用中断的情况下,也可在引导程序中不编写中断服务子程序,改在编译工具KEIL uVision2中的startup.a51文件中增加以下程序:

以上程序的目的是直接在各中断入口位置增加跳转至工作程序中断入口的程序,使工作程序可正常响应外部中断。引导程序编译完成后生成Debug.hex文件,然后通过JTAG口烧录到单片机中。

5)其它功能,例如具有与上位机通信的功能,响应上位机的读写等简单指令,包括获取上位机的数据并写入对应地址以及根据上位机要求将对应地址的数据发送给上位机。

如上所述,单片机的引导程序仍然采用原始的JTAG方式烧录,但只烧录一次,后续工作程序将通过上位机完成远程更新。

步骤S1中,上位机(PC端)编程控制软件可以从其他设备读取需进行更新的单片机工作程序,也可以直接在PC端编写对应的工作程序。工作程序为实现系统所需正常功能的程序。由于工作程序的地址是从0x2000开始的,其中断服务程序地址也是从0x2000开始,所以在工作程序编程时需在KEIL uVision2中通过options的C51选项中“Interrupt vectors at”设置为0x2000,BL51Locate选项中“Code Range”设置为0x2000。工作程序编译完成后生成Work.hex文件。

在一些可选实施方式中,步骤S3进一步包括:

步骤S31、将所述机器码文件发送到缓存区;

步骤S32、按预定分组协议将缓存区的数据发送至单片机。

可以理解的是,上位机在进行远程烧录时,在将需烧写的单片机工作程序的HEX文件,转换为相应的机器码文件后,将指针指向内存中存储工作程序的起始地址,自该起始地址读取数据,并按预定分组协议(通信协议)对数据进行分组,之后将各组数据发送给单片机,单片机相应的将数据存储在工作程序起始位置。

在一些可选实施方式中,所述步骤S32的预定分组协议包括:

将缓存区的数据划分为多帧,并依次发送至所述单片机,例如图2中每64字节作为一帧。

在一些可选实施方式中,所述步骤S3之后,还包括:

步骤S4、获取单片机读取的数据;

步骤S5、将获取的数据与原始数据进行比较,校验单片机烧录的程序是否正确。

图2与图3分别为对应的上位机与单片机工作流程,简要概述如下:

a.分机(单片机系统)上电,先进入引导程序并发送握手数据(“#On_lineProgram?”),程序在200ms内未收到编程指令后进入工作程序,等待指令;

b.主控端运行PC端编程控制软件,读取需烧写的单片机工作程序Work.hex,并转换为机器码文件;运行在线编程线程,发送“复位至编程模式指令”RST_PROGRAM(0XA3),等待单片机系统复位并回复;

b.单片机系统的工作程序设置软件复位,进入引导程序,然后发送握手数据(“#On_lineProgram?”);

c.PC端编程控制软件响应握手数据;发起编程流程,向单片机系统发送编程数据;

d.单片机系统的引导程序接收编程数据并写入到工作程序存储区;

e.PC端编程控制软件发送完编程数据后,发起读取编程数据流程,将单片机系统接收写入的编程数据读取出来;

f.单片机系统引导程序将工作程序存储区的数据回送给PC端编程控制软件;

g.PC端编程控制软件接收到工作程序数据后,将其与原先发送的编程数据进行比对校验,若数据校验不正确,则表明在通信过程中可能存在误码,需重新进行编程;若数据校验正确,则表明烧录数据正确,编程成功。

通过以上步骤即可实现C8051F系列单片机的在线编程。

需要说明的是,图2中,步骤“接收请求编程参数”至步骤“将机器码读取地址设置为工作程序的机器码起始地址”具体为:

机器码起始地址与单片机工作程序的起始地址是一致的,该步骤在于告诉单片机从该地址开始存储工作程序,上位机监控程序将指针指向内存中存储工作程序的起始地址,自该起始地址读取数据,并将该数据发送给单片机,单片机相应的存储在工作程序起始位置。

根据本申请第二方面,提供了一种与上述方法对应的C8051F系列单片机的远程在线编程系统,主要包括:

工作程序获取模块,用于获取需要烧录的工作程序,并将所述工作程序对应的机器码起始地址设置为预制有引导程序的单片机的工作程序段的起始地址,所述单片机的引导程序被配置为能够与上位机通信以将上位机发送来的工作程序按其对应的机器码起始地址烧录到单片机对应的地址内,所述单片机的工作程序段设置在存储所述引导程序的引导程序段之后;

机器码文件获取模块,用于将所述工作程序转换为单片机可执行的机器码文件;

烧录模块,用于将所述机器码文件发送给所述单片机。

图4给出了上位机与单片机连接关系示意图,系统整体包括一片C8051F系列单片机,一个UART芯片,一个RS485通信电平转换芯片,以及其他外围电路。实际技术方案为:一片C8051F020(单片机),一片16C2550(UART),一片MAX485(RS485电平转换芯片),以及相应的供电等外围电路。单片机的RS485总线需连接到分机或系统的对外插座上,以便于与PC的RS485端口进行连接,以及一个用于连接单片机系统的RS485串口及PC端的RS485串口的电缆或电路装置;一个RS232/485串口转换器,连接至PC的RS232串口,用于将PC的RS232电平转换为RS485电平。

连接时,将单片机系统的RS485串口与PC的RS485串口通过电缆进行连接;PC端的编程控制软件读取需进行更新的单片机工作程序(HEX文件);运行PC端的编程控制软件并通过RS485总线与单片机的引导软件进行通信握手;PC端的编程控制软件按定义好的通信协议将单片机程序分批传输给单片机引导程序,引导程序收到编程数据后将编程数据写入单片机程序存储器,完成单片机工作程序的更新升级;PC端的编程控制软件发送指令使单片机引导程序将写入单片机的程序按定义好的通信协议分批传输给编程控制软件,编程控制软件收到后将数据与先前写入的编程数据进行数据校验,若接收数据与编程数据完全相同,则表明写入编程数据正确。

PC端的编程控制软件编程结束后,发送复位到工作指令,使引导程序跳转执行单片机工作程序。

在一些可选实施方式中,所述烧录模块包括:

缓存单元,用于将所述机器码文件进行缓存;

上位机监控单元,用于按预定分组协议将缓存区的数据发送至单片机。

在一些可选实施方式中,还包括:

数据校验模块模块,用于获取单片机读取的数据,并将获取的数据与原始数据进行比较,以校验单片机烧录的程序是否正确。

在一些可选实施方式中,还包括:

中断处理模块,用于将所述引导程序区内的中断入口地址按所述机器码起始地址对应偏移至工作程序段。

本申请通过在单片机程序区设计一个引导程序,使单片机在引导程序的引导下通过R485总线实现远程在线编程功能。这样,可在分机外部实现C8051xxx芯片的程序更新。由于RS485总线通信速率高、抗干扰能力强、通信距离远(理论值可达1KM),因此可在主控室通过通信电缆与分机连接后实现单片机的程序更新,无需额外的拆装操作,可大幅提高升级分机软件的工作效率。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1