PS trace

一、 介绍:

PS(protocol stack) Trace的方法,在KAL层有两种方法(提供两个Function)可以对protocol stack 进行Trace

Trace Logging Architecture:

 

 

 

 

 

RS232

 

 

 

TST Service: TST moduleProtocol Stack tasks提供的functions,如:

void kal_trace()

void kal_prompt_trace()

TST Task: TST main module, Trace信息传送到PC端。

KAL: Kernel adaptation layer,针对ProtocolOS做的封装层。

Logging Related Service: KAL层绑定的服务功能,帮助TST传输数据。

Task 1 Task 2.Protocol stack的任务。

1. 方法1

kal_prompt_trace,类似于code中的printf功能。

定义:void kal_prompt_trace(module_type, kal_char *fmt, …);

 module_type: moduleID号,stack_config.h中定义

 fmt: 要输出显示的字符串

2. 方法2

kal_trace,和以上介绍的方法1不同,使用一个索引值来代替一个复杂的字符串,此功能使用更复杂。

定义:void kal_trace(trace_class_enum class, kal_uint32, kal_char *fmt, …);

 class: the trace class of this trace;由编程员定义的,每个module都有15个类,

定义见kal_trace.h

typedef enum

{

   TRACE_FUNC,

   TRACE_STATE,

   TRACE_INFO,

   TRACE_WARNING,

      TRACE_ERROR,

   TRACE_GROUP_1,

   TRACE_GROUP_2,

   TRACE_GROUP_3,

   TRACE_GROUP_4,

   TRACE_GROUP_5,

   TRACE_GROUP_6,

   TRACE_GROUP_7,

   TRACE_GROUP_8,

   TRACE_GROUP_9,

   TRACE_GROUP_10

}trace_class_enum;

 

 fmt: 和以上介绍的方法1不同,更复杂一些,在下面的例子中介绍。

 

注意

1). 在要使用此functioncodeinclude kal_trace.hstack_config.h

2). These two functions are just used for task level. Drive level will has race 

condition.

 

 

二、 如何添加新的Trace

1. Add Traces by kal_prompt_trace:

如在ModuleàMOD_XXXc文件àtest.c使用kal_prompt_trace:

Test.c

1   #include “kal_trace.h”  

2   kal_int16  a,b;

3

4

.

.

7   kal_prompt_trace(MOD_XXX, “this is a prompt trace testing a=  b= ”, a, b);

8

9

Step 1: 以上Line 1à#include “kal_trace.h”

Step 2: 以上Line 7à kal_prompt_trace(MOD_XXX, “this is a prompt trace testing a=  

b= ”, a, b);

Step 3: rebuild Test.c, Catcher database无需更改

 

2. Add Traces by kal_trace:

这个使用比较复杂,但功能更强,可以在目标板系统上保存code sizecommunication bandwidth。使用的步骤参见同名pdf文档Page9Page11

2.1  Add Traces to a New Module:

Step 1: Write a xxx_trc.h in the following format for new module.

xxx_trc.h

#ifndef   _xxx_TRACE_H

    #define  _xxx_TRACE_H

3

     #ifndef  GEN_FOR_PC

           #ifndef  _STACK_CONFIG_H

6                  #error “stack_config.h should be included before tst_config.h”

7             #endif

8

9       #else

10            #include “kal_trace.h”

11      #endif  /*GEN_FOR_PC*/

12

13

14      #ifnder  _KAL_TRACE_H

15            #error “kal_trace.h should be included before tst_trace.h”

16      #endif

17

18

19

20      BEGIN_TRACE_MAP(MOD_XXX)

21            TRC_MSG(XXX_MSG1“var1=%d var2=%d var3=%d”)

22      END_TRACE_MAP(MOD_XXX)

23   #endif  /*xxx_TRACE_H*/

a.  以上的示例.h文件中,黑颜色和红颜色部分程序员不能修改,只有蓝色部

 分可以改。

b.  2022行的MOD_XX是在stack_config.hmodule_type enum定义的新

module namecustomer’s module name

c.  21行定义了一个XXX_MSG1message index,在c文件中要用到,在上

面的例子中XXX_MSG1是一个字符串的index

  d.  XXX_MSG1必须是唯一的,所以,最好把module name做为前缀。

Step 2: Program the trace code in new module C file.

1

2   #include “kal_release.h”  /*Basic data type*/

3

4   #include “stack_common.h”

5   #include “stack_msgs.h”

 #include “app_ltlcom.h”   /*Task message communiction*/

 

8   #include “syscomp_config.h”

9   #include “task_config.h”    /*Task creation*/

10   

11   #include “app_buff_alloc.h”  /*Buffer management*/

12   

13   #include “tst_def.h”

14   

15   #include “XXX_trace.h”

16   

17   kal_uint32  var1 = 1;

18   kal_uint32  var2 = 3;

19   kal_uint32  var3 = 3;

20   

21   kal_trace(TRACE_INFO,XXX_MSG1, var1, var2, var3);

 

 Step3: Add the xxx_trc.h file to the NEW_CUS_REL_TRACE_DEFS of project 

specific.mak file(xxxx_gprs.mak, xxxx是工程名)in build load environment.

 Step4: Re-execute the code generate process. And re-compile the C file.

 Step5: Update the database for PC side Catcher. It means that Catcher MUST use the 

new database generated in Step4.

2.2  Add Traces to An Existed Module:

  Step1: Find the trace definition file of the module(the xxx_trc.h files are listed in 

EXISTED_CUS_REL_TRACE_DEFS of project specific.mak file) and add 

new trace definition to the file. User must NOT add the new trace definition 

file for the original existed module.

  Step2: Add trace code to the existed module source code. This step is the same with 

add trace code to new module.

  Step3: Re-execute the code generate process. And re-compile the C file.

Step4: Update the database for PC side Catcher. It means that Catcher MUST use 

the new database generated in Step3.

 

3Trace Usage Limitations

a. Never uses the trace system in the low or high ISR;

b. If user has no source code about one trace module, Never modify the trace definition of the module;

If you add new trace definitions in old definition file, Don’t delete any definitions that added by others. Because it may be referenced by some library or object file.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值