CN112162879A - 一种实时多核dsp软件的日志系统 - Google Patents

一种实时多核dsp软件的日志系统 Download PDF

Info

Publication number
CN112162879A
CN112162879A CN202011059641.6A CN202011059641A CN112162879A CN 112162879 A CN112162879 A CN 112162879A CN 202011059641 A CN202011059641 A CN 202011059641A CN 112162879 A CN112162879 A CN 112162879A
Authority
CN
China
Prior art keywords
log
output
unit
dsp
storage unit
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
CN202011059641.6A
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN202011059641.6A priority Critical patent/CN112162879A/zh
Publication of CN112162879A publication Critical patent/CN112162879A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种实时多核DSP软件的日志系统,可以有效弥补SOC系统调试接口能力的不足,降低了芯片设计的难度及成本。通过选取最小数据单位——单字节为每次日志输出单位,并以此频次查询业务任务忙闲状态优先响应,有效保证了业务任务的执行。通过将调试通信接口与DSP处理解耦合,有效避免低速接口对高速处理执行耗时。通过设计两种日志生成与输出模式,创新性解决低速通信接口满足实时高速DSP处理任务高带宽数据下调试需求。

Description

一种实时多核DSP软件的日志系统
技术领域
本发明涉及嵌入式技术领域,具体涉及一种实时多核DSP软件的日志系统。
背景技术
为满足越来越多的工业控制技术、多媒体信息的应用需求,以多核DSP(DigitalSignal Processing,数字信号处理)处理器理念设计的复杂SOC(System On Chip,片上系统)系统越来越常见。但是,多核SOC系统在处理速度、系统稳定性、工艺面积等方面提出了更高要求。同时,为了产品快速迭代,产品开发周期要求更短。所以,既能有效降低SOC系统设计复杂度,又能满足系统调试要求,且可重用于不同系统的软件调试工具,对于软件开发人员发现解决问题,提升效率变得至关重要。
文献[1]对现有多核调试工具应当具备的特征进行了总结,主要包括如下几个方面:
1)调试或跟踪行为应当尽量小地影响业务任务或器件的执行;
2)存在基础模块可以从外部查看系统内部系统运行状态;
3)能够从外部控制系统内部执行行为;
4)尽量减少SOC系统在管脚和芯片面积上的代价;
该论文还分别从基础模块和系统架构两个角度,对现有调试工具进行了分类。如图1所示,从基础模块类型角度可以分为基于软件、基于测试模块、基于内置仿真验证、基于片上仿真模拟类型;从架构角度区分,主要包括分布式、集中式和混合式。
文献[2,3]展示了基于软件的调试工具的方案。该方案通过在软件编译和汇编阶段产生监控路径进行调试跟踪。该方案适用于不同SOC平台,且基于基本的硬件调试接口就可以满足需求。但该方案基于完善的调试通信口设计,无法解决调试通信能力不足时的调试需求。
文献[4,5]展示基于测试模块进行软件调试的方案。该方案利用芯片功能模块的验证设计,同时复用于软件调试,节省了专门设计专用调试接口。但由于不是专门为调试功能设计,所以不能完全满足调试需求,只能作为调试补充手段。
文献[6]展示基于内置仿真验证方式进行软件调试的方案。该方案通过专门设计用于开发测试的SOC测试芯片,完成芯片及软件调试后,再去除调试接口得到实际的产品化的SOC芯片。该方案可以有效避免了基于测试模块进行调试无法覆盖调试验证需求的问题,但新增了SOC测试芯片环节。而测试芯片中包含过多的调试连接,总线负载重,改变了许多模块的行为及特点,从而引入其他的系统错误。另外,SOC测试芯片仅用于调试使用,额外增加了芯片的成本。
文献[7]展示基于片上仿真模拟进行软件调试的方案。该方案通过在片上设计仿真验证模块解决该问题。该方式会增加系统设计的复杂度,增加SOC芯片面积,同时需要设计专用的调试高速口。
上述已有的调试工具设计方式表明,不同方式的调试工具有各自的优缺点。当前面临的主要挑战在于如何很好地追踪概率性错误。该类问题不容易复现,需要长时间执行或某种异常触发。而解决该问题主流的趋势在于依靠功能强大的硬件调试功能设计。
上述调试工具主要针对某个时间点出现问题后的调试定位,而实时对业务软件执行错误的定位与调试更加重要。
文献[8]~[12]开发了实时的日志调试系统。它们通过记录SOC系统中多核和外部器件执行行为,保存到系统内存中,然后通过通信口输出到系统外部。最后通过离线或在线通过外部软件进行解析输出。上述调试系统主要从以下三方面进行设计和实现。
1)调试日志压缩。日志信息通过什么形式保存到内存中,对日志量有很大影响,相应对内存需求也会有很大不同。上述文献表明可以通过设计不同的压缩编码方式存储日志可以减少通信带宽需求及存储需求。也有通过标准的编码方式进行保存,可以降低接口通信传输错误率。
2)调试日志管理。日志信息不仅仅在于其生成过程重要,日志的管理、存储同样重要。日志信息输出可以通过通信接口控制完成,但如何保证多核日志的不冲突、日志任务尽可能降低对业务任务的处理影响同样重要(即业务任务能够及时响应处理)。上述文献中调试系统均设计考虑了日志信息管理的策略。
3)调试通信接口。日志输出通信接口的带宽及存储大小都影响日志正常输出。通信速率不足会导致日志信息输出不及时而丢失。所以设计与日志量相匹配的通信硬件接口至关重要。
通过对现有调试工具设计总结可知,现有调试工具需要成熟完善的调试接口设计,尤其在高速实时的SOC系统中。然而,在许多成本低、工期短、版本迭代较快的SOC系统设计中,设计人员更多关注功能模块设计的正确性,不会花费太多时间、人力成本以及硬件成本用于调试接口设计。所以,亟需一种基于简易调试口的日志工具支持在此类SOC系统上进行软件开发和调试。在敏捷芯片设计开发中,该类调试工具可以有效缩短SOC上软件开发调试周期。
专利[13]-[27]基于嵌入式系统设计了不同的日志工具,但这些工具均不能有效解决上述几个问题。
参考文献:
[1]De Michell,G.,and Gupta,R.K.:‘Hardware/software co-design’,Proc.IEEE,1977,85,(3),pp.349–365
[2]Clement,B.,Hersemeule,R.,Lantreibecq,E.,Ramanadin,B.,Coulomb,P.,and Pogodalla,F.:‘Fast prototyping:a system design flow applied to a complexsystem-on-chip multiprocessor design’.DAC,21–25June 1999,pp.420–424
[3]Hoffmann,A.,Kogel,T.,and Meyr,H.:‘A framework for fast hardware–software co-simulation’.DATE,13–16March 2001,pp.760–7644Marantz,J.:‘Enhancedvisibility and performance in functional verification by reconstruction’.DAC,1998,pp.164–169
[5]Roychoudhury,A.,Mitra,T.,and Karri,S.R.:‘Using formal techniquesto debug the AMBA system-on-chip bus protocol’.DATE,3–7March 2003,pp.828–833
[6]Pateras,S.:‘Embedded diagnosis IP’.DATE,2002
[7]Zorian,Y.,Jan Marinissen,E.,and Dey,S.:‘Testing embedded-core-based system chips’,Computer,1999,32,(6),pp.52–60
[8]Bommireddy,A.,Khare,J.,and Shaikh,S.:‘Test and debug of networkingSoCs–a case study’.18th IEEE VLSI Test Symp.,30April 2000,pp.121–126
[9]Liu,J.,Zhu,M.,and Bian,J.:‘A debug sub-system for embedded-systemco-verification’.4th Int.Conf.on ASIC,Xue Hongxi,23–25October 2001,pp.77–780
[10]Semiconductor Industry Association(SIA):‘International TechnologyRoadmap for Semiconductors’,2003edition,http://public.itrs.net/Files/2003ITRS/Home2003.htm.
[11]US Department of Commerce‘The economic impacts of inadequateinfrastructure for software testing”,Technical Report,RTI-7007.011US,NationalInstitute of Standards and Technology(US),2002
[12]Mayer,A.,and McDonald-Maier,K.D.:‘Debug support,calibrationandemulation for multiple processor and powertrain control SoCs’.DATE,Munich(DE),7–11March 2005
[13]余平,张加法.一种日志管理方法及终端.中国,CN111459764A[P],2020.
[14]赵伟航,江勇.一种应用于嵌入式系统的日志式文件系统.中国,CN109857718A[P],2019.
[15]雷鹏.一种日志存储方法、系统及存储装置.中国,CN108829342A[P],2018.
[16]唐日坤.一种车载故障诊断日志自动输出的方法.中国,CN108279662A[P],2017.
[17]陆璐;刘欣.一种基于自定义协议及Netty框架的交互方法.中国,CN108234614A[P],2018.
[18]史宗华.一种嵌入式系统日志记录的方法与装置.中国,CN107526674A[P],2017.
[19]刘杰.一种嵌入式网络日志收集方法及系统.中国,CN109857718A[P],2017.
[20]赵晨辉.嵌入式日志管理系统和方法.中国,CN106815120A[P],2017.
[21]李佳琦,符志清.日志管理方法及装置、电子设备、存储介质.中国,CN110888790A[P],2020.
[22]杜清海.一种嵌入式系统的面向虚拟终端的日志服务系统.中国,CN106502877A[P],2017.
[23]张伟.多设备的串口数据处理装置及方法.中国,CN105357077A[P],2016.
[24]吴振华.一种在嵌入式系统进程中调试日志的方法.中国,CN105260315A[P],2016.
[25]马先.一种故障信息记录方法及相关装置.中国,CN105303639A[P],2016.
[26]姚明生;邹茂红;游毓;向平;周士兵;姜黎;马翼;田达海;彭鹏.一种嵌入式系统日志收集装置、记录系统及方法.中国,CN105183628A[P],2015.
[27]丁国星.日志数据的生成方法、解析方法、生成装置及解析装置.中国,CN106484728A[P],2019.
发明内容
为解决上述现有技术中存在的问题,提供一种用于实时多核DSP软件的日志系统,包括控制单元、日志写入单元、日志存储单元、日志输出单元,其中,
所述控制单元分别与所述日志写入单元、所述日志存储单元、所述日志输出单元连接,用于管理和调度运行在DSP上的任务,以及基于设定的运行模式控制所述日志写入单元、日志存储单元、日志输出单元进行日志信息的写入和输出;
所述日志写入单元,根据所述控制单元的控制指示,将DSP上的业务任务发来的日志信息写入所述日志存储单元;
所述日志存储单元,与所述日志写入单元和日志输出单元连接,用于管理日志存储区域;
所述日志输出单元,与所述日志存储单元连接,用于根据所述控制单元调度的日志输出任务,将所述日志存储单元中的所述日志信息输出到DSP通信口。
优选的,所述控制单元基于队列管理运行在DSP上的任务,所述任务包括业务任务和日志输出任务。
优选的,所述设定的运行模式包括第一模式和第二模式,所述第一模式用于将日志信息连续循环写入所述日志存储单元,并由业务任务触发输出所述日志;所述第二模式用于在所述日志存储单元未写满的情况下将日志信息连续写入所述日志存储单元,并同时输出所述日志信息。
所述日志写入接口接收的日志信息包括字符、字符串、8bit数据、16bit数据、32bit数据、64bit数据中的至少一种,所述日志写入接口将所述日志信息转换为ASCII编码保存到所述日志存储单元。
优选的,所述日志存储单元基于共享内存实现。
优选的,所述日志存储单元在所述共享内存中分别生成各DSP的日志区域。
优选的,其部署方式包括集中式、分布式、混合式中的至少一种。
优选的,所述DSP通信口为UART,所述日志输出单元每次输出所述日志存储单元中的一个字符。
根据本发明的另一方面,提供一种用于上述系统的方法,包括:
步骤1,控制单元基于任务队列进行任务处理,调用所述日志写入单元,生成日志数据存储到日志存储单元;
步骤2,当任务队列中没有业务任务时,所述控制单元调度执行日志输出任务,通过日志输出单元将日志通过串口输出,每次输出一个字符。
优选的,所述串口为UART,所述日志输出单元根据UART的状态确定是否输出所述字符,如果所述UART的状态不满足预期值,所述控制单元调度执行业务任务。
本发明具有如下特点和有益效果:本发明在低速率硬件调试接口的SOC系统上可以有效满足高速软件调试需求,避免了复杂调试口设计,从另一个层面降低了SOC系统设计和实现的难度,具有重要意义。
附图说明
图1示出了现有技术中调试工具的分类。
图2示出了根据本发明一个实施例的运行系统资源。
图3示出了根据本发明一个实施例的日志系统的结构图
图4示出了根据本发明一个实施例在连续写入模式时,触发条件发生时的日志处理过程。
图5示出了根据本发明一个实施例的日志系统定义的函数接口。
图6示出了根据本发明一个实施例的各DSP生成日志信息存入日志区域的控制过程。
图7示出了根据本发明一个实施例的日志头结构体的内容。
图8示出了根据本发明一个实施例各DSP初始进入时的初始化过程。
图9示出了根据本发明一个实施例的UART输出信号与DSP交互处理解耦合前的单个字符输出的流程示意图。
图10示出了根据本发明一个实施例的UART输出信号与DSP交互处理解耦合后的单个字符输出的流程示意图。
图11示出了根据本发明一个实施例的日志输出控制过程。
图12示出了根据本发明一个实施例的日志系统的主要工作过程。
图13示出了根据本发明一个实施例的日志控制输出。
图14示出了根据本发明一个实施例的日志使用的流程图。
图15示出了根据本发明一个实施例的日志系统的日志输出效果。
具体实施方式
下面结合附图和具体实施例对本发明加以说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
下面以4个DSP构成的多核SOC系统为例说明本发明的日志系统。
图2示出了根据本发明一个实施例的系统资源示意图,该系统实现了UE侧LTE物理层功能。其中,DSP1作为LTE物理层L1C(Layer 1Control)的主控制核,负责RF(RadioFrequency)模块、硬件加速模块及其他DSP调度控制,其他DSP完成物理层符号处理。ORX和OTX为硬件加速器模块,分别完成下行信道译码和上行编码处理。SHMEM1&2为共享内存,完成各模块间中间数据存储。RFIU为射频数据通道,负责接收和发送射频数据到天线端口。PHY-DMA为数据搬移通道,完成数据搬移。INTC(Interrupt Control)模块为中断控制模块,TBU(Time Block Unit)为定时控制单元,UART(Universal Asynchronous Receiver/Transmitter)为低速通信端口,SPI(Serial Peripheral Interface)为低速率控制口。
在图2的多核SOC系统中,业务任务以程序的形式运行在各个DSP上,为了调试系统,需要设计完善的调试接口。但是,由于成本低、工期短、版本迭代较快等原因,该系统并没有设计成熟完善的调试接口,仅有简单的UART低速通信口。发明人分析认为,针对SOC调试接口设计能力不足的情况,需要解决以下几个问题:
1)在通信接口速率不足时,如何满足实时高速DSP调试需求;
2)与调试接口交互时,不能影响业务任务与器件的正常执行;
3)如何有效协调多核及多业务任务与调试输出的冲突;
4)如何提高接口输出的灵活性,满足不同数据类型和形式的输出。
为了解决上述问题,满足软件开发调试的需求,发明人设计了一种实时多核DSP软件日志系统,可在DSP程序运行中,记录用于调试的信息,并通过UART将调试信息输出到PC上,方便进一步的查看分析。根据本发明的一个实施例,发明人的整体设计思想是,在共享内存区域中分别划分给不同DSP核日志存放区域。各DSP生成对应日志信息存储到各自共享内存区域中。DSP1作为完成物理层L1C主控制的业务任务,负责控制其他DSP启动执行,同时对其他DSP生成的日志存储及输出进行管理。DSP1控制日志通过低速串口UART输出。PC侧通过串口软件进行解析,利用串口工具软件为每个日志信息增加时间戳信息。
基于上述设计思想,本发明的实时多核DSP软件的日志系统,如图3所示,包括控制单元、日志写入单元、日志存储单元、日志输出单元。以下逐一说明各单元。
一、控制单元。
控制单元用于根据预先设定的参数初始化工具,管理和调度运行在D SP上的任务,以及基于设定的运行模式控制其他各单元完成日志信息的写入和输出。
控制单元将运行在DSP上的任务分为两类进行管理和调度,分别是业务任务和日志输出任务。其中,业务任务完成SOC系统的功能,例如,UE侧LTE物理层功能。日志输出任务完成将日志存储单元中的日志通过日志输出单元输出到PC。
控制单元基于任务队列管理业务任务及日志输出任务,在业务调度过程中,优先保证业务任务执行。在业务任务闲时,控制单元调度执行日志输出任务,控制日志输出单元在每次日志输出任务仅输出单个字节,日志输出任务完成后,控制单元立即根据业务任务忙闲状态,调度执行业务任务。这样可以优先保证执行高速的业务任务,使业务任务不受低速的日志输出任务的影响。
DSP启动后,控制单元进行初始化,创建各项业务任务,为每个任务设置数块参数缓存,将任务参数存放到对应参数缓存中,优选的,设置10块缓存,每块缓存长度为32字节。控制单元还将各项业务任务的地址存放到函数地址指针数组,将数组元素的索引作为业务任务索引,与任务建立对应关系,优选的,该函数地址指针数组大小为64。随后,控制单元将业务任务索引和对应的参数地址存入任务队列中,优选的,任务队列深度为128。任务执行时,控制单元根据业务任务索引,调度业务任务进入对应任务函数入口地址进行执行。控制单元执行完一个业务后,会判断任务队列是否存在任务,如果队列存在任务,则选取队列头的任务执行,否则,进入空闲状态。
控制单元还根据设置的日志参数,管理日志系统的工作模式。日志参数包括日志系统的工作模式,DSP的数量,DSP主核编号,UART编号等。日志系统有两种日志写入与输出模式,分别是第一模式与第二模式。
之所以支持两种写入与输出模式,是为了解决在通信接口速率不足时,如何满足实时高速DSP调试需求的问题。DSP执行高速实时业务任务时,会产生高带宽大数据量的日志信息,而低速通信接口只能提供低速率的日志输出,这是必然存在的矛盾。通过分析发现,一方面,DSP产生的大量日志中,只有异常出现点的上下文日志才是开发调试人员需要关注的,而这些日志通过低速通信接口输出是满足需求的。另一方面,调试开发人员需要根据程序执行日志以判断程序执行逻辑正确与否,而这些日志事先无法区分正常与异常。
基于上述两方面的分析,日志系统设置两种模式。
工具处于第一模式时,日志写入单元将日志数据连续写入对应日志存储单元,一旦业务任务检测到执行异常,则触发输出日志存储单元的日志,用于开发调试人员异常分析。此工作模式下,日志写入单元将收到的日志数据写入到日志存储单元,如果日志存储单元写满,则从日志存储单元的起始位置继续写入最新的日志数据,将原有数据覆盖,如此循环写入。此种模式在正常情况下只写入,并不输出,一旦业务任务检测到执行异常后触发了日志输出,控制单元控制日志写入单元停止写入,控制日志输出单元将日志存储单元中的日志信息从头至尾全部输出。输出完毕后,日志系统又恢复到循环写入的状态,从日志存储单元的起始位置开始写入最新的日志数据。图4示出了在第一模式时,触发条件发生时的日志处理。触发条件满足,日志系统进入仅输出状态。
工具处于第二模式时,日志写入单元将收到的日志数据循环连续写入且循环连续输出。如果遇到日志内存写满的情况,则停止写入,待剩余日志输出完毕后,再继续写入。从而保证开发调试人员进行程序执行的正常/异常判断。在此模式下,日志写入单元将收到的日志数据连续写入日志存储单元。
第一模式和第二模式可以单独开启,也可以同时开启。根据本发明的一个实施例,日志存储单元分为两部分,一部分用于第一模式,另一部分用于第二模式。当同时开启两种模式时,日志写入单元将收到的同一份日志数据,同时写入到日志存储单元的两个部分。
第一模式和第二模式同时开启的优点在于:第一模式可将异常产生时刻的调试信息输出,第二模式可以将程序执行日志非异常时正常输出,便于开发调试人员确定程序执行状态。两者配合,既可以将异常时刻的调试信息完整输出,也可以满足开发调试程序执行状态追踪,满足了调试需求。
本发明通过设置两种日志的写入和输出模式有效解决了低速率通信接口无法满足实时任务高速的数据传输需求的问题。
二、日志写入单元
日志写入单元通过接口接收外部待写入的日志信息,并转换为标准ASCII码后发给日志存储单元,ASCII码信息易于常用工具软件解析。日志写入单元提供字符、字符串、各种数据类型的调用接口。开发调试人员可以更加灵活、便利的定义调试日志,同时可以很大提升日志的可读性。
图5示出了根据本发明一个实施例的日志系统定义的函数接口,满足开发调试人员的灵活使用。函数log_init()用于日志初始化。函数log_read_trigle()用于连续写入模式中触发输出。函数log_inchar(char c)用于字符日志输入内存。函数log_in32bit(long unsinged int c)用于32bit数据输入内存。函数log_in16bit(long unsigned intc)用于16bit数据log输入内存。函数log_8bit(long unsingned int c)用于8bit数据log输入内存。函数log_64bit(long long unsinged int c)用于64bit数据log输入内存。函数log_instring(unsinged char*)用于字符串数据log存入内存,包括转义字符。函数log_print(unsigned char*,long long unsigned int val,sizeof(val))用于自适应数据内存输入。函数log_out()用于内存日志的输出。
图6为各DSP生成日志信息存入日志区域的控制过程。在连续写入模式(第一模式)时,DSP产生ASCII的日志信息直接写入对应日志区域,并更新对应尾位置。而在非连续写入模式(第二模式)时,需要判断日志区域是否写满,如果是则设置对应写满标识,否则写入日志区域。
三、日志存储单元
日志存储单元接收日志写入单元发来的日志并存储。日志存储单元包含日志区域,根据本发明的一个实施例,采用日志头结构体描述日志区域的信息。图7示出了日志头结构体的定义内容,其中,每个数据域为4字节。内存地址指示日志存储内存位置。区域大小指示内存地址大小。尾位置指示当前末尾位置,初始时为1。头位置指示当前头位置,初始为0。写满标志指示内存区域已经写满,初始为未写满状态。模式数据域为连续写入(第一模式)、非连续写入(第二模式)和仅输出三种状态,其中仅输出状态用于非连续写入写满和连续写入触发条件发生时切换的状态。输出完剩余日志后,日志模式会重新初始化恢复成正常对应模式。DSP核标识指示日志产生的DSP核ID。
根据本发明的一个实施例,日志存储单元基于共享内存实现。基于共享内存的方式有助于简化控制单元、日志写入单元、日志存储单元以及日志输出单元之间控制信息和日志数据的传递。
图8示出了根据本发明一个实施例各DSP初始进入时的初始化过程。各DSP进入时初始化过程时,各DSP均需要初始化日志头结构体,其中各日志内存提前划分,与其他功能内存区分。
四、日志输出单元。
与日志存储单元连接,用于根据控制单元的信号输出日志。日志输出单元将低速率通信口信号与DSP交互处理解耦,降低对DSP的影响。通常情况下,DSP的主频较高处理较快,而外部通信接口速率较慢。直接基于DSP与外部通信接口的信号进行交互,会导致DSP挂起或等待而业务任务处理受到影响。DSP与外部接口信号交互方式由等待执行改为查询执行的方式。这样在外部通信端口信号未反馈情况下,DSP可以处理其他任务,从而有效避免外部通信接口对DSP处理的影响。以下通过对比UART输出信号与DSP交互处理解耦前和解耦后的工作过程,介绍采用解耦合的技术手段的优点。
图9为UART输出信号与DSP交互处理解耦合前的单个字符输出的流程示意图,解耦合之前,DSP处理器需要先后分别等待UART_LSR、UART_LSR_DR信号符合预期,之后才可以向串口地址输出一个字节数据。如果两个信号不符合预期,则DSP处理器需要循环查询等待,此时,即使有业务任务需要处理,也无法进行。
图10为UART输出信号与DSP交互处理解耦合后的单个字符输出的流程示意图,解耦合之后,DSP同时查询上述两个信号是否符合预期,如果符合则输出字节数据到串口地址,否则,控制单元将日志输出任务切换为业务任务,DSP可以继续响应业务任务,有效避免了UART输出过多占用DSP输出时间。对于多字节日志数据输出,相邻两个字节可以离散占用DSP空闲时间片用于日志输出,从而避免了日志任务对业务任务执行的影响。
以上介绍了日志输出单元如何将UART输出信号与DSP交互处理进行解耦。
图11示出了日志输出控制过程。在本例中DSP1作为处理核。首先判断是否为第一模式,如果是,则不输出,否则查询对应模块日志是否非空。如果模块日志不为空,则查询UART信号状态,如果符合预期则输出一个字节,否则结束。如果模块日志为空,判断日志写满标志是否被标识,是则重新初始化日志区域内存。本例中,第一模式和第二模式没有同时工作。如果需要同时启动,则需要设置独立的两块日志区域,分别同时输出对应内存的日志。
以上分别介绍了各单元的功能,下面介绍本发明基于上述各单元的工作过程。
图12所示为根据本发明一个实施例的日志系统的主要工作过程。由图可知,日志系统首先需要进行初始化,初始化由控制单元进行,包括对日志存储单元的初始化,设定本DSP日志存储区域、初始化日志头结构体及运行模式等,之后,控制单元基于任务队列进行任务处理,优先调度执行任务队列中的业务任务,在业务任务中,调用日志写入单元的日志接口,生成日志数据存储到日志存储单元的对应日志区域中。当任务队列中没有业务任务时,通过日志输出单元执行日志输出任务,将日志通过串口输出。
图13所示为根据本发明一个实施例的日志输出的工作过程。各个DSP调用日志写入单元的输出接口函数产生ASCII编码的日志信息,存储到日志存储单元的基于共享内存的日志区域中。各个DSP在各自日志内存区域中生成其日志,DSP1的控制单元通过各内存区域日志头结构体管理其他DSP内存区域的日志,并在自身业务任务闲时,通过日志输出单元查询UART状态,输出DSP的日志信息,每次仅输出一个字符。输出的日志信息可在与DSP串口连接的PC上,通过串口软件实时读出。
本发明还提供上述日志系统的使用方法,包括:
步骤1,根据实际需求确定日志系统的部署方式,所述部署方式包括集中式、分布式和混合式。日志系统支持分布式、集中式和混合式灵活架构的多核日志输出。其中,分布式是指在每个DSP上独立部署日志系统,各日志系统独立运行,不与其他DSP的日志系统发生交互。集中式是指由一个DSP上的日志系统负责日志的管理和输出,其他DSP上的日志系统仅将日志信息写入到对应的日志区域。混合式是指数个DSP中,有的DSP日志系统以分布式运行,有的DSP日志系统以集中式运行,其中,分布式运行的DSP数量为一个及以上,集中式运行的DSP的数量为两个及以上。对于多核的DSP系统,各DSP的日志在共享内存区域中分别生成,日志的管理和输出可选取其中一个DSP核进行集中管理和输出,也可以分别用不同DSP管理和通信口输出。每个DSP上的日志系统软件程序一样,只需要设置对应模式及输出口即可。
步骤2,根据所述部署方式在各个DSP上部署日志系统,包括设置各DSP产生的日志存放在共享内存的区域,设置负责日志管理和输出的DSP核、输出端口以及运行模式,所述运行模式包括第一模式和第二模式。根据本发明的一个实施例,例如,采用集中式架构,DSP1作为集中式日志管理和输出的DSP核,其他DSP仅产生各自的日志到对应内存区域。
步骤3,各DSP工程包含日志系统的函数及头文件,在业务任务中通过调用函数日志接口输出日志信息。
步骤4,启动日志系统和PC的串口工具进行日志输出。
图14展示了根据本发明一个实施例的使用日志系统的具体流程图。首先确定各DSP日志内存区域,并确定由哪些DSP作为日志输出控制核及分别由哪些通信口输出。然后,将日志系统头文件及源文件包含到DSP工程中,并在各DSP程序初始化中调用初始化程序完成各自初始化。对于,日志输出控制核,需要关联业务函数地址与任务队列。之后,在业务函数中就可以调用日志接口生成日志。对于日志控制核,业务任务通过查询队列执行,且在队列为空时,执行对应通信口的单字节输出。
图15为日志系统的日志输出效果示例。由于DSP只能以时钟周期来计数,在输出的日志信息中没有具体的时分秒信息,因此,运行在PC上的UART软件在解析日志信息的过程中增加了时间戳。
综上所述,本发明基于低速率通信接口设计的日志系统,可以有效弥补SOC系统调试接口能力的不足,降低了芯片设计的难度及成本。选取最小数据单位——单字节为每次日志输出单位,并以此频次查询业务任务忙闲状态优先响应,有效保证了业务任务的执行。调试通信接口与DSP处理解耦合,有效避免低速接口对高速处理执行耗时,将日志输出对DSP处理的占用降低到一个字节的赋值语句。通过设计两种日志生成与输出模式,创新性解决低速通信接口满足实时高速DSP处理任务高带宽数据下调试需求。在多核DSP系统中,日志管理与输出可灵活采用集中式、分布式和混合式架构,适用各种SOC系统。封装了字符、字符串、数字数据类型及特殊转义字符输出接口,采用统一ASCII码保存日志,便于开发人员灵活的使用和解析。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。

Claims (10)

1.一种用于实时多核DSP软件的日志系统,包括控制单元、日志写入单元、日志存储单元、日志输出单元,其中,
所述控制单元分别与所述日志写入单元、所述日志存储单元、所述日志输出单元连接,用于管理和调度运行在DSP上的任务,以及基于设定的运行模式控制所述日志写入单元、日志存储单元、日志输出单元进行日志信息的写入和输出;
所述日志写入单元,根据所述控制单元的控制指示,将DSP上的业务任务发来的日志信息写入所述日志存储单元;
所述日志存储单元,与所述日志写入单元和日志输出单元连接,用于管理日志存储区域;
所述日志输出单元,与所述日志存储单元连接,用于根据所述控制单元调度的日志输出任务,将所述日志存储单元中的所述日志信息输出到DSP通信口。
2.根据权利要求1所述的日志系统,所述控制单元基于队列管理运行在DSP上的任务,所述任务包括业务任务和日志输出任务。
3.根据权利要求1所述的日志系统,所述设定的运行模式包括第一模式和第二模式,所述第一模式用于将日志信息连续循环写入所述日志存储单元,并由业务任务触发输出所述日志;所述第二模式用于在所述日志存储单元未写满的情况下将日志信息连续写入所述日志存储单元,并同时输出所述日志信息。
4.根据权利要求1所述的日志系统,所述日志写入接口接收的日志信息包括字符、字符串、8bit数据、16bit数据、32bit数据、64bit数据中的至少一种,所述日志写入接口将所述日志信息转换为ASCII编码保存到所述日志存储单元。
5.根据权利要求1所述的日志系统,所述日志存储单元基于共享内存实现。
6.根据权利要求5所述的日志系统,所述日志存储单元在所述共享内存中分别生成各DSP的日志区域。
7.根据权利要求6所述的日志系统,其部署方式包括集中式、分布式、混合式中的至少一种。
8.根据权利要求6所述的日志系统,所述DSP通信口为UART,所述日志输出单元每次输出所述日志存储单元中的一个字符。
9.一种用于权利要求1-8之一所述系统的方法,包括:
步骤1,控制单元基于任务队列进行任务处理,调用所述日志写入单元,生成日志数据存储到日志存储单元;
步骤2,当任务队列中没有业务任务时,所述控制单元调度执行日志输出任务,通过日志输出单元将日志通过串口输出,每次输出一个字符。
10.根据权利要求9所述的方法,所述串口为UART,所述日志输出单元根据UART的状态确定是否输出所述字符,如果所述UART的状态不满足预期值,所述控制单元调度执行业务任务。
CN202011059641.6A 2020-09-30 2020-09-30 一种实时多核dsp软件的日志系统 Pending CN112162879A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011059641.6A CN112162879A (zh) 2020-09-30 2020-09-30 一种实时多核dsp软件的日志系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011059641.6A CN112162879A (zh) 2020-09-30 2020-09-30 一种实时多核dsp软件的日志系统

Publications (1)

Publication Number Publication Date
CN112162879A true CN112162879A (zh) 2021-01-01

Family

ID=73861619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011059641.6A Pending CN112162879A (zh) 2020-09-30 2020-09-30 一种实时多核dsp软件的日志系统

Country Status (1)

Country Link
CN (1) CN112162879A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282494A (zh) * 2021-05-25 2021-08-20 中国航空无线电电子研究所 一种对vaps生成的代码进行测试的方法
CN115480976A (zh) * 2022-10-09 2022-12-16 无锡众星微系统技术有限公司 一种软硬件协同片上系统诊断方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357666A (zh) * 2017-06-26 2017-11-17 西安微电子技术研究所 一种基于硬件保护的多核并行系统处理方法
CN110750372A (zh) * 2019-10-16 2020-02-04 深圳技威时代科技有限公司 基于共享内存的日志系统及日志管理方法
US20200065223A1 (en) * 2017-10-30 2020-02-27 Bank Of America Corporation Robotic process automation enabled file dissection for error diagnosis and correction

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357666A (zh) * 2017-06-26 2017-11-17 西安微电子技术研究所 一种基于硬件保护的多核并行系统处理方法
US20200065223A1 (en) * 2017-10-30 2020-02-27 Bank Of America Corporation Robotic process automation enabled file dissection for error diagnosis and correction
CN110750372A (zh) * 2019-10-16 2020-02-04 深圳技威时代科技有限公司 基于共享内存的日志系统及日志管理方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113282494A (zh) * 2021-05-25 2021-08-20 中国航空无线电电子研究所 一种对vaps生成的代码进行测试的方法
CN113282494B (zh) * 2021-05-25 2023-09-15 中国航空无线电电子研究所 一种对vaps生成的代码进行测试的方法
CN115480976A (zh) * 2022-10-09 2022-12-16 无锡众星微系统技术有限公司 一种软硬件协同片上系统诊断方法
CN115480976B (zh) * 2022-10-09 2023-05-23 无锡众星微系统技术有限公司 一种软硬件协同片上系统诊断方法

Similar Documents

Publication Publication Date Title
JP3929574B2 (ja) 集積回路装置及びその通信方法
EP0840219B1 (en) An integrated circuit device and method of communication therewith
JP4456420B2 (ja) ネットワークベースの階層エミュレーションシステム
US6279103B1 (en) Method and device for providing an instruction trace from an on-chip CPU using control signals from the CPU
CN102508753B (zh) Ip核验证系统
US10628548B2 (en) Flow control in networking system-on-chip verification
EP0849668B1 (en) Diagnostics system and procedure in an integrated circuit device
JPH10253719A (ja) Tapコントローラを有する集積回路
CN115496034B (zh) 多模式gpu联合仿真系统
CN112162879A (zh) 一种实时多核dsp软件的日志系统
US6041378A (en) Integrated circuit device and method of communication therewith
US7130788B2 (en) Emulation components and system including distributed event monitoring, and testing of an IC design under emulation
CN115688676A (zh) 基于tlm的gpu联合仿真系统
CN115686655A (zh) 用于gpu ip验证的联合仿真系统
US6134481A (en) Message protocol
CN116090378A (zh) 基于UVM的PCIe转RapidIO桥接芯片验证平台
US10664637B2 (en) Testbench restoration based on capture and replay
US20040078187A1 (en) Emulation components and system including distributed routing and configuration of emulation resources
CN111427839A (zh) 一种Intel SoC FPGA的远程在线配置、调试方法
US9581643B1 (en) Methods and circuits for testing partial circuit designs
CN115618800A (zh) 基于dpi的gpu联合仿真系统
CN113496108A (zh) 一种应用于仿真的cpu模型
US20230289500A1 (en) Method and system for building hardware images from heterogeneous designs for eletronic systems
CN115629928B (zh) 一种面向类脑处理器的软硬协同验证方法及系统
CN112445659B (zh) 一种多协议高速serdes测试实现方法及系统

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210101