[Feature][ZXW-65]merged P49 base code

Change-Id: I3e09c0c3d47483bc645f02310380ecb7fc6f4041
diff --git a/ap/build/scripts/trace32/zx297520v3/linux_kmalloc_debug_symbol.cmm b/ap/build/scripts/trace32/zx297520v3/linux_kmalloc_debug_symbol.cmm
new file mode 100755
index 0000000..6271a61
--- /dev/null
+++ b/ap/build/scripts/trace32/zx297520v3/linux_kmalloc_debug_symbol.cmm
@@ -0,0 +1,77 @@
+//**************************************************************************

+//*

+//*                  Copyright (c) 2016 ZTE Corporation.

+//*

+//**************************************************************************

+// geanfeng

+

+//**************************************************************************

+//* ½Å±¾½âÎöÇøÓò

+//**************************************************************************

+//´´½¨Ò»¸ö´°¿Ú£»

+&width=50.

+&nameWidth=20.

+&fileColumns=1000.

+&fileLines=1000.

+

+area.create trace &fileColumns  &fileLines

+area.clear trace

+area.select trace

+

+//´ò¿ªÎļþ£»

+&dir=os.pwd()+"\log_kmalloc"

+if !os.dir(&dir)

+(

+    mkdir &dir  

+) 

+&file="&dir\result.txt"

+area.open trace &file

+area.view trace

+

+//Èç¹ûT32ÔÚÔËÐÐÒª¶Ïס£»

+if run()

+(

+    break

+)

+

+&node=v.value(kmem_employ_head.next)

+

+&head=v.value(&kmem_employ_head)

+

+while !(&node==&head)

+(

+	&addr=v.value(((struct heap_record*)&node)->addr)

+	&size=v.value(((struct heap_record*)&node)->size)

+	&thread=v.string(((struct heap_record*)&node)->task_name)

+	&i=0

+	&stack=""

+	//&stack_value=v.value(((struct heap_record*)&node)->stack_frame[&i])

+	&stack_value=v.value(((struct heap_record*)&node)->stack_frame[&i])

+	while &i<0x6

+	(

+		if !(&stack_value==0)

+		(

+			//&stack_frame=Y.function(P:&stack_value)

+			//&stack_frame=os.file.name("&stack_frame")

+			&stack_frame=v.string(((struct heap_record*)&node)->stack_frame[&i])

+			&stack="&stack"+"&i:"+"&stack_frame "

+			&i=&i+1

+			&stack_value=v.value(((struct heap_record*)&node)->stack_frame[&i])

+			//&stack_value=v.string(((struct heap_record*)&node)->stack_frame[&i])

+		)

+		else

+		(

+			goto next

+		)

+	)

+next:

+	&size=format.decimal(10., &size)

+	print "node: "+"&node"+"  addr: "+"&addr"+"  size:"+"&size"+"  thread:"+"&thread"+"  stack_frame:"+"&stack" 

+	&node=v.value(((struct list_head*)&node)->next)

+)

+

+print "allocated kmalloc End-----------------------------"

+

+area.close trace

+ENDDO

+//****ÔËÐнáÊø*****

diff --git a/ap/build/scripts/trace32/zx297520v3/print_os_statistics_irqnr.cmm b/ap/build/scripts/trace32/zx297520v3/print_os_statistics_irqnr.cmm
new file mode 100755
index 0000000..73e5bf6
--- /dev/null
+++ b/ap/build/scripts/trace32/zx297520v3/print_os_statistics_irqnr.cmm
@@ -0,0 +1,648 @@
+//**************************************************************************

+//*

+//*                  Copyright (c) 2016 ZTE Corporation.

+//*

+//**************************************************************************

+// geanfeng

+

+//**************************************************************************

+//* ½Å±¾½âÎöÇøÓò

+//**************************************************************************

+

+//¶¨Òå¾Ö²¿±äÁ¿

+local &os_time0 &os_time1 &os_time2 &os_time3 &os_time4 &os_time5 &os_time6 &os_time7

+local &os_time_cnt &os_next_time

+local &os_swap_last &os_swap_cnt &os_swap_next

+local &os_irq_start_last &os_irq_start_cnt &os_irq_start_next

+local &os_irq_end_last &os_irq_end_cnt &os_irq_end_next

+

+//for linux

+local &os_softirq_start_last &os_softirq_start_cnt &os_softirq_start_next

+local &os_softirq_end_last &os_softirq_end_cnt &os_softirq_end_next

+local &os_timer_start_last &os_timer_start_cnt &os_timer_start_next

+local &os_timer_end_last &os_timer_end_cnt &os_timer_end_next

+

+local &os_irq_enable &os_softirq_enable &os_timer_enable

+&os_irq_enable=1

+&os_softirq_enable=1

+&os_timer_enable=1

+

+//for tos

+local &os_dsr_start_last &os_dsr_start_cnt &os_dsr_start_next

+local &os_dsr_end_last &os_dsr_end_cnt &os_dsr_end_next

+&os_dsr_enable=0

+

+//´´½¨Ò»¸ö´°¿Ú£»

+&width=20.

+&nameWidth=20.

+&fileColumns=200.

+&fileLines=500.

+

+area.create trace &fileColumns  &fileLines

+area.clear trace

+area.select trace

+

+//´ò¿ªÎļþ£»

+&dir=os.pwd()+"\log"

+if !os.dir(&dir)

+(

+    mkdir &dir  

+) 

+&file="&dir\result.txt"

+area.open trace &file

+area.view trace

+

+//Èç¹ûT32ÔÚÔËÐÐÒª¶Ïס£»

+if run()

+(

+    break

+)

+

+if symbol.exist(init_task)

+(

+	gosub LinuxTrace

+)

+

+if symbol.exist(tos_except)

+(

+	gosub TosTrace

+)

+

+area.close trace

+

+ENDDO

+//****ÔËÐнáÊø*****

+

+//*****************º¯Êý¶¨Òå**********************

+

+; ---------------------------------------------------------

+LinuxTrace:

+local &result

+

+if v.value(g_os_ddr_swapin_statistic)==0

+(

+	RETURN

+)

+

+&os_swap_last=v.value(g_os_ddr_swapin_statistic->index)

+&os_swap_cnt=v.value(sizeof(g_os_ddr_swapin_statistic->statistics)/sizeof(g_os_ddr_swapin_statistic->statistics[0]))

+&os_swap_next=&os_swap_last

+

+if &os_irq_enable==1

+(

+	&os_irq_start_last=v.value(g_os_ddr_irq_start_statistic->index)

+	&os_irq_start_cnt=v.value(sizeof(g_os_ddr_irq_start_statistic->statistics)/sizeof(g_os_ddr_irq_start_statistic->statistics[0]))

+	&os_irq_start_next=&os_irq_start_last

+	&os_irq_end_last=v.value(g_os_ddr_irq_end_statistic->index)

+	&os_irq_end_cnt=v.value(sizeof(g_os_ddr_irq_end_statistic->statistics)/sizeof(g_os_ddr_irq_end_statistic->statistics[0]))

+	&os_irq_end_next=&os_irq_end_last

+)

+else

+(

+	&os_irq_start_next=-1

+	&os_irq_end_next=-1

+)

+

+if &os_softirq_enable==1

+(

+	&os_softirq_start_last=v.value(g_os_ddr_softirq_start_statistic->index)

+	&os_softirq_start_cnt=v.value(sizeof(g_os_ddr_softirq_start_statistic->statistics)/sizeof(g_os_ddr_softirq_start_statistic->statistics[0]))

+	&os_softirq_start_next=&os_softirq_start_last

+	&os_softirq_end_last=v.value(g_os_ddr_softirq_end_statistic->index)

+	&os_softirq_end_cnt=v.value(sizeof(g_os_ddr_softirq_end_statistic->statistics)/sizeof(g_os_ddr_softirq_end_statistic->statistics[0]))

+	&os_softirq_end_next=&os_softirq_end_last

+)

+else

+(

+	&os_softirq_start_next=-1

+	&os_softirq_end_next=-1

+)

+

+if &os_timer_enable==1

+(

+	&os_timer_start_last=v.value(g_os_ddr_timer_start_statistic->index)

+	&os_timer_start_cnt=v.value(sizeof(g_os_ddr_timer_start_statistic->statistics)/sizeof(g_os_ddr_timer_start_statistic->statistics[0]))

+	&os_timer_start_next=&os_timer_start_last

+	&os_timer_end_last=v.value(g_os_ddr_timer_end_statistic->index)

+	&os_timer_end_cnt=v.value(sizeof(g_os_ddr_timer_end_statistic->statistics)/sizeof(g_os_ddr_timer_end_statistic->statistics[0]))

+	&os_timer_end_next=&os_timer_end_last

+)

+else

+(

+	&os_timer_start_next=-1

+	&os_timer_end_next=-1

+)

+

+//³õʼ»¯timeÊýÖµ

+if &os_swap_next==-1

+(

+	&os_time0=-1

+)

+else

+(

+	&os_time0=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data2)

+)

+if &os_irq_start_next==-1

+(

+	&os_time1=-1

+)

+else

+(

+	&os_time1=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data2)

+)

+if &os_irq_end_next==-1

+(

+	&os_time2=-1

+)

+else

+(

+	&os_time2=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data2)

+)

+if &os_softirq_start_next==-1

+(

+	&os_time3=-1

+)

+else

+(

+	&os_time3=v.value(g_os_ddr_softirq_start_statistic->statistics[&os_softirq_start_next].data2)

+)

+if &os_softirq_end_next==-1

+(

+	&os_time4=-1

+)

+else

+(

+	&os_time4=v.value(g_os_ddr_softirq_end_statistic->statistics[&os_softirq_end_next].data2)

+)

+if &os_timer_start_next==-1

+(

+	&os_time5=-1

+)

+else

+(

+	&os_time5=v.value(g_os_ddr_timer_start_statistic->statistics[&os_timer_start_next].data2)

+)

+if &os_timer_end_next==-1

+(

+	&os_time6=-1

+)

+else

+(

+	&os_time6=v.value(g_os_ddr_timer_end_statistic->statistics[&os_timer_end_next].data2)

+)

+

+&os_time_cnt=7.

+&os_next_time=0.

+

+print format.string("Name",32,' ')+" "+"Index"+"       "+"Time"+"          "+"Exce"

+

+&result=0

+while &result==0

+(

+	gosub LinuxPrintNextLine

+	if ((&os_swap_next==-1)&&(&os_irq_start_next==-1)&&(&os_irq_end_next==-1)&&(&os_softirq_start_next==-1)&&(&os_softirq_end_next==-1)&&(&os_timer_start_next==-1)&&(&os_timer_end_next==-1))

+	(

+		print "END"

+		&result=-1

+	)

+)

+RETURN

+

+; ---------------------------------------------------------

+LinuxPrintNextLine:

+local &time &str &line_index

+

+gosub GetMinTimeIndex &os_time_cnt

+ENTRY &index

+

+if &index==0

+(

+	local &task &addr

+	&task=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data1)

+	&addr=v.value(&((struct task_struct*)&task)->comm)

+	&str="THREAD: "+data.string(D:&addr)

+	&line_index=&os_swap_next

+	&time=&os_time0

+	gosub GetNextIndex &os_swap_cnt &os_swap_last &os_swap_next

+	ENTRY &os_swap_next

+	if &os_swap_next==-1

+	(

+		&os_time0=-1

+	)

+	else

+	(

+		&os_time0=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data2)

+	)

+)

+else if &index==1

+(

+	local &irq &addr

+	&irq=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data1)

+	//&addr=v.value(irq_desc[&irq].action->name)

+	&str="IRQSTA: "+format.DecimalU(1,&irq)+" S"

+	//&str="IRQSTA: "+data.string(D:&addr)+" S"

+	&line_index=&os_irq_start_next

+	&time=&os_time1

+	gosub GetNextIndex &os_irq_start_cnt &os_irq_start_last &os_irq_start_next

+	ENTRY &os_irq_start_next

+	if &os_irq_start_next==-1

+	(

+		&os_time1=-1

+	)

+	else

+	(

+		&os_time1=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data2)

+	)

+)

+else if &index==2

+(

+	local &irq &addr

+	&irq=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data1)

+	//&addr=v.value(irq_desc[&irq].action->name)

+	//&str="IRQEND: "+data.string(D:&addr)+" E"

+	&str="IRQEND: "+format.DecimalU(1,&irq)+" E"

+	&line_index=&os_irq_end_next

+	&time=&os_time2

+	gosub GetNextIndex &os_irq_end_cnt &os_irq_end_last &os_irq_end_next

+	ENTRY &os_irq_end_next

+	if &os_irq_end_next==-1

+	(

+		&os_time2=-1

+	)

+	else

+	(

+		&os_time2=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data2)

+	)

+)

+else if &index==3

+(

+	local &vec &func

+	&time=v.value(g_os_ddr_softirq_start_statistic->statistics[&os_softirq_start_next].data2)

+	&vec=v.value(g_os_ddr_softirq_start_statistic->statistics[&os_softirq_start_next].data1)

+	&func=v.value(softirq_vec[&vec].action)

+	&str="SIRQS: "+symbol.function(P:&func)+" S"

+	&line_index=&os_softirq_start_next

+	&time=&os_time3

+	gosub GetNextIndex &os_softirq_start_cnt &os_softirq_start_last &os_softirq_start_next

+	ENTRY &os_softirq_start_next

+	if &os_softirq_start_next==-1

+	(

+		&os_time3=-1

+	)

+	else

+	(

+		&os_time3=v.value(g_os_ddr_softirq_start_statistic->statistics[&os_softirq_start_next].data2)

+	)

+)

+else if &index==4

+(

+	local &vec &func

+	&time=v.value(g_os_ddr_softirq_end_statistic->statistics[&os_softirq_end_next].data2)

+	&vec=v.value(g_os_ddr_softirq_end_statistic->statistics[&os_softirq_end_next].data1)

+	&func=v.value(softirq_vec[&vec].action)

+	&str="SIRQE: "+symbol.function(P:&func)+" E"

+	&line_index=&os_softirq_end_next

+	&time=&os_time4

+	gosub GetNextIndex &os_softirq_end_cnt &os_softirq_end_last &os_softirq_end_next

+	ENTRY &os_softirq_end_next

+	if &os_softirq_end_next==-1

+	(

+		&os_time4=-1

+	)

+	else

+	(

+		&os_time4=v.value(g_os_ddr_softirq_end_statistic->statistics[&os_softirq_end_next].data2)

+	)

+)

+else if &index==5

+(

+	local &func

+	&time=v.value(g_os_ddr_timer_start_statistic->statistics[&os_timer_start_next].data2)

+	&func=v.value(g_os_ddr_timer_start_statistic->statistics[&os_timer_start_next].data1)

+	&str="TIMERS: "+symbol.function(P:&func)+" S"

+	&line_index=&os_timer_start_next

+	&time=&os_time5

+	gosub GetNextIndex &os_timer_start_cnt &os_timer_start_last &os_timer_start_next

+	ENTRY &os_timer_start_next

+	if &os_timer_start_next==-1

+	(

+		&os_time5=-1

+	)

+	else

+	(

+		&os_time5=v.value(g_os_ddr_timer_start_statistic->statistics[&os_timer_start_next].data2)

+	)

+)

+else if &index==6

+(

+	local &func

+	&time=v.value(g_os_ddr_timer_end_statistic->statistics[&os_timer_end_next].data2)

+	&func=v.value(g_os_ddr_timer_end_statistic->statistics[&os_timer_end_next].data1)

+	&str="TIMERE: "+symbol.function(P:&func)+" E"

+	&line_index=&os_timer_end_next

+	&time=&os_time6

+	gosub GetNextIndex &os_timer_end_cnt &os_timer_end_last &os_timer_end_next

+	ENTRY &os_timer_end_next

+	if &os_timer_end_next==-1

+	(

+		&os_time6=-1

+	)

+	else

+	(

+		&os_time6=v.value(g_os_ddr_timer_end_statistic->statistics[&os_timer_end_next].data2)

+	)

+)

+else

+(

+	print "Unknown Type"

+)

+

+gosub GetMinTime &os_time_cnt

+ENTRY &os_next_time

+

+print format.string("&str",32,' ')+" "+format.DecimalU(8,&line_index)+"    "+format.DecimalU(1,&time)+"    "+format.DecimalU(1,&os_next_time-&time)

+

+RETURN

+

+; ---------------------------------------------------------

+GetNextIndex:

+ENTRY &cnt &last_index &cur_index

+local &index

+

+if !((&cur_index>=0.)&&(&cur_index<&cnt))

+(

+	RETURN -1

+)

+

+&index=&cur_index+1

+if &index>=&cnt

+(

+	&index=0

+)

+if &index==&last_index

+(

+	&index=-1

+)

+RETURN &index

+

+; ---------------------------------------------------------

+GetMinTimeIndex:

+ENTRY &cnt

+local &i &min_index &min_val

+local &value &index

+

+&i=0.

+&min_index=0.

+&min_val=0xFFFFFFFF

+

+while &i<&cnt

+(

+	&index=string.cut("&i",-1)

+	&&value=&os_time&index

+	if (&value!=-1)&&(&min_val>=&value)

+	(

+		&min_val=&value

+		&min_index=&i

+	)

+	&i=&i+1

+)

+

+RETURN &min_index

+

+; ---------------------------------------------------------

+GetMinTime:

+ENTRY &cnt

+local &i &min_index &min_val

+local &value &index

+

+&i=0.

+&min_index=0.

+&min_val=0xFFFFFFFF

+

+while &i<&cnt

+(

+	&index=string.cut("&i",-1)

+	&&value=&os_time&index

+	if (&value!=-1)&&(&min_val>=&value)

+	(

+		&min_val=&value

+		&min_index=&i

+	)

+	&i=&i+1

+)

+

+RETURN &min_val

+

+; ---------------------------------------------------------

+TosPrintNextLine:

+local &time &str &line_index

+

+

+gosub GetMinTimeIndex &os_time_cnt

+ENTRY &index

+

+if &index==0

+(

+	local &task &addr

+	&task=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data1)

+	&addr=v.value(&((Cyg_Thread*)&task)->thread_name)

+	&str="THREAD: "+data.string(D:&addr)

+	&line_index=&os_swap_next

+	&time=&os_time0

+	gosub GetNextIndex &os_swap_cnt &os_swap_last &os_swap_next

+	ENTRY &os_swap_next

+	if &os_swap_next==-1

+	(

+		&os_time0=-1

+	)

+	else

+	(

+		&os_time0=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data2)

+	)

+)

+else if &index==1

+(

+	local &irq &addr

+	&irq=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data1)

+	&str="IRQSTA: "+format.DecimalU(1,&irq)+" S"

+	&line_index=&os_irq_start_next

+	&time=&os_time1

+	gosub GetNextIndex &os_irq_start_cnt &os_irq_start_last &os_irq_start_next

+	ENTRY &os_irq_start_next

+	if &os_irq_start_next==-1

+	(

+		&os_time1=-1

+	)

+	else

+	(

+		&os_time1=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data2)

+	)

+)

+else if &index==2

+(

+	local &irq &addr

+	&irq=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data1)

+	&str="IRQEND: "+format.DecimalU(1,&irq)+" E"

+	&line_index=&os_irq_end_next

+	&time=&os_time2

+	gosub GetNextIndex &os_irq_end_cnt &os_irq_end_last &os_irq_end_next

+	ENTRY &os_irq_end_next

+	if &os_irq_end_next==-1

+	(

+		&os_time2=-1

+	)

+	else

+	(

+		&os_time2=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data2)

+	)

+)

+else if &index==3

+(

+	local &dsr &addr

+	&dsr=v.value(g_os_ddr_dsr_start_statistic->statistics[&os_dsr_start_next].data1)

+	&str="DSRSTA: "+format.DecimalU(1,&dsr)+" S"

+	&line_index=&os_dsr_start_next

+	&time=&os_time3

+	gosub GetNextIndex &os_dsr_start_cnt &os_dsr_start_last &os_dsr_start_next

+	ENTRY &os_dsr_start_next

+	if &os_dsr_start_next==-1

+	(

+		&os_time3=-1

+	)

+	else

+	(

+		&os_time3=v.value(g_os_ddr_dsr_start_statistic->statistics[&os_dsr_start_next].data2)

+	)

+)

+else if &index==4

+(

+	local &dsr &addr

+	&dsr=v.value(g_os_ddr_dsr_end_statistic->statistics[&os_dsr_end_next].data1)

+	&str="DSREND: "+format.DecimalU(1,&dsr)+" E"

+	&line_index=&os_dsr_end_next

+	&time=&os_time4

+	gosub GetNextIndex &os_dsr_end_cnt &os_dsr_end_last &os_dsr_end_next

+	ENTRY &os_dsr_end_next

+	if &os_dsr_end_next==-1

+	(

+		&os_time4=-1

+	)

+	else

+	(

+		&os_time4=v.value(g_os_ddr_dsr_end_statistic->statistics[&os_dsr_end_next].data2)

+	)

+)

+else

+(

+	print "Unknown Type"

+)

+

+gosub GetMinTime &os_time_cnt

+ENTRY &os_next_time

+

+print format.string("&str",32,' ')+" "+format.DecimalU(8,&line_index)+"    "+format.DecimalU(1,&time)+"    "+format.DecimalU(1,&os_next_time-&time)

+

+RETURN

+

+; ---------------------------------------------------------

+TosTrace:

+local &result

+

+if v.value(g_os_ddr_swapin_statistic)==0

+(

+	RETURN

+)

+

+&os_swap_last=v.value(g_os_ddr_swapin_statistic->index)

+&os_swap_cnt=v.value(sizeof(g_os_ddr_swapin_statistic->statistics)/sizeof(g_os_ddr_swapin_statistic->statistics[0]))

+&os_swap_next=&os_swap_last

+

+if &os_irq_enable==1

+(

+	&os_irq_start_last=v.value(g_os_ddr_irq_start_statistic->index)

+	&os_irq_start_cnt=v.value(sizeof(g_os_ddr_irq_start_statistic->statistics)/sizeof(g_os_ddr_irq_start_statistic->statistics[0]))

+	&os_irq_start_next=&os_irq_start_last

+	&os_irq_end_last=v.value(g_os_ddr_irq_end_statistic->index)

+	&os_irq_end_cnt=v.value(sizeof(g_os_ddr_irq_end_statistic->statistics)/sizeof(g_os_ddr_irq_end_statistic->statistics[0]))

+	&os_irq_end_next=&os_irq_end_last

+)

+else

+(

+	&os_irq_start_next=-1

+	&os_irq_end_next=-1

+)

+

+if &os_dsr_enable==1

+(

+	&os_dsr_start_last=v.value(g_os_ddr_dsr_start_statistic->index)

+	&os_dsr_start_cnt=v.value(sizeof(g_os_ddr_dsr_start_statistic->statistics)/sizeof(g_os_ddr_dsr_start_statistic->statistics[0]))

+	&os_dsr_start_next=&os_dsr_start_last

+	&os_dsr_end_last=v.value(g_os_ddr_dsr_end_statistic->index)

+	&os_dsr_end_cnt=v.value(sizeof(g_os_ddr_dsr_end_statistic->statistics)/sizeof(g_os_ddr_dsr_end_statistic->statistics[0]))

+	&os_dsr_end_next=&os_dsr_end_last

+)

+else

+(

+	&os_dsr_start_next=-1

+	&os_dsr_end_next=-1

+)

+

+if &os_swap_next==-1

+(

+	&os_time0=-1

+)

+else

+(

+	&os_time0=v.value(g_os_ddr_swapin_statistic->statistics[&os_swap_next].data2)

+)

+if &os_irq_start_next==-1

+(

+	&os_time1=-1

+)

+else

+(

+	&os_time1=v.value(g_os_ddr_irq_start_statistic->statistics[&os_irq_start_next].data2)

+)

+if &os_irq_end_next==-1

+(

+	&os_time2=-1

+)

+else

+(

+	&os_time2=v.value(g_os_ddr_irq_end_statistic->statistics[&os_irq_end_next].data2)

+)

+

+if &os_dsr_start_next==-1

+(

+	&os_time3=-1

+)

+else

+(

+	&os_time3=v.value(g_os_ddr_dsr_start_statistic->statistics[&os_dsr_start_next].data2)

+)

+if &os_dsr_end_next==-1

+(

+	&os_time4=-1

+)

+else

+(

+	&os_time4=v.value(g_os_ddr_dsr_end_statistic->statistics[&os_dsr_end_next].data2)

+)

+

+&os_time_cnt=5.

+&os_next_time=0.

+

+print format.string("Name",32,' ')+" "+"Index"+"       "+"Time"+"          "+"Exce"

+

+&result=0

+while &result==0

+(

+	gosub TosPrintNextLine

+	if ((&os_swap_next==-1)&&(&os_irq_start_next==-1)&&(&os_irq_end_next==-1)&&(&os_dsr_start_next==-1)&&(&os_dsr_end_next==-1))

+	(

+		print "END"

+		&result=-1

+	)

+)

+

+RETURN

diff --git a/ap/build/scripts/trace32/zx297520v3/readme b/ap/build/scripts/trace32/zx297520v3/readme
index 8f8bade..4b0fa83 100755
--- a/ap/build/scripts/trace32/zx297520v3/readme
+++ b/ap/build/scripts/trace32/zx297520v3/readme
@@ -1,6 +1,6 @@
-£»----------------------------

-£»7520v3

-£»----------------------------

+;----------------------------

+;7520v3

+;----------------------------

 1) load(jtag0)

 step1: run 7520V3_DDR_1Gb_312.cmm

 step2: run linux_297520v3_evb.cmm

@@ -14,4 +14,7 @@
        ==> 7520Board

              ==> Jtag Switch Use CMM

                   ==> Switch to PsJtag

-         
\ No newline at end of file
+

+

+v3v 线程中断轨迹请使用:print_os_statistics_irqnr.cmm 

+v3v kmalloc debug请使用:linux_kmalloc_debug_symbol.cmm  
\ No newline at end of file