This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

6670固化后代码死机问题

Other Parts Discussed in Thread: SYSBIOS

  我们使用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

 

  • 有个新的情况,我们使用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

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

    DDR3有没有初始化好?

  • 是taskIdletest,空闲任务

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

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

  • 您好:

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

    通过使用多核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的判断语句内。类似这种问题,如何解决

  • 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优化,可能代码会乱序。

  • Hi Allen,

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

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

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