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.

[参考译文] TMS320F28388D:ASK PieVectTable

Guru**** 2459470 points
Other Parts Discussed in Thread: C2000WARE, TMS320F28386D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/947493/tms320f28388d-ask-pievecttable

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARETMS320F28386D

尊敬的香榭丽舍

有些问题需要您的帮助和双确认。  

请 参阅  f2838x_headers_nonBIOS_CPU1.cmd 上的 PI_VECT_TABLE

  PIE_VECT_TABLE:origin = 0x000D00,length = 0x000200   // PIE 矢量表*/

但是 在运行 InitPieVectTable 后、我们无法在0xD00中找到完整的 PieVectTable。 出什么问题了吗?  

2.我在 TRM 上看到 INT 9.9~9.12是保留的,但这些是 在 f2838x_pievect.c 中定义的,这是正确的?  

  3.用户是否可以使用 用户定义的陷阱来定义其中断? 如果是、有任何限制?  

如果您有任何建议、请随时告诉我。

非常感谢。

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

    尊敬的 Janet Shen:

    1.您是否正在使用 C2000ware v3.03? 我相信3.03中引入了一个错误。 您可以尝试使用 f2838x_headers_BIOS_CPU1.cmd 文件吗? 这些文件在本发行版中互换了。 我将提出一个 TT、以便在下一个版本中修复此问题。

    2.由于 MCAN 在 C28x 内核上不可用、只在 CM 子系统上可用、因此应保留这些中断。

    3.我将让中断专家对此发表评论

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

    Janet、您好!

    [引述]  3.用户是否可以使用 用户定义的陷阱来定义其中断? 如果是、有任何限制?  [/报价]

    是的、用户可以使用此功能、并且对这些功能没有其他限制。

    此致、

    Vivek Singh

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

    尊敬的 Venna 和 Vivek:

    感谢您的回复。

    1.是的、客户使用了最新的 C2000WARE (v3.03)、我建议他们使用 f2838x_headers_BIOS_CPU1.cmd、并测试旧版本。 等待下一个 C2000WARE 版本修复此问题。  

    因此、表3-2中为 CM 提供了一些保留的中断矢量。 我在 TRM 中对此进行了研究、找到了表41-5。 NVIC 中断映射。

    这是否意味 着表41-5 (TRM)映射到表3-2 (DS)以实现 CM 中断? 用户如何排列 PIE 和 NVIC 的优先级?  

    3.用户如何使用"用户定义的陷阱"? 使用 f2838x_swprioritedpievect.c? 或者用户是否需要更改任何符号或结构?

    如果您有任何建议、请随时告诉我。

    非常感谢。

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

    尊敬的 Janet Shen:

    [引用用户="Janet Shen"]2. 因此、表3-2中为 CM 提供了一些保留的中断矢量。 我在 TRM 中对此进行了研究、找到了表41-5。 NVIC 中断映射。[/报价]

    MCAN 中断仅在 CM 内核上可用、而不在 C28x 内核中可用。 因此、中断将出现在 NVIC 上、而不是出现在 PIE 中。

    此致、

    Veena

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

    您好、 Veena、

    我尝试过一些版本组合、但在以下所有组合中仍然存在相同的问题。

    芯片:TMS320F28386D

    CCS:9.3.0.00012

    使用下面的 f2838x_headers_BIOS_CPU1.cmd:
    编译器18.12.4、C2000Ware 3.2
    编译器20.2.2、C2000Ware 3.2
    编译器18.12.4、C2000Ware 3.3
    编译器20.2.2、C2000Ware 3.3
    编译器20.2.1、C2000Ware 3.3
    编译器18.12.1、C2000Ware 2.1
    使用  下面的 f2838x_headers_nonBIOS_CPU1.cmd:
    编译器18.12.1、C2000Ware 2.1
    我的测试代码非常简单:

    int main (空)

    //此函数位于 F2838x_PIECTRL.c 文件中。
    InitPieCtrl();

    //禁用 CPU 中断并清除所有 CPU 中断标志:
    IER = 0x0000;
    IFR = 0x0000;

    InitPieVectTable();

    返回0;

    您能给我们其他建议吗?

    谢谢。

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

    您好、 Frederick、

    我无法重现此问题。 实际上、非 BIOS 和 BIOS 链接器命令文件的使用无关紧要。 我使用了 C2000ware 3.3、非 BIOS.cmd 文件、编译器 v18.12.1、我可以看到 PIecVectTable 正在初始化。

    请注意 、InitPieVectTable 函数不会初始化前3个矢量、因为这是由引导代码初始化的。 即使在初始查询中共享的 Janet 图像中、我也会看到 PIevcet 表已初始化为某个值。 您是否期望一些不同的值?

    为了确保 InitPieVectTable 实际写入0xD00位置、您可以尝试清除其中的一些存储器位置(地址> 0xD06)、然后重新运行 InitPieVectTable 函数并查看该值是否被正确写入。

    此致、

    Veena

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

    Janet、您好!

    [引述]

    3.用户如何使用"用户定义的陷阱"? 使用 f2838x_swprioritedpievect.c? 或者用户是否需要更改任何符号或结构?

    如果您有任何建议、请随时告诉我。

    [/报价]

    用户1–USER12是用户定义的软件中断、它们是不可屏蔽的中断。 这些只能通过 TRAP 指令提出。

    //生成用户中断的代码:
    
    __asm (" trap #20");//这将生成 User1中断。 20是向量 id
    
    
    
    // User1 ISR
    
    __interrupt void user1ISR (void)
    
    {
    
    temp1++;
    
    temp2++;
    
    } 

    谢谢

    Vasudha

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

    您好、 Veena、

    1. 问题是否可能因 CCS 版本或 XDS110调试探针而发生? 您的 CCS 版本中有什么 无法重现问题?

    2.我重试,  在 InitPieVectTable()函数之后有差异值。 抱歉、我不知道您对" 某种价值"的含义。

    3.  可以 在 InitPieVectTable()之后正确写入该值。 我将0xD06写为0xFFFF、该值在  InitPieVectTable()之后写入0x270B。

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

    您好、Frederick、

    [引用用户="Frederick LIN]1.  问题是否可能因 CCS 版本或 XDS110调试探针而发生? 您认为什么 CCS 版本 无法重现问题?

    我使用的是 CCS v10.0.0。  我使用的是 F28388D controlCARD、并使用随附的 XDS100v2仿真器。

    [引用用户="Frederick LIN]2. 我再试一次,  在 InitPieVectTable()函数之后有差异值。 抱歉、我不知道您对" 某个值"的含义。

    我的意思是、在初始查询中发布的图像中、我看到位置0xD06和更高的值被一些值初始化、我假设这是由 InitPieVectTable 初始化的。 可能我没有正确回答您的问题。 您说初始化值不正确吗? 或者您是否看到这些存储器位置为0。

    此致、

    Veena

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

    您好、 Veena、

    我认为 PieVectTable 的值在地址0xD00~0xDFF 之间没有问题。  我们的主要问题是 地址0xE00~0xEFF 始终显示消息"Memory map prevented reading 0x00000Exx"。 不管入口点 是什么,InitPieCtrl()还是 InitPieVectTable()都已完成。

    此致、

    弗雷德里克

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

    哦、还可以。 现在我了解了您的问题。 这是一个与 CCS 相关的问题。 我将提交一个 TT 以解决该问题。

    作为权变措施、您可以更新 GEL 文件(在中提供 \ccs_base\emulation\gel\ GEL 如下所示:

    GEL_MapAddStr (0x00000D000、0x100、"R|W|AS2"、0);            /*  PIE 矢量表

    更改为

    GEL_MapAddStr (0x00000D000、0x200、"R|W|AS2"、0);            /*  PIE 矢量表

    GEL_MapAddStr (0x00000D001、0x100、"R|W|AS2"、0);            /*  PIE 矢量表

    更改为  

    GEL_MapAddStr (0x00000D001、0x200、"R|W|AS2"、0);            /*  PIE 矢量表

    请告诉我这是否可行。

    此致、

    Veena

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

    您好、 Veena、

    它的工作原理!!!所有地址都具有介于地址0xD00至0xEFF 之间的初始值。 非常感谢。

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

    尊敬的 Veena:

    如果用户仅在 CPU1/CPU2上使用 PIE、而 此时不使用 CM、他们是否可以使用 INT 9.9~9.12将其定义为用户定义的中断?  

     由于 Frederick 需要生成更多用户定义的中断、他们希望知道可以使用哪些中断来重新定义。  

    如果您有任何建议、请随时告知我们。

    非常感谢。

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

    Janet、您好!

    是的、用户可以将它们用作软件中断、但请参阅下面的注释(来自 TRM) 、了解如何通过软件更新 PIE IFR 标志。

    此致、

    Vivek Singh

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

    尊敬的 Vivek:

    请允许我再次确认此用法。

    因此、如果我们仅使用 C28x 而不使用 CM、我们可以重复使用 CM 中一些未使用的 PIE 矢量、对吧?  

    即使我们可以使用未使用的 PIE 矢量、不管 C28 (CPU1/CPU2)或 CM、对吧?  

    如果您有任何建议、请随时告诉我。

    非常感谢。

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

    尊敬的 Vivek:

    很抱歉、您能帮助我确认此问题吗?

    "如果用户只使用 C28x 而不使用 CM、我们可以重复使用来自 CM 的每个未使用的 PIE 矢量、对吧? 即使我们可以使用未使用的 PIE 矢量、不管 C28 (CPU1/CPU2)或 CM、对吧? "

     非常感谢。

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

    是的、您可以使用任何未使用的 PIE 矢量。

    此致、

    Vivek Singh

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

    尊敬的 Veena & Vivek:

    感谢你的帮助。

    我们得到了上述问题的明确答案。

    非常感谢。