Other Parts Discussed in Thread: SYSBIOS
Thread 中讨论的其他器件:SYSBIOS
工具/软件:Code Composer Studio
我正在使用 GNU v6.3.1编译器在 CCS v7.2中为 AM335x 处理器开发裸机应用程序,并且遇到一些中断问题。 根据我使用其他处理器的经验,我的问题看起来与矢量表有关,但目前我不确定。
为了简化我的问题,我使用 AM335X_StarterWare_02_00_01_01中的 uartEcho 代码创建了一个 NewProject。 我已从 StarterWare 文件夹复制所有必要的源文件并粘贴到工程目录中。 (随附) 我遇到的问题与 UartInterruptEnable()例程有关,如下所示。
如果我在 UartInterruptEnable()调用上设置了一个断点,调试器就会遇到这个断点。 当我在该例程之后的行上设置断点时、
numByteChunks =(sizeof (txArray)- 1)/NUM_TX_Bytes_per_trans;
调试器永远不会到达该特定的断点。 如果我暂停程序、PC 要么指向地址0xe51ff008、要么位于 STARTUP_ARMCA8.S 文件(位于地址0x80000010)中的__ISR_VECTOR:表中。
如果这个问题与 ISR_vector 表相关、您能给我一个很好的示例吗?该示例显示了这个表对于已使用和未使用的中断应该是什么样的?
谢谢你。
@μ A
@在此处设置中断矢量表
@μ A
.section .ISR_vector
对齐4.
.globl __ISR_vector
__ISR_Vector:
LDR PC、[PC、#24] @ 0x00复位
LDR PC、[PC、#-8] @ 0x04未定义指令
LDR PC、[PC、#24] @ 0x08 Supervisor Call
LDR PC、[PC、#-8] @ 0x0C 预取中止
LDR PC、[PC、#-8] @ 0x10数据中止
LDR PC、[PC、#-8] @ 0x14未使用
LDR PC、[PC、#-8] @ 0x18 IRQ 中断
LDR PC、[PC、#-8] @ 0x1C FIQ 中断
长入口
长整型0
.long SVC_Handler
长整型0
长整型0
长整型0
长整型0
长整型0
/*外部中断*/
.long Default_Handler
.size __ISR_vector,. -__ISR_vector
代码片段。
/*对线路特性进行编程。 *
UARTLineCharacConfig (SOC_UART_0_regs、
(UART_FRAME_WORD_LENGTH_8 | UART_FRAME_NUM_STB_1)、
UART_parity);
/*禁用对 Divisor 锁存器的写入访问。 *
UARTDivisorLatchDisable (SOC_UART_0_regs);
/*禁用中断控制。 *
UARTBreakCtl (SOC_UART_0_regs、UART_break_COND_disable);
/*切换到 UART16x 操作模式。 *
UARTOperatingModeSelect (SOC_UART_0_regs、UART16x_Oper_mode);
/*根据编译时间检查选择控制台类型*/
// ConsoleUtilsSetType (console_UART);
/*执行中断配置。 *
UartInterruptEnable();
numByteChunks =(sizeof (txArray)- 1)/NUM_TX_Bytes_per_trans;
余数=(sizeof (txArray)- 1)% NUM_TX_Bytes_per_trans;
ZIP of Project: e2e.ti.com/.../NewProj_5F00_UART.zip