CN112988349A - 支持eCos系统的中断栈处理方法、打印方法及接收机 - Google Patents

支持eCos系统的中断栈处理方法、打印方法及接收机 Download PDF

Info

Publication number
CN112988349A
CN112988349A CN202110205763.XA CN202110205763A CN112988349A CN 112988349 A CN112988349 A CN 112988349A CN 202110205763 A CN202110205763 A CN 202110205763A CN 112988349 A CN112988349 A CN 112988349A
Authority
CN
China
Prior art keywords
interrupt
stack
interrupt stack
processing
ecos
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110205763.XA
Other languages
English (en)
Inventor
吴振
刘彦
郝志杰
胡月
丁杰
吴金英
刘勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHANGSHA HAIGE BEIDOU INFORMATION TECHNOLOGY CO LTD
Original Assignee
CHANGSHA HAIGE BEIDOU INFORMATION TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CHANGSHA HAIGE BEIDOU INFORMATION TECHNOLOGY CO LTD filed Critical CHANGSHA HAIGE BEIDOU INFORMATION TECHNOLOGY CO LTD
Priority to CN202110205763.XA priority Critical patent/CN112988349A/zh
Publication of CN112988349A publication Critical patent/CN112988349A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种支持eCos系统的中断栈处理方法,包括发生中断时进入中断处理过程;获取中断栈地址并检查中断栈地址;根据检查结果对齐中断栈;中断处理完成后恢复中断栈,完成中断栈处理。本发明还公开了包括所述支持eCos系统的中断栈处理方法的打印方法。本发明还公开了包括所述支持eCos系统的中断栈处理方法和打印方法的接收机。本发明采用创新性算法进行中断栈的处理,是一种通用的用于eCos系统的软件解决方案,与硬件平台无关,并且与硬件支持不冲突,同时并未增加多余的工作量,而且浮点格式化与线程情况下使用相同处理,确保了同一系统下双精度浮点的格式化标准相同;本发明同时还具有通用性好和简单可靠的优点。

Description

支持eCos系统的中断栈处理方法、打印方法及接收机
技术领域
本发明具体涉及一种支持eCos系统的中断栈处理方法、打印方法及接收机。
背景技术
在普通的线程中(非中断情形),eCos可正常支持双精度浮点打印,通过其自带的C库函数和数学库函数实现。但是,在eCos原生系统中,并不支持在中断中直接打印或者格式化双精度浮点数据。在使用的过程中,直接使用打印函数进行输出时,有概率会出现数据打印错误的情况,导致无法正确跟踪某些状态,给跟踪调试带来不便。尤其对于某些时效性强的数据,如果无法第一时间打印出来,则需要使用较大的memory进行数据保存,这使得调试过程极为麻烦。
现有技术中,在cortexM3系列芯片中,可通过控制硬件NVICCCR的配置来支持该功能,但是该功能通过硬件实现,不具备通用性,而且会占用硬件资源。
发明内容
本发明的目的之一在于提供一种通过软件算法实现的、支持eCos系统且通用性好,简单可靠的支持eCos系统的中断栈处理方法。
本发明的目的之二在于提供一种包括了所述支持eCos系统的中断栈处理方法的打印方法。
本发明的目的之三在于提供一种包括了所述支持eCos系统的中断栈处理方法和打印方法的接收机。
本发明提供的这种支持eCos系统的中断栈处理方法,包括如下步骤:
S1.当发生中断时,进入中断处理过程;
S2.获取中断栈地址,并进行中断栈地址检查;
S3.根据步骤S2的中断栈地址检查结果,进行中断栈对齐;
S4.中断处理完成后,对中断栈进行恢复,从而完成中断栈处理。
步骤S2所述的进行中断栈地址检查,具体为在进入eCos中断时,使用golden栈保存完当前数据后,进行栈切换:首先检查进入中断时的栈是否为8字节对齐;检查过程为:对当前SP进行检查:若当前SP的最低3bit全部为0,则说明至少8字节已经对齐,否则为未对齐。
步骤S3所述的进行中断栈对齐,具体为若步骤S2检查的结果为中断栈未对齐,则向栈中多push一个数据,使得当前栈减4,使当前栈从4字节对齐变成至少8字节对齐,同时对上述的中断栈对齐操作进行记录。
步骤S4所述的对中断栈进行恢复,具体为在中断处理完成后,在进入interrupt_end之前,根据步骤S3中已记录的中断栈对齐操作,对中断栈进行恢复:若未进行中断栈对齐操作,则直接恢复中断栈;若进行了中断栈对齐操作,则从当前栈中pop一个数据,使得当前栈加4,同时恢复中断栈对齐操作为原始值。
本发明还公开了一种包括了上述支持eCos系统的中断栈处理方法的打印方法,包括如下步骤:
A.在eCos系统中,进行浮点格式化数据支持;
B.当需要进行双精度浮点打印时,进入中断;
C.采用上述的支持eCos系统的中断栈处理方法进行中断栈处理,完成双精度浮点打印并出中断,从而完成最终的打印。
所述的在eCos系统中,进行浮点格式化数据支持,具体为采用如下步骤进行浮点格式化数据支持:
a.在格式化解析中,增加针对双精度浮点格式“%f”的分支;
b.在“%f”分支中,解析所需打印精度,包括小数点前和小数点后;
c.在执行栈中取出待打印double数据,并按照ieee754标准进行解析;
d.按照eCos系统在线程中打印双精度浮点的方式进行四舍五入(保持跟线程中打印处理相同);
e.得到最终的格式化后字符串,准备打印。
本发明还公开了一种接收机,该接收机包括了上述的支持eCos系统的中断栈处理方法和打印方法。
本发明提供的这种支持eCos系统的中断栈处理方法、打印方法及接收机,采用创新性算法进行中断栈的处理,是一种通用的用于eCos系统的软件解决方案,与硬件平台无关,并且与硬件支持不冲突,同时并未增加多余的工作量,而且浮点格式化与线程情况下使用相同处理,确保了同一系统下(普通模式和中断模式)双精度浮点的格式化标准相同;本发明同时还具有通用性好和简单可靠的优点。
附图说明
图1为本发明的中断栈处理方法的方法流程示意图。
图2为本发明的打印方法的方法流程示意图。
具体实施方式
如图1所示为本发明的中断栈处理方法的方法流程示意图:本发明提供的这种支持eCos系统的中断栈处理方法,包括如下步骤:
S1.当发生中断时,进入中断处理过程;
S2.获取中断栈地址,并进行中断栈地址检查;
使用通用的软件方案替代硬件进行中断栈地址检查,使其符合预期和标准;
比如打印函数,是需要严格遵守AAPCS规则的函数;即要求堆栈保持8字节对齐;普通场景下,在创建任务时给定的栈顶地址只要设置为8字节对齐,那么编译链会保证在函数调用中,均按照该规则进行,确保普通场景下的双精度浮点打印/格式化正常;
在中断场景中,由于进入中断时的时机不可确定,进入时的栈空间情形即不确定;在此情形下,如果贸然直接调用打印或者格式化函数,可能导致不符合AAPCS的调用发生,从而导致出现错误结果;
因此,在进入eCos中断时,使用golden栈保存完当前数据后,进行栈切换:首先检查进入中断时的栈是否为8字节对齐;检查过程为:对当前SP进行检查:若当前SP的最低3bit全部为0,则说明至少8字节已经对齐,否则为未对齐;
S3.根据步骤S2的中断栈地址检查结果,进行中断栈对齐;
本步骤的目的在于让代码执行严格遵守AAPCS规则;
具体为,若步骤S2检查的结果为中断栈未对齐,则向栈中多push一个数据,使得当前栈减4,使当前栈从4字节对齐变成至少8字节对齐,同时对上述的中断栈对齐操作进行记录;
S4.中断处理完成后,对中断栈进行恢复,从而完成中断栈处理;
由于中断中的debug信息由用户注册的中断函数产生,在调用完毕用户中断函数后,就可以恢复原始栈状态,确保中断处理完毕后可正常返回中断点继续正确执行;在调用完毕用户函数后,继续进行eCos内核代码的中断处理,在进入interrupt_end之前恢复一些标志位和栈;
因此,在中断处理完成后,在进入interrupt_end之前,根据步骤S3中已记录的中断栈对齐操作,对中断栈进行恢复:若未进行中断栈对齐操作,则直接恢复中断栈;若进行了中断栈对齐操作,则从当前栈中pop一个数据,使得当前栈加4,同时恢复中断栈对齐操作为原始值。
如图2所示为本发明的打印方法的方法流程示意图:本发明提供的这种包括了上述支持eCos系统的中断栈处理方法的打印方法,包括如下步骤:
A.在eCos系统中,进行浮点格式化数据支持;具体为采用如下步骤进行浮点格式化数据支持:
a.在格式化解析中,增加针对双精度浮点格式“%f”的分支;
b.在“%f”分支中,解析所需打印精度,包括小数点前和小数点后;
c.在执行栈中取出待打印double数据,并按照ieee754标准进行解析;
d.按照eCos系统在线程中打印双精度浮点的方式进行四舍五入(保持跟线程中打印处理相同);
e.得到最终的格式化后字符串,准备打印;
B.当需要进行双精度浮点打印时,进入中断;
C.采用上述的支持eCos系统的中断栈处理方法进行中断栈处理,完成双精度浮点打印并出中断,从而完成最终的打印。

Claims (7)

1.一种支持eCos系统的中断栈处理方法,包括如下步骤:
S1.当发生中断时,进入中断处理过程;
S2.获取中断栈地址,并进行中断栈地址检查;
S3.根据步骤S2的中断栈地址检查结果,进行中断栈对齐;
S4.中断处理完成后,对中断栈进行恢复,从而完成中断栈处理。
2.根据权利要求1所述的支持eCos系统的中断栈处理方法,其特征在于步骤S2所述的进行中断栈地址检查,具体为在进入eCos中断时,使用golden栈保存完当前数据后,进行栈切换:首先检查进入中断时的栈是否为8字节对齐;检查过程为:对当前SP进行检查:若当前SP的最低3bit全部为0,则说明至少8字节已经对齐,否则为未对齐。
3.根据权利要求2所述的支持eCos系统的中断栈处理方法,其特征在于步骤S3所述的进行中断栈对齐,具体为若步骤S2检查的结果为中断栈未对齐,则向栈中多push一个数据,使得当前栈减4,使当前栈从4字节对齐变成至少8字节对齐,同时对上述的中断栈对齐操作进行记录。
4.根据权利要求3所述的支持eCos系统的中断栈处理方法,其特征在于步骤S4所述的对中断栈进行恢复,具体为在中断处理完成后,在进入interrupt_end之前,根据步骤S3中已记录的中断栈对齐操作,对中断栈进行恢复:若未进行中断栈对齐操作,则直接恢复中断栈;若进行了中断栈对齐操作,则从当前栈中pop一个数据,使得当前栈加4,同时恢复中断栈对齐操作为原始值。
5.一种包括了权利要求1~4之一所述的支持eCos系统的中断栈处理方法的打印方法,其特征在于包括如下步骤:
A.在eCos系统中,进行浮点格式化数据支持;
B.当需要进行双精度浮点打印时,进入中断;
C.采用权利要求1~4之一所述的支持eCos系统的中断栈处理方法进行中断栈处理,完成双精度浮点打印并出中断,从而完成最终的打印。
6.根据权利要求5所述的打印方法啊,其特征在于所述的在eCos系统中,进行浮点格式化数据支持,具体为采用如下步骤进行浮点格式化数据支持:
a.在格式化解析中,增加针对双精度浮点格式“%f”的分支;
b.在“%f”分支中,解析所需打印精度,包括小数点前和小数点后;
c.在执行栈中取出待打印double数据,并按照ieee754标准进行解析;
d.按照eCos系统在线程中打印双精度浮点的方式进行四舍五入,并保持跟线程中打印处理相同;
e.得到最终的格式化后字符串,准备打印。
7.一种接收机,其特征在于包括了权利要求1~4之一所述的支持eCos系统的中断栈处理方法和和权利要求5或6所述的打印方法。
CN202110205763.XA 2021-02-24 2021-02-24 支持eCos系统的中断栈处理方法、打印方法及接收机 Pending CN112988349A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110205763.XA CN112988349A (zh) 2021-02-24 2021-02-24 支持eCos系统的中断栈处理方法、打印方法及接收机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110205763.XA CN112988349A (zh) 2021-02-24 2021-02-24 支持eCos系统的中断栈处理方法、打印方法及接收机

Publications (1)

Publication Number Publication Date
CN112988349A true CN112988349A (zh) 2021-06-18

Family

ID=76350149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110205763.XA Pending CN112988349A (zh) 2021-02-24 2021-02-24 支持eCos系统的中断栈处理方法、打印方法及接收机

Country Status (1)

Country Link
CN (1) CN112988349A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070010A (en) * 1997-07-25 2000-05-30 International Business Machines Corporation System and method of local data alignment for stack memory
CN1687910A (zh) * 2005-05-17 2005-10-26 北京中星微电子有限公司 连续访问环境下的中断恢复方法及装置
CN103778009A (zh) * 2012-10-18 2014-05-07 深圳市中兴微电子技术有限公司 中断处理方法及装置
CN109901813A (zh) * 2019-03-27 2019-06-18 苏州中晟宏芯信息科技有限公司 一种浮点运算装置及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070010A (en) * 1997-07-25 2000-05-30 International Business Machines Corporation System and method of local data alignment for stack memory
CN1687910A (zh) * 2005-05-17 2005-10-26 北京中星微电子有限公司 连续访问环境下的中断恢复方法及装置
CN103778009A (zh) * 2012-10-18 2014-05-07 深圳市中兴微电子技术有限公司 中断处理方法及装置
CN109901813A (zh) * 2019-03-27 2019-06-18 苏州中晟宏芯信息科技有限公司 一种浮点运算装置及方法

Similar Documents

Publication Publication Date Title
US5974529A (en) Systems and methods for control flow error detection in reduced instruction set computer processors
US6163764A (en) Emulation of an instruction set on an instruction set architecture transition
US9740562B2 (en) Method for checkpointing and restoring program state
CN101473303B (zh) 在连结到本机码期间处理异常的方法及设备
US7401210B2 (en) Selecting subroutine return mechanisms
US6678837B1 (en) Processor control flow monitoring using a signature table for soft error detection
CN109739824B (zh) 日志获取方法及设备
CN112559140B (zh) 数据一致性的事务控制方法、系统、设备及存储介质
JP4434548B2 (ja) L2訂正可能エラーのための複数のプロセッサ・コアの割振り解除方法
CN112115105A (zh) 一种业务处理方法、装置及设备
CN111126010A (zh) Freemaker模板文件修复方法、装置、计算机设备及存储介质
CN112988349A (zh) 支持eCos系统的中断栈处理方法、打印方法及接收机
CN110008236B (zh) 一种数据分布式自增编码方法、系统、设备及介质
CN110990179A (zh) 一种任务处理方法、装置及设备
JP2000122875A (ja) 例外処理方法およびシステム
US20170115349A1 (en) Method of debugging plc by using general-purpose microprocessor
CN114490543A (zh) 内存多维数据库的事务日志实现方法、装置、设备及介质
CN114462381A (zh) 数据处理方法、装置、设备及存储介质
CN111984451A (zh) 表格数据的纠错方法、系统、设备及存储介质
CN112364580A (zh) 自动在寄存器传输级设计文件中插入特定代码的方法及装置
CN112540799A (zh) 启动数据的管理方法、系统、终端设备及存储介质
US8769517B2 (en) Generating a common symbol table for symbols of independent applications
CN112364581B (zh) 自动在寄存器传输级设计文件中插入特定代码的方法及装置
WO2023092723A1 (zh) 数据纠错方法、装置及电子设备
CN117573403A (zh) 一种系统级芯片的异常的处理方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination