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.

[参考译文] CCS/PROCESSOR-SDK-AM335X:中断调试问题

Guru**** 2943400 points

Other Parts Discussed in Thread: SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/673165/ccs-processor-sdk-am335x-interrupt-debug-issue

器件型号:PROCESSOR-SDK-AM335X
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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Joe、

    我建议您使用适用于 AM335x 的 Processor SDK RTOS 包、而不是用于开发的 Starterware。
    Starterware 不再受支持(请参阅 e2e.ti.com/.../790)。

    SDK 可从以下链接获取
    software-dl.ti.com/.../index_FDS.html

    C:\ti\pdk_am335x_1_0_9\packages/MyExampleProjects 中提供了几个利用 RTOS 的 UART 示例
    请记住、需要通过运行.bat 文件(视频 training.ti.com/processor-sdk-device-drivers-setup-test)来生成包含示例的目录

    Lali
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Lali、感谢你的反馈。

    我的应用实际上非常简单。 此设计的唯一需要注意的是、我需要使用 PRU-ICSS 进行通信、否则我们本可以使用 MSP 等缩小处理器。 我们的所有产品始终都是裸机。 这样做的原因是它消除了使用 RTOS (用于我们的应用)时的一些复杂性。 它还允许通过静态分析对等检查和检查例程。

    我已经下载并使用了您指出的 SDK 中的一些示例、因此我有机会实际使用在 MyExampleProject 文件夹中生成的示例。 使用 SysBIOS、相关函数通过 API 调用和驱动程序库(按预期)隐藏、因此很难充分了解发生的情况以及发生的情况。 是否可以为此处理器提供一些文献或一些启动文件的示例? 谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Joe、

    我了解您的来源。
    对于处理器 SDK RTOS 上的应用开发、我们提供了一个培训系列、专门介绍平台上的应用开发以及这方面的一些注意事项。 training.ti.com/processor-sdk-training-series

    training.ti.com/application-development-using-processor-sdk-rtos 将特别有用、因此请查看并告知我们这是否对您有所帮助。

    Lali