本技术涉及集成电路,特别涉及嵌入式芯片技术。
背景技术:
1、嵌入式系统是一种cpu、内存、传输等资源有限的计算机系统,其调试方式往往需要通过输出运行信息的方式进行。但是由于系统资源有限,需要较少的输出调试信息,避免占用过多的系统资源。
2、由于嵌入式系统调试需要将各种内部系统运行信息输出到嵌入式系统外部才能进行分析,因此,如何输出效率更高、更易于维护、更易维护人员理解的输出和产生调试信息是非常重要的。
3、常规的调试信息主要分为直接输出方式和非直接输出方式。
4、直接输出方式就是将需要输出的调试信息如”hello world”直接按照字符串通过一定的程序(如printf及其相关调用子程序)以及硬件(如串口、dma、spi)输出到嵌入式系统外部,直接方式实现简单,通俗易懂,维护简单,但是效率较低,所以很多需要关注系统效率的嵌入式系统使用非直接输出方式。
5、另一方面,非直接输出方式需要将输出的调试信息进行一次各条调试信息对应特征码(如程序中某条”hello world”的特征码为8706)关系的提取,并将对应关系保存在嵌入式系统外部,在需要传输特定信息如“hello world”时,只需要传递特定的对应特征码8706即可。通过这种方式可以大幅度降低调试信息的输出量,从而节省系统资源消耗,提高系统运行效率。
6、然而,这种方式仍然存在一些不足之处,例如,无法做到在使用非直接输出方式输出调试信息的同时,既能够有效地保持代码易懂性,又能够有效地避免版本的维护性,并且实现简单。
技术实现思路
1、本技术的目的在于提供一种嵌入式芯片调试信息输出的方法及系统,能够在使用非直接输出方式输出调试信息的同时,既能够有效地保持代码易懂性,又能够有效地避免版本的维护性,并且实现简单。
2、本技术公开了一种嵌入式芯片调试信息输出方法,包括:
3、将第一源代码载入存储器;
4、逐行扫描存储器中的第一源代码,查找预定的调试信息输出函数;
5、如果找到所述函数,则获取该函数的参数列表中第一特征值参数和第一调试信息参数,并计算第一调试信息参数的第一特征值,如果第一特征值和第一特征数参数不相同,则将第一源代码中第一特征数参数更新为第一特征值并将修改后的第二源代码保存到存储器;
6、逐行扫描存储器中的第二源代码,查找所述函数;
7、如果找到所述函数,则获取该函数的参数列表中第二特征值参数和第二调试信息参数,如果信息库中不存在第二特征值参数,则将第二特征值参数和第二调试信息参数作为一对特征值和调试信息的对应关系加入所述信息库;
8、在嵌入式芯片中运行第二源代码,获得该芯片的输出信息;对所述输出信息进行解析,获得第二特征值;查询并输出所述信息库中对应于第二特征值的调试信息。
9、在一个优选例中,所述计算第一调试信息参数的第一特征值,进一步包括:
10、计算第一调试信息参数的sha256值;
11、从所述sha256值中截取预定长度的片段作为第一特征值。
12、在一个优选例中,所述预定长度为40-48比特。
13、在一个优选例中,所述查询并输出所述信息库中对应于第二特征值的调试信息,进一步包括:
14、根据第二特征值查询所述信息库,得到第一调试信息;
15、根据第一调试信息和所述输出信息中的其他参数,输出第二调试信息。
16、在一个优选例中,所述存储器为内存。
17、本技术还公开了一种嵌入式芯片调试信息输出系统包括:
18、存储器,用于存储源代码;
19、信息库,用于存储特征值和调试信息的对应关系;
20、特征值更新模块,用于将第一源代码载入存储器,逐行扫描存储器中的第一源代码,查找预定的调试信息输出函数,如果找到所述函数,则获取该函数的参数列表中第一特征值参数和第一调试信息参数,并计算第一调试信息参数的第一特征值,如果第一特征值和第一特征数参数不相同,则将第一源代码中第一特征数参数更新为第一特征值并将修改后的第二源代码保存到存储器;
21、信息库更新模块,用于逐行扫描存储器中的第二源代码,查找所述函数;如果找到所述函数,则获取该函数的参数列表中第二特征值参数和第二调试信息参数,如果所述信息库中不存在第二特征值参数,则将第二特征值参数和第二调试信息参数作为一对特征值和调试信息的对应关系加入所述信息库;
22、调试模块,用于获取嵌入式芯片运行第二源代码时的输出信息,对所述输出信息进行解析,获得第二特征值,查询并输出所述信息库中对应于第二特征值的调试信息。
23、在一个优选例中,所述特征值更新模块通过以下方式计算第一调试信息参数的第一特征值:
24、计算第一调试信息参数的sha256值;
25、从所述sha256值中截取预定长度的片段作为第一特征值。
26、在一个优选例中,所述调试模块通过以下方式查询并输出所述信息库中对应于第二特征值的调试信息:
27、根据第二特征值查询所述信息库,得到第一调试信息;
28、根据第一调试信息和所述输出信息中的其他参数,输出第二调试信息。
29、本技术还公开了一种嵌入式芯片调试信息输出系统包括:
30、存储器,用于存储计算机可执行指令;以及,
31、处理器,与所述存储器耦合,用于在执行所述计算机可执行指令时实现如前文描述的方法中的步骤。
32、本技术还公开了一种计算机可读存储介质所述计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
33、本技术实施方式中,使用有极低重复性的哈希值代替直接输出调试信息来提高系统维护性;进一步的,使用在源代码文件中直接产生与插入哈希值的方式提高源代码易懂性;进一步的,使用截断方式的哈希特征码达到高效输出调试信息;由此,能够在使用非直接输出方式输出调试信息的同时,既能够有效地保持代码易懂性,又能够有效地避免版本的维护性,并且实现简单。
34、本技术的说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本技术所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本技术上述
技术实现要素:
中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均因视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征a+b+c,在另一个例子中公开了特征a+b+d+e,而特征c和d是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征e技术上可以与特征c相组合,则,a+b+c+d的方案因技术不可行而应当不被视为已经记载,而a+b+c+e的方案应当视为已经被记载。