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

C6746运行SYSBIOS和NDK时要么E_exceptionMax,要么stack error

我使用的是CCS6.1.0,NDK 2.23.01.01

这次abort时错误信息如下:

ed950
A6=0x2e373539 A7=0x34373234
A8=0x1 A9=0x411ed8f1
A10=0xbebebebe A11=0xbebebebe
A12=0xbebebebe A13=0xbebebebe
A14=0x0 A15=0x0
A16=0x0 A17=0x4
A18=0xb A19=0x76
A20=0x0 A21=0x0
A22=0xbe38b285 A23=0x1fbff9d6
A24=0xbe8807bf A25=0x60522b78
A26=0x36a8e361 A27=0xcea94a49
A28=0x200 A29=0x411e1fa4
A30=0x411ede8c A31=0x1
B0=0x4128c7a0 B1=0x2c
B2=0x411d0960 B3=0xbebebebe
B4=0x85778677 B5=0x95773677
B6=0x34 B7=0x411ed91c
B8=0x412ab8a0 B9=0x0
B10=0xbebebebe B11=0xbebebebe
B12=0xbebebebe B13=0xbebebebe
B14=0x412abe70 B15=0x411d09d0
B16=0x411edf68 B17=0x0
B18=0x40 B19=0x78
B20=0x0 B21=0x69
B22=0x20f B23=0x0
B24=0x86336787 B25=0xf42db405
B26=0xbb9ddcc0 B27=0x84cda4ef
B28=0xa000 B29=0xa
B30=0x411ed94d B31=0x0
NTSR=0x1020e
ITSR=0x20e
IRP=0x41289268
SSR=0x0
AMR=0x0
RILC=0x0
ILC=0x0
Exception at 0xbebebebc
EFR=0x2 NRP=0xbebebebc
Internal exception: IERR=0x1
Instruction fetch exception
ti.sysbios.family.c64p.Exception: line 256: E_exceptionMax: pc = 0xbebebebc, sp = 0x411d09d0.
xdc.runtime.Error.raise: terminating execution

我的.cfg文件如下:

var Tcp = xdc.useModule('ti.ndk.config.Tcp');
var Global = xdc.useModule('ti.ndk.config.Global');
var BIOS = xdc.useModule('ti.sysbios.BIOS');
var Icmp = xdc.useModule('ti.ndk.config.Icmp');
var Emac = xdc.useModule('ti.ndk.config.Emac');
var Task = xdc.useModule('ti.sysbios.knl.Task');
var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
var Memory = xdc.useModule('xdc.runtime.Memory');
var Hwi = xdc.useModule('ti.sysbios.family.c64p.Hwi');
var System = xdc.useModule('xdc.runtime.System');
var Timer = xdc.useModule('ti.sysbios.timers.timer64.Timer');
var Ip = xdc.useModule('ti.ndk.config.Ip');
Global.IPv6 = false;
var hwi0Params = new Hwi.Params();
hwi0Params.instance.name = "pps";
hwi0Params.eventId = 62;
Program.global.pps = Hwi.create(4, "&GPIOIsr", hwi0Params);
var hwi1Params = new Hwi.Params();
hwi1Params.instance.name = "uart2";
hwi1Params.eventId = 69;
hwi1Params.enableInt = false;
Program.global.uart2 = Hwi.create(6, "&UART2_gps_Isr", hwi1Params);
var semaphore0Params = new Semaphore.Params();
semaphore0Params.instance.name = "ADC_Collect_sem";
semaphore0Params.mode = Semaphore.Mode_BINARY;
Program.global.ADC_Collect_sem = Semaphore.create(null, semaphore0Params);
var semaphore1Params = new Semaphore.Params();
semaphore1Params.instance.name = "ADC_Finish_sem";
semaphore1Params.mode = Semaphore.Mode_BINARY;
Program.global.ADC_Finish_sem = Semaphore.create(null, semaphore1Params);
var semaphore2Params = new Semaphore.Params();
semaphore2Params.instance.name = "GPS_Data_sem";
semaphore2Params.mode = Semaphore.Mode_BINARY;
Program.global.GPS_Data_sem = Semaphore.create(null, semaphore2Params);
var timer0Params = new Timer.Params();
timer0Params.instance.name = "timer2";
timer0Params.period = 40;
timer0Params.runMode = xdc.module("ti.sysbios.interfaces.ITimer").RunMode_ONESHOT;
timer0Params.startMode = xdc.module("ti.sysbios.interfaces.ITimer").StartMode_USER;
timer0Params.periodType = xdc.module("ti.sysbios.interfaces.ITimer").PeriodType_COUNTS;
timer0Params.intNum = 12;
Program.global.timer2 = Timer.create(2, "&Timer2Isr", timer0Params);
var timer1Params = new Timer.Params();
timer1Params.instance.name = "TimerClock";
timer1Params.period = 1000;
Program.global.TimerClock = Timer.create(3, "&TimerClockHandler", timer1Params);
Task.defaultStackSize = 4096;
var task0Params = new Task.Params();
task0Params.instance.name = "GPS_Date";
task0Params.priority = 5;
task0Params.stackSize = 10240;
Program.global.GPS_Date = Task.create("&GetSignalOfGPS", task0Params);
var task1Params = new Task.Params();
task1Params.instance.name = "task1";
task1Params.priority = 4;
task1Params.stackSize = 20480;
Program.global.task1 = Task.create("&PackageHandle", task1Params);
var task2Params = new Task.Params();
task2Params.instance.name = "task2";
task2Params.priority = 6;
task2Params.stackSize = 20480;
Program.global.task2 = Task.create("&ADC_DataCollectFxn", task2Params);
Program.stack = 524288;
BIOS.heapSize = 524288;
Global.networkIPAddrHook = null;
Global.serviceReportHook = null;
Global.networkOpenHook = "&SocketTestCreateHook";
var semaphore4Params = new Semaphore.Params();
semaphore4Params.instance.name = "semaphore_tasks";
semaphore4Params.mode = Semaphore.Mode_COUNTING_PRIORITY;
Program.global.semaphore_tasks = Semaphore.create(null, semaphore4Params);
Tcp.transmitBufSize = 127980;
Tcp.maxNumReasmPkts = 90;
var task3Params = new Task.Params();
task3Params.instance.name = "task3";
task3Params.priority = 7;
task3Params.stackSize = 8192;
Program.global.task3 = Task.create("&RecreateSocketTask", task3Params);
Tcp.receiveBufSize = 102400;
Global.stackBeginHook = "&SetIPConfig";
var hwi2Params = new Hwi.Params();
hwi2Params.instance.name = "SPIFLASH";
hwi2Params.eventId = 43;
Program.global.SPIFLASH = Hwi.create(9, "&SPIIsr", hwi2Params);
Tcp.keepProbeTimeout = 600;
Tcp.keepIdleTime = 1200;
Tcp.keepProbeInterval = 40;
Ip.autoIp = false;
Ip.address = "10.104.6.121";
Ip.gatewayIpAddr = "10.104.6.1";
Tcp.receiveBufLimit = 81920;
Memory.defaultHeapSize = 524288;
BIOS.heapTrackEnabled = false;
Program.heap = 524288;
BIOS.swiEnabled = true;

Shine:

请问有没有试试加大heap, stack.
stack是放在哪里的?EMIF CS0?
IRP=0x41289268, 中断返回地址在CS0, 代码不是在DDR上运行的?

Guoyue Liu:

回复 Shine:

我是把code、heap、stack都放在了sdram上面,加大了heap还是不行,最后是直接下载到板子的flash中,没有使用CCS,就可以一直运行了。但是偶尔还是会不工作。

赞(0)
未经允许不得转载:TI中文支持网 » C6746运行SYSBIOS和NDK时要么E_exceptionMax,要么stack error
分享到: 更多 (0)