uartboot上传失败:收到的无效宣告消息

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
11个员额/ 0新
最后一篇
ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
uartboot上传失败:收到的无效宣告消息

你好

我有以下问题的新定制的PCB:UART工作(空闪光灯),但是当我尝试通过编程串行闪存,我得到以下错误:

....................................................................................................................。。。PROGRAM QSPI .. ........................................................................................................................ . ........................................................................................................................ .. .. Programming image .. ........................................................................................................................ cli_programmer 1.26 Copyright (c) 2015-2019 Dialog Semiconductor Using serial port COM5 at baud rate 57600. bootloader file not specified, using internal uartboot.bin Setting serial port baud rate to 115200. Connecting to device... Uploading boot loader/application executable... Executable uploaded. Setting serial port baud rate to 57600. uartboot upload failed: invalid announcement message received . ........................................................................................................................ . ERROR: . cli_programmer.exe" has exited with code: 4294967190 . . call: "D:\smartsnippets_ws\SDK_10.0.6.88\binaries\cli_programmer.exe" --cfg C:\Users\mme\AppData\Local\Temp\tmpq9lxd8zg COM5 write_qspi 8192 C:\Users\mme\AppData\Local\Temp\tmp1y1fc9c7 ........................................................................................................................ . . ........................................................................................................................ .. .. FINISHED .. ........................................................................................................................

它说,收到了无效的公告消息。你有什么可能引起这一点的经历吗?

当我尝试擦除闪存时,发生同样的事情。

我没有编辑的cli_programmer奥德的uartboot.bin的任何配置。随着DEV-套件子卡它的工作没有任何问题。

谢谢你的帮助!

设备:
PM_DIALOG.
离线
最后一次露面:2天5小时前
职员
加入:2018-02-08 11:03
嗨Ethsiplab,

嗨Ethsiplab,

最可能的原因是这种类型的错误是,UART没有被正确读取。能否请您探测UART信号,并共用一个UART痕迹?此外,这将是份额非常有帮助的(如果可能的话)你的定制电路板的原理图。如前面的论坛主题提到的,你应该使用P0_8(UART RX)和P0_9(UART TX)代替P0_7,P0_9的。您还可以找到它变成表2:DA14691 /从DA1469x数据表5引脚说明。要做到这一点,你可以请确保您使用的是正确的UART引脚?

请检查位于cli_programmer项目下的get_boot_stage()函数 - > protocol_cmds.c文件 - > get_boot_stage(int超时)。

功能检查是否执行已经通过轮询UART到达第二引导装载程序阶段。如果没有接收到答案则返回“超时等待回应”否则它试图通过UART阅读,如果它已经在第一阶段的bootloader出去(ROM的Bootloader)它检查的版本,看它是否支持或返回“不支持引导程序版本”。如果达到了时间限制,将在它返回ERR_PROT_UNKNOWN_RESPONSE触发“无效宣告消息收到”的打印默认状态结束

谢谢,PM_DIALOG.

ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
你好,

你好,

谢谢您的帮助。

我确实使用了正确的针脚,另一个条目是拼写错误。附上了原理图的相关部分。

我也将TX和RX追踪与子板(工作的工作)和PCB(不起作用)进行比较。在UartBoot.bin下载后,两个板都表现得完全相同。之后,与DEV板相比,PCB无法发送响应。我还附上了迹象和两个级别的放大在故障区域上。痕迹是从子板中取出的,但PCB迹线看起来绝对相同,直到这种缺失的回复(如果没有发生任何事情)。

这是否可以帮助您判断问题可能存在的地方?

(很抱歉的坏图像质量。信誉是计算机的TX,在DA14695的红色TX)

依恋:
PM_DIALOG.
离线
最后一次露面:2天5小时前
职员
加入:2018-02-08 11:03
嗨Ethsiplab,

嗨Ethsiplab,

正如在以前的论坛上发帖,并通过电子邮件以及讨论,似乎你不能读取UART正确的字节。最可能的原因可能是由于PCB的问题。要做到这一点,我会建议您检查您的PCB,并检查UART痕迹。

请在SmartSnippets Studio Project目录中导入剪贴画器和libprogrammer。libprogrammer是剪贴画器项目的一部分。如果您通过Libprogrammer项目的源代码,请在Programmer.c文件中找到“收到的”错误“错误对应于ERR_PROT_UNKNOWN_RESPONSE定义。此错误仅在get_boot_stage.c函数中发生(位于Protocol_cmds.c文件中)。此函数读取当前引导级中的字节。但是,它无法读取正确的字节,并且它将进入交换机语句中的默认值(Err = Err_Prot_unkNown_Response;)。我还建议检查AN-B-069:从串行接口启动DA1469X应用笔记为了更好地了解引导序列。在第5.1节中,您将找到UART字节序列应该如何。

随函附上从逻辑分析仪采取了UART捕获。我使用我们的DA14695子板与TTL UART在3.0V。它与默认pxp_reporter,cliprogrammer和uartboot没有任何修改测试,作为提供是SDK。捕获是同时编程子板思想SmartSnippets工作室(program_qspi_serial脚本)。

此外,我并不完全确定是否有PCB中的任何组件,下降3V下的电压。所以,请您能测量UART信号中的电压电平吗?如果它不到3V,那么您可能会提供高于3V的电源电源。

谢谢,PM_DIALOG.

依恋:
ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
你好,

你好,

谢谢回复。电压不应该是一个问题。该水平在3V和电路板上,我在测试中,我们甚至没有将除MCU之外的部分和周围的所有必要部件放置(盖子,电感器,RAM,晶体)。

于是我通过源代码一步一步的去与示波器验证它:

  1. 在Protocol_upload_executable()中,通过接收STX(0x02)在Protoct_verify_connection()中验证连接,该STX(0x02)在电源启动时确实是广播STX的STX(0x02)。
  2. 之后,在send_initial_code()中,上载引导加载程序。这是根据表1的“从串行interfaces.pdf启动的DA1469X”中的工作方式:
    1. 主机发送SOH(0×01)和长度(在我的情况0xF4中,0x77)
    2. 董事会与响应ACK(0×06)
    3. 主机发送的引导程序
    4. 与CRC董事会响应(在我的情况0x66)
    5. 主机发送ACK(0x06)

这一切工作完全一样在表1中与“DA1469x引导从串行Interfaces.pdf”的图2中描述,我可以由位范围的位测量。这只是事后板TX行云到GND,从来都没有再次发生。同时,主机设置波特率为57600和get_boot_stage等待另一个状态更新()(由protocol_cmd_upload_bootloader称为())。它从未接收,然后触发到被中止在cli_programmer的主要功能和整个过程要打印的错误信息。

与此相比,子板作用完全相同(相同字节值如上述)。但是从主机(2.5以上)接收到ACK后,板发送该更新:0×02 0×01,0×00,×03在较低的波特率然后触发下载到闪存。

结论:对我来说,好像引导程序被加载完全正常的(如表1和“DA1469x引导从串行Interfaces.pdf”的图2描述),但它从来没有开始执行,从来没有初始化的实际程序下载到Flash。是否有可能引导加载程序具有访问Flash或类似的东西的问题?我现在用的是MX25U3235FZNI-10G闪存这应该是相同的子板只是一个不同的包之一。

GA_Dialog
离线
最后一次露面:4个月3周前
加入:2019年8月2日09:02
你好,

你好,

让我们首先尝试查看下载到RAM的代码是否已执行。如果发生这种情况,我们应该能够确定代码失败的位置。

我建议您构建uartboot.bin作为da1469x-00_debug,并且在编译后尝试调试 - > ram_da1469x。这样Cli_Programmer将尝试将UartBoot的调试版本下载到PCB的RAM中并执行代码。UartBoot的Main()函数的早期缺失的签名正在发生。默认情况下,调试应在Main()函数的开始时放置一个断点,但如果您想确保将其肯定放置,无论您认为这是合适的。

这样,我们将首先验证在下载到RAM后执行uartboot main(),然后我们可以确定在哪个函数中,执行失败。

典型的交易应该如下所示:

/ * *处理用于传输的完整流(包括进/出的数据)如下:* * <=  (VER1)(VER2)* =>  * =>(类型)(LEN1)(LEN2)*呼叫HOP_INIT * <=  /  *如果len> 0 * =>(数据...)*呼叫HOP_DATA * <=  /  * <=(CRC1)(CRC2)* =>  /  *呼叫HOP_EXEC * <=  /  *呼叫HOP_SEND_LEN *如果len> 0 * <=(LEN1)(LEN2)* =>  / *呼叫HOP_SEND_DATA * <=(数据...)* =>(CRC1)(CRC2)* <=  /  * *如果NAK已在一些步骤被发送,下一个步骤不应进行。* /

在uartboot main.c文件,如所描述的。

如果我没有弄错的是交易的第一步,你似乎似乎失踪了,这让我想知道代码是否已经执行了。如果它是,请检查它是否在init()上,我们应该开始检查它是​​否是未找到或初始化的闪存。

编辑:调试uartboot时,请在qspi_automode_init()函数上放置一个断点,该函数可以在{sdk_root} /sdk/bsp/memory/src/qspi_automode.c文件中找到。在到达Main()之前,系统执行SystemItInit(),它尝试读取闪存的JEDEC ID,以便只要有一个驱动程序就可以为特定闪存选择正确的配置。

要放置一个断点上的项目中的特定功能单击,然后旁边的调试图标找到箭头并选择调试配置。有挑RAM_DA1469x。一旦启动选项卡上,并在最底层有单击应该有一个检查选项“在设置断点”,其默认值为“主”。

我希望这个问题所在的地方缩小。

此致,
GA_Dialog

ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
你好

你好

回复较晚,抱歉。我有一个怀疑,我的闪存芯片被打破,取而代之的是不幸的是没有解决的问题。然而,令人惊讶的是,当我尝试没有焊接就可以了闪存芯片的电路板进行编程,错误的是不同的。看来在以后的时间点与引导加载程序绝对运行(参见下面的控制台日志)。我还检查的范围和不上,从董事会失踪4个字节的响应在即将到来的闪光。我使用的是MX25U3235FZNI-10G闪存芯片我的船上。

谢谢你用调试的建议。虽然我将SWDIO和SWCLK传送到连接器,但我没有互换调试适配器进行串行电线调试(您推荐产品,我找不到一个吗?)。我希望使用dev-kit的主板作为调试适配器,但这不起作用。(它不适用于外部连接的子板拔未插入和GND,VBAT,SWDIO(P0_10),即连接的SWCLK(P0_11))。

这里的控制台日志没有闪存的闪存芯片:

....................................................................................................................。。。PROGRAM QSPI .. ........................................................................................................................ . ........................................................................................................................ .. .. Programming image .. ........................................................................................................................ cli_programmer 1.26 Copyright (c) 2015-2019 Dialog Semiconductor Using serial port COM5 at baud rate 57600. bootloader file not specified, using internal uartboot.bin Setting serial port baud rate to 115200. Connecting to device... Press RESET. Uploading boot loader/application executable... Executable uploaded. Setting serial port baud rate to 57600. Writing to address: 0x00002000 offset: 0x00000000 chunk size: 0x00002000 Verify writing to qspi address 0x2000 failed. Retrying ... write to QSPI failed: timeout waiting for response (-100) . ........................................................................................................................ . ERROR: . cli_programmer.exe" has exited with code: 1 . . call: "D:\smartsnippets_ws\SDK_10.0.6.88\binaries\cli_programmer.exe" --cfg C:\Users\manue\AppData\Local\Temp\tmpgp9wsxlb COM5 write_qspi 8192 C:\Users\manue\AppData\Local\Temp\tmp679bal0u ........................................................................................................................ . . ........................................................................................................................ .. .. FINISHED .. ........................................................................................................................

ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
你好,

你好,

感谢您的帮助了!
我尝试了你在手机上推荐给我的内容:我使用了很短的电线将SWD连接到主板并用GND线扭曲它们。但是,即使只是通过具有低比特率的GDB服务器连接,它也不工作。虽然同样的事情与插入的子板一起使用(并且我可以在该方案中测量SWD信号),但我无法在尝试通过导线而不是J1和J2连接器时既不测量任何SWDIO和SWCLK的任何信号。当没有插入子板时,主板甚至没有启动通信?是否有其他PIN(除SWDIO,SWDCLK,GND和VBAT之外)我需要连接或拉到GND或...进行这项工作?

我已经订购了一个J-Link Segger适配器,希望很快到来,但很高兴能够使用主板更早地跑步。

PM_DIALOG.
离线
最后一次露面:2天5小时前
职员
加入:2018-02-08 11:03
嗨Ethsiplab,

嗨Ethsiplab,

随着Ga_Dialog让我了解我,你今天有一个短暂的电话。请尝试调试程序,即Ga_Dialog向您建议您,然后更新故障单,如果问题存在或者您是否有任何其他后续问题。

谢谢,PM_DIALOG.

ethsiplab
离线
最后一次露面:6个月1周前
加入:2019年9月13日12:58
嗨PM_Dialog

嗨PM_Dialog

谢谢你的建议。我很乐意遵循上面的程序。但是,目前我无法从Dev-kit主板到我的PCB(或Daugtherboard)建立SWD连接。我猜,这是能够做任何调试过程的预先遗传。这也是问题,电话是关于这个问题。Ga_Dialog对主板和设备之间的SWD连接提供了一些非常有价值的输入。
然而,正如我上面提到的,有连接或者子板或通过导线(使用主板作为调试适配器)我的PCB到主板上时SWD无通信。因此,我的问题:有没有可能是主板甚至不启动通信时,子板没有插入?是否有其他PIN(除SWDIO,SWDCLK,GND和VBAT之外)我需要连接或拉到GND或...进行这项工作?

谢谢,

ethsiplab

PM_DIALOG.
离线
最后一次露面:2天5小时前
职员
加入:2018-02-08 11:03
嗨Ethsiplab,

嗨Ethsiplab,

我道歉,我已故的答复。我还与GA_Dialog讨论这个内部。如果检查Pro的母亲板原理图,你会发现一个名为“电压电平转换”电路。该电路负责DA1469x和ATSAM3U2CA-CU之间的电平电压转换。在视DA1469x来看,M33_SWDIO / M33_SWCLK正在操作上1.8V。然而,在ATSAM3U2CA-CU芯片,所述SWDIO / SWCLK正在操作上3V,所以需要一个双向的电压转换。这是“电压电平转换”电路的操作。为了实现此电压转换时,运算放大器(U1)应与3伏供应。否则,DA1469x和ATSAM3U2CA-CU之间的连接不能建立。要做到这一点,在你的定制电路板的情况下(或当DA1469x子板从Pro-DK去附后),有从Pro-DK JTAG访问,你应该:

  1. 将3伏电源的电池连接到v30,在J4标题中暴露。具体而言,您应该具有共同的地面并将电池连接到J4:28(V30)引脚。
  2. 从V30电源轨道到J​​4:28(V30)引脚的跳线从V30电源轨道接线。在DA1469X子板的情况下,应完成大量PCB修改,并未建议使用。

谢谢,PM_DIALOG.