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.

[参考译文] TMS320F2.8069万:如何构建代码的发行版本

Guru**** 1831610 points
Other Parts Discussed in Thread: C2000WARE, MOTORWARE, C2000WARE-MOTORCONTROL-SDK, DRV8301-69M-KIT
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1095955/tms320f28069-how-to-build-release-version-of-code

部件号:TMS320F2.8069万
主题中讨论的其他部件:C2000WAREMOTORWAREC2000WARE-MOTORCONTROL-SDK,,, TMDSCNCD2.8069万MISODRV8301-69M-Kit

您好,

我有一个项目,我开始使用示例项目“Example_2806xScia”。 我把它修改为使用Scib而不是Scia。 我还添加了一层以适应SLIP协议。 原始项目只有调试配置,没有发行配置。 因此,它在调试模式下运行正常,但当我断开电源并重新启动微时,没有任何反应,除非我连接调试器(Code Composer)并从那里运行它。 我在多个文档中看到,Code Composer会自动生成调试和发布配置。 我没有看到这一点。 我已经看了C2000Ware和Motorware中的每个示例,但找不到一个同时存在这两种配置的项目。 我想如果我可以看到这两种配置的属性,并在Release & Debug文件夹中看到文件,我可能会想清楚这两种配置之间的区别是什么。 这样,我就可以设置发行版本,使其像发行版(即 我可以将它加载到微上,它可以独立于调试器运行)。 我还了解到版本构建通常采用优化(似乎推荐2级),并且禁用了"符号调试"。 我可以打开优化,但我一生无法找到任何可以禁用符号调试的地方。 无论如何,我觉得这些不能成为发布版本的定义特征。 必须有一些区分调试和发布的基本"开关"。 文档似乎只是假定您知道如何执行此操作。 我希望能够逐步说明如何将仅调试项目转变为可以生成发布版本的项目。

提前感谢您的帮助。

此致,

戴夫

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

    Dave,您好!

    我很高兴内部版本问题得到解决! 您能否向我说明您正在使用的硬件? 让我知道主板上的标签,以确保我们在这里的页面相同。 我将在办公室查找一些硬件,并尝试在星期一复制您的设置。

     如果您可以在重置时测量TRSTn,TDO和GPIO34引脚上的电压,即当XRSn变高时,没有调试探头或USB电缆插入设置时,也会有所帮助。

    当您说您连接调试器时,我假设您是通过USB连接器进行调试。 如果您指的是连接到基板的XDS110调试探头,请告诉我。 我确实需要更正以前提供的一些错误信息。 您可以将XDS110连接到基板上。 JTAG信号通过DI100连接器连接到controlCARD。 我以前不正确地阅读了原理图。

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

    您好,Gus,

    我使用的评估模块是DRV8301-69M-Kit。 所涉及的控制卡是TMDSCNCD2.8069万MISO。

    主板上的标签为-

    底板:DRV8301-HC-EVM D版

    控制卡:F2806x ISO控制卡  版本0.4

    我用于我的主板的硬件当然是我发给你的原理图。

    是的-在EVM上,我只是通过USB直接插入控制卡。

    我会得到这些测量结果并回复给您。

    什么是XRSn? 我在原理图上看不到它。

    谢谢!

    戴夫

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

    感谢您对所使用的主板进行说明。 现在,我要看一下正确的controlCARD原理图!

    您对SW3的回答正确。 此处解释了也需要的原因(在您发送最新回复时发现了此问题):

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/518559/boot-f28069-from-flash</s>2000 200051.8559万2.8069万

    XRSn是F2.8069万器件上的复位引脚。 它连接到controlCARD上的R1。

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

    哦,是的,我终于看到了XRSn。 它唯一标记的位置是在微型上。

    TRSTn上的脉冲持续时间是多少? 我可以为单次采集,正常触发设置范围。 正在发生某种情况;每次我重启电源时,都会触发示波器,即使触发电平高达2.3 V,但显示的信号始终为零或左右。 尝试了从250US到5ns的每一个水平刻度(尽可能低),但我仍然无法拾取。

    用数字万用表看,它只能达到3.9 mV。 我仍然怀疑它会变得很高,只是真的很快。

    已查看上面引用的帖子。 所以看起来我不必担心SW3对我的主板的影响,因为它在其中是为了克服隔离的影响。

    谢谢!

    戴夫

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

    您好,Gus,

    下面是开机时这些信号的一些屏幕截图(随附)。

    谢谢!

    戴夫

    e2e.ti.com/.../Power_2D00_Up.zip

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

    Dave,

    这些示波器图是来自您的主板还是TI套件? TRSTn和TDO引脚上有很多噪音,但我需要了解一下与XRSn的关系。

    现在闪存示例正在TI套件上启动。 让我们尝试在您的板上展示该示例。  

    1.修改示例以切换GPIO34和GPIO21 (21在主板上用作LED)。

    2.验证TI套件上的示例是否仍可从闪存正常启动。

    3.使用调试探头刷新主板上的示例,并验证您可以看到LED切换。

    4.在您的主板上,确保TRSTn处于低电阻状态,GPIO34和TDO处于高电阻状态。  

    5.拔下调试探头并打开主板电源。 验证指示灯是否闪烁(表示从闪烁启动)。

    如果仍不工作,请捕获XRSn以及TRSTn,GPIO34和TDO。 我们需要在同一捕获中看到XRSn与其他信号。  

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

    您好,Gus,

    他们来自TI主板。 我将从1-5开始。

    谢谢!

    戴夫

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

    您好,Gus,

    以下是TRSTn和TDO的屏幕截图,XRSn用作触发器(单触发,正常触发模式)。

    黄色迹线是XRS,蓝色是所有情况下的另一个信号。

    谢谢!

    戴夫

    e2e.ti.com/.../TI-Board-JTAG-Screenshots.zip

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

    Dave,

    感谢您分享示波器屏幕截图。 如果controlCARD上的SW3打开且探测到R7,则TRSTn应为低。 看起来您可能已经探测到了交换机的TRSTn-S侧。 无论如何,我建议您现在将调试重点放在主板上。

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

    您好,Gus,

    进行了您建议的更改,TRSTn通过10k降低,GPIO34和TDO通过3.3k分别被拉高。

    与以前一样,调试器将无法连接。 我不知道为什么,但它似乎只有在TRSTn被拉高时才起作用。 我会给您回看屏幕截图,但在此期间是"测试连接"(通过目标配置)的结果。

         [开始:Texas Instruments XDS110 USB调试探头_0]

         执行以下命令:

         %CCS_base/common/uscif/dbgjtag -f %boarddataFilet%-RV -o -S完整性

         [结果]


         ——— [打印主板配置路径名]------------------

         C:\Users\dreagan\AppData\Local\TEXASI~1\
         CCS\ccs1031\0\BrdDat testBoard.dat

         ——— [打印reset-command软件日志文件]------------------

         该实用程序选择了100或510类产品。
         该实用程序将加载适配器'jioxds110.dll'。
         图书馆的建造日期是'2021年4月29日'。
         库的构建时间是'17:49:40'。
         库软件包版本为9.3 .0.0.0058万。
         库组件版本为35.35 .0.0。
         控制器不使用可编程FPGA。
         控制器的版本号为'5'(0x0.0005万)。
         控制器的插入长度为'0'(0x0万000000)。0万。
         此实用程序将尝试重置控制器。
         此实用程序已成功重置控制器。

         ——— [打印reset-command hardware log-file (重置命令硬件日志文件)]------------------

         扫描路径将通过切换JTAG TRST信号重置。
         控制器是带USB接口的XDS110。
         从控制器到目标的链路是直接链路(不带电缆)。
         该软件配置了XDS110功能。
         控制器无法监控EMU[0]引脚上的值。
         控制器无法监控EMU[1]针脚上的值。
         控制器无法控制输出引脚上的正时。
         控制器无法控制输入引脚上的正时。
         扫描路径链路延迟已完全设置为'0'(0x0000)。

         ——— [出现错误,此实用程序已中止]---------------

         此错误由TI的USCIF驱动程序或实用程序生成。

         值为'-233'(0xffffff17)。
         标题为'SC_ERR_PATH_BLONTE'。

    谢谢!

    戴夫

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

    您好,Gus,

    以下是TRSTn和TDO的示波器图像,每张图像都与XRSn配对,在我们的定制板上测量。

    我不能加载任何内容,因为调试器无法连接,但这表示在断开调试探测器的情况下启动时的行为。

    此致,

    戴夫

    e2e.ti.com/.../Custom-Board-_2D00_-XRSn-_2600_-TRSTn.zip

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

    抱歉-忘记GPIO34。 这里是(附后)。

    注释与以前相同-黄色代表XRS,蓝色代表其他。

    此致,

    戴夫

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

    Dave,

    109.5955万builde-release-version-of-code/4074531#4074531"]由于2.8069万由于调试407.4531万调试器407.4531万器无法连接,我无法加载任何内容,但这表示调试器在打开电源时的行为。]

    在您的主板上,我注意到您有一个用于JTAG的10引脚插头。 这是否意味着您在 XDS110调试探头中使用10针适配器(CM10)? 我注意到适配器未显示TRSTn (请参阅以下debug probe用户指南中的表格)。 我还注意到您的主板上有TRSTn连接到适配器的nReset引脚。 n重置引脚不应连接到TRSTn。 我认为这是问题所在,即调试探测器无法驱动MCU上的TRSTn以使仿真逻辑脱离复位,因此您会遇到仿真中断错误,并且只有TRSTn MCU引脚上的上拉功能似乎工作正常。

      

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

    您好,Gus,

    哇! 谢谢! 很棒的发现!

    我正在使用10针适配器。 我不记得,但我必须已经认识到,由于TRSTn没有完全匹配的名称,所以nReset必须是它的正确配合,它们的名称是最相似的。 我猜当时很合理!

    所以,既然CM10不会产生TRSTn,我是否应该把它保持在低线(一旦我将它从TRSTn中脱开),而不用担心它? 在什么条件下,我会需要它进入高水平?

    n重置如何? 是否应该连接到板上的东西?

    再次感谢,然后

    此致,

    戴夫

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

    Dave,

    您需要通过电阻器拉低TRSTn。 这将确保在“正常”操作期间禁用MCU中的仿真逻辑,即当您希望主板独立于调试探测器和CCS调试器启动和运行时。

    您需要能够允许调试探测器直接驱动TRSTn。 这意味着您不能使用10针接头和CM10适配器。 如果您计划重新设计主板,并且您有足够的空间,我建议您使用支持TRSTn的14针接头+适配器。  虽然"暂时"将TRSTn拉高似乎对您有效,但这可能是一种变通办法,您可以使用它至少刷新您的主板并暂时继续调试。  

    我不想让nReset与MCU连接。

    您是否能够在主板上闪存和启动示例? 我的手指在这里。 :-)

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

    您好,Gus,

    是的-感谢您,我可以从闪存加载,引导和运行程序。 我的LED闪烁不正常!

    那么,是否要求将板上的TRSTn连接到调试器上的TRSTn?

    为什么适配器会忽略这一点?

    看起来我需要另一个板旋转,带有14针连接器。 在某种程度上这是可以的。

    还有其他一些我想清理的东西。

    我非常感谢您为我提供的所有帮助。

    谢谢!

    戴夫

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

    Dave,

    我很高兴问题现在得到解决。

    109.5955万builde-release-version-of-code/4075765#4075765"]因此2.8069万因此要求407.5765万要求将407.5765万将主板上的TRSTn连接到调试器上的STn?

    是,TRSTn必须连接到调试探测器。 调试探测器必须能够通过驱动TRSTn HIGH启用MCU上的仿真逻辑。

    适407.5765万适配器为什么会忽略这一点?

    10引脚适配器用于基于ARM的设备或没有TRSTn引脚的设备。 例如,我们最新一代的C2000 MCU没有TRSTn引脚。

    此线程现在将关闭,但如果您有其他问题,请随时打开新线程。  

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

    您好,Gus和/或Whitney,

    我仍然遇到一个持续存在的问题,问题与此相同。

    首先,我可以加载commm程序并在不使用调试器的情况下运行它,但前提是遵循以下顺序:

    使用TRSTn Tied High加载程序。

    关闭电源。

    卸下XDS110。

    保持TRSTn连接高并插入电源。

    去除电阻器远端的3.3V电压(TRSTn High)。

    然后它就开始运行了。

    我不能只使用TRSTn Tied Low重启。 什么也不会发生。 我试着用一个更小的电阻器将它捆绑得更低一些。 还是什么都没有。

    它似乎需要在TRSTn上从高到低的转换。 是否设置了一些参数来激活TRSTn边缘,而不仅仅是级别激活?

    当我运行Example_2.8069万Flash时,没有发生这种情况。 加载和运行正常。 它必须使用TRSTn High进行编程,但不需要转换。

    因此,我开始寻找我的项目与示例之间的重大差异。

    当我查看我的项目时,在“属性-->常规”下,列出的链接程序文件是f2806x_Headers_nonBIOS.cmd,而示例引用的链接程序文件 是2.8069万.cmd。 这两个项目都需要它们(两个项目都有),但在上述地点只提到其中一个。

    我为我的项目选择了2.8069万.cmd放在该位置,f2806x_Headers_nonBIOS.cmd从项目资源管理器中的文件列表中完全消失。

    当我尝试添加适当的链接程序文件时,弹出框告诉我“不能添加:f2806x_Headers_nonBIOS.cmd”。

    我终于弄明白了。 在多次更改“属性-->常规”中引用的cmd文件后,我注意到以前引用的cmd文件在“项目资源管理器”中“变灰”。 我删除了它,然后又重新添加了它。 两个链接程序文件现在都回到项目资源管理器中,并且显然处于活动状态。

    不过,情况比我开始时要差得多。 在加载并重启后,我无法再通过在TRSTn上提供从高到低的转换来从闪存运行程序。 现在,它似乎甚至不会加载它。 我可以按常规方式进入调试模式(通过“bug”图标),CCS会告诉我:

           在地址'0x805f'处中断,没有可用的调试信息,或在程序代码之外。

    当我单击“运行”按钮时,它显然开始运行example_2.8069万Flash;LED以示例代码设置的1秒速率闪烁。

    在调试配置-->目标选项卡--> TMS320F2.8069万闪存设置中,它被告知“擦除,编程,验证”,因此我不明白为什么示例代码仍然存在。 顺便说一下,我还尝试了更多的"手动"版本的启动,加载和连接,结果相同。

    谢谢!

    戴夫

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

    您好,

    好的-我可以加载并再次运行程序。 我必须加载然后重新加载。 我不知道为什么会这样,或者它是否每次都能正常工作。 现在,我要回到最初的问题(目前),即必须在通电时提供TRSTn从高到低的转换。

    谢谢!

    戴夫

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

    不是每次都能正常工作。 现在重新加载始终呈灰色。

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

    “属性-->常规链接程序文件设置并不是那么重要。 只要项目中有cmd文件,链接程序就应该能够找到并使用它们。

    您说“重新加载”是灰色的--“加载”也是灰色的吗? 它们几乎执行相同的操作,只不过Reload只是加载上次加载的内容,而Load让您挑选出.out文件。 如果Load工作,而Reload不工作,那么可能只是CCS无法确定以前使用的文件。

    Whitney

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

    您好,Whitney,

    似乎没有一种技术能够始终如一地发挥作用。 似乎我必须尝试多种方法,然后最终其中一种方法有效。

    您说的对;当"重新加载"不可用时,"加载"也不可用(至少现在是这样)。

    我通常会看到此消息几次:

    读取注册PC时遇到问题:
    (错误-1142 @ 0x0)
    设备阻止调试访问,因为它当前正在执行不可调试的代码。 选择'rude Retry'(粗鲁重试)以禁用礼貌模式并强制执行操作。
    (仿真软件包9.3 .0.0.0058万)

    然后我会尝试一种以前不起作用的方法,突然间它就能起作用。

    谢谢!

    戴夫

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

    您好,Whitney,

    连接问题至少部分是由于我在主板上使用10引脚连接器,并且与XDS110配用所需的适配器无法产生TRSTn。 在我进行另一个电路板旋转之前,我必须通过电阻器将TRSTn定高,同时对微型进行编程。  因此,在连接,加载等方面可能会出现一些时髦的问题... 我现在可以接受这一点。 有关执行不可调试代码的消息(请参阅上一个POST)很可能是因为Micro已经在运行闪存中的程序。 我认为在尝试加载程序时,粗鲁重试一次或两次起作用,但通常不起作用。

    但让我困惑的是,在重启后,TRSTn上从高到低的转换似乎是必需的,这样程序才能从闪存运行。 加载并告知从何处开始后,它不需要JTAG端口中的任何内容。 就像它仍然在寻找XDS110的方向一样。 真正令人困惑的是example_2.8069万Flash没有相同的要求。 只要我尝试加载并运行闪存示例程序,它通常似乎插入任何已在运行的程序,没有任何问题。 我想我偶尔会遇到相同的错误消息(参见上一篇文章),试图加载示例...闪存,但通常不会。

    谢谢!

    戴夫

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

    是否启用了实时调试模式? 如果禁用“Device blocked debug access”(设备阻止调试访问)错误,该错误是否消失? 当您尝试连接到CPU时,是否会出现该错误? 如果您实际上未连接,这将解释负载选项无法工作的原因。

    但通常,我们建议在连接到调试器时将引导模式引脚置于等待引导模式,这样您就可以确保它不会在闪存中执行一些阻止建立连接的代码。

    我对JTAG引脚不是非常熟悉,但对我来说,不同的应用需要不同的行为是没有意义的。 如果您在尝试启动两个项目时在示波器上观察XRSn引脚,您会看到行为上的差异吗? 如果您自己的应用程序受到意外重置,导致无法引导,您可以在XRSn上观察到它。

    Whitney

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

    您好,Whitney,

    已在调试配置中启用实时调试。

    我停用了它,一段时间里,我收到了一条“不可调试代码”的消息。 此错误消息有几种类型,我不确定是哪一种。尝试连接时确实会出现。

    然后,在重新尝试调试时,我开始得到以下信息(CCS缩进的消息):

    尝试调试,使用错误图标:
           在地址“0x3ff75b”处中断,没有可用的调试信息,或在程序代码之外。
    这在引导ROM中很明显。
    向上单步直至0x3ff765 -装配说明中有"LCR   0x3ff456"

    0x3ff456处的指令是"ADDB   SP,#4"。
    但代码显然立即进入0x3ff4fa,单步。

    按"运行",我收到以下消息:
           在地址“0x3ff4fa”处中断,没有可用的调试信息,或在程序代码之外。
    该地址的操作码为ESTOP0。

    尝试通过手动方法调试:

           在地址“0x3ff4fb”处中断,没有可用的调试信息,或在程序代码之外。

    单步,直到0x3ff50c -装配说明中有"LCR          0x3ff582",

    然后它跳回到0x3ff4fa处的ESTOP0。

    现在我有点卡在这个模式下了。 我将再次尝试循环供电。

    没有区别。

    我尝试看看XRSn。

    谢谢!

    戴夫

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

    我们在C2000Ware中提供了引导ROM的.outs,因此您可以更轻松地加载符号并识别它在引导ROM中的作用。 查找范围:

    <C2000Ware安装目录>\libraries\boot_rom\f2806x\v1_1\ROM_sources\Release

    按“重新启动”按钮不会使您进入main()? 你只是被ROM困住了吗?

    Whitney

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

    您好,Whitney,

    不能-只是让我"在地址"0x3ff4fa"处中断,没有可用的调试信息,或者程序代码之外。"

    戴夫

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

    您好,Whitney,

    我尝试再次恢复实时调试设置,认为至少我当时正在执行一些操作。 如果我做了足够的尝试,我可以加载并运行该程序。 我的主要问题是那个该死的TRSTn。 现在它把我送到了永不陆地:

           在地址“0x805f”处中断,没有可用的调试信息,或在程序代码之外。

    这就是RAML0。 我不知道里面有什么。

    为什么这一制度在同样的条件下不能以同样的方式运作? 我认为这应该是决定性的。

    我知道时髦的JTAG接口可能会导致某些不可靠的连接行为。 但一旦连接,它应以相同的方式使用相同的设置。

    接下来我要看一下XRSn。

    戴夫

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

    您好,Whitney,

    以下是在启动时XRSn的范围捕获,通信程序加载到闪存中,闪存示例加载到闪存中(附加)。

    谢谢!

    戴夫

    通信计划:

    Flash示例:

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

    您可以使用.map文件查看该位置的内容。 它可能是DSP28x_usDelay函数--它在“Disassembly (分解)”窗口中是什么样子? 您的代码中是否使用DELAY _US?

    如果是这样,您能否在LRTR上放置一个断点,运行它,然后执行一个步骤查看它返回的位置? 如果这样无法使CCS显示正在执行的. c文件,请再次尝试加载.out的符号。

    我对example_2806xScia_FFDLB做了快速修改,以查看从闪存引导它所需的全部操作。 我只需要将2.8069万_RAM_lnk.cmd替换为F2.8069万.cmd,然后将这两个部分添加到主.c文件中--

    //
    // These are defined by the linker (see F2808.cmd)
    //
    extern Uint16 RamfuncsLoadStart;
    extern Uint16 RamfuncsLoadEnd;
    extern Uint16 RamfuncsRunStart;
    extern Uint16 RamfuncsLoadSize;

        //
        // Copy time critical code and Flash setup code to RAM
        // This includes the following ISR functions: epwm1_timer_isr(),
        // epwm2_timer_isr(), epwm3_timer_isr and and InitFlash();
        // The  RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart
        // symbols are created by the linker. Refer to the F2808.cmd file.
        //
        memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);
    
        //
        // Call Flash Initialization to setup flash waitstates
        // This function must reside in RAM
        //
        InitFlash();

    Whitney

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

    您好,Whitney,

    是的-我在主C文件中有该代码。

    我想我解决了漫游代码问题。 我刚刚删除了项目中所有不必要的内容,以及在构建或调试连接上重新创建的任何内容,然后将剩余内容导入新工作空间。 现在,我回到了最初的问题,即需要在TRSTn上进行转换才能在闪存中启动代码。 仅重申:Example_2.8069万Flash不需要此功能。

    谢谢!

    戴夫

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

    戴夫/惠特尼

    只需要在这里鸣响。 根据TRM,在重置期间保持TRST=1应强制ROM bootloader进入等待模式。 我在TRM中没有看到任何内容提到一旦TRST=0它将退出等待模式。 所以我真的不能解释你在板上看到了什么。  

    其中提到了一个序列,您可能会使用它来强制通过仿真器“获取模式”。 顺序如下所述。 至少可以证明通信程序确实可以从闪存启动,这可能是值得的。

    另外,再看一下定制板原理图,我只想确认,当XRSn变高并且激活了获取模式(闪存启动)时,TRST=0,GPIO34/37=1。 在昨天发送的示波器图中,我只看到XRSn。

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

    好-我没有想法。 我只是在另一个电路板上试用了它,结果相同。 一个程序从闪存加载并运行,TRSTn线被拉低。 另一个要求TRSTn在通电时处于高电位,然后处于低电位。 如果有人有任何想法,请告诉我。

    谢谢!

    戴夫

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

    糟糕-我在看到您的回复之前就写了这封信。

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

    我将尝试您的建议。 敬请关注...

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

    如果尝试此仿真器引导顺序,则应从CCS目标配置中删除GEL文件。 我相信惠特尼以前曾提到过这一点。 GEL文件将指示CCS在目标连接,加载和重置等活动期间执行一些步骤。 为了确保我们不会引入更多变量,我建议删除凝胶文件,直到我们更好地了解可能发生的情况。

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

    我认为目标配置中没有任何gel文件。 有CCXML文件。 这是你的意思吗?

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

    CCXML文件是目标配置。 您可以通过打开文件,单击高级选项卡,然后单击CPU来查看是否有任何gel文件。 我在下面有另一台设备的参考。

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

    您好,Gus,

    "initialization script"(初始化脚本)右侧的文本框包含"..\CCSTargetConfigurations (..\CCSTargetConfigurations)",无.gel扩展名。

    我假设这意味着我没有任何凝胶文件。

    谢谢!

    戴夫

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

    您好,Gus & Whitney,

    在将GPIO34低到3.3k后,我尝试了上述顺序。 我不知道如何"修改EMU_BMODE"。 我刚才假设调试器会处理这件事。 只要连接了XDS110,代码就会运行。 行为上有一些差异。 我现在可以每次都与调试器建立连接。 另一个差异不是那么积极。 commm程序不能独立于调试模式运行。 断电后,XDS110程序无法运行。 即使是旧的在通电时保持TRSTn高电压然后释放它的技巧也不起作用。 也许是我缺少的修改EMU_BMODE的一个步骤。

    我将于周一向您发送示波器捕获。 我怀疑它们将与我4天前发给Gus的相同(见)。

    再次感谢,

    戴夫

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

    EMU_KEY位于0xD00,EMU_BMODE位于0xD01。 您可以在内存浏览器中对其进行更改。 闪存引导为0x000B。

    Whitney

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

    您好,Whitney & Gus,

    我完成了Gus提供的过程,并将EMU_BMODE的内容更改为0x000B (原来是0x0002)。

    下一步是“执行调试程序重置并运行”。 我没有找到任何调试器重置按钮,因此我假设在单击"恢复"按钮时执行重置。 如果有办法单独重置调试器(如果这是最后一步的要求),请告诉我。

    我得到了同样的结果:只要连接了XDS110,代码就会运行。  commm程序不能独立于调试模式运行。 卸下XDS110并重启后,程序无法运行。 在通电时保持TRSTn高电压,然后释放它也不起作用。

    接下来,我会将这些示波器捕获发送给您。

    谢谢!

    戴夫

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

    我认为这应该是一个按钮:

    基本上,一旦设置了引导模式,就需要执行重置以返回到引导ROM的开头,这样它就可以再次运行引导流并采用闪存引导路径。

    Whitney

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

    您好,Whitney & Gus,

    好的-我终于按照规定完成了每个步骤。 同样,只要调试器插入并运行,我就可以与LCD通信。 当我卸下它并重新打开电源时,没有什么东西-主板和液晶屏之间没有通信。 当启动模式引脚设置为闪存启动模式(而不是等待启动模式)时,只要在开机重置时TRSTn保持高电平,然后降低电流,代码就会执行。 现在,这甚至不起作用。

    谢谢!

    戴夫

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

    下面是当今在zip文件中捕获的范围。

    观察:

    似乎用于定义启动模式的两个GPIO在XRSn变为高电平之前都将变为高电平(如果连接为高电平) 0.5毫秒到1毫秒。

    在闪存启动模式下,如果TRSTn连接高,XRSn将每隔13毫秒左右降低一次。 如果TRSTn被拉低,则不会发生此情况。

    在等待引导模式下,XRSn每隔13毫秒重置一次,而不管TRSTn的状态如何。

    谢谢!

    Davee2e.ti.com/.../DReagan_2D00_Scope_2D00_Captures_2D00_5_2D00_16_2D00_22.zip

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

    您好,Whitney & Gus,

    我只是在通信程序中的所有代码之前放置了一个无限循环,它可以打开和关闭LED。 它之前唯一的东西是memcpy,以便将时间关键型代码放在RAM中。 如果不首先执行此操作,DELAY _US函数将无法工作。 放置此循环将阻止其余代码运行。

    此程序将从闪存加载和运行,无需TRSTn从高转换到低。

    应该引导后发生的代码如何影响系统的引导方式?

    另一个奇怪的方面-延迟设置为1秒高,1秒低。 当使用调试器从PC运行时,这在示波器上是显而易见的(请参见随附的图)。 当独立于调试器运行时,延迟会延长到该值的10倍- 10秒高,10秒低。

    总结:

    运行实际通信程序-

    在闪存启动模式下,如果TRSTn连接高,XRSn将每隔13毫秒左右降低一次。 如果TRSTn被拉低,则不会发生此情况。

    在等待引导模式下,XRSn每隔13毫秒重置一次,而不管TRSTn的状态如何。

    在代码的开头以无限循环运行Comm程序,只需切换LED -

    在调试时,以代码设置的速度运行(2秒周期)。

    单独运行时,运行速度慢10倍(20秒)。

    有什么想法,发生什么事了?

    谢谢!

    戴夫

    使用调试运行:

    通电重置后,TRSTn Low (TRSTn低):

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

    您好,

    我是否应该向您发送我的代码?

    我不明白它是怎么发生的,但是当代码被缩减到一开始的无限循环时,微型从闪存启动,没有任何干预。 它并不是在占用较少内存的意义上被减少。 代码仍然存在,所以我认为所有的代码都在加载,只是被忽略了,因为通过第一个循环的所有内容都是不可访问的。 除非...优化只是将其完全切断,因为它知道它是不可达的。

    谢谢!

    戴夫

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

    EMM_boot练习的目的是显示应用程序已拥有从闪存入口点到主应用程序的所有内容,这显然是这样做的。 我能想到的唯一剩下的软件问题是调试器可能直接将某些内容加载到RAM (而不是使用ramfuncs或等效部分),当您关闭并重新打开主板时,这些内容可能会丢失。 除非您对链接程序命令文件进行了一些编辑并犯了一些错误,否则我认为您不会遇到此问题。

    Wait boot (等待引导)启用监视程序,然后处于while循环中,直到监视程序超时,因此您应该会看到XRSn是定期断言的。

    delay_US调用的函数是在ramfuns中,因此在完成memcpy之后才能调用它是有意义的。 当您说您在代码的开头切换LED时,是在调用InitSysCtrl()来设置SYSCLK之前还是之后? 因为如果以前是这样,我希望它的运行速度比预期的慢,因为SYSCLK尚未设置。 我不确定为什么它在调试模式下以预期的速度运行,而不深入研究文档, 但我可以看到SYSCLK可以通过Gel文件或闪存插件进行设置,也可以简单地从以前的运行中配置,而不是单独通过调试器重置进行重置。

    如果您要共享代码,我将查看一下。

    Whitney

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

    您好,Whitney,

    就是这样。 就在几分钟前,我将循环向下移动,通过了所有初始化例程,认为时间必须取决于其中的某些内容,而且可以肯定的是,它会以所需的速率闪烁。 我现在将闪烁的指示灯代码进一步移动到程序中,以查看问题可能出在哪里。 我会告诉你我找到的任何东西。

    谢谢!

    戴夫

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

    您好,Whitney,

    这是一个新的皱纹:

    我将切换LED线放在代码中,刚好超过FIFO中可用数据的检查。

    IF (ScibRegs.SCIFFRX.bit.RXFFST)

    //
            GpioDataRegs.GPATOGLE.bit.GPIO21 = 1;//将GPIO21设置为每次遇到此行时都切换

    ...通信代码的其余部分...

    它工作了几次。 每次收到单词时,LED都闪烁,但仅当TRSTn在开始时从高到低时,早在任何通信代码运行之前。

    现在,由于某种原因,根本没有通信,除非在调试模式下运行。 TRSTn技巧不再有效。

    好的-我已将LED开关移出可用数据的条件,它再次"工作"(仍然取决于TRSTn从高到低的转换)。 评论甚至没有任何好处。 仿佛UART甚至无法容忍它的存在!

    这是整个项目(附后)。 希望您能发现一些东西。

    谢谢!

    戴夫

    e2e.ti.com/.../Example_5F00_2806xScib_5F00_FFDLB.zip