我使用的是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,就可以一直运行了。但是偶尔还是会不工作。