一种程序动态加载方法

文档序号:6592252阅读:215来源:国知局
专利名称:一种程序动态加载方法
技术领域
本发明涉及通信领域,尤其涉及对芯片阵列进行程序的动态加载。
为了简化设计,很多芯片阵列采用业务接口和程序加载接口共用一套物理总线的实现方案,即业务数据流和加载程序的数据流都通过同一套总线进行传递和通讯。因此,为了避免总线争用对业务数据通讯的影响,加载程序必须在芯片阵列不传递业务数据的情况下才能进行,否则,将引起总线竞争,导致混乱和错误的出现。即使对芯片阵列中的某一个芯片进行加载,也势必中断或严重影响整个芯片阵列的业务通讯。
所述的程序动态加载方法,还包括设置一个主控程序,在加载所述程序之前,需要先加载该主控程序,所述主控程序携带程序加载所需的配置信息,并完成对加载过程的控制和消息处理。
所述的加载,是通过主机(HOST)完成输入的。
所述的程序动态加载方法,还包括为各段程序设置一个段头标识,所述的段头标识中包含段序列号信息和程序的分段信息,可以根据当前段序列号信息索引下一个分段,当程序段加载到芯片阵列之后,将段头标识拆掉。
所述的程序动态加载方法,可以通过段头中段序列号等相关信息判断加载的段是否合法、是否正确。
所述的程序动态加载方法,可以通过段头中程序的分段信息判断整个程序是否加载完毕。
所述的程序动态加载方法,在段头中可以加入差错控制信息,通过主机(HOST)与被加载芯片之间的握手信息将程序段是否加载正确的信息告知主机(HOST),如果某一段加载正确时,主机(HOST)继续加载下一段,否则重新加载本段。
所述的重新加载,可以是重新发送部分段,也可以是重新加载全部段。
所述的程序动态加载方法,该时间间隔可以通过设置定时机制来控制。
所述的程序动态加载方法,该定时机制可以是通过主机(HOST)上的定时机制来控制,当时间一到时开始加载下一段程序。
所述的程序动态加载方法,该定时机制可以通过被加载的芯片上的定时机制来控制,当被加载芯片判断时间到时被加载的芯片向主机(HOST)发送消息要求加载下一段,主机(HOST)接收到这个消息后开始加载下一段。
所述的程序动态加载方法,可根据每一种加载失败设置一个计数器记录重新加载的次数,如果超过一定的阈值,则停止加载,则作为错误事件处理。
所述的程序动态加载方法,还包括设置一个超时机制,在加载过程中如果一定时间内没有相应的响应,则作为错误事件处理。
本发明通过将加载的程序分割成段,通过段头中段序列号信息标识索引各段,加载程序时按照一定时间间隔逐一加载各段的方法避免程序加载对总线的长时间占用,可以消除对正常业务通讯的影响,从而实现程序的动态加载,即程序加载时可以不中断正常业务通信。


图1所示,是一个常见的单板模型,在通信领域,在该单板上布置芯片阵列已经成为较为普及的技术。
本发明的核心思想,是通过将加载的程序分割成段,通过段头中段序列号信息标识索引各段,加载程序时按照一定时间间隔逐一加载各段的方法避免程序加载业务对总线的长时间占用,以消除对业务通讯的影响,当加载完成后,重新组合成完整的程序文件,从而实现程序的动态加载,即程序加载时可以不中断业务通信。
如图2所示,是本发明加载的流程图。
本发明在加载前,可以加载一个很短的主控程序,此主控程序携带程序加载所需的配置信息,比如需要加载哪些文件,程序启动地址等等,并主要完成对加载的过程的控制和消息处理功能。
该程序的加载,是通过主机(HOST)完成输入的,该主机可以是是芯片阵列单板上的LOCAL CPU,也可以是系统中的主控单板,甚至可以是一个系统的后台。
在加载该主控程序时,除了使用主机加载外,还可以通过BIOS加载。
在主控程序加载的过程中,如果主控程序加载成功,则返回正确消息,否则返回错误消息并要求重新加载。如果重新加载的次数超过一定阈值时,则停止加载并上报错误事件消息。比如,我们将阈值设置为3,则超过3次时,停止加载并上报错误时间消息。
对于欲加载的程序,我们先将其分段,将大的程序进行分割,以利于数据传送,段的大小与正常的业务数据包的大小相似,可以根据具体的业务不同而定。
然后对将分好的数据段进行处理,在每一个数据段之前加上段头,该段头中包含段序列号信息,段头中还包含整个文件分段的信息,在数据传送的过程中,可以根据当前段的段序列号信息索引下一个分段。
然后向芯片加载该程序,在加载时,要逐段加载,保证段和段之间有一定的时间间隔,该时间间隔大小与业务数据包的时间间隔类似,这也是为了避免总线竞争带来的影响。该时间间隔,可以通过设置一个定时机制,通过该定时机制来控制时间间隔。比如可以通过HOST上的定时器来控制,当时间一到,则开始加载下一段文件;该定时机制也可以通过被加载的芯片定时器来控制,当时间到时,被加载的芯片向HOST发送消息要求加载下一段,HOST接收到这个消息后开始加载下一段程序。
在加载的过程中,可以通过段头中段序列号等信息来判断加载的数据段是否合法,是否连续等。
当欲加载的文件分段都加载到芯片上时,拆掉段头标识并重组成完整的程序文件。该段头标识的拆掉,可以根据实际情况的不同而确定,可以在全部程序分段都加载完毕之后拆掉,也可以边加载边拆掉,加载一段程序后即拆掉该段程序的段头标识,这样当加载所有程序段后,直接组合即可。
整个程序文件加载成功后,向HOST发送加载文件加载成功消息;反之则上报文件加载失败消息,并要求重新加载。
实际使用中,该加载成功消息的发送,并不一定是必须的步骤,即不一定非要通过成功加载消息上报,还可以通过查询寄存器等方式来检测是否加载成功,同样的道理,上述的失败消息,也不一定通过消息发送的方式得到。
在实际操作中,可根据每一种加载失败的情况,设置一个计数器,用来记录重新加载的次数,如果超过一定的阈值,则停止加载,并上报错误信息。一面产生循环错误。该阈值的设立可以灵活掌握,在重新加载计数器的阈值也是可改变设置的。
当芯片阵列的业务模型(包括业务数据包的大小、业务数据包的发送时间间隔等)发生改变时,可以随之调整段的大小和段的加载时间间隔。
以上所述,只是加载一个程序的过程,在实际应用中,可能需要加载许多个程序,这时,可以按照本发明的上述方法分段、加载、控制,原理相同。
下面看一个具体的加载实例。
如图1所示,是一个语音处理单板方案,可以实现分组语音通讯。此方案由一个HOST、若干片语音处理芯片组成的芯片阵列、汇聚逻辑和分组处理单元组成。其中,芯片阵列通过业务总线汇聚到汇聚逻辑,HOST也有一个与汇聚逻辑相连接的配置和加载接口。每个语音处理芯片的语音包通过业务总线传递到汇聚逻辑,再传递到分组处理单元;HOST通过配置加载接口经由汇聚逻辑对芯片阵列进行加载,加载数据也是通过业务总线传递到每一个语音处理芯片。
本实施例的加载包括以下步骤1.将需要加载的程序文件分成段,分为每段长度为300BYTES的程序段,与30ms的G.711语音数据包长度相仿(240 BYTES),不足300BYTES的段可以填充无效字节。
然后在每一段增加段头,其格式为

其中
段标识01111110文件尾标识0非文件尾;1文件尾段序列号每一个文件的第一个段的段序列号为0,以后依次增加1。
CRC校验;使用CRC-8校验多项式段内容需要加载的程序文件内容填充字节0XFF,如果不足300字节时,用以填充。
2.加载前先加载一个长度约250字节的主控程序,此主控程序携带程序加载所需要的配置信息,并主要完成对加载的过程的控制和消息处理功能。如果主控程序加载成功,则返回主控程序加载成功消息,否则返回主控程序加载失败消息并要求重新加载。
3.根据段序列号逐段加载程序,并且每30ms加载一段。在语音处理芯片中设置一个定时器,每30ms向HOST发送一个消息,当HOST检测到这个消息时即发送下一段。
4.语音处理每接收一段则根据段标识、段序列号、段有效长度和CRC校验判断本段加载是否正确,如果正确,则反馈段加载成功消息;如错误,则反馈段加载失败消息。当HOST接收到加载成功消息时,则继续加载下一段;否则重新加载上一段。
5.语音处理根据文件尾标识判断是否加载完毕整个程序文件,如果整个文件加载正确,则反馈文件加载成功消息;如错误,则反馈文件加载失败消息。当HOST接收到文件加载成功消息时,则继续加载下一文件;否则重新加载上一文件。
6.所有文件加载完毕后,开始运行程序,如果运行正常,则反馈程序加载正常消息;如错误,则反馈程序加载失败消息。当HOST接收到程序加载成功消息时,则开始正常运行;否则重新加载一遍。
7.当因段加载、文件加载和程序失败导致的重新加载的次数超过3次后,则停止加载,并上报错误事件消息。
8.当芯片阵列使用5ms G.711语音编解码业务时,将每个文件分段的大小定为50字节(与5ms G.711语音数据大小40字节相似),并修改段有效长度信息;将段加载间隔变为5ms。
本发明通过将加载的程序分割成段,通过段头中段序列号信息标识索引各段,加载程序时按照一定时间间隔逐一加载各段的方法避免程序加载业务对总线的长时间占用,消除了程序加载对业务通讯的影响,从而实现程序的动态加载,程序在加载时可以不中断业务通信,效果非常明显。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种程序动态加载的方法,其特征在于包括将欲加载的程序分割成段,在加载时按照一定时间间隔逐一加载各段程序,当所有程序都加载完成后,重新组合成完整的程序文件,从而实现程序的动态加载。
2.如权利要求1所述的程序动态加载方法,其特征在于还包括设置一个主控程序,在加载所述程序之前,需要先加载该主控程序,所述主控程序携带程序加载所需的配置信息,并完成对加载过程的控制和消息处理。
3.如权利要求2所述的程序动态加载方法,其特征在于,所述的加载,是通过主机(HOST)完成输入的。
4.如权利要求1、2或3所述的程序动态加载方法,其特征在于还包括为各段程序设置一个段头标识,所述的段头标识中包含段序列号信息和程序的分段信息,可以根据当前段序列号信息索引下一个分段,当程序段加载到芯片阵列之后,将段头标识拆掉。
5.如权利要求4所述的程序动态加载方法,其特征在于可以通过段头中段序列号等相关信息判断加载的段是否合法、是否正确。
6.如权利要求4所述的程序动态加载方法,其特征在于可以通过段头中程序的分段信息判断整个程序是否加载完毕。
7.如权利要求5所述的程序动态加载方法,其特征在于在段头中可以加入差错控制信息,通过主机(HOST)与被加载芯片之间的握手信息将程序段是否加载正确的信息告知主机(HOST),如果某一段加载正确时,主机(HOST)继续加载下一段,否则重新加载本段。
8.如权利要求7所述的程序动态加载方法,其特征在于所述的重新加载,可以是重新发送部分段,也可以是重新加载全部段。
9.如权利要求1、2或3所述的程序动态加载方法,其特征在于该时间间隔可以通过设置定时机制来控制。
10.如权利要求9所述的程序动态加载方法,其特征在于,该定时机制可以是通过主机(HOST)上的定时机制来控制,当时间一到时开始加载下一段程序。
11.如权利要求9所述的程序动态加载方法,其特征在于,该定时机制可以通过被加载的芯片上的定时机制来控制,当被加载芯片判断时间到时被加载的芯片向主机(HOST)发送消息要求加载下一段,主机(HOST)接收到这个消息后开始加载下一段。
12.如权利要求1、2或3所述的程序动态加载方法,其特征在于可根据每一种加载失败设置一个计数器记录重新加载的次数,如果超过一定的阈值,则停止加载,则作为错误事件处理。
13.如权利要求1、2或3所述的程序动态加载方法,其特征在于还包括设置一个超时机制,在加载过程中如果一定时间内没有相应的响应,则作为错误事件处理。
全文摘要
本发明涉及对芯片阵列进行程序的动态加载的方法。一种程序动态加载的方法,其特征在于包括将欲加载的程序分割成段,在加载时按照一定时间间隔逐一加载各段程序,当所有程序都加载完成后,重新组合成完整的程序文件,从而实现程序的动态加载。本发明通过将加载的程序分割成段,通过段头中段序列号信息标识索引各段,加载程序时按照一定时间间隔逐一加载各段的方法避免程序加载对总线的长时间占用,消除对正常业务通讯的影响,从而实现程序的动态加载,即程序加载时可以不中断正常的业务通信。
文档编号G06F9/445GK1467631SQ02141179
公开日2004年1月14日 申请日期2002年7月8日 优先权日2002年7月8日
发明者周亮, 乔志新, 周 亮 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1