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.
内核已在我们的定制板中成功加载、但在选择 Erase 或 DFU 后、我们会发现 NACK 错误这些屏幕截图 如下所示。 我们将在此使用交替引导模式引脚、这些引脚是 GPIO28和 GPIO29。 请尽快帮助我们。
您好!
内核下载到器件后、您是否能够在 CCS 中加载内核的符号并查看器件的当前状态?
谢谢。此致、
查尔斯
您好!
我们无法通过 CCS 为内核提供命令。 如果您知道如何执行此操作、请告诉我该过程、并告诉我们内核的符号是什么意思。 我们的理解方式与内核的符号类似、即 通过串行闪存程序员.exe 给出命令。
您好!
1) 1)使用串行闪存主机编程器、使用适用于 SCI 的 GPIO 将闪存内核发送到器件(如前所述)
2) 2)打开 CCS 并连接到器件目标 CPU1
3) 3)要加载内核的符号、在 CCS 工具栏中点击"Load"图标、并 在内核成功加载到器件后选择"Load Symbols"文件夹。
4)内核是否正在等待用户的下一个命令?
请注意、为工程加载符号时、这与发送内核命令不同。 串行闪存主机编程器的操作列表中列出了内核命令(例如1 - DFU1、2 -擦除、3 -验证)。 调试时需要应用项目的符号。
谢谢。此致、
查尔斯
您好!
我们尝试过在上面的邮件中是否提到您。 加载符号(例如:blinky.out)后 、将控制器复位、然后没有 GPIO 切换、是否有任何其他替代方法来验证问题。
您好!
您是否可以加载闪存内核的符号(例如:f2837xs+ sci_flash_kernel.out)、而不是加载 blinky.out 的符号? 我们要求加载符号的原因是为了在 NACK 错误发生之前查看器件的当前状态。 预期的行为是在内核加载到器件上后、执行暂停、并加载符号、我们应该会看到器件等待输入下一条命令。 如果在您加载闪存内核的符号时未显示该内容、则内核加载时可能会出错。
此致、
斯凯勒
您好!
您在前面提到过、我们已经尝试过。 首先、我们通过串行闪存编程器加载了闪存内核、它显示了一些命令选项、如(DFU、Erase、run……)。
之后、我们通过 CCS 工具加载了 Load 符号、之后我们从串行闪存编程器发出了命令、并通过从 CCS 工具运行代码、我们知道内核在自动波特率锁定条件下被切换、而串行闪存编程器在调用 F021 Send Packet 时被切换。
您好!
内核正在配置哪些 GPIO? 在 F2837xS_sci_flash_kernel.c (在 C2000Ware 中)中,第141行通过将 SCI_BOOT_ALTERNATE 参数传递给 SCI_GetFunction ()来指定 GPIO28和29。 它是否已在您的内核项目中进行了修改? 如果 GPIO 按预期进行配置、是否尝试了其他波特率? 您使用哪种波特率?
此致、
斯凯勒
您好!
我们只使用 SCI_BOOT_ALTERNATE 引导模式、而所有这些模式都在调试模式下工作、我被检查。
我们也使用了不同的波特率(如2,400,4800,9600,115200)0960),0115,但我们在上面的屏幕截图中看到了相同的行为,在本次对话开始时已附加。
您好!
我们认为,一旦内核被下载到控制器,为了重新下载内核,我们必须重置控制器,但在我们的情况下,没有任何重置内核被多次下载。 是这样吗?
您好!
是的、您应该在将内核下载到器件之前重置控制器。 如果您在加载内核前复位,设备是否仍会卡在 autoBaudLock()中?
此致、
斯凯勒
您好!
可以、即使我们在加载内核之前重置控制器、设备的工作方式也与上面的屏幕截图和 CCS 调试器中提到的方式相似、设备仍然卡在内核的 autoBaudLock ()中。
实际上、在我们没有给出重置的情况下、内核已成功下载多次。 我们这边有什么问题吗?
请尽快为我们提供建议。
您好!
我不确定您描述的多个成功内核下载的行为是否表明存在问题、但我会研究一下。
同时,你可以尝试通过 JTAG 和 CCS 加载内核,看看 autoBaudLock()的行为是否仍然存在? 可以使用 serial_flash_programr_appln.exe 只将应用程序映像发送到器件。
此致、
斯凯勒
您好!
如何将命令授予 serial_flash_programmer_appln.exe。
我没有找到有关如何向此.exe 发出命令的任何信息、我们假设命令如下
" serial_flash_programr_appln.exe -d f2837xS -a -b -p "。 是这样吗?
您好!
是的,我们尝试通过 JTAG 和 CCS 加载内核, autoBaudLock ()函数工作正常。 在加载内核代码等待 while (SciaRegs.SCIFFCT.bit.Abd!=1)、因此我们从自己的 exe 中发出了0x41 (A 的 ASCII)命令、AutoBaudLock 成功。
谢谢你。
您好!
本文档的第5.4.4节 介绍了 serial_flash_programmer_appln.exe 的用法。 现在、当通过 CCS 加载内核时、auto baud 函数成功执行、当您发送命令时还能看到 NACK 错误吗?
此致、
斯凯勒
您好!
当使用原始方法(serial_flash_programmer.exe)加载内核时、您可以验证主机编程器与器件之间发送的自动波特率字符吗? 根据屏幕截图的输出、已满足自动波特条件、因此主机编程器会提示用户输入。 在 autoBaudLock()功能期间,您是否可以验证传输/接收'A'? 如果成功、那么您在加载符号时看到的自动波特问题可能源于调试流程、而不是实际的内核/应用流程。
为了进一步调试这个问题,您可以在 SCI_GetPacket ()函数中设置一个断点,并将器件接收到的数据与主机编程器发送的数据进行比较。
此致、
斯凯勒