[发明专利]一种优化嵌入式系统诊断打印的方法有效
申请号: | 201910236045.1 | 申请日: | 2019-03-26 |
公开(公告)号: | CN109960590B | 公开(公告)日: | 2021-05-18 |
发明(设计)人: | 曾令辉 | 申请(专利权)人: | 北京简约纳电子有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F3/12 |
代理公司: | 南京正联知识产权代理有限公司 32243 | 代理人: | 郭俊玲 |
地址: | 100086 北京市海淀区知春*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及计算机程序领域,具体地说,是一种优化嵌入式系统诊断打印的方法,包括以下步骤:步骤一:定义诊断函数宏A和函数B;步骤二:定义函数宏A与函数B的引用关系;步骤三:使能编译器在汇编C代码之前生成*.i文件;步骤四:编译规则对步骤三步骤中的每个编译单位进行诊断函数调用代码串进行模式匹配提取,修改,替换,并同时更新诊断数据库文件;步骤五:函数B运行时,获取“格式化字符串哈希值”参数;步骤六:得到格式化串,最后把格式化串输出到终端显示器上。 | ||
搜索关键词: | 一种 优化 嵌入式 系统 诊断 打印 方法 | ||
【主权项】:
1.一种优化嵌入式系统诊断打印的方法,其特征在于,包括以下步骤:步骤一:定义诊断函数宏A和函数原型B,设置A(程序模块ID,过滤类型,格式化字符串)函数原型B(格式化字符串哈希值,参数内存尺寸,程序模块ID,过滤类型,格式化字符串);步骤二:定义函数宏A与函数原型B的引用关系,#define A(程序模块ID,过滤类型,格式化字符串)函数原型B(0,0,程序模块ID,过滤类型,格式化字符串,##__VA_ARGS__)函数原型B中的参数若在宏函数A中不存在,则使用缺省定义,包括如下:1)格式化字符串哈希值:在函数宏A中不存在,缺省使用特征值0,0值表征为启用打印优化功能2)参数内存尺寸:在宏函数A中不存在,缺省使用特征值0,0值表征为变参内存的大小为0,即,打印函数函数不存在变参列表;步骤三:使能编译器在汇编C代码之前生成*.i文件,读入C文件中的引用文件并进行宏扩展,生成一个高级语言汇编前的临时文件,其次在编译规则里插入代码字符处理脚本,主要功能为提取函数B调用代码串S(函数A的调用代码已经被扩展为函数B的代码调用),根据应用程序传入的“格式化字符串哈希”值规则,若为0,则对“格式化字符串”参数串进行哈希转换为整形值n,并根据格式符‘%’计算变参内存大小为整形m(单位为字),然后修改S中的“格式化字符串哈希”参数0为n,“参数内存尺寸”参数0为m,得到一个新的代码串S’,最后替换C文件中的对函数B的调用代码串S为S’,同时每个编译单位文件都要生成一个诊断数据库文件,该文件的每个item为哈希值与“格式化字符串参数”的一一映射;步骤四:编译规则对步骤三步骤中的每个编译单位文件重复执行步骤三的任务,直到整个编译项目的所有编译单位都完成了步骤三的任务;步骤五:函数B运行时,获取“格式化字符串哈希值”参数,根据“参数内存尺寸”参数获取变参内存大小m,通过标准C的va_start获取变参列表,并通过标准C的va_arg宏和m快速获取变参内存,接着把参数内存和哈希值按诊断帧格式组织成一个二进制负载(图3),最后把诊断二进制负载包以流的形式写入诊断IO任务的流缓存;步骤六:诊断IO任务把流缓存发送到嵌入式系统外设接口;步骤七:上位机软件接收IO收到的数据流,识别出每个诊断负载的边界,并分拣出一个个完整的诊断负载包,按照诊断帧格式结构化提取出诊断负载中的哈希值和参数二进制内存,接着从诊断数据库里寻找该hash值对应的格式化参数字符串,调用格式化函数对参数二进制内存进行格式化,进而得到诊断打印的格式化串,最后把格式化串输出到终端显示器上。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京简约纳电子有限公司,未经北京简约纳电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201910236045.1/,转载请声明来源钻瓜专利网。