TI中文支持网
TI专业的中文技术问题搜集分享网站

6670固化后代码死机问题

  我们使用TI DSP芯片6670,程序固化后某些核程序跑飞,连接ROV打印如下信息,请帮忙排解下问题,多谢!

 

,ICT BBU BSP Debug Info: Waiting for global config…

,ICT BBU BSP Debug Info: Initializing Free Descriptors.

,ICT BBU BSP Debug Info: QMSS Local successfully initialized

,ICT BBU BSP Debug Info: Tx setup successfully done

,ICT BBU BSP Debug Info: Rx setup successfully done

,ICT BBU BSP Debug Info: PASS setup successfully done

,ICT BBU BSP Debug Info: Core3 Waiting for SRIO to be initialized.

,ICT BBU BSP Debug Info: Core3 SRIO can now be used.

,*********************************************

,*********ICT Debug Info: BIOS Start**********

,*********************************************

,*********************************************

,*******ICT Debug Info: GPIO Task Start*******

,*********************************************

,*********************************************

,*******ICT Debug Info: HOP Task Start*******

,*********************************************

,A0=0x2 A1=0x8

,A2=0x1 A3=0x138e1168

,A4=0x0 A5=0xf8

,A6=0x8026 A7=0x0

,A8=0x83372020 A9=0x138e15dc

,A10=0x0 A11=0x0

,A12=0x0 A13=0x2

,A14=0x0 A15=0x2

,A16=0x13860fd0 A17=0x0

,A18=0x13860cb0 A19=0x320

,A20=0x0 A21=0x0

,A22=0x1386fe48 A23=0x1386fe58

,A24=0x138702a8 A25=0x1386fe68

,A26=0x1386fe70 A27=0x1386fe78

,A28=0x138702c8 A29=0x1386fe80

,A30=0x30 A31=0x833bb138

,B0=0x0 B1=0x118dcb70

,B2=0x0 B3=0x0

,B4=0x138e1708 B5=0x138e1700

,B6=0x83371aa2 B7=0x0

,B8=0x0 B9=0x0

,B10=0x0 B11=0x26cd97

,B12=0x0 B13=0x26cd97

,B14=0x138e7600 B15=0x58

,B16=0x2c B17=0x1386fe60

,B18=0x138702b0 B19=0x138702b8

,B20=0x138702c0 B21=0x24

,B22=0xf B23=0x0

,B24=0x13870298 B25=0x1386fe50

,B26=0x138702a0 B27=0x0

,B28=0x13870278 B29=0x1386fe30

,B30=0x13870280 B31=0x138626e4

,NTSR=0x1020e

,ITSR=0xf

,IRP=0x83371aa2

,SSR=0x0

,AMR=0x0

,RILC=0x0

,ILC=0x0

,Exception at 0x0

,EFR=0x2 NRP=0x0

,Internal exception: IERR=0x1

,Instruction fetch exception

,ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x00000000, sp = 0x00000058.

,To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'

,xdc.runtime.Error.raise: terminating execution

 

barryliu:

有个新的情况,我们使用6670芯片,4核同时映射了外部GPIO中断,

 

cfg配置如下

var hwi0Params = new Hwi.Params(); hwi0Params.instance.name = "hwi4"; hwi0Params.eventId = 86; Program.global.hwi4 = Hwi.create(4, "&gpio_framenum", hwi0Params); var hwi1Params = new Hwi.Params(); hwi1Params.instance.name = "hwi6"; hwi1Params.eventId = 87; Program.global.hwi6 = Hwi.create(6, "&gpio_slotnum", hwi1Params);

 

中断处理函数如下,进入中断后将BINTEN清零,即关中断,出中断前将BINTEN置位,即开中断。这样处理是否合理?

void gpio_framenum(void) { gpio_regs->BINTEN = 0; //

      gpio_regs->BANK_REGISTERS[0].CLR_RIS_TRIG |= (1<<12); //取消帧中断 if((GPIO_Frame_FLAG == 0) && (GPIO_Slot_FLAG == 0))

      // the right state { GPIO_Frame_FLAG = 1;

      GPIO_Slot_FLAG = 0; Semaphore_post(GPIO_Task_sem); } else { System_printf ("wrong frame state before GPIO interrupt\n"); } //

      gpio_regs->BANK_REGISTERS[0].SET_RIS_TRIG |= (1<<12);//SOF //

      gpio_regs->BANK_REGISTERS[0].SET_RIS_TRIG |= (1<<13);//SOF gpio_regs->BINTEN = 1; }

 

程序固化运行后有跑飞现象,从ROV中打印信息如下:其中pc = 0x80481274指向地址为函数ti_sysbios_family_c64p_Hwi_dispatchAlways:  请帮忙排查下问题

 

A0=0x108676c8 A1=0xe

,A2=0x1 A3=0xffff9bc0

,A4=0x2 A5=0x108dda4c

,A6=0x8026 A7=0x0

,A8=0x80466778 A9=0x108dc8fc

,A10=0x0 A11=0x804b02b4

,A12=0x0 A13=0x0

,A14=0x0 A15=0x0

,A16=0x10860fc8 A17=0x0

,A18=0x10860ca8 A19=0x320

,A20=0x10874638 A21=0x10874a88

,A22=0x10874648 A23=0x10874658

,A24=0x10874aa8 A25=0x10874668

,A26=0x10874670 A27=0x10874678

,A28=0x10874ac8 A29=0x10874680

,A30=0x0 A31=0x804b04ec

,B0=0x10867748 B1=0x804661e2

,B2=0x0 B3=0x8048cf50

,B4=0x15000101 B5=0x15000100

,B6=0x108dda4c B7=0x0

,B8=0x0 B9=0x0

,B10=0x108677d0 B11=0x804b02b0

,B12=0x0 B13=0x0

,B14=0x108e2a00 B15=0x108676c8

,B16=0x2c B17=0x10874660

,B18=0x10874ab0 B19=0x10874ab8

,B20=0x10874ac0 B21=0x24

,B22=0x10874640 B23=0x10874a90

,B24=0x10874a98 B25=0x10874650

,B26=0x10874aa0 B27=0x0

,B28=0x10874a78 B29=0x10874630

,B30=0x28 B31=0x10860bf4

,NTSR=0x10204

,ITSR=0xf

,IRP=0x804661e2

,SSR=0x0

,AMR=0x0

,RILC=0x0

,ILC=0x0

,Exception at 0x80481274

,EFR=0x2 NRP=0x80481274

,Internal exception: IERR=0x10

,Resource conflict exception

,ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x80481274, sp = 0x108676c8.

,To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'

,xdc.runtime.Error.raise: terminating execution

Thomas Yang1:

回复 barryliu:

IRP=0x83371aa2 这段地址是做什么?

DDR3有没有初始化好?

barryliu:

回复 Thomas Yang1:

是taskIdletest,空闲任务

Thomas Yang1:

回复 barryliu:

从寄存器信息来看,是从这个空闲任务产生的异常中断,

建议加下打桩函数,看看函数运行轨迹是什么,主要抓取异常前的 运行状态

barryliu:

回复 Thomas Yang1:

您好:

打桩函数如何添加,是否有这方面资料参考下。

通过使用多核C66X芯片,CCS操作系统有如下问题:

1.编译器CCS5.3.0,编译环境极其不稳定,常常卡死,编译进程无法继续,情况时好时坏;

2.使用ROV观测现有情况,PC指向地址为函数ti_sysbios_family_c64p_Hwi_dispatchAlways:  

使用排除法代码段中有一段DDR3上的搬移函数,将此函数屏蔽后问题得以改善,但仍查不出具体原因。

memcpy(Dest[DNUM], Source[DNUM], 30000);//DDR3

事实上,代码内容和中断处理是2个方面,但是不论出现任何问题,ROV指向都是HWI中断函数或者空闲任务。ROV这种观测手段是否正确有效?能否有更为直观的方式方法检测问题?

3.编译器调试过程中错误频发,DEGUB模式下,核号为3,依然进入到了核0的判断语句内。类似这种问题,如何解决

Allen35065:

回复 barryliu:

1. 打桩就是指在运行流程里加入一些log,比如往一个全局变量里写入数值来判断程序走到哪一步了;

2. CCS是IDE界面,编译器要看你建的工程使用的什么版本,建议到 

http://software-dl.ti.com/codegen/non-esd/downloads/download.htm 更新7.4系列最新的编译器使用。CCS 5.3是比较稳定的版本,但因为使用Eclipse内核,占用内存较多,建议PC使用3G 以上的的内存,有条件最好用8G;

3. 可以考虑把数据搬移改为采用EDMA方式,拷贝数据较多用memcpy可能会被其它中断打断;

4. 没有遇到过类似情况,如果采用的O3优化,可能代码会乱序。

barryliu:

回复 Allen35065:

Hi Allen,

2. CCS版本升级,是否会对现有工程有影响。现在编码阶段,需要考虑时间成本。既然5.3是稳定版本,为何会错误频发,这种错误如何解决?是否有相关排查文档?现在调试电脑内存8G,处理器I7,都是最好配置了,不存在电脑问题。

3. 可以考虑把数据搬 移改为采用EDMA方式,拷贝数据较多用memcpy可能会被其它中断打断;(这个情况确实是其中可能性,那请问是否有更为直接的方式去排查,而不是仅靠猜测???ROV指向都是HWI中断函数或者空闲任务。ROV这种观测手段是否正确有效?能否有更为直观的方式方法检测问题?

4. 编译器紊乱的情况如何解决?出现这种情况当时调试把优化程度关闭依然存在BUG。

赞(0)
未经允许不得转载:TI中文支持网 » 6670固化后代码死机问题
分享到: 更多 (0)