On SpectrumDigital OMAP-l137EVM board, using the onboard emulator.
Running applications from the C6748_starterware_1_20_03_03 ,
using restart and reset have a unexpected behavior.
Run the program to a breakpoint and use Restart makes the program entering a interrupt handler in Interupt.C
static void IntDefaultHandler (void)
{
while(1);
}
using "Reset" the program go to address 00700000
00700000: 00000412 B.S2 0x700020 (PC+32 = 0x00700020)
00700004: 00008000 NOP 5
00700008: 30303864 [!B0] LDW.D1T1 *--A12[A1],A0
0070000c: 3330306B [!B0] MVKH.S2 0x60600000,B6
00700010: 20090724 || .word 0x20090724
00700014: 00162602 MPYID.M2 -15,B5,B1:B0
00700018: 00700000 NOP
0070001c: 02000200 MPYI.M1 A0,A0,A4
00700020: 0000A35A MVK.L2 0,B0
00700024: 008003A2 MVC.S2 B0,CSR
and will not return to the application : timer_c674x_c6748_evmC6748 unless I start all over again. I was expecting the restart to enter "main" and be cached by my breakpoint if not stopping at "main". With the Reset I am not sure what shall happen but some how the program should recover or ???
The text UARTPuts("Tencounter: 9", -1); should come out on the UART but there is only "¢2" and if i let it run and suspend it it is hanging in the while loop ending the application.
int main(void)
{
/* Set up the UART2 peripheral */
UARTStdioInit();
/* Set up the Timer2 peripheral */
TimerSetUp64Bit();
/* Set up the AINTC to generate Timer2 interrupts */
TimerIntrSetUp();
/* Enable the timer interrupt */
TimerIntEnable(SOC_TMR_2_REGS, TMR_INT_TMR12_NON_CAPT_MODE);
#ifndef _TMS320C6X
/* Switch to non privileged mode; This is done for demonstration purpose */
CPUSwitchToUserMode();
#endif
/* Send the first String */
UARTPuts("Tencounter: 9", -1);
/* Start the timer. Characters from cntArr will be sent from the ISR */
TimerEnable(SOC_TMR_2_REGS, TMR_TIMER12, TMR_ENABLE_CONT);
/* make sure all the characters from cntArray from ISR */
while(secCnt < 9)
{
/* Replace previous number each time the timer interrupt occurs */
if(flagIsrCnt)
{
UARTPutc('\b');
UARTPutc(cntArr[secCnt]);
secCnt++;
flagIsrCnt = 0;
}
}
/* Disable the timer. No more timer interrupts */
TimerDisable(SOC_TMR_2_REGS, TMR_TIMER12);
/* Halt the program */
while(1);
}
Running the UART application "uart_c674x_c6748_evmc6748" have similar behavior, have tried on different PC with same results.
Will a dedicated USB emulator like the 560 be a better choice?
Claus.