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/TMS320F28027:在复位后赢得#39;t 引导。 0x3FF5F5 (未定义符号)

Guru**** 2613915 points
Other Parts Discussed in Thread: TMS320F28027, LAUNCHXL-F28027

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/691168/ccs-tms320f28027-won-t-boot-after-reset-0x3ff5f5-no-symbols-are-defined

器件型号:TMS320F28027
主题中讨论的其他器件: LAUNCHXL-F28027

工具/软件:Code Composer Studio

按下复位按钮或电源复位后、器件不会运行任何代码。 当从调试器加载代码时、它可以正常工作、但只能运行一次。 当我按下复位按钮时,调试器显示“Ox3FF5F5 (未定义符号)”,设备冻结。 我加载的每个代码都会发生这种情况。  

我搜索 了有关上述存储器位置的信息、并从引导加载 程序参考指南中发现它属于"boot ROM function"区域。 但我找不到有关"boot ROM function"部分的任何说明或指南。

我是一个新用户、很抱歉我的英语不好。 请提供一些维修设备的建议。

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

    您需要配置引导模式。 请参阅以下研讨会:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    请注意、F2803x 与 F2802x 相似(大部分情况下)、除了它具有额外的存储器和 CLA。 请参阅第5-20页(第82页)第11步中的实验5说明、以设置 EMU_KEY 和 EMU_BMODE 值。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 您能给我一些有关引导 ROM 函数的参考或说明吗? 我在任何地方都找不到它。 引导 ROM 参考指南中没有有关它的说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    "TMS320x2802x Piccolo 引导 ROM 参考指南"可在以下位置找到:

    www.ti.com/lit/sprufn6

    有关引导加载程序模式、请参阅第2.9节。 第2章的后面部分包括有关各种引导函数的详细信息。

    要查找有关 F28027系列的更多信息、请访问:

    www.ti.com/.../tms320F28027

    此外、在我之前发送给您的 F2803x 多日技术讲座链接中、请参阅《技术讲座手册》中的第4-3页(53页)至第4-5页(55页)以了解有关引导加载程序的更多信息。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

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

    我按照指示操作。 将代码加载到器件后、我打开了存储器浏览器窗口、并查找0x0D00和0D01、这是 EMU 密钥和引导模式位置。 说明它应该具有55AA 和0003的值 、以用作仿真引导和从闪存引导。 但它具有值34CC 和003F。 然后、我将这些值更改为55AA 和0001。  但在我按下电路板上的复位按钮或调试器中的 CPU 复位后、代码仍然无法运行。 器件冻结、调试器提示没有为3bf7ff 定义符号。

    2个 OTP 位置和2个 GPIO 引脚具有 正确的值和位置。

    然后、在我按下调试器中的重新启动(非复位)按钮后、代码运行正常。 但0D00和0D01值再次变为34CC 和003f。 不仅如此、这个值序列出现在0D00至0D19之间。 我不知道发生了什么。

    哪些函数会自动更改这些存储器位置。 发生这种情况的原因。

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

    请告诉我您正在使用的开发目标(例如 LaunchPad、实验套件等)和 CCS 的哪个版本。 此外、请告诉我您如何设置目标配置文件。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用了 Launchpad XL F28027。
    CCS v7.4
    Traget 配置。-
    连接- TI XDS100v1 USB 调试探针
    器件 TMS320F28027
    我在上面选择并保存了目标配置文件。

    有哪些函数可更改 emu 密钥和模式存储器位置、就像这样。 ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    我使用 CCSv7的目标配置在 LaunchXL-F28027上测试了一些代码、没有问题。 EMU_KEY 为0x55AA、EMU_BMODE 需要为0x000A 才能从 RAM 引导、或需要为0x000B 才能从闪存引导。 (请注意、如果使用 GetMode、必须首先对 OTP 进行编程)。 S1上的开关设置全部打开。

    让我们在以下技术讲座中尝试电路板上的一些代码:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    导入实验2的解决方案文件。 您将收到一条警告、指出此项目是使用以前版本的工具构建的。 转至工程的 Properties、然后选择编译器的更高版本、警告将消失。 加载程序并打开"Memory Browser"窗口至0X0D00。 然后使用 CCS 脚本更改在 SARAM 和闪存之间进行 EMU 引导模式选择、您应该会看到 BMODE (0x0D01)在0x000A 和0x000B 之间变化。 将 BMODE 设置为 SARAM 复位器件后、运行->进入主菜单、然后运行(恢复)。 此时、如果一切顺利、您应该被停留在一个 Estop 指令中。 如果您愿意、请尝试实验4测试闪存(有关说明、请参阅《车间维修手册》)。 请告诉我发生了什么。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。 我会尝试这个。
    我有一些问题。
    有许多讲习班。 我应该使用哪种技术讲座。
    CCS 脚本是什么意思? 如何使用它。 是否有任何函数或库可从软件更改这些存储器位置。 ?
    是的
    无法从内存浏览器窗口编辑内存位置。 ?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    在我原来的帖子中、我包含了 F28035多日技术讲座的链接:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    我还解释说、F2803x 与 F2802x 相似(在大多数情况下)、除了它具有额外的存储器和 CLA。 如果将本技术讲座与您的 F28027 LaunchPad 配合使用、您将需要修改链接器命令文件、并且您将无法运行 CLA 和 DSP/BIOS 实验练习。 我参考了这次研讨会、因为它包含的详细信息比一日研讨会更多。 话虽如此、您也可以在以下位置使用 F28027 1日专题讨论会:

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    我建议在本次技术讲座中运行实验练习、以便更熟悉器件和 CCS。 您应该能够按原样运行这个实验课程、除了这个实验课程使用 controlSTICK、所以您需要在实验练习中重新映射跳线引脚以使用 LaunchPad。 然后、如果您想使用多日专题讨论会、您可以将一日专题讨论会的链接器命令文件与多日专题讨论会一起使用、除非前面已经提到过内存、CLA 和 DSP/BIOS。

    此外、在我之前的帖子中、我参考了第5-20页(第82页)第11步中的多日专题讨论会实验5的说明来设置 EMU_KEY 和 EMU_BMODE 值。 此步骤说明了如何使用 CCS 脚本。 在第39页的实验练习2步骤9中、您将在为期一天的实验课程中找到相同的说明。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我加载了这些 lab_2文件。 与您所说的不同、我不必更改链接器命令文件。 编译和加载都很好。 该代码工作正常。 emu 键和模式位置无变化。

    我可以从名为 FLASH 的 C2000器件示例中找到此代码。 我删除了随附的.c 文件、并编写了自己的程序以使板载 LED 闪烁。 该代码在独立模式下运行正常、没有问题、但当连接到调试器时、会显示先前的问题。 当我复位 CPU 时、emu 密钥和模式位置更改为一些垃圾值、器件冻结。
    还有另一个程序不能在独立模式下运行。 我比较了该程序的属性和闪存(上面我提到过)程序的属性、我发现的唯一变化是、在 C2000链接器部分的标志汇总中。 其中有一条名为"entry_point=c_int00"或类似内容的行。 我将其更改为"entry_point=code_start"
    然后、该代码在独立模式下也可以正常工作、但在调试器模式下不能正常工作。 它仍会将一些无效值写入 emu 位置。
    另请注意、一旦 CPU 复位、这个完全相同的值就会出现在从 emu_key 开始的大量内存区域中。
    我想知道、
    **自动将值写入这些位置的函数是什么。 我怎么能停止这种情况。***
    我还想知道***如何正确设置项目的属性。 如何选择链接器或任何必要的文件。 ***-
    这些指令找不到。
    尽管社区帮助以及 IDE 和调试器都很好、但 TI 的器件和软件文档却是最差的。 说明参考资料分散在各地,学习过程是……的痛苦 与 AVR 或 pic 不同。 您的管上没有正确的教程或任何内容。 仅提供一些提示视频。 向社区寻求帮助、解决问题就像学习如何在明信片中游泳一样。

    但我必须指出,各位成员的反应是非常好的。 但是,如果我们从一开始就有适当的指导,那将非常有成效。
    先生,但斯克非常适合你的海普。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    感谢您的回复。 我提到了多日专题讨论会 Lab_5_6_7.cmd 文件和1日专题讨论会 Lab_2_3.cmd 文件。 多日专题讨论会.cmd 文件具有 F2802x 器件中不存在的额外内存部分。 cmd 文件将起作用、但您需要注意这些差异。 此时、我要做的是获取一些可在您的 LaunchPad 和我的上工作的通用代码。 这将消除电路板或器件损坏的可能性。 然后、我们可以向后工作、找出您在使用代码时遇到困难的原因。

    为了简单起见、让我们使用 F28027技术讲座解决方案文件。 请从以下位置下载"Piccolo 一日技术讲座安装程序"文件(包括技术讲座手册):

    processors.wiki.ti.com/.../C2000_Archived_Workshops

    运行此文件-这将确保我们使用相同的设置。 我们将运行两个实验解决方案文件、使 LED 闪烁-一个耗尽 RAM、另一个耗尽闪存。 将不需要实验说明中的跳线。 车间代码使连接到 GPIO34的 LED 闪烁、但 LaunchPad 上的 LED 不使用此 GPIO 引脚。 相反、我们将修改 Gpoi.c 文件以使用连接到 LaunchPad 上 LED 的 GPIO33。

    现在、按照实验3的说明加载 Lab3解决方案文件(步骤1和2)。 接下来、打开 GPIO.c、在文件底部的"所选引脚配置"下、将 GPIO34和 GPIO33之间的两行进行更改。 按照步骤4和5、运行代码。 LED 是否闪烁? 停止代码并执行步骤19和20。 这是 RAM 测试之外运行的代码。

    现在、按照实验4的说明加载 Lab4解决方案文件(步骤1和2)。 像以前一样修改 GPIO.c。 按照步骤14、15和18至30执行操作。 LED 是否闪烁? 这是闪存测试之外运行的代码。

    请告诉我发生了什么。

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

    正如您说的那样。 我在1天技术讲座的实验3和4中尝试了这些示例。 在我的板上、没有 LED 连接到 GPIO 33。 但有4个 LED 连接到 GPIO 0-3。 因此、我将引脚更改为 GPIO 2。 但根本不会闪烁。 只是 LED 保持关闭状态。  (要打开 LED、GPIO 引脚应设置为低电平)。  对于实验3和实验4、上述条件相同

    但是、我注意到之前的问题没有发生、这是在复位后 emu 键和模式值的变化。 代码在复位时不会崩溃。

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

    是的、您回答正确- LED 连接到 GPIO0-3。 电路板和 LED 连接的原理图可在用户指南的第10页找到:

    www.ti.com/lit/spruhh2

    抱歉、我未阅读封装上具有3引脚的 GPIO3、以为它是 GPIO33。 在任何情况下、为了使 LED 闪烁、我们使用 GPIO1。 在 gpio.c 中、修改文件底部的以下两行(注意组 A 的 GPA、因此更改...gpb... 至...GPA):

    //--所选的引脚配置
    GpioCtrlRegs.GPADIR.bit.GPIO1=1;
    GpioDataRegs.GPASET.bit.GPIO1=1;

    接下来、在 DefaultIsr_3_4中、修改 ADC_INT1 ISR 第168行中的以下代码行:

    静态易失性 UINT16 GPIO1_COUNT = 0;//引脚切换计数器

    下面的代码行从第193行开始(再次注意...GPA。。 而不是... GPB...):

    if (GPIO1_COUNT++> 25000)//缓慢切换以查看 LED 闪烁

    GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;//切换引脚
    GPIO1_COUNT = 0;//重置计数器


    现在、LED 在运行代码时应闪烁。 请确认。

    从上一篇文章中、您现在看起来可以使用脚本更改 KEY 和 BMODE 值、并在存储器浏览器中查看这些更改。 如果是这种情况、我们都有"已知良好的代码"可供使用。 请将此代码与您遇到问题的代码进行比较、如果您发现任何问题、请告诉我。 但愿这对您有所帮助。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我进行了这些更改、代码工作正常。 电源复位或正常重置后无问题。 我甚至检查了该图、它显示了25%占空比 PWM 波形。
    您是否知道如何在代码中产生几毫秒的延迟? ?。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    在项目中、您将找到实现延时时间的 UsDelay.asm。 您可以在 SYSCTRL.c 和 ADC.c 中找到其用法示例

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在哪里可以访问段文件(例如.ebss .text)并对其进行编辑。
    我创建了一个新项目并开始对其进行调试。 我使用了一个工作示例中的 LED 打开关闭序列代码。 我使用了用于该示例代码的相同链接器文件、即 Headers_nonBios.cmd 和 F28027.cmd 文件。
    编译的代码。 它会一直运行、直到我按下 RESET 或 POWER RESET。 这次、emu 密钥和引导模式都可以。 但有一个存储器位置为0x3f7ff6。 用于指向代码起点的代码。
    我发现其工作代码的值为007F、我的值仅为 FFFF。
    在实验指南中、他们说有一个名为 codestart 的"段"、其中包含此存储器位置的值。 我可以在哪里找到并编辑它。 我无法从内存浏览器编辑该位置。
    链接器文件有一条将 codestart 段链接到3F7FF6的行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    CodeStartBranch.asm 文件需要位于代码入口点。 它将分支到_c_int00(),它是编译器运行时支持库的一部分,用于设置编译器环境,然后调用 main()。 如果从 RAM 运行、则该文件需要为0x000000、如果从闪存运行、则该文件需要为0x3F7FF6。 (在《车间维修手册》中、请参阅第30页的顶部幻灯片)。

    链接器命令文件描述了物理硬件存储器(存储器部分)并指定了段在存储器中的位置(段部分)。 这是您编辑的关键文件、用于放置需要放置在特定存储器位置(而不是存储器浏览器中)的各个段。 在 Workshop 链接器命令文件中、您将注意到对于 RAM、Begin_M0有一个存储器范围(origin = 0x000000、length = 0x000002)、同样对于闪存、Begin_flash 有一个存储器范围(origin = 0x3F7FF6、length 0x000002)。 CodeStartBranch.asm 有一个名为'codestart'的用户定义段、由一个到_c_int00 ()的长分支(LB)组成。 这恰好是2个字、因此长度为0x000002。 在链接器命令文件的 SECTIONS 段中、您将注意到"codestart"段。 对于 RAM、此段放置在存储器位置 BEGIN_M0中、对于闪存、此段放置在存储器位置 BEGIN_FLASH 中。

    但愿这对您有所帮助。

    - Ken
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢你的帮助。 我的新代码工作正常。 但是、我无法使用原始代码解决问题。
    )
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Damith、

    不用客气。 我很高兴它现在在工作。

    - Ken