你好!
我是一个尝试熟悉Smartsnippets开发环境的新用户。我正在使用:
DEV-套件:DA14695-00HQDEVKT-U
SDK:SDK_10.0.4.66.2
JLink:jlink_linux__v644i._x86_64
SmartSnippet:smartsnippetsstudio2.0.8
我已经成功地编译了测试程序“pxp reporter”,可以将其加载到RAM中,并在SmartSnippets中进行调试。我可以从我的手机扫描BLE设备,所以到目前为止一切都很好。
现在我想尝试将“pxp reporter”闪存到开发工具包中,但我无法使其工作。
我尝试了两种方法(见下文),没有结果。
一般的问题:
-我不理解flash进程本身(例如uartboot.bin的目的是什么?)。这有文件记录吗?
- 我是错误的方式吗?有更好的方法来闪光吗?
非常感谢帮助。
步骤1:使用debug_qspi构建配置构建二进制文件
步骤2:我使用run ->外部工具-> program_qspi_jtag得到以下输出
........................................................................................................................ .. ..PROGRAM QSPI .. ........................................................................................................................ . ........................................................................................................................ .. .. Programming image .. ........................................................................................................................ cli_programmer 1.26 Copyright (c) 2015-2019 Dialog Semiconductor bootloader file not specified, using internal uartboot.bin
然后,它永远挂
方法2:
然后我尝试使用命令行工具直接启发:SDK_10.0.4.66.2 / DOC / HTML / cli_programmer.html
我找不到任何关于GDB服务器参数的文档(是否有我找不到的文档?),但我从SmartSnippets调用中获取了参数,并按如下方式启动了gdbserver:
GDB服务器输出:
JLink_Linux_V644i_x86_64//JLinkGDBServer-if-swd-device Cortex-M33-endian little-speed 8000-port 2331-swoport 2332-telnetport 2333-vd-ir-localhostonly 1-log JLink.log-singlerun-strict-timeout 0-nogui-rtos-GDBServer/RTOSPlugin_FreeRTOS SEGGER J-Link GDB Server V6.44i命令行版本JLinkARM.dll V6.44i(dll于2019年5月17日编译)17:37:26)命令行:-if swd-device Cortex-M33-endian little-speed 8000-port 2331-swoport 2332-telnetport 2333-vd-ir-localhostonly 1-log jlink.log-singlerun-strict-timeout 0-nogui-rtos GDBServer/RTOSPlugin\u FreeRTOS------GDB服务器启动设置------GDBInit文件:none GDB服务器侦听端口:2331 SWO原始输出侦听端口:2332终端I/O端口:2333接受远程连接:仅本地主机生成日志文件:on验证下载:on Init regs on启动:on静默模式:off单次运行模式:on Target连接超时:0 ms------J-Link相关设置------J-Link主机接口:USB J-Link脚本:none J-Link设置文件:none------目标相关设置------目标设备:Cortex-M33目标接口:SWD目标接口速度:8000kHz目标端:很少连接到J-Link。。。J-Link已连接。固件:J-Link OB-SAM3U128 V3编译2019年1月7日14:06:26硬件:V3.00序列号:483051972正在检查目标电压。。。目标电压:3.30 V侦听连接到目标的TCP/IP端口2331…连接到目标等待GDB连接…连接到127.0.0.1收到的监视器命令:clrbp收到的监视器命令:重置0通过SYSRESETREQ和VECTRESET位重置核心和外围设备。接收到监视器命令:睡眠10睡眠10ms接收到监视器命令:停止停止目标CPU。。。目标暂停(PC=0x0000076C)接收到的监视命令:memU32 0x20010000=0xdeadbeef写入0xdeadbeef@address 0x20010000接收到的监视命令:memU32 0x20010004=0xdeadbeef写入0xdeadbeef@address 0x20010004接收到的监视命令:memU32 0x20010008=0xdeadbeef写入0xdeadbeef@address 0x20010008接收到的监视命令:memU32 0x2001000c=0xdead10cc写入0xdead10cc@地址0x2001000c下载4字节@地址0x100C0050-验证接收到的监视器命令失败:sleep 100 sleep 100ms接收到的监视器命令:reset 0通过SYSRESETREQ和VECTRESET位重置核心和外围设备。接收到监视器命令:睡眠1睡眠1ms接收到监视器命令:停止停止目标CPU。。。目标已停止(PC=0x200000CA)下载地址0x50000024处的2个字节-已验证正常接收到监视器命令:loadbin/tmp/cli\u programmer\u IDqXYy,0x00000000加载二进制文件[/tmp/cli\u programmer\u IDqXYy]。。。下载30484字节@地址0x00000000-成功加载已验证的OK二进制文件(下载30484字节)接收到监视器命令:复位0通过SYSRESETREQ和VECTRESET位复位核心和外围设备。收到监视器命令:启动目标CPU。。。接收到监视器命令:reset 0通过SYSRESETREQ和VECTRESET位重置核心和外围设备。收到监视器命令:停止停止目标CPU。。。目标已停止(PC=0x0000076C)在地址0x0000018下载1字节-已验证正常,正在执行单个步骤。。。目标已停止(向量捕获,PC=0x0000076E)正在启动目标CPU。。。
cli_programmer输出:
SDK_10.0.4.66.2 /二进制文件$ ./cli_programmer gdbserver的为0x0 ../projects/dk_apps/demos/pxp_reporter/DA1469x-00-Debug_QSPI/pxp_reporter.bin cli_programmer 1.26版权所有(C)2015至19年Dialog半导体的byabo国际娱乐ootloader文件没有指定,使用内部uartboot.bin上传引导装载程序/应用程序可执行文件...可执行上传。
然后,它永远挂
设备:
嗨,鲁比考塞尔,
能否请您按照下面的步骤,然后让我知道,如果你能固件下载到闪存QSPI?
谢谢,PM_DIALOG.
非常感谢您的快速回复!
我已经使用参数执行了第1步:
- 产品编号:DA1469x-00
- 闪光的conf:MX25U3235F
- active_fw_image_addr:0x2000
- update_fw_image_address: 0 x2000
当运行过程中出现erase_qspi_jtag我得到同样的恒永远的问题,因为之前(pxp_reporter项目被选定为你在#3建议)。
这是SmartSnippets输出
我还附上:./SDK_10.0.4.66.2/utilities/python_scripts/qspi/jlink.log
我只是指出,gdbserver的命令行SYS “-device的Cortex-M0” 不 “的Cortex-M33”。那是正常的吗?
嗨,鲁比考塞尔,
你可以请检查跳线的配置?我的照片会非常有帮助。该uartboot.bin是为了加载应用程序二进制图象的次级引导加载程序。当设备启动,各软件代码将检查OTP,并且如果它不与次级引导加载程序腥黑穗病,所述uartboot.bin将被装入这是默认的配置。我不能看到你收到了]什么错。你重置板?此外,你可以请尽量擦除/编程通过UART的QSPI闪存?
谢谢,PM_DIALOG.
你好!
这是我的dev-kit的照片:https://drive.google.com/file/d/1NVgKlmbTPuT9DU0yS34o1FosYikG_K5y/view
UART擦除/编程:
我无法弄清楚如何删除和/或节目uart(如您要求我尝试)。
我能找到的所有信息是:HTTPS://www.xmece.com/sites/default/files/an-b-069-da1469 ...
但这只解释了该协议。
我假设在SDK之后有SW-工具(希望有些人入门指南?)?
你可以点我到一些相关的文件?
JTAG擦除/程序:
你能帮我clearify过程(或指向相关的文档),哪些部分是应该做的是什么?
这是这个过程中我的斑片状的猜测,到目前为止:
0. Python脚本启动GDB-Server并使用CLI_Programmer工具执行下面的操作/ binary /cli_programmer”给出的命令,例如
1.通过直接编写到RAM(类似于RAM-Debug-Session),JTAG附加并上传UartBoot.bin
2. JTAG(再次,因为我认为RAM调试做它)执行的SW-复位
3.从RAM uartboot.bin执行和做什么?
4.Uartboot以某种方式(?)执行“
——“chip_erase_all”或
-"program_flash"(在这种情况下,实际图像是如何传输的?通过虚拟串口(/dev/ttyACM0)或其他方式?
还是uartboot.bin被bootrom读取并执行(而不是上面的步骤1-3)?如果是,uartboot.bin是否传输槽/dev/ttyACM0 ->调试器usb到uart转换器-> da1469x引导uart?在PC端,什么工具负责这种沟通?
而问题4遗迹,一旦uartboot.bin开始,如何擦除/闪存命令转移到uartboot.bin程序在目标上运行?
非常感谢任何帮助
此致
阿克塞尔
嗨,鲁比考塞尔,
让我检查你的问题,我会尽快回复你。
谢谢,PM_DIALOG.
谢谢你,非常感谢!
好吧,我已经解决了!
我发现关于CLI-Programmer的文档(SDK_10.0.4.66.2 / doc / html / cli_programmer.html)能够从那里省略。
简短版本:这似乎在闪光造成GDB当前程序崩溃。一旦我想出如何cli_programmer串行工人,做
然后,我能够让JTAG闪存Python脚本工作成功编程图像。
如果别人运行到这一点,那么系列芯片擦除是你的朋友:)
细节(以防其他人想知道):
在cli_programmer使用strace的检查我用gdb的通信,并经过最后的“继续”命令发出gdbserver的干脆停止respondingMy命令
GDBSERVER的输出(仅限最后两个命令)
strace cli_programmer的输出(#后的评论)
在jlink.log中,我们看到了无尽的
我猜:
gdbserver和从flash运行的程序之间存在某种时间竞争条件,导致调试器崩溃并挂起进程。擦除闪存消除了竞争(闪存中的胭脂程序和gdb之间)。
我的问题uartboot.bin解决索姆
一旦我进入一些CLI_Programmer示例,我也会管理我自己的问题。
UARBOOT.BIN由BOOT-ROM TROUGH启动串口(未在我第一次想到的情况下使用GDB上传)。
1.在cli_programmer的第一次执行它打开,并准备启动的seralport,然后要求用户按复位启动启动uartboot.bin的过程。
2.启动后,UARTBOOT.BIN留存(在调用和用于CLI_Programmer给出的命令的终端服务器之间)。
3.在CLI程序员的后续调用上,不需要启动/重置UartBoot.bin已在运行。
最终问题:
只是我不明白的最后一件事。
一个串口不JTAG模式在所有使用就我所看到的,所以为什么不会的cli_programmer需要JTAG版本上传uartboot.bin(我理解作品串行终端服务器)?
此致
阿克塞尔
嗨,鲁比考塞尔,
很高兴你认为你发出了发出并感谢您的详细迹象。
你能澄清你最后一个问题吗?正如我在我之前的注释中提到的那样,UartBoot.bin是一个辅助引导程序,以便加载应用程序二进制图像。
谢谢,PM_DIALOG.
你好
是的,在通过UART加载应用程序映像的情况下(cli_programmer /dev/ttyACM0…)然后uartboot通过UART接收应用程序并将其编程到QSPI-flash。到目前为止,我跟得上你。
但在其他情况下,在JTAG(CLI_Programmer Gdbserver ......)上加载应用程序,那么uartboot.bin的目的是什么?
难道还要负责也许闪烁?喜欢:
1. JTAG上传应用图像RAM
2. uartboot.bin copys从RAM到Flash(通过JTAG某种程度上触发)?
这些是低级细节,我认为不是很重要,如果你碰巧从头顶知道的话,我只是好奇:)
此致
阿克塞尔
嗨,鲁比考塞尔,
由于uartboot.bin是他中间的引导加载器与目标通信cli_programmer用途。该uartboot固件将自动检测设备的变体。该uartboot被一直使用作为二次引导程序,以便将二进制的图像加载到该设备。
谢谢,PM_DIALOG.