著录项信息
专利名称 | 远程加载或升级程序的系统及其方法 |
申请号 | CN03132982.9 | 申请日期 | 2003-07-23 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2005-01-26 | 公开/公告号 | CN1570863 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/445 | IPC分类号 | G;0;6;F;9;/;4;4;5;;;G;0;6;F;9;/;4;0查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 王正波 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明涉及一种电子设备中加载或升级程序的系统及其方法,公开了一种远程加载或升级程序的系统及其方法,使得电子设备中的程序可以远程升级,无需工程师到场,另外还可以实现多个设备中程序的同时升级。这种远程加载或升级程序的系统包含:待升级子系统,包含互相连接的CPU和程序存储器,其中所述程序存储器中存储有每次所述待升级子系统启动以前必须运行的BIOS区程序;主控子系统,包含能够从网络获取升级程序的网络程序下载装置、存储所述升级程序的程序存储器、以及与所述待升级子系统交互将所述升级程序加载到所述待升级子系统的交互加载器;主控子系统和至少一个待升级子系统相连接。
技术领域\n本发明涉及一种电子设备中加载或升级程序的系统及其方法,特别涉及 一种含中央处理器的电子设备中远程加载或升级程序的系统及其方法。\n背景技术\n含中央处理器(Central Processing Unit,简称“CPU”)的电子设备已 经广泛应用于各行各业,这里说的CPU可以是单片机、数字信号处理(Digital Signal Processing,简称“DSP”)芯片等。其中又以含单片机的电子设备最 为典型,以下将以单片机为例讲述含有CPU的电子设备共同的特点和存在 的问题。\n单片机在广义上讲是将CPU与主存储器以及简单的接口融于一体的独 立的控制单元。狭义上讲它本身就是一个计算机系统,一个能够独立完成作 业的应用计算机。单片机中集成了存储程序的器件,例如闪速存储器(Flash Memory,简称“FLASH”),通过对单片机编程,可以在比较短的时间内 设计出较为智能化的电子设备。\n随着单片机处理内容的日益复杂,其程序的升级在所难免。目前有两种 方式实现对单片机程序的加载和升级。\n方法一,目前最常见的单片机程序加载或升级的方法是用烧片器进行烧 片。烧片器是一个单独的设备,它与计算机通过串行口、并行口或者通用串 行总线(Universal Serial Bus,简称“USB”)口进行通信。操作员可以通 过这些通信端口将计算机上的单片机程序下载到烧片器。烧片器提供各式夹 具,用于固定不同的单片机,另外烧片器还给单片机提供电源、编程需要的 电压、外部控制信号等,从而完成对单片机的编程。\n方法二,现在有的单片机还提供了在系统编程技术(In System Program, 简称“ISP”),该技术可以通过单片机提供的串口和一段固化小程序实现 芯片的在线升级。其基本原理是芯片供应商在芯片内固化了一段程序,该程 序完成对单片机串口的初始化,以及实现一定的加载协议。这样单片机在启 动后根据外部引脚条件或者芯片内的一些标志寄存器判断是否进入该段程 序,如果进入到该段程序中,便可通过串口和外部计算机上的软件进行通信, 然后按照加载协议将加载数据写入到单片机的FLASH中,写入时采用单片 机写FLASH指令(现在很多单片机都支持)。\n在实际应用中,上述方案存在以下问题:程序升级困难,特别当设备广 泛销售以后,程序升级的成本很高,另外无法远程升级,无法对多个设备同 时升级。\n造成这种情况的一个主要原因在于,需要专业人员到现场操作。对于方 法一,需要专业人员到现场从待升级设备上拆下待升级的芯片,重新烧片后 再安装到待升级设备上。对于方法二,虽然不需要拆卸待升级的芯片,但也 需要专业人员到现场,将外部计算机通过串口线连接到待升级设备的电路板 上,使用专用的软件进行升级。当设备被广泛销售以后,用户的地理位置往 往很分散,无论采用召回设备还是派专业人员上门维护,成本都很高。\n另外,专业人员到现场后,由于芯片必须一片一片地烧,电路板必须一 块一块地连接和处理,因此无法同时对多个设备同时升级。\n发明内容\n本发明要解决的技术问题是提供一种远程加载或升级程序的系统及其 方法,使得电子设备中的程序可以远程升级,无需工程师到场,另外还可以 实现多个设备中程序的同时升级。\n为了解决上述技术问题,本发明提供了一种远程加载或升级程序的系 统,包含:\n待升级子系统,包含互相连接的中央处理器和程序存储器,其中所述程 序存储器中存储有每次所述待升级子系统启动以前必须运行的基本输入输 出系统区程序;\n主控子系统,包含能够从网络获取升级程序的网络程序下载装置、存储 所述升级程序的程序存储器、以及与所述待升级子系统交互将所述升级程序 加载到所述待升级子系统的交互加载器;\n所述主控子系统和至少一个所述待升级子系统相连接。\n其中,所述待升级子系统是单片机系统。\n所述程序存储器是外挂的随机存取存储器、闪速存储器或电可擦除可编 程只读存储器。\n所述待升级子系统是基于数字信号处理芯片的系统。\n本发明还提供了一种远程加载或升级程序的方法,包含以下步骤:\nA待升级子系统判断加载标志是否有效,如果是则向主控子系统发送 加载请求信元,进入步骤B,否则开始执行应用程序,流程结束;\nB所述主控子系统响应所述加载请求信元,根据所述加载信元中携带 的信息判断是否允许所述待升级子系统加载或升级程序,如果允许,则向所 述待升级子系统发送允许加载信元,否则向所述待升级子系统发送不允许加 载信元;\nC所述待升级子系统响应所述主控子系统对所述加载请求信元的反 馈,判断所收到的信元的类型,如果是允许加载信元则将所述加载标志改写 有效,向所述主控子系统发送准备就绪信元,进入步骤D,如果是不允许加 载信元则重新启动所述待升级子系统,流程结束;\nD所述主控子系统判断是否还有剩余的升级程序的数据信元没有发送 并且无发送错误,如果是则向所述待升级子系统发送升级程序的数据信元, 否则流程结束;\nE所述待升级子系统收到所述数据信元后,根据所述数据信元中携带的 信息判断所述数据信元是否合法并且顺序正确,如果是则将收到的所述数据 信元写入所述待升级子系统的程序存储器,进入步骤F,否则向所述主控子 系统反馈最后加载失败信元及失败原因,重新启动所述待升级子系统,进入 步骤D;\nF所述待升级子系统向所述主控子系统反馈数据成功加载信元,并根据 所述数据成功加载信元携带的判断所述待加载程序的全部数据信元是否已 经收取完毕,如果是则将所述加载标志设置为无效,并重新启动所述待升级 子系统,流程结束,否则进入步骤D。\n其中,所述主控子系统中的所述升级程序是预先从网络中下载并存储在 所述主控子系统的程序存储器中的。\n所述步骤A还包含以下步骤:\nA1当所述待升级子系统判断所述加载标志无效时,所述待升级子系统 等待用户输入;\nA2所述待升级子系统判断是否在规定时间内没有用户输入,如果是则 进入步骤A4,否则继续等待,直至有用户输入时进入步骤A3;\nA3所述待升级子系统根据用户的输入判断是否需要强制加载程序,如 果需要强制加载,则进入步骤B,如果不需要强制加载,则进入步骤A4;\nA4开始执行应用程序,流程结束。\n所述步骤B中,所述主控子系统向所述待升级子系统发送的所述允许 加载信元中包含待加载程序的版本号和程序大小信息;\n所述步骤C中还包含以下步骤:\n当收到的信元类型是允许加载信元时,所述待升级子系统根据待加载程 序的所述版本号和程序大小信息,判断加载是否合法,如果合法则将所述加 载标志改写有效,向所述主控子系统发送准备就绪信元,进入步骤D,否则 重新启动所述待升级子系统,流程结束。\n所述方法还包含以下步骤:\n当所述待升级子系统收到不允许加载信元或改写加载标志失败时,打印 错误信息。\n所述步骤D还包含以下步骤:\n所述主控子系统收到所述准备就绪信元后,通知上层软件所述待升级子 系统准备加载或升级程序。\n所述步骤F还包含以下步骤:\n当所述待升级子系统收取完全部数据信元后,所述待升级子系统修改本 地的软件版本信息。\n所述步骤F还包含以下步骤:\n所述待升级子系统成功收取并保存数据信元后,根据数据信元中是否需 要回应的标志,仅对需要回应的信元反馈数据成功加载信元。\n所述待升级子系统和所述主控子系统相互发送的信元中包含以下信息:\n区分程序和数据的标志;软件版本;信元类型;信元编号。\n所述步骤A中所述应用程序的入口地址是固定的,执行应用程序时, 直接跳转到所述应用程序的固定入口地址,开始执行。\n所述待升级子系统在远程加载和升级的整个过程中不使用任何中断。\n通过比较可以发现,本发明的技术方案与现有技术的区别在于,将程序 通过网络下载并存储到主控子系统,待升级子系统每次启动时运行基本输入 输出系统区程序,该程序中根据加载标志判断是否需要加载或升级,然后通 过特定的流程将待加载程序从所述主控子系统下载到所述待升级子系统。\n这种技术方案上的区别,带来了较为明显的有益效果,即可以不派专业 工程师到现场,程序可以通过网络(例如因特网)远程下载到待升级设备, 而且整个升级过程可以不需要人的参与,完全由系统自动完成。如果系统中 存在多个待升级设备,则这些待升级设备可以同时升级。特别对于待升级设 备已经被广泛销售、分散在各地的情况,因为不需要专业人员到现场,大大 降低了设备中程序升级的成本。\n附图说明\n图1是根据本发明的一个实施例的远程加载或升级程序的系统结构示 意图;\n图2是根据本发明的一个实施例的远程加载或升级程序的方法流程图。\n具体实施方式\n为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发 明作进一步地详细描述。\n如图1所示,在本发明的一个较佳实施例中,远程加载或升级程序的系 统(以下简称“系统”)包括待升级子系统10、主控子系统20以及将两个 子系统连接起来的背板30。待升级子系统10中含有至少一块CPU以及程序 存储器,程序存储器用于存放CPU的执行程序。程序存储器可以是CPU自 带的,例如单片机,也可以是外挂的,例如随机存取存储器(Random Access Memory,简称“RAM”)、FLASH、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)等。待升级子系统10的 典型例子是一块带有单片机的用户板(即单片机系统),或者是一块带有 DSP芯片的用户板,其程序存储在外挂FLASH中。\n在程序存储器中有一块固定基本输入输出系统(Basic Input Output System,简称“BIOS”)区,其中存放BIOS程序,该程序一般是固定的, 不需要升级的。相对于BIOS程序,程序存储器中其他供CPU运行的程序在 本发明中称为应用程序,应用程序一般是升级的对象。在本发明中,BIOS 程序是每次待升级子系统10启动时必须首先运行的,远程加载或升级程序 的流程主要在BIOS程序中实现。\n主控子系统20主要包含能够从网络获取升级程序的网络程序下载装 置、存储待升级程序的程序存储器、以及与待升级子系统10交互将升级程 序加载到待升级子系统10的交互加载器。网络程序下载装置可以从网上(例 如因特网)远程下载升级程序,保存到本地的程序存储器中。在本发明的一 个较佳实施例中,工程师在异地利用因特网,通过单纯文件传输协议 (TrivialFile Transfer protocol,简称“TFTP”),将升级程序下载到主控子 系统20的程序存储器中。\n需要说明的是,系统中的待升级子系统10可能有多个,而主控子系统 20一般只有一个,多个待升级子系统10分别和主控子系统20相连接,例 如多个待升级子系统10和一个主控子系统20可以同时连接在背板30上。 熟悉本发明领域的技术人员会理解,背板30的作用提供物理连接通道,可 以使用其他连接方式而不超出本发明的范围和实质。\n上面说明了系统的组成,以下结合图2,详细说明远程加载或升级程序 的方法流程。\n当工程师通过网络将新版本的升级程序远程下载到主控子系统20中的 程序存储器以后,主控子系统20并不是马上把升级程序加载到各个待升级 子系统10中去,而是一直等待,直到待升级子系统10重新启动时自己来下 载升级程序。常见的做法是工程师确定升级程序已经成功下载到主控子系统 20后,通知相关人员重新启动系统,以便自动完成升级。\n当待升级子系统10重新启动时,首先运行BIOS程序,在步骤110中, 待升级子系统10判断加载标志是否有效,如果有效则进入步骤130,如果 无效则进入步骤120。所述加载标志是存储在程序存储器中的一个标志,加 载标志不会因为断电、系统重新启动而丢失,它的取值可以通过CPU设定。 加载标志的作用是指示待升级子系统10是否需要自动进入加载状态,如果 加载标志是有效的,则系统自动进入加载流程,如果加载标志是无效的,系 统等待用户决定是否要强制加载。\n在步骤120中,待升级子系统10等待用户的输入。例如,用户可以通 过串行口,也可以通过USB、并行口等通信端口向待升级子系统10输入代 表是否要强制加载的信号。如果用户在规定时间内,例如10秒种,不输入 任何信号,则待升级子系统10默认为不进行强制加载。一旦用户有了输入 或发生超时,则进入步骤140。\n在步骤130中,待升级子系统10向主控子系统20发送加载请求信元。 在本发明中,所有的消息和数据都是通过信元传递的。这里的信元是指一组 有预定义格式的信号。为了区分不同类型和功能的信元,信元中一般包含以 下信息,区分程序和数据的标志、软件版本、信元类型、信元编号等。此后 进入步骤160。\n在步骤140中,待升级子系统10判断用户是否要求强制加载,如果是 则进入步骤130,否则进入步骤150。\n在步骤150中,待升级子系统10开始执行应用程序,流程结束。如果 待升级子系统10发现不需要加载或升级现有的程序,则按照常规开始执行 应用程序。在本发明的一个较佳实施例中,应用程序的入口是固定的,CPU 通过一个跳转指令跳转到应用程序的入口地址,然后开始按顺序执行应用程 序的每一条指令。这种固定入口的方式实现起来比较简单,而且能够满足绝 大多数应用系统的需要,当然熟悉本发明领域的技术人员也可以通过在升级 程序中指定应用程序的入口地址,在待升级子系统10中的程序升级以后使 用新指定的入口地址执行应用程序,这依然不超出本发明的实质和范围。\n在步骤160中,主控子系统20判断是否允许待升级子系统10加载或升 级程序,如果允许则进入步骤170,否则进入步骤180。在这个步骤中,主 控子系统20可以进行一些控制,例如权限的控制、升级时机的控制等等, 可以选择合适的待升级子系统10在合适的时机进行升级。\n在步骤170中,主控子系统20向待升级子系统10发送允许加载信元。 通知待升级子系统10可以马上进行下面的加载或升级流程了。需要说明的 是,在所述允许加载信元中,包含了将用于步骤190中的加载合法性分析的 信息,例如软件版本和升级程序大小等。然后进入步骤190。\n在步骤180中,主控子系统20向待升级子系统10发送不允许加载信元。 此后进入步骤280。\n在步骤190中,待升级子系统10接收到来自主控子系统20的允许加载 信元后,判断本次加载是否合法,如果合法则进入步骤200,否则进入步骤 270。判断本次加载是否合法的一个例子如下:待升级子系统10分析允许加 载信元中携带的软件版本和升级程序大小等信息,判断升级程序的软件版本 是否比目前已有程序的软件版本新,并判断本地的程序存储器是否能够容纳 下升级程序,如果这些判断均为肯定的结果,则本次加载合法,否则本次加 载不合法。\n在步骤200中,待升级子系统10将加载标志改写为有效,并向主控子 系统20发送准备就绪信元。将加载标志改写为有效是为了防止在下面的加 载流程中一旦发生异常问题(例如断电、通信线路发生故障等),待升级子 系统10在重新启动后可以自动重新进入加载流程。例如,在用户通过外界 输入强制进行加载情况中,加载标志原先是无效的,如果在本步骤中不将加 载标志改写成有效,一旦在加载时发生故障而重新启动后,待升级子系统 10将无法自动重新进入加载流程,而发生故障时已经加载的程序可能是不 完整的,运行不完整的程序可能会导致待升级子系统10的故障。此后进入 步骤210。\n在步骤210中,主控子系统20判断是否还有剩余的数据信元没有发送, 并且没有发现发送错误,如果是则进入步骤220,否则流程结束。本文中提 到的数据信元均是指升级软件的数据信元。有两个触发条件都可以触发这一 步骤,一个是收到来自待升级子系统10的准备就绪信元,另一个是收到待 升级子系统10对已发送数据信元的回应。在本发明的一个较佳实施例中, 当主控子系统20收到准备就绪信元时,会通知上层软件某个待升级子系统 10准备加载或升级程序。这个上层软件可以是控制中心中的监视软件。这 样控制中心中的工作人员可以及时知道待升级子系统10加载或升级程序的 情况。\n在步骤220中,主控子系统20向待升级子系统10发送数据信元,此后 进入步骤230。\n在步骤230中,待升级子系统10收取来自主控子系统20的数据信元, 判断该数据信元是否合法并且顺序正确,如果是则进入步骤240,否则进入 步骤270。判断数据信元是否合法的方法有多种,例如可以在数据信元发送 时加入循环冗余校验(Cyclic Redundancy Check,简称“CRC”)码,在接 收时通过CRC校验来判断该数据信元是否合法。因为在本发明中升级程序 一般是比较大的,往往被分成若干个数据信元依次发送的,如果收到的数据 信元的顺序不对,则说明有若干个数据信元被遗失了。例如,上一个收到的 数据信元编号是50,而本次收到的数据信元编号是53,则说明有两个数据 信元丢失。\n在步骤240中,待升级子系统10将合法并且顺序正确的数据信元写入 本地的程序存储器,接着进入步骤250。\n在步骤250中,待升级子系统10判断收到的数据信元是否需要回应, 如果需要回应则进入步骤260,否则进入步骤220。需要指出的是,不一定 每一个数据信元都需要回应。在本发明的一个较佳实施例中,从主控子系统 20发送的数据信元带有一个是否需要回应标志位,每隔若干个数据信元设 置一个需要回应的数据信元,例如,每发5个不需要回应的数据信元后发送 一个需要回应的数据信元。这样做的目的是为了减少待升级子系统10和主 控子系统20之间的通信量,提高通信效率。需要指出的是最后一个数据信 元是一定需要回应的。在不需要回应的情况下,待升级子系统10直接等着 收取下一个数据信元。\n在步骤260中,待升级子系统10向主控子系统20发送回应信元。主控 子系统20发完一组数据信元后会等待,直至收取回应信元才会发送下一组 数据信元。此后进入步骤290。\n在步骤270中,当加载发生错误时,待升级子系统10向主控子系统20 发送错误原因和最后错误数据信元。发送错误原因和最后错误数据信元的原 因是便于主控子系统20了解该错误,以便及时采取错误排除故障。此后进 入步骤310。\n在步骤280中,待升级子系统10打印错误原因。这一步骤的作用是告 知待升级子系统10本地的工作人员出错信息,便于及时排除故障。此后进 入步骤310。\n在步骤290中,待升级子系统10判断数据信元是否已经收取完毕,如 果是则进入步骤300,否则进入步骤210。\n在步骤300中,待升级子系统10将加载标志设置成无效,并修改本地 软件版本。因为升级程序已经下载完毕,为了防止下一次重新启动后再次自 动加载,需要把加载标志设置成无效。修改本地软件版本是为了下一次加载 时可以比较升级软件和本地软件的版本,以免错误加载旧版本的软件。此后 进入步骤310。\n在步骤310中,待升级子系统10重新启动,流程结束。当程序加载完 毕或发生错误无法继续加载时,待升级子系统10要重新启动,重新启动后 可以根据加载标志和用户的输入,开始执行新的应用程序或重新进行加载。\n需要说明的是,在本发明的一个较佳实施例中,待升级子系统10在上 述整个流程中不使用任何中断,在需要等待消息的时候采用例如轮询的方式 来等待,如果等待超时(可以用例如计算轮询次数的方法发现等待超时)则 进行错误处理。不使用中断的好处是可以减少加载过程中不必要错误的发 生,例如中断发生时如果正在接受数据,可能会导致一部分数据的丢失,从 而加载错误,最终不得不重新进行加载。\n虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描 述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种 各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
法律信息
- 2023-08-08
专利权有效期届满
IPC(主分类): G06F 9/445
专利号: ZL 03132982.9
申请日: 2003.07.23
授权公告日: 2007.10.31
- 2007-10-31
- 2006-05-24
- 2005-01-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |